Built motion from commit 27a74182.|2.5.35
authorAndrea Amorese <andrea.amorese@xenialab.it>
Fri, 24 Sep 2021 13:16:58 +0000 (15:16 +0200)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Fri, 24 Sep 2021 13:16:58 +0000 (15:16 +0200)
1257 files changed:
apidoc/api_data.js
apidoc/api_data.json
apidoc/api_project.js
apidoc/api_project.json
package.json
public/app/forgot/i18n/de.json
public/app/login/i18n/de.json
public/app/main/apps/analytics/i18n/de.json
public/app/main/apps/chat/i18n/de.json
public/app/main/apps/contactmanager/i18n/de.json
public/app/main/apps/dashboards/i18n/de.json
public/app/main/apps/mail/i18n/de.json
public/app/main/apps/marketplace/i18n/ar.json
public/app/main/apps/marketplace/i18n/cs.json
public/app/main/apps/marketplace/i18n/da.json
public/app/main/apps/marketplace/i18n/de.json
public/app/main/apps/marketplace/i18n/en.json
public/app/main/apps/marketplace/i18n/es.json
public/app/main/apps/marketplace/i18n/et.json
public/app/main/apps/marketplace/i18n/fa.json
public/app/main/apps/marketplace/i18n/fi.json
public/app/main/apps/marketplace/i18n/fr.json
public/app/main/apps/marketplace/i18n/he.json
public/app/main/apps/marketplace/i18n/hi.json
public/app/main/apps/marketplace/i18n/id.json
public/app/main/apps/marketplace/i18n/it.json
public/app/main/apps/marketplace/i18n/ja.json
public/app/main/apps/marketplace/i18n/ko.json
public/app/main/apps/marketplace/i18n/lt.json
public/app/main/apps/marketplace/i18n/lv.json
public/app/main/apps/marketplace/i18n/nl.json
public/app/main/apps/marketplace/i18n/no.json
public/app/main/apps/marketplace/i18n/pl.json
public/app/main/apps/marketplace/i18n/pt-BR.json
public/app/main/apps/marketplace/i18n/pt-PT.json
public/app/main/apps/marketplace/i18n/ru.json
public/app/main/apps/marketplace/i18n/sv.json
public/app/main/apps/marketplace/i18n/tr.json
public/app/main/apps/marketplace/i18n/zh-CN.json
public/app/main/apps/marketplace/i18n/zh-TW.json
public/app/main/apps/openchannel/i18n/de.json
public/app/main/apps/staff/i18n/de.json
public/app/main/apps/tools/i18n/de.json
public/app/main/apps/tools/i18n/en.json
public/app/main/apps/tools/i18n/it.json
public/app/main/apps/voice/i18n/ar.json
public/app/main/apps/voice/i18n/cs.json
public/app/main/apps/voice/i18n/da.json
public/app/main/apps/voice/i18n/de.json
public/app/main/apps/voice/i18n/en.json
public/app/main/apps/voice/i18n/es.json
public/app/main/apps/voice/i18n/et.json
public/app/main/apps/voice/i18n/fa.json
public/app/main/apps/voice/i18n/fi.json
public/app/main/apps/voice/i18n/fr.json
public/app/main/apps/voice/i18n/he.json
public/app/main/apps/voice/i18n/hi.json
public/app/main/apps/voice/i18n/id.json
public/app/main/apps/voice/i18n/it.json
public/app/main/apps/voice/i18n/ja.json
public/app/main/apps/voice/i18n/ko.json
public/app/main/apps/voice/i18n/lt.json
public/app/main/apps/voice/i18n/lv.json
public/app/main/apps/voice/i18n/nl.json
public/app/main/apps/voice/i18n/no.json
public/app/main/apps/voice/i18n/pl.json
public/app/main/apps/voice/i18n/pt-BR.json
public/app/main/apps/voice/i18n/pt-PT.json
public/app/main/apps/voice/i18n/ru.json
public/app/main/apps/voice/i18n/sv.json
public/app/main/apps/voice/i18n/tr.json
public/app/main/apps/voice/i18n/zh-CN.json
public/app/main/apps/voice/i18n/zh-TW.json
public/app/main/apps/whatsapp/i18n/ar.json
public/app/main/apps/whatsapp/i18n/cs.json
public/app/main/apps/whatsapp/i18n/da.json
public/app/main/apps/whatsapp/i18n/de.json
public/app/main/apps/whatsapp/i18n/en.json
public/app/main/apps/whatsapp/i18n/es.json
public/app/main/apps/whatsapp/i18n/et.json
public/app/main/apps/whatsapp/i18n/fa.json
public/app/main/apps/whatsapp/i18n/fi.json
public/app/main/apps/whatsapp/i18n/fr.json
public/app/main/apps/whatsapp/i18n/he.json
public/app/main/apps/whatsapp/i18n/hi.json
public/app/main/apps/whatsapp/i18n/id.json
public/app/main/apps/whatsapp/i18n/ja.json
public/app/main/apps/whatsapp/i18n/ko.json
public/app/main/apps/whatsapp/i18n/lt.json
public/app/main/apps/whatsapp/i18n/lv.json
public/app/main/apps/whatsapp/i18n/nl.json
public/app/main/apps/whatsapp/i18n/no.json
public/app/main/apps/whatsapp/i18n/pl.json
public/app/main/apps/whatsapp/i18n/pt-BR.json
public/app/main/apps/whatsapp/i18n/pt-PT.json
public/app/main/apps/whatsapp/i18n/ru.json
public/app/main/apps/whatsapp/i18n/sv.json
public/app/main/apps/whatsapp/i18n/tr.json
public/app/main/apps/whatsapp/i18n/zh-CN.json
public/app/main/apps/whatsapp/i18n/zh-TW.json
public/app/quick-panel/i18n/de.json
public/app/reset/i18n/de.json
public/app/toolbar/i18n/de.json
public/index.html
public/scripts/app.b18c402c.js [moved from public/scripts/app.79e08137.js with 52% similarity]
public/styles/app.2d427cb4.css [new file with mode: 0644]
public/styles/app.91ca40ed.css [deleted file]
server/api/action/action.attributes.js
server/api/action/action.controller.js
server/api/action/action.model.js
server/api/action/action.rpc.js
server/api/action/index.js
server/api/analyticCustomReport/analyticCustomReport.attributes.js
server/api/analyticCustomReport/analyticCustomReport.controller.js
server/api/analyticCustomReport/analyticCustomReport.model.js
server/api/analyticCustomReport/analyticCustomReport.rpc.js
server/api/analyticCustomReport/index.js
server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
server/api/analyticDefaultReport/analyticDefaultReport.controller.js
server/api/analyticDefaultReport/analyticDefaultReport.model.js
server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
server/api/analyticDefaultReport/index.js
server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
server/api/analyticExtractedReport/analyticExtractedReport.controller.js
server/api/analyticExtractedReport/analyticExtractedReport.model.js
server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
server/api/analyticExtractedReport/index.js
server/api/analyticFieldReport/analyticFieldReport.attributes.js
server/api/analyticFieldReport/analyticFieldReport.controller.js
server/api/analyticFieldReport/analyticFieldReport.model.js
server/api/analyticFieldReport/analyticFieldReport.rpc.js
server/api/analyticFieldReport/index.js
server/api/analyticMetric/analyticMetric.attributes.js
server/api/analyticMetric/analyticMetric.controller.js
server/api/analyticMetric/analyticMetric.model.js
server/api/analyticMetric/analyticMetric.rpc.js
server/api/analyticMetric/index.js
server/api/analyticTreeReport/analyticTreeReport.attributes.js
server/api/analyticTreeReport/analyticTreeReport.controller.js
server/api/analyticTreeReport/analyticTreeReport.model.js
server/api/analyticTreeReport/analyticTreeReport.rpc.js
server/api/analyticTreeReport/index.js
server/api/attachment/attachment.attributes.js
server/api/attachment/attachment.controller.js
server/api/attachment/attachment.model.js
server/api/attachment/attachment.rpc.js
server/api/attachment/index.js
server/api/authGoogle/authGoogle.controller.js
server/api/authGoogle/index.js
server/api/authLocal/authLocal.controller.js
server/api/authLocal/index.js
server/api/automation/automation.attributes.js
server/api/automation/automation.controller.js
server/api/automation/automation.model.js
server/api/automation/automation.rpc.js
server/api/automation/index.js
server/api/campaign/campaign.attributes.js
server/api/campaign/campaign.controller.js
server/api/campaign/campaign.model.js
server/api/campaign/campaign.rpc.js
server/api/campaign/index.js
server/api/cannedAnswer/cannedAnswer.attributes.js
server/api/cannedAnswer/cannedAnswer.controller.js
server/api/cannedAnswer/cannedAnswer.model.js
server/api/cannedAnswer/cannedAnswer.rpc.js
server/api/cannedAnswer/index.js
server/api/cdr/cdr.attributes.js
server/api/cdr/cdr.controller.js
server/api/cdr/cdr.model.js
server/api/cdr/cdr.rpc.js
server/api/cdr/index.js
server/api/chatApplication/chatApplication.attributes.js
server/api/chatApplication/chatApplication.controller.js
server/api/chatApplication/chatApplication.model.js
server/api/chatApplication/chatApplication.rpc.js
server/api/chatApplication/index.js
server/api/chatGroup/chatGroup.attributes.js
server/api/chatGroup/chatGroup.controller.js
server/api/chatGroup/chatGroup.events.js
server/api/chatGroup/chatGroup.model.js
server/api/chatGroup/chatGroup.rpc.js
server/api/chatGroup/chatGroup.socket.js
server/api/chatGroup/index.js
server/api/chatInteraction/chatInteraction.attributes.js
server/api/chatInteraction/chatInteraction.controller.js
server/api/chatInteraction/chatInteraction.events.js
server/api/chatInteraction/chatInteraction.model.js
server/api/chatInteraction/chatInteraction.rpc.js
server/api/chatInteraction/chatInteraction.socket.js
server/api/chatInteraction/index.js
server/api/chatInternalMessage/chatInternalMessage.attributes.js
server/api/chatInternalMessage/chatInternalMessage.controller.js
server/api/chatInternalMessage/chatInternalMessage.events.js
server/api/chatInternalMessage/chatInternalMessage.model.js
server/api/chatInternalMessage/chatInternalMessage.rpc.js
server/api/chatInternalMessage/chatInternalMessage.socket.js
server/api/chatInternalMessage/index.js
server/api/chatMessage/chatMessage.attributes.js
server/api/chatMessage/chatMessage.controller.js
server/api/chatMessage/chatMessage.events.js
server/api/chatMessage/chatMessage.model.js
server/api/chatMessage/chatMessage.rpc.js
server/api/chatMessage/chatMessage.socket.js
server/api/chatMessage/index.js
server/api/chatOfflineMessage/chatOfflineMessage.attributes.js
server/api/chatOfflineMessage/chatOfflineMessage.controller.js
server/api/chatOfflineMessage/chatOfflineMessage.model.js
server/api/chatOfflineMessage/chatOfflineMessage.rpc.js
server/api/chatOfflineMessage/index.js
server/api/chatProactiveAction/chatProactiveAction.attributes.js
server/api/chatProactiveAction/chatProactiveAction.controller.js
server/api/chatProactiveAction/chatProactiveAction.model.js
server/api/chatProactiveAction/chatProactiveAction.rpc.js
server/api/chatProactiveAction/index.js
server/api/chatQueue/chatQueue.attributes.js
server/api/chatQueue/chatQueue.controller.js
server/api/chatQueue/chatQueue.events.js
server/api/chatQueue/chatQueue.model.js
server/api/chatQueue/chatQueue.rpc.js
server/api/chatQueue/chatQueue.socket.js
server/api/chatQueue/index.js
server/api/chatQueueReport/chatQueueReport.attributes.js
server/api/chatQueueReport/chatQueueReport.controller.js
server/api/chatQueueReport/chatQueueReport.model.js
server/api/chatQueueReport/chatQueueReport.rpc.js
server/api/chatQueueReport/index.js
server/api/chatTransferReport/chatTransferReport.attributes.js
server/api/chatTransferReport/chatTransferReport.controller.js
server/api/chatTransferReport/chatTransferReport.model.js
server/api/chatTransferReport/chatTransferReport.rpc.js
server/api/chatTransferReport/index.js
server/api/chatWebsite/chatWebsite.attributes.js
server/api/chatWebsite/chatWebsite.controller.js
server/api/chatWebsite/chatWebsite.events.js
server/api/chatWebsite/chatWebsite.model.js
server/api/chatWebsite/chatWebsite.rpc.js
server/api/chatWebsite/chatWebsite.socket.js
server/api/chatWebsite/index.js
server/api/cloudProvider/cloudProvider.attributes.js
server/api/cloudProvider/cloudProvider.controller.js
server/api/cloudProvider/cloudProvider.model.js
server/api/cloudProvider/cloudProvider.rpc.js
server/api/cloudProvider/index.js
server/api/cmCompany/cmCompany.attributes.js
server/api/cmCompany/cmCompany.controller.js
server/api/cmCompany/cmCompany.model.js
server/api/cmCompany/cmCompany.rpc.js
server/api/cmCompany/index.js
server/api/cmContact/cmContact.attributes.js
server/api/cmContact/cmContact.controller.js
server/api/cmContact/cmContact.events.js
server/api/cmContact/cmContact.model.js
server/api/cmContact/cmContact.rpc.js
server/api/cmContact/cmContact.socket.js
server/api/cmContact/index.js
server/api/cmCustomField/cmCustomField.attributes.js
server/api/cmCustomField/cmCustomField.controller.js
server/api/cmCustomField/cmCustomField.model.js
server/api/cmCustomField/cmCustomField.rpc.js
server/api/cmCustomField/index.js
server/api/cmHopper/cmHopper.attributes.js
server/api/cmHopper/cmHopper.controller.js
server/api/cmHopper/cmHopper.model.js
server/api/cmHopper/cmHopper.rpc.js
server/api/cmHopper/index.js
server/api/cmHopperBlack/cmHopperBlack.attributes.js
server/api/cmHopperBlack/cmHopperBlack.controller.js
server/api/cmHopperBlack/cmHopperBlack.model.js
server/api/cmHopperBlack/cmHopperBlack.rpc.js
server/api/cmHopperBlack/index.js
server/api/cmHopperFinal/cmHopperFinal.attributes.js
server/api/cmHopperFinal/cmHopperFinal.controller.js
server/api/cmHopperFinal/cmHopperFinal.model.js
server/api/cmHopperFinal/cmHopperFinal.rpc.js
server/api/cmHopperFinal/index.js
server/api/cmHopperHistory/cmHopperHistory.attributes.js
server/api/cmHopperHistory/cmHopperHistory.controller.js
server/api/cmHopperHistory/cmHopperHistory.model.js
server/api/cmHopperHistory/cmHopperHistory.rpc.js
server/api/cmHopperHistory/index.js
server/api/cmList/cmList.attributes.js
server/api/cmList/cmList.controller.js
server/api/cmList/cmList.events.js
server/api/cmList/cmList.model.js
server/api/cmList/cmList.rpc.js
server/api/cmList/cmList.socket.js
server/api/cmList/index.js
server/api/condition/condition.attributes.js
server/api/condition/condition.controller.js
server/api/condition/condition.model.js
server/api/condition/condition.rpc.js
server/api/condition/index.js
server/api/dashboard/dashboard.attributes.js
server/api/dashboard/dashboard.controller.js
server/api/dashboard/dashboard.events.js
server/api/dashboard/dashboard.model.js
server/api/dashboard/dashboard.rpc.js
server/api/dashboard/dashboard.socket.js
server/api/dashboard/index.js
server/api/dashboardItem/dashboardItem.attributes.js
server/api/dashboardItem/dashboardItem.controller.js
server/api/dashboardItem/dashboardItem.events.js
server/api/dashboardItem/dashboardItem.model.js
server/api/dashboardItem/dashboardItem.rpc.js
server/api/dashboardItem/dashboardItem.socket.js
server/api/dashboardItem/index.js
server/api/disposition/disposition.attributes.js
server/api/disposition/disposition.controller.js
server/api/disposition/disposition.model.js
server/api/disposition/disposition.rpc.js
server/api/disposition/index.js
server/api/faxAccount/faxAccount.attributes.js
server/api/faxAccount/faxAccount.controller.js
server/api/faxAccount/faxAccount.events.js
server/api/faxAccount/faxAccount.model.js
server/api/faxAccount/faxAccount.rpc.js
server/api/faxAccount/faxAccount.socket.js
server/api/faxAccount/index.js
server/api/faxApplication/faxApplication.attributes.js
server/api/faxApplication/faxApplication.controller.js
server/api/faxApplication/faxApplication.model.js
server/api/faxApplication/faxApplication.rpc.js
server/api/faxApplication/index.js
server/api/faxInteraction/faxInteraction.attributes.js
server/api/faxInteraction/faxInteraction.controller.js
server/api/faxInteraction/faxInteraction.events.js
server/api/faxInteraction/faxInteraction.model.js
server/api/faxInteraction/faxInteraction.rpc.js
server/api/faxInteraction/faxInteraction.socket.js
server/api/faxInteraction/index.js
server/api/faxMessage/faxMessage.attributes.js
server/api/faxMessage/faxMessage.controller.js
server/api/faxMessage/faxMessage.events.js
server/api/faxMessage/faxMessage.model.js
server/api/faxMessage/faxMessage.rpc.js
server/api/faxMessage/faxMessage.socket.js
server/api/faxMessage/index.js
server/api/faxQueue/faxQueue.attributes.js
server/api/faxQueue/faxQueue.controller.js
server/api/faxQueue/faxQueue.events.js
server/api/faxQueue/faxQueue.model.js
server/api/faxQueue/faxQueue.rpc.js
server/api/faxQueue/faxQueue.socket.js
server/api/faxQueue/index.js
server/api/faxQueueReport/faxQueueReport.attributes.js
server/api/faxQueueReport/faxQueueReport.controller.js
server/api/faxQueueReport/faxQueueReport.model.js
server/api/faxQueueReport/faxQueueReport.rpc.js
server/api/faxQueueReport/index.js
server/api/faxTransferReport/faxTransferReport.attributes.js
server/api/faxTransferReport/faxTransferReport.controller.js
server/api/faxTransferReport/faxTransferReport.model.js
server/api/faxTransferReport/faxTransferReport.rpc.js
server/api/faxTransferReport/index.js
server/api/intDeskAccount/index.js
server/api/intDeskAccount/intDeskAccount.attributes.js
server/api/intDeskAccount/intDeskAccount.controller.js
server/api/intDeskAccount/intDeskAccount.model.js
server/api/intDeskAccount/intDeskAccount.rpc.js
server/api/intDeskConfiguration/index.js
server/api/intDeskConfiguration/intDeskConfiguration.attributes.js
server/api/intDeskConfiguration/intDeskConfiguration.controller.js
server/api/intDeskConfiguration/intDeskConfiguration.model.js
server/api/intDeskConfiguration/intDeskConfiguration.rpc.js
server/api/intDeskField/index.js
server/api/intDeskField/intDeskField.attributes.js
server/api/intDeskField/intDeskField.controller.js
server/api/intDeskField/intDeskField.model.js
server/api/intDeskField/intDeskField.rpc.js
server/api/intDynamics365Account/index.js
server/api/intDynamics365Account/intDynamics365Account.attributes.js
server/api/intDynamics365Account/intDynamics365Account.controller.js
server/api/intDynamics365Account/intDynamics365Account.model.js
server/api/intDynamics365Account/intDynamics365Account.rpc.js
server/api/intDynamics365Configuration/index.js
server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js
server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js
server/api/intDynamics365Configuration/intDynamics365Configuration.model.js
server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js
server/api/intDynamics365Field/index.js
server/api/intDynamics365Field/intDynamics365Field.attributes.js
server/api/intDynamics365Field/intDynamics365Field.controller.js
server/api/intDynamics365Field/intDynamics365Field.model.js
server/api/intDynamics365Field/intDynamics365Field.rpc.js
server/api/intFreshdeskAccount/index.js
server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js
server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js
server/api/intFreshdeskAccount/intFreshdeskAccount.model.js
server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js
server/api/intFreshdeskConfiguration/index.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js
server/api/intFreshdeskField/index.js
server/api/intFreshdeskField/intFreshdeskField.attributes.js
server/api/intFreshdeskField/intFreshdeskField.controller.js
server/api/intFreshdeskField/intFreshdeskField.model.js
server/api/intFreshdeskField/intFreshdeskField.rpc.js
server/api/intFreshsalesAccount/index.js
server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js
server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js
server/api/intFreshsalesAccount/intFreshsalesAccount.model.js
server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js
server/api/intFreshsalesConfiguration/index.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js
server/api/intFreshsalesField/index.js
server/api/intFreshsalesField/intFreshsalesField.attributes.js
server/api/intFreshsalesField/intFreshsalesField.controller.js
server/api/intFreshsalesField/intFreshsalesField.model.js
server/api/intFreshsalesField/intFreshsalesField.rpc.js
server/api/intSalesforceAccount/index.js
server/api/intSalesforceAccount/intSalesforceAccount.attributes.js
server/api/intSalesforceAccount/intSalesforceAccount.controller.js
server/api/intSalesforceAccount/intSalesforceAccount.model.js
server/api/intSalesforceAccount/intSalesforceAccount.rpc.js
server/api/intSalesforceConfiguration/index.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js
server/api/intSalesforceField/index.js
server/api/intSalesforceField/intSalesforceField.attributes.js
server/api/intSalesforceField/intSalesforceField.controller.js
server/api/intSalesforceField/intSalesforceField.model.js
server/api/intSalesforceField/intSalesforceField.rpc.js
server/api/intServicenowAccount/index.js
server/api/intServicenowAccount/intServicenowAccount.attributes.js
server/api/intServicenowAccount/intServicenowAccount.controller.js
server/api/intServicenowAccount/intServicenowAccount.model.js
server/api/intServicenowAccount/intServicenowAccount.rpc.js
server/api/intServicenowConfiguration/index.js
server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js
server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js
server/api/intServicenowConfiguration/intServicenowConfiguration.model.js
server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js
server/api/intServicenowField/index.js
server/api/intServicenowField/intServicenowField.attributes.js
server/api/intServicenowField/intServicenowField.controller.js
server/api/intServicenowField/intServicenowField.model.js
server/api/intServicenowField/intServicenowField.rpc.js
server/api/intSugarcrmAccount/index.js
server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js
server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js
server/api/intSugarcrmAccount/intSugarcrmAccount.model.js
server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js
server/api/intSugarcrmConfiguration/index.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js
server/api/intSugarcrmField/index.js
server/api/intSugarcrmField/intSugarcrmField.attributes.js
server/api/intSugarcrmField/intSugarcrmField.controller.js
server/api/intSugarcrmField/intSugarcrmField.model.js
server/api/intSugarcrmField/intSugarcrmField.rpc.js
server/api/intVtigerAccount/index.js
server/api/intVtigerAccount/intVtigerAccount.attributes.js
server/api/intVtigerAccount/intVtigerAccount.controller.js
server/api/intVtigerAccount/intVtigerAccount.model.js
server/api/intVtigerAccount/intVtigerAccount.rpc.js
server/api/intVtigerConfiguration/index.js
server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js
server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js
server/api/intVtigerConfiguration/intVtigerConfiguration.model.js
server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js
server/api/intVtigerField/index.js
server/api/intVtigerField/intVtigerField.attributes.js
server/api/intVtigerField/intVtigerField.controller.js
server/api/intVtigerField/intVtigerField.model.js
server/api/intVtigerField/intVtigerField.rpc.js
server/api/intZendeskAccount/index.js
server/api/intZendeskAccount/intZendeskAccount.attributes.js
server/api/intZendeskAccount/intZendeskAccount.controller.js
server/api/intZendeskAccount/intZendeskAccount.model.js
server/api/intZendeskAccount/intZendeskAccount.rpc.js
server/api/intZendeskConfiguration/index.js
server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js
server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js
server/api/intZendeskConfiguration/intZendeskConfiguration.model.js
server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js
server/api/intZendeskField/index.js
server/api/intZendeskField/intZendeskField.attributes.js
server/api/intZendeskField/intZendeskField.controller.js
server/api/intZendeskField/intZendeskField.model.js
server/api/intZendeskField/intZendeskField.rpc.js
server/api/intZohoAccount/index.js
server/api/intZohoAccount/intZohoAccount.attributes.js
server/api/intZohoAccount/intZohoAccount.controller.js
server/api/intZohoAccount/intZohoAccount.model.js
server/api/intZohoAccount/intZohoAccount.rpc.js
server/api/intZohoConfiguration/index.js
server/api/intZohoConfiguration/intZohoConfiguration.attributes.js
server/api/intZohoConfiguration/intZohoConfiguration.controller.js
server/api/intZohoConfiguration/intZohoConfiguration.model.js
server/api/intZohoConfiguration/intZohoConfiguration.rpc.js
server/api/intZohoField/index.js
server/api/intZohoField/intZohoField.attributes.js
server/api/intZohoField/intZohoField.controller.js
server/api/intZohoField/intZohoField.model.js
server/api/intZohoField/intZohoField.rpc.js
server/api/integration/index.js
server/api/integration/integration.attributes.js
server/api/integration/integration.controller.js
server/api/integration/integration.model.js
server/api/integration/integration.rpc.js
server/api/integrationReport/index.js
server/api/integrationReport/integrationReport.attributes.js
server/api/integrationReport/integrationReport.controller.js
server/api/integrationReport/integrationReport.model.js
server/api/integrationReport/integrationReport.rpc.js
server/api/interval/index.js
server/api/interval/interval.attributes.js
server/api/interval/interval.controller.js
server/api/interval/interval.model.js
server/api/interval/interval.rpc.js
server/api/jira/index.js
server/api/jira/jira.controller.js
server/api/jscriptyAnswerReport/index.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js
server/api/jscriptyProject/index.js
server/api/jscriptyProject/jscriptyProject.attributes.js
server/api/jscriptyProject/jscriptyProject.controller.js
server/api/jscriptyProject/jscriptyProject.model.js
server/api/jscriptyProject/jscriptyProject.rpc.js
server/api/jscriptyQuestionReport/index.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js
server/api/jscriptySessionReport/index.js
server/api/jscriptySessionReport/jscriptySessionReport.attributes.js
server/api/jscriptySessionReport/jscriptySessionReport.controller.js
server/api/jscriptySessionReport/jscriptySessionReport.model.js
server/api/jscriptySessionReport/jscriptySessionReport.rpc.js
server/api/license/index.js
server/api/license/license.attributes.js
server/api/license/license.controller.js
server/api/license/license.model.js
server/api/license/license.rpc.js
server/api/mailAccount/index.js
server/api/mailAccount/mailAccount.attributes.js
server/api/mailAccount/mailAccount.controller.js
server/api/mailAccount/mailAccount.events.js
server/api/mailAccount/mailAccount.model.js
server/api/mailAccount/mailAccount.rpc.js
server/api/mailAccount/mailAccount.socket.js
server/api/mailApplication/index.js
server/api/mailApplication/mailApplication.attributes.js
server/api/mailApplication/mailApplication.controller.js
server/api/mailApplication/mailApplication.model.js
server/api/mailApplication/mailApplication.rpc.js
server/api/mailInteraction/index.js
server/api/mailInteraction/mailInteraction.attributes.js
server/api/mailInteraction/mailInteraction.controller.js
server/api/mailInteraction/mailInteraction.events.js
server/api/mailInteraction/mailInteraction.model.js
server/api/mailInteraction/mailInteraction.rpc.js
server/api/mailInteraction/mailInteraction.socket.js
server/api/mailMessage/index.js
server/api/mailMessage/mailMessage.attributes.js
server/api/mailMessage/mailMessage.controller.js
server/api/mailMessage/mailMessage.events.js
server/api/mailMessage/mailMessage.model.js
server/api/mailMessage/mailMessage.rpc.js
server/api/mailMessage/mailMessage.socket.js
server/api/mailQueue/index.js
server/api/mailQueue/mailQueue.attributes.js
server/api/mailQueue/mailQueue.controller.js
server/api/mailQueue/mailQueue.events.js
server/api/mailQueue/mailQueue.model.js
server/api/mailQueue/mailQueue.rpc.js
server/api/mailQueue/mailQueue.socket.js
server/api/mailQueueReport/index.js
server/api/mailQueueReport/mailQueueReport.attributes.js
server/api/mailQueueReport/mailQueueReport.controller.js
server/api/mailQueueReport/mailQueueReport.model.js
server/api/mailQueueReport/mailQueueReport.rpc.js
server/api/mailServerIn/index.js
server/api/mailServerIn/mailServerIn.attributes.js
server/api/mailServerIn/mailServerIn.model.js
server/api/mailServerIn/mailServerIn.rpc.js
server/api/mailServerOut/index.js
server/api/mailServerOut/mailServerOut.attributes.js
server/api/mailServerOut/mailServerOut.controller.js
server/api/mailServerOut/mailServerOut.model.js
server/api/mailServerOut/mailServerOut.rpc.js
server/api/mailSubstatus/index.js
server/api/mailSubstatus/mailSubstatus.attributes.js
server/api/mailSubstatus/mailSubstatus.controller.js
server/api/mailSubstatus/mailSubstatus.model.js
server/api/mailSubstatus/mailSubstatus.rpc.js
server/api/mailTransferReport/index.js
server/api/mailTransferReport/mailTransferReport.attributes.js
server/api/mailTransferReport/mailTransferReport.controller.js
server/api/mailTransferReport/mailTransferReport.model.js
server/api/mailTransferReport/mailTransferReport.rpc.js
server/api/memberReport/index.js
server/api/memberReport/memberReport.attributes.js
server/api/memberReport/memberReport.controller.js
server/api/memberReport/memberReport.model.js
server/api/memberReport/memberReport.rpc.js
server/api/migration/index.js
server/api/migration/migration.attributes.js
server/api/migration/migration.controller.js
server/api/migration/migration.model.js
server/api/migration/migration.rpc.js
server/api/network/index.js
server/api/network/network.attributes.js
server/api/network/network.controller.js
server/api/network/network.model.js
server/api/network/network.rpc.js
server/api/openchannelAccount/index.js
server/api/openchannelAccount/openchannelAccount.attributes.js
server/api/openchannelAccount/openchannelAccount.controller.js
server/api/openchannelAccount/openchannelAccount.events.js
server/api/openchannelAccount/openchannelAccount.model.js
server/api/openchannelAccount/openchannelAccount.rpc.js
server/api/openchannelAccount/openchannelAccount.socket.js
server/api/openchannelApplication/index.js
server/api/openchannelApplication/openchannelApplication.attributes.js
server/api/openchannelApplication/openchannelApplication.controller.js
server/api/openchannelApplication/openchannelApplication.model.js
server/api/openchannelApplication/openchannelApplication.rpc.js
server/api/openchannelInteraction/index.js
server/api/openchannelInteraction/openchannelInteraction.attributes.js
server/api/openchannelInteraction/openchannelInteraction.controller.js
server/api/openchannelInteraction/openchannelInteraction.events.js
server/api/openchannelInteraction/openchannelInteraction.model.js
server/api/openchannelInteraction/openchannelInteraction.rpc.js
server/api/openchannelInteraction/openchannelInteraction.socket.js
server/api/openchannelMessage/index.js
server/api/openchannelMessage/openchannelMessage.attributes.js
server/api/openchannelMessage/openchannelMessage.controller.js
server/api/openchannelMessage/openchannelMessage.events.js
server/api/openchannelMessage/openchannelMessage.model.js
server/api/openchannelMessage/openchannelMessage.rpc.js
server/api/openchannelMessage/openchannelMessage.socket.js
server/api/openchannelQueue/index.js
server/api/openchannelQueue/openchannelQueue.attributes.js
server/api/openchannelQueue/openchannelQueue.controller.js
server/api/openchannelQueue/openchannelQueue.events.js
server/api/openchannelQueue/openchannelQueue.model.js
server/api/openchannelQueue/openchannelQueue.rpc.js
server/api/openchannelQueue/openchannelQueue.socket.js
server/api/openchannelQueueReport/index.js
server/api/openchannelQueueReport/openchannelQueueReport.attributes.js
server/api/openchannelQueueReport/openchannelQueueReport.controller.js
server/api/openchannelQueueReport/openchannelQueueReport.model.js
server/api/openchannelQueueReport/openchannelQueueReport.rpc.js
server/api/openchannelTransferReport/index.js
server/api/openchannelTransferReport/openchannelTransferReport.attributes.js
server/api/openchannelTransferReport/openchannelTransferReport.controller.js
server/api/openchannelTransferReport/openchannelTransferReport.model.js
server/api/openchannelTransferReport/openchannelTransferReport.rpc.js
server/api/pause/index.js
server/api/pause/pause.attributes.js
server/api/pause/pause.controller.js
server/api/pause/pause.model.js
server/api/pause/pause.rpc.js
server/api/plugin/index.js
server/api/plugin/plugin.attributes.js
server/api/plugin/plugin.controller.js
server/api/plugin/plugin.events.js
server/api/plugin/plugin.model.js
server/api/plugin/plugin.rpc.js
server/api/plugin/plugin.socket.js
server/api/pm2/index.js
server/api/pm2/pm2.controller.js
server/api/realtime/index.js
server/api/realtime/realtime.controller.js
server/api/reportAgentPreview/index.js
server/api/reportAgentPreview/reportAgentPreview.attributes.js
server/api/reportAgentPreview/reportAgentPreview.model.js
server/api/reportAgentPreview/reportAgentPreview.rpc.js
server/api/rpc/index.js
server/api/rpc/rpc.controller.js
server/api/schedule/index.js
server/api/schedule/schedule.attributes.js
server/api/schedule/schedule.controller.js
server/api/schedule/schedule.model.js
server/api/schedule/schedule.rpc.js
server/api/screenRecording/index.js
server/api/screenRecording/screenRecording.attributes.js
server/api/screenRecording/screenRecording.controller.js
server/api/screenRecording/screenRecording.model.js
server/api/screenRecording/screenRecording.rpc.js
server/api/setting/index.js
server/api/setting/setting.attributes.js
server/api/setting/setting.controller.js
server/api/setting/setting.model.js
server/api/setting/setting.rpc.js
server/api/smsAccount/index.js
server/api/smsAccount/smsAccount.attributes.js
server/api/smsAccount/smsAccount.controller.js
server/api/smsAccount/smsAccount.events.js
server/api/smsAccount/smsAccount.model.js
server/api/smsAccount/smsAccount.rpc.js
server/api/smsAccount/smsAccount.socket.js
server/api/smsApplication/index.js
server/api/smsApplication/smsApplication.attributes.js
server/api/smsApplication/smsApplication.controller.js
server/api/smsApplication/smsApplication.model.js
server/api/smsApplication/smsApplication.rpc.js
server/api/smsInteraction/index.js
server/api/smsInteraction/smsInteraction.attributes.js
server/api/smsInteraction/smsInteraction.controller.js
server/api/smsInteraction/smsInteraction.events.js
server/api/smsInteraction/smsInteraction.model.js
server/api/smsInteraction/smsInteraction.rpc.js
server/api/smsInteraction/smsInteraction.socket.js
server/api/smsMessage/index.js
server/api/smsMessage/smsMessage.attributes.js
server/api/smsMessage/smsMessage.controller.js
server/api/smsMessage/smsMessage.events.js
server/api/smsMessage/smsMessage.model.js
server/api/smsMessage/smsMessage.rpc.js
server/api/smsMessage/smsMessage.socket.js
server/api/smsQueue/index.js
server/api/smsQueue/smsQueue.attributes.js
server/api/smsQueue/smsQueue.controller.js
server/api/smsQueue/smsQueue.events.js
server/api/smsQueue/smsQueue.model.js
server/api/smsQueue/smsQueue.rpc.js
server/api/smsQueue/smsQueue.socket.js
server/api/smsQueueReport/index.js
server/api/smsQueueReport/smsQueueReport.attributes.js
server/api/smsQueueReport/smsQueueReport.controller.js
server/api/smsQueueReport/smsQueueReport.model.js
server/api/smsQueueReport/smsQueueReport.rpc.js
server/api/smsTransferReport/index.js
server/api/smsTransferReport/smsTransferReport.attributes.js
server/api/smsTransferReport/smsTransferReport.controller.js
server/api/smsTransferReport/smsTransferReport.model.js
server/api/smsTransferReport/smsTransferReport.rpc.js
server/api/sound/index.js
server/api/sound/sound.attributes.js
server/api/sound/sound.controller.js
server/api/sound/sound.model.js
server/api/sound/sound.rpc.js
server/api/squareMessage/index.js
server/api/squareMessage/squareMessage.attributes.js
server/api/squareMessage/squareMessage.controller.js
server/api/squareMessage/squareMessage.model.js
server/api/squareMessage/squareMessage.rpc.js
server/api/squareOdbc/index.js
server/api/squareOdbc/squareOdbc.attributes.js
server/api/squareOdbc/squareOdbc.controller.js
server/api/squareOdbc/squareOdbc.model.js
server/api/squareOdbc/squareOdbc.rpc.js
server/api/squareProject/index.js
server/api/squareProject/squareProject.attributes.js
server/api/squareProject/squareProject.controller.js
server/api/squareProject/squareProject.events.js
server/api/squareProject/squareProject.model.js
server/api/squareProject/squareProject.rpc.js
server/api/squareProject/squareProject.socket.js
server/api/squareRecording/index.js
server/api/squareRecording/squareRecording.attributes.js
server/api/squareRecording/squareRecording.controller.js
server/api/squareRecording/squareRecording.model.js
server/api/squareRecording/squareRecording.rpc.js
server/api/squareReport/index.js
server/api/squareReport/squareReport.attributes.js
server/api/squareReport/squareReport.controller.js
server/api/squareReport/squareReport.model.js
server/api/squareReport/squareReport.rpc.js
server/api/squareReportDetail/index.js
server/api/squareReportDetail/squareReportDetail.attributes.js
server/api/squareReportDetail/squareReportDetail.controller.js
server/api/squareReportDetail/squareReportDetail.model.js
server/api/squareReportDetail/squareReportDetail.rpc.js
server/api/system/index.js
server/api/system/system.controller.js
server/api/tag/index.js
server/api/tag/tag.attributes.js
server/api/tag/tag.controller.js
server/api/tag/tag.model.js
server/api/tag/tag.rpc.js
server/api/team/index.js
server/api/team/team.attributes.js
server/api/team/team.controller.js
server/api/team/team.events.js
server/api/team/team.model.js
server/api/team/team.rpc.js
server/api/team/team.socket.js
server/api/teamVoicePrefix/teamVoicePrefix.attributes.js [copied from server/api/realtime/realtime.model.js with 60% similarity]
server/api/teamVoicePrefix/teamVoicePrefix.model.js [copied from server/api/realtime/realtime.model.js with 55% similarity]
server/api/teamVoiceQueue/index.js
server/api/teamVoiceQueue/teamVoiceQueue.attributes.js
server/api/teamVoiceQueue/teamVoiceQueue.model.js
server/api/teamVoiceQueue/teamVoiceQueue.rpc.js
server/api/template/index.js
server/api/template/template.attributes.js
server/api/template/template.controller.js
server/api/template/template.model.js
server/api/template/template.rpc.js
server/api/trigger/index.js
server/api/trigger/trigger.attributes.js
server/api/trigger/trigger.controller.js
server/api/trigger/trigger.model.js
server/api/trigger/trigger.rpc.js
server/api/trunk/index.js
server/api/trunk/trunk.attributes.js
server/api/trunk/trunk.controller.js
server/api/trunk/trunk.model.js
server/api/trunk/trunk.rpc.js
server/api/user/index.js
server/api/user/user.attributes.js
server/api/user/user.controller.js
server/api/user/user.events.js
server/api/user/user.model.js
server/api/user/user.rpc.js
server/api/user/user.socket.js
server/api/userChatQueue/index.js
server/api/userChatQueue/userChatQueue.attributes.js
server/api/userChatQueue/userChatQueue.model.js
server/api/userChatQueue/userChatQueue.rpc.js
server/api/userFaxQueue/index.js
server/api/userFaxQueue/userFaxQueue.attributes.js
server/api/userFaxQueue/userFaxQueue.model.js
server/api/userFaxQueue/userFaxQueue.rpc.js
server/api/userMailQueue/index.js
server/api/userMailQueue/userMailQueue.attributes.js
server/api/userMailQueue/userMailQueue.model.js
server/api/userMailQueue/userMailQueue.rpc.js
server/api/userNotification/index.js
server/api/userNotification/userNotification.attributes.js
server/api/userNotification/userNotification.controller.js
server/api/userNotification/userNotification.events.js
server/api/userNotification/userNotification.model.js
server/api/userNotification/userNotification.rpc.js
server/api/userNotification/userNotification.socket.js
server/api/userOpenchannelQueue/index.js
server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js
server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js
server/api/userProfile/index.js
server/api/userProfile/userProfile.attributes.js
server/api/userProfile/userProfile.controller.js
server/api/userProfile/userProfile.events.js
server/api/userProfile/userProfile.model.js
server/api/userProfile/userProfile.rpc.js
server/api/userProfile/userProfile.socket.js
server/api/userProfileResource/index.js
server/api/userProfileResource/userProfileResource.attributes.js
server/api/userProfileResource/userProfileResource.controller.js
server/api/userProfileResource/userProfileResource.model.js
server/api/userProfileResource/userProfileResource.rpc.js
server/api/userProfileSection/index.js
server/api/userProfileSection/userProfileSection.attributes.js
server/api/userProfileSection/userProfileSection.controller.js
server/api/userProfileSection/userProfileSection.model.js
server/api/userProfileSection/userProfileSection.rpc.js
server/api/userSmsQueue/index.js
server/api/userSmsQueue/userSmsQueue.attributes.js
server/api/userSmsQueue/userSmsQueue.model.js
server/api/userSmsQueue/userSmsQueue.rpc.js
server/api/userVoicePrefix/userVoicePrefix.attributes.js [copied from server/api/realtime/realtime.model.js with 60% similarity]
server/api/userVoicePrefix/userVoicePrefix.model.js [moved from server/api/realtime/realtime.model.js with 55% similarity]
server/api/userVoiceQueue/index.js
server/api/userVoiceQueue/userVoiceQueue.attributes.js
server/api/userVoiceQueue/userVoiceQueue.model.js
server/api/userVoiceQueue/userVoiceQueue.rpc.js
server/api/userVoiceQueueRt/index.js
server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
server/api/userWhatsappQueue/index.js
server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
server/api/userWhatsappQueue/userWhatsappQueue.model.js
server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
server/api/variable/index.js
server/api/variable/variable.attributes.js
server/api/variable/variable.controller.js
server/api/variable/variable.model.js
server/api/variable/variable.rpc.js
server/api/version/index.js
server/api/version/version.controller.js
server/api/voiceAgentReport/index.js
server/api/voiceAgentReport/voiceAgentReport.attributes.js
server/api/voiceAgentReport/voiceAgentReport.controller.js
server/api/voiceAgentReport/voiceAgentReport.model.js
server/api/voiceAgentReport/voiceAgentReport.rpc.js
server/api/voiceCallReport/index.js
server/api/voiceCallReport/voiceCallReport.attributes.js
server/api/voiceCallReport/voiceCallReport.controller.js
server/api/voiceCallReport/voiceCallReport.model.js
server/api/voiceCallReport/voiceCallReport.rpc.js
server/api/voiceChanSpy/index.js
server/api/voiceChanSpy/voiceChanSpy.attributes.js
server/api/voiceChanSpy/voiceChanSpy.controller.js
server/api/voiceChanSpy/voiceChanSpy.model.js
server/api/voiceChanSpy/voiceChanSpy.rpc.js
server/api/voiceContext/index.js
server/api/voiceContext/voiceContext.attributes.js
server/api/voiceContext/voiceContext.controller.js
server/api/voiceContext/voiceContext.model.js
server/api/voiceContext/voiceContext.rpc.js
server/api/voiceDialReport/index.js
server/api/voiceDialReport/voiceDialReport.attributes.js
server/api/voiceDialReport/voiceDialReport.controller.js
server/api/voiceDialReport/voiceDialReport.model.js
server/api/voiceDialReport/voiceDialReport.rpc.js
server/api/voiceExtension/index.js
server/api/voiceExtension/voiceExtension.attributes.js
server/api/voiceExtension/voiceExtension.controller.js
server/api/voiceExtension/voiceExtension.events.js
server/api/voiceExtension/voiceExtension.model.js
server/api/voiceExtension/voiceExtension.rpc.js
server/api/voiceExtension/voiceExtension.socket.js
server/api/voiceMail/index.js
server/api/voiceMail/voiceMail.attributes.js
server/api/voiceMail/voiceMail.controller.js
server/api/voiceMail/voiceMail.model.js
server/api/voiceMail/voiceMail.rpc.js
server/api/voiceMailMessage/index.js
server/api/voiceMailMessage/voiceMailMessage.attributes.js
server/api/voiceMailMessage/voiceMailMessage.controller.js
server/api/voiceMailMessage/voiceMailMessage.model.js
server/api/voiceMailMessage/voiceMailMessage.rpc.js
server/api/voiceMusicOnHold/index.js
server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
server/api/voicePrefix/index.js
server/api/voicePrefix/voicePrefix.attributes.js
server/api/voicePrefix/voicePrefix.controller.js
server/api/voicePrefix/voicePrefix.events.js
server/api/voicePrefix/voicePrefix.model.js
server/api/voicePrefix/voicePrefix.rpc.js
server/api/voicePrefix/voicePrefix.socket.js
server/api/voiceQueue/index.js
server/api/voiceQueue/voiceQueue.attributes.js
server/api/voiceQueue/voiceQueue.controller.js
server/api/voiceQueue/voiceQueue.events.js
server/api/voiceQueue/voiceQueue.model.js
server/api/voiceQueue/voiceQueue.rpc.js
server/api/voiceQueue/voiceQueue.socket.js
server/api/voiceQueueReport/index.js
server/api/voiceQueueReport/voiceQueueReport.attributes.js
server/api/voiceQueueReport/voiceQueueReport.controller.js
server/api/voiceQueueReport/voiceQueueReport.events.js
server/api/voiceQueueReport/voiceQueueReport.model.js
server/api/voiceQueueReport/voiceQueueReport.rpc.js
server/api/voiceQueueReport/voiceQueueReport.socket.js
server/api/voiceQueuesLog/index.js
server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
server/api/voiceQueuesLog/voiceQueuesLog.controller.js
server/api/voiceQueuesLog/voiceQueuesLog.model.js
server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
server/api/voiceRecording/index.js
server/api/voiceRecording/voiceRecording.attributes.js
server/api/voiceRecording/voiceRecording.controller.js
server/api/voiceRecording/voiceRecording.model.js
server/api/voiceRecording/voiceRecording.rpc.js
server/api/voiceTransferReport/index.js
server/api/voiceTransferReport/voiceTransferReport.attributes.js
server/api/voiceTransferReport/voiceTransferReport.controller.js
server/api/voiceTransferReport/voiceTransferReport.model.js
server/api/voiceTransferReport/voiceTransferReport.rpc.js
server/api/webbar/index.js
server/api/webbar/webbar.controller.js
server/api/whatsappAccount/index.js
server/api/whatsappAccount/whatsappAccount.attributes.js
server/api/whatsappAccount/whatsappAccount.controller.js
server/api/whatsappAccount/whatsappAccount.events.js
server/api/whatsappAccount/whatsappAccount.model.js
server/api/whatsappAccount/whatsappAccount.rpc.js
server/api/whatsappAccount/whatsappAccount.socket.js
server/api/whatsappApplication/index.js
server/api/whatsappApplication/whatsappApplication.attributes.js
server/api/whatsappApplication/whatsappApplication.controller.js
server/api/whatsappApplication/whatsappApplication.model.js
server/api/whatsappApplication/whatsappApplication.rpc.js
server/api/whatsappInteraction/index.js
server/api/whatsappInteraction/whatsappInteraction.attributes.js
server/api/whatsappInteraction/whatsappInteraction.controller.js
server/api/whatsappInteraction/whatsappInteraction.events.js
server/api/whatsappInteraction/whatsappInteraction.model.js
server/api/whatsappInteraction/whatsappInteraction.rpc.js
server/api/whatsappInteraction/whatsappInteraction.socket.js
server/api/whatsappMessage/index.js
server/api/whatsappMessage/whatsappMessage.attributes.js
server/api/whatsappMessage/whatsappMessage.controller.js
server/api/whatsappMessage/whatsappMessage.events.js
server/api/whatsappMessage/whatsappMessage.model.js
server/api/whatsappMessage/whatsappMessage.rpc.js
server/api/whatsappMessage/whatsappMessage.socket.js
server/api/whatsappQueue/index.js
server/api/whatsappQueue/whatsappQueue.attributes.js
server/api/whatsappQueue/whatsappQueue.controller.js
server/api/whatsappQueue/whatsappQueue.events.js
server/api/whatsappQueue/whatsappQueue.model.js
server/api/whatsappQueue/whatsappQueue.rpc.js
server/api/whatsappQueue/whatsappQueue.socket.js
server/api/whatsappQueueReport/index.js
server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
server/api/whatsappQueueReport/whatsappQueueReport.controller.js
server/api/whatsappQueueReport/whatsappQueueReport.model.js
server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
server/api/whatsappTransferReport/index.js
server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
server/api/whatsappTransferReport/whatsappTransferReport.controller.js
server/api/whatsappTransferReport/whatsappTransferReport.model.js
server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
server/app.js
server/components/auth/service.js
server/components/encryptor/index.js
server/components/export/csv.js
server/components/export/pdf.js
server/components/export/xlsx.js
server/components/extensions/rewrite.js
server/components/import/cm/csv.js
server/components/import/cm/csv2.js
server/components/integrations/configuration.js
server/components/interaction/service.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
server/config/express.js
server/config/license/hardware.js
server/config/license/index.js
server/config/license/util.js
server/config/local.env.js
server/config/logger.js
server/config/pm2/config.js
server/config/pm2/index.js
server/config/schedule/chat.js
server/config/schedule/index.js
server/config/schedule/transcribe.js
server/config/schedule/whatsapp.js
server/config/seedContact.js
server/config/seedUsers.js
server/config/socketio.js
server/config/triggers/index.js
server/config/utils.js
server/errors/index.js
server/migrations/2.5.35.js [new file with mode: 0644]
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/services/agi/channel.js
server/services/agi/error.js
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.js
server/services/agi/reply.js
server/services/agi/rpc/index.js
server/services/agi/scripts/aws/index.js
server/services/agi/scripts/aws/lex/index.js
server/services/agi/scripts/aws/lex/lib/api.js
server/services/agi/scripts/aws/polly/index.js
server/services/agi/scripts/aws/polly/lib/api.js
server/services/agi/scripts/google/asr/index.js
server/services/agi/scripts/google/asr/lib/api.js
server/services/agi/scripts/google/index.js
server/services/agi/scripts/index.js
server/services/agi/scripts/sestek/index.js
server/services/agi/scripts/sestek/nda/index.js
server/services/agi/scripts/tilde/asr/index.js
server/services/agi/scripts/tilde/asr/lib/api.js
server/services/agi/scripts/tilde/index.js
server/services/agi/server.js
server/services/agi/vertices.js
server/services/ami/acw/index.js
server/services/ami/ami.js
server/services/ami/client.js
server/services/ami/dialer/action.js
server/services/ami/dialer/agentComplete.js
server/services/ami/dialer/final.js
server/services/ami/dialer/hangup.js
server/services/ami/dialer/history.js
server/services/ami/dialer/index.js
server/services/ami/dialer/queueCallerAbandon.js
server/services/ami/fax/action.js
server/services/ami/fax/index.js
server/services/ami/fax/rpcDb.js
server/services/ami/fax/util/gs.js
server/services/ami/fax/util/util.js
server/services/ami/index.js
server/services/ami/model/agent.js
server/services/ami/model/campaign.js
server/services/ami/model/channel.js
server/services/ami/model/deskAccount.js
server/services/ami/model/dynamics365Account.js
server/services/ami/model/faxAccount.js
server/services/ami/model/freshdeskAccount.js
server/services/ami/model/freshsalesAccount.js
server/services/ami/model/queueReport.js
server/services/ami/model/salesforceAccount.js
server/services/ami/model/servicenowAccount.js
server/services/ami/model/sugarcrmAccount.js
server/services/ami/model/telephone.js
server/services/ami/model/template.js
server/services/ami/model/trigger.js
server/services/ami/model/trunk.js
server/services/ami/model/voiceExtension.js
server/services/ami/model/voiceQueue.js
server/services/ami/model/vtigerAccount.js
server/services/ami/model/zendeskAccount.js
server/services/ami/model/zohoAccount.js
server/services/ami/preview/action.js
server/services/ami/preview/index.js
server/services/ami/preview/rpcDb.js
server/services/ami/preview/util/util.js
server/services/ami/properties.js
server/services/ami/realtime/index.js
server/services/ami/report/index.js
server/services/ami/report/userReport.js
server/services/ami/report/voiceAgentReport.js
server/services/ami/report/voiceCallReport.js
server/services/ami/report/voiceDialReport.js
server/services/ami/report/voiceQueueReport.js
server/services/ami/rpc/agentReportPreview.js
server/services/ami/rpc/attachment.js
server/services/ami/rpc/campaign.js
server/services/ami/rpc/cmContact.js
server/services/ami/rpc/cmHopper.js
server/services/ami/rpc/cmHopperBlack.js
server/services/ami/rpc/cmHopperFinal.js
server/services/ami/rpc/cmHopperHistory.js
server/services/ami/rpc/faxAccount.js
server/services/ami/rpc/faxMessage.js
server/services/ami/rpc/integrations/desk.js
server/services/ami/rpc/integrations/dynamics365.js
server/services/ami/rpc/integrations/freshdesk.js
server/services/ami/rpc/integrations/freshsales.js
server/services/ami/rpc/integrations/salesforce.js
server/services/ami/rpc/integrations/servicenow.js
server/services/ami/rpc/integrations/sugarcrm.js
server/services/ami/rpc/integrations/vtiger.js
server/services/ami/rpc/integrations/zendesk.js
server/services/ami/rpc/integrations/zoho.js
server/services/ami/rpc/memberReport.js
server/services/ami/rpc/setting.js
server/services/ami/rpc/template.js
server/services/ami/rpc/trigger.js
server/services/ami/rpc/trunk.js
server/services/ami/rpc/user.js
server/services/ami/rpc/voiceAgentReport.js
server/services/ami/rpc/voiceCallReport.js
server/services/ami/rpc/voiceDialReport.js
server/services/ami/rpc/voiceExtension.js
server/services/ami/rpc/voiceQueue.js
server/services/ami/rpc/voiceQueueReport.js
server/services/ami/rpc/voiceQueueRt.js
server/services/ami/rpc/voiceRecording.js
server/services/ami/rpc/voiceTransferReport.js
server/services/ami/server/index.js
server/services/ami/trigger/cmContact/index.js
server/services/ami/trigger/index.js
server/services/ami/trigger/integration/desk.js
server/services/ami/trigger/integration/dynamics365.js
server/services/ami/trigger/integration/freshdesk.js
server/services/ami/trigger/integration/freshsales.js
server/services/ami/trigger/integration/index.js
server/services/ami/trigger/integration/salesforce.js
server/services/ami/trigger/integration/servicenow.js
server/services/ami/trigger/integration/sugarcrm.js
server/services/ami/trigger/integration/util.js
server/services/ami/trigger/integration/vtiger.js
server/services/ami/trigger/integration/zendesk.js
server/services/ami/trigger/integration/zoho.js
server/services/ami/trigger/script/index.js
server/services/ami/trigger/urlforward/index.js
server/services/email/client.js
server/services/email/index.js
server/services/email/lib/email.js
server/services/email/lib/imap.js
server/services/email/lib/smtp.js
server/services/email/lib/utils.js
server/services/email/model/mailAccount.js
server/services/email/realtime/index.js
server/services/email/rpc/mailAccount.js
server/services/email/rpc/setting.js
server/services/email/server/index.js
server/services/express/index.js
server/services/routing/client.js
server/services/routing/index.js
server/services/routing/lib/rule-engine.js
server/services/routing/mailRpc/index.js
server/services/routing/model/agent.js
server/services/routing/model/chatQueue.js
server/services/routing/model/faxQueue.js
server/services/routing/model/interval.js
server/services/routing/model/mailQueue.js
server/services/routing/model/openchannelQueue.js
server/services/routing/model/smsQueue.js
server/services/routing/model/whatsappQueue.js
server/services/routing/realtime/index.js
server/services/routing/rpc/chatInteraction.js
server/services/routing/rpc/chatMessage.js
server/services/routing/rpc/chatQueue.js
server/services/routing/rpc/chatQueueReport.js
server/services/routing/rpc/faxInteraction.js
server/services/routing/rpc/faxMessage.js
server/services/routing/rpc/faxQueue.js
server/services/routing/rpc/faxQueueReport.js
server/services/routing/rpc/interval.js
server/services/routing/rpc/mailInteraction.js
server/services/routing/rpc/mailMessage.js
server/services/routing/rpc/mailQueue.js
server/services/routing/rpc/mailQueueReport.js
server/services/routing/rpc/openchannelInteraction.js
server/services/routing/rpc/openchannelMessage.js
server/services/routing/rpc/openchannelQueue.js
server/services/routing/rpc/openchannelQueueReport.js
server/services/routing/rpc/smsInteraction.js
server/services/routing/rpc/smsMessage.js
server/services/routing/rpc/smsQueue.js
server/services/routing/rpc/smsQueueReport.js
server/services/routing/rpc/user.js
server/services/routing/rpc/whatsappInteraction.js
server/services/routing/rpc/whatsappMessage.js
server/services/routing/rpc/whatsappQueue.js
server/services/routing/rpc/whatsappQueueReport.js
server/services/routing/server/applications/agent.js
server/services/routing/server/applications/amazonlex.js
server/services/routing/server/applications/autoreply.js
server/services/routing/server/applications/close.js
server/services/routing/server/applications/dialogflow.js
server/services/routing/server/applications/dialogflowV2.js
server/services/routing/server/applications/gotoif.js
server/services/routing/server/applications/gotop.js
server/services/routing/server/applications/message.js
server/services/routing/server/applications/noop.js
server/services/routing/server/applications/queue.js
server/services/routing/server/applications/strategy/agent.js
server/services/routing/server/applications/strategy/beepall.js
server/services/routing/server/applications/strategy/index.js
server/services/routing/server/applications/strategy/rrmemory.js
server/services/routing/server/applications/strategy/util.js
server/services/routing/server/applications/system.js
server/services/routing/server/applications/tag.js
server/services/routing/server/applications/utils.js
server/services/routing/server/index.js
server/services/routing/server/interval.js
server/services/xdr/agents.controller.js
server/services/xdr/calls.controller.js
server/services/xdr/core.controller.js
server/services/xdr/dials.controller.js
server/services/xdr/index.js
server/services/xdr/members.controller.js
server/services/xdr/queues.controller.js
server/services/xdr/recordings.controller.js
server/services/xdr/transfers.controller.js
server/services/xdr/utils.js

index fb458d5..17583b9 100644 (file)
@@ -2441,24 +2441,6 @@ define({ "api": [
     "groupTitle": "Chat_Interactions"
   },
   {
-    "type": "put",
-    "url": "/api/chat/interactions/{id}/close",
-    "title": "Close Interaction",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "addMessage",
-    "group": "Chat_Interactions",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/chatInteraction/index.js",
-    "groupTitle": "Chat_Interactions"
-  },
-  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/messages",
     "title": "Creates new messages",
@@ -2536,6 +2518,24 @@ define({ "api": [
     "groupTitle": "Chat_Interactions"
   },
   {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}/close",
+    "title": "Close Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/attachment_upload",
     "title": "Add attachment",
@@ -10888,9 +10888,9 @@ define({ "api": [
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "put",
-    "url": "/api/fax/messages/{id}/reject",
-    "title": "Rejects message",
+    "type": "post",
+    "url": "/api/fax/messages",
+    "title": "Create message and send Fax",
     "examples": [
       {
         "title": "Example usage:",
@@ -10900,15 +10900,15 @@ define({ "api": [
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "post",
-    "url": "/api/fax/messages",
-    "title": "Create message and send Fax",
+    "type": "put",
+    "url": "/api/fax/messages/{id}/reject",
+    "title": "Rejects message",
     "examples": [
       {
         "title": "Example usage:",
@@ -10918,7 +10918,7 @@ define({ "api": [
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
@@ -19908,36 +19908,36 @@ define({ "api": [
   },
   {
     "type": "get",
-    "url": "/api/rpc/outbound",
-    "title": "Gets a list of RTOutbound",
+    "url": "/api/rpc/voice/queues",
+    "title": "Gets a list of RTVoiceQueues",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
   },
   {
     "type": "get",
-    "url": "/api/rpc/voice/queues",
-    "title": "Gets a list of RTVoiceQueues",
+    "url": "/api/rpc/outbound",
+    "title": "Gets a list of RTOutbound",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
@@ -22851,12 +22851,12 @@ define({ "api": [
   },
   {
     "type": "post",
-    "url": "/api/sms/messages/{id}/status",
+    "url": "/api/sms/accounts/{id}/status",
     "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
@@ -22864,41 +22864,41 @@ define({ "api": [
     "group": "Sms_Accounts",
     "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsMessage/index.js",
+    "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "get",
-    "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status as get request",
+    "type": "post",
+    "url": "/api/sms/messages/{id}/status",
+    "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsAccount/index.js",
+    "filename": "server/api/smsMessage/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status",
+    "title": "Receive message status as get request",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
@@ -26240,12 +26240,12 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
+    "url": "/api/whatsapp/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26253,17 +26253,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/faxQueue/index.js",
+    "filename": "server/api/whatsappQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/mail/queues/{id}/teams",
+    "url": "/api/openchannel/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26271,17 +26271,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/mailQueue/index.js",
+    "filename": "server/api/openchannelQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/openchannel/queues/{id}/teams",
+    "url": "/api/voice/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26289,7 +26289,7 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/openchannelQueue/index.js",
+    "filename": "server/api/voiceQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -26312,12 +26312,30 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "url": "/api/whatsapp/queues/{id}/teams",
+    "url": "/api/voice/Prefixes/{id}/teams",
+    "title": "Remove teams from a voice prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26325,17 +26343,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/whatsappQueue/index.js",
+    "filename": "server/api/chatQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/queues/{id}/teams",
+    "url": "/api/fax/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26343,17 +26361,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/voiceQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/chat/queues/{id}/teams",
+    "url": "/api/mail/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26361,7 +26379,7 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/chatQueue/index.js",
+    "filename": "server/api/mailQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -31389,6 +31407,42 @@ define({ "api": [
   },
   {
     "type": "post",
+    "url": "/api/voice/prefixes/{id}/teams",
+    "title": "Add teams to voice prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Voice_Prefix",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefix"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/prefixes/{id}/teams",
+    "title": "Gets voice prefix team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Voice_Prefix",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefix"
+  },
+  {
+    "type": "post",
     "url": "/api/voice/prefixes/{id}/users",
     "title": "Add agents to a prefix",
     "examples": [
@@ -33311,37 +33365,37 @@ define({ "api": [
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
index 726d908..5c8c36e 100644 (file)
     "groupTitle": "Chat_Interactions"
   },
   {
-    "type": "put",
-    "url": "/api/chat/interactions/{id}/close",
-    "title": "Close Interaction",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "addMessage",
-    "group": "Chat_Interactions",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/chatInteraction/index.js",
-    "groupTitle": "Chat_Interactions"
-  },
-  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/messages",
     "title": "Creates new messages",
     "groupTitle": "Chat_Interactions"
   },
   {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}/close",
+    "title": "Close Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/attachment_upload",
     "title": "Add attachment",
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "put",
-    "url": "/api/fax/messages/{id}/reject",
-    "title": "Rejects message",
+    "type": "post",
+    "url": "/api/fax/messages",
+    "title": "Create message and send Fax",
     "examples": [
       {
         "title": "Example usage:",
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "post",
-    "url": "/api/fax/messages",
-    "title": "Create message and send Fax",
+    "type": "put",
+    "url": "/api/fax/messages/{id}/reject",
+    "title": "Rejects message",
     "examples": [
       {
         "title": "Example usage:",
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
   },
   {
     "type": "get",
-    "url": "/api/rpc/outbound",
-    "title": "Gets a list of RTOutbound",
+    "url": "/api/rpc/voice/queues",
+    "title": "Gets a list of RTVoiceQueues",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
   },
   {
     "type": "get",
-    "url": "/api/rpc/voice/queues",
-    "title": "Gets a list of RTVoiceQueues",
+    "url": "/api/rpc/outbound",
+    "title": "Gets a list of RTOutbound",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
   },
   {
     "type": "post",
-    "url": "/api/sms/messages/{id}/status",
+    "url": "/api/sms/accounts/{id}/status",
     "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
     "group": "Sms_Accounts",
     "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsMessage/index.js",
+    "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "get",
-    "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status as get request",
+    "type": "post",
+    "url": "/api/sms/messages/{id}/status",
+    "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsAccount/index.js",
+    "filename": "server/api/smsMessage/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status",
+    "title": "Receive message status as get request",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
+    "url": "/api/whatsapp/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/faxQueue/index.js",
+    "filename": "server/api/whatsappQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/mail/queues/{id}/teams",
+    "url": "/api/openchannel/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/mailQueue/index.js",
+    "filename": "server/api/openchannelQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/openchannel/queues/{id}/teams",
+    "url": "/api/voice/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/openchannelQueue/index.js",
+    "filename": "server/api/voiceQueue/index.js",
     "groupTitle": "Teams"
   },
   {
   },
   {
     "type": "delete",
-    "url": "/api/whatsapp/queues/{id}/teams",
+    "url": "/api/voice/Prefixes/{id}/teams",
+    "title": "Remove teams from a voice prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/whatsappQueue/index.js",
+    "filename": "server/api/chatQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/queues/{id}/teams",
+    "url": "/api/fax/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/voiceQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/chat/queues/{id}/teams",
+    "url": "/api/mail/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/chatQueue/index.js",
+    "filename": "server/api/mailQueue/index.js",
     "groupTitle": "Teams"
   },
   {
   },
   {
     "type": "post",
+    "url": "/api/voice/prefixes/{id}/teams",
+    "title": "Add teams to voice prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Voice_Prefix",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefix"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/prefixes/{id}/teams",
+    "title": "Gets voice prefix team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Voice_Prefix",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefix"
+  },
+  {
+    "type": "post",
     "url": "/api/voice/prefixes/{id}/users",
     "title": "Add agents to a prefix",
     "examples": [
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
index 87c5895..03c30a1 100644 (file)
@@ -1,6 +1,6 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.5.34",
+  "version": "2.5.35",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-09-23T13:37:49.567Z",
+    "time": "2021-09-24T13:00:19.077Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index b90ab90..1823dcc 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.5.34",
+  "version": "2.5.35",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-09-23T13:37:49.567Z",
+    "time": "2021-09-24T13:00:19.077Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index af7cad9..44490f4 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.5.34",
+  "version": "2.5.35",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
     "aws-sdk": "2.610.0",
     "bimedia-machine-uuid": "1.0.1",
     "bluebird": "3.7.2",
+    "html-entities": "2.3.2",
     "body-parser": "1.19.0",
     "compare-versions": "3.6.0",
     "composable-middleware": "0.3.0",
     "connect-timeout": "1.9.0",
     "cookie-parser": "1.4.5",
     "cors": "2.8.5",
-    "crypto-js": "3.1.9-1",
     "cron-job-manager": "1.0.7",
+    "crypto-js": "3.1.9-1",
     "desk.js": "0.1.4",
     "dialogflow": "0.8.2",
     "ejs": "2.7.4",
index 53a27fb..5c4734e 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Ihr Passwort wiederherstellen",
-    "EMAIL_ADRESS": "E-mail Adresse",
+    "TITLE": "Passwort wiederherstellen",
+    "EMAIL_ADRESS": "E-Mail Adresse",
     "SEND_RESET_LINK": "LINK ZUM ZURÜCKSETZEN SENDEN",
     "GO_BACK": "Zurück zum Login",
     "LINK_SENT": "Link gesendet",
-    "LINNK_SENT_MESSAGE": "Eine e-Mail mit einem Link zum Zurücksetzen des Kennworts wurde an Ihre Adresse gesendet!",
-    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
+    "LINNK_SENT_MESSAGE": "Eine E-Mail mit einem Link zum Zurücksetzen des Passwortes wurde an Ihre Adresse gesendet.",
+    "PASSWORD_RESET_ERROR": "Fehler beim Zurücksetzen des Passwortes",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Im Feld E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse"
+      "EMAIL_REQUIRED": "Eingabe E-Mail Adresse erforderlich",
+      "EMAIL_MUST_VALID": "Es muss eine gültige E-Mail Adresse eingegeben werden"
     }
   }
 }
index c090dfa..bced170 100644 (file)
@@ -1,16 +1,16 @@
 {
   "LOGIN": {
-    "TITLE": "Melden Sie sich bei Ihrem Konto an",
+    "TITLE": "Bitte mit Ihrem Konto anmelden",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
-    "REMEMBER_ME": "Erinnere Dich an Mich",
+    "REMEMBER_ME": "Anmeldedaten merken",
     "FORGOT_PASSWORD": "Passwort vergessen?",
-    "LOG_IN": "LOG IN",
+    "LOG_IN": "ANMELDEN",
     "OR": "Oder",
-    "WITH_GOOGLE": "Melden Sie sich mit Google",
-    "WITH_FACEBOOK": "Mit Facebook anmelden",
+    "WITH_GOOGLE": "Anmeldung mit Google",
+    "WITH_FACEBOOK": "Anmeldung mit Facebook",
     "DONT_HAVE_ACCOUNT": "Sie haben noch kein Konto?",
-    "CREATE_ACCOUNT": "Erstellen Sie ein Konto",
+    "CREATE_ACCOUNT": "Konto erstellen",
     "ERRORS": {
       "EMAIL_REQUIRED": "Pflichtfeld",
       "EMAIL_MUST_VALID": "Falsches Format",
@@ -18,8 +18,8 @@
       "USERNAME_REQUIRED": "Pflichtfeld"
     },
     "USERNAME": "Benutzername",
-    "CANCEL": "Stornieren",
-    "SELECT": "Wählen",
+    "CANCEL": "Abbrechen",
+    "SELECT": "Auswählen",
     "TELEPHONES": "Telefone"
   }
 }
index e60162b..e6b577a 100644 (file)
@@ -13,7 +13,7 @@
       "METRIC_REQUIRED": "Pflichtfeld",
       "COLUMN_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "CUSTOM_METRIC_REQUIRED": "benutzerdefinierte Metrik (erforderlich)",
+      "CUSTOM_METRIC_REQUIRED": "Pflichtfeld",
       "ALIAS_REQUIRED": "Pflichtfeld"
     },
     "NEW_METRIC": "Neue Metrik",
@@ -23,8 +23,8 @@
     "SAVE": "Speichern",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Keine auswählen",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "TYPE": "Typ",
     "EXTRACTEDREPORTS": "Extrahierte Berichte",
     "DATE_RANGE_FROM": "Datum von",
     "GENERAL": "Allgemein",
     "FIELDS": "Felder",
     "CONDITION": "Bedingung",
-    "OPERATOR": "Betreiber",
+    "OPERATOR": "Operator",
     "GROUP": "Gruppe",
     "COLUMN": "Spalte",
     "VALUE": "Wert",
     "PREVIEW": "Vorschau",
-    "LIMITED_RESULT": "BEGRENZTES ERGEBNIS",
+    "LIMITED_RESULT": "Ergebins begrenzt",
     "NO_DATA": "Keine Daten",
     "CONDITIONS": "Bedingungen",
     "ALIAS": "Alias",
     "FUNCTION": "Funktion",
     "GROUP_BY": "Gruppieren nach",
-    "ORDER_BY": "Bestellung von",
+    "ORDER_BY": "Sortieren nach",
     "ADD_REPORTFIELD": "Feld hinzufügen",
     "EDIT_REPORTFIELD": "Feld bearbeiten",
     "DELETE_REPORTFIELD": "Feld löschen",
     "NO_METRIC_FOUND": "Keine Metrik gefunden",
     "NO_AVAILABLE_INFO": "keine Informationen verfügbar",
     "CUSTOM_METRIC": "Benutzerdefinierte Metrik",
-    "DELETE_EXTRACTEDREPORT": "Löschen extrahierte Berichte",
+    "DELETE_EXTRACTEDREPORT": "Extrahierte Berichte löschen",
     "EDIT_EXTRACTEDREPORT": "Extrahierte Berichte bearbeiten",
-    "DOWNLOAD_EXTRACTEDREPORT": "Herunterladen extrahierte Berichte",
+    "DOWNLOAD_EXTRACTEDREPORT": "Extrahierte Berichte herunterladen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "DELETE": "Löschen",
     "REPORTNAME": "Berichtsname",
     "SEND_IF_EMPTY": "Senden, wenn leer",
index 4bc9896..02f4f10 100644 (file)
@@ -2,12 +2,12 @@
   "CHAT": {
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Text",
-    "TIMES": "Anzahl von Malen pro Interaktion",
+    "TIMES": "Anzahl der Zeiten pro Interaktion",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "NEW_CHATDISPOSITION": "Neue Chat-Disposition",
+    "NEW_CHATDISPOSITION": "Neue Chat-Qualifizierung",
     "ENABLECUSTOMERATTACHMENT": "Kundenanhänge aktivieren",
-    "OFFLINE_CHAT_BUTTON": "Offline-Chat-Taste",
+    "OFFLINE_CHAT_BUTTON": "Button Chat offline",
     "OFFLINESTATUS": "Offline Status",
     "NAME": "Name",
     "CHATQUEUES": "Chat-Warteschlangen",
     "STRATEGY": "Strategie",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "KEY": "Key",
+    "KEY": "Schlüssel",
     "ALIAS": "Alias-Name",
     "VARIABLE": "Variable",
     "INTERVAL": "Intervall",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
     "TIMEZONE": "Zeitzone",
     "MESSAGE": "Nachricht",
     "ADVANCED": "Erweitert",
     "FORWARDTRANSCRIPT": "Transkript weiterleiten",
     "FORWARDTRANSCRIPTMESSAGE": "Transkript-Nachricht weiterleiten",
-    "SKIPMESSAGEBUTTON": "Nachrichtentaste überspringen",
+    "SKIPMESSAGEBUTTON": "Nachrichtenbutton überspringen",
     "EDIT_MESSAGE": "Nachricht bearbeiten",
-    "CONDITION_AGREEMENT": "Bedingungsvereinbarung",
-    "NONE": "Keine",
+    "CONDITION_AGREEMENT": "Konditionelle Vereinbarung",
+    "NONE": "Nichts",
     "PRIORITY": "Priorität",
     "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Nicht verwalteter Status",
+    "UNMANAGEDSTATUS": "Status nicht bearbeitet",
     "AUTOCLOSE": "Automatisches Schließen aktivieren",
-    "ENABLEUNMANAGEDNOTE": "Nicht verwaltete Nachricht aktivieren",
-    "UNMANAGEDMESSAGE": "Nachricht",
+    "ENABLEUNMANAGEDNOTE": "Unbearbeitete Nachricht aktivieren",
+    "UNMANAGEDMESSAGE": "Unbearbeitete Nachricht",
     "SKIPUNMANAGED": "Nachricht überspringen",
     "SENDUNMANAGED": "Nachricht senden",
-    "WEBSITESCRIPT": "Website-Script",
+    "WEBSITESCRIPT": "Webseiten-Skript",
     "DELETE_OFFLINEMESSAGE": "Löschen",
     "OFFLINEMESSAGES": "Offline Nachrichten",
     "FORWARD_OFFLINE": "Offline weiterleiten",
     "FORWARD_OFFLINE_ADDRESS": "Offline-Adresse weiterleiten",
     "CLOSINGFORM": "Formular schließen",
     "ENABLERATING": "Bewertung aktivieren",
-    "ENABLECUSTOMERWRITING": "Dem Kunden \"schreiben\" erlauben, bevor der Agent akzeptiert",
+    "ENABLECUSTOMERWRITING": "Kunde kann schreiben, bevor Chat akzeptiert wird",
     "ENABLEFEEDBACK": "Feedback aktivieren",
     "RATINGTYPE": "Bewertungstyp",
-    "CLOSINGMESSAGE": "Nachricht schließen",
-    "CLOSINGMESSAGEBUTTON": "Nachrichtentaste schließen",
+    "CLOSINGMESSAGE": "Abschluss Nachricht",
+    "CLOSINGMESSAGEBUTTON": "Button für Abschluss Nachricht",
     "RATINGSTARSNUMBER": "Anzahl der Bewertungssterne",
     "EDIT_GOTOIF": "GotoIf bearbeiten",
     "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Echte Priorität",
+    "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "WEBSITEALIAS": "Website-Alias",
     "ERRORS": {
       "TEXT_REQUIRED": "Pflichtfeld",
       "SENDUNMANAGED_REQUIRED": "Pflichtfeld",
-      "SENDUNMANAGED_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "SKIPUNMANAGED_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
-      "WEBSITEALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
+      "SENDUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "SKIPUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WEBSITEALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "AGENT_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "CONDITION_REQUIRED": "Pflichtfeld",
       "TIMEOUT_REQUIRED": "Pflichtfeld",
       "REJECTURL_MUST_VALID_URL": "Falsches Format",
       "CLOSEURL_MUST_VALID_URL": "Falsches Format",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "WAITINGMESSAGE_REQUIRED": "Pflichtfeld",
       "WAITINGTITLE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "KEY_REQUIRED": "Pflichtfeld",
-      "WAITINGMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "WAITINGTITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "HEADER_OFFLINE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "CLOSINGQUESTION_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "WAITINGMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WAITINGTITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "HEADER_OFFLINE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "CLOSINGQUESTION_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "NOTETITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "NOTETITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "FONTSIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "VERTICALPOSITION_REQUIRED": "Pflichtfeld",
-      "CUSTOMERALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "CUSTOMERALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "TAG_REQUIRED": "Pflichtfeld",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "MESSAGEFONTSIZE_REQUIRED": "Pflichtfeld",
       "AGENTALIAS_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "CUSTOMERALIAS_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "SYSTEMALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "SYSTEMALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "SYSTEMALIAS_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "BOTNAME_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld",
       "VIDAOOTOPIC_REQUIRED": "Pflichtfeld"
     },
-    "CM_FIELD": "Kontakt Manager Feld",
-    "CHATPROACTIVEACTIONS": "Proaktive Aktionen",
-    "NEW_CHATPROACTIVEACTION": "Neue proaktive Aktion",
-    "EDIT_CHATPROACTIVEACTION": "Proaktive Aktion bearbeiten",
-    "DELETE_CHATPROACTIVEACTION": "Proaktive Aktion löschen",
-    "ADD_CHATPROACTIVEACTION": "Proaktive Aktion hinzufügen",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Aktionen verfügbar",
+    "CM_FIELD": "Kontaktmanager-Feld",
+    "CHATPROACTIVEACTIONS": "Proaktive Anfragen",
+    "NEW_CHATPROACTIVEACTION": "Neue proaktive Anfrage",
+    "EDIT_CHATPROACTIVEACTION": "Proaktive Anfrage bearbeiten",
+    "DELETE_CHATPROACTIVEACTION": "Proaktive Anfrage löschen",
+    "ADD_CHATPROACTIVEACTION": "Proaktive Anfrage hinzufügen",
+    "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Anfragen verfügbar",
     "NO_OFFLINEMESSAGE_AVAILABLE": "Keine Offline-Nachrichten verfügbar",
-    "MOUSEOVER": "Maus über",
+    "MOUSEOVER": "Mouse-Over",
     "TIMEOUT": "Timeout",
     "TYPE": "Typ",
-    "SELECTOR": "Wählschalter",
+    "SELECTOR": "Selektion",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "QUEUE": "Warteschlange",
     "BUILDER": "Builder",
     "PREVIEW": "Vorschau",
-    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_AGENT": "Agenten bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_GOTO": "Goto bearbeiten",
     "EDIT_GOTOIf": "GotoIf bearbeiten",
     "LIST": "Liste",
     "SNIPPET": "Snippet",
     "FORMS": "Formulare",
-    "UP": "Bis",
-    "DOWN": "Unten",
-    "COLLAPSE": "Zusammenklappen",
-    "PROACTIVEACTIONS": "Proaktive Aktionen",
-    "DISPOSITIONS": "Dispositionen",
+    "UP": "Nach Oben",
+    "DOWN": "Nach Unten",
+    "COLLAPSE": "Einklappen",
+    "PROACTIVEACTIONS": "Proaktive Anfragen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "FIDELITY": "Treue",
-    "APPEARANCE": "Aussehen",
+    "APPEARANCE": "Darstellung",
     "MAINCOLOR": "Hauptfarbe",
     "FOCUSCOLOR": "Fokusfarbe",
-    "BUTTONCOLOR": "Tastenfarbe",
+    "BUTTONCOLOR": "Buttonfarbe",
     "HEADERSHAPE": "Kopfzeilenform",
     "ANIMATION": "Animation",
     "DEFAULT": "Standard",
     "LABELS": "Labels",
     "HEADER_ONLINE": "Online-Kopfzeile",
     "ONLINE_MESSAGE": "Online Nachricht",
-    "NAME_TITLE": "Name Eingabebezeichnung",
-    "USERNAME_PLACEHOLDER": "Benutzername Eingabe Platzhalter",
-    "EMAIL_TITLE": "E-Mail-Eingabe Label",
-    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail-Eingabe",
-    "START_CHAT_BUTTON": "'Chat starten' Taste",
-    "AGENTS_BUSY": "Meldung für besetzte Agenten",
+    "NAME_TITLE": "Name Titel",
+    "USERNAME_PLACEHOLDER": "Platzhalter für Nutzernamen",
+    "EMAIL_TITLE": "E-Mail Titel",
+    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail Adresse",
+    "START_CHAT_BUTTON": "'Chat starten' Button",
+    "AGENTS_BUSY": "Agenten besetzt",
     "HEADER_OFFLINE": "Offline-Kopfzeile",
     "OFFLINE_MESSAGE": "Offline Nachricht",
-    "MESSAGE_TITLE": "Nachrichtenbezeichnung",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für die Eingabe von Anfragenachrichten",
-    "ENQUIRY_BUTTON": "Anfrage-Taste Text",
+    "MESSAGE_TITLE": "Nachricht Titel",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für Nachrichteneingabe",
+    "ENQUIRY_BUTTON": "Anfrage-Button",
     "RATING_MESSAGE": "Bewertungsnachricht",
-    "RATING_SEND": "Bewertung Senden Tasten-Text",
-    "RATING_SKIP": "Bewertung Überspringen Tasten-Text",
+    "RATING_SEND": "Button Bewertung senden",
+    "RATING_SKIP": "Button Bewertung überspringen",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
-    "PROACTIVE": "Proaktive",
+    "PROACTIVE": "Proaktiv",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schliessen",
+    "CLOSE": "Schließen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "EMBEDDING": "Einbettung",
+    "EMBEDDING": "Einbetten",
     "GENERAL": "Allgemein",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "HELP": {
-      "MAPKEY": "Das folgende Motion Contact Manager-Feld:",
-      "FROMKEY": "Wird in Ihrem Motion Chat-Snippet wie folgt zugeordnet:",
-      "TOKEN": "Automatisch generiertes Token, das im Skript verwendet wird",
+      "MAPKEY": "Das folgende Feld aus dem Kontaktmanager:",
+      "FROMKEY": "wird in dem Chat-Snippet wie folgt zugeordnet:",
+      "TOKEN": "Automatisch generierter Token zur Verwendung im Skript",
       "COPYSCRIPTTOCLIPBOARD": "Kopieren Sie den Skripttext und fügen Sie ihn in Ihre Website ein",
       "FORWARD_OFFLINE": "Sie können mehrere durch Kommas getrennte Adressen hinzufügen (z. B. john.doe@xcally.com, jane.miller@xcally.com)",
       "MOTIONADDRESS": "Das Feld muss das folgende Format haben: ≪protocol>://<IP-Adresse>[:<port>]. Beispiel: https://X.Y.Z.W",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: ≪Protocol>:// ≪IP-Adresse>: ≪port>]. Beispiel: https://X.Y.Z.W",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "LIST": "Contact Manager-Liste, die zum Zuordnen von Kontakten verwendet wird",
+      "LIST": "Liste für die Zuordnung aus dem Kontaktmanager",
       "KEY": "Website-Kurzname (5 Zeichen), der auf der Registerkarte \"Agent\" angezeigt wird",
-      "INTEVAL": "Wird aus der Liste der verfügbaren Intervalle ausgewählt",
-      "TIMEZONE": "Wählen Sie eine aus der Liste aus (Standard = lokale Zeitzone)",
-      "ENABLERATING": "Aktivieren Sie es, wenn Sie möchten, dass der Webbesucher die Interaktion am Ende bewerten kann",
-      "ENABLEFEEDBACK": "Aktivieren Sie es, wenn Sie möchten, dass der Webbesucher am Ende ein Feedback (bis zu 150 Zeichen) senden kann",
-      "FORWARDTRANSCRIPT": "Aktivieren Sie diese Option, wenn der Webbesucher aufgefordert wird, ein Chat-Protokoll per E-Mail zu erhalten",
-      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht verwaltet geschlossen werden sollen, wenn kein Agent verfügbar ist. Weitere Informationen finden Sie unter: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "ENABLEUNMANAGEDNOTE": "Aktivieren Sie diese Option, wenn dem Besucher eine Nachricht angezeigt werden soll, wenn alle Agenten besetzt sind und der Chat nicht mehr verwaltet wird",
-      "ENABLECUSTOMERWRITING": "Aktivieren Sie es, wenn der Chat gestartet werden soll, ohne auf einen verfügbaren Agenten zu warten (Achtung: Wenn Sie ihn aktivieren, werden Ihre Chats niemals nicht verwaltet). Weitere Informationen finden Sie unter: https://wiki.xcallymotion.com/display/XMV/ Chat + Websites # ChatWebsites-Snippet ",
-      "INTERVAL": "Wählen Sie eins aus der Liste aus",
+      "INTEVAL": "Wählen aus der Liste der verfügbaren Intervalle",
+      "TIMEZONE": "Zeitzone auswählen (Standard = lokale Zeitzone)",
+      "ENABLERATING": "Bewertung nach Chat durch Kunden aktivieren",
+      "ENABLEFEEDBACK": "Feedback nach Chat durch Kunden aktivieren (Max. 150 Zeichen)",
+      "FORWARDTRANSCRIPT": "Chatprotokoll nach Abschluss per E-Mail senden",
+      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht bearbeitet geschlossen werden sollen, sofern kein Agent verfügbar ist.",
+      "ENABLEUNMANAGEDNOTE": "Automatische Nachricht an den Kunden, wenn alle Agenten besetzt sind und somit der Chat nicht verfügbar ist",
+      "ENABLECUSTOMERWRITING": "Legt fest, ob der Kunde bereits im Chat schreiben kann, bevor ein Agent den Chat entgegen nimmmt. Hinweis: Dadurch kein Status \"unbearbeitet\"",
+      "INTERVAL": "Bitte aus der Liste wählen",
       "HIDEWHENOFFLINE": "Snippet ausblenden, wenn offline",
-      "AGENTIDENTIFIER": "Repräsentiert die Agentenkennung innerhalb der Chat-Sitzung im Snippet",
+      "AGENTIDENTIFIER": "Agentenkennung innerhalb der Chat-Sitzung im Snippet",
       "WEBSITEALIAS": "Ein Präfix, mit dem der Agentenname (Präfix + Agenten-ID) erstellt wird, der dem Webbesucher während der Chat-Sitzung angezeigt wird",
-      "VERTICALPOSITION": "Stellt den Abstand in Prozent von oben dar",
-      "WELCOMEMESSAGE": "Lassen Sie das Feld leer, wenn Sie keine Willkommensnachricht senden möchten",
-      "MANDATORYDISPOSITION": "Obligatorische Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist"
+      "VERTICALPOSITION": "Prozentualer Abstand in Prozent vom oberen Bildschirmrand",
+      "WELCOMEMESSAGE": "Leer lassen, um keine Nachricht zu senden",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
     },
     "ADDRESS": "Adresse",
     "ONLINESTATE": "Online Status",
     "RATINGSTATE": "Bewertungsstatus",
     "ENQUIRY": "Anfrage",
     "OFFLINETEMPLATE": "Offline Vorlage",
-    "CHATDISPOSITIONS": "Chat-Dispositionen",
-    "NO_CHATDISPOSITION_AVAILABLE": "Keine Chat-Dispositionen verfügbar",
-    "ADD_CHATDISPOSITION": "Chat Disposition hinzufügen",
+    "CHATDISPOSITIONS": "Chat-Qualifizierungen",
+    "NO_CHATDISPOSITION_AVAILABLE": "Keine Qualifizierung verfügbar",
+    "ADD_CHATDISPOSITION": "Qualifizierung hinzufügen",
     "DELETE": "Löschen",
-    "EDIT_CHATDISPOSITION": "Chat-Disposition bearbeiten",
-    "DELETE_CHATDISPOSITION": "Chat-Disposition löschen",
+    "EDIT_CHATDISPOSITION": "Qualifizierung bearbeiten",
+    "DELETE_CHATDISPOSITION": "Qualifizierung löschen",
     "CHAT": "Chat",
     "ID": "ID",
     "NEW_CHATQUEUE": "Neue Chat-Warteschlange",
     "NEW_CHATWEBSITE": "Neue Chat-Website",
-    "ROUNDED": "Abgerundet",
-    "SQUARED": "Quadratisch",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ROUNDED": "Rundes Design",
+    "SQUARED": "Eckiges Design",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CONTACT": "Kontakt",
     "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Öffnen",
-    "OPEN": "Öffnen",
+    "OPENED": "Geöffnet",
+    "OPEN": "Offen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
     "INTERACTIONS": "Interaktionen",
     "WEBSITE": "Website",
-    "ALL": "Alle",
-    "SELECT_STATUS": "Wählen Sie einen Status",
+    "ALL": "Alles",
+    "SELECT_STATUS": "Status auswählen",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "TEAMADD_CHATQUEUE": "Team zur Chat-Warteschlange hinzufügen",
-    "AGENTADD_CHATQUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_CHATQUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSEDAT": "Geschlossen am",
-    "DISPOSITION": "Disposition",
+    "DISPOSITION": "Qualifizierung",
     "CREATEDAT": "Erstellt am",
     "NOTES": "Notizen",
     "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
-    "SELECTED_WEBSITE": "Wählen Sie eine Website",
+    "SELECTED_WEBSITE": "Ausgewählte Webseite",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "SELECT_WEBSITE": "Wählen Sie eine Website",
+    "SELECT_WEBSITE": "Webseite auswählen",
     "INFO": "Info",
     "OFFLINEMESSAGES_CHATWEBSITE": "Zu Offline-Nachrichten gehen",
-    "WAITINGTITLE": "Wartetitel",
-    "WAITINGMESSAGE": "Wartende Nachricht",
+    "WAITINGTITLE": "Titel während Warten",
+    "WAITINGMESSAGE": "Wartenachricht",
     "RATING": "Bewertung",
     "NO_RATINGVALUE": "Keine Bewertung",
-    "AGENTSADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "QUEUES": "Warteschlangen",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "Pausiert",
+    "PAUSED": "in Pause",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "WRITING": "Schreiben",
+    "WAITING": "Wartezustand",
+    "WRITING": "am Schreiben",
     "MAIL": "E-Mail",
     "SMS": "SMS",
-    "OPENCHANNEL": "Openchannel",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "PAUSE": "Pause",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Interne",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "LOGOUT": "Abmelden",
     "UNPAUSE": "Pause beenden",
-    "AGENTADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "DEFAULT_PAUSE": "Standard Pause",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
     "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
-    "VOICE": "Sprache",
+    "IN_USE": "In Verwendung",
+    "VOICE": "Anrufe",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Go to Echtzeit-Chat-Warteschlange",
+    "GOTOREALTIME_CHATQUEUE": "Zur Echtzeit-Warteschlange für Chat gehen",
     "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
     "SHOWAGENTAVATAR": "Persönlichen Agenten-Avatar anzeigen",
-    "AGENTAVATAR": "Agent Avatar",
-    "SPYINTERACTION": "Spion",
+    "AGENTAVATAR": "Agenten-Avatar",
+    "SPYINTERACTION": "Mitlesen",
     "INTERACTIONS_CHATWEBSITE": "Zu den Interaktionen gehen",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "CLOSINGQUESTION": "Frage schließen",
+    "CLOSINGQUESTION": "Abschlussfrage",
     "WEBSCRIPT": "Webskript",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
-    "NEW_CHATCANNEDANSWER": "Neue vordefinierte Antwort",
-    "ADD_CHATCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_CHATCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_CHATCANNEDANSWER": "Vordefinierte Antwort löschen",
-    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht",
-    "OFFLINEMESSAGEBODY": "Nachrichtentext",
-    "FORMSUBMITSUCCESSMESSAGE": "Erfolgsmeldung beim Absenden des Formulars",
-    "FORMSUBMITFAILUREMESSAGE": "Fehlermeldung beim Absenden des Formulars",
-    "PLACEHOLDERMESSAGE": "Platzhalter für Nachrichten",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
+    "NEW_CHATCANNEDANSWER": "Neue Textvorlage",
+    "ADD_CHATCANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_CHATCANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_CHATCANNEDANSWER": "Textvorlage löschen",
+    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht bei Offline",
+    "OFFLINEMESSAGEBODY": "Test der Nachricht bei Offline",
+    "FORMSUBMITSUCCESSMESSAGE": "Meldung Formular erfolgreich gesendet",
+    "FORMSUBMITFAILUREMESSAGE": "Meldung Fehler beim Senden des Formulars",
+    "PLACEHOLDERMESSAGE": "Nachricht für Platzhalter",
     "NOTETITLE": "Titel der Notiz",
     "DELETE_INTERACTION": "Interaktion löschen",
     "FONTSIZE": "Schriftgröße",
     "TEXTCOLOR": "Textfarbe",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "NOTIFICATION": "Benachrichtigung",
     "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Ton",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "HIDEWHENOFFLINE": "Ausblenden",
-    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
+    "HIDEWHENOFFLINE": "Ausblenden, wenn offline",
+    "INSERT_MESSAGE_HERE": "Nachricht hier eingeben",
     "AGENTALIAS": "Agent Alias",
     "AGENTFULLNAME": "Vollständiger Name des Agenten",
     "AGENTIDENTIFIER": "Identifikator",
-    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Mitarbeiter",
     "ALIGNMENT": "Ausrichtung",
     "BOTTOM_RIGHT": "Unten rechts",
     "LEFT": "Links",
     "CUSTOMERALIAS": "Kunden-Alias",
     "EDIT_TAG": "Tag bearbeiten",
     "TAG": "Tag",
-    "AGENTADD_CHATWEBSITE": "Agent zur Chat-Website hinzufügen",
+    "AGENTADD_CHATWEBSITE": "Agenten zur Chat-Website hinzufügen",
     "BACKGROUNDCOLOR": "Hintergrundfarbe",
     "MESSAGEFONTSIZE": "Schriftgröße der Nachricht",
     "AGENTTRANSFER": "Agententransfer",
     "DIALOGFLOW": "Dialogflow",
     "EDIT_DIALOGFLOW": "Dialogflow bearbeiten",
     "LANGUAGE": "Sprache",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFER": "Transfer in Warteschlange",
     "QUEUETRANSFERTIMEOUT": "Timeout bei der Warteschlangenübertragung",
     "SYSTEMALIAS": "Systemalias",
     "SYSTEMAVATAR": "System-Avatar",
     "TRANSFER": "Transfer",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "ENABLECUSTOMERCHECKMARKS": "Aktivieren vom Kunden gelieferten / gelesenen Benachrichtigungen",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
-    "CHATCANNEDANSWERS": "Vordefinierte Antworten",
+    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen",
+    "CANNEDANSWERS": "Textvorlagen",
+    "CHATCANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
-    "BOTNAME": "Bot-Name",
+    "BOTNAME": "Botname",
     "EDIT_AMAZONLEX": "Amazon Lex bearbeiten",
     "LEXREGION": "Region",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
-    "TEAMS_ASSOCIATION": "Teams Verband",
-    "MANDATORYDISPOSITION": "Obligatorische Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist",
-    "ENABLESENDBUTTON": "Sendetaste aktivieren",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID, wenn Qualifizierung erforderlich",
+    "ENABLESENDBUTTON": "Senden-Button aktivieren",
     "FEEDBACKTITLE": "Feedback-Titel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
     "LASTMESSAGE": "Letzte Nachricht",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api Key",
     "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Key",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "EMAIL_ACCOUNT": "Email-Konto",
     "OPEN_NEW_INTERACTION": "Neue Interaktion öffnen",
-    "SUBJECT": "Gegenstand",
+    "SUBJECT": "Betreff",
     "ADD_NOTE": "Notiz hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "NOTE": "Hinweis",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "NOTE": "Notiz",
     "VIDAOOMETADATA": "Vidaoo-Metadaten",
     "VIDAOONOTE": "Vidaoo-Hinweis",
     "VIDAOOTOPIC": "Vidaoo-Thema"
index da8b00a..3c27f23 100644 (file)
@@ -1,8 +1,8 @@
 {
   "CONTACTMANAGER": {
-    "VOICEQUEUEID": "Sprachwarteschlange ID",
-    "CAMPAIGNID": "Kampagne ID",
-    "STATE": "Zustand",
+    "VOICEQUEUEID": "ID Warteschlange für Sprachanrufe",
+    "CAMPAIGNID": "Kampagnen-ID",
+    "STATE": "Status",
     "NAME": "Name",
     "LISTS": "Listen",
     "UNIQUEID": "Eindeutige ID",
@@ -11,8 +11,8 @@
     "ENDTIME": "Endzeit",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopper Final",
-    "HISTORY": "Hopper Geschichte",
+    "FINAL": "Hopper final",
+    "HISTORY": "Hopper historisch",
     "SCHEDULEDAT": "Geplant am",
     "SEARCH_FOR_ANYONE": "Suche",
     "EDIT_LIST": "Liste bearbeiten",
     "DELETE_HOPPER": "Hopper löschen",
     "RELOAD": "Neu laden",
     "NO_COMPANIES": "Kein Unternehmen",
-    "NO_AVAILABLE_ITEMS": "Keine verfügbaren Artikel",
+    "NO_AVAILABLE_ITEMS": "Keine Einträge verfügbar",
     "ADD": "Hinzufügen",
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "FIRSTNAME_REQUIRED": "Der Vorname ist erforderlich",
-      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "FIRSTNAME_REQUIRED": "Vorname ist erforderlich",
+      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
       "ALIAS_REQUIRED": "Alias ist erforderlich",
-      "VALUE_REQUIRED": "Der Wert ist erforderlich",
+      "VALUE_REQUIRED": "Wert ist erforderlich",
       "EMAIL_MUST_VALID": "Falsches Format",
-      "PHONEBAR_API": "Prüfen, ob die MotionBar ausgeführt wird und der Fernbedienungsschalter für den Agenten eingeschaltet ist",
+      "PHONEBAR_API": "Statusprüfung für die MotionBar und des Remote-Switches für den Agenten",
       "ACTIONTYPE_REQUIRED": "Pflichtfeld",
       "CLICKTOACTION_REQUIRED": "Pflichtfeld"
     },
     "DESCRIPTION": "Beschreibung",
-    "DISPOSITION": "Disposition",
-    "DISPOSITIONS": "Dispositionen",
-    "VOICEDISPOSITIONS": "Sprachdispositionen",
-    "NEW_VOICEDISPOSITION": "Neue Sprachdisposition",
+    "DISPOSITION": "Qualifizierung",
+    "DISPOSITIONS": "Qualifizierungen",
+    "VOICEDISPOSITIONS": "Anrufqualifizierungen",
+    "NEW_VOICEDISPOSITION": "Neue Anrufqualifizierung",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "ADD_LIST": "Liste hinzufügen",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Keine auswählen",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "COMPANIES": "Unternehmen",
     "EDIT_COMPANY": "Unternehmen bearbeiten",
     "DELETE_COMPANY": "Unternehmen löschen",
@@ -76,7 +76,7 @@
     "STREET": "Straße",
     "POSTALCODE": "Postleitzahl",
     "DELETE": "Löschen",
-    "DELETE_ALL": "Alle Löschen",
+    "DELETE_ALL": "Alles Löschen",
     "CONTACTMANAGER": "Kontaktmanager",
     "ID": "ID",
     "SETTINGS": "Einstellungen",
     "NEW_CONTACT": "Neuer Kontakt",
     "NEW_TAG": "Neuer Tag",
     "UPLOAD_CONTACTS": "Kontakte hochladen",
-    "FINISH": "Fertig",
-    "SUCCESS": "Erfolgreich",
+    "FINISH": "Beenden",
+    "SUCCESS": "Erfolg",
     "FAILURE": "Fehler",
     "ALL_CONTACTS": "Alle Kontakte",
     "NEW_CUSTOMFIELD": "Neues benutzerdefiniertes Feld",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Keine Sprachdispositionen verfügbar",
-    "ADD_VOICEDISPOSITION": "Sprachdisposition hinzufügen",
-    "EDIT_VOICEDISPOSITION": "Sprachdisposition bearbeiten",
-    "DELETE_VOICEDISPOSITION": "Sprachdisposition löschen",
-    "VAT": "Mwst.",
-    "COMPANYID": "Ihre Unternehmens-ID",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Keine Anrufqualifizierung verfügbar",
+    "ADD_VOICEDISPOSITION": "Anrufqualifizierung hinzufügen",
+    "EDIT_VOICEDISPOSITION": "Anrufqualifizierung bearbeiten",
+    "DELETE_VOICEDISPOSITION": "Anrufqualifizierung löschen",
+    "VAT": "Ust-ID.",
+    "COMPANYID": "Unternehmens-ID",
     "WEBSITE": "Website",
     "EMAIL_DOMAIN": "E-Mail Domain",
     "ADDRESS": "Adresse",
     "GOTOCONTACTS_COMPANY": "Kontakte anzeigen",
     "ADD_AGENT_TO_LIST": "Agenten zur Liste hinzufügen",
     "AGENTADD_LIST": "Agenten zur Liste hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "NONE": "Keine",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
+    "NONE": "Nichts",
     "FULLNAME": "Vollständiger Name",
-    "CHECK_DUPLICATES": "Duplikate prüfen",
+    "CHECK_DUPLICATES": "auf Duplikate prüfen",
     "DUPLICATES": "Duplikate",
-    "UPLOAD_CSV": "Hochladen von CSV",
+    "UPLOAD_CSV": "Hochladen von CSV-Datei",
     "TAG": "Tag",
     "UPLOAD": "Hochladen",
     "ALL_AGENTS": "Alle Agenten",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "DATEOFBIRTH": "Geburtsdatum",
     "NOTES": "Notizen",
-    "EXPORTCSVCONTACTS_LIST": "In CSV exportieren",
+    "EXPORTCSVCONTACTS_LIST": "In CSV-Datei exportieren",
     "GOTO_LIST": "Kontakte anzeigen",
     "GOTO_COMPANY": "Kontakte anzeigen",
     "REQUIRED": "Erforderlich",
     "SESSIONS": "Sitzungen",
     "AGENT": "Agent",
     "PROJECT": "Projekt",
-    "SELECT_LIST": "Wählen Sie eine Liste aus",
-    "SELECT_COMPANY": "Wählen Sie ein Unternehmen aus",
-    "SELECT_TAGS": "Wählen Sie ein oder mehrere Tags aus",
+    "SELECT_LIST": "Liste auswählen",
+    "SELECT_COMPANY": "Unternehmen auswählen",
+    "SELECT_TAGS": "Tags auswählen",
     "HELP": {
-      "PHONEBAR_API": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Fernbedienungsschalter für den Agenten eingeschaltet ist",
-      "PHONEBAR_API_MESSAGE": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Fernbedienungsschalter für den Agenten eingeschaltet ist"
+      "PHONEBAR_API": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Remote-Switch für den Agenten eingeschaltet ist",
+      "PHONEBAR_API_MESSAGE": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Remote-Switch für den Agenten eingeschaltet ist"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "SOCIAL": "Social",
     "ROW": "Reihe",
-    "EXPORT_ERRORS": "Fehler exportieren",
+    "EXPORT_ERRORS": "Fehler-Log exportieren",
     "UPLOAD_COMPLETED": "Hochladen abgeschlossen",
     "STOP": "Stopp",
-    "SELECT_FILE": "Datei aussuchen",
+    "SELECT_FILE": "Datei auswählen",
     "IMPORT_CONTACTS": "Kontakte importieren",
     "MOTIONDIALER": "Motion Bull",
     "PREFIX": "Vorwahl wählen",
     "PRIORITY": "Priorität",
     "USERID": "Agent-ID abrufen",
-    "CUSTOMER_JOURNEY": "Kundenreise",
-    "SELECT_TAG": "Wählen Sie Tags aus",
+    "CUSTOMER_JOURNEY": "Kundenhistorie",
+    "SELECT_TAG": "Tag auswählen",
     "ALL": "Alle",
     "BILLINGINFORMATION": "Abrechnungsdaten",
     "COMPANY_FISCAL_TYPE": "Unternehmenssteuerart",
     "CREATE": "Erstellen",
     "EUROPE": "Europa",
-    "EXPIREDAY": "Ablauftage",
+    "EXPIREDAY": "Ablauftag",
     "FLATDISCOUNT": "Firmenrabatt",
     "INVOICEARTICLE": "Gesetzliche Artikel",
     "ISOCODE": "Nationaler ISO-Code",
     "RELATIONSHIPCOMPANY": " ... mit",
     "SDICODE": "SDI-Code",
     "SOCIAL_CAPITAL": "Aktienkapital",
-    "VATNUMBER_CF": "Codice Fiscale / VAT",
-    "RECALLME": "Ruf mich zurück",
+    "VATNUMBER_CF": "Umsatzsteuer Identnummer / VAT",
+    "RECALLME": "Rückruf anfordern",
     "ACTIONTYPE": "Aktionstyp",
-    "CLICKTOACTION": "Zur Aktion klicken"
+    "CLICKTOACTION": "Klicken für Aktion"
   }
 }
index df9fabe..dbfb7c7 100644 (file)
@@ -1,10 +1,10 @@
 {
   "DASHBOARDS": {
-    "HOME": "Home",
+    "HOME": "Startseite",
     "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open Channel",
+    "MAIL": "E-Mail",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "RATING": "Bewertung",
     "FEEDBACK": "Feedback",
     "AGENT": "Agent",
     "CREATED_AT": "Erstellt am",
     "CLOSED_AT": "Geschlossen am",
-    "DISPOSITION": "Disposition",
+    "DISPOSITION": "Qualifizierung",
     "CONTACT": "Kontakt",
     "INTERACTION": "Interaktion",
     "BROWSER_NAME": "Browser Name",
     "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Name des Betriebssystems",
-    "OS_VERSION": "Version des Betriebssystems",
+    "OS_NAME": "Betriebssystem Name",
+    "OS_VERSION": "Betriebssystem Version",
     "DEVICE_MODEL": "Gerätemodell",
     "DEVICE_VENDOR": "Gerätehersteller",
     "DEVICE_TYPE": "Gerätetyp",
-    "RECALLME": "Ruf mich zurück",
-    "DROP_RATE": "Abgebrochene Anrufrate",
+    "RECALLME": "Rückruf anfordern",
+    "DROP_RATE": "Abbruchrate Anrufe",
     "DROPPED": "Abgebrochen",
-    "DROPPED_TEXT": "Abgebrochene Anrufe aus der Warteschlange",
+    "DROPPED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
     "DETAIL": "Detail",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Limitiert",
     "LIMITED_TEXT": "IVR-Kampagnen Anrufe getätigt/limitiert",
     "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Aufnahmen",
-    "TODAY_MOTION_BULL_STATS": "Warteschlangen-Kampagnen Tagesstatistiken",
+    "RECORDINGS": "Aufzeichnungen",
+    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken Warteschlangen",
     "ORIGINATED": "Gewählt",
     "ORIGINATED_TEXT": "Anrufe aus der Warteschlange gewählt",
     "UPDATE": "Aktualisieren",
     "MORE": "Mehr",
     "MOTIONDIALER": "Motion Dialer",
-    "DISPOSE": "Entsorgen",
+    "DISPOSE": "Qualifizieren",
     "QUEUES": "Warteschlangen",
-    "DIALER_CALL": "Dialer Anruf",
+    "DIALER_CALL": "Dialer-Anruf",
     "ELAPSED_TIME": "Abgelaufene Zeit",
     "EDIT": "Bearbeiten",
     "MERGE": "Zusammenführen",
     "DUPLICATE": "Duplizieren",
     "UNIQUEID": "Eindeutige ID",
     "CAMPAIGN": "Kampagne",
-    "NONE": "Keine",
+    "NONE": "Nichts",
     "NAME": "Name",
     "ANSWER_MACHINE": "Anrufbeantworter",
     "INTERESTED": "Interessiert",
     "NOT_INTERESTED": "Kein Interesse",
     "PERSONAL_INFO": "Persönliche Infos",
     "SOLD": "Verkauft",
-    "SPECIAL": "Spezielle",
+    "SPECIAL": "Speziell",
     "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "Verschieben",
+    "RESCHEDULE": "erneut Planen",
     "FIRSTNAME": "Vorname",
     "LASTNAME": "Nachname",
-    "MOBILE": "Mobile",
+    "MOBILE": "Mobilnummer",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "COMPANY": "Unternehmen",
     "TAG": "Tag",
     "POSTALCODE": "Postleitzahl",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "GENERAL": "Allgemein",
-    "VOICE": "Sprache",
+    "VOICE": "Sprachanrufe",
     "TODAY_IVR_CAMPAIGNS_STATS": "IVR-Tagesstatistiken",
-    "TODAY_INBOUND_STATS": "Inbound Warteschlangen Tagesstatistiken",
-    "TODAY_OUTBOUND_STATS": "Outbound Warteschlangen Tagesstatistiken",
-    "WAITING": "Anrufe in der Warteschlange",
+    "TODAY_INBOUND_STATS": "Tagesstatistiken - eingehende Warteschlangen",
+    "TODAY_OUTBOUND_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
+    "WAITING": "Anrufe in Warteschlange",
     "TALKING": "Im Gespräch",
-    "INBOUND_ANSWERED": "Angenommen",
-    "OUTBOUND_ANSWERED": "Angenommen",
-    "ABANDONED": "Verlassen",
-    "TOTAL_OFFERED": "Insgesamt",
+    "INBOUND_ANSWERED": "Angenommen eingehend",
+    "OUTBOUND_ANSWERED": "Angenommen ausgehend",
+    "ABANDONED": "Abgebrochen",
+    "TOTAL_OFFERED": "Gesamt angeboten",
     "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "INBOUND_ANSWER_RATE": "Angenommene Anrufrate",
-    "OUTBOUND_ANSWER_RATE": "Angenommene Anrufrate",
-    "ABANDON_RATE": "Verlassene Anrufrate",
-    "UNMANAGED": "Nicht verwaltete",
-    "TOTAL": "Insgesamt",
+    "INBOUND_ANSWER_RATE": "Antwortrate eingehend",
+    "OUTBOUND_ANSWER_RATE": "Antwortrate ausgehend",
+    "ABANDON_RATE": "Abbruchrate",
+    "UNMANAGED": "Nicht bearbeitet",
+    "TOTAL": "Gesamt",
     "TOT_DURATION": "Gesamtdauer",
     "AVG_DURATION": "Durchschnittliche Dauer",
     "HELP": {
-      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/Limitiert",
-      "DROPPED": "Die Gesamtzahl abgebrochener Anrufe aus der Warteschlange",
-      "DROP_RATE": "Die Rate aller abgebrochener Anrufe aus der Warteschlange",
-      "WAITING": "Die Gesamtzahl der wartenden Anrufe aus der Warteschlange",
-      "OUTBOUND_ANSWERED": "Die Gesamtzahl der angenommenen ausgehenden Anrufe",
-      "ABANDONED": "Die Gesamtzahl der abgebrochenen Anrufe aus der Warteschlange",
-      "TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
-      "AVG_HOLD_TIME": "Die durchschnittliche Interaktionswartezeit, d.h. die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Interaktionen.",
-      "OUTBOUND_ANSWER_RATE": "Die Rate aller angenommenen ausgehenden Anrufe",
-      "ABANDON_RATE": "Die Rate aller verlassenen Anrufe aus der Warteschlange",
-      "UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "TOTAL": "Die Gesamtzahl der ausgehenden Anrufe",
-      "TOT_DURATION": "Die Gesamtdauer aller ausgehenden Anrufe",
-      "AVG_DURATION": "Die durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
-      "ORIGINATED": "Die Gesamtzahl der in den Warteschlangenkampagnen gewählten Anrufe",
-      "ABANDONED_RATE": "Die Rate aller abgebrochenen Interaktionen",
-      "AVG_MANAGED_TIME": "Die durchschnittliche verwaltete Interaktionszeit, nämlich die durchschnittliche Zeit, die während des Gesprächs verbracht wird",
-      "MANAGED": "Die Gesamtzahl der abgeschlossenen Interaktionen",
-      "MANAGED_RATE": "Die verwaltete Rate aller Interaktionen",
-      "OPENED": "Die Gesamtzahl der aktiven Interaktionen",
-      "UNMANAGED_RATE": "Die nicht verwaltete Rate aller Interaktionen",
-      "VOICE_ABANDONED": "Die Gesamtzahl der aufgegebenen Warteschlangenanrufe unter Berücksichtigung aller vorhandenen Warteschlangen. Beachten Sie, dass Anrufe, die wegen Timeout und joinempty abgebrochen werden, nicht berücksichtigt werden",
-      "VOICE_ANSWERED": "Die Gesamtzahl der abgeschlossenen Warteschlangenanrufe für alle vorhandenen Warteschlangen",
-      "VOICE_ANSWER_RATE": "Die Antwortrate aller Warteschlangenanrufe",
-      "VOICE_AVG_HOLD_TIME": "Die durchschnittliche Wartezeit für Warteschlangen, nämlich die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Warteschlangen",
-      "VOICE_AVG_TALK_TIME": "Die durchschnittliche Gesprächszeit in der Warteschlange, nämlich die durchschnittliche Gesprächszeit für alle vorhandenen Warteschlangen",
-      "VOICE_TALKING": "Die Gesamtzahl der aktiven Warteschlangenanrufe für alle vorhandenen Warteschlangen",
-      "VOICE_TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
-      "VOICE_UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "VOICE_WAITING": "Die Gesamtanzahl der wartenden Warteschlangenanrufe für alle vorhandenen Warteschlangen",
-      "MANDATORY_DISPOSITION_ENABLED": "Obligatorische Disposition für dieses Konto aktiviert",
-      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung",
-      "LIKE_FILTER": "Suchen Sie nach dem angegebenen Muster"
+      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/limitiert",
+      "DROPPED": "Gesamtzahl abgebrochener Anrufe innerhalb der Warteschlange",
+      "DROP_RATE": "Abbruchrate aller Anrufe in der Warteschlange",
+      "WAITING": "Gesamtzahl der wartenden Anrufe aus der Warteschlange",
+      "OUTBOUND_ANSWERED": "Gesamtzahl der angenommenen ausgehenden Anrufe",
+      "ABANDONED": "Gesamtzahl der abgebrochenen Anrufe innerhalb der Warteschlange",
+      "TOTAL_OFFERED": "Gesamtzahl der angebotenen Anrufe in der Warteschlange (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
+      "AVG_HOLD_TIME": "Durchschnittliche Wartezeit einer Interaktion bis zur Beantwortung durch einen Agenten.",
+      "OUTBOUND_ANSWER_RATE": "Rate aller angenommenen ausgehenden Anrufe",
+      "ABANDON_RATE": "Rate aller abgebrochener Anrufe innerhalb der Warteschlange",
+      "UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "TOTAL": "Gesamtzahl der ausgehenden Anrufe",
+      "TOT_DURATION": "Gesamtdauer aller ausgehenden Anrufe",
+      "AVG_DURATION": "Durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
+      "ORIGINATED": "Gesamtzahl der in den Warteschlangen-Kampagnen gewählten Anrufe",
+      "ABANDONED_RATE": "Rate aller abgebrochenen Interaktionen",
+      "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit einer Interaktion",
+      "MANAGED": "Gesamtzahl der abgeschlossenen Interaktionen",
+      "MANAGED_RATE": "Rate aller bearbeiteten Anrufe",
+      "OPENED": "Gesamtzahl der aktiven Interaktionen",
+      "UNMANAGED_RATE": "Rate aller unbearbeiteten Interaktionen",
+      "VOICE_ABANDONED": "Gesamtzahl der abgebrochenen Anrufe in der Warteschlange unter Berücksichtigung aller vorhandenen Warteschlangen. Hinweis: Anrufe, die wegen Timeout und joinempty abgebrochen wurden, werden nicht berücksichtigt.",
+      "VOICE_ANSWERED": "Gesamtzahl der abgeschlossenen Anrufe für alle vorhandenen Warteschlangen",
+      "VOICE_ANSWER_RATE": "Antwortrate aller Anrufe in der Warteschlange",
+      "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit bis zur Beantwortung durch einen Agenten für alle vorhandenen Warteschlangen",
+      "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit für alle Anrufe aus der Warteschlange ",
+      "VOICE_TALKING": "Gesamtzahl der aktiven Anrufe für alle vorhandenen Warteschlangen",
+      "VOICE_TOTAL_OFFERED": "Gesamtzahl der Anrufe der Warteschlangen (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
+      "VOICE_UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle vorhandenen Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "VOICE_WAITING": "Gesamtanzahl der aktuell wartenden Anrufe für alle vorhandenen Warteschlangen",
+      "MANDATORY_DISPOSITION_ENABLED": "Kontaktqualifizierung erforderlich",
+      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung der Suchbegriffe",
+      "LIKE_FILTER": "Suche nach variablen Übereinstimmungen der Suchbegriffe"
     },
     "ERRORS": {
       "FIRSTNAME_REQUIRED": "Der erste Name ist erforderlich",
       "CAMPAIGN_REQUIRED": "Pflichtfeld",
       "FAILED_INITIALIZATION": "Fehler während der Initialisierung"
     },
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "WELCOME_TO_MOTION": "Willkommen bei Motion",
+    "NO_AVAILABLE_INFO": "Keine Information vorhanden",
+    "WELCOME_TO_MOTION": "Willkommen zu Motion",
     "WELCOME_MESSAGE": "Verwenden Sie die linke Seitenleiste, um durch die verfügbaren Abschnitte zu navigieren",
     "ADD": "Hinzufügen",
-    "CONTACTMANAGER": "Contact Manager",
+    "CONTACTMANAGER": "Kontaktmanager",
     "DASHBOARD": "Dashboard",
     "EDIT_CONTACT": "Kontakt bearbeiten",
     "EMAIL": "E-Mail",
     "NEW_CONTACT": "Neuer Kontakt",
     "PHONE": "Telefon",
     "SAVE": "Speichern",
-    "INBOUND_WAITING_CALLS": "Eingehende Anrufe in der Warteschlange",
+    "INBOUND_WAITING_CALLS": "Wartende Anrufe (Eingehend)",
     "CONTACTS": "Kontakte",
     "MYCONTACTS": "Meine Kontakte",
     "ADD_CONTACT": "Kontakt hinzufügen",
-    "RELOAD": "Neu laden",
+    "RELOAD": "Neu Laden",
     "WAITING_TEXT": "Wartende Interaktionen",
-    "TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
-    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
-    "ABANDONED_TEXT": "Verlassene Anrufe in der Warteschlange",
-    "DROP_RATE_TEXT": "Rate abgebrochener Anrufe in der Warteschlange",
-    "TOTAL_OFFERED_TEXT": "Gesamtzahl der Interaktionen",
-    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit der Interaktionen",
-    "AVG_TALK_TIME_TEXT": "Gesprächszeit der Warteschlangenanrufe",
-    "INBOUND_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange ",
-    "UNMANAGED_TEXT": "Nicht verwaltete Interaktionen",
-    "TOTAL_TEXT": "Gesamtzahl ausgehender Anrufe",
-    "OUTBOUND_ANSWERED_TEXT": "Ausgehende angenommene Anrufe ",
+    "TALKING_TEXT": "Aktive Anrufe",
+    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe",
+    "ABANDONED_TEXT": "Abgebrochene Anrufe",
+    "DROP_RATE_TEXT": "Abbruchrate",
+    "TOTAL_OFFERED_TEXT": "Gesamt angebotene Interaktionen",
+    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit",
+    "AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit",
+    "INBOUND_ANSWER_RATE_TEXT": "Antwortrate ",
+    "UNMANAGED_TEXT": "Nicht bearbeitete Interaktionen",
+    "TOTAL_TEXT": "Gesamt ausgehende Anrufe",
+    "OUTBOUND_ANSWERED_TEXT": "Beantwortete Anrufe (Ausgehend) ",
     "TOT_DURATION_TEXT": "Gesamtdauer ausgehender Anrufe ",
     "AVG_DURATION_TEXT": "Durchschnittliche Dauer ausgehender Anrufe",
     "OUTBOUND_ANSWER_RATE_TEXT": "Rate angenommener ausgehender Anrufe",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "REPLY_PLACEHOLDER": "Geben Sie ein und drücken Sie die Eingabetaste, um eine Nachricht zu senden",
+    "OF": "von",
+    "REPLY_PLACEHOLDER": "Text eingeben und ENTER drücken zum Senden",
     "CONTACT_INFO": "Kontaktinformationen",
-    "CLOSE_AND_DISPOSE": "Schließen und Entsorgen",
-    "DISPOSITIONS": "Dispositionen",
-    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Entsorgen",
-    "ACCEPT": "Akzeptieren",
+    "CLOSE_AND_DISPOSE": "Schließen und Qualifizieren",
+    "DISPOSITIONS": "Qualifizierungen",
+    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Qualifizierung",
+    "ACCEPT": "Annehmen",
     "REJECT": "Ablehnen",
     "CLOSED": "Geschlossen",
-    "INFO": "Info",
+    "INFO": "Information",
     "NOTE": "Hinweis",
-    "ACCEPT_ELSEWHERE": "Anderswo akzeptiert",
+    "ACCEPT_ELSEWHERE": "Von anderem Teilnehmer angenommen",
     "ATTENTION": "Achtung",
     "SOCIAL": "Sozial",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Keine Jscripty-Projekte verfügbar",
     "FILTER": "Filter",
     "SELECT_STATUS": "Status auswählen",
     "SELECT_ACCOUNT": "Konto auswählen",
-    "SELECT_WEBSITE": "Wählen Sie die Webseite",
-    "ALL": "Alle",
+    "SELECT_WEBSITE": "Webseite auswählen",
+    "ALL": "Alles",
     "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Gestartet am",
+    "STARTEDAT": "Begonnen am",
     "STATUS": "Status",
     "OPEN": "Öffnen",
-    "SHOW": "Zeigen",
+    "SHOW": "Anzeigen",
     "ME": "ICH",
     "NOT_ASSIGNED": "Nicht zugewiesen",
     "UNKNOWN": "Unbekannt",
-    "SELECT_USER": "Wählen Sie einen Benutzer",
+    "SELECT_USER": "Benutzer auswählen",
     "LAST_MESSAGE": "Letzte Nachricht",
     "USER": "Benutzer",
     "TAGS": "Tags",
     "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "CALLERID": "Anrufer-ID",
-    "END_AT": "Ende am",
+    "END_AT": "Beendet am",
     "DURATION": "Dauer",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
     "EXTERNAL_URL": "Externer Link",
     "SET_AS": "Festlegen als",
     "PENDING": "Ausstehend",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textbausteine gefunden",
+    "CANNED_ANSWER_SEARCH": "Hier nach einem Textbaustein suchen",
     "NO_MAIL_ACCOUNTS_AVAILABLE": "Keine E-Mail-Konten verfügbar",
     "NO_FAX_ACCOUNTS_AVAILABLE": "Keine Fax-Konten verfügbar",
     "NO_SMS_ACCOUNTS_AVAILABLE": "Keine SMS-Konten verfügbar",
-    "FILTER_VOICE_QUEUES": "Sprachwarteschlangen filtern",
-    "LOADING_INTERACTION": "Wir laden die Interaktion ...",
+    "FILTER_VOICE_QUEUES": "Anrufwarteschlangen filtern",
+    "LOADING_INTERACTION": "Interaktion wird geladen",
     "JANUARY": "Januar",
     "FEBRUARY": "Februar",
     "MARCH": "März",
     "SELECT_DATE": "Datum auswählen",
     "SELECT_DATE_RANGE": "Wählen Sie einen Datumsbereich",
     "CLEAR": "Löschen",
-    "CALL_NUMBER": "Anruf",
+    "CALL_NUMBER": "Anrufen",
     "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Anruf richtig gespeichert",
-    "CALL_DISPOSED": "Anruf richtig entsorgt",
-    "CHANNEL_WAITING_TEXT": "Wartende Warteschlangen-Interaktionen",
+    "CALL_SAVED": "Anruf erfolgreich gespeichert",
+    "CALL_DISPOSED": "Anruf erfolgreich qualifiziert",
+    "CHANNEL_WAITING_TEXT": "Wartende Interaktionen",
     "CHANNEL_QUEUE": "Warteschlange",
-    "CHANNEL_FROM": "Von",
+    "CHANNEL_FROM": "von",
     "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "SELECT_AGENT": "Wählen Sie den Agenten aus",
+    "SELECT_AGENT": "Agenten auswählen",
     "READ": "Gelesen",
-    "SELECT_READ_UNREAD": "Wählen Sie Lesen/Ungelesen",
-    "SELECT_SUBSTATUS": "Wählen Sie Substatus",
+    "SELECT_READ_UNREAD": "Wählen ob Lesen/Ungelesen",
+    "SELECT_SUBSTATUS": "Zwischenstatus auswählen",
     "UNREAD": "Ungelesen",
-    "ABANDONAT": "Verlassen",
-    "ABANDONEDQUEUECALLS": "Verlassene Warteschlangenanrufe",
+    "ABANDONAT": "Abgebrochen",
+    "ABANDONEDQUEUECALLS": "Abgebrochene Anrufe",
     "FREE": "Frei",
     "LASTASSIGNEDTO": "Zuletzt zugewiesen an",
     "QUEUE": "Warteschlange",
     "QUEUECALLEREXITAT": "Abgebrochen",
     "QUEUECALLEREXITREASON": "Grund",
     "RESERVED": "Reserviert",
-    "SELECT_CAMPAIGN": "Wählen Sie eine Warteschlange",
+    "SELECT_CAMPAIGN": "Warteschlange auswählen",
     "ASSIGNTO": "Zuweisen",
-    "CLICKRELOAD": "Neue verlassene Anrufe! Bitte neu laden",
+    "CLICKRELOAD": "Verpasste Anrufe! Bitte Seite erneut laden",
     "NOTAVAILABLE": "Nicht verfügbar",
-    "CURRENTLY_IN_USE_BY": "Derzeit im Einsatz von",
-    "CUSTOMER_JOURNEY": "Kundenreise",
+    "CURRENTLY_IN_USE_BY": "Derzeit verwendet von",
+    "CUSTOMER_JOURNEY": "Kundenhistorie",
     "NO_DATA_AVAILABLE": "Keine Daten verfügbar",
     "AGENTS": "Agenten",
     "TRANSFER": "Transfer",
-    "NO_DISPOSITION_SET": "Keine Disposition festgelegt",
-    "ABANDONED_RATE": "Verlassene Rate",
-    "ABANDONED_RATE_TEXT": "Rate verlassener Interaktionen",
-    "AVG_MANAGED_TIME": " Durchschnittliche Verwaltungszeit",
-    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Verwaltungszeit der Interkationen",
-    "MANAGED": "Verwaltet",
-    "MANAGED_RATE": "Verwaltete Rate",
-    "MANAGED_RATE_TEXT": "Verwaltete Interaktionsrate",
-    "MANAGED_TEXT": "Verwaltete Interaktionen",
-    "OPENED_TEXT": "Geöffnete Interaktionen",
+    "NO_DISPOSITION_SET": "Keine Qualifizierungen definiert",
+    "ABANDONED_RATE": "Abbruchrate",
+    "ABANDONED_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
+    "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit",
+    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Bearbeitungszeit aller Interkationen",
+    "MANAGED": "Bearbeitet",
+    "MANAGED_RATE": "Bearbeitungsrate",
+    "MANAGED_RATE_TEXT": "Rate der bearbeiteten Interaktionen",
+    "MANAGED_TEXT": "Interaktionen bearbeitet",
+    "OPENED_TEXT": "Interaktionen geöffnet",
     "TODAY_INTERACTIONS_STATS": "Interaktionen Tagesstatistiken",
-    "UNMANAGED_RATE": "Nicht verwaltete Rate",
-    "UNMANAGED_RATE_TEXT": "Nicht verwaltete Interaktionsate",
-    "VOICE_ABANDONED": "Verlassen",
-    "VOICE_ABANDONED_TEXT": "Verlassene Warteschlangenanrufe",
-    "VOICE_ABANDON_RATE": "Verlassene Rate",
-    "VOICE_ABANDON_RATE_TEXT": "Rate verlassener Warteschlangenanrufe",
+    "UNMANAGED_RATE": "Rate nicht Bearbeitet",
+    "UNMANAGED_RATE_TEXT": "Rate der nicht bearbeiteten Interaktionen in der Warteschlange",
+    "VOICE_ABANDONED": "Abgebrochen",
+    "VOICE_ABANDONED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
+    "VOICE_ABANDON_RATE": "Abbruchrate",
+    "VOICE_ABANDON_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
     "VOICE_ANSWERED": "Angenommen",
     "VOICE_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
-    "VOICE_ANSWER_RATE": "Angenommene Rate",
+    "VOICE_ANSWER_RATE": "Antwortrate",
     "VOICE_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange",
     "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "VOICE_AVG_HOLD_TIME_TEXT": "Queue ruft AVG HOLD TIME an",
+    "VOICE_AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit aller Sprachanrufe",
     "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit",
-    "VOICE_AVG_TALK_TIME_TEXT": "Gesprächszeit der Anrufe in der Warteschlage",
+    "VOICE_AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit aller Anrufe nach der Warteschleife",
     "VOICE_TALKING": "IM GESPRÄCH",
     "VOICE_TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
-    "VOICE_TOTAL_OFFERED": "Insgesamt",
-    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der Anrufe in der Warteschlange",
-    "VOICE_UNMANAGED": "Nicht verwaltet",
-    "VOICE_UNMANAGED_TEXT": "Nicht verwaltete Anrufe in der Warteschlange",
+    "VOICE_TOTAL_OFFERED": "Gesamt angeboten",
+    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der angebotenen Anrufe in der Warteschlange",
+    "VOICE_UNMANAGED": "Nicht bearbeitet",
+    "VOICE_UNMANAGED_TEXT": "Nicht bearbeitete Anrufe in der Warteschlange",
     "VOICE_WAITING": "Wartende Anrufe",
     "VOICE_WAITING_TEXT": "Wartende Anrufe in der Warteschlange",
     "DOWNLOAD": "Herunterladen",
     "SCHEDULED_CALLS": "Geplante Anrufe",
-    "PRIVATE": "Privat",
+    "PRIVATE": "Persönlich",
     "PUBLIC": "Öffentlich",
-    "PUBLIC_INTERACTION": "Die Interaktion ist öffentlich",
+    "PUBLIC_INTERACTION": "Öffentliche Interaktion",
     "VISIBILITY": "Sichtbarkeit",
-    "INTERACTION_CLOSED": "Interaktion korrekt geschlossen",
-    "INTERACTION_CLOSED_DISPOSED": "Interaktion korrekt geschlossen und entsorgt",
-    "INTERACTION_DISPOSED": "Interaktion korrekt entsorgt",
-    "ASSIGNED_TO_OTHERS": "An andere zugewiesen",
-    "SELECT_ALL": "Alle auswählen",
+    "INTERACTION_CLOSED": "Interaktion erfolgreich geschlossen",
+    "INTERACTION_CLOSED_DISPOSED": "Interaktion erfolgreich geschlossen und qualifiziert",
+    "INTERACTION_DISPOSED": "Interaktion erfolgreich qualifiziert",
+    "ASSIGNED_TO_OTHERS": "An Andere zugewiesen",
+    "SELECT_ALL": "Alles auswählen",
     "CHAT_INTERACTIONS": "Chat-Interaktionen",
     "FAX_INTERACTIONS": "Fax-Interaktionen",
-    "ID": "Id",
+    "ID": "ID",
     "MAIL_INTERACTIONS": "E-Mail-Interaktionen",
-    "OPENCHANNEL_INTERACTIONS": "Open Channel-Interaktionen",
+    "OPENCHANNEL_INTERACTIONS": "Offener-Kanal-Interaktionen",
     "SMS_INTERACTIONS": "SMS-Interaktionen",
-    "CANCEL": "Stornieren",
-    "DRAFT": "Entwurf",
-    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Sind Sie sicher, dass Sie ihn überschreiben möchten?",
+    "CANCEL": "Abbrechen",
+    "DRAFT": "Entwurf speichern",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Möchten Sie diesen überschreiben?",
     "DRAFT_SAVE_WARNING_TITLE": "Vorhandenen Entwurf überschreiben?",
     "OVERWRITE": "Überschreiben",
     "SAVE_AS_DRAFT": "Als Entwurf speichern",
     "UNTITLED": "Ohne Titel",
     "UPDATE_DRAFT": "Entwurf aktualisieren",
     "NO_AVAILABLE_INTERACTION": "Keine Interaktionen verfügbar",
-    "ACCOUNTINGDOC": "Buchhaltung",
+    "ACCOUNTINGDOC": "Abrechnungsdokumente",
     "ADD_PRODUCTPRICELIST": "PRODUKT HINZUFÜGEN",
     "AGENTFULLNAME": "Agent",
     "ALL_COMPANIES": "Alle Unternehmen",
-    "ALL_PRODUCTS": "Alle",
-    "ALL_STATUS": "Alle",
-    "ALL_STEP": "Alle",
+    "ALL_PRODUCTS": "Alles",
+    "ALL_STATUS": "Alles",
+    "ALL_STEP": "Alles",
     "ALL_WORKFLOW": "Alle Arbeitsabläufe",
     "ATTENDACELASTINVOICE": "Letzte Rechnung",
     "ATTENDACENEXTINVOICE": "Nächste Rechnung",
     "AUTHORIZED": "AUTORISIERT",
     "AUTOINVOICE": "SELBSTABRECHNUNG",
     "AUTOPROFORMA": "SELBST-PROFORMA",
-    "BALANCE": "BALANCE",
+    "BALANCE": "SALDO",
     "BY": "Durch",
     "CLONEPROFORMA": "Klon",
     "COMPANIES": "Unternehmen",
     "DOSSIERS": "Dossiers",
     "DOSSIER_INFO": "Information",
     "ENDDATE": "Ablaufdatum",
-    "FROM": "Von",
+    "FROM": "von",
     "GRAPHINVOICES": "Diagramm der Rechnungsemission",
     "INASSET": "Kapital",
     "INVOICE": "RECHNUNG",
     "INVOICEPAYED": "Bezahlt",
     "INVOICES": "RECHNUNGEN",
     "INVOICESTATUS": "Status",
-    "INVOICETOTAL": "Insgesamt",
+    "INVOICETOTAL": "Gesamt",
     "INVOICE_INFO": "Rechnung",
     "MANAGESALES": "Abonnements",
     "MOVEASSET": "Kapital",
     "QUOTATIONSTATUS": "Status",
     "QUOTATIONSUBSCRIPTION": "Dauer",
     "QUOTATIONTAX": "MwSt",
-    "QUOTATIONTOTAL": "Insgesamt",
+    "QUOTATIONTOTAL": "Gesamt",
     "QUOTATIONTOTALPRICE": "Gesamt netto",
-    "QUOTATIONTOTALS": "Insgesamt",
+    "QUOTATIONTOTALS": "Gesamt",
     "QUOTATIONTOTALTAX": "Gesamtsteuer",
     "QUOTATIONUNIT": "Einheit",
     "QUOTATIONVAT": "VAT",
     "TOTALPAYMENTS": "Gesamtzahlungen",
     "UPDATED_AT": "Geändert am",
     "UPDATE_PRODUCT": "Produkt aktualisieren",
-    "WORKFLOW": "Wählen Sie einen Arbeitsablauf",
+    "WORKFLOW": "Arbeitsablauf wählen",
     "YEARS": "Jahre",
     "CUSTOMER_IP": "Ursprüngliche IP-Adresse",
     "CUSTOMER_PORT": "Ursprünglicher TCP-Port",
     "ADVANCED_SEARCH": "Erweiterte Suche",
-    "AND": "Und",
+    "AND": "und",
     "APPLY": "Anwenden",
-    "CONTAINS": "Enthält",
+    "CONTAINS": "enthält",
     "DISABLED": "Deaktiviert",
     "ENABLED": "Aktiviert",
     "ENDING_DATE": "Enddatum",
     "ENDING_VALUE": "Endwert",
-    "ENDS_WITH": "Endet mit",
-    "EQUALS": "Gleich",
-    "IS_AMONG": "Ist unter",
-    "IS_BETWEEN": "Ist zwischen",
-    "IS_GREATER_THAN": "Ist größer als",
-    "IS_GREATER_THAN_OR_EQUAL_TO": "Ist größer oder gleich",
-    "IS_LESS_THAN": "Ist kleiner als",
-    "IS_LESS_THAN_OR_EQUAL_TO": "Ist kleiner oder gleich",
-    "IS_NOT_AMONG": "Ist nicht unter",
-    "IS_NOT_EQUAL": "Ist nicht gleich",
+    "ENDS_WITH": "endet mit",
+    "EQUALS": "gleich",
+    "IS_AMONG": "ist unter",
+    "IS_BETWEEN": "ist zwischen",
+    "IS_GREATER_THAN": "ist größer als",
+    "IS_GREATER_THAN_OR_EQUAL_TO": "ist größer oder gleich",
+    "IS_LESS_THAN": "ist kleiner als",
+    "IS_LESS_THAN_OR_EQUAL_TO": "ist kleiner oder gleich",
+    "IS_NOT_AMONG": "ist nicht innerhalb",
+    "IS_NOT_EQUAL": "ist nicht gleich",
     "MEET_ALL_CONDITIONS": "Alle Bedingungen erfüllen",
     "MEET_ANY_CONDITIONS": "Mindestens eine Bedingung erfüllen",
     "NEW_CONDITION": "Neue Bedingung",
     "SELECT_OPERATOR": "Operator auswählen",
     "STARTING_DATE": "Startdatum",
     "STARTING_VALUE": "Startwert",
-    "STARTS_WITH": "Beginnt mit",
+    "STARTS_WITH": "beginnt mit",
     "VALUE": "Wert",
     "VALUES": "Werte",
     "VALUE_RANGE_CHECK": "Wert muss größer sein als",
-    "CHOOSE": "Wählen",
+    "CHOOSE": "Auswählen",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
     "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "SELECT_QUEUE": "Wählen Sie eine Warteschlange aus",
+    "SELECT_QUEUE": "Warteschlange auswählen",
     "VIDAOOSESSION": "Videoanruf starten",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPP_INTERACTIONS": "WhatsApp Connector-Interaktionen",
+    "WHATSAPP_INTERACTIONS": "WhatsApp-Interaktionen",
     "LAST_UPDATED": "Zuletzt aktualisiert",
     "MATCHING_FIELD": "Übereinstimmendes Feld",
     "MULTIPLE_CONTACTS_FOUND": "Mehrere Kontakte für Nummer gefunden",
-    "SELECT": "Wählen",
+    "SELECT": "Auswählen",
     "SELECT_CONTACT": "Kontakt auswählen",
-    "WHICH_ONE_TO_USE": "Welches möchten Sie verwenden?",
+    "WHICH_ONE_TO_USE": "Welcher Eintrag soll verwendet werden?",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Kein WhatsApp-Konto verfügbar",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
     "LICENSE_EXPIRE_REMAINING_DAYS": "Ihre Lizenz läuft bald ab! Bitte wenden Sie sich an Ihren Administrator",
     "CREATEDAT": "Hergestellt in",
     "ELAPSED_ANSWERED": "Verstrichene Zeit seit dem Start des Anrufs",
     "ELAPSED_DISPOSED": "Verstrichene Zeit seit Beendigung des Anrufs",
-    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte überprüfe deine Internetverbindung.",
+    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte Internetverbindung prüfen.",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "AUTOCLOSE": "Schließen Sie die Kontaktlasche nach der Entsorgung automatisch",
-    "AGENT_PRESENCE": "Agentenpräsenz",
-    "SELECT_TEAM": "Team auswählen",
-    "AVAILABLE": "Erhältlich"
+    "AUTOCLOSE": "Tab nach Qualifizierung automatisch schließen",
+    "AGENT_PRESENCE": "Bereitschaftsstatus",
+    "SELECT_TEAM": "Team auswählen"
   }
 }
index 4b2f44e..fd1c6a8 100644 (file)
@@ -1,83 +1,83 @@
 {
   "MAIL": {
     "TEXT": "Text",
-    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
+    "TIMES": "Zeitstempel",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "SHOW_AUTOREPLY": "Die automatische Antwort anzeigen",
+    "SHOW_AUTOREPLY": "Automatische Antwort anzeigen",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
-    "TO": "Zu",
+    "TO": "An",
     "FROM": "Von",
     "DATE": "Datum",
-    "CC": "Cc",
-    "REPLY": "Antwort",
+    "CC": "CC",
+    "REPLY": "Antworten",
     "REPLY_ALL": "Allen antworten",
-    "FORWARD": "Vorwärts",
+    "FORWARD": "Weiterleiten",
     "SUBJECT": "Betreff",
-    "BCC": "Bcc",
+    "BCC": "BCC",
     "SEND": "Senden",
     "ATTACHMENT": "Anhang",
     "ATTACHMENTS": "Anhänge",
     "NAME": "Name",
     "MAILQUEUES": "E-Mail Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "SEARCH_FOR_ANYONE": "Suche",
     "STRATEGY": "Strategie",
     "ERRORS": {
-      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
-      "EMAIL_ADDRESS_REQUIRED": "Die E-Mail-Adresse ist erforderlich",
-      "EMAIL_ADDRESS_MUST_VALID": "Die E-Mail Adresse muss in einem gültigen Format",
-      "HOST_REQUIRED": "Der Host wird benötigt",
-      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
-      "PORT_REQUIRED": "Der Port ist erforderlich",
+      "TEXT_REQUIRED": "Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Agent Timeout ist erforderlich",
+      "EMAIL_ADDRESS_REQUIRED": "E-Mail-Adresse ist erforderlich",
+      "EMAIL_ADDRESS_MUST_VALID": "E-Mail ungültiges Format",
+      "HOST_REQUIRED": "Host wird benötigt",
+      "USERNAME_REQUIRED": "Benutzername ist erforderlich",
+      "PORT_REQUIRED": "Port ist erforderlich",
       "CONNTIMEOUT_REQUIRED": "Timeout der Verbindung ist erforderlich",
-      "AUTHTIMEOUT_REQUIRED": "Das Zeitlimit für die Authentifizierung erforderlich ist",
-      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "AGENT_REQUIRED": "Der Agent ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
-      "DISPOSITION_REQUIRED": "Die Disposition ist erforderlich",
-      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die wahre Priorität muss größer als oder gleich",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die falsche Priorität muss größer als oder gleich",
-      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Priorität muss größer als oder gleich",
-      "QUEUE_REQUIRED": "Die Warteschlange ist erforderlich",
-      "LIST_REQUIRED": "Die Liste ist erforderlich",
-      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
-      "SERVICE_REQUIRED": "Der Dienst ist erforderlich,",
-      "IMAP_HOST_REQUIRED": "Der IMAP-Host wird benötigt",
-      "IMAP_PORT_REQUIRED": "Der IMAP-Anschluss erforderlich",
-      "SMTP_HOST_REQUIRED": "Der SMTP-Host ist erforderlich",
-      "SMTP_PORT_REQUIRED": "Der SMTP-Port ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter nicht übereinstimmen",
-      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
-      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
-      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "AUTHTIMEOUT_REQUIRED": "Zeitlimit für die Authentifizierung ist erforderlich",
+      "ACCEPTURL_MUST_VALID_URL": "URL ungültiges Format",
+      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "URL ungültiges Format",
+      "CLOSEURL_MUST_VALID_URL": "URL ungültiges Format",
+      "AGENT_REQUIRED": "Agent ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
+      "DISPOSITION_REQUIRED": "Qualifizierung ist erforderlich",
+      "CONDITION_REQUIRED": "Bedingung ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Falsche Priorität ist erforderlich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wahre Priorität muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Falsche Priorität muss größer oder gleich sein als",
+      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität muss größer oder gleich sein als",
+      "QUEUE_REQUIRED": "Warteschlange ist erforderlich",
+      "LIST_REQUIRED": "Liste ist erforderlich",
+      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
+      "SERVICE_REQUIRED": "Dienst ist erforderlich,",
+      "IMAP_HOST_REQUIRED": "IMAP-Host ist erforderlich",
+      "IMAP_PORT_REQUIRED": "IMAP-Port erforderlich",
+      "SMTP_HOST_REQUIRED": "SMTP-Host ist erforderlich",
+      "SMTP_PORT_REQUIRED": "SMTP-Port ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge haben von {{max}}",
+      "KEY_REQUIRED": "Schlüssel ist erforderlich",
+      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}}",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "FONT_SIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "REPLY_TYPE_REQUIRED": "Pflichtfeld"
@@ -93,9 +93,9 @@
     "MAILACCOUNTS": "E-Mail Konten",
     "EMAIL_ADDRESS": "E-Mail Adresse",
     "ADD_MAILACCOUNT": "E-Mail Konto hinzufügen",
-    "EDIT_MAILACCOUNT": "E-Mail-Konto bearbeiten",
-    "DELETE_MAILACCOUNT": "E-Mail-Konten löschen",
-    "DISPOSITIONS": "Bestimmungen",
+    "EDIT_MAILACCOUNT": "E-Mail Konto bearbeiten",
+    "DELETE_MAILACCOUNT": "E-Mail Konto löschen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "OTHERS": "Andere",
     "SERVICE": "Service",
     "CREATED_AT": "Erstellt am",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
+    "CLOSE": "Schließen",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
     "WHITELABEL": "White Label",
-    "SIGNATURE": "Unterschrift",
+    "SIGNATURE": "Signatur",
     "IMAP": "IMAP",
     "HOST": "Host",
     "USERNAME": "Benutzername",
-    "PORT": "Hafen",
+    "PORT": "Port",
     "MAILBOX": "Mailbox",
     "FILTER": "Filter",
     "CONNTIMEOUT": "Connection Timeout [sek]",
     "SMTP": "SMTP",
     "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "MAIL": "E-Mail",
-    "ID": "Id",
+    "ID": "ID",
     "TIMEOUT": "Timeout",
     "PASSWORD": "Passwort",
-    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail zur Verfügung Verfügungen",
-    "ADD_MAILDISPOSITION": "E-Mail hinzufügen Disposition",
-    "NEW_MAILDISPOSITION": "Neue E-Mail zur Verfügung",
-    "EDIT_MAILDISPOSITION": "Bearbeiten von E-Mail zur Verfügung",
-    "DELETE_MAILDISPOSITION": "Löschen von E-Mail zur Verfügung",
-    "MAILDISPOSITIONS": "E-Mail Verfügungen",
+    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail Qualifizierung verfügbar",
+    "ADD_MAILDISPOSITION": "Qualifizierung hinzufügen",
+    "NEW_MAILDISPOSITION": "Neue E-Mail Qualifizierung",
+    "EDIT_MAILDISPOSITION": "Qualifizierung bearbeiten",
+    "DELETE_MAILDISPOSITION": "Qualifizierung löschen",
+    "MAILDISPOSITIONS": "E-Mail Qualifizierungen",
     "NEW_MAILQUEUE": "Neue E-Mail Warteschlange",
-    "NEW_MAILACCOUNT": "Neue E-Mail Konto",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "NEW_MAILACCOUNT": "Neues E-Mail Konto",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "USERNAME": "Benutzername für die Authentifizierung verwendet werden",
-      "PASSWORD": "Kennwort für die Authentifizierung verwendet werden",
-      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zu Server",
-      "FONT_FAMILY": "Standardschriftfamilie",
+      "USERNAME": "Benutzername für die Authentifizierung",
+      "PASSWORD": "Passwort für die Authentifizierung",
+      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zum Server aufgebaut wird",
+      "FONT_FAMILY": "Standard-Schriften",
       "FONT_SIZE": "Standard Schriftgröße",
-      "MARK_AS_UNREAD": "Agent aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
-      "MANDATORYDISPOSITION": "Zwingende Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Anhalten, um zu verwenden, wenn die obligatorische Disposition aktiviert ist"
+      "MARK_AS_UNREAD": "Aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "TEAMADD_MAILQUEUE": "Team Chat Warteschlange hinzufügen",
-    "AGENTADD_MAILQUEUE": "Agent zu Chatten Warteschlange hinzufügen",
+    "OF": "von",
+    "TEAMADD_MAILQUEUE": "Team zur Warteschlange hinzufügen",
+    "AGENTADD_MAILQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "AGENT": "Agent",
     "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "DISPOSITION": "Disposition",
-    "GOTOIF": "GotoIf",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "DISPOSITION": "Qualifizierung",
+    "GOTOIF": "GoToIf",
     "EDIT_GOTOIF": "Bearbeiten GotoIf",
-    "CONDITION": "Zustand",
+    "CONDITION": "Bedingung",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "GOTOP": "GotoP",
     "VALUE": "Wert",
     "QUEUE": "Warteschlange",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "INTERACTIONS": "Wechselwirkungen",
-    "STARTEDAT": "Gestartet am",
+    "INTERACTIONS": "Interaktionen",
+    "STARTEDAT": "Startdatum",
     "CONTACT": "Kontakt",
     "CLOSEDAT": "Geschlossen",
-    "NOTES": "Hinweise",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "NOTES": "Anmerkungen",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
     "ACTIVE": "Aktiv",
-    "SECURE": "Sichere",
+    "SECURE": "Sicher",
     "AUTHENTICATION": "Authentifizierung",
     "SMTP_HOST": "SMTP-Host",
     "SMTP_PORT": "SMTP-Port",
     "IMAP_PORT": "IMAP-Port",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "SELECT_STATUS": "Status auswählen",
-    "OPENED": "Öffnen",
+    "OPENED": "Geöffnet",
     "CLOSED": "Geschlossen",
     "ALL": "Alle",
     "SELECT_ACCOUNT": "Konto auswählen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent E-Mail Warteschlange hinzufügen",
-    "VOICE": "Voice",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Channel öffnen",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "ACCOUNTS": "Konten",
-    "FULLNAME": "Voller Name",
-    "INTERNAL": "Interne",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "TOTAL": "Insgesamt",
-    "IN": "In",
-    "OUT": "Aus",
+    "WAITING": "Wartezustand",
+    "TOTAL": "Gesamt",
+    "IN": "Eingehend",
+    "OUT": "Ausgehend",
     "IMAP_STATUS": "IMAP-Status",
     "SMTP_STATUS": "SMTP-Status",
     "DISABLED": "Deaktiviert",
     "CONNECTED": "Verbunden",
-    "NEVER_VERIFIED": "Nie verifiziert",
+    "NEVER_VERIFIED": "Noch nicht verifiziert",
     "ERROR": "Fehler",
     "EDIT_ACCOUNT": "Konto bearbeiten",
-    "VERIFY_SMTP": "Überprüfen Sie die SMTP-",
+    "VERIFY_SMTP": "Bitte SMTP-Einstellungen prüfen",
     "VERIFIED": "Überprüft",
-    "VERIFYSMTP_MAILACCOUNT": "Überprüfen Sie die SMTP-",
-    "GOTOREALTIME_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
-    "GOTO_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
+    "VERIFYSMTP_MAILACCOUNT": "Bitte SMTP-Einstellungen prüfen",
+    "GOTOREALTIME_MAILACCOUNT": "Zum E-Mail-Konto Echtzeitmonitoring",
+    "GOTO_MAILACCOUNT": "Zum E-Mail Konto gehen",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
-    "AGENTSADD_QUEUE": "Agenten zu Warteschlange hinzufügen",
-    "INFO": "Info",
+    "IN_USE": "In Verwendung",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "INFO": "Information",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "In Echtzeit, E-Mail Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_MAILQUEUE": "Echtzeitmonitoring E-Mail Warteschlangen",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "SPYINTERACTION": "Spy",
+    "SPYINTERACTION": "Mithören",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Hinweis",
+    "NOTE": "Notiz",
     "TAGS": "Tags",
-    "INTERACTIONS_MAILACCOUNT": "Zu Wechselwirkungen gehen",
-    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
-    "PENDING": "Ausstehend",
-    "SEND_AS_PENDING": "Senden als Ausstehend",
-    "SEND_AND_CLOSE": "Senden und Schließen",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
-    "NEW_MAILCANNEDANSWER": "Neue vordefinierte Antowrt",
-    "ADD_MAILCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_MAILCANNEDANSWER": "Vordefiierte Antwort bearbeiten",
-    "DELETE_MAILCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "INTERACTIONS_MAILACCOUNT": "Zu den Interaktionen gehen",
+    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
+    "PENDING": "Warten auf Rückmeldung",
+    "SEND_AS_PENDING": "Senden und auf Rückmeldung warten",
+    "SEND_AND_CLOSE": "Senden und schließen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
+    "NEW_MAILCANNEDANSWER": "Neue Textvorlage",
+    "ADD_MAILCANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_MAILCANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_MAILCANNEDANSWER": "Textvorlage löschen",
     "SHOW_ORIGINAL_MESSAGE": "Ursprüngliche Nachricht anzeigen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "ACCEPTED": "Akzeptiert",
     "FONT_FAMILY": "Schriftfamilie",
     "FONT_SIZE": "Schriftgröße",
-    "MARK_AS_UNREAD": "als ungelesen markieren",
-    "ADD_MAILSUBSTATUS": "Unterstatus hinzufügen",
-    "DELETE_MAILSUBSTATUS": "Löschen",
-    "EDIT_MAILSUBSTATUS": "Bearbeiten",
-    "MAILSUBSTATUSES": "E-Mail-Unterstatus",
-    "NEW_MAILSUBSTATUS": "Neuer Unterstatus",
-    "SEND_AS": "Senden Als",
-    "COMMAND": "Befehl",
+    "MARK_AS_UNREAD": "Als ungelesen markieren",
+    "ADD_MAILSUBSTATUS": "SubStatus hinzufügen",
+    "DELETE_MAILSUBSTATUS": "SubStatus löschen",
+    "EDIT_MAILSUBSTATUS": "SubStatus bearbeiten",
+    "MAILSUBSTATUSES": "E-Mail SubStatus",
+    "NEW_MAILSUBSTATUS": "Neuer SubStatus",
+    "SEND_AS": "Senden als",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Etikett",
-    "AGENTTRANSFER": "Agentenübertragung",
-    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agentenübertragungen",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
-    "TRANSFER": "Transfer",
-    "AGENTADD_MAILACCOUNT": "Fügen Sie dem E-Mail-Konto Agent hinzu",
+    "TAG": "Tag",
+    "AGENTTRANSFER": "Weiterleitung Agent",
+    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agententransfer",
+    "QUEUETRANSFER": "Weiterleitung Warteschlange",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
+    "TRANSFER": "Weiterleitung",
+    "AGENTADD_MAILACCOUNT": "Agenten zum E-Mail Konto hinzufügen",
     "YOU_ARE_REGISTERED_AS_A": "Sie sind registriert als",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "CANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "MAILCANNEDANSWERS": "Vordefinierte Antworten",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "MAILCANNEDANSWERS": "E-Mail Textvorlagen",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "DOWNLOAD": "Herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
-    "ADVANCED": "Fortgeschritten",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Ohne Anhang herunterladen",
-    "DOWNLOAD_WITH_ATTACHMENT": "Download mit Anhang",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern sonst erforderlich",
+    "ADVANCED": "Erweitert",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung angehalten",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Herunterladen ohne Anhang",
+    "DOWNLOAD_WITH_ATTACHMENT": "Herunterladen inkl. Anhang",
     "LASTMESSAGE": "Letzte Nachricht",
     "REPLY_TYPE": "Antworttyp"
   }
index 235afae..97c6fe2 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "وصف",
     "DOWNLOAD_PLUGIN": "تنزيل المكون الإضافي",
     "DROP_TO_UPLOAD": "إسقاط للتحميل",
-    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 4MB",
     "EDITOR": "محرر",
     "EDIT_PLUGIN": "تحرير المكوّن الإضافي",
     "FINISH": "إنهاء",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 3bd5ad2..495ea1e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop til upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 4MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Afslut",
index f150ff2..054564e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschreibung",
     "DOWNLOAD_PLUGIN": "Plugin herunterladen",
     "DROP_TO_UPLOAD": "Hochladen",
-    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Plugin bearbeiten",
     "FINISH": "Fertig",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index a85d3cb..56d6276 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descripción",
     "DOWNLOAD_PLUGIN": "Descargar plugin",
     "DROP_TO_UPLOAD": "Suelta para subir",
-    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index bf299e5..0202268 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "شرح",
     "DOWNLOAD_PLUGIN": "دانلود پلاگین",
     "DROP_TO_UPLOAD": "قطره برای آپلود",
-    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 2 مگابایت",
+    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 4 مگابایت",
     "EDITOR": "ویرایشگر",
     "EDIT_PLUGIN": "ویرایش پلاگین",
     "FINISH": "پایان دادن",
index be3860b..b934012 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Kuvaus",
     "DOWNLOAD_PLUGIN": "Lataa laajennus",
     "DROP_TO_UPLOAD": "Pudota lähetettäväksi",
-    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 2 Mt",
+    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 4 Mt",
     "EDITOR": "toimittaja",
     "EDIT_PLUGIN": "Muokkaa lisäosaa",
     "FINISH": "Suorittaa loppuun",
index edbcd90..bbf8e7b 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "La description",
     "DOWNLOAD_PLUGIN": "Télécharger le plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 2 Mo",
+    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 4 Mo",
     "EDITOR": "Éditeur",
     "EDIT_PLUGIN": "Modifier le plugin",
     "FINISH": "terminer",
index c3cb181..d5a9a13 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "שמור",
     "INSTALLING": "התקנה",
     "DROP_TO_UPLOAD": "שחרר כדי להעלות",
-    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 4MB",
     "UPLOAD_PLUGIN": "יישום Plug-in להעלאות",
     "UPLOADING": "העלאה",
     "CREATED_AT": "נוצר ב-",
index 1170227..043d58e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "विवरण",
     "DOWNLOAD_PLUGIN": "प्लगइन डाउनलोड करें",
     "DROP_TO_UPLOAD": "अपलोड करने के लिए ड्रॉप",
-    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 2 एमबी",
+    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 4 एमबी",
     "EDITOR": "संपादक",
     "EDIT_PLUGIN": "प्लगइन संपादित करें",
     "FINISH": "समाप्त",
index c4fbe7e..86fb87a 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Deskripsi",
     "DOWNLOAD_PLUGIN": "Unduh plugin",
     "DROP_TO_UPLOAD": "Jatuhkan Untuk Mengunggah",
-    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Edit plugin",
     "FINISH": "Selesai",
index 68e0c53..212fdff 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Salva",
     "INSTALLING": "Installazione in corso",
     "DROP_TO_UPLOAD": "Trascina il file da caricare",
-    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Upload in corso",
     "CREATED_AT": "Creato il",
index 3fd4f57..190c600 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "説明",
     "DOWNLOAD_PLUGIN": "プラグインをダウンロード",
     "DROP_TO_UPLOAD": "アップロードするドロップ",
-    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 4MB",
     "EDITOR": "編集者",
     "EDIT_PLUGIN": "プラグインを編集",
     "FINISH": "フィニッシュ",
index 29c0869..a3774d1 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "기술",
     "DOWNLOAD_PLUGIN": "플러그인 다운로드",
     "DROP_TO_UPLOAD": "올리기",
-    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 4MB",
     "EDITOR": "편집자",
     "EDIT_PLUGIN": "플러그인 편집",
     "FINISH": "끝",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 154c0b7..aad4d13 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Apraksts",
     "DOWNLOAD_PLUGIN": "Lejupielādēt spraudni",
     "DROP_TO_UPLOAD": "Pārvelciet šeit, lai augšupielādētu",
-    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 4 MB",
     "EDITOR": "Redaktors",
     "EDIT_PLUGIN": "Rediģēt spraudni",
     "FINISH": "Pabeigt",
index 361f77e..0ab1946 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschrijving",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 4MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Bewerk plugin",
     "FINISH": "Af hebben",
index d49bd20..0fbd637 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Last ned plugin",
     "DROP_TO_UPLOAD": "Drop til opplasting",
-    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 4MB",
     "EDITOR": "Redaktør",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Bli ferdig",
index d694357..2bda13c 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Opis",
     "DOWNLOAD_PLUGIN": "Pobierz wtyczkę",
     "DROP_TO_UPLOAD": "Upuść, aby przesłać",
-    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 4 MB",
     "EDITOR": "Redaktor",
     "EDIT_PLUGIN": "Edytuj wtyczkę",
     "FINISH": "koniec",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index ac5383c..e93ddba 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descrição",
     "DOWNLOAD_PLUGIN": "Download do plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 4MB",
     "EDITOR": "editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index 39efe9f..534d51d 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Описание",
     "DOWNLOAD_PLUGIN": "Скачать плагин",
     "DROP_TO_UPLOAD": "Загрузить",
-    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 4MB",
     "EDITOR": "редактор",
     "EDIT_PLUGIN": "Изменить плагин",
     "FINISH": "Конец",
index 171327a..4085544 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivning",
     "DOWNLOAD_PLUGIN": "Hämta plugin",
     "DROP_TO_UPLOAD": "Släpp för att ladda upp",
-    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 4MB",
     "EDITOR": "Redaktör",
     "EDIT_PLUGIN": "Redigera plugin",
     "FINISH": "Avsluta",
index 4646459..0c17adc 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Açıklama",
     "DOWNLOAD_PLUGIN": "Eklentiyi indir",
     "DROP_TO_UPLOAD": "Yüklenmeye Bırak",
-    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 4MB",
     "EDITOR": "Editör",
     "EDIT_PLUGIN": "Eklentiyi düzenle",
     "FINISH": "Bitiş",
index 18246b8..ac2f84c 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下载插件",
     "DROP_TO_UPLOAD": "删除上传",
-    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 4MB",
     "EDITOR": "编辑",
     "EDIT_PLUGIN": "编辑插件",
     "FINISH": "完",
index 2956f0d..98dc201 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下載插件",
     "DROP_TO_UPLOAD": "刪除上傳",
-    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 4MB",
     "EDITOR": "編輯",
     "EDIT_PLUGIN": "編輯插件",
     "FINISH": "完",
index 0ef1225..d002733 100644 (file)
@@ -1,59 +1,59 @@
 {
   "OPENCHANNEL": {
     "TEXT": "Text",
-    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
+    "TIMES": "Zeitstempel",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
     "NAME": "Name",
-    "OPENCHANNELQUEUES": "Offener Kanal Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "OPENCHANNELQUEUES": "Warteschlangen offener Kanal",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
-      "MOTIONADDRESS_REQUIRED": "Die Adresse ist erforderlich",
-      "MOTIONADDRESS_MUST_VALID_URL": "Die Adresse muss in einem gültigen Format",
-      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "REPLYURI_REQUIRED": "Die Antwort URL ist erforderlich",
-      "REPLYURI_MUST_VALID_URL": "Die Antwort URL muss im gültigen Format geschrieben werden",
-      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
-      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
+      "TEXT_REQUIRED": "Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Agent Timeout ist erforderlich",
+      "MOTIONADDRESS_REQUIRED": "Adresse ist erforderlich",
+      "MOTIONADDRESS_MUST_VALID_URL": "Adresse ungültiges Format",
+      "ACCEPTURL_MUST_VALID_URL": "URL ungültiges Format",
+      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "URL ungültiges Format",
+      "CLOSEURL_MUST_VALID_URL": "URL ungültiges Format",
+      "REPLYURI_REQUIRED": "Antwort-URL ungültiges Format",
+      "REPLYURI_MUST_VALID_URL": "Antwort-URL ungültiges Format",
+      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
+      "CONDITION_REQUIRED": "Bedingung ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Falsche Priorität ist erforderlich",
       "AGENT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
-      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge haben von {{max}}",
+      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}}",
       "VALUE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
       "LIST_REQUIRED": "Pflichtfeld",
       "KEY_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "NAME_MUST_VALID_PATTERN": "Format ungültig",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID ist erforderlich",
-      "BOTNAME_REQUIRED": "Der Bot-Name ist erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Zugangsschlüssel geheim ist erforderlich",
+      "BOTNAME_REQUIRED": "Bot-Name ist erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Geheimer Schlüssel ist erforderlich",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
     "QUEUE": "Warteschlange",
-    "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_GOTO": "Bearbeiten Gehe zu",
-    "EDIT_NOOP": "Bearbeiten Noop",
-    "EDIT_GOTOIF": "Bearbeiten Gotoif",
+    "EDIT_AGENT": "Agenteb bearbeiten",
+    "EDIT_GOTO": "Gehe zu bearbeiten",
+    "EDIT_NOOP": "Noop bearbeiten",
+    "EDIT_GOTOIF": "GoToIf bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Zustand",
+    "CONDITION": "Bedingung",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "PRIORITY": "Priorität",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "ADD_OPENCHANNELQUEUE": "Fügen Sie im Offenen Kanal Warteschlange",
-    "EDIT_OPENCHANNELQUEUE": "Offener Kanal Warteschlange bearbeiten",
-    "DELETE_OPENCHANNELQUEUE": "Löschen der Warteschlange im Offenen Kanal",
-    "PENALTY": "Strafe",
+    "ADD_OPENCHANNELQUEUE": "Warteschlange offener Kanal hinzufügen",
+    "EDIT_OPENCHANNELQUEUE": "Warteschlange offener Kanal bearbeiten",
+    "DELETE_OPENCHANNELQUEUE": "Warteschlange offener Kanal löschen",
+    "PENALTY": "Verzögerung",
     "TEAMADD_OPENCHANNELQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_OPENCHANNELQUEUE": "Agent zur Warteschlange hinzufügen",
+    "AGENTADD_OPENCHANNELQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "OPENCHANNELACCOUNTS": "Offener Kanal Konten",
+    "OPENCHANNELACCOUNTS": "Konten offener Kanal",
     "MOTIONADDRESS": "Motion Adresse",
-    "ADD_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account hinzufügen",
-    "EDIT_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account bearbeiten",
-    "DELETE_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account löschen.",
+    "ADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
+    "EDIT_OPENCHANNELACCOUNT": "Konto offener Kanal bearbeiten",
+    "DELETE_OPENCHANNELACCOUNT": "Konto offener Kanal löschen",
     "API": "API",
-    "DISPOSITIONS": "Bestimmungen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
-    "SELECTED": "Ausgewählte",
+    "CLOSE": "Schließen",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
+    "SELECTED": "Ausgewählt",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "OPENCHANNEL": "Offener Kanal",
-    "ID": "Id",
+    "ID": "ID",
     "TIMEOUT": "Timeout",
-    "OPENCHANNELDISPOSITIONS": "Offener Kanal Verfügungen",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine offenen Kanal Dispositionen verfügbar",
-    "NEW_OPENCHANNELDISPOSITION": "Neue Offene Kanal inspektion",
-    "ADD_OPENCHANNELDISPOSITION": "Fügen Sie im Offenen Kanal inspektion",
-    "EDIT_OPENCHANNELDISPOSITION": "Bearbeiten Sie im Offenen Kanal inspektion",
-    "DELETE_OPENCHANNELDISPOSITION": "Löschen Sie im Offenen Kanal inspektion",
-    "NEW_OPENCHANNELQUEUE": "Neue Offene Kanal Warteschlange",
-    "NEW_OPENCHANNELACCOUNT": "Neue Open Channel Account",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "OPENCHANNELDISPOSITIONS": "Qualifizierungen offener Kanal",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
+    "NEW_OPENCHANNELDISPOSITION": "Neue Qualifizierung",
+    "ADD_OPENCHANNELDISPOSITION": "Qualifizierung offener Kanal hinzufügen",
+    "EDIT_OPENCHANNELDISPOSITION": "Qualifizierung bearbeiten",
+    "DELETE_OPENCHANNELDISPOSITION": "Qualifizierung löschen",
+    "NEW_OPENCHANNELQUEUE": "Neue Warteschlange offener Kanal",
+    "NEW_OPENCHANNELACCOUNT": "Neues Konto offener Kanal",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "REPLYURI": "Antwort URL",
     "RECEIVEURI": "Erhalten URL",
     "HELP": {
-      "RECEIVEURI": "Dies ist die automatisch generierte API-String müssen Sie die Nachrichten in Ihrem offenen Kanal zu erhalten von der externen Anwendung (POST-Methode verwendet werden muss). Drücken Sie die Zwischenablage, um Sie in die Zwischenablage zu kopieren.",
-      "REPLYURI": "Dies ist die URL der Offene Kanal wird beim Senden oder Beantworten von Nachrichten",
+      "RECEIVEURI": "Automatisch generierter API-String, um die Nachrichten über den offenen Kanal zu erhalten (POST-Methode). Zum Kopieren in die Zwischenablage klicken",
+      "REPLYURI": "URL des offenen Kanals zum Senden und Empfangen von Nachrichten",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "LIST": "Contact Manager Liste zu verknüpfen von Kontakten",
       "TOKEN": "Fügen Sie diese Eigenschaft als Abfragezeichenfolge in Ihrer Web-Service-URL hinzu. Weitere Informationen finden Sie im Dokument doc <a target = \"_ blank\" href = \"https://wiki.xcallymotion.com/display/XMV/New Channels Configuration Steps",
-      "MANDATORYDISPOSITION": "Zwingende Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
-      "WELCOMEMESSAGE": "Dies ist die erste Nachricht, die an das Schütz gesendet wird"
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+      "WELCOMEMESSAGE": "Willkommensnachricht beim Eintreffen der ersten Anfrage"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CONTACT": "Kontakt",
-    "STARTEDAT": "Gestartet am",
+    "STARTEDAT": "Startdatum",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Öffnen",
+    "OPENED": "Geöffnet",
     "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Wechselwirkungen",
+    "INTERACTIONS": "Interaktionen",
     "ALL": "Alle",
-    "SELECT_STATUS": "Wählen Sie einen Status",
+    "SELECT_STATUS": "Status auswählen",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Hinweise",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
-    "SELECT_ACCOUNT": "Wählen Sie ein Konto",
+    "DISPOSITION": "Qualifizierung",
+    "NOTES": "Anmerkungen",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "SELECT_ACCOUNT": "Konto auswählen",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "INFO": "Info",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "INFO": "Information",
     "KEY": "Schlüssel",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
+    "IN_USE": "In Verwendung",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Interne",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent zu Offenen Kanal Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "VOICE": "Voice",
+    "WAITING": "Wartezustand",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten, die Offenen Kanal Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "In Echtzeit, offenen Kanal Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Zum offener Kanal Echtzeitmonitoring",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Spy",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Wechselwirkungen gehen",
-    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
+    "SPYINTERACTION": "Mithören",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Interaktionen gehen",
+    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
     "DELETE": "Löschen",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
-    "NEW_OPENCHANNELCANNEDANSWER": "Neue vordefinierte Antwort",
-    "ADD_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort löschen",
-    "DELIVERYREPORTURL": "Zustellungsbericht-URL",
+    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
+    "NEW_OPENCHANNELCANNEDANSWER": "Neue Textvorlage",
+    "ADD_OPENCHANNELCANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_OPENCHANNELCANNEDANSWER": "Textvorlage löschen",
+    "DELIVERYREPORTURL": "URL für Zustellungsbericht",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
+    "INSERT_MESSAGE_HERE": "Textnachricht hier eingeben",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
-    "ADVANCED": "Fortgeschritten",
+    "ADVANCED": "Erweitert",
     "PROXY": "Proxy",
-    "TOKEN": "Zeichen",
+    "TOKEN": "Token",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Etikett",
-    "AGENTADD_OPENCHANNELACCOUNT": "Fügen Sie Agent zu Openchannel Account hinzu",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
-    "MAPKEY": "Karten Schlüssel",
+    "TAG": "Tag",
+    "AGENTADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
+    "MAPKEY": "MAP-KEY",
     "SEND": "Senden",
-    "TO": "Zu",
-    "AGENTTRANSFER": "Agent Transfer",
+    "TO": "An",
+    "AGENTTRANSFER": "Weiterleitung Agent",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
-    "TRANSFER": "Transfer",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "QUEUETRANSFER": "Weiterleitung Warteschlange",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
+    "TRANSFER": "Weiterleitung",
+    "CANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "OPENCHANNELCANNEDANSWERS": "Vordefinierte Antworten",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
-    "DIALOGFLOW": "Dialogablauf",
-    "EDIT_DIALOGFLOW": "Bearbeiten Sie die Dialogflow-Konfiguration",
+    "OPENCHANNELCANNEDANSWERS": "Textvorlagen offener Kanal",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern sonst erforderlich",
+    "DIALOGFLOW": "DialogFlow",
+    "EDIT_DIALOGFLOW": "DialogFlow bearbeiten",
     "LANGUAGE": "Sprache",
-    "WELCOMEMESSAGE": "Willkommen Messsage",
+    "WELCOMEMESSAGE": "Willkommensnachricht",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Bot-Name",
-    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
-    "LEXREGION": "Region",
-    "SECRETACCESSKEY": "Zugangsschlüssel geheim",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "BOTNAME": "Botname",
+    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
+    "LEXREGION": "Lex Region",
+    "SECRETACCESSKEY": "Geheimer Schlüssel",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme angehalten",
     "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterlagen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Hinweis"
+    "NOTE": "Notiz"
   }
 }
index b5e8a7a..ee88755 100644 (file)
 {
   "STAFF": {
     "CONTEXT": "Kontext",
-    "RINGINUSE": "Ring im Einsatz",
+    "RINGINUSE": "Innerhalb Verteilungsgrupppe",
     "USERS": "Benutzer",
     "AGENTS": "Agenten",
-    "TOGGLE_SIDENAV": "Um sidenav",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "TOGGLE_SIDENAV": "Navigationsleiste umschalten",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "MULTI_SELECT_TOGGLE": "Wählen Sie toggle multi",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
-    "SELECTED": "Ausgewählte",
+    "MULTI_SELECT_TOGGLE": "Mehrfachauswahl ja/nein",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählt",
     "DELETE_SELECTED": "Auswahl löschen",
     "EXPORT_SELECTED": "Auswahl exportieren",
     "ALL_USERS": "Alle Benutzer",
     "ALL_AGENTS": "Alle Agenten",
     "SORT": "Sortieren",
     "NAME": "Name",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger Name",
     "A_TO_Z": "(A bis Z)",
     "Z_TO_A": "(Z bis A)",
     "MORE": "Mehr",
     "DELETE_USER": "Benutzer löschen",
     "EDIT_USER": "Benutzer bearbeiten",
-    "DELETE_AGENT": "Bedienplatz löschen",
-    "EDIT_AGENT": "Agent bearbeiten",
+    "DELETE_AGENT": "Agenten löschen",
+    "EDIT_AGENT": "Agenten bearbeiten",
     "DELETE": "Löschen",
     "SAVE": "Speichern",
     "ADD_USER": "Benutzer hinzufügen",
     "ADD_AGENT": "AGENT HINZUFÜGEN",
-    "NO_RESULTS": "Keine Ergebnisse.",
+    "NO_RESULTS": "Keine Ergebnisse",
     "CLOSE_DIALOG": "Dialog schließen",
-    "NAME_REQUIRED": "Name (erforderlich).",
+    "NAME_REQUIRED": "Name (erforderlich)",
     "USERNAME": "Benutzername",
     "SHOW_ALL_FIELDS": "Alle Felder anzeigen",
     "PHONE_NUMBER": "Telefonnummer",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
     "ERRORS": {
-      "FULLNAME_REQUIRED": "Der Fullname ist erforderlich",
-      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
-      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
-      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
-      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
-      "ACCOUNTNAME_REQUIRED": "Der Account ist erforderlich.",
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "HOST_REQUIRED": "Der Host wird benötigt",
-      "CHATCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
-      "MAILCAPACITY_REQUIRED": "Die E-Mail Kapazität erforderlich ist",
-      "FAXCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
-      "SMSCAPACITY_REQUIRED": "Die SMS-Kapazität erforderlich ist",
-      "OPENCHANNELCAPACITY_REQUIRED": "Der Offene Kanal Kapazität erforderlich ist",
-      "SIPEXPIRES_REQUIRED": "Der SIP-Ablauf ist erforderlich",
-      "SIPPORT_REQUIRED": "Die SIP-Port erforderlich.",
-      "UNCONDITIONALNUMBER_REQUIRED": "Die Zielrufnummer ist erforderlich",
-      "NOREPLYNUMBER_REQUIRED": "Die Nummer ist keine Antwort erforderlich",
-      "BUSYNUMBER_REQUIRED": "Die besetzt ist erforderlich",
-      "USERNAME_MUST_VALID_PATTERN": "Der Benutzername muss gültige {{regex}}.",
-      "REMOTECONTROLPORT_REQUIRED": "Die Fernbedienung Anschluss erforderlich",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Chat Kapazität muss größer als oder gleich",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die E-Mail Kapazität muss größer als oder gleich",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Fax Kapazität muss größer als oder gleich",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der offene Kanal Kapazität muss größer als oder gleich",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "FULLNAME_REQUIRED": "Vollständiger Name ist erforderlich",
+      "USERNAME_REQUIRED": "Benutzername ist erforderlich",
+      "EMAIL_REQUIRED": "E-Mail ist erforderlich",
+      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
+      "ACCOUNTNAME_REQUIRED": "Konto ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "HOST_REQUIRED": "Host ist erforderlich",
+      "CHATCAPACITY_REQUIRED": "Kapazität Chat ist erforderlich",
+      "MAILCAPACITY_REQUIRED": "Kapazität E-Msil ist erforderlich",
+      "FAXCAPACITY_REQUIRED": "Kapazität Fax ist erforderlich",
+      "SMSCAPACITY_REQUIRED": "Kapazität SMS ist erforderlich",
+      "OPENCHANNELCAPACITY_REQUIRED": "Kapazität offener Kanal ist erforderlich",
+      "SIPEXPIRES_REQUIRED": "SIP-Ablaufdatum ist erforderlich",
+      "SIPPORT_REQUIRED": "SIP-Port ist erforderlich",
+      "UNCONDITIONALNUMBER_REQUIRED": "Zielrufnummer ist erforderlich",
+      "NOREPLYNUMBER_REQUIRED": "Nummer bei keiner Antwort ist erforderlich",
+      "BUSYNUMBER_REQUIRED": "Nummer bei Besetzt ist erforderlich",
+      "USERNAME_MUST_VALID_PATTERN": "Benutzername ungültig {{regex}}.",
+      "REMOTECONTROLPORT_REQUIRED": "Port für Remote ist erforderlich",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Chat muss größer oder gleich sein als",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität E-Mail muss größer oder gleich sein als",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Fax muss größer oder gleich sein als",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität offener Kanal muss größer oder gleich sein als",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "AUTOANSWERDELAY_REQUIRED": "Pflichtfeld",
       "MONITOREXTENSION_REQUIRED": "Pflichtfeld",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "DTLSCERTFILE_REQUIRED": "Pflichtfeld",
       "DTLSPRIVATEKEY_REQUIRED": "Pflichtfeld",
-      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten",
       "ALLOWCODECS_REQUIRED": "Pflichtfeld",
       "CRUDPERMISSIONS_REQUIRED": "Pflichtfeld",
       "USERPROFILE_REQUIRED": "Pflichtfeld",
-      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden",
+      "PASSWORD_OLDPASSWORD_MATCH": "Neues und altes Passwort dürfen nicht gleich sein",
       "CONFIRM_REQUIRED": "Pflichtfeld",
       "WHATSAPPCAPACITY_REQUIRED": "Pflichtfeld"
     },
     "ACCOUNT": "Konto",
-    "VOICE": "Voice",
+    "VOICE": "Anrufe",
     "CREATED_AT": "Erstellt am",
     "ROLE": "Rolle",
-    "PERSONAL_INFO": "Persönliche Infos",
+    "PERSONAL_INFO": "Persönliche Informationen",
     "DESCRIPTION": "Beschreibung",
-    "CHANGE_AVATAR": "Avatar ändern.",
+    "CHANGE_AVATAR": "Avatar ändern",
     "GENERAL": "Allgemein",
-    "INTERNAL": "Interne",
-    "TRANSPORT": "Verkehr",
+    "INTERNAL": "Intern",
+    "TRANSPORT": "Transport",
     "ALLOWCODECS": "Codecs erlaubt",
     "HELP": {
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen. Wenn Sie möchten, dass das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
-      "SIPEXPIRES": "Standardeinstellung: 120",
+      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen um das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall. Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
+      "SIPEXPIRES": "Standardeinstellung: 160",
       "SIPPORT": "Standardeinstellung: 5160",
-      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
-      "CHATCAPACITY": "Null bedeutet unbegrenzt.",
-      "MAILCAPACITY": "Null bedeutet unbegrenzt.",
-      "FAXCAPACITY": "Null bedeutet unbegrenzt.",
-      "SMSCAPACITY": "Null bedeutet unbegrenzt.",
-      "OPENCHANNELCAPACITY": "Null bedeutet unbegrenzt.",
-      "CALLGROUP": "Legt der Agent callgroup",
-      "PICKUPGROUP": "Definiert die Gruppen in denen der Agent Anrufe annehmen können",
+      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: eingehende Authentifizierung - Peer: für ausgehende Anrufe - Freund: Deckt beide Eigenschaften",
+      "CHATCAPACITY": "0 für unbegrenzt",
+      "MAILCAPACITY": "0 für unbegrenzt",
+      "FAXCAPACITY": "0 für unbegrenzt",
+      "SMSCAPACITY": "0 für unbegrenzt",
+      "OPENCHANNELCAPACITY": "0 für unbegrenzt",
+      "CALLGROUP": "Anrufgruppe",
+      "PICKUPGROUP": "Übernahmegruppe",
       "USERNAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "LAST_PASSWORD_RESET_AT": "Letztes Datum und Uhrzeit, zu der das Passwort geändert wurde. Wenn die Allgemeinen Einstellungen für Secure Suite aktiviert sind, läuft das Passwort nach 90 Tagen ab.",
       "DTLSCERTFILE": "Verknüpfen Sie mit dem gültigen TLS-Zertifikat (.crt-Datei). Standardwert: '/etc/pki/tls/certs/motion.crt'.",
       "DTLSPRIVATEKEY": "Verknüpfen Sie mit dem privaten Schlüssel des Zertifikats (.key-Datei). Standardwert: '/etc/pki/tls/private/motion.key'.",
       "SAVE_PERMISSIONS": "Jeder Abschnitt, der ausstehende Änderungen enthält, wird gespeichert",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Modul Tools verwaltet",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Werkzeuge-Modul verwaltet",
       "APIKEY": "Verwenden Sie die Schaltfläche \"API-Schlüsselmanager\" in der Symbolleiste, um diesen Schlüssel zu verwalten",
-      "ENABLEAUTOMATICSCREENRECORDING": "Die Funktionalität ist nur für Sprachkanäle verfügbar",
-      "BLOCKED": "Zugriff sperren / entsperren",
-      "DISABLED": "Zum Deaktivieren auswählen / Zum Reaktivieren deaktivieren",
-      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Kanalinteraktionen pro Agent (0 = unbegrenzt)",
+      "ENABLEAUTOMATICSCREENRECORDING": "Funktionalität ist nur für Sprachkanäle verfügbar",
+      "BLOCKED": "Zugriff sperren/entsperren",
+      "DISABLED": "Auswählen zum Aktivieren",
+      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Whatsapp-Interaktionen pro Agent (0 = unbegrenzt)",
       "MASK_SENSITIVE_DATA": "Maskieren Sie vertrauliche Daten in der gesamten Anwendung (z. B. Telefonnummern und E-Mail-Adressen).",
       "WSS_PORT": "Standard: 8089"
     },
-    "NEW_PASSWORD": "Neues Kennwort",
+    "NEW_PASSWORD": "Neues Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "CHANGE_PASSWORD": "Passwort ändern",
-    "CHANGEPASSWORD_AGENT": "Passwort ändern",
-    "CHANGEPASSWORD_USER": "Passwort ändern",
-    "CHANGEPASSWORD_TELEPHONE": "Passwort ändern",
-    "LOGININPAUSE": "Geben Sie Ihren Benutzernamen und Ihr Passwort In der Pause",
+    "CHANGEPASSWORD_AGENT": "Agent",
+    "CHANGEPASSWORD_USER": "Nutzer",
+    "CHANGEPASSWORD_TELEPHONE": "Telefon",
+    "LOGININPAUSE": "Pause nach Anmelden",
     "HOST": "Host",
     "NAT": "NAT",
-    "CHANSPY": "ChanSpy",
+    "CHANSPY": "Listen-In",
     "OTHER_CHANNELS": "Andere Kanäle",
-    "CHATCAPACITY": "Chat Kapazität",
-    "MAILCAPACITY": "E-Kapazität",
-    "FAXCAPACITY": "Fax Kapazität",
-    "SMSCAPACITY": "Sms-Kapazität",
-    "OPENCHANNELCAPACITY": "Offener Kanal Kapazität",
+    "CHATCAPACITY": "Kapazität Chats",
+    "MAILCAPACITY": "Kapazität E-Mail",
+    "FAXCAPACITY": "Kapazität Fax",
+    "SMSCAPACITY": "Kapazität SMSW",
+    "OPENCHANNELCAPACITY": "Kapazität offener Kanal",
     "MOTIONBAR": "Motion Bar",
     "SETTINGS": "Einstellungen",
-    "AUTOANSWER": "\"Autom. Antwort\"",
+    "AUTOANSWER": "Auto-Antwort",
     "ENABLESETTINGS": "Einstellungen aktivieren",
     "CALL_FORWARDING": "Anrufweiterleitung",
-    "UNCONDITIONAL": "Unbedingte",
-    "UNCONDITIONALNUMBER": "Uneingeschränkte Anzahl",
-    "NOREPLY": "Keine Antwort",
-    "NOREPLYNUMBER": "\"Keine Antwort\"-Nummer",
-    "BUSY": "Besetzt",
-    "BUSYNUMBER": "Nummer besetzt",
-    "REMOTE_CONTROL": "Fernbedienung",
-    "REMOTECONTROL": "Fernbedienung",
-    "REMOTECONTROLPORT": "Fernbedienung",
+    "UNCONDITIONAL": "Generell",
+    "UNCONDITIONALNUMBER": "Nummer Weiterleitung generell",
+    "NOREPLY": "Bei keiner Antwort",
+    "NOREPLYNUMBER": "Nummer Weiterleitung keine Antwort",
+    "BUSY": "Bei Besetzt",
+    "BUSYNUMBER": "Nummer Weiterleitung Besetzt",
+    "REMOTE_CONTROL": "Remote-Nebenstelle",
+    "REMOTECONTROL": "Remote-Nebenstelle",
+    "REMOTECONTROLPORT": "Port Remote-Nebenstelle",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP läuft [sec]",
+    "SIPEXPIRES": "SIP-Ablaufdatum",
     "SIPPORT": "SIP-Port",
-    "PENALTY": "Strafe",
+    "PENALTY": "Verzögerung",
     "ACCOUNTNAME": "Account Name",
     "ADD_TELEPHONE": "Telefon hinzufügen",
     "EDIT_TELEPHONE": "Telefon bearbeiten",
     "DELETE_TELEPHONE": "Telefon löschen",
     "TEAMS": "Teams",
     "DELETE_TEAM": "Team löschen",
-    "AGENTADD_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
-    "EDIT_TEAM": "Team bearbeiten.",
+    "AGENTADD_TEAM": "Agenten zu einem Team hinzufügen",
+    "EDIT_TEAM": "Team bearbeiten",
     "TYPE": "Typ",
-    "TELEPHONES": "Telefone",
-    "CALLERID": "Die Anrufer-ID",
-    "ENABLERECORDING": "Aktivieren der Aufzeichnung",
+    "TELEPHONES": "Telefonnummern",
+    "CALLERID": "Anrufer-ID",
+    "ENABLERECORDING": "Aufzeichnung aktiv",
     "STAFF": "Personal",
-    "ID": "Id",
+    "ID": "ID",
     "NEW_USER": "Neuer Benutzer",
     "NEW_AGENT": "Neuer Agent",
     "NEW_TELEPHONE": "Neues Telefon",
     "NEW_TEAM": "Neues Team",
     "ADD_TEAM": "Team hinzufügen",
-    "JOIN_QUEUE": "Melden Sie Warteschlange",
+    "JOIN_QUEUE": "In Warteschlange beitreten",
     "CAPACITY": "Kapazität",
     "AUTOINTERNAL": "Interne Nummer automatisch generieren",
-    "ADD_AGENT_TO_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
-    "TEAMADD_AGENT": "Agent zu Gruppe hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ADD_AGENT_TO_TEAM": "Agenten zum Team hinzufügen",
+    "TEAMADD_AGENT": "Zum Team hinzufügen",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "PERMISSIONS": "Berechtigungen",
-    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_MODULES_AVAILABLE": "Alle Module verfügbar",
-    "CALLGROUP": "Gruppenruf",
+    "CALLGROUP": "Gruppenanruf",
     "PICKUPGROUP": "Übernahmegruppe",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agent in der Warteschlange Kampagnen hinzufügen",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Agent Voice Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Agent zu chatten Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Agent Mail Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Agent sms-Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agent zu offenen Kanal Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Agent fax Warteschlangen hinzufügen",
-    "QUEUEADD_USER_VOICE_INBOUND": "Benutzer stimme Warteschlangen hinzufügen",
-    "QUEUEADD_USER_CHAT_INBOUND": "Benutzer zu chatten Warteschlangen hinzufügen",
-    "QUEUEADD_USER_MAIL_INBOUND": "Benutzer Mail Warteschlangen hinzufügen",
-    "QUEUEADD_USER_SMS_INBOUND": "Benutzer von SMS-Warteschlangen hinzufügen",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Benutzer zum offenen Kanal Warteschlangen hinzufügen",
-    "QUEUEADD_USER_FAX_INBOUND": "Benutzer fax Warteschlangen hinzufügen",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agenten hinzufügen - ausgehende Anrufe",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Agenten hinzufügen - eingehende Anrufe",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Agenten hinzufügen - Chat-Warteschlangen",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Agenten hinzufügen - E-Mail-Warteschlangen",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Agenten hinzufügen - SMS-Warteschlangen",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agenten hinzufügen - offener Kanal-Warteschlangen",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Agenten hinzufügen - Fax-Warteschlangen",
+    "QUEUEADD_USER_VOICE_INBOUND": "Nutzer hinzufügen - eingehende Anrufe",
+    "QUEUEADD_USER_CHAT_INBOUND": "Nutzer hinzufügen - eingehende Chats",
+    "QUEUEADD_USER_MAIL_INBOUND": "Nutzer hinzufügen - eingehende E-Mails",
+    "QUEUEADD_USER_SMS_INBOUND": "Nutzer hinzufügen - eingehende SMS",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Nutzer hinzufügen - eingehender offener Kanal",
+    "QUEUEADD_USER_FAX_INBOUND": "Nutzer hinzufügen - eingehende Faxe",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Queue Kampagnen",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Ausgewählte Warteschlange Kampagnen",
-    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Voice Warteschlangen",
-    "ALL_QUEUES_CHAT_INBOUND": "Alle Chat Warteschlangen",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Chat-warteschlangen",
-    "ALL_QUEUES_MAIL_INBOUND": "Alle E-Mail-Warteschlangen",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Mail Warteschlangen",
-    "ALL_QUEUES_SMS_INBOUND": "Alle SMS-Warteschlangen",
-    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte SMS-Warteschlangen",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle offenen Kanal Warteschlangen",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählten Offenen Kanal Warteschlangen",
-    "ALL_QUEUES_FAX_INBOUND": "Alle Fax Warteschlangen",
-    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Fax Warteschlangen",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Warteschlangen - ausgehende Anrufe",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Gewählte Warteschlangen - ausgehende Anrufe",
+    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen - eingehende Anrufe",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Warteschlangen - eingehende Anrufe",
+    "ALL_QUEUES_CHAT_INBOUND": "Alle Warteschlangen - Chat",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Warteschlangen - Chat",
+    "ALL_QUEUES_MAIL_INBOUND": "Alle Warteschlangen - E-Mail",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Warteschlangen - E-Mail",
+    "ALL_QUEUES_SMS_INBOUND": "Alle Warteschlangen - SMS",
+    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte Warteschlangen - SMS",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle Warteschlangen - offener Kanal",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählte Warteschlangen - offener Kanal",
+    "ALL_QUEUES_FAX_INBOUND": "Alle Warteschlangen - Fax",
+    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Warteschlangen - Fax",
     "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "Anzeigen Web Control",
+    "SHOWWEBCONTROL": "WebControl anzeigen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CALLFORWARDING": "Anrufweiterleitung",
-    "DND": "Während der Pause nicht stören",
-    "UNANSWEREDCALLBADGE": "Zeige unbeantwortete Anruf Abzeichen",
-    "ENABLEDTMFTONE": "Dtmf-Töne aktivieren",
-    "AUTOANSWERDELAY": "Auto Antwortverzögerung",
+    "DND": "Nicht stören",
+    "UNANSWEREDCALLBADGE": "Badge unbeantwortete Anrufe",
+    "ENABLEDTMFTONE": "DMFT-Töne aktivieren",
+    "AUTOANSWERDELAY": "Automatische Antwort nach",
     "ENCRYPTION": "Verschlüsselung",
     "CHANNELS": "Kanäle",
     "CHAT": "Chat",
-    "SMS": "Sms",
+    "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Benutzer in Warteschlange Kampagnen hinzufügen",
-    "MONITOREXTENSION": "Anrufe an die Nebenstelle des Benutzers aufzeichnen",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Nutzer zu Warteschlange für eingehende Anrufe hinzufügen",
+    "MONITOREXTENSION": "Nebenstelle des Nutzers aufzeichnen",
     "NO_PASSWORD_CHANGE": "Keine Passwortänderung",
     "SECURITY_SUITE": "Sicherheitssuite",
-    "LAST_PASSWORD_RESET_AT": "Letzte Passwort zurücksetzen um",
-    "SIP_WEBRTC": "Schluck",
-    "SETTINGS_WEBRTC": "die Einstellungen",
+    "LAST_PASSWORD_RESET_AT": "Passwort zuletzt zurückgesetzt am:",
+    "SIP_WEBRTC": "SIP/WebRTC",
+    "SETTINGS_WEBRTC": "Einstellungen",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "TLS-Zertifikat",
-    "DTLSPRIVATEKEY": "Der private Schlüssel des TLS-Zertifikats",
-    "EDITPERMISSIONS": "Bearbeiten von Berechtigungen",
-    "READANDEDIT": "Lesen, Bearbeiten",
-    "READANDEDITANDDELETE": "Lesen, Bearbeiten, Löschen",
-    "GENERAL_PERMISSIONS": "Allgemeines",
-    "ENABLEMESSENGER": "Aktivieren Sie den internen Messenger",
-    "OUTBOUNDPROXY": "Oubound-Proxy",
+    "DTLSPRIVATEKEY": "Privater Schlüssel des TLS-Zertifikats",
+    "EDITPERMISSIONS": "Berechtigungen verwalten",
+    "READANDEDIT": "Lesen und Bearbeiten",
+    "READANDEDITANDDELETE": "Lesen, Bearbeiten und Löschen",
+    "GENERAL_PERMISSIONS": "Allgemein",
+    "ENABLEMESSENGER": "Internen Messenger aktivieren",
+    "OUTBOUNDPROXY": "Outbound-Proxy",
     "PHONE": "Telefon",
     "MOBILE": "Handy, Mobiltelefon",
     "ALIAS": "Alias",
     "ENABLEJAWSINTEGRATION": "Jaws-Integration aktivieren",
     "PREFIXREQUIRED": "Präfix erforderlich",
-    "ENABLEVIDEORECORDING": "Aktiviere Videoaufnahme",
+    "ENABLEVIDEORECORDING": "Videoaufzeichnung aktivieren",
     "OLD_PASSWORD": "Altes Passwort",
     "ALL_CHATQUEUES": "Alle Chat-Warteschlangen",
     "ALL_CHATWEBSITES": "Alle Chat-Websites",
     "ALL_FAXACCOUNTS": "Alle Faxkonten",
-    "ALL_FAXQUEUES": "Alle Faxwarteschlangen",
+    "ALL_FAXQUEUES": "Alle Fax-Warteschlangen",
     "ALL_MAILACCOUNTS": "Alle E-Mail-Konten",
     "ALL_MAILQUEUES": "Alle E-Mail-Warteschlangen",
-    "ALL_OPENCHANNELACCOUNTS": "Alle offenen Channel-Konten",
-    "ALL_OPENCHANNELQUEUES": "Alle offenen Kanalwarteschlangen",
+    "ALL_OPENCHANNELACCOUNTS": "Alle offener Kanal-Konten",
+    "ALL_OPENCHANNELQUEUES": "Alle offener Kanal-Warteschlangen",
     "ALL_PROJECTS": "Alle Cally Square-Projekte",
     "ALL_QUEUECAMPAIGNS": "Alle Queue-Kampagnen",
     "ALL_SMSACCOUNTS": "Alle SMS-Konten",
     "SELECTED_CHATQUEUES": "Ausgewählte E-Mail-Warteschlangen",
     "SELECTED_CHATWEBSITES": "Ausgewählte Chat-Websites",
     "SELECTED_FAXACCOUNTS": "Ausgewählte Faxkonten",
-    "SELECTED_FAXQUEUES": "Ausgewählte Faxwarteschlangen",
+    "SELECTED_FAXQUEUES": "Ausgewählte Fax-Warteschlangen",
     "SELECTED_MAILACCOUNTS": "Ausgewählte E-Mail-Konten",
     "SELECTED_MAILQUEUES": "Ausgewählte Chat-Warteschlangen",
-    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offene Channel-Konten",
-    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanalwarteschlangen",
+    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offener Kanal-Konten",
+    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanal-Warteschlangen",
     "SELECTED_PROJECTS": "Ausgewählte Projekte von Cally Square",
     "SELECTED_QUEUECAMPAIGNS": "Ausgewählte Queue-Kampagnen",
     "SELECTED_SMSACCOUNTS": "Ausgewählte SMS-Konten",
     "SELECTED_SMSQUEUES": "Ausgewählte SMS-Warteschlangen",
-    "SELECTED_VOICEQUEUES": "Ausgewählte Sprachwarteschlangen",
+    "SELECTED_VOICEQUEUES": "Ausgewählte Anruf-Warteschlangen",
     "USERADD_CHATQUEUES": "Chat-Warteschlange zum Benutzer hinzufügen",
     "USERADD_CHATWEBSITES": "Chat-Website zum Benutzer hinzufügen",
     "USERADD_FAXACCOUNTS": "Faxkonto zum Benutzer hinzufügen",
-    "USERADD_FAXQUEUES": "Faxwarteschlange zum Benutzer hinzufügen",
+    "USERADD_FAXQUEUES": "Fax-Warteschlange zum Benutzer hinzufügen",
     "USERADD_MAILACCOUNTS": "E-Mail-Konto zum Benutzer hinzufügen",
     "USERADD_MAILQUEUES": "E-Mail-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELACCOUNTS": "Open Channel-Konto zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELQUEUES": "Open Channel-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELACCOUNTS": "Offener Kanal-Konto zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELQUEUES": "Offener Kanal-Warteschlange zum Benutzer hinzufügen",
     "USERADD_PROJECTS": "Cally Square-Projekt zum Benutzer hinzufügen",
     "USERADD_QUEUECAMPAIGNS": "Queue-Kampagne zum Benutzer hinzufügen",
     "USERADD_SMSACCOUNTS": "SMS-Konto zum Benutzer hinzufügen",
     "USERADD_SMSQUEUES": "SMS-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_VOICEQUEUES": "Sprachwarteschlange zum Benutzer hinzufügen",
-    "HOTDESK": "Heißer Schreibtisch",
+    "USERADD_VOICEQUEUES": "Anruf-Warteschlange zum Benutzer hinzufügen",
+    "HOTDESK": "Wechselnder Arbeitsplatz",
     "ADD_USERPROFILE": "Benutzerprofil hinzufügen",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "CLONE_USERPROFILE": "Benutzerprofil klonen",
     "CLOSE": "Schließen",
     "CONFIRM": "Bestätigen",
     "PERMISSIONS_SELECTED_RESOURCES": "Ausgewählte Ressourcen",
     "PERMISSIONS_SELECT_REPORT_TYPE": "Wählen Sie den Berichtstyp",
     "PERMISSIONS_SELECT_SECTION": "Wählen Sie einen Abschnitt aus",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Sie dürfen nicht auf den ausgewählten Bereich zugreifen",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Kein Zugriff auf den ausgewählten Bereich",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unbefugte Handlung",
-    "PERMISSIONS_WARNING_CLOSE": "Du hast nicht gespeicherte Änderungen. Möchten Sie den Vorgang wirklich ohne Speichern beenden?",
+    "PERMISSIONS_WARNING_CLOSE": "Es wurden Änderungen nicht gespeichert. Fortfahren?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Alle {{sectionName}} Unterabschnitte und ihre Ressourcen werden aktiviert. Sind Sie sicher, dass Sie fortfahren möchten?",
-    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
+    "QUEUES_ASSOCIATION": "{{channel}} Warteschlangen-Zuweisung",
     "READ_PERMISSION": "Lesen",
     "REPORT_TYPE": "Berichtstyp",
     "SECTIONS": "Abschnitte",
     "SUMMARY": "Zusammenfassung",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "USERPROFILE": "Benutzerprofil",
     "USERPROFILES": "Benutzerprofil",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Sie dürfen die Ressource nicht erstellen",
-    "VIDEOSUPPORT": "Video-Unterstützung",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Keine Berechtigung zum Erstellen der Ressource",
+    "VIDEOSUPPORT": "Unterstützt Video",
     "APIKEY": "API-Schlüssel",
     "APIKEYMANAGER_USER": "API Key Manager",
-    "GENERATE": "(Regenerieren",
+    "GENERATE": "Erneut generieren",
     "MANAGE_API_KEY": "API-Schlüsselmanager",
-    "REMOVE": "Löschen",
-    "ENABLEAUTOMATICSCREENRECORDING": "Aktivieren Sie die automatische Bildschirmaufnahme",
-    "ENABLESCREENRECORDINGBYAGENT": "Aktivieren Sie die Bildschirmaufzeichnung nach Agent",
-    "ENABLEVIDEOECORDING": "Videoaufnahme aktivieren",
+    "REMOVE": "Entfernen",
+    "ENABLEAUTOMATICSCREENRECORDING": "Automatische Bildschirmaufzeichnung aktivieren",
+    "ENABLESCREENRECORDINGBYAGENT": "Bildschirmaufzeichnung durch Agenten aktivieren",
+    "ENABLEVIDEOECORDING": "Videoaufzeichnung aktivieren",
     "BLOCKED": "Gesperrt",
     "DISABLED": "Deaktiviert",
-    "REGENERATE": "Regenerieren",
+    "REGENERATE": "Erneut generieren",
     "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-Konten",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-Warteschlangen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agent zu WhatsApp-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agenten zu WhatsApp-Warteschlangen hinzufügen",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Benutzer zu WhatsApp-Warteschlangen hinzufügen",
     "SELECTED_QUEUES_WHATSAPP_INBOUND": "Ausgewählte WhatsApp-Warteschlangen",
     "SELECTED_WHATSAPPACCOUNTS": "Ausgewählte WhatsApp-Konten",
     "SELECTED_WHATSAPPQUEUES": "Ausgewählte WhatsApp-Warteschlangen",
     "USERADD_WHATSAPPACCOUNTS": "WhatsApp-Konto zum Benutzer hinzufügen",
-    "USERADD_WHATSAPPQUEUES": "Fügen Sie dem Benutzer die Whataspp-Warteschlange hinzu",
+    "USERADD_WHATSAPPQUEUES": "Whataspp-Warteschlange dem Benutzer hinzufügen",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPPCAPACITY": "WhatsApp Connector-Kapazität",
+    "WHATSAPPCAPACITY": "Kapazität Whatsapp",
     "MASK_SENSITIVE_DATA": "Sensitive Daten maskieren",
     "WSS_PORT": "WSS-Port",
     "ATTACHMENTS": "Anhänge",
     "CALLYSQUARE_RECORDINGS": "Cally Square-Aufnahmen",
-    "CONTACT_MANAGER_LISTS": "Kontaktmanagerlisten",
+    "CONTACT_MANAGER_LISTS": "Kontaktmanager Listen",
     "DOWNLOADS": "Downloads",
     "DOWNLOAD_PERMISSIONS": "Download-Berechtigungen",
     "JSCRIPTY_SESSIONS": "Jscripty-Sitzungen",
     "OMNICHANNEL_INTERACTIONS": "Omnichannel-Interaktionen",
-    "SCREEN_RECORDINGS": "Bildschirmaufnahmen",
-    "VOICE_RECORDINGS": "Sprachaufnahmen"
+    "SCREEN_RECORDINGS": "Bildschirmaufzeichnungen",
+    "VOICE_RECORDINGS": "Sprachaufzeichnungen"
   }
 }
index 6207bf0..d62768d 100644 (file)
     "BOT": "Voicebot",
     "CALL": "Anruf",
     "NAME": "Name",
-    "TRUNKS": "Amtsleitungen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "TRUNKS": "Trunks",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "HOST_REQUIRED": "Der Host wird benötigt",
-      "DEFAULTUSER_REQUIRED": "Der Standardbenutzer ist erforderlich",
-      "CALLERID_REQUIRED": "Die Anrufer-ID ist erforderlich",
-      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Kennwörter nicht übereinstimmen",
-      "VALIDITYSTART_REQUIRED": "Die Startzeit ist erforderlich",
-      "VALIDITYEND_REQUIRED": "Das Ende der Zeit ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "HOST_REQUIRED": "Host wird benötigt",
+      "DEFAULTUSER_REQUIRED": "Standardbenutzer ist erforderlich",
+      "CALLERID_REQUIRED": "Anrufer-ID ist erforderlich",
+      "KEY_REQUIRED": "Schlüssel ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "VALIDITYSTART_REQUIRED": "Startzeit ist erforderlich",
+      "VALIDITYEND_REQUIRED": "Endzeit ist erforderlich",
       "MONTHDAY_REQUIRED": "Tag des Monats ist erforderlich",
-      "HOUR_REQUIRED": "Die Stunde ist erforderlich",
-      "CONTENT_REQUIRED": "Der Inhalt ist erforderlich",
-      "URL_REQUIRED": "Die URL ist erforderlich",
-      "URL_MUST_VALID_URL": "Die URL muss gültig sein",
-      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
-      "ARGUMENTS_REQUIRED": "Die Argumente sind erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
-      "POLLING_INTERVAL_REQUIRED": "Das Abfrageintervall ist erforderlich",
-      "TITLE_REQUIRED": "Der Titel ist erforderlich",
-      "EMAILADDRESS_REQUIRED": "Die E-Mail Adresse ist erforderlich",
-      "EVENTVARIABLES_REQUIRED": "Pflichtfeld",
-      "TYPE_REQUIRED": "Pflichtfeld",
-      "VALUE_REQUIRED": "Pflichtfeld",
-      "ACCOUNT_REQUIRED": "Pflichtfeld",
-      "FIELD_REQUIRED": "Pflichtfeld",
-      "INTEGRATION_REQUIRED": "Pflichtfeld",
-      "LIST_REQUIRED": "Pflichtfeld",
-      "TEMPLATE_REQUIRED": "Pflichtfeld",
-      "AUTOCREATECONTACT_REQUIRED": "Pflichtfeld",
-      "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
-      "QUEUE_REQUIRED": "Pflichtfeld",
-      "TIME_RANGE_TO_REQUIRED": "Pflichtfeld",
-      "WEEK_DAYS_TO_REQUIRED": "Pflichtfeld",
-      "MONTH_DAYS_TO_REQUIRED": "Pflichtfeld",
-      "MONTH_TO_REQUIRED": "Pflichtfeld",
+      "HOUR_REQUIRED": "Stunde ist erforderlich",
+      "CONTENT_REQUIRED": "Inhalt ist erforderlich",
+      "URL_REQUIRED": "URL ist erforderlich",
+      "URL_MUST_VALID_URL": "URL ungültiges Format",
+      "APPLICATION_REQUIRED": "Anwendung ist erforderlich",
+      "ARGUMENTS_REQUIRED": "Bedingungen sind erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Name ungültiges Format",
+      "POLLING_INTERVAL_REQUIRED": "Abfrageintervall ist erforderlich",
+      "TITLE_REQUIRED": "Titel ist erforderlich",
+      "EMAILADDRESS_REQUIRED": "E-Mail Adresse ist erforderlich",
+      "EVENTVARIABLES_REQUIRED": "Variablen sind erforderlich",
+      "TYPE_REQUIRED": "Typ ist erforderlich",
+      "VALUE_REQUIRED": "Wert ist erforderlich",
+      "ACCOUNT_REQUIRED": "Konto ist erforderlich",
+      "FIELD_REQUIRED": "Feld ist erforderlich",
+      "INTEGRATION_REQUIRED": "Integration ist erforderlich",
+      "LIST_REQUIRED": "Liste ist erforderlich",
+      "TEMPLATE_REQUIRED": "Vorlage ist erforderlich",
+      "AUTOCREATECONTACT_REQUIRED": "Kontakterstellung erforderlich",
+      "OUTBOUNDROUTE_REQUIRED": "Ausgehende Route erforderlich",
+      "QUEUE_REQUIRED": "Warteschlange erforderlich",
+      "TIME_RANGE_TO_REQUIRED": "Zeitintervall erforderlich",
+      "WEEK_DAYS_TO_REQUIRED": "Wochentage erforderlich",
+      "MONTH_DAYS_TO_REQUIRED": "Tage des Monats erforderlich",
+      "MONTH_TO_REQUIRED": "Monat erforderlich",
       "TIME_RANGE_FROM_INVALID": "Falsches Format",
       "TIME_RANGE_TO_INVALID": "Falsches Format",
-      "ACTION_REQUIRED": "Pflichtfeld",
-      "CONFIGURATION_REQUIRED": "Pflichtfeld",
-      "PROJECT_REQUIRED": "Pflichtfeld",
-      "LOCATION_REQUIRED": "Pflichtfeld",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "FONTSIZE_REQUIRED": "Pflichtfeld",
-      "PATH_REQUIRED": "Pflichtfeld",
-      "FORMAT_REQUIRED": "Pflichtfeld",
-      "REPORT_REQUIRED": "Pflichtfeld",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "REFRESH_REQUIRED": "Pflichtfeld",
-      "TITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
-      "NAME_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
-      "OUTPUT_REQUIRED": "Pflichtfeld",
-      "REPORTFOLDER_REQUIRED": "Pflichtfeld",
-      "REPORTSUBFOLDER_REQUIRED": "Pflichtfeld",
-      "REPORTTYPE_REQUIRED": "Pflichtfeld",
-      "AGENT_REQUIRED": "Pflichtfeld",
-      "INFO_REQUIRED": "Pflichtfeld",
-      "SCRIPT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "TIMEOUT_REQUIRED": "Pflichtfeld",
-      "AUTOCREATE_FIELD_REQUIRED": "Pflichtfeld"
+      "ACTION_REQUIRED": "Aktion erforderlich",
+      "CONFIGURATION_REQUIRED": "Konfiguration erforderlich",
+      "PROJECT_REQUIRED": "Projekt erforderlich",
+      "LOCATION_REQUIRED": "Standort erforderlich",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FONTSIZE_REQUIRED": "Schriftgröße erforderlich",
+      "PATH_REQUIRED": "Pfad erforderlich",
+      "FORMAT_REQUIRED": "Format erforderlich",
+      "REPORT_REQUIRED": "Report erforderlich",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "REFRESH_REQUIRED": "Aktualisieren erforderlich",
+      "TITLE_MAX_LENGTH": "Titel darf eine maximale Länge haben von {{max}} ",
+      "NAME_MAX_LENGTH": "Name darf eine maximale Länge haben von {{max}} ",
+      "OUTPUT_REQUIRED": "Ausgabe erforderlich",
+      "REPORTFOLDER_REQUIRED": "Ordner erforderlich",
+      "REPORTSUBFOLDER_REQUIRED": "Unterordner erforderlich",
+      "REPORTTYPE_REQUIRED": "Reporttyp erforderlich",
+      "AGENT_REQUIRED": "Agent erforderlich",
+      "INFO_REQUIRED": "Information erforderlich",
+      "SCRIPT_REQUIRED": "Skript erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_REQUIRED": "Timeout erforderlich",
+      "AUTOCREATE_FIELD_REQUIRED": "Automatisches Erstellen erforderlich"
     },
     "HOST": "Host",
-    "SECRET": "Geheimnis",
-    "DEFAULTUSER": "Default User",
+    "SECRET": "Secret",
+    "DEFAULTUSER": "Standardnutzer",
     "DESCRIPTION": "Beschreibung",
-    "ADD_TRUNK": "Amtsleitung hinzufügen",
+    "ADD_TRUNK": "Trunk hinzufügen",
     "HELP": {
-      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Anbieter.",
+      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Systemadministrator.",
       "HOST": "Die Domäne oder den Hostnamen für den Anbieter.",
       "DEFAULTUSER": "Authentifizierung Benutzernamen, wenden Sie sich an den Anbieter.",
       "CALLERID": "Die Anrufer-ID im Format \"name\" <Nummer>.",
-      "REGISTRY": "Die amtsleitung Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
-      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client). Einige Ziele können die obligatorische Identität Name anstatt nur die IP-Adresse.",
-      "FROMUSER": "Rovider wie ihr sie kennt. Dies ist der Benutzer, um anstelle der Anrufer-ID beim Tätigen von Anrufen zu anderen Peer (SIP-Proxy). Nur gültig für den Typ=peer.",
+      "REGISTRY": "Die SIP-Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
+      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client).",
+      "FROMUSER": "SIP-Nutzereinstellungen. Nur gültig für den Typ=peer.",
       "OUTBOUNDPROXY": "IP-Adresse oder DNS-SRV-Ressourceneintrag name (ausgenommen die _sip._udp-Präfix): SRV Name, den Hostnamen oder die IP-Adresse des ausgehenden SIP-Proxy. Senden Sie ausgehende Signale zu diesem Proxy und nicht direkt an die Geräte. Nur gültig für den Typ=peer.",
-      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten wir auf der anderen Seite.",
-      "CONTEXT": "Die nutzbaren Rahmen für den Trunk.",
-      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
-      "DTMFMODE": "Wie DTMF (Dual-Tone Multi-Frequency): RFC2833: Die Standardeinstellung, die DTMF gesendet mit RTP, aber außerhalb der Audio Stream. INBAND DTMF gesendet wird: Die in der Audio Stream des aktuellen Gesprächs, wird über die Lautsprecher hörbar. Erfordert eine hohe CPU-Last. INFO: Diese Methode ist zwar sehr zuverlässig, es ist nicht für alle TK-Anlagen und viele SIP-Trunk.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
+      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten.",
+      "CONTEXT": "Die nutzbaren Kontext für den Trunk.",
+      "TYPE": "Definiert die SIP-Rolle innerhalb der Anwendung. User: Authentifizierung für eingehende Verbindungen; Peer: für ausgehende Verbindungen - Freund: Beide Eigenschaften werden erfüllt",
+      "DTMFMODE": "Sendeart von DTMF-Tönen (Dual-Tone Multi-Frequency): RFC2833: Standardeinstellung, DMTF wird über RTP gesendet (außerhalb des Audiostreams) - INBAND DTMF wird innerhalb des Audiostreams gesendet, über die Lautsprecher hörbar. Erfordert eine höhere CPU-Last.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall. Wenn \"Nein\", ignoriert der Asterisk alle anderen Einstellungen und die nat=No.",
       "QUALIFY": "Legt fest, wann die SIP erreichbar ist.",
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz.",
-      "INSECURE": "Legt fest, wie Verbindungen mit Peer, dass unsichere Einstellungen.",
-      "CALL_LIMIT": "Die Anzahl der eingehenden und abgehenden Anrufe, die zu einer Zeit.",
-      "DIRECTMEDIA": "Sternchen standardmäßig versucht, die RTP-Stream direkt aus den Anrufer an den Angerufenen. Einige Geräte werden nicht unterstützt wird (vor allem, wenn einer von Ihnen hinter einem NAT-Gerät befindet). Die Standardeinstellung ist Ja. Wenn Sie alle Clients hinter einem NAT-Gerät befindet, oder aus einem anderen Grund nicht möchten, dass Sternchen in der Audiospur, können Sie diese ausschalten.",
-      "CALLCOUNTER": "Aktivieren Sie die Zähler auf Geräte.",
-      "ADD_PHONE_TO_URI": "Legen Sie fest, ob die Provider ';user=Telefon\" an den URL.",
-      "TRUST_REMOTE_PARTY_ID": "Wenn Remote-Party-ID definieren sollte.",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Status",
-      "ENCRYPTION": "Festlegen, ob die Remote-Party-ID gesendet werden soll (standardmäßig auf Nein).",
+      "INSECURE": "Erlaubt unsichere Einstellungen für peer",
+      "CALL_LIMIT": "Maximale Anzahl aller gleichzeitigen ein- und ausgehenden Anrufe",
+      "DIRECTMEDIA": "Der Asterisk versucht, den RTP-Stream im Standard direkt zwischen dem Anrufer und dem Angerufenen aufzubauen. Manche Geräte (z.B. Firewalls) unterstützen diese Funktion nicht. Daher kann hier eine Umstellung erfolgen.",
+      "CALLCOUNTER": "Aktivieren der Anrufzähler für die Geräte",
+      "ADD_PHONE_TO_URI": "Fügt im SIP den user=phone zur URL hinzu",
+      "TRUST_REMOTE_PARTY_ID": "Soll der URL der anderen Partei vertraut werden?",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Soll die ID der anderen Partei gesendet werden?",
+      "ENCRYPTION": "Legt fest, ob die Verbindung über SRTP verschlüsselt vorliegt. Sollte das peer kein SRTP unterstützen, werden Anrufe mit dem HANGUPCAUSE=58 beendet.",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Amtsleitungen conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
-      "EMAILADDRESS": "Sie können mehrere Adressen mit Kommata (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
+      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Trunks conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
+      "EMAILADDRESS": "Mehrere Adressen mit Komma getrennt eingeben: (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "EVENTVARIABLES": "Wenn aktiviert, Es fügt alle Event Variablen an die Url",
+      "EVENTVARIABLES": "Fügt die Event-Variablen der URL hinzu",
       "T38PT_UDPTL": "Es: Ja, Redundanz, maxdatagram = 400",
       "EMAILBCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
       "EMAILCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
-      "BODY": "Wenn nicht ausgefüllt, wird der Standardwert gesendet",
+      "BODY": "(RAW-JSON-Format) Wenn nicht ausgefüllt, wird der Standardwert verwendet",
       "INFO": "Titel einfügen",
       "SCRIPT": "Skript einfügen",
       "SCRIPT_INFO": "Fügen Sie eine Beschreibung für das Skript ein",
       "SCRIPT_TYPE": "Geben Sie eine Typologie für das Skript ein (zB curl, bash ...)",
-      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert gesendet",
-      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen und der Standardwert ist 5."
+      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert verwendet",
+      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen - Standardwert ist 5."
     },
     "EDIT_TRUNK": "Trunk bearbeiten",
-    "DELETE_TRUNK": "Löschen Sie Trunk",
+    "DELETE_TRUNK": "Trunk löschen",
     "CREATED_AT": "Erstellt am",
     "SETTINGS": "Einstellungen",
-    "ADVANCED": "Erweiterte",
+    "ADVANCED": "Erweitert",
     "OTHER": "Andere",
     "ACTIVE": "Aktiv",
     "CONTEXT": "Kontext",
-    "CALLERID": "Die Anrufer-ID",
+    "CALLERID": "Anrufer-ID",
     "TYPE": "Typ",
-    "DTMFMODE": "Mfv-Modus",
+    "DTMFMODE": "DTMF-Modus",
     "NAT": "NAT",
     "QUALIFY": "Qualifizieren",
     "ALLOWCODECS": "Codecs erlaubt",
     "INSECURE": "Unsicher",
     "REGISTRY": "Registrierung",
-    "DIRECTMEDIA": "Direkte Medien",
+    "DIRECTMEDIA": "Direct Media",
     "CALLCOUNTER": "Anrufzähler",
-    "FROMDOMAIN": "Aus der Domäne",
-    "FROMUSER": "Vom Benutzer",
-    "OUTBOUNDPROXY": "Ausgehender Proxy",
-    "ADD_PHONE_TO_URI": "Telefon hinzufügen, URL",
-    "TRUST_REMOTE_PARTY_ID": "Vertrauen Gegenstelle ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Senden einer Partner-ID Header",
+    "FROMDOMAIN": "From Domain",
+    "FROMUSER": "From Nutzer",
+    "OUTBOUNDPROXY": "Outbound Proxy",
+    "ADD_PHONE_TO_URI": "Telefon zur URL hinzufügen",
+    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Remote Party im Header senden",
     "ENCRYPTION": "Verschlüsselung",
-    "PORT": "Hafen",
-    "TRANSPORT": "Verkehr",
+    "PORT": "Port",
+    "TRANSPORT": "Transport",
     "SAVE": "Speichern",
     "VARIABLES": "Variablen",
     "ADD_VARIABLE": "Variable hinzufügen",
     "EDIT_VARIABLE": "Variable bearbeiten",
     "DELETE_VARIABLE": "Variable löschen",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "TAGS": "Tags",
-    "ADD_TAG": "Variable hinzufügen",
-    "EDIT_TAG": "Variable bearbeiten",
-    "DELETE_TAG": "Variable löschen",
+    "ADD_TAG": "Tag hinzufügen",
+    "EDIT_TAG": "Tag bearbeiten",
+    "DELETE_TAG": "Tag löschen",
     "PAUSES": "Pausen",
     "ADD_PAUSE": "Pause hinzufügen",
     "EDIT_PAUSE": "Pause bearbeiten",
     "DELETE_PAUSE": "Pause löschen",
-    "ADD_CANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_CANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_CANNEDANSWER": "Vordefinierte Antwort löschen",
+    "ADD_CANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_CANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_CANNEDANSWER": "Testvorlage löschen",
     "KEY": "Schlüssel",
     "VALUE": "Wert",
-    "SOUNDS": "Sounds",
-    "EDIT_SOUND": "Ton bearbeiten",
-    "DELETE_SOUND": "Sound löschen",
-    "FINISH": "Fertig stellen",
+    "SOUNDS": "Audiodateien",
+    "EDIT_SOUND": "Audiodatei bearbeiten",
+    "DELETE_SOUND": "Audiodatei löschen",
+    "FINISH": "Abschließen",
     "DROP_TO_UPLOAD": "Drop hochladen",
     "TRIGGERS": "Trigger",
-    "EDIT_TRIGGER": "Auslöser bearbeiten",
-    "DELETE_TRIGGER": "Auslöser löschen",
+    "EDIT_TRIGGER": "Trigger bearbeiten",
+    "DELETE_TRIGGER": "Trigger löschen",
     "ADD_TRIGGER": "Trigger hinzufügen",
     "DELETE": "Löschen",
-    "AUTOMATIONS": "Automatisierungen",
-    "EDIT_AUTOMATION": "Bearbeiten einer Automation",
+    "AUTOMATIONS": "Automation",
+    "EDIT_AUTOMATION": "Automation bearbeiten",
     "DELETE_AUTOMATION": "Automation löschen",
     "ADD_AUTOMATION": "Automation hinzufügen",
     "INTERVALS": "Intervalle",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_INTERVAL": "Intervall für Löschen.",
+    "DELETE_INTERVAL": "Intervall löschen",
     "ADD_INTERVAL": "Intervall hinzufügen",
     "TOOLS": "Werkzeuge",
-    "ID": "Id",
+    "ID": "ID",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Sound",
-    "UPLOAD_SOUND": "Werkzeuge",
+    "DOWNLOAD_SOUND": "Audiodatei herunterladen",
+    "UPLOAD_SOUND": "Audiodatei hochladen",
     "CHANNEL": "Kanal",
     "NEW_TRIGGER": "Neue Trigger",
     "GENERAL": "Allgemein",
     "STATUS": "Status",
     "CONDITIONS&ACTIONS": "Bedingungen und Aktionen",
-    "ALLCONDITIONS": "Alle diese Bedingungen erfüllen:",
-    "ANYCONDITIONS": "Treffen diese Voraussetzungen:",
-    "ACTIONS": "Aktionen:",
+    "ALLCONDITIONS": "Alle Bedingungen werden erfüllt",
+    "ANYCONDITIONS": "Einige Bedingungen werden erfüllt",
+    "ACTIONS": "Aktionen",
     "NEW_AUTOMATION": "Neue Automation",
     "TIMEOUT": "Timeout",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Anrufe beschränken",
-    "OTHERFIELDS": "Andere Felder",
+    "CALL_LIMIT": "Anrufe limitieren",
+    "OTHERFIELDS": "Weitere Felder",
     "NEW_VARIABLE": "Neue Variable",
     "NEW_TAG": "Neuer Tag",
     "NEW_PAUSE": "Neue Pause",
-    "NEW_CANNEDANSWER": "Neue vordefinierte Antwort",
+    "NEW_CANNEDANSWER": "Neue Textvorlage",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "NEW_TRUNK": "Neue Leitung",
-    "FROM": "Von",
-    "TO": "Zu",
-    "WEEKDAY": "Woche Tag",
-    "MONTHDAY": "Monat Tag",
+    "NEW_TRUNK": "Neuer Trunk",
+    "FROM": "von",
+    "TO": "an",
+    "WEEKDAY": "Wochentag",
+    "MONTHDAY": "Monatstag",
     "MONTH": "Monat",
     "ALWAYS": "Immer",
     "MON": "Montag",
     "PASSWORD": "Passwort",
     "CUSTOMDASHBOARDS": "Benutzerdefinierte Dashboards",
     "NEW_CUSTOMDASHBOARD": "Neues benutzerdefiniertes Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Hinzufügen von benutzerdefinierten Dashboard",
-    "EDIT_CUSTOMDASHBOARD": "Benutzerdefinierte Dashboards bearbeiten",
-    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen.",
-    "SCHEDULER": "Scheduler",
-    "NEW_SCHEDULE": "Neuer Zeitplan",
-    "ADD_SCHEDULE": "Zeitplan hinzufügen",
-    "EDIT_SCHEDULE": "Zeitplan bearbeiten",
-    "DELETE_SCHEDULE": "Zeitplan löschen",
+    "ADD_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard hinzufügen",
+    "EDIT_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard bearbeiten",
+    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen",
+    "SCHEDULER": "Berichtsplanung",
+    "NEW_SCHEDULE": "Neue Planung",
+    "ADD_SCHEDULE": "Planung hinzufügen",
+    "EDIT_SCHEDULE": "Planung bearbeiten",
+    "DELETE_SCHEDULE": "Planung löschen",
     "SENDMAIL": "E-Mail senden",
     "CONFIGURATION": "Konfiguration",
     "MAIL": "E-Mail",
     "REPORTTYPE": "Berichtstyp",
     "REPORT": "Bericht",
-    "OUTPUT": "Ausgang",
+    "OUTPUT": "Ausgabe",
     "EXECUTEON": "Ausführung",
-    "REPORTRANGE": "Berichtsbereich",
+    "REPORTRANGE": "Bereich",
     "VALIDITYSTART": "Startzeit",
     "VALIDITYEND": "Endzeit",
     "EXECUTEEVERY": "Alle ausführen",
     "MONTHLY": "Monatlich",
     "PREVIOUS_DAY": "Vorheriger Tag",
     "LAST_SEVEN_DAYS": "Letzte sieben Tage",
-    "LAST_THIRTY_DAYS": "33 verbotenen letzte Tage",
+    "LAST_THIRTY_DAYS": "Letzte 30 Tage",
     "LAST_MONTH": "Letzter Monat",
-    "WEEKDAYS": "Woche Tage",
+    "WEEKDAYS": "Wochentage",
     "HOUR": "Stunde",
     "DEFAULT": "Standard",
     "CSV": "CSV",
     "15MIN": "15 Minuten",
     "30MIN": "30 Minuten",
     "1H": "1 Stunde",
-    "VOICE": "Voice",
+    "VOICE": "Sprachanrufe",
     "CHAT": "Chat",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "ADD_ALLCONDITION": "Bedingung hinzufügen",
     "EDIT_ACTION": "Aktion bearbeiten",
     "DELETE_ACTION": "Aktion löschen",
-    "NEW_ACTION": "Neue Maßnahme",
+    "NEW_ACTION": "Neue Aktion",
     "ADD_ACTION": "Aktion hinzufügen",
     "QUEUE": "Warteschlange",
     "CALL_STATUS": "Anrufstatus",
-    "OUTBOUNDROUTE": "Abgehende Routen",
-    "EQUALS": "Ist gleich",
-    "NOT_EQUALS": "Nicht gleich",
-    "CONTACT_MANAGER": "Contacts Manager",
+    "OUTBOUNDROUTE": "Ausgehende Routen",
+    "EQUALS": "ist gleich",
+    "NOT_EQUALS": "ist nicht gleich",
+    "CONTACT_MANAGER": "Kontaktmanager",
     "INTEGRATIONS": "Integrationen",
     "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Weiterleitung",
-    "WEB_POPUP": "Web Popup",
+    "URL_FORWARD": "URL-Weiterleitung",
+    "WEB_POPUP": "Web-Popup",
     "LIST": "Liste",
     "INTEGRATION": "Integration",
     "TEMPLATE": "Vorlage",
     "OPERATOR": "Betreiber",
     "NO_INTERVALS_AVAILABLE": "Keine Intervalle zur Verfügung",
     "YES": "Ja",
-    "NO": "Keine",
+    "NO": "Nein",
     "SUBJECT": "Betreff",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "BROWSER": "Browser",
     "INTERVAL": "Intervall",
-    "INFO": "Info",
+    "INFO": "Information",
     "TIME_RANGE": "Zeitbereich",
-    "WEEK_DAYS": "Woche Tage",
-    "MONTH_DAYS": "Monat Tage",
+    "WEEK_DAYS": "Wochentage",
+    "MONTH_DAYS": "Monatstage",
     "MONTHS": "Monate",
-    "DROP_TO_UPLOAD_MESSAGE": "Sie können auch Audiodateien hier ablegen\" hochzuladen. Nur MP3-, WAV-, GSM-Max. 15 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Dateien hier hinein ziehen zum Hochladen. Unterstütze Formate: .mp3, .wav, .gsm; Max. Dateigröße: 15 MB",
     "POLLING_INTERVAL": "Abfrageintervall (Sekunden)",
-    "DASHBOARD": "Armaturenbrett",
-    "NEW_DASHBOARDITEM": "Neue Dashboard Widget",
+    "DASHBOARD": "Dashboard",
+    "NEW_DASHBOARDITEM": "Neues Dashboard-Widget",
     "COUNTER": "Zähler",
     "IFRAME": "IFrame",
     "CLOCK": "Uhr",
-    "ADD_DASHBOARDITEM": "Dashboard Widget hinzufügen",
-    "EDIT_WIDGET": "Bearbeiten Widget",
-    "DELETE_WIDGET": "Löschen Widget",
-    "FLIP_WIDGET": "Flip Widget",
+    "ADD_DASHBOARDITEM": "Dashboard-Widget hinzufügen",
+    "EDIT_WIDGET": "Widget bearbeiten",
+    "DELETE_WIDGET": "Widget löschen",
+    "FLIP_WIDGET": "Widget drehen",
     "TITLE": "Titel",
     "UPDATE": "Aktualisieren",
     "LAYOUT": "Layout",
     "FOREGROUND_COLOR": "Vordergrundfarbe",
     "FOREGROUND_TITLE_COLOR": "Vordergrund Titel Farbe",
     "THEME": "Thema",
-    "LIGHT": "Licht",
+    "LIGHT": "Hell",
     "DARK": "Dunkel",
     "TIMEZONE": "Zeitzone",
-    "DIGITAL_FORMAT": "Digitale Datum Format",
+    "DIGITAL_FORMAT": "Digitales Datumsformat",
     "TOOLS_QUERY": "Abfrage",
-    "SELECT": "Wählen Sie",
+    "SELECT": "Auswählen",
     "WHERE": "Wo",
     "BACK": "Zurück",
     "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "In Echtzeit, Trunk gehen",
-    "GOTO_TRUNK": "Um die Leitungsbündel gehen",
-    "CRON": "Cron",
+    "GOTOREALTIME_TRUNK": "Zum Echtzeitmonitoring SIP-Trunks gehen",
+    "GOTO_TRUNK": "Zum SIP-Trunk gehen",
+    "CRON": "CrOn",
     "MINUTES": "Minuten",
     "HOURLY": "Stündlich",
     "YEARLY": "Jährlich",
     "EVERY": "Jede",
     "MINUTE": "Minute",
-    "ON_SECOND": "Im 2.",
-    "HOUR_ON_MINUTE": "Stunde Minute",
-    "AND_SECOND": "Und 2.",
-    "DAY_AT": "Tag an",
+    "ON_SECOND": "Zur Sekunde",
+    "HOUR_ON_MINUTE": "Stunde zur Minute",
+    "AND_SECOND": "und Sekunde",
+    "DAY_AT": "Am Tag",
     "START_TIME": "Startzeit",
-    "ON_THE": "Auf der",
-    "OF_EVERY": "Jedes",
+    "ON_THE": "Am",
+    "OF_EVERY": "An jedem",
     "MONTH_AT": "Monat",
-    "AT": "An",
+    "AT": "Um",
     "LAST": "Letzte",
     "LASTUNIT": "Einheit",
     "MAILACCOUNT": "E-Mail Konto",
-    "OF": "Von",
+    "OF": "von",
     "PAST_THE_HOUR": "Nach der vollen Stunde",
     "DAY": "Tag",
     "WEEK": "Woche",
     "YEAR": "Jahr",
-    "ON": "Auf",
+    "ON": "Am",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OUTBOUND_ROUTE": "Abgehende Routen",
-    "EVENTVARIABLES": "Bei Variablen",
+    "OUTBOUND_ROUTE": "Ausgehende Routen",
+    "EVENTVARIABLES": "Event-Variablen",
     "FAX": "Fax",
     "INTERACTION": "Interaktion",
     "MESSAGE": "Nachricht",
     "T38PT_UDPTL": "T38 pt Udptl",
-    "AUTOCREATECONTACT": "Erstellen Sie automatisch",
+    "AUTOCREATECONTACT": "Automatische Kontakterstellung",
     "COLOR": "Farbe",
-    "LOCATION": "Lage",
-    "NEW_TAB": "Neue Registerkarte",
+    "LOCATION": "Standort",
+    "NEW_TAB": "Neuer Tab",
     "NEW_WINDOW": "Neues Fenster",
-    "WINDOWWIDTH": "Fenster Breite (px)",
+    "WINDOWWIDTH": "Fensterbreite (px)",
     "WINDOWHEIGHT": "Fensterhöhe (px)",
     "EDIT_DASHBOARDITEM": "Dashboard-Widget bearbeiten",
     "FONTSIZE": "Schriftgröße",
     "FOREGROUND": "Vordergrund",
     "NONE": "Keiner",
     "TOTAL": "Gesamt",
-    "ABANDONED": "Verlassen",
+    "ABANDONED": "Abgebrochen",
     "WAITING": "Warten",
-    "TALKING": "Reden",
-    "ANSWERED": "Antwortete",
-    "UNMANAGED": "Nicht verwaltet",
+    "TALKING": "im Gespräch",
+    "ANSWERED": "Beantwortet",
+    "UNMANAGED": "Nicht bearbeitet",
     "CUSTOMTYPE": "Benutzerdefiniert [Pfad]",
     "WEBREPORT": "Webbericht",
     "PIECHART": "Kuchendiagramm",
     "MULTIBARCHART": "Multibar-Diagramm",
     "MOVE_WIDGET": "Widget verschieben",
-    "USERADD_CUSTOMDASHBOARD": "Hinzufügen von Benutzerberechtigungen",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
+    "USERADD_CUSTOMDASHBOARD": "Berechtigungen hinzufügen",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Vorschau Dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Vorschau Dashboard",
     "METRIC": "Metrisch",
-    "FILTERVOICEQUEUES": "Voice-Warteschlangen filtern",
+    "FILTERVOICEQUEUES": "Anruf-Warteschlangen filtern",
     "SERIE1": "Serie 1",
     "SERIE2": "Serie 2",
     "SERIE3": "Serie 3",
     "ALL_USERS": "Alle Nutzer",
     "SELECTED_USERS": "Ausgewählte Benutzer",
     "ADD_WIDGET": "Widget hinzufügen",
-    "NEXTCONTACT": "Nächster",
+    "NEXTCONTACT": "Nächster Kontakt",
     "SENDIFEMPTY": "Senden, wenn leer",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "UPLOADING": "Hochladen",
-    "EMAILBCCADDRESS": "Bcc",
-    "EMAILCCADDRESS": "Cc",
-    "RUN_SCHEDULE": "Zeitplan ausführen",
-    "ADD_DISPOSITION": "Disposition hinzufügen",
-    "DELETE_DISPOSITION": "Disposition löschen",
-    "DISPOSITIONS": "Dispositionen",
-    "EDIT_DISPOSITION": "Disposition bearbeiten",
-    "NEW_DISPOSITION": "Neue Disposition",
-    "CLONE_TRUNK": "Klon-Trunk",
-    "BODY": "Karosserie",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "EMAILBCCADDRESS": "BCC",
+    "EMAILCCADDRESS": "CC",
+    "RUN_SCHEDULE": "Zeitplanung ausführen",
+    "ADD_DISPOSITION": "Qualifizierung hinzufügen",
+    "DELETE_DISPOSITION": "Qualifizierung löschen",
+    "DISPOSITIONS": "Qualifizierungen",
+    "EDIT_DISPOSITION": "Qualifizierung bearbeiten",
+    "NEW_DISPOSITION": "Neue Qualifizierung",
+    "CLONE_TRUNK": "Trunk klonen",
+    "BODY": "Textinhalt",
+    "CANNEDANSWERS": "Textvorlagen",
     "REPORTFOLDER": "Berichtsordner",
-    "REPORTSUBFOLDER": "Unterordner melden",
-    "PREVIOUSCONTACT": "Bisherige",
+    "REPORTSUBFOLDER": "Unterordner",
+    "PREVIOUSCONTACT": "Vorherigen Kontakt",
     "VIDEOSUPPORT": "Video-Unterstützung",
     "AGENT": "Agent",
     "HEADERS": "Überschriften",
     "SCRIPT": "Skript",
-    "SCRIPT_INFO": "Info",
+    "SCRIPT_INFO": "Information",
     "SCRIPT_TYPE": "Art",
     "MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\"",
     "WHATSAPP": "WhatsApp Connector",
     "AUTOCREATE_FIELD": "Feld automatisch erstellen",
-    "GLOBALS": "Globals",
+    "GLOBALS": "Globale Werte",
     "SEARCH_FIELDS": "Suchfelder",
     "STANDARD": "Standard",
     "MOTION_BAR": "Motion Bar",
     "ALL": "Alle",
-    "ALL_DISPOSITIONS": "Alle Dispositionen",
-    "FIRST_LEVEL_DISPOSITION": "First Level Disposition",
-    "LEVEL": "Niveau",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "SELECT_LEVEL": "Wählen Sie eine Ebene",
-    "TITLEFONTSIZE": "Schrifttitelgröße"
+    "ALL_DISPOSITIONS": "Alle Qualifizierungen",
+    "FIRST_LEVEL_DISPOSITION": "Qualifizierung der ersten Ebene",
+    "LEVEL": "Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "SELECT_LEVEL": "Ebene auswählen",
+    "TITLEFONTSIZE": "Schriftgröße Titel"
   }
 }
index bf0d36b..b0c7106 100644 (file)
@@ -20,6 +20,7 @@
     "LINK": "Link [https://]",
     "BACKGROUND": "Background",
     "FOREGROUND": "Foreground",
+    "IGNOREDIALERCONTACTID": "Ignore dialer contact Id",
     "NONE": "None",
     "TOTAL": "Total",
     "ABANDONED": "Abandoned",
@@ -74,6 +75,7 @@
       "TYPE_REQUIRED": "Mandatory field",
       "VALUE_REQUIRED": "Mandatory field",
       "ACCOUNT_REQUIRED": "Mandatory field",
+      "IGNOREDIALERCONTACTID_REQUIRED": "Ignore dialer contact Id field is required",
       "FIELD_REQUIRED": "Mandatory field",
       "NAME_REQUIRED": "Mandatory field",
       "HOST_REQUIRED": "Mandatory field",
index c6b75fe..1e98efe 100644 (file)
@@ -19,6 +19,7 @@
     "LINK": "Link [https://]",
     "BACKGROUND": "Background",
     "FOREGROUND": "Foreground",
+    "IGNOREDIALERCONTACTID": "Ignora il contact Id del dialer",
     "NONE": "Nessuno",
     "TOTAL": "Totale",
     "ABANDONED": "Abbandonate",
@@ -98,6 +99,7 @@
       "TYPE_REQUIRED": "Campo obbligatorio",
       "VALUE_REQUIRED": "Campo obbligatorio",
       "ACCOUNT_REQUIRED": "Campo obbligatorio",
+      "IGNOREDIALERCONTACTID_REQUIRED": "Campo obbligatorio",
       "FIELD_REQUIRED": "Campo obbligatorio",
       "TIME_RANGE_TO_REQUIRED": "Campo obbligatorio",
       "WEEK_DAYS_TO_REQUIRED": "Campo obbligatorio",
index 91d5165..254759d 100644 (file)
     "SERVICELEVEL": "مستوى الخدمة",
     "SECOND_LEVEL_DISPOSITION": "ترتيب المستوى الثاني",
     "THIRD_LEVEL_DISPOSITION": "الترتيب الثالث",
+    "TEAMADD_VOICEPREFIX": "أضف الفريق إلى البادئة",
     "ALIAS": "الاسم المستعار"
   }
 }
index 5fe900e..3f3b98d 100644 (file)
     "SERVICELEVEL": "Úroveň služby",
     "SECOND_LEVEL_DISPOSITION": "Dispozice druhé úrovně",
     "THIRD_LEVEL_DISPOSITION": "Dispozice třetí úrovně",
+    "TEAMADD_VOICEPREFIX": "Přidat tým k předponě",
     "ALIAS": "Alias"
   }
 }
index 67570a2..ea7f1fe 100644 (file)
     "SERVICELEVEL": "Serviceniveau",
     "SECOND_LEVEL_DISPOSITION": "Andet niveau disposition",
     "THIRD_LEVEL_DISPOSITION": "Tredje niveau disposition",
+    "TEAMADD_VOICEPREFIX": "Føj team til præfiks",
     "ALIAS": "Alias"
   }
 }
index c698d09..bd7bae8 100644 (file)
@@ -1,68 +1,68 @@
 {
   "VOICE": {
-    "GOTO_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
-    "GOTOREALTIME_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
+    "GOTO_VOICEQUEUE": "Zur Anruf-Warteschlange gehen",
+    "GOTOREALTIME_VOICEQUEUE": "Zur Echtzeitansicht Anruf-Warteschlange gehen",
     "NAME": "Name",
     "LOGOUT": "An-/Abmelden",
-    "VOICEQUEUES": "Voice Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "VOICEQUEUES": "Anruf-Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
-    "DELETE_VOICEDISPOSITION": "Disposition löschen",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Warteschlange",
-    "DELETE_VOICEQUEUE": "Warteschlange löschen",
-    "MOHSOUNDS": "Die MOH-Sounds",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
+    "DELETE_VOICEDISPOSITION": "Qualifizierung löschen",
+    "EDIT_VOICEDISPOSITION": "Qualifizierung bearbeiten",
+    "EDIT_VOICEQUEUE": "Anruf-Warteschlange bearbeiten",
+    "DELETE_VOICEQUEUE": "Anruf-Warteschlange löschen",
+    "MOHSOUNDS": "MOH-Töne",
     "STRATEGY": "Strategie",
     "DESCRIPTION": "Beschreibung",
-    "ADD_VOICEQUEUE": "Hinzufügen von Warteschlangen",
+    "ADD_VOICEQUEUE": "Warteschlangen hinzufügen",
     "CREATED_AT": "Erstellt am",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht gsm-Audiodateien",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht GSM-Audiodateien",
     "APPLICATIONS_LIST": "Liste der Anwendungen",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Benutzerdefinierte Anwendung."
     },
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "APPLICATION_NAME_REQUIRED": "Der Name der Anwendung ist erforderlich",
-      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
-      "PHONENUMBER_REQUIRED": "Die Telefonnummer ist erforderlich",
-      "CONTEXT_REQUIRED": "Der Rahmen ist erforderlich",
-      "DESTINATIONPATTERN_REQUIRED": "Das Ziel-pattern ist erforderlich",
-      "FULLNAME_REQUIRED": "Der vollständige Name ist erforderlich",
-      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
-      "MAILBOX_REQUIRED": "Die Mailbox ist erforderlich",
-      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
-      "TIMEZONE_REQUIRED": "Die Zeitzone ist erforderlich",
-      "PREFIX_REQUIRED": "Das Präfix ist erforderlich",
-      "OPTIONS_REQUIRED": "Die Optionen sind Erforderlich",
-      "AFTERCALLWORKDURATION_REQUIRED": "Die Arbeit nach Anruf Dauer ist erforderlich",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Die Technologie/Ressource erforderlich ist",
-      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
-      "VALUE_REQUIRED": "Der Wert ist erforderlich",
-      "EXTENSION_REQUIRED": "Die Verlängerung ist erforderlich",
-      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
-      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer als oder gleich",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Wiederholung muss größer als oder gleich",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Nachlese Zeit muss größer als oder gleich",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Gewicht muss größer als oder gleich",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Häufigkeit verkünden muss größer als oder gleich",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Min Frequenz ankündigen muss größer als oder gleich",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die periodische Frequenz ankündigen muss größer als oder gleich",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Arbeit nach Anruf Dauer muss größer als oder gleich",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Verzögerung muss größer als oder gleich",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Position muss größer als oder gleich",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den Schnitt stellen muss größer als oder gleich",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Muss die Max Sekunden größer als oder gleich",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Max Meldungen muss größer als oder gleich",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Max Meldungen muss kleiner als oder gleich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "APPLICATION_NAME_REQUIRED": "Name der Anwendung ist erforderlich",
+      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
+      "PHONENUMBER_REQUIRED": "Telefonnummer ist erforderlich",
+      "CONTEXT_REQUIRED": "Kontext ist erforderlich",
+      "DESTINATIONPATTERN_REQUIRED": "Ziel-Pattern ist erforderlich",
+      "FULLNAME_REQUIRED": "Vollständiger Name ist erforderlich",
+      "EMAIL_REQUIRED": "E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
+      "MAILBOX_REQUIRED": "Mailbox ist erforderlich",
+      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "TIMEZONE_REQUIRED": "Zeitzone ist erforderlich",
+      "PREFIX_REQUIRED": "Präfix ist erforderlich",
+      "OPTIONS_REQUIRED": "Bedingungen sind Erforderlich",
+      "AFTERCALLWORKDURATION_REQUIRED": "Dauer Nacharbeit ist erforderlich",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Ressource ist erforderlich",
+      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
+      "VALUE_REQUIRED": "Wert ist erforderlich",
+      "EXTENSION_REQUIRED": "Nebenstelle ist erforderlich",
+      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Format Name ungültig",
+      "APPLICATION_REQUIRED": "Anwendung ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer oder gleich sein als",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederversuche muss größer oder gleich sein als",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gewichtung muss größer oder gleich sein als",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Frequenz der Ansagen muss größer oder gleich sein als",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min. Frequenz der Ansagen muss größer oder gleich sein als",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederholende Frequenz der Ansagen muss größer oder gleich sein als",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Verzögerung muss größer oder gleich sein als",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Position muss größer oder gleich sein als",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Schnitt muss größer oder gleich sein als",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Sekundenmuss größer oder gleich sein als",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Nachrichten muss größer oder gleich sein als",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Nachrichten muss kleiner oder gleich sein als",
       "CALLERIDALL_MUST_VALID_PATTERN": "Falsches Format",
       "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
       "TRUNK_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "PROJECT_REQUIRED": "Pflichtfeld",
-      "PENALTY_REQUIRED": "Sie müssen einen Wert für die Strafe angeben"
+      "PENALTY_REQUIRED": "Wert für Verzögerung erforderlich"
     },
     "GENERAL": "Allgemein",
     "TIMEOUT": "Timeout",
     "MAXLENGTH": "Maximale Länge",
-    "RETRY": "Versuchen Sie es erneut",
-    "WRAPUPTIME": "-Zeit",
-    "WEIGHT": "Gewicht",
-    "JOINWHENEMPTY": "Melden Sie wenn sie leer sind",
-    "LEAVEWHENEMPTY": "Wenn sie leer lassen",
+    "RETRY": "Bitte erneut versuchen",
+    "WRAPUPTIME": "Nacharbeit",
+    "WEIGHT": "Gewichtung",
+    "JOINWHENEMPTY": "Beitreten, wenn leer",
+    "LEAVEWHENEMPTY": "Verlassen, wenn leer",
     "HELP": {
-      "TIMEOUT": "Gibt die Anzahl von Sekunden an, die das Gerät.",
-      "MAXLENGTH": "Gibt die maximale Anzahl der Anrufer, die in der Warteschlange. Ein Wert von Null bedeutet, dass eine unbegrenzte Anzahl von Anrufern in der Warteschlange sind erlaubt.",
-      "RETRY": "Gibt die Anzahl der Sekunden, die gewartet wird, bevor das nächste Mitglied in die Warteschlange, wenn der Wert für die Zeitüberschreitung erschöpft ist, während versucht wird, den ein Mitglied der Warteschlange.",
-      "WRAPUPTIME": "Die Anzahl der Sekunden, die ein Mitglied in einer Warteschlange verfügbar, nachdem Sie einen Anruf.",
-      "WEIGHT": "Legt das Gewicht einer Warteschlange. Eine Warteschlange mit einem höheren Gewicht definiert werden erste Priorität, wenn Mitglieder, die mit mehreren Warteschlangen.",
-      "JOINWHENEMPTY": "Steuert, ob ein Anrufer wird zur Warteschlange hinzugefügt werden, wenn keine Mitglieder verfügbar sind.",
-      "LEAVEWHENEMPTY": "Zur Kontrolle, ob die Anrufer aus der Warteschlange, wenn die Mitglieder nicht mehr bereit sind, Anrufe zu beantworten.",
-      "ANNOUNCEFREQUENCY": "Legt fest, wie oft sollten wir den Anrufer ankündigen und/oder geschätzte Wartezeit in der Warteschlange. Setzen Sie diesen Wert auf Null, um die Funktion zu deaktivieren.",
-      "MINANNOUNCEFREQUENCY": "Gibt die minimale Zeit, die verstreichen müssen, bevor wir Ihnen die Anrufer in der Warteschlange wieder. Dieser wird verwendet, wenn der Anrufer die Position kann sich häufig ändern, um zu verhindern, dass der Anrufer hören mehrere Updates in einem kurzen Zeitraum.",
-      "PERIODICANNOUNCEFREQUENCY": "Gibt an, wie oft wir sollten regelmäßige Ansagen, die dem Anrufer vorgespielt werden.",
-      "ANNOUNCEPOSITIONLIMIT": "Sie kann verwendet werden, wenn Sie definiert haben, verkünden-Position entweder als Begrenzung oder mehr.",
-      "AFTERCALLWORKDURATION": "Die Dauer der Pause durch die Option \"Arbeit nach Anruf",
-      "MEMBERDELAY": "Sie kann verwendet werden, wenn Sie wollen, dass es eine Verzögerung, bevor der Anrufer und Mitglied der Warteschlange, die miteinander verbunden sind.",
-      "MUSICONHOLD": "Setzt die Musik klasse verwendet werden, die von einer bestimmten Warteschlange an.",
-      "ANNOUNCETOAGENT": "Für die Wiedergabe einer Ansage auf den Agenten, der den Anruf entgegengenommen hat, ihn wissen zu lassen, was der Anrufer die Warteschlange aus.",
-      "RANDOMPERIODICANNOUNCE": "Falls auf Ja eingestellt, wird die festgelegte regelmäßige Mitteilungen in einer zufälligen Reihenfolge.",
-      "ANNOUNCEHOLDTIME": "Legt fest, ob die geschätzte Wartezeit gespielt werden sollte zusammen mit den regelmäßigen Ankündigungen.",
-      "ANNOUNCECALLERPOSITION": "Legt fest, ob es sich bei dem Anrufer seine Position in der Warteschlange mitgeteilt werden sollten. Wenn die Einstellung Nein lautet, die Position wird nicht bekannt gegeben. Falls auf Ja eingestellt, wird die Position des Anrufers wird immer bekannt gegeben. Wenn der Wert überschritten wird, wird der Anrufer hört ihre Position in der Warteschlange nur, wenn er sich innerhalb der Grenze von AK-Position. Wenn der Wert auf Mehr, hört der Anrufer ihre Position, wenn es über die Zahl von AK-Position.",
-      "REPORTHOLDTIMEAGENT": "Die Berichterstattung über die CLI des Anrufers mit der Zeit in der Warteschleife in der Warteschlange vor.",
-      "PERIODICANNOUNCE": "Eine Reihe von regelmäßigen Mitteilungen gespielt zu werden, in der Reihenfolge wiedergegeben, in der sie definiert sind.",
-      "HOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Hold\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "YOUARENEXTANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sie sind jetzt in erster Linie\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "THEREAREANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Es gibt\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "WAITINGCALLSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Wartende Anrufe\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Die voraussichtliche Wartezeit ist\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "MINUTESANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "MINUTEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "SECONDSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sekunden\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "THANKYOUANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Vielen Dank für Ihre Geduld.\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "AFTERCALLWORK": "Wenn der Agent aktiv ist, wird auf eine Pause nach einer abgeschlossenen Anruf in der Warteschlange",
-      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Unterbrechung der Mitglieder, die es versäumen, um einen Anruf zu beantworten. Wenn aktiv, wird diese Mitgliedstaaten angehalten zu werden in allen Warteschlangen er Mitglied ist.",
-      "RINGINUSE": "Verwendet werden, um zu vermeiden, Senden von Anrufen an Mitglieder, deren Status im Einsatz ist.",
-      "TIMEOUTRESTART": "Falls auf Ja eingestellt, wird das Timeout für einen Agenten zu beantworten, wenn entweder ein Besetztzeichen oder wird mit dem Status \"Überlastung des Kanals.",
-      "CONTEXT": "Ermöglicht einem Anrufer zu beenden, die die Warteschlange durch Drücken einer einzigen Taste MFV-Ziffer. Wenn Sie einen Kontext angegeben ist und der Anrufer gibt eine Zahl, Ziffer wird versuchen, die angepasst werden können, im Rahmen festgelegt, und es wird auch weiterhin die Ausführung Nummernplan.",
-      "SETINTERFACEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
-      "SETQUEUEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange und kurz vor dem Anrufer die Warteschlange verlassen einige Variablen werden(siehe wiki)",
-      "SETQUEUEENTRYVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
+      "TIMEOUT": "Zeitüberschreitung in Sekunden",
+      "MAXLENGTH": "Maximaler Anrufer in der Warteschlange. Wenn Wert 0, dann keine Begrenzung.",
+      "RETRY": "Klingelzeit in Sekunden pro Mitglied. Danach erfolgt ein weiterer Versuch bei der nächsten freien Nebenstelle.",
+      "WRAPUPTIME": "Nacharbeitszeit in Sekunden, bis ein Nutzer nach einem Anruf wieder verfügbar ist.",
+      "WEIGHT": "Gewichtung der Warteschlange. Ein höherer Wert bedeutet eine Priorisierung gegenüber anderen Warteschlangen.",
+      "JOINWHENEMPTY": "Legt fest, ob ein Anruf in die Warteschlange eintreten kann, wenn dort keine Nutzer angemeldet sind.",
+      "LEAVEWHENEMPTY": "Wirft den Anruf aus der Warteschlange, wenn dort kein Nutzer angemeldet ist.",
+      "ANNOUNCEFREQUENCY": "Intervall für automatische Ansagen der Wartezeit, Position, etc. Der Wert 0 deaktiviert diese Option.",
+      "MINANNOUNCEFREQUENCY": "Minimales Intervall für die Ansagen der Wartezeit. Verhindert, dass ein Nutzer bei häufigen Wechsel der Warteposition zu viele Ansagen erhält.",
+      "PERIODICANNOUNCEFREQUENCY": "Legt fest, wie oft die sich wiederholenden Ansagen gespielt werden sollen",
+      "ANNOUNCEPOSITIONLIMIT": "Wird verwendet, wenn der Wert für die Warteposition auf \"Limitierung\" oder \"Mehr\" gestellt wird.",
+      "AFTERCALLWORKDURATION": "Die Dauer der Nacharbeit nach einem Anruf",
+      "MEMBERDELAY": "Erstellt eine Verzögerung des Anrufes für bestimmte Agenten. Kann zum Skillbasierten Routing verwendet werden.",
+      "MUSICONHOLD": "Legt die Haltemusik auf Basis der Warteschlange fest",
+      "ANNOUNCETOAGENT": "Legt fest, ob der Agent vor Annahme des Anrufes einen Hinweis auf die eingehende Warteschlange hört",
+      "RANDOMPERIODICANNOUNCE": "Bei ja, werden die zugewiesenen Ansagen zufällig abgespielt",
+      "ANNOUNCEHOLDTIME": "Spielt die geschätzte Wartezeit zusammen oder ohne die sich wiederholenden Ansagen ab.",
+      "ANNOUNCECALLERPOSITION": "Definiert die Ansage der Warteposition für den Anrufer. Nein = Niemals; Ja = Immer; Limitierung = nur, wenn die Zeit innerhalb dem eingetragenen Wert liegt; Mehr = nur, wenn die Zeit oberhalb dem eingetragenen Wert liegt ",
+      "REPORTHOLDTIMEAGENT": "Haltezeiten der Agenten in den Berichten verwenden",
+      "PERIODICANNOUNCE": "Sich wiederholende Ansagen; können je nach Konfiguration in definierter Reihenfolge oder zufällig abgespielt werden.",
+      "HOLDTIMEANNOUNCE": "Ansage der Wartezeit. Leer lassen zum Überspringen",
+      "YOUARENEXTANNOUNCE": "Ansage \"Sie sind an erster Position der Warteschlange\", Leer lassen zum Überspringen",
+      "THEREAREANNOUNCE": "Ansage \"Es befinden sich..\" Leer lassen zum Überspringen",
+      "WAITINGCALLSANNOUNCE": "Ansage \"...Anrufe in der Warteschlange\" Leer lassen zum Überspringen",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Ansage: \"Die geschätzte Wartezeit beträgt derzeit...\" Leer lassen zum Überspringen",
+      "MINUTESANNOUNCE": "Ansage \"Minuten\"",
+      "MINUTEANNOUNCE": "Ansage \"Minute\"",
+      "SECONDSANNOUNCE": "Ansage \"Sekunden\" Leer lassen zum Überspringen",
+      "THANKYOUANNOUNCE": "Ansage \"Vielen Dank für Ihre Geduld\" Leer lassen zum Überspringen",
+      "AFTERCALLWORK": "Wenn aktiviert, erhalten die Agenten eine kurze Pause nach jedem Anruf",
+      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Pause der Agenten, bei einem verpassten Anruf. Hinweis: bezieht sich dann auf alle Anruf-Warteschlangen des Agenten.",
+      "RINGINUSE": "Verhindert das Klingeln bei Agenten, deren Nebenstelle in Verwendung ist",
+      "TIMEOUTRESTART": "Wenn ja, wird die Zeitüberschreitung bei Agenten mit \"Besetzt\" oder \"Verbindungsfehler\"-Status übersprungen",
+      "CONTEXT": "Ermöglicht einem Anrufer, durch Drücken einer einzelnen Taste, die Warteschlange zu verlassen.",
+      "SETINTERFACEVARIABLES": "Definiert die Variablen im Interface, welche bei einem Anruf übergeben werden können. ",
+      "SETQUEUEVARIABLES": "Definiert die Variablen in der Warteschlange, welche bei einem Anruf übergeben werden können. ",
+      "SETQUEUEENTRYVARIABLES": "Definiert die Variablen beim Eintritt in die Warteschlange, welche bei einem Anruf übergeben werden können. ",
       "RECORDING": "Aktivieren der Aufzeichnung",
-      "VOICEMAIL_CONTEXT": "Im Rahmen der relativen Erweiterung.",
+      "VOICEMAIL_CONTEXT": "Kontext der verwendeten Nebenstellen",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "CALLERIDALL": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
       "CALLER_ID": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, der während der Zwangsdisposition festgelegt werden soll",
-      "SERVICELEVEL": "Zweite Einstellungen für Service Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
-      "MONITORFORMAT": "Gibt das Format der Aufnahmedatei an. Wenn es auf 'inaktiv' gesetzt ist, werden Anrufe nicht aufgezeichnet",
-      "SAVE_ROUTES": "Die Streckenführung wurde geändert. Denken Sie daran, zu speichern, wenn Sie Ihre Änderungen nicht verlieren möchten."
+      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, welcher während einer erforderlichen Qualifizierung verwendet wird",
+      "SERVICELEVEL": "Zweite Einstellungen für Service-Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
+      "MONITORFORMAT": "Gibt das Format der Aufzeichnungsdatei an. Bei 'inaktiv', werden Anrufe nicht aufgezeichnet"
     },
-    "MUSICONHOLD": "Musik auf Halten",
-    "ANNOUNCETOAGENT": "Geben Sie Agent",
-    "ANNOUNCEMENTS": "Ankündigungen",
-    "ADVANCED": "Erweiterte",
-    "ANNOUNCEFREQUENCY": "Frequenz ankündigen",
-    "MINANNOUNCEFREQUENCY": "Minimale Frequenz ankündigen",
-    "PERIODICANNOUNCEFREQUENCY": "Periodische Frequenz ankündigen",
-    "RANDOMPERIODICANNOUNCE": "Random Periodische verkünden",
-    "ANNOUNCEHOLDTIME": "Geben Sie Zeit",
-    "ANNOUNCECALLERPOSITION": "Position des Anrufers bekannt",
-    "ANNOUNCEPOSITIONLIMIT": "Geben Position Limit",
-    "REPORTHOLDTIMEAGENT": "Bericht Agenten",
-    "PERIODICANNOUNCE": "Periodische verkünden",
-    "HOLDTIMEANNOUNCE": "Zeit in der Warteschleife verkünden",
-    "YOUARENEXTANNOUNCE": "\"Sie sind weiter' verkünden",
-    "THEREAREANNOUNCE": "'Es gibt' verkünden",
-    "WAITINGCALLSANNOUNCE": "Wartende Anrufe,",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Zeit halten,",
-    "MINUTESANNOUNCE": "Minuten ankündigen",
-    "MINUTEANNOUNCE": "Minute verkünden",
-    "SECONDSANNOUNCE": "Sekunden,",
+    "MUSICONHOLD": "Wartemusik",
+    "ANNOUNCETOAGENT": "Ansage an Agenten",
+    "ANNOUNCEMENTS": "Ansagen",
+    "ADVANCED": "Erweitert",
+    "ANNOUNCEFREQUENCY": "Ansagefrequenz",
+    "MINANNOUNCEFREQUENCY": "Min. Ansagefrequenz",
+    "PERIODICANNOUNCEFREQUENCY": "Frequenz wiederholende Ansagen",
+    "RANDOMPERIODICANNOUNCE": "Zufällige Ansagen",
+    "ANNOUNCEHOLDTIME": "Wartezeit ansagen",
+    "ANNOUNCECALLERPOSITION": "Warteposition ansagen",
+    "ANNOUNCEPOSITIONLIMIT": "Limitierung Warteposition ansagen",
+    "REPORTHOLDTIMEAGENT": "Haltezeit in Agentenbericht",
+    "PERIODICANNOUNCE": "Wiederholende Ansagen",
+    "HOLDTIMEANNOUNCE": "Wartezeit ansagen",
+    "YOUARENEXTANNOUNCE": "Erste Position",
+    "THEREAREANNOUNCE": "Es befinden sich",
+    "WAITINGCALLSANNOUNCE": "Wartende Anrufe",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Wartezeit ansagen",
+    "MINUTESANNOUNCE": "Minuten",
+    "MINUTEANNOUNCE": "Minute",
+    "SECONDSANNOUNCE": "Sekunden",
     "THANKYOUANNOUNCE": "'Vielen Dank' verkünden",
     "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "Arbeit nach Anruf",
-    "AFTERCALLWORKDURATION": "Arbeit nach Anruf Dauer",
-    "RINGINUSE": "Ring in Verwendung",
-    "MEMBERDELAY": "Die Verzögerung",
-    "TIMEOUTRESTART": "Timeout starten",
+    "AFTERCALLWORK": "Nacharbeit",
+    "AFTERCALLWORKDURATION": "Dauer Nacharbeit",
+    "RINGINUSE": "Klingeln bei Besetzt",
+    "MEMBERDELAY": "Verzögerung",
+    "TIMEOUTRESTART": "Zeitüberschreitung",
     "MONITORFORMAT": "Aufzeichnungsformat",
-    "SETINTERFACEVARIABLES": "Die Interface- Variablen",
-    "SETQUEUEVARIABLES": "Die Warteschlange Variablen",
-    "SETQUEUEENTRYVARIABLES": "Die Warteschlange ENTRY-Variablen",
+    "SETINTERFACEVARIABLES": "Interface-Variablen",
+    "SETQUEUEVARIABLES": "Warteschlangen-Variablen",
+    "SETQUEUEENTRYVARIABLES": "Warteschlangen-Eintritts-Variablen",
     "VARIABLE": "Variable",
-    "CONTEXT": "Kontext",
+    "CONTEXT": "Kontext Austritt aus Warteschlange",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Ankommende Routen",
+    "INBOUNDROUTES": "Eingehende Routen",
     "PHONENUMBER": "Telefonnummer",
     "ADD_INBOUNDROUTE": "Eingehende Route hinzufügen",
-    "EDIT_INBOUNDROUTE": "Route für eingehende Anrufe bearbeiten.",
-    "DELETE_INBOUNDROUTE": "Löschen der Route für eingehende Anrufe",
+    "EDIT_INBOUNDROUTE": "Eingehende Route bearbeiten",
+    "DELETE_INBOUNDROUTE": "Eingehende Route löschen",
     "ACTIONS": "Aktionen",
-    "OUTBOUNDROUTES": "Abgehende Routen",
-    "DESTINATIONPATTERN": "Ziel Muster",
+    "OUTBOUNDROUTES": "Ausgehende Routen",
+    "DESTINATIONPATTERN": "Ziel-Pattern",
     "ADD_OUTBOUNDROUTE": "Ausgehende Route hinzufügen",
-    "EDIT_OUTBOUNDROUTE": "Abgehende Route bearbeiten",
-    "DELETE_OUTBOUNDROUTE": "Abgehende Route löschen",
-    "CUTDIGITS": "Die Ziffern",
-    "RECORDING": "Aufnahme",
+    "EDIT_OUTBOUNDROUTE": "Ausgehende Route bearbeiten",
+    "DELETE_OUTBOUNDROUTE": "Ausgehende Route löschen",
+    "CUTDIGITS": "Ziffern",
+    "RECORDING": "Aufzeichnung",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Fügen Sie interne Routen",
+    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
-    "DELETE_INTERNALROUTE": "Interne Routen löschen",
+    "DELETE_INTERNALROUTE": "Interne Route löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Rahmen hinzufügen",
+    "ADD_CONTEXT": "Kontext hinzufügen",
     "EDIT_CONTEXT": "Kontext bearbeiten",
-    "DELETE_CONTEXT": "Löschen von Rahmen",
-    "VOICEMAILS": "Von Voicemails",
-    "ADD_VOICEMAIL": "Fügen Sie Voicemail",
-    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
+    "DELETE_CONTEXT": "Kontext löschen",
+    "VOICEMAILS": "Voicemails",
+    "ADD_VOICEMAIL": "Voicemail hinzufügen",
+    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
     "PASSWORD": "Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Befestigen Sie",
+    "ATTACH": "Anhängen",
     "ENVELOPE": "Umschlag",
     "DELETE": "Löschen",
     "EMAILBODY": "E-Mail-Text",
     "EMAILSUBJECT": "Betreff der E-Mail",
-    "MAXSECONDS": "In Sekunden",
+    "MAXSECONDS": "Max. Sekunden",
     "MAXMESSAGES": "Max. Nachrichten",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "ADD_MUSICONHOLD": "Hinzufügen von Musik auf Halten",
-    "MUSICONHOLDS": "Musik auf Halten",
-    "EDIT_MUSICONHOLD": "Bearbeiten Musik auf Halten",
-    "DELETE_MUSICONHOLD": "Löschen Sie Musik auf Halten",
+    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
+    "MUSICONHOLDS": "Wartemusik",
+    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
+    "DELETE_MUSICONHOLD": "Wartemusik löschen",
     "DIRECTORY": "Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufnahmen",
-    "CHANSPY": "ChanSpy",
+    "RECORDINGS": "Aufzeichnungen",
+    "CHANSPY": "Listen-In",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Auth",
-    "ADD_CHANSPY": "Fügen Sie ChanSpy",
-    "EDIT_CHANSPY": "Bearbeiten Sie ChanSpy",
-    "DELETE_CHANSPY": "Löschen Sie ChanSpy",
+    "AUTH": "Authentifizierung",
+    "ADD_CHANSPY": "Listen-In hinzufügen",
+    "EDIT_CHANSPY": "Listen-In bearbeiten",
+    "DELETE_CHANSPY": "Listen-In löschen",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe aus einer Warteschlange",
-    "QUEUE_PARAMETERS": "Queue Parameter",
+    "QUEUE_CALLS": "Anrufe in Warteschlange",
+    "QUEUE_PARAMETERS": "Warteschlangen Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
     "AGI": "AGI",
-    "DIAL": "Kurzwahl",
+    "DIAL": "Wählen",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Interne Wahl",
-    "EXTERNALDIAL": "Externes Wählen",
-    "RINGGROUP": "Ring-Gruppe",
+    "INTERNALDIAL": "Interner Anruf",
+    "EXTERNALDIAL": "Externer Anruf",
+    "RINGGROUP": "Rufgruppe",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Set",
+    "SET": "Einstellen",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefinierte",
+    "CUSTOM": "Benutzerdefiniert",
     "PROJECT": "Cally-Square Projekt",
     "TECHNOLOGY/RESOURCE": "Technologie-/Ressourcen",
     "URL": "URL",
-    "EDIT_APP": "Anwendung bearbeiten.",
+    "EDIT_APP": "App bearbeiten.",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_APP": "Anwendung löschen",
+    "DELETE_APP": "App löschen",
     "INTERVALS": "Intervalle",
     "USER": "Benutzer",
-    "TRUNK": "Amtsleitung",
+    "TRUNK": "Trunk",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Überschreibt ankündigen",
+    "ANNOUNCE_OVERRIDES": "Überschreibungen ankündigen",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "ANSWER": "Antwort",
     "VALUE": "Wert",
     "MAILBOX@CONTEXT": "Mailbox@Kontext",
-    "EXTENSION": "Erweiterung",
+    "EXTENSION": "Nebenstelle",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Ursache auflegen",
-    "OUTBOUNDDIAL": "Wählen Sie für abgehende Anrufe",
-    "CALLER_ID": "Die Anrufer-ID",
+    "HANGUP_CAUSE": "Ablehnungsgrund",
+    "OUTBOUNDDIAL": "Extern wählen",
+    "CALLER_ID": "Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufnahmen",
-    "CHANSPIES": "Chan Spies",
-    "VOICE": "Voice",
+    "VOICERECORDINGS": "Sprachaufzeichnungen",
+    "CHANSPIES": "Listen-Ins",
+    "VOICE": "Anrufe",
     "REALTIME": "Echtzeit",
-    "ID": "Id",
+    "ID": "ID",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "ADD_MOHSOUND": "Hinzufügen von Musik auf Halten sound",
-    "DOWNLOAD_MOHSOUND": "Download Music-on-Hold sound",
-    "DELETE_MOHSOUND": "Löschen Sie Music On Hold sound",
+    "ADD_MOHSOUND": "Musik bei Halten hinzufügen",
+    "DOWNLOAD_MOHSOUND": "Musik bei Halten herunterladen",
+    "DELETE_MOHSOUND": "Musik bei Halten löschen",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "NEW_VOICEQUEUE": "Neue Stimme der Warteschlange",
-    "NEW_INBOUNDROUTE": "Neue Route für eingehende Anrufe",
-    "NEW_OUTBOUNDROUTE": "Neue abgehende Route",
-    "NEW_INTERNALROUTE": "Neue interne Routen",
-    "NEW_CONTEXT": "Neue Kontext",
+    "NEW_VOICEQUEUE": "Neue Anruf-Warteschlange",
+    "NEW_INBOUNDROUTE": "Neue eingehende Route",
+    "NEW_OUTBOUNDROUTE": "Neue ausgehende Route",
+    "NEW_INTERNALROUTE": "Neue interne Route",
+    "NEW_CONTEXT": "Neuer Kontext",
     "NEW_VOICEMAIL": "Neue Voicemail",
-    "NEW_MUSICONHOLD": "Neue Musik auf Halten",
-    "NEW_CHANSPY": "Neue ChanSpy",
-    "PENALTY": "Strafe",
-    "ADD_TEAM_TO_VOICEQUEUE": "Team hinzufügen, Warteschlange",
-    "ADD_AGENT_TO_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
-    "EDIT_DIAL": "Wählen Sie Bearbeiten.",
+    "NEW_MUSICONHOLD": "Neue Haltemusik",
+    "NEW_CHANSPY": "Neuer Listen-In",
+    "PENALTY": "Verzögerung",
+    "ADD_TEAM_TO_VOICEQUEUE": "Team zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_VOICEQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "EDIT_DIAL": "Wählen anpassen",
     "EDIT_AGI": "AGI bearbeiten",
-    "EDIT_INTERNALDIAL": "Interne Wahl bearbeiten.",
-    "EDIT_EXTERNALDIAL": "Wählen Sie Externen bearbeiten",
-    "EDIT_RINGGROUP": "Gruppe bearbeiten",
-    "EDIT_PLAYBACK": "Bearbeiten Sie die Wiedergabe",
-    "EDIT_QUEUE": "Bearbeiten von Warteschlangen",
-    "EDIT_SET": "Bearbeiten",
-    "EDIT_GOTO": "Gehe zu bearbeiten.",
-    "EDIT_HANGUP": "Bearbeiten Sie Auflegen",
-    "EDIT_CUSTOM": "Bearbeiten von benutzerdefinierten",
+    "EDIT_INTERNALDIAL": "Internes Wählen bearbeiten",
+    "EDIT_EXTERNALDIAL": "Externes Wählen bearbeiten",
+    "EDIT_RINGGROUP": "Rufgruppe bearbeiten",
+    "EDIT_PLAYBACK": "Wiedergabe bearbeiten",
+    "EDIT_QUEUE": "Warteschlange bearbeiten",
+    "EDIT_SET": "Set bearbeiten",
+    "EDIT_GOTO": "Gehe zu bearbeiten",
+    "EDIT_HANGUP": "Auflegen bearbeiten",
+    "EDIT_CUSTOM": "Benutzerdef. Einstellungen bearbeiten",
     "DURATION": "Dauer",
-    "RECEIVED_AT": "Empfangen am",
+    "RECEIVED_AT": "Eingegangen am",
     "YES": "Ja",
-    "NO": "Keine",
-    "HANGUPCAUSE_1": "1 = Nicht zugewiesene Nummer",
-    "HANGUPCAUSE_16": "16 = Normail Anruf löschen",
-    "HANGUPCAUSE_17": "17 = Benutzer besetzt",
-    "HANGUPCAUSE_18": "18 = Keine Reaktion (Telefon Gerät nicht verbunden)",
+    "NO": "Nein",
+    "HANGUPCAUSE_1": "1 = Nummer nicht zugewiesen",
+    "HANGUPCAUSE_16": "16 = Beenden durch Nutzer",
+    "HANGUPCAUSE_17": "17 = Besetzt",
+    "HANGUPCAUSE_18": "18 = Keine Antwort (Nebenstelle nicht verbunden)",
     "HANGUPCAUSE_21": "21 = Anruf abgelehnt",
-    "HANGUPCAUSE_22": "22 = Anzahl geändert",
-    "HANGUPCAUSE_27": "27 = Ziel nicht in Ordnung",
-    "HANGUPCAUSE_38": "38 = Netzwerk aus, um",
+    "HANGUPCAUSE_22": "22 = Nummer geändert",
+    "HANGUPCAUSE_27": "27 = Ziel nicht verfügbar",
+    "HANGUPCAUSE_38": "38 = Netzwerk nicht verfügbar",
     "HANGUPCAUSE_41": "41 = vorübergehende Störung",
-    "RANDOM": "Random",
+    "RANDOM": "Zufall",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Löschen von Voice Recording",
-    "INTERNAL": "Interne",
+    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
+    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "TRUNK_STATUS": "Trunk Status",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "LAGGED": "Zurück",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Gebrauch",
-    "INUSE": "Im Einsatz",
+    "NOT_INUSE": "Nicht in Verwendung",
+    "INUSE": "In Verwendung",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Auf Halten",
-    "RING": "Ring",
-    "UP": "Bis",
-    "INFO": "Info",
-    "TRUNKS": "Amtsleitungen",
+    "ONHOLD": "Halten",
+    "RING": "Klingeln",
+    "UP": "Nach Oben",
+    "INFO": "Information",
+    "TRUNKS": "Trunks",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine registry",
+    "NO_REGISTRY": "Keine Registrierung",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "WAITING": "Warten",
-    "TALKING": "Sprechen",
-    "DID": "Haben",
+    "WAITING": "Wartezustand",
+    "TALKING": "Im Gespräch",
+    "DID": "DID",
     "CALLER": "Anrufer",
-    "TOTAL": "Insgesamt",
+    "TOTAL": "Gesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht verwaltete",
-    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
-    "AVG_DURATION": "Av-Dauer",
-    "AVG_BILLABLE": "Avg Fakturierbaren",
-    "SOURCE": "Quelle",
+    "UNMANAGED": "Nicht bearbeitet",
+    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
+    "AVG_DURATION": "Durchschnittliche Dauer",
+    "AVG_BILLABLE": "Durchschnittliche abrechenbare Zeit",
+    "SOURCE": "Ursprung",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Aufgerufen",
+    "CALLED": "Angerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
+    "EDIT_VOICERECORDING": "Sprachaufzeichnungen verwalten",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
-    "DEFAULT_PAUSE": "Standard PAUSE",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "DEFAULT_PAUSE": "Standard Pause",
     "PAUSE": "Pause",
-    "UNPAUSE": "Pause",
-    "REDIRECT_TO_NUMBER": "Umleiten zu: Anzahl",
-    "REDIRECT_TO_AGENT": "Umleiten zu: Agent",
-    "AGENTADD_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
+    "UNPAUSE": "Fortsetzen",
+    "REDIRECT_TO_NUMBER": "Weiterleiten an Nummer",
+    "REDIRECT_TO_AGENT": "Weiterleiten an Agenten",
+    "AGENTADD_VOICEQUEUE": "Agenten zu Anruf-Warteschlange hinzufügen",
     "APPLICATION": "Anwendung",
     "FILES": "Dateien",
     "FORMAT": "Format",
     "MODE": "Modus",
     "RECORD": "Datensatz",
-    "TEAMADD_VOICEQUEUE": "Hinzufügen Team voicequeue",
-    "NEW_MOHSOUND": "Neue Musik auf Halten",
-    "DOWNLOAD_MESSAGE": "Download",
+    "TEAMADD_VOICEQUEUE": "Team zur Anruf-Warteschlange hinzufügen",
+    "NEW_MOHSOUND": "Neue Wartemusik",
+    "DOWNLOAD_MESSAGE": "Herunterladen",
     "DELETE_MESSAGE": "Löschen",
     "QUEUE_PARAMS": "Queue Parameter",
-    "TOTAL_OFFERED": "Insgesamt",
+    "TOTAL_OFFERED": "Gesamt",
     "READY": "Bereit",
-    "AGENTADD_QUEUE": "Agent hinzufügen Warteschlangen zu Voice",
-    "AGENTSADD_QUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlangen hinzufügen",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSING": "Schließen",
     "TAGS": "Tags",
     "WAITING_FOR_AGENT": "Warten auf Agenten",
-    "EDIT_OUTBOUNDDIAL": "Bearbeiten ausgehenden DFÜ",
-    "ACCOUNTNAME": "Konto Name",
+    "EDIT_OUTBOUNDDIAL": "Wählverhalten ausgehend bearbeiten",
+    "ACCOUNTNAME": "Kontoname",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "DISPOSITION": "Disposition",
+    "OF": "von",
+    "DISPOSITION": "Qualifizierung",
     "WAITING_FOR_AGENTS": "Warten auf Agenten",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Teilweise Pause",
+    "PARTIALPAUSE": "Teilpause",
     "STATUS": "Status",
     "TIMER": "Timer",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
-    "EDIT_TRUNK": "Bearbeiten Trunk",
+    "EDIT_TRUNK": "Trunk bearbeiten",
     "ACTIVE": "Aktiv",
-    "CLEAR": "klar",
+    "CLEAR": "Leeren",
     "CALLS": "Anrufe",
-    "STARTEDAT": "Fing an bei",
-    "ENDEDAT": "Beendet bei",
-    "TAG": "Etikett",
-    "DETAILS": "Einzelheiten",
+    "STARTEDAT": "Startdatum",
+    "ENDEDAT": "Enddatum",
+    "TAG": "Tag",
+    "DETAILS": "Details",
     "BILLABLESECONDS": "Abrechenbare Sekunden",
-    "ANSWEREDAT": "Beantwortet bei",
-    "NOTE": "Hinweis",
+    "ANSWEREDAT": "Beantwortet am",
+    "NOTE": "Notiz",
     "CLOSE": "Schließen",
-    "SELECT_DATE": "Wählen Sie Startdatum",
-    "SELECT_TYPE": "Art auswählen",
-    "ABANDONEDCALLS": "Verlassene Warteschlangenanrufe",
+    "SELECT_DATE": "Startdatum auswählen",
+    "SELECT_TYPE": "Typ auswählen",
+    "ABANDONEDCALLS": "Abgebrochene Anrufe",
     "ADD_VOICEPREFIX": "Präfix hinzufügen",
-    "AGENTADD_VOICEPREFIX": "Fügen Sie Agent zu Präfix hinzu",
+    "AGENTADD_VOICEPREFIX": "Agentenpräfix hinzufügen",
     "DELETE_VOICEPREFIX": "Präfix löschen",
     "EDIT_VOICEPREFIX": "Präfix bearbeiten",
     "NEW_VOICEPREFIX": "Neues Präfix",
-    "VOICEPREFIXES": "Vorgegebene Präfixe",
+    "VOICEPREFIXES": "Präfixe für Sprachanrufe",
     "CALLERIDALL": "Anruferidentifikation",
     "OUTBOUNDROUTE": "Ausgehende Route",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "DIALER": "Dialer",
-    "INBOUND": "Eingehende",
+    "INBOUND": "Eingehend",
     "OUTBOUND": "Ausgehend",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Qualifikation erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "CANT_DOWNLOAD_THIS_FILE": "Diese Datei kann nicht heruntergeladen werden",
     "FILE_NOT_FOUND": "Datei nicht gefunden",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
-    "START_SCREENRECORDING": "Starten Sie die Bildschirmaufnahme",
-    "STOP_SCREENRECORDING": "Beenden Sie die Bildschirmaufnahme",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "WRONG_EXTENSION": "Die Datei weist die falsche Erweiterung auf",
+    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
+    "STOP_SCREENRECORDING": "Bildschirmaufzeichnung beenden",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "WRONG_EXTENSION": "Ungültige Dateiendung",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Transkript herunterladen",
     "FAILUREREASON": "Fehlergrund",
-    "RUNSENTIMENT_VOICERECORDING": "Führen Sie Sentiment",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Führen Sie Transcribe & Sentiment aus",
-    "RUNTRANSCRIBE_VOICERECORDING": "Führen Sie Transcribe aus",
-    "SENTIMENT": "Gefühl",
-    "SENTIMENTANALYSIS": "Stimmungsanalyse",
+    "RUNSENTIMENT_VOICERECORDING": "Starten Sprachaufzeichnung inkl. Sentiment",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Transkription und Sentinemtaufzeichnung starten",
+    "RUNTRANSCRIBE_VOICERECORDING": "Transkription starten",
+    "SENTIMENT": "Sentiment",
+    "SENTIMENTANALYSIS": "Sentiment-Analyse",
     "SENTIMENT_MIXED": "Gemischt",
     "SENTIMENT_NEGATIVE": "Negativ",
     "SENTIMENT_NEUTRAL": "Neutral",
     "SENTIMENT_POSITIVE": "Positiv",
     "TEXT": "Text",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBESTATUS_COMPLETED": "Abgeschlossen",
-    "TRANSCRIBESTATUS_FAILED": "Gescheitert",
+    "TRANSCRIBESTATUS_COMPLETED": "Transkription abgeschlossen",
+    "TRANSCRIBESTATUS_FAILED": "Transkription fehlgeschlagen",
     "TRANSCRIBESTATUS_IN_PROGRESS": "In Bearbeitung",
     "TRANSCRIBESTATUS_NEW": "Neu",
     "TRANSCRIPT": "Transkript",
     "TRANSCRIPTANALYSIS": "Transkript & Analyse",
     "SERVICELEVEL": "Service Level",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
+    "TEAMADD_VOICEPREFIX": "Team zum Präfix hinzufügen",
     "ALIAS": "Alias"
   }
 }
index 0e070f7..a06798a 100644 (file)
     "ADD_VOICEPREFIX": "Add Prefix",
     "EDIT_VOICEPREFIX": "Edit Prefix",
     "AGENTADD_VOICEPREFIX": "Add Agent to Prefix",
+    "TEAMADD_VOICEPREFIX": "Add Team to Prefix",
     "DELETE_VOICEPREFIX": "Delete Prefix",
     "OUTBOUNDROUTE": "Outbound Route",
     "CALLERIDALL": "Caller Id",
index 90b1016..b29a2d3 100644 (file)
     "SERVICELEVEL": "Nivel de servicio",
     "SECOND_LEVEL_DISPOSITION": "Tipificación de segundo nivel",
     "THIRD_LEVEL_DISPOSITION": "Tipificación de tercer nivel",
+    "TEAMADD_VOICEPREFIX": "Agregar equipo al prefijo",
     "ALIAS": "Alias"
   }
 }
index bd75c5e..b52a7e9 100644 (file)
     "SERVICELEVEL": "Teenuse tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
+    "TEAMADD_VOICEPREFIX": "Lisa meeskond eesliidesse",
     "ALIAS": "Teise nimega"
   }
 }
index 64fd7ba..4c8f69b 100644 (file)
     "SERVICELEVEL": "سطح سرویس",
     "SECOND_LEVEL_DISPOSITION": "دفع سطح دوم",
     "THIRD_LEVEL_DISPOSITION": "دفع سطح سوم",
+    "TEAMADD_VOICEPREFIX": "اضافه کردن تیم به پیشوند",
     "ALIAS": "نام مستعار"
   }
 }
index f1874d1..664bc29 100644 (file)
     "SERVICELEVEL": "Palvelutaso",
     "SECOND_LEVEL_DISPOSITION": "Toisen tason sijoitus",
     "THIRD_LEVEL_DISPOSITION": "Kolmannen tason sijoitus",
+    "TEAMADD_VOICEPREFIX": "Lisää joukkue etuliitteeseen",
     "ALIAS": "Alias"
   }
 }
index ca6418d..51099a3 100644 (file)
     "SERVICELEVEL": "Niveau de service",
     "SECOND_LEVEL_DISPOSITION": "Disposition de deuxième niveau",
     "THIRD_LEVEL_DISPOSITION": "Disposition de troisième niveau",
+    "TEAMADD_VOICEPREFIX": "Ajouter une équipe au préfixe",
     "ALIAS": "Alias"
   }
 }
index 2da30a3..61c740b 100644 (file)
     "SERVICELEVEL": "רמת שירות",
     "SECOND_LEVEL_DISPOSITION": "נטייה בדרגה שנייה",
     "THIRD_LEVEL_DISPOSITION": "נטייה ברמה השלישית",
+    "TEAMADD_VOICEPREFIX": "הוסף צוות לקידומת",
     "ALIAS": "כינוי"
   }
 }
index 2fbd46a..905e9aa 100644 (file)
     "SERVICELEVEL": "सेवा का स्तर",
     "SECOND_LEVEL_DISPOSITION": "दूसरा स्तर विवाद",
     "THIRD_LEVEL_DISPOSITION": "तीसरे स्तर का विवाद",
+    "TEAMADD_VOICEPREFIX": "उपसर्ग में टीम जोड़ें",
     "ALIAS": "उपनाम"
   }
 }
index 1fecba7..eef7ebe 100644 (file)
     "SERVICELEVEL": "Tingkat layanan",
     "SECOND_LEVEL_DISPOSITION": "Disposisi Tingkat Kedua",
     "THIRD_LEVEL_DISPOSITION": "Disposisi Tingkat Ketiga",
+    "TEAMADD_VOICEPREFIX": "Tambahkan Tim ke Awalan",
     "ALIAS": "Alias"
   }
 }
index 3b739d4..527d7c5 100644 (file)
     "ADD_VOICEPREFIX": "Aggiungi Prefisso",
     "EDIT_VOICEPREFIX": "Modifica Prefisso",
     "AGENTADD_VOICEPREFIX": "Aggiungi Agente al Prefisso",
+    "TEAMADD_VOICEPREFIX": "Aggiungi Team al Prefisso",
     "DELETE_VOICEPREFIX": "Elimina Prefisso",
     "OUTBOUNDROUTE": "Rotta Outbound",
     "CALLERIDALL": "Numero Chiamante",
index c7d5d57..d2accf3 100644 (file)
     "SERVICELEVEL": "サービスレベル",
     "SECOND_LEVEL_DISPOSITION": "第2レベルの気質",
     "THIRD_LEVEL_DISPOSITION": "第3レベルの気質",
+    "TEAMADD_VOICEPREFIX": "プレフィックスにチームを追加",
     "ALIAS": "エイリアス"
   }
 }
index bc9ce6e..9e4a917 100644 (file)
     "SERVICELEVEL": "서비스 수준",
     "SECOND_LEVEL_DISPOSITION": "두 번째 수준 처리",
     "THIRD_LEVEL_DISPOSITION": "3 단계 처리",
+    "TEAMADD_VOICEPREFIX": "접두사에 팀 추가",
     "ALIAS": "별명"
   }
 }
index 1a07f3d..65172e6 100644 (file)
     "SERVICELEVEL": "Aptarnavimo lygis",
     "SECOND_LEVEL_DISPOSITION": "Antro lygio disponavimas",
     "THIRD_LEVEL_DISPOSITION": "Trečiojo lygio disponavimas",
+    "TEAMADD_VOICEPREFIX": "Pridėti komandą prie priešdėlio",
     "ALIAS": "Pseudonimas"
   }
 }
index 3e683d8..499925d 100644 (file)
     "SERVICELEVEL": "Pakalpojuma līmenis",
     "SECOND_LEVEL_DISPOSITION": "Otrā līmeņa izvietojums",
     "THIRD_LEVEL_DISPOSITION": "Trešā līmeņa izvietojums",
+    "TEAMADD_VOICEPREFIX": "Pievienot komandu prefiksam",
     "ALIAS": "Pseidonīms"
   }
 }
index 103a753..a1ad47d 100644 (file)
     "SERVICELEVEL": "Service Level",
     "SECOND_LEVEL_DISPOSITION": "Tweede niveau dispositie",
     "THIRD_LEVEL_DISPOSITION": "Dispositie op het derde niveau",
+    "TEAMADD_VOICEPREFIX": "Team toevoegen aan voorvoegsel",
     "ALIAS": "Alias"
   }
 }
index 729522a..f979e88 100644 (file)
     "SERVICELEVEL": "Service nivå",
     "SECOND_LEVEL_DISPOSITION": "Andre nivå disposisjon",
     "THIRD_LEVEL_DISPOSITION": "Tredje nivå disposisjon",
+    "TEAMADD_VOICEPREFIX": "Legg Team til prefiks",
     "ALIAS": "Alias"
   }
 }
index 3988cbe..9974a58 100644 (file)
     "SERVICELEVEL": "Poziom usług",
     "SECOND_LEVEL_DISPOSITION": "Dyspozycja drugiego poziomu",
     "THIRD_LEVEL_DISPOSITION": "Dyspozycja trzeciego poziomu",
+    "TEAMADD_VOICEPREFIX": "Dodaj drużynę do prefiksu",
     "ALIAS": "Alias"
   }
 }
index 5113530..95abd15 100644 (file)
     "SERVICELEVEL": "Nível de serviço",
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
     "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
+    "TEAMADD_VOICEPREFIX": "Adicionar equipe ao prefixo",
     "ALIAS": "Pseudônimo"
   }
 }
index a46bf2f..3c55740 100644 (file)
     "SERVICELEVEL": "Nível de serviço",
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
     "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
+    "TEAMADD_VOICEPREFIX": "Adicionar equipe ao prefixo",
     "ALIAS": "Pseudônimo"
   }
 }
index 672f53d..022d0b1 100644 (file)
     "SERVICELEVEL": "Уровень обслуживания",
     "SECOND_LEVEL_DISPOSITION": "Расположение второго уровня",
     "THIRD_LEVEL_DISPOSITION": "Расположение третьего уровня",
+    "TEAMADD_VOICEPREFIX": "Добавить команду к префиксу",
     "ALIAS": "Псевдоним"
   }
 }
index 83c6c54..6a741b4 100644 (file)
     "SERVICELEVEL": "Servicenivå",
     "SECOND_LEVEL_DISPOSITION": "Andra nivån disposition",
     "THIRD_LEVEL_DISPOSITION": "Tredje nivåens disposition",
+    "TEAMADD_VOICEPREFIX": "Lägg till Team i prefixet",
     "ALIAS": "Alias"
   }
 }
index 6dd9d26..51a4ca4 100644 (file)
     "SERVICELEVEL": "Servis seviyesi",
     "SECOND_LEVEL_DISPOSITION": "İkinci Düzey Tasarruf",
     "THIRD_LEVEL_DISPOSITION": "Üçüncü Düzey Tasarruf",
+    "TEAMADD_VOICEPREFIX": "Önek'e Takım Ekle",
     "ALIAS": "takma ad"
   }
 }
index 2415dcc..3abaa1b 100644 (file)
     "SERVICELEVEL": "服务等级",
     "SECOND_LEVEL_DISPOSITION": "二级处置",
     "THIRD_LEVEL_DISPOSITION": "第三级处置",
+    "TEAMADD_VOICEPREFIX": "将团队添加到前缀",
     "ALIAS": "别名"
   }
 }
index 294b15a..c78fea9 100644 (file)
     "SERVICELEVEL": "服務等級",
     "SECOND_LEVEL_DISPOSITION": "二級處置",
     "THIRD_LEVEL_DISPOSITION": "第三級處置",
+    "TEAMADD_VOICEPREFIX": "將團隊添加到前綴",
     "ALIAS": "別名"
   }
 }
index 03bcbeb..6f42238 100644 (file)
     "LASTMESSAGE": "اخر رسالة",
     "LEXREGION": "منطقة",
     "LIST": "قائمة",
-    "LOGGED_IN": "تم تسجيل الدخول (SIP متصل)",
+    "LOGGED_IN": "تم تسجيل الدخول",
     "LOGIN_TIME": "وقت تسجيل الدخول",
     "LOGOUT": "تسجيل خروج",
     "MANDATORYDISPOSITION": "الترتيب الإلزامي",
index 07beea8..e361766 100644 (file)
     "LASTMESSAGE": "Poslední zpráva",
     "LEXREGION": "Kraj",
     "LIST": "Seznam",
-    "LOGGED_IN": "Přihlášen (připojeno SIP)",
+    "LOGGED_IN": "Přihlášen",
     "LOGIN_TIME": "Čas přihlášení",
     "LOGOUT": "Odhlásit se",
     "MANDATORYDISPOSITION": "Povinná dispozice",
index 67fc111..00e305d 100644 (file)
     "LASTMESSAGE": "Sidste meddelelse",
     "LEXREGION": "Område",
     "LIST": "Liste",
-    "LOGGED_IN": "Logget ind (SIP tilsluttet)",
+    "LOGGED_IN": "Logget ind",
     "LOGIN_TIME": "Login tid",
     "LOGOUT": "Log ud",
     "MANDATORYDISPOSITION": "Obligatorisk disposition",
index 80b51fd..f01cf37 100644 (file)
@@ -3,8 +3,8 @@
     "ERRORS": {
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "ACCOUNTSID_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "AGENT_REQUIRED": "Pflichtfeld",
       "AGENT_TIMEOUT_REQUIRED": "Pflichtfeld",
@@ -14,9 +14,9 @@
       "CONDITION_REQUIRED": "Pflichtfeld",
       "DESCRIPTION_REQUIRED": "Pflichtfeld",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "FALSEPRIORITY_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "KEY_REQUIRED": "Pflichtfeld",
       "LANGUAGE_REQUIRED": "Pflichtfeld",
       "LEXREGION_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "NAME_REQUIRED": "Pflichtfeld",
       "PHONE_REQUIRED": "Pflichtfeld",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "PRIORITY_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
       "TEXT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "TIMEOUT_REQUIRED": "Pflichtfeld",
       "TIMES_REQUIRED": "Pflichtfeld",
       "TOKEN_REQUIRED": "Pflichtfeld",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "TRUEPRIORITY_REQUIRED": "Pflichtfeld",
       "TYPE_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "WELCOMEMESSAGE_REQUIRED": "Pflichtfeld",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     },
     "HELP": {
-      "LIST": "Kontaktmanagerliste zum Zuordnen von Kontakten",
-      "MANDATORYDISPOSITION": "Obligatorische Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+      "LIST": "Liste für die Zuordnung von Kontakten",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: <Protokoll>: // <IP-Adresse> [: <Port>]. Beispiel: https: //X.Y.Z.W",
       "NAME": "Es werden nur Zahlen, Buchstaben und bestimmte Zeichen (._) unterstützt",
       "RECEIVEURL": "Dies ist die automatisch generierte API-Zeichenfolge, die Sie zum Empfangen der Nachrichten in Ihrem Konto von Ihrem WhatsApp Connector-Anbieter verwenden müssen (POST-Methode muss verwendet werden): Klicken Sie auf die Schaltfläche in der Zwischenablage, um sie zu kopieren",
-      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, die an neue Interaktionen gesendet wird"
+      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, welche bei einer neuen Interaktion gesendet wird"
     },
     "ACCESSKEYID": "Zugriffsschlüssel-ID",
-    "ACCOUNTSID": "Konto-SID",
+    "ACCOUNTSID": "Konto-ID",
     "ACTIONS": "Aktionen",
     "ADD_NOTE": "Notiz hinzufügen",
-    "ADD_WHATSAPPACCOUNT": "Hinzufügen",
-    "ADD_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "ADD_WHATSAPPDISPOSITION": "WhatsApp Disposition hinzufügen",
+    "ADD_WHATSAPPACCOUNT": "Whatsapp Konto konzufügen",
+    "ADD_WHATSAPPCANNEDANSWER": "Textvorlage hinzufügen",
+    "ADD_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung hinzufügen",
     "ADD_WHATSAPPQUEUE": "WhatsApp-Warteschlange hinzufügen",
-    "ADVANCED": "Fortgeschrittene",
+    "ADVANCED": "Erweitert",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
-    "AGENTADD_WHATSAPPACCOUNT": "Agent zum WhatsApp-Konto hinzufügen",
-    "AGENTADD_WHATSAPPQUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTADD_WHATSAPPACCOUNT": "Agenten zum WhatsApp-Konto hinzufügen",
+    "AGENTADD_WHATSAPPQUEUE": "Agenten zur WhatsApp-Warteschlange hinzufügen",
     "AGENTS": "Agenten",
-    "AGENTSADD_QUEUE": "Hinzufügen von Agenten zur WhatsApp-Warteschlange",
-    "AGENTTRANSFER": "Agententransfer",
-    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung bei der Agentenübertragung",
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTTRANSFER": "Transfer Agent",
+    "AGENTTRANSFERTIMEOUT": "Timeout Agententransfer",
+    "AGENT_TIMEOUT": "Timeout Agent",
     "ALL": "Alles",
     "ALL_AGENTS": "Alle Agenten",
     "ALL_TEAMS": "Alle Teams",
     "AUTHTOKEN": "Auth Token",
     "AUTOREPLY": "Automatische Antwort",
     "BACK": "Zurück",
-    "BOTNAME": "Bot Name",
+    "BOTNAME": "Botname",
     "BUSY": "Beschäftigt",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "CANNEDANSWERS": "Textvorlagen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "CANNED_ANSWER_SEARCH": "Suchen nach Textvorlagen",
     "CAPACITY": "Kapazität",
     "CLOSE": "Schließen",
     "CLOSED": "Geschlossen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "CONDITION": "Bedingung",
     "CONTACT": "Kontakt",
-    "CREATED_AT": "Hergestellt in",
-    "DEFAULT_PAUSE": "STANDARD PAUSE",
+    "CREATED_AT": "Erstellt am",
+    "DEFAULT_PAUSE": "Standard Pause",
     "DELETE": "Löschen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "DELETE_SELECTED": "Ausgewählte löschen",
     "DELETE_WHATSAPPACCOUNT": "WhatsApp-Konto löschen",
-    "DELETE_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort löschen",
-    "DELETE_WHATSAPPDISPOSITION": "WhatsApp-Disposition löschen",
+    "DELETE_WHATSAPPCANNEDANSWER": "Textvorlage löschen",
+    "DELETE_WHATSAPPDISPOSITION": "Qualifizierung löschen",
     "DELETE_WHATSAPPQUEUE": "WhatsApp-Warteschlange löschen",
     "DESCRIPTION": "Beschreibung",
     "DIALOGFLOW": "DialogFlow",
-    "DISPOSITION": "Anordnung",
-    "DISPOSITIONS": "Dispositionen",
-    "DOWNLOAD_INTERACTION": "Herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Ohne Anhänge herunterladen",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
+    "DISPOSITION": "Qualifizierung",
+    "DISPOSITIONS": "Qualifizierungen",
+    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
+    "EDIT_AGENT": "Agenten bearbeiten",
+    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "EDIT_DIALOGFLOW": "Bearbeiten Sie die DialogFlow-Konfiguration",
-    "EDIT_GOTOIF": "Bearbeiten Sie Gotoif",
-    "EDIT_GOTOP": "Gotop bearbeiten",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "EDIT_DIALOGFLOW": "DialogFlow-Konfiguration bearbeiten",
+    "EDIT_GOTOIF": "GoToIf bearbeiten",
+    "EDIT_GOTOP": "GoTop bearbeiten",
     "EDIT_NOOP": "Noop bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_SYSTEM": "System bearbeiten",
     "EDIT_TAG": "Tag bearbeiten",
     "EDIT_WHATSAPPACCOUNT": "WhatsApp-Konto bearbeiten",
-    "EDIT_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "EDIT_WHATSAPPDISPOSITION": "WhatsApp-Disposition bearbeiten",
-    "EDIT_WHATSAPPQUEUE": "Bearbeiten Sie die WhatsApp-Warteschlange",
-    "FALSEPRIORITY": "Falsche Priorität",
-    "GENERAL": "Allgemeines",
+    "EDIT_WHATSAPPCANNEDANSWER": "Textvorlage bearbeiten",
+    "EDIT_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung bearbeiten",
+    "EDIT_WHATSAPPQUEUE": "Whatsapp-Warteschlange bearbeiten",
+    "FALSEPRIORITY": "Priorität falsch",
+    "GENERAL": "Allgemein",
     "GOTOIF": "Gotoif",
     "GOTOP": "Zum Seitenanfang",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Wechseln Sie zur WhatsApp-Warteschlange in Echtzeit",
-    "GO_TO_WHATSAPPACCOUNTS": "Gehe zu Konto",
-    "ID": "Ich würde",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Zur Echtzeitansicht gehen",
+    "GO_TO_WHATSAPPACCOUNTS": "Zum Whatsapp-Konto gehen",
+    "ID": "ID",
     "IDLE": "Leerlauf",
     "INSERT_MESSAGE_HERE": "Nachricht hier einfügen",
     "INTERACTIONS": "Interaktionen",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Gehen Sie zu Interaktionen",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Zu Interaktionen gehen",
     "KEY": "Schlüssel",
     "LANGUAGE": "Sprache",
     "LASTMESSAGE": "Letzte Nachricht",
-    "LEXREGION": "Region",
-    "LIST": "Aufführen",
-    "LOGGED_IN": "Eingeloggt (SIP verbunden)",
+    "LEXREGION": "LexRegion",
+    "LIST": "Liste",
+    "LOGGED_IN": "Eingeloggt",
     "LOGIN_TIME": "Anmeldezeit",
     "LOGOUT": "Ausloggen",
-    "MANDATORYDISPOSITION": "Obligatorische Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern erforderlich",
     "MORE": "Mehr",
-    "MOTIONPROXY": "Proxy- oder Bewegungsdomäne",
+    "MOTIONPROXY": "Proxy",
     "MULTI_SELECT_TOGGLE": "Mehrfachauswahl umschalten",
     "NAME": "Name",
     "NEW_WHATSAPPACCOUNT": "Neues WhatsApp-Konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Neue vordefinierte WhatsApp-Antwort",
-    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Disposition",
+    "NEW_WHATSAPPCANNEDANSWER": "Neue WhatsApp-Textvorlage",
+    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Quailifizierung",
     "NEW_WHATSAPPQUEUE": "Neue WhatsApp-Warteschlange",
     "NOOP": "Noop",
-    "NOTE": "Hinweis",
+    "NOTE": "Anmerkung",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klang",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "NO_AGENT_ONLINE": "Kein Agent online",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
-    "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine vordefinierten WhatsApp-Antworten verfügbar",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine WhatsApp-Dispositionen verfügbar",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Keine WhatsApp-Konten verfügbar",
     "OF": "von",
     "OPENED": "Geöffnet",
     "PROXY": "Proxy",
     "QUEUE": "Warteschlange",
     "QUEUES": "Warteschlangen",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
+    "QUEUETRANSFER": "Transfer an Warteschlange",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangentransfer",
     "READY": "Bereit",
     "REALTIME": "Echtzeit",
-    "RECEIVEURL": "URL erhalten",
+    "RECEIVEURL": "URL für Erhalt",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "REMOTE": "Fernbedienung",
+    "REMOTE": "Remote",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "SAVE": "sparen",
+    "SAVE": "Speichern",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
     "SEARCH_FOR_ANYONE": "Suche",
-    "SECRETACCESSKEY": "Zugriffsschlüsselgeheimnis",
+    "SECRETACCESSKEY": "Geheimer Schlüssel",
     "SELECTED": "Ausgewählt",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "SELECTED_TEAMS": "Ausgewählte Teams",
-    "SELECT_ALL": "Wählen Sie Alle",
-    "SELECT_NONE": "Nichts ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "SEND": "Senden",
-    "SETTINGS": "die Einstellungen",
-    "SPYINTERACTION": "Spionage-Interaktion",
-    "STARTEDAT": "Fing an bei",
-    "START_SCREENRECORDING": "Bildschirmaufnahme starten",
+    "SETTINGS": "Einstellungen",
+    "SPYINTERACTION": "Mitlesen",
+    "STARTEDAT": "Startdatum",
+    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
     "STATUS": "Status",
     "STOP_SCREENRECORDING": "Bildschirmaufzeichnung stoppen",
     "STRATEGY": "Strategie",
     "SYSTEM": "System",
-    "TAG": "Etikett",
-    "TAGS": "Stichworte",
+    "TAG": "Tag",
+    "TAGS": "Tags",
     "TEAMADD_WHATSAPPQUEUE": "Team zur WhatsApp-Warteschlange hinzufügen",
-    "TEAMS_ASSOCIATION": "Mannschaftsverband",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "TEXT": "Text",
-    "TIMEOUT": "Auszeit",
+    "TIMEOUT": "Zeitüberschreitung",
     "TIMER": "Timer",
-    "TIMES": "Mal",
-    "TO": "Zu",
-    "TOKEN": "Zeichen",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "TRANSFER": "Transfer",
+    "TIMES": "Zeiten",
+    "TO": "an",
+    "TOKEN": "Token",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "TRANSFER": "Weiterleiten",
     "TRUEPRIORITY": "Wahre Priorität",
-    "TYPE": "Art",
+    "TYPE": "Typ",
     "UNPAUSE": "Pause beenden",
     "VALUE": "Wert",
     "VARIABLE": "Variable",
-    "WAITFORTHEASSIGNEDAGENT": "Warten Sie auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Auf den zugewiesenen Mitarbeiter warten",
     "WAITING": "Warten",
     "WELCOMEMESSAGE": "Willkommensnachricht",
     "WHATSAPP": "WhatsApp Connector",
     "WHATSAPPACCOUNTS": "WhatsApp-Konten",
-    "WHATSAPPCANNEDANSWERS": "WhatsApp vordefinierte Antworten",
-    "WHATSAPPDISPOSITIONS": "WhatsApp Dispositionen",
+    "WHATSAPPCANNEDANSWERS": "WhatsApp-Textvorlagen",
+    "WHATSAPPDISPOSITIONS": "WhatsApp-Qualifizierungen",
     "WHATSAPPQUEUES": "WhatsApp-Warteschlangen",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID"
   }
 }
index 0920067..8ac07bf 100644 (file)
     "LASTMESSAGE": "Last Message",
     "LEXREGION": "Region",
     "LIST": "List",
-    "LOGGED_IN": "Logged In (SIP Connected)",
+    "LOGGED_IN": "Logged In",
     "LOGIN_TIME": "Login Time",
     "LOGOUT": "Logout",
     "MANDATORYDISPOSITION": "Mandatory Disposition",
index 03aafb4..a7cb714 100644 (file)
     "LASTMESSAGE": "Ultimo mensaje",
     "LEXREGION": "Región",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado (SIP conectado)",
+    "LOGGED_IN": "Conectado",
     "LOGIN_TIME": "Hora de inicio de sesión",
     "LOGOUT": "Cerrar sesión",
     "MANDATORYDISPOSITION": "Tipificación obligatoria",
index 5ff75f9..c40e5bd 100644 (file)
     "LASTMESSAGE": "Viimane sõnum",
     "LEXREGION": "Piirkond",
     "LIST": "Loend",
-    "LOGGED_IN": "Sisse logitud (SIP ühendatud)",
+    "LOGGED_IN": "Sisse logitud",
     "LOGIN_TIME": "Sisselogimise aeg",
     "LOGOUT": "Logi välja",
     "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
index 2bfad68..76a3444 100644 (file)
     "LASTMESSAGE": "آخرین پیام",
     "LEXREGION": "منطقه",
     "LIST": "لیست",
-    "LOGGED_IN": "ورود به سیستم (SIP متصل)",
+    "LOGGED_IN": "ورود به سیستم",
     "LOGIN_TIME": "زمان ورود",
     "LOGOUT": "خروج",
     "MANDATORYDISPOSITION": "اختیار اجباری",
index 647eabf..52f4f20 100644 (file)
     "LASTMESSAGE": "Viimeinen viesti",
     "LEXREGION": "alue",
     "LIST": "Lista",
-    "LOGGED_IN": "Sisäänkirjautunut (SIP kytketty)",
+    "LOGGED_IN": "Sisäänkirjautunut",
     "LOGIN_TIME": "Sisäänkirjautumisaika",
     "LOGOUT": "Kirjautua ulos",
     "MANDATORYDISPOSITION": "Pakollinen sijoittaminen",
index b2e331a..919bb35 100644 (file)
     "LASTMESSAGE": "Dernier message",
     "LEXREGION": "Région",
     "LIST": "liste",
-    "LOGGED_IN": "Connecté (SIP connecté)",
+    "LOGGED_IN": "Connecté",
     "LOGIN_TIME": "Heure de connexion",
     "LOGOUT": "Se déconnecter",
     "MANDATORYDISPOSITION": "Disposition obligatoire",
index 00d0fa4..a6c765d 100644 (file)
     "LASTMESSAGE": "הודעה אחרונה",
     "LEXREGION": "אזור",
     "LIST": "רשימה",
-    "LOGGED_IN": "מחובר (SIP מחובר)",
+    "LOGGED_IN": "מחובר",
     "LOGIN_TIME": "זמן כניסה",
     "LOGOUT": "להתנתק",
     "MANDATORYDISPOSITION": "התנהגות חובה",
index 819f531..0550a1a 100644 (file)
     "LASTMESSAGE": "आखिरी सन्देश",
     "LEXREGION": "क्षेत्र",
     "LIST": "सूची",
-    "LOGGED_IN": "लॉग इन (SIP कनेक्टेड)",
+    "LOGGED_IN": "लॉग इन",
     "LOGIN_TIME": "लॉग इन टाइम",
     "LOGOUT": "लॉग आउट",
     "MANDATORYDISPOSITION": "अनिवार्य विवाद",
index b2e703c..246085c 100644 (file)
     "LASTMESSAGE": "Pesan Terakhir",
     "LEXREGION": "Wilayah",
     "LIST": "Daftar",
-    "LOGGED_IN": "Masuk (SIP Terhubung)",
+    "LOGGED_IN": "Masuk",
     "LOGIN_TIME": "Waktu Login",
     "LOGOUT": "Keluar",
     "MANDATORYDISPOSITION": "Disposisi Wajib",
index 0350e8d..d23db62 100644 (file)
     "LASTMESSAGE": "最後のメッセージ",
     "LEXREGION": "領域",
     "LIST": "リスト",
-    "LOGGED_IN": "ログイン済み(SIP接続済み)",
+    "LOGGED_IN": "ログイン済み",
     "LOGIN_TIME": "ログイン時間",
     "LOGOUT": "ログアウト",
     "MANDATORYDISPOSITION": "強制処分",
index d6c34e1..53a3344 100644 (file)
     "LASTMESSAGE": "마지막 메시지",
     "LEXREGION": "부위",
     "LIST": "명부",
-    "LOGGED_IN": "로그인 됨 (SIP 연결됨)",
+    "LOGGED_IN": "로그인 됨",
     "LOGIN_TIME": "로그인 시간",
     "LOGOUT": "로그 아웃",
     "MANDATORYDISPOSITION": "필수 처분",
index 282dd81..a074057 100644 (file)
     "LASTMESSAGE": "Paskutinė žinutė",
     "LEXREGION": "Regionas",
     "LIST": "Sąrašas",
-    "LOGGED_IN": "Prisijungęs (prijungtas prie SIP)",
+    "LOGGED_IN": "Prisijungęs",
     "LOGIN_TIME": "Prisijungimo laikas",
     "LOGOUT": "Atsijungti",
     "MANDATORYDISPOSITION": "Privalomas nusistatymas",
index 2389947..fb7beca 100644 (file)
     "LASTMESSAGE": "Pēdējā ziņa",
     "LEXREGION": "Novads",
     "LIST": "Saraksts",
-    "LOGGED_IN": "Pieteicies (savienots ar SIP)",
+    "LOGGED_IN": "Pieteicies",
     "LOGIN_TIME": "Pieteikšanās laiks",
     "LOGOUT": "Izlogoties",
     "MANDATORYDISPOSITION": "Obligāta rīcība",
index 85a42ac..5eed559 100644 (file)
     "LASTMESSAGE": "Laatste bericht",
     "LEXREGION": "Regio",
     "LIST": "Lijst",
-    "LOGGED_IN": "Ingelogd (SIP verbonden)",
+    "LOGGED_IN": "Ingelogd",
     "LOGIN_TIME": "Login Tijd",
     "LOGOUT": "Uitloggen",
     "MANDATORYDISPOSITION": "Verplichte dispositie",
index b8c8675..efdafa2 100644 (file)
     "LASTMESSAGE": "Siste melding",
     "LEXREGION": "Region",
     "LIST": "Liste",
-    "LOGGED_IN": "Logget inn (SIP-tilkoblet)",
+    "LOGGED_IN": "Logget inn",
     "LOGIN_TIME": "Innloggingstid",
     "LOGOUT": "Logg ut",
     "MANDATORYDISPOSITION": "Obligatorisk disposisjon",
index da5dad6..510b8e5 100644 (file)
     "LASTMESSAGE": "Ostatnia wiadomość",
     "LEXREGION": "Region",
     "LIST": "Lista",
-    "LOGGED_IN": "Zalogowano (połączenie SIP)",
+    "LOGGED_IN": "Zalogowano",
     "LOGIN_TIME": "Czas logowania",
     "LOGOUT": "Wyloguj",
     "MANDATORYDISPOSITION": "Obowiązkowa dyspozycja",
index ec3412a..29fd2ec 100644 (file)
     "LASTMESSAGE": "Última mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado (SIP conectado)",
+    "LOGGED_IN": "Conectado",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
     "MANDATORYDISPOSITION": "Disposição Obrigatória",
index ec3412a..29fd2ec 100644 (file)
     "LASTMESSAGE": "Última mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado (SIP conectado)",
+    "LOGGED_IN": "Conectado",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
     "MANDATORYDISPOSITION": "Disposição Obrigatória",
index 87a083a..5131899 100644 (file)
     "LASTMESSAGE": "Последнее сообщение",
     "LEXREGION": "Область",
     "LIST": "Список",
-    "LOGGED_IN": "Авторизован (SIP подключен)",
+    "LOGGED_IN": "Авторизован",
     "LOGIN_TIME": "Время входа",
     "LOGOUT": "Выйти",
     "MANDATORYDISPOSITION": "Обязательное распоряжение",
index f4f2b7e..ae13a80 100644 (file)
     "LASTMESSAGE": "Senaste meddelandet",
     "LEXREGION": "Område",
     "LIST": "Lista",
-    "LOGGED_IN": "Inloggad (SIP ansluten)",
+    "LOGGED_IN": "Inloggad",
     "LOGIN_TIME": "Inloggningstid",
     "LOGOUT": "Logga ut",
     "MANDATORYDISPOSITION": "Obligatorisk disposition",
index e867462..da1b4f9 100644 (file)
     "LASTMESSAGE": "Son Mesaj",
     "LEXREGION": "bölge",
     "LIST": "Liste",
-    "LOGGED_IN": "Oturum Açıldı (SIP Bağlı)",
+    "LOGGED_IN": "Oturum Açıldı",
     "LOGIN_TIME": "Giriş Zamanı",
     "LOGOUT": "Çıkış Yap",
     "MANDATORYDISPOSITION": "Zorunlu Elden Çıkarma",
index b81f80a..4804111 100644 (file)
     "LASTMESSAGE": "最后留言",
     "LEXREGION": "地区",
     "LIST": "清单",
-    "LOGGED_IN": "已登录(已连接SIP)",
+    "LOGGED_IN": "已登录",
     "LOGIN_TIME": "登录时间",
     "LOGOUT": "登出",
     "MANDATORYDISPOSITION": "强制性",
index cb5a2ee..6d85da7 100644 (file)
     "LASTMESSAGE": "最後留言",
     "LEXREGION": "地區",
     "LIST": "清單",
-    "LOGGED_IN": "已登錄(已連接SIP)",
+    "LOGGED_IN": "已登錄",
     "LOGIN_TIME": "登錄時間",
     "LOGOUT": "登出",
     "MANDATORYDISPOSITION": "強制性",
index 3162f7a..fd8ccd9 100644 (file)
     "CHAT": "CHAT",
     "ACTIVITY": "Aktivität",
     "FRIENDS": "Freunde",
-    "APP_SERVERS": "Anwendungsserver",
-    "USER_STATS": "Benutzer Stats",
-    "EVENTS": "Veranstaltungen",
-    "NOTES": "Hinweise",
-    "QUICK_SETTINGS": "Schnelle Einstellungen",
+    "APP_SERVERS": "Server Anwendung",
+    "USER_STATS": "Benutzer Statistiken",
+    "EVENTS": "Ereignisse",
+    "NOTES": "Notizen",
+    "QUICK_SETTINGS": "Schnelleinstellungen",
     "NOTIFICATIONS": "Benachrichtigungen",
     "CLOUD_SYNC": "Cloud Synchronisieren",
-    "RETRO_THRUSTERS": "Retro Triebwerke",
-    "RECENT": "Die jüngsten",
+    "RETRO_THRUSTERS": "Retro Thrusters",
+    "RECENT": "Neuste",
     "START_NEW_CHAT": "Neuen Chat starten",
     "BACK": "Zurück",
-    "CALL": "Anruf",
+    "CALL": "Anrufen",
     "MORE": "Mehr",
     "SEND_MESSAGE": "Nachricht senden",
-    "REPLY_PLACEHOLDER": "Geben Sie ein, und drücken Sie die Eingabetaste, um Nachricht senden",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Kontakt xCALLY Motion Support",
+    "REPLY_PLACEHOLDER": "Nachricht eingeben und Enter drücken zum Senden",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Support kontaktieren",
     "EXPIRATION_DATE": "Ablaufdatum",
     "EXPIRATION_REASON": "Ablauf Grund",
     "LICENSE": "Lizenz",
-    "NEW_TOKEN": "Neue Token",
-    "OLD_TOKEN": "Alte Token",
+    "NEW_TOKEN": "Neuer Token",
+    "OLD_TOKEN": "Alter Token",
     "SEND_EMAIL_TO": "E-Mail senden an",
     "TOKEN": "Token",
-    "EXPIRATION_REASON_MESSAGE": "Ihre Lizenz ist abgelaufen oder Ihre Maschine eindeutige Id wurde aufgrund einer Änderung an Ihrem System aktualisiert. Die xCALLY Motion Support Team Ihre alte und Ihre neue uuid senden Kontakt.",
-    "GRAY_PERIOD_EXPIRATION": "Grau Zeitraum Ablauf",
+    "EXPIRATION_REASON_MESSAGE": "Ihre Lizenz ist abgelaufen oder Ihre eindeutige ID wurde aufgrund einer Änderung an Ihrem System aktualisiert. Bitte den Support kontaktieren",
+    "GRAY_PERIOD_EXPIRATION": "Ablauf Testphase",
     "ERRORS": {
       "NAME_REQUIRED": "Pflichtfeld"
     },
-    "EXPIRATION_GRAY_PERIOD": "Ablauf Grauzeit",
-    "NO_AVAILABLE_GROUPS": "Keine verfügbaren Gruppen",
-    "SAVE": "sparen",
-    "INFO": "Info",
+    "EXPIRATION_GRAY_PERIOD": "Ablauf Testphase",
+    "NO_AVAILABLE_GROUPS": "Keine Gruppen verfügbar",
+    "SAVE": "Speichern",
+    "INFO": "Information",
     "NEW_CHATGROUP": "Neue Gruppe",
     "NAME": "Name",
     "MEMBERS": "Mitglieder",
@@ -65,9 +65,9 @@
     "DELETE": "Löschen",
     "SEARCH": "Suche",
     "USERS": "Benutzer",
-    "EXPIRATION_REASON_MESSAGE_GRAY": "Ihre Lizenz ist abgelaufen oder wurde deaktiviert. Kontaktieren Sie xCALLY Motion Support Team.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Die eindeutige ID Ihres Rechners wurde aufgrund einer Änderung Ihres Systems aktualisiert. Kontaktieren Sie xCALLY Motion Support Team, das sowohl Ihren alten als auch Ihren neuen UUID sendet.",
-    "MESSENGER_DISABLED": "Das interne Messaging ist für diesen Agenten deaktiviert!",
+    "EXPIRATION_REASON_MESSAGE_GRAY": "Ihre Lizenz ist abgelaufen oder wurde deaktiviert. Bitte den Support kontaktieren.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Ihre Lizenz ist abgelaufen oder Ihre eindeutige ID wurde aufgrund einer Änderung an Ihrem System aktualisiert. Bitte den Support kontaktieren",
+    "MESSENGER_DISABLED": "Internes Messaging für diesen Benutzer nicht aktiviert",
     "WARNING": "Warnung"
   }
 }
index 1d7248b..6eb58fc 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "TITLE": "Ihr Kennwort zurücksetzen",
-    "EMAIL_ADRESS": "E-mail Adresse",
-    "PASSWORD": "Kennwort",
-    "PASSWORD_CONFIRM": "Kennwort (bestätigen)",
-    "UPDATE_PASSWORD": "Kennwort zurücksetzen",
+    "TITLE": "Passwort zurücksetzen",
+    "EMAIL_ADRESS": "E-Mail Adresse",
+    "PASSWORD": "Passwort",
+    "PASSWORD_CONFIRM": "Passwort bestätigen",
+    "UPDATE_PASSWORD": "Passwort zurücksetzen",
     "GO_BACK": "Zurück zum Login",
-    "PASSWORD_RESET": "Kennwort zurücksetzen",
-    "PASSWORD_RESET_MESSAGE": "Ihr Passwort wurde korrekt zurückgesetzt wurde, können Sie sich jetzt!",
-    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
+    "PASSWORD_RESET": "Passwort zurücksetzen",
+    "PASSWORD_RESET_MESSAGE": "Das Passwort wurde erfolgreich zurückgesetzt. Sie können sich nun erneut anmelden",
+    "PASSWORD_RESET_ERROR": "Fehler beim Zurücksetzen des Passwortes",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Im Feld \"E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse",
-      "PASSWORD_REQUIRED": "Kennwort Feld ist erforderlich.",
+      "EMAIL_REQUIRED": "E-Mail Adresse erfoderlich",
+      "EMAIL_MUST_VALID": "E-Mail Adresse ungültig",
+      "PASSWORD_REQUIRED": "Passwort erforderlich",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein.",
-      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, mit einem Minimum von 1 Kleinbuchstaben, Großbuchstaben, 1 numerisches und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
+      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, Minimum von 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index a399ee6..b6abdf2 100644 (file)
@@ -1,11 +1,11 @@
 {
   "TOOLBAR": {
-    "TOGGLE_NAVIGATION": "Navigation wechseln",
-    "TOGGLE_NAVIGATION_FOLD": "Navigation wechseln Fach",
-    "TOGGLE_NAVIGATION_MODE": "Navigation Modus umschalten",
+    "TOGGLE_NAVIGATION": "Navigation umschalten",
+    "TOGGLE_NAVIGATION_FOLD": "Navigation einklappen",
+    "TOGGLE_NAVIGATION_MODE": "Navigation Moduswechsel",
     "SEARCH": "Suche",
-    "USER_SETTINGS": "Benutzereinstellungen",
-    "TOGGLE_QUICK_PANEL": "Um schnelle Panel",
+    "USER_SETTINGS": "Nutzereinstellungen",
+    "TOGGLE_QUICK_PANEL": "Schnelles Panel umschalten",
     "ENGLISH": "Englisch",
     "ITALIAN": "Italienisch",
     "FRENCH": "Französisch",
     "CHINESESIMPLIFIED": "Vereinfachtes Chinesisch",
     "CHINESETRADITIONAL": "Traditionelles Chinesisch",
     "DUTCH": "Niederländisch",
-    "FINNISH": "Finnische",
+    "FINNISH": "Finnisch",
     "DANISH": "Dänisch",
     "PORTUGUESE": "Portugiesisch",
     "NORWEGIAN": "Norwegisch",
     "HINDI": "Hindi",
     "TURKISH": "Türkisch",
     "PERSIAN": "Persisch",
-    "LOGIN_TIME": "Login Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "PREVIEW": "Vorschau",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "NEW_PASSWORD": "Neues Passwort",
     "OLD_PASSWORD": "Altes Passwort",
     "SAVE": "Speichern",
     "TRIAL_VERSION": "Testversion",
-    "SOMEONE_LOGGED_YOU_OUT": "Jemand eingeloggt haben, möchten Sie angemeldet bleiben?",
+    "SOMEONE_LOGGED_YOU_OUT": "Sie wurden von einem anderen Benutzer abgemeldet. Erneut anmelden?",
     "STAY_LOGGED": "Angemeldet bleiben",
     "WARNING": "Warnung",
     "PAUSE": "Pause",
-    "RESUME": "Lebenslauf",
-    "NO_PAUSES_AVAILABLE": "Keine Pausen zur Verfügung",
-    "LATVIAN": "Lettische",
+    "RESUME": "Fortsetzen",
+    "NO_PAUSES_AVAILABLE": "Keine Pausen verfügbar",
+    "LATVIAN": "Lettisch",
     "POLISH": "Polnisch",
     "ERRORS": {
       "FIELD_REQUIRED": "Pflichtfeld",
       "PASSWORD_REQUIRED": "Pflichtfeld",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
-      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden"
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten.",
+      "PASSWORD_OLDPASSWORD_MATCH": "Die Passwörter stimmen nicht überein"
     },
     "RESETPASSWORD": "Passwort zurücksetzen",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bevor Ihr Passwort abläuft",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bis zum Ablauf des Passwortes",
     "BROWSER_COMPATIBILITY": "Browserkompatibilität [Chrome, Opera, Safari]",
     "RECORDING": "Aufzeichnung",
-    "INVALID_LICENSE": "Ungültige Lizenz",
+    "INVALID_LICENSE": "Lizenz ungültig",
     "BROWSER": "Browser",
     "OS": "Betriebssystem",
-    "REQUIREMENTS": "Bedarf",
+    "REQUIREMENTS": "Anforderungen",
     "LICENSE": "Lizenz",
     "HTTPS": "HTTPS",
     "WEBRTCSUPPORT": "WebRTC-Unterstützung",
-    "REGISTERED": "Eingetragen",
+    "REGISTERED": "Registriert",
     "NOT_REGISTERED": "Nicht registriert",
-    "WEBRTC_LICENSE_NOT_ENABELD": "Die WebRTC-Lizenz ist nicht aktiviert",
-    "ATTENDED_TRANSFER": "Begleiteter Tranfer",
+    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC-Lizenz ist nicht aktiviert",
+    "ATTENDED_TRANSFER": "Warmer Transfer",
     "TRANSFER": "Transfer",
     "TARGET": "Ziel",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "FILENAME": "Dateiname",
     "STATUS": "Status",
     "ACTIONS": "Aktionen",
-    "SPEAKER": "Redner",
-    "RINGING": "Klingelton",
+    "SPEAKER": "Lautsprecher",
+    "RINGING": "Klingeln",
     "MICROPHONE": "Mikrofon",
     "PROFILE": "Profil",
-    "SERVICES": "Dienstleistungen",
+    "SERVICES": "Dienste",
     "AUDIO": "Audio",
     "FULLNAME": "Vollständiger Name",
     "NAME": "Name",
     "INTERNAL": "Intern",
-    "RINGINGDEVICE": "Klingelgerät",
-    "SPEAKERDEVICE": "Lautsprechergerät",
-    "MICROPHONEDEVICE": "Mikrofon Gerät",
+    "RINGINGDEVICE": "Klingeln auf Gerät",
+    "SPEAKERDEVICE": "Verwendeter Lautsprecher",
+    "MICROPHONEDEVICE": "Verwendetes Mikrofon",
     "CHANGEPASSWORD": "Passwort ändern",
-    "SETTINGS": "die Einstellungen",
+    "SETTINGS": "Einstellungen",
     "AUTOANSWER": "Automatische Antwort",
     "INDONESIAN": "Indonesisch",
     "ARABIC": "Arabisch",
-    "CALL": "Anruf",
+    "CALL": "Anrufen",
     "PREFIXES": "Präfixe",
     "HEBREW": "Hebräisch",
-    "ESTONIAN": "estnisch",
+    "ESTONIAN": "Estnisch",
     "CZECH": "Tschechisch",
-    "BRAZILIAN": "Brasilianer",
-    "CONFERENCE": "Konferenz mit 2 aktiven Sessions",
-    "CHANGE_LANGUAGE_MESSAGE": "Denken Sie daran, die Seite zu aktualisieren, um die RTL-Unterstützung anzuwenden (falls aktiviert).",
+    "BRAZILIAN": "Brasilianisch",
+    "CONFERENCE": "Konferenz mit 2 aktiven Sitzungen",
+    "CHANGE_LANGUAGE_MESSAGE": "Bitte Seite aktualisieren, um Änderungen zu übernehmen",
     "CHANGE_LANGUAGE_TITLE": "Sprache ändern",
     "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Keine Audiogeräte verfügbar",
     "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Kein Mikrofon vorhanden",
     "WEBRTC_SPEAKER_NOT_AVAILABLE": "Kein Lautsprecher verfügbar",
     "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
-    "LITHUANIAN": "litauisch",
+    "LITHUANIAN": "Litauisch",
     "NOTIFICATION_TITLE": "Neue Benachrichtigung von {{Absender}}",
     "NOTIFICATION_TITLE_RECIPIENT": "an {{Empfänger}}",
     "USER_FORCE_LOGOUT": "{{ip}} hat sich mit Ihren Anmeldeinformationen angemeldet.\nMehrfachanmeldungen sind nicht zulässig",
index aa48e51..5e3b995 100644 (file)
@@ -16,7 +16,7 @@
 
   <link rel="stylesheet" href="styles/vendor.def00a0c.css">
 
-  <link rel="stylesheet" href="styles/app.91ca40ed.css">
+  <link rel="stylesheet" href="styles/app.2d427cb4.css">
 
   <!-- <link href='//fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700italic,700,900,900italic'
               rel='stylesheet' type='text/css'> -->
@@ -68,7 +68,7 @@
   <script src="assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.js"></script>
   <!-- ANGULAR-MATERIAL-FORM-BUILDER -->
 
-  <script src="scripts/app.79e08137.js"></script>
+  <script src="scripts/app.b18c402c.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 52%
rename from public/scripts/app.79e08137.js
rename to public/scripts/app.b18c402c.js
index 19b40ec..d288f16 100644 (file)
@@ -1 +1 @@
-!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",controller:"AgentsChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth",function(e,n,t){return t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",controller:"AgentsFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver","Auth",function(e,n){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",controller:"AgentsMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",controller:"AgentsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",controller:"AgentsOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",controller:"AgentsSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver","Auth",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",controller:"AgentsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(u,t,p,e,a,i,n,g,s,v,h,f,b,o,A){var E=this,r=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],l=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function d(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){new Promise(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){l.webrtc=_.pick(E.conf,r),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(l))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function c(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",u.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function m(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function x(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function N(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function D(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function P(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(l.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:p(function(){E.showDialpad=!1})}}),E.$onInit=function(){d(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];Promise.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();if(c.voicePause&&c.phoneBarDnd||E.originateInProgress)r=!1;else if(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase()){var m=0==d?500:1e3*d;console.debug("auto answer enabled after:"+m+" ms"),p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},m)}}r?(o.call_id=e.request.call_id,n&&P(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&P(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=O.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),p(function(){u.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),o.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),o.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),o.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?D(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),o.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),o.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=D(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),o.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=D(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),o.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return m(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){c()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return m(e)}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):c():c()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),c())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=x,u.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!1)))})}),u.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),u.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),u.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return m(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:N(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:N(E.sessions[t],"requestFailed","top right",3e3)}})})}),u.$on("$destroy",function(){console.debug("$destroy event fired"),o.removeAllListeners("webbar:originate"),o.removeAllListeners("webbar:hangup"),o.removeAllListeners("webbar:answer"),o.removeAllListeners("webbar:hold"),o.removeAllListeners("webbar:unhold"),o.removeAllListeners("webbar:transfer"),o.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n){var t=this;function a(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return Promise.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n)return n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)});c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(n){var a={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(a,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){return n[a[e]].describe().$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,C,O,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(C,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(O,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(C,"id","name"),pause_id:U(O,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getChatWebsiteInteractions=p,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=g,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("chat_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userChatQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userChatQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.chatPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.chatPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("chat_queue:save"),o.removeAllListeners("userChatQueue:remove"),o.removeAllListeners("userChatQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){C(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=C,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){C(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function C(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d){var c=this;function m(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,c.ListId=c.contact.ListId||void 0):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),m()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=m,c.getCustomFields=function(e){{if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}},c.getDateFromString=function(e){return null===e?void 0:new Date(e)}}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function C(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function O(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=C,S.getHistories=O,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),C())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),O())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=A.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&N(t)),n){var s=_.find(A.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose"+o+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,i,s,o,e,t,a,r,l,d,c,m){var u=this;function p(){var e=u.selectedDisposition?u.selectedDisposition.name.toLowerCase():void 0;return{id:u.call.uniqueid,disposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,secondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,thirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?l.getCurrentUser().id:null,OwnerId:l.getCurrentUser().id}}function g(e){n.hide([e,u.autoClose])}u.isReschedule=!1,u.recallme=!1,u.queueCampaign=void 0,u.queueCampaigns={count:0,rows:[]},u.dispositions=_.orderBy(_.concat([],e.rows,t.rows),["name"],["asc"]),u.contact=r,u.call=a,u.note=u.call.note||void 0,u.dialerCall=!1,u.hasBlackLists=!1,u.availableCalls=c,u.autoClose=m,u.hopper={minDate:new Date,dateTime:new Date},u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]?(u.dialerCall=!0,o.voiceQueue.getBlackLists({id:u.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(u.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):o.user.getQueues({id:l.getCurrentUser().id,fields:"id,name,dialActive",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){u.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.onDispositionChange=function(e){switch(e){case"first":u.selectedDisposition=u.firstLevelDisposition,u.anySecondLevelDisposition=_.some(u.dispositions,["ParentId",u.firstLevelDisposition.id]),u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.anyThirdLevelDisposition=!1;break;case"second":u.selectedDisposition=u.secondLevelDisposition,u.anyThirdLevelDisposition=_.some(u.dispositions,["ParentId",u.secondLevelDisposition.id]);break;case"third":u.selectedDisposition=u.thirdLevelDisposition}},u.clearDispositionSelection=function(e){"second"===e?(u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.selectedDisposition=u.firstLevelDisposition):"third"===e&&(u.thirdLevelDisposition=void 0,u.selectedDisposition=u.secondLevelDisposition)},u.saveDisposition=function(e){u.selectedDisposition=_.isNil(e)?u.selectedDisposition:{name:e},e&&(u.firstLevelDisposition=u.selectedDisposition);u.call.note=u.note,o.voiceCallReport.update({id:u.call.uniqueid,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,note:u.note,UserId:l.getCurrentUser().id,ContactId:u.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:u.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.dialerCall&&(o.cmHopperFinal.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(u.selectedDisposition))g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"");else switch(u.selectedDisposition.name.toLowerCase()){case"blacklist":u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(u.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+u.selectedDisposition}),u.selectedDisposition=void 0}).then(function(e){e&&g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}(u.call.variables["xmd-voicequeueid"]);break;case"reschedule":u.isReschedule=!0,u.recallme=!1;break;case"recallme":u.isReschedule=!0,u.recallme=!0;break;default:g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}},u.closeDialog=function(){n.cancel()},u.saveReschedule=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:u.recallme?l.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:u.dialerCall?Number(u.call["xmd-voicequeueid"]):u.queueCampaign?u.queueCampaign.id:null,scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:u.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){u.dialerCall&&o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:u.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(u.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).finally(function(){u.disable=!1,g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get().$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeFax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get().$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get().$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeOpenchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeSms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get().$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeWhatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeFax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeSms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeWhatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeChat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeOpenchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.replace(/\n$/,"")))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").filter("secToTime",function(){return function(e){return new Date(1e3*e).toISOString().substr(11,8)}}).factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getFaxAccountInteractions=p,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=g,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){g(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsFaxRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("fax_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userFaxQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userFaxQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.faxPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.faxPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("fax_queue:save"),o.removeAllListeners("userFaxQueue:remove"),o.removeAllListeners("userFaxQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,u).$promise}function g(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMailAccountInteractions=p,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=g,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){g(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.mailAccount=c||t.params.mailAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMailRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("mail_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userMailQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userMailQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.mailPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.mailPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("mail_queue:save"),o.removeAllListeners("userMailQueue:remove"),o.removeAllListeners("userMailQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=2,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},m.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,u)),_.isNil(e.startPredictive)&&(n.startPredictive=void 0))}),o.on("userVoiceQueueRt:save",function(e){var n=_.find(m.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueueRt:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getOpenchannelAccountInteractions=p,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=g,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsOpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("openchannel_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userOpenchannelQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userOpenchannelQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.openchannelPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.openchannelPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("openchannel_queue:save"),o.removeAllListeners("userOpenchannelQueue:remove"),o.removeAllListeners("userOpenchannelQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsSmsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("sms_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userSmsQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userSmsQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.smsPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.smsPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("sms_queue:save"),o.removeAllListeners("userSmsQueue:remove"),o.removeAllListeners("userSmsQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getSmsAccountInteractions=p,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=g,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){g(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.agents=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="agents",f.listOrder="",f.listOrderAsc=null,f.selectedAgents=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,page:1},f.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'",ngIf:"vm.agent.showWebBar == 1"},{option:"wss",value:"'wss'",ngIf:"vm.agent.showWebBar == 1"},{option:"tls",value:"'tls'",ngIf:"vm.agent.showWebBar == 1"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayextensionMonitor=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'WAV'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:f.agents?f.agents.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getAgents=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Agents",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditAgent=function(e,n){i.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:f.agents.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteAgent=y,f.exportSelectedAgents=function(){var e=angular.copy(f.selectedAgents);return f.selectedAgents=[],e},f.deleteSelectedAgents=function(e){var n=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+f.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedAgents.forEach(function(e){y(e)}),f.selectedAgents=[]})},f.deselectAgents=function(){f.selectedAgents=[]},f.selectAllAgents=function(){f.selectedAgents=f.agents.rows};var b=!0,A=1;function E(e){f.agents=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.agents.rows,{id:e.id}),f.agents.count-=1,f.agents.rows.length||f.getAgents(),p.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:"bull"===c.channel?"voice":c.channel,type:c.direction,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:c.direction,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentqueueaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function c(e){switch(e){case"sound":if(!l.application.appdata)return;return[{key:"save_name",value:l.application.appdata.split("/").pop()}];case"squareProject":if(!l.application.project)return;return[{key:"name",value:l.application.project.split(",")[1]}];case"tag":if(!l.application.tag)return;return[{key:"name",value:l.application.tag}];case"trunk":if(!l.application.trunk)return;return[{key:"name",value:l.application.trunk}];case"user":if(!l.application.user&&!l.application.users)return;return l.application.user?[{key:"name",value:l.application.user.split("/")[1]}]:_.map(l.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!l.application.name)return;return[{key:"name",value:l.application.name}];case"voiceContext":if(!l.application.context)return;return[{key:"name",value:l.application.context}];case"voiceMail":if(!l.application.voiceMail)return;return[{key:"mailbox",value:l.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!l.application.queue)return;return[{key:"name",value:l.application.queue}]}}function m(){s.getResourcesByRole(l.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},c("trunk")).then(function(e){l.trunks=e}).catch(function(){i.error({title:$translate.instant("TOOLS.TRUNKS"),msg:$translate.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function u(){s.getResourcesByRole(l.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},c("sound")).then(function(e){l.sounds=e}).catch(function(){i.error({title:$translate.instant("TOOLS.SOUNDS"),msg:$translate.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function p(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=c("user"),t=[s.getResourcesByRole(l.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),s.getResourcesByRole(l.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();l.users={rows:n,count:n.length}}).catch(function(){i.error({title:$translate.instant("STAFF.USERS"),msg:$translate.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function g(){l.application.appdata&&e.hide(l.application),e.hide()}l.currentUser=o.getCurrentUser(),l.application=angular.copy(n),l.crudPermissions=r,l.errors=[],l.init=function(){l.application.appdata&&function(){var e=[];switch(l.application.appType){case"agi":l.application.project=l.application.appdata;break;case"dial":e=l.application.appdata.split(","),l.application.tech=d(e[0]),l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]);break;case"externalDial":e=l.application.appdata.split(","),l.application.trunk=e[0].split("/")[1],l.application.phone=e[0].split("/")[2],l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]);break;case"goTo":e=l.application.appdata.split(","),l.application.context=d(e[0]),l.application.extension=d(e[1]),l.application.priority=d(e[2]);break;case"internalDial":e=l.application.appdata.split(","),l.application.user=d(e[0]),l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]);break;case"outboundDial":e=l.application.appdata.split(","),l.application.trunk=e[0].split("/")[1],l.application.phone=e[0].split("/")[2],l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]),l.application.prefix=l.application.phone?l.application.phone.split("$")[0]:void 0,l.application.callerId=l.application.callerID?"CALLERID(all)="+l.application.callerID:void 0;break;case"playback":e=l.application.appdata.split(","),l.application.appdata=d(e[0]),l.application.options=d(e[1]);break;case"queue":e=l.application.appdata.split(","),l.application.queue=d(e[0]),l.application.options=d(e[1]),l.application.URL=d(e[2]),l.application.sound=d(e[3]),l.application.timeout=d(e[4]),l.application.agi=d(e[5]),l.application.macro=d(e[6]),l.application.gosub=d(e[7]),l.application.rule=d(e[8]),l.application.position=d(e[9]);break;case"ringGroup":e=l.application.appdata.split(","),l.application.users=e[0].split("&"),l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]);break;case"set":e=l.application.appdata.split("="),l.application.name=e[0],l.application.value=e[1];break;case"voicemail":e=l.application.appdata.split(","),l.application.voiceMail=d(e[0]),l.application.options=d(e[1])}}();switch(l.application.appType){case"agi":s.getResourcesByRole(l.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},c("squareProject")).then(function(e){l.projects=e}).catch(function(){i.error({title:$translate.instant("CALLYSQUARE.CALLYSQUARE")+" "+$translate.instant("CALLYSQUARE.PROJECTS"),msg:$translate.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":m();break;case"goTo":s.getResourcesByRole(l.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},c("voiceContext")).then(function(e){l.contexts=e}).catch(function(){i.error({title:$translate.instant("VOICE.CONTEXTS"),msg:$translate.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":p();break;case"outboundDial":s.getResourcesByRole(l.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},c("tag")).then(function(e){l.tags=e}).catch(function(){i.error({title:$translate.instant("TOOLS.TAGS"),msg:$translate.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),m();break;case"playback":u();break;case"queue":u(),s.getResourcesByRole(l.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},c("voiceQueue")).then(function(e){l.queues=e}).catch(function(){i.error({title:$translate.instant("VOICE.VOICEQUEUES"),msg:$translate.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":p();break;case"set":s.getResourcesByRole(l.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},c("variable")).then(function(e){l.variables=e}).catch(function(){i.error({title:$translate.instant("TOOLS.VARIABLES"),msg:$translate.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":s.getResourcesByRole(l.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},c("voiceMail")).then(function(e){l.voiceMails=e}).catch(function(){i.error({title:$translate.instant("VOICE.VOICEMAILS"),msg:$translate.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},l.saveRoutingApp=function(){l.errors=[],function(){var e=[];switch(l.application.appType){case"agi":l.application.appdata=l.application.project;break;case"dial":e[0]=l.application.tech,e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",l.application.trunk,l.application.phone].join("/"),e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"goTo":e[0]=l.application.context,e[1]=l.application.extension,e[2]=l.application.priority,l.application.appdata=e.join(",");break;case"internalDial":e[0]=l.application.user,e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"outboundDial":l.application.phone=t.cutdigits?(l.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(l.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?l.application.options=l.application.options.replace("U(xcally-mixmonitor-context)",""):l.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",l.application.trunk,l.application.phone].join("/"),e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"playback":e[0]=l.application.appdata,e[1]=l.application.options,l.application.appdata=e.join(",");break;case"queue":e[0]=l.application.queue,e[1]=l.application.options,e[2]=l.application.URL,e[3]=l.application.sound,e[4]=l.application.timeout,e[5]=l.application.agi,e[6]=l.application.macro,e[7]=l.application.gosub,e[8]=l.application.rule,e[9]=l.application.position,l.application.appdata=e.join(",");break;case"ringGroup":e[0]=l.application.users.join("&"),e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"set":e[0]=l.application.name,e[1]=l.application.value,l.application.appdata=e.join("=");break;case"voicemail":e[0]=l.application.voiceMail,e[1]=l.application.options,l.application.appdata=e.join(",")}}(),g()},l.closeDialog=g}e.$inject=["$mdDialog","$q","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;function d(){var e=[{key:"name",value:l.interval.IntervalId}];i.getResourcesByRole(l.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){l.intervals=e}).catch(function(){a.error({title:$translate.instant("TOOLS.INTERVALS"),msg:$translate.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function c(e){n.hide(e)}l.currentUser=s.getCurrentUser(),l.interval=angular.copy(e),l.intervals=t||{rows:[],count:0},l.types=["always","custom","list"],l.crudPermissions=o,l.errors=[],l.daysOfWeek=r.getDaysOfWeek(),l.monthNumber=r.getMonthNumber(),l.monthName=r.getMonthName(),l.daysOfMonth=r.getDaysOfMonth(),l.initialize=function(){if("*,*,*,*"===l.interval.interval)return l.type=l.interval.IntervalId&&l.interval.application?"list":"always",void("list"===l.type&&d());l.type="custom";var e=l.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),l.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),l.timeRangeTo=s}"*"!==t&&(l.dayOfWeekFrom=t.split("-")[0],l.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(l.monthDayFrom=a.split("-")[0],l.monthDayTo=a.split("-")[1]);"*"!==i&&(l.monthFrom=i.split("-")[0],l.monthTo=i.split("-")[1])},l.onTypeChange=function(){"list"===l.type&&0===l.intervals.count&&d()},l.saveInterval=function(){l.errors=[],l.interval.interval=function(){if(["always","list"].includes(l.type))return"*,*,*,*";var e=[];if("*"!==l.timeRangeFrom&&l.timeRangeFrom&&l.timeRangeTo){var n=(l.timeRangeFrom.getHours()<10?"0":"")+l.timeRangeFrom.getHours()+":"+(l.timeRangeFrom.getMinutes()<10?"0":"")+l.timeRangeFrom.getMinutes(),t=(l.timeRangeTo.getHours()<10?"0":"")+l.timeRangeTo.getHours()+":"+(l.timeRangeTo.getMinutes()<10?"0":"")+l.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return l.dayOfWeekFrom?l.dayOfWeekTo?e.push(l.dayOfWeekFrom+"-"+l.dayOfWeekTo):e.push(l.dayOfWeekFrom):e.push("*"),l.monthDayFrom?l.monthDayTo?e.push(l.monthDayFrom+"-"+l.monthDayTo):e.push(l.monthDayFrom):e.push("*"),l.monthFrom?l.monthTo?e.push(l.monthFrom+"-"+l.monthTo):e.push(l.monthFrom):e.push("*"),e.join()}(),"list"!==l.type&&(l.interval.IntervalId=null);c(l.interval)},l.closeDialog=c}e.$inject=["$mdDialog","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-sip"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata!==e.appdata&&p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata!==e.appdata&&p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata!==e.appdata&&p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting),_.merge(n,_.pick(e,u)))}),o.on("userVoiceQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userVoiceQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueue:remove"),o.removeAllListeners("userVoiceQueue:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(n.disconnect(),n.connect(),a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voiceRecording=c||e.params.voiceRecording||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h){var f=this;function b(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("whatsapp_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userWhatsappQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userWhatsappQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.whatsappPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.whatsappPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("whatsapp_queue:save"),o.removeAllListeners("userWhatsappQueue:remove"),o.removeAllListeners("userWhatsappQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),v(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getWhatsappAccountInteractions=p,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=g,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){g(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){_.isNil(e)&&s.cmHopper.update({id:d.preview.id,UserId:null}),a.hide()}d.customFieldsMap=l&&l.rows?_.mapValues(_.keyBy(l.rows,function(e){return"cf_"+e.id}),"name"):{},d.errors=[],d.hopperIds=[],d.preview=o,d.currentUser=r,d.originated=!1,d.disable=!1,d.disableGetContact=!1,d.hopperIds.push(d.preview.id),d.originatePreview=function(){d.originated=!0,d.disable=!0,_.isEmpty(d.preview)?(i.error({title:"Message",msg:"Contact not available"}),d.disable=!1,d.hopperIds=[],c(!0)):s.rpc.getVoiceQueuesPreview({id:d.preview.id}).$promise.then(function(e){c(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),c(!0)}).finally(function(){d.disable=!1,d.hopperIds=[]})},d.closeDialog=c,d.nextContact=function(){return d.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:d.hopperIds,direction:"next"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(d.disableGetContact=!1,d.hopperIds=[],404===e.status)d.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.previousContact=function(){if(d.disableGetContact=!0,1<d.hopperIds.length){var e=_.without(d.hopperIds,d.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(d.hopperIds,function(e){return e==d.preview.id}),d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e)}).catch(function(e){if(404===e.status)d.hopperIds=[d.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){d.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},d.getFirstAvailableContact=function(){return d.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[d.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){d.disableGetContact=!1})},d.isCustomField=function(e){return _.startsWith(e,"cf_")},d.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},d.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){d.originated||s.cmHopper.update({id:d.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","currentUser","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role&&T.currentUser.name===e.membername){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" />\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' + widget.attrs[0].value | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n              </div>\n\n              <form name="scriptForm" flex="100" novalidate>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n              </form>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'CHAT.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'CHAT.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'CHAT.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'CHAT.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'CHAT.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'CHAT.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'CHAT.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'CHAT.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'CHAT.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'CHAT.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"CHAT.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"CHAT.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"CHAT.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"CHAT.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"CHAT.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"CHAT.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'CHAT.PAGE' | translate}}:', rowsPerPage: '{{'CHAT.ROWSPERPAGE' | translate}}:', of: '{{'CHAT.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-init="vm.getCustomFields(vm.contact.ListId)" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n\n          <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row">\n          <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n            <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n            <md-card-header layout="row" layout-align="space-between">\n              <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                <timer start-time="call.answertime"></timer>\n                <md-tooltip md-direction="bottom">\n                  {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                </md-tooltip>\n              </span>\n              <span ng-if="call.disposedAt" class="text-boxed amber-200-bg mr-0">\n                <timer start-time="call.disposedAt"></timer>\n                <md-tooltip md-direction="bottom">\n                  {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                </md-tooltip>\n              </span>\n            </md-card-header>\n            <md-divider></md-divider>\n            <md-card-content>\n              <div layout="row" layout-align="end center" class="reload-container">\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </div>\n              <div layout="column" layout-align="space-between start" class="mr-16">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="mr-8">\n                  </md-icon>\n                  <span class="h1" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                </div>\n\n                <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                  <md-icon md-font-icon="icon-account"></md-icon>\n                  Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                </div>\n\n                <div class="text h4 pt-8" ng-if="call.queue">\n                  <md-icon md-font-icon="icon-stackoverflow"></md-icon>\n                  Queue: {{call.queue}}\n                </div>\n                <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                  <md-icon md-font-icon="icon-minus"></md-icon>\n                  Extra: {{call.variables.extravar}}\n                </div>\n              </div>\n              <div layout="row" layout-align="end center">\n                <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised">\n                  {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                </md-button>\n              </div>\n            </md-card-content>\n          </md-card>\n          <div flex layout="row" layout-align="end center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <md-input-container ng-if="!vm.dialerCall" class="md-block">\n          <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n          <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n            <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n              {{ queueCampaign.name }} ({{ queueCampaign.dialActive ? \'Active\' : \'Not Active\' }})</md-option>\n          </md-select>\n          <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text" ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeChat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeFax/dialog.html",'<md-dialog class="compose-dialog-fax" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          \x3c!-- <input ng-model="vm.message.subject" type="text"> --\x3e\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n            \x3c!-- <md-icon md-font-icon="icon-close" class="s16"></md-icon> --\x3e\n          </md-button>\n        </div>\n      </div>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-style="{\n    \'max-width\':  {true: \'620px\', false: \'90%\'}[ vm.secret ],\n    \'width\': {true: \'620px\', false: \'100%\'}[ vm.secret ],\n    \'max-height\': {true: undefined, false: \'97%\'}[ vm.secret ]\n  }">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeOpenchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeSms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeWhatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'FAX.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'FAX.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'FAX.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'FAX.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'FAX.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'FAX.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'FAX.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'FAX.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'FAX.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'FAX.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'FAX.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"FAX.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"FAX.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"FAX.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"FAX.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"FAX.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"FAX.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'FAX.PAGE' | translate}}:', rowsPerPage: '{{'FAX.ROWSPERPAGE' | translate}}:', of: '{{'FAX.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n        <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n        <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAILACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.gotoMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="generalForm[\'fontFamily\'].$error" ng-show="generalForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">connTimeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">authTimeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MAIL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MAIL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MAIL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MAIL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MAIL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MAIL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MAIL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MAIL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MAIL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MAIL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MAIL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MAIL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MAIL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MAIL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MAIL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MAIL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MAIL.PAGE' | translate}}:', rowsPerPage: '{{'MAIL.ROWSPERPAGE' | translate}}:', of: '{{'MAIL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MOTIONDIALER.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MOTIONDIALER.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MOTIONDIALER.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MOTIONDIALER.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MOTIONDIALER.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MOTIONDIALER.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MOTIONDIALER.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MOTIONDIALER.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MOTIONDIALER.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MOTIONDIALER.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MOTIONDIALER.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MOTIONDIALER.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MOTIONDIALER.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MOTIONDIALER.PAGE' | translate}}:', rowsPerPage: '{{'MOTIONDIALER.ROWSPERPAGE' | translate}}:', of: '{{'MOTIONDIALER.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'OPENCHANNEL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'OPENCHANNEL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'OPENCHANNEL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'OPENCHANNEL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'OPENCHANNEL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'OPENCHANNEL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'OPENCHANNEL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'OPENCHANNEL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"OPENCHANNEL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"OPENCHANNEL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"OPENCHANNEL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"OPENCHANNEL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"OPENCHANNEL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"OPENCHANNEL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'OPENCHANNEL.PAGE' | translate}}:', rowsPerPage: '{{'OPENCHANNEL.ROWSPERPAGE' | translate}}:', of: '{{'OPENCHANNEL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id ">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name ">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service ">{{ vm.arrayservice[cloudProvider.service].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.uuid}}</span></span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.machineUuid}}</span></span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n            <div ng-messages="generalForm[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'SMS.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'SMS.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'SMS.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'SMS.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'SMS.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'SMS.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'SMS.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'SMS.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'SMS.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'SMS.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'SMS.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"SMS.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"SMS.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"SMS.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"SMS.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"SMS.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"SMS.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'SMS.PAGE' | translate}}:', rowsPerPage: '{{'SMS.ROWSPERPAGE' | translate}}:', of: '{{'SMS.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name ">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar ">{{ vm.arrayshowWebBar[agent.showWebBar].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email ">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone ">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile ">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal ">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'WHATSAPP.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'WHATSAPP.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'WHATSAPP.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'WHATSAPP.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'WHATSAPP.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'WHATSAPP.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'WHATSAPP.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'WHATSAPP.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'WHATSAPP.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"WHATSAPP.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"WHATSAPP.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"WHATSAPP.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"WHATSAPP.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"WHATSAPP.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"WHATSAPP.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'WHATSAPP.PAGE' | translate}}:', rowsPerPage: '{{'WHATSAPP.ROWSPERPAGE' | translate}}:', of: '{{'WHATSAPP.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twillo\'" class="md-block">\n                <label translate="WHATSAPP.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/status?token=\' + vm.whatsappAccount.token + (vm.whatsappAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span translate="{{lang.translation}}">{{lang.title}}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">Preview</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" ng-if="vm.preview">\n        <div class="md-padding md-margin" layout="column" flex="30">\n          <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.ID">ID</label>\n            <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n            <label translate="VOICE.QUEUE">Queue</label>\n            <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <input type="text" ng-model="vm.preview.List.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.TAGS">Tags</label>\n            <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n          </md-input-container>\n        </div>\n        <md-divider></md-divider>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n            <input type="text" ng-model="value" disabled="true" privacy=\'vm.currentUser.privacyEnabled && (key === "firstName" || key === "lastName" || key === "phone" || key === "mobile" || key === "email" || key === "fax") \' ng-cloak>\n          </md-input-container>\n        </div>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ vm.customFieldsMap[key] || key }}</label>\n            <input type="text" ng-model="value" disabled="true">\n          </md-input-container>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
+!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",controller:"AgentsChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth",function(e,n,t){return t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",controller:"AgentsFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver","Auth",function(e,n){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",controller:"AgentsMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",controller:"AgentsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",controller:"AgentsOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",controller:"AgentsSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver","Auth",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",controller:"AgentsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(u,t,p,e,a,i,n,g,s,v,h,f,b,o,A){var E=this,r=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],l=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function d(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){new Promise(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){l.webrtc=_.pick(E.conf,r),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(l))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function c(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",u.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function m(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function x(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function N(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function D(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function P(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(l.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:p(function(){E.showDialpad=!1})}}),E.$onInit=function(){d(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];Promise.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();if(c.voicePause&&c.phoneBarDnd||E.originateInProgress)r=!1;else if(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase()){var m=0==d?500:1e3*d;console.debug("auto answer enabled after:"+m+" ms"),p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},m)}}r?(o.call_id=e.request.call_id,n&&P(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&P(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=O.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),p(function(){u.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),o.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),o.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),o.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?D(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),o.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),o.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=D(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),o.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=D(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),o.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return m(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){c()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return m(e)}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):c():c()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),c())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=x,u.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!1)))})}),u.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),u.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),u.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return m(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:N(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:N(E.sessions[t],"requestFailed","top right",3e3)}})})}),u.$on("$destroy",function(){console.debug("$destroy event fired"),o.removeAllListeners("webbar:originate"),o.removeAllListeners("webbar:hangup"),o.removeAllListeners("webbar:answer"),o.removeAllListeners("webbar:hold"),o.removeAllListeners("webbar:unhold"),o.removeAllListeners("webbar:transfer"),o.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n){var t=this;function a(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return Promise.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n)return n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)});c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,C,O,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(C,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(O,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(C,"id","name"),pause_id:U(O,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getChatWebsiteInteractions=p,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=g,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("chat_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userChatQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userChatQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.chatPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.chatPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("chat_queue:save"),o.removeAllListeners("userChatQueue:remove"),o.removeAllListeners("userChatQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){C(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=C,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){C(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function C(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d){var c=this;function m(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,c.ListId=c.contact.ListId||void 0):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),m()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=m,c.getCustomFields=function(e){{if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}},c.getDateFromString=function(e){return null===e?void 0:new Date(e)}}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function C(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function O(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=C,S.getHistories=O,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),C())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),O())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=A.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&N(t)),n){var s=_.find(A.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,i,s,o,e,t,a,r,l,d,c,m){var u=this;function p(){var e=u.selectedDisposition?u.selectedDisposition.name.toLowerCase():void 0;return{id:u.call.uniqueid,disposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,secondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,thirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?l.getCurrentUser().id:null,OwnerId:l.getCurrentUser().id}}function g(e){n.hide([e,u.autoClose])}u.isReschedule=!1,u.recallme=!1,u.queueCampaign=void 0,u.queueCampaigns={count:0,rows:[]},u.dispositions=_.orderBy(_.concat([],e.rows,t.rows),["name"],["asc"]),u.contact=r,u.call=a,u.note=u.call.note||void 0,u.dialerCall=!1,u.hasBlackLists=!1,u.availableCalls=c,u.autoClose=m,u.hopper={minDate:new Date,dateTime:new Date},u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]?(u.dialerCall=!0,o.voiceQueue.getBlackLists({id:u.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(u.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):o.user.getQueues({id:l.getCurrentUser().id,fields:"id,name,dialActive",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){u.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.onDispositionChange=function(e){switch(e){case"first":u.selectedDisposition=u.firstLevelDisposition,u.anySecondLevelDisposition=_.some(u.dispositions,["ParentId",u.firstLevelDisposition.id]),u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.anyThirdLevelDisposition=!1;break;case"second":u.selectedDisposition=u.secondLevelDisposition,u.anyThirdLevelDisposition=_.some(u.dispositions,["ParentId",u.secondLevelDisposition.id]);break;case"third":u.selectedDisposition=u.thirdLevelDisposition}},u.clearDispositionSelection=function(e){"second"===e?(u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.selectedDisposition=u.firstLevelDisposition):"third"===e&&(u.thirdLevelDisposition=void 0,u.selectedDisposition=u.secondLevelDisposition)},u.saveDisposition=function(e){u.selectedDisposition=_.isNil(e)?u.selectedDisposition:{name:e},e&&(u.firstLevelDisposition=u.selectedDisposition);u.call.note=u.note,o.voiceCallReport.update({id:u.call.uniqueid,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,note:u.note,UserId:l.getCurrentUser().id,ContactId:u.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:u.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.dialerCall&&(o.cmHopperFinal.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(u.selectedDisposition))g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"");else switch(u.selectedDisposition.name.toLowerCase()){case"blacklist":u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(u.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+u.selectedDisposition}),u.selectedDisposition=void 0}).then(function(e){e&&g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}(u.call.variables["xmd-voicequeueid"]);break;case"reschedule":u.isReschedule=!0,u.recallme=!1;break;case"recallme":u.isReschedule=!0,u.recallme=!0;break;default:g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}},u.closeDialog=function(){n.cancel()},u.saveReschedule=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:u.recallme?l.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:u.dialerCall?Number(u.call["xmd-voicequeueid"]):u.queueCampaign?u.queueCampaign.id:null,scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:u.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){u.dialerCall&&o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:u.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(u.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).finally(function(){u.disable=!1,g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":var n=_.find(h.messages.rows,{id:h.draft.content.id});if(!n)return l.mailMessage.get({id:h.draft.content.id}).$promise.then(function(e){h.draft.content.originalMessage=e&&e.count?e.rows[0]:void 0,E(h.draft.type,h.draft.content)}).catch(function(){h.draft.content.originalMessage="",E(h.draft.type,h.draft.content)});h.draft.content.originalMessage=n,E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.replace(/\n$/,"")))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getFaxAccountInteractions=p,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=g,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){g(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsFaxRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("fax_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userFaxQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userFaxQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.faxPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.faxPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("fax_queue:save"),o.removeAllListeners("userFaxQueue:remove"),o.removeAllListeners("userFaxQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,u).$promise}function g(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMailAccountInteractions=p,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=g,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){g(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.mailAccount=c||t.params.mailAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMailRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("mail_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userMailQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userMailQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.mailPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.mailPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("mail_queue:save"),o.removeAllListeners("userMailQueue:remove"),o.removeAllListeners("userMailQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},m.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,u)),_.isNil(e.startPredictive)&&(n.startPredictive=void 0))}),o.on("userVoiceQueueRt:save",function(e){var n=_.find(m.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueueRt:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getOpenchannelAccountInteractions=p,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=g,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsOpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("openchannel_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userOpenchannelQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userOpenchannelQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.openchannelPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.openchannelPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("openchannel_queue:save"),o.removeAllListeners("userOpenchannelQueue:remove"),o.removeAllListeners("userOpenchannelQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsSmsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("sms_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userSmsQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userSmsQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.smsPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.smsPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("sms_queue:save"),o.removeAllListeners("userSmsQueue:remove"),o.removeAllListeners("userSmsQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getSmsAccountInteractions=p,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=g,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){g(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.agents=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="agents",f.listOrder="",f.listOrderAsc=null,f.selectedAgents=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,page:1},f.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'",ngIf:"vm.agent.showWebBar == 1"},{option:"wss",value:"'wss'",ngIf:"vm.agent.showWebBar == 1"},{option:"tls",value:"'tls'",ngIf:"vm.agent.showWebBar == 1"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayextensionMonitor=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'WAV'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:f.agents?f.agents.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getAgents=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Agents",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditAgent=function(e,n){i.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:f.agents.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteAgent=y,f.exportSelectedAgents=function(){var e=angular.copy(f.selectedAgents);return f.selectedAgents=[],e},f.deleteSelectedAgents=function(e){var n=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+f.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedAgents.forEach(function(e){y(e)}),f.selectedAgents=[]})},f.deselectAgents=function(){f.selectedAgents=[]},f.selectAllAgents=function(){f.selectedAgents=f.agents.rows};var b=!0,A=1;function E(e){f.agents=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.agents.rows,{id:e.id}),f.agents.count-=1,f.agents.rows.length||f.getAgents(),p.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:"bull"===c.channel?"voice":c.channel,type:c.direction,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:c.direction,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentqueueaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-sip"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting),_.merge(n,_.pick(e,u)))}),o.on("userVoiceQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userVoiceQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueue:remove"),o.removeAllListeners("userVoiceQueue:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voiceRecording=c||e.params.voiceRecording||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h){var f=this;function b(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("whatsapp_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userWhatsappQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userWhatsappQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.whatsappPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.whatsappPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("whatsapp_queue:save"),o.removeAllListeners("userWhatsappQueue:remove"),o.removeAllListeners("userWhatsappQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),v(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getWhatsappAccountInteractions=p,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=g,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){g(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){_.isNil(e)&&s.cmHopper.update({id:d.preview.id,UserId:null}),a.hide()}d.customFieldsMap=l&&l.rows?_.mapValues(_.keyBy(l.rows,function(e){return"cf_"+e.id}),"name"):{},d.errors=[],d.hopperIds=[],d.preview=o,d.currentUser=r,d.originated=!1,d.disable=!1,d.disableGetContact=!1,d.hopperIds.push(d.preview.id),d.originatePreview=function(){d.originated=!0,d.disable=!0,_.isEmpty(d.preview)?(i.error({title:"Message",msg:"Contact not available"}),d.disable=!1,d.hopperIds=[],c(!0)):s.rpc.getVoiceQueuesPreview({id:d.preview.id}).$promise.then(function(e){c(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),c(!0)}).finally(function(){d.disable=!1,d.hopperIds=[]})},d.closeDialog=c,d.nextContact=function(){return d.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:d.hopperIds,direction:"next"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(d.disableGetContact=!1,d.hopperIds=[],404===e.status)d.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.previousContact=function(){if(d.disableGetContact=!0,1<d.hopperIds.length){var e=_.without(d.hopperIds,d.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(d.hopperIds,function(e){return e==d.preview.id}),d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e)}).catch(function(e){if(404===e.status)d.hopperIds=[d.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){d.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},d.getFirstAvailableContact=function(){return d.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[d.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){d.disableGetContact=!1})},d.isCustomField=function(e){return _.startsWith(e,"cf_")},d.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},d.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){d.originated||s.cmHopper.update({id:d.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","currentUser","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role&&T.currentUser.name===e.membername){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled" />\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' + widget.attrs[0].value | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n              </div>\n\n              <form name="scriptForm" flex="100" novalidate>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n              </form>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'CHAT.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'CHAT.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'CHAT.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'CHAT.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'CHAT.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'CHAT.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'CHAT.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'CHAT.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'CHAT.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'CHAT.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"CHAT.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"CHAT.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"CHAT.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"CHAT.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"CHAT.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"CHAT.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'CHAT.PAGE' | translate}}:', rowsPerPage: '{{'CHAT.ROWSPERPAGE' | translate}}:', of: '{{'CHAT.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-init="vm.getCustomFields(vm.contact.ListId)" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n\n          <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <md-input-container ng-if="!vm.dialerCall" class="md-block">\n          <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n          <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n            <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n              {{ queueCampaign.name }} ({{ queueCampaign.dialActive ? \'Active\' : \'Not Active\' }})</md-option>\n          </md-select>\n          <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              \x3c!-- ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}" --\x3e\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'FAX.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'FAX.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'FAX.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'FAX.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'FAX.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'FAX.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'FAX.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'FAX.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'FAX.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'FAX.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'FAX.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"FAX.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"FAX.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"FAX.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"FAX.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"FAX.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"FAX.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'FAX.PAGE' | translate}}:', rowsPerPage: '{{'FAX.ROWSPERPAGE' | translate}}:', of: '{{'FAX.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n        <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n        <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAILACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.gotoMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="generalForm[\'fontFamily\'].$error" ng-show="generalForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">connTimeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">authTimeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MAIL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MAIL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MAIL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MAIL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MAIL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MAIL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MAIL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MAIL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MAIL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MAIL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MAIL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MAIL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MAIL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MAIL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MAIL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MAIL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MAIL.PAGE' | translate}}:', rowsPerPage: '{{'MAIL.ROWSPERPAGE' | translate}}:', of: '{{'MAIL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MOTIONDIALER.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MOTIONDIALER.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MOTIONDIALER.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MOTIONDIALER.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MOTIONDIALER.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MOTIONDIALER.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MOTIONDIALER.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MOTIONDIALER.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MOTIONDIALER.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MOTIONDIALER.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MOTIONDIALER.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MOTIONDIALER.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MOTIONDIALER.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MOTIONDIALER.PAGE' | translate}}:', rowsPerPage: '{{'MOTIONDIALER.ROWSPERPAGE' | translate}}:', of: '{{'MOTIONDIALER.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'OPENCHANNEL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'OPENCHANNEL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'OPENCHANNEL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'OPENCHANNEL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'OPENCHANNEL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'OPENCHANNEL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'OPENCHANNEL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'OPENCHANNEL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"OPENCHANNEL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"OPENCHANNEL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"OPENCHANNEL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"OPENCHANNEL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"OPENCHANNEL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"OPENCHANNEL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'OPENCHANNEL.PAGE' | translate}}:', rowsPerPage: '{{'OPENCHANNEL.ROWSPERPAGE' | translate}}:', of: '{{'OPENCHANNEL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id ">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name ">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service ">{{ vm.arrayservice[cloudProvider.service].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.uuid}}</span></span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.machineUuid}}</span></span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n            <div ng-messages="generalForm[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'SMS.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'SMS.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'SMS.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'SMS.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'SMS.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'SMS.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'SMS.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'SMS.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'SMS.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'SMS.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'SMS.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"SMS.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"SMS.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"SMS.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"SMS.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"SMS.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"SMS.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'SMS.PAGE' | translate}}:', rowsPerPage: '{{'SMS.ROWSPERPAGE' | translate}}:', of: '{{'SMS.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name ">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar ">{{ vm.arrayshowWebBar[agent.showWebBar].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email ">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone ">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile ">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal ">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'WHATSAPP.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'WHATSAPP.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'WHATSAPP.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'WHATSAPP.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'WHATSAPP.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'WHATSAPP.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'WHATSAPP.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'WHATSAPP.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'WHATSAPP.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"WHATSAPP.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"WHATSAPP.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"WHATSAPP.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"WHATSAPP.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"WHATSAPP.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"WHATSAPP.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'WHATSAPP.PAGE' | translate}}:', rowsPerPage: '{{'WHATSAPP.ROWSPERPAGE' | translate}}:', of: '{{'WHATSAPP.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twillo\'" class="md-block">\n                <label translate="WHATSAPP.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/status?token=\' + vm.whatsappAccount.token + (vm.whatsappAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span translate="{{lang.translation}}">{{lang.title}}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">Preview</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" ng-if="vm.preview">\n        <div class="md-padding md-margin" layout="column" flex="30">\n          <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.ID">ID</label>\n            <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n            <label translate="VOICE.QUEUE">Queue</label>\n            <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <input type="text" ng-model="vm.preview.List.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.TAGS">Tags</label>\n            <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n          </md-input-container>\n        </div>\n        <md-divider></md-divider>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n            <input type="text" ng-model="value" disabled="true" privacy=\'vm.currentUser.privacyEnabled && (key === "firstName" || key === "lastName" || key === "phone" || key === "mobile" || key === "email" || key === "fax") \' ng-cloak>\n          </md-input-container>\n        </div>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ vm.customFieldsMap[key] || key }}</label>\n            <input type="text" ng-model="value" disabled="true">\n          </md-input-container>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
diff --git a/public/styles/app.2d427cb4.css b/public/styles/app.2d427cb4.css
new file mode 100644 (file)
index 0000000..47c7441
--- /dev/null
@@ -0,0 +1 @@
+[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!important}.ms-container .ms-list{height:380px!important}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{padding:6px 12px!important;height:34px!important}md-input-container:not(.md-input-has-value) input:not(:focus){color:inherit!important}.ms-container .ms-search{height:34px;margin-bottom:5px;border:solid 1px #e5e5e5;background-color:#fff;box-shadow:none;width:100%;padding-left:6px}.ms-container .ms-footer{text-align:center}.no-border{border:none!important}.left .motion-spinner{border-top-color:#00d7cc!important;border-left-color:#00d7cc!important}.right .motion-spinner{border-top-color:#00d7cc!important;border-right-color:#00d7cc!important}.md-option-info-text{font-size:10px}md-pagination-wrapper{width:auto!important}md-autocomplete.no-container-margin md-autocomplete-wrap md-input-container{margin:0!important}md-dialog.report-selection-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.advanced-search-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}.md-dialog-action-center{justify-content:center!important}.flag-24{height:24px}button.auto-width{min-width:auto!important}button.size-8{transform:scale(.8)}md-icon.auto-size{height:auto!important;width:auto!important}md-switch.auto-height{height:auto!important}.hidden{visibility:hidden}.user-profile-section-help{background:#fcf20f0f;border:1px solid rgba(0,0,0,.12);padding:5px}.email-preview-message{display:-webkit-box;margin:0 auto;display:block;height:200px;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}button.advanced-search.md-accent-bg.md-button.md-default-theme:not([disabled]).md-icon-button:hover{background-color:#0091ea}.blink{animation:blink 2s ease-in infinite}.no-click{pointer-events:none}.spinner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(43,43,43,.5)}ms-quick-filter[disabled]{pointer-events:none;opacity:.7}ms-search-bar[disabled]{pointer-events:none;opacity:.7}@keyframes blink{from,to{opacity:1}50%{opacity:0}}textarea.api-key-area{background:0 0;resize:none}.badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}md-tooltip.multiline div.md-content{height:auto!important}.auto-margin{margin:auto}md-menu-item md-menu.no-margin button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-date-range md-menu span.md-select-value{border-bottom-color:rgba(0,0,0,.12)}.keep-on-top{z-index:9999!important}.margin-auto{margin:auto}.xenialab-violet-light-bg{background-color:#9c4fd3!important}.xenialab-violet-light-fg{color:#9c4fd3!important}.no-margin-top{margin-top:0!important}.no-margin-bottom{margin-bottom:0!important}.disabled-button{display:inline-block;position:relative;cursor:default;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:rgba(0,0,0,.12);color:rgba(0,0,0,.38);white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden}.word-break-all{word-break:break-all}@supports (-ms-ime-align:auto){md-tabs{display:inline!important}}@supports (-ms-accelerator:true){md-tabs{display:inline!important}}@supports (-moz-transform:translate(0,0)){md-tabs{display:inline!important}}body[dir=rtl] table.md-table td.md-cell,body[dir=rtl] table.md-table th.md-column{text-align:right!important}body[dir=rtl] table.md-table td.md-cell md-checkbox,body[dir=rtl] table.md-table th.md-column md-checkbox{margin-right:12px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{margin:0 0 0 16px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>a.ms-navigation-button{padding-right:45px}body[dir=rtl] .md-table-pagination>.buttons{direction:ltr}body[dir=rtl] .md-table-pagination>.buttons>.label{direction:rtl}body[dir=rtl] .header .logo .logo-icon{margin:5px 0 0 15px!important}body[dir=rtl] md-switch .md-container{margin-right:inherit!important}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:absolute;top:0;right:0;bottom:0;left:0}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden}#layout-vertical-navigation #content-container #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content{padding:24px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.animate-slide-up{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-up.ng-enter{transform:translateY(100%);opacity:0}.animate-slide-up.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-up.ng-leave{transform:translateY(0);opacity:1}.animate-slide-up.ng-leave.ng-leave-active{transition-property:all;transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide-add-active,.animate-slide-up.ng-hide-remove-active{transition-property:all}.animate-slide-down{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-down.ng-enter{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-down.ng-leave{transform:translateY(0);opacity:1}.animate-slide-down.ng-leave.ng-leave-active{transition-property:all;transform:translateY(100%);opacity:0}.animate-slide-down.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-hide-add-active,.animate-slide-down.ng-hide-remove-active{transition-property:all}.animate-slide-left{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-left.ng-enter{transform:translateX(100%);opacity:0}.animate-slide-left.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-left.ng-leave{transform:translateX(0);opacity:1}.animate-slide-left.ng-leave.ng-leave-active{transition-property:all;transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide{transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide-add-active,.animate-slide-left.ng-hide-remove-active{transition-property:all}.animate-slide-right{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-right.ng-enter{transform:translateX(-100%);opacity:0}.animate-slide-right.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-right.ng-leave{transform:translateX(0);opacity:1}.animate-slide-right.ng-leave.ng-leave-active{transition-property:all;transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide{transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide-add-active,.animate-slide-right.ng-hide-remove-active{transition-property:all}.animate-fade-in-out{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-fade-in-out.ng-enter{opacity:0}.animate-fade-in-out.ng-enter.ng-enter-active{transition-property:all;opacity:1}.animate-fade-in-out.ng-leave{opacity:1}.animate-fade-in-out.ng-leave.ng-leave-active{transition-property:all;opacity:0}.animate-fade-in-out.ng-hide{opacity:0}.animate-fade-in-out.ng-hide-add-active,.animate-fade-in-out.ng-hide-remove-active{transition-property:all}@keyframes slide-in-left{0%{opacity:0;transform:translateX(-500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-bottom{0%{opacity:0;transform:translateY(200px)}65%{opacity:1;transform:translateY(0)}100%{transform:translateY(0)}}.animate-rotate{animation:rotate 1.75s linear infinite}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ps-container:hover .ps-in-scrolling{pointer-events:auto}.ps-container .ps-in-scrolling{pointer-events:auto}.ps-container>.ps-scrollbar-x-rail{background:0 0!important;margin:4px 0;height:4px;z-index:49}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{height:4px}.ps-container>.ps-scrollbar-y-rail{background:0 0!important;margin:4px 0;width:4px;z-index:49}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{width:4px}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-scroll{overflow:hidden!important}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#chat-chatWebsite .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#chat-chatWebsite .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#chat-chatWebsite .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#chat-chatWebsite .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#chat-chatWebsite .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#chat-chatWebsite .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#chat-chatWebsite .actionAppData{width:150px!important}}@media screen and (max-width:960px){#chat-chatWebsite .actionAppData{width:80px!important}}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general{position:fixed;width:100%;height:100%}#agent-general .agent-content{position:fixed;top:36px;bottom:0;left:0;right:0}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{visibility:hidden;width:500px;position:fixed;white-space:pre-line;left:28%;z-index:9999}#agent-general .tooltip-preview:hover .tooltip-preview-text{visibility:visible}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:220px}#agent-general md-card.call-info-card md-card-content,#agent-general md-card.call-info-card md-card-header{padding:10px!important}#agent-general md-card.call-info-card button.reload-button{padding:0;height:22px;width:auto}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:350px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}#agent-general span.subject-text{width:500px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{max-width:720px;width:720px}md-dialog.compose-dialog.mail-no-secret{max-height:97%;max-width:90%!important;width:100%!important}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-toolbar .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{max-width:700px;min-height:300px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#fax-faxAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#fax-faxAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#fax-faxAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#fax-faxAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#fax-faxAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#fax-faxAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#fax-faxAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#fax-faxAccount .actionAppData{width:80px!important}}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#mail-mailAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#mail-mailAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#mail-mailAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#mail-mailAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#mail-mailAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#mail-mailAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#mail-mailAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#mail-mailAccount .actionAppData{width:80px!important}}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#openchannel-openchannelAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#openchannel-openchannelAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#openchannel-openchannelAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#openchannel-openchannelAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#openchannel-openchannelAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#openchannel-openchannelAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#openchannel-openchannelAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#openchannel-openchannelAccount .actionAppData{width:80px!important}}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smtp-dialog{max-width:720px;width:720px}md-dialog.smtp-dialog md-dialog-content{display:block;position:relative}md-dialog.smtp-dialog md-toolbar .title{font-size:17px}md-dialog.smtp-dialog md-input-container textarea{min-height:150px}md-dialog.smtp-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smtp-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smtp-dialog .date-container{padding:16px 0 24px 0}md-dialog.smtp-dialog .error-list{font-size:13px}md-dialog.smtp-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smtp-dialog .error-list .error .message{font-weight:500}md-dialog.smtp-dialog .error-list .error .md-button{margin:0}md-dialog.smtp-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smtp-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#sms-smsAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#sms-smsAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#sms-smsAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#sms-smsAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#sms-smsAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#sms-smsAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#sms-smsAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#sms-smsAccount .actionAppData{width:80px!important}}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-inbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-inbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-inbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-inbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-inbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-inbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-inbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-inbound-route .actionAppData{width:80px!important}}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-internal-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-internal-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-internal-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-internal-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-internal-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-internal-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-internal-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-internal-route .actionAppData{width:80px!important}}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-outbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-outbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-outbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-outbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-outbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-outbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-outbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-outbound-route .actionAppData{width:80px!important}}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#whatsapp-whatsappAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#whatsapp-whatsappAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#whatsapp-whatsappAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#whatsapp-whatsappAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#whatsapp-whatsappAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#whatsapp-whatsappAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#whatsapp-whatsappAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#whatsapp-whatsappAccount .actionAppData{width:80px!important}}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
diff --git a/public/styles/app.91ca40ed.css b/public/styles/app.91ca40ed.css
deleted file mode 100644 (file)
index e941370..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!important}.ms-container .ms-list{height:380px!important}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{padding:6px 12px!important;height:34px!important}md-input-container:not(.md-input-has-value) input:not(:focus){color:inherit!important}.ms-container .ms-search{height:34px;margin-bottom:5px;border:solid 1px #e5e5e5;background-color:#fff;box-shadow:none;width:100%;padding-left:6px}.ms-container .ms-footer{text-align:center}.no-border{border:none!important}.left .motion-spinner{border-top-color:#00d7cc!important;border-left-color:#00d7cc!important}.right .motion-spinner{border-top-color:#00d7cc!important;border-right-color:#00d7cc!important}.md-option-info-text{font-size:10px}md-pagination-wrapper{width:auto!important}md-autocomplete.no-container-margin md-autocomplete-wrap md-input-container{margin:0!important}md-dialog.report-selection-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.advanced-search-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}.md-dialog-action-center{justify-content:center!important}.flag-24{height:24px}button.auto-width{min-width:auto!important}button.size-8{transform:scale(.8)}md-icon.auto-size{height:auto!important;width:auto!important}md-switch.auto-height{height:auto!important}.hidden{visibility:hidden}.user-profile-section-help{background:#fcf20f0f;border:1px solid rgba(0,0,0,.12);padding:5px}.email-preview-message{display:-webkit-box;margin:0 auto;display:block;height:200px;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}button.advanced-search.md-accent-bg.md-button.md-default-theme:not([disabled]).md-icon-button:hover{background-color:#0091ea}.blink{animation:blink 2s ease-in infinite}.no-click{pointer-events:none}.spinner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(43,43,43,.5)}ms-quick-filter[disabled]{pointer-events:none;opacity:.7}ms-search-bar[disabled]{pointer-events:none;opacity:.7}@keyframes blink{from,to{opacity:1}50%{opacity:0}}textarea.api-key-area{background:0 0;resize:none}.badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}md-tooltip.multiline div.md-content{height:auto!important}.auto-margin{margin:auto}md-menu-item md-menu.no-margin button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-date-range md-menu span.md-select-value{border-bottom-color:rgba(0,0,0,.12)}.keep-on-top{z-index:9999!important}.margin-auto{margin:auto}.xenialab-violet-light-bg{background-color:#9c4fd3!important}.xenialab-violet-light-fg{color:#9c4fd3!important}.no-margin-top{margin-top:0!important}.no-margin-bottom{margin-bottom:0!important}.disabled-button{display:inline-block;position:relative;cursor:default;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:rgba(0,0,0,.12);color:rgba(0,0,0,.38);white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden}@supports (-ms-ime-align:auto){md-tabs{display:inline!important}}@supports (-ms-accelerator:true){md-tabs{display:inline!important}}@supports (-moz-transform:translate(0,0)){md-tabs{display:inline!important}}body[dir=rtl] table.md-table td.md-cell,body[dir=rtl] table.md-table th.md-column{text-align:right!important}body[dir=rtl] table.md-table td.md-cell md-checkbox,body[dir=rtl] table.md-table th.md-column md-checkbox{margin-right:12px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{margin:0 0 0 16px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>a.ms-navigation-button{padding-right:45px}body[dir=rtl] .md-table-pagination>.buttons{direction:ltr}body[dir=rtl] .md-table-pagination>.buttons>.label{direction:rtl}body[dir=rtl] .header .logo .logo-icon{margin:5px 0 0 15px!important}body[dir=rtl] md-switch .md-container{margin-right:inherit!important}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:absolute;top:0;right:0;bottom:0;left:0}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden}#layout-vertical-navigation #content-container #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content{padding:24px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.animate-slide-up{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-up.ng-enter{transform:translateY(100%);opacity:0}.animate-slide-up.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-up.ng-leave{transform:translateY(0);opacity:1}.animate-slide-up.ng-leave.ng-leave-active{transition-property:all;transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide-add-active,.animate-slide-up.ng-hide-remove-active{transition-property:all}.animate-slide-down{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-down.ng-enter{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-down.ng-leave{transform:translateY(0);opacity:1}.animate-slide-down.ng-leave.ng-leave-active{transition-property:all;transform:translateY(100%);opacity:0}.animate-slide-down.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-hide-add-active,.animate-slide-down.ng-hide-remove-active{transition-property:all}.animate-slide-left{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-left.ng-enter{transform:translateX(100%);opacity:0}.animate-slide-left.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-left.ng-leave{transform:translateX(0);opacity:1}.animate-slide-left.ng-leave.ng-leave-active{transition-property:all;transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide{transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide-add-active,.animate-slide-left.ng-hide-remove-active{transition-property:all}.animate-slide-right{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-right.ng-enter{transform:translateX(-100%);opacity:0}.animate-slide-right.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-right.ng-leave{transform:translateX(0);opacity:1}.animate-slide-right.ng-leave.ng-leave-active{transition-property:all;transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide{transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide-add-active,.animate-slide-right.ng-hide-remove-active{transition-property:all}.animate-fade-in-out{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-fade-in-out.ng-enter{opacity:0}.animate-fade-in-out.ng-enter.ng-enter-active{transition-property:all;opacity:1}.animate-fade-in-out.ng-leave{opacity:1}.animate-fade-in-out.ng-leave.ng-leave-active{transition-property:all;opacity:0}.animate-fade-in-out.ng-hide{opacity:0}.animate-fade-in-out.ng-hide-add-active,.animate-fade-in-out.ng-hide-remove-active{transition-property:all}@keyframes slide-in-left{0%{opacity:0;transform:translateX(-500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-bottom{0%{opacity:0;transform:translateY(200px)}65%{opacity:1;transform:translateY(0)}100%{transform:translateY(0)}}.animate-rotate{animation:rotate 1.75s linear infinite}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ps-container:hover .ps-in-scrolling{pointer-events:auto}.ps-container .ps-in-scrolling{pointer-events:auto}.ps-container>.ps-scrollbar-x-rail{background:0 0!important;margin:4px 0;height:4px;z-index:49}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{height:4px}.ps-container>.ps-scrollbar-y-rail{background:0 0!important;margin:4px 0;width:4px;z-index:49}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{width:4px}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-scroll{overflow:hidden!important}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general{position:fixed;width:100%;height:100%}#agent-general .agent-content{position:fixed;top:36px;bottom:0;left:0;right:0}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{visibility:hidden;width:500px;position:absolute;white-space:pre-line;left:100%;z-index:9999}#agent-general .tooltip-preview:hover .tooltip-preview-text{visibility:visible}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:200px}#agent-general md-card.call-info-card div.reload-container{position:relative}#agent-general md-card.call-info-card button.reload-button{position:absolute;right:-16px}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:350px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}#agent-general span.subject-text{width:500px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{min-height:250px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.compose-dialog-fax{max-width:720px;width:720px;max-height:450px;height:450px}md-dialog.compose-dialog-fax md-dialog-content{display:block;position:relative}md-dialog.compose-dialog-fax md-toolbar .title{font-size:17px}md-dialog.compose-dialog-fax md-chips md-chip{font-size:12px}md-dialog.compose-dialog-fax md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog-fax .to{position:relative}md-dialog.compose-dialog-fax .attachment-list{font-size:13px}md-dialog.compose-dialog-fax .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog-fax .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog-fax .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog-fax .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog-fax .error-list{font-size:13px}md-dialog.compose-dialog-fax .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog-fax .error-list .error .message{font-weight:500}md-dialog.compose-dialog-fax .error-list .error .md-button{margin:0}md-dialog.compose-dialog-fax .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog-fax md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.compose-dialog .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{min-height:250px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{min-height:250px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{min-height:250px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smtp-dialog{max-width:720px;width:720px}md-dialog.smtp-dialog md-dialog-content{display:block;position:relative}md-dialog.smtp-dialog md-toolbar .title{font-size:17px}md-dialog.smtp-dialog md-input-container textarea{min-height:150px}md-dialog.smtp-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smtp-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smtp-dialog .date-container{padding:16px 0 24px 0}md-dialog.smtp-dialog .error-list{font-size:13px}md-dialog.smtp-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smtp-dialog .error-list .error .message{font-weight:500}md-dialog.smtp-dialog .error-list .error .md-button{margin:0}md-dialog.smtp-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smtp-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
index 0441dcb..2e7da06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59f0=['integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20urlForward[URL]','motionbar[NULL,NULL,WinAppArguments]','TEXT','sequelize','VIRTUAL','getDataValue','action','STRING','integration','motionbar','jscripty','browser','bot','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','contactManager[ListId],\x20integration[intName(zendesk)],\x20motionbar[Popup(0),URL(1),WinApp(2)],\x20urlForward[GET,POST],\x20browser[TemplateId(0),URL(1)]'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x59f0,0x1b6));var _0x059f=function(_0x23f98b,_0x400e94){_0x23f98b=_0x23f98b-0x0;var _0x30c237=_0x59f0[_0x23f98b];return _0x30c237;};'use strict';var Sequelize=require(_0x059f('0x0'));module['exports']={'name':{'type':Sequelize[_0x059f('0x1')],'get':function(_0x5c873b){return this[_0x059f('0x2')](_0x059f('0x3'));}},'action':{'type':Sequelize[_0x059f('0x4')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0x059f('0x5'),_0x059f('0x6'),_0x059f('0x7'),'urlForward',_0x059f('0x8'),_0x059f('0x9'),'script']],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':_0x059f('0xa')},'data1':{'type':Sequelize['STRING'](0x1000),'comment':_0x059f('0xb')},'data2':{'type':Sequelize[_0x059f('0x4')](0x1000),'comment':_0x059f('0xc')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0x059f('0xd')},'data4':{'type':Sequelize[_0x059f('0x4')](0x1000)},'data5':{'type':Sequelize[_0x059f('0x4')](0x1000)},'data6':{'type':Sequelize[_0x059f('0x4')]},'data7':{'type':Sequelize[_0x059f('0xe')]}};
\ No newline at end of file
+var _0xea85=['getDataValue','STRING','contactManager','integration','motionbar','jscripty','urlForward','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','sequelize','exports','VIRTUAL'];(function(_0x1ca9e5,_0x1f0727){var _0x54a5e6=function(_0x204ac8){while(--_0x204ac8){_0x1ca9e5['push'](_0x1ca9e5['shift']());}};_0x54a5e6(++_0x1f0727);}(_0xea85,0x1ea));var _0x5ea8=function(_0x58e61c,_0x2783a9){_0x58e61c=_0x58e61c-0x0;var _0x4e4db5=_0xea85[_0x58e61c];return _0x4e4db5;};'use strict';var Sequelize=require(_0x5ea8('0x0'));module[_0x5ea8('0x1')]={'name':{'type':Sequelize[_0x5ea8('0x2')],'get':function(_0x1be74e){return this[_0x5ea8('0x3')]('action');}},'action':{'type':Sequelize[_0x5ea8('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0x5ea8('0x5'),_0x5ea8('0x6'),_0x5ea8('0x7'),_0x5ea8('0x8'),_0x5ea8('0x9'),'browser','bot',_0x5ea8('0xa')]],'msg':_0x5ea8('0xb')}},'comment':_0x5ea8('0xb')},'data1':{'type':Sequelize[_0x5ea8('0x4')](0x1000),'comment':_0x5ea8('0xc')},'data2':{'type':Sequelize[_0x5ea8('0x4')](0x1000),'comment':_0x5ea8('0xd')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':'contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'},'data4':{'type':Sequelize['STRING'](0x1000),'comments':'browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'},'data5':{'type':Sequelize['STRING'](0x1000),'comments':'urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]'},'data6':{'type':Sequelize[_0x5ea8('0x4')],'comments':_0x5ea8('0xe')},'data7':{'type':Sequelize[_0x5ea8('0xf')],'comments':_0x5ea8('0x10')}};
\ No newline at end of file
index 37993db..c3fd5d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9946=['Content-Range','apply','save','update','then','error','stack','name','send','body','find','params','catch','destroy','Action','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set'];(function(_0x81dcac,_0x8ff7db){var _0xc7803b=function(_0x499b29){while(--_0x499b29){_0x81dcac['push'](_0x81dcac['shift']());}};_0xc7803b(++_0x8ff7db);}(_0x9946,0xa5));var _0x6994=function(_0x4a4286,_0x5f0205){_0x4a4286=_0x4a4286-0x0;var _0x4c2507=_0x9946[_0x4a4286];return _0x4c2507;};'use strict';var emlformat=require(_0x6994('0x0'));var rimraf=require(_0x6994('0x1'));var zipdir=require(_0x6994('0x2'));var jsonpatch=require(_0x6994('0x3'));var rp=require(_0x6994('0x4'));var moment=require(_0x6994('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x6994('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x6994('0x7'));var ejs=require(_0x6994('0x8'));var fs=require('fs');var fs_extra=require(_0x6994('0x9'));var _=require(_0x6994('0xa'));var squel=require(_0x6994('0xb'));var crypto=require(_0x6994('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x6994('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6994('0xe'));var Papa=require(_0x6994('0xf'));var Redis=require(_0x6994('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x6994('0x11'));var as=require(_0x6994('0x12'));var hardwareService=require(_0x6994('0x13'));var logger=require(_0x6994('0x14'))(_0x6994('0x15'));var utils=require(_0x6994('0x16'));var config=require(_0x6994('0x17'));var licenseUtil=require(_0x6994('0x18'));var db=require(_0x6994('0x19'))['db'];function respondWithStatusCode(_0x4a20a6,_0x413415){_0x413415=_0x413415||0xcc;return function(_0x16bf8b){if(_0x16bf8b){return _0x4a20a6[_0x6994('0x1a')](_0x413415);}return _0x4a20a6[_0x6994('0x1b')](_0x413415)[_0x6994('0x1c')]();};}function respondWithResult(_0x38b0cf,_0x31d627){_0x31d627=_0x31d627||0xc8;return function(_0xdb3e29){if(_0xdb3e29){return _0x38b0cf[_0x6994('0x1b')](_0x31d627)[_0x6994('0x1d')](_0xdb3e29);}};}function respondWithFilteredResult(_0x3aa18b,_0x6a5147){return function(_0x30c1be){if(_0x30c1be){var _0x2bdbb2=typeof _0x6a5147['offset']==='undefined'&&typeof _0x6a5147['limit']===_0x6994('0x1e');var _0x48d9fd=_0x30c1be['count'];var _0x577fc8=_0x2bdbb2?0x0:_0x6a5147['offset'];var _0x1bae79=_0x2bdbb2?_0x30c1be[_0x6994('0x1f')]:_0x6a5147[_0x6994('0x20')]+_0x6a5147[_0x6994('0x21')];var _0x276e05;if(_0x1bae79>=_0x48d9fd){_0x1bae79=_0x48d9fd;_0x276e05=0xc8;}else{_0x276e05=0xce;}_0x3aa18b[_0x6994('0x1b')](_0x276e05);return _0x3aa18b[_0x6994('0x22')](_0x6994('0x23'),_0x577fc8+'-'+_0x1bae79+'/'+_0x48d9fd)['json'](_0x30c1be);}return null;};}function patchUpdates(_0x242abd){return function(_0x16abd3){try{jsonpatch[_0x6994('0x24')](_0x16abd3,_0x242abd,!![]);}catch(_0x1bf777){return BPromise['reject'](_0x1bf777);}return _0x16abd3[_0x6994('0x25')]();};}function saveUpdates(_0x5b89b1,_0x4bf571){return function(_0x585a0c){if(_0x585a0c){return _0x585a0c[_0x6994('0x26')](_0x5b89b1)[_0x6994('0x27')](function(_0x147edd){return _0x147edd;});}return null;};}function removeEntity(_0x4f9fc4,_0x1815fd){return function(_0x5aef1b){if(_0x5aef1b){return _0x5aef1b['destroy']()[_0x6994('0x27')](function(){_0x4f9fc4['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x150dda,_0x688023){return function(_0x49557f){if(!_0x49557f){_0x150dda[_0x6994('0x1a')](0x194);}return _0x49557f;};}function handleError(_0x5b6b55,_0x4b9c77){_0x4b9c77=_0x4b9c77||0x1f4;return function(_0x46e74b){logger[_0x6994('0x28')](_0x46e74b[_0x6994('0x29')]);if(_0x46e74b[_0x6994('0x2a')]){delete _0x46e74b['name'];}_0x5b6b55['status'](_0x4b9c77)[_0x6994('0x2b')](_0x46e74b);};}exports['update']=function(_0x5aa869,_0x33c814){if(_0x5aa869[_0x6994('0x2c')]['id']){delete _0x5aa869[_0x6994('0x2c')]['id'];}return db['Action'][_0x6994('0x2d')]({'where':{'id':_0x5aa869[_0x6994('0x2e')]['id']}})['then'](handleEntityNotFound(_0x33c814,null))[_0x6994('0x27')](saveUpdates(_0x5aa869['body'],null))[_0x6994('0x27')](respondWithResult(_0x33c814,null))[_0x6994('0x2f')](handleError(_0x33c814,null));};exports[_0x6994('0x30')]=function(_0x362571,_0x26e2d9){return db[_0x6994('0x31')]['find']({'where':{'id':_0x362571['params']['id']}})[_0x6994('0x27')](handleEntityNotFound(_0x26e2d9,null))[_0x6994('0x27')](removeEntity(_0x26e2d9,null))[_0x6994('0x2f')](handleError(_0x26e2d9,null));};
\ No newline at end of file
+var _0xa1e5=['count','limit','set','Content-Range','apply','save','then','destroy','error','stack','name','send','update','body','Action','find','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0x53fb06,_0x523c8b){var _0x4a8bad=function(_0x15383f){while(--_0x15383f){_0x53fb06['push'](_0x53fb06['shift']());}};_0x4a8bad(++_0x523c8b);}(_0xa1e5,0x78));var _0x5a1e=function(_0x153137,_0x4800e3){_0x153137=_0x153137-0x0;var _0x17a707=_0xa1e5[_0x153137];return _0x17a707;};'use strict';var emlformat=require(_0x5a1e('0x0'));var rimraf=require(_0x5a1e('0x1'));var zipdir=require(_0x5a1e('0x2'));var jsonpatch=require(_0x5a1e('0x3'));var rp=require(_0x5a1e('0x4'));var moment=require(_0x5a1e('0x5'));var BPromise=require(_0x5a1e('0x6'));var Mustache=require(_0x5a1e('0x7'));var util=require(_0x5a1e('0x8'));var path=require(_0x5a1e('0x9'));var sox=require(_0x5a1e('0xa'));var csv=require(_0x5a1e('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5a1e('0xc'));var _=require(_0x5a1e('0xd'));var squel=require(_0x5a1e('0xe'));var crypto=require(_0x5a1e('0xf'));var jsforce=require(_0x5a1e('0x10'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5a1e('0x11'));var Redis=require(_0x5a1e('0x12'));var authService=require(_0x5a1e('0x13'));var qs=require(_0x5a1e('0x14'));var as=require(_0x5a1e('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5a1e('0x16'))(_0x5a1e('0x17'));var utils=require('../../config/utils');var config=require(_0x5a1e('0x18'));var licenseUtil=require(_0x5a1e('0x19'));var db=require(_0x5a1e('0x1a'))['db'];function respondWithStatusCode(_0x3ee035,_0x2daa55){_0x2daa55=_0x2daa55||0xcc;return function(_0x299d18){if(_0x299d18){return _0x3ee035[_0x5a1e('0x1b')](_0x2daa55);}return _0x3ee035[_0x5a1e('0x1c')](_0x2daa55)[_0x5a1e('0x1d')]();};}function respondWithResult(_0xbd7f35,_0x316901){_0x316901=_0x316901||0xc8;return function(_0x382cab){if(_0x382cab){return _0xbd7f35[_0x5a1e('0x1c')](_0x316901)[_0x5a1e('0x1e')](_0x382cab);}};}function respondWithFilteredResult(_0x1d710b,_0x184f93){return function(_0x262efa){if(_0x262efa){var _0x594034=typeof _0x184f93[_0x5a1e('0x1f')]===_0x5a1e('0x20')&&typeof _0x184f93['limit']==='undefined';var _0x157c33=_0x262efa[_0x5a1e('0x21')];var _0x38003c=_0x594034?0x0:_0x184f93[_0x5a1e('0x1f')];var _0x58bbb2=_0x594034?_0x262efa[_0x5a1e('0x21')]:_0x184f93[_0x5a1e('0x1f')]+_0x184f93[_0x5a1e('0x22')];var _0x411ce2;if(_0x58bbb2>=_0x157c33){_0x58bbb2=_0x157c33;_0x411ce2=0xc8;}else{_0x411ce2=0xce;}_0x1d710b[_0x5a1e('0x1c')](_0x411ce2);return _0x1d710b[_0x5a1e('0x23')](_0x5a1e('0x24'),_0x38003c+'-'+_0x58bbb2+'/'+_0x157c33)[_0x5a1e('0x1e')](_0x262efa);}return null;};}function patchUpdates(_0x5154ed){return function(_0x45f279){try{jsonpatch[_0x5a1e('0x25')](_0x45f279,_0x5154ed,!![]);}catch(_0x794852){return BPromise['reject'](_0x794852);}return _0x45f279[_0x5a1e('0x26')]();};}function saveUpdates(_0x5158a9,_0x2d5390){return function(_0x46e433){if(_0x46e433){return _0x46e433['update'](_0x5158a9)[_0x5a1e('0x27')](function(_0x4161c0){return _0x4161c0;});}return null;};}function removeEntity(_0x1729fd,_0x56349f){return function(_0x3a2019){if(_0x3a2019){return _0x3a2019[_0x5a1e('0x28')]()['then'](function(){_0x1729fd[_0x5a1e('0x1c')](0xcc)[_0x5a1e('0x1d')]();});}};}function handleEntityNotFound(_0x218fee,_0x4b0182){return function(_0x31f969){if(!_0x31f969){_0x218fee['sendStatus'](0x194);}return _0x31f969;};}function handleError(_0x379db0,_0x86b5e6){_0x86b5e6=_0x86b5e6||0x1f4;return function(_0x48a437){logger[_0x5a1e('0x29')](_0x48a437[_0x5a1e('0x2a')]);if(_0x48a437[_0x5a1e('0x2b')]){delete _0x48a437[_0x5a1e('0x2b')];}_0x379db0[_0x5a1e('0x1c')](_0x86b5e6)[_0x5a1e('0x2c')](_0x48a437);};}exports[_0x5a1e('0x2d')]=function(_0x12972a,_0x3b057b){if(_0x12972a[_0x5a1e('0x2e')]['id']){delete _0x12972a[_0x5a1e('0x2e')]['id'];}return db[_0x5a1e('0x2f')][_0x5a1e('0x30')]({'where':{'id':_0x12972a[_0x5a1e('0x31')]['id']}})[_0x5a1e('0x27')](handleEntityNotFound(_0x3b057b,null))['then'](saveUpdates(_0x12972a['body'],null))[_0x5a1e('0x27')](respondWithResult(_0x3b057b,null))[_0x5a1e('0x32')](handleError(_0x3b057b,null));};exports[_0x5a1e('0x28')]=function(_0x1eb64a,_0x2bf4c8){return db[_0x5a1e('0x2f')][_0x5a1e('0x30')]({'where':{'id':_0x1eb64a[_0x5a1e('0x31')]['id']}})[_0x5a1e('0x27')](handleEntityNotFound(_0x2bf4c8,null))[_0x5a1e('0x27')](removeEntity(_0x2bf4c8,null))[_0x5a1e('0x32')](handleError(_0x2bf4c8,null));};
\ No newline at end of file
index eef1f0d..b82b892 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe547=['../../config/environment','./action.attributes','exports','define','tools_actions','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x2cbc11,_0x1a7b8d){var _0x1a1c09=function(_0x3a185a){while(--_0x3a185a){_0x2cbc11['push'](_0x2cbc11['shift']());}};_0x1a1c09(++_0x1a7b8d);}(_0xe547,0x191));var _0x7e54=function(_0x23951d,_0x43c81f){_0x23951d=_0x23951d-0x0;var _0x2b4322=_0xe547[_0x23951d];return _0x2b4322;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7e54('0x0'))(_0x7e54('0x1'));var moment=require(_0x7e54('0x2'));var BPromise=require(_0x7e54('0x3'));var rp=require(_0x7e54('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7e54('0x5'));var config=require(_0x7e54('0x6'));var attributes=require(_0x7e54('0x7'));module[_0x7e54('0x8')]=function(_0x3f4b73,_0x3c99e0){return _0x3f4b73[_0x7e54('0x9')]('Action',attributes,{'tableName':_0x7e54('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb40d=['Action','tools_actions','lodash','util','api','moment','bluebird','path','../../config/environment','./action.attributes','define'];(function(_0x55a4ba,_0x4724c1){var _0x196618=function(_0x5726ec){while(--_0x5726ec){_0x55a4ba['push'](_0x55a4ba['shift']());}};_0x196618(++_0x4724c1);}(_0xb40d,0xc8));var _0xdb40=function(_0x3d9860,_0x1fcd9f){_0x3d9860=_0x3d9860-0x0;var _0xb0e2f4=_0xb40d[_0x3d9860];return _0xb0e2f4;};'use strict';var _=require(_0xdb40('0x0'));var util=require(_0xdb40('0x1'));var logger=require('../../config/logger')(_0xdb40('0x2'));var moment=require(_0xdb40('0x3'));var BPromise=require(_0xdb40('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xdb40('0x5'));var rimraf=require('rimraf');var config=require(_0xdb40('0x6'));var attributes=require(_0xdb40('0x7'));module['exports']=function(_0x1fcba0,_0x3c0b2f){return _0x1fcba0[_0xdb40('0x8')](_0xdb40('0x9'),attributes,{'tableName':_0xdb40('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7756986..d06affe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['info','Action,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x1cec87,_0xa58891){var _0x5aab9e=function(_0xc78092){while(--_0xc78092){_0x1cec87['push'](_0x1cec87['shift']());}};_0x5aab9e(++_0xa58891);}(_0x326f,0xd1));var _0xf326=function(_0x5567c9,_0x526d0d){_0x5567c9=_0x5567c9-0x0;var _0x63fc5=_0x326f[_0x5567c9];return _0x63fc5;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf326('0x1'));var rs=require(_0xf326('0x2'));var fs=require('fs');var Redis=require(_0xf326('0x3'));var db=require(_0xf326('0x4'))['db'];var utils=require(_0xf326('0x5'));var logger=require(_0xf326('0x6'))(_0xf326('0x7'));var config=require(_0xf326('0x8'));var jayson=require(_0xf326('0x9'));var client=jayson[_0xf326('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){return client['request'](_0x3c254d,_0x165f95)['then'](function(_0x3bacf2){logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));logger[_0xf326('0xe')]('Action,\x20%s,\x20%s,\x20%s',_0x3851eb,_0xf326('0xd'),JSON['stringify'](_0x3bacf2));if(_0x3bacf2[_0xf326('0xf')]){if(_0x3bacf2['error'][_0xf326('0x10')]===0x1f4){logger['error'](_0xf326('0xc'),_0x3851eb,_0x3bacf2[_0xf326('0xf')]['message']);return _0x515bfa(_0x3bacf2[_0xf326('0xf')][_0xf326('0x11')]);}logger[_0xf326('0xf')](_0xf326('0xc'),_0x3851eb,_0x3bacf2['error'][_0xf326('0x11')]);return _0x1e7b8a(_0x3bacf2['error']['message']);}else{logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));_0x1e7b8a(_0x3bacf2[_0xf326('0x12')][_0xf326('0x11')]);}})[_0xf326('0x13')](function(_0x34128e){logger[_0xf326('0xf')]('Action,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}
\ No newline at end of file
+var _0x5fab=['../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Action,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x45990c,_0x1d6082){var _0x487f89=function(_0x40f140){while(--_0x40f140){_0x45990c['push'](_0x45990c['shift']());}};_0x487f89(++_0x1d6082);}(_0x5fab,0x177));var _0xb5fa=function(_0x3e6647,_0x2c0d09){_0x3e6647=_0x3e6647-0x0;var _0x46bddd=_0x5fab[_0x3e6647];return _0x46bddd;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var moment=require('moment');var BPromise=require(_0xb5fa('0x2'));var rs=require(_0xb5fa('0x3'));var fs=require('fs');var Redis=require(_0xb5fa('0x4'));var db=require(_0xb5fa('0x5'))['db'];var utils=require(_0xb5fa('0x6'));var logger=require(_0xb5fa('0x7'))(_0xb5fa('0x8'));var config=require(_0xb5fa('0x9'));var jayson=require(_0xb5fa('0xa'));var client=jayson[_0xb5fa('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d70f6,_0x2e3804,_0x1aec3e){return new BPromise(function(_0x9c7bce,_0x56d018){return client[_0xb5fa('0xc')](_0x5d70f6,_0x1aec3e)[_0xb5fa('0xd')](function(_0x2cf4a5){logger['info']('Action,\x20%s,\x20%s',_0x2e3804,_0xb5fa('0xe'));logger[_0xb5fa('0xf')](_0xb5fa('0x10'),_0x2e3804,_0xb5fa('0xe'),JSON[_0xb5fa('0x11')](_0x2cf4a5));if(_0x2cf4a5[_0xb5fa('0x12')]){if(_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x13')]===0x1f4){logger[_0xb5fa('0x12')]('Action,\x20%s,\x20%s',_0x2e3804,_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);return _0x56d018(_0x2cf4a5['error'][_0xb5fa('0x14')]);}logger['error'](_0xb5fa('0x15'),_0x2e3804,_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);return _0x9c7bce(_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);}else{logger['info']('Action,\x20%s,\x20%s',_0x2e3804,_0xb5fa('0xe'));_0x9c7bce(_0x2cf4a5[_0xb5fa('0x16')][_0xb5fa('0x14')]);}})[_0xb5fa('0x17')](function(_0x56fe10){logger['error'](_0xb5fa('0x15'),_0x2e3804,_0x56fe10);_0x56d018(_0x56fe10);});});}
\ No newline at end of file
index 4b604e8..2eaffc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x297b=['../../config/environment','put','/:id','isAuthenticated','update','delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x7e2eb0,_0x17cd58){var _0xd92de4=function(_0x5d005b){while(--_0x5d005b){_0x7e2eb0['push'](_0x7e2eb0['shift']());}};_0xd92de4(++_0x17cd58);}(_0x297b,0x170));var _0xb297=function(_0x119d5a,_0x19b457){_0x119d5a=_0x119d5a-0x0;var _0x15bff4=_0x297b[_0x119d5a];return _0x15bff4;};'use strict';var multer=require(_0xb297('0x0'));var util=require(_0xb297('0x1'));var path=require(_0xb297('0x2'));var timeout=require('connect-timeout');var express=require(_0xb297('0x3'));var router=express['Router']();var fs_extra=require(_0xb297('0x4'));var auth=require(_0xb297('0x5'));var interaction=require(_0xb297('0x6'));var config=require(_0xb297('0x7'));var controller=require('./action.controller');router[_0xb297('0x8')](_0xb297('0x9'),auth[_0xb297('0xa')](),controller[_0xb297('0xb')]);router[_0xb297('0xc')]('/:id',auth[_0xb297('0xa')](),controller[_0xb297('0xd')]);module[_0xb297('0xe')]=router;
\ No newline at end of file
+var _0x0fbf=['delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','put','/:id','isAuthenticated','update'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0x0fbf,0x78));var _0xf0fb=function(_0x320c1d,_0x39f4d4){_0x320c1d=_0x320c1d-0x0;var _0xb1f2b4=_0x0fbf[_0x320c1d];return _0xb1f2b4;};'use strict';var multer=require(_0xf0fb('0x0'));var util=require('util');var path=require(_0xf0fb('0x1'));var timeout=require('connect-timeout');var express=require(_0xf0fb('0x2'));var router=express[_0xf0fb('0x3')]();var fs_extra=require(_0xf0fb('0x4'));var auth=require(_0xf0fb('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./action.controller');router[_0xf0fb('0x6')](_0xf0fb('0x7'),auth[_0xf0fb('0x8')](),controller[_0xf0fb('0x9')]);router[_0xf0fb('0xa')](_0xf0fb('0x7'),auth[_0xf0fb('0x8')](),controller[_0xf0fb('0xb')]);module[_0xf0fb('0xc')]=router;
\ No newline at end of file
index e5012e9..1878800 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['sequelize','exports','STRING','TEXT'];(function(_0x240cc1,_0xaf102){var _0x2eada0=function(_0x51a003){while(--_0x51a003){_0x240cc1['push'](_0x240cc1['shift']());}};_0x2eada0(++_0xaf102);}(_0x5fc3,0xa8));var _0x35fc=function(_0x377a6e,_0x59b99d){_0x377a6e=_0x377a6e-0x0;var _0x37f751=_0x5fc3[_0x377a6e];return _0x37f751;};'use strict';var Sequelize=require(_0x35fc('0x0'));module[_0x35fc('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x35fc('0x2')]},'parent':{'type':Sequelize[_0x35fc('0x2')]},'table':{'type':Sequelize[_0x35fc('0x2')]},'conditions':{'type':Sequelize[_0x35fc('0x3')]},'joins':{'type':Sequelize[_0x35fc('0x3')]}};
\ No newline at end of file
+var _0x207c=['STRING','TEXT','exports'];(function(_0x368362,_0x3043ea){var _0x358628=function(_0x262c72){while(--_0x262c72){_0x368362['push'](_0x368362['shift']());}};_0x358628(++_0x3043ea);}(_0x207c,0x1e8));var _0xc207=function(_0x3a7257,_0x30b139){_0x3a7257=_0x3a7257-0x0;var _0x467d25=_0x207c[_0x3a7257];return _0x467d25;};'use strict';var Sequelize=require('sequelize');module[_0xc207('0x0')]={'name':{'type':Sequelize[_0xc207('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xc207('0x1')]},'parent':{'type':Sequelize[_0xc207('0x1')]},'table':{'type':Sequelize[_0xc207('0x1')]},'conditions':{'type':Sequelize[_0xc207('0x2')]},'joins':{'type':Sequelize[_0xc207('0x2')]}};
\ No newline at end of file
index ed9e0ef..b371508 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ed7=['map','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','filters','filter','VIRTUAL','merge','options','include','catch','includeAll','find','create','body','user','role','Reports','userProfileId','autoAssociation','UserProfileResource','params','preview','join','left_join','right_join','cross_join','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','group','field','condition','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','keyBy','select','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','joins','parentKey','foreignTable','conditions','parse','clone','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','SUM(%s)','IS\x20EMPTY','operator','value','getFields','foreignKey','output','web','randomstring','generate','csv','custom','AnalyticExtractedReport','cdr','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','../../components/export/','savename','run','runReport','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','alias','%s.%s\x20=\x20%s.%s','debug','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','status','end','json','undefined','limit','offset','count','set','reject','save','update','then','get','CustomReports','destroy','sendStatus','name','index','AnalyticCustomReport','rawAttributes','fieldName','type','key','model'];(function(_0x1fdd36,_0x3c9ebc){var _0x23a845=function(_0x4ecf71){while(--_0x4ecf71){_0x1fdd36['push'](_0x1fdd36['shift']());}};_0x23a845(++_0x3c9ebc);}(_0x1ed7,0x6e));var _0x71ed=function(_0x53023e,_0x222a0e){_0x53023e=_0x53023e-0x0;var _0x5cb0c6=_0x1ed7[_0x53023e];return _0x5cb0c6;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x71ed('0x0'));var rp=require(_0x71ed('0x1'));var moment=require(_0x71ed('0x2'));var BPromise=require(_0x71ed('0x3'));var Mustache=require(_0x71ed('0x4'));var util=require('util');var path=require(_0x71ed('0x5'));var sox=require(_0x71ed('0x6'));var csv=require(_0x71ed('0x7'));var ejs=require(_0x71ed('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x71ed('0x9'));var crypto=require(_0x71ed('0xa'));var jsforce=require(_0x71ed('0xb'));var deskjs=require(_0x71ed('0xc'));var toCsv=require(_0x71ed('0x7'));var querystring=require(_0x71ed('0xd'));var Papa=require('papaparse');var Redis=require(_0x71ed('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x71ed('0xf'));var as=require(_0x71ed('0x10'));var hardwareService=require(_0x71ed('0x11'));var logger=require(_0x71ed('0x12'))(_0x71ed('0x13'));var utils=require(_0x71ed('0x14'));var config=require(_0x71ed('0x15'));var licenseUtil=require(_0x71ed('0x16'));var db=require(_0x71ed('0x17'))['db'];var dbH=require('../../mysqldb')[_0x71ed('0x18')];function respondWithStatusCode(_0x5b40e8,_0x327bb5){_0x327bb5=_0x327bb5||0xcc;return function(_0x34ebc4){if(_0x34ebc4){return _0x5b40e8['sendStatus'](_0x327bb5);}return _0x5b40e8[_0x71ed('0x19')](_0x327bb5)[_0x71ed('0x1a')]();};}function respondWithResult(_0x53d5e0,_0x5edb1c){_0x5edb1c=_0x5edb1c||0xc8;return function(_0xaae28){if(_0xaae28){return _0x53d5e0[_0x71ed('0x19')](_0x5edb1c)[_0x71ed('0x1b')](_0xaae28);}};}function respondWithFilteredResult(_0x43eb51,_0x4b9b72){return function(_0x2473a3){if(_0x2473a3){var _0x37e85e=typeof _0x4b9b72['offset']===_0x71ed('0x1c')&&typeof _0x4b9b72[_0x71ed('0x1d')]==='undefined';var _0x4a9f42=_0x2473a3['count'];var _0x1ce561=_0x37e85e?0x0:_0x4b9b72[_0x71ed('0x1e')];var _0x4939e5=_0x37e85e?_0x2473a3[_0x71ed('0x1f')]:_0x4b9b72[_0x71ed('0x1e')]+_0x4b9b72[_0x71ed('0x1d')];var _0x1f04df;if(_0x4939e5>=_0x4a9f42){_0x4939e5=_0x4a9f42;_0x1f04df=0xc8;}else{_0x1f04df=0xce;}_0x43eb51['status'](_0x1f04df);return _0x43eb51[_0x71ed('0x20')]('Content-Range',_0x1ce561+'-'+_0x4939e5+'/'+_0x4a9f42)[_0x71ed('0x1b')](_0x2473a3);}return null;};}function patchUpdates(_0x3a45cd){return function(_0x5a41e5){try{jsonpatch['apply'](_0x5a41e5,_0x3a45cd,!![]);}catch(_0xb6f5ad){return BPromise[_0x71ed('0x21')](_0xb6f5ad);}return _0x5a41e5[_0x71ed('0x22')]();};}function saveUpdates(_0x5a1c85,_0x39ab0b){return function(_0x49423b){if(_0x49423b){return _0x49423b[_0x71ed('0x23')](_0x5a1c85)[_0x71ed('0x24')](function(_0x5a953e){return _0x5a953e;});}return null;};}function removeEntity(_0x22cfbb,_0x2c00f5){return function(_0xe974cc){if(_0xe974cc){return _0xe974cc['destroy']()['then'](function(){var _0xb01ddd=_0xe974cc[_0x71ed('0x25')]({'plain':!![]});var _0x1472ac=_0x71ed('0x26');return db['UserProfileResource'][_0x71ed('0x27')]({'where':{'type':_0x1472ac,'resourceId':_0xb01ddd['id']}})['then'](function(){return _0xe974cc;});})[_0x71ed('0x24')](function(){_0x22cfbb['status'](0xcc)[_0x71ed('0x1a')]();});}};}function handleEntityNotFound(_0x15bf63,_0x55476c){return function(_0x52de58){if(!_0x52de58){_0x15bf63[_0x71ed('0x28')](0x194);}return _0x52de58;};}function handleError(_0xff59b8,_0x3223d7){_0x3223d7=_0x3223d7||0x1f4;return function(_0x22acb4){logger['error'](_0x22acb4['stack']);if(_0x22acb4[_0x71ed('0x29')]){delete _0x22acb4['name'];}_0xff59b8[_0x71ed('0x19')](_0x3223d7)['send'](_0x22acb4);};}exports[_0x71ed('0x2a')]=function(_0xec9ca7,_0x30ff6d){var _0x33eb53={},_0x520906={},_0x4742ed={'count':0x0,'rows':[]};var _0x4173f3=_['map'](db[_0x71ed('0x2b')][_0x71ed('0x2c')],function(_0x46d80b){return{'name':_0x46d80b[_0x71ed('0x2d')],'type':_0x46d80b[_0x71ed('0x2e')][_0x71ed('0x2f')]};});_0x520906[_0x71ed('0x30')]=_[_0x71ed('0x31')](_0x4173f3,'name');_0x520906[_0x71ed('0x32')]=_[_0x71ed('0x33')](_0xec9ca7[_0x71ed('0x32')]);_0x520906['filters']=_[_0x71ed('0x34')](_0x520906[_0x71ed('0x30')],_0x520906[_0x71ed('0x32')]);_0x33eb53['attributes']=_[_0x71ed('0x34')](_0x520906['model'],qs['fields'](_0xec9ca7[_0x71ed('0x32')][_0x71ed('0x35')]));_0x33eb53[_0x71ed('0x36')]=_0x33eb53['attributes'][_0x71ed('0x37')]?_0x33eb53[_0x71ed('0x36')]:_0x520906[_0x71ed('0x30')];if(!_0xec9ca7[_0x71ed('0x32')]['hasOwnProperty'](_0x71ed('0x38'))){_0x33eb53[_0x71ed('0x1d')]=qs[_0x71ed('0x1d')](_0xec9ca7[_0x71ed('0x32')]['limit']);_0x33eb53['offset']=qs['offset'](_0xec9ca7[_0x71ed('0x32')][_0x71ed('0x1e')]);}_0x33eb53[_0x71ed('0x39')]=qs[_0x71ed('0x3a')](_0xec9ca7[_0x71ed('0x32')][_0x71ed('0x3a')]);_0x33eb53[_0x71ed('0x3b')]=qs['filters'](_['pick'](_0xec9ca7[_0x71ed('0x32')],_0x520906[_0x71ed('0x3c')]),_0x4173f3);if(_0xec9ca7[_0x71ed('0x32')][_0x71ed('0x3d')]){_0x33eb53[_0x71ed('0x3b')]=_['merge'](_0x33eb53[_0x71ed('0x3b')],{'$or':_[_0x71ed('0x31')](_0x4173f3,function(_0x5c8633){if(_0x5c8633[_0x71ed('0x2e')]!==_0x71ed('0x3e')){var _0x2968b8={};_0x2968b8[_0x5c8633[_0x71ed('0x29')]]={'$like':'%'+_0xec9ca7[_0x71ed('0x32')][_0x71ed('0x3d')]+'%'};return _0x2968b8;}})});}_0x33eb53=_[_0x71ed('0x3f')]({},_0x33eb53,_0xec9ca7[_0x71ed('0x40')]);var _0x1fbe04={'where':_0x33eb53[_0x71ed('0x3b')]};return db['AnalyticCustomReport'][_0x71ed('0x1f')](_0x1fbe04)['then'](function(_0x268452){_0x4742ed[_0x71ed('0x1f')]=_0x268452;if(_0xec9ca7[_0x71ed('0x32')]['includeAll']){_0x33eb53[_0x71ed('0x41')]=[{'all':!![]}];}return db[_0x71ed('0x2b')]['findAll'](_0x33eb53);})[_0x71ed('0x24')](function(_0x260144){_0x4742ed['rows']=_0x260144;return _0x4742ed;})[_0x71ed('0x24')](respondWithFilteredResult(_0x30ff6d,_0x33eb53))[_0x71ed('0x42')](handleError(_0x30ff6d,null));};exports['show']=function(_0x12ecb7,_0xc0bcb9){var _0x507f7c={'raw':![],'where':{'id':_0x12ecb7['params']['id']}},_0x1c70ab={};_0x1c70ab['model']=_['keys'](db[_0x71ed('0x2b')][_0x71ed('0x2c')]);_0x1c70ab[_0x71ed('0x32')]=_['keys'](_0x12ecb7[_0x71ed('0x32')]);_0x1c70ab[_0x71ed('0x3c')]=_[_0x71ed('0x34')](_0x1c70ab[_0x71ed('0x30')],_0x1c70ab[_0x71ed('0x32')]);_0x507f7c[_0x71ed('0x36')]=_[_0x71ed('0x34')](_0x1c70ab['model'],qs[_0x71ed('0x35')](_0x12ecb7[_0x71ed('0x32')][_0x71ed('0x35')]));_0x507f7c['attributes']=_0x507f7c[_0x71ed('0x36')][_0x71ed('0x37')]?_0x507f7c['attributes']:_0x1c70ab[_0x71ed('0x30')];if(_0x12ecb7['query'][_0x71ed('0x43')]){_0x507f7c['include']=[{'all':!![]}];}_0x507f7c=_[_0x71ed('0x3f')]({},_0x507f7c,_0x12ecb7['options']);return db[_0x71ed('0x2b')][_0x71ed('0x44')](_0x507f7c)['then'](handleEntityNotFound(_0xc0bcb9,null))['then'](respondWithResult(_0xc0bcb9,null))[_0x71ed('0x42')](handleError(_0xc0bcb9,null));};exports[_0x71ed('0x45')]=function(_0x28893f,_0x3239bf){return db[_0x71ed('0x2b')][_0x71ed('0x45')](_0x28893f[_0x71ed('0x46')],{})[_0x71ed('0x24')](function(_0x466200){var _0x5235c8=_0x28893f[_0x71ed('0x47')][_0x71ed('0x25')]({'plain':!![]});if(!_0x5235c8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5235c8[_0x71ed('0x48')]===_0x71ed('0x47')){var _0x28533c=_0x466200[_0x71ed('0x25')]({'plain':!![]});var _0x5a5c4a=_0x71ed('0x49');return db['UserProfileSection']['find']({'where':{'name':_0x5a5c4a,'userProfileId':_0x5235c8[_0x71ed('0x4a')]},'raw':!![]})[_0x71ed('0x24')](function(_0x174e48){if(_0x174e48&&_0x174e48[_0x71ed('0x4b')]===0x0){return db[_0x71ed('0x4c')][_0x71ed('0x45')]({'name':_0x28533c[_0x71ed('0x29')],'resourceId':_0x28533c['id'],'type':'CustomReports','sectionId':_0x174e48['id']},{})['then'](function(){return _0x466200;});}else{return _0x466200;}})['catch'](function(_0x10453b){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x10453b);throw _0x10453b;});}return _0x466200;})['then'](respondWithResult(_0x3239bf,0xc9))['catch'](handleError(_0x3239bf,null));};exports[_0x71ed('0x23')]=function(_0x8a39e2,_0x5bcfb1){if(_0x8a39e2[_0x71ed('0x46')]['id']){delete _0x8a39e2[_0x71ed('0x46')]['id'];}return db[_0x71ed('0x2b')]['find']({'where':{'id':_0x8a39e2['params']['id']}})[_0x71ed('0x24')](handleEntityNotFound(_0x5bcfb1,null))[_0x71ed('0x24')](saveUpdates(_0x8a39e2[_0x71ed('0x46')],null))[_0x71ed('0x24')](respondWithResult(_0x5bcfb1,null))[_0x71ed('0x42')](handleError(_0x5bcfb1,null));};exports[_0x71ed('0x27')]=function(_0x2f8097,_0xe70c3b){return db[_0x71ed('0x2b')][_0x71ed('0x44')]({'where':{'id':_0x2f8097[_0x71ed('0x4d')]['id']}})[_0x71ed('0x24')](handleEntityNotFound(_0xe70c3b,null))[_0x71ed('0x24')](removeEntity(_0xe70c3b,null))[_0x71ed('0x42')](handleError(_0xe70c3b,null));};exports[_0x71ed('0x4e')]=function(_0x360515,_0x9c37bd){var _0xccf823=0xa;var _0x3e1ddc=[_0x71ed('0x4f'),_0x71ed('0x50'),_0x71ed('0x51'),_0x71ed('0x52')];var _0x4bd0da={'SUM':'SUM(%s)','COUNT':_0x71ed('0x53'),'COUNT DISTINCT':_0x71ed('0x54'),'MAX':_0x71ed('0x55'),'MIN':_0x71ed('0x56'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x71ed('0x57'),'GROUP_CONCAT ASC':_0x71ed('0x58'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1d5603={'SEC_TO_TIME':_0x71ed('0x59'),'DATE':_0x71ed('0x5a'),'HOUR':_0x71ed('0x5b'),'ROUND':_0x71ed('0x5c'),'UNIX_TIMESTAMP':_0x71ed('0x5d')};var _0x25b1ed=function(_0x3afaea){return!_[_0x71ed('0x5e')]([_0x71ed('0x5f'),_0x71ed('0x60'),'IS\x20EMPTY',_0x71ed('0x61')],_0x3afaea);};var _0x5404ea=function(_0x366d3f){if(!_0x366d3f||!_0x366d3f[_0x71ed('0x62')][_0x71ed('0x37')]){return'';}for(var _0x25797e='(',_0x28aa37=0x0;_0x28aa37<_0x366d3f[_0x71ed('0x62')][_0x71ed('0x37')];_0x28aa37+=0x1){_0x28aa37>0x0&&(_0x25797e+='\x20'+_0x366d3f['operator']+'\x20');_0x25797e+=_0x366d3f[_0x71ed('0x62')][_0x28aa37][_0x71ed('0x63')]?_0x5404ea(_0x366d3f['rules'][_0x28aa37][_0x71ed('0x63')]):_0x366d3f[_0x71ed('0x62')][_0x28aa37][_0x71ed('0x64')]+'\x20'+_0x366d3f[_0x71ed('0x62')][_0x28aa37][_0x71ed('0x65')]+(_0x25b1ed(_0x366d3f[_0x71ed('0x62')][_0x28aa37][_0x71ed('0x65')])?'\x20'+_0x366d3f[_0x71ed('0x62')][_0x28aa37]['value']:'');}return _0x25797e+')';};var _0x332cf3={'where':{'id':_0x360515[_0x71ed('0x4d')]['id']}},_0x1b996a,_0x51d588,_0x37bc5d,_0x4a0cf6,_0x3ff156;_0x332cf3=_[_0x71ed('0x3f')]({},_0x332cf3,_0x360515[_0x71ed('0x40')]);return db[_0x71ed('0x2b')][_0x71ed('0x44')](_0x332cf3)[_0x71ed('0x24')](function(_0x473545){if(_0x473545){_0x1b996a=_0x473545;return _0x473545['getFields']();}return null;})[_0x71ed('0x24')](function(_0x38e489){if(_0x38e489){if(!_0x38e489[_0x71ed('0x37')]){throw new db[(_0x71ed('0x66'))][(_0x71ed('0x67'))](_0x71ed('0x68'),0x193);}_0x51d588=_0x38e489;return db[_0x71ed('0x69')][_0x71ed('0x6a')]({'raw':!![]});}return null;})[_0x71ed('0x24')](function(_0x539ef4){if(_0x539ef4){_0x37bc5d=_[_0x71ed('0x6b')](_0x539ef4,'id');var _0x34332e;var _0x57038b=squel[_0x71ed('0x6c')]();_0x57038b[_0x71ed('0x6d')](_0x1b996a[_0x71ed('0x6e')]);for(var _0xb15ac0=0x0;_0xb15ac0<_0x51d588[_0x71ed('0x37')];_0xb15ac0+=0x1){_0x34332e=_0x51d588[_0xb15ac0][_0x71ed('0x6f')]?_0x37bc5d[_0x51d588[_0xb15ac0][_0x71ed('0x6f')]][_0x71ed('0x70')]:_0x51d588[_0xb15ac0][_0x71ed('0x64')];_0x34332e=_0x51d588[_0xb15ac0][_0x71ed('0x71')]?_['replace'](_0x4bd0da[_0x51d588[_0xb15ac0][_0x71ed('0x71')]],'%s',_0x34332e):_0x34332e;_0x34332e=_0x51d588[_0xb15ac0]['format']?_[_0x71ed('0x72')](_0x1d5603[_0x51d588[_0xb15ac0][_0x71ed('0x73')]],'%s',_0x34332e):_0x34332e;if(_0x51d588[_0xb15ac0][_0x71ed('0x74')]){_0x57038b[_0x71ed('0x63')](_0x34332e);}_0x51d588[_0xb15ac0][_0x71ed('0x75')]&&_0x57038b[_0x71ed('0x39')](_0x34332e,_0x51d588[_0xb15ac0][_0x71ed('0x75')]===_0x71ed('0x76')?![]:!![]);_0x57038b['field'](_0x34332e,_0x51d588[_0xb15ac0]['alias']||_0x34332e);}if(_0x1b996a[_0x71ed('0x77')]){_0x1b996a[_0x71ed('0x77')]=JSON['parse'](_0x1b996a[_0x71ed('0x77')]);for(var _0x333f74=0x0;_0x333f74<_0x1b996a['joins']['length'];_0x333f74+=0x1){if(_0x1b996a[_0x71ed('0x77')][_0x333f74][_0x71ed('0x2e')]&&_[_0x71ed('0x5e')](_0x3e1ddc,_0x1b996a['joins'][_0x333f74][_0x71ed('0x2e')])&&_0x1b996a[_0x71ed('0x77')][_0x333f74][_0x71ed('0x78')]&&_0x1b996a[_0x71ed('0x77')][_0x333f74][_0x71ed('0x79')]&&_0x1b996a[_0x71ed('0x77')][_0x333f74]['foreignKey']){_0x57038b[_0x1b996a[_0x71ed('0x77')][_0x333f74]['type']](_0x1b996a[_0x71ed('0x77')][_0x333f74]['foreignTable'],null,util[_0x71ed('0x73')]('%s.%s\x20=\x20%s.%s',_0x1b996a[_0x71ed('0x6e')],_0x1b996a[_0x71ed('0x77')][_0x333f74][_0x71ed('0x78')],_0x1b996a['joins'][_0x333f74][_0x71ed('0x79')],_0x1b996a['joins'][_0x333f74]['foreignKey']));}}}if(_0x1b996a[_0x71ed('0x7a')]){_0x1b996a[_0x71ed('0x7a')]=JSON[_0x71ed('0x7b')](_0x1b996a['conditions']);_0x57038b['where'](_0x5404ea(_0x1b996a[_0x71ed('0x7a')]['group']));}_0x3ff156=_0x57038b[_0x71ed('0x7c')]();_0x57038b[_0x71ed('0x1d')](_0xccf823);_0x57038b[_0x71ed('0x1e')](0x0);logger['debug'](_0x71ed('0x7d'),_0x57038b['toString']());return dbH['sequelize']['query'](_0x57038b[_0x71ed('0x7e')](),{'type':dbH[_0x71ed('0x7f')][_0x71ed('0x80')][_0x71ed('0x81')]});}})['then'](respondWithResult(_0x9c37bd,null))[_0x71ed('0x42')](handleError(_0x9c37bd,null));};function runReport(_0x1835ff,_0x4c8245,_0x310d7a){var _0x971234=_0x4c8245[_0x71ed('0x29')];var _0x17553c=0xa;var _0xd21dee=[_0x71ed('0x4f'),_0x71ed('0x50'),_0x71ed('0x51'),_0x71ed('0x52')];var _0x2b557f={'SUM':_0x71ed('0x82'),'COUNT':_0x71ed('0x53'),'COUNT DISTINCT':_0x71ed('0x54'),'MAX':_0x71ed('0x55'),'MIN':_0x71ed('0x56'),'AVG':'AVG(%s)','GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x71ed('0x58'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x4e8cf1={'SEC_TO_TIME':_0x71ed('0x59'),'DATE':_0x71ed('0x5a'),'HOUR':'HOUR(%s)','ROUND':_0x71ed('0x5c'),'UNIX_TIMESTAMP':_0x71ed('0x5d')};var _0x307668=function(_0x4b63da){return!_[_0x71ed('0x5e')]([_0x71ed('0x5f'),_0x71ed('0x60'),_0x71ed('0x83'),_0x71ed('0x61')],_0x4b63da);};var _0x253ae2=function(_0x266f64){if(!_0x266f64||!_0x266f64[_0x71ed('0x62')]['length']){return'';}for(var _0x5bcbce='(',_0xf8938a=0x0;_0xf8938a<_0x266f64[_0x71ed('0x62')][_0x71ed('0x37')];_0xf8938a+=0x1){_0xf8938a>0x0&&(_0x5bcbce+='\x20'+_0x266f64[_0x71ed('0x84')]+'\x20');_0x5bcbce+=_0x266f64[_0x71ed('0x62')][_0xf8938a][_0x71ed('0x63')]?_0x253ae2(_0x266f64[_0x71ed('0x62')][_0xf8938a][_0x71ed('0x63')]):_0x266f64[_0x71ed('0x62')][_0xf8938a][_0x71ed('0x64')]+'\x20'+_0x266f64[_0x71ed('0x62')][_0xf8938a]['condition']+(_0x307668(_0x266f64['rules'][_0xf8938a][_0x71ed('0x65')])?'\x20'+_0x266f64[_0x71ed('0x62')][_0xf8938a][_0x71ed('0x85')]:'');}return _0x5bcbce+')';};var _0x6cf2f4={'where':{'id':_0x1835ff['id']}},_0x307911,_0x1d6198,_0x183d18,_0x5ac5ee,_0x13aa56;_0x6cf2f4=_[_0x71ed('0x3f')]({},_0x6cf2f4,_0x310d7a);return db['AnalyticCustomReport'][_0x71ed('0x44')](_0x6cf2f4)[_0x71ed('0x24')](function(_0x2ba495){if(_0x2ba495){_0x307911=_0x2ba495;return _0x2ba495[_0x71ed('0x86')]();}return null;})['then'](function(_0x4ea7d8){if(_0x4ea7d8){if(!_0x4ea7d8[_0x71ed('0x37')]){throw new db[(_0x71ed('0x66'))][(_0x71ed('0x67'))](_0x71ed('0x68'),0x193);}_0x1d6198=_0x4ea7d8;return db[_0x71ed('0x69')][_0x71ed('0x6a')]({'raw':!![]});}return null;})['then'](function(_0x8db262){if(_0x8db262){_0x183d18=_[_0x71ed('0x6b')](_0x8db262,'id');var _0x2dc3ab;var _0x9b386a=squel['select']();_0x9b386a[_0x71ed('0x6d')](_0x307911[_0x71ed('0x6e')]);for(var _0x247d54=0x0;_0x247d54<_0x1d6198[_0x71ed('0x37')];_0x247d54+=0x1){_0x2dc3ab=_0x1d6198[_0x247d54][_0x71ed('0x6f')]?_0x183d18[_0x1d6198[_0x247d54]['MetricId']]['metric']:_0x1d6198[_0x247d54]['field'];_0x2dc3ab=_0x1d6198[_0x247d54][_0x71ed('0x71')]?_['replace'](_0x2b557f[_0x1d6198[_0x247d54][_0x71ed('0x71')]],'%s',_0x2dc3ab):_0x2dc3ab;_0x2dc3ab=_0x1d6198[_0x247d54]['format']?_[_0x71ed('0x72')](_0x4e8cf1[_0x1d6198[_0x247d54]['format']],'%s',_0x2dc3ab):_0x2dc3ab;if(_0x1d6198[_0x247d54][_0x71ed('0x74')]){_0x9b386a['group'](_0x2dc3ab);}_0x1d6198[_0x247d54]['orderBy']&&_0x9b386a['order'](_0x2dc3ab,_0x1d6198[_0x247d54][_0x71ed('0x75')]===_0x71ed('0x76')?![]:!![]);_0x9b386a[_0x71ed('0x64')](_0x2dc3ab,_0x1d6198[_0x247d54]['alias']||_0x2dc3ab);}if(_0x307911[_0x71ed('0x77')]){_0x307911[_0x71ed('0x77')]=JSON[_0x71ed('0x7b')](_0x307911[_0x71ed('0x77')]);for(var _0x167f20=0x0;_0x167f20<_0x307911['joins'][_0x71ed('0x37')];_0x167f20+=0x1){if(_0x307911[_0x71ed('0x77')][_0x167f20]['type']&&_[_0x71ed('0x5e')](_0xd21dee,_0x307911['joins'][_0x167f20][_0x71ed('0x2e')])&&_0x307911[_0x71ed('0x77')][_0x167f20][_0x71ed('0x78')]&&_0x307911['joins'][_0x167f20]['foreignTable']&&_0x307911[_0x71ed('0x77')][_0x167f20][_0x71ed('0x87')]){_0x9b386a[_0x307911[_0x71ed('0x77')][_0x167f20][_0x71ed('0x2e')]](_0x307911[_0x71ed('0x77')][_0x167f20][_0x71ed('0x79')],null,util[_0x71ed('0x73')]('%s.%s\x20=\x20%s.%s',_0x307911[_0x71ed('0x6e')],_0x307911['joins'][_0x167f20][_0x71ed('0x78')],_0x307911[_0x71ed('0x77')][_0x167f20][_0x71ed('0x79')],_0x307911[_0x71ed('0x77')][_0x167f20][_0x71ed('0x87')]));}}}if(_0x307911[_0x71ed('0x7a')]){_0x307911[_0x71ed('0x7a')]=JSON[_0x71ed('0x7b')](_0x307911[_0x71ed('0x7a')]);_0x9b386a['where'](_0x253ae2(_0x307911[_0x71ed('0x7a')]['group']));}_0x13aa56=_0x9b386a['clone']();_0x9b386a[_0x71ed('0x1d')](_0x17553c);_0x9b386a[_0x71ed('0x1e')](0x0);return;}})[_0x71ed('0x24')](function(){if(_0x4c8245[_0x71ed('0x88')]===_0x71ed('0x89')){return null;}var _0x4548a2=_[_0x71ed('0x3f')](_0x4c8245,{'name':_0x4c8245['fullPath']||_0x4c8245[_0x71ed('0x29')]||_0x307911['name'],'basename':_0x971234,'savename':util[_0x71ed('0x73')]('%s-%s.%s',_0x4c8245['name']||_0x307911[_0x71ed('0x29')],require(_0x71ed('0x8a'))[_0x71ed('0x8b')](0x4),_0x4c8245[_0x71ed('0x88')]||_0x71ed('0x8c')),'reportId':_0x307911['id'],'reportType':_0x71ed('0x8d')});return db[_0x71ed('0x8e')][_0x71ed('0x45')](_0x4548a2,{'raw':!![]});})[_0x71ed('0x24')](function(_0x57b1b6){if(_0x307911[_0x71ed('0x6e')]===_0x71ed('0x8f')){_0x13aa56[_0x71ed('0x3b')](_0x307911[_0x71ed('0x6e')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x4c8245[_0x71ed('0x90')],_0x4c8245[_0x71ed('0x91')]);}else{_0x13aa56[_0x71ed('0x3b')](_0x307911[_0x71ed('0x6e')]+_0x71ed('0x92'),_0x4c8245[_0x71ed('0x90')],_0x4c8245[_0x71ed('0x91')]);}if(_0x57b1b6){logger[_0x71ed('0x93')](_0x71ed('0x94'),_0x13aa56[_0x71ed('0x7e')]());require(_0x71ed('0x95'))['fork'](path['join'](__dirname,_0x71ed('0x96'),_0x57b1b6[_0x71ed('0x88')]),[_0x57b1b6['id'],_0x13aa56[_0x71ed('0x7e')](),path['join'](__dirname,'../../files/reports',_0x57b1b6[_0x71ed('0x97')]),_0x971234]);return _0x57b1b6;}else{var _0x3e35bf=squel['select']();_0x3e35bf[_0x71ed('0x6d')]('('+_0x13aa56['toString']()+')','countTable');_0x3e35bf[_0x71ed('0x64')]('COUNT(*)',_0x71ed('0x1f'));_0x13aa56[_0x71ed('0x1d')](_0x4c8245[_0x71ed('0x1d')]||_0x17553c);_0x13aa56[_0x71ed('0x1e')](_0x4c8245[_0x71ed('0x1e')]||0x0);return dbH[_0x71ed('0x7f')][_0x71ed('0x32')](_0x3e35bf['toString'](),{'type':dbH[_0x71ed('0x7f')][_0x71ed('0x80')][_0x71ed('0x81')]})[_0x71ed('0x24')](function(_0x25d00b){if(!_0x25d00b['length']){_0x5ac5ee=0x0;}else{_0x5ac5ee=_0x25d00b[0x0]['count']||0x0;}return dbH[_0x71ed('0x7f')][_0x71ed('0x32')](_0x13aa56['toString'](),{'type':dbH[_0x71ed('0x7f')][_0x71ed('0x80')][_0x71ed('0x81')]});})[_0x71ed('0x24')](function(_0x1efe60){return{'rows':_0x1efe60||[],'count':_0x5ac5ee};});}});}exports[_0x71ed('0x98')]=function(_0x871864,_0x240c15){return runReport(_0x871864[_0x71ed('0x4d')],_0x871864[_0x71ed('0x32')],_0x871864['options'])[_0x71ed('0x24')](respondWithResult(_0x240c15,null))[_0x71ed('0x42')](handleError(_0x240c15,null));};exports[_0x71ed('0x99')]=runReport;exports[_0x71ed('0x32')]=function(_0x4f05c7,_0x2e1240){var _0x7e7a0b=0xa;var _0x3a02ab=[_0x71ed('0x4f'),_0x71ed('0x50'),_0x71ed('0x51'),'cross_join'];var _0x476ee0={'SUM':_0x71ed('0x82'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x71ed('0x54'),'MAX':_0x71ed('0x55'),'MIN':_0x71ed('0x56'),'AVG':_0x71ed('0x9a'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x71ed('0x58'),'GROUP_CONCAT DESC':_0x71ed('0x9b')};var _0x244068={'SEC_TO_TIME':_0x71ed('0x59'),'DATE':'DATE(%s)','HOUR':_0x71ed('0x5b'),'ROUND':_0x71ed('0x5c'),'UNIX_TIMESTAMP':_0x71ed('0x5d')};var _0x3c16e4=function(_0x4d99fe){return!_[_0x71ed('0x5e')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x71ed('0x83'),_0x71ed('0x61')],_0x4d99fe);};var _0x1e8f0a=function(_0x2d5fd9){if(!_0x2d5fd9||!_0x2d5fd9[_0x71ed('0x62')][_0x71ed('0x37')]){return'';}for(var _0x5d8e12='(',_0x596c93=0x0;_0x596c93<_0x2d5fd9[_0x71ed('0x62')][_0x71ed('0x37')];_0x596c93+=0x1){_0x596c93>0x0&&(_0x5d8e12+='\x20'+_0x2d5fd9[_0x71ed('0x84')]+'\x20');_0x5d8e12+=_0x2d5fd9[_0x71ed('0x62')][_0x596c93][_0x71ed('0x63')]?_0x1e8f0a(_0x2d5fd9[_0x71ed('0x62')][_0x596c93][_0x71ed('0x63')]):_0x2d5fd9['rules'][_0x596c93]['field']+'\x20'+_0x2d5fd9['rules'][_0x596c93][_0x71ed('0x65')]+(_0x3c16e4(_0x2d5fd9[_0x71ed('0x62')][_0x596c93][_0x71ed('0x65')])?'\x20'+_0x2d5fd9[_0x71ed('0x62')][_0x596c93][_0x71ed('0x85')]:'');}return _0x5d8e12+')';};var _0x140e16={'where':{'id':_0x4f05c7[_0x71ed('0x4d')]['id']}},_0x2de96c,_0x4e3dde,_0x4dd489,_0x4a1665,_0x417615;_0x140e16=_[_0x71ed('0x3f')]({},_0x140e16,_0x4f05c7['options']);return db[_0x71ed('0x2b')][_0x71ed('0x44')](_0x140e16)[_0x71ed('0x24')](function(_0x2995b2){if(_0x2995b2){_0x2de96c=_0x2995b2;return _0x2995b2[_0x71ed('0x86')]();}return null;})['then'](function(_0x2a30c0){if(_0x2a30c0){if(!_0x2a30c0['length']){throw new db['Sequelize'][(_0x71ed('0x67'))](_0x71ed('0x68'),0x193);}_0x4e3dde=_0x2a30c0;return db[_0x71ed('0x69')][_0x71ed('0x6a')]({'raw':!![]});}return null;})['then'](function(_0x87428c){if(_0x87428c){_0x4dd489=_[_0x71ed('0x6b')](_0x87428c,'id');var _0x4ee0c1;var _0x2eea96=squel['select']();_0x2eea96['from'](_0x2de96c[_0x71ed('0x6e')]);for(var _0x4f189d=0x0;_0x4f189d<_0x4e3dde[_0x71ed('0x37')];_0x4f189d+=0x1){_0x4ee0c1=_0x4e3dde[_0x4f189d][_0x71ed('0x6f')]?_0x4dd489[_0x4e3dde[_0x4f189d][_0x71ed('0x6f')]][_0x71ed('0x70')]:_0x4e3dde[_0x4f189d]['field'];_0x4ee0c1=_0x4e3dde[_0x4f189d][_0x71ed('0x71')]?_[_0x71ed('0x72')](_0x476ee0[_0x4e3dde[_0x4f189d][_0x71ed('0x71')]],'%s',_0x4ee0c1):_0x4ee0c1;_0x4ee0c1=_0x4e3dde[_0x4f189d][_0x71ed('0x73')]?_[_0x71ed('0x72')](_0x244068[_0x4e3dde[_0x4f189d][_0x71ed('0x73')]],'%s',_0x4ee0c1):_0x4ee0c1;if(_0x4e3dde[_0x4f189d]['groupBy']){_0x2eea96['group'](_0x4ee0c1);}_0x4e3dde[_0x4f189d][_0x71ed('0x75')]&&_0x2eea96[_0x71ed('0x39')](_0x4ee0c1,_0x4e3dde[_0x4f189d][_0x71ed('0x75')]===_0x71ed('0x76')?![]:!![]);_0x2eea96[_0x71ed('0x64')](_0x4ee0c1,_0x4e3dde[_0x4f189d][_0x71ed('0x9c')]||_0x4ee0c1);}if(_0x2de96c[_0x71ed('0x77')]){_0x2de96c[_0x71ed('0x77')]=JSON[_0x71ed('0x7b')](_0x2de96c[_0x71ed('0x77')]);for(var _0x204fed=0x0;_0x204fed<_0x2de96c['joins']['length'];_0x204fed+=0x1){if(_0x2de96c[_0x71ed('0x77')][_0x204fed][_0x71ed('0x2e')]&&_[_0x71ed('0x5e')](_0x3a02ab,_0x2de96c['joins'][_0x204fed]['type'])&&_0x2de96c[_0x71ed('0x77')][_0x204fed][_0x71ed('0x78')]&&_0x2de96c[_0x71ed('0x77')][_0x204fed]['foreignTable']&&_0x2de96c[_0x71ed('0x77')][_0x204fed]['foreignKey']){_0x2eea96[_0x2de96c[_0x71ed('0x77')][_0x204fed]['type']](_0x2de96c['joins'][_0x204fed][_0x71ed('0x79')],null,util[_0x71ed('0x73')](_0x71ed('0x9d'),_0x2de96c[_0x71ed('0x6e')],_0x2de96c['joins'][_0x204fed][_0x71ed('0x78')],_0x2de96c[_0x71ed('0x77')][_0x204fed][_0x71ed('0x79')],_0x2de96c[_0x71ed('0x77')][_0x204fed][_0x71ed('0x87')]));}}}if(_0x2de96c[_0x71ed('0x7a')]){_0x2de96c[_0x71ed('0x7a')]=JSON[_0x71ed('0x7b')](_0x2de96c[_0x71ed('0x7a')]);_0x2eea96['where'](_0x1e8f0a(_0x2de96c['conditions']['group']));}_0x417615=_0x2eea96['clone']();_0x2eea96['limit'](_0x7e7a0b);_0x2eea96[_0x71ed('0x1e')](0x0);logger[_0x71ed('0x9e')]('Limited\x20Query:',_0x2eea96[_0x71ed('0x7e')]());return dbH[_0x71ed('0x7f')]['query'](_0x2eea96[_0x71ed('0x7e')](),{'type':dbH[_0x71ed('0x7f')][_0x71ed('0x80')][_0x71ed('0x81')]});}})[_0x71ed('0x24')](function(){return{'sql':_0x417615[_0x71ed('0x7e')]()};})[_0x71ed('0x24')](respondWithResult(_0x2e1240,null))[_0x71ed('0x42')](handleError(_0x2e1240,null));};
\ No newline at end of file
+var _0xb025=['%s-%s.%s','randomstring','generate','csv','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','run','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','get','CustomReports','UserProfileResource','sendStatus','error','stack','name','send','index','map','fieldName','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','filter','options','AnalyticCustomReport','includeAll','rows','catch','show','params','rawAttributes','fields','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','preview','join','left_join','right_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','keyBy','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','order','DESC','alias','joins','foreignTable','%s.%s\x20=\x20%s.%s','parentKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','cross_join','MIN(%s)','IS\x20NULL','ValidationErrorItem','select','parse','foreignKey','output','fullPath'];(function(_0x210b93,_0x133e6d){var _0x2b020f=function(_0x3f9601){while(--_0x3f9601){_0x210b93['push'](_0x210b93['shift']());}};_0x2b020f(++_0x133e6d);}(_0xb025,0x168));var _0x5b02=function(_0x1f4228,_0x399074){_0x1f4228=_0x1f4228-0x0;var _0x3e9b18=_0xb025[_0x1f4228];return _0x3e9b18;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5b02('0x0'));var zipdir=require(_0x5b02('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5b02('0x2'));var BPromise=require(_0x5b02('0x3'));var Mustache=require(_0x5b02('0x4'));var util=require(_0x5b02('0x5'));var path=require(_0x5b02('0x6'));var sox=require(_0x5b02('0x7'));var csv=require(_0x5b02('0x8'));var ejs=require(_0x5b02('0x9'));var fs=require('fs');var fs_extra=require(_0x5b02('0xa'));var _=require(_0x5b02('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x5b02('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x5b02('0x8'));var querystring=require('querystring');var Papa=require(_0x5b02('0xd'));var Redis=require(_0x5b02('0xe'));var authService=require(_0x5b02('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5b02('0x10'));var logger=require(_0x5b02('0x11'))(_0x5b02('0x12'));var utils=require(_0x5b02('0x13'));var config=require(_0x5b02('0x14'));var licenseUtil=require(_0x5b02('0x15'));var db=require(_0x5b02('0x16'))['db'];var dbH=require(_0x5b02('0x16'))[_0x5b02('0x17')];function respondWithStatusCode(_0x33af87,_0x4a7852){_0x4a7852=_0x4a7852||0xcc;return function(_0x1ed717){if(_0x1ed717){return _0x33af87['sendStatus'](_0x4a7852);}return _0x33af87[_0x5b02('0x18')](_0x4a7852)[_0x5b02('0x19')]();};}function respondWithResult(_0x19e3bd,_0x1ddc8c){_0x1ddc8c=_0x1ddc8c||0xc8;return function(_0x5672f0){if(_0x5672f0){return _0x19e3bd[_0x5b02('0x18')](_0x1ddc8c)[_0x5b02('0x1a')](_0x5672f0);}};}function respondWithFilteredResult(_0x18e7e1,_0x69fbec){return function(_0x40a02b){if(_0x40a02b){var _0xff4bfd=typeof _0x69fbec[_0x5b02('0x1b')]==='undefined'&&typeof _0x69fbec[_0x5b02('0x1c')]===_0x5b02('0x1d');var _0x26eea7=_0x40a02b[_0x5b02('0x1e')];var _0x3e4f4b=_0xff4bfd?0x0:_0x69fbec[_0x5b02('0x1b')];var _0x3f9931=_0xff4bfd?_0x40a02b[_0x5b02('0x1e')]:_0x69fbec[_0x5b02('0x1b')]+_0x69fbec[_0x5b02('0x1c')];var _0x587879;if(_0x3f9931>=_0x26eea7){_0x3f9931=_0x26eea7;_0x587879=0xc8;}else{_0x587879=0xce;}_0x18e7e1[_0x5b02('0x18')](_0x587879);return _0x18e7e1['set'](_0x5b02('0x1f'),_0x3e4f4b+'-'+_0x3f9931+'/'+_0x26eea7)[_0x5b02('0x1a')](_0x40a02b);}return null;};}function patchUpdates(_0x3cb090){return function(_0xe568fd){try{jsonpatch[_0x5b02('0x20')](_0xe568fd,_0x3cb090,!![]);}catch(_0x558ce5){return BPromise[_0x5b02('0x21')](_0x558ce5);}return _0xe568fd[_0x5b02('0x22')]();};}function saveUpdates(_0x417c22,_0x55eab7){return function(_0x2e403c){if(_0x2e403c){return _0x2e403c[_0x5b02('0x23')](_0x417c22)[_0x5b02('0x24')](function(_0x1e85d6){return _0x1e85d6;});}return null;};}function removeEntity(_0x1653be,_0x163e97){return function(_0x331fc1){if(_0x331fc1){return _0x331fc1[_0x5b02('0x25')]()[_0x5b02('0x24')](function(){var _0x331216=_0x331fc1[_0x5b02('0x26')]({'plain':!![]});var _0x304934=_0x5b02('0x27');return db[_0x5b02('0x28')][_0x5b02('0x25')]({'where':{'type':_0x304934,'resourceId':_0x331216['id']}})[_0x5b02('0x24')](function(){return _0x331fc1;});})['then'](function(){_0x1653be[_0x5b02('0x18')](0xcc)[_0x5b02('0x19')]();});}};}function handleEntityNotFound(_0x410a0f,_0x1894c4){return function(_0x2fe7fc){if(!_0x2fe7fc){_0x410a0f[_0x5b02('0x29')](0x194);}return _0x2fe7fc;};}function handleError(_0x341640,_0x1dc053){_0x1dc053=_0x1dc053||0x1f4;return function(_0x413450){logger[_0x5b02('0x2a')](_0x413450[_0x5b02('0x2b')]);if(_0x413450[_0x5b02('0x2c')]){delete _0x413450[_0x5b02('0x2c')];}_0x341640[_0x5b02('0x18')](_0x1dc053)[_0x5b02('0x2d')](_0x413450);};}exports[_0x5b02('0x2e')]=function(_0x24dd1e,_0x31569c){var _0x4ff083={},_0x3990ec={},_0x3b792c={'count':0x0,'rows':[]};var _0x4b7d25=_[_0x5b02('0x2f')](db['AnalyticCustomReport']['rawAttributes'],function(_0x4bee04){return{'name':_0x4bee04[_0x5b02('0x30')],'type':_0x4bee04[_0x5b02('0x31')][_0x5b02('0x32')]};});_0x3990ec['model']=_[_0x5b02('0x2f')](_0x4b7d25,_0x5b02('0x2c'));_0x3990ec[_0x5b02('0x33')]=_[_0x5b02('0x34')](_0x24dd1e[_0x5b02('0x33')]);_0x3990ec[_0x5b02('0x35')]=_[_0x5b02('0x36')](_0x3990ec[_0x5b02('0x37')],_0x3990ec[_0x5b02('0x33')]);_0x4ff083['attributes']=_['intersection'](_0x3990ec[_0x5b02('0x37')],qs['fields'](_0x24dd1e['query']['fields']));_0x4ff083[_0x5b02('0x38')]=_0x4ff083[_0x5b02('0x38')][_0x5b02('0x39')]?_0x4ff083[_0x5b02('0x38')]:_0x3990ec['model'];if(!_0x24dd1e[_0x5b02('0x33')][_0x5b02('0x3a')](_0x5b02('0x3b'))){_0x4ff083['limit']=qs[_0x5b02('0x1c')](_0x24dd1e[_0x5b02('0x33')][_0x5b02('0x1c')]);_0x4ff083[_0x5b02('0x1b')]=qs[_0x5b02('0x1b')](_0x24dd1e[_0x5b02('0x33')][_0x5b02('0x1b')]);}_0x4ff083['order']=qs[_0x5b02('0x3c')](_0x24dd1e[_0x5b02('0x33')]['sort']);_0x4ff083[_0x5b02('0x3d')]=qs['filters'](_[_0x5b02('0x3e')](_0x24dd1e[_0x5b02('0x33')],_0x3990ec[_0x5b02('0x35')]),_0x4b7d25);if(_0x24dd1e['query']['filter']){_0x4ff083[_0x5b02('0x3d')]=_[_0x5b02('0x3f')](_0x4ff083[_0x5b02('0x3d')],{'$or':_[_0x5b02('0x2f')](_0x4b7d25,function(_0x10cae9){if(_0x10cae9[_0x5b02('0x31')]!=='VIRTUAL'){var _0x1b3832={};_0x1b3832[_0x10cae9[_0x5b02('0x2c')]]={'$like':'%'+_0x24dd1e[_0x5b02('0x33')][_0x5b02('0x40')]+'%'};return _0x1b3832;}})});}_0x4ff083=_['merge']({},_0x4ff083,_0x24dd1e[_0x5b02('0x41')]);var _0x445606={'where':_0x4ff083[_0x5b02('0x3d')]};return db[_0x5b02('0x42')][_0x5b02('0x1e')](_0x445606)[_0x5b02('0x24')](function(_0x3ff16f){_0x3b792c['count']=_0x3ff16f;if(_0x24dd1e[_0x5b02('0x33')][_0x5b02('0x43')]){_0x4ff083['include']=[{'all':!![]}];}return db[_0x5b02('0x42')]['findAll'](_0x4ff083);})['then'](function(_0x3e9442){_0x3b792c[_0x5b02('0x44')]=_0x3e9442;return _0x3b792c;})[_0x5b02('0x24')](respondWithFilteredResult(_0x31569c,_0x4ff083))[_0x5b02('0x45')](handleError(_0x31569c,null));};exports[_0x5b02('0x46')]=function(_0x31f2ac,_0x107a5f){var _0x4629d3={'raw':![],'where':{'id':_0x31f2ac[_0x5b02('0x47')]['id']}},_0x135003={};_0x135003[_0x5b02('0x37')]=_[_0x5b02('0x34')](db[_0x5b02('0x42')][_0x5b02('0x48')]);_0x135003[_0x5b02('0x33')]=_[_0x5b02('0x34')](_0x31f2ac[_0x5b02('0x33')]);_0x135003[_0x5b02('0x35')]=_[_0x5b02('0x36')](_0x135003[_0x5b02('0x37')],_0x135003[_0x5b02('0x33')]);_0x4629d3[_0x5b02('0x38')]=_[_0x5b02('0x36')](_0x135003[_0x5b02('0x37')],qs['fields'](_0x31f2ac['query'][_0x5b02('0x49')]));_0x4629d3[_0x5b02('0x38')]=_0x4629d3[_0x5b02('0x38')][_0x5b02('0x39')]?_0x4629d3['attributes']:_0x135003[_0x5b02('0x37')];if(_0x31f2ac[_0x5b02('0x33')][_0x5b02('0x43')]){_0x4629d3[_0x5b02('0x4a')]=[{'all':!![]}];}_0x4629d3=_[_0x5b02('0x3f')]({},_0x4629d3,_0x31f2ac['options']);return db['AnalyticCustomReport']['find'](_0x4629d3)['then'](handleEntityNotFound(_0x107a5f,null))[_0x5b02('0x24')](respondWithResult(_0x107a5f,null))[_0x5b02('0x45')](handleError(_0x107a5f,null));};exports['create']=function(_0x2bd84a,_0x38bab1){return db[_0x5b02('0x42')][_0x5b02('0x4b')](_0x2bd84a[_0x5b02('0x4c')],{})[_0x5b02('0x24')](function(_0x1ae8f8){var _0xae9c1b=_0x2bd84a[_0x5b02('0x4d')]['get']({'plain':!![]});if(!_0xae9c1b)throw new Error(_0x5b02('0x4e'));if(_0xae9c1b[_0x5b02('0x4f')]===_0x5b02('0x4d')){var _0x4382d4=_0x1ae8f8[_0x5b02('0x26')]({'plain':!![]});var _0x4e2467=_0x5b02('0x50');return db[_0x5b02('0x51')]['find']({'where':{'name':_0x4e2467,'userProfileId':_0xae9c1b[_0x5b02('0x52')]},'raw':!![]})[_0x5b02('0x24')](function(_0x4badba){if(_0x4badba&&_0x4badba['autoAssociation']===0x0){return db[_0x5b02('0x28')][_0x5b02('0x4b')]({'name':_0x4382d4['name'],'resourceId':_0x4382d4['id'],'type':_0x5b02('0x27'),'sectionId':_0x4badba['id']},{})[_0x5b02('0x24')](function(){return _0x1ae8f8;});}else{return _0x1ae8f8;}})[_0x5b02('0x45')](function(_0x12e0c2){logger[_0x5b02('0x2a')](_0x5b02('0x53'),_0x12e0c2);throw _0x12e0c2;});}return _0x1ae8f8;})[_0x5b02('0x24')](respondWithResult(_0x38bab1,0xc9))[_0x5b02('0x45')](handleError(_0x38bab1,null));};exports['update']=function(_0x5a65bd,_0x3e0ab9){if(_0x5a65bd[_0x5b02('0x4c')]['id']){delete _0x5a65bd[_0x5b02('0x4c')]['id'];}return db[_0x5b02('0x42')][_0x5b02('0x54')]({'where':{'id':_0x5a65bd['params']['id']}})[_0x5b02('0x24')](handleEntityNotFound(_0x3e0ab9,null))[_0x5b02('0x24')](saveUpdates(_0x5a65bd['body'],null))[_0x5b02('0x24')](respondWithResult(_0x3e0ab9,null))[_0x5b02('0x45')](handleError(_0x3e0ab9,null));};exports[_0x5b02('0x25')]=function(_0x5f1666,_0x569caa){return db[_0x5b02('0x42')][_0x5b02('0x54')]({'where':{'id':_0x5f1666[_0x5b02('0x47')]['id']}})[_0x5b02('0x24')](handleEntityNotFound(_0x569caa,null))[_0x5b02('0x24')](removeEntity(_0x569caa,null))[_0x5b02('0x45')](handleError(_0x569caa,null));};exports[_0x5b02('0x55')]=function(_0x5ab30b,_0x22f73b){var _0x27cf8b=0xa;var _0x1b0d33=[_0x5b02('0x56'),_0x5b02('0x57'),_0x5b02('0x58'),'cross_join'];var _0x5964ca={'SUM':_0x5b02('0x59'),'COUNT':_0x5b02('0x5a'),'COUNT DISTINCT':_0x5b02('0x5b'),'MAX':_0x5b02('0x5c'),'MIN':'MIN(%s)','AVG':_0x5b02('0x5d'),'GROUP_CONCAT':_0x5b02('0x5e'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x5b02('0x5f')};var _0x2a2f85={'SEC_TO_TIME':_0x5b02('0x60'),'DATE':_0x5b02('0x61'),'HOUR':_0x5b02('0x62'),'ROUND':_0x5b02('0x63'),'UNIX_TIMESTAMP':_0x5b02('0x64')};var _0x21f3cd=function(_0x493dc2){return!_[_0x5b02('0x65')](['IS\x20NULL',_0x5b02('0x66'),_0x5b02('0x67'),_0x5b02('0x68')],_0x493dc2);};var _0x561140=function(_0x2cedae){if(!_0x2cedae||!_0x2cedae[_0x5b02('0x69')]['length']){return'';}for(var _0x2d9cf0='(',_0x1eba6a=0x0;_0x1eba6a<_0x2cedae[_0x5b02('0x69')][_0x5b02('0x39')];_0x1eba6a+=0x1){_0x1eba6a>0x0&&(_0x2d9cf0+='\x20'+_0x2cedae[_0x5b02('0x6a')]+'\x20');_0x2d9cf0+=_0x2cedae[_0x5b02('0x69')][_0x1eba6a][_0x5b02('0x6b')]?_0x561140(_0x2cedae[_0x5b02('0x69')][_0x1eba6a][_0x5b02('0x6b')]):_0x2cedae[_0x5b02('0x69')][_0x1eba6a][_0x5b02('0x6c')]+'\x20'+_0x2cedae[_0x5b02('0x69')][_0x1eba6a][_0x5b02('0x6d')]+(_0x21f3cd(_0x2cedae[_0x5b02('0x69')][_0x1eba6a][_0x5b02('0x6d')])?'\x20'+_0x2cedae['rules'][_0x1eba6a][_0x5b02('0x6e')]:'');}return _0x2d9cf0+')';};var _0x3258a3={'where':{'id':_0x5ab30b[_0x5b02('0x47')]['id']}},_0x494d24,_0x3bfaee,_0x15b9b6,_0x2d4367,_0x549854;_0x3258a3=_[_0x5b02('0x3f')]({},_0x3258a3,_0x5ab30b[_0x5b02('0x41')]);return db[_0x5b02('0x42')]['find'](_0x3258a3)[_0x5b02('0x24')](function(_0x2ee90e){if(_0x2ee90e){_0x494d24=_0x2ee90e;return _0x2ee90e[_0x5b02('0x6f')]();}return null;})[_0x5b02('0x24')](function(_0x162e4c){if(_0x162e4c){if(!_0x162e4c[_0x5b02('0x39')]){throw new db[(_0x5b02('0x70'))]['ValidationErrorItem'](_0x5b02('0x71'),0x193);}_0x3bfaee=_0x162e4c;return db[_0x5b02('0x72')][_0x5b02('0x73')]({'raw':!![]});}return null;})[_0x5b02('0x24')](function(_0x4090c3){if(_0x4090c3){_0x15b9b6=_[_0x5b02('0x74')](_0x4090c3,'id');var _0x41a231;var _0x39f6e3=squel['select']();_0x39f6e3[_0x5b02('0x75')](_0x494d24[_0x5b02('0x76')]);for(var _0x17e894=0x0;_0x17e894<_0x3bfaee['length'];_0x17e894+=0x1){_0x41a231=_0x3bfaee[_0x17e894][_0x5b02('0x77')]?_0x15b9b6[_0x3bfaee[_0x17e894]['MetricId']][_0x5b02('0x78')]:_0x3bfaee[_0x17e894]['field'];_0x41a231=_0x3bfaee[_0x17e894][_0x5b02('0x79')]?_[_0x5b02('0x7a')](_0x5964ca[_0x3bfaee[_0x17e894]['function']],'%s',_0x41a231):_0x41a231;_0x41a231=_0x3bfaee[_0x17e894][_0x5b02('0x7b')]?_[_0x5b02('0x7a')](_0x2a2f85[_0x3bfaee[_0x17e894]['format']],'%s',_0x41a231):_0x41a231;if(_0x3bfaee[_0x17e894][_0x5b02('0x7c')]){_0x39f6e3[_0x5b02('0x6b')](_0x41a231);}_0x3bfaee[_0x17e894][_0x5b02('0x7d')]&&_0x39f6e3[_0x5b02('0x7e')](_0x41a231,_0x3bfaee[_0x17e894][_0x5b02('0x7d')]===_0x5b02('0x7f')?![]:!![]);_0x39f6e3[_0x5b02('0x6c')](_0x41a231,_0x3bfaee[_0x17e894][_0x5b02('0x80')]||_0x41a231);}if(_0x494d24['joins']){_0x494d24[_0x5b02('0x81')]=JSON['parse'](_0x494d24[_0x5b02('0x81')]);for(var _0x39a10f=0x0;_0x39a10f<_0x494d24[_0x5b02('0x81')]['length'];_0x39a10f+=0x1){if(_0x494d24[_0x5b02('0x81')][_0x39a10f]['type']&&_[_0x5b02('0x65')](_0x1b0d33,_0x494d24['joins'][_0x39a10f][_0x5b02('0x31')])&&_0x494d24['joins'][_0x39a10f]['parentKey']&&_0x494d24[_0x5b02('0x81')][_0x39a10f][_0x5b02('0x82')]&&_0x494d24[_0x5b02('0x81')][_0x39a10f]['foreignKey']){_0x39f6e3[_0x494d24['joins'][_0x39a10f]['type']](_0x494d24[_0x5b02('0x81')][_0x39a10f][_0x5b02('0x82')],null,util[_0x5b02('0x7b')](_0x5b02('0x83'),_0x494d24[_0x5b02('0x76')],_0x494d24['joins'][_0x39a10f][_0x5b02('0x84')],_0x494d24['joins'][_0x39a10f][_0x5b02('0x82')],_0x494d24['joins'][_0x39a10f]['foreignKey']));}}}if(_0x494d24['conditions']){_0x494d24['conditions']=JSON['parse'](_0x494d24[_0x5b02('0x85')]);_0x39f6e3[_0x5b02('0x3d')](_0x561140(_0x494d24[_0x5b02('0x85')][_0x5b02('0x6b')]));}_0x549854=_0x39f6e3[_0x5b02('0x86')]();_0x39f6e3['limit'](_0x27cf8b);_0x39f6e3[_0x5b02('0x1b')](0x0);logger[_0x5b02('0x87')](_0x5b02('0x88'),_0x39f6e3[_0x5b02('0x89')]());return dbH[_0x5b02('0x8a')][_0x5b02('0x33')](_0x39f6e3['toString'](),{'type':dbH[_0x5b02('0x8a')][_0x5b02('0x8b')][_0x5b02('0x8c')]});}})[_0x5b02('0x24')](respondWithResult(_0x22f73b,null))[_0x5b02('0x45')](handleError(_0x22f73b,null));};function runReport(_0x4d218a,_0x972b30,_0x44e787){var _0x568fa3=_0x972b30[_0x5b02('0x2c')];var _0x3dda14=0xa;var _0x53bcd9=['join',_0x5b02('0x57'),_0x5b02('0x58'),_0x5b02('0x8d')];var _0x1f53c9={'SUM':'SUM(%s)','COUNT':_0x5b02('0x5a'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0x5b02('0x8e'),'AVG':_0x5b02('0x5d'),'GROUP_CONCAT':_0x5b02('0x5e'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x5b02('0x5f')};var _0x1e5f30={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x5b02('0x61'),'HOUR':_0x5b02('0x62'),'ROUND':_0x5b02('0x63'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x39de83=function(_0x581694){return!_['includes']([_0x5b02('0x8f'),'IS\x20NOT\x20NULL',_0x5b02('0x67'),_0x5b02('0x68')],_0x581694);};var _0x11d031=function(_0x53af1c){if(!_0x53af1c||!_0x53af1c[_0x5b02('0x69')][_0x5b02('0x39')]){return'';}for(var _0x4c3cd1='(',_0x21edaa=0x0;_0x21edaa<_0x53af1c[_0x5b02('0x69')][_0x5b02('0x39')];_0x21edaa+=0x1){_0x21edaa>0x0&&(_0x4c3cd1+='\x20'+_0x53af1c[_0x5b02('0x6a')]+'\x20');_0x4c3cd1+=_0x53af1c[_0x5b02('0x69')][_0x21edaa][_0x5b02('0x6b')]?_0x11d031(_0x53af1c[_0x5b02('0x69')][_0x21edaa][_0x5b02('0x6b')]):_0x53af1c[_0x5b02('0x69')][_0x21edaa]['field']+'\x20'+_0x53af1c[_0x5b02('0x69')][_0x21edaa][_0x5b02('0x6d')]+(_0x39de83(_0x53af1c['rules'][_0x21edaa][_0x5b02('0x6d')])?'\x20'+_0x53af1c['rules'][_0x21edaa][_0x5b02('0x6e')]:'');}return _0x4c3cd1+')';};var _0x2922d6={'where':{'id':_0x4d218a['id']}},_0x3dfa36,_0x4066a6,_0x57235a,_0x214a21,_0x3dbb0c;_0x2922d6=_['merge']({},_0x2922d6,_0x44e787);return db[_0x5b02('0x42')][_0x5b02('0x54')](_0x2922d6)[_0x5b02('0x24')](function(_0x1a0d14){if(_0x1a0d14){_0x3dfa36=_0x1a0d14;return _0x1a0d14['getFields']();}return null;})[_0x5b02('0x24')](function(_0x801085){if(_0x801085){if(!_0x801085[_0x5b02('0x39')]){throw new db[(_0x5b02('0x70'))][(_0x5b02('0x90'))](_0x5b02('0x71'),0x193);}_0x4066a6=_0x801085;return db[_0x5b02('0x72')][_0x5b02('0x73')]({'raw':!![]});}return null;})[_0x5b02('0x24')](function(_0x2ffb9d){if(_0x2ffb9d){_0x57235a=_[_0x5b02('0x74')](_0x2ffb9d,'id');var _0x23c3e4;var _0x591459=squel[_0x5b02('0x91')]();_0x591459[_0x5b02('0x75')](_0x3dfa36[_0x5b02('0x76')]);for(var _0x4e5471=0x0;_0x4e5471<_0x4066a6[_0x5b02('0x39')];_0x4e5471+=0x1){_0x23c3e4=_0x4066a6[_0x4e5471][_0x5b02('0x77')]?_0x57235a[_0x4066a6[_0x4e5471][_0x5b02('0x77')]][_0x5b02('0x78')]:_0x4066a6[_0x4e5471]['field'];_0x23c3e4=_0x4066a6[_0x4e5471][_0x5b02('0x79')]?_[_0x5b02('0x7a')](_0x1f53c9[_0x4066a6[_0x4e5471][_0x5b02('0x79')]],'%s',_0x23c3e4):_0x23c3e4;_0x23c3e4=_0x4066a6[_0x4e5471]['format']?_[_0x5b02('0x7a')](_0x1e5f30[_0x4066a6[_0x4e5471]['format']],'%s',_0x23c3e4):_0x23c3e4;if(_0x4066a6[_0x4e5471][_0x5b02('0x7c')]){_0x591459[_0x5b02('0x6b')](_0x23c3e4);}_0x4066a6[_0x4e5471][_0x5b02('0x7d')]&&_0x591459['order'](_0x23c3e4,_0x4066a6[_0x4e5471][_0x5b02('0x7d')]===_0x5b02('0x7f')?![]:!![]);_0x591459[_0x5b02('0x6c')](_0x23c3e4,_0x4066a6[_0x4e5471][_0x5b02('0x80')]||_0x23c3e4);}if(_0x3dfa36['joins']){_0x3dfa36['joins']=JSON[_0x5b02('0x92')](_0x3dfa36[_0x5b02('0x81')]);for(var _0x9a28e8=0x0;_0x9a28e8<_0x3dfa36[_0x5b02('0x81')][_0x5b02('0x39')];_0x9a28e8+=0x1){if(_0x3dfa36[_0x5b02('0x81')][_0x9a28e8][_0x5b02('0x31')]&&_['includes'](_0x53bcd9,_0x3dfa36[_0x5b02('0x81')][_0x9a28e8][_0x5b02('0x31')])&&_0x3dfa36[_0x5b02('0x81')][_0x9a28e8][_0x5b02('0x84')]&&_0x3dfa36[_0x5b02('0x81')][_0x9a28e8][_0x5b02('0x82')]&&_0x3dfa36[_0x5b02('0x81')][_0x9a28e8][_0x5b02('0x93')]){_0x591459[_0x3dfa36[_0x5b02('0x81')][_0x9a28e8]['type']](_0x3dfa36['joins'][_0x9a28e8][_0x5b02('0x82')],null,util[_0x5b02('0x7b')](_0x5b02('0x83'),_0x3dfa36['table'],_0x3dfa36['joins'][_0x9a28e8][_0x5b02('0x84')],_0x3dfa36[_0x5b02('0x81')][_0x9a28e8][_0x5b02('0x82')],_0x3dfa36[_0x5b02('0x81')][_0x9a28e8][_0x5b02('0x93')]));}}}if(_0x3dfa36[_0x5b02('0x85')]){_0x3dfa36['conditions']=JSON[_0x5b02('0x92')](_0x3dfa36[_0x5b02('0x85')]);_0x591459[_0x5b02('0x3d')](_0x11d031(_0x3dfa36[_0x5b02('0x85')][_0x5b02('0x6b')]));}_0x3dbb0c=_0x591459[_0x5b02('0x86')]();_0x591459[_0x5b02('0x1c')](_0x3dda14);_0x591459[_0x5b02('0x1b')](0x0);return;}})[_0x5b02('0x24')](function(){if(_0x972b30[_0x5b02('0x94')]==='web'){return null;}var _0x18a42c=_[_0x5b02('0x3f')](_0x972b30,{'name':_0x972b30[_0x5b02('0x95')]||_0x972b30[_0x5b02('0x2c')]||_0x3dfa36[_0x5b02('0x2c')],'basename':_0x568fa3,'savename':util[_0x5b02('0x7b')](_0x5b02('0x96'),_0x972b30[_0x5b02('0x2c')]||_0x3dfa36['name'],require(_0x5b02('0x97'))[_0x5b02('0x98')](0x4),_0x972b30[_0x5b02('0x94')]||_0x5b02('0x99')),'reportId':_0x3dfa36['id'],'reportType':_0x5b02('0x9a')});return db[_0x5b02('0x9b')][_0x5b02('0x4b')](_0x18a42c,{'raw':!![]});})[_0x5b02('0x24')](function(_0x49b15a){if(_0x3dfa36[_0x5b02('0x76')]===_0x5b02('0x9c')){_0x3dbb0c[_0x5b02('0x3d')](_0x3dfa36['table']+_0x5b02('0x9d'),_0x972b30[_0x5b02('0x9e')],_0x972b30['endDate']);}else{_0x3dbb0c[_0x5b02('0x3d')](_0x3dfa36[_0x5b02('0x76')]+_0x5b02('0x9f'),_0x972b30[_0x5b02('0x9e')],_0x972b30['endDate']);}if(_0x49b15a){logger[_0x5b02('0xa0')](_0x5b02('0xa1'),_0x3dbb0c[_0x5b02('0x89')]());require('child_process')[_0x5b02('0xa2')](path[_0x5b02('0x56')](__dirname,_0x5b02('0xa3'),_0x49b15a[_0x5b02('0x94')]),[_0x49b15a['id'],_0x3dbb0c[_0x5b02('0x89')](),path[_0x5b02('0x56')](__dirname,_0x5b02('0xa4'),_0x49b15a[_0x5b02('0xa5')]),_0x568fa3]);return _0x49b15a;}else{var _0x6ffcd3=squel[_0x5b02('0x91')]();_0x6ffcd3[_0x5b02('0x75')]('('+_0x3dbb0c[_0x5b02('0x89')]()+')',_0x5b02('0xa6'));_0x6ffcd3[_0x5b02('0x6c')](_0x5b02('0xa7'),_0x5b02('0x1e'));_0x3dbb0c['limit'](_0x972b30[_0x5b02('0x1c')]||_0x3dda14);_0x3dbb0c['offset'](_0x972b30[_0x5b02('0x1b')]||0x0);return dbH[_0x5b02('0x8a')][_0x5b02('0x33')](_0x6ffcd3['toString'](),{'type':dbH['sequelize'][_0x5b02('0x8b')][_0x5b02('0x8c')]})[_0x5b02('0x24')](function(_0x2f3f4b){if(!_0x2f3f4b[_0x5b02('0x39')]){_0x214a21=0x0;}else{_0x214a21=_0x2f3f4b[0x0]['count']||0x0;}return dbH['sequelize'][_0x5b02('0x33')](_0x3dbb0c[_0x5b02('0x89')](),{'type':dbH[_0x5b02('0x8a')][_0x5b02('0x8b')][_0x5b02('0x8c')]});})[_0x5b02('0x24')](function(_0x10b06b){return{'rows':_0x10b06b||[],'count':_0x214a21};});}});}exports[_0x5b02('0xa8')]=function(_0x4acf64,_0x20925d){return runReport(_0x4acf64[_0x5b02('0x47')],_0x4acf64[_0x5b02('0x33')],_0x4acf64['options'])[_0x5b02('0x24')](respondWithResult(_0x20925d,null))[_0x5b02('0x45')](handleError(_0x20925d,null));};exports['runReport']=runReport;exports[_0x5b02('0x33')]=function(_0x2e1be3,_0x415fa4){var _0x36578e=0xa;var _0x349eb0=[_0x5b02('0x56'),_0x5b02('0x57'),_0x5b02('0x58'),_0x5b02('0x8d')];var _0x43b781={'SUM':_0x5b02('0x59'),'COUNT':_0x5b02('0x5a'),'COUNT DISTINCT':_0x5b02('0x5b'),'MAX':_0x5b02('0x5c'),'MIN':_0x5b02('0x8e'),'AVG':_0x5b02('0x5d'),'GROUP_CONCAT':_0x5b02('0x5e'),'GROUP_CONCAT ASC':_0x5b02('0xa9'),'GROUP_CONCAT DESC':_0x5b02('0x5f')};var _0x46d4cd={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0x5b02('0x62'),'ROUND':_0x5b02('0x63'),'UNIX_TIMESTAMP':_0x5b02('0x64')};var _0x43fa0a=function(_0x35bb1d){return!_[_0x5b02('0x65')]([_0x5b02('0x8f'),_0x5b02('0x66'),_0x5b02('0x67'),_0x5b02('0x68')],_0x35bb1d);};var _0x377935=function(_0x3d4cc4){if(!_0x3d4cc4||!_0x3d4cc4[_0x5b02('0x69')][_0x5b02('0x39')]){return'';}for(var _0x6220c2='(',_0x4a0e26=0x0;_0x4a0e26<_0x3d4cc4[_0x5b02('0x69')][_0x5b02('0x39')];_0x4a0e26+=0x1){_0x4a0e26>0x0&&(_0x6220c2+='\x20'+_0x3d4cc4[_0x5b02('0x6a')]+'\x20');_0x6220c2+=_0x3d4cc4[_0x5b02('0x69')][_0x4a0e26][_0x5b02('0x6b')]?_0x377935(_0x3d4cc4[_0x5b02('0x69')][_0x4a0e26]['group']):_0x3d4cc4[_0x5b02('0x69')][_0x4a0e26]['field']+'\x20'+_0x3d4cc4[_0x5b02('0x69')][_0x4a0e26][_0x5b02('0x6d')]+(_0x43fa0a(_0x3d4cc4[_0x5b02('0x69')][_0x4a0e26]['condition'])?'\x20'+_0x3d4cc4[_0x5b02('0x69')][_0x4a0e26][_0x5b02('0x6e')]:'');}return _0x6220c2+')';};var _0x902f14={'where':{'id':_0x2e1be3['params']['id']}},_0x39ec1b,_0x12ef70,_0x57ba87,_0x7cb754,_0x33e2a7;_0x902f14=_[_0x5b02('0x3f')]({},_0x902f14,_0x2e1be3[_0x5b02('0x41')]);return db[_0x5b02('0x42')][_0x5b02('0x54')](_0x902f14)[_0x5b02('0x24')](function(_0x5279b2){if(_0x5279b2){_0x39ec1b=_0x5279b2;return _0x5279b2[_0x5b02('0x6f')]();}return null;})[_0x5b02('0x24')](function(_0x5f111d){if(_0x5f111d){if(!_0x5f111d['length']){throw new db[(_0x5b02('0x70'))][(_0x5b02('0x90'))](_0x5b02('0x71'),0x193);}_0x12ef70=_0x5f111d;return db[_0x5b02('0x72')][_0x5b02('0x73')]({'raw':!![]});}return null;})[_0x5b02('0x24')](function(_0x2108a1){if(_0x2108a1){_0x57ba87=_['keyBy'](_0x2108a1,'id');var _0x241eaf;var _0x49a9e5=squel[_0x5b02('0x91')]();_0x49a9e5[_0x5b02('0x75')](_0x39ec1b['table']);for(var _0x279297=0x0;_0x279297<_0x12ef70[_0x5b02('0x39')];_0x279297+=0x1){_0x241eaf=_0x12ef70[_0x279297]['MetricId']?_0x57ba87[_0x12ef70[_0x279297]['MetricId']][_0x5b02('0x78')]:_0x12ef70[_0x279297][_0x5b02('0x6c')];_0x241eaf=_0x12ef70[_0x279297][_0x5b02('0x79')]?_[_0x5b02('0x7a')](_0x43b781[_0x12ef70[_0x279297][_0x5b02('0x79')]],'%s',_0x241eaf):_0x241eaf;_0x241eaf=_0x12ef70[_0x279297][_0x5b02('0x7b')]?_[_0x5b02('0x7a')](_0x46d4cd[_0x12ef70[_0x279297][_0x5b02('0x7b')]],'%s',_0x241eaf):_0x241eaf;if(_0x12ef70[_0x279297]['groupBy']){_0x49a9e5[_0x5b02('0x6b')](_0x241eaf);}_0x12ef70[_0x279297][_0x5b02('0x7d')]&&_0x49a9e5['order'](_0x241eaf,_0x12ef70[_0x279297][_0x5b02('0x7d')]===_0x5b02('0x7f')?![]:!![]);_0x49a9e5[_0x5b02('0x6c')](_0x241eaf,_0x12ef70[_0x279297][_0x5b02('0x80')]||_0x241eaf);}if(_0x39ec1b[_0x5b02('0x81')]){_0x39ec1b[_0x5b02('0x81')]=JSON['parse'](_0x39ec1b[_0x5b02('0x81')]);for(var _0x316973=0x0;_0x316973<_0x39ec1b[_0x5b02('0x81')][_0x5b02('0x39')];_0x316973+=0x1){if(_0x39ec1b[_0x5b02('0x81')][_0x316973][_0x5b02('0x31')]&&_['includes'](_0x349eb0,_0x39ec1b[_0x5b02('0x81')][_0x316973][_0x5b02('0x31')])&&_0x39ec1b[_0x5b02('0x81')][_0x316973][_0x5b02('0x84')]&&_0x39ec1b[_0x5b02('0x81')][_0x316973][_0x5b02('0x82')]&&_0x39ec1b[_0x5b02('0x81')][_0x316973][_0x5b02('0x93')]){_0x49a9e5[_0x39ec1b[_0x5b02('0x81')][_0x316973]['type']](_0x39ec1b['joins'][_0x316973][_0x5b02('0x82')],null,util[_0x5b02('0x7b')](_0x5b02('0x83'),_0x39ec1b['table'],_0x39ec1b[_0x5b02('0x81')][_0x316973][_0x5b02('0x84')],_0x39ec1b[_0x5b02('0x81')][_0x316973][_0x5b02('0x82')],_0x39ec1b['joins'][_0x316973][_0x5b02('0x93')]));}}}if(_0x39ec1b['conditions']){_0x39ec1b[_0x5b02('0x85')]=JSON[_0x5b02('0x92')](_0x39ec1b[_0x5b02('0x85')]);_0x49a9e5[_0x5b02('0x3d')](_0x377935(_0x39ec1b[_0x5b02('0x85')]['group']));}_0x33e2a7=_0x49a9e5[_0x5b02('0x86')]();_0x49a9e5[_0x5b02('0x1c')](_0x36578e);_0x49a9e5[_0x5b02('0x1b')](0x0);logger[_0x5b02('0x87')](_0x5b02('0x88'),_0x49a9e5[_0x5b02('0x89')]());return dbH['sequelize'][_0x5b02('0x33')](_0x49a9e5['toString'](),{'type':dbH[_0x5b02('0x8a')][_0x5b02('0x8b')][_0x5b02('0x8c')]});}})[_0x5b02('0x24')](function(){return{'sql':_0x33e2a7[_0x5b02('0x89')]()};})[_0x5b02('0x24')](respondWithResult(_0x415fa4,null))[_0x5b02('0x45')](handleError(_0x415fa4,null));};
\ No newline at end of file
index dfcbdc1..a862366 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d96=['util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','exports','analytics_custom_reports'];(function(_0x47dcb1,_0x2e7067){var _0x532b9f=function(_0x1f3fb5){while(--_0x1f3fb5){_0x47dcb1['push'](_0x47dcb1['shift']());}};_0x532b9f(++_0x2e7067);}(_0x3d96,0xc8));var _0x63d9=function(_0x3bc5cb,_0x472fbf){_0x3bc5cb=_0x3bc5cb-0x0;var _0x52ba9f=_0x3d96[_0x3bc5cb];return _0x52ba9f;};'use strict';var _=require('lodash');var util=require(_0x63d9('0x0'));var logger=require(_0x63d9('0x1'))(_0x63d9('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x63d9('0x3'));var fs=require('fs');var path=require(_0x63d9('0x4'));var rimraf=require(_0x63d9('0x5'));var config=require(_0x63d9('0x6'));var attributes=require(_0x63d9('0x7'));module[_0x63d9('0x8')]=function(_0x4bf7b7,_0x4d4188){return _0x4bf7b7['define']('AnalyticCustomReport',attributes,{'tableName':_0x63d9('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc97c=['path','../../config/environment','./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','analytics_custom_reports','lodash','../../config/logger','api','request-promise'];(function(_0x2be97a,_0x249072){var _0x7a1099=function(_0x56dd8f){while(--_0x56dd8f){_0x2be97a['push'](_0x2be97a['shift']());}};_0x7a1099(++_0x249072);}(_0xc97c,0x104));var _0xcc97=function(_0x21e4fc,_0x3e3020){_0x21e4fc=_0x21e4fc-0x0;var _0x4df40c=_0xc97c[_0x21e4fc];return _0x4df40c;};'use strict';var _=require(_0xcc97('0x0'));var util=require('util');var logger=require(_0xcc97('0x1'))(_0xcc97('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xcc97('0x3'));var fs=require('fs');var path=require(_0xcc97('0x4'));var rimraf=require('rimraf');var config=require(_0xcc97('0x5'));var attributes=require(_0xcc97('0x6'));module[_0xcc97('0x7')]=function(_0x3b8ba6,_0x199c0){return _0x3b8ba6[_0xcc97('0x8')](_0xcc97('0x9'),attributes,{'tableName':_0xcc97('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6602d45..a76f782 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41f4=['message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x513987,_0x3b3093){var _0x7b2337=function(_0x4c51aa){while(--_0x4c51aa){_0x513987['push'](_0x513987['shift']());}};_0x7b2337(++_0x3b3093);}(_0x41f4,0x1ce));var _0x441f=function(_0x12fcf8,_0x7857bd){_0x12fcf8=_0x12fcf8-0x0;var _0xd45e55=_0x41f4[_0x12fcf8];return _0xd45e55;};'use strict';var _=require(_0x441f('0x0'));var util=require(_0x441f('0x1'));var moment=require(_0x441f('0x2'));var BPromise=require(_0x441f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x441f('0x4'));var db=require(_0x441f('0x5'))['db'];var utils=require(_0x441f('0x6'));var logger=require('../../config/logger')(_0x441f('0x7'));var config=require(_0x441f('0x8'));var jayson=require(_0x441f('0x9'));var client=jayson[_0x441f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2cfe0d,_0x5a3115,_0x56e303){return new BPromise(function(_0x473330,_0x3dc408){return client[_0x441f('0xb')](_0x2cfe0d,_0x56e303)[_0x441f('0xc')](function(_0x2b7341){logger[_0x441f('0xd')](_0x441f('0xe'),_0x5a3115,_0x441f('0xf'));logger[_0x441f('0x10')](_0x441f('0x11'),_0x5a3115,_0x441f('0xf'),JSON[_0x441f('0x12')](_0x2b7341));if(_0x2b7341[_0x441f('0x13')]){if(_0x2b7341[_0x441f('0x13')][_0x441f('0x14')]===0x1f4){logger['error'](_0x441f('0xe'),_0x5a3115,_0x2b7341[_0x441f('0x13')][_0x441f('0x15')]);return _0x3dc408(_0x2b7341['error'][_0x441f('0x15')]);}logger['error'](_0x441f('0xe'),_0x5a3115,_0x2b7341[_0x441f('0x13')][_0x441f('0x15')]);return _0x473330(_0x2b7341[_0x441f('0x13')][_0x441f('0x15')]);}else{logger['info']('AnalyticCustomReport,\x20%s,\x20%s',_0x5a3115,'request\x20sent');_0x473330(_0x2b7341['result'][_0x441f('0x15')]);}})[_0x441f('0x16')](function(_0x30a12d){logger[_0x441f('0x13')]('AnalyticCustomReport,\x20%s,\x20%s',_0x5a3115,_0x30a12d);_0x3dc408(_0x30a12d);});});}
\ No newline at end of file
+var _0x3a72=['jayson/promise','client','request','then','info','request\x20sent','debug','stringify','error','code','AnalyticCustomReport,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3a72,0xe6));var _0x23a7=function(_0x5bf565,_0x113b2f){_0x5bf565=_0x5bf565-0x0;var _0xa2321c=_0x3a72[_0x5bf565];return _0xa2321c;};'use strict';var _=require('lodash');var util=require(_0x23a7('0x0'));var moment=require(_0x23a7('0x1'));var BPromise=require(_0x23a7('0x2'));var rs=require(_0x23a7('0x3'));var fs=require('fs');var Redis=require(_0x23a7('0x4'));var db=require(_0x23a7('0x5'))['db'];var utils=require(_0x23a7('0x6'));var logger=require(_0x23a7('0x7'))(_0x23a7('0x8'));var config=require(_0x23a7('0x9'));var jayson=require(_0x23a7('0xa'));var client=jayson[_0x23a7('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x26acff,_0x285501,_0x1ec5a5){return new BPromise(function(_0xd94324,_0x15e1db){return client[_0x23a7('0xc')](_0x26acff,_0x1ec5a5)[_0x23a7('0xd')](function(_0x4fa4f8){logger[_0x23a7('0xe')]('AnalyticCustomReport,\x20%s,\x20%s',_0x285501,_0x23a7('0xf'));logger[_0x23a7('0x10')]('AnalyticCustomReport,\x20%s,\x20%s,\x20%s',_0x285501,_0x23a7('0xf'),JSON[_0x23a7('0x11')](_0x4fa4f8));if(_0x4fa4f8[_0x23a7('0x12')]){if(_0x4fa4f8[_0x23a7('0x12')][_0x23a7('0x13')]===0x1f4){logger[_0x23a7('0x12')](_0x23a7('0x14'),_0x285501,_0x4fa4f8[_0x23a7('0x12')][_0x23a7('0x15')]);return _0x15e1db(_0x4fa4f8['error'][_0x23a7('0x15')]);}logger[_0x23a7('0x12')](_0x23a7('0x14'),_0x285501,_0x4fa4f8[_0x23a7('0x12')][_0x23a7('0x15')]);return _0xd94324(_0x4fa4f8[_0x23a7('0x12')]['message']);}else{logger['info'](_0x23a7('0x14'),_0x285501,_0x23a7('0xf'));_0xd94324(_0x4fa4f8[_0x23a7('0x16')][_0x23a7('0x15')]);}})[_0x23a7('0x17')](function(_0x37f130){logger[_0x23a7('0x12')](_0x23a7('0x14'),_0x285501,_0x37f130);_0x15e1db(_0x37f130);});});}
\ No newline at end of file
index 213a60f..353c44b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4fa=['/:id/preview','isAuthenticated','preview','/:id/run','run','/:id/query','query','post','create','put','update','delete','destroy','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id'];(function(_0x8eb4eb,_0xa70079){var _0x1ff8e3=function(_0x1e118e){while(--_0x1e118e){_0x8eb4eb['push'](_0x8eb4eb['shift']());}};_0x1ff8e3(++_0xa70079);}(_0xa4fa,0xb5));var _0xaa4f=function(_0x91affa,_0x2d29a0){_0x91affa=_0x91affa-0x0;var _0x3f10be=_0xa4fa[_0x91affa];return _0x3f10be;};'use strict';var multer=require(_0xaa4f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xaa4f('0x1'));var express=require(_0xaa4f('0x2'));var router=express[_0xaa4f('0x3')]();var fs_extra=require(_0xaa4f('0x4'));var auth=require(_0xaa4f('0x5'));var interaction=require(_0xaa4f('0x6'));var config=require(_0xaa4f('0x7'));var controller=require('./analyticCustomReport.controller');router[_0xaa4f('0x8')]('/',auth['isAuthenticated'](),controller[_0xaa4f('0x9')]);router[_0xaa4f('0x8')](_0xaa4f('0xa'),auth['isAuthenticated'](),controller['show']);router[_0xaa4f('0x8')](_0xaa4f('0xb'),auth[_0xaa4f('0xc')](),controller[_0xaa4f('0xd')]);router[_0xaa4f('0x8')](_0xaa4f('0xe'),auth[_0xaa4f('0xc')](),controller[_0xaa4f('0xf')]);router[_0xaa4f('0x8')](_0xaa4f('0x10'),auth[_0xaa4f('0xc')](),controller[_0xaa4f('0x11')]);router[_0xaa4f('0x12')]('/',auth[_0xaa4f('0xc')](),controller[_0xaa4f('0x13')]);router[_0xaa4f('0x14')](_0xaa4f('0xa'),auth['isAuthenticated'](),controller[_0xaa4f('0x15')]);router[_0xaa4f('0x16')](_0xaa4f('0xa'),auth[_0xaa4f('0xc')](),controller[_0xaa4f('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x0c63=['./analyticCustomReport.controller','get','index','/:id','isAuthenticated','show','preview','run','/:id/query','query','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x5b1c50,_0x56e694){var _0x2d379b=function(_0x981b9c){while(--_0x981b9c){_0x5b1c50['push'](_0x5b1c50['shift']());}};_0x2d379b(++_0x56e694);}(_0x0c63,0x8d));var _0x30c6=function(_0x1e9f3f,_0x19f05c){_0x1e9f3f=_0x1e9f3f-0x0;var _0x550894=_0x0c63[_0x1e9f3f];return _0x550894;};'use strict';var multer=require(_0x30c6('0x0'));var util=require(_0x30c6('0x1'));var path=require(_0x30c6('0x2'));var timeout=require(_0x30c6('0x3'));var express=require(_0x30c6('0x4'));var router=express[_0x30c6('0x5')]();var fs_extra=require(_0x30c6('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x30c6('0x7'));var config=require(_0x30c6('0x8'));var controller=require(_0x30c6('0x9'));router[_0x30c6('0xa')]('/',auth['isAuthenticated'](),controller[_0x30c6('0xb')]);router[_0x30c6('0xa')](_0x30c6('0xc'),auth[_0x30c6('0xd')](),controller[_0x30c6('0xe')]);router[_0x30c6('0xa')]('/:id/preview',auth['isAuthenticated'](),controller[_0x30c6('0xf')]);router[_0x30c6('0xa')]('/:id/run',auth[_0x30c6('0xd')](),controller[_0x30c6('0x10')]);router[_0x30c6('0xa')](_0x30c6('0x11'),auth[_0x30c6('0xd')](),controller[_0x30c6('0x12')]);router[_0x30c6('0x13')]('/',auth[_0x30c6('0xd')](),controller[_0x30c6('0x14')]);router[_0x30c6('0x15')](_0x30c6('0xc'),auth['isAuthenticated'](),controller[_0x30c6('0x16')]);router[_0x30c6('0x17')](_0x30c6('0xc'),auth[_0x30c6('0xd')](),controller[_0x30c6('0x18')]);module['exports']=router;
\ No newline at end of file
index 1f063b1..5ce46a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5075=['exports','STRING','TEXT','sequelize'];(function(_0x16a223,_0x31b6e8){var _0x5ded66=function(_0x25eb5f){while(--_0x25eb5f){_0x16a223['push'](_0x16a223['shift']());}};_0x5ded66(++_0x31b6e8);}(_0x5075,0x73));var _0x5507=function(_0x4e85ec,_0x2913b6){_0x4e85ec=_0x4e85ec-0x0;var _0x1c1ab3=_0x5075[_0x4e85ec];return _0x1c1ab3;};'use strict';var Sequelize=require(_0x5507('0x0'));module[_0x5507('0x1')]={'name':{'type':Sequelize[_0x5507('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x5507('0x2')]},'parent':{'type':Sequelize[_0x5507('0x2')]},'table':{'type':Sequelize[_0x5507('0x2')]},'conditions':{'type':Sequelize[_0x5507('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x31f0=['sequelize','STRING','TEXT'];(function(_0x4a50a9,_0x3db91f){var _0x1e8ade=function(_0x2cdfcc){while(--_0x2cdfcc){_0x4a50a9['push'](_0x4a50a9['shift']());}};_0x1e8ade(++_0x3db91f);}(_0x31f0,0xb7));var _0x031f=function(_0xb8dc03,_0x5c27ac){_0xb8dc03=_0xb8dc03-0x0;var _0x581816=_0x31f0[_0xb8dc03];return _0x581816;};'use strict';var Sequelize=require(_0x031f('0x0'));module['exports']={'name':{'type':Sequelize[_0x031f('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x031f('0x1')]},'table':{'type':Sequelize[_0x031f('0x1')]},'conditions':{'type':Sequelize[_0x031f('0x2')]},'joins':{'type':Sequelize[_0x031f('0x2')]}};
\ No newline at end of file
index f4b9409..39fa250 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['options','AnalyticDefaultReport','includeAll','include','show','keys','attributes','create','body','user','role','get','Reports','UserProfileSection','userProfileId','UserProfileResource','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','params','right_join','cross_join','SUM(%s)','COUNT(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','DATE(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','group','condition','value','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','keyBy','select','from','MetricId','metric','field','function','replace','format','orderBy','DESC','joins','parse','type','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','table','conditions','debug','toString','sequelize','QueryTypes','SELECT','join','left_join','COUNT(DISTINCT\x20%s)','MAX(%s)','HOUR(%s)','UNIX_TIMESTAMP(%s)','IS\x20EMPTY','operator','groupBy','alias','output','web','fullPath','%s-%s.%s','generate','default','AnalyticExtractedReport','cdr','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','info','Run\x20Query:','child_process','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','getFields','clone','Limited\x20Query:','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','limit','count','offset','Content-Range','apply','save','then','destroy','DefaultReports','error','stack','name','index','map','fieldName','model','query','filters','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge'];(function(_0x1ff804,_0x263135){var _0x3454b8=function(_0x5a95ec){while(--_0x5a95ec){_0x1ff804['push'](_0x1ff804['shift']());}};_0x3454b8(++_0x263135);}(_0x7a54,0x106));var _0x47a5=function(_0x272ee6,_0xc6963){_0x272ee6=_0x272ee6-0x0;var _0x4ae77f=_0x7a54[_0x272ee6];return _0x4ae77f;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];var dbH=require(_0x47a5('0x15'))[_0x47a5('0x16')];function respondWithStatusCode(_0x5beb89,_0x44bd3e){_0x44bd3e=_0x44bd3e||0xcc;return function(_0x221b54){if(_0x221b54){return _0x5beb89[_0x47a5('0x17')](_0x44bd3e);}return _0x5beb89[_0x47a5('0x18')](_0x44bd3e)[_0x47a5('0x19')]();};}function respondWithResult(_0x620ee9,_0x3c6c46){_0x3c6c46=_0x3c6c46||0xc8;return function(_0x190faa){if(_0x190faa){return _0x620ee9['status'](_0x3c6c46)[_0x47a5('0x1a')](_0x190faa);}};}function respondWithFilteredResult(_0x11faf5,_0x3b001e){return function(_0x2a2cbb){if(_0x2a2cbb){var _0x1ef44c=typeof _0x3b001e['offset']==='undefined'&&typeof _0x3b001e[_0x47a5('0x1b')]==='undefined';var _0x5247fd=_0x2a2cbb[_0x47a5('0x1c')];var _0xaf70a6=_0x1ef44c?0x0:_0x3b001e[_0x47a5('0x1d')];var _0x1ef371=_0x1ef44c?_0x2a2cbb[_0x47a5('0x1c')]:_0x3b001e[_0x47a5('0x1d')]+_0x3b001e[_0x47a5('0x1b')];var _0xe3c618;if(_0x1ef371>=_0x5247fd){_0x1ef371=_0x5247fd;_0xe3c618=0xc8;}else{_0xe3c618=0xce;}_0x11faf5[_0x47a5('0x18')](_0xe3c618);return _0x11faf5['set'](_0x47a5('0x1e'),_0xaf70a6+'-'+_0x1ef371+'/'+_0x5247fd)[_0x47a5('0x1a')](_0x2a2cbb);}return null;};}function patchUpdates(_0x47cf3c){return function(_0x2b0360){try{jsonpatch[_0x47a5('0x1f')](_0x2b0360,_0x47cf3c,!![]);}catch(_0x36874d){return BPromise['reject'](_0x36874d);}return _0x2b0360[_0x47a5('0x20')]();};}function saveUpdates(_0x2f142b,_0x23db32){return function(_0x7a9f9e){if(_0x7a9f9e){return _0x7a9f9e['update'](_0x2f142b)[_0x47a5('0x21')](function(_0x385687){return _0x385687;});}return null;};}function removeEntity(_0x513981,_0x28747d){return function(_0xc4cd63){if(_0xc4cd63){return _0xc4cd63[_0x47a5('0x22')]()[_0x47a5('0x21')](function(){var _0x3abd6a=_0xc4cd63['get']({'plain':!![]});var _0x53078a=_0x47a5('0x23');return db['UserProfileResource'][_0x47a5('0x22')]({'where':{'type':_0x53078a,'resourceId':_0x3abd6a['id']}})['then'](function(){return _0xc4cd63;});})[_0x47a5('0x21')](function(){_0x513981[_0x47a5('0x18')](0xcc)[_0x47a5('0x19')]();});}};}function handleEntityNotFound(_0x1dac65,_0x21f296){return function(_0x3ba0b7){if(!_0x3ba0b7){_0x1dac65[_0x47a5('0x17')](0x194);}return _0x3ba0b7;};}function handleError(_0x136b14,_0x16631f){_0x16631f=_0x16631f||0x1f4;return function(_0x361bfa){logger[_0x47a5('0x24')](_0x361bfa[_0x47a5('0x25')]);if(_0x361bfa[_0x47a5('0x26')]){delete _0x361bfa['name'];}_0x136b14[_0x47a5('0x18')](_0x16631f)['send'](_0x361bfa);};}exports[_0x47a5('0x27')]=function(_0x9ac908,_0x16901f){var _0x4d6b57={},_0x256650={},_0x625952={'count':0x0,'rows':[]};var _0x39b50b=_[_0x47a5('0x28')](db['AnalyticDefaultReport']['rawAttributes'],function(_0x6f9a12){return{'name':_0x6f9a12[_0x47a5('0x29')],'type':_0x6f9a12['type']['key']};});_0x256650[_0x47a5('0x2a')]=_[_0x47a5('0x28')](_0x39b50b,'name');_0x256650[_0x47a5('0x2b')]=_['keys'](_0x9ac908[_0x47a5('0x2b')]);_0x256650[_0x47a5('0x2c')]=_['intersection'](_0x256650['model'],_0x256650[_0x47a5('0x2b')]);_0x4d6b57['attributes']=_[_0x47a5('0x2d')](_0x256650[_0x47a5('0x2a')],qs[_0x47a5('0x2e')](_0x9ac908['query'][_0x47a5('0x2e')]));_0x4d6b57['attributes']=_0x4d6b57['attributes'][_0x47a5('0x2f')]?_0x4d6b57['attributes']:_0x256650[_0x47a5('0x2a')];if(!_0x9ac908['query'][_0x47a5('0x30')](_0x47a5('0x31'))){_0x4d6b57[_0x47a5('0x1b')]=qs[_0x47a5('0x1b')](_0x9ac908[_0x47a5('0x2b')][_0x47a5('0x1b')]);_0x4d6b57[_0x47a5('0x1d')]=qs[_0x47a5('0x1d')](_0x9ac908[_0x47a5('0x2b')]['offset']);}_0x4d6b57[_0x47a5('0x32')]=qs[_0x47a5('0x33')](_0x9ac908['query'][_0x47a5('0x33')]);_0x4d6b57[_0x47a5('0x34')]=qs[_0x47a5('0x2c')](_['pick'](_0x9ac908[_0x47a5('0x2b')],_0x256650[_0x47a5('0x2c')]),_0x39b50b);if(_0x9ac908['query'][_0x47a5('0x35')]){_0x4d6b57[_0x47a5('0x34')]=_['merge'](_0x4d6b57['where'],{'$or':_['map'](_0x39b50b,function(_0x12d9f2){if(_0x12d9f2['type']!==_0x47a5('0x36')){var _0x1f9631={};_0x1f9631[_0x12d9f2[_0x47a5('0x26')]]={'$like':'%'+_0x9ac908[_0x47a5('0x2b')][_0x47a5('0x35')]+'%'};return _0x1f9631;}})});}_0x4d6b57=_[_0x47a5('0x37')]({},_0x4d6b57,_0x9ac908[_0x47a5('0x38')]);var _0x1f3d01={'where':_0x4d6b57[_0x47a5('0x34')]};return db[_0x47a5('0x39')][_0x47a5('0x1c')](_0x1f3d01)[_0x47a5('0x21')](function(_0x23d6d8){_0x625952['count']=_0x23d6d8;if(_0x9ac908[_0x47a5('0x2b')][_0x47a5('0x3a')]){_0x4d6b57[_0x47a5('0x3b')]=[{'all':!![]}];}return db[_0x47a5('0x39')]['findAll'](_0x4d6b57);})[_0x47a5('0x21')](function(_0x528ef3){_0x625952['rows']=_0x528ef3;return _0x625952;})['then'](respondWithFilteredResult(_0x16901f,_0x4d6b57))['catch'](handleError(_0x16901f,null));};exports[_0x47a5('0x3c')]=function(_0x5ec4e5,_0x2bb502){var _0x3a740b={'raw':!![],'where':{'id':_0x5ec4e5['params']['id']}},_0x448610={};_0x448610[_0x47a5('0x2a')]=_[_0x47a5('0x3d')](db['AnalyticDefaultReport']['rawAttributes']);_0x448610[_0x47a5('0x2b')]=_['keys'](_0x5ec4e5[_0x47a5('0x2b')]);_0x448610[_0x47a5('0x2c')]=_[_0x47a5('0x2d')](_0x448610[_0x47a5('0x2a')],_0x448610[_0x47a5('0x2b')]);_0x3a740b[_0x47a5('0x3e')]=_[_0x47a5('0x2d')](_0x448610[_0x47a5('0x2a')],qs[_0x47a5('0x2e')](_0x5ec4e5[_0x47a5('0x2b')][_0x47a5('0x2e')]));_0x3a740b[_0x47a5('0x3e')]=_0x3a740b[_0x47a5('0x3e')][_0x47a5('0x2f')]?_0x3a740b[_0x47a5('0x3e')]:_0x448610[_0x47a5('0x2a')];if(_0x5ec4e5['query'][_0x47a5('0x3a')]){_0x3a740b[_0x47a5('0x3b')]=[{'all':!![]}];}_0x3a740b=_['merge']({},_0x3a740b,_0x5ec4e5['options']);return db[_0x47a5('0x39')]['find'](_0x3a740b)[_0x47a5('0x21')](handleEntityNotFound(_0x2bb502,null))[_0x47a5('0x21')](respondWithResult(_0x2bb502,null))['catch'](handleError(_0x2bb502,null));};exports['create']=function(_0x3d85cc,_0x52d409){return db[_0x47a5('0x39')][_0x47a5('0x3f')](_0x3d85cc[_0x47a5('0x40')],{})[_0x47a5('0x21')](function(_0x44fe8a){var _0x26acd2=_0x3d85cc[_0x47a5('0x41')]['get']({'plain':!![]});if(!_0x26acd2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x26acd2[_0x47a5('0x42')]===_0x47a5('0x41')){var _0x1163e3=_0x44fe8a[_0x47a5('0x43')]({'plain':!![]});var _0x2c7020=_0x47a5('0x44');return db[_0x47a5('0x45')]['find']({'where':{'name':_0x2c7020,'userProfileId':_0x26acd2[_0x47a5('0x46')]},'raw':!![]})[_0x47a5('0x21')](function(_0x5f6a){if(_0x5f6a&&_0x5f6a['autoAssociation']===0x0){return db[_0x47a5('0x47')]['create']({'name':_0x1163e3[_0x47a5('0x26')],'resourceId':_0x1163e3['id'],'type':_0x47a5('0x23'),'sectionId':_0x5f6a['id']},{})[_0x47a5('0x21')](function(){return _0x44fe8a;});}else{return _0x44fe8a;}})[_0x47a5('0x48')](function(_0x588551){logger[_0x47a5('0x24')](_0x47a5('0x49'),_0x588551);throw _0x588551;});}return _0x44fe8a;})[_0x47a5('0x21')](respondWithResult(_0x52d409,0xc9))[_0x47a5('0x48')](handleError(_0x52d409,null));};exports[_0x47a5('0x4a')]=function(_0x6a53b3,_0x24e9f4){if(_0x6a53b3['body']['id']){delete _0x6a53b3[_0x47a5('0x40')]['id'];}return db[_0x47a5('0x39')][_0x47a5('0x4b')]({'where':{'id':_0x6a53b3[_0x47a5('0x4c')]['id']}})[_0x47a5('0x21')](handleEntityNotFound(_0x24e9f4,null))[_0x47a5('0x21')](saveUpdates(_0x6a53b3['body'],null))[_0x47a5('0x21')](respondWithResult(_0x24e9f4,null))[_0x47a5('0x48')](handleError(_0x24e9f4,null));};exports[_0x47a5('0x22')]=function(_0x53871e,_0x4c5ed){return db[_0x47a5('0x39')][_0x47a5('0x4b')]({'where':{'id':_0x53871e['params']['id']}})['then'](handleEntityNotFound(_0x4c5ed,null))[_0x47a5('0x21')](removeEntity(_0x4c5ed,null))[_0x47a5('0x48')](handleError(_0x4c5ed,null));};exports['preview']=function(_0x4cf792,_0x6d6b2b){var _0x4d6a82=0xa;var _0x16bb8a=['join','left_join',_0x47a5('0x4d'),_0x47a5('0x4e')];var _0x53eedf={'SUM':_0x47a5('0x4f'),'COUNT':_0x47a5('0x50'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0x47a5('0x51'),'AVG':_0x47a5('0x52'),'GROUP_CONCAT':_0x47a5('0x53'),'GROUP_CONCAT ASC':_0x47a5('0x54'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x199621={'SEC_TO_TIME':_0x47a5('0x55'),'DATE':_0x47a5('0x56'),'HOUR':'HOUR(%s)','ROUND':_0x47a5('0x57'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x485e3c=function(_0x470da6){return!_[_0x47a5('0x58')]([_0x47a5('0x59'),_0x47a5('0x5a'),'IS\x20EMPTY',_0x47a5('0x5b')],_0x470da6);};var _0x5d1550=function(_0x5cbe97){if(!_0x5cbe97||!_0x5cbe97['rules']['length']){return'';}for(var _0x212d92='(',_0x6cd4ea=0x0;_0x6cd4ea<_0x5cbe97[_0x47a5('0x5c')]['length'];_0x6cd4ea+=0x1){_0x6cd4ea>0x0&&(_0x212d92+='\x20'+_0x5cbe97['operator']+'\x20');_0x212d92+=_0x5cbe97[_0x47a5('0x5c')][_0x6cd4ea][_0x47a5('0x5d')]?_0x5d1550(_0x5cbe97[_0x47a5('0x5c')][_0x6cd4ea][_0x47a5('0x5d')]):_0x5cbe97[_0x47a5('0x5c')][_0x6cd4ea]['field']+'\x20'+_0x5cbe97[_0x47a5('0x5c')][_0x6cd4ea]['condition']+(_0x485e3c(_0x5cbe97[_0x47a5('0x5c')][_0x6cd4ea][_0x47a5('0x5e')])?'\x20'+_0x5cbe97['rules'][_0x6cd4ea][_0x47a5('0x5f')]:'');}return _0x212d92+')';};var _0x345104={'where':{'id':_0x4cf792[_0x47a5('0x4c')]['id']}},_0x132854,_0x3e8274,_0x2d6494,_0x215634,_0x35cca8;_0x345104=_['merge']({},_0x345104,_0x4cf792[_0x47a5('0x38')]);return db[_0x47a5('0x39')][_0x47a5('0x4b')](_0x345104)[_0x47a5('0x21')](function(_0x396cb0){if(_0x396cb0){_0x132854=_0x396cb0;return _0x396cb0['getFields']();}return null;})[_0x47a5('0x21')](function(_0xdfcecc){if(_0xdfcecc){if(!_0xdfcecc[_0x47a5('0x2f')]){throw new db[(_0x47a5('0x60'))][(_0x47a5('0x61'))](_0x47a5('0x62'),0x193);}_0x3e8274=_0xdfcecc;return db[_0x47a5('0x63')][_0x47a5('0x64')]({'raw':!![]});}return null;})[_0x47a5('0x21')](function(_0x44cb90){if(_0x44cb90){_0x2d6494=_[_0x47a5('0x65')](_0x44cb90,'id');var _0x44fda9;var _0x3c0006=squel[_0x47a5('0x66')]();_0x3c0006[_0x47a5('0x67')](_0x132854['table']);for(var _0x42dd7d=0x0;_0x42dd7d<_0x3e8274[_0x47a5('0x2f')];_0x42dd7d+=0x1){_0x44fda9=_0x3e8274[_0x42dd7d][_0x47a5('0x68')]?_0x2d6494[_0x3e8274[_0x42dd7d]['MetricId']][_0x47a5('0x69')]:_0x3e8274[_0x42dd7d][_0x47a5('0x6a')];_0x44fda9=_0x3e8274[_0x42dd7d][_0x47a5('0x6b')]?_[_0x47a5('0x6c')](_0x53eedf[_0x3e8274[_0x42dd7d]['function']],'%s',_0x44fda9):_0x44fda9;_0x44fda9=_0x3e8274[_0x42dd7d][_0x47a5('0x6d')]?_['replace'](_0x199621[_0x3e8274[_0x42dd7d][_0x47a5('0x6d')]],'%s',_0x44fda9):_0x44fda9;if(_0x3e8274[_0x42dd7d]['groupBy']){_0x3c0006[_0x47a5('0x5d')](_0x44fda9);}_0x3e8274[_0x42dd7d]['orderBy']&&_0x3c0006[_0x47a5('0x32')](_0x44fda9,_0x3e8274[_0x42dd7d][_0x47a5('0x6e')]===_0x47a5('0x6f')?![]:!![]);_0x3c0006['field'](_0x44fda9,_0x3e8274[_0x42dd7d]['alias']||_0x44fda9);}if(_0x132854['joins']){_0x132854[_0x47a5('0x70')]=JSON[_0x47a5('0x71')](_0x132854[_0x47a5('0x70')]);for(var _0x117510=0x0;_0x117510<_0x132854['joins'][_0x47a5('0x2f')];_0x117510+=0x1){if(_0x132854[_0x47a5('0x70')][_0x117510][_0x47a5('0x72')]&&_[_0x47a5('0x58')](_0x16bb8a,_0x132854[_0x47a5('0x70')][_0x117510][_0x47a5('0x72')])&&_0x132854[_0x47a5('0x70')][_0x117510][_0x47a5('0x73')]&&_0x132854[_0x47a5('0x70')][_0x117510][_0x47a5('0x74')]&&_0x132854[_0x47a5('0x70')][_0x117510][_0x47a5('0x75')]){_0x3c0006[_0x132854['joins'][_0x117510][_0x47a5('0x72')]](_0x132854['joins'][_0x117510][_0x47a5('0x74')],null,util[_0x47a5('0x6d')](_0x47a5('0x76'),_0x132854[_0x47a5('0x77')],_0x132854[_0x47a5('0x70')][_0x117510][_0x47a5('0x73')],_0x132854[_0x47a5('0x70')][_0x117510][_0x47a5('0x74')],_0x132854[_0x47a5('0x70')][_0x117510][_0x47a5('0x75')]));}}}if(_0x132854[_0x47a5('0x78')]){_0x132854[_0x47a5('0x78')]=JSON[_0x47a5('0x71')](_0x132854[_0x47a5('0x78')]);_0x3c0006[_0x47a5('0x34')](_0x5d1550(_0x132854['conditions']['group']));}_0x35cca8=_0x3c0006['clone']();_0x3c0006['limit'](_0x4d6a82);_0x3c0006[_0x47a5('0x1d')](0x0);logger[_0x47a5('0x79')]('Limited\x20Query:',_0x3c0006[_0x47a5('0x7a')]());return dbH[_0x47a5('0x7b')][_0x47a5('0x2b')](_0x3c0006[_0x47a5('0x7a')](),{'type':dbH[_0x47a5('0x7b')][_0x47a5('0x7c')][_0x47a5('0x7d')]});}})[_0x47a5('0x21')](respondWithResult(_0x6d6b2b,null))[_0x47a5('0x48')](handleError(_0x6d6b2b,null));};function runReport(_0x1ffe3c,_0x24a6c1,_0x5e5f16){var _0x18fa31=_0x24a6c1[_0x47a5('0x26')];var _0x420671=0xa;var _0x4f35ff=[_0x47a5('0x7e'),_0x47a5('0x7f'),_0x47a5('0x4d'),'cross_join'];var _0x19dc8c={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0x47a5('0x80'),'MAX':_0x47a5('0x81'),'MIN':_0x47a5('0x51'),'AVG':_0x47a5('0x52'),'GROUP_CONCAT':_0x47a5('0x53'),'GROUP_CONCAT ASC':_0x47a5('0x54'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x592322={'SEC_TO_TIME':_0x47a5('0x55'),'DATE':'DATE(%s)','HOUR':_0x47a5('0x82'),'ROUND':_0x47a5('0x57'),'UNIX_TIMESTAMP':_0x47a5('0x83')};var _0xb16bdd=function(_0x53ea2b){return!_[_0x47a5('0x58')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x47a5('0x84'),_0x47a5('0x5b')],_0x53ea2b);};var _0x5b91f7=function(_0x1926bd){if(!_0x1926bd||!_0x1926bd[_0x47a5('0x5c')][_0x47a5('0x2f')]){return'';}for(var _0x4c25ec='(',_0x280372=0x0;_0x280372<_0x1926bd['rules'][_0x47a5('0x2f')];_0x280372+=0x1){_0x280372>0x0&&(_0x4c25ec+='\x20'+_0x1926bd[_0x47a5('0x85')]+'\x20');_0x4c25ec+=_0x1926bd[_0x47a5('0x5c')][_0x280372]['group']?_0x5b91f7(_0x1926bd[_0x47a5('0x5c')][_0x280372][_0x47a5('0x5d')]):_0x1926bd[_0x47a5('0x5c')][_0x280372]['field']+'\x20'+_0x1926bd[_0x47a5('0x5c')][_0x280372]['condition']+(_0xb16bdd(_0x1926bd[_0x47a5('0x5c')][_0x280372]['condition'])?'\x20'+_0x1926bd[_0x47a5('0x5c')][_0x280372][_0x47a5('0x5f')]:'');}return _0x4c25ec+')';};var _0x20a742={'where':{'id':_0x1ffe3c['id']}},_0x211fbf,_0x51738b,_0x42fcce,_0x2ae130,_0x23c393;_0x20a742=_[_0x47a5('0x37')]({},_0x20a742,_0x5e5f16);return db[_0x47a5('0x39')]['find'](_0x20a742)['then'](function(_0x569550){if(_0x569550){_0x211fbf=_0x569550;return _0x569550['getFields']();}return null;})[_0x47a5('0x21')](function(_0xa8809a){if(_0xa8809a){if(!_0xa8809a[_0x47a5('0x2f')]){throw new db['Sequelize'][(_0x47a5('0x61'))](_0x47a5('0x62'),0x193);}_0x51738b=_0xa8809a;return db['AnalyticMetric'][_0x47a5('0x64')]({'raw':!![]});}return null;})[_0x47a5('0x21')](function(_0x19acfa){if(_0x19acfa){_0x42fcce=_[_0x47a5('0x65')](_0x19acfa,'id');var _0x58dacd;var _0x4b5353=squel[_0x47a5('0x66')]();_0x4b5353[_0x47a5('0x67')](_0x211fbf['table']);for(var _0x27d422=0x0;_0x27d422<_0x51738b[_0x47a5('0x2f')];_0x27d422+=0x1){_0x58dacd=_0x51738b[_0x27d422]['MetricId']?_0x42fcce[_0x51738b[_0x27d422][_0x47a5('0x68')]][_0x47a5('0x69')]:_0x51738b[_0x27d422][_0x47a5('0x6a')];_0x58dacd=_0x51738b[_0x27d422]['function']?_[_0x47a5('0x6c')](_0x19dc8c[_0x51738b[_0x27d422]['function']],'%s',_0x58dacd):_0x58dacd;_0x58dacd=_0x51738b[_0x27d422][_0x47a5('0x6d')]?_['replace'](_0x592322[_0x51738b[_0x27d422][_0x47a5('0x6d')]],'%s',_0x58dacd):_0x58dacd;if(_0x51738b[_0x27d422][_0x47a5('0x86')]){_0x4b5353['group'](_0x58dacd);}_0x51738b[_0x27d422][_0x47a5('0x6e')]&&_0x4b5353['order'](_0x58dacd,_0x51738b[_0x27d422][_0x47a5('0x6e')]===_0x47a5('0x6f')?![]:!![]);_0x4b5353[_0x47a5('0x6a')](_0x58dacd,_0x51738b[_0x27d422][_0x47a5('0x87')]||_0x58dacd);}if(_0x211fbf['joins']){_0x211fbf[_0x47a5('0x70')]=JSON['parse'](_0x211fbf['joins']);for(var _0x2bb2df=0x0;_0x2bb2df<_0x211fbf[_0x47a5('0x70')][_0x47a5('0x2f')];_0x2bb2df+=0x1){if(_0x211fbf[_0x47a5('0x70')][_0x2bb2df][_0x47a5('0x72')]&&_['includes'](_0x4f35ff,_0x211fbf[_0x47a5('0x70')][_0x2bb2df][_0x47a5('0x72')])&&_0x211fbf[_0x47a5('0x70')][_0x2bb2df][_0x47a5('0x73')]&&_0x211fbf['joins'][_0x2bb2df][_0x47a5('0x74')]&&_0x211fbf['joins'][_0x2bb2df][_0x47a5('0x75')]){_0x4b5353[_0x211fbf[_0x47a5('0x70')][_0x2bb2df][_0x47a5('0x72')]](_0x211fbf[_0x47a5('0x70')][_0x2bb2df][_0x47a5('0x74')],null,util[_0x47a5('0x6d')](_0x47a5('0x76'),_0x211fbf[_0x47a5('0x77')],_0x211fbf[_0x47a5('0x70')][_0x2bb2df]['parentKey'],_0x211fbf[_0x47a5('0x70')][_0x2bb2df][_0x47a5('0x74')],_0x211fbf['joins'][_0x2bb2df][_0x47a5('0x75')]));}}}if(_0x211fbf[_0x47a5('0x78')]){_0x211fbf[_0x47a5('0x78')]=JSON['parse'](_0x211fbf['conditions']);_0x4b5353[_0x47a5('0x34')](_0x5b91f7(_0x211fbf[_0x47a5('0x78')]['group']));}_0x23c393=_0x4b5353['clone']();_0x4b5353[_0x47a5('0x1b')](_0x420671);_0x4b5353[_0x47a5('0x1d')](0x0);return;}})['then'](function(){if(_0x24a6c1[_0x47a5('0x88')]===_0x47a5('0x89')){return null;}var _0x4c9e6a=_[_0x47a5('0x37')](_0x24a6c1,{'name':_0x24a6c1[_0x47a5('0x8a')]||_0x24a6c1[_0x47a5('0x26')]||_0x211fbf[_0x47a5('0x26')],'basename':_0x18fa31,'savename':util[_0x47a5('0x6d')](_0x47a5('0x8b'),_0x24a6c1['name']||_0x211fbf['name'],require('randomstring')[_0x47a5('0x8c')](0x4),_0x24a6c1[_0x47a5('0x88')]||'csv'),'reportId':_0x211fbf['id'],'reportType':_0x47a5('0x8d')});return db[_0x47a5('0x8e')][_0x47a5('0x3f')](_0x4c9e6a,{'raw':!![]});})[_0x47a5('0x21')](function(_0xcdbfd7){if(_0x211fbf['table']===_0x47a5('0x8f')){_0x23c393['where'](_0x211fbf['table']+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x24a6c1[_0x47a5('0x90')],_0x24a6c1['endDate']);}else{_0x23c393[_0x47a5('0x34')](_0x211fbf[_0x47a5('0x77')]+_0x47a5('0x91'),_0x24a6c1['startDate'],_0x24a6c1[_0x47a5('0x92')]);}if(_0xcdbfd7){logger[_0x47a5('0x93')](_0x47a5('0x94'),_0x23c393[_0x47a5('0x7a')]());require(_0x47a5('0x95'))['fork'](path[_0x47a5('0x7e')](__dirname,_0x47a5('0x96'),_0xcdbfd7['output']),[_0xcdbfd7['id'],_0x23c393[_0x47a5('0x7a')](),path[_0x47a5('0x7e')](__dirname,_0x47a5('0x97'),_0xcdbfd7[_0x47a5('0x98')]),_0x18fa31]);return _0xcdbfd7;}else{var _0x3c117a=squel[_0x47a5('0x66')]();_0x3c117a['from']('('+_0x23c393[_0x47a5('0x7a')]()+')',_0x47a5('0x99'));_0x3c117a['field'](_0x47a5('0x9a'),_0x47a5('0x1c'));_0x23c393[_0x47a5('0x1b')](_0x24a6c1[_0x47a5('0x1b')]||_0x420671);_0x23c393['offset'](_0x24a6c1['offset']||0x0);return dbH['sequelize']['query'](_0x3c117a[_0x47a5('0x7a')](),{'type':dbH[_0x47a5('0x7b')][_0x47a5('0x7c')][_0x47a5('0x7d')]})[_0x47a5('0x21')](function(_0x6bc37b){if(!_0x6bc37b[_0x47a5('0x2f')]){_0x2ae130=0x0;}else{_0x2ae130=_0x6bc37b[0x0][_0x47a5('0x1c')]||0x0;}return dbH['sequelize'][_0x47a5('0x2b')](_0x23c393[_0x47a5('0x7a')](),{'type':dbH[_0x47a5('0x7b')][_0x47a5('0x7c')]['SELECT']});})['then'](function(_0x3770ae){return{'rows':_0x3770ae||[],'count':_0x2ae130};});}});}exports['run']=function(_0x4cb8e4,_0x1b6a5c){return runReport(_0x4cb8e4[_0x47a5('0x4c')],_0x4cb8e4['query'],_0x4cb8e4[_0x47a5('0x38')])[_0x47a5('0x21')](respondWithResult(_0x1b6a5c,null))[_0x47a5('0x48')](handleError(_0x1b6a5c,null));};exports['runReport']=runReport;exports[_0x47a5('0x2b')]=function(_0xee23c7,_0x48a491){var _0x1172fd=0xa;var _0x280b7b=[_0x47a5('0x7e'),_0x47a5('0x7f'),_0x47a5('0x4d'),_0x47a5('0x4e')];var _0x482c87={'SUM':_0x47a5('0x4f'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x47a5('0x80'),'MAX':_0x47a5('0x81'),'MIN':_0x47a5('0x51'),'AVG':_0x47a5('0x52'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x47a5('0x54'),'GROUP_CONCAT DESC':_0x47a5('0x9b')};var _0x151540={'SEC_TO_TIME':_0x47a5('0x55'),'DATE':_0x47a5('0x56'),'HOUR':_0x47a5('0x82'),'ROUND':_0x47a5('0x57'),'UNIX_TIMESTAMP':_0x47a5('0x83')};var _0x1b3e82=function(_0xa2045c){return!_[_0x47a5('0x58')]([_0x47a5('0x59'),'IS\x20NOT\x20NULL',_0x47a5('0x84'),_0x47a5('0x5b')],_0xa2045c);};var _0x591bde=function(_0x55d955){if(!_0x55d955||!_0x55d955[_0x47a5('0x5c')][_0x47a5('0x2f')]){return'';}for(var _0x2ccf21='(',_0x2ff467=0x0;_0x2ff467<_0x55d955['rules'][_0x47a5('0x2f')];_0x2ff467+=0x1){_0x2ff467>0x0&&(_0x2ccf21+='\x20'+_0x55d955[_0x47a5('0x85')]+'\x20');_0x2ccf21+=_0x55d955[_0x47a5('0x5c')][_0x2ff467][_0x47a5('0x5d')]?_0x591bde(_0x55d955[_0x47a5('0x5c')][_0x2ff467][_0x47a5('0x5d')]):_0x55d955[_0x47a5('0x5c')][_0x2ff467]['field']+'\x20'+_0x55d955['rules'][_0x2ff467][_0x47a5('0x5e')]+(_0x1b3e82(_0x55d955['rules'][_0x2ff467][_0x47a5('0x5e')])?'\x20'+_0x55d955['rules'][_0x2ff467][_0x47a5('0x5f')]:'');}return _0x2ccf21+')';};var _0x8b4354={'where':{'id':_0xee23c7[_0x47a5('0x4c')]['id']}},_0x134c1a,_0x2bc7ae,_0x49cb8c,_0x220557,_0x11f07b;_0x8b4354=_['merge']({},_0x8b4354,_0xee23c7['options']);return db[_0x47a5('0x39')][_0x47a5('0x4b')](_0x8b4354)[_0x47a5('0x21')](function(_0xfccf9c){if(_0xfccf9c){_0x134c1a=_0xfccf9c;return _0xfccf9c[_0x47a5('0x9c')]();}return null;})[_0x47a5('0x21')](function(_0x1c0323){if(_0x1c0323){if(!_0x1c0323[_0x47a5('0x2f')]){throw new db['Sequelize'][(_0x47a5('0x61'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x2bc7ae=_0x1c0323;return db[_0x47a5('0x63')][_0x47a5('0x64')]({'raw':!![]});}return null;})['then'](function(_0x48d4cf){if(_0x48d4cf){_0x49cb8c=_[_0x47a5('0x65')](_0x48d4cf,'id');var _0x41d2da;var _0x530387=squel[_0x47a5('0x66')]();_0x530387[_0x47a5('0x67')](_0x134c1a[_0x47a5('0x77')]);for(var _0x44567e=0x0;_0x44567e<_0x2bc7ae['length'];_0x44567e+=0x1){_0x41d2da=_0x2bc7ae[_0x44567e][_0x47a5('0x68')]?_0x49cb8c[_0x2bc7ae[_0x44567e]['MetricId']]['metric']:_0x2bc7ae[_0x44567e]['field'];_0x41d2da=_0x2bc7ae[_0x44567e][_0x47a5('0x6b')]?_['replace'](_0x482c87[_0x2bc7ae[_0x44567e][_0x47a5('0x6b')]],'%s',_0x41d2da):_0x41d2da;_0x41d2da=_0x2bc7ae[_0x44567e][_0x47a5('0x6d')]?_[_0x47a5('0x6c')](_0x151540[_0x2bc7ae[_0x44567e][_0x47a5('0x6d')]],'%s',_0x41d2da):_0x41d2da;if(_0x2bc7ae[_0x44567e][_0x47a5('0x86')]){_0x530387[_0x47a5('0x5d')](_0x41d2da);}_0x2bc7ae[_0x44567e][_0x47a5('0x6e')]&&_0x530387[_0x47a5('0x32')](_0x41d2da,_0x2bc7ae[_0x44567e][_0x47a5('0x6e')]===_0x47a5('0x6f')?![]:!![]);_0x530387[_0x47a5('0x6a')](_0x41d2da,_0x2bc7ae[_0x44567e][_0x47a5('0x87')]||_0x41d2da);}if(_0x134c1a[_0x47a5('0x70')]){_0x134c1a[_0x47a5('0x70')]=JSON[_0x47a5('0x71')](_0x134c1a['joins']);for(var _0xdd95c8=0x0;_0xdd95c8<_0x134c1a[_0x47a5('0x70')][_0x47a5('0x2f')];_0xdd95c8+=0x1){if(_0x134c1a[_0x47a5('0x70')][_0xdd95c8]['type']&&_[_0x47a5('0x58')](_0x280b7b,_0x134c1a['joins'][_0xdd95c8][_0x47a5('0x72')])&&_0x134c1a['joins'][_0xdd95c8][_0x47a5('0x73')]&&_0x134c1a[_0x47a5('0x70')][_0xdd95c8][_0x47a5('0x74')]&&_0x134c1a['joins'][_0xdd95c8][_0x47a5('0x75')]){_0x530387[_0x134c1a[_0x47a5('0x70')][_0xdd95c8][_0x47a5('0x72')]](_0x134c1a['joins'][_0xdd95c8]['foreignTable'],null,util[_0x47a5('0x6d')](_0x47a5('0x76'),_0x134c1a[_0x47a5('0x77')],_0x134c1a[_0x47a5('0x70')][_0xdd95c8][_0x47a5('0x73')],_0x134c1a['joins'][_0xdd95c8][_0x47a5('0x74')],_0x134c1a['joins'][_0xdd95c8][_0x47a5('0x75')]));}}}if(_0x134c1a[_0x47a5('0x78')]){_0x134c1a[_0x47a5('0x78')]=JSON[_0x47a5('0x71')](_0x134c1a['conditions']);_0x530387['where'](_0x591bde(_0x134c1a[_0x47a5('0x78')][_0x47a5('0x5d')]));}_0x11f07b=_0x530387[_0x47a5('0x9d')]();_0x530387[_0x47a5('0x1b')](_0x1172fd);_0x530387[_0x47a5('0x1d')](0x0);logger[_0x47a5('0x79')](_0x47a5('0x9e'),_0x530387[_0x47a5('0x7a')]());return dbH[_0x47a5('0x7b')]['query'](_0x530387['toString'](),{'type':dbH[_0x47a5('0x7b')]['QueryTypes'][_0x47a5('0x7d')]});}})[_0x47a5('0x21')](function(){return{'sql':_0x11f07b[_0x47a5('0x7a')]()};})['then'](respondWithResult(_0x48a491,null))[_0x47a5('0x48')](handleError(_0x48a491,null));};
\ No newline at end of file
+var _0x5fab=['debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','COUNT(DISTINCT\x20%s)','from','function','order','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','countTable','run','params','runReport','AVG(%s)','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','status','end','limit','undefined','count','offset','Content-Range','apply','save','update','then','destroy','get','DefaultReports','UserProfileResource','sendStatus','error','stack','name','send','index','map','AnalyticDefaultReport','rawAttributes','type','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','query','where','pick','filters','filter','VIRTUAL','merge','options','include','findAll','rows','catch','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','table','MetricId','metric','replace','format','groupBy','orderBy','DESC','alias','joins','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone'];(function(_0x498931,_0x2a0df4){var _0x147aa3=function(_0x4c90c1){while(--_0x4c90c1){_0x498931['push'](_0x498931['shift']());}};_0x147aa3(++_0x2a0df4);}(_0x5fab,0x177));var _0xb5fa=function(_0x4665b8,_0x234a28){_0x4665b8=_0x4665b8-0x0;var _0x54ba4c=_0x5fab[_0x4665b8];return _0x54ba4c;};'use strict';var emlformat=require(_0xb5fa('0x0'));var rimraf=require(_0xb5fa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb5fa('0x2'));var rp=require(_0xb5fa('0x3'));var moment=require(_0xb5fa('0x4'));var BPromise=require(_0xb5fa('0x5'));var Mustache=require(_0xb5fa('0x6'));var util=require(_0xb5fa('0x7'));var path=require(_0xb5fa('0x8'));var sox=require(_0xb5fa('0x9'));var csv=require(_0xb5fa('0xa'));var ejs=require(_0xb5fa('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb5fa('0xc'));var crypto=require(_0xb5fa('0xd'));var jsforce=require(_0xb5fa('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xb5fa('0xa'));var querystring=require(_0xb5fa('0xf'));var Papa=require(_0xb5fa('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb5fa('0x11'));var as=require(_0xb5fa('0x12'));var hardwareService=require(_0xb5fa('0x13'));var logger=require(_0xb5fa('0x14'))(_0xb5fa('0x15'));var utils=require(_0xb5fa('0x16'));var config=require(_0xb5fa('0x17'));var licenseUtil=require(_0xb5fa('0x18'));var db=require(_0xb5fa('0x19'))['db'];var dbH=require('../../mysqldb')[_0xb5fa('0x1a')];function respondWithStatusCode(_0x3dad4d,_0x56e8b0){_0x56e8b0=_0x56e8b0||0xcc;return function(_0x116849){if(_0x116849){return _0x3dad4d['sendStatus'](_0x56e8b0);}return _0x3dad4d[_0xb5fa('0x1b')](_0x56e8b0)[_0xb5fa('0x1c')]();};}function respondWithResult(_0x40c914,_0xca8d82){_0xca8d82=_0xca8d82||0xc8;return function(_0x8e9d1c){if(_0x8e9d1c){return _0x40c914['status'](_0xca8d82)['json'](_0x8e9d1c);}};}function respondWithFilteredResult(_0x38e964,_0x587043){return function(_0x31f252){if(_0x31f252){var _0x27c8f7=typeof _0x587043['offset']==='undefined'&&typeof _0x587043[_0xb5fa('0x1d')]===_0xb5fa('0x1e');var _0x32e9e5=_0x31f252[_0xb5fa('0x1f')];var _0x324ba5=_0x27c8f7?0x0:_0x587043[_0xb5fa('0x20')];var _0x3b0f69=_0x27c8f7?_0x31f252[_0xb5fa('0x1f')]:_0x587043[_0xb5fa('0x20')]+_0x587043[_0xb5fa('0x1d')];var _0x3c8d53;if(_0x3b0f69>=_0x32e9e5){_0x3b0f69=_0x32e9e5;_0x3c8d53=0xc8;}else{_0x3c8d53=0xce;}_0x38e964[_0xb5fa('0x1b')](_0x3c8d53);return _0x38e964['set'](_0xb5fa('0x21'),_0x324ba5+'-'+_0x3b0f69+'/'+_0x32e9e5)['json'](_0x31f252);}return null;};}function patchUpdates(_0x37ae06){return function(_0x4a6c04){try{jsonpatch[_0xb5fa('0x22')](_0x4a6c04,_0x37ae06,!![]);}catch(_0x43c09f){return BPromise['reject'](_0x43c09f);}return _0x4a6c04[_0xb5fa('0x23')]();};}function saveUpdates(_0x3a2ab9,_0x283a56){return function(_0x47f71a){if(_0x47f71a){return _0x47f71a[_0xb5fa('0x24')](_0x3a2ab9)[_0xb5fa('0x25')](function(_0x444237){return _0x444237;});}return null;};}function removeEntity(_0x542348,_0x224ec8){return function(_0x5d55f7){if(_0x5d55f7){return _0x5d55f7[_0xb5fa('0x26')]()[_0xb5fa('0x25')](function(){var _0x11053a=_0x5d55f7[_0xb5fa('0x27')]({'plain':!![]});var _0x2dbd22=_0xb5fa('0x28');return db[_0xb5fa('0x29')][_0xb5fa('0x26')]({'where':{'type':_0x2dbd22,'resourceId':_0x11053a['id']}})['then'](function(){return _0x5d55f7;});})['then'](function(){_0x542348['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x28a350,_0x460b54){return function(_0x12c0d4){if(!_0x12c0d4){_0x28a350[_0xb5fa('0x2a')](0x194);}return _0x12c0d4;};}function handleError(_0x534884,_0x3506a4){_0x3506a4=_0x3506a4||0x1f4;return function(_0x358549){logger[_0xb5fa('0x2b')](_0x358549[_0xb5fa('0x2c')]);if(_0x358549[_0xb5fa('0x2d')]){delete _0x358549[_0xb5fa('0x2d')];}_0x534884[_0xb5fa('0x1b')](_0x3506a4)[_0xb5fa('0x2e')](_0x358549);};}exports[_0xb5fa('0x2f')]=function(_0xed02e,_0x116773){var _0x5a0152={},_0x3fd1fb={},_0x21fc7e={'count':0x0,'rows':[]};var _0x319c48=_[_0xb5fa('0x30')](db[_0xb5fa('0x31')][_0xb5fa('0x32')],function(_0x25fc7c){return{'name':_0x25fc7c['fieldName'],'type':_0x25fc7c[_0xb5fa('0x33')]['key']};});_0x3fd1fb['model']=_['map'](_0x319c48,_0xb5fa('0x2d'));_0x3fd1fb['query']=_[_0xb5fa('0x34')](_0xed02e['query']);_0x3fd1fb['filters']=_[_0xb5fa('0x35')](_0x3fd1fb[_0xb5fa('0x36')],_0x3fd1fb['query']);_0x5a0152['attributes']=_[_0xb5fa('0x35')](_0x3fd1fb[_0xb5fa('0x36')],qs[_0xb5fa('0x37')](_0xed02e['query'][_0xb5fa('0x37')]));_0x5a0152[_0xb5fa('0x38')]=_0x5a0152['attributes'][_0xb5fa('0x39')]?_0x5a0152[_0xb5fa('0x38')]:_0x3fd1fb[_0xb5fa('0x36')];if(!_0xed02e['query'][_0xb5fa('0x3a')](_0xb5fa('0x3b'))){_0x5a0152[_0xb5fa('0x1d')]=qs['limit'](_0xed02e[_0xb5fa('0x3c')][_0xb5fa('0x1d')]);_0x5a0152[_0xb5fa('0x20')]=qs[_0xb5fa('0x20')](_0xed02e['query']['offset']);}_0x5a0152['order']=qs['sort'](_0xed02e['query']['sort']);_0x5a0152[_0xb5fa('0x3d')]=qs['filters'](_[_0xb5fa('0x3e')](_0xed02e[_0xb5fa('0x3c')],_0x3fd1fb[_0xb5fa('0x3f')]),_0x319c48);if(_0xed02e[_0xb5fa('0x3c')][_0xb5fa('0x40')]){_0x5a0152[_0xb5fa('0x3d')]=_['merge'](_0x5a0152['where'],{'$or':_['map'](_0x319c48,function(_0x534b38){if(_0x534b38['type']!==_0xb5fa('0x41')){var _0x5addd5={};_0x5addd5[_0x534b38['name']]={'$like':'%'+_0xed02e[_0xb5fa('0x3c')][_0xb5fa('0x40')]+'%'};return _0x5addd5;}})});}_0x5a0152=_[_0xb5fa('0x42')]({},_0x5a0152,_0xed02e[_0xb5fa('0x43')]);var _0x5bc93f={'where':_0x5a0152[_0xb5fa('0x3d')]};return db[_0xb5fa('0x31')][_0xb5fa('0x1f')](_0x5bc93f)[_0xb5fa('0x25')](function(_0x402a68){_0x21fc7e['count']=_0x402a68;if(_0xed02e[_0xb5fa('0x3c')]['includeAll']){_0x5a0152[_0xb5fa('0x44')]=[{'all':!![]}];}return db[_0xb5fa('0x31')][_0xb5fa('0x45')](_0x5a0152);})[_0xb5fa('0x25')](function(_0x1c706b){_0x21fc7e[_0xb5fa('0x46')]=_0x1c706b;return _0x21fc7e;})[_0xb5fa('0x25')](respondWithFilteredResult(_0x116773,_0x5a0152))[_0xb5fa('0x47')](handleError(_0x116773,null));};exports['show']=function(_0x1c3c2c,_0xc03e44){var _0x59ae64={'raw':!![],'where':{'id':_0x1c3c2c['params']['id']}},_0x293c19={};_0x293c19[_0xb5fa('0x36')]=_[_0xb5fa('0x34')](db['AnalyticDefaultReport']['rawAttributes']);_0x293c19[_0xb5fa('0x3c')]=_[_0xb5fa('0x34')](_0x1c3c2c[_0xb5fa('0x3c')]);_0x293c19[_0xb5fa('0x3f')]=_[_0xb5fa('0x35')](_0x293c19[_0xb5fa('0x36')],_0x293c19[_0xb5fa('0x3c')]);_0x59ae64[_0xb5fa('0x38')]=_['intersection'](_0x293c19[_0xb5fa('0x36')],qs[_0xb5fa('0x37')](_0x1c3c2c['query'][_0xb5fa('0x37')]));_0x59ae64[_0xb5fa('0x38')]=_0x59ae64[_0xb5fa('0x38')][_0xb5fa('0x39')]?_0x59ae64[_0xb5fa('0x38')]:_0x293c19[_0xb5fa('0x36')];if(_0x1c3c2c[_0xb5fa('0x3c')][_0xb5fa('0x48')]){_0x59ae64[_0xb5fa('0x44')]=[{'all':!![]}];}_0x59ae64=_[_0xb5fa('0x42')]({},_0x59ae64,_0x1c3c2c[_0xb5fa('0x43')]);return db[_0xb5fa('0x31')][_0xb5fa('0x49')](_0x59ae64)[_0xb5fa('0x25')](handleEntityNotFound(_0xc03e44,null))[_0xb5fa('0x25')](respondWithResult(_0xc03e44,null))[_0xb5fa('0x47')](handleError(_0xc03e44,null));};exports['create']=function(_0x56dceb,_0x46194d){return db['AnalyticDefaultReport'][_0xb5fa('0x4a')](_0x56dceb[_0xb5fa('0x4b')],{})['then'](function(_0x4ef1d0){var _0x2931a7=_0x56dceb[_0xb5fa('0x4c')][_0xb5fa('0x27')]({'plain':!![]});if(!_0x2931a7)throw new Error(_0xb5fa('0x4d'));if(_0x2931a7[_0xb5fa('0x4e')]==='user'){var _0x27a651=_0x4ef1d0['get']({'plain':!![]});var _0x251d36=_0xb5fa('0x4f');return db[_0xb5fa('0x50')]['find']({'where':{'name':_0x251d36,'userProfileId':_0x2931a7[_0xb5fa('0x51')]},'raw':!![]})[_0xb5fa('0x25')](function(_0x4dea87){if(_0x4dea87&&_0x4dea87['autoAssociation']===0x0){return db[_0xb5fa('0x29')][_0xb5fa('0x4a')]({'name':_0x27a651[_0xb5fa('0x2d')],'resourceId':_0x27a651['id'],'type':_0xb5fa('0x28'),'sectionId':_0x4dea87['id']},{})[_0xb5fa('0x25')](function(){return _0x4ef1d0;});}else{return _0x4ef1d0;}})[_0xb5fa('0x47')](function(_0x31c91f){logger[_0xb5fa('0x2b')](_0xb5fa('0x52'),_0x31c91f);throw _0x31c91f;});}return _0x4ef1d0;})[_0xb5fa('0x25')](respondWithResult(_0x46194d,0xc9))[_0xb5fa('0x47')](handleError(_0x46194d,null));};exports[_0xb5fa('0x24')]=function(_0x3ccfd1,_0x2799e7){if(_0x3ccfd1[_0xb5fa('0x4b')]['id']){delete _0x3ccfd1[_0xb5fa('0x4b')]['id'];}return db[_0xb5fa('0x31')][_0xb5fa('0x49')]({'where':{'id':_0x3ccfd1['params']['id']}})[_0xb5fa('0x25')](handleEntityNotFound(_0x2799e7,null))[_0xb5fa('0x25')](saveUpdates(_0x3ccfd1[_0xb5fa('0x4b')],null))[_0xb5fa('0x25')](respondWithResult(_0x2799e7,null))[_0xb5fa('0x47')](handleError(_0x2799e7,null));};exports[_0xb5fa('0x26')]=function(_0x4224cf,_0x24117e){return db[_0xb5fa('0x31')][_0xb5fa('0x49')]({'where':{'id':_0x4224cf['params']['id']}})['then'](handleEntityNotFound(_0x24117e,null))[_0xb5fa('0x25')](removeEntity(_0x24117e,null))[_0xb5fa('0x47')](handleError(_0x24117e,null));};exports[_0xb5fa('0x53')]=function(_0x5caf84,_0x441c41){var _0x367f7a=0xa;var _0x1572fb=[_0xb5fa('0x54'),_0xb5fa('0x55'),_0xb5fa('0x56'),_0xb5fa('0x57')];var _0x4f82f0={'SUM':_0xb5fa('0x58'),'COUNT':_0xb5fa('0x59'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xb5fa('0x5a'),'MIN':_0xb5fa('0x5b'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xb5fa('0x5c'),'GROUP_CONCAT ASC':_0xb5fa('0x5d'),'GROUP_CONCAT DESC':_0xb5fa('0x5e')};var _0x2b9a45={'SEC_TO_TIME':_0xb5fa('0x5f'),'DATE':_0xb5fa('0x60'),'HOUR':_0xb5fa('0x61'),'ROUND':_0xb5fa('0x62'),'UNIX_TIMESTAMP':_0xb5fa('0x63')};var _0x1c24e3=function(_0xfb88cc){return!_[_0xb5fa('0x64')]([_0xb5fa('0x65'),_0xb5fa('0x66'),_0xb5fa('0x67'),_0xb5fa('0x68')],_0xfb88cc);};var _0x41cce9=function(_0x23fb01){if(!_0x23fb01||!_0x23fb01[_0xb5fa('0x69')][_0xb5fa('0x39')]){return'';}for(var _0x421a93='(',_0x36fc0f=0x0;_0x36fc0f<_0x23fb01['rules'][_0xb5fa('0x39')];_0x36fc0f+=0x1){_0x36fc0f>0x0&&(_0x421a93+='\x20'+_0x23fb01[_0xb5fa('0x6a')]+'\x20');_0x421a93+=_0x23fb01[_0xb5fa('0x69')][_0x36fc0f]['group']?_0x41cce9(_0x23fb01[_0xb5fa('0x69')][_0x36fc0f][_0xb5fa('0x6b')]):_0x23fb01['rules'][_0x36fc0f][_0xb5fa('0x6c')]+'\x20'+_0x23fb01[_0xb5fa('0x69')][_0x36fc0f][_0xb5fa('0x6d')]+(_0x1c24e3(_0x23fb01['rules'][_0x36fc0f]['condition'])?'\x20'+_0x23fb01[_0xb5fa('0x69')][_0x36fc0f][_0xb5fa('0x6e')]:'');}return _0x421a93+')';};var _0x432f04={'where':{'id':_0x5caf84['params']['id']}},_0x57d8b7,_0x597206,_0x30d53b,_0x199555,_0x12b0a2;_0x432f04=_['merge']({},_0x432f04,_0x5caf84['options']);return db[_0xb5fa('0x31')][_0xb5fa('0x49')](_0x432f04)[_0xb5fa('0x25')](function(_0x4ce1bd){if(_0x4ce1bd){_0x57d8b7=_0x4ce1bd;return _0x4ce1bd[_0xb5fa('0x6f')]();}return null;})[_0xb5fa('0x25')](function(_0x13ef3a){if(_0x13ef3a){if(!_0x13ef3a[_0xb5fa('0x39')]){throw new db[(_0xb5fa('0x70'))][(_0xb5fa('0x71'))](_0xb5fa('0x72'),0x193);}_0x597206=_0x13ef3a;return db[_0xb5fa('0x73')][_0xb5fa('0x45')]({'raw':!![]});}return null;})[_0xb5fa('0x25')](function(_0x3a1db9){if(_0x3a1db9){_0x30d53b=_[_0xb5fa('0x74')](_0x3a1db9,'id');var _0xecdff3;var _0x38faa6=squel[_0xb5fa('0x75')]();_0x38faa6['from'](_0x57d8b7[_0xb5fa('0x76')]);for(var _0x5a6f74=0x0;_0x5a6f74<_0x597206[_0xb5fa('0x39')];_0x5a6f74+=0x1){_0xecdff3=_0x597206[_0x5a6f74][_0xb5fa('0x77')]?_0x30d53b[_0x597206[_0x5a6f74][_0xb5fa('0x77')]][_0xb5fa('0x78')]:_0x597206[_0x5a6f74][_0xb5fa('0x6c')];_0xecdff3=_0x597206[_0x5a6f74]['function']?_[_0xb5fa('0x79')](_0x4f82f0[_0x597206[_0x5a6f74]['function']],'%s',_0xecdff3):_0xecdff3;_0xecdff3=_0x597206[_0x5a6f74][_0xb5fa('0x7a')]?_[_0xb5fa('0x79')](_0x2b9a45[_0x597206[_0x5a6f74][_0xb5fa('0x7a')]],'%s',_0xecdff3):_0xecdff3;if(_0x597206[_0x5a6f74][_0xb5fa('0x7b')]){_0x38faa6['group'](_0xecdff3);}_0x597206[_0x5a6f74]['orderBy']&&_0x38faa6['order'](_0xecdff3,_0x597206[_0x5a6f74][_0xb5fa('0x7c')]===_0xb5fa('0x7d')?![]:!![]);_0x38faa6[_0xb5fa('0x6c')](_0xecdff3,_0x597206[_0x5a6f74][_0xb5fa('0x7e')]||_0xecdff3);}if(_0x57d8b7[_0xb5fa('0x7f')]){_0x57d8b7[_0xb5fa('0x7f')]=JSON['parse'](_0x57d8b7[_0xb5fa('0x7f')]);for(var _0x5c08e1=0x0;_0x5c08e1<_0x57d8b7['joins'][_0xb5fa('0x39')];_0x5c08e1+=0x1){if(_0x57d8b7['joins'][_0x5c08e1]['type']&&_['includes'](_0x1572fb,_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1]['type'])&&_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x80')]&&_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1]['foreignTable']&&_0x57d8b7['joins'][_0x5c08e1][_0xb5fa('0x81')]){_0x38faa6[_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1]['type']](_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x82')],null,util[_0xb5fa('0x7a')](_0xb5fa('0x83'),_0x57d8b7['table'],_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x80')],_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x82')],_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x81')]));}}}if(_0x57d8b7[_0xb5fa('0x84')]){_0x57d8b7['conditions']=JSON[_0xb5fa('0x85')](_0x57d8b7['conditions']);_0x38faa6[_0xb5fa('0x3d')](_0x41cce9(_0x57d8b7[_0xb5fa('0x84')]['group']));}_0x12b0a2=_0x38faa6[_0xb5fa('0x86')]();_0x38faa6[_0xb5fa('0x1d')](_0x367f7a);_0x38faa6[_0xb5fa('0x20')](0x0);logger[_0xb5fa('0x87')](_0xb5fa('0x88'),_0x38faa6[_0xb5fa('0x89')]());return dbH[_0xb5fa('0x8a')][_0xb5fa('0x3c')](_0x38faa6['toString'](),{'type':dbH[_0xb5fa('0x8a')][_0xb5fa('0x8b')][_0xb5fa('0x8c')]});}})[_0xb5fa('0x25')](respondWithResult(_0x441c41,null))['catch'](handleError(_0x441c41,null));};function runReport(_0x593386,_0x47d72b,_0x5557a3){var _0x1c60bd=_0x47d72b[_0xb5fa('0x2d')];var _0xff504d=0xa;var _0x188e66=['join','left_join',_0xb5fa('0x56'),'cross_join'];var _0x32eebd={'SUM':_0xb5fa('0x58'),'COUNT':_0xb5fa('0x59'),'COUNT DISTINCT':_0xb5fa('0x8d'),'MAX':'MAX(%s)','MIN':_0xb5fa('0x5b'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xb5fa('0x5c'),'GROUP_CONCAT ASC':_0xb5fa('0x5d'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x5e6852={'SEC_TO_TIME':_0xb5fa('0x5f'),'DATE':_0xb5fa('0x60'),'HOUR':_0xb5fa('0x61'),'ROUND':_0xb5fa('0x62'),'UNIX_TIMESTAMP':_0xb5fa('0x63')};var _0xa7fd3b=function(_0x42e210){return!_[_0xb5fa('0x64')]([_0xb5fa('0x65'),_0xb5fa('0x66'),_0xb5fa('0x67'),_0xb5fa('0x68')],_0x42e210);};var _0x86dfe9=function(_0x53c7b5){if(!_0x53c7b5||!_0x53c7b5['rules'][_0xb5fa('0x39')]){return'';}for(var _0x52384b='(',_0x1cb113=0x0;_0x1cb113<_0x53c7b5[_0xb5fa('0x69')]['length'];_0x1cb113+=0x1){_0x1cb113>0x0&&(_0x52384b+='\x20'+_0x53c7b5[_0xb5fa('0x6a')]+'\x20');_0x52384b+=_0x53c7b5[_0xb5fa('0x69')][_0x1cb113]['group']?_0x86dfe9(_0x53c7b5[_0xb5fa('0x69')][_0x1cb113][_0xb5fa('0x6b')]):_0x53c7b5['rules'][_0x1cb113][_0xb5fa('0x6c')]+'\x20'+_0x53c7b5[_0xb5fa('0x69')][_0x1cb113][_0xb5fa('0x6d')]+(_0xa7fd3b(_0x53c7b5['rules'][_0x1cb113]['condition'])?'\x20'+_0x53c7b5[_0xb5fa('0x69')][_0x1cb113][_0xb5fa('0x6e')]:'');}return _0x52384b+')';};var _0x3b5e1d={'where':{'id':_0x593386['id']}},_0x3d18a9,_0x397830,_0x234d9d,_0x10222c,_0x1eec65;_0x3b5e1d=_[_0xb5fa('0x42')]({},_0x3b5e1d,_0x5557a3);return db[_0xb5fa('0x31')]['find'](_0x3b5e1d)['then'](function(_0x3c5563){if(_0x3c5563){_0x3d18a9=_0x3c5563;return _0x3c5563[_0xb5fa('0x6f')]();}return null;})[_0xb5fa('0x25')](function(_0x18498d){if(_0x18498d){if(!_0x18498d['length']){throw new db[(_0xb5fa('0x70'))][(_0xb5fa('0x71'))](_0xb5fa('0x72'),0x193);}_0x397830=_0x18498d;return db['AnalyticMetric'][_0xb5fa('0x45')]({'raw':!![]});}return null;})[_0xb5fa('0x25')](function(_0x109dd9){if(_0x109dd9){_0x234d9d=_[_0xb5fa('0x74')](_0x109dd9,'id');var _0x5ba2e7;var _0x1175da=squel[_0xb5fa('0x75')]();_0x1175da[_0xb5fa('0x8e')](_0x3d18a9[_0xb5fa('0x76')]);for(var _0x19717a=0x0;_0x19717a<_0x397830[_0xb5fa('0x39')];_0x19717a+=0x1){_0x5ba2e7=_0x397830[_0x19717a][_0xb5fa('0x77')]?_0x234d9d[_0x397830[_0x19717a][_0xb5fa('0x77')]][_0xb5fa('0x78')]:_0x397830[_0x19717a][_0xb5fa('0x6c')];_0x5ba2e7=_0x397830[_0x19717a][_0xb5fa('0x8f')]?_[_0xb5fa('0x79')](_0x32eebd[_0x397830[_0x19717a][_0xb5fa('0x8f')]],'%s',_0x5ba2e7):_0x5ba2e7;_0x5ba2e7=_0x397830[_0x19717a][_0xb5fa('0x7a')]?_[_0xb5fa('0x79')](_0x5e6852[_0x397830[_0x19717a]['format']],'%s',_0x5ba2e7):_0x5ba2e7;if(_0x397830[_0x19717a][_0xb5fa('0x7b')]){_0x1175da[_0xb5fa('0x6b')](_0x5ba2e7);}_0x397830[_0x19717a][_0xb5fa('0x7c')]&&_0x1175da[_0xb5fa('0x90')](_0x5ba2e7,_0x397830[_0x19717a][_0xb5fa('0x7c')]===_0xb5fa('0x7d')?![]:!![]);_0x1175da[_0xb5fa('0x6c')](_0x5ba2e7,_0x397830[_0x19717a][_0xb5fa('0x7e')]||_0x5ba2e7);}if(_0x3d18a9['joins']){_0x3d18a9['joins']=JSON[_0xb5fa('0x85')](_0x3d18a9['joins']);for(var _0x5d0ca8=0x0;_0x5d0ca8<_0x3d18a9[_0xb5fa('0x7f')][_0xb5fa('0x39')];_0x5d0ca8+=0x1){if(_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8]['type']&&_[_0xb5fa('0x64')](_0x188e66,_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x33')])&&_0x3d18a9['joins'][_0x5d0ca8][_0xb5fa('0x80')]&&_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8]['foreignTable']&&_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x81')]){_0x1175da[_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x33')]](_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x82')],null,util[_0xb5fa('0x7a')]('%s.%s\x20=\x20%s.%s',_0x3d18a9[_0xb5fa('0x76')],_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x80')],_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8]['foreignTable'],_0x3d18a9['joins'][_0x5d0ca8][_0xb5fa('0x81')]));}}}if(_0x3d18a9[_0xb5fa('0x84')]){_0x3d18a9[_0xb5fa('0x84')]=JSON[_0xb5fa('0x85')](_0x3d18a9['conditions']);_0x1175da['where'](_0x86dfe9(_0x3d18a9['conditions']['group']));}_0x1eec65=_0x1175da[_0xb5fa('0x86')]();_0x1175da[_0xb5fa('0x1d')](_0xff504d);_0x1175da[_0xb5fa('0x20')](0x0);return;}})[_0xb5fa('0x25')](function(){if(_0x47d72b[_0xb5fa('0x91')]===_0xb5fa('0x92')){return null;}var _0x3c36a8=_[_0xb5fa('0x42')](_0x47d72b,{'name':_0x47d72b[_0xb5fa('0x93')]||_0x47d72b[_0xb5fa('0x2d')]||_0x3d18a9[_0xb5fa('0x2d')],'basename':_0x1c60bd,'savename':util['format'](_0xb5fa('0x94'),_0x47d72b[_0xb5fa('0x2d')]||_0x3d18a9['name'],require(_0xb5fa('0x95'))[_0xb5fa('0x96')](0x4),_0x47d72b['output']||_0xb5fa('0x97')),'reportId':_0x3d18a9['id'],'reportType':_0xb5fa('0x98')});return db[_0xb5fa('0x99')][_0xb5fa('0x4a')](_0x3c36a8,{'raw':!![]});})[_0xb5fa('0x25')](function(_0x2b449a){if(_0x3d18a9[_0xb5fa('0x76')]===_0xb5fa('0x9a')){_0x1eec65[_0xb5fa('0x3d')](_0x3d18a9['table']+_0xb5fa('0x9b'),_0x47d72b[_0xb5fa('0x9c')],_0x47d72b[_0xb5fa('0x9d')]);}else{_0x1eec65[_0xb5fa('0x3d')](_0x3d18a9[_0xb5fa('0x76')]+_0xb5fa('0x9e'),_0x47d72b[_0xb5fa('0x9c')],_0x47d72b[_0xb5fa('0x9d')]);}if(_0x2b449a){logger['info'](_0xb5fa('0x9f'),_0x1eec65['toString']());require(_0xb5fa('0xa0'))[_0xb5fa('0xa1')](path[_0xb5fa('0x54')](__dirname,_0xb5fa('0xa2'),_0x2b449a[_0xb5fa('0x91')]),[_0x2b449a['id'],_0x1eec65[_0xb5fa('0x89')](),path[_0xb5fa('0x54')](__dirname,_0xb5fa('0xa3'),_0x2b449a[_0xb5fa('0xa4')]),_0x1c60bd]);return _0x2b449a;}else{var _0x4bb9b4=squel['select']();_0x4bb9b4[_0xb5fa('0x8e')]('('+_0x1eec65[_0xb5fa('0x89')]()+')',_0xb5fa('0xa5'));_0x4bb9b4[_0xb5fa('0x6c')]('COUNT(*)',_0xb5fa('0x1f'));_0x1eec65['limit'](_0x47d72b[_0xb5fa('0x1d')]||_0xff504d);_0x1eec65[_0xb5fa('0x20')](_0x47d72b['offset']||0x0);return dbH[_0xb5fa('0x8a')]['query'](_0x4bb9b4[_0xb5fa('0x89')](),{'type':dbH['sequelize'][_0xb5fa('0x8b')][_0xb5fa('0x8c')]})[_0xb5fa('0x25')](function(_0x70e4ae){if(!_0x70e4ae[_0xb5fa('0x39')]){_0x10222c=0x0;}else{_0x10222c=_0x70e4ae[0x0][_0xb5fa('0x1f')]||0x0;}return dbH[_0xb5fa('0x8a')][_0xb5fa('0x3c')](_0x1eec65[_0xb5fa('0x89')](),{'type':dbH[_0xb5fa('0x8a')][_0xb5fa('0x8b')]['SELECT']});})[_0xb5fa('0x25')](function(_0x284b34){return{'rows':_0x284b34||[],'count':_0x10222c};});}});}exports[_0xb5fa('0xa6')]=function(_0x497931,_0x2145d8){return runReport(_0x497931[_0xb5fa('0xa7')],_0x497931[_0xb5fa('0x3c')],_0x497931[_0xb5fa('0x43')])[_0xb5fa('0x25')](respondWithResult(_0x2145d8,null))[_0xb5fa('0x47')](handleError(_0x2145d8,null));};exports[_0xb5fa('0xa8')]=runReport;exports[_0xb5fa('0x3c')]=function(_0x59fd75,_0x245ee1){var _0x5c1e1f=0xa;var _0x3ba723=[_0xb5fa('0x54'),_0xb5fa('0x55'),_0xb5fa('0x56'),_0xb5fa('0x57')];var _0x105c0f={'SUM':_0xb5fa('0x58'),'COUNT':_0xb5fa('0x59'),'COUNT DISTINCT':_0xb5fa('0x8d'),'MAX':_0xb5fa('0x5a'),'MIN':_0xb5fa('0x5b'),'AVG':_0xb5fa('0xa9'),'GROUP_CONCAT':_0xb5fa('0x5c'),'GROUP_CONCAT ASC':_0xb5fa('0x5d'),'GROUP_CONCAT DESC':_0xb5fa('0x5e')};var _0x41e086={'SEC_TO_TIME':_0xb5fa('0x5f'),'DATE':'DATE(%s)','HOUR':_0xb5fa('0x61'),'ROUND':_0xb5fa('0x62'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0xd34c31=function(_0x2e614e){return!_['includes'](['IS\x20NULL','IS\x20NOT\x20NULL',_0xb5fa('0x67'),_0xb5fa('0x68')],_0x2e614e);};var _0x1aae82=function(_0x474bb){if(!_0x474bb||!_0x474bb[_0xb5fa('0x69')][_0xb5fa('0x39')]){return'';}for(var _0x17ae50='(',_0x51c9ba=0x0;_0x51c9ba<_0x474bb['rules']['length'];_0x51c9ba+=0x1){_0x51c9ba>0x0&&(_0x17ae50+='\x20'+_0x474bb[_0xb5fa('0x6a')]+'\x20');_0x17ae50+=_0x474bb['rules'][_0x51c9ba]['group']?_0x1aae82(_0x474bb[_0xb5fa('0x69')][_0x51c9ba]['group']):_0x474bb[_0xb5fa('0x69')][_0x51c9ba][_0xb5fa('0x6c')]+'\x20'+_0x474bb[_0xb5fa('0x69')][_0x51c9ba][_0xb5fa('0x6d')]+(_0xd34c31(_0x474bb[_0xb5fa('0x69')][_0x51c9ba]['condition'])?'\x20'+_0x474bb[_0xb5fa('0x69')][_0x51c9ba][_0xb5fa('0x6e')]:'');}return _0x17ae50+')';};var _0x2fe715={'where':{'id':_0x59fd75[_0xb5fa('0xa7')]['id']}},_0x3c5ac4,_0x23b70f,_0x488818,_0x15b228,_0x42fd84;_0x2fe715=_[_0xb5fa('0x42')]({},_0x2fe715,_0x59fd75[_0xb5fa('0x43')]);return db[_0xb5fa('0x31')]['find'](_0x2fe715)[_0xb5fa('0x25')](function(_0x390043){if(_0x390043){_0x3c5ac4=_0x390043;return _0x390043[_0xb5fa('0x6f')]();}return null;})[_0xb5fa('0x25')](function(_0x32c191){if(_0x32c191){if(!_0x32c191[_0xb5fa('0x39')]){throw new db[(_0xb5fa('0x70'))][(_0xb5fa('0x71'))](_0xb5fa('0x72'),0x193);}_0x23b70f=_0x32c191;return db[_0xb5fa('0x73')][_0xb5fa('0x45')]({'raw':!![]});}return null;})[_0xb5fa('0x25')](function(_0x1d307c){if(_0x1d307c){_0x488818=_[_0xb5fa('0x74')](_0x1d307c,'id');var _0x3347eb;var _0x349e0b=squel[_0xb5fa('0x75')]();_0x349e0b[_0xb5fa('0x8e')](_0x3c5ac4[_0xb5fa('0x76')]);for(var _0x2b1c3f=0x0;_0x2b1c3f<_0x23b70f[_0xb5fa('0x39')];_0x2b1c3f+=0x1){_0x3347eb=_0x23b70f[_0x2b1c3f][_0xb5fa('0x77')]?_0x488818[_0x23b70f[_0x2b1c3f]['MetricId']]['metric']:_0x23b70f[_0x2b1c3f][_0xb5fa('0x6c')];_0x3347eb=_0x23b70f[_0x2b1c3f][_0xb5fa('0x8f')]?_[_0xb5fa('0x79')](_0x105c0f[_0x23b70f[_0x2b1c3f][_0xb5fa('0x8f')]],'%s',_0x3347eb):_0x3347eb;_0x3347eb=_0x23b70f[_0x2b1c3f][_0xb5fa('0x7a')]?_[_0xb5fa('0x79')](_0x41e086[_0x23b70f[_0x2b1c3f]['format']],'%s',_0x3347eb):_0x3347eb;if(_0x23b70f[_0x2b1c3f]['groupBy']){_0x349e0b['group'](_0x3347eb);}_0x23b70f[_0x2b1c3f][_0xb5fa('0x7c')]&&_0x349e0b[_0xb5fa('0x90')](_0x3347eb,_0x23b70f[_0x2b1c3f]['orderBy']===_0xb5fa('0x7d')?![]:!![]);_0x349e0b[_0xb5fa('0x6c')](_0x3347eb,_0x23b70f[_0x2b1c3f]['alias']||_0x3347eb);}if(_0x3c5ac4[_0xb5fa('0x7f')]){_0x3c5ac4[_0xb5fa('0x7f')]=JSON[_0xb5fa('0x85')](_0x3c5ac4[_0xb5fa('0x7f')]);for(var _0x10dbdf=0x0;_0x10dbdf<_0x3c5ac4[_0xb5fa('0x7f')][_0xb5fa('0x39')];_0x10dbdf+=0x1){if(_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf]['type']&&_[_0xb5fa('0x64')](_0x3ba723,_0x3c5ac4['joins'][_0x10dbdf][_0xb5fa('0x33')])&&_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf][_0xb5fa('0x80')]&&_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf]['foreignTable']&&_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf][_0xb5fa('0x81')]){_0x349e0b[_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf][_0xb5fa('0x33')]](_0x3c5ac4['joins'][_0x10dbdf][_0xb5fa('0x82')],null,util[_0xb5fa('0x7a')](_0xb5fa('0x83'),_0x3c5ac4[_0xb5fa('0x76')],_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf][_0xb5fa('0x80')],_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf]['foreignTable'],_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf]['foreignKey']));}}}if(_0x3c5ac4[_0xb5fa('0x84')]){_0x3c5ac4[_0xb5fa('0x84')]=JSON[_0xb5fa('0x85')](_0x3c5ac4[_0xb5fa('0x84')]);_0x349e0b[_0xb5fa('0x3d')](_0x1aae82(_0x3c5ac4[_0xb5fa('0x84')][_0xb5fa('0x6b')]));}_0x42fd84=_0x349e0b['clone']();_0x349e0b['limit'](_0x5c1e1f);_0x349e0b[_0xb5fa('0x20')](0x0);logger[_0xb5fa('0x87')](_0xb5fa('0x88'),_0x349e0b[_0xb5fa('0x89')]());return dbH[_0xb5fa('0x8a')][_0xb5fa('0x3c')](_0x349e0b[_0xb5fa('0x89')](),{'type':dbH[_0xb5fa('0x8a')]['QueryTypes'][_0xb5fa('0x8c')]});}})[_0xb5fa('0x25')](function(){return{'sql':_0x42fd84[_0xb5fa('0x89')]()};})[_0xb5fa('0x25')](respondWithResult(_0x245ee1,null))[_0xb5fa('0x47')](handleError(_0x245ee1,null));};
\ No newline at end of file
index 8e8c265..7e133c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x882c=['exports','define','AnalyticDefaultReport','analytics_default_reports','util','api','bluebird','request-promise','path','./analyticDefaultReport.attributes'];(function(_0x1e253b,_0x57cc14){var _0x41fc32=function(_0x595fe2){while(--_0x595fe2){_0x1e253b['push'](_0x1e253b['shift']());}};_0x41fc32(++_0x57cc14);}(_0x882c,0xd6));var _0xc882=function(_0x16acb7,_0x23f034){_0x16acb7=_0x16acb7-0x0;var _0x39bf39=_0x882c[_0x16acb7];return _0x39bf39;};'use strict';var _=require('lodash');var util=require(_0xc882('0x0'));var logger=require('../../config/logger')(_0xc882('0x1'));var moment=require('moment');var BPromise=require(_0xc882('0x2'));var rp=require(_0xc882('0x3'));var fs=require('fs');var path=require(_0xc882('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xc882('0x5'));module[_0xc882('0x6')]=function(_0x41fefe,_0x40cdf1){return _0x41fefe[_0xc882('0x7')](_0xc882('0x8'),attributes,{'tableName':_0xc882('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x15e4=['AnalyticDefaultReport','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','define'];(function(_0x3a3916,_0xaf9e8){var _0x1d198f=function(_0x3ffd91){while(--_0x3ffd91){_0x3a3916['push'](_0x3a3916['shift']());}};_0x1d198f(++_0xaf9e8);}(_0x15e4,0xd9));var _0x415e=function(_0x1b1f8b,_0x3db81d){_0x1b1f8b=_0x1b1f8b-0x0;var _0x1e2976=_0x15e4[_0x1b1f8b];return _0x1e2976;};'use strict';var _=require(_0x415e('0x0'));var util=require(_0x415e('0x1'));var logger=require('../../config/logger')(_0x415e('0x2'));var moment=require(_0x415e('0x3'));var BPromise=require(_0x415e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x415e('0x5'));var rimraf=require(_0x415e('0x6'));var config=require(_0x415e('0x7'));var attributes=require(_0x415e('0x8'));module[_0x415e('0x9')]=function(_0xb774ba,_0x486703){return _0xb774ba[_0x415e('0xa')](_0x415e('0xb'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 47748a0..b16f421 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f0e=['catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticDefaultReport,\x20%s,\x20%s','message','request\x20sent','result'];(function(_0x3130b5,_0x23faf7){var _0xa6d8a3=function(_0x175be7){while(--_0x175be7){_0x3130b5['push'](_0x3130b5['shift']());}};_0xa6d8a3(++_0x23faf7);}(_0x2f0e,0x199));var _0xe2f0=function(_0x419f61,_0x2efa41){_0x419f61=_0x419f61-0x0;var _0x4b9536=_0x2f0e[_0x419f61];return _0x4b9536;};'use strict';var _=require(_0xe2f0('0x0'));var util=require('util');var moment=require(_0xe2f0('0x1'));var BPromise=require('bluebird');var rs=require(_0xe2f0('0x2'));var fs=require('fs');var Redis=require(_0xe2f0('0x3'));var db=require(_0xe2f0('0x4'))['db'];var utils=require(_0xe2f0('0x5'));var logger=require(_0xe2f0('0x6'))(_0xe2f0('0x7'));var config=require(_0xe2f0('0x8'));var jayson=require(_0xe2f0('0x9'));var client=jayson[_0xe2f0('0xa')][_0xe2f0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x424c18,_0x363e49,_0x4cdae8){return new BPromise(function(_0x35ff9b,_0x24bcdd){return client['request'](_0x424c18,_0x4cdae8)[_0xe2f0('0xc')](function(_0x1fe2ba){logger[_0xe2f0('0xd')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x363e49,'request\x20sent');logger[_0xe2f0('0xe')](_0xe2f0('0xf'),_0x363e49,'request\x20sent',JSON[_0xe2f0('0x10')](_0x1fe2ba));if(_0x1fe2ba[_0xe2f0('0x11')]){if(_0x1fe2ba[_0xe2f0('0x11')][_0xe2f0('0x12')]===0x1f4){logger['error'](_0xe2f0('0x13'),_0x363e49,_0x1fe2ba[_0xe2f0('0x11')][_0xe2f0('0x14')]);return _0x24bcdd(_0x1fe2ba[_0xe2f0('0x11')][_0xe2f0('0x14')]);}logger[_0xe2f0('0x11')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x363e49,_0x1fe2ba[_0xe2f0('0x11')][_0xe2f0('0x14')]);return _0x35ff9b(_0x1fe2ba[_0xe2f0('0x11')][_0xe2f0('0x14')]);}else{logger[_0xe2f0('0xd')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x363e49,_0xe2f0('0x15'));_0x35ff9b(_0x1fe2ba[_0xe2f0('0x16')][_0xe2f0('0x14')]);}})[_0xe2f0('0x17')](function(_0x321fef){logger[_0xe2f0('0x11')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x363e49,_0x321fef);_0x24bcdd(_0x321fef);});});}
\ No newline at end of file
+var _0x61c6=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','moment'];(function(_0x5910f0,_0x18b408){var _0xdcdd7f=function(_0x546f12){while(--_0x546f12){_0x5910f0['push'](_0x5910f0['shift']());}};_0xdcdd7f(++_0x18b408);}(_0x61c6,0x124));var _0x661c=function(_0x3948a6,_0x2d4369){_0x3948a6=_0x3948a6-0x0;var _0x475c9d=_0x61c6[_0x3948a6];return _0x475c9d;};'use strict';var _=require(_0x661c('0x0'));var util=require('util');var moment=require(_0x661c('0x1'));var BPromise=require(_0x661c('0x2'));var rs=require(_0x661c('0x3'));var fs=require('fs');var Redis=require(_0x661c('0x4'));var db=require(_0x661c('0x5'))['db'];var utils=require(_0x661c('0x6'));var logger=require(_0x661c('0x7'))(_0x661c('0x8'));var config=require(_0x661c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x661c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3a26c3,_0x3ce861,_0x366076){return new BPromise(function(_0x2559ce,_0x39ff0f){return client['request'](_0x3a26c3,_0x366076)[_0x661c('0xb')](function(_0x8beeba){logger[_0x661c('0xc')](_0x661c('0xd'),_0x3ce861,'request\x20sent');logger['debug']('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0x3ce861,_0x661c('0xe'),JSON[_0x661c('0xf')](_0x8beeba));if(_0x8beeba[_0x661c('0x10')]){if(_0x8beeba[_0x661c('0x10')][_0x661c('0x11')]===0x1f4){logger[_0x661c('0x10')](_0x661c('0xd'),_0x3ce861,_0x8beeba[_0x661c('0x10')][_0x661c('0x12')]);return _0x39ff0f(_0x8beeba[_0x661c('0x10')][_0x661c('0x12')]);}logger[_0x661c('0x10')](_0x661c('0xd'),_0x3ce861,_0x8beeba['error'][_0x661c('0x12')]);return _0x2559ce(_0x8beeba[_0x661c('0x10')][_0x661c('0x12')]);}else{logger[_0x661c('0xc')](_0x661c('0xd'),_0x3ce861,_0x661c('0xe'));_0x2559ce(_0x8beeba[_0x661c('0x13')]['message']);}})[_0x661c('0x14')](function(_0x4ff6dd){logger[_0x661c('0x10')](_0x661c('0xd'),_0x3ce861,_0x4ff6dd);_0x39ff0f(_0x4ff6dd);});});}
\ No newline at end of file
index 5366a2d..499357a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa928=['/:id/preview','query','post','create','put','update','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id'];(function(_0x5d0683,_0x380a30){var _0x67a4ae=function(_0x49ba29){while(--_0x49ba29){_0x5d0683['push'](_0x5d0683['shift']());}};_0x67a4ae(++_0x380a30);}(_0xa928,0x85));var _0x8a92=function(_0x38c987,_0x563b93){_0x38c987=_0x38c987-0x0;var _0x546344=_0xa928[_0x38c987];return _0x546344;};'use strict';var multer=require(_0x8a92('0x0'));var util=require(_0x8a92('0x1'));var path=require(_0x8a92('0x2'));var timeout=require(_0x8a92('0x3'));var express=require(_0x8a92('0x4'));var router=express['Router']();var fs_extra=require(_0x8a92('0x5'));var auth=require(_0x8a92('0x6'));var interaction=require(_0x8a92('0x7'));var config=require(_0x8a92('0x8'));var controller=require(_0x8a92('0x9'));router[_0x8a92('0xa')]('/',auth[_0x8a92('0xb')](),controller[_0x8a92('0xc')]);router[_0x8a92('0xa')](_0x8a92('0xd'),auth[_0x8a92('0xb')](),controller['show']);router[_0x8a92('0xa')](_0x8a92('0xe'),auth[_0x8a92('0xb')](),controller['preview']);router[_0x8a92('0xa')]('/:id/run',auth[_0x8a92('0xb')](),controller['run']);router['get']('/:id/query',auth[_0x8a92('0xb')](),controller[_0x8a92('0xf')]);router[_0x8a92('0x10')]('/',auth[_0x8a92('0xb')](),controller[_0x8a92('0x11')]);router[_0x8a92('0x12')](_0x8a92('0xd'),auth[_0x8a92('0xb')](),controller[_0x8a92('0x13')]);router['delete'](_0x8a92('0xd'),auth['isAuthenticated'](),controller[_0x8a92('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xe2f0=['create','update','delete','/:id','destroy','exports','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','isAuthenticated','index','get','preview','/:id/run','/:id/query','query'];(function(_0x2ae3d9,_0x146a51){var _0x3db96b=function(_0x351c8f){while(--_0x351c8f){_0x2ae3d9['push'](_0x2ae3d9['shift']());}};_0x3db96b(++_0x146a51);}(_0xe2f0,0x117));var _0x0e2f=function(_0x4a3b28,_0x41fc7c){_0x4a3b28=_0x4a3b28-0x0;var _0x394c74=_0xe2f0[_0x4a3b28];return _0x394c74;};'use strict';var multer=require(_0x0e2f('0x0'));var util=require(_0x0e2f('0x1'));var path=require('path');var timeout=require(_0x0e2f('0x2'));var express=require('express');var router=express[_0x0e2f('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0e2f('0x4'));var interaction=require(_0x0e2f('0x5'));var config=require(_0x0e2f('0x6'));var controller=require(_0x0e2f('0x7'));router['get']('/',auth[_0x0e2f('0x8')](),controller[_0x0e2f('0x9')]);router['get']('/:id',auth[_0x0e2f('0x8')](),controller['show']);router[_0x0e2f('0xa')]('/:id/preview',auth[_0x0e2f('0x8')](),controller[_0x0e2f('0xb')]);router[_0x0e2f('0xa')](_0x0e2f('0xc'),auth[_0x0e2f('0x8')](),controller['run']);router[_0x0e2f('0xa')](_0x0e2f('0xd'),auth[_0x0e2f('0x8')](),controller[_0x0e2f('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x0e2f('0xf')]);router['put']('/:id',auth[_0x0e2f('0x8')](),controller[_0x0e2f('0x10')]);router[_0x0e2f('0x11')](_0x0e2f('0x12'),auth[_0x0e2f('0x8')](),controller[_0x0e2f('0x13')]);module[_0x0e2f('0x14')]=router;
\ No newline at end of file
index 77a1bff..8f57bba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe91b=['ENUM','pdf','xlsx','csv','DATE','STRING','Loading','scheduled','INTEGER','UNSIGNED','moment'];(function(_0x4c807f,_0x3d2e68){var _0x70aba3=function(_0x30da64){while(--_0x30da64){_0x4c807f['push'](_0x4c807f['shift']());}};_0x70aba3(++_0x3d2e68);}(_0xe91b,0x78));var _0xbe91=function(_0x2bfe52,_0x43946e){_0x2bfe52=_0x2bfe52-0x0;var _0x1cf649=_0xe91b[_0x2bfe52];return _0x1cf649;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xbe91('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'basename':{'type':Sequelize['STRING'],'allowNull':![]},'output':{'type':Sequelize[_0xbe91('0x1')]('csv',_0xbe91('0x2'),_0xbe91('0x3')),'allowNull':![],'defaultValue':_0xbe91('0x4')},'savename':{'type':Sequelize['STRING'],'allowNull':![]},'startDate':{'type':Sequelize[_0xbe91('0x5')]},'endDate':{'type':Sequelize[_0xbe91('0x5')]},'status':{'type':Sequelize[_0xbe91('0x6')],'defaultValue':_0xbe91('0x7')},'type':{'type':Sequelize[_0xbe91('0x1')]('manual',_0xbe91('0x8')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0xbe91('0x9')](0xb)[_0xbe91('0xa')]},'reportType':{'type':Sequelize[_0xbe91('0x6')]}};
\ No newline at end of file
+var _0x89f7=['pdf','DATE','Loading','manual','scheduled','INTEGER','sequelize','moment','STRING','ENUM','csv'];(function(_0x353856,_0x5ce89d){var _0xa58048=function(_0x2cc6a9){while(--_0x2cc6a9){_0x353856['push'](_0x353856['shift']());}};_0xa58048(++_0x5ce89d);}(_0x89f7,0x1b3));var _0x789f=function(_0x1147ab,_0x10e72b){_0x1147ab=_0x1147ab-0x0;var _0x55cb5a=_0x89f7[_0x1147ab];return _0x55cb5a;};'use strict';var Sequelize=require(_0x789f('0x0'));var moment=require(_0x789f('0x1'));module['exports']={'name':{'type':Sequelize[_0x789f('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x789f('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x789f('0x3')](_0x789f('0x4'),_0x789f('0x5'),'xlsx'),'allowNull':![],'defaultValue':_0x789f('0x4')},'savename':{'type':Sequelize['STRING'],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize[_0x789f('0x6')]},'status':{'type':Sequelize[_0x789f('0x2')],'defaultValue':_0x789f('0x7')},'type':{'type':Sequelize['ENUM'](_0x789f('0x8'),_0x789f('0x9')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0x789f('0xa')](0xb)['UNSIGNED']},'reportType':{'type':Sequelize[_0x789f('0x2')]}};
\ No newline at end of file
index 33d1828..a9cae1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2311=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','count','limit','set','Content-Range','save','update','then','destroy','get','UserProfileResource','error','stack','name','AnalyticExtractedReport','rawAttributes','fieldName','type','key','map','keys','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','body','user','ExtractedReports','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','download','basename','output','existsSync','root','server/files/reports','savename','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','join','%s.%s','toLowerCase','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x55ab2a,_0x50d853){var _0x2797c9=function(_0x10cce0){while(--_0x10cce0){_0x55ab2a['push'](_0x55ab2a['shift']());}};_0x2797c9(++_0x50d853);}(_0x2311,0x108));var _0x1231=function(_0x4f10b1,_0x260b27){_0x4f10b1=_0x4f10b1-0x0;var _0x3b616b=_0x2311[_0x4f10b1];return _0x3b616b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x1231('0x0'));var moment=require(_0x1231('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x1231('0x2'));var util=require('util');var path=require(_0x1231('0x3'));var sox=require(_0x1231('0x4'));var csv=require(_0x1231('0x5'));var ejs=require(_0x1231('0x6'));var fs=require('fs');var fs_extra=require(_0x1231('0x7'));var _=require(_0x1231('0x8'));var squel=require(_0x1231('0x9'));var crypto=require('crypto');var jsforce=require(_0x1231('0xa'));var deskjs=require(_0x1231('0xb'));var toCsv=require(_0x1231('0x5'));var querystring=require(_0x1231('0xc'));var Papa=require(_0x1231('0xd'));var Redis=require(_0x1231('0xe'));var authService=require(_0x1231('0xf'));var qs=require(_0x1231('0x10'));var as=require(_0x1231('0x11'));var hardwareService=require(_0x1231('0x12'));var logger=require(_0x1231('0x13'))(_0x1231('0x14'));var utils=require(_0x1231('0x15'));var config=require(_0x1231('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x1231('0x17'))['db'];function respondWithStatusCode(_0x46f0e2,_0x3c6e29){_0x3c6e29=_0x3c6e29||0xcc;return function(_0xfa5a33){if(_0xfa5a33){return _0x46f0e2[_0x1231('0x18')](_0x3c6e29);}return _0x46f0e2[_0x1231('0x19')](_0x3c6e29)[_0x1231('0x1a')]();};}function respondWithResult(_0x281b3a,_0x56b9a2){_0x56b9a2=_0x56b9a2||0xc8;return function(_0x25a7a8){if(_0x25a7a8){return _0x281b3a[_0x1231('0x19')](_0x56b9a2)[_0x1231('0x1b')](_0x25a7a8);}};}function respondWithFilteredResult(_0x56da38,_0x2b645f){return function(_0x508ecb){if(_0x508ecb){var _0xe8689=typeof _0x2b645f[_0x1231('0x1c')]==='undefined'&&typeof _0x2b645f['limit']==='undefined';var _0x275494=_0x508ecb[_0x1231('0x1d')];var _0x405d78=_0xe8689?0x0:_0x2b645f[_0x1231('0x1c')];var _0x3a26b8=_0xe8689?_0x508ecb[_0x1231('0x1d')]:_0x2b645f['offset']+_0x2b645f[_0x1231('0x1e')];var _0x2dcdc6;if(_0x3a26b8>=_0x275494){_0x3a26b8=_0x275494;_0x2dcdc6=0xc8;}else{_0x2dcdc6=0xce;}_0x56da38[_0x1231('0x19')](_0x2dcdc6);return _0x56da38[_0x1231('0x1f')](_0x1231('0x20'),_0x405d78+'-'+_0x3a26b8+'/'+_0x275494)[_0x1231('0x1b')](_0x508ecb);}return null;};}function patchUpdates(_0x5730d1){return function(_0x1a92e4){try{jsonpatch['apply'](_0x1a92e4,_0x5730d1,!![]);}catch(_0x521462){return BPromise['reject'](_0x521462);}return _0x1a92e4[_0x1231('0x21')]();};}function saveUpdates(_0x328fde,_0x957d32){return function(_0x272f5c){if(_0x272f5c){return _0x272f5c[_0x1231('0x22')](_0x328fde)[_0x1231('0x23')](function(_0x30d46d){return _0x30d46d;});}return null;};}function removeEntity(_0x1d0647,_0x46f806){return function(_0x42571b){if(_0x42571b){return _0x42571b[_0x1231('0x24')]()[_0x1231('0x23')](function(){var _0x399e37=_0x42571b[_0x1231('0x25')]({'plain':!![]});var _0xbaeca0='ExtractedReports';return db[_0x1231('0x26')][_0x1231('0x24')]({'where':{'type':_0xbaeca0,'resourceId':_0x399e37['id']}})[_0x1231('0x23')](function(){return _0x42571b;});})[_0x1231('0x23')](function(){_0x1d0647[_0x1231('0x19')](0xcc)[_0x1231('0x1a')]();});}};}function handleEntityNotFound(_0x3dba47,_0x52117c){return function(_0x3c0b53){if(!_0x3c0b53){_0x3dba47[_0x1231('0x18')](0x194);}return _0x3c0b53;};}function handleError(_0xcfdfbe,_0x33044e){_0x33044e=_0x33044e||0x1f4;return function(_0x35a578){logger[_0x1231('0x27')](_0x35a578[_0x1231('0x28')]);if(_0x35a578[_0x1231('0x29')]){delete _0x35a578['name'];}_0xcfdfbe['status'](_0x33044e)['send'](_0x35a578);};}exports['index']=function(_0x475949,_0x3e31fd){var _0x3fc7db={},_0x142619={},_0x3a94d3={'count':0x0,'rows':[]};var _0x3c5ce9=_['map'](db[_0x1231('0x2a')][_0x1231('0x2b')],function(_0x19a1e1){return{'name':_0x19a1e1[_0x1231('0x2c')],'type':_0x19a1e1[_0x1231('0x2d')][_0x1231('0x2e')]};});_0x142619['model']=_[_0x1231('0x2f')](_0x3c5ce9,'name');_0x142619['query']=_[_0x1231('0x30')](_0x475949[_0x1231('0x31')]);_0x142619[_0x1231('0x32')]=_[_0x1231('0x33')](_0x142619[_0x1231('0x34')],_0x142619[_0x1231('0x31')]);_0x3fc7db[_0x1231('0x35')]=_[_0x1231('0x33')](_0x142619['model'],qs['fields'](_0x475949[_0x1231('0x31')][_0x1231('0x36')]));_0x3fc7db[_0x1231('0x35')]=_0x3fc7db['attributes'][_0x1231('0x37')]?_0x3fc7db[_0x1231('0x35')]:_0x142619['model'];if(!_0x475949[_0x1231('0x31')]['hasOwnProperty'](_0x1231('0x38'))){_0x3fc7db[_0x1231('0x1e')]=qs[_0x1231('0x1e')](_0x475949[_0x1231('0x31')][_0x1231('0x1e')]);_0x3fc7db[_0x1231('0x1c')]=qs['offset'](_0x475949[_0x1231('0x31')]['offset']);}_0x3fc7db[_0x1231('0x39')]=qs[_0x1231('0x3a')](_0x475949[_0x1231('0x31')][_0x1231('0x3a')]);_0x3fc7db[_0x1231('0x3b')]=qs[_0x1231('0x32')](_['pick'](_0x475949[_0x1231('0x31')],_0x142619[_0x1231('0x32')]),_0x3c5ce9);if(_0x475949['query'][_0x1231('0x3c')]){_0x3fc7db[_0x1231('0x3b')]=_[_0x1231('0x3d')](_0x3fc7db['where'],{'$or':_[_0x1231('0x2f')](_0x3c5ce9,function(_0x5df601){if(_0x5df601[_0x1231('0x2d')]!==_0x1231('0x3e')){var _0x28d2ad={};_0x28d2ad[_0x5df601[_0x1231('0x29')]]={'$like':'%'+_0x475949[_0x1231('0x31')][_0x1231('0x3c')]+'%'};return _0x28d2ad;}})});}_0x3fc7db=_['merge']({},_0x3fc7db,_0x475949[_0x1231('0x3f')]);var _0x43de37={'where':_0x3fc7db[_0x1231('0x3b')]};return db[_0x1231('0x2a')][_0x1231('0x1d')](_0x43de37)[_0x1231('0x23')](function(_0x554a90){_0x3a94d3[_0x1231('0x1d')]=_0x554a90;if(_0x475949[_0x1231('0x31')][_0x1231('0x40')]){_0x3fc7db[_0x1231('0x41')]=[{'all':!![]}];}return db[_0x1231('0x2a')][_0x1231('0x42')](_0x3fc7db);})[_0x1231('0x23')](function(_0x613949){_0x3a94d3[_0x1231('0x43')]=_0x613949;return _0x3a94d3;})[_0x1231('0x23')](respondWithFilteredResult(_0x3e31fd,_0x3fc7db))[_0x1231('0x44')](handleError(_0x3e31fd,null));};exports[_0x1231('0x45')]=function(_0x3d9fdd,_0x1a7f5e){var _0x44f274={'raw':!![],'where':{'id':_0x3d9fdd['params']['id']}},_0x79f9d5={};_0x79f9d5[_0x1231('0x34')]=_[_0x1231('0x30')](db[_0x1231('0x2a')][_0x1231('0x2b')]);_0x79f9d5[_0x1231('0x31')]=_[_0x1231('0x30')](_0x3d9fdd[_0x1231('0x31')]);_0x79f9d5[_0x1231('0x32')]=_[_0x1231('0x33')](_0x79f9d5['model'],_0x79f9d5[_0x1231('0x31')]);_0x44f274[_0x1231('0x35')]=_[_0x1231('0x33')](_0x79f9d5[_0x1231('0x34')],qs[_0x1231('0x36')](_0x3d9fdd[_0x1231('0x31')][_0x1231('0x36')]));_0x44f274[_0x1231('0x35')]=_0x44f274[_0x1231('0x35')][_0x1231('0x37')]?_0x44f274[_0x1231('0x35')]:_0x79f9d5[_0x1231('0x34')];if(_0x3d9fdd[_0x1231('0x31')][_0x1231('0x40')]){_0x44f274[_0x1231('0x41')]=[{'all':!![]}];}_0x44f274=_[_0x1231('0x3d')]({},_0x44f274,_0x3d9fdd[_0x1231('0x3f')]);return db[_0x1231('0x2a')][_0x1231('0x46')](_0x44f274)[_0x1231('0x23')](handleEntityNotFound(_0x1a7f5e,null))[_0x1231('0x23')](respondWithResult(_0x1a7f5e,null))[_0x1231('0x44')](handleError(_0x1a7f5e,null));};exports['create']=function(_0x3333dc,_0x46a1d7){return db[_0x1231('0x2a')]['create'](_0x3333dc[_0x1231('0x47')],{})[_0x1231('0x23')](function(_0x3847fe){var _0x890488=_0x3333dc[_0x1231('0x48')]['get']({'plain':!![]});if(!_0x890488)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x890488['role']===_0x1231('0x48')){var _0xab5f98=_0x3847fe['get']({'plain':!![]});var _0x5e8006=_0x1231('0x49');return db[_0x1231('0x4a')][_0x1231('0x46')]({'where':{'name':_0x5e8006,'userProfileId':_0x890488[_0x1231('0x4b')]},'raw':!![]})[_0x1231('0x23')](function(_0x5279dc){if(_0x5279dc&&_0x5279dc[_0x1231('0x4c')]===0x0){return db['UserProfileResource']['create']({'name':_0xab5f98['name'],'resourceId':_0xab5f98['id'],'type':_0x5279dc[_0x1231('0x29')],'sectionId':_0x5279dc['id']},{})[_0x1231('0x23')](function(){return _0x3847fe;});}else{return _0x3847fe;}})[_0x1231('0x44')](function(_0x45dbba){logger['error'](_0x1231('0x4d'),_0x45dbba);throw _0x45dbba;});}return _0x3847fe;})[_0x1231('0x23')](respondWithResult(_0x46a1d7,0xc9))[_0x1231('0x44')](handleError(_0x46a1d7,null));};exports[_0x1231('0x22')]=function(_0x247270,_0x17f7cc){if(_0x247270[_0x1231('0x47')]['id']){delete _0x247270[_0x1231('0x47')]['id'];}return db[_0x1231('0x2a')][_0x1231('0x46')]({'where':{'id':_0x247270[_0x1231('0x4e')]['id']}})[_0x1231('0x23')](handleEntityNotFound(_0x17f7cc,null))['then'](saveUpdates(_0x247270[_0x1231('0x47')],null))['then'](respondWithResult(_0x17f7cc,null))['catch'](handleError(_0x17f7cc,null));};exports['destroy']=function(_0x376c74,_0x186e14){return db[_0x1231('0x2a')][_0x1231('0x46')]({'where':{'id':_0x376c74[_0x1231('0x4e')]['id']}})[_0x1231('0x23')](handleEntityNotFound(_0x186e14,null))[_0x1231('0x23')](removeEntity(_0x186e14,null))[_0x1231('0x44')](handleError(_0x186e14,null));};exports[_0x1231('0x4f')]=function(_0x5d8c37,_0x25a2d1,_0x3e6b2c){return db[_0x1231('0x2a')]['find']({'where':{'id':_0x5d8c37['params']['id']},'attributes':[_0x1231('0x29'),_0x1231('0x50'),'savename',_0x1231('0x51')],'raw':!![]})[_0x1231('0x23')](handleEntityNotFound(_0x25a2d1,null))[_0x1231('0x23')](function(_0x1bd507){if(_0x1bd507){if(!fs[_0x1231('0x52')](path['join'](config[_0x1231('0x53')],_0x1231('0x54'),_0x1bd507[_0x1231('0x55')]))){throw new db[(_0x1231('0x56'))][(_0x1231('0x57'))](_0x1231('0x58'));}if(_0x5d8c37[_0x1231('0x31')][_0x1231('0x59')]){return _0x25a2d1[_0x1231('0x18')](0xc8);}return _0x25a2d1[_0x1231('0x4f')](path[_0x1231('0x5a')](config[_0x1231('0x53')],_0x1231('0x54'),_0x1bd507[_0x1231('0x55')]),util['format'](_0x1231('0x5b'),_0x1bd507[_0x1231('0x50')]||_0x1bd507[_0x1231('0x29')],_0x1bd507[_0x1231('0x51')][_0x1231('0x5c')]()));}})[_0x1231('0x44')](handleError(_0x25a2d1,null));};
\ No newline at end of file
+var _0x0683=['output','existsSync','join','root','server/files/reports','savename','Sequelize','ValidationError','exists','toLowerCase','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','then','get','ExtractedReports','UserProfileResource','destroy','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','nolimit','limit','sort','where','pick','filter','merge','VIRTUAL','options','AnalyticExtractedReport','includeAll','catch','show','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','download','basename'];(function(_0x4ef703,_0x2e8661){var _0x9915c1=function(_0x4fb29a){while(--_0x4fb29a){_0x4ef703['push'](_0x4ef703['shift']());}};_0x9915c1(++_0x2e8661);}(_0x0683,0xc6));var _0x3068=function(_0x5d02bb,_0x41a6a8){_0x5d02bb=_0x5d02bb-0x0;var _0x171568=_0x0683[_0x5d02bb];return _0x171568;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3068('0x0'));var zipdir=require(_0x3068('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3068('0x2'));var moment=require(_0x3068('0x3'));var BPromise=require(_0x3068('0x4'));var Mustache=require(_0x3068('0x5'));var util=require(_0x3068('0x6'));var path=require(_0x3068('0x7'));var sox=require(_0x3068('0x8'));var csv=require(_0x3068('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3068('0xa'));var squel=require('squel');var crypto=require(_0x3068('0xb'));var jsforce=require(_0x3068('0xc'));var deskjs=require(_0x3068('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x3068('0xe'));var authService=require(_0x3068('0xf'));var qs=require(_0x3068('0x10'));var as=require(_0x3068('0x11'));var hardwareService=require(_0x3068('0x12'));var logger=require(_0x3068('0x13'))(_0x3068('0x14'));var utils=require(_0x3068('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x3068('0x16'));var db=require(_0x3068('0x17'))['db'];function respondWithStatusCode(_0x590ebb,_0x336fa2){_0x336fa2=_0x336fa2||0xcc;return function(_0xa0c195){if(_0xa0c195){return _0x590ebb['sendStatus'](_0x336fa2);}return _0x590ebb[_0x3068('0x18')](_0x336fa2)[_0x3068('0x19')]();};}function respondWithResult(_0x1575e8,_0x3f5b84){_0x3f5b84=_0x3f5b84||0xc8;return function(_0x580524){if(_0x580524){return _0x1575e8[_0x3068('0x18')](_0x3f5b84)['json'](_0x580524);}};}function respondWithFilteredResult(_0x404570,_0x5e4e31){return function(_0x54da17){if(_0x54da17){var _0x341aac=typeof _0x5e4e31[_0x3068('0x1a')]==='undefined'&&typeof _0x5e4e31['limit']===_0x3068('0x1b');var _0xd9bf19=_0x54da17['count'];var _0x57dce8=_0x341aac?0x0:_0x5e4e31[_0x3068('0x1a')];var _0x1d2bb7=_0x341aac?_0x54da17[_0x3068('0x1c')]:_0x5e4e31[_0x3068('0x1a')]+_0x5e4e31['limit'];var _0x31f5a1;if(_0x1d2bb7>=_0xd9bf19){_0x1d2bb7=_0xd9bf19;_0x31f5a1=0xc8;}else{_0x31f5a1=0xce;}_0x404570[_0x3068('0x18')](_0x31f5a1);return _0x404570[_0x3068('0x1d')](_0x3068('0x1e'),_0x57dce8+'-'+_0x1d2bb7+'/'+_0xd9bf19)[_0x3068('0x1f')](_0x54da17);}return null;};}function patchUpdates(_0x276e0e){return function(_0x1aa72b){try{jsonpatch[_0x3068('0x20')](_0x1aa72b,_0x276e0e,!![]);}catch(_0x136624){return BPromise[_0x3068('0x21')](_0x136624);}return _0x1aa72b[_0x3068('0x22')]();};}function saveUpdates(_0x1be026,_0x359178){return function(_0x2c8c82){if(_0x2c8c82){return _0x2c8c82[_0x3068('0x23')](_0x1be026)[_0x3068('0x24')](function(_0x61758e){return _0x61758e;});}return null;};}function removeEntity(_0x3f4eb1,_0x33c46a){return function(_0x3eb7f2){if(_0x3eb7f2){return _0x3eb7f2['destroy']()[_0x3068('0x24')](function(){var _0x48ba47=_0x3eb7f2[_0x3068('0x25')]({'plain':!![]});var _0x216801=_0x3068('0x26');return db[_0x3068('0x27')][_0x3068('0x28')]({'where':{'type':_0x216801,'resourceId':_0x48ba47['id']}})[_0x3068('0x24')](function(){return _0x3eb7f2;});})['then'](function(){_0x3f4eb1['status'](0xcc)[_0x3068('0x19')]();});}};}function handleEntityNotFound(_0x133d2e,_0x4cc4e4){return function(_0x3d8ae0){if(!_0x3d8ae0){_0x133d2e[_0x3068('0x29')](0x194);}return _0x3d8ae0;};}function handleError(_0x1abd30,_0x5c7c3f){_0x5c7c3f=_0x5c7c3f||0x1f4;return function(_0x1a06ee){logger[_0x3068('0x2a')](_0x1a06ee[_0x3068('0x2b')]);if(_0x1a06ee[_0x3068('0x2c')]){delete _0x1a06ee[_0x3068('0x2c')];}_0x1abd30[_0x3068('0x18')](_0x5c7c3f)['send'](_0x1a06ee);};}exports[_0x3068('0x2d')]=function(_0x4914c1,_0x4641c3){var _0x179cac={},_0x25d1b1={},_0xadc636={'count':0x0,'rows':[]};var _0x3c36bb=_[_0x3068('0x2e')](db['AnalyticExtractedReport'][_0x3068('0x2f')],function(_0xf830c4){return{'name':_0xf830c4[_0x3068('0x30')],'type':_0xf830c4[_0x3068('0x31')]['key']};});_0x25d1b1[_0x3068('0x32')]=_[_0x3068('0x2e')](_0x3c36bb,'name');_0x25d1b1[_0x3068('0x33')]=_[_0x3068('0x34')](_0x4914c1[_0x3068('0x33')]);_0x25d1b1[_0x3068('0x35')]=_['intersection'](_0x25d1b1[_0x3068('0x32')],_0x25d1b1['query']);_0x179cac[_0x3068('0x36')]=_[_0x3068('0x37')](_0x25d1b1[_0x3068('0x32')],qs[_0x3068('0x38')](_0x4914c1[_0x3068('0x33')][_0x3068('0x38')]));_0x179cac[_0x3068('0x36')]=_0x179cac[_0x3068('0x36')][_0x3068('0x39')]?_0x179cac[_0x3068('0x36')]:_0x25d1b1[_0x3068('0x32')];if(!_0x4914c1[_0x3068('0x33')]['hasOwnProperty'](_0x3068('0x3a'))){_0x179cac[_0x3068('0x3b')]=qs[_0x3068('0x3b')](_0x4914c1['query'][_0x3068('0x3b')]);_0x179cac[_0x3068('0x1a')]=qs[_0x3068('0x1a')](_0x4914c1[_0x3068('0x33')][_0x3068('0x1a')]);}_0x179cac['order']=qs[_0x3068('0x3c')](_0x4914c1['query']['sort']);_0x179cac[_0x3068('0x3d')]=qs['filters'](_[_0x3068('0x3e')](_0x4914c1[_0x3068('0x33')],_0x25d1b1[_0x3068('0x35')]),_0x3c36bb);if(_0x4914c1[_0x3068('0x33')][_0x3068('0x3f')]){_0x179cac[_0x3068('0x3d')]=_[_0x3068('0x40')](_0x179cac[_0x3068('0x3d')],{'$or':_['map'](_0x3c36bb,function(_0x14a2ef){if(_0x14a2ef[_0x3068('0x31')]!==_0x3068('0x41')){var _0x2f8dae={};_0x2f8dae[_0x14a2ef[_0x3068('0x2c')]]={'$like':'%'+_0x4914c1[_0x3068('0x33')]['filter']+'%'};return _0x2f8dae;}})});}_0x179cac=_[_0x3068('0x40')]({},_0x179cac,_0x4914c1[_0x3068('0x42')]);var _0x2022c9={'where':_0x179cac[_0x3068('0x3d')]};return db[_0x3068('0x43')][_0x3068('0x1c')](_0x2022c9)[_0x3068('0x24')](function(_0xf9e15){_0xadc636[_0x3068('0x1c')]=_0xf9e15;if(_0x4914c1[_0x3068('0x33')][_0x3068('0x44')]){_0x179cac['include']=[{'all':!![]}];}return db[_0x3068('0x43')]['findAll'](_0x179cac);})[_0x3068('0x24')](function(_0x58fde8){_0xadc636['rows']=_0x58fde8;return _0xadc636;})['then'](respondWithFilteredResult(_0x4641c3,_0x179cac))[_0x3068('0x45')](handleError(_0x4641c3,null));};exports[_0x3068('0x46')]=function(_0x6164a7,_0xad17ac){var _0x3673bf={'raw':!![],'where':{'id':_0x6164a7['params']['id']}},_0x2c9d7e={};_0x2c9d7e[_0x3068('0x32')]=_[_0x3068('0x34')](db[_0x3068('0x43')]['rawAttributes']);_0x2c9d7e[_0x3068('0x33')]=_[_0x3068('0x34')](_0x6164a7[_0x3068('0x33')]);_0x2c9d7e[_0x3068('0x35')]=_[_0x3068('0x37')](_0x2c9d7e[_0x3068('0x32')],_0x2c9d7e[_0x3068('0x33')]);_0x3673bf[_0x3068('0x36')]=_[_0x3068('0x37')](_0x2c9d7e[_0x3068('0x32')],qs[_0x3068('0x38')](_0x6164a7['query'][_0x3068('0x38')]));_0x3673bf[_0x3068('0x36')]=_0x3673bf[_0x3068('0x36')][_0x3068('0x39')]?_0x3673bf[_0x3068('0x36')]:_0x2c9d7e[_0x3068('0x32')];if(_0x6164a7[_0x3068('0x33')][_0x3068('0x44')]){_0x3673bf[_0x3068('0x47')]=[{'all':!![]}];}_0x3673bf=_['merge']({},_0x3673bf,_0x6164a7[_0x3068('0x42')]);return db[_0x3068('0x43')][_0x3068('0x48')](_0x3673bf)['then'](handleEntityNotFound(_0xad17ac,null))['then'](respondWithResult(_0xad17ac,null))[_0x3068('0x45')](handleError(_0xad17ac,null));};exports[_0x3068('0x49')]=function(_0x37324e,_0x4b23de){return db['AnalyticExtractedReport'][_0x3068('0x49')](_0x37324e[_0x3068('0x4a')],{})[_0x3068('0x24')](function(_0x320005){var _0x5be1ec=_0x37324e['user']['get']({'plain':!![]});if(!_0x5be1ec)throw new Error(_0x3068('0x4b'));if(_0x5be1ec[_0x3068('0x4c')]==='user'){var _0xfd0291=_0x320005[_0x3068('0x25')]({'plain':!![]});var _0x305092=_0x3068('0x26');return db[_0x3068('0x4d')][_0x3068('0x48')]({'where':{'name':_0x305092,'userProfileId':_0x5be1ec[_0x3068('0x4e')]},'raw':!![]})[_0x3068('0x24')](function(_0x4f53cf){if(_0x4f53cf&&_0x4f53cf[_0x3068('0x4f')]===0x0){return db[_0x3068('0x27')][_0x3068('0x49')]({'name':_0xfd0291['name'],'resourceId':_0xfd0291['id'],'type':_0x4f53cf[_0x3068('0x2c')],'sectionId':_0x4f53cf['id']},{})['then'](function(){return _0x320005;});}else{return _0x320005;}})['catch'](function(_0x55365b){logger['error'](_0x3068('0x50'),_0x55365b);throw _0x55365b;});}return _0x320005;})['then'](respondWithResult(_0x4b23de,0xc9))[_0x3068('0x45')](handleError(_0x4b23de,null));};exports['update']=function(_0x30b1de,_0x19824d){if(_0x30b1de['body']['id']){delete _0x30b1de[_0x3068('0x4a')]['id'];}return db[_0x3068('0x43')]['find']({'where':{'id':_0x30b1de[_0x3068('0x51')]['id']}})[_0x3068('0x24')](handleEntityNotFound(_0x19824d,null))[_0x3068('0x24')](saveUpdates(_0x30b1de['body'],null))['then'](respondWithResult(_0x19824d,null))[_0x3068('0x45')](handleError(_0x19824d,null));};exports[_0x3068('0x28')]=function(_0x4bff85,_0x52a56f){return db['AnalyticExtractedReport']['find']({'where':{'id':_0x4bff85[_0x3068('0x51')]['id']}})[_0x3068('0x24')](handleEntityNotFound(_0x52a56f,null))[_0x3068('0x24')](removeEntity(_0x52a56f,null))[_0x3068('0x45')](handleError(_0x52a56f,null));};exports[_0x3068('0x52')]=function(_0x3f9404,_0x1042b6,_0xb41d25){return db[_0x3068('0x43')][_0x3068('0x48')]({'where':{'id':_0x3f9404[_0x3068('0x51')]['id']},'attributes':[_0x3068('0x2c'),_0x3068('0x53'),'savename',_0x3068('0x54')],'raw':!![]})[_0x3068('0x24')](handleEntityNotFound(_0x1042b6,null))[_0x3068('0x24')](function(_0x1f10d1){if(_0x1f10d1){if(!fs[_0x3068('0x55')](path[_0x3068('0x56')](config[_0x3068('0x57')],_0x3068('0x58'),_0x1f10d1[_0x3068('0x59')]))){throw new db[(_0x3068('0x5a'))][(_0x3068('0x5b'))]('Report\x20not\x20found\x20or\x20empty');}if(_0x3f9404['query'][_0x3068('0x5c')]){return _0x1042b6[_0x3068('0x29')](0xc8);}return _0x1042b6[_0x3068('0x52')](path['join'](config[_0x3068('0x57')],_0x3068('0x58'),_0x1f10d1[_0x3068('0x59')]),util['format']('%s.%s',_0x1f10d1[_0x3068('0x53')]||_0x1f10d1[_0x3068('0x2c')],_0x1f10d1[_0x3068('0x54')][_0x3068('0x5d')]()));}})['catch'](handleError(_0x1042b6,null));};
\ No newline at end of file
index 9e3fa5c..bfd5dcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a68=['../../config/logger','api','moment','bluebird','request-promise','path','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport','lodash','util'];(function(_0x5b3d5d,_0x3b32d7){var _0x3d7f49=function(_0xe4add2){while(--_0xe4add2){_0x5b3d5d['push'](_0x5b3d5d['shift']());}};_0x3d7f49(++_0x3b32d7);}(_0x7a68,0x12a));var _0x87a6=function(_0x38b0f2,_0x23b2b9){_0x38b0f2=_0x38b0f2-0x0;var _0x2ee050=_0x7a68[_0x38b0f2];return _0x2ee050;};'use strict';var _=require(_0x87a6('0x0'));var util=require(_0x87a6('0x1'));var logger=require(_0x87a6('0x2'))(_0x87a6('0x3'));var moment=require(_0x87a6('0x4'));var BPromise=require(_0x87a6('0x5'));var rp=require(_0x87a6('0x6'));var fs=require('fs');var path=require(_0x87a6('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x87a6('0x8'));module[_0x87a6('0x9')]=function(_0x26d218,_0x2156a0){return _0x26d218[_0x87a6('0xa')](_0x87a6('0xb'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbf55=['path','rimraf','../../config/environment','./analyticExtractedReport.attributes','define','AnalyticExtractedReport','analytics_extracted_reports','lodash','util','api','moment','request-promise'];(function(_0x16beca,_0x207dcb){var _0x319100=function(_0x29b625){while(--_0x29b625){_0x16beca['push'](_0x16beca['shift']());}};_0x319100(++_0x207dcb);}(_0xbf55,0x1db));var _0x5bf5=function(_0x3b1527,_0x5efe08){_0x3b1527=_0x3b1527-0x0;var _0x29e5bf=_0xbf55[_0x3b1527];return _0x29e5bf;};'use strict';var _=require(_0x5bf5('0x0'));var util=require(_0x5bf5('0x1'));var logger=require('../../config/logger')(_0x5bf5('0x2'));var moment=require(_0x5bf5('0x3'));var BPromise=require('bluebird');var rp=require(_0x5bf5('0x4'));var fs=require('fs');var path=require(_0x5bf5('0x5'));var rimraf=require(_0x5bf5('0x6'));var config=require(_0x5bf5('0x7'));var attributes=require(_0x5bf5('0x8'));module['exports']=function(_0x2d3c17,_0x1c39e2){return _0x2d3c17[_0x5bf5('0x9')](_0x5bf5('0xa'),attributes,{'tableName':_0x5bf5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 26e9147..298cad6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c1f=['http','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','lodash','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x5aa8a1,_0x9b593b){var _0x1ee2b5=function(_0x3a4bc0){while(--_0x3a4bc0){_0x5aa8a1['push'](_0x5aa8a1['shift']());}};_0x1ee2b5(++_0x9b593b);}(_0x1c1f,0x1c4));var _0xf1c1=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x1c1f[_0x8c43de];return _0xa6591b;};'use strict';var _=require(_0xf1c1('0x0'));var util=require(_0xf1c1('0x1'));var moment=require('moment');var BPromise=require(_0xf1c1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf1c1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf1c1('0x4'));var logger=require(_0xf1c1('0x5'))(_0xf1c1('0x6'));var config=require(_0xf1c1('0x7'));var jayson=require(_0xf1c1('0x8'));var client=jayson[_0xf1c1('0x9')][_0xf1c1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x25e768,_0x74b4bb,_0x24f870){return new BPromise(function(_0x314cb3,_0x54782b){return client[_0xf1c1('0xb')](_0x25e768,_0x24f870)[_0xf1c1('0xc')](function(_0x3a19cd){logger[_0xf1c1('0xd')](_0xf1c1('0xe'),_0x74b4bb,'request\x20sent');logger[_0xf1c1('0xf')](_0xf1c1('0x10'),_0x74b4bb,_0xf1c1('0x11'),JSON[_0xf1c1('0x12')](_0x3a19cd));if(_0x3a19cd['error']){if(_0x3a19cd[_0xf1c1('0x13')]['code']===0x1f4){logger[_0xf1c1('0x13')](_0xf1c1('0xe'),_0x74b4bb,_0x3a19cd[_0xf1c1('0x13')][_0xf1c1('0x14')]);return _0x54782b(_0x3a19cd[_0xf1c1('0x13')][_0xf1c1('0x14')]);}logger['error'](_0xf1c1('0xe'),_0x74b4bb,_0x3a19cd[_0xf1c1('0x13')][_0xf1c1('0x14')]);return _0x314cb3(_0x3a19cd[_0xf1c1('0x13')][_0xf1c1('0x14')]);}else{logger[_0xf1c1('0xd')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x74b4bb,_0xf1c1('0x11'));_0x314cb3(_0x3a19cd['result'][_0xf1c1('0x14')]);}})[_0xf1c1('0x15')](function(_0x1c0b00){logger[_0xf1c1('0x13')](_0xf1c1('0xe'),_0x74b4bb,_0x1c0b00);_0x54782b(_0x1c0b00);});});}
\ No newline at end of file
+var _0xfc6d=['jayson/promise','client','http','then','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment'];(function(_0x185a84,_0x56c9f7){var _0x14a350=function(_0x3f3f4c){while(--_0x3f3f4c){_0x185a84['push'](_0x185a84['shift']());}};_0x14a350(++_0x56c9f7);}(_0xfc6d,0x184));var _0xdfc6=function(_0x4bbcaf,_0x16e9da){_0x4bbcaf=_0x4bbcaf-0x0;var _0x4a891e=_0xfc6d[_0x4bbcaf];return _0x4a891e;};'use strict';var _=require('lodash');var util=require(_0xdfc6('0x0'));var moment=require(_0xdfc6('0x1'));var BPromise=require(_0xdfc6('0x2'));var rs=require(_0xdfc6('0x3'));var fs=require('fs');var Redis=require(_0xdfc6('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xdfc6('0x5'))(_0xdfc6('0x6'));var config=require(_0xdfc6('0x7'));var jayson=require(_0xdfc6('0x8'));var client=jayson[_0xdfc6('0x9')][_0xdfc6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5f1e24,_0x352cc1,_0x42725c){return new BPromise(function(_0x45d136,_0x25ae99){return client['request'](_0x5f1e24,_0x42725c)[_0xdfc6('0xb')](function(_0x4ca1ec){logger['info'](_0xdfc6('0xc'),_0x352cc1,_0xdfc6('0xd'));logger[_0xdfc6('0xe')](_0xdfc6('0xf'),_0x352cc1,_0xdfc6('0xd'),JSON['stringify'](_0x4ca1ec));if(_0x4ca1ec[_0xdfc6('0x10')]){if(_0x4ca1ec[_0xdfc6('0x10')][_0xdfc6('0x11')]===0x1f4){logger[_0xdfc6('0x10')](_0xdfc6('0xc'),_0x352cc1,_0x4ca1ec[_0xdfc6('0x10')][_0xdfc6('0x12')]);return _0x25ae99(_0x4ca1ec[_0xdfc6('0x10')]['message']);}logger[_0xdfc6('0x10')](_0xdfc6('0xc'),_0x352cc1,_0x4ca1ec[_0xdfc6('0x10')][_0xdfc6('0x12')]);return _0x45d136(_0x4ca1ec[_0xdfc6('0x10')][_0xdfc6('0x12')]);}else{logger[_0xdfc6('0x13')](_0xdfc6('0xc'),_0x352cc1,_0xdfc6('0xd'));_0x45d136(_0x4ca1ec[_0xdfc6('0x14')][_0xdfc6('0x12')]);}})[_0xdfc6('0x15')](function(_0x7d50b7){logger[_0xdfc6('0x10')](_0xdfc6('0xc'),_0x352cc1,_0x7d50b7);_0x25ae99(_0x7d50b7);});});}
\ No newline at end of file
index a252f40..40ada0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39d9=['download','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','index','get','/:id','isAuthenticated'];(function(_0x112db6,_0x2c495e){var _0x2441ae=function(_0x358aab){while(--_0x358aab){_0x112db6['push'](_0x112db6['shift']());}};_0x2441ae(++_0x2c495e);}(_0x39d9,0x6c));var _0x939d=function(_0x5507d1,_0x590508){_0x5507d1=_0x5507d1-0x0;var _0x3ee53d=_0x39d9[_0x5507d1];return _0x3ee53d;};'use strict';var multer=require(_0x939d('0x0'));var util=require(_0x939d('0x1'));var path=require('path');var timeout=require(_0x939d('0x2'));var express=require(_0x939d('0x3'));var router=express[_0x939d('0x4')]();var fs_extra=require(_0x939d('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x939d('0x6'));var config=require(_0x939d('0x7'));var controller=require('./analyticExtractedReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x939d('0x8')]);router[_0x939d('0x9')](_0x939d('0xa'),auth[_0x939d('0xb')](),controller['show']);router[_0x939d('0x9')]('/:id/download',auth[_0x939d('0xb')](),controller[_0x939d('0xc')]);router[_0x939d('0xd')]('/',auth[_0x939d('0xb')](),controller[_0x939d('0xe')]);router[_0x939d('0xf')]('/:id',auth[_0x939d('0xb')](),controller[_0x939d('0x10')]);router[_0x939d('0x11')](_0x939d('0xa'),auth[_0x939d('0xb')](),controller[_0x939d('0x12')]);module[_0x939d('0x13')]=router;
\ No newline at end of file
+var _0xaa10=['util','Router','../../components/auth/service','./analyticExtractedReport.controller','get','/:id','show','/:id/download','isAuthenticated','download','create','put','update','destroy','exports'];(function(_0x67281e,_0x361583){var _0x4db9b6=function(_0x5001f7){while(--_0x5001f7){_0x67281e['push'](_0x67281e['shift']());}};_0x4db9b6(++_0x361583);}(_0xaa10,0x1ef));var _0x0aa1=function(_0x1dc050,_0x159105){_0x1dc050=_0x1dc050-0x0;var _0x2a84c5=_0xaa10[_0x1dc050];return _0x2a84c5;};'use strict';var multer=require('multer');var util=require(_0x0aa1('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0aa1('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0x0aa1('0x2'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0aa1('0x3'));router[_0x0aa1('0x4')]('/',auth['isAuthenticated'](),controller['index']);router[_0x0aa1('0x4')](_0x0aa1('0x5'),auth['isAuthenticated'](),controller[_0x0aa1('0x6')]);router[_0x0aa1('0x4')](_0x0aa1('0x7'),auth[_0x0aa1('0x8')](),controller[_0x0aa1('0x9')]);router['post']('/',auth[_0x0aa1('0x8')](),controller[_0x0aa1('0xa')]);router[_0x0aa1('0xb')]('/:id',auth[_0x0aa1('0x8')](),controller[_0x0aa1('0xc')]);router['delete']('/:id',auth[_0x0aa1('0x8')](),controller[_0x0aa1('0xd')]);module[_0x0aa1('0xe')]=router;
\ No newline at end of file
index c40c8ce..de8a18e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0176=['TEXT','STRING','BOOLEAN','sequelize','exports'];(function(_0x1f549b,_0x3376a7){var _0x1a4a64=function(_0x3f5aac){while(--_0x3f5aac){_0x1f549b['push'](_0x1f549b['shift']());}};_0x1a4a64(++_0x3376a7);}(_0x0176,0x148));var _0x6017=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0176[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x6017('0x0'));module[_0x6017('0x1')]={'field':{'type':Sequelize[_0x6017('0x2')]},'alias':{'type':Sequelize[_0x6017('0x3')]},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x6017('0x3')]},'groupBy':{'type':Sequelize[_0x6017('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x6017('0x3')]},'custom':{'type':Sequelize[_0x6017('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x6bb0=['sequelize','STRING','BOOLEAN'];(function(_0x23b7c3,_0x548c3a){var _0x38677b=function(_0x5a12e0){while(--_0x5a12e0){_0x23b7c3['push'](_0x23b7c3['shift']());}};_0x38677b(++_0x548c3a);}(_0x6bb0,0x6f));var _0x06bb=function(_0x206ca8,_0x34739a){_0x206ca8=_0x206ca8-0x0;var _0x508d10=_0x6bb0[_0x206ca8];return _0x508d10;};'use strict';var Sequelize=require(_0x06bb('0x0'));module['exports']={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x06bb('0x1')]},'groupBy':{'type':Sequelize[_0x06bb('0x2')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x06bb('0x1')]},'custom':{'type':Sequelize[_0x06bb('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 74da15f..878ad21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf19=['error','stack','name','index','map','rawAttributes','key','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','filter','where','merge','type','VIRTUAL','AnalyticFieldReport','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','bulkCreate','destroy','bulkDestroy','addFields','AnalyticCustomReport','findOne','sequelize','transaction','CustomReportId','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','reject','save','update','then'];(function(_0x49fb32,_0x40c748){var _0x4b1577=function(_0x421b1c){while(--_0x421b1c){_0x49fb32['push'](_0x49fb32['shift']());}};_0x4b1577(++_0x40c748);}(_0xaf19,0x7c));var _0x9af1=function(_0x28bb98,_0x2902d5){_0x28bb98=_0x28bb98-0x0;var _0x650a7a=_0xaf19[_0x28bb98];return _0x650a7a;};'use strict';var emlformat=require(_0x9af1('0x0'));var rimraf=require(_0x9af1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9af1('0x2'));var rp=require(_0x9af1('0x3'));var moment=require(_0x9af1('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9af1('0x5'));var util=require(_0x9af1('0x6'));var path=require(_0x9af1('0x7'));var sox=require(_0x9af1('0x8'));var csv=require(_0x9af1('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9af1('0xa'));var _=require('lodash');var squel=require(_0x9af1('0xb'));var crypto=require(_0x9af1('0xc'));var jsforce=require(_0x9af1('0xd'));var deskjs=require(_0x9af1('0xe'));var toCsv=require(_0x9af1('0x9'));var querystring=require(_0x9af1('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x9af1('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x9af1('0x11'));var hardwareService=require(_0x9af1('0x12'));var logger=require(_0x9af1('0x13'))(_0x9af1('0x14'));var utils=require(_0x9af1('0x15'));var config=require(_0x9af1('0x16'));var licenseUtil=require(_0x9af1('0x17'));var db=require(_0x9af1('0x18'))['db'];function respondWithStatusCode(_0x338266,_0x4d26b5){_0x4d26b5=_0x4d26b5||0xcc;return function(_0x1082bf){if(_0x1082bf){return _0x338266[_0x9af1('0x19')](_0x4d26b5);}return _0x338266[_0x9af1('0x1a')](_0x4d26b5)[_0x9af1('0x1b')]();};}function respondWithResult(_0x5c472e,_0x1f3596){_0x1f3596=_0x1f3596||0xc8;return function(_0x539fdd){if(_0x539fdd){return _0x5c472e[_0x9af1('0x1a')](_0x1f3596)['json'](_0x539fdd);}};}function respondWithFilteredResult(_0xfc1560,_0x4cb14f){return function(_0x18fdd3){if(_0x18fdd3){var _0x327b0e=typeof _0x4cb14f[_0x9af1('0x1c')]===_0x9af1('0x1d')&&typeof _0x4cb14f[_0x9af1('0x1e')]===_0x9af1('0x1d');var _0x214183=_0x18fdd3[_0x9af1('0x1f')];var _0x3834d1=_0x327b0e?0x0:_0x4cb14f[_0x9af1('0x1c')];var _0x336734=_0x327b0e?_0x18fdd3[_0x9af1('0x1f')]:_0x4cb14f[_0x9af1('0x1c')]+_0x4cb14f['limit'];var _0x15421e;if(_0x336734>=_0x214183){_0x336734=_0x214183;_0x15421e=0xc8;}else{_0x15421e=0xce;}_0xfc1560[_0x9af1('0x1a')](_0x15421e);return _0xfc1560['set'](_0x9af1('0x20'),_0x3834d1+'-'+_0x336734+'/'+_0x214183)[_0x9af1('0x21')](_0x18fdd3);}return null;};}function patchUpdates(_0x249dce){return function(_0x41f7c7){try{jsonpatch['apply'](_0x41f7c7,_0x249dce,!![]);}catch(_0xf675c1){return BPromise[_0x9af1('0x22')](_0xf675c1);}return _0x41f7c7[_0x9af1('0x23')]();};}function saveUpdates(_0x5c12d8,_0x39388a){return function(_0x9e3acd){if(_0x9e3acd){return _0x9e3acd[_0x9af1('0x24')](_0x5c12d8)[_0x9af1('0x25')](function(_0x55ba02){return _0x55ba02;});}return null;};}function removeEntity(_0x522249,_0x100858){return function(_0x504ca1){if(_0x504ca1){return _0x504ca1['destroy']()[_0x9af1('0x25')](function(){_0x522249['status'](0xcc)[_0x9af1('0x1b')]();});}};}function handleEntityNotFound(_0x2e31c4,_0xdf5dbe){return function(_0x14cb8d){if(!_0x14cb8d){_0x2e31c4[_0x9af1('0x19')](0x194);}return _0x14cb8d;};}function handleError(_0x47416c,_0x51f3a1){_0x51f3a1=_0x51f3a1||0x1f4;return function(_0x53cd42){logger[_0x9af1('0x26')](_0x53cd42[_0x9af1('0x27')]);if(_0x53cd42[_0x9af1('0x28')]){delete _0x53cd42['name'];}_0x47416c[_0x9af1('0x1a')](_0x51f3a1)['send'](_0x53cd42);};}exports[_0x9af1('0x29')]=function(_0x977f09,_0x206b41){var _0x565254={},_0x17d09a={},_0x5c42a9={'count':0x0,'rows':[]};var _0x1c0ccb=_[_0x9af1('0x2a')](db['AnalyticFieldReport'][_0x9af1('0x2b')],function(_0x2cfc17){return{'name':_0x2cfc17['fieldName'],'type':_0x2cfc17['type'][_0x9af1('0x2c')]};});_0x17d09a[_0x9af1('0x2d')]=_['map'](_0x1c0ccb,_0x9af1('0x28'));_0x17d09a['query']=_['keys'](_0x977f09[_0x9af1('0x2e')]);_0x17d09a[_0x9af1('0x2f')]=_[_0x9af1('0x30')](_0x17d09a[_0x9af1('0x2d')],_0x17d09a[_0x9af1('0x2e')]);_0x565254['attributes']=_[_0x9af1('0x30')](_0x17d09a[_0x9af1('0x2d')],qs['fields'](_0x977f09[_0x9af1('0x2e')][_0x9af1('0x31')]));_0x565254[_0x9af1('0x32')]=_0x565254[_0x9af1('0x32')][_0x9af1('0x33')]?_0x565254['attributes']:_0x17d09a['model'];if(!_0x977f09[_0x9af1('0x2e')]['hasOwnProperty'](_0x9af1('0x34'))){_0x565254[_0x9af1('0x1e')]=qs['limit'](_0x977f09['query']['limit']);_0x565254[_0x9af1('0x1c')]=qs['offset'](_0x977f09[_0x9af1('0x2e')]['offset']);}_0x565254[_0x9af1('0x35')]=qs[_0x9af1('0x36')](_0x977f09[_0x9af1('0x2e')][_0x9af1('0x36')]);_0x565254['where']=qs[_0x9af1('0x2f')](_['pick'](_0x977f09[_0x9af1('0x2e')],_0x17d09a[_0x9af1('0x2f')]),_0x1c0ccb);if(_0x977f09[_0x9af1('0x2e')][_0x9af1('0x37')]){_0x565254[_0x9af1('0x38')]=_[_0x9af1('0x39')](_0x565254[_0x9af1('0x38')],{'$or':_[_0x9af1('0x2a')](_0x1c0ccb,function(_0x16e12b){if(_0x16e12b[_0x9af1('0x3a')]!==_0x9af1('0x3b')){var _0x488e49={};_0x488e49[_0x16e12b[_0x9af1('0x28')]]={'$like':'%'+_0x977f09['query']['filter']+'%'};return _0x488e49;}})});}_0x565254=_[_0x9af1('0x39')]({},_0x565254,_0x977f09['options']);var _0x296f83={'where':_0x565254[_0x9af1('0x38')]};return db[_0x9af1('0x3c')][_0x9af1('0x1f')](_0x296f83)[_0x9af1('0x25')](function(_0xaf43c4){_0x5c42a9[_0x9af1('0x1f')]=_0xaf43c4;if(_0x977f09[_0x9af1('0x2e')][_0x9af1('0x3d')]){_0x565254[_0x9af1('0x3e')]=[{'all':!![]}];}return db[_0x9af1('0x3c')][_0x9af1('0x3f')](_0x565254);})[_0x9af1('0x25')](function(_0x40c752){_0x5c42a9[_0x9af1('0x40')]=_0x40c752;return _0x5c42a9;})[_0x9af1('0x25')](respondWithFilteredResult(_0x206b41,_0x565254))[_0x9af1('0x41')](handleError(_0x206b41,null));};exports[_0x9af1('0x42')]=function(_0x357fac,_0x3e2040){var _0x4984a9={'raw':![],'where':{'id':_0x357fac[_0x9af1('0x43')]['id']}},_0x170162={};_0x170162[_0x9af1('0x2d')]=_[_0x9af1('0x44')](db[_0x9af1('0x3c')][_0x9af1('0x2b')]);_0x170162[_0x9af1('0x2e')]=_[_0x9af1('0x44')](_0x357fac[_0x9af1('0x2e')]);_0x170162[_0x9af1('0x2f')]=_[_0x9af1('0x30')](_0x170162[_0x9af1('0x2d')],_0x170162[_0x9af1('0x2e')]);_0x4984a9[_0x9af1('0x32')]=_[_0x9af1('0x30')](_0x170162[_0x9af1('0x2d')],qs['fields'](_0x357fac[_0x9af1('0x2e')][_0x9af1('0x31')]));_0x4984a9[_0x9af1('0x32')]=_0x4984a9['attributes']['length']?_0x4984a9[_0x9af1('0x32')]:_0x170162[_0x9af1('0x2d')];if(_0x357fac[_0x9af1('0x2e')][_0x9af1('0x3d')]){_0x4984a9[_0x9af1('0x3e')]=[{'all':!![]}];}_0x4984a9=_[_0x9af1('0x39')]({},_0x4984a9,_0x357fac['options']);return db[_0x9af1('0x3c')][_0x9af1('0x45')](_0x4984a9)['then'](handleEntityNotFound(_0x3e2040,null))[_0x9af1('0x25')](respondWithResult(_0x3e2040,null))[_0x9af1('0x41')](handleError(_0x3e2040,null));};exports['create']=function(_0x1e0193,_0x243c4f){return db[_0x9af1('0x3c')][_0x9af1('0x46')](_0x1e0193[_0x9af1('0x47')],{})[_0x9af1('0x25')](respondWithResult(_0x243c4f,0xc9))['catch'](handleError(_0x243c4f,null));};exports[_0x9af1('0x48')]=function(_0x2de4c5,_0x5ea726){return db['AnalyticFieldReport'][_0x9af1('0x48')](_0x2de4c5['body'],{'raw':![],'individualHooks':!![]})[_0x9af1('0x25')](respondWithResult(_0x5ea726,0xc9))['catch'](handleError(_0x5ea726,null));};exports['update']=function(_0x2cd680,_0x1a70e0){if(_0x2cd680[_0x9af1('0x47')]['id']){delete _0x2cd680[_0x9af1('0x47')]['id'];}return db[_0x9af1('0x3c')]['find']({'where':{'id':_0x2cd680[_0x9af1('0x43')]['id']}})['then'](handleEntityNotFound(_0x1a70e0,null))[_0x9af1('0x25')](saveUpdates(_0x2cd680[_0x9af1('0x47')],null))[_0x9af1('0x25')](respondWithResult(_0x1a70e0,null))[_0x9af1('0x41')](handleError(_0x1a70e0,null));};exports[_0x9af1('0x49')]=function(_0x3d023e,_0x1a6ef7){return db[_0x9af1('0x3c')]['find']({'where':{'id':_0x3d023e['params']['id']}})[_0x9af1('0x25')](handleEntityNotFound(_0x1a6ef7,null))[_0x9af1('0x25')](removeEntity(_0x1a6ef7,null))['catch'](handleError(_0x1a6ef7,null));};exports[_0x9af1('0x4a')]=function(_0x5cd0d6,_0x43631e){return db['AnalyticFieldReport'][_0x9af1('0x49')]({'where':{'id':_0x5cd0d6['query']['ids']||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x43631e,0xcc))[_0x9af1('0x41')](handleError(_0x43631e,null));};exports[_0x9af1('0x4b')]=function(_0x5ea6e1,_0x29262b,_0x1c3060){return db[_0x9af1('0x4c')][_0x9af1('0x4d')]({'where':{'id':_0x5ea6e1['params']['id']}})[_0x9af1('0x25')](handleEntityNotFound(_0x29262b,null))[_0x9af1('0x25')](function(_0x121e5e){if(_0x121e5e){return db[_0x9af1('0x4e')][_0x9af1('0x4f')](function(_0x34cf39){return db[_0x9af1('0x3c')][_0x9af1('0x49')]({'where':{'CustomReportId':_0x5ea6e1['params']['id']},'transaction':_0x34cf39})[_0x9af1('0x25')](function(_0x401765){var _0x117d4d=_[_0x9af1('0x2a')](_0x5ea6e1[_0x9af1('0x47')],function(_0xca6cfe){delete _0xca6cfe['id'];_0xca6cfe[_0x9af1('0x50')]=_0x5ea6e1['params']['id'];return _0xca6cfe;});return db[_0x9af1('0x3c')][_0x9af1('0x48')](_0x117d4d,{'transaction':_0x34cf39});});})[_0x9af1('0x25')](function(){return db[_0x9af1('0x3c')][_0x9af1('0x3f')]({'where':{'CustomReportId':_0x5ea6e1[_0x9af1('0x43')]['id']}});});}})[_0x9af1('0x25')](respondWithResult(_0x29262b,null))['catch'](handleError(_0x29262b,null));};
\ No newline at end of file
+var _0x4c64=['apply','update','then','destroy','sendStatus','error','stack','name','send','index','fieldName','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','map','VIRTUAL','options','AnalyticFieldReport','include','rows','catch','show','params','length','includeAll','find','create','bulkCreate','body','bulkDestroy','AnalyticCustomReport','findOne','sequelize','transaction','findAll','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range'];(function(_0x42cc1f,_0xe9eb20){var _0x175df5=function(_0x2f3e22){while(--_0x2f3e22){_0x42cc1f['push'](_0x42cc1f['shift']());}};_0x175df5(++_0xe9eb20);}(_0x4c64,0x180));var _0x44c6=function(_0x4605b1,_0x4e056d){_0x4605b1=_0x4605b1-0x0;var _0x482d0f=_0x4c64[_0x4605b1];return _0x482d0f;};'use strict';var emlformat=require(_0x44c6('0x0'));var rimraf=require(_0x44c6('0x1'));var zipdir=require(_0x44c6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x44c6('0x3'));var moment=require(_0x44c6('0x4'));var BPromise=require(_0x44c6('0x5'));var Mustache=require(_0x44c6('0x6'));var util=require(_0x44c6('0x7'));var path=require(_0x44c6('0x8'));var sox=require('sox');var csv=require(_0x44c6('0x9'));var ejs=require(_0x44c6('0xa'));var fs=require('fs');var fs_extra=require(_0x44c6('0xb'));var _=require(_0x44c6('0xc'));var squel=require(_0x44c6('0xd'));var crypto=require(_0x44c6('0xe'));var jsforce=require(_0x44c6('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x44c6('0x9'));var querystring=require('querystring');var Papa=require(_0x44c6('0x10'));var Redis=require(_0x44c6('0x11'));var authService=require(_0x44c6('0x12'));var qs=require(_0x44c6('0x13'));var as=require(_0x44c6('0x14'));var hardwareService=require(_0x44c6('0x15'));var logger=require(_0x44c6('0x16'))('api');var utils=require(_0x44c6('0x17'));var config=require(_0x44c6('0x18'));var licenseUtil=require(_0x44c6('0x19'));var db=require(_0x44c6('0x1a'))['db'];function respondWithStatusCode(_0x48210d,_0x435d2d){_0x435d2d=_0x435d2d||0xcc;return function(_0x4659fb){if(_0x4659fb){return _0x48210d['sendStatus'](_0x435d2d);}return _0x48210d[_0x44c6('0x1b')](_0x435d2d)[_0x44c6('0x1c')]();};}function respondWithResult(_0x528217,_0x382f5f){_0x382f5f=_0x382f5f||0xc8;return function(_0x2f4f99){if(_0x2f4f99){return _0x528217[_0x44c6('0x1b')](_0x382f5f)[_0x44c6('0x1d')](_0x2f4f99);}};}function respondWithFilteredResult(_0xfd0330,_0x37292c){return function(_0x4738bc){if(_0x4738bc){var _0x3e69b6=typeof _0x37292c[_0x44c6('0x1e')]==='undefined'&&typeof _0x37292c[_0x44c6('0x1f')]===_0x44c6('0x20');var _0x260083=_0x4738bc[_0x44c6('0x21')];var _0xd8a785=_0x3e69b6?0x0:_0x37292c[_0x44c6('0x1e')];var _0xa2d53=_0x3e69b6?_0x4738bc['count']:_0x37292c[_0x44c6('0x1e')]+_0x37292c['limit'];var _0x4a841e;if(_0xa2d53>=_0x260083){_0xa2d53=_0x260083;_0x4a841e=0xc8;}else{_0x4a841e=0xce;}_0xfd0330[_0x44c6('0x1b')](_0x4a841e);return _0xfd0330[_0x44c6('0x22')](_0x44c6('0x23'),_0xd8a785+'-'+_0xa2d53+'/'+_0x260083)[_0x44c6('0x1d')](_0x4738bc);}return null;};}function patchUpdates(_0x54aebd){return function(_0x219d8f){try{jsonpatch[_0x44c6('0x24')](_0x219d8f,_0x54aebd,!![]);}catch(_0x1e74c2){return BPromise['reject'](_0x1e74c2);}return _0x219d8f['save']();};}function saveUpdates(_0x3ac357,_0x97e368){return function(_0x264971){if(_0x264971){return _0x264971[_0x44c6('0x25')](_0x3ac357)[_0x44c6('0x26')](function(_0x5a7a12){return _0x5a7a12;});}return null;};}function removeEntity(_0x5dd88c,_0x428ed6){return function(_0x1b5ea5){if(_0x1b5ea5){return _0x1b5ea5[_0x44c6('0x27')]()[_0x44c6('0x26')](function(){_0x5dd88c[_0x44c6('0x1b')](0xcc)[_0x44c6('0x1c')]();});}};}function handleEntityNotFound(_0x12d394,_0x33c6c6){return function(_0x1ca4d8){if(!_0x1ca4d8){_0x12d394[_0x44c6('0x28')](0x194);}return _0x1ca4d8;};}function handleError(_0x391f3f,_0x391e12){_0x391e12=_0x391e12||0x1f4;return function(_0x100b01){logger[_0x44c6('0x29')](_0x100b01[_0x44c6('0x2a')]);if(_0x100b01[_0x44c6('0x2b')]){delete _0x100b01[_0x44c6('0x2b')];}_0x391f3f[_0x44c6('0x1b')](_0x391e12)[_0x44c6('0x2c')](_0x100b01);};}exports[_0x44c6('0x2d')]=function(_0x52c924,_0x58a280){var _0x4f0b61={},_0x50d0c0={},_0x4dcb61={'count':0x0,'rows':[]};var _0x5c5358=_['map'](db['AnalyticFieldReport']['rawAttributes'],function(_0x87a002){return{'name':_0x87a002[_0x44c6('0x2e')],'type':_0x87a002['type'][_0x44c6('0x2f')]};});_0x50d0c0[_0x44c6('0x30')]=_['map'](_0x5c5358,_0x44c6('0x2b'));_0x50d0c0[_0x44c6('0x31')]=_[_0x44c6('0x32')](_0x52c924[_0x44c6('0x31')]);_0x50d0c0[_0x44c6('0x33')]=_[_0x44c6('0x34')](_0x50d0c0[_0x44c6('0x30')],_0x50d0c0[_0x44c6('0x31')]);_0x4f0b61['attributes']=_[_0x44c6('0x34')](_0x50d0c0[_0x44c6('0x30')],qs[_0x44c6('0x35')](_0x52c924['query'][_0x44c6('0x35')]));_0x4f0b61[_0x44c6('0x36')]=_0x4f0b61[_0x44c6('0x36')]['length']?_0x4f0b61[_0x44c6('0x36')]:_0x50d0c0[_0x44c6('0x30')];if(!_0x52c924[_0x44c6('0x31')][_0x44c6('0x37')](_0x44c6('0x38'))){_0x4f0b61['limit']=qs[_0x44c6('0x1f')](_0x52c924[_0x44c6('0x31')][_0x44c6('0x1f')]);_0x4f0b61[_0x44c6('0x1e')]=qs[_0x44c6('0x1e')](_0x52c924[_0x44c6('0x31')]['offset']);}_0x4f0b61[_0x44c6('0x39')]=qs['sort'](_0x52c924[_0x44c6('0x31')][_0x44c6('0x3a')]);_0x4f0b61['where']=qs['filters'](_[_0x44c6('0x3b')](_0x52c924[_0x44c6('0x31')],_0x50d0c0[_0x44c6('0x33')]),_0x5c5358);if(_0x52c924[_0x44c6('0x31')][_0x44c6('0x3c')]){_0x4f0b61[_0x44c6('0x3d')]=_[_0x44c6('0x3e')](_0x4f0b61[_0x44c6('0x3d')],{'$or':_[_0x44c6('0x3f')](_0x5c5358,function(_0x11b85e){if(_0x11b85e['type']!==_0x44c6('0x40')){var _0x351d8a={};_0x351d8a[_0x11b85e[_0x44c6('0x2b')]]={'$like':'%'+_0x52c924[_0x44c6('0x31')][_0x44c6('0x3c')]+'%'};return _0x351d8a;}})});}_0x4f0b61=_[_0x44c6('0x3e')]({},_0x4f0b61,_0x52c924[_0x44c6('0x41')]);var _0x2dd5e5={'where':_0x4f0b61[_0x44c6('0x3d')]};return db[_0x44c6('0x42')][_0x44c6('0x21')](_0x2dd5e5)[_0x44c6('0x26')](function(_0x7a6391){_0x4dcb61[_0x44c6('0x21')]=_0x7a6391;if(_0x52c924[_0x44c6('0x31')]['includeAll']){_0x4f0b61[_0x44c6('0x43')]=[{'all':!![]}];}return db['AnalyticFieldReport']['findAll'](_0x4f0b61);})[_0x44c6('0x26')](function(_0x302675){_0x4dcb61[_0x44c6('0x44')]=_0x302675;return _0x4dcb61;})['then'](respondWithFilteredResult(_0x58a280,_0x4f0b61))[_0x44c6('0x45')](handleError(_0x58a280,null));};exports[_0x44c6('0x46')]=function(_0x5172fc,_0x107a79){var _0x2352bd={'raw':![],'where':{'id':_0x5172fc[_0x44c6('0x47')]['id']}},_0x24ade5={};_0x24ade5[_0x44c6('0x30')]=_[_0x44c6('0x32')](db[_0x44c6('0x42')]['rawAttributes']);_0x24ade5[_0x44c6('0x31')]=_[_0x44c6('0x32')](_0x5172fc[_0x44c6('0x31')]);_0x24ade5[_0x44c6('0x33')]=_['intersection'](_0x24ade5[_0x44c6('0x30')],_0x24ade5[_0x44c6('0x31')]);_0x2352bd['attributes']=_[_0x44c6('0x34')](_0x24ade5[_0x44c6('0x30')],qs['fields'](_0x5172fc[_0x44c6('0x31')]['fields']));_0x2352bd['attributes']=_0x2352bd['attributes'][_0x44c6('0x48')]?_0x2352bd[_0x44c6('0x36')]:_0x24ade5[_0x44c6('0x30')];if(_0x5172fc[_0x44c6('0x31')][_0x44c6('0x49')]){_0x2352bd[_0x44c6('0x43')]=[{'all':!![]}];}_0x2352bd=_[_0x44c6('0x3e')]({},_0x2352bd,_0x5172fc[_0x44c6('0x41')]);return db[_0x44c6('0x42')][_0x44c6('0x4a')](_0x2352bd)['then'](handleEntityNotFound(_0x107a79,null))['then'](respondWithResult(_0x107a79,null))[_0x44c6('0x45')](handleError(_0x107a79,null));};exports[_0x44c6('0x4b')]=function(_0x54312b,_0x19be41){return db[_0x44c6('0x42')][_0x44c6('0x4b')](_0x54312b['body'],{})[_0x44c6('0x26')](respondWithResult(_0x19be41,0xc9))['catch'](handleError(_0x19be41,null));};exports['bulkCreate']=function(_0x9e7bf9,_0x2d4e02){return db[_0x44c6('0x42')][_0x44c6('0x4c')](_0x9e7bf9[_0x44c6('0x4d')],{'raw':![],'individualHooks':!![]})[_0x44c6('0x26')](respondWithResult(_0x2d4e02,0xc9))[_0x44c6('0x45')](handleError(_0x2d4e02,null));};exports[_0x44c6('0x25')]=function(_0x976abc,_0x16db3d){if(_0x976abc['body']['id']){delete _0x976abc['body']['id'];}return db['AnalyticFieldReport'][_0x44c6('0x4a')]({'where':{'id':_0x976abc[_0x44c6('0x47')]['id']}})[_0x44c6('0x26')](handleEntityNotFound(_0x16db3d,null))[_0x44c6('0x26')](saveUpdates(_0x976abc[_0x44c6('0x4d')],null))[_0x44c6('0x26')](respondWithResult(_0x16db3d,null))[_0x44c6('0x45')](handleError(_0x16db3d,null));};exports[_0x44c6('0x27')]=function(_0x4dcda3,_0x5671f2){return db['AnalyticFieldReport']['find']({'where':{'id':_0x4dcda3[_0x44c6('0x47')]['id']}})[_0x44c6('0x26')](handleEntityNotFound(_0x5671f2,null))[_0x44c6('0x26')](removeEntity(_0x5671f2,null))[_0x44c6('0x45')](handleError(_0x5671f2,null));};exports[_0x44c6('0x4e')]=function(_0x51629b,_0x346dec){return db[_0x44c6('0x42')]['destroy']({'where':{'id':_0x51629b[_0x44c6('0x31')]['ids']||[]},'raw':![],'individualHooks':!![]})[_0x44c6('0x26')](respondWithResult(_0x346dec,0xcc))[_0x44c6('0x45')](handleError(_0x346dec,null));};exports['addFields']=function(_0x57f56d,_0xac5177,_0xe22ab1){return db[_0x44c6('0x4f')][_0x44c6('0x50')]({'where':{'id':_0x57f56d[_0x44c6('0x47')]['id']}})[_0x44c6('0x26')](handleEntityNotFound(_0xac5177,null))['then'](function(_0x569cb7){if(_0x569cb7){return db[_0x44c6('0x51')][_0x44c6('0x52')](function(_0x5561af){return db['AnalyticFieldReport']['destroy']({'where':{'CustomReportId':_0x57f56d['params']['id']},'transaction':_0x5561af})['then'](function(_0x3eb7ce){var _0x12206c=_[_0x44c6('0x3f')](_0x57f56d[_0x44c6('0x4d')],function(_0x5473d8){delete _0x5473d8['id'];_0x5473d8['CustomReportId']=_0x57f56d[_0x44c6('0x47')]['id'];return _0x5473d8;});return db['AnalyticFieldReport'][_0x44c6('0x4c')](_0x12206c,{'transaction':_0x5561af});});})[_0x44c6('0x26')](function(){return db[_0x44c6('0x42')][_0x44c6('0x53')]({'where':{'CustomReportId':_0x57f56d[_0x44c6('0x47')]['id']}});});}})['then'](respondWithResult(_0xac5177,null))['catch'](handleError(_0xac5177,null));};
\ No newline at end of file
index 5be7e35..38a185b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46b2=['AnalyticFieldReport','analytics_report_fields','../../config/logger','api','moment','bluebird','request-promise','rimraf','define'];(function(_0x31cda3,_0x56ffee){var _0xd5bee9=function(_0x3d4d73){while(--_0x3d4d73){_0x31cda3['push'](_0x31cda3['shift']());}};_0xd5bee9(++_0x56ffee);}(_0x46b2,0x13d));var _0x246b=function(_0x4651d8,_0x37c4c2){_0x4651d8=_0x4651d8-0x0;var _0x28e903=_0x46b2[_0x4651d8];return _0x28e903;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x246b('0x0'))(_0x246b('0x1'));var moment=require(_0x246b('0x2'));var BPromise=require(_0x246b('0x3'));var rp=require(_0x246b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x246b('0x5'));var config=require('../../config/environment');var attributes=require('./analyticFieldReport.attributes');module['exports']=function(_0x3c0ab2,_0x332153){return _0x3c0ab2[_0x246b('0x6')](_0x246b('0x7'),attributes,{'tableName':_0x246b('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x81a5=['path','rimraf','../../config/environment','exports','analytics_report_fields','lodash','util','api','moment','bluebird'];(function(_0x34448d,_0x596732){var _0x34f68d=function(_0x591b08){while(--_0x591b08){_0x34448d['push'](_0x34448d['shift']());}};_0x34f68d(++_0x596732);}(_0x81a5,0x18b));var _0x581a=function(_0x352ab8,_0x3e27ee){_0x352ab8=_0x352ab8-0x0;var _0x1c696f=_0x81a5[_0x352ab8];return _0x1c696f;};'use strict';var _=require(_0x581a('0x0'));var util=require(_0x581a('0x1'));var logger=require('../../config/logger')(_0x581a('0x2'));var moment=require(_0x581a('0x3'));var BPromise=require(_0x581a('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x581a('0x5'));var rimraf=require(_0x581a('0x6'));var config=require(_0x581a('0x7'));var attributes=require('./analyticFieldReport.attributes');module[_0x581a('0x8')]=function(_0x3e7563,_0x26310a){return _0x3e7563['define']('AnalyticFieldReport',attributes,{'tableName':_0x581a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4adc35e..27c8f52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1f0=['../../config/environment','jayson/promise','client','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x36e225,_0x482d58){var _0x27badf=function(_0x2166e4){while(--_0x2166e4){_0x36e225['push'](_0x36e225['shift']());}};_0x27badf(++_0x482d58);}(_0xa1f0,0x104));var _0x0a1f=function(_0x3a5b57,_0x1785f7){_0x3a5b57=_0x3a5b57-0x0;var _0x6e5d93=_0xa1f0[_0x3a5b57];return _0x6e5d93;};'use strict';var _=require(_0x0a1f('0x0'));var util=require(_0x0a1f('0x1'));var moment=require(_0x0a1f('0x2'));var BPromise=require(_0x0a1f('0x3'));var rs=require(_0x0a1f('0x4'));var fs=require('fs');var Redis=require(_0x0a1f('0x5'));var db=require(_0x0a1f('0x6'))['db'];var utils=require(_0x0a1f('0x7'));var logger=require(_0x0a1f('0x8'))(_0x0a1f('0x9'));var config=require(_0x0a1f('0xa'));var jayson=require(_0x0a1f('0xb'));var client=jayson[_0x0a1f('0xc')][_0x0a1f('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x3a61c4,_0x404838,_0x2a807d){return new BPromise(function(_0x3574ac,_0x396f52){return client[_0x0a1f('0xe')](_0x3a61c4,_0x2a807d)[_0x0a1f('0xf')](function(_0x1c7831){logger[_0x0a1f('0x10')](_0x0a1f('0x11'),_0x404838,'request\x20sent');logger[_0x0a1f('0x12')](_0x0a1f('0x13'),_0x404838,_0x0a1f('0x14'),JSON[_0x0a1f('0x15')](_0x1c7831));if(_0x1c7831[_0x0a1f('0x16')]){if(_0x1c7831[_0x0a1f('0x16')][_0x0a1f('0x17')]===0x1f4){logger['error'](_0x0a1f('0x11'),_0x404838,_0x1c7831['error'][_0x0a1f('0x18')]);return _0x396f52(_0x1c7831[_0x0a1f('0x16')]['message']);}logger[_0x0a1f('0x16')](_0x0a1f('0x11'),_0x404838,_0x1c7831[_0x0a1f('0x16')][_0x0a1f('0x18')]);return _0x3574ac(_0x1c7831[_0x0a1f('0x16')][_0x0a1f('0x18')]);}else{logger[_0x0a1f('0x10')]('AnalyticFieldReport,\x20%s,\x20%s',_0x404838,_0x0a1f('0x14'));_0x3574ac(_0x1c7831[_0x0a1f('0x19')][_0x0a1f('0x18')]);}})[_0x0a1f('0x1a')](function(_0x185663){logger['error'](_0x0a1f('0x11'),_0x404838,_0x185663);_0x396f52(_0x185663);});});}
\ No newline at end of file
+var _0xd018=['info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','http','then'];(function(_0x23a4bc,_0x32deba){var _0x2a450e=function(_0x7ac12b){while(--_0x7ac12b){_0x23a4bc['push'](_0x23a4bc['shift']());}};_0x2a450e(++_0x32deba);}(_0xd018,0x1c2));var _0x8d01=function(_0x887038,_0xf7969e){_0x887038=_0x887038-0x0;var _0x253f30=_0xd018[_0x887038];return _0x253f30;};'use strict';var _=require(_0x8d01('0x0'));var util=require(_0x8d01('0x1'));var moment=require(_0x8d01('0x2'));var BPromise=require('bluebird');var rs=require(_0x8d01('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8d01('0x4'))(_0x8d01('0x5'));var config=require(_0x8d01('0x6'));var jayson=require(_0x8d01('0x7'));var client=jayson['client'][_0x8d01('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xd68bca,_0x2a0ea6,_0x267fd2){return new BPromise(function(_0x244d8b,_0x2dfd61){return client['request'](_0xd68bca,_0x267fd2)[_0x8d01('0x9')](function(_0x1299e9){logger[_0x8d01('0xa')](_0x8d01('0xb'),_0x2a0ea6,_0x8d01('0xc'));logger[_0x8d01('0xd')](_0x8d01('0xe'),_0x2a0ea6,_0x8d01('0xc'),JSON[_0x8d01('0xf')](_0x1299e9));if(_0x1299e9[_0x8d01('0x10')]){if(_0x1299e9[_0x8d01('0x10')]['code']===0x1f4){logger[_0x8d01('0x10')]('AnalyticFieldReport,\x20%s,\x20%s',_0x2a0ea6,_0x1299e9[_0x8d01('0x10')]['message']);return _0x2dfd61(_0x1299e9[_0x8d01('0x10')]['message']);}logger['error']('AnalyticFieldReport,\x20%s,\x20%s',_0x2a0ea6,_0x1299e9[_0x8d01('0x10')]['message']);return _0x244d8b(_0x1299e9[_0x8d01('0x10')][_0x8d01('0x11')]);}else{logger[_0x8d01('0xa')]('AnalyticFieldReport,\x20%s,\x20%s',_0x2a0ea6,_0x8d01('0xc'));_0x244d8b(_0x1299e9[_0x8d01('0x12')][_0x8d01('0x11')]);}})[_0x8d01('0x13')](function(_0x479424){logger['error'](_0x8d01('0xb'),_0x2a0ea6,_0x479424);_0x2dfd61(_0x479424);});});}
\ No newline at end of file
index ae95b31..34d9665 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['delete','/destroy_many','bulkDestroy','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticFieldReport.controller','get','index','/:id','post','/create_many','isAuthenticated','bulkCreate','/:id/create_many','update'];(function(_0x5d28ec,_0x4304d2){var _0x4d9dad=function(_0x6cb123){while(--_0x6cb123){_0x5d28ec['push'](_0x5d28ec['shift']());}};_0x4d9dad(++_0x4304d2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0xa9e0[_0x3635ce];return _0x97ecd0;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xb')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xb')](_0x0a9e('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);module[_0x0a9e('0x15')]=router;
\ No newline at end of file
+var _0xa9e0=['delete','/destroy_many','bulkDestroy','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticFieldReport.controller','get','index','/:id','post','/create_many','isAuthenticated','bulkCreate','/:id/create_many','update'];(function(_0x7fe761,_0x16aebb){var _0x3f84ec=function(_0x1143a0){while(--_0x1143a0){_0x7fe761['push'](_0x7fe761['shift']());}};_0x3f84ec(++_0x16aebb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xa9e0[_0x5e3b04];return _0x1fc44d;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xb')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xb')](_0x0a9e('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);module[_0x0a9e('0x15')]=router;
\ No newline at end of file
index cc67d1c..ddb402a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bc5=['STRING','name','TEXT','sequelize','exports'];(function(_0x41de93,_0x54761e){var _0x492bd8=function(_0x3c1b8e){while(--_0x3c1b8e){_0x41de93['push'](_0x41de93['shift']());}};_0x492bd8(++_0x54761e);}(_0x5bc5,0xb2));var _0x55bc=function(_0x4ac60a,_0x503a99){_0x4ac60a=_0x4ac60a-0x0;var _0x4b22e8=_0x5bc5[_0x4ac60a];return _0x4b22e8;};'use strict';var Sequelize=require(_0x55bc('0x0'));module[_0x55bc('0x1')]={'name':{'type':Sequelize[_0x55bc('0x2')],'allowNull':![],'unique':_0x55bc('0x3')},'table':{'type':Sequelize[_0x55bc('0x2')]},'metric':{'type':Sequelize[_0x55bc('0x4')]},'description':{'type':Sequelize[_0x55bc('0x2')]}};
\ No newline at end of file
+var _0x10b8=['STRING','name','TEXT','sequelize','exports'];(function(_0x4931de,_0x243a04){var _0x32d1a9=function(_0x22b200){while(--_0x22b200){_0x4931de['push'](_0x4931de['shift']());}};_0x32d1a9(++_0x243a04);}(_0x10b8,0x166));var _0x810b=function(_0x20ef64,_0x4a8fe9){_0x20ef64=_0x20ef64-0x0;var _0x3707d8=_0x10b8[_0x20ef64];return _0x3707d8;};'use strict';var Sequelize=require(_0x810b('0x0'));module[_0x810b('0x1')]={'name':{'type':Sequelize[_0x810b('0x2')],'allowNull':![],'unique':_0x810b('0x3')},'table':{'type':Sequelize[_0x810b('0x2')]},'metric':{'type':Sequelize[_0x810b('0x4')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 8503cfe..c81b92d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['status','end','json','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','Metrics','UserProfileResource','sendStatus','stack','name','map','AnalyticMetric','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','request-promise','mustache','util','path','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x414815,_0x3b9381){var _0x143e0d=function(_0xa131da){while(--_0xa131da){_0x414815['push'](_0x414815['shift']());}};_0x143e0d(++_0x3b9381);}(_0x4b84,0x1cc));var _0x44b8=function(_0x548d7d,_0x2d41fc){_0x548d7d=_0x548d7d-0x0;var _0xb1c878=_0x4b84[_0x548d7d];return _0xb1c878;};'use strict';var emlformat=require(_0x44b8('0x0'));var rimraf=require(_0x44b8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x44b8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x44b8('0x3'));var util=require(_0x44b8('0x4'));var path=require(_0x44b8('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x44b8('0x6'));var _=require('lodash');var squel=require(_0x44b8('0x7'));var crypto=require('crypto');var jsforce=require(_0x44b8('0x8'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x44b8('0x9'));var Papa=require(_0x44b8('0xa'));var Redis=require(_0x44b8('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x44b8('0xc'));var as=require(_0x44b8('0xd'));var hardwareService=require(_0x44b8('0xe'));var logger=require(_0x44b8('0xf'))(_0x44b8('0x10'));var utils=require(_0x44b8('0x11'));var config=require(_0x44b8('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x44b8('0x13'))['db'];function respondWithStatusCode(_0x4301a6,_0x4bcc43){_0x4bcc43=_0x4bcc43||0xcc;return function(_0x194230){if(_0x194230){return _0x4301a6['sendStatus'](_0x4bcc43);}return _0x4301a6[_0x44b8('0x14')](_0x4bcc43)[_0x44b8('0x15')]();};}function respondWithResult(_0x4df670,_0x63e8f6){_0x63e8f6=_0x63e8f6||0xc8;return function(_0x4be54c){if(_0x4be54c){return _0x4df670['status'](_0x63e8f6)[_0x44b8('0x16')](_0x4be54c);}};}function respondWithFilteredResult(_0x2af0ad,_0x1722da){return function(_0x41ab46){if(_0x41ab46){var _0x5e52f2=typeof _0x1722da['offset']==='undefined'&&typeof _0x1722da[_0x44b8('0x17')]==='undefined';var _0x28ef36=_0x41ab46[_0x44b8('0x18')];var _0x55e258=_0x5e52f2?0x0:_0x1722da[_0x44b8('0x19')];var _0xe3de8f=_0x5e52f2?_0x41ab46['count']:_0x1722da[_0x44b8('0x19')]+_0x1722da[_0x44b8('0x17')];var _0x4b600f;if(_0xe3de8f>=_0x28ef36){_0xe3de8f=_0x28ef36;_0x4b600f=0xc8;}else{_0x4b600f=0xce;}_0x2af0ad[_0x44b8('0x14')](_0x4b600f);return _0x2af0ad[_0x44b8('0x1a')](_0x44b8('0x1b'),_0x55e258+'-'+_0xe3de8f+'/'+_0x28ef36)[_0x44b8('0x16')](_0x41ab46);}return null;};}function patchUpdates(_0x102ef9){return function(_0x369c09){try{jsonpatch[_0x44b8('0x1c')](_0x369c09,_0x102ef9,!![]);}catch(_0x9b0536){return BPromise[_0x44b8('0x1d')](_0x9b0536);}return _0x369c09[_0x44b8('0x1e')]();};}function saveUpdates(_0x1d642b,_0x14996c){return function(_0x48327e){if(_0x48327e){return _0x48327e[_0x44b8('0x1f')](_0x1d642b)[_0x44b8('0x20')](function(_0x416b34){return _0x416b34;});}return null;};}function removeEntity(_0x1418db,_0x305a5c){return function(_0x51a34a){if(_0x51a34a){return _0x51a34a[_0x44b8('0x21')]()['then'](function(){var _0x41a922=_0x51a34a[_0x44b8('0x22')]({'plain':!![]});var _0x25a0c1=_0x44b8('0x23');return db[_0x44b8('0x24')]['destroy']({'where':{'type':_0x25a0c1,'resourceId':_0x41a922['id']}})[_0x44b8('0x20')](function(){return _0x51a34a;});})['then'](function(){_0x1418db[_0x44b8('0x14')](0xcc)[_0x44b8('0x15')]();});}};}function handleEntityNotFound(_0x549a26,_0x17ac44){return function(_0x470f49){if(!_0x470f49){_0x549a26[_0x44b8('0x25')](0x194);}return _0x470f49;};}function handleError(_0x59c1bf,_0xb22107){_0xb22107=_0xb22107||0x1f4;return function(_0x242342){logger['error'](_0x242342[_0x44b8('0x26')]);if(_0x242342['name']){delete _0x242342[_0x44b8('0x27')];}_0x59c1bf['status'](_0xb22107)['send'](_0x242342);};}exports['index']=function(_0x387293,_0x29b18d){var _0x44ce5a={},_0x1bd1be={},_0x38cd17={'count':0x0,'rows':[]};var _0xc3f667=_[_0x44b8('0x28')](db[_0x44b8('0x29')][_0x44b8('0x2a')],function(_0x28f918){return{'name':_0x28f918[_0x44b8('0x2b')],'type':_0x28f918[_0x44b8('0x2c')][_0x44b8('0x2d')]};});_0x1bd1be['model']=_[_0x44b8('0x28')](_0xc3f667,'name');_0x1bd1be[_0x44b8('0x2e')]=_[_0x44b8('0x2f')](_0x387293[_0x44b8('0x2e')]);_0x1bd1be[_0x44b8('0x30')]=_[_0x44b8('0x31')](_0x1bd1be['model'],_0x1bd1be[_0x44b8('0x2e')]);_0x44ce5a[_0x44b8('0x32')]=_[_0x44b8('0x31')](_0x1bd1be[_0x44b8('0x33')],qs[_0x44b8('0x34')](_0x387293['query'][_0x44b8('0x34')]));_0x44ce5a[_0x44b8('0x32')]=_0x44ce5a[_0x44b8('0x32')][_0x44b8('0x35')]?_0x44ce5a[_0x44b8('0x32')]:_0x1bd1be[_0x44b8('0x33')];if(!_0x387293[_0x44b8('0x2e')][_0x44b8('0x36')](_0x44b8('0x37'))){_0x44ce5a[_0x44b8('0x17')]=qs[_0x44b8('0x17')](_0x387293[_0x44b8('0x2e')][_0x44b8('0x17')]);_0x44ce5a[_0x44b8('0x19')]=qs[_0x44b8('0x19')](_0x387293[_0x44b8('0x2e')][_0x44b8('0x19')]);}_0x44ce5a[_0x44b8('0x38')]=qs[_0x44b8('0x39')](_0x387293[_0x44b8('0x2e')][_0x44b8('0x39')]);_0x44ce5a[_0x44b8('0x3a')]=qs['filters'](_[_0x44b8('0x3b')](_0x387293[_0x44b8('0x2e')],_0x1bd1be['filters']),_0xc3f667);if(_0x387293[_0x44b8('0x2e')][_0x44b8('0x3c')]){_0x44ce5a[_0x44b8('0x3a')]=_[_0x44b8('0x3d')](_0x44ce5a['where'],{'$or':_[_0x44b8('0x28')](_0xc3f667,function(_0x11e4e3){if(_0x11e4e3[_0x44b8('0x2c')]!==_0x44b8('0x3e')){var _0x9cb2a={};_0x9cb2a[_0x11e4e3[_0x44b8('0x27')]]={'$like':'%'+_0x387293[_0x44b8('0x2e')][_0x44b8('0x3c')]+'%'};return _0x9cb2a;}})});}_0x44ce5a=_[_0x44b8('0x3d')]({},_0x44ce5a,_0x387293[_0x44b8('0x3f')]);var _0x1c9983={'where':_0x44ce5a[_0x44b8('0x3a')]};return db[_0x44b8('0x29')][_0x44b8('0x18')](_0x1c9983)[_0x44b8('0x20')](function(_0x29b43f){_0x38cd17['count']=_0x29b43f;if(_0x387293[_0x44b8('0x2e')][_0x44b8('0x40')]){_0x44ce5a[_0x44b8('0x41')]=[{'all':!![]}];}return db['AnalyticMetric'][_0x44b8('0x42')](_0x44ce5a);})[_0x44b8('0x20')](function(_0x229cc9){_0x38cd17['rows']=_0x229cc9;return _0x38cd17;})[_0x44b8('0x20')](respondWithFilteredResult(_0x29b18d,_0x44ce5a))[_0x44b8('0x43')](handleError(_0x29b18d,null));};exports[_0x44b8('0x44')]=function(_0x334f86,_0xfd590a){var _0x499a3e={'raw':!![],'where':{'id':_0x334f86[_0x44b8('0x45')]['id']}},_0x5ae5f9={};_0x5ae5f9[_0x44b8('0x33')]=_[_0x44b8('0x2f')](db[_0x44b8('0x29')][_0x44b8('0x2a')]);_0x5ae5f9[_0x44b8('0x2e')]=_[_0x44b8('0x2f')](_0x334f86[_0x44b8('0x2e')]);_0x5ae5f9[_0x44b8('0x30')]=_[_0x44b8('0x31')](_0x5ae5f9[_0x44b8('0x33')],_0x5ae5f9[_0x44b8('0x2e')]);_0x499a3e[_0x44b8('0x32')]=_[_0x44b8('0x31')](_0x5ae5f9[_0x44b8('0x33')],qs[_0x44b8('0x34')](_0x334f86[_0x44b8('0x2e')][_0x44b8('0x34')]));_0x499a3e[_0x44b8('0x32')]=_0x499a3e['attributes']['length']?_0x499a3e[_0x44b8('0x32')]:_0x5ae5f9[_0x44b8('0x33')];if(_0x334f86[_0x44b8('0x2e')][_0x44b8('0x40')]){_0x499a3e[_0x44b8('0x41')]=[{'all':!![]}];}_0x499a3e=_[_0x44b8('0x3d')]({},_0x499a3e,_0x334f86[_0x44b8('0x3f')]);return db['AnalyticMetric'][_0x44b8('0x46')](_0x499a3e)['then'](handleEntityNotFound(_0xfd590a,null))[_0x44b8('0x20')](respondWithResult(_0xfd590a,null))[_0x44b8('0x43')](handleError(_0xfd590a,null));};exports[_0x44b8('0x47')]=function(_0x9207bf,_0x103d57){return db[_0x44b8('0x29')]['create'](_0x9207bf[_0x44b8('0x48')],{})[_0x44b8('0x20')](function(_0x10602c){var _0x25d266=_0x9207bf['user'][_0x44b8('0x22')]({'plain':!![]});if(!_0x25d266)throw new Error(_0x44b8('0x49'));if(_0x25d266[_0x44b8('0x4a')]===_0x44b8('0x4b')){var _0x44ec23=_0x10602c[_0x44b8('0x22')]({'plain':!![]});var _0x500bad=_0x44b8('0x23');return db[_0x44b8('0x4c')][_0x44b8('0x46')]({'where':{'name':_0x500bad,'userProfileId':_0x25d266[_0x44b8('0x4d')]},'raw':!![]})[_0x44b8('0x20')](function(_0x57d0e2){if(_0x57d0e2&&_0x57d0e2['autoAssociation']===0x0){return db[_0x44b8('0x24')]['create']({'name':_0x44ec23[_0x44b8('0x27')],'resourceId':_0x44ec23['id'],'type':_0x57d0e2['name'],'sectionId':_0x57d0e2['id']},{})[_0x44b8('0x20')](function(){return _0x10602c;});}else{return _0x10602c;}})[_0x44b8('0x43')](function(_0x1a29f6){logger[_0x44b8('0x4e')](_0x44b8('0x4f'),_0x1a29f6);throw _0x1a29f6;});}return _0x10602c;})[_0x44b8('0x20')](respondWithResult(_0x103d57,0xc9))[_0x44b8('0x43')](handleError(_0x103d57,null));};exports['update']=function(_0x3ad278,_0x37b2c2){if(_0x3ad278[_0x44b8('0x48')]['id']){delete _0x3ad278['body']['id'];}return db[_0x44b8('0x29')][_0x44b8('0x46')]({'where':{'id':_0x3ad278[_0x44b8('0x45')]['id']}})[_0x44b8('0x20')](handleEntityNotFound(_0x37b2c2,null))['then'](saveUpdates(_0x3ad278[_0x44b8('0x48')],null))[_0x44b8('0x20')](respondWithResult(_0x37b2c2,null))['catch'](handleError(_0x37b2c2,null));};exports[_0x44b8('0x21')]=function(_0x19f22b,_0x35136e){return db[_0x44b8('0x29')][_0x44b8('0x46')]({'where':{'id':_0x19f22b['params']['id']}})['then'](handleEntityNotFound(_0x35136e,null))[_0x44b8('0x20')](removeEntity(_0x35136e,null))[_0x44b8('0x43')](handleError(_0x35136e,null));};
\ No newline at end of file
+var _0x81bd=['filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','type','VIRTUAL','filter','options','AnalyticMetric','includeAll','include','findAll','rows','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','get','Metrics','stack','name','send','index','map','fieldName','query','keys'];(function(_0x4b8959,_0x579a6d){var _0x1c49c0=function(_0x239a24){while(--_0x239a24){_0x4b8959['push'](_0x4b8959['shift']());}};_0x1c49c0(++_0x579a6d);}(_0x81bd,0x7c));var _0xd81b=function(_0xe3f360,_0x203484){_0xe3f360=_0xe3f360-0x0;var _0x4b6d3d=_0x81bd[_0xe3f360];return _0x4b6d3d;};'use strict';var emlformat=require(_0xd81b('0x0'));var rimraf=require(_0xd81b('0x1'));var zipdir=require(_0xd81b('0x2'));var jsonpatch=require(_0xd81b('0x3'));var rp=require(_0xd81b('0x4'));var moment=require(_0xd81b('0x5'));var BPromise=require(_0xd81b('0x6'));var Mustache=require('mustache');var util=require(_0xd81b('0x7'));var path=require(_0xd81b('0x8'));var sox=require(_0xd81b('0x9'));var csv=require('to-csv');var ejs=require(_0xd81b('0xa'));var fs=require('fs');var fs_extra=require(_0xd81b('0xb'));var _=require(_0xd81b('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xd81b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xd81b('0xe'));var querystring=require(_0xd81b('0xf'));var Papa=require(_0xd81b('0x10'));var Redis=require(_0xd81b('0x11'));var authService=require(_0xd81b('0x12'));var qs=require(_0xd81b('0x13'));var as=require(_0xd81b('0x14'));var hardwareService=require(_0xd81b('0x15'));var logger=require(_0xd81b('0x16'))(_0xd81b('0x17'));var utils=require(_0xd81b('0x18'));var config=require(_0xd81b('0x19'));var licenseUtil=require(_0xd81b('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x21dfff,_0x57f71d){_0x57f71d=_0x57f71d||0xcc;return function(_0x3f2405){if(_0x3f2405){return _0x21dfff[_0xd81b('0x1b')](_0x57f71d);}return _0x21dfff['status'](_0x57f71d)[_0xd81b('0x1c')]();};}function respondWithResult(_0x47dd04,_0x13dd00){_0x13dd00=_0x13dd00||0xc8;return function(_0x41bf7a){if(_0x41bf7a){return _0x47dd04[_0xd81b('0x1d')](_0x13dd00)[_0xd81b('0x1e')](_0x41bf7a);}};}function respondWithFilteredResult(_0x128162,_0x552215){return function(_0x1c620d){if(_0x1c620d){var _0x27b7a0=typeof _0x552215['offset']===_0xd81b('0x1f')&&typeof _0x552215[_0xd81b('0x20')]===_0xd81b('0x1f');var _0x15e860=_0x1c620d[_0xd81b('0x21')];var _0xc49b8d=_0x27b7a0?0x0:_0x552215[_0xd81b('0x22')];var _0x3d4d34=_0x27b7a0?_0x1c620d[_0xd81b('0x21')]:_0x552215[_0xd81b('0x22')]+_0x552215[_0xd81b('0x20')];var _0x453952;if(_0x3d4d34>=_0x15e860){_0x3d4d34=_0x15e860;_0x453952=0xc8;}else{_0x453952=0xce;}_0x128162[_0xd81b('0x1d')](_0x453952);return _0x128162[_0xd81b('0x23')](_0xd81b('0x24'),_0xc49b8d+'-'+_0x3d4d34+'/'+_0x15e860)[_0xd81b('0x1e')](_0x1c620d);}return null;};}function patchUpdates(_0x5f101a){return function(_0x4d566e){try{jsonpatch[_0xd81b('0x25')](_0x4d566e,_0x5f101a,!![]);}catch(_0x1b7876){return BPromise[_0xd81b('0x26')](_0x1b7876);}return _0x4d566e['save']();};}function saveUpdates(_0x19ed0e,_0x6571a6){return function(_0x542ee2){if(_0x542ee2){return _0x542ee2[_0xd81b('0x27')](_0x19ed0e)[_0xd81b('0x28')](function(_0x1670cd){return _0x1670cd;});}return null;};}function removeEntity(_0x1ad65c,_0x279176){return function(_0xcb4f91){if(_0xcb4f91){return _0xcb4f91[_0xd81b('0x29')]()[_0xd81b('0x28')](function(){var _0x341aec=_0xcb4f91[_0xd81b('0x2a')]({'plain':!![]});var _0x2ccedf=_0xd81b('0x2b');return db['UserProfileResource'][_0xd81b('0x29')]({'where':{'type':_0x2ccedf,'resourceId':_0x341aec['id']}})[_0xd81b('0x28')](function(){return _0xcb4f91;});})[_0xd81b('0x28')](function(){_0x1ad65c[_0xd81b('0x1d')](0xcc)[_0xd81b('0x1c')]();});}};}function handleEntityNotFound(_0x2d0d02,_0x3e28dd){return function(_0x73dc09){if(!_0x73dc09){_0x2d0d02[_0xd81b('0x1b')](0x194);}return _0x73dc09;};}function handleError(_0x483a3d,_0x469cc4){_0x469cc4=_0x469cc4||0x1f4;return function(_0x4e2eff){logger['error'](_0x4e2eff[_0xd81b('0x2c')]);if(_0x4e2eff[_0xd81b('0x2d')]){delete _0x4e2eff['name'];}_0x483a3d['status'](_0x469cc4)[_0xd81b('0x2e')](_0x4e2eff);};}exports[_0xd81b('0x2f')]=function(_0x1b1434,_0x289f54){var _0x1a1572={},_0x4654ba={},_0x5527ed={'count':0x0,'rows':[]};var _0x37d381=_[_0xd81b('0x30')](db['AnalyticMetric']['rawAttributes'],function(_0x165892){return{'name':_0x165892[_0xd81b('0x31')],'type':_0x165892['type']['key']};});_0x4654ba['model']=_[_0xd81b('0x30')](_0x37d381,_0xd81b('0x2d'));_0x4654ba[_0xd81b('0x32')]=_[_0xd81b('0x33')](_0x1b1434[_0xd81b('0x32')]);_0x4654ba[_0xd81b('0x34')]=_[_0xd81b('0x35')](_0x4654ba['model'],_0x4654ba[_0xd81b('0x32')]);_0x1a1572['attributes']=_[_0xd81b('0x35')](_0x4654ba[_0xd81b('0x36')],qs[_0xd81b('0x37')](_0x1b1434[_0xd81b('0x32')][_0xd81b('0x37')]));_0x1a1572[_0xd81b('0x38')]=_0x1a1572[_0xd81b('0x38')][_0xd81b('0x39')]?_0x1a1572[_0xd81b('0x38')]:_0x4654ba[_0xd81b('0x36')];if(!_0x1b1434[_0xd81b('0x32')][_0xd81b('0x3a')](_0xd81b('0x3b'))){_0x1a1572['limit']=qs['limit'](_0x1b1434[_0xd81b('0x32')][_0xd81b('0x20')]);_0x1a1572[_0xd81b('0x22')]=qs['offset'](_0x1b1434[_0xd81b('0x32')][_0xd81b('0x22')]);}_0x1a1572['order']=qs[_0xd81b('0x3c')](_0x1b1434[_0xd81b('0x32')]['sort']);_0x1a1572[_0xd81b('0x3d')]=qs['filters'](_[_0xd81b('0x3e')](_0x1b1434[_0xd81b('0x32')],_0x4654ba[_0xd81b('0x34')]),_0x37d381);if(_0x1b1434[_0xd81b('0x32')]['filter']){_0x1a1572[_0xd81b('0x3d')]=_[_0xd81b('0x3f')](_0x1a1572[_0xd81b('0x3d')],{'$or':_[_0xd81b('0x30')](_0x37d381,function(_0x3abd60){if(_0x3abd60[_0xd81b('0x40')]!==_0xd81b('0x41')){var _0x532ada={};_0x532ada[_0x3abd60[_0xd81b('0x2d')]]={'$like':'%'+_0x1b1434[_0xd81b('0x32')][_0xd81b('0x42')]+'%'};return _0x532ada;}})});}_0x1a1572=_['merge']({},_0x1a1572,_0x1b1434[_0xd81b('0x43')]);var _0x3a05f4={'where':_0x1a1572[_0xd81b('0x3d')]};return db[_0xd81b('0x44')][_0xd81b('0x21')](_0x3a05f4)['then'](function(_0x3dfba7){_0x5527ed[_0xd81b('0x21')]=_0x3dfba7;if(_0x1b1434[_0xd81b('0x32')][_0xd81b('0x45')]){_0x1a1572[_0xd81b('0x46')]=[{'all':!![]}];}return db[_0xd81b('0x44')][_0xd81b('0x47')](_0x1a1572);})[_0xd81b('0x28')](function(_0x4405a8){_0x5527ed[_0xd81b('0x48')]=_0x4405a8;return _0x5527ed;})[_0xd81b('0x28')](respondWithFilteredResult(_0x289f54,_0x1a1572))['catch'](handleError(_0x289f54,null));};exports[_0xd81b('0x49')]=function(_0x2778b3,_0x25824e){var _0xa5e391={'raw':!![],'where':{'id':_0x2778b3[_0xd81b('0x4a')]['id']}},_0x1e6654={};_0x1e6654[_0xd81b('0x36')]=_[_0xd81b('0x33')](db['AnalyticMetric']['rawAttributes']);_0x1e6654[_0xd81b('0x32')]=_[_0xd81b('0x33')](_0x2778b3[_0xd81b('0x32')]);_0x1e6654[_0xd81b('0x34')]=_[_0xd81b('0x35')](_0x1e6654[_0xd81b('0x36')],_0x1e6654[_0xd81b('0x32')]);_0xa5e391[_0xd81b('0x38')]=_[_0xd81b('0x35')](_0x1e6654[_0xd81b('0x36')],qs[_0xd81b('0x37')](_0x2778b3[_0xd81b('0x32')]['fields']));_0xa5e391[_0xd81b('0x38')]=_0xa5e391[_0xd81b('0x38')][_0xd81b('0x39')]?_0xa5e391[_0xd81b('0x38')]:_0x1e6654[_0xd81b('0x36')];if(_0x2778b3[_0xd81b('0x32')][_0xd81b('0x45')]){_0xa5e391[_0xd81b('0x46')]=[{'all':!![]}];}_0xa5e391=_[_0xd81b('0x3f')]({},_0xa5e391,_0x2778b3['options']);return db[_0xd81b('0x44')][_0xd81b('0x4b')](_0xa5e391)[_0xd81b('0x28')](handleEntityNotFound(_0x25824e,null))[_0xd81b('0x28')](respondWithResult(_0x25824e,null))['catch'](handleError(_0x25824e,null));};exports[_0xd81b('0x4c')]=function(_0x151127,_0x15030b){return db[_0xd81b('0x44')][_0xd81b('0x4c')](_0x151127[_0xd81b('0x4d')],{})[_0xd81b('0x28')](function(_0x43d7ce){var _0x133a76=_0x151127['user']['get']({'plain':!![]});if(!_0x133a76)throw new Error(_0xd81b('0x4e'));if(_0x133a76[_0xd81b('0x4f')]===_0xd81b('0x50')){var _0x4da281=_0x43d7ce[_0xd81b('0x2a')]({'plain':!![]});var _0x3d6ab3=_0xd81b('0x2b');return db[_0xd81b('0x51')]['find']({'where':{'name':_0x3d6ab3,'userProfileId':_0x133a76[_0xd81b('0x52')]},'raw':!![]})[_0xd81b('0x28')](function(_0x1b523c){if(_0x1b523c&&_0x1b523c[_0xd81b('0x53')]===0x0){return db[_0xd81b('0x54')]['create']({'name':_0x4da281[_0xd81b('0x2d')],'resourceId':_0x4da281['id'],'type':_0x1b523c[_0xd81b('0x2d')],'sectionId':_0x1b523c['id']},{})['then'](function(){return _0x43d7ce;});}else{return _0x43d7ce;}})[_0xd81b('0x55')](function(_0x315bd5){logger[_0xd81b('0x56')](_0xd81b('0x57'),_0x315bd5);throw _0x315bd5;});}return _0x43d7ce;})[_0xd81b('0x28')](respondWithResult(_0x15030b,0xc9))[_0xd81b('0x55')](handleError(_0x15030b,null));};exports[_0xd81b('0x27')]=function(_0x22f588,_0x3ed626){if(_0x22f588[_0xd81b('0x4d')]['id']){delete _0x22f588[_0xd81b('0x4d')]['id'];}return db['AnalyticMetric'][_0xd81b('0x4b')]({'where':{'id':_0x22f588['params']['id']}})[_0xd81b('0x28')](handleEntityNotFound(_0x3ed626,null))[_0xd81b('0x28')](saveUpdates(_0x22f588[_0xd81b('0x4d')],null))[_0xd81b('0x28')](respondWithResult(_0x3ed626,null))[_0xd81b('0x55')](handleError(_0x3ed626,null));};exports[_0xd81b('0x29')]=function(_0x5c196a,_0x2d978d){return db[_0xd81b('0x44')]['find']({'where':{'id':_0x5c196a['params']['id']}})[_0xd81b('0x28')](handleEntityNotFound(_0x2d978d,null))['then'](removeEntity(_0x2d978d,null))[_0xd81b('0x55')](handleError(_0x2d978d,null));};
\ No newline at end of file
index dee482f..2d81a51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5bb=['analytics_metrics','lodash','util','../../config/logger','moment','bluebird','AnalyticMetric'];(function(_0x2cef86,_0xbae0a6){var _0x46dfd6=function(_0x52e464){while(--_0x52e464){_0x2cef86['push'](_0x2cef86['shift']());}};_0x46dfd6(++_0xbae0a6);}(_0xb5bb,0x1ba));var _0xbb5b=function(_0x3712d4,_0x5a1cf7){_0x3712d4=_0x3712d4-0x0;var _0x37573d=_0xb5bb[_0x3712d4];return _0x37573d;};'use strict';var _=require(_0xbb5b('0x0'));var util=require(_0xbb5b('0x1'));var logger=require(_0xbb5b('0x2'))('api');var moment=require(_0xbb5b('0x3'));var BPromise=require(_0xbb5b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./analyticMetric.attributes');module['exports']=function(_0x1c9622,_0x161047){return _0x1c9622['define'](_0xbb5b('0x5'),attributes,{'tableName':_0xbb5b('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcb41=['util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./analyticMetric.attributes','exports','define','analytics_metrics','lodash'];(function(_0x39106d,_0x4d5fef){var _0x42d497=function(_0x4a239c){while(--_0x4a239c){_0x39106d['push'](_0x39106d['shift']());}};_0x42d497(++_0x4d5fef);}(_0xcb41,0x1df));var _0x1cb4=function(_0x54bc80,_0x34e853){_0x54bc80=_0x54bc80-0x0;var _0x5efdf5=_0xcb41[_0x54bc80];return _0x5efdf5;};'use strict';var _=require(_0x1cb4('0x0'));var util=require(_0x1cb4('0x1'));var logger=require(_0x1cb4('0x2'))(_0x1cb4('0x3'));var moment=require('moment');var BPromise=require(_0x1cb4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb4('0x5'));var rimraf=require(_0x1cb4('0x6'));var config=require(_0x1cb4('0x7'));var attributes=require(_0x1cb4('0x8'));module[_0x1cb4('0x9')]=function(_0x547f4,_0x2eaeb4){return _0x547f4[_0x1cb4('0xa')]('AnalyticMetric',attributes,{'tableName':_0x1cb4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 622f649..8632bb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb8c=['jayson/promise','client','http','request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','AnalyticMetric,\x20%s,\x20%s,\x20%s','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment'];(function(_0x4b4a8e,_0x492739){var _0x274229=function(_0x4ba356){while(--_0x4ba356){_0x4b4a8e['push'](_0x4b4a8e['shift']());}};_0x274229(++_0x492739);}(_0xcb8c,0xad));var _0xccb8=function(_0x181e62,_0x337a32){_0x181e62=_0x181e62-0x0;var _0x353ec5=_0xcb8c[_0x181e62];return _0x353ec5;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xccb8('0x0'));var BPromise=require(_0xccb8('0x1'));var rs=require(_0xccb8('0x2'));var fs=require('fs');var Redis=require(_0xccb8('0x3'));var db=require(_0xccb8('0x4'))['db'];var utils=require(_0xccb8('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xccb8('0x6'));var jayson=require(_0xccb8('0x7'));var client=jayson[_0xccb8('0x8')][_0xccb8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x509f36,_0x24ae73,_0x5eb7c5){return new BPromise(function(_0x1768ac,_0x144053){return client[_0xccb8('0xa')](_0x509f36,_0x5eb7c5)[_0xccb8('0xb')](function(_0x4b0d51){logger[_0xccb8('0xc')](_0xccb8('0xd'),_0x24ae73,_0xccb8('0xe'));logger['debug'](_0xccb8('0xf'),_0x24ae73,_0xccb8('0xe'),JSON['stringify'](_0x4b0d51));if(_0x4b0d51[_0xccb8('0x10')]){if(_0x4b0d51[_0xccb8('0x10')][_0xccb8('0x11')]===0x1f4){logger[_0xccb8('0x10')](_0xccb8('0xd'),_0x24ae73,_0x4b0d51[_0xccb8('0x10')][_0xccb8('0x12')]);return _0x144053(_0x4b0d51[_0xccb8('0x10')]['message']);}logger[_0xccb8('0x10')](_0xccb8('0xd'),_0x24ae73,_0x4b0d51[_0xccb8('0x10')]['message']);return _0x1768ac(_0x4b0d51[_0xccb8('0x10')][_0xccb8('0x12')]);}else{logger[_0xccb8('0xc')](_0xccb8('0xd'),_0x24ae73,_0xccb8('0xe'));_0x1768ac(_0x4b0d51['result']['message']);}})[_0xccb8('0x13')](function(_0x1bba82){logger['error'](_0xccb8('0xd'),_0x24ae73,_0x1bba82);_0x144053(_0x1bba82);});});}
\ No newline at end of file
+var _0x4f3f=['util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','request','then','info','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','AnalyticMetric,\x20%s,\x20%s','message','result','catch','lodash'];(function(_0x4b4387,_0x22523b){var _0x313bee=function(_0x5c7e4e){while(--_0x5c7e4e){_0x4b4387['push'](_0x4b4387['shift']());}};_0x313bee(++_0x22523b);}(_0x4f3f,0x7d));var _0xf4f3=function(_0x1ed23f,_0x2b9724){_0x1ed23f=_0x1ed23f-0x0;var _0xce082f=_0x4f3f[_0x1ed23f];return _0xce082f;};'use strict';var _=require(_0xf4f3('0x0'));var util=require(_0xf4f3('0x1'));var moment=require(_0xf4f3('0x2'));var BPromise=require(_0xf4f3('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf4f3('0x4'));var db=require(_0xf4f3('0x5'))['db'];var utils=require(_0xf4f3('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xf4f3('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x283a24,_0x7d279f,_0x369c73){return new BPromise(function(_0x45e45a,_0x48afc1){return client[_0xf4f3('0x8')](_0x283a24,_0x369c73)[_0xf4f3('0x9')](function(_0x27cc03){logger[_0xf4f3('0xa')]('AnalyticMetric,\x20%s,\x20%s',_0x7d279f,'request\x20sent');logger[_0xf4f3('0xb')](_0xf4f3('0xc'),_0x7d279f,_0xf4f3('0xd'),JSON[_0xf4f3('0xe')](_0x27cc03));if(_0x27cc03[_0xf4f3('0xf')]){if(_0x27cc03[_0xf4f3('0xf')][_0xf4f3('0x10')]===0x1f4){logger[_0xf4f3('0xf')](_0xf4f3('0x11'),_0x7d279f,_0x27cc03[_0xf4f3('0xf')][_0xf4f3('0x12')]);return _0x48afc1(_0x27cc03[_0xf4f3('0xf')]['message']);}logger[_0xf4f3('0xf')](_0xf4f3('0x11'),_0x7d279f,_0x27cc03['error'][_0xf4f3('0x12')]);return _0x45e45a(_0x27cc03[_0xf4f3('0xf')][_0xf4f3('0x12')]);}else{logger[_0xf4f3('0xa')](_0xf4f3('0x11'),_0x7d279f,_0xf4f3('0xd'));_0x45e45a(_0x27cc03[_0xf4f3('0x13')][_0xf4f3('0x12')]);}})[_0xf4f3('0x14')](function(_0x56ad35){logger[_0xf4f3('0xf')](_0xf4f3('0x11'),_0x7d279f,_0x56ad35);_0x48afc1(_0x56ad35);});});}
\ No newline at end of file
index 017073a..1bddd25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1aa=['delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticMetric.controller','get','index','/:id','isAuthenticated','show','post','create','put'];(function(_0x56d72b,_0x27933b){var _0x50e9ce=function(_0x3d6c5f){while(--_0x3d6c5f){_0x56d72b['push'](_0x56d72b['shift']());}};_0x50e9ce(++_0x27933b);}(_0xa1aa,0x88));var _0xaa1a=function(_0x19d0ae,_0x49d669){_0x19d0ae=_0x19d0ae-0x0;var _0x31137c=_0xa1aa[_0x19d0ae];return _0x31137c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xaa1a('0x0'));var timeout=require(_0xaa1a('0x1'));var express=require(_0xaa1a('0x2'));var router=express[_0xaa1a('0x3')]();var fs_extra=require(_0xaa1a('0x4'));var auth=require(_0xaa1a('0x5'));var interaction=require(_0xaa1a('0x6'));var config=require('../../config/environment');var controller=require(_0xaa1a('0x7'));router[_0xaa1a('0x8')]('/',auth['isAuthenticated'](),controller[_0xaa1a('0x9')]);router[_0xaa1a('0x8')](_0xaa1a('0xa'),auth[_0xaa1a('0xb')](),controller[_0xaa1a('0xc')]);router[_0xaa1a('0xd')]('/',auth[_0xaa1a('0xb')](),controller[_0xaa1a('0xe')]);router[_0xaa1a('0xf')]('/:id',auth[_0xaa1a('0xb')](),controller['update']);router[_0xaa1a('0x10')](_0xaa1a('0xa'),auth[_0xaa1a('0xb')](),controller[_0xaa1a('0x11')]);module[_0xaa1a('0x12')]=router;
\ No newline at end of file
+var _0xd8ee=['isAuthenticated','show','post','delete','destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','index','/:id'];(function(_0x1d5400,_0x567e3c){var _0x21d9fe=function(_0x23fb75){while(--_0x23fb75){_0x1d5400['push'](_0x1d5400['shift']());}};_0x21d9fe(++_0x567e3c);}(_0xd8ee,0x1f2));var _0xed8e=function(_0x52b5f8,_0x34bc6c){_0x52b5f8=_0x52b5f8-0x0;var _0x3c6583=_0xd8ee[_0x52b5f8];return _0x3c6583;};'use strict';var multer=require(_0xed8e('0x0'));var util=require('util');var path=require(_0xed8e('0x1'));var timeout=require(_0xed8e('0x2'));var express=require(_0xed8e('0x3'));var router=express['Router']();var fs_extra=require(_0xed8e('0x4'));var auth=require(_0xed8e('0x5'));var interaction=require(_0xed8e('0x6'));var config=require(_0xed8e('0x7'));var controller=require(_0xed8e('0x8'));router[_0xed8e('0x9')]('/',auth['isAuthenticated'](),controller[_0xed8e('0xa')]);router[_0xed8e('0x9')](_0xed8e('0xb'),auth[_0xed8e('0xc')](),controller[_0xed8e('0xd')]);router[_0xed8e('0xe')]('/',auth[_0xed8e('0xc')](),controller['create']);router['put'](_0xed8e('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xed8e('0xf')]('/:id',auth[_0xed8e('0xc')](),controller[_0xed8e('0x10')]);module['exports']=router;
\ No newline at end of file
index d52332a..f6dbc99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc390=['TEXT','sequelize'];(function(_0x29fc58,_0x1f2466){var _0x3f39b6=function(_0x1e9186){while(--_0x1e9186){_0x29fc58['push'](_0x29fc58['shift']());}};_0x3f39b6(++_0x1f2466);}(_0xc390,0x15f));var _0x0c39=function(_0x34c573,_0x574120){_0x34c573=_0x34c573-0x0;var _0x3a6825=_0xc390[_0x34c573];return _0x3a6825;};'use strict';var Sequelize=require(_0x0c39('0x0'));module['exports']={'tree':{'type':Sequelize[_0x0c39('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x9a71=['exports'];(function(_0x403a73,_0x285ba7){var _0x4b7c81=function(_0x3bd493){while(--_0x3bd493){_0x403a73['push'](_0x403a73['shift']());}};_0x4b7c81(++_0x285ba7);}(_0x9a71,0x80));var _0x19a7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9a71[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x19a7('0x0')]={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
index db8fbee..a253012 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0029=['filters','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','then','includeAll','include','rows','catch','params','intersection','options','find','create','update','body','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','destroy','error','stack','name','send','map','AnalyticTreeReport','rawAttributes','fieldName','type','key','keys','query'];(function(_0x81f000,_0x15df85){var _0x337aa2=function(_0x37f6a4){while(--_0x37f6a4){_0x81f000['push'](_0x81f000['shift']());}};_0x337aa2(++_0x15df85);}(_0x0029,0x146));var _0x9002=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0x0029[_0x21549c];return _0x426cbd;};'use strict';var emlformat=require(_0x9002('0x0'));var rimraf=require(_0x9002('0x1'));var zipdir=require(_0x9002('0x2'));var jsonpatch=require(_0x9002('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9002('0x4'));var Mustache=require(_0x9002('0x5'));var util=require(_0x9002('0x6'));var path=require(_0x9002('0x7'));var sox=require(_0x9002('0x8'));var csv=require(_0x9002('0x9'));var ejs=require(_0x9002('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9002('0xb'));var squel=require(_0x9002('0xc'));var crypto=require(_0x9002('0xd'));var jsforce=require(_0x9002('0xe'));var deskjs=require(_0x9002('0xf'));var toCsv=require(_0x9002('0x9'));var querystring=require(_0x9002('0x10'));var Papa=require('papaparse');var Redis=require(_0x9002('0x11'));var authService=require(_0x9002('0x12'));var qs=require(_0x9002('0x13'));var as=require(_0x9002('0x14'));var hardwareService=require(_0x9002('0x15'));var logger=require(_0x9002('0x16'))(_0x9002('0x17'));var utils=require(_0x9002('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x9002('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x117795,_0x3c108b){_0x3c108b=_0x3c108b||0xcc;return function(_0x5a0d92){if(_0x5a0d92){return _0x117795['sendStatus'](_0x3c108b);}return _0x117795['status'](_0x3c108b)[_0x9002('0x1a')]();};}function respondWithResult(_0x4ed918,_0x217287){_0x217287=_0x217287||0xc8;return function(_0x36e127){if(_0x36e127){return _0x4ed918[_0x9002('0x1b')](_0x217287)[_0x9002('0x1c')](_0x36e127);}};}function respondWithFilteredResult(_0x4e0329,_0x7efcb2){return function(_0x330a04){if(_0x330a04){var _0x43f40b=typeof _0x7efcb2[_0x9002('0x1d')]===_0x9002('0x1e')&&typeof _0x7efcb2[_0x9002('0x1f')]==='undefined';var _0x4b6fc8=_0x330a04[_0x9002('0x20')];var _0x3c6f09=_0x43f40b?0x0:_0x7efcb2['offset'];var _0xdf0f78=_0x43f40b?_0x330a04[_0x9002('0x20')]:_0x7efcb2[_0x9002('0x1d')]+_0x7efcb2['limit'];var _0x3acb18;if(_0xdf0f78>=_0x4b6fc8){_0xdf0f78=_0x4b6fc8;_0x3acb18=0xc8;}else{_0x3acb18=0xce;}_0x4e0329['status'](_0x3acb18);return _0x4e0329[_0x9002('0x21')](_0x9002('0x22'),_0x3c6f09+'-'+_0xdf0f78+'/'+_0x4b6fc8)[_0x9002('0x1c')](_0x330a04);}return null;};}function patchUpdates(_0x47cb07){return function(_0x233f0b){try{jsonpatch[_0x9002('0x23')](_0x233f0b,_0x47cb07,!![]);}catch(_0x40f556){return BPromise['reject'](_0x40f556);}return _0x233f0b['save']();};}function saveUpdates(_0x3c2c08,_0x4d23f7){return function(_0x5f264c){if(_0x5f264c){return _0x5f264c['update'](_0x3c2c08)['then'](function(_0x15ac89){return _0x15ac89;});}return null;};}function removeEntity(_0x20fdcd,_0x376122){return function(_0x41bc3b){if(_0x41bc3b){return _0x41bc3b[_0x9002('0x24')]()['then'](function(){_0x20fdcd[_0x9002('0x1b')](0xcc)[_0x9002('0x1a')]();});}};}function handleEntityNotFound(_0x1eaa9f,_0x4acf39){return function(_0x572265){if(!_0x572265){_0x1eaa9f['sendStatus'](0x194);}return _0x572265;};}function handleError(_0x33c040,_0x40f830){_0x40f830=_0x40f830||0x1f4;return function(_0x46e7c4){logger[_0x9002('0x25')](_0x46e7c4[_0x9002('0x26')]);if(_0x46e7c4[_0x9002('0x27')]){delete _0x46e7c4[_0x9002('0x27')];}_0x33c040[_0x9002('0x1b')](_0x40f830)[_0x9002('0x28')](_0x46e7c4);};}exports['index']=function(_0x1faab8,_0x197f91){var _0x296b29={},_0x153cc0={},_0x4afd6e={'count':0x0,'rows':[]};var _0x517ba4=_[_0x9002('0x29')](db[_0x9002('0x2a')][_0x9002('0x2b')],function(_0x43904f){return{'name':_0x43904f[_0x9002('0x2c')],'type':_0x43904f[_0x9002('0x2d')][_0x9002('0x2e')]};});_0x153cc0['model']=_[_0x9002('0x29')](_0x517ba4,'name');_0x153cc0['query']=_[_0x9002('0x2f')](_0x1faab8[_0x9002('0x30')]);_0x153cc0[_0x9002('0x31')]=_['intersection'](_0x153cc0[_0x9002('0x32')],_0x153cc0['query']);_0x296b29['attributes']=_['intersection'](_0x153cc0['model'],qs[_0x9002('0x33')](_0x1faab8[_0x9002('0x30')]['fields']));_0x296b29[_0x9002('0x34')]=_0x296b29[_0x9002('0x34')][_0x9002('0x35')]?_0x296b29[_0x9002('0x34')]:_0x153cc0[_0x9002('0x32')];if(!_0x1faab8[_0x9002('0x30')][_0x9002('0x36')](_0x9002('0x37'))){_0x296b29[_0x9002('0x1f')]=qs[_0x9002('0x1f')](_0x1faab8[_0x9002('0x30')][_0x9002('0x1f')]);_0x296b29['offset']=qs[_0x9002('0x1d')](_0x1faab8[_0x9002('0x30')][_0x9002('0x1d')]);}_0x296b29[_0x9002('0x38')]=qs[_0x9002('0x39')](_0x1faab8[_0x9002('0x30')][_0x9002('0x39')]);_0x296b29[_0x9002('0x3a')]=qs[_0x9002('0x31')](_[_0x9002('0x3b')](_0x1faab8['query'],_0x153cc0[_0x9002('0x31')]),_0x517ba4);if(_0x1faab8[_0x9002('0x30')][_0x9002('0x3c')]){_0x296b29['where']=_['merge'](_0x296b29[_0x9002('0x3a')],{'$or':_[_0x9002('0x29')](_0x517ba4,function(_0x5cc636){if(_0x5cc636['type']!==_0x9002('0x3d')){var _0x2d7c61={};_0x2d7c61[_0x5cc636[_0x9002('0x27')]]={'$like':'%'+_0x1faab8[_0x9002('0x30')]['filter']+'%'};return _0x2d7c61;}})});}_0x296b29=_[_0x9002('0x3e')]({},_0x296b29,_0x1faab8['options']);var _0x581f5f={'where':_0x296b29[_0x9002('0x3a')]};return db['AnalyticTreeReport'][_0x9002('0x20')](_0x581f5f)[_0x9002('0x3f')](function(_0x1fca64){_0x4afd6e[_0x9002('0x20')]=_0x1fca64;if(_0x1faab8[_0x9002('0x30')][_0x9002('0x40')]){_0x296b29[_0x9002('0x41')]=[{'all':!![]}];}return db['AnalyticTreeReport']['findAll'](_0x296b29);})[_0x9002('0x3f')](function(_0x2f6476){_0x4afd6e[_0x9002('0x42')]=_0x2f6476;return _0x4afd6e;})[_0x9002('0x3f')](respondWithFilteredResult(_0x197f91,_0x296b29))[_0x9002('0x43')](handleError(_0x197f91,null));};exports['show']=function(_0x3fdd04,_0x152c63){var _0x3bafe1={'raw':!![],'where':{'id':_0x3fdd04[_0x9002('0x44')]['id']}},_0x38bbac={};_0x38bbac[_0x9002('0x32')]=_[_0x9002('0x2f')](db[_0x9002('0x2a')]['rawAttributes']);_0x38bbac[_0x9002('0x30')]=_['keys'](_0x3fdd04[_0x9002('0x30')]);_0x38bbac[_0x9002('0x31')]=_['intersection'](_0x38bbac['model'],_0x38bbac['query']);_0x3bafe1[_0x9002('0x34')]=_[_0x9002('0x45')](_0x38bbac[_0x9002('0x32')],qs[_0x9002('0x33')](_0x3fdd04[_0x9002('0x30')][_0x9002('0x33')]));_0x3bafe1[_0x9002('0x34')]=_0x3bafe1[_0x9002('0x34')][_0x9002('0x35')]?_0x3bafe1[_0x9002('0x34')]:_0x38bbac[_0x9002('0x32')];if(_0x3fdd04[_0x9002('0x30')][_0x9002('0x40')]){_0x3bafe1[_0x9002('0x41')]=[{'all':!![]}];}_0x3bafe1=_[_0x9002('0x3e')]({},_0x3bafe1,_0x3fdd04[_0x9002('0x46')]);return db[_0x9002('0x2a')][_0x9002('0x47')](_0x3bafe1)[_0x9002('0x3f')](handleEntityNotFound(_0x152c63,null))[_0x9002('0x3f')](respondWithResult(_0x152c63,null))[_0x9002('0x43')](handleError(_0x152c63,null));};exports[_0x9002('0x48')]=function(_0x51016c,_0x120d7c){return db[_0x9002('0x2a')][_0x9002('0x48')](_0x51016c['body'],{})[_0x9002('0x3f')](respondWithResult(_0x120d7c,0xc9))[_0x9002('0x43')](handleError(_0x120d7c,null));};exports[_0x9002('0x49')]=function(_0x318744,_0x24fd13){if(_0x318744[_0x9002('0x4a')]['id']){delete _0x318744[_0x9002('0x4a')]['id'];}return db[_0x9002('0x2a')][_0x9002('0x47')]({'where':{'id':_0x318744[_0x9002('0x44')]['id']}})[_0x9002('0x3f')](handleEntityNotFound(_0x24fd13,null))[_0x9002('0x3f')](saveUpdates(_0x318744[_0x9002('0x4a')],null))['then'](respondWithResult(_0x24fd13,null))[_0x9002('0x43')](handleError(_0x24fd13,null));};exports[_0x9002('0x24')]=function(_0x514f0e,_0x475824){return db[_0x9002('0x2a')][_0x9002('0x47')]({'where':{'id':_0x514f0e[_0x9002('0x44')]['id']}})['then'](handleEntityNotFound(_0x475824,null))[_0x9002('0x3f')](removeEntity(_0x475824,null))[_0x9002('0x43')](handleError(_0x475824,null));};
\ No newline at end of file
+var _0x01f2=['findAll','catch','show','params','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','map','AnalyticTreeReport','rawAttributes','fieldName','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','sort','pick','where','type','VIRTUAL','merge','options','include'];(function(_0x5d9f5c,_0x189d90){var _0x171fba=function(_0x136011){while(--_0x136011){_0x5d9f5c['push'](_0x5d9f5c['shift']());}};_0x171fba(++_0x189d90);}(_0x01f2,0x1b6));var _0x201f=function(_0x9c2ba2,_0x29a8d){_0x9c2ba2=_0x9c2ba2-0x0;var _0xdc1a33=_0x01f2[_0x9c2ba2];return _0xdc1a33;};'use strict';var emlformat=require(_0x201f('0x0'));var rimraf=require(_0x201f('0x1'));var zipdir=require(_0x201f('0x2'));var jsonpatch=require(_0x201f('0x3'));var rp=require(_0x201f('0x4'));var moment=require(_0x201f('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x201f('0x6'));var util=require(_0x201f('0x7'));var path=require(_0x201f('0x8'));var sox=require(_0x201f('0x9'));var csv=require(_0x201f('0xa'));var ejs=require(_0x201f('0xb'));var fs=require('fs');var fs_extra=require(_0x201f('0xc'));var _=require(_0x201f('0xd'));var squel=require(_0x201f('0xe'));var crypto=require(_0x201f('0xf'));var jsforce=require(_0x201f('0x10'));var deskjs=require(_0x201f('0x11'));var toCsv=require(_0x201f('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x201f('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x201f('0x13'));var as=require(_0x201f('0x14'));var hardwareService=require(_0x201f('0x15'));var logger=require('../../config/logger')(_0x201f('0x16'));var utils=require(_0x201f('0x17'));var config=require(_0x201f('0x18'));var licenseUtil=require(_0x201f('0x19'));var db=require(_0x201f('0x1a'))['db'];function respondWithStatusCode(_0x22e7a8,_0x18bb6b){_0x18bb6b=_0x18bb6b||0xcc;return function(_0x183fbb){if(_0x183fbb){return _0x22e7a8['sendStatus'](_0x18bb6b);}return _0x22e7a8[_0x201f('0x1b')](_0x18bb6b)[_0x201f('0x1c')]();};}function respondWithResult(_0xf366d4,_0x38a699){_0x38a699=_0x38a699||0xc8;return function(_0x233e37){if(_0x233e37){return _0xf366d4[_0x201f('0x1b')](_0x38a699)[_0x201f('0x1d')](_0x233e37);}};}function respondWithFilteredResult(_0x12abd9,_0x1845e2){return function(_0x3fe65d){if(_0x3fe65d){var _0x2388d0=typeof _0x1845e2[_0x201f('0x1e')]==='undefined'&&typeof _0x1845e2[_0x201f('0x1f')]===_0x201f('0x20');var _0x17e9b4=_0x3fe65d['count'];var _0x13d4af=_0x2388d0?0x0:_0x1845e2[_0x201f('0x1e')];var _0x288f80=_0x2388d0?_0x3fe65d[_0x201f('0x21')]:_0x1845e2[_0x201f('0x1e')]+_0x1845e2['limit'];var _0x3ac91c;if(_0x288f80>=_0x17e9b4){_0x288f80=_0x17e9b4;_0x3ac91c=0xc8;}else{_0x3ac91c=0xce;}_0x12abd9[_0x201f('0x1b')](_0x3ac91c);return _0x12abd9[_0x201f('0x22')](_0x201f('0x23'),_0x13d4af+'-'+_0x288f80+'/'+_0x17e9b4)[_0x201f('0x1d')](_0x3fe65d);}return null;};}function patchUpdates(_0x493cd8){return function(_0x45fd4){try{jsonpatch[_0x201f('0x24')](_0x45fd4,_0x493cd8,!![]);}catch(_0x2e8602){return BPromise[_0x201f('0x25')](_0x2e8602);}return _0x45fd4[_0x201f('0x26')]();};}function saveUpdates(_0x40cacd,_0x4e16ae){return function(_0x41ace0){if(_0x41ace0){return _0x41ace0[_0x201f('0x27')](_0x40cacd)[_0x201f('0x28')](function(_0x116002){return _0x116002;});}return null;};}function removeEntity(_0x7008ff,_0x577ad5){return function(_0xa62b3c){if(_0xa62b3c){return _0xa62b3c[_0x201f('0x29')]()[_0x201f('0x28')](function(){_0x7008ff[_0x201f('0x1b')](0xcc)[_0x201f('0x1c')]();});}};}function handleEntityNotFound(_0x40de20,_0xb006d4){return function(_0x24f542){if(!_0x24f542){_0x40de20[_0x201f('0x2a')](0x194);}return _0x24f542;};}function handleError(_0x2f6154,_0x5a00d7){_0x5a00d7=_0x5a00d7||0x1f4;return function(_0x38260c){logger[_0x201f('0x2b')](_0x38260c[_0x201f('0x2c')]);if(_0x38260c[_0x201f('0x2d')]){delete _0x38260c[_0x201f('0x2d')];}_0x2f6154[_0x201f('0x1b')](_0x5a00d7)['send'](_0x38260c);};}exports['index']=function(_0xfef025,_0x3ecd26){var _0x16acc2={},_0x417d47={},_0x48923f={'count':0x0,'rows':[]};var _0x427094=_[_0x201f('0x2e')](db[_0x201f('0x2f')][_0x201f('0x30')],function(_0x536401){return{'name':_0x536401[_0x201f('0x31')],'type':_0x536401['type']['key']};});_0x417d47[_0x201f('0x32')]=_[_0x201f('0x2e')](_0x427094,_0x201f('0x2d'));_0x417d47['query']=_[_0x201f('0x33')](_0xfef025[_0x201f('0x34')]);_0x417d47['filters']=_[_0x201f('0x35')](_0x417d47[_0x201f('0x32')],_0x417d47[_0x201f('0x34')]);_0x16acc2[_0x201f('0x36')]=_[_0x201f('0x35')](_0x417d47['model'],qs[_0x201f('0x37')](_0xfef025[_0x201f('0x34')][_0x201f('0x37')]));_0x16acc2[_0x201f('0x36')]=_0x16acc2[_0x201f('0x36')][_0x201f('0x38')]?_0x16acc2[_0x201f('0x36')]:_0x417d47[_0x201f('0x32')];if(!_0xfef025[_0x201f('0x34')][_0x201f('0x39')]('nolimit')){_0x16acc2[_0x201f('0x1f')]=qs[_0x201f('0x1f')](_0xfef025[_0x201f('0x34')]['limit']);_0x16acc2['offset']=qs[_0x201f('0x1e')](_0xfef025[_0x201f('0x34')][_0x201f('0x1e')]);}_0x16acc2['order']=qs['sort'](_0xfef025['query'][_0x201f('0x3a')]);_0x16acc2['where']=qs['filters'](_[_0x201f('0x3b')](_0xfef025['query'],_0x417d47['filters']),_0x427094);if(_0xfef025[_0x201f('0x34')]['filter']){_0x16acc2[_0x201f('0x3c')]=_['merge'](_0x16acc2[_0x201f('0x3c')],{'$or':_[_0x201f('0x2e')](_0x427094,function(_0x3d7759){if(_0x3d7759[_0x201f('0x3d')]!==_0x201f('0x3e')){var _0x3356a9={};_0x3356a9[_0x3d7759[_0x201f('0x2d')]]={'$like':'%'+_0xfef025[_0x201f('0x34')]['filter']+'%'};return _0x3356a9;}})});}_0x16acc2=_[_0x201f('0x3f')]({},_0x16acc2,_0xfef025[_0x201f('0x40')]);var _0x513745={'where':_0x16acc2[_0x201f('0x3c')]};return db[_0x201f('0x2f')][_0x201f('0x21')](_0x513745)[_0x201f('0x28')](function(_0x35078c){_0x48923f[_0x201f('0x21')]=_0x35078c;if(_0xfef025['query']['includeAll']){_0x16acc2[_0x201f('0x41')]=[{'all':!![]}];}return db[_0x201f('0x2f')][_0x201f('0x42')](_0x16acc2);})['then'](function(_0x474fa3){_0x48923f['rows']=_0x474fa3;return _0x48923f;})[_0x201f('0x28')](respondWithFilteredResult(_0x3ecd26,_0x16acc2))[_0x201f('0x43')](handleError(_0x3ecd26,null));};exports[_0x201f('0x44')]=function(_0x125111,_0x37efd2){var _0xead4c4={'raw':!![],'where':{'id':_0x125111[_0x201f('0x45')]['id']}},_0x3c1635={};_0x3c1635[_0x201f('0x32')]=_[_0x201f('0x33')](db['AnalyticTreeReport'][_0x201f('0x30')]);_0x3c1635[_0x201f('0x34')]=_[_0x201f('0x33')](_0x125111[_0x201f('0x34')]);_0x3c1635['filters']=_[_0x201f('0x35')](_0x3c1635[_0x201f('0x32')],_0x3c1635[_0x201f('0x34')]);_0xead4c4[_0x201f('0x36')]=_[_0x201f('0x35')](_0x3c1635[_0x201f('0x32')],qs[_0x201f('0x37')](_0x125111[_0x201f('0x34')]['fields']));_0xead4c4[_0x201f('0x36')]=_0xead4c4['attributes']['length']?_0xead4c4[_0x201f('0x36')]:_0x3c1635[_0x201f('0x32')];if(_0x125111[_0x201f('0x34')]['includeAll']){_0xead4c4[_0x201f('0x41')]=[{'all':!![]}];}_0xead4c4=_[_0x201f('0x3f')]({},_0xead4c4,_0x125111[_0x201f('0x40')]);return db['AnalyticTreeReport']['find'](_0xead4c4)['then'](handleEntityNotFound(_0x37efd2,null))[_0x201f('0x28')](respondWithResult(_0x37efd2,null))[_0x201f('0x43')](handleError(_0x37efd2,null));};exports['create']=function(_0x3d5420,_0x3e3985){return db[_0x201f('0x2f')]['create'](_0x3d5420[_0x201f('0x46')],{})[_0x201f('0x28')](respondWithResult(_0x3e3985,0xc9))['catch'](handleError(_0x3e3985,null));};exports[_0x201f('0x27')]=function(_0x128440,_0x4356e7){if(_0x128440[_0x201f('0x46')]['id']){delete _0x128440[_0x201f('0x46')]['id'];}return db[_0x201f('0x2f')][_0x201f('0x47')]({'where':{'id':_0x128440[_0x201f('0x45')]['id']}})[_0x201f('0x28')](handleEntityNotFound(_0x4356e7,null))[_0x201f('0x28')](saveUpdates(_0x128440['body'],null))[_0x201f('0x28')](respondWithResult(_0x4356e7,null))[_0x201f('0x43')](handleError(_0x4356e7,null));};exports[_0x201f('0x29')]=function(_0x458214,_0xec72d9){return db[_0x201f('0x2f')][_0x201f('0x47')]({'where':{'id':_0x458214['params']['id']}})[_0x201f('0x28')](handleEntityNotFound(_0xec72d9,null))['then'](removeEntity(_0xec72d9,null))[_0x201f('0x43')](handleError(_0xec72d9,null));};
\ No newline at end of file
index d8f6de3..b5d0f45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1df1=['exports','lodash','util','api','request-promise','path','rimraf','./analyticTreeReport.attributes'];(function(_0xae7c2f,_0xf31e04){var _0x5d7001=function(_0x4eeadb){while(--_0x4eeadb){_0xae7c2f['push'](_0xae7c2f['shift']());}};_0x5d7001(++_0xf31e04);}(_0x1df1,0x1e9));var _0x11df=function(_0x183b90,_0x2c7378){_0x183b90=_0x183b90-0x0;var _0x5b34f5=_0x1df1[_0x183b90];return _0x5b34f5;};'use strict';var _=require(_0x11df('0x0'));var util=require(_0x11df('0x1'));var logger=require('../../config/logger')(_0x11df('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x11df('0x3'));var fs=require('fs');var path=require(_0x11df('0x4'));var rimraf=require(_0x11df('0x5'));var config=require('../../config/environment');var attributes=require(_0x11df('0x6'));module[_0x11df('0x7')]=function(_0x1e6560,_0x3e1af8){return _0x1e6560['define']('AnalyticTreeReport',attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc7d8=['AnalyticTreeReport','analytics_report_trees','lodash','util','api','moment','bluebird','path','../../config/environment','./analyticTreeReport.attributes','define'];(function(_0x3ba5a4,_0x1ab3a2){var _0x361851=function(_0x2711bb){while(--_0x2711bb){_0x3ba5a4['push'](_0x3ba5a4['shift']());}};_0x361851(++_0x1ab3a2);}(_0xc7d8,0xa7));var _0x8c7d=function(_0x3eaa82,_0x409342){_0x3eaa82=_0x3eaa82-0x0;var _0x39b86e=_0xc7d8[_0x3eaa82];return _0x39b86e;};'use strict';var _=require(_0x8c7d('0x0'));var util=require(_0x8c7d('0x1'));var logger=require('../../config/logger')(_0x8c7d('0x2'));var moment=require(_0x8c7d('0x3'));var BPromise=require(_0x8c7d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8c7d('0x5'));var rimraf=require('rimraf');var config=require(_0x8c7d('0x6'));var attributes=require(_0x8c7d('0x7'));module['exports']=function(_0x2bed33,_0x2250c5){return _0x2bed33[_0x8c7d('0x8')](_0x8c7d('0x9'),attributes,{'tableName':_0x8c7d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 85cd2bc..263ed5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x332a92,_0x38e128){var _0x5a9727=function(_0xf2f8af){while(--_0xf2f8af){_0x332a92['push'](_0x332a92['shift']());}};_0x5a9727(++_0x38e128);}(_0xdb28,0x106));var _0x8db2=function(_0x32c7ee,_0x30efcd){_0x32c7ee=_0x32c7ee-0x0;var _0x2d89c3=_0xdb28[_0x32c7ee];return _0x2d89c3;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
+var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x55738f,_0x595b6f){var _0x5f40b8=function(_0x390ee8){while(--_0x390ee8){_0x55738f['push'](_0x55738f['shift']());}};_0x5f40b8(++_0x595b6f);}(_0xadb5,0xad));var _0x5adb=function(_0x1defc4,_0x41c93a){_0x1defc4=_0x1defc4-0x0;var _0x471275=_0xadb5[_0x1defc4];return _0x471275;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
index 050008a..2c5e08e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16f2=['destroy','exports','multer','util','path','fs-extra','../../components/interaction/service','isAuthenticated','index','get','/:id','show','post','put'];(function(_0x3d1966,_0x4c6d23){var _0x2a57fc=function(_0x27de91){while(--_0x27de91){_0x3d1966['push'](_0x3d1966['shift']());}};_0x2a57fc(++_0x4c6d23);}(_0x16f2,0x152));var _0x216f=function(_0x3a7722,_0x5d6f9f){_0x3a7722=_0x3a7722-0x0;var _0x2755aa=_0x16f2[_0x3a7722];return _0x2755aa;};'use strict';var multer=require(_0x216f('0x0'));var util=require(_0x216f('0x1'));var path=require(_0x216f('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x216f('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x216f('0x4'));var config=require('../../config/environment');var controller=require('./analyticTreeReport.controller');router['get']('/',auth[_0x216f('0x5')](),controller[_0x216f('0x6')]);router[_0x216f('0x7')](_0x216f('0x8'),auth[_0x216f('0x5')](),controller[_0x216f('0x9')]);router[_0x216f('0xa')]('/',auth['isAuthenticated'](),controller['create']);router[_0x216f('0xb')]('/:id',auth[_0x216f('0x5')](),controller['update']);router['delete']('/:id',auth[_0x216f('0x5')](),controller[_0x216f('0xc')]);module[_0x216f('0xd')]=router;
\ No newline at end of file
+var _0x9918=['path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','isAuthenticated','index','show','post','create','put','/:id','update','exports','multer','util'];(function(_0x53cf8e,_0x3d290f){var _0x459197=function(_0x67073c){while(--_0x67073c){_0x53cf8e['push'](_0x53cf8e['shift']());}};_0x459197(++_0x3d290f);}(_0x9918,0x166));var _0x8991=function(_0x25a92f,_0x352bf0){_0x25a92f=_0x25a92f-0x0;var _0x1e43fe=_0x9918[_0x25a92f];return _0x1e43fe;};'use strict';var multer=require(_0x8991('0x0'));var util=require(_0x8991('0x1'));var path=require(_0x8991('0x2'));var timeout=require('connect-timeout');var express=require(_0x8991('0x3'));var router=express[_0x8991('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8991('0x5'));var interaction=require(_0x8991('0x6'));var config=require(_0x8991('0x7'));var controller=require(_0x8991('0x8'));router['get']('/',auth[_0x8991('0x9')](),controller[_0x8991('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x8991('0xb')]);router[_0x8991('0xc')]('/',auth[_0x8991('0x9')](),controller[_0x8991('0xd')]);router[_0x8991('0xe')](_0x8991('0xf'),auth['isAuthenticated'](),controller[_0x8991('0x10')]);router['delete'](_0x8991('0xf'),auth[_0x8991('0x9')](),controller['destroy']);module[_0x8991('0x11')]=router;
\ No newline at end of file
index 5fab059..08275ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6334=['exports','STRING','sequelize'];(function(_0x4cd690,_0x4797cc){var _0x4a74a9=function(_0x4cbbc5){while(--_0x4cbbc5){_0x4cd690['push'](_0x4cd690['shift']());}};_0x4a74a9(++_0x4797cc);}(_0x6334,0x119));var _0x4633=function(_0x285a14,_0x394a27){_0x285a14=_0x285a14-0x0;var _0x3430cc=_0x6334[_0x285a14];return _0x3430cc;};'use strict';var Sequelize=require(_0x4633('0x0'));module[_0x4633('0x1')]={'name':{'type':Sequelize[_0x4633('0x2')]},'basename':{'type':Sequelize[_0x4633('0x2')]},'type':{'type':Sequelize[_0x4633('0x2')]}};
\ No newline at end of file
+var _0xcb57=['exports','STRING','sequelize'];(function(_0x522198,_0x215b8e){var _0x24917b=function(_0x3cef6c){while(--_0x3cef6c){_0x522198['push'](_0x522198['shift']());}};_0x24917b(++_0x215b8e);}(_0xcb57,0xa1));var _0x7cb5=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0xcb57[_0x4c12ec];return _0x3ae42c;};'use strict';var Sequelize=require(_0x7cb5('0x0'));module[_0x7cb5('0x1')]={'name':{'type':Sequelize['STRING']},'basename':{'type':Sequelize[_0x7cb5('0x2')]},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
index c109748..c4c1b02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88aa=['params','rawAttributes','find','clone','includeAll','get','omit','createdAt','updatedAt','body','create','basename','filename','file','mimetype','findOne','join','root','offline-chat/','download','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','save','update','then','error','stack','name','map','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','include','Attachment','rows','catch','show'];(function(_0x2cc594,_0x4d727b){var _0x4abff7=function(_0x22b01d){while(--_0x22b01d){_0x2cc594['push'](_0x2cc594['shift']());}};_0x4abff7(++_0x4d727b);}(_0x88aa,0xb4));var _0xa88a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x88aa[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa88a('0x0'));var rp=require(_0xa88a('0x1'));var moment=require(_0xa88a('0x2'));var BPromise=require(_0xa88a('0x3'));var Mustache=require(_0xa88a('0x4'));var util=require(_0xa88a('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xa88a('0x6'));var ejs=require(_0xa88a('0x7'));var fs=require('fs');var fs_extra=require(_0xa88a('0x8'));var _=require(_0xa88a('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa88a('0xa'));var deskjs=require(_0xa88a('0xb'));var toCsv=require(_0xa88a('0x6'));var querystring=require(_0xa88a('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa88a('0xd'));var qs=require(_0xa88a('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa88a('0xf'));var logger=require(_0xa88a('0x10'))(_0xa88a('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa88a('0x12'));var db=require(_0xa88a('0x13'))['db'];function respondWithStatusCode(_0x55cfdd,_0x54f568){_0x54f568=_0x54f568||0xcc;return function(_0xebaf81){if(_0xebaf81){return _0x55cfdd[_0xa88a('0x14')](_0x54f568);}return _0x55cfdd['status'](_0x54f568)[_0xa88a('0x15')]();};}function respondWithResult(_0x3fe2b3,_0x2b1722){_0x2b1722=_0x2b1722||0xc8;return function(_0x1ab3ea){if(_0x1ab3ea){return _0x3fe2b3[_0xa88a('0x16')](_0x2b1722)[_0xa88a('0x17')](_0x1ab3ea);}};}function respondWithFilteredResult(_0x3f98ec,_0x568a50){return function(_0x3663c5){if(_0x3663c5){var _0x52529a=typeof _0x568a50['offset']===_0xa88a('0x18')&&typeof _0x568a50[_0xa88a('0x19')]===_0xa88a('0x18');var _0x8ddaec=_0x3663c5['count'];var _0x3c0ff4=_0x52529a?0x0:_0x568a50[_0xa88a('0x1a')];var _0x2b1e46=_0x52529a?_0x3663c5[_0xa88a('0x1b')]:_0x568a50[_0xa88a('0x1a')]+_0x568a50[_0xa88a('0x19')];var _0x1ebd74;if(_0x2b1e46>=_0x8ddaec){_0x2b1e46=_0x8ddaec;_0x1ebd74=0xc8;}else{_0x1ebd74=0xce;}_0x3f98ec[_0xa88a('0x16')](_0x1ebd74);return _0x3f98ec['set']('Content-Range',_0x3c0ff4+'-'+_0x2b1e46+'/'+_0x8ddaec)[_0xa88a('0x17')](_0x3663c5);}return null;};}function patchUpdates(_0x2cf23a){return function(_0x360ae1){try{jsonpatch['apply'](_0x360ae1,_0x2cf23a,!![]);}catch(_0x4cd6c7){return BPromise['reject'](_0x4cd6c7);}return _0x360ae1[_0xa88a('0x1c')]();};}function saveUpdates(_0xd2bced,_0x2fa62a){return function(_0x264fd3){if(_0x264fd3){return _0x264fd3[_0xa88a('0x1d')](_0xd2bced)[_0xa88a('0x1e')](function(_0x2363bf){return _0x2363bf;});}return null;};}function removeEntity(_0x40f948,_0x4287fb){return function(_0x3f3a0a){if(_0x3f3a0a){return _0x3f3a0a['destroy']()[_0xa88a('0x1e')](function(){_0x40f948[_0xa88a('0x16')](0xcc)[_0xa88a('0x15')]();});}};}function handleEntityNotFound(_0x4e9d18,_0x56c39b){return function(_0x457c17){if(!_0x457c17){_0x4e9d18[_0xa88a('0x14')](0x194);}return _0x457c17;};}function handleError(_0x47951d,_0x49cd99){_0x49cd99=_0x49cd99||0x1f4;return function(_0x524cca){logger[_0xa88a('0x1f')](_0x524cca[_0xa88a('0x20')]);if(_0x524cca[_0xa88a('0x21')]){delete _0x524cca[_0xa88a('0x21')];}_0x47951d['status'](_0x49cd99)['send'](_0x524cca);};}exports['index']=function(_0x41f004,_0x1fa3dd){var _0x1d2d7b={},_0x394e9d={},_0x3c790e={'count':0x0,'rows':[]};var _0x568f33=_[_0xa88a('0x22')](db['Attachment']['rawAttributes'],function(_0x113832){return{'name':_0x113832[_0xa88a('0x23')],'type':_0x113832[_0xa88a('0x24')][_0xa88a('0x25')]};});_0x394e9d[_0xa88a('0x26')]=_['map'](_0x568f33,'name');_0x394e9d['query']=_[_0xa88a('0x27')](_0x41f004[_0xa88a('0x28')]);_0x394e9d[_0xa88a('0x29')]=_[_0xa88a('0x2a')](_0x394e9d[_0xa88a('0x26')],_0x394e9d[_0xa88a('0x28')]);_0x1d2d7b[_0xa88a('0x2b')]=_['intersection'](_0x394e9d[_0xa88a('0x26')],qs[_0xa88a('0x2c')](_0x41f004[_0xa88a('0x28')][_0xa88a('0x2c')]));_0x1d2d7b[_0xa88a('0x2b')]=_0x1d2d7b[_0xa88a('0x2b')][_0xa88a('0x2d')]?_0x1d2d7b['attributes']:_0x394e9d['model'];if(!_0x41f004[_0xa88a('0x28')][_0xa88a('0x2e')]('nolimit')){_0x1d2d7b[_0xa88a('0x19')]=qs[_0xa88a('0x19')](_0x41f004['query'][_0xa88a('0x19')]);_0x1d2d7b[_0xa88a('0x1a')]=qs['offset'](_0x41f004[_0xa88a('0x28')]['offset']);}_0x1d2d7b[_0xa88a('0x2f')]=qs[_0xa88a('0x30')](_0x41f004[_0xa88a('0x28')][_0xa88a('0x30')]);_0x1d2d7b[_0xa88a('0x31')]=qs[_0xa88a('0x29')](_[_0xa88a('0x32')](_0x41f004[_0xa88a('0x28')],_0x394e9d[_0xa88a('0x29')]),_0x568f33);if(_0x41f004[_0xa88a('0x28')][_0xa88a('0x33')]){_0x1d2d7b[_0xa88a('0x31')]=_[_0xa88a('0x34')](_0x1d2d7b[_0xa88a('0x31')],{'$or':_[_0xa88a('0x22')](_0x568f33,function(_0x1c609f){if(_0x1c609f[_0xa88a('0x24')]!==_0xa88a('0x35')){var _0x185317={};_0x185317[_0x1c609f[_0xa88a('0x21')]]={'$like':'%'+_0x41f004[_0xa88a('0x28')]['filter']+'%'};return _0x185317;}})});}_0x1d2d7b=_[_0xa88a('0x34')]({},_0x1d2d7b,_0x41f004[_0xa88a('0x36')]);var _0x302234={'where':_0x1d2d7b[_0xa88a('0x31')]};return db['Attachment'][_0xa88a('0x1b')](_0x302234)[_0xa88a('0x1e')](function(_0x25a2db){_0x3c790e[_0xa88a('0x1b')]=_0x25a2db;if(_0x41f004[_0xa88a('0x28')]['includeAll']){_0x1d2d7b[_0xa88a('0x37')]=[{'all':!![]}];}return db[_0xa88a('0x38')]['findAll'](_0x1d2d7b);})['then'](function(_0x4e59ba){_0x3c790e[_0xa88a('0x39')]=_0x4e59ba;return _0x3c790e;})['then'](respondWithFilteredResult(_0x1fa3dd,_0x1d2d7b))[_0xa88a('0x3a')](handleError(_0x1fa3dd,null));};exports[_0xa88a('0x3b')]=function(_0x38bfed,_0x574840){var _0x161b6d={'raw':!![],'where':{'id':_0x38bfed[_0xa88a('0x3c')]['id']}},_0x30ea05={};_0x30ea05['model']=_[_0xa88a('0x27')](db[_0xa88a('0x38')][_0xa88a('0x3d')]);_0x30ea05[_0xa88a('0x28')]=_['keys'](_0x38bfed[_0xa88a('0x28')]);_0x30ea05[_0xa88a('0x29')]=_[_0xa88a('0x2a')](_0x30ea05['model'],_0x30ea05[_0xa88a('0x28')]);_0x161b6d[_0xa88a('0x2b')]=_[_0xa88a('0x2a')](_0x30ea05[_0xa88a('0x26')],qs['fields'](_0x38bfed[_0xa88a('0x28')]['fields']));_0x161b6d[_0xa88a('0x2b')]=_0x161b6d[_0xa88a('0x2b')]['length']?_0x161b6d[_0xa88a('0x2b')]:_0x30ea05[_0xa88a('0x26')];if(_0x38bfed[_0xa88a('0x28')]['includeAll']){_0x161b6d[_0xa88a('0x37')]=[{'all':!![]}];}_0x161b6d=_[_0xa88a('0x34')]({},_0x161b6d,_0x38bfed[_0xa88a('0x36')]);return db[_0xa88a('0x38')][_0xa88a('0x3e')](_0x161b6d)[_0xa88a('0x1e')](handleEntityNotFound(_0x574840,null))[_0xa88a('0x1e')](respondWithResult(_0x574840,null))[_0xa88a('0x3a')](handleError(_0x574840,null));};exports[_0xa88a('0x3f')]=function(_0x2ee0f6,_0x45ad6e){var _0x5512fc={'where':{'id':_0x2ee0f6[_0xa88a('0x3c')]['id']}},_0x15c0fa={};_0x15c0fa['model']=_['keys'](db[_0xa88a('0x38')][_0xa88a('0x3d')]);_0x5512fc[_0xa88a('0x2b')]=_['intersection'](_0x15c0fa[_0xa88a('0x26')],qs['fields'](_0x2ee0f6[_0xa88a('0x28')][_0xa88a('0x2c')]));_0x5512fc[_0xa88a('0x2b')]=_0x5512fc['attributes'][_0xa88a('0x2d')]?_0x5512fc[_0xa88a('0x2b')]:_0x15c0fa[_0xa88a('0x26')];if(_0x2ee0f6['query'][_0xa88a('0x40')]){_0x5512fc['include']=[{'all':!![]}];}_0x5512fc=_[_0xa88a('0x34')]({},_0x5512fc,_0x2ee0f6[_0xa88a('0x36')]);return db[_0xa88a('0x38')]['find'](_0x5512fc)[_0xa88a('0x1e')](handleEntityNotFound(_0x45ad6e,null))[_0xa88a('0x1e')](function(_0x2bc052){if(_0x2bc052){var _0x5a0222=_0x2bc052[_0xa88a('0x41')]({'plain':!![]});_0x5a0222=qs[_0xa88a('0x42')](_0x5a0222,['id',_0xa88a('0x43'),_0xa88a('0x44')]);_0x2ee0f6[_0xa88a('0x45')]=_[_0xa88a('0x42')](_0x2ee0f6[_0xa88a('0x45')],['id',_0xa88a('0x43'),_0xa88a('0x44')]);return db[_0xa88a('0x38')][_0xa88a('0x46')](_['merge'](_0x5a0222,_0x2ee0f6['body']),{'include':_0x2ee0f6[_0xa88a('0x28')][_0xa88a('0x40')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x45ad6e,0xc9))[_0xa88a('0x3a')](handleError(_0x45ad6e,null));};exports[_0xa88a('0x1d')]=function(_0x2019dc,_0x4110df){if(_0x2019dc[_0xa88a('0x45')]['id']){delete _0x2019dc[_0xa88a('0x45')]['id'];}return db['Attachment'][_0xa88a('0x3e')]({'where':{'id':_0x2019dc[_0xa88a('0x3c')]['id']}})[_0xa88a('0x1e')](handleEntityNotFound(_0x4110df,null))['then'](saveUpdates(_0x2019dc['body'],null))['then'](respondWithResult(_0x4110df,null))[_0xa88a('0x3a')](handleError(_0x4110df,null));};exports['destroy']=function(_0x144840,_0x584d59){return db['Attachment']['find']({'where':{'id':_0x144840[_0xa88a('0x3c')]['id']}})[_0xa88a('0x1e')](handleEntityNotFound(_0x584d59,null))[_0xa88a('0x1e')](removeEntity(_0x584d59,null))[_0xa88a('0x3a')](handleError(_0x584d59,null));};exports[_0xa88a('0x46')]=function(_0x33563f,_0x57b46c,_0x298297){_0x33563f[_0xa88a('0x45')][_0xa88a('0x21')]=_0x33563f['file']['originalname'];_0x33563f[_0xa88a('0x45')][_0xa88a('0x47')]=_0x33563f['file'][_0xa88a('0x48')];_0x33563f[_0xa88a('0x45')][_0xa88a('0x24')]=_0x33563f[_0xa88a('0x49')][_0xa88a('0x4a')];return db['Attachment']['create'](_0x33563f['body'])['then'](respondWithResult(_0x57b46c,0xc9))[_0xa88a('0x3a')](handleError(_0x57b46c,null));};exports['download']=function(_0x529330,_0x58298b,_0x38aed3){return db['Attachment'][_0xa88a('0x4b')]({'where':{'id':_0x529330['params']['id']},'raw':!![]})[_0xa88a('0x1e')](handleEntityNotFound(_0x58298b,null))[_0xa88a('0x1e')](function(_0x5bbb84){if(_0x5bbb84){var _0x4dcf35=_0x5bbb84['ChatOfflineMessageId']!==null;var _0x3d48d8=path[_0xa88a('0x4c')](config[_0xa88a('0x4d')],'server/files/attachments/');if(_0x4dcf35){_0x3d48d8=path['join'](_0x3d48d8,_0xa88a('0x4e'));}var _0x129a3c=path[_0xa88a('0x4c')](_0x3d48d8,_0x5bbb84[_0xa88a('0x47')]);return _0x58298b[_0xa88a('0x4f')](_0x129a3c);}})[_0xa88a('0x3a')](handleError(_0x58298b,null));};
\ No newline at end of file
+var _0x22fb=['error','stack','name','send','index','map','Attachment','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','count','findAll','then','rows','catch','show','params','rawAttributes','includeAll','include','clone','find','get','omit','updatedAt','body','create','file','originalname','basename','filename','download','findOne','root','server/files/attachments/','offline-chat/','join','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','limit','Content-Range','json','apply','reject','update','destroy'];(function(_0x2805d4,_0x13d07c){var _0x45cfe4=function(_0x378dc7){while(--_0x378dc7){_0x2805d4['push'](_0x2805d4['shift']());}};_0x45cfe4(++_0x13d07c);}(_0x22fb,0xec));var _0xb22f=function(_0x33ad71,_0x589fe2){_0x33ad71=_0x33ad71-0x0;var _0x4a441e=_0x22fb[_0x33ad71];return _0x4a441e;};'use strict';var emlformat=require(_0xb22f('0x0'));var rimraf=require(_0xb22f('0x1'));var zipdir=require(_0xb22f('0x2'));var jsonpatch=require(_0xb22f('0x3'));var rp=require('request-promise');var moment=require(_0xb22f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb22f('0x5'));var util=require(_0xb22f('0x6'));var path=require(_0xb22f('0x7'));var sox=require(_0xb22f('0x8'));var csv=require(_0xb22f('0x9'));var ejs=require(_0xb22f('0xa'));var fs=require('fs');var fs_extra=require(_0xb22f('0xb'));var _=require('lodash');var squel=require(_0xb22f('0xc'));var crypto=require(_0xb22f('0xd'));var jsforce=require(_0xb22f('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb22f('0xf'));var Papa=require('papaparse');var Redis=require(_0xb22f('0x10'));var authService=require(_0xb22f('0x11'));var qs=require(_0xb22f('0x12'));var as=require(_0xb22f('0x13'));var hardwareService=require(_0xb22f('0x14'));var logger=require(_0xb22f('0x15'))('api');var utils=require(_0xb22f('0x16'));var config=require(_0xb22f('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xb22f('0x18'))['db'];function respondWithStatusCode(_0x382439,_0x56a025){_0x56a025=_0x56a025||0xcc;return function(_0x49a37e){if(_0x49a37e){return _0x382439[_0xb22f('0x19')](_0x56a025);}return _0x382439['status'](_0x56a025)[_0xb22f('0x1a')]();};}function respondWithResult(_0x1dc15b,_0x1adf54){_0x1adf54=_0x1adf54||0xc8;return function(_0xdad51a){if(_0xdad51a){return _0x1dc15b[_0xb22f('0x1b')](_0x1adf54)['json'](_0xdad51a);}};}function respondWithFilteredResult(_0x2e6473,_0x45dae1){return function(_0x378e0d){if(_0x378e0d){var _0x5de4f8=typeof _0x45dae1[_0xb22f('0x1c')]===_0xb22f('0x1d')&&typeof _0x45dae1[_0xb22f('0x1e')]===_0xb22f('0x1d');var _0x3dac78=_0x378e0d['count'];var _0x1ca302=_0x5de4f8?0x0:_0x45dae1[_0xb22f('0x1c')];var _0xcc16c9=_0x5de4f8?_0x378e0d['count']:_0x45dae1[_0xb22f('0x1c')]+_0x45dae1[_0xb22f('0x1e')];var _0x289d83;if(_0xcc16c9>=_0x3dac78){_0xcc16c9=_0x3dac78;_0x289d83=0xc8;}else{_0x289d83=0xce;}_0x2e6473[_0xb22f('0x1b')](_0x289d83);return _0x2e6473['set'](_0xb22f('0x1f'),_0x1ca302+'-'+_0xcc16c9+'/'+_0x3dac78)[_0xb22f('0x20')](_0x378e0d);}return null;};}function patchUpdates(_0xdcd6e3){return function(_0x3392d9){try{jsonpatch[_0xb22f('0x21')](_0x3392d9,_0xdcd6e3,!![]);}catch(_0x4e68f8){return BPromise[_0xb22f('0x22')](_0x4e68f8);}return _0x3392d9['save']();};}function saveUpdates(_0x2c5b9c,_0x207990){return function(_0x32f76e){if(_0x32f76e){return _0x32f76e[_0xb22f('0x23')](_0x2c5b9c)['then'](function(_0x528cd8){return _0x528cd8;});}return null;};}function removeEntity(_0x1ebef2,_0x5b81da){return function(_0x3bea88){if(_0x3bea88){return _0x3bea88[_0xb22f('0x24')]()['then'](function(){_0x1ebef2['status'](0xcc)[_0xb22f('0x1a')]();});}};}function handleEntityNotFound(_0x2e45a5,_0xfab598){return function(_0x21aeec){if(!_0x21aeec){_0x2e45a5['sendStatus'](0x194);}return _0x21aeec;};}function handleError(_0x22f900,_0x135f95){_0x135f95=_0x135f95||0x1f4;return function(_0x35fbac){logger[_0xb22f('0x25')](_0x35fbac[_0xb22f('0x26')]);if(_0x35fbac[_0xb22f('0x27')]){delete _0x35fbac[_0xb22f('0x27')];}_0x22f900['status'](_0x135f95)[_0xb22f('0x28')](_0x35fbac);};}exports[_0xb22f('0x29')]=function(_0xf0bc2,_0x26cce2){var _0x3b470f={},_0x23b74e={},_0x411e9f={'count':0x0,'rows':[]};var _0xc3baab=_[_0xb22f('0x2a')](db[_0xb22f('0x2b')]['rawAttributes'],function(_0x1c93be){return{'name':_0x1c93be[_0xb22f('0x2c')],'type':_0x1c93be[_0xb22f('0x2d')][_0xb22f('0x2e')]};});_0x23b74e[_0xb22f('0x2f')]=_[_0xb22f('0x2a')](_0xc3baab,'name');_0x23b74e['query']=_[_0xb22f('0x30')](_0xf0bc2[_0xb22f('0x31')]);_0x23b74e[_0xb22f('0x32')]=_[_0xb22f('0x33')](_0x23b74e[_0xb22f('0x2f')],_0x23b74e['query']);_0x3b470f[_0xb22f('0x34')]=_[_0xb22f('0x33')](_0x23b74e[_0xb22f('0x2f')],qs[_0xb22f('0x35')](_0xf0bc2['query'][_0xb22f('0x35')]));_0x3b470f['attributes']=_0x3b470f['attributes'][_0xb22f('0x36')]?_0x3b470f['attributes']:_0x23b74e[_0xb22f('0x2f')];if(!_0xf0bc2[_0xb22f('0x31')][_0xb22f('0x37')](_0xb22f('0x38'))){_0x3b470f[_0xb22f('0x1e')]=qs['limit'](_0xf0bc2['query'][_0xb22f('0x1e')]);_0x3b470f[_0xb22f('0x1c')]=qs[_0xb22f('0x1c')](_0xf0bc2[_0xb22f('0x31')][_0xb22f('0x1c')]);}_0x3b470f[_0xb22f('0x39')]=qs[_0xb22f('0x3a')](_0xf0bc2['query']['sort']);_0x3b470f[_0xb22f('0x3b')]=qs[_0xb22f('0x32')](_[_0xb22f('0x3c')](_0xf0bc2[_0xb22f('0x31')],_0x23b74e[_0xb22f('0x32')]),_0xc3baab);if(_0xf0bc2['query'][_0xb22f('0x3d')]){_0x3b470f[_0xb22f('0x3b')]=_[_0xb22f('0x3e')](_0x3b470f[_0xb22f('0x3b')],{'$or':_['map'](_0xc3baab,function(_0x9f85a3){if(_0x9f85a3[_0xb22f('0x2d')]!=='VIRTUAL'){var _0x443557={};_0x443557[_0x9f85a3[_0xb22f('0x27')]]={'$like':'%'+_0xf0bc2[_0xb22f('0x31')]['filter']+'%'};return _0x443557;}})});}_0x3b470f=_[_0xb22f('0x3e')]({},_0x3b470f,_0xf0bc2[_0xb22f('0x3f')]);var _0x107c7c={'where':_0x3b470f[_0xb22f('0x3b')]};return db[_0xb22f('0x2b')]['count'](_0x107c7c)['then'](function(_0x39d616){_0x411e9f[_0xb22f('0x40')]=_0x39d616;if(_0xf0bc2[_0xb22f('0x31')]['includeAll']){_0x3b470f['include']=[{'all':!![]}];}return db['Attachment'][_0xb22f('0x41')](_0x3b470f);})[_0xb22f('0x42')](function(_0x2199a2){_0x411e9f[_0xb22f('0x43')]=_0x2199a2;return _0x411e9f;})[_0xb22f('0x42')](respondWithFilteredResult(_0x26cce2,_0x3b470f))[_0xb22f('0x44')](handleError(_0x26cce2,null));};exports[_0xb22f('0x45')]=function(_0xde9c34,_0x232ef5){var _0x2a1c4d={'raw':!![],'where':{'id':_0xde9c34[_0xb22f('0x46')]['id']}},_0x58b6f5={};_0x58b6f5[_0xb22f('0x2f')]=_['keys'](db[_0xb22f('0x2b')][_0xb22f('0x47')]);_0x58b6f5[_0xb22f('0x31')]=_[_0xb22f('0x30')](_0xde9c34[_0xb22f('0x31')]);_0x58b6f5[_0xb22f('0x32')]=_[_0xb22f('0x33')](_0x58b6f5[_0xb22f('0x2f')],_0x58b6f5[_0xb22f('0x31')]);_0x2a1c4d['attributes']=_['intersection'](_0x58b6f5['model'],qs[_0xb22f('0x35')](_0xde9c34[_0xb22f('0x31')]['fields']));_0x2a1c4d['attributes']=_0x2a1c4d[_0xb22f('0x34')][_0xb22f('0x36')]?_0x2a1c4d[_0xb22f('0x34')]:_0x58b6f5['model'];if(_0xde9c34[_0xb22f('0x31')][_0xb22f('0x48')]){_0x2a1c4d[_0xb22f('0x49')]=[{'all':!![]}];}_0x2a1c4d=_[_0xb22f('0x3e')]({},_0x2a1c4d,_0xde9c34[_0xb22f('0x3f')]);return db['Attachment']['find'](_0x2a1c4d)[_0xb22f('0x42')](handleEntityNotFound(_0x232ef5,null))['then'](respondWithResult(_0x232ef5,null))['catch'](handleError(_0x232ef5,null));};exports[_0xb22f('0x4a')]=function(_0x1bea2b,_0x11072a){var _0x2bafeb={'where':{'id':_0x1bea2b[_0xb22f('0x46')]['id']}},_0x29b01f={};_0x29b01f['model']=_[_0xb22f('0x30')](db[_0xb22f('0x2b')][_0xb22f('0x47')]);_0x2bafeb[_0xb22f('0x34')]=_[_0xb22f('0x33')](_0x29b01f['model'],qs['fields'](_0x1bea2b['query'][_0xb22f('0x35')]));_0x2bafeb[_0xb22f('0x34')]=_0x2bafeb['attributes'][_0xb22f('0x36')]?_0x2bafeb[_0xb22f('0x34')]:_0x29b01f['model'];if(_0x1bea2b['query']['includeAll']){_0x2bafeb[_0xb22f('0x49')]=[{'all':!![]}];}_0x2bafeb=_[_0xb22f('0x3e')]({},_0x2bafeb,_0x1bea2b['options']);return db['Attachment'][_0xb22f('0x4b')](_0x2bafeb)[_0xb22f('0x42')](handleEntityNotFound(_0x11072a,null))['then'](function(_0x5e71c3){if(_0x5e71c3){var _0x34c812=_0x5e71c3[_0xb22f('0x4c')]({'plain':!![]});_0x34c812=qs[_0xb22f('0x4d')](_0x34c812,['id','createdAt',_0xb22f('0x4e')]);_0x1bea2b[_0xb22f('0x4f')]=_[_0xb22f('0x4d')](_0x1bea2b[_0xb22f('0x4f')],['id','createdAt',_0xb22f('0x4e')]);return db['Attachment'][_0xb22f('0x50')](_['merge'](_0x34c812,_0x1bea2b[_0xb22f('0x4f')]),{'include':_0x1bea2b['query'][_0xb22f('0x48')]?[{'all':!![]}]:undefined});}})[_0xb22f('0x42')](respondWithResult(_0x11072a,0xc9))[_0xb22f('0x44')](handleError(_0x11072a,null));};exports[_0xb22f('0x23')]=function(_0x47aca3,_0x330e11){if(_0x47aca3[_0xb22f('0x4f')]['id']){delete _0x47aca3[_0xb22f('0x4f')]['id'];}return db[_0xb22f('0x2b')][_0xb22f('0x4b')]({'where':{'id':_0x47aca3[_0xb22f('0x46')]['id']}})[_0xb22f('0x42')](handleEntityNotFound(_0x330e11,null))[_0xb22f('0x42')](saveUpdates(_0x47aca3[_0xb22f('0x4f')],null))[_0xb22f('0x42')](respondWithResult(_0x330e11,null))['catch'](handleError(_0x330e11,null));};exports[_0xb22f('0x24')]=function(_0x3653ff,_0x402174){return db[_0xb22f('0x2b')][_0xb22f('0x4b')]({'where':{'id':_0x3653ff['params']['id']}})[_0xb22f('0x42')](handleEntityNotFound(_0x402174,null))[_0xb22f('0x42')](removeEntity(_0x402174,null))[_0xb22f('0x44')](handleError(_0x402174,null));};exports[_0xb22f('0x50')]=function(_0x1abaf5,_0x53a11d,_0xfa3549){_0x1abaf5[_0xb22f('0x4f')][_0xb22f('0x27')]=_0x1abaf5[_0xb22f('0x51')][_0xb22f('0x52')];_0x1abaf5[_0xb22f('0x4f')][_0xb22f('0x53')]=_0x1abaf5[_0xb22f('0x51')][_0xb22f('0x54')];_0x1abaf5['body'][_0xb22f('0x2d')]=_0x1abaf5[_0xb22f('0x51')]['mimetype'];return db[_0xb22f('0x2b')][_0xb22f('0x50')](_0x1abaf5['body'])[_0xb22f('0x42')](respondWithResult(_0x53a11d,0xc9))[_0xb22f('0x44')](handleError(_0x53a11d,null));};exports[_0xb22f('0x55')]=function(_0x4fa823,_0x5dbaa9,_0x1c9672){return db[_0xb22f('0x2b')][_0xb22f('0x56')]({'where':{'id':_0x4fa823['params']['id']},'raw':!![]})[_0xb22f('0x42')](handleEntityNotFound(_0x5dbaa9,null))[_0xb22f('0x42')](function(_0x20d52c){if(_0x20d52c){var _0x3cee8b=_0x20d52c['ChatOfflineMessageId']!==null;var _0x32d8bb=path['join'](config[_0xb22f('0x57')],_0xb22f('0x58'));if(_0x3cee8b){_0x32d8bb=path['join'](_0x32d8bb,_0xb22f('0x59'));}var _0x3e3ee7=path[_0xb22f('0x5a')](_0x32d8bb,_0x20d52c['basename']);return _0x5dbaa9['download'](_0x3e3ee7);}})['catch'](handleError(_0x5dbaa9,null));};
\ No newline at end of file
index d87d6de..07bf6a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x552c=['api','bluebird','request-promise','path','rimraf','../../config/environment','./attachment.attributes','exports','define','Attachment','util'];(function(_0xf70b9c,_0x3b8e10){var _0x3785f9=function(_0xdafe1b){while(--_0xdafe1b){_0xf70b9c['push'](_0xf70b9c['shift']());}};_0x3785f9(++_0x3b8e10);}(_0x552c,0xf1));var _0xc552=function(_0x566a4e,_0xeeb3f6){_0x566a4e=_0x566a4e-0x0;var _0x36d409=_0x552c[_0x566a4e];return _0x36d409;};'use strict';var _=require('lodash');var util=require(_0xc552('0x0'));var logger=require('../../config/logger')(_0xc552('0x1'));var moment=require('moment');var BPromise=require(_0xc552('0x2'));var rp=require(_0xc552('0x3'));var fs=require('fs');var path=require(_0xc552('0x4'));var rimraf=require(_0xc552('0x5'));var config=require(_0xc552('0x6'));var attributes=require(_0xc552('0x7'));module[_0xc552('0x8')]=function(_0x55ee81,_0x19b19e){return _0x55ee81[_0xc552('0x9')](_0xc552('0xa'),attributes,{'tableName':'attachments','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3cae=['request-promise','path','rimraf','exports','Attachment','attachments','lodash','util'];(function(_0x171d07,_0x59c974){var _0x135563=function(_0x2aea19){while(--_0x2aea19){_0x171d07['push'](_0x171d07['shift']());}};_0x135563(++_0x59c974);}(_0x3cae,0x116));var _0xe3ca=function(_0x480bc8,_0x1fac40){_0x480bc8=_0x480bc8-0x0;var _0x28c245=_0x3cae[_0x480bc8];return _0x28c245;};'use strict';var _=require(_0xe3ca('0x0'));var util=require(_0xe3ca('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xe3ca('0x2'));var fs=require('fs');var path=require(_0xe3ca('0x3'));var rimraf=require(_0xe3ca('0x4'));var config=require('../../config/environment');var attributes=require('./attachment.attributes');module[_0xe3ca('0x5')]=function(_0x1089ff,_0x298d03){return _0x1089ff['define'](_0xe3ca('0x6'),attributes,{'tableName':_0xe3ca('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 446ad83..6dee99c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2333=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Attachment,\x20%s,\x20%s','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','error','code','message','catch','CreateAttachment','options','raw','stringify','lodash','util','randomstring','ioredis'];(function(_0x3feed1,_0x1280cf){var _0x50f298=function(_0x1772a){while(--_0x1772a){_0x3feed1['push'](_0x3feed1['shift']());}};_0x50f298(++_0x1280cf);}(_0x2333,0x11a));var _0x3233=function(_0x3c9a3c,_0x26bd97){_0x3c9a3c=_0x3c9a3c-0x0;var _0x595651=_0x2333[_0x3c9a3c];return _0x595651;};'use strict';var _=require(_0x3233('0x0'));var util=require(_0x3233('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3233('0x2'));var fs=require('fs');var Redis=require(_0x3233('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3233('0x4'));var logger=require(_0x3233('0x5'))(_0x3233('0x6'));var config=require(_0x3233('0x7'));var jayson=require(_0x3233('0x8'));var client=jayson[_0x3233('0x9')][_0x3233('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x33a56d,_0x1e93e8,_0x1842a1){return new BPromise(function(_0x1837b6,_0x2ee6df){return client[_0x3233('0xb')](_0x33a56d,_0x1842a1)[_0x3233('0xc')](function(_0x7ff4bd){logger[_0x3233('0xd')](_0x3233('0xe'),_0x1e93e8,_0x3233('0xf'));logger[_0x3233('0x10')](_0x3233('0x11'),_0x1e93e8,_0x3233('0xf'),JSON['stringify'](_0x7ff4bd));if(_0x7ff4bd[_0x3233('0x12')]){if(_0x7ff4bd[_0x3233('0x12')][_0x3233('0x13')]===0x1f4){logger[_0x3233('0x12')](_0x3233('0xe'),_0x1e93e8,_0x7ff4bd[_0x3233('0x12')][_0x3233('0x14')]);return _0x2ee6df(_0x7ff4bd[_0x3233('0x12')][_0x3233('0x14')]);}logger[_0x3233('0x12')](_0x3233('0xe'),_0x1e93e8,_0x7ff4bd[_0x3233('0x12')][_0x3233('0x14')]);return _0x1837b6(_0x7ff4bd['error']['message']);}else{logger[_0x3233('0xd')](_0x3233('0xe'),_0x1e93e8,_0x3233('0xf'));_0x1837b6(_0x7ff4bd['result'][_0x3233('0x14')]);}})[_0x3233('0x15')](function(_0x127227){logger['error'](_0x3233('0xe'),_0x1e93e8,_0x127227);_0x2ee6df(_0x127227);});});}exports[_0x3233('0x16')]=function(_0x55fa30){var _0x38a9c0=this;return new Promise(function(_0x58420c,_0x233141){return db['Attachment']['create'](_0x55fa30['body'],{'raw':_0x55fa30[_0x3233('0x17')]?_0x55fa30['options'][_0x3233('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x305227){logger[_0x3233('0xd')](_0x3233('0x16'),_0x55fa30);logger[_0x3233('0x10')]('CreateAttachment',_0x55fa30,JSON[_0x3233('0x19')](_0x305227));_0x58420c(_0x305227);})[_0x3233('0x15')](function(_0x56fa5a){logger['error'](_0x3233('0x16'),_0x56fa5a['message'],_0x55fa30);_0x233141(_0x38a9c0[_0x3233('0x12')](0x1f4,_0x56fa5a[_0x3233('0x14')]));});});};
\ No newline at end of file
+var _0x39cb=['message','result','catch','CreateAttachment','Attachment','create','body','options','raw','debug','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Attachment,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Attachment,\x20%s,\x20%s'];(function(_0x26b998,_0x21d075){var _0xdd8cbe=function(_0x23fc1e){while(--_0x23fc1e){_0x26b998['push'](_0x26b998['shift']());}};_0xdd8cbe(++_0x21d075);}(_0x39cb,0x1bd));var _0xb39c=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x39cb[_0x167cc1];return _0x10bc4b;};'use strict';var _=require('lodash');var util=require(_0xb39c('0x0'));var moment=require(_0xb39c('0x1'));var BPromise=require('bluebird');var rs=require(_0xb39c('0x2'));var fs=require('fs');var Redis=require(_0xb39c('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb39c('0x4'));var logger=require(_0xb39c('0x5'))(_0xb39c('0x6'));var config=require(_0xb39c('0x7'));var jayson=require(_0xb39c('0x8'));var client=jayson['client'][_0xb39c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2fc868,_0x40112f,_0x3f2fbe){return new BPromise(function(_0x47d6d7,_0x5ae14a){return client[_0xb39c('0xa')](_0x2fc868,_0x3f2fbe)[_0xb39c('0xb')](function(_0x3ffb94){logger[_0xb39c('0xc')]('Attachment,\x20%s,\x20%s',_0x40112f,'request\x20sent');logger['debug'](_0xb39c('0xd'),_0x40112f,_0xb39c('0xe'),JSON[_0xb39c('0xf')](_0x3ffb94));if(_0x3ffb94[_0xb39c('0x10')]){if(_0x3ffb94[_0xb39c('0x10')][_0xb39c('0x11')]===0x1f4){logger[_0xb39c('0x10')](_0xb39c('0x12'),_0x40112f,_0x3ffb94['error'][_0xb39c('0x13')]);return _0x5ae14a(_0x3ffb94[_0xb39c('0x10')][_0xb39c('0x13')]);}logger['error'](_0xb39c('0x12'),_0x40112f,_0x3ffb94[_0xb39c('0x10')][_0xb39c('0x13')]);return _0x47d6d7(_0x3ffb94[_0xb39c('0x10')][_0xb39c('0x13')]);}else{logger[_0xb39c('0xc')](_0xb39c('0x12'),_0x40112f,'request\x20sent');_0x47d6d7(_0x3ffb94[_0xb39c('0x14')][_0xb39c('0x13')]);}})[_0xb39c('0x15')](function(_0x1c2c5f){logger[_0xb39c('0x10')](_0xb39c('0x12'),_0x40112f,_0x1c2c5f);_0x5ae14a(_0x1c2c5f);});});}exports[_0xb39c('0x16')]=function(_0x4e02cf){var _0x35dade=this;return new Promise(function(_0x2eeae6,_0x559ad6){return db[_0xb39c('0x17')][_0xb39c('0x18')](_0x4e02cf[_0xb39c('0x19')],{'raw':_0x4e02cf[_0xb39c('0x1a')]?_0x4e02cf['options'][_0xb39c('0x1b')]===undefined?!![]:![]:!![]})[_0xb39c('0xb')](function(_0x5e4a0b){logger[_0xb39c('0xc')](_0xb39c('0x16'),_0x4e02cf);logger[_0xb39c('0x1c')]('CreateAttachment',_0x4e02cf,JSON['stringify'](_0x5e4a0b));_0x2eeae6(_0x5e4a0b);})[_0xb39c('0x15')](function(_0x1a5b9d){logger[_0xb39c('0x10')]('CreateAttachment',_0x1a5b9d[_0xb39c('0x13')],_0x4e02cf);_0x559ad6(_0x35dade[_0xb39c('0x10')](0x1f4,_0x1a5b9d[_0xb39c('0x13')]));});});};
\ No newline at end of file
index dc39bea..3fab5af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['./attachment.controller','get','isAuthenticated','index','/:id','show','download','/:id/clone','clone','root','server/files/attachments/','now','post','single','file','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x1c62fb,_0x3cb9ea){var _0x2138c7=function(_0x2a1e94){while(--_0x2a1e94){_0x1c62fb['push'](_0x1c62fb['shift']());}};_0x2138c7(++_0x3cb9ea);}(_0x2032,0xd9));var _0x2203=function(_0x3e2c81,_0x4e7224){_0x3e2c81=_0x3e2c81-0x0;var _0x1ce24f=_0x2032[_0x3e2c81];return _0x1ce24f;};'use strict';var multer=require('multer');var util=require(_0x2203('0x0'));var path=require(_0x2203('0x1'));var timeout=require(_0x2203('0x2'));var express=require('express');var router=express[_0x2203('0x3')]();var fs_extra=require(_0x2203('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var controller=require(_0x2203('0x7'));router[_0x2203('0x8')]('/',auth[_0x2203('0x9')](),controller[_0x2203('0xa')]);router[_0x2203('0x8')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0xc')]);router[_0x2203('0x8')]('/:id/download',auth['isAuthenticated'](),controller[_0x2203('0xd')]);router['post'](_0x2203('0xe'),auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x849049,_0x4a6832,_0x3f690a){_0x3f690a(null,path['join'](config[_0x2203('0x10')],_0x2203('0x11')));},'filename':function(_0x4b9376,_0x583bc7,_0x585c76){_0x585c76(null,util['format']('%s-%s',Date[_0x2203('0x12')](),_0x583bc7['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x2203('0x13')]('/',upload[_0x2203('0x14')](_0x2203('0x15')),controller[_0x2203('0x16')]);router[_0x2203('0x17')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0x18')]);router[_0x2203('0x19')](_0x2203('0xb'),auth['isAuthenticated'](),controller[_0x2203('0x1a')]);module[_0x2203('0x1b')]=router;
\ No newline at end of file
+var _0x5f66=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/download','/:id/clone','clone','diskStorage','root','format','%s-%s','now','originalname','replace','post','single','file','create','delete','destroy','exports','util','connect-timeout','express','Router'];(function(_0x503950,_0x5022eb){var _0x1657a9=function(_0x4c1e8f){while(--_0x4c1e8f){_0x503950['push'](_0x503950['shift']());}};_0x1657a9(++_0x5022eb);}(_0x5f66,0x1a0));var _0x65f6=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0x5f66[_0x122096];return _0x3d1966;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./attachment.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['download']);router['post'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);var upload=multer({'storage':multer[_0x65f6('0xe')]({'destination':function(_0x50d26d,_0x41a7fd,_0x571436){_0x571436(null,path['join'](config[_0x65f6('0xf')],'server/files/attachments/'));},'filename':function(_0x419819,_0x4862a5,_0x2f964a){_0x2f964a(null,util[_0x65f6('0x10')](_0x65f6('0x11'),Date[_0x65f6('0x12')](),_0x4862a5[_0x65f6('0x13')][_0x65f6('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x65f6('0x15')]('/',upload[_0x65f6('0x16')](_0x65f6('0x17')),controller[_0x65f6('0x18')]);router['put'](_0x65f6('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x65f6('0x19')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x1a')]);module[_0x65f6('0x1b')]=router;
\ No newline at end of file
index 066c9a2..8de2bfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2a3=['login','authenticate','/login','profile','email','google','use','clientID','clientSecret','secret','callbackURL','Setting','findOne','blockDuration','then','find','emails','agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','Strategy','moment','../../config/environment','signToken','../../config/utils'];(function(_0x2d4be2,_0x4c462f){var _0x32e943=function(_0xbbc389){while(--_0xbbc389){_0x2d4be2['push'](_0x2d4be2['shift']());}};_0x32e943(++_0x4c462f);}(_0xe2a3,0x179));var _0x3e2a=function(_0x3ce53b,_0x30bbcc){_0x3ce53b=_0x3ce53b-0x0;var _0x7fa584=_0xe2a3[_0x3ce53b];return _0x7fa584;};'use strict';var _=require(_0x3e2a('0x0'));var passport=require(_0x3e2a('0x1'));var GoogleStrategy=require(_0x3e2a('0x2'))[_0x3e2a('0x3')];var moment=require(_0x3e2a('0x4'));var db=require('../../mysqldb')['db'];var config=require(_0x3e2a('0x5'));var signToken=require('../../components/auth/service')[_0x3e2a('0x6')];var utils=require(_0x3e2a('0x7'));exports[_0x3e2a('0x8')]=passport[_0x3e2a('0x9')]('google',{'failureRedirect':_0x3e2a('0xa'),'scope':[_0x3e2a('0xb'),_0x3e2a('0xc')],'session':![]});exports['callback']=passport['authenticate'](_0x3e2a('0xd'),{'failureRedirect':_0x3e2a('0xa'),'session':![]});passport[_0x3e2a('0xe')](new GoogleStrategy({'clientID':config[_0x3e2a('0xd')]?config['google'][_0x3e2a('0xf')]:'id','clientSecret':config[_0x3e2a('0xd')]?config[_0x3e2a('0xd')][_0x3e2a('0x10')]:_0x3e2a('0x11'),'callbackURL':config['google']?config[_0x3e2a('0xd')][_0x3e2a('0x12')]:''},function(_0x161a56,_0x268e35,_0x42e826,_0x3426c7){var _0x1762c6,_0x143174;return db[_0x3e2a('0x13')][_0x3e2a('0x14')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x3e2a('0x15')],'raw':!![]})[_0x3e2a('0x16')](function(_0x4330a3){_0x1762c6=_0x4330a3;return db['User'][_0x3e2a('0x17')]({'where':{'email':_['map'](_0x42e826[_0x3e2a('0x18')],'value'),'role':{'$or':['admin','user',_0x3e2a('0x19')]}}});})[_0x3e2a('0x16')](function(_0x2e5182){_0x143174=_0x2e5182;if(_0x143174){if(_0x143174[_0x3e2a('0x1a')]){return _0x3426c7(_0x3e2a('0x1b'));}else if(_0x1762c6[_0x3e2a('0x15')]>0x0){if(_0x143174[_0x3e2a('0x1c')]){if(moment(_0x143174[_0x3e2a('0x1d')])[_0x3e2a('0x1e')](_0x1762c6[_0x3e2a('0x15')],_0x3e2a('0x1f'))>moment()){return _0x3426c7(_0x3e2a('0x1b'));}else{return utils[_0x3e2a('0x20')](_0x143174,0x0,![],null)[_0x3e2a('0x16')](function(){return utils[_0x3e2a('0x21')](_0x143174);})[_0x3e2a('0x16')](function(){return _0x3426c7(null,_0x143174);});}}else{return utils[_0x3e2a('0x21')](_0x143174)[_0x3e2a('0x16')](function(){return _0x3426c7(null,_0x143174);});}}else{return utils[_0x3e2a('0x21')](_0x143174)[_0x3e2a('0x16')](function(){return _0x3426c7(null,_0x143174);});}}return _0x3426c7('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');})[_0x3e2a('0x22')](function(_0x27dce6){_0x3426c7(_0x27dce6);});}));
\ No newline at end of file
+var _0xcb9b=['clientID','clientSecret','callbackURL','Setting','findOne','allowedLoginAttempts','blockDuration','User','find','map','value','user','then','disabled','blocked','add','minutes','clearBlockUser','getLicense','passport','moment','../../mysqldb','../../config/environment','../../components/auth/service','../../config/utils','authenticate','google','/login','profile','callback','use'];(function(_0x4e21e7,_0x322819){var _0x3f9e49=function(_0x211b05){while(--_0x211b05){_0x4e21e7['push'](_0x4e21e7['shift']());}};_0x3f9e49(++_0x322819);}(_0xcb9b,0x187));var _0xbcb9=function(_0x4b1be9,_0x42a5af){_0x4b1be9=_0x4b1be9-0x0;var _0x1cecce=_0xcb9b[_0x4b1be9];return _0x1cecce;};'use strict';var _=require('lodash');var passport=require(_0xbcb9('0x0'));var GoogleStrategy=require('passport-google-oauth20')['Strategy'];var moment=require(_0xbcb9('0x1'));var db=require(_0xbcb9('0x2'))['db'];var config=require(_0xbcb9('0x3'));var signToken=require(_0xbcb9('0x4'))['signToken'];var utils=require(_0xbcb9('0x5'));exports['login']=passport[_0xbcb9('0x6')](_0xbcb9('0x7'),{'failureRedirect':_0xbcb9('0x8'),'scope':[_0xbcb9('0x9'),'email'],'session':![]});exports[_0xbcb9('0xa')]=passport['authenticate'](_0xbcb9('0x7'),{'failureRedirect':_0xbcb9('0x8'),'session':![]});passport[_0xbcb9('0xb')](new GoogleStrategy({'clientID':config[_0xbcb9('0x7')]?config[_0xbcb9('0x7')][_0xbcb9('0xc')]:'id','clientSecret':config['google']?config[_0xbcb9('0x7')][_0xbcb9('0xd')]:'secret','callbackURL':config[_0xbcb9('0x7')]?config[_0xbcb9('0x7')][_0xbcb9('0xe')]:''},function(_0x1fc6d3,_0x4aef84,_0x3b5a25,_0x5bc0a3){var _0x2ea6c2,_0x5e12e4;return db[_0xbcb9('0xf')][_0xbcb9('0x10')]({'where':{'id':0x1},'attributes':[_0xbcb9('0x11'),_0xbcb9('0x12')],'raw':!![]})['then'](function(_0x164df9){_0x2ea6c2=_0x164df9;return db[_0xbcb9('0x13')][_0xbcb9('0x14')]({'where':{'email':_[_0xbcb9('0x15')](_0x3b5a25['emails'],_0xbcb9('0x16')),'role':{'$or':['admin',_0xbcb9('0x17'),'agent']}}});})[_0xbcb9('0x18')](function(_0x44a917){_0x5e12e4=_0x44a917;if(_0x5e12e4){if(_0x5e12e4[_0xbcb9('0x19')]){return _0x5bc0a3('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(_0x2ea6c2['blockDuration']>0x0){if(_0x5e12e4[_0xbcb9('0x1a')]){if(moment(_0x5e12e4['blockedAt'])[_0xbcb9('0x1b')](_0x2ea6c2['blockDuration'],_0xbcb9('0x1c'))>moment()){return _0x5bc0a3('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{return utils[_0xbcb9('0x1d')](_0x5e12e4,0x0,![],null)[_0xbcb9('0x18')](function(){return utils['getLicense'](_0x5e12e4);})[_0xbcb9('0x18')](function(){return _0x5bc0a3(null,_0x5e12e4);});}}else{return utils['getLicense'](_0x5e12e4)[_0xbcb9('0x18')](function(){return _0x5bc0a3(null,_0x5e12e4);});}}else{return utils[_0xbcb9('0x1e')](_0x5e12e4)[_0xbcb9('0x18')](function(){return _0x5bc0a3(null,_0x5e12e4);});}}return _0x5bc0a3('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');})['catch'](function(_0x21952a){_0x5bc0a3(_0x21952a);});}));
\ No newline at end of file
index 70d1ba3..d6c9f67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fcb=['../../components/auth/service','get','login','/callback','isMiddleware','setTokenCookie','exports','express','passport','./authGoogle.controller','../user/user.controller.js'];(function(_0x16d9a7,_0x290bec){var _0x17532e=function(_0x3e8cc2){while(--_0x3e8cc2){_0x16d9a7['push'](_0x16d9a7['shift']());}};_0x17532e(++_0x290bec);}(_0x1fcb,0x96));var _0xb1fc=function(_0x4a3560,_0x400d45){_0x4a3560=_0x4a3560-0x0;var _0x21a1f0=_0x1fcb[_0x4a3560];return _0x21a1f0;};'use strict';var express=require(_0xb1fc('0x0'));var passport=require(_0xb1fc('0x1'));var router=express['Router']();var controller=require(_0xb1fc('0x2'));var userController=require(_0xb1fc('0x3'));var authService=require(_0xb1fc('0x4'));router[_0xb1fc('0x5')]('/',controller[_0xb1fc('0x6')]);router[_0xb1fc('0x5')](_0xb1fc('0x7'),controller['callback'],authService[_0xb1fc('0x8')],userController['login'],authService[_0xb1fc('0x9')]);module[_0xb1fc('0xa')]=router;
\ No newline at end of file
+var _0xe7f5=['get','callback','isMiddleware','login','setTokenCookie','exports','express','passport','Router','./authGoogle.controller','../user/user.controller.js'];(function(_0xe216a9,_0x58d3ef){var _0x568ddc=function(_0x5aff82){while(--_0x5aff82){_0xe216a9['push'](_0xe216a9['shift']());}};_0x568ddc(++_0x58d3ef);}(_0xe7f5,0x1b3));var _0x5e7f=function(_0x3d73d8,_0x2cdf42){_0x3d73d8=_0x3d73d8-0x0;var _0x2fb7c8=_0xe7f5[_0x3d73d8];return _0x2fb7c8;};'use strict';var express=require(_0x5e7f('0x0'));var passport=require(_0x5e7f('0x1'));var router=express[_0x5e7f('0x2')]();var controller=require(_0x5e7f('0x3'));var userController=require(_0x5e7f('0x4'));var authService=require('../../components/auth/service');router['get']('/',controller['login']);router[_0x5e7f('0x5')]('/callback',controller[_0x5e7f('0x6')],authService[_0x5e7f('0x7')],userController[_0x5e7f('0x8')],authService[_0x5e7f('0x9')]);module[_0x5e7f('0xa')]=router;
\ No newline at end of file
index 770a20c..f3a9e30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ac9=['params','token','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','Password\x20reset!','use','util','passport','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','findOne','blockDuration','then','name','password','salt','role','blocked','blockedAt','loginAttempts','admin','user','agent','authenticate','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','add','clearBlockUser','getLicense','MailAccount','find','email','MailServerOut','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','auth','pass','merge','format','\x22%s\x22\x20<%s>','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','allowedLoginAttempts','User','minutes','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','https://','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6ac9,0x112));var _0x96ac=function(_0x15b2b7,_0x5dee54){_0x15b2b7=_0x15b2b7-0x0;var _0x131cb7=_0x6ac9[_0x15b2b7];return _0x131cb7;};'use strict';var util=require(_0x96ac('0x0'));var passport=require(_0x96ac('0x1'));var LocalStrategy=require(_0x96ac('0x2'))[_0x96ac('0x3')];var jayson=require(_0x96ac('0x4'));var _=require(_0x96ac('0x5'));var rs=require(_0x96ac('0x6'));var moment=require(_0x96ac('0x7'));var db=require(_0x96ac('0x8'))['db'];var authService=require(_0x96ac('0x9'));var utils=require(_0x96ac('0xa'));var client=jayson[_0x96ac('0xb')][_0x96ac('0xc')]({'port':0x232b});function localAuthenticate(_0xbecbb7,_0x35a26d,_0x2dbbc6,_0x4d1e3e){var _0x41c422,_0x314399;return db[_0x96ac('0xd')][_0x96ac('0xe')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x96ac('0xf')],'raw':!![]})[_0x96ac('0x10')](function(_0x5d0ea5){_0x41c422=_0x5d0ea5;return _0xbecbb7[_0x96ac('0xe')]({'attributes':['id',_0x96ac('0x11'),_0x96ac('0x12'),_0x96ac('0x13'),_0x96ac('0x14'),'disabled',_0x96ac('0x15'),_0x96ac('0x16'),_0x96ac('0x17')],'where':{'name':_0x35a26d,'role':{'$or':[_0x96ac('0x18'),_0x96ac('0x19'),_0x96ac('0x1a')]}}});})[_0x96ac('0x10')](function(_0x1e6929){if(!_0x1e6929||_0x1e6929&&_0x1e6929[_0x96ac('0x11')]!==_0x35a26d){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x314399=_0x1e6929;return _0x314399;}})['then'](function(){_0x314399[_0x96ac('0x1b')](_0x2dbbc6,function(_0x499018,_0x50f575){var _0x4707e4=_0x314399[_0x96ac('0x17')]+0x1;if(_0x499018){return _0x4d1e3e(_0x499018);}else if(!_0x50f575){if(_0x314399[_0x96ac('0x1c')]){return _0x4d1e3e(null,![],{'message':_0x96ac('0x1d')});}else if(_0x41c422['allowedLoginAttempts']>0x0){if(_0x314399[_0x96ac('0x15')]){if(_0x41c422['blockDuration']>0x0){if(moment(_0x314399['blockedAt'])[_0x96ac('0x1e')](_0x41c422[_0x96ac('0xf')],'minutes')>moment()){return _0x4d1e3e(null,![],{'message':_0x96ac('0x1d')});}else{return utils['clearBlockUser'](_0x314399,_0x4707e4,![],null)[_0x96ac('0x10')](function(){return _0x4d1e3e(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x4d1e3e(null,![],{'message':_0x96ac('0x1d')});}}else{if(_0x4707e4>=_0x41c422['allowedLoginAttempts']){return utils[_0x96ac('0x1f')](_0x314399,0x0,!![],moment())[_0x96ac('0x10')](function(){return _0x4d1e3e(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0x96ac('0x1f')](_0x314399,_0x4707e4,![],null)[_0x96ac('0x10')](function(){return _0x4d1e3e(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x4d1e3e(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x314399[_0x96ac('0x1c')]){return _0x4d1e3e(null,![],{'message':_0x96ac('0x1d')});}else if(_0x41c422['allowedLoginAttempts']>0x0){if(_0x314399[_0x96ac('0x15')]){if(_0x41c422[_0x96ac('0xf')]>0x0){if(moment(_0x314399[_0x96ac('0x16')])['add'](_0x41c422['blockDuration'],'minutes')>moment()){return _0x4d1e3e(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x96ac('0x1f')](_0x314399,0x0,![],null)[_0x96ac('0x10')](function(){return utils[_0x96ac('0x20')](_0x314399);})['then'](function(){return _0x4d1e3e(null,_0x314399);});}}else{return _0x4d1e3e(null,![],{'message':_0x96ac('0x1d')});}}else{return utils['clearBlockUser'](_0x314399,0x0,![],null)[_0x96ac('0x10')](function(){return utils[_0x96ac('0x20')](_0x314399);})[_0x96ac('0x10')](function(){return _0x4d1e3e(null,_0x314399);})['catch'](function(_0x434032){return _0x4d1e3e(null,![],_0x434032);});}}else{if(_0x314399['blocked']){return _0x4d1e3e(null,![],{'message':_0x96ac('0x1d')});}else{return utils['getLicense'](_0x314399)['then'](function(){return _0x4d1e3e(null,_0x314399);});}}}});})['catch'](function(_0x3fb3bf){return _0x4d1e3e(null,![],_0x3fb3bf);});}function sendServiceMail(_0x20b169){return db[_0x96ac('0x21')][_0x96ac('0x22')]({'where':{'service':!![]},'attributes':['id',_0x96ac('0x11'),_0x96ac('0x23')],'include':[{'model':db[_0x96ac('0x24')],'as':_0x96ac('0x25')}]})[_0x96ac('0x10')](function(_0x29e47e){if(!_0x29e47e){throw new Error(_0x96ac('0x26'));}var _0x34c24c={'tls':{'rejectUnauthorized':![]}};if(_0x29e47e[_0x96ac('0x25')][_0x96ac('0x27')]){_0x34c24c[_0x96ac('0x27')]=_0x29e47e[_0x96ac('0x25')][_0x96ac('0x27')];}else{_0x34c24c['host']=_0x29e47e[_0x96ac('0x25')][_0x96ac('0x28')];_0x34c24c[_0x96ac('0x29')]=_0x29e47e[_0x96ac('0x25')][_0x96ac('0x29')];_0x34c24c[_0x96ac('0x2a')]=_0x29e47e['Smtp'][_0x96ac('0x2a')];}if(_0x29e47e[_0x96ac('0x25')]['authentication']){_0x34c24c[_0x96ac('0x2b')]={'user':_0x29e47e['Smtp'][_0x96ac('0x19')],'pass':_0x29e47e[_0x96ac('0x25')][_0x96ac('0x2c')]};}var _0x4ae083={'account':_0x34c24c,'message':_[_0x96ac('0x2d')]({'from':util[_0x96ac('0x2e')](_0x96ac('0x2f'),_0x29e47e[_0x96ac('0x11')],_0x29e47e[_0x96ac('0x23')]||_0x29e47e[_0x96ac('0x25')][_0x96ac('0x19')])},_0x20b169)};return client[_0x96ac('0x30')](_0x96ac('0x31'),_0x4ae083);})[_0x96ac('0x10')](function(_0x3724b7){if(_0x3724b7[_0x96ac('0x32')]){throw new Error(util[_0x96ac('0x2e')](_0x96ac('0x33'),_0x3724b7[_0x96ac('0x32')][_0x96ac('0x34')]||JSON[_0x96ac('0x35')](_0x3724b7[_0x96ac('0x32')])));}return!![];});}function handleError(_0x15271c,_0x234221,_0x3ef431){return _0x15271c[_0x96ac('0x36')](_0x234221||0x1f4)[_0x96ac('0x37')]({'message':_0x3ef431?_0x3ef431[_0x96ac('0x34')]||_0x3ef431:''});}exports[_0x96ac('0x38')]=function(_0x50ca8d,_0x1758f4,_0x454b5e){passport['authenticate']('local',function(_0x387e63,_0x20d812,_0x121527){var _0x544139=_0x387e63||_0x121527;if(_0x544139){return handleError(_0x1758f4,0x191,_0x544139);}if(!_0x20d812){return handleError(_0x1758f4,0x194,{'message':_0x96ac('0x39')});}else{var _0x35431a={'payload':{'id':_0x20d812['id'],'role':_0x20d812[_0x96ac('0x14')]},'options':{'expiresIn':0x15180}};return authService[_0x96ac('0x3a')](_0x35431a)[_0x96ac('0x10')](function(_0x20e6f0){_0x1758f4['json']({'id':_0x20d812['id'],'token':_0x20e6f0,'statusCall':'','isAlreadyLogged':_0x20d812['online']});});}})(_0x50ca8d,_0x1758f4,_0x454b5e);};exports[_0x96ac('0x3b')]=function(_0x24bf68,_0x43241b,_0x35c2d1){if(!_0x24bf68[_0x96ac('0x3c')][_0x96ac('0x23')]){return handleError(_0x43241b,0x1f4,{'message':_0x96ac('0x3d')});}var _0x53c301=rs[_0x96ac('0x3e')]();_0x24bf68[_0x96ac('0x3c')][_0x96ac('0x23')]=_0x24bf68[_0x96ac('0x3c')]['email'][_0x96ac('0x3f')]()['toLowerCase']();var _0xd57394;return db[_0x96ac('0xd')][_0x96ac('0xe')]({'where':{'id':0x1},'attributes':[_0x96ac('0x40'),_0x96ac('0xf')],'raw':!![]})[_0x96ac('0x10')](function(_0x25d969){_0xd57394=_0x25d969;return db[_0x96ac('0x41')]['find']({'where':{'email':_0x24bf68['body']['email']}});})[_0x96ac('0x10')](function(_0x4479b7){if(!_0x4479b7){throw new Error('This\x20email\x20is\x20not\x20registered.');}if(_0x4479b7[_0x96ac('0x1c')]){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x4479b7[_0x96ac('0x15')]){if(moment(_0x4479b7['blockedAt'])['add'](_0xd57394['blockDuration'],_0x96ac('0x42'))>moment()){throw new Error(_0x96ac('0x43'));}else{_0x4479b7['blocked']=![];_0x4479b7[_0x96ac('0x16')]=null;}}_0x4479b7[_0x96ac('0x44')]=_0x53c301;_0x4479b7[_0x96ac('0x45')]=Date[_0x96ac('0x46')]()+0x36ee80;return _0x4479b7[_0x96ac('0x47')]();})[_0x96ac('0x10')](function(){return sendServiceMail({'to':_0x24bf68[_0x96ac('0x3c')][_0x96ac('0x23')],'subject':_0x96ac('0x48'),'text':_0x96ac('0x49')+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0x96ac('0x4a')+_0x24bf68['headers']['host']+_0x96ac('0x4b')+_0x53c301+'\x0a\x0a'+_0x96ac('0x4c')});})[_0x96ac('0x10')](function(){_0x43241b['status'](0xc8)[_0x96ac('0x37')]({'message':'Reset\x20Email\x20sent!'});})[_0x96ac('0x4d')](function(_0x108e54){return handleError(_0x43241b,0x1f4,_0x108e54);});};exports['reset']=function(_0x24d7b2,_0x2a827c,_0x353793){return db[_0x96ac('0x41')][_0x96ac('0x22')]({'where':{'resetPasswordToken':_0x24d7b2[_0x96ac('0x4e')][_0x96ac('0x4f')],'resetPasswordExpires':{'$gt':Date[_0x96ac('0x46')]()}}})[_0x96ac('0x10')](function(_0x3b94b4){if(!_0x3b94b4){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db['Setting'][_0x96ac('0xe')]({'attributes':['id',_0x96ac('0x50'),_0x96ac('0x51'),_0x96ac('0x52')]})[_0x96ac('0x10')](function(_0x167496){if(_0x167496[_0x96ac('0x50')])authService[_0x96ac('0x53')](_0x24d7b2[_0x96ac('0x3c')][_0x96ac('0x12')]);if(!_0x167496[_0x96ac('0x51')]||!_0x3b94b4[_0x96ac('0x54')])return _0x3b94b4;authService[_0x96ac('0x55')](_0x24d7b2[_0x96ac('0x3c')][_0x96ac('0x12')],_0x3b94b4[_0x96ac('0x54')],_0x167496[_0x96ac('0x52')]);return _0x3b94b4;})[_0x96ac('0x10')](function(){_0x3b94b4['password']=_0x24d7b2[_0x96ac('0x3c')][_0x96ac('0x12')];_0x3b94b4[_0x96ac('0x44')]=null;_0x3b94b4[_0x96ac('0x45')]=null;return _0x3b94b4['save']();});})[_0x96ac('0x10')](function(){_0x2a827c[_0x96ac('0x36')](0xc8)['send']({'message':_0x96ac('0x56')});})['catch'](function(_0x19fd23){return handleError(_0x2a827c,0x1f4,_0x19fd23);});};passport[_0x96ac('0x57')](new LocalStrategy({'usernameField':_0x96ac('0x11'),'passwordField':_0x96ac('0x12')},function(_0x292e30,_0xf67610,_0x3b5275){return localAuthenticate(db['User'],_0x292e30,_0xf67610,_0x3b5275);}));
\ No newline at end of file
+var _0x05fd=['send','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','role','signToken','online','forgot','Email\x20parameter\x20is\x20missing','body','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordExpires','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','params','token','now','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','validatePasswordHistory','previousPasswords','resetPasswordToken','Password\x20reset!','use','util','passport','Strategy','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','findOne','blockDuration','then','password','salt','disabled','user','agent','name','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','loginAttempts','allowedLoginAttempts','blocked','blockedAt','add','minutes','clearBlockUser','getLicense','catch','MailAccount','find','email','MailServerOut','Smtp','service','host','port','secure','authentication','merge','\x22%s\x22\x20<%s>','SendMail','error','format','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','status'];(function(_0x3fe2c8,_0x47cab7){var _0x4565cc=function(_0x3299ed){while(--_0x3299ed){_0x3fe2c8['push'](_0x3fe2c8['shift']());}};_0x4565cc(++_0x47cab7);}(_0x05fd,0x173));var _0xd05f=function(_0x57e4f4,_0x545edf){_0x57e4f4=_0x57e4f4-0x0;var _0x165563=_0x05fd[_0x57e4f4];return _0x165563;};'use strict';var util=require(_0xd05f('0x0'));var passport=require(_0xd05f('0x1'));var LocalStrategy=require('passport-local')[_0xd05f('0x2')];var jayson=require('jayson/promise');var _=require('lodash');var rs=require(_0xd05f('0x3'));var moment=require(_0xd05f('0x4'));var db=require(_0xd05f('0x5'))['db'];var authService=require(_0xd05f('0x6'));var utils=require(_0xd05f('0x7'));var client=jayson[_0xd05f('0x8')][_0xd05f('0x9')]({'port':0x232b});function localAuthenticate(_0x3f7458,_0x299588,_0x54181e,_0x537514){var _0x499a81,_0x35988a;return db[_0xd05f('0xa')][_0xd05f('0xb')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xd05f('0xc')],'raw':!![]})[_0xd05f('0xd')](function(_0x4ea4d7){_0x499a81=_0x4ea4d7;return _0x3f7458[_0xd05f('0xb')]({'attributes':['id','name',_0xd05f('0xe'),_0xd05f('0xf'),'role',_0xd05f('0x10'),'blocked','blockedAt','loginAttempts'],'where':{'name':_0x299588,'role':{'$or':['admin',_0xd05f('0x11'),_0xd05f('0x12')]}}});})[_0xd05f('0xd')](function(_0x3500cf){if(!_0x3500cf||_0x3500cf&&_0x3500cf[_0xd05f('0x13')]!==_0x299588){throw new Error(_0xd05f('0x14'));}else{_0x35988a=_0x3500cf;return _0x35988a;}})[_0xd05f('0xd')](function(){_0x35988a[_0xd05f('0x15')](_0x54181e,function(_0x31a756,_0x171c25){var _0x138118=_0x35988a[_0xd05f('0x16')]+0x1;if(_0x31a756){return _0x537514(_0x31a756);}else if(!_0x171c25){if(_0x35988a[_0xd05f('0x10')]){return _0x537514(null,![],{'message':_0xd05f('0x14')});}else if(_0x499a81[_0xd05f('0x17')]>0x0){if(_0x35988a[_0xd05f('0x18')]){if(_0x499a81[_0xd05f('0xc')]>0x0){if(moment(_0x35988a[_0xd05f('0x19')])[_0xd05f('0x1a')](_0x499a81['blockDuration'],_0xd05f('0x1b'))>moment()){return _0x537514(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xd05f('0x1c')](_0x35988a,_0x138118,![],null)[_0xd05f('0xd')](function(){return _0x537514(null,![],{'message':_0xd05f('0x14')});});}}else{return _0x537514(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x138118>=_0x499a81[_0xd05f('0x17')]){return utils['clearBlockUser'](_0x35988a,0x0,!![],moment())[_0xd05f('0xd')](function(){return _0x537514(null,![],{'message':_0xd05f('0x14')});});}else{return utils[_0xd05f('0x1c')](_0x35988a,_0x138118,![],null)['then'](function(){return _0x537514(null,![],{'message':_0xd05f('0x14')});});}}}else{return _0x537514(null,![],{'message':_0xd05f('0x14')});}}else{if(_0x35988a[_0xd05f('0x10')]){return _0x537514(null,![],{'message':_0xd05f('0x14')});}else if(_0x499a81[_0xd05f('0x17')]>0x0){if(_0x35988a[_0xd05f('0x18')]){if(_0x499a81[_0xd05f('0xc')]>0x0){if(moment(_0x35988a[_0xd05f('0x19')])[_0xd05f('0x1a')](_0x499a81['blockDuration'],'minutes')>moment()){return _0x537514(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xd05f('0x1c')](_0x35988a,0x0,![],null)[_0xd05f('0xd')](function(){return utils[_0xd05f('0x1d')](_0x35988a);})[_0xd05f('0xd')](function(){return _0x537514(null,_0x35988a);});}}else{return _0x537514(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0xd05f('0x1c')](_0x35988a,0x0,![],null)[_0xd05f('0xd')](function(){return utils['getLicense'](_0x35988a);})[_0xd05f('0xd')](function(){return _0x537514(null,_0x35988a);})[_0xd05f('0x1e')](function(_0x5c4eb4){return _0x537514(null,![],_0x5c4eb4);});}}else{if(_0x35988a[_0xd05f('0x18')]){return _0x537514(null,![],{'message':_0xd05f('0x14')});}else{return utils['getLicense'](_0x35988a)[_0xd05f('0xd')](function(){return _0x537514(null,_0x35988a);});}}}});})[_0xd05f('0x1e')](function(_0x486c59){return _0x537514(null,![],_0x486c59);});}function sendServiceMail(_0x38244e){return db[_0xd05f('0x1f')][_0xd05f('0x20')]({'where':{'service':!![]},'attributes':['id',_0xd05f('0x13'),_0xd05f('0x21')],'include':[{'model':db[_0xd05f('0x22')],'as':'Smtp'}]})[_0xd05f('0xd')](function(_0x5ca658){if(!_0x5ca658){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x11f8b6={'tls':{'rejectUnauthorized':![]}};if(_0x5ca658[_0xd05f('0x23')][_0xd05f('0x24')]){_0x11f8b6[_0xd05f('0x24')]=_0x5ca658['Smtp'][_0xd05f('0x24')];}else{_0x11f8b6[_0xd05f('0x25')]=_0x5ca658[_0xd05f('0x23')][_0xd05f('0x25')];_0x11f8b6[_0xd05f('0x26')]=_0x5ca658[_0xd05f('0x23')][_0xd05f('0x26')];_0x11f8b6[_0xd05f('0x27')]=_0x5ca658[_0xd05f('0x23')][_0xd05f('0x27')];}if(_0x5ca658['Smtp'][_0xd05f('0x28')]){_0x11f8b6['auth']={'user':_0x5ca658[_0xd05f('0x23')][_0xd05f('0x11')],'pass':_0x5ca658[_0xd05f('0x23')]['pass']};}var _0x260c0f={'account':_0x11f8b6,'message':_[_0xd05f('0x29')]({'from':util['format'](_0xd05f('0x2a'),_0x5ca658['name'],_0x5ca658[_0xd05f('0x21')]||_0x5ca658[_0xd05f('0x23')]['user'])},_0x38244e)};return client['request'](_0xd05f('0x2b'),_0x260c0f);})[_0xd05f('0xd')](function(_0x516548){if(_0x516548[_0xd05f('0x2c')]){throw new Error(util[_0xd05f('0x2d')](_0xd05f('0x2e'),_0x516548[_0xd05f('0x2c')][_0xd05f('0x2f')]||JSON['stringify'](_0x516548[_0xd05f('0x2c')])));}return!![];});}function handleError(_0x1097fd,_0x32df2f,_0x43e849){return _0x1097fd[_0xd05f('0x30')](_0x32df2f||0x1f4)[_0xd05f('0x31')]({'message':_0x43e849?_0x43e849[_0xd05f('0x2f')]||_0x43e849:''});}exports['login']=function(_0x3e1950,_0x39fe40,_0x13268a){passport[_0xd05f('0x15')](_0xd05f('0x32'),function(_0x5deba3,_0x3af681,_0x7c1127){var _0x44842b=_0x5deba3||_0x7c1127;if(_0x44842b){return handleError(_0x39fe40,0x191,_0x44842b);}if(!_0x3af681){return handleError(_0x39fe40,0x194,{'message':_0xd05f('0x33')});}else{var _0x5f34a0={'payload':{'id':_0x3af681['id'],'role':_0x3af681[_0xd05f('0x34')]},'options':{'expiresIn':0x15180}};return authService[_0xd05f('0x35')](_0x5f34a0)['then'](function(_0x106ef6){_0x39fe40['json']({'id':_0x3af681['id'],'token':_0x106ef6,'statusCall':'','isAlreadyLogged':_0x3af681[_0xd05f('0x36')]});});}})(_0x3e1950,_0x39fe40,_0x13268a);};exports[_0xd05f('0x37')]=function(_0x5246e3,_0x4dd1b2,_0x5cb5f4){if(!_0x5246e3['body'][_0xd05f('0x21')]){return handleError(_0x4dd1b2,0x1f4,{'message':_0xd05f('0x38')});}var _0x4f71a8=rs['generate']();_0x5246e3[_0xd05f('0x39')]['email']=_0x5246e3[_0xd05f('0x39')][_0xd05f('0x21')]['trim']()['toLowerCase']();var _0x5bd948;return db[_0xd05f('0xa')][_0xd05f('0xb')]({'where':{'id':0x1},'attributes':[_0xd05f('0x17'),_0xd05f('0xc')],'raw':!![]})[_0xd05f('0xd')](function(_0x413d56){_0x5bd948=_0x413d56;return db[_0xd05f('0x3a')][_0xd05f('0x20')]({'where':{'email':_0x5246e3[_0xd05f('0x39')]['email']}});})[_0xd05f('0xd')](function(_0x9deaa2){if(!_0x9deaa2){throw new Error(_0xd05f('0x3b'));}if(_0x9deaa2['disabled']){throw new Error(_0xd05f('0x3c'));}if(_0x9deaa2[_0xd05f('0x18')]){if(moment(_0x9deaa2['blockedAt'])[_0xd05f('0x1a')](_0x5bd948[_0xd05f('0xc')],'minutes')>moment()){throw new Error(_0xd05f('0x3d'));}else{_0x9deaa2[_0xd05f('0x18')]=![];_0x9deaa2[_0xd05f('0x19')]=null;}}_0x9deaa2['resetPasswordToken']=_0x4f71a8;_0x9deaa2[_0xd05f('0x3e')]=Date['now']()+0x36ee80;return _0x9deaa2[_0xd05f('0x3f')]();})[_0xd05f('0xd')](function(){return sendServiceMail({'to':_0x5246e3[_0xd05f('0x39')][_0xd05f('0x21')],'subject':_0xd05f('0x40'),'text':_0xd05f('0x41')+_0xd05f('0x42')+'https://'+_0x5246e3[_0xd05f('0x43')][_0xd05f('0x25')]+_0xd05f('0x44')+_0x4f71a8+'\x0a\x0a'+_0xd05f('0x45')});})[_0xd05f('0xd')](function(){_0x4dd1b2[_0xd05f('0x30')](0xc8)[_0xd05f('0x31')]({'message':_0xd05f('0x46')});})[_0xd05f('0x1e')](function(_0x5eca57){return handleError(_0x4dd1b2,0x1f4,_0x5eca57);});};exports['reset']=function(_0x316a8a,_0x340779,_0x272b3b){return db[_0xd05f('0x3a')]['find']({'where':{'resetPasswordToken':_0x316a8a[_0xd05f('0x47')][_0xd05f('0x48')],'resetPasswordExpires':{'$gt':Date[_0xd05f('0x49')]()}}})[_0xd05f('0xd')](function(_0x5aab99){if(!_0x5aab99){throw new Error(_0xd05f('0x4a'));}return db[_0xd05f('0xa')][_0xd05f('0xb')]({'attributes':['id',_0xd05f('0x4b'),_0xd05f('0x4c'),_0xd05f('0x4d')]})[_0xd05f('0xd')](function(_0x4bd8ab){if(_0x4bd8ab[_0xd05f('0x4b')])authService[_0xd05f('0x4e')](_0x316a8a[_0xd05f('0x39')]['password']);if(!_0x4bd8ab[_0xd05f('0x4c')]||!_0x5aab99['previousPasswords'])return _0x5aab99;authService[_0xd05f('0x4f')](_0x316a8a[_0xd05f('0x39')][_0xd05f('0xe')],_0x5aab99[_0xd05f('0x50')],_0x4bd8ab[_0xd05f('0x4d')]);return _0x5aab99;})['then'](function(){_0x5aab99[_0xd05f('0xe')]=_0x316a8a['body']['password'];_0x5aab99[_0xd05f('0x51')]=null;_0x5aab99[_0xd05f('0x3e')]=null;return _0x5aab99['save']();});})[_0xd05f('0xd')](function(){_0x340779[_0xd05f('0x30')](0xc8)[_0xd05f('0x31')]({'message':_0xd05f('0x52')});})[_0xd05f('0x1e')](function(_0x2fed3b){return handleError(_0x340779,0x1f4,_0x2fed3b);});};passport[_0xd05f('0x53')](new LocalStrategy({'usernameField':_0xd05f('0x13'),'passwordField':_0xd05f('0xe')},function(_0x55927b,_0x1eeab4,_0x3021c9){return localAuthenticate(db[_0xd05f('0x3a')],_0x55927b,_0x1eeab4,_0x3021c9);}));
\ No newline at end of file
index ab8c285..b039272 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fff=['./authLocal.controller','post','login','/forgot','forgot','/reset/:token','reset','express','Router'];(function(_0x154551,_0x5574a8){var _0x5d7667=function(_0x1bc54e){while(--_0x1bc54e){_0x154551['push'](_0x154551['shift']());}};_0x5d7667(++_0x5574a8);}(_0x6fff,0x1d2));var _0xf6ff=function(_0x32691d,_0x2e6e00){_0x32691d=_0x32691d-0x0;var _0x3deaf0=_0x6fff[_0x32691d];return _0x3deaf0;};'use strict';var express=require(_0xf6ff('0x0'));var router=express[_0xf6ff('0x1')]();var controller=require(_0xf6ff('0x2'));router[_0xf6ff('0x3')]('/',controller[_0xf6ff('0x4')]);router[_0xf6ff('0x3')](_0xf6ff('0x5'),controller[_0xf6ff('0x6')]);router[_0xf6ff('0x3')](_0xf6ff('0x7'),controller[_0xf6ff('0x8')]);module['exports']=router;
\ No newline at end of file
+var _0x2169=['express','Router','./authLocal.controller','login','post','forgot','exports'];(function(_0x47d606,_0x4fa6b6){var _0x1520be=function(_0x4b92fc){while(--_0x4b92fc){_0x47d606['push'](_0x47d606['shift']());}};_0x1520be(++_0x4fa6b6);}(_0x2169,0x149));var _0x9216=function(_0x4b8156,_0x437af2){_0x4b8156=_0x4b8156-0x0;var _0x4a819c=_0x2169[_0x4b8156];return _0x4a819c;};'use strict';var express=require(_0x9216('0x0'));var router=express[_0x9216('0x1')]();var controller=require(_0x9216('0x2'));router['post']('/',controller[_0x9216('0x3')]);router[_0x9216('0x4')]('/forgot',controller[_0x9216('0x5')]);router[_0x9216('0x4')]('/reset/:token',controller['reset']);module[_0x9216('0x6')]=router;
\ No newline at end of file
index c0314ab..9d5279c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f43=['INTEGER','exports','STRING','BOOLEAN'];(function(_0x1602fb,_0x20b6b3){var _0x461831=function(_0x4a19f1){while(--_0x4a19f1){_0x1602fb['push'](_0x1602fb['shift']());}};_0x461831(++_0x20b6b3);}(_0x2f43,0x131));var _0x32f4=function(_0x363ba2,_0x54c897){_0x363ba2=_0x363ba2-0x0;var _0x131ebf=_0x2f43[_0x363ba2];return _0x131ebf;};'use strict';var Sequelize=require('sequelize');module[_0x32f4('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'channel':{'type':Sequelize[_0x32f4('0x1')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0x32f4('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x32f4('0x3')],'defaultValue':0xa}};
\ No newline at end of file
+var _0xe05a=['sequelize','exports','STRING','BOOLEAN','INTEGER'];(function(_0x13fce0,_0x43987d){var _0x378463=function(_0x16d05e){while(--_0x16d05e){_0x13fce0['push'](_0x13fce0['shift']());}};_0x378463(++_0x43987d);}(_0xe05a,0x1b3));var _0xae05=function(_0x163210,_0x42f8d6){_0x163210=_0x163210-0x0;var _0x8725be=_0xe05a[_0x163210];return _0x8725be;};'use strict';var Sequelize=require(_0xae05('0x0'));module[_0xae05('0x1')]={'name':{'type':Sequelize[_0xae05('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0xae05('0x2')]},'description':{'type':Sequelize[_0xae05('0x2')]},'status':{'type':Sequelize[_0xae05('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0xae05('0x4')],'defaultValue':0xa}};
\ No newline at end of file
index 0d5795a..8456d5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x177a=['stack','name','send','index','Automation','rawAttributes','fieldName','model','map','keys','intersection','fields','query','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','VIRTUAL','filter','options','includeAll','include','catch','params','find','create','body','destroy','addConditions','Condition','ids','getConditions','findOne','Action','addActions','omit','getActions','pick','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','update','then','error'];(function(_0x599afd,_0x4da0d3){var _0x2b3fe5=function(_0x1ac873){while(--_0x1ac873){_0x599afd['push'](_0x599afd['shift']());}};_0x2b3fe5(++_0x4da0d3);}(_0x177a,0x7b));var _0xa177=function(_0x47985b,_0x2dd54f){_0x47985b=_0x47985b-0x0;var _0x5ea898=_0x177a[_0x47985b];return _0x5ea898;};'use strict';var emlformat=require(_0xa177('0x0'));var rimraf=require(_0xa177('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa177('0x2'));var rp=require(_0xa177('0x3'));var moment=require(_0xa177('0x4'));var BPromise=require(_0xa177('0x5'));var Mustache=require(_0xa177('0x6'));var util=require(_0xa177('0x7'));var path=require(_0xa177('0x8'));var sox=require(_0xa177('0x9'));var csv=require(_0xa177('0xa'));var ejs=require(_0xa177('0xb'));var fs=require('fs');var fs_extra=require(_0xa177('0xc'));var _=require(_0xa177('0xd'));var squel=require(_0xa177('0xe'));var crypto=require('crypto');var jsforce=require(_0xa177('0xf'));var deskjs=require(_0xa177('0x10'));var toCsv=require(_0xa177('0xa'));var querystring=require(_0xa177('0x11'));var Papa=require(_0xa177('0x12'));var Redis=require('ioredis');var authService=require(_0xa177('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xa177('0x14'));var config=require(_0xa177('0x15'));var licenseUtil=require(_0xa177('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2d4c70,_0x2029d7){_0x2029d7=_0x2029d7||0xcc;return function(_0x564670){if(_0x564670){return _0x2d4c70[_0xa177('0x17')](_0x2029d7);}return _0x2d4c70[_0xa177('0x18')](_0x2029d7)[_0xa177('0x19')]();};}function respondWithResult(_0x108c1c,_0x45745c){_0x45745c=_0x45745c||0xc8;return function(_0x46a5a3){if(_0x46a5a3){return _0x108c1c[_0xa177('0x18')](_0x45745c)[_0xa177('0x1a')](_0x46a5a3);}};}function respondWithFilteredResult(_0x45d55c,_0x10b84a){return function(_0x254978){if(_0x254978){var _0x575e81=typeof _0x10b84a[_0xa177('0x1b')]==='undefined'&&typeof _0x10b84a[_0xa177('0x1c')]===_0xa177('0x1d');var _0x2a13e3=_0x254978[_0xa177('0x1e')];var _0x32d113=_0x575e81?0x0:_0x10b84a[_0xa177('0x1b')];var _0x81c596=_0x575e81?_0x254978['count']:_0x10b84a[_0xa177('0x1b')]+_0x10b84a[_0xa177('0x1c')];var _0x4f7848;if(_0x81c596>=_0x2a13e3){_0x81c596=_0x2a13e3;_0x4f7848=0xc8;}else{_0x4f7848=0xce;}_0x45d55c[_0xa177('0x18')](_0x4f7848);return _0x45d55c[_0xa177('0x1f')]('Content-Range',_0x32d113+'-'+_0x81c596+'/'+_0x2a13e3)[_0xa177('0x1a')](_0x254978);}return null;};}function patchUpdates(_0x2b1784){return function(_0x320f7f){try{jsonpatch[_0xa177('0x20')](_0x320f7f,_0x2b1784,!![]);}catch(_0x1b3398){return BPromise[_0xa177('0x21')](_0x1b3398);}return _0x320f7f['save']();};}function saveUpdates(_0x4abc26,_0x50e340){return function(_0x9d51b6){if(_0x9d51b6){return _0x9d51b6[_0xa177('0x22')](_0x4abc26)[_0xa177('0x23')](function(_0x5bb60a){return _0x5bb60a;});}return null;};}function removeEntity(_0x509bd1,_0x5c8931){return function(_0x35d93c){if(_0x35d93c){return _0x35d93c['destroy']()[_0xa177('0x23')](function(){_0x509bd1['status'](0xcc)[_0xa177('0x19')]();});}};}function handleEntityNotFound(_0x1d16f3,_0x103544){return function(_0x5f393d){if(!_0x5f393d){_0x1d16f3[_0xa177('0x17')](0x194);}return _0x5f393d;};}function handleError(_0x252198,_0x522409){_0x522409=_0x522409||0x1f4;return function(_0x2fb908){logger[_0xa177('0x24')](_0x2fb908[_0xa177('0x25')]);if(_0x2fb908[_0xa177('0x26')]){delete _0x2fb908[_0xa177('0x26')];}_0x252198['status'](_0x522409)[_0xa177('0x27')](_0x2fb908);};}exports[_0xa177('0x28')]=function(_0x1a783e,_0x214650){var _0x4e7906={},_0x524e5b={},_0x54aee3={'count':0x0,'rows':[]};var _0x631f9a=_['map'](db[_0xa177('0x29')][_0xa177('0x2a')],function(_0x2f505c){return{'name':_0x2f505c[_0xa177('0x2b')],'type':_0x2f505c['type']['key']};});_0x524e5b[_0xa177('0x2c')]=_[_0xa177('0x2d')](_0x631f9a,'name');_0x524e5b['query']=_[_0xa177('0x2e')](_0x1a783e['query']);_0x524e5b['filters']=_[_0xa177('0x2f')](_0x524e5b['model'],_0x524e5b['query']);_0x4e7906['attributes']=_[_0xa177('0x2f')](_0x524e5b['model'],qs[_0xa177('0x30')](_0x1a783e[_0xa177('0x31')][_0xa177('0x30')]));_0x4e7906[_0xa177('0x32')]=_0x4e7906[_0xa177('0x32')][_0xa177('0x33')]?_0x4e7906[_0xa177('0x32')]:_0x524e5b[_0xa177('0x2c')];if(!_0x1a783e[_0xa177('0x31')][_0xa177('0x34')](_0xa177('0x35'))){_0x4e7906[_0xa177('0x1c')]=qs[_0xa177('0x1c')](_0x1a783e['query'][_0xa177('0x1c')]);_0x4e7906[_0xa177('0x1b')]=qs[_0xa177('0x1b')](_0x1a783e['query'][_0xa177('0x1b')]);}_0x4e7906[_0xa177('0x36')]=qs[_0xa177('0x37')](_0x1a783e[_0xa177('0x31')][_0xa177('0x37')]);_0x4e7906[_0xa177('0x38')]=qs[_0xa177('0x39')](_['pick'](_0x1a783e[_0xa177('0x31')],_0x524e5b[_0xa177('0x39')]),_0x631f9a);if(_0x1a783e[_0xa177('0x31')]['filter']){_0x4e7906[_0xa177('0x38')]=_[_0xa177('0x3a')](_0x4e7906[_0xa177('0x38')],{'$or':_[_0xa177('0x2d')](_0x631f9a,function(_0x4c4f2d){if(_0x4c4f2d['type']!==_0xa177('0x3b')){var _0x5a4156={};_0x5a4156[_0x4c4f2d['name']]={'$like':'%'+_0x1a783e[_0xa177('0x31')][_0xa177('0x3c')]+'%'};return _0x5a4156;}})});}_0x4e7906=_[_0xa177('0x3a')]({},_0x4e7906,_0x1a783e[_0xa177('0x3d')]);var _0x4c6bf2={'where':_0x4e7906[_0xa177('0x38')]};return db[_0xa177('0x29')][_0xa177('0x1e')](_0x4c6bf2)[_0xa177('0x23')](function(_0x245432){_0x54aee3[_0xa177('0x1e')]=_0x245432;if(_0x1a783e[_0xa177('0x31')][_0xa177('0x3e')]){_0x4e7906[_0xa177('0x3f')]=[{'all':!![]}];}return db[_0xa177('0x29')]['findAll'](_0x4e7906);})[_0xa177('0x23')](function(_0x247122){_0x54aee3['rows']=_0x247122;return _0x54aee3;})[_0xa177('0x23')](respondWithFilteredResult(_0x214650,_0x4e7906))[_0xa177('0x40')](handleError(_0x214650,null));};exports['show']=function(_0x3baedf,_0x50cb2d){var _0x16e6e={'raw':![],'where':{'id':_0x3baedf[_0xa177('0x41')]['id']}},_0x43d071={};_0x43d071[_0xa177('0x2c')]=_[_0xa177('0x2e')](db[_0xa177('0x29')][_0xa177('0x2a')]);_0x43d071[_0xa177('0x31')]=_[_0xa177('0x2e')](_0x3baedf[_0xa177('0x31')]);_0x43d071['filters']=_[_0xa177('0x2f')](_0x43d071[_0xa177('0x2c')],_0x43d071[_0xa177('0x31')]);_0x16e6e[_0xa177('0x32')]=_['intersection'](_0x43d071[_0xa177('0x2c')],qs[_0xa177('0x30')](_0x3baedf[_0xa177('0x31')][_0xa177('0x30')]));_0x16e6e['attributes']=_0x16e6e[_0xa177('0x32')][_0xa177('0x33')]?_0x16e6e['attributes']:_0x43d071[_0xa177('0x2c')];if(_0x3baedf[_0xa177('0x31')][_0xa177('0x3e')]){_0x16e6e[_0xa177('0x3f')]=[{'all':!![]}];}_0x16e6e=_[_0xa177('0x3a')]({},_0x16e6e,_0x3baedf['options']);return db[_0xa177('0x29')][_0xa177('0x42')](_0x16e6e)[_0xa177('0x23')](handleEntityNotFound(_0x50cb2d,null))[_0xa177('0x23')](respondWithResult(_0x50cb2d,null))[_0xa177('0x40')](handleError(_0x50cb2d,null));};exports['create']=function(_0x1c794a,_0x58ba87){return db[_0xa177('0x29')][_0xa177('0x43')](_0x1c794a[_0xa177('0x44')],{})[_0xa177('0x23')](respondWithResult(_0x58ba87,0xc9))[_0xa177('0x40')](handleError(_0x58ba87,null));};exports[_0xa177('0x22')]=function(_0x55f44a,_0x13e61e){if(_0x55f44a[_0xa177('0x44')]['id']){delete _0x55f44a[_0xa177('0x44')]['id'];}return db[_0xa177('0x29')][_0xa177('0x42')]({'where':{'id':_0x55f44a[_0xa177('0x41')]['id']}})['then'](handleEntityNotFound(_0x13e61e,null))[_0xa177('0x23')](saveUpdates(_0x55f44a['body'],null))[_0xa177('0x23')](respondWithResult(_0x13e61e,null))[_0xa177('0x40')](handleError(_0x13e61e,null));};exports[_0xa177('0x45')]=function(_0x1f18b4,_0x1d8b40){return db[_0xa177('0x29')][_0xa177('0x42')]({'where':{'id':_0x1f18b4[_0xa177('0x41')]['id']}})[_0xa177('0x23')](handleEntityNotFound(_0x1d8b40,null))[_0xa177('0x23')](removeEntity(_0x1d8b40,null))[_0xa177('0x40')](handleError(_0x1d8b40,null));};exports[_0xa177('0x46')]=function(_0x500b34,_0x177bed,_0x3bc0a9){return db[_0xa177('0x47')]['find']({'where':{'id':_0x500b34[_0xa177('0x41')]['id']}})['then'](handleEntityNotFound(_0x177bed,null))[_0xa177('0x23')](function(_0x13cef5){if(_0x13cef5){return _0x13cef5[_0xa177('0x46')](_0x500b34[_0xa177('0x44')][_0xa177('0x48')],_['omit'](_0x500b34['body'],[_0xa177('0x48'),'id'])||{});}})[_0xa177('0x23')](respondWithResult(_0x177bed,null))[_0xa177('0x40')](handleError(_0x177bed,null));};exports[_0xa177('0x49')]=function(_0x345d15,_0x5bf70c,_0x5e6dcb){var _0x1ab0c7={};var _0x94c51={};var _0x25c121;var _0x3cba49;return db['Automation'][_0xa177('0x4a')]({'where':{'id':_0x345d15['params']['id']}})[_0xa177('0x23')](handleEntityNotFound(_0x5bf70c,null))[_0xa177('0x23')](function(_0x2ed7f3){if(_0x2ed7f3){_0x25c121=_0x2ed7f3;_0x94c51[_0xa177('0x2c')]=_[_0xa177('0x2e')](db[_0xa177('0x47')][_0xa177('0x2a')]);_0x94c51['query']=_[_0xa177('0x2e')](_0x345d15['query']);_0x94c51[_0xa177('0x39')]=_[_0xa177('0x2f')](_0x94c51[_0xa177('0x2c')],_0x94c51[_0xa177('0x31')]);_0x1ab0c7['attributes']=_[_0xa177('0x2f')](_0x94c51[_0xa177('0x2c')],qs[_0xa177('0x30')](_0x345d15[_0xa177('0x31')][_0xa177('0x30')]));_0x1ab0c7[_0xa177('0x32')]=_0x1ab0c7['attributes'][_0xa177('0x33')]?_0x1ab0c7[_0xa177('0x32')]:_0x94c51[_0xa177('0x2c')];_0x1ab0c7[_0xa177('0x36')]=qs[_0xa177('0x37')](_0x345d15['query'][_0xa177('0x37')]);_0x1ab0c7[_0xa177('0x38')]=qs[_0xa177('0x39')](_['pick'](_0x345d15[_0xa177('0x31')],_0x94c51['filters']));if(_0x345d15['query']['filter']){_0x1ab0c7[_0xa177('0x38')]=_['merge'](_0x1ab0c7[_0xa177('0x38')],{'$or':_[_0xa177('0x2d')](_0x1ab0c7[_0xa177('0x32')],function(_0x293db8){var _0x4f0803={};_0x4f0803[_0x293db8]={'$like':'%'+_0x345d15['query'][_0xa177('0x3c')]+'%'};return _0x4f0803;})});}_0x1ab0c7=_[_0xa177('0x3a')]({},_0x1ab0c7,_0x345d15['options']);return _0x25c121[_0xa177('0x49')](_0x1ab0c7);}})['then'](function(_0x156837){if(_0x156837){_0x3cba49=_0x156837['length'];if(!_0x345d15[_0xa177('0x31')][_0xa177('0x34')](_0xa177('0x35'))){_0x1ab0c7[_0xa177('0x1c')]=qs[_0xa177('0x1c')](_0x345d15[_0xa177('0x31')][_0xa177('0x1c')]);_0x1ab0c7[_0xa177('0x1b')]=qs['offset'](_0x345d15[_0xa177('0x31')][_0xa177('0x1b')]);}return _0x25c121[_0xa177('0x49')](_0x1ab0c7);}})[_0xa177('0x23')](function(_0x5bbc29){if(_0x5bbc29){return _0x5bbc29?{'count':_0x3cba49,'rows':_0x5bbc29}:null;}})[_0xa177('0x23')](respondWithResult(_0x5bf70c,null))['catch'](handleError(_0x5bf70c,null));};exports['addActions']=function(_0x502f1d,_0x455a7e,_0x1b84fc){return db[_0xa177('0x4b')][_0xa177('0x42')]({'where':{'id':_0x502f1d[_0xa177('0x41')]['id']}})[_0xa177('0x23')](handleEntityNotFound(_0x455a7e,null))[_0xa177('0x23')](function(_0x37a486){if(_0x37a486){return _0x37a486[_0xa177('0x4c')](_0x502f1d[_0xa177('0x44')][_0xa177('0x48')],_[_0xa177('0x4d')](_0x502f1d[_0xa177('0x44')],['ids','id'])||{});}})[_0xa177('0x23')](respondWithResult(_0x455a7e,null))[_0xa177('0x40')](handleError(_0x455a7e,null));};exports[_0xa177('0x4e')]=function(_0x29cbd3,_0x2c84f3,_0x4aaa00){var _0x1d1178={};var _0x289275={};var _0x59ab8a;var _0x5a6d19;return db[_0xa177('0x29')]['findOne']({'where':{'id':_0x29cbd3['params']['id']}})[_0xa177('0x23')](handleEntityNotFound(_0x2c84f3,null))[_0xa177('0x23')](function(_0x55aee6){if(_0x55aee6){_0x59ab8a=_0x55aee6;_0x289275[_0xa177('0x2c')]=_[_0xa177('0x2e')](db[_0xa177('0x4b')][_0xa177('0x2a')]);_0x289275['query']=_[_0xa177('0x2e')](_0x29cbd3[_0xa177('0x31')]);_0x289275['filters']=_['intersection'](_0x289275[_0xa177('0x2c')],_0x289275[_0xa177('0x31')]);_0x1d1178[_0xa177('0x32')]=_[_0xa177('0x2f')](_0x289275[_0xa177('0x2c')],qs[_0xa177('0x30')](_0x29cbd3['query']['fields']));_0x1d1178[_0xa177('0x32')]=_0x1d1178[_0xa177('0x32')][_0xa177('0x33')]?_0x1d1178[_0xa177('0x32')]:_0x289275['model'];_0x1d1178['order']=qs['sort'](_0x29cbd3['query'][_0xa177('0x37')]);_0x1d1178[_0xa177('0x38')]=qs['filters'](_[_0xa177('0x4f')](_0x29cbd3[_0xa177('0x31')],_0x289275[_0xa177('0x39')]));if(_0x29cbd3['query']['filter']){_0x1d1178[_0xa177('0x38')]=_[_0xa177('0x3a')](_0x1d1178[_0xa177('0x38')],{'$or':_[_0xa177('0x2d')](_0x1d1178['attributes'],function(_0x4a7fdd){var _0x70f326={};_0x70f326[_0x4a7fdd]={'$like':'%'+_0x29cbd3[_0xa177('0x31')][_0xa177('0x3c')]+'%'};return _0x70f326;})});}_0x1d1178=_[_0xa177('0x3a')]({},_0x1d1178,_0x29cbd3[_0xa177('0x3d')]);return _0x59ab8a[_0xa177('0x4e')](_0x1d1178);}})[_0xa177('0x23')](function(_0x4637ad){if(_0x4637ad){_0x5a6d19=_0x4637ad[_0xa177('0x33')];if(!_0x29cbd3[_0xa177('0x31')][_0xa177('0x34')](_0xa177('0x35'))){_0x1d1178['limit']=qs[_0xa177('0x1c')](_0x29cbd3[_0xa177('0x31')][_0xa177('0x1c')]);_0x1d1178[_0xa177('0x1b')]=qs[_0xa177('0x1b')](_0x29cbd3[_0xa177('0x31')][_0xa177('0x1b')]);}return _0x59ab8a[_0xa177('0x4e')](_0x1d1178);}})['then'](function(_0x883fab){if(_0x883fab){return _0x883fab?{'count':_0x5a6d19,'rows':_0x883fab}:null;}})[_0xa177('0x23')](respondWithResult(_0x2c84f3,null))[_0xa177('0x40')](handleError(_0x2c84f3,null));};
\ No newline at end of file
+var _0x3c96=['send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','Automation','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','addConditions','Condition','getConditions','findOne','Action','addActions','ids','getActions','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name'];(function(_0x5751fd,_0x57f5fd){var _0x2e9cff=function(_0x451230){while(--_0x451230){_0x5751fd['push'](_0x5751fd['shift']());}};_0x2e9cff(++_0x57f5fd);}(_0x3c96,0x82));var _0x63c9=function(_0x17101b,_0x37e130){_0x17101b=_0x17101b-0x0;var _0x51820d=_0x3c96[_0x17101b];return _0x51820d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x63c9('0x0'));var zipdir=require(_0x63c9('0x1'));var jsonpatch=require(_0x63c9('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x63c9('0x3'));var Mustache=require(_0x63c9('0x4'));var util=require(_0x63c9('0x5'));var path=require(_0x63c9('0x6'));var sox=require('sox');var csv=require(_0x63c9('0x7'));var ejs=require(_0x63c9('0x8'));var fs=require('fs');var fs_extra=require(_0x63c9('0x9'));var _=require(_0x63c9('0xa'));var squel=require(_0x63c9('0xb'));var crypto=require('crypto');var jsforce=require(_0x63c9('0xc'));var deskjs=require(_0x63c9('0xd'));var toCsv=require(_0x63c9('0x7'));var querystring=require(_0x63c9('0xe'));var Papa=require('papaparse');var Redis=require(_0x63c9('0xf'));var authService=require(_0x63c9('0x10'));var qs=require(_0x63c9('0x11'));var as=require(_0x63c9('0x12'));var hardwareService=require(_0x63c9('0x13'));var logger=require(_0x63c9('0x14'))('api');var utils=require(_0x63c9('0x15'));var config=require(_0x63c9('0x16'));var licenseUtil=require(_0x63c9('0x17'));var db=require(_0x63c9('0x18'))['db'];function respondWithStatusCode(_0x34d5b7,_0x46c609){_0x46c609=_0x46c609||0xcc;return function(_0x48bc4c){if(_0x48bc4c){return _0x34d5b7[_0x63c9('0x19')](_0x46c609);}return _0x34d5b7[_0x63c9('0x1a')](_0x46c609)[_0x63c9('0x1b')]();};}function respondWithResult(_0x312b2c,_0x4ce121){_0x4ce121=_0x4ce121||0xc8;return function(_0x57786d){if(_0x57786d){return _0x312b2c[_0x63c9('0x1a')](_0x4ce121)[_0x63c9('0x1c')](_0x57786d);}};}function respondWithFilteredResult(_0x13fc6f,_0x2f6f13){return function(_0x2b304a){if(_0x2b304a){var _0x593270=typeof _0x2f6f13['offset']===_0x63c9('0x1d')&&typeof _0x2f6f13[_0x63c9('0x1e')]==='undefined';var _0x469265=_0x2b304a[_0x63c9('0x1f')];var _0x4145e0=_0x593270?0x0:_0x2f6f13[_0x63c9('0x20')];var _0x37a80f=_0x593270?_0x2b304a[_0x63c9('0x1f')]:_0x2f6f13[_0x63c9('0x20')]+_0x2f6f13[_0x63c9('0x1e')];var _0x17424d;if(_0x37a80f>=_0x469265){_0x37a80f=_0x469265;_0x17424d=0xc8;}else{_0x17424d=0xce;}_0x13fc6f[_0x63c9('0x1a')](_0x17424d);return _0x13fc6f[_0x63c9('0x21')](_0x63c9('0x22'),_0x4145e0+'-'+_0x37a80f+'/'+_0x469265)[_0x63c9('0x1c')](_0x2b304a);}return null;};}function patchUpdates(_0x2bd192){return function(_0x160bcb){try{jsonpatch[_0x63c9('0x23')](_0x160bcb,_0x2bd192,!![]);}catch(_0x5c4bf1){return BPromise[_0x63c9('0x24')](_0x5c4bf1);}return _0x160bcb[_0x63c9('0x25')]();};}function saveUpdates(_0x5bae8e,_0x55631c){return function(_0x462fa3){if(_0x462fa3){return _0x462fa3[_0x63c9('0x26')](_0x5bae8e)[_0x63c9('0x27')](function(_0x3071fe){return _0x3071fe;});}return null;};}function removeEntity(_0xd88dae,_0x44d780){return function(_0x3d242f){if(_0x3d242f){return _0x3d242f[_0x63c9('0x28')]()[_0x63c9('0x27')](function(){_0xd88dae[_0x63c9('0x1a')](0xcc)[_0x63c9('0x1b')]();});}};}function handleEntityNotFound(_0x44b699,_0x2a74bb){return function(_0x5abdc3){if(!_0x5abdc3){_0x44b699[_0x63c9('0x19')](0x194);}return _0x5abdc3;};}function handleError(_0xb2b4ce,_0x2988e6){_0x2988e6=_0x2988e6||0x1f4;return function(_0x86b4b8){logger[_0x63c9('0x29')](_0x86b4b8[_0x63c9('0x2a')]);if(_0x86b4b8[_0x63c9('0x2b')]){delete _0x86b4b8['name'];}_0xb2b4ce['status'](_0x2988e6)[_0x63c9('0x2c')](_0x86b4b8);};}exports[_0x63c9('0x2d')]=function(_0x5e62e5,_0x2edf45){var _0x4f2c61={},_0x25f965={},_0xf0c7ad={'count':0x0,'rows':[]};var _0x2c2152=_['map'](db['Automation'][_0x63c9('0x2e')],function(_0x511d6c){return{'name':_0x511d6c[_0x63c9('0x2f')],'type':_0x511d6c[_0x63c9('0x30')][_0x63c9('0x31')]};});_0x25f965[_0x63c9('0x32')]=_[_0x63c9('0x33')](_0x2c2152,_0x63c9('0x2b'));_0x25f965[_0x63c9('0x34')]=_[_0x63c9('0x35')](_0x5e62e5[_0x63c9('0x34')]);_0x25f965[_0x63c9('0x36')]=_['intersection'](_0x25f965[_0x63c9('0x32')],_0x25f965[_0x63c9('0x34')]);_0x4f2c61[_0x63c9('0x37')]=_[_0x63c9('0x38')](_0x25f965[_0x63c9('0x32')],qs['fields'](_0x5e62e5[_0x63c9('0x34')][_0x63c9('0x39')]));_0x4f2c61[_0x63c9('0x37')]=_0x4f2c61[_0x63c9('0x37')]['length']?_0x4f2c61['attributes']:_0x25f965[_0x63c9('0x32')];if(!_0x5e62e5['query'][_0x63c9('0x3a')](_0x63c9('0x3b'))){_0x4f2c61[_0x63c9('0x1e')]=qs[_0x63c9('0x1e')](_0x5e62e5[_0x63c9('0x34')][_0x63c9('0x1e')]);_0x4f2c61[_0x63c9('0x20')]=qs['offset'](_0x5e62e5[_0x63c9('0x34')][_0x63c9('0x20')]);}_0x4f2c61[_0x63c9('0x3c')]=qs['sort'](_0x5e62e5[_0x63c9('0x34')][_0x63c9('0x3d')]);_0x4f2c61[_0x63c9('0x3e')]=qs['filters'](_['pick'](_0x5e62e5['query'],_0x25f965[_0x63c9('0x36')]),_0x2c2152);if(_0x5e62e5[_0x63c9('0x34')][_0x63c9('0x3f')]){_0x4f2c61['where']=_[_0x63c9('0x40')](_0x4f2c61[_0x63c9('0x3e')],{'$or':_[_0x63c9('0x33')](_0x2c2152,function(_0x543d26){if(_0x543d26[_0x63c9('0x30')]!==_0x63c9('0x41')){var _0x1ac0ac={};_0x1ac0ac[_0x543d26['name']]={'$like':'%'+_0x5e62e5[_0x63c9('0x34')][_0x63c9('0x3f')]+'%'};return _0x1ac0ac;}})});}_0x4f2c61=_['merge']({},_0x4f2c61,_0x5e62e5[_0x63c9('0x42')]);var _0x37e8e2={'where':_0x4f2c61[_0x63c9('0x3e')]};return db[_0x63c9('0x43')][_0x63c9('0x1f')](_0x37e8e2)[_0x63c9('0x27')](function(_0x13fd7d){_0xf0c7ad['count']=_0x13fd7d;if(_0x5e62e5['query'][_0x63c9('0x44')]){_0x4f2c61[_0x63c9('0x45')]=[{'all':!![]}];}return db[_0x63c9('0x43')][_0x63c9('0x46')](_0x4f2c61);})[_0x63c9('0x27')](function(_0x42c54a){_0xf0c7ad[_0x63c9('0x47')]=_0x42c54a;return _0xf0c7ad;})['then'](respondWithFilteredResult(_0x2edf45,_0x4f2c61))[_0x63c9('0x48')](handleError(_0x2edf45,null));};exports[_0x63c9('0x49')]=function(_0x210dcb,_0x3d7c6b){var _0x449692={'raw':![],'where':{'id':_0x210dcb[_0x63c9('0x4a')]['id']}},_0xcd1137={};_0xcd1137[_0x63c9('0x32')]=_[_0x63c9('0x35')](db[_0x63c9('0x43')][_0x63c9('0x2e')]);_0xcd1137[_0x63c9('0x34')]=_[_0x63c9('0x35')](_0x210dcb[_0x63c9('0x34')]);_0xcd1137[_0x63c9('0x36')]=_[_0x63c9('0x38')](_0xcd1137[_0x63c9('0x32')],_0xcd1137[_0x63c9('0x34')]);_0x449692['attributes']=_[_0x63c9('0x38')](_0xcd1137['model'],qs['fields'](_0x210dcb[_0x63c9('0x34')][_0x63c9('0x39')]));_0x449692[_0x63c9('0x37')]=_0x449692[_0x63c9('0x37')][_0x63c9('0x4b')]?_0x449692[_0x63c9('0x37')]:_0xcd1137[_0x63c9('0x32')];if(_0x210dcb['query'][_0x63c9('0x44')]){_0x449692[_0x63c9('0x45')]=[{'all':!![]}];}_0x449692=_[_0x63c9('0x40')]({},_0x449692,_0x210dcb[_0x63c9('0x42')]);return db[_0x63c9('0x43')][_0x63c9('0x4c')](_0x449692)[_0x63c9('0x27')](handleEntityNotFound(_0x3d7c6b,null))[_0x63c9('0x27')](respondWithResult(_0x3d7c6b,null))[_0x63c9('0x48')](handleError(_0x3d7c6b,null));};exports[_0x63c9('0x4d')]=function(_0x281bcd,_0x6f073d){return db['Automation'][_0x63c9('0x4d')](_0x281bcd[_0x63c9('0x4e')],{})[_0x63c9('0x27')](respondWithResult(_0x6f073d,0xc9))[_0x63c9('0x48')](handleError(_0x6f073d,null));};exports[_0x63c9('0x26')]=function(_0x2f2411,_0x3484f8){if(_0x2f2411[_0x63c9('0x4e')]['id']){delete _0x2f2411[_0x63c9('0x4e')]['id'];}return db[_0x63c9('0x43')]['find']({'where':{'id':_0x2f2411[_0x63c9('0x4a')]['id']}})[_0x63c9('0x27')](handleEntityNotFound(_0x3484f8,null))[_0x63c9('0x27')](saveUpdates(_0x2f2411['body'],null))[_0x63c9('0x27')](respondWithResult(_0x3484f8,null))['catch'](handleError(_0x3484f8,null));};exports['destroy']=function(_0x2a079e,_0x5ad38c){return db[_0x63c9('0x43')][_0x63c9('0x4c')]({'where':{'id':_0x2a079e[_0x63c9('0x4a')]['id']}})[_0x63c9('0x27')](handleEntityNotFound(_0x5ad38c,null))['then'](removeEntity(_0x5ad38c,null))[_0x63c9('0x48')](handleError(_0x5ad38c,null));};exports[_0x63c9('0x4f')]=function(_0x1e3521,_0x3696a6,_0x48916b){return db[_0x63c9('0x50')][_0x63c9('0x4c')]({'where':{'id':_0x1e3521[_0x63c9('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3696a6,null))['then'](function(_0x170bf8){if(_0x170bf8){return _0x170bf8['addConditions'](_0x1e3521['body']['ids'],_['omit'](_0x1e3521['body'],['ids','id'])||{});}})[_0x63c9('0x27')](respondWithResult(_0x3696a6,null))[_0x63c9('0x48')](handleError(_0x3696a6,null));};exports[_0x63c9('0x51')]=function(_0x45e8d7,_0x27c8f0,_0x2a533c){var _0xfb5333={};var _0x4b80ac={};var _0x37d24f;var _0xf4eca4;return db['Automation'][_0x63c9('0x52')]({'where':{'id':_0x45e8d7[_0x63c9('0x4a')]['id']}})[_0x63c9('0x27')](handleEntityNotFound(_0x27c8f0,null))[_0x63c9('0x27')](function(_0x422a7a){if(_0x422a7a){_0x37d24f=_0x422a7a;_0x4b80ac[_0x63c9('0x32')]=_[_0x63c9('0x35')](db[_0x63c9('0x50')][_0x63c9('0x2e')]);_0x4b80ac[_0x63c9('0x34')]=_[_0x63c9('0x35')](_0x45e8d7['query']);_0x4b80ac[_0x63c9('0x36')]=_[_0x63c9('0x38')](_0x4b80ac[_0x63c9('0x32')],_0x4b80ac['query']);_0xfb5333['attributes']=_['intersection'](_0x4b80ac[_0x63c9('0x32')],qs[_0x63c9('0x39')](_0x45e8d7[_0x63c9('0x34')]['fields']));_0xfb5333[_0x63c9('0x37')]=_0xfb5333[_0x63c9('0x37')][_0x63c9('0x4b')]?_0xfb5333['attributes']:_0x4b80ac[_0x63c9('0x32')];_0xfb5333['order']=qs[_0x63c9('0x3d')](_0x45e8d7[_0x63c9('0x34')][_0x63c9('0x3d')]);_0xfb5333[_0x63c9('0x3e')]=qs[_0x63c9('0x36')](_['pick'](_0x45e8d7['query'],_0x4b80ac[_0x63c9('0x36')]));if(_0x45e8d7[_0x63c9('0x34')][_0x63c9('0x3f')]){_0xfb5333['where']=_[_0x63c9('0x40')](_0xfb5333[_0x63c9('0x3e')],{'$or':_[_0x63c9('0x33')](_0xfb5333[_0x63c9('0x37')],function(_0x1ffa54){var _0x2775f4={};_0x2775f4[_0x1ffa54]={'$like':'%'+_0x45e8d7[_0x63c9('0x34')][_0x63c9('0x3f')]+'%'};return _0x2775f4;})});}_0xfb5333=_[_0x63c9('0x40')]({},_0xfb5333,_0x45e8d7[_0x63c9('0x42')]);return _0x37d24f[_0x63c9('0x51')](_0xfb5333);}})[_0x63c9('0x27')](function(_0x46e9d1){if(_0x46e9d1){_0xf4eca4=_0x46e9d1[_0x63c9('0x4b')];if(!_0x45e8d7['query'][_0x63c9('0x3a')](_0x63c9('0x3b'))){_0xfb5333[_0x63c9('0x1e')]=qs[_0x63c9('0x1e')](_0x45e8d7[_0x63c9('0x34')][_0x63c9('0x1e')]);_0xfb5333[_0x63c9('0x20')]=qs[_0x63c9('0x20')](_0x45e8d7[_0x63c9('0x34')]['offset']);}return _0x37d24f[_0x63c9('0x51')](_0xfb5333);}})['then'](function(_0x15bc8d){if(_0x15bc8d){return _0x15bc8d?{'count':_0xf4eca4,'rows':_0x15bc8d}:null;}})[_0x63c9('0x27')](respondWithResult(_0x27c8f0,null))[_0x63c9('0x48')](handleError(_0x27c8f0,null));};exports['addActions']=function(_0x3f1f5a,_0x51e98e,_0x2e8ab0){return db[_0x63c9('0x53')][_0x63c9('0x4c')]({'where':{'id':_0x3f1f5a[_0x63c9('0x4a')]['id']}})[_0x63c9('0x27')](handleEntityNotFound(_0x51e98e,null))[_0x63c9('0x27')](function(_0x37f414){if(_0x37f414){return _0x37f414[_0x63c9('0x54')](_0x3f1f5a[_0x63c9('0x4e')][_0x63c9('0x55')],_['omit'](_0x3f1f5a[_0x63c9('0x4e')],[_0x63c9('0x55'),'id'])||{});}})['then'](respondWithResult(_0x51e98e,null))[_0x63c9('0x48')](handleError(_0x51e98e,null));};exports[_0x63c9('0x56')]=function(_0x373091,_0x39fe2d,_0xa22e5d){var _0x2b98f0={};var _0x24aaf8={};var _0x47cbc2;var _0xa8f7c0;return db[_0x63c9('0x43')][_0x63c9('0x52')]({'where':{'id':_0x373091['params']['id']}})[_0x63c9('0x27')](handleEntityNotFound(_0x39fe2d,null))[_0x63c9('0x27')](function(_0x9fa864){if(_0x9fa864){_0x47cbc2=_0x9fa864;_0x24aaf8[_0x63c9('0x32')]=_[_0x63c9('0x35')](db['Action'][_0x63c9('0x2e')]);_0x24aaf8['query']=_['keys'](_0x373091[_0x63c9('0x34')]);_0x24aaf8[_0x63c9('0x36')]=_[_0x63c9('0x38')](_0x24aaf8[_0x63c9('0x32')],_0x24aaf8[_0x63c9('0x34')]);_0x2b98f0[_0x63c9('0x37')]=_[_0x63c9('0x38')](_0x24aaf8[_0x63c9('0x32')],qs[_0x63c9('0x39')](_0x373091[_0x63c9('0x34')]['fields']));_0x2b98f0[_0x63c9('0x37')]=_0x2b98f0[_0x63c9('0x37')][_0x63c9('0x4b')]?_0x2b98f0['attributes']:_0x24aaf8[_0x63c9('0x32')];_0x2b98f0[_0x63c9('0x3c')]=qs[_0x63c9('0x3d')](_0x373091[_0x63c9('0x34')][_0x63c9('0x3d')]);_0x2b98f0[_0x63c9('0x3e')]=qs[_0x63c9('0x36')](_['pick'](_0x373091['query'],_0x24aaf8[_0x63c9('0x36')]));if(_0x373091[_0x63c9('0x34')][_0x63c9('0x3f')]){_0x2b98f0[_0x63c9('0x3e')]=_['merge'](_0x2b98f0[_0x63c9('0x3e')],{'$or':_[_0x63c9('0x33')](_0x2b98f0['attributes'],function(_0xe16e9c){var _0xeaca24={};_0xeaca24[_0xe16e9c]={'$like':'%'+_0x373091[_0x63c9('0x34')][_0x63c9('0x3f')]+'%'};return _0xeaca24;})});}_0x2b98f0=_[_0x63c9('0x40')]({},_0x2b98f0,_0x373091[_0x63c9('0x42')]);return _0x47cbc2[_0x63c9('0x56')](_0x2b98f0);}})[_0x63c9('0x27')](function(_0x2473ba){if(_0x2473ba){_0xa8f7c0=_0x2473ba[_0x63c9('0x4b')];if(!_0x373091['query']['hasOwnProperty'](_0x63c9('0x3b'))){_0x2b98f0['limit']=qs[_0x63c9('0x1e')](_0x373091[_0x63c9('0x34')][_0x63c9('0x1e')]);_0x2b98f0[_0x63c9('0x20')]=qs[_0x63c9('0x20')](_0x373091[_0x63c9('0x34')][_0x63c9('0x20')]);}return _0x47cbc2[_0x63c9('0x56')](_0x2b98f0);}})[_0x63c9('0x27')](function(_0x105297){if(_0x105297){return _0x105297?{'count':_0xa8f7c0,'rows':_0x105297}:null;}})['then'](respondWithResult(_0x39fe2d,null))[_0x63c9('0x48')](handleError(_0x39fe2d,null));};
\ No newline at end of file
index 4c23b76..6262ced 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x394c=['../../config/environment','./automation.attributes','exports','define','Automation','tools_automations','lodash','util','../../config/logger','moment','request-promise','path','rimraf'];(function(_0x3907f1,_0x20eee7){var _0x37c3ae=function(_0x3a5446){while(--_0x3a5446){_0x3907f1['push'](_0x3907f1['shift']());}};_0x37c3ae(++_0x20eee7);}(_0x394c,0x95));var _0xc394=function(_0x5ebec4,_0x474731){_0x5ebec4=_0x5ebec4-0x0;var _0x3b9d3b=_0x394c[_0x5ebec4];return _0x3b9d3b;};'use strict';var _=require(_0xc394('0x0'));var util=require(_0xc394('0x1'));var logger=require(_0xc394('0x2'))('api');var moment=require(_0xc394('0x3'));var BPromise=require('bluebird');var rp=require(_0xc394('0x4'));var fs=require('fs');var path=require(_0xc394('0x5'));var rimraf=require(_0xc394('0x6'));var config=require(_0xc394('0x7'));var attributes=require(_0xc394('0x8'));module[_0xc394('0x9')]=function(_0x508eff,_0x26c130){return _0x508eff[_0xc394('0xa')](_0xc394('0xb'),attributes,{'tableName':_0xc394('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa5cd=['define','Automation','tools_automations','lodash','../../config/logger','api','moment','bluebird','rimraf','./automation.attributes','exports'];(function(_0x47291f,_0x202ac0){var _0x5e05d6=function(_0x1f5b42){while(--_0x1f5b42){_0x47291f['push'](_0x47291f['shift']());}};_0x5e05d6(++_0x202ac0);}(_0xa5cd,0x9d));var _0xda5c=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xa5cd[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0xda5c('0x0'));var util=require('util');var logger=require(_0xda5c('0x1'))(_0xda5c('0x2'));var moment=require(_0xda5c('0x3'));var BPromise=require(_0xda5c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xda5c('0x5'));var config=require('../../config/environment');var attributes=require(_0xda5c('0x6'));module[_0xda5c('0x7')]=function(_0x1df7c3,_0x3dd188){return _0x1df7c3[_0xda5c('0x8')](_0xda5c('0x9'),attributes,{'tableName':_0xda5c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a336d0f..d70185d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c5=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','Automation,\x20%s,\x20%s','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment'];(function(_0x1ae491,_0x5b83b9){var _0x4958a5=function(_0xf0f364){while(--_0xf0f364){_0x1ae491['push'](_0x1ae491['shift']());}};_0x4958a5(++_0x5b83b9);}(_0x47c5,0x165));var _0x547c=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0x47c5[_0xbe200f];return _0x192597;};'use strict';var _=require(_0x547c('0x0'));var util=require(_0x547c('0x1'));var moment=require(_0x547c('0x2'));var BPromise=require(_0x547c('0x3'));var rs=require(_0x547c('0x4'));var fs=require('fs');var Redis=require(_0x547c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x547c('0x6'));var logger=require(_0x547c('0x7'))('rpc');var config=require(_0x547c('0x8'));var jayson=require(_0x547c('0x9'));var client=jayson['client'][_0x547c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x439f25,_0x381f2e,_0x10a334){return new BPromise(function(_0x12fb7d,_0x4ef079){return client[_0x547c('0xb')](_0x439f25,_0x10a334)[_0x547c('0xc')](function(_0x10dec9){logger[_0x547c('0xd')](_0x547c('0xe'),_0x381f2e,_0x547c('0xf'));logger[_0x547c('0x10')](_0x547c('0x11'),_0x381f2e,_0x547c('0xf'),JSON[_0x547c('0x12')](_0x10dec9));if(_0x10dec9[_0x547c('0x13')]){if(_0x10dec9['error'][_0x547c('0x14')]===0x1f4){logger[_0x547c('0x13')]('Automation,\x20%s,\x20%s',_0x381f2e,_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);return _0x4ef079(_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);}logger[_0x547c('0x13')](_0x547c('0xe'),_0x381f2e,_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);return _0x12fb7d(_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);}else{logger[_0x547c('0xd')](_0x547c('0xe'),_0x381f2e,_0x547c('0xf'));_0x12fb7d(_0x10dec9[_0x547c('0x16')][_0x547c('0x15')]);}})[_0x547c('0x17')](function(_0x39498d){logger[_0x547c('0x13')]('Automation,\x20%s,\x20%s',_0x381f2e,_0x39498d);_0x4ef079(_0x39498d);});});}
\ No newline at end of file
+var _0x81b7=['bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Automation,\x20%s,\x20%s','Automation,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x81b7,0x1f2));var _0x781b=function(_0x54ee3f,_0x5ec84d){_0x54ee3f=_0x54ee3f-0x0;var _0x418efe=_0x81b7[_0x54ee3f];return _0x418efe;};'use strict';var _=require('lodash');var util=require(_0x781b('0x0'));var moment=require(_0x781b('0x1'));var BPromise=require(_0x781b('0x2'));var rs=require(_0x781b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x781b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x781b('0x5'))(_0x781b('0x6'));var config=require(_0x781b('0x7'));var jayson=require(_0x781b('0x8'));var client=jayson['client'][_0x781b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xd9d633,_0x482803,_0x4aa451){return new BPromise(function(_0x3de3cd,_0x33c04b){return client[_0x781b('0xa')](_0xd9d633,_0x4aa451)[_0x781b('0xb')](function(_0x5591d9){logger[_0x781b('0xc')](_0x781b('0xd'),_0x482803,'request\x20sent');logger['debug'](_0x781b('0xe'),_0x482803,'request\x20sent',JSON[_0x781b('0xf')](_0x5591d9));if(_0x5591d9['error']){if(_0x5591d9[_0x781b('0x10')]['code']===0x1f4){logger[_0x781b('0x10')]('Automation,\x20%s,\x20%s',_0x482803,_0x5591d9[_0x781b('0x10')][_0x781b('0x11')]);return _0x33c04b(_0x5591d9[_0x781b('0x10')][_0x781b('0x11')]);}logger[_0x781b('0x10')]('Automation,\x20%s,\x20%s',_0x482803,_0x5591d9[_0x781b('0x10')][_0x781b('0x11')]);return _0x3de3cd(_0x5591d9[_0x781b('0x10')][_0x781b('0x11')]);}else{logger['info'](_0x781b('0xd'),_0x482803,'request\x20sent');_0x3de3cd(_0x5591d9[_0x781b('0x12')][_0x781b('0x11')]);}})[_0x781b('0x13')](function(_0x4ac48a){logger[_0x781b('0x10')]('Automation,\x20%s,\x20%s',_0x482803,_0x4ac48a);_0x33c04b(_0x4ac48a);});});}
\ No newline at end of file
index f2192c1..0b08a91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x131a=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/conditions','getConditions','getActions','post','addConditions','/:id/actions'];(function(_0x495e9f,_0x1b1d80){var _0xb249d2=function(_0x3db4e4){while(--_0x3db4e4){_0x495e9f['push'](_0x495e9f['shift']());}};_0xb249d2(++_0x1b1d80);}(_0x131a,0x18b));var _0xa131=function(_0x5caf34,_0x3a7aa8){_0x5caf34=_0x5caf34-0x0;var _0x5daf61=_0x131a[_0x5caf34];return _0x5daf61;};'use strict';var multer=require(_0xa131('0x0'));var util=require(_0xa131('0x1'));var path=require(_0xa131('0x2'));var timeout=require(_0xa131('0x3'));var express=require(_0xa131('0x4'));var router=express['Router']();var fs_extra=require(_0xa131('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa131('0x6'));var config=require(_0xa131('0x7'));var controller=require('./automation.controller');router[_0xa131('0x8')]('/',auth[_0xa131('0x9')](),controller[_0xa131('0xa')]);router[_0xa131('0x8')](_0xa131('0xb'),auth[_0xa131('0x9')](),controller[_0xa131('0xc')]);router[_0xa131('0x8')](_0xa131('0xd'),auth['isAuthenticated'](),controller[_0xa131('0xe')]);router[_0xa131('0x8')]('/:id/actions',auth[_0xa131('0x9')](),controller[_0xa131('0xf')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xa131('0x10')]('/:id/conditions',auth[_0xa131('0x9')](),controller[_0xa131('0x11')]);router['post'](_0xa131('0x12'),auth[_0xa131('0x9')](),controller['addActions']);router['put'](_0xa131('0xb'),auth[_0xa131('0x9')](),controller[_0xa131('0x13')]);router[_0xa131('0x14')](_0xa131('0xb'),auth[_0xa131('0x9')](),controller[_0xa131('0x15')]);module[_0xa131('0x16')]=router;
\ No newline at end of file
+var _0xcb18=['path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','index','isAuthenticated','/:id/conditions','getConditions','/:id/actions','getActions','create','post','addConditions','addActions','/:id','update','delete','destroy','exports'];(function(_0x1d330c,_0xceec5f){var _0x303f1a=function(_0x59bc09){while(--_0x59bc09){_0x1d330c['push'](_0x1d330c['shift']());}};_0x303f1a(++_0xceec5f);}(_0xcb18,0x159));var _0x8cb1=function(_0x547984,_0x2040b6){_0x547984=_0x547984-0x0;var _0x5ec4d8=_0xcb18[_0x547984];return _0x5ec4d8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x8cb1('0x0'));var timeout=require('connect-timeout');var express=require(_0x8cb1('0x1'));var router=express['Router']();var fs_extra=require(_0x8cb1('0x2'));var auth=require(_0x8cb1('0x3'));var interaction=require(_0x8cb1('0x4'));var config=require(_0x8cb1('0x5'));var controller=require(_0x8cb1('0x6'));router[_0x8cb1('0x7')]('/',auth['isAuthenticated'](),controller[_0x8cb1('0x8')]);router[_0x8cb1('0x7')]('/:id',auth[_0x8cb1('0x9')](),controller['show']);router[_0x8cb1('0x7')](_0x8cb1('0xa'),auth['isAuthenticated'](),controller[_0x8cb1('0xb')]);router[_0x8cb1('0x7')](_0x8cb1('0xc'),auth[_0x8cb1('0x9')](),controller[_0x8cb1('0xd')]);router['post']('/',auth[_0x8cb1('0x9')](),controller[_0x8cb1('0xe')]);router[_0x8cb1('0xf')]('/:id/conditions',auth[_0x8cb1('0x9')](),controller[_0x8cb1('0x10')]);router[_0x8cb1('0xf')](_0x8cb1('0xc'),auth[_0x8cb1('0x9')](),controller[_0x8cb1('0x11')]);router['put'](_0x8cb1('0x12'),auth['isAuthenticated'](),controller[_0x8cb1('0x13')]);router[_0x8cb1('0x14')](_0x8cb1('0x12'),auth[_0x8cb1('0x9')](),controller[_0x8cb1('0x15')]);module[_0x8cb1('0x16')]=router;
\ No newline at end of file
index 4872e8f..163eaa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x920c=['#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','exports','STRING','name','ivr','BOOLEAN','UNSIGNED','Max\x20200\x20calls.','INTEGER','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','ENUM','never','onlyIfOpen','always','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'];(function(_0x2eb4c3,_0xa4e108){var _0x4544f7=function(_0x1b2562){while(--_0x1b2562){_0x2eb4c3['push'](_0x2eb4c3['shift']());}};_0x4544f7(++_0xa4e108);}(_0x920c,0x152));var _0xc920=function(_0x51666b,_0x48e537){_0x51666b=_0x51666b-0x0;var _0x1858fa=_0x920c[_0x51666b];return _0x1858fa;};'use strict';var Sequelize=require('sequelize');module[_0xc920('0x0')]={'name':{'type':Sequelize[_0xc920('0x1')],'unique':_0xc920('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM']('ivr'),'allowNull':![],'defaultValue':_0xc920('0x3')},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0xc920('0x4')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0xc920('0x5')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xc920('0x6')},'dialOriginateCallerIdName':{'type':Sequelize[_0xc920('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xc920('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0xc920('0x7')](0x3)[_0xc920('0x5')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialCongestionMaxRetry':{'type':Sequelize[_0xc920('0x7')](0x3)[_0xc920('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc920('0x8')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xc920('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc920('0x9')},'dialBusyMaxRetry':{'type':Sequelize[_0xc920('0x7')](0x3)[_0xc920('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc920('0xa')},'dialBusyRetryFrequency':{'type':Sequelize[_0xc920('0x7')](0x5)[_0xc920('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xc920('0x7')](0x3)[_0xc920('0x5')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0xc920('0x7')](0x3)[_0xc920('0x5')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xc920('0xb')},'dialTimezone':{'type':Sequelize[_0xc920('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xc920('0x1')],'defaultValue':_0xc920('0xc')},'dialCheckDuplicateType':{'type':Sequelize[_0xc920('0xd')]('always',_0xc920('0xe'),_0xc920('0xf')),'defaultValue':_0xc920('0x10')},'dialAMDActive':{'type':Sequelize[_0xc920('0x4')],'defaultValue':0x0,'comment':_0xc920('0x11')},'dialAMDInitialSilence':{'type':Sequelize[_0xc920('0x7')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xc920('0x12')},'dialAMDGreeting':{'type':Sequelize[_0xc920('0x7')](0x9)[_0xc920('0x5')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xc920('0x13')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xc920('0x7')](0x9)[_0xc920('0x5')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xc920('0x14')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xc920('0x7')](0x9)[_0xc920('0x5')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc920('0x15')},'dialAMDMinWordLength':{'type':Sequelize[_0xc920('0x7')](0x9)[_0xc920('0x5')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xc920('0x16')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xc920('0x7')](0x9)[_0xc920('0x5')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0xc920('0x7')](0x5)[_0xc920('0x5')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xc920('0x17')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xc920('0x5')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc920('0x18')},'dialOrderByScheduledAt':{'type':Sequelize[_0xc920('0xd')](_0xc920('0x19'),'ASC'),'defaultValue':_0xc920('0x19')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xc920('0x7')](0x3)[_0xc920('0x5')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc920('0x1a')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0xc920('0x5')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc920('0x1b')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xc920('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc920('0x1c')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xc920('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc920('0x1d')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xc920('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc920('0x1e')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc920('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc920('0x1f')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xc920('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc920('0x20')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xc920('0x7')](0x5)[_0xc920('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc920('0x21')},'dialMachineMaxRetry':{'type':Sequelize[_0xc920('0x7')](0x3)[_0xc920('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0xc920('0x7')](0x5)[_0xc920('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc920('0x22')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xc920('0x7')](0x3)[_0xc920('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc920('0x23')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xc920('0x7')](0x5)[_0xc920('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc920('0x24')}};
\ No newline at end of file
+var _0xf673=['Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','STRING','name','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Greeting','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Cut\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)'];(function(_0x5c22d3,_0x278486){var _0x1a8e18=function(_0x5e8762){while(--_0x5e8762){_0x5c22d3['push'](_0x5c22d3['shift']());}};_0x1a8e18(++_0x278486);}(_0xf673,0x1be));var _0x3f67=function(_0x1b5a5a,_0x1c3b75){_0x1b5a5a=_0x1b5a5a-0x0;var _0x42b32d=_0xf673[_0x1b5a5a];return _0x42b32d;};'use strict';var Sequelize=require(_0x3f67('0x0'));module[_0x3f67('0x1')]={'name':{'type':Sequelize[_0x3f67('0x2')],'unique':_0x3f67('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x3f67('0x4')](_0x3f67('0x5')),'allowNull':![],'defaultValue':'ivr'},'description':{'type':Sequelize[_0x3f67('0x2')]},'active':{'type':Sequelize[_0x3f67('0x6')],'defaultValue':0x0,'comment':_0x3f67('0x7')},'limitCalls':{'type':Sequelize[_0x3f67('0x8')](0x4)[_0x3f67('0x9')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x3f67('0xa')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x3f67('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x3f67('0x8')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x3f67('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3f67('0xb')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x3f67('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3f67('0xc')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x3f67('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3f67('0xd')},'dialBusyRetryFrequency':{'type':Sequelize[_0x3f67('0x8')](0x5)[_0x3f67('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3f67('0xe')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x3f67('0x8')](0x3)[_0x3f67('0x9')],'defaultValue':0x3,'comment':_0x3f67('0xf')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x3f67('0x8')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3f67('0x10')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x3f67('0x9')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x3f67('0x11')},'dialTimezone':{'type':Sequelize[_0x3f67('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x3f67('0x2')],'defaultValue':_0x3f67('0x12')},'dialCheckDuplicateType':{'type':Sequelize[_0x3f67('0x4')](_0x3f67('0x13'),_0x3f67('0x14'),_0x3f67('0x15')),'defaultValue':_0x3f67('0x13')},'dialAMDActive':{'type':Sequelize[_0x3f67('0x6')],'defaultValue':0x0,'comment':_0x3f67('0x16')},'dialAMDInitialSilence':{'type':Sequelize[_0x3f67('0x8')](0x9)[_0x3f67('0x9')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x3f67('0x8')](0x9)[_0x3f67('0x9')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x3f67('0x17')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x3f67('0x8')](0x9)[_0x3f67('0x9')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x3f67('0x8')](0x9)[_0x3f67('0x9')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x3f67('0x18')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x3f67('0x19')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x3f67('0x1a')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0x3f67('0x9')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0x3f67('0x8')](0x5)[_0x3f67('0x9')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x3f67('0x1b')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x3f67('0x8')](0x9)[_0x3f67('0x9')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x3f67('0x1c')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0x3f67('0x1d'),_0x3f67('0x1e')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0x3f67('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x3f67('0x8')](0x3)[_0x3f67('0x9')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x3f67('0x1f')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x3f67('0x8')](0x3)[_0x3f67('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x3f67('0x8')](0x5)[_0x3f67('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3f67('0x20')},'dialDropMaxRetry':{'type':Sequelize[_0x3f67('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3f67('0x21')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x3f67('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3f67('0x22')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x3f67('0x8')](0x3)[_0x3f67('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3f67('0x23')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x3f67('0x8')](0x5)[_0x3f67('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3f67('0x24')},'dialMachineMaxRetry':{'type':Sequelize[_0x3f67('0x8')](0x3)[_0x3f67('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0x3f67('0x8')](0x5)[_0x3f67('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3f67('0x25')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x3f67('0x8')](0x3)[_0x3f67('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3f67('0x26')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x3f67('0x8')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3f67('0x27')}};
\ No newline at end of file
index 4ffca71..8415415 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3344=['autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','createdAt','updatedAt','params','getHoppers','findOne','CmHopper','nolimit','findAll','getHopperHistories','CmHopperHistory','order','CampaignId','getHopperFinals','CmHopperFinal','CmHopperBlack','CmList','getLists','addLists','ids','omit','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','scheduledAt','ContactId','ListId','select','field','phone','NOW()','CmListId','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','update','then','IvrCampaigns','UserProfileResource','destroy','stack','name','send','index','map','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','type','VIRTUAL','options','Campaign','includeAll','include','rows','catch','rawAttributes','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId'];(function(_0x4a7cad,_0x5b066d){var _0x71954a=function(_0x125f43){while(--_0x125f43){_0x4a7cad['push'](_0x4a7cad['shift']());}};_0x71954a(++_0x5b066d);}(_0x3344,0xc0));var _0x4334=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3344[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x4334('0x0'));var rimraf=require(_0x4334('0x1'));var zipdir=require(_0x4334('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4334('0x3'));var BPromise=require(_0x4334('0x4'));var Mustache=require('mustache');var util=require(_0x4334('0x5'));var path=require('path');var sox=require(_0x4334('0x6'));var csv=require(_0x4334('0x7'));var ejs=require(_0x4334('0x8'));var fs=require('fs');var fs_extra=require(_0x4334('0x9'));var _=require(_0x4334('0xa'));var squel=require(_0x4334('0xb'));var crypto=require(_0x4334('0xc'));var jsforce=require(_0x4334('0xd'));var deskjs=require(_0x4334('0xe'));var toCsv=require(_0x4334('0x7'));var querystring=require('querystring');var Papa=require(_0x4334('0xf'));var Redis=require(_0x4334('0x10'));var authService=require(_0x4334('0x11'));var qs=require(_0x4334('0x12'));var as=require(_0x4334('0x13'));var hardwareService=require(_0x4334('0x14'));var logger=require(_0x4334('0x15'))(_0x4334('0x16'));var utils=require('../../config/utils');var config=require(_0x4334('0x17'));var licenseUtil=require(_0x4334('0x18'));var db=require(_0x4334('0x19'))['db'];function respondWithStatusCode(_0x2fa953,_0x33ddaa){_0x33ddaa=_0x33ddaa||0xcc;return function(_0x35b28a){if(_0x35b28a){return _0x2fa953[_0x4334('0x1a')](_0x33ddaa);}return _0x2fa953[_0x4334('0x1b')](_0x33ddaa)[_0x4334('0x1c')]();};}function respondWithResult(_0x10d587,_0x44c4ef){_0x44c4ef=_0x44c4ef||0xc8;return function(_0x49a409){if(_0x49a409){return _0x10d587[_0x4334('0x1b')](_0x44c4ef)[_0x4334('0x1d')](_0x49a409);}};}function respondWithFilteredResult(_0x438a83,_0x4db2e1){return function(_0x51d540){if(_0x51d540){var _0x187e8b=typeof _0x4db2e1[_0x4334('0x1e')]===_0x4334('0x1f')&&typeof _0x4db2e1[_0x4334('0x20')]===_0x4334('0x1f');var _0x147d99=_0x51d540[_0x4334('0x21')];var _0x394220=_0x187e8b?0x0:_0x4db2e1[_0x4334('0x1e')];var _0x3a27f5=_0x187e8b?_0x51d540[_0x4334('0x21')]:_0x4db2e1['offset']+_0x4db2e1[_0x4334('0x20')];var _0x27e668;if(_0x3a27f5>=_0x147d99){_0x3a27f5=_0x147d99;_0x27e668=0xc8;}else{_0x27e668=0xce;}_0x438a83[_0x4334('0x1b')](_0x27e668);return _0x438a83['set'](_0x4334('0x22'),_0x394220+'-'+_0x3a27f5+'/'+_0x147d99)[_0x4334('0x1d')](_0x51d540);}return null;};}function patchUpdates(_0x4e38ad){return function(_0x2cb232){try{jsonpatch['apply'](_0x2cb232,_0x4e38ad,!![]);}catch(_0x16e10e){return BPromise[_0x4334('0x23')](_0x16e10e);}return _0x2cb232['save']();};}function saveUpdates(_0x276930,_0x2476b1){return function(_0x502311){if(_0x502311){return _0x502311[_0x4334('0x24')](_0x276930)[_0x4334('0x25')](function(_0x24f0ae){return _0x24f0ae;});}return null;};}function removeEntity(_0x188a44,_0x3094e0){return function(_0x67070a){if(_0x67070a){return _0x67070a['destroy']()[_0x4334('0x25')](function(){var _0x12436a=_0x67070a['get']({'plain':!![]});var _0x3145e3=_0x4334('0x26');return db[_0x4334('0x27')][_0x4334('0x28')]({'where':{'type':_0x3145e3,'resourceId':_0x12436a['id']}})[_0x4334('0x25')](function(){return _0x67070a;});})[_0x4334('0x25')](function(){_0x188a44['status'](0xcc)[_0x4334('0x1c')]();});}};}function handleEntityNotFound(_0x4985a1,_0x5d4786){return function(_0xfd814a){if(!_0xfd814a){_0x4985a1[_0x4334('0x1a')](0x194);}return _0xfd814a;};}function handleError(_0x476255,_0x214048){_0x214048=_0x214048||0x1f4;return function(_0x4be354){logger['error'](_0x4be354[_0x4334('0x29')]);if(_0x4be354[_0x4334('0x2a')]){delete _0x4be354['name'];}_0x476255[_0x4334('0x1b')](_0x214048)[_0x4334('0x2b')](_0x4be354);};}exports[_0x4334('0x2c')]=function(_0x198281,_0x1045c0){var _0x270081={},_0x3f56f4={},_0x396121={'count':0x0,'rows':[]};var _0x5dded8=_[_0x4334('0x2d')](db['Campaign']['rawAttributes'],function(_0x2257f4){return{'name':_0x2257f4[_0x4334('0x2e')],'type':_0x2257f4['type'][_0x4334('0x2f')]};});_0x3f56f4[_0x4334('0x30')]=_[_0x4334('0x2d')](_0x5dded8,_0x4334('0x2a'));_0x3f56f4[_0x4334('0x31')]=_[_0x4334('0x32')](_0x198281[_0x4334('0x31')]);_0x3f56f4[_0x4334('0x33')]=_['intersection'](_0x3f56f4[_0x4334('0x30')],_0x3f56f4[_0x4334('0x31')]);_0x270081['attributes']=_[_0x4334('0x34')](_0x3f56f4[_0x4334('0x30')],qs[_0x4334('0x35')](_0x198281[_0x4334('0x31')][_0x4334('0x35')]));_0x270081[_0x4334('0x36')]=_0x270081[_0x4334('0x36')][_0x4334('0x37')]?_0x270081[_0x4334('0x36')]:_0x3f56f4[_0x4334('0x30')];if(!_0x198281[_0x4334('0x31')][_0x4334('0x38')]('nolimit')){_0x270081['limit']=qs[_0x4334('0x20')](_0x198281[_0x4334('0x31')][_0x4334('0x20')]);_0x270081['offset']=qs[_0x4334('0x1e')](_0x198281['query'][_0x4334('0x1e')]);}_0x270081['order']=qs['sort'](_0x198281[_0x4334('0x31')][_0x4334('0x39')]);_0x270081[_0x4334('0x3a')]=qs['filters'](_[_0x4334('0x3b')](_0x198281[_0x4334('0x31')],_0x3f56f4[_0x4334('0x33')]),_0x5dded8);if(_0x198281[_0x4334('0x31')][_0x4334('0x3c')]){_0x270081[_0x4334('0x3a')]=_[_0x4334('0x3d')](_0x270081[_0x4334('0x3a')],{'$or':_[_0x4334('0x2d')](_0x5dded8,function(_0xf56034){if(_0xf56034[_0x4334('0x3e')]!==_0x4334('0x3f')){var _0x129760={};_0x129760[_0xf56034['name']]={'$like':'%'+_0x198281[_0x4334('0x31')]['filter']+'%'};return _0x129760;}})});}_0x270081=_[_0x4334('0x3d')]({},_0x270081,_0x198281[_0x4334('0x40')]);var _0x36e40b={'where':_0x270081[_0x4334('0x3a')]};return db[_0x4334('0x41')]['count'](_0x36e40b)[_0x4334('0x25')](function(_0x2d927e){_0x396121[_0x4334('0x21')]=_0x2d927e;if(_0x198281[_0x4334('0x31')][_0x4334('0x42')]){_0x270081[_0x4334('0x43')]=[{'all':!![]}];}return db[_0x4334('0x41')]['findAll'](_0x270081);})[_0x4334('0x25')](function(_0x2f69de){_0x396121[_0x4334('0x44')]=_0x2f69de;return _0x396121;})['then'](respondWithFilteredResult(_0x1045c0,_0x270081))[_0x4334('0x45')](handleError(_0x1045c0,null));};exports['show']=function(_0xc2f460,_0x57119f){var _0x5126e9={'raw':![],'where':{'id':_0xc2f460['params']['id']}},_0x2903e7={};_0x2903e7[_0x4334('0x30')]=_['keys'](db['Campaign'][_0x4334('0x46')]);_0x2903e7[_0x4334('0x31')]=_['keys'](_0xc2f460[_0x4334('0x31')]);_0x2903e7[_0x4334('0x33')]=_[_0x4334('0x34')](_0x2903e7[_0x4334('0x30')],_0x2903e7[_0x4334('0x31')]);_0x5126e9[_0x4334('0x36')]=_[_0x4334('0x34')](_0x2903e7[_0x4334('0x30')],qs[_0x4334('0x35')](_0xc2f460[_0x4334('0x31')][_0x4334('0x35')]));_0x5126e9[_0x4334('0x36')]=_0x5126e9[_0x4334('0x36')][_0x4334('0x37')]?_0x5126e9[_0x4334('0x36')]:_0x2903e7[_0x4334('0x30')];if(_0xc2f460[_0x4334('0x31')][_0x4334('0x42')]){_0x5126e9[_0x4334('0x43')]=[{'all':!![]}];}_0x5126e9=_[_0x4334('0x3d')]({},_0x5126e9,_0xc2f460[_0x4334('0x40')]);return db['Campaign'][_0x4334('0x47')](_0x5126e9)[_0x4334('0x25')](handleEntityNotFound(_0x57119f,null))[_0x4334('0x25')](respondWithResult(_0x57119f,null))[_0x4334('0x45')](handleError(_0x57119f,null));};exports[_0x4334('0x48')]=function(_0x455e85,_0x3c4a4c){return db['Campaign']['create'](_0x455e85[_0x4334('0x49')],{})['then'](function(_0x39e2a9){var _0x1ca813=_0x455e85[_0x4334('0x4a')][_0x4334('0x4b')]({'plain':!![]});if(!_0x1ca813)throw new Error(_0x4334('0x4c'));if(_0x1ca813[_0x4334('0x4d')]===_0x4334('0x4a')){var _0xa19d6d=_0x39e2a9[_0x4334('0x4b')]({'plain':!![]});var _0x456117=_0x4334('0x26');return db[_0x4334('0x4e')][_0x4334('0x47')]({'where':{'name':_0x456117,'userProfileId':_0x1ca813[_0x4334('0x4f')]},'raw':!![]})[_0x4334('0x25')](function(_0x1dba40){if(_0x1dba40&&_0x1dba40[_0x4334('0x50')]===0x0){return db[_0x4334('0x27')]['create']({'name':_0xa19d6d[_0x4334('0x2a')],'resourceId':_0xa19d6d['id'],'type':_0x1dba40[_0x4334('0x2a')],'sectionId':_0x1dba40['id']},{})['then'](function(){return _0x39e2a9;});}else{return _0x39e2a9;}})[_0x4334('0x45')](function(_0x52f868){logger[_0x4334('0x51')](_0x4334('0x52'),_0x52f868);throw _0x52f868;});}return _0x39e2a9;})[_0x4334('0x25')](respondWithResult(_0x3c4a4c,0xc9))[_0x4334('0x45')](handleError(_0x3c4a4c,null));};exports['clone']=function(_0x48637f,_0x4d4e22){var _0x19133b={'where':{'id':_0x48637f['params']['id']}},_0x2f9fc4={};_0x2f9fc4[_0x4334('0x30')]=_['keys'](db[_0x4334('0x41')]['rawAttributes']);_0x19133b[_0x4334('0x36')]=_[_0x4334('0x34')](_0x2f9fc4[_0x4334('0x30')],qs['fields'](_0x48637f[_0x4334('0x31')][_0x4334('0x35')]));_0x19133b[_0x4334('0x36')]=_0x19133b[_0x4334('0x36')][_0x4334('0x37')]?_0x19133b['attributes']:_0x2f9fc4[_0x4334('0x30')];if(_0x48637f[_0x4334('0x31')][_0x4334('0x42')]){_0x19133b['include']=[{'all':!![]}];}_0x19133b=_[_0x4334('0x3d')]({},_0x19133b,_0x48637f['options']);return db[_0x4334('0x41')][_0x4334('0x47')](_0x19133b)[_0x4334('0x25')](handleEntityNotFound(_0x4d4e22,null))[_0x4334('0x25')](function(_0x3f8052){if(_0x3f8052){var _0x25c57c=_0x3f8052[_0x4334('0x4b')]({'plain':!![]});_0x25c57c=qs['omit'](_0x25c57c,['id',_0x4334('0x53'),_0x4334('0x54')]);_0x48637f[_0x4334('0x49')]=_['omit'](_0x48637f['body'],['id','createdAt',_0x4334('0x54')]);return db[_0x4334('0x41')]['create'](_['merge'](_0x25c57c,_0x48637f[_0x4334('0x49')]),{'include':_0x48637f[_0x4334('0x31')][_0x4334('0x42')]?[{'all':!![]}]:undefined})[_0x4334('0x25')](function(_0x5aae93){var _0x4593a6=_0x48637f[_0x4334('0x4a')]['get']({'plain':!![]});if(!_0x4593a6)throw new Error(_0x4334('0x4c'));if(_0x4593a6[_0x4334('0x4d')]===_0x4334('0x4a')){var _0x13286c=_0x5aae93[_0x4334('0x4b')]({'plain':!![]});var _0x5fa2ee='IvrCampaigns';return db[_0x4334('0x4e')][_0x4334('0x47')]({'where':{'name':_0x5fa2ee,'userProfileId':_0x4593a6[_0x4334('0x4f')]},'raw':!![]})[_0x4334('0x25')](function(_0x293b67){if(_0x293b67&&_0x293b67[_0x4334('0x50')]===0x0){return db['UserProfileResource'][_0x4334('0x48')]({'name':_0x13286c[_0x4334('0x2a')],'resourceId':_0x13286c['id'],'type':_0x293b67[_0x4334('0x2a')],'sectionId':_0x293b67['id']},{})[_0x4334('0x25')](function(){return _0x5aae93;});}else{return _0x5aae93;}})[_0x4334('0x45')](function(_0x602428){logger[_0x4334('0x51')](_0x4334('0x52'),_0x602428);throw _0x602428;});}return _0x5aae93;});}})[_0x4334('0x25')](respondWithResult(_0x4d4e22,0xc9))[_0x4334('0x45')](handleError(_0x4d4e22,null));};exports['update']=function(_0x4f6231,_0x366d4b){if(_0x4f6231[_0x4334('0x49')]['id']){delete _0x4f6231[_0x4334('0x49')]['id'];}return db['Campaign'][_0x4334('0x47')]({'where':{'id':_0x4f6231[_0x4334('0x55')]['id']}})[_0x4334('0x25')](handleEntityNotFound(_0x366d4b,null))[_0x4334('0x25')](saveUpdates(_0x4f6231[_0x4334('0x49')],null))[_0x4334('0x25')](respondWithResult(_0x366d4b,null))[_0x4334('0x45')](handleError(_0x366d4b,null));};exports['destroy']=function(_0x3d7ac8,_0x2e0130){return db['Campaign']['find']({'where':{'id':_0x3d7ac8[_0x4334('0x55')]['id']}})[_0x4334('0x25')](handleEntityNotFound(_0x2e0130,null))[_0x4334('0x25')](removeEntity(_0x2e0130,null))[_0x4334('0x45')](handleError(_0x2e0130,null));};exports[_0x4334('0x56')]=function(_0x373ca2,_0x14ba06,_0xe9ea08){var _0x3649fb={'raw':!![],'where':{}};var _0x5b5869={};var _0x558b18={'count':0x0,'rows':[]};return db[_0x4334('0x41')][_0x4334('0x57')]({'where':{'id':_0x373ca2[_0x4334('0x55')]['id']}})['then'](handleEntityNotFound(_0x14ba06,null))[_0x4334('0x25')](function(_0x2eadee){if(_0x2eadee){_0x5b5869[_0x4334('0x30')]=_['keys'](db[_0x4334('0x58')]['rawAttributes']);_0x5b5869[_0x4334('0x31')]=_[_0x4334('0x32')](_0x373ca2[_0x4334('0x31')]);_0x5b5869['filters']=_[_0x4334('0x34')](_0x5b5869[_0x4334('0x30')],_0x5b5869[_0x4334('0x31')]);_0x3649fb['attributes']=_[_0x4334('0x34')](_0x5b5869[_0x4334('0x30')],qs[_0x4334('0x35')](_0x373ca2[_0x4334('0x31')]['fields']));_0x3649fb['attributes']=_0x3649fb[_0x4334('0x36')][_0x4334('0x37')]?_0x3649fb[_0x4334('0x36')]:_0x5b5869[_0x4334('0x30')];if(!_0x373ca2[_0x4334('0x31')][_0x4334('0x38')](_0x4334('0x59'))){_0x3649fb[_0x4334('0x20')]=qs['limit'](_0x373ca2[_0x4334('0x31')]['limit']);_0x3649fb[_0x4334('0x1e')]=qs[_0x4334('0x1e')](_0x373ca2[_0x4334('0x31')][_0x4334('0x1e')]);}_0x3649fb['order']=qs['sort'](_0x373ca2[_0x4334('0x31')][_0x4334('0x39')]);_0x3649fb[_0x4334('0x3a')]=qs[_0x4334('0x33')](_[_0x4334('0x3b')](_0x373ca2[_0x4334('0x31')],_0x5b5869[_0x4334('0x33')]));_0x3649fb[_0x4334('0x3a')]['CampaignId']=_0x2eadee['id'];if(_0x373ca2['query'][_0x4334('0x3c')]){_0x3649fb[_0x4334('0x3a')]=_[_0x4334('0x3d')](_0x3649fb[_0x4334('0x3a')],{'$or':_[_0x4334('0x2d')](_0x3649fb[_0x4334('0x36')],function(_0x12917d){var _0x485d11={};_0x485d11[_0x12917d]={'$like':'%'+_0x373ca2[_0x4334('0x31')][_0x4334('0x3c')]+'%'};return _0x485d11;})});}_0x3649fb=_[_0x4334('0x3d')]({},_0x3649fb,_0x373ca2[_0x4334('0x40')]);return db[_0x4334('0x58')][_0x4334('0x21')]({'where':_0x3649fb[_0x4334('0x3a')]})[_0x4334('0x25')](function(_0x1b8920){_0x558b18[_0x4334('0x21')]=_0x1b8920;if(_0x373ca2[_0x4334('0x31')][_0x4334('0x42')]){_0x3649fb[_0x4334('0x43')]=[{'all':!![]}];}return db[_0x4334('0x58')][_0x4334('0x5a')](_0x3649fb);})[_0x4334('0x25')](function(_0x297ec4){_0x558b18[_0x4334('0x44')]=_0x297ec4;return _0x558b18;});}})['then'](respondWithFilteredResult(_0x14ba06,_0x3649fb))[_0x4334('0x45')](handleError(_0x14ba06,null));};exports[_0x4334('0x5b')]=function(_0x4ecc2b,_0xf5b2a4,_0x3cf362){var _0x19b266={'raw':!![],'where':{}};var _0x515b1c={};var _0x2e5be5={'count':0x0,'rows':[]};return db['Campaign'][_0x4334('0x57')]({'where':{'id':_0x4ecc2b[_0x4334('0x55')]['id']}})['then'](handleEntityNotFound(_0xf5b2a4,null))[_0x4334('0x25')](function(_0x3ee005){if(_0x3ee005){_0x515b1c['model']=_[_0x4334('0x32')](db[_0x4334('0x5c')][_0x4334('0x46')]);_0x515b1c[_0x4334('0x31')]=_[_0x4334('0x32')](_0x4ecc2b[_0x4334('0x31')]);_0x515b1c[_0x4334('0x33')]=_['intersection'](_0x515b1c[_0x4334('0x30')],_0x515b1c[_0x4334('0x31')]);_0x19b266[_0x4334('0x36')]=_['intersection'](_0x515b1c[_0x4334('0x30')],qs[_0x4334('0x35')](_0x4ecc2b[_0x4334('0x31')][_0x4334('0x35')]));_0x19b266[_0x4334('0x36')]=_0x19b266[_0x4334('0x36')][_0x4334('0x37')]?_0x19b266[_0x4334('0x36')]:_0x515b1c['model'];if(!_0x4ecc2b[_0x4334('0x31')][_0x4334('0x38')]('nolimit')){_0x19b266['limit']=qs[_0x4334('0x20')](_0x4ecc2b[_0x4334('0x31')][_0x4334('0x20')]);_0x19b266[_0x4334('0x1e')]=qs[_0x4334('0x1e')](_0x4ecc2b['query'][_0x4334('0x1e')]);}_0x19b266[_0x4334('0x5d')]=qs[_0x4334('0x39')](_0x4ecc2b[_0x4334('0x31')][_0x4334('0x39')]);_0x19b266['where']=qs[_0x4334('0x33')](_[_0x4334('0x3b')](_0x4ecc2b[_0x4334('0x31')],_0x515b1c[_0x4334('0x33')]));_0x19b266['where'][_0x4334('0x5e')]=_0x3ee005['id'];if(_0x4ecc2b['query']['filter']){_0x19b266['where']=_[_0x4334('0x3d')](_0x19b266[_0x4334('0x3a')],{'$or':_[_0x4334('0x2d')](_0x19b266['attributes'],function(_0x44536c){var _0x477d09={};_0x477d09[_0x44536c]={'$like':'%'+_0x4ecc2b[_0x4334('0x31')][_0x4334('0x3c')]+'%'};return _0x477d09;})});}_0x19b266=_['merge']({},_0x19b266,_0x4ecc2b[_0x4334('0x40')]);return db[_0x4334('0x5c')][_0x4334('0x21')]({'where':_0x19b266[_0x4334('0x3a')]})['then'](function(_0x3aa774){_0x2e5be5[_0x4334('0x21')]=_0x3aa774;if(_0x4ecc2b[_0x4334('0x31')][_0x4334('0x42')]){_0x19b266['include']=[{'all':!![]}];}return db[_0x4334('0x5c')]['findAll'](_0x19b266);})[_0x4334('0x25')](function(_0x38c622){_0x2e5be5[_0x4334('0x44')]=_0x38c622;return _0x2e5be5;});}})['then'](respondWithFilteredResult(_0xf5b2a4,_0x19b266))[_0x4334('0x45')](handleError(_0xf5b2a4,null));};exports[_0x4334('0x5f')]=function(_0x408508,_0x49c1d0,_0x55034f){var _0x26f96a={'raw':!![],'where':{}};var _0x199954={};var _0x43f4c7={'count':0x0,'rows':[]};return db[_0x4334('0x41')][_0x4334('0x57')]({'where':{'id':_0x408508[_0x4334('0x55')]['id']}})[_0x4334('0x25')](handleEntityNotFound(_0x49c1d0,null))[_0x4334('0x25')](function(_0x4e11b0){if(_0x4e11b0){_0x199954[_0x4334('0x30')]=_[_0x4334('0x32')](db[_0x4334('0x60')][_0x4334('0x46')]);_0x199954[_0x4334('0x31')]=_[_0x4334('0x32')](_0x408508['query']);_0x199954[_0x4334('0x33')]=_[_0x4334('0x34')](_0x199954['model'],_0x199954[_0x4334('0x31')]);_0x26f96a[_0x4334('0x36')]=_[_0x4334('0x34')](_0x199954[_0x4334('0x30')],qs[_0x4334('0x35')](_0x408508[_0x4334('0x31')][_0x4334('0x35')]));_0x26f96a[_0x4334('0x36')]=_0x26f96a[_0x4334('0x36')][_0x4334('0x37')]?_0x26f96a[_0x4334('0x36')]:_0x199954[_0x4334('0x30')];if(!_0x408508[_0x4334('0x31')][_0x4334('0x38')](_0x4334('0x59'))){_0x26f96a['limit']=qs[_0x4334('0x20')](_0x408508[_0x4334('0x31')][_0x4334('0x20')]);_0x26f96a['offset']=qs[_0x4334('0x1e')](_0x408508[_0x4334('0x31')][_0x4334('0x1e')]);}_0x26f96a[_0x4334('0x5d')]=qs['sort'](_0x408508[_0x4334('0x31')][_0x4334('0x39')]);_0x26f96a[_0x4334('0x3a')]=qs[_0x4334('0x33')](_[_0x4334('0x3b')](_0x408508[_0x4334('0x31')],_0x199954[_0x4334('0x33')]));_0x26f96a[_0x4334('0x3a')][_0x4334('0x5e')]=_0x4e11b0['id'];if(_0x408508[_0x4334('0x31')][_0x4334('0x3c')]){_0x26f96a[_0x4334('0x3a')]=_['merge'](_0x26f96a[_0x4334('0x3a')],{'$or':_[_0x4334('0x2d')](_0x26f96a['attributes'],function(_0x454e5b){var _0xa6db1b={};_0xa6db1b[_0x454e5b]={'$like':'%'+_0x408508[_0x4334('0x31')]['filter']+'%'};return _0xa6db1b;})});}_0x26f96a=_[_0x4334('0x3d')]({},_0x26f96a,_0x408508['options']);return db['CmHopperFinal'][_0x4334('0x21')]({'where':_0x26f96a[_0x4334('0x3a')]})[_0x4334('0x25')](function(_0x114436){_0x43f4c7[_0x4334('0x21')]=_0x114436;if(_0x408508[_0x4334('0x31')][_0x4334('0x42')]){_0x26f96a[_0x4334('0x43')]=[{'all':!![]}];}return db[_0x4334('0x60')][_0x4334('0x5a')](_0x26f96a);})['then'](function(_0x330dc0){_0x43f4c7[_0x4334('0x44')]=_0x330dc0;return _0x43f4c7;});}})[_0x4334('0x25')](respondWithFilteredResult(_0x49c1d0,_0x26f96a))['catch'](handleError(_0x49c1d0,null));};exports['getHopperBlacks']=function(_0x437f38,_0x584f6b,_0x59b1dd){var _0x5cb97a={'raw':!![],'where':{}};var _0x2018c7={};var _0x5eaa6d={'count':0x0,'rows':[]};return db['Campaign'][_0x4334('0x57')]({'where':{'id':_0x437f38[_0x4334('0x55')]['id']}})[_0x4334('0x25')](handleEntityNotFound(_0x584f6b,null))[_0x4334('0x25')](function(_0x258aed){if(_0x258aed){_0x2018c7[_0x4334('0x30')]=_[_0x4334('0x32')](db[_0x4334('0x61')][_0x4334('0x46')]);_0x2018c7[_0x4334('0x31')]=_['keys'](_0x437f38[_0x4334('0x31')]);_0x2018c7['filters']=_[_0x4334('0x34')](_0x2018c7[_0x4334('0x30')],_0x2018c7['query']);_0x5cb97a['attributes']=_[_0x4334('0x34')](_0x2018c7['model'],qs['fields'](_0x437f38[_0x4334('0x31')][_0x4334('0x35')]));_0x5cb97a[_0x4334('0x36')]=_0x5cb97a[_0x4334('0x36')][_0x4334('0x37')]?_0x5cb97a[_0x4334('0x36')]:_0x2018c7[_0x4334('0x30')];if(!_0x437f38[_0x4334('0x31')][_0x4334('0x38')](_0x4334('0x59'))){_0x5cb97a[_0x4334('0x20')]=qs['limit'](_0x437f38[_0x4334('0x31')][_0x4334('0x20')]);_0x5cb97a[_0x4334('0x1e')]=qs['offset'](_0x437f38[_0x4334('0x31')][_0x4334('0x1e')]);}_0x5cb97a[_0x4334('0x5d')]=qs[_0x4334('0x39')](_0x437f38['query'][_0x4334('0x39')]);_0x5cb97a['where']=qs[_0x4334('0x33')](_[_0x4334('0x3b')](_0x437f38[_0x4334('0x31')],_0x2018c7['filters']));_0x5cb97a[_0x4334('0x3a')][_0x4334('0x5e')]=_0x258aed['id'];if(_0x437f38['query']['filter']){_0x5cb97a[_0x4334('0x3a')]=_[_0x4334('0x3d')](_0x5cb97a['where'],{'$or':_[_0x4334('0x2d')](_0x5cb97a[_0x4334('0x36')],function(_0x50b54b){var _0x24138b={};_0x24138b[_0x50b54b]={'$like':'%'+_0x437f38[_0x4334('0x31')]['filter']+'%'};return _0x24138b;})});}_0x5cb97a=_[_0x4334('0x3d')]({},_0x5cb97a,_0x437f38[_0x4334('0x40')]);return db['CmHopperBlack']['count']({'where':_0x5cb97a[_0x4334('0x3a')]})[_0x4334('0x25')](function(_0x550fc2){_0x5eaa6d[_0x4334('0x21')]=_0x550fc2;if(_0x437f38[_0x4334('0x31')][_0x4334('0x42')]){_0x5cb97a['include']=[{'all':!![]}];}return db[_0x4334('0x61')][_0x4334('0x5a')](_0x5cb97a);})['then'](function(_0x2f5fa0){_0x5eaa6d['rows']=_0x2f5fa0;return _0x5eaa6d;});}})[_0x4334('0x25')](respondWithFilteredResult(_0x584f6b,_0x5cb97a))['catch'](handleError(_0x584f6b,null));};exports['getLists']=function(_0x54e90b,_0x6918,_0x472c88){var _0x4d514e={};var _0x2203dd={};var _0x113f5f;var _0x292807;return db[_0x4334('0x41')][_0x4334('0x57')]({'where':{'id':_0x54e90b['params']['id']}})[_0x4334('0x25')](handleEntityNotFound(_0x6918,null))['then'](function(_0x347c92){if(_0x347c92){_0x113f5f=_0x347c92;_0x2203dd[_0x4334('0x30')]=_[_0x4334('0x32')](db[_0x4334('0x62')][_0x4334('0x46')]);_0x2203dd['query']=_[_0x4334('0x32')](_0x54e90b[_0x4334('0x31')]);_0x2203dd[_0x4334('0x33')]=_[_0x4334('0x34')](_0x2203dd[_0x4334('0x30')],_0x2203dd[_0x4334('0x31')]);_0x4d514e[_0x4334('0x36')]=_[_0x4334('0x34')](_0x2203dd[_0x4334('0x30')],qs['fields'](_0x54e90b[_0x4334('0x31')][_0x4334('0x35')]));_0x4d514e[_0x4334('0x36')]=_0x4d514e[_0x4334('0x36')][_0x4334('0x37')]?_0x4d514e[_0x4334('0x36')]:_0x2203dd[_0x4334('0x30')];_0x4d514e[_0x4334('0x5d')]=qs[_0x4334('0x39')](_0x54e90b['query'][_0x4334('0x39')]);_0x4d514e[_0x4334('0x3a')]=qs[_0x4334('0x33')](_[_0x4334('0x3b')](_0x54e90b[_0x4334('0x31')],_0x2203dd[_0x4334('0x33')]));if(_0x54e90b[_0x4334('0x31')][_0x4334('0x3c')]){_0x4d514e[_0x4334('0x3a')]=_['merge'](_0x4d514e[_0x4334('0x3a')],{'$or':_['map'](_0x4d514e[_0x4334('0x36')],function(_0xbcf140){var _0x37254d={};_0x37254d[_0xbcf140]={'$like':'%'+_0x54e90b[_0x4334('0x31')][_0x4334('0x3c')]+'%'};return _0x37254d;})});}_0x4d514e=_['merge']({},_0x4d514e,_0x54e90b['options']);return _0x113f5f['getLists'](_0x4d514e);}})[_0x4334('0x25')](function(_0x370301){if(_0x370301){_0x292807=_0x370301['length'];if(!_0x54e90b[_0x4334('0x31')][_0x4334('0x38')]('nolimit')){_0x4d514e[_0x4334('0x20')]=qs[_0x4334('0x20')](_0x54e90b['query']['limit']);_0x4d514e[_0x4334('0x1e')]=qs[_0x4334('0x1e')](_0x54e90b['query']['offset']);}return _0x113f5f[_0x4334('0x63')](_0x4d514e);}})[_0x4334('0x25')](function(_0x1997a5){if(_0x1997a5){return _0x1997a5?{'count':_0x292807,'rows':_0x1997a5}:null;}})[_0x4334('0x25')](respondWithResult(_0x6918,null))[_0x4334('0x45')](handleError(_0x6918,null));};exports[_0x4334('0x64')]=function(_0x1d08d3,_0x5660bc,_0x487121){var _0x32020e,_0xfcabae;return db[_0x4334('0x41')]['find']({'where':{'id':_0x1d08d3['params']['id']}})[_0x4334('0x25')](handleEntityNotFound(_0x5660bc,null))[_0x4334('0x25')](function(_0x2667f9){if(_0x2667f9){_0xfcabae=_0x2667f9;return _0x2667f9[_0x4334('0x64')](_0x1d08d3[_0x4334('0x49')][_0x4334('0x65')],_[_0x4334('0x66')](_0x1d08d3[_0x4334('0x49')],[_0x4334('0x65'),'id'])||{});}return null;})[_0x4334('0x67')](function(_0x507143){var _0x1de504;_0x32020e=_0x507143||[];var _0x31aa31=[];if(_0x507143){for(var _0x2a683f=0x0;_0x2a683f<_0x507143[_0x4334('0x37')];_0x2a683f+=0x1){var _0x72172e=_0x507143[_0x2a683f][_0x4334('0x4b')]({'plain':!![]});_0xfcabae['dialCheckDuplicateType']=_0x1d08d3['body'][_0x4334('0x68')]?_0x1d08d3['body'][_0x4334('0x68')]:_0xfcabae[_0x4334('0x68')];switch(_0xfcabae['dialCheckDuplicateType']){case _0x4334('0x69'):_0x1de504=squel[_0x4334('0x6a')]()[_0x4334('0x6b')](_0x4334('0x6c'))[_0x4334('0x6d')](['phone',_0x4334('0x6e'),_0x4334('0x6f'),_0x4334('0x70'),_0x4334('0x5e'),_0x4334('0x53'),_0x4334('0x54')],squel[_0x4334('0x71')]()[_0x4334('0x72')](_0x4334('0x73'),_0x4334('0x73'))['field'](_0x4334('0x74'),_0x4334('0x6e'))[_0x4334('0x72')]('id',_0x4334('0x6f'))[_0x4334('0x72')](_0x72172e[_0x4334('0x75')][_0x4334('0x76')](),_0x4334('0x70'))[_0x4334('0x72')](_0x1d08d3[_0x4334('0x55')]['id'][_0x4334('0x76')](),_0x4334('0x5e'))[_0x4334('0x72')](_0x4334('0x74'),_0x4334('0x53'))['field'](_0x4334('0x74'),'updatedAt')[_0x4334('0x77')](_0x4334('0x78'))['where'](_0x4334('0x79'))[_0x4334('0x3a')](_0x4334('0x7a'),_0x72172e[_0x4334('0x75')][_0x4334('0x76')]())[_0x4334('0x3a')](_0x4334('0x7b'))[_0x4334('0x3a')](_0x4334('0x7c'),squel[_0x4334('0x71')]()[_0x4334('0x72')](_0x4334('0x7d'))['from']('cm_hopper_final')[_0x4334('0x3a')](_0x4334('0x7e'),_0x1d08d3['params']['id'][_0x4334('0x76')]()))[_0x4334('0x3a')](_0x4334('0x7c'),squel[_0x4334('0x71')]()['field'](_0x4334('0x7f'))[_0x4334('0x77')]('cm_hopper')[_0x4334('0x3a')](_0x4334('0x7e'),_0x1d08d3['params']['id'][_0x4334('0x76')]())))[_0x4334('0x76')]();break;case'onlyIfOpen':_0x1de504=squel['insert']()['into'](_0x4334('0x6c'))[_0x4334('0x6d')](['phone','scheduledAt','ContactId',_0x4334('0x70'),_0x4334('0x5e'),'createdAt',_0x4334('0x54')],squel[_0x4334('0x71')]()[_0x4334('0x72')](_0x4334('0x73'),'phone')[_0x4334('0x72')](_0x4334('0x74'),'scheduledAt')[_0x4334('0x72')]('id',_0x4334('0x6f'))['field'](_0x72172e['CmListId'][_0x4334('0x76')](),_0x4334('0x70'))[_0x4334('0x72')](_0x1d08d3[_0x4334('0x55')]['id']['toString'](),'CampaignId')['field']('NOW()','createdAt')[_0x4334('0x72')](_0x4334('0x74'),_0x4334('0x54'))['from'](_0x4334('0x78'))[_0x4334('0x3a')](_0x4334('0x79'))['where'](_0x4334('0x7a'),_0x72172e[_0x4334('0x75')][_0x4334('0x76')]())[_0x4334('0x3a')](_0x4334('0x7b'))[_0x4334('0x3a')]('phone\x20NOT\x20IN\x20(?)',squel[_0x4334('0x71')]()[_0x4334('0x72')](_0x4334('0x7f'))[_0x4334('0x77')](_0x4334('0x6c'))[_0x4334('0x3a')](_0x4334('0x7e'),_0x1d08d3[_0x4334('0x55')]['id'][_0x4334('0x76')]())))['toString']();break;default:_0x1de504=squel[_0x4334('0x6a')]()[_0x4334('0x6b')](_0x4334('0x6c'))[_0x4334('0x6d')]([_0x4334('0x73'),_0x4334('0x6e'),_0x4334('0x6f'),'ListId',_0x4334('0x5e'),'createdAt',_0x4334('0x54')],squel[_0x4334('0x71')]()[_0x4334('0x72')]('phone',_0x4334('0x73'))[_0x4334('0x72')](_0x4334('0x74'),_0x4334('0x6e'))['field']('id',_0x4334('0x6f'))[_0x4334('0x72')](_0x72172e[_0x4334('0x75')][_0x4334('0x76')](),'ListId')['field'](_0x1d08d3['params']['id'][_0x4334('0x76')](),_0x4334('0x5e'))[_0x4334('0x72')](_0x4334('0x74'),_0x4334('0x53'))['field']('NOW()',_0x4334('0x54'))['from'](_0x4334('0x78'))[_0x4334('0x3a')](_0x4334('0x79'))[_0x4334('0x3a')](_0x4334('0x7a'),_0x72172e[_0x4334('0x75')][_0x4334('0x76')]())[_0x4334('0x3a')](_0x4334('0x7b')))[_0x4334('0x76')]();}_0x31aa31[_0x4334('0x80')](db[_0x4334('0x81')][_0x4334('0x31')](_0x1de504));}return BPromise[_0x4334('0x82')](_0x31aa31);}})[_0x4334('0x25')](function(){return _0x32020e;})[_0x4334('0x25')](respondWithResult(_0x5660bc,null))[_0x4334('0x45')](handleError(_0x5660bc,null));};exports[_0x4334('0x83')]=function(_0x197d7e,_0x5aa0eb,_0xe7df63){return db[_0x4334('0x41')]['find']({'where':{'id':_0x197d7e[_0x4334('0x55')]['id']}})[_0x4334('0x25')](handleEntityNotFound(_0x5aa0eb,null))[_0x4334('0x25')](function(_0x468dd0){if(_0x468dd0){return _0x468dd0[_0x4334('0x83')](_0x197d7e[_0x4334('0x31')]['ids']);}})['then'](function(_0x395c52){if(_0x395c52){return db[_0x4334('0x58')][_0x4334('0x28')]({'where':{'ListId':_0x197d7e['query'][_0x4334('0x65')],'CampaignId':_0x197d7e[_0x4334('0x55')]['id']}})[_0x4334('0x25')](function(){return _0x395c52;});}})[_0x4334('0x25')](respondWithStatusCode(_0x5aa0eb,null))[_0x4334('0x45')](handleError(_0x5aa0eb,null));};exports['getBlackLists']=function(_0x51245f,_0x48f3af,_0x30eb43){var _0x1d4e98={};var _0x57e04d={};var _0x579ff8;var _0x22c255;return db[_0x4334('0x41')][_0x4334('0x57')]({'where':{'id':_0x51245f['params']['id']}})['then'](handleEntityNotFound(_0x48f3af,null))[_0x4334('0x25')](function(_0x3490a1){if(_0x3490a1){_0x579ff8=_0x3490a1;_0x57e04d[_0x4334('0x30')]=_[_0x4334('0x32')](db[_0x4334('0x62')][_0x4334('0x46')]);_0x57e04d['query']=_[_0x4334('0x32')](_0x51245f[_0x4334('0x31')]);_0x57e04d[_0x4334('0x33')]=_['intersection'](_0x57e04d[_0x4334('0x30')],_0x57e04d[_0x4334('0x31')]);_0x1d4e98[_0x4334('0x36')]=_[_0x4334('0x34')](_0x57e04d[_0x4334('0x30')],qs['fields'](_0x51245f[_0x4334('0x31')][_0x4334('0x35')]));_0x1d4e98[_0x4334('0x36')]=_0x1d4e98[_0x4334('0x36')][_0x4334('0x37')]?_0x1d4e98[_0x4334('0x36')]:_0x57e04d[_0x4334('0x30')];_0x1d4e98[_0x4334('0x5d')]=qs['sort'](_0x51245f[_0x4334('0x31')][_0x4334('0x39')]);_0x1d4e98['where']=qs[_0x4334('0x33')](_['pick'](_0x51245f[_0x4334('0x31')],_0x57e04d[_0x4334('0x33')]));if(_0x51245f[_0x4334('0x31')][_0x4334('0x3c')]){_0x1d4e98['where']=_[_0x4334('0x3d')](_0x1d4e98['where'],{'$or':_[_0x4334('0x2d')](_0x1d4e98[_0x4334('0x36')],function(_0x26a45d){var _0x4a9872={};_0x4a9872[_0x26a45d]={'$like':'%'+_0x51245f[_0x4334('0x31')][_0x4334('0x3c')]+'%'};return _0x4a9872;})});}_0x1d4e98=_[_0x4334('0x3d')]({},_0x1d4e98,_0x51245f['options']);return _0x579ff8[_0x4334('0x84')](_0x1d4e98);}})['then'](function(_0x7961a6){if(_0x7961a6){_0x22c255=_0x7961a6['length'];if(!_0x51245f['query'][_0x4334('0x38')](_0x4334('0x59'))){_0x1d4e98[_0x4334('0x20')]=qs[_0x4334('0x20')](_0x51245f[_0x4334('0x31')][_0x4334('0x20')]);_0x1d4e98[_0x4334('0x1e')]=qs[_0x4334('0x1e')](_0x51245f[_0x4334('0x31')][_0x4334('0x1e')]);}return _0x579ff8[_0x4334('0x84')](_0x1d4e98);}})[_0x4334('0x25')](function(_0x272659){if(_0x272659){return _0x272659?{'count':_0x22c255,'rows':_0x272659}:null;}})[_0x4334('0x25')](respondWithResult(_0x48f3af,null))[_0x4334('0x45')](handleError(_0x48f3af,null));};exports[_0x4334('0x85')]=function(_0x83a275,_0x9be36,_0x58af09){var _0x36e47e,_0x41fe52;return db[_0x4334('0x41')][_0x4334('0x47')]({'where':{'id':_0x83a275['params']['id']}})['then'](handleEntityNotFound(_0x9be36,null))['then'](function(_0x4dee4d){if(_0x4dee4d){_0x41fe52=_0x4dee4d;return _0x4dee4d[_0x4334('0x85')](_0x83a275['body'][_0x4334('0x65')],_[_0x4334('0x66')](_0x83a275[_0x4334('0x49')],[_0x4334('0x65'),'id'])||{});}return null;})[_0x4334('0x67')](function(_0x324b93){var _0xdfabf8;_0x36e47e=_0x324b93||[];var _0x20ac64=[];if(_0x324b93){for(var _0x509bcd=0x0;_0x509bcd<_0x324b93[_0x4334('0x37')];_0x509bcd+=0x1){var _0x247f93=_0x324b93[_0x509bcd][_0x4334('0x4b')]({'plain':!![]});_0xdfabf8=squel[_0x4334('0x6a')]()[_0x4334('0x6b')](_0x4334('0x86'))['fromQuery']([_0x4334('0x73'),_0x4334('0x6f'),_0x4334('0x70'),_0x4334('0x5e'),_0x4334('0x53'),_0x4334('0x54')],squel['select']()[_0x4334('0x72')](_0x4334('0x73'),_0x4334('0x73'))[_0x4334('0x72')]('id',_0x4334('0x6f'))[_0x4334('0x72')](_0x247f93[_0x4334('0x75')]['toString'](),'ListId')[_0x4334('0x72')](_0x83a275[_0x4334('0x55')]['id']['toString'](),_0x4334('0x5e'))['field']('NOW()','createdAt')[_0x4334('0x72')]('NOW()','updatedAt')['from']('cm_contacts')[_0x4334('0x3a')](_0x4334('0x79'))[_0x4334('0x3a')](_0x4334('0x7a'),_0x247f93[_0x4334('0x75')]['toString']())['where'](_0x4334('0x7b')))['toString']();_0x20ac64['push'](db[_0x4334('0x81')][_0x4334('0x31')](_0xdfabf8));}return BPromise[_0x4334('0x82')](_0x20ac64);}})[_0x4334('0x25')](function(){return _0x36e47e;})['then'](respondWithResult(_0x9be36,null))[_0x4334('0x45')](handleError(_0x9be36,null));};exports['removeBlackLists']=function(_0x237744,_0x502d59,_0x3f421a){return db[_0x4334('0x41')]['find']({'where':{'id':_0x237744['params']['id']}})[_0x4334('0x25')](handleEntityNotFound(_0x502d59,null))[_0x4334('0x25')](function(_0x4631cc){if(_0x4631cc){return _0x4631cc[_0x4334('0x87')](_0x237744['query']['ids']);}})[_0x4334('0x25')](function(_0x18d7d1){if(_0x18d7d1){return db[_0x4334('0x61')]['destroy']({'where':{'ListId':_0x237744['query']['ids'],'CampaignId':_0x237744[_0x4334('0x55')]['id']}})[_0x4334('0x25')](function(){return _0x18d7d1;});}})[_0x4334('0x25')](respondWithStatusCode(_0x502d59,null))[_0x4334('0x45')](handleError(_0x502d59,null));};
\ No newline at end of file
+var _0xcf93=['querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','offset','count','set','Content-Range','apply','save','then','get','IvrCampaigns','UserProfileResource','destroy','end','error','stack','name','send','map','Campaign','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','show','params','include','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','UserProfileSection','findOne','CmHopper','order','CampaignId','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','CmHopperBlack','getLists','CmList','addLists','ids','spread','dialCheckDuplicateType','always','into','cm_hopper','scheduledAt','ContactId','ListId','select','field','NOW()','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','CmListId','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','insert','fromQuery','phone','ListId\x20=\x20?','sequelize','removeLists','getBlackLists','addBlackLists','push','all','removeBlackLists','rimraf','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js'];(function(_0x5c7a85,_0x41dd19){var _0x35290f=function(_0x26215b){while(--_0x26215b){_0x5c7a85['push'](_0x5c7a85['shift']());}};_0x35290f(++_0x41dd19);}(_0xcf93,0x101));var _0x3cf9=function(_0x1cdcd2,_0x1931e5){_0x1cdcd2=_0x1cdcd2-0x0;var _0x1027d8=_0xcf93[_0x1cdcd2];return _0x1027d8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3cf9('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3cf9('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3cf9('0x2'));var Mustache=require('mustache');var util=require(_0x3cf9('0x3'));var path=require(_0x3cf9('0x4'));var sox=require(_0x3cf9('0x5'));var csv=require(_0x3cf9('0x6'));var ejs=require(_0x3cf9('0x7'));var fs=require('fs');var fs_extra=require(_0x3cf9('0x8'));var _=require(_0x3cf9('0x9'));var squel=require(_0x3cf9('0xa'));var crypto=require('crypto');var jsforce=require(_0x3cf9('0xb'));var deskjs=require(_0x3cf9('0xc'));var toCsv=require('to-csv');var querystring=require(_0x3cf9('0xd'));var Papa=require('papaparse');var Redis=require(_0x3cf9('0xe'));var authService=require(_0x3cf9('0xf'));var qs=require(_0x3cf9('0x10'));var as=require(_0x3cf9('0x11'));var hardwareService=require(_0x3cf9('0x12'));var logger=require(_0x3cf9('0x13'))(_0x3cf9('0x14'));var utils=require(_0x3cf9('0x15'));var config=require(_0x3cf9('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x3cf9('0x17'))['db'];function respondWithStatusCode(_0x5482cb,_0x2f71bd){_0x2f71bd=_0x2f71bd||0xcc;return function(_0x46b273){if(_0x46b273){return _0x5482cb[_0x3cf9('0x18')](_0x2f71bd);}return _0x5482cb[_0x3cf9('0x19')](_0x2f71bd)['end']();};}function respondWithResult(_0x1ada59,_0x9b9794){_0x9b9794=_0x9b9794||0xc8;return function(_0x475f8c){if(_0x475f8c){return _0x1ada59[_0x3cf9('0x19')](_0x9b9794)[_0x3cf9('0x1a')](_0x475f8c);}};}function respondWithFilteredResult(_0x4485f2,_0x31b35c){return function(_0x22f71e){if(_0x22f71e){var _0x247efd=typeof _0x31b35c['offset']===_0x3cf9('0x1b')&&typeof _0x31b35c[_0x3cf9('0x1c')]==='undefined';var _0x4230b8=_0x22f71e['count'];var _0x4bf2a2=_0x247efd?0x0:_0x31b35c[_0x3cf9('0x1d')];var _0x2536d9=_0x247efd?_0x22f71e[_0x3cf9('0x1e')]:_0x31b35c[_0x3cf9('0x1d')]+_0x31b35c['limit'];var _0x4c2ca9;if(_0x2536d9>=_0x4230b8){_0x2536d9=_0x4230b8;_0x4c2ca9=0xc8;}else{_0x4c2ca9=0xce;}_0x4485f2[_0x3cf9('0x19')](_0x4c2ca9);return _0x4485f2[_0x3cf9('0x1f')](_0x3cf9('0x20'),_0x4bf2a2+'-'+_0x2536d9+'/'+_0x4230b8)[_0x3cf9('0x1a')](_0x22f71e);}return null;};}function patchUpdates(_0x47c629){return function(_0x2eeb64){try{jsonpatch[_0x3cf9('0x21')](_0x2eeb64,_0x47c629,!![]);}catch(_0x4410af){return BPromise['reject'](_0x4410af);}return _0x2eeb64[_0x3cf9('0x22')]();};}function saveUpdates(_0x1f6fb3,_0x161ad1){return function(_0x318927){if(_0x318927){return _0x318927['update'](_0x1f6fb3)[_0x3cf9('0x23')](function(_0x5b283b){return _0x5b283b;});}return null;};}function removeEntity(_0xbe4b55,_0x2b0c8c){return function(_0x315ed8){if(_0x315ed8){return _0x315ed8['destroy']()[_0x3cf9('0x23')](function(){var _0x447266=_0x315ed8[_0x3cf9('0x24')]({'plain':!![]});var _0x20161b=_0x3cf9('0x25');return db[_0x3cf9('0x26')][_0x3cf9('0x27')]({'where':{'type':_0x20161b,'resourceId':_0x447266['id']}})[_0x3cf9('0x23')](function(){return _0x315ed8;});})['then'](function(){_0xbe4b55[_0x3cf9('0x19')](0xcc)[_0x3cf9('0x28')]();});}};}function handleEntityNotFound(_0x14ef9d,_0x431d21){return function(_0x1fc310){if(!_0x1fc310){_0x14ef9d[_0x3cf9('0x18')](0x194);}return _0x1fc310;};}function handleError(_0x4d8b65,_0x44f180){_0x44f180=_0x44f180||0x1f4;return function(_0x2d1cb6){logger[_0x3cf9('0x29')](_0x2d1cb6[_0x3cf9('0x2a')]);if(_0x2d1cb6[_0x3cf9('0x2b')]){delete _0x2d1cb6[_0x3cf9('0x2b')];}_0x4d8b65[_0x3cf9('0x19')](_0x44f180)[_0x3cf9('0x2c')](_0x2d1cb6);};}exports['index']=function(_0x1cb73c,_0x3a1afb){var _0x36b700={},_0x2e0615={},_0x5af14c={'count':0x0,'rows':[]};var _0x455003=_[_0x3cf9('0x2d')](db[_0x3cf9('0x2e')][_0x3cf9('0x2f')],function(_0x5cb9b6){return{'name':_0x5cb9b6['fieldName'],'type':_0x5cb9b6[_0x3cf9('0x30')][_0x3cf9('0x31')]};});_0x2e0615[_0x3cf9('0x32')]=_[_0x3cf9('0x2d')](_0x455003,'name');_0x2e0615[_0x3cf9('0x33')]=_[_0x3cf9('0x34')](_0x1cb73c[_0x3cf9('0x33')]);_0x2e0615[_0x3cf9('0x35')]=_['intersection'](_0x2e0615['model'],_0x2e0615[_0x3cf9('0x33')]);_0x36b700[_0x3cf9('0x36')]=_[_0x3cf9('0x37')](_0x2e0615[_0x3cf9('0x32')],qs[_0x3cf9('0x38')](_0x1cb73c['query']['fields']));_0x36b700[_0x3cf9('0x36')]=_0x36b700[_0x3cf9('0x36')][_0x3cf9('0x39')]?_0x36b700[_0x3cf9('0x36')]:_0x2e0615[_0x3cf9('0x32')];if(!_0x1cb73c['query'][_0x3cf9('0x3a')](_0x3cf9('0x3b'))){_0x36b700[_0x3cf9('0x1c')]=qs[_0x3cf9('0x1c')](_0x1cb73c[_0x3cf9('0x33')][_0x3cf9('0x1c')]);_0x36b700[_0x3cf9('0x1d')]=qs['offset'](_0x1cb73c[_0x3cf9('0x33')][_0x3cf9('0x1d')]);}_0x36b700['order']=qs[_0x3cf9('0x3c')](_0x1cb73c[_0x3cf9('0x33')][_0x3cf9('0x3c')]);_0x36b700[_0x3cf9('0x3d')]=qs[_0x3cf9('0x35')](_[_0x3cf9('0x3e')](_0x1cb73c[_0x3cf9('0x33')],_0x2e0615['filters']),_0x455003);if(_0x1cb73c[_0x3cf9('0x33')]['filter']){_0x36b700[_0x3cf9('0x3d')]=_[_0x3cf9('0x3f')](_0x36b700[_0x3cf9('0x3d')],{'$or':_[_0x3cf9('0x2d')](_0x455003,function(_0x37f217){if(_0x37f217['type']!==_0x3cf9('0x40')){var _0x479a2f={};_0x479a2f[_0x37f217[_0x3cf9('0x2b')]]={'$like':'%'+_0x1cb73c['query'][_0x3cf9('0x41')]+'%'};return _0x479a2f;}})});}_0x36b700=_[_0x3cf9('0x3f')]({},_0x36b700,_0x1cb73c[_0x3cf9('0x42')]);var _0x40749d={'where':_0x36b700[_0x3cf9('0x3d')]};return db[_0x3cf9('0x2e')][_0x3cf9('0x1e')](_0x40749d)['then'](function(_0x5e0e00){_0x5af14c['count']=_0x5e0e00;if(_0x1cb73c[_0x3cf9('0x33')][_0x3cf9('0x43')]){_0x36b700['include']=[{'all':!![]}];}return db[_0x3cf9('0x2e')][_0x3cf9('0x44')](_0x36b700);})[_0x3cf9('0x23')](function(_0x2df425){_0x5af14c[_0x3cf9('0x45')]=_0x2df425;return _0x5af14c;})[_0x3cf9('0x23')](respondWithFilteredResult(_0x3a1afb,_0x36b700))['catch'](handleError(_0x3a1afb,null));};exports[_0x3cf9('0x46')]=function(_0x23bc38,_0x317814){var _0x4eeb50={'raw':![],'where':{'id':_0x23bc38[_0x3cf9('0x47')]['id']}},_0x3b63b3={};_0x3b63b3[_0x3cf9('0x32')]=_[_0x3cf9('0x34')](db[_0x3cf9('0x2e')][_0x3cf9('0x2f')]);_0x3b63b3[_0x3cf9('0x33')]=_[_0x3cf9('0x34')](_0x23bc38['query']);_0x3b63b3[_0x3cf9('0x35')]=_['intersection'](_0x3b63b3[_0x3cf9('0x32')],_0x3b63b3[_0x3cf9('0x33')]);_0x4eeb50[_0x3cf9('0x36')]=_[_0x3cf9('0x37')](_0x3b63b3[_0x3cf9('0x32')],qs[_0x3cf9('0x38')](_0x23bc38[_0x3cf9('0x33')][_0x3cf9('0x38')]));_0x4eeb50['attributes']=_0x4eeb50['attributes'][_0x3cf9('0x39')]?_0x4eeb50[_0x3cf9('0x36')]:_0x3b63b3[_0x3cf9('0x32')];if(_0x23bc38[_0x3cf9('0x33')][_0x3cf9('0x43')]){_0x4eeb50[_0x3cf9('0x48')]=[{'all':!![]}];}_0x4eeb50=_['merge']({},_0x4eeb50,_0x23bc38['options']);return db[_0x3cf9('0x2e')][_0x3cf9('0x49')](_0x4eeb50)[_0x3cf9('0x23')](handleEntityNotFound(_0x317814,null))[_0x3cf9('0x23')](respondWithResult(_0x317814,null))[_0x3cf9('0x4a')](handleError(_0x317814,null));};exports[_0x3cf9('0x4b')]=function(_0x14ab8c,_0x13fa80){return db['Campaign']['create'](_0x14ab8c[_0x3cf9('0x4c')],{})[_0x3cf9('0x23')](function(_0x547062){var _0x430e38=_0x14ab8c[_0x3cf9('0x4d')]['get']({'plain':!![]});if(!_0x430e38)throw new Error(_0x3cf9('0x4e'));if(_0x430e38[_0x3cf9('0x4f')]===_0x3cf9('0x4d')){var _0x6a6b8=_0x547062['get']({'plain':!![]});var _0x22eced=_0x3cf9('0x25');return db['UserProfileSection'][_0x3cf9('0x49')]({'where':{'name':_0x22eced,'userProfileId':_0x430e38[_0x3cf9('0x50')]},'raw':!![]})[_0x3cf9('0x23')](function(_0x3d9495){if(_0x3d9495&&_0x3d9495[_0x3cf9('0x51')]===0x0){return db[_0x3cf9('0x26')]['create']({'name':_0x6a6b8['name'],'resourceId':_0x6a6b8['id'],'type':_0x3d9495[_0x3cf9('0x2b')],'sectionId':_0x3d9495['id']},{})['then'](function(){return _0x547062;});}else{return _0x547062;}})['catch'](function(_0x2eb789){logger[_0x3cf9('0x29')](_0x3cf9('0x52'),_0x2eb789);throw _0x2eb789;});}return _0x547062;})[_0x3cf9('0x23')](respondWithResult(_0x13fa80,0xc9))[_0x3cf9('0x4a')](handleError(_0x13fa80,null));};exports[_0x3cf9('0x53')]=function(_0x4585d9,_0x221999){var _0x13a2ce={'where':{'id':_0x4585d9[_0x3cf9('0x47')]['id']}},_0x3f47f5={};_0x3f47f5[_0x3cf9('0x32')]=_['keys'](db['Campaign'][_0x3cf9('0x2f')]);_0x13a2ce[_0x3cf9('0x36')]=_['intersection'](_0x3f47f5[_0x3cf9('0x32')],qs[_0x3cf9('0x38')](_0x4585d9[_0x3cf9('0x33')][_0x3cf9('0x38')]));_0x13a2ce['attributes']=_0x13a2ce[_0x3cf9('0x36')]['length']?_0x13a2ce[_0x3cf9('0x36')]:_0x3f47f5[_0x3cf9('0x32')];if(_0x4585d9[_0x3cf9('0x33')]['includeAll']){_0x13a2ce[_0x3cf9('0x48')]=[{'all':!![]}];}_0x13a2ce=_['merge']({},_0x13a2ce,_0x4585d9[_0x3cf9('0x42')]);return db[_0x3cf9('0x2e')][_0x3cf9('0x49')](_0x13a2ce)[_0x3cf9('0x23')](handleEntityNotFound(_0x221999,null))[_0x3cf9('0x23')](function(_0x42c8dd){if(_0x42c8dd){var _0x43379f=_0x42c8dd[_0x3cf9('0x24')]({'plain':!![]});_0x43379f=qs[_0x3cf9('0x54')](_0x43379f,['id',_0x3cf9('0x55'),_0x3cf9('0x56')]);_0x4585d9['body']=_[_0x3cf9('0x54')](_0x4585d9[_0x3cf9('0x4c')],['id','createdAt',_0x3cf9('0x56')]);return db[_0x3cf9('0x2e')]['create'](_[_0x3cf9('0x3f')](_0x43379f,_0x4585d9[_0x3cf9('0x4c')]),{'include':_0x4585d9[_0x3cf9('0x33')][_0x3cf9('0x43')]?[{'all':!![]}]:undefined})[_0x3cf9('0x23')](function(_0x5df1be){var _0x5140aa=_0x4585d9[_0x3cf9('0x4d')][_0x3cf9('0x24')]({'plain':!![]});if(!_0x5140aa)throw new Error(_0x3cf9('0x4e'));if(_0x5140aa[_0x3cf9('0x4f')]==='user'){var _0x2bb4fc=_0x5df1be[_0x3cf9('0x24')]({'plain':!![]});var _0x4738a2=_0x3cf9('0x25');return db[_0x3cf9('0x57')]['find']({'where':{'name':_0x4738a2,'userProfileId':_0x5140aa[_0x3cf9('0x50')]},'raw':!![]})[_0x3cf9('0x23')](function(_0x592b1a){if(_0x592b1a&&_0x592b1a[_0x3cf9('0x51')]===0x0){return db[_0x3cf9('0x26')][_0x3cf9('0x4b')]({'name':_0x2bb4fc[_0x3cf9('0x2b')],'resourceId':_0x2bb4fc['id'],'type':_0x592b1a['name'],'sectionId':_0x592b1a['id']},{})[_0x3cf9('0x23')](function(){return _0x5df1be;});}else{return _0x5df1be;}})[_0x3cf9('0x4a')](function(_0xa6135f){logger[_0x3cf9('0x29')](_0x3cf9('0x52'),_0xa6135f);throw _0xa6135f;});}return _0x5df1be;});}})[_0x3cf9('0x23')](respondWithResult(_0x221999,0xc9))[_0x3cf9('0x4a')](handleError(_0x221999,null));};exports['update']=function(_0x53e333,_0x4bcf56){if(_0x53e333[_0x3cf9('0x4c')]['id']){delete _0x53e333[_0x3cf9('0x4c')]['id'];}return db[_0x3cf9('0x2e')][_0x3cf9('0x49')]({'where':{'id':_0x53e333[_0x3cf9('0x47')]['id']}})['then'](handleEntityNotFound(_0x4bcf56,null))[_0x3cf9('0x23')](saveUpdates(_0x53e333['body'],null))[_0x3cf9('0x23')](respondWithResult(_0x4bcf56,null))['catch'](handleError(_0x4bcf56,null));};exports[_0x3cf9('0x27')]=function(_0x32da03,_0x466686){return db['Campaign'][_0x3cf9('0x49')]({'where':{'id':_0x32da03[_0x3cf9('0x47')]['id']}})[_0x3cf9('0x23')](handleEntityNotFound(_0x466686,null))[_0x3cf9('0x23')](removeEntity(_0x466686,null))[_0x3cf9('0x4a')](handleError(_0x466686,null));};exports['getHoppers']=function(_0x5cfba1,_0x36a223,_0x2ac82f){var _0x4fdf0c={'raw':!![],'where':{}};var _0x43c687={};var _0x351a23={'count':0x0,'rows':[]};return db[_0x3cf9('0x2e')][_0x3cf9('0x58')]({'where':{'id':_0x5cfba1[_0x3cf9('0x47')]['id']}})['then'](handleEntityNotFound(_0x36a223,null))[_0x3cf9('0x23')](function(_0xfc21ff){if(_0xfc21ff){_0x43c687[_0x3cf9('0x32')]=_['keys'](db[_0x3cf9('0x59')][_0x3cf9('0x2f')]);_0x43c687[_0x3cf9('0x33')]=_[_0x3cf9('0x34')](_0x5cfba1[_0x3cf9('0x33')]);_0x43c687[_0x3cf9('0x35')]=_[_0x3cf9('0x37')](_0x43c687['model'],_0x43c687[_0x3cf9('0x33')]);_0x4fdf0c['attributes']=_[_0x3cf9('0x37')](_0x43c687[_0x3cf9('0x32')],qs[_0x3cf9('0x38')](_0x5cfba1[_0x3cf9('0x33')][_0x3cf9('0x38')]));_0x4fdf0c[_0x3cf9('0x36')]=_0x4fdf0c[_0x3cf9('0x36')][_0x3cf9('0x39')]?_0x4fdf0c[_0x3cf9('0x36')]:_0x43c687['model'];if(!_0x5cfba1[_0x3cf9('0x33')]['hasOwnProperty'](_0x3cf9('0x3b'))){_0x4fdf0c[_0x3cf9('0x1c')]=qs['limit'](_0x5cfba1[_0x3cf9('0x33')][_0x3cf9('0x1c')]);_0x4fdf0c[_0x3cf9('0x1d')]=qs['offset'](_0x5cfba1['query']['offset']);}_0x4fdf0c[_0x3cf9('0x5a')]=qs[_0x3cf9('0x3c')](_0x5cfba1[_0x3cf9('0x33')]['sort']);_0x4fdf0c[_0x3cf9('0x3d')]=qs[_0x3cf9('0x35')](_['pick'](_0x5cfba1[_0x3cf9('0x33')],_0x43c687[_0x3cf9('0x35')]));_0x4fdf0c[_0x3cf9('0x3d')][_0x3cf9('0x5b')]=_0xfc21ff['id'];if(_0x5cfba1[_0x3cf9('0x33')][_0x3cf9('0x41')]){_0x4fdf0c[_0x3cf9('0x3d')]=_[_0x3cf9('0x3f')](_0x4fdf0c[_0x3cf9('0x3d')],{'$or':_['map'](_0x4fdf0c[_0x3cf9('0x36')],function(_0x40069b){var _0x174a41={};_0x174a41[_0x40069b]={'$like':'%'+_0x5cfba1[_0x3cf9('0x33')]['filter']+'%'};return _0x174a41;})});}_0x4fdf0c=_['merge']({},_0x4fdf0c,_0x5cfba1[_0x3cf9('0x42')]);return db[_0x3cf9('0x59')][_0x3cf9('0x1e')]({'where':_0x4fdf0c[_0x3cf9('0x3d')]})[_0x3cf9('0x23')](function(_0xa8995c){_0x351a23['count']=_0xa8995c;if(_0x5cfba1[_0x3cf9('0x33')][_0x3cf9('0x43')]){_0x4fdf0c['include']=[{'all':!![]}];}return db[_0x3cf9('0x59')][_0x3cf9('0x44')](_0x4fdf0c);})[_0x3cf9('0x23')](function(_0x2cefa8){_0x351a23[_0x3cf9('0x45')]=_0x2cefa8;return _0x351a23;});}})[_0x3cf9('0x23')](respondWithFilteredResult(_0x36a223,_0x4fdf0c))[_0x3cf9('0x4a')](handleError(_0x36a223,null));};exports[_0x3cf9('0x5c')]=function(_0x3d10a2,_0x48b068,_0x38bcbc){var _0xfeb7bf={'raw':!![],'where':{}};var _0x4ad5e4={};var _0x3dbfe6={'count':0x0,'rows':[]};return db[_0x3cf9('0x2e')]['findOne']({'where':{'id':_0x3d10a2[_0x3cf9('0x47')]['id']}})[_0x3cf9('0x23')](handleEntityNotFound(_0x48b068,null))['then'](function(_0x3901c7){if(_0x3901c7){_0x4ad5e4[_0x3cf9('0x32')]=_[_0x3cf9('0x34')](db['CmHopperHistory'][_0x3cf9('0x2f')]);_0x4ad5e4[_0x3cf9('0x33')]=_[_0x3cf9('0x34')](_0x3d10a2[_0x3cf9('0x33')]);_0x4ad5e4[_0x3cf9('0x35')]=_['intersection'](_0x4ad5e4[_0x3cf9('0x32')],_0x4ad5e4['query']);_0xfeb7bf[_0x3cf9('0x36')]=_['intersection'](_0x4ad5e4['model'],qs[_0x3cf9('0x38')](_0x3d10a2[_0x3cf9('0x33')][_0x3cf9('0x38')]));_0xfeb7bf[_0x3cf9('0x36')]=_0xfeb7bf[_0x3cf9('0x36')][_0x3cf9('0x39')]?_0xfeb7bf[_0x3cf9('0x36')]:_0x4ad5e4[_0x3cf9('0x32')];if(!_0x3d10a2[_0x3cf9('0x33')]['hasOwnProperty'](_0x3cf9('0x3b'))){_0xfeb7bf['limit']=qs[_0x3cf9('0x1c')](_0x3d10a2['query'][_0x3cf9('0x1c')]);_0xfeb7bf[_0x3cf9('0x1d')]=qs[_0x3cf9('0x1d')](_0x3d10a2[_0x3cf9('0x33')][_0x3cf9('0x1d')]);}_0xfeb7bf[_0x3cf9('0x5a')]=qs[_0x3cf9('0x3c')](_0x3d10a2['query'][_0x3cf9('0x3c')]);_0xfeb7bf[_0x3cf9('0x3d')]=qs[_0x3cf9('0x35')](_['pick'](_0x3d10a2[_0x3cf9('0x33')],_0x4ad5e4[_0x3cf9('0x35')]));_0xfeb7bf[_0x3cf9('0x3d')][_0x3cf9('0x5b')]=_0x3901c7['id'];if(_0x3d10a2['query']['filter']){_0xfeb7bf[_0x3cf9('0x3d')]=_[_0x3cf9('0x3f')](_0xfeb7bf['where'],{'$or':_[_0x3cf9('0x2d')](_0xfeb7bf[_0x3cf9('0x36')],function(_0x1245d4){var _0x5166cf={};_0x5166cf[_0x1245d4]={'$like':'%'+_0x3d10a2['query']['filter']+'%'};return _0x5166cf;})});}_0xfeb7bf=_[_0x3cf9('0x3f')]({},_0xfeb7bf,_0x3d10a2[_0x3cf9('0x42')]);return db['CmHopperHistory'][_0x3cf9('0x1e')]({'where':_0xfeb7bf[_0x3cf9('0x3d')]})['then'](function(_0x3ad142){_0x3dbfe6[_0x3cf9('0x1e')]=_0x3ad142;if(_0x3d10a2[_0x3cf9('0x33')][_0x3cf9('0x43')]){_0xfeb7bf[_0x3cf9('0x48')]=[{'all':!![]}];}return db[_0x3cf9('0x5d')][_0x3cf9('0x44')](_0xfeb7bf);})[_0x3cf9('0x23')](function(_0x23f1bf){_0x3dbfe6[_0x3cf9('0x45')]=_0x23f1bf;return _0x3dbfe6;});}})[_0x3cf9('0x23')](respondWithFilteredResult(_0x48b068,_0xfeb7bf))[_0x3cf9('0x4a')](handleError(_0x48b068,null));};exports[_0x3cf9('0x5e')]=function(_0x12b624,_0x4f83fe,_0x449f4d){var _0x5f176e={'raw':!![],'where':{}};var _0x22e5f4={};var _0x271b56={'count':0x0,'rows':[]};return db[_0x3cf9('0x2e')][_0x3cf9('0x58')]({'where':{'id':_0x12b624[_0x3cf9('0x47')]['id']}})[_0x3cf9('0x23')](handleEntityNotFound(_0x4f83fe,null))[_0x3cf9('0x23')](function(_0x23d3e6){if(_0x23d3e6){_0x22e5f4[_0x3cf9('0x32')]=_[_0x3cf9('0x34')](db[_0x3cf9('0x5f')][_0x3cf9('0x2f')]);_0x22e5f4[_0x3cf9('0x33')]=_[_0x3cf9('0x34')](_0x12b624[_0x3cf9('0x33')]);_0x22e5f4[_0x3cf9('0x35')]=_['intersection'](_0x22e5f4[_0x3cf9('0x32')],_0x22e5f4[_0x3cf9('0x33')]);_0x5f176e[_0x3cf9('0x36')]=_['intersection'](_0x22e5f4[_0x3cf9('0x32')],qs[_0x3cf9('0x38')](_0x12b624[_0x3cf9('0x33')][_0x3cf9('0x38')]));_0x5f176e[_0x3cf9('0x36')]=_0x5f176e[_0x3cf9('0x36')][_0x3cf9('0x39')]?_0x5f176e[_0x3cf9('0x36')]:_0x22e5f4['model'];if(!_0x12b624['query']['hasOwnProperty']('nolimit')){_0x5f176e[_0x3cf9('0x1c')]=qs[_0x3cf9('0x1c')](_0x12b624[_0x3cf9('0x33')][_0x3cf9('0x1c')]);_0x5f176e['offset']=qs[_0x3cf9('0x1d')](_0x12b624[_0x3cf9('0x33')][_0x3cf9('0x1d')]);}_0x5f176e[_0x3cf9('0x5a')]=qs['sort'](_0x12b624[_0x3cf9('0x33')][_0x3cf9('0x3c')]);_0x5f176e[_0x3cf9('0x3d')]=qs[_0x3cf9('0x35')](_[_0x3cf9('0x3e')](_0x12b624[_0x3cf9('0x33')],_0x22e5f4[_0x3cf9('0x35')]));_0x5f176e['where'][_0x3cf9('0x5b')]=_0x23d3e6['id'];if(_0x12b624[_0x3cf9('0x33')]['filter']){_0x5f176e[_0x3cf9('0x3d')]=_[_0x3cf9('0x3f')](_0x5f176e[_0x3cf9('0x3d')],{'$or':_[_0x3cf9('0x2d')](_0x5f176e[_0x3cf9('0x36')],function(_0x1e8ff3){var _0x3799d7={};_0x3799d7[_0x1e8ff3]={'$like':'%'+_0x12b624[_0x3cf9('0x33')][_0x3cf9('0x41')]+'%'};return _0x3799d7;})});}_0x5f176e=_[_0x3cf9('0x3f')]({},_0x5f176e,_0x12b624[_0x3cf9('0x42')]);return db[_0x3cf9('0x5f')][_0x3cf9('0x1e')]({'where':_0x5f176e['where']})[_0x3cf9('0x23')](function(_0x4a66f4){_0x271b56[_0x3cf9('0x1e')]=_0x4a66f4;if(_0x12b624[_0x3cf9('0x33')][_0x3cf9('0x43')]){_0x5f176e[_0x3cf9('0x48')]=[{'all':!![]}];}return db[_0x3cf9('0x5f')][_0x3cf9('0x44')](_0x5f176e);})[_0x3cf9('0x23')](function(_0x11cd10){_0x271b56[_0x3cf9('0x45')]=_0x11cd10;return _0x271b56;});}})[_0x3cf9('0x23')](respondWithFilteredResult(_0x4f83fe,_0x5f176e))[_0x3cf9('0x4a')](handleError(_0x4f83fe,null));};exports['getHopperBlacks']=function(_0x274682,_0x312227,_0x51671f){var _0x434e01={'raw':!![],'where':{}};var _0x56aa4b={};var _0x361bf6={'count':0x0,'rows':[]};return db[_0x3cf9('0x2e')][_0x3cf9('0x58')]({'where':{'id':_0x274682[_0x3cf9('0x47')]['id']}})[_0x3cf9('0x23')](handleEntityNotFound(_0x312227,null))[_0x3cf9('0x23')](function(_0x5a27f8){if(_0x5a27f8){_0x56aa4b[_0x3cf9('0x32')]=_['keys'](db[_0x3cf9('0x60')][_0x3cf9('0x2f')]);_0x56aa4b[_0x3cf9('0x33')]=_[_0x3cf9('0x34')](_0x274682['query']);_0x56aa4b['filters']=_[_0x3cf9('0x37')](_0x56aa4b[_0x3cf9('0x32')],_0x56aa4b[_0x3cf9('0x33')]);_0x434e01[_0x3cf9('0x36')]=_['intersection'](_0x56aa4b['model'],qs[_0x3cf9('0x38')](_0x274682['query']['fields']));_0x434e01['attributes']=_0x434e01[_0x3cf9('0x36')][_0x3cf9('0x39')]?_0x434e01[_0x3cf9('0x36')]:_0x56aa4b['model'];if(!_0x274682['query'][_0x3cf9('0x3a')](_0x3cf9('0x3b'))){_0x434e01[_0x3cf9('0x1c')]=qs[_0x3cf9('0x1c')](_0x274682['query']['limit']);_0x434e01['offset']=qs[_0x3cf9('0x1d')](_0x274682[_0x3cf9('0x33')]['offset']);}_0x434e01[_0x3cf9('0x5a')]=qs[_0x3cf9('0x3c')](_0x274682[_0x3cf9('0x33')][_0x3cf9('0x3c')]);_0x434e01[_0x3cf9('0x3d')]=qs[_0x3cf9('0x35')](_[_0x3cf9('0x3e')](_0x274682['query'],_0x56aa4b[_0x3cf9('0x35')]));_0x434e01[_0x3cf9('0x3d')][_0x3cf9('0x5b')]=_0x5a27f8['id'];if(_0x274682[_0x3cf9('0x33')][_0x3cf9('0x41')]){_0x434e01[_0x3cf9('0x3d')]=_[_0x3cf9('0x3f')](_0x434e01[_0x3cf9('0x3d')],{'$or':_[_0x3cf9('0x2d')](_0x434e01[_0x3cf9('0x36')],function(_0x1efd3e){var _0x566e39={};_0x566e39[_0x1efd3e]={'$like':'%'+_0x274682[_0x3cf9('0x33')]['filter']+'%'};return _0x566e39;})});}_0x434e01=_['merge']({},_0x434e01,_0x274682['options']);return db[_0x3cf9('0x60')][_0x3cf9('0x1e')]({'where':_0x434e01['where']})['then'](function(_0x3a21f5){_0x361bf6['count']=_0x3a21f5;if(_0x274682[_0x3cf9('0x33')][_0x3cf9('0x43')]){_0x434e01['include']=[{'all':!![]}];}return db[_0x3cf9('0x60')][_0x3cf9('0x44')](_0x434e01);})[_0x3cf9('0x23')](function(_0x4de47e){_0x361bf6['rows']=_0x4de47e;return _0x361bf6;});}})['then'](respondWithFilteredResult(_0x312227,_0x434e01))[_0x3cf9('0x4a')](handleError(_0x312227,null));};exports[_0x3cf9('0x61')]=function(_0xc0c7eb,_0x5d8c9d,_0x561135){var _0x1e6d01={};var _0x3e1784={};var _0x39245e;var _0x28d612;return db[_0x3cf9('0x2e')][_0x3cf9('0x58')]({'where':{'id':_0xc0c7eb[_0x3cf9('0x47')]['id']}})[_0x3cf9('0x23')](handleEntityNotFound(_0x5d8c9d,null))[_0x3cf9('0x23')](function(_0x4cd5cd){if(_0x4cd5cd){_0x39245e=_0x4cd5cd;_0x3e1784[_0x3cf9('0x32')]=_[_0x3cf9('0x34')](db[_0x3cf9('0x62')][_0x3cf9('0x2f')]);_0x3e1784[_0x3cf9('0x33')]=_[_0x3cf9('0x34')](_0xc0c7eb['query']);_0x3e1784[_0x3cf9('0x35')]=_[_0x3cf9('0x37')](_0x3e1784[_0x3cf9('0x32')],_0x3e1784[_0x3cf9('0x33')]);_0x1e6d01[_0x3cf9('0x36')]=_[_0x3cf9('0x37')](_0x3e1784['model'],qs[_0x3cf9('0x38')](_0xc0c7eb[_0x3cf9('0x33')][_0x3cf9('0x38')]));_0x1e6d01['attributes']=_0x1e6d01[_0x3cf9('0x36')][_0x3cf9('0x39')]?_0x1e6d01[_0x3cf9('0x36')]:_0x3e1784[_0x3cf9('0x32')];_0x1e6d01[_0x3cf9('0x5a')]=qs['sort'](_0xc0c7eb[_0x3cf9('0x33')]['sort']);_0x1e6d01[_0x3cf9('0x3d')]=qs[_0x3cf9('0x35')](_[_0x3cf9('0x3e')](_0xc0c7eb[_0x3cf9('0x33')],_0x3e1784[_0x3cf9('0x35')]));if(_0xc0c7eb[_0x3cf9('0x33')][_0x3cf9('0x41')]){_0x1e6d01[_0x3cf9('0x3d')]=_[_0x3cf9('0x3f')](_0x1e6d01[_0x3cf9('0x3d')],{'$or':_['map'](_0x1e6d01[_0x3cf9('0x36')],function(_0x297ae6){var _0x50427f={};_0x50427f[_0x297ae6]={'$like':'%'+_0xc0c7eb['query'][_0x3cf9('0x41')]+'%'};return _0x50427f;})});}_0x1e6d01=_['merge']({},_0x1e6d01,_0xc0c7eb['options']);return _0x39245e[_0x3cf9('0x61')](_0x1e6d01);}})['then'](function(_0xddcd9a){if(_0xddcd9a){_0x28d612=_0xddcd9a[_0x3cf9('0x39')];if(!_0xc0c7eb[_0x3cf9('0x33')]['hasOwnProperty']('nolimit')){_0x1e6d01[_0x3cf9('0x1c')]=qs[_0x3cf9('0x1c')](_0xc0c7eb[_0x3cf9('0x33')][_0x3cf9('0x1c')]);_0x1e6d01[_0x3cf9('0x1d')]=qs['offset'](_0xc0c7eb[_0x3cf9('0x33')][_0x3cf9('0x1d')]);}return _0x39245e[_0x3cf9('0x61')](_0x1e6d01);}})[_0x3cf9('0x23')](function(_0x5203c2){if(_0x5203c2){return _0x5203c2?{'count':_0x28d612,'rows':_0x5203c2}:null;}})[_0x3cf9('0x23')](respondWithResult(_0x5d8c9d,null))['catch'](handleError(_0x5d8c9d,null));};exports[_0x3cf9('0x63')]=function(_0x22e3bf,_0x279741,_0x532cf9){var _0x2813cd,_0x337f4e;return db[_0x3cf9('0x2e')][_0x3cf9('0x49')]({'where':{'id':_0x22e3bf[_0x3cf9('0x47')]['id']}})[_0x3cf9('0x23')](handleEntityNotFound(_0x279741,null))[_0x3cf9('0x23')](function(_0x4b144f){if(_0x4b144f){_0x337f4e=_0x4b144f;return _0x4b144f[_0x3cf9('0x63')](_0x22e3bf[_0x3cf9('0x4c')]['ids'],_[_0x3cf9('0x54')](_0x22e3bf['body'],[_0x3cf9('0x64'),'id'])||{});}return null;})[_0x3cf9('0x65')](function(_0x532c46){var _0x560647;_0x2813cd=_0x532c46||[];var _0x140bd9=[];if(_0x532c46){for(var _0x1fc525=0x0;_0x1fc525<_0x532c46['length'];_0x1fc525+=0x1){var _0x5ec1f4=_0x532c46[_0x1fc525]['get']({'plain':!![]});_0x337f4e[_0x3cf9('0x66')]=_0x22e3bf[_0x3cf9('0x4c')][_0x3cf9('0x66')]?_0x22e3bf['body'][_0x3cf9('0x66')]:_0x337f4e[_0x3cf9('0x66')];switch(_0x337f4e['dialCheckDuplicateType']){case _0x3cf9('0x67'):_0x560647=squel['insert']()[_0x3cf9('0x68')](_0x3cf9('0x69'))['fromQuery'](['phone',_0x3cf9('0x6a'),_0x3cf9('0x6b'),_0x3cf9('0x6c'),'CampaignId',_0x3cf9('0x55'),'updatedAt'],squel[_0x3cf9('0x6d')]()[_0x3cf9('0x6e')]('phone','phone')[_0x3cf9('0x6e')](_0x3cf9('0x6f'),_0x3cf9('0x6a'))[_0x3cf9('0x6e')]('id',_0x3cf9('0x6b'))[_0x3cf9('0x6e')](_0x5ec1f4['CmListId'][_0x3cf9('0x70')](),_0x3cf9('0x6c'))[_0x3cf9('0x6e')](_0x22e3bf['params']['id'][_0x3cf9('0x70')](),'CampaignId')[_0x3cf9('0x6e')]('NOW()',_0x3cf9('0x55'))[_0x3cf9('0x6e')](_0x3cf9('0x6f'),'updatedAt')[_0x3cf9('0x71')](_0x3cf9('0x72'))['where'](_0x3cf9('0x73'))[_0x3cf9('0x3d')]('ListId\x20=\x20?',_0x5ec1f4[_0x3cf9('0x74')][_0x3cf9('0x70')]())[_0x3cf9('0x3d')](_0x3cf9('0x75'))[_0x3cf9('0x3d')](_0x3cf9('0x76'),squel[_0x3cf9('0x6d')]()[_0x3cf9('0x6e')](_0x3cf9('0x77'))[_0x3cf9('0x71')](_0x3cf9('0x78'))[_0x3cf9('0x3d')](_0x3cf9('0x79'),_0x22e3bf[_0x3cf9('0x47')]['id'][_0x3cf9('0x70')]()))[_0x3cf9('0x3d')]('phone\x20NOT\x20IN\x20(?)',squel[_0x3cf9('0x6d')]()[_0x3cf9('0x6e')](_0x3cf9('0x7a'))[_0x3cf9('0x71')](_0x3cf9('0x69'))[_0x3cf9('0x3d')](_0x3cf9('0x79'),_0x22e3bf[_0x3cf9('0x47')]['id'][_0x3cf9('0x70')]())))[_0x3cf9('0x70')]();break;case _0x3cf9('0x7b'):_0x560647=squel[_0x3cf9('0x7c')]()['into'](_0x3cf9('0x69'))[_0x3cf9('0x7d')](['phone',_0x3cf9('0x6a'),'ContactId',_0x3cf9('0x6c'),'CampaignId',_0x3cf9('0x55'),_0x3cf9('0x56')],squel[_0x3cf9('0x6d')]()[_0x3cf9('0x6e')](_0x3cf9('0x7e'),'phone')[_0x3cf9('0x6e')]('NOW()',_0x3cf9('0x6a'))[_0x3cf9('0x6e')]('id','ContactId')[_0x3cf9('0x6e')](_0x5ec1f4[_0x3cf9('0x74')][_0x3cf9('0x70')](),_0x3cf9('0x6c'))[_0x3cf9('0x6e')](_0x22e3bf[_0x3cf9('0x47')]['id'][_0x3cf9('0x70')](),_0x3cf9('0x5b'))[_0x3cf9('0x6e')](_0x3cf9('0x6f'),'createdAt')[_0x3cf9('0x6e')](_0x3cf9('0x6f'),_0x3cf9('0x56'))['from']('cm_contacts')[_0x3cf9('0x3d')]('deletedAt\x20IS\x20NULL')[_0x3cf9('0x3d')](_0x3cf9('0x7f'),_0x5ec1f4[_0x3cf9('0x74')][_0x3cf9('0x70')]())[_0x3cf9('0x3d')]('phone\x20IS\x20NOT\x20NULL')[_0x3cf9('0x3d')]('phone\x20NOT\x20IN\x20(?)',squel[_0x3cf9('0x6d')]()[_0x3cf9('0x6e')](_0x3cf9('0x7a'))[_0x3cf9('0x71')](_0x3cf9('0x69'))[_0x3cf9('0x3d')](_0x3cf9('0x79'),_0x22e3bf['params']['id'][_0x3cf9('0x70')]())))[_0x3cf9('0x70')]();break;default:_0x560647=squel[_0x3cf9('0x7c')]()[_0x3cf9('0x68')](_0x3cf9('0x69'))[_0x3cf9('0x7d')]([_0x3cf9('0x7e'),'scheduledAt',_0x3cf9('0x6b'),'ListId',_0x3cf9('0x5b'),_0x3cf9('0x55'),_0x3cf9('0x56')],squel[_0x3cf9('0x6d')]()[_0x3cf9('0x6e')]('phone','phone')[_0x3cf9('0x6e')](_0x3cf9('0x6f'),'scheduledAt')[_0x3cf9('0x6e')]('id',_0x3cf9('0x6b'))[_0x3cf9('0x6e')](_0x5ec1f4[_0x3cf9('0x74')]['toString'](),'ListId')[_0x3cf9('0x6e')](_0x22e3bf['params']['id'][_0x3cf9('0x70')](),_0x3cf9('0x5b'))['field']('NOW()','createdAt')[_0x3cf9('0x6e')](_0x3cf9('0x6f'),_0x3cf9('0x56'))[_0x3cf9('0x71')](_0x3cf9('0x72'))[_0x3cf9('0x3d')](_0x3cf9('0x73'))[_0x3cf9('0x3d')](_0x3cf9('0x7f'),_0x5ec1f4[_0x3cf9('0x74')][_0x3cf9('0x70')]())['where']('phone\x20IS\x20NOT\x20NULL'))[_0x3cf9('0x70')]();}_0x140bd9['push'](db[_0x3cf9('0x80')][_0x3cf9('0x33')](_0x560647));}return BPromise['all'](_0x140bd9);}})[_0x3cf9('0x23')](function(){return _0x2813cd;})[_0x3cf9('0x23')](respondWithResult(_0x279741,null))[_0x3cf9('0x4a')](handleError(_0x279741,null));};exports[_0x3cf9('0x81')]=function(_0x19514e,_0x58c8c4,_0x35968a){return db[_0x3cf9('0x2e')][_0x3cf9('0x49')]({'where':{'id':_0x19514e[_0x3cf9('0x47')]['id']}})['then'](handleEntityNotFound(_0x58c8c4,null))[_0x3cf9('0x23')](function(_0x177f59){if(_0x177f59){return _0x177f59[_0x3cf9('0x81')](_0x19514e[_0x3cf9('0x33')][_0x3cf9('0x64')]);}})[_0x3cf9('0x23')](function(_0x3364d2){if(_0x3364d2){return db['CmHopper'][_0x3cf9('0x27')]({'where':{'ListId':_0x19514e[_0x3cf9('0x33')][_0x3cf9('0x64')],'CampaignId':_0x19514e['params']['id']}})[_0x3cf9('0x23')](function(){return _0x3364d2;});}})['then'](respondWithStatusCode(_0x58c8c4,null))['catch'](handleError(_0x58c8c4,null));};exports['getBlackLists']=function(_0x1a49cc,_0x586cda,_0x468aaa){var _0x5b2947={};var _0x29acd5={};var _0x2d5e05;var _0xc88924;return db[_0x3cf9('0x2e')][_0x3cf9('0x58')]({'where':{'id':_0x1a49cc['params']['id']}})[_0x3cf9('0x23')](handleEntityNotFound(_0x586cda,null))['then'](function(_0x56e4db){if(_0x56e4db){_0x2d5e05=_0x56e4db;_0x29acd5[_0x3cf9('0x32')]=_[_0x3cf9('0x34')](db[_0x3cf9('0x62')][_0x3cf9('0x2f')]);_0x29acd5[_0x3cf9('0x33')]=_['keys'](_0x1a49cc[_0x3cf9('0x33')]);_0x29acd5[_0x3cf9('0x35')]=_[_0x3cf9('0x37')](_0x29acd5[_0x3cf9('0x32')],_0x29acd5[_0x3cf9('0x33')]);_0x5b2947[_0x3cf9('0x36')]=_[_0x3cf9('0x37')](_0x29acd5['model'],qs[_0x3cf9('0x38')](_0x1a49cc[_0x3cf9('0x33')][_0x3cf9('0x38')]));_0x5b2947['attributes']=_0x5b2947[_0x3cf9('0x36')][_0x3cf9('0x39')]?_0x5b2947[_0x3cf9('0x36')]:_0x29acd5[_0x3cf9('0x32')];_0x5b2947[_0x3cf9('0x5a')]=qs[_0x3cf9('0x3c')](_0x1a49cc['query'][_0x3cf9('0x3c')]);_0x5b2947[_0x3cf9('0x3d')]=qs[_0x3cf9('0x35')](_[_0x3cf9('0x3e')](_0x1a49cc[_0x3cf9('0x33')],_0x29acd5[_0x3cf9('0x35')]));if(_0x1a49cc['query'][_0x3cf9('0x41')]){_0x5b2947[_0x3cf9('0x3d')]=_[_0x3cf9('0x3f')](_0x5b2947[_0x3cf9('0x3d')],{'$or':_[_0x3cf9('0x2d')](_0x5b2947[_0x3cf9('0x36')],function(_0x56deb8){var _0x454eb9={};_0x454eb9[_0x56deb8]={'$like':'%'+_0x1a49cc[_0x3cf9('0x33')]['filter']+'%'};return _0x454eb9;})});}_0x5b2947=_[_0x3cf9('0x3f')]({},_0x5b2947,_0x1a49cc[_0x3cf9('0x42')]);return _0x2d5e05[_0x3cf9('0x82')](_0x5b2947);}})['then'](function(_0x27ee26){if(_0x27ee26){_0xc88924=_0x27ee26[_0x3cf9('0x39')];if(!_0x1a49cc[_0x3cf9('0x33')][_0x3cf9('0x3a')]('nolimit')){_0x5b2947[_0x3cf9('0x1c')]=qs['limit'](_0x1a49cc['query'][_0x3cf9('0x1c')]);_0x5b2947['offset']=qs[_0x3cf9('0x1d')](_0x1a49cc[_0x3cf9('0x33')]['offset']);}return _0x2d5e05[_0x3cf9('0x82')](_0x5b2947);}})['then'](function(_0x12889a){if(_0x12889a){return _0x12889a?{'count':_0xc88924,'rows':_0x12889a}:null;}})[_0x3cf9('0x23')](respondWithResult(_0x586cda,null))[_0x3cf9('0x4a')](handleError(_0x586cda,null));};exports[_0x3cf9('0x83')]=function(_0x4ceae8,_0x19c350,_0x11bba8){var _0x4c50f7,_0x56ca14;return db[_0x3cf9('0x2e')][_0x3cf9('0x49')]({'where':{'id':_0x4ceae8['params']['id']}})['then'](handleEntityNotFound(_0x19c350,null))[_0x3cf9('0x23')](function(_0x107176){if(_0x107176){_0x56ca14=_0x107176;return _0x107176[_0x3cf9('0x83')](_0x4ceae8[_0x3cf9('0x4c')][_0x3cf9('0x64')],_['omit'](_0x4ceae8['body'],[_0x3cf9('0x64'),'id'])||{});}return null;})[_0x3cf9('0x65')](function(_0x58e415){var _0x5b1848;_0x4c50f7=_0x58e415||[];var _0x340904=[];if(_0x58e415){for(var _0x7f98c5=0x0;_0x7f98c5<_0x58e415['length'];_0x7f98c5+=0x1){var _0x3648eb=_0x58e415[_0x7f98c5]['get']({'plain':!![]});_0x5b1848=squel[_0x3cf9('0x7c')]()[_0x3cf9('0x68')]('cm_hopper_black')[_0x3cf9('0x7d')]([_0x3cf9('0x7e'),'ContactId',_0x3cf9('0x6c'),_0x3cf9('0x5b'),_0x3cf9('0x55'),_0x3cf9('0x56')],squel[_0x3cf9('0x6d')]()[_0x3cf9('0x6e')](_0x3cf9('0x7e'),_0x3cf9('0x7e'))[_0x3cf9('0x6e')]('id',_0x3cf9('0x6b'))[_0x3cf9('0x6e')](_0x3648eb['CmListId'][_0x3cf9('0x70')](),_0x3cf9('0x6c'))[_0x3cf9('0x6e')](_0x4ceae8['params']['id']['toString'](),_0x3cf9('0x5b'))[_0x3cf9('0x6e')](_0x3cf9('0x6f'),_0x3cf9('0x55'))['field'](_0x3cf9('0x6f'),_0x3cf9('0x56'))[_0x3cf9('0x71')](_0x3cf9('0x72'))[_0x3cf9('0x3d')](_0x3cf9('0x73'))[_0x3cf9('0x3d')](_0x3cf9('0x7f'),_0x3648eb[_0x3cf9('0x74')][_0x3cf9('0x70')]())[_0x3cf9('0x3d')](_0x3cf9('0x75')))['toString']();_0x340904[_0x3cf9('0x84')](db[_0x3cf9('0x80')][_0x3cf9('0x33')](_0x5b1848));}return BPromise[_0x3cf9('0x85')](_0x340904);}})[_0x3cf9('0x23')](function(){return _0x4c50f7;})['then'](respondWithResult(_0x19c350,null))[_0x3cf9('0x4a')](handleError(_0x19c350,null));};exports[_0x3cf9('0x86')]=function(_0x2116b9,_0x38efa6,_0x565e44){return db['Campaign'][_0x3cf9('0x49')]({'where':{'id':_0x2116b9[_0x3cf9('0x47')]['id']}})['then'](handleEntityNotFound(_0x38efa6,null))[_0x3cf9('0x23')](function(_0x4c60bd){if(_0x4c60bd){return _0x4c60bd[_0x3cf9('0x86')](_0x2116b9[_0x3cf9('0x33')][_0x3cf9('0x64')]);}})[_0x3cf9('0x23')](function(_0x13410a){if(_0x13410a){return db[_0x3cf9('0x60')]['destroy']({'where':{'ListId':_0x2116b9[_0x3cf9('0x33')][_0x3cf9('0x64')],'CampaignId':_0x2116b9[_0x3cf9('0x47')]['id']}})[_0x3cf9('0x23')](function(){return _0x13410a;});}})[_0x3cf9('0x23')](respondWithStatusCode(_0x38efa6,null))['catch'](handleError(_0x38efa6,null));};
\ No newline at end of file
index 702ce00..5d63ff5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x1203f,_0x554bbc){var _0x365f0a=function(_0x3531d0){while(--_0x3531d0){_0x1203f['push'](_0x1203f['shift']());}};_0x365f0a(++_0x554bbc);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x392dc7,_0x2b5c91){var _0x440de9=function(_0xddb25b){while(--_0xddb25b){_0x392dc7['push'](_0x392dc7['shift']());}};_0x440de9(++_0x2b5c91);}(_0x7a54,0x106));var _0x47a5=function(_0x55e60a,_0x38e6a6){_0x55e60a=_0x55e60a-0x0;var _0x147a88=_0x7a54[_0x55e60a];return _0x147a88;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f3e2b85..c72f08a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81a4=['raw','attributes','limit','include','map','model','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','GetCampaign','Campaign','options'];(function(_0x81e6e2,_0x3565ca){var _0x56bb71=function(_0x49c2b7){while(--_0x49c2b7){_0x81e6e2['push'](_0x81e6e2['shift']());}};_0x56bb71(++_0x3565ca);}(_0x81a4,0x1a6));var _0x481a=function(_0x2675da,_0x5a250e){_0x2675da=_0x2675da-0x0;var _0x5e6153=_0x81a4[_0x2675da];return _0x5e6153;};'use strict';var _=require(_0x481a('0x0'));var util=require(_0x481a('0x1'));var moment=require(_0x481a('0x2'));var BPromise=require(_0x481a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x481a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x481a('0x5'));var logger=require(_0x481a('0x6'))(_0x481a('0x7'));var config=require('../../config/environment');var jayson=require(_0x481a('0x8'));var client=jayson[_0x481a('0x9')][_0x481a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x14b819,_0x4a5a92,_0x13ed10){return new BPromise(function(_0x13b771,_0x9b7dd5){return client[_0x481a('0xb')](_0x14b819,_0x13ed10)[_0x481a('0xc')](function(_0x59580e){logger['info'](_0x481a('0xd'),_0x4a5a92,_0x481a('0xe'));logger[_0x481a('0xf')](_0x481a('0x10'),_0x4a5a92,_0x481a('0xe'),JSON[_0x481a('0x11')](_0x59580e));if(_0x59580e[_0x481a('0x12')]){if(_0x59580e[_0x481a('0x12')][_0x481a('0x13')]===0x1f4){logger[_0x481a('0x12')]('Campaign,\x20%s,\x20%s',_0x4a5a92,_0x59580e['error'][_0x481a('0x14')]);return _0x9b7dd5(_0x59580e[_0x481a('0x12')][_0x481a('0x14')]);}logger[_0x481a('0x12')](_0x481a('0xd'),_0x4a5a92,_0x59580e[_0x481a('0x12')]['message']);return _0x13b771(_0x59580e[_0x481a('0x12')]['message']);}else{logger[_0x481a('0x15')](_0x481a('0xd'),_0x4a5a92,_0x481a('0xe'));_0x13b771(_0x59580e['result']['message']);}})[_0x481a('0x16')](function(_0xa5746f){logger[_0x481a('0x12')](_0x481a('0xd'),_0x4a5a92,_0xa5746f);_0x9b7dd5(_0xa5746f);});});}exports[_0x481a('0x17')]=function(_0x3186e3){var _0xe4e8fe=this;return new Promise(function(_0x2e6d4e,_0x38c15e){return db[_0x481a('0x18')]['findAll']({'raw':_0x3186e3[_0x481a('0x19')]?_0x3186e3[_0x481a('0x19')][_0x481a('0x1a')]===undefined?!![]:![]:!![],'where':_0x3186e3[_0x481a('0x19')]?_0x3186e3[_0x481a('0x19')]['where']||null:null,'attributes':_0x3186e3[_0x481a('0x19')]?_0x3186e3[_0x481a('0x19')][_0x481a('0x1b')]||null:null,'limit':_0x3186e3[_0x481a('0x19')]?_0x3186e3['options'][_0x481a('0x1c')]||null:null,'include':_0x3186e3[_0x481a('0x19')]?_0x3186e3[_0x481a('0x19')][_0x481a('0x1d')]?_[_0x481a('0x1e')](_0x3186e3[_0x481a('0x19')][_0x481a('0x1d')],function(_0x6a554b){return{'model':db[_0x6a554b['model']],'as':_0x6a554b['as'],'attributes':_0x6a554b[_0x481a('0x1b')],'include':_0x6a554b[_0x481a('0x1d')]?_['map'](_0x6a554b[_0x481a('0x1d')],function(_0x4916fa){return{'model':db[_0x4916fa[_0x481a('0x1f')]],'as':_0x4916fa['as'],'attributes':_0x4916fa[_0x481a('0x1b')],'include':_0x4916fa[_0x481a('0x1d')]?_[_0x481a('0x1e')](_0x4916fa['include'],function(_0x42acf4){return{'model':db[_0x42acf4[_0x481a('0x1f')]],'as':_0x42acf4['as'],'attributes':_0x42acf4[_0x481a('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x481a('0xc')](function(_0x20aeb5){logger[_0x481a('0x15')]('GetCampaign',_0x3186e3);logger[_0x481a('0xf')](_0x481a('0x17'),_0x3186e3,JSON[_0x481a('0x11')](_0x20aeb5));_0x2e6d4e(_0x20aeb5);})[_0x481a('0x16')](function(_0x4e9d26){logger[_0x481a('0x12')](_0x481a('0x17'),_0x4e9d26[_0x481a('0x14')],_0x3186e3);_0x38c15e(_0xe4e8fe[_0x481a('0x12')](0x1f4,_0x4e9d26['message']));});});};
\ No newline at end of file
+var _0xbbb8=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetCampaign','Campaign','findAll','options','attributes','limit','include','model','map','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x364cc5,_0x11dc94){var _0x525d77=function(_0x366a4a){while(--_0x366a4a){_0x364cc5['push'](_0x364cc5['shift']());}};_0x525d77(++_0x11dc94);}(_0xbbb8,0x7d));var _0x8bbb=function(_0x201ad3,_0xa159e8){_0x201ad3=_0x201ad3-0x0;var _0x29216b=_0xbbb8[_0x201ad3];return _0x29216b;};'use strict';var _=require(_0x8bbb('0x0'));var util=require(_0x8bbb('0x1'));var moment=require('moment');var BPromise=require(_0x8bbb('0x2'));var rs=require(_0x8bbb('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8bbb('0x4'))['db'];var utils=require(_0x8bbb('0x5'));var logger=require(_0x8bbb('0x6'))(_0x8bbb('0x7'));var config=require(_0x8bbb('0x8'));var jayson=require(_0x8bbb('0x9'));var client=jayson[_0x8bbb('0xa')][_0x8bbb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2d7098,_0x4bbc55,_0x5c744c){return new BPromise(function(_0x4da98e,_0x2d69aa){return client[_0x8bbb('0xc')](_0x2d7098,_0x5c744c)[_0x8bbb('0xd')](function(_0x3a6ced){logger[_0x8bbb('0xe')](_0x8bbb('0xf'),_0x4bbc55,_0x8bbb('0x10'));logger[_0x8bbb('0x11')]('Campaign,\x20%s,\x20%s,\x20%s',_0x4bbc55,_0x8bbb('0x10'),JSON[_0x8bbb('0x12')](_0x3a6ced));if(_0x3a6ced[_0x8bbb('0x13')]){if(_0x3a6ced['error'][_0x8bbb('0x14')]===0x1f4){logger[_0x8bbb('0x13')](_0x8bbb('0xf'),_0x4bbc55,_0x3a6ced['error'][_0x8bbb('0x15')]);return _0x2d69aa(_0x3a6ced[_0x8bbb('0x13')][_0x8bbb('0x15')]);}logger[_0x8bbb('0x13')]('Campaign,\x20%s,\x20%s',_0x4bbc55,_0x3a6ced[_0x8bbb('0x13')][_0x8bbb('0x15')]);return _0x4da98e(_0x3a6ced['error'][_0x8bbb('0x15')]);}else{logger[_0x8bbb('0xe')](_0x8bbb('0xf'),_0x4bbc55,_0x8bbb('0x10'));_0x4da98e(_0x3a6ced[_0x8bbb('0x16')][_0x8bbb('0x15')]);}})[_0x8bbb('0x17')](function(_0x15643c){logger[_0x8bbb('0x13')](_0x8bbb('0xf'),_0x4bbc55,_0x15643c);_0x2d69aa(_0x15643c);});});}exports[_0x8bbb('0x18')]=function(_0x2c2cd4){var _0x12486b=this;return new Promise(function(_0x4abd04,_0x2a6e0){return db[_0x8bbb('0x19')][_0x8bbb('0x1a')]({'raw':_0x2c2cd4[_0x8bbb('0x1b')]?_0x2c2cd4[_0x8bbb('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x2c2cd4[_0x8bbb('0x1b')]?_0x2c2cd4['options']['where']||null:null,'attributes':_0x2c2cd4[_0x8bbb('0x1b')]?_0x2c2cd4['options'][_0x8bbb('0x1c')]||null:null,'limit':_0x2c2cd4['options']?_0x2c2cd4[_0x8bbb('0x1b')][_0x8bbb('0x1d')]||null:null,'include':_0x2c2cd4['options']?_0x2c2cd4[_0x8bbb('0x1b')][_0x8bbb('0x1e')]?_['map'](_0x2c2cd4[_0x8bbb('0x1b')][_0x8bbb('0x1e')],function(_0x4b2ba6){return{'model':db[_0x4b2ba6[_0x8bbb('0x1f')]],'as':_0x4b2ba6['as'],'attributes':_0x4b2ba6['attributes'],'include':_0x4b2ba6[_0x8bbb('0x1e')]?_[_0x8bbb('0x20')](_0x4b2ba6[_0x8bbb('0x1e')],function(_0x2fff2e){return{'model':db[_0x2fff2e['model']],'as':_0x2fff2e['as'],'attributes':_0x2fff2e[_0x8bbb('0x1c')],'include':_0x2fff2e['include']?_[_0x8bbb('0x20')](_0x2fff2e['include'],function(_0x22a074){return{'model':db[_0x22a074[_0x8bbb('0x1f')]],'as':_0x22a074['as'],'attributes':_0x22a074[_0x8bbb('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1375a9){logger['info'](_0x8bbb('0x18'),_0x2c2cd4);logger[_0x8bbb('0x11')](_0x8bbb('0x18'),_0x2c2cd4,JSON[_0x8bbb('0x12')](_0x1375a9));_0x4abd04(_0x1375a9);})['catch'](function(_0x51c251){logger[_0x8bbb('0x13')]('GetCampaign',_0x51c251[_0x8bbb('0x15')],_0x2c2cd4);_0x2a6e0(_0x12486b[_0x8bbb('0x13')](0x1f4,_0x51c251['message']));});});};
\ No newline at end of file
index b119336..c9a93d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x188e=['addLists','addBlackLists','put','update','destroy','delete','removeLists','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','isAuthenticated','index','get','/:id','show','getHoppers','/:id/hopper_histories','getHopperHistories','getHopperFinals','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone'];(function(_0x560759,_0x232877){var _0x433d61=function(_0x107e35){while(--_0x107e35){_0x560759['push'](_0x560759['shift']());}};_0x433d61(++_0x232877);}(_0x188e,0x1cf));var _0xe188=function(_0x481705,_0x4f9d21){_0x481705=_0x481705-0x0;var _0x35524c=_0x188e[_0x481705];return _0x35524c;};'use strict';var multer=require('multer');var util=require(_0xe188('0x0'));var path=require(_0xe188('0x1'));var timeout=require('connect-timeout');var express=require(_0xe188('0x2'));var router=express[_0xe188('0x3')]();var fs_extra=require(_0xe188('0x4'));var auth=require(_0xe188('0x5'));var interaction=require(_0xe188('0x6'));var config=require(_0xe188('0x7'));var controller=require(_0xe188('0x8'));router['get']('/',auth[_0xe188('0x9')](),controller[_0xe188('0xa')]);router[_0xe188('0xb')](_0xe188('0xc'),auth[_0xe188('0x9')](),controller[_0xe188('0xd')]);router[_0xe188('0xb')]('/:id/hoppers',auth[_0xe188('0x9')](),controller[_0xe188('0xe')]);router[_0xe188('0xb')](_0xe188('0xf'),auth[_0xe188('0x9')](),controller[_0xe188('0x10')]);router[_0xe188('0xb')]('/:id/hopper_finals',auth[_0xe188('0x9')](),controller[_0xe188('0x11')]);router[_0xe188('0xb')]('/:id/hopper_black',auth[_0xe188('0x9')](),controller[_0xe188('0x12')]);router[_0xe188('0xb')](_0xe188('0x13'),auth[_0xe188('0x9')](),controller[_0xe188('0x14')]);router['get'](_0xe188('0x15'),auth[_0xe188('0x9')](),controller[_0xe188('0x16')]);router[_0xe188('0x17')]('/',auth[_0xe188('0x9')](),controller[_0xe188('0x18')]);router['post'](_0xe188('0x19'),auth[_0xe188('0x9')](),controller[_0xe188('0x1a')]);router['post'](_0xe188('0x13'),auth[_0xe188('0x9')](),controller[_0xe188('0x1b')]);router[_0xe188('0x17')](_0xe188('0x15'),auth[_0xe188('0x9')](),controller[_0xe188('0x1c')]);router[_0xe188('0x1d')](_0xe188('0xc'),auth['isAuthenticated'](),controller[_0xe188('0x1e')]);router['delete'](_0xe188('0xc'),auth[_0xe188('0x9')](),controller[_0xe188('0x1f')]);router[_0xe188('0x20')](_0xe188('0x13'),auth['isAuthenticated'](),controller[_0xe188('0x21')]);router['delete'](_0xe188('0x15'),auth[_0xe188('0x9')](),controller['removeBlackLists']);module[_0xe188('0x22')]=router;
\ No newline at end of file
+var _0xe4ba=['delete','destroy','removeLists','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./campaign.controller','get','isAuthenticated','index','/:id','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','/:id/blacklists','getBlackLists','post','create','clone','addLists','addBlackLists','put','update'];(function(_0x5f3c09,_0xf24ee7){var _0x2b5f4e=function(_0x2ddca5){while(--_0x2ddca5){_0x5f3c09['push'](_0x5f3c09['shift']());}};_0x2b5f4e(++_0xf24ee7);}(_0xe4ba,0x190));var _0xae4b=function(_0x50281f,_0x1362bb){_0x50281f=_0x50281f-0x0;var _0x5c3424=_0xe4ba[_0x50281f];return _0x5c3424;};'use strict';var multer=require('multer');var util=require(_0xae4b('0x0'));var path=require('path');var timeout=require(_0xae4b('0x1'));var express=require(_0xae4b('0x2'));var router=express[_0xae4b('0x3')]();var fs_extra=require(_0xae4b('0x4'));var auth=require(_0xae4b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xae4b('0x6'));var controller=require(_0xae4b('0x7'));router[_0xae4b('0x8')]('/',auth[_0xae4b('0x9')](),controller[_0xae4b('0xa')]);router['get'](_0xae4b('0xb'),auth[_0xae4b('0x9')](),controller['show']);router['get'](_0xae4b('0xc'),auth[_0xae4b('0x9')](),controller[_0xae4b('0xd')]);router[_0xae4b('0x8')](_0xae4b('0xe'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xae4b('0x8')](_0xae4b('0xf'),auth[_0xae4b('0x9')](),controller[_0xae4b('0x10')]);router[_0xae4b('0x8')](_0xae4b('0x11'),auth[_0xae4b('0x9')](),controller[_0xae4b('0x12')]);router['get'](_0xae4b('0x13'),auth[_0xae4b('0x9')](),controller['getLists']);router[_0xae4b('0x8')](_0xae4b('0x14'),auth['isAuthenticated'](),controller[_0xae4b('0x15')]);router[_0xae4b('0x16')]('/',auth[_0xae4b('0x9')](),controller[_0xae4b('0x17')]);router['post']('/:id/clone',auth['isAuthenticated'](),controller[_0xae4b('0x18')]);router[_0xae4b('0x16')](_0xae4b('0x13'),auth[_0xae4b('0x9')](),controller[_0xae4b('0x19')]);router[_0xae4b('0x16')](_0xae4b('0x14'),auth[_0xae4b('0x9')](),controller[_0xae4b('0x1a')]);router[_0xae4b('0x1b')]('/:id',auth[_0xae4b('0x9')](),controller[_0xae4b('0x1c')]);router[_0xae4b('0x1d')](_0xae4b('0xb'),auth['isAuthenticated'](),controller[_0xae4b('0x1e')]);router[_0xae4b('0x1d')](_0xae4b('0x13'),auth[_0xae4b('0x9')](),controller[_0xae4b('0x1f')]);router[_0xae4b('0x1d')](_0xae4b('0x14'),auth[_0xae4b('0x9')](),controller['removeBlackLists']);module[_0xae4b('0x20')]=router;
\ No newline at end of file
index 03a2e00..9058e61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e22=['getDataValue','key','sequelize','exports','STRING','TEXT'];(function(_0x11a445,_0x30efba){var _0x18db04=function(_0x2bb67f){while(--_0x2bb67f){_0x11a445['push'](_0x11a445['shift']());}};_0x18db04(++_0x30efba);}(_0x3e22,0x98));var _0x23e2=function(_0x41bbd7,_0x3041f8){_0x41bbd7=_0x41bbd7-0x0;var _0x116b13=_0x3e22[_0x41bbd7];return _0x116b13;};'use strict';var Sequelize=require(_0x23e2('0x0'));module[_0x23e2('0x1')]={'key':{'type':Sequelize[_0x23e2('0x2')],'allowNull':![]},'value':{'type':Sequelize[_0x23e2('0x3')],'allowNull':![]},'description':{'type':Sequelize[_0x23e2('0x2')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x23e2('0x4')](_0x23e2('0x5'));}}};
\ No newline at end of file
+var _0xdd26=['STRING','TEXT','key','sequelize','exports'];(function(_0x48961c,_0x280e9d){var _0x1d895d=function(_0x248ffa){while(--_0x248ffa){_0x48961c['push'](_0x48961c['shift']());}};_0x1d895d(++_0x280e9d);}(_0xdd26,0x143));var _0x6dd2=function(_0x2a3f0a,_0x4f1290){_0x2a3f0a=_0x2a3f0a-0x0;var _0x13c501=_0xdd26[_0x2a3f0a];return _0x13c501;};'use strict';var Sequelize=require(_0x6dd2('0x0'));module[_0x6dd2('0x1')]={'key':{'type':Sequelize[_0x6dd2('0x2')],'allowNull':![]},'value':{'type':Sequelize[_0x6dd2('0x3')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue'](_0x6dd2('0x4'));}}};
\ No newline at end of file
index 671e021..f27520a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x073b=['UserProfileResource','error','stack','send','index','map','rawAttributes','fieldName','type','key','name','keys','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','merge','filter','options','CannedAnswer','includeAll','rows','params','include','find','body','catch','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','save','then','destroy','get','CannedAnswers'];(function(_0x546125,_0xfa3bf){var _0x77b546=function(_0x475555){while(--_0x475555){_0x546125['push'](_0x546125['shift']());}};_0x77b546(++_0xfa3bf);}(_0x073b,0x149));var _0xb073=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x073b[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xb073('0x0'));var rimraf=require(_0xb073('0x1'));var zipdir=require(_0xb073('0x2'));var jsonpatch=require(_0xb073('0x3'));var rp=require(_0xb073('0x4'));var moment=require(_0xb073('0x5'));var BPromise=require(_0xb073('0x6'));var Mustache=require(_0xb073('0x7'));var util=require(_0xb073('0x8'));var path=require(_0xb073('0x9'));var sox=require('sox');var csv=require(_0xb073('0xa'));var ejs=require(_0xb073('0xb'));var fs=require('fs');var fs_extra=require(_0xb073('0xc'));var _=require(_0xb073('0xd'));var squel=require(_0xb073('0xe'));var crypto=require(_0xb073('0xf'));var jsforce=require(_0xb073('0x10'));var deskjs=require(_0xb073('0x11'));var toCsv=require(_0xb073('0xa'));var querystring=require(_0xb073('0x12'));var Papa=require('papaparse');var Redis=require(_0xb073('0x13'));var authService=require(_0xb073('0x14'));var qs=require(_0xb073('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb073('0x16'));var logger=require('../../config/logger')(_0xb073('0x17'));var utils=require(_0xb073('0x18'));var config=require(_0xb073('0x19'));var licenseUtil=require(_0xb073('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x32e583,_0x491604){_0x491604=_0x491604||0xcc;return function(_0x48dcce){if(_0x48dcce){return _0x32e583[_0xb073('0x1b')](_0x491604);}return _0x32e583['status'](_0x491604)[_0xb073('0x1c')]();};}function respondWithResult(_0x2a0808,_0x6dfca5){_0x6dfca5=_0x6dfca5||0xc8;return function(_0x7eb5f0){if(_0x7eb5f0){return _0x2a0808[_0xb073('0x1d')](_0x6dfca5)[_0xb073('0x1e')](_0x7eb5f0);}};}function respondWithFilteredResult(_0x51fc88,_0x314900){return function(_0x49df22){if(_0x49df22){var _0x393ee3=typeof _0x314900[_0xb073('0x1f')]==='undefined'&&typeof _0x314900[_0xb073('0x20')]===_0xb073('0x21');var _0xea167a=_0x49df22[_0xb073('0x22')];var _0x3a9234=_0x393ee3?0x0:_0x314900[_0xb073('0x1f')];var _0x216d79=_0x393ee3?_0x49df22[_0xb073('0x22')]:_0x314900[_0xb073('0x1f')]+_0x314900[_0xb073('0x20')];var _0x47fa3d;if(_0x216d79>=_0xea167a){_0x216d79=_0xea167a;_0x47fa3d=0xc8;}else{_0x47fa3d=0xce;}_0x51fc88[_0xb073('0x1d')](_0x47fa3d);return _0x51fc88[_0xb073('0x23')](_0xb073('0x24'),_0x3a9234+'-'+_0x216d79+'/'+_0xea167a)[_0xb073('0x1e')](_0x49df22);}return null;};}function patchUpdates(_0x1a0989){return function(_0x39a618){try{jsonpatch[_0xb073('0x25')](_0x39a618,_0x1a0989,!![]);}catch(_0x3c4721){return BPromise['reject'](_0x3c4721);}return _0x39a618[_0xb073('0x26')]();};}function saveUpdates(_0x113353,_0x192f94){return function(_0x489f5a){if(_0x489f5a){return _0x489f5a['update'](_0x113353)[_0xb073('0x27')](function(_0x8190e0){return _0x8190e0;});}return null;};}function removeEntity(_0x39d95e,_0x257c23){return function(_0x3acda9){if(_0x3acda9){return _0x3acda9[_0xb073('0x28')]()[_0xb073('0x27')](function(){var _0x3ce8ad=_0x3acda9[_0xb073('0x29')]({'plain':!![]});var _0x2d8006=_0xb073('0x2a');return db[_0xb073('0x2b')][_0xb073('0x28')]({'where':{'type':_0x2d8006,'resourceId':_0x3ce8ad['id']}})[_0xb073('0x27')](function(){return _0x3acda9;});})[_0xb073('0x27')](function(){_0x39d95e[_0xb073('0x1d')](0xcc)[_0xb073('0x1c')]();});}};}function handleEntityNotFound(_0x18d6f9,_0x4985fb){return function(_0x5e0bc3){if(!_0x5e0bc3){_0x18d6f9[_0xb073('0x1b')](0x194);}return _0x5e0bc3;};}function handleError(_0x3d5502,_0x9cc071){_0x9cc071=_0x9cc071||0x1f4;return function(_0x53d1ff){logger[_0xb073('0x2c')](_0x53d1ff[_0xb073('0x2d')]);if(_0x53d1ff['name']){delete _0x53d1ff['name'];}_0x3d5502[_0xb073('0x1d')](_0x9cc071)[_0xb073('0x2e')](_0x53d1ff);};}exports[_0xb073('0x2f')]=function(_0xc627f5,_0xa7d8a9){var _0x3e7254={},_0x1d27a0={},_0x9f71c9={'count':0x0,'rows':[]};var _0x2ff340=_[_0xb073('0x30')](db['CannedAnswer'][_0xb073('0x31')],function(_0x3ae3d4){return{'name':_0x3ae3d4[_0xb073('0x32')],'type':_0x3ae3d4[_0xb073('0x33')][_0xb073('0x34')]};});_0x1d27a0['model']=_[_0xb073('0x30')](_0x2ff340,_0xb073('0x35'));_0x1d27a0['query']=_[_0xb073('0x36')](_0xc627f5['query']);_0x1d27a0['filters']=_[_0xb073('0x37')](_0x1d27a0[_0xb073('0x38')],_0x1d27a0[_0xb073('0x39')]);_0x3e7254[_0xb073('0x3a')]=_[_0xb073('0x37')](_0x1d27a0[_0xb073('0x38')],qs['fields'](_0xc627f5['query'][_0xb073('0x3b')]));_0x3e7254[_0xb073('0x3a')]=_0x3e7254[_0xb073('0x3a')][_0xb073('0x3c')]?_0x3e7254[_0xb073('0x3a')]:_0x1d27a0[_0xb073('0x38')];if(!_0xc627f5[_0xb073('0x39')][_0xb073('0x3d')](_0xb073('0x3e'))){_0x3e7254[_0xb073('0x20')]=qs[_0xb073('0x20')](_0xc627f5[_0xb073('0x39')]['limit']);_0x3e7254['offset']=qs[_0xb073('0x1f')](_0xc627f5[_0xb073('0x39')]['offset']);}_0x3e7254[_0xb073('0x3f')]=qs[_0xb073('0x40')](_0xc627f5[_0xb073('0x39')][_0xb073('0x40')]);_0x3e7254[_0xb073('0x41')]=qs['filters'](_[_0xb073('0x42')](_0xc627f5['query'],_0x1d27a0[_0xb073('0x43')]),_0x2ff340);if(_0xc627f5[_0xb073('0x39')]['filter']){_0x3e7254['where']=_[_0xb073('0x44')](_0x3e7254[_0xb073('0x41')],{'$or':[{'key':{'$like':'%'+_0xc627f5[_0xb073('0x39')][_0xb073('0x45')]+'%'}},{'value':{'$like':'%'+_0xc627f5['query'][_0xb073('0x45')]+'%'}}]});}_0x3e7254=_[_0xb073('0x44')]({},_0x3e7254,_0xc627f5[_0xb073('0x46')]);var _0xc0143c={'where':_0x3e7254[_0xb073('0x41')]};return db[_0xb073('0x47')][_0xb073('0x22')](_0xc0143c)[_0xb073('0x27')](function(_0x2a05e0){_0x9f71c9['count']=_0x2a05e0;if(_0xc627f5[_0xb073('0x39')][_0xb073('0x48')]){_0x3e7254['include']=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x3e7254);})['then'](function(_0x15192){_0x9f71c9[_0xb073('0x49')]=_0x15192;return _0x9f71c9;})['then'](respondWithFilteredResult(_0xa7d8a9,_0x3e7254))['catch'](handleError(_0xa7d8a9,null));};exports['show']=function(_0x1283f1,_0xa89a70){var _0x2b98d9={'raw':!![],'where':{'id':_0x1283f1[_0xb073('0x4a')]['id']}},_0x1e1ed6={};_0x1e1ed6['model']=_[_0xb073('0x36')](db[_0xb073('0x47')][_0xb073('0x31')]);_0x1e1ed6['query']=_[_0xb073('0x36')](_0x1283f1['query']);_0x1e1ed6[_0xb073('0x43')]=_[_0xb073('0x37')](_0x1e1ed6[_0xb073('0x38')],_0x1e1ed6[_0xb073('0x39')]);_0x2b98d9[_0xb073('0x3a')]=_[_0xb073('0x37')](_0x1e1ed6[_0xb073('0x38')],qs[_0xb073('0x3b')](_0x1283f1[_0xb073('0x39')][_0xb073('0x3b')]));_0x2b98d9[_0xb073('0x3a')]=_0x2b98d9[_0xb073('0x3a')][_0xb073('0x3c')]?_0x2b98d9[_0xb073('0x3a')]:_0x1e1ed6[_0xb073('0x38')];if(_0x1283f1[_0xb073('0x39')][_0xb073('0x48')]){_0x2b98d9[_0xb073('0x4b')]=[{'all':!![]}];}_0x2b98d9=_[_0xb073('0x44')]({},_0x2b98d9,_0x1283f1['options']);return db[_0xb073('0x47')][_0xb073('0x4c')](_0x2b98d9)[_0xb073('0x27')](handleEntityNotFound(_0xa89a70,null))['then'](respondWithResult(_0xa89a70,null))['catch'](handleError(_0xa89a70,null));};exports['update']=function(_0x30b596,_0x82ebc2){if(_0x30b596[_0xb073('0x4d')]['id']){delete _0x30b596[_0xb073('0x4d')]['id'];}return db['CannedAnswer'][_0xb073('0x4c')]({'where':{'id':_0x30b596['params']['id']}})[_0xb073('0x27')](handleEntityNotFound(_0x82ebc2,null))['then'](saveUpdates(_0x30b596[_0xb073('0x4d')],null))[_0xb073('0x27')](respondWithResult(_0x82ebc2,null))[_0xb073('0x4e')](handleError(_0x82ebc2,null));};exports['destroy']=function(_0x231c8c,_0x2d1ac4){return db[_0xb073('0x47')][_0xb073('0x4c')]({'where':{'id':_0x231c8c['params']['id']}})[_0xb073('0x27')](handleEntityNotFound(_0x2d1ac4,null))[_0xb073('0x27')](removeEntity(_0x2d1ac4,null))[_0xb073('0x4e')](handleError(_0x2d1ac4,null));};exports[_0xb073('0x4f')]=function(_0x37a6f2,_0x1365c6){var _0x3f11e5={'key':_0x37a6f2[_0xb073('0x4d')][_0xb073('0x34')]};if(_0x37a6f2[_0xb073('0x4d')][_0xb073('0x50')]){_0x3f11e5[_0xb073('0x50')]=_0x37a6f2[_0xb073('0x4d')][_0xb073('0x50')];}else if(_0x37a6f2[_0xb073('0x4d')][_0xb073('0x51')]){_0x3f11e5[_0xb073('0x51')]=_0x37a6f2[_0xb073('0x4d')]['SmsAccountId'];}else if(_0x37a6f2['body'][_0xb073('0x52')]){_0x3f11e5[_0xb073('0x52')]=_0x37a6f2[_0xb073('0x4d')]['OpenchannelAccountId'];}else if(_0x37a6f2[_0xb073('0x4d')][_0xb073('0x53')]){_0x3f11e5[_0xb073('0x53')]=_0x37a6f2[_0xb073('0x4d')][_0xb073('0x53')];}return db[_0xb073('0x47')][_0xb073('0x4c')]({'where':_0x3f11e5})['then'](function(_0x279794){if(_0x279794){throw new db['Sequelize'][(_0xb073('0x54'))](_0xb073('0x55'));}return db[_0xb073('0x47')][_0xb073('0x4f')](_0x37a6f2[_0xb073('0x4d')]);})[_0xb073('0x27')](function(_0x13bf55){var _0x52447a=_0x37a6f2[_0xb073('0x56')][_0xb073('0x29')]({'plain':!![]});if(!_0x52447a)throw new Error(_0xb073('0x57'));if(_0x52447a[_0xb073('0x58')]===_0xb073('0x56')){var _0x4a0971=_0x13bf55['get']({'plain':!![]});return db[_0xb073('0x59')][_0xb073('0x4c')]({'where':{'name':'CannedAnswers','userProfileId':_0x52447a[_0xb073('0x5a')]},'raw':!![]})[_0xb073('0x27')](function(_0xac558c){if(_0xac558c&&_0xac558c[_0xb073('0x5b')]===0x0){return db[_0xb073('0x2b')][_0xb073('0x4f')]({'name':_0x4a0971[_0xb073('0x35')],'resourceId':_0x4a0971['id'],'type':_0xac558c[_0xb073('0x35')],'sectionId':_0xac558c['id']},{})['then'](function(){return _0x13bf55;});}else{return _0x13bf55;}})[_0xb073('0x4e')](function(_0x7c493e){logger[_0xb073('0x2c')](_0xb073('0x5c'),_0x7c493e);throw _0x7c493e;});}return _0x13bf55;})[_0xb073('0x27')](respondWithResult(_0x1365c6,0xc9))[_0xb073('0x4e')](handleError(_0x1365c6,null));};
\ No newline at end of file
+var _0x9576=['../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','save','update','then','destroy','get','CannedAnswers','UserProfileResource','error','stack','name','send','index','map','CannedAnswer','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','find','body','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','create','role','user','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util'];(function(_0x545580,_0x5d2fed){var _0x68137b=function(_0x53a94b){while(--_0x53a94b){_0x545580['push'](_0x545580['shift']());}};_0x68137b(++_0x5d2fed);}(_0x9576,0x96));var _0x6957=function(_0x3b48c1,_0xf0178){_0x3b48c1=_0x3b48c1-0x0;var _0x32fc50=_0x9576[_0x3b48c1];return _0x32fc50;};'use strict';var emlformat=require(_0x6957('0x0'));var rimraf=require(_0x6957('0x1'));var zipdir=require(_0x6957('0x2'));var jsonpatch=require(_0x6957('0x3'));var rp=require(_0x6957('0x4'));var moment=require(_0x6957('0x5'));var BPromise=require(_0x6957('0x6'));var Mustache=require(_0x6957('0x7'));var util=require(_0x6957('0x8'));var path=require(_0x6957('0x9'));var sox=require(_0x6957('0xa'));var csv=require(_0x6957('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6957('0xc'));var _=require(_0x6957('0xd'));var squel=require(_0x6957('0xe'));var crypto=require(_0x6957('0xf'));var jsforce=require(_0x6957('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x6957('0xb'));var querystring=require(_0x6957('0x11'));var Papa=require(_0x6957('0x12'));var Redis=require(_0x6957('0x13'));var authService=require(_0x6957('0x14'));var qs=require(_0x6957('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6957('0x16'));var logger=require(_0x6957('0x17'))('api');var utils=require(_0x6957('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x6957('0x19'));var db=require(_0x6957('0x1a'))['db'];function respondWithStatusCode(_0x823757,_0x1534de){_0x1534de=_0x1534de||0xcc;return function(_0x2720eb){if(_0x2720eb){return _0x823757[_0x6957('0x1b')](_0x1534de);}return _0x823757[_0x6957('0x1c')](_0x1534de)[_0x6957('0x1d')]();};}function respondWithResult(_0x45a976,_0x400609){_0x400609=_0x400609||0xc8;return function(_0x1ab4b8){if(_0x1ab4b8){return _0x45a976['status'](_0x400609)[_0x6957('0x1e')](_0x1ab4b8);}};}function respondWithFilteredResult(_0x29bdc7,_0x4e692c){return function(_0x27e8ea){if(_0x27e8ea){var _0x4734c9=typeof _0x4e692c[_0x6957('0x1f')]==='undefined'&&typeof _0x4e692c['limit']===_0x6957('0x20');var _0x3b973b=_0x27e8ea[_0x6957('0x21')];var _0x2cac4a=_0x4734c9?0x0:_0x4e692c[_0x6957('0x1f')];var _0x424cab=_0x4734c9?_0x27e8ea['count']:_0x4e692c[_0x6957('0x1f')]+_0x4e692c[_0x6957('0x22')];var _0x272891;if(_0x424cab>=_0x3b973b){_0x424cab=_0x3b973b;_0x272891=0xc8;}else{_0x272891=0xce;}_0x29bdc7[_0x6957('0x1c')](_0x272891);return _0x29bdc7['set']('Content-Range',_0x2cac4a+'-'+_0x424cab+'/'+_0x3b973b)[_0x6957('0x1e')](_0x27e8ea);}return null;};}function patchUpdates(_0x48790d){return function(_0xbc25f4){try{jsonpatch['apply'](_0xbc25f4,_0x48790d,!![]);}catch(_0x550166){return BPromise['reject'](_0x550166);}return _0xbc25f4[_0x6957('0x23')]();};}function saveUpdates(_0x1a006f,_0x59c185){return function(_0x39f578){if(_0x39f578){return _0x39f578[_0x6957('0x24')](_0x1a006f)[_0x6957('0x25')](function(_0x42997f){return _0x42997f;});}return null;};}function removeEntity(_0x4ce7fb,_0x4773c8){return function(_0x1d7c89){if(_0x1d7c89){return _0x1d7c89[_0x6957('0x26')]()['then'](function(){var _0x5a603e=_0x1d7c89[_0x6957('0x27')]({'plain':!![]});var _0x12f142=_0x6957('0x28');return db[_0x6957('0x29')][_0x6957('0x26')]({'where':{'type':_0x12f142,'resourceId':_0x5a603e['id']}})['then'](function(){return _0x1d7c89;});})[_0x6957('0x25')](function(){_0x4ce7fb[_0x6957('0x1c')](0xcc)[_0x6957('0x1d')]();});}};}function handleEntityNotFound(_0x3d564d,_0x18e485){return function(_0x32e9eb){if(!_0x32e9eb){_0x3d564d['sendStatus'](0x194);}return _0x32e9eb;};}function handleError(_0x1ad8c7,_0x451eea){_0x451eea=_0x451eea||0x1f4;return function(_0x150ee6){logger[_0x6957('0x2a')](_0x150ee6[_0x6957('0x2b')]);if(_0x150ee6[_0x6957('0x2c')]){delete _0x150ee6[_0x6957('0x2c')];}_0x1ad8c7['status'](_0x451eea)[_0x6957('0x2d')](_0x150ee6);};}exports[_0x6957('0x2e')]=function(_0xae1790,_0x337892){var _0x2f9dc8={},_0x53a162={},_0x248859={'count':0x0,'rows':[]};var _0x4a2d47=_[_0x6957('0x2f')](db[_0x6957('0x30')][_0x6957('0x31')],function(_0x4af10c){return{'name':_0x4af10c[_0x6957('0x32')],'type':_0x4af10c['type'][_0x6957('0x33')]};});_0x53a162[_0x6957('0x34')]=_[_0x6957('0x2f')](_0x4a2d47,_0x6957('0x2c'));_0x53a162[_0x6957('0x35')]=_[_0x6957('0x36')](_0xae1790[_0x6957('0x35')]);_0x53a162[_0x6957('0x37')]=_[_0x6957('0x38')](_0x53a162[_0x6957('0x34')],_0x53a162['query']);_0x2f9dc8[_0x6957('0x39')]=_[_0x6957('0x38')](_0x53a162['model'],qs[_0x6957('0x3a')](_0xae1790[_0x6957('0x35')][_0x6957('0x3a')]));_0x2f9dc8[_0x6957('0x39')]=_0x2f9dc8[_0x6957('0x39')][_0x6957('0x3b')]?_0x2f9dc8[_0x6957('0x39')]:_0x53a162['model'];if(!_0xae1790[_0x6957('0x35')][_0x6957('0x3c')]('nolimit')){_0x2f9dc8['limit']=qs[_0x6957('0x22')](_0xae1790[_0x6957('0x35')][_0x6957('0x22')]);_0x2f9dc8[_0x6957('0x1f')]=qs[_0x6957('0x1f')](_0xae1790[_0x6957('0x35')][_0x6957('0x1f')]);}_0x2f9dc8[_0x6957('0x3d')]=qs['sort'](_0xae1790[_0x6957('0x35')][_0x6957('0x3e')]);_0x2f9dc8[_0x6957('0x3f')]=qs['filters'](_[_0x6957('0x40')](_0xae1790[_0x6957('0x35')],_0x53a162[_0x6957('0x37')]),_0x4a2d47);if(_0xae1790[_0x6957('0x35')][_0x6957('0x41')]){_0x2f9dc8[_0x6957('0x3f')]=_['merge'](_0x2f9dc8[_0x6957('0x3f')],{'$or':[{'key':{'$like':'%'+_0xae1790[_0x6957('0x35')][_0x6957('0x41')]+'%'}},{'value':{'$like':'%'+_0xae1790['query'][_0x6957('0x41')]+'%'}}]});}_0x2f9dc8=_[_0x6957('0x42')]({},_0x2f9dc8,_0xae1790[_0x6957('0x43')]);var _0x55a921={'where':_0x2f9dc8[_0x6957('0x3f')]};return db[_0x6957('0x30')]['count'](_0x55a921)[_0x6957('0x25')](function(_0x370bc0){_0x248859[_0x6957('0x21')]=_0x370bc0;if(_0xae1790[_0x6957('0x35')][_0x6957('0x44')]){_0x2f9dc8[_0x6957('0x45')]=[{'all':!![]}];}return db['CannedAnswer'][_0x6957('0x46')](_0x2f9dc8);})[_0x6957('0x25')](function(_0x3a6096){_0x248859[_0x6957('0x47')]=_0x3a6096;return _0x248859;})[_0x6957('0x25')](respondWithFilteredResult(_0x337892,_0x2f9dc8))[_0x6957('0x48')](handleError(_0x337892,null));};exports[_0x6957('0x49')]=function(_0x4592bc,_0x3a1efd){var _0x25b451={'raw':!![],'where':{'id':_0x4592bc[_0x6957('0x4a')]['id']}},_0x1d756e={};_0x1d756e[_0x6957('0x34')]=_[_0x6957('0x36')](db[_0x6957('0x30')]['rawAttributes']);_0x1d756e[_0x6957('0x35')]=_[_0x6957('0x36')](_0x4592bc[_0x6957('0x35')]);_0x1d756e[_0x6957('0x37')]=_[_0x6957('0x38')](_0x1d756e[_0x6957('0x34')],_0x1d756e[_0x6957('0x35')]);_0x25b451[_0x6957('0x39')]=_[_0x6957('0x38')](_0x1d756e[_0x6957('0x34')],qs[_0x6957('0x3a')](_0x4592bc['query']['fields']));_0x25b451[_0x6957('0x39')]=_0x25b451[_0x6957('0x39')][_0x6957('0x3b')]?_0x25b451[_0x6957('0x39')]:_0x1d756e[_0x6957('0x34')];if(_0x4592bc[_0x6957('0x35')][_0x6957('0x44')]){_0x25b451['include']=[{'all':!![]}];}_0x25b451=_[_0x6957('0x42')]({},_0x25b451,_0x4592bc['options']);return db[_0x6957('0x30')][_0x6957('0x4b')](_0x25b451)[_0x6957('0x25')](handleEntityNotFound(_0x3a1efd,null))[_0x6957('0x25')](respondWithResult(_0x3a1efd,null))[_0x6957('0x48')](handleError(_0x3a1efd,null));};exports['update']=function(_0x407109,_0x3d6052){if(_0x407109['body']['id']){delete _0x407109[_0x6957('0x4c')]['id'];}return db[_0x6957('0x30')]['find']({'where':{'id':_0x407109[_0x6957('0x4a')]['id']}})[_0x6957('0x25')](handleEntityNotFound(_0x3d6052,null))['then'](saveUpdates(_0x407109[_0x6957('0x4c')],null))[_0x6957('0x25')](respondWithResult(_0x3d6052,null))[_0x6957('0x48')](handleError(_0x3d6052,null));};exports[_0x6957('0x26')]=function(_0x486c0d,_0x22a1de){return db[_0x6957('0x30')][_0x6957('0x4b')]({'where':{'id':_0x486c0d[_0x6957('0x4a')]['id']}})['then'](handleEntityNotFound(_0x22a1de,null))['then'](removeEntity(_0x22a1de,null))[_0x6957('0x48')](handleError(_0x22a1de,null));};exports['create']=function(_0x58a621,_0x337704){var _0x59c897={'key':_0x58a621[_0x6957('0x4c')][_0x6957('0x33')]};if(_0x58a621[_0x6957('0x4c')]['MailAccountId']){_0x59c897[_0x6957('0x4d')]=_0x58a621['body'][_0x6957('0x4d')];}else if(_0x58a621[_0x6957('0x4c')][_0x6957('0x4e')]){_0x59c897[_0x6957('0x4e')]=_0x58a621['body'][_0x6957('0x4e')];}else if(_0x58a621[_0x6957('0x4c')][_0x6957('0x4f')]){_0x59c897[_0x6957('0x4f')]=_0x58a621['body'][_0x6957('0x4f')];}else if(_0x58a621['body'][_0x6957('0x50')]){_0x59c897[_0x6957('0x50')]=_0x58a621[_0x6957('0x4c')][_0x6957('0x50')];}return db[_0x6957('0x30')]['find']({'where':_0x59c897})[_0x6957('0x25')](function(_0x316ea0){if(_0x316ea0){throw new db[(_0x6957('0x51'))][(_0x6957('0x52'))]('The\x20inserted\x20key\x20already\x20exists.');}return db['CannedAnswer'][_0x6957('0x53')](_0x58a621[_0x6957('0x4c')]);})['then'](function(_0xc570b0){var _0x315933=_0x58a621['user'][_0x6957('0x27')]({'plain':!![]});if(!_0x315933)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x315933[_0x6957('0x54')]===_0x6957('0x55')){var _0x6e8019=_0xc570b0[_0x6957('0x27')]({'plain':!![]});return db['UserProfileSection'][_0x6957('0x4b')]({'where':{'name':_0x6957('0x28'),'userProfileId':_0x315933[_0x6957('0x56')]},'raw':!![]})[_0x6957('0x25')](function(_0x45b21f){if(_0x45b21f&&_0x45b21f['autoAssociation']===0x0){return db['UserProfileResource'][_0x6957('0x53')]({'name':_0x6e8019[_0x6957('0x2c')],'resourceId':_0x6e8019['id'],'type':_0x45b21f[_0x6957('0x2c')],'sectionId':_0x45b21f['id']},{})[_0x6957('0x25')](function(){return _0xc570b0;});}else{return _0xc570b0;}})[_0x6957('0x48')](function(_0xec4be0){logger[_0x6957('0x2a')](_0x6957('0x57'),_0xec4be0);throw _0xec4be0;});}return _0xc570b0;})[_0x6957('0x25')](respondWithResult(_0x337704,0xc9))[_0x6957('0x48')](handleError(_0x337704,null));};
\ No newline at end of file
index 5e08842..8f8c711 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa772=['utf8mb4_unicode_ci','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./cannedAnswer.attributes','CannedAnswer','tools_canned_answers','utf8mb4'];(function(_0x3b3f46,_0x2e0b19){var _0x45bb8a=function(_0x134e41){while(--_0x134e41){_0x3b3f46['push'](_0x3b3f46['shift']());}};_0x45bb8a(++_0x2e0b19);}(_0xa772,0x114));var _0x2a77=function(_0x7f287d,_0xe3b36e){_0x7f287d=_0x7f287d-0x0;var _0x21514f=_0xa772[_0x7f287d];return _0x21514f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2a77('0x0'))(_0x2a77('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2a77('0x2'));var fs=require('fs');var path=require(_0x2a77('0x3'));var rimraf=require(_0x2a77('0x4'));var config=require(_0x2a77('0x5'));var attributes=require(_0x2a77('0x6'));module['exports']=function(_0x20e909,_0x2e9e78){return _0x20e909['define'](_0x2a77('0x7'),attributes,{'tableName':_0x2a77('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2a77('0x9'),'collate':_0x2a77('0xa')});};
\ No newline at end of file
+var _0x3e27=['../../config/logger','api','moment','bluebird','request-promise','rimraf','./cannedAnswer.attributes','exports','define','CannedAnswer','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','util'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x3e27,0xed));var _0x73e2=function(_0xc2df4d,_0x56fff3){_0xc2df4d=_0xc2df4d-0x0;var _0x9f24de=_0x3e27[_0xc2df4d];return _0x9f24de;};'use strict';var _=require('lodash');var util=require(_0x73e2('0x0'));var logger=require(_0x73e2('0x1'))(_0x73e2('0x2'));var moment=require(_0x73e2('0x3'));var BPromise=require(_0x73e2('0x4'));var rp=require(_0x73e2('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x73e2('0x6'));var config=require('../../config/environment');var attributes=require(_0x73e2('0x7'));module[_0x73e2('0x8')]=function(_0x44cac3,_0x239b7c){return _0x44cac3[_0x73e2('0x9')](_0x73e2('0xa'),attributes,{'tableName':_0x73e2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x73e2('0xc'),'collate':_0x73e2('0xd')});};
\ No newline at end of file
index eea4b01..46c932e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','CannedAnswer,\x20%s,\x20%s','request\x20sent','debug','CannedAnswer,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x4eb84e,_0x21a71a){var _0xd8d067=function(_0x26efc6){while(--_0x26efc6){_0x4eb84e['push'](_0x4eb84e['shift']());}};_0xd8d067(++_0x21a71a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+var _0xa9e0=['http','info','CannedAnswer,\x20%s,\x20%s','request\x20sent','debug','CannedAnswer,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x20d9c4,_0x435f06){var _0x177aea=function(_0x352bcf){while(--_0x352bcf){_0x20d9c4['push'](_0x20d9c4['shift']());}};_0x177aea(++_0x435f06);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa9e0[_0x2f3848];return _0x102668;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index 463eb7e..5633bca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ccf=['isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x3b5ad9,_0x223867){var _0x611ae9=function(_0x1c5e28){while(--_0x1c5e28){_0x3b5ad9['push'](_0x3b5ad9['shift']());}};_0x611ae9(++_0x223867);}(_0x4ccf,0x160));var _0xf4cc=function(_0x3abaa9,_0x38c1c6){_0x3abaa9=_0x3abaa9-0x0;var _0x33db5c=_0x4ccf[_0x3abaa9];return _0x33db5c;};'use strict';var multer=require('multer');var util=require(_0xf4cc('0x0'));var path=require('path');var timeout=require(_0xf4cc('0x1'));var express=require(_0xf4cc('0x2'));var router=express[_0xf4cc('0x3')]();var fs_extra=require(_0xf4cc('0x4'));var auth=require(_0xf4cc('0x5'));var interaction=require(_0xf4cc('0x6'));var config=require(_0xf4cc('0x7'));var controller=require('./cannedAnswer.controller');router[_0xf4cc('0x8')]('/',auth[_0xf4cc('0x9')](),controller['index']);router[_0xf4cc('0x8')](_0xf4cc('0xa'),auth[_0xf4cc('0x9')](),controller[_0xf4cc('0xb')]);router[_0xf4cc('0xc')]('/',auth[_0xf4cc('0x9')](),controller[_0xf4cc('0xd')]);router[_0xf4cc('0xe')](_0xf4cc('0xa'),auth[_0xf4cc('0x9')](),controller[_0xf4cc('0xf')]);router[_0xf4cc('0x10')](_0xf4cc('0xa'),auth[_0xf4cc('0x9')](),controller[_0xf4cc('0x11')]);module[_0xf4cc('0x12')]=router;
\ No newline at end of file
+var _0x04eb=['util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','post','create','put','/:id','delete','destroy','exports','multer'];(function(_0x21ae1d,_0xe67541){var _0x1b8841=function(_0xc0e89){while(--_0xc0e89){_0x21ae1d['push'](_0x21ae1d['shift']());}};_0x1b8841(++_0xe67541);}(_0x04eb,0xc5));var _0xb04e=function(_0x5594fa,_0x38f386){_0x5594fa=_0x5594fa-0x0;var _0x45a33d=_0x04eb[_0x5594fa];return _0x45a33d;};'use strict';var multer=require(_0xb04e('0x0'));var util=require(_0xb04e('0x1'));var path=require(_0xb04e('0x2'));var timeout=require('connect-timeout');var express=require(_0xb04e('0x3'));var router=express[_0xb04e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb04e('0x5'));var interaction=require(_0xb04e('0x6'));var config=require(_0xb04e('0x7'));var controller=require('./cannedAnswer.controller');router['get']('/',auth[_0xb04e('0x8')](),controller[_0xb04e('0x9')]);router[_0xb04e('0xa')]('/:id',auth[_0xb04e('0x8')](),controller['show']);router[_0xb04e('0xb')]('/',auth[_0xb04e('0x8')](),controller[_0xb04e('0xc')]);router[_0xb04e('0xd')](_0xb04e('0xe'),auth[_0xb04e('0x8')](),controller['update']);router[_0xb04e('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xb04e('0x10')]);module[_0xb04e('0x11')]=router;
\ No newline at end of file
index dc3f83e..176952a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f72=['DATE','1970-01-01\x2000:00:01','STRING','INTEGER','sequelize','exports'];(function(_0x4364a9,_0x3c3bd4){var _0x30fdb2=function(_0x397e51){while(--_0x397e51){_0x4364a9['push'](_0x4364a9['shift']());}};_0x30fdb2(++_0x3c3bd4);}(_0x2f72,0x166));var _0x22f7=function(_0x2b9854,_0x4f08da){_0x2b9854=_0x2b9854-0x0;var _0x152508=_0x2f72[_0x2b9854];return _0x152508;};'use strict';var Sequelize=require(_0x22f7('0x0'));module[_0x22f7('0x1')]={'calldate':{'type':Sequelize[_0x22f7('0x2')],'allowNull':![],'defaultValue':_0x22f7('0x3')},'clid':{'type':Sequelize[_0x22f7('0x4')]},'src':{'type':Sequelize[_0x22f7('0x4')]},'dst':{'type':Sequelize[_0x22f7('0x4')]},'dcontext':{'type':Sequelize[_0x22f7('0x4')]},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0x22f7('0x4')]},'lastapp':{'type':Sequelize[_0x22f7('0x4')]},'lastdata':{'type':Sequelize[_0x22f7('0x4')]},'duration':{'type':Sequelize[_0x22f7('0x5')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x22f7('0x5')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x22f7('0x4')]},'amaflags':{'type':Sequelize[_0x22f7('0x5')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x22f7('0x4')]},'userfield':{'type':Sequelize[_0x22f7('0x4')]},'uniqueid':{'type':Sequelize[_0x22f7('0x4')]},'linkedid':{'type':Sequelize[_0x22f7('0x4')]},'sequence':{'type':Sequelize[_0x22f7('0x4')]},'peeraccount':{'type':Sequelize[_0x22f7('0x4')]},'type':{'type':Sequelize[_0x22f7('0x4')]},'tag':{'type':Sequelize[_0x22f7('0x4')]}};
\ No newline at end of file
+var _0xd87e=['STRING','INTEGER','sequelize','exports','1970-01-01\x2000:00:01'];(function(_0xcdf6fb,_0x375377){var _0x1965f6=function(_0x4f2b39){while(--_0x4f2b39){_0xcdf6fb['push'](_0xcdf6fb['shift']());}};_0x1965f6(++_0x375377);}(_0xd87e,0x1bf));var _0xed87=function(_0x54ec3f,_0x57c956){_0x54ec3f=_0x54ec3f-0x0;var _0x5ef410=_0xd87e[_0x54ec3f];return _0x5ef410;};'use strict';var Sequelize=require(_0xed87('0x0'));module[_0xed87('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':_0xed87('0x2')},'clid':{'type':Sequelize[_0xed87('0x3')]},'src':{'type':Sequelize[_0xed87('0x3')]},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize[_0xed87('0x3')]},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0xed87('0x3')]},'lastapp':{'type':Sequelize[_0xed87('0x3')]},'lastdata':{'type':Sequelize['STRING']},'duration':{'type':Sequelize[_0xed87('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0xed87('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xed87('0x3')]},'userfield':{'type':Sequelize[_0xed87('0x3')]},'uniqueid':{'type':Sequelize[_0xed87('0x3')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0xed87('0x3')]},'peeraccount':{'type':Sequelize[_0xed87('0x3')]},'type':{'type':Sequelize[_0xed87('0x3')]},'tag':{'type':Sequelize[_0xed87('0x3')]}};
\ No newline at end of file
index a53689d..96e5aab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf1b=['undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','index','Cdr','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','findAll','rows','catch','show','params','intersection','includeAll','include','create','body','find','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset'];(function(_0x5cd0a2,_0x7b9fc7){var _0xa20254=function(_0x335706){while(--_0x335706){_0x5cd0a2['push'](_0x5cd0a2['shift']());}};_0xa20254(++_0x7b9fc7);}(_0xaf1b,0x11a));var _0xbaf1=function(_0x27853f,_0x1e9869){_0x27853f=_0x27853f-0x0;var _0x2d74f0=_0xaf1b[_0x27853f];return _0x2d74f0;};'use strict';var emlformat=require(_0xbaf1('0x0'));var rimraf=require(_0xbaf1('0x1'));var zipdir=require(_0xbaf1('0x2'));var jsonpatch=require(_0xbaf1('0x3'));var rp=require(_0xbaf1('0x4'));var moment=require(_0xbaf1('0x5'));var BPromise=require(_0xbaf1('0x6'));var Mustache=require(_0xbaf1('0x7'));var util=require(_0xbaf1('0x8'));var path=require(_0xbaf1('0x9'));var sox=require(_0xbaf1('0xa'));var csv=require(_0xbaf1('0xb'));var ejs=require(_0xbaf1('0xc'));var fs=require('fs');var fs_extra=require(_0xbaf1('0xd'));var _=require('lodash');var squel=require(_0xbaf1('0xe'));var crypto=require('crypto');var jsforce=require(_0xbaf1('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xbaf1('0xb'));var querystring=require(_0xbaf1('0x10'));var Papa=require(_0xbaf1('0x11'));var Redis=require('ioredis');var authService=require(_0xbaf1('0x12'));var qs=require(_0xbaf1('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbaf1('0x14'));var logger=require('../../config/logger')(_0xbaf1('0x15'));var utils=require(_0xbaf1('0x16'));var config=require(_0xbaf1('0x17'));var licenseUtil=require(_0xbaf1('0x18'));var db=require(_0xbaf1('0x19'))['db'];function respondWithStatusCode(_0x36ec1c,_0x50de02){_0x50de02=_0x50de02||0xcc;return function(_0x493f3f){if(_0x493f3f){return _0x36ec1c[_0xbaf1('0x1a')](_0x50de02);}return _0x36ec1c[_0xbaf1('0x1b')](_0x50de02)[_0xbaf1('0x1c')]();};}function respondWithResult(_0xb6f7d8,_0x1d94da){_0x1d94da=_0x1d94da||0xc8;return function(_0x1097d6){if(_0x1097d6){return _0xb6f7d8[_0xbaf1('0x1b')](_0x1d94da)['json'](_0x1097d6);}};}function respondWithFilteredResult(_0x32981b,_0x173cb6){return function(_0xb9ac72){if(_0xb9ac72){var _0x342c11=typeof _0x173cb6[_0xbaf1('0x1d')]===_0xbaf1('0x1e')&&typeof _0x173cb6[_0xbaf1('0x1f')]===_0xbaf1('0x1e');var _0x58d217=_0xb9ac72[_0xbaf1('0x20')];var _0x4f4527=_0x342c11?0x0:_0x173cb6[_0xbaf1('0x1d')];var _0x3b13b2=_0x342c11?_0xb9ac72[_0xbaf1('0x20')]:_0x173cb6[_0xbaf1('0x1d')]+_0x173cb6['limit'];var _0x43291c;if(_0x3b13b2>=_0x58d217){_0x3b13b2=_0x58d217;_0x43291c=0xc8;}else{_0x43291c=0xce;}_0x32981b['status'](_0x43291c);return _0x32981b[_0xbaf1('0x21')](_0xbaf1('0x22'),_0x4f4527+'-'+_0x3b13b2+'/'+_0x58d217)['json'](_0xb9ac72);}return null;};}function patchUpdates(_0xd579de){return function(_0x33c524){try{jsonpatch[_0xbaf1('0x23')](_0x33c524,_0xd579de,!![]);}catch(_0x19f4d8){return BPromise[_0xbaf1('0x24')](_0x19f4d8);}return _0x33c524[_0xbaf1('0x25')]();};}function saveUpdates(_0x5b9f50,_0x487d25){return function(_0x3cb56b){if(_0x3cb56b){return _0x3cb56b[_0xbaf1('0x26')](_0x5b9f50)[_0xbaf1('0x27')](function(_0x496344){return _0x496344;});}return null;};}function removeEntity(_0x2e71ce,_0xefc243){return function(_0x40a0fa){if(_0x40a0fa){return _0x40a0fa['destroy']()[_0xbaf1('0x27')](function(){_0x2e71ce['status'](0xcc)[_0xbaf1('0x1c')]();});}};}function handleEntityNotFound(_0x181c9d,_0xae3b42){return function(_0x2afb55){if(!_0x2afb55){_0x181c9d[_0xbaf1('0x1a')](0x194);}return _0x2afb55;};}function handleError(_0x480835,_0x5d13d4){_0x5d13d4=_0x5d13d4||0x1f4;return function(_0x1cfbcd){logger[_0xbaf1('0x28')](_0x1cfbcd[_0xbaf1('0x29')]);if(_0x1cfbcd[_0xbaf1('0x2a')]){delete _0x1cfbcd['name'];}_0x480835[_0xbaf1('0x1b')](_0x5d13d4)['send'](_0x1cfbcd);};}exports[_0xbaf1('0x2b')]=function(_0x23d96a,_0x35fdc){var _0x17f2ea={},_0x2ccd80={},_0x3abb17={'count':0x0,'rows':[]};var _0x32bb6f=_['map'](db[_0xbaf1('0x2c')][_0xbaf1('0x2d')],function(_0x1a523d){return{'name':_0x1a523d[_0xbaf1('0x2e')],'type':_0x1a523d[_0xbaf1('0x2f')][_0xbaf1('0x30')]};});_0x2ccd80[_0xbaf1('0x31')]=_[_0xbaf1('0x32')](_0x32bb6f,'name');_0x2ccd80[_0xbaf1('0x33')]=_[_0xbaf1('0x34')](_0x23d96a[_0xbaf1('0x33')]);_0x2ccd80[_0xbaf1('0x35')]=_['intersection'](_0x2ccd80[_0xbaf1('0x31')],_0x2ccd80['query']);_0x17f2ea[_0xbaf1('0x36')]=_['intersection'](_0x2ccd80[_0xbaf1('0x31')],qs[_0xbaf1('0x37')](_0x23d96a[_0xbaf1('0x33')][_0xbaf1('0x37')]));_0x17f2ea['attributes']=_0x17f2ea[_0xbaf1('0x36')][_0xbaf1('0x38')]?_0x17f2ea[_0xbaf1('0x36')]:_0x2ccd80[_0xbaf1('0x31')];if(!_0x23d96a[_0xbaf1('0x33')][_0xbaf1('0x39')](_0xbaf1('0x3a'))){_0x17f2ea['limit']=qs[_0xbaf1('0x1f')](_0x23d96a[_0xbaf1('0x33')][_0xbaf1('0x1f')]);_0x17f2ea[_0xbaf1('0x1d')]=qs[_0xbaf1('0x1d')](_0x23d96a[_0xbaf1('0x33')][_0xbaf1('0x1d')]);}_0x17f2ea['order']=qs[_0xbaf1('0x3b')](_0x23d96a['query'][_0xbaf1('0x3b')]);_0x17f2ea[_0xbaf1('0x3c')]=qs[_0xbaf1('0x35')](_[_0xbaf1('0x3d')](_0x23d96a[_0xbaf1('0x33')],_0x2ccd80[_0xbaf1('0x35')]),_0x32bb6f);if(_0x23d96a[_0xbaf1('0x33')][_0xbaf1('0x3e')]){_0x17f2ea[_0xbaf1('0x3c')]=_['merge'](_0x17f2ea['where'],{'$or':_['map'](_0x32bb6f,function(_0x3e45aa){if(_0x3e45aa[_0xbaf1('0x2f')]!=='VIRTUAL'){var _0x2adc26={};_0x2adc26[_0x3e45aa[_0xbaf1('0x2a')]]={'$like':'%'+_0x23d96a[_0xbaf1('0x33')]['filter']+'%'};return _0x2adc26;}})});}_0x17f2ea=_[_0xbaf1('0x3f')]({},_0x17f2ea,_0x23d96a[_0xbaf1('0x40')]);var _0x3d2302={'where':_0x17f2ea['where']};return db[_0xbaf1('0x2c')][_0xbaf1('0x20')](_0x3d2302)['then'](function(_0x520ae2){_0x3abb17[_0xbaf1('0x20')]=_0x520ae2;if(_0x23d96a['query']['includeAll']){_0x17f2ea['include']=[{'all':!![]}];}return db[_0xbaf1('0x2c')][_0xbaf1('0x41')](_0x17f2ea);})[_0xbaf1('0x27')](function(_0x27c821){_0x3abb17[_0xbaf1('0x42')]=_0x27c821;return _0x3abb17;})[_0xbaf1('0x27')](respondWithFilteredResult(_0x35fdc,_0x17f2ea))[_0xbaf1('0x43')](handleError(_0x35fdc,null));};exports[_0xbaf1('0x44')]=function(_0x481722,_0x45f0b5){var _0x3d2785={'raw':!![],'where':{'id':_0x481722[_0xbaf1('0x45')]['id']}},_0x3d0793={};_0x3d0793['model']=_[_0xbaf1('0x34')](db['Cdr'][_0xbaf1('0x2d')]);_0x3d0793[_0xbaf1('0x33')]=_[_0xbaf1('0x34')](_0x481722['query']);_0x3d0793[_0xbaf1('0x35')]=_[_0xbaf1('0x46')](_0x3d0793[_0xbaf1('0x31')],_0x3d0793['query']);_0x3d2785[_0xbaf1('0x36')]=_['intersection'](_0x3d0793['model'],qs['fields'](_0x481722[_0xbaf1('0x33')][_0xbaf1('0x37')]));_0x3d2785[_0xbaf1('0x36')]=_0x3d2785[_0xbaf1('0x36')][_0xbaf1('0x38')]?_0x3d2785[_0xbaf1('0x36')]:_0x3d0793['model'];if(_0x481722[_0xbaf1('0x33')][_0xbaf1('0x47')]){_0x3d2785[_0xbaf1('0x48')]=[{'all':!![]}];}_0x3d2785=_[_0xbaf1('0x3f')]({},_0x3d2785,_0x481722[_0xbaf1('0x40')]);return db[_0xbaf1('0x2c')]['find'](_0x3d2785)[_0xbaf1('0x27')](handleEntityNotFound(_0x45f0b5,null))['then'](respondWithResult(_0x45f0b5,null))['catch'](handleError(_0x45f0b5,null));};exports[_0xbaf1('0x49')]=function(_0x12a9a1,_0x20328e){return db[_0xbaf1('0x2c')][_0xbaf1('0x49')](_0x12a9a1['body'],{})[_0xbaf1('0x27')](respondWithResult(_0x20328e,0xc9))['catch'](handleError(_0x20328e,null));};exports[_0xbaf1('0x26')]=function(_0x3f3b0d,_0xce46bc){if(_0x3f3b0d[_0xbaf1('0x4a')]['id']){delete _0x3f3b0d[_0xbaf1('0x4a')]['id'];}return db[_0xbaf1('0x2c')][_0xbaf1('0x4b')]({'where':{'id':_0x3f3b0d[_0xbaf1('0x45')]['id']}})[_0xbaf1('0x27')](handleEntityNotFound(_0xce46bc,null))[_0xbaf1('0x27')](saveUpdates(_0x3f3b0d[_0xbaf1('0x4a')],null))[_0xbaf1('0x27')](respondWithResult(_0xce46bc,null))[_0xbaf1('0x43')](handleError(_0xce46bc,null));};exports[_0xbaf1('0x4c')]=function(_0x364309,_0xad3fd3){return db['Cdr'][_0xbaf1('0x4b')]({'where':{'id':_0x364309[_0xbaf1('0x45')]['id']}})[_0xbaf1('0x27')](handleEntityNotFound(_0xad3fd3,null))[_0xbaf1('0x27')](removeEntity(_0xad3fd3,null))[_0xbaf1('0x43')](handleError(_0xad3fd3,null));};exports[_0xbaf1('0x4d')]=function(_0x3962b5,_0x312fd0){return db[_0xbaf1('0x2c')][_0xbaf1('0x4d')]()[_0xbaf1('0x27')](respondWithResult(_0x312fd0,null))['catch'](handleError(_0x312fd0,null));};
\ No newline at end of file
+var _0x038b=['lodash','squel','crypto','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','reject','save','update','then','error','name','index','map','Cdr','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','findAll','catch','show','length','include','options','create','body','find','params','destroy','describe','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','to-csv'];(function(_0x2029f7,_0x53b3f1){var _0x5c6c6f=function(_0x22836a){while(--_0x22836a){_0x2029f7['push'](_0x2029f7['shift']());}};_0x5c6c6f(++_0x53b3f1);}(_0x038b,0x114));var _0xb038=function(_0x19b4f4,_0x2c6f97){_0x19b4f4=_0x19b4f4-0x0;var _0x59bef4=_0x038b[_0x19b4f4];return _0x59bef4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb038('0x0'));var zipdir=require(_0xb038('0x1'));var jsonpatch=require(_0xb038('0x2'));var rp=require('request-promise');var moment=require(_0xb038('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb038('0x4'));var util=require(_0xb038('0x5'));var path=require('path');var sox=require(_0xb038('0x6'));var csv=require(_0xb038('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb038('0x8'));var squel=require(_0xb038('0x9'));var crypto=require(_0xb038('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb038('0x7'));var querystring=require(_0xb038('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xb038('0xc'));var qs=require(_0xb038('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb038('0xe'));var logger=require(_0xb038('0xf'))(_0xb038('0x10'));var utils=require(_0xb038('0x11'));var config=require(_0xb038('0x12'));var licenseUtil=require(_0xb038('0x13'));var db=require(_0xb038('0x14'))['db'];function respondWithStatusCode(_0x439751,_0x16e4a3){_0x16e4a3=_0x16e4a3||0xcc;return function(_0x57acd8){if(_0x57acd8){return _0x439751[_0xb038('0x15')](_0x16e4a3);}return _0x439751[_0xb038('0x16')](_0x16e4a3)[_0xb038('0x17')]();};}function respondWithResult(_0x3cc717,_0x3a71a6){_0x3a71a6=_0x3a71a6||0xc8;return function(_0x13acc7){if(_0x13acc7){return _0x3cc717[_0xb038('0x16')](_0x3a71a6)['json'](_0x13acc7);}};}function respondWithFilteredResult(_0xe8aa7c,_0x26e4f2){return function(_0x183141){if(_0x183141){var _0x39323e=typeof _0x26e4f2[_0xb038('0x18')]===_0xb038('0x19')&&typeof _0x26e4f2['limit']===_0xb038('0x19');var _0x3039b0=_0x183141[_0xb038('0x1a')];var _0x3b095a=_0x39323e?0x0:_0x26e4f2['offset'];var _0x49b237=_0x39323e?_0x183141[_0xb038('0x1a')]:_0x26e4f2[_0xb038('0x18')]+_0x26e4f2[_0xb038('0x1b')];var _0x31c348;if(_0x49b237>=_0x3039b0){_0x49b237=_0x3039b0;_0x31c348=0xc8;}else{_0x31c348=0xce;}_0xe8aa7c['status'](_0x31c348);return _0xe8aa7c[_0xb038('0x1c')](_0xb038('0x1d'),_0x3b095a+'-'+_0x49b237+'/'+_0x3039b0)[_0xb038('0x1e')](_0x183141);}return null;};}function patchUpdates(_0x33a377){return function(_0xc6cd61){try{jsonpatch['apply'](_0xc6cd61,_0x33a377,!![]);}catch(_0x2e0369){return BPromise[_0xb038('0x1f')](_0x2e0369);}return _0xc6cd61[_0xb038('0x20')]();};}function saveUpdates(_0x87b899,_0x5f123d){return function(_0x2812c9){if(_0x2812c9){return _0x2812c9[_0xb038('0x21')](_0x87b899)['then'](function(_0x1eb9cd){return _0x1eb9cd;});}return null;};}function removeEntity(_0x43d403,_0x573f93){return function(_0x241329){if(_0x241329){return _0x241329['destroy']()[_0xb038('0x22')](function(){_0x43d403[_0xb038('0x16')](0xcc)[_0xb038('0x17')]();});}};}function handleEntityNotFound(_0x1df7c4,_0x5d4343){return function(_0xe4ceda){if(!_0xe4ceda){_0x1df7c4[_0xb038('0x15')](0x194);}return _0xe4ceda;};}function handleError(_0x576be5,_0xb6d93f){_0xb6d93f=_0xb6d93f||0x1f4;return function(_0x33cf3c){logger[_0xb038('0x23')](_0x33cf3c['stack']);if(_0x33cf3c[_0xb038('0x24')]){delete _0x33cf3c[_0xb038('0x24')];}_0x576be5[_0xb038('0x16')](_0xb6d93f)['send'](_0x33cf3c);};}exports[_0xb038('0x25')]=function(_0x2855a6,_0x28a6a9){var _0x12b3b6={},_0xc387d={},_0x551b55={'count':0x0,'rows':[]};var _0x1783d4=_[_0xb038('0x26')](db[_0xb038('0x27')][_0xb038('0x28')],function(_0x1abe23){return{'name':_0x1abe23[_0xb038('0x29')],'type':_0x1abe23[_0xb038('0x2a')][_0xb038('0x2b')]};});_0xc387d[_0xb038('0x2c')]=_[_0xb038('0x26')](_0x1783d4,_0xb038('0x24'));_0xc387d[_0xb038('0x2d')]=_[_0xb038('0x2e')](_0x2855a6['query']);_0xc387d[_0xb038('0x2f')]=_['intersection'](_0xc387d[_0xb038('0x2c')],_0xc387d[_0xb038('0x2d')]);_0x12b3b6[_0xb038('0x30')]=_[_0xb038('0x31')](_0xc387d[_0xb038('0x2c')],qs[_0xb038('0x32')](_0x2855a6[_0xb038('0x2d')][_0xb038('0x32')]));_0x12b3b6[_0xb038('0x30')]=_0x12b3b6[_0xb038('0x30')]['length']?_0x12b3b6[_0xb038('0x30')]:_0xc387d[_0xb038('0x2c')];if(!_0x2855a6[_0xb038('0x2d')]['hasOwnProperty']('nolimit')){_0x12b3b6['limit']=qs[_0xb038('0x1b')](_0x2855a6[_0xb038('0x2d')][_0xb038('0x1b')]);_0x12b3b6[_0xb038('0x18')]=qs[_0xb038('0x18')](_0x2855a6[_0xb038('0x2d')]['offset']);}_0x12b3b6[_0xb038('0x33')]=qs[_0xb038('0x34')](_0x2855a6[_0xb038('0x2d')][_0xb038('0x34')]);_0x12b3b6['where']=qs[_0xb038('0x2f')](_[_0xb038('0x35')](_0x2855a6['query'],_0xc387d['filters']),_0x1783d4);if(_0x2855a6[_0xb038('0x2d')][_0xb038('0x36')]){_0x12b3b6[_0xb038('0x37')]=_[_0xb038('0x38')](_0x12b3b6[_0xb038('0x37')],{'$or':_['map'](_0x1783d4,function(_0x404f82){if(_0x404f82[_0xb038('0x2a')]!==_0xb038('0x39')){var _0x2d1e57={};_0x2d1e57[_0x404f82['name']]={'$like':'%'+_0x2855a6[_0xb038('0x2d')][_0xb038('0x36')]+'%'};return _0x2d1e57;}})});}_0x12b3b6=_[_0xb038('0x38')]({},_0x12b3b6,_0x2855a6['options']);var _0x412d71={'where':_0x12b3b6['where']};return db[_0xb038('0x27')][_0xb038('0x1a')](_0x412d71)[_0xb038('0x22')](function(_0x5ce40c){_0x551b55[_0xb038('0x1a')]=_0x5ce40c;if(_0x2855a6[_0xb038('0x2d')][_0xb038('0x3a')]){_0x12b3b6['include']=[{'all':!![]}];}return db[_0xb038('0x27')][_0xb038('0x3b')](_0x12b3b6);})[_0xb038('0x22')](function(_0x3c291e){_0x551b55['rows']=_0x3c291e;return _0x551b55;})[_0xb038('0x22')](respondWithFilteredResult(_0x28a6a9,_0x12b3b6))[_0xb038('0x3c')](handleError(_0x28a6a9,null));};exports[_0xb038('0x3d')]=function(_0x2a0436,_0x52e1d6){var _0x19dc7b={'raw':!![],'where':{'id':_0x2a0436['params']['id']}},_0x269c7d={};_0x269c7d[_0xb038('0x2c')]=_[_0xb038('0x2e')](db[_0xb038('0x27')]['rawAttributes']);_0x269c7d[_0xb038('0x2d')]=_[_0xb038('0x2e')](_0x2a0436['query']);_0x269c7d['filters']=_[_0xb038('0x31')](_0x269c7d[_0xb038('0x2c')],_0x269c7d[_0xb038('0x2d')]);_0x19dc7b[_0xb038('0x30')]=_[_0xb038('0x31')](_0x269c7d[_0xb038('0x2c')],qs[_0xb038('0x32')](_0x2a0436[_0xb038('0x2d')]['fields']));_0x19dc7b['attributes']=_0x19dc7b['attributes'][_0xb038('0x3e')]?_0x19dc7b[_0xb038('0x30')]:_0x269c7d['model'];if(_0x2a0436[_0xb038('0x2d')][_0xb038('0x3a')]){_0x19dc7b[_0xb038('0x3f')]=[{'all':!![]}];}_0x19dc7b=_['merge']({},_0x19dc7b,_0x2a0436[_0xb038('0x40')]);return db['Cdr']['find'](_0x19dc7b)[_0xb038('0x22')](handleEntityNotFound(_0x52e1d6,null))[_0xb038('0x22')](respondWithResult(_0x52e1d6,null))[_0xb038('0x3c')](handleError(_0x52e1d6,null));};exports[_0xb038('0x41')]=function(_0x304515,_0x3b09e3){return db[_0xb038('0x27')][_0xb038('0x41')](_0x304515[_0xb038('0x42')],{})[_0xb038('0x22')](respondWithResult(_0x3b09e3,0xc9))['catch'](handleError(_0x3b09e3,null));};exports[_0xb038('0x21')]=function(_0x3ed968,_0x5c11d7){if(_0x3ed968[_0xb038('0x42')]['id']){delete _0x3ed968[_0xb038('0x42')]['id'];}return db['Cdr'][_0xb038('0x43')]({'where':{'id':_0x3ed968[_0xb038('0x44')]['id']}})[_0xb038('0x22')](handleEntityNotFound(_0x5c11d7,null))[_0xb038('0x22')](saveUpdates(_0x3ed968[_0xb038('0x42')],null))[_0xb038('0x22')](respondWithResult(_0x5c11d7,null))[_0xb038('0x3c')](handleError(_0x5c11d7,null));};exports[_0xb038('0x45')]=function(_0x3a291d,_0x54a826){return db[_0xb038('0x27')][_0xb038('0x43')]({'where':{'id':_0x3a291d[_0xb038('0x44')]['id']}})[_0xb038('0x22')](handleEntityNotFound(_0x54a826,null))[_0xb038('0x22')](removeEntity(_0x54a826,null))[_0xb038('0x3c')](handleError(_0x54a826,null));};exports['describe']=function(_0x1f4997,_0x2f3622){return db[_0xb038('0x27')][_0xb038('0x46')]()[_0xb038('0x22')](respondWithResult(_0x2f3622,null))[_0xb038('0x3c')](handleError(_0x2f3622,null));};
\ No newline at end of file
index 63f30d6..822d462 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x4d4731,_0x386a81){var _0x2428fb=function(_0xba4443){while(--_0xba4443){_0x4d4731['push'](_0x4d4731['shift']());}};_0x2428fb(++_0x386a81);}(_0x7a54,0x106));var _0x47a5=function(_0x21396b,_0x57829d){_0x21396b=_0x21396b-0x0;var _0x54cf69=_0x7a54[_0x21396b];return _0x54cf69;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0xf9f772,_0x10df6e){var _0x582222=function(_0x7b1166){while(--_0x7b1166){_0xf9f772['push'](_0xf9f772['shift']());}};_0x582222(++_0x10df6e);}(_0x7a54,0x106));var _0x47a5=function(_0x3b782b,_0x2670fc){_0x3b782b=_0x3b782b-0x0;var _0x5017b6=_0x7a54[_0x3b782b];return _0x5017b6;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
index cc67bf9..7cc7c26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc475=['result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','Cdr,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info'];(function(_0x2d344f,_0x25fa84){var _0x2e796b=function(_0x10466a){while(--_0x10466a){_0x2d344f['push'](_0x2d344f['shift']());}};_0x2e796b(++_0x25fa84);}(_0xc475,0x9c));var _0x5c47=function(_0x26dd98,_0x887363){_0x26dd98=_0x26dd98-0x0;var _0x50b339=_0xc475[_0x26dd98];return _0x50b339;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x5c47('0x0'));var BPromise=require(_0x5c47('0x1'));var rs=require(_0x5c47('0x2'));var fs=require('fs');var Redis=require(_0x5c47('0x3'));var db=require(_0x5c47('0x4'))['db'];var utils=require(_0x5c47('0x5'));var logger=require(_0x5c47('0x6'))(_0x5c47('0x7'));var config=require('../../config/environment');var jayson=require(_0x5c47('0x8'));var client=jayson['client'][_0x5c47('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4c0cb5,_0x984031,_0x465269){return new BPromise(function(_0x150208,_0x4a3959){return client[_0x5c47('0xa')](_0x4c0cb5,_0x465269)[_0x5c47('0xb')](function(_0x3c8283){logger['info'](_0x5c47('0xc'),_0x984031,_0x5c47('0xd'));logger[_0x5c47('0xe')]('Cdr,\x20%s,\x20%s,\x20%s',_0x984031,_0x5c47('0xd'),JSON[_0x5c47('0xf')](_0x3c8283));if(_0x3c8283[_0x5c47('0x10')]){if(_0x3c8283[_0x5c47('0x10')][_0x5c47('0x11')]===0x1f4){logger[_0x5c47('0x10')](_0x5c47('0xc'),_0x984031,_0x3c8283[_0x5c47('0x10')][_0x5c47('0x12')]);return _0x4a3959(_0x3c8283[_0x5c47('0x10')]['message']);}logger[_0x5c47('0x10')](_0x5c47('0xc'),_0x984031,_0x3c8283[_0x5c47('0x10')][_0x5c47('0x12')]);return _0x150208(_0x3c8283[_0x5c47('0x10')]['message']);}else{logger[_0x5c47('0x13')](_0x5c47('0xc'),_0x984031,_0x5c47('0xd'));_0x150208(_0x3c8283[_0x5c47('0x14')][_0x5c47('0x12')]);}})[_0x5c47('0x15')](function(_0x533f38){logger[_0x5c47('0x10')](_0x5c47('0xc'),_0x984031,_0x533f38);_0x4a3959(_0x533f38);});});}
\ No newline at end of file
+var _0xd213=['util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','Cdr,\x20%s,\x20%s','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xd213,0x134));var _0x3d21=function(_0x2b78e5,_0x3126f8){_0x2b78e5=_0x2b78e5-0x0;var _0xa8d52d=_0xd213[_0x2b78e5];return _0xa8d52d;};'use strict';var _=require('lodash');var util=require(_0x3d21('0x0'));var moment=require(_0x3d21('0x1'));var BPromise=require(_0x3d21('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3d21('0x3'))['db'];var utils=require(_0x3d21('0x4'));var logger=require(_0x3d21('0x5'))(_0x3d21('0x6'));var config=require(_0x3d21('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x3d21('0x8')][_0x3d21('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x29a7cf,_0x35cbb9,_0x570f71){return new BPromise(function(_0x4cc5a1,_0x5c3aea){return client[_0x3d21('0xa')](_0x29a7cf,_0x570f71)['then'](function(_0x270d76){logger['info'](_0x3d21('0xb'),_0x35cbb9,_0x3d21('0xc'));logger[_0x3d21('0xd')](_0x3d21('0xe'),_0x35cbb9,_0x3d21('0xc'),JSON[_0x3d21('0xf')](_0x270d76));if(_0x270d76[_0x3d21('0x10')]){if(_0x270d76[_0x3d21('0x10')][_0x3d21('0x11')]===0x1f4){logger['error']('Cdr,\x20%s,\x20%s',_0x35cbb9,_0x270d76['error'][_0x3d21('0x12')]);return _0x5c3aea(_0x270d76[_0x3d21('0x10')][_0x3d21('0x12')]);}logger[_0x3d21('0x10')]('Cdr,\x20%s,\x20%s',_0x35cbb9,_0x270d76[_0x3d21('0x10')][_0x3d21('0x12')]);return _0x4cc5a1(_0x270d76[_0x3d21('0x10')][_0x3d21('0x12')]);}else{logger[_0x3d21('0x13')](_0x3d21('0xb'),_0x35cbb9,_0x3d21('0xc'));_0x4cc5a1(_0x270d76[_0x3d21('0x14')][_0x3d21('0x12')]);}})[_0x3d21('0x15')](function(_0x3b4c35){logger[_0x3d21('0x10')](_0x3d21('0xb'),_0x35cbb9,_0x3b4c35);_0x5c3aea(_0x3b4c35);});});}
\ No newline at end of file
index 6565ff6..3fb71e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','create','put','update'];(function(_0x52a857,_0xc99fa1){var _0x4e2aae=function(_0x5410d9){while(--_0x5410d9){_0x52a857['push'](_0x52a857['shift']());}};_0x4e2aae(++_0xc99fa1);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+var _0xb10b=['../../components/interaction/service','../../config/environment','./cdr.controller','get','index','isAuthenticated','describe','/:id','show','post','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x456487,_0x3098e3){var _0x1d8372=function(_0x80bfc0){while(--_0x80bfc0){_0x456487['push'](_0x456487['shift']());}};_0x1d8372(++_0x3098e3);}(_0xb10b,0x12a));var _0xbb10=function(_0x1865d4,_0x569a81){_0x1865d4=_0x1865d4-0x0;var _0x1f0e1c=_0xb10b[_0x1865d4];return _0x1f0e1c;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/describe',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0xf')]('/',auth[_0xbb10('0xb')](),controller['create']);router['put'](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x10')]);router['delete'](_0xbb10('0xd'),auth['isAuthenticated'](),controller[_0xbb10('0x11')]);module[_0xbb10('0x12')]=router;
\ No newline at end of file
index e0f7e54..565ae23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f2d=['exports','INTEGER','noop','TEXT','STRING','*,*,*,*','sequelize'];(function(_0xfef967,_0x429164){var _0x3d65f3=function(_0x4a2a9d){while(--_0x4a2a9d){_0xfef967['push'](_0xfef967['shift']());}};_0x3d65f3(++_0x429164);}(_0x2f2d,0xdf));var _0xd2f2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2f2d[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xd2f2('0x0'));module[_0xd2f2('0x1')]={'priority':{'type':Sequelize[_0xd2f2('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xd2f2('0x3')},'appdata':{'type':Sequelize[_0xd2f2('0x4')]()},'description':{'type':Sequelize[_0xd2f2('0x5')]},'interval':{'type':Sequelize[_0xd2f2('0x5')],'defaultValue':_0xd2f2('0x6')}};
\ No newline at end of file
+var _0x3cab=['exports','INTEGER','STRING','noop','TEXT'];(function(_0xfe9aa0,_0x352a5c){var _0x30173f=function(_0x3d1048){while(--_0x3d1048){_0xfe9aa0['push'](_0xfe9aa0['shift']());}};_0x30173f(++_0x352a5c);}(_0x3cab,0x73));var _0xb3ca=function(_0x4a29a9,_0x58cd04){_0x4a29a9=_0x4a29a9-0x0;var _0x386570=_0x3cab[_0x4a29a9];return _0x386570;};'use strict';var Sequelize=require('sequelize');module[_0xb3ca('0x0')]={'priority':{'type':Sequelize[_0xb3ca('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xb3ca('0x2')],'allowNull':![],'defaultValue':_0xb3ca('0x3')},'appdata':{'type':Sequelize[_0xb3ca('0x4')]()},'description':{'type':Sequelize[_0xb3ca('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 4ffaafd..cc29a42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6324=['end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','show','model','keys','rawAttributes','intersection','query','fields','attributes','includeAll','include','options','ChatApplication','body','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status'];(function(_0x37a786,_0x21be51){var _0x955db7=function(_0xd63f25){while(--_0xd63f25){_0x37a786['push'](_0x37a786['shift']());}};_0x955db7(++_0x21be51);}(_0x6324,0x142));var _0x4632=function(_0x37512d,_0x44495e){_0x37512d=_0x37512d-0x0;var _0x133f49=_0x6324[_0x37512d];return _0x133f49;};'use strict';var emlformat=require(_0x4632('0x0'));var rimraf=require(_0x4632('0x1'));var zipdir=require(_0x4632('0x2'));var jsonpatch=require(_0x4632('0x3'));var rp=require('request-promise');var moment=require(_0x4632('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4632('0x5'));var util=require('util');var path=require(_0x4632('0x6'));var sox=require('sox');var csv=require(_0x4632('0x7'));var ejs=require(_0x4632('0x8'));var fs=require('fs');var fs_extra=require(_0x4632('0x9'));var _=require(_0x4632('0xa'));var squel=require('squel');var crypto=require(_0x4632('0xb'));var jsforce=require(_0x4632('0xc'));var deskjs=require(_0x4632('0xd'));var toCsv=require('to-csv');var querystring=require(_0x4632('0xe'));var Papa=require(_0x4632('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x4632('0x10'));var as=require(_0x4632('0x11'));var hardwareService=require(_0x4632('0x12'));var logger=require(_0x4632('0x13'))(_0x4632('0x14'));var utils=require(_0x4632('0x15'));var config=require(_0x4632('0x16'));var licenseUtil=require(_0x4632('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b3f0f,_0x499d88){_0x499d88=_0x499d88||0xcc;return function(_0x4719f7){if(_0x4719f7){return _0x2b3f0f[_0x4632('0x18')](_0x499d88);}return _0x2b3f0f[_0x4632('0x19')](_0x499d88)[_0x4632('0x1a')]();};}function respondWithResult(_0x51ee37,_0x3ba361){_0x3ba361=_0x3ba361||0xc8;return function(_0x255882){if(_0x255882){return _0x51ee37[_0x4632('0x19')](_0x3ba361)[_0x4632('0x1b')](_0x255882);}};}function respondWithFilteredResult(_0x1c1be0,_0x5438ab){return function(_0x47b349){if(_0x47b349){var _0x2fd7ae=typeof _0x5438ab[_0x4632('0x1c')]===_0x4632('0x1d')&&typeof _0x5438ab[_0x4632('0x1e')]==='undefined';var _0x158831=_0x47b349[_0x4632('0x1f')];var _0x1a94c0=_0x2fd7ae?0x0:_0x5438ab['offset'];var _0x3cddfa=_0x2fd7ae?_0x47b349[_0x4632('0x1f')]:_0x5438ab['offset']+_0x5438ab['limit'];var _0x1c0523;if(_0x3cddfa>=_0x158831){_0x3cddfa=_0x158831;_0x1c0523=0xc8;}else{_0x1c0523=0xce;}_0x1c1be0[_0x4632('0x19')](_0x1c0523);return _0x1c1be0[_0x4632('0x20')](_0x4632('0x21'),_0x1a94c0+'-'+_0x3cddfa+'/'+_0x158831)[_0x4632('0x1b')](_0x47b349);}return null;};}function patchUpdates(_0x3d2d23){return function(_0x9ab826){try{jsonpatch[_0x4632('0x22')](_0x9ab826,_0x3d2d23,!![]);}catch(_0x29f875){return BPromise[_0x4632('0x23')](_0x29f875);}return _0x9ab826[_0x4632('0x24')]();};}function saveUpdates(_0x2d656a,_0x2ca6a5){return function(_0x263907){if(_0x263907){return _0x263907[_0x4632('0x25')](_0x2d656a)[_0x4632('0x26')](function(_0x4264d5){return _0x4264d5;});}return null;};}function removeEntity(_0x3537ed,_0x380a9f){return function(_0x1e1b86){if(_0x1e1b86){return _0x1e1b86[_0x4632('0x27')]()[_0x4632('0x26')](function(){_0x3537ed[_0x4632('0x19')](0xcc)[_0x4632('0x1a')]();});}};}function handleEntityNotFound(_0xb074d,_0x1b8de0){return function(_0x4af026){if(!_0x4af026){_0xb074d[_0x4632('0x18')](0x194);}return _0x4af026;};}function handleError(_0x21118c,_0x372679){_0x372679=_0x372679||0x1f4;return function(_0x22d0f5){logger[_0x4632('0x28')](_0x22d0f5[_0x4632('0x29')]);if(_0x22d0f5['name']){delete _0x22d0f5['name'];}_0x21118c[_0x4632('0x19')](_0x372679)[_0x4632('0x2a')](_0x22d0f5);};}exports[_0x4632('0x2b')]=function(_0x35a533,_0x34079f){var _0x119d1b={'raw':!![],'where':{'id':_0x35a533['params']['id']}},_0x3570b2={};_0x3570b2[_0x4632('0x2c')]=_[_0x4632('0x2d')](db['ChatApplication'][_0x4632('0x2e')]);_0x3570b2['query']=_[_0x4632('0x2d')](_0x35a533['query']);_0x3570b2['filters']=_[_0x4632('0x2f')](_0x3570b2[_0x4632('0x2c')],_0x3570b2[_0x4632('0x30')]);_0x119d1b['attributes']=_['intersection'](_0x3570b2[_0x4632('0x2c')],qs[_0x4632('0x31')](_0x35a533['query']['fields']));_0x119d1b[_0x4632('0x32')]=_0x119d1b[_0x4632('0x32')]['length']?_0x119d1b[_0x4632('0x32')]:_0x3570b2[_0x4632('0x2c')];if(_0x35a533[_0x4632('0x30')][_0x4632('0x33')]){_0x119d1b[_0x4632('0x34')]=[{'all':!![]}];}_0x119d1b=_['merge']({},_0x119d1b,_0x35a533[_0x4632('0x35')]);return db[_0x4632('0x36')]['find'](_0x119d1b)['then'](handleEntityNotFound(_0x34079f,null))[_0x4632('0x26')](respondWithResult(_0x34079f,null))['catch'](handleError(_0x34079f,null));};exports['update']=function(_0x196b3b,_0x5d34ac){if(_0x196b3b[_0x4632('0x37')]['id']){delete _0x196b3b[_0x4632('0x37')]['id'];}return db[_0x4632('0x36')]['find']({'where':{'id':_0x196b3b[_0x4632('0x38')]['id']}})[_0x4632('0x26')](handleEntityNotFound(_0x5d34ac,null))[_0x4632('0x26')](saveUpdates(_0x196b3b[_0x4632('0x37')],null))[_0x4632('0x26')](respondWithResult(_0x5d34ac,null))['catch'](handleError(_0x5d34ac,null));};exports['destroy']=function(_0x3114c4,_0xd90c7c){return db[_0x4632('0x36')]['find']({'where':{'id':_0x3114c4['params']['id']}})['then'](handleEntityNotFound(_0xd90c7c,null))[_0x4632('0x26')](removeEntity(_0xd90c7c,null))[_0x4632('0x39')](handleError(_0xd90c7c,null));};
\ No newline at end of file
+var _0xb04a=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','Content-Range','reject','save','update','then','destroy','error','name','send','show','model','keys','rawAttributes','query','filters','intersection','fields','attributes','length','includeAll','include','merge','find','body','ChatApplication','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x490a88,_0x13a58f){var _0x32cb0e=function(_0x157cf1){while(--_0x157cf1){_0x490a88['push'](_0x490a88['shift']());}};_0x32cb0e(++_0x13a58f);}(_0xb04a,0xcf));var _0xab04=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb04a[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xab04('0x0'));var rimraf=require(_0xab04('0x1'));var zipdir=require(_0xab04('0x2'));var jsonpatch=require(_0xab04('0x3'));var rp=require('request-promise');var moment=require(_0xab04('0x4'));var BPromise=require(_0xab04('0x5'));var Mustache=require(_0xab04('0x6'));var util=require('util');var path=require(_0xab04('0x7'));var sox=require(_0xab04('0x8'));var csv=require(_0xab04('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xab04('0xa'));var _=require(_0xab04('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xab04('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xab04('0xd'));var authService=require(_0xab04('0xe'));var qs=require(_0xab04('0xf'));var as=require(_0xab04('0x10'));var hardwareService=require(_0xab04('0x11'));var logger=require(_0xab04('0x12'))(_0xab04('0x13'));var utils=require(_0xab04('0x14'));var config=require(_0xab04('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x38e003,_0x3cf546){_0x3cf546=_0x3cf546||0xcc;return function(_0x4160d5){if(_0x4160d5){return _0x38e003[_0xab04('0x16')](_0x3cf546);}return _0x38e003['status'](_0x3cf546)[_0xab04('0x17')]();};}function respondWithResult(_0x2934bd,_0x5e3471){_0x5e3471=_0x5e3471||0xc8;return function(_0x233a8d){if(_0x233a8d){return _0x2934bd[_0xab04('0x18')](_0x5e3471)[_0xab04('0x19')](_0x233a8d);}};}function respondWithFilteredResult(_0x1fb034,_0x2cff48){return function(_0x523c51){if(_0x523c51){var _0x3371ed=typeof _0x2cff48[_0xab04('0x1a')]===_0xab04('0x1b')&&typeof _0x2cff48[_0xab04('0x1c')]===_0xab04('0x1b');var _0x5d10f7=_0x523c51['count'];var _0x371c30=_0x3371ed?0x0:_0x2cff48[_0xab04('0x1a')];var _0x2c0b39=_0x3371ed?_0x523c51['count']:_0x2cff48['offset']+_0x2cff48[_0xab04('0x1c')];var _0x287011;if(_0x2c0b39>=_0x5d10f7){_0x2c0b39=_0x5d10f7;_0x287011=0xc8;}else{_0x287011=0xce;}_0x1fb034[_0xab04('0x18')](_0x287011);return _0x1fb034['set'](_0xab04('0x1d'),_0x371c30+'-'+_0x2c0b39+'/'+_0x5d10f7)['json'](_0x523c51);}return null;};}function patchUpdates(_0x395c6b){return function(_0x2ac32c){try{jsonpatch['apply'](_0x2ac32c,_0x395c6b,!![]);}catch(_0x4808ba){return BPromise[_0xab04('0x1e')](_0x4808ba);}return _0x2ac32c[_0xab04('0x1f')]();};}function saveUpdates(_0x5a204c,_0x3f0d72){return function(_0x19d9cb){if(_0x19d9cb){return _0x19d9cb[_0xab04('0x20')](_0x5a204c)[_0xab04('0x21')](function(_0x3667fd){return _0x3667fd;});}return null;};}function removeEntity(_0x4c7a19,_0x19fcab){return function(_0x4df287){if(_0x4df287){return _0x4df287[_0xab04('0x22')]()[_0xab04('0x21')](function(){_0x4c7a19['status'](0xcc)[_0xab04('0x17')]();});}};}function handleEntityNotFound(_0x49b9bf,_0x59f287){return function(_0x587620){if(!_0x587620){_0x49b9bf[_0xab04('0x16')](0x194);}return _0x587620;};}function handleError(_0xb8bb3,_0x2f5a8c){_0x2f5a8c=_0x2f5a8c||0x1f4;return function(_0x9a1b1){logger[_0xab04('0x23')](_0x9a1b1['stack']);if(_0x9a1b1['name']){delete _0x9a1b1[_0xab04('0x24')];}_0xb8bb3['status'](_0x2f5a8c)[_0xab04('0x25')](_0x9a1b1);};}exports[_0xab04('0x26')]=function(_0x15cae9,_0x2fb6e4){var _0x331aa9={'raw':!![],'where':{'id':_0x15cae9['params']['id']}},_0x3c61bd={};_0x3c61bd[_0xab04('0x27')]=_[_0xab04('0x28')](db['ChatApplication'][_0xab04('0x29')]);_0x3c61bd[_0xab04('0x2a')]=_[_0xab04('0x28')](_0x15cae9[_0xab04('0x2a')]);_0x3c61bd[_0xab04('0x2b')]=_[_0xab04('0x2c')](_0x3c61bd['model'],_0x3c61bd[_0xab04('0x2a')]);_0x331aa9['attributes']=_[_0xab04('0x2c')](_0x3c61bd[_0xab04('0x27')],qs[_0xab04('0x2d')](_0x15cae9[_0xab04('0x2a')]['fields']));_0x331aa9[_0xab04('0x2e')]=_0x331aa9['attributes'][_0xab04('0x2f')]?_0x331aa9[_0xab04('0x2e')]:_0x3c61bd[_0xab04('0x27')];if(_0x15cae9[_0xab04('0x2a')][_0xab04('0x30')]){_0x331aa9[_0xab04('0x31')]=[{'all':!![]}];}_0x331aa9=_[_0xab04('0x32')]({},_0x331aa9,_0x15cae9['options']);return db['ChatApplication'][_0xab04('0x33')](_0x331aa9)[_0xab04('0x21')](handleEntityNotFound(_0x2fb6e4,null))[_0xab04('0x21')](respondWithResult(_0x2fb6e4,null))['catch'](handleError(_0x2fb6e4,null));};exports[_0xab04('0x20')]=function(_0x29b73a,_0x5a9a5b){if(_0x29b73a[_0xab04('0x34')]['id']){delete _0x29b73a[_0xab04('0x34')]['id'];}return db[_0xab04('0x35')][_0xab04('0x33')]({'where':{'id':_0x29b73a[_0xab04('0x36')]['id']}})['then'](handleEntityNotFound(_0x5a9a5b,null))[_0xab04('0x21')](saveUpdates(_0x29b73a['body'],null))['then'](respondWithResult(_0x5a9a5b,null))[_0xab04('0x37')](handleError(_0x5a9a5b,null));};exports[_0xab04('0x22')]=function(_0x12539d,_0x16ad54){return db['ChatApplication'][_0xab04('0x33')]({'where':{'id':_0x12539d[_0xab04('0x36')]['id']}})['then'](handleEntityNotFound(_0x16ad54,null))[_0xab04('0x21')](removeEntity(_0x16ad54,null))[_0xab04('0x37')](handleError(_0x16ad54,null));};
\ No newline at end of file
index ac37cc9..1fef43a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc910=['util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./chatApplication.attributes','exports','define','chat_applications','utf8mb4','utf8mb4_unicode_ci'];(function(_0x24d399,_0x4c3760){var _0x5f0014=function(_0x93cec0){while(--_0x93cec0){_0x24d399['push'](_0x24d399['shift']());}};_0x5f0014(++_0x4c3760);}(_0xc910,0x1e1));var _0x0c91=function(_0x5323f8,_0xd4d0f9){_0x5323f8=_0x5323f8-0x0;var _0x4c1ce7=_0xc910[_0x5323f8];return _0x4c1ce7;};'use strict';var _=require('lodash');var util=require(_0x0c91('0x0'));var logger=require(_0x0c91('0x1'))('api');var moment=require(_0x0c91('0x2'));var BPromise=require(_0x0c91('0x3'));var rp=require(_0x0c91('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0c91('0x5'));var config=require(_0x0c91('0x6'));var attributes=require(_0x0c91('0x7'));module[_0x0c91('0x8')]=function(_0x4c4eb4,_0x3d2049){return _0x4c4eb4[_0x0c91('0x9')]('ChatApplication',attributes,{'tableName':_0x0c91('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0c91('0xb'),'collate':_0x0c91('0xc')});};
\ No newline at end of file
+var _0xa1db=['../../config/environment','./chatApplication.attributes','exports','define','ChatApplication','chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','request-promise','path'];(function(_0x3c8244,_0x2f960e){var _0xc66b60=function(_0x26a2d5){while(--_0x26a2d5){_0x3c8244['push'](_0x3c8244['shift']());}};_0xc66b60(++_0x2f960e);}(_0xa1db,0xb0));var _0xba1d=function(_0x3c3ec7,_0x309339){_0x3c3ec7=_0x3c3ec7-0x0;var _0x23e52c=_0xa1db[_0x3c3ec7];return _0x23e52c;};'use strict';var _=require(_0xba1d('0x0'));var util=require(_0xba1d('0x1'));var logger=require(_0xba1d('0x2'))(_0xba1d('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xba1d('0x4'));var fs=require('fs');var path=require(_0xba1d('0x5'));var rimraf=require('rimraf');var config=require(_0xba1d('0x6'));var attributes=require(_0xba1d('0x7'));module[_0xba1d('0x8')]=function(_0xf79440,_0xea5887){return _0xf79440[_0xba1d('0x9')](_0xba1d('0xa'),attributes,{'tableName':_0xba1d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xba1d('0xc'),'collate':_0xba1d('0xd')});};
\ No newline at end of file
index 23ad9af..477a6d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5f6=['stringify','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x26bcec,_0xe13f50){var _0x1049dc=function(_0x4c0d9b){while(--_0x4c0d9b){_0x26bcec['push'](_0x26bcec['shift']());}};_0x1049dc(++_0xe13f50);}(_0xe5f6,0x165));var _0x6e5f=function(_0x546177,_0x252857){_0x546177=_0x546177-0x0;var _0x324a56=_0xe5f6[_0x546177];return _0x324a56;};'use strict';var _=require(_0x6e5f('0x0'));var util=require(_0x6e5f('0x1'));var moment=require(_0x6e5f('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e5f('0x3'));var fs=require('fs');var Redis=require(_0x6e5f('0x4'));var db=require(_0x6e5f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6e5f('0x6'))(_0x6e5f('0x7'));var config=require('../../config/environment');var jayson=require(_0x6e5f('0x8'));var client=jayson[_0x6e5f('0x9')][_0x6e5f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5b5a2f,_0x3c3f37,_0xe0562e){return new BPromise(function(_0x33239d,_0x1b8094){return client[_0x6e5f('0xb')](_0x5b5a2f,_0xe0562e)[_0x6e5f('0xc')](function(_0x3d4207){logger[_0x6e5f('0xd')](_0x6e5f('0xe'),_0x3c3f37,_0x6e5f('0xf'));logger[_0x6e5f('0x10')]('ChatApplication,\x20%s,\x20%s,\x20%s',_0x3c3f37,_0x6e5f('0xf'),JSON[_0x6e5f('0x11')](_0x3d4207));if(_0x3d4207[_0x6e5f('0x12')]){if(_0x3d4207['error'][_0x6e5f('0x13')]===0x1f4){logger['error'](_0x6e5f('0xe'),_0x3c3f37,_0x3d4207[_0x6e5f('0x12')][_0x6e5f('0x14')]);return _0x1b8094(_0x3d4207[_0x6e5f('0x12')]['message']);}logger[_0x6e5f('0x12')](_0x6e5f('0xe'),_0x3c3f37,_0x3d4207[_0x6e5f('0x12')][_0x6e5f('0x14')]);return _0x33239d(_0x3d4207['error'][_0x6e5f('0x14')]);}else{logger[_0x6e5f('0xd')](_0x6e5f('0xe'),_0x3c3f37,_0x6e5f('0xf'));_0x33239d(_0x3d4207[_0x6e5f('0x15')][_0x6e5f('0x14')]);}})['catch'](function(_0x85d6e4){logger['error']('ChatApplication,\x20%s,\x20%s',_0x3c3f37,_0x85d6e4);_0x1b8094(_0x85d6e4);});});}
\ No newline at end of file
+var _0x593e=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','debug','ChatApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatApplication,\x20%s,\x20%s','message','result','lodash','util'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x593e,0x14e));var _0xe593=function(_0x59afb0,_0x546e2b){_0x59afb0=_0x59afb0-0x0;var _0x470d31=_0x593e[_0x59afb0];return _0x470d31;};'use strict';var _=require(_0xe593('0x0'));var util=require(_0xe593('0x1'));var moment=require(_0xe593('0x2'));var BPromise=require(_0xe593('0x3'));var rs=require(_0xe593('0x4'));var fs=require('fs');var Redis=require(_0xe593('0x5'));var db=require(_0xe593('0x6'))['db'];var utils=require(_0xe593('0x7'));var logger=require(_0xe593('0x8'))(_0xe593('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe593('0xa')][_0xe593('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4dd615,_0x52eab4,_0x27c65b){return new BPromise(function(_0x464d11,_0x13a944){return client[_0xe593('0xc')](_0x4dd615,_0x27c65b)[_0xe593('0xd')](function(_0x472412){logger[_0xe593('0xe')]('ChatApplication,\x20%s,\x20%s',_0x52eab4,'request\x20sent');logger[_0xe593('0xf')](_0xe593('0x10'),_0x52eab4,_0xe593('0x11'),JSON[_0xe593('0x12')](_0x472412));if(_0x472412[_0xe593('0x13')]){if(_0x472412[_0xe593('0x13')][_0xe593('0x14')]===0x1f4){logger[_0xe593('0x13')](_0xe593('0x15'),_0x52eab4,_0x472412[_0xe593('0x13')][_0xe593('0x16')]);return _0x13a944(_0x472412['error'][_0xe593('0x16')]);}logger[_0xe593('0x13')](_0xe593('0x15'),_0x52eab4,_0x472412[_0xe593('0x13')]['message']);return _0x464d11(_0x472412[_0xe593('0x13')][_0xe593('0x16')]);}else{logger['info'](_0xe593('0x15'),_0x52eab4,_0xe593('0x11'));_0x464d11(_0x472412[_0xe593('0x17')][_0xe593('0x16')]);}})['catch'](function(_0x8b8a24){logger[_0xe593('0x13')](_0xe593('0x15'),_0x52eab4,_0x8b8a24);_0x13a944(_0x8b8a24);});});}
\ No newline at end of file
index c1cc8ea..b06f5ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96b2=['../../components/auth/service','get','/:id','show','put','isAuthenticated','update','destroy','exports','multer','util','path','express','fs-extra'];(function(_0x50587f,_0x5bc8e6){var _0x363c05=function(_0x2dfcb2){while(--_0x2dfcb2){_0x50587f['push'](_0x50587f['shift']());}};_0x363c05(++_0x5bc8e6);}(_0x96b2,0x105));var _0x296b=function(_0x33d7c2,_0x858971){_0x33d7c2=_0x33d7c2-0x0;var _0x49e29a=_0x96b2[_0x33d7c2];return _0x49e29a;};'use strict';var multer=require(_0x296b('0x0'));var util=require(_0x296b('0x1'));var path=require(_0x296b('0x2'));var timeout=require('connect-timeout');var express=require(_0x296b('0x3'));var router=express['Router']();var fs_extra=require(_0x296b('0x4'));var auth=require(_0x296b('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./chatApplication.controller');router[_0x296b('0x6')](_0x296b('0x7'),auth['isAuthenticated'](),controller[_0x296b('0x8')]);router[_0x296b('0x9')]('/:id',auth[_0x296b('0xa')](),controller[_0x296b('0xb')]);router['delete'](_0x296b('0x7'),auth[_0x296b('0xa')](),controller[_0x296b('0xc')]);module[_0x296b('0xd')]=router;
\ No newline at end of file
+var _0x50fb=['../../components/auth/service','./chatApplication.controller','get','/:id','isAuthenticated','show','put','update','destroy','exports','path','express','Router'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x50fb,0xa6));var _0xb50f=function(_0x24be5f,_0x84b9b){_0x24be5f=_0x24be5f-0x0;var _0x43f473=_0x50fb[_0x24be5f];return _0x43f473;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb50f('0x0'));var timeout=require('connect-timeout');var express=require(_0xb50f('0x1'));var router=express[_0xb50f('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xb50f('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xb50f('0x4'));router[_0xb50f('0x5')](_0xb50f('0x6'),auth[_0xb50f('0x7')](),controller[_0xb50f('0x8')]);router[_0xb50f('0x9')](_0xb50f('0x6'),auth[_0xb50f('0x7')](),controller[_0xb50f('0xa')]);router['delete']('/:id',auth[_0xb50f('0x7')](),controller[_0xb50f('0xb')]);module[_0xb50f('0xc')]=router;
\ No newline at end of file
index 5a01466..0e0e439 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1203=['sequelize','exports','STRING','BOOLEAN'];(function(_0x40c0bb,_0x2fad1a){var _0x9ce19a=function(_0x555cd1){while(--_0x555cd1){_0x40c0bb['push'](_0x40c0bb['shift']());}};_0x9ce19a(++_0x2fad1a);}(_0x1203,0x8c));var _0x3120=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1203[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x3120('0x0'));module[_0x3120('0x1')]={'name':{'type':Sequelize[_0x3120('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x3120('0x2')]},'write':{'type':Sequelize[_0x3120('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xc6a2=['BOOLEAN','sequelize','exports','STRING'];(function(_0x5400a1,_0x2275aa){var _0x4006c7=function(_0x5002dc){while(--_0x5002dc){_0x5400a1['push'](_0x5400a1['shift']());}};_0x4006c7(++_0x2275aa);}(_0xc6a2,0x69));var _0x2c6a=function(_0x342d6d,_0x2e0da2){_0x342d6d=_0x342d6d-0x0;var _0x54451e=_0xc6a2[_0x342d6d];return _0x54451e;};'use strict';var Sequelize=require(_0x2c6a('0x0'));module[_0x2c6a('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x2c6a('0x2')]},'write':{'type':Sequelize[_0x2c6a('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 168e7d7..85dc472 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6af=['index','map','ChatGroup','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','catch','show','params','include','find','create','body','getUnread','ChatInternalMessage','user','toInteger','addMembers','ids','findOne','pick','getMembers','removeMembers','addMessage','ChatGroupId','getMessages','$gte','split','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./chatGroup.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name'];(function(_0x3548e4,_0x50c8d2){var _0x31ae82=function(_0x41faa3){while(--_0x41faa3){_0x3548e4['push'](_0x3548e4['shift']());}};_0x31ae82(++_0x50c8d2);}(_0xc6af,0xee));var _0xfc6a=function(_0x16574b,_0x30f1f5){_0x16574b=_0x16574b-0x0;var _0x300504=_0xc6af[_0x16574b];return _0x300504;};'use strict';var emlformat=require(_0xfc6a('0x0'));var rimraf=require(_0xfc6a('0x1'));var zipdir=require(_0xfc6a('0x2'));var jsonpatch=require(_0xfc6a('0x3'));var rp=require(_0xfc6a('0x4'));var moment=require(_0xfc6a('0x5'));var BPromise=require(_0xfc6a('0x6'));var Mustache=require(_0xfc6a('0x7'));var util=require(_0xfc6a('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xfc6a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfc6a('0xa'));var _=require(_0xfc6a('0xb'));var squel=require(_0xfc6a('0xc'));var crypto=require('crypto');var jsforce=require(_0xfc6a('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xfc6a('0x9'));var querystring=require('querystring');var Papa=require(_0xfc6a('0xe'));var Redis=require(_0xfc6a('0xf'));var authService=require(_0xfc6a('0x10'));var qs=require(_0xfc6a('0x11'));var as=require(_0xfc6a('0x12'));var hardwareService=require(_0xfc6a('0x13'));var logger=require(_0xfc6a('0x14'))(_0xfc6a('0x15'));var utils=require(_0xfc6a('0x16'));var config=require(_0xfc6a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xfc6a('0x18'))['db'];config[_0xfc6a('0x19')]=_[_0xfc6a('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xfc6a('0x1b'))(new Redis(config[_0xfc6a('0x19')]));require(_0xfc6a('0x1c'))['register'](socket);function respondWithStatusCode(_0x2a22db,_0x2ddd37){_0x2ddd37=_0x2ddd37||0xcc;return function(_0x43734e){if(_0x43734e){return _0x2a22db[_0xfc6a('0x1d')](_0x2ddd37);}return _0x2a22db[_0xfc6a('0x1e')](_0x2ddd37)[_0xfc6a('0x1f')]();};}function respondWithResult(_0x3176c1,_0xd87472){_0xd87472=_0xd87472||0xc8;return function(_0x130f66){if(_0x130f66){return _0x3176c1[_0xfc6a('0x1e')](_0xd87472)[_0xfc6a('0x20')](_0x130f66);}};}function respondWithFilteredResult(_0x441831,_0x539924){return function(_0x3e4362){if(_0x3e4362){var _0x68e857=typeof _0x539924[_0xfc6a('0x21')]===_0xfc6a('0x22')&&typeof _0x539924[_0xfc6a('0x23')]==='undefined';var _0x1fbf31=_0x3e4362[_0xfc6a('0x24')];var _0x2e3826=_0x68e857?0x0:_0x539924[_0xfc6a('0x21')];var _0x4e1759=_0x68e857?_0x3e4362[_0xfc6a('0x24')]:_0x539924['offset']+_0x539924[_0xfc6a('0x23')];var _0x2e04be;if(_0x4e1759>=_0x1fbf31){_0x4e1759=_0x1fbf31;_0x2e04be=0xc8;}else{_0x2e04be=0xce;}_0x441831['status'](_0x2e04be);return _0x441831[_0xfc6a('0x25')](_0xfc6a('0x26'),_0x2e3826+'-'+_0x4e1759+'/'+_0x1fbf31)[_0xfc6a('0x20')](_0x3e4362);}return null;};}function patchUpdates(_0x5c8efe){return function(_0x567e3e){try{jsonpatch['apply'](_0x567e3e,_0x5c8efe,!![]);}catch(_0x386629){return BPromise[_0xfc6a('0x27')](_0x386629);}return _0x567e3e[_0xfc6a('0x28')]();};}function saveUpdates(_0x111693,_0x4aedca){return function(_0x36ff03){if(_0x36ff03){return _0x36ff03[_0xfc6a('0x29')](_0x111693)[_0xfc6a('0x2a')](function(_0x284467){return _0x284467;});}return null;};}function removeEntity(_0x58bfc4,_0x10ff55){return function(_0x5c25f1){if(_0x5c25f1){return _0x5c25f1[_0xfc6a('0x2b')]()[_0xfc6a('0x2a')](function(){_0x58bfc4['status'](0xcc)[_0xfc6a('0x1f')]();});}};}function handleEntityNotFound(_0x3df042,_0x9b6a5d){return function(_0x20ed4e){if(!_0x20ed4e){_0x3df042[_0xfc6a('0x1d')](0x194);}return _0x20ed4e;};}function handleError(_0x35b176,_0x250ce3){_0x250ce3=_0x250ce3||0x1f4;return function(_0x19ffc6){logger[_0xfc6a('0x2c')](_0x19ffc6[_0xfc6a('0x2d')]);if(_0x19ffc6[_0xfc6a('0x2e')]){delete _0x19ffc6['name'];}_0x35b176[_0xfc6a('0x1e')](_0x250ce3)['send'](_0x19ffc6);};}exports[_0xfc6a('0x2f')]=function(_0x2a44f8,_0x2d05b0){var _0x3b034f={},_0x492306={},_0x5b321d={'count':0x0,'rows':[]};var _0x1b7c12=_[_0xfc6a('0x30')](db[_0xfc6a('0x31')][_0xfc6a('0x32')],function(_0x1d586d){return{'name':_0x1d586d[_0xfc6a('0x33')],'type':_0x1d586d['type'][_0xfc6a('0x34')]};});_0x492306['model']=_[_0xfc6a('0x30')](_0x1b7c12,'name');_0x492306[_0xfc6a('0x35')]=_[_0xfc6a('0x36')](_0x2a44f8['query']);_0x492306[_0xfc6a('0x37')]=_[_0xfc6a('0x38')](_0x492306[_0xfc6a('0x39')],_0x492306[_0xfc6a('0x35')]);_0x3b034f[_0xfc6a('0x3a')]=_[_0xfc6a('0x38')](_0x492306[_0xfc6a('0x39')],qs[_0xfc6a('0x3b')](_0x2a44f8[_0xfc6a('0x35')]['fields']));_0x3b034f[_0xfc6a('0x3a')]=_0x3b034f[_0xfc6a('0x3a')][_0xfc6a('0x3c')]?_0x3b034f[_0xfc6a('0x3a')]:_0x492306[_0xfc6a('0x39')];if(!_0x2a44f8[_0xfc6a('0x35')][_0xfc6a('0x3d')](_0xfc6a('0x3e'))){_0x3b034f[_0xfc6a('0x23')]=qs[_0xfc6a('0x23')](_0x2a44f8[_0xfc6a('0x35')]['limit']);_0x3b034f[_0xfc6a('0x21')]=qs[_0xfc6a('0x21')](_0x2a44f8[_0xfc6a('0x35')]['offset']);}_0x3b034f[_0xfc6a('0x3f')]=qs[_0xfc6a('0x40')](_0x2a44f8['query']['sort']);_0x3b034f[_0xfc6a('0x41')]=qs['filters'](_['pick'](_0x2a44f8['query'],_0x492306[_0xfc6a('0x37')]),_0x1b7c12);if(_0x2a44f8[_0xfc6a('0x35')][_0xfc6a('0x42')]){_0x3b034f[_0xfc6a('0x41')]=_[_0xfc6a('0x43')](_0x3b034f[_0xfc6a('0x41')],{'$or':_[_0xfc6a('0x30')](_0x1b7c12,function(_0x5da2f3){if(_0x5da2f3[_0xfc6a('0x44')]!==_0xfc6a('0x45')){var _0x46bf53={};_0x46bf53[_0x5da2f3[_0xfc6a('0x2e')]]={'$like':'%'+_0x2a44f8[_0xfc6a('0x35')][_0xfc6a('0x42')]+'%'};return _0x46bf53;}})});}_0x3b034f=_[_0xfc6a('0x43')]({},_0x3b034f,_0x2a44f8[_0xfc6a('0x46')]);var _0x43e637={'where':_0x3b034f[_0xfc6a('0x41')]};return db[_0xfc6a('0x31')][_0xfc6a('0x24')](_0x43e637)['then'](function(_0x4b0b7f){_0x5b321d[_0xfc6a('0x24')]=_0x4b0b7f;if(_0x2a44f8[_0xfc6a('0x35')][_0xfc6a('0x47')]){_0x3b034f['include']=[{'all':!![]}];}return db[_0xfc6a('0x31')]['findAll'](_0x3b034f);})[_0xfc6a('0x2a')](function(_0x301208){_0x5b321d['rows']=_0x301208;return _0x5b321d;})['then'](respondWithFilteredResult(_0x2d05b0,_0x3b034f))[_0xfc6a('0x48')](handleError(_0x2d05b0,null));};exports[_0xfc6a('0x49')]=function(_0x453158,_0x158c20){var _0x453f47={'raw':!![],'where':{'id':_0x453158[_0xfc6a('0x4a')]['id']}},_0x290f2f={};_0x290f2f[_0xfc6a('0x39')]=_[_0xfc6a('0x36')](db[_0xfc6a('0x31')][_0xfc6a('0x32')]);_0x290f2f[_0xfc6a('0x35')]=_[_0xfc6a('0x36')](_0x453158['query']);_0x290f2f[_0xfc6a('0x37')]=_[_0xfc6a('0x38')](_0x290f2f[_0xfc6a('0x39')],_0x290f2f[_0xfc6a('0x35')]);_0x453f47[_0xfc6a('0x3a')]=_[_0xfc6a('0x38')](_0x290f2f['model'],qs[_0xfc6a('0x3b')](_0x453158[_0xfc6a('0x35')][_0xfc6a('0x3b')]));_0x453f47[_0xfc6a('0x3a')]=_0x453f47[_0xfc6a('0x3a')]['length']?_0x453f47[_0xfc6a('0x3a')]:_0x290f2f[_0xfc6a('0x39')];if(_0x453158['query'][_0xfc6a('0x47')]){_0x453f47[_0xfc6a('0x4b')]=[{'all':!![]}];}_0x453f47=_[_0xfc6a('0x43')]({},_0x453f47,_0x453158[_0xfc6a('0x46')]);return db[_0xfc6a('0x31')][_0xfc6a('0x4c')](_0x453f47)[_0xfc6a('0x2a')](handleEntityNotFound(_0x158c20,null))[_0xfc6a('0x2a')](respondWithResult(_0x158c20,null))[_0xfc6a('0x48')](handleError(_0x158c20,null));};exports[_0xfc6a('0x4d')]=function(_0x504fbf,_0xfb5e4c){return db[_0xfc6a('0x31')][_0xfc6a('0x4d')](_0x504fbf[_0xfc6a('0x4e')],{})[_0xfc6a('0x2a')](respondWithResult(_0xfb5e4c,0xc9))[_0xfc6a('0x48')](handleError(_0xfb5e4c,null));};exports[_0xfc6a('0x29')]=function(_0x4aab0e,_0x22ffa5){if(_0x4aab0e[_0xfc6a('0x4e')]['id']){delete _0x4aab0e['body']['id'];}return db[_0xfc6a('0x31')][_0xfc6a('0x4c')]({'where':{'id':_0x4aab0e[_0xfc6a('0x4a')]['id']}})[_0xfc6a('0x2a')](handleEntityNotFound(_0x22ffa5,null))[_0xfc6a('0x2a')](saveUpdates(_0x4aab0e['body'],null))['then'](respondWithResult(_0x22ffa5,null))[_0xfc6a('0x48')](handleError(_0x22ffa5,null));};exports['destroy']=function(_0x419e5d,_0x1af713){return db[_0xfc6a('0x31')][_0xfc6a('0x4c')]({'where':{'id':_0x419e5d[_0xfc6a('0x4a')]['id']}})[_0xfc6a('0x2a')](handleEntityNotFound(_0x1af713,null))[_0xfc6a('0x2a')](removeEntity(_0x1af713,null))[_0xfc6a('0x48')](handleError(_0x1af713,null));};exports['describe']=function(_0x1ca6a9,_0x3964f8){return db[_0xfc6a('0x31')]['describe']()[_0xfc6a('0x2a')](respondWithResult(_0x3964f8,null))[_0xfc6a('0x48')](handleError(_0x3964f8,null));};exports[_0xfc6a('0x4f')]=function(_0x1ebc42,_0x2a0d88,_0x5d1d84){return db[_0xfc6a('0x50')]['count']({'where':{'ChatGroupId':_0x1ebc42[_0xfc6a('0x4a')]['id'],'ToId':_0x1ebc42[_0xfc6a('0x51')]['id'],'read':![]}})[_0xfc6a('0x2a')](function(_0x789b62){return{'id':_[_0xfc6a('0x52')](_0x1ebc42[_0xfc6a('0x4a')]['id']),'count':_0x789b62};})[_0xfc6a('0x2a')](respondWithResult(_0x2a0d88,null))[_0xfc6a('0x48')](handleError(_0x2a0d88,null));};exports['addMembers']=function(_0x39dc18,_0x4e4f35,_0x4f5892){return db[_0xfc6a('0x31')][_0xfc6a('0x4c')]({'where':{'id':_0x39dc18[_0xfc6a('0x4a')]['id']}})[_0xfc6a('0x2a')](handleEntityNotFound(_0x4e4f35,null))['then'](function(_0x39433b){if(_0x39433b){return _0x39433b[_0xfc6a('0x53')](_0x39dc18['body'][_0xfc6a('0x54')],_['omit'](_0x39dc18['body'],['ids','id'])||{});}})[_0xfc6a('0x2a')](respondWithResult(_0x4e4f35,null))[_0xfc6a('0x48')](handleError(_0x4e4f35,null));};exports['getMembers']=function(_0x2aba6d,_0x4ef06f,_0x4aed3b){var _0x357dbc={};var _0x3ce262={};var _0x3dfa3b;var _0x203ca6;return db[_0xfc6a('0x31')][_0xfc6a('0x55')]({'where':{'id':_0x2aba6d[_0xfc6a('0x4a')]['id']}})[_0xfc6a('0x2a')](handleEntityNotFound(_0x4ef06f,null))[_0xfc6a('0x2a')](function(_0x5e860c){if(_0x5e860c){_0x3dfa3b=_0x5e860c;_0x3ce262['model']=_[_0xfc6a('0x36')](db['User']['rawAttributes']);_0x3ce262['query']=_[_0xfc6a('0x36')](_0x2aba6d[_0xfc6a('0x35')]);_0x3ce262['filters']=_[_0xfc6a('0x38')](_0x3ce262[_0xfc6a('0x39')],_0x3ce262['query']);_0x357dbc[_0xfc6a('0x3a')]=_[_0xfc6a('0x38')](_0x3ce262[_0xfc6a('0x39')],qs[_0xfc6a('0x3b')](_0x2aba6d['query'][_0xfc6a('0x3b')]));_0x357dbc['attributes']=_0x357dbc[_0xfc6a('0x3a')]['length']?_0x357dbc[_0xfc6a('0x3a')]:_0x3ce262[_0xfc6a('0x39')];_0x357dbc[_0xfc6a('0x3f')]=qs[_0xfc6a('0x40')](_0x2aba6d[_0xfc6a('0x35')][_0xfc6a('0x40')]);_0x357dbc[_0xfc6a('0x41')]=qs[_0xfc6a('0x37')](_[_0xfc6a('0x56')](_0x2aba6d[_0xfc6a('0x35')],_0x3ce262['filters']));if(_0x2aba6d[_0xfc6a('0x35')][_0xfc6a('0x42')]){_0x357dbc[_0xfc6a('0x41')]=_[_0xfc6a('0x43')](_0x357dbc['where'],{'$or':_[_0xfc6a('0x30')](_0x357dbc[_0xfc6a('0x3a')],function(_0x3f2d87){var _0x236857={};_0x236857[_0x3f2d87]={'$like':'%'+_0x2aba6d[_0xfc6a('0x35')]['filter']+'%'};return _0x236857;})});}_0x357dbc=_[_0xfc6a('0x43')]({},_0x357dbc,_0x2aba6d['options']);return _0x3dfa3b[_0xfc6a('0x57')](_0x357dbc);}})[_0xfc6a('0x2a')](function(_0x6a7b49){if(_0x6a7b49){_0x203ca6=_0x6a7b49[_0xfc6a('0x3c')];if(!_0x2aba6d[_0xfc6a('0x35')][_0xfc6a('0x3d')](_0xfc6a('0x3e'))){_0x357dbc['limit']=qs[_0xfc6a('0x23')](_0x2aba6d[_0xfc6a('0x35')][_0xfc6a('0x23')]);_0x357dbc[_0xfc6a('0x21')]=qs[_0xfc6a('0x21')](_0x2aba6d[_0xfc6a('0x35')][_0xfc6a('0x21')]);}return _0x3dfa3b[_0xfc6a('0x57')](_0x357dbc);}})[_0xfc6a('0x2a')](function(_0x350ab2){if(_0x350ab2){return _0x350ab2?{'count':_0x203ca6,'rows':_0x350ab2}:null;}})['then'](respondWithResult(_0x4ef06f,null))[_0xfc6a('0x48')](handleError(_0x4ef06f,null));};exports['removeMembers']=function(_0x4f703f,_0x52eadc,_0x36cd76){return db[_0xfc6a('0x31')][_0xfc6a('0x4c')]({'where':{'id':_0x4f703f[_0xfc6a('0x4a')]['id']}})[_0xfc6a('0x2a')](handleEntityNotFound(_0x52eadc,null))[_0xfc6a('0x2a')](function(_0x803c42){if(_0x803c42){return _0x803c42[_0xfc6a('0x58')](_0x4f703f[_0xfc6a('0x35')][_0xfc6a('0x54')]);}})[_0xfc6a('0x2a')](respondWithStatusCode(_0x52eadc,null))[_0xfc6a('0x48')](handleError(_0x52eadc,null));};exports[_0xfc6a('0x59')]=function(_0x37b0e6,_0x18bb29,_0x1d2acf){if(_0x37b0e6[_0xfc6a('0x4e')]['id']){delete _0x37b0e6['body']['id'];}return db[_0xfc6a('0x31')]['find']({'where':{'id':_0x37b0e6[_0xfc6a('0x4a')]['id']}})[_0xfc6a('0x2a')](handleEntityNotFound(_0x18bb29,null))[_0xfc6a('0x2a')](function(_0x34656b){if(_0x34656b){_0x37b0e6[_0xfc6a('0x4e')][_0xfc6a('0x5a')]=_0x34656b['id'];return db[_0xfc6a('0x50')][_0xfc6a('0x4d')](_0x37b0e6[_0xfc6a('0x4e')]);}})[_0xfc6a('0x2a')](respondWithResult(_0x18bb29,null))[_0xfc6a('0x48')](handleError(_0x18bb29,null));};exports[_0xfc6a('0x5b')]=function(_0x4e7433,_0x4d5c20,_0x42a4ef){var _0x388f86={};var _0x275033={};var _0x3936ef;var _0x312def;return db[_0xfc6a('0x31')][_0xfc6a('0x55')]({'where':{'id':_0x4e7433[_0xfc6a('0x4a')]['id']}})[_0xfc6a('0x2a')](handleEntityNotFound(_0x4d5c20,null))[_0xfc6a('0x2a')](function(_0x770e5d){if(_0x770e5d){_0x3936ef=_0x770e5d;_0x275033['model']=_[_0xfc6a('0x36')](db[_0xfc6a('0x50')]['rawAttributes']);_0x275033[_0xfc6a('0x35')]=_[_0xfc6a('0x36')](_0x4e7433[_0xfc6a('0x35')]);_0x275033[_0xfc6a('0x37')]=_[_0xfc6a('0x38')](_0x275033[_0xfc6a('0x39')],_0x275033[_0xfc6a('0x35')]);_0x388f86[_0xfc6a('0x3a')]=_[_0xfc6a('0x38')](_0x275033[_0xfc6a('0x39')],qs[_0xfc6a('0x3b')](_0x4e7433[_0xfc6a('0x35')]['fields']));_0x388f86['attributes']=_0x388f86['attributes']['length']?_0x388f86[_0xfc6a('0x3a')]:_0x275033[_0xfc6a('0x39')];_0x388f86['order']=qs[_0xfc6a('0x40')](_0x4e7433[_0xfc6a('0x35')]['sort']);_0x388f86[_0xfc6a('0x41')]=qs[_0xfc6a('0x37')](_[_0xfc6a('0x56')](_0x4e7433[_0xfc6a('0x35')],_0x275033[_0xfc6a('0x37')]));if(_0x4e7433[_0xfc6a('0x35')][_0xfc6a('0x42')]){_0x388f86[_0xfc6a('0x41')]=_[_0xfc6a('0x43')](_0x388f86[_0xfc6a('0x41')],{'$or':_['map'](_0x388f86[_0xfc6a('0x3a')],function(_0x401281){var _0xb8f92b={};_0xb8f92b[_0x401281]={'$like':'%'+_0x4e7433['query'][_0xfc6a('0x42')]+'%'};return _0xb8f92b;})});}if(_0x4e7433[_0xfc6a('0x35')][_0xfc6a('0x5c')]){var _0x282fe2=_0x4e7433['query'][_0xfc6a('0x5c')][_0xfc6a('0x5d')](',');var _0x5e1fe1={};_0x5e1fe1[_0x282fe2[0x0]]={'$gte':moment(_0x282fe2[0x1])['format'](_0xfc6a('0x5e'))};_0x388f86['where']=_['merge'](_0x388f86[_0xfc6a('0x41')],_0x5e1fe1);}_0x388f86=_[_0xfc6a('0x43')]({},_0x388f86,_0x4e7433['options']);return _0x3936ef[_0xfc6a('0x5b')](_0x388f86);}})[_0xfc6a('0x2a')](function(_0x266b40){if(_0x266b40){_0x312def=_0x266b40[_0xfc6a('0x3c')];if(!_0x4e7433[_0xfc6a('0x35')]['hasOwnProperty']('nolimit')){_0x388f86[_0xfc6a('0x23')]=qs['limit'](_0x4e7433[_0xfc6a('0x35')][_0xfc6a('0x23')]);_0x388f86['offset']=qs[_0xfc6a('0x21')](_0x4e7433[_0xfc6a('0x35')][_0xfc6a('0x21')]);}return _0x3936ef[_0xfc6a('0x5b')](_0x388f86);}})[_0xfc6a('0x2a')](function(_0x5d7e71){if(_0x5d7e71){return _0x5d7e71?{'count':_0x312def,'rows':_0x5d7e71}:null;}})[_0xfc6a('0x2a')](respondWithResult(_0x4d5c20,null))['catch'](handleError(_0x4d5c20,null));};
\ No newline at end of file
+var _0xdf81=['getMembers','findOne','removeMembers','addMessage','$gte','split','YYYY-MM-DD\x20HH:mm:ss','getMessages','fast-json-patch','request-promise','moment','bluebird','mustache','path','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatGroup.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ChatGroup','includeAll','include','findAll','rows','show','params','find','catch','create','body','describe','getUnread','ChatInternalMessage','user','toInteger','ids','omit'];(function(_0x2426c8,_0x9668d3){var _0x56f51e=function(_0x4e4899){while(--_0x4e4899){_0x2426c8['push'](_0x2426c8['shift']());}};_0x56f51e(++_0x9668d3);}(_0xdf81,0x1e3));var _0x1df8=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0xdf81[_0x36884e];return _0x1cc367;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x1df8('0x0'));var rp=require(_0x1df8('0x1'));var moment=require(_0x1df8('0x2'));var BPromise=require(_0x1df8('0x3'));var Mustache=require(_0x1df8('0x4'));var util=require('util');var path=require(_0x1df8('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x1df8('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1df8('0x7'));var squel=require(_0x1df8('0x8'));var crypto=require(_0x1df8('0x9'));var jsforce=require(_0x1df8('0xa'));var deskjs=require(_0x1df8('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1df8('0xc'));var Redis=require(_0x1df8('0xd'));var authService=require(_0x1df8('0xe'));var qs=require(_0x1df8('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1df8('0x10'));var logger=require(_0x1df8('0x11'))(_0x1df8('0x12'));var utils=require(_0x1df8('0x13'));var config=require(_0x1df8('0x14'));var licenseUtil=require(_0x1df8('0x15'));var db=require(_0x1df8('0x16'))['db'];config['redis']=_[_0x1df8('0x17')](config[_0x1df8('0x18')],{'host':_0x1df8('0x19'),'port':0x18eb});var socket=require(_0x1df8('0x1a'))(new Redis(config[_0x1df8('0x18')]));require(_0x1df8('0x1b'))[_0x1df8('0x1c')](socket);function respondWithStatusCode(_0x5c37bd,_0x21b969){_0x21b969=_0x21b969||0xcc;return function(_0x262da5){if(_0x262da5){return _0x5c37bd[_0x1df8('0x1d')](_0x21b969);}return _0x5c37bd[_0x1df8('0x1e')](_0x21b969)[_0x1df8('0x1f')]();};}function respondWithResult(_0x2fc396,_0x4e854f){_0x4e854f=_0x4e854f||0xc8;return function(_0x4a8459){if(_0x4a8459){return _0x2fc396[_0x1df8('0x1e')](_0x4e854f)[_0x1df8('0x20')](_0x4a8459);}};}function respondWithFilteredResult(_0x34c5c6,_0x41ee4d){return function(_0x4b18ad){if(_0x4b18ad){var _0x459cc5=typeof _0x41ee4d['offset']===_0x1df8('0x21')&&typeof _0x41ee4d[_0x1df8('0x22')]===_0x1df8('0x21');var _0x3d3756=_0x4b18ad[_0x1df8('0x23')];var _0x583ae6=_0x459cc5?0x0:_0x41ee4d['offset'];var _0x121330=_0x459cc5?_0x4b18ad[_0x1df8('0x23')]:_0x41ee4d[_0x1df8('0x24')]+_0x41ee4d[_0x1df8('0x22')];var _0x262644;if(_0x121330>=_0x3d3756){_0x121330=_0x3d3756;_0x262644=0xc8;}else{_0x262644=0xce;}_0x34c5c6['status'](_0x262644);return _0x34c5c6[_0x1df8('0x25')](_0x1df8('0x26'),_0x583ae6+'-'+_0x121330+'/'+_0x3d3756)[_0x1df8('0x20')](_0x4b18ad);}return null;};}function patchUpdates(_0x37d63d){return function(_0x1be1a9){try{jsonpatch[_0x1df8('0x27')](_0x1be1a9,_0x37d63d,!![]);}catch(_0x230220){return BPromise['reject'](_0x230220);}return _0x1be1a9['save']();};}function saveUpdates(_0xb126a3,_0x3b2809){return function(_0x3537b9){if(_0x3537b9){return _0x3537b9[_0x1df8('0x28')](_0xb126a3)[_0x1df8('0x29')](function(_0x4333a7){return _0x4333a7;});}return null;};}function removeEntity(_0x19f259,_0x33b469){return function(_0x1d8cda){if(_0x1d8cda){return _0x1d8cda[_0x1df8('0x2a')]()['then'](function(){_0x19f259[_0x1df8('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3725a7,_0xde083a){return function(_0x45fa70){if(!_0x45fa70){_0x3725a7[_0x1df8('0x1d')](0x194);}return _0x45fa70;};}function handleError(_0xbe825d,_0x406ef4){_0x406ef4=_0x406ef4||0x1f4;return function(_0xb78639){logger[_0x1df8('0x2b')](_0xb78639[_0x1df8('0x2c')]);if(_0xb78639[_0x1df8('0x2d')]){delete _0xb78639[_0x1df8('0x2d')];}_0xbe825d['status'](_0x406ef4)[_0x1df8('0x2e')](_0xb78639);};}exports['index']=function(_0x674bfe,_0x228882){var _0x46661f={},_0x45a006={},_0x3f29dc={'count':0x0,'rows':[]};var _0x4ad105=_[_0x1df8('0x2f')](db['ChatGroup'][_0x1df8('0x30')],function(_0x180779){return{'name':_0x180779[_0x1df8('0x31')],'type':_0x180779[_0x1df8('0x32')]['key']};});_0x45a006[_0x1df8('0x33')]=_[_0x1df8('0x2f')](_0x4ad105,_0x1df8('0x2d'));_0x45a006[_0x1df8('0x34')]=_[_0x1df8('0x35')](_0x674bfe[_0x1df8('0x34')]);_0x45a006[_0x1df8('0x36')]=_[_0x1df8('0x37')](_0x45a006['model'],_0x45a006['query']);_0x46661f['attributes']=_[_0x1df8('0x37')](_0x45a006['model'],qs['fields'](_0x674bfe[_0x1df8('0x34')][_0x1df8('0x38')]));_0x46661f[_0x1df8('0x39')]=_0x46661f[_0x1df8('0x39')][_0x1df8('0x3a')]?_0x46661f[_0x1df8('0x39')]:_0x45a006[_0x1df8('0x33')];if(!_0x674bfe[_0x1df8('0x34')][_0x1df8('0x3b')](_0x1df8('0x3c'))){_0x46661f['limit']=qs[_0x1df8('0x22')](_0x674bfe[_0x1df8('0x34')][_0x1df8('0x22')]);_0x46661f[_0x1df8('0x24')]=qs['offset'](_0x674bfe['query'][_0x1df8('0x24')]);}_0x46661f[_0x1df8('0x3d')]=qs[_0x1df8('0x3e')](_0x674bfe[_0x1df8('0x34')]['sort']);_0x46661f[_0x1df8('0x3f')]=qs['filters'](_[_0x1df8('0x40')](_0x674bfe[_0x1df8('0x34')],_0x45a006['filters']),_0x4ad105);if(_0x674bfe[_0x1df8('0x34')][_0x1df8('0x41')]){_0x46661f[_0x1df8('0x3f')]=_[_0x1df8('0x42')](_0x46661f[_0x1df8('0x3f')],{'$or':_[_0x1df8('0x2f')](_0x4ad105,function(_0x5d0892){if(_0x5d0892[_0x1df8('0x32')]!==_0x1df8('0x43')){var _0x254511={};_0x254511[_0x5d0892[_0x1df8('0x2d')]]={'$like':'%'+_0x674bfe[_0x1df8('0x34')]['filter']+'%'};return _0x254511;}})});}_0x46661f=_[_0x1df8('0x42')]({},_0x46661f,_0x674bfe[_0x1df8('0x44')]);var _0x117d5e={'where':_0x46661f[_0x1df8('0x3f')]};return db[_0x1df8('0x45')][_0x1df8('0x23')](_0x117d5e)[_0x1df8('0x29')](function(_0x25d6c0){_0x3f29dc[_0x1df8('0x23')]=_0x25d6c0;if(_0x674bfe[_0x1df8('0x34')][_0x1df8('0x46')]){_0x46661f[_0x1df8('0x47')]=[{'all':!![]}];}return db['ChatGroup'][_0x1df8('0x48')](_0x46661f);})['then'](function(_0x4b4a6a){_0x3f29dc[_0x1df8('0x49')]=_0x4b4a6a;return _0x3f29dc;})[_0x1df8('0x29')](respondWithFilteredResult(_0x228882,_0x46661f))['catch'](handleError(_0x228882,null));};exports[_0x1df8('0x4a')]=function(_0x165fa0,_0x364817){var _0x33458e={'raw':!![],'where':{'id':_0x165fa0[_0x1df8('0x4b')]['id']}},_0x3b2275={};_0x3b2275[_0x1df8('0x33')]=_[_0x1df8('0x35')](db[_0x1df8('0x45')][_0x1df8('0x30')]);_0x3b2275['query']=_[_0x1df8('0x35')](_0x165fa0[_0x1df8('0x34')]);_0x3b2275[_0x1df8('0x36')]=_[_0x1df8('0x37')](_0x3b2275[_0x1df8('0x33')],_0x3b2275['query']);_0x33458e[_0x1df8('0x39')]=_[_0x1df8('0x37')](_0x3b2275[_0x1df8('0x33')],qs['fields'](_0x165fa0[_0x1df8('0x34')]['fields']));_0x33458e[_0x1df8('0x39')]=_0x33458e['attributes'][_0x1df8('0x3a')]?_0x33458e[_0x1df8('0x39')]:_0x3b2275[_0x1df8('0x33')];if(_0x165fa0[_0x1df8('0x34')][_0x1df8('0x46')]){_0x33458e[_0x1df8('0x47')]=[{'all':!![]}];}_0x33458e=_[_0x1df8('0x42')]({},_0x33458e,_0x165fa0[_0x1df8('0x44')]);return db[_0x1df8('0x45')][_0x1df8('0x4c')](_0x33458e)[_0x1df8('0x29')](handleEntityNotFound(_0x364817,null))['then'](respondWithResult(_0x364817,null))[_0x1df8('0x4d')](handleError(_0x364817,null));};exports[_0x1df8('0x4e')]=function(_0x3d5fa6,_0x4a422f){return db[_0x1df8('0x45')][_0x1df8('0x4e')](_0x3d5fa6['body'],{})[_0x1df8('0x29')](respondWithResult(_0x4a422f,0xc9))['catch'](handleError(_0x4a422f,null));};exports[_0x1df8('0x28')]=function(_0x85a8e9,_0x436ab0){if(_0x85a8e9[_0x1df8('0x4f')]['id']){delete _0x85a8e9[_0x1df8('0x4f')]['id'];}return db[_0x1df8('0x45')][_0x1df8('0x4c')]({'where':{'id':_0x85a8e9[_0x1df8('0x4b')]['id']}})[_0x1df8('0x29')](handleEntityNotFound(_0x436ab0,null))[_0x1df8('0x29')](saveUpdates(_0x85a8e9[_0x1df8('0x4f')],null))[_0x1df8('0x29')](respondWithResult(_0x436ab0,null))[_0x1df8('0x4d')](handleError(_0x436ab0,null));};exports['destroy']=function(_0x3c0623,_0x511255){return db[_0x1df8('0x45')]['find']({'where':{'id':_0x3c0623['params']['id']}})[_0x1df8('0x29')](handleEntityNotFound(_0x511255,null))[_0x1df8('0x29')](removeEntity(_0x511255,null))[_0x1df8('0x4d')](handleError(_0x511255,null));};exports[_0x1df8('0x50')]=function(_0x77a647,_0xc10b76){return db[_0x1df8('0x45')]['describe']()[_0x1df8('0x29')](respondWithResult(_0xc10b76,null))[_0x1df8('0x4d')](handleError(_0xc10b76,null));};exports[_0x1df8('0x51')]=function(_0x139f32,_0x30aeb1,_0xf97b40){return db[_0x1df8('0x52')][_0x1df8('0x23')]({'where':{'ChatGroupId':_0x139f32[_0x1df8('0x4b')]['id'],'ToId':_0x139f32[_0x1df8('0x53')]['id'],'read':![]}})[_0x1df8('0x29')](function(_0x3cf0c2){return{'id':_[_0x1df8('0x54')](_0x139f32[_0x1df8('0x4b')]['id']),'count':_0x3cf0c2};})['then'](respondWithResult(_0x30aeb1,null))['catch'](handleError(_0x30aeb1,null));};exports['addMembers']=function(_0x5eca73,_0xb90046,_0x13f557){return db[_0x1df8('0x45')][_0x1df8('0x4c')]({'where':{'id':_0x5eca73[_0x1df8('0x4b')]['id']}})[_0x1df8('0x29')](handleEntityNotFound(_0xb90046,null))[_0x1df8('0x29')](function(_0x59462a){if(_0x59462a){return _0x59462a['addMembers'](_0x5eca73[_0x1df8('0x4f')][_0x1df8('0x55')],_[_0x1df8('0x56')](_0x5eca73[_0x1df8('0x4f')],[_0x1df8('0x55'),'id'])||{});}})[_0x1df8('0x29')](respondWithResult(_0xb90046,null))[_0x1df8('0x4d')](handleError(_0xb90046,null));};exports[_0x1df8('0x57')]=function(_0x1fe8f5,_0x20242f,_0x540923){var _0x14c8e9={};var _0xd2f296={};var _0x32dafa;var _0x3f9926;return db[_0x1df8('0x45')][_0x1df8('0x58')]({'where':{'id':_0x1fe8f5['params']['id']}})[_0x1df8('0x29')](handleEntityNotFound(_0x20242f,null))[_0x1df8('0x29')](function(_0x2a79c1){if(_0x2a79c1){_0x32dafa=_0x2a79c1;_0xd2f296[_0x1df8('0x33')]=_[_0x1df8('0x35')](db['User'][_0x1df8('0x30')]);_0xd2f296[_0x1df8('0x34')]=_[_0x1df8('0x35')](_0x1fe8f5['query']);_0xd2f296[_0x1df8('0x36')]=_[_0x1df8('0x37')](_0xd2f296[_0x1df8('0x33')],_0xd2f296[_0x1df8('0x34')]);_0x14c8e9['attributes']=_[_0x1df8('0x37')](_0xd2f296[_0x1df8('0x33')],qs['fields'](_0x1fe8f5[_0x1df8('0x34')][_0x1df8('0x38')]));_0x14c8e9[_0x1df8('0x39')]=_0x14c8e9[_0x1df8('0x39')][_0x1df8('0x3a')]?_0x14c8e9[_0x1df8('0x39')]:_0xd2f296[_0x1df8('0x33')];_0x14c8e9[_0x1df8('0x3d')]=qs[_0x1df8('0x3e')](_0x1fe8f5[_0x1df8('0x34')][_0x1df8('0x3e')]);_0x14c8e9[_0x1df8('0x3f')]=qs[_0x1df8('0x36')](_[_0x1df8('0x40')](_0x1fe8f5[_0x1df8('0x34')],_0xd2f296[_0x1df8('0x36')]));if(_0x1fe8f5[_0x1df8('0x34')][_0x1df8('0x41')]){_0x14c8e9['where']=_[_0x1df8('0x42')](_0x14c8e9[_0x1df8('0x3f')],{'$or':_[_0x1df8('0x2f')](_0x14c8e9[_0x1df8('0x39')],function(_0x361ab7){var _0x2eafec={};_0x2eafec[_0x361ab7]={'$like':'%'+_0x1fe8f5[_0x1df8('0x34')]['filter']+'%'};return _0x2eafec;})});}_0x14c8e9=_[_0x1df8('0x42')]({},_0x14c8e9,_0x1fe8f5[_0x1df8('0x44')]);return _0x32dafa[_0x1df8('0x57')](_0x14c8e9);}})[_0x1df8('0x29')](function(_0x3d831a){if(_0x3d831a){_0x3f9926=_0x3d831a['length'];if(!_0x1fe8f5[_0x1df8('0x34')][_0x1df8('0x3b')](_0x1df8('0x3c'))){_0x14c8e9[_0x1df8('0x22')]=qs[_0x1df8('0x22')](_0x1fe8f5[_0x1df8('0x34')]['limit']);_0x14c8e9[_0x1df8('0x24')]=qs[_0x1df8('0x24')](_0x1fe8f5[_0x1df8('0x34')][_0x1df8('0x24')]);}return _0x32dafa[_0x1df8('0x57')](_0x14c8e9);}})['then'](function(_0xe77ccf){if(_0xe77ccf){return _0xe77ccf?{'count':_0x3f9926,'rows':_0xe77ccf}:null;}})[_0x1df8('0x29')](respondWithResult(_0x20242f,null))[_0x1df8('0x4d')](handleError(_0x20242f,null));};exports[_0x1df8('0x59')]=function(_0x30a442,_0x1ab69f,_0x456d61){return db[_0x1df8('0x45')][_0x1df8('0x4c')]({'where':{'id':_0x30a442[_0x1df8('0x4b')]['id']}})[_0x1df8('0x29')](handleEntityNotFound(_0x1ab69f,null))[_0x1df8('0x29')](function(_0x4e5086){if(_0x4e5086){return _0x4e5086[_0x1df8('0x59')](_0x30a442[_0x1df8('0x34')][_0x1df8('0x55')]);}})[_0x1df8('0x29')](respondWithStatusCode(_0x1ab69f,null))[_0x1df8('0x4d')](handleError(_0x1ab69f,null));};exports[_0x1df8('0x5a')]=function(_0x33d4de,_0x1f0a8d,_0x1affda){if(_0x33d4de[_0x1df8('0x4f')]['id']){delete _0x33d4de[_0x1df8('0x4f')]['id'];}return db['ChatGroup'][_0x1df8('0x4c')]({'where':{'id':_0x33d4de['params']['id']}})['then'](handleEntityNotFound(_0x1f0a8d,null))[_0x1df8('0x29')](function(_0x1a7c3a){if(_0x1a7c3a){_0x33d4de[_0x1df8('0x4f')]['ChatGroupId']=_0x1a7c3a['id'];return db['ChatInternalMessage']['create'](_0x33d4de[_0x1df8('0x4f')]);}})[_0x1df8('0x29')](respondWithResult(_0x1f0a8d,null))[_0x1df8('0x4d')](handleError(_0x1f0a8d,null));};exports['getMessages']=function(_0x3ddbee,_0x6a5752,_0xc101d6){var _0x1804d4={};var _0x120b1c={};var _0x13610b;var _0x385b3d;return db['ChatGroup'][_0x1df8('0x58')]({'where':{'id':_0x3ddbee[_0x1df8('0x4b')]['id']}})['then'](handleEntityNotFound(_0x6a5752,null))[_0x1df8('0x29')](function(_0x1c9ead){if(_0x1c9ead){_0x13610b=_0x1c9ead;_0x120b1c[_0x1df8('0x33')]=_[_0x1df8('0x35')](db[_0x1df8('0x52')]['rawAttributes']);_0x120b1c[_0x1df8('0x34')]=_['keys'](_0x3ddbee[_0x1df8('0x34')]);_0x120b1c[_0x1df8('0x36')]=_[_0x1df8('0x37')](_0x120b1c[_0x1df8('0x33')],_0x120b1c['query']);_0x1804d4['attributes']=_[_0x1df8('0x37')](_0x120b1c['model'],qs[_0x1df8('0x38')](_0x3ddbee[_0x1df8('0x34')][_0x1df8('0x38')]));_0x1804d4['attributes']=_0x1804d4[_0x1df8('0x39')][_0x1df8('0x3a')]?_0x1804d4[_0x1df8('0x39')]:_0x120b1c['model'];_0x1804d4[_0x1df8('0x3d')]=qs[_0x1df8('0x3e')](_0x3ddbee[_0x1df8('0x34')][_0x1df8('0x3e')]);_0x1804d4[_0x1df8('0x3f')]=qs[_0x1df8('0x36')](_[_0x1df8('0x40')](_0x3ddbee['query'],_0x120b1c[_0x1df8('0x36')]));if(_0x3ddbee[_0x1df8('0x34')][_0x1df8('0x41')]){_0x1804d4[_0x1df8('0x3f')]=_[_0x1df8('0x42')](_0x1804d4[_0x1df8('0x3f')],{'$or':_[_0x1df8('0x2f')](_0x1804d4[_0x1df8('0x39')],function(_0x827de6){var _0x176655={};_0x176655[_0x827de6]={'$like':'%'+_0x3ddbee['query']['filter']+'%'};return _0x176655;})});}if(_0x3ddbee[_0x1df8('0x34')][_0x1df8('0x5b')]){var _0xe8b98a=_0x3ddbee[_0x1df8('0x34')]['$gte'][_0x1df8('0x5c')](',');var _0x5639db={};_0x5639db[_0xe8b98a[0x0]]={'$gte':moment(_0xe8b98a[0x1])['format'](_0x1df8('0x5d'))};_0x1804d4[_0x1df8('0x3f')]=_['merge'](_0x1804d4[_0x1df8('0x3f')],_0x5639db);}_0x1804d4=_[_0x1df8('0x42')]({},_0x1804d4,_0x3ddbee[_0x1df8('0x44')]);return _0x13610b[_0x1df8('0x5e')](_0x1804d4);}})[_0x1df8('0x29')](function(_0x4b973b){if(_0x4b973b){_0x385b3d=_0x4b973b['length'];if(!_0x3ddbee[_0x1df8('0x34')][_0x1df8('0x3b')](_0x1df8('0x3c'))){_0x1804d4['limit']=qs[_0x1df8('0x22')](_0x3ddbee['query'][_0x1df8('0x22')]);_0x1804d4[_0x1df8('0x24')]=qs[_0x1df8('0x24')](_0x3ddbee[_0x1df8('0x34')][_0x1df8('0x24')]);}return _0x13610b['getMessages'](_0x1804d4);}})[_0x1df8('0x29')](function(_0x429bd3){if(_0x429bd3){return _0x429bd3?{'count':_0x385b3d,'rows':_0x429bd3}:null;}})[_0x1df8('0x29')](respondWithResult(_0x6a5752,null))[_0x1df8('0x4d')](handleError(_0x6a5752,null));};
\ No newline at end of file
index 095b979..b686fa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0e8=['hook','events','ChatGroup','save','update','remove','emit','hasOwnProperty'];(function(_0x4e1186,_0x13ad6f){var _0x1c463d=function(_0x1b2d32){while(--_0x1b2d32){_0x4e1186['push'](_0x4e1186['shift']());}};_0x1c463d(++_0x13ad6f);}(_0xe0e8,0xe9));var _0x8e0e=function(_0x3d1da6,_0x490f78){_0x3d1da6=_0x3d1da6-0x0;var _0x2986ad=_0xe0e8[_0x3d1da6];return _0x2986ad;};'use strict';var EventEmitter=require(_0x8e0e('0x0'));var ChatGroup=require('../../mysqldb')['db'][_0x8e0e('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8e0e('0x2'),'afterUpdate':_0x8e0e('0x3'),'afterDestroy':_0x8e0e('0x4')};function emitEvent(_0x5bacc7){return function(_0x1ba854,_0xaab575,_0x2e66cb){ChatGroupEvents[_0x8e0e('0x5')](_0x5bacc7+':'+_0x1ba854['id'],_0x1ba854);ChatGroupEvents[_0x8e0e('0x5')](_0x5bacc7,_0x1ba854);_0x2e66cb(null);};}for(var e in events){if(events[_0x8e0e('0x6')](e)){var event=events[e];ChatGroup[_0x8e0e('0x7')](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
+var _0x83eb=['hook','exports','events','../../mysqldb','save','update','remove','emit'];(function(_0x57ceb7,_0x244640){var _0x3ccc91=function(_0x20071a){while(--_0x20071a){_0x57ceb7['push'](_0x57ceb7['shift']());}};_0x3ccc91(++_0x244640);}(_0x83eb,0x1f2));var _0xb83e=function(_0x11d0d9,_0x1823f4){_0x11d0d9=_0x11d0d9-0x0;var _0x2f6362=_0x83eb[_0x11d0d9];return _0x2f6362;};'use strict';var EventEmitter=require(_0xb83e('0x0'));var ChatGroup=require(_0xb83e('0x1'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb83e('0x2'),'afterUpdate':_0xb83e('0x3'),'afterDestroy':_0xb83e('0x4')};function emitEvent(_0x341d1b){return function(_0x4e0987,_0x33236f,_0x1b7dad){ChatGroupEvents[_0xb83e('0x5')](_0x341d1b+':'+_0x4e0987['id'],_0x4e0987);ChatGroupEvents[_0xb83e('0x5')](_0x341d1b,_0x4e0987);_0x1b7dad(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup[_0xb83e('0x6')](e,emitEvent(event));}}module[_0xb83e('0x7')]=ChatGroupEvents;
\ No newline at end of file
index e683d45..82baef0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa93e=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatGroup.attributes','exports','define','chat_groups','lodash','util'];(function(_0x27bf9c,_0x3d8612){var _0x228166=function(_0x2444ab){while(--_0x2444ab){_0x27bf9c['push'](_0x27bf9c['shift']());}};_0x228166(++_0x3d8612);}(_0xa93e,0x9a));var _0xea93=function(_0x4d249f,_0x2c30e3){_0x4d249f=_0x4d249f-0x0;var _0x33d871=_0xa93e[_0x4d249f];return _0x33d871;};'use strict';var _=require(_0xea93('0x0'));var util=require(_0xea93('0x1'));var logger=require(_0xea93('0x2'))('api');var moment=require(_0xea93('0x3'));var BPromise=require(_0xea93('0x4'));var rp=require(_0xea93('0x5'));var fs=require('fs');var path=require(_0xea93('0x6'));var rimraf=require(_0xea93('0x7'));var config=require(_0xea93('0x8'));var attributes=require(_0xea93('0x9'));module[_0xea93('0xa')]=function(_0x4677ec,_0xf75104){return _0x4677ec[_0xea93('0xb')]('ChatGroup',attributes,{'tableName':_0xea93('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd4b6=['../../config/logger','api','moment','request-promise','exports','define','ChatGroup'];(function(_0x2d39e6,_0x50245f){var _0x3c344b=function(_0x4b64f4){while(--_0x4b64f4){_0x2d39e6['push'](_0x2d39e6['shift']());}};_0x3c344b(++_0x50245f);}(_0xd4b6,0x19d));var _0x6d4b=function(_0x2539ef,_0x20ecea){_0x2539ef=_0x2539ef-0x0;var _0x2d3b86=_0xd4b6[_0x2539ef];return _0x2d3b86;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6d4b('0x0'))(_0x6d4b('0x1'));var moment=require(_0x6d4b('0x2'));var BPromise=require('bluebird');var rp=require(_0x6d4b('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./chatGroup.attributes');module[_0x6d4b('0x4')]=function(_0x58eea9,_0xea3f02){return _0x58eea9[_0x6d4b('0x5')](_0x6d4b('0x6'),attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5017c57..735820c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cd6=['lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./chatGroup.socket','register','request','ChatGroup,\x20%s,\x20%s','request\x20sent','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch'];(function(_0x42bdad,_0x12836c){var _0x122626=function(_0x2eb29c){while(--_0x2eb29c){_0x42bdad['push'](_0x42bdad['shift']());}};_0x122626(++_0x12836c);}(_0x0cd6,0x113));var _0x60cd=function(_0x54d4a8,_0x585a59){_0x54d4a8=_0x54d4a8-0x0;var _0x3b321b=_0x0cd6[_0x54d4a8];return _0x3b321b;};'use strict';var _=require(_0x60cd('0x0'));var util=require(_0x60cd('0x1'));var moment=require('moment');var BPromise=require(_0x60cd('0x2'));var rs=require(_0x60cd('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x60cd('0x4'))['db'];var utils=require(_0x60cd('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x60cd('0x6'));var jayson=require(_0x60cd('0x7'));var client=jayson[_0x60cd('0x8')]['http']({'port':0x232a});config[_0x60cd('0x9')]=_['defaults'](config[_0x60cd('0x9')],{'host':_0x60cd('0xa'),'port':0x18eb});var socket=require(_0x60cd('0xb'))(new Redis(config[_0x60cd('0x9')]));require(_0x60cd('0xc'))[_0x60cd('0xd')](socket);function respondWithRpcPromise(_0x539cd3,_0x316912,_0x374baa){return new BPromise(function(_0x5d82b7,_0x23820b){return client[_0x60cd('0xe')](_0x539cd3,_0x374baa)['then'](function(_0xc240d8){logger['info'](_0x60cd('0xf'),_0x316912,_0x60cd('0x10'));logger['debug'](_0x60cd('0x11'),_0x316912,_0x60cd('0x10'),JSON[_0x60cd('0x12')](_0xc240d8));if(_0xc240d8['error']){if(_0xc240d8[_0x60cd('0x13')][_0x60cd('0x14')]===0x1f4){logger['error'](_0x60cd('0xf'),_0x316912,_0xc240d8['error'][_0x60cd('0x15')]);return _0x23820b(_0xc240d8[_0x60cd('0x13')]['message']);}logger['error'](_0x60cd('0xf'),_0x316912,_0xc240d8[_0x60cd('0x13')][_0x60cd('0x15')]);return _0x5d82b7(_0xc240d8['error'][_0x60cd('0x15')]);}else{logger[_0x60cd('0x16')](_0x60cd('0xf'),_0x316912,_0x60cd('0x10'));_0x5d82b7(_0xc240d8[_0x60cd('0x17')][_0x60cd('0x15')]);}})[_0x60cd('0x18')](function(_0x1e5ed5){logger[_0x60cd('0x13')]('ChatGroup,\x20%s,\x20%s',_0x316912,_0x1e5ed5);_0x23820b(_0x1e5ed5);});});}
\ No newline at end of file
+var _0x16dc=['../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./chatGroup.socket','request','info','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','../../mysqldb','../../config/utils'];(function(_0x4ddcf6,_0x112bda){var _0x1dfbb4=function(_0x288791){while(--_0x288791){_0x4ddcf6['push'](_0x4ddcf6['shift']());}};_0x1dfbb4(++_0x112bda);}(_0x16dc,0x1ef));var _0xc16d=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x16dc[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0xc16d('0x0'));var moment=require(_0xc16d('0x1'));var BPromise=require(_0xc16d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc16d('0x3'))['db'];var utils=require(_0xc16d('0x4'));var logger=require(_0xc16d('0x5'))('rpc');var config=require(_0xc16d('0x6'));var jayson=require(_0xc16d('0x7'));var client=jayson[_0xc16d('0x8')][_0xc16d('0x9')]({'port':0x232a});config[_0xc16d('0xa')]=_[_0xc16d('0xb')](config[_0xc16d('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xc16d('0xc'))(new Redis(config[_0xc16d('0xa')]));require(_0xc16d('0xd'))['register'](socket);function respondWithRpcPromise(_0x328e3b,_0x431485,_0x469fd8){return new BPromise(function(_0x3a7e0d,_0x450eb8){return client[_0xc16d('0xe')](_0x328e3b,_0x469fd8)['then'](function(_0x197068){logger[_0xc16d('0xf')](_0xc16d('0x10'),_0x431485,_0xc16d('0x11'));logger[_0xc16d('0x12')](_0xc16d('0x13'),_0x431485,_0xc16d('0x11'),JSON[_0xc16d('0x14')](_0x197068));if(_0x197068[_0xc16d('0x15')]){if(_0x197068['error'][_0xc16d('0x16')]===0x1f4){logger[_0xc16d('0x15')]('ChatGroup,\x20%s,\x20%s',_0x431485,_0x197068[_0xc16d('0x15')][_0xc16d('0x17')]);return _0x450eb8(_0x197068[_0xc16d('0x15')]['message']);}logger[_0xc16d('0x15')]('ChatGroup,\x20%s,\x20%s',_0x431485,_0x197068[_0xc16d('0x15')][_0xc16d('0x17')]);return _0x3a7e0d(_0x197068[_0xc16d('0x15')][_0xc16d('0x17')]);}else{logger[_0xc16d('0xf')](_0xc16d('0x10'),_0x431485,'request\x20sent');_0x3a7e0d(_0x197068['result'][_0xc16d('0x17')]);}})[_0xc16d('0x18')](function(_0x59fc63){logger['error']('ChatGroup,\x20%s,\x20%s',_0x431485,_0x59fc63);_0x450eb8(_0x59fc63);});});}
\ No newline at end of file
index cddd7b6..27c36bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe235=['emit','register','length','chatGroup:','./chatGroup.events','save','remove','update'];(function(_0x347ff3,_0x1cf44b){var _0xe8c4d3=function(_0x5eaed3){while(--_0x5eaed3){_0x347ff3['push'](_0x347ff3['shift']());}};_0xe8c4d3(++_0x1cf44b);}(_0xe235,0xe4));var _0x5e23=function(_0x535b1c,_0x5ab76f){_0x535b1c=_0x535b1c-0x0;var _0x262515=_0xe235[_0x535b1c];return _0x262515;};'use strict';var ChatGroupEvents=require(_0x5e23('0x0'));var events=[_0x5e23('0x1'),_0x5e23('0x2'),_0x5e23('0x3')];function createListener(_0x49fc1b,_0x57e9e8){return function(_0x31faa4){_0x57e9e8[_0x5e23('0x4')](_0x49fc1b,_0x31faa4);};}function removeListener(_0x14eee2,_0x5ba17a){return function(){ChatGroupEvents['removeListener'](_0x14eee2,_0x5ba17a);};}exports[_0x5e23('0x5')]=function(_0x37c8a7){for(var _0x1b49b2=0x0,_0x1c9b2b=events[_0x5e23('0x6')];_0x1b49b2<_0x1c9b2b;_0x1b49b2++){var _0xd7f262=events[_0x1b49b2];var _0x1f0008=createListener(_0x5e23('0x7')+_0xd7f262,_0x37c8a7);ChatGroupEvents['on'](_0xd7f262,_0x1f0008);}};
\ No newline at end of file
+var _0x23a6=['removeListener','register','length','chatGroup:','./chatGroup.events','save','update','emit'];(function(_0x14d154,_0x559179){var _0xcb8460=function(_0x7f497b){while(--_0x7f497b){_0x14d154['push'](_0x14d154['shift']());}};_0xcb8460(++_0x559179);}(_0x23a6,0x64));var _0x623a=function(_0x2b141d,_0x3b0bac){_0x2b141d=_0x2b141d-0x0;var _0x128eb7=_0x23a6[_0x2b141d];return _0x128eb7;};'use strict';var ChatGroupEvents=require(_0x623a('0x0'));var events=[_0x623a('0x1'),'remove',_0x623a('0x2')];function createListener(_0x1e183d,_0x150c34){return function(_0x445190){_0x150c34[_0x623a('0x3')](_0x1e183d,_0x445190);};}function removeListener(_0x28edc7,_0x51f328){return function(){ChatGroupEvents[_0x623a('0x4')](_0x28edc7,_0x51f328);};}exports[_0x623a('0x5')]=function(_0x644cde){for(var _0x1ce9b3=0x0,_0x4e7545=events[_0x623a('0x6')];_0x1ce9b3<_0x4e7545;_0x1ce9b3++){var _0x22ab8a=events[_0x1ce9b3];var _0x4b3696=createListener(_0x623a('0x7')+_0x22ab8a,_0x644cde);ChatGroupEvents['on'](_0x22ab8a,_0x4b3696);}};
\ No newline at end of file
index f1be2a6..3b86ec8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7ac=['show','/:id/unread','getMembers','/:id/messages','getMessages','post','create','/:id/members','addMembers','put','update','delete','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf7ac,0xde));var _0xcf7a=function(_0x3eceb2,_0x509ff8){_0x3eceb2=_0x3eceb2-0x0;var _0x818bc4=_0xf7ac[_0x3eceb2];return _0x818bc4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xcf7a('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xcf7a('0x1'));var auth=require(_0xcf7a('0x2'));var interaction=require(_0xcf7a('0x3'));var config=require(_0xcf7a('0x4'));var controller=require('./chatGroup.controller');router[_0xcf7a('0x5')]('/',auth[_0xcf7a('0x6')](),controller[_0xcf7a('0x7')]);router[_0xcf7a('0x5')]('/describe',auth[_0xcf7a('0x6')](),controller['describe']);router[_0xcf7a('0x5')](_0xcf7a('0x8'),auth['isAuthenticated'](),controller[_0xcf7a('0x9')]);router[_0xcf7a('0x5')](_0xcf7a('0xa'),auth['isAuthenticated'](),controller['getUnread']);router['get']('/:id/members',auth[_0xcf7a('0x6')](),controller[_0xcf7a('0xb')]);router[_0xcf7a('0x5')](_0xcf7a('0xc'),auth[_0xcf7a('0x6')](),controller[_0xcf7a('0xd')]);router[_0xcf7a('0xe')]('/',auth[_0xcf7a('0x6')](),controller[_0xcf7a('0xf')]);router[_0xcf7a('0xe')](_0xcf7a('0x10'),auth[_0xcf7a('0x6')](),controller[_0xcf7a('0x11')]);router[_0xcf7a('0xe')]('/:id/messages',auth['isAuthenticated'](),controller['addMessage']);router[_0xcf7a('0x12')](_0xcf7a('0x8'),auth[_0xcf7a('0x6')](),controller[_0xcf7a('0x13')]);router[_0xcf7a('0x14')](_0xcf7a('0x8'),auth[_0xcf7a('0x6')](),controller['destroy']);router[_0xcf7a('0x14')](_0xcf7a('0x10'),auth['isAuthenticated'](),controller['removeMembers']);module['exports']=router;
\ No newline at end of file
+var _0x5b8e=['multer','util','connect-timeout','express','Router','fs-extra','../../config/environment','./chatGroup.controller','get','isAuthenticated','index','describe','/:id','show','/:id/unread','getUnread','getMembers','/:id/messages','getMessages','post','/:id/members','addMembers','put','update','delete','destroy','removeMembers','exports'];(function(_0x295f7f,_0x561913){var _0x5cd7ab=function(_0x5e44cd){while(--_0x5e44cd){_0x295f7f['push'](_0x295f7f['shift']());}};_0x5cd7ab(++_0x561913);}(_0x5b8e,0x8c));var _0xe5b8=function(_0x211907,_0x5486fe){_0x211907=_0x211907-0x0;var _0x2cc002=_0x5b8e[_0x211907];return _0x2cc002;};'use strict';var multer=require(_0xe5b8('0x0'));var util=require(_0xe5b8('0x1'));var path=require('path');var timeout=require(_0xe5b8('0x2'));var express=require(_0xe5b8('0x3'));var router=express[_0xe5b8('0x4')]();var fs_extra=require(_0xe5b8('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xe5b8('0x6'));var controller=require(_0xe5b8('0x7'));router[_0xe5b8('0x8')]('/',auth[_0xe5b8('0x9')](),controller[_0xe5b8('0xa')]);router['get']('/describe',auth[_0xe5b8('0x9')](),controller[_0xe5b8('0xb')]);router['get'](_0xe5b8('0xc'),auth['isAuthenticated'](),controller[_0xe5b8('0xd')]);router[_0xe5b8('0x8')](_0xe5b8('0xe'),auth[_0xe5b8('0x9')](),controller[_0xe5b8('0xf')]);router[_0xe5b8('0x8')]('/:id/members',auth['isAuthenticated'](),controller[_0xe5b8('0x10')]);router['get'](_0xe5b8('0x11'),auth[_0xe5b8('0x9')](),controller[_0xe5b8('0x12')]);router[_0xe5b8('0x13')]('/',auth[_0xe5b8('0x9')](),controller['create']);router[_0xe5b8('0x13')](_0xe5b8('0x14'),auth[_0xe5b8('0x9')](),controller[_0xe5b8('0x15')]);router[_0xe5b8('0x13')](_0xe5b8('0x11'),auth[_0xe5b8('0x9')](),controller['addMessage']);router[_0xe5b8('0x16')](_0xe5b8('0xc'),auth[_0xe5b8('0x9')](),controller[_0xe5b8('0x17')]);router[_0xe5b8('0x18')]('/:id',auth[_0xe5b8('0x9')](),controller[_0xe5b8('0x19')]);router[_0xe5b8('0x18')](_0xe5b8('0x14'),auth[_0xe5b8('0x9')](),controller[_0xe5b8('0x1a')]);module[_0xe5b8('0x1b')]=router;
\ No newline at end of file
index b2989ab..45ff307 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf894=['sequelize','exports','BOOLEAN','INTEGER','ENUM','star','thumb','TEXT','STRING','DATE','out'];(function(_0x53c922,_0xc0d0a6){var _0x2d8773=function(_0x36961c){while(--_0x36961c){_0x53c922['push'](_0x53c922['shift']());}};_0x2d8773(++_0xc0d0a6);}(_0xf894,0xfd));var _0x4f89=function(_0x1aa8c4,_0x49f5a9){_0x1aa8c4=_0x1aa8c4-0x0;var _0x16a372=_0xf894[_0x1aa8c4];return _0x16a372;};'use strict';var Sequelize=require(_0x4f89('0x0'));module[_0x4f89('0x1')]={'closed':{'type':Sequelize[_0x4f89('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x4f89('0x3')]},'ratingType':{'type':Sequelize[_0x4f89('0x4')](_0x4f89('0x5'),_0x4f89('0x6')),'defaultValue':_0x4f89('0x5')},'ratingMessage':{'type':Sequelize[_0x4f89('0x7')]},'pathTranscript':{'type':Sequelize[_0x4f89('0x7')]},'mailTranscript':{'type':Sequelize[_0x4f89('0x8')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x4f89('0x9')]},'disposition':{'type':Sequelize[_0x4f89('0x8')]},'secondDisposition':{'type':Sequelize[_0x4f89('0x8')]},'thirdDisposition':{'type':Sequelize[_0x4f89('0x8')]},'note':{'type':Sequelize[_0x4f89('0x8')]},'browserName':{'type':Sequelize[_0x4f89('0x8')]},'browserVersion':{'type':Sequelize[_0x4f89('0x8')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0x4f89('0x8')]},'deviceModel':{'type':Sequelize[_0x4f89('0x8')]},'deviceVendor':{'type':Sequelize[_0x4f89('0x8')]},'deviceType':{'type':Sequelize[_0x4f89('0x8')]},'referer':{'type':Sequelize[_0x4f89('0x7')]},'customerIp':{'type':Sequelize[_0x4f89('0x8')]},'formData':{'type':Sequelize[_0x4f89('0x7')]('long')},'read1stAt':{'type':Sequelize['DATE']},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x4f89('0x4')]('in',_0x4f89('0xa')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize[_0x4f89('0x8')]},'vidaooSessionId':{'type':Sequelize[_0x4f89('0x7')]},'autoreplyExecuted':{'type':Sequelize[_0x4f89('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x6324=['long','ENUM','out','sequelize','exports','BOOLEAN','INTEGER','star','TEXT','DATE','STRING'];(function(_0xbfa345,_0x56fcbe){var _0x394463=function(_0x503eb3){while(--_0x503eb3){_0xbfa345['push'](_0xbfa345['shift']());}};_0x394463(++_0x56fcbe);}(_0x6324,0x142));var _0x4632=function(_0x44d2a8,_0x337c45){_0x44d2a8=_0x44d2a8-0x0;var _0x53b4bf=_0x6324[_0x44d2a8];return _0x53b4bf;};'use strict';var Sequelize=require(_0x4632('0x0'));module[_0x4632('0x1')]={'closed':{'type':Sequelize[_0x4632('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x4632('0x3')]},'ratingType':{'type':Sequelize['ENUM'](_0x4632('0x4'),'thumb'),'defaultValue':_0x4632('0x4')},'ratingMessage':{'type':Sequelize['TEXT']},'pathTranscript':{'type':Sequelize[_0x4632('0x5')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x4632('0x6')]},'disposition':{'type':Sequelize[_0x4632('0x7')]},'secondDisposition':{'type':Sequelize[_0x4632('0x7')]},'thirdDisposition':{'type':Sequelize[_0x4632('0x7')]},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize[_0x4632('0x7')]},'browserVersion':{'type':Sequelize[_0x4632('0x7')]},'osName':{'type':Sequelize[_0x4632('0x7')]},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0x4632('0x7')]},'deviceVendor':{'type':Sequelize[_0x4632('0x7')]},'deviceType':{'type':Sequelize['STRING']},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0x4632('0x7')]},'formData':{'type':Sequelize[_0x4632('0x5')](_0x4632('0x8'))},'read1stAt':{'type':Sequelize[_0x4632('0x6')]},'lastMsgAt':{'type':Sequelize[_0x4632('0x6')]},'lastMsgDirection':{'type':Sequelize[_0x4632('0x9')]('in',_0x4632('0xa')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x4632('0x7')]},'customerPort':{'type':Sequelize['STRING']},'vidaooSessionId':{'type':Sequelize[_0x4632('0x5')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index e76d53b..a44c69a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd943=['Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','getMessages','pick','YYYY-MM-DD\x20HH:mm:ss','findAll','includeAgent','addTags','setTags','spread','emit','chatInteractionTags:save','removeTags','unix','files','tmp','attachments','transcript-%d-%s.zip','firstName','lastName','Account','Owner','mkdirSync','Chat','disposition','browserName','osName','referer','customerIp','customerPort','tail','existsSync','pipe','createWriteStream','renderFile','server','views','downloadInteraction.ejs','transcript-','log','err','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/export/pdf','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./chatInteraction.socket','register','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','offset','limit','undefined','Content-Range','reject','save','update','destroy','stack','name','send','render','body','contact','agent','account','map','fullname','TagIds','Tags','split','forEach','index','ChatInteraction','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','field','from','tools_tags','select','u.fullname','ui.ChatInteractionId','user_has_chat_interactions','left_join','users','u.id\x20=\x20ui.UserId','chat_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','chat_websites','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','unreadMessages','`\x20=\x200','having','Contact','operator','value','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','buildExpression','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','$substring','UserId','start','some','compact','isEmpty','ChatWebsiteId','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','parse','$gte','null','\x20IS\x20NULL','read','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','toString','count','sequelize','keyBy','merge','a.key','Account.key','Account.mandatoryDisposition','i.*','c.firstName','Contact.firstName','Contact.lastName','c.email','Contact.phone','c.mobile','Contact.mobile','o.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','push','all','rows','params','rawAttributes','includeAll','include','options','create','describe','createVidaooSession','findOne','ChatWebsite','vidaooApiKey','vidaooEscalation','vidaooTopic','email','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','vidaooMetadata','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned','closed','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','mimetype','Attachment','attachmentDownload','json','Unauthorized','attachId','ChatOfflineMessageId','join','root','server/files/attachments/','download','close','mailTranscript','server/files/chat/upload/','transcript-%s.txt','Messages','%s%d','agentAlias','System','customer','format','Visitor','agentIdentifier','website_alias','agent_alias','alias','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','Smtp','service','host','port','authentication','auth','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript'];(function(_0x4b8890,_0x49ab18){var _0x3bfbf1=function(_0x658cc4){while(--_0x658cc4){_0x4b8890['push'](_0x4b8890['shift']());}};_0x3bfbf1(++_0x49ab18);}(_0xd943,0x15d));var _0x3d94=function(_0x4d4c97,_0x313647){_0x4d4c97=_0x4d4c97-0x0;var _0x330095=_0xd943[_0x4d4c97];return _0x330095;};'use strict';var emlformat=require(_0x3d94('0x0'));var rimraf=require(_0x3d94('0x1'));var zipdir=require(_0x3d94('0x2'));var jsonpatch=require(_0x3d94('0x3'));var rp=require('request-promise');var moment=require(_0x3d94('0x4'));var BPromise=require(_0x3d94('0x5'));var Mustache=require(_0x3d94('0x6'));var util=require(_0x3d94('0x7'));var path=require(_0x3d94('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3d94('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x3d94('0xa'));var jsforce=require(_0x3d94('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3d94('0xc'));var Papa=require(_0x3d94('0xd'));var Redis=require(_0x3d94('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x3d94('0xf'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x3d94('0x10'));var hardwareService=require(_0x3d94('0x11'));var logger=require('../../config/logger')(_0x3d94('0x12'));var utils=require(_0x3d94('0x13'));var config=require(_0x3d94('0x14'));var licenseUtil=require(_0x3d94('0x15'));var db=require(_0x3d94('0x16'))['db'];config['redis']=_[_0x3d94('0x17')](config[_0x3d94('0x18')],{'host':_0x3d94('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3d94('0x18')]));require(_0x3d94('0x1a'))[_0x3d94('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0x3d94('0x1c')][_0x3d94('0x1d')]({'port':0x232b});var client9004=jayson[_0x3d94('0x1c')][_0x3d94('0x1d')]({'port':0x232c});function respondWithRpcPromise(_0xaf939a,_0xd8efaa,_0x31c6e8,_0x9893cb){return new BPromise(function(_0x540658,_0x22676a){var _0x1a9315=_0x9893cb||client;return _0x1a9315[_0x3d94('0x1e')](_0xaf939a,_0x31c6e8)[_0x3d94('0x1f')](function(_0x4afc92){logger[_0x3d94('0x20')](_0x3d94('0x21'),_0xd8efaa,'request\x20sent');logger[_0x3d94('0x22')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0xd8efaa,_0x3d94('0x23'),JSON[_0x3d94('0x24')](_0x4afc92));if(_0x4afc92[_0x3d94('0x25')]){if(_0x4afc92[_0x3d94('0x25')][_0x3d94('0x26')]===0x1f4){logger['error']('ChatInteraction,\x20%s,\x20%s',_0xd8efaa,_0x4afc92[_0x3d94('0x25')][_0x3d94('0x27')]);return _0x22676a(_0x4afc92[_0x3d94('0x25')]['message']);}logger[_0x3d94('0x25')](_0x3d94('0x21'),_0xd8efaa,_0x4afc92[_0x3d94('0x25')][_0x3d94('0x27')]);return _0x540658(_0x4afc92[_0x3d94('0x25')][_0x3d94('0x27')]);}else{logger[_0x3d94('0x20')](_0x3d94('0x21'),_0xd8efaa,_0x3d94('0x23'));_0x540658(_0x4afc92[_0x3d94('0x28')][_0x3d94('0x27')]);}})[_0x3d94('0x29')](function(_0x292976){logger[_0x3d94('0x25')](_0x3d94('0x21'),_0xd8efaa,_0x292976);_0x22676a(_0x292976);});});}function respondWithStatusCode(_0x5b3b31,_0x123183){_0x123183=_0x123183||0xcc;return function(_0x558fd2){if(_0x558fd2){return _0x5b3b31[_0x3d94('0x2a')](_0x123183);}return _0x5b3b31[_0x3d94('0x2b')](_0x123183)[_0x3d94('0x2c')]();};}function respondWithResult(_0x439173,_0x13254f){_0x13254f=_0x13254f||0xc8;return function(_0x82b568){if(_0x82b568){return _0x439173[_0x3d94('0x2b')](_0x13254f)['json'](_0x82b568);}};}function respondWithFilteredResult(_0x584c4a,_0x362642){return function(_0x4813e1){if(_0x4813e1){var _0x4dd410=typeof _0x362642[_0x3d94('0x2d')]==='undefined'&&typeof _0x362642[_0x3d94('0x2e')]===_0x3d94('0x2f');var _0x32403a=_0x4813e1['count'];var _0x2a07b4=_0x4dd410?0x0:_0x362642['offset'];var _0x3d4994=_0x4dd410?_0x4813e1['count']:_0x362642[_0x3d94('0x2d')]+_0x362642[_0x3d94('0x2e')];var _0x29b1ff;if(_0x3d4994>=_0x32403a){_0x3d4994=_0x32403a;_0x29b1ff=0xc8;}else{_0x29b1ff=0xce;}_0x584c4a[_0x3d94('0x2b')](_0x29b1ff);return _0x584c4a['set'](_0x3d94('0x30'),_0x2a07b4+'-'+_0x3d4994+'/'+_0x32403a)['json'](_0x4813e1);}return null;};}function patchUpdates(_0x1f9559){return function(_0xd294fd){try{jsonpatch['apply'](_0xd294fd,_0x1f9559,!![]);}catch(_0x5288da){return BPromise[_0x3d94('0x31')](_0x5288da);}return _0xd294fd[_0x3d94('0x32')]();};}function saveUpdates(_0x273337,_0x5cdb2e){return function(_0x1e6dbc){if(_0x1e6dbc){return _0x1e6dbc[_0x3d94('0x33')](_0x273337)['then'](function(_0x242500){return _0x242500;});}return null;};}function removeEntity(_0x23f3fe,_0x35947b){return function(_0xbda334){if(_0xbda334){return _0xbda334[_0x3d94('0x34')]()['then'](function(){_0x23f3fe[_0x3d94('0x2b')](0xcc)[_0x3d94('0x2c')]();});}};}function handleEntityNotFound(_0x41579e,_0x52bdb9){return function(_0xb493f1){if(!_0xb493f1){_0x41579e[_0x3d94('0x2a')](0x194);}return _0xb493f1;};}function handleError(_0x546658,_0x555ec5){_0x555ec5=_0x555ec5||0x1f4;return function(_0xfe58eb){logger[_0x3d94('0x25')](_0xfe58eb[_0x3d94('0x35')]);if(_0xfe58eb[_0x3d94('0x36')]){delete _0xfe58eb[_0x3d94('0x36')];}_0x546658[_0x3d94('0x2b')](_0x555ec5)[_0x3d94('0x37')](_0xfe58eb);};}function getMustacheRender(_0x12c01a,_0x2e7b97){return Mustache[_0x3d94('0x38')](_0x12c01a,_['merge'](_0x2e7b97[_0x3d94('0x39')],{'contact':_0x2e7b97[_0x3d94('0x3a')],'message':_0x2e7b97[_0x3d94('0x27')],'agent':_0x2e7b97[_0x3d94('0x3b')],'interaction':_0x2e7b97['interaction'],'account':_0x2e7b97[_0x3d94('0x3c')]}))||'';}function getInteractionUsers(_0x2bf3b2,_0x35e0e6){return new BPromise(function(_0x29eaa4,_0x22b7d2){try{if(_0x35e0e6[_0x2bf3b2['id']]){_0x2bf3b2['Users']=_[_0x3d94('0x3d')](_0x35e0e6[_0x2bf3b2['id']],function(_0x462ab6){return{'id':_0x462ab6['id'],'fullname':_0x462ab6[_0x3d94('0x3e')]};});}}catch(_0x485066){_0x22b7d2(_0x485066);}_0x29eaa4(_0x2bf3b2);});}function getInteractionTags(_0x4eee4d,_0x4d8a8f){return new BPromise(function(_0x47905e,_0x3b3550){try{if(_0x4eee4d[_0x3d94('0x3f')]){_0x4eee4d[_0x3d94('0x40')]=[];_0x4eee4d[_0x3d94('0x3f')][_0x3d94('0x41')](',')[_0x3d94('0x42')](function(_0x3a3898){_0x4eee4d['Tags']['push'](_0x4d8a8f[_0x3a3898]);});}delete _0x4eee4d[_0x3d94('0x3f')];}catch(_0x3ced26){_0x3b3550(_0x3ced26);}_0x47905e(_0x4eee4d);});}function updateChatInteraction(_0x512cef,_0x2d0aa2,_0x4af4b6){return new BPromise(function(_0x1361fb,_0x411b5b){return getInteractionUsers(_0x512cef,_0x4af4b6)[_0x3d94('0x1f')](function(_0xacfc44){return getInteractionTags(_0xacfc44,_0x2d0aa2);})[_0x3d94('0x1f')](function(_0x5a9263){_0x1361fb(_0x5a9263);})[_0x3d94('0x29')](function(_0x168771){_0x411b5b(_0x168771);});});}exports[_0x3d94('0x43')]=function(_0x5d5c66,_0x2910ea){var _0x555366={},_0x4bad90={},_0x3f4b32={'count':0x0,'rows':[]};var _0x402132=_[_0x3d94('0x3d')](db[_0x3d94('0x44')]['rawAttributes'],function(_0x323d58){return{'name':_0x323d58['fieldName'],'type':_0x323d58[_0x3d94('0x45')][_0x3d94('0x46')]};});_0x4bad90[_0x3d94('0x47')]=_[_0x3d94('0x3d')](_0x402132,_0x3d94('0x36'));_0x4bad90[_0x3d94('0x48')]=_[_0x3d94('0x49')](_0x5d5c66['query']);_0x4bad90[_0x3d94('0x4a')]=_[_0x3d94('0x4b')](_0x4bad90['model'],_0x4bad90['query']);_0x555366[_0x3d94('0x4c')]=_[_0x3d94('0x4b')](_0x4bad90['model'],qs[_0x3d94('0x4d')](_0x5d5c66[_0x3d94('0x48')][_0x3d94('0x4d')]));_0x555366[_0x3d94('0x4c')]=_0x555366[_0x3d94('0x4c')][_0x3d94('0x4e')]?_0x555366[_0x3d94('0x4c')]:_0x4bad90[_0x3d94('0x47')];if(!_0x5d5c66[_0x3d94('0x48')][_0x3d94('0x4f')](_0x3d94('0x50'))){_0x555366[_0x3d94('0x2e')]=qs[_0x3d94('0x2e')](_0x5d5c66[_0x3d94('0x48')][_0x3d94('0x2e')]);_0x555366['offset']=qs[_0x3d94('0x2d')](_0x5d5c66[_0x3d94('0x48')][_0x3d94('0x2d')]);}_0x555366[_0x3d94('0x51')]=qs[_0x3d94('0x52')](_0x5d5c66[_0x3d94('0x48')][_0x3d94('0x52')]);_0x555366[_0x3d94('0x53')]=qs[_0x3d94('0x4a')](_['pick'](_0x5d5c66[_0x3d94('0x48')],_0x4bad90['filters']),_0x402132);var _0x174eb3=[];var _0x3a7eb0=squel['select']()[_0x3d94('0x54')]('id')['field']('name')[_0x3d94('0x54')]('color')[_0x3d94('0x55')](_0x3d94('0x56'));var _0x5b6061=squel[_0x3d94('0x57')]()['field']('u.id')[_0x3d94('0x54')](_0x3d94('0x58'))[_0x3d94('0x54')](_0x3d94('0x59'))[_0x3d94('0x55')](_0x3d94('0x5a'),'ui')[_0x3d94('0x5b')](_0x3d94('0x5c'),'u',_0x3d94('0x5d'));var _0x584e1d=squel[_0x3d94('0x57')]()[_0x3d94('0x55')](_0x3d94('0x5e'),'i')[_0x3d94('0x5b')](_0x3d94('0x5f'),'c',_0x3d94('0x60'))[_0x3d94('0x5b')](_0x3d94('0x5c'),'o',_0x3d94('0x61'))[_0x3d94('0x5b')](_0x3d94('0x62'),'a','a.id\x20=\x20i.ChatWebsiteId')[_0x3d94('0x5b')]('chat_messages','me',_0x3d94('0x63'))[_0x3d94('0x5b')](_0x3d94('0x64'),'it',_0x3d94('0x65'))[_0x3d94('0x5b')](_0x3d94('0x56'),'t',_0x3d94('0x66'));var _0x169aa1=squel[_0x3d94('0x67')]();var _0x5da38c=[];var _0x519ada=squel[_0x3d94('0x67')]();var _0x4bd97c;if(_0x5d5c66[_0x3d94('0x48')][_0x3d94('0x68')]){_0x4bd97c=as['parseSearch'](_0x5d5c66[_0x3d94('0x48')][_0x3d94('0x68')]);var _0x3cb8f4=_0x4bd97c[_0x3d94('0x69')];for(var _0xcefff5=0x0;_0xcefff5<_0x4bd97c[_0x3d94('0x6a')][_0x3d94('0x4e')];_0xcefff5++){var _0x4b023e=_0x4bd97c[_0x3d94('0x6a')][_0xcefff5];var _0x351ea6='i';var _0x368581=_['find'](_0x402132,[_0x3d94('0x36'),_0x4b023e[_0x3d94('0x54')]]);if(!_0x368581){switch(_0x4b023e[_0x3d94('0x54')]){case _0x3d94('0x6b'):if(_0x4b023e['value']==0x1){_0x584e1d['having']('`'+_0x4b023e[_0x3d94('0x54')]+_0x3d94('0x6c'));}else{_0x584e1d[_0x3d94('0x6d')]('`'+_0x4b023e[_0x3d94('0x54')]+'`\x20>\x200');}break;case _0x3d94('0x6e'):if(_0x4b023e[_0x3d94('0x6f')]==='$substring'){if(_0x4b023e[_0x3d94('0x70')][_0x3d94('0x41')]('\x20')[_0x3d94('0x4e')]>0x1){_0x169aa1[_0x3cb8f4]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x3d94('0x71')](_0x4b023e[_0x3d94('0x70')]),null);}else{var _0x585531='%'+_0x4b023e['value']+'%';_0x169aa1[_0x3cb8f4](_0x3d94('0x72'),_0x585531,_0x585531,_0x585531);}}else{_0x368581=_[_0x3d94('0x73')](_0x402132,['name','ContactId']);_0x4b023e['field']=_0x3d94('0x74');_0x55084e=as[_0x3d94('0x75')](_0x351ea6,_0x368581[_0x3d94('0x45')],_0x4b023e);_0x169aa1[_0x3cb8f4](_0x55084e[_0x3d94('0x76')],_0x55084e[_0x3d94('0x70')]['start'],_0x55084e[_0x3d94('0x70')][_0x3d94('0x2c')]);}break;case _0x3d94('0x77'):var _0x1e8e3d=_0x4b023e[_0x3d94('0x70')][_0x3d94('0x41')](',')['map'](function(_0x30673a){return Number(_0x30673a);});_0x1e8e3d['forEach'](function(_0x1f3551){_0x519ada['or'](_0x3d94('0x78'),'%,'+_0x1f3551+',%');});_0x5da38c=_[_0x3d94('0x79')](_0x5da38c,_0x1e8e3d);break;case _0x3d94('0x7a'):if(_0x4b023e[_0x3d94('0x6f')]===_0x3d94('0x7b')){_0x169aa1[_0x3cb8f4]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x4b023e['value']+'%',null);}else{_0x368581=_[_0x3d94('0x73')](_0x402132,['name','UserId']);_0x4b023e['field']=_0x3d94('0x7c');_0x55084e=as[_0x3d94('0x75')](_0x351ea6,_0x368581[_0x3d94('0x45')],_0x4b023e);_0x169aa1[_0x3cb8f4](_0x55084e[_0x3d94('0x76')],_0x55084e[_0x3d94('0x70')][_0x3d94('0x7d')],_0x55084e[_0x3d94('0x70')][_0x3d94('0x2c')]);}break;case'body':_0x55084e=as[_0x3d94('0x75')]('me',null,_0x4b023e);_0x169aa1[_0x3cb8f4](_0x55084e['text'],_0x55084e[_0x3d94('0x70')][_0x3d94('0x7d')],_0x55084e[_0x3d94('0x70')]['end']);break;}}else{var _0x55084e=as['buildExpression'](_0x351ea6,_0x368581[_0x3d94('0x45')],_0x4b023e);_0x169aa1[_0x3cb8f4](_0x55084e[_0x3d94('0x76')],_0x55084e[_0x3d94('0x70')][_0x3d94('0x7d')],_0x55084e[_0x3d94('0x70')]['end']);}}}else{var _0x5b7316=_(_0x5d5c66[_0x3d94('0x48')])[_0x3d94('0x49')]()[_0x3d94('0x3d')](function(_0x57a4df){return _[_0x3d94('0x7e')](_0x402132,['name',_0x57a4df])?_0x57a4df:undefined;})[_0x3d94('0x7f')]()[_0x3d94('0x70')]();if(!_[_0x3d94('0x80')](_0x5b7316)){_0x5b7316[_0x3d94('0x42')](function(_0x3b42c8){if(_0x3b42c8===_0x3d94('0x81')){_0x584e1d[_0x3d94('0x53')](_0x3d94('0x82'),[][_0x3d94('0x83')](_0x5d5c66[_0x3d94('0x48')][_0x3b42c8]));}else if(_0x3b42c8===_0x3d94('0x84')){var _0xe6cfd1=JSON[_0x3d94('0x85')](_0x5d5c66['query'][_0x3b42c8])[_0x3d94('0x86')];var _0x2819e2=JSON[_0x3d94('0x85')](_0x5d5c66[_0x3d94('0x48')][_0x3b42c8])['$lte'];_0x584e1d[_0x3d94('0x53')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0xe6cfd1,_0x2819e2);}else{if(_0x5d5c66['query'][_0x3b42c8]===_0x3d94('0x87')){_0x584e1d['where']('i.'+_0x3b42c8+_0x3d94('0x88'));}else{_0x584e1d[_0x3d94('0x53')]('i.'+_0x3b42c8+'\x20=\x20?',_0x5d5c66[_0x3d94('0x48')][_0x3b42c8]);}}});}if(_0x5d5c66['query'][_0x3d94('0x89')]){if(_0x5d5c66[_0x3d94('0x48')]['read']==0x1){_0x584e1d['having']('`unreadMessages`\x20=\x200');}else{_0x584e1d[_0x3d94('0x6d')]('`unreadMessages`\x20>\x200');}}if(_0x5d5c66['query'][_0x3d94('0x8a')]){_0x5da38c=_[_0x3d94('0x8b')](_0x5d5c66[_0x3d94('0x48')][_0x3d94('0x8a')])?_0x5d5c66['query'][_0x3d94('0x8a')]:new Array(_0x5d5c66[_0x3d94('0x48')][_0x3d94('0x8a')]);_0x5da38c[_0x3d94('0x42')](function(_0x38b411){_0x519ada['or'](_0x3d94('0x78'),'%,'+_0x38b411+',%');});}if(_0x5d5c66['query'][_0x3d94('0x8c')]){var _0x6cfc19=_0x5d5c66[_0x3d94('0x48')][_0x3d94('0x8c')][_0x3d94('0x8d')]('\x5c','\x5c\x5c')[_0x3d94('0x8d')](/'/g,'\x27\x27');if(qs[_0x3d94('0x8e')](_0x6cfc19)){_0x169aa1['or'](_0x3d94('0x8f'),_0x6cfc19+'%');}else{_0x169aa1['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x6cfc19))['or'](_0x3d94('0x90'),_0x6cfc19+'%');}}}_0x584e1d[_0x3d94('0x53')](_0x169aa1);_0x584e1d[_0x3d94('0x91')]('i.id');var _0x43a00e={'type':db[_0x3d94('0x92')][_0x3d94('0x93')][_0x3d94('0x94')],'raw':!![]};var _0x860ee5=_0x584e1d['clone']();_0x860ee5['field'](_0x3d94('0x95'));_0x860ee5[_0x3d94('0x54')](_0x3d94('0x96'),_0x3d94('0x6b'));if(_0x555366[_0x3d94('0x51')]){_0x555366[_0x3d94('0x51')][_0x3d94('0x42')](function(_0x3bcc86){var _0x462e88=_0x3bcc86[0x0]===_0x3d94('0x97')?_0x3bcc86[0x0]:'i.'+_0x3bcc86[0x0];_0x584e1d[_0x3d94('0x51')](_0x462e88,_0x3bcc86[0x1]===_0x3d94('0x98')?![]:!![]);});}if(!_[_0x3d94('0x80')](_0x5da38c)){_0x584e1d['having'](_0x519ada);_0x860ee5[_0x3d94('0x53')](_0x3d94('0x99'),_0x5da38c);}BPromise['resolve']()['then'](function(){if(!_0x4bd97c){if(_0x5d5c66[_0x3d94('0x48')][_0x3d94('0x81')])return;_0x860ee5[_0x3d94('0x53')](_0x3d94('0x9a'));_0x584e1d['where']('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');return;}if(_0x5d5c66[_0x3d94('0x9b')][_0x3d94('0x9c')]!==_0x3d94('0x3b'))return;return _0x5d5c66[_0x3d94('0x9b')][_0x3d94('0x9d')]({'attributes':['id'],'raw':!![]})['then'](function(_0x38975f){if(_['isEmpty'](_0x38975f)){_0x860ee5[_0x3d94('0x53')](_0x3d94('0x9e'));_0x584e1d[_0x3d94('0x53')]('i.ChatWebsiteId\x20IS\x20NULL');}else{_0x860ee5[_0x3d94('0x53')](_0x3d94('0x82'),_['map'](_0x38975f,'id'));_0x584e1d[_0x3d94('0x53')]('i.ChatWebsiteId\x20IN\x20?',_[_0x3d94('0x3d')](_0x38975f,'id'));}});})[_0x3d94('0x1f')](function(){if(_0x5d5c66[_0x3d94('0x9b')]['role']===_0x3d94('0x3b')&&!_0x4bd97c&&!_0x5d5c66[_0x3d94('0x48')][_0x3d94('0x81')])return[];return db['sequelize'][_0x3d94('0x48')](_0x860ee5[_0x3d94('0x9f')](),_0x43a00e);})[_0x3d94('0x1f')](function(_0x1f0f6f){_0x3f4b32[_0x3d94('0xa0')]=_0x1f0f6f[_0x3d94('0x4e')];if(_0x3f4b32[_0x3d94('0xa0')]===0x0)return[];return db[_0x3d94('0xa1')]['query'](_0x3a7eb0[_0x3d94('0x9f')](),_0x43a00e)[_0x3d94('0x1f')](function(_0x227d15){_0x174eb3=_[_0x3d94('0xa2')](_0x227d15,'id');_0x43a00e=_[_0x3d94('0xa3')](_0x43a00e,{'model':db[_0x3d94('0x44')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5d5c66['query'][_0x3d94('0x4d')]){_0x555366[_0x3d94('0x4c')][_0x3d94('0x42')](function(_0x59b62b){_0x584e1d[_0x3d94('0x54')]('i.'+_0x59b62b);});}else{_0x584e1d['field'](_0x3d94('0x96'),_0x3d94('0x6b'));_0x584e1d['field'](_0x3d94('0xa4'),_0x3d94('0xa5'));_0x584e1d['field']('a.mandatoryDisposition',_0x3d94('0xa6'));_0x584e1d[_0x3d94('0x54')]('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName');_0x584e1d['field'](_0x3d94('0xa7'));_0x584e1d[_0x3d94('0x54')](_0x3d94('0xa8'),_0x3d94('0xa9'));_0x584e1d[_0x3d94('0x54')]('c.lastName',_0x3d94('0xaa'));_0x584e1d[_0x3d94('0x54')](_0x3d94('0xab'),'Contact.email');_0x584e1d[_0x3d94('0x54')]('c.phone',_0x3d94('0xac'));_0x584e1d[_0x3d94('0x54')](_0x3d94('0xad'),_0x3d94('0xae'));_0x584e1d[_0x3d94('0x54')]('c.fax','Contact.fax');_0x584e1d[_0x3d94('0x54')](_0x3d94('0xaf'),'Owner.fullname');_0x584e1d[_0x3d94('0x54')]('o.internal',_0x3d94('0xb0'));_0x584e1d[_0x3d94('0x54')](_0x3d94('0xb1'),'TagIds');}if(_0x555366[_0x3d94('0x2e')])_0x584e1d['limit'](_0x555366[_0x3d94('0x2e')]);if(_0x555366[_0x3d94('0x2d')])_0x584e1d[_0x3d94('0x2d')](_0x555366[_0x3d94('0x2d')]);return db['sequelize']['query'](_0x584e1d[_0x3d94('0x9f')](),_0x43a00e);})[_0x3d94('0x1f')](function(_0x1c2092){if(_0x1c2092[_0x3d94('0x4e')]>0x0)_0x5b6061['where'](_0x3d94('0xb2'),_['map'](_0x1c2092,'id'));return db['sequelize']['query'](_0x5b6061[_0x3d94('0x9f')](),_0x43a00e)[_0x3d94('0x1f')](function(_0x3706ea){var _0xcd36ab=_[_0x3d94('0xb3')](_0x3706ea,_0x3d94('0xb4'));var _0x33af12=[];_0x1c2092[_0x3d94('0x42')](function(_0x2e2f9f){_0x33af12[_0x3d94('0xb5')](updateChatInteraction(_0x2e2f9f,_0x174eb3,_0xcd36ab));});return BPromise[_0x3d94('0xb6')](_0x33af12);});});})[_0x3d94('0x1f')](function(_0x42c91f){_0x3f4b32[_0x3d94('0xb7')]=_0x42c91f;return _0x3f4b32;})[_0x3d94('0x1f')](respondWithFilteredResult(_0x2910ea,_0x555366))['catch'](handleError(_0x2910ea,null));};exports['show']=function(_0x14ec29,_0x3ff668){var _0x1837c9={'raw':![],'where':{'id':_0x14ec29[_0x3d94('0xb8')]['id']}},_0x41251d={};_0x41251d[_0x3d94('0x47')]=_[_0x3d94('0x49')](db['ChatInteraction'][_0x3d94('0xb9')]);_0x41251d[_0x3d94('0x48')]=_[_0x3d94('0x49')](_0x14ec29[_0x3d94('0x48')]);_0x41251d[_0x3d94('0x4a')]=_[_0x3d94('0x4b')](_0x41251d['model'],_0x41251d['query']);_0x1837c9[_0x3d94('0x4c')]=_['intersection'](_0x41251d[_0x3d94('0x47')],qs[_0x3d94('0x4d')](_0x14ec29[_0x3d94('0x48')][_0x3d94('0x4d')]));_0x1837c9[_0x3d94('0x4c')]=_0x1837c9[_0x3d94('0x4c')][_0x3d94('0x4e')]?_0x1837c9[_0x3d94('0x4c')]:_0x41251d['model'];if(_0x14ec29[_0x3d94('0x48')][_0x3d94('0xba')]){_0x1837c9[_0x3d94('0xbb')]=[{'all':!![]}];}_0x1837c9=_[_0x3d94('0xa3')]({},_0x1837c9,_0x14ec29[_0x3d94('0xbc')]);return db[_0x3d94('0x44')][_0x3d94('0x73')](_0x1837c9)[_0x3d94('0x1f')](handleEntityNotFound(_0x3ff668,null))[_0x3d94('0x1f')](respondWithResult(_0x3ff668,null))[_0x3d94('0x29')](handleError(_0x3ff668,null));};exports[_0x3d94('0xbd')]=function(_0x26c8ef,_0x17b789){return db[_0x3d94('0x44')][_0x3d94('0xbd')](_0x26c8ef[_0x3d94('0x39')],{})[_0x3d94('0x1f')](respondWithResult(_0x17b789,0xc9))[_0x3d94('0x29')](handleError(_0x17b789,null));};exports[_0x3d94('0x33')]=function(_0xe5f109,_0xb55889){if(_0xe5f109['body']['id']){delete _0xe5f109[_0x3d94('0x39')]['id'];}return db[_0x3d94('0x44')][_0x3d94('0x73')]({'where':{'id':_0xe5f109[_0x3d94('0xb8')]['id']}})[_0x3d94('0x1f')](handleEntityNotFound(_0xb55889,null))[_0x3d94('0x1f')](saveUpdates(_0xe5f109['body'],null))[_0x3d94('0x1f')](respondWithResult(_0xb55889,null))[_0x3d94('0x29')](handleError(_0xb55889,null));};exports[_0x3d94('0x34')]=function(_0x3242ea,_0x17a478){return db[_0x3d94('0x44')]['find']({'where':{'id':_0x3242ea[_0x3d94('0xb8')]['id']}})[_0x3d94('0x1f')](handleEntityNotFound(_0x17a478,null))['then'](removeEntity(_0x17a478,null))['catch'](handleError(_0x17a478,null));};exports['describe']=function(_0x3e1139,_0x77b79d){return db[_0x3d94('0x44')][_0x3d94('0xbe')]()[_0x3d94('0x1f')](respondWithResult(_0x77b79d,null))['catch'](handleError(_0x77b79d,null));};exports[_0x3d94('0xbf')]=function(_0x36499a,_0xd8488f){var _0x669d83=_0x36499a[_0x3d94('0xb8')]['id'];var _0x2c004f;var _0x5d10af;var _0x167d4c;return db['ChatInteraction'][_0x3d94('0xc0')]({'where':{'id':_0x669d83}})[_0x3d94('0x1f')](function(_0x34e156){_0x2c004f=_0x34e156;return db[_0x3d94('0xc1')]['findOne']({'where':{'id':_0x34e156[_0x3d94('0x81')]},'attributes':['id',_0x3d94('0xc2'),_0x3d94('0xc3'),_0x3d94('0xc4'),'vidaooNote','vidaooMetadata'],'raw':!![]});})[_0x3d94('0x1f')](function(_0x24d10c){if(_0x24d10c&&_0x24d10c[_0x3d94('0xc2')]&&_0x24d10c['vidaooEscalation']){_0x5d10af=_0x24d10c;var _0x2fac35={'interaction':{'id':_0x669d83},'agent':{'id':_0x36499a['user']['id'],'name':_0x36499a['user'][_0x3d94('0x36')],'fullname':_0x36499a[_0x3d94('0x9b')]['fullname'],'email':_0x36499a[_0x3d94('0x9b')][_0x3d94('0xc5')]},'contact':_0x36499a[_0x3d94('0x39')]['contact'],'account':_0x36499a[_0x3d94('0x39')][_0x3d94('0x3c')]};var _0x579998={'rejectUnauthorized':![],'method':'POST','url':_0x3d94('0xc6'),'headers':{'X-APIKEY':_0x24d10c[_0x3d94('0xc2')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x36499a[_0x3d94('0x9b')][_0x3d94('0xc5')]],'buttons':null,'topic':_0x5d10af[_0x3d94('0xc4')],'note':_[_0x3d94('0xc7')](_0x5d10af['vidaooNote'])?null:getMustacheRender(_0x5d10af['vidaooNote'],_0x2fac35),'metadata':null},'redirect':'follow','json':!![]};try{if(!_['isNull'](_0x5d10af[_0x3d94('0xc8')])){var _0x3950d1=getMustacheRender(_0x5d10af[_0x3d94('0xc8')],_0x2fac35);var _0x1073d3=JSON[_0x3d94('0x85')](_0x3950d1);_0x579998[_0x3d94('0x39')][_0x3d94('0xc9')]=_0x1073d3;}}catch(_0x23c9d4){throw new db[(_0x3d94('0x92'))][(_0x3d94('0xca'))](_0x3d94('0xcb'));}return rp(_0x579998);}else{throw new db['Sequelize'][(_0x3d94('0xca'))]('Error\x20in\x20Vidaoo\x20configuration');}})[_0x3d94('0x1f')](function(_0x149fab){_0x167d4c=_0x149fab;if(_0x167d4c['id']){var _0x15cda1={'body':_0x167d4c[_0x3d94('0xcc')],'ChatWebsiteId':_0x5d10af['id'],'ChatInteractionId':_0x2c004f['id'],'direction':_0x3d94('0xcd'),'UserId':_0x36499a[_0x3d94('0x9b')]['id']};return db[_0x3d94('0xce')][_0x3d94('0xbd')](_0x15cda1,{});}else{throw new db['Sequelize'][(_0x3d94('0xca'))](_0x3d94('0xcf'));}})[_0x3d94('0x1f')](function(){return _0x2c004f[_0x3d94('0xd0')]({'vidaooSessionId':_0x167d4c['id']});})[_0x3d94('0x1f')](respondWithResult(_0xd8488f,null))[_0x3d94('0x29')](handleError(_0xd8488f,null));};exports[_0x3d94('0xd1')]=function(_0x1b7ad4,_0x483e7a){if(_0x1b7ad4[_0x3d94('0x39')]['id']){delete _0x1b7ad4[_0x3d94('0x39')]['id'];}return db[_0x3d94('0x44')][_0x3d94('0x73')]({'where':{'id':_0x1b7ad4[_0x3d94('0xb8')]['id']},'include':[{'model':db[_0x3d94('0xd2')],'as':_0x3d94('0x6e')}]})[_0x3d94('0x1f')](handleEntityNotFound(_0x483e7a,null))['then'](saveUpdates(_0x1b7ad4[_0x3d94('0x39')],null))[_0x3d94('0x1f')](respondWithResult(_0x483e7a,null))['catch'](handleError(_0x483e7a,null));};exports[_0x3d94('0xd3')]=function(_0x11378e,_0x24e1c8,_0xaedee0){if(_0x11378e[_0x3d94('0x39')]['id']){delete _0x11378e[_0x3d94('0x39')]['id'];}return db[_0x3d94('0x44')][_0x3d94('0x73')]({'where':{'id':_0x11378e[_0x3d94('0xb8')]['id']}})[_0x3d94('0x1f')](function(_0xf982a2){if(!_0xf982a2){logger[_0x3d94('0x25')](_0x3d94('0xd4'),_0x3d94('0xd3'),0x194,_0x3d94('0xd5'));_0x24e1c8[_0x3d94('0x2a')](0x194);}else{if(_0xf982a2[_0x3d94('0x7c')]){throw new db[(_0x3d94('0x92'))][(_0x3d94('0xca'))](_0x3d94('0xd6'));}}return _0xf982a2;})[_0x3d94('0x1f')](function(_0x4353ca){if(_0x4353ca){return _0x4353ca[_0x3d94('0x33')]({'closed':_0x11378e[_0x3d94('0x39')][_0x3d94('0xd7')],'disposition':_0x11378e['body']['disposition']})[_0x3d94('0x1f')](function(_0x54f366){return _0x54f366;});}})['then'](function(_0x199fa0){return respondWithRpcPromise(_0x3d94('0xd8'),_0x3d94('0xd3'),_0x11378e[_0x3d94('0x39')],client9004);})[_0x3d94('0x1f')](respondWithResult(_0x24e1c8,null))['catch'](handleError(_0x24e1c8,null));};exports[_0x3d94('0xd9')]=function(_0x5c0138,_0x41fd2c,_0x3b5b04){_0x5c0138[_0x3d94('0x39')][_0x3d94('0x36')]=_0x5c0138[_0x3d94('0xda')][_0x3d94('0xdb')];_0x5c0138[_0x3d94('0x39')][_0x3d94('0xdc')]=_0x5c0138[_0x3d94('0xda')][_0x3d94('0xdd')];_0x5c0138[_0x3d94('0x39')][_0x3d94('0x45')]=_0x5c0138[_0x3d94('0xda')][_0x3d94('0xde')];return db[_0x3d94('0xdf')]['create'](_0x5c0138['body'])['then'](respondWithResult(_0x41fd2c,0xc9))[_0x3d94('0x29')](handleError(_0x41fd2c,null));};exports[_0x3d94('0xe0')]=function(_0x59118c,_0x2105c2,_0x380071){return db['ChatInteraction'][_0x3d94('0xc0')]({'where':{'id':_0x59118c[_0x3d94('0xb8')]['id']},'raw':!![]})[_0x3d94('0x1f')](handleEntityNotFound(_0x2105c2,null))[_0x3d94('0x1f')](function(_0x3d96c5){if(_0x3d96c5){if(_0x3d96c5['closed']){return _0x2105c2[_0x3d94('0x2b')](0x193)[_0x3d94('0xe1')]({'status':0x193,'message':_0x3d94('0xe2')});}return db[_0x3d94('0xdf')][_0x3d94('0xc0')]({'where':{'id':_0x59118c[_0x3d94('0x48')][_0x3d94('0xe3')]},'raw':!![]})[_0x3d94('0x1f')](handleEntityNotFound(_0x2105c2,null));}})[_0x3d94('0x1f')](function(_0x4d54e7){if(_0x4d54e7){var _0x26bf00=_0x4d54e7[_0x3d94('0xe4')]!==null;var _0x23bf47=path[_0x3d94('0xe5')](config[_0x3d94('0xe6')],_0x3d94('0xe7'));if(_0x26bf00){_0x23bf47=path['join'](_0x23bf47,'offline-chat/');}var _0x336a7d=path[_0x3d94('0xe5')](_0x23bf47,_0x4d54e7['basename']);return _0x2105c2[_0x3d94('0xe8')](_0x336a7d);}})[_0x3d94('0x29')](handleError(_0x2105c2,null));};exports[_0x3d94('0xe9')]=function(_0x37680e,_0x397e85){var _0x5c192c=null;var _0x180595=null;var _0x4a7185=null;var _0x3b0395=null;if(_0x37680e['body']['id']){delete _0x37680e['body']['id'];}if(_0x37680e[_0x3d94('0x39')][_0x3d94('0xea')]){_0x3b0395=path[_0x3d94('0xe5')](config[_0x3d94('0xe6')],_0x3d94('0xeb'),util['format'](_0x3d94('0xec'),Date['now']()));_0x37680e['body']['pathTranscript']=_0x3b0395;}return db[_0x3d94('0x44')]['find']({'where':{'id':_0x37680e[_0x3d94('0xb8')]['id']},'include':[{'model':db[_0x3d94('0xce')],'as':_0x3d94('0xed'),'include':[{'model':db[_0x3d94('0x7a')],'as':_0x3d94('0x7a')}]}]})['then'](handleEntityNotFound(_0x397e85,null))[_0x3d94('0x1f')](saveUpdates(_0x37680e[_0x3d94('0x39')],null))[_0x3d94('0x1f')](function(_0x283758){if(_0x283758){_0x5c192c=_0x283758;return db[_0x3d94('0xc1')][_0x3d94('0x73')]({'where':{'id':_0x5c192c['ChatWebsiteId']}});}})[_0x3d94('0x1f')](function(_0x593683){if(_0x593683){_0x4a7185=_0x593683;return db['CmContact'][_0x3d94('0x73')]({'where':{'id':_0x5c192c['ContactId']}});}})[_0x3d94('0x1f')](function(_0xc61003){if(_0xc61003){_0x180595=_0xc61003;if(_0x3b0395){var _0x40b159=null;for(var _0x5262af=0x1;_0x5262af<_0x5c192c['Messages'][_0x3d94('0x4e')];++_0x5262af){_0x40b159=_0x5c192c['Messages'][_0x5262af];var _0x289577=_0x40b159[_0x3d94('0x7c')]?util['format'](_0x3d94('0xee'),_0x4a7185[_0x3d94('0xef')],_0x40b159[_0x3d94('0x7c')]):_0x3d94('0xf0');var _0x4282b3=_0x37680e[_0x3d94('0x39')][_0x3d94('0xf1')]||util[_0x3d94('0xf2')](_0x3d94('0xee'),_0x3d94('0xf3'),_0x40b159[_0x3d94('0x74')]);switch(_0x4a7185[_0x3d94('0xf4')]){case _0x3d94('0xf5'):_0x289577=_0x40b159[_0x3d94('0x7c')]?util[_0x3d94('0xf2')](_0x3d94('0xee'),_0x4a7185[_0x3d94('0xef')],_0x40b159['UserId']):_0x3d94('0xf0');break;case _0x3d94('0xf6'):_0x289577=_0x40b159[_0x3d94('0x7c')]?_0x40b159[_0x3d94('0x7a')][_0x3d94('0xf7')]||_0x40b159[_0x3d94('0x7a')][_0x3d94('0x3e')]:'System';break;case'agent_fullname':_0x289577=_0x40b159['UserId']?_0x40b159[_0x3d94('0x7a')][_0x3d94('0x3e')]:'System';break;default:_0x289577=_0x40b159['UserId']?util[_0x3d94('0xf2')](_0x3d94('0xee'),_0x4a7185[_0x3d94('0xef')],_0x40b159[_0x3d94('0x7c')]):'System';}var _0x5ac9db=util['format'](_0x3d94('0xf8'),moment(_0x40b159['createdAt'])['format'](_0x3d94('0xf9')),_0x40b159[_0x3d94('0xfa')]==='in'?_0x4282b3:_0x289577,_0x40b159[_0x3d94('0x39')]);if(!_0x40b159[_0x3d94('0xfb')]){fs[_0x3d94('0xfc')](_0x3b0395,_0x5ac9db);}}return db[_0x3d94('0xfd')][_0x3d94('0xc0')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':'Smtp','raw':!![]}]});}}})[_0x3d94('0x1f')](function(_0x29a79a){if(_0x29a79a&&_0x29a79a[_0x3d94('0xfe')]&&_0x37680e[_0x3d94('0x39')]){var _0x1be31a={'tls':{'rejectUnauthorized':![]}};if(_0x29a79a[_0x3d94('0xfe')][_0x3d94('0xff')]){_0x1be31a['service']=_0x29a79a[_0x3d94('0xfe')]['service'];}else{_0x1be31a['host']=_0x29a79a['Smtp'][_0x3d94('0x100')];_0x1be31a[_0x3d94('0x101')]=_0x29a79a[_0x3d94('0xfe')][_0x3d94('0x101')];_0x1be31a['secure']=_0x29a79a[_0x3d94('0xfe')]['secure'];}if(_0x29a79a[_0x3d94('0xfe')][_0x3d94('0x102')]){_0x1be31a[_0x3d94('0x103')]={'user':_0x29a79a['Smtp'][_0x3d94('0x9b')],'pass':_0x29a79a[_0x3d94('0xfe')]['pass']};}return respondWithRpcPromise('SendMail',_0x3d94('0x104'),{'account':_0x1be31a,'message':{'from':util[_0x3d94('0xf2')](_0x3d94('0x105'),_0x29a79a[_0x3d94('0x36')],_0x29a79a['email']||_0x29a79a['Smtp']['user']),'to':_0x37680e[_0x3d94('0x39')][_0x3d94('0xea')],'subject':_0x3d94('0x106'),'text':util[_0x3d94('0xf2')](_0x3d94('0x107'),_0x37680e[_0x3d94('0x39')][_0x3d94('0xea')]),'attachments':[{'path':_0x3b0395}]}})['then'](function(){return _0x5c192c;})['catch'](function(_0xcd4f10){console[_0x3d94('0x25')](_0xcd4f10);});}else{return _0x5c192c;}})[_0x3d94('0x1f')](respondWithStatusCode(_0x397e85,0xc8))[_0x3d94('0x29')](handleError(_0x397e85,null));};exports[_0x3d94('0x108')]=function(_0x4d9b7a,_0x4514fa,_0x29fd6b){return db[_0x3d94('0xce')][_0x3d94('0x73')]({'where':{'id':_0x4d9b7a[_0x3d94('0xb8')]['id']}})[_0x3d94('0x1f')](handleEntityNotFound(_0x4514fa,null))['then'](function(_0xaa7525){if(_0xaa7525){return _0xaa7525[_0x3d94('0x108')](_0x4d9b7a['body'][_0x3d94('0x109')],_[_0x3d94('0x10a')](_0x4d9b7a['body'],[_0x3d94('0x109'),'id'])||{});}})['then'](respondWithResult(_0x4514fa,null))[_0x3d94('0x29')](handleError(_0x4514fa,null));};exports[_0x3d94('0x10b')]=function(_0xabb45a,_0x381b5a,_0x5e935e){var _0x317583={'raw':![],'where':{}};var _0x4733ad={};var _0x5e7388={'count':0x0,'rows':[]};return db['ChatInteraction']['findOne']({'where':{'id':_0xabb45a[_0x3d94('0xb8')]['id']}})[_0x3d94('0x1f')](handleEntityNotFound(_0x381b5a,null))[_0x3d94('0x1f')](function(_0x5e3823){if(_0x5e3823){_0x4733ad[_0x3d94('0x47')]=_[_0x3d94('0x49')](db['ChatMessage'][_0x3d94('0xb9')]);_0x4733ad[_0x3d94('0x48')]=_[_0x3d94('0x49')](_0xabb45a[_0x3d94('0x48')]);_0x4733ad[_0x3d94('0x4a')]=_[_0x3d94('0x4b')](_0x4733ad[_0x3d94('0x47')],_0x4733ad[_0x3d94('0x48')]);_0x317583[_0x3d94('0x4c')]=_[_0x3d94('0x4b')](_0x4733ad[_0x3d94('0x47')],qs[_0x3d94('0x4d')](_0xabb45a[_0x3d94('0x48')][_0x3d94('0x4d')]));_0x317583[_0x3d94('0x4c')]=_0x317583[_0x3d94('0x4c')][_0x3d94('0x4e')]?_0x317583['attributes']:_0x4733ad['model'];if(!_0xabb45a[_0x3d94('0x48')][_0x3d94('0x4f')](_0x3d94('0x50'))){_0x317583['limit']=qs['limit'](_0xabb45a[_0x3d94('0x48')][_0x3d94('0x2e')]);_0x317583[_0x3d94('0x2d')]=qs['offset'](_0xabb45a[_0x3d94('0x48')][_0x3d94('0x2d')]);}_0x317583[_0x3d94('0x51')]=qs[_0x3d94('0x52')](_0xabb45a['query'][_0x3d94('0x52')]);_0x317583[_0x3d94('0x53')]=qs[_0x3d94('0x4a')](_[_0x3d94('0x10c')](_0xabb45a[_0x3d94('0x48')],_0x4733ad[_0x3d94('0x4a')]));_0x317583['where'][_0x3d94('0xb4')]=_0x5e3823['id'];if(_0xabb45a[_0x3d94('0x48')][_0x3d94('0x8c')]){_0x317583['where']=_[_0x3d94('0xa3')](_0x317583[_0x3d94('0x53')],{'$or':_[_0x3d94('0x3d')](_0x317583[_0x3d94('0x4c')],function(_0x4bd3fd){var _0x4279a6={};_0x4279a6[_0x4bd3fd]={'$like':'%'+_0xabb45a[_0x3d94('0x48')]['filter']+'%'};return _0x4279a6;})});}if(_0xabb45a[_0x3d94('0x48')][_0x3d94('0x86')]){var _0x32f992=_0xabb45a['query'][_0x3d94('0x86')]['split'](',');var _0x4ae7d9={};_0x4ae7d9[_0x32f992[0x0]]={'$gte':moment(_0x32f992[0x1])[_0x3d94('0xf2')](_0x3d94('0x10d'))};_0x317583['where']=_['merge'](_0x317583[_0x3d94('0x53')],_0x4ae7d9);}_0x317583=_['merge']({},_0x317583,_0xabb45a[_0x3d94('0xbc')]);return db[_0x3d94('0xce')][_0x3d94('0xa0')]({'where':_0x317583[_0x3d94('0x53')]})[_0x3d94('0x1f')](function(_0x249f16){_0x5e7388[_0x3d94('0xa0')]=_0x249f16;if(_0xabb45a[_0x3d94('0x48')][_0x3d94('0xba')]){_0x317583['include']=[{'all':!![]}];}return db[_0x3d94('0xce')][_0x3d94('0x10e')](_0x317583);})['then'](function(_0x3e6878){_0x5e7388['rows']=_0x3e6878;return _0x5e7388;});}})[_0x3d94('0x1f')](respondWithFilteredResult(_0x381b5a,_0x317583))[_0x3d94('0x29')](handleError(_0x381b5a,null));};exports['getMyMessages']=function(_0x1e3d22,_0x562c3f,_0x5ebe77){var _0xf8f4e7={'where':{}},_0x3fd9a9={},_0x1606b6={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x3d94('0xc0')]({'where':{'id':_0x1e3d22[_0x3d94('0xb8')]['id']}})[_0x3d94('0x1f')](handleEntityNotFound(_0x562c3f,null))[_0x3d94('0x1f')](function(_0x4c76f3){if(_0x4c76f3){_0x3fd9a9[_0x3d94('0x47')]=_[_0x3d94('0x49')](db[_0x3d94('0xce')][_0x3d94('0xb9')]);_0x3fd9a9[_0x3d94('0x48')]=_['keys'](_0x1e3d22['query']);_0x3fd9a9['filters']=_[_0x3d94('0x4b')](_0x3fd9a9[_0x3d94('0x47')],_0x3fd9a9[_0x3d94('0x48')]);_0xf8f4e7['attributes']=_[_0x3d94('0x4b')](_0x3fd9a9[_0x3d94('0x47')],qs['fields'](_0x1e3d22[_0x3d94('0x48')][_0x3d94('0x4d')]));_0xf8f4e7[_0x3d94('0x4c')]=_0xf8f4e7[_0x3d94('0x4c')][_0x3d94('0x4e')]?_0xf8f4e7[_0x3d94('0x4c')]:_0x3fd9a9['model'];if(!_0x1e3d22['query'][_0x3d94('0x4f')](_0x3d94('0x50'))){_0xf8f4e7['limit']=qs[_0x3d94('0x2e')](_0x1e3d22[_0x3d94('0x48')][_0x3d94('0x2e')]);_0xf8f4e7[_0x3d94('0x2d')]=qs[_0x3d94('0x2d')](_0x1e3d22[_0x3d94('0x48')]['offset']);}_0xf8f4e7[_0x3d94('0x51')]=qs[_0x3d94('0x52')](_0x1e3d22[_0x3d94('0x48')][_0x3d94('0x52')]);_0xf8f4e7['where']=qs[_0x3d94('0x4a')](_[_0x3d94('0x10c')](_0x1e3d22['query'],_0x3fd9a9[_0x3d94('0x4a')]));_0xf8f4e7[_0x3d94('0x53')][_0x3d94('0xb4')]=_0x4c76f3['id'];if(_0x1e3d22[_0x3d94('0x48')][_0x3d94('0x8c')]){_0xf8f4e7[_0x3d94('0x53')]=_[_0x3d94('0xa3')](_0xf8f4e7[_0x3d94('0x53')],{'$or':_[_0x3d94('0x3d')](_0xf8f4e7[_0x3d94('0x4c')],function(_0x5829be){var _0x56894f={};_0x56894f[_0x5829be]={'$like':'%'+_0x1e3d22[_0x3d94('0x48')][_0x3d94('0x8c')]+'%'};return _0x56894f;})});}_0xf8f4e7[_0x3d94('0x53')][_0x3d94('0xfb')]=![];if(_0x1e3d22['query']['id']){_0xf8f4e7[_0x3d94('0x53')]['id']={'$gt':_0x1e3d22[_0x3d94('0x48')]['id']};}_0xf8f4e7=_[_0x3d94('0xa3')]({},_0xf8f4e7,_0x1e3d22['options']);return db[_0x3d94('0xce')][_0x3d94('0xa0')]({'where':_0xf8f4e7[_0x3d94('0x53')]})[_0x3d94('0x1f')](function(_0x289380){_0x1606b6[_0x3d94('0xa0')]=_0x289380;_0xf8f4e7[_0x3d94('0xbb')]=[];if(_0x1e3d22['query'][_0x3d94('0x10f')]){_0xf8f4e7['include'][_0x3d94('0xb5')]({'model':db['User'],'as':_0x3d94('0x7a'),'attributes':['id',_0x3d94('0x3e'),'alias']});}if(_0x1e3d22[_0x3d94('0x48')]['includeAll']){_0xf8f4e7[_0x3d94('0xbb')]=[{'all':!![]}];}return db['ChatMessage']['findAll'](_0xf8f4e7);})[_0x3d94('0x1f')](function(_0x436e01){_0x1606b6[_0x3d94('0xb7')]=_0x436e01;return _0x1606b6;});}})[_0x3d94('0x1f')](respondWithFilteredResult(_0x562c3f,_0xf8f4e7))[_0x3d94('0x29')](handleError(_0x562c3f,null));};exports[_0x3d94('0x110')]=function(_0xfb94d4,_0x1ef614,_0x137d04){return db[_0x3d94('0x44')][_0x3d94('0x73')]({'where':{'id':_0xfb94d4[_0x3d94('0xb8')]['id']}})['then'](handleEntityNotFound(_0x1ef614,null))[_0x3d94('0x1f')](function(_0x28aad1){if(_0x28aad1){return _0x28aad1[_0x3d94('0x111')](_0xfb94d4[_0x3d94('0x39')]['ids'],_['omit'](_0xfb94d4[_0x3d94('0x39')],[_0x3d94('0x109'),'id'])||{})[_0x3d94('0x112')](function(){return db[_0x3d94('0x77')][_0x3d94('0x10e')]({'attributes':['id','name','color'],'where':{'id':_0xfb94d4[_0x3d94('0x39')]['ids']}});})[_0x3d94('0x1f')](function(_0xc1537){socket[_0x3d94('0x113')](_0x3d94('0x114'),{'id':Number(_0xfb94d4[_0x3d94('0xb8')]['id']),'tags':_0xc1537||[]});return{'id':Number(_0xfb94d4[_0x3d94('0xb8')]['id']),'tags':_0xc1537||[]};});}})['then'](respondWithResult(_0x1ef614,null))[_0x3d94('0x29')](handleError(_0x1ef614,null));};exports[_0x3d94('0x115')]=function(_0x4aa6e6,_0x18f2db,_0x16082f){return db[_0x3d94('0x44')][_0x3d94('0x73')]({'where':{'id':_0x4aa6e6['params']['id']}})['then'](handleEntityNotFound(_0x18f2db,null))[_0x3d94('0x1f')](function(_0x1e480b){if(_0x1e480b){return _0x1e480b[_0x3d94('0x115')](_0x4aa6e6[_0x3d94('0x48')][_0x3d94('0x109')]);}})[_0x3d94('0x1f')](respondWithStatusCode(_0x18f2db,null))[_0x3d94('0x29')](handleError(_0x18f2db,null));};exports[_0x3d94('0xe8')]=function(_0x4147d5,_0x54d72a){var _0x31ec36=moment()[_0x3d94('0x116')]()['toString']();var _0x4897f6=path[_0x3d94('0xe5')](config['root'],'server',_0x3d94('0x117'),_0x3d94('0x118'));var _0x17f392=path[_0x3d94('0xe5')](config[_0x3d94('0xe6')],'server',_0x3d94('0x117'),_0x3d94('0x119'));var _0xceded9=path[_0x3d94('0xe5')](_0x4897f6,_0x31ec36);var _0x77078d=util[_0x3d94('0xf2')](_0x3d94('0x11a'),_0x4147d5[_0x3d94('0xb8')]['id'],_0x31ec36);var _0x27008c=path[_0x3d94('0xe5')](_0x4897f6,_0x77078d);var _0x464735=[];_0x464735[_0x3d94('0xb5')]({'model':db[_0x3d94('0x7a')],'as':'User','attributes':['id',_0x3d94('0x3e')],'raw':!![]});_0x464735[_0x3d94('0xb5')]({'model':db[_0x3d94('0xd2')],'as':'Contact','attributes':['id',_0x3d94('0x11b'),_0x3d94('0x11c')],'raw':!![]});if(_0x4147d5[_0x3d94('0x48')][_0x3d94('0x119')]){_0x464735[_0x3d94('0xb5')]({'model':db[_0x3d94('0xdf')],'as':_0x3d94('0xdf'),'raw':!![]});}var _0x554203=[{'model':db[_0x3d94('0xce')],'as':_0x3d94('0xed'),'attributes':['id',_0x3d94('0x39'),_0x3d94('0x84'),_0x3d94('0xfa'),_0x3d94('0xfb'),'read'],'include':_0x464735}];_0x554203['push']({'model':db[_0x3d94('0xc1')],'as':_0x3d94('0x11d'),'attributes':['id',_0x3d94('0x36')]});_0x554203[_0x3d94('0xb5')]({'model':db['User'],'as':_0x3d94('0x11e'),'attributes':['id','fullname']});return db[_0x3d94('0x44')][_0x3d94('0x73')]({'where':{'id':_0x4147d5['params']['id']},'include':_0x554203})['then'](handleEntityNotFound(_0x54d72a,null))['then'](function(_0x1da500){if(_0x1da500){var _0x2eb637=_0x1da500['get']({'plain':!![]});fs[_0x3d94('0x11f')](_0xceded9);var _0x4f572c={'channel':_0x3d94('0x120'),'account':_0x2eb637[_0x3d94('0x11d')][_0x3d94('0x36')],'agent':_0x2eb637[_0x3d94('0x11e')]?_0x2eb637[_0x3d94('0x11e')][_0x3d94('0x3e')]:'N.A.','createdAt':moment(_0x2eb637['createdAt'])[_0x3d94('0xf2')](_0x3d94('0x10d'))[_0x3d94('0x9f')](),'closedAt':_0x2eb637[_0x3d94('0xd7')]?moment(_0x2eb637['closedAt'])[_0x3d94('0xf2')](_0x3d94('0x10d'))[_0x3d94('0x9f')]():'','disposition':_0x2eb637[_0x3d94('0x121')],'chatInfo':{'browser':_0x2eb637[_0x3d94('0x122')],'os':_0x2eb637[_0x3d94('0x123')],'referer':_0x2eb637[_0x3d94('0x124')],'customerIp':_0x2eb637[_0x3d94('0x125')],'customerPort':_0x2eb637['customerPort']?_0x2eb637[_0x3d94('0x126')]:'N.A.'},'messages':_(_0x2eb637['Messages'])[_0x3d94('0x127')]()[_0x3d94('0x8c')]({'secret':![]})[_0x3d94('0x3d')](function(_0x10fdf2){if(_0x10fdf2[_0x3d94('0xdf')]){var _0x70202c=path[_0x3d94('0xe5')](_0x17f392,_0x10fdf2[_0x3d94('0xdf')]['basename']);if(fs[_0x3d94('0x128')](_0x70202c)){fs['createReadStream'](_0x70202c)[_0x3d94('0x129')](fs[_0x3d94('0x12a')](path[_0x3d94('0xe5')](_0xceded9,_0x10fdf2[_0x3d94('0xdf')][_0x3d94('0xdc')])));}}return{'date':moment(_0x10fdf2[_0x3d94('0x84')])['format'](_0x3d94('0x10d'))[_0x3d94('0x9f')](),'sender':_0x10fdf2[_0x3d94('0xfa')]===_0x3d94('0xcd')?_0x10fdf2['User']?_0x10fdf2['User'][_0x3d94('0x3e')]:_0x3d94('0xf0'):_0x10fdf2[_0x3d94('0x6e')][_0x3d94('0x11b')]+(_0x10fdf2[_0x3d94('0x6e')]['lastName']?'\x20'+_0x10fdf2[_0x3d94('0x6e')][_0x3d94('0x11c')]:''),'body':_0x10fdf2[_0x3d94('0xdf')]?_0x10fdf2[_0x3d94('0xdf')]['basename']:_0x10fdf2[_0x3d94('0x39')],'direction':_0x10fdf2['direction']===_0x3d94('0xcd')?'A':'C','secret':_0x10fdf2[_0x3d94('0xfb')],'read':_0x10fdf2['read'],'attachment':_0x10fdf2[_0x3d94('0xdf')]};})[_0x3d94('0x70')]()};return ejs[_0x3d94('0x12b')](path[_0x3d94('0xe5')](config[_0x3d94('0xe6')],_0x3d94('0x12c'),_0x3d94('0x12d'),_0x3d94('0x12e')),{'interaction':_0x4f572c})[_0x3d94('0x1f')](function(_0x244770){var _0x4e0383=path['join'](_0xceded9,_0x3d94('0x12f')+_0x2eb637['id']+'-'+_0x31ec36+'.pdf');var _0x57a739={'path':_0x4e0383,'channel':_0x3d94('0x120'),'interactionId':_0x2eb637['id']};return pdf['createPdfFromHTML'](_0x244770,_0x57a739);})[_0x3d94('0x1f')](function(){return new BPromise(function(_0x46ddad,_0x3063e9){zipdir(_0xceded9,{'saveTo':_0x27008c},function(_0x36c9be,_0x316c31){if(_0x36c9be)return _0x3063e9(_0x36c9be);return _0x46ddad(_0x316c31);});})['then'](function(){return new BPromise(function(_0x4e42e3,_0xeee55f){rimraf(_0xceded9,function(_0x2be870){if(_0x2be870)_0xeee55f(_0x2be870);return _0x4e42e3();});});})[_0x3d94('0x1f')](function(){return _0x54d72a['download'](_0x27008c,_0x77078d,function(_0x3330df){if(_0x3330df){console[_0x3d94('0x130')](_0x3d94('0x131'),_0x3330df);}else{fs['unlinkSync'](_0x27008c);}});});});}else{return _0x54d72a[_0x3d94('0x2a')](0xc8);}})[_0x3d94('0x29')](handleError(_0x54d72a,null));};
\ No newline at end of file
+var _0x0abf=['query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','select','field','color','from','tools_tags','user_has_chat_interactions','users','chat_interactions','left_join','o.id\x20=\x20i.UserId','a.id\x20=\x20i.ChatWebsiteId','chat_messages','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','having','`\x20=\x200','`\x20>\x200','Contact','$substring','value','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','Tag','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','compact','isEmpty','ChatWebsiteId','i.ChatWebsiteId\x20IN\x20?','parse','$lte','where','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','SELECT','clone','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','ChatInteraction','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','ui.ChatInteractionId\x20IN\x20?','groupBy','all','rows','show','includeAll','include','options','params','describe','ChatWebsite','findOne','vidaooApiKey','vidaooTopic','vidaooMetadata','vidaooEscalation','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','vidaooNote','follow','metadata','Sequelize','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','ChatMessage','create','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','file','basename','filename','mimetype','Attachment','attachmentDownload','Unauthorized','attachId','ChatOfflineMessageId','join','server/files/attachments/','download','mailTranscript','format','transcript-%s.txt','now','User','CmContact','Messages','%s%d','agentAlias','System','customer','Visitor','agentIdentifier','website_alias','agent_alias','alias','[%s]\x20%s:\x20%s\x0a','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','Smtp','service','host','port','secure','authentication','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','pick','ChatInteractionId','YYYY-MM-DD\x20HH:mm:ss','findAll','getMyMessages','includeAgent','setTags','spread','emit','chatInteractionTags:save','removeTags','unix','server','files','tmp','root','attachments','lastName','Account','Owner','get','mkdirSync','Chat','N.A.','browserName','osName','referer','customerIp','customerPort','tail','existsSync','pipe','createWriteStream','firstName','views','.pdf','createPdfFromHTML','log','err','unlinkSync','eml-format','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','sendStatus','status','json','offset','undefined','limit','count','reject','update','destroy','end','stack','name','render','merge','body','contact','agent','account','Users','map','fullname','Tags','TagIds','split','forEach','push','catch','rawAttributes','fieldName','type','key','model'];(function(_0x5849f3,_0x1335e4){var _0x37eb42=function(_0x2b6b90){while(--_0x2b6b90){_0x5849f3['push'](_0x5849f3['shift']());}};_0x37eb42(++_0x1335e4);}(_0x0abf,0xe8));var _0xf0ab=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x0abf[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0xf0ab('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf0ab('0x1'));var jsonpatch=require(_0xf0ab('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf0ab('0x3'));var Mustache=require('mustache');var util=require(_0xf0ab('0x4'));var path=require(_0xf0ab('0x5'));var sox=require(_0xf0ab('0x6'));var csv=require(_0xf0ab('0x7'));var ejs=require(_0xf0ab('0x8'));var fs=require('fs');var fs_extra=require(_0xf0ab('0x9'));var _=require(_0xf0ab('0xa'));var squel=require('squel');var crypto=require(_0xf0ab('0xb'));var jsforce=require(_0xf0ab('0xc'));var deskjs=require(_0xf0ab('0xd'));var toCsv=require(_0xf0ab('0x7'));var querystring=require('querystring');var Papa=require(_0xf0ab('0xe'));var Redis=require(_0xf0ab('0xf'));var authService=require(_0xf0ab('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var pdf=require(_0xf0ab('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf0ab('0x12'))(_0xf0ab('0x13'));var utils=require(_0xf0ab('0x14'));var config=require(_0xf0ab('0x15'));var licenseUtil=require(_0xf0ab('0x16'));var db=require(_0xf0ab('0x17'))['db'];config[_0xf0ab('0x18')]=_['defaults'](config[_0xf0ab('0x18')],{'host':_0xf0ab('0x19'),'port':0x18eb});var socket=require(_0xf0ab('0x1a'))(new Redis(config[_0xf0ab('0x18')]));require(_0xf0ab('0x1b'))[_0xf0ab('0x1c')](socket);var jayson=require(_0xf0ab('0x1d'));var client=jayson[_0xf0ab('0x1e')][_0xf0ab('0x1f')]({'port':0x232b});var client9004=jayson[_0xf0ab('0x1e')][_0xf0ab('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x221bac,_0x200cf5,_0x2f4618,_0x230f40){return new BPromise(function(_0x54b0ce,_0x457465){var _0x9e3b47=_0x230f40||client;return _0x9e3b47[_0xf0ab('0x20')](_0x221bac,_0x2f4618)[_0xf0ab('0x21')](function(_0x776619){logger[_0xf0ab('0x22')](_0xf0ab('0x23'),_0x200cf5,_0xf0ab('0x24'));logger[_0xf0ab('0x25')](_0xf0ab('0x26'),_0x200cf5,_0xf0ab('0x24'),JSON[_0xf0ab('0x27')](_0x776619));if(_0x776619[_0xf0ab('0x28')]){if(_0x776619[_0xf0ab('0x28')][_0xf0ab('0x29')]===0x1f4){logger[_0xf0ab('0x28')]('ChatInteraction,\x20%s,\x20%s',_0x200cf5,_0x776619[_0xf0ab('0x28')][_0xf0ab('0x2a')]);return _0x457465(_0x776619[_0xf0ab('0x28')][_0xf0ab('0x2a')]);}logger[_0xf0ab('0x28')](_0xf0ab('0x23'),_0x200cf5,_0x776619[_0xf0ab('0x28')][_0xf0ab('0x2a')]);return _0x54b0ce(_0x776619[_0xf0ab('0x28')][_0xf0ab('0x2a')]);}else{logger[_0xf0ab('0x22')]('ChatInteraction,\x20%s,\x20%s',_0x200cf5,'request\x20sent');_0x54b0ce(_0x776619['result'][_0xf0ab('0x2a')]);}})['catch'](function(_0x3eca32){logger[_0xf0ab('0x28')]('ChatInteraction,\x20%s,\x20%s',_0x200cf5,_0x3eca32);_0x457465(_0x3eca32);});});}function respondWithStatusCode(_0x163078,_0x22671e){_0x22671e=_0x22671e||0xcc;return function(_0x10bf5f){if(_0x10bf5f){return _0x163078[_0xf0ab('0x2b')](_0x22671e);}return _0x163078[_0xf0ab('0x2c')](_0x22671e)['end']();};}function respondWithResult(_0x2d0da7,_0x574ce7){_0x574ce7=_0x574ce7||0xc8;return function(_0x55d799){if(_0x55d799){return _0x2d0da7[_0xf0ab('0x2c')](_0x574ce7)[_0xf0ab('0x2d')](_0x55d799);}};}function respondWithFilteredResult(_0x1b223d,_0x445160){return function(_0x43476c){if(_0x43476c){var _0x174052=typeof _0x445160[_0xf0ab('0x2e')]===_0xf0ab('0x2f')&&typeof _0x445160[_0xf0ab('0x30')]===_0xf0ab('0x2f');var _0x21e8ac=_0x43476c[_0xf0ab('0x31')];var _0x58cbe1=_0x174052?0x0:_0x445160[_0xf0ab('0x2e')];var _0x35973a=_0x174052?_0x43476c['count']:_0x445160['offset']+_0x445160[_0xf0ab('0x30')];var _0x1dc84e;if(_0x35973a>=_0x21e8ac){_0x35973a=_0x21e8ac;_0x1dc84e=0xc8;}else{_0x1dc84e=0xce;}_0x1b223d[_0xf0ab('0x2c')](_0x1dc84e);return _0x1b223d['set']('Content-Range',_0x58cbe1+'-'+_0x35973a+'/'+_0x21e8ac)[_0xf0ab('0x2d')](_0x43476c);}return null;};}function patchUpdates(_0x58fa03){return function(_0x1cfd52){try{jsonpatch['apply'](_0x1cfd52,_0x58fa03,!![]);}catch(_0x3f66fa){return BPromise[_0xf0ab('0x32')](_0x3f66fa);}return _0x1cfd52['save']();};}function saveUpdates(_0x56e728,_0x469f42){return function(_0x27c6f9){if(_0x27c6f9){return _0x27c6f9[_0xf0ab('0x33')](_0x56e728)[_0xf0ab('0x21')](function(_0x2519c7){return _0x2519c7;});}return null;};}function removeEntity(_0x36195d,_0x17f3b3){return function(_0xf8f0f4){if(_0xf8f0f4){return _0xf8f0f4[_0xf0ab('0x34')]()[_0xf0ab('0x21')](function(){_0x36195d[_0xf0ab('0x2c')](0xcc)[_0xf0ab('0x35')]();});}};}function handleEntityNotFound(_0x22dcfe,_0x437fdb){return function(_0x5d8443){if(!_0x5d8443){_0x22dcfe[_0xf0ab('0x2b')](0x194);}return _0x5d8443;};}function handleError(_0x45c449,_0xc575ed){_0xc575ed=_0xc575ed||0x1f4;return function(_0x5c9192){logger[_0xf0ab('0x28')](_0x5c9192[_0xf0ab('0x36')]);if(_0x5c9192[_0xf0ab('0x37')]){delete _0x5c9192['name'];}_0x45c449[_0xf0ab('0x2c')](_0xc575ed)['send'](_0x5c9192);};}function getMustacheRender(_0xda3971,_0x492d7c){return Mustache[_0xf0ab('0x38')](_0xda3971,_[_0xf0ab('0x39')](_0x492d7c[_0xf0ab('0x3a')],{'contact':_0x492d7c[_0xf0ab('0x3b')],'message':_0x492d7c[_0xf0ab('0x2a')],'agent':_0x492d7c[_0xf0ab('0x3c')],'interaction':_0x492d7c['interaction'],'account':_0x492d7c[_0xf0ab('0x3d')]}))||'';}function getInteractionUsers(_0x683d08,_0x5a6df5){return new BPromise(function(_0x207fbb,_0xce89bc){try{if(_0x5a6df5[_0x683d08['id']]){_0x683d08[_0xf0ab('0x3e')]=_[_0xf0ab('0x3f')](_0x5a6df5[_0x683d08['id']],function(_0x31fa72){return{'id':_0x31fa72['id'],'fullname':_0x31fa72[_0xf0ab('0x40')]};});}}catch(_0x28c20c){_0xce89bc(_0x28c20c);}_0x207fbb(_0x683d08);});}function getInteractionTags(_0x528d4b,_0x406a1d){return new BPromise(function(_0x4f6e93,_0x7c4629){try{if(_0x528d4b['TagIds']){_0x528d4b[_0xf0ab('0x41')]=[];_0x528d4b[_0xf0ab('0x42')][_0xf0ab('0x43')](',')[_0xf0ab('0x44')](function(_0x2b7ed5){_0x528d4b['Tags'][_0xf0ab('0x45')](_0x406a1d[_0x2b7ed5]);});}delete _0x528d4b[_0xf0ab('0x42')];}catch(_0x28e7a4){_0x7c4629(_0x28e7a4);}_0x4f6e93(_0x528d4b);});}function updateChatInteraction(_0x197955,_0x191caf,_0x17a73){return new BPromise(function(_0x45849c,_0x413f5c){return getInteractionUsers(_0x197955,_0x17a73)[_0xf0ab('0x21')](function(_0x3b214a){return getInteractionTags(_0x3b214a,_0x191caf);})[_0xf0ab('0x21')](function(_0x32ec93){_0x45849c(_0x32ec93);})[_0xf0ab('0x46')](function(_0x5e6b6b){_0x413f5c(_0x5e6b6b);});});}exports['index']=function(_0x2fc677,_0x4e6c41){var _0x1fc766={},_0x2d50c0={},_0x4bbdf6={'count':0x0,'rows':[]};var _0x8c2d2c=_[_0xf0ab('0x3f')](db['ChatInteraction'][_0xf0ab('0x47')],function(_0x29cc6a){return{'name':_0x29cc6a[_0xf0ab('0x48')],'type':_0x29cc6a[_0xf0ab('0x49')][_0xf0ab('0x4a')]};});_0x2d50c0[_0xf0ab('0x4b')]=_[_0xf0ab('0x3f')](_0x8c2d2c,_0xf0ab('0x37'));_0x2d50c0[_0xf0ab('0x4c')]=_[_0xf0ab('0x4d')](_0x2fc677[_0xf0ab('0x4c')]);_0x2d50c0[_0xf0ab('0x4e')]=_[_0xf0ab('0x4f')](_0x2d50c0[_0xf0ab('0x4b')],_0x2d50c0['query']);_0x1fc766['attributes']=_[_0xf0ab('0x4f')](_0x2d50c0['model'],qs['fields'](_0x2fc677['query'][_0xf0ab('0x50')]));_0x1fc766[_0xf0ab('0x51')]=_0x1fc766[_0xf0ab('0x51')][_0xf0ab('0x52')]?_0x1fc766[_0xf0ab('0x51')]:_0x2d50c0[_0xf0ab('0x4b')];if(!_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x53')](_0xf0ab('0x54'))){_0x1fc766[_0xf0ab('0x30')]=qs[_0xf0ab('0x30')](_0x2fc677[_0xf0ab('0x4c')]['limit']);_0x1fc766[_0xf0ab('0x2e')]=qs[_0xf0ab('0x2e')](_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x2e')]);}_0x1fc766[_0xf0ab('0x55')]=qs[_0xf0ab('0x56')](_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x56')]);_0x1fc766['where']=qs['filters'](_['pick'](_0x2fc677[_0xf0ab('0x4c')],_0x2d50c0[_0xf0ab('0x4e')]),_0x8c2d2c);var _0x577c85=[];var _0xa1a416=squel[_0xf0ab('0x57')]()['field']('id')[_0xf0ab('0x58')](_0xf0ab('0x37'))[_0xf0ab('0x58')](_0xf0ab('0x59'))[_0xf0ab('0x5a')](_0xf0ab('0x5b'));var _0x26508b=squel['select']()[_0xf0ab('0x58')]('u.id')[_0xf0ab('0x58')]('u.fullname')[_0xf0ab('0x58')]('ui.ChatInteractionId')['from'](_0xf0ab('0x5c'),'ui')['left_join'](_0xf0ab('0x5d'),'u','u.id\x20=\x20ui.UserId');var _0x2eff07=squel['select']()[_0xf0ab('0x5a')](_0xf0ab('0x5e'),'i')[_0xf0ab('0x5f')]('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')['left_join'](_0xf0ab('0x5d'),'o',_0xf0ab('0x60'))['left_join']('chat_websites','a',_0xf0ab('0x61'))[_0xf0ab('0x5f')](_0xf0ab('0x62'),'me',_0xf0ab('0x63'))[_0xf0ab('0x5f')](_0xf0ab('0x64'),'it',_0xf0ab('0x65'))[_0xf0ab('0x5f')](_0xf0ab('0x5b'),'t',_0xf0ab('0x66'));var _0x1e6a4e=squel['expr']();var _0x41ed17=[];var _0x5b24e3=squel[_0xf0ab('0x67')]();var _0x61d3db;if(_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x68')]){_0x61d3db=as[_0xf0ab('0x69')](_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x68')]);var _0x1f11aa=_0x61d3db[_0xf0ab('0x6a')];for(var _0x180ee6=0x0;_0x180ee6<_0x61d3db['conditions'][_0xf0ab('0x52')];_0x180ee6++){var _0x2266f3=_0x61d3db[_0xf0ab('0x6b')][_0x180ee6];var _0x1d4a72='i';var _0x2232eb=_[_0xf0ab('0x6c')](_0x8c2d2c,[_0xf0ab('0x37'),_0x2266f3[_0xf0ab('0x58')]]);if(!_0x2232eb){switch(_0x2266f3[_0xf0ab('0x58')]){case'unreadMessages':if(_0x2266f3['value']==0x1){_0x2eff07[_0xf0ab('0x6d')]('`'+_0x2266f3[_0xf0ab('0x58')]+_0xf0ab('0x6e'));}else{_0x2eff07['having']('`'+_0x2266f3[_0xf0ab('0x58')]+_0xf0ab('0x6f'));}break;case _0xf0ab('0x70'):if(_0x2266f3['operator']===_0xf0ab('0x71')){if(_0x2266f3[_0xf0ab('0x72')][_0xf0ab('0x43')]('\x20')[_0xf0ab('0x52')]>0x1){_0x1e6a4e[_0x1f11aa](_0xf0ab('0x73'),qs['getFullTextValue'](_0x2266f3[_0xf0ab('0x72')]),null);}else{var _0x70b02d='%'+_0x2266f3[_0xf0ab('0x72')]+'%';_0x1e6a4e[_0x1f11aa](_0xf0ab('0x74'),_0x70b02d,_0x70b02d,_0x70b02d);}}else{_0x2232eb=_[_0xf0ab('0x6c')](_0x8c2d2c,[_0xf0ab('0x37'),_0xf0ab('0x75')]);_0x2266f3[_0xf0ab('0x58')]=_0xf0ab('0x75');_0x5154f5=as[_0xf0ab('0x76')](_0x1d4a72,_0x2232eb[_0xf0ab('0x49')],_0x2266f3);_0x1e6a4e[_0x1f11aa](_0x5154f5[_0xf0ab('0x77')],_0x5154f5[_0xf0ab('0x72')]['start'],_0x5154f5['value'][_0xf0ab('0x35')]);}break;case _0xf0ab('0x78'):var _0x325ad6=_0x2266f3['value'][_0xf0ab('0x43')](',')['map'](function(_0x1a32dc){return Number(_0x1a32dc);});_0x325ad6[_0xf0ab('0x44')](function(_0x1787e2){_0x5b24e3['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x1787e2+',%');});_0x41ed17=_[_0xf0ab('0x79')](_0x41ed17,_0x325ad6);break;case'User':if(_0x2266f3['operator']===_0xf0ab('0x71')){_0x1e6a4e[_0x1f11aa](_0xf0ab('0x7a'),'%'+_0x2266f3[_0xf0ab('0x72')]+'%',null);}else{_0x2232eb=_['find'](_0x8c2d2c,[_0xf0ab('0x37'),_0xf0ab('0x7b')]);_0x2266f3[_0xf0ab('0x58')]=_0xf0ab('0x7b');_0x5154f5=as['buildExpression'](_0x1d4a72,_0x2232eb['type'],_0x2266f3);_0x1e6a4e[_0x1f11aa](_0x5154f5['text'],_0x5154f5[_0xf0ab('0x72')][_0xf0ab('0x7c')],_0x5154f5[_0xf0ab('0x72')][_0xf0ab('0x35')]);}break;case _0xf0ab('0x3a'):_0x5154f5=as[_0xf0ab('0x76')]('me',null,_0x2266f3);_0x1e6a4e[_0x1f11aa](_0x5154f5[_0xf0ab('0x77')],_0x5154f5[_0xf0ab('0x72')][_0xf0ab('0x7c')],_0x5154f5[_0xf0ab('0x72')][_0xf0ab('0x35')]);break;}}else{var _0x5154f5=as[_0xf0ab('0x76')](_0x1d4a72,_0x2232eb[_0xf0ab('0x49')],_0x2266f3);_0x1e6a4e[_0x1f11aa](_0x5154f5[_0xf0ab('0x77')],_0x5154f5[_0xf0ab('0x72')][_0xf0ab('0x7c')],_0x5154f5[_0xf0ab('0x72')][_0xf0ab('0x35')]);}}}else{var _0x42f067=_(_0x2fc677['query'])[_0xf0ab('0x4d')]()[_0xf0ab('0x3f')](function(_0x4c8e95){return _['some'](_0x8c2d2c,['name',_0x4c8e95])?_0x4c8e95:undefined;})[_0xf0ab('0x7d')]()[_0xf0ab('0x72')]();if(!_[_0xf0ab('0x7e')](_0x42f067)){_0x42f067[_0xf0ab('0x44')](function(_0x15aa78){if(_0x15aa78===_0xf0ab('0x7f')){_0x2eff07['where'](_0xf0ab('0x80'),[]['concat'](_0x2fc677[_0xf0ab('0x4c')][_0x15aa78]));}else if(_0x15aa78==='createdAt'){var _0x2978a9=JSON['parse'](_0x2fc677[_0xf0ab('0x4c')][_0x15aa78])['$gte'];var _0x58ca28=JSON[_0xf0ab('0x81')](_0x2fc677[_0xf0ab('0x4c')][_0x15aa78])[_0xf0ab('0x82')];_0x2eff07[_0xf0ab('0x83')](_0xf0ab('0x84'),_0x2978a9,_0x58ca28);}else{if(_0x2fc677[_0xf0ab('0x4c')][_0x15aa78]===_0xf0ab('0x85')){_0x2eff07[_0xf0ab('0x83')]('i.'+_0x15aa78+_0xf0ab('0x86'));}else{_0x2eff07[_0xf0ab('0x83')]('i.'+_0x15aa78+_0xf0ab('0x87'),_0x2fc677[_0xf0ab('0x4c')][_0x15aa78]);}}});}if(_0x2fc677[_0xf0ab('0x4c')]['read']){if(_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x88')]==0x1){_0x2eff07[_0xf0ab('0x6d')](_0xf0ab('0x89'));}else{_0x2eff07[_0xf0ab('0x6d')](_0xf0ab('0x8a'));}}if(_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x8b')]){_0x41ed17=_[_0xf0ab('0x8c')](_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x8b')])?_0x2fc677[_0xf0ab('0x4c')]['tag']:new Array(_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x8b')]);_0x41ed17[_0xf0ab('0x44')](function(_0x2196a7){_0x5b24e3['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2196a7+',%');});}if(_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x8d')]){var _0x4463cc=_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x8d')]['replace']('\x5c','\x5c\x5c')[_0xf0ab('0x8e')](/'/g,'\x27\x27');if(qs[_0xf0ab('0x8f')](_0x4463cc)){_0x1e6a4e['or']('i.id\x20LIKE\x20?',_0x4463cc+'%');}else{_0x1e6a4e['or'](_0xf0ab('0x90'),qs['getFullTextValue'](_0x4463cc))['or'](_0xf0ab('0x91'),_0x4463cc+'%');}}}_0x2eff07[_0xf0ab('0x83')](_0x1e6a4e);_0x2eff07['group'](_0xf0ab('0x92'));var _0x148a72={'type':db['Sequelize']['QueryTypes'][_0xf0ab('0x93')],'raw':!![]};var _0x58140c=_0x2eff07[_0xf0ab('0x94')]();_0x58140c[_0xf0ab('0x58')]('i.id');_0x58140c['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xf0ab('0x95'));if(_0x1fc766[_0xf0ab('0x55')]){_0x1fc766[_0xf0ab('0x55')][_0xf0ab('0x44')](function(_0x49c89f){var _0x272f9c=_0x49c89f[0x0]===_0xf0ab('0x96')?_0x49c89f[0x0]:'i.'+_0x49c89f[0x0];_0x2eff07[_0xf0ab('0x55')](_0x272f9c,_0x49c89f[0x1]===_0xf0ab('0x97')?![]:!![]);});}if(!_[_0xf0ab('0x7e')](_0x41ed17)){_0x2eff07['having'](_0x5b24e3);_0x58140c['where'](_0xf0ab('0x98'),_0x41ed17);}BPromise[_0xf0ab('0x99')]()['then'](function(){if(!_0x61d3db){if(_0x2fc677['query'][_0xf0ab('0x7f')])return;_0x58140c[_0xf0ab('0x83')](_0xf0ab('0x9a'));_0x2eff07[_0xf0ab('0x83')](_0xf0ab('0x9a'));return;}if(_0x2fc677[_0xf0ab('0x9b')][_0xf0ab('0x9c')]!==_0xf0ab('0x3c'))return;return _0x2fc677[_0xf0ab('0x9b')][_0xf0ab('0x9d')]({'attributes':['id'],'raw':!![]})[_0xf0ab('0x21')](function(_0x52eca9){if(_['isEmpty'](_0x52eca9)){_0x58140c[_0xf0ab('0x83')]('i.ChatWebsiteId\x20IS\x20NULL');_0x2eff07[_0xf0ab('0x83')](_0xf0ab('0x9e'));}else{_0x58140c[_0xf0ab('0x83')](_0xf0ab('0x80'),_['map'](_0x52eca9,'id'));_0x2eff07[_0xf0ab('0x83')](_0xf0ab('0x80'),_[_0xf0ab('0x3f')](_0x52eca9,'id'));}});})[_0xf0ab('0x21')](function(){if(_0x2fc677[_0xf0ab('0x9b')][_0xf0ab('0x9c')]===_0xf0ab('0x3c')&&!_0x61d3db&&!_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x7f')])return[];return db[_0xf0ab('0x9f')][_0xf0ab('0x4c')](_0x58140c[_0xf0ab('0xa0')](),_0x148a72);})[_0xf0ab('0x21')](function(_0x4211a1){_0x4bbdf6['count']=_0x4211a1[_0xf0ab('0x52')];if(_0x4bbdf6[_0xf0ab('0x31')]===0x0)return[];return db[_0xf0ab('0x9f')][_0xf0ab('0x4c')](_0xa1a416[_0xf0ab('0xa0')](),_0x148a72)[_0xf0ab('0x21')](function(_0x611cf7){_0x577c85=_['keyBy'](_0x611cf7,'id');_0x148a72=_['merge'](_0x148a72,{'model':db[_0xf0ab('0xa1')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x50')]){_0x1fc766['attributes'][_0xf0ab('0x44')](function(_0x405b34){_0x2eff07[_0xf0ab('0x58')]('i.'+_0x405b34);});}else{_0x2eff07[_0xf0ab('0x58')](_0xf0ab('0xa2'),'unreadMessages');_0x2eff07['field'](_0xf0ab('0xa3'),'Account.key');_0x2eff07[_0xf0ab('0x58')](_0xf0ab('0xa4'),'Account.mandatoryDisposition');_0x2eff07[_0xf0ab('0x58')](_0xf0ab('0xa5'),_0xf0ab('0x96'));_0x2eff07[_0xf0ab('0x58')](_0xf0ab('0xa6'));_0x2eff07['field'](_0xf0ab('0xa7'),_0xf0ab('0xa8'));_0x2eff07[_0xf0ab('0x58')](_0xf0ab('0xa9'),_0xf0ab('0xaa'));_0x2eff07['field'](_0xf0ab('0xab'),_0xf0ab('0xac'));_0x2eff07[_0xf0ab('0x58')](_0xf0ab('0xad'),_0xf0ab('0xae'));_0x2eff07['field'](_0xf0ab('0xaf'),_0xf0ab('0xb0'));_0x2eff07[_0xf0ab('0x58')]('c.fax',_0xf0ab('0xb1'));_0x2eff07['field'](_0xf0ab('0xb2'),_0xf0ab('0xb3'));_0x2eff07[_0xf0ab('0x58')](_0xf0ab('0xb4'),'Owner.internal');_0x2eff07[_0xf0ab('0x58')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x1fc766[_0xf0ab('0x30')])_0x2eff07['limit'](_0x1fc766['limit']);if(_0x1fc766[_0xf0ab('0x2e')])_0x2eff07[_0xf0ab('0x2e')](_0x1fc766['offset']);return db['sequelize']['query'](_0x2eff07['toString'](),_0x148a72);})[_0xf0ab('0x21')](function(_0x12d9b6){if(_0x12d9b6[_0xf0ab('0x52')]>0x0)_0x26508b[_0xf0ab('0x83')](_0xf0ab('0xb5'),_['map'](_0x12d9b6,'id'));return db[_0xf0ab('0x9f')][_0xf0ab('0x4c')](_0x26508b[_0xf0ab('0xa0')](),_0x148a72)[_0xf0ab('0x21')](function(_0x84eab9){var _0x27cd98=_[_0xf0ab('0xb6')](_0x84eab9,'ChatInteractionId');var _0x16dca7=[];_0x12d9b6[_0xf0ab('0x44')](function(_0x39633a){_0x16dca7[_0xf0ab('0x45')](updateChatInteraction(_0x39633a,_0x577c85,_0x27cd98));});return BPromise[_0xf0ab('0xb7')](_0x16dca7);});});})[_0xf0ab('0x21')](function(_0x527a4b){_0x4bbdf6[_0xf0ab('0xb8')]=_0x527a4b;return _0x4bbdf6;})[_0xf0ab('0x21')](respondWithFilteredResult(_0x4e6c41,_0x1fc766))[_0xf0ab('0x46')](handleError(_0x4e6c41,null));};exports[_0xf0ab('0xb9')]=function(_0x4ca7a3,_0x426419){var _0x395bf6={'raw':![],'where':{'id':_0x4ca7a3['params']['id']}},_0x5b7744={};_0x5b7744[_0xf0ab('0x4b')]=_[_0xf0ab('0x4d')](db[_0xf0ab('0xa1')][_0xf0ab('0x47')]);_0x5b7744[_0xf0ab('0x4c')]=_[_0xf0ab('0x4d')](_0x4ca7a3[_0xf0ab('0x4c')]);_0x5b7744[_0xf0ab('0x4e')]=_['intersection'](_0x5b7744[_0xf0ab('0x4b')],_0x5b7744['query']);_0x395bf6['attributes']=_[_0xf0ab('0x4f')](_0x5b7744[_0xf0ab('0x4b')],qs[_0xf0ab('0x50')](_0x4ca7a3[_0xf0ab('0x4c')][_0xf0ab('0x50')]));_0x395bf6[_0xf0ab('0x51')]=_0x395bf6[_0xf0ab('0x51')][_0xf0ab('0x52')]?_0x395bf6['attributes']:_0x5b7744[_0xf0ab('0x4b')];if(_0x4ca7a3[_0xf0ab('0x4c')][_0xf0ab('0xba')]){_0x395bf6[_0xf0ab('0xbb')]=[{'all':!![]}];}_0x395bf6=_[_0xf0ab('0x39')]({},_0x395bf6,_0x4ca7a3[_0xf0ab('0xbc')]);return db[_0xf0ab('0xa1')][_0xf0ab('0x6c')](_0x395bf6)[_0xf0ab('0x21')](handleEntityNotFound(_0x426419,null))[_0xf0ab('0x21')](respondWithResult(_0x426419,null))['catch'](handleError(_0x426419,null));};exports['create']=function(_0x58946c,_0x2f339d){return db['ChatInteraction']['create'](_0x58946c[_0xf0ab('0x3a')],{})[_0xf0ab('0x21')](respondWithResult(_0x2f339d,0xc9))[_0xf0ab('0x46')](handleError(_0x2f339d,null));};exports[_0xf0ab('0x33')]=function(_0xdf495,_0x55a296){if(_0xdf495[_0xf0ab('0x3a')]['id']){delete _0xdf495[_0xf0ab('0x3a')]['id'];}return db[_0xf0ab('0xa1')][_0xf0ab('0x6c')]({'where':{'id':_0xdf495[_0xf0ab('0xbd')]['id']}})[_0xf0ab('0x21')](handleEntityNotFound(_0x55a296,null))[_0xf0ab('0x21')](saveUpdates(_0xdf495[_0xf0ab('0x3a')],null))['then'](respondWithResult(_0x55a296,null))[_0xf0ab('0x46')](handleError(_0x55a296,null));};exports['destroy']=function(_0x3c1a2c,_0x17a3b6){return db['ChatInteraction'][_0xf0ab('0x6c')]({'where':{'id':_0x3c1a2c[_0xf0ab('0xbd')]['id']}})[_0xf0ab('0x21')](handleEntityNotFound(_0x17a3b6,null))[_0xf0ab('0x21')](removeEntity(_0x17a3b6,null))[_0xf0ab('0x46')](handleError(_0x17a3b6,null));};exports[_0xf0ab('0xbe')]=function(_0x1f2efa,_0x1d12fb){return db[_0xf0ab('0xa1')]['describe']()[_0xf0ab('0x21')](respondWithResult(_0x1d12fb,null))[_0xf0ab('0x46')](handleError(_0x1d12fb,null));};exports['createVidaooSession']=function(_0x35486d,_0x3f5ade){var _0x135a10=_0x35486d[_0xf0ab('0xbd')]['id'];var _0x48fc7e;var _0x5f55d2;var _0x7c7c3b;return db[_0xf0ab('0xa1')]['findOne']({'where':{'id':_0x135a10}})[_0xf0ab('0x21')](function(_0x2beaaa){_0x48fc7e=_0x2beaaa;return db[_0xf0ab('0xbf')][_0xf0ab('0xc0')]({'where':{'id':_0x2beaaa[_0xf0ab('0x7f')]},'attributes':['id',_0xf0ab('0xc1'),'vidaooEscalation',_0xf0ab('0xc2'),'vidaooNote',_0xf0ab('0xc3')],'raw':!![]});})[_0xf0ab('0x21')](function(_0x354e18){if(_0x354e18&&_0x354e18['vidaooApiKey']&&_0x354e18[_0xf0ab('0xc4')]){_0x5f55d2=_0x354e18;var _0x2068d6={'interaction':{'id':_0x135a10},'agent':{'id':_0x35486d[_0xf0ab('0x9b')]['id'],'name':_0x35486d[_0xf0ab('0x9b')][_0xf0ab('0x37')],'fullname':_0x35486d[_0xf0ab('0x9b')][_0xf0ab('0x40')],'email':_0x35486d[_0xf0ab('0x9b')][_0xf0ab('0xc5')]},'contact':_0x35486d['body']['contact'],'account':_0x35486d[_0xf0ab('0x3a')][_0xf0ab('0x3d')]};var _0x35b480={'rejectUnauthorized':![],'method':_0xf0ab('0xc6'),'url':_0xf0ab('0xc7'),'headers':{'X-APIKEY':_0x354e18[_0xf0ab('0xc1')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x35486d[_0xf0ab('0x9b')][_0xf0ab('0xc5')]],'buttons':null,'topic':_0x5f55d2[_0xf0ab('0xc2')],'note':_[_0xf0ab('0xc8')](_0x5f55d2['vidaooNote'])?null:getMustacheRender(_0x5f55d2[_0xf0ab('0xc9')],_0x2068d6),'metadata':null},'redirect':_0xf0ab('0xca'),'json':!![]};try{if(!_[_0xf0ab('0xc8')](_0x5f55d2[_0xf0ab('0xc3')])){var _0x41e2d8=getMustacheRender(_0x5f55d2[_0xf0ab('0xc3')],_0x2068d6);var _0x57f44d=JSON[_0xf0ab('0x81')](_0x41e2d8);_0x35b480[_0xf0ab('0x3a')][_0xf0ab('0xcb')]=_0x57f44d;}}catch(_0x533b37){throw new db[(_0xf0ab('0xcc'))]['ValidationError']('Error\x20in\x20conversion\x20vidaooMetadata');}return rp(_0x35b480);}else{throw new db[(_0xf0ab('0xcc'))][(_0xf0ab('0xcd'))](_0xf0ab('0xce'));}})['then'](function(_0x1697ca){_0x7c7c3b=_0x1697ca;if(_0x7c7c3b['id']){var _0x15da8a={'body':_0x7c7c3b[_0xf0ab('0xcf')],'ChatWebsiteId':_0x5f55d2['id'],'ChatInteractionId':_0x48fc7e['id'],'direction':'out','UserId':_0x35486d[_0xf0ab('0x9b')]['id']};return db[_0xf0ab('0xd0')][_0xf0ab('0xd1')](_0x15da8a,{});}else{throw new db['Sequelize'][(_0xf0ab('0xcd'))](_0xf0ab('0xd2'));}})[_0xf0ab('0x21')](function(){return _0x48fc7e[_0xf0ab('0xd3')]({'vidaooSessionId':_0x7c7c3b['id']});})[_0xf0ab('0x21')](respondWithResult(_0x3f5ade,null))[_0xf0ab('0x46')](handleError(_0x3f5ade,null));};exports[_0xf0ab('0xd4')]=function(_0x115e3d,_0x2d0f9c){if(_0x115e3d[_0xf0ab('0x3a')]['id']){delete _0x115e3d[_0xf0ab('0x3a')]['id'];}return db[_0xf0ab('0xa1')][_0xf0ab('0x6c')]({'where':{'id':_0x115e3d[_0xf0ab('0xbd')]['id']},'include':[{'model':db['CmContact'],'as':'Contact'}]})[_0xf0ab('0x21')](handleEntityNotFound(_0x2d0f9c,null))[_0xf0ab('0x21')](saveUpdates(_0x115e3d['body'],null))[_0xf0ab('0x21')](respondWithResult(_0x2d0f9c,null))['catch'](handleError(_0x2d0f9c,null));};exports[_0xf0ab('0xd5')]=function(_0x1e9768,_0x4398a3,_0x4195d9){if(_0x1e9768[_0xf0ab('0x3a')]['id']){delete _0x1e9768[_0xf0ab('0x3a')]['id'];}return db[_0xf0ab('0xa1')][_0xf0ab('0x6c')]({'where':{'id':_0x1e9768[_0xf0ab('0xbd')]['id']}})[_0xf0ab('0x21')](function(_0x5f10a5){if(!_0x5f10a5){logger[_0xf0ab('0x28')](_0xf0ab('0xd6'),_0xf0ab('0xd5'),0x194,_0xf0ab('0xd7'));_0x4398a3[_0xf0ab('0x2b')](0x194);}else{if(_0x5f10a5[_0xf0ab('0x7b')]){throw new db['Sequelize']['ValidationError'](_0xf0ab('0xd8'));}}return _0x5f10a5;})[_0xf0ab('0x21')](function(_0x564124){if(_0x564124){return _0x564124[_0xf0ab('0x33')]({'closed':_0x1e9768[_0xf0ab('0x3a')][_0xf0ab('0xd9')],'disposition':_0x1e9768['body'][_0xf0ab('0xda')]})[_0xf0ab('0x21')](function(_0x2d9046){return _0x2d9046;});}})[_0xf0ab('0x21')](function(_0x4e5f1e){return respondWithRpcPromise(_0xf0ab('0xdb'),_0xf0ab('0xd5'),_0x1e9768[_0xf0ab('0x3a')],client9004);})['then'](respondWithResult(_0x4398a3,null))['catch'](handleError(_0x4398a3,null));};exports['attachmentUpload']=function(_0x581cb1,_0x22251d,_0x2b5993){_0x581cb1[_0xf0ab('0x3a')]['name']=_0x581cb1[_0xf0ab('0xdc')]['originalname'];_0x581cb1[_0xf0ab('0x3a')][_0xf0ab('0xdd')]=_0x581cb1[_0xf0ab('0xdc')][_0xf0ab('0xde')];_0x581cb1[_0xf0ab('0x3a')][_0xf0ab('0x49')]=_0x581cb1[_0xf0ab('0xdc')][_0xf0ab('0xdf')];return db[_0xf0ab('0xe0')][_0xf0ab('0xd1')](_0x581cb1[_0xf0ab('0x3a')])[_0xf0ab('0x21')](respondWithResult(_0x22251d,0xc9))[_0xf0ab('0x46')](handleError(_0x22251d,null));};exports[_0xf0ab('0xe1')]=function(_0x4d09bf,_0x415b9d,_0x11ed58){return db[_0xf0ab('0xa1')]['findOne']({'where':{'id':_0x4d09bf[_0xf0ab('0xbd')]['id']},'raw':!![]})[_0xf0ab('0x21')](handleEntityNotFound(_0x415b9d,null))[_0xf0ab('0x21')](function(_0x278e32){if(_0x278e32){if(_0x278e32['closed']){return _0x415b9d[_0xf0ab('0x2c')](0x193)[_0xf0ab('0x2d')]({'status':0x193,'message':_0xf0ab('0xe2')});}return db[_0xf0ab('0xe0')][_0xf0ab('0xc0')]({'where':{'id':_0x4d09bf[_0xf0ab('0x4c')][_0xf0ab('0xe3')]},'raw':!![]})[_0xf0ab('0x21')](handleEntityNotFound(_0x415b9d,null));}})['then'](function(_0xadae03){if(_0xadae03){var _0x550b00=_0xadae03[_0xf0ab('0xe4')]!==null;var _0x2bfb6a=path[_0xf0ab('0xe5')](config['root'],_0xf0ab('0xe6'));if(_0x550b00){_0x2bfb6a=path[_0xf0ab('0xe5')](_0x2bfb6a,'offline-chat/');}var _0x5d62e4=path['join'](_0x2bfb6a,_0xadae03['basename']);return _0x415b9d[_0xf0ab('0xe7')](_0x5d62e4);}})['catch'](handleError(_0x415b9d,null));};exports['close']=function(_0x3b8bbe,_0x7e24c4){var _0x2d0ea3=null;var _0x4a18ad=null;var _0x57aaae=null;var _0x2ab0be=null;if(_0x3b8bbe[_0xf0ab('0x3a')]['id']){delete _0x3b8bbe['body']['id'];}if(_0x3b8bbe[_0xf0ab('0x3a')][_0xf0ab('0xe8')]){_0x2ab0be=path['join'](config['root'],'server/files/chat/upload/',util[_0xf0ab('0xe9')](_0xf0ab('0xea'),Date[_0xf0ab('0xeb')]()));_0x3b8bbe[_0xf0ab('0x3a')]['pathTranscript']=_0x2ab0be;}return db[_0xf0ab('0xa1')][_0xf0ab('0x6c')]({'where':{'id':_0x3b8bbe['params']['id']},'include':[{'model':db['ChatMessage'],'as':'Messages','include':[{'model':db[_0xf0ab('0xec')],'as':'User'}]}]})[_0xf0ab('0x21')](handleEntityNotFound(_0x7e24c4,null))[_0xf0ab('0x21')](saveUpdates(_0x3b8bbe[_0xf0ab('0x3a')],null))[_0xf0ab('0x21')](function(_0x116c84){if(_0x116c84){_0x2d0ea3=_0x116c84;return db[_0xf0ab('0xbf')][_0xf0ab('0x6c')]({'where':{'id':_0x2d0ea3[_0xf0ab('0x7f')]}});}})[_0xf0ab('0x21')](function(_0x1d6e15){if(_0x1d6e15){_0x57aaae=_0x1d6e15;return db[_0xf0ab('0xed')][_0xf0ab('0x6c')]({'where':{'id':_0x2d0ea3['ContactId']}});}})[_0xf0ab('0x21')](function(_0x29427c){if(_0x29427c){_0x4a18ad=_0x29427c;if(_0x2ab0be){var _0x29d4a1=null;for(var _0x50e996=0x1;_0x50e996<_0x2d0ea3['Messages'][_0xf0ab('0x52')];++_0x50e996){_0x29d4a1=_0x2d0ea3[_0xf0ab('0xee')][_0x50e996];var _0x8e04bb=_0x29d4a1[_0xf0ab('0x7b')]?util[_0xf0ab('0xe9')](_0xf0ab('0xef'),_0x57aaae[_0xf0ab('0xf0')],_0x29d4a1[_0xf0ab('0x7b')]):_0xf0ab('0xf1');var _0xc1537e=_0x3b8bbe[_0xf0ab('0x3a')][_0xf0ab('0xf2')]||util[_0xf0ab('0xe9')](_0xf0ab('0xef'),_0xf0ab('0xf3'),_0x29d4a1[_0xf0ab('0x75')]);switch(_0x57aaae[_0xf0ab('0xf4')]){case _0xf0ab('0xf5'):_0x8e04bb=_0x29d4a1[_0xf0ab('0x7b')]?util[_0xf0ab('0xe9')](_0xf0ab('0xef'),_0x57aaae['agentAlias'],_0x29d4a1[_0xf0ab('0x7b')]):'System';break;case _0xf0ab('0xf6'):_0x8e04bb=_0x29d4a1[_0xf0ab('0x7b')]?_0x29d4a1[_0xf0ab('0xec')][_0xf0ab('0xf7')]||_0x29d4a1['User'][_0xf0ab('0x40')]:'System';break;case'agent_fullname':_0x8e04bb=_0x29d4a1['UserId']?_0x29d4a1[_0xf0ab('0xec')][_0xf0ab('0x40')]:_0xf0ab('0xf1');break;default:_0x8e04bb=_0x29d4a1['UserId']?util[_0xf0ab('0xe9')](_0xf0ab('0xef'),_0x57aaae[_0xf0ab('0xf0')],_0x29d4a1[_0xf0ab('0x7b')]):_0xf0ab('0xf1');}var _0x2c39f0=util[_0xf0ab('0xe9')](_0xf0ab('0xf8'),moment(_0x29d4a1[_0xf0ab('0xf9')])[_0xf0ab('0xe9')](_0xf0ab('0xfa')),_0x29d4a1[_0xf0ab('0xfb')]==='in'?_0xc1537e:_0x8e04bb,_0x29d4a1['body']);if(!_0x29d4a1[_0xf0ab('0xfc')]){fs[_0xf0ab('0xfd')](_0x2ab0be,_0x2c39f0);}}return db[_0xf0ab('0xfe')][_0xf0ab('0xc0')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0xf0ab('0xff'),'raw':!![]}]});}}})['then'](function(_0x21eb2b){if(_0x21eb2b&&_0x21eb2b['Smtp']&&_0x3b8bbe[_0xf0ab('0x3a')]){var _0x262659={'tls':{'rejectUnauthorized':![]}};if(_0x21eb2b['Smtp'][_0xf0ab('0x100')]){_0x262659[_0xf0ab('0x100')]=_0x21eb2b[_0xf0ab('0xff')][_0xf0ab('0x100')];}else{_0x262659[_0xf0ab('0x101')]=_0x21eb2b['Smtp'][_0xf0ab('0x101')];_0x262659[_0xf0ab('0x102')]=_0x21eb2b[_0xf0ab('0xff')]['port'];_0x262659['secure']=_0x21eb2b[_0xf0ab('0xff')][_0xf0ab('0x103')];}if(_0x21eb2b[_0xf0ab('0xff')][_0xf0ab('0x104')]){_0x262659['auth']={'user':_0x21eb2b['Smtp'][_0xf0ab('0x9b')],'pass':_0x21eb2b[_0xf0ab('0xff')]['pass']};}return respondWithRpcPromise('SendMail',_0xf0ab('0x105'),{'account':_0x262659,'message':{'from':util['format'](_0xf0ab('0x106'),_0x21eb2b['name'],_0x21eb2b[_0xf0ab('0xc5')]||_0x21eb2b[_0xf0ab('0xff')][_0xf0ab('0x9b')]),'to':_0x3b8bbe[_0xf0ab('0x3a')][_0xf0ab('0xe8')],'subject':_0xf0ab('0x107'),'text':util[_0xf0ab('0xe9')](_0xf0ab('0x108'),_0x3b8bbe['body'][_0xf0ab('0xe8')]),'attachments':[{'path':_0x2ab0be}]}})[_0xf0ab('0x21')](function(){return _0x2d0ea3;})[_0xf0ab('0x46')](function(_0x15f041){console[_0xf0ab('0x28')](_0x15f041);});}else{return _0x2d0ea3;}})['then'](respondWithStatusCode(_0x7e24c4,0xc8))[_0xf0ab('0x46')](handleError(_0x7e24c4,null));};exports[_0xf0ab('0x109')]=function(_0x5eda4b,_0x57a8ab,_0x3cee1d){return db[_0xf0ab('0xd0')][_0xf0ab('0x6c')]({'where':{'id':_0x5eda4b[_0xf0ab('0xbd')]['id']}})[_0xf0ab('0x21')](handleEntityNotFound(_0x57a8ab,null))[_0xf0ab('0x21')](function(_0x4dff6e){if(_0x4dff6e){return _0x4dff6e[_0xf0ab('0x109')](_0x5eda4b[_0xf0ab('0x3a')][_0xf0ab('0x10a')],_[_0xf0ab('0x10b')](_0x5eda4b[_0xf0ab('0x3a')],[_0xf0ab('0x10a'),'id'])||{});}})['then'](respondWithResult(_0x57a8ab,null))[_0xf0ab('0x46')](handleError(_0x57a8ab,null));};exports['getMessages']=function(_0x283bf5,_0x1afcea,_0x22a9f8){var _0x33dbfc={'raw':![],'where':{}};var _0x487318={};var _0x546e13={'count':0x0,'rows':[]};return db[_0xf0ab('0xa1')]['findOne']({'where':{'id':_0x283bf5[_0xf0ab('0xbd')]['id']}})[_0xf0ab('0x21')](handleEntityNotFound(_0x1afcea,null))[_0xf0ab('0x21')](function(_0xa3b903){if(_0xa3b903){_0x487318['model']=_[_0xf0ab('0x4d')](db[_0xf0ab('0xd0')][_0xf0ab('0x47')]);_0x487318[_0xf0ab('0x4c')]=_['keys'](_0x283bf5[_0xf0ab('0x4c')]);_0x487318[_0xf0ab('0x4e')]=_['intersection'](_0x487318[_0xf0ab('0x4b')],_0x487318[_0xf0ab('0x4c')]);_0x33dbfc[_0xf0ab('0x51')]=_[_0xf0ab('0x4f')](_0x487318[_0xf0ab('0x4b')],qs['fields'](_0x283bf5[_0xf0ab('0x4c')][_0xf0ab('0x50')]));_0x33dbfc[_0xf0ab('0x51')]=_0x33dbfc['attributes'][_0xf0ab('0x52')]?_0x33dbfc[_0xf0ab('0x51')]:_0x487318[_0xf0ab('0x4b')];if(!_0x283bf5[_0xf0ab('0x4c')][_0xf0ab('0x53')](_0xf0ab('0x54'))){_0x33dbfc[_0xf0ab('0x30')]=qs[_0xf0ab('0x30')](_0x283bf5[_0xf0ab('0x4c')][_0xf0ab('0x30')]);_0x33dbfc['offset']=qs['offset'](_0x283bf5[_0xf0ab('0x4c')]['offset']);}_0x33dbfc['order']=qs[_0xf0ab('0x56')](_0x283bf5[_0xf0ab('0x4c')]['sort']);_0x33dbfc[_0xf0ab('0x83')]=qs[_0xf0ab('0x4e')](_[_0xf0ab('0x10c')](_0x283bf5['query'],_0x487318[_0xf0ab('0x4e')]));_0x33dbfc['where'][_0xf0ab('0x10d')]=_0xa3b903['id'];if(_0x283bf5['query'][_0xf0ab('0x8d')]){_0x33dbfc[_0xf0ab('0x83')]=_[_0xf0ab('0x39')](_0x33dbfc['where'],{'$or':_[_0xf0ab('0x3f')](_0x33dbfc[_0xf0ab('0x51')],function(_0x2ddc1d){var _0x3cef14={};_0x3cef14[_0x2ddc1d]={'$like':'%'+_0x283bf5['query'][_0xf0ab('0x8d')]+'%'};return _0x3cef14;})});}if(_0x283bf5[_0xf0ab('0x4c')]['$gte']){var _0x38ea18=_0x283bf5[_0xf0ab('0x4c')]['$gte']['split'](',');var _0x7ee6b3={};_0x7ee6b3[_0x38ea18[0x0]]={'$gte':moment(_0x38ea18[0x1])[_0xf0ab('0xe9')](_0xf0ab('0x10e'))};_0x33dbfc['where']=_[_0xf0ab('0x39')](_0x33dbfc['where'],_0x7ee6b3);}_0x33dbfc=_[_0xf0ab('0x39')]({},_0x33dbfc,_0x283bf5['options']);return db[_0xf0ab('0xd0')]['count']({'where':_0x33dbfc['where']})['then'](function(_0x1d1451){_0x546e13['count']=_0x1d1451;if(_0x283bf5[_0xf0ab('0x4c')][_0xf0ab('0xba')]){_0x33dbfc[_0xf0ab('0xbb')]=[{'all':!![]}];}return db[_0xf0ab('0xd0')][_0xf0ab('0x10f')](_0x33dbfc);})['then'](function(_0x16a1d2){_0x546e13[_0xf0ab('0xb8')]=_0x16a1d2;return _0x546e13;});}})[_0xf0ab('0x21')](respondWithFilteredResult(_0x1afcea,_0x33dbfc))[_0xf0ab('0x46')](handleError(_0x1afcea,null));};exports[_0xf0ab('0x110')]=function(_0x4b91de,_0x3a602f,_0x47788a){var _0x3592f1={'where':{}},_0x577f13={},_0x2f99c2={'count':0x0,'rows':[]};return db['ChatInteraction'][_0xf0ab('0xc0')]({'where':{'id':_0x4b91de[_0xf0ab('0xbd')]['id']}})['then'](handleEntityNotFound(_0x3a602f,null))['then'](function(_0x43c6b8){if(_0x43c6b8){_0x577f13['model']=_[_0xf0ab('0x4d')](db[_0xf0ab('0xd0')][_0xf0ab('0x47')]);_0x577f13[_0xf0ab('0x4c')]=_[_0xf0ab('0x4d')](_0x4b91de[_0xf0ab('0x4c')]);_0x577f13['filters']=_[_0xf0ab('0x4f')](_0x577f13[_0xf0ab('0x4b')],_0x577f13[_0xf0ab('0x4c')]);_0x3592f1[_0xf0ab('0x51')]=_[_0xf0ab('0x4f')](_0x577f13[_0xf0ab('0x4b')],qs[_0xf0ab('0x50')](_0x4b91de['query'][_0xf0ab('0x50')]));_0x3592f1[_0xf0ab('0x51')]=_0x3592f1['attributes'][_0xf0ab('0x52')]?_0x3592f1['attributes']:_0x577f13[_0xf0ab('0x4b')];if(!_0x4b91de['query']['hasOwnProperty']('nolimit')){_0x3592f1[_0xf0ab('0x30')]=qs[_0xf0ab('0x30')](_0x4b91de[_0xf0ab('0x4c')][_0xf0ab('0x30')]);_0x3592f1[_0xf0ab('0x2e')]=qs[_0xf0ab('0x2e')](_0x4b91de[_0xf0ab('0x4c')][_0xf0ab('0x2e')]);}_0x3592f1[_0xf0ab('0x55')]=qs[_0xf0ab('0x56')](_0x4b91de[_0xf0ab('0x4c')][_0xf0ab('0x56')]);_0x3592f1[_0xf0ab('0x83')]=qs[_0xf0ab('0x4e')](_[_0xf0ab('0x10c')](_0x4b91de[_0xf0ab('0x4c')],_0x577f13[_0xf0ab('0x4e')]));_0x3592f1['where'][_0xf0ab('0x10d')]=_0x43c6b8['id'];if(_0x4b91de['query'][_0xf0ab('0x8d')]){_0x3592f1['where']=_[_0xf0ab('0x39')](_0x3592f1[_0xf0ab('0x83')],{'$or':_[_0xf0ab('0x3f')](_0x3592f1['attributes'],function(_0x58f64c){var _0x5dc7d4={};_0x5dc7d4[_0x58f64c]={'$like':'%'+_0x4b91de[_0xf0ab('0x4c')][_0xf0ab('0x8d')]+'%'};return _0x5dc7d4;})});}_0x3592f1['where'][_0xf0ab('0xfc')]=![];if(_0x4b91de[_0xf0ab('0x4c')]['id']){_0x3592f1[_0xf0ab('0x83')]['id']={'$gt':_0x4b91de[_0xf0ab('0x4c')]['id']};}_0x3592f1=_['merge']({},_0x3592f1,_0x4b91de['options']);return db[_0xf0ab('0xd0')][_0xf0ab('0x31')]({'where':_0x3592f1[_0xf0ab('0x83')]})[_0xf0ab('0x21')](function(_0x2ab983){_0x2f99c2['count']=_0x2ab983;_0x3592f1[_0xf0ab('0xbb')]=[];if(_0x4b91de['query'][_0xf0ab('0x111')]){_0x3592f1[_0xf0ab('0xbb')][_0xf0ab('0x45')]({'model':db['User'],'as':_0xf0ab('0xec'),'attributes':['id',_0xf0ab('0x40'),_0xf0ab('0xf7')]});}if(_0x4b91de[_0xf0ab('0x4c')]['includeAll']){_0x3592f1[_0xf0ab('0xbb')]=[{'all':!![]}];}return db[_0xf0ab('0xd0')][_0xf0ab('0x10f')](_0x3592f1);})[_0xf0ab('0x21')](function(_0x3d70c0){_0x2f99c2[_0xf0ab('0xb8')]=_0x3d70c0;return _0x2f99c2;});}})[_0xf0ab('0x21')](respondWithFilteredResult(_0x3a602f,_0x3592f1))[_0xf0ab('0x46')](handleError(_0x3a602f,null));};exports['addTags']=function(_0x4d10af,_0x5cf4bd,_0x368523){return db['ChatInteraction'][_0xf0ab('0x6c')]({'where':{'id':_0x4d10af['params']['id']}})[_0xf0ab('0x21')](handleEntityNotFound(_0x5cf4bd,null))[_0xf0ab('0x21')](function(_0x46a38a){if(_0x46a38a){return _0x46a38a[_0xf0ab('0x112')](_0x4d10af[_0xf0ab('0x3a')][_0xf0ab('0x10a')],_['omit'](_0x4d10af[_0xf0ab('0x3a')],[_0xf0ab('0x10a'),'id'])||{})[_0xf0ab('0x113')](function(){return db['Tag'][_0xf0ab('0x10f')]({'attributes':['id',_0xf0ab('0x37'),_0xf0ab('0x59')],'where':{'id':_0x4d10af[_0xf0ab('0x3a')][_0xf0ab('0x10a')]}});})[_0xf0ab('0x21')](function(_0x1df97b){socket[_0xf0ab('0x114')](_0xf0ab('0x115'),{'id':Number(_0x4d10af[_0xf0ab('0xbd')]['id']),'tags':_0x1df97b||[]});return{'id':Number(_0x4d10af[_0xf0ab('0xbd')]['id']),'tags':_0x1df97b||[]};});}})[_0xf0ab('0x21')](respondWithResult(_0x5cf4bd,null))['catch'](handleError(_0x5cf4bd,null));};exports[_0xf0ab('0x116')]=function(_0x3ca465,_0x4e379d,_0x122e66){return db['ChatInteraction'][_0xf0ab('0x6c')]({'where':{'id':_0x3ca465[_0xf0ab('0xbd')]['id']}})[_0xf0ab('0x21')](handleEntityNotFound(_0x4e379d,null))[_0xf0ab('0x21')](function(_0x5c56e0){if(_0x5c56e0){return _0x5c56e0[_0xf0ab('0x116')](_0x3ca465[_0xf0ab('0x4c')][_0xf0ab('0x10a')]);}})['then'](respondWithStatusCode(_0x4e379d,null))[_0xf0ab('0x46')](handleError(_0x4e379d,null));};exports[_0xf0ab('0xe7')]=function(_0x2baa40,_0x4ff52d){var _0x2a2fea=moment()[_0xf0ab('0x117')]()[_0xf0ab('0xa0')]();var _0x4eccbd=path['join'](config['root'],_0xf0ab('0x118'),_0xf0ab('0x119'),_0xf0ab('0x11a'));var _0x5b6475=path[_0xf0ab('0xe5')](config[_0xf0ab('0x11b')],'server',_0xf0ab('0x119'),_0xf0ab('0x11c'));var _0x595bda=path[_0xf0ab('0xe5')](_0x4eccbd,_0x2a2fea);var _0x2bd3e3=util['format']('transcript-%d-%s.zip',_0x2baa40[_0xf0ab('0xbd')]['id'],_0x2a2fea);var _0x25242e=path[_0xf0ab('0xe5')](_0x4eccbd,_0x2bd3e3);var _0x3d8794=[];_0x3d8794[_0xf0ab('0x45')]({'model':db['User'],'as':_0xf0ab('0xec'),'attributes':['id','fullname'],'raw':!![]});_0x3d8794[_0xf0ab('0x45')]({'model':db[_0xf0ab('0xed')],'as':_0xf0ab('0x70'),'attributes':['id','firstName',_0xf0ab('0x11d')],'raw':!![]});if(_0x2baa40[_0xf0ab('0x4c')][_0xf0ab('0x11c')]){_0x3d8794[_0xf0ab('0x45')]({'model':db[_0xf0ab('0xe0')],'as':'Attachment','raw':!![]});}var _0x243763=[{'model':db[_0xf0ab('0xd0')],'as':_0xf0ab('0xee'),'attributes':['id',_0xf0ab('0x3a'),'createdAt',_0xf0ab('0xfb'),_0xf0ab('0xfc'),_0xf0ab('0x88')],'include':_0x3d8794}];_0x243763['push']({'model':db[_0xf0ab('0xbf')],'as':_0xf0ab('0x11e'),'attributes':['id',_0xf0ab('0x37')]});_0x243763['push']({'model':db[_0xf0ab('0xec')],'as':_0xf0ab('0x11f'),'attributes':['id',_0xf0ab('0x40')]});return db[_0xf0ab('0xa1')]['find']({'where':{'id':_0x2baa40[_0xf0ab('0xbd')]['id']},'include':_0x243763})[_0xf0ab('0x21')](handleEntityNotFound(_0x4ff52d,null))[_0xf0ab('0x21')](function(_0x2c2e20){if(_0x2c2e20){var _0x57bd77=_0x2c2e20[_0xf0ab('0x120')]({'plain':!![]});fs[_0xf0ab('0x121')](_0x595bda);var _0x169b02={'channel':_0xf0ab('0x122'),'account':_0x57bd77[_0xf0ab('0x11e')]['name'],'agent':_0x57bd77[_0xf0ab('0x11f')]?_0x57bd77['Owner'][_0xf0ab('0x40')]:_0xf0ab('0x123'),'createdAt':moment(_0x57bd77[_0xf0ab('0xf9')])['format'](_0xf0ab('0x10e'))['toString'](),'closedAt':_0x57bd77['closed']?moment(_0x57bd77['closedAt'])[_0xf0ab('0xe9')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x57bd77[_0xf0ab('0xda')],'chatInfo':{'browser':_0x57bd77[_0xf0ab('0x124')],'os':_0x57bd77[_0xf0ab('0x125')],'referer':_0x57bd77[_0xf0ab('0x126')],'customerIp':_0x57bd77[_0xf0ab('0x127')],'customerPort':_0x57bd77['customerPort']?_0x57bd77[_0xf0ab('0x128')]:_0xf0ab('0x123')},'messages':_(_0x57bd77['Messages'])[_0xf0ab('0x129')]()[_0xf0ab('0x8d')]({'secret':![]})[_0xf0ab('0x3f')](function(_0x2aa512){if(_0x2aa512['Attachment']){var _0x26009e=path[_0xf0ab('0xe5')](_0x5b6475,_0x2aa512['Attachment'][_0xf0ab('0xdd')]);if(fs[_0xf0ab('0x12a')](_0x26009e)){fs['createReadStream'](_0x26009e)[_0xf0ab('0x12b')](fs[_0xf0ab('0x12c')](path['join'](_0x595bda,_0x2aa512[_0xf0ab('0xe0')][_0xf0ab('0xdd')])));}}return{'date':moment(_0x2aa512[_0xf0ab('0xf9')])[_0xf0ab('0xe9')](_0xf0ab('0x10e'))['toString'](),'sender':_0x2aa512[_0xf0ab('0xfb')]==='out'?_0x2aa512[_0xf0ab('0xec')]?_0x2aa512['User'][_0xf0ab('0x40')]:_0xf0ab('0xf1'):_0x2aa512[_0xf0ab('0x70')][_0xf0ab('0x12d')]+(_0x2aa512[_0xf0ab('0x70')][_0xf0ab('0x11d')]?'\x20'+_0x2aa512[_0xf0ab('0x70')]['lastName']:''),'body':_0x2aa512[_0xf0ab('0xe0')]?_0x2aa512[_0xf0ab('0xe0')][_0xf0ab('0xdd')]:_0x2aa512[_0xf0ab('0x3a')],'direction':_0x2aa512[_0xf0ab('0xfb')]==='out'?'A':'C','secret':_0x2aa512[_0xf0ab('0xfc')],'read':_0x2aa512[_0xf0ab('0x88')],'attachment':_0x2aa512[_0xf0ab('0xe0')]};})[_0xf0ab('0x72')]()};return ejs['renderFile'](path[_0xf0ab('0xe5')](config[_0xf0ab('0x11b')],_0xf0ab('0x118'),_0xf0ab('0x12e'),'downloadInteraction.ejs'),{'interaction':_0x169b02})['then'](function(_0x3ad886){var _0x3df4a2=path['join'](_0x595bda,'transcript-'+_0x57bd77['id']+'-'+_0x2a2fea+_0xf0ab('0x12f'));var _0x378d44={'path':_0x3df4a2,'channel':_0xf0ab('0x122'),'interactionId':_0x57bd77['id']};return pdf[_0xf0ab('0x130')](_0x3ad886,_0x378d44);})[_0xf0ab('0x21')](function(){return new BPromise(function(_0x1e4acb,_0x25a1eb){zipdir(_0x595bda,{'saveTo':_0x25242e},function(_0x406090,_0x414d09){if(_0x406090)return _0x25a1eb(_0x406090);return _0x1e4acb(_0x414d09);});})[_0xf0ab('0x21')](function(){return new BPromise(function(_0x235528,_0x581c80){rimraf(_0x595bda,function(_0x14332a){if(_0x14332a)_0x581c80(_0x14332a);return _0x235528();});});})[_0xf0ab('0x21')](function(){return _0x4ff52d[_0xf0ab('0xe7')](_0x25242e,_0x2bd3e3,function(_0x4f9211){if(_0x4f9211){console[_0xf0ab('0x131')](_0xf0ab('0x132'),_0x4f9211);}else{fs[_0xf0ab('0x133')](_0x25242e);}});});});}else{return _0x4ff52d['sendStatus'](0xc8);}})[_0xf0ab('0x46')](handleError(_0x4ff52d,null));};
\ No newline at end of file
index 17dfa3c..1f5027b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb615=['length','emit','catch','events','ChatInteraction','../../mysqldb','save','remove','getUsers','then','setDataValue','map','findAll','unreadMessages'];(function(_0x550a61,_0x1c5d8c){var _0x248bfc=function(_0x38d79e){while(--_0x38d79e){_0x550a61['push'](_0x550a61['shift']());}};_0x248bfc(++_0x1c5d8c);}(_0xb615,0xf1));var _0x5b61=function(_0x5d0131,_0x1b1497){_0x5d0131=_0x5d0131-0x0;var _0x3915d8=_0xb615[_0x5d0131];return _0x3915d8;};'use strict';var EventEmitter=require(_0x5b61('0x0'));var ChatInteraction=require('../../mysqldb')['db'][_0x5b61('0x1')];var ChatMessage=require(_0x5b61('0x2'))['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5b61('0x3'),'afterUpdate':'update','afterDestroy':_0x5b61('0x4')};function emitEvent(_0x4e6c14){return function(_0x3c78c8,_0x23f6c4,_0x3cf2f2){_0x3c78c8[_0x5b61('0x5')]({'attributes':['id'],'raw':!![]})[_0x5b61('0x6')](function(_0x3fe047){_0x3c78c8[_0x5b61('0x7')]('Users',_0x3fe047[_0x5b61('0x8')](function(_0xea1e7f){return{'id':_0xea1e7f['id']};}));return ChatMessage[_0x5b61('0x9')]({'where':{'ChatInteractionId':_0x3c78c8['id'],'direction':'in','read':![]},'raw':!![]});})[_0x5b61('0x6')](function(_0xaf2601){_0x3c78c8[_0x5b61('0x7')](_0x5b61('0xa'),_0xaf2601[_0x5b61('0xb')]);ChatInteractionEvents[_0x5b61('0xc')](_0x4e6c14+':'+_0x3c78c8['id'],_0x3c78c8);ChatInteractionEvents[_0x5b61('0xc')](_0x4e6c14,_0x3c78c8);_0x3cf2f2(null);})[_0x5b61('0xd')](_0x3cf2f2(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module['exports']=ChatInteractionEvents;
\ No newline at end of file
+var _0xbcc2=['then','setDataValue','Users','findAll','length','catch','hasOwnProperty','hook','exports','../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','save','update','getUsers'];(function(_0x429370,_0x46ff4c){var _0x41a3ad=function(_0x47d51e){while(--_0x47d51e){_0x429370['push'](_0x429370['shift']());}};_0x41a3ad(++_0x46ff4c);}(_0xbcc2,0x69));var _0x2bcc=function(_0x2d63bc,_0x2f6e0d){_0x2d63bc=_0x2d63bc-0x0;var _0x42f9dc=_0xbcc2[_0x2d63bc];return _0x42f9dc;};'use strict';var EventEmitter=require('events');var ChatInteraction=require(_0x2bcc('0x0'))['db'][_0x2bcc('0x1')];var ChatMessage=require(_0x2bcc('0x0'))['db'][_0x2bcc('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x2bcc('0x3')](0x0);var events={'afterCreate':_0x2bcc('0x4'),'afterUpdate':_0x2bcc('0x5'),'afterDestroy':'remove'};function emitEvent(_0x2fcfa7){return function(_0x15ffbf,_0x2b2342,_0x464a61){_0x15ffbf[_0x2bcc('0x6')]({'attributes':['id'],'raw':!![]})[_0x2bcc('0x7')](function(_0x59ba02){_0x15ffbf[_0x2bcc('0x8')](_0x2bcc('0x9'),_0x59ba02['map'](function(_0xb9a8a9){return{'id':_0xb9a8a9['id']};}));return ChatMessage[_0x2bcc('0xa')]({'where':{'ChatInteractionId':_0x15ffbf['id'],'direction':'in','read':![]},'raw':!![]});})[_0x2bcc('0x7')](function(_0x148b3f){_0x15ffbf[_0x2bcc('0x8')]('unreadMessages',_0x148b3f[_0x2bcc('0xb')]);ChatInteractionEvents['emit'](_0x2fcfa7+':'+_0x15ffbf['id'],_0x15ffbf);ChatInteractionEvents['emit'](_0x2fcfa7,_0x15ffbf);_0x464a61(null);})[_0x2bcc('0xc')](_0x464a61(null));};}for(var e in events){if(events[_0x2bcc('0xd')](e)){var event=events[e];ChatInteraction[_0x2bcc('0xe')](e,emitEvent(event));}}module[_0x2bcc('0xf')]=ChatInteractionEvents;
\ No newline at end of file
index a90c15c..e8ab8a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0aff=['format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','moment','bluebird','path','../../config/environment','./chatInteraction.attributes','define','ChatInteraction','chat_interactions','closed','closedAt'];(function(_0x3175f3,_0x330954){var _0x2b9216=function(_0x422b57){while(--_0x422b57){_0x3175f3['push'](_0x3175f3['shift']());}};_0x2b9216(++_0x330954);}(_0x0aff,0xa7));var _0xf0af=function(_0x51ab33,_0x71a8a8){_0x51ab33=_0x51ab33-0x0;var _0x5e1298=_0x0aff[_0x51ab33];return _0x5e1298;};'use strict';var _=require(_0xf0af('0x0'));var util=require(_0xf0af('0x1'));var logger=require('../../config/logger')(_0xf0af('0x2'));var moment=require(_0xf0af('0x3'));var BPromise=require(_0xf0af('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf0af('0x5'));var rimraf=require('rimraf');var config=require(_0xf0af('0x6'));var attributes=require(_0xf0af('0x7'));module['exports']=function(_0x111edf,_0x2c0517){return _0x111edf[_0xf0af('0x8')](_0xf0af('0x9'),attributes,{'tableName':_0xf0af('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x41ac99,_0x48255b,_0x41ed4c){if(_0x41ac99['changed'](_0xf0af('0xb'))){_0x41ac99[_0xf0af('0xc')]=moment()[_0xf0af('0xd')](_0xf0af('0xe'));}_0x41ed4c(null,_0x41ac99);}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x88c5=['changed','closed','closedAt','format','utf8mb4','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','chat_interactions'];(function(_0x138f59,_0x1b53fb){var _0x3d114d=function(_0x1f9461){while(--_0x1f9461){_0x138f59['push'](_0x138f59['shift']());}};_0x3d114d(++_0x1b53fb);}(_0x88c5,0xf3));var _0x588c=function(_0x4e55a9,_0x241b22){_0x4e55a9=_0x4e55a9-0x0;var _0x4a9b67=_0x88c5[_0x4e55a9];return _0x4a9b67;};'use strict';var _=require(_0x588c('0x0'));var util=require(_0x588c('0x1'));var logger=require(_0x588c('0x2'))(_0x588c('0x3'));var moment=require(_0x588c('0x4'));var BPromise=require('bluebird');var rp=require(_0x588c('0x5'));var fs=require('fs');var path=require(_0x588c('0x6'));var rimraf=require(_0x588c('0x7'));var config=require(_0x588c('0x8'));var attributes=require('./chatInteraction.attributes');module[_0x588c('0x9')]=function(_0x5e23cd,_0x2033e9){return _0x5e23cd[_0x588c('0xa')]('ChatInteraction',attributes,{'tableName':_0x588c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x305498,_0x3aa822,_0x46ab0c){if(_0x305498[_0x588c('0xc')](_0x588c('0xd'))){_0x305498[_0x588c('0xe')]=moment()[_0x588c('0xf')]('YYYY-MM-DD\x20HH:mm:ss');}_0x46ab0c(null,_0x305498);}},'charset':_0x588c('0x10'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index df395bb..a432c3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e09=['ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateChatInteraction','ChatInteraction','body','raw','where','options','attributes','limit','debug','AddTagsToChatInteraction','find','addTags','omit','ids','AddTags','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','./chatInteraction.socket','register','then','info'];(function(_0x1fd5c3,_0x101259){var _0x5666a2=function(_0x2299b5){while(--_0x2299b5){_0x1fd5c3['push'](_0x1fd5c3['shift']());}};_0x5666a2(++_0x101259);}(_0x0e09,0x160));var _0x90e0=function(_0x34061d,_0x21895c){_0x34061d=_0x34061d-0x0;var _0x4a4df4=_0x0e09[_0x34061d];return _0x4a4df4;};'use strict';var _=require(_0x90e0('0x0'));var util=require(_0x90e0('0x1'));var moment=require('moment');var BPromise=require(_0x90e0('0x2'));var rs=require(_0x90e0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x90e0('0x4'))['db'];var utils=require(_0x90e0('0x5'));var logger=require(_0x90e0('0x6'))('rpc');var config=require(_0x90e0('0x7'));var jayson=require(_0x90e0('0x8'));var client=jayson[_0x90e0('0x9')][_0x90e0('0xa')]({'port':0x232a});config[_0x90e0('0xb')]=_['defaults'](config[_0x90e0('0xb')],{'host':_0x90e0('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x90e0('0xb')]));require(_0x90e0('0xd'))[_0x90e0('0xe')](socket);function respondWithRpcPromise(_0x1798b0,_0x59e1d5,_0x3b6813){return new BPromise(function(_0x58cf59,_0x5a6d59){return client['request'](_0x1798b0,_0x3b6813)[_0x90e0('0xf')](function(_0xe37ee4){logger[_0x90e0('0x10')](_0x90e0('0x11'),_0x59e1d5,_0x90e0('0x12'));logger['debug'](_0x90e0('0x13'),_0x59e1d5,_0x90e0('0x12'),JSON[_0x90e0('0x14')](_0xe37ee4));if(_0xe37ee4[_0x90e0('0x15')]){if(_0xe37ee4[_0x90e0('0x15')][_0x90e0('0x16')]===0x1f4){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x59e1d5,_0xe37ee4[_0x90e0('0x15')][_0x90e0('0x17')]);return _0x5a6d59(_0xe37ee4[_0x90e0('0x15')]['message']);}logger[_0x90e0('0x15')](_0x90e0('0x11'),_0x59e1d5,_0xe37ee4[_0x90e0('0x15')][_0x90e0('0x17')]);return _0x58cf59(_0xe37ee4[_0x90e0('0x15')]['message']);}else{logger[_0x90e0('0x10')](_0x90e0('0x11'),_0x59e1d5,_0x90e0('0x12'));_0x58cf59(_0xe37ee4[_0x90e0('0x18')][_0x90e0('0x17')]);}})[_0x90e0('0x19')](function(_0x595928){logger[_0x90e0('0x15')](_0x90e0('0x11'),_0x59e1d5,_0x595928);_0x5a6d59(_0x595928);});});}exports[_0x90e0('0x1a')]=function(_0x37be91){var _0x5d471d=this;return new Promise(function(_0x342393,_0x3cd6e9){return db[_0x90e0('0x1b')]['update'](_0x37be91[_0x90e0('0x1c')],{'raw':_0x37be91['options']?_0x37be91['options'][_0x90e0('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x37be91['options']?_0x37be91['options'][_0x90e0('0x1e')]||null:null,'attributes':_0x37be91[_0x90e0('0x1f')]?_0x37be91[_0x90e0('0x1f')][_0x90e0('0x20')]||null:null,'limit':_0x37be91['options']?_0x37be91[_0x90e0('0x1f')][_0x90e0('0x21')]||null:null})['then'](function(_0x397305){logger[_0x90e0('0x10')]('UpdateChatInteraction',_0x37be91);logger[_0x90e0('0x22')](_0x90e0('0x1a'),_0x37be91,JSON[_0x90e0('0x14')](_0x397305));_0x342393(_0x397305);})[_0x90e0('0x19')](function(_0x2bbdc3){logger['error'](_0x90e0('0x1a'),_0x2bbdc3[_0x90e0('0x17')],_0x37be91);_0x3cd6e9(_0x5d471d[_0x90e0('0x15')](0x1f4,_0x2bbdc3['message']));});});};exports[_0x90e0('0x23')]=function(_0x3f9fed){return new Promise(function(_0x523608,_0x40e90d){return db[_0x90e0('0x1b')][_0x90e0('0x24')]({'where':_0x3f9fed[_0x90e0('0x1f')]?_0x3f9fed[_0x90e0('0x1f')]['where']||null:null})['then'](function(_0x3a6208){if(_0x3a6208){return _0x3a6208[_0x90e0('0x25')](_0x3f9fed['body']['ids'],_[_0x90e0('0x26')](_0x3f9fed[_0x90e0('0x1c')],[_0x90e0('0x27'),'id'])||{});}})['spread'](function(_0x2f38f6){logger['info'](_0x90e0('0x28'),_0x3f9fed);logger[_0x90e0('0x22')](_0x90e0('0x28'),_0x3f9fed,JSON['stringify'](_0x2f38f6));_0x523608(_0x2f38f6);})[_0x90e0('0x19')](function(_0x5e86cb){logger[_0x90e0('0x15')]('AddTags',_0x5e86cb[_0x90e0('0x17')],_0x3f9fed);_0x40e90d(_this[_0x90e0('0x15')](0x1f4,_0x5e86cb[_0x90e0('0x17')]));});});};
\ No newline at end of file
+var _0x0e95=['addTags','ids','spread','AddTags','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','message','result','UpdateChatInteraction','update','body','options','raw','where','attributes','limit','stringify','catch','find'];(function(_0x19df8e,_0xc8482){var _0x378598=function(_0x24f1d0){while(--_0x24f1d0){_0x19df8e['push'](_0x19df8e['shift']());}};_0x378598(++_0xc8482);}(_0x0e95,0x19e));var _0x50e9=function(_0x5ec5fd,_0x1a212c){_0x5ec5fd=_0x5ec5fd-0x0;var _0x31ce30=_0x0e95[_0x5ec5fd];return _0x31ce30;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x50e9('0x0'));var BPromise=require(_0x50e9('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x50e9('0x2'));var db=require(_0x50e9('0x3'))['db'];var utils=require(_0x50e9('0x4'));var logger=require('../../config/logger')(_0x50e9('0x5'));var config=require(_0x50e9('0x6'));var jayson=require(_0x50e9('0x7'));var client=jayson[_0x50e9('0x8')][_0x50e9('0x9')]({'port':0x232a});config[_0x50e9('0xa')]=_[_0x50e9('0xb')](config['redis'],{'host':_0x50e9('0xc'),'port':0x18eb});var socket=require(_0x50e9('0xd'))(new Redis(config[_0x50e9('0xa')]));require(_0x50e9('0xe'))[_0x50e9('0xf')](socket);function respondWithRpcPromise(_0x180ca1,_0x22f1b9,_0x593267){return new BPromise(function(_0x175cec,_0x2e754a){return client[_0x50e9('0x10')](_0x180ca1,_0x593267)[_0x50e9('0x11')](function(_0x147fbb){logger[_0x50e9('0x12')](_0x50e9('0x13'),_0x22f1b9,_0x50e9('0x14'));logger[_0x50e9('0x15')](_0x50e9('0x16'),_0x22f1b9,_0x50e9('0x14'),JSON['stringify'](_0x147fbb));if(_0x147fbb[_0x50e9('0x17')]){if(_0x147fbb[_0x50e9('0x17')]['code']===0x1f4){logger[_0x50e9('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x22f1b9,_0x147fbb[_0x50e9('0x17')][_0x50e9('0x18')]);return _0x2e754a(_0x147fbb[_0x50e9('0x17')]['message']);}logger[_0x50e9('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x22f1b9,_0x147fbb[_0x50e9('0x17')][_0x50e9('0x18')]);return _0x175cec(_0x147fbb[_0x50e9('0x17')][_0x50e9('0x18')]);}else{logger[_0x50e9('0x12')](_0x50e9('0x13'),_0x22f1b9,'request\x20sent');_0x175cec(_0x147fbb[_0x50e9('0x19')][_0x50e9('0x18')]);}})['catch'](function(_0xa65fc4){logger[_0x50e9('0x17')](_0x50e9('0x13'),_0x22f1b9,_0xa65fc4);_0x2e754a(_0xa65fc4);});});}exports[_0x50e9('0x1a')]=function(_0x182ba7){var _0x59d214=this;return new Promise(function(_0xb9b8d7,_0x44d067){return db['ChatInteraction'][_0x50e9('0x1b')](_0x182ba7[_0x50e9('0x1c')],{'raw':_0x182ba7[_0x50e9('0x1d')]?_0x182ba7['options'][_0x50e9('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x182ba7[_0x50e9('0x1d')]?_0x182ba7[_0x50e9('0x1d')][_0x50e9('0x1f')]||null:null,'attributes':_0x182ba7[_0x50e9('0x1d')]?_0x182ba7[_0x50e9('0x1d')][_0x50e9('0x20')]||null:null,'limit':_0x182ba7['options']?_0x182ba7[_0x50e9('0x1d')][_0x50e9('0x21')]||null:null})['then'](function(_0x4c645f){logger[_0x50e9('0x12')](_0x50e9('0x1a'),_0x182ba7);logger[_0x50e9('0x15')](_0x50e9('0x1a'),_0x182ba7,JSON[_0x50e9('0x22')](_0x4c645f));_0xb9b8d7(_0x4c645f);})[_0x50e9('0x23')](function(_0x46c400){logger[_0x50e9('0x17')](_0x50e9('0x1a'),_0x46c400[_0x50e9('0x18')],_0x182ba7);_0x44d067(_0x59d214[_0x50e9('0x17')](0x1f4,_0x46c400['message']));});});};exports['AddTagsToChatInteraction']=function(_0x4f5385){return new Promise(function(_0x326961,_0x39d780){return db['ChatInteraction'][_0x50e9('0x24')]({'where':_0x4f5385[_0x50e9('0x1d')]?_0x4f5385[_0x50e9('0x1d')][_0x50e9('0x1f')]||null:null})['then'](function(_0x383546){if(_0x383546){return _0x383546[_0x50e9('0x25')](_0x4f5385[_0x50e9('0x1c')]['ids'],_['omit'](_0x4f5385[_0x50e9('0x1c')],[_0x50e9('0x26'),'id'])||{});}})[_0x50e9('0x27')](function(_0x1f28be){logger['info'](_0x50e9('0x28'),_0x4f5385);logger[_0x50e9('0x15')](_0x50e9('0x28'),_0x4f5385,JSON[_0x50e9('0x22')](_0x1f28be));_0x326961(_0x1f28be);})[_0x50e9('0x23')](function(_0x12e63d){logger['error'](_0x50e9('0x28'),_0x12e63d[_0x50e9('0x18')],_0x4f5385);_0x39d780(_this[_0x50e9('0x17')](0x1f4,_0x12e63d['message']));});});};
\ No newline at end of file
index 8795629..2487ab7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b8d=['./chatInteraction.events','save','remove','update','emit','removeListener','register'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x0b8d,0xbd));var _0xd0b8=function(_0x474bc0,_0x26989c){_0x474bc0=_0x474bc0-0x0;var _0x4b24cf=_0x0b8d[_0x474bc0];return _0x4b24cf;};'use strict';var ChatInteractionEvents=require(_0xd0b8('0x0'));var events=[_0xd0b8('0x1'),_0xd0b8('0x2'),_0xd0b8('0x3')];function createListener(_0x590962,_0x55b19e){return function(_0x58dda3){_0x55b19e[_0xd0b8('0x4')](_0x590962,_0x58dda3);};}function removeListener(_0x2b9e59,_0x3de3ca){return function(){ChatInteractionEvents[_0xd0b8('0x5')](_0x2b9e59,_0x3de3ca);};}exports[_0xd0b8('0x6')]=function(_0x820540){for(var _0x3bf19d=0x0,_0x574535=events['length'];_0x3bf19d<_0x574535;_0x3bf19d++){var _0x6d7b41=events[_0x3bf19d];var _0x1f6e14=createListener('chatInteraction:'+_0x6d7b41,_0x820540);ChatInteractionEvents['on'](_0x6d7b41,_0x1f6e14);}};
\ No newline at end of file
+var _0xabc7=['save','remove','update','emit','register','length','chatInteraction:','./chatInteraction.events'];(function(_0x546a29,_0x51b2ba){var _0x4c5f2c=function(_0x1b18b1){while(--_0x1b18b1){_0x546a29['push'](_0x546a29['shift']());}};_0x4c5f2c(++_0x51b2ba);}(_0xabc7,0x77));var _0x7abc=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xabc7[_0x501510];return _0x1e6ee5;};'use strict';var ChatInteractionEvents=require(_0x7abc('0x0'));var events=[_0x7abc('0x1'),_0x7abc('0x2'),_0x7abc('0x3')];function createListener(_0xa2dbee,_0x519ff3){return function(_0xf70c85){_0x519ff3[_0x7abc('0x4')](_0xa2dbee,_0xf70c85);};}function removeListener(_0x1d5d82,_0x1ccd19){return function(){ChatInteractionEvents['removeListener'](_0x1d5d82,_0x1ccd19);};}exports[_0x7abc('0x5')]=function(_0x5b6444){for(var _0x22d3e2=0x0,_0x35d70f=events[_0x7abc('0x6')];_0x22d3e2<_0x35d70f;_0x22d3e2++){var _0x58ae05=events[_0x22d3e2];var _0x2b60d2=createListener(_0x7abc('0x7')+_0x58ae05,_0x5b6444);ChatInteractionEvents['on'](_0x58ae05,_0x2b60d2);}};
\ No newline at end of file
index 9497688..824dee6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3911=['now','originalname','replace','/:id/attachment_upload','single','file','attachmentUpload','/:id/messages','addMessage','/:id/tags','chat','chatinteraction:addtags','addTags','tracked','update','put','/:id/custom_update','customUpdate','/:id/abandon','abandon','/:id/close','close','delete','chatinteraction:destroy','destroy','removeTags','exports','multer','path','express','Router','fs-extra','../../components/auth/service','./chatInteraction.controller','get','isAuthenticated','index','/describe','/:id','isChatInteractionAuthorized','/:id/my_messages','getMyMessages','/:id/download','download','post','create','/:id/vidaoo','diskStorage','root','server/files/attachments/','format','%s-%s'];(function(_0x2eb370,_0x4f62b5){var _0x473c1=function(_0x4377e9){while(--_0x4377e9){_0x2eb370['push'](_0x2eb370['shift']());}};_0x473c1(++_0x4f62b5);}(_0x3911,0x11f));var _0x1391=function(_0x57411a,_0x59328f){_0x57411a=_0x57411a-0x0;var _0xd487ba=_0x3911[_0x57411a];return _0xd487ba;};'use strict';var multer=require(_0x1391('0x0'));var util=require('util');var path=require(_0x1391('0x1'));var timeout=require('connect-timeout');var express=require(_0x1391('0x2'));var router=express[_0x1391('0x3')]();var fs_extra=require(_0x1391('0x4'));var auth=require(_0x1391('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x1391('0x6'));router[_0x1391('0x7')]('/',auth[_0x1391('0x8')](),controller[_0x1391('0x9')]);router[_0x1391('0x7')](_0x1391('0xa'),auth[_0x1391('0x8')](),controller['describe']);router[_0x1391('0x7')](_0x1391('0xb'),auth[_0x1391('0xc')](),controller['show']);router[_0x1391('0x7')]('/:id/attachment_download',auth[_0x1391('0xc')](),controller['attachmentDownload']);router[_0x1391('0x7')]('/:id/messages',auth[_0x1391('0x8')](),controller['getMessages']);router[_0x1391('0x7')](_0x1391('0xd'),auth[_0x1391('0xc')](),controller[_0x1391('0xe')]);router[_0x1391('0x7')](_0x1391('0xf'),auth[_0x1391('0x8')](),controller[_0x1391('0x10')]);router[_0x1391('0x11')]('/',auth[_0x1391('0x8')](),controller[_0x1391('0x12')]);router[_0x1391('0x11')](_0x1391('0x13'),auth[_0x1391('0x8')](),controller['createVidaooSession']);var upload=multer({'storage':multer[_0x1391('0x14')]({'destination':function(_0x5bd1f8,_0x5acbb2,_0x2e17a2){_0x2e17a2(null,path['join'](config[_0x1391('0x15')],_0x1391('0x16')));},'filename':function(_0x514766,_0x1b5732,_0x52b797){_0x52b797(null,util[_0x1391('0x17')](_0x1391('0x18'),Date[_0x1391('0x19')](),_0x1b5732[_0x1391('0x1a')][_0x1391('0x1b')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x1391('0x11')](_0x1391('0x1c'),upload[_0x1391('0x1d')](_0x1391('0x1e')),controller[_0x1391('0x1f')]);router['post'](_0x1391('0x20'),auth['isChatInteractionAuthorized'](),controller[_0x1391('0x21')]);router['post'](_0x1391('0x22'),auth[_0x1391('0x8')](),interaction['tracked'](_0x1391('0x23'),_0x1391('0x24')),controller[_0x1391('0x25')]);router['put'](_0x1391('0xb'),auth[_0x1391('0x8')](),interaction[_0x1391('0x26')](_0x1391('0x23'),'chatinteraction:update'),controller[_0x1391('0x27')]);router[_0x1391('0x28')](_0x1391('0x29'),controller[_0x1391('0x2a')]);router[_0x1391('0x28')](_0x1391('0x2b'),auth['isChatInteractionAuthorized'](),controller[_0x1391('0x2c')]);router['put'](_0x1391('0x2d'),controller[_0x1391('0x2e')]);router[_0x1391('0x2f')](_0x1391('0xb'),auth[_0x1391('0x8')](),interaction[_0x1391('0x26')](_0x1391('0x23'),_0x1391('0x30')),controller[_0x1391('0x31')]);router[_0x1391('0x2f')]('/:id/tags',auth[_0x1391('0x8')](),controller[_0x1391('0x32')]);module[_0x1391('0x33')]=router;
\ No newline at end of file
+var _0x227c=['/:id/vidaoo','diskStorage','join','root','format','replace','/:id/attachment_upload','single','attachmentUpload','addMessage','/:id/tags','chat','chatinteraction:addtags','addTags','put','tracked','chatinteraction:update','/:id/custom_update','customUpdate','abandon','/:id/close','close','delete','chatinteraction:destroy','destroy','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatInteraction.controller','get','isAuthenticated','index','describe','/:id','show','isChatInteractionAuthorized','attachmentDownload','getMessages','/:id/download','download','post'];(function(_0x59225f,_0x48cd4f){var _0x452050=function(_0x1c3beb){while(--_0x1c3beb){_0x59225f['push'](_0x59225f['shift']());}};_0x452050(++_0x48cd4f);}(_0x227c,0x154));var _0xc227=function(_0x436017,_0x47c412){_0x436017=_0x436017-0x0;var _0x50ed01=_0x227c[_0x436017];return _0x50ed01;};'use strict';var multer=require(_0xc227('0x0'));var util=require(_0xc227('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xc227('0x2'));var router=express[_0xc227('0x3')]();var fs_extra=require(_0xc227('0x4'));var auth=require(_0xc227('0x5'));var interaction=require(_0xc227('0x6'));var config=require('../../config/environment');var controller=require(_0xc227('0x7'));router[_0xc227('0x8')]('/',auth[_0xc227('0x9')](),controller[_0xc227('0xa')]);router[_0xc227('0x8')]('/describe',auth[_0xc227('0x9')](),controller[_0xc227('0xb')]);router[_0xc227('0x8')](_0xc227('0xc'),auth['isChatInteractionAuthorized'](),controller[_0xc227('0xd')]);router[_0xc227('0x8')]('/:id/attachment_download',auth[_0xc227('0xe')](),controller[_0xc227('0xf')]);router[_0xc227('0x8')]('/:id/messages',auth[_0xc227('0x9')](),controller[_0xc227('0x10')]);router[_0xc227('0x8')]('/:id/my_messages',auth[_0xc227('0xe')](),controller['getMyMessages']);router[_0xc227('0x8')](_0xc227('0x11'),auth[_0xc227('0x9')](),controller[_0xc227('0x12')]);router[_0xc227('0x13')]('/',auth[_0xc227('0x9')](),controller['create']);router['post'](_0xc227('0x14'),auth['isAuthenticated'](),controller['createVidaooSession']);var upload=multer({'storage':multer[_0xc227('0x15')]({'destination':function(_0x2e3232,_0x3900a6,_0x4d0f1c){_0x4d0f1c(null,path[_0xc227('0x16')](config[_0xc227('0x17')],'server/files/attachments/'));},'filename':function(_0x3cbab1,_0x3c6339,_0x46da4){_0x46da4(null,util[_0xc227('0x18')]('%s-%s',Date['now'](),_0x3c6339['originalname'][_0xc227('0x19')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xc227('0x13')](_0xc227('0x1a'),upload[_0xc227('0x1b')]('file'),controller[_0xc227('0x1c')]);router[_0xc227('0x13')]('/:id/messages',auth['isChatInteractionAuthorized'](),controller[_0xc227('0x1d')]);router[_0xc227('0x13')](_0xc227('0x1e'),auth[_0xc227('0x9')](),interaction['tracked'](_0xc227('0x1f'),_0xc227('0x20')),controller[_0xc227('0x21')]);router[_0xc227('0x22')]('/:id',auth['isAuthenticated'](),interaction[_0xc227('0x23')](_0xc227('0x1f'),_0xc227('0x24')),controller['update']);router['put'](_0xc227('0x25'),controller[_0xc227('0x26')]);router[_0xc227('0x22')]('/:id/abandon',auth[_0xc227('0xe')](),controller[_0xc227('0x27')]);router[_0xc227('0x22')](_0xc227('0x28'),controller[_0xc227('0x29')]);router[_0xc227('0x2a')](_0xc227('0xc'),auth['isAuthenticated'](),interaction[_0xc227('0x23')](_0xc227('0x1f'),_0xc227('0x2b')),controller[_0xc227('0x2c')]);router[_0xc227('0x2a')](_0xc227('0x1e'),auth[_0xc227('0x9')](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
index 08d0a7d..919eb67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16ad=['medium','BOOLEAN','sequelize','exports'];(function(_0x25a091,_0x35fcf6){var _0x34503d=function(_0x514287){while(--_0x514287){_0x25a091['push'](_0x25a091['shift']());}};_0x34503d(++_0x35fcf6);}(_0x16ad,0x132));var _0xd16a=function(_0x1fb07d,_0x16b8cb){_0x1fb07d=_0x1fb07d-0x0;var _0x5a101f=_0x16ad[_0x1fb07d];return _0x5a101f;};'use strict';var Sequelize=require(_0xd16a('0x0'));module[_0xd16a('0x1')]={'body':{'type':Sequelize['TEXT'](_0xd16a('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xd16a('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x0fdd=['exports','TEXT','medium','BOOLEAN','INTEGER','sequelize'];(function(_0xe6391c,_0x322480){var _0x3f396f=function(_0x13f612){while(--_0x13f612){_0xe6391c['push'](_0xe6391c['shift']());}};_0x3f396f(++_0x322480);}(_0x0fdd,0x167));var _0xd0fd=function(_0x2ea4f6,_0x429a6c){_0x2ea4f6=_0x2ea4f6-0x0;var _0x5a7005=_0x0fdd[_0x2ea4f6];return _0x5a7005;};'use strict';var Sequelize=require(_0xd0fd('0x0'));module[_0xd0fd('0x1')]={'body':{'type':Sequelize[_0xd0fd('0x2')](_0xd0fd('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xd0fd('0x4')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xd0fd('0x5')]}};
\ No newline at end of file
index d93d6bb..248d787 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x753c=['include','rows','catch','show','keys','ChatInternalMessage','fields','length','find','create','update','body','params','describe','get','lastMessageAt','createdAt','lastMessage','getUsers','findAll','agent','admin','user','fullname','role','userpic','internal','online','lastLoginAt','showWebBar','VoiceQueue','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','filter','resourceId','push','messages','FromId','read','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','to-csv','ejs','fs-extra','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','then','destroy','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','filters','intersection','attributes','model','hasOwnProperty','nolimit','order','sort','where','pick','merge','options'];(function(_0x4cb500,_0x24f003){var _0x16661f=function(_0x3b5026){while(--_0x3b5026){_0x4cb500['push'](_0x4cb500['shift']());}};_0x16661f(++_0x24f003);}(_0x753c,0x101));var _0xc753=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x753c[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0xc753('0x0'));var rimraf=require(_0xc753('0x1'));var zipdir=require(_0xc753('0x2'));var jsonpatch=require(_0xc753('0x3'));var rp=require('request-promise');var moment=require(_0xc753('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc753('0x5'));var util=require(_0xc753('0x6'));var path=require(_0xc753('0x7'));var sox=require('sox');var csv=require(_0xc753('0x8'));var ejs=require(_0xc753('0x9'));var fs=require('fs');var fs_extra=require(_0xc753('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc753('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc753('0x8'));var querystring=require(_0xc753('0xc'));var Papa=require(_0xc753('0xd'));var Redis=require(_0xc753('0xe'));var authService=require(_0xc753('0xf'));var qs=require(_0xc753('0x10'));var as=require(_0xc753('0x11'));var hardwareService=require(_0xc753('0x12'));var logger=require(_0xc753('0x13'))(_0xc753('0x14'));var utils=require('../../config/utils');var config=require(_0xc753('0x15'));var licenseUtil=require(_0xc753('0x16'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xc753('0x17')](config['redis'],{'host':_0xc753('0x18'),'port':0x18eb});var socket=require(_0xc753('0x19'))(new Redis(config['redis']));require(_0xc753('0x1a'))[_0xc753('0x1b')](socket);function respondWithStatusCode(_0x468aea,_0xa1047c){_0xa1047c=_0xa1047c||0xcc;return function(_0x3ce340){if(_0x3ce340){return _0x468aea['sendStatus'](_0xa1047c);}return _0x468aea['status'](_0xa1047c)[_0xc753('0x1c')]();};}function respondWithResult(_0x1e0d42,_0x3533d4){_0x3533d4=_0x3533d4||0xc8;return function(_0x392bad){if(_0x392bad){return _0x1e0d42[_0xc753('0x1d')](_0x3533d4)[_0xc753('0x1e')](_0x392bad);}};}function respondWithFilteredResult(_0x53a396,_0x3e3301){return function(_0x57d7dd){if(_0x57d7dd){var _0x4fc0ca=typeof _0x3e3301[_0xc753('0x1f')]===_0xc753('0x20')&&typeof _0x3e3301[_0xc753('0x21')]===_0xc753('0x20');var _0x29ee72=_0x57d7dd[_0xc753('0x22')];var _0x45f2bd=_0x4fc0ca?0x0:_0x3e3301['offset'];var _0x5c7de6=_0x4fc0ca?_0x57d7dd['count']:_0x3e3301['offset']+_0x3e3301[_0xc753('0x21')];var _0x305895;if(_0x5c7de6>=_0x29ee72){_0x5c7de6=_0x29ee72;_0x305895=0xc8;}else{_0x305895=0xce;}_0x53a396[_0xc753('0x1d')](_0x305895);return _0x53a396['set'](_0xc753('0x23'),_0x45f2bd+'-'+_0x5c7de6+'/'+_0x29ee72)[_0xc753('0x1e')](_0x57d7dd);}return null;};}function patchUpdates(_0x2d8a3d){return function(_0x5cb06b){try{jsonpatch[_0xc753('0x24')](_0x5cb06b,_0x2d8a3d,!![]);}catch(_0x2d61ae){return BPromise[_0xc753('0x25')](_0x2d61ae);}return _0x5cb06b['save']();};}function saveUpdates(_0x2f6929,_0x495fae){return function(_0x19b3ac){if(_0x19b3ac){return _0x19b3ac['update'](_0x2f6929)[_0xc753('0x26')](function(_0x1dc5ee){return _0x1dc5ee;});}return null;};}function removeEntity(_0x468572,_0x597dd2){return function(_0x2a5347){if(_0x2a5347){return _0x2a5347[_0xc753('0x27')]()[_0xc753('0x26')](function(){_0x468572['status'](0xcc)[_0xc753('0x1c')]();});}};}function handleEntityNotFound(_0x55e1dd,_0x4e18a0){return function(_0xad08fc){if(!_0xad08fc){_0x55e1dd[_0xc753('0x28')](0x194);}return _0xad08fc;};}function handleError(_0x55366e,_0x27e7e2){_0x27e7e2=_0x27e7e2||0x1f4;return function(_0x1e09e0){logger[_0xc753('0x29')](_0x1e09e0[_0xc753('0x2a')]);if(_0x1e09e0[_0xc753('0x2b')]){delete _0x1e09e0[_0xc753('0x2b')];}_0x55366e[_0xc753('0x1d')](_0x27e7e2)[_0xc753('0x2c')](_0x1e09e0);};}exports[_0xc753('0x2d')]=function(_0x45d002,_0x1601f2){var _0xb5e2fd={},_0x1dd638={},_0x177fda={'count':0x0,'rows':[]};var _0x4c79e5=_['map'](db['ChatInternalMessage'][_0xc753('0x2e')],function(_0x118b07){return{'name':_0x118b07[_0xc753('0x2f')],'type':_0x118b07[_0xc753('0x30')][_0xc753('0x31')]};});_0x1dd638['model']=_[_0xc753('0x32')](_0x4c79e5,_0xc753('0x2b'));_0x1dd638[_0xc753('0x33')]=_['keys'](_0x45d002['query']);_0x1dd638[_0xc753('0x34')]=_[_0xc753('0x35')](_0x1dd638['model'],_0x1dd638[_0xc753('0x33')]);_0xb5e2fd[_0xc753('0x36')]=_[_0xc753('0x35')](_0x1dd638[_0xc753('0x37')],qs['fields'](_0x45d002[_0xc753('0x33')]['fields']));_0xb5e2fd['attributes']=_0xb5e2fd[_0xc753('0x36')]['length']?_0xb5e2fd[_0xc753('0x36')]:_0x1dd638[_0xc753('0x37')];if(!_0x45d002[_0xc753('0x33')][_0xc753('0x38')](_0xc753('0x39'))){_0xb5e2fd['limit']=qs[_0xc753('0x21')](_0x45d002[_0xc753('0x33')][_0xc753('0x21')]);_0xb5e2fd['offset']=qs[_0xc753('0x1f')](_0x45d002[_0xc753('0x33')][_0xc753('0x1f')]);}_0xb5e2fd[_0xc753('0x3a')]=qs[_0xc753('0x3b')](_0x45d002[_0xc753('0x33')][_0xc753('0x3b')]);_0xb5e2fd[_0xc753('0x3c')]=qs[_0xc753('0x34')](_[_0xc753('0x3d')](_0x45d002['query'],_0x1dd638['filters']),_0x4c79e5);if(_0x45d002[_0xc753('0x33')]['filter']){_0xb5e2fd['where']=_[_0xc753('0x3e')](_0xb5e2fd[_0xc753('0x3c')],{'$or':_[_0xc753('0x32')](_0x4c79e5,function(_0x207dce){if(_0x207dce[_0xc753('0x30')]!=='VIRTUAL'){var _0x45b3b3={};_0x45b3b3[_0x207dce[_0xc753('0x2b')]]={'$like':'%'+_0x45d002[_0xc753('0x33')]['filter']+'%'};return _0x45b3b3;}})});}_0xb5e2fd=_[_0xc753('0x3e')]({},_0xb5e2fd,_0x45d002[_0xc753('0x3f')]);var _0xf94d0a={'where':_0xb5e2fd[_0xc753('0x3c')]};return db['ChatInternalMessage'][_0xc753('0x22')](_0xf94d0a)[_0xc753('0x26')](function(_0x383cc0){_0x177fda['count']=_0x383cc0;if(_0x45d002[_0xc753('0x33')]['includeAll']){_0xb5e2fd[_0xc753('0x40')]=[{'all':!![]}];}return db['ChatInternalMessage']['findAll'](_0xb5e2fd);})[_0xc753('0x26')](function(_0x15157d){_0x177fda[_0xc753('0x41')]=_0x15157d;return _0x177fda;})[_0xc753('0x26')](respondWithFilteredResult(_0x1601f2,_0xb5e2fd))[_0xc753('0x42')](handleError(_0x1601f2,null));};exports[_0xc753('0x43')]=function(_0x3ba9bd,_0x4c03ab){var _0x4fe084={'raw':!![],'where':{'id':_0x3ba9bd['params']['id']}},_0x1db4d3={};_0x1db4d3['model']=_[_0xc753('0x44')](db[_0xc753('0x45')][_0xc753('0x2e')]);_0x1db4d3[_0xc753('0x33')]=_[_0xc753('0x44')](_0x3ba9bd['query']);_0x1db4d3['filters']=_[_0xc753('0x35')](_0x1db4d3[_0xc753('0x37')],_0x1db4d3[_0xc753('0x33')]);_0x4fe084['attributes']=_[_0xc753('0x35')](_0x1db4d3[_0xc753('0x37')],qs[_0xc753('0x46')](_0x3ba9bd['query'][_0xc753('0x46')]));_0x4fe084[_0xc753('0x36')]=_0x4fe084['attributes'][_0xc753('0x47')]?_0x4fe084['attributes']:_0x1db4d3[_0xc753('0x37')];if(_0x3ba9bd[_0xc753('0x33')]['includeAll']){_0x4fe084[_0xc753('0x40')]=[{'all':!![]}];}_0x4fe084=_['merge']({},_0x4fe084,_0x3ba9bd[_0xc753('0x3f')]);return db[_0xc753('0x45')][_0xc753('0x48')](_0x4fe084)[_0xc753('0x26')](handleEntityNotFound(_0x4c03ab,null))['then'](respondWithResult(_0x4c03ab,null))[_0xc753('0x42')](handleError(_0x4c03ab,null));};exports[_0xc753('0x49')]=function(_0x13e225,_0x242794){return db[_0xc753('0x45')][_0xc753('0x49')](_0x13e225['body'],{})[_0xc753('0x26')](respondWithResult(_0x242794,0xc9))['catch'](handleError(_0x242794,null));};exports[_0xc753('0x4a')]=function(_0x12e307,_0x48cdb5){if(_0x12e307[_0xc753('0x4b')]['id']){delete _0x12e307[_0xc753('0x4b')]['id'];}return db[_0xc753('0x45')][_0xc753('0x48')]({'where':{'id':_0x12e307[_0xc753('0x4c')]['id']}})[_0xc753('0x26')](handleEntityNotFound(_0x48cdb5,null))['then'](saveUpdates(_0x12e307[_0xc753('0x4b')],null))['then'](respondWithResult(_0x48cdb5,null))['catch'](handleError(_0x48cdb5,null));};exports['destroy']=function(_0x4fa83c,_0x4477ef){return db[_0xc753('0x45')][_0xc753('0x48')]({'where':{'id':_0x4fa83c[_0xc753('0x4c')]['id']}})[_0xc753('0x26')](handleEntityNotFound(_0x4477ef,null))[_0xc753('0x26')](removeEntity(_0x4477ef,null))['catch'](handleError(_0x4477ef,null));};exports[_0xc753('0x4d')]=function(_0x2fcdfe,_0x3e5b67){return db[_0xc753('0x45')]['describe']()[_0xc753('0x26')](respondWithResult(_0x3e5b67,null))[_0xc753('0x42')](handleError(_0x3e5b67,null));};function wrapUser(_0x37da57){return function(_0x16fc98){var _0x1bbd1a=_0x37da57[_0xc753('0x4e')]({'plain':!![]});_0x1bbd1a['messages']=[];if(_0x16fc98){_0x1bbd1a[_0xc753('0x4f')]=_0x16fc98[_0xc753('0x50')];_0x1bbd1a[_0xc753('0x51')]=_0x16fc98;}else{_0x1bbd1a[_0xc753('0x4f')]=moment(0x0)['format']('YYYY-MM-DD\x20HH:mm:ss');_0x1bbd1a[_0xc753('0x51')]={};}return _0x1bbd1a;};}exports[_0xc753('0x52')]=function(_0x31746b,_0x5ca144,_0x122aee){var _0x3eefe3=[];return db['User'][_0xc753('0x53')]({'where':{'role':[_0xc753('0x54'),_0xc753('0x55'),_0xc753('0x56')]},'attributes':['id',_0xc753('0x57'),_0xc753('0x2b'),_0xc753('0x58'),_0xc753('0x59'),_0xc753('0x5a'),_0xc753('0x5b'),_0xc753('0x5c'),'allowmessenger',_0xc753('0x5d')],'order':qs[_0xc753('0x3b')]('-online'),'include':[{'model':db[_0xc753('0x5e')],'as':'VoiceQueues','attributes':['id',_0xc753('0x2b'),_0xc753('0x30')],'through':{'attributes':[]}}]})[_0xc753('0x26')](function(_0x51328d){if(_0x51328d){var _0x1afedc=_0x31746b[_0xc753('0x56')][_0xc753('0x4e')]({'plain':!![]});if(!_0x1afedc)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1afedc['role']===_0xc753('0x56')){return db[_0xc753('0x5f')][_0xc753('0x48')]({'where':{'name':'Agents','userProfileId':_0x1afedc[_0xc753('0x60')]},'raw':!![]})[_0xc753('0x26')](function(_0x170716){if(_0x170716){if(_0x170716[_0xc753('0x61')]===0x0){return db[_0xc753('0x62')]['findAll']({'where':{'sectionId':_0x170716['id']},'raw':!![]})[_0xc753('0x26')](function(_0x4dc01d){var _0x56ca69=[];if(_['isEmpty'](_0x4dc01d)){_0x56ca69=_[_0xc753('0x63')](_0x51328d,function(_0x13071d){if(_0x13071d[_0xc753('0x58')]!==_0xc753('0x54')){return _0x13071d;}});return _0x56ca69;}else{for(var _0x2af590=0x0;_0x2af590<_0x51328d[_0xc753('0x47')];_0x2af590++){var _0x3e9a02=_0x51328d[_0x2af590];if(_0x3e9a02['role']===_0xc753('0x54')){var _0x5de0aa=_[_0xc753('0x48')](_0x4dc01d,function(_0x21f6f0){return _0x21f6f0[_0xc753('0x64')]===_0x3e9a02['id'];});if(_0x5de0aa)_0x56ca69[_0xc753('0x65')](_0x3e9a02);}else{_0x56ca69['push'](_0x3e9a02);}}return _0x56ca69;}});}else{return _0x51328d;}}else{var _0x44d502=_['filter'](_0x51328d,function(_0x10227a){if(_0x10227a[_0xc753('0x58')]!==_0xc753('0x54')){return _0x10227a;}});return _0x44d502;}});}else{return _0x51328d;}}})['then'](function(_0x5614af){var _0x51a2d9=[];if(_0x5614af){_0x3eefe3=_0x5614af;for(var _0x1696ce=0x0;_0x1696ce<_0x5614af[_0xc753('0x47')];_0x1696ce+=0x1){_0x3eefe3[_0x1696ce][_0xc753('0x66')]=[];_0x51a2d9[_0xc753('0x65')](db[_0xc753('0x45')]['find']({'where':{'FromId':[_0x31746b[_0xc753('0x56')]['id'],_0x5614af[_0x1696ce]['id']],'ToId':[_0x31746b[_0xc753('0x56')]['id'],_0x5614af[_0x1696ce]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0xc753('0x67'),'ToId',_0xc753('0x68'),_0xc753('0x4b')],'order':qs[_0xc753('0x3b')](_0xc753('0x69')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xc753('0x26')](wrapUser(_0x5614af[_0x1696ce])));}return BPromise[_0xc753('0x6a')](_0x51a2d9);}return[];})[_0xc753('0x26')](function(_0x3c3538){return{'rows':_0x3c3538,'count':_0x3c3538[_0xc753('0x47')]};})[_0xc753('0x26')](respondWithResult(_0x5ca144,null))['catch'](handleError(_0x5ca144,null));};
\ No newline at end of file
+var _0x94ea=['lastMessageAt','createdAt','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','findAll','agent','user','role','userpic','internal','online','allowmessenger','showWebBar','VoiceQueue','VoiceQueues','UserProfileSection','userProfileId','UserProfileResource','isEmpty','resourceId','push','FromId','ToId','read','-createdAt','all','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','to-csv','lodash','squel','jsforce','desk.js','querystring','ioredis','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','json','undefined','offset','count','limit','set','Content-Range','update','destroy','then','end','stack','name','index','rawAttributes','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','options','ChatInternalMessage','includeAll','rows','catch','show','params','include','merge','create','body','find','describe','get','messages'];(function(_0x104952,_0xeccdfb){var _0x4d0481=function(_0x6e2414){while(--_0x6e2414){_0x104952['push'](_0x104952['shift']());}};_0x4d0481(++_0xeccdfb);}(_0x94ea,0x1c0));var _0xa94e=function(_0x13052e,_0x3fb64d){_0x13052e=_0x13052e-0x0;var _0x217a6f=_0x94ea[_0x13052e];return _0x217a6f;};'use strict';var emlformat=require(_0xa94e('0x0'));var rimraf=require(_0xa94e('0x1'));var zipdir=require(_0xa94e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa94e('0x3'));var BPromise=require(_0xa94e('0x4'));var Mustache=require(_0xa94e('0x5'));var util=require(_0xa94e('0x6'));var path=require(_0xa94e('0x7'));var sox=require('sox');var csv=require(_0xa94e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa94e('0x9'));var squel=require(_0xa94e('0xa'));var crypto=require('crypto');var jsforce=require(_0xa94e('0xb'));var deskjs=require(_0xa94e('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa94e('0xd'));var Papa=require('papaparse');var Redis=require(_0xa94e('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa94e('0xf'));var logger=require('../../config/logger')(_0xa94e('0x10'));var utils=require(_0xa94e('0x11'));var config=require(_0xa94e('0x12'));var licenseUtil=require(_0xa94e('0x13'));var db=require(_0xa94e('0x14'))['db'];config[_0xa94e('0x15')]=_[_0xa94e('0x16')](config[_0xa94e('0x15')],{'host':_0xa94e('0x17'),'port':0x18eb});var socket=require(_0xa94e('0x18'))(new Redis(config['redis']));require(_0xa94e('0x19'))[_0xa94e('0x1a')](socket);function respondWithStatusCode(_0x57e6a5,_0xf45383){_0xf45383=_0xf45383||0xcc;return function(_0x5a5c38){if(_0x5a5c38){return _0x57e6a5[_0xa94e('0x1b')](_0xf45383);}return _0x57e6a5[_0xa94e('0x1c')](_0xf45383)['end']();};}function respondWithResult(_0x3eca18,_0x40a1d1){_0x40a1d1=_0x40a1d1||0xc8;return function(_0x48b737){if(_0x48b737){return _0x3eca18[_0xa94e('0x1c')](_0x40a1d1)[_0xa94e('0x1d')](_0x48b737);}};}function respondWithFilteredResult(_0x838720,_0x1312f0){return function(_0x27fd1e){if(_0x27fd1e){var _0x26b7c4=typeof _0x1312f0['offset']===_0xa94e('0x1e')&&typeof _0x1312f0['limit']==='undefined';var _0x19502d=_0x27fd1e['count'];var _0x584586=_0x26b7c4?0x0:_0x1312f0[_0xa94e('0x1f')];var _0x4f77e1=_0x26b7c4?_0x27fd1e[_0xa94e('0x20')]:_0x1312f0[_0xa94e('0x1f')]+_0x1312f0[_0xa94e('0x21')];var _0x7d7f9e;if(_0x4f77e1>=_0x19502d){_0x4f77e1=_0x19502d;_0x7d7f9e=0xc8;}else{_0x7d7f9e=0xce;}_0x838720['status'](_0x7d7f9e);return _0x838720[_0xa94e('0x22')](_0xa94e('0x23'),_0x584586+'-'+_0x4f77e1+'/'+_0x19502d)[_0xa94e('0x1d')](_0x27fd1e);}return null;};}function patchUpdates(_0x1c2f95){return function(_0x2b8d0d){try{jsonpatch['apply'](_0x2b8d0d,_0x1c2f95,!![]);}catch(_0x47a6b7){return BPromise['reject'](_0x47a6b7);}return _0x2b8d0d['save']();};}function saveUpdates(_0x7c0fb9,_0x5d4913){return function(_0x4559d4){if(_0x4559d4){return _0x4559d4[_0xa94e('0x24')](_0x7c0fb9)['then'](function(_0x58e59b){return _0x58e59b;});}return null;};}function removeEntity(_0x4313fa,_0x20ca17){return function(_0x5a79fb){if(_0x5a79fb){return _0x5a79fb[_0xa94e('0x25')]()[_0xa94e('0x26')](function(){_0x4313fa[_0xa94e('0x1c')](0xcc)[_0xa94e('0x27')]();});}};}function handleEntityNotFound(_0x2d3257,_0x4a7892){return function(_0x33b94e){if(!_0x33b94e){_0x2d3257[_0xa94e('0x1b')](0x194);}return _0x33b94e;};}function handleError(_0x2fc93c,_0x5a5fee){_0x5a5fee=_0x5a5fee||0x1f4;return function(_0x55bad1){logger['error'](_0x55bad1[_0xa94e('0x28')]);if(_0x55bad1[_0xa94e('0x29')]){delete _0x55bad1[_0xa94e('0x29')];}_0x2fc93c[_0xa94e('0x1c')](_0x5a5fee)['send'](_0x55bad1);};}exports[_0xa94e('0x2a')]=function(_0x513119,_0x3738e5){var _0x470987={},_0x51dfb6={},_0x4ac513={'count':0x0,'rows':[]};var _0x5ddfd4=_['map'](db['ChatInternalMessage'][_0xa94e('0x2b')],function(_0x2d883f){return{'name':_0x2d883f['fieldName'],'type':_0x2d883f['type'][_0xa94e('0x2c')]};});_0x51dfb6[_0xa94e('0x2d')]=_[_0xa94e('0x2e')](_0x5ddfd4,_0xa94e('0x29'));_0x51dfb6[_0xa94e('0x2f')]=_[_0xa94e('0x30')](_0x513119[_0xa94e('0x2f')]);_0x51dfb6[_0xa94e('0x31')]=_[_0xa94e('0x32')](_0x51dfb6[_0xa94e('0x2d')],_0x51dfb6[_0xa94e('0x2f')]);_0x470987[_0xa94e('0x33')]=_[_0xa94e('0x32')](_0x51dfb6[_0xa94e('0x2d')],qs[_0xa94e('0x34')](_0x513119[_0xa94e('0x2f')][_0xa94e('0x34')]));_0x470987[_0xa94e('0x33')]=_0x470987[_0xa94e('0x33')][_0xa94e('0x35')]?_0x470987[_0xa94e('0x33')]:_0x51dfb6[_0xa94e('0x2d')];if(!_0x513119[_0xa94e('0x2f')][_0xa94e('0x36')](_0xa94e('0x37'))){_0x470987['limit']=qs[_0xa94e('0x21')](_0x513119[_0xa94e('0x2f')][_0xa94e('0x21')]);_0x470987[_0xa94e('0x1f')]=qs[_0xa94e('0x1f')](_0x513119['query']['offset']);}_0x470987['order']=qs[_0xa94e('0x38')](_0x513119['query'][_0xa94e('0x38')]);_0x470987[_0xa94e('0x39')]=qs[_0xa94e('0x31')](_[_0xa94e('0x3a')](_0x513119['query'],_0x51dfb6[_0xa94e('0x31')]),_0x5ddfd4);if(_0x513119['query'][_0xa94e('0x3b')]){_0x470987['where']=_['merge'](_0x470987[_0xa94e('0x39')],{'$or':_[_0xa94e('0x2e')](_0x5ddfd4,function(_0x45af98){if(_0x45af98[_0xa94e('0x3c')]!==_0xa94e('0x3d')){var _0x4baae5={};_0x4baae5[_0x45af98[_0xa94e('0x29')]]={'$like':'%'+_0x513119[_0xa94e('0x2f')][_0xa94e('0x3b')]+'%'};return _0x4baae5;}})});}_0x470987=_['merge']({},_0x470987,_0x513119[_0xa94e('0x3e')]);var _0x4a4975={'where':_0x470987['where']};return db[_0xa94e('0x3f')][_0xa94e('0x20')](_0x4a4975)['then'](function(_0x1d05c9){_0x4ac513['count']=_0x1d05c9;if(_0x513119['query'][_0xa94e('0x40')]){_0x470987['include']=[{'all':!![]}];}return db[_0xa94e('0x3f')]['findAll'](_0x470987);})['then'](function(_0xcd03c9){_0x4ac513[_0xa94e('0x41')]=_0xcd03c9;return _0x4ac513;})['then'](respondWithFilteredResult(_0x3738e5,_0x470987))[_0xa94e('0x42')](handleError(_0x3738e5,null));};exports[_0xa94e('0x43')]=function(_0x1ed85b,_0x4004fc){var _0x481851={'raw':!![],'where':{'id':_0x1ed85b[_0xa94e('0x44')]['id']}},_0x246266={};_0x246266['model']=_[_0xa94e('0x30')](db[_0xa94e('0x3f')][_0xa94e('0x2b')]);_0x246266[_0xa94e('0x2f')]=_[_0xa94e('0x30')](_0x1ed85b['query']);_0x246266[_0xa94e('0x31')]=_['intersection'](_0x246266[_0xa94e('0x2d')],_0x246266['query']);_0x481851['attributes']=_['intersection'](_0x246266[_0xa94e('0x2d')],qs['fields'](_0x1ed85b[_0xa94e('0x2f')][_0xa94e('0x34')]));_0x481851[_0xa94e('0x33')]=_0x481851[_0xa94e('0x33')][_0xa94e('0x35')]?_0x481851[_0xa94e('0x33')]:_0x246266[_0xa94e('0x2d')];if(_0x1ed85b[_0xa94e('0x2f')][_0xa94e('0x40')]){_0x481851[_0xa94e('0x45')]=[{'all':!![]}];}_0x481851=_[_0xa94e('0x46')]({},_0x481851,_0x1ed85b[_0xa94e('0x3e')]);return db[_0xa94e('0x3f')]['find'](_0x481851)[_0xa94e('0x26')](handleEntityNotFound(_0x4004fc,null))[_0xa94e('0x26')](respondWithResult(_0x4004fc,null))['catch'](handleError(_0x4004fc,null));};exports[_0xa94e('0x47')]=function(_0x18db22,_0x391d42){return db[_0xa94e('0x3f')]['create'](_0x18db22[_0xa94e('0x48')],{})[_0xa94e('0x26')](respondWithResult(_0x391d42,0xc9))['catch'](handleError(_0x391d42,null));};exports[_0xa94e('0x24')]=function(_0x4ae161,_0x8f66a5){if(_0x4ae161[_0xa94e('0x48')]['id']){delete _0x4ae161[_0xa94e('0x48')]['id'];}return db[_0xa94e('0x3f')][_0xa94e('0x49')]({'where':{'id':_0x4ae161[_0xa94e('0x44')]['id']}})['then'](handleEntityNotFound(_0x8f66a5,null))['then'](saveUpdates(_0x4ae161[_0xa94e('0x48')],null))[_0xa94e('0x26')](respondWithResult(_0x8f66a5,null))[_0xa94e('0x42')](handleError(_0x8f66a5,null));};exports[_0xa94e('0x25')]=function(_0x3f60fc,_0x344384){return db['ChatInternalMessage']['find']({'where':{'id':_0x3f60fc[_0xa94e('0x44')]['id']}})['then'](handleEntityNotFound(_0x344384,null))[_0xa94e('0x26')](removeEntity(_0x344384,null))[_0xa94e('0x42')](handleError(_0x344384,null));};exports[_0xa94e('0x4a')]=function(_0x1a88bc,_0x4a7031){return db[_0xa94e('0x3f')]['describe']()[_0xa94e('0x26')](respondWithResult(_0x4a7031,null))[_0xa94e('0x42')](handleError(_0x4a7031,null));};function wrapUser(_0x3c8418){return function(_0x28ad23){var _0x3f3dc8=_0x3c8418[_0xa94e('0x4b')]({'plain':!![]});_0x3f3dc8[_0xa94e('0x4c')]=[];if(_0x28ad23){_0x3f3dc8[_0xa94e('0x4d')]=_0x28ad23[_0xa94e('0x4e')];_0x3f3dc8['lastMessage']=_0x28ad23;}else{_0x3f3dc8[_0xa94e('0x4d')]=moment(0x0)[_0xa94e('0x4f')](_0xa94e('0x50'));_0x3f3dc8['lastMessage']={};}return _0x3f3dc8;};}exports[_0xa94e('0x51')]=function(_0x19beae,_0x17352a,_0xc946a8){var _0x5ea1b7=[];return db[_0xa94e('0x52')][_0xa94e('0x53')]({'where':{'role':[_0xa94e('0x54'),'admin',_0xa94e('0x55')]},'attributes':['id','fullname',_0xa94e('0x29'),_0xa94e('0x56'),_0xa94e('0x57'),_0xa94e('0x58'),_0xa94e('0x59'),'lastLoginAt',_0xa94e('0x5a'),_0xa94e('0x5b')],'order':qs[_0xa94e('0x38')]('-online'),'include':[{'model':db[_0xa94e('0x5c')],'as':_0xa94e('0x5d'),'attributes':['id',_0xa94e('0x29'),'type'],'through':{'attributes':[]}}]})[_0xa94e('0x26')](function(_0x47365e){if(_0x47365e){var _0x24ca42=_0x19beae['user']['get']({'plain':!![]});if(!_0x24ca42)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x24ca42[_0xa94e('0x56')]==='user'){return db[_0xa94e('0x5e')][_0xa94e('0x49')]({'where':{'name':'Agents','userProfileId':_0x24ca42[_0xa94e('0x5f')]},'raw':!![]})['then'](function(_0x53d493){if(_0x53d493){if(_0x53d493['autoAssociation']===0x0){return db[_0xa94e('0x60')][_0xa94e('0x53')]({'where':{'sectionId':_0x53d493['id']},'raw':!![]})[_0xa94e('0x26')](function(_0x46adae){var _0x4598f6=[];if(_[_0xa94e('0x61')](_0x46adae)){_0x4598f6=_[_0xa94e('0x3b')](_0x47365e,function(_0x275322){if(_0x275322['role']!=='agent'){return _0x275322;}});return _0x4598f6;}else{for(var _0x1e015f=0x0;_0x1e015f<_0x47365e['length'];_0x1e015f++){var _0x773d89=_0x47365e[_0x1e015f];if(_0x773d89[_0xa94e('0x56')]===_0xa94e('0x54')){var _0x40b99e=_[_0xa94e('0x49')](_0x46adae,function(_0x3712ed){return _0x3712ed[_0xa94e('0x62')]===_0x773d89['id'];});if(_0x40b99e)_0x4598f6[_0xa94e('0x63')](_0x773d89);}else{_0x4598f6[_0xa94e('0x63')](_0x773d89);}}return _0x4598f6;}});}else{return _0x47365e;}}else{var _0xd830e2=_[_0xa94e('0x3b')](_0x47365e,function(_0x564a94){if(_0x564a94[_0xa94e('0x56')]!==_0xa94e('0x54')){return _0x564a94;}});return _0xd830e2;}});}else{return _0x47365e;}}})[_0xa94e('0x26')](function(_0x567477){var _0x5b5f93=[];if(_0x567477){_0x5ea1b7=_0x567477;for(var _0x2dbe08=0x0;_0x2dbe08<_0x567477['length'];_0x2dbe08+=0x1){_0x5ea1b7[_0x2dbe08][_0xa94e('0x4c')]=[];_0x5b5f93['push'](db[_0xa94e('0x3f')][_0xa94e('0x49')]({'where':{'FromId':[_0x19beae['user']['id'],_0x567477[_0x2dbe08]['id']],'ToId':[_0x19beae[_0xa94e('0x55')]['id'],_0x567477[_0x2dbe08]['id']],'ChatGroupId':null},'attributes':['id',_0xa94e('0x4e'),_0xa94e('0x64'),_0xa94e('0x65'),_0xa94e('0x66'),_0xa94e('0x48')],'order':qs[_0xa94e('0x38')](_0xa94e('0x67')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xa94e('0x26')](wrapUser(_0x567477[_0x2dbe08])));}return BPromise[_0xa94e('0x68')](_0x5b5f93);}return[];})[_0xa94e('0x26')](function(_0x575d97){return{'rows':_0x575d97,'count':_0x575d97[_0xa94e('0x35')]};})[_0xa94e('0x26')](respondWithResult(_0x17352a,null))[_0xa94e('0x42')](handleError(_0x17352a,null));};
\ No newline at end of file
index a51d09a..b955de0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06d7=['emit','hook','exports','events','ChatInternalMessage','setMaxListeners','save','update','remove'];(function(_0x2c535c,_0xd03bf5){var _0x1d75b9=function(_0xb9c294){while(--_0xb9c294){_0x2c535c['push'](_0x2c535c['shift']());}};_0x1d75b9(++_0xd03bf5);}(_0x06d7,0xd2));var _0x706d=function(_0x25a987,_0x34c654){_0x25a987=_0x25a987-0x0;var _0x4224ff=_0x06d7[_0x25a987];return _0x4224ff;};'use strict';var EventEmitter=require(_0x706d('0x0'));var ChatInternalMessage=require('../../mysqldb')['db'][_0x706d('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x706d('0x2')](0x0);var events={'afterCreate':_0x706d('0x3'),'afterUpdate':_0x706d('0x4'),'afterDestroy':_0x706d('0x5')};function emitEvent(_0x4e89b2){return function(_0x1f7716,_0xc14603,_0x2b16b7){ChatInternalMessageEvents['emit'](_0x4e89b2+':'+_0x1f7716['id'],_0x1f7716);ChatInternalMessageEvents[_0x706d('0x6')](_0x4e89b2,_0x1f7716);_0x2b16b7(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage[_0x706d('0x7')](e,emitEvent(event));}}module[_0x706d('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0xfbf0=['emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xfbf0,0x187));var _0x0fbf=function(_0xd09668,_0x1435b2){_0xd09668=_0xd09668-0x0;var _0x68726=_0xfbf0[_0xd09668];return _0x68726;};'use strict';var EventEmitter=require('events');var ChatInternalMessage=require(_0x0fbf('0x0'))['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x0fbf('0x1')](0x0);var events={'afterCreate':_0x0fbf('0x2'),'afterUpdate':_0x0fbf('0x3'),'afterDestroy':_0x0fbf('0x4')};function emitEvent(_0xb8cfed){return function(_0x8938f7,_0x444066,_0x104f01){ChatInternalMessageEvents[_0x0fbf('0x5')](_0xb8cfed+':'+_0x8938f7['id'],_0x8938f7);ChatInternalMessageEvents[_0x0fbf('0x5')](_0xb8cfed,_0x8938f7);_0x104f01(null);};}for(var e in events){if(events[_0x0fbf('0x6')](e)){var event=events[e];ChatInternalMessage[_0x0fbf('0x7')](e,emitEvent(event));}}module[_0x0fbf('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
index cf47b8b..9878595 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5200=['utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./chatInternalMessage.attributes','exports','define','chat_internal_messages'];(function(_0x4854d6,_0x2f1264){var _0x3885c0=function(_0x4d564d){while(--_0x4d564d){_0x4854d6['push'](_0x4854d6['shift']());}};_0x3885c0(++_0x2f1264);}(_0x5200,0x179));var _0x0520=function(_0x19c28c,_0x43be59){_0x19c28c=_0x19c28c-0x0;var _0x54553a=_0x5200[_0x19c28c];return _0x54553a;};'use strict';var _=require(_0x0520('0x0'));var util=require(_0x0520('0x1'));var logger=require(_0x0520('0x2'))(_0x0520('0x3'));var moment=require(_0x0520('0x4'));var BPromise=require(_0x0520('0x5'));var rp=require(_0x0520('0x6'));var fs=require('fs');var path=require(_0x0520('0x7'));var rimraf=require(_0x0520('0x8'));var config=require('../../config/environment');var attributes=require(_0x0520('0x9'));module[_0x0520('0xa')]=function(_0x417fc7,_0x194ec6){return _0x417fc7[_0x0520('0xb')]('ChatInternalMessage',attributes,{'tableName':_0x0520('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0520('0xd'),'collate':_0x0520('0xe')});};
\ No newline at end of file
+var _0x91bb=['moment','bluebird','request-promise','path','../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x91bb,0xed));var _0xb91b=function(_0x26a515,_0x286339){_0x26a515=_0x26a515-0x0;var _0x314682=_0x91bb[_0x26a515];return _0x314682;};'use strict';var _=require('lodash');var util=require(_0xb91b('0x0'));var logger=require(_0xb91b('0x1'))(_0xb91b('0x2'));var moment=require(_0xb91b('0x3'));var BPromise=require(_0xb91b('0x4'));var rp=require(_0xb91b('0x5'));var fs=require('fs');var path=require(_0xb91b('0x6'));var rimraf=require('rimraf');var config=require(_0xb91b('0x7'));var attributes=require(_0xb91b('0x8'));module[_0xb91b('0x9')]=function(_0x26f73b,_0x2ed46e){return _0x26f73b[_0xb91b('0xa')](_0xb91b('0xb'),attributes,{'tableName':_0xb91b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xb91b('0xd'),'collate':_0xb91b('0xe')});};
\ No newline at end of file
index 5af46b9..bb5e335 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7940=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','./chatInternalMessage.socket','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x7940,0x1ee));var _0x0794=function(_0x598acd,_0x21354a){_0x598acd=_0x598acd-0x0;var _0x241ce4=_0x7940[_0x598acd];return _0x241ce4;};'use strict';var _=require(_0x0794('0x0'));var util=require('util');var moment=require(_0x0794('0x1'));var BPromise=require(_0x0794('0x2'));var rs=require(_0x0794('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0794('0x4'))['db'];var utils=require(_0x0794('0x5'));var logger=require(_0x0794('0x6'))(_0x0794('0x7'));var config=require('../../config/environment');var jayson=require(_0x0794('0x8'));var client=jayson[_0x0794('0x9')][_0x0794('0xa')]({'port':0x232a});config[_0x0794('0xb')]=_[_0x0794('0xc')](config[_0x0794('0xb')],{'host':_0x0794('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0794('0xe'))[_0x0794('0xf')](socket);function respondWithRpcPromise(_0x15b099,_0x4c6277,_0x231a01){return new BPromise(function(_0x5d3111,_0x4b5d45){return client[_0x0794('0x10')](_0x15b099,_0x231a01)[_0x0794('0x11')](function(_0x37a04a){logger[_0x0794('0x12')](_0x0794('0x13'),_0x4c6277,_0x0794('0x14'));logger[_0x0794('0x15')](_0x0794('0x16'),_0x4c6277,_0x0794('0x14'),JSON[_0x0794('0x17')](_0x37a04a));if(_0x37a04a['error']){if(_0x37a04a[_0x0794('0x18')][_0x0794('0x19')]===0x1f4){logger[_0x0794('0x18')](_0x0794('0x13'),_0x4c6277,_0x37a04a[_0x0794('0x18')][_0x0794('0x1a')]);return _0x4b5d45(_0x37a04a['error'][_0x0794('0x1a')]);}logger['error'](_0x0794('0x13'),_0x4c6277,_0x37a04a[_0x0794('0x18')]['message']);return _0x5d3111(_0x37a04a[_0x0794('0x18')][_0x0794('0x1a')]);}else{logger[_0x0794('0x12')](_0x0794('0x13'),_0x4c6277,_0x0794('0x14'));_0x5d3111(_0x37a04a[_0x0794('0x1b')]['message']);}})[_0x0794('0x1c')](function(_0x3502e4){logger['error']('ChatInternalMessage,\x20%s,\x20%s',_0x4c6277,_0x3502e4);_0x4b5d45(_0x3502e4);});});}
\ No newline at end of file
+var _0xfabe=['jayson/promise','client','http','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','request','then','info','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatInternalMessage,\x20%s,\x20%s','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x6e1239,_0x3562ac){var _0x418150=function(_0x279f06){while(--_0x279f06){_0x6e1239['push'](_0x6e1239['shift']());}};_0x418150(++_0x3562ac);}(_0xfabe,0x9b));var _0xefab=function(_0x517380,_0x477b7d){_0x517380=_0x517380-0x0;var _0x446de1=_0xfabe[_0x517380];return _0x446de1;};'use strict';var _=require(_0xefab('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xefab('0x1'));var rs=require(_0xefab('0x2'));var fs=require('fs');var Redis=require(_0xefab('0x3'));var db=require(_0xefab('0x4'))['db'];var utils=require(_0xefab('0x5'));var logger=require(_0xefab('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xefab('0x7'));var client=jayson[_0xefab('0x8')][_0xefab('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0xefab('0xa')],{'host':_0xefab('0xb'),'port':0x18eb});var socket=require(_0xefab('0xc'))(new Redis(config['redis']));require(_0xefab('0xd'))['register'](socket);function respondWithRpcPromise(_0x4488c8,_0x29aae4,_0x5cc870){return new BPromise(function(_0x1ef6f6,_0x2c9869){return client[_0xefab('0xe')](_0x4488c8,_0x5cc870)[_0xefab('0xf')](function(_0x56a883){logger[_0xefab('0x10')]('ChatInternalMessage,\x20%s,\x20%s',_0x29aae4,_0xefab('0x11'));logger[_0xefab('0x12')](_0xefab('0x13'),_0x29aae4,'request\x20sent',JSON[_0xefab('0x14')](_0x56a883));if(_0x56a883['error']){if(_0x56a883[_0xefab('0x15')][_0xefab('0x16')]===0x1f4){logger[_0xefab('0x15')](_0xefab('0x17'),_0x29aae4,_0x56a883[_0xefab('0x15')]['message']);return _0x2c9869(_0x56a883[_0xefab('0x15')]['message']);}logger[_0xefab('0x15')](_0xefab('0x17'),_0x29aae4,_0x56a883['error']['message']);return _0x1ef6f6(_0x56a883[_0xefab('0x15')][_0xefab('0x18')]);}else{logger[_0xefab('0x10')](_0xefab('0x17'),_0x29aae4,_0xefab('0x11'));_0x1ef6f6(_0x56a883[_0xefab('0x19')][_0xefab('0x18')]);}})[_0xefab('0x1a')](function(_0x58c4d4){logger[_0xefab('0x15')](_0xefab('0x17'),_0x29aae4,_0x58c4d4);_0x2c9869(_0x58c4d4);});});}
\ No newline at end of file
index 864bd21..e41b664 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7db=['register','length','chatInternalMessage:','./chatInternalMessage.events','save','remove','update','emit'];(function(_0x3ffed5,_0x438a10){var _0x3f74ae=function(_0x2af291){while(--_0x2af291){_0x3ffed5['push'](_0x3ffed5['shift']());}};_0x3f74ae(++_0x438a10);}(_0xc7db,0xeb));var _0xbc7d=function(_0x15f43a,_0x57c8b5){_0x15f43a=_0x15f43a-0x0;var _0x2369bc=_0xc7db[_0x15f43a];return _0x2369bc;};'use strict';var ChatInternalMessageEvents=require(_0xbc7d('0x0'));var events=[_0xbc7d('0x1'),_0xbc7d('0x2'),_0xbc7d('0x3')];function createListener(_0x4ccfe2,_0x1b1017){return function(_0x4fad4a){_0x1b1017[_0xbc7d('0x4')](_0x4ccfe2,_0x4fad4a);};}function removeListener(_0x38b470,_0x3914bc){return function(){ChatInternalMessageEvents['removeListener'](_0x38b470,_0x3914bc);};}exports[_0xbc7d('0x5')]=function(_0x1057d7){for(var _0x1efdfc=0x0,_0x48bdce=events[_0xbc7d('0x6')];_0x1efdfc<_0x48bdce;_0x1efdfc++){var _0x318b8b=events[_0x1efdfc];var _0x188f18=createListener(_0xbc7d('0x7')+_0x318b8b,_0x1057d7);ChatInternalMessageEvents['on'](_0x318b8b,_0x188f18);}};
\ No newline at end of file
+var _0xd4e3=['removeListener','register','length','./chatInternalMessage.events','save','update'];(function(_0x2bf8f9,_0x3dda9d){var _0x36a74c=function(_0x297fe2){while(--_0x297fe2){_0x2bf8f9['push'](_0x2bf8f9['shift']());}};_0x36a74c(++_0x3dda9d);}(_0xd4e3,0xc9));var _0x3d4e=function(_0x828fd8,_0x240398){_0x828fd8=_0x828fd8-0x0;var _0x58216b=_0xd4e3[_0x828fd8];return _0x58216b;};'use strict';var ChatInternalMessageEvents=require(_0x3d4e('0x0'));var events=[_0x3d4e('0x1'),'remove',_0x3d4e('0x2')];function createListener(_0x443b30,_0x316fd7){return function(_0x300f77){_0x316fd7['emit'](_0x443b30,_0x300f77);};}function removeListener(_0xc4178c,_0x38b8a7){return function(){ChatInternalMessageEvents[_0x3d4e('0x3')](_0xc4178c,_0x38b8a7);};}exports[_0x3d4e('0x4')]=function(_0x390618){for(var _0x5ca06b=0x0,_0xb93705=events[_0x3d4e('0x5')];_0x5ca06b<_0xb93705;_0x5ca06b++){var _0x397c7a=events[_0x5ca06b];var _0x5e7fae=createListener('chatInternalMessage:'+_0x397c7a,_0x390618);ChatInternalMessageEvents['on'](_0x397c7a,_0x5e7fae);}};
\ No newline at end of file
index e73c29e..6ea7c67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d12=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router'];(function(_0x560075,_0x4dd168){var _0x267e05=function(_0x5abddf){while(--_0x5abddf){_0x560075['push'](_0x560075['shift']());}};_0x267e05(++_0x4dd168);}(_0x0d12,0x1b0));var _0x20d1=function(_0x251c50,_0xcccb22){_0x251c50=_0x251c50-0x0;var _0x296a87=_0x0d12[_0x251c50];return _0x296a87;};'use strict';var multer=require(_0x20d1('0x0'));var util=require(_0x20d1('0x1'));var path=require('path');var timeout=require(_0x20d1('0x2'));var express=require(_0x20d1('0x3'));var router=express[_0x20d1('0x4')]();var fs_extra=require(_0x20d1('0x5'));var auth=require(_0x20d1('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x20d1('0x7'));var controller=require('./chatInternalMessage.controller');router[_0x20d1('0x8')]('/',auth[_0x20d1('0x9')](),controller['index']);router[_0x20d1('0x8')](_0x20d1('0xa'),auth['isAuthenticated'](),controller[_0x20d1('0xb')]);router[_0x20d1('0x8')]('/users',auth['isAuthenticated'](),controller['getUsers']);router[_0x20d1('0x8')](_0x20d1('0xc'),auth[_0x20d1('0x9')](),controller['show']);router['post']('/',auth[_0x20d1('0x9')](),controller[_0x20d1('0xd')]);router[_0x20d1('0xe')]('/:id',controller[_0x20d1('0xf')]);router[_0x20d1('0x10')](_0x20d1('0xc'),auth['isAuthenticated'](),controller[_0x20d1('0x11')]);module[_0x20d1('0x12')]=router;
\ No newline at end of file
+var _0xaad1=['put','update','delete','exports','multer','path','Router','../../components/interaction/service','./chatInternalMessage.controller','get','isAuthenticated','describe','/users','getUsers','/:id','show','post','create'];(function(_0x1b2ff7,_0x12a034){var _0x31656a=function(_0x1165a5){while(--_0x1165a5){_0x1b2ff7['push'](_0x1b2ff7['shift']());}};_0x31656a(++_0x12a034);}(_0xaad1,0x148));var _0x1aad=function(_0x193827,_0x530915){_0x193827=_0x193827-0x0;var _0x3e2e23=_0xaad1[_0x193827];return _0x3e2e23;};'use strict';var multer=require(_0x1aad('0x0'));var util=require('util');var path=require(_0x1aad('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1aad('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x1aad('0x3'));var config=require('../../config/environment');var controller=require(_0x1aad('0x4'));router[_0x1aad('0x5')]('/',auth[_0x1aad('0x6')](),controller['index']);router[_0x1aad('0x5')]('/describe',auth['isAuthenticated'](),controller[_0x1aad('0x7')]);router['get'](_0x1aad('0x8'),auth[_0x1aad('0x6')](),controller[_0x1aad('0x9')]);router[_0x1aad('0x5')](_0x1aad('0xa'),auth[_0x1aad('0x6')](),controller[_0x1aad('0xb')]);router[_0x1aad('0xc')]('/',auth['isAuthenticated'](),controller[_0x1aad('0xd')]);router[_0x1aad('0xe')]('/:id',controller[_0x1aad('0xf')]);router[_0x1aad('0x10')](_0x1aad('0xa'),auth[_0x1aad('0x6')](),controller['destroy']);module[_0x1aad('0x11')]=router;
\ No newline at end of file
index 81f4189..d2c8bbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15b8=['DATE','STRING','exports','TEXT','medium','BOOLEAN','out'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x15b8,0xcd));var _0x815b=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x15b8[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require('sequelize');module[_0x815b('0x0')]={'body':{'type':Sequelize[_0x815b('0x1')](_0x815b('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x815b('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x815b('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x815b('0x4')),'defaultValue':_0x815b('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0x815b('0x5')]},'providerName':{'type':Sequelize[_0x815b('0x6')]},'providerResponse':{'type':Sequelize[_0x815b('0x1')]}};
\ No newline at end of file
+var _0x0bb4=['sequelize','exports','medium','BOOLEAN','ENUM','out','STRING'];(function(_0x44e412,_0xe1f39a){var _0x112439=function(_0x4f5a88){while(--_0x4f5a88){_0x44e412['push'](_0x44e412['shift']());}};_0x112439(++_0xe1f39a);}(_0x0bb4,0x77));var _0x40bb=function(_0x4c5d97,_0x13a60c){_0x4c5d97=_0x4c5d97-0x0;var _0x52d0e7=_0x0bb4[_0x4c5d97];return _0x52d0e7;};'use strict';var Sequelize=require(_0x40bb('0x0'));module[_0x40bb('0x1')]={'body':{'type':Sequelize['TEXT'](_0x40bb('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x40bb('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x40bb('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x40bb('0x4')]('in','out'),'defaultValue':_0x40bb('0x5'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0x40bb('0x6')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 0304752..9e6692c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','contact','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','parse','formData','chat-interactions','chat','ChatInteraction','RejectMessage','rejectMessage','Sequelize','QueryTypes','SELECT','fullname','rejectmessage','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatMessage.socket','register','jayson/promise','client','http','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','destroy','stack','name','send','map','ChatMessage','fieldName','type','keys','query','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','body','find','describe','../../config/logger','accept','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','ChatInteractionId','isNil','read1stAt','format'];(function(_0x1f11ce,_0x11e8e4){var _0x5dd9f7=function(_0x2d64e1){while(--_0x2d64e1){_0x1f11ce['push'](_0x1f11ce['shift']());}};_0x5dd9f7(++_0x11e8e4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];config[_0x0a9e('0x15')]=_[_0x0a9e('0x16')](config[_0x0a9e('0x15')],{'host':_0x0a9e('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x15')]));require(_0x0a9e('0x18'))[_0x0a9e('0x19')](socket);var jayson=require(_0x0a9e('0x1a'));var client=jayson[_0x0a9e('0x1b')][_0x0a9e('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0x0a9e('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x5d0880,_0x1985b6,_0x519dfd,_0x16033c){return new BPromise(function(_0x12066b,_0x48f32d){var _0x225616=_0x16033c||client;return _0x225616['request'](_0x5d0880,_0x519dfd)[_0x0a9e('0x1d')](function(_0x478723){logger[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x1985b6,_0x0a9e('0x20'));logger[_0x0a9e('0x21')](_0x0a9e('0x22'),_0x1985b6,_0x0a9e('0x20'),JSON[_0x0a9e('0x23')](_0x478723));if(_0x478723[_0x0a9e('0x24')]){if(_0x478723[_0x0a9e('0x24')][_0x0a9e('0x25')]===0x1f4){logger['error'](_0x0a9e('0x1f'),_0x1985b6,_0x478723[_0x0a9e('0x24')]['message']);return _0x48f32d(_0x478723[_0x0a9e('0x24')]['message']);}logger['error'](_0x0a9e('0x1f'),_0x1985b6,_0x478723[_0x0a9e('0x24')][_0x0a9e('0x26')]);return _0x12066b(_0x478723[_0x0a9e('0x24')]['message']);}else{logger[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x1985b6,_0x0a9e('0x20'));_0x12066b(_0x478723[_0x0a9e('0x27')][_0x0a9e('0x26')]);}})[_0x0a9e('0x28')](function(_0x16b1ca){logger['error']('ChatMessage,\x20%s,\x20%s',_0x1985b6,_0x16b1ca);_0x48f32d(_0x16b1ca);});});}function respondWithStatusCode(_0x197ec0,_0x3a8e58){_0x3a8e58=_0x3a8e58||0xcc;return function(_0x40c424){if(_0x40c424){return _0x197ec0[_0x0a9e('0x29')](_0x3a8e58);}return _0x197ec0['status'](_0x3a8e58)[_0x0a9e('0x2a')]();};}function respondWithResult(_0x479bc4,_0x45a1e7){_0x45a1e7=_0x45a1e7||0xc8;return function(_0x5bfb33){if(_0x5bfb33){return _0x479bc4[_0x0a9e('0x2b')](_0x45a1e7)[_0x0a9e('0x2c')](_0x5bfb33);}};}function respondWithFilteredResult(_0x25fba9,_0x14433c){return function(_0x140511){if(_0x140511){var _0x1538a4=typeof _0x14433c[_0x0a9e('0x2d')]===_0x0a9e('0x2e')&&typeof _0x14433c['limit']===_0x0a9e('0x2e');var _0x468813=_0x140511[_0x0a9e('0x2f')];var _0x2ec755=_0x1538a4?0x0:_0x14433c['offset'];var _0x15b200=_0x1538a4?_0x140511[_0x0a9e('0x2f')]:_0x14433c[_0x0a9e('0x2d')]+_0x14433c[_0x0a9e('0x30')];var _0x58b06f;if(_0x15b200>=_0x468813){_0x15b200=_0x468813;_0x58b06f=0xc8;}else{_0x58b06f=0xce;}_0x25fba9[_0x0a9e('0x2b')](_0x58b06f);return _0x25fba9[_0x0a9e('0x31')](_0x0a9e('0x32'),_0x2ec755+'-'+_0x15b200+'/'+_0x468813)[_0x0a9e('0x2c')](_0x140511);}return null;};}function patchUpdates(_0x540530){return function(_0x426950){try{jsonpatch['apply'](_0x426950,_0x540530,!![]);}catch(_0x2407f9){return BPromise[_0x0a9e('0x33')](_0x2407f9);}return _0x426950[_0x0a9e('0x34')]();};}function saveUpdates(_0x33bdb7,_0x25ce3a){return function(_0x5180f1){if(_0x5180f1){return _0x5180f1[_0x0a9e('0x35')](_0x33bdb7)[_0x0a9e('0x1d')](function(_0x40cb85){return _0x40cb85;});}return null;};}function removeEntity(_0x2da5c0,_0x2b45ea){return function(_0x409319){if(_0x409319){return _0x409319[_0x0a9e('0x36')]()[_0x0a9e('0x1d')](function(){_0x2da5c0['status'](0xcc)[_0x0a9e('0x2a')]();});}};}function handleEntityNotFound(_0x5e7238,_0x2cc7a0){return function(_0x14b13f){if(!_0x14b13f){_0x5e7238[_0x0a9e('0x29')](0x194);}return _0x14b13f;};}function handleError(_0x3f3d41,_0x567193){_0x567193=_0x567193||0x1f4;return function(_0x191e91){logger[_0x0a9e('0x24')](_0x191e91[_0x0a9e('0x37')]);if(_0x191e91[_0x0a9e('0x38')]){delete _0x191e91['name'];}_0x3f3d41['status'](_0x567193)[_0x0a9e('0x39')](_0x191e91);};}exports['index']=function(_0x24936a,_0x3d9717){var _0x381c37={},_0x1ef87a={},_0x4f41ae={'count':0x0,'rows':[]};var _0x31916f=_[_0x0a9e('0x3a')](db[_0x0a9e('0x3b')]['rawAttributes'],function(_0x1dbf74){return{'name':_0x1dbf74[_0x0a9e('0x3c')],'type':_0x1dbf74[_0x0a9e('0x3d')]['key']};});_0x1ef87a['model']=_[_0x0a9e('0x3a')](_0x31916f,_0x0a9e('0x38'));_0x1ef87a['query']=_[_0x0a9e('0x3e')](_0x24936a[_0x0a9e('0x3f')]);_0x1ef87a[_0x0a9e('0x40')]=_[_0x0a9e('0x41')](_0x1ef87a['model'],_0x1ef87a['query']);_0x381c37[_0x0a9e('0x42')]=_[_0x0a9e('0x41')](_0x1ef87a['model'],qs[_0x0a9e('0x43')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x43')]));_0x381c37['attributes']=_0x381c37[_0x0a9e('0x42')][_0x0a9e('0x44')]?_0x381c37[_0x0a9e('0x42')]:_0x1ef87a[_0x0a9e('0x45')];if(!_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x46')](_0x0a9e('0x47'))){_0x381c37[_0x0a9e('0x30')]=qs[_0x0a9e('0x30')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x30')]);_0x381c37[_0x0a9e('0x2d')]=qs[_0x0a9e('0x2d')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x2d')]);}_0x381c37['order']=qs['sort'](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x48')]);_0x381c37[_0x0a9e('0x49')]=qs[_0x0a9e('0x40')](_[_0x0a9e('0x4a')](_0x24936a[_0x0a9e('0x3f')],_0x1ef87a[_0x0a9e('0x40')]),_0x31916f);if(_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4b')]){_0x381c37[_0x0a9e('0x49')]=_[_0x0a9e('0x4c')](_0x381c37[_0x0a9e('0x49')],{'$or':_['map'](_0x31916f,function(_0x117c99){if(_0x117c99[_0x0a9e('0x3d')]!==_0x0a9e('0x4d')){var _0xfbd5ad={};_0xfbd5ad[_0x117c99[_0x0a9e('0x38')]]={'$like':'%'+_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4b')]+'%'};return _0xfbd5ad;}})});}_0x381c37=_[_0x0a9e('0x4c')]({},_0x381c37,_0x24936a['options']);var _0x2e9d90={'where':_0x381c37['where']};return db[_0x0a9e('0x3b')][_0x0a9e('0x2f')](_0x2e9d90)[_0x0a9e('0x1d')](function(_0x562fb4){_0x4f41ae[_0x0a9e('0x2f')]=_0x562fb4;if(_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4e')]){_0x381c37[_0x0a9e('0x4f')]=[{'all':!![]}];}return db[_0x0a9e('0x3b')][_0x0a9e('0x50')](_0x381c37);})[_0x0a9e('0x1d')](function(_0x5bbcde){_0x4f41ae[_0x0a9e('0x51')]=_0x5bbcde;return _0x4f41ae;})[_0x0a9e('0x1d')](respondWithFilteredResult(_0x3d9717,_0x381c37))[_0x0a9e('0x28')](handleError(_0x3d9717,null));};exports[_0x0a9e('0x52')]=function(_0x409789,_0x992c77){var _0x6054ee={'raw':!![],'where':{'id':_0x409789[_0x0a9e('0x53')]['id']}},_0x19383e={};_0x19383e['model']=_[_0x0a9e('0x3e')](db[_0x0a9e('0x3b')]['rawAttributes']);_0x19383e['query']=_['keys'](_0x409789[_0x0a9e('0x3f')]);_0x19383e[_0x0a9e('0x40')]=_[_0x0a9e('0x41')](_0x19383e[_0x0a9e('0x45')],_0x19383e[_0x0a9e('0x3f')]);_0x6054ee[_0x0a9e('0x42')]=_[_0x0a9e('0x41')](_0x19383e[_0x0a9e('0x45')],qs['fields'](_0x409789['query']['fields']));_0x6054ee[_0x0a9e('0x42')]=_0x6054ee[_0x0a9e('0x42')][_0x0a9e('0x44')]?_0x6054ee['attributes']:_0x19383e[_0x0a9e('0x45')];if(_0x409789[_0x0a9e('0x3f')]['includeAll']){_0x6054ee['include']=[{'all':!![]}];}_0x6054ee=_[_0x0a9e('0x4c')]({},_0x6054ee,_0x409789['options']);return db[_0x0a9e('0x3b')]['find'](_0x6054ee)[_0x0a9e('0x1d')](handleEntityNotFound(_0x992c77,null))[_0x0a9e('0x1d')](respondWithResult(_0x992c77,null))[_0x0a9e('0x28')](handleError(_0x992c77,null));};exports['create']=function(_0x2f82da,_0x1bf38a){return db['ChatMessage']['create'](_0x2f82da[_0x0a9e('0x54')],{})[_0x0a9e('0x1d')](respondWithResult(_0x1bf38a,0xc9))['catch'](handleError(_0x1bf38a,null));};exports[_0x0a9e('0x35')]=function(_0x5ce9ac,_0x211ef9){if(_0x5ce9ac['body']['id']){delete _0x5ce9ac[_0x0a9e('0x54')]['id'];}return db['ChatMessage']['find']({'where':{'id':_0x5ce9ac['params']['id']}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x211ef9,null))['then'](saveUpdates(_0x5ce9ac[_0x0a9e('0x54')],null))[_0x0a9e('0x1d')](respondWithResult(_0x211ef9,null))[_0x0a9e('0x28')](handleError(_0x211ef9,null));};exports[_0x0a9e('0x36')]=function(_0x232830,_0x272738){return db[_0x0a9e('0x3b')][_0x0a9e('0x55')]({'where':{'id':_0x232830['params']['id']}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x272738,null))[_0x0a9e('0x1d')](removeEntity(_0x272738,null))[_0x0a9e('0x28')](handleError(_0x272738,null));};exports[_0x0a9e('0x56')]=function(_0xb83dfd,_0x156662){return db['ChatMessage'][_0x0a9e('0x56')]()[_0x0a9e('0x1d')](respondWithResult(_0x156662,null))['catch'](handleError(_0x156662,null));};var interaction_log=require(_0x0a9e('0x57'))('chat-interactions');exports[_0x0a9e('0x58')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee){var _0x273cb5={'agent':{},'channel':'chat'};if(_0x5ba1f9[_0x0a9e('0x54')]['id']){delete _0x5ba1f9[_0x0a9e('0x54')]['id'];}_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x59')]=!![];_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5a')]=moment()['format'](_0x0a9e('0x5b'));_0x5ba1f9['body'][_0x0a9e('0x5c')]=_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')]||_0x5ba1f9['user']['id'];_0x273cb5[_0x0a9e('0x5d')]['id']=_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')];return db[_0x0a9e('0x3b')]['find']({'where':{'id':_0x5ba1f9[_0x0a9e('0x53')]['id'],'UserId':null}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x4b3c1a,null))['then'](saveUpdates(_0x5ba1f9[_0x0a9e('0x54')],null))[_0x0a9e('0x1d')](function(_0x88dcbf){if(_0x88dcbf){_0x273cb5[_0x0a9e('0x26')]=_0x88dcbf[_0x0a9e('0x5e')]({'plain':!![]});return db['ChatInteraction'][_0x0a9e('0x55')]({'where':{'id':_0x88dcbf[_0x0a9e('0x5f')]}});}return null;})[_0x0a9e('0x1d')](handleEntityNotFound(_0x4b3c1a,null))['then'](function(_0x3528b7){if(_0x3528b7){return _0x3528b7['update']({'UserId':_0x5ba1f9['body'][_0x0a9e('0x5c')],'read1stAt':_[_0x0a9e('0x60')](_0x3528b7[_0x0a9e('0x61')])?moment()[_0x0a9e('0x62')](_0x0a9e('0x5b')):undefined});}return null;})[_0x0a9e('0x1d')](function(_0x387489){if(_0x387489){_0x273cb5[_0x0a9e('0x63')]=_0x387489[_0x0a9e('0x5e')]({'plain':!![]});interaction_log[_0x0a9e('0x1e')](_0x0a9e('0x64'),_0x5ba1f9[_0x0a9e('0x65')]['id'],_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x38')],_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x66')],_0x273cb5[_0x0a9e('0x63')]['id'],_0x5ba1f9[_0x0a9e('0x54')]?JSON['stringify'](_0x5ba1f9[_0x0a9e('0x54')]):_0x0a9e('0x67'));return respondWithRpcPromise(_0x0a9e('0x68'),'acceptMessage',_0x273cb5);}return null;})[_0x0a9e('0x1d')](function(_0x30944e){var _0x4b341d=_0x0a9e('0x69')+_0x30944e[_0x0a9e('0x26')][_0x0a9e('0x6a')];return db[_0x0a9e('0x6b')][_0x0a9e('0x3f')](_0x4b341d,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})[_0x0a9e('0x1d')](function(_0x18bf5d){return _0x18bf5d;});})[_0x0a9e('0x1d')](function(_0x23a7d3){if(_0x23a7d3){_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x6c')]=_0x23a7d3[0x0];if(!_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')])return;return db['User'][_0x0a9e('0x55')]({'where':{'id':_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')],'role':'agent'},'attributes':['id',_0x0a9e('0x38'),'fullname',_0x0a9e('0x6d'),_0x0a9e('0x6e')],'raw':!![]});}return null;})['then'](function(_0x2ed01e){if(!_0x2ed01e)return null;_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x5d')]=_0x2ed01e;return _0x273cb5;})[_0x0a9e('0x1d')](function(_0x542ece){if(_0x542ece){if(_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x6f')]){_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x70')]=util['format'](_0x0a9e('0x71'),_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x38')]);_0x273cb5[_0x0a9e('0x26')]['channel']=_0x273cb5[_0x0a9e('0x72')];_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x73')]=_0x0a9e('0x58');return respondWithRpcPromise(_0x0a9e('0x74'),_0x0a9e('0x74'),{'event':_0x0a9e('0x75'),'message':_[_0x0a9e('0x4c')](_0x273cb5[_0x0a9e('0x26')],JSON[_0x0a9e('0x76')](_0x273cb5[_0x0a9e('0x63')][_0x0a9e('0x77')]))},client9002)[_0x0a9e('0x1d')](function(){return _0x273cb5;});}return _0x273cb5;}return null;})[_0x0a9e('0x1d')](respondWithResult(_0x4b3c1a,null))['catch'](handleError(_0x4b3c1a,null));};var interaction_log=require(_0x0a9e('0x57'))(_0x0a9e('0x78'));exports[_0x0a9e('0x33')]=function(_0x563627,_0x3736e0,_0x33dda0){var _0x8cea96={'agent':{},'channel':_0x0a9e('0x79')};if(_0x563627['body']['id']){delete _0x563627['body']['id'];}_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')]=_0x563627['body'][_0x0a9e('0x5c')]||_0x563627['user']['id'];_0x8cea96[_0x0a9e('0x5d')]['id']=_0x563627[_0x0a9e('0x54')]['UserId'];return db[_0x0a9e('0x3b')][_0x0a9e('0x55')]({'where':{'id':_0x563627[_0x0a9e('0x53')]['id'],'UserId':null}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x3736e0,null))[_0x0a9e('0x1d')](function(_0x1f42a0){if(_0x1f42a0){_0x8cea96[_0x0a9e('0x26')]=_0x1f42a0['get']({'plain':!![]});return db[_0x0a9e('0x7a')][_0x0a9e('0x55')]({'where':{'id':_0x1f42a0[_0x0a9e('0x5f')]}});}return null;})[_0x0a9e('0x1d')](handleEntityNotFound(_0x3736e0,null))['then'](function(_0xf51744){if(_0xf51744){_0x8cea96[_0x0a9e('0x63')]=_0xf51744['get']({'plain':!![]});interaction_log[_0x0a9e('0x1e')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x563627[_0x0a9e('0x65')]['id'],_0x563627[_0x0a9e('0x65')][_0x0a9e('0x38')],_0x563627[_0x0a9e('0x65')]['role'],_0x8cea96['interaction']['id'],_0x563627[_0x0a9e('0x54')]?JSON[_0x0a9e('0x23')](_0x563627[_0x0a9e('0x54')]):'null');return respondWithRpcPromise(_0x0a9e('0x7b'),_0x0a9e('0x7c'),_0x8cea96);}return null;})['then'](function(_0x4e46b2){var _0xf0a802='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4e46b2['message']['ContactId'];return db[_0x0a9e('0x6b')][_0x0a9e('0x3f')](_0xf0a802,{'type':db[_0x0a9e('0x7d')][_0x0a9e('0x7e')][_0x0a9e('0x7f')],'raw':!![]})[_0x0a9e('0x1d')](function(_0x5a8854){return _0x5a8854;});})[_0x0a9e('0x1d')](function(_0x5955f1){if(_0x5955f1){_0x8cea96[_0x0a9e('0x26')][_0x0a9e('0x6c')]=_0x5955f1[0x0];if(!_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')])return;return db['User'][_0x0a9e('0x55')]({'where':{'id':_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')],'role':'agent'},'attributes':['id',_0x0a9e('0x38'),_0x0a9e('0x80'),_0x0a9e('0x6d'),_0x0a9e('0x6e')],'raw':!![]});}return null;})[_0x0a9e('0x1d')](function(_0x1910bf){if(!_0x1910bf)return null;_0x8cea96[_0x0a9e('0x26')][_0x0a9e('0x5d')]=_0x1910bf;return _0x8cea96;})['then'](function(_0x2645d6){if(_0x2645d6){_0x2645d6[_0x0a9e('0x26')]['interface']=util[_0x0a9e('0x62')](_0x0a9e('0x71'),_0x563627[_0x0a9e('0x65')]['name']);_0x2645d6[_0x0a9e('0x26')]['channel']=_0x8cea96[_0x0a9e('0x72')];_0x2645d6[_0x0a9e('0x26')][_0x0a9e('0x73')]=_0x0a9e('0x33');respondWithRpcPromise(_0x0a9e('0x74'),_0x0a9e('0x74'),{'event':_0x0a9e('0x81'),'message':_[_0x0a9e('0x4c')](_0x8cea96['message'],JSON[_0x0a9e('0x76')](_0x8cea96[_0x0a9e('0x63')][_0x0a9e('0x77')]))},client9002);return _0x8cea96;}return null;})[_0x0a9e('0x1d')](respondWithResult(_0x3736e0,null))[_0x0a9e('0x28')](handleError(_0x3736e0,null));};
\ No newline at end of file
+var _0x997d=['body','params','describe','chat-interactions','accept','chat','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','ChatInteraction','ChatInteractionId','read1stAt','format','interaction','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','QueryTypes','SELECT','contact','User','agent','email','internal','manual','interface','channel','motionChannel','event','EventManager','acceptmessage','parse','reject','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','RejectMessage','rejectMessage','sequelize','Sequelize','fullname','SIP/%s','rejectmessage','formData','eml-format','zip-dir','fast-json-patch','bluebird','path','to-csv','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','http','client','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','end','json','undefined','limit','count','offset','status','set','update','destroy','stack','name','send','index','ChatMessage','fieldName','type','key','map','query','keys','intersection','model','attributes','fields','sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','rawAttributes','length','find','create'];(function(_0x168113,_0x462638){var _0x3e60cf=function(_0x2dce4a){while(--_0x2dce4a){_0x168113['push'](_0x168113['shift']());}};_0x3e60cf(++_0x462638);}(_0x997d,0xae));var _0xd997=function(_0x403115,_0x2d6d03){_0x403115=_0x403115-0x0;var _0x596ef3=_0x997d[_0x403115];return _0x596ef3;};'use strict';var emlformat=require(_0xd997('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd997('0x1'));var jsonpatch=require(_0xd997('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd997('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd997('0x4'));var sox=require('sox');var csv=require(_0xd997('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xd997('0x6'));var crypto=require(_0xd997('0x7'));var jsforce=require('jsforce');var deskjs=require(_0xd997('0x8'));var toCsv=require(_0xd997('0x5'));var querystring=require(_0xd997('0x9'));var Papa=require(_0xd997('0xa'));var Redis=require(_0xd997('0xb'));var authService=require('../../components/auth/service');var qs=require(_0xd997('0xc'));var as=require(_0xd997('0xd'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd997('0xe'))(_0xd997('0xf'));var utils=require(_0xd997('0x10'));var config=require(_0xd997('0x11'));var licenseUtil=require(_0xd997('0x12'));var db=require(_0xd997('0x13'))['db'];config[_0xd997('0x14')]=_[_0xd997('0x15')](config[_0xd997('0x14')],{'host':_0xd997('0x16'),'port':0x18eb});var socket=require(_0xd997('0x17'))(new Redis(config[_0xd997('0x14')]));require(_0xd997('0x18'))[_0xd997('0x19')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0xd997('0x1a')]({'port':0x232c});var client9002=jayson[_0xd997('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0x435625,_0x12e770,_0x3315ce,_0x5bd237){return new BPromise(function(_0x1e4f05,_0x395943){var _0x1c1354=_0x5bd237||client;return _0x1c1354['request'](_0x435625,_0x3315ce)[_0xd997('0x1c')](function(_0x426d20){logger[_0xd997('0x1d')](_0xd997('0x1e'),_0x12e770,_0xd997('0x1f'));logger[_0xd997('0x20')](_0xd997('0x21'),_0x12e770,_0xd997('0x1f'),JSON[_0xd997('0x22')](_0x426d20));if(_0x426d20[_0xd997('0x23')]){if(_0x426d20[_0xd997('0x23')][_0xd997('0x24')]===0x1f4){logger[_0xd997('0x23')](_0xd997('0x1e'),_0x12e770,_0x426d20[_0xd997('0x23')]['message']);return _0x395943(_0x426d20[_0xd997('0x23')]['message']);}logger[_0xd997('0x23')](_0xd997('0x1e'),_0x12e770,_0x426d20['error'][_0xd997('0x25')]);return _0x1e4f05(_0x426d20[_0xd997('0x23')]['message']);}else{logger[_0xd997('0x1d')](_0xd997('0x1e'),_0x12e770,_0xd997('0x1f'));_0x1e4f05(_0x426d20['result'][_0xd997('0x25')]);}})[_0xd997('0x26')](function(_0xa9a131){logger[_0xd997('0x23')](_0xd997('0x1e'),_0x12e770,_0xa9a131);_0x395943(_0xa9a131);});});}function respondWithStatusCode(_0x1b8eba,_0x43e24e){_0x43e24e=_0x43e24e||0xcc;return function(_0x1afea9){if(_0x1afea9){return _0x1b8eba[_0xd997('0x27')](_0x43e24e);}return _0x1b8eba['status'](_0x43e24e)[_0xd997('0x28')]();};}function respondWithResult(_0x5e5afa,_0x31cbf3){_0x31cbf3=_0x31cbf3||0xc8;return function(_0x28df71){if(_0x28df71){return _0x5e5afa['status'](_0x31cbf3)[_0xd997('0x29')](_0x28df71);}};}function respondWithFilteredResult(_0x1962ef,_0x434756){return function(_0x2f9fb5){if(_0x2f9fb5){var _0x11f3be=typeof _0x434756['offset']===_0xd997('0x2a')&&typeof _0x434756[_0xd997('0x2b')]==='undefined';var _0x3abfe2=_0x2f9fb5[_0xd997('0x2c')];var _0x381781=_0x11f3be?0x0:_0x434756['offset'];var _0x3a11b8=_0x11f3be?_0x2f9fb5[_0xd997('0x2c')]:_0x434756[_0xd997('0x2d')]+_0x434756['limit'];var _0xa21d8f;if(_0x3a11b8>=_0x3abfe2){_0x3a11b8=_0x3abfe2;_0xa21d8f=0xc8;}else{_0xa21d8f=0xce;}_0x1962ef[_0xd997('0x2e')](_0xa21d8f);return _0x1962ef[_0xd997('0x2f')]('Content-Range',_0x381781+'-'+_0x3a11b8+'/'+_0x3abfe2)[_0xd997('0x29')](_0x2f9fb5);}return null;};}function patchUpdates(_0x23f8fc){return function(_0x382b89){try{jsonpatch['apply'](_0x382b89,_0x23f8fc,!![]);}catch(_0x83da9){return BPromise['reject'](_0x83da9);}return _0x382b89['save']();};}function saveUpdates(_0x4272b9,_0x4ae1c7){return function(_0x44ebb6){if(_0x44ebb6){return _0x44ebb6[_0xd997('0x30')](_0x4272b9)['then'](function(_0x33e30d){return _0x33e30d;});}return null;};}function removeEntity(_0x46d1bb,_0x33e5d0){return function(_0x475920){if(_0x475920){return _0x475920[_0xd997('0x31')]()[_0xd997('0x1c')](function(){_0x46d1bb[_0xd997('0x2e')](0xcc)[_0xd997('0x28')]();});}};}function handleEntityNotFound(_0x4fab5e,_0x4c935b){return function(_0x23717f){if(!_0x23717f){_0x4fab5e[_0xd997('0x27')](0x194);}return _0x23717f;};}function handleError(_0x4be4d9,_0x365998){_0x365998=_0x365998||0x1f4;return function(_0x9cdff4){logger['error'](_0x9cdff4[_0xd997('0x32')]);if(_0x9cdff4[_0xd997('0x33')]){delete _0x9cdff4[_0xd997('0x33')];}_0x4be4d9['status'](_0x365998)[_0xd997('0x34')](_0x9cdff4);};}exports[_0xd997('0x35')]=function(_0x3d6662,_0x3bc98b){var _0x4485a4={},_0xe7adc5={},_0x284dda={'count':0x0,'rows':[]};var _0x2e0cd4=_['map'](db[_0xd997('0x36')]['rawAttributes'],function(_0x176117){return{'name':_0x176117[_0xd997('0x37')],'type':_0x176117[_0xd997('0x38')][_0xd997('0x39')]};});_0xe7adc5['model']=_[_0xd997('0x3a')](_0x2e0cd4,_0xd997('0x33'));_0xe7adc5[_0xd997('0x3b')]=_[_0xd997('0x3c')](_0x3d6662['query']);_0xe7adc5['filters']=_[_0xd997('0x3d')](_0xe7adc5[_0xd997('0x3e')],_0xe7adc5[_0xd997('0x3b')]);_0x4485a4[_0xd997('0x3f')]=_[_0xd997('0x3d')](_0xe7adc5[_0xd997('0x3e')],qs['fields'](_0x3d6662['query'][_0xd997('0x40')]));_0x4485a4['attributes']=_0x4485a4[_0xd997('0x3f')]['length']?_0x4485a4['attributes']:_0xe7adc5[_0xd997('0x3e')];if(!_0x3d6662[_0xd997('0x3b')]['hasOwnProperty']('nolimit')){_0x4485a4['limit']=qs[_0xd997('0x2b')](_0x3d6662['query'][_0xd997('0x2b')]);_0x4485a4[_0xd997('0x2d')]=qs[_0xd997('0x2d')](_0x3d6662[_0xd997('0x3b')][_0xd997('0x2d')]);}_0x4485a4['order']=qs[_0xd997('0x41')](_0x3d6662['query'][_0xd997('0x41')]);_0x4485a4['where']=qs[_0xd997('0x42')](_[_0xd997('0x43')](_0x3d6662[_0xd997('0x3b')],_0xe7adc5[_0xd997('0x42')]),_0x2e0cd4);if(_0x3d6662['query']['filter']){_0x4485a4[_0xd997('0x44')]=_[_0xd997('0x45')](_0x4485a4['where'],{'$or':_[_0xd997('0x3a')](_0x2e0cd4,function(_0x4ab1b2){if(_0x4ab1b2['type']!==_0xd997('0x46')){var _0x5a9f61={};_0x5a9f61[_0x4ab1b2['name']]={'$like':'%'+_0x3d6662[_0xd997('0x3b')][_0xd997('0x47')]+'%'};return _0x5a9f61;}})});}_0x4485a4=_[_0xd997('0x45')]({},_0x4485a4,_0x3d6662[_0xd997('0x48')]);var _0x15d889={'where':_0x4485a4[_0xd997('0x44')]};return db[_0xd997('0x36')][_0xd997('0x2c')](_0x15d889)[_0xd997('0x1c')](function(_0x5a12c8){_0x284dda[_0xd997('0x2c')]=_0x5a12c8;if(_0x3d6662[_0xd997('0x3b')][_0xd997('0x49')]){_0x4485a4[_0xd997('0x4a')]=[{'all':!![]}];}return db[_0xd997('0x36')][_0xd997('0x4b')](_0x4485a4);})[_0xd997('0x1c')](function(_0x44d3b7){_0x284dda[_0xd997('0x4c')]=_0x44d3b7;return _0x284dda;})[_0xd997('0x1c')](respondWithFilteredResult(_0x3bc98b,_0x4485a4))[_0xd997('0x26')](handleError(_0x3bc98b,null));};exports[_0xd997('0x4d')]=function(_0x41a30b,_0x1b4d78){var _0x4d316e={'raw':!![],'where':{'id':_0x41a30b['params']['id']}},_0x224a57={};_0x224a57['model']=_[_0xd997('0x3c')](db[_0xd997('0x36')][_0xd997('0x4e')]);_0x224a57[_0xd997('0x3b')]=_['keys'](_0x41a30b[_0xd997('0x3b')]);_0x224a57[_0xd997('0x42')]=_[_0xd997('0x3d')](_0x224a57[_0xd997('0x3e')],_0x224a57['query']);_0x4d316e[_0xd997('0x3f')]=_[_0xd997('0x3d')](_0x224a57[_0xd997('0x3e')],qs['fields'](_0x41a30b[_0xd997('0x3b')][_0xd997('0x40')]));_0x4d316e[_0xd997('0x3f')]=_0x4d316e[_0xd997('0x3f')][_0xd997('0x4f')]?_0x4d316e[_0xd997('0x3f')]:_0x224a57[_0xd997('0x3e')];if(_0x41a30b[_0xd997('0x3b')]['includeAll']){_0x4d316e[_0xd997('0x4a')]=[{'all':!![]}];}_0x4d316e=_[_0xd997('0x45')]({},_0x4d316e,_0x41a30b[_0xd997('0x48')]);return db[_0xd997('0x36')][_0xd997('0x50')](_0x4d316e)['then'](handleEntityNotFound(_0x1b4d78,null))[_0xd997('0x1c')](respondWithResult(_0x1b4d78,null))[_0xd997('0x26')](handleError(_0x1b4d78,null));};exports['create']=function(_0x26adfc,_0x22f043){return db['ChatMessage'][_0xd997('0x51')](_0x26adfc['body'],{})[_0xd997('0x1c')](respondWithResult(_0x22f043,0xc9))[_0xd997('0x26')](handleError(_0x22f043,null));};exports['update']=function(_0x1c28a9,_0xa2c151){if(_0x1c28a9[_0xd997('0x52')]['id']){delete _0x1c28a9['body']['id'];}return db[_0xd997('0x36')]['find']({'where':{'id':_0x1c28a9[_0xd997('0x53')]['id']}})['then'](handleEntityNotFound(_0xa2c151,null))[_0xd997('0x1c')](saveUpdates(_0x1c28a9['body'],null))[_0xd997('0x1c')](respondWithResult(_0xa2c151,null))['catch'](handleError(_0xa2c151,null));};exports[_0xd997('0x31')]=function(_0x2215ae,_0x571333){return db[_0xd997('0x36')][_0xd997('0x50')]({'where':{'id':_0x2215ae[_0xd997('0x53')]['id']}})[_0xd997('0x1c')](handleEntityNotFound(_0x571333,null))['then'](removeEntity(_0x571333,null))[_0xd997('0x26')](handleError(_0x571333,null));};exports[_0xd997('0x54')]=function(_0x4532b6,_0x3ce3ba){return db['ChatMessage'][_0xd997('0x54')]()[_0xd997('0x1c')](respondWithResult(_0x3ce3ba,null))['catch'](handleError(_0x3ce3ba,null));};var interaction_log=require(_0xd997('0xe'))(_0xd997('0x55'));exports[_0xd997('0x56')]=function(_0x5ca6cd,_0x3d9995,_0x5c1458){var _0x17d25b={'agent':{},'channel':_0xd997('0x57')};if(_0x5ca6cd[_0xd997('0x52')]['id']){delete _0x5ca6cd['body']['id'];}_0x5ca6cd[_0xd997('0x52')]['read']=!![];_0x5ca6cd[_0xd997('0x52')][_0xd997('0x58')]=moment()['format'](_0xd997('0x59'));_0x5ca6cd['body'][_0xd997('0x5a')]=_0x5ca6cd[_0xd997('0x52')][_0xd997('0x5a')]||_0x5ca6cd[_0xd997('0x5b')]['id'];_0x17d25b['agent']['id']=_0x5ca6cd['body']['UserId'];return db[_0xd997('0x36')][_0xd997('0x50')]({'where':{'id':_0x5ca6cd[_0xd997('0x53')]['id'],'UserId':null}})[_0xd997('0x1c')](handleEntityNotFound(_0x3d9995,null))[_0xd997('0x1c')](saveUpdates(_0x5ca6cd[_0xd997('0x52')],null))[_0xd997('0x1c')](function(_0x2139cc){if(_0x2139cc){_0x17d25b[_0xd997('0x25')]=_0x2139cc[_0xd997('0x5c')]({'plain':!![]});return db[_0xd997('0x5d')]['find']({'where':{'id':_0x2139cc[_0xd997('0x5e')]}});}return null;})[_0xd997('0x1c')](handleEntityNotFound(_0x3d9995,null))[_0xd997('0x1c')](function(_0x15fe93){if(_0x15fe93){return _0x15fe93[_0xd997('0x30')]({'UserId':_0x5ca6cd[_0xd997('0x52')][_0xd997('0x5a')],'read1stAt':_['isNil'](_0x15fe93[_0xd997('0x5f')])?moment()[_0xd997('0x60')](_0xd997('0x59')):undefined});}return null;})[_0xd997('0x1c')](function(_0x5557df){if(_0x5557df){_0x17d25b[_0xd997('0x61')]=_0x5557df[_0xd997('0x5c')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x5ca6cd[_0xd997('0x5b')]['id'],_0x5ca6cd['user'][_0xd997('0x33')],_0x5ca6cd[_0xd997('0x5b')]['role'],_0x17d25b[_0xd997('0x61')]['id'],_0x5ca6cd[_0xd997('0x52')]?JSON[_0xd997('0x22')](_0x5ca6cd[_0xd997('0x52')]):'null');return respondWithRpcPromise(_0xd997('0x62'),'acceptMessage',_0x17d25b);}return null;})[_0xd997('0x1c')](function(_0x4dfb3b){var _0x456e0c=_0xd997('0x63')+_0x4dfb3b[_0xd997('0x25')][_0xd997('0x64')];return db['sequelize'][_0xd997('0x3b')](_0x456e0c,{'type':db['Sequelize'][_0xd997('0x65')][_0xd997('0x66')],'raw':!![]})['then'](function(_0x130873){return _0x130873;});})[_0xd997('0x1c')](function(_0x219567){if(_0x219567){_0x17d25b[_0xd997('0x25')][_0xd997('0x67')]=_0x219567[0x0];if(!_0x5ca6cd[_0xd997('0x52')][_0xd997('0x5a')])return;return db[_0xd997('0x68')][_0xd997('0x50')]({'where':{'id':_0x5ca6cd[_0xd997('0x52')]['UserId'],'role':_0xd997('0x69')},'attributes':['id','name','fullname',_0xd997('0x6a'),_0xd997('0x6b')],'raw':!![]});}return null;})[_0xd997('0x1c')](function(_0x29f441){if(!_0x29f441)return null;_0x17d25b[_0xd997('0x25')][_0xd997('0x69')]=_0x29f441;return _0x17d25b;})['then'](function(_0x5a7462){if(_0x5a7462){if(_0x5ca6cd[_0xd997('0x52')][_0xd997('0x6c')]){_0x17d25b[_0xd997('0x25')][_0xd997('0x6d')]=util[_0xd997('0x60')]('SIP/%s',_0x5ca6cd[_0xd997('0x5b')][_0xd997('0x33')]);_0x17d25b[_0xd997('0x25')][_0xd997('0x6e')]=_0x17d25b[_0xd997('0x6e')];_0x17d25b[_0xd997('0x25')][_0xd997('0x6f')]=_0x17d25b['channel'];_0x17d25b[_0xd997('0x25')][_0xd997('0x70')]='accept';return respondWithRpcPromise(_0xd997('0x71'),_0xd997('0x71'),{'event':_0xd997('0x72'),'message':_['merge'](_0x17d25b['message'],JSON[_0xd997('0x73')](_0x17d25b[_0xd997('0x61')]['formData']))},client9002)[_0xd997('0x1c')](function(){return _0x17d25b;});}return _0x17d25b;}return null;})[_0xd997('0x1c')](respondWithResult(_0x3d9995,null))[_0xd997('0x26')](handleError(_0x3d9995,null));};var interaction_log=require(_0xd997('0xe'))(_0xd997('0x55'));exports[_0xd997('0x74')]=function(_0x4843d2,_0x19f2f8,_0x29a791){var _0x16b153={'agent':{},'channel':_0xd997('0x57')};if(_0x4843d2['body']['id']){delete _0x4843d2[_0xd997('0x52')]['id'];}_0x4843d2[_0xd997('0x52')][_0xd997('0x5a')]=_0x4843d2[_0xd997('0x52')][_0xd997('0x5a')]||_0x4843d2['user']['id'];_0x16b153[_0xd997('0x69')]['id']=_0x4843d2[_0xd997('0x52')][_0xd997('0x5a')];return db['ChatMessage'][_0xd997('0x50')]({'where':{'id':_0x4843d2[_0xd997('0x53')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x19f2f8,null))[_0xd997('0x1c')](function(_0x5d87f5){if(_0x5d87f5){_0x16b153['message']=_0x5d87f5[_0xd997('0x5c')]({'plain':!![]});return db['ChatInteraction']['find']({'where':{'id':_0x5d87f5[_0xd997('0x5e')]}});}return null;})[_0xd997('0x1c')](handleEntityNotFound(_0x19f2f8,null))[_0xd997('0x1c')](function(_0x347ec2){if(_0x347ec2){_0x16b153['interaction']=_0x347ec2['get']({'plain':!![]});interaction_log[_0xd997('0x1d')](_0xd997('0x75'),_0x4843d2[_0xd997('0x5b')]['id'],_0x4843d2[_0xd997('0x5b')][_0xd997('0x33')],_0x4843d2[_0xd997('0x5b')][_0xd997('0x76')],_0x16b153[_0xd997('0x61')]['id'],_0x4843d2[_0xd997('0x52')]?JSON[_0xd997('0x22')](_0x4843d2['body']):_0xd997('0x77'));return respondWithRpcPromise(_0xd997('0x78'),_0xd997('0x79'),_0x16b153);}return null;})[_0xd997('0x1c')](function(_0x67456){var _0x47d5de=_0xd997('0x63')+_0x67456[_0xd997('0x25')][_0xd997('0x64')];return db[_0xd997('0x7a')][_0xd997('0x3b')](_0x47d5de,{'type':db[_0xd997('0x7b')]['QueryTypes'][_0xd997('0x66')],'raw':!![]})['then'](function(_0x3da119){return _0x3da119;});})[_0xd997('0x1c')](function(_0x4c85ee){if(_0x4c85ee){_0x16b153[_0xd997('0x25')][_0xd997('0x67')]=_0x4c85ee[0x0];if(!_0x4843d2['body'][_0xd997('0x5a')])return;return db[_0xd997('0x68')]['find']({'where':{'id':_0x4843d2['body'][_0xd997('0x5a')],'role':_0xd997('0x69')},'attributes':['id','name',_0xd997('0x7c'),_0xd997('0x6a'),_0xd997('0x6b')],'raw':!![]});}return null;})[_0xd997('0x1c')](function(_0x5df89a){if(!_0x5df89a)return null;_0x16b153['message'][_0xd997('0x69')]=_0x5df89a;return _0x16b153;})[_0xd997('0x1c')](function(_0x9bc44d){if(_0x9bc44d){_0x9bc44d['message'][_0xd997('0x6d')]=util['format'](_0xd997('0x7d'),_0x4843d2[_0xd997('0x5b')]['name']);_0x9bc44d[_0xd997('0x25')][_0xd997('0x6e')]=_0x16b153['channel'];_0x9bc44d[_0xd997('0x25')][_0xd997('0x6f')]=_0x16b153[_0xd997('0x6e')];_0x9bc44d[_0xd997('0x25')][_0xd997('0x70')]=_0xd997('0x74');respondWithRpcPromise(_0xd997('0x71'),'EventManager',{'event':_0xd997('0x7e'),'message':_[_0xd997('0x45')](_0x16b153[_0xd997('0x25')],JSON[_0xd997('0x73')](_0x16b153[_0xd997('0x61')][_0xd997('0x7f')]))},client9002);return _0x16b153;}return null;})['then'](respondWithResult(_0x19f2f8,null))['catch'](handleError(_0x19f2f8,null));};
\ No newline at end of file
index d7ef93f..4d87156 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6f0=['hook','exports','../../mysqldb','ChatMessage','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xf6f0,0x110));var _0x0f6f=function(_0x342465,_0x3aa51b){_0x342465=_0x342465-0x0;var _0x4a4da7=_0xf6f0[_0x342465];return _0x4a4da7;};'use strict';var EventEmitter=require('events');var ChatMessage=require(_0x0f6f('0x0'))['db'][_0x0f6f('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x0f6f('0x2')](0x0);var events={'afterCreate':_0x0f6f('0x3'),'afterUpdate':_0x0f6f('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2ed832){return function(_0x48e159,_0x3e8295,_0x3d16bc){ChatMessageEvents[_0x0f6f('0x5')](_0x2ed832+':'+_0x48e159['id'],_0x48e159);ChatMessageEvents['emit'](_0x2ed832,_0x48e159);_0x3d16bc(null);};}for(var e in events){if(events[_0x0f6f('0x6')](e)){var event=events[e];ChatMessage[_0x0f6f('0x7')](e,emitEvent(event));}}module[_0x0f6f('0x8')]=ChatMessageEvents;
\ No newline at end of file
+var _0x8040=['hasOwnProperty','hook','exports','events','ChatMessage','setMaxListeners','save','update','remove','emit'];(function(_0x4ae829,_0x2c842c){var _0x256b31=function(_0x34f104){while(--_0x34f104){_0x4ae829['push'](_0x4ae829['shift']());}};_0x256b31(++_0x2c842c);}(_0x8040,0x16b));var _0x0804=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x8040[_0xbca1b1];return _0x4e1686;};'use strict';var EventEmitter=require(_0x0804('0x0'));var ChatMessage=require('../../mysqldb')['db'][_0x0804('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x0804('0x2')](0x0);var events={'afterCreate':_0x0804('0x3'),'afterUpdate':_0x0804('0x4'),'afterDestroy':_0x0804('0x5')};function emitEvent(_0x42df7e){return function(_0x3f7d50,_0x2d64ce,_0x1b9d3b){ChatMessageEvents[_0x0804('0x6')](_0x42df7e+':'+_0x3f7d50['id'],_0x3f7d50);ChatMessageEvents[_0x0804('0x6')](_0x42df7e,_0x3f7d50);_0x1b9d3b(null);};}for(var e in events){if(events[_0x0804('0x7')](e)){var event=events[e];ChatMessage[_0x0804('0x8')](e,emitEvent(event));}}module[_0x0804('0x9')]=ChatMessageEvents;
\ No newline at end of file
index 78b71cc..6706f49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f70=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','exports','define','chat_messages','fti_chat_messages','FULLTEXT','models','get','direction','out','secret','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','createdAt','catch','utf8mb4','lodash'];(function(_0x2cbc24,_0x1cb2c3){var _0x9a8498=function(_0x3530f8){while(--_0x3530f8){_0x2cbc24['push'](_0x2cbc24['shift']());}};_0x9a8498(++_0x1cb2c3);}(_0x6f70,0x1ec));var _0x06f7=function(_0x40b488,_0x4e2c67){_0x40b488=_0x40b488-0x0;var _0x1ca483=_0x6f70[_0x40b488];return _0x1ca483;};'use strict';var _=require(_0x06f7('0x0'));var util=require(_0x06f7('0x1'));var logger=require(_0x06f7('0x2'))(_0x06f7('0x3'));var moment=require('moment');var BPromise=require(_0x06f7('0x4'));var rp=require(_0x06f7('0x5'));var fs=require('fs');var path=require(_0x06f7('0x6'));var rimraf=require(_0x06f7('0x7'));var config=require(_0x06f7('0x8'));var attributes=require(_0x06f7('0x9'));module[_0x06f7('0xa')]=function(_0xfd748,_0x5c2cd9){return _0xfd748[_0x06f7('0xb')]('ChatMessage',attributes,{'tableName':_0x06f7('0xc'),'paranoid':![],'indexes':[{'name':_0x06f7('0xd'),'fields':['body'],'type':_0x06f7('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x223318,_0x56c7a8,_0x50110d){var _0x4fbcb9=_0xfd748[_0x06f7('0xf')];var _0x2dd45b=_0x223318[_0x06f7('0x10')]({'plain':!![]});if(_0x2dd45b[_0x06f7('0x11')]['toLowerCase']()==='in'||_0x2dd45b[_0x06f7('0x11')]['toLowerCase']()===_0x06f7('0x12')&&!_0x2dd45b[_0x06f7('0x13')]&&!_[_0x06f7('0x14')](_0x2dd45b[_0x06f7('0x15')])){_0x4fbcb9[_0x06f7('0x16')][_0x06f7('0x17')]({'where':{'id':_0x2dd45b[_0x06f7('0x18')]}})[_0x06f7('0x19')](function(_0x3b70d1){if(_0x3b70d1){_0x3b70d1['update']({'lastMsgAt':_0x2dd45b[_0x06f7('0x1a')],'lastMsgDirection':_0x2dd45b[_0x06f7('0x11')]['toLowerCase']()});}})[_0x06f7('0x1b')](function(_0x15c4d4){console['error'](_0x15c4d4);});}_0x50110d();}},'charset':_0x06f7('0x1c'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xd398=['toLowerCase','out','secret','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','update','createdAt','lodash','util','../../config/logger','moment','request-promise','path','./chatMessage.attributes','ChatMessage','chat_messages','fti_chat_messages','body','get','direction'];(function(_0x381628,_0x297047){var _0x4fe847=function(_0x3c1a88){while(--_0x3c1a88){_0x381628['push'](_0x381628['shift']());}};_0x4fe847(++_0x297047);}(_0xd398,0x83));var _0x8d39=function(_0x5e25c8,_0x50b9d9){_0x5e25c8=_0x5e25c8-0x0;var _0x31e800=_0xd398[_0x5e25c8];return _0x31e800;};'use strict';var _=require(_0x8d39('0x0'));var util=require(_0x8d39('0x1'));var logger=require(_0x8d39('0x2'))('api');var moment=require(_0x8d39('0x3'));var BPromise=require('bluebird');var rp=require(_0x8d39('0x4'));var fs=require('fs');var path=require(_0x8d39('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8d39('0x6'));module['exports']=function(_0x248fff,_0x583287){return _0x248fff['define'](_0x8d39('0x7'),attributes,{'tableName':_0x8d39('0x8'),'paranoid':![],'indexes':[{'name':_0x8d39('0x9'),'fields':[_0x8d39('0xa')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4bffe0,_0x2207a6,_0x2d45b0){var _0x1d9e3c=_0x248fff['models'];var _0x4480e9=_0x4bffe0[_0x8d39('0xb')]({'plain':!![]});if(_0x4480e9[_0x8d39('0xc')][_0x8d39('0xd')]()==='in'||_0x4480e9[_0x8d39('0xc')]['toLowerCase']()===_0x8d39('0xe')&&!_0x4480e9[_0x8d39('0xf')]&&!_[_0x8d39('0x10')](_0x4480e9[_0x8d39('0x11')])){_0x1d9e3c[_0x8d39('0x12')][_0x8d39('0x13')]({'where':{'id':_0x4480e9[_0x8d39('0x14')]}})[_0x8d39('0x15')](function(_0x365c36){if(_0x365c36){_0x365c36[_0x8d39('0x16')]({'lastMsgAt':_0x4480e9[_0x8d39('0x17')],'lastMsgDirection':_0x4480e9[_0x8d39('0xc')][_0x8d39('0xd')]()});}})['catch'](function(_0x489a5a){console['error'](_0x489a5a);});}_0x2d45b0();}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 4474bfd..9272aaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaf9=['raw','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','request','then','info','debug','request\x20sent','stringify','error','code','ChatMessage,\x20%s,\x20%s','message','result','catch','CreateChatMessage','ChatMessage','create','body','options'];(function(_0x1242f2,_0x2b9a43){var _0x3e1e84=function(_0x2d25a0){while(--_0x2d25a0){_0x1242f2['push'](_0x1242f2['shift']());}};_0x3e1e84(++_0x2b9a43);}(_0xcaf9,0x9c));var _0x9caf=function(_0x23071a,_0x4dd508){_0x23071a=_0x23071a-0x0;var _0x40479d=_0xcaf9[_0x23071a];return _0x40479d;};'use strict';var _=require('lodash');var util=require(_0x9caf('0x0'));var moment=require(_0x9caf('0x1'));var BPromise=require(_0x9caf('0x2'));var rs=require(_0x9caf('0x3'));var fs=require('fs');var Redis=require(_0x9caf('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9caf('0x5'))(_0x9caf('0x6'));var config=require('../../config/environment');var jayson=require(_0x9caf('0x7'));var client=jayson[_0x9caf('0x8')][_0x9caf('0x9')]({'port':0x232a});config[_0x9caf('0xa')]=_[_0x9caf('0xb')](config[_0x9caf('0xa')],{'host':_0x9caf('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9caf('0xa')]));require('./chatMessage.socket')['register'](socket);function respondWithRpcPromise(_0x5ec6f3,_0x7ecee4,_0x56b76f){return new BPromise(function(_0x424480,_0x55f001){return client[_0x9caf('0xd')](_0x5ec6f3,_0x56b76f)[_0x9caf('0xe')](function(_0x477028){logger[_0x9caf('0xf')]('ChatMessage,\x20%s,\x20%s',_0x7ecee4,'request\x20sent');logger[_0x9caf('0x10')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x7ecee4,_0x9caf('0x11'),JSON[_0x9caf('0x12')](_0x477028));if(_0x477028[_0x9caf('0x13')]){if(_0x477028[_0x9caf('0x13')][_0x9caf('0x14')]===0x1f4){logger[_0x9caf('0x13')](_0x9caf('0x15'),_0x7ecee4,_0x477028[_0x9caf('0x13')]['message']);return _0x55f001(_0x477028[_0x9caf('0x13')][_0x9caf('0x16')]);}logger[_0x9caf('0x13')](_0x9caf('0x15'),_0x7ecee4,_0x477028[_0x9caf('0x13')][_0x9caf('0x16')]);return _0x424480(_0x477028[_0x9caf('0x13')][_0x9caf('0x16')]);}else{logger[_0x9caf('0xf')](_0x9caf('0x15'),_0x7ecee4,_0x9caf('0x11'));_0x424480(_0x477028[_0x9caf('0x17')]['message']);}})[_0x9caf('0x18')](function(_0x56106f){logger[_0x9caf('0x13')]('ChatMessage,\x20%s,\x20%s',_0x7ecee4,_0x56106f);_0x55f001(_0x56106f);});});}exports[_0x9caf('0x19')]=function(_0x22c303){var _0x27563b=this;return new Promise(function(_0x100831,_0x218a34){return db[_0x9caf('0x1a')][_0x9caf('0x1b')](_0x22c303[_0x9caf('0x1c')],{'raw':_0x22c303[_0x9caf('0x1d')]?_0x22c303[_0x9caf('0x1d')][_0x9caf('0x1e')]===undefined?!![]:![]:!![]})[_0x9caf('0xe')](function(_0x18d3d9){logger['info'](_0x9caf('0x19'),_0x22c303);logger[_0x9caf('0x10')](_0x9caf('0x19'),_0x22c303,JSON[_0x9caf('0x12')](_0x18d3d9));_0x100831(_0x18d3d9);})[_0x9caf('0x18')](function(_0x473428){logger[_0x9caf('0x13')](_0x9caf('0x19'),_0x473428[_0x9caf('0x16')],_0x22c303);_0x218a34(_0x27563b[_0x9caf('0x13')](0x1f4,_0x473428['message']));});});};
\ No newline at end of file
+var _0x90e6=['ChatMessage,\x20%s,\x20%s,\x20%s','error','message','result','catch','CreateChatMessage','create','options','raw','then','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','request','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x45346d,_0xffd56b){var _0x5ce7ca=function(_0x27ce87){while(--_0x27ce87){_0x45346d['push'](_0x45346d['shift']());}};_0x5ce7ca(++_0xffd56b);}(_0x90e6,0xe3));var _0x690e=function(_0x1ee351,_0x54261b){_0x1ee351=_0x1ee351-0x0;var _0x245aaf=_0x90e6[_0x1ee351];return _0x245aaf;};'use strict';var _=require(_0x690e('0x0'));var util=require(_0x690e('0x1'));var moment=require(_0x690e('0x2'));var BPromise=require('bluebird');var rs=require(_0x690e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x690e('0x4'))['db'];var utils=require(_0x690e('0x5'));var logger=require(_0x690e('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x690e('0x7'));var client=jayson[_0x690e('0x8')][_0x690e('0x9')]({'port':0x232a});config[_0x690e('0xa')]=_[_0x690e('0xb')](config['redis'],{'host':_0x690e('0xc'),'port':0x18eb});var socket=require(_0x690e('0xd'))(new Redis(config[_0x690e('0xa')]));require(_0x690e('0xe'))[_0x690e('0xf')](socket);function respondWithRpcPromise(_0x175792,_0x4c7da0,_0x12af70){return new BPromise(function(_0x5416a5,_0x35e5f9){return client[_0x690e('0x10')](_0x175792,_0x12af70)['then'](function(_0x47b924){logger[_0x690e('0x11')](_0x690e('0x12'),_0x4c7da0,_0x690e('0x13'));logger[_0x690e('0x14')](_0x690e('0x15'),_0x4c7da0,_0x690e('0x13'),JSON['stringify'](_0x47b924));if(_0x47b924['error']){if(_0x47b924[_0x690e('0x16')]['code']===0x1f4){logger[_0x690e('0x16')]('ChatMessage,\x20%s,\x20%s',_0x4c7da0,_0x47b924['error'][_0x690e('0x17')]);return _0x35e5f9(_0x47b924['error']['message']);}logger[_0x690e('0x16')](_0x690e('0x12'),_0x4c7da0,_0x47b924[_0x690e('0x16')][_0x690e('0x17')]);return _0x5416a5(_0x47b924[_0x690e('0x16')][_0x690e('0x17')]);}else{logger[_0x690e('0x11')](_0x690e('0x12'),_0x4c7da0,_0x690e('0x13'));_0x5416a5(_0x47b924[_0x690e('0x18')][_0x690e('0x17')]);}})[_0x690e('0x19')](function(_0x1246e3){logger[_0x690e('0x16')](_0x690e('0x12'),_0x4c7da0,_0x1246e3);_0x35e5f9(_0x1246e3);});});}exports[_0x690e('0x1a')]=function(_0xc441a1){var _0x3e41c4=this;return new Promise(function(_0x54e244,_0x52dce2){return db['ChatMessage'][_0x690e('0x1b')](_0xc441a1['body'],{'raw':_0xc441a1[_0x690e('0x1c')]?_0xc441a1[_0x690e('0x1c')][_0x690e('0x1d')]===undefined?!![]:![]:!![]})[_0x690e('0x1e')](function(_0x57ba71){logger['info'](_0x690e('0x1a'),_0xc441a1);logger[_0x690e('0x14')](_0x690e('0x1a'),_0xc441a1,JSON['stringify'](_0x57ba71));_0x54e244(_0x57ba71);})[_0x690e('0x19')](function(_0x3b9367){logger[_0x690e('0x16')](_0x690e('0x1a'),_0x3b9367[_0x690e('0x17')],_0xc441a1);_0x52dce2(_0x3e41c4[_0x690e('0x16')](0x1f4,_0x3b9367['message']));});});};
\ No newline at end of file
index d4e303a..cd16238 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43fd=['register','length','save','emit','removeListener'];(function(_0x52cbf6,_0x1b61c9){var _0x18e261=function(_0x2ac3cb){while(--_0x2ac3cb){_0x52cbf6['push'](_0x52cbf6['shift']());}};_0x18e261(++_0x1b61c9);}(_0x43fd,0x1ec));var _0xd43f=function(_0x1ffdcc,_0x248c6d){_0x1ffdcc=_0x1ffdcc-0x0;var _0x3ef694=_0x43fd[_0x1ffdcc];return _0x3ef694;};'use strict';var ChatMessageEvents=require('./chatMessage.events');var events=[_0xd43f('0x0'),'remove','update'];function createListener(_0x316ee5,_0x1ead65){return function(_0x484615){_0x1ead65[_0xd43f('0x1')](_0x316ee5,_0x484615);};}function removeListener(_0x48f953,_0x3c2af1){return function(){ChatMessageEvents[_0xd43f('0x2')](_0x48f953,_0x3c2af1);};}exports[_0xd43f('0x3')]=function(_0x33ddff){for(var _0x52e75f=0x0,_0xde214d=events[_0xd43f('0x4')];_0x52e75f<_0xde214d;_0x52e75f++){var _0x20ccd7=events[_0x52e75f];var _0x331163=createListener('chatMessage:'+_0x20ccd7,_0x33ddff);ChatMessageEvents['on'](_0x20ccd7,_0x331163);}};
\ No newline at end of file
+var _0x448b=['emit','removeListener','register','length','chatMessage:','./chatMessage.events','save','remove','update'];(function(_0x3ed978,_0x5c96b8){var _0x5d9bd1=function(_0x487b8f){while(--_0x487b8f){_0x3ed978['push'](_0x3ed978['shift']());}};_0x5d9bd1(++_0x5c96b8);}(_0x448b,0x125));var _0xb448=function(_0x1f1177,_0xaa9099){_0x1f1177=_0x1f1177-0x0;var _0x338d0f=_0x448b[_0x1f1177];return _0x338d0f;};'use strict';var ChatMessageEvents=require(_0xb448('0x0'));var events=[_0xb448('0x1'),_0xb448('0x2'),_0xb448('0x3')];function createListener(_0x422fa2,_0x51583a){return function(_0x5bf7db){_0x51583a[_0xb448('0x4')](_0x422fa2,_0x5bf7db);};}function removeListener(_0x32bcae,_0x172a89){return function(){ChatMessageEvents[_0xb448('0x5')](_0x32bcae,_0x172a89);};}exports[_0xb448('0x6')]=function(_0x276466){for(var _0x3670cb=0x0,_0x5993ad=events[_0xb448('0x7')];_0x3670cb<_0x5993ad;_0x3670cb++){var _0x2f6f82=events[_0x3670cb];var _0x2c2bdd=createListener(_0xb448('0x8')+_0x2f6f82,_0x276466);ChatMessageEvents['on'](_0x2f6f82,_0x2c2bdd);}};
\ No newline at end of file
index dae7dea..fc9104b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5dd6=['update','/:id/accept','/:id/reject','reject','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatMessage.controller','get','index','isAuthenticated','describe','/:id','show','post','tracked','chat','put'];(function(_0xcc206c,_0xf20f91){var _0x239181=function(_0x367a0b){while(--_0x367a0b){_0xcc206c['push'](_0xcc206c['shift']());}};_0x239181(++_0xf20f91);}(_0x5dd6,0x9c));var _0x65dd=function(_0x496738,_0x3f1a9f){_0x496738=_0x496738-0x0;var _0xee1381=_0x5dd6[_0x496738];return _0xee1381;};'use strict';var multer=require('multer');var util=require(_0x65dd('0x0'));var path=require(_0x65dd('0x1'));var timeout=require(_0x65dd('0x2'));var express=require(_0x65dd('0x3'));var router=express[_0x65dd('0x4')]();var fs_extra=require(_0x65dd('0x5'));var auth=require(_0x65dd('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x65dd('0x7'));var controller=require(_0x65dd('0x8'));router[_0x65dd('0x9')]('/',auth['isAuthenticated'](),controller[_0x65dd('0xa')]);router[_0x65dd('0x9')]('/describe',auth[_0x65dd('0xb')](),controller[_0x65dd('0xc')]);router[_0x65dd('0x9')](_0x65dd('0xd'),auth[_0x65dd('0xb')](),controller[_0x65dd('0xe')]);router[_0x65dd('0xf')]('/',auth[_0x65dd('0xb')](),interaction[_0x65dd('0x10')](_0x65dd('0x11'),'chatmessage:create'),controller['create']);router[_0x65dd('0x12')](_0x65dd('0xd'),controller[_0x65dd('0x13')]);router[_0x65dd('0x12')](_0x65dd('0x14'),auth[_0x65dd('0xb')](),controller['accept']);router[_0x65dd('0x12')](_0x65dd('0x15'),auth[_0x65dd('0xb')](),controller[_0x65dd('0x16')]);router[_0x65dd('0x17')](_0x65dd('0xd'),auth[_0x65dd('0xb')](),controller['destroy']);module[_0x65dd('0x18')]=router;
\ No newline at end of file
+var _0xa978=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','chatmessage:create','create','/:id/accept','accept','put','/:id/reject','reject','delete','destroy','multer','util','path','connect-timeout'];(function(_0x45cafc,_0x67076f){var _0x3d4d41=function(_0xea66){while(--_0xea66){_0x45cafc['push'](_0x45cafc['shift']());}};_0x3d4d41(++_0x67076f);}(_0xa978,0x7e));var _0x8a97=function(_0x9a4b1d,_0x4a53d3){_0x9a4b1d=_0x9a4b1d-0x0;var _0x38ba09=_0xa978[_0x9a4b1d];return _0x38ba09;};'use strict';var multer=require(_0x8a97('0x0'));var util=require(_0x8a97('0x1'));var path=require(_0x8a97('0x2'));var timeout=require(_0x8a97('0x3'));var express=require(_0x8a97('0x4'));var router=express[_0x8a97('0x5')]();var fs_extra=require(_0x8a97('0x6'));var auth=require(_0x8a97('0x7'));var interaction=require(_0x8a97('0x8'));var config=require(_0x8a97('0x9'));var controller=require(_0x8a97('0xa'));router[_0x8a97('0xb')]('/',auth[_0x8a97('0xc')](),controller[_0x8a97('0xd')]);router['get'](_0x8a97('0xe'),auth[_0x8a97('0xc')](),controller[_0x8a97('0xf')]);router[_0x8a97('0xb')](_0x8a97('0x10'),auth[_0x8a97('0xc')](),controller['show']);router['post']('/',auth['isAuthenticated'](),interaction['tracked']('chat',_0x8a97('0x11')),controller[_0x8a97('0x12')]);router['put'](_0x8a97('0x10'),controller['update']);router['put'](_0x8a97('0x13'),auth[_0x8a97('0xc')](),controller[_0x8a97('0x14')]);router[_0x8a97('0x15')](_0x8a97('0x16'),auth[_0x8a97('0xc')](),controller[_0x8a97('0x17')]);router[_0x8a97('0x18')](_0x8a97('0x10'),auth[_0x8a97('0xc')](),controller[_0x8a97('0x19')]);module['exports']=router;
\ No newline at end of file
index ea3bcb1..5307017 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84d1=['exports','medium','sequelize'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0x84d1,0x119));var _0x184d=function(_0x272156,_0x5e4b0d){_0x272156=_0x272156-0x0;var _0x1071d0=_0x84d1[_0x272156];return _0x1071d0;};'use strict';var Sequelize=require(_0x184d('0x0'));module[_0x184d('0x1')]={'body':{'type':Sequelize['TEXT'](_0x184d('0x2')),'allowNull':![]}};
\ No newline at end of file
+var _0x13f7=['exports','TEXT','medium'];(function(_0x556927,_0x34b53f){var _0x5f1235=function(_0x4f4e44){while(--_0x4f4e44){_0x556927['push'](_0x556927['shift']());}};_0x5f1235(++_0x34b53f);}(_0x13f7,0x72));var _0x713f=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x13f7[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require('sequelize');module[_0x713f('0x0')]={'body':{'type':Sequelize[_0x713f('0x1')](_0x713f('0x2')),'allowNull':![]}};
\ No newline at end of file
index 7770ce9..f1d69d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x1cfa0d,_0x4391f2){var _0xe33279=function(_0x3ce7c1){while(--_0x3ce7c1){_0x1cfa0d['push'](_0x1cfa0d['shift']());}};_0xe33279(++_0x4391f2);}(_0x7a54,0x106));var _0x47a5=function(_0x35140e,_0x54d78e){_0x35140e=_0x35140e-0x0;var _0x529c31=_0x7a54[_0x35140e];return _0x529c31;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
+var _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x7a54,0x106));var _0x47a5=function(_0x32ee2b,_0x5c2965){_0x32ee2b=_0x32ee2b-0x0;var _0x2ac5f2=_0x7a54[_0x32ee2b];return _0x2ac5f2;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
index 8180734..bf98119 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x439e=['utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage'];(function(_0x2f0057,_0x448b27){var _0x17f2c3=function(_0x12efc3){while(--_0x12efc3){_0x2f0057['push'](_0x2f0057['shift']());}};_0x17f2c3(++_0x448b27);}(_0x439e,0x153));var _0xe439=function(_0x3320fb,_0x519c04){_0x3320fb=_0x3320fb-0x0;var _0x4329e9=_0x439e[_0x3320fb];return _0x4329e9;};'use strict';var _=require('lodash');var util=require(_0xe439('0x0'));var logger=require(_0xe439('0x1'))('api');var moment=require(_0xe439('0x2'));var BPromise=require(_0xe439('0x3'));var rp=require(_0xe439('0x4'));var fs=require('fs');var path=require(_0xe439('0x5'));var rimraf=require(_0xe439('0x6'));var config=require(_0xe439('0x7'));var attributes=require(_0xe439('0x8'));module[_0xe439('0x9')]=function(_0x2d7adb,_0x392dfb){return _0x2d7adb[_0xe439('0xa')](_0xe439('0xb'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xe439('0xc')});};
\ No newline at end of file
+var _0xd57d=['moment','request-promise','rimraf','../../config/environment','./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage','chat_offline_messages','utf8mb4_unicode_ci','util','api'];(function(_0x48c8ab,_0x5af680){var _0x246963=function(_0x2d1f61){while(--_0x2d1f61){_0x48c8ab['push'](_0x48c8ab['shift']());}};_0x246963(++_0x5af680);}(_0xd57d,0x6a));var _0xdd57=function(_0x7e745c,_0x5e082b){_0x7e745c=_0x7e745c-0x0;var _0x107139=_0xd57d[_0x7e745c];return _0x107139;};'use strict';var _=require('lodash');var util=require(_0xdd57('0x0'));var logger=require('../../config/logger')(_0xdd57('0x1'));var moment=require(_0xdd57('0x2'));var BPromise=require('bluebird');var rp=require(_0xdd57('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdd57('0x4'));var config=require(_0xdd57('0x5'));var attributes=require(_0xdd57('0x6'));module[_0xdd57('0x7')]=function(_0x28157d,_0x185edc){return _0x28157d[_0xdd57('0x8')](_0xdd57('0x9'),attributes,{'tableName':_0xdd57('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xdd57('0xb')});};
\ No newline at end of file
index 6fc21b3..13dfe21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x535f=['util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','error','code','ChatOfflineMessage,\x20%s,\x20%s','message','result','catch'];(function(_0x3f994d,_0x249d72){var _0x5309b4=function(_0x545307){while(--_0x545307){_0x3f994d['push'](_0x3f994d['shift']());}};_0x5309b4(++_0x249d72);}(_0x535f,0x111));var _0xf535=function(_0x545c73,_0x1d886f){_0x545c73=_0x545c73-0x0;var _0x194561=_0x535f[_0x545c73];return _0x194561;};'use strict';var _=require('lodash');var util=require(_0xf535('0x0'));var moment=require(_0xf535('0x1'));var BPromise=require('bluebird');var rs=require(_0xf535('0x2'));var fs=require('fs');var Redis=require(_0xf535('0x3'));var db=require(_0xf535('0x4'))['db'];var utils=require(_0xf535('0x5'));var logger=require('../../config/logger')(_0xf535('0x6'));var config=require(_0xf535('0x7'));var jayson=require(_0xf535('0x8'));var client=jayson[_0xf535('0x9')][_0xf535('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xc74104,_0x580328,_0x510b86){return new BPromise(function(_0x17f72e,_0x156c64){return client[_0xf535('0xb')](_0xc74104,_0x510b86)['then'](function(_0x244189){logger[_0xf535('0xc')]('ChatOfflineMessage,\x20%s,\x20%s',_0x580328,'request\x20sent');logger[_0xf535('0xd')](_0xf535('0xe'),_0x580328,'request\x20sent',JSON['stringify'](_0x244189));if(_0x244189[_0xf535('0xf')]){if(_0x244189[_0xf535('0xf')][_0xf535('0x10')]===0x1f4){logger[_0xf535('0xf')](_0xf535('0x11'),_0x580328,_0x244189['error'][_0xf535('0x12')]);return _0x156c64(_0x244189[_0xf535('0xf')][_0xf535('0x12')]);}logger[_0xf535('0xf')](_0xf535('0x11'),_0x580328,_0x244189[_0xf535('0xf')][_0xf535('0x12')]);return _0x17f72e(_0x244189[_0xf535('0xf')][_0xf535('0x12')]);}else{logger[_0xf535('0xc')](_0xf535('0x11'),_0x580328,'request\x20sent');_0x17f72e(_0x244189[_0xf535('0x13')][_0xf535('0x12')]);}})[_0xf535('0x14')](function(_0x3ffb1b){logger[_0xf535('0xf')](_0xf535('0x11'),_0x580328,_0x3ffb1b);_0x156c64(_0x3ffb1b);});});}
\ No newline at end of file
+var _0x943c=['stringify','error','code','ChatOfflineMessage,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug'];(function(_0x5b4357,_0x512357){var _0x353d89=function(_0x3efbf3){while(--_0x3efbf3){_0x5b4357['push'](_0x5b4357['shift']());}};_0x353d89(++_0x512357);}(_0x943c,0xd8));var _0xc943=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x943c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc943('0x0'));var util=require(_0xc943('0x1'));var moment=require(_0xc943('0x2'));var BPromise=require(_0xc943('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc943('0x4'))['db'];var utils=require(_0xc943('0x5'));var logger=require(_0xc943('0x6'))('rpc');var config=require(_0xc943('0x7'));var jayson=require(_0xc943('0x8'));var client=jayson[_0xc943('0x9')][_0xc943('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1b73ad,_0x4091fd,_0x3f718f){return new BPromise(function(_0x56e665,_0x3ec7da){return client[_0xc943('0xb')](_0x1b73ad,_0x3f718f)[_0xc943('0xc')](function(_0x455eed){logger['info']('ChatOfflineMessage,\x20%s,\x20%s',_0x4091fd,_0xc943('0xd'));logger[_0xc943('0xe')]('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x4091fd,'request\x20sent',JSON[_0xc943('0xf')](_0x455eed));if(_0x455eed[_0xc943('0x10')]){if(_0x455eed[_0xc943('0x10')][_0xc943('0x11')]===0x1f4){logger[_0xc943('0x10')](_0xc943('0x12'),_0x4091fd,_0x455eed['error'][_0xc943('0x13')]);return _0x3ec7da(_0x455eed[_0xc943('0x10')]['message']);}logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x4091fd,_0x455eed[_0xc943('0x10')][_0xc943('0x13')]);return _0x56e665(_0x455eed['error'][_0xc943('0x13')]);}else{logger['info']('ChatOfflineMessage,\x20%s,\x20%s',_0x4091fd,_0xc943('0xd'));_0x56e665(_0x455eed['result'][_0xc943('0x13')]);}})[_0xc943('0x14')](function(_0x1eb50a){logger[_0xc943('0x10')]('ChatOfflineMessage,\x20%s,\x20%s',_0x4091fd,_0x1eb50a);_0x3ec7da(_0x1eb50a);});});}
\ No newline at end of file
index a3ed5a3..602d7aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x576a=['../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','index','/describe','/:id','show','post','put','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service'];(function(_0x31b13c,_0xdffa8){var _0x47dbb4=function(_0x15b0cc){while(--_0x15b0cc){_0x31b13c['push'](_0x31b13c['shift']());}};_0x47dbb4(++_0xdffa8);}(_0x576a,0x111));var _0xa576=function(_0x62bf80,_0x394e38){_0x62bf80=_0x62bf80-0x0;var _0x2890d7=_0x576a[_0x62bf80];return _0x2890d7;};'use strict';var multer=require(_0xa576('0x0'));var util=require(_0xa576('0x1'));var path=require(_0xa576('0x2'));var timeout=require('connect-timeout');var express=require(_0xa576('0x3'));var router=express[_0xa576('0x4')]();var fs_extra=require(_0xa576('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa576('0x6'));var config=require(_0xa576('0x7'));var controller=require(_0xa576('0x8'));router[_0xa576('0x9')]('/',auth[_0xa576('0xa')](),controller[_0xa576('0xb')]);router[_0xa576('0x9')](_0xa576('0xc'),auth[_0xa576('0xa')](),controller['describe']);router['get'](_0xa576('0xd'),auth[_0xa576('0xa')](),controller[_0xa576('0xe')]);router[_0xa576('0xf')]('/',auth[_0xa576('0xa')](),controller['create']);router[_0xa576('0x10')](_0xa576('0xd'),auth[_0xa576('0xa')](),controller['update']);router[_0xa576('0x11')](_0xa576('0xd'),auth[_0xa576('0xa')](),controller[_0xa576('0x12')]);module[_0xa576('0x13')]=router;
\ No newline at end of file
+var _0xe79a=['exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','update','delete','destroy'];(function(_0xbd08b4,_0x4790ed){var _0x314f1e=function(_0x161589){while(--_0x161589){_0xbd08b4['push'](_0xbd08b4['shift']());}};_0x314f1e(++_0x4790ed);}(_0xe79a,0x17d));var _0xae79=function(_0x10113d,_0x13a861){_0x10113d=_0x10113d-0x0;var _0xf52f5d=_0xe79a[_0x10113d];return _0xf52f5d;};'use strict';var multer=require(_0xae79('0x0'));var util=require(_0xae79('0x1'));var path=require(_0xae79('0x2'));var timeout=require('connect-timeout');var express=require(_0xae79('0x3'));var router=express[_0xae79('0x4')]();var fs_extra=require(_0xae79('0x5'));var auth=require(_0xae79('0x6'));var interaction=require(_0xae79('0x7'));var config=require(_0xae79('0x8'));var controller=require('./chatOfflineMessage.controller');router[_0xae79('0x9')]('/',auth[_0xae79('0xa')](),controller[_0xae79('0xb')]);router[_0xae79('0x9')](_0xae79('0xc'),auth[_0xae79('0xa')](),controller[_0xae79('0xd')]);router[_0xae79('0x9')](_0xae79('0xe'),auth[_0xae79('0xa')](),controller[_0xae79('0xf')]);router['post']('/',auth[_0xae79('0xa')](),controller['create']);router['put']('/:id',auth[_0xae79('0xa')](),controller[_0xae79('0x10')]);router[_0xae79('0x11')](_0xae79('0xe'),auth[_0xae79('0xa')](),controller[_0xae79('0x12')]);module[_0xae79('0x13')]=router;
\ No newline at end of file
index d90f9f7..242680d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97eb=['STRING','mouseOver','INTEGER','sequelize','exports'];(function(_0x49ca18,_0x5e6d05){var _0x145d54=function(_0x30b9be){while(--_0x30b9be){_0x49ca18['push'](_0x49ca18['shift']());}};_0x145d54(++_0x5e6d05);}(_0x97eb,0x193));var _0xb97e=function(_0x23855f,_0x3837a4){_0x23855f=_0x23855f-0x0;var _0x4f911b=_0x97eb[_0x23855f];return _0x4f911b;};'use strict';var Sequelize=require(_0xb97e('0x0'));module[_0xb97e('0x1')]={'name':{'type':Sequelize[_0xb97e('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xb97e('0x3'),'timeout'),'defaultValue':_0xb97e('0x3')},'selector':{'type':Sequelize[_0xb97e('0x2')]},'timeout':{'type':Sequelize[_0xb97e('0x4')]}};
\ No newline at end of file
+var _0x17ce=['ENUM','mouseOver','timeout','STRING','INTEGER','exports'];(function(_0x2ae2ad,_0xac5b0c){var _0x26dbd7=function(_0x5e685b){while(--_0x5e685b){_0x2ae2ad['push'](_0x2ae2ad['shift']());}};_0x26dbd7(++_0xac5b0c);}(_0x17ce,0x14f));var _0xe17c=function(_0x42b5e8,_0x112557){_0x42b5e8=_0x42b5e8-0x0;var _0x5d352e=_0x17ce[_0x42b5e8];return _0x5d352e;};'use strict';var Sequelize=require('sequelize');module[_0xe17c('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xe17c('0x1')](_0xe17c('0x2'),_0xe17c('0x3')),'defaultValue':_0xe17c('0x2')},'selector':{'type':Sequelize[_0xe17c('0x4')]},'timeout':{'type':Sequelize[_0xe17c('0x5')]}};
\ No newline at end of file
index dbc1b83..36a619b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd6e=['save','update','then','stack','name','send','show','params','model','keys','ChatProactiveAction','query','filters','intersection','attributes','fields','length','include','merge','find','catch','create','body','destroy','eml-format','zip-dir','request-promise','moment','path','ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject'];(function(_0x3b5bca,_0x326805){var _0x39833=function(_0x16f56f){while(--_0x16f56f){_0x3b5bca['push'](_0x3b5bca['shift']());}};_0x39833(++_0x326805);}(_0xfd6e,0x16e));var _0xefd6=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xfd6e[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require(_0xefd6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xefd6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xefd6('0x2'));var moment=require(_0xefd6('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xefd6('0x4'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xefd6('0x5'));var fs=require('fs');var fs_extra=require(_0xefd6('0x6'));var _=require(_0xefd6('0x7'));var squel=require(_0xefd6('0x8'));var crypto=require(_0xefd6('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xefd6('0xa'));var querystring=require(_0xefd6('0xb'));var Papa=require(_0xefd6('0xc'));var Redis=require('ioredis');var authService=require(_0xefd6('0xd'));var qs=require(_0xefd6('0xe'));var as=require(_0xefd6('0xf'));var hardwareService=require(_0xefd6('0x10'));var logger=require('../../config/logger')(_0xefd6('0x11'));var utils=require(_0xefd6('0x12'));var config=require(_0xefd6('0x13'));var licenseUtil=require(_0xefd6('0x14'));var db=require(_0xefd6('0x15'))['db'];function respondWithStatusCode(_0x34ad42,_0x3a8259){_0x3a8259=_0x3a8259||0xcc;return function(_0x1069f3){if(_0x1069f3){return _0x34ad42['sendStatus'](_0x3a8259);}return _0x34ad42[_0xefd6('0x16')](_0x3a8259)[_0xefd6('0x17')]();};}function respondWithResult(_0x45ac7f,_0x1ade7c){_0x1ade7c=_0x1ade7c||0xc8;return function(_0x1a8cc9){if(_0x1a8cc9){return _0x45ac7f['status'](_0x1ade7c)[_0xefd6('0x18')](_0x1a8cc9);}};}function respondWithFilteredResult(_0x4be0f8,_0x23d864){return function(_0x4d72ca){if(_0x4d72ca){var _0x25a39d=typeof _0x23d864[_0xefd6('0x19')]==='undefined'&&typeof _0x23d864[_0xefd6('0x1a')]===_0xefd6('0x1b');var _0x41e998=_0x4d72ca[_0xefd6('0x1c')];var _0xd59458=_0x25a39d?0x0:_0x23d864[_0xefd6('0x19')];var _0x469c17=_0x25a39d?_0x4d72ca[_0xefd6('0x1c')]:_0x23d864[_0xefd6('0x19')]+_0x23d864[_0xefd6('0x1a')];var _0x1aa125;if(_0x469c17>=_0x41e998){_0x469c17=_0x41e998;_0x1aa125=0xc8;}else{_0x1aa125=0xce;}_0x4be0f8['status'](_0x1aa125);return _0x4be0f8[_0xefd6('0x1d')](_0xefd6('0x1e'),_0xd59458+'-'+_0x469c17+'/'+_0x41e998)[_0xefd6('0x18')](_0x4d72ca);}return null;};}function patchUpdates(_0x3a26c5){return function(_0x122009){try{jsonpatch[_0xefd6('0x1f')](_0x122009,_0x3a26c5,!![]);}catch(_0x499c9b){return BPromise[_0xefd6('0x20')](_0x499c9b);}return _0x122009[_0xefd6('0x21')]();};}function saveUpdates(_0x586388,_0x2b0442){return function(_0x36d030){if(_0x36d030){return _0x36d030[_0xefd6('0x22')](_0x586388)['then'](function(_0x587643){return _0x587643;});}return null;};}function removeEntity(_0x1a0a7f,_0x1b1d41){return function(_0xe763eb){if(_0xe763eb){return _0xe763eb['destroy']()[_0xefd6('0x23')](function(){_0x1a0a7f[_0xefd6('0x16')](0xcc)[_0xefd6('0x17')]();});}};}function handleEntityNotFound(_0x5347fd,_0xf0adca){return function(_0x3d91b4){if(!_0x3d91b4){_0x5347fd['sendStatus'](0x194);}return _0x3d91b4;};}function handleError(_0x2be815,_0x2d71df){_0x2d71df=_0x2d71df||0x1f4;return function(_0x43ffbc){logger['error'](_0x43ffbc[_0xefd6('0x24')]);if(_0x43ffbc[_0xefd6('0x25')]){delete _0x43ffbc[_0xefd6('0x25')];}_0x2be815[_0xefd6('0x16')](_0x2d71df)[_0xefd6('0x26')](_0x43ffbc);};}exports[_0xefd6('0x27')]=function(_0x320e4f,_0x1783d7){var _0x5404ad={'raw':!![],'where':{'id':_0x320e4f[_0xefd6('0x28')]['id']}},_0xca6bad={};_0xca6bad[_0xefd6('0x29')]=_[_0xefd6('0x2a')](db[_0xefd6('0x2b')]['rawAttributes']);_0xca6bad[_0xefd6('0x2c')]=_[_0xefd6('0x2a')](_0x320e4f[_0xefd6('0x2c')]);_0xca6bad[_0xefd6('0x2d')]=_[_0xefd6('0x2e')](_0xca6bad[_0xefd6('0x29')],_0xca6bad['query']);_0x5404ad[_0xefd6('0x2f')]=_[_0xefd6('0x2e')](_0xca6bad[_0xefd6('0x29')],qs[_0xefd6('0x30')](_0x320e4f[_0xefd6('0x2c')][_0xefd6('0x30')]));_0x5404ad[_0xefd6('0x2f')]=_0x5404ad['attributes'][_0xefd6('0x31')]?_0x5404ad[_0xefd6('0x2f')]:_0xca6bad[_0xefd6('0x29')];if(_0x320e4f[_0xefd6('0x2c')]['includeAll']){_0x5404ad[_0xefd6('0x32')]=[{'all':!![]}];}_0x5404ad=_[_0xefd6('0x33')]({},_0x5404ad,_0x320e4f['options']);return db[_0xefd6('0x2b')][_0xefd6('0x34')](_0x5404ad)[_0xefd6('0x23')](handleEntityNotFound(_0x1783d7,null))[_0xefd6('0x23')](respondWithResult(_0x1783d7,null))[_0xefd6('0x35')](handleError(_0x1783d7,null));};exports[_0xefd6('0x36')]=function(_0x351ca5,_0x45a79a){return db[_0xefd6('0x2b')]['create'](_0x351ca5[_0xefd6('0x37')],{})[_0xefd6('0x23')](respondWithResult(_0x45a79a,0xc9))[_0xefd6('0x35')](handleError(_0x45a79a,null));};exports[_0xefd6('0x22')]=function(_0xaf2526,_0x2bf865){if(_0xaf2526['body']['id']){delete _0xaf2526[_0xefd6('0x37')]['id'];}return db[_0xefd6('0x2b')][_0xefd6('0x34')]({'where':{'id':_0xaf2526[_0xefd6('0x28')]['id']}})['then'](handleEntityNotFound(_0x2bf865,null))[_0xefd6('0x23')](saveUpdates(_0xaf2526[_0xefd6('0x37')],null))['then'](respondWithResult(_0x2bf865,null))[_0xefd6('0x35')](handleError(_0x2bf865,null));};exports[_0xefd6('0x38')]=function(_0x536ad1,_0x1d7615){return db[_0xefd6('0x2b')][_0xefd6('0x34')]({'where':{'id':_0x536ad1[_0xefd6('0x28')]['id']}})[_0xefd6('0x23')](handleEntityNotFound(_0x1d7615,null))[_0xefd6('0x23')](removeEntity(_0x1d7615,null))['catch'](handleError(_0x1d7615,null));};
\ No newline at end of file
+var _0xe4d9=['send','show','keys','ChatProactiveAction','rawAttributes','query','filters','model','intersection','fields','attributes','length','includeAll','include','merge','options','create','body','catch','find','params','eml-format','rimraf','zip-dir','request-promise','mustache','util','sox','to-csv','fs-extra','lodash','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','stack'];(function(_0x162f05,_0x328e0f){var _0x54f59a=function(_0x2cf002){while(--_0x2cf002){_0x162f05['push'](_0x162f05['shift']());}};_0x54f59a(++_0x328e0f);}(_0xe4d9,0x141));var _0x9e4d=function(_0x2072cb,_0x10f922){_0x2072cb=_0x2072cb-0x0;var _0x4bf8a0=_0xe4d9[_0x2072cb];return _0x4bf8a0;};'use strict';var emlformat=require(_0x9e4d('0x0'));var rimraf=require(_0x9e4d('0x1'));var zipdir=require(_0x9e4d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9e4d('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x9e4d('0x4'));var util=require(_0x9e4d('0x5'));var path=require('path');var sox=require(_0x9e4d('0x6'));var csv=require(_0x9e4d('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9e4d('0x8'));var _=require(_0x9e4d('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9e4d('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x9e4d('0x7'));var querystring=require(_0x9e4d('0xb'));var Papa=require('papaparse');var Redis=require(_0x9e4d('0xc'));var authService=require(_0x9e4d('0xd'));var qs=require(_0x9e4d('0xe'));var as=require(_0x9e4d('0xf'));var hardwareService=require(_0x9e4d('0x10'));var logger=require(_0x9e4d('0x11'))(_0x9e4d('0x12'));var utils=require(_0x9e4d('0x13'));var config=require(_0x9e4d('0x14'));var licenseUtil=require(_0x9e4d('0x15'));var db=require(_0x9e4d('0x16'))['db'];function respondWithStatusCode(_0x439240,_0x3bd0e7){_0x3bd0e7=_0x3bd0e7||0xcc;return function(_0x231b75){if(_0x231b75){return _0x439240[_0x9e4d('0x17')](_0x3bd0e7);}return _0x439240['status'](_0x3bd0e7)[_0x9e4d('0x18')]();};}function respondWithResult(_0x34916b,_0x16fc68){_0x16fc68=_0x16fc68||0xc8;return function(_0x31150d){if(_0x31150d){return _0x34916b[_0x9e4d('0x19')](_0x16fc68)[_0x9e4d('0x1a')](_0x31150d);}};}function respondWithFilteredResult(_0x56dcca,_0x3bf5d9){return function(_0x2012a7){if(_0x2012a7){var _0x7d1a16=typeof _0x3bf5d9[_0x9e4d('0x1b')]===_0x9e4d('0x1c')&&typeof _0x3bf5d9[_0x9e4d('0x1d')]==='undefined';var _0x23925b=_0x2012a7['count'];var _0x5c598f=_0x7d1a16?0x0:_0x3bf5d9[_0x9e4d('0x1b')];var _0x445d08=_0x7d1a16?_0x2012a7[_0x9e4d('0x1e')]:_0x3bf5d9[_0x9e4d('0x1b')]+_0x3bf5d9[_0x9e4d('0x1d')];var _0x269bf3;if(_0x445d08>=_0x23925b){_0x445d08=_0x23925b;_0x269bf3=0xc8;}else{_0x269bf3=0xce;}_0x56dcca['status'](_0x269bf3);return _0x56dcca[_0x9e4d('0x1f')]('Content-Range',_0x5c598f+'-'+_0x445d08+'/'+_0x23925b)[_0x9e4d('0x1a')](_0x2012a7);}return null;};}function patchUpdates(_0x103061){return function(_0xd258c8){try{jsonpatch[_0x9e4d('0x20')](_0xd258c8,_0x103061,!![]);}catch(_0x454901){return BPromise[_0x9e4d('0x21')](_0x454901);}return _0xd258c8[_0x9e4d('0x22')]();};}function saveUpdates(_0x1722c5,_0x38ea06){return function(_0x5ed8b4){if(_0x5ed8b4){return _0x5ed8b4[_0x9e4d('0x23')](_0x1722c5)[_0x9e4d('0x24')](function(_0x5a3fb0){return _0x5a3fb0;});}return null;};}function removeEntity(_0x1faf5b,_0x8d9f69){return function(_0x56d8c5){if(_0x56d8c5){return _0x56d8c5[_0x9e4d('0x25')]()[_0x9e4d('0x24')](function(){_0x1faf5b[_0x9e4d('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1205fb,_0x655618){return function(_0x7ae00b){if(!_0x7ae00b){_0x1205fb['sendStatus'](0x194);}return _0x7ae00b;};}function handleError(_0x337d12,_0x4c8ff7){_0x4c8ff7=_0x4c8ff7||0x1f4;return function(_0x427d34){logger['error'](_0x427d34[_0x9e4d('0x26')]);if(_0x427d34['name']){delete _0x427d34['name'];}_0x337d12[_0x9e4d('0x19')](_0x4c8ff7)[_0x9e4d('0x27')](_0x427d34);};}exports[_0x9e4d('0x28')]=function(_0x122e95,_0x4e2239){var _0x320845={'raw':!![],'where':{'id':_0x122e95['params']['id']}},_0x317e27={};_0x317e27['model']=_[_0x9e4d('0x29')](db[_0x9e4d('0x2a')][_0x9e4d('0x2b')]);_0x317e27['query']=_[_0x9e4d('0x29')](_0x122e95[_0x9e4d('0x2c')]);_0x317e27[_0x9e4d('0x2d')]=_['intersection'](_0x317e27[_0x9e4d('0x2e')],_0x317e27['query']);_0x320845['attributes']=_[_0x9e4d('0x2f')](_0x317e27[_0x9e4d('0x2e')],qs[_0x9e4d('0x30')](_0x122e95['query'][_0x9e4d('0x30')]));_0x320845[_0x9e4d('0x31')]=_0x320845[_0x9e4d('0x31')][_0x9e4d('0x32')]?_0x320845[_0x9e4d('0x31')]:_0x317e27[_0x9e4d('0x2e')];if(_0x122e95[_0x9e4d('0x2c')][_0x9e4d('0x33')]){_0x320845[_0x9e4d('0x34')]=[{'all':!![]}];}_0x320845=_[_0x9e4d('0x35')]({},_0x320845,_0x122e95[_0x9e4d('0x36')]);return db[_0x9e4d('0x2a')]['find'](_0x320845)[_0x9e4d('0x24')](handleEntityNotFound(_0x4e2239,null))['then'](respondWithResult(_0x4e2239,null))['catch'](handleError(_0x4e2239,null));};exports[_0x9e4d('0x37')]=function(_0x3e849d,_0x1917c7){return db[_0x9e4d('0x2a')][_0x9e4d('0x37')](_0x3e849d[_0x9e4d('0x38')],{})[_0x9e4d('0x24')](respondWithResult(_0x1917c7,0xc9))[_0x9e4d('0x39')](handleError(_0x1917c7,null));};exports[_0x9e4d('0x23')]=function(_0x24d11d,_0x49968f){if(_0x24d11d[_0x9e4d('0x38')]['id']){delete _0x24d11d[_0x9e4d('0x38')]['id'];}return db[_0x9e4d('0x2a')][_0x9e4d('0x3a')]({'where':{'id':_0x24d11d[_0x9e4d('0x3b')]['id']}})[_0x9e4d('0x24')](handleEntityNotFound(_0x49968f,null))['then'](saveUpdates(_0x24d11d['body'],null))[_0x9e4d('0x24')](respondWithResult(_0x49968f,null))[_0x9e4d('0x39')](handleError(_0x49968f,null));};exports['destroy']=function(_0x13dd9a,_0x195e3c){return db[_0x9e4d('0x2a')][_0x9e4d('0x3a')]({'where':{'id':_0x13dd9a[_0x9e4d('0x3b')]['id']}})[_0x9e4d('0x24')](handleEntityNotFound(_0x195e3c,null))[_0x9e4d('0x24')](removeEntity(_0x195e3c,null))[_0x9e4d('0x39')](handleError(_0x195e3c,null));};
\ No newline at end of file
index 73aa780..45b946e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbe8=['util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','ChatProactiveAction','chat_proactive_actions'];(function(_0x2d89d9,_0x48ff49){var _0x1dc23c=function(_0x4084be){while(--_0x4084be){_0x2d89d9['push'](_0x2d89d9['shift']());}};_0x1dc23c(++_0x48ff49);}(_0xbbe8,0x120));var _0x8bbe=function(_0x21f089,_0x5ebacd){_0x21f089=_0x21f089-0x0;var _0x59c5e7=_0xbbe8[_0x21f089];return _0x59c5e7;};'use strict';var _=require('lodash');var util=require(_0x8bbe('0x0'));var logger=require(_0x8bbe('0x1'))(_0x8bbe('0x2'));var moment=require(_0x8bbe('0x3'));var BPromise=require('bluebird');var rp=require(_0x8bbe('0x4'));var fs=require('fs');var path=require(_0x8bbe('0x5'));var rimraf=require(_0x8bbe('0x6'));var config=require(_0x8bbe('0x7'));var attributes=require('./chatProactiveAction.attributes');module[_0x8bbe('0x8')]=function(_0x33d2ee,_0x35890a){return _0x33d2ee[_0x8bbe('0x9')](_0x8bbe('0xa'),attributes,{'tableName':_0x8bbe('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8295=['bluebird','request-promise','path','rimraf','../../config/environment','./chatProactiveAction.attributes','define','ChatProactiveAction','lodash','util','../../config/logger','api','moment'];(function(_0x3b8267,_0x416101){var _0x5de9d=function(_0x35ef89){while(--_0x35ef89){_0x3b8267['push'](_0x3b8267['shift']());}};_0x5de9d(++_0x416101);}(_0x8295,0x1c2));var _0x5829=function(_0x5e2152,_0x172f3d){_0x5e2152=_0x5e2152-0x0;var _0x5ddcf6=_0x8295[_0x5e2152];return _0x5ddcf6;};'use strict';var _=require(_0x5829('0x0'));var util=require(_0x5829('0x1'));var logger=require(_0x5829('0x2'))(_0x5829('0x3'));var moment=require(_0x5829('0x4'));var BPromise=require(_0x5829('0x5'));var rp=require(_0x5829('0x6'));var fs=require('fs');var path=require(_0x5829('0x7'));var rimraf=require(_0x5829('0x8'));var config=require(_0x5829('0x9'));var attributes=require(_0x5829('0xa'));module['exports']=function(_0x2f35d9,_0x1043af){return _0x2f35d9[_0x5829('0xb')](_0x5829('0xc'),attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e1f6575..8dfddd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4095=['debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','error','code','ChatProactiveAction,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','request\x20sent'];(function(_0x3a891f,_0x10e7ef){var _0x4ec879=function(_0x241515){while(--_0x241515){_0x3a891f['push'](_0x3a891f['shift']());}};_0x4ec879(++_0x10e7ef);}(_0x4095,0xce));var _0x5409=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x4095[_0x24061a];return _0x82054e;};'use strict';var _=require(_0x5409('0x0'));var util=require(_0x5409('0x1'));var moment=require(_0x5409('0x2'));var BPromise=require(_0x5409('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5409('0x4'));var db=require(_0x5409('0x5'))['db'];var utils=require(_0x5409('0x6'));var logger=require(_0x5409('0x7'))('rpc');var config=require(_0x5409('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x5409('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1db913,_0x1b2436,_0x5502d3){return new BPromise(function(_0x35d69c,_0x3d1c8d){return client[_0x5409('0xa')](_0x1db913,_0x5502d3)[_0x5409('0xb')](function(_0x46f3e0){logger[_0x5409('0xc')]('ChatProactiveAction,\x20%s,\x20%s',_0x1b2436,_0x5409('0xd'));logger[_0x5409('0xe')](_0x5409('0xf'),_0x1b2436,_0x5409('0xd'),JSON['stringify'](_0x46f3e0));if(_0x46f3e0[_0x5409('0x10')]){if(_0x46f3e0[_0x5409('0x10')][_0x5409('0x11')]===0x1f4){logger['error'](_0x5409('0x12'),_0x1b2436,_0x46f3e0[_0x5409('0x10')][_0x5409('0x13')]);return _0x3d1c8d(_0x46f3e0[_0x5409('0x10')]['message']);}logger['error']('ChatProactiveAction,\x20%s,\x20%s',_0x1b2436,_0x46f3e0[_0x5409('0x10')][_0x5409('0x13')]);return _0x35d69c(_0x46f3e0[_0x5409('0x10')][_0x5409('0x13')]);}else{logger[_0x5409('0xc')](_0x5409('0x12'),_0x1b2436,_0x5409('0xd'));_0x35d69c(_0x46f3e0[_0x5409('0x14')][_0x5409('0x13')]);}})[_0x5409('0x15')](function(_0x9683a0){logger['error'](_0x5409('0x12'),_0x1b2436,_0x9683a0);_0x3d1c8d(_0x9683a0);});});}
\ No newline at end of file
+var _0xde9b=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','error','ChatProactiveAction,\x20%s,\x20%s','message','result','catch','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x58af26,_0xaea20){var _0x9fd0ea=function(_0x495451){while(--_0x495451){_0x58af26['push'](_0x58af26['shift']());}};_0x9fd0ea(++_0xaea20);}(_0xde9b,0x95));var _0xbde9=function(_0x55c083,_0xb69b1f){_0x55c083=_0x55c083-0x0;var _0x193459=_0xde9b[_0x55c083];return _0x193459;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xbde9('0x0'));var BPromise=require(_0xbde9('0x1'));var rs=require(_0xbde9('0x2'));var fs=require('fs');var Redis=require(_0xbde9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbde9('0x4'));var logger=require(_0xbde9('0x5'))(_0xbde9('0x6'));var config=require(_0xbde9('0x7'));var jayson=require(_0xbde9('0x8'));var client=jayson[_0xbde9('0x9')][_0xbde9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3c1082,_0x2faa10,_0x48061c){return new BPromise(function(_0x1dd0db,_0xd22f86){return client[_0xbde9('0xb')](_0x3c1082,_0x48061c)[_0xbde9('0xc')](function(_0x29428d){logger[_0xbde9('0xd')]('ChatProactiveAction,\x20%s,\x20%s',_0x2faa10,_0xbde9('0xe'));logger[_0xbde9('0xf')](_0xbde9('0x10'),_0x2faa10,_0xbde9('0xe'),JSON['stringify'](_0x29428d));if(_0x29428d[_0xbde9('0x11')]){if(_0x29428d[_0xbde9('0x11')]['code']===0x1f4){logger[_0xbde9('0x11')](_0xbde9('0x12'),_0x2faa10,_0x29428d[_0xbde9('0x11')]['message']);return _0xd22f86(_0x29428d[_0xbde9('0x11')][_0xbde9('0x13')]);}logger[_0xbde9('0x11')](_0xbde9('0x12'),_0x2faa10,_0x29428d['error'][_0xbde9('0x13')]);return _0x1dd0db(_0x29428d[_0xbde9('0x11')][_0xbde9('0x13')]);}else{logger[_0xbde9('0xd')](_0xbde9('0x12'),_0x2faa10,_0xbde9('0xe'));_0x1dd0db(_0x29428d[_0xbde9('0x14')]['message']);}})[_0xbde9('0x15')](function(_0x5362ce){logger['error']('ChatProactiveAction,\x20%s,\x20%s',_0x2faa10,_0x5362ce);_0xd22f86(_0x5362ce);});});}
\ No newline at end of file
index f44b29f..4a9a834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee14=['/:id','show','post','isAuthenticated','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller'];(function(_0x221b0c,_0x473fa2){var _0x3b8809=function(_0x179877){while(--_0x179877){_0x221b0c['push'](_0x221b0c['shift']());}};_0x3b8809(++_0x473fa2);}(_0xee14,0x13a));var _0x4ee1=function(_0x508cda,_0x3a04cd){_0x508cda=_0x508cda-0x0;var _0x29153f=_0xee14[_0x508cda];return _0x29153f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4ee1('0x0'));var timeout=require(_0x4ee1('0x1'));var express=require(_0x4ee1('0x2'));var router=express[_0x4ee1('0x3')]();var fs_extra=require(_0x4ee1('0x4'));var auth=require(_0x4ee1('0x5'));var interaction=require(_0x4ee1('0x6'));var config=require(_0x4ee1('0x7'));var controller=require(_0x4ee1('0x8'));router['get'](_0x4ee1('0x9'),auth['isAuthenticated'](),controller[_0x4ee1('0xa')]);router[_0x4ee1('0xb')]('/',auth[_0x4ee1('0xc')](),controller[_0x4ee1('0xd')]);router[_0x4ee1('0xe')](_0x4ee1('0x9'),auth['isAuthenticated'](),controller[_0x4ee1('0xf')]);router[_0x4ee1('0x10')]('/:id',auth[_0x4ee1('0xc')](),controller[_0x4ee1('0x11')]);module[_0x4ee1('0x12')]=router;
\ No newline at end of file
+var _0xdbf5=['post','put','update','delete','destroy','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','/:id','isAuthenticated','show'];(function(_0x2870e5,_0x12bd9e){var _0xaaf6dd=function(_0x2d8748){while(--_0x2d8748){_0x2870e5['push'](_0x2870e5['shift']());}};_0xaaf6dd(++_0x12bd9e);}(_0xdbf5,0x18c));var _0x5dbf=function(_0x5c117b,_0x53fa72){_0x5c117b=_0x5c117b-0x0;var _0x5ca5c9=_0xdbf5[_0x5c117b];return _0x5ca5c9;};'use strict';var multer=require('multer');var util=require(_0x5dbf('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5dbf('0x1'));var router=express[_0x5dbf('0x2')]();var fs_extra=require(_0x5dbf('0x3'));var auth=require(_0x5dbf('0x4'));var interaction=require(_0x5dbf('0x5'));var config=require(_0x5dbf('0x6'));var controller=require(_0x5dbf('0x7'));router[_0x5dbf('0x8')](_0x5dbf('0x9'),auth[_0x5dbf('0xa')](),controller[_0x5dbf('0xb')]);router[_0x5dbf('0xc')]('/',auth[_0x5dbf('0xa')](),controller['create']);router[_0x5dbf('0xd')]('/:id',auth[_0x5dbf('0xa')](),controller[_0x5dbf('0xe')]);router[_0x5dbf('0xf')](_0x5dbf('0x9'),auth['isAuthenticated'](),controller[_0x5dbf('0x10')]);module['exports']=router;
\ No newline at end of file
index cd5e690..06ba53e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x742e=['ENUM','rrmemory','sequelize','exports','name','INTEGER'];(function(_0xa3bcb3,_0x1c15f6){var _0xdaf64c=function(_0x15af48){while(--_0x15af48){_0xa3bcb3['push'](_0xa3bcb3['shift']());}};_0xdaf64c(++_0x1c15f6);}(_0x742e,0x11c));var _0xe742=function(_0x47c47f,_0x310616){_0x47c47f=_0x47c47f-0x0;var _0x438346=_0x742e[_0x47c47f];return _0x438346;};'use strict';var Sequelize=require(_0xe742('0x0'));module[_0xe742('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xe742('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xe742('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xe742('0x4')](_0xe742('0x5'),'beepall','roundrobin')}};
\ No newline at end of file
+var _0xe73c=['STRING','beepall','sequelize','exports'];(function(_0x4b807d,_0x58bee0){var _0x48dc55=function(_0x55dec8){while(--_0x55dec8){_0x4b807d['push'](_0x4b807d['shift']());}};_0x48dc55(++_0x58bee0);}(_0xe73c,0xee));var _0xce73=function(_0xe33be2,_0x318ea3){_0xe33be2=_0xe33be2-0x0;var _0x1846e4=_0xe73c[_0xe33be2];return _0x1846e4;};'use strict';var Sequelize=require(_0xce73('0x0'));module[_0xce73('0x1')]={'name':{'type':Sequelize[_0xce73('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xce73('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0xce73('0x3'),'roundrobin')}};
\ No newline at end of file
index 4ad3235..af040ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65ea=['addTeams','Agents','voicePause','interface','sequelize','forEach','emit','select','field','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','QueryTypes','every','TeamId','includes','all','union','compact','value','removeTeams','ids','isEmpty','removeAgents','userChatQueue:remove','addAgents','spread','userChatQueue:save','isArray','getAgents','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','jayson/promise','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','destroy','then','get','ChatQueues','stack','name','index','ChatQueue','rawAttributes','fieldName','type','key','model','map','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','include','rows','catch','params','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','getMembers','findOne','UserChatQueue','ChatQueueId','findAll','User','findAndCountAll','chatPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team'];(function(_0x18b5e8,_0x51e875){var _0x25baed=function(_0x3fcdf9){while(--_0x3fcdf9){_0x18b5e8['push'](_0x18b5e8['shift']());}};_0x25baed(++_0x51e875);}(_0x65ea,0x1ea));var _0xa65e=function(_0x4bf3d0,_0x5b3ea4){_0x4bf3d0=_0x4bf3d0-0x0;var _0x454639=_0x65ea[_0x4bf3d0];return _0x454639;};'use strict';var emlformat=require(_0xa65e('0x0'));var rimraf=require(_0xa65e('0x1'));var zipdir=require(_0xa65e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa65e('0x3'));var moment=require('moment');var BPromise=require(_0xa65e('0x4'));var Mustache=require(_0xa65e('0x5'));var util=require(_0xa65e('0x6'));var path=require(_0xa65e('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa65e('0x8'));var fs=require('fs');var fs_extra=require(_0xa65e('0x9'));var _=require('lodash');var squel=require(_0xa65e('0xa'));var crypto=require(_0xa65e('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xa65e('0xc'));var toCsv=require(_0xa65e('0xd'));var querystring=require(_0xa65e('0xe'));var Papa=require(_0xa65e('0xf'));var Redis=require('ioredis');var authService=require(_0xa65e('0x10'));var qs=require(_0xa65e('0x11'));var as=require(_0xa65e('0x12'));var hardwareService=require(_0xa65e('0x13'));var logger=require(_0xa65e('0x14'))(_0xa65e('0x15'));var utils=require(_0xa65e('0x16'));var config=require(_0xa65e('0x17'));var licenseUtil=require(_0xa65e('0x18'));var db=require(_0xa65e('0x19'))['db'];config[_0xa65e('0x1a')]=_[_0xa65e('0x1b')](config[_0xa65e('0x1a')],{'host':_0xa65e('0x1c'),'port':0x18eb});var socket=require(_0xa65e('0x1d'))(new Redis(config[_0xa65e('0x1a')]));require(_0xa65e('0x1e'))['register'](socket);var jayson=require(_0xa65e('0x1f'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x55c621,_0x4139ca,_0x3187d4,_0x4d6908){return new BPromise(function(_0x4dfabe,_0x5cf4b1){var _0x34e6d9=_0x4d6908||client;return _0x34e6d9['request'](_0x55c621,_0x3187d4)['then'](function(_0x318519){logger['info'](_0xa65e('0x20'),_0x4139ca,_0xa65e('0x21'));logger[_0xa65e('0x22')](_0xa65e('0x23'),_0x4139ca,_0xa65e('0x21'),JSON[_0xa65e('0x24')](_0x318519));if(_0x318519[_0xa65e('0x25')]){if(_0x318519[_0xa65e('0x25')]['code']===0x1f4){logger[_0xa65e('0x25')]('ChatQueue,\x20%s,\x20%s',_0x4139ca,_0x318519[_0xa65e('0x25')][_0xa65e('0x26')]);return _0x5cf4b1(_0x318519[_0xa65e('0x25')][_0xa65e('0x26')]);}logger[_0xa65e('0x25')](_0xa65e('0x20'),_0x4139ca,_0x318519[_0xa65e('0x25')][_0xa65e('0x26')]);return _0x4dfabe(_0x318519[_0xa65e('0x25')]['message']);}else{logger[_0xa65e('0x27')]('ChatQueue,\x20%s,\x20%s',_0x4139ca,_0xa65e('0x21'));_0x4dfabe(_0x318519['result']['message']);}})['catch'](function(_0x4d4833){logger[_0xa65e('0x25')]('ChatQueue,\x20%s,\x20%s',_0x4139ca,_0x4d4833);_0x5cf4b1(_0x4d4833);});});}function respondWithStatusCode(_0x3cc7b3,_0x27dc0c){_0x27dc0c=_0x27dc0c||0xcc;return function(_0x305a15){if(_0x305a15){return _0x3cc7b3[_0xa65e('0x28')](_0x27dc0c);}return _0x3cc7b3[_0xa65e('0x29')](_0x27dc0c)[_0xa65e('0x2a')]();};}function respondWithResult(_0x1b246d,_0x24ae60){_0x24ae60=_0x24ae60||0xc8;return function(_0x478069){if(_0x478069){return _0x1b246d[_0xa65e('0x29')](_0x24ae60)[_0xa65e('0x2b')](_0x478069);}};}function respondWithFilteredResult(_0x16b2e2,_0x69ee4){return function(_0x3a7a6d){if(_0x3a7a6d){var _0x237abd=typeof _0x69ee4[_0xa65e('0x2c')]===_0xa65e('0x2d')&&typeof _0x69ee4[_0xa65e('0x2e')]===_0xa65e('0x2d');var _0x314802=_0x3a7a6d[_0xa65e('0x2f')];var _0x58b7b6=_0x237abd?0x0:_0x69ee4[_0xa65e('0x2c')];var _0x113f1=_0x237abd?_0x3a7a6d[_0xa65e('0x2f')]:_0x69ee4['offset']+_0x69ee4[_0xa65e('0x2e')];var _0x55318e;if(_0x113f1>=_0x314802){_0x113f1=_0x314802;_0x55318e=0xc8;}else{_0x55318e=0xce;}_0x16b2e2[_0xa65e('0x29')](_0x55318e);return _0x16b2e2[_0xa65e('0x30')](_0xa65e('0x31'),_0x58b7b6+'-'+_0x113f1+'/'+_0x314802)[_0xa65e('0x2b')](_0x3a7a6d);}return null;};}function patchUpdates(_0x3f09e6){return function(_0x16aeee){try{jsonpatch['apply'](_0x16aeee,_0x3f09e6,!![]);}catch(_0x4cb2f4){return BPromise[_0xa65e('0x32')](_0x4cb2f4);}return _0x16aeee[_0xa65e('0x33')]();};}function saveUpdates(_0x160a8b,_0x58ca3b){return function(_0x56b958){if(_0x56b958){return _0x56b958['update'](_0x160a8b)['then'](function(_0x3bcc38){return _0x3bcc38;});}return null;};}function removeEntity(_0x13bbac,_0x466b93){return function(_0x1bbc4a){if(_0x1bbc4a){return _0x1bbc4a[_0xa65e('0x34')]()[_0xa65e('0x35')](function(){var _0x135ab5=_0x1bbc4a[_0xa65e('0x36')]({'plain':!![]});var _0x218708=_0xa65e('0x37');return db['UserProfileResource'][_0xa65e('0x34')]({'where':{'type':_0x218708,'resourceId':_0x135ab5['id']}})[_0xa65e('0x35')](function(){return _0x1bbc4a;});})[_0xa65e('0x35')](function(){_0x13bbac[_0xa65e('0x29')](0xcc)[_0xa65e('0x2a')]();});}};}function handleEntityNotFound(_0x782e14,_0xd17d71){return function(_0x44de15){if(!_0x44de15){_0x782e14['sendStatus'](0x194);}return _0x44de15;};}function handleError(_0x270e18,_0x3a262c){_0x3a262c=_0x3a262c||0x1f4;return function(_0x2b7991){logger[_0xa65e('0x25')](_0x2b7991[_0xa65e('0x38')]);if(_0x2b7991[_0xa65e('0x39')]){delete _0x2b7991[_0xa65e('0x39')];}_0x270e18[_0xa65e('0x29')](_0x3a262c)['send'](_0x2b7991);};}exports[_0xa65e('0x3a')]=function(_0x2fad5c,_0x34b4ad){var _0x49ed89={},_0x106b38={},_0x596e77={'count':0x0,'rows':[]};var _0x3a26a3=_['map'](db[_0xa65e('0x3b')][_0xa65e('0x3c')],function(_0x45c3e0){return{'name':_0x45c3e0[_0xa65e('0x3d')],'type':_0x45c3e0[_0xa65e('0x3e')][_0xa65e('0x3f')]};});_0x106b38[_0xa65e('0x40')]=_[_0xa65e('0x41')](_0x3a26a3,_0xa65e('0x39'));_0x106b38[_0xa65e('0x42')]=_[_0xa65e('0x43')](_0x2fad5c[_0xa65e('0x42')]);_0x106b38['filters']=_['intersection'](_0x106b38[_0xa65e('0x40')],_0x106b38[_0xa65e('0x42')]);_0x49ed89[_0xa65e('0x44')]=_[_0xa65e('0x45')](_0x106b38[_0xa65e('0x40')],qs[_0xa65e('0x46')](_0x2fad5c[_0xa65e('0x42')][_0xa65e('0x46')]));_0x49ed89[_0xa65e('0x44')]=_0x49ed89['attributes'][_0xa65e('0x47')]?_0x49ed89[_0xa65e('0x44')]:_0x106b38[_0xa65e('0x40')];if(!_0x2fad5c[_0xa65e('0x42')][_0xa65e('0x48')](_0xa65e('0x49'))){_0x49ed89['limit']=qs[_0xa65e('0x2e')](_0x2fad5c[_0xa65e('0x42')]['limit']);_0x49ed89['offset']=qs['offset'](_0x2fad5c[_0xa65e('0x42')]['offset']);}_0x49ed89[_0xa65e('0x4a')]=qs[_0xa65e('0x4b')](_0x2fad5c[_0xa65e('0x42')][_0xa65e('0x4b')]);_0x49ed89[_0xa65e('0x4c')]=qs[_0xa65e('0x4d')](_[_0xa65e('0x4e')](_0x2fad5c[_0xa65e('0x42')],_0x106b38['filters']),_0x3a26a3);if(_0x2fad5c[_0xa65e('0x42')][_0xa65e('0x4f')]){_0x49ed89['where']=_['merge'](_0x49ed89['where'],{'$or':_[_0xa65e('0x41')](_0x3a26a3,function(_0x54b716){if(_0x54b716[_0xa65e('0x3e')]!==_0xa65e('0x50')){var _0x57a1c0={};_0x57a1c0[_0x54b716[_0xa65e('0x39')]]={'$like':'%'+_0x2fad5c['query'][_0xa65e('0x4f')]+'%'};return _0x57a1c0;}})});}_0x49ed89=_[_0xa65e('0x51')]({},_0x49ed89,_0x2fad5c[_0xa65e('0x52')]);var _0x2ba3eb={'where':_0x49ed89[_0xa65e('0x4c')]};return db['ChatQueue'][_0xa65e('0x2f')](_0x2ba3eb)[_0xa65e('0x35')](function(_0x2e9032){_0x596e77[_0xa65e('0x2f')]=_0x2e9032;if(_0x2fad5c[_0xa65e('0x42')]['includeAll']){_0x49ed89[_0xa65e('0x53')]=[{'all':!![]}];}return db[_0xa65e('0x3b')]['findAll'](_0x49ed89);})['then'](function(_0x2c6ceb){_0x596e77[_0xa65e('0x54')]=_0x2c6ceb;return _0x596e77;})[_0xa65e('0x35')](respondWithFilteredResult(_0x34b4ad,_0x49ed89))[_0xa65e('0x55')](handleError(_0x34b4ad,null));};exports['show']=function(_0x4c4016,_0x43d4ef){var _0x566588={'raw':!![],'where':{'id':_0x4c4016[_0xa65e('0x56')]['id']}},_0x3b204a={};_0x3b204a[_0xa65e('0x40')]=_[_0xa65e('0x43')](db[_0xa65e('0x3b')][_0xa65e('0x3c')]);_0x3b204a[_0xa65e('0x42')]=_[_0xa65e('0x43')](_0x4c4016[_0xa65e('0x42')]);_0x3b204a[_0xa65e('0x4d')]=_[_0xa65e('0x45')](_0x3b204a[_0xa65e('0x40')],_0x3b204a['query']);_0x566588[_0xa65e('0x44')]=_[_0xa65e('0x45')](_0x3b204a[_0xa65e('0x40')],qs[_0xa65e('0x46')](_0x4c4016[_0xa65e('0x42')][_0xa65e('0x46')]));_0x566588[_0xa65e('0x44')]=_0x566588[_0xa65e('0x44')][_0xa65e('0x47')]?_0x566588['attributes']:_0x3b204a[_0xa65e('0x40')];if(_0x4c4016[_0xa65e('0x42')][_0xa65e('0x57')]){_0x566588[_0xa65e('0x53')]=[{'all':!![]}];}_0x566588=_[_0xa65e('0x51')]({},_0x566588,_0x4c4016[_0xa65e('0x52')]);return db['ChatQueue'][_0xa65e('0x58')](_0x566588)[_0xa65e('0x35')](handleEntityNotFound(_0x43d4ef,null))['then'](respondWithResult(_0x43d4ef,null))[_0xa65e('0x55')](handleError(_0x43d4ef,null));};exports[_0xa65e('0x59')]=function(_0x4b3877,_0x48e77c){return db['ChatQueue'][_0xa65e('0x59')](_0x4b3877[_0xa65e('0x5a')],{})[_0xa65e('0x35')](function(_0x1b76d8){var _0x121d21=_0x4b3877[_0xa65e('0x5b')][_0xa65e('0x36')]({'plain':!![]});if(!_0x121d21)throw new Error(_0xa65e('0x5c'));if(_0x121d21[_0xa65e('0x5d')]===_0xa65e('0x5b')){var _0x2c6f27=_0x1b76d8[_0xa65e('0x36')]({'plain':!![]});var _0x440d4c=_0xa65e('0x37');return db[_0xa65e('0x5e')][_0xa65e('0x58')]({'where':{'name':_0x440d4c,'userProfileId':_0x121d21[_0xa65e('0x5f')]},'raw':!![]})[_0xa65e('0x35')](function(_0x7d5581){if(_0x7d5581&&_0x7d5581['autoAssociation']===0x0){return db['UserProfileResource'][_0xa65e('0x59')]({'name':_0x2c6f27[_0xa65e('0x39')],'resourceId':_0x2c6f27['id'],'type':_0x7d5581['name'],'sectionId':_0x7d5581['id']},{})['then'](function(){return _0x1b76d8;});}else{return _0x1b76d8;}})[_0xa65e('0x55')](function(_0x4b6f47){logger['error'](_0xa65e('0x60'),_0x4b6f47);throw _0x4b6f47;});}return _0x1b76d8;})['then'](respondWithResult(_0x48e77c,0xc9))[_0xa65e('0x55')](handleError(_0x48e77c,null));};exports[_0xa65e('0x61')]=function(_0x2f77b7,_0x447c03){if(_0x2f77b7[_0xa65e('0x5a')]['id']){delete _0x2f77b7[_0xa65e('0x5a')]['id'];}return db[_0xa65e('0x3b')][_0xa65e('0x58')]({'where':{'id':_0x2f77b7[_0xa65e('0x56')]['id']}})['then'](handleEntityNotFound(_0x447c03,null))[_0xa65e('0x35')](saveUpdates(_0x2f77b7['body'],null))[_0xa65e('0x35')](respondWithResult(_0x447c03,null))['catch'](handleError(_0x447c03,null));};exports['destroy']=function(_0x50d4e9,_0x1bb815){return db[_0xa65e('0x3b')][_0xa65e('0x58')]({'where':{'id':_0x50d4e9[_0xa65e('0x56')]['id']}})['then'](handleEntityNotFound(_0x1bb815,null))[_0xa65e('0x35')](removeEntity(_0x1bb815,null))[_0xa65e('0x55')](handleError(_0x1bb815,null));};exports[_0xa65e('0x62')]=function(_0x431fd4,_0x3d35bd){return db[_0xa65e('0x3b')]['describe']()[_0xa65e('0x35')](respondWithResult(_0x3d35bd,null))[_0xa65e('0x55')](handleError(_0x3d35bd,null));};exports[_0xa65e('0x63')]=function(_0x48bdff,_0x24184e,_0x15ab4a){var _0x332a6d={'raw':!![],'where':{}},_0x544d5a={},_0x301f9b;return db[_0xa65e('0x3b')][_0xa65e('0x64')]({'where':{'id':_0x48bdff[_0xa65e('0x56')]['id']}})[_0xa65e('0x35')](handleEntityNotFound(_0x24184e,null))[_0xa65e('0x35')](function(_0x216b6a){if(_0x216b6a){_0x301f9b=_0x216b6a['get']({'plain':!![]});_0x544d5a['model']=_[_0xa65e('0x43')](db[_0xa65e('0x65')][_0xa65e('0x3c')]);_0x544d5a[_0xa65e('0x42')]=_[_0xa65e('0x43')](_0x48bdff[_0xa65e('0x42')]);_0x544d5a[_0xa65e('0x4d')]=_[_0xa65e('0x45')](_0x544d5a[_0xa65e('0x40')],_0x544d5a[_0xa65e('0x42')]);_0x332a6d[_0xa65e('0x44')]=_[_0xa65e('0x45')](_0x544d5a['model'],qs[_0xa65e('0x46')](_0x48bdff[_0xa65e('0x42')][_0xa65e('0x46')]));_0x332a6d[_0xa65e('0x44')]=_0x332a6d['attributes'][_0xa65e('0x47')]?_0x332a6d[_0xa65e('0x44')]:_0x544d5a[_0xa65e('0x40')];if(!_0x48bdff[_0xa65e('0x42')]['hasOwnProperty']('nolimit')){_0x332a6d[_0xa65e('0x2e')]=qs[_0xa65e('0x2e')](_0x48bdff[_0xa65e('0x42')][_0xa65e('0x2e')]);_0x332a6d['offset']=qs[_0xa65e('0x2c')](_0x48bdff[_0xa65e('0x42')]['offset']);}_0x332a6d[_0xa65e('0x4a')]=qs[_0xa65e('0x4b')](_0x48bdff['query']['sort']);_0x332a6d[_0xa65e('0x4c')]=qs[_0xa65e('0x4d')](_[_0xa65e('0x4e')](_0x48bdff[_0xa65e('0x42')],_0x544d5a['filters']));_0x332a6d[_0xa65e('0x4c')][_0xa65e('0x66')]=_0x216b6a['id'];if(_0x48bdff['query'][_0xa65e('0x4f')]){_0x332a6d[_0xa65e('0x4c')]=_['merge'](_0x332a6d[_0xa65e('0x4c')],{'$or':_[_0xa65e('0x41')](_0x332a6d['attributes'],function(_0x43d63e){var _0x1af75b={};_0x1af75b[_0x43d63e]={'$like':'%'+_0x48bdff[_0xa65e('0x42')][_0xa65e('0x4f')]+'%'};return _0x1af75b;})});}_0x332a6d=_[_0xa65e('0x51')]({},_0x332a6d,_0x48bdff[_0xa65e('0x52')]);return db[_0xa65e('0x65')][_0xa65e('0x67')](_0x332a6d);}})[_0xa65e('0x35')](function(_0x2d6ac5){if(_0x2d6ac5){return db[_0xa65e('0x68')][_0xa65e('0x69')]({'where':{'id':_['map'](_0x2d6ac5,'UserId'),'role':'agent'},'attributes':['id',_0xa65e('0x39'),_0xa65e('0x6a'),_0xa65e('0x6b'),_0xa65e('0x6c')]});}})[_0xa65e('0x35')](function(_0x5cddc6){if(_0x5cddc6){return{'count':_0x5cddc6[_0xa65e('0x2f')],'rows':_[_0xa65e('0x41')](_0x5cddc6[_0xa65e('0x54')],function(_0xb9bca){return{'membername':_0xb9bca['name'],'UserId':_0xb9bca['id'],'queue_name':_0x301f9b['name'],'ChatQueueId':_0x301f9b['id'],'interface':util[_0xa65e('0x6d')](_0xa65e('0x6e'),_0xa65e('0x6f'),_0xb9bca[_0xa65e('0x39')]),'penalty':0x0,'paused':_0xb9bca['chatPause'],'createdAt':_0xb9bca[_0xa65e('0x6c')],'updatedAt':_0xb9bca[_0xa65e('0x6b')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xa65e('0x35')](respondWithFilteredResult(_0x24184e,_0x332a6d))[_0xa65e('0x55')](handleError(_0x24184e,null));};exports[_0xa65e('0x70')]=function(_0xab6274,_0x2e393a,_0x56b20d){var _0x9f49c0={};var _0x340697={};var _0x52836c;var _0x1d872b;return db[_0xa65e('0x3b')][_0xa65e('0x64')]({'where':{'id':_0xab6274[_0xa65e('0x56')]['id']}})['then'](handleEntityNotFound(_0x2e393a,null))[_0xa65e('0x35')](function(_0x24142a){if(_0x24142a){_0x52836c=_0x24142a;_0x340697[_0xa65e('0x40')]=_[_0xa65e('0x43')](db[_0xa65e('0x71')]['rawAttributes']);_0x340697[_0xa65e('0x42')]=_[_0xa65e('0x43')](_0xab6274[_0xa65e('0x42')]);_0x340697[_0xa65e('0x4d')]=_[_0xa65e('0x45')](_0x340697[_0xa65e('0x40')],_0x340697['query']);_0x9f49c0[_0xa65e('0x44')]=_[_0xa65e('0x45')](_0x340697[_0xa65e('0x40')],qs['fields'](_0xab6274[_0xa65e('0x42')][_0xa65e('0x46')]));_0x9f49c0[_0xa65e('0x44')]=_0x9f49c0[_0xa65e('0x44')][_0xa65e('0x47')]?_0x9f49c0[_0xa65e('0x44')]:_0x340697[_0xa65e('0x40')];_0x9f49c0[_0xa65e('0x4a')]=qs[_0xa65e('0x4b')](_0xab6274[_0xa65e('0x42')][_0xa65e('0x4b')]);_0x9f49c0[_0xa65e('0x4c')]=qs[_0xa65e('0x4d')](_[_0xa65e('0x4e')](_0xab6274[_0xa65e('0x42')],_0x340697['filters']));if(_0xab6274['query'][_0xa65e('0x4f')]){_0x9f49c0['where']=_['merge'](_0x9f49c0[_0xa65e('0x4c')],{'$or':_['map'](_0x9f49c0[_0xa65e('0x44')],function(_0x56cccb){var _0x10599c={};_0x10599c[_0x56cccb]={'$like':'%'+_0xab6274[_0xa65e('0x42')]['filter']+'%'};return _0x10599c;})});}_0x9f49c0=_[_0xa65e('0x51')]({},_0x9f49c0,_0xab6274['options']);return _0x52836c[_0xa65e('0x70')](_0x9f49c0);}})[_0xa65e('0x35')](function(_0xb3235a){if(_0xb3235a){_0x1d872b=_0xb3235a[_0xa65e('0x47')];if(!_0xab6274[_0xa65e('0x42')][_0xa65e('0x48')](_0xa65e('0x49'))){_0x9f49c0[_0xa65e('0x2e')]=qs['limit'](_0xab6274[_0xa65e('0x42')]['limit']);_0x9f49c0[_0xa65e('0x2c')]=qs['offset'](_0xab6274[_0xa65e('0x42')]['offset']);}return _0x52836c['getTeams'](_0x9f49c0);}})[_0xa65e('0x35')](function(_0x37d2a0){if(_0x37d2a0){return _0x37d2a0?{'count':_0x1d872b,'rows':_0x37d2a0}:null;}})[_0xa65e('0x35')](respondWithResult(_0x2e393a,null))['catch'](handleError(_0x2e393a,null));};exports[_0xa65e('0x72')]=function(_0x3a82ee,_0x225f97,_0x351581){var _0x94123c=_0x3a82ee[_0xa65e('0x5a')]['ids'];return db['Team'][_0xa65e('0x67')]({'where':{'id':_0x94123c},'attributes':['id'],'include':[{'model':db['User'],'as':_0xa65e('0x73'),'attributes':['id',_0xa65e('0x39'),'online',_0xa65e('0x74'),_0xa65e('0x75')],'raw':!![]}]})['then'](function(_0x14c99b){if(_0x14c99b){var _0x2109cb=_['flatMap'](_0x14c99b,function(_0x5215fa){var _0x4ad232=_0x5215fa[_0xa65e('0x36')]({'plain':!![]});return _0x4ad232[_0xa65e('0x73')];});return db[_0xa65e('0x3b')][_0xa65e('0x58')]({'where':{'id':_0x3a82ee[_0xa65e('0x56')]['id']}})[_0xa65e('0x35')](function(_0x13eba0){return db[_0xa65e('0x76')]['transaction'](function(_0x48c38b){return _0x13eba0['addTeams'](_0x94123c,{'transaction':_0x48c38b})['then'](function(){return BPromise['each'](_0x2109cb,function(_0x2b965a){return db[_0xa65e('0x65')]['findOrCreate']({'where':{'UserId':_0x2b965a['id'],'ChatQueueId':_0x3a82ee['params']['id']},'transaction':_0x48c38b});});})['then'](function(){_0x2109cb[_0xa65e('0x77')](function(_0x462d8f){socket[_0xa65e('0x78')]('userChatQueue:save',{'UserId':_0x462d8f['id'],'ChatQueueId':_0x13eba0['id']});});});});});}})[_0xa65e('0x35')](respondWithStatusCode(_0x225f97,null))[_0xa65e('0x55')](handleError(_0x225f97,null));};exports['removeTeams']=function(_0x45cb86,_0x4c2992,_0x221178){return db['Team'][_0xa65e('0x67')]({'where':{'id':_0x45cb86[_0xa65e('0x42')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x4c2992,null))[_0xa65e('0x35')](function(_0x41233a){var _0x594973=_[_0xa65e('0x41')](_0x41233a,'id');var _0x51095b=[];var _0x2aa3c5=[];var _0x38acf7=squel[_0xa65e('0x79')]();_0x38acf7[_0xa65e('0x7a')](_0xa65e('0x7b'))[_0xa65e('0x7c')](_0xa65e('0x7d'),'tq')[_0xa65e('0x7e')](_0xa65e('0x7f'),'ut',_0xa65e('0x80'))['where'](_0xa65e('0x81'),_0x45cb86[_0xa65e('0x56')]['id']);for(var _0x4cd55d=0x0;_0x4cd55d<_0x41233a[_0xa65e('0x47')];_0x4cd55d+=0x1){let _0x495b45=_0x41233a[_0x4cd55d];for(var _0x4684e6=0x0;_0x4684e6<_0x495b45[_0xa65e('0x73')]['length'];_0x4684e6+=0x1){let _0x5e45b6=_0x495b45[_0xa65e('0x73')][_0x4684e6];var _0x320e5d=_0x38acf7[_0xa65e('0x82')]();_0x320e5d['where'](_0xa65e('0x83'),_0x5e45b6['id']);_0x2aa3c5[_0xa65e('0x84')](db[_0xa65e('0x76')][_0xa65e('0x42')](_0x320e5d['toString'](),{'type':db[_0xa65e('0x76')][_0xa65e('0x85')]['SELECT']})[_0xa65e('0x35')](function(_0xa40d3f){if(_0xa40d3f['length']===0x1){return _0x5e45b6['id'];}else{var _0x234f46=_[_0xa65e('0x86')](_[_0xa65e('0x41')](_0xa40d3f,_0xa65e('0x87')),function(_0x2d6324){return _[_0xa65e('0x88')](_0x594973,_0x2d6324);});if(_0x234f46){return _0x5e45b6['id'];}}}));}}return BPromise[_0xa65e('0x89')](_0x2aa3c5)[_0xa65e('0x35')](function(_0x1b7b5e){_0x51095b=_(_0x51095b)[_0xa65e('0x8a')](_0x1b7b5e)[_0xa65e('0x8b')]()[_0xa65e('0x8c')]();return db[_0xa65e('0x3b')][_0xa65e('0x58')]({'where':{'id':_0x45cb86[_0xa65e('0x56')]['id']}})[_0xa65e('0x35')](function(_0x1328d9){return db[_0xa65e('0x76')]['transaction'](function(_0x574ffe){return _0x1328d9[_0xa65e('0x8d')](_0x45cb86[_0xa65e('0x42')][_0xa65e('0x8e')],{'transaction':_0x574ffe})[_0xa65e('0x35')](function(){if(!_[_0xa65e('0x8f')](_0x51095b)){return _0x1328d9[_0xa65e('0x90')](_0x51095b,{'transaction':_0x574ffe});}})['then'](function(){_0x51095b['forEach'](function(_0x56baf5){socket['emit'](_0xa65e('0x91'),{'UserId':_0x56baf5,'ChatQueueId':_0x1328d9['id']});});});});});});})[_0xa65e('0x35')](respondWithStatusCode(_0x4c2992,null))['catch'](handleError(_0x4c2992,null));};exports['addAgents']=function(_0x420598,_0x112663,_0x3dcbde){return db[_0xa65e('0x3b')][_0xa65e('0x58')]({'where':{'id':_0x420598[_0xa65e('0x56')]['id']}})[_0xa65e('0x35')](handleEntityNotFound(_0x112663,null))[_0xa65e('0x35')](function(_0x1f1a96){if(_0x1f1a96){return _0x1f1a96[_0xa65e('0x92')](_0x420598[_0xa65e('0x5a')][_0xa65e('0x8e')],_['omit'](_0x420598[_0xa65e('0x5a')],[_0xa65e('0x8e'),'id'])||{})[_0xa65e('0x93')](function(_0x58b520){for(var _0xb609d9=0x0;_0xb609d9<_0x420598['body']['ids'][_0xa65e('0x47')];_0xb609d9+=0x1){socket[_0xa65e('0x78')](_0xa65e('0x94'),{'UserId':Number(_0x420598['body'][_0xa65e('0x8e')][_0xb609d9]),'ChatQueueId':Number(_0x420598['params']['id'])});}return _0x58b520;});}})[_0xa65e('0x35')](respondWithResult(_0x112663,null))[_0xa65e('0x55')](handleError(_0x112663,null));};exports[_0xa65e('0x90')]=function(_0x2ba3f5,_0x1f8978,_0x382eb2){return db[_0xa65e('0x3b')]['find']({'where':{'id':_0x2ba3f5[_0xa65e('0x56')]['id']}})[_0xa65e('0x35')](handleEntityNotFound(_0x1f8978,null))['then'](function(_0x342087){if(_0x342087){return _0x342087['removeAgents'](_0x2ba3f5[_0xa65e('0x42')]['ids'])['then'](function(){if(_[_0xa65e('0x95')](_0x2ba3f5[_0xa65e('0x42')]['ids'])){for(var _0xdb7017=0x0;_0xdb7017<_0x2ba3f5[_0xa65e('0x42')][_0xa65e('0x8e')][_0xa65e('0x47')];_0xdb7017+=0x1){socket[_0xa65e('0x78')](_0xa65e('0x91'),{'UserId':Number(_0x2ba3f5[_0xa65e('0x42')][_0xa65e('0x8e')][_0xdb7017]),'ChatQueueId':Number(_0x2ba3f5[_0xa65e('0x56')]['id'])});}}else{socket['emit']('userChatQueue:remove',{'UserId':Number(_0x2ba3f5[_0xa65e('0x42')][_0xa65e('0x8e')]),'ChatQueueId':Number(_0x2ba3f5[_0xa65e('0x56')]['id'])});}});}})[_0xa65e('0x35')](respondWithStatusCode(_0x1f8978,null))['catch'](handleError(_0x1f8978,null));};exports['getAgents']=function(_0x330376,_0x4857fd,_0x38b76b){var _0x5394b5={};var _0x4a2cbd={};var _0x1f641f;var _0x31bee6;return db[_0xa65e('0x3b')][_0xa65e('0x64')]({'where':{'id':_0x330376['params']['id']}})[_0xa65e('0x35')](handleEntityNotFound(_0x4857fd,null))['then'](function(_0x28bfa4){if(_0x28bfa4){_0x1f641f=_0x28bfa4;_0x4a2cbd[_0xa65e('0x40')]=_['keys'](db['User'][_0xa65e('0x3c')]);_0x4a2cbd[_0xa65e('0x42')]=_[_0xa65e('0x43')](_0x330376[_0xa65e('0x42')]);_0x4a2cbd[_0xa65e('0x4d')]=_[_0xa65e('0x45')](_0x4a2cbd[_0xa65e('0x40')],_0x4a2cbd['query']);_0x5394b5['attributes']=_[_0xa65e('0x45')](_0x4a2cbd[_0xa65e('0x40')],qs[_0xa65e('0x46')](_0x330376[_0xa65e('0x42')][_0xa65e('0x46')]));_0x5394b5[_0xa65e('0x44')]=_0x5394b5['attributes'][_0xa65e('0x47')]?_0x5394b5[_0xa65e('0x44')]:_0x4a2cbd[_0xa65e('0x40')];_0x5394b5['order']=qs['sort'](_0x330376[_0xa65e('0x42')]['sort']);_0x5394b5[_0xa65e('0x4c')]=qs[_0xa65e('0x4d')](_[_0xa65e('0x4e')](_0x330376[_0xa65e('0x42')],_0x4a2cbd[_0xa65e('0x4d')]));if(_0x330376[_0xa65e('0x42')][_0xa65e('0x4f')]){_0x5394b5[_0xa65e('0x4c')]=_[_0xa65e('0x51')](_0x5394b5[_0xa65e('0x4c')],{'$or':_[_0xa65e('0x41')](_0x5394b5[_0xa65e('0x44')],function(_0x5357f5){var _0x5e7273={};_0x5e7273[_0x5357f5]={'$like':'%'+_0x330376[_0xa65e('0x42')][_0xa65e('0x4f')]+'%'};return _0x5e7273;})});}_0x5394b5=_['merge']({},_0x5394b5,_0x330376['options']);return _0x1f641f[_0xa65e('0x96')](_0x5394b5);}})[_0xa65e('0x35')](function(_0xb084aa){if(_0xb084aa){_0x31bee6=_0xb084aa[_0xa65e('0x47')];if(!_0x330376[_0xa65e('0x42')][_0xa65e('0x48')](_0xa65e('0x49'))){_0x5394b5[_0xa65e('0x2e')]=qs[_0xa65e('0x2e')](_0x330376[_0xa65e('0x42')][_0xa65e('0x2e')]);_0x5394b5[_0xa65e('0x2c')]=qs[_0xa65e('0x2c')](_0x330376['query'][_0xa65e('0x2c')]);}return _0x1f641f[_0xa65e('0x96')](_0x5394b5);}})[_0xa65e('0x35')](function(_0xedfdf4){if(_0xedfdf4){return _0xedfdf4?{'count':_0x31bee6,'rows':_0xedfdf4}:null;}})[_0xa65e('0x35')](respondWithResult(_0x4857fd,null))['catch'](handleError(_0x4857fd,null));};
\ No newline at end of file
+var _0x7559=['http','request','then','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','save','update','destroy','get','stack','name','index','map','ChatQueue','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','options','findAll','show','params','keys','rawAttributes','includeAll','include','create','body','user','ChatQueues','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','getMembers','findOne','ChatQueueId','filter','UserChatQueue','User','findAndCountAll','chatPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','addTeams','ids','Team','Agents','online','voicePause','interface','flatMap','transaction','each','forEach','emit','userChatQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','userChatQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','request-promise','moment','bluebird','path','sox','fs-extra','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','client'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7559,0x119));var _0x9755=function(_0x4897ba,_0x12d85c){_0x4897ba=_0x4897ba-0x0;var _0x255ce4=_0x7559[_0x4897ba];return _0x255ce4;};'use strict';var emlformat=require(_0x9755('0x0'));var rimraf=require(_0x9755('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x9755('0x2'));var moment=require(_0x9755('0x3'));var BPromise=require(_0x9755('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x9755('0x5'));var sox=require(_0x9755('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9755('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9755('0x8'));var jsforce=require('jsforce');var deskjs=require(_0x9755('0x9'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9755('0xa'));var Redis=require(_0x9755('0xb'));var authService=require(_0x9755('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0x9755('0xd'));var hardwareService=require(_0x9755('0xe'));var logger=require(_0x9755('0xf'))(_0x9755('0x10'));var utils=require('../../config/utils');var config=require(_0x9755('0x11'));var licenseUtil=require(_0x9755('0x12'));var db=require(_0x9755('0x13'))['db'];config[_0x9755('0x14')]=_[_0x9755('0x15')](config['redis'],{'host':_0x9755('0x16'),'port':0x18eb});var socket=require(_0x9755('0x17'))(new Redis(config['redis']));require(_0x9755('0x18'))[_0x9755('0x19')](socket);var jayson=require('jayson/promise');var client=jayson[_0x9755('0x1a')][_0x9755('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x144cdc,_0x5b7cdc,_0x16be61,_0x25f4f3){return new BPromise(function(_0x21d35c,_0x1c1f49){var _0x2d5d7=_0x25f4f3||client;return _0x2d5d7[_0x9755('0x1c')](_0x144cdc,_0x16be61)[_0x9755('0x1d')](function(_0x75e970){logger['info'](_0x9755('0x1e'),_0x5b7cdc,_0x9755('0x1f'));logger[_0x9755('0x20')](_0x9755('0x21'),_0x5b7cdc,'request\x20sent',JSON['stringify'](_0x75e970));if(_0x75e970['error']){if(_0x75e970[_0x9755('0x22')][_0x9755('0x23')]===0x1f4){logger[_0x9755('0x22')]('ChatQueue,\x20%s,\x20%s',_0x5b7cdc,_0x75e970[_0x9755('0x22')]['message']);return _0x1c1f49(_0x75e970[_0x9755('0x22')]['message']);}logger[_0x9755('0x22')]('ChatQueue,\x20%s,\x20%s',_0x5b7cdc,_0x75e970['error']['message']);return _0x21d35c(_0x75e970['error'][_0x9755('0x24')]);}else{logger[_0x9755('0x25')](_0x9755('0x1e'),_0x5b7cdc,_0x9755('0x1f'));_0x21d35c(_0x75e970[_0x9755('0x26')][_0x9755('0x24')]);}})[_0x9755('0x27')](function(_0x2cccb4){logger[_0x9755('0x22')](_0x9755('0x1e'),_0x5b7cdc,_0x2cccb4);_0x1c1f49(_0x2cccb4);});});}function respondWithStatusCode(_0x5ebf8d,_0x10b105){_0x10b105=_0x10b105||0xcc;return function(_0x168f37){if(_0x168f37){return _0x5ebf8d[_0x9755('0x28')](_0x10b105);}return _0x5ebf8d[_0x9755('0x29')](_0x10b105)[_0x9755('0x2a')]();};}function respondWithResult(_0x154e44,_0x224a5c){_0x224a5c=_0x224a5c||0xc8;return function(_0x1a0262){if(_0x1a0262){return _0x154e44[_0x9755('0x29')](_0x224a5c)[_0x9755('0x2b')](_0x1a0262);}};}function respondWithFilteredResult(_0x454012,_0x1bc8ad){return function(_0x7e8cc7){if(_0x7e8cc7){var _0x23f38d=typeof _0x1bc8ad[_0x9755('0x2c')]===_0x9755('0x2d')&&typeof _0x1bc8ad['limit']==='undefined';var _0x243835=_0x7e8cc7[_0x9755('0x2e')];var _0x2e42c6=_0x23f38d?0x0:_0x1bc8ad[_0x9755('0x2c')];var _0x141499=_0x23f38d?_0x7e8cc7[_0x9755('0x2e')]:_0x1bc8ad['offset']+_0x1bc8ad['limit'];var _0x32a7df;if(_0x141499>=_0x243835){_0x141499=_0x243835;_0x32a7df=0xc8;}else{_0x32a7df=0xce;}_0x454012[_0x9755('0x29')](_0x32a7df);return _0x454012[_0x9755('0x2f')](_0x9755('0x30'),_0x2e42c6+'-'+_0x141499+'/'+_0x243835)[_0x9755('0x2b')](_0x7e8cc7);}return null;};}function patchUpdates(_0x124f5c){return function(_0x23548f){try{jsonpatch[_0x9755('0x31')](_0x23548f,_0x124f5c,!![]);}catch(_0x40a25b){return BPromise['reject'](_0x40a25b);}return _0x23548f[_0x9755('0x32')]();};}function saveUpdates(_0xaf4be7,_0x3180ea){return function(_0x44e463){if(_0x44e463){return _0x44e463[_0x9755('0x33')](_0xaf4be7)[_0x9755('0x1d')](function(_0x355862){return _0x355862;});}return null;};}function removeEntity(_0x483054,_0x344523){return function(_0x24ba56){if(_0x24ba56){return _0x24ba56[_0x9755('0x34')]()[_0x9755('0x1d')](function(){var _0x30ea2b=_0x24ba56[_0x9755('0x35')]({'plain':!![]});var _0x3b7786='ChatQueues';return db['UserProfileResource'][_0x9755('0x34')]({'where':{'type':_0x3b7786,'resourceId':_0x30ea2b['id']}})[_0x9755('0x1d')](function(){return _0x24ba56;});})[_0x9755('0x1d')](function(){_0x483054[_0x9755('0x29')](0xcc)[_0x9755('0x2a')]();});}};}function handleEntityNotFound(_0x4f3d91,_0x38d4f0){return function(_0x1a8f11){if(!_0x1a8f11){_0x4f3d91[_0x9755('0x28')](0x194);}return _0x1a8f11;};}function handleError(_0x2c2a8b,_0x292887){_0x292887=_0x292887||0x1f4;return function(_0x263f0f){logger[_0x9755('0x22')](_0x263f0f[_0x9755('0x36')]);if(_0x263f0f[_0x9755('0x37')]){delete _0x263f0f[_0x9755('0x37')];}_0x2c2a8b['status'](_0x292887)['send'](_0x263f0f);};}exports[_0x9755('0x38')]=function(_0x4c1c68,_0x15c404){var _0x1c4b3d={},_0x5b8a72={},_0x2a2c1b={'count':0x0,'rows':[]};var _0x59b7dc=_[_0x9755('0x39')](db[_0x9755('0x3a')]['rawAttributes'],function(_0x4c162d){return{'name':_0x4c162d['fieldName'],'type':_0x4c162d[_0x9755('0x3b')][_0x9755('0x3c')]};});_0x5b8a72[_0x9755('0x3d')]=_[_0x9755('0x39')](_0x59b7dc,_0x9755('0x37'));_0x5b8a72['query']=_['keys'](_0x4c1c68[_0x9755('0x3e')]);_0x5b8a72[_0x9755('0x3f')]=_[_0x9755('0x40')](_0x5b8a72[_0x9755('0x3d')],_0x5b8a72['query']);_0x1c4b3d[_0x9755('0x41')]=_[_0x9755('0x40')](_0x5b8a72[_0x9755('0x3d')],qs[_0x9755('0x42')](_0x4c1c68[_0x9755('0x3e')][_0x9755('0x42')]));_0x1c4b3d[_0x9755('0x41')]=_0x1c4b3d[_0x9755('0x41')][_0x9755('0x43')]?_0x1c4b3d['attributes']:_0x5b8a72['model'];if(!_0x4c1c68[_0x9755('0x3e')][_0x9755('0x44')](_0x9755('0x45'))){_0x1c4b3d[_0x9755('0x46')]=qs[_0x9755('0x46')](_0x4c1c68[_0x9755('0x3e')][_0x9755('0x46')]);_0x1c4b3d[_0x9755('0x2c')]=qs[_0x9755('0x2c')](_0x4c1c68['query'][_0x9755('0x2c')]);}_0x1c4b3d[_0x9755('0x47')]=qs[_0x9755('0x48')](_0x4c1c68[_0x9755('0x3e')][_0x9755('0x48')]);_0x1c4b3d[_0x9755('0x49')]=qs[_0x9755('0x3f')](_[_0x9755('0x4a')](_0x4c1c68[_0x9755('0x3e')],_0x5b8a72[_0x9755('0x3f')]),_0x59b7dc);if(_0x4c1c68[_0x9755('0x3e')]['filter']){_0x1c4b3d[_0x9755('0x49')]=_[_0x9755('0x4b')](_0x1c4b3d[_0x9755('0x49')],{'$or':_['map'](_0x59b7dc,function(_0x21359e){if(_0x21359e[_0x9755('0x3b')]!==_0x9755('0x4c')){var _0x3f2201={};_0x3f2201[_0x21359e[_0x9755('0x37')]]={'$like':'%'+_0x4c1c68[_0x9755('0x3e')]['filter']+'%'};return _0x3f2201;}})});}_0x1c4b3d=_[_0x9755('0x4b')]({},_0x1c4b3d,_0x4c1c68[_0x9755('0x4d')]);var _0x5341b5={'where':_0x1c4b3d[_0x9755('0x49')]};return db[_0x9755('0x3a')][_0x9755('0x2e')](_0x5341b5)['then'](function(_0x3845ca){_0x2a2c1b['count']=_0x3845ca;if(_0x4c1c68[_0x9755('0x3e')]['includeAll']){_0x1c4b3d['include']=[{'all':!![]}];}return db[_0x9755('0x3a')][_0x9755('0x4e')](_0x1c4b3d);})[_0x9755('0x1d')](function(_0x1d4eb3){_0x2a2c1b['rows']=_0x1d4eb3;return _0x2a2c1b;})[_0x9755('0x1d')](respondWithFilteredResult(_0x15c404,_0x1c4b3d))[_0x9755('0x27')](handleError(_0x15c404,null));};exports[_0x9755('0x4f')]=function(_0x7122cf,_0x55f71e){var _0x398282={'raw':!![],'where':{'id':_0x7122cf[_0x9755('0x50')]['id']}},_0x5808b8={};_0x5808b8[_0x9755('0x3d')]=_[_0x9755('0x51')](db[_0x9755('0x3a')][_0x9755('0x52')]);_0x5808b8['query']=_[_0x9755('0x51')](_0x7122cf['query']);_0x5808b8[_0x9755('0x3f')]=_[_0x9755('0x40')](_0x5808b8['model'],_0x5808b8['query']);_0x398282['attributes']=_[_0x9755('0x40')](_0x5808b8['model'],qs[_0x9755('0x42')](_0x7122cf[_0x9755('0x3e')]['fields']));_0x398282[_0x9755('0x41')]=_0x398282[_0x9755('0x41')][_0x9755('0x43')]?_0x398282[_0x9755('0x41')]:_0x5808b8[_0x9755('0x3d')];if(_0x7122cf[_0x9755('0x3e')][_0x9755('0x53')]){_0x398282[_0x9755('0x54')]=[{'all':!![]}];}_0x398282=_[_0x9755('0x4b')]({},_0x398282,_0x7122cf[_0x9755('0x4d')]);return db[_0x9755('0x3a')]['find'](_0x398282)[_0x9755('0x1d')](handleEntityNotFound(_0x55f71e,null))[_0x9755('0x1d')](respondWithResult(_0x55f71e,null))[_0x9755('0x27')](handleError(_0x55f71e,null));};exports[_0x9755('0x55')]=function(_0x5b636e,_0x5c956f){return db[_0x9755('0x3a')][_0x9755('0x55')](_0x5b636e[_0x9755('0x56')],{})[_0x9755('0x1d')](function(_0x137421){var _0x43f535=_0x5b636e[_0x9755('0x57')]['get']({'plain':!![]});if(!_0x43f535)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x43f535['role']===_0x9755('0x57')){var _0x529847=_0x137421[_0x9755('0x35')]({'plain':!![]});var _0x32858d=_0x9755('0x58');return db[_0x9755('0x59')]['find']({'where':{'name':_0x32858d,'userProfileId':_0x43f535[_0x9755('0x5a')]},'raw':!![]})['then'](function(_0x548989){if(_0x548989&&_0x548989[_0x9755('0x5b')]===0x0){return db[_0x9755('0x5c')]['create']({'name':_0x529847[_0x9755('0x37')],'resourceId':_0x529847['id'],'type':_0x548989[_0x9755('0x37')],'sectionId':_0x548989['id']},{})[_0x9755('0x1d')](function(){return _0x137421;});}else{return _0x137421;}})[_0x9755('0x27')](function(_0x1d692d){logger[_0x9755('0x22')](_0x9755('0x5d'),_0x1d692d);throw _0x1d692d;});}return _0x137421;})['then'](respondWithResult(_0x5c956f,0xc9))[_0x9755('0x27')](handleError(_0x5c956f,null));};exports[_0x9755('0x33')]=function(_0x5c2c92,_0x5f4b81){if(_0x5c2c92[_0x9755('0x56')]['id']){delete _0x5c2c92['body']['id'];}return db[_0x9755('0x3a')][_0x9755('0x5e')]({'where':{'id':_0x5c2c92[_0x9755('0x50')]['id']}})[_0x9755('0x1d')](handleEntityNotFound(_0x5f4b81,null))[_0x9755('0x1d')](saveUpdates(_0x5c2c92[_0x9755('0x56')],null))['then'](respondWithResult(_0x5f4b81,null))['catch'](handleError(_0x5f4b81,null));};exports['destroy']=function(_0x113d32,_0xeb5a16){return db[_0x9755('0x3a')][_0x9755('0x5e')]({'where':{'id':_0x113d32[_0x9755('0x50')]['id']}})[_0x9755('0x1d')](handleEntityNotFound(_0xeb5a16,null))[_0x9755('0x1d')](removeEntity(_0xeb5a16,null))[_0x9755('0x27')](handleError(_0xeb5a16,null));};exports[_0x9755('0x5f')]=function(_0x1f85d7,_0x594284){return db['ChatQueue'][_0x9755('0x5f')]()['then'](respondWithResult(_0x594284,null))[_0x9755('0x27')](handleError(_0x594284,null));};exports[_0x9755('0x60')]=function(_0x23e7dc,_0x3af71c,_0x248745){var _0x10a662={'raw':!![],'where':{}},_0x50227a={},_0x1874b3;return db['ChatQueue'][_0x9755('0x61')]({'where':{'id':_0x23e7dc[_0x9755('0x50')]['id']}})[_0x9755('0x1d')](handleEntityNotFound(_0x3af71c,null))['then'](function(_0x4d0151){if(_0x4d0151){_0x1874b3=_0x4d0151[_0x9755('0x35')]({'plain':!![]});_0x50227a[_0x9755('0x3d')]=_[_0x9755('0x51')](db['UserChatQueue'][_0x9755('0x52')]);_0x50227a[_0x9755('0x3e')]=_[_0x9755('0x51')](_0x23e7dc['query']);_0x50227a['filters']=_[_0x9755('0x40')](_0x50227a[_0x9755('0x3d')],_0x50227a[_0x9755('0x3e')]);_0x10a662[_0x9755('0x41')]=_['intersection'](_0x50227a[_0x9755('0x3d')],qs[_0x9755('0x42')](_0x23e7dc['query']['fields']));_0x10a662[_0x9755('0x41')]=_0x10a662[_0x9755('0x41')][_0x9755('0x43')]?_0x10a662[_0x9755('0x41')]:_0x50227a[_0x9755('0x3d')];if(!_0x23e7dc['query'][_0x9755('0x44')](_0x9755('0x45'))){_0x10a662[_0x9755('0x46')]=qs['limit'](_0x23e7dc[_0x9755('0x3e')][_0x9755('0x46')]);_0x10a662['offset']=qs[_0x9755('0x2c')](_0x23e7dc[_0x9755('0x3e')][_0x9755('0x2c')]);}_0x10a662[_0x9755('0x47')]=qs[_0x9755('0x48')](_0x23e7dc[_0x9755('0x3e')][_0x9755('0x48')]);_0x10a662[_0x9755('0x49')]=qs[_0x9755('0x3f')](_['pick'](_0x23e7dc[_0x9755('0x3e')],_0x50227a[_0x9755('0x3f')]));_0x10a662[_0x9755('0x49')][_0x9755('0x62')]=_0x4d0151['id'];if(_0x23e7dc[_0x9755('0x3e')]['filter']){_0x10a662[_0x9755('0x49')]=_[_0x9755('0x4b')](_0x10a662[_0x9755('0x49')],{'$or':_[_0x9755('0x39')](_0x10a662[_0x9755('0x41')],function(_0x3b88b9){var _0x56fe96={};_0x56fe96[_0x3b88b9]={'$like':'%'+_0x23e7dc['query'][_0x9755('0x63')]+'%'};return _0x56fe96;})});}_0x10a662=_['merge']({},_0x10a662,_0x23e7dc[_0x9755('0x4d')]);return db[_0x9755('0x64')]['findAll'](_0x10a662);}})[_0x9755('0x1d')](function(_0x1a8da8){if(_0x1a8da8){return db[_0x9755('0x65')][_0x9755('0x66')]({'where':{'id':_[_0x9755('0x39')](_0x1a8da8,'UserId'),'role':'agent'},'attributes':['id',_0x9755('0x37'),_0x9755('0x67'),_0x9755('0x68'),_0x9755('0x69')]});}})[_0x9755('0x1d')](function(_0x408a16){if(_0x408a16){return{'count':_0x408a16[_0x9755('0x2e')],'rows':_[_0x9755('0x39')](_0x408a16['rows'],function(_0x4d3a39){return{'membername':_0x4d3a39[_0x9755('0x37')],'UserId':_0x4d3a39['id'],'queue_name':_0x1874b3[_0x9755('0x37')],'ChatQueueId':_0x1874b3['id'],'interface':util[_0x9755('0x6a')](_0x9755('0x6b'),_0x9755('0x6c'),_0x4d3a39[_0x9755('0x37')]),'penalty':0x0,'paused':_0x4d3a39['chatPause'],'createdAt':_0x4d3a39[_0x9755('0x69')],'updatedAt':_0x4d3a39['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x3af71c,_0x10a662))['catch'](handleError(_0x3af71c,null));};exports[_0x9755('0x6d')]=function(_0x38f7c9,_0x3353ef,_0x175bd6){var _0x14d722={};var _0x3ce06c={};var _0x4969dc;var _0x279084;return db['ChatQueue']['findOne']({'where':{'id':_0x38f7c9['params']['id']}})[_0x9755('0x1d')](handleEntityNotFound(_0x3353ef,null))[_0x9755('0x1d')](function(_0x470ffd){if(_0x470ffd){_0x4969dc=_0x470ffd;_0x3ce06c[_0x9755('0x3d')]=_[_0x9755('0x51')](db['Team'][_0x9755('0x52')]);_0x3ce06c['query']=_[_0x9755('0x51')](_0x38f7c9[_0x9755('0x3e')]);_0x3ce06c['filters']=_[_0x9755('0x40')](_0x3ce06c[_0x9755('0x3d')],_0x3ce06c[_0x9755('0x3e')]);_0x14d722[_0x9755('0x41')]=_['intersection'](_0x3ce06c[_0x9755('0x3d')],qs[_0x9755('0x42')](_0x38f7c9[_0x9755('0x3e')][_0x9755('0x42')]));_0x14d722[_0x9755('0x41')]=_0x14d722[_0x9755('0x41')][_0x9755('0x43')]?_0x14d722[_0x9755('0x41')]:_0x3ce06c[_0x9755('0x3d')];_0x14d722[_0x9755('0x47')]=qs[_0x9755('0x48')](_0x38f7c9['query'][_0x9755('0x48')]);_0x14d722[_0x9755('0x49')]=qs['filters'](_['pick'](_0x38f7c9[_0x9755('0x3e')],_0x3ce06c[_0x9755('0x3f')]));if(_0x38f7c9[_0x9755('0x3e')][_0x9755('0x63')]){_0x14d722[_0x9755('0x49')]=_[_0x9755('0x4b')](_0x14d722[_0x9755('0x49')],{'$or':_[_0x9755('0x39')](_0x14d722[_0x9755('0x41')],function(_0x4a3a9b){var _0x45e543={};_0x45e543[_0x4a3a9b]={'$like':'%'+_0x38f7c9['query'][_0x9755('0x63')]+'%'};return _0x45e543;})});}_0x14d722=_[_0x9755('0x4b')]({},_0x14d722,_0x38f7c9[_0x9755('0x4d')]);return _0x4969dc['getTeams'](_0x14d722);}})[_0x9755('0x1d')](function(_0x2c91cd){if(_0x2c91cd){_0x279084=_0x2c91cd[_0x9755('0x43')];if(!_0x38f7c9['query'][_0x9755('0x44')](_0x9755('0x45'))){_0x14d722[_0x9755('0x46')]=qs[_0x9755('0x46')](_0x38f7c9[_0x9755('0x3e')][_0x9755('0x46')]);_0x14d722[_0x9755('0x2c')]=qs[_0x9755('0x2c')](_0x38f7c9[_0x9755('0x3e')][_0x9755('0x2c')]);}return _0x4969dc[_0x9755('0x6d')](_0x14d722);}})[_0x9755('0x1d')](function(_0x1a7199){if(_0x1a7199){return _0x1a7199?{'count':_0x279084,'rows':_0x1a7199}:null;}})[_0x9755('0x1d')](respondWithResult(_0x3353ef,null))['catch'](handleError(_0x3353ef,null));};exports[_0x9755('0x6e')]=function(_0x37fd4b,_0x21234d,_0x5a986e){var _0x4fa05e=_0x37fd4b[_0x9755('0x56')][_0x9755('0x6f')];return db[_0x9755('0x70')][_0x9755('0x4e')]({'where':{'id':_0x4fa05e},'attributes':['id'],'include':[{'model':db[_0x9755('0x65')],'as':_0x9755('0x71'),'attributes':['id',_0x9755('0x37'),_0x9755('0x72'),_0x9755('0x73'),_0x9755('0x74')],'raw':!![]}]})[_0x9755('0x1d')](function(_0x21e22c){if(_0x21e22c){var _0x3d1d6a=_[_0x9755('0x75')](_0x21e22c,function(_0x53dd59){var _0x233cca=_0x53dd59[_0x9755('0x35')]({'plain':!![]});return _0x233cca[_0x9755('0x71')];});return db[_0x9755('0x3a')][_0x9755('0x5e')]({'where':{'id':_0x37fd4b['params']['id']}})[_0x9755('0x1d')](function(_0xa5e1f){return db['sequelize'][_0x9755('0x76')](function(_0x35de95){return _0xa5e1f[_0x9755('0x6e')](_0x4fa05e,{'transaction':_0x35de95})[_0x9755('0x1d')](function(){return BPromise[_0x9755('0x77')](_0x3d1d6a,function(_0xb3dc58){return db[_0x9755('0x64')]['findOrCreate']({'where':{'UserId':_0xb3dc58['id'],'ChatQueueId':_0x37fd4b['params']['id']},'transaction':_0x35de95});});})[_0x9755('0x1d')](function(){_0x3d1d6a[_0x9755('0x78')](function(_0xc9319a){socket[_0x9755('0x79')](_0x9755('0x7a'),{'UserId':_0xc9319a['id'],'ChatQueueId':_0xa5e1f['id']});});});});});}})['then'](respondWithStatusCode(_0x21234d,null))[_0x9755('0x27')](handleError(_0x21234d,null));};exports[_0x9755('0x7b')]=function(_0x443baf,_0x223b1b,_0x32ccee){return db[_0x9755('0x70')]['findAll']({'where':{'id':_0x443baf[_0x9755('0x3e')][_0x9755('0x6f')]},'attributes':['id'],'include':[{'model':db[_0x9755('0x65')],'as':_0x9755('0x71'),'attributes':['id'],'raw':!![]}]})[_0x9755('0x1d')](handleEntityNotFound(_0x223b1b,null))['then'](function(_0x4b05d0){var _0x3d5a2c=_[_0x9755('0x39')](_0x4b05d0,'id');var _0x2a9a4b=[];var _0x2257e7=[];var _0x3b73dc=squel[_0x9755('0x7c')]();_0x3b73dc[_0x9755('0x7d')](_0x9755('0x7e'))[_0x9755('0x7f')](_0x9755('0x80'),'tq')[_0x9755('0x81')](_0x9755('0x82'),'ut',_0x9755('0x83'))['where']('ChatQueueId\x20=\x20?',_0x443baf[_0x9755('0x50')]['id']);for(var _0x15fbfa=0x0;_0x15fbfa<_0x4b05d0[_0x9755('0x43')];_0x15fbfa+=0x1){let _0x2bcf77=_0x4b05d0[_0x15fbfa];for(var _0x379cef=0x0;_0x379cef<_0x2bcf77[_0x9755('0x71')][_0x9755('0x43')];_0x379cef+=0x1){let _0x35585f=_0x2bcf77[_0x9755('0x71')][_0x379cef];var _0x6c610a=_0x3b73dc[_0x9755('0x84')]();_0x6c610a[_0x9755('0x49')](_0x9755('0x85'),_0x35585f['id']);_0x2257e7[_0x9755('0x86')](db[_0x9755('0x87')][_0x9755('0x3e')](_0x6c610a[_0x9755('0x88')](),{'type':db[_0x9755('0x87')][_0x9755('0x89')][_0x9755('0x8a')]})['then'](function(_0x49673d){if(_0x49673d['length']===0x1){return _0x35585f['id'];}else{var _0x34a30d=_[_0x9755('0x8b')](_[_0x9755('0x39')](_0x49673d,_0x9755('0x8c')),function(_0x5b83be){return _[_0x9755('0x8d')](_0x3d5a2c,_0x5b83be);});if(_0x34a30d){return _0x35585f['id'];}}}));}}return BPromise[_0x9755('0x8e')](_0x2257e7)[_0x9755('0x1d')](function(_0x529789){_0x2a9a4b=_(_0x2a9a4b)[_0x9755('0x8f')](_0x529789)[_0x9755('0x90')]()[_0x9755('0x91')]();return db['ChatQueue']['find']({'where':{'id':_0x443baf['params']['id']}})[_0x9755('0x1d')](function(_0x143350){return db[_0x9755('0x87')]['transaction'](function(_0x1a1322){return _0x143350[_0x9755('0x7b')](_0x443baf[_0x9755('0x3e')][_0x9755('0x6f')],{'transaction':_0x1a1322})['then'](function(){if(!_[_0x9755('0x92')](_0x2a9a4b)){return _0x143350[_0x9755('0x93')](_0x2a9a4b,{'transaction':_0x1a1322});}})[_0x9755('0x1d')](function(){_0x2a9a4b[_0x9755('0x78')](function(_0x113604){socket[_0x9755('0x79')](_0x9755('0x94'),{'UserId':_0x113604,'ChatQueueId':_0x143350['id']});});});});});});})['then'](respondWithStatusCode(_0x223b1b,null))['catch'](handleError(_0x223b1b,null));};exports[_0x9755('0x95')]=function(_0x331dcb,_0x3d8151,_0xf140ae){return db['ChatQueue']['find']({'where':{'id':_0x331dcb[_0x9755('0x50')]['id']}})[_0x9755('0x1d')](handleEntityNotFound(_0x3d8151,null))[_0x9755('0x1d')](function(_0x7a61f8){if(_0x7a61f8){return _0x7a61f8[_0x9755('0x95')](_0x331dcb['body'][_0x9755('0x6f')],_[_0x9755('0x96')](_0x331dcb[_0x9755('0x56')],['ids','id'])||{})[_0x9755('0x97')](function(_0x4f2296){for(var _0x6a3640=0x0;_0x6a3640<_0x331dcb[_0x9755('0x56')][_0x9755('0x6f')]['length'];_0x6a3640+=0x1){socket[_0x9755('0x79')](_0x9755('0x7a'),{'UserId':Number(_0x331dcb[_0x9755('0x56')]['ids'][_0x6a3640]),'ChatQueueId':Number(_0x331dcb[_0x9755('0x50')]['id'])});}return _0x4f2296;});}})[_0x9755('0x1d')](respondWithResult(_0x3d8151,null))[_0x9755('0x27')](handleError(_0x3d8151,null));};exports[_0x9755('0x93')]=function(_0x1fc1a6,_0x1e88d5,_0x12f093){return db[_0x9755('0x3a')][_0x9755('0x5e')]({'where':{'id':_0x1fc1a6[_0x9755('0x50')]['id']}})[_0x9755('0x1d')](handleEntityNotFound(_0x1e88d5,null))[_0x9755('0x1d')](function(_0x35602d){if(_0x35602d){return _0x35602d[_0x9755('0x93')](_0x1fc1a6['query'][_0x9755('0x6f')])[_0x9755('0x1d')](function(){if(_[_0x9755('0x98')](_0x1fc1a6['query'][_0x9755('0x6f')])){for(var _0x5c3009=0x0;_0x5c3009<_0x1fc1a6[_0x9755('0x3e')]['ids']['length'];_0x5c3009+=0x1){socket[_0x9755('0x79')](_0x9755('0x94'),{'UserId':Number(_0x1fc1a6[_0x9755('0x3e')]['ids'][_0x5c3009]),'ChatQueueId':Number(_0x1fc1a6[_0x9755('0x50')]['id'])});}}else{socket[_0x9755('0x79')]('userChatQueue:remove',{'UserId':Number(_0x1fc1a6[_0x9755('0x3e')]['ids']),'ChatQueueId':Number(_0x1fc1a6[_0x9755('0x50')]['id'])});}});}})['then'](respondWithStatusCode(_0x1e88d5,null))[_0x9755('0x27')](handleError(_0x1e88d5,null));};exports[_0x9755('0x99')]=function(_0x38b80f,_0x4133e1,_0x3dcd5e){var _0x51653f={};var _0x1227a2={};var _0x1aa7eb;var _0x499e51;return db[_0x9755('0x3a')][_0x9755('0x61')]({'where':{'id':_0x38b80f[_0x9755('0x50')]['id']}})[_0x9755('0x1d')](handleEntityNotFound(_0x4133e1,null))[_0x9755('0x1d')](function(_0x33edab){if(_0x33edab){_0x1aa7eb=_0x33edab;_0x1227a2[_0x9755('0x3d')]=_['keys'](db[_0x9755('0x65')][_0x9755('0x52')]);_0x1227a2[_0x9755('0x3e')]=_[_0x9755('0x51')](_0x38b80f['query']);_0x1227a2['filters']=_[_0x9755('0x40')](_0x1227a2['model'],_0x1227a2['query']);_0x51653f[_0x9755('0x41')]=_[_0x9755('0x40')](_0x1227a2[_0x9755('0x3d')],qs[_0x9755('0x42')](_0x38b80f[_0x9755('0x3e')][_0x9755('0x42')]));_0x51653f['attributes']=_0x51653f['attributes'][_0x9755('0x43')]?_0x51653f[_0x9755('0x41')]:_0x1227a2['model'];_0x51653f[_0x9755('0x47')]=qs[_0x9755('0x48')](_0x38b80f[_0x9755('0x3e')][_0x9755('0x48')]);_0x51653f[_0x9755('0x49')]=qs[_0x9755('0x3f')](_[_0x9755('0x4a')](_0x38b80f[_0x9755('0x3e')],_0x1227a2[_0x9755('0x3f')]));if(_0x38b80f['query'][_0x9755('0x63')]){_0x51653f[_0x9755('0x49')]=_[_0x9755('0x4b')](_0x51653f['where'],{'$or':_[_0x9755('0x39')](_0x51653f[_0x9755('0x41')],function(_0x9ff4d9){var _0x53bf8a={};_0x53bf8a[_0x9ff4d9]={'$like':'%'+_0x38b80f[_0x9755('0x3e')][_0x9755('0x63')]+'%'};return _0x53bf8a;})});}_0x51653f=_[_0x9755('0x4b')]({},_0x51653f,_0x38b80f[_0x9755('0x4d')]);return _0x1aa7eb[_0x9755('0x99')](_0x51653f);}})[_0x9755('0x1d')](function(_0x59cbea){if(_0x59cbea){_0x499e51=_0x59cbea[_0x9755('0x43')];if(!_0x38b80f[_0x9755('0x3e')][_0x9755('0x44')](_0x9755('0x45'))){_0x51653f[_0x9755('0x46')]=qs[_0x9755('0x46')](_0x38b80f['query'][_0x9755('0x46')]);_0x51653f[_0x9755('0x2c')]=qs[_0x9755('0x2c')](_0x38b80f[_0x9755('0x3e')][_0x9755('0x2c')]);}return _0x1aa7eb[_0x9755('0x99')](_0x51653f);}})[_0x9755('0x1d')](function(_0x112c37){if(_0x112c37){return _0x112c37?{'count':_0x499e51,'rows':_0x112c37}:null;}})[_0x9755('0x1d')](respondWithResult(_0x4133e1,null))[_0x9755('0x27')](handleError(_0x4133e1,null));};
\ No newline at end of file
index d176c1e..97a4de4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2fa=['../../mysqldb','ChatQueue','setMaxListeners','update','emit','hasOwnProperty','hook','events'];(function(_0x60508c,_0x5e2e0d){var _0x4001dd=function(_0x71a4cd){while(--_0x71a4cd){_0x60508c['push'](_0x60508c['shift']());}};_0x4001dd(++_0x5e2e0d);}(_0xf2fa,0x12f));var _0xaf2f=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xf2fa[_0x321bb2];return _0x9c12ed;};'use strict';var EventEmitter=require(_0xaf2f('0x0'));var ChatQueue=require(_0xaf2f('0x1'))['db'][_0xaf2f('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xaf2f('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xaf2f('0x4'),'afterDestroy':'remove'};function emitEvent(_0x19f39c){return function(_0x5152a9,_0x5324f5,_0x43cac5){ChatQueueEvents[_0xaf2f('0x5')](_0x19f39c+':'+_0x5152a9['id'],_0x5152a9);ChatQueueEvents[_0xaf2f('0x5')](_0x19f39c,_0x5152a9);_0x43cac5(null);};}for(var e in events){if(events[_0xaf2f('0x6')](e)){var event=events[e];ChatQueue[_0xaf2f('0x7')](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
+var _0xab64=['hook','events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0xab64,0x18d));var _0x4ab6=function(_0x5ad6fc,_0x46563e){_0x5ad6fc=_0x5ad6fc-0x0;var _0x1620d1=_0xab64[_0x5ad6fc];return _0x1620d1;};'use strict';var EventEmitter=require(_0x4ab6('0x0'));var ChatQueue=require(_0x4ab6('0x1'))['db']['ChatQueue'];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x4ab6('0x2')](0x0);var events={'afterCreate':_0x4ab6('0x3'),'afterUpdate':_0x4ab6('0x4'),'afterDestroy':_0x4ab6('0x5')};function emitEvent(_0x38dbf4){return function(_0x3efcce,_0x586454,_0x3f8407){ChatQueueEvents[_0x4ab6('0x6')](_0x38dbf4+':'+_0x3efcce['id'],_0x3efcce);ChatQueueEvents[_0x4ab6('0x6')](_0x38dbf4,_0x3efcce);_0x3f8407(null);};}for(var e in events){if(events[_0x4ab6('0x7')](e)){var event=events[e];ChatQueue[_0x4ab6('0x8')](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
index 5980443..ddce799 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3f7=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatQueue.attributes','exports','define','ChatQueue','chat_queues','lodash','util','api'];(function(_0x42bc91,_0x41f40a){var _0x3f5507=function(_0x20cfaf){while(--_0x20cfaf){_0x42bc91['push'](_0x42bc91['shift']());}};_0x3f5507(++_0x41f40a);}(_0xb3f7,0xcf));var _0x7b3f=function(_0x599c4e,_0x22815d){_0x599c4e=_0x599c4e-0x0;var _0x569ec1=_0xb3f7[_0x599c4e];return _0x569ec1;};'use strict';var _=require(_0x7b3f('0x0'));var util=require(_0x7b3f('0x1'));var logger=require('../../config/logger')(_0x7b3f('0x2'));var moment=require(_0x7b3f('0x3'));var BPromise=require(_0x7b3f('0x4'));var rp=require(_0x7b3f('0x5'));var fs=require('fs');var path=require(_0x7b3f('0x6'));var rimraf=require(_0x7b3f('0x7'));var config=require(_0x7b3f('0x8'));var attributes=require(_0x7b3f('0x9'));module[_0x7b3f('0xa')]=function(_0x52441a,_0x2c442d){return _0x52441a[_0x7b3f('0xb')](_0x7b3f('0xc'),attributes,{'tableName':_0x7b3f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd978=['bluebird','request-promise','rimraf','../../config/environment','./chatQueue.attributes','exports','define','ChatQueue','chat_queues','lodash','util','../../config/logger','moment'];(function(_0x386574,_0x4f92e9){var _0x1f8da8=function(_0x35bd24){while(--_0x35bd24){_0x386574['push'](_0x386574['shift']());}};_0x1f8da8(++_0x4f92e9);}(_0xd978,0x175));var _0x8d97=function(_0x468be0,_0x50b945){_0x468be0=_0x468be0-0x0;var _0x3c71ec=_0xd978[_0x468be0];return _0x3c71ec;};'use strict';var _=require(_0x8d97('0x0'));var util=require(_0x8d97('0x1'));var logger=require(_0x8d97('0x2'))('api');var moment=require(_0x8d97('0x3'));var BPromise=require(_0x8d97('0x4'));var rp=require(_0x8d97('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8d97('0x6'));var config=require(_0x8d97('0x7'));var attributes=require(_0x8d97('0x8'));module[_0x8d97('0x9')]=function(_0x36b888,_0xc90e0a){return _0x36b888[_0x8d97('0xa')](_0x8d97('0xb'),attributes,{'tableName':_0x8d97('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c069dfc..93aa4e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4808=['then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetChatQueue','findAll','options','raw','where','attributes','include','map','model','catch','ChatQueue','find','ShowChatQueue','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','defaults','localhost','socket.io-emitter','redis','./chatQueue.socket','register','request'];(function(_0x35082c,_0xde7fa9){var _0xbec57d=function(_0x237034){while(--_0x237034){_0x35082c['push'](_0x35082c['shift']());}};_0xbec57d(++_0xde7fa9);}(_0x4808,0x160));var _0x8480=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x4808[_0x4b055c];return _0x4b62bb;};'use strict';var _=require(_0x8480('0x0'));var util=require(_0x8480('0x1'));var moment=require(_0x8480('0x2'));var BPromise=require('bluebird');var rs=require(_0x8480('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8480('0x4'))['db'];var utils=require(_0x8480('0x5'));var logger=require(_0x8480('0x6'))('rpc');var config=require(_0x8480('0x7'));var jayson=require(_0x8480('0x8'));var client=jayson['client'][_0x8480('0x9')]({'port':0x232a});config['redis']=_[_0x8480('0xa')](config['redis'],{'host':_0x8480('0xb'),'port':0x18eb});var socket=require(_0x8480('0xc'))(new Redis(config[_0x8480('0xd')]));require(_0x8480('0xe'))[_0x8480('0xf')](socket);function respondWithRpcPromise(_0x4ff8e3,_0x27b6d6,_0x32ab1b){return new BPromise(function(_0x232440,_0x2301e9){return client[_0x8480('0x10')](_0x4ff8e3,_0x32ab1b)[_0x8480('0x11')](function(_0x1bb2a5){logger[_0x8480('0x12')](_0x8480('0x13'),_0x27b6d6,_0x8480('0x14'));logger[_0x8480('0x15')](_0x8480('0x16'),_0x27b6d6,_0x8480('0x14'),JSON[_0x8480('0x17')](_0x1bb2a5));if(_0x1bb2a5[_0x8480('0x18')]){if(_0x1bb2a5[_0x8480('0x18')][_0x8480('0x19')]===0x1f4){logger[_0x8480('0x18')](_0x8480('0x13'),_0x27b6d6,_0x1bb2a5['error'][_0x8480('0x1a')]);return _0x2301e9(_0x1bb2a5[_0x8480('0x18')][_0x8480('0x1a')]);}logger['error'](_0x8480('0x13'),_0x27b6d6,_0x1bb2a5[_0x8480('0x18')][_0x8480('0x1a')]);return _0x232440(_0x1bb2a5[_0x8480('0x18')][_0x8480('0x1a')]);}else{logger[_0x8480('0x12')](_0x8480('0x13'),_0x27b6d6,'request\x20sent');_0x232440(_0x1bb2a5[_0x8480('0x1b')]['message']);}})['catch'](function(_0x4dbe98){logger[_0x8480('0x18')]('ChatQueue,\x20%s,\x20%s',_0x27b6d6,_0x4dbe98);_0x2301e9(_0x4dbe98);});});}exports[_0x8480('0x1c')]=function(_0x4ad4f9){var _0x56028=this;return new Promise(function(_0x4445d8,_0x1e2b60){return db['ChatQueue'][_0x8480('0x1d')]({'raw':_0x4ad4f9[_0x8480('0x1e')]?_0x4ad4f9[_0x8480('0x1e')][_0x8480('0x1f')]===undefined?!![]:![]:!![],'where':_0x4ad4f9['options']?_0x4ad4f9['options'][_0x8480('0x20')]||null:null,'attributes':_0x4ad4f9[_0x8480('0x1e')]?_0x4ad4f9[_0x8480('0x1e')][_0x8480('0x21')]||null:null,'limit':_0x4ad4f9['options']?_0x4ad4f9[_0x8480('0x1e')]['limit']||null:null,'include':_0x4ad4f9['options']?_0x4ad4f9[_0x8480('0x1e')][_0x8480('0x22')]?_[_0x8480('0x23')](_0x4ad4f9['options'][_0x8480('0x22')],function(_0x4ca36e){return{'model':db[_0x4ca36e[_0x8480('0x24')]],'as':_0x4ca36e['as'],'attributes':_0x4ca36e[_0x8480('0x21')],'include':_0x4ca36e['include']?_[_0x8480('0x23')](_0x4ca36e[_0x8480('0x22')],function(_0x3feecd){return{'model':db[_0x3feecd[_0x8480('0x24')]],'as':_0x3feecd['as'],'attributes':_0x3feecd[_0x8480('0x21')],'include':_0x3feecd['include']?_[_0x8480('0x23')](_0x3feecd[_0x8480('0x22')],function(_0x53663c){return{'model':db[_0x53663c[_0x8480('0x24')]],'as':_0x53663c['as'],'attributes':_0x53663c[_0x8480('0x21')]};}):[]};}):[]};}):[]:[]})[_0x8480('0x11')](function(_0x319ff1){logger['info']('GetChatQueue',_0x4ad4f9);logger['debug']('GetChatQueue',_0x4ad4f9,JSON[_0x8480('0x17')](_0x319ff1));_0x4445d8(_0x319ff1);})[_0x8480('0x25')](function(_0x2762c8){logger[_0x8480('0x18')]('GetChatQueue',_0x2762c8[_0x8480('0x1a')],_0x4ad4f9);_0x1e2b60(_0x56028['error'](0x1f4,_0x2762c8[_0x8480('0x1a')]));});});};exports['ShowChatQueue']=function(_0x532766){var _0x310687=this;return new Promise(function(_0x379d85,_0x27ee42){return db[_0x8480('0x26')][_0x8480('0x27')]({'raw':_0x532766[_0x8480('0x1e')]?_0x532766[_0x8480('0x1e')][_0x8480('0x1f')]===undefined?!![]:![]:!![],'where':_0x532766[_0x8480('0x1e')]?_0x532766[_0x8480('0x1e')][_0x8480('0x20')]||null:null,'attributes':_0x532766[_0x8480('0x1e')]?_0x532766[_0x8480('0x1e')][_0x8480('0x21')]||null:null,'include':_0x532766[_0x8480('0x1e')]?_0x532766[_0x8480('0x1e')][_0x8480('0x22')]?_[_0x8480('0x23')](_0x532766[_0x8480('0x1e')][_0x8480('0x22')],function(_0x50d045){return{'model':db[_0x50d045[_0x8480('0x24')]],'as':_0x50d045['as'],'attributes':_0x50d045[_0x8480('0x21')],'include':_0x50d045[_0x8480('0x22')]?_[_0x8480('0x23')](_0x50d045[_0x8480('0x22')],function(_0x150bdb){return{'model':db[_0x150bdb[_0x8480('0x24')]],'as':_0x150bdb['as'],'attributes':_0x150bdb[_0x8480('0x21')],'include':_0x150bdb[_0x8480('0x22')]?_[_0x8480('0x23')](_0x150bdb[_0x8480('0x22')],function(_0x277eba){return{'model':db[_0x277eba[_0x8480('0x24')]],'as':_0x277eba['as'],'attributes':_0x277eba[_0x8480('0x21')]};}):[]};}):[]};}):[]:[]})[_0x8480('0x11')](function(_0x5cf36b){logger['info'](_0x8480('0x28'),_0x532766);logger['debug']('ShowChatQueue',_0x532766,JSON['stringify'](_0x5cf36b));_0x379d85(_0x5cf36b);})[_0x8480('0x25')](function(_0x3f3b37){logger['error']('ShowChatQueue',_0x3f3b37[_0x8480('0x1a')],_0x532766);_0x27ee42(_0x310687[_0x8480('0x18')](0x1f4,_0x3f3b37[_0x8480('0x1a')]));});});};
\ No newline at end of file
+var _0xa962=['lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter','./chatQueue.socket','request','then','info','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','code','ChatQueue,\x20%s,\x20%s','error','message','catch','GetChatQueue','ChatQueue','raw','options','where','limit','include','map','model','attributes','ShowChatQueue','find','debug'];(function(_0x1e6633,_0xdae637){var _0x1a5d51=function(_0x4ec86b){while(--_0x4ec86b){_0x1e6633['push'](_0x1e6633['shift']());}};_0x1a5d51(++_0xdae637);}(_0xa962,0xea));var _0x2a96=function(_0x28b02a,_0x4bda86){_0x28b02a=_0x28b02a-0x0;var _0x1212ca=_0xa962[_0x28b02a];return _0x1212ca;};'use strict';var _=require(_0x2a96('0x0'));var util=require(_0x2a96('0x1'));var moment=require('moment');var BPromise=require(_0x2a96('0x2'));var rs=require(_0x2a96('0x3'));var fs=require('fs');var Redis=require(_0x2a96('0x4'));var db=require(_0x2a96('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2a96('0x6'))(_0x2a96('0x7'));var config=require(_0x2a96('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2a96('0x9')][_0x2a96('0xa')]({'port':0x232a});config[_0x2a96('0xb')]=_[_0x2a96('0xc')](config[_0x2a96('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x2a96('0xd'))(new Redis(config[_0x2a96('0xb')]));require(_0x2a96('0xe'))['register'](socket);function respondWithRpcPromise(_0xc20916,_0x575e85,_0x3935b2){return new BPromise(function(_0x4e2d4b,_0x514730){return client[_0x2a96('0xf')](_0xc20916,_0x3935b2)[_0x2a96('0x10')](function(_0x5a6203){logger[_0x2a96('0x11')]('ChatQueue,\x20%s,\x20%s',_0x575e85,_0x2a96('0x12'));logger['debug'](_0x2a96('0x13'),_0x575e85,_0x2a96('0x12'),JSON[_0x2a96('0x14')](_0x5a6203));if(_0x5a6203['error']){if(_0x5a6203['error'][_0x2a96('0x15')]===0x1f4){logger['error'](_0x2a96('0x16'),_0x575e85,_0x5a6203[_0x2a96('0x17')]['message']);return _0x514730(_0x5a6203['error'][_0x2a96('0x18')]);}logger['error'](_0x2a96('0x16'),_0x575e85,_0x5a6203[_0x2a96('0x17')]['message']);return _0x4e2d4b(_0x5a6203[_0x2a96('0x17')][_0x2a96('0x18')]);}else{logger[_0x2a96('0x11')](_0x2a96('0x16'),_0x575e85,_0x2a96('0x12'));_0x4e2d4b(_0x5a6203['result']['message']);}})[_0x2a96('0x19')](function(_0x356ae4){logger[_0x2a96('0x17')]('ChatQueue,\x20%s,\x20%s',_0x575e85,_0x356ae4);_0x514730(_0x356ae4);});});}exports[_0x2a96('0x1a')]=function(_0x24c47f){var _0xf727de=this;return new Promise(function(_0x433bea,_0x230d6b){return db[_0x2a96('0x1b')]['findAll']({'raw':_0x24c47f['options']?_0x24c47f['options'][_0x2a96('0x1c')]===undefined?!![]:![]:!![],'where':_0x24c47f['options']?_0x24c47f[_0x2a96('0x1d')][_0x2a96('0x1e')]||null:null,'attributes':_0x24c47f[_0x2a96('0x1d')]?_0x24c47f[_0x2a96('0x1d')]['attributes']||null:null,'limit':_0x24c47f['options']?_0x24c47f[_0x2a96('0x1d')][_0x2a96('0x1f')]||null:null,'include':_0x24c47f[_0x2a96('0x1d')]?_0x24c47f[_0x2a96('0x1d')][_0x2a96('0x20')]?_[_0x2a96('0x21')](_0x24c47f['options'][_0x2a96('0x20')],function(_0x17c42d){return{'model':db[_0x17c42d[_0x2a96('0x22')]],'as':_0x17c42d['as'],'attributes':_0x17c42d[_0x2a96('0x23')],'include':_0x17c42d[_0x2a96('0x20')]?_['map'](_0x17c42d[_0x2a96('0x20')],function(_0x12c322){return{'model':db[_0x12c322['model']],'as':_0x12c322['as'],'attributes':_0x12c322['attributes'],'include':_0x12c322[_0x2a96('0x20')]?_['map'](_0x12c322['include'],function(_0x4b4d00){return{'model':db[_0x4b4d00[_0x2a96('0x22')]],'as':_0x4b4d00['as'],'attributes':_0x4b4d00[_0x2a96('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x94b4a8){logger[_0x2a96('0x11')]('GetChatQueue',_0x24c47f);logger['debug'](_0x2a96('0x1a'),_0x24c47f,JSON[_0x2a96('0x14')](_0x94b4a8));_0x433bea(_0x94b4a8);})[_0x2a96('0x19')](function(_0xb9c981){logger[_0x2a96('0x17')](_0x2a96('0x1a'),_0xb9c981[_0x2a96('0x18')],_0x24c47f);_0x230d6b(_0xf727de[_0x2a96('0x17')](0x1f4,_0xb9c981['message']));});});};exports[_0x2a96('0x24')]=function(_0x514a55){var _0x3c8d61=this;return new Promise(function(_0xa46487,_0x30f210){return db[_0x2a96('0x1b')][_0x2a96('0x25')]({'raw':_0x514a55[_0x2a96('0x1d')]?_0x514a55[_0x2a96('0x1d')][_0x2a96('0x1c')]===undefined?!![]:![]:!![],'where':_0x514a55[_0x2a96('0x1d')]?_0x514a55[_0x2a96('0x1d')]['where']||null:null,'attributes':_0x514a55['options']?_0x514a55[_0x2a96('0x1d')][_0x2a96('0x23')]||null:null,'include':_0x514a55[_0x2a96('0x1d')]?_0x514a55[_0x2a96('0x1d')][_0x2a96('0x20')]?_[_0x2a96('0x21')](_0x514a55[_0x2a96('0x1d')][_0x2a96('0x20')],function(_0x45e656){return{'model':db[_0x45e656[_0x2a96('0x22')]],'as':_0x45e656['as'],'attributes':_0x45e656[_0x2a96('0x23')],'include':_0x45e656[_0x2a96('0x20')]?_[_0x2a96('0x21')](_0x45e656['include'],function(_0x53820e){return{'model':db[_0x53820e['model']],'as':_0x53820e['as'],'attributes':_0x53820e['attributes'],'include':_0x53820e[_0x2a96('0x20')]?_[_0x2a96('0x21')](_0x53820e[_0x2a96('0x20')],function(_0x37bb63){return{'model':db[_0x37bb63[_0x2a96('0x22')]],'as':_0x37bb63['as'],'attributes':_0x37bb63['attributes']};}):[]};}):[]};}):[]:[]})[_0x2a96('0x10')](function(_0x4fb6b6){logger[_0x2a96('0x11')](_0x2a96('0x24'),_0x514a55);logger[_0x2a96('0x26')](_0x2a96('0x24'),_0x514a55,JSON[_0x2a96('0x14')](_0x4fb6b6));_0xa46487(_0x4fb6b6);})[_0x2a96('0x19')](function(_0x42ed22){logger[_0x2a96('0x17')](_0x2a96('0x24'),_0x42ed22[_0x2a96('0x18')],_0x514a55);_0x30f210(_0x3c8d61[_0x2a96('0x17')](0x1f4,_0x42ed22[_0x2a96('0x18')]));});});};
\ No newline at end of file
index 1ca8aca..11c9e62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda55=['chatQueue:','./chatQueue.events','save','emit','removeListener','length'];(function(_0x4c93e1,_0xe41a97){var _0x140d4d=function(_0xd40d2b){while(--_0xd40d2b){_0x4c93e1['push'](_0x4c93e1['shift']());}};_0x140d4d(++_0xe41a97);}(_0xda55,0x6d));var _0x5da5=function(_0x69d91e,_0x12fec6){_0x69d91e=_0x69d91e-0x0;var _0x381436=_0xda55[_0x69d91e];return _0x381436;};'use strict';var ChatQueueEvents=require(_0x5da5('0x0'));var events=[_0x5da5('0x1'),'remove','update'];function createListener(_0x13ecbc,_0x240a49){return function(_0x26a443){_0x240a49[_0x5da5('0x2')](_0x13ecbc,_0x26a443);};}function removeListener(_0x1c3afd,_0x5da254){return function(){ChatQueueEvents[_0x5da5('0x3')](_0x1c3afd,_0x5da254);};}exports['register']=function(_0x356a37){for(var _0x58e7b3=0x0,_0x2fd877=events[_0x5da5('0x4')];_0x58e7b3<_0x2fd877;_0x58e7b3++){var _0x71b187=events[_0x58e7b3];var _0x46290d=createListener(_0x5da5('0x5')+_0x71b187,_0x356a37);ChatQueueEvents['on'](_0x71b187,_0x46290d);}};
\ No newline at end of file
+var _0x34e8=['register','length','chatQueue:','./chatQueue.events','save','remove','update','emit','removeListener'];(function(_0x2906e6,_0x5ccd59){var _0x12517a=function(_0x36d576){while(--_0x36d576){_0x2906e6['push'](_0x2906e6['shift']());}};_0x12517a(++_0x5ccd59);}(_0x34e8,0x12c));var _0x834e=function(_0x15c445,_0x3718e8){_0x15c445=_0x15c445-0x0;var _0x490f21=_0x34e8[_0x15c445];return _0x490f21;};'use strict';var ChatQueueEvents=require(_0x834e('0x0'));var events=[_0x834e('0x1'),_0x834e('0x2'),_0x834e('0x3')];function createListener(_0x530939,_0x832422){return function(_0x21e2e0){_0x832422[_0x834e('0x4')](_0x530939,_0x21e2e0);};}function removeListener(_0x31bf20,_0x289ef2){return function(){ChatQueueEvents[_0x834e('0x5')](_0x31bf20,_0x289ef2);};}exports[_0x834e('0x6')]=function(_0x4a2018){for(var _0x858aa1=0x0,_0x52056d=events[_0x834e('0x7')];_0x858aa1<_0x52056d;_0x858aa1++){var _0x3cc2e3=events[_0x858aa1];var _0x3a3ef6=createListener(_0x834e('0x8')+_0x3cc2e3,_0x4a2018);ChatQueueEvents['on'](_0x3cc2e3,_0x3a3ef6);}};
\ No newline at end of file
index 7af1c5e..80de19e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['post','addAgents','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','index','describe','/:id','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','addTeams'];(function(_0x3fe780,_0x26079d){var _0x59c64e=function(_0x3a13a5){while(--_0x3a13a5){_0x3fe780['push'](_0x3fe780['shift']());}};_0x59c64e(++_0x26079d);}(_0x55ca,0x126));var _0xa55c=function(_0x4e93a9,_0x413f30){_0x4e93a9=_0x4e93a9-0x0;var _0x43013c=_0x55ca[_0x4e93a9];return _0x43013c;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/describe',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['show']);router['get'](_0xa55c('0xc'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xd')]);router[_0xa55c('0x7')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);router[_0xa55c('0x7')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller['getAgents']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/teams',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x13')]);router['put'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router[_0xa55c('0x15')](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x16')]);router[_0xa55c('0x15')](_0xa55c('0xe'),auth['isAuthenticated'](),controller[_0xa55c('0x17')]);router[_0xa55c('0x15')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x18')]);module[_0xa55c('0x19')]=router;
\ No newline at end of file
+var _0x55ca=['post','addAgents','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','index','describe','/:id','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','addTeams'];(function(_0x4d503d,_0x1fc5ee){var _0x1e37f7=function(_0x47537c){while(--_0x47537c){_0x4d503d['push'](_0x4d503d['shift']());}};_0x1e37f7(++_0x1fc5ee);}(_0x55ca,0x126));var _0xa55c=function(_0x393115,_0x2fe4f1){_0x393115=_0x393115-0x0;var _0x46adfa=_0x55ca[_0x393115];return _0x46adfa;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/describe',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['show']);router['get'](_0xa55c('0xc'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xd')]);router[_0xa55c('0x7')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);router[_0xa55c('0x7')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller['getAgents']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/teams',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x13')]);router['put'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router[_0xa55c('0x15')](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x16')]);router[_0xa55c('0x15')](_0xa55c('0xe'),auth['isAuthenticated'](),controller[_0xa55c('0x17')]);router[_0xa55c('0x15')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x18')]);module[_0xa55c('0x19')]=router;
\ No newline at end of file
index ba736b0..eb4f278 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5ea=['DATE','moment','exports','STRING'];(function(_0xadd06c,_0x461540){var _0x579ab4=function(_0x380b2e){while(--_0x380b2e){_0xadd06c['push'](_0xadd06c['shift']());}};_0x579ab4(++_0x461540);}(_0xe5ea,0xfd));var _0xae5e=function(_0x4f0b93,_0x16a201){_0x4f0b93=_0x4f0b93-0x0;var _0x4c651e=_0xe5ea[_0x4f0b93];return _0x4c651e;};'use strict';var moment=require(_0xae5e('0x0'));var Sequelize=require('sequelize');module[_0xae5e('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xae5e('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xae5e('0x3')]},'acceptAt':{'type':Sequelize[_0xae5e('0x3')]},'exitAt':{'type':Sequelize[_0xae5e('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xc906=['DATE','moment','sequelize','STRING'];(function(_0x1bb121,_0x5d4138){var _0x5dbb01=function(_0x3c9fa1){while(--_0x3c9fa1){_0x1bb121['push'](_0x1bb121['shift']());}};_0x5dbb01(++_0x5d4138);}(_0xc906,0x1ad));var _0x6c90=function(_0x31ab9b,_0x303f3){_0x31ab9b=_0x31ab9b-0x0;var _0x3b4b93=_0xc906[_0x31ab9b];return _0x3b4b93;};'use strict';var moment=require(_0x6c90('0x0'));var Sequelize=require(_0x6c90('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x6c90('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x6c90('0x2')]},'joinAt':{'type':Sequelize[_0x6c90('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x6c90('0x3')]},'exitAt':{'type':Sequelize[_0x6c90('0x3')]},'reason':{'type':Sequelize[_0x6c90('0x2')]}};
\ No newline at end of file
index a9d4aa3..a84e8d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63f2=['params','keys','rawAttributes','length','include','find','catch','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','error','stack','name','send','index','map','ChatQueueReport','fieldName','type','key','model','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','rows','show'];(function(_0x4e9033,_0x4aab67){var _0x4a57f4=function(_0x21df97){while(--_0x21df97){_0x4e9033['push'](_0x4e9033['shift']());}};_0x4a57f4(++_0x4aab67);}(_0x63f2,0x19b));var _0x263f=function(_0x2c5a7b,_0x1a6d2e){_0x2c5a7b=_0x2c5a7b-0x0;var _0x407f64=_0x63f2[_0x2c5a7b];return _0x407f64;};'use strict';var emlformat=require(_0x263f('0x0'));var rimraf=require(_0x263f('0x1'));var zipdir=require(_0x263f('0x2'));var jsonpatch=require(_0x263f('0x3'));var rp=require(_0x263f('0x4'));var moment=require(_0x263f('0x5'));var BPromise=require(_0x263f('0x6'));var Mustache=require(_0x263f('0x7'));var util=require(_0x263f('0x8'));var path=require('path');var sox=require(_0x263f('0x9'));var csv=require(_0x263f('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x263f('0xb'));var _=require(_0x263f('0xc'));var squel=require(_0x263f('0xd'));var crypto=require('crypto');var jsforce=require(_0x263f('0xe'));var deskjs=require(_0x263f('0xf'));var toCsv=require(_0x263f('0xa'));var querystring=require(_0x263f('0x10'));var Papa=require(_0x263f('0x11'));var Redis=require(_0x263f('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x263f('0x13'));var as=require(_0x263f('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x263f('0x15'))(_0x263f('0x16'));var utils=require(_0x263f('0x17'));var config=require(_0x263f('0x18'));var licenseUtil=require(_0x263f('0x19'));var db=require(_0x263f('0x1a'))['db'];function respondWithStatusCode(_0x2053ea,_0x84e574){_0x84e574=_0x84e574||0xcc;return function(_0x1bb05a){if(_0x1bb05a){return _0x2053ea['sendStatus'](_0x84e574);}return _0x2053ea[_0x263f('0x1b')](_0x84e574)[_0x263f('0x1c')]();};}function respondWithResult(_0x371798,_0x2fd47f){_0x2fd47f=_0x2fd47f||0xc8;return function(_0x553413){if(_0x553413){return _0x371798['status'](_0x2fd47f)['json'](_0x553413);}};}function respondWithFilteredResult(_0x3e72f8,_0x316be8){return function(_0x571c6e){if(_0x571c6e){var _0x119170=typeof _0x316be8[_0x263f('0x1d')]===_0x263f('0x1e')&&typeof _0x316be8[_0x263f('0x1f')]==='undefined';var _0x4169c4=_0x571c6e[_0x263f('0x20')];var _0x143dcd=_0x119170?0x0:_0x316be8[_0x263f('0x1d')];var _0x5a68cf=_0x119170?_0x571c6e[_0x263f('0x20')]:_0x316be8[_0x263f('0x1d')]+_0x316be8[_0x263f('0x1f')];var _0x15bf30;if(_0x5a68cf>=_0x4169c4){_0x5a68cf=_0x4169c4;_0x15bf30=0xc8;}else{_0x15bf30=0xce;}_0x3e72f8[_0x263f('0x1b')](_0x15bf30);return _0x3e72f8[_0x263f('0x21')](_0x263f('0x22'),_0x143dcd+'-'+_0x5a68cf+'/'+_0x4169c4)[_0x263f('0x23')](_0x571c6e);}return null;};}function patchUpdates(_0x3903cb){return function(_0x3ad729){try{jsonpatch['apply'](_0x3ad729,_0x3903cb,!![]);}catch(_0x1a6b15){return BPromise[_0x263f('0x24')](_0x1a6b15);}return _0x3ad729[_0x263f('0x25')]();};}function saveUpdates(_0x1e9703,_0x3f1d6e){return function(_0x12c090){if(_0x12c090){return _0x12c090[_0x263f('0x26')](_0x1e9703)[_0x263f('0x27')](function(_0x23a2ff){return _0x23a2ff;});}return null;};}function removeEntity(_0x30bb0c,_0x57ee4f){return function(_0x3b3494){if(_0x3b3494){return _0x3b3494['destroy']()[_0x263f('0x27')](function(){_0x30bb0c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x501d66,_0x399cc3){return function(_0x506f9a){if(!_0x506f9a){_0x501d66['sendStatus'](0x194);}return _0x506f9a;};}function handleError(_0x3815aa,_0x2417bc){_0x2417bc=_0x2417bc||0x1f4;return function(_0x4f912d){logger[_0x263f('0x28')](_0x4f912d[_0x263f('0x29')]);if(_0x4f912d[_0x263f('0x2a')]){delete _0x4f912d[_0x263f('0x2a')];}_0x3815aa[_0x263f('0x1b')](_0x2417bc)[_0x263f('0x2b')](_0x4f912d);};}exports[_0x263f('0x2c')]=function(_0x2097bc,_0x4ac6a6){var _0x250d43={},_0x480baa={},_0xe8e7f7={'count':0x0,'rows':[]};var _0x3fba6b=_[_0x263f('0x2d')](db[_0x263f('0x2e')]['rawAttributes'],function(_0x89c70c){return{'name':_0x89c70c[_0x263f('0x2f')],'type':_0x89c70c[_0x263f('0x30')][_0x263f('0x31')]};});_0x480baa[_0x263f('0x32')]=_[_0x263f('0x2d')](_0x3fba6b,_0x263f('0x2a'));_0x480baa[_0x263f('0x33')]=_['keys'](_0x2097bc[_0x263f('0x33')]);_0x480baa[_0x263f('0x34')]=_['intersection'](_0x480baa['model'],_0x480baa[_0x263f('0x33')]);_0x250d43[_0x263f('0x35')]=_[_0x263f('0x36')](_0x480baa[_0x263f('0x32')],qs[_0x263f('0x37')](_0x2097bc[_0x263f('0x33')][_0x263f('0x37')]));_0x250d43[_0x263f('0x35')]=_0x250d43[_0x263f('0x35')]['length']?_0x250d43[_0x263f('0x35')]:_0x480baa['model'];if(!_0x2097bc[_0x263f('0x33')][_0x263f('0x38')](_0x263f('0x39'))){_0x250d43[_0x263f('0x1f')]=qs[_0x263f('0x1f')](_0x2097bc['query'][_0x263f('0x1f')]);_0x250d43['offset']=qs[_0x263f('0x1d')](_0x2097bc[_0x263f('0x33')][_0x263f('0x1d')]);}_0x250d43[_0x263f('0x3a')]=qs[_0x263f('0x3b')](_0x2097bc[_0x263f('0x33')][_0x263f('0x3b')]);_0x250d43['where']=qs['filters'](_[_0x263f('0x3c')](_0x2097bc['query'],_0x480baa['filters']),_0x3fba6b);if(_0x2097bc[_0x263f('0x33')][_0x263f('0x3d')]){_0x250d43[_0x263f('0x3e')]=_[_0x263f('0x3f')](_0x250d43[_0x263f('0x3e')],{'$or':_[_0x263f('0x2d')](_0x3fba6b,function(_0x431a41){if(_0x431a41[_0x263f('0x30')]!==_0x263f('0x40')){var _0x2cadb7={};_0x2cadb7[_0x431a41[_0x263f('0x2a')]]={'$like':'%'+_0x2097bc[_0x263f('0x33')][_0x263f('0x3d')]+'%'};return _0x2cadb7;}})});}_0x250d43=_[_0x263f('0x3f')]({},_0x250d43,_0x2097bc[_0x263f('0x41')]);var _0xf9a72b={'where':_0x250d43['where']};return db[_0x263f('0x2e')]['count'](_0xf9a72b)[_0x263f('0x27')](function(_0x2cba31){_0xe8e7f7[_0x263f('0x20')]=_0x2cba31;if(_0x2097bc[_0x263f('0x33')][_0x263f('0x42')]){_0x250d43['include']=[{'all':!![]}];}return db[_0x263f('0x2e')]['findAll'](_0x250d43);})['then'](function(_0xb7b2c8){_0xe8e7f7[_0x263f('0x43')]=_0xb7b2c8;return _0xe8e7f7;})[_0x263f('0x27')](respondWithFilteredResult(_0x4ac6a6,_0x250d43))['catch'](handleError(_0x4ac6a6,null));};exports[_0x263f('0x44')]=function(_0xb89b59,_0x232b0b){var _0x2d0ec3={'raw':!![],'where':{'id':_0xb89b59[_0x263f('0x45')]['id']}},_0xcbedff={};_0xcbedff[_0x263f('0x32')]=_[_0x263f('0x46')](db[_0x263f('0x2e')][_0x263f('0x47')]);_0xcbedff[_0x263f('0x33')]=_[_0x263f('0x46')](_0xb89b59[_0x263f('0x33')]);_0xcbedff['filters']=_[_0x263f('0x36')](_0xcbedff['model'],_0xcbedff['query']);_0x2d0ec3[_0x263f('0x35')]=_[_0x263f('0x36')](_0xcbedff['model'],qs['fields'](_0xb89b59['query'][_0x263f('0x37')]));_0x2d0ec3['attributes']=_0x2d0ec3['attributes'][_0x263f('0x48')]?_0x2d0ec3[_0x263f('0x35')]:_0xcbedff['model'];if(_0xb89b59[_0x263f('0x33')]['includeAll']){_0x2d0ec3[_0x263f('0x49')]=[{'all':!![]}];}_0x2d0ec3=_[_0x263f('0x3f')]({},_0x2d0ec3,_0xb89b59[_0x263f('0x41')]);return db[_0x263f('0x2e')][_0x263f('0x4a')](_0x2d0ec3)[_0x263f('0x27')](handleEntityNotFound(_0x232b0b,null))[_0x263f('0x27')](respondWithResult(_0x232b0b,null))[_0x263f('0x4b')](handleError(_0x232b0b,null));};exports[_0x263f('0x4c')]=function(_0x1454d2,_0x3df211){return db[_0x263f('0x2e')][_0x263f('0x4c')](_0x1454d2['body'],{})[_0x263f('0x27')](respondWithResult(_0x3df211,0xc9))[_0x263f('0x4b')](handleError(_0x3df211,null));};exports[_0x263f('0x26')]=function(_0xec2f11,_0x4d93a9){if(_0xec2f11[_0x263f('0x4d')]['id']){delete _0xec2f11[_0x263f('0x4d')]['id'];}return db[_0x263f('0x2e')][_0x263f('0x4a')]({'where':{'id':_0xec2f11[_0x263f('0x45')]['id']}})[_0x263f('0x27')](handleEntityNotFound(_0x4d93a9,null))['then'](saveUpdates(_0xec2f11['body'],null))[_0x263f('0x27')](respondWithResult(_0x4d93a9,null))[_0x263f('0x4b')](handleError(_0x4d93a9,null));};exports[_0x263f('0x4e')]=function(_0x496892,_0x41b79c){return db['ChatQueueReport'][_0x263f('0x4a')]({'where':{'id':_0x496892[_0x263f('0x45')]['id']}})[_0x263f('0x27')](handleEntityNotFound(_0x41b79c,null))[_0x263f('0x27')](removeEntity(_0x41b79c,null))['catch'](handleError(_0x41b79c,null));};exports[_0x263f('0x4f')]=function(_0x32e070,_0x42271e){return db[_0x263f('0x2e')][_0x263f('0x4f')]()[_0x263f('0x27')](respondWithResult(_0x42271e,null))['catch'](handleError(_0x42271e,null));};
\ No newline at end of file
+var _0xb94c=['path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','end','error','stack','name','send','index','ChatQueueReport','fieldName','model','map','keys','query','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','rawAttributes','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util'];(function(_0x245055,_0x17bd81){var _0x550d0b=function(_0x4321e6){while(--_0x4321e6){_0x245055['push'](_0x245055['shift']());}};_0x550d0b(++_0x17bd81);}(_0xb94c,0x176));var _0xcb94=function(_0x4c6103,_0x29c449){_0x4c6103=_0x4c6103-0x0;var _0x32b98f=_0xb94c[_0x4c6103];return _0x32b98f;};'use strict';var emlformat=require(_0xcb94('0x0'));var rimraf=require(_0xcb94('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcb94('0x2'));var rp=require(_0xcb94('0x3'));var moment=require('moment');var BPromise=require(_0xcb94('0x4'));var Mustache=require('mustache');var util=require(_0xcb94('0x5'));var path=require(_0xcb94('0x6'));var sox=require(_0xcb94('0x7'));var csv=require(_0xcb94('0x8'));var ejs=require(_0xcb94('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcb94('0xa'));var squel=require(_0xcb94('0xb'));var crypto=require(_0xcb94('0xc'));var jsforce=require(_0xcb94('0xd'));var deskjs=require(_0xcb94('0xe'));var toCsv=require('to-csv');var querystring=require(_0xcb94('0xf'));var Papa=require(_0xcb94('0x10'));var Redis=require(_0xcb94('0x11'));var authService=require(_0xcb94('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xcb94('0x13'));var hardwareService=require(_0xcb94('0x14'));var logger=require(_0xcb94('0x15'))(_0xcb94('0x16'));var utils=require(_0xcb94('0x17'));var config=require(_0xcb94('0x18'));var licenseUtil=require(_0xcb94('0x19'));var db=require(_0xcb94('0x1a'))['db'];function respondWithStatusCode(_0x4328b2,_0x250511){_0x250511=_0x250511||0xcc;return function(_0x4cc359){if(_0x4cc359){return _0x4328b2[_0xcb94('0x1b')](_0x250511);}return _0x4328b2[_0xcb94('0x1c')](_0x250511)['end']();};}function respondWithResult(_0x5c63c9,_0x481618){_0x481618=_0x481618||0xc8;return function(_0x4bea1b){if(_0x4bea1b){return _0x5c63c9[_0xcb94('0x1c')](_0x481618)[_0xcb94('0x1d')](_0x4bea1b);}};}function respondWithFilteredResult(_0x62d472,_0x523d52){return function(_0x27cd73){if(_0x27cd73){var _0x566267=typeof _0x523d52[_0xcb94('0x1e')]===_0xcb94('0x1f')&&typeof _0x523d52[_0xcb94('0x20')]===_0xcb94('0x1f');var _0x7d23a7=_0x27cd73['count'];var _0x3c2f6f=_0x566267?0x0:_0x523d52['offset'];var _0x5db5e1=_0x566267?_0x27cd73[_0xcb94('0x21')]:_0x523d52[_0xcb94('0x1e')]+_0x523d52[_0xcb94('0x20')];var _0x173078;if(_0x5db5e1>=_0x7d23a7){_0x5db5e1=_0x7d23a7;_0x173078=0xc8;}else{_0x173078=0xce;}_0x62d472[_0xcb94('0x1c')](_0x173078);return _0x62d472[_0xcb94('0x22')](_0xcb94('0x23'),_0x3c2f6f+'-'+_0x5db5e1+'/'+_0x7d23a7)[_0xcb94('0x1d')](_0x27cd73);}return null;};}function patchUpdates(_0x1d4dc6){return function(_0x3876b4){try{jsonpatch[_0xcb94('0x24')](_0x3876b4,_0x1d4dc6,!![]);}catch(_0x5e9844){return BPromise[_0xcb94('0x25')](_0x5e9844);}return _0x3876b4['save']();};}function saveUpdates(_0x3beda0,_0x1c7a73){return function(_0x2235f4){if(_0x2235f4){return _0x2235f4['update'](_0x3beda0)[_0xcb94('0x26')](function(_0x23309f){return _0x23309f;});}return null;};}function removeEntity(_0x1054d4,_0x212ada){return function(_0x494b01){if(_0x494b01){return _0x494b01[_0xcb94('0x27')]()[_0xcb94('0x26')](function(){_0x1054d4[_0xcb94('0x1c')](0xcc)[_0xcb94('0x28')]();});}};}function handleEntityNotFound(_0x58df93,_0x45a4f8){return function(_0x2ff850){if(!_0x2ff850){_0x58df93[_0xcb94('0x1b')](0x194);}return _0x2ff850;};}function handleError(_0x496b02,_0x4ecfa2){_0x4ecfa2=_0x4ecfa2||0x1f4;return function(_0x24a06d){logger[_0xcb94('0x29')](_0x24a06d[_0xcb94('0x2a')]);if(_0x24a06d[_0xcb94('0x2b')]){delete _0x24a06d[_0xcb94('0x2b')];}_0x496b02[_0xcb94('0x1c')](_0x4ecfa2)[_0xcb94('0x2c')](_0x24a06d);};}exports[_0xcb94('0x2d')]=function(_0x2ed2e5,_0x5a3faa){var _0x442690={},_0x2e0b01={},_0x371227={'count':0x0,'rows':[]};var _0x13cec3=_['map'](db[_0xcb94('0x2e')]['rawAttributes'],function(_0x1c1c25){return{'name':_0x1c1c25[_0xcb94('0x2f')],'type':_0x1c1c25['type']['key']};});_0x2e0b01[_0xcb94('0x30')]=_[_0xcb94('0x31')](_0x13cec3,_0xcb94('0x2b'));_0x2e0b01['query']=_[_0xcb94('0x32')](_0x2ed2e5[_0xcb94('0x33')]);_0x2e0b01[_0xcb94('0x34')]=_[_0xcb94('0x35')](_0x2e0b01[_0xcb94('0x30')],_0x2e0b01['query']);_0x442690[_0xcb94('0x36')]=_[_0xcb94('0x35')](_0x2e0b01[_0xcb94('0x30')],qs[_0xcb94('0x37')](_0x2ed2e5[_0xcb94('0x33')][_0xcb94('0x37')]));_0x442690[_0xcb94('0x36')]=_0x442690['attributes'][_0xcb94('0x38')]?_0x442690[_0xcb94('0x36')]:_0x2e0b01[_0xcb94('0x30')];if(!_0x2ed2e5[_0xcb94('0x33')]['hasOwnProperty']('nolimit')){_0x442690[_0xcb94('0x20')]=qs[_0xcb94('0x20')](_0x2ed2e5[_0xcb94('0x33')][_0xcb94('0x20')]);_0x442690[_0xcb94('0x1e')]=qs[_0xcb94('0x1e')](_0x2ed2e5[_0xcb94('0x33')][_0xcb94('0x1e')]);}_0x442690[_0xcb94('0x39')]=qs[_0xcb94('0x3a')](_0x2ed2e5[_0xcb94('0x33')]['sort']);_0x442690[_0xcb94('0x3b')]=qs[_0xcb94('0x34')](_[_0xcb94('0x3c')](_0x2ed2e5[_0xcb94('0x33')],_0x2e0b01['filters']),_0x13cec3);if(_0x2ed2e5[_0xcb94('0x33')][_0xcb94('0x3d')]){_0x442690['where']=_['merge'](_0x442690[_0xcb94('0x3b')],{'$or':_[_0xcb94('0x31')](_0x13cec3,function(_0x1e979a){if(_0x1e979a[_0xcb94('0x3e')]!==_0xcb94('0x3f')){var _0x10fe0a={};_0x10fe0a[_0x1e979a['name']]={'$like':'%'+_0x2ed2e5[_0xcb94('0x33')]['filter']+'%'};return _0x10fe0a;}})});}_0x442690=_[_0xcb94('0x40')]({},_0x442690,_0x2ed2e5[_0xcb94('0x41')]);var _0x1e6148={'where':_0x442690[_0xcb94('0x3b')]};return db[_0xcb94('0x2e')][_0xcb94('0x21')](_0x1e6148)[_0xcb94('0x26')](function(_0x16375b){_0x371227['count']=_0x16375b;if(_0x2ed2e5[_0xcb94('0x33')][_0xcb94('0x42')]){_0x442690[_0xcb94('0x43')]=[{'all':!![]}];}return db[_0xcb94('0x2e')][_0xcb94('0x44')](_0x442690);})[_0xcb94('0x26')](function(_0x2d971d){_0x371227['rows']=_0x2d971d;return _0x371227;})[_0xcb94('0x26')](respondWithFilteredResult(_0x5a3faa,_0x442690))[_0xcb94('0x45')](handleError(_0x5a3faa,null));};exports[_0xcb94('0x46')]=function(_0x5dfddf,_0x5ebcbe){var _0x19075a={'raw':!![],'where':{'id':_0x5dfddf[_0xcb94('0x47')]['id']}},_0x45d510={};_0x45d510[_0xcb94('0x30')]=_[_0xcb94('0x32')](db['ChatQueueReport'][_0xcb94('0x48')]);_0x45d510['query']=_[_0xcb94('0x32')](_0x5dfddf[_0xcb94('0x33')]);_0x45d510[_0xcb94('0x34')]=_[_0xcb94('0x35')](_0x45d510['model'],_0x45d510[_0xcb94('0x33')]);_0x19075a['attributes']=_['intersection'](_0x45d510['model'],qs[_0xcb94('0x37')](_0x5dfddf['query'][_0xcb94('0x37')]));_0x19075a[_0xcb94('0x36')]=_0x19075a[_0xcb94('0x36')][_0xcb94('0x38')]?_0x19075a[_0xcb94('0x36')]:_0x45d510[_0xcb94('0x30')];if(_0x5dfddf[_0xcb94('0x33')][_0xcb94('0x42')]){_0x19075a[_0xcb94('0x43')]=[{'all':!![]}];}_0x19075a=_[_0xcb94('0x40')]({},_0x19075a,_0x5dfddf[_0xcb94('0x41')]);return db[_0xcb94('0x2e')][_0xcb94('0x49')](_0x19075a)[_0xcb94('0x26')](handleEntityNotFound(_0x5ebcbe,null))['then'](respondWithResult(_0x5ebcbe,null))['catch'](handleError(_0x5ebcbe,null));};exports[_0xcb94('0x4a')]=function(_0x2484e0,_0x34159c){return db[_0xcb94('0x2e')][_0xcb94('0x4a')](_0x2484e0[_0xcb94('0x4b')],{})[_0xcb94('0x26')](respondWithResult(_0x34159c,0xc9))['catch'](handleError(_0x34159c,null));};exports['update']=function(_0x3fd63c,_0x15fd4f){if(_0x3fd63c['body']['id']){delete _0x3fd63c[_0xcb94('0x4b')]['id'];}return db[_0xcb94('0x2e')]['find']({'where':{'id':_0x3fd63c[_0xcb94('0x47')]['id']}})['then'](handleEntityNotFound(_0x15fd4f,null))[_0xcb94('0x26')](saveUpdates(_0x3fd63c[_0xcb94('0x4b')],null))[_0xcb94('0x26')](respondWithResult(_0x15fd4f,null))['catch'](handleError(_0x15fd4f,null));};exports[_0xcb94('0x27')]=function(_0x19e855,_0x13e6b6){return db[_0xcb94('0x2e')]['find']({'where':{'id':_0x19e855[_0xcb94('0x47')]['id']}})['then'](handleEntityNotFound(_0x13e6b6,null))[_0xcb94('0x26')](removeEntity(_0x13e6b6,null))[_0xcb94('0x45')](handleError(_0x13e6b6,null));};exports['describe']=function(_0x32e045,_0x12ff92){return db['ChatQueueReport']['describe']()['then'](respondWithResult(_0x12ff92,null))[_0xcb94('0x45')](handleError(_0x12ff92,null));};
\ No newline at end of file
index d2e005e..5b4c9ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['report_chat_queue','uniqueid','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define'];(function(_0x30e677,_0x256fe7){var _0x23d05e=function(_0x53e0e8){while(--_0x53e0e8){_0x30e677['push'](_0x30e677['shift']());}};_0x23d05e(++_0x256fe7);}(_0x757a,0xde));var _0xa757=function(_0x28b2e6,_0x35a4a5){_0x28b2e6=_0x28b2e6-0x0;var _0x554415=_0x757a[_0x28b2e6];return _0x554415;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));module[_0xa757('0x7')]=function(_0x5edca8,_0xae0e7c){return _0x5edca8[_0xa757('0x8')]('ChatQueueReport',attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[{'name':_0xa757('0xa'),'fields':[_0xa757('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid'];(function(_0x509273,_0x13fc9f){var _0x38ef40=function(_0xf8d4c9){while(--_0xf8d4c9){_0x509273['push'](_0x509273['shift']());}};_0x38ef40(++_0x13fc9f);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var moment=require(_0x3071('0x2'));var BPromise=require(_0x3071('0x3'));var rp=require(_0x3071('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var attributes=require(_0x3071('0x7'));module[_0x3071('0x8')]=function(_0xabd7b6,_0x41cf76){return _0xabd7b6[_0x3071('0x9')](_0x3071('0xa'),attributes,{'tableName':_0x3071('0xb'),'paranoid':![],'indexes':[{'name':_0x3071('0xc'),'fields':[_0x3071('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index f7ee799..19145ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31ae=['randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','http','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','ChatQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ChatQueueReport','create','body','options','raw','debug','CreateChatQueueReport','stringify','UpdateChatQueueReport','attributes','limit','lodash','bluebird'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x31ae,0x1cf));var _0xe31a=function(_0x3f54e1,_0x2aac41){_0x3f54e1=_0x3f54e1-0x0;var _0x5a0d29=_0x31ae[_0x3f54e1];return _0x5a0d29;};'use strict';var _=require(_0xe31a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xe31a('0x1'));var rs=require(_0xe31a('0x2'));var fs=require('fs');var Redis=require(_0xe31a('0x3'));var db=require(_0xe31a('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xe31a('0x5'));var config=require('../../config/environment');var jayson=require(_0xe31a('0x6'));var client=jayson[_0xe31a('0x7')][_0xe31a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5b8a47,_0xa426ec,_0x1e28fd){return new BPromise(function(_0x4a9b0a,_0x5e20b2){return client[_0xe31a('0x9')](_0x5b8a47,_0x1e28fd)[_0xe31a('0xa')](function(_0x49f673){logger[_0xe31a('0xb')](_0xe31a('0xc'),_0xa426ec,_0xe31a('0xd'));logger['debug'](_0xe31a('0xe'),_0xa426ec,_0xe31a('0xd'),JSON['stringify'](_0x49f673));if(_0x49f673[_0xe31a('0xf')]){if(_0x49f673[_0xe31a('0xf')][_0xe31a('0x10')]===0x1f4){logger[_0xe31a('0xf')](_0xe31a('0xc'),_0xa426ec,_0x49f673[_0xe31a('0xf')][_0xe31a('0x11')]);return _0x5e20b2(_0x49f673[_0xe31a('0xf')][_0xe31a('0x11')]);}logger['error'](_0xe31a('0xc'),_0xa426ec,_0x49f673[_0xe31a('0xf')][_0xe31a('0x11')]);return _0x4a9b0a(_0x49f673['error'][_0xe31a('0x11')]);}else{logger[_0xe31a('0xb')](_0xe31a('0xc'),_0xa426ec,_0xe31a('0xd'));_0x4a9b0a(_0x49f673[_0xe31a('0x12')][_0xe31a('0x11')]);}})[_0xe31a('0x13')](function(_0x3f08da){logger['error'](_0xe31a('0xc'),_0xa426ec,_0x3f08da);_0x5e20b2(_0x3f08da);});});}exports['CreateChatQueueReport']=function(_0x13fc4c){var _0x131f9e=this;return new Promise(function(_0x48e4c8,_0x2bff2b){return db[_0xe31a('0x14')][_0xe31a('0x15')](_0x13fc4c[_0xe31a('0x16')],{'raw':_0x13fc4c[_0xe31a('0x17')]?_0x13fc4c['options'][_0xe31a('0x18')]===undefined?!![]:![]:!![]})[_0xe31a('0xa')](function(_0x444f26){logger[_0xe31a('0xb')]('CreateChatQueueReport',_0x13fc4c);logger[_0xe31a('0x19')](_0xe31a('0x1a'),_0x13fc4c,JSON[_0xe31a('0x1b')](_0x444f26));_0x48e4c8(_0x444f26);})[_0xe31a('0x13')](function(_0xe0d457){logger[_0xe31a('0xf')](_0xe31a('0x1a'),_0xe0d457['message'],_0x13fc4c);_0x2bff2b(_0x131f9e['error'](0x1f4,_0xe0d457[_0xe31a('0x11')]));});});};exports[_0xe31a('0x1c')]=function(_0x2f5abc){var _0x54e82a=this;return new Promise(function(_0x38d75c,_0x26e90d){return db['ChatQueueReport']['update'](_0x2f5abc[_0xe31a('0x16')],{'raw':_0x2f5abc[_0xe31a('0x17')]?_0x2f5abc['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2f5abc[_0xe31a('0x17')]?_0x2f5abc['options']['where']||null:null,'attributes':_0x2f5abc[_0xe31a('0x17')]?_0x2f5abc[_0xe31a('0x17')][_0xe31a('0x1d')]||null:null,'limit':_0x2f5abc['options']?_0x2f5abc[_0xe31a('0x17')][_0xe31a('0x1e')]||null:null})[_0xe31a('0xa')](function(_0x1f79fa){logger['info'](_0xe31a('0x1c'),_0x2f5abc);logger[_0xe31a('0x19')]('UpdateChatQueueReport',_0x2f5abc,JSON['stringify'](_0x1f79fa));_0x38d75c(_0x1f79fa);})[_0xe31a('0x13')](function(_0x373f07){logger[_0xe31a('0xf')](_0xe31a('0x1c'),_0x373f07[_0xe31a('0x11')],_0x2f5abc);_0x26e90d(_0x54e82a[_0xe31a('0xf')](0x1f4,_0x373f07['message']));});});};
\ No newline at end of file
+var _0x933c=['attributes','limit','UpdateChatQueueReport','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','code','error','message','info','result','catch','CreateChatQueueReport','ChatQueueReport','create','body','options','raw','stringify','update','where'];(function(_0x55fc35,_0x324045){var _0x11d3f8=function(_0x2444c3){while(--_0x2444c3){_0x55fc35['push'](_0x55fc35['shift']());}};_0x11d3f8(++_0x324045);}(_0x933c,0x69));var _0xc933=function(_0x50e697,_0x16a6b5){_0x50e697=_0x50e697-0x0;var _0x67adce=_0x933c[_0x50e697];return _0x67adce;};'use strict';var _=require(_0xc933('0x0'));var util=require(_0xc933('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc933('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc933('0x3'))['db'];var utils=require(_0xc933('0x4'));var logger=require(_0xc933('0x5'))(_0xc933('0x6'));var config=require(_0xc933('0x7'));var jayson=require(_0xc933('0x8'));var client=jayson[_0xc933('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x496b71,_0x26fca8,_0x292657){return new BPromise(function(_0x1060f4,_0x1e939a){return client[_0xc933('0xa')](_0x496b71,_0x292657)[_0xc933('0xb')](function(_0x30145b){logger['info'](_0xc933('0xc'),_0x26fca8,_0xc933('0xd'));logger[_0xc933('0xe')](_0xc933('0xf'),_0x26fca8,_0xc933('0xd'),JSON['stringify'](_0x30145b));if(_0x30145b['error']){if(_0x30145b['error'][_0xc933('0x10')]===0x1f4){logger['error'](_0xc933('0xc'),_0x26fca8,_0x30145b[_0xc933('0x11')][_0xc933('0x12')]);return _0x1e939a(_0x30145b[_0xc933('0x11')][_0xc933('0x12')]);}logger[_0xc933('0x11')](_0xc933('0xc'),_0x26fca8,_0x30145b['error']['message']);return _0x1060f4(_0x30145b[_0xc933('0x11')][_0xc933('0x12')]);}else{logger[_0xc933('0x13')](_0xc933('0xc'),_0x26fca8,_0xc933('0xd'));_0x1060f4(_0x30145b[_0xc933('0x14')][_0xc933('0x12')]);}})[_0xc933('0x15')](function(_0x48e47d){logger[_0xc933('0x11')](_0xc933('0xc'),_0x26fca8,_0x48e47d);_0x1e939a(_0x48e47d);});});}exports[_0xc933('0x16')]=function(_0x21290e){var _0x3d497c=this;return new Promise(function(_0x1e441c,_0x46a1e2){return db[_0xc933('0x17')][_0xc933('0x18')](_0x21290e[_0xc933('0x19')],{'raw':_0x21290e[_0xc933('0x1a')]?_0x21290e[_0xc933('0x1a')][_0xc933('0x1b')]===undefined?!![]:![]:!![]})[_0xc933('0xb')](function(_0x5f0d2f){logger[_0xc933('0x13')]('CreateChatQueueReport',_0x21290e);logger[_0xc933('0xe')](_0xc933('0x16'),_0x21290e,JSON[_0xc933('0x1c')](_0x5f0d2f));_0x1e441c(_0x5f0d2f);})[_0xc933('0x15')](function(_0x2f0ae4){logger[_0xc933('0x11')](_0xc933('0x16'),_0x2f0ae4[_0xc933('0x12')],_0x21290e);_0x46a1e2(_0x3d497c[_0xc933('0x11')](0x1f4,_0x2f0ae4[_0xc933('0x12')]));});});};exports['UpdateChatQueueReport']=function(_0x34074f){var _0x11d708=this;return new Promise(function(_0x4e5617,_0x2b3904){return db[_0xc933('0x17')][_0xc933('0x1d')](_0x34074f[_0xc933('0x19')],{'raw':_0x34074f[_0xc933('0x1a')]?_0x34074f[_0xc933('0x1a')][_0xc933('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x34074f[_0xc933('0x1a')]?_0x34074f[_0xc933('0x1a')][_0xc933('0x1e')]||null:null,'attributes':_0x34074f[_0xc933('0x1a')]?_0x34074f[_0xc933('0x1a')][_0xc933('0x1f')]||null:null,'limit':_0x34074f[_0xc933('0x1a')]?_0x34074f[_0xc933('0x1a')][_0xc933('0x20')]||null:null})[_0xc933('0xb')](function(_0x23b687){logger[_0xc933('0x13')]('UpdateChatQueueReport',_0x34074f);logger[_0xc933('0xe')](_0xc933('0x21'),_0x34074f,JSON[_0xc933('0x1c')](_0x23b687));_0x4e5617(_0x23b687);})[_0xc933('0x15')](function(_0xcb649f){logger[_0xc933('0x11')]('UpdateChatQueueReport',_0xcb649f[_0xc933('0x12')],_0x34074f);_0x2b3904(_0x11d708[_0xc933('0x11')](0x1f4,_0xcb649f[_0xc933('0x12')]));});});};
\ No newline at end of file
index 6c7f596..5e8ead4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ec2=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','path'];(function(_0x4db541,_0x551774){var _0x3da416=function(_0x5df6a9){while(--_0x5df6a9){_0x4db541['push'](_0x4db541['shift']());}};_0x3da416(++_0x551774);}(_0x8ec2,0x1b6));var _0x28ec=function(_0x5199d1,_0x3069d9){_0x5199d1=_0x5199d1-0x0;var _0x5d93ea=_0x8ec2[_0x5199d1];return _0x5d93ea;};'use strict';var multer=require(_0x28ec('0x0'));var util=require('util');var path=require(_0x28ec('0x1'));var timeout=require(_0x28ec('0x2'));var express=require(_0x28ec('0x3'));var router=express[_0x28ec('0x4')]();var fs_extra=require(_0x28ec('0x5'));var auth=require(_0x28ec('0x6'));var interaction=require(_0x28ec('0x7'));var config=require(_0x28ec('0x8'));var controller=require(_0x28ec('0x9'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x28ec('0xa'),auth[_0x28ec('0xb')](),controller[_0x28ec('0xc')]);router['get'](_0x28ec('0xd'),auth[_0x28ec('0xb')](),controller[_0x28ec('0xe')]);router[_0x28ec('0xf')]('/',auth[_0x28ec('0xb')](),controller[_0x28ec('0x10')]);router[_0x28ec('0x11')](_0x28ec('0xd'),auth[_0x28ec('0xb')](),controller[_0x28ec('0x12')]);router[_0x28ec('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x28ec('0x14')]);module[_0x28ec('0x15')]=router;
\ No newline at end of file
+var _0xc21b=['destroy','exports','multer','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','update','delete'];(function(_0x12b3f5,_0x1ca7f3){var _0x481788=function(_0x2fc0a6){while(--_0x2fc0a6){_0x12b3f5['push'](_0x12b3f5['shift']());}};_0x481788(++_0x1ca7f3);}(_0xc21b,0x145));var _0xbc21=function(_0xe719ec,_0x5a280e){_0xe719ec=_0xe719ec-0x0;var _0x4842a1=_0xc21b[_0xe719ec];return _0x4842a1;};'use strict';var multer=require(_0xbc21('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbc21('0x1')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xbc21('0x2'));var config=require(_0xbc21('0x3'));var controller=require('./chatQueueReport.controller');router[_0xbc21('0x4')]('/',auth[_0xbc21('0x5')](),controller[_0xbc21('0x6')]);router[_0xbc21('0x4')](_0xbc21('0x7'),auth[_0xbc21('0x5')](),controller[_0xbc21('0x8')]);router['get'](_0xbc21('0x9'),auth[_0xbc21('0x5')](),controller[_0xbc21('0xa')]);router[_0xbc21('0xb')]('/',auth[_0xbc21('0x5')](),controller[_0xbc21('0xc')]);router['put'](_0xbc21('0x9'),auth[_0xbc21('0x5')](),controller[_0xbc21('0xd')]);router[_0xbc21('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xbc21('0xf')]);module[_0xbc21('0x10')]=router;
\ No newline at end of file
index 2055255..b80e563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x5c72ee,_0x5a8bf8){var _0x231876=function(_0x955276){while(--_0x955276){_0x5c72ee['push'](_0x5c72ee['shift']());}};_0x231876(++_0x5a8bf8);}(_0x9bde,0xe1));var _0xe9bd=function(_0x350aa3,_0x168d3d){_0x350aa3=_0x350aa3-0x0;var _0x301fb8=_0x9bde[_0x350aa3];return _0x301fb8;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
+var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0xb60643,_0x5a28f0){var _0x2375d3=function(_0x5d98a9){while(--_0x5d98a9){_0xb60643['push'](_0xb60643['shift']());}};_0x2375d3(++_0x5a28f0);}(_0x9c44,0x178));var _0x49c4=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0x9c44[_0x21549c];return _0x426cbd;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x49c4('0x0')]={'uniqueid':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x49c4('0x2')](_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x49c4('0x6')]}};
\ No newline at end of file
index 5e0793a..c1b1c22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc4a=['update','find','describe','eml-format','rimraf','fast-json-patch','moment','mustache','util','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','count','limit','apply','reject','then','destroy','sendStatus','send','map','ChatTransferReport','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','name','merge','options','includeAll','include','findAll','rows','show','params','rawAttributes','catch','create','body'];(function(_0x56ca34,_0xb998c7){var _0x57c8e2=function(_0x41710e){while(--_0x41710e){_0x56ca34['push'](_0x56ca34['shift']());}};_0x57c8e2(++_0xb998c7);}(_0xbc4a,0x123));var _0xabc4=function(_0x4b8cba,_0x2783a4){_0x4b8cba=_0x4b8cba-0x0;var _0x58647e=_0xbc4a[_0x4b8cba];return _0x58647e;};'use strict';var emlformat=require(_0xabc4('0x0'));var rimraf=require(_0xabc4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xabc4('0x2'));var rp=require('request-promise');var moment=require(_0xabc4('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xabc4('0x4'));var util=require(_0xabc4('0x5'));var path=require(_0xabc4('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xabc4('0x7'));var fs=require('fs');var fs_extra=require(_0xabc4('0x8'));var _=require('lodash');var squel=require(_0xabc4('0x9'));var crypto=require(_0xabc4('0xa'));var jsforce=require(_0xabc4('0xb'));var deskjs=require(_0xabc4('0xc'));var toCsv=require(_0xabc4('0xd'));var querystring=require(_0xabc4('0xe'));var Papa=require(_0xabc4('0xf'));var Redis=require('ioredis');var authService=require(_0xabc4('0x10'));var qs=require(_0xabc4('0x11'));var as=require(_0xabc4('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xabc4('0x13'))(_0xabc4('0x14'));var utils=require(_0xabc4('0x15'));var config=require(_0xabc4('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xabc4('0x17'))['db'];function respondWithStatusCode(_0x4c9a5c,_0x4fc992){_0x4fc992=_0x4fc992||0xcc;return function(_0x54dffa){if(_0x54dffa){return _0x4c9a5c['sendStatus'](_0x4fc992);}return _0x4c9a5c[_0xabc4('0x18')](_0x4fc992)[_0xabc4('0x19')]();};}function respondWithResult(_0x56663c,_0x5d64c6){_0x5d64c6=_0x5d64c6||0xc8;return function(_0x37efe7){if(_0x37efe7){return _0x56663c[_0xabc4('0x18')](_0x5d64c6)[_0xabc4('0x1a')](_0x37efe7);}};}function respondWithFilteredResult(_0x1f14ee,_0x3fbd71){return function(_0x4df627){if(_0x4df627){var _0x197971=typeof _0x3fbd71[_0xabc4('0x1b')]==='undefined'&&typeof _0x3fbd71['limit']==='undefined';var _0x20e2fe=_0x4df627['count'];var _0x54e290=_0x197971?0x0:_0x3fbd71[_0xabc4('0x1b')];var _0x466405=_0x197971?_0x4df627[_0xabc4('0x1c')]:_0x3fbd71[_0xabc4('0x1b')]+_0x3fbd71[_0xabc4('0x1d')];var _0x266d60;if(_0x466405>=_0x20e2fe){_0x466405=_0x20e2fe;_0x266d60=0xc8;}else{_0x266d60=0xce;}_0x1f14ee[_0xabc4('0x18')](_0x266d60);return _0x1f14ee['set']('Content-Range',_0x54e290+'-'+_0x466405+'/'+_0x20e2fe)[_0xabc4('0x1a')](_0x4df627);}return null;};}function patchUpdates(_0x875e1b){return function(_0xc61ed4){try{jsonpatch[_0xabc4('0x1e')](_0xc61ed4,_0x875e1b,!![]);}catch(_0x3b298d){return BPromise[_0xabc4('0x1f')](_0x3b298d);}return _0xc61ed4['save']();};}function saveUpdates(_0x344a2d,_0x5b2420){return function(_0x7e4778){if(_0x7e4778){return _0x7e4778['update'](_0x344a2d)[_0xabc4('0x20')](function(_0x45b488){return _0x45b488;});}return null;};}function removeEntity(_0x946c29,_0x438f01){return function(_0x733245){if(_0x733245){return _0x733245[_0xabc4('0x21')]()[_0xabc4('0x20')](function(){_0x946c29[_0xabc4('0x18')](0xcc)[_0xabc4('0x19')]();});}};}function handleEntityNotFound(_0x302c85,_0x2d61ac){return function(_0x1f6eeb){if(!_0x1f6eeb){_0x302c85[_0xabc4('0x22')](0x194);}return _0x1f6eeb;};}function handleError(_0x4b3a6d,_0x6aa637){_0x6aa637=_0x6aa637||0x1f4;return function(_0x15a884){logger['error'](_0x15a884['stack']);if(_0x15a884['name']){delete _0x15a884['name'];}_0x4b3a6d[_0xabc4('0x18')](_0x6aa637)[_0xabc4('0x23')](_0x15a884);};}exports['index']=function(_0x53ebca,_0x17150b){var _0x26079f={},_0x35ca73={},_0x4c386c={'count':0x0,'rows':[]};var _0x2fe1f6=_[_0xabc4('0x24')](db[_0xabc4('0x25')]['rawAttributes'],function(_0x4e63c8){return{'name':_0x4e63c8[_0xabc4('0x26')],'type':_0x4e63c8[_0xabc4('0x27')][_0xabc4('0x28')]};});_0x35ca73[_0xabc4('0x29')]=_[_0xabc4('0x24')](_0x2fe1f6,'name');_0x35ca73[_0xabc4('0x2a')]=_[_0xabc4('0x2b')](_0x53ebca[_0xabc4('0x2a')]);_0x35ca73[_0xabc4('0x2c')]=_[_0xabc4('0x2d')](_0x35ca73[_0xabc4('0x29')],_0x35ca73[_0xabc4('0x2a')]);_0x26079f['attributes']=_['intersection'](_0x35ca73['model'],qs['fields'](_0x53ebca[_0xabc4('0x2a')][_0xabc4('0x2e')]));_0x26079f[_0xabc4('0x2f')]=_0x26079f['attributes'][_0xabc4('0x30')]?_0x26079f[_0xabc4('0x2f')]:_0x35ca73[_0xabc4('0x29')];if(!_0x53ebca[_0xabc4('0x2a')][_0xabc4('0x31')](_0xabc4('0x32'))){_0x26079f[_0xabc4('0x1d')]=qs['limit'](_0x53ebca[_0xabc4('0x2a')]['limit']);_0x26079f[_0xabc4('0x1b')]=qs[_0xabc4('0x1b')](_0x53ebca[_0xabc4('0x2a')]['offset']);}_0x26079f['order']=qs[_0xabc4('0x33')](_0x53ebca[_0xabc4('0x2a')]['sort']);_0x26079f[_0xabc4('0x34')]=qs[_0xabc4('0x2c')](_[_0xabc4('0x35')](_0x53ebca[_0xabc4('0x2a')],_0x35ca73[_0xabc4('0x2c')]),_0x2fe1f6);if(_0x53ebca[_0xabc4('0x2a')][_0xabc4('0x36')]){_0x26079f[_0xabc4('0x34')]=_['merge'](_0x26079f[_0xabc4('0x34')],{'$or':_[_0xabc4('0x24')](_0x2fe1f6,function(_0x231135){if(_0x231135[_0xabc4('0x27')]!==_0xabc4('0x37')){var _0x17cb59={};_0x17cb59[_0x231135[_0xabc4('0x38')]]={'$like':'%'+_0x53ebca['query'][_0xabc4('0x36')]+'%'};return _0x17cb59;}})});}_0x26079f=_[_0xabc4('0x39')]({},_0x26079f,_0x53ebca[_0xabc4('0x3a')]);var _0x19cf05={'where':_0x26079f[_0xabc4('0x34')]};return db[_0xabc4('0x25')]['count'](_0x19cf05)[_0xabc4('0x20')](function(_0x500f72){_0x4c386c[_0xabc4('0x1c')]=_0x500f72;if(_0x53ebca[_0xabc4('0x2a')][_0xabc4('0x3b')]){_0x26079f[_0xabc4('0x3c')]=[{'all':!![]}];}return db[_0xabc4('0x25')][_0xabc4('0x3d')](_0x26079f);})[_0xabc4('0x20')](function(_0x473dd9){_0x4c386c[_0xabc4('0x3e')]=_0x473dd9;return _0x4c386c;})[_0xabc4('0x20')](respondWithFilteredResult(_0x17150b,_0x26079f))['catch'](handleError(_0x17150b,null));};exports[_0xabc4('0x3f')]=function(_0x2d0590,_0x1932bc){var _0xca3aa0={'raw':!![],'where':{'id':_0x2d0590[_0xabc4('0x40')]['id']}},_0x1d9b44={};_0x1d9b44[_0xabc4('0x29')]=_[_0xabc4('0x2b')](db['ChatTransferReport'][_0xabc4('0x41')]);_0x1d9b44['query']=_[_0xabc4('0x2b')](_0x2d0590['query']);_0x1d9b44[_0xabc4('0x2c')]=_[_0xabc4('0x2d')](_0x1d9b44[_0xabc4('0x29')],_0x1d9b44[_0xabc4('0x2a')]);_0xca3aa0[_0xabc4('0x2f')]=_['intersection'](_0x1d9b44[_0xabc4('0x29')],qs[_0xabc4('0x2e')](_0x2d0590[_0xabc4('0x2a')][_0xabc4('0x2e')]));_0xca3aa0[_0xabc4('0x2f')]=_0xca3aa0[_0xabc4('0x2f')]['length']?_0xca3aa0[_0xabc4('0x2f')]:_0x1d9b44[_0xabc4('0x29')];if(_0x2d0590['query']['includeAll']){_0xca3aa0[_0xabc4('0x3c')]=[{'all':!![]}];}_0xca3aa0=_[_0xabc4('0x39')]({},_0xca3aa0,_0x2d0590[_0xabc4('0x3a')]);return db[_0xabc4('0x25')]['find'](_0xca3aa0)[_0xabc4('0x20')](handleEntityNotFound(_0x1932bc,null))['then'](respondWithResult(_0x1932bc,null))[_0xabc4('0x42')](handleError(_0x1932bc,null));};exports['create']=function(_0x5365c8,_0x4f101e){return db[_0xabc4('0x25')][_0xabc4('0x43')](_0x5365c8[_0xabc4('0x44')],{})[_0xabc4('0x20')](respondWithResult(_0x4f101e,0xc9))[_0xabc4('0x42')](handleError(_0x4f101e,null));};exports[_0xabc4('0x45')]=function(_0x4896ff,_0x448109){if(_0x4896ff['body']['id']){delete _0x4896ff[_0xabc4('0x44')]['id'];}return db[_0xabc4('0x25')][_0xabc4('0x46')]({'where':{'id':_0x4896ff[_0xabc4('0x40')]['id']}})[_0xabc4('0x20')](handleEntityNotFound(_0x448109,null))['then'](saveUpdates(_0x4896ff[_0xabc4('0x44')],null))[_0xabc4('0x20')](respondWithResult(_0x448109,null))[_0xabc4('0x42')](handleError(_0x448109,null));};exports[_0xabc4('0x21')]=function(_0xb35591,_0x3cb15){return db['ChatTransferReport'][_0xabc4('0x46')]({'where':{'id':_0xb35591[_0xabc4('0x40')]['id']}})[_0xabc4('0x20')](handleEntityNotFound(_0x3cb15,null))['then'](removeEntity(_0x3cb15,null))['catch'](handleError(_0x3cb15,null));};exports[_0xabc4('0x47')]=function(_0x3af2bd,_0x44813a){return db[_0xabc4('0x25')][_0xabc4('0x47')]()[_0xabc4('0x20')](respondWithResult(_0x44813a,null))[_0xabc4('0x42')](handleError(_0x44813a,null));};
\ No newline at end of file
+var _0x5153=['query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','type','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','json','reject','save','update','destroy','then','error','stack','name','send','index','map','ChatTransferReport','fieldName','key','model','keys'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5153,0xb7));var _0x3515=function(_0x10d875,_0x2699c1){_0x10d875=_0x10d875-0x0;var _0x23d6ad=_0x5153[_0x10d875];return _0x23d6ad;};'use strict';var emlformat=require(_0x3515('0x0'));var rimraf=require(_0x3515('0x1'));var zipdir=require(_0x3515('0x2'));var jsonpatch=require(_0x3515('0x3'));var rp=require('request-promise');var moment=require(_0x3515('0x4'));var BPromise=require(_0x3515('0x5'));var Mustache=require(_0x3515('0x6'));var util=require(_0x3515('0x7'));var path=require('path');var sox=require(_0x3515('0x8'));var csv=require(_0x3515('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3515('0xa'));var _=require(_0x3515('0xb'));var squel=require(_0x3515('0xc'));var crypto=require(_0x3515('0xd'));var jsforce=require(_0x3515('0xe'));var deskjs=require(_0x3515('0xf'));var toCsv=require(_0x3515('0x9'));var querystring=require(_0x3515('0x10'));var Papa=require(_0x3515('0x11'));var Redis=require(_0x3515('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x3515('0x13'));var as=require(_0x3515('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3515('0x15'))(_0x3515('0x16'));var utils=require(_0x3515('0x17'));var config=require(_0x3515('0x18'));var licenseUtil=require(_0x3515('0x19'));var db=require(_0x3515('0x1a'))['db'];function respondWithStatusCode(_0x473d9b,_0x419c5d){_0x419c5d=_0x419c5d||0xcc;return function(_0x1d40db){if(_0x1d40db){return _0x473d9b[_0x3515('0x1b')](_0x419c5d);}return _0x473d9b[_0x3515('0x1c')](_0x419c5d)[_0x3515('0x1d')]();};}function respondWithResult(_0x3e5f91,_0x427dc4){_0x427dc4=_0x427dc4||0xc8;return function(_0x168880){if(_0x168880){return _0x3e5f91[_0x3515('0x1c')](_0x427dc4)['json'](_0x168880);}};}function respondWithFilteredResult(_0xaac00d,_0xd53da4){return function(_0x3eb26d){if(_0x3eb26d){var _0xf9f028=typeof _0xd53da4['offset']===_0x3515('0x1e')&&typeof _0xd53da4[_0x3515('0x1f')]===_0x3515('0x1e');var _0x9d2bac=_0x3eb26d[_0x3515('0x20')];var _0x175587=_0xf9f028?0x0:_0xd53da4[_0x3515('0x21')];var _0x48262f=_0xf9f028?_0x3eb26d[_0x3515('0x20')]:_0xd53da4[_0x3515('0x21')]+_0xd53da4[_0x3515('0x1f')];var _0x164042;if(_0x48262f>=_0x9d2bac){_0x48262f=_0x9d2bac;_0x164042=0xc8;}else{_0x164042=0xce;}_0xaac00d['status'](_0x164042);return _0xaac00d['set']('Content-Range',_0x175587+'-'+_0x48262f+'/'+_0x9d2bac)[_0x3515('0x22')](_0x3eb26d);}return null;};}function patchUpdates(_0x4cedbd){return function(_0x4fe658){try{jsonpatch['apply'](_0x4fe658,_0x4cedbd,!![]);}catch(_0x188ca3){return BPromise[_0x3515('0x23')](_0x188ca3);}return _0x4fe658[_0x3515('0x24')]();};}function saveUpdates(_0x2e2225,_0xc897b9){return function(_0x187eda){if(_0x187eda){return _0x187eda[_0x3515('0x25')](_0x2e2225)['then'](function(_0x338a49){return _0x338a49;});}return null;};}function removeEntity(_0x44d26e,_0x39fec9){return function(_0x340858){if(_0x340858){return _0x340858[_0x3515('0x26')]()[_0x3515('0x27')](function(){_0x44d26e[_0x3515('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x63b317,_0x2dd47a){return function(_0xce32a5){if(!_0xce32a5){_0x63b317[_0x3515('0x1b')](0x194);}return _0xce32a5;};}function handleError(_0x1f9845,_0x32547e){_0x32547e=_0x32547e||0x1f4;return function(_0x1a33d0){logger[_0x3515('0x28')](_0x1a33d0[_0x3515('0x29')]);if(_0x1a33d0[_0x3515('0x2a')]){delete _0x1a33d0['name'];}_0x1f9845[_0x3515('0x1c')](_0x32547e)[_0x3515('0x2b')](_0x1a33d0);};}exports[_0x3515('0x2c')]=function(_0x415172,_0x2ded42){var _0x4702ff={},_0x3b7f62={},_0x2a45ff={'count':0x0,'rows':[]};var _0x5f25ba=_[_0x3515('0x2d')](db[_0x3515('0x2e')]['rawAttributes'],function(_0x30b4b1){return{'name':_0x30b4b1[_0x3515('0x2f')],'type':_0x30b4b1['type'][_0x3515('0x30')]};});_0x3b7f62[_0x3515('0x31')]=_[_0x3515('0x2d')](_0x5f25ba,_0x3515('0x2a'));_0x3b7f62['query']=_[_0x3515('0x32')](_0x415172[_0x3515('0x33')]);_0x3b7f62[_0x3515('0x34')]=_['intersection'](_0x3b7f62[_0x3515('0x31')],_0x3b7f62['query']);_0x4702ff[_0x3515('0x35')]=_[_0x3515('0x36')](_0x3b7f62[_0x3515('0x31')],qs[_0x3515('0x37')](_0x415172['query'][_0x3515('0x37')]));_0x4702ff['attributes']=_0x4702ff['attributes']['length']?_0x4702ff[_0x3515('0x35')]:_0x3b7f62[_0x3515('0x31')];if(!_0x415172[_0x3515('0x33')][_0x3515('0x38')](_0x3515('0x39'))){_0x4702ff[_0x3515('0x1f')]=qs['limit'](_0x415172[_0x3515('0x33')][_0x3515('0x1f')]);_0x4702ff[_0x3515('0x21')]=qs['offset'](_0x415172[_0x3515('0x33')][_0x3515('0x21')]);}_0x4702ff[_0x3515('0x3a')]=qs[_0x3515('0x3b')](_0x415172['query']['sort']);_0x4702ff['where']=qs[_0x3515('0x34')](_[_0x3515('0x3c')](_0x415172['query'],_0x3b7f62['filters']),_0x5f25ba);if(_0x415172[_0x3515('0x33')][_0x3515('0x3d')]){_0x4702ff['where']=_[_0x3515('0x3e')](_0x4702ff[_0x3515('0x3f')],{'$or':_['map'](_0x5f25ba,function(_0x5b0c0d){if(_0x5b0c0d[_0x3515('0x40')]!=='VIRTUAL'){var _0x1c7e74={};_0x1c7e74[_0x5b0c0d[_0x3515('0x2a')]]={'$like':'%'+_0x415172['query']['filter']+'%'};return _0x1c7e74;}})});}_0x4702ff=_['merge']({},_0x4702ff,_0x415172[_0x3515('0x41')]);var _0x565179={'where':_0x4702ff['where']};return db[_0x3515('0x2e')][_0x3515('0x20')](_0x565179)[_0x3515('0x27')](function(_0x54f743){_0x2a45ff[_0x3515('0x20')]=_0x54f743;if(_0x415172[_0x3515('0x33')][_0x3515('0x42')]){_0x4702ff[_0x3515('0x43')]=[{'all':!![]}];}return db[_0x3515('0x2e')][_0x3515('0x44')](_0x4702ff);})[_0x3515('0x27')](function(_0x2bbbd2){_0x2a45ff[_0x3515('0x45')]=_0x2bbbd2;return _0x2a45ff;})[_0x3515('0x27')](respondWithFilteredResult(_0x2ded42,_0x4702ff))[_0x3515('0x46')](handleError(_0x2ded42,null));};exports[_0x3515('0x47')]=function(_0x543919,_0x2d166d){var _0x109205={'raw':!![],'where':{'id':_0x543919[_0x3515('0x48')]['id']}},_0x5b632a={};_0x5b632a[_0x3515('0x31')]=_[_0x3515('0x32')](db[_0x3515('0x2e')]['rawAttributes']);_0x5b632a[_0x3515('0x33')]=_['keys'](_0x543919[_0x3515('0x33')]);_0x5b632a[_0x3515('0x34')]=_['intersection'](_0x5b632a[_0x3515('0x31')],_0x5b632a[_0x3515('0x33')]);_0x109205[_0x3515('0x35')]=_[_0x3515('0x36')](_0x5b632a[_0x3515('0x31')],qs['fields'](_0x543919[_0x3515('0x33')]['fields']));_0x109205[_0x3515('0x35')]=_0x109205['attributes'][_0x3515('0x49')]?_0x109205[_0x3515('0x35')]:_0x5b632a[_0x3515('0x31')];if(_0x543919[_0x3515('0x33')][_0x3515('0x42')]){_0x109205[_0x3515('0x43')]=[{'all':!![]}];}_0x109205=_[_0x3515('0x3e')]({},_0x109205,_0x543919[_0x3515('0x41')]);return db[_0x3515('0x2e')][_0x3515('0x4a')](_0x109205)[_0x3515('0x27')](handleEntityNotFound(_0x2d166d,null))[_0x3515('0x27')](respondWithResult(_0x2d166d,null))[_0x3515('0x46')](handleError(_0x2d166d,null));};exports[_0x3515('0x4b')]=function(_0x4d754e,_0x5e30c8){return db[_0x3515('0x2e')][_0x3515('0x4b')](_0x4d754e[_0x3515('0x4c')],{})[_0x3515('0x27')](respondWithResult(_0x5e30c8,0xc9))[_0x3515('0x46')](handleError(_0x5e30c8,null));};exports['update']=function(_0x5cfc44,_0x453163){if(_0x5cfc44[_0x3515('0x4c')]['id']){delete _0x5cfc44['body']['id'];}return db['ChatTransferReport'][_0x3515('0x4a')]({'where':{'id':_0x5cfc44[_0x3515('0x48')]['id']}})[_0x3515('0x27')](handleEntityNotFound(_0x453163,null))[_0x3515('0x27')](saveUpdates(_0x5cfc44[_0x3515('0x4c')],null))['then'](respondWithResult(_0x453163,null))['catch'](handleError(_0x453163,null));};exports[_0x3515('0x26')]=function(_0x473d1d,_0x329e14){return db[_0x3515('0x2e')][_0x3515('0x4a')]({'where':{'id':_0x473d1d[_0x3515('0x48')]['id']}})[_0x3515('0x27')](handleEntityNotFound(_0x329e14,null))[_0x3515('0x27')](removeEntity(_0x329e14,null))[_0x3515('0x46')](handleError(_0x329e14,null));};exports['describe']=function(_0x5eb612,_0x3c92cd){return db[_0x3515('0x2e')][_0x3515('0x4d')]()[_0x3515('0x27')](respondWithResult(_0x3c92cd,null))[_0x3515('0x46')](handleError(_0x3c92cd,null));};
\ No newline at end of file
index 48489c9..e22b57b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bbd=['../../config/environment','./chatTransferReport.attributes','exports','define','ChatTransferReport','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x4b20ca,_0x22e9eb){var _0x218273=function(_0x13ac67){while(--_0x13ac67){_0x4b20ca['push'](_0x4b20ca['shift']());}};_0x218273(++_0x22e9eb);}(_0x8bbd,0x102));var _0xd8bb=function(_0x20111f,_0xdb8e6c){_0x20111f=_0x20111f-0x0;var _0x809fc6=_0x8bbd[_0x20111f];return _0x809fc6;};'use strict';var _=require('lodash');var util=require(_0xd8bb('0x0'));var logger=require(_0xd8bb('0x1'))(_0xd8bb('0x2'));var moment=require(_0xd8bb('0x3'));var BPromise=require(_0xd8bb('0x4'));var rp=require(_0xd8bb('0x5'));var fs=require('fs');var path=require(_0xd8bb('0x6'));var rimraf=require(_0xd8bb('0x7'));var config=require(_0xd8bb('0x8'));var attributes=require(_0xd8bb('0x9'));module[_0xd8bb('0xa')]=function(_0x256b1f,_0x4b5868){return _0x256b1f[_0xd8bb('0xb')](_0xd8bb('0xc'),attributes,{'tableName':'report_chat_transfer','paranoid':![],'indexes':[{'name':_0xd8bb('0xd'),'fields':[_0xd8bb('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x47ed=['path','rimraf','../../config/environment','./chatTransferReport.attributes','exports','define','ChatTransferReport','report_chat_transfer','uniqueid','util','../../config/logger','api','moment','request-promise'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x47ed,0x12f));var _0xd47e=function(_0x1e62b8,_0x5eed4c){_0x1e62b8=_0x1e62b8-0x0;var _0x2ab271=_0x47ed[_0x1e62b8];return _0x2ab271;};'use strict';var _=require('lodash');var util=require(_0xd47e('0x0'));var logger=require(_0xd47e('0x1'))(_0xd47e('0x2'));var moment=require(_0xd47e('0x3'));var BPromise=require('bluebird');var rp=require(_0xd47e('0x4'));var fs=require('fs');var path=require(_0xd47e('0x5'));var rimraf=require(_0xd47e('0x6'));var config=require(_0xd47e('0x7'));var attributes=require(_0xd47e('0x8'));module[_0xd47e('0x9')]=function(_0x404a4f,_0x83f968){return _0x404a4f[_0xd47e('0xa')](_0xd47e('0xb'),attributes,{'tableName':_0xd47e('0xc'),'paranoid':![],'indexes':[{'name':_0xd47e('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 37753bf..a80df46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b5e=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','info','ChatTransferReport,\x20%s,\x20%s','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x0b5e,0x1f4));var _0xe0b5=function(_0x38d136,_0xc954da){_0x38d136=_0x38d136-0x0;var _0x3c2d04=_0x0b5e[_0x38d136];return _0x3c2d04;};'use strict';var _=require(_0xe0b5('0x0'));var util=require(_0xe0b5('0x1'));var moment=require(_0xe0b5('0x2'));var BPromise=require(_0xe0b5('0x3'));var rs=require(_0xe0b5('0x4'));var fs=require('fs');var Redis=require(_0xe0b5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xe0b5('0x6'));var logger=require(_0xe0b5('0x7'))(_0xe0b5('0x8'));var config=require(_0xe0b5('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xe0b5('0xa')][_0xe0b5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x45683e,_0x3f8f8a,_0x297c77){return new BPromise(function(_0x3ab635,_0x2a0ddc){return client['request'](_0x45683e,_0x297c77)['then'](function(_0x1653ff){logger[_0xe0b5('0xc')](_0xe0b5('0xd'),_0x3f8f8a,'request\x20sent');logger[_0xe0b5('0xe')](_0xe0b5('0xf'),_0x3f8f8a,_0xe0b5('0x10'),JSON[_0xe0b5('0x11')](_0x1653ff));if(_0x1653ff[_0xe0b5('0x12')]){if(_0x1653ff[_0xe0b5('0x12')]['code']===0x1f4){logger['error'](_0xe0b5('0xd'),_0x3f8f8a,_0x1653ff[_0xe0b5('0x12')]['message']);return _0x2a0ddc(_0x1653ff[_0xe0b5('0x12')][_0xe0b5('0x13')]);}logger[_0xe0b5('0x12')](_0xe0b5('0xd'),_0x3f8f8a,_0x1653ff[_0xe0b5('0x12')][_0xe0b5('0x13')]);return _0x3ab635(_0x1653ff[_0xe0b5('0x12')][_0xe0b5('0x13')]);}else{logger[_0xe0b5('0xc')](_0xe0b5('0xd'),_0x3f8f8a,_0xe0b5('0x10'));_0x3ab635(_0x1653ff[_0xe0b5('0x14')]['message']);}})[_0xe0b5('0x15')](function(_0x42e806){logger[_0xe0b5('0x12')]('ChatTransferReport,\x20%s,\x20%s',_0x3f8f8a,_0x42e806);_0x2a0ddc(_0x42e806);});});}
\ No newline at end of file
+var _0x4b62=['result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message'];(function(_0x35f467,_0x20dd39){var _0x4347e2=function(_0x5716bf){while(--_0x5716bf){_0x35f467['push'](_0x35f467['shift']());}};_0x4347e2(++_0x20dd39);}(_0x4b62,0x86));var _0x24b6=function(_0x10fe54,_0x9d4729){_0x10fe54=_0x10fe54-0x0;var _0xe5f1e2=_0x4b62[_0x10fe54];return _0xe5f1e2;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x24b6('0x0'));var BPromise=require(_0x24b6('0x1'));var rs=require(_0x24b6('0x2'));var fs=require('fs');var Redis=require(_0x24b6('0x3'));var db=require(_0x24b6('0x4'))['db'];var utils=require(_0x24b6('0x5'));var logger=require(_0x24b6('0x6'))(_0x24b6('0x7'));var config=require(_0x24b6('0x8'));var jayson=require(_0x24b6('0x9'));var client=jayson[_0x24b6('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ede43,_0x59e9d2,_0x12af10){return new BPromise(function(_0x31313c,_0x2ad287){return client[_0x24b6('0xb')](_0x2ede43,_0x12af10)[_0x24b6('0xc')](function(_0x31a9e8){logger[_0x24b6('0xd')](_0x24b6('0xe'),_0x59e9d2,_0x24b6('0xf'));logger[_0x24b6('0x10')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x59e9d2,'request\x20sent',JSON[_0x24b6('0x11')](_0x31a9e8));if(_0x31a9e8[_0x24b6('0x12')]){if(_0x31a9e8[_0x24b6('0x12')]['code']===0x1f4){logger[_0x24b6('0x12')](_0x24b6('0xe'),_0x59e9d2,_0x31a9e8[_0x24b6('0x12')][_0x24b6('0x13')]);return _0x2ad287(_0x31a9e8[_0x24b6('0x12')][_0x24b6('0x13')]);}logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x59e9d2,_0x31a9e8[_0x24b6('0x12')][_0x24b6('0x13')]);return _0x31313c(_0x31a9e8['error'][_0x24b6('0x13')]);}else{logger[_0x24b6('0xd')](_0x24b6('0xe'),_0x59e9d2,'request\x20sent');_0x31313c(_0x31a9e8[_0x24b6('0x14')][_0x24b6('0x13')]);}})[_0x24b6('0x15')](function(_0x10b67d){logger[_0x24b6('0x12')](_0x24b6('0xe'),_0x59e9d2,_0x10b67d);_0x2ad287(_0x10b67d);});});}
\ No newline at end of file
index 2130128..2de5308 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x890f=['put','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','create'];(function(_0x4ac1ca,_0x362770){var _0xb2ef65=function(_0x41cc6a){while(--_0x41cc6a){_0x4ac1ca['push'](_0x4ac1ca['shift']());}};_0xb2ef65(++_0x362770);}(_0x890f,0x1cc));var _0xf890=function(_0x49536b,_0x2abe5d){_0x49536b=_0x49536b-0x0;var _0x30de59=_0x890f[_0x49536b];return _0x30de59;};'use strict';var multer=require(_0xf890('0x0'));var util=require(_0xf890('0x1'));var path=require(_0xf890('0x2'));var timeout=require(_0xf890('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf890('0x4'));var auth=require(_0xf890('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xf890('0x6'));var controller=require('./chatTransferReport.controller');router[_0xf890('0x7')]('/',auth['isAuthenticated'](),controller[_0xf890('0x8')]);router[_0xf890('0x7')](_0xf890('0x9'),auth[_0xf890('0xa')](),controller[_0xf890('0xb')]);router[_0xf890('0x7')](_0xf890('0xc'),auth[_0xf890('0xa')](),controller[_0xf890('0xd')]);router['post']('/',auth[_0xf890('0xa')](),controller[_0xf890('0xe')]);router[_0xf890('0xf')]('/:id',auth[_0xf890('0xa')](),controller['update']);router[_0xf890('0x10')](_0xf890('0xc'),auth[_0xf890('0xa')](),controller[_0xf890('0x11')]);module[_0xf890('0x12')]=router;
\ No newline at end of file
+var _0x6c88=['path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','isAuthenticated','index','/describe','describe','get','/:id','show','create','update','delete','destroy','exports','multer'];(function(_0x343b8f,_0x4f07f1){var _0x5913db=function(_0x1a1127){while(--_0x1a1127){_0x343b8f['push'](_0x343b8f['shift']());}};_0x5913db(++_0x4f07f1);}(_0x6c88,0xb3));var _0x86c8=function(_0x29e54f,_0x33535a){_0x29e54f=_0x29e54f-0x0;var _0x4c619f=_0x6c88[_0x29e54f];return _0x4c619f;};'use strict';var multer=require(_0x86c8('0x0'));var util=require('util');var path=require(_0x86c8('0x1'));var timeout=require('connect-timeout');var express=require(_0x86c8('0x2'));var router=express[_0x86c8('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x86c8('0x4'));var interaction=require(_0x86c8('0x5'));var config=require(_0x86c8('0x6'));var controller=require(_0x86c8('0x7'));router['get']('/',auth[_0x86c8('0x8')](),controller[_0x86c8('0x9')]);router['get'](_0x86c8('0xa'),auth['isAuthenticated'](),controller[_0x86c8('0xb')]);router[_0x86c8('0xc')](_0x86c8('0xd'),auth['isAuthenticated'](),controller[_0x86c8('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x86c8('0xf')]);router['put'](_0x86c8('0xd'),auth['isAuthenticated'](),controller[_0x86c8('0x10')]);router[_0x86c8('0x11')](_0x86c8('0xd'),auth[_0x86c8('0x8')](),controller[_0x86c8('0x12')]);module[_0x86c8('0x13')]=router;
\ No newline at end of file
index 0be7182..7785018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca84=['Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','exports','STRING','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','squared','rounded','We\x20are\x20here!','Chat','Send','TEXT','Form\x20submission\x20error','Note','Type\x20a\x20message','Skip','star','thumb','stringify','name','input','getDataValue','parse','setDataValue','textarea','Comments','offlineForm','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition'];(function(_0xa13b36,_0x9e0fef){var _0x1a3a93=function(_0x293fb4){while(--_0x293fb4){_0xa13b36['push'](_0xa13b36['shift']());}};_0x1a3a93(++_0x9e0fef);}(_0xca84,0xca));var _0x4ca8=function(_0x152e69,_0x48182a){_0x152e69=_0x152e69-0x0;var _0x23c0bb=_0xca84[_0x152e69];return _0x23c0bb;};'use strict';var Sequelize=require(_0x4ca8('0x0'));var rs=require(_0x4ca8('0x1'));module[_0x4ca8('0x2')]={'name':{'type':Sequelize[_0x4ca8('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0x4ca8('0x3')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0x4ca8('0x3')]},'mapKey':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':_0x4ca8('0x4')},'mapKeyOffline':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':_0x4ca8('0x4')},'key':{'type':Sequelize[_0x4ca8('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':_0x4ca8('0x5')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize[_0x4ca8('0x3')],'allowNull':![],'defaultValue':_0x4ca8('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x4ca8('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x4ca8('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x4ca8('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x4ca8('0x3')]},'animation':{'type':Sequelize[_0x4ca8('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x4ca8('0xa')]('rounded',_0x4ca8('0xb')),'defaultValue':_0x4ca8('0xc')},'header_online':{'type':Sequelize['STRING'],'defaultValue':_0x4ca8('0xd')},'start_chat_button':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':_0x4ca8('0xe')},'offline_chat_button':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':_0x4ca8('0xf')},'header_offline':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x4ca8('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x4ca8('0x10')]},'closingQuestion':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':'Do\x20you\x20want\x20to\x20close\x20the\x20interaction?'},'formSubmitSuccessMessage':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':_0x4ca8('0x11')},'noteTitle':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':_0x4ca8('0x12')},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':_0x4ca8('0x13')},'closingMessage':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x4ca8('0xf')},'skipMessageButton':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':_0x4ca8('0x14')},'conditionAgreement':{'type':Sequelize[_0x4ca8('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x4ca8('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize['STRING'],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize[_0x4ca8('0xa')](_0x4ca8('0x15'),_0x4ca8('0x16')),'defaultValue':_0x4ca8('0x15')},'ratingStarsNumber':{'type':Sequelize[_0x4ca8('0x8')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x4ca8('0x10')],'defaultValue':function(){return JSON[_0x4ca8('0x17')]({'items':[{'type':'input','variable':null,'config':{'placeholder':'name','type':'text','required':!![]},'props':{'title':_0x4ca8('0x18'),'helpText':''}},{'type':_0x4ca8('0x19'),'props':{'title':_0x4ca8('0x4'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x4ca8('0x1a')]('onlineForm')?JSON[_0x4ca8('0x1b')](this[_0x4ca8('0x1a')]('onlineForm')):{};},'set':function(_0x11d0d0){return this[_0x4ca8('0x1c')]('onlineForm',JSON[_0x4ca8('0x17')](_0x11d0d0));}},'offlineForm':{'type':Sequelize[_0x4ca8('0x10')],'defaultValue':function(){return JSON[_0x4ca8('0x17')]({'items':[{'type':_0x4ca8('0x19'),'props':{'title':_0x4ca8('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x4ca8('0x4'),'type':_0x4ca8('0x4')},'variable':null},{'type':_0x4ca8('0x1d'),'config':{'placeholder':_0x4ca8('0x1e')},'props':{'title':'Comments','helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0x4ca8('0x1f'))?JSON[_0x4ca8('0x1b')](this[_0x4ca8('0x1a')](_0x4ca8('0x1f'))):{};},'set':function(_0x404513){return this[_0x4ca8('0x1c')](_0x4ca8('0x1f'),JSON[_0x4ca8('0x17')](_0x404513));}},'token':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':function(){return rs[_0x4ca8('0x20')]();}},'autoclose':{'type':Sequelize[_0x4ca8('0x9')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x4ca8('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0x4ca8('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x4ca8('0x3')]},'waitingTitle':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':_0x4ca8('0x21')},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x4ca8('0x22')},'offlineMessageSubject':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':_0x4ca8('0x23')},'offlineMessageBody':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':_0x4ca8('0x24')},'enableUnmanagedNote':{'type':Sequelize[_0x4ca8('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':_0x4ca8('0x25')},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0x4ca8('0x14')},'sendUnmanaged':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':'Send'},'enableCustomerAttachment':{'type':Sequelize[_0x4ca8('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize[_0x4ca8('0x9')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x4ca8('0x3')]},'notificationTemplate':{'type':Sequelize[_0x4ca8('0x10')],'defaultValue':function(){return _0x4ca8('0x26');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x4ca8('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x4ca8('0x9')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize['STRING'],'defaultValue':_0x4ca8('0x27')},'waitForTheAssignedAgent':{'type':Sequelize[_0x4ca8('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':_0x4ca8('0x28')},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':_0x4ca8('0x29')},'defaultTitle':{'type':Sequelize[_0x4ca8('0x3')]},'customerAvatar':{'type':Sequelize[_0x4ca8('0x10')]},'showCustomerAvatar':{'type':Sequelize[_0x4ca8('0x9')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x4ca8('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x4ca8('0x3')],'allowNull':![],'defaultValue':_0x4ca8('0x2a'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x4ca8('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4ca8('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x4ca8('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x4ca8('0x3')],'defaultValue':_0x4ca8('0x2b')},'systemAvatar':{'type':Sequelize[_0x4ca8('0x10')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4ca8('0x8')],'comment':_0x4ca8('0x2c')},'mandatoryDisposition':{'type':Sequelize[_0x4ca8('0x9')],'defaultValue':![],'comment':_0x4ca8('0x2d'),'set':function(_0x3c1c15){if(!_0x3c1c15)this['setDataValue'](_0x4ca8('0x2e'),null);this[_0x4ca8('0x1c')](_0x4ca8('0x2f'),_0x3c1c15);}},'vidaooEscalation':{'type':Sequelize[_0x4ca8('0x9')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x4ca8('0x3')]},'vidaooTopic':{'type':Sequelize[_0x4ca8('0x3')],'allowNull':![],'defaultValue':_0x4ca8('0x30')},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return _0x4ca8('0x31');}},'vidaooMetadata':{'type':Sequelize[_0x4ca8('0x10')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x4ca8('0x9')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x4ca8('0x10')]}};
\ No newline at end of file
+var _0x10d7=['star','thumb','stringify','input','name','text','parse','onlineForm','textarea','Comments','Leave\x20your\x20comments','getDataValue','offlineForm','setDataValue','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','website_alias','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','STRING','address','email','Agent','#011F6A','#ffffff','INTEGER','rounded','squared','We\x20are\x20here!','Chat','Contact\x20us','BOOLEAN','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Send','Skip','Feedback'];(function(_0xf2ec71,_0x393b49){var _0x32bde7=function(_0x5c9348){while(--_0x5c9348){_0xf2ec71['push'](_0xf2ec71['shift']());}};_0x32bde7(++_0x393b49);}(_0x10d7,0x170));var _0x710d=function(_0x4b7d10,_0x2d7fdf){_0x4b7d10=_0x4b7d10-0x0;var _0x4aed8b=_0x10d7[_0x4b7d10];return _0x4aed8b;};'use strict';var Sequelize=require(_0x710d('0x0'));var rs=require(_0x710d('0x1'));module['exports']={'name':{'type':Sequelize[_0x710d('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0x710d('0x2')],'allowNull':![],'unique':_0x710d('0x3')},'description':{'type':Sequelize['STRING']},'mapKey':{'type':Sequelize[_0x710d('0x2')],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize[_0x710d('0x2')],'defaultValue':_0x710d('0x4')},'key':{'type':Sequelize[_0x710d('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x710d('0x2')],'defaultValue':_0x710d('0x5')},'customerAlias':{'type':Sequelize[_0x710d('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x710d('0x2')],'allowNull':![],'defaultValue':_0x710d('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x710d('0x2')],'allowNull':![],'defaultValue':_0x710d('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x710d('0x2')],'allowNull':![],'defaultValue':_0x710d('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x710d('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize['STRING']},'animation':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM'](_0x710d('0x9'),_0x710d('0xa')),'defaultValue':_0x710d('0x9')},'header_online':{'type':Sequelize[_0x710d('0x2')],'defaultValue':_0x710d('0xb')},'start_chat_button':{'type':Sequelize[_0x710d('0x2')],'defaultValue':_0x710d('0xc')},'offline_chat_button':{'type':Sequelize[_0x710d('0x2')],'defaultValue':'Send'},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0x710d('0xd')},'download_transcript':{'type':Sequelize[_0x710d('0xe')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x710d('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x710d('0x2')],'defaultValue':_0x710d('0xf')},'defaultWhiteLabel':{'type':Sequelize[_0x710d('0xe')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x710d('0x10')]},'closingQuestion':{'type':Sequelize[_0x710d('0x2')],'defaultValue':_0x710d('0x11')},'formSubmitSuccessMessage':{'type':Sequelize['STRING'],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0x710d('0x2')],'defaultValue':'Form\x20submission\x20error'},'noteTitle':{'type':Sequelize[_0x710d('0x2')],'defaultValue':_0x710d('0x12')},'placeholderMessage':{'type':Sequelize[_0x710d('0x2')],'defaultValue':_0x710d('0x13')},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x710d('0x14')},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x710d('0x15')},'skipMessageButton':{'type':Sequelize[_0x710d('0x2')],'defaultValue':_0x710d('0x16')},'conditionAgreement':{'type':Sequelize[_0x710d('0xe')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x710d('0xe')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x710d('0xe')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x710d('0xe')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize['STRING'],'defaultValue':_0x710d('0x17')},'ratingType':{'type':Sequelize['ENUM'](_0x710d('0x18'),_0x710d('0x19')),'defaultValue':'star'},'ratingStarsNumber':{'type':Sequelize[_0x710d('0x8')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x710d('0x10')],'defaultValue':function(){return JSON[_0x710d('0x1a')]({'items':[{'type':_0x710d('0x1b'),'variable':null,'config':{'placeholder':_0x710d('0x1c'),'type':_0x710d('0x1d'),'required':!![]},'props':{'title':_0x710d('0x1c'),'helpText':''}},{'type':_0x710d('0x1b'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x710d('0x4'),'type':_0x710d('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue']('onlineForm')?JSON[_0x710d('0x1e')](this['getDataValue'](_0x710d('0x1f'))):{};},'set':function(_0x27e66a){return this['setDataValue'](_0x710d('0x1f'),JSON[_0x710d('0x1a')](_0x27e66a));}},'offlineForm':{'type':Sequelize[_0x710d('0x10')],'defaultValue':function(){return JSON[_0x710d('0x1a')]({'items':[{'type':_0x710d('0x1b'),'props':{'title':_0x710d('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x710d('0x4'),'type':_0x710d('0x4')},'variable':null},{'type':_0x710d('0x20'),'config':{'placeholder':_0x710d('0x21')},'props':{'title':_0x710d('0x21'),'helpText':_0x710d('0x22')}}],'fromKey':0x0});},'get':function(){return this[_0x710d('0x23')](_0x710d('0x24'))?JSON[_0x710d('0x1e')](this[_0x710d('0x23')](_0x710d('0x24'))):{};},'set':function(_0x3a7084){return this[_0x710d('0x25')](_0x710d('0x24'),JSON[_0x710d('0x1a')](_0x3a7084));}},'token':{'type':Sequelize[_0x710d('0x2')],'defaultValue':function(){return rs[_0x710d('0x26')]();}},'autoclose':{'type':Sequelize[_0x710d('0xe')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x710d('0xe')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x710d('0x2')]},'forwardOffline':{'type':Sequelize[_0x710d('0xe')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x710d('0x2')]},'waitingTitle':{'type':Sequelize[_0x710d('0x2')],'defaultValue':_0x710d('0x27')},'waitingMessage':{'type':Sequelize[_0x710d('0x2')],'defaultValue':_0x710d('0x28')},'offlineMessageSubject':{'type':Sequelize[_0x710d('0x2')],'defaultValue':_0x710d('0x29')},'offlineMessageBody':{'type':Sequelize[_0x710d('0x2')],'defaultValue':_0x710d('0x2a')},'enableUnmanagedNote':{'type':Sequelize[_0x710d('0xe')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':_0x710d('0x2b')},'skipUnmanaged':{'type':Sequelize[_0x710d('0x2')],'defaultValue':_0x710d('0x16')},'sendUnmanaged':{'type':Sequelize[_0x710d('0x2')],'defaultValue':_0x710d('0x15')},'enableCustomerAttachment':{'type':Sequelize[_0x710d('0xe')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x710d('0xe')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x710d('0x10')]},'showAgentAvatar':{'type':Sequelize[_0x710d('0xe')],'defaultValue':![]},'timezone':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x710d('0x10')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x710d('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x710d('0xe')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x710d('0x2')],'defaultValue':_0x710d('0x2c')},'waitForTheAssignedAgent':{'type':Sequelize[_0x710d('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0x710d('0x2')],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize[_0x710d('0x2')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x710d('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x710d('0x2')],'allowNull':![],'defaultValue':'#fafafa','validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x710d('0xe')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x710d('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x710d('0xe')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x710d('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize['STRING'],'defaultValue':'System'},'systemAvatar':{'type':Sequelize[_0x710d('0x10')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x710d('0x8')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x710d('0xe')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x5bafb4){if(!_0x5bafb4)this[_0x710d('0x25')](_0x710d('0x2d'),null);this['setDataValue'](_0x710d('0x2e'),_0x5bafb4);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x710d('0x2')]},'vidaooTopic':{'type':Sequelize[_0x710d('0x2')],'allowNull':![],'defaultValue':_0x710d('0x2f')},'vidaooNote':{'type':Sequelize[_0x710d('0x2')],'defaultValue':function(){return _0x710d('0x30');}},'vidaooMetadata':{'type':Sequelize[_0x710d('0x10')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x710d('0xe')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x710d('0x10')]}};
\ No newline at end of file
index 093cc66..75020b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29a4=['addAgents','emit','removeAgents','isArray','getAgents','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','./chatWebsite.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatWebsite,\x20%s,\x20%s','message','result','end','status','json','offset','undefined','count','limit','set','apply','reject','update','destroy','get','ChatWebsites','sendStatus','name','send','index','Pause','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','nolimit','sort','pick','filters','where','merge','VIRTUAL','filter','options','findAll','rows','catch','show','params','length','includeAll','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','ChatWebsiteId','getDispositions','findOne','Disposition','hasOwnProperty','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','order','addLogo','sitepic','filename','addAvatar','agentAvatar','file','addCustomerAvatar','addSystemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','../../config/license/util','getLicense','custom','isNil','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','getCustomerAvatar','customerAvatar','showCustomerAvatar','existsSync','getSystemAvatar','server/files/images/avatars/system_avatar.png','systemAvatar','user-agent-parser','setUA','headers','chat','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','CmList','List','ChatApplication','Applications','account','list','applications','orderBy','asc','Contacts','contact','x-forwarded-for','first','lastName','x-real-port','referer','browser','version','format','%s\x20%s','unknown','device','vendor','%s\x20%s\x20%s','ChatInteraction','threadId','externalUrl','interaction','spread','messageId','created','autoclose','push','unmanaged','ChatMessage','AttachmentId','User','UserId','unshift','agent','waitForTheAssignedAgent','*,*,*,*','forcedOwnership','Start','startRouting','EventManager','offline','files','CompanyId','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','toPairs','ChatOfflineMessage','originalname','mimetype','server','attachments','offline-chat','basename','sequelize','Attachment','bulkCreate','MailServerOut','Smtp','forwardOfflineAddress','service','host','port','secure','authentication','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','email','openNewInteraction','MailAccountId','subjectOffline','toPairsIn','mapValues','firstName','offlineMessageSubject','Chat','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','Owner','internal','Tag','Tags','color','tag','Command','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','inspect','No\x20timezone','getSnippet','Interval','Intervals','getProactiveActions','License','increment','chatLicenseExceeded','all','some','server/files/chat/iframe.ejs','x-real-ip','connection','remoteAddress','virtual','replace','backgroundColor','addApplications','transaction','priority','getApplications','addProactiveActions','chatProactiveAction','getFields','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Contact','Attachments'];(function(_0x323b00,_0x2c5ae8){var _0x4c39dd=function(_0x5590dc){while(--_0x5590dc){_0x323b00['push'](_0x323b00['shift']());}};_0x4c39dd(++_0x2c5ae8);}(_0x29a4,0x139));var _0x429a=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x29a4[_0x21a9d9];return _0x46adce;};'use strict';var emlformat=require(_0x429a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x429a('0x1'));var jsonpatch=require(_0x429a('0x2'));var rp=require('request-promise');var moment=require(_0x429a('0x3'));var BPromise=require(_0x429a('0x4'));var Mustache=require(_0x429a('0x5'));var util=require(_0x429a('0x6'));var path=require('path');var sox=require(_0x429a('0x7'));var csv=require(_0x429a('0x8'));var ejs=require(_0x429a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x429a('0xa'));var squel=require(_0x429a('0xb'));var crypto=require(_0x429a('0xc'));var jsforce=require(_0x429a('0xd'));var deskjs=require(_0x429a('0xe'));var toCsv=require('to-csv');var querystring=require(_0x429a('0xf'));var Papa=require(_0x429a('0x10'));var Redis=require(_0x429a('0x11'));var authService=require(_0x429a('0x12'));var qs=require(_0x429a('0x13'));var as=require(_0x429a('0x14'));var hardwareService=require(_0x429a('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x429a('0x16'));var config=require(_0x429a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x429a('0x18'))['db'];config[_0x429a('0x19')]=_[_0x429a('0x1a')](config[_0x429a('0x19')],{'host':_0x429a('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x429a('0x19')]));require(_0x429a('0x1c'))[_0x429a('0x1d')](socket);var jayson=require(_0x429a('0x1e'));var client=jayson[_0x429a('0x1f')][_0x429a('0x20')]({'port':0x232c});var client9002=jayson[_0x429a('0x1f')]['http']({'port':0x232a});var client9003=jayson[_0x429a('0x1f')][_0x429a('0x20')]({'port':0x232b});var client9001=jayson['client'][_0x429a('0x20')]({'port':0x2329});function respondWithRpcPromise(_0x547478,_0x57bdda,_0x24f0e6,_0x16f872){return new BPromise(function(_0x55586a,_0x198362){var _0x2032fe=_0x16f872||client;return _0x2032fe[_0x429a('0x21')](_0x547478,_0x24f0e6)[_0x429a('0x22')](function(_0x4a413e){logger[_0x429a('0x23')]('ChatWebsite,\x20%s,\x20%s',_0x57bdda,_0x429a('0x24'));logger[_0x429a('0x25')](_0x429a('0x26'),_0x57bdda,_0x429a('0x24'),JSON[_0x429a('0x27')](_0x4a413e));if(_0x4a413e[_0x429a('0x28')]){if(_0x4a413e[_0x429a('0x28')][_0x429a('0x29')]===0x1f4){logger[_0x429a('0x28')](_0x429a('0x2a'),_0x57bdda,_0x4a413e[_0x429a('0x28')][_0x429a('0x2b')]);return _0x198362(_0x4a413e[_0x429a('0x28')][_0x429a('0x2b')]);}logger[_0x429a('0x28')]('ChatWebsite,\x20%s,\x20%s',_0x57bdda,_0x4a413e['error'][_0x429a('0x2b')]);return _0x55586a(_0x4a413e['error'][_0x429a('0x2b')]);}else{logger[_0x429a('0x23')](_0x429a('0x2a'),_0x57bdda,_0x429a('0x24'));_0x55586a(_0x4a413e[_0x429a('0x2c')]['message']);}})['catch'](function(_0x32250a){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x57bdda,_0x32250a);_0x198362(_0x32250a);});});}function respondWithStatusCode(_0x8058a8,_0x42e2f9){_0x42e2f9=_0x42e2f9||0xcc;return function(_0x22d8b4){if(_0x22d8b4){return _0x8058a8['sendStatus'](_0x42e2f9);}return _0x8058a8['status'](_0x42e2f9)[_0x429a('0x2d')]();};}function respondWithResult(_0x1fc5ba,_0x4beed4){_0x4beed4=_0x4beed4||0xc8;return function(_0x33cca2){if(_0x33cca2){return _0x1fc5ba[_0x429a('0x2e')](_0x4beed4)[_0x429a('0x2f')](_0x33cca2);}};}function respondWithFilteredResult(_0x25e46f,_0x4b7c8e){return function(_0xf8e155){if(_0xf8e155){var _0x42deb5=typeof _0x4b7c8e[_0x429a('0x30')]===_0x429a('0x31')&&typeof _0x4b7c8e['limit']===_0x429a('0x31');var _0x35d87b=_0xf8e155[_0x429a('0x32')];var _0x537bfe=_0x42deb5?0x0:_0x4b7c8e[_0x429a('0x30')];var _0x4b2b2f=_0x42deb5?_0xf8e155[_0x429a('0x32')]:_0x4b7c8e[_0x429a('0x30')]+_0x4b7c8e[_0x429a('0x33')];var _0xfce0cc;if(_0x4b2b2f>=_0x35d87b){_0x4b2b2f=_0x35d87b;_0xfce0cc=0xc8;}else{_0xfce0cc=0xce;}_0x25e46f[_0x429a('0x2e')](_0xfce0cc);return _0x25e46f[_0x429a('0x34')]('Content-Range',_0x537bfe+'-'+_0x4b2b2f+'/'+_0x35d87b)['json'](_0xf8e155);}return null;};}function patchUpdates(_0x33faca){return function(_0x48e828){try{jsonpatch[_0x429a('0x35')](_0x48e828,_0x33faca,!![]);}catch(_0x58ab9a){return BPromise[_0x429a('0x36')](_0x58ab9a);}return _0x48e828['save']();};}function saveUpdates(_0x124fe1,_0x29efc2){return function(_0x3dfead){if(_0x3dfead){return _0x3dfead[_0x429a('0x37')](_0x124fe1)[_0x429a('0x22')](function(_0xc00458){return _0xc00458;});}return null;};}function removeEntity(_0x1de885,_0x244490){return function(_0x13a224){if(_0x13a224){return _0x13a224[_0x429a('0x38')]()['then'](function(){var _0x4dccb1=_0x13a224[_0x429a('0x39')]({'plain':!![]});var _0x398330=_0x429a('0x3a');return db['UserProfileResource']['destroy']({'where':{'type':_0x398330,'resourceId':_0x4dccb1['id']}})[_0x429a('0x22')](function(){return _0x13a224;});})[_0x429a('0x22')](function(){_0x1de885[_0x429a('0x2e')](0xcc)[_0x429a('0x2d')]();});}};}function handleEntityNotFound(_0x353430,_0x1ba0e1){return function(_0x37eb4e){if(!_0x37eb4e){_0x353430[_0x429a('0x3b')](0x194);}return _0x37eb4e;};}function handleError(_0x447410,_0x23c00e){_0x23c00e=_0x23c00e||0x1f4;return function(_0x228b5e){logger[_0x429a('0x28')](_0x228b5e['stack']);if(_0x228b5e['name']){delete _0x228b5e[_0x429a('0x3c')];}_0x447410[_0x429a('0x2e')](_0x23c00e)[_0x429a('0x3d')](_0x228b5e);};}exports[_0x429a('0x3e')]=function(_0x30c9b5,_0x27d708){var _0x618201={'include':[{'model':db[_0x429a('0x3f')],'as':_0x429a('0x40')}]},_0xf3713d={},_0x1616b3={'count':0x0,'rows':[]};var _0x144198=_[_0x429a('0x41')](db[_0x429a('0x42')][_0x429a('0x43')],function(_0x7cd627){return{'name':_0x7cd627[_0x429a('0x44')],'type':_0x7cd627[_0x429a('0x45')][_0x429a('0x46')]};});_0xf3713d[_0x429a('0x47')]=_['map'](_0x144198,_0x429a('0x3c'));_0xf3713d[_0x429a('0x48')]=_[_0x429a('0x49')](_0x30c9b5[_0x429a('0x48')]);_0xf3713d['filters']=_[_0x429a('0x4a')](_0xf3713d[_0x429a('0x47')],_0xf3713d[_0x429a('0x48')]);_0x618201['attributes']=_['intersection'](_0xf3713d[_0x429a('0x47')],qs[_0x429a('0x4b')](_0x30c9b5[_0x429a('0x48')][_0x429a('0x4b')]));_0x618201[_0x429a('0x4c')]=_0x618201[_0x429a('0x4c')]['length']?_0x618201[_0x429a('0x4c')]:_0xf3713d[_0x429a('0x47')];if(!_0x30c9b5[_0x429a('0x48')]['hasOwnProperty'](_0x429a('0x4d'))){_0x618201[_0x429a('0x33')]=qs[_0x429a('0x33')](_0x30c9b5[_0x429a('0x48')][_0x429a('0x33')]);_0x618201['offset']=qs[_0x429a('0x30')](_0x30c9b5[_0x429a('0x48')][_0x429a('0x30')]);}_0x618201['order']=qs['sort'](_0x30c9b5[_0x429a('0x48')][_0x429a('0x4e')]);_0x618201['where']=qs['filters'](_[_0x429a('0x4f')](_0x30c9b5[_0x429a('0x48')],_0xf3713d[_0x429a('0x50')]),_0x144198);if(_0x30c9b5['query']['filter']){_0x618201[_0x429a('0x51')]=_[_0x429a('0x52')](_0x618201['where'],{'$or':_[_0x429a('0x41')](_0x144198,function(_0x43459c){if(_0x43459c[_0x429a('0x45')]!==_0x429a('0x53')){var _0x402bcf={};_0x402bcf[_0x43459c[_0x429a('0x3c')]]={'$like':'%'+_0x30c9b5['query'][_0x429a('0x54')]+'%'};return _0x402bcf;}})});}_0x618201=_[_0x429a('0x52')]({},_0x618201,_0x30c9b5[_0x429a('0x55')]);var _0x48bfec={'where':_0x618201[_0x429a('0x51')]};return db[_0x429a('0x42')][_0x429a('0x32')](_0x48bfec)[_0x429a('0x22')](function(_0x9d760c){_0x1616b3[_0x429a('0x32')]=_0x9d760c;if(_0x30c9b5[_0x429a('0x48')]['includeAll']){_0x618201['include']=[{'all':!![]}];}return db[_0x429a('0x42')][_0x429a('0x56')](_0x618201);})[_0x429a('0x22')](function(_0x3c852d){_0x1616b3[_0x429a('0x57')]=_0x3c852d;return _0x1616b3;})[_0x429a('0x22')](respondWithFilteredResult(_0x27d708,_0x618201))[_0x429a('0x58')](handleError(_0x27d708,null));};exports[_0x429a('0x59')]=function(_0x1d7072,_0x3505c9){var _0x5b213f={'raw':![],'where':{'id':_0x1d7072[_0x429a('0x5a')]['id']},'include':[{'model':db[_0x429a('0x3f')],'as':_0x429a('0x40')}]},_0xa4b9a4={};_0xa4b9a4[_0x429a('0x47')]=_['keys'](db[_0x429a('0x42')][_0x429a('0x43')]);_0xa4b9a4['query']=_['keys'](_0x1d7072[_0x429a('0x48')]);_0xa4b9a4[_0x429a('0x50')]=_['intersection'](_0xa4b9a4[_0x429a('0x47')],_0xa4b9a4['query']);_0x5b213f[_0x429a('0x4c')]=_[_0x429a('0x4a')](_0xa4b9a4[_0x429a('0x47')],qs[_0x429a('0x4b')](_0x1d7072[_0x429a('0x48')][_0x429a('0x4b')]));_0x5b213f[_0x429a('0x4c')]=_0x5b213f[_0x429a('0x4c')][_0x429a('0x5b')]?_0x5b213f[_0x429a('0x4c')]:_0xa4b9a4[_0x429a('0x47')];if(_0x1d7072[_0x429a('0x48')][_0x429a('0x5c')]){_0x5b213f[_0x429a('0x5d')]=[{'all':!![]}];}_0x5b213f=_[_0x429a('0x52')]({},_0x5b213f,_0x1d7072['options']);return db[_0x429a('0x42')][_0x429a('0x5e')](_0x5b213f)[_0x429a('0x22')](handleEntityNotFound(_0x3505c9,null))[_0x429a('0x22')](respondWithResult(_0x3505c9,null))[_0x429a('0x58')](handleError(_0x3505c9,null));};exports[_0x429a('0x5f')]=function(_0x1a74e3,_0x258bda){return db['ChatWebsite'][_0x429a('0x5f')](_0x1a74e3['body'],{})['then'](function(_0xb02e95){var _0x4511c8=_0x1a74e3[_0x429a('0x60')][_0x429a('0x39')]({'plain':!![]});if(!_0x4511c8)throw new Error(_0x429a('0x61'));if(_0x4511c8['role']===_0x429a('0x60')){var _0x39904f=_0xb02e95[_0x429a('0x39')]({'plain':!![]});var _0x53e3c8=_0x429a('0x3a');return db['UserProfileSection'][_0x429a('0x5e')]({'where':{'name':_0x53e3c8,'userProfileId':_0x4511c8['userProfileId']},'raw':!![]})[_0x429a('0x22')](function(_0x2fcb62){if(_0x2fcb62&&_0x2fcb62['autoAssociation']===0x0){return db[_0x429a('0x62')][_0x429a('0x5f')]({'name':_0x39904f[_0x429a('0x3c')],'resourceId':_0x39904f['id'],'type':_0x2fcb62['name'],'sectionId':_0x2fcb62['id']},{})[_0x429a('0x22')](function(){return _0xb02e95;});}else{return _0xb02e95;}})[_0x429a('0x58')](function(_0x199317){logger[_0x429a('0x28')](_0x429a('0x63'),_0x199317);throw _0x199317;});}return _0xb02e95;})[_0x429a('0x22')](respondWithResult(_0x258bda,0xc9))['catch'](handleError(_0x258bda,null));};exports['update']=function(_0x26ae84,_0x2b86bd){if(_0x26ae84[_0x429a('0x64')]['id']){delete _0x26ae84['body']['id'];}return db['ChatWebsite'][_0x429a('0x5e')]({'where':{'id':_0x26ae84[_0x429a('0x5a')]['id']},'include':[{'model':db['Pause'],'as':_0x429a('0x40')}]})['then'](handleEntityNotFound(_0x2b86bd,null))[_0x429a('0x22')](saveUpdates(_0x26ae84['body'],null))[_0x429a('0x22')](respondWithResult(_0x2b86bd,null))[_0x429a('0x58')](handleError(_0x2b86bd,null));};exports[_0x429a('0x38')]=function(_0x307b79,_0xf84fc9){return db['ChatWebsite']['find']({'where':{'id':_0x307b79[_0x429a('0x5a')]['id']}})[_0x429a('0x22')](handleEntityNotFound(_0xf84fc9,null))['then'](removeEntity(_0xf84fc9,null))['catch'](handleError(_0xf84fc9,null));};exports[_0x429a('0x65')]=function(_0x491d65,_0x4c8998){return db[_0x429a('0x42')][_0x429a('0x65')]()[_0x429a('0x22')](respondWithResult(_0x4c8998,null))[_0x429a('0x58')](handleError(_0x4c8998,null));};exports[_0x429a('0x66')]=function(_0x1a76f1,_0x52cad5,_0x2091fc){if(_0x1a76f1['body']['id']){delete _0x1a76f1['body']['id'];}return db[_0x429a('0x42')]['find']({'where':{'id':_0x1a76f1[_0x429a('0x5a')]['id']}})[_0x429a('0x22')](handleEntityNotFound(_0x52cad5,null))[_0x429a('0x22')](function(_0x298444){if(_0x298444){_0x1a76f1['body'][_0x429a('0x67')]=_0x298444['id'];return db['Disposition'][_0x429a('0x5f')](_0x1a76f1['body']);}})[_0x429a('0x22')](respondWithResult(_0x52cad5,null))[_0x429a('0x58')](handleError(_0x52cad5,null));};exports[_0x429a('0x68')]=function(_0x2bd51b,_0x43241e,_0xc1831f){var _0x37154e={'raw':![],'where':{}};var _0x1d00ed={};var _0x4bd57a={'count':0x0,'rows':[]};return db[_0x429a('0x42')][_0x429a('0x69')]({'where':{'id':_0x2bd51b[_0x429a('0x5a')]['id']}})['then'](handleEntityNotFound(_0x43241e,null))['then'](function(_0x90af3f){if(_0x90af3f){_0x1d00ed['model']=_[_0x429a('0x49')](db[_0x429a('0x6a')][_0x429a('0x43')]);_0x1d00ed[_0x429a('0x48')]=_[_0x429a('0x49')](_0x2bd51b['query']);_0x1d00ed[_0x429a('0x50')]=_['intersection'](_0x1d00ed[_0x429a('0x47')],_0x1d00ed[_0x429a('0x48')]);_0x37154e[_0x429a('0x4c')]=_[_0x429a('0x4a')](_0x1d00ed['model'],qs[_0x429a('0x4b')](_0x2bd51b[_0x429a('0x48')][_0x429a('0x4b')]));_0x37154e[_0x429a('0x4c')]=_0x37154e[_0x429a('0x4c')]['length']?_0x37154e['attributes']:_0x1d00ed[_0x429a('0x47')];if(!_0x2bd51b[_0x429a('0x48')][_0x429a('0x6b')](_0x429a('0x4d'))){_0x37154e[_0x429a('0x33')]=qs['limit'](_0x2bd51b['query']['limit']);_0x37154e['offset']=qs['offset'](_0x2bd51b[_0x429a('0x48')]['offset']);}_0x37154e['order']=qs['sort'](_0x2bd51b[_0x429a('0x48')]['sort']);_0x37154e[_0x429a('0x51')]=qs['filters'](_[_0x429a('0x4f')](_0x2bd51b[_0x429a('0x48')],_0x1d00ed['filters']));_0x37154e['where'][_0x429a('0x67')]=_0x90af3f['id'];if(_0x2bd51b[_0x429a('0x48')][_0x429a('0x54')]){_0x37154e[_0x429a('0x51')]=_[_0x429a('0x52')](_0x37154e[_0x429a('0x51')],{'$or':_[_0x429a('0x41')](_0x37154e[_0x429a('0x4c')],function(_0x4149a0){var _0x482a1f={};_0x482a1f[_0x4149a0]={'$like':'%'+_0x2bd51b['query']['filter']+'%'};return _0x482a1f;})});}_0x37154e=_['merge']({},_0x37154e,_0x2bd51b[_0x429a('0x55')]);return db[_0x429a('0x6a')]['count']({'where':_0x37154e[_0x429a('0x51')]})[_0x429a('0x22')](function(_0x5f34a2){_0x4bd57a[_0x429a('0x32')]=_0x5f34a2;if(_0x2bd51b[_0x429a('0x48')][_0x429a('0x5c')]){_0x37154e[_0x429a('0x5d')]=[{'all':!![]}];}return db['Disposition'][_0x429a('0x56')](_0x37154e);})['then'](function(_0x5b9f9a){_0x4bd57a[_0x429a('0x57')]=_0x5b9f9a;return _0x4bd57a;});}})[_0x429a('0x22')](respondWithFilteredResult(_0x43241e,_0x37154e))[_0x429a('0x58')](handleError(_0x43241e,null));};exports[_0x429a('0x6c')]=function(_0x4e0262,_0x5d1e01,_0x1c616f){return db[_0x429a('0x42')][_0x429a('0x5e')]({'where':{'id':_0x4e0262['params']['id']}})[_0x429a('0x22')](handleEntityNotFound(_0x5d1e01,null))[_0x429a('0x22')](function(_0x35ffe9){if(_0x35ffe9){return _0x35ffe9['removeDispositions'](_0x4e0262['query'][_0x429a('0x6d')]);}})[_0x429a('0x22')](respondWithStatusCode(_0x5d1e01,null))[_0x429a('0x58')](handleError(_0x5d1e01,null));};exports[_0x429a('0x6e')]=function(_0x351ab1,_0x2452df,_0x25c2be){if(_0x351ab1['body']['id']){delete _0x351ab1['body']['id'];}return db['ChatWebsite'][_0x429a('0x5e')]({'where':{'id':_0x351ab1[_0x429a('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2452df,null))[_0x429a('0x22')](function(_0x550d5b){if(_0x550d5b){_0x351ab1['body'][_0x429a('0x67')]=_0x550d5b['id'];return db[_0x429a('0x6f')][_0x429a('0x5f')](_0x351ab1['body']);}})[_0x429a('0x22')](respondWithResult(_0x2452df,null))['catch'](handleError(_0x2452df,null));};exports[_0x429a('0x70')]=function(_0x37a0a2,_0x25e212,_0x52e596){var _0x3ea2ac={'raw':![],'where':{}};var _0x3a5f29={};var _0x4a2d9f={'count':0x0,'rows':[]};return db[_0x429a('0x42')][_0x429a('0x69')]({'where':{'id':_0x37a0a2['params']['id']}})[_0x429a('0x22')](handleEntityNotFound(_0x25e212,null))[_0x429a('0x22')](function(_0x357054){if(_0x357054){_0x3a5f29[_0x429a('0x47')]=_['keys'](db[_0x429a('0x6f')][_0x429a('0x43')]);_0x3a5f29[_0x429a('0x48')]=_['keys'](_0x37a0a2[_0x429a('0x48')]);_0x3a5f29[_0x429a('0x50')]=_[_0x429a('0x4a')](_0x3a5f29[_0x429a('0x47')],_0x3a5f29['query']);_0x3ea2ac[_0x429a('0x4c')]=_['intersection'](_0x3a5f29[_0x429a('0x47')],qs[_0x429a('0x4b')](_0x37a0a2[_0x429a('0x48')]['fields']));_0x3ea2ac[_0x429a('0x4c')]=_0x3ea2ac[_0x429a('0x4c')][_0x429a('0x5b')]?_0x3ea2ac[_0x429a('0x4c')]:_0x3a5f29[_0x429a('0x47')];if(!_0x37a0a2[_0x429a('0x48')][_0x429a('0x6b')](_0x429a('0x4d'))){_0x3ea2ac[_0x429a('0x33')]=qs['limit'](_0x37a0a2[_0x429a('0x48')]['limit']);_0x3ea2ac[_0x429a('0x30')]=qs['offset'](_0x37a0a2[_0x429a('0x48')][_0x429a('0x30')]);}_0x3ea2ac[_0x429a('0x71')]=qs[_0x429a('0x4e')](_0x37a0a2['query'][_0x429a('0x4e')]);_0x3ea2ac[_0x429a('0x51')]=qs[_0x429a('0x50')](_[_0x429a('0x4f')](_0x37a0a2[_0x429a('0x48')],_0x3a5f29[_0x429a('0x50')]));_0x3ea2ac[_0x429a('0x51')][_0x429a('0x67')]=_0x357054['id'];if(_0x37a0a2[_0x429a('0x48')][_0x429a('0x54')]){_0x3ea2ac[_0x429a('0x51')]=_[_0x429a('0x52')](_0x3ea2ac[_0x429a('0x51')],{'$or':_[_0x429a('0x41')](_0x3ea2ac[_0x429a('0x4c')],function(_0x3884dd){var _0x3f46f7={};_0x3f46f7[_0x3884dd]={'$like':'%'+_0x37a0a2[_0x429a('0x48')][_0x429a('0x54')]+'%'};return _0x3f46f7;})});}_0x3ea2ac=_['merge']({},_0x3ea2ac,_0x37a0a2[_0x429a('0x55')]);return db[_0x429a('0x6f')][_0x429a('0x32')]({'where':_0x3ea2ac[_0x429a('0x51')]})[_0x429a('0x22')](function(_0x25e644){_0x4a2d9f[_0x429a('0x32')]=_0x25e644;if(_0x37a0a2['query']['includeAll']){_0x3ea2ac[_0x429a('0x5d')]=[{'all':!![]}];}return db[_0x429a('0x6f')][_0x429a('0x56')](_0x3ea2ac);})[_0x429a('0x22')](function(_0x16be01){_0x4a2d9f['rows']=_0x16be01;return _0x4a2d9f;});}})[_0x429a('0x22')](respondWithFilteredResult(_0x25e212,_0x3ea2ac))[_0x429a('0x58')](handleError(_0x25e212,null));};exports['removeAnswers']=function(_0x2e7cf5,_0x2eb14a,_0x28a353){return db[_0x429a('0x42')][_0x429a('0x5e')]({'where':{'id':_0x2e7cf5[_0x429a('0x5a')]['id']}})[_0x429a('0x22')](handleEntityNotFound(_0x2eb14a,null))['then'](function(_0x53576d){if(_0x53576d){return _0x53576d['removeAnswers'](_0x2e7cf5[_0x429a('0x48')]['ids']);}})['then'](respondWithStatusCode(_0x2eb14a,null))['catch'](handleError(_0x2eb14a,null));};exports[_0x429a('0x72')]=function(_0x3fd789,_0x49fad9,_0x274093){_0x3fd789[_0x429a('0x64')][_0x429a('0x73')]=_0x3fd789['file'][_0x429a('0x74')];return db[_0x429a('0x42')][_0x429a('0x5e')]({'where':{'id':_0x3fd789['params']['id']}})[_0x429a('0x22')](handleEntityNotFound(_0x49fad9,null))[_0x429a('0x22')](saveUpdates(_0x3fd789[_0x429a('0x64')],null))[_0x429a('0x22')](respondWithResult(_0x49fad9,null))[_0x429a('0x58')](handleError(_0x49fad9,null));};exports[_0x429a('0x75')]=function(_0x3630ce,_0x45b9fe,_0x5e9186){_0x3630ce[_0x429a('0x64')][_0x429a('0x76')]=_0x3630ce[_0x429a('0x77')]['filename'];return db[_0x429a('0x42')]['find']({'where':{'id':_0x3630ce[_0x429a('0x5a')]['id']}})[_0x429a('0x22')](handleEntityNotFound(_0x45b9fe,null))[_0x429a('0x22')](saveUpdates(_0x3630ce[_0x429a('0x64')],null))[_0x429a('0x22')](respondWithResult(_0x45b9fe,null))[_0x429a('0x58')](handleError(_0x45b9fe,null));};exports[_0x429a('0x78')]=function(_0x4b89b0,_0x3f6974,_0x57eb55){_0x4b89b0[_0x429a('0x64')]['customerAvatar']=_0x4b89b0[_0x429a('0x77')]['filename'];return db[_0x429a('0x42')][_0x429a('0x5e')]({'where':{'id':_0x4b89b0[_0x429a('0x5a')]['id']}})[_0x429a('0x22')](handleEntityNotFound(_0x3f6974,null))['then'](saveUpdates(_0x4b89b0[_0x429a('0x64')],null))[_0x429a('0x22')](respondWithResult(_0x3f6974,null))[_0x429a('0x58')](handleError(_0x3f6974,null));};exports[_0x429a('0x79')]=function(_0x37e7fc,_0xf07fa8,_0x2d002b){_0x37e7fc[_0x429a('0x64')]['systemAvatar']=_0x37e7fc['file'][_0x429a('0x74')];return db[_0x429a('0x42')][_0x429a('0x5e')]({'where':{'id':_0x37e7fc['params']['id']}})['then'](handleEntityNotFound(_0xf07fa8,null))[_0x429a('0x22')](saveUpdates(_0x37e7fc[_0x429a('0x64')],null))[_0x429a('0x22')](respondWithResult(_0xf07fa8,null))[_0x429a('0x58')](handleError(_0xf07fa8,null));};exports[_0x429a('0x7a')]=function(_0x4b3813,_0x453681,_0x2b1b99){var _0x233f4b=path[_0x429a('0x7b')](config[_0x429a('0x7c')],_0x429a('0x7d'));var _0x122562={'where':{'id':_0x4b3813[_0x429a('0x5a')]['id']},'attributes':['id',_0x429a('0x73')],'raw':!![]};var _0x5b6bef=![];return require(_0x429a('0x7e'))[_0x429a('0x7f')]()[_0x429a('0x22')](function(_0x1e167e){if(_0x1e167e){_0x5b6bef=_0x1e167e[_0x429a('0x80')];}})[_0x429a('0x22')](function(){return db[_0x429a('0x42')][_0x429a('0x5e')](_0x122562);})[_0x429a('0x22')](handleEntityNotFound(_0x453681,null))['then'](function(_0x10e5e3){if(_0x10e5e3){if(!_[_0x429a('0x81')](_0x10e5e3[_0x429a('0x73')])){if(fs['existsSync'](path['join'](config[_0x429a('0x7c')],_0x429a('0x82'),_0x10e5e3['sitepic']))&&_0x5b6bef){_0x233f4b=path[_0x429a('0x7b')](config['root'],_0x429a('0x82'),_0x10e5e3['sitepic']);}}return _0x453681[_0x429a('0x83')](_0x233f4b);}})[_0x429a('0x58')](handleError(_0x453681,null));};exports[_0x429a('0x84')]=function(_0xfbba29,_0x25d6b8,_0x48363f){var _0x5b594c=path[_0x429a('0x7b')](config[_0x429a('0x7c')],_0x429a('0x85'));var _0x2f7b73={'where':{'id':_0xfbba29[_0x429a('0x5a')]['id']},'attributes':['id',_0x429a('0x76')],'raw':!![]};return db['ChatWebsite'][_0x429a('0x5e')](_0x2f7b73)['then'](handleEntityNotFound(_0x25d6b8,null))[_0x429a('0x22')](function(_0x1ac3b9){if(_0x1ac3b9){if(!_[_0x429a('0x81')](_0x1ac3b9[_0x429a('0x76')])){if(fs['existsSync'](path[_0x429a('0x7b')](config[_0x429a('0x7c')],_0x429a('0x86'),_0x1ac3b9[_0x429a('0x76')]))){_0x5b594c=path['join'](config['root'],_0x429a('0x86'),_0x1ac3b9['agentAvatar']);}}return _0x25d6b8['download'](_0x5b594c);}})[_0x429a('0x58')](handleError(_0x25d6b8,null));};exports[_0x429a('0x87')]=function(_0x6f2e6d,_0x2b9c73,_0x518d4a){var _0xa63bb0=path['join'](config[_0x429a('0x7c')],'server/files/images/avatars/customer_avatar.png');var _0x4d4abc={'where':{'id':_0x6f2e6d['params']['id']},'attributes':['id',_0x429a('0x88'),_0x429a('0x89')],'raw':!![]};return db['ChatWebsite'][_0x429a('0x5e')](_0x4d4abc)[_0x429a('0x22')](handleEntityNotFound(_0x2b9c73,null))[_0x429a('0x22')](function(_0x4dfbe1){if(_0x4dfbe1){if(!_[_0x429a('0x81')](_0x4dfbe1[_0x429a('0x88')])){if(fs[_0x429a('0x8a')](path['join'](config[_0x429a('0x7c')],'server/files/images/avatars/',_0x4dfbe1[_0x429a('0x88')]))&&_0x4dfbe1[_0x429a('0x89')]){_0xa63bb0=path['join'](config[_0x429a('0x7c')],_0x429a('0x86'),_0x4dfbe1[_0x429a('0x88')]);}}return _0x2b9c73[_0x429a('0x83')](_0xa63bb0);}})['catch'](handleError(_0x2b9c73,null));};exports[_0x429a('0x8b')]=function(_0x25b836,_0x26b7e3,_0x33a0e4){var _0x428b55=path[_0x429a('0x7b')](config[_0x429a('0x7c')],_0x429a('0x8c'));var _0x2126d5={'where':{'id':_0x25b836[_0x429a('0x5a')]['id']},'attributes':['id',_0x429a('0x8d')],'raw':!![]};return db[_0x429a('0x42')][_0x429a('0x5e')](_0x2126d5)[_0x429a('0x22')](handleEntityNotFound(_0x26b7e3,null))['then'](function(_0x96967f){if(_0x96967f){if(!_[_0x429a('0x81')](_0x96967f[_0x429a('0x8d')])){if(fs[_0x429a('0x8a')](path[_0x429a('0x7b')](config[_0x429a('0x7c')],'server/files/images/avatars/',_0x96967f[_0x429a('0x8d')]))){_0x428b55=path[_0x429a('0x7b')](config[_0x429a('0x7c')],_0x429a('0x86'),_0x96967f[_0x429a('0x8d')]);}}return _0x26b7e3[_0x429a('0x83')](_0x428b55);}})['catch'](handleError(_0x26b7e3,null));};exports['notify']=function(_0x41598b,_0x2b98cd,_0x1906cb){var _0x3f3765=require(_0x429a('0x8e'));var _0x2cd807=new _0x3f3765();var _0x75f1e3=_0x2cd807[_0x429a('0x8f')](_0x41598b[_0x429a('0x90')]['user-agent'])['getResult']();var _0x4e6fc9={'body':_0x41598b['body'],'channel':_0x429a('0x91')};var _0x5cc620=[];var _0x18872a=[];var _0x54c290={};var _0x39d524=![];return db[_0x429a('0x92')][_0x429a('0x65')]()[_0x429a('0x22')](function(_0x1f36ea){if(!_0x1f36ea){throw new db[(_0x429a('0x93'))][(_0x429a('0x94'))](_0x429a('0x95'));}_0x5cc620=_[_0x429a('0x96')](_[_0x429a('0x49')](_0x1f36ea),[_0x429a('0x97'),'updatedAt']);_0x18872a=_[_0x429a('0x96')](_[_0x429a('0x49')](_0x1f36ea),[_0x429a('0x97'),_0x429a('0x98'),'CompanyId',_0x429a('0x99')]);if(_0x41598b[_0x429a('0x64')]['id']){delete _0x41598b[_0x429a('0x64')]['id'];}if(_[_0x429a('0x81')](_0x41598b[_0x429a('0x64')][_0x429a('0x9a')])){throw new db[(_0x429a('0x93'))][(_0x429a('0x94'))](_0x429a('0x9b'));}if(_[_0x429a('0x81')](_0x41598b[_0x429a('0x64')][_0x429a('0x64')])||_0x41598b[_0x429a('0x64')][_0x429a('0x64')]===''){throw new db['Sequelize']['ValidationError'](_0x429a('0x9c'));}if(_['isNil'](_0x41598b[_0x429a('0x64')][_0x429a('0x9d')])){throw new db[(_0x429a('0x93'))]['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x18872a);}if(!_[_0x429a('0x9e')](_0x18872a,_0x41598b[_0x429a('0x64')][_0x429a('0x9d')])){throw new db[(_0x429a('0x93'))][(_0x429a('0x94'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x18872a);}_0x54c290[_0x41598b[_0x429a('0x64')][_0x429a('0x9d')]]=_0x41598b['body'][_0x429a('0x9a')];})['then'](function(){return db[_0x429a('0x42')]['find']({'where':{'id':_0x41598b[_0x429a('0x5a')]['id']},'include':[{'model':db[_0x429a('0x9f')],'as':_0x429a('0xa0'),'include':[{'model':db[_0x429a('0x92')],'as':'Contacts','where':_0x54c290,'limit':0x1,'order':[[_0x429a('0x98'),'DESC']]}]},{'model':db[_0x429a('0xa1')],'as':_0x429a('0xa2')}]});})[_0x429a('0x22')](handleEntityNotFound(_0x2b98cd,null))[_0x429a('0x22')](function(_0x3da583){if(_0x3da583&&_0x3da583[_0x429a('0xa0')]){_0x4e6fc9[_0x429a('0xa3')]=_0x3da583;_0x4e6fc9['applications']=_0x3da583[_0x429a('0xa2')];_0x4e6fc9[_0x429a('0xa4')]=_0x3da583[_0x429a('0xa0')];_0x4e6fc9[_0x429a('0xa5')]=_[_0x429a('0xa6')](_0x4e6fc9['applications'],['priority'],[_0x429a('0xa7')]);if(_0x4e6fc9[_0x429a('0xa3')][_0x429a('0xa2')]){delete _0x4e6fc9[_0x429a('0xa3')][_0x429a('0xa2')];}if(_0x4e6fc9['account'][_0x429a('0xa0')]&&_0x4e6fc9[_0x429a('0xa3')][_0x429a('0xa0')][_0x429a('0xa8')]['length']){return _0x4e6fc9[_0x429a('0xa3')][_0x429a('0xa0')]['Contacts'][0x0];}var _0x2020fc=_[_0x429a('0x1a')](_0x41598b['body'],{'firstName':_0x41598b[_0x429a('0x64')][_0x429a('0x9a')],'ListId':_0x3da583[_0x429a('0x99')]});_0x2020fc[_0x41598b[_0x429a('0x64')][_0x429a('0x9d')]]=_0x41598b[_0x429a('0x64')]['from'];return db['CmContact'][_0x429a('0x5f')](_0x2020fc,{'fields':_0x5cc620,'raw':!![]});}})[_0x429a('0x22')](handleEntityNotFound(_0x2b98cd,null))[_0x429a('0x22')](function(_0x29f3b7){_0x4e6fc9[_0x429a('0xa9')]=_0x29f3b7;var _0x231284=_0x41598b[_0x429a('0x64')]['customerIp'];if(_0x41598b[_0x429a('0x90')]['cf-connecting-ip']){_0x231284=_0x41598b[_0x429a('0x90')]['cf-connecting-ip'];}else if(_0x41598b['headers'][_0x429a('0xaa')]){_0x231284=_[_0x429a('0xab')](_0x41598b[_0x429a('0x90')][_0x429a('0xaa')]['split'](','));}if(_0x29f3b7){var _0x2024af={'ContactId':_0x29f3b7['id'],'ChatWebsiteId':_0x41598b['params']['id'],'from':(_0x29f3b7['firstName']||'')+'\x20'+(_0x29f3b7[_0x429a('0xac')]||''),'customerIp':_0x231284,'customerPort':_0x41598b['headers'][_0x429a('0xad')]?_0x41598b[_0x429a('0x90')][_0x429a('0xad')]:null,'referer':_0x41598b[_0x429a('0x64')][_0x429a('0xae')],'browserName':_0x75f1e3[_0x429a('0xaf')][_0x429a('0x3c')]&&_0x75f1e3[_0x429a('0xaf')][_0x429a('0xb0')]?util[_0x429a('0xb1')](_0x429a('0xb2'),_0x75f1e3[_0x429a('0xaf')]['name'],_0x75f1e3['browser'][_0x429a('0xb0')]):'unknown','browserVersion':_0x75f1e3[_0x429a('0xaf')][_0x429a('0xb0')]||_0x429a('0xb3'),'osName':util[_0x429a('0xb1')]('%s\x20%s',_0x75f1e3['os'][_0x429a('0x3c')],_0x75f1e3['os'][_0x429a('0xb0')]),'osVersion':_0x75f1e3['os'][_0x429a('0xb0')],'deviceModel':_0x75f1e3[_0x429a('0xb4')][_0x429a('0x47')]&&_0x75f1e3[_0x429a('0xb4')][_0x429a('0xb5')]?util['format'](_0x429a('0xb6'),_0x75f1e3['device']['model'],_0x75f1e3['device']['vendor'],_0x75f1e3['device'][_0x429a('0x45')]):null,'deviceVendor':_0x75f1e3[_0x429a('0xb4')][_0x429a('0xb5')],'deviceType':_0x75f1e3[_0x429a('0xb4')][_0x429a('0x45')],'formData':JSON['stringify'](_0x41598b['body'])};var _0x1617c2={'ChatWebsiteId':_0x41598b[_0x429a('0x5a')]['id'],'closed':![]};if(_0x41598b['body']['threadId']){_0x1617c2['threadId']=_0x41598b['body']['threadId'];return db[_0x429a('0xb7')][_0x429a('0x5e')]({'where':_0x1617c2})[_0x429a('0x22')](function(_0x5b5a30){if(_0x5b5a30){return[_0x5b5a30,![]];}_0x2024af['threadId']=_0x41598b[_0x429a('0x64')][_0x429a('0xb8')];_0x2024af[_0x429a('0xb9')]=_0x41598b['body'][_0x429a('0xb9')];return db[_0x429a('0xb7')][_0x429a('0x5f')](_0x2024af)[_0x429a('0x22')](function(_0x2b2c67){return[_0x2b2c67,!![]];});});}_0x1617c2['ContactId']=_0x29f3b7['id'];if(_0x41598b[_0x429a('0x64')][_0x429a('0xba')]&&_0x41598b[_0x429a('0x64')]['interaction']['id']){_0x1617c2['id']=_0x41598b[_0x429a('0x64')]['interaction']['id'];return db[_0x429a('0xb7')][_0x429a('0x5e')]({'where':_0x1617c2})['then'](function(_0x27fe45){if(_0x27fe45){return[_0x27fe45,![]];}return db[_0x429a('0xb7')][_0x429a('0x5f')](_0x2024af)[_0x429a('0x22')](function(_0x2a4bb3){return[_0x2a4bb3,!![]];});});}return db[_0x429a('0xb7')][_0x429a('0x5f')](_0x2024af)[_0x429a('0x22')](function(_0xafb7ef){return[_0xafb7ef,!![]];});}})[_0x429a('0xbb')](function(_0x39b75a,_0x29e05b){if(_0x39b75a){_0x39d524=_0x29e05b;if(!_0x29e05b){var _0x22e508={'from':(_0x4e6fc9[_0x429a('0xa9')]['firstName']||'')+'\x20'+(_0x4e6fc9[_0x429a('0xa9')]['lastName']||'')};if(_0x41598b[_0x429a('0x64')][_0x429a('0xb8')]&&_0x41598b[_0x429a('0x64')][_0x429a('0xbc')]&&_0x41598b[_0x429a('0x64')][_0x429a('0xb8')]!=_0x41598b[_0x429a('0x64')]['messageId']){_0x22e508[_0x429a('0xb8')]=_0x41598b[_0x429a('0x64')][_0x429a('0xbc')];}return _0x39b75a[_0x429a('0x37')](_0x22e508);}else{return _0x39b75a;}}})[_0x429a('0x22')](function(_0x507d37){_0x4e6fc9[_0x429a('0xba')]=_0x507d37['get']({'plain':!![]});_0x4e6fc9[_0x429a('0xba')]['created']=_0x39d524;if(_0x4e6fc9[_0x429a('0xba')][_0x429a('0xbd')]){if(_0x4e6fc9['account'][_0x429a('0xbe')]){_0x4e6fc9[_0x429a('0xa5')][_0x429a('0xbf')]({'id':0x0,'priority':_0x4e6fc9['applications'][_0x429a('0x5b')]+0x1,'app':'close','appdata':_0x429a('0xc0'),'interval':'*,*,*,*'});}}return db[_0x429a('0xc1')][_0x429a('0x5f')]({'body':_0x41598b[_0x429a('0x64')][_0x429a('0x64')],'ChatWebsiteId':_0x41598b['params']['id'],'ChatInteractionId':_0x507d37['id'],'direction':'in','ContactId':_0x4e6fc9[_0x429a('0xa9')]['id'],'AttachmentId':_0x41598b[_0x429a('0x64')][_0x429a('0xc2')]});})[_0x429a('0x22')](function(_0x1d573a){_0x4e6fc9[_0x429a('0x2b')]=_0x1d573a;if(_0x4e6fc9[_0x429a('0xba')]['UserId']){return db[_0x429a('0xc3')][_0x429a('0x5e')]({'attributes':['id','name'],'where':{'id':_0x4e6fc9[_0x429a('0xba')][_0x429a('0xc4')]}})[_0x429a('0x22')](function(_0x86a66a){if(_0x86a66a){_0x4e6fc9[_0x429a('0xa5')][_0x429a('0xc5')]({'id':0x0,'priority':0x0,'app':_0x429a('0xc6'),'appdata':_0x86a66a['name']+','+(_0x4e6fc9[_0x429a('0xa3')][_0x429a('0xc7')]||0xa),'interval':_0x429a('0xc8')});_0x4e6fc9[_0x429a('0xc9')]=!![];}return respondWithRpcPromise(_0x429a('0xca'),'startRouting',_0x4e6fc9);});}return respondWithRpcPromise(_0x429a('0xca'),_0x429a('0xcb'),_0x4e6fc9);})['then'](function(_0x52a9d2){respondWithRpcPromise(_0x429a('0xcc'),_0x429a('0xcc'),{'event':'notify','message':_0x52a9d2},client9002);return _0x52a9d2;})[_0x429a('0x22')](respondWithResult(_0x2b98cd,null))[_0x429a('0x58')](handleError(_0x2b98cd,null));};exports[_0x429a('0xcd')]=function(_0x17046b,_0x203a58,_0x4ef240){var _0x1cca5d,_0x4d26bf,_0x4d4f4f;var _0xd9b336=[];var _0x5a3257=[];var _0x322269={};var _0x454b5e=_0x17046b[_0x429a('0xce')]||[];var _0xd52f2e=[];var _0x56960d;return db[_0x429a('0x92')][_0x429a('0x65')]()['then'](function(_0x1c6b15){if(!_0x1c6b15){throw new db[(_0x429a('0x93'))][(_0x429a('0x94'))](_0x429a('0x95'));}_0x5a3257=_[_0x429a('0x96')](_['keys'](_0x1c6b15),['createdAt',_0x429a('0x98')]);_0xd9b336=_[_0x429a('0x96')](_[_0x429a('0x49')](_0x1c6b15),[_0x429a('0x97'),_0x429a('0x98'),_0x429a('0xcf'),_0x429a('0x99')]);if(_0x17046b[_0x429a('0x64')]['id']){delete _0x17046b[_0x429a('0x64')]['id'];}if(_[_0x429a('0x81')](_0x17046b['body']['from'])){throw _0x203a58[_0x429a('0x2e')](0x1f4)[_0x429a('0x3d')](new db[(_0x429a('0x93'))][(_0x429a('0x94'))]('from\x20is\x20mandatory'));}if(_[_0x429a('0x81')](_0x17046b['body'][_0x429a('0x64')])||_0x17046b[_0x429a('0x64')]['body']===''){throw _0x203a58[_0x429a('0x2e')](0x1f4)[_0x429a('0x3d')](new db[(_0x429a('0x93'))][(_0x429a('0x94'))](_0x429a('0x9c')));}if(_[_0x429a('0x81')](_0x17046b[_0x429a('0x64')]['mapKeyOffline'])){throw _0x203a58[_0x429a('0x2e')](0x1f4)[_0x429a('0x3d')](new db['Sequelize'][(_0x429a('0x94'))]('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0xd9b336));}if(!_['includes'](_0xd9b336,_0x17046b[_0x429a('0x64')]['mapKeyOffline'])){throw _0x203a58[_0x429a('0x2e')](0x1f4)['send'](new db[(_0x429a('0x93'))][(_0x429a('0x94'))](_0x429a('0xd0')+_0xd9b336));}_0x322269[_0x17046b[_0x429a('0x64')][_0x429a('0xd1')]]=_0x17046b['body']['from'];})[_0x429a('0x22')](function(){return db[_0x429a('0x42')][_0x429a('0x5e')]({'where':{'id':_0x17046b['params']['id']},'include':[{'model':db[_0x429a('0x9f')],'as':_0x429a('0xa0')},{'model':db[_0x429a('0xd2')],'as':_0x429a('0xd2')}]});})[_0x429a('0x22')](handleEntityNotFound(_0x203a58,null))[_0x429a('0x22')](function(_0x3d1b1c){if(_0x3d1b1c&&_0x3d1b1c[_0x429a('0xa0')]){_0x4d26bf=_0x3d1b1c;var _0x44f23f=_[_0x429a('0x1a')](_0x17046b[_0x429a('0x64')],{'firstName':_0x17046b[_0x429a('0x64')]['from'],'phone':_0x17046b[_0x429a('0x64')][_0x429a('0x9a')],'ListId':_0x3d1b1c[_0x429a('0x99')]});_0x44f23f[_0x17046b[_0x429a('0x64')]['mapKeyOffline']]=_0x17046b[_0x429a('0x64')][_0x429a('0x9a')];return db[_0x429a('0x92')][_0x429a('0xd3')]({'where':_0x322269,'defaults':_0x44f23f});}})['spread'](function(_0xc28dd6){if(_0xc28dd6){_0x4d4f4f=_0xc28dd6;var _0x2169a3=fs[_0x429a('0xd4')](path['join'](config['root'],_0x429a('0xd5')),_0x429a('0xd6'));var _0x5a4955=ejs['render'](_0x2169a3,{'body':_[_0x429a('0xd7')](_0x17046b[_0x429a('0x64')][_0x429a('0x64')]),'bodyTitle':_0x4d26bf['offlineMessageBody']});return db[_0x429a('0xd8')][_0x429a('0x5f')]({'body':_0x5a4955,'ContactId':_0xc28dd6['id'],'ChatWebsiteId':_0x4d26bf['id']});}})[_0x429a('0x22')](function(_0x40702e){_0x56960d=_0x40702e;if(_0x454b5e['length']){var _0x3c5dc7=_0x454b5e[_0x429a('0x41')](function(_0x292d19){return{'name':_0x292d19[_0x429a('0xd9')],'basename':_0x292d19[_0x429a('0x74')],'type':_0x292d19[_0x429a('0xda')],'ChatOfflineMessageId':_0x40702e['id']};});_0xd52f2e=_0x3c5dc7[_0x429a('0x41')](_0x493876=>{var _0x332dbf={'filename':_0x493876['name'],'path':path[_0x429a('0x7b')](config[_0x429a('0x7c')],_0x429a('0xdb'),'files',_0x429a('0xdc'),_0x429a('0xdd'),_0x493876[_0x429a('0xde')])};return _0x332dbf;});if(!_0x4d26bf['openNewInteraction']){return db[_0x429a('0xdf')]['transaction'](function(_0x2aeaaf){return db[_0x429a('0xe0')][_0x429a('0xe1')](_0x3c5dc7,{'transaction':_0x2aeaaf});});}}})[_0x429a('0x22')](function(){if(_0x56960d){_0x1cca5d=_0x56960d;return db[_0x429a('0xd2')]['findOne']({'where':{'active':!![]},'include':[{'model':db[_0x429a('0xe2')],'as':_0x429a('0xe3'),'raw':!![]}]});}})[_0x429a('0x22')](function(_0x5af6f0){if(_0x5af6f0&&_0x5af6f0[_0x429a('0xe3')]&&_0x4d26bf['forwardOffline']&&_0x4d26bf[_0x429a('0xe4')]){var _0x4d46a0={'tls':{'rejectUnauthorized':![]}};if(_0x5af6f0[_0x429a('0xe3')][_0x429a('0xe5')]){_0x4d46a0[_0x429a('0xe5')]=_0x5af6f0[_0x429a('0xe3')][_0x429a('0xe5')];}else{_0x4d46a0['host']=_0x5af6f0[_0x429a('0xe3')][_0x429a('0xe6')];_0x4d46a0[_0x429a('0xe7')]=_0x5af6f0[_0x429a('0xe3')][_0x429a('0xe7')];_0x4d46a0[_0x429a('0xe8')]=_0x5af6f0[_0x429a('0xe3')][_0x429a('0xe8')];}if(_0x5af6f0[_0x429a('0xe3')][_0x429a('0xe9')]){_0x4d46a0[_0x429a('0xea')]={'user':_0x5af6f0[_0x429a('0xe3')][_0x429a('0x60')],'pass':_0x5af6f0[_0x429a('0xe3')][_0x429a('0xeb')]};}return respondWithRpcPromise(_0x429a('0xec'),_0x429a('0xed'),{'account':_0x4d46a0,'message':{'from':util[_0x429a('0xb1')](_0x429a('0xee'),_0x5af6f0[_0x429a('0x3c')],_0x5af6f0[_0x429a('0xef')]||_0x5af6f0['Smtp'][_0x429a('0x60')]),'to':_0x4d26bf[_0x429a('0xe4')],'subject':_0x4d26bf['offlineMessageSubject'],'html':_0x1cca5d[_0x429a('0x64')],'attachments':_0xd52f2e}},client9003)[_0x429a('0x22')](function(){return _0x1cca5d;})[_0x429a('0x58')](function(_0x10caef){console[_0x429a('0x28')](_0x10caef);});}})[_0x429a('0x22')](function(){if(_0x4d26bf&&_0x4d26bf[_0x429a('0xf0')]&&_0x4d26bf[_0x429a('0xf1')]){var _0x410b38=[];if(_0x454b5e['length']){_0x410b38=_0x454b5e['map'](function(_0x525573){return{'name':_0x525573['originalname'],'basename':_0x525573['filename'],'type':_0x525573[_0x429a('0xda')],'ChatOfflineMessageId':_0x56960d['id']};});}var _0x3eded1;if(!_[_0x429a('0x81')](_0x4d26bf[_0x429a('0xf2')])){var _0x515f08=_[_0x429a('0x41')](_0x17046b[_0x429a('0x64')],function(_0x37d41e){return _0x37d41e;});var _0x1dbbc3=_[_0x429a('0xf3')](_0x515f08)[0x0];var _0x150572=_[_0x429a('0xf4')](_0x1dbbc3,function(_0x2661a7){return _0x2661a7;});_0x3eded1=_0x150572[0x1][_0x4d26bf[_0x429a('0xf2')]];}var _0x4664c5={'from':_0x4d4f4f['email'],'firstName':_0x4d4f4f[_0x429a('0xf5')],'lastName':_0x4d4f4f[_0x429a('0xac')],'mapKey':_0x429a('0xef'),'message':{'from':_0x4d4f4f['email'],'to':_0x4d26bf[_0x429a('0xd2')][_0x429a('0xef')],'cc':'','subject':_['isNil'](_0x3eded1)?_0x4d26bf[_0x429a('0xf6')]:_0x3eded1,'messageId':'','sentAt':new Date(),'attach':_0x410b38[_0x429a('0x5b')],'attachments':_0x410b38,'originChannel':_0x429a('0xf7'),'ChatWebsiteId':_0x4d26bf['id'],'ChatOfflineMessageId':_0x1cca5d['id'],'originTo':_0x4d26bf[_0x429a('0xd2')][_0x429a('0xef')]},'body':_0x1cca5d[_0x429a('0x64')]};var _0x3b1583={'account':{'id':_0x4d26bf[_0x429a('0xf1')]},'body':_0x4664c5,'log':_0x429a('0xf8')};return respondWithRpcPromise('NotifyMailAccount',_0x429a('0xf9'),_0x3b1583,client9001)[_0x429a('0x22')](function(){return _0x1cca5d;})[_0x429a('0x58')](function(_0x4e5baa){console[_0x429a('0x28')](_0x4e5baa);});}return;})[_0x429a('0x22')](function(){if(_0x1cca5d){return _0x1cca5d;}})[_0x429a('0x22')](respondWithResult(_0x203a58,null))[_0x429a('0x58')](function(_0x55a0ea){console[_0x429a('0x28')](_0x429a('0x58'),_0x55a0ea);for(var _0x15966a of _0x454b5e){var _0x383c2e=path[_0x429a('0x7b')](config[_0x429a('0x7c')],_0x429a('0xdb'),_0x429a('0xce'),_0x429a('0xdc'),_0x429a('0xdd'),_0x15966a[_0x429a('0x74')]);fs_extra[_0x429a('0xfa')](_0x383c2e)['catch'](function(_0x517482){console[_0x429a('0x28')](_0x429a('0xfb'),_0x383c2e,_0x517482);});}});};exports[_0x429a('0xfc')]=function(_0x31473d,_0xa902bc,_0x1780a0){return db[_0x429a('0xb7')][_0x429a('0x5e')]({'where':{'id':_0x31473d[_0x429a('0x5a')]['id']}})['then'](handleEntityNotFound(_0xa902bc,null))[_0x429a('0x22')](function(_0x3c6e5d){if(_0x3c6e5d){return _0x3c6e5d[_0x429a('0xfc')](_0x31473d[_0x429a('0x64')][_0x429a('0x6d')],_[_0x429a('0xfd')](_0x31473d[_0x429a('0x64')],[_0x429a('0x6d'),'id'])||{});}})[_0x429a('0x22')](respondWithResult(_0xa902bc,null))[_0x429a('0x58')](handleError(_0xa902bc,null));};exports['getInteractions']=function(_0x280052,_0x28ac2e,_0x47b88a){var _0x554611={'raw':![],'where':{}};var _0x12803e={};var _0x1b2400={'count':0x0,'rows':[]};return db[_0x429a('0x42')][_0x429a('0x69')]({'where':{'id':_0x280052[_0x429a('0x5a')]['id']}})[_0x429a('0x22')](handleEntityNotFound(_0x28ac2e,null))['then'](function(_0xf4110d){if(_0xf4110d){_0x12803e[_0x429a('0x47')]=_[_0x429a('0x49')](db['ChatInteraction'][_0x429a('0x43')]);_0x12803e[_0x429a('0x48')]=_[_0x429a('0x49')](_0x280052[_0x429a('0x48')]);_0x12803e[_0x429a('0x50')]=_[_0x429a('0x4a')](_0x12803e[_0x429a('0x47')],_0x12803e['query']);_0x554611['attributes']=_[_0x429a('0x4a')](_0x12803e['model'],qs['fields'](_0x280052['query'][_0x429a('0x4b')]));_0x554611['attributes']=_0x554611[_0x429a('0x4c')]['length']?_0x554611[_0x429a('0x4c')]:_0x12803e[_0x429a('0x47')];if(!_0x280052[_0x429a('0x48')][_0x429a('0x6b')](_0x429a('0x4d'))){_0x554611['limit']=qs[_0x429a('0x33')](_0x280052[_0x429a('0x48')][_0x429a('0x33')]);_0x554611[_0x429a('0x30')]=qs['offset'](_0x280052[_0x429a('0x48')][_0x429a('0x30')]);}_0x554611[_0x429a('0x71')]=qs[_0x429a('0x4e')](_0x280052[_0x429a('0x48')][_0x429a('0x4e')]);_0x554611[_0x429a('0x51')]=qs[_0x429a('0x50')](_[_0x429a('0x4f')](_0x280052[_0x429a('0x48')],_0x12803e['filters']));_0x554611[_0x429a('0x51')]['ChatWebsiteId']=_0xf4110d['id'];if(_0x280052[_0x429a('0x48')][_0x429a('0x54')]){_0x554611[_0x429a('0x51')]=_[_0x429a('0x52')](_0x554611['where'],{'$or':_[_0x429a('0x41')](_0x554611[_0x429a('0x4c')],function(_0xe6202e){var _0x513c9c={};_0x513c9c[_0xe6202e]={'$like':'%'+_0x280052['query']['filter']+'%'};return _0x513c9c;})});}_0x554611=_[_0x429a('0x52')]({},_0x554611,_0x280052['options']);return db[_0x429a('0xb7')][_0x429a('0x32')]({'where':_0x554611['where']})['then'](function(_0x5b724d){_0x1b2400[_0x429a('0x32')]=_0x5b724d;if(_0x280052[_0x429a('0x48')][_0x429a('0x5c')]){_0x554611['include']=[{'model':db[_0x429a('0x92')],'as':'Contact','required':![]},{'model':db[_0x429a('0xc3')],'as':_0x429a('0xfe'),'attributes':[_0x429a('0x3c'),'fullname',_0x429a('0xff')],'required':![]},{'model':db[_0x429a('0x100')],'as':_0x429a('0x101'),'attributes':['id',_0x429a('0x3c'),_0x429a('0x102')],'where':_0x280052[_0x429a('0x48')][_0x429a('0x103')]?{'id':_0x280052[_0x429a('0x48')]['tag']}:undefined,'required':_0x280052[_0x429a('0x48')]['tag']?!![]:![]}];}return db[_0x429a('0xb7')][_0x429a('0x56')](_0x554611);})[_0x429a('0x22')](function(_0x11da55){_0x1b2400[_0x429a('0x57')]=_0x11da55;return _0x1b2400;});}})[_0x429a('0x22')](respondWithFilteredResult(_0x28ac2e,_0x554611))['catch'](handleError(_0x28ac2e,null));};function iftimePromise(_0x2a2d73,_0x29f9e7){return respondWithRpcPromise(_0x429a('0x104'),'getSnippet',{'command':_0x29f9e7[_0x429a('0x105')]?util['format'](_0x429a('0x106'),_0x2a2d73[_0x429a('0x107')],_0x29f9e7[_0x429a('0x105')]):util['format'](_0x429a('0x108'),_0x2a2d73[_0x429a('0x107')])},client9002)[_0x429a('0x22')](function(_0x5dd417){var _0x246cb2=_0x5dd417&&_0x5dd417[_0x429a('0x109')](_0x429a('0x10a'))>=0x0?!![]:![];logger[_0x429a('0x23')](_0x429a('0x10b'),_0x29f9e7['id'],_0x2a2d73['id'],_0x2a2d73[_0x429a('0x107')],_0x246cb2?_0x429a('0x10c'):_0x429a('0x10d'),_0x29f9e7[_0x429a('0x105')]?_0x29f9e7[_0x429a('0x105')]:'No\x20timezone');return _0x246cb2;})[_0x429a('0x58')](function(_0xc5bfaa){logger[_0x429a('0x28')](_0x429a('0x10b'),_0x29f9e7['id'],_0x2a2d73['id'],_0x2a2d73[_0x429a('0x107')],util[_0x429a('0x10e')](_0xc5bfaa,{'showHidden':![],'depth':null}),_0x29f9e7[_0x429a('0x105')]?_0x29f9e7[_0x429a('0x105')]:_0x429a('0x10f'));return![];});}exports[_0x429a('0x110')]=function(_0x3affeb,_0x49539b,_0x55be8f){var _0x260793=0x0;var _0x5ee6d6=0x0;var _0x38a40d=![];var _0x22ce00;var _0x4c17d3;return db[_0x429a('0x42')]['find']({'where':{'id':_0x3affeb[_0x429a('0x5a')]['id']},'include':[{'model':db[_0x429a('0x111')],'as':_0x429a('0x111'),'include':[{'model':db[_0x429a('0x111')],'as':_0x429a('0x112'),'attributes':['id','interval'],'raw':!![]}]}]})[_0x429a('0x22')](handleEntityNotFound(_0x49539b,null))[_0x429a('0x22')](function(_0x1a2bbe){if(_0x1a2bbe){_0x22ce00=_0x1a2bbe;return _0x1a2bbe[_0x429a('0x113')]({'raw':!![]});}})[_0x429a('0x22')](function(_0x210688){if(_0x22ce00){if(_0x210688){_0x4c17d3=_0x210688;}}return require(_0x429a('0x7e'))[_0x429a('0x7f')]();})[_0x429a('0x22')](function(_0x40bd64){if(_0x40bd64){_0x5ee6d6=_0x40bd64['virtual'];_0x38a40d=_0x40bd64['custom'];}})['then'](function(){return db[_0x429a('0xb7')][_0x429a('0x32')]({'where':{'closed':![]}});})[_0x429a('0x22')](function(_0x41c0da){_0x260793=_0x41c0da;if(_0x5ee6d6&&_0x41c0da>_0x5ee6d6){return db[_0x429a('0x114')][_0x429a('0x69')]({'where':{'id':0x1}})[_0x429a('0x22')](function(_0x21abde){if(_0x21abde){_0x21abde[_0x429a('0x115')](_0x429a('0x116'));}});}})['then'](function(){if(_0x22ce00['Interval']&&_0x22ce00['Interval'][_0x429a('0x112')]){var _0x18cede=[];for(var _0x27e96a=0x0;_0x27e96a<_0x22ce00[_0x429a('0x111')]['Intervals']['length'];_0x27e96a++){var _0x2f350b=_0x22ce00[_0x429a('0x111')][_0x429a('0x112')][_0x27e96a][_0x429a('0x39')]({'plain':!![]});_0x18cede[_0x429a('0xbf')](iftimePromise(_0x2f350b,_0x22ce00));}return BPromise[_0x429a('0x117')](_0x18cede)[_0x429a('0x22')](function(_0x1e0aea){return _[_0x429a('0x118')](_0x1e0aea);});}else{return!![];}})[_0x429a('0x22')](function(_0x4c990b){var _0x29ce2f=fs[_0x429a('0xd4')](path[_0x429a('0x7b')](config[_0x429a('0x7c')],_0x429a('0x119')),_0x429a('0xd6'));var _0x4b1072={'remote':_0x22ce00['remote'],'query':querystring[_0x429a('0x27')](_[_0x429a('0x52')](_0x22ce00[_0x429a('0x39')]({'plain':!![]}),{'customerIp':_0x3affeb[_0x429a('0x90')][_0x429a('0xaa')]||_0x3affeb[_0x429a('0x90')][_0x429a('0x11a')]||_0x3affeb[_0x429a('0x11b')][_0x429a('0x11c')]||_0x3affeb['ip'],'referer':_0x3affeb[_0x429a('0x90')]['referer'],'openedInteractions':_0x260793,'maxInteractions':_0x5ee6d6,'virtual':_0x38a40d[_0x429a('0x11d')],'online':_0x4c990b,'custom':_0x38a40d}))[_0x429a('0x11e')](/'/g,'\x5c\x27')};_0x49539b[_0x429a('0x3d')](ejs['render'](Mustache['render'](_0x29ce2f,_0x4b1072),{'proactiveActions':_0x4c17d3,'alignment':_0x22ce00['alignment'],'verticalAlignment':_0x22ce00['verticalAlignment'],'div_color':_0x22ce00[_0x429a('0x102')],'text_color':_0x22ce00['textColor'],'button_color':_0x22ce00['color_button'],'background_color':_0x22ce00[_0x429a('0x11f')]}));})[_0x429a('0x58')](handleError(_0x49539b,null));};exports[_0x429a('0x120')]=function(_0x1af2c8,_0x124629,_0x1ae1b5){return db['ChatWebsite'][_0x429a('0x69')]({'where':{'id':_0x1af2c8['params']['id']}})[_0x429a('0x22')](handleEntityNotFound(_0x124629,null))[_0x429a('0x22')](function(_0x537962){if(_0x537962){return db['sequelize'][_0x429a('0x121')](function(_0x3a9ea5){return db['ChatApplication'][_0x429a('0x38')]({'where':{'ChatWebsiteId':_0x1af2c8[_0x429a('0x5a')]['id']},'transaction':_0x3a9ea5})[_0x429a('0x22')](function(_0x41e5b6){var _0x224157=_[_0x429a('0x41')](_0x1af2c8[_0x429a('0x64')],function(_0xf1151d){_0xf1151d[_0x429a('0x67')]=_0x1af2c8[_0x429a('0x5a')]['id'];return _0xf1151d;});return db[_0x429a('0xa1')][_0x429a('0xe1')](_0x224157,{'transaction':_0x3a9ea5});});})[_0x429a('0x22')](function(){return db[_0x429a('0xa1')]['findAndCountAll']({'where':{'ChatWebsiteId':_0x1af2c8[_0x429a('0x5a')]['id']},'order':_0x429a('0x122')});});}})['then'](respondWithResult(_0x124629,null))[_0x429a('0x58')](handleError(_0x124629,null));};exports['getApplications']=function(_0x2ea273,_0x4cb86b,_0x17d18d){var _0x38b28e={};var _0x49f68e={};var _0x1cef62;var _0x26b9c3;return db[_0x429a('0x42')][_0x429a('0x69')]({'where':{'id':_0x2ea273['params']['id']}})['then'](handleEntityNotFound(_0x4cb86b,null))[_0x429a('0x22')](function(_0x90fb1b){if(_0x90fb1b){_0x1cef62=_0x90fb1b;_0x49f68e[_0x429a('0x47')]=_[_0x429a('0x49')](db['ChatApplication']['rawAttributes']);_0x49f68e[_0x429a('0x48')]=_[_0x429a('0x49')](_0x2ea273['query']);_0x49f68e[_0x429a('0x50')]=_['intersection'](_0x49f68e['model'],_0x49f68e[_0x429a('0x48')]);_0x38b28e[_0x429a('0x4c')]=_['intersection'](_0x49f68e[_0x429a('0x47')],qs[_0x429a('0x4b')](_0x2ea273[_0x429a('0x48')]['fields']));_0x38b28e[_0x429a('0x4c')]=_0x38b28e[_0x429a('0x4c')][_0x429a('0x5b')]?_0x38b28e['attributes']:_0x49f68e['model'];_0x38b28e[_0x429a('0x71')]=qs[_0x429a('0x4e')](_0x2ea273[_0x429a('0x48')][_0x429a('0x4e')]);_0x38b28e['where']=qs[_0x429a('0x50')](_[_0x429a('0x4f')](_0x2ea273[_0x429a('0x48')],_0x49f68e[_0x429a('0x50')]));if(_0x2ea273[_0x429a('0x48')]['filter']){_0x38b28e[_0x429a('0x51')]=_[_0x429a('0x52')](_0x38b28e['where'],{'$or':_['map'](_0x38b28e['attributes'],function(_0x53d044){var _0x349328={};_0x349328[_0x53d044]={'$like':'%'+_0x2ea273[_0x429a('0x48')][_0x429a('0x54')]+'%'};return _0x349328;})});}_0x38b28e=_[_0x429a('0x52')]({},_0x38b28e,_0x2ea273[_0x429a('0x55')]);return _0x1cef62[_0x429a('0x123')](_0x38b28e);}})[_0x429a('0x22')](function(_0x610db8){if(_0x610db8){_0x26b9c3=_0x610db8[_0x429a('0x5b')];if(!_0x2ea273['query']['hasOwnProperty'](_0x429a('0x4d'))){_0x38b28e[_0x429a('0x33')]=qs[_0x429a('0x33')](_0x2ea273[_0x429a('0x48')][_0x429a('0x33')]);_0x38b28e[_0x429a('0x30')]=qs[_0x429a('0x30')](_0x2ea273['query'][_0x429a('0x30')]);}return _0x1cef62[_0x429a('0x123')](_0x38b28e);}})[_0x429a('0x22')](function(_0x144de0){if(_0x144de0){return _0x144de0?{'count':_0x26b9c3,'rows':_0x144de0}:null;}})[_0x429a('0x22')](respondWithResult(_0x4cb86b,null))[_0x429a('0x58')](handleError(_0x4cb86b,null));};exports[_0x429a('0x124')]=function(_0x1d9202,_0xb08e0,_0x2e9b96){return db[_0x429a('0x125')][_0x429a('0x5e')]({'where':{'id':_0x1d9202[_0x429a('0x5a')]['id']}})[_0x429a('0x22')](handleEntityNotFound(_0xb08e0,null))['then'](function(_0x1f2965){if(_0x1f2965){return _0x1f2965[_0x429a('0x124')](_0x1d9202['body'][_0x429a('0x6d')],_[_0x429a('0xfd')](_0x1d9202[_0x429a('0x64')],[_0x429a('0x6d'),'id'])||{});}})[_0x429a('0x22')](respondWithResult(_0xb08e0,null))['catch'](handleError(_0xb08e0,null));};exports[_0x429a('0x113')]=function(_0x48b313,_0x35b38e,_0x51eab4){var _0x20b32d={};var _0x3a2836={};var _0x3b1e23;var _0x125ead;return db[_0x429a('0x42')][_0x429a('0x69')]({'where':{'id':_0x48b313[_0x429a('0x5a')]['id']}})['then'](handleEntityNotFound(_0x35b38e,null))[_0x429a('0x22')](function(_0x8a0e8f){if(_0x8a0e8f){_0x3b1e23=_0x8a0e8f;_0x3a2836[_0x429a('0x47')]=_[_0x429a('0x49')](db['ChatProactiveAction'][_0x429a('0x43')]);_0x3a2836[_0x429a('0x48')]=_[_0x429a('0x49')](_0x48b313[_0x429a('0x48')]);_0x3a2836[_0x429a('0x50')]=_['intersection'](_0x3a2836[_0x429a('0x47')],_0x3a2836[_0x429a('0x48')]);_0x20b32d[_0x429a('0x4c')]=_[_0x429a('0x4a')](_0x3a2836[_0x429a('0x47')],qs[_0x429a('0x4b')](_0x48b313[_0x429a('0x48')]['fields']));_0x20b32d[_0x429a('0x4c')]=_0x20b32d[_0x429a('0x4c')]['length']?_0x20b32d['attributes']:_0x3a2836[_0x429a('0x47')];_0x20b32d[_0x429a('0x71')]=qs[_0x429a('0x4e')](_0x48b313[_0x429a('0x48')][_0x429a('0x4e')]);_0x20b32d['where']=qs[_0x429a('0x50')](_[_0x429a('0x4f')](_0x48b313[_0x429a('0x48')],_0x3a2836[_0x429a('0x50')]));if(_0x48b313[_0x429a('0x48')][_0x429a('0x54')]){_0x20b32d['where']=_[_0x429a('0x52')](_0x20b32d[_0x429a('0x51')],{'$or':_[_0x429a('0x41')](_0x20b32d[_0x429a('0x4c')],function(_0x23174b){var _0x483709={};_0x483709[_0x23174b]={'$like':'%'+_0x48b313['query'][_0x429a('0x54')]+'%'};return _0x483709;})});}_0x20b32d=_[_0x429a('0x52')]({},_0x20b32d,_0x48b313[_0x429a('0x55')]);return _0x3b1e23[_0x429a('0x113')](_0x20b32d);}})[_0x429a('0x22')](function(_0x204688){if(_0x204688){_0x125ead=_0x204688[_0x429a('0x5b')];if(!_0x48b313['query'][_0x429a('0x6b')](_0x429a('0x4d'))){_0x20b32d[_0x429a('0x33')]=qs['limit'](_0x48b313[_0x429a('0x48')][_0x429a('0x33')]);_0x20b32d['offset']=qs[_0x429a('0x30')](_0x48b313[_0x429a('0x48')][_0x429a('0x30')]);}return _0x3b1e23[_0x429a('0x113')](_0x20b32d);}})[_0x429a('0x22')](function(_0x14962f){if(_0x14962f){return _0x14962f?{'count':_0x125ead,'rows':_0x14962f}:null;}})['then'](respondWithResult(_0x35b38e,null))[_0x429a('0x58')](handleError(_0x35b38e,null));};exports[_0x429a('0x126')]=function(_0x44615d,_0xbefb04,_0x8de009){var _0x178bee=_0x44615d[_0x429a('0x48')]['online']===_0x429a('0x127')?_0x429a('0x128'):_0x429a('0x129');return db[_0x429a('0x42')]['find']({'attributes':['id',_0x178bee],'where':{'id':_0x44615d[_0x429a('0x5a')]['id']}})[_0x429a('0x22')](handleEntityNotFound(_0xbefb04,null))[_0x429a('0x22')](function(_0x225251){if(_0x225251){var _0x29ef6f=_0x225251[_0x178bee];var _0x2034dd=_0x29ef6f&&_0x29ef6f['items']?_0x29ef6f[_0x429a('0x12a')]:[];_0xbefb04['send']({'fromKey':_[_0x429a('0x81')](_0x29ef6f['fromKey'])?undefined:_0x29ef6f[_0x429a('0x12b')],'count':_0x2034dd[_0x429a('0x5b')],'rows':_0x2034dd});}})[_0x429a('0x58')](handleError(_0xbefb04,null));};exports[_0x429a('0x12c')]=function(_0x3077a8,_0x3ef771,_0x532784){var _0x54f2c2={'raw':![],'where':{}};var _0x421523={};var _0x7c3ab3={'count':0x0,'rows':[]};return db[_0x429a('0x42')]['findOne']({'where':{'id':_0x3077a8[_0x429a('0x5a')]['id']}})[_0x429a('0x22')](handleEntityNotFound(_0x3ef771,null))[_0x429a('0x22')](function(_0x4a940b){if(_0x4a940b){_0x421523[_0x429a('0x47')]=_['keys'](db[_0x429a('0xd8')][_0x429a('0x43')]);_0x421523[_0x429a('0x48')]=_['keys'](_0x3077a8['query']);_0x421523[_0x429a('0x50')]=_[_0x429a('0x4a')](_0x421523[_0x429a('0x47')],_0x421523[_0x429a('0x48')]);_0x54f2c2[_0x429a('0x4c')]=_[_0x429a('0x4a')](_0x421523[_0x429a('0x47')],qs[_0x429a('0x4b')](_0x3077a8[_0x429a('0x48')][_0x429a('0x4b')]));_0x54f2c2['attributes']=_0x54f2c2[_0x429a('0x4c')][_0x429a('0x5b')]?_0x54f2c2[_0x429a('0x4c')]:_0x421523[_0x429a('0x47')];if(!_0x3077a8['query'][_0x429a('0x6b')](_0x429a('0x4d'))){_0x54f2c2['limit']=qs[_0x429a('0x33')](_0x3077a8[_0x429a('0x48')][_0x429a('0x33')]);_0x54f2c2[_0x429a('0x30')]=qs['offset'](_0x3077a8[_0x429a('0x48')][_0x429a('0x30')]);}_0x54f2c2[_0x429a('0x71')]=qs['sort'](_0x3077a8[_0x429a('0x48')][_0x429a('0x4e')]);_0x54f2c2[_0x429a('0x51')]=qs[_0x429a('0x50')](_[_0x429a('0x4f')](_0x3077a8[_0x429a('0x48')],_0x421523[_0x429a('0x50')]));_0x54f2c2['where'][_0x429a('0x67')]=_0x4a940b['id'];if(_0x3077a8['query'][_0x429a('0x54')]){_0x54f2c2[_0x429a('0x51')]=_['merge'](_0x54f2c2['where'],{'$or':_[_0x429a('0x41')](_0x54f2c2[_0x429a('0x4c')],function(_0x2ed44b){var _0x3145ab={};_0x3145ab[_0x2ed44b]={'$like':'%'+_0x3077a8[_0x429a('0x48')][_0x429a('0x54')]+'%'};return _0x3145ab;})});}_0x54f2c2=_[_0x429a('0x52')]({},_0x54f2c2,_0x3077a8[_0x429a('0x55')]);return db[_0x429a('0xd8')][_0x429a('0x32')]({'where':_0x54f2c2[_0x429a('0x51')]})[_0x429a('0x22')](function(_0x544bec){_0x7c3ab3[_0x429a('0x32')]=_0x544bec;if(_0x3077a8[_0x429a('0x48')][_0x429a('0x5c')]){_0x54f2c2[_0x429a('0x5d')]=[{'all':!![]}];}else{_0x54f2c2[_0x429a('0x5d')]=[{'model':db[_0x429a('0x92')],'as':_0x429a('0x12d'),'required':![]},{'model':db[_0x429a('0xe0')],'as':_0x429a('0x12e'),'required':![]}];}return db[_0x429a('0xd8')][_0x429a('0x56')](_0x54f2c2);})[_0x429a('0x22')](function(_0x237c68){_0x7c3ab3['rows']=_0x237c68;return _0x7c3ab3;});}})[_0x429a('0x22')](respondWithFilteredResult(_0x3ef771,_0x54f2c2))['catch'](handleError(_0x3ef771,null));};exports[_0x429a('0x12f')]=function(_0x51d15d,_0x53deb5,_0x455cef){return db[_0x429a('0x42')][_0x429a('0x5e')]({'where':{'id':_0x51d15d[_0x429a('0x5a')]['id']}})[_0x429a('0x22')](handleEntityNotFound(_0x53deb5,null))[_0x429a('0x22')](function(_0x28a924){if(_0x28a924){return _0x28a924[_0x429a('0x12f')](_0x51d15d[_0x429a('0x64')][_0x429a('0x6d')],_[_0x429a('0xfd')](_0x51d15d[_0x429a('0x64')],[_0x429a('0x6d'),'id'])||{})[_0x429a('0xbb')](function(_0x51a21b){for(var _0x1532fa=0x0;_0x1532fa<_0x51d15d[_0x429a('0x64')]['ids'][_0x429a('0x5b')];_0x1532fa+=0x1){socket[_0x429a('0x130')]('userChatWebsite:save',{'UserId':Number(_0x51d15d[_0x429a('0x64')][_0x429a('0x6d')][_0x1532fa]),'ChatWebsiteId':Number(_0x51d15d['params']['id'])});}return _0x51a21b;});}})[_0x429a('0x22')](respondWithResult(_0x53deb5,null))[_0x429a('0x58')](handleError(_0x53deb5,null));};exports[_0x429a('0x131')]=function(_0x351234,_0xa89b34,_0x41802e){return db[_0x429a('0x42')][_0x429a('0x5e')]({'where':{'id':_0x351234[_0x429a('0x5a')]['id']}})[_0x429a('0x22')](handleEntityNotFound(_0xa89b34,null))[_0x429a('0x22')](function(_0x4cb022){if(_0x4cb022){return _0x4cb022[_0x429a('0x131')](_0x351234[_0x429a('0x48')][_0x429a('0x6d')])['then'](function(){if(_[_0x429a('0x132')](_0x351234[_0x429a('0x48')][_0x429a('0x6d')])){for(var _0x3b6821=0x0;_0x3b6821<_0x351234['query'][_0x429a('0x6d')][_0x429a('0x5b')];_0x3b6821+=0x1){socket[_0x429a('0x130')]('userChatWebsite:remove',{'UserId':Number(_0x351234[_0x429a('0x48')][_0x429a('0x6d')][_0x3b6821]),'ChatWebsiteId':Number(_0x351234[_0x429a('0x5a')]['id'])});}}else{socket[_0x429a('0x130')]('userChatWebsite:remove',{'UserId':Number(_0x351234['query'][_0x429a('0x6d')]),'ChatWebsiteId':Number(_0x351234[_0x429a('0x5a')]['id'])});}});}})[_0x429a('0x22')](respondWithStatusCode(_0xa89b34,null))[_0x429a('0x58')](handleError(_0xa89b34,null));};exports[_0x429a('0x133')]=function(_0x4d58a7,_0x553d23,_0x5b2ceb){var _0x3f4970={};var _0x167c5d={};var _0x39814e;var _0x500d22;return db[_0x429a('0x42')]['findOne']({'where':{'id':_0x4d58a7[_0x429a('0x5a')]['id']}})[_0x429a('0x22')](handleEntityNotFound(_0x553d23,null))['then'](function(_0x2c5031){if(_0x2c5031){_0x39814e=_0x2c5031;_0x167c5d['model']=_[_0x429a('0x49')](db[_0x429a('0xc3')][_0x429a('0x43')]);_0x167c5d['query']=_['keys'](_0x4d58a7['query']);_0x167c5d[_0x429a('0x50')]=_[_0x429a('0x4a')](_0x167c5d[_0x429a('0x47')],_0x167c5d[_0x429a('0x48')]);_0x3f4970['attributes']=_[_0x429a('0x4a')](_0x167c5d[_0x429a('0x47')],qs[_0x429a('0x4b')](_0x4d58a7['query']['fields']));_0x3f4970[_0x429a('0x4c')]=_0x3f4970['attributes'][_0x429a('0x5b')]?_0x3f4970[_0x429a('0x4c')]:_0x167c5d['model'];_0x3f4970[_0x429a('0x71')]=qs[_0x429a('0x4e')](_0x4d58a7[_0x429a('0x48')][_0x429a('0x4e')]);_0x3f4970[_0x429a('0x51')]=qs[_0x429a('0x50')](_[_0x429a('0x4f')](_0x4d58a7[_0x429a('0x48')],_0x167c5d[_0x429a('0x50')]));if(_0x4d58a7[_0x429a('0x48')][_0x429a('0x54')]){_0x3f4970[_0x429a('0x51')]=_[_0x429a('0x52')](_0x3f4970[_0x429a('0x51')],{'$or':_[_0x429a('0x41')](_0x3f4970[_0x429a('0x4c')],function(_0x2b0884){var _0x5821c4={};_0x5821c4[_0x2b0884]={'$like':'%'+_0x4d58a7[_0x429a('0x48')]['filter']+'%'};return _0x5821c4;})});}_0x3f4970=_['merge']({},_0x3f4970,_0x4d58a7['options']);return _0x39814e[_0x429a('0x133')](_0x3f4970);}})[_0x429a('0x22')](function(_0x23403f){if(_0x23403f){_0x500d22=_0x23403f['length'];if(!_0x4d58a7['query']['hasOwnProperty']('nolimit')){_0x3f4970[_0x429a('0x33')]=qs[_0x429a('0x33')](_0x4d58a7[_0x429a('0x48')][_0x429a('0x33')]);_0x3f4970[_0x429a('0x30')]=qs[_0x429a('0x30')](_0x4d58a7['query'][_0x429a('0x30')]);}return _0x39814e[_0x429a('0x133')](_0x3f4970);}})['then'](function(_0x18e58f){if(_0x18e58f){return _0x18e58f?{'count':_0x500d22,'rows':_0x18e58f}:null;}})['then'](respondWithResult(_0x553d23,null))['catch'](handleError(_0x553d23,null));};
\ No newline at end of file
+var _0xddf3=['server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','user-agent-parser','setUA','headers','user-agent','getResult','chat','CmContact','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','Sequelize','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','Contacts','DESC','ChatApplication','Applications','List','applications','list','priority','account','contact','cf-connecting-ip','x-forwarded-for','split','firstName','lastName','x-real-port','browser','version','format','%s\x20%s','device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','messageId','created','autoclose','push','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','notify','offline','files','from\x20is\x20mandatory','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','mimetype','server','attachments','offline-chat','basename','openNewInteraction','sequelize','transaction','Attachment','bulkCreate','MailServerOut','Smtp','forwardOffline','forwardOfflineAddress','host','port','secure','authentication','auth','SendMail','sendMail','email','offlineMessageSubject','originalname','subjectOffline','toPairsIn','Chat','MailAccountId','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','ids','omit','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','color','tag','getSnippet','timezone','iftime\x20%s','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','interval','Interval','custom','increment','chatLicenseExceeded','Intervals','all','some','server/files/chat/iframe.ejs','x-real-ip','connection','remoteAddress','referer','virtual','replace','alignment','verticalAlignment','textColor','backgroundColor','addApplications','findAndCountAll','getApplications','addProactiveActions','chatProactiveAction','getProactiveActions','ChatProactiveAction','online','false','onlineForm','items','ChatOfflineMessage','Attachments','addAgents','emit','removeAgents','userChatWebsite:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','./chatWebsite.socket','register','jayson/promise','client','http','request','then','info','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','ChatWebsite,\x20%s,\x20%s','catch','sendStatus','json','offset','undefined','count','set','reject','save','update','destroy','get','ChatWebsites','UserProfileResource','status','end','stack','name','send','index','Pause','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','type','model','query','keys','filters','intersection','length','nolimit','limit','order','sort','where','filter','merge','includeAll','findAll','rows','show','params','attributes','fields','include','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','ChatWebsiteId','getDispositions','findOne','Disposition','hasOwnProperty','pick','removeDispositions','CannedAnswer','removeAnswers','sitepic','file','filename','addAvatar','agentAvatar','addCustomerAvatar','customerAvatar','systemAvatar','getLogo','root','server/files/images/logos/default_logo.svg','getLicense','isNil','existsSync','join','download','server/files/images/avatars/','getCustomerAvatar'];(function(_0x2ba9c1,_0x138b4d){var _0x31e91a=function(_0x544647){while(--_0x544647){_0x2ba9c1['push'](_0x2ba9c1['shift']());}};_0x31e91a(++_0x138b4d);}(_0xddf3,0x1e0));var _0x3ddf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xddf3[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x3ddf('0x0'));var rimraf=require(_0x3ddf('0x1'));var zipdir=require(_0x3ddf('0x2'));var jsonpatch=require(_0x3ddf('0x3'));var rp=require(_0x3ddf('0x4'));var moment=require('moment');var BPromise=require(_0x3ddf('0x5'));var Mustache=require(_0x3ddf('0x6'));var util=require(_0x3ddf('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x3ddf('0x8'));var ejs=require(_0x3ddf('0x9'));var fs=require('fs');var fs_extra=require(_0x3ddf('0xa'));var _=require(_0x3ddf('0xb'));var squel=require(_0x3ddf('0xc'));var crypto=require(_0x3ddf('0xd'));var jsforce=require(_0x3ddf('0xe'));var deskjs=require(_0x3ddf('0xf'));var toCsv=require('to-csv');var querystring=require(_0x3ddf('0x10'));var Papa=require(_0x3ddf('0x11'));var Redis=require(_0x3ddf('0x12'));var authService=require(_0x3ddf('0x13'));var qs=require(_0x3ddf('0x14'));var as=require(_0x3ddf('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3ddf('0x16'))(_0x3ddf('0x17'));var utils=require(_0x3ddf('0x18'));var config=require(_0x3ddf('0x19'));var licenseUtil=require(_0x3ddf('0x1a'));var db=require('../../mysqldb')['db'];config[_0x3ddf('0x1b')]=_[_0x3ddf('0x1c')](config[_0x3ddf('0x1b')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3ddf('0x1b')]));require(_0x3ddf('0x1d'))[_0x3ddf('0x1e')](socket);var jayson=require(_0x3ddf('0x1f'));var client=jayson[_0x3ddf('0x20')][_0x3ddf('0x21')]({'port':0x232c});var client9002=jayson[_0x3ddf('0x20')][_0x3ddf('0x21')]({'port':0x232a});var client9003=jayson['client'][_0x3ddf('0x21')]({'port':0x232b});var client9001=jayson[_0x3ddf('0x20')][_0x3ddf('0x21')]({'port':0x2329});function respondWithRpcPromise(_0x8832e9,_0x5e9174,_0xc5b912,_0x58fd92){return new BPromise(function(_0x396e7b,_0x54ce4a){var _0xb93710=_0x58fd92||client;return _0xb93710[_0x3ddf('0x22')](_0x8832e9,_0xc5b912)[_0x3ddf('0x23')](function(_0x10e880){logger[_0x3ddf('0x24')]('ChatWebsite,\x20%s,\x20%s',_0x5e9174,'request\x20sent');logger[_0x3ddf('0x25')](_0x3ddf('0x26'),_0x5e9174,_0x3ddf('0x27'),JSON[_0x3ddf('0x28')](_0x10e880));if(_0x10e880[_0x3ddf('0x29')]){if(_0x10e880[_0x3ddf('0x29')][_0x3ddf('0x2a')]===0x1f4){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x5e9174,_0x10e880[_0x3ddf('0x29')][_0x3ddf('0x2b')]);return _0x54ce4a(_0x10e880[_0x3ddf('0x29')][_0x3ddf('0x2b')]);}logger['error']('ChatWebsite,\x20%s,\x20%s',_0x5e9174,_0x10e880['error'][_0x3ddf('0x2b')]);return _0x396e7b(_0x10e880['error'][_0x3ddf('0x2b')]);}else{logger[_0x3ddf('0x24')](_0x3ddf('0x2c'),_0x5e9174,_0x3ddf('0x27'));_0x396e7b(_0x10e880['result']['message']);}})[_0x3ddf('0x2d')](function(_0xd2644b){logger[_0x3ddf('0x29')](_0x3ddf('0x2c'),_0x5e9174,_0xd2644b);_0x54ce4a(_0xd2644b);});});}function respondWithStatusCode(_0x59e544,_0x695e68){_0x695e68=_0x695e68||0xcc;return function(_0x37b674){if(_0x37b674){return _0x59e544[_0x3ddf('0x2e')](_0x695e68);}return _0x59e544['status'](_0x695e68)['end']();};}function respondWithResult(_0x27fb28,_0x44d6bd){_0x44d6bd=_0x44d6bd||0xc8;return function(_0x156e3b){if(_0x156e3b){return _0x27fb28['status'](_0x44d6bd)[_0x3ddf('0x2f')](_0x156e3b);}};}function respondWithFilteredResult(_0xc3f787,_0x3a22f6){return function(_0x42a19d){if(_0x42a19d){var _0x115ed4=typeof _0x3a22f6[_0x3ddf('0x30')]===_0x3ddf('0x31')&&typeof _0x3a22f6['limit']==='undefined';var _0xf22793=_0x42a19d[_0x3ddf('0x32')];var _0x4bce52=_0x115ed4?0x0:_0x3a22f6['offset'];var _0x303114=_0x115ed4?_0x42a19d['count']:_0x3a22f6[_0x3ddf('0x30')]+_0x3a22f6['limit'];var _0x1bdc12;if(_0x303114>=_0xf22793){_0x303114=_0xf22793;_0x1bdc12=0xc8;}else{_0x1bdc12=0xce;}_0xc3f787['status'](_0x1bdc12);return _0xc3f787[_0x3ddf('0x33')]('Content-Range',_0x4bce52+'-'+_0x303114+'/'+_0xf22793)[_0x3ddf('0x2f')](_0x42a19d);}return null;};}function patchUpdates(_0x23ebc3){return function(_0x197fdf){try{jsonpatch['apply'](_0x197fdf,_0x23ebc3,!![]);}catch(_0x2954f3){return BPromise[_0x3ddf('0x34')](_0x2954f3);}return _0x197fdf[_0x3ddf('0x35')]();};}function saveUpdates(_0x8efc64,_0x48808d){return function(_0x4857db){if(_0x4857db){return _0x4857db[_0x3ddf('0x36')](_0x8efc64)[_0x3ddf('0x23')](function(_0x276ab4){return _0x276ab4;});}return null;};}function removeEntity(_0x114c4f,_0x25a6ba){return function(_0x58d37a){if(_0x58d37a){return _0x58d37a[_0x3ddf('0x37')]()[_0x3ddf('0x23')](function(){var _0x3080fd=_0x58d37a[_0x3ddf('0x38')]({'plain':!![]});var _0x86edba=_0x3ddf('0x39');return db[_0x3ddf('0x3a')]['destroy']({'where':{'type':_0x86edba,'resourceId':_0x3080fd['id']}})[_0x3ddf('0x23')](function(){return _0x58d37a;});})[_0x3ddf('0x23')](function(){_0x114c4f[_0x3ddf('0x3b')](0xcc)[_0x3ddf('0x3c')]();});}};}function handleEntityNotFound(_0x4539eb,_0x2d70e3){return function(_0x330071){if(!_0x330071){_0x4539eb[_0x3ddf('0x2e')](0x194);}return _0x330071;};}function handleError(_0x7b83bd,_0x22e1d3){_0x22e1d3=_0x22e1d3||0x1f4;return function(_0x448890){logger[_0x3ddf('0x29')](_0x448890[_0x3ddf('0x3d')]);if(_0x448890[_0x3ddf('0x3e')]){delete _0x448890['name'];}_0x7b83bd[_0x3ddf('0x3b')](_0x22e1d3)[_0x3ddf('0x3f')](_0x448890);};}exports[_0x3ddf('0x40')]=function(_0x378013,_0x2e9ae7){var _0x1568a1={'include':[{'model':db[_0x3ddf('0x41')],'as':_0x3ddf('0x42')}]},_0x8c2a89={},_0x325292={'count':0x0,'rows':[]};var _0x1f0a95=_[_0x3ddf('0x43')](db[_0x3ddf('0x44')][_0x3ddf('0x45')],function(_0x5b6cb8){return{'name':_0x5b6cb8['fieldName'],'type':_0x5b6cb8[_0x3ddf('0x46')]['key']};});_0x8c2a89[_0x3ddf('0x47')]=_[_0x3ddf('0x43')](_0x1f0a95,_0x3ddf('0x3e'));_0x8c2a89[_0x3ddf('0x48')]=_[_0x3ddf('0x49')](_0x378013[_0x3ddf('0x48')]);_0x8c2a89[_0x3ddf('0x4a')]=_['intersection'](_0x8c2a89[_0x3ddf('0x47')],_0x8c2a89[_0x3ddf('0x48')]);_0x1568a1['attributes']=_[_0x3ddf('0x4b')](_0x8c2a89[_0x3ddf('0x47')],qs['fields'](_0x378013['query']['fields']));_0x1568a1['attributes']=_0x1568a1['attributes'][_0x3ddf('0x4c')]?_0x1568a1['attributes']:_0x8c2a89[_0x3ddf('0x47')];if(!_0x378013[_0x3ddf('0x48')]['hasOwnProperty'](_0x3ddf('0x4d'))){_0x1568a1[_0x3ddf('0x4e')]=qs[_0x3ddf('0x4e')](_0x378013[_0x3ddf('0x48')]['limit']);_0x1568a1['offset']=qs[_0x3ddf('0x30')](_0x378013[_0x3ddf('0x48')][_0x3ddf('0x30')]);}_0x1568a1[_0x3ddf('0x4f')]=qs[_0x3ddf('0x50')](_0x378013[_0x3ddf('0x48')][_0x3ddf('0x50')]);_0x1568a1[_0x3ddf('0x51')]=qs[_0x3ddf('0x4a')](_['pick'](_0x378013[_0x3ddf('0x48')],_0x8c2a89[_0x3ddf('0x4a')]),_0x1f0a95);if(_0x378013[_0x3ddf('0x48')][_0x3ddf('0x52')]){_0x1568a1['where']=_['merge'](_0x1568a1[_0x3ddf('0x51')],{'$or':_[_0x3ddf('0x43')](_0x1f0a95,function(_0x5c8c12){if(_0x5c8c12[_0x3ddf('0x46')]!=='VIRTUAL'){var _0xf78152={};_0xf78152[_0x5c8c12['name']]={'$like':'%'+_0x378013['query']['filter']+'%'};return _0xf78152;}})});}_0x1568a1=_[_0x3ddf('0x53')]({},_0x1568a1,_0x378013['options']);var _0x480ea1={'where':_0x1568a1['where']};return db[_0x3ddf('0x44')][_0x3ddf('0x32')](_0x480ea1)[_0x3ddf('0x23')](function(_0x51fe64){_0x325292[_0x3ddf('0x32')]=_0x51fe64;if(_0x378013[_0x3ddf('0x48')][_0x3ddf('0x54')]){_0x1568a1['include']=[{'all':!![]}];}return db[_0x3ddf('0x44')][_0x3ddf('0x55')](_0x1568a1);})[_0x3ddf('0x23')](function(_0x4d2134){_0x325292[_0x3ddf('0x56')]=_0x4d2134;return _0x325292;})[_0x3ddf('0x23')](respondWithFilteredResult(_0x2e9ae7,_0x1568a1))[_0x3ddf('0x2d')](handleError(_0x2e9ae7,null));};exports[_0x3ddf('0x57')]=function(_0x1d6c9f,_0x1e56dd){var _0x14d4fd={'raw':![],'where':{'id':_0x1d6c9f[_0x3ddf('0x58')]['id']},'include':[{'model':db[_0x3ddf('0x41')],'as':_0x3ddf('0x42')}]},_0xd053db={};_0xd053db[_0x3ddf('0x47')]=_[_0x3ddf('0x49')](db[_0x3ddf('0x44')][_0x3ddf('0x45')]);_0xd053db[_0x3ddf('0x48')]=_[_0x3ddf('0x49')](_0x1d6c9f[_0x3ddf('0x48')]);_0xd053db[_0x3ddf('0x4a')]=_['intersection'](_0xd053db[_0x3ddf('0x47')],_0xd053db[_0x3ddf('0x48')]);_0x14d4fd[_0x3ddf('0x59')]=_['intersection'](_0xd053db[_0x3ddf('0x47')],qs['fields'](_0x1d6c9f[_0x3ddf('0x48')][_0x3ddf('0x5a')]));_0x14d4fd[_0x3ddf('0x59')]=_0x14d4fd[_0x3ddf('0x59')][_0x3ddf('0x4c')]?_0x14d4fd[_0x3ddf('0x59')]:_0xd053db[_0x3ddf('0x47')];if(_0x1d6c9f[_0x3ddf('0x48')][_0x3ddf('0x54')]){_0x14d4fd[_0x3ddf('0x5b')]=[{'all':!![]}];}_0x14d4fd=_[_0x3ddf('0x53')]({},_0x14d4fd,_0x1d6c9f[_0x3ddf('0x5c')]);return db['ChatWebsite']['find'](_0x14d4fd)[_0x3ddf('0x23')](handleEntityNotFound(_0x1e56dd,null))['then'](respondWithResult(_0x1e56dd,null))[_0x3ddf('0x2d')](handleError(_0x1e56dd,null));};exports[_0x3ddf('0x5d')]=function(_0x2fe772,_0x524ae8){return db['ChatWebsite'][_0x3ddf('0x5d')](_0x2fe772[_0x3ddf('0x5e')],{})[_0x3ddf('0x23')](function(_0x188f6b){var _0x5bb04f=_0x2fe772[_0x3ddf('0x5f')]['get']({'plain':!![]});if(!_0x5bb04f)throw new Error(_0x3ddf('0x60'));if(_0x5bb04f['role']===_0x3ddf('0x5f')){var _0x3a83d8=_0x188f6b['get']({'plain':!![]});var _0x55c84f=_0x3ddf('0x39');return db[_0x3ddf('0x61')][_0x3ddf('0x62')]({'where':{'name':_0x55c84f,'userProfileId':_0x5bb04f[_0x3ddf('0x63')]},'raw':!![]})[_0x3ddf('0x23')](function(_0x11dfc2){if(_0x11dfc2&&_0x11dfc2[_0x3ddf('0x64')]===0x0){return db[_0x3ddf('0x3a')][_0x3ddf('0x5d')]({'name':_0x3a83d8['name'],'resourceId':_0x3a83d8['id'],'type':_0x11dfc2[_0x3ddf('0x3e')],'sectionId':_0x11dfc2['id']},{})[_0x3ddf('0x23')](function(){return _0x188f6b;});}else{return _0x188f6b;}})['catch'](function(_0x197cd5){logger[_0x3ddf('0x29')](_0x3ddf('0x65'),_0x197cd5);throw _0x197cd5;});}return _0x188f6b;})['then'](respondWithResult(_0x524ae8,0xc9))[_0x3ddf('0x2d')](handleError(_0x524ae8,null));};exports[_0x3ddf('0x36')]=function(_0x1ba501,_0x5be06d){if(_0x1ba501[_0x3ddf('0x5e')]['id']){delete _0x1ba501[_0x3ddf('0x5e')]['id'];}return db['ChatWebsite'][_0x3ddf('0x62')]({'where':{'id':_0x1ba501[_0x3ddf('0x58')]['id']},'include':[{'model':db[_0x3ddf('0x41')],'as':_0x3ddf('0x42')}]})[_0x3ddf('0x23')](handleEntityNotFound(_0x5be06d,null))['then'](saveUpdates(_0x1ba501[_0x3ddf('0x5e')],null))[_0x3ddf('0x23')](respondWithResult(_0x5be06d,null))['catch'](handleError(_0x5be06d,null));};exports[_0x3ddf('0x37')]=function(_0x45b5c6,_0x340e82){return db[_0x3ddf('0x44')]['find']({'where':{'id':_0x45b5c6[_0x3ddf('0x58')]['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0x340e82,null))[_0x3ddf('0x23')](removeEntity(_0x340e82,null))[_0x3ddf('0x2d')](handleError(_0x340e82,null));};exports[_0x3ddf('0x66')]=function(_0x7b658a,_0x5af4b6){return db[_0x3ddf('0x44')][_0x3ddf('0x66')]()[_0x3ddf('0x23')](respondWithResult(_0x5af4b6,null))['catch'](handleError(_0x5af4b6,null));};exports['addDisposition']=function(_0x128765,_0x12a3f5,_0x28943c){if(_0x128765[_0x3ddf('0x5e')]['id']){delete _0x128765['body']['id'];}return db['ChatWebsite'][_0x3ddf('0x62')]({'where':{'id':_0x128765['params']['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0x12a3f5,null))['then'](function(_0x5e4ff4){if(_0x5e4ff4){_0x128765[_0x3ddf('0x5e')][_0x3ddf('0x67')]=_0x5e4ff4['id'];return db['Disposition'][_0x3ddf('0x5d')](_0x128765[_0x3ddf('0x5e')]);}})[_0x3ddf('0x23')](respondWithResult(_0x12a3f5,null))[_0x3ddf('0x2d')](handleError(_0x12a3f5,null));};exports[_0x3ddf('0x68')]=function(_0x2dcc7e,_0x646efa,_0x1655c3){var _0x2a4548={'raw':![],'where':{}};var _0x40b9ed={};var _0x5a7d59={'count':0x0,'rows':[]};return db[_0x3ddf('0x44')][_0x3ddf('0x69')]({'where':{'id':_0x2dcc7e[_0x3ddf('0x58')]['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0x646efa,null))[_0x3ddf('0x23')](function(_0xdb320a){if(_0xdb320a){_0x40b9ed[_0x3ddf('0x47')]=_[_0x3ddf('0x49')](db[_0x3ddf('0x6a')][_0x3ddf('0x45')]);_0x40b9ed[_0x3ddf('0x48')]=_[_0x3ddf('0x49')](_0x2dcc7e[_0x3ddf('0x48')]);_0x40b9ed[_0x3ddf('0x4a')]=_[_0x3ddf('0x4b')](_0x40b9ed[_0x3ddf('0x47')],_0x40b9ed['query']);_0x2a4548[_0x3ddf('0x59')]=_[_0x3ddf('0x4b')](_0x40b9ed['model'],qs['fields'](_0x2dcc7e['query'][_0x3ddf('0x5a')]));_0x2a4548[_0x3ddf('0x59')]=_0x2a4548[_0x3ddf('0x59')][_0x3ddf('0x4c')]?_0x2a4548[_0x3ddf('0x59')]:_0x40b9ed[_0x3ddf('0x47')];if(!_0x2dcc7e[_0x3ddf('0x48')][_0x3ddf('0x6b')]('nolimit')){_0x2a4548[_0x3ddf('0x4e')]=qs[_0x3ddf('0x4e')](_0x2dcc7e['query'][_0x3ddf('0x4e')]);_0x2a4548[_0x3ddf('0x30')]=qs[_0x3ddf('0x30')](_0x2dcc7e[_0x3ddf('0x48')][_0x3ddf('0x30')]);}_0x2a4548['order']=qs[_0x3ddf('0x50')](_0x2dcc7e[_0x3ddf('0x48')][_0x3ddf('0x50')]);_0x2a4548['where']=qs[_0x3ddf('0x4a')](_[_0x3ddf('0x6c')](_0x2dcc7e[_0x3ddf('0x48')],_0x40b9ed['filters']));_0x2a4548[_0x3ddf('0x51')][_0x3ddf('0x67')]=_0xdb320a['id'];if(_0x2dcc7e[_0x3ddf('0x48')][_0x3ddf('0x52')]){_0x2a4548['where']=_[_0x3ddf('0x53')](_0x2a4548[_0x3ddf('0x51')],{'$or':_[_0x3ddf('0x43')](_0x2a4548['attributes'],function(_0x4783ab){var _0x401cd9={};_0x401cd9[_0x4783ab]={'$like':'%'+_0x2dcc7e[_0x3ddf('0x48')][_0x3ddf('0x52')]+'%'};return _0x401cd9;})});}_0x2a4548=_[_0x3ddf('0x53')]({},_0x2a4548,_0x2dcc7e[_0x3ddf('0x5c')]);return db['Disposition'][_0x3ddf('0x32')]({'where':_0x2a4548[_0x3ddf('0x51')]})['then'](function(_0x29b727){_0x5a7d59['count']=_0x29b727;if(_0x2dcc7e[_0x3ddf('0x48')][_0x3ddf('0x54')]){_0x2a4548[_0x3ddf('0x5b')]=[{'all':!![]}];}return db[_0x3ddf('0x6a')][_0x3ddf('0x55')](_0x2a4548);})[_0x3ddf('0x23')](function(_0x51215d){_0x5a7d59['rows']=_0x51215d;return _0x5a7d59;});}})[_0x3ddf('0x23')](respondWithFilteredResult(_0x646efa,_0x2a4548))['catch'](handleError(_0x646efa,null));};exports[_0x3ddf('0x6d')]=function(_0x2c7342,_0xdf3f1,_0x201cec){return db[_0x3ddf('0x44')][_0x3ddf('0x62')]({'where':{'id':_0x2c7342[_0x3ddf('0x58')]['id']}})['then'](handleEntityNotFound(_0xdf3f1,null))[_0x3ddf('0x23')](function(_0x4e3364){if(_0x4e3364){return _0x4e3364[_0x3ddf('0x6d')](_0x2c7342[_0x3ddf('0x48')]['ids']);}})[_0x3ddf('0x23')](respondWithStatusCode(_0xdf3f1,null))[_0x3ddf('0x2d')](handleError(_0xdf3f1,null));};exports['addAnswer']=function(_0x22e3fa,_0x58d40c,_0x5dec3f){if(_0x22e3fa[_0x3ddf('0x5e')]['id']){delete _0x22e3fa['body']['id'];}return db[_0x3ddf('0x44')]['find']({'where':{'id':_0x22e3fa[_0x3ddf('0x58')]['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0x58d40c,null))[_0x3ddf('0x23')](function(_0x4be59d){if(_0x4be59d){_0x22e3fa[_0x3ddf('0x5e')][_0x3ddf('0x67')]=_0x4be59d['id'];return db['CannedAnswer'][_0x3ddf('0x5d')](_0x22e3fa[_0x3ddf('0x5e')]);}})[_0x3ddf('0x23')](respondWithResult(_0x58d40c,null))[_0x3ddf('0x2d')](handleError(_0x58d40c,null));};exports['getAnswers']=function(_0x4683eb,_0x5cf803,_0x3f656e){var _0x12b3af={'raw':![],'where':{}};var _0xe8690c={};var _0x1f7ebb={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0x4683eb[_0x3ddf('0x58')]['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0x5cf803,null))['then'](function(_0x18b681){if(_0x18b681){_0xe8690c[_0x3ddf('0x47')]=_[_0x3ddf('0x49')](db['CannedAnswer']['rawAttributes']);_0xe8690c[_0x3ddf('0x48')]=_['keys'](_0x4683eb[_0x3ddf('0x48')]);_0xe8690c['filters']=_['intersection'](_0xe8690c[_0x3ddf('0x47')],_0xe8690c[_0x3ddf('0x48')]);_0x12b3af[_0x3ddf('0x59')]=_['intersection'](_0xe8690c['model'],qs[_0x3ddf('0x5a')](_0x4683eb['query']['fields']));_0x12b3af[_0x3ddf('0x59')]=_0x12b3af[_0x3ddf('0x59')][_0x3ddf('0x4c')]?_0x12b3af['attributes']:_0xe8690c[_0x3ddf('0x47')];if(!_0x4683eb['query'][_0x3ddf('0x6b')](_0x3ddf('0x4d'))){_0x12b3af[_0x3ddf('0x4e')]=qs[_0x3ddf('0x4e')](_0x4683eb[_0x3ddf('0x48')][_0x3ddf('0x4e')]);_0x12b3af[_0x3ddf('0x30')]=qs[_0x3ddf('0x30')](_0x4683eb[_0x3ddf('0x48')]['offset']);}_0x12b3af[_0x3ddf('0x4f')]=qs['sort'](_0x4683eb[_0x3ddf('0x48')][_0x3ddf('0x50')]);_0x12b3af[_0x3ddf('0x51')]=qs[_0x3ddf('0x4a')](_[_0x3ddf('0x6c')](_0x4683eb[_0x3ddf('0x48')],_0xe8690c[_0x3ddf('0x4a')]));_0x12b3af[_0x3ddf('0x51')][_0x3ddf('0x67')]=_0x18b681['id'];if(_0x4683eb[_0x3ddf('0x48')][_0x3ddf('0x52')]){_0x12b3af['where']=_[_0x3ddf('0x53')](_0x12b3af[_0x3ddf('0x51')],{'$or':_[_0x3ddf('0x43')](_0x12b3af['attributes'],function(_0x5d6f64){var _0x4c8733={};_0x4c8733[_0x5d6f64]={'$like':'%'+_0x4683eb[_0x3ddf('0x48')][_0x3ddf('0x52')]+'%'};return _0x4c8733;})});}_0x12b3af=_[_0x3ddf('0x53')]({},_0x12b3af,_0x4683eb['options']);return db[_0x3ddf('0x6e')][_0x3ddf('0x32')]({'where':_0x12b3af[_0x3ddf('0x51')]})[_0x3ddf('0x23')](function(_0x5c5935){_0x1f7ebb['count']=_0x5c5935;if(_0x4683eb[_0x3ddf('0x48')]['includeAll']){_0x12b3af['include']=[{'all':!![]}];}return db['CannedAnswer'][_0x3ddf('0x55')](_0x12b3af);})['then'](function(_0x89f334){_0x1f7ebb[_0x3ddf('0x56')]=_0x89f334;return _0x1f7ebb;});}})[_0x3ddf('0x23')](respondWithFilteredResult(_0x5cf803,_0x12b3af))[_0x3ddf('0x2d')](handleError(_0x5cf803,null));};exports[_0x3ddf('0x6f')]=function(_0x5ad2da,_0x137948,_0x2c1ac6){return db[_0x3ddf('0x44')][_0x3ddf('0x62')]({'where':{'id':_0x5ad2da[_0x3ddf('0x58')]['id']}})['then'](handleEntityNotFound(_0x137948,null))[_0x3ddf('0x23')](function(_0x4d130f){if(_0x4d130f){return _0x4d130f['removeAnswers'](_0x5ad2da[_0x3ddf('0x48')]['ids']);}})[_0x3ddf('0x23')](respondWithStatusCode(_0x137948,null))[_0x3ddf('0x2d')](handleError(_0x137948,null));};exports['addLogo']=function(_0x485c7f,_0x26e3d0,_0x17e0b8){_0x485c7f[_0x3ddf('0x5e')][_0x3ddf('0x70')]=_0x485c7f[_0x3ddf('0x71')][_0x3ddf('0x72')];return db[_0x3ddf('0x44')][_0x3ddf('0x62')]({'where':{'id':_0x485c7f[_0x3ddf('0x58')]['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0x26e3d0,null))[_0x3ddf('0x23')](saveUpdates(_0x485c7f[_0x3ddf('0x5e')],null))[_0x3ddf('0x23')](respondWithResult(_0x26e3d0,null))[_0x3ddf('0x2d')](handleError(_0x26e3d0,null));};exports[_0x3ddf('0x73')]=function(_0x1880be,_0x56f0ea,_0xa77cd4){_0x1880be[_0x3ddf('0x5e')][_0x3ddf('0x74')]=_0x1880be['file']['filename'];return db[_0x3ddf('0x44')][_0x3ddf('0x62')]({'where':{'id':_0x1880be[_0x3ddf('0x58')]['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0x56f0ea,null))[_0x3ddf('0x23')](saveUpdates(_0x1880be[_0x3ddf('0x5e')],null))[_0x3ddf('0x23')](respondWithResult(_0x56f0ea,null))[_0x3ddf('0x2d')](handleError(_0x56f0ea,null));};exports[_0x3ddf('0x75')]=function(_0x22181b,_0x26acaa,_0x19655a){_0x22181b[_0x3ddf('0x5e')][_0x3ddf('0x76')]=_0x22181b['file']['filename'];return db['ChatWebsite'][_0x3ddf('0x62')]({'where':{'id':_0x22181b[_0x3ddf('0x58')]['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0x26acaa,null))['then'](saveUpdates(_0x22181b[_0x3ddf('0x5e')],null))[_0x3ddf('0x23')](respondWithResult(_0x26acaa,null))[_0x3ddf('0x2d')](handleError(_0x26acaa,null));};exports['addSystemAvatar']=function(_0x2e6c45,_0x38835d,_0x379dd8){_0x2e6c45[_0x3ddf('0x5e')][_0x3ddf('0x77')]=_0x2e6c45[_0x3ddf('0x71')][_0x3ddf('0x72')];return db['ChatWebsite'][_0x3ddf('0x62')]({'where':{'id':_0x2e6c45['params']['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0x38835d,null))['then'](saveUpdates(_0x2e6c45['body'],null))['then'](respondWithResult(_0x38835d,null))[_0x3ddf('0x2d')](handleError(_0x38835d,null));};exports[_0x3ddf('0x78')]=function(_0x31ac86,_0x4f8a9d,_0x122ddf){var _0x25323a=path['join'](config[_0x3ddf('0x79')],_0x3ddf('0x7a'));var _0x31e85e={'where':{'id':_0x31ac86[_0x3ddf('0x58')]['id']},'attributes':['id',_0x3ddf('0x70')],'raw':!![]};var _0x418d75=![];return require(_0x3ddf('0x1a'))[_0x3ddf('0x7b')]()[_0x3ddf('0x23')](function(_0x4de430){if(_0x4de430){_0x418d75=_0x4de430['custom'];}})[_0x3ddf('0x23')](function(){return db[_0x3ddf('0x44')][_0x3ddf('0x62')](_0x31e85e);})[_0x3ddf('0x23')](handleEntityNotFound(_0x4f8a9d,null))[_0x3ddf('0x23')](function(_0xd7972){if(_0xd7972){if(!_[_0x3ddf('0x7c')](_0xd7972['sitepic'])){if(fs[_0x3ddf('0x7d')](path[_0x3ddf('0x7e')](config[_0x3ddf('0x79')],'server/files/images/logos/',_0xd7972['sitepic']))&&_0x418d75){_0x25323a=path[_0x3ddf('0x7e')](config[_0x3ddf('0x79')],'server/files/images/logos/',_0xd7972[_0x3ddf('0x70')]);}}return _0x4f8a9d[_0x3ddf('0x7f')](_0x25323a);}})[_0x3ddf('0x2d')](handleError(_0x4f8a9d,null));};exports['getAvatar']=function(_0xc686b2,_0x2acbb1,_0x122076){var _0x5a76ad=path[_0x3ddf('0x7e')](config['root'],'server/files/images/avatars/default_avatar.png');var _0x11f368={'where':{'id':_0xc686b2[_0x3ddf('0x58')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db['ChatWebsite'][_0x3ddf('0x62')](_0x11f368)[_0x3ddf('0x23')](handleEntityNotFound(_0x2acbb1,null))[_0x3ddf('0x23')](function(_0x28e5ed){if(_0x28e5ed){if(!_[_0x3ddf('0x7c')](_0x28e5ed[_0x3ddf('0x74')])){if(fs[_0x3ddf('0x7d')](path[_0x3ddf('0x7e')](config[_0x3ddf('0x79')],_0x3ddf('0x80'),_0x28e5ed[_0x3ddf('0x74')]))){_0x5a76ad=path['join'](config[_0x3ddf('0x79')],_0x3ddf('0x80'),_0x28e5ed['agentAvatar']);}}return _0x2acbb1['download'](_0x5a76ad);}})[_0x3ddf('0x2d')](handleError(_0x2acbb1,null));};exports[_0x3ddf('0x81')]=function(_0x46055c,_0xa55f6d,_0x55fe8d){var _0xbcc8ca=path[_0x3ddf('0x7e')](config[_0x3ddf('0x79')],_0x3ddf('0x82'));var _0x5c4b17={'where':{'id':_0x46055c[_0x3ddf('0x58')]['id']},'attributes':['id','customerAvatar',_0x3ddf('0x83')],'raw':!![]};return db[_0x3ddf('0x44')][_0x3ddf('0x62')](_0x5c4b17)[_0x3ddf('0x23')](handleEntityNotFound(_0xa55f6d,null))[_0x3ddf('0x23')](function(_0x1fb338){if(_0x1fb338){if(!_[_0x3ddf('0x7c')](_0x1fb338[_0x3ddf('0x76')])){if(fs[_0x3ddf('0x7d')](path['join'](config['root'],_0x3ddf('0x80'),_0x1fb338[_0x3ddf('0x76')]))&&_0x1fb338[_0x3ddf('0x83')]){_0xbcc8ca=path[_0x3ddf('0x7e')](config[_0x3ddf('0x79')],'server/files/images/avatars/',_0x1fb338['customerAvatar']);}}return _0xa55f6d[_0x3ddf('0x7f')](_0xbcc8ca);}})['catch'](handleError(_0xa55f6d,null));};exports[_0x3ddf('0x84')]=function(_0x5b9ecf,_0x3ea70f,_0x59adea){var _0x2cdd54=path[_0x3ddf('0x7e')](config[_0x3ddf('0x79')],_0x3ddf('0x85'));var _0x315524={'where':{'id':_0x5b9ecf[_0x3ddf('0x58')]['id']},'attributes':['id',_0x3ddf('0x77')],'raw':!![]};return db[_0x3ddf('0x44')]['find'](_0x315524)[_0x3ddf('0x23')](handleEntityNotFound(_0x3ea70f,null))[_0x3ddf('0x23')](function(_0x1c453d){if(_0x1c453d){if(!_[_0x3ddf('0x7c')](_0x1c453d[_0x3ddf('0x77')])){if(fs[_0x3ddf('0x7d')](path['join'](config[_0x3ddf('0x79')],_0x3ddf('0x80'),_0x1c453d[_0x3ddf('0x77')]))){_0x2cdd54=path[_0x3ddf('0x7e')](config[_0x3ddf('0x79')],_0x3ddf('0x80'),_0x1c453d['systemAvatar']);}}return _0x3ea70f[_0x3ddf('0x7f')](_0x2cdd54);}})['catch'](handleError(_0x3ea70f,null));};exports['notify']=function(_0x4ca375,_0x5a1934,_0x45a6b5){var _0x4abfa8=require(_0x3ddf('0x86'));var _0x15cebb=new _0x4abfa8();var _0xe5659f=_0x15cebb[_0x3ddf('0x87')](_0x4ca375[_0x3ddf('0x88')][_0x3ddf('0x89')])[_0x3ddf('0x8a')]();var _0x4e074f={'body':_0x4ca375[_0x3ddf('0x5e')],'channel':_0x3ddf('0x8b')};var _0x57f904=[];var _0x42f9d9=[];var _0x4ebdd1={};var _0x38801a=![];return db[_0x3ddf('0x8c')][_0x3ddf('0x66')]()['then'](function(_0x4d4353){if(!_0x4d4353){throw new db['Sequelize'][(_0x3ddf('0x8d'))](_0x3ddf('0x8e'));}_0x57f904=_[_0x3ddf('0x8f')](_[_0x3ddf('0x49')](_0x4d4353),[_0x3ddf('0x90'),_0x3ddf('0x91')]);_0x42f9d9=_['difference'](_['keys'](_0x4d4353),['createdAt',_0x3ddf('0x91'),_0x3ddf('0x92'),_0x3ddf('0x93')]);if(_0x4ca375[_0x3ddf('0x5e')]['id']){delete _0x4ca375[_0x3ddf('0x5e')]['id'];}if(_['isNil'](_0x4ca375[_0x3ddf('0x5e')]['from'])){throw new db['Sequelize'][(_0x3ddf('0x8d'))]('from\x20is\x20mandatory');}if(_[_0x3ddf('0x7c')](_0x4ca375['body'][_0x3ddf('0x5e')])||_0x4ca375['body']['body']===''){throw new db[(_0x3ddf('0x94'))][(_0x3ddf('0x8d'))](_0x3ddf('0x95'));}if(_[_0x3ddf('0x7c')](_0x4ca375['body'][_0x3ddf('0x96')])){throw new db[(_0x3ddf('0x94'))]['ValidationError'](_0x3ddf('0x97')+_0x42f9d9);}if(!_[_0x3ddf('0x98')](_0x42f9d9,_0x4ca375[_0x3ddf('0x5e')]['mapKey'])){throw new db['Sequelize'][(_0x3ddf('0x8d'))](_0x3ddf('0x99')+_0x42f9d9);}_0x4ebdd1[_0x4ca375[_0x3ddf('0x5e')]['mapKey']]=_0x4ca375['body'][_0x3ddf('0x9a')];})[_0x3ddf('0x23')](function(){return db[_0x3ddf('0x44')][_0x3ddf('0x62')]({'where':{'id':_0x4ca375[_0x3ddf('0x58')]['id']},'include':[{'model':db[_0x3ddf('0x9b')],'as':'List','include':[{'model':db[_0x3ddf('0x8c')],'as':_0x3ddf('0x9c'),'where':_0x4ebdd1,'limit':0x1,'order':[[_0x3ddf('0x91'),_0x3ddf('0x9d')]]}]},{'model':db[_0x3ddf('0x9e')],'as':_0x3ddf('0x9f')}]});})['then'](handleEntityNotFound(_0x5a1934,null))['then'](function(_0x2072f5){if(_0x2072f5&&_0x2072f5[_0x3ddf('0xa0')]){_0x4e074f['account']=_0x2072f5;_0x4e074f[_0x3ddf('0xa1')]=_0x2072f5['Applications'];_0x4e074f[_0x3ddf('0xa2')]=_0x2072f5[_0x3ddf('0xa0')];_0x4e074f[_0x3ddf('0xa1')]=_['orderBy'](_0x4e074f[_0x3ddf('0xa1')],[_0x3ddf('0xa3')],['asc']);if(_0x4e074f[_0x3ddf('0xa4')][_0x3ddf('0x9f')]){delete _0x4e074f[_0x3ddf('0xa4')]['Applications'];}if(_0x4e074f[_0x3ddf('0xa4')]['List']&&_0x4e074f['account']['List']['Contacts'][_0x3ddf('0x4c')]){return _0x4e074f[_0x3ddf('0xa4')][_0x3ddf('0xa0')][_0x3ddf('0x9c')][0x0];}var _0x3b89d8=_[_0x3ddf('0x1c')](_0x4ca375[_0x3ddf('0x5e')],{'firstName':_0x4ca375[_0x3ddf('0x5e')]['from'],'ListId':_0x2072f5[_0x3ddf('0x93')]});_0x3b89d8[_0x4ca375['body'][_0x3ddf('0x96')]]=_0x4ca375[_0x3ddf('0x5e')]['from'];return db[_0x3ddf('0x8c')][_0x3ddf('0x5d')](_0x3b89d8,{'fields':_0x57f904,'raw':!![]});}})[_0x3ddf('0x23')](handleEntityNotFound(_0x5a1934,null))[_0x3ddf('0x23')](function(_0x55efd5){_0x4e074f[_0x3ddf('0xa5')]=_0x55efd5;var _0x3f0bb4=_0x4ca375['body']['customerIp'];if(_0x4ca375[_0x3ddf('0x88')][_0x3ddf('0xa6')]){_0x3f0bb4=_0x4ca375[_0x3ddf('0x88')][_0x3ddf('0xa6')];}else if(_0x4ca375[_0x3ddf('0x88')][_0x3ddf('0xa7')]){_0x3f0bb4=_['first'](_0x4ca375[_0x3ddf('0x88')][_0x3ddf('0xa7')][_0x3ddf('0xa8')](','));}if(_0x55efd5){var _0x37fdbc={'ContactId':_0x55efd5['id'],'ChatWebsiteId':_0x4ca375[_0x3ddf('0x58')]['id'],'from':(_0x55efd5[_0x3ddf('0xa9')]||'')+'\x20'+(_0x55efd5[_0x3ddf('0xaa')]||''),'customerIp':_0x3f0bb4,'customerPort':_0x4ca375[_0x3ddf('0x88')][_0x3ddf('0xab')]?_0x4ca375[_0x3ddf('0x88')][_0x3ddf('0xab')]:null,'referer':_0x4ca375['body']['referer'],'browserName':_0xe5659f[_0x3ddf('0xac')][_0x3ddf('0x3e')]&&_0xe5659f[_0x3ddf('0xac')][_0x3ddf('0xad')]?util[_0x3ddf('0xae')]('%s\x20%s',_0xe5659f[_0x3ddf('0xac')]['name'],_0xe5659f[_0x3ddf('0xac')][_0x3ddf('0xad')]):'unknown','browserVersion':_0xe5659f[_0x3ddf('0xac')]['version']||'unknown','osName':util[_0x3ddf('0xae')](_0x3ddf('0xaf'),_0xe5659f['os']['name'],_0xe5659f['os'][_0x3ddf('0xad')]),'osVersion':_0xe5659f['os'][_0x3ddf('0xad')],'deviceModel':_0xe5659f[_0x3ddf('0xb0')][_0x3ddf('0x47')]&&_0xe5659f[_0x3ddf('0xb0')][_0x3ddf('0xb1')]?util[_0x3ddf('0xae')](_0x3ddf('0xb2'),_0xe5659f[_0x3ddf('0xb0')][_0x3ddf('0x47')],_0xe5659f[_0x3ddf('0xb0')]['vendor'],_0xe5659f[_0x3ddf('0xb0')][_0x3ddf('0x46')]):null,'deviceVendor':_0xe5659f['device']['vendor'],'deviceType':_0xe5659f[_0x3ddf('0xb0')][_0x3ddf('0x46')],'formData':JSON[_0x3ddf('0x28')](_0x4ca375['body'])};var _0xe10bbe={'ChatWebsiteId':_0x4ca375[_0x3ddf('0x58')]['id'],'closed':![]};if(_0x4ca375[_0x3ddf('0x5e')][_0x3ddf('0xb3')]){_0xe10bbe[_0x3ddf('0xb3')]=_0x4ca375[_0x3ddf('0x5e')][_0x3ddf('0xb3')];return db[_0x3ddf('0xb4')][_0x3ddf('0x62')]({'where':_0xe10bbe})[_0x3ddf('0x23')](function(_0x1ccb57){if(_0x1ccb57){return[_0x1ccb57,![]];}_0x37fdbc['threadId']=_0x4ca375[_0x3ddf('0x5e')][_0x3ddf('0xb3')];_0x37fdbc[_0x3ddf('0xb5')]=_0x4ca375[_0x3ddf('0x5e')][_0x3ddf('0xb5')];return db[_0x3ddf('0xb4')][_0x3ddf('0x5d')](_0x37fdbc)[_0x3ddf('0x23')](function(_0x540b40){return[_0x540b40,!![]];});});}_0xe10bbe[_0x3ddf('0xb6')]=_0x55efd5['id'];if(_0x4ca375[_0x3ddf('0x5e')][_0x3ddf('0xb7')]&&_0x4ca375[_0x3ddf('0x5e')][_0x3ddf('0xb7')]['id']){_0xe10bbe['id']=_0x4ca375[_0x3ddf('0x5e')]['interaction']['id'];return db['ChatInteraction'][_0x3ddf('0x62')]({'where':_0xe10bbe})[_0x3ddf('0x23')](function(_0x6909b8){if(_0x6909b8){return[_0x6909b8,![]];}return db[_0x3ddf('0xb4')][_0x3ddf('0x5d')](_0x37fdbc)[_0x3ddf('0x23')](function(_0x3b0e2e){return[_0x3b0e2e,!![]];});});}return db[_0x3ddf('0xb4')]['create'](_0x37fdbc)[_0x3ddf('0x23')](function(_0x951dec){return[_0x951dec,!![]];});}})[_0x3ddf('0xb8')](function(_0x18dabd,_0x114ba3){if(_0x18dabd){_0x38801a=_0x114ba3;if(!_0x114ba3){var _0x32710d={'from':(_0x4e074f[_0x3ddf('0xa5')][_0x3ddf('0xa9')]||'')+'\x20'+(_0x4e074f[_0x3ddf('0xa5')][_0x3ddf('0xaa')]||'')};if(_0x4ca375[_0x3ddf('0x5e')][_0x3ddf('0xb3')]&&_0x4ca375['body']['messageId']&&_0x4ca375[_0x3ddf('0x5e')]['threadId']!=_0x4ca375['body'][_0x3ddf('0xb9')]){_0x32710d[_0x3ddf('0xb3')]=_0x4ca375[_0x3ddf('0x5e')][_0x3ddf('0xb9')];}return _0x18dabd[_0x3ddf('0x36')](_0x32710d);}else{return _0x18dabd;}}})[_0x3ddf('0x23')](function(_0x43cb6e){_0x4e074f[_0x3ddf('0xb7')]=_0x43cb6e[_0x3ddf('0x38')]({'plain':!![]});_0x4e074f[_0x3ddf('0xb7')][_0x3ddf('0xba')]=_0x38801a;if(_0x4e074f['interaction']['created']){if(_0x4e074f[_0x3ddf('0xa4')][_0x3ddf('0xbb')]){_0x4e074f[_0x3ddf('0xa1')][_0x3ddf('0xbc')]({'id':0x0,'priority':_0x4e074f[_0x3ddf('0xa1')][_0x3ddf('0x4c')]+0x1,'app':_0x3ddf('0xbd'),'appdata':_0x3ddf('0xbe'),'interval':_0x3ddf('0xbf')});}}return db[_0x3ddf('0xc0')][_0x3ddf('0x5d')]({'body':_0x4ca375[_0x3ddf('0x5e')][_0x3ddf('0x5e')],'ChatWebsiteId':_0x4ca375[_0x3ddf('0x58')]['id'],'ChatInteractionId':_0x43cb6e['id'],'direction':'in','ContactId':_0x4e074f['contact']['id'],'AttachmentId':_0x4ca375[_0x3ddf('0x5e')][_0x3ddf('0xc1')]});})['then'](function(_0x5dc14d){_0x4e074f['message']=_0x5dc14d;if(_0x4e074f[_0x3ddf('0xb7')][_0x3ddf('0xc2')]){return db[_0x3ddf('0xc3')][_0x3ddf('0x62')]({'attributes':['id','name'],'where':{'id':_0x4e074f[_0x3ddf('0xb7')][_0x3ddf('0xc2')]}})['then'](function(_0x4649d9){if(_0x4649d9){_0x4e074f['applications'][_0x3ddf('0xc4')]({'id':0x0,'priority':0x0,'app':_0x3ddf('0xc5'),'appdata':_0x4649d9[_0x3ddf('0x3e')]+','+(_0x4e074f[_0x3ddf('0xa4')][_0x3ddf('0xc6')]||0xa),'interval':'*,*,*,*'});_0x4e074f[_0x3ddf('0xc7')]=!![];}return respondWithRpcPromise(_0x3ddf('0xc8'),_0x3ddf('0xc9'),_0x4e074f);});}return respondWithRpcPromise(_0x3ddf('0xc8'),_0x3ddf('0xc9'),_0x4e074f);})[_0x3ddf('0x23')](function(_0x57a325){respondWithRpcPromise('EventManager',_0x3ddf('0xca'),{'event':_0x3ddf('0xcb'),'message':_0x57a325},client9002);return _0x57a325;})[_0x3ddf('0x23')](respondWithResult(_0x5a1934,null))[_0x3ddf('0x2d')](handleError(_0x5a1934,null));};exports[_0x3ddf('0xcc')]=function(_0xd27390,_0x4de61e,_0x1d6299){var _0x42671,_0x2bf812,_0x44144a;var _0x510131=[];var _0x1253da=[];var _0x2a22da={};var _0x2e2d7a=_0xd27390[_0x3ddf('0xcd')]||[];var _0xcdca6d=[];var _0x5a8bff;return db[_0x3ddf('0x8c')][_0x3ddf('0x66')]()['then'](function(_0x4e69d7){if(!_0x4e69d7){throw new db[(_0x3ddf('0x94'))][(_0x3ddf('0x8d'))](_0x3ddf('0x8e'));}_0x1253da=_['difference'](_['keys'](_0x4e69d7),[_0x3ddf('0x90'),_0x3ddf('0x91')]);_0x510131=_[_0x3ddf('0x8f')](_[_0x3ddf('0x49')](_0x4e69d7),['createdAt',_0x3ddf('0x91'),'CompanyId','ListId']);if(_0xd27390[_0x3ddf('0x5e')]['id']){delete _0xd27390[_0x3ddf('0x5e')]['id'];}if(_[_0x3ddf('0x7c')](_0xd27390['body'][_0x3ddf('0x9a')])){throw _0x4de61e[_0x3ddf('0x3b')](0x1f4)['send'](new db[(_0x3ddf('0x94'))][(_0x3ddf('0x8d'))](_0x3ddf('0xce')));}if(_[_0x3ddf('0x7c')](_0xd27390[_0x3ddf('0x5e')][_0x3ddf('0x5e')])||_0xd27390[_0x3ddf('0x5e')][_0x3ddf('0x5e')]===''){throw _0x4de61e['status'](0x1f4)[_0x3ddf('0x3f')](new db[(_0x3ddf('0x94'))][(_0x3ddf('0x8d'))]('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_['isNil'](_0xd27390[_0x3ddf('0x5e')][_0x3ddf('0xcf')])){throw _0x4de61e[_0x3ddf('0x3b')](0x1f4)['send'](new db[(_0x3ddf('0x94'))][(_0x3ddf('0x8d'))]('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x510131));}if(!_['includes'](_0x510131,_0xd27390[_0x3ddf('0x5e')][_0x3ddf('0xcf')])){throw _0x4de61e[_0x3ddf('0x3b')](0x1f4)['send'](new db['Sequelize'][(_0x3ddf('0x8d'))](_0x3ddf('0xd0')+_0x510131));}_0x2a22da[_0xd27390['body']['mapKeyOffline']]=_0xd27390[_0x3ddf('0x5e')][_0x3ddf('0x9a')];})[_0x3ddf('0x23')](function(){return db[_0x3ddf('0x44')][_0x3ddf('0x62')]({'where':{'id':_0xd27390[_0x3ddf('0x58')]['id']},'include':[{'model':db[_0x3ddf('0x9b')],'as':'List'},{'model':db[_0x3ddf('0xd1')],'as':'MailAccount'}]});})['then'](handleEntityNotFound(_0x4de61e,null))[_0x3ddf('0x23')](function(_0x331d1c){if(_0x331d1c&&_0x331d1c[_0x3ddf('0xa0')]){_0x2bf812=_0x331d1c;var _0x24c966=_[_0x3ddf('0x1c')](_0xd27390['body'],{'firstName':_0xd27390[_0x3ddf('0x5e')][_0x3ddf('0x9a')],'phone':_0xd27390[_0x3ddf('0x5e')][_0x3ddf('0x9a')],'ListId':_0x331d1c[_0x3ddf('0x93')]});_0x24c966[_0xd27390[_0x3ddf('0x5e')][_0x3ddf('0xcf')]]=_0xd27390['body'][_0x3ddf('0x9a')];return db[_0x3ddf('0x8c')][_0x3ddf('0xd2')]({'where':_0x2a22da,'defaults':_0x24c966});}})[_0x3ddf('0xb8')](function(_0x25f23a){if(_0x25f23a){_0x44144a=_0x25f23a;var _0x4fc021=fs[_0x3ddf('0xd3')](path[_0x3ddf('0x7e')](config[_0x3ddf('0x79')],_0x3ddf('0xd4')),_0x3ddf('0xd5'));var _0x4b8f14=ejs[_0x3ddf('0xd6')](_0x4fc021,{'body':_[_0x3ddf('0xd7')](_0xd27390[_0x3ddf('0x5e')][_0x3ddf('0x5e')]),'bodyTitle':_0x2bf812[_0x3ddf('0xd8')]});return db['ChatOfflineMessage'][_0x3ddf('0x5d')]({'body':_0x4b8f14,'ContactId':_0x25f23a['id'],'ChatWebsiteId':_0x2bf812['id']});}})[_0x3ddf('0x23')](function(_0x282617){_0x5a8bff=_0x282617;if(_0x2e2d7a[_0x3ddf('0x4c')]){var _0x5d5b5e=_0x2e2d7a['map'](function(_0x51b101){return{'name':_0x51b101['originalname'],'basename':_0x51b101[_0x3ddf('0x72')],'type':_0x51b101[_0x3ddf('0xd9')],'ChatOfflineMessageId':_0x282617['id']};});_0xcdca6d=_0x5d5b5e[_0x3ddf('0x43')](_0x89bc99=>{var _0x1c9bc0={'filename':_0x89bc99[_0x3ddf('0x3e')],'path':path[_0x3ddf('0x7e')](config[_0x3ddf('0x79')],_0x3ddf('0xda'),_0x3ddf('0xcd'),_0x3ddf('0xdb'),_0x3ddf('0xdc'),_0x89bc99[_0x3ddf('0xdd')])};return _0x1c9bc0;});if(!_0x2bf812[_0x3ddf('0xde')]){return db[_0x3ddf('0xdf')][_0x3ddf('0xe0')](function(_0x41e8dd){return db[_0x3ddf('0xe1')][_0x3ddf('0xe2')](_0x5d5b5e,{'transaction':_0x41e8dd});});}}})[_0x3ddf('0x23')](function(){if(_0x5a8bff){_0x42671=_0x5a8bff;return db[_0x3ddf('0xd1')][_0x3ddf('0x69')]({'where':{'active':!![]},'include':[{'model':db[_0x3ddf('0xe3')],'as':_0x3ddf('0xe4'),'raw':!![]}]});}})['then'](function(_0x14fda2){if(_0x14fda2&&_0x14fda2[_0x3ddf('0xe4')]&&_0x2bf812[_0x3ddf('0xe5')]&&_0x2bf812[_0x3ddf('0xe6')]){var _0x3cb7c4={'tls':{'rejectUnauthorized':![]}};if(_0x14fda2['Smtp']['service']){_0x3cb7c4['service']=_0x14fda2[_0x3ddf('0xe4')]['service'];}else{_0x3cb7c4['host']=_0x14fda2[_0x3ddf('0xe4')][_0x3ddf('0xe7')];_0x3cb7c4[_0x3ddf('0xe8')]=_0x14fda2[_0x3ddf('0xe4')][_0x3ddf('0xe8')];_0x3cb7c4['secure']=_0x14fda2[_0x3ddf('0xe4')][_0x3ddf('0xe9')];}if(_0x14fda2[_0x3ddf('0xe4')][_0x3ddf('0xea')]){_0x3cb7c4[_0x3ddf('0xeb')]={'user':_0x14fda2[_0x3ddf('0xe4')]['user'],'pass':_0x14fda2[_0x3ddf('0xe4')]['pass']};}return respondWithRpcPromise(_0x3ddf('0xec'),_0x3ddf('0xed'),{'account':_0x3cb7c4,'message':{'from':util[_0x3ddf('0xae')]('\x22%s\x22\x20<%s>',_0x14fda2[_0x3ddf('0x3e')],_0x14fda2[_0x3ddf('0xee')]||_0x14fda2[_0x3ddf('0xe4')][_0x3ddf('0x5f')]),'to':_0x2bf812[_0x3ddf('0xe6')],'subject':_0x2bf812[_0x3ddf('0xef')],'html':_0x42671[_0x3ddf('0x5e')],'attachments':_0xcdca6d}},client9003)[_0x3ddf('0x23')](function(){return _0x42671;})['catch'](function(_0x4cc4c7){console['error'](_0x4cc4c7);});}})[_0x3ddf('0x23')](function(){if(_0x2bf812&&_0x2bf812[_0x3ddf('0xde')]&&_0x2bf812['MailAccountId']){var _0x238f90=[];if(_0x2e2d7a[_0x3ddf('0x4c')]){_0x238f90=_0x2e2d7a[_0x3ddf('0x43')](function(_0x55f0ce){return{'name':_0x55f0ce[_0x3ddf('0xf0')],'basename':_0x55f0ce[_0x3ddf('0x72')],'type':_0x55f0ce[_0x3ddf('0xd9')],'ChatOfflineMessageId':_0x5a8bff['id']};});}var _0x8f8f81;if(!_['isNil'](_0x2bf812[_0x3ddf('0xf1')])){var _0x4aa403=_[_0x3ddf('0x43')](_0xd27390[_0x3ddf('0x5e')],function(_0x46328e){return _0x46328e;});var _0x177d96=_[_0x3ddf('0xf2')](_0x4aa403)[0x0];var _0x61851d=_['mapValues'](_0x177d96,function(_0x112e0a){return _0x112e0a;});_0x8f8f81=_0x61851d[0x1][_0x2bf812[_0x3ddf('0xf1')]];}var _0x22d3fd={'from':_0x44144a[_0x3ddf('0xee')],'firstName':_0x44144a[_0x3ddf('0xa9')],'lastName':_0x44144a[_0x3ddf('0xaa')],'mapKey':_0x3ddf('0xee'),'message':{'from':_0x44144a[_0x3ddf('0xee')],'to':_0x2bf812['MailAccount']['email'],'cc':'','subject':_['isNil'](_0x8f8f81)?_0x2bf812['offlineMessageSubject']:_0x8f8f81,'messageId':'','sentAt':new Date(),'attach':_0x238f90[_0x3ddf('0x4c')],'attachments':_0x238f90,'originChannel':_0x3ddf('0xf3'),'ChatWebsiteId':_0x2bf812['id'],'ChatOfflineMessageId':_0x42671['id'],'originTo':_0x2bf812[_0x3ddf('0xd1')][_0x3ddf('0xee')]},'body':_0x42671[_0x3ddf('0x5e')]};var _0x1e10aa={'account':{'id':_0x2bf812[_0x3ddf('0xf4')]},'body':_0x22d3fd,'log':'NotifyMailAccount'};return respondWithRpcPromise('NotifyMailAccount',_0x3ddf('0xf5'),_0x1e10aa,client9001)['then'](function(){return _0x42671;})[_0x3ddf('0x2d')](function(_0x4fdfb0){console[_0x3ddf('0x29')](_0x4fdfb0);});}return;})[_0x3ddf('0x23')](function(){if(_0x42671){return _0x42671;}})[_0x3ddf('0x23')](respondWithResult(_0x4de61e,null))['catch'](function(_0x42ea33){console['error'](_0x3ddf('0x2d'),_0x42ea33);for(var _0x5a5eba of _0x2e2d7a){var _0x51f4ad=path['join'](config[_0x3ddf('0x79')],'server',_0x3ddf('0xcd'),'attachments',_0x3ddf('0xdc'),_0x5a5eba[_0x3ddf('0x72')]);fs_extra[_0x3ddf('0xf6')](_0x51f4ad)[_0x3ddf('0x2d')](function(_0x3f708b){console[_0x3ddf('0x29')](_0x3ddf('0xf7'),_0x51f4ad,_0x3f708b);});}});};exports[_0x3ddf('0xf8')]=function(_0x2f57cf,_0x57893d,_0x53bb75){return db[_0x3ddf('0xb4')][_0x3ddf('0x62')]({'where':{'id':_0x2f57cf[_0x3ddf('0x58')]['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0x57893d,null))[_0x3ddf('0x23')](function(_0x1795e7){if(_0x1795e7){return _0x1795e7['addInteraction'](_0x2f57cf[_0x3ddf('0x5e')][_0x3ddf('0xf9')],_[_0x3ddf('0xfa')](_0x2f57cf[_0x3ddf('0x5e')],[_0x3ddf('0xf9'),'id'])||{});}})[_0x3ddf('0x23')](respondWithResult(_0x57893d,null))[_0x3ddf('0x2d')](handleError(_0x57893d,null));};exports[_0x3ddf('0xfb')]=function(_0x22f8ab,_0x5607ed,_0x14fca2){var _0x39392b={'raw':![],'where':{}};var _0x5cbbeb={};var _0x5c2c65={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x3ddf('0x69')]({'where':{'id':_0x22f8ab[_0x3ddf('0x58')]['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0x5607ed,null))[_0x3ddf('0x23')](function(_0x52934a){if(_0x52934a){_0x5cbbeb['model']=_['keys'](db[_0x3ddf('0xb4')]['rawAttributes']);_0x5cbbeb[_0x3ddf('0x48')]=_[_0x3ddf('0x49')](_0x22f8ab[_0x3ddf('0x48')]);_0x5cbbeb[_0x3ddf('0x4a')]=_['intersection'](_0x5cbbeb[_0x3ddf('0x47')],_0x5cbbeb['query']);_0x39392b[_0x3ddf('0x59')]=_[_0x3ddf('0x4b')](_0x5cbbeb[_0x3ddf('0x47')],qs[_0x3ddf('0x5a')](_0x22f8ab[_0x3ddf('0x48')][_0x3ddf('0x5a')]));_0x39392b[_0x3ddf('0x59')]=_0x39392b[_0x3ddf('0x59')][_0x3ddf('0x4c')]?_0x39392b[_0x3ddf('0x59')]:_0x5cbbeb[_0x3ddf('0x47')];if(!_0x22f8ab[_0x3ddf('0x48')][_0x3ddf('0x6b')](_0x3ddf('0x4d'))){_0x39392b['limit']=qs[_0x3ddf('0x4e')](_0x22f8ab['query'][_0x3ddf('0x4e')]);_0x39392b[_0x3ddf('0x30')]=qs[_0x3ddf('0x30')](_0x22f8ab[_0x3ddf('0x48')][_0x3ddf('0x30')]);}_0x39392b['order']=qs[_0x3ddf('0x50')](_0x22f8ab[_0x3ddf('0x48')]['sort']);_0x39392b[_0x3ddf('0x51')]=qs[_0x3ddf('0x4a')](_[_0x3ddf('0x6c')](_0x22f8ab[_0x3ddf('0x48')],_0x5cbbeb['filters']));_0x39392b[_0x3ddf('0x51')]['ChatWebsiteId']=_0x52934a['id'];if(_0x22f8ab['query'][_0x3ddf('0x52')]){_0x39392b['where']=_['merge'](_0x39392b[_0x3ddf('0x51')],{'$or':_[_0x3ddf('0x43')](_0x39392b[_0x3ddf('0x59')],function(_0x495b2c){var _0x2ada8f={};_0x2ada8f[_0x495b2c]={'$like':'%'+_0x22f8ab[_0x3ddf('0x48')]['filter']+'%'};return _0x2ada8f;})});}_0x39392b=_[_0x3ddf('0x53')]({},_0x39392b,_0x22f8ab[_0x3ddf('0x5c')]);return db[_0x3ddf('0xb4')][_0x3ddf('0x32')]({'where':_0x39392b['where']})[_0x3ddf('0x23')](function(_0x38cba3){_0x5c2c65['count']=_0x38cba3;if(_0x22f8ab['query'][_0x3ddf('0x54')]){_0x39392b[_0x3ddf('0x5b')]=[{'model':db[_0x3ddf('0x8c')],'as':_0x3ddf('0xfc'),'required':![]},{'model':db[_0x3ddf('0xc3')],'as':_0x3ddf('0xfd'),'attributes':[_0x3ddf('0x3e'),_0x3ddf('0xfe'),_0x3ddf('0xff')],'required':![]},{'model':db[_0x3ddf('0x100')],'as':_0x3ddf('0x101'),'attributes':['id',_0x3ddf('0x3e'),_0x3ddf('0x102')],'where':_0x22f8ab[_0x3ddf('0x48')][_0x3ddf('0x103')]?{'id':_0x22f8ab[_0x3ddf('0x48')][_0x3ddf('0x103')]}:undefined,'required':_0x22f8ab['query'][_0x3ddf('0x103')]?!![]:![]}];}return db[_0x3ddf('0xb4')][_0x3ddf('0x55')](_0x39392b);})['then'](function(_0x156166){_0x5c2c65[_0x3ddf('0x56')]=_0x156166;return _0x5c2c65;});}})[_0x3ddf('0x23')](respondWithFilteredResult(_0x5607ed,_0x39392b))['catch'](handleError(_0x5607ed,null));};function iftimePromise(_0x59d683,_0x11c7e2){return respondWithRpcPromise('Command',_0x3ddf('0x104'),{'command':_0x11c7e2['timezone']?util[_0x3ddf('0xae')]('iftime\x20%s,%s',_0x59d683['interval'],_0x11c7e2[_0x3ddf('0x105')]):util[_0x3ddf('0xae')](_0x3ddf('0x106'),_0x59d683['interval'])},client9002)[_0x3ddf('0x23')](function(_0xef9354){var _0x3a4800=_0xef9354&&_0xef9354['indexOf'](_0x3ddf('0x107'))>=0x0?!![]:![];logger[_0x3ddf('0x24')](_0x3ddf('0x108'),_0x11c7e2['id'],_0x59d683['id'],_0x59d683['interval'],_0x3a4800?_0x3ddf('0x109'):_0x3ddf('0x10a'),_0x11c7e2[_0x3ddf('0x105')]?_0x11c7e2[_0x3ddf('0x105')]:_0x3ddf('0x10b'));return _0x3a4800;})[_0x3ddf('0x2d')](function(_0x5b8360){logger[_0x3ddf('0x29')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x11c7e2['id'],_0x59d683['id'],_0x59d683[_0x3ddf('0x10c')],util['inspect'](_0x5b8360,{'showHidden':![],'depth':null}),_0x11c7e2[_0x3ddf('0x105')]?_0x11c7e2[_0x3ddf('0x105')]:_0x3ddf('0x10b'));return![];});}exports[_0x3ddf('0x104')]=function(_0x21c8a9,_0x4efe95,_0x326451){var _0x473ffb=0x0;var _0x316313=0x0;var _0xf135fb=![];var _0x214095;var _0x5e8616;return db[_0x3ddf('0x44')][_0x3ddf('0x62')]({'where':{'id':_0x21c8a9[_0x3ddf('0x58')]['id']},'include':[{'model':db['Interval'],'as':_0x3ddf('0x10d'),'include':[{'model':db[_0x3ddf('0x10d')],'as':'Intervals','attributes':['id',_0x3ddf('0x10c')],'raw':!![]}]}]})[_0x3ddf('0x23')](handleEntityNotFound(_0x4efe95,null))[_0x3ddf('0x23')](function(_0x300b38){if(_0x300b38){_0x214095=_0x300b38;return _0x300b38['getProactiveActions']({'raw':!![]});}})[_0x3ddf('0x23')](function(_0x333334){if(_0x214095){if(_0x333334){_0x5e8616=_0x333334;}}return require(_0x3ddf('0x1a'))[_0x3ddf('0x7b')]();})[_0x3ddf('0x23')](function(_0x4ab1a9){if(_0x4ab1a9){_0x316313=_0x4ab1a9['virtual'];_0xf135fb=_0x4ab1a9[_0x3ddf('0x10e')];}})['then'](function(){return db['ChatInteraction'][_0x3ddf('0x32')]({'where':{'closed':![]}});})['then'](function(_0x5f14c6){_0x473ffb=_0x5f14c6;if(_0x316313&&_0x5f14c6>_0x316313){return db['License'][_0x3ddf('0x69')]({'where':{'id':0x1}})['then'](function(_0x245709){if(_0x245709){_0x245709[_0x3ddf('0x10f')](_0x3ddf('0x110'));}});}})[_0x3ddf('0x23')](function(){if(_0x214095[_0x3ddf('0x10d')]&&_0x214095['Interval'][_0x3ddf('0x111')]){var _0x3c4fb2=[];for(var _0x331fdd=0x0;_0x331fdd<_0x214095[_0x3ddf('0x10d')]['Intervals']['length'];_0x331fdd++){var _0x12d7ff=_0x214095[_0x3ddf('0x10d')]['Intervals'][_0x331fdd]['get']({'plain':!![]});_0x3c4fb2[_0x3ddf('0xbc')](iftimePromise(_0x12d7ff,_0x214095));}return BPromise[_0x3ddf('0x112')](_0x3c4fb2)[_0x3ddf('0x23')](function(_0x195150){return _[_0x3ddf('0x113')](_0x195150);});}else{return!![];}})[_0x3ddf('0x23')](function(_0xbc0253){var _0xd412bc=fs[_0x3ddf('0xd3')](path[_0x3ddf('0x7e')](config[_0x3ddf('0x79')],_0x3ddf('0x114')),'utf8');var _0x37a864={'remote':_0x214095['remote'],'query':querystring[_0x3ddf('0x28')](_[_0x3ddf('0x53')](_0x214095[_0x3ddf('0x38')]({'plain':!![]}),{'customerIp':_0x21c8a9[_0x3ddf('0x88')][_0x3ddf('0xa7')]||_0x21c8a9[_0x3ddf('0x88')][_0x3ddf('0x115')]||_0x21c8a9[_0x3ddf('0x116')][_0x3ddf('0x117')]||_0x21c8a9['ip'],'referer':_0x21c8a9[_0x3ddf('0x88')][_0x3ddf('0x118')],'openedInteractions':_0x473ffb,'maxInteractions':_0x316313,'virtual':_0xf135fb[_0x3ddf('0x119')],'online':_0xbc0253,'custom':_0xf135fb}))[_0x3ddf('0x11a')](/'/g,'\x5c\x27')};_0x4efe95['send'](ejs[_0x3ddf('0xd6')](Mustache[_0x3ddf('0xd6')](_0xd412bc,_0x37a864),{'proactiveActions':_0x5e8616,'alignment':_0x214095[_0x3ddf('0x11b')],'verticalAlignment':_0x214095[_0x3ddf('0x11c')],'div_color':_0x214095[_0x3ddf('0x102')],'text_color':_0x214095[_0x3ddf('0x11d')],'button_color':_0x214095['color_button'],'background_color':_0x214095[_0x3ddf('0x11e')]}));})['catch'](handleError(_0x4efe95,null));};exports[_0x3ddf('0x11f')]=function(_0x46dd5d,_0x11c990,_0x47ea24){return db['ChatWebsite']['findOne']({'where':{'id':_0x46dd5d[_0x3ddf('0x58')]['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0x11c990,null))[_0x3ddf('0x23')](function(_0x268a89){if(_0x268a89){return db[_0x3ddf('0xdf')]['transaction'](function(_0x4c5f1e){return db[_0x3ddf('0x9e')][_0x3ddf('0x37')]({'where':{'ChatWebsiteId':_0x46dd5d['params']['id']},'transaction':_0x4c5f1e})['then'](function(_0x5a2a52){var _0x2ae280=_[_0x3ddf('0x43')](_0x46dd5d[_0x3ddf('0x5e')],function(_0x43d84f){_0x43d84f['ChatWebsiteId']=_0x46dd5d[_0x3ddf('0x58')]['id'];return _0x43d84f;});return db[_0x3ddf('0x9e')][_0x3ddf('0xe2')](_0x2ae280,{'transaction':_0x4c5f1e});});})[_0x3ddf('0x23')](function(){return db['ChatApplication'][_0x3ddf('0x120')]({'where':{'ChatWebsiteId':_0x46dd5d[_0x3ddf('0x58')]['id']},'order':_0x3ddf('0xa3')});});}})[_0x3ddf('0x23')](respondWithResult(_0x11c990,null))['catch'](handleError(_0x11c990,null));};exports[_0x3ddf('0x121')]=function(_0x2f3171,_0x2cc3d4,_0x1366b2){var _0x1a70bb={};var _0x2e151e={};var _0xcdac77;var _0x259c9a;return db[_0x3ddf('0x44')]['findOne']({'where':{'id':_0x2f3171[_0x3ddf('0x58')]['id']}})['then'](handleEntityNotFound(_0x2cc3d4,null))[_0x3ddf('0x23')](function(_0x142091){if(_0x142091){_0xcdac77=_0x142091;_0x2e151e['model']=_['keys'](db['ChatApplication'][_0x3ddf('0x45')]);_0x2e151e[_0x3ddf('0x48')]=_[_0x3ddf('0x49')](_0x2f3171[_0x3ddf('0x48')]);_0x2e151e['filters']=_[_0x3ddf('0x4b')](_0x2e151e[_0x3ddf('0x47')],_0x2e151e[_0x3ddf('0x48')]);_0x1a70bb[_0x3ddf('0x59')]=_[_0x3ddf('0x4b')](_0x2e151e[_0x3ddf('0x47')],qs['fields'](_0x2f3171[_0x3ddf('0x48')][_0x3ddf('0x5a')]));_0x1a70bb['attributes']=_0x1a70bb[_0x3ddf('0x59')][_0x3ddf('0x4c')]?_0x1a70bb[_0x3ddf('0x59')]:_0x2e151e['model'];_0x1a70bb['order']=qs[_0x3ddf('0x50')](_0x2f3171[_0x3ddf('0x48')][_0x3ddf('0x50')]);_0x1a70bb['where']=qs[_0x3ddf('0x4a')](_['pick'](_0x2f3171[_0x3ddf('0x48')],_0x2e151e['filters']));if(_0x2f3171[_0x3ddf('0x48')][_0x3ddf('0x52')]){_0x1a70bb['where']=_['merge'](_0x1a70bb[_0x3ddf('0x51')],{'$or':_[_0x3ddf('0x43')](_0x1a70bb['attributes'],function(_0x1cbe76){var _0x3180ab={};_0x3180ab[_0x1cbe76]={'$like':'%'+_0x2f3171[_0x3ddf('0x48')][_0x3ddf('0x52')]+'%'};return _0x3180ab;})});}_0x1a70bb=_['merge']({},_0x1a70bb,_0x2f3171[_0x3ddf('0x5c')]);return _0xcdac77[_0x3ddf('0x121')](_0x1a70bb);}})['then'](function(_0x191db4){if(_0x191db4){_0x259c9a=_0x191db4[_0x3ddf('0x4c')];if(!_0x2f3171[_0x3ddf('0x48')][_0x3ddf('0x6b')](_0x3ddf('0x4d'))){_0x1a70bb[_0x3ddf('0x4e')]=qs[_0x3ddf('0x4e')](_0x2f3171['query'][_0x3ddf('0x4e')]);_0x1a70bb[_0x3ddf('0x30')]=qs[_0x3ddf('0x30')](_0x2f3171['query']['offset']);}return _0xcdac77[_0x3ddf('0x121')](_0x1a70bb);}})['then'](function(_0x19c6f9){if(_0x19c6f9){return _0x19c6f9?{'count':_0x259c9a,'rows':_0x19c6f9}:null;}})[_0x3ddf('0x23')](respondWithResult(_0x2cc3d4,null))[_0x3ddf('0x2d')](handleError(_0x2cc3d4,null));};exports[_0x3ddf('0x122')]=function(_0x3ae50f,_0x27bfd2,_0x18078e){return db[_0x3ddf('0x123')]['find']({'where':{'id':_0x3ae50f[_0x3ddf('0x58')]['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0x27bfd2,null))[_0x3ddf('0x23')](function(_0x56cf3e){if(_0x56cf3e){return _0x56cf3e[_0x3ddf('0x122')](_0x3ae50f['body'][_0x3ddf('0xf9')],_[_0x3ddf('0xfa')](_0x3ae50f[_0x3ddf('0x5e')],[_0x3ddf('0xf9'),'id'])||{});}})[_0x3ddf('0x23')](respondWithResult(_0x27bfd2,null))['catch'](handleError(_0x27bfd2,null));};exports[_0x3ddf('0x124')]=function(_0x3ae02c,_0x150a3e,_0x4811e8){var _0x116e0b={};var _0x2d1f25={};var _0x5d2034;var _0x1d9dcb;return db['ChatWebsite'][_0x3ddf('0x69')]({'where':{'id':_0x3ae02c[_0x3ddf('0x58')]['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0x150a3e,null))[_0x3ddf('0x23')](function(_0x463269){if(_0x463269){_0x5d2034=_0x463269;_0x2d1f25[_0x3ddf('0x47')]=_['keys'](db[_0x3ddf('0x125')][_0x3ddf('0x45')]);_0x2d1f25[_0x3ddf('0x48')]=_[_0x3ddf('0x49')](_0x3ae02c['query']);_0x2d1f25[_0x3ddf('0x4a')]=_[_0x3ddf('0x4b')](_0x2d1f25[_0x3ddf('0x47')],_0x2d1f25[_0x3ddf('0x48')]);_0x116e0b[_0x3ddf('0x59')]=_['intersection'](_0x2d1f25[_0x3ddf('0x47')],qs[_0x3ddf('0x5a')](_0x3ae02c['query'][_0x3ddf('0x5a')]));_0x116e0b['attributes']=_0x116e0b[_0x3ddf('0x59')]['length']?_0x116e0b[_0x3ddf('0x59')]:_0x2d1f25[_0x3ddf('0x47')];_0x116e0b[_0x3ddf('0x4f')]=qs[_0x3ddf('0x50')](_0x3ae02c[_0x3ddf('0x48')][_0x3ddf('0x50')]);_0x116e0b['where']=qs[_0x3ddf('0x4a')](_['pick'](_0x3ae02c[_0x3ddf('0x48')],_0x2d1f25[_0x3ddf('0x4a')]));if(_0x3ae02c[_0x3ddf('0x48')][_0x3ddf('0x52')]){_0x116e0b[_0x3ddf('0x51')]=_[_0x3ddf('0x53')](_0x116e0b['where'],{'$or':_[_0x3ddf('0x43')](_0x116e0b['attributes'],function(_0x5859ea){var _0x212f95={};_0x212f95[_0x5859ea]={'$like':'%'+_0x3ae02c[_0x3ddf('0x48')][_0x3ddf('0x52')]+'%'};return _0x212f95;})});}_0x116e0b=_[_0x3ddf('0x53')]({},_0x116e0b,_0x3ae02c[_0x3ddf('0x5c')]);return _0x5d2034['getProactiveActions'](_0x116e0b);}})[_0x3ddf('0x23')](function(_0x348f79){if(_0x348f79){_0x1d9dcb=_0x348f79[_0x3ddf('0x4c')];if(!_0x3ae02c[_0x3ddf('0x48')][_0x3ddf('0x6b')](_0x3ddf('0x4d'))){_0x116e0b[_0x3ddf('0x4e')]=qs[_0x3ddf('0x4e')](_0x3ae02c[_0x3ddf('0x48')][_0x3ddf('0x4e')]);_0x116e0b['offset']=qs['offset'](_0x3ae02c[_0x3ddf('0x48')][_0x3ddf('0x30')]);}return _0x5d2034[_0x3ddf('0x124')](_0x116e0b);}})[_0x3ddf('0x23')](function(_0x3a0e84){if(_0x3a0e84){return _0x3a0e84?{'count':_0x1d9dcb,'rows':_0x3a0e84}:null;}})['then'](respondWithResult(_0x150a3e,null))['catch'](handleError(_0x150a3e,null));};exports['getFields']=function(_0x22d1b2,_0xf33bb7,_0x2b0591){var _0x5990ef=_0x22d1b2[_0x3ddf('0x48')][_0x3ddf('0x126')]===_0x3ddf('0x127')?'offlineForm':_0x3ddf('0x128');return db['ChatWebsite'][_0x3ddf('0x62')]({'attributes':['id',_0x5990ef],'where':{'id':_0x22d1b2[_0x3ddf('0x58')]['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0xf33bb7,null))[_0x3ddf('0x23')](function(_0x5c8ecc){if(_0x5c8ecc){var _0x1d69de=_0x5c8ecc[_0x5990ef];var _0x9ae10a=_0x1d69de&&_0x1d69de[_0x3ddf('0x129')]?_0x1d69de['items']:[];_0xf33bb7[_0x3ddf('0x3f')]({'fromKey':_[_0x3ddf('0x7c')](_0x1d69de['fromKey'])?undefined:_0x1d69de['fromKey'],'count':_0x9ae10a['length'],'rows':_0x9ae10a});}})[_0x3ddf('0x2d')](handleError(_0xf33bb7,null));};exports['getOfflineMessages']=function(_0x353970,_0x13855e,_0x1a5d90){var _0x5356ca={'raw':![],'where':{}};var _0x507e80={};var _0x354717={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x3ddf('0x69')]({'where':{'id':_0x353970[_0x3ddf('0x58')]['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0x13855e,null))[_0x3ddf('0x23')](function(_0x164430){if(_0x164430){_0x507e80[_0x3ddf('0x47')]=_[_0x3ddf('0x49')](db[_0x3ddf('0x12a')][_0x3ddf('0x45')]);_0x507e80[_0x3ddf('0x48')]=_['keys'](_0x353970['query']);_0x507e80[_0x3ddf('0x4a')]=_[_0x3ddf('0x4b')](_0x507e80[_0x3ddf('0x47')],_0x507e80[_0x3ddf('0x48')]);_0x5356ca[_0x3ddf('0x59')]=_[_0x3ddf('0x4b')](_0x507e80[_0x3ddf('0x47')],qs[_0x3ddf('0x5a')](_0x353970[_0x3ddf('0x48')][_0x3ddf('0x5a')]));_0x5356ca[_0x3ddf('0x59')]=_0x5356ca[_0x3ddf('0x59')][_0x3ddf('0x4c')]?_0x5356ca['attributes']:_0x507e80['model'];if(!_0x353970[_0x3ddf('0x48')]['hasOwnProperty'](_0x3ddf('0x4d'))){_0x5356ca[_0x3ddf('0x4e')]=qs[_0x3ddf('0x4e')](_0x353970[_0x3ddf('0x48')]['limit']);_0x5356ca[_0x3ddf('0x30')]=qs[_0x3ddf('0x30')](_0x353970['query'][_0x3ddf('0x30')]);}_0x5356ca[_0x3ddf('0x4f')]=qs[_0x3ddf('0x50')](_0x353970['query'][_0x3ddf('0x50')]);_0x5356ca[_0x3ddf('0x51')]=qs[_0x3ddf('0x4a')](_[_0x3ddf('0x6c')](_0x353970[_0x3ddf('0x48')],_0x507e80[_0x3ddf('0x4a')]));_0x5356ca[_0x3ddf('0x51')]['ChatWebsiteId']=_0x164430['id'];if(_0x353970[_0x3ddf('0x48')][_0x3ddf('0x52')]){_0x5356ca[_0x3ddf('0x51')]=_['merge'](_0x5356ca['where'],{'$or':_[_0x3ddf('0x43')](_0x5356ca[_0x3ddf('0x59')],function(_0x4dbffb){var _0x32c137={};_0x32c137[_0x4dbffb]={'$like':'%'+_0x353970[_0x3ddf('0x48')]['filter']+'%'};return _0x32c137;})});}_0x5356ca=_['merge']({},_0x5356ca,_0x353970[_0x3ddf('0x5c')]);return db['ChatOfflineMessage'][_0x3ddf('0x32')]({'where':_0x5356ca[_0x3ddf('0x51')]})['then'](function(_0x145dd9){_0x354717[_0x3ddf('0x32')]=_0x145dd9;if(_0x353970['query']['includeAll']){_0x5356ca[_0x3ddf('0x5b')]=[{'all':!![]}];}else{_0x5356ca[_0x3ddf('0x5b')]=[{'model':db['CmContact'],'as':_0x3ddf('0xfc'),'required':![]},{'model':db['Attachment'],'as':_0x3ddf('0x12b'),'required':![]}];}return db['ChatOfflineMessage'][_0x3ddf('0x55')](_0x5356ca);})[_0x3ddf('0x23')](function(_0x42415a){_0x354717['rows']=_0x42415a;return _0x354717;});}})[_0x3ddf('0x23')](respondWithFilteredResult(_0x13855e,_0x5356ca))[_0x3ddf('0x2d')](handleError(_0x13855e,null));};exports[_0x3ddf('0x12c')]=function(_0x2ef063,_0x44ae13,_0x5b8fe1){return db[_0x3ddf('0x44')][_0x3ddf('0x62')]({'where':{'id':_0x2ef063[_0x3ddf('0x58')]['id']}})['then'](handleEntityNotFound(_0x44ae13,null))[_0x3ddf('0x23')](function(_0x1f5a5e){if(_0x1f5a5e){return _0x1f5a5e[_0x3ddf('0x12c')](_0x2ef063['body'][_0x3ddf('0xf9')],_['omit'](_0x2ef063['body'],[_0x3ddf('0xf9'),'id'])||{})['spread'](function(_0x43cee6){for(var _0x18ede9=0x0;_0x18ede9<_0x2ef063[_0x3ddf('0x5e')]['ids'][_0x3ddf('0x4c')];_0x18ede9+=0x1){socket[_0x3ddf('0x12d')]('userChatWebsite:save',{'UserId':Number(_0x2ef063['body'][_0x3ddf('0xf9')][_0x18ede9]),'ChatWebsiteId':Number(_0x2ef063[_0x3ddf('0x58')]['id'])});}return _0x43cee6;});}})['then'](respondWithResult(_0x44ae13,null))[_0x3ddf('0x2d')](handleError(_0x44ae13,null));};exports[_0x3ddf('0x12e')]=function(_0x1ad194,_0x4eb014,_0x5140d6){return db[_0x3ddf('0x44')][_0x3ddf('0x62')]({'where':{'id':_0x1ad194[_0x3ddf('0x58')]['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0x4eb014,null))[_0x3ddf('0x23')](function(_0x573678){if(_0x573678){return _0x573678[_0x3ddf('0x12e')](_0x1ad194[_0x3ddf('0x48')]['ids'])[_0x3ddf('0x23')](function(){if(_['isArray'](_0x1ad194[_0x3ddf('0x48')]['ids'])){for(var _0x521ce2=0x0;_0x521ce2<_0x1ad194[_0x3ddf('0x48')]['ids'][_0x3ddf('0x4c')];_0x521ce2+=0x1){socket['emit'](_0x3ddf('0x12f'),{'UserId':Number(_0x1ad194[_0x3ddf('0x48')]['ids'][_0x521ce2]),'ChatWebsiteId':Number(_0x1ad194[_0x3ddf('0x58')]['id'])});}}else{socket[_0x3ddf('0x12d')](_0x3ddf('0x12f'),{'UserId':Number(_0x1ad194[_0x3ddf('0x48')][_0x3ddf('0xf9')]),'ChatWebsiteId':Number(_0x1ad194[_0x3ddf('0x58')]['id'])});}});}})[_0x3ddf('0x23')](respondWithStatusCode(_0x4eb014,null))[_0x3ddf('0x2d')](handleError(_0x4eb014,null));};exports[_0x3ddf('0x130')]=function(_0x3e851c,_0x184690,_0x4edfa8){var _0x2893d4={};var _0x47b176={};var _0xadbc5d;var _0x45efbd;return db['ChatWebsite']['findOne']({'where':{'id':_0x3e851c[_0x3ddf('0x58')]['id']}})[_0x3ddf('0x23')](handleEntityNotFound(_0x184690,null))[_0x3ddf('0x23')](function(_0x588797){if(_0x588797){_0xadbc5d=_0x588797;_0x47b176['model']=_[_0x3ddf('0x49')](db['User']['rawAttributes']);_0x47b176['query']=_[_0x3ddf('0x49')](_0x3e851c['query']);_0x47b176[_0x3ddf('0x4a')]=_['intersection'](_0x47b176[_0x3ddf('0x47')],_0x47b176['query']);_0x2893d4[_0x3ddf('0x59')]=_['intersection'](_0x47b176['model'],qs[_0x3ddf('0x5a')](_0x3e851c[_0x3ddf('0x48')]['fields']));_0x2893d4[_0x3ddf('0x59')]=_0x2893d4[_0x3ddf('0x59')][_0x3ddf('0x4c')]?_0x2893d4[_0x3ddf('0x59')]:_0x47b176[_0x3ddf('0x47')];_0x2893d4[_0x3ddf('0x4f')]=qs[_0x3ddf('0x50')](_0x3e851c[_0x3ddf('0x48')][_0x3ddf('0x50')]);_0x2893d4[_0x3ddf('0x51')]=qs[_0x3ddf('0x4a')](_[_0x3ddf('0x6c')](_0x3e851c[_0x3ddf('0x48')],_0x47b176['filters']));if(_0x3e851c[_0x3ddf('0x48')][_0x3ddf('0x52')]){_0x2893d4['where']=_[_0x3ddf('0x53')](_0x2893d4[_0x3ddf('0x51')],{'$or':_[_0x3ddf('0x43')](_0x2893d4[_0x3ddf('0x59')],function(_0x995b48){var _0x6166d4={};_0x6166d4[_0x995b48]={'$like':'%'+_0x3e851c[_0x3ddf('0x48')][_0x3ddf('0x52')]+'%'};return _0x6166d4;})});}_0x2893d4=_[_0x3ddf('0x53')]({},_0x2893d4,_0x3e851c[_0x3ddf('0x5c')]);return _0xadbc5d[_0x3ddf('0x130')](_0x2893d4);}})[_0x3ddf('0x23')](function(_0x11da30){if(_0x11da30){_0x45efbd=_0x11da30[_0x3ddf('0x4c')];if(!_0x3e851c[_0x3ddf('0x48')]['hasOwnProperty']('nolimit')){_0x2893d4['limit']=qs['limit'](_0x3e851c[_0x3ddf('0x48')][_0x3ddf('0x4e')]);_0x2893d4[_0x3ddf('0x30')]=qs[_0x3ddf('0x30')](_0x3e851c[_0x3ddf('0x48')][_0x3ddf('0x30')]);}return _0xadbc5d[_0x3ddf('0x130')](_0x2893d4);}})['then'](function(_0x5325b7){if(_0x5325b7){return _0x5325b7?{'count':_0x45efbd,'rows':_0x5325b7}:null;}})[_0x3ddf('0x23')](respondWithResult(_0x184690,null))[_0x3ddf('0x2d')](handleError(_0x184690,null));};
\ No newline at end of file
index 965abb5..5b822a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x323b=['emit','hasOwnProperty','events','ChatWebsite','setMaxListeners','save','remove'];(function(_0x4745cb,_0x276412){var _0x538f64=function(_0x5f0c98){while(--_0x5f0c98){_0x4745cb['push'](_0x4745cb['shift']());}};_0x538f64(++_0x276412);}(_0x323b,0x1ad));var _0xb323=function(_0x1d8ff0,_0x38071b){_0x1d8ff0=_0x1d8ff0-0x0;var _0x128e01=_0x323b[_0x1d8ff0];return _0x128e01;};'use strict';var EventEmitter=require(_0xb323('0x0'));var ChatWebsite=require('../../mysqldb')['db'][_0xb323('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xb323('0x2')](0x0);var events={'afterCreate':_0xb323('0x3'),'afterUpdate':'update','afterDestroy':_0xb323('0x4')};function emitEvent(_0x4532c7){return function(_0x3bcab5,_0x2132bd,_0x38f1d0){ChatWebsiteEvents[_0xb323('0x5')](_0x4532c7+':'+_0x3bcab5['id'],_0x3bcab5);ChatWebsiteEvents[_0xb323('0x5')](_0x4532c7,_0x3bcab5);_0x38f1d0(null);};}for(var e in events){if(events[_0xb323('0x6')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
+var _0xc9f5=['save','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','ChatWebsite'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xc9f5,0xc4));var _0x5c9f=function(_0x16de68,_0x33d7ff){_0x16de68=_0x16de68-0x0;var _0x1c277e=_0xc9f5[_0x16de68];return _0x1c277e;};'use strict';var EventEmitter=require('events');var ChatWebsite=require(_0x5c9f('0x0'))['db'][_0x5c9f('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5c9f('0x2'),'afterUpdate':_0x5c9f('0x3'),'afterDestroy':_0x5c9f('0x4')};function emitEvent(_0x5a1ee5){return function(_0x4a046a,_0x1af905,_0x57d666){ChatWebsiteEvents[_0x5c9f('0x5')](_0x5a1ee5+':'+_0x4a046a['id'],_0x4a046a);ChatWebsiteEvents['emit'](_0x5a1ee5,_0x4a046a);_0x57d666(null);};}for(var e in events){if(events[_0x5c9f('0x6')](e)){var event=events[e];ChatWebsite[_0x5c9f('0x7')](e,emitEvent(event));}}module[_0x5c9f('0x8')]=ChatWebsiteEvents;
\ No newline at end of file
index baf81c7..ee20049 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2773=['bluebird','request-promise','path','rimraf','../../config/environment','define','ChatWebsite','chat_websites','lodash','util','../../config/logger','api','moment'];(function(_0x5e3701,_0x596265){var _0x345dcf=function(_0x5eb12a){while(--_0x5eb12a){_0x5e3701['push'](_0x5e3701['shift']());}};_0x345dcf(++_0x596265);}(_0x2773,0x1dc));var _0x3277=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x2773[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0x3277('0x0'));var util=require(_0x3277('0x1'));var logger=require(_0x3277('0x2'))(_0x3277('0x3'));var moment=require(_0x3277('0x4'));var BPromise=require(_0x3277('0x5'));var rp=require(_0x3277('0x6'));var fs=require('fs');var path=require(_0x3277('0x7'));var rimraf=require(_0x3277('0x8'));var config=require(_0x3277('0x9'));var attributes=require('./chatWebsite.attributes');module['exports']=function(_0x428144,_0x159da0){return _0x428144[_0x3277('0xa')](_0x3277('0xb'),attributes,{'tableName':_0x3277('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x65d6=['bluebird','request-promise','path','rimraf','../../config/environment','exports','ChatWebsite','chat_websites','lodash','util','../../config/logger','api','moment'];(function(_0x19b842,_0xe362ec){var _0xaf1f88=function(_0x1bebd1){while(--_0x1bebd1){_0x19b842['push'](_0x19b842['shift']());}};_0xaf1f88(++_0xe362ec);}(_0x65d6,0x15a));var _0x665d=function(_0x4a4759,_0x121c35){_0x4a4759=_0x4a4759-0x0;var _0x2453c8=_0x65d6[_0x4a4759];return _0x2453c8;};'use strict';var _=require(_0x665d('0x0'));var util=require(_0x665d('0x1'));var logger=require(_0x665d('0x2'))(_0x665d('0x3'));var moment=require(_0x665d('0x4'));var BPromise=require(_0x665d('0x5'));var rp=require(_0x665d('0x6'));var fs=require('fs');var path=require(_0x665d('0x7'));var rimraf=require(_0x665d('0x8'));var config=require(_0x665d('0x9'));var attributes=require('./chatWebsite.attributes');module[_0x665d('0xa')]=function(_0x573180,_0x2457ae){return _0x573180['define'](_0x665d('0xb'),attributes,{'tableName':_0x665d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1e7aa92..ba4a441 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x710a=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','register','request','then','info','ChatWebsite,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring'];(function(_0x5c437c,_0x48c79a){var _0x1d9d21=function(_0x4836e0){while(--_0x4836e0){_0x5c437c['push'](_0x5c437c['shift']());}};_0x1d9d21(++_0x48c79a);}(_0x710a,0x1e1));var _0xa710=function(_0x3cde08,_0xcd905e){_0x3cde08=_0x3cde08-0x0;var _0x30d4b0=_0x710a[_0x3cde08];return _0x30d4b0;};'use strict';var _=require(_0xa710('0x0'));var util=require(_0xa710('0x1'));var moment=require(_0xa710('0x2'));var BPromise=require(_0xa710('0x3'));var rs=require(_0xa710('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa710('0x5'))['db'];var utils=require(_0xa710('0x6'));var logger=require(_0xa710('0x7'))(_0xa710('0x8'));var config=require(_0xa710('0x9'));var jayson=require(_0xa710('0xa'));var client=jayson[_0xa710('0xb')][_0xa710('0xc')]({'port':0x232a});config[_0xa710('0xd')]=_['defaults'](config[_0xa710('0xd')],{'host':_0xa710('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa710('0xd')]));require('./chatWebsite.socket')[_0xa710('0xf')](socket);function respondWithRpcPromise(_0x5e920f,_0x47bf32,_0x182d4e){return new BPromise(function(_0x5687f5,_0x14208d){return client[_0xa710('0x10')](_0x5e920f,_0x182d4e)[_0xa710('0x11')](function(_0x104b01){logger[_0xa710('0x12')](_0xa710('0x13'),_0x47bf32,'request\x20sent');logger[_0xa710('0x14')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x47bf32,_0xa710('0x15'),JSON[_0xa710('0x16')](_0x104b01));if(_0x104b01[_0xa710('0x17')]){if(_0x104b01['error'][_0xa710('0x18')]===0x1f4){logger[_0xa710('0x17')]('ChatWebsite,\x20%s,\x20%s',_0x47bf32,_0x104b01[_0xa710('0x17')]['message']);return _0x14208d(_0x104b01[_0xa710('0x17')][_0xa710('0x19')]);}logger['error'](_0xa710('0x13'),_0x47bf32,_0x104b01[_0xa710('0x17')][_0xa710('0x19')]);return _0x5687f5(_0x104b01[_0xa710('0x17')][_0xa710('0x19')]);}else{logger[_0xa710('0x12')](_0xa710('0x13'),_0x47bf32,'request\x20sent');_0x5687f5(_0x104b01[_0xa710('0x1a')][_0xa710('0x19')]);}})['catch'](function(_0x5a73a3){logger[_0xa710('0x17')](_0xa710('0x13'),_0x47bf32,_0x5a73a3);_0x14208d(_0x5a73a3);});});}
\ No newline at end of file
+var _0xcad4=['request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','error','code','ChatWebsite,\x20%s,\x20%s','message','result','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','socket.io-emitter','request','then','info'];(function(_0x5b3b2a,_0x311129){var _0x29657c=function(_0x200afa){while(--_0x200afa){_0x5b3b2a['push'](_0x5b3b2a['shift']());}};_0x29657c(++_0x311129);}(_0xcad4,0xf9));var _0x4cad=function(_0x57c99a,_0x48a7b1){_0x57c99a=_0x57c99a-0x0;var _0x4f4ad6=_0xcad4[_0x57c99a];return _0x4f4ad6;};'use strict';var _=require(_0x4cad('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x4cad('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4cad('0x2'));var db=require(_0x4cad('0x3'))['db'];var utils=require(_0x4cad('0x4'));var logger=require(_0x4cad('0x5'))(_0x4cad('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4cad('0x7')][_0x4cad('0x8')]({'port':0x232a});config[_0x4cad('0x9')]=_[_0x4cad('0xa')](config[_0x4cad('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x4cad('0xb'))(new Redis(config['redis']));require('./chatWebsite.socket')['register'](socket);function respondWithRpcPromise(_0xc154a8,_0x190785,_0x41d033){return new BPromise(function(_0xeffea6,_0x44263d){return client[_0x4cad('0xc')](_0xc154a8,_0x41d033)[_0x4cad('0xd')](function(_0x38fa6f){logger[_0x4cad('0xe')]('ChatWebsite,\x20%s,\x20%s',_0x190785,_0x4cad('0xf'));logger['debug'](_0x4cad('0x10'),_0x190785,'request\x20sent',JSON['stringify'](_0x38fa6f));if(_0x38fa6f[_0x4cad('0x11')]){if(_0x38fa6f[_0x4cad('0x11')][_0x4cad('0x12')]===0x1f4){logger[_0x4cad('0x11')](_0x4cad('0x13'),_0x190785,_0x38fa6f['error']['message']);return _0x44263d(_0x38fa6f[_0x4cad('0x11')][_0x4cad('0x14')]);}logger[_0x4cad('0x11')]('ChatWebsite,\x20%s,\x20%s',_0x190785,_0x38fa6f['error'][_0x4cad('0x14')]);return _0xeffea6(_0x38fa6f['error'][_0x4cad('0x14')]);}else{logger['info']('ChatWebsite,\x20%s,\x20%s',_0x190785,_0x4cad('0xf'));_0xeffea6(_0x38fa6f[_0x4cad('0x15')]['message']);}})['catch'](function(_0x45c47a){logger['error'](_0x4cad('0x13'),_0x190785,_0x45c47a);_0x44263d(_0x45c47a);});});}
\ No newline at end of file
index 027ab36..1b90c4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7067=['save','remove','update','emit','chatWebsite:','./chatWebsite.events'];(function(_0x7dbd65,_0x18da49){var _0x33d551=function(_0x7ce789){while(--_0x7ce789){_0x7dbd65['push'](_0x7dbd65['shift']());}};_0x33d551(++_0x18da49);}(_0x7067,0xe9));var _0x7706=function(_0x2bebb1,_0x3affa4){_0x2bebb1=_0x2bebb1-0x0;var _0x229e69=_0x7067[_0x2bebb1];return _0x229e69;};'use strict';var ChatWebsiteEvents=require(_0x7706('0x0'));var events=[_0x7706('0x1'),_0x7706('0x2'),_0x7706('0x3')];function createListener(_0x6e8e66,_0x269db3){return function(_0x4c2456){_0x269db3[_0x7706('0x4')](_0x6e8e66,_0x4c2456);};}function removeListener(_0x5f59e7,_0x59aa43){return function(){ChatWebsiteEvents['removeListener'](_0x5f59e7,_0x59aa43);};}exports['register']=function(_0x3a762c){for(var _0xe527e1=0x0,_0x4f6df4=events['length'];_0xe527e1<_0x4f6df4;_0xe527e1++){var _0x269b66=events[_0xe527e1];var _0x389373=createListener(_0x7706('0x5')+_0x269b66,_0x3a762c);ChatWebsiteEvents['on'](_0x269b66,_0x389373);}};
\ No newline at end of file
+var _0x2c44=['removeListener','chatWebsite:','./chatWebsite.events','save','update','emit'];(function(_0x1e4150,_0x55b02a){var _0x1ce3ee=function(_0x59324e){while(--_0x59324e){_0x1e4150['push'](_0x1e4150['shift']());}};_0x1ce3ee(++_0x55b02a);}(_0x2c44,0x164));var _0x42c4=function(_0x3eccb0,_0x2a887d){_0x3eccb0=_0x3eccb0-0x0;var _0x5b24a6=_0x2c44[_0x3eccb0];return _0x5b24a6;};'use strict';var ChatWebsiteEvents=require(_0x42c4('0x0'));var events=[_0x42c4('0x1'),'remove',_0x42c4('0x2')];function createListener(_0x245f05,_0x265ca2){return function(_0x191dbf){_0x265ca2[_0x42c4('0x3')](_0x245f05,_0x191dbf);};}function removeListener(_0xcf7ea6,_0x4f6fb2){return function(){ChatWebsiteEvents[_0x42c4('0x4')](_0xcf7ea6,_0x4f6fb2);};}exports['register']=function(_0x446063){for(var _0x3e2c64=0x0,_0x2ded77=events['length'];_0x3e2c64<_0x2ded77;_0x3e2c64++){var _0x13d966=events[_0x3e2c64];var _0x5ebeb7=createListener(_0x42c4('0x5')+_0x13d966,_0x446063);ChatWebsiteEvents['on'](_0x13d966,_0x5ebeb7);}};
\ No newline at end of file
index 037c953..2c4ce0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a42=['single','addAvatar','diskStorage','addCustomerAvatar','/:id/system_avatar','addSystemAvatar','/:id/notify','notify','server/files','offline-chat','ensureDir','replace','extname','/:id/offline','offline','addInteraction','addApplications','addProactiveActions','addAgents','put','update','delete','destroy','removeDispositions','removeAnswers','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','isAuthenticated','index','get','/:id','show','/:id/dispositions','/:id/canned_answers','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','getSystemAvatar','/:id/interactions','getInteractions','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','post','addDisposition','addAnswer','join','root','server/files/images/logos/','format','originalname','file','addLogo','server/files/images/avatars/','%s-%s','now'];(function(_0x1fafb7,_0x4e4575){var _0x37b3e9=function(_0x231927){while(--_0x231927){_0x1fafb7['push'](_0x1fafb7['shift']());}};_0x37b3e9(++_0x4e4575);}(_0x1a42,0x13a));var _0x21a4=function(_0x11722b,_0x247eb2){_0x11722b=_0x11722b-0x0;var _0x2065f0=_0x1a42[_0x11722b];return _0x2065f0;};'use strict';var multer=require(_0x21a4('0x0'));var util=require(_0x21a4('0x1'));var path=require('path');var timeout=require(_0x21a4('0x2'));var express=require(_0x21a4('0x3'));var router=express[_0x21a4('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x21a4('0x5'));var interaction=require(_0x21a4('0x6'));var config=require(_0x21a4('0x7'));var controller=require(_0x21a4('0x8'));router['get']('/',auth[_0x21a4('0x9')](),controller[_0x21a4('0xa')]);router[_0x21a4('0xb')]('/describe',auth[_0x21a4('0x9')](),controller['describe']);router[_0x21a4('0xb')](_0x21a4('0xc'),auth['isAuthenticated'](),controller[_0x21a4('0xd')]);router[_0x21a4('0xb')](_0x21a4('0xe'),auth[_0x21a4('0x9')](),controller['getDispositions']);router[_0x21a4('0xb')](_0x21a4('0xf'),auth[_0x21a4('0x9')](),controller['getAnswers']);router[_0x21a4('0xb')]('/:id/logo',controller[_0x21a4('0x10')]);router[_0x21a4('0xb')](_0x21a4('0x11'),controller[_0x21a4('0x12')]);router[_0x21a4('0xb')](_0x21a4('0x13'),controller[_0x21a4('0x14')]);router['get']('/:id/system_avatar',controller[_0x21a4('0x15')]);router[_0x21a4('0xb')](_0x21a4('0x16'),auth[_0x21a4('0x9')](),controller[_0x21a4('0x17')]);router['get']('/:id/snippet',controller[_0x21a4('0x18')]);router[_0x21a4('0xb')](_0x21a4('0x19'),auth[_0x21a4('0x9')](),controller[_0x21a4('0x1a')]);router['get'](_0x21a4('0x1b'),auth['isAuthenticated'](),controller['getProactiveActions']);router[_0x21a4('0xb')]('/:id/fields',controller[_0x21a4('0x1c')]);router[_0x21a4('0xb')](_0x21a4('0x1d'),auth['isAuthenticated'](),controller[_0x21a4('0x1e')]);router['get'](_0x21a4('0x1f'),auth[_0x21a4('0x9')](),controller[_0x21a4('0x20')]);router['post']('/',auth[_0x21a4('0x9')](),controller['create']);router[_0x21a4('0x21')]('/:id/dispositions',auth[_0x21a4('0x9')](),controller[_0x21a4('0x22')]);router[_0x21a4('0x21')](_0x21a4('0xf'),auth[_0x21a4('0x9')](),controller[_0x21a4('0x23')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4f98bb,_0x5353b3,_0xbd0b81){_0xbd0b81(null,path[_0x21a4('0x24')](config[_0x21a4('0x25')],_0x21a4('0x26')));},'filename':function(_0x41f44e,_0x56ded5,_0x3d0f14){_0x3d0f14(null,util[_0x21a4('0x27')]('%s-%s',Date['now'](),_0x56ded5[_0x21a4('0x28')]));}})});router['post']('/:id/logo',upload['single'](_0x21a4('0x29')),controller[_0x21a4('0x2a')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4e6d4e,_0x47e4f0,_0x36071e){_0x36071e(null,path[_0x21a4('0x24')](config[_0x21a4('0x25')],_0x21a4('0x2b')));},'filename':function(_0x59eabb,_0x944544,_0x1a6f67){_0x1a6f67(null,util[_0x21a4('0x27')](_0x21a4('0x2c'),Date[_0x21a4('0x2d')](),_0x944544['originalname']));}})});router[_0x21a4('0x21')](_0x21a4('0x11'),upload[_0x21a4('0x2e')](_0x21a4('0x29')),controller[_0x21a4('0x2f')]);var upload=multer({'storage':multer[_0x21a4('0x30')]({'destination':function(_0x25ad4e,_0x3bd80c,_0x35b65c){_0x35b65c(null,path[_0x21a4('0x24')](config[_0x21a4('0x25')],_0x21a4('0x2b')));},'filename':function(_0x5e207a,_0x2d96d7,_0xd5f4d9){_0xd5f4d9(null,util[_0x21a4('0x27')](_0x21a4('0x2c'),Date[_0x21a4('0x2d')](),_0x2d96d7[_0x21a4('0x28')]));}})});router[_0x21a4('0x21')]('/:id/customer_avatar',upload['single'](_0x21a4('0x29')),controller[_0x21a4('0x31')]);var upload=multer({'storage':multer[_0x21a4('0x30')]({'destination':function(_0xc76ebd,_0xb2aa26,_0x5b04f0){_0x5b04f0(null,path[_0x21a4('0x24')](config['root'],_0x21a4('0x2b')));},'filename':function(_0x3700fa,_0x376f70,_0x387605){_0x387605(null,util[_0x21a4('0x27')](_0x21a4('0x2c'),Date[_0x21a4('0x2d')](),_0x376f70[_0x21a4('0x28')]));}})});router[_0x21a4('0x21')](_0x21a4('0x32'),upload[_0x21a4('0x2e')]('file'),controller[_0x21a4('0x33')]);router[_0x21a4('0x21')](_0x21a4('0x34'),controller[_0x21a4('0x35')]);const offlineUploadMulter=multer({'storage':multer[_0x21a4('0x30')]({'destination':function(_0x2da877,_0x32c39f,_0x5dc94d){const _0x5e83e9=path['join'](config[_0x21a4('0x25')],_0x21a4('0x36'),'attachments',_0x21a4('0x37'));fs_extra[_0x21a4('0x38')](_0x5e83e9,function(){_0x5dc94d(null,_0x5e83e9);});},'filename':function(_0x33356a,_0x48abe0,_0x31050d){const _0x1559c1=_0x48abe0['originalname'][_0x21a4('0x39')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x8c64de=path[_0x21a4('0x3a')](_0x1559c1);const _0x13986f=Date[_0x21a4('0x2d')]()+'-'+_0x1559c1[_0x21a4('0x39')](_0x8c64de,'')+_0x8c64de;_0x31050d(null,_0x13986f);}})});router[_0x21a4('0x21')](_0x21a4('0x3b'),offlineUploadMulter['any'](),controller[_0x21a4('0x3c')]);router[_0x21a4('0x21')](_0x21a4('0x16'),auth[_0x21a4('0x9')](),controller[_0x21a4('0x3d')]);router['post']('/:id/applications',auth[_0x21a4('0x9')](),controller[_0x21a4('0x3e')]);router['post'](_0x21a4('0x1b'),auth[_0x21a4('0x9')](),controller[_0x21a4('0x3f')]);router['post']('/:id/users',auth[_0x21a4('0x9')](),controller[_0x21a4('0x40')]);router[_0x21a4('0x41')](_0x21a4('0xc'),auth['isAuthenticated'](),controller[_0x21a4('0x42')]);router[_0x21a4('0x43')]('/:id',auth[_0x21a4('0x9')](),controller[_0x21a4('0x44')]);router[_0x21a4('0x43')](_0x21a4('0xe'),auth[_0x21a4('0x9')](),controller[_0x21a4('0x45')]);router['delete']('/:id/canned_answers',auth[_0x21a4('0x9')](),controller[_0x21a4('0x46')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0x21a4('0x47')]=router;
\ No newline at end of file
+var _0xb127=['get','describe','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getAvatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','addDisposition','post','diskStorage','join','root','server/files/images/logos/','format','%s-%s','now','originalname','single','file','addLogo','server/files/images/avatars/','addAvatar','addCustomerAvatar','addSystemAvatar','notify','attachments','offline-chat','ensureDir','replace','extname','/:id/offline','any','offline','addInteraction','addApplications','put','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','multer','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatWebsite.controller','isAuthenticated','index'];(function(_0x5f0c58,_0x1ce2e3){var _0x512679=function(_0xe26535){while(--_0xe26535){_0x5f0c58['push'](_0x5f0c58['shift']());}};_0x512679(++_0x1ce2e3);}(_0xb127,0x84));var _0x7b12=function(_0x743f4a,_0x4edb0e){_0x743f4a=_0x743f4a-0x0;var _0x3085d1=_0xb127[_0x743f4a];return _0x3085d1;};'use strict';var multer=require(_0x7b12('0x0'));var util=require('util');var path=require(_0x7b12('0x1'));var timeout=require(_0x7b12('0x2'));var express=require('express');var router=express[_0x7b12('0x3')]();var fs_extra=require(_0x7b12('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x7b12('0x5'));var config=require(_0x7b12('0x6'));var controller=require(_0x7b12('0x7'));router['get']('/',auth[_0x7b12('0x8')](),controller[_0x7b12('0x9')]);router[_0x7b12('0xa')]('/describe',auth[_0x7b12('0x8')](),controller[_0x7b12('0xb')]);router[_0x7b12('0xa')](_0x7b12('0xc'),auth[_0x7b12('0x8')](),controller[_0x7b12('0xd')]);router[_0x7b12('0xa')]('/:id/dispositions',auth[_0x7b12('0x8')](),controller[_0x7b12('0xe')]);router[_0x7b12('0xa')](_0x7b12('0xf'),auth[_0x7b12('0x8')](),controller[_0x7b12('0x10')]);router[_0x7b12('0xa')](_0x7b12('0x11'),controller['getLogo']);router[_0x7b12('0xa')]('/:id/avatar',controller[_0x7b12('0x12')]);router['get']('/:id/customer_avatar',controller[_0x7b12('0x13')]);router[_0x7b12('0xa')](_0x7b12('0x14'),controller[_0x7b12('0x15')]);router[_0x7b12('0xa')](_0x7b12('0x16'),auth[_0x7b12('0x8')](),controller[_0x7b12('0x17')]);router['get'](_0x7b12('0x18'),controller[_0x7b12('0x19')]);router[_0x7b12('0xa')](_0x7b12('0x1a'),auth[_0x7b12('0x8')](),controller[_0x7b12('0x1b')]);router[_0x7b12('0xa')](_0x7b12('0x1c'),auth[_0x7b12('0x8')](),controller[_0x7b12('0x1d')]);router[_0x7b12('0xa')](_0x7b12('0x1e'),controller[_0x7b12('0x1f')]);router[_0x7b12('0xa')](_0x7b12('0x20'),auth[_0x7b12('0x8')](),controller[_0x7b12('0x21')]);router[_0x7b12('0xa')](_0x7b12('0x22'),auth[_0x7b12('0x8')](),controller[_0x7b12('0x23')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/dispositions',auth[_0x7b12('0x8')](),controller[_0x7b12('0x24')]);router[_0x7b12('0x25')](_0x7b12('0xf'),auth[_0x7b12('0x8')](),controller['addAnswer']);var upload=multer({'storage':multer[_0x7b12('0x26')]({'destination':function(_0x45331c,_0x1e6b16,_0x4ee459){_0x4ee459(null,path[_0x7b12('0x27')](config[_0x7b12('0x28')],_0x7b12('0x29')));},'filename':function(_0x2de0ba,_0x3e0d93,_0x44e1ef){_0x44e1ef(null,util[_0x7b12('0x2a')](_0x7b12('0x2b'),Date[_0x7b12('0x2c')](),_0x3e0d93[_0x7b12('0x2d')]));}})});router[_0x7b12('0x25')](_0x7b12('0x11'),upload[_0x7b12('0x2e')](_0x7b12('0x2f')),controller[_0x7b12('0x30')]);var upload=multer({'storage':multer[_0x7b12('0x26')]({'destination':function(_0x59e455,_0x2a86f5,_0x54cd69){_0x54cd69(null,path[_0x7b12('0x27')](config[_0x7b12('0x28')],_0x7b12('0x31')));},'filename':function(_0x342f82,_0x4ea109,_0x328553){_0x328553(null,util[_0x7b12('0x2a')](_0x7b12('0x2b'),Date['now'](),_0x4ea109['originalname']));}})});router[_0x7b12('0x25')]('/:id/avatar',upload['single']('file'),controller[_0x7b12('0x32')]);var upload=multer({'storage':multer[_0x7b12('0x26')]({'destination':function(_0x137d15,_0xe440ae,_0x43c25a){_0x43c25a(null,path[_0x7b12('0x27')](config[_0x7b12('0x28')],'server/files/images/avatars/'));},'filename':function(_0x586fc0,_0x3c0be3,_0x472a67){_0x472a67(null,util[_0x7b12('0x2a')]('%s-%s',Date[_0x7b12('0x2c')](),_0x3c0be3[_0x7b12('0x2d')]));}})});router[_0x7b12('0x25')]('/:id/customer_avatar',upload['single']('file'),controller[_0x7b12('0x33')]);var upload=multer({'storage':multer[_0x7b12('0x26')]({'destination':function(_0x578c9a,_0x4c4690,_0x358372){_0x358372(null,path[_0x7b12('0x27')](config[_0x7b12('0x28')],_0x7b12('0x31')));},'filename':function(_0x4e09c7,_0x30c253,_0x4f559a){_0x4f559a(null,util[_0x7b12('0x2a')](_0x7b12('0x2b'),Date['now'](),_0x30c253[_0x7b12('0x2d')]));}})});router['post'](_0x7b12('0x14'),upload[_0x7b12('0x2e')](_0x7b12('0x2f')),controller[_0x7b12('0x34')]);router[_0x7b12('0x25')]('/:id/notify',controller[_0x7b12('0x35')]);const offlineUploadMulter=multer({'storage':multer[_0x7b12('0x26')]({'destination':function(_0x1cbeeb,_0x3c5445,_0x261725){const _0x500d5d=path[_0x7b12('0x27')](config[_0x7b12('0x28')],'server/files',_0x7b12('0x36'),_0x7b12('0x37'));fs_extra[_0x7b12('0x38')](_0x500d5d,function(){_0x261725(null,_0x500d5d);});},'filename':function(_0x4c2006,_0x2d41fd,_0x1e8958){const _0x51e582=_0x2d41fd[_0x7b12('0x2d')][_0x7b12('0x39')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x5c3b11=path[_0x7b12('0x3a')](_0x51e582);const _0x34435d=Date[_0x7b12('0x2c')]()+'-'+_0x51e582[_0x7b12('0x39')](_0x5c3b11,'')+_0x5c3b11;_0x1e8958(null,_0x34435d);}})});router['post'](_0x7b12('0x3b'),offlineUploadMulter[_0x7b12('0x3c')](),controller[_0x7b12('0x3d')]);router[_0x7b12('0x25')]('/:id/interactions',auth[_0x7b12('0x8')](),controller[_0x7b12('0x3e')]);router[_0x7b12('0x25')](_0x7b12('0x1a'),auth[_0x7b12('0x8')](),controller[_0x7b12('0x3f')]);router['post'](_0x7b12('0x1c'),auth[_0x7b12('0x8')](),controller['addProactiveActions']);router[_0x7b12('0x25')]('/:id/users',auth[_0x7b12('0x8')](),controller['addAgents']);router[_0x7b12('0x40')]('/:id',auth['isAuthenticated'](),controller[_0x7b12('0x41')]);router['delete']('/:id',auth[_0x7b12('0x8')](),controller[_0x7b12('0x42')]);router[_0x7b12('0x43')]('/:id/dispositions',auth[_0x7b12('0x8')](),controller[_0x7b12('0x44')]);router[_0x7b12('0x43')](_0x7b12('0xf'),auth['isAuthenticated'](),controller[_0x7b12('0x45')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller[_0x7b12('0x46')]);module['exports']=router;
\ No newline at end of file
index 234cb20..157fadc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdded=['sequelize','exports','STRING','ENUM','AmazonAWS','Google'];(function(_0x5bbc23,_0x405ac7){var _0x2988a0=function(_0x28c957){while(--_0x28c957){_0x5bbc23['push'](_0x5bbc23['shift']());}};_0x2988a0(++_0x405ac7);}(_0xdded,0x17a));var _0xddde=function(_0x3535d5,_0x1960ff){_0x3535d5=_0x3535d5-0x0;var _0x4c6677=_0xdded[_0x3535d5];return _0x4c6677;};'use strict';var Sequelize=require(_0xddde('0x0'));module[_0xddde('0x1')]={'name':{'type':Sequelize[_0xddde('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xddde('0x3')](_0xddde('0x4'),_0xddde('0x5')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0xddde('0x2')]}};
\ No newline at end of file
+var _0xc4aa=['Google','sequelize','exports','STRING','ENUM','AmazonAWS'];(function(_0xd92415,_0x5aa9ca){var _0x4c9ae6=function(_0x586ad2){while(--_0x586ad2){_0xd92415['push'](_0xd92415['shift']());}};_0x4c9ae6(++_0x5aa9ca);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0xc4aa[_0x1e4360];return _0x31e6b4;};'use strict';var Sequelize=require(_0xac4a('0x0'));module[_0xac4a('0x1')]={'name':{'type':Sequelize[_0xac4a('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xac4a('0x3')](_0xac4a('0x4'),_0xac4a('0x5')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 8e42565..f2337de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','stack','name','send','index','CloudProvider','rawAttributes','fieldName','type','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','merge','where','options','includeAll','include','findAll','rows','catch','keys','find','body','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0x5f2f,0x73));var _0xf5f2=function(_0x511154,_0x1457ba){_0x511154=_0x511154-0x0;var _0x58dde9=_0x5f2f[_0x511154];return _0x58dde9;};'use strict';var emlformat=require(_0xf5f2('0x0'));var rimraf=require(_0xf5f2('0x1'));var zipdir=require(_0xf5f2('0x2'));var jsonpatch=require(_0xf5f2('0x3'));var rp=require(_0xf5f2('0x4'));var moment=require(_0xf5f2('0x5'));var BPromise=require(_0xf5f2('0x6'));var Mustache=require(_0xf5f2('0x7'));var util=require('util');var path=require('path');var sox=require(_0xf5f2('0x8'));var csv=require(_0xf5f2('0x9'));var ejs=require(_0xf5f2('0xa'));var fs=require('fs');var fs_extra=require(_0xf5f2('0xb'));var _=require(_0xf5f2('0xc'));var squel=require(_0xf5f2('0xd'));var crypto=require('crypto');var jsforce=require(_0xf5f2('0xe'));var deskjs=require(_0xf5f2('0xf'));var toCsv=require(_0xf5f2('0x9'));var querystring=require('querystring');var Papa=require(_0xf5f2('0x10'));var Redis=require(_0xf5f2('0x11'));var authService=require(_0xf5f2('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf5f2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf5f2('0x14'));var utils=require(_0xf5f2('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf5f2('0x16'));var db=require(_0xf5f2('0x17'))['db'];function respondWithStatusCode(_0x331482,_0x3f2997){_0x3f2997=_0x3f2997||0xcc;return function(_0x59bb6c){if(_0x59bb6c){return _0x331482[_0xf5f2('0x18')](_0x3f2997);}return _0x331482['status'](_0x3f2997)[_0xf5f2('0x19')]();};}function respondWithResult(_0xea612c,_0x269909){_0x269909=_0x269909||0xc8;return function(_0x1c1a5c){if(_0x1c1a5c){return _0xea612c[_0xf5f2('0x1a')](_0x269909)['json'](_0x1c1a5c);}};}function respondWithFilteredResult(_0xafe430,_0x286197){return function(_0x17d656){if(_0x17d656){var _0x1b6dd2=typeof _0x286197[_0xf5f2('0x1b')]===_0xf5f2('0x1c')&&typeof _0x286197[_0xf5f2('0x1d')]===_0xf5f2('0x1c');var _0x11f702=_0x17d656[_0xf5f2('0x1e')];var _0x20fccd=_0x1b6dd2?0x0:_0x286197[_0xf5f2('0x1b')];var _0x4ff59b=_0x1b6dd2?_0x17d656[_0xf5f2('0x1e')]:_0x286197[_0xf5f2('0x1b')]+_0x286197[_0xf5f2('0x1d')];var _0x1bf655;if(_0x4ff59b>=_0x11f702){_0x4ff59b=_0x11f702;_0x1bf655=0xc8;}else{_0x1bf655=0xce;}_0xafe430['status'](_0x1bf655);return _0xafe430[_0xf5f2('0x1f')](_0xf5f2('0x20'),_0x20fccd+'-'+_0x4ff59b+'/'+_0x11f702)['json'](_0x17d656);}return null;};}function patchUpdates(_0x47acfc){return function(_0x2d2805){try{jsonpatch[_0xf5f2('0x21')](_0x2d2805,_0x47acfc,!![]);}catch(_0x4ae323){return BPromise[_0xf5f2('0x22')](_0x4ae323);}return _0x2d2805[_0xf5f2('0x23')]();};}function saveUpdates(_0x39e44a,_0x39c024){return function(_0x36f1cb){if(_0x36f1cb){return _0x36f1cb['update'](_0x39e44a)[_0xf5f2('0x24')](function(_0x4669a6){return _0x4669a6;});}return null;};}function removeEntity(_0x4e8bda,_0x2833fe){return function(_0x287ad5){if(_0x287ad5){return _0x287ad5['destroy']()['then'](function(){_0x4e8bda[_0xf5f2('0x1a')](0xcc)[_0xf5f2('0x19')]();});}};}function handleEntityNotFound(_0x13da6f,_0x1a5bb3){return function(_0xf6c58d){if(!_0xf6c58d){_0x13da6f[_0xf5f2('0x18')](0x194);}return _0xf6c58d;};}function handleError(_0x13a3be,_0x281ec8){_0x281ec8=_0x281ec8||0x1f4;return function(_0x294414){logger['error'](_0x294414[_0xf5f2('0x25')]);if(_0x294414[_0xf5f2('0x26')]){delete _0x294414[_0xf5f2('0x26')];}_0x13a3be[_0xf5f2('0x1a')](_0x281ec8)[_0xf5f2('0x27')](_0x294414);};}exports[_0xf5f2('0x28')]=function(_0x5b6672,_0x53cb96){var _0x22c826={},_0x14c829={},_0x11c771={'count':0x0,'rows':[]};var _0x5027ab=_['map'](db[_0xf5f2('0x29')][_0xf5f2('0x2a')],function(_0x17394a){return{'name':_0x17394a[_0xf5f2('0x2b')],'type':_0x17394a[_0xf5f2('0x2c')]['key']};});_0x14c829['model']=_[_0xf5f2('0x2d')](_0x5027ab,'name');_0x14c829[_0xf5f2('0x2e')]=_['keys'](_0x5b6672[_0xf5f2('0x2e')]);_0x14c829[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],_0x14c829[_0xf5f2('0x2e')]);_0x22c826[_0xf5f2('0x32')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],qs['fields'](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x22c826[_0xf5f2('0x32')]=_0x22c826[_0xf5f2('0x32')][_0xf5f2('0x34')]?_0x22c826[_0xf5f2('0x32')]:_0x14c829[_0xf5f2('0x31')];if(!_0x5b6672['query'][_0xf5f2('0x35')](_0xf5f2('0x36'))){_0x22c826['limit']=qs[_0xf5f2('0x1d')](_0x5b6672['query'][_0xf5f2('0x1d')]);_0x22c826[_0xf5f2('0x1b')]=qs[_0xf5f2('0x1b')](_0x5b6672[_0xf5f2('0x2e')]['offset']);}_0x22c826['order']=qs[_0xf5f2('0x37')](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x37')]);_0x22c826['where']=qs[_0xf5f2('0x2f')](_['pick'](_0x5b6672[_0xf5f2('0x2e')],_0x14c829['filters']),_0x5027ab);if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]){_0x22c826['where']=_[_0xf5f2('0x39')](_0x22c826[_0xf5f2('0x3a')],{'$or':_[_0xf5f2('0x2d')](_0x5027ab,function(_0x35f738){if(_0x35f738['type']!=='VIRTUAL'){var _0x3d328f={};_0x3d328f[_0x35f738[_0xf5f2('0x26')]]={'$like':'%'+_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]+'%'};return _0x3d328f;}})});}_0x22c826=_[_0xf5f2('0x39')]({},_0x22c826,_0x5b6672[_0xf5f2('0x3b')]);var _0x2bc20e={'where':_0x22c826['where']};return db[_0xf5f2('0x29')][_0xf5f2('0x1e')](_0x2bc20e)['then'](function(_0xc6a1ae){_0x11c771[_0xf5f2('0x1e')]=_0xc6a1ae;if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x22c826[_0xf5f2('0x3d')]=[{'all':!![]}];}return db[_0xf5f2('0x29')][_0xf5f2('0x3e')](_0x22c826);})[_0xf5f2('0x24')](function(_0x574f24){_0x11c771[_0xf5f2('0x3f')]=_0x574f24;return _0x11c771;})[_0xf5f2('0x24')](respondWithFilteredResult(_0x53cb96,_0x22c826))[_0xf5f2('0x40')](handleError(_0x53cb96,null));};exports['show']=function(_0x509dbc,_0x59eb00){var _0x76d21b={'raw':!![],'where':{'id':_0x509dbc['params']['id']}},_0x2ad13c={};_0x2ad13c[_0xf5f2('0x31')]=_[_0xf5f2('0x41')](db[_0xf5f2('0x29')][_0xf5f2('0x2a')]);_0x2ad13c[_0xf5f2('0x2e')]=_[_0xf5f2('0x41')](_0x509dbc[_0xf5f2('0x2e')]);_0x2ad13c[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x2ad13c[_0xf5f2('0x31')],_0x2ad13c[_0xf5f2('0x2e')]);_0x76d21b[_0xf5f2('0x32')]=_[_0xf5f2('0x30')](_0x2ad13c[_0xf5f2('0x31')],qs['fields'](_0x509dbc[_0xf5f2('0x2e')]['fields']));_0x76d21b[_0xf5f2('0x32')]=_0x76d21b[_0xf5f2('0x32')][_0xf5f2('0x34')]?_0x76d21b[_0xf5f2('0x32')]:_0x2ad13c[_0xf5f2('0x31')];if(_0x509dbc[_0xf5f2('0x2e')]['includeAll']){_0x76d21b[_0xf5f2('0x3d')]=[{'all':!![]}];}_0x76d21b=_[_0xf5f2('0x39')]({},_0x76d21b,_0x509dbc[_0xf5f2('0x3b')]);return db[_0xf5f2('0x29')][_0xf5f2('0x42')](_0x76d21b)[_0xf5f2('0x24')](handleEntityNotFound(_0x59eb00,null))[_0xf5f2('0x24')](respondWithResult(_0x59eb00,null))[_0xf5f2('0x40')](handleError(_0x59eb00,null));};exports['create']=function(_0x35dece,_0x33ec29){return db[_0xf5f2('0x29')]['create'](_0x35dece[_0xf5f2('0x43')],{})[_0xf5f2('0x24')](respondWithResult(_0x33ec29,0xc9))[_0xf5f2('0x40')](handleError(_0x33ec29,null));};exports['update']=function(_0x57a7cb,_0x7bb942){if(_0x57a7cb[_0xf5f2('0x43')]['id']){delete _0x57a7cb['body']['id'];}return db[_0xf5f2('0x29')]['find']({'where':{'id':_0x57a7cb[_0xf5f2('0x44')]['id']}})['then'](handleEntityNotFound(_0x7bb942,null))[_0xf5f2('0x24')](saveUpdates(_0x57a7cb['body'],null))[_0xf5f2('0x24')](respondWithResult(_0x7bb942,null))[_0xf5f2('0x40')](handleError(_0x7bb942,null));};exports[_0xf5f2('0x45')]=function(_0x11a083,_0x4fa738){return db[_0xf5f2('0x29')][_0xf5f2('0x42')]({'where':{'id':_0x11a083['params']['id']}})['then'](handleEntityNotFound(_0x4fa738,null))[_0xf5f2('0x24')](removeEntity(_0x4fa738,null))[_0xf5f2('0x40')](handleError(_0x4fa738,null));};
\ No newline at end of file
+var _0x0b0e=['hasOwnProperty','nolimit','order','sort','filters','filter','merge','where','VIRTUAL','options','count','includeAll','findAll','rows','catch','show','include','find','create','body','params','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','undefined','offset','limit','set','json','apply','reject','save','then','destroy','error','stack','name','index','map','CloudProvider','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length'];(function(_0x1b0811,_0x448f1d){var _0x51661f=function(_0x59657c){while(--_0x59657c){_0x1b0811['push'](_0x1b0811['shift']());}};_0x51661f(++_0x448f1d);}(_0x0b0e,0x187));var _0xe0b0=function(_0x596284,_0x1cd02b){_0x596284=_0x596284-0x0;var _0x5313c6=_0x0b0e[_0x596284];return _0x5313c6;};'use strict';var emlformat=require(_0xe0b0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe0b0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe0b0('0x2'));var moment=require(_0xe0b0('0x3'));var BPromise=require(_0xe0b0('0x4'));var Mustache=require(_0xe0b0('0x5'));var util=require(_0xe0b0('0x6'));var path=require(_0xe0b0('0x7'));var sox=require(_0xe0b0('0x8'));var csv=require(_0xe0b0('0x9'));var ejs=require(_0xe0b0('0xa'));var fs=require('fs');var fs_extra=require(_0xe0b0('0xb'));var _=require(_0xe0b0('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe0b0('0xd'));var deskjs=require(_0xe0b0('0xe'));var toCsv=require(_0xe0b0('0x9'));var querystring=require(_0xe0b0('0xf'));var Papa=require('papaparse');var Redis=require(_0xe0b0('0x10'));var authService=require(_0xe0b0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe0b0('0x12'));var hardwareService=require(_0xe0b0('0x13'));var logger=require('../../config/logger')(_0xe0b0('0x14'));var utils=require(_0xe0b0('0x15'));var config=require(_0xe0b0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe0b0('0x17'))['db'];function respondWithStatusCode(_0x1c358a,_0x3cc19a){_0x3cc19a=_0x3cc19a||0xcc;return function(_0x45f914){if(_0x45f914){return _0x1c358a[_0xe0b0('0x18')](_0x3cc19a);}return _0x1c358a['status'](_0x3cc19a)[_0xe0b0('0x19')]();};}function respondWithResult(_0x154de6,_0x743318){_0x743318=_0x743318||0xc8;return function(_0x24babd){if(_0x24babd){return _0x154de6[_0xe0b0('0x1a')](_0x743318)['json'](_0x24babd);}};}function respondWithFilteredResult(_0x41a7e2,_0x5adb01){return function(_0x35cb40){if(_0x35cb40){var _0xadee6e=typeof _0x5adb01['offset']===_0xe0b0('0x1b')&&typeof _0x5adb01['limit']===_0xe0b0('0x1b');var _0x100204=_0x35cb40['count'];var _0x54a3eb=_0xadee6e?0x0:_0x5adb01[_0xe0b0('0x1c')];var _0x50a441=_0xadee6e?_0x35cb40['count']:_0x5adb01['offset']+_0x5adb01[_0xe0b0('0x1d')];var _0x50fa4a;if(_0x50a441>=_0x100204){_0x50a441=_0x100204;_0x50fa4a=0xc8;}else{_0x50fa4a=0xce;}_0x41a7e2['status'](_0x50fa4a);return _0x41a7e2[_0xe0b0('0x1e')]('Content-Range',_0x54a3eb+'-'+_0x50a441+'/'+_0x100204)[_0xe0b0('0x1f')](_0x35cb40);}return null;};}function patchUpdates(_0x5dba2f){return function(_0x2c84cc){try{jsonpatch[_0xe0b0('0x20')](_0x2c84cc,_0x5dba2f,!![]);}catch(_0x3e10b3){return BPromise[_0xe0b0('0x21')](_0x3e10b3);}return _0x2c84cc[_0xe0b0('0x22')]();};}function saveUpdates(_0x58b804,_0x4cae54){return function(_0x2fa820){if(_0x2fa820){return _0x2fa820['update'](_0x58b804)[_0xe0b0('0x23')](function(_0x31b5f8){return _0x31b5f8;});}return null;};}function removeEntity(_0x513e63,_0x170ad8){return function(_0x503883){if(_0x503883){return _0x503883[_0xe0b0('0x24')]()['then'](function(){_0x513e63[_0xe0b0('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e5c88,_0x4de537){return function(_0x4700cc){if(!_0x4700cc){_0x3e5c88['sendStatus'](0x194);}return _0x4700cc;};}function handleError(_0x3c221d,_0x5c5317){_0x5c5317=_0x5c5317||0x1f4;return function(_0x362aba){logger[_0xe0b0('0x25')](_0x362aba[_0xe0b0('0x26')]);if(_0x362aba[_0xe0b0('0x27')]){delete _0x362aba[_0xe0b0('0x27')];}_0x3c221d[_0xe0b0('0x1a')](_0x5c5317)['send'](_0x362aba);};}exports[_0xe0b0('0x28')]=function(_0x1b8aa8,_0x5b7a64){var _0x15e13b={},_0x419b1f={},_0x36d137={'count':0x0,'rows':[]};var _0x1d5759=_[_0xe0b0('0x29')](db[_0xe0b0('0x2a')][_0xe0b0('0x2b')],function(_0x4fb3b7){return{'name':_0x4fb3b7[_0xe0b0('0x2c')],'type':_0x4fb3b7[_0xe0b0('0x2d')]['key']};});_0x419b1f['model']=_[_0xe0b0('0x29')](_0x1d5759,_0xe0b0('0x27'));_0x419b1f[_0xe0b0('0x2e')]=_[_0xe0b0('0x2f')](_0x1b8aa8[_0xe0b0('0x2e')]);_0x419b1f['filters']=_[_0xe0b0('0x30')](_0x419b1f[_0xe0b0('0x31')],_0x419b1f[_0xe0b0('0x2e')]);_0x15e13b[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x419b1f['model'],qs[_0xe0b0('0x33')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x33')]));_0x15e13b[_0xe0b0('0x32')]=_0x15e13b[_0xe0b0('0x32')][_0xe0b0('0x34')]?_0x15e13b[_0xe0b0('0x32')]:_0x419b1f[_0xe0b0('0x31')];if(!_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x35')](_0xe0b0('0x36'))){_0x15e13b[_0xe0b0('0x1d')]=qs[_0xe0b0('0x1d')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1d')]);_0x15e13b['offset']=qs[_0xe0b0('0x1c')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1c')]);}_0x15e13b[_0xe0b0('0x37')]=qs[_0xe0b0('0x38')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x38')]);_0x15e13b['where']=qs['filters'](_['pick'](_0x1b8aa8['query'],_0x419b1f[_0xe0b0('0x39')]),_0x1d5759);if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]){_0x15e13b['where']=_[_0xe0b0('0x3b')](_0x15e13b[_0xe0b0('0x3c')],{'$or':_[_0xe0b0('0x29')](_0x1d5759,function(_0x297c64){if(_0x297c64['type']!==_0xe0b0('0x3d')){var _0xfbb61d={};_0xfbb61d[_0x297c64[_0xe0b0('0x27')]]={'$like':'%'+_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]+'%'};return _0xfbb61d;}})});}_0x15e13b=_[_0xe0b0('0x3b')]({},_0x15e13b,_0x1b8aa8[_0xe0b0('0x3e')]);var _0x115a69={'where':_0x15e13b[_0xe0b0('0x3c')]};return db['CloudProvider'][_0xe0b0('0x3f')](_0x115a69)['then'](function(_0x34178d){_0x36d137[_0xe0b0('0x3f')]=_0x34178d;if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x15e13b['include']=[{'all':!![]}];}return db[_0xe0b0('0x2a')][_0xe0b0('0x41')](_0x15e13b);})[_0xe0b0('0x23')](function(_0x402a0e){_0x36d137[_0xe0b0('0x42')]=_0x402a0e;return _0x36d137;})[_0xe0b0('0x23')](respondWithFilteredResult(_0x5b7a64,_0x15e13b))[_0xe0b0('0x43')](handleError(_0x5b7a64,null));};exports[_0xe0b0('0x44')]=function(_0x52ffe4,_0x2aad80){var _0x309bbf={'raw':!![],'where':{'id':_0x52ffe4['params']['id']}},_0x528818={};_0x528818[_0xe0b0('0x31')]=_[_0xe0b0('0x2f')](db['CloudProvider'][_0xe0b0('0x2b')]);_0x528818[_0xe0b0('0x2e')]=_[_0xe0b0('0x2f')](_0x52ffe4[_0xe0b0('0x2e')]);_0x528818[_0xe0b0('0x39')]=_['intersection'](_0x528818['model'],_0x528818['query']);_0x309bbf[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x528818['model'],qs[_0xe0b0('0x33')](_0x52ffe4[_0xe0b0('0x2e')][_0xe0b0('0x33')]));_0x309bbf[_0xe0b0('0x32')]=_0x309bbf[_0xe0b0('0x32')]['length']?_0x309bbf['attributes']:_0x528818[_0xe0b0('0x31')];if(_0x52ffe4[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x309bbf[_0xe0b0('0x45')]=[{'all':!![]}];}_0x309bbf=_[_0xe0b0('0x3b')]({},_0x309bbf,_0x52ffe4['options']);return db[_0xe0b0('0x2a')][_0xe0b0('0x46')](_0x309bbf)['then'](handleEntityNotFound(_0x2aad80,null))['then'](respondWithResult(_0x2aad80,null))['catch'](handleError(_0x2aad80,null));};exports[_0xe0b0('0x47')]=function(_0x2184d3,_0x2419ce){return db[_0xe0b0('0x2a')]['create'](_0x2184d3[_0xe0b0('0x48')],{})[_0xe0b0('0x23')](respondWithResult(_0x2419ce,0xc9))['catch'](handleError(_0x2419ce,null));};exports['update']=function(_0x2365be,_0x1bc6e0){if(_0x2365be['body']['id']){delete _0x2365be[_0xe0b0('0x48')]['id'];}return db[_0xe0b0('0x2a')]['find']({'where':{'id':_0x2365be['params']['id']}})[_0xe0b0('0x23')](handleEntityNotFound(_0x1bc6e0,null))['then'](saveUpdates(_0x2365be[_0xe0b0('0x48')],null))[_0xe0b0('0x23')](respondWithResult(_0x1bc6e0,null))[_0xe0b0('0x43')](handleError(_0x1bc6e0,null));};exports[_0xe0b0('0x24')]=function(_0x19ee71,_0xf9e694){return db['CloudProvider']['find']({'where':{'id':_0x19ee71[_0xe0b0('0x49')]['id']}})['then'](handleEntityNotFound(_0xf9e694,null))['then'](removeEntity(_0xf9e694,null))[_0xe0b0('0x43')](handleError(_0xf9e694,null));};
\ No newline at end of file
index dad0d21..3f89b0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b26=['cloud_providers','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./cloudProvider.attributes','define'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x2b26,0xe5));var _0x62b2=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x2b26[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x62b2('0x0'));var util=require(_0x62b2('0x1'));var logger=require(_0x62b2('0x2'))(_0x62b2('0x3'));var moment=require(_0x62b2('0x4'));var BPromise=require(_0x62b2('0x5'));var rp=require(_0x62b2('0x6'));var fs=require('fs');var path=require(_0x62b2('0x7'));var rimraf=require(_0x62b2('0x8'));var config=require('../../config/environment');var attributes=require(_0x62b2('0x9'));module['exports']=function(_0x4ffd89,_0x4a3a21){return _0x4ffd89[_0x62b2('0xa')]('CloudProvider',attributes,{'tableName':_0x62b2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0137=['../../config/environment','./cloudProvider.attributes','exports','define','CloudProvider','lodash','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x231d9b,_0xcdd962){var _0x21a682=function(_0x14bb55){while(--_0x14bb55){_0x231d9b['push'](_0x231d9b['shift']());}};_0x21a682(++_0xcdd962);}(_0x0137,0xc5));var _0x7013=function(_0x21a2b2,_0x22ba1e){_0x21a2b2=_0x21a2b2-0x0;var _0x2060b4=_0x0137[_0x21a2b2];return _0x2060b4;};'use strict';var _=require(_0x7013('0x0'));var util=require('util');var logger=require(_0x7013('0x1'))(_0x7013('0x2'));var moment=require(_0x7013('0x3'));var BPromise=require('bluebird');var rp=require(_0x7013('0x4'));var fs=require('fs');var path=require(_0x7013('0x5'));var rimraf=require(_0x7013('0x6'));var config=require(_0x7013('0x7'));var attributes=require(_0x7013('0x8'));module[_0x7013('0x9')]=function(_0x9e752c,_0x560bd1){return _0x9e752c[_0x7013('0xa')](_0x7013('0xb'),attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 52a32e6..bb07ca5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0e4=['util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','result','catch','lodash'];(function(_0xbbd0e3,_0x34cbeb){var _0x5580c5=function(_0x2a456d){while(--_0x2a456d){_0xbbd0e3['push'](_0xbbd0e3['shift']());}};_0x5580c5(++_0x34cbeb);}(_0xd0e4,0x1d3));var _0x4d0e=function(_0x374ea8,_0x444720){_0x374ea8=_0x374ea8-0x0;var _0x5bdf9f=_0xd0e4[_0x374ea8];return _0x5bdf9f;};'use strict';var _=require(_0x4d0e('0x0'));var util=require(_0x4d0e('0x1'));var moment=require(_0x4d0e('0x2'));var BPromise=require(_0x4d0e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4d0e('0x4'))['db'];var utils=require(_0x4d0e('0x5'));var logger=require(_0x4d0e('0x6'))(_0x4d0e('0x7'));var config=require(_0x4d0e('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x103596,_0x39e5c6,_0x50cd74){return new BPromise(function(_0x2f900a,_0x1731e4){return client['request'](_0x103596,_0x50cd74)['then'](function(_0x9358f5){logger['info'](_0x4d0e('0x9'),_0x39e5c6,_0x4d0e('0xa'));logger[_0x4d0e('0xb')]('CloudProvider,\x20%s,\x20%s,\x20%s',_0x39e5c6,_0x4d0e('0xa'),JSON[_0x4d0e('0xc')](_0x9358f5));if(_0x9358f5['error']){if(_0x9358f5['error'][_0x4d0e('0xd')]===0x1f4){logger[_0x4d0e('0xe')](_0x4d0e('0x9'),_0x39e5c6,_0x9358f5[_0x4d0e('0xe')][_0x4d0e('0xf')]);return _0x1731e4(_0x9358f5[_0x4d0e('0xe')][_0x4d0e('0xf')]);}logger[_0x4d0e('0xe')](_0x4d0e('0x9'),_0x39e5c6,_0x9358f5['error'][_0x4d0e('0xf')]);return _0x2f900a(_0x9358f5[_0x4d0e('0xe')][_0x4d0e('0xf')]);}else{logger['info'](_0x4d0e('0x9'),_0x39e5c6,'request\x20sent');_0x2f900a(_0x9358f5[_0x4d0e('0x10')][_0x4d0e('0xf')]);}})[_0x4d0e('0x11')](function(_0x956477){logger[_0x4d0e('0xe')](_0x4d0e('0x9'),_0x39e5c6,_0x956477);_0x1731e4(_0x956477);});});}
\ No newline at end of file
+var _0x4732=['CloudProvider,\x20%s,\x20%s,\x20%s','error','code','message','info','request\x20sent','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','CloudProvider,\x20%s,\x20%s','debug'];(function(_0x323670,_0x3ab327){var _0x91343=function(_0x38cf98){while(--_0x38cf98){_0x323670['push'](_0x323670['shift']());}};_0x91343(++_0x3ab327);}(_0x4732,0x17d));var _0x2473=function(_0x19ac6e,_0x435862){_0x19ac6e=_0x19ac6e-0x0;var _0x1cdcf3=_0x4732[_0x19ac6e];return _0x1cdcf3;};'use strict';var _=require(_0x2473('0x0'));var util=require('util');var moment=require(_0x2473('0x1'));var BPromise=require('bluebird');var rs=require(_0x2473('0x2'));var fs=require('fs');var Redis=require(_0x2473('0x3'));var db=require(_0x2473('0x4'))['db'];var utils=require(_0x2473('0x5'));var logger=require(_0x2473('0x6'))(_0x2473('0x7'));var config=require(_0x2473('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2473('0x9')][_0x2473('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x50e340,_0x4be81c,_0x593eba){return new BPromise(function(_0x10da0a,_0x29765a){return client[_0x2473('0xb')](_0x50e340,_0x593eba)[_0x2473('0xc')](function(_0x52fffe){logger['info'](_0x2473('0xd'),_0x4be81c,'request\x20sent');logger[_0x2473('0xe')](_0x2473('0xf'),_0x4be81c,'request\x20sent',JSON['stringify'](_0x52fffe));if(_0x52fffe[_0x2473('0x10')]){if(_0x52fffe[_0x2473('0x10')][_0x2473('0x11')]===0x1f4){logger[_0x2473('0x10')]('CloudProvider,\x20%s,\x20%s',_0x4be81c,_0x52fffe[_0x2473('0x10')][_0x2473('0x12')]);return _0x29765a(_0x52fffe[_0x2473('0x10')][_0x2473('0x12')]);}logger['error']('CloudProvider,\x20%s,\x20%s',_0x4be81c,_0x52fffe['error'][_0x2473('0x12')]);return _0x10da0a(_0x52fffe[_0x2473('0x10')][_0x2473('0x12')]);}else{logger[_0x2473('0x13')](_0x2473('0xd'),_0x4be81c,_0x2473('0x14'));_0x10da0a(_0x52fffe['result'][_0x2473('0x12')]);}})[_0x2473('0x15')](function(_0x14fcf2){logger[_0x2473('0x10')](_0x2473('0xd'),_0x4be81c,_0x14fcf2);_0x29765a(_0x14fcf2);});});}
\ No newline at end of file
index 058f358..5884c83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0eb6=['/:id','show','post','put','update','destroy','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get'];(function(_0x201b5a,_0x27ce4c){var _0x5de04e=function(_0x18d90c){while(--_0x18d90c){_0x201b5a['push'](_0x201b5a['shift']());}};_0x5de04e(++_0x27ce4c);}(_0x0eb6,0x132));var _0x60eb=function(_0x431ff8,_0x4085dd){_0x431ff8=_0x431ff8-0x0;var _0x84ccd4=_0x0eb6[_0x431ff8];return _0x84ccd4;};'use strict';var multer=require(_0x60eb('0x0'));var util=require(_0x60eb('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x60eb('0x2'));var router=express[_0x60eb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x60eb('0x4'));var interaction=require(_0x60eb('0x5'));var config=require(_0x60eb('0x6'));var controller=require('./cloudProvider.controller');router['get']('/',auth[_0x60eb('0x7')](),controller['index']);router[_0x60eb('0x8')](_0x60eb('0x9'),auth['isAuthenticated'](),controller[_0x60eb('0xa')]);router[_0x60eb('0xb')]('/',auth[_0x60eb('0x7')](),controller['create']);router[_0x60eb('0xc')]('/:id',auth[_0x60eb('0x7')](),controller[_0x60eb('0xd')]);router['delete']('/:id',auth[_0x60eb('0x7')](),controller[_0x60eb('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x9b51=['show','post','put','update','delete','destroy','exports','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/:id','isAuthenticated'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x9b51,0x1d2));var _0x19b5=function(_0xc7f428,_0x27a551){_0xc7f428=_0xc7f428-0x0;var _0x506791=_0x9b51[_0xc7f428];return _0x506791;};'use strict';var multer=require(_0x19b5('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x19b5('0x1'));var express=require(_0x19b5('0x2'));var router=express['Router']();var fs_extra=require(_0x19b5('0x3'));var auth=require(_0x19b5('0x4'));var interaction=require(_0x19b5('0x5'));var config=require('../../config/environment');var controller=require('./cloudProvider.controller');router[_0x19b5('0x6')]('/',auth['isAuthenticated'](),controller[_0x19b5('0x7')]);router[_0x19b5('0x6')](_0x19b5('0x8'),auth[_0x19b5('0x9')](),controller[_0x19b5('0xa')]);router[_0x19b5('0xb')]('/',auth[_0x19b5('0x9')](),controller['create']);router[_0x19b5('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x19b5('0xd')]);router[_0x19b5('0xe')](_0x19b5('0x8'),auth[_0x19b5('0x9')](),controller[_0x19b5('0xf')]);module[_0x19b5('0x10')]=router;
\ No newline at end of file
index b2bead4..9f69c9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c58=['exports','STRING'];(function(_0x238d2c,_0x5c1e7b){var _0x367a87=function(_0x2b6f23){while(--_0x2b6f23){_0x238d2c['push'](_0x238d2c['shift']());}};_0x367a87(++_0x5c1e7b);}(_0x5c58,0x154));var _0x85c5=function(_0x168e79,_0x397281){_0x168e79=_0x168e79-0x0;var _0x3deffc=_0x5c58[_0x168e79];return _0x3deffc;};'use strict';var Sequelize=require('sequelize');module[_0x85c5('0x0')]={'name':{'type':Sequelize[_0x85c5('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0x85c5('0x1')]},'website':{'type':Sequelize[_0x85c5('0x1')]},'phone':{'type':Sequelize[_0x85c5('0x1')]},'fax':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x85c5('0x1')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x85c5('0x1')]},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x85c5('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize[_0x85c5('0x1')]},'sCountry':{'type':Sequelize[_0x85c5('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1bfd=['sequelize','exports','name','STRING'];(function(_0x363785,_0x53d4a2){var _0x992a5c=function(_0x451f6f){while(--_0x451f6f){_0x363785['push'](_0x363785['shift']());}};_0x992a5c(++_0x53d4a2);}(_0x1bfd,0x1dc));var _0xd1bf=function(_0x2da147,_0x24198f){_0x2da147=_0x2da147-0x0;var _0x570790=_0x1bfd[_0x2da147];return _0x570790;};'use strict';var Sequelize=require(_0xd1bf('0x0'));module[_0xd1bf('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xd1bf('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xd1bf('0x3')]},'companyId':{'type':Sequelize[_0xd1bf('0x3')]},'website':{'type':Sequelize[_0xd1bf('0x3')]},'phone':{'type':Sequelize[_0xd1bf('0x3')]},'fax':{'type':Sequelize[_0xd1bf('0x3')]},'type':{'type':Sequelize[_0xd1bf('0x3')]},'street':{'type':Sequelize[_0xd1bf('0x3')]},'postalCode':{'type':Sequelize[_0xd1bf('0x3')]},'city':{'type':Sequelize[_0xd1bf('0x3')]},'country':{'type':Sequelize[_0xd1bf('0x3')]},'email':{'type':Sequelize[_0xd1bf('0x3')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize[_0xd1bf('0x3')]},'sPostalCode':{'type':Sequelize[_0xd1bf('0x3')]},'sCity':{'type':Sequelize[_0xd1bf('0x3')]},'sCountry':{'type':Sequelize[_0xd1bf('0x3')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4d270cf..cdef04a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9387=['index','CmCompany','describe','model','keys','query','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','filter','merge','map','include','findAll','rows','show','params','rawAttributes','includeAll','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','catch','CmContact','addContacts','ids','omit','getContacts','findOne','order','hasOwnProperty','rimraf','fast-json-patch','moment','bluebird','util','path','sox','ejs','fs-extra','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','update','destroy','then','get','Companies','UserProfileResource','error','stack','name','send'];(function(_0x2e7f96,_0x2ffe43){var _0x315277=function(_0x26bcae){while(--_0x26bcae){_0x2e7f96['push'](_0x2e7f96['shift']());}};_0x315277(++_0x2ffe43);}(_0x9387,0xcf));var _0x7938=function(_0x22198f,_0x1f8534){_0x22198f=_0x22198f-0x0;var _0x3ad148=_0x9387[_0x22198f];return _0x3ad148;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7938('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7938('0x1'));var rp=require('request-promise');var moment=require(_0x7938('0x2'));var BPromise=require(_0x7938('0x3'));var Mustache=require('mustache');var util=require(_0x7938('0x4'));var path=require(_0x7938('0x5'));var sox=require(_0x7938('0x6'));var csv=require('to-csv');var ejs=require(_0x7938('0x7'));var fs=require('fs');var fs_extra=require(_0x7938('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7938('0x9'));var deskjs=require(_0x7938('0xa'));var toCsv=require('to-csv');var querystring=require(_0x7938('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7938('0xc'));var qs=require(_0x7938('0xd'));var as=require(_0x7938('0xe'));var hardwareService=require(_0x7938('0xf'));var logger=require(_0x7938('0x10'))(_0x7938('0x11'));var utils=require(_0x7938('0x12'));var config=require(_0x7938('0x13'));var licenseUtil=require(_0x7938('0x14'));var db=require(_0x7938('0x15'))['db'];function respondWithStatusCode(_0x321b4d,_0x1bf339){_0x1bf339=_0x1bf339||0xcc;return function(_0x46a17d){if(_0x46a17d){return _0x321b4d[_0x7938('0x16')](_0x1bf339);}return _0x321b4d[_0x7938('0x17')](_0x1bf339)[_0x7938('0x18')]();};}function respondWithResult(_0x21e86e,_0x2d1e04){_0x2d1e04=_0x2d1e04||0xc8;return function(_0xc749a4){if(_0xc749a4){return _0x21e86e[_0x7938('0x17')](_0x2d1e04)[_0x7938('0x19')](_0xc749a4);}};}function respondWithFilteredResult(_0x58f136,_0x416499){return function(_0x217780){if(_0x217780){var _0x42c8c0=typeof _0x416499['offset']===_0x7938('0x1a')&&typeof _0x416499[_0x7938('0x1b')]===_0x7938('0x1a');var _0x234282=_0x217780['count'];var _0x5a891f=_0x42c8c0?0x0:_0x416499['offset'];var _0x1fbbd8=_0x42c8c0?_0x217780[_0x7938('0x1c')]:_0x416499[_0x7938('0x1d')]+_0x416499[_0x7938('0x1b')];var _0x4c1e88;if(_0x1fbbd8>=_0x234282){_0x1fbbd8=_0x234282;_0x4c1e88=0xc8;}else{_0x4c1e88=0xce;}_0x58f136[_0x7938('0x17')](_0x4c1e88);return _0x58f136[_0x7938('0x1e')](_0x7938('0x1f'),_0x5a891f+'-'+_0x1fbbd8+'/'+_0x234282)[_0x7938('0x19')](_0x217780);}return null;};}function patchUpdates(_0x42b14e){return function(_0x2f9c0b){try{jsonpatch['apply'](_0x2f9c0b,_0x42b14e,!![]);}catch(_0xe67317){return BPromise['reject'](_0xe67317);}return _0x2f9c0b['save']();};}function saveUpdates(_0x5a3547,_0x2d414b){return function(_0x3f2c07){if(_0x3f2c07){return _0x3f2c07[_0x7938('0x20')](_0x5a3547)['then'](function(_0x2f79ac){return _0x2f79ac;});}return null;};}function removeEntity(_0x305f8b,_0x61ed9e){return function(_0x3b904f){if(_0x3b904f){return _0x3b904f[_0x7938('0x21')]()[_0x7938('0x22')](function(){var _0x5a39a5=_0x3b904f[_0x7938('0x23')]({'plain':!![]});var _0x5162a4=_0x7938('0x24');return db[_0x7938('0x25')][_0x7938('0x21')]({'where':{'type':_0x5162a4,'resourceId':_0x5a39a5['id']}})['then'](function(){return _0x3b904f;});})[_0x7938('0x22')](function(){_0x305f8b[_0x7938('0x17')](0xcc)[_0x7938('0x18')]();});}};}function handleEntityNotFound(_0x27394a,_0x3258d0){return function(_0x2daf4b){if(!_0x2daf4b){_0x27394a[_0x7938('0x16')](0x194);}return _0x2daf4b;};}function handleError(_0x2deecb,_0x21bf0b){_0x21bf0b=_0x21bf0b||0x1f4;return function(_0x48f914){logger[_0x7938('0x26')](_0x48f914[_0x7938('0x27')]);if(_0x48f914['name']){delete _0x48f914[_0x7938('0x28')];}_0x2deecb[_0x7938('0x17')](_0x21bf0b)[_0x7938('0x29')](_0x48f914);};}exports[_0x7938('0x2a')]=function(_0xbe1365,_0x4be8f4){var _0x30fc1c={},_0x16f475={},_0x1fb1cb={'count':0x0,'rows':[]};return db[_0x7938('0x2b')][_0x7938('0x2c')]()[_0x7938('0x22')](function(_0x2a9022){_0x16f475[_0x7938('0x2d')]=_[_0x7938('0x2e')](_0x2a9022);_0x16f475[_0x7938('0x2f')]=_[_0x7938('0x2e')](_0xbe1365['query']);_0x16f475[_0x7938('0x30')]=_[_0x7938('0x31')](_0x16f475[_0x7938('0x2d')],_0x16f475[_0x7938('0x2f')]);_0x30fc1c['attributes']=_[_0x7938('0x31')](_0x16f475[_0x7938('0x2d')],qs[_0x7938('0x32')](_0xbe1365['query']['fields']));_0x30fc1c[_0x7938('0x33')]=_0x30fc1c[_0x7938('0x33')][_0x7938('0x34')]?_0x30fc1c[_0x7938('0x33')]:_0x16f475[_0x7938('0x2d')];if(!_0xbe1365[_0x7938('0x2f')]['hasOwnProperty'](_0x7938('0x35'))){_0x30fc1c[_0x7938('0x1b')]=qs[_0x7938('0x1b')](_0xbe1365[_0x7938('0x2f')]['limit']);_0x30fc1c[_0x7938('0x1d')]=qs[_0x7938('0x1d')](_0xbe1365[_0x7938('0x2f')][_0x7938('0x1d')]);}_0x30fc1c['order']=qs[_0x7938('0x36')](_0xbe1365['query'][_0x7938('0x36')]);_0x30fc1c[_0x7938('0x37')]=qs[_0x7938('0x30')](_[_0x7938('0x38')](_0xbe1365[_0x7938('0x2f')],_0x16f475[_0x7938('0x30')]),_0x2a9022);if(_0xbe1365[_0x7938('0x2f')][_0x7938('0x39')]){_0x30fc1c['where']=_[_0x7938('0x3a')](_0x30fc1c['where'],{'$or':_[_0x7938('0x3b')](_0x30fc1c['attributes'],function(_0x47d525){var _0x268aa8={};_0x268aa8[_0x47d525]={'$like':'%'+_0xbe1365[_0x7938('0x2f')]['filter']+'%'};return _0x268aa8;})});}_0x30fc1c=_[_0x7938('0x3a')]({},_0x30fc1c,_0xbe1365['options']);var _0x2c22ad={'where':_0x30fc1c[_0x7938('0x37')]};return db[_0x7938('0x2b')]['count'](_0x2c22ad)[_0x7938('0x22')](function(_0x353f53){_0x1fb1cb[_0x7938('0x1c')]=_0x353f53;if(_0xbe1365[_0x7938('0x2f')]['includeAll']){_0x30fc1c[_0x7938('0x3c')]=[{'all':!![]}];}return db['CmCompany'][_0x7938('0x3d')](_0x30fc1c);})[_0x7938('0x22')](function(_0x59d3b7){_0x1fb1cb[_0x7938('0x3e')]=_0x59d3b7;return _0x1fb1cb;})['then'](respondWithFilteredResult(_0x4be8f4,_0x30fc1c))['catch'](handleError(_0x4be8f4,null));})['catch'](handleError(_0x4be8f4,null));};exports[_0x7938('0x3f')]=function(_0x1ef930,_0x26e07a){var _0x5505ae={'raw':![],'where':{'id':_0x1ef930[_0x7938('0x40')]['id']}},_0x2cdcb8={};_0x2cdcb8[_0x7938('0x2d')]=_['keys'](db[_0x7938('0x2b')][_0x7938('0x41')]);_0x2cdcb8['query']=_[_0x7938('0x2e')](_0x1ef930[_0x7938('0x2f')]);_0x2cdcb8[_0x7938('0x30')]=_[_0x7938('0x31')](_0x2cdcb8[_0x7938('0x2d')],_0x2cdcb8[_0x7938('0x2f')]);_0x5505ae['attributes']=_[_0x7938('0x31')](_0x2cdcb8['model'],qs[_0x7938('0x32')](_0x1ef930[_0x7938('0x2f')][_0x7938('0x32')]));_0x5505ae['attributes']=_0x5505ae['attributes'][_0x7938('0x34')]?_0x5505ae[_0x7938('0x33')]:_0x2cdcb8[_0x7938('0x2d')];if(_0x1ef930[_0x7938('0x2f')][_0x7938('0x42')]){_0x5505ae[_0x7938('0x3c')]=[{'all':!![]}];}_0x5505ae=_[_0x7938('0x3a')]({},_0x5505ae,_0x1ef930[_0x7938('0x43')]);return db['CmCompany'][_0x7938('0x44')](_0x5505ae)['then'](handleEntityNotFound(_0x26e07a,null))[_0x7938('0x22')](respondWithResult(_0x26e07a,null))['catch'](handleError(_0x26e07a,null));};exports[_0x7938('0x45')]=function(_0x53c754,_0x540e78){return db['CmCompany'][_0x7938('0x45')](_0x53c754[_0x7938('0x46')],{})[_0x7938('0x22')](function(_0x1c26dc){var _0x20a1a0=_0x53c754['user']['get']({'plain':!![]});if(!_0x20a1a0)throw new Error(_0x7938('0x47'));if(_0x20a1a0['role']==='user'){var _0x24dfc4=_0x1c26dc['get']({'plain':!![]});var _0x3c7396=_0x7938('0x24');return db[_0x7938('0x48')][_0x7938('0x44')]({'where':{'name':_0x3c7396,'userProfileId':_0x20a1a0[_0x7938('0x49')]},'raw':!![]})[_0x7938('0x22')](function(_0x47cda1){if(_0x47cda1&&_0x47cda1['autoAssociation']===0x0){return db[_0x7938('0x25')]['create']({'name':_0x24dfc4['name'],'resourceId':_0x24dfc4['id'],'type':_0x47cda1[_0x7938('0x28')],'sectionId':_0x47cda1['id']},{})[_0x7938('0x22')](function(){return _0x1c26dc;});}else{return _0x1c26dc;}})[_0x7938('0x4a')](function(_0x5671ab){logger[_0x7938('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5671ab);throw _0x5671ab;});}return _0x1c26dc;})[_0x7938('0x22')](respondWithResult(_0x540e78,0xc9))[_0x7938('0x4a')](handleError(_0x540e78,null));};exports['update']=function(_0x46f450,_0x13a546){if(_0x46f450[_0x7938('0x46')]['id']){delete _0x46f450[_0x7938('0x46')]['id'];}return db[_0x7938('0x2b')]['find']({'where':{'id':_0x46f450[_0x7938('0x40')]['id']}})[_0x7938('0x22')](handleEntityNotFound(_0x13a546,null))[_0x7938('0x22')](saveUpdates(_0x46f450['body'],null))[_0x7938('0x22')](respondWithResult(_0x13a546,null))['catch'](handleError(_0x13a546,null));};exports['destroy']=function(_0x255fed,_0x1f1b0e){return db[_0x7938('0x2b')][_0x7938('0x44')]({'where':{'id':_0x255fed[_0x7938('0x40')]['id']}})[_0x7938('0x22')](handleEntityNotFound(_0x1f1b0e,null))['then'](removeEntity(_0x1f1b0e,null))[_0x7938('0x4a')](handleError(_0x1f1b0e,null));};exports[_0x7938('0x2c')]=function(_0x2cb8ec,_0x1f4f45){return db[_0x7938('0x2b')]['describe']()['then'](respondWithResult(_0x1f4f45,null))['catch'](handleError(_0x1f4f45,null));};exports['addContacts']=function(_0x24a1bd,_0x2bf2a6,_0x14555b){return db[_0x7938('0x4b')][_0x7938('0x44')]({'where':{'id':_0x24a1bd[_0x7938('0x40')]['id']}})['then'](handleEntityNotFound(_0x2bf2a6,null))[_0x7938('0x22')](function(_0x12008e){if(_0x12008e){return _0x12008e[_0x7938('0x4c')](_0x24a1bd[_0x7938('0x46')][_0x7938('0x4d')],_[_0x7938('0x4e')](_0x24a1bd[_0x7938('0x46')],[_0x7938('0x4d'),'id'])||{});}})[_0x7938('0x22')](respondWithResult(_0x2bf2a6,null))[_0x7938('0x4a')](handleError(_0x2bf2a6,null));};exports[_0x7938('0x4f')]=function(_0x3ad5e9,_0x30012b,_0x589ae6){var _0x4e3414={};var _0x413e8e={};var _0x3234d5;var _0x4b6664;return db[_0x7938('0x2b')][_0x7938('0x50')]({'where':{'id':_0x3ad5e9['params']['id']}})[_0x7938('0x22')](handleEntityNotFound(_0x30012b,null))['then'](function(_0x516f1c){if(_0x516f1c){_0x3234d5=_0x516f1c;_0x413e8e[_0x7938('0x2d')]=_[_0x7938('0x2e')](db['CmContact'][_0x7938('0x41')]);_0x413e8e['query']=_[_0x7938('0x2e')](_0x3ad5e9[_0x7938('0x2f')]);_0x413e8e[_0x7938('0x30')]=_[_0x7938('0x31')](_0x413e8e[_0x7938('0x2d')],_0x413e8e[_0x7938('0x2f')]);_0x4e3414[_0x7938('0x33')]=_[_0x7938('0x31')](_0x413e8e['model'],qs[_0x7938('0x32')](_0x3ad5e9[_0x7938('0x2f')][_0x7938('0x32')]));_0x4e3414['attributes']=_0x4e3414[_0x7938('0x33')]['length']?_0x4e3414[_0x7938('0x33')]:_0x413e8e[_0x7938('0x2d')];_0x4e3414[_0x7938('0x51')]=qs[_0x7938('0x36')](_0x3ad5e9['query'][_0x7938('0x36')]);_0x4e3414[_0x7938('0x37')]=qs[_0x7938('0x30')](_[_0x7938('0x38')](_0x3ad5e9['query'],_0x413e8e[_0x7938('0x30')]));if(_0x3ad5e9[_0x7938('0x2f')]['filter']){_0x4e3414[_0x7938('0x37')]=_[_0x7938('0x3a')](_0x4e3414[_0x7938('0x37')],{'$or':_['map'](_0x4e3414['attributes'],function(_0x376392){var _0x23c2ad={};_0x23c2ad[_0x376392]={'$like':'%'+_0x3ad5e9[_0x7938('0x2f')]['filter']+'%'};return _0x23c2ad;})});}_0x4e3414=_[_0x7938('0x3a')]({},_0x4e3414,_0x3ad5e9[_0x7938('0x43')]);return _0x3234d5[_0x7938('0x4f')](_0x4e3414);}})[_0x7938('0x22')](function(_0x13896f){if(_0x13896f){_0x4b6664=_0x13896f[_0x7938('0x34')];if(!_0x3ad5e9[_0x7938('0x2f')][_0x7938('0x52')](_0x7938('0x35'))){_0x4e3414[_0x7938('0x1b')]=qs['limit'](_0x3ad5e9[_0x7938('0x2f')][_0x7938('0x1b')]);_0x4e3414[_0x7938('0x1d')]=qs[_0x7938('0x1d')](_0x3ad5e9[_0x7938('0x2f')][_0x7938('0x1d')]);}return _0x3234d5[_0x7938('0x4f')](_0x4e3414);}})[_0x7938('0x22')](function(_0x294f5a){if(_0x294f5a){return _0x294f5a?{'count':_0x4b6664,'rows':_0x294f5a}:null;}})[_0x7938('0x22')](respondWithResult(_0x30012b,null))[_0x7938('0x4a')](handleError(_0x30012b,null));};
\ No newline at end of file
+var _0xdd26=['request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Companies','UserProfileResource','error','stack','send','index','CmCompany','describe','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','catch','show','params','find','create','body','UserProfileSection','userProfileId','autoAssociation','name','addContacts','CmContact','ids','omit','getContacts','findOne','rawAttributes','map','options','eml-format','zip-dir'];(function(_0x341b44,_0x1c7131){var _0x1cb37b=function(_0x1f6f6e){while(--_0x1f6f6e){_0x341b44['push'](_0x341b44['shift']());}};_0x1cb37b(++_0x1c7131);}(_0xdd26,0x1ca));var _0x6dd2=function(_0xb8794e,_0x598480){_0xb8794e=_0xb8794e-0x0;var _0x340d9d=_0xdd26[_0xb8794e];return _0x340d9d;};'use strict';var emlformat=require(_0x6dd2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6dd2('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6dd2('0x2'));var moment=require(_0x6dd2('0x3'));var BPromise=require(_0x6dd2('0x4'));var Mustache=require(_0x6dd2('0x5'));var util=require(_0x6dd2('0x6'));var path=require(_0x6dd2('0x7'));var sox=require(_0x6dd2('0x8'));var csv=require(_0x6dd2('0x9'));var ejs=require(_0x6dd2('0xa'));var fs=require('fs');var fs_extra=require(_0x6dd2('0xb'));var _=require(_0x6dd2('0xc'));var squel=require(_0x6dd2('0xd'));var crypto=require(_0x6dd2('0xe'));var jsforce=require(_0x6dd2('0xf'));var deskjs=require(_0x6dd2('0x10'));var toCsv=require(_0x6dd2('0x9'));var querystring=require(_0x6dd2('0x11'));var Papa=require(_0x6dd2('0x12'));var Redis=require(_0x6dd2('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x6dd2('0x14'));var hardwareService=require(_0x6dd2('0x15'));var logger=require(_0x6dd2('0x16'))(_0x6dd2('0x17'));var utils=require(_0x6dd2('0x18'));var config=require(_0x6dd2('0x19'));var licenseUtil=require(_0x6dd2('0x1a'));var db=require(_0x6dd2('0x1b'))['db'];function respondWithStatusCode(_0x5a1128,_0x4b2e3a){_0x4b2e3a=_0x4b2e3a||0xcc;return function(_0x38408e){if(_0x38408e){return _0x5a1128[_0x6dd2('0x1c')](_0x4b2e3a);}return _0x5a1128[_0x6dd2('0x1d')](_0x4b2e3a)[_0x6dd2('0x1e')]();};}function respondWithResult(_0x2c5774,_0x2d95c3){_0x2d95c3=_0x2d95c3||0xc8;return function(_0x4006b5){if(_0x4006b5){return _0x2c5774['status'](_0x2d95c3)[_0x6dd2('0x1f')](_0x4006b5);}};}function respondWithFilteredResult(_0x3bc941,_0x93ff89){return function(_0x14ea2e){if(_0x14ea2e){var _0x28eac7=typeof _0x93ff89[_0x6dd2('0x20')]===_0x6dd2('0x21')&&typeof _0x93ff89[_0x6dd2('0x22')]===_0x6dd2('0x21');var _0x5befc8=_0x14ea2e['count'];var _0x4a4bf0=_0x28eac7?0x0:_0x93ff89['offset'];var _0x44744b=_0x28eac7?_0x14ea2e[_0x6dd2('0x23')]:_0x93ff89['offset']+_0x93ff89[_0x6dd2('0x22')];var _0x466a85;if(_0x44744b>=_0x5befc8){_0x44744b=_0x5befc8;_0x466a85=0xc8;}else{_0x466a85=0xce;}_0x3bc941[_0x6dd2('0x1d')](_0x466a85);return _0x3bc941[_0x6dd2('0x24')](_0x6dd2('0x25'),_0x4a4bf0+'-'+_0x44744b+'/'+_0x5befc8)[_0x6dd2('0x1f')](_0x14ea2e);}return null;};}function patchUpdates(_0x2cce2f){return function(_0x419162){try{jsonpatch[_0x6dd2('0x26')](_0x419162,_0x2cce2f,!![]);}catch(_0x41e354){return BPromise[_0x6dd2('0x27')](_0x41e354);}return _0x419162[_0x6dd2('0x28')]();};}function saveUpdates(_0x37947a,_0x4742af){return function(_0x4f1119){if(_0x4f1119){return _0x4f1119[_0x6dd2('0x29')](_0x37947a)[_0x6dd2('0x2a')](function(_0x47e189){return _0x47e189;});}return null;};}function removeEntity(_0x3a6601,_0x3e1668){return function(_0x24a502){if(_0x24a502){return _0x24a502[_0x6dd2('0x2b')]()['then'](function(){var _0x57a7b2=_0x24a502[_0x6dd2('0x2c')]({'plain':!![]});var _0x53d296=_0x6dd2('0x2d');return db[_0x6dd2('0x2e')][_0x6dd2('0x2b')]({'where':{'type':_0x53d296,'resourceId':_0x57a7b2['id']}})[_0x6dd2('0x2a')](function(){return _0x24a502;});})[_0x6dd2('0x2a')](function(){_0x3a6601[_0x6dd2('0x1d')](0xcc)[_0x6dd2('0x1e')]();});}};}function handleEntityNotFound(_0x4f79f2,_0x202f3e){return function(_0x27702c){if(!_0x27702c){_0x4f79f2[_0x6dd2('0x1c')](0x194);}return _0x27702c;};}function handleError(_0x3cbdf5,_0x379051){_0x379051=_0x379051||0x1f4;return function(_0x1525b7){logger[_0x6dd2('0x2f')](_0x1525b7[_0x6dd2('0x30')]);if(_0x1525b7['name']){delete _0x1525b7['name'];}_0x3cbdf5[_0x6dd2('0x1d')](_0x379051)[_0x6dd2('0x31')](_0x1525b7);};}exports[_0x6dd2('0x32')]=function(_0x549f6d,_0x189410){var _0x2a7e96={},_0x5588c3={},_0x5786b5={'count':0x0,'rows':[]};return db[_0x6dd2('0x33')][_0x6dd2('0x34')]()['then'](function(_0x4c401f){_0x5588c3[_0x6dd2('0x35')]=_[_0x6dd2('0x36')](_0x4c401f);_0x5588c3['query']=_[_0x6dd2('0x36')](_0x549f6d[_0x6dd2('0x37')]);_0x5588c3[_0x6dd2('0x38')]=_[_0x6dd2('0x39')](_0x5588c3[_0x6dd2('0x35')],_0x5588c3[_0x6dd2('0x37')]);_0x2a7e96['attributes']=_[_0x6dd2('0x39')](_0x5588c3['model'],qs[_0x6dd2('0x3a')](_0x549f6d[_0x6dd2('0x37')][_0x6dd2('0x3a')]));_0x2a7e96[_0x6dd2('0x3b')]=_0x2a7e96[_0x6dd2('0x3b')][_0x6dd2('0x3c')]?_0x2a7e96['attributes']:_0x5588c3['model'];if(!_0x549f6d[_0x6dd2('0x37')][_0x6dd2('0x3d')](_0x6dd2('0x3e'))){_0x2a7e96[_0x6dd2('0x22')]=qs['limit'](_0x549f6d[_0x6dd2('0x37')]['limit']);_0x2a7e96[_0x6dd2('0x20')]=qs[_0x6dd2('0x20')](_0x549f6d[_0x6dd2('0x37')]['offset']);}_0x2a7e96[_0x6dd2('0x3f')]=qs[_0x6dd2('0x40')](_0x549f6d[_0x6dd2('0x37')][_0x6dd2('0x40')]);_0x2a7e96[_0x6dd2('0x41')]=qs['filters'](_[_0x6dd2('0x42')](_0x549f6d['query'],_0x5588c3[_0x6dd2('0x38')]),_0x4c401f);if(_0x549f6d[_0x6dd2('0x37')]['filter']){_0x2a7e96[_0x6dd2('0x41')]=_['merge'](_0x2a7e96['where'],{'$or':_['map'](_0x2a7e96[_0x6dd2('0x3b')],function(_0x22a219){var _0x2c1fdc={};_0x2c1fdc[_0x22a219]={'$like':'%'+_0x549f6d['query'][_0x6dd2('0x43')]+'%'};return _0x2c1fdc;})});}_0x2a7e96=_[_0x6dd2('0x44')]({},_0x2a7e96,_0x549f6d['options']);var _0x380b6e={'where':_0x2a7e96[_0x6dd2('0x41')]};return db['CmCompany'][_0x6dd2('0x23')](_0x380b6e)['then'](function(_0xab5dec){_0x5786b5['count']=_0xab5dec;if(_0x549f6d['query'][_0x6dd2('0x45')]){_0x2a7e96[_0x6dd2('0x46')]=[{'all':!![]}];}return db[_0x6dd2('0x33')][_0x6dd2('0x47')](_0x2a7e96);})['then'](function(_0x5ceafe){_0x5786b5[_0x6dd2('0x48')]=_0x5ceafe;return _0x5786b5;})['then'](respondWithFilteredResult(_0x189410,_0x2a7e96))[_0x6dd2('0x49')](handleError(_0x189410,null));})[_0x6dd2('0x49')](handleError(_0x189410,null));};exports[_0x6dd2('0x4a')]=function(_0x528196,_0x58a550){var _0x3d5141={'raw':![],'where':{'id':_0x528196[_0x6dd2('0x4b')]['id']}},_0x262b05={};_0x262b05[_0x6dd2('0x35')]=_[_0x6dd2('0x36')](db[_0x6dd2('0x33')]['rawAttributes']);_0x262b05[_0x6dd2('0x37')]=_[_0x6dd2('0x36')](_0x528196[_0x6dd2('0x37')]);_0x262b05[_0x6dd2('0x38')]=_[_0x6dd2('0x39')](_0x262b05[_0x6dd2('0x35')],_0x262b05['query']);_0x3d5141['attributes']=_[_0x6dd2('0x39')](_0x262b05[_0x6dd2('0x35')],qs[_0x6dd2('0x3a')](_0x528196[_0x6dd2('0x37')][_0x6dd2('0x3a')]));_0x3d5141[_0x6dd2('0x3b')]=_0x3d5141[_0x6dd2('0x3b')][_0x6dd2('0x3c')]?_0x3d5141['attributes']:_0x262b05[_0x6dd2('0x35')];if(_0x528196[_0x6dd2('0x37')][_0x6dd2('0x45')]){_0x3d5141[_0x6dd2('0x46')]=[{'all':!![]}];}_0x3d5141=_['merge']({},_0x3d5141,_0x528196['options']);return db['CmCompany'][_0x6dd2('0x4c')](_0x3d5141)[_0x6dd2('0x2a')](handleEntityNotFound(_0x58a550,null))[_0x6dd2('0x2a')](respondWithResult(_0x58a550,null))[_0x6dd2('0x49')](handleError(_0x58a550,null));};exports[_0x6dd2('0x4d')]=function(_0xb27f22,_0x16b3e6){return db[_0x6dd2('0x33')]['create'](_0xb27f22[_0x6dd2('0x4e')],{})[_0x6dd2('0x2a')](function(_0x13452b){var _0x3275ed=_0xb27f22['user'][_0x6dd2('0x2c')]({'plain':!![]});if(!_0x3275ed)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3275ed['role']==='user'){var _0x1ec32c=_0x13452b[_0x6dd2('0x2c')]({'plain':!![]});var _0xeee477=_0x6dd2('0x2d');return db[_0x6dd2('0x4f')]['find']({'where':{'name':_0xeee477,'userProfileId':_0x3275ed[_0x6dd2('0x50')]},'raw':!![]})[_0x6dd2('0x2a')](function(_0x45f8fc){if(_0x45f8fc&&_0x45f8fc[_0x6dd2('0x51')]===0x0){return db[_0x6dd2('0x2e')][_0x6dd2('0x4d')]({'name':_0x1ec32c[_0x6dd2('0x52')],'resourceId':_0x1ec32c['id'],'type':_0x45f8fc['name'],'sectionId':_0x45f8fc['id']},{})['then'](function(){return _0x13452b;});}else{return _0x13452b;}})[_0x6dd2('0x49')](function(_0x36e7e9){logger[_0x6dd2('0x2f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x36e7e9);throw _0x36e7e9;});}return _0x13452b;})['then'](respondWithResult(_0x16b3e6,0xc9))[_0x6dd2('0x49')](handleError(_0x16b3e6,null));};exports[_0x6dd2('0x29')]=function(_0x1ea9bd,_0x44e745){if(_0x1ea9bd['body']['id']){delete _0x1ea9bd['body']['id'];}return db[_0x6dd2('0x33')][_0x6dd2('0x4c')]({'where':{'id':_0x1ea9bd['params']['id']}})['then'](handleEntityNotFound(_0x44e745,null))['then'](saveUpdates(_0x1ea9bd[_0x6dd2('0x4e')],null))['then'](respondWithResult(_0x44e745,null))[_0x6dd2('0x49')](handleError(_0x44e745,null));};exports[_0x6dd2('0x2b')]=function(_0x51e49b,_0x4421dd){return db[_0x6dd2('0x33')][_0x6dd2('0x4c')]({'where':{'id':_0x51e49b[_0x6dd2('0x4b')]['id']}})[_0x6dd2('0x2a')](handleEntityNotFound(_0x4421dd,null))['then'](removeEntity(_0x4421dd,null))[_0x6dd2('0x49')](handleError(_0x4421dd,null));};exports[_0x6dd2('0x34')]=function(_0x45a776,_0xfa299d){return db[_0x6dd2('0x33')]['describe']()['then'](respondWithResult(_0xfa299d,null))[_0x6dd2('0x49')](handleError(_0xfa299d,null));};exports[_0x6dd2('0x53')]=function(_0x8f42d5,_0x6983a8,_0x581924){return db[_0x6dd2('0x54')]['find']({'where':{'id':_0x8f42d5['params']['id']}})[_0x6dd2('0x2a')](handleEntityNotFound(_0x6983a8,null))[_0x6dd2('0x2a')](function(_0x613247){if(_0x613247){return _0x613247['addContacts'](_0x8f42d5[_0x6dd2('0x4e')][_0x6dd2('0x55')],_[_0x6dd2('0x56')](_0x8f42d5[_0x6dd2('0x4e')],[_0x6dd2('0x55'),'id'])||{});}})[_0x6dd2('0x2a')](respondWithResult(_0x6983a8,null))[_0x6dd2('0x49')](handleError(_0x6983a8,null));};exports[_0x6dd2('0x57')]=function(_0x3f635c,_0x1f73af,_0xc2c0d9){var _0x1d699c={};var _0x38d301={};var _0x425a49;var _0x46804c;return db[_0x6dd2('0x33')][_0x6dd2('0x58')]({'where':{'id':_0x3f635c['params']['id']}})[_0x6dd2('0x2a')](handleEntityNotFound(_0x1f73af,null))[_0x6dd2('0x2a')](function(_0xcb3ecd){if(_0xcb3ecd){_0x425a49=_0xcb3ecd;_0x38d301['model']=_[_0x6dd2('0x36')](db[_0x6dd2('0x54')][_0x6dd2('0x59')]);_0x38d301['query']=_['keys'](_0x3f635c['query']);_0x38d301[_0x6dd2('0x38')]=_[_0x6dd2('0x39')](_0x38d301[_0x6dd2('0x35')],_0x38d301['query']);_0x1d699c[_0x6dd2('0x3b')]=_[_0x6dd2('0x39')](_0x38d301[_0x6dd2('0x35')],qs[_0x6dd2('0x3a')](_0x3f635c[_0x6dd2('0x37')]['fields']));_0x1d699c[_0x6dd2('0x3b')]=_0x1d699c[_0x6dd2('0x3b')][_0x6dd2('0x3c')]?_0x1d699c['attributes']:_0x38d301['model'];_0x1d699c[_0x6dd2('0x3f')]=qs[_0x6dd2('0x40')](_0x3f635c['query'][_0x6dd2('0x40')]);_0x1d699c[_0x6dd2('0x41')]=qs[_0x6dd2('0x38')](_['pick'](_0x3f635c[_0x6dd2('0x37')],_0x38d301[_0x6dd2('0x38')]));if(_0x3f635c[_0x6dd2('0x37')]['filter']){_0x1d699c[_0x6dd2('0x41')]=_['merge'](_0x1d699c[_0x6dd2('0x41')],{'$or':_[_0x6dd2('0x5a')](_0x1d699c[_0x6dd2('0x3b')],function(_0x58a423){var _0x43b4ea={};_0x43b4ea[_0x58a423]={'$like':'%'+_0x3f635c[_0x6dd2('0x37')][_0x6dd2('0x43')]+'%'};return _0x43b4ea;})});}_0x1d699c=_['merge']({},_0x1d699c,_0x3f635c[_0x6dd2('0x5b')]);return _0x425a49[_0x6dd2('0x57')](_0x1d699c);}})[_0x6dd2('0x2a')](function(_0x5def23){if(_0x5def23){_0x46804c=_0x5def23[_0x6dd2('0x3c')];if(!_0x3f635c['query']['hasOwnProperty'](_0x6dd2('0x3e'))){_0x1d699c['limit']=qs[_0x6dd2('0x22')](_0x3f635c[_0x6dd2('0x37')][_0x6dd2('0x22')]);_0x1d699c[_0x6dd2('0x20')]=qs[_0x6dd2('0x20')](_0x3f635c[_0x6dd2('0x37')][_0x6dd2('0x20')]);}return _0x425a49['getContacts'](_0x1d699c);}})['then'](function(_0xf1e6c7){if(_0xf1e6c7){return _0xf1e6c7?{'count':_0x46804c,'rows':_0xf1e6c7}:null;}})[_0x6dd2('0x2a')](respondWithResult(_0x1f73af,null))[_0x6dd2('0x49')](handleError(_0x1f73af,null));};
\ No newline at end of file
index 7563187..b63476c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96bd=['request-promise','path','rimraf','exports','define','CmCompany','cm_companies','lodash','../../config/logger','api','moment'];(function(_0x285bc6,_0x24cb17){var _0x1fef47=function(_0x1e6212){while(--_0x1e6212){_0x285bc6['push'](_0x285bc6['shift']());}};_0x1fef47(++_0x24cb17);}(_0x96bd,0x1d5));var _0xd96b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x96bd[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0xd96b('0x0'));var util=require('util');var logger=require(_0xd96b('0x1'))(_0xd96b('0x2'));var moment=require(_0xd96b('0x3'));var BPromise=require('bluebird');var rp=require(_0xd96b('0x4'));var fs=require('fs');var path=require(_0xd96b('0x5'));var rimraf=require(_0xd96b('0x6'));var config=require('../../config/environment');var attributes=require('./cmCompany.attributes');module[_0xd96b('0x7')]=function(_0x4fdedf,_0x920e3c){return _0x4fdedf[_0xd96b('0x8')](_0xd96b('0x9'),attributes,{'tableName':_0xd96b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6632=['CmCompany','cm_companies','util','../../config/logger','api','bluebird','request-promise','path','./cmCompany.attributes','exports','define'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6632,0x1e6));var _0x2663=function(_0x3cbb14,_0x3c95a7){_0x3cbb14=_0x3cbb14-0x0;var _0x2bfb35=_0x6632[_0x3cbb14];return _0x2bfb35;};'use strict';var _=require('lodash');var util=require(_0x2663('0x0'));var logger=require(_0x2663('0x1'))(_0x2663('0x2'));var moment=require('moment');var BPromise=require(_0x2663('0x3'));var rp=require(_0x2663('0x4'));var fs=require('fs');var path=require(_0x2663('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2663('0x6'));module[_0x2663('0x7')]=function(_0x1f01b7,_0xf62b6){return _0x1f01b7[_0x2663('0x8')](_0x2663('0x9'),attributes,{'tableName':_0x2663('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7bb9bd5..831c39b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f15=['error','code','CmCompany,\x20%s,\x20%s','message','result','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','info','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s'];(function(_0x1efb37,_0x36569f){var _0x154cb0=function(_0x575ea4){while(--_0x575ea4){_0x1efb37['push'](_0x1efb37['shift']());}};_0x154cb0(++_0x36569f);}(_0x5f15,0x194));var _0x55f1=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x5f15[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x55f1('0x0'));var util=require('util');var moment=require(_0x55f1('0x1'));var BPromise=require(_0x55f1('0x2'));var rs=require(_0x55f1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x55f1('0x4'));var logger=require(_0x55f1('0x5'))(_0x55f1('0x6'));var config=require(_0x55f1('0x7'));var jayson=require(_0x55f1('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1a668f,_0x56da74,_0x54ef13){return new BPromise(function(_0x39e391,_0x38de4){return client[_0x55f1('0x9')](_0x1a668f,_0x54ef13)['then'](function(_0xcd46cf){logger[_0x55f1('0xa')]('CmCompany,\x20%s,\x20%s',_0x56da74,_0x55f1('0xb'));logger[_0x55f1('0xc')](_0x55f1('0xd'),_0x56da74,'request\x20sent',JSON['stringify'](_0xcd46cf));if(_0xcd46cf[_0x55f1('0xe')]){if(_0xcd46cf['error'][_0x55f1('0xf')]===0x1f4){logger[_0x55f1('0xe')](_0x55f1('0x10'),_0x56da74,_0xcd46cf[_0x55f1('0xe')][_0x55f1('0x11')]);return _0x38de4(_0xcd46cf['error'][_0x55f1('0x11')]);}logger[_0x55f1('0xe')](_0x55f1('0x10'),_0x56da74,_0xcd46cf[_0x55f1('0xe')][_0x55f1('0x11')]);return _0x39e391(_0xcd46cf['error']['message']);}else{logger[_0x55f1('0xa')](_0x55f1('0x10'),_0x56da74,_0x55f1('0xb'));_0x39e391(_0xcd46cf[_0x55f1('0x12')][_0x55f1('0x11')]);}})['catch'](function(_0x428c4b){logger[_0x55f1('0xe')](_0x55f1('0x10'),_0x56da74,_0x428c4b);_0x38de4(_0x428c4b);});});}
\ No newline at end of file
+var _0x2847=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','moment','bluebird','../../mysqldb'];(function(_0x3437be,_0x243c5d){var _0x2fc99f=function(_0x533931){while(--_0x533931){_0x3437be['push'](_0x3437be['shift']());}};_0x2fc99f(++_0x243c5d);}(_0x2847,0x9d));var _0x7284=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x2847[_0x422905];return _0x33dc6c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x7284('0x0'));var BPromise=require(_0x7284('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7284('0x2'))['db'];var utils=require(_0x7284('0x3'));var logger=require(_0x7284('0x4'))('rpc');var config=require(_0x7284('0x5'));var jayson=require(_0x7284('0x6'));var client=jayson[_0x7284('0x7')][_0x7284('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2d536d,_0x9c16bd,_0x529939){return new BPromise(function(_0x1a4e0d,_0x503e7c){return client[_0x7284('0x9')](_0x2d536d,_0x529939)[_0x7284('0xa')](function(_0x3f9c96){logger[_0x7284('0xb')](_0x7284('0xc'),_0x9c16bd,_0x7284('0xd'));logger['debug'](_0x7284('0xe'),_0x9c16bd,_0x7284('0xd'),JSON[_0x7284('0xf')](_0x3f9c96));if(_0x3f9c96[_0x7284('0x10')]){if(_0x3f9c96[_0x7284('0x10')][_0x7284('0x11')]===0x1f4){logger[_0x7284('0x10')]('CmCompany,\x20%s,\x20%s',_0x9c16bd,_0x3f9c96['error'][_0x7284('0x12')]);return _0x503e7c(_0x3f9c96['error'][_0x7284('0x12')]);}logger['error']('CmCompany,\x20%s,\x20%s',_0x9c16bd,_0x3f9c96[_0x7284('0x10')]['message']);return _0x1a4e0d(_0x3f9c96[_0x7284('0x10')][_0x7284('0x12')]);}else{logger[_0x7284('0xb')](_0x7284('0xc'),_0x9c16bd,_0x7284('0xd'));_0x1a4e0d(_0x3f9c96[_0x7284('0x13')][_0x7284('0x12')]);}})['catch'](function(_0xea3a23){logger['error'](_0x7284('0xc'),_0x9c16bd,_0xea3a23);_0x503e7c(_0xea3a23);});});}
\ No newline at end of file
index f49f627..3e9166a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddbe=['show','/:id/contacts','getContacts','post','addContacts','put','delete','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCompany.controller','get','/describe','isAuthenticated','describe','/:id'];(function(_0x19d982,_0x570390){var _0x326291=function(_0x44a1c3){while(--_0x44a1c3){_0x19d982['push'](_0x19d982['shift']());}};_0x326291(++_0x570390);}(_0xddbe,0x13b));var _0xeddb=function(_0x4b6a59,_0x14892f){_0x4b6a59=_0x4b6a59-0x0;var _0x19f2f0=_0xddbe[_0x4b6a59];return _0x19f2f0;};'use strict';var multer=require(_0xeddb('0x0'));var util=require(_0xeddb('0x1'));var path=require(_0xeddb('0x2'));var timeout=require(_0xeddb('0x3'));var express=require('express');var router=express[_0xeddb('0x4')]();var fs_extra=require(_0xeddb('0x5'));var auth=require(_0xeddb('0x6'));var interaction=require(_0xeddb('0x7'));var config=require(_0xeddb('0x8'));var controller=require(_0xeddb('0x9'));router[_0xeddb('0xa')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xeddb('0xb'),auth[_0xeddb('0xc')](),controller[_0xeddb('0xd')]);router[_0xeddb('0xa')](_0xeddb('0xe'),auth[_0xeddb('0xc')](),controller[_0xeddb('0xf')]);router[_0xeddb('0xa')](_0xeddb('0x10'),auth[_0xeddb('0xc')](),controller[_0xeddb('0x11')]);router[_0xeddb('0x12')]('/',auth[_0xeddb('0xc')](),controller['create']);router['post'](_0xeddb('0x10'),auth[_0xeddb('0xc')](),controller[_0xeddb('0x13')]);router[_0xeddb('0x14')]('/:id',auth[_0xeddb('0xc')](),controller['update']);router[_0xeddb('0x15')]('/:id',auth[_0xeddb('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x368b=['../../config/environment','./cmCompany.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getContacts','create','post','/:id/contacts','addContacts','put','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x3770f8,_0x2e0519){var _0x100514=function(_0x2b471b){while(--_0x2b471b){_0x3770f8['push'](_0x3770f8['shift']());}};_0x100514(++_0x2e0519);}(_0x368b,0x76));var _0xb368=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x368b[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xb368('0x0'));var util=require(_0xb368('0x1'));var path=require(_0xb368('0x2'));var timeout=require(_0xb368('0x3'));var express=require('express');var router=express[_0xb368('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb368('0x5'));var interaction=require(_0xb368('0x6'));var config=require(_0xb368('0x7'));var controller=require(_0xb368('0x8'));router[_0xb368('0x9')]('/',auth[_0xb368('0xa')](),controller[_0xb368('0xb')]);router[_0xb368('0x9')](_0xb368('0xc'),auth['isAuthenticated'](),controller[_0xb368('0xd')]);router['get'](_0xb368('0xe'),auth[_0xb368('0xa')](),controller[_0xb368('0xf')]);router[_0xb368('0x9')]('/:id/contacts',auth[_0xb368('0xa')](),controller[_0xb368('0x10')]);router['post']('/',auth[_0xb368('0xa')](),controller[_0xb368('0x11')]);router[_0xb368('0x12')](_0xb368('0x13'),auth[_0xb368('0xa')](),controller[_0xb368('0x14')]);router[_0xb368('0x15')](_0xb368('0xe'),auth[_0xb368('0xa')](),controller['update']);router[_0xb368('0x16')]('/:id',auth[_0xb368('0xa')](),controller[_0xb368('0x17')]);module[_0xb368('0x18')]=router;
\ No newline at end of file
index 43095e2..853c0dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ed1=['NOW','lodash','sequelize','exports','STRING','TEXT','INTEGER','UNSIGNED','DATE'];(function(_0x27f444,_0x2576e6){var _0x4e4cf3=function(_0x54c2db){while(--_0x54c2db){_0x27f444['push'](_0x27f444['shift']());}};_0x4e4cf3(++_0x2576e6);}(_0x3ed1,0x1d5));var _0x13ed=function(_0x20275f,_0x4528c5){_0x20275f=_0x20275f-0x0;var _0x5a5457=_0x3ed1[_0x20275f];return _0x5a5457;};'use strict';var _=require(_0x13ed('0x0'));var Sequelize=require(_0x13ed('0x1'));module[_0x13ed('0x2')]={'firstName':{'type':Sequelize[_0x13ed('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0x13ed('0x3')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x13ed('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x13ed('0x3')]},'dateOfBirth':{'type':Sequelize[_0x13ed('0x3')]},'description':{'type':Sequelize[_0x13ed('0x4')]},'phone':{'type':Sequelize[_0x13ed('0x3')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x13ed('0x3')]},'email':{'type':Sequelize[_0x13ed('0x3')]},'url':{'type':Sequelize[_0x13ed('0x3')]},'facebook':{'type':Sequelize[_0x13ed('0x3')]},'fb_data':{'type':Sequelize[_0x13ed('0x3')]},'twitter':{'type':Sequelize[_0x13ed('0x3')]},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize[_0x13ed('0x3')]},'line':{'type':Sequelize[_0x13ed('0x3')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0x13ed('0x3')]},'UserId':{'type':Sequelize[_0x13ed('0x5')]},'priority':{'type':Sequelize[_0x13ed('0x5')](0x2)[_0x13ed('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x13ed('0x7')],'defaultValue':Sequelize[_0x13ed('0x8')]}};
\ No newline at end of file
+var _0xd2b5=['INTEGER','NOW','lodash','sequelize','exports','STRING'];(function(_0xbaa093,_0x59c292){var _0x4d2f14=function(_0x23d3c9){while(--_0x23d3c9){_0xbaa093['push'](_0xbaa093['shift']());}};_0x4d2f14(++_0x59c292);}(_0xd2b5,0x152));var _0x5d2b=function(_0x3b6868,_0x342c88){_0x3b6868=_0x3b6868-0x0;var _0x39154b=_0xd2b5[_0x3b6868];return _0x39154b;};'use strict';var _=require(_0x5d2b('0x0'));var Sequelize=require(_0x5d2b('0x1'));module[_0x5d2b('0x2')]={'firstName':{'type':Sequelize[_0x5d2b('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0x5d2b('0x3')]},'street':{'type':Sequelize[_0x5d2b('0x3')]},'postalCode':{'type':Sequelize[_0x5d2b('0x3')]},'city':{'type':Sequelize[_0x5d2b('0x3')]},'country':{'type':Sequelize[_0x5d2b('0x3')]},'dateOfBirth':{'type':Sequelize[_0x5d2b('0x3')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x5d2b('0x3')]},'fax':{'type':Sequelize[_0x5d2b('0x3')]},'email':{'type':Sequelize[_0x5d2b('0x3')]},'url':{'type':Sequelize['STRING']},'facebook':{'type':Sequelize[_0x5d2b('0x3')]},'fb_data':{'type':Sequelize['STRING']},'twitter':{'type':Sequelize[_0x5d2b('0x3')]},'skype':{'type':Sequelize[_0x5d2b('0x3')]},'teams':{'type':Sequelize[_0x5d2b('0x3')]},'viber':{'type':Sequelize[_0x5d2b('0x3')]},'line':{'type':Sequelize[_0x5d2b('0x3')]},'wechat':{'type':Sequelize[_0x5d2b('0x3')]},'telegram':{'type':Sequelize[_0x5d2b('0x3')]},'UserId':{'type':Sequelize[_0x5d2b('0x4')]},'priority':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize[_0x5d2b('0x5')]}};
\ No newline at end of file
index df3f525..ef346ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf25a=['FaxQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappMessage','WhatsappQueueReport','create','bulkCreate','duplicates','$or','findOrCreate','error','color','get','$and','omit','format','cf_%d','startsWith','table','setFields','id\x20=\x20?','params','toParam','values','phone','getTags','rawAttributes','pick','filter','options','setTags','findOne','ids','getHoppers','ContactId','include','getHopperHistories','includeAll','getHopperFinals','getJscriptySessions','uploadCsv','No\x20ListId\x20specified','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','binding_keys','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','server/files/tmp','file','filename','0777','child_process','fork','../../components/import/cm/csv','File\x20uploaded\x20correctly!','pid','send','upload','createReadStream','path','parse','meta','import','binding','../../components/import/cm/csv2','stringify','message','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','getJourney','mail','chat','sms','openchannel','fax','voice','-createdAt','resolve','channel','toLowerCase','Invalid\x20channel','range','Invalid\x20date\x20for\x20range\x20from\x20filter','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','uniqueid','source','destination','starttime','endtime','duration','note','createdAt','alias','findAndCountAll','fullname','startCase','Website','Account','closed','closedAt','disposition','secondDisposition','thirdDisposition','UserId','key','Owner','browserName','customerIp','deviceModel','ratingMessage','ratingType','ratingValue','referer','subject','substatus','externalUrl','Interaction','reverse','slice','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','sendStatus','status','end','json','offset','limit','undefined','count','reject','save','update','destroy','then','stack','name','index','CmContact','describe','keys','length','push','CmCustomField','all','cf_','fieldType','type','model','query','intersection','attributes','fields','nolimit','order','sort','where','filters','field','tools_tags','select','from','cm_contacts','left_join','cm_user_has_contacts','ct.CmContactId\x20=\x20c.id','c.deletedAt\x20IS\x20NULL','expr','search','conditions','find','Tag','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','and','uc.UserId\x20=\x20?','value','dateOfBirth','datetime','castTo','DATE','buildExpression','text','start','hasOwnProperty','Contact','isEmpty','ListId','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','isArray','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','c.id','Sequelize','clone','DESC','having','t.id\x20IN\x20?','user','agent','some','getLists','c.ListId\x20IS\x20NULL','role','sequelize','toString','keyBy','c.lastName','c.phone','c.mobile','c.fax','c.createdAt','c.deletedAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','split','rows','catch','tags','columnName','displayName','findAll','custom','merge','body','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopperBlack],\x20%s','ChatInteraction','ChatMessage','ChatOfflineMessage','MailMessage','MailInteraction','SmsInteraction','SmsMessage','FaxInteraction','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','CmHopperHistory','ReportAgentPreview','VoiceCallReport','ChatQueueReport'];(function(_0x20895e,_0x2ddef4){var _0x9c898e=function(_0x27830d){while(--_0x27830d){_0x20895e['push'](_0x20895e['shift']());}};_0x9c898e(++_0x2ddef4);}(_0xf25a,0x1b1));var _0xaf25=function(_0xe3c804,_0x469031){_0xe3c804=_0xe3c804-0x0;var _0x59e322=_0xf25a[_0xe3c804];return _0x59e322;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaf25('0x0'));var zipdir=require(_0xaf25('0x1'));var jsonpatch=require(_0xaf25('0x2'));var rp=require(_0xaf25('0x3'));var moment=require(_0xaf25('0x4'));var BPromise=require(_0xaf25('0x5'));var Mustache=require(_0xaf25('0x6'));var util=require('util');var path=require('path');var sox=require(_0xaf25('0x7'));var csv=require('to-csv');var ejs=require(_0xaf25('0x8'));var fs=require('fs');var fs_extra=require(_0xaf25('0x9'));var _=require(_0xaf25('0xa'));var squel=require(_0xaf25('0xb'));var crypto=require('crypto');var jsforce=require(_0xaf25('0xc'));var deskjs=require(_0xaf25('0xd'));var toCsv=require(_0xaf25('0xe'));var querystring=require(_0xaf25('0xf'));var Papa=require('papaparse');var Redis=require(_0xaf25('0x10'));var authService=require(_0xaf25('0x11'));var qs=require(_0xaf25('0x12'));var as=require(_0xaf25('0x13'));var hardwareService=require(_0xaf25('0x14'));var logger=require(_0xaf25('0x15'))(_0xaf25('0x16'));var utils=require(_0xaf25('0x17'));var config=require(_0xaf25('0x18'));var licenseUtil=require(_0xaf25('0x19'));var db=require(_0xaf25('0x1a'))['db'];config[_0xaf25('0x1b')]=_[_0xaf25('0x1c')](config[_0xaf25('0x1b')],{'host':_0xaf25('0x1d'),'port':0x18eb});var socket=require(_0xaf25('0x1e'))(new Redis(config['redis']));require(_0xaf25('0x1f'))['register'](socket);function respondWithStatusCode(_0x4df4c7,_0x4e3da4){_0x4e3da4=_0x4e3da4||0xcc;return function(_0x2cd539){if(_0x2cd539){return _0x4df4c7[_0xaf25('0x20')](_0x4e3da4);}return _0x4df4c7[_0xaf25('0x21')](_0x4e3da4)[_0xaf25('0x22')]();};}function respondWithResult(_0x5b8181,_0x98e950){_0x98e950=_0x98e950||0xc8;return function(_0x449f17){if(_0x449f17){return _0x5b8181[_0xaf25('0x21')](_0x98e950)[_0xaf25('0x23')](_0x449f17);}};}function respondWithFilteredResult(_0x4c9e6a,_0x7eacc8){return function(_0x438be0){if(_0x438be0){var _0xbf1f1a=typeof _0x7eacc8[_0xaf25('0x24')]==='undefined'&&typeof _0x7eacc8[_0xaf25('0x25')]===_0xaf25('0x26');var _0x3d8834=_0x438be0[_0xaf25('0x27')];var _0x10f97c=_0xbf1f1a?0x0:_0x7eacc8['offset'];var _0x21b8ab=_0xbf1f1a?_0x438be0[_0xaf25('0x27')]:_0x7eacc8[_0xaf25('0x24')]+_0x7eacc8['limit'];var _0x2007c7;if(_0x21b8ab>=_0x3d8834){_0x21b8ab=_0x3d8834;_0x2007c7=0xc8;}else{_0x2007c7=0xce;}_0x4c9e6a[_0xaf25('0x21')](_0x2007c7);return _0x4c9e6a['set']('Content-Range',_0x10f97c+'-'+_0x21b8ab+'/'+_0x3d8834)[_0xaf25('0x23')](_0x438be0);}return null;};}function patchUpdates(_0x31b4a1){return function(_0x18f823){try{jsonpatch['apply'](_0x18f823,_0x31b4a1,!![]);}catch(_0x144cf0){return BPromise[_0xaf25('0x28')](_0x144cf0);}return _0x18f823[_0xaf25('0x29')]();};}function saveUpdates(_0x305f01,_0x327482){return function(_0x53f1e4){if(_0x53f1e4){return _0x53f1e4[_0xaf25('0x2a')](_0x305f01)['then'](function(_0x3c2b78){return _0x3c2b78;});}return null;};}function removeEntity(_0x53371d,_0x49543e){return function(_0x8674b0){if(_0x8674b0){return _0x8674b0[_0xaf25('0x2b')]()[_0xaf25('0x2c')](function(){_0x53371d[_0xaf25('0x21')](0xcc)[_0xaf25('0x22')]();});}};}function handleEntityNotFound(_0x510988,_0x482e0f){return function(_0x78cfa){if(!_0x78cfa){_0x510988[_0xaf25('0x20')](0x194);}return _0x78cfa;};}function handleError(_0x344dd1,_0x48a8a4){_0x48a8a4=_0x48a8a4||0x1f4;return function(_0x38b6b2){logger['error'](_0x38b6b2[_0xaf25('0x2d')]);if(_0x38b6b2[_0xaf25('0x2e')]){delete _0x38b6b2['name'];}_0x344dd1[_0xaf25('0x21')](_0x48a8a4)['send'](_0x38b6b2);};}exports[_0xaf25('0x2f')]=function(_0xac5bcb,_0x5c7d6a){var _0x542952={},_0x3e7b90={},_0x45f250={'count':0x0,'rows':[]};return db[_0xaf25('0x30')][_0xaf25('0x31')]()[_0xaf25('0x2c')](function(_0x5af5b5){var _0x50b420=[];for(var _0xc7baaa=0x0;_0xc7baaa<Object[_0xaf25('0x32')](_0x5af5b5)[_0xaf25('0x33')];_0xc7baaa++){var _0x393e2a=Object[_0xaf25('0x32')](_0x5af5b5)[_0xc7baaa];if(_['startsWith'](_0x393e2a,'cf_')){_0x50b420[_0xaf25('0x34')](db[_0xaf25('0x35')]['findOne']({'where':{'id':_['trimStart'](_0x393e2a,'cf_')},'raw':!![]}));}}return BPromise[_0xaf25('0x36')](_0x50b420)[_0xaf25('0x2c')](function(_0x2f21ed){for(var _0x2f8be9=0x0;_0x2f8be9<_0x2f21ed[_0xaf25('0x33')];_0x2f8be9++){if(_0x2f21ed[_0x2f8be9]){var _0x4b66c6=_0xaf25('0x37')+_0x2f21ed[_0x2f8be9]['id'];var _0x79605d=_0x5af5b5[_0x4b66c6];_0x79605d[_0xaf25('0x38')]=_0x2f21ed[_0x2f8be9][_0xaf25('0x39')];}}return _0x5af5b5;});})[_0xaf25('0x2c')](function(_0x720901){_0x3e7b90[_0xaf25('0x3a')]=_[_0xaf25('0x32')](_0x720901);_0x3e7b90['query']=_[_0xaf25('0x32')](_0xac5bcb[_0xaf25('0x3b')]);_0x3e7b90['filters']=_[_0xaf25('0x3c')](_0x3e7b90['model'],_0x3e7b90[_0xaf25('0x3b')]);_0x542952[_0xaf25('0x3d')]=_[_0xaf25('0x3c')](_0x3e7b90[_0xaf25('0x3a')],qs[_0xaf25('0x3e')](_0xac5bcb[_0xaf25('0x3b')][_0xaf25('0x3e')]));_0x542952[_0xaf25('0x3d')]=_0x542952[_0xaf25('0x3d')]['length']?_0x542952['attributes']:_0x3e7b90['model'];if(!_0xac5bcb[_0xaf25('0x3b')]['hasOwnProperty'](_0xaf25('0x3f'))){_0x542952[_0xaf25('0x25')]=qs['limit'](_0xac5bcb[_0xaf25('0x3b')][_0xaf25('0x25')]);_0x542952[_0xaf25('0x24')]=qs[_0xaf25('0x24')](_0xac5bcb['query'][_0xaf25('0x24')]);}_0x542952[_0xaf25('0x40')]=qs[_0xaf25('0x41')](_0xac5bcb[_0xaf25('0x3b')][_0xaf25('0x41')]);_0x542952[_0xaf25('0x42')]=qs['filters'](_['pick'](_0xac5bcb[_0xaf25('0x3b')],_0x3e7b90[_0xaf25('0x43')]),_0x720901);var _0x9639cb=[];var _0x16adb1=squel['select']()[_0xaf25('0x44')]('id')[_0xaf25('0x44')](_0xaf25('0x2e'))[_0xaf25('0x44')]('color')['from'](_0xaf25('0x45'));var _0x33d5c4=squel[_0xaf25('0x46')]()[_0xaf25('0x47')](_0xaf25('0x48'),'c')[_0xaf25('0x49')](_0xaf25('0x4a'),'uc','uc.CmContactId\x20=\x20c.id')['left_join']('cm_contact_has_tags','ct',_0xaf25('0x4b'))['left_join'](_0xaf25('0x45'),'t','t.id\x20=\x20ct.TagId')[_0xaf25('0x42')](_0xaf25('0x4c'));var _0x187bc1=squel[_0xaf25('0x4d')]();var _0x2fe765=[];var _0x54be54=squel[_0xaf25('0x4d')]();var _0x255646;if(_0xac5bcb[_0xaf25('0x3b')][_0xaf25('0x4e')]){_0x255646=as['parseSearch'](_0xac5bcb['query'][_0xaf25('0x4e')]);var _0x5b68f7=_0x255646['sqlOperator'];for(var _0x2788f7=0x0;_0x2788f7<_0x255646[_0xaf25('0x4f')]['length'];_0x2788f7++){var _0x48d02e=_0x255646[_0xaf25('0x4f')][_0x2788f7];var _0x4e2a68='c';var _0x99be3a=_(_0x720901)[_0xaf25('0x32')]()[_0xaf25('0x50')](function(_0xadd01){return _0xadd01===_0x48d02e[_0xaf25('0x44')];});if(_0x99be3a)_0x99be3a=_0x720901[_0x48d02e[_0xaf25('0x44')]];if(!_0x99be3a){if(_0x48d02e[_0xaf25('0x44')]===_0xaf25('0x51')){var _0x4df0cb=_0x48d02e['value']['split'](',')[_0xaf25('0x52')](function(_0x2e036f){return Number(_0x2e036f);});_0x4df0cb[_0xaf25('0x53')](function(_0x173f7d){_0x54be54['or'](_0xaf25('0x54'),'%,'+_0x173f7d+',%');});_0x2fe765=_[_0xaf25('0x55')](_0x2fe765,_0x4df0cb);}else if(_0x48d02e[_0xaf25('0x44')]===_0xaf25('0x56')){_0x187bc1[_0xaf25('0x57')](_0xaf25('0x58'),_0x48d02e[_0xaf25('0x59')]);}}else{if(_0x48d02e[_0xaf25('0x44')]===_0xaf25('0x5a')||_0x99be3a[_0xaf25('0x38')]===_0xaf25('0x5b'))_0x48d02e[_0xaf25('0x5c')]=_0xaf25('0x5d');var _0x1e244b=as[_0xaf25('0x5e')](_0x4e2a68,_0x99be3a[_0xaf25('0x39')],_0x48d02e);_0x187bc1[_0x5b68f7](_0x1e244b[_0xaf25('0x5f')],_0x1e244b[_0xaf25('0x59')][_0xaf25('0x60')],_0x1e244b[_0xaf25('0x59')]['end']);}}}else{var _0x49a0c1=_(Object[_0xaf25('0x32')](_0xac5bcb['query']))[_0xaf25('0x52')](function(_0xcbbe9){return _0x720901[_0xaf25('0x61')](_0xcbbe9)?_0xcbbe9:undefined;})['filter'](function(_0xe256f9){return!_['isNil'](_0xe256f9);})['value']();if(_0xac5bcb[_0xaf25('0x3b')][_0xaf25('0x62')])_0x49a0c1[_0xaf25('0x34')](_0xaf25('0x62'));if(!_[_0xaf25('0x63')](_0x49a0c1)){_0x49a0c1[_0xaf25('0x53')](function(_0x4cdd22){if(_0x4cdd22===_0xaf25('0x64')){_0x33d5c4[_0xaf25('0x42')](_0xaf25('0x65'),[][_0xaf25('0x66')](_0xac5bcb[_0xaf25('0x3b')][_0x4cdd22]));}else if(_0x4cdd22===_0xaf25('0x62')){var _0x2162e7='%'+_0xac5bcb[_0xaf25('0x3b')][_0x4cdd22]+'%';_0x33d5c4[_0xaf25('0x42')](_0xaf25('0x67'),_0x2162e7);}else{_0x33d5c4['where']('c.'+_0x4cdd22+_0xaf25('0x68'),_0xac5bcb['query'][_0x4cdd22]);}});}if(_0xac5bcb['query'][_0xaf25('0x69')]){_0x2fe765=_[_0xaf25('0x6a')](_0xac5bcb[_0xaf25('0x3b')][_0xaf25('0x69')])?_0xac5bcb[_0xaf25('0x3b')][_0xaf25('0x69')]:new Array(_0xac5bcb[_0xaf25('0x3b')]['tag']);_0x2fe765[_0xaf25('0x53')](function(_0x83588a){_0x54be54['or'](_0xaf25('0x54'),'%,'+_0x83588a+',%');});}if(_0xac5bcb[_0xaf25('0x3b')]['filter']){var _0x38b8d3=_0xac5bcb[_0xaf25('0x3b')]['filter'][_0xaf25('0x6b')]('\x5c','\x5c\x5c')[_0xaf25('0x6b')](/'/g,'\x27\x27');if(_0x38b8d3['split']('\x20')[_0xaf25('0x33')]>0x1){_0x187bc1['or'](_0xaf25('0x6c'),qs[_0xaf25('0x6d')](_0x38b8d3),null);}else{if(qs[_0xaf25('0x6e')](_0x38b8d3)){_0x187bc1['or'](_0xaf25('0x6f'),_0x38b8d3+'%');_0x187bc1['or'](_0xaf25('0x70'),_0x38b8d3+'%');_0x187bc1['or'](_0xaf25('0x71'),_0x38b8d3+'%');_0x187bc1['or'](_0xaf25('0x72'),_0x38b8d3+'%');}else if(qs[_0xaf25('0x73')](_0x38b8d3)){_0x187bc1['or'](_0xaf25('0x74'),_0x38b8d3+'%');}else{_0x187bc1['or'](_0xaf25('0x75'),'%'+_0x38b8d3+'%');_0x187bc1['or'](_0xaf25('0x76'),'%'+_0x38b8d3+'%');_0x187bc1['or'](_0xaf25('0x74'),'%'+_0x38b8d3+'%');}}}}_0x33d5c4['where'](_0x187bc1);_0x33d5c4[_0xaf25('0x77')](_0xaf25('0x78'));var _0x348c66={'type':db[_0xaf25('0x79')]['QueryTypes']['SELECT'],'raw':!![]};var _0x449a3a=_0x33d5c4[_0xaf25('0x7a')]()[_0xaf25('0x44')](_0xaf25('0x78'));if(_0x542952[_0xaf25('0x40')]){_0x542952['order'][_0xaf25('0x53')](function(_0x341666){_0x33d5c4[_0xaf25('0x40')]('c.'+_0x341666[0x0],_0x341666[0x1]===_0xaf25('0x7b')?![]:!![]);});}if(!_[_0xaf25('0x63')](_0x2fe765)){_0x33d5c4[_0xaf25('0x7c')](_0x54be54);_0x449a3a['where'](_0xaf25('0x7d'),_0x2fe765);}BPromise['resolve']()['then'](function(){if(!_0x255646)return;if(_0xac5bcb[_0xaf25('0x7e')]['role']!==_0xaf25('0x7f'))return;if(!_[_0xaf25('0x80')](_0x255646[_0xaf25('0x4f')],['field',_0xaf25('0x56')])){return _0xac5bcb[_0xaf25('0x7e')][_0xaf25('0x81')]({'attributes':['id'],'raw':!![]})[_0xaf25('0x2c')](function(_0x34872c){if(_[_0xaf25('0x63')](_0x34872c)){_0x449a3a['where']('c.ListId\x20IS\x20NULL');_0x33d5c4[_0xaf25('0x42')](_0xaf25('0x82'));}else{_0x449a3a['where']('c.ListId\x20IN\x20?',_[_0xaf25('0x52')](_0x34872c,'id'));_0x33d5c4[_0xaf25('0x42')]('c.ListId\x20IN\x20?',_['map'](_0x34872c,'id'));}});}})['then'](function(){if(_0xac5bcb[_0xaf25('0x7e')][_0xaf25('0x83')]==='agent'&&!_0x255646&&!_0xac5bcb[_0xaf25('0x3b')][_0xaf25('0x64')])return[];return db['sequelize'][_0xaf25('0x3b')](_0x449a3a['toString'](),_0x348c66);})[_0xaf25('0x2c')](function(_0x2b901f){_0x45f250[_0xaf25('0x27')]=_0x2b901f[_0xaf25('0x33')];if(_0x45f250['count']===0x0)return[];return db[_0xaf25('0x84')]['query'](_0x16adb1[_0xaf25('0x85')](),_0x348c66)[_0xaf25('0x2c')](function(_0x16d5bc){_0x9639cb=_[_0xaf25('0x86')](_0x16d5bc,'id');_0x348c66=_['merge'](_0x348c66,{'model':db['CmContact'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xac5bcb[_0xaf25('0x3b')][_0xaf25('0x3e')]){_0x542952[_0xaf25('0x3d')]['forEach'](function(_0x5140a3){_0x33d5c4[_0xaf25('0x44')]('c.'+_0x5140a3);});}else{_0x33d5c4[_0xaf25('0x44')](_0xaf25('0x78'));_0x33d5c4[_0xaf25('0x44')]('c.firstName');_0x33d5c4['field'](_0xaf25('0x87'));_0x33d5c4[_0xaf25('0x44')](_0xaf25('0x88'));_0x33d5c4[_0xaf25('0x44')](_0xaf25('0x89'));_0x33d5c4[_0xaf25('0x44')](_0xaf25('0x8a'));_0x33d5c4[_0xaf25('0x44')]('c.email');_0x33d5c4[_0xaf25('0x44')]('c.ListId');_0x33d5c4[_0xaf25('0x44')](_0xaf25('0x8b'));_0x33d5c4[_0xaf25('0x44')](_0xaf25('0x8c'));_0x33d5c4['field'](_0xaf25('0x8d'));_0x33d5c4['field'](_0xaf25('0x8e'),_0xaf25('0x8f'));}if(_0x542952['limit'])_0x33d5c4['limit'](_0x542952[_0xaf25('0x25')]);if(_0x542952[_0xaf25('0x24')])_0x33d5c4[_0xaf25('0x24')](_0x542952['offset']);return db[_0xaf25('0x84')][_0xaf25('0x3b')](_0x33d5c4[_0xaf25('0x85')](),_0x348c66);});})[_0xaf25('0x2c')](function(_0x23b0e8){_0x23b0e8[_0xaf25('0x53')](function(_0x2302cf){if(_0x2302cf[_0xaf25('0x8f')]){_0x2302cf[_0xaf25('0x90')]=[];_0x2302cf[_0xaf25('0x8f')][_0xaf25('0x91')](',')['forEach'](function(_0x5d52a5){_0x2302cf[_0xaf25('0x90')][_0xaf25('0x34')](_0x9639cb[_0x5d52a5]);});}delete _0x2302cf[_0xaf25('0x8f')];});_0x45f250[_0xaf25('0x92')]=_0x23b0e8;return _0x45f250;})['then'](respondWithFilteredResult(_0x5c7d6a,_0x542952));})['catch'](handleError(_0x5c7d6a,null));};exports[_0xaf25('0x2b')]=function(_0x5bd5de,_0x5af204){return db[_0xaf25('0x30')]['find']({'where':{'id':_0x5bd5de['params']['id']}})[_0xaf25('0x2c')](handleEntityNotFound(_0x5af204,null))[_0xaf25('0x2c')](removeEntity(_0x5af204,null))[_0xaf25('0x93')](handleError(_0x5af204,null));};exports[_0xaf25('0x31')]=function(_0x1861b9,_0x26de74){return db[_0xaf25('0x30')][_0xaf25('0x31')]()['then'](function(_0x35d1fc){delete _0x35d1fc[_0xaf25('0x94')];for(var _0x32ed30=0x0;_0x32ed30<Object[_0xaf25('0x32')](_0x35d1fc)['length'];_0x32ed30++){var _0x5b4ae4=Object['keys'](_0x35d1fc)[_0x32ed30];if(!_['startsWith'](_0x5b4ae4,_0xaf25('0x37'))){_0x35d1fc[_0x5b4ae4][_0xaf25('0x95')]=_0x5b4ae4;_0x35d1fc[_0x5b4ae4][_0xaf25('0x96')]=_0x5b4ae4;}}return _0x35d1fc;})['then'](function(_0x3ba141){var _0x7376e4={'where':{'$or':[{'ListId':_0x1861b9[_0xaf25('0x3b')]['id']},{'ListId':null}]},'raw':!![]};return db[_0xaf25('0x35')][_0xaf25('0x97')](_0x7376e4)[_0xaf25('0x2c')](function(_0x2f5db9){for(var _0x3067e4=0x0;_0x3067e4<_0x2f5db9[_0xaf25('0x33')];_0x3067e4++){var _0x2f5b33=_0xaf25('0x37')+_0x2f5db9[_0x3067e4]['id'];_0x3ba141[_0x2f5b33][_0xaf25('0x95')]=_0x2f5b33;_0x3ba141[_0x2f5b33][_0xaf25('0x96')]=_0x2f5db9[_0x3067e4]['alias'];_0x3ba141[_0x2f5b33][_0xaf25('0x98')]={'type':_0x2f5db9[_0x3067e4][_0xaf25('0x39')],'values':_0x2f5db9[_0x3067e4]['values']};}Object[_0xaf25('0x32')](_0x3ba141)['forEach'](function(_0xe12355){if(!_0x3ba141[_0xe12355][_0xaf25('0x61')]('columnName')){delete _0x3ba141[_0xe12355];}});return _0x3ba141;});})[_0xaf25('0x2c')](respondWithResult(_0x26de74,null))[_0xaf25('0x93')](handleError(_0x26de74,null));};exports[_0xaf25('0x99')]=function(_0x4dabfb,_0x5aa262){var _0x14932d;var _0x5d968f;var _0x449b2b;if(_0x4dabfb[_0xaf25('0x9a')]['id']){delete _0x4dabfb[_0xaf25('0x9a')]['id'];}return db[_0xaf25('0x30')]['findAll']({'where':{'id':[_0x4dabfb[_0xaf25('0x9a')]['to'],_0x4dabfb[_0xaf25('0x9a')][_0xaf25('0x47')]]}})[_0xaf25('0x2c')](function(_0x431a01){if(_0x431a01){if(_0x431a01[_0xaf25('0x33')]!==0x2){return null;}_0x431a01[0x0]=_0x431a01[0x0]['get']({'plain':!![]});_0x431a01[0x1]=_0x431a01[0x1]['get']({'plain':!![]});delete _0x431a01[0x0]['id'];delete _0x431a01[0x1]['id'];return _['mergeWith'](_0x431a01[0x0],_0x431a01[0x1],function(_0x393980,_0x4dac14){if(Array['isArray'](_0x4dac14)&&!_0x4dac14['length']){return _0x393980;}else if(!_0x4dac14){return _0x393980;}});}})[_0xaf25('0x2c')](handleEntityNotFound(_0x5aa262,null))[_0xaf25('0x2c')](function(_0x149dec){if(_0x149dec){if(_0x149dec[_0xaf25('0x94')]&&_['isArray'](_0x149dec[_0xaf25('0x94')])){_0x149dec['tags']=_0x149dec[_0xaf25('0x94')][_0xaf25('0x9b')]();}logger[_0xaf25('0x9c')](_0xaf25('0x9d'),_0x4dabfb['body']['to'],_0x4dabfb['body'][_0xaf25('0x47')]);return db[_0xaf25('0x9e')][_0xaf25('0x2b')]({'where':{'ContactId':[_0x4dabfb[_0xaf25('0x9a')]['to'],_0x4dabfb[_0xaf25('0x9a')][_0xaf25('0x47')]]}})['then'](function(_0x15778d){logger[_0xaf25('0x9c')]('[CmContact][merge][destroy][CmHopper],\x20%s',_0x15778d);return db['CmHopperBlack'][_0xaf25('0x2b')]({'where':{'ContactId':[_0x4dabfb[_0xaf25('0x9a')]['to'],_0x4dabfb['body'][_0xaf25('0x47')]]}})[_0xaf25('0x2c')](function(_0x2d5106){logger['info'](_0xaf25('0x9f'),_0x2d5106);return db[_0xaf25('0x30')]['create'](_0x149dec);});});}})[_0xaf25('0x2c')](function(_0x11b55e){if(_0x11b55e){_0x14932d=_0x11b55e;_0x5d968f={'ContactId':_0x14932d['id']};_0x449b2b={'where':{'ContactId':[_0x4dabfb[_0xaf25('0x9a')]['to'],_0x4dabfb['body'][_0xaf25('0x47')]]}};return db[_0xaf25('0xa0')][_0xaf25('0x2a')](_0x5d968f,_0x449b2b);}})[_0xaf25('0x2c')](function(){if(_0x14932d){return db[_0xaf25('0xa1')]['update'](_0x5d968f,_0x449b2b);}})[_0xaf25('0x2c')](function(){if(_0x14932d){return db[_0xaf25('0xa2')][_0xaf25('0x2a')](_0x5d968f,_0x449b2b);}})[_0xaf25('0x2c')](function(){if(_0x14932d){return db['MailInteraction'][_0xaf25('0x2a')](_0x5d968f,_0x449b2b);}})['then'](function(){if(_0x14932d){return db[_0xaf25('0xa3')][_0xaf25('0x2a')](_0x5d968f,_0x449b2b);}})['then'](function(){if(_0x14932d){return db[_0xaf25('0xa4')][_0xaf25('0x2a')](_0x5d968f,_0x449b2b);}})[_0xaf25('0x2c')](function(){if(_0x14932d){return db[_0xaf25('0xa3')][_0xaf25('0x2a')](_0x5d968f,_0x449b2b);}})[_0xaf25('0x2c')](function(){if(_0x14932d){return db[_0xaf25('0xa5')][_0xaf25('0x2a')](_0x5d968f,_0x449b2b);}})['then'](function(){if(_0x14932d){return db[_0xaf25('0xa6')][_0xaf25('0x2a')](_0x5d968f,_0x449b2b);}})[_0xaf25('0x2c')](function(){if(_0x14932d){return db[_0xaf25('0xa7')]['update'](_0x5d968f,_0x449b2b);}})[_0xaf25('0x2c')](function(){if(_0x14932d){return db['FaxMessage'][_0xaf25('0x2a')](_0x5d968f,_0x449b2b);}})[_0xaf25('0x2c')](function(){if(_0x14932d){return db[_0xaf25('0xa8')]['update'](_0x5d968f,_0x449b2b);}})[_0xaf25('0x2c')](function(){if(_0x14932d){return db[_0xaf25('0xa9')][_0xaf25('0x2a')](_0x5d968f,_0x449b2b);}})[_0xaf25('0x2c')](function(){if(_0x14932d){return db[_0xaf25('0xaa')][_0xaf25('0x2a')](_0x5d968f,_0x449b2b);}})['then'](function(){if(_0x14932d){return db[_0xaf25('0xab')]['update'](_0x5d968f,_0x449b2b);}})[_0xaf25('0x2c')](function(){if(_0x14932d){return db[_0xaf25('0xac')]['update'](_0x5d968f,_0x449b2b);}})[_0xaf25('0x2c')](function(){if(_0x14932d){return db[_0xaf25('0xad')]['update'](_0x5d968f,_0x449b2b);}})[_0xaf25('0x2c')](function(){if(_0x14932d){return db[_0xaf25('0xae')]['update'](_0x5d968f,_0x449b2b);}})['then'](function(){if(_0x14932d){return db[_0xaf25('0xaf')]['update'](_0x5d968f,_0x449b2b);}})['then'](function(){if(_0x14932d){return db['MailQueueReport']['update'](_0x5d968f,_0x449b2b);}})['then'](function(){if(_0x14932d){return db[_0xaf25('0xb0')][_0xaf25('0x2a')](_0x5d968f,_0x449b2b);}})[_0xaf25('0x2c')](function(){if(_0x14932d){return db[_0xaf25('0xb1')]['update'](_0x5d968f,_0x449b2b);}})[_0xaf25('0x2c')](function(){if(_0x14932d){return db[_0xaf25('0xb2')][_0xaf25('0x2a')](_0x5d968f,_0x449b2b);}})['then'](function(){if(_0x14932d){return db['WhatsappInteraction'][_0xaf25('0x2a')](_0x5d968f,_0x449b2b);}})[_0xaf25('0x2c')](function(){if(_0x14932d){return db[_0xaf25('0xb3')][_0xaf25('0x2a')](_0x5d968f,_0x449b2b);}})[_0xaf25('0x2c')](function(){if(_0x14932d){return db[_0xaf25('0xb4')]['update'](_0x5d968f,_0x449b2b);}})['then'](function(){if(_0x14932d){return db[_0xaf25('0x30')][_0xaf25('0x2b')]({'where':{'id':[_0x4dabfb['body']['to'],_0x4dabfb[_0xaf25('0x9a')][_0xaf25('0x47')]]}});}})['then'](function(){if(_0x14932d){return _0x14932d;}})[_0xaf25('0x2c')](respondWithResult(_0x5aa262,null))[_0xaf25('0x93')](handleError(_0x5aa262,null));};exports['create']=function(_0x588773,_0x595038){return db[_0xaf25('0x30')][_0xaf25('0x31')]()[_0xaf25('0x2c')](function(_0x33228e){if(_0x588773['body'][_0xaf25('0x94')]&&_[_0xaf25('0x6a')](_0x588773[_0xaf25('0x9a')][_0xaf25('0x94')])){if(_0x588773['body'][_0xaf25('0x94')][_0xaf25('0x33')]){_0x588773[_0xaf25('0x9a')]['tags']=_0x588773[_0xaf25('0x9a')][_0xaf25('0x94')]['join'](';')+';';}else{_0x588773[_0xaf25('0x9a')][_0xaf25('0x94')]=null;}}else{_0x588773[_0xaf25('0x9a')][_0xaf25('0x94')]=null;}return db[_0xaf25('0x30')][_0xaf25('0xb5')](_0x588773[_0xaf25('0x9a')],{'fields':_[_0xaf25('0x32')](_0x33228e),'raw':!![]});})[_0xaf25('0x2c')](respondWithResult(_0x595038,0xc9))[_0xaf25('0x93')](handleError(_0x595038,null));};exports[_0xaf25('0xb6')]=function(_0xdf11ce,_0x384d87){var _0x1cc27b=[];var _0x223534=0x0;var _0x25e22c=0x0;var _0xf4508f=0x0;return db[_0xaf25('0x30')][_0xaf25('0x31')]()[_0xaf25('0x2c')](function(_0x30a968){return BPromise['each'](_0xdf11ce[_0xaf25('0x9a')],function(_0x5b571e){var _0x5e3eef={'where':{'$or':[]},'defaults':_0x5b571e,'fields':_[_0xaf25('0x32')](_0x30a968),'raw':!![]};if(_0x5b571e[_0xaf25('0xb7')]){for(var _0x4b1732=0x0;_0x4b1732<_0x5b571e['duplicates'][_0xaf25('0x33')];_0x4b1732++){var _0x2393d6={};_0x2393d6[_0x5b571e['duplicates'][_0x4b1732]]=_0x5b571e[_0x5b571e[_0xaf25('0xb7')][_0x4b1732]];_0x5e3eef[_0xaf25('0x42')][_0xaf25('0xb8')]['push'](_0x2393d6);}_0x5e3eef['where']['ListId']=_0x5b571e[_0xaf25('0x64')];}return db[_0xaf25('0x30')][_0xaf25('0xb9')](_0x5e3eef)['spread'](function(_0x5a584b,_0x22147f){if(_0x22147f){_0x223534++;}else{_0xf4508f++;}})[_0xaf25('0x93')](function(_0x28803e){console[_0xaf25('0xba')](_0x28803e);_0x25e22c++;});});})[_0xaf25('0x2c')](function(_0x3705f5){if(_0x3705f5){return{'success':_0x223534,'failure':_0x25e22c,'duplicates':_0xf4508f};}})[_0xaf25('0x2c')](respondWithResult(_0x384d87,0xc9))['catch'](handleError(_0x384d87,null));};exports['show']=function(_0x3cc301,_0x53147a,_0x223c59){var _0x54c981;return db[_0xaf25('0x30')]['describe']()[_0xaf25('0x2c')](function(_0x2fd759){return db[_0xaf25('0x30')][_0xaf25('0x50')]({'where':{'id':_0x3cc301['params']['id']},'include':[{'model':db['Tag'],'as':_0xaf25('0x90'),'attributes':['id',_0xaf25('0x2e'),_0xaf25('0xbb')],'required':_0x3cc301['query']['tag']?!![]:![]}],'attributes':_[_0xaf25('0x32')](_0x2fd759)});})[_0xaf25('0x2c')](function(_0x34d5c4){_0x54c981=_0x34d5c4[_0xaf25('0xbc')]({'plain':!![]});var _0x5e7696={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x34d5c4&&_0x34d5c4[_0xaf25('0x64')]){if(_0x34d5c4[_0xaf25('0x64')]){_0x5e7696[_0xaf25('0x42')][_0xaf25('0xbd')][_0xaf25('0x34')]({'ListId':{'$ne':_0x34d5c4[_0xaf25('0x64')]}});}}return db[_0xaf25('0x35')][_0xaf25('0x97')](_0x5e7696);})[_0xaf25('0x2c')](function(_0x2e7727){return _[_0xaf25('0xbe')](_0x54c981,_[_0xaf25('0x52')](_0x2e7727,function(_0x171b84){return util[_0xaf25('0xbf')](_0xaf25('0xc0'),_0x171b84['id']);}));})['then'](handleEntityNotFound(_0x53147a,null))[_0xaf25('0x2c')](respondWithResult(_0x53147a,null))[_0xaf25('0x93')](handleError(_0x53147a,null));};exports[_0xaf25('0x2a')]=function(_0x4be222,_0x5dd628){var _0x56e3e2;if(_0x4be222[_0xaf25('0x9a')]['id']){delete _0x4be222[_0xaf25('0x9a')]['id'];}return db['CmContact'][_0xaf25('0x50')]({'where':{'id':_0x4be222['params']['id']}})[_0xaf25('0x2c')](handleEntityNotFound(_0x5dd628,null))['then'](saveUpdates(_0x4be222['body'],null))[_0xaf25('0x2c')](function(_0xe4455){_0x56e3e2=_0xe4455;var _0x3fb665={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xe4455&&_0xe4455[_0xaf25('0x64')]){if(_0xe4455[_0xaf25('0x64')]){_0x3fb665[_0xaf25('0x42')][_0xaf25('0xbd')]['push']({'ListId':{'$ne':_0xe4455[_0xaf25('0x64')]}});}}return db[_0xaf25('0x35')][_0xaf25('0x97')](_0x3fb665);})[_0xaf25('0x2c')](function(_0x1510a6){if(_0x1510a6){return _[_0xaf25('0xbe')](_['pickBy'](_0x4be222[_0xaf25('0x9a')],function(_0x32191c,_0x13b849){return _[_0xaf25('0xc1')](_0x13b849,_0xaf25('0x37'));}),_[_0xaf25('0x52')](_0x1510a6,function(_0x5cb9cd){return util[_0xaf25('0xbf')](_0xaf25('0xc0'),_0x5cb9cd['id']);}));}})[_0xaf25('0x2c')](function(_0x25f88c){if(_0x25f88c&&!_[_0xaf25('0x63')](_0x25f88c)){var _0x539faf=squel['update']()[_0xaf25('0xc2')](_0xaf25('0x48'))[_0xaf25('0xc3')](_0x25f88c)[_0xaf25('0x42')](_0xaf25('0xc4'),_0x4be222[_0xaf25('0xc5')]['id'])[_0xaf25('0xc6')]();return db[_0xaf25('0x84')][_0xaf25('0x3b')](_0x539faf[_0xaf25('0x5f')],{'replacements':_0x539faf[_0xaf25('0xc7')]});}})[_0xaf25('0x2c')](function(){if(_0x4be222[_0xaf25('0x9a')][_0xaf25('0xc8')]&&_0x56e3e2){return db[_0xaf25('0x9e')][_0xaf25('0x2a')]({'phone':_0x4be222[_0xaf25('0x9a')][_0xaf25('0xc8')]},{'where':{'ContactId':_0x56e3e2['id']}});}})[_0xaf25('0x2c')](function(){return _0x56e3e2;})['then'](respondWithResult(_0x5dd628,null))[_0xaf25('0x93')](handleError(_0x5dd628,null));};exports[_0xaf25('0xc9')]=function(_0x3dedb0,_0x2126a2,_0x5df458){var _0x166fb7={};var _0x25f601={};var _0x261b18;var _0x5d4283;return db[_0xaf25('0x30')]['findOne']({'where':{'id':_0x3dedb0[_0xaf25('0xc5')]['id']}})['then'](handleEntityNotFound(_0x2126a2,null))['then'](function(_0x50b015){if(_0x50b015){_0x261b18=_0x50b015;_0x25f601['model']=_[_0xaf25('0x32')](db[_0xaf25('0x51')][_0xaf25('0xca')]);_0x25f601[_0xaf25('0x3b')]=_[_0xaf25('0x32')](_0x3dedb0[_0xaf25('0x3b')]);_0x25f601[_0xaf25('0x43')]=_[_0xaf25('0x3c')](_0x25f601[_0xaf25('0x3a')],_0x25f601[_0xaf25('0x3b')]);_0x166fb7[_0xaf25('0x3d')]=_[_0xaf25('0x3c')](_0x25f601[_0xaf25('0x3a')],qs[_0xaf25('0x3e')](_0x3dedb0[_0xaf25('0x3b')]['fields']));_0x166fb7['attributes']=_0x166fb7[_0xaf25('0x3d')][_0xaf25('0x33')]?_0x166fb7[_0xaf25('0x3d')]:_0x25f601[_0xaf25('0x3a')];_0x166fb7[_0xaf25('0x40')]=qs[_0xaf25('0x41')](_0x3dedb0['query'][_0xaf25('0x41')]);_0x166fb7[_0xaf25('0x42')]=qs[_0xaf25('0x43')](_[_0xaf25('0xcb')](_0x3dedb0[_0xaf25('0x3b')],_0x25f601[_0xaf25('0x43')]));if(_0x3dedb0[_0xaf25('0x3b')][_0xaf25('0xcc')]){_0x166fb7[_0xaf25('0x42')]=_[_0xaf25('0x99')](_0x166fb7[_0xaf25('0x42')],{'$or':_['map'](_0x166fb7[_0xaf25('0x3d')],function(_0x40dccd){var _0x21e5c6={};_0x21e5c6[_0x40dccd]={'$like':'%'+_0x3dedb0['query']['filter']+'%'};return _0x21e5c6;})});}_0x166fb7=_[_0xaf25('0x99')]({},_0x166fb7,_0x3dedb0[_0xaf25('0xcd')]);return _0x261b18[_0xaf25('0xc9')](_0x166fb7);}})[_0xaf25('0x2c')](function(_0x596c84){if(_0x596c84){_0x5d4283=_0x596c84[_0xaf25('0x33')];if(!_0x3dedb0[_0xaf25('0x3b')][_0xaf25('0x61')](_0xaf25('0x3f'))){_0x166fb7[_0xaf25('0x25')]=qs[_0xaf25('0x25')](_0x3dedb0[_0xaf25('0x3b')][_0xaf25('0x25')]);_0x166fb7[_0xaf25('0x24')]=qs[_0xaf25('0x24')](_0x3dedb0[_0xaf25('0x3b')][_0xaf25('0x24')]);}return _0x261b18[_0xaf25('0xc9')](_0x166fb7);}})[_0xaf25('0x2c')](function(_0x5297fe){if(_0x5297fe){return _0x5297fe?{'count':_0x5d4283,'rows':_0x5297fe}:null;}})[_0xaf25('0x2c')](respondWithResult(_0x2126a2,null))['catch'](handleError(_0x2126a2,null));};exports[_0xaf25('0xce')]=function(_0x3214c8,_0x3bef6c,_0x1b2844){if(_0x3214c8['body']['id']){delete _0x3214c8[_0xaf25('0x9a')]['id'];}return db[_0xaf25('0x30')][_0xaf25('0xcf')]({'where':{'id':_0x3214c8[_0xaf25('0xc5')]['id']}})['then'](handleEntityNotFound(_0x3bef6c,null))[_0xaf25('0x2c')](function(_0x660003){if(_0x660003){return _0x660003[_0xaf25('0xce')](_0x3214c8[_0xaf25('0x9a')][_0xaf25('0xd0')]||[]);}return null;})[_0xaf25('0x2c')](respondWithResult(_0x3bef6c,null))[_0xaf25('0x93')](handleError(_0x3bef6c,null));};exports[_0xaf25('0xd1')]=function(_0xa6849a,_0x512455,_0x56d462){var _0x3ce52e={'raw':![],'where':{}};var _0x1d6773={};var _0x97f19d={'count':0x0,'rows':[]};return db[_0xaf25('0x30')][_0xaf25('0xcf')]({'where':{'id':_0xa6849a[_0xaf25('0xc5')]['id']}})[_0xaf25('0x2c')](handleEntityNotFound(_0x512455,null))[_0xaf25('0x2c')](function(_0x43bb62){if(_0x43bb62){_0x1d6773['model']=_['keys'](db['CmHopper'][_0xaf25('0xca')]);_0x1d6773[_0xaf25('0x3b')]=_[_0xaf25('0x32')](_0xa6849a[_0xaf25('0x3b')]);_0x1d6773['filters']=_[_0xaf25('0x3c')](_0x1d6773[_0xaf25('0x3a')],_0x1d6773[_0xaf25('0x3b')]);_0x3ce52e['attributes']=_[_0xaf25('0x3c')](_0x1d6773[_0xaf25('0x3a')],qs[_0xaf25('0x3e')](_0xa6849a[_0xaf25('0x3b')][_0xaf25('0x3e')]));_0x3ce52e['attributes']=_0x3ce52e[_0xaf25('0x3d')][_0xaf25('0x33')]?_0x3ce52e[_0xaf25('0x3d')]:_0x1d6773[_0xaf25('0x3a')];if(!_0xa6849a['query'][_0xaf25('0x61')]('nolimit')){_0x3ce52e[_0xaf25('0x25')]=qs['limit'](_0xa6849a['query'][_0xaf25('0x25')]);_0x3ce52e[_0xaf25('0x24')]=qs['offset'](_0xa6849a[_0xaf25('0x3b')][_0xaf25('0x24')]);}_0x3ce52e[_0xaf25('0x40')]=qs[_0xaf25('0x41')](_0xa6849a['query'][_0xaf25('0x41')]);_0x3ce52e[_0xaf25('0x42')]=qs[_0xaf25('0x43')](_[_0xaf25('0xcb')](_0xa6849a[_0xaf25('0x3b')],_0x1d6773[_0xaf25('0x43')]));_0x3ce52e['where'][_0xaf25('0xd2')]=_0x43bb62['id'];if(_0xa6849a['query'][_0xaf25('0xcc')]){_0x3ce52e[_0xaf25('0x42')]=_[_0xaf25('0x99')](_0x3ce52e[_0xaf25('0x42')],{'$or':_[_0xaf25('0x52')](_0x3ce52e[_0xaf25('0x3d')],function(_0x37e9ea){var _0x30f6a6={};_0x30f6a6[_0x37e9ea]={'$like':'%'+_0xa6849a['query'][_0xaf25('0xcc')]+'%'};return _0x30f6a6;})});}_0x3ce52e=_[_0xaf25('0x99')]({},_0x3ce52e,_0xa6849a[_0xaf25('0xcd')]);return db[_0xaf25('0x9e')][_0xaf25('0x27')]({'where':_0x3ce52e[_0xaf25('0x42')]})[_0xaf25('0x2c')](function(_0x50cbda){_0x97f19d['count']=_0x50cbda;if(_0xa6849a[_0xaf25('0x3b')]['includeAll']){_0x3ce52e[_0xaf25('0xd3')]=[{'all':!![]}];}return db[_0xaf25('0x9e')][_0xaf25('0x97')](_0x3ce52e);})['then'](function(_0x1fc764){_0x97f19d[_0xaf25('0x92')]=_0x1fc764;return _0x97f19d;});}})['then'](respondWithFilteredResult(_0x512455,_0x3ce52e))[_0xaf25('0x93')](handleError(_0x512455,null));};exports[_0xaf25('0xd4')]=function(_0x75d4b,_0x2085b9,_0x414e66){var _0x5d686f={'raw':!![],'where':{}};var _0x4359db={};var _0x55f7d3={'count':0x0,'rows':[]};return db['CmContact'][_0xaf25('0xcf')]({'where':{'id':_0x75d4b['params']['id']}})['then'](handleEntityNotFound(_0x2085b9,null))[_0xaf25('0x2c')](function(_0x4740c5){if(_0x4740c5){_0x4359db['model']=_[_0xaf25('0x32')](db[_0xaf25('0xab')]['rawAttributes']);_0x4359db['query']=_[_0xaf25('0x32')](_0x75d4b[_0xaf25('0x3b')]);_0x4359db[_0xaf25('0x43')]=_[_0xaf25('0x3c')](_0x4359db[_0xaf25('0x3a')],_0x4359db[_0xaf25('0x3b')]);_0x5d686f['attributes']=_['intersection'](_0x4359db[_0xaf25('0x3a')],qs[_0xaf25('0x3e')](_0x75d4b[_0xaf25('0x3b')][_0xaf25('0x3e')]));_0x5d686f[_0xaf25('0x3d')]=_0x5d686f['attributes'][_0xaf25('0x33')]?_0x5d686f[_0xaf25('0x3d')]:_0x4359db[_0xaf25('0x3a')];if(!_0x75d4b['query'][_0xaf25('0x61')](_0xaf25('0x3f'))){_0x5d686f['limit']=qs[_0xaf25('0x25')](_0x75d4b['query']['limit']);_0x5d686f['offset']=qs[_0xaf25('0x24')](_0x75d4b[_0xaf25('0x3b')]['offset']);}_0x5d686f[_0xaf25('0x40')]=qs[_0xaf25('0x41')](_0x75d4b['query']['sort']);_0x5d686f[_0xaf25('0x42')]=qs['filters'](_['pick'](_0x75d4b[_0xaf25('0x3b')],_0x4359db[_0xaf25('0x43')]));_0x5d686f[_0xaf25('0x42')]['ContactId']=_0x4740c5['id'];if(_0x75d4b[_0xaf25('0x3b')][_0xaf25('0xcc')]){_0x5d686f[_0xaf25('0x42')]=_[_0xaf25('0x99')](_0x5d686f[_0xaf25('0x42')],{'$or':_[_0xaf25('0x52')](_0x5d686f[_0xaf25('0x3d')],function(_0x3c16d0){var _0x329491={};_0x329491[_0x3c16d0]={'$like':'%'+_0x75d4b['query'][_0xaf25('0xcc')]+'%'};return _0x329491;})});}_0x5d686f=_[_0xaf25('0x99')]({},_0x5d686f,_0x75d4b[_0xaf25('0xcd')]);return db[_0xaf25('0xab')][_0xaf25('0x27')]({'where':_0x5d686f[_0xaf25('0x42')]})[_0xaf25('0x2c')](function(_0x51fb26){_0x55f7d3[_0xaf25('0x27')]=_0x51fb26;if(_0x75d4b[_0xaf25('0x3b')][_0xaf25('0xd5')]){_0x5d686f[_0xaf25('0xd3')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x5d686f);})[_0xaf25('0x2c')](function(_0x1645bc){_0x55f7d3[_0xaf25('0x92')]=_0x1645bc;return _0x55f7d3;});}})[_0xaf25('0x2c')](respondWithFilteredResult(_0x2085b9,_0x5d686f))[_0xaf25('0x93')](handleError(_0x2085b9,null));};exports[_0xaf25('0xd6')]=function(_0x3634c2,_0x43a1b0,_0x590bee){var _0x5198ae={'raw':!![],'where':{}};var _0x37fbd5={};var _0x2b90b1={'count':0x0,'rows':[]};return db[_0xaf25('0x30')][_0xaf25('0xcf')]({'where':{'id':_0x3634c2[_0xaf25('0xc5')]['id']}})['then'](handleEntityNotFound(_0x43a1b0,null))['then'](function(_0x306ba3){if(_0x306ba3){_0x37fbd5[_0xaf25('0x3a')]=_[_0xaf25('0x32')](db[_0xaf25('0xaa')]['rawAttributes']);_0x37fbd5[_0xaf25('0x3b')]=_['keys'](_0x3634c2['query']);_0x37fbd5['filters']=_['intersection'](_0x37fbd5['model'],_0x37fbd5[_0xaf25('0x3b')]);_0x5198ae['attributes']=_['intersection'](_0x37fbd5[_0xaf25('0x3a')],qs[_0xaf25('0x3e')](_0x3634c2[_0xaf25('0x3b')][_0xaf25('0x3e')]));_0x5198ae[_0xaf25('0x3d')]=_0x5198ae[_0xaf25('0x3d')][_0xaf25('0x33')]?_0x5198ae[_0xaf25('0x3d')]:_0x37fbd5[_0xaf25('0x3a')];if(!_0x3634c2[_0xaf25('0x3b')][_0xaf25('0x61')]('nolimit')){_0x5198ae[_0xaf25('0x25')]=qs['limit'](_0x3634c2['query'][_0xaf25('0x25')]);_0x5198ae[_0xaf25('0x24')]=qs['offset'](_0x3634c2[_0xaf25('0x3b')][_0xaf25('0x24')]);}_0x5198ae[_0xaf25('0x40')]=qs[_0xaf25('0x41')](_0x3634c2[_0xaf25('0x3b')]['sort']);_0x5198ae[_0xaf25('0x42')]=qs[_0xaf25('0x43')](_[_0xaf25('0xcb')](_0x3634c2['query'],_0x37fbd5[_0xaf25('0x43')]));_0x5198ae[_0xaf25('0x42')][_0xaf25('0xd2')]=_0x306ba3['id'];if(_0x3634c2['query'][_0xaf25('0xcc')]){_0x5198ae[_0xaf25('0x42')]=_[_0xaf25('0x99')](_0x5198ae[_0xaf25('0x42')],{'$or':_['map'](_0x5198ae[_0xaf25('0x3d')],function(_0x2077c1){var _0x4b141c={};_0x4b141c[_0x2077c1]={'$like':'%'+_0x3634c2[_0xaf25('0x3b')][_0xaf25('0xcc')]+'%'};return _0x4b141c;})});}_0x5198ae=_[_0xaf25('0x99')]({},_0x5198ae,_0x3634c2[_0xaf25('0xcd')]);return db[_0xaf25('0xaa')]['count']({'where':_0x5198ae[_0xaf25('0x42')]})[_0xaf25('0x2c')](function(_0x1a7ce6){_0x2b90b1[_0xaf25('0x27')]=_0x1a7ce6;if(_0x3634c2[_0xaf25('0x3b')][_0xaf25('0xd5')]){_0x5198ae[_0xaf25('0xd3')]=[{'all':!![]}];}return db[_0xaf25('0xaa')][_0xaf25('0x97')](_0x5198ae);})[_0xaf25('0x2c')](function(_0x211346){_0x2b90b1[_0xaf25('0x92')]=_0x211346;return _0x2b90b1;});}})[_0xaf25('0x2c')](respondWithFilteredResult(_0x43a1b0,_0x5198ae))[_0xaf25('0x93')](handleError(_0x43a1b0,null));};exports[_0xaf25('0xd7')]=function(_0xbca529,_0x3efe4a,_0x310080){var _0x3b0e8b={'raw':!![],'where':{}};var _0x1e028d={};var _0x3da090={'count':0x0,'rows':[]};return db[_0xaf25('0x30')]['findOne']({'where':{'id':_0xbca529[_0xaf25('0xc5')]['id']}})['then'](handleEntityNotFound(_0x3efe4a,null))[_0xaf25('0x2c')](function(_0x302848){if(_0x302848){_0x1e028d[_0xaf25('0x3a')]=_[_0xaf25('0x32')](db['JscriptySessionReport'][_0xaf25('0xca')]);_0x1e028d['query']=_[_0xaf25('0x32')](_0xbca529[_0xaf25('0x3b')]);_0x1e028d['filters']=_[_0xaf25('0x3c')](_0x1e028d['model'],_0x1e028d['query']);_0x3b0e8b[_0xaf25('0x3d')]=_[_0xaf25('0x3c')](_0x1e028d[_0xaf25('0x3a')],qs[_0xaf25('0x3e')](_0xbca529['query'][_0xaf25('0x3e')]));_0x3b0e8b[_0xaf25('0x3d')]=_0x3b0e8b['attributes']['length']?_0x3b0e8b[_0xaf25('0x3d')]:_0x1e028d[_0xaf25('0x3a')];if(!_0xbca529[_0xaf25('0x3b')][_0xaf25('0x61')](_0xaf25('0x3f'))){_0x3b0e8b['limit']=qs['limit'](_0xbca529[_0xaf25('0x3b')][_0xaf25('0x25')]);_0x3b0e8b[_0xaf25('0x24')]=qs[_0xaf25('0x24')](_0xbca529[_0xaf25('0x3b')][_0xaf25('0x24')]);}_0x3b0e8b[_0xaf25('0x40')]=qs[_0xaf25('0x41')](_0xbca529[_0xaf25('0x3b')]['sort']);_0x3b0e8b[_0xaf25('0x42')]=qs[_0xaf25('0x43')](_['pick'](_0xbca529[_0xaf25('0x3b')],_0x1e028d['filters']));_0x3b0e8b[_0xaf25('0x42')][_0xaf25('0xd2')]=_0x302848['id'];if(_0xbca529[_0xaf25('0x3b')]['filter']){_0x3b0e8b[_0xaf25('0x42')]=_[_0xaf25('0x99')](_0x3b0e8b[_0xaf25('0x42')],{'$or':_['map'](_0x3b0e8b[_0xaf25('0x3d')],function(_0x3817d1){var _0x3ee95a={};_0x3ee95a[_0x3817d1]={'$like':'%'+_0xbca529['query'][_0xaf25('0xcc')]+'%'};return _0x3ee95a;})});}_0x3b0e8b=_[_0xaf25('0x99')]({},_0x3b0e8b,_0xbca529[_0xaf25('0xcd')]);return db[_0xaf25('0xb2')][_0xaf25('0x27')]({'where':_0x3b0e8b['where']})[_0xaf25('0x2c')](function(_0x44da7d){_0x3da090[_0xaf25('0x27')]=_0x44da7d;if(_0xbca529[_0xaf25('0x3b')]['includeAll']){_0x3b0e8b[_0xaf25('0xd3')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0xaf25('0x97')](_0x3b0e8b);})[_0xaf25('0x2c')](function(_0x2a80fa){_0x3da090[_0xaf25('0x92')]=_0x2a80fa;return _0x3da090;});}})[_0xaf25('0x2c')](respondWithFilteredResult(_0x3efe4a,_0x3b0e8b))[_0xaf25('0x93')](handleError(_0x3efe4a,null));};exports[_0xaf25('0xd8')]=function(_0x33d2f5,_0x4110f7,_0x1abf13){try{if(!_0x33d2f5['body'][_0xaf25('0x64')]){throw new Error(_0xaf25('0xd9'));}if(!_0x33d2f5['body']['binding_keys']){throw new Error(_0xaf25('0xda'));}if(!_0x33d2f5['body'][_0xaf25('0xdb')]){throw new Error(_0xaf25('0xdc'));}if(!_0x33d2f5[_0xaf25('0x9a')][_0xaf25('0xdd')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x28e07e=_0x33d2f5[_0xaf25('0x9a')][_0xaf25('0xde')]['split'](',');var _0x1ce753=_0x33d2f5[_0xaf25('0x9a')][_0xaf25('0xdb')][_0xaf25('0x91')](',');if(!_0x28e07e[_0xaf25('0x33')]||!_0x1ce753[_0xaf25('0x33')]||_0x28e07e[_0xaf25('0x33')]!==_0x1ce753[_0xaf25('0x33')]){throw new Error(_0xaf25('0xdf'));}_0x33d2f5['body'][_0xaf25('0x3e')]=_[_0xaf25('0xe0')](_0x28e07e,_0x1ce753);if(!_0x33d2f5[_0xaf25('0x9a')]['fields'][_0xaf25('0xc8')]){throw new Error(_0xaf25('0xe1'));}if(!_0x33d2f5[_0xaf25('0x9a')][_0xaf25('0x3e')][_0xaf25('0xe2')]){throw new Error(_0xaf25('0xe3'));}var _0x2bb978=path[_0xaf25('0x9b')](config[_0xaf25('0xe4')],_0xaf25('0xe5'),_0x33d2f5[_0xaf25('0xe6')][_0xaf25('0xe7')]);fs['chmodSync'](_0x2bb978,parseInt(_0xaf25('0xe8'),0x8));var _0x112a53=require(_0xaf25('0xe9'))[_0xaf25('0xea')](path['join'](__dirname,_0xaf25('0xeb')),[_0x2bb978,_0x33d2f5[_0xaf25('0x9a')]['binding_keys'],_0x33d2f5[_0xaf25('0x9a')]['binding_values'],_0x33d2f5[_0xaf25('0x9a')]['ListId'],_0x33d2f5[_0xaf25('0x9a')]['CompanyId'],_0x33d2f5[_0xaf25('0x9a')]['duplicates'],_0x33d2f5[_0xaf25('0x9a')][_0xaf25('0xdd')]]);return _0x4110f7[_0xaf25('0x21')](0xc8)[_0xaf25('0x23')]({'message':_0xaf25('0xec'),'pid':_0x112a53[_0xaf25('0xed')]});}catch(_0x1122da){return _0x4110f7[_0xaf25('0x21')](0x1f4)[_0xaf25('0xee')](_0x1122da);}};exports[_0xaf25('0xef')]=function(_0x313c9d,_0x31caf4,_0xeafed0){var _0x4b42c2=fs[_0xaf25('0xf0')](_0x313c9d[_0xaf25('0xe6')][_0xaf25('0xf1')]);Papa[_0xaf25('0xf2')](_0x4b42c2,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x2cbb02){return _0x31caf4['status'](0xc8)['json']({'file':_0x313c9d[_0xaf25('0xe6')],'fields':_0x2cbb02[_0xaf25('0xf3')][_0xaf25('0x3e')]});}});};exports[_0xaf25('0xf4')]=function(_0x233986,_0x8b80a7,_0x237ce6){return db[_0xaf25('0x56')][_0xaf25('0x97')]({'raw':!![],'attributes':['id'],'where':{'role':_0xaf25('0x7f')}})['then'](function(_0x30a9dd){var _0x4f3b7e=![];if(!_0x233986['body']['ListId']){throw new Error(_0xaf25('0xd9'));}if(!_0x233986[_0xaf25('0x9a')][_0xaf25('0xf5')][_0xaf25('0xc8')]){throw new Error(_0xaf25('0xe1'));}if(!_0x233986[_0xaf25('0x9a')][_0xaf25('0xf5')]['firstName']){throw new Error(_0xaf25('0xe3'));}if(!_0x233986[_0xaf25('0x9a')]['socket_timestamp']){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x254597=require(_0xaf25('0xe9'))['fork'](path[_0xaf25('0x9b')](__dirname,_0xaf25('0xf6')),[_0x233986['params']['id'],JSON[_0xaf25('0xf7')](_0x233986[_0xaf25('0x9a')]),JSON[_0xaf25('0xf7')](_0x30a9dd)]);_0x254597['on'](_0xaf25('0xf8'),function(_0x4e345a){_0x4f3b7e=!![];return _0x8b80a7[_0xaf25('0x21')](0xc8)['json']({'message':_0xaf25('0xf9'),'pid':_0x254597['pid']});});_0x254597['on'](_0xaf25('0xfa'),function(_0x2bd3f4){if(_0x2bd3f4&&!_0x4f3b7e){return _0x8b80a7['status'](0x1f4)[_0xaf25('0x23')]({'message':_0xaf25('0xfb'),'pid':_0x254597[_0xaf25('0xed')]});}});})['catch'](handleError(_0x8b80a7,null));};exports[_0xaf25('0xfc')]=function(_0x446d55,_0x48d195){var _0x36daac=[_0xaf25('0xfd'),_0xaf25('0xfe'),_0xaf25('0xff'),_0xaf25('0x100'),_0xaf25('0x101'),'whatsapp',_0xaf25('0x102')];var _0x516f09={'offset':0x0,'order':qs['sort'](_0xaf25('0x103'))},_0x3db6ce={'count':0x0,'rows':[]};Promise[_0xaf25('0x104')]()['then'](function(){if(_0x446d55[_0xaf25('0x3b')][_0xaf25('0x105')]){if(!_['includes'](_0x36daac,_0x446d55[_0xaf25('0x3b')][_0xaf25('0x105')][_0xaf25('0x106')]())){throw new Error(_0xaf25('0x107'));}_0x36daac=[_0x446d55['query'][_0xaf25('0x105')]['toLowerCase']()];}if(_0x446d55['query'][_0xaf25('0x108')]){try{var _0x3979e3=JSON[_0xaf25('0xf2')](_0x446d55[_0xaf25('0x3b')]['range']);if(!moment(_0x3979e3[_0xaf25('0x47')])['isValid']()){throw new Error(_0xaf25('0x109'));}if(!moment(_0x3979e3['to'])[_0xaf25('0x10a')]()){throw new Error(_0xaf25('0x10b'));}}catch(_0x328200){throw new Error(_0xaf25('0x10c'));}}if(!_0x446d55['query'][_0xaf25('0x61')](_0xaf25('0x3f'))){_0x516f09[_0xaf25('0x25')]=qs[_0xaf25('0x25')](_0x446d55[_0xaf25('0x3b')][_0xaf25('0x25')]||0xa);_0x516f09[_0xaf25('0x24')]=qs['offset'](_0x446d55[_0xaf25('0x3b')][_0xaf25('0x24')]);}var _0x51d693=_0x36daac[_0xaf25('0x52')](function(_0x2be9f4){if(_0x2be9f4===_0xaf25('0x102')){var _0x31d6ee={'attributes':['id',_0xaf25('0x10d'),_0xaf25('0x39'),_0xaf25('0x10e'),_0xaf25('0x10f'),'callerid',_0xaf25('0x110'),_0xaf25('0x111'),_0xaf25('0x112'),_0xaf25('0x113'),_0xaf25('0x114'),'userDisposition','userSecondDisposition','userThirdDisposition','UserId'],'where':{'ContactId':_0x446d55[_0xaf25('0xc5')]['id']},'include':[{'model':db['User'],'as':_0xaf25('0x56'),'attributes':['id',_0xaf25('0x2e'),'fullname',_0xaf25('0x115')]}],'order':[[_0xaf25('0x114'),_0xaf25('0x7b')]]};if(_0x446d55[_0xaf25('0x3b')][_0xaf25('0x108')]){_0x31d6ee[_0xaf25('0x42')][_0xaf25('0x114')]={'$gte':_0x3979e3[_0xaf25('0x47')],'$lte':_0x3979e3['to']};}return db[_0xaf25('0xad')][_0xaf25('0x116')](_0x31d6ee)[_0xaf25('0x2c')](function(_0x309684){_0x3db6ce[_0xaf25('0x27')]+=_0x309684[_0xaf25('0x27')];return _[_0xaf25('0x52')](_0x309684[_0xaf25('0x92')],function(_0x1339ee){var _0xd7e3ac=_0x1339ee[_0xaf25('0xbc')]({'plain':!![]});_0xd7e3ac[_0xaf25('0x105')]=_0x2be9f4;if(_0xd7e3ac[_0xaf25('0x56')]){_0xd7e3ac['User']={'id':_0xd7e3ac['User']['id'],'name':_0xd7e3ac[_0xaf25('0x56')][_0xaf25('0x2e')],'fullname':_0xd7e3ac['User'][_0xaf25('0x117')],'alias':_0xd7e3ac[_0xaf25('0x56')][_0xaf25('0x115')]};}return _0xd7e3ac;});});}else{var _0x4915bd=_[_0xaf25('0x118')](_0x2be9f4)+(_0x2be9f4==='chat'?_0xaf25('0x119'):_0xaf25('0x11a'));var _0x28a3c1={'attributes':['id',_0xaf25('0x11b'),_0xaf25('0x11c'),_0xaf25('0x114'),_0xaf25('0x113'),_0xaf25('0x11d'),_0xaf25('0x11e'),_0xaf25('0x11f'),_0xaf25('0x120'),_0x4915bd+'Id'],'where':{'ContactId':_0x446d55['params']['id']},'include':[{'model':db[_0x4915bd],'as':_0xaf25('0x11a'),'attributes':['id',_0xaf25('0x2e'),_0xaf25('0x121')]},{'model':db['User'],'as':_0xaf25('0x122'),'attributes':['id',_0xaf25('0x2e'),_0xaf25('0x117')]},{'model':db[_0xaf25('0x51')],'as':'Tags','attributes':['id',_0xaf25('0x2e'),_0xaf25('0xbb')],'through':{'attributes':[]}}],'order':[['createdAt',_0xaf25('0x7b')]]};if(_0x446d55[_0xaf25('0x3b')]['range']){_0x28a3c1[_0xaf25('0x42')][_0xaf25('0x114')]={'$gte':_0x3979e3[_0xaf25('0x47')],'$lte':_0x3979e3['to']};}switch(_0x2be9f4){case'chat':_0x28a3c1['attributes']['push'](_0xaf25('0x123'),_0xaf25('0x124'),'customerPort',_0xaf25('0x125'),'osName',_0xaf25('0x126'),_0xaf25('0x127'),_0xaf25('0x128'),_0xaf25('0x129'));break;case'mail':_0x28a3c1[_0xaf25('0x3d')][_0xaf25('0x34')](_0xaf25('0x12a'),_0xaf25('0x12b'));break;case _0xaf25('0x100'):_0x28a3c1[_0xaf25('0x3d')][_0xaf25('0x34')](_0xaf25('0x12c'),'threadId');break;}return db[_[_0xaf25('0x118')](_0x2be9f4)+_0xaf25('0x12d')][_0xaf25('0x116')](_0x28a3c1)[_0xaf25('0x2c')](function(_0x31c184){_0x3db6ce[_0xaf25('0x27')]+=_0x31c184[_0xaf25('0x27')];return _[_0xaf25('0x52')](_0x31c184[_0xaf25('0x92')],function(_0x30af9d){var _0x2e933f=_0x30af9d[_0xaf25('0xbc')]({'plain':!![]});_0x2e933f[_0xaf25('0x105')]=_0x2be9f4;if(_0x2e933f[_0xaf25('0x122')]){_0x2e933f[_0xaf25('0x122')]={'id':_0x2e933f[_0xaf25('0x122')]['id'],'name':_0x2e933f['Owner']['name'],'fullname':_0x2e933f[_0xaf25('0x122')][_0xaf25('0x117')]};}return _0x2e933f;});});}});return Promise[_0xaf25('0x36')](_0x51d693);})[_0xaf25('0x2c')](function(_0x39a92c){return _(_0x39a92c)['flatten']()['sortBy']('createdAt')[_0xaf25('0x12e')]()[_0xaf25('0x59')]();})['then'](function(_0x35681a){_0x3db6ce[_0xaf25('0x92')]=_0x516f09[_0xaf25('0x25')]?_0x35681a[_0xaf25('0x12f')](_0x516f09[_0xaf25('0x24')],_0x516f09[_0xaf25('0x24')]+_0x516f09['limit']):_0x35681a;return _0x3db6ce;})[_0xaf25('0x2c')](respondWithFilteredResult(_0x48d195,_0x516f09))[_0xaf25('0x93')](handleError(_0x48d195,null));};
\ No newline at end of file
+var _0x585a=['info','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','update','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperHistory','VoiceCallReport','ChatQueueReport','FaxQueueReport','MailQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','bulkCreate','each','duplicates','findOrCreate','spread','show','find','$and','format','cf_%d','omit','pickBy','setFields','toParam','text','phone','getTags','rawAttributes','options','setTags','ids','getHoppers','ContactId','include','includeAll','getHopperFinals','CmHopperFinal','getJscriptySessions','uploadCsv','No\x20ListId\x20specified','binding_keys','binding_values','No\x20association\x20values\x20specified!','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','root','server/files/tmp','file','filename','chmodSync','child_process','CompanyId','socket_timestamp','File\x20uploaded\x20correctly!','pid','send','upload','createReadStream','path','parse','meta','import','fork','../../components/import/cm/csv2','stringify','message','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','getJourney','mail','chat','sms','openchannel','-createdAt','channel','toLowerCase','Invalid\x20channel','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','uniqueid','destination','callerid','duration','note','createdAt','userDisposition','userThirdDisposition','fullname','alias','startCase','Website','Account','closed','disposition','secondDisposition','key','browserName','customerIp','deviceModel','ratingMessage','ratingValue','referer','subject','substatus','externalUrl','threadId','Interaction','findAndCountAll','Owner','reverse','slice','moment','bluebird','lodash','squel','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./cmContact.socket','register','status','json','undefined','limit','count','offset','Content-Range','then','destroy','end','stack','name','index','CmContact','describe','length','keys','cf_','push','CmCustomField','findOne','all','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','field','color','from','tools_tags','select','left_join','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','t.id\x20=\x20ct.TagId','c.deletedAt\x20IS\x20NULL','expr','parseSearch','search','sqlOperator','conditions','Tag','value','split','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','and','uc.UserId\x20=\x20?','fieldType','datetime','DATE','buildExpression','start','map','isNil','Contact','isEmpty','ListId','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','filter','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.firstName\x20LIKE\x20?','c.email\x20LIKE\x20?','group','c.id','Sequelize','SELECT','order','DESC','t.id\x20IN\x20?','resolve','user','role','some','getLists','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','agent','sequelize','toString','keyBy','c.phone','c.fax','c.email','c.deletedAt','c.CompanyId','TagIds','Tags','rows','catch','params','tags','startsWith','columnName','displayName','custom','values','merge','body','findAll','get','mergeWith','isArray','join','CmHopper'];(function(_0x4988f5,_0x22e4fa){var _0x2921e4=function(_0x625316){while(--_0x625316){_0x4988f5['push'](_0x4988f5['shift']());}};_0x2921e4(++_0x22e4fa);}(_0x585a,0x196));var _0xa585=function(_0x2b9ac8,_0xf820cb){_0x2b9ac8=_0x2b9ac8-0x0;var _0x3ceea9=_0x585a[_0x2b9ac8];return _0x3ceea9;};'use strict';var moment=require(_0xa585('0x0'));var BPromise=require(_0xa585('0x1'));var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0xa585('0x2'));var squel=require(_0xa585('0x3'));var Papa=require(_0xa585('0x4'));var Redis=require(_0xa585('0x5'));var qs=require(_0xa585('0x6'));var as=require(_0xa585('0x7'));var logger=require(_0xa585('0x8'))(_0xa585('0x9'));var config=require(_0xa585('0xa'));var db=require(_0xa585('0xb'))['db'];config['redis']=_['defaults'](config[_0xa585('0xc')],{'host':_0xa585('0xd'),'port':0x18eb});var socket=require(_0xa585('0xe'))(new Redis(config[_0xa585('0xc')]));require(_0xa585('0xf'))[_0xa585('0x10')](socket);function respondWithResult(_0x11271e,_0x2f294f){_0x2f294f=_0x2f294f||0xc8;return function(_0x3ec998){if(_0x3ec998){return _0x11271e[_0xa585('0x11')](_0x2f294f)[_0xa585('0x12')](_0x3ec998);}};}function respondWithFilteredResult(_0x274857,_0x2c33f4){return function(_0x1dfc70){if(_0x1dfc70){var _0x2d5ce7=typeof _0x2c33f4['offset']===_0xa585('0x13')&&typeof _0x2c33f4[_0xa585('0x14')]==='undefined';var _0x3b05dd=_0x1dfc70[_0xa585('0x15')];var _0xeaee68=_0x2d5ce7?0x0:_0x2c33f4[_0xa585('0x16')];var _0x138384=_0x2d5ce7?_0x1dfc70[_0xa585('0x15')]:_0x2c33f4[_0xa585('0x16')]+_0x2c33f4[_0xa585('0x14')];var _0x5188ca;if(_0x138384>=_0x3b05dd){_0x138384=_0x3b05dd;_0x5188ca=0xc8;}else{_0x5188ca=0xce;}_0x274857[_0xa585('0x11')](_0x5188ca);return _0x274857['set'](_0xa585('0x17'),_0xeaee68+'-'+_0x138384+'/'+_0x3b05dd)[_0xa585('0x12')](_0x1dfc70);}return null;};}function saveUpdates(_0x4e2845){return function(_0x4c6ae4){if(_0x4c6ae4){return _0x4c6ae4['update'](_0x4e2845)[_0xa585('0x18')](function(_0x6f25ad){return _0x6f25ad;});}return null;};}function removeEntity(_0x578103){return function(_0xa27513){if(_0xa27513){return _0xa27513[_0xa585('0x19')]()[_0xa585('0x18')](function(){_0x578103[_0xa585('0x11')](0xcc)[_0xa585('0x1a')]();});}};}function handleEntityNotFound(_0x134492){return function(_0x4be2dc){if(!_0x4be2dc){_0x134492['sendStatus'](0x194);}return _0x4be2dc;};}function handleError(_0x5ced0f,_0x4f7f89){_0x4f7f89=_0x4f7f89||0x1f4;return function(_0x4b44fe){logger['error'](_0x4b44fe[_0xa585('0x1b')]);if(_0x4b44fe[_0xa585('0x1c')]){delete _0x4b44fe[_0xa585('0x1c')];}_0x5ced0f[_0xa585('0x11')](_0x4f7f89)['send'](_0x4b44fe);};}exports[_0xa585('0x1d')]=function(_0x1da346,_0x526c37){var _0x28bc7b={},_0x5b8b94={},_0x206f6e={'count':0x0,'rows':[]};return db[_0xa585('0x1e')][_0xa585('0x1f')]()[_0xa585('0x18')](function(_0x21454e){var _0x188633=[];for(var _0x31b947=0x0;_0x31b947<Object['keys'](_0x21454e)[_0xa585('0x20')];_0x31b947++){var _0x191324=Object[_0xa585('0x21')](_0x21454e)[_0x31b947];if(_['startsWith'](_0x191324,_0xa585('0x22'))){_0x188633[_0xa585('0x23')](db[_0xa585('0x24')][_0xa585('0x25')]({'where':{'id':_['trimStart'](_0x191324,_0xa585('0x22'))},'raw':!![]}));}}return BPromise[_0xa585('0x26')](_0x188633)[_0xa585('0x18')](function(_0x36ed4d){for(var _0x22b87a=0x0;_0x22b87a<_0x36ed4d[_0xa585('0x20')];_0x22b87a++){if(_0x36ed4d[_0x22b87a]){var _0x5f0fec=_0xa585('0x22')+_0x36ed4d[_0x22b87a]['id'];var _0x146a71=_0x21454e[_0x5f0fec];_0x146a71['fieldType']=_0x36ed4d[_0x22b87a][_0xa585('0x27')];}}return _0x21454e;});})[_0xa585('0x18')](function(_0x3e781){_0x5b8b94[_0xa585('0x28')]=_[_0xa585('0x21')](_0x3e781);_0x5b8b94[_0xa585('0x29')]=_[_0xa585('0x21')](_0x1da346[_0xa585('0x29')]);_0x5b8b94[_0xa585('0x2a')]=_[_0xa585('0x2b')](_0x5b8b94['model'],_0x5b8b94[_0xa585('0x29')]);_0x28bc7b[_0xa585('0x2c')]=_['intersection'](_0x5b8b94['model'],qs['fields'](_0x1da346[_0xa585('0x29')][_0xa585('0x2d')]));_0x28bc7b[_0xa585('0x2c')]=_0x28bc7b[_0xa585('0x2c')][_0xa585('0x20')]?_0x28bc7b[_0xa585('0x2c')]:_0x5b8b94[_0xa585('0x28')];if(!_0x1da346['query'][_0xa585('0x2e')](_0xa585('0x2f'))){_0x28bc7b[_0xa585('0x14')]=qs[_0xa585('0x14')](_0x1da346[_0xa585('0x29')][_0xa585('0x14')]);_0x28bc7b[_0xa585('0x16')]=qs[_0xa585('0x16')](_0x1da346[_0xa585('0x29')][_0xa585('0x16')]);}_0x28bc7b['order']=qs[_0xa585('0x30')](_0x1da346[_0xa585('0x29')][_0xa585('0x30')]);_0x28bc7b[_0xa585('0x31')]=qs[_0xa585('0x2a')](_[_0xa585('0x32')](_0x1da346[_0xa585('0x29')],_0x5b8b94['filters']),_0x3e781);var _0x1462f0=[];var _0x53ea00=squel['select']()[_0xa585('0x33')]('id')['field']('name')[_0xa585('0x33')](_0xa585('0x34'))[_0xa585('0x35')](_0xa585('0x36'));var _0x5d7d80=squel[_0xa585('0x37')]()[_0xa585('0x35')]('cm_contacts','c')[_0xa585('0x38')]('cm_user_has_contacts','uc',_0xa585('0x39'))['left_join'](_0xa585('0x3a'),'ct',_0xa585('0x3b'))['left_join'](_0xa585('0x36'),'t',_0xa585('0x3c'))[_0xa585('0x31')](_0xa585('0x3d'));var _0x3da135=squel[_0xa585('0x3e')]();var _0x248a0d=[];var _0x213473=squel['expr']();var _0xa104b7;if(_0x1da346['query']['search']){_0xa104b7=as[_0xa585('0x3f')](_0x1da346[_0xa585('0x29')][_0xa585('0x40')]);var _0x43142f=_0xa104b7[_0xa585('0x41')];for(var _0x6cb90f=0x0;_0x6cb90f<_0xa104b7[_0xa585('0x42')][_0xa585('0x20')];_0x6cb90f++){var _0x2d9942=_0xa104b7[_0xa585('0x42')][_0x6cb90f];var _0x2fe33e='c';var _0x1060b3=_(_0x3e781)['keys']()['find'](function(_0x500197){return _0x500197===_0x2d9942['field'];});if(_0x1060b3)_0x1060b3=_0x3e781[_0x2d9942[_0xa585('0x33')]];if(!_0x1060b3){if(_0x2d9942[_0xa585('0x33')]===_0xa585('0x43')){var _0x197d29=_0x2d9942[_0xa585('0x44')][_0xa585('0x45')](',')['map'](function(_0x5e8fa8){return Number(_0x5e8fa8);});_0x197d29[_0xa585('0x46')](function(_0x451203){_0x213473['or'](_0xa585('0x47'),'%,'+_0x451203+',%');});_0x248a0d=_[_0xa585('0x48')](_0x248a0d,_0x197d29);}else if(_0x2d9942[_0xa585('0x33')]===_0xa585('0x49')){_0x3da135[_0xa585('0x4a')](_0xa585('0x4b'),_0x2d9942[_0xa585('0x44')]);}}else{if(_0x2d9942['field']==='dateOfBirth'||_0x1060b3[_0xa585('0x4c')]===_0xa585('0x4d'))_0x2d9942['castTo']=_0xa585('0x4e');var _0x4516ce=as[_0xa585('0x4f')](_0x2fe33e,_0x1060b3[_0xa585('0x27')],_0x2d9942);_0x3da135[_0x43142f](_0x4516ce['text'],_0x4516ce[_0xa585('0x44')][_0xa585('0x50')],_0x4516ce[_0xa585('0x44')][_0xa585('0x1a')]);}}}else{var _0x280cbb=_(Object[_0xa585('0x21')](_0x1da346[_0xa585('0x29')]))[_0xa585('0x51')](function(_0x201ec1){return _0x3e781[_0xa585('0x2e')](_0x201ec1)?_0x201ec1:undefined;})['filter'](function(_0x3633ee){return!_[_0xa585('0x52')](_0x3633ee);})[_0xa585('0x44')]();if(_0x1da346['query'][_0xa585('0x53')])_0x280cbb[_0xa585('0x23')](_0xa585('0x53'));if(!_[_0xa585('0x54')](_0x280cbb)){_0x280cbb['forEach'](function(_0x5602f5){if(_0x5602f5===_0xa585('0x55')){_0x5d7d80[_0xa585('0x31')]('c.ListId\x20IN\x20?',[][_0xa585('0x56')](_0x1da346[_0xa585('0x29')][_0x5602f5]));}else if(_0x5602f5==='Contact'){var _0x541806='%'+_0x1da346['query'][_0x5602f5]+'%';_0x5d7d80[_0xa585('0x31')](_0xa585('0x57'),_0x541806);}else{_0x5d7d80[_0xa585('0x31')]('c.'+_0x5602f5+_0xa585('0x58'),_0x1da346[_0xa585('0x29')][_0x5602f5]);}});}if(_0x1da346['query'][_0xa585('0x59')]){_0x248a0d=_['isArray'](_0x1da346[_0xa585('0x29')][_0xa585('0x59')])?_0x1da346[_0xa585('0x29')]['tag']:new Array(_0x1da346['query'][_0xa585('0x59')]);_0x248a0d['forEach'](function(_0x15bc05){_0x213473['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x15bc05+',%');});}if(_0x1da346['query'][_0xa585('0x5a')]){var _0x115415=_0x1da346[_0xa585('0x29')][_0xa585('0x5a')][_0xa585('0x5b')]('\x5c','\x5c\x5c')[_0xa585('0x5b')](/'/g,'\x27\x27');if(_0x115415[_0xa585('0x45')]('\x20')[_0xa585('0x20')]>0x1){_0x3da135['or'](_0xa585('0x5c'),qs['getFullTextValue'](_0x115415),null);}else{if(qs[_0xa585('0x5d')](_0x115415)){_0x3da135['or'](_0xa585('0x5e'),_0x115415+'%');_0x3da135['or'](_0xa585('0x5f'),_0x115415+'%');_0x3da135['or']('c.mobile\x20LIKE\x20?',_0x115415+'%');_0x3da135['or'](_0xa585('0x60'),_0x115415+'%');}else if(qs[_0xa585('0x61')](_0x115415)){_0x3da135['or']('c.email\x20LIKE\x20?',_0x115415+'%');}else{_0x3da135['or'](_0xa585('0x62'),'%'+_0x115415+'%');_0x3da135['or']('c.lastName\x20LIKE\x20?','%'+_0x115415+'%');_0x3da135['or'](_0xa585('0x63'),'%'+_0x115415+'%');}}}}_0x5d7d80[_0xa585('0x31')](_0x3da135);_0x5d7d80[_0xa585('0x64')](_0xa585('0x65'));var _0x4cd374={'type':db[_0xa585('0x66')]['QueryTypes'][_0xa585('0x67')],'raw':!![]};var _0x5a0421=_0x5d7d80['clone']()['field']('c.id');if(_0x28bc7b[_0xa585('0x68')]){_0x28bc7b[_0xa585('0x68')][_0xa585('0x46')](function(_0x56ecfe){_0x5d7d80[_0xa585('0x68')]('c.'+_0x56ecfe[0x0],_0x56ecfe[0x1]===_0xa585('0x69')?![]:!![]);});}if(!_[_0xa585('0x54')](_0x248a0d)){_0x5d7d80['having'](_0x213473);_0x5a0421['where'](_0xa585('0x6a'),_0x248a0d);}BPromise[_0xa585('0x6b')]()[_0xa585('0x18')](function(){if(!_0xa104b7)return;if(_0x1da346[_0xa585('0x6c')][_0xa585('0x6d')]!=='agent')return;if(!_[_0xa585('0x6e')](_0xa104b7[_0xa585('0x42')],[_0xa585('0x33'),_0xa585('0x49')])){return _0x1da346['user'][_0xa585('0x6f')]({'attributes':['id'],'raw':!![]})[_0xa585('0x18')](function(_0x110668){if(_['isEmpty'](_0x110668)){_0x5a0421[_0xa585('0x31')](_0xa585('0x70'));_0x5d7d80[_0xa585('0x31')](_0xa585('0x70'));}else{_0x5a0421[_0xa585('0x31')](_0xa585('0x71'),_['map'](_0x110668,'id'));_0x5d7d80[_0xa585('0x31')](_0xa585('0x71'),_[_0xa585('0x51')](_0x110668,'id'));}});}})[_0xa585('0x18')](function(){if(_0x1da346[_0xa585('0x6c')][_0xa585('0x6d')]===_0xa585('0x72')&&!_0xa104b7&&!_0x1da346[_0xa585('0x29')][_0xa585('0x55')])return[];return db[_0xa585('0x73')][_0xa585('0x29')](_0x5a0421['toString'](),_0x4cd374);})[_0xa585('0x18')](function(_0x465900){_0x206f6e[_0xa585('0x15')]=_0x465900['length'];if(_0x206f6e[_0xa585('0x15')]===0x0)return[];return db[_0xa585('0x73')][_0xa585('0x29')](_0x53ea00[_0xa585('0x74')](),_0x4cd374)[_0xa585('0x18')](function(_0x2a0024){_0x1462f0=_[_0xa585('0x75')](_0x2a0024,'id');_0x4cd374=_['merge'](_0x4cd374,{'model':db['CmContact'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1da346[_0xa585('0x29')][_0xa585('0x2d')]){_0x28bc7b[_0xa585('0x2c')][_0xa585('0x46')](function(_0x568096){_0x5d7d80[_0xa585('0x33')]('c.'+_0x568096);});}else{_0x5d7d80[_0xa585('0x33')]('c.id');_0x5d7d80[_0xa585('0x33')]('c.firstName');_0x5d7d80['field']('c.lastName');_0x5d7d80[_0xa585('0x33')](_0xa585('0x76'));_0x5d7d80[_0xa585('0x33')]('c.mobile');_0x5d7d80[_0xa585('0x33')](_0xa585('0x77'));_0x5d7d80[_0xa585('0x33')](_0xa585('0x78'));_0x5d7d80[_0xa585('0x33')]('c.ListId');_0x5d7d80[_0xa585('0x33')]('c.createdAt');_0x5d7d80['field'](_0xa585('0x79'));_0x5d7d80[_0xa585('0x33')](_0xa585('0x7a'));_0x5d7d80['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0xa585('0x7b'));}if(_0x28bc7b[_0xa585('0x14')])_0x5d7d80[_0xa585('0x14')](_0x28bc7b['limit']);if(_0x28bc7b[_0xa585('0x16')])_0x5d7d80[_0xa585('0x16')](_0x28bc7b['offset']);return db[_0xa585('0x73')]['query'](_0x5d7d80[_0xa585('0x74')](),_0x4cd374);});})[_0xa585('0x18')](function(_0x46ad35){_0x46ad35[_0xa585('0x46')](function(_0x4ecd44){if(_0x4ecd44[_0xa585('0x7b')]){_0x4ecd44[_0xa585('0x7c')]=[];_0x4ecd44['TagIds'][_0xa585('0x45')](',')['forEach'](function(_0x2f0a2c){_0x4ecd44[_0xa585('0x7c')][_0xa585('0x23')](_0x1462f0[_0x2f0a2c]);});}delete _0x4ecd44[_0xa585('0x7b')];});_0x206f6e[_0xa585('0x7d')]=_0x46ad35;return _0x206f6e;})[_0xa585('0x18')](respondWithFilteredResult(_0x526c37,_0x28bc7b));})[_0xa585('0x7e')](handleError(_0x526c37,null));};exports[_0xa585('0x19')]=function(_0x4d0c3f,_0x422a8e){return db['CmContact']['find']({'where':{'id':_0x4d0c3f[_0xa585('0x7f')]['id']}})[_0xa585('0x18')](handleEntityNotFound(_0x422a8e,null))[_0xa585('0x18')](removeEntity(_0x422a8e,null))[_0xa585('0x7e')](handleError(_0x422a8e,null));};exports[_0xa585('0x1f')]=function(_0xfb1f3a,_0x4ef8de){return db[_0xa585('0x1e')][_0xa585('0x1f')]()[_0xa585('0x18')](function(_0x4fd25f){delete _0x4fd25f[_0xa585('0x80')];for(var _0x1e673b=0x0;_0x1e673b<Object[_0xa585('0x21')](_0x4fd25f)['length'];_0x1e673b++){var _0x27fdfe=Object[_0xa585('0x21')](_0x4fd25f)[_0x1e673b];if(!_[_0xa585('0x81')](_0x27fdfe,'cf_')){_0x4fd25f[_0x27fdfe][_0xa585('0x82')]=_0x27fdfe;_0x4fd25f[_0x27fdfe][_0xa585('0x83')]=_0x27fdfe;}}return _0x4fd25f;})[_0xa585('0x18')](function(_0xda4003){var _0x5624c4={'where':Boolean(_0xfb1f3a['query']['analytics'])===!![]?undefined:{'$or':[{'ListId':_0xfb1f3a[_0xa585('0x29')]['id']},{'ListId':null}]},'raw':!![]};return db[_0xa585('0x24')]['findAll'](_0x5624c4)[_0xa585('0x18')](function(_0x2b479b){for(var _0x765ba0=0x0;_0x765ba0<_0x2b479b[_0xa585('0x20')];_0x765ba0++){var _0x3ad3d6='cf_'+_0x2b479b[_0x765ba0]['id'];_0xda4003[_0x3ad3d6][_0xa585('0x82')]=_0x3ad3d6;_0xda4003[_0x3ad3d6][_0xa585('0x83')]=_0x2b479b[_0x765ba0]['alias'];_0xda4003[_0x3ad3d6][_0xa585('0x84')]={'type':_0x2b479b[_0x765ba0]['type'],'values':_0x2b479b[_0x765ba0][_0xa585('0x85')]};}Object[_0xa585('0x21')](_0xda4003)[_0xa585('0x46')](function(_0x40c57a){if(!_0xda4003[_0x40c57a][_0xa585('0x2e')]('columnName')){delete _0xda4003[_0x40c57a];}});return _0xda4003;});})[_0xa585('0x18')](respondWithResult(_0x4ef8de,null))[_0xa585('0x7e')](handleError(_0x4ef8de,null));};exports[_0xa585('0x86')]=function(_0x232e89,_0xf157c4){var _0x2c662f;var _0x363fe2;var _0x3df8da;if(_0x232e89['body']['id']){delete _0x232e89[_0xa585('0x87')]['id'];}return db['CmContact'][_0xa585('0x88')]({'where':{'id':[_0x232e89[_0xa585('0x87')]['to'],_0x232e89['body'][_0xa585('0x35')]]}})[_0xa585('0x18')](function(_0x1a03a2){if(_0x1a03a2){if(_0x1a03a2[_0xa585('0x20')]!==0x2){return null;}_0x1a03a2[0x0]=_0x1a03a2[0x0][_0xa585('0x89')]({'plain':!![]});_0x1a03a2[0x1]=_0x1a03a2[0x1][_0xa585('0x89')]({'plain':!![]});delete _0x1a03a2[0x0]['id'];delete _0x1a03a2[0x1]['id'];return _[_0xa585('0x8a')](_0x1a03a2[0x0],_0x1a03a2[0x1],function(_0x3783d2,_0x13f580){if(Array[_0xa585('0x8b')](_0x13f580)&&!_0x13f580[_0xa585('0x20')]){return _0x3783d2;}else if(!_0x13f580){return _0x3783d2;}});}})[_0xa585('0x18')](handleEntityNotFound(_0xf157c4,null))['then'](function(_0x979747){if(_0x979747){if(_0x979747[_0xa585('0x80')]&&_[_0xa585('0x8b')](_0x979747[_0xa585('0x80')])){_0x979747['tags']=_0x979747['tags'][_0xa585('0x8c')]();}logger['info']('[CmContact][merge]\x20to\x20%s\x20from\x20%s',_0x232e89[_0xa585('0x87')]['to'],_0x232e89[_0xa585('0x87')]['from']);return db[_0xa585('0x8d')][_0xa585('0x19')]({'where':{'ContactId':[_0x232e89[_0xa585('0x87')]['to'],_0x232e89['body']['from']]}})['then'](function(_0x124ff0){logger[_0xa585('0x8e')](_0xa585('0x8f'),_0x124ff0);return db[_0xa585('0x90')][_0xa585('0x19')]({'where':{'ContactId':[_0x232e89[_0xa585('0x87')]['to'],_0x232e89[_0xa585('0x87')]['from']]}})[_0xa585('0x18')](function(_0x544211){logger[_0xa585('0x8e')](_0xa585('0x91'),_0x544211);return db['CmContact'][_0xa585('0x92')](_0x979747);});});}})[_0xa585('0x18')](function(_0x312269){if(_0x312269){_0x2c662f=_0x312269;_0x363fe2={'ContactId':_0x2c662f['id']};_0x3df8da={'where':{'ContactId':[_0x232e89['body']['to'],_0x232e89[_0xa585('0x87')][_0xa585('0x35')]]}};return db['ChatInteraction'][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db[_0xa585('0x94')]['update'](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db[_0xa585('0x95')][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})['then'](function(){if(_0x2c662f){return db[_0xa585('0x96')][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db[_0xa585('0x97')][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db[_0xa585('0x96')][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})['then'](function(){if(_0x2c662f){return db[_0xa585('0x97')][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db['SmsInteraction'][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db['SmsMessage'][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db[_0xa585('0x98')][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})['then'](function(){if(_0x2c662f){return db[_0xa585('0x99')]['update'](_0x363fe2,_0x3df8da);}})['then'](function(){if(_0x2c662f){return db[_0xa585('0x9a')]['update'](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db[_0xa585('0x9b')][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db['CmHopperFinal']['update'](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db[_0xa585('0x9c')][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db['ReportAgentPreview'][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db[_0xa585('0x9d')]['update'](_0x363fe2,_0x3df8da);}})['then'](function(){if(_0x2c662f){return db[_0xa585('0x9e')][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db[_0xa585('0x9f')]['update'](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db[_0xa585('0xa0')][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db['OpenchannelQueueReport'][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db[_0xa585('0xa1')]['update'](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db[_0xa585('0xa2')]['update'](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db[_0xa585('0xa3')][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})['then'](function(){if(_0x2c662f){return db[_0xa585('0xa4')][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db[_0xa585('0xa5')][_0xa585('0x93')](_0x363fe2,_0x3df8da);}})[_0xa585('0x18')](function(){if(_0x2c662f){return db[_0xa585('0x1e')][_0xa585('0x19')]({'where':{'id':[_0x232e89['body']['to'],_0x232e89[_0xa585('0x87')][_0xa585('0x35')]]}});}})[_0xa585('0x18')](function(){if(_0x2c662f){return _0x2c662f;}})[_0xa585('0x18')](respondWithResult(_0xf157c4,null))['catch'](handleError(_0xf157c4,null));};exports['create']=function(_0x5e84a5,_0x53eb2d){return db[_0xa585('0x1e')][_0xa585('0x1f')]()[_0xa585('0x18')](function(_0x1cd012){if(_0x5e84a5[_0xa585('0x87')][_0xa585('0x80')]&&_[_0xa585('0x8b')](_0x5e84a5[_0xa585('0x87')][_0xa585('0x80')])){if(_0x5e84a5[_0xa585('0x87')]['tags'][_0xa585('0x20')]){_0x5e84a5[_0xa585('0x87')]['tags']=_0x5e84a5[_0xa585('0x87')][_0xa585('0x80')][_0xa585('0x8c')](';')+';';}else{_0x5e84a5[_0xa585('0x87')][_0xa585('0x80')]=null;}}else{_0x5e84a5[_0xa585('0x87')][_0xa585('0x80')]=null;}return db[_0xa585('0x1e')][_0xa585('0x92')](_0x5e84a5[_0xa585('0x87')],{'fields':_[_0xa585('0x21')](_0x1cd012),'raw':!![]});})[_0xa585('0x18')](respondWithResult(_0x53eb2d,0xc9))[_0xa585('0x7e')](handleError(_0x53eb2d,null));};exports[_0xa585('0xa6')]=function(_0x162ac8,_0x3af652){var _0x706373=0x0;var _0x3bd60a=0x0;var _0x1f81cd=0x0;return db['CmContact'][_0xa585('0x1f')]()['then'](function(_0x2bba6e){return BPromise[_0xa585('0xa7')](_0x162ac8['body'],function(_0x331b63){var _0x6e36e9={'where':{'$or':[]},'defaults':_0x331b63,'fields':_[_0xa585('0x21')](_0x2bba6e),'raw':!![]};if(_0x331b63[_0xa585('0xa8')]){for(var _0x4590da=0x0;_0x4590da<_0x331b63[_0xa585('0xa8')][_0xa585('0x20')];_0x4590da++){var _0x33699d={};_0x33699d[_0x331b63[_0xa585('0xa8')][_0x4590da]]=_0x331b63[_0x331b63[_0xa585('0xa8')][_0x4590da]];_0x6e36e9[_0xa585('0x31')]['$or'][_0xa585('0x23')](_0x33699d);}_0x6e36e9[_0xa585('0x31')][_0xa585('0x55')]=_0x331b63[_0xa585('0x55')];}return db[_0xa585('0x1e')][_0xa585('0xa9')](_0x6e36e9)[_0xa585('0xaa')](function(_0x54cc31,_0x5c35dc){if(_0x5c35dc){_0x706373++;}else{_0x1f81cd++;}})['catch'](function(){_0x3bd60a++;});});})[_0xa585('0x18')](function(_0x3ce4fc){if(_0x3ce4fc){return{'success':_0x706373,'failure':_0x3bd60a,'duplicates':_0x1f81cd};}})[_0xa585('0x18')](respondWithResult(_0x3af652,0xc9))[_0xa585('0x7e')](handleError(_0x3af652,null));};exports[_0xa585('0xab')]=function(_0x1caefd,_0xe10a7c){var _0x6f9165;return db['CmContact'][_0xa585('0x1f')]()[_0xa585('0x18')](function(_0x42d820){return db[_0xa585('0x1e')][_0xa585('0xac')]({'where':{'id':_0x1caefd[_0xa585('0x7f')]['id']},'include':[{'model':db[_0xa585('0x43')],'as':_0xa585('0x7c'),'attributes':['id',_0xa585('0x1c'),_0xa585('0x34')],'required':_0x1caefd['query'][_0xa585('0x59')]?!![]:![]}],'attributes':_[_0xa585('0x21')](_0x42d820)});})['then'](function(_0x32c11c){if(!_[_0xa585('0x52')](_0x32c11c)){_0x6f9165=_0x32c11c['get']({'plain':!![]});var _0x18fc93={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x32c11c&&_0x32c11c[_0xa585('0x55')]){if(_0x32c11c['ListId']){_0x18fc93[_0xa585('0x31')][_0xa585('0xad')][_0xa585('0x23')]({'ListId':{'$ne':_0x32c11c[_0xa585('0x55')]}});}}return db[_0xa585('0x24')][_0xa585('0x88')](_0x18fc93);}})[_0xa585('0x18')](function(_0x2879d2){if(!_[_0xa585('0x52')](_0x2879d2)){return _['omit'](_0x6f9165,_['map'](_0x2879d2,function(_0x94ff94){return util[_0xa585('0xae')](_0xa585('0xaf'),_0x94ff94['id']);}));}})[_0xa585('0x18')](handleEntityNotFound(_0xe10a7c,null))[_0xa585('0x18')](respondWithResult(_0xe10a7c,null))[_0xa585('0x7e')](handleError(_0xe10a7c,null));};exports[_0xa585('0x93')]=function(_0x1aeb61,_0x5d672b){var _0x59210d;if(_0x1aeb61[_0xa585('0x87')]['id']){delete _0x1aeb61[_0xa585('0x87')]['id'];}return db[_0xa585('0x1e')]['find']({'where':{'id':_0x1aeb61['params']['id']}})[_0xa585('0x18')](handleEntityNotFound(_0x5d672b,null))[_0xa585('0x18')](saveUpdates(_0x1aeb61[_0xa585('0x87')],null))[_0xa585('0x18')](function(_0x6afa92){_0x59210d=_0x6afa92;var _0x59c786={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x6afa92&&_0x6afa92['ListId']){if(_0x6afa92[_0xa585('0x55')]){_0x59c786[_0xa585('0x31')][_0xa585('0xad')][_0xa585('0x23')]({'ListId':{'$ne':_0x6afa92['ListId']}});}}return db[_0xa585('0x24')]['findAll'](_0x59c786);})[_0xa585('0x18')](function(_0x306410){if(_0x306410){return _[_0xa585('0xb0')](_[_0xa585('0xb1')](_0x1aeb61[_0xa585('0x87')],function(_0x379e30,_0x5c8870){return _[_0xa585('0x81')](_0x5c8870,_0xa585('0x22'));}),_[_0xa585('0x51')](_0x306410,function(_0xfec574){return util[_0xa585('0xae')](_0xa585('0xaf'),_0xfec574['id']);}));}})[_0xa585('0x18')](function(_0x3f7914){if(_0x3f7914&&!_[_0xa585('0x54')](_0x3f7914)){var _0x3a16bb=squel['update']()['table']('cm_contacts')[_0xa585('0xb2')](_0x3f7914)['where']('id\x20=\x20?',_0x1aeb61[_0xa585('0x7f')]['id'])[_0xa585('0xb3')]();return db[_0xa585('0x73')]['query'](_0x3a16bb[_0xa585('0xb4')],{'replacements':_0x3a16bb[_0xa585('0x85')]});}})['then'](function(){if(_0x1aeb61['body'][_0xa585('0xb5')]&&_0x59210d){return db[_0xa585('0x8d')][_0xa585('0x93')]({'phone':_0x1aeb61['body'][_0xa585('0xb5')]},{'where':{'ContactId':_0x59210d['id']}});}})[_0xa585('0x18')](function(){return _0x59210d;})[_0xa585('0x18')](respondWithResult(_0x5d672b,null))[_0xa585('0x7e')](handleError(_0x5d672b,null));};exports[_0xa585('0xb6')]=function(_0x53e978,_0x104892){var _0x3c49ff={};var _0x1ae23b={};var _0xf19a85;var _0x3d84cd;return db[_0xa585('0x1e')]['findOne']({'where':{'id':_0x53e978['params']['id']}})[_0xa585('0x18')](handleEntityNotFound(_0x104892,null))['then'](function(_0x13c3a7){if(_0x13c3a7){_0xf19a85=_0x13c3a7;_0x1ae23b[_0xa585('0x28')]=_['keys'](db['Tag'][_0xa585('0xb7')]);_0x1ae23b[_0xa585('0x29')]=_[_0xa585('0x21')](_0x53e978[_0xa585('0x29')]);_0x1ae23b['filters']=_[_0xa585('0x2b')](_0x1ae23b[_0xa585('0x28')],_0x1ae23b['query']);_0x3c49ff[_0xa585('0x2c')]=_[_0xa585('0x2b')](_0x1ae23b[_0xa585('0x28')],qs['fields'](_0x53e978['query'][_0xa585('0x2d')]));_0x3c49ff['attributes']=_0x3c49ff['attributes'][_0xa585('0x20')]?_0x3c49ff[_0xa585('0x2c')]:_0x1ae23b[_0xa585('0x28')];_0x3c49ff[_0xa585('0x68')]=qs[_0xa585('0x30')](_0x53e978[_0xa585('0x29')][_0xa585('0x30')]);_0x3c49ff[_0xa585('0x31')]=qs['filters'](_[_0xa585('0x32')](_0x53e978[_0xa585('0x29')],_0x1ae23b[_0xa585('0x2a')]));if(_0x53e978[_0xa585('0x29')][_0xa585('0x5a')]){_0x3c49ff[_0xa585('0x31')]=_[_0xa585('0x86')](_0x3c49ff[_0xa585('0x31')],{'$or':_[_0xa585('0x51')](_0x3c49ff['attributes'],function(_0x2aa309){var _0x1c9595={};_0x1c9595[_0x2aa309]={'$like':'%'+_0x53e978[_0xa585('0x29')][_0xa585('0x5a')]+'%'};return _0x1c9595;})});}_0x3c49ff=_[_0xa585('0x86')]({},_0x3c49ff,_0x53e978[_0xa585('0xb8')]);return _0xf19a85[_0xa585('0xb6')](_0x3c49ff);}})[_0xa585('0x18')](function(_0x59db30){if(_0x59db30){_0x3d84cd=_0x59db30[_0xa585('0x20')];if(!_0x53e978['query'][_0xa585('0x2e')](_0xa585('0x2f'))){_0x3c49ff[_0xa585('0x14')]=qs[_0xa585('0x14')](_0x53e978[_0xa585('0x29')][_0xa585('0x14')]);_0x3c49ff[_0xa585('0x16')]=qs['offset'](_0x53e978[_0xa585('0x29')][_0xa585('0x16')]);}return _0xf19a85['getTags'](_0x3c49ff);}})['then'](function(_0x403707){if(_0x403707){return _0x403707?{'count':_0x3d84cd,'rows':_0x403707}:null;}})[_0xa585('0x18')](respondWithResult(_0x104892,null))[_0xa585('0x7e')](handleError(_0x104892,null));};exports[_0xa585('0xb9')]=function(_0x16a1fa,_0x2dd37f){if(_0x16a1fa[_0xa585('0x87')]['id']){delete _0x16a1fa[_0xa585('0x87')]['id'];}return db[_0xa585('0x1e')][_0xa585('0x25')]({'where':{'id':_0x16a1fa[_0xa585('0x7f')]['id']}})[_0xa585('0x18')](handleEntityNotFound(_0x2dd37f,null))[_0xa585('0x18')](function(_0x3102a5){if(_0x3102a5){return _0x3102a5[_0xa585('0xb9')](_0x16a1fa['body'][_0xa585('0xba')]||[]);}return null;})['then'](respondWithResult(_0x2dd37f,null))['catch'](handleError(_0x2dd37f,null));};exports[_0xa585('0xbb')]=function(_0x558958,_0x28bc49){var _0x1053f6={'raw':![],'where':{}};var _0x18d61b={};var _0x570843={'count':0x0,'rows':[]};return db[_0xa585('0x1e')][_0xa585('0x25')]({'where':{'id':_0x558958[_0xa585('0x7f')]['id']}})['then'](handleEntityNotFound(_0x28bc49,null))[_0xa585('0x18')](function(_0x202442){if(_0x202442){_0x18d61b[_0xa585('0x28')]=_['keys'](db[_0xa585('0x8d')][_0xa585('0xb7')]);_0x18d61b['query']=_['keys'](_0x558958[_0xa585('0x29')]);_0x18d61b['filters']=_[_0xa585('0x2b')](_0x18d61b[_0xa585('0x28')],_0x18d61b[_0xa585('0x29')]);_0x1053f6['attributes']=_[_0xa585('0x2b')](_0x18d61b[_0xa585('0x28')],qs[_0xa585('0x2d')](_0x558958['query'][_0xa585('0x2d')]));_0x1053f6[_0xa585('0x2c')]=_0x1053f6[_0xa585('0x2c')]['length']?_0x1053f6[_0xa585('0x2c')]:_0x18d61b[_0xa585('0x28')];if(!_0x558958[_0xa585('0x29')]['hasOwnProperty'](_0xa585('0x2f'))){_0x1053f6[_0xa585('0x14')]=qs[_0xa585('0x14')](_0x558958[_0xa585('0x29')][_0xa585('0x14')]);_0x1053f6['offset']=qs[_0xa585('0x16')](_0x558958['query'][_0xa585('0x16')]);}_0x1053f6[_0xa585('0x68')]=qs[_0xa585('0x30')](_0x558958[_0xa585('0x29')][_0xa585('0x30')]);_0x1053f6[_0xa585('0x31')]=qs[_0xa585('0x2a')](_['pick'](_0x558958['query'],_0x18d61b['filters']));_0x1053f6[_0xa585('0x31')][_0xa585('0xbc')]=_0x202442['id'];if(_0x558958[_0xa585('0x29')][_0xa585('0x5a')]){_0x1053f6['where']=_[_0xa585('0x86')](_0x1053f6[_0xa585('0x31')],{'$or':_[_0xa585('0x51')](_0x1053f6['attributes'],function(_0x27296d){var _0x36a3bb={};_0x36a3bb[_0x27296d]={'$like':'%'+_0x558958[_0xa585('0x29')]['filter']+'%'};return _0x36a3bb;})});}_0x1053f6=_[_0xa585('0x86')]({},_0x1053f6,_0x558958[_0xa585('0xb8')]);return db[_0xa585('0x8d')][_0xa585('0x15')]({'where':_0x1053f6['where']})['then'](function(_0x3ae15a){_0x570843[_0xa585('0x15')]=_0x3ae15a;if(_0x558958[_0xa585('0x29')]['includeAll']){_0x1053f6[_0xa585('0xbd')]=[{'all':!![]}];}return db['CmHopper'][_0xa585('0x88')](_0x1053f6);})[_0xa585('0x18')](function(_0x20e0c7){_0x570843[_0xa585('0x7d')]=_0x20e0c7;return _0x570843;});}})['then'](respondWithFilteredResult(_0x28bc49,_0x1053f6))['catch'](handleError(_0x28bc49,null));};exports['getHopperHistories']=function(_0xc0e32e,_0x5c8033){var _0x2fee8d={'raw':!![],'where':{}};var _0x73a2d3={};var _0x554900={'count':0x0,'rows':[]};return db[_0xa585('0x1e')][_0xa585('0x25')]({'where':{'id':_0xc0e32e[_0xa585('0x7f')]['id']}})['then'](handleEntityNotFound(_0x5c8033,null))['then'](function(_0x572685){if(_0x572685){_0x73a2d3['model']=_[_0xa585('0x21')](db['CmHopperHistory'][_0xa585('0xb7')]);_0x73a2d3['query']=_['keys'](_0xc0e32e[_0xa585('0x29')]);_0x73a2d3[_0xa585('0x2a')]=_[_0xa585('0x2b')](_0x73a2d3['model'],_0x73a2d3[_0xa585('0x29')]);_0x2fee8d['attributes']=_[_0xa585('0x2b')](_0x73a2d3[_0xa585('0x28')],qs[_0xa585('0x2d')](_0xc0e32e['query'][_0xa585('0x2d')]));_0x2fee8d[_0xa585('0x2c')]=_0x2fee8d[_0xa585('0x2c')]['length']?_0x2fee8d[_0xa585('0x2c')]:_0x73a2d3[_0xa585('0x28')];if(!_0xc0e32e[_0xa585('0x29')][_0xa585('0x2e')](_0xa585('0x2f'))){_0x2fee8d[_0xa585('0x14')]=qs[_0xa585('0x14')](_0xc0e32e[_0xa585('0x29')]['limit']);_0x2fee8d[_0xa585('0x16')]=qs['offset'](_0xc0e32e[_0xa585('0x29')][_0xa585('0x16')]);}_0x2fee8d['order']=qs[_0xa585('0x30')](_0xc0e32e['query']['sort']);_0x2fee8d[_0xa585('0x31')]=qs[_0xa585('0x2a')](_[_0xa585('0x32')](_0xc0e32e[_0xa585('0x29')],_0x73a2d3['filters']));_0x2fee8d[_0xa585('0x31')][_0xa585('0xbc')]=_0x572685['id'];if(_0xc0e32e[_0xa585('0x29')][_0xa585('0x5a')]){_0x2fee8d[_0xa585('0x31')]=_[_0xa585('0x86')](_0x2fee8d[_0xa585('0x31')],{'$or':_[_0xa585('0x51')](_0x2fee8d[_0xa585('0x2c')],function(_0x1d5a7d){var _0x3f00b4={};_0x3f00b4[_0x1d5a7d]={'$like':'%'+_0xc0e32e[_0xa585('0x29')][_0xa585('0x5a')]+'%'};return _0x3f00b4;})});}_0x2fee8d=_[_0xa585('0x86')]({},_0x2fee8d,_0xc0e32e[_0xa585('0xb8')]);return db[_0xa585('0x9c')][_0xa585('0x15')]({'where':_0x2fee8d['where']})['then'](function(_0x424f6e){_0x554900[_0xa585('0x15')]=_0x424f6e;if(_0xc0e32e[_0xa585('0x29')][_0xa585('0xbe')]){_0x2fee8d[_0xa585('0xbd')]=[{'all':!![]}];}return db[_0xa585('0x9c')]['findAll'](_0x2fee8d);})['then'](function(_0x21fdfb){_0x554900[_0xa585('0x7d')]=_0x21fdfb;return _0x554900;});}})[_0xa585('0x18')](respondWithFilteredResult(_0x5c8033,_0x2fee8d))['catch'](handleError(_0x5c8033,null));};exports[_0xa585('0xbf')]=function(_0x31ceae,_0x5e1079){var _0x48eb97={'raw':!![],'where':{}};var _0x458814={};var _0x3e3c7c={'count':0x0,'rows':[]};return db[_0xa585('0x1e')][_0xa585('0x25')]({'where':{'id':_0x31ceae[_0xa585('0x7f')]['id']}})[_0xa585('0x18')](handleEntityNotFound(_0x5e1079,null))[_0xa585('0x18')](function(_0x5655e4){if(_0x5655e4){_0x458814[_0xa585('0x28')]=_[_0xa585('0x21')](db[_0xa585('0xc0')][_0xa585('0xb7')]);_0x458814['query']=_[_0xa585('0x21')](_0x31ceae[_0xa585('0x29')]);_0x458814['filters']=_['intersection'](_0x458814[_0xa585('0x28')],_0x458814['query']);_0x48eb97[_0xa585('0x2c')]=_[_0xa585('0x2b')](_0x458814[_0xa585('0x28')],qs[_0xa585('0x2d')](_0x31ceae[_0xa585('0x29')]['fields']));_0x48eb97[_0xa585('0x2c')]=_0x48eb97[_0xa585('0x2c')][_0xa585('0x20')]?_0x48eb97['attributes']:_0x458814[_0xa585('0x28')];if(!_0x31ceae[_0xa585('0x29')][_0xa585('0x2e')](_0xa585('0x2f'))){_0x48eb97[_0xa585('0x14')]=qs[_0xa585('0x14')](_0x31ceae[_0xa585('0x29')][_0xa585('0x14')]);_0x48eb97[_0xa585('0x16')]=qs[_0xa585('0x16')](_0x31ceae[_0xa585('0x29')][_0xa585('0x16')]);}_0x48eb97[_0xa585('0x68')]=qs[_0xa585('0x30')](_0x31ceae[_0xa585('0x29')][_0xa585('0x30')]);_0x48eb97[_0xa585('0x31')]=qs['filters'](_[_0xa585('0x32')](_0x31ceae[_0xa585('0x29')],_0x458814[_0xa585('0x2a')]));_0x48eb97[_0xa585('0x31')][_0xa585('0xbc')]=_0x5655e4['id'];if(_0x31ceae[_0xa585('0x29')][_0xa585('0x5a')]){_0x48eb97[_0xa585('0x31')]=_['merge'](_0x48eb97[_0xa585('0x31')],{'$or':_[_0xa585('0x51')](_0x48eb97[_0xa585('0x2c')],function(_0x3be178){var _0x4af3dd={};_0x4af3dd[_0x3be178]={'$like':'%'+_0x31ceae['query'][_0xa585('0x5a')]+'%'};return _0x4af3dd;})});}_0x48eb97=_['merge']({},_0x48eb97,_0x31ceae[_0xa585('0xb8')]);return db[_0xa585('0xc0')][_0xa585('0x15')]({'where':_0x48eb97['where']})['then'](function(_0x1936db){_0x3e3c7c['count']=_0x1936db;if(_0x31ceae[_0xa585('0x29')]['includeAll']){_0x48eb97[_0xa585('0xbd')]=[{'all':!![]}];}return db[_0xa585('0xc0')][_0xa585('0x88')](_0x48eb97);})[_0xa585('0x18')](function(_0x3d82f2){_0x3e3c7c[_0xa585('0x7d')]=_0x3d82f2;return _0x3e3c7c;});}})[_0xa585('0x18')](respondWithFilteredResult(_0x5e1079,_0x48eb97))['catch'](handleError(_0x5e1079,null));};exports[_0xa585('0xc1')]=function(_0x446b62,_0x3fb7ba){var _0x3c9baf={'raw':!![],'where':{}};var _0x20902e={};var _0x15c1a0={'count':0x0,'rows':[]};return db[_0xa585('0x1e')][_0xa585('0x25')]({'where':{'id':_0x446b62['params']['id']}})[_0xa585('0x18')](handleEntityNotFound(_0x3fb7ba,null))[_0xa585('0x18')](function(_0x171b4b){if(_0x171b4b){_0x20902e[_0xa585('0x28')]=_[_0xa585('0x21')](db[_0xa585('0xa2')][_0xa585('0xb7')]);_0x20902e[_0xa585('0x29')]=_[_0xa585('0x21')](_0x446b62[_0xa585('0x29')]);_0x20902e[_0xa585('0x2a')]=_[_0xa585('0x2b')](_0x20902e['model'],_0x20902e[_0xa585('0x29')]);_0x3c9baf[_0xa585('0x2c')]=_[_0xa585('0x2b')](_0x20902e[_0xa585('0x28')],qs[_0xa585('0x2d')](_0x446b62[_0xa585('0x29')][_0xa585('0x2d')]));_0x3c9baf[_0xa585('0x2c')]=_0x3c9baf[_0xa585('0x2c')][_0xa585('0x20')]?_0x3c9baf['attributes']:_0x20902e['model'];if(!_0x446b62[_0xa585('0x29')][_0xa585('0x2e')](_0xa585('0x2f'))){_0x3c9baf[_0xa585('0x14')]=qs[_0xa585('0x14')](_0x446b62[_0xa585('0x29')]['limit']);_0x3c9baf[_0xa585('0x16')]=qs[_0xa585('0x16')](_0x446b62['query'][_0xa585('0x16')]);}_0x3c9baf['order']=qs[_0xa585('0x30')](_0x446b62[_0xa585('0x29')]['sort']);_0x3c9baf[_0xa585('0x31')]=qs['filters'](_['pick'](_0x446b62[_0xa585('0x29')],_0x20902e[_0xa585('0x2a')]));_0x3c9baf[_0xa585('0x31')][_0xa585('0xbc')]=_0x171b4b['id'];if(_0x446b62[_0xa585('0x29')]['filter']){_0x3c9baf[_0xa585('0x31')]=_[_0xa585('0x86')](_0x3c9baf[_0xa585('0x31')],{'$or':_[_0xa585('0x51')](_0x3c9baf[_0xa585('0x2c')],function(_0x2ccc75){var _0x42bdac={};_0x42bdac[_0x2ccc75]={'$like':'%'+_0x446b62['query']['filter']+'%'};return _0x42bdac;})});}_0x3c9baf=_[_0xa585('0x86')]({},_0x3c9baf,_0x446b62[_0xa585('0xb8')]);return db[_0xa585('0xa2')][_0xa585('0x15')]({'where':_0x3c9baf[_0xa585('0x31')]})[_0xa585('0x18')](function(_0xda3d09){_0x15c1a0[_0xa585('0x15')]=_0xda3d09;if(_0x446b62[_0xa585('0x29')]['includeAll']){_0x3c9baf[_0xa585('0xbd')]=[{'all':!![]}];}return db[_0xa585('0xa2')]['findAll'](_0x3c9baf);})[_0xa585('0x18')](function(_0x336dc8){_0x15c1a0[_0xa585('0x7d')]=_0x336dc8;return _0x15c1a0;});}})['then'](respondWithFilteredResult(_0x3fb7ba,_0x3c9baf))['catch'](handleError(_0x3fb7ba,null));};exports[_0xa585('0xc2')]=function(_0x57ebe9,_0x529b7f){try{if(!_0x57ebe9['body']['ListId']){throw new Error(_0xa585('0xc3'));}if(!_0x57ebe9[_0xa585('0x87')][_0xa585('0xc4')]){throw new Error('No\x20association\x20keys\x20specified!');}if(!_0x57ebe9[_0xa585('0x87')][_0xa585('0xc5')]){throw new Error(_0xa585('0xc6'));}if(!_0x57ebe9[_0xa585('0x87')]['socket_timestamp']){throw new Error(_0xa585('0xc7'));}var _0x594870=_0x57ebe9[_0xa585('0x87')][_0xa585('0xc4')][_0xa585('0x45')](',');var _0x350b1c=_0x57ebe9[_0xa585('0x87')][_0xa585('0xc5')]['split'](',');if(!_0x594870[_0xa585('0x20')]||!_0x350b1c[_0xa585('0x20')]||_0x594870[_0xa585('0x20')]!==_0x350b1c[_0xa585('0x20')]){throw new Error(_0xa585('0xc8'));}_0x57ebe9[_0xa585('0x87')][_0xa585('0x2d')]=_[_0xa585('0xc9')](_0x594870,_0x350b1c);if(!_0x57ebe9[_0xa585('0x87')][_0xa585('0x2d')][_0xa585('0xb5')]){throw new Error(_0xa585('0xca'));}if(!_0x57ebe9['body']['fields'][_0xa585('0xcb')]){throw new Error('No\x20firstName\x20column\x20specified');}var _0x3818b9=path[_0xa585('0x8c')](config[_0xa585('0xcc')],_0xa585('0xcd'),_0x57ebe9[_0xa585('0xce')][_0xa585('0xcf')]);fs[_0xa585('0xd0')](_0x3818b9,parseInt('0777',0x8));var _0x445499=require(_0xa585('0xd1'))['fork'](path[_0xa585('0x8c')](__dirname,'../../components/import/cm/csv'),[_0x3818b9,_0x57ebe9[_0xa585('0x87')]['binding_keys'],_0x57ebe9[_0xa585('0x87')][_0xa585('0xc5')],_0x57ebe9[_0xa585('0x87')][_0xa585('0x55')],_0x57ebe9[_0xa585('0x87')][_0xa585('0xd2')],_0x57ebe9[_0xa585('0x87')]['duplicates'],_0x57ebe9[_0xa585('0x87')][_0xa585('0xd3')]]);return _0x529b7f[_0xa585('0x11')](0xc8)[_0xa585('0x12')]({'message':_0xa585('0xd4'),'pid':_0x445499[_0xa585('0xd5')]});}catch(_0x243ef2){return _0x529b7f[_0xa585('0x11')](0x1f4)[_0xa585('0xd6')](_0x243ef2);}};exports[_0xa585('0xd7')]=function(_0x15749c,_0x11ede3){var _0x116fe6=fs[_0xa585('0xd8')](_0x15749c[_0xa585('0xce')][_0xa585('0xd9')]);Papa[_0xa585('0xda')](_0x116fe6,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x532a91){return _0x11ede3[_0xa585('0x11')](0xc8)[_0xa585('0x12')]({'file':_0x15749c[_0xa585('0xce')],'fields':_0x532a91[_0xa585('0xdb')][_0xa585('0x2d')]});}});};exports[_0xa585('0xdc')]=function(_0x1665d8,_0x5756d4){return db[_0xa585('0x49')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0xa585('0x72')}})[_0xa585('0x18')](function(_0x194205){var _0xc1f415=![];if(!_0x1665d8[_0xa585('0x87')][_0xa585('0x55')]){throw new Error(_0xa585('0xc3'));}if(!_0x1665d8['body']['binding']['phone']){throw new Error(_0xa585('0xca'));}if(!_0x1665d8['body']['binding']['firstName']){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x1665d8['body'][_0xa585('0xd3')]){throw new Error(_0xa585('0xc7'));}var _0x3eb961=require('child_process')[_0xa585('0xdd')](path[_0xa585('0x8c')](__dirname,_0xa585('0xde')),[_0x1665d8['params']['id'],JSON[_0xa585('0xdf')](_0x1665d8[_0xa585('0x87')]),JSON[_0xa585('0xdf')](_0x194205)]);_0x3eb961['on'](_0xa585('0xe0'),function(){_0xc1f415=!![];return _0x5756d4[_0xa585('0x11')](0xc8)[_0xa585('0x12')]({'message':_0xa585('0xe1'),'pid':_0x3eb961[_0xa585('0xd5')]});});_0x3eb961['on'](_0xa585('0xe2'),function(_0x3e7ddc){if(_0x3e7ddc&&!_0xc1f415){return _0x5756d4[_0xa585('0x11')](0x1f4)[_0xa585('0x12')]({'message':_0xa585('0xe3'),'pid':_0x3eb961[_0xa585('0xd5')]});}});})[_0xa585('0x7e')](handleError(_0x5756d4,null));};exports[_0xa585('0xe4')]=function(_0x1014a8,_0x45b4b3){var _0x48546c=[_0xa585('0xe5'),_0xa585('0xe6'),_0xa585('0xe7'),_0xa585('0xe8'),'fax','whatsapp','voice'];var _0xc04cb4={'offset':0x0,'order':qs[_0xa585('0x30')](_0xa585('0xe9'))},_0x23a573={'count':0x0,'rows':[]};Promise[_0xa585('0x6b')]()[_0xa585('0x18')](function(){if(_0x1014a8[_0xa585('0x29')][_0xa585('0xea')]){if(!_['includes'](_0x48546c,_0x1014a8[_0xa585('0x29')][_0xa585('0xea')][_0xa585('0xeb')]())){throw new Error(_0xa585('0xec'));}_0x48546c=[_0x1014a8[_0xa585('0x29')]['channel']['toLowerCase']()];}if(_0x1014a8['query'][_0xa585('0xed')]){try{var _0x345653=JSON[_0xa585('0xda')](_0x1014a8['query'][_0xa585('0xed')]);if(!moment(_0x345653[_0xa585('0x35')])[_0xa585('0xee')]()){throw new Error(_0xa585('0xef'));}if(!moment(_0x345653['to'])[_0xa585('0xee')]()){throw new Error(_0xa585('0xf0'));}}catch(_0x5e7c95){throw new Error(_0xa585('0xf1'));}}if(!_0x1014a8[_0xa585('0x29')]['hasOwnProperty'](_0xa585('0x2f'))){_0xc04cb4['limit']=qs['limit'](_0x1014a8[_0xa585('0x29')][_0xa585('0x14')]||0xa);_0xc04cb4['offset']=qs[_0xa585('0x16')](_0x1014a8[_0xa585('0x29')]['offset']);}var _0xdfd074=_0x48546c[_0xa585('0x51')](function(_0x598ed0){if(_0x598ed0==='voice'){var _0x159421={'attributes':['id',_0xa585('0xf2'),_0xa585('0x27'),'source',_0xa585('0xf3'),_0xa585('0xf4'),'starttime','endtime',_0xa585('0xf5'),_0xa585('0xf6'),_0xa585('0xf7'),_0xa585('0xf8'),'userSecondDisposition',_0xa585('0xf9'),'UserId'],'where':{'ContactId':_0x1014a8[_0xa585('0x7f')]['id']},'include':[{'model':db[_0xa585('0x49')],'as':_0xa585('0x49'),'attributes':['id',_0xa585('0x1c'),_0xa585('0xfa'),_0xa585('0xfb')]}],'order':[[_0xa585('0xf7'),_0xa585('0x69')]]};if(_0x1014a8[_0xa585('0x29')]['range']){_0x159421['where'][_0xa585('0xf7')]={'$gte':_0x345653[_0xa585('0x35')],'$lte':_0x345653['to']};}return db[_0xa585('0x9d')]['findAndCountAll'](_0x159421)['then'](function(_0x23c2e0){_0x23a573[_0xa585('0x15')]+=_0x23c2e0[_0xa585('0x15')];return _[_0xa585('0x51')](_0x23c2e0[_0xa585('0x7d')],function(_0x361856){var _0xa4747f=_0x361856['get']({'plain':!![]});_0xa4747f[_0xa585('0xea')]=_0x598ed0;if(_0xa4747f['User']){_0xa4747f['User']={'id':_0xa4747f[_0xa585('0x49')]['id'],'name':_0xa4747f['User'][_0xa585('0x1c')],'fullname':_0xa4747f[_0xa585('0x49')][_0xa585('0xfa')],'alias':_0xa4747f[_0xa585('0x49')][_0xa585('0xfb')]};}return _0xa4747f;});});}else{var _0x1e0e43=_[_0xa585('0xfc')](_0x598ed0)+(_0x598ed0===_0xa585('0xe6')?_0xa585('0xfd'):_0xa585('0xfe'));var _0x47ba2a={'attributes':['id',_0xa585('0xff'),'closedAt',_0xa585('0xf7'),_0xa585('0xf6'),_0xa585('0x100'),_0xa585('0x101'),'thirdDisposition','UserId',_0x1e0e43+'Id'],'where':{'ContactId':_0x1014a8[_0xa585('0x7f')]['id']},'include':[{'model':db[_0x1e0e43],'as':_0xa585('0xfe'),'attributes':['id','name',_0xa585('0x102')]},{'model':db[_0xa585('0x49')],'as':'Owner','attributes':['id',_0xa585('0x1c'),_0xa585('0xfa')]},{'model':db[_0xa585('0x43')],'as':_0xa585('0x7c'),'attributes':['id',_0xa585('0x1c'),_0xa585('0x34')],'through':{'attributes':[]}}],'order':[['createdAt',_0xa585('0x69')]]};if(_0x1014a8[_0xa585('0x29')][_0xa585('0xed')]){_0x47ba2a[_0xa585('0x31')][_0xa585('0xf7')]={'$gte':_0x345653[_0xa585('0x35')],'$lte':_0x345653['to']};}switch(_0x598ed0){case _0xa585('0xe6'):_0x47ba2a[_0xa585('0x2c')]['push'](_0xa585('0x103'),_0xa585('0x104'),'customerPort',_0xa585('0x105'),'osName',_0xa585('0x106'),'ratingType',_0xa585('0x107'),_0xa585('0x108'));break;case _0xa585('0xe5'):_0x47ba2a[_0xa585('0x2c')][_0xa585('0x23')](_0xa585('0x109'),_0xa585('0x10a'));break;case _0xa585('0xe8'):_0x47ba2a[_0xa585('0x2c')]['push'](_0xa585('0x10b'),_0xa585('0x10c'));break;}return db[_[_0xa585('0xfc')](_0x598ed0)+_0xa585('0x10d')][_0xa585('0x10e')](_0x47ba2a)[_0xa585('0x18')](function(_0x22ef0b){_0x23a573['count']+=_0x22ef0b[_0xa585('0x15')];return _[_0xa585('0x51')](_0x22ef0b['rows'],function(_0xa00791){var _0xaf4680=_0xa00791[_0xa585('0x89')]({'plain':!![]});_0xaf4680['channel']=_0x598ed0;if(_0xaf4680[_0xa585('0x10f')]){_0xaf4680['Owner']={'id':_0xaf4680['Owner']['id'],'name':_0xaf4680[_0xa585('0x10f')]['name'],'fullname':_0xaf4680['Owner']['fullname']};}return _0xaf4680;});});}});return Promise[_0xa585('0x26')](_0xdfd074);})[_0xa585('0x18')](function(_0x7db6db){return _(_0x7db6db)['flatten']()['sortBy'](_0xa585('0xf7'))[_0xa585('0x110')]()['value']();})[_0xa585('0x18')](function(_0x4ca6e6){_0x23a573['rows']=_0xc04cb4['limit']?_0x4ca6e6[_0xa585('0x111')](_0xc04cb4['offset'],_0xc04cb4[_0xa585('0x16')]+_0xc04cb4[_0xa585('0x14')]):_0x4ca6e6;return _0x23a573;})[_0xa585('0x18')](respondWithFilteredResult(_0x45b4b3,_0xc04cb4))[_0xa585('0x7e')](handleError(_0x45b4b3,null));};
\ No newline at end of file
index 3a9d07e..a7978c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0cd=['hook','exports','events','../../mysqldb','CmContact','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0xb24a3e,_0x4a3594){var _0x4038d7=function(_0x1ea3c3){while(--_0x1ea3c3){_0xb24a3e['push'](_0xb24a3e['shift']());}};_0x4038d7(++_0x4a3594);}(_0xd0cd,0xf2));var _0xdd0c=function(_0x5245bc,_0x55e740){_0x5245bc=_0x5245bc-0x0;var _0x2acb9a=_0xd0cd[_0x5245bc];return _0x2acb9a;};'use strict';var EventEmitter=require(_0xdd0c('0x0'));var CmContact=require(_0xdd0c('0x1'))['db'][_0xdd0c('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents[_0xdd0c('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xdd0c('0x4'),'afterDestroy':_0xdd0c('0x5')};function emitEvent(_0x4bfde8){return function(_0x5b9592,_0x39a999,_0x5e7b42){CmContactEvents[_0xdd0c('0x6')](_0x4bfde8+':'+_0x5b9592['id'],_0x5b9592);CmContactEvents[_0xdd0c('0x6')](_0x4bfde8,_0x5b9592);_0x5e7b42(null);};}for(var e in events){if(events[_0xdd0c('0x7')](e)){var event=events[e];CmContact[_0xdd0c('0x8')](e,emitEvent(event));}}module[_0xdd0c('0x9')]=CmContactEvents;
\ No newline at end of file
+var _0x5544=['setMaxListeners','save','remove','emit','../../mysqldb','CmContact'];(function(_0x4991ad,_0x533fd5){var _0x57e559=function(_0x39070b){while(--_0x39070b){_0x4991ad['push'](_0x4991ad['shift']());}};_0x57e559(++_0x533fd5);}(_0x5544,0xb2));var _0x4554=function(_0x164122,_0xea0886){_0x164122=_0x164122-0x0;var _0x3910b5=_0x5544[_0x164122];return _0x3910b5;};'use strict';var EventEmitter=require('events');var CmContact=require(_0x4554('0x0'))['db'][_0x4554('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x4554('0x2')](0x0);var events={'afterCreate':_0x4554('0x3'),'afterUpdate':'update','afterDestroy':_0x4554('0x4')};function emitEvent(_0x3f0d89){return function(_0x35f610,_0x440b59,_0x2c671d){CmContactEvents[_0x4554('0x5')](_0x3f0d89+':'+_0x35f610['id'],_0x35f610);CmContactEvents[_0x4554('0x5')](_0x3f0d89,_0x35f610);_0x2c671d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module['exports']=CmContactEvents;
\ No newline at end of file
index 605ae3e..d831efa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafc6=['ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','then','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','create','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','dialCheckDuplicateType','CmList','Lists','length','always','outbound','BlackLists','CmHopperBlack','error','cmContact,\x20%s,\x20%s','message','Campaign','findAll','onlyIfOpen','List\x20not\x20found','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','push','all','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','moment','bluebird','path','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','fax','email','FULLTEXT','utf8mb4_unicode_ci','models','get','cmContact','afterCreate','inspect','CmHopper','findOne','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'];(function(_0x288337,_0x1f4876){var _0x104cf1=function(_0x22b84f){while(--_0x22b84f){_0x288337['push'](_0x288337['shift']());}};_0x104cf1(++_0x1f4876);}(_0xafc6,0x180));var _0x6afc=function(_0x1477ef,_0x54a5d6){_0x1477ef=_0x1477ef-0x0;var _0x164acd=_0xafc6[_0x1477ef];return _0x164acd;};'use strict';var _=require(_0x6afc('0x0'));var util=require(_0x6afc('0x1'));var logger=require(_0x6afc('0x2'))(_0x6afc('0x3'));var moment=require(_0x6afc('0x4'));var BPromise=require(_0x6afc('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6afc('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6afc('0x7'));module[_0x6afc('0x8')]=function(_0x461900,_0x31f2c0){return _0x461900[_0x6afc('0x9')](_0x6afc('0xa'),attributes,{'tableName':_0x6afc('0xb'),'paranoid':!![],'indexes':[{'name':_0x6afc('0xc'),'fields':[_0x6afc('0xc')]},{'name':_0x6afc('0xd'),'fields':[_0x6afc('0xe'),_0x6afc('0xf'),_0x6afc('0xc'),'mobile',_0x6afc('0x10'),_0x6afc('0x11')],'type':_0x6afc('0x12')}],'timestamps':!![],'charset':'utf8mb4','collate':_0x6afc('0x13'),'hooks':{'afterCreate':function(_0x16fcc3,_0x457d85,_0x51f8b1){var _0x3f7e75=_0x461900[_0x6afc('0x14')];var _0x3fcd66=_0x16fcc3[_0x6afc('0x15')]({'plain':!![]});function _0x422610(){return function(_0x8d8eaf){logger['error'](_0x6afc('0x16'),_0x6afc('0x17'),util[_0x6afc('0x18')](_0x8d8eaf,{'showHidden':![],'depth':null}));};}var _0x2e6f1b=function(_0x3a5509){return new BPromise(function(_0x3e179b,_0x3beb56){_0x3f7e75[_0x6afc('0x19')][_0x6afc('0x1a')]({'where':{'phone':_0x3fcd66[_0x6afc('0xc')],'VoiceQueueId':_0x3a5509['id']}})['then'](function(_0x1d52fc){if(!_[_0x6afc('0x1b')](_0x1d52fc)){throw new Error(_0x6afc('0x1c')+_0x3fcd66[_0x6afc('0xc')]+_0x6afc('0x1d')+_0x3a5509['id']);}return _0x3f7e75[_0x6afc('0x19')]['create']({'phone':_0x3fcd66['phone'],'ContactId':_0x3fcd66['id'],'ListId':_0x3fcd66[_0x6afc('0x1e')],'priority':_0x3fcd66[_0x6afc('0x1f')]?_0x3fcd66['priority']:0x2,'scheduledat':_0x3fcd66[_0x6afc('0x20')]?_0x3fcd66[_0x6afc('0x20')]:moment()[_0x6afc('0x21')](_0x6afc('0x22')),'callback':_0x3fcd66[_0x6afc('0x23')]?!![]:![],'callbackuniqueid':_0x3fcd66[_0x6afc('0x23')]?_0x3fcd66['callbackUniqueid']:undefined,'callbackat':_0x3fcd66[_0x6afc('0x23')]?moment()[_0x6afc('0x21')](_0x6afc('0x22')):undefined,'VoiceQueueId':_0x3a5509['id']});})[_0x6afc('0x24')](function(_0x47ef1b){_0x3beb56(_0x47ef1b);});});};var _0x20a31b=function(_0xd9e099){return new BPromise(function(_0x151ff4,_0x35551a){_0x3f7e75[_0x6afc('0x19')][_0x6afc('0x1a')]({'where':{'phone':_0x3fcd66['phone'],'VoiceQueueId':_0xd9e099['id']}})[_0x6afc('0x25')](function(_0x4b317b){if(!_[_0x6afc('0x1b')](_0x4b317b)){throw new Error(_0x6afc('0x1c')+_0x3fcd66[_0x6afc('0xc')]+_0x6afc('0x26')+_0xd9e099['id']);}return _0x3f7e75[_0x6afc('0x27')][_0x6afc('0x1a')]({'where':{'calleridnum':_0x3fcd66['phone'],'VoiceQueueId':_0xd9e099['id']}});})[_0x6afc('0x25')](function(_0xc724d4){if(!_['isNil'](_0xc724d4)){throw new Error(_0x6afc('0x28')+_0x3fcd66['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0xd9e099['id']);}return _0x3f7e75['CmHopper'][_0x6afc('0x29')]({'phone':_0x3fcd66[_0x6afc('0xc')],'ContactId':_0x3fcd66['id'],'ListId':_0x3fcd66[_0x6afc('0x1e')],'priority':_0x3fcd66['priority']?_0x3fcd66[_0x6afc('0x1f')]:0x2,'scheduledat':_0x3fcd66[_0x6afc('0x20')]?_0x3fcd66[_0x6afc('0x20')]:moment()[_0x6afc('0x21')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x3fcd66[_0x6afc('0x23')]?!![]:![],'callbackuniqueid':_0x3fcd66['callbackUniqueid']?_0x3fcd66[_0x6afc('0x23')]:undefined,'callbackat':_0x3fcd66[_0x6afc('0x23')]?moment()[_0x6afc('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0xd9e099['id']});})[_0x6afc('0x24')](function(_0x11a79d){_0x35551a(_0x11a79d);});});};function _0x3bebf6(){return function(_0x131a91){logger['error'](_0x6afc('0x16'),'afterCreate',util['inspect'](_0x131a91,{'showHidden':![],'depth':null}));};}var _0x5f2a2f=function(_0x3372e2){return new BPromise(function(_0x2bb19a,_0x5a9211){_0x3f7e75['CmHopper'][_0x6afc('0x1a')]({'where':{'phone':_0x3fcd66[_0x6afc('0xc')],'CampaignId':_0x3372e2['id']}})[_0x6afc('0x25')](function(_0x4a976e){if(!_[_0x6afc('0x1b')](_0x4a976e)){throw new Error(_0x6afc('0x1c')+_0x3fcd66[_0x6afc('0xc')]+_0x6afc('0x2a')+_0x3372e2['id']);}return _0x3f7e75[_0x6afc('0x19')][_0x6afc('0x29')]({'phone':_0x3fcd66['phone'],'ContactId':_0x3fcd66['id'],'ListId':_0x3fcd66[_0x6afc('0x1e')],'priority':_0x3fcd66['priority']?_0x3fcd66[_0x6afc('0x1f')]:0x2,'scheduledat':_0x3fcd66[_0x6afc('0x20')]?_0x3fcd66[_0x6afc('0x20')]:moment()[_0x6afc('0x21')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x3fcd66[_0x6afc('0x23')]?!![]:![],'callbackuniqueid':_0x3fcd66[_0x6afc('0x23')]?_0x3fcd66['callbackUniqueid']:undefined,'callbackat':_0x3fcd66['callbackUniqueid']?moment()['format'](_0x6afc('0x22')):undefined,'CampaignId':_0x3372e2['id']});})['catch'](function(_0x27f54b){_0x5a9211(_0x27f54b);});});};var _0x2af513=function(_0x506fe6){return new BPromise(function(_0x28a13e,_0x59d90a){_0x3f7e75['CmHopper'][_0x6afc('0x1a')]({'where':{'phone':_0x3fcd66[_0x6afc('0xc')],'CampaignId':_0x506fe6['id']}})[_0x6afc('0x25')](function(_0x326d2b){if(!_[_0x6afc('0x1b')](_0x326d2b)){throw new Error(_0x6afc('0x1c')+_0x3fcd66[_0x6afc('0xc')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x506fe6['id']);}return _0x3f7e75[_0x6afc('0x27')][_0x6afc('0x1a')]({'where':{'calleridnum':_0x3fcd66[_0x6afc('0xc')],'CampaignId':_0x506fe6['id']}});})[_0x6afc('0x25')](function(_0x2de47a){if(!_[_0x6afc('0x1b')](_0x2de47a)){throw new Error(_0x6afc('0x28')+_0x3fcd66[_0x6afc('0xc')]+_0x6afc('0x2b')+_0x506fe6['id']);}return _0x3f7e75[_0x6afc('0x19')][_0x6afc('0x29')]({'phone':_0x3fcd66['phone'],'ContactId':_0x3fcd66['id'],'ListId':_0x3fcd66[_0x6afc('0x1e')],'priority':_0x3fcd66[_0x6afc('0x1f')]?_0x3fcd66[_0x6afc('0x1f')]:0x2,'scheduledat':_0x3fcd66[_0x6afc('0x20')]?_0x3fcd66[_0x6afc('0x20')]:moment()['format'](_0x6afc('0x22')),'callback':_0x3fcd66[_0x6afc('0x23')]?!![]:![],'callbackuniqueid':_0x3fcd66[_0x6afc('0x23')]?_0x3fcd66[_0x6afc('0x23')]:undefined,'callbackat':_0x3fcd66[_0x6afc('0x23')]?moment()[_0x6afc('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x506fe6['id']});})[_0x6afc('0x24')](function(_0xe3be6){_0x59d90a(_0xe3be6);});});};if(_0x3fcd66[_0x6afc('0x1e')]){_0x3f7e75[_0x6afc('0x2c')]['findAll']({'where':{'type':'outbound'},'attributes':['id',_0x6afc('0x2d')],'include':[{'model':_0x3f7e75[_0x6afc('0x2e')],'as':_0x6afc('0x2f'),'where':{'id':_0x3fcd66[_0x6afc('0x1e')]}}]})['then'](function(_0x27be97){if(_0x27be97){var _0xbf840c=[];for(var _0x300032=0x0,_0x17cdb1;_0x300032<_0x27be97[_0x6afc('0x30')];_0x300032+=0x1){_0x17cdb1=_0x27be97[_0x300032][_0x6afc('0x15')]({'plain':!![]});switch(_0x17cdb1[_0x6afc('0x2d')]){case _0x6afc('0x31'):_0x20a31b(_0x17cdb1)[_0x6afc('0x24')](_0x422610());break;case'onlyIfOpen':_0x2e6f1b(_0x17cdb1)['catch'](_0x422610());break;default:_0x3f7e75[_0x6afc('0x19')][_0x6afc('0x29')]({'phone':_0x3fcd66[_0x6afc('0xc')],'ContactId':_0x3fcd66['id'],'ListId':_0x3fcd66[_0x6afc('0x1e')],'scheduledat':_0x3fcd66[_0x6afc('0x20')]?_0x3fcd66['scheduledat']:moment()['format'](_0x6afc('0x22')),'priority':_0x3fcd66['priority']?_0x3fcd66['priority']:0x2,'callback':_0x3fcd66[_0x6afc('0x23')]?!![]:![],'callbackuniqueid':_0x3fcd66[_0x6afc('0x23')]?_0x3fcd66[_0x6afc('0x23')]:undefined,'callbackat':_0x3fcd66[_0x6afc('0x23')]?moment()['format'](_0x6afc('0x22')):undefined,'VoiceQueueId':_0x17cdb1['id']})[_0x6afc('0x24')](_0x422610());}}}})[_0x6afc('0x25')](function(){return _0x3f7e75[_0x6afc('0x2c')]['findAll']({'where':{'type':_0x6afc('0x32')},'attributes':['id'],'include':[{'model':_0x3f7e75['CmList'],'as':_0x6afc('0x33'),'where':{'id':_0x3fcd66[_0x6afc('0x1e')]}}]})[_0x6afc('0x25')](function(_0x2462a6){if(_0x2462a6){var _0x8fa86=[];for(var _0x325b58=0x0,_0x5d8bd4;_0x325b58<_0x2462a6[_0x6afc('0x30')];_0x325b58+=0x1){_0x5d8bd4=_0x2462a6[_0x325b58]['get']({'plain':!![]});_0x3f7e75[_0x6afc('0x34')][_0x6afc('0x29')]({'phone':_0x3fcd66[_0x6afc('0xc')],'ContactId':_0x3fcd66['id'],'ListId':_0x3fcd66['ListId'],'VoiceQueueId':_0x5d8bd4['id']})[_0x6afc('0x24')](function(_0x4b0639){logger[_0x6afc('0x35')](_0x6afc('0x36'),_0x6afc('0x17'),_0x4b0639[_0x6afc('0x37')]);});}}});})[_0x6afc('0x25')](function(){return _0x3f7e75[_0x6afc('0x38')][_0x6afc('0x39')]({'attributes':['id',_0x6afc('0x2d')],'include':[{'model':_0x3f7e75[_0x6afc('0x2e')],'as':'Lists','where':{'id':_0x3fcd66[_0x6afc('0x1e')]}}]})[_0x6afc('0x25')](function(_0x530fb1){if(_0x530fb1){var _0x3a2b64=[];for(var _0x1e0051=0x0,_0x316720;_0x1e0051<_0x530fb1[_0x6afc('0x30')];_0x1e0051+=0x1){_0x316720=_0x530fb1[_0x1e0051][_0x6afc('0x15')]({'plain':!![]});switch(_0x316720[_0x6afc('0x2d')]){case _0x6afc('0x31'):_0x2af513(_0x316720)[_0x6afc('0x24')](_0x3bebf6());break;case _0x6afc('0x3a'):_0x5f2a2f(_0x316720)[_0x6afc('0x24')](_0x3bebf6());break;default:_0x3f7e75['CmHopper'][_0x6afc('0x29')]({'phone':_0x3fcd66[_0x6afc('0xc')],'ContactId':_0x3fcd66['id'],'ListId':_0x3fcd66['ListId'],'scheduledat':_0x3fcd66[_0x6afc('0x20')]?_0x3fcd66[_0x6afc('0x20')]:moment()['format'](_0x6afc('0x22')),'priority':_0x3fcd66['priority']?_0x3fcd66[_0x6afc('0x1f')]:0x2,'callback':_0x3fcd66[_0x6afc('0x23')]?!![]:![],'callbackuniqueid':_0x3fcd66[_0x6afc('0x23')]?_0x3fcd66[_0x6afc('0x23')]:undefined,'callbackat':_0x3fcd66[_0x6afc('0x23')]?moment()[_0x6afc('0x21')](_0x6afc('0x22')):undefined,'CampaignId':_0x316720['id']})[_0x6afc('0x24')](_0x3bebf6());}}}});})['then'](function(){return _0x3f7e75[_0x6afc('0x38')][_0x6afc('0x39')]({'attributes':['id'],'include':[{'model':_0x3f7e75[_0x6afc('0x2e')],'as':'BlackLists','where':{'id':_0x3fcd66[_0x6afc('0x1e')]}}]})[_0x6afc('0x25')](function(_0x4358f7){if(_0x4358f7){var _0x309857=[];for(var _0x5dde98=0x0,_0x19334c;_0x5dde98<_0x4358f7['length'];_0x5dde98+=0x1){_0x19334c=_0x4358f7[_0x5dde98][_0x6afc('0x15')]({'plain':!![]});_0x3f7e75[_0x6afc('0x34')][_0x6afc('0x29')]({'phone':_0x3fcd66[_0x6afc('0xc')],'ContactId':_0x3fcd66['id'],'ListId':_0x3fcd66[_0x6afc('0x1e')],'CampaignId':_0x19334c['id']})[_0x6afc('0x24')](function(_0x57ca76){logger['error']('cmContact,\x20%s,\x20%s',_0x6afc('0x17'),_0x57ca76[_0x6afc('0x37')]);});}}});})['then'](function(){_0x51f8b1();})[_0x6afc('0x24')](function(_0x26d2e8){logger[_0x6afc('0x35')]('cmContact,\x20%s,\x20%s','afterCreate',_0x26d2e8['message']);_0x51f8b1(_0x26d2e8);});}else{_0x51f8b1(new Error(_0x6afc('0x3b')));}},'afterDestroy':function(_0x192851,_0x32ec64,_0x41902b){var _0x5cfaba=_0x461900[_0x6afc('0x14')];var _0x1f974f=_0x192851['get']({'plain':!![]});return _0x5cfaba[_0x6afc('0x19')]['findAll']({'raw':!![],'where':{'ListId':_0x1f974f[_0x6afc('0x1e')],'ContactId':_0x1f974f['id']}})['then'](function(_0x500a5f){if(!_[_0x6afc('0x3c')](_0x500a5f)){var _0xa46770=[];for(var _0x10e851=0x0;_0x10e851<_0x500a5f[_0x6afc('0x30')];_0x10e851+=0x1){var _0x6da675=_0x5cfaba[_0x6afc('0x19')][_0x6afc('0x3d')]({'where':{'ListId':_0x500a5f[_0x10e851][_0x6afc('0x1e')],'ContactId':_0x500a5f[_0x10e851][_0x6afc('0x3e')],'VoiceQueueId':_0x500a5f[_0x10e851][_0x6afc('0x3f')],'CampaignId':_0x500a5f[_0x10e851][_0x6afc('0x40')]}});_0xa46770[_0x6afc('0x41')](_0x6da675);}return BPromise[_0x6afc('0x42')](_0xa46770);}})[_0x6afc('0x25')](function(_0x347a6f){logger['info'](_0x6afc('0x43'),util[_0x6afc('0x18')](_0x347a6f,{'showHidden':![],'depth':null}));_0x41902b();})[_0x6afc('0x24')](function(_0x435cb4){logger[_0x6afc('0x35')](_0x6afc('0x44'),util[_0x6afc('0x18')](_0x435cb4,{'showHidden':![],'depth':null}));_0x41902b(_0x435cb4);});}}});};
\ No newline at end of file
+var _0x9c4a=['CmHopperFinal','findOne','cmContact,\x20afterCreate,\x20','ListId','afterCreate','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','outbound','dialCheckDuplicateType','CmList','length','onlyIfOpen','findAll','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','Lists','BlackLists','isEmpty','destroy','ContactId','CampaignId','push','all','info','[CmContact][afterDestroy][Error]','util','api','moment','request-promise','rimraf','../../config/environment','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','fax','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','get','error','cmContact','inspect','CmHopper','then','isNil','create','priority','scheduledat','format','callbackUniqueid','YYYY-MM-DD\x20HH:mm:ss','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'];(function(_0x1a4386,_0x5f0c98){var _0x5ade2a=function(_0xacf3d8){while(--_0xacf3d8){_0x1a4386['push'](_0x1a4386['shift']());}};_0x5ade2a(++_0x5f0c98);}(_0x9c4a,0x1dd));var _0xa9c4=function(_0x32b542,_0x4512fa){_0x32b542=_0x32b542-0x0;var _0x554d54=_0x9c4a[_0x32b542];return _0x554d54;};'use strict';var _=require('lodash');var util=require(_0xa9c4('0x0'));var logger=require('../../config/logger')(_0xa9c4('0x1'));var moment=require(_0xa9c4('0x2'));var BPromise=require('bluebird');var rp=require(_0xa9c4('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa9c4('0x4'));var config=require(_0xa9c4('0x5'));var attributes=require(_0xa9c4('0x6'));module[_0xa9c4('0x7')]=function(_0x44a753,_0x3db179){return _0x44a753[_0xa9c4('0x8')](_0xa9c4('0x9'),attributes,{'tableName':_0xa9c4('0xa'),'paranoid':!![],'indexes':[{'name':_0xa9c4('0xb'),'fields':[_0xa9c4('0xb')]},{'name':_0xa9c4('0xc'),'fields':[_0xa9c4('0xd'),_0xa9c4('0xe'),_0xa9c4('0xb'),_0xa9c4('0xf'),_0xa9c4('0x10'),'email'],'type':_0xa9c4('0x11')}],'timestamps':!![],'charset':_0xa9c4('0x12'),'collate':_0xa9c4('0x13'),'hooks':{'afterCreate':function(_0x3bf6d6,_0x12afe4,_0x438868){var _0x2b6888=_0x44a753['models'];var _0xb6f1b8=_0x3bf6d6[_0xa9c4('0x14')]({'plain':!![]});function _0x230366(){return function(_0x3498e7){logger[_0xa9c4('0x15')](_0xa9c4('0x16'),'afterCreate',util[_0xa9c4('0x17')](_0x3498e7,{'showHidden':![],'depth':null}));};}var _0x19acb7=function(_0x361602){return new BPromise(function(_0x5d4828,_0x2611b3){_0x2b6888[_0xa9c4('0x18')]['findOne']({'where':{'phone':_0xb6f1b8[_0xa9c4('0xb')],'VoiceQueueId':_0x361602['id']}})[_0xa9c4('0x19')](function(_0x5a8e74){if(!_[_0xa9c4('0x1a')](_0x5a8e74)){throw new Error('cmContact,\x20afterCreate\x20'+_0xb6f1b8[_0xa9c4('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x361602['id']);}return _0x2b6888[_0xa9c4('0x18')][_0xa9c4('0x1b')]({'phone':_0xb6f1b8[_0xa9c4('0xb')],'ContactId':_0xb6f1b8['id'],'ListId':_0xb6f1b8['ListId'],'priority':_0xb6f1b8[_0xa9c4('0x1c')]?_0xb6f1b8[_0xa9c4('0x1c')]:0x2,'scheduledat':_0xb6f1b8[_0xa9c4('0x1d')]?_0xb6f1b8[_0xa9c4('0x1d')]:moment()[_0xa9c4('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0xb6f1b8[_0xa9c4('0x1f')]?!![]:![],'callbackuniqueid':_0xb6f1b8[_0xa9c4('0x1f')]?_0xb6f1b8[_0xa9c4('0x1f')]:undefined,'callbackat':_0xb6f1b8[_0xa9c4('0x1f')]?moment()[_0xa9c4('0x1e')](_0xa9c4('0x20')):undefined,'VoiceQueueId':_0x361602['id']});})['catch'](function(_0x393a36){_0x2611b3(_0x393a36);});});};var _0x31fcc5=function(_0x14b0ad){return new BPromise(function(_0x18877b,_0x1e5d12){_0x2b6888[_0xa9c4('0x18')]['findOne']({'where':{'phone':_0xb6f1b8[_0xa9c4('0xb')],'VoiceQueueId':_0x14b0ad['id']}})[_0xa9c4('0x19')](function(_0x580100){if(!_['isNil'](_0x580100)){throw new Error(_0xa9c4('0x21')+_0xb6f1b8[_0xa9c4('0xb')]+_0xa9c4('0x22')+_0x14b0ad['id']);}return _0x2b6888[_0xa9c4('0x23')][_0xa9c4('0x24')]({'where':{'calleridnum':_0xb6f1b8[_0xa9c4('0xb')],'VoiceQueueId':_0x14b0ad['id']}});})[_0xa9c4('0x19')](function(_0x19aea2){if(!_[_0xa9c4('0x1a')](_0x19aea2)){throw new Error(_0xa9c4('0x25')+_0xb6f1b8['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x14b0ad['id']);}return _0x2b6888[_0xa9c4('0x18')]['create']({'phone':_0xb6f1b8['phone'],'ContactId':_0xb6f1b8['id'],'ListId':_0xb6f1b8[_0xa9c4('0x26')],'priority':_0xb6f1b8['priority']?_0xb6f1b8['priority']:0x2,'scheduledat':_0xb6f1b8[_0xa9c4('0x1d')]?_0xb6f1b8[_0xa9c4('0x1d')]:moment()[_0xa9c4('0x1e')](_0xa9c4('0x20')),'callback':_0xb6f1b8[_0xa9c4('0x1f')]?!![]:![],'callbackuniqueid':_0xb6f1b8[_0xa9c4('0x1f')]?_0xb6f1b8[_0xa9c4('0x1f')]:undefined,'callbackat':_0xb6f1b8[_0xa9c4('0x1f')]?moment()['format'](_0xa9c4('0x20')):undefined,'VoiceQueueId':_0x14b0ad['id']});})['catch'](function(_0x556516){_0x1e5d12(_0x556516);});});};function _0x1a63b6(){return function(_0x4fdbe3){logger[_0xa9c4('0x15')](_0xa9c4('0x16'),_0xa9c4('0x27'),util[_0xa9c4('0x17')](_0x4fdbe3,{'showHidden':![],'depth':null}));};}var _0x5245f9=function(_0x11f25d){return new BPromise(function(_0x29216b,_0x458f5d){_0x2b6888[_0xa9c4('0x18')]['findOne']({'where':{'phone':_0xb6f1b8[_0xa9c4('0xb')],'CampaignId':_0x11f25d['id']}})['then'](function(_0x489df4){if(!_[_0xa9c4('0x1a')](_0x489df4)){throw new Error(_0xa9c4('0x21')+_0xb6f1b8[_0xa9c4('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x11f25d['id']);}return _0x2b6888[_0xa9c4('0x18')][_0xa9c4('0x1b')]({'phone':_0xb6f1b8[_0xa9c4('0xb')],'ContactId':_0xb6f1b8['id'],'ListId':_0xb6f1b8[_0xa9c4('0x26')],'priority':_0xb6f1b8[_0xa9c4('0x1c')]?_0xb6f1b8[_0xa9c4('0x1c')]:0x2,'scheduledat':_0xb6f1b8[_0xa9c4('0x1d')]?_0xb6f1b8['scheduledat']:moment()[_0xa9c4('0x1e')](_0xa9c4('0x20')),'callback':_0xb6f1b8[_0xa9c4('0x1f')]?!![]:![],'callbackuniqueid':_0xb6f1b8[_0xa9c4('0x1f')]?_0xb6f1b8[_0xa9c4('0x1f')]:undefined,'callbackat':_0xb6f1b8[_0xa9c4('0x1f')]?moment()['format'](_0xa9c4('0x20')):undefined,'CampaignId':_0x11f25d['id']});})[_0xa9c4('0x28')](function(_0x3749f6){_0x458f5d(_0x3749f6);});});};var _0x3011d1=function(_0x1027be){return new BPromise(function(_0x31b768,_0xfa068d){_0x2b6888[_0xa9c4('0x18')][_0xa9c4('0x24')]({'where':{'phone':_0xb6f1b8[_0xa9c4('0xb')],'CampaignId':_0x1027be['id']}})[_0xa9c4('0x19')](function(_0x36f824){if(!_[_0xa9c4('0x1a')](_0x36f824)){throw new Error(_0xa9c4('0x21')+_0xb6f1b8[_0xa9c4('0xb')]+_0xa9c4('0x29')+_0x1027be['id']);}return _0x2b6888[_0xa9c4('0x23')]['findOne']({'where':{'calleridnum':_0xb6f1b8['phone'],'CampaignId':_0x1027be['id']}});})[_0xa9c4('0x19')](function(_0x5c205f){if(!_[_0xa9c4('0x1a')](_0x5c205f)){throw new Error('cmContact,\x20afterCreate,\x20'+_0xb6f1b8[_0xa9c4('0xb')]+_0xa9c4('0x2a')+_0x1027be['id']);}return _0x2b6888[_0xa9c4('0x18')]['create']({'phone':_0xb6f1b8[_0xa9c4('0xb')],'ContactId':_0xb6f1b8['id'],'ListId':_0xb6f1b8[_0xa9c4('0x26')],'priority':_0xb6f1b8[_0xa9c4('0x1c')]?_0xb6f1b8[_0xa9c4('0x1c')]:0x2,'scheduledat':_0xb6f1b8[_0xa9c4('0x1d')]?_0xb6f1b8['scheduledat']:moment()[_0xa9c4('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0xb6f1b8[_0xa9c4('0x1f')]?!![]:![],'callbackuniqueid':_0xb6f1b8[_0xa9c4('0x1f')]?_0xb6f1b8[_0xa9c4('0x1f')]:undefined,'callbackat':_0xb6f1b8['callbackUniqueid']?moment()[_0xa9c4('0x1e')](_0xa9c4('0x20')):undefined,'CampaignId':_0x1027be['id']});})[_0xa9c4('0x28')](function(_0x5447f8){_0xfa068d(_0x5447f8);});});};if(_0xb6f1b8['ListId']){_0x2b6888[_0xa9c4('0x2b')]['findAll']({'where':{'type':_0xa9c4('0x2c')},'attributes':['id',_0xa9c4('0x2d')],'include':[{'model':_0x2b6888[_0xa9c4('0x2e')],'as':'Lists','where':{'id':_0xb6f1b8[_0xa9c4('0x26')]}}]})['then'](function(_0x4f6a33){if(_0x4f6a33){var _0x2e0f1d=[];for(var _0x899313=0x0,_0x460f1e;_0x899313<_0x4f6a33[_0xa9c4('0x2f')];_0x899313+=0x1){_0x460f1e=_0x4f6a33[_0x899313][_0xa9c4('0x14')]({'plain':!![]});switch(_0x460f1e[_0xa9c4('0x2d')]){case'always':_0x31fcc5(_0x460f1e)[_0xa9c4('0x28')](_0x230366());break;case _0xa9c4('0x30'):_0x19acb7(_0x460f1e)[_0xa9c4('0x28')](_0x230366());break;default:_0x2b6888[_0xa9c4('0x18')][_0xa9c4('0x1b')]({'phone':_0xb6f1b8[_0xa9c4('0xb')],'ContactId':_0xb6f1b8['id'],'ListId':_0xb6f1b8[_0xa9c4('0x26')],'scheduledat':_0xb6f1b8[_0xa9c4('0x1d')]?_0xb6f1b8[_0xa9c4('0x1d')]:moment()[_0xa9c4('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0xb6f1b8[_0xa9c4('0x1c')]?_0xb6f1b8[_0xa9c4('0x1c')]:0x2,'callback':_0xb6f1b8[_0xa9c4('0x1f')]?!![]:![],'callbackuniqueid':_0xb6f1b8[_0xa9c4('0x1f')]?_0xb6f1b8[_0xa9c4('0x1f')]:undefined,'callbackat':_0xb6f1b8[_0xa9c4('0x1f')]?moment()[_0xa9c4('0x1e')](_0xa9c4('0x20')):undefined,'VoiceQueueId':_0x460f1e['id']})['catch'](_0x230366());}}}})[_0xa9c4('0x19')](function(){return _0x2b6888[_0xa9c4('0x2b')][_0xa9c4('0x31')]({'where':{'type':_0xa9c4('0x2c')},'attributes':['id'],'include':[{'model':_0x2b6888['CmList'],'as':'BlackLists','where':{'id':_0xb6f1b8[_0xa9c4('0x26')]}}]})[_0xa9c4('0x19')](function(_0x1e4305){if(_0x1e4305){var _0x1a8040=[];for(var _0x26eb04=0x0,_0x11cea0;_0x26eb04<_0x1e4305[_0xa9c4('0x2f')];_0x26eb04+=0x1){_0x11cea0=_0x1e4305[_0x26eb04][_0xa9c4('0x14')]({'plain':!![]});_0x2b6888[_0xa9c4('0x32')][_0xa9c4('0x1b')]({'phone':_0xb6f1b8['phone'],'ContactId':_0xb6f1b8['id'],'ListId':_0xb6f1b8[_0xa9c4('0x26')],'VoiceQueueId':_0x11cea0['id']})[_0xa9c4('0x28')](function(_0xe3dc7c){logger[_0xa9c4('0x15')](_0xa9c4('0x33'),'afterCreate',_0xe3dc7c[_0xa9c4('0x34')]);});}}});})[_0xa9c4('0x19')](function(){return _0x2b6888[_0xa9c4('0x35')][_0xa9c4('0x31')]({'attributes':['id',_0xa9c4('0x2d')],'include':[{'model':_0x2b6888[_0xa9c4('0x2e')],'as':_0xa9c4('0x36'),'where':{'id':_0xb6f1b8[_0xa9c4('0x26')]}}]})[_0xa9c4('0x19')](function(_0x2e1522){if(_0x2e1522){var _0x3570b7=[];for(var _0x37d717=0x0,_0x45d5bc;_0x37d717<_0x2e1522[_0xa9c4('0x2f')];_0x37d717+=0x1){_0x45d5bc=_0x2e1522[_0x37d717][_0xa9c4('0x14')]({'plain':!![]});switch(_0x45d5bc['dialCheckDuplicateType']){case'always':_0x3011d1(_0x45d5bc)[_0xa9c4('0x28')](_0x1a63b6());break;case'onlyIfOpen':_0x5245f9(_0x45d5bc)[_0xa9c4('0x28')](_0x1a63b6());break;default:_0x2b6888['CmHopper'][_0xa9c4('0x1b')]({'phone':_0xb6f1b8[_0xa9c4('0xb')],'ContactId':_0xb6f1b8['id'],'ListId':_0xb6f1b8['ListId'],'scheduledat':_0xb6f1b8[_0xa9c4('0x1d')]?_0xb6f1b8[_0xa9c4('0x1d')]:moment()[_0xa9c4('0x1e')](_0xa9c4('0x20')),'priority':_0xb6f1b8[_0xa9c4('0x1c')]?_0xb6f1b8[_0xa9c4('0x1c')]:0x2,'callback':_0xb6f1b8[_0xa9c4('0x1f')]?!![]:![],'callbackuniqueid':_0xb6f1b8['callbackUniqueid']?_0xb6f1b8[_0xa9c4('0x1f')]:undefined,'callbackat':_0xb6f1b8[_0xa9c4('0x1f')]?moment()[_0xa9c4('0x1e')](_0xa9c4('0x20')):undefined,'CampaignId':_0x45d5bc['id']})['catch'](_0x1a63b6());}}}});})[_0xa9c4('0x19')](function(){return _0x2b6888[_0xa9c4('0x35')][_0xa9c4('0x31')]({'attributes':['id'],'include':[{'model':_0x2b6888[_0xa9c4('0x2e')],'as':_0xa9c4('0x37'),'where':{'id':_0xb6f1b8[_0xa9c4('0x26')]}}]})[_0xa9c4('0x19')](function(_0x50ee0a){if(_0x50ee0a){var _0x390630=[];for(var _0x5ccee9=0x0,_0x170533;_0x5ccee9<_0x50ee0a[_0xa9c4('0x2f')];_0x5ccee9+=0x1){_0x170533=_0x50ee0a[_0x5ccee9][_0xa9c4('0x14')]({'plain':!![]});_0x2b6888['CmHopperBlack']['create']({'phone':_0xb6f1b8['phone'],'ContactId':_0xb6f1b8['id'],'ListId':_0xb6f1b8['ListId'],'CampaignId':_0x170533['id']})[_0xa9c4('0x28')](function(_0x1b0838){logger['error']('cmContact,\x20%s,\x20%s',_0xa9c4('0x27'),_0x1b0838[_0xa9c4('0x34')]);});}}});})[_0xa9c4('0x19')](function(){_0x438868();})[_0xa9c4('0x28')](function(_0x3dd6d3){logger[_0xa9c4('0x15')]('cmContact,\x20%s,\x20%s',_0xa9c4('0x27'),_0x3dd6d3[_0xa9c4('0x34')]);_0x438868(_0x3dd6d3);});}else{_0x438868(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x104fc6,_0x239299,_0x2a192a){var _0x265304=_0x44a753['models'];var _0x897f6b=_0x104fc6[_0xa9c4('0x14')]({'plain':!![]});return _0x265304[_0xa9c4('0x18')][_0xa9c4('0x31')]({'raw':!![],'where':{'ListId':_0x897f6b['ListId'],'ContactId':_0x897f6b['id']}})[_0xa9c4('0x19')](function(_0x318de0){if(!_[_0xa9c4('0x38')](_0x318de0)){var _0x255276=[];for(var _0x57cf66=0x0;_0x57cf66<_0x318de0[_0xa9c4('0x2f')];_0x57cf66+=0x1){var _0x12cd71=_0x265304[_0xa9c4('0x18')][_0xa9c4('0x39')]({'where':{'ListId':_0x318de0[_0x57cf66]['ListId'],'ContactId':_0x318de0[_0x57cf66][_0xa9c4('0x3a')],'VoiceQueueId':_0x318de0[_0x57cf66]['VoiceQueueId'],'CampaignId':_0x318de0[_0x57cf66][_0xa9c4('0x3b')]}});_0x255276[_0xa9c4('0x3c')](_0x12cd71);}return BPromise[_0xa9c4('0x3d')](_0x255276);}})[_0xa9c4('0x19')](function(_0x1e7bf5){logger[_0xa9c4('0x3e')]('[CmContact][afterDestroy][Succesfull]',util[_0xa9c4('0x17')](_0x1e7bf5,{'showHidden':![],'depth':null}));_0x2a192a();})[_0xa9c4('0x28')](function(_0x502d8d){logger[_0xa9c4('0x15')](_0xa9c4('0x3f'),util[_0xa9c4('0x17')](_0x502d8d,{'showHidden':![],'depth':null}));_0x2a192a(_0x502d8d);});}}});};
\ No newline at end of file
index 18818e9..c945a63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60ac=['sequelize','moment','randomstring','ioredis','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','GetCmContact','CmContact','findAll','options','where','include','map','model','attributes','catch','CreateCmContact','body','keys','length','startsWith','cf_','update','cm_contacts','set','toString'];(function(_0x472230,_0x54e89f){var _0x3150b6=function(_0x314972){while(--_0x314972){_0x472230['push'](_0x472230['shift']());}};_0x3150b6(++_0x54e89f);}(_0x60ac,0xb1));var _0xc60a=function(_0x274f0a,_0x2d010d){_0x274f0a=_0x274f0a-0x0;var _0x2adadc=_0x60ac[_0x274f0a];return _0x2adadc;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc60a('0x0'));var BPromise=require('bluebird');var rs=require(_0xc60a('0x1'));var fs=require('fs');var Redis=require(_0xc60a('0x2'));var squel=require('squel');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xc60a('0x3'));var jayson=require(_0xc60a('0x4'));var client=jayson[_0xc60a('0x5')][_0xc60a('0x6')]({'port':0x232a});config[_0xc60a('0x7')]=_['defaults'](config[_0xc60a('0x7')],{'host':_0xc60a('0x8'),'port':0x18eb});var socket=require(_0xc60a('0x9'))(new Redis(config['redis']));require(_0xc60a('0xa'))[_0xc60a('0xb')](socket);function respondWithRpcPromise(_0x514409,_0x58652d,_0x53ddf8){return new BPromise(function(_0x42ef22,_0x4f8579){return client[_0xc60a('0xc')](_0x514409,_0x53ddf8)[_0xc60a('0xd')](function(_0x2cdf8b){logger[_0xc60a('0xe')](_0xc60a('0xf'),_0x58652d,_0xc60a('0x10'));logger[_0xc60a('0x11')]('CmContact,\x20%s,\x20%s,\x20%s',_0x58652d,_0xc60a('0x10'),JSON[_0xc60a('0x12')](_0x2cdf8b));if(_0x2cdf8b[_0xc60a('0x13')]){if(_0x2cdf8b[_0xc60a('0x13')][_0xc60a('0x14')]===0x1f4){logger[_0xc60a('0x13')](_0xc60a('0xf'),_0x58652d,_0x2cdf8b[_0xc60a('0x13')][_0xc60a('0x15')]);return _0x4f8579(_0x2cdf8b['error'][_0xc60a('0x15')]);}logger[_0xc60a('0x13')]('CmContact,\x20%s,\x20%s',_0x58652d,_0x2cdf8b['error'][_0xc60a('0x15')]);return _0x42ef22(_0x2cdf8b[_0xc60a('0x13')][_0xc60a('0x15')]);}else{logger[_0xc60a('0xe')](_0xc60a('0xf'),_0x58652d,_0xc60a('0x10'));_0x42ef22(_0x2cdf8b[_0xc60a('0x16')][_0xc60a('0x15')]);}})['catch'](function(_0x4a1192){logger[_0xc60a('0x13')](_0xc60a('0xf'),_0x58652d,_0x4a1192);_0x4f8579(_0x4a1192);});});}exports[_0xc60a('0x17')]=function(_0x2ab930){var _0x16d727=this;return new Promise(function(_0x4a5c57,_0x44f921){return db[_0xc60a('0x18')][_0xc60a('0x19')]({'raw':_0x2ab930[_0xc60a('0x1a')]?_0x2ab930[_0xc60a('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x2ab930[_0xc60a('0x1a')]?_0x2ab930['options'][_0xc60a('0x1b')]||null:null,'attributes':_0x2ab930[_0xc60a('0x1a')]?_0x2ab930[_0xc60a('0x1a')]['attributes']||null:null,'limit':_0x2ab930[_0xc60a('0x1a')]?_0x2ab930[_0xc60a('0x1a')]['limit']||null:null,'include':_0x2ab930[_0xc60a('0x1a')]?_0x2ab930[_0xc60a('0x1a')][_0xc60a('0x1c')]?_[_0xc60a('0x1d')](_0x2ab930[_0xc60a('0x1a')][_0xc60a('0x1c')],function(_0x4c9eaf){return{'model':db[_0x4c9eaf[_0xc60a('0x1e')]],'as':_0x4c9eaf['as'],'attributes':_0x4c9eaf['attributes'],'include':_0x4c9eaf[_0xc60a('0x1c')]?_[_0xc60a('0x1d')](_0x4c9eaf[_0xc60a('0x1c')],function(_0x27355f){return{'model':db[_0x27355f[_0xc60a('0x1e')]],'as':_0x27355f['as'],'attributes':_0x27355f[_0xc60a('0x1f')],'include':_0x27355f[_0xc60a('0x1c')]?_[_0xc60a('0x1d')](_0x27355f[_0xc60a('0x1c')],function(_0x411c9f){return{'model':db[_0x411c9f['model']],'as':_0x411c9f['as'],'attributes':_0x411c9f[_0xc60a('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xc60a('0xd')](function(_0x4c8beb){logger[_0xc60a('0xe')](_0xc60a('0x17'),_0x2ab930);logger[_0xc60a('0x11')](_0xc60a('0x17'),_0x2ab930,JSON['stringify'](_0x4c8beb));_0x4a5c57(_0x4c8beb);})[_0xc60a('0x20')](function(_0x3d679b){logger[_0xc60a('0x13')]('GetCmContact',_0x3d679b[_0xc60a('0x15')],_0x2ab930);_0x44f921(_0x16d727[_0xc60a('0x13')](0x1f4,_0x3d679b[_0xc60a('0x15')]));});});};exports[_0xc60a('0x21')]=function(_0x20dd0e){var _0x5eb995=this;return new Promise(function(_0x95176c,_0x800ee4){return db[_0xc60a('0x18')]['create'](_0x20dd0e[_0xc60a('0x22')],{'raw':_0x20dd0e[_0xc60a('0x1a')]?_0x20dd0e[_0xc60a('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0xc60a('0xd')](function(_0x1216a0){var _0x566a31;for(var _0x2b83c3=0x0;_0x2b83c3<Object[_0xc60a('0x23')](_0x20dd0e['body'])[_0xc60a('0x24')];_0x2b83c3++){var _0x47f460=Object[_0xc60a('0x23')](_0x20dd0e[_0xc60a('0x22')])[_0x2b83c3];if(_0x47f460[_0xc60a('0x25')](_0xc60a('0x26'))){_0x566a31=squel[_0xc60a('0x27')]()['table'](_0xc60a('0x28'))[_0xc60a('0x29')](_0x47f460,_0x20dd0e[_0xc60a('0x22')][_0x47f460])[_0xc60a('0x1b')]('id\x20=\x20?',_0x1216a0['id'])[_0xc60a('0x2a')]();break;}}if(!_0x566a31)return _0x1216a0;return db[_0xc60a('0x2b')]['query'](_0x566a31)[_0xc60a('0xd')](function(){return _0x1216a0;});})[_0xc60a('0xd')](function(_0x8de16a){logger[_0xc60a('0xe')](_0xc60a('0x21'),_0x20dd0e);logger[_0xc60a('0x11')](_0xc60a('0x21'),_0x20dd0e,JSON[_0xc60a('0x12')](_0x8de16a));_0x95176c(_0x8de16a);})[_0xc60a('0x20')](function(_0x23f32c){logger[_0xc60a('0x13')](_0xc60a('0x21'),_0x23f32c[_0xc60a('0x15')],_0x20dd0e);_0x800ee4(_0x5eb995[_0xc60a('0x13')](0x1f4,_0x23f32c[_0xc60a('0x15')]));});});};
\ No newline at end of file
+var _0x0ed8=['findAll','options','raw','where','attributes','limit','include','model','GetCmContact','debug','catch','CreateCmContact','body','keys','length','startsWith','cf_','update','table','cm_contacts','set','id\x20=\x20?','toString','sequelize','query','lodash','util','moment','bluebird','squel','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','request','then','info','request\x20sent','CmContact,\x20%s,\x20%s,\x20%s','stringify','error','code','CmContact,\x20%s,\x20%s','message','result','CmContact'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0ed8,0xed));var _0x80ed=function(_0x55c2fc,_0x10d579){_0x55c2fc=_0x55c2fc-0x0;var _0x16ce8e=_0x0ed8[_0x55c2fc];return _0x16ce8e;};'use strict';var _=require(_0x80ed('0x0'));var util=require(_0x80ed('0x1'));var moment=require(_0x80ed('0x2'));var BPromise=require(_0x80ed('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var squel=require(_0x80ed('0x4'));var db=require(_0x80ed('0x5'))['db'];var utils=require(_0x80ed('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x80ed('0x7'));var jayson=require(_0x80ed('0x8'));var client=jayson[_0x80ed('0x9')][_0x80ed('0xa')]({'port':0x232a});config[_0x80ed('0xb')]=_[_0x80ed('0xc')](config['redis'],{'host':_0x80ed('0xd'),'port':0x18eb});var socket=require(_0x80ed('0xe'))(new Redis(config[_0x80ed('0xb')]));require(_0x80ed('0xf'))['register'](socket);function respondWithRpcPromise(_0x5585ba,_0x1d75b5,_0x5cf006){return new BPromise(function(_0x53745f,_0xcd83ae){return client[_0x80ed('0x10')](_0x5585ba,_0x5cf006)[_0x80ed('0x11')](function(_0x1569ea){logger[_0x80ed('0x12')]('CmContact,\x20%s,\x20%s',_0x1d75b5,_0x80ed('0x13'));logger['debug'](_0x80ed('0x14'),_0x1d75b5,_0x80ed('0x13'),JSON[_0x80ed('0x15')](_0x1569ea));if(_0x1569ea[_0x80ed('0x16')]){if(_0x1569ea['error'][_0x80ed('0x17')]===0x1f4){logger['error'](_0x80ed('0x18'),_0x1d75b5,_0x1569ea[_0x80ed('0x16')][_0x80ed('0x19')]);return _0xcd83ae(_0x1569ea[_0x80ed('0x16')][_0x80ed('0x19')]);}logger[_0x80ed('0x16')](_0x80ed('0x18'),_0x1d75b5,_0x1569ea['error'][_0x80ed('0x19')]);return _0x53745f(_0x1569ea[_0x80ed('0x16')][_0x80ed('0x19')]);}else{logger[_0x80ed('0x12')](_0x80ed('0x18'),_0x1d75b5,'request\x20sent');_0x53745f(_0x1569ea[_0x80ed('0x1a')][_0x80ed('0x19')]);}})['catch'](function(_0x5937ce){logger[_0x80ed('0x16')](_0x80ed('0x18'),_0x1d75b5,_0x5937ce);_0xcd83ae(_0x5937ce);});});}exports['GetCmContact']=function(_0x16befa){var _0x1aa454=this;return new Promise(function(_0x2eafed,_0x357a2b){return db[_0x80ed('0x1b')][_0x80ed('0x1c')]({'raw':_0x16befa[_0x80ed('0x1d')]?_0x16befa[_0x80ed('0x1d')][_0x80ed('0x1e')]===undefined?!![]:![]:!![],'where':_0x16befa['options']?_0x16befa['options'][_0x80ed('0x1f')]||null:null,'attributes':_0x16befa['options']?_0x16befa['options'][_0x80ed('0x20')]||null:null,'limit':_0x16befa['options']?_0x16befa[_0x80ed('0x1d')][_0x80ed('0x21')]||null:null,'include':_0x16befa[_0x80ed('0x1d')]?_0x16befa['options']['include']?_['map'](_0x16befa[_0x80ed('0x1d')][_0x80ed('0x22')],function(_0x207c30){return{'model':db[_0x207c30[_0x80ed('0x23')]],'as':_0x207c30['as'],'attributes':_0x207c30[_0x80ed('0x20')],'include':_0x207c30[_0x80ed('0x22')]?_['map'](_0x207c30['include'],function(_0x20513b){return{'model':db[_0x20513b['model']],'as':_0x20513b['as'],'attributes':_0x20513b[_0x80ed('0x20')],'include':_0x20513b['include']?_['map'](_0x20513b[_0x80ed('0x22')],function(_0x25285a){return{'model':db[_0x25285a['model']],'as':_0x25285a['as'],'attributes':_0x25285a[_0x80ed('0x20')]};}):[]};}):[]};}):[]:[]})[_0x80ed('0x11')](function(_0x210b85){logger[_0x80ed('0x12')](_0x80ed('0x24'),_0x16befa);logger[_0x80ed('0x25')](_0x80ed('0x24'),_0x16befa,JSON[_0x80ed('0x15')](_0x210b85));_0x2eafed(_0x210b85);})[_0x80ed('0x26')](function(_0x162f5e){logger['error'](_0x80ed('0x24'),_0x162f5e[_0x80ed('0x19')],_0x16befa);_0x357a2b(_0x1aa454['error'](0x1f4,_0x162f5e['message']));});});};exports[_0x80ed('0x27')]=function(_0x4b6389){var _0x12ea1f=this;return new Promise(function(_0xc067c2,_0x4653e0){return db[_0x80ed('0x1b')]['create'](_0x4b6389[_0x80ed('0x28')],{'raw':_0x4b6389[_0x80ed('0x1d')]?_0x4b6389[_0x80ed('0x1d')][_0x80ed('0x1e')]===undefined?!![]:![]:!![]})[_0x80ed('0x11')](function(_0x5cec0a){var _0x396d06;for(var _0x484cb3=0x0;_0x484cb3<Object[_0x80ed('0x29')](_0x4b6389[_0x80ed('0x28')])[_0x80ed('0x2a')];_0x484cb3++){var _0x131961=Object[_0x80ed('0x29')](_0x4b6389[_0x80ed('0x28')])[_0x484cb3];if(_0x131961[_0x80ed('0x2b')](_0x80ed('0x2c'))){_0x396d06=squel[_0x80ed('0x2d')]()[_0x80ed('0x2e')](_0x80ed('0x2f'))[_0x80ed('0x30')](_0x131961,_0x4b6389[_0x80ed('0x28')][_0x131961])[_0x80ed('0x1f')](_0x80ed('0x31'),_0x5cec0a['id'])[_0x80ed('0x32')]();break;}}if(!_0x396d06)return _0x5cec0a;return db[_0x80ed('0x33')][_0x80ed('0x34')](_0x396d06)[_0x80ed('0x11')](function(){return _0x5cec0a;});})[_0x80ed('0x11')](function(_0x3fe27a){logger[_0x80ed('0x12')](_0x80ed('0x27'),_0x4b6389);logger['debug'](_0x80ed('0x27'),_0x4b6389,JSON[_0x80ed('0x15')](_0x3fe27a));_0xc067c2(_0x3fe27a);})[_0x80ed('0x26')](function(_0x143ca5){logger[_0x80ed('0x16')]('CreateCmContact',_0x143ca5['message'],_0x4b6389);_0x4653e0(_0x12ea1f[_0x80ed('0x16')](0x1f4,_0x143ca5[_0x80ed('0x19')]));});});};
\ No newline at end of file
index 11fd3d5..99f6c8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xa9e0[_0x2a6809];return _0x11c371;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index b42f913..1020240 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1df=['file','uploadCsv','%s-%s%s','now','/upload','upload','import','put','/:id','update','delete','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','isAuthenticated','index','describe','show','/:id/tags','getTags','getHoppers','getHopperHistories','/:id/hopper_finals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','/merge','merge','create','/create_many','bulkCreate','setTags','diskStorage','join','root','server/files/tmp','originalname','format','basename','extname','/csv','single'];(function(_0x4ec028,_0x3583b4){var _0x2ad670=function(_0x381986){while(--_0x381986){_0x4ec028['push'](_0x4ec028['shift']());}};_0x2ad670(++_0x3583b4);}(_0xc1df,0x1df));var _0xfc1d=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xc1df[_0x42cae2];return _0x5f256f;};'use strict';var multer=require('multer');var util=require(_0xfc1d('0x0'));var path=require(_0xfc1d('0x1'));var timeout=require(_0xfc1d('0x2'));var express=require(_0xfc1d('0x3'));var router=express[_0xfc1d('0x4')]();var fs_extra=require(_0xfc1d('0x5'));var auth=require(_0xfc1d('0x6'));var interaction=require(_0xfc1d('0x7'));var config=require(_0xfc1d('0x8'));var controller=require(_0xfc1d('0x9'));router[_0xfc1d('0xa')]('/',auth[_0xfc1d('0xb')](),controller[_0xfc1d('0xc')]);router['get']('/describe',auth[_0xfc1d('0xb')](),controller[_0xfc1d('0xd')]);router[_0xfc1d('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xfc1d('0xe')]);router[_0xfc1d('0xa')](_0xfc1d('0xf'),auth['isAuthenticated'](),controller[_0xfc1d('0x10')]);router['get']('/:id/hoppers',auth[_0xfc1d('0xb')](),controller[_0xfc1d('0x11')]);router[_0xfc1d('0xa')]('/:id/hopper_histories',auth[_0xfc1d('0xb')](),controller[_0xfc1d('0x12')]);router[_0xfc1d('0xa')](_0xfc1d('0x13'),auth[_0xfc1d('0xb')](),controller['getHopperFinals']);router['get'](_0xfc1d('0x14'),auth[_0xfc1d('0xb')](),controller[_0xfc1d('0x15')]);router[_0xfc1d('0xa')](_0xfc1d('0x16'),auth[_0xfc1d('0xb')](),controller[_0xfc1d('0x17')]);router[_0xfc1d('0x18')](_0xfc1d('0x19'),auth[_0xfc1d('0xb')](),controller[_0xfc1d('0x1a')]);router[_0xfc1d('0x18')]('/',auth[_0xfc1d('0xb')](),controller[_0xfc1d('0x1b')]);router[_0xfc1d('0x18')](_0xfc1d('0x1c'),auth['isAuthenticated'](),controller[_0xfc1d('0x1d')]);router['post'](_0xfc1d('0xf'),auth[_0xfc1d('0xb')](),controller[_0xfc1d('0x1e')]);var upload=multer({'storage':multer[_0xfc1d('0x1f')]({'destination':function(_0x64cbb6,_0xc84605,_0xea96fd){_0xea96fd(null,path[_0xfc1d('0x20')](config[_0xfc1d('0x21')],_0xfc1d('0x22')));},'filename':function(_0x168b26,_0x3a68d8,_0x421eb5){_0x3a68d8['originalname']=_0x3a68d8[_0xfc1d('0x23')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x421eb5(null,util[_0xfc1d('0x24')]('%s-%s%s',path[_0xfc1d('0x25')](_0x3a68d8[_0xfc1d('0x23')],path[_0xfc1d('0x26')](_0x3a68d8[_0xfc1d('0x23')])),Date['now'](),path[_0xfc1d('0x26')](_0x3a68d8[_0xfc1d('0x23')])));}})});router[_0xfc1d('0x18')](_0xfc1d('0x27'),upload[_0xfc1d('0x28')](_0xfc1d('0x29')),controller[_0xfc1d('0x2a')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x202df1,_0x1520f6,_0x37a0f3){_0x37a0f3(null,path[_0xfc1d('0x20')](config['root'],_0xfc1d('0x22')));},'filename':function(_0x570f78,_0x44fb69,_0x4f2a2c){_0x44fb69[_0xfc1d('0x23')]=_0x44fb69[_0xfc1d('0x23')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4f2a2c(null,util['format'](_0xfc1d('0x2b'),path[_0xfc1d('0x25')](_0x44fb69[_0xfc1d('0x23')],path[_0xfc1d('0x26')](_0x44fb69[_0xfc1d('0x23')])),Date[_0xfc1d('0x2c')](),path['extname'](_0x44fb69[_0xfc1d('0x23')])));}})});router[_0xfc1d('0x18')](_0xfc1d('0x2d'),upload[_0xfc1d('0x28')](_0xfc1d('0x29')),controller[_0xfc1d('0x2e')]);router[_0xfc1d('0x18')]('/upload/:id',auth['isAuthenticated'](),controller[_0xfc1d('0x2f')]);router[_0xfc1d('0x30')](_0xfc1d('0x31'),auth[_0xfc1d('0xb')](),controller[_0xfc1d('0x32')]);router[_0xfc1d('0x33')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xa539=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','/describe','describe','/:id','isAuthenticated','/:id/tags','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperFinals','getJscriptySessions','/:id/journey','post','/merge','merge','/create_many','bulkCreate','setTags','diskStorage','join','root','originalname','replace','format','%s-%s%s','basename','extname','now','single','file','server/files/tmp','/upload','import'];(function(_0x1f9452,_0x132e4f){var _0x5ad046=function(_0x3af9a0){while(--_0x3af9a0){_0x1f9452['push'](_0x1f9452['shift']());}};_0x5ad046(++_0x132e4f);}(_0xa539,0x1d1));var _0x9a53=function(_0xdb0d1d,_0x3f09d0){_0xdb0d1d=_0xdb0d1d-0x0;var _0x3030f5=_0xa539[_0xdb0d1d];return _0x3030f5;};'use strict';var multer=require(_0x9a53('0x0'));var util=require(_0x9a53('0x1'));var path=require(_0x9a53('0x2'));var timeout=require(_0x9a53('0x3'));var express=require(_0x9a53('0x4'));var router=express['Router']();var fs_extra=require(_0x9a53('0x5'));var auth=require(_0x9a53('0x6'));var interaction=require(_0x9a53('0x7'));var config=require('../../config/environment');var controller=require('./cmContact.controller');router[_0x9a53('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x9a53('0x8')](_0x9a53('0x9'),auth['isAuthenticated'](),controller[_0x9a53('0xa')]);router[_0x9a53('0x8')](_0x9a53('0xb'),auth[_0x9a53('0xc')](),controller['show']);router[_0x9a53('0x8')](_0x9a53('0xd'),auth[_0x9a53('0xc')](),controller['getTags']);router[_0x9a53('0x8')](_0x9a53('0xe'),auth[_0x9a53('0xc')](),controller[_0x9a53('0xf')]);router[_0x9a53('0x8')](_0x9a53('0x10'),auth[_0x9a53('0xc')](),controller['getHopperHistories']);router[_0x9a53('0x8')]('/:id/hopper_finals',auth[_0x9a53('0xc')](),controller[_0x9a53('0x11')]);router['get']('/:id/jscripty_sessions',auth[_0x9a53('0xc')](),controller[_0x9a53('0x12')]);router[_0x9a53('0x8')](_0x9a53('0x13'),auth[_0x9a53('0xc')](),controller['getJourney']);router[_0x9a53('0x14')](_0x9a53('0x15'),auth[_0x9a53('0xc')](),controller[_0x9a53('0x16')]);router[_0x9a53('0x14')]('/',auth[_0x9a53('0xc')](),controller['create']);router['post'](_0x9a53('0x17'),auth['isAuthenticated'](),controller[_0x9a53('0x18')]);router[_0x9a53('0x14')]('/:id/tags',auth[_0x9a53('0xc')](),controller[_0x9a53('0x19')]);var upload=multer({'storage':multer[_0x9a53('0x1a')]({'destination':function(_0x413672,_0x628025,_0x190f3b){_0x190f3b(null,path[_0x9a53('0x1b')](config[_0x9a53('0x1c')],'server/files/tmp'));},'filename':function(_0x297880,_0x2a324f,_0x36e80d){_0x2a324f[_0x9a53('0x1d')]=_0x2a324f[_0x9a53('0x1d')][_0x9a53('0x1e')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x36e80d(null,util[_0x9a53('0x1f')](_0x9a53('0x20'),path[_0x9a53('0x21')](_0x2a324f[_0x9a53('0x1d')],path[_0x9a53('0x22')](_0x2a324f[_0x9a53('0x1d')])),Date[_0x9a53('0x23')](),path[_0x9a53('0x22')](_0x2a324f[_0x9a53('0x1d')])));}})});router[_0x9a53('0x14')]('/csv',upload[_0x9a53('0x24')](_0x9a53('0x25')),controller['uploadCsv']);var upload=multer({'storage':multer[_0x9a53('0x1a')]({'destination':function(_0x160fd8,_0x5ed63e,_0x4a071d){_0x4a071d(null,path[_0x9a53('0x1b')](config[_0x9a53('0x1c')],_0x9a53('0x26')));},'filename':function(_0x30ccce,_0x25ace1,_0x3f95f4){_0x25ace1[_0x9a53('0x1d')]=_0x25ace1['originalname'][_0x9a53('0x1e')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3f95f4(null,util[_0x9a53('0x1f')]('%s-%s%s',path[_0x9a53('0x21')](_0x25ace1['originalname'],path[_0x9a53('0x22')](_0x25ace1[_0x9a53('0x1d')])),Date[_0x9a53('0x23')](),path['extname'](_0x25ace1[_0x9a53('0x1d')])));}})});router['post'](_0x9a53('0x27'),upload[_0x9a53('0x24')]('file'),controller['upload']);router[_0x9a53('0x14')]('/upload/:id',auth[_0x9a53('0xc')](),controller[_0x9a53('0x28')]);router[_0x9a53('0x29')](_0x9a53('0xb'),auth['isAuthenticated'](),controller[_0x9a53('0x2a')]);router[_0x9a53('0x2b')]('/:id',auth[_0x9a53('0xc')](),controller[_0x9a53('0x2c')]);module[_0x9a53('0x2d')]=router;
\ No newline at end of file
index 4b003e6..6b7db04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b1b=['setDataValue','name','STRING','TEXT','long','parse','values','isArray','stringify','BOOLEAN','ENUM','sequelize','lodash','getDataValue','alias'];(function(_0x40a740,_0x5e1944){var _0x2b5bbb=function(_0x2b3bed){while(--_0x2b3bed){_0x40a740['push'](_0x40a740['shift']());}};_0x2b5bbb(++_0x5e1944);}(_0x4b1b,0x92));var _0xb4b1=function(_0x454f6c,_0x5c1d65){_0x454f6c=_0x454f6c-0x0;var _0xdbb6d=_0x4b1b[_0x454f6c];return _0xdbb6d;};'use strict';var Sequelize=require(_0xb4b1('0x0'));var _=require(_0xb4b1('0x1'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x57ad43){return this[_0xb4b1('0x2')](_0xb4b1('0x3'));}},'alias':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x25b46a){this[_0xb4b1('0x4')](_0xb4b1('0x3'),_0x25b46a?_0x25b46a:this[_0xb4b1('0x2')](_0xb4b1('0x5')));}},'type':{'type':Sequelize[_0xb4b1('0x6')],'allowNull':![]},'values':{'type':Sequelize[_0xb4b1('0x7')](_0xb4b1('0x8')),'get':function(){if(this['getDataValue']('type')==='select'){return JSON[_0xb4b1('0x9')](this[_0xb4b1('0x2')]('values'));}else{return this[_0xb4b1('0x2')](_0xb4b1('0xa'));}},'set':function(_0x2c8696){if(Array[_0xb4b1('0xb')](_0x2c8696)){this[_0xb4b1('0x4')](_0xb4b1('0xa'),JSON[_0xb4b1('0xc')](_0x2c8696));}else{this[_0xb4b1('0x4')]('values',_0x2c8696);}}},'required':{'type':Sequelize[_0xb4b1('0xd')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xb4b1('0xd')],'defaultValue':![]},'actionType':{'type':Sequelize[_0xb4b1('0xe')]('voice')}};
\ No newline at end of file
+var _0xc6f0=['exports','getDataValue','STRING','name','long','select','parse','values','isArray','setDataValue','BOOLEAN','voice','sequelize','lodash'];(function(_0x39b6f0,_0x57cac3){var _0x22a628=function(_0x6d28b4){while(--_0x6d28b4){_0x39b6f0['push'](_0x39b6f0['shift']());}};_0x22a628(++_0x57cac3);}(_0xc6f0,0x116));var _0x0c6f=function(_0x509c92,_0x3b6c27){_0x509c92=_0x509c92-0x0;var _0x4de622=_0xc6f0[_0x509c92];return _0x4de622;};'use strict';var Sequelize=require(_0x0c6f('0x0'));var _=require(_0x0c6f('0x1'));module[_0x0c6f('0x2')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x49ebd1){return this[_0x0c6f('0x3')]('alias');}},'alias':{'type':Sequelize[_0x0c6f('0x4')],'allowNull':![],'set':function(_0x3adeec){this['setDataValue']('alias',_0x3adeec?_0x3adeec:this[_0x0c6f('0x3')](_0x0c6f('0x5')));}},'type':{'type':Sequelize[_0x0c6f('0x4')],'allowNull':![]},'values':{'type':Sequelize['TEXT'](_0x0c6f('0x6')),'get':function(){if(this[_0x0c6f('0x3')]('type')===_0x0c6f('0x7')){return JSON[_0x0c6f('0x8')](this[_0x0c6f('0x3')](_0x0c6f('0x9')));}else{return this['getDataValue']('values');}},'set':function(_0x4eb663){if(Array[_0x0c6f('0xa')](_0x4eb663)){this[_0x0c6f('0xb')](_0x0c6f('0x9'),JSON['stringify'](_0x4eb663));}else{this['setDataValue'](_0x0c6f('0x9'),_0x4eb663);}}},'required':{'type':Sequelize[_0x0c6f('0xc')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x0c6f('0xc')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0x0c6f('0xd'))}};
\ No newline at end of file
index e8cb07c..5b6f87a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb20=['TEXT','switch','BOOLEAN','defaultValue','addColumn','cm_contacts','cf_%d','rimraf','request-promise','bluebird','util','path','sox','ejs','fs-extra','lodash','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','CmCustomField','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','map','filter','merge','options','includeAll','include','findAll','rows','catch','keys','find','body','create','sequelize','Sequelize'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0xdb20,0xf7));var _0x0db2=function(_0x40a9f7,_0x3876a9){_0x40a9f7=_0x40a9f7-0x0;var _0x41f2f5=_0xdb20[_0x40a9f7];return _0x41f2f5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0db2('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0db2('0x1'));var moment=require('moment');var BPromise=require(_0x0db2('0x2'));var Mustache=require('mustache');var util=require(_0x0db2('0x3'));var path=require(_0x0db2('0x4'));var sox=require(_0x0db2('0x5'));var csv=require('to-csv');var ejs=require(_0x0db2('0x6'));var fs=require('fs');var fs_extra=require(_0x0db2('0x7'));var _=require(_0x0db2('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x0db2('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x0db2('0xa'));var querystring=require(_0x0db2('0xb'));var Papa=require(_0x0db2('0xc'));var Redis=require('ioredis');var authService=require(_0x0db2('0xd'));var qs=require(_0x0db2('0xe'));var as=require(_0x0db2('0xf'));var hardwareService=require(_0x0db2('0x10'));var logger=require(_0x0db2('0x11'))(_0x0db2('0x12'));var utils=require(_0x0db2('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x370134,_0x28dc3e){_0x28dc3e=_0x28dc3e||0xcc;return function(_0xe2d5e6){if(_0xe2d5e6){return _0x370134[_0x0db2('0x14')](_0x28dc3e);}return _0x370134['status'](_0x28dc3e)[_0x0db2('0x15')]();};}function respondWithResult(_0x3ed901,_0xf53f61){_0xf53f61=_0xf53f61||0xc8;return function(_0x113c2b){if(_0x113c2b){return _0x3ed901[_0x0db2('0x16')](_0xf53f61)[_0x0db2('0x17')](_0x113c2b);}};}function respondWithFilteredResult(_0x55bdf3,_0x2e25a5){return function(_0x3a3db0){if(_0x3a3db0){var _0x2ed100=typeof _0x2e25a5[_0x0db2('0x18')]===_0x0db2('0x19')&&typeof _0x2e25a5[_0x0db2('0x1a')]===_0x0db2('0x19');var _0x187af8=_0x3a3db0[_0x0db2('0x1b')];var _0x2a07ff=_0x2ed100?0x0:_0x2e25a5[_0x0db2('0x18')];var _0x34a6b8=_0x2ed100?_0x3a3db0[_0x0db2('0x1b')]:_0x2e25a5['offset']+_0x2e25a5[_0x0db2('0x1a')];var _0x2a3987;if(_0x34a6b8>=_0x187af8){_0x34a6b8=_0x187af8;_0x2a3987=0xc8;}else{_0x2a3987=0xce;}_0x55bdf3[_0x0db2('0x16')](_0x2a3987);return _0x55bdf3[_0x0db2('0x1c')](_0x0db2('0x1d'),_0x2a07ff+'-'+_0x34a6b8+'/'+_0x187af8)['json'](_0x3a3db0);}return null;};}function patchUpdates(_0x381c66){return function(_0x538262){try{jsonpatch[_0x0db2('0x1e')](_0x538262,_0x381c66,!![]);}catch(_0x5af261){return BPromise[_0x0db2('0x1f')](_0x5af261);}return _0x538262[_0x0db2('0x20')]();};}function saveUpdates(_0x28c305,_0x2fd41a){return function(_0x42d4ee){if(_0x42d4ee){return _0x42d4ee[_0x0db2('0x21')](_0x28c305)[_0x0db2('0x22')](function(_0x21cf30){return _0x21cf30;});}return null;};}function removeEntity(_0x3a0202,_0x37a48e){return function(_0x2cacbc){if(_0x2cacbc){return _0x2cacbc[_0x0db2('0x23')]()['then'](function(){_0x3a0202[_0x0db2('0x16')](0xcc)[_0x0db2('0x15')]();});}};}function handleEntityNotFound(_0xb2b4fe,_0x52f1bf){return function(_0x551f17){if(!_0x551f17){_0xb2b4fe['sendStatus'](0x194);}return _0x551f17;};}function handleError(_0x1b27ce,_0x32589d){_0x32589d=_0x32589d||0x1f4;return function(_0x439ff8){logger[_0x0db2('0x24')](_0x439ff8[_0x0db2('0x25')]);if(_0x439ff8[_0x0db2('0x26')]){delete _0x439ff8[_0x0db2('0x26')];}_0x1b27ce[_0x0db2('0x16')](_0x32589d)[_0x0db2('0x27')](_0x439ff8);};}exports[_0x0db2('0x28')]=function(_0x2f012e,_0xd27590){var _0x3eb2ca={},_0x8af358={},_0x9effd6={'count':0x0,'rows':[]};var _0x53d734=_['map'](db[_0x0db2('0x29')][_0x0db2('0x2a')],function(_0x3758cc){return{'name':_0x3758cc[_0x0db2('0x2b')],'type':_0x3758cc[_0x0db2('0x2c')][_0x0db2('0x2d')]};});_0x8af358[_0x0db2('0x2e')]=_['differenceBy'](_['map'](_0x53d734,_0x0db2('0x26')),[_0x0db2('0x26')]);_0x8af358[_0x0db2('0x2f')]=_['keys'](_0x2f012e['query']);_0x8af358[_0x0db2('0x30')]=_[_0x0db2('0x31')](_0x8af358['model'],_0x8af358['query']);_0x3eb2ca[_0x0db2('0x32')]=_[_0x0db2('0x31')](_0x8af358[_0x0db2('0x2e')],qs[_0x0db2('0x33')](_0x2f012e[_0x0db2('0x2f')][_0x0db2('0x33')]));_0x3eb2ca['attributes']=_0x3eb2ca[_0x0db2('0x32')][_0x0db2('0x34')]?_0x3eb2ca[_0x0db2('0x32')]:_0x8af358['model'];if(!_0x2f012e[_0x0db2('0x2f')][_0x0db2('0x35')](_0x0db2('0x36'))){_0x3eb2ca[_0x0db2('0x1a')]=qs[_0x0db2('0x1a')](_0x2f012e[_0x0db2('0x2f')][_0x0db2('0x1a')]);_0x3eb2ca[_0x0db2('0x18')]=qs[_0x0db2('0x18')](_0x2f012e[_0x0db2('0x2f')][_0x0db2('0x18')]);}_0x3eb2ca[_0x0db2('0x37')]=qs[_0x0db2('0x38')](_0x2f012e['query'][_0x0db2('0x38')]);_0x3eb2ca[_0x0db2('0x39')]=qs[_0x0db2('0x30')](_['pick'](_0x2f012e['query'],_0x8af358['filters']),_0x53d734);if(_0x2f012e['query']['filter']){_0x3eb2ca[_0x0db2('0x39')]=_['merge'](_0x3eb2ca[_0x0db2('0x39')],{'$or':_[_0x0db2('0x3a')](_0x53d734,function(_0x52f0ef){if(_0x52f0ef[_0x0db2('0x2c')]!=='VIRTUAL'){var _0x268c52={};_0x268c52[_0x52f0ef[_0x0db2('0x26')]]={'$like':'%'+_0x2f012e['query'][_0x0db2('0x3b')]+'%'};return _0x268c52;}})});}_0x3eb2ca=_[_0x0db2('0x3c')]({},_0x3eb2ca,_0x2f012e[_0x0db2('0x3d')]);var _0x3fbfaa={'where':_0x3eb2ca[_0x0db2('0x39')]};return db['CmCustomField'][_0x0db2('0x1b')](_0x3fbfaa)[_0x0db2('0x22')](function(_0xaa1045){_0x9effd6['count']=_0xaa1045;if(_0x2f012e['query'][_0x0db2('0x3e')]){_0x3eb2ca[_0x0db2('0x3f')]=[{'all':!![]}];}return db[_0x0db2('0x29')][_0x0db2('0x40')](_0x3eb2ca);})[_0x0db2('0x22')](function(_0x5573c9){_0x9effd6[_0x0db2('0x41')]=_0x5573c9;return _0x9effd6;})['then'](respondWithFilteredResult(_0xd27590,_0x3eb2ca))[_0x0db2('0x42')](handleError(_0xd27590,null));};exports['show']=function(_0x516e7c,_0x2fa5d9){var _0x56997c={'raw':!![],'where':{'id':_0x516e7c['params']['id']}},_0x48cc5f={};_0x48cc5f['model']=_['keys'](db[_0x0db2('0x29')][_0x0db2('0x2a')]);_0x48cc5f[_0x0db2('0x2f')]=_[_0x0db2('0x43')](_0x516e7c[_0x0db2('0x2f')]);_0x48cc5f[_0x0db2('0x30')]=_[_0x0db2('0x31')](_0x48cc5f[_0x0db2('0x2e')],_0x48cc5f[_0x0db2('0x2f')]);_0x56997c[_0x0db2('0x32')]=_['intersection'](_0x48cc5f[_0x0db2('0x2e')],qs[_0x0db2('0x33')](_0x516e7c[_0x0db2('0x2f')]['fields']));_0x56997c[_0x0db2('0x32')]=_0x56997c[_0x0db2('0x32')][_0x0db2('0x34')]?_0x56997c[_0x0db2('0x32')]:_0x48cc5f[_0x0db2('0x2e')];if(_0x516e7c[_0x0db2('0x2f')]['includeAll']){_0x56997c[_0x0db2('0x3f')]=[{'all':!![]}];}_0x56997c=_['merge']({},_0x56997c,_0x516e7c[_0x0db2('0x3d')]);return db[_0x0db2('0x29')][_0x0db2('0x44')](_0x56997c)['then'](handleEntityNotFound(_0x2fa5d9,null))['then'](respondWithResult(_0x2fa5d9,null))[_0x0db2('0x42')](handleError(_0x2fa5d9,null));};exports[_0x0db2('0x21')]=function(_0x4b103d,_0x307fae){if(_0x4b103d['body']['id']){delete _0x4b103d[_0x0db2('0x45')]['id'];}return db['CmCustomField'][_0x0db2('0x44')]({'where':{'id':_0x4b103d['params']['id']}})[_0x0db2('0x22')](handleEntityNotFound(_0x307fae,null))[_0x0db2('0x22')](saveUpdates(_0x4b103d[_0x0db2('0x45')],null))['then'](respondWithResult(_0x307fae,null))['catch'](handleError(_0x307fae,null));};exports['destroy']=function(_0x887a2d,_0x299883){return db[_0x0db2('0x29')]['find']({'where':{'id':_0x887a2d['params']['id']}})[_0x0db2('0x22')](handleEntityNotFound(_0x299883,null))[_0x0db2('0x22')](removeEntity(_0x299883,null))[_0x0db2('0x42')](handleError(_0x299883,null));};exports[_0x0db2('0x46')]=function(_0x534929,_0x5cb1f9){var _0x2e4743;return db[_0x0db2('0x47')]['transaction'](function(_0x433015){return db[_0x0db2('0x29')][_0x0db2('0x46')](_0x534929[_0x0db2('0x45')],{'transaction':_0x433015})[_0x0db2('0x22')](function(_0x4af750){_0x2e4743=_0x4af750;var _0x1ae603={'type':db[_0x0db2('0x48')]['TEXT'],'transaction':_0x433015};switch(_0x534929[_0x0db2('0x45')]['type']){case'text':_0x1ae603[_0x0db2('0x2c')]=db['Sequelize'][_0x0db2('0x49')];break;case'number':_0x1ae603['type']=db[_0x0db2('0x48')]['INTEGER'];break;case _0x0db2('0x4a'):_0x1ae603[_0x0db2('0x2c')]=db[_0x0db2('0x48')][_0x0db2('0x4b')];_0x1ae603[_0x0db2('0x4c')]=![];break;default:}return db[_0x0db2('0x47')]['queryInterface'][_0x0db2('0x4d')](_0x0db2('0x4e'),util['format'](_0x0db2('0x4f'),_0x2e4743['id']),_0x1ae603);})['then'](function(){return _0x2e4743;});})[_0x0db2('0x22')](respondWithResult(_0x5cb1f9,0xc9))[_0x0db2('0x42')](handleError(_0x5cb1f9,null));};
\ No newline at end of file
+var _0x13eb=['name','send','index','map','CmCustomField','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filters','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','body','sequelize','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','addColumn','cm_contacts','format','cf_%d','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack'];(function(_0x163716,_0x5c1ff9){var _0x3c546f=function(_0x49283a){while(--_0x49283a){_0x163716['push'](_0x163716['shift']());}};_0x3c546f(++_0x5c1ff9);}(_0x13eb,0x8f));var _0xb13e=function(_0x5db1ce,_0x57ab66){_0x5db1ce=_0x5db1ce-0x0;var _0xb62cbb=_0x13eb[_0x5db1ce];return _0xb62cbb;};'use strict';var emlformat=require(_0xb13e('0x0'));var rimraf=require(_0xb13e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb13e('0x2'));var rp=require(_0xb13e('0x3'));var moment=require('moment');var BPromise=require(_0xb13e('0x4'));var Mustache=require(_0xb13e('0x5'));var util=require(_0xb13e('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xb13e('0x7'));var ejs=require(_0xb13e('0x8'));var fs=require('fs');var fs_extra=require(_0xb13e('0x9'));var _=require(_0xb13e('0xa'));var squel=require(_0xb13e('0xb'));var crypto=require(_0xb13e('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xb13e('0xd'));var toCsv=require(_0xb13e('0x7'));var querystring=require('querystring');var Papa=require(_0xb13e('0xe'));var Redis=require(_0xb13e('0xf'));var authService=require(_0xb13e('0x10'));var qs=require(_0xb13e('0x11'));var as=require(_0xb13e('0x12'));var hardwareService=require(_0xb13e('0x13'));var logger=require(_0xb13e('0x14'))(_0xb13e('0x15'));var utils=require(_0xb13e('0x16'));var config=require(_0xb13e('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xb13e('0x18'))['db'];function respondWithStatusCode(_0x21566f,_0x41b1a6){_0x41b1a6=_0x41b1a6||0xcc;return function(_0x273863){if(_0x273863){return _0x21566f['sendStatus'](_0x41b1a6);}return _0x21566f[_0xb13e('0x19')](_0x41b1a6)[_0xb13e('0x1a')]();};}function respondWithResult(_0x29ce86,_0x210f02){_0x210f02=_0x210f02||0xc8;return function(_0x3cd4ef){if(_0x3cd4ef){return _0x29ce86[_0xb13e('0x19')](_0x210f02)[_0xb13e('0x1b')](_0x3cd4ef);}};}function respondWithFilteredResult(_0x178399,_0x265277){return function(_0x2b5e1a){if(_0x2b5e1a){var _0x4561e4=typeof _0x265277[_0xb13e('0x1c')]===_0xb13e('0x1d')&&typeof _0x265277[_0xb13e('0x1e')]===_0xb13e('0x1d');var _0x2483e3=_0x2b5e1a[_0xb13e('0x1f')];var _0x53706f=_0x4561e4?0x0:_0x265277[_0xb13e('0x1c')];var _0x441c9f=_0x4561e4?_0x2b5e1a['count']:_0x265277[_0xb13e('0x1c')]+_0x265277[_0xb13e('0x1e')];var _0x5a18ea;if(_0x441c9f>=_0x2483e3){_0x441c9f=_0x2483e3;_0x5a18ea=0xc8;}else{_0x5a18ea=0xce;}_0x178399[_0xb13e('0x19')](_0x5a18ea);return _0x178399[_0xb13e('0x20')](_0xb13e('0x21'),_0x53706f+'-'+_0x441c9f+'/'+_0x2483e3)[_0xb13e('0x1b')](_0x2b5e1a);}return null;};}function patchUpdates(_0x92d5f){return function(_0x1561a2){try{jsonpatch[_0xb13e('0x22')](_0x1561a2,_0x92d5f,!![]);}catch(_0x3fd44c){return BPromise[_0xb13e('0x23')](_0x3fd44c);}return _0x1561a2[_0xb13e('0x24')]();};}function saveUpdates(_0x23ce33,_0x14bfc8){return function(_0x7fcf30){if(_0x7fcf30){return _0x7fcf30[_0xb13e('0x25')](_0x23ce33)[_0xb13e('0x26')](function(_0x3c381d){return _0x3c381d;});}return null;};}function removeEntity(_0x24d3cd,_0x124e13){return function(_0x412adf){if(_0x412adf){return _0x412adf[_0xb13e('0x27')]()[_0xb13e('0x26')](function(){_0x24d3cd['status'](0xcc)[_0xb13e('0x1a')]();});}};}function handleEntityNotFound(_0x3b7633,_0x3fd909){return function(_0x525677){if(!_0x525677){_0x3b7633[_0xb13e('0x28')](0x194);}return _0x525677;};}function handleError(_0x1cafd1,_0x40cec5){_0x40cec5=_0x40cec5||0x1f4;return function(_0x5bfe80){logger[_0xb13e('0x29')](_0x5bfe80[_0xb13e('0x2a')]);if(_0x5bfe80[_0xb13e('0x2b')]){delete _0x5bfe80[_0xb13e('0x2b')];}_0x1cafd1['status'](_0x40cec5)[_0xb13e('0x2c')](_0x5bfe80);};}exports[_0xb13e('0x2d')]=function(_0x34bf11,_0x21eabb){var _0x510d9c={},_0x4495ef={},_0x8fd8f={'count':0x0,'rows':[]};var _0x29e5e3=_[_0xb13e('0x2e')](db[_0xb13e('0x2f')][_0xb13e('0x30')],function(_0x42132f){return{'name':_0x42132f[_0xb13e('0x31')],'type':_0x42132f[_0xb13e('0x32')][_0xb13e('0x33')]};});_0x4495ef[_0xb13e('0x34')]=_[_0xb13e('0x35')](_[_0xb13e('0x2e')](_0x29e5e3,_0xb13e('0x2b')),['name']);_0x4495ef[_0xb13e('0x36')]=_[_0xb13e('0x37')](_0x34bf11['query']);_0x4495ef['filters']=_[_0xb13e('0x38')](_0x4495ef[_0xb13e('0x34')],_0x4495ef[_0xb13e('0x36')]);_0x510d9c[_0xb13e('0x39')]=_['intersection'](_0x4495ef[_0xb13e('0x34')],qs[_0xb13e('0x3a')](_0x34bf11['query'][_0xb13e('0x3a')]));_0x510d9c[_0xb13e('0x39')]=_0x510d9c[_0xb13e('0x39')][_0xb13e('0x3b')]?_0x510d9c[_0xb13e('0x39')]:_0x4495ef[_0xb13e('0x34')];if(!_0x34bf11[_0xb13e('0x36')][_0xb13e('0x3c')](_0xb13e('0x3d'))){_0x510d9c[_0xb13e('0x1e')]=qs[_0xb13e('0x1e')](_0x34bf11[_0xb13e('0x36')]['limit']);_0x510d9c['offset']=qs[_0xb13e('0x1c')](_0x34bf11['query'][_0xb13e('0x1c')]);}_0x510d9c['order']=qs[_0xb13e('0x3e')](_0x34bf11[_0xb13e('0x36')][_0xb13e('0x3e')]);_0x510d9c['where']=qs[_0xb13e('0x3f')](_[_0xb13e('0x40')](_0x34bf11['query'],_0x4495ef['filters']),_0x29e5e3);if(_0x34bf11[_0xb13e('0x36')][_0xb13e('0x41')]){_0x510d9c['where']=_[_0xb13e('0x42')](_0x510d9c[_0xb13e('0x43')],{'$or':_['map'](_0x29e5e3,function(_0xdf90e6){if(_0xdf90e6[_0xb13e('0x32')]!==_0xb13e('0x44')){var _0x219fe0={};_0x219fe0[_0xdf90e6[_0xb13e('0x2b')]]={'$like':'%'+_0x34bf11[_0xb13e('0x36')]['filter']+'%'};return _0x219fe0;}})});}_0x510d9c=_['merge']({},_0x510d9c,_0x34bf11[_0xb13e('0x45')]);var _0x1a2f08={'where':_0x510d9c[_0xb13e('0x43')]};return db[_0xb13e('0x2f')][_0xb13e('0x1f')](_0x1a2f08)['then'](function(_0x59fbbb){_0x8fd8f[_0xb13e('0x1f')]=_0x59fbbb;if(_0x34bf11[_0xb13e('0x36')][_0xb13e('0x46')]){_0x510d9c[_0xb13e('0x47')]=[{'all':!![]}];}return db[_0xb13e('0x2f')][_0xb13e('0x48')](_0x510d9c);})[_0xb13e('0x26')](function(_0x4588f5){_0x8fd8f[_0xb13e('0x49')]=_0x4588f5;return _0x8fd8f;})[_0xb13e('0x26')](respondWithFilteredResult(_0x21eabb,_0x510d9c))[_0xb13e('0x4a')](handleError(_0x21eabb,null));};exports[_0xb13e('0x4b')]=function(_0x55acf4,_0x1c6a5d){var _0x2edd43={'raw':!![],'where':{'id':_0x55acf4[_0xb13e('0x4c')]['id']}},_0x5073b9={};_0x5073b9[_0xb13e('0x34')]=_[_0xb13e('0x37')](db[_0xb13e('0x2f')][_0xb13e('0x30')]);_0x5073b9[_0xb13e('0x36')]=_[_0xb13e('0x37')](_0x55acf4[_0xb13e('0x36')]);_0x5073b9[_0xb13e('0x3f')]=_[_0xb13e('0x38')](_0x5073b9[_0xb13e('0x34')],_0x5073b9[_0xb13e('0x36')]);_0x2edd43[_0xb13e('0x39')]=_['intersection'](_0x5073b9[_0xb13e('0x34')],qs[_0xb13e('0x3a')](_0x55acf4[_0xb13e('0x36')][_0xb13e('0x3a')]));_0x2edd43[_0xb13e('0x39')]=_0x2edd43[_0xb13e('0x39')][_0xb13e('0x3b')]?_0x2edd43[_0xb13e('0x39')]:_0x5073b9['model'];if(_0x55acf4[_0xb13e('0x36')][_0xb13e('0x46')]){_0x2edd43[_0xb13e('0x47')]=[{'all':!![]}];}_0x2edd43=_['merge']({},_0x2edd43,_0x55acf4[_0xb13e('0x45')]);return db[_0xb13e('0x2f')][_0xb13e('0x4d')](_0x2edd43)['then'](handleEntityNotFound(_0x1c6a5d,null))['then'](respondWithResult(_0x1c6a5d,null))['catch'](handleError(_0x1c6a5d,null));};exports[_0xb13e('0x25')]=function(_0x2dcd0d,_0x5de2c9){if(_0x2dcd0d[_0xb13e('0x4e')]['id']){delete _0x2dcd0d[_0xb13e('0x4e')]['id'];}return db[_0xb13e('0x2f')][_0xb13e('0x4d')]({'where':{'id':_0x2dcd0d['params']['id']}})[_0xb13e('0x26')](handleEntityNotFound(_0x5de2c9,null))[_0xb13e('0x26')](saveUpdates(_0x2dcd0d[_0xb13e('0x4e')],null))[_0xb13e('0x26')](respondWithResult(_0x5de2c9,null))[_0xb13e('0x4a')](handleError(_0x5de2c9,null));};exports[_0xb13e('0x27')]=function(_0x186caf,_0x5d389e){return db['CmCustomField'][_0xb13e('0x4d')]({'where':{'id':_0x186caf[_0xb13e('0x4c')]['id']}})[_0xb13e('0x26')](handleEntityNotFound(_0x5d389e,null))[_0xb13e('0x26')](removeEntity(_0x5d389e,null))['catch'](handleError(_0x5d389e,null));};exports['create']=function(_0x11829c,_0x404312){var _0xe5a014;return db[_0xb13e('0x4f')]['transaction'](function(_0x27ebdd){return db[_0xb13e('0x2f')]['create'](_0x11829c[_0xb13e('0x4e')],{'transaction':_0x27ebdd})[_0xb13e('0x26')](function(_0x20053b){_0xe5a014=_0x20053b;var _0x3ba5f0={'type':db[_0xb13e('0x50')][_0xb13e('0x51')],'transaction':_0x27ebdd};switch(_0x11829c[_0xb13e('0x4e')]['type']){case _0xb13e('0x52'):_0x3ba5f0[_0xb13e('0x32')]=db[_0xb13e('0x50')]['TEXT'];break;case _0xb13e('0x53'):_0x3ba5f0['type']=db[_0xb13e('0x50')][_0xb13e('0x54')];break;case _0xb13e('0x55'):_0x3ba5f0[_0xb13e('0x32')]=db[_0xb13e('0x50')][_0xb13e('0x56')];_0x3ba5f0[_0xb13e('0x57')]=![];break;default:}return db[_0xb13e('0x4f')][_0xb13e('0x58')][_0xb13e('0x59')](_0xb13e('0x5a'),util[_0xb13e('0x5b')](_0xb13e('0x5c'),_0xe5a014['id']),_0x3ba5f0);})[_0xb13e('0x26')](function(){return _0xe5a014;});})[_0xb13e('0x26')](respondWithResult(_0x404312,0xc9))[_0xb13e('0x4a')](handleError(_0x404312,null));};
\ No newline at end of file
index 9be7cea..63c0e5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e1c=['lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','CmCustomField'];(function(_0x2be652,_0x15543c){var _0x3be237=function(_0x41f308){while(--_0x41f308){_0x2be652['push'](_0x2be652['shift']());}};_0x3be237(++_0x15543c);}(_0x8e1c,0x155));var _0xc8e1=function(_0x366ddf,_0x1246ad){_0x366ddf=_0x366ddf-0x0;var _0x2d4f8b=_0x8e1c[_0x366ddf];return _0x2d4f8b;};'use strict';var _=require(_0xc8e1('0x0'));var util=require(_0xc8e1('0x1'));var logger=require('../../config/logger')(_0xc8e1('0x2'));var moment=require(_0xc8e1('0x3'));var BPromise=require(_0xc8e1('0x4'));var rp=require(_0xc8e1('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc8e1('0x6'));var config=require(_0xc8e1('0x7'));var attributes=require('./cmCustomField.attributes');module[_0xc8e1('0x8')]=function(_0x3c3d48,_0x42a517){return _0x3c3d48[_0xc8e1('0x9')](_0xc8e1('0xa'),attributes,{'tableName':'cm_custom_fields','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc98f=['bluebird','request-promise','path','./cmCustomField.attributes','exports','define','CmCustomField','cm_custom_fields','util','../../config/logger','api','moment'];(function(_0x5d2103,_0x12a51a){var _0x4b4e83=function(_0x594633){while(--_0x594633){_0x5d2103['push'](_0x5d2103['shift']());}};_0x4b4e83(++_0x12a51a);}(_0xc98f,0xd4));var _0xfc98=function(_0x7a2bd7,_0x37e356){_0x7a2bd7=_0x7a2bd7-0x0;var _0x904aa3=_0xc98f[_0x7a2bd7];return _0x904aa3;};'use strict';var _=require('lodash');var util=require(_0xfc98('0x0'));var logger=require(_0xfc98('0x1'))(_0xfc98('0x2'));var moment=require(_0xfc98('0x3'));var BPromise=require(_0xfc98('0x4'));var rp=require(_0xfc98('0x5'));var fs=require('fs');var path=require(_0xfc98('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xfc98('0x7'));module[_0xfc98('0x8')]=function(_0x382b9b,_0x311100){return _0x382b9b[_0xfc98('0x9')](_0xfc98('0xa'),attributes,{'tableName':_0xfc98('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d57166e..b421f76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72c0=['bluebird','ioredis','../../config/utils','../../config/logger','rpc','client','http','request','info','debug','CmCustomField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','CmCustomField,\x20%s,\x20%s','result','catch','util'];(function(_0x1f9044,_0x4d4c7b){var _0x42c442=function(_0x349040){while(--_0x349040){_0x1f9044['push'](_0x1f9044['shift']());}};_0x42c442(++_0x4d4c7b);}(_0x72c0,0x12b));var _0x072c=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0x72c0[_0x1e3c16];return _0x47a0c9;};'use strict';var _=require('lodash');var util=require(_0x072c('0x0'));var moment=require('moment');var BPromise=require(_0x072c('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x072c('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x072c('0x3'));var logger=require(_0x072c('0x4'))(_0x072c('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x072c('0x6')][_0x072c('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x3f25b4,_0x59818b,_0x10eabf){return new BPromise(function(_0x267cfd,_0x4423ce){return client[_0x072c('0x8')](_0x3f25b4,_0x10eabf)['then'](function(_0x35dcf8){logger[_0x072c('0x9')]('CmCustomField,\x20%s,\x20%s',_0x59818b,'request\x20sent');logger[_0x072c('0xa')](_0x072c('0xb'),_0x59818b,_0x072c('0xc'),JSON[_0x072c('0xd')](_0x35dcf8));if(_0x35dcf8['error']){if(_0x35dcf8['error'][_0x072c('0xe')]===0x1f4){logger[_0x072c('0xf')]('CmCustomField,\x20%s,\x20%s',_0x59818b,_0x35dcf8[_0x072c('0xf')][_0x072c('0x10')]);return _0x4423ce(_0x35dcf8[_0x072c('0xf')][_0x072c('0x10')]);}logger[_0x072c('0xf')](_0x072c('0x11'),_0x59818b,_0x35dcf8[_0x072c('0xf')][_0x072c('0x10')]);return _0x267cfd(_0x35dcf8[_0x072c('0xf')][_0x072c('0x10')]);}else{logger[_0x072c('0x9')](_0x072c('0x11'),_0x59818b,_0x072c('0xc'));_0x267cfd(_0x35dcf8[_0x072c('0x12')][_0x072c('0x10')]);}})[_0x072c('0x13')](function(_0x5d905e){logger[_0x072c('0xf')](_0x072c('0x11'),_0x59818b,_0x5d905e);_0x4423ce(_0x5d905e);});});}
\ No newline at end of file
+var _0xfea2=['then','info','request\x20sent','debug','stringify','error','code','CmCustomField,\x20%s,\x20%s','message','result','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x463fcd,_0x22b233){var _0x141bdb=function(_0x57fc88){while(--_0x57fc88){_0x463fcd['push'](_0x463fcd['shift']());}};_0x141bdb(++_0x22b233);}(_0xfea2,0xa4));var _0x2fea=function(_0x366a7d,_0x57fbf7){_0x366a7d=_0x366a7d-0x0;var _0x124285=_0xfea2[_0x366a7d];return _0x124285;};'use strict';var _=require('lodash');var util=require(_0x2fea('0x0'));var moment=require('moment');var BPromise=require(_0x2fea('0x1'));var rs=require(_0x2fea('0x2'));var fs=require('fs');var Redis=require(_0x2fea('0x3'));var db=require(_0x2fea('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x2fea('0x5'))(_0x2fea('0x6'));var config=require(_0x2fea('0x7'));var jayson=require(_0x2fea('0x8'));var client=jayson[_0x2fea('0x9')][_0x2fea('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x45a684,_0x1a6f86,_0x367082){return new BPromise(function(_0x5516d9,_0x40b81c){return client[_0x2fea('0xb')](_0x45a684,_0x367082)[_0x2fea('0xc')](function(_0xbd4cce){logger[_0x2fea('0xd')]('CmCustomField,\x20%s,\x20%s',_0x1a6f86,_0x2fea('0xe'));logger[_0x2fea('0xf')]('CmCustomField,\x20%s,\x20%s,\x20%s',_0x1a6f86,'request\x20sent',JSON[_0x2fea('0x10')](_0xbd4cce));if(_0xbd4cce[_0x2fea('0x11')]){if(_0xbd4cce[_0x2fea('0x11')][_0x2fea('0x12')]===0x1f4){logger[_0x2fea('0x11')](_0x2fea('0x13'),_0x1a6f86,_0xbd4cce['error'][_0x2fea('0x14')]);return _0x40b81c(_0xbd4cce['error'][_0x2fea('0x14')]);}logger['error'](_0x2fea('0x13'),_0x1a6f86,_0xbd4cce[_0x2fea('0x11')][_0x2fea('0x14')]);return _0x5516d9(_0xbd4cce[_0x2fea('0x11')]['message']);}else{logger[_0x2fea('0xd')](_0x2fea('0x13'),_0x1a6f86,_0x2fea('0xe'));_0x5516d9(_0xbd4cce[_0x2fea('0x15')][_0x2fea('0x14')]);}})['catch'](function(_0x5e11e7){logger['error'](_0x2fea('0x13'),_0x1a6f86,_0x5e11e7);_0x40b81c(_0x5e11e7);});});}
\ No newline at end of file
index a083af4..83a23bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbea5=['multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','./cmCustomField.controller','isAuthenticated','/:id','post','create','delete','destroy','exports'];(function(_0x8eeae6,_0x3c2aa0){var _0xb01689=function(_0x13ed14){while(--_0x13ed14){_0x8eeae6['push'](_0x8eeae6['shift']());}};_0xb01689(++_0x3c2aa0);}(_0xbea5,0x177));var _0x5bea=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xbea5[_0x12d033];return _0x3b4e80;};'use strict';var multer=require(_0x5bea('0x0'));var util=require(_0x5bea('0x1'));var path=require('path');var timeout=require(_0x5bea('0x2'));var express=require(_0x5bea('0x3'));var router=express[_0x5bea('0x4')]();var fs_extra=require(_0x5bea('0x5'));var auth=require(_0x5bea('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x5bea('0x7'));router['get']('/',auth[_0x5bea('0x8')](),controller['index']);router['get'](_0x5bea('0x9'),auth['isAuthenticated'](),controller['show']);router[_0x5bea('0xa')]('/',auth[_0x5bea('0x8')](),controller[_0x5bea('0xb')]);router['put'](_0x5bea('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x5bea('0xc')](_0x5bea('0x9'),auth[_0x5bea('0x8')](),controller[_0x5bea('0xd')]);module[_0x5bea('0xe')]=router;
\ No newline at end of file
+var _0xdfea=['../../config/environment','get','index','/:id','isAuthenticated','post','create','put','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x51b19b,_0x5015d2){var _0x1a3cd6=function(_0x495134){while(--_0x495134){_0x51b19b['push'](_0x51b19b['shift']());}};_0x1a3cd6(++_0x5015d2);}(_0xdfea,0x1cd));var _0xadfe=function(_0x5a0ff6,_0x470639){_0x5a0ff6=_0x5a0ff6-0x0;var _0x2b6fa6=_0xdfea[_0x5a0ff6];return _0x2b6fa6;};'use strict';var multer=require(_0xadfe('0x0'));var util=require(_0xadfe('0x1'));var path=require('path');var timeout=require(_0xadfe('0x2'));var express=require(_0xadfe('0x3'));var router=express['Router']();var fs_extra=require(_0xadfe('0x4'));var auth=require(_0xadfe('0x5'));var interaction=require(_0xadfe('0x6'));var config=require(_0xadfe('0x7'));var controller=require('./cmCustomField.controller');router[_0xadfe('0x8')]('/',auth['isAuthenticated'](),controller[_0xadfe('0x9')]);router[_0xadfe('0x8')](_0xadfe('0xa'),auth[_0xadfe('0xb')](),controller['show']);router[_0xadfe('0xc')]('/',auth['isAuthenticated'](),controller[_0xadfe('0xd')]);router[_0xadfe('0xe')](_0xadfe('0xa'),auth[_0xadfe('0xb')](),controller['update']);router[_0xadfe('0xf')](_0xadfe('0xa'),auth[_0xadfe('0xb')](),controller[_0xadfe('0x10')]);module[_0xadfe('0x11')]=router;
\ No newline at end of file
index 85c42c5..1bb996f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x665f=['BOOLEAN','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','DATE','UNSIGNED','contactListQueue','moment','exports','STRING'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x665f,0x9d));var _0xf665=function(_0x3ba463,_0x31b492){_0x3ba463=_0x3ba463-0x0;var _0x5d7d4d=_0x665f[_0x3ba463];return _0x5d7d4d;};'use strict';var moment=require(_0xf665('0x0'));var Sequelize=require('sequelize');module[_0xf665('0x1')]={'phone':{'type':Sequelize[_0xf665('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0xf665('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0xf665('0x4')](_0xf665('0x5'))},'countbusyretry':{'type':Sequelize[_0xf665('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xf665('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xf665('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0xf665('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xf665('0x7')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0xf665('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0xf665('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'ListId':{'type':Sequelize['INTEGER'],'unique':_0xf665('0x9')},'UserId':{'type':Sequelize[_0xf665('0x6')]},'VoiceQueueId':{'type':Sequelize[_0xf665('0x6')],'unique':_0xf665('0x9')},'CampaignId':{'type':Sequelize[_0xf665('0x6')]},'countnosuchnumberretry':{'type':Sequelize[_0xf665('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xf665('0x6')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xf665('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xf665('0x6')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x3e76=['contactListQueue','moment','sequelize','exports','STRING','DATE','YYYY-MM-DD\x20HH:mm:ss','INTEGER','BOOLEAN','UNSIGNED'];(function(_0x34af74,_0x59ab9d){var _0x12d74b=function(_0x51a854){while(--_0x51a854){_0x34af74['push'](_0x34af74['shift']());}};_0x12d74b(++_0x59ab9d);}(_0x3e76,0x1af));var _0x63e7=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0x3e76[_0x29b609];return _0x54c952;};'use strict';var moment=require(_0x63e7('0x0'));var Sequelize=require(_0x63e7('0x1'));module[_0x63e7('0x2')]={'phone':{'type':Sequelize[_0x63e7('0x3')],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x63e7('0x4')],'defaultValue':moment()['format'](_0x63e7('0x5'))},'countbusyretry':{'type':Sequelize[_0x63e7('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x63e7('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x63e7('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x63e7('0x7')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x63e7('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x63e7('0x4')]},'priority':{'type':Sequelize[_0x63e7('0x6')](0x2)[_0x63e7('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x63e7('0x7')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x63e7('0x6')],'unique':'contactListQueue'},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x63e7('0x9')},'UserId':{'type':Sequelize[_0x63e7('0x6')]},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'CampaignId':{'type':Sequelize[_0x63e7('0x6')]},'countnosuchnumberretry':{'type':Sequelize[_0x63e7('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x63e7('0x6')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x63e7('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 93b9e3f..0373b72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0aa=['updatedAt','state','statedesc','deleted','campaign','membername','user','UserId','format','calleridnum','ivr','ContactId','lastName','isNil','firstName','calleridname','finally','getPreview','CmContact','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','sequelize','transaction','YYYY-MM-DD\x20HH:mm:ss','direction','prev','hopperIds','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','priority','COALESCE(CmHopper.UserId,\x200)\x20DESC','scheduledat','Contact','CmCompany','Company','CmList','List','Queue','update','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','save','then','error','stack','name','send','index','map','CmHopper','rawAttributes','keys','query','intersection','filters','concat','$and','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$in','$notLike','$iLike','$notILike','$like','$contains','$contained','$any','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','find','create','body','describe','destroy','VoiceQueueId','VoiceQueue','Campaign','CampaignId','createdAt'];(function(_0x584e52,_0x5443dc){var _0x5cf710=function(_0x4fc333){while(--_0x4fc333){_0x584e52['push'](_0x584e52['shift']());}};_0x5cf710(++_0x5443dc);}(_0xb0aa,0xc2));var _0xab0a=function(_0x10cbfd,_0x5c2873){_0x10cbfd=_0x10cbfd-0x0;var _0x8cd494=_0xb0aa[_0x10cbfd];return _0x8cd494;};'use strict';var emlformat=require(_0xab0a('0x0'));var rimraf=require(_0xab0a('0x1'));var zipdir=require(_0xab0a('0x2'));var jsonpatch=require(_0xab0a('0x3'));var rp=require('request-promise');var moment=require(_0xab0a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xab0a('0x5'));var util=require(_0xab0a('0x6'));var path=require(_0xab0a('0x7'));var sox=require(_0xab0a('0x8'));var csv=require(_0xab0a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xab0a('0xa'));var _=require(_0xab0a('0xb'));var squel=require('squel');var crypto=require(_0xab0a('0xc'));var jsforce=require(_0xab0a('0xd'));var deskjs=require(_0xab0a('0xe'));var toCsv=require(_0xab0a('0x9'));var querystring=require('querystring');var Papa=require(_0xab0a('0xf'));var Redis=require('ioredis');var authService=require(_0xab0a('0x10'));var qs=require(_0xab0a('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xab0a('0x12'));var logger=require(_0xab0a('0x13'))('api');var utils=require(_0xab0a('0x14'));var config=require(_0xab0a('0x15'));var licenseUtil=require(_0xab0a('0x16'));var db=require(_0xab0a('0x17'))['db'];function respondWithStatusCode(_0x4a3f9c,_0x4b9378){_0x4b9378=_0x4b9378||0xcc;return function(_0x358b8b){if(_0x358b8b){return _0x4a3f9c[_0xab0a('0x18')](_0x4b9378);}return _0x4a3f9c[_0xab0a('0x19')](_0x4b9378)[_0xab0a('0x1a')]();};}function respondWithResult(_0x2d871e,_0x30ce37){_0x30ce37=_0x30ce37||0xc8;return function(_0x3aa930){if(_0x3aa930){return _0x2d871e[_0xab0a('0x19')](_0x30ce37)[_0xab0a('0x1b')](_0x3aa930);}};}function respondWithFilteredResult(_0x3c0770,_0x41141c){return function(_0x2d2932){if(_0x2d2932){var _0xff68dc=typeof _0x41141c[_0xab0a('0x1c')]==='undefined'&&typeof _0x41141c['limit']===_0xab0a('0x1d');var _0x252077=_0x2d2932[_0xab0a('0x1e')];var _0xe147c9=_0xff68dc?0x0:_0x41141c[_0xab0a('0x1c')];var _0x503016=_0xff68dc?_0x2d2932['count']:_0x41141c[_0xab0a('0x1c')]+_0x41141c[_0xab0a('0x1f')];var _0x3ac7fa;if(_0x503016>=_0x252077){_0x503016=_0x252077;_0x3ac7fa=0xc8;}else{_0x3ac7fa=0xce;}_0x3c0770[_0xab0a('0x19')](_0x3ac7fa);return _0x3c0770[_0xab0a('0x20')]('Content-Range',_0xe147c9+'-'+_0x503016+'/'+_0x252077)[_0xab0a('0x1b')](_0x2d2932);}return null;};}function patchUpdates(_0xd81b01){return function(_0x252e5f){try{jsonpatch[_0xab0a('0x21')](_0x252e5f,_0xd81b01,!![]);}catch(_0x179638){return BPromise[_0xab0a('0x22')](_0x179638);}return _0x252e5f[_0xab0a('0x23')]();};}function saveUpdates(_0xa03c9,_0x408fa6){return function(_0x1d982f){if(_0x1d982f){return _0x1d982f['update'](_0xa03c9)[_0xab0a('0x24')](function(_0x1befe4){return _0x1befe4;});}return null;};}function removeEntity(_0x54edbe,_0x59da79){return function(_0x49c681){if(_0x49c681){return _0x49c681['destroy']()[_0xab0a('0x24')](function(){_0x54edbe['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x26c845,_0x3d3486){return function(_0x26b118){if(!_0x26b118){_0x26c845[_0xab0a('0x18')](0x194);}return _0x26b118;};}function handleError(_0x22e62b,_0x4e582c){_0x4e582c=_0x4e582c||0x1f4;return function(_0x16a07f){logger[_0xab0a('0x25')](_0x16a07f[_0xab0a('0x26')]);if(_0x16a07f[_0xab0a('0x27')]){delete _0x16a07f[_0xab0a('0x27')];}_0x22e62b[_0xab0a('0x19')](_0x4e582c)[_0xab0a('0x28')](_0x16a07f);};}exports[_0xab0a('0x29')]=function(_0x545467,_0x17f385){var _0x6e7316={},_0x5484b4={},_0x346356={'count':0x0,'rows':[]};var _0x1721dc=_[_0xab0a('0x2a')](db[_0xab0a('0x2b')][_0xab0a('0x2c')],function(_0x3c8f08){return{'name':_0x3c8f08['fieldName'],'type':_0x3c8f08['type']['key']};});_0x5484b4['model']=_['map'](_0x1721dc,'name');_0x5484b4['query']=_[_0xab0a('0x2d')](_0x545467[_0xab0a('0x2e')]);_0x5484b4['filters']=_[_0xab0a('0x2f')](_0x5484b4['model'],_0x5484b4[_0xab0a('0x2e')]);_0x5484b4[_0xab0a('0x30')]=_[_0xab0a('0x31')](_0x5484b4[_0xab0a('0x30')],[_0xab0a('0x32'),'$or','$gt',_0xab0a('0x33'),_0xab0a('0x34'),_0xab0a('0x35'),_0xab0a('0x36'),_0xab0a('0x37'),_0xab0a('0x38'),_0xab0a('0x39'),_0xab0a('0x3a'),_0xab0a('0x3b'),'$notIn','$like',_0xab0a('0x3c'),_0xab0a('0x3d'),_0xab0a('0x3e'),_0xab0a('0x3f'),'$overlap',_0xab0a('0x40'),_0xab0a('0x41'),_0xab0a('0x42')]);_0x6e7316['attributes']=_[_0xab0a('0x2f')](_0x5484b4[_0xab0a('0x43')],qs[_0xab0a('0x44')](_0x545467['query'][_0xab0a('0x44')]));_0x6e7316['attributes']=_0x6e7316[_0xab0a('0x45')][_0xab0a('0x46')]?_0x6e7316['attributes']:_0x5484b4[_0xab0a('0x43')];if(!_0x545467['query'][_0xab0a('0x47')](_0xab0a('0x48'))){_0x6e7316[_0xab0a('0x1f')]=qs[_0xab0a('0x1f')](_0x545467['query'][_0xab0a('0x1f')]);_0x6e7316['offset']=qs['offset'](_0x545467[_0xab0a('0x2e')][_0xab0a('0x1c')]);}_0x6e7316[_0xab0a('0x49')]=qs[_0xab0a('0x4a')](_0x545467['query'][_0xab0a('0x4a')]);_0x6e7316[_0xab0a('0x4b')]=qs[_0xab0a('0x30')](_[_0xab0a('0x4c')](_0x545467[_0xab0a('0x2e')],_0x5484b4[_0xab0a('0x30')]),_0x1721dc);if(_0x545467['query']['filter']){_0x6e7316[_0xab0a('0x4b')]=_[_0xab0a('0x4d')](_0x6e7316[_0xab0a('0x4b')],{'$or':_[_0xab0a('0x2a')](_0x1721dc,function(_0x33a5d2){if(_0x33a5d2[_0xab0a('0x4e')]!==_0xab0a('0x4f')){var _0xfb60e7={};_0xfb60e7[_0x33a5d2[_0xab0a('0x27')]]={'$like':'%'+_0x545467['query'][_0xab0a('0x50')]+'%'};return _0xfb60e7;}})});}_0x6e7316=_[_0xab0a('0x4d')]({},_0x6e7316,_0x545467[_0xab0a('0x51')]);var _0x29c455={'where':_0x6e7316[_0xab0a('0x4b')]};return db[_0xab0a('0x2b')][_0xab0a('0x1e')](_0x29c455)[_0xab0a('0x24')](function(_0xc744d1){_0x346356['count']=_0xc744d1;if(_0x545467[_0xab0a('0x2e')][_0xab0a('0x52')]){_0x6e7316[_0xab0a('0x53')]=[{'all':!![]}];}return db['CmHopper'][_0xab0a('0x54')](_0x6e7316);})[_0xab0a('0x24')](function(_0x5e6ee0){_0x346356['rows']=_0x5e6ee0;return _0x346356;})['then'](respondWithFilteredResult(_0x17f385,_0x6e7316))[_0xab0a('0x55')](handleError(_0x17f385,null));};exports[_0xab0a('0x56')]=function(_0x1ad8dc,_0x1fefbe){var _0x9c52f8={'raw':!![],'where':{'id':_0x1ad8dc[_0xab0a('0x57')]['id']}},_0x42859f={};_0x42859f[_0xab0a('0x43')]=_[_0xab0a('0x2d')](db[_0xab0a('0x2b')][_0xab0a('0x2c')]);_0x42859f['query']=_[_0xab0a('0x2d')](_0x1ad8dc[_0xab0a('0x2e')]);_0x42859f['filters']=_[_0xab0a('0x2f')](_0x42859f[_0xab0a('0x43')],_0x42859f['query']);_0x9c52f8[_0xab0a('0x45')]=_[_0xab0a('0x2f')](_0x42859f[_0xab0a('0x43')],qs[_0xab0a('0x44')](_0x1ad8dc[_0xab0a('0x2e')]['fields']));_0x9c52f8[_0xab0a('0x45')]=_0x9c52f8['attributes'][_0xab0a('0x46')]?_0x9c52f8['attributes']:_0x42859f[_0xab0a('0x43')];if(_0x1ad8dc[_0xab0a('0x2e')]['includeAll']){_0x9c52f8['include']=[{'all':!![]}];}_0x9c52f8=_[_0xab0a('0x4d')]({},_0x9c52f8,_0x1ad8dc[_0xab0a('0x51')]);return db['CmHopper'][_0xab0a('0x58')](_0x9c52f8)[_0xab0a('0x24')](handleEntityNotFound(_0x1fefbe,null))[_0xab0a('0x24')](respondWithResult(_0x1fefbe,null))[_0xab0a('0x55')](handleError(_0x1fefbe,null));};exports[_0xab0a('0x59')]=function(_0x3bfdda,_0x4e09c1){return db[_0xab0a('0x2b')][_0xab0a('0x59')](_0x3bfdda[_0xab0a('0x5a')],{})[_0xab0a('0x24')](respondWithResult(_0x4e09c1,0xc9))[_0xab0a('0x55')](handleError(_0x4e09c1,null));};exports['update']=function(_0x442a1d,_0x40d62b){if(_0x442a1d[_0xab0a('0x5a')]['id']){delete _0x442a1d[_0xab0a('0x5a')]['id'];}return db[_0xab0a('0x2b')][_0xab0a('0x58')]({'where':{'id':_0x442a1d[_0xab0a('0x57')]['id']}})[_0xab0a('0x24')](handleEntityNotFound(_0x40d62b,null))[_0xab0a('0x24')](saveUpdates(_0x442a1d[_0xab0a('0x5a')],null))[_0xab0a('0x24')](respondWithResult(_0x40d62b,null))[_0xab0a('0x55')](handleError(_0x40d62b,null));};exports['describe']=function(_0x3e5773,_0x1270bb){return db['CmHopper'][_0xab0a('0x5b')]()['then'](respondWithResult(_0x1270bb,null))[_0xab0a('0x55')](handleError(_0x1270bb,null));};exports[_0xab0a('0x5c')]=function(_0x4b319d,_0x4c33aa){var _0x4310fe;return db[_0xab0a('0x2b')][_0xab0a('0x58')]({'where':{'id':_0x4b319d['params']['id']}})[_0xab0a('0x24')](handleEntityNotFound(_0x4c33aa,null))[_0xab0a('0x24')](function(_0x241bac){if(_0x241bac){return _0x241bac[_0xab0a('0x5c')]()[_0xab0a('0x24')](function(_0x3037a1){return _0x3037a1;});}})['then'](function(_0x3a2299){_0x4310fe=_0x3a2299;if(_0x3a2299){if(_0x3a2299[_0xab0a('0x5d')]||_0x3a2299['CampaignId']){return db[_0x3a2299[_0xab0a('0x5d')]?_0xab0a('0x5e'):_0xab0a('0x5f')][_0xab0a('0x58')]({'where':{'id':_0x3a2299[_0xab0a('0x5d')]?_0x3a2299[_0xab0a('0x5d')]:_0x3a2299[_0xab0a('0x60')]},'attributes':['id',_0xab0a('0x27')],'raw':!![]});}}})[_0xab0a('0x24')](function(_0x3df7ea){var _0x536281={};if(_0x3df7ea){_[_0xab0a('0x4d')](_0x536281,_['omit'](_0x4310fe['dataValues'],[_0xab0a('0x61'),_0xab0a('0x62'),'id']));_0x536281[_0xab0a('0x63')]=0x15;_0x536281[_0xab0a('0x64')]=_0xab0a('0x65');_0x536281[_0xab0a('0x66')]=_0x3df7ea[_0xab0a('0x27')];_0x536281[_0xab0a('0x67')]=_0x4b319d[_0xab0a('0x68')][_0xab0a('0x27')];_0x536281[_0xab0a('0x69')]=_0x4b319d[_0xab0a('0x68')]['id'];_0x536281[_0xab0a('0x65')]=!![];_0x536281['deletedat']=moment()[_0xab0a('0x6a')]('YYYY-MM-DD\x20HH:mm:ss');_0x536281[_0xab0a('0x6b')]=_0x4310fe['phone'];_0x536281['campaigntype']=_0x4310fe[_0xab0a('0x5d')]?'queue':_0xab0a('0x6c');return db['CmContact'][_0xab0a('0x58')]({'where':{'id':_0x536281[_0xab0a('0x6d')]},'attributes':['firstName',_0xab0a('0x6e')]})[_0xab0a('0x24')](function(_0x47cab6){if(!_[_0xab0a('0x6f')](_0x4c33aa)&&!_['isNil'](_0x47cab6[_0xab0a('0x70')])){_0x536281[_0xab0a('0x71')]=_0x47cab6['firstName'];if(!_[_0xab0a('0x6f')](_0x47cab6[_0xab0a('0x6e')])){_0x536281[_0xab0a('0x71')]+='\x20'+_0x47cab6['lastName'];}}})[_0xab0a('0x72')](function(){return db['CmHopperFinal'][_0xab0a('0x59')](_0x536281);});}})['then'](function(){return _0x4c33aa[_0xab0a('0x19')](0xcc)[_0xab0a('0x1a')]();})['catch'](handleError(_0x4c33aa,null));};exports[_0xab0a('0x73')]=function(_0x3479b2,_0x3a8976,_0x4a48f1){var _0x1df739=[];return db[_0xab0a('0x74')][_0xab0a('0x5b')]()[_0xab0a('0x24')](function(_0xe20c3a){_0x1df739=_[_0xab0a('0x2d')](_0xe20c3a);return _0x3479b2['user'][_0xab0a('0x75')]({'where':{'type':_0xab0a('0x76'),'dialActive':!![],'dialMethod':_0xab0a('0x77')},'attributes':['id',_0xab0a('0x78')],'raw':!![]});})[_0xab0a('0x24')](function(_0x5baa23){if(_0x5baa23&&_0x5baa23[_0xab0a('0x46')]){return db[_0xab0a('0x79')][_0xab0a('0x7a')](function(_0x22541e){var _0xf440de={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0xab0a('0x7b'))},'VoiceQueueId':{'$in':_[_0xab0a('0x2a')](_0x5baa23,'id')},'$or':[{'UserId':null},{'UserId':_0x3479b2[_0xab0a('0x68')]['id']}]};var _0x22b5b1=[];if(_0x3479b2['body'][_0xab0a('0x7c')]&&_0x3479b2['body'][_0xab0a('0x7c')]===_0xab0a('0x7d')){if(!_['isEmpty'](_0x3479b2['body'][_0xab0a('0x7e')])){_0xf440de['id']={'$in':_0x3479b2['body'][_0xab0a('0x7e')]};}_0x22b5b1=[['priority',_0xab0a('0x7f')],[_0xab0a('0x80'),_0x5baa23[0x0][_0xab0a('0x78')]===_0xab0a('0x7f')?_0xab0a('0x81'):_0xab0a('0x7f')],db[_0xab0a('0x79')][_0xab0a('0x82')](_0xab0a('0x83')),['id','DESC']];}else{if(!_['isEmpty'](_0x3479b2['body']['hopperIds'])){_0xf440de['id']={'$notIn':_0x3479b2['body'][_0xab0a('0x7e')]};}_0x22b5b1=[[_0xab0a('0x84'),_0xab0a('0x81')],[_0xab0a('0x80'),_0x5baa23[0x0]['dialOrderByScheduledAt']],db[_0xab0a('0x79')][_0xab0a('0x82')](_0xab0a('0x85')),['id',_0xab0a('0x7f')]];}return db[_0xab0a('0x2b')]['findOne']({'attributes':['id',_0xab0a('0x86')],'where':_0xf440de,'order':_0x22b5b1,'transaction':_0x22541e,'lock':_0x22541e['LOCK']['UPDATE'],'include':[{'model':db[_0xab0a('0x74')],'as':_0xab0a('0x87'),'attributes':_0x1df739,'include':[{'model':db[_0xab0a('0x88')],'as':_0xab0a('0x89'),'attributes':['id','name']}]},{'model':db[_0xab0a('0x8a')],'as':_0xab0a('0x8b'),'attributes':['id',_0xab0a('0x27')]},{'model':db['VoiceQueue'],'as':_0xab0a('0x8c'),'attributes':['id',_0xab0a('0x27'),'dialActive']}]})['then'](function(_0x52b0c4){if(_0x52b0c4){return _0x52b0c4[_0xab0a('0x8d')]({'UserId':_0x3479b2['user']['id']},{'transaction':_0x22541e});}});});}})[_0xab0a('0x24')](handleEntityNotFound(_0x3a8976,null))[_0xab0a('0x24')](respondWithResult(_0x3a8976,null))[_0xab0a('0x55')](handleError(_0x3a8976,null));};exports[_0xab0a('0x8e')]=function(_0x14a48f,_0x3f830b,_0xf8312b){return _0x14a48f[_0xab0a('0x68')][_0xab0a('0x75')]({'where':{'type':_0xab0a('0x76'),'dialActive':!![],'dialMethod':_0xab0a('0x77')},'attributes':['id'],'raw':!![]})[_0xab0a('0x24')](function(_0x59db4f){if(_0x59db4f&&_0x59db4f['length']){return db[_0xab0a('0x2b')]['count']({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xab0a('0x6a')](_0xab0a('0x7b'))},'VoiceQueueId':{'$in':_[_0xab0a('0x2a')](_0x59db4f,'id')},'$or':[{'UserId':null},{'UserId':_0x14a48f[_0xab0a('0x68')]['id']}]}});}return 0x0;})[_0xab0a('0x24')](function(_0x32a3e1){if(!_[_0xab0a('0x6f')](_0x32a3e1)&&_[_0xab0a('0x8f')](_0x32a3e1)){return _0x3f830b[_0xab0a('0x19')](0xc8)[_0xab0a('0x1b')]({'contacts':_0x32a3e1});}else{logger[_0xab0a('0x25')](_0xab0a('0x90'),'getOpenContacts',0x194,_0xab0a('0x91'));_0x3f830b[_0xab0a('0x18')](0x194);}})[_0xab0a('0x55')](handleError(_0x3f830b,null));};
\ No newline at end of file
+var _0x5c6d=['findOne','UPDATE','CmCompany','Company','CmList','List','Queue','dialActive','getOpenContacts','preview','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','end','sendStatus','error','name','send','CmHopper','rawAttributes','type','key','model','map','keys','query','intersection','filters','$and','$or','$gt','$gte','$lt','$ne','$eq','$not','$in','$notLike','$iLike','$notILike','$like','$overlap','$contains','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','describe','VoiceQueueId','CampaignId','Campaign','omit','dataValues','updatedAt','deleted','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','phone','campaigntype','queue','CmContact','ContactId','firstName','isNil','calleridname','lastName','finally','CmHopperFinal','getPreview','getVoiceQueues','outbound','dialOrderByScheduledAt','transaction','direction','prev','isEmpty','hopperIds','priority','ASC','sequelize','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','scheduledAt','COALESCE(CmHopper.UserId,\x200)\x20DESC'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5c6d,0x1c0));var _0xd5c6=function(_0x20a0cf,_0xddc677){_0x20a0cf=_0x20a0cf-0x0;var _0x1ba1ba=_0x5c6d[_0x20a0cf];return _0x1ba1ba;};'use strict';var emlformat=require(_0xd5c6('0x0'));var rimraf=require(_0xd5c6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd5c6('0x2'));var rp=require(_0xd5c6('0x3'));var moment=require(_0xd5c6('0x4'));var BPromise=require(_0xd5c6('0x5'));var Mustache=require('mustache');var util=require(_0xd5c6('0x6'));var path=require('path');var sox=require(_0xd5c6('0x7'));var csv=require(_0xd5c6('0x8'));var ejs=require(_0xd5c6('0x9'));var fs=require('fs');var fs_extra=require(_0xd5c6('0xa'));var _=require(_0xd5c6('0xb'));var squel=require(_0xd5c6('0xc'));var crypto=require(_0xd5c6('0xd'));var jsforce=require(_0xd5c6('0xe'));var deskjs=require(_0xd5c6('0xf'));var toCsv=require(_0xd5c6('0x8'));var querystring=require(_0xd5c6('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xd5c6('0x11'));var qs=require(_0xd5c6('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd5c6('0x13'));var utils=require(_0xd5c6('0x14'));var config=require(_0xd5c6('0x15'));var licenseUtil=require(_0xd5c6('0x16'));var db=require(_0xd5c6('0x17'))['db'];function respondWithStatusCode(_0x4a1fa4,_0x4ce78e){_0x4ce78e=_0x4ce78e||0xcc;return function(_0x3a63d7){if(_0x3a63d7){return _0x4a1fa4['sendStatus'](_0x4ce78e);}return _0x4a1fa4[_0xd5c6('0x18')](_0x4ce78e)['end']();};}function respondWithResult(_0x47ca5f,_0x253e6b){_0x253e6b=_0x253e6b||0xc8;return function(_0x5dc0b5){if(_0x5dc0b5){return _0x47ca5f[_0xd5c6('0x18')](_0x253e6b)[_0xd5c6('0x19')](_0x5dc0b5);}};}function respondWithFilteredResult(_0x5a25fe,_0x20557b){return function(_0x517686){if(_0x517686){var _0xff3370=typeof _0x20557b[_0xd5c6('0x1a')]===_0xd5c6('0x1b')&&typeof _0x20557b[_0xd5c6('0x1c')]==='undefined';var _0x2779f4=_0x517686[_0xd5c6('0x1d')];var _0x5772df=_0xff3370?0x0:_0x20557b[_0xd5c6('0x1a')];var _0xbbbe9e=_0xff3370?_0x517686[_0xd5c6('0x1d')]:_0x20557b[_0xd5c6('0x1a')]+_0x20557b[_0xd5c6('0x1c')];var _0x49c80e;if(_0xbbbe9e>=_0x2779f4){_0xbbbe9e=_0x2779f4;_0x49c80e=0xc8;}else{_0x49c80e=0xce;}_0x5a25fe[_0xd5c6('0x18')](_0x49c80e);return _0x5a25fe[_0xd5c6('0x1e')](_0xd5c6('0x1f'),_0x5772df+'-'+_0xbbbe9e+'/'+_0x2779f4)['json'](_0x517686);}return null;};}function patchUpdates(_0x191c34){return function(_0x29de7e){try{jsonpatch[_0xd5c6('0x20')](_0x29de7e,_0x191c34,!![]);}catch(_0x289950){return BPromise[_0xd5c6('0x21')](_0x289950);}return _0x29de7e[_0xd5c6('0x22')]();};}function saveUpdates(_0x4ad7fa,_0x6e56c5){return function(_0x5779d5){if(_0x5779d5){return _0x5779d5[_0xd5c6('0x23')](_0x4ad7fa)[_0xd5c6('0x24')](function(_0x4281af){return _0x4281af;});}return null;};}function removeEntity(_0x266573,_0x2bbc1c){return function(_0x2bb4ac){if(_0x2bb4ac){return _0x2bb4ac['destroy']()[_0xd5c6('0x24')](function(){_0x266573[_0xd5c6('0x18')](0xcc)[_0xd5c6('0x25')]();});}};}function handleEntityNotFound(_0x4e407c,_0x53cc08){return function(_0x2ddc3d){if(!_0x2ddc3d){_0x4e407c[_0xd5c6('0x26')](0x194);}return _0x2ddc3d;};}function handleError(_0x1d94bc,_0x42faaf){_0x42faaf=_0x42faaf||0x1f4;return function(_0x2cd412){logger[_0xd5c6('0x27')](_0x2cd412['stack']);if(_0x2cd412[_0xd5c6('0x28')]){delete _0x2cd412[_0xd5c6('0x28')];}_0x1d94bc['status'](_0x42faaf)[_0xd5c6('0x29')](_0x2cd412);};}exports['index']=function(_0x431d0d,_0x517f1e){var _0x39ec4e={},_0x2b9885={},_0x56cfe6={'count':0x0,'rows':[]};var _0x3fe2af=_['map'](db[_0xd5c6('0x2a')][_0xd5c6('0x2b')],function(_0x450e23){return{'name':_0x450e23['fieldName'],'type':_0x450e23[_0xd5c6('0x2c')][_0xd5c6('0x2d')]};});_0x2b9885[_0xd5c6('0x2e')]=_[_0xd5c6('0x2f')](_0x3fe2af,_0xd5c6('0x28'));_0x2b9885['query']=_[_0xd5c6('0x30')](_0x431d0d[_0xd5c6('0x31')]);_0x2b9885['filters']=_[_0xd5c6('0x32')](_0x2b9885[_0xd5c6('0x2e')],_0x2b9885[_0xd5c6('0x31')]);_0x2b9885[_0xd5c6('0x33')]=_['concat'](_0x2b9885[_0xd5c6('0x33')],[_0xd5c6('0x34'),_0xd5c6('0x35'),_0xd5c6('0x36'),_0xd5c6('0x37'),_0xd5c6('0x38'),'$lte',_0xd5c6('0x39'),_0xd5c6('0x3a'),_0xd5c6('0x3b'),'$between','$notBetween',_0xd5c6('0x3c'),'$notIn','$like',_0xd5c6('0x3d'),_0xd5c6('0x3e'),_0xd5c6('0x3f'),_0xd5c6('0x40'),_0xd5c6('0x41'),_0xd5c6('0x42'),_0xd5c6('0x43'),_0xd5c6('0x44')]);_0x39ec4e[_0xd5c6('0x45')]=_['intersection'](_0x2b9885['model'],qs[_0xd5c6('0x46')](_0x431d0d[_0xd5c6('0x31')][_0xd5c6('0x46')]));_0x39ec4e[_0xd5c6('0x45')]=_0x39ec4e[_0xd5c6('0x45')][_0xd5c6('0x47')]?_0x39ec4e['attributes']:_0x2b9885[_0xd5c6('0x2e')];if(!_0x431d0d['query'][_0xd5c6('0x48')](_0xd5c6('0x49'))){_0x39ec4e['limit']=qs[_0xd5c6('0x1c')](_0x431d0d[_0xd5c6('0x31')][_0xd5c6('0x1c')]);_0x39ec4e[_0xd5c6('0x1a')]=qs[_0xd5c6('0x1a')](_0x431d0d[_0xd5c6('0x31')]['offset']);}_0x39ec4e['order']=qs[_0xd5c6('0x4a')](_0x431d0d[_0xd5c6('0x31')][_0xd5c6('0x4a')]);_0x39ec4e[_0xd5c6('0x4b')]=qs['filters'](_[_0xd5c6('0x4c')](_0x431d0d[_0xd5c6('0x31')],_0x2b9885[_0xd5c6('0x33')]),_0x3fe2af);if(_0x431d0d[_0xd5c6('0x31')][_0xd5c6('0x4d')]){_0x39ec4e[_0xd5c6('0x4b')]=_[_0xd5c6('0x4e')](_0x39ec4e[_0xd5c6('0x4b')],{'$or':_[_0xd5c6('0x2f')](_0x3fe2af,function(_0x68578e){if(_0x68578e[_0xd5c6('0x2c')]!=='VIRTUAL'){var _0x18020d={};_0x18020d[_0x68578e['name']]={'$like':'%'+_0x431d0d[_0xd5c6('0x31')][_0xd5c6('0x4d')]+'%'};return _0x18020d;}})});}_0x39ec4e=_[_0xd5c6('0x4e')]({},_0x39ec4e,_0x431d0d[_0xd5c6('0x4f')]);var _0x537cb7={'where':_0x39ec4e[_0xd5c6('0x4b')]};return db['CmHopper'][_0xd5c6('0x1d')](_0x537cb7)[_0xd5c6('0x24')](function(_0x18f4a2){_0x56cfe6[_0xd5c6('0x1d')]=_0x18f4a2;if(_0x431d0d[_0xd5c6('0x31')][_0xd5c6('0x50')]){_0x39ec4e[_0xd5c6('0x51')]=[{'all':!![]}];}return db[_0xd5c6('0x2a')][_0xd5c6('0x52')](_0x39ec4e);})['then'](function(_0xa8c998){_0x56cfe6[_0xd5c6('0x53')]=_0xa8c998;return _0x56cfe6;})[_0xd5c6('0x24')](respondWithFilteredResult(_0x517f1e,_0x39ec4e))[_0xd5c6('0x54')](handleError(_0x517f1e,null));};exports[_0xd5c6('0x55')]=function(_0x202bfd,_0x55dd04){var _0x541765={'raw':!![],'where':{'id':_0x202bfd[_0xd5c6('0x56')]['id']}},_0x1f3934={};_0x1f3934[_0xd5c6('0x2e')]=_[_0xd5c6('0x30')](db[_0xd5c6('0x2a')][_0xd5c6('0x2b')]);_0x1f3934[_0xd5c6('0x31')]=_['keys'](_0x202bfd['query']);_0x1f3934[_0xd5c6('0x33')]=_[_0xd5c6('0x32')](_0x1f3934[_0xd5c6('0x2e')],_0x1f3934[_0xd5c6('0x31')]);_0x541765[_0xd5c6('0x45')]=_[_0xd5c6('0x32')](_0x1f3934[_0xd5c6('0x2e')],qs['fields'](_0x202bfd['query'][_0xd5c6('0x46')]));_0x541765[_0xd5c6('0x45')]=_0x541765[_0xd5c6('0x45')]['length']?_0x541765[_0xd5c6('0x45')]:_0x1f3934['model'];if(_0x202bfd[_0xd5c6('0x31')][_0xd5c6('0x50')]){_0x541765[_0xd5c6('0x51')]=[{'all':!![]}];}_0x541765=_['merge']({},_0x541765,_0x202bfd['options']);return db['CmHopper']['find'](_0x541765)['then'](handleEntityNotFound(_0x55dd04,null))['then'](respondWithResult(_0x55dd04,null))[_0xd5c6('0x54')](handleError(_0x55dd04,null));};exports[_0xd5c6('0x57')]=function(_0x9d843d,_0x23b016){return db[_0xd5c6('0x2a')]['create'](_0x9d843d[_0xd5c6('0x58')],{})['then'](respondWithResult(_0x23b016,0xc9))[_0xd5c6('0x54')](handleError(_0x23b016,null));};exports[_0xd5c6('0x23')]=function(_0x3de41c,_0x5cd4de){if(_0x3de41c[_0xd5c6('0x58')]['id']){delete _0x3de41c['body']['id'];}return db[_0xd5c6('0x2a')][_0xd5c6('0x59')]({'where':{'id':_0x3de41c[_0xd5c6('0x56')]['id']}})[_0xd5c6('0x24')](handleEntityNotFound(_0x5cd4de,null))['then'](saveUpdates(_0x3de41c[_0xd5c6('0x58')],null))[_0xd5c6('0x24')](respondWithResult(_0x5cd4de,null))[_0xd5c6('0x54')](handleError(_0x5cd4de,null));};exports[_0xd5c6('0x5a')]=function(_0x5839db,_0x47b190){return db['CmHopper'][_0xd5c6('0x5a')]()[_0xd5c6('0x24')](respondWithResult(_0x47b190,null))[_0xd5c6('0x54')](handleError(_0x47b190,null));};exports['destroy']=function(_0x34c8a9,_0x1522d8){var _0x11b9dd;return db[_0xd5c6('0x2a')][_0xd5c6('0x59')]({'where':{'id':_0x34c8a9[_0xd5c6('0x56')]['id']}})[_0xd5c6('0x24')](handleEntityNotFound(_0x1522d8,null))['then'](function(_0x1a855d){if(_0x1a855d){return _0x1a855d['destroy']()[_0xd5c6('0x24')](function(_0x332aaf){return _0x332aaf;});}})['then'](function(_0x600d6c){_0x11b9dd=_0x600d6c;if(_0x600d6c){if(_0x600d6c[_0xd5c6('0x5b')]||_0x600d6c[_0xd5c6('0x5c')]){return db[_0x600d6c[_0xd5c6('0x5b')]?'VoiceQueue':_0xd5c6('0x5d')][_0xd5c6('0x59')]({'where':{'id':_0x600d6c[_0xd5c6('0x5b')]?_0x600d6c[_0xd5c6('0x5b')]:_0x600d6c['CampaignId']},'attributes':['id','name'],'raw':!![]});}}})[_0xd5c6('0x24')](function(_0x243315){var _0x43e13c={};if(_0x243315){_[_0xd5c6('0x4e')](_0x43e13c,_[_0xd5c6('0x5e')](_0x11b9dd[_0xd5c6('0x5f')],['createdAt',_0xd5c6('0x60'),'id']));_0x43e13c['state']=0x15;_0x43e13c['statedesc']=_0xd5c6('0x61');_0x43e13c[_0xd5c6('0x62')]=_0x243315[_0xd5c6('0x28')];_0x43e13c[_0xd5c6('0x63')]=_0x34c8a9[_0xd5c6('0x64')][_0xd5c6('0x28')];_0x43e13c[_0xd5c6('0x65')]=_0x34c8a9[_0xd5c6('0x64')]['id'];_0x43e13c[_0xd5c6('0x61')]=!![];_0x43e13c[_0xd5c6('0x66')]=moment()[_0xd5c6('0x67')](_0xd5c6('0x68'));_0x43e13c['calleridnum']=_0x11b9dd[_0xd5c6('0x69')];_0x43e13c[_0xd5c6('0x6a')]=_0x11b9dd['VoiceQueueId']?_0xd5c6('0x6b'):'ivr';return db[_0xd5c6('0x6c')]['find']({'where':{'id':_0x43e13c[_0xd5c6('0x6d')]},'attributes':[_0xd5c6('0x6e'),'lastName']})['then'](function(_0x43100a){if(!_['isNil'](_0x1522d8)&&!_[_0xd5c6('0x6f')](_0x43100a['firstName'])){_0x43e13c[_0xd5c6('0x70')]=_0x43100a[_0xd5c6('0x6e')];if(!_['isNil'](_0x43100a[_0xd5c6('0x71')])){_0x43e13c[_0xd5c6('0x70')]+='\x20'+_0x43100a[_0xd5c6('0x71')];}}})[_0xd5c6('0x72')](function(){return db[_0xd5c6('0x73')]['create'](_0x43e13c);});}})[_0xd5c6('0x24')](function(){return _0x1522d8[_0xd5c6('0x18')](0xcc)[_0xd5c6('0x25')]();})[_0xd5c6('0x54')](handleError(_0x1522d8,null));};exports[_0xd5c6('0x74')]=function(_0x537f63,_0x34dfc3,_0x5de311){var _0x28b0ec=[];return db['CmContact'][_0xd5c6('0x5a')]()[_0xd5c6('0x24')](function(_0x593ffe){_0x28b0ec=_[_0xd5c6('0x30')](_0x593ffe);return _0x537f63[_0xd5c6('0x64')][_0xd5c6('0x75')]({'where':{'type':_0xd5c6('0x76'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0xd5c6('0x77')],'raw':!![]});})[_0xd5c6('0x24')](function(_0x36e76b){if(_0x36e76b&&_0x36e76b[_0xd5c6('0x47')]){return db['sequelize'][_0xd5c6('0x78')](function(_0x1c9c2d){var _0x12fd43={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0xd5c6('0x68'))},'VoiceQueueId':{'$in':_[_0xd5c6('0x2f')](_0x36e76b,'id')},'$or':[{'UserId':null},{'UserId':_0x537f63[_0xd5c6('0x64')]['id']}]};var _0x1e7e6b=[];if(_0x537f63[_0xd5c6('0x58')][_0xd5c6('0x79')]&&_0x537f63[_0xd5c6('0x58')][_0xd5c6('0x79')]===_0xd5c6('0x7a')){if(!_[_0xd5c6('0x7b')](_0x537f63['body'][_0xd5c6('0x7c')])){_0x12fd43['id']={'$in':_0x537f63[_0xd5c6('0x58')]['hopperIds']};}_0x1e7e6b=[[_0xd5c6('0x7d'),_0xd5c6('0x7e')],['scheduledAt',_0x36e76b[0x0][_0xd5c6('0x77')]===_0xd5c6('0x7e')?'DESC':'ASC'],db[_0xd5c6('0x7f')]['literal'](_0xd5c6('0x80')),['id',_0xd5c6('0x81')]];}else{if(!_[_0xd5c6('0x7b')](_0x537f63[_0xd5c6('0x58')]['hopperIds'])){_0x12fd43['id']={'$notIn':_0x537f63[_0xd5c6('0x58')][_0xd5c6('0x7c')]};}_0x1e7e6b=[['priority',_0xd5c6('0x81')],[_0xd5c6('0x82'),_0x36e76b[0x0][_0xd5c6('0x77')]],db[_0xd5c6('0x7f')]['literal'](_0xd5c6('0x83')),['id',_0xd5c6('0x7e')]];}return db[_0xd5c6('0x2a')][_0xd5c6('0x84')]({'attributes':['id','scheduledat'],'where':_0x12fd43,'order':_0x1e7e6b,'transaction':_0x1c9c2d,'lock':_0x1c9c2d['LOCK'][_0xd5c6('0x85')],'include':[{'model':db['CmContact'],'as':'Contact','attributes':_0x28b0ec,'include':[{'model':db[_0xd5c6('0x86')],'as':_0xd5c6('0x87'),'attributes':['id',_0xd5c6('0x28')]}]},{'model':db[_0xd5c6('0x88')],'as':_0xd5c6('0x89'),'attributes':['id',_0xd5c6('0x28')]},{'model':db['VoiceQueue'],'as':_0xd5c6('0x8a'),'attributes':['id',_0xd5c6('0x28'),_0xd5c6('0x8b')]}]})[_0xd5c6('0x24')](function(_0x20f773){if(_0x20f773){return _0x20f773[_0xd5c6('0x23')]({'UserId':_0x537f63['user']['id']},{'transaction':_0x1c9c2d});}});});}})['then'](handleEntityNotFound(_0x34dfc3,null))[_0xd5c6('0x24')](respondWithResult(_0x34dfc3,null))[_0xd5c6('0x54')](handleError(_0x34dfc3,null));};exports[_0xd5c6('0x8c')]=function(_0x36c530,_0x371e5b,_0x2bd983){return _0x36c530['user'][_0xd5c6('0x75')]({'where':{'type':_0xd5c6('0x76'),'dialActive':!![],'dialMethod':_0xd5c6('0x8d')},'attributes':['id'],'raw':!![]})[_0xd5c6('0x24')](function(_0x1b0d2b){if(_0x1b0d2b&&_0x1b0d2b[_0xd5c6('0x47')]){return db[_0xd5c6('0x2a')][_0xd5c6('0x1d')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xd5c6('0x67')](_0xd5c6('0x68'))},'VoiceQueueId':{'$in':_['map'](_0x1b0d2b,'id')},'$or':[{'UserId':null},{'UserId':_0x36c530[_0xd5c6('0x64')]['id']}]}});}return 0x0;})['then'](function(_0x475e30){if(!_[_0xd5c6('0x6f')](_0x475e30)&&_[_0xd5c6('0x8e')](_0x475e30)){return _0x371e5b[_0xd5c6('0x18')](0xc8)[_0xd5c6('0x19')]({'contacts':_0x475e30});}else{logger[_0xd5c6('0x27')](_0xd5c6('0x8f'),_0xd5c6('0x8c'),0x194,_0xd5c6('0x90'));_0x371e5b['sendStatus'](0x194);}})[_0xd5c6('0x54')](handleError(_0x371e5b,null));};
\ No newline at end of file
index 86dc1e5..92331a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b1=['priority','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','define','CmHopper','cm_hopper','scheduledat','phone'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x90b1,0x1bb));var _0x190b=function(_0x3e478c,_0x3afee8){_0x3e478c=_0x3e478c-0x0;var _0x3a0906=_0x90b1[_0x3e478c];return _0x3a0906;};'use strict';var _=require(_0x190b('0x0'));var util=require(_0x190b('0x1'));var logger=require(_0x190b('0x2'))('api');var moment=require('moment');var BPromise=require(_0x190b('0x3'));var rp=require(_0x190b('0x4'));var fs=require('fs');var path=require(_0x190b('0x5'));var rimraf=require(_0x190b('0x6'));var config=require('../../config/environment');var attributes=require('./cmHopper.attributes');module['exports']=function(_0x5da9c1,_0x27ff8c){return _0x5da9c1[_0x190b('0x7')](_0x190b('0x8'),attributes,{'tableName':_0x190b('0x9'),'paranoid':![],'indexes':[{'name':_0x190b('0xa'),'fields':[_0x190b('0xa')]},{'name':_0x190b('0xb'),'fields':['phone']},{'name':_0x190b('0xc'),'fields':[_0x190b('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x524e=['define','CmHopper','scheduledat','phone','priority','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports'];(function(_0x5567b9,_0x2d6696){var _0x156466=function(_0x307ba1){while(--_0x307ba1){_0x5567b9['push'](_0x5567b9['shift']());}};_0x156466(++_0x2d6696);}(_0x524e,0x15e));var _0xe524=function(_0x1744f5,_0x1384ea){_0x1744f5=_0x1744f5-0x0;var _0x5cde3e=_0x524e[_0x1744f5];return _0x5cde3e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe524('0x0'))(_0xe524('0x1'));var moment=require(_0xe524('0x2'));var BPromise=require(_0xe524('0x3'));var rp=require(_0xe524('0x4'));var fs=require('fs');var path=require(_0xe524('0x5'));var rimraf=require(_0xe524('0x6'));var config=require(_0xe524('0x7'));var attributes=require(_0xe524('0x8'));module[_0xe524('0x9')]=function(_0x4f75d6,_0xaaeaa9){return _0x4f75d6[_0xe524('0xa')](_0xe524('0xb'),attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':_0xe524('0xc'),'fields':[_0xe524('0xc')]},{'name':_0xe524('0xd'),'fields':[_0xe524('0xd')]},{'name':_0xe524('0xe'),'fields':[_0xe524('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index df8a108..746e133 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d7f=['request','info','CmHopper,\x20%s,\x20%s','request\x20sent','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetCmHopper','options','raw','where','attributes','limit','include','model','map','debug','ShowCmHopper','CmHopper','find','then','CreateCmHopper','create','body','UpdateCmHopper','destroy','DestroyCmHopper','GetContactDialer','CmContact','transaction','findAll','order','UPDATE','Contact','keys','User','Agent','name','voicePause','UserId','push','update','all','MoveContactManagedDialer','sequelize','CmHopperFinal','CountReScheduled','COUNT','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','GetContactRecallMe','LOCK','length','GetCmHopperPreview','describe','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0xce1c9a,_0x5c0290){var _0x25afd3=function(_0x4ec42c){while(--_0x4ec42c){_0xce1c9a['push'](_0xce1c9a['shift']());}};_0x25afd3(++_0x5c0290);}(_0x2d7f,0x11c));var _0xf2d7=function(_0x23e6c9,_0x22b81f){_0x23e6c9=_0x23e6c9-0x0;var _0x23a4df=_0x2d7f[_0x23e6c9];return _0x23a4df;};'use strict';var _=require(_0xf2d7('0x0'));var util=require(_0xf2d7('0x1'));var moment=require(_0xf2d7('0x2'));var BPromise=require(_0xf2d7('0x3'));var rs=require(_0xf2d7('0x4'));var fs=require('fs');var Redis=require(_0xf2d7('0x5'));var db=require(_0xf2d7('0x6'))['db'];var utils=require(_0xf2d7('0x7'));var logger=require('../../config/logger')(_0xf2d7('0x8'));var config=require(_0xf2d7('0x9'));var jayson=require(_0xf2d7('0xa'));var client=jayson[_0xf2d7('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x50f664,_0x41483c,_0x39e15){return new BPromise(function(_0x4502bb,_0x1b5ab3){return client[_0xf2d7('0xc')](_0x50f664,_0x39e15)['then'](function(_0x2316e8){logger[_0xf2d7('0xd')](_0xf2d7('0xe'),_0x41483c,_0xf2d7('0xf'));logger['debug'](_0xf2d7('0x10'),_0x41483c,_0xf2d7('0xf'),JSON[_0xf2d7('0x11')](_0x2316e8));if(_0x2316e8[_0xf2d7('0x12')]){if(_0x2316e8[_0xf2d7('0x12')][_0xf2d7('0x13')]===0x1f4){logger[_0xf2d7('0x12')](_0xf2d7('0xe'),_0x41483c,_0x2316e8[_0xf2d7('0x12')][_0xf2d7('0x14')]);return _0x1b5ab3(_0x2316e8['error'][_0xf2d7('0x14')]);}logger[_0xf2d7('0x12')](_0xf2d7('0xe'),_0x41483c,_0x2316e8['error'][_0xf2d7('0x14')]);return _0x4502bb(_0x2316e8[_0xf2d7('0x12')][_0xf2d7('0x14')]);}else{logger[_0xf2d7('0xd')]('CmHopper,\x20%s,\x20%s',_0x41483c,_0xf2d7('0xf'));_0x4502bb(_0x2316e8[_0xf2d7('0x15')][_0xf2d7('0x14')]);}})[_0xf2d7('0x16')](function(_0x13e38e){logger[_0xf2d7('0x12')](_0xf2d7('0xe'),_0x41483c,_0x13e38e);_0x1b5ab3(_0x13e38e);});});}exports[_0xf2d7('0x17')]=function(_0x490589){var _0x171d9f=this;return new Promise(function(_0x2b6727,_0x59e59d){return db['CmHopper']['findAll']({'raw':_0x490589[_0xf2d7('0x18')]?_0x490589[_0xf2d7('0x18')][_0xf2d7('0x19')]===undefined?!![]:![]:!![],'where':_0x490589[_0xf2d7('0x18')]?_0x490589[_0xf2d7('0x18')][_0xf2d7('0x1a')]||null:null,'attributes':_0x490589[_0xf2d7('0x18')]?_0x490589[_0xf2d7('0x18')][_0xf2d7('0x1b')]||null:null,'limit':_0x490589[_0xf2d7('0x18')]?_0x490589[_0xf2d7('0x18')][_0xf2d7('0x1c')]||null:null,'include':_0x490589[_0xf2d7('0x18')]?_0x490589[_0xf2d7('0x18')][_0xf2d7('0x1d')]?_['map'](_0x490589[_0xf2d7('0x18')][_0xf2d7('0x1d')],function(_0x56765c){return{'model':db[_0x56765c[_0xf2d7('0x1e')]],'as':_0x56765c['as'],'attributes':_0x56765c[_0xf2d7('0x1b')],'include':_0x56765c[_0xf2d7('0x1d')]?_[_0xf2d7('0x1f')](_0x56765c[_0xf2d7('0x1d')],function(_0x5c5b5e){return{'model':db[_0x5c5b5e[_0xf2d7('0x1e')]],'as':_0x5c5b5e['as'],'attributes':_0x5c5b5e[_0xf2d7('0x1b')],'include':_0x5c5b5e[_0xf2d7('0x1d')]?_['map'](_0x5c5b5e[_0xf2d7('0x1d')],function(_0xf3ac37){return{'model':db[_0xf3ac37['model']],'as':_0xf3ac37['as'],'attributes':_0xf3ac37[_0xf2d7('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5bec63){logger[_0xf2d7('0xd')](_0xf2d7('0x17'),_0x490589);logger[_0xf2d7('0x20')](_0xf2d7('0x17'),_0x490589,JSON['stringify'](_0x5bec63));_0x2b6727(_0x5bec63);})[_0xf2d7('0x16')](function(_0x375e02){logger[_0xf2d7('0x12')](_0xf2d7('0x17'),_0x375e02[_0xf2d7('0x14')],_0x490589);_0x59e59d(_0x171d9f[_0xf2d7('0x12')](0x1f4,_0x375e02['message']));});});};exports[_0xf2d7('0x21')]=function(_0x440c65){var _0x18817d=this;return new Promise(function(_0x18c977,_0x41e425){return db[_0xf2d7('0x22')][_0xf2d7('0x23')]({'raw':_0x440c65[_0xf2d7('0x18')]?_0x440c65[_0xf2d7('0x18')][_0xf2d7('0x19')]===undefined?!![]:![]:!![],'where':_0x440c65[_0xf2d7('0x18')]?_0x440c65['options'][_0xf2d7('0x1a')]||null:null,'attributes':_0x440c65['options']?_0x440c65[_0xf2d7('0x18')]['attributes']||null:null,'include':_0x440c65[_0xf2d7('0x18')]?_0x440c65[_0xf2d7('0x18')][_0xf2d7('0x1d')]?_[_0xf2d7('0x1f')](_0x440c65[_0xf2d7('0x18')][_0xf2d7('0x1d')],function(_0x2160cd){return{'model':db[_0x2160cd['model']],'as':_0x2160cd['as'],'attributes':_0x2160cd[_0xf2d7('0x1b')],'include':_0x2160cd['include']?_[_0xf2d7('0x1f')](_0x2160cd[_0xf2d7('0x1d')],function(_0x3acc73){return{'model':db[_0x3acc73['model']],'as':_0x3acc73['as'],'attributes':_0x3acc73[_0xf2d7('0x1b')],'include':_0x3acc73[_0xf2d7('0x1d')]?_['map'](_0x3acc73['include'],function(_0x449f6e){return{'model':db[_0x449f6e[_0xf2d7('0x1e')]],'as':_0x449f6e['as'],'attributes':_0x449f6e[_0xf2d7('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xf2d7('0x24')](function(_0x1897dd){logger['info'](_0xf2d7('0x21'),_0x440c65);logger['debug'](_0xf2d7('0x21'),_0x440c65,JSON[_0xf2d7('0x11')](_0x1897dd));_0x18c977(_0x1897dd);})[_0xf2d7('0x16')](function(_0x531160){logger[_0xf2d7('0x12')](_0xf2d7('0x21'),_0x531160[_0xf2d7('0x14')],_0x440c65);_0x41e425(_0x18817d[_0xf2d7('0x12')](0x1f4,_0x531160[_0xf2d7('0x14')]));});});};exports[_0xf2d7('0x25')]=function(_0x4f931b){var _0x31d52c=this;return new Promise(function(_0x27aa24,_0x336d57){return db[_0xf2d7('0x22')][_0xf2d7('0x26')](_0x4f931b[_0xf2d7('0x27')],{'raw':_0x4f931b['options']?_0x4f931b[_0xf2d7('0x18')][_0xf2d7('0x19')]===undefined?!![]:![]:!![]})[_0xf2d7('0x24')](function(_0x41afb5){logger[_0xf2d7('0xd')]('CreateCmHopper',_0x4f931b);logger['debug'](_0xf2d7('0x25'),_0x4f931b,JSON[_0xf2d7('0x11')](_0x41afb5));_0x27aa24(_0x41afb5);})['catch'](function(_0x5afa09){logger[_0xf2d7('0x12')](_0xf2d7('0x25'),_0x5afa09[_0xf2d7('0x14')],_0x4f931b);_0x336d57(_0x31d52c['error'](0x1f4,_0x5afa09[_0xf2d7('0x14')]));});});};exports[_0xf2d7('0x28')]=function(_0x29f7e6){var _0x43cc1b=this;return new Promise(function(_0x44f843,_0x428d40){return db['CmHopper']['update'](_0x29f7e6['body'],{'raw':_0x29f7e6['options']?_0x29f7e6['options'][_0xf2d7('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x29f7e6[_0xf2d7('0x18')]?_0x29f7e6[_0xf2d7('0x18')][_0xf2d7('0x1a')]||null:null,'attributes':_0x29f7e6['options']?_0x29f7e6[_0xf2d7('0x18')][_0xf2d7('0x1b')]||null:null,'limit':_0x29f7e6[_0xf2d7('0x18')]?_0x29f7e6[_0xf2d7('0x18')][_0xf2d7('0x1c')]||null:null})[_0xf2d7('0x24')](function(_0x232cfe){logger[_0xf2d7('0xd')](_0xf2d7('0x28'),_0x29f7e6);logger[_0xf2d7('0x20')](_0xf2d7('0x28'),_0x29f7e6,JSON[_0xf2d7('0x11')](_0x232cfe));_0x44f843(_0x232cfe);})[_0xf2d7('0x16')](function(_0x3e1d6f){logger['error']('UpdateCmHopper',_0x3e1d6f['message'],_0x29f7e6);_0x428d40(_0x43cc1b[_0xf2d7('0x12')](0x1f4,_0x3e1d6f[_0xf2d7('0x14')]));});});};exports['DestroyCmHopper']=function(_0x2dccae){var _0x5caccb=this;return new Promise(function(_0x774cc1,_0x12a89b){return db[_0xf2d7('0x22')][_0xf2d7('0x29')]({'where':_0x2dccae['options']?_0x2dccae['options'][_0xf2d7('0x1a')]||null:null})[_0xf2d7('0x24')](function(_0xf4582c){logger[_0xf2d7('0xd')]('DestroyCmHopper',_0x2dccae);logger[_0xf2d7('0x20')](_0xf2d7('0x2a'),_0x2dccae,JSON['stringify'](_0xf4582c));_0x774cc1(_0xf4582c);})[_0xf2d7('0x16')](function(_0xb0cdd1){logger[_0xf2d7('0x12')]('DestroyCmHopper',_0xb0cdd1[_0xf2d7('0x14')],_0x2dccae);_0x12a89b(_0x5caccb[_0xf2d7('0x12')](0x1f4,_0xb0cdd1[_0xf2d7('0x14')]));});});};exports[_0xf2d7('0x2b')]=function(_0x384507){var _0x5175b8=this;return new Promise(function(_0x27b6eb,_0x58bd5e){return db[_0xf2d7('0x2c')]['describe']()[_0xf2d7('0x24')](function(_0x3f6289){return db['sequelize'][_0xf2d7('0x2d')](function(_0x7fab5){return db[_0xf2d7('0x22')][_0xf2d7('0x2e')]({'where':_0x384507[_0xf2d7('0x18')]?_0x384507['options'][_0xf2d7('0x1a')]||null:null,'attributes':_0x384507[_0xf2d7('0x18')]?_0x384507['options']['attributes']||null:null,'limit':_0x384507[_0xf2d7('0x18')]?_0x384507[_0xf2d7('0x18')][_0xf2d7('0x1c')]||null:null,'order':_0x384507[_0xf2d7('0x18')]?_0x384507['options'][_0xf2d7('0x2f')]||null:null,'transaction':_0x7fab5,'lock':_0x7fab5['LOCK'][_0xf2d7('0x30')],'include':[{'model':db[_0xf2d7('0x2c')],'as':_0xf2d7('0x31'),'attributes':_[_0xf2d7('0x32')](_0x3f6289)},{'model':db[_0xf2d7('0x33')],'as':_0xf2d7('0x34'),'attributes':['id',_0xf2d7('0x35'),_0xf2d7('0x36')]}]})[_0xf2d7('0x24')](function(_0x2b56e0){var _0x278cc4=[];var _0x4f1dd3=[];for(var _0x6ab814=0x0;_0x6ab814<_0x2b56e0['length'];_0x6ab814+=0x1){var _0x25a6e4=_0x2b56e0[_0x6ab814][_0xf2d7('0x37')];if(_0x25a6e4===null){_0x278cc4[_0xf2d7('0x38')](_0x2b56e0[_0x6ab814][_0xf2d7('0x39')](_0x384507['body'],{'transaction':_0x7fab5}));}else if(!_0x4f1dd3['includes'](_0x25a6e4)){_0x4f1dd3[_0xf2d7('0x38')](_0x25a6e4);_0x278cc4['push'](_0x2b56e0[_0x6ab814][_0xf2d7('0x39')](_0x384507[_0xf2d7('0x27')],{'transaction':_0x7fab5}));}}return BPromise[_0xf2d7('0x3a')](_0x278cc4);});})[_0xf2d7('0x24')](function(_0x2310ca){logger[_0xf2d7('0xd')](_0xf2d7('0x2b'),_0x384507);logger['debug']('GetContactDialer',_0x384507,JSON[_0xf2d7('0x11')](_0x2310ca));_0x27b6eb(_0x2310ca);})[_0xf2d7('0x16')](function(_0x2bac57){logger[_0xf2d7('0x12')](_0xf2d7('0x2b'),_0x2bac57[_0xf2d7('0x14')],_0x384507);_0x58bd5e(_0x5175b8[_0xf2d7('0x12')](0x1f4,_0x2bac57[_0xf2d7('0x14')]));});});});};exports[_0xf2d7('0x3b')]=function(_0x171e75){var _0x2d3be6=this;return new Promise(function(_0x54312b,_0x3bbb07){return db[_0xf2d7('0x3c')][_0xf2d7('0x2d')](function(_0xbacea3){return db[_0xf2d7('0x3d')][_0xf2d7('0x26')](_0x171e75['body'],{'raw':_0x171e75['options']?_0x171e75['options'][_0xf2d7('0x19')]===undefined?!![]:![]:!![],'transaction':_0xbacea3})[_0xf2d7('0x24')](function(){return db[_0xf2d7('0x22')][_0xf2d7('0x29')]({'where':_0x171e75[_0xf2d7('0x18')]?_0x171e75[_0xf2d7('0x18')][_0xf2d7('0x1a')]||null:null,'transaction':_0xbacea3});});})[_0xf2d7('0x24')](function(_0x5e069e){logger[_0xf2d7('0xd')](_0xf2d7('0x3b'),_0x171e75);logger[_0xf2d7('0x20')](_0xf2d7('0x3b'),_0x171e75,JSON['stringify'](_0x5e069e));_0x54312b(_0x5e069e);})[_0xf2d7('0x16')](function(_0x560253){logger[_0xf2d7('0x12')](_0xf2d7('0x3b'),_0x560253[_0xf2d7('0x14')],_0x171e75);_0x3bbb07(_0x2d3be6['error'](0x1f4,_0x560253['message']));});});};exports[_0xf2d7('0x3e')]=function(_0x1d289c){var _0x2a7528=this;return new Promise(function(_0x2b6837,_0x4f1419){return db['CmHopper'][_0xf2d7('0x2e')]({'raw':_0x1d289c[_0xf2d7('0x18')]?_0x1d289c[_0xf2d7('0x18')][_0xf2d7('0x19')]===undefined?!![]:![]:!![],'where':_0x1d289c[_0xf2d7('0x18')]?_0x1d289c[_0xf2d7('0x18')][_0xf2d7('0x1a')]||null:null,'attributes':[[db[_0xf2d7('0x3c')]['fn'](_0xf2d7('0x3f'),db[_0xf2d7('0x3c')]['fn']('IF',db[_0xf2d7('0x3c')]['literal'](_0xf2d7('0x40')+util[_0xf2d7('0x41')](_0xf2d7('0x42'),moment()[_0xf2d7('0x41')](_0xf2d7('0x43')))+_0xf2d7('0x44')))),'contactsRescheduled']]})[_0xf2d7('0x24')](function(_0x54f11a){logger['info'](_0xf2d7('0x3e'),_0x1d289c);logger[_0xf2d7('0x20')]('CountReScheduled',_0x1d289c,JSON[_0xf2d7('0x11')](_0x54f11a));_0x2b6837(_0x54f11a);})[_0xf2d7('0x16')](function(_0x259843){logger[_0xf2d7('0x12')](_0xf2d7('0x3e'),_0x259843[_0xf2d7('0x14')],_0x1d289c);_0x4f1419(_0x2a7528['error'](0x1f4,_0x259843[_0xf2d7('0x14')]));});});};exports[_0xf2d7('0x45')]=function(_0x5bfdab){var _0x205bc5=this;return new Promise(function(_0x40d6ce,_0x317f70){return db['CmContact']['describe']()[_0xf2d7('0x24')](function(_0xd7ecc9){return db[_0xf2d7('0x3c')][_0xf2d7('0x2d')](function(_0x33bc6f){return db[_0xf2d7('0x22')][_0xf2d7('0x2e')]({'where':_0x5bfdab['options']?_0x5bfdab[_0xf2d7('0x18')]['where']||null:null,'attributes':_0x5bfdab[_0xf2d7('0x18')]?_0x5bfdab[_0xf2d7('0x18')][_0xf2d7('0x1b')]||null:null,'limit':0x1,'order':_0x5bfdab[_0xf2d7('0x18')]?_0x5bfdab[_0xf2d7('0x18')][_0xf2d7('0x2f')]||null:null,'group':db['CmHopper'][_0xf2d7('0x37')],'transaction':_0x33bc6f,'lock':_0x33bc6f[_0xf2d7('0x46')][_0xf2d7('0x30')],'include':_0x5bfdab[_0xf2d7('0x18')]?_0x5bfdab['options']['include']?_['map'](_0x5bfdab[_0xf2d7('0x18')]['include'],function(_0x40709d){return{'model':db[_0x40709d[_0xf2d7('0x1e')]],'as':_0x40709d['as'],'attributes':_0x40709d['attributes'],'include':_0x40709d['include']?_[_0xf2d7('0x1f')](_0x40709d[_0xf2d7('0x1d')],function(_0x202042){return{'model':db[_0x202042['model']],'as':_0x202042['as'],'attributes':_0x202042['attributes'],'include':_0x202042[_0xf2d7('0x1d')]?_[_0xf2d7('0x1f')](_0x202042[_0xf2d7('0x1d')],function(_0xc1908d){return{'model':db[_0xc1908d['model']],'as':_0xc1908d['as'],'attributes':_0xc1908d[_0xf2d7('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xf2d7('0x24')](function(_0x268b8b){var _0x1a4a36=[];for(var _0x107344=0x0;_0x107344<_0x268b8b[_0xf2d7('0x47')];_0x107344+=0x1){_0x1a4a36[_0xf2d7('0x38')](_0x268b8b[_0x107344][_0xf2d7('0x39')](_0x5bfdab['body'],{'transaction':_0x33bc6f}));}return BPromise[_0xf2d7('0x3a')](_0x1a4a36);});})[_0xf2d7('0x24')](function(_0x2350f2){logger[_0xf2d7('0xd')](_0xf2d7('0x45'),_0x5bfdab);logger[_0xf2d7('0x20')](_0xf2d7('0x45'),_0x5bfdab,JSON[_0xf2d7('0x11')](_0x2350f2));_0x40d6ce(_0x2350f2);})[_0xf2d7('0x16')](function(_0x168557){logger['error']('GetContactRecallMe',_0x168557['message'],_0x5bfdab);_0x317f70(_0x205bc5[_0xf2d7('0x12')](0x1f4,_0x168557[_0xf2d7('0x14')]));});});});};exports[_0xf2d7('0x48')]=function(_0x3953bf){var _0x39f1e=this;return new Promise(function(_0x2d6c0a,_0x35bcf4){db['CmContact'][_0xf2d7('0x49')]()[_0xf2d7('0x24')](function(_0x163396){return db[_0xf2d7('0x22')]['findAll']({'raw':_0x3953bf[_0xf2d7('0x18')]?_0x3953bf[_0xf2d7('0x18')][_0xf2d7('0x19')]===undefined?!![]:![]:!![],'where':_0x3953bf['options']?_0x3953bf[_0xf2d7('0x18')][_0xf2d7('0x1a')]||null:null,'attributes':_0x3953bf['options']?_0x3953bf['options']['attributes']||null:null,'limit':_0x3953bf[_0xf2d7('0x18')]?_0x3953bf[_0xf2d7('0x18')][_0xf2d7('0x1c')]||null:null,'include':_0x3953bf['options']?_0x3953bf[_0xf2d7('0x18')][_0xf2d7('0x1d')]?_[_0xf2d7('0x1f')](_0x3953bf[_0xf2d7('0x18')][_0xf2d7('0x1d')],function(_0x1ad622){return{'model':db[_0x1ad622[_0xf2d7('0x1e')]],'as':_0x1ad622['as'],'attributes':_0x1ad622['as']==='Contact'?_['keys'](_0x163396):_0x1ad622[_0xf2d7('0x1b')],'include':_0x1ad622[_0xf2d7('0x1d')]?_[_0xf2d7('0x1f')](_0x1ad622[_0xf2d7('0x1d')],function(_0x23e51e){return{'model':db[_0x23e51e['model']],'as':_0x23e51e['as'],'attributes':_0x23e51e[_0xf2d7('0x1b')],'include':_0x23e51e[_0xf2d7('0x1d')]?_[_0xf2d7('0x1f')](_0x23e51e['include'],function(_0x5e6f0f){return{'model':db[_0x5e6f0f[_0xf2d7('0x1e')]],'as':_0x5e6f0f['as'],'attributes':_0x5e6f0f['attributes']};}):[]};}):[]};}):[]:[]})[_0xf2d7('0x24')](function(_0x2c8b7f){logger['info']('GetCmHopper',_0x3953bf);logger['debug'](_0xf2d7('0x17'),_0x3953bf,JSON[_0xf2d7('0x11')](_0x2c8b7f));_0x2d6c0a(_0x2c8b7f);})[_0xf2d7('0x16')](function(_0x400426){logger[_0xf2d7('0x12')](_0xf2d7('0x17'),_0x400426[_0xf2d7('0x14')],_0x3953bf);_0x35bcf4(_0x39f1e[_0xf2d7('0x12')](0x1f4,_0x400426[_0xf2d7('0x14')]));});});});};
\ No newline at end of file
+var _0x0129=['sequelize','CmHopperFinal','create','CountReScheduled','literal','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','order','LOCK','GetCmHopperPreview','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','CmHopper,\x20%s,\x20%s','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','GetCmHopper','findAll','options','raw','attributes','include','map','model','stringify','ShowCmHopper','CmHopper','find','where','CreateCmHopper','body','UpdateCmHopper','update','limit','DestroyCmHopper','destroy','GetContactDialer','CmContact','describe','UPDATE','Contact','keys','User','Agent','name','voicePause','length','UserId','includes','push','MoveContactManagedDialer'];(function(_0x44f738,_0x31cd2b){var _0x5f1271=function(_0x55c48f){while(--_0x55c48f){_0x44f738['push'](_0x44f738['shift']());}};_0x5f1271(++_0x31cd2b);}(_0x0129,0xdf));var _0x9012=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0129[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9012('0x0'));var BPromise=require(_0x9012('0x1'));var rs=require(_0x9012('0x2'));var fs=require('fs');var Redis=require(_0x9012('0x3'));var db=require(_0x9012('0x4'))['db'];var utils=require(_0x9012('0x5'));var logger=require(_0x9012('0x6'))('rpc');var config=require(_0x9012('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x9012('0x8')][_0x9012('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x44f62e,_0x36f18d,_0x164f90){return new BPromise(function(_0x2f6942,_0x496583){return client[_0x9012('0xa')](_0x44f62e,_0x164f90)[_0x9012('0xb')](function(_0x44dc48){logger['info'](_0x9012('0xc'),_0x36f18d,_0x9012('0xd'));logger[_0x9012('0xe')](_0x9012('0xf'),_0x36f18d,_0x9012('0xd'),JSON['stringify'](_0x44dc48));if(_0x44dc48[_0x9012('0x10')]){if(_0x44dc48['error'][_0x9012('0x11')]===0x1f4){logger[_0x9012('0x10')](_0x9012('0xc'),_0x36f18d,_0x44dc48[_0x9012('0x10')]['message']);return _0x496583(_0x44dc48['error'][_0x9012('0x12')]);}logger[_0x9012('0x10')]('CmHopper,\x20%s,\x20%s',_0x36f18d,_0x44dc48[_0x9012('0x10')][_0x9012('0x12')]);return _0x2f6942(_0x44dc48[_0x9012('0x10')]['message']);}else{logger[_0x9012('0x13')](_0x9012('0xc'),_0x36f18d,_0x9012('0xd'));_0x2f6942(_0x44dc48[_0x9012('0x14')][_0x9012('0x12')]);}})[_0x9012('0x15')](function(_0x568051){logger[_0x9012('0x10')]('CmHopper,\x20%s,\x20%s',_0x36f18d,_0x568051);_0x496583(_0x568051);});});}exports[_0x9012('0x16')]=function(_0x59ae16){var _0x98f22e=this;return new Promise(function(_0x480802,_0x5c4a1a){return db['CmHopper'][_0x9012('0x17')]({'raw':_0x59ae16[_0x9012('0x18')]?_0x59ae16['options'][_0x9012('0x19')]===undefined?!![]:![]:!![],'where':_0x59ae16[_0x9012('0x18')]?_0x59ae16['options']['where']||null:null,'attributes':_0x59ae16['options']?_0x59ae16[_0x9012('0x18')][_0x9012('0x1a')]||null:null,'limit':_0x59ae16['options']?_0x59ae16[_0x9012('0x18')]['limit']||null:null,'include':_0x59ae16[_0x9012('0x18')]?_0x59ae16['options'][_0x9012('0x1b')]?_['map'](_0x59ae16['options'][_0x9012('0x1b')],function(_0x1e0ce2){return{'model':db[_0x1e0ce2['model']],'as':_0x1e0ce2['as'],'attributes':_0x1e0ce2[_0x9012('0x1a')],'include':_0x1e0ce2[_0x9012('0x1b')]?_[_0x9012('0x1c')](_0x1e0ce2['include'],function(_0x21545b){return{'model':db[_0x21545b[_0x9012('0x1d')]],'as':_0x21545b['as'],'attributes':_0x21545b[_0x9012('0x1a')],'include':_0x21545b[_0x9012('0x1b')]?_['map'](_0x21545b[_0x9012('0x1b')],function(_0x4c13bb){return{'model':db[_0x4c13bb[_0x9012('0x1d')]],'as':_0x4c13bb['as'],'attributes':_0x4c13bb[_0x9012('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x9012('0xb')](function(_0x20446f){logger['info'](_0x9012('0x16'),_0x59ae16);logger[_0x9012('0xe')]('GetCmHopper',_0x59ae16,JSON[_0x9012('0x1e')](_0x20446f));_0x480802(_0x20446f);})[_0x9012('0x15')](function(_0x343a9c){logger[_0x9012('0x10')]('GetCmHopper',_0x343a9c['message'],_0x59ae16);_0x5c4a1a(_0x98f22e[_0x9012('0x10')](0x1f4,_0x343a9c[_0x9012('0x12')]));});});};exports[_0x9012('0x1f')]=function(_0xa853bb){var _0x5aa096=this;return new Promise(function(_0xf605b5,_0x5507fc){return db[_0x9012('0x20')][_0x9012('0x21')]({'raw':_0xa853bb[_0x9012('0x18')]?_0xa853bb[_0x9012('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0xa853bb[_0x9012('0x18')]?_0xa853bb['options'][_0x9012('0x22')]||null:null,'attributes':_0xa853bb[_0x9012('0x18')]?_0xa853bb[_0x9012('0x18')]['attributes']||null:null,'include':_0xa853bb[_0x9012('0x18')]?_0xa853bb[_0x9012('0x18')][_0x9012('0x1b')]?_[_0x9012('0x1c')](_0xa853bb['options'][_0x9012('0x1b')],function(_0x559034){return{'model':db[_0x559034[_0x9012('0x1d')]],'as':_0x559034['as'],'attributes':_0x559034['attributes'],'include':_0x559034[_0x9012('0x1b')]?_['map'](_0x559034[_0x9012('0x1b')],function(_0x7527fe){return{'model':db[_0x7527fe[_0x9012('0x1d')]],'as':_0x7527fe['as'],'attributes':_0x7527fe[_0x9012('0x1a')],'include':_0x7527fe[_0x9012('0x1b')]?_['map'](_0x7527fe[_0x9012('0x1b')],function(_0x57f8e6){return{'model':db[_0x57f8e6[_0x9012('0x1d')]],'as':_0x57f8e6['as'],'attributes':_0x57f8e6['attributes']};}):[]};}):[]};}):[]:[]})[_0x9012('0xb')](function(_0x3e3feb){logger[_0x9012('0x13')]('ShowCmHopper',_0xa853bb);logger[_0x9012('0xe')]('ShowCmHopper',_0xa853bb,JSON[_0x9012('0x1e')](_0x3e3feb));_0xf605b5(_0x3e3feb);})[_0x9012('0x15')](function(_0x4e6940){logger[_0x9012('0x10')](_0x9012('0x1f'),_0x4e6940[_0x9012('0x12')],_0xa853bb);_0x5507fc(_0x5aa096[_0x9012('0x10')](0x1f4,_0x4e6940['message']));});});};exports[_0x9012('0x23')]=function(_0x248e86){var _0x1914c8=this;return new Promise(function(_0xd4477f,_0x391455){return db[_0x9012('0x20')]['create'](_0x248e86[_0x9012('0x24')],{'raw':_0x248e86['options']?_0x248e86[_0x9012('0x18')][_0x9012('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x257a09){logger[_0x9012('0x13')]('CreateCmHopper',_0x248e86);logger[_0x9012('0xe')](_0x9012('0x23'),_0x248e86,JSON[_0x9012('0x1e')](_0x257a09));_0xd4477f(_0x257a09);})['catch'](function(_0x177ef2){logger[_0x9012('0x10')](_0x9012('0x23'),_0x177ef2[_0x9012('0x12')],_0x248e86);_0x391455(_0x1914c8[_0x9012('0x10')](0x1f4,_0x177ef2[_0x9012('0x12')]));});});};exports[_0x9012('0x25')]=function(_0x4ffcce){var _0x2add0d=this;return new Promise(function(_0x5c62c2,_0x159e9f){return db[_0x9012('0x20')][_0x9012('0x26')](_0x4ffcce[_0x9012('0x24')],{'raw':_0x4ffcce[_0x9012('0x18')]?_0x4ffcce[_0x9012('0x18')][_0x9012('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4ffcce['options']?_0x4ffcce['options'][_0x9012('0x22')]||null:null,'attributes':_0x4ffcce[_0x9012('0x18')]?_0x4ffcce[_0x9012('0x18')]['attributes']||null:null,'limit':_0x4ffcce[_0x9012('0x18')]?_0x4ffcce[_0x9012('0x18')][_0x9012('0x27')]||null:null})[_0x9012('0xb')](function(_0x4f97f0){logger[_0x9012('0x13')](_0x9012('0x25'),_0x4ffcce);logger['debug'](_0x9012('0x25'),_0x4ffcce,JSON['stringify'](_0x4f97f0));_0x5c62c2(_0x4f97f0);})['catch'](function(_0xf03c95){logger[_0x9012('0x10')](_0x9012('0x25'),_0xf03c95[_0x9012('0x12')],_0x4ffcce);_0x159e9f(_0x2add0d['error'](0x1f4,_0xf03c95[_0x9012('0x12')]));});});};exports[_0x9012('0x28')]=function(_0x24b96f){var _0x198720=this;return new Promise(function(_0x1f79c0,_0x48e09a){return db[_0x9012('0x20')][_0x9012('0x29')]({'where':_0x24b96f['options']?_0x24b96f[_0x9012('0x18')][_0x9012('0x22')]||null:null})['then'](function(_0x227416){logger[_0x9012('0x13')]('DestroyCmHopper',_0x24b96f);logger[_0x9012('0xe')](_0x9012('0x28'),_0x24b96f,JSON['stringify'](_0x227416));_0x1f79c0(_0x227416);})[_0x9012('0x15')](function(_0x285617){logger['error'](_0x9012('0x28'),_0x285617['message'],_0x24b96f);_0x48e09a(_0x198720['error'](0x1f4,_0x285617[_0x9012('0x12')]));});});};exports[_0x9012('0x2a')]=function(_0x39d2bf){var _0x377515=this;return new Promise(function(_0x173dbf,_0x519e40){return db[_0x9012('0x2b')][_0x9012('0x2c')]()['then'](function(_0x25d4c9){return db['sequelize']['transaction'](function(_0x2ac21b){return db[_0x9012('0x20')][_0x9012('0x17')]({'where':_0x39d2bf[_0x9012('0x18')]?_0x39d2bf['options'][_0x9012('0x22')]||null:null,'attributes':_0x39d2bf['options']?_0x39d2bf['options'][_0x9012('0x1a')]||null:null,'limit':_0x39d2bf['options']?_0x39d2bf[_0x9012('0x18')][_0x9012('0x27')]||null:null,'order':_0x39d2bf['options']?_0x39d2bf[_0x9012('0x18')]['order']||null:null,'transaction':_0x2ac21b,'lock':_0x2ac21b['LOCK'][_0x9012('0x2d')],'include':[{'model':db[_0x9012('0x2b')],'as':_0x9012('0x2e'),'attributes':_[_0x9012('0x2f')](_0x25d4c9)},{'model':db[_0x9012('0x30')],'as':_0x9012('0x31'),'attributes':['id',_0x9012('0x32'),_0x9012('0x33')]}]})['then'](function(_0xe40078){var _0x257674=[];var _0x26ce4a=[];for(var _0x4db0e7=0x0;_0x4db0e7<_0xe40078[_0x9012('0x34')];_0x4db0e7+=0x1){var _0x551e69=_0xe40078[_0x4db0e7][_0x9012('0x35')];if(_0x551e69===null){_0x257674['push'](_0xe40078[_0x4db0e7][_0x9012('0x26')](_0x39d2bf['body'],{'transaction':_0x2ac21b}));}else if(!_0x26ce4a[_0x9012('0x36')](_0x551e69)){_0x26ce4a[_0x9012('0x37')](_0x551e69);_0x257674[_0x9012('0x37')](_0xe40078[_0x4db0e7]['update'](_0x39d2bf[_0x9012('0x24')],{'transaction':_0x2ac21b}));}}return BPromise['all'](_0x257674);});})['then'](function(_0x8507c2){logger[_0x9012('0x13')](_0x9012('0x2a'),_0x39d2bf);logger[_0x9012('0xe')](_0x9012('0x2a'),_0x39d2bf,JSON[_0x9012('0x1e')](_0x8507c2));_0x173dbf(_0x8507c2);})[_0x9012('0x15')](function(_0x157fa6){logger[_0x9012('0x10')]('GetContactDialer',_0x157fa6[_0x9012('0x12')],_0x39d2bf);_0x519e40(_0x377515[_0x9012('0x10')](0x1f4,_0x157fa6[_0x9012('0x12')]));});});});};exports[_0x9012('0x38')]=function(_0xeeb098){var _0x303cc5=this;return new Promise(function(_0x4f7522,_0x3c9bce){return db[_0x9012('0x39')]['transaction'](function(_0xb51c0){return db[_0x9012('0x3a')][_0x9012('0x3b')](_0xeeb098[_0x9012('0x24')],{'raw':_0xeeb098[_0x9012('0x18')]?_0xeeb098['options'][_0x9012('0x19')]===undefined?!![]:![]:!![],'transaction':_0xb51c0})[_0x9012('0xb')](function(){return db['CmHopper']['destroy']({'where':_0xeeb098[_0x9012('0x18')]?_0xeeb098[_0x9012('0x18')][_0x9012('0x22')]||null:null,'transaction':_0xb51c0});});})[_0x9012('0xb')](function(_0x549646){logger[_0x9012('0x13')]('MoveContactManagedDialer',_0xeeb098);logger[_0x9012('0xe')](_0x9012('0x38'),_0xeeb098,JSON[_0x9012('0x1e')](_0x549646));_0x4f7522(_0x549646);})[_0x9012('0x15')](function(_0x3fe5c4){logger['error'](_0x9012('0x38'),_0x3fe5c4['message'],_0xeeb098);_0x3c9bce(_0x303cc5['error'](0x1f4,_0x3fe5c4['message']));});});};exports[_0x9012('0x3c')]=function(_0x594925){var _0x1aecdf=this;return new Promise(function(_0x24e383,_0x80223e){return db[_0x9012('0x20')][_0x9012('0x17')]({'raw':_0x594925[_0x9012('0x18')]?_0x594925[_0x9012('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x594925[_0x9012('0x18')]?_0x594925[_0x9012('0x18')]['where']||null:null,'attributes':[[db[_0x9012('0x39')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x9012('0x39')][_0x9012('0x3d')]('`scheduledat`\x20>=\x20'+util['format'](_0x9012('0x3e'),moment()['format'](_0x9012('0x3f')))+_0x9012('0x40')))),_0x9012('0x41')]]})[_0x9012('0xb')](function(_0x217120){logger[_0x9012('0x13')](_0x9012('0x3c'),_0x594925);logger[_0x9012('0xe')](_0x9012('0x3c'),_0x594925,JSON[_0x9012('0x1e')](_0x217120));_0x24e383(_0x217120);})[_0x9012('0x15')](function(_0x490cd1){logger['error']('CountReScheduled',_0x490cd1[_0x9012('0x12')],_0x594925);_0x80223e(_0x1aecdf['error'](0x1f4,_0x490cd1['message']));});});};exports[_0x9012('0x42')]=function(_0x5696f3){var _0x500c1d=this;return new Promise(function(_0x3034ec,_0x15afbd){return db[_0x9012('0x2b')][_0x9012('0x2c')]()[_0x9012('0xb')](function(_0x51af93){return db[_0x9012('0x39')]['transaction'](function(_0x2a9b63){return db[_0x9012('0x20')]['findAll']({'where':_0x5696f3['options']?_0x5696f3[_0x9012('0x18')][_0x9012('0x22')]||null:null,'attributes':_0x5696f3['options']?_0x5696f3[_0x9012('0x18')]['attributes']||null:null,'limit':0x1,'order':_0x5696f3[_0x9012('0x18')]?_0x5696f3['options'][_0x9012('0x43')]||null:null,'group':db[_0x9012('0x20')][_0x9012('0x35')],'transaction':_0x2a9b63,'lock':_0x2a9b63[_0x9012('0x44')][_0x9012('0x2d')],'include':_0x5696f3[_0x9012('0x18')]?_0x5696f3['options']['include']?_['map'](_0x5696f3['options'][_0x9012('0x1b')],function(_0x230f1c){return{'model':db[_0x230f1c[_0x9012('0x1d')]],'as':_0x230f1c['as'],'attributes':_0x230f1c['attributes'],'include':_0x230f1c[_0x9012('0x1b')]?_['map'](_0x230f1c[_0x9012('0x1b')],function(_0x1e38c2){return{'model':db[_0x1e38c2[_0x9012('0x1d')]],'as':_0x1e38c2['as'],'attributes':_0x1e38c2['attributes'],'include':_0x1e38c2[_0x9012('0x1b')]?_['map'](_0x1e38c2[_0x9012('0x1b')],function(_0x21d605){return{'model':db[_0x21d605[_0x9012('0x1d')]],'as':_0x21d605['as'],'attributes':_0x21d605['attributes']};}):[]};}):[]};}):[]:[]})[_0x9012('0xb')](function(_0x362ad1){var _0x4e5a65=[];for(var _0x2db22d=0x0;_0x2db22d<_0x362ad1[_0x9012('0x34')];_0x2db22d+=0x1){_0x4e5a65[_0x9012('0x37')](_0x362ad1[_0x2db22d][_0x9012('0x26')](_0x5696f3[_0x9012('0x24')],{'transaction':_0x2a9b63}));}return BPromise['all'](_0x4e5a65);});})[_0x9012('0xb')](function(_0x442c63){logger[_0x9012('0x13')](_0x9012('0x42'),_0x5696f3);logger[_0x9012('0xe')](_0x9012('0x42'),_0x5696f3,JSON[_0x9012('0x1e')](_0x442c63));_0x3034ec(_0x442c63);})[_0x9012('0x15')](function(_0x39c914){logger[_0x9012('0x10')](_0x9012('0x42'),_0x39c914[_0x9012('0x12')],_0x5696f3);_0x15afbd(_0x500c1d[_0x9012('0x10')](0x1f4,_0x39c914[_0x9012('0x12')]));});});});};exports[_0x9012('0x45')]=function(_0x1aafb2){var _0x2426e9=this;return new Promise(function(_0x5bdfda,_0x5a103d){db['CmContact'][_0x9012('0x2c')]()[_0x9012('0xb')](function(_0x16a018){return db[_0x9012('0x20')]['findAll']({'raw':_0x1aafb2[_0x9012('0x18')]?_0x1aafb2['options'][_0x9012('0x19')]===undefined?!![]:![]:!![],'where':_0x1aafb2[_0x9012('0x18')]?_0x1aafb2['options'][_0x9012('0x22')]||null:null,'attributes':_0x1aafb2[_0x9012('0x18')]?_0x1aafb2[_0x9012('0x18')][_0x9012('0x1a')]||null:null,'limit':_0x1aafb2[_0x9012('0x18')]?_0x1aafb2[_0x9012('0x18')][_0x9012('0x27')]||null:null,'include':_0x1aafb2[_0x9012('0x18')]?_0x1aafb2[_0x9012('0x18')][_0x9012('0x1b')]?_[_0x9012('0x1c')](_0x1aafb2['options'][_0x9012('0x1b')],function(_0x42c1f3){return{'model':db[_0x42c1f3[_0x9012('0x1d')]],'as':_0x42c1f3['as'],'attributes':_0x42c1f3['as']===_0x9012('0x2e')?_[_0x9012('0x2f')](_0x16a018):_0x42c1f3[_0x9012('0x1a')],'include':_0x42c1f3['include']?_['map'](_0x42c1f3[_0x9012('0x1b')],function(_0x5e0664){return{'model':db[_0x5e0664[_0x9012('0x1d')]],'as':_0x5e0664['as'],'attributes':_0x5e0664[_0x9012('0x1a')],'include':_0x5e0664[_0x9012('0x1b')]?_[_0x9012('0x1c')](_0x5e0664[_0x9012('0x1b')],function(_0x166c19){return{'model':db[_0x166c19[_0x9012('0x1d')]],'as':_0x166c19['as'],'attributes':_0x166c19['attributes']};}):[]};}):[]};}):[]:[]})[_0x9012('0xb')](function(_0x5b1c1e){logger[_0x9012('0x13')]('GetCmHopper',_0x1aafb2);logger[_0x9012('0xe')]('GetCmHopper',_0x1aafb2,JSON[_0x9012('0x1e')](_0x5b1c1e));_0x5bdfda(_0x5b1c1e);})[_0x9012('0x15')](function(_0xf88714){logger[_0x9012('0x10')](_0x9012('0x16'),_0xf88714[_0x9012('0x12')],_0x1aafb2);_0x5a103d(_0x2426e9['error'](0x1f4,_0xf88714['message']));});});});};
\ No newline at end of file
index abba339..7b8f15a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a2f=['describe','/opencontacts','getOpenContacts','show','post','/preview','getPreview','put','update','delete','/:id','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./cmHopper.controller','get','isAuthenticated','/describe'];(function(_0x1b2422,_0x1e98d4){var _0x376573=function(_0x5db41b){while(--_0x5db41b){_0x1b2422['push'](_0x1b2422['shift']());}};_0x376573(++_0x1e98d4);}(_0x3a2f,0x15c));var _0xf3a2=function(_0x5ad716,_0x3a4800){_0x5ad716=_0x5ad716-0x0;var _0x587911=_0x3a2f[_0x5ad716];return _0x587911;};'use strict';var multer=require(_0xf3a2('0x0'));var util=require(_0xf3a2('0x1'));var path=require(_0xf3a2('0x2'));var timeout=require(_0xf3a2('0x3'));var express=require(_0xf3a2('0x4'));var router=express['Router']();var fs_extra=require(_0xf3a2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf3a2('0x6'));var config=require(_0xf3a2('0x7'));var controller=require(_0xf3a2('0x8'));router[_0xf3a2('0x9')]('/',auth[_0xf3a2('0xa')](),controller['index']);router[_0xf3a2('0x9')](_0xf3a2('0xb'),auth['isAuthenticated'](),controller[_0xf3a2('0xc')]);router[_0xf3a2('0x9')](_0xf3a2('0xd'),auth[_0xf3a2('0xa')](),controller[_0xf3a2('0xe')]);router[_0xf3a2('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xf3a2('0xf')]);router[_0xf3a2('0x10')]('/',auth[_0xf3a2('0xa')](),controller['create']);router[_0xf3a2('0x10')](_0xf3a2('0x11'),auth[_0xf3a2('0xa')](),controller[_0xf3a2('0x12')]);router[_0xf3a2('0x13')]('/:id',auth[_0xf3a2('0xa')](),controller[_0xf3a2('0x14')]);router[_0xf3a2('0x15')](_0xf3a2('0x16'),auth['isAuthenticated'](),controller['destroy']);module[_0xf3a2('0x17')]=router;
\ No newline at end of file
+var _0x4851=['exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopper.controller','get','isAuthenticated','/describe','describe','/opencontacts','getOpenContacts','show','post','/preview','getPreview','/:id','update','delete','destroy'];(function(_0x387c2e,_0x1bc867){var _0x8987e1=function(_0x2a9780){while(--_0x2a9780){_0x387c2e['push'](_0x387c2e['shift']());}};_0x8987e1(++_0x1bc867);}(_0x4851,0x169));var _0x1485=function(_0x51ff72,_0x2683cf){_0x51ff72=_0x51ff72-0x0;var _0x187931=_0x4851[_0x51ff72];return _0x187931;};'use strict';var multer=require(_0x1485('0x0'));var util=require(_0x1485('0x1'));var path=require('path');var timeout=require(_0x1485('0x2'));var express=require(_0x1485('0x3'));var router=express[_0x1485('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1485('0x5'));var interaction=require(_0x1485('0x6'));var config=require(_0x1485('0x7'));var controller=require(_0x1485('0x8'));router[_0x1485('0x9')]('/',auth[_0x1485('0xa')](),controller['index']);router['get'](_0x1485('0xb'),auth[_0x1485('0xa')](),controller[_0x1485('0xc')]);router[_0x1485('0x9')](_0x1485('0xd'),auth[_0x1485('0xa')](),controller[_0x1485('0xe')]);router[_0x1485('0x9')]('/:id',auth[_0x1485('0xa')](),controller[_0x1485('0xf')]);router[_0x1485('0x10')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0x1485('0x11'),auth[_0x1485('0xa')](),controller[_0x1485('0x12')]);router['put'](_0x1485('0x13'),auth[_0x1485('0xa')](),controller[_0x1485('0x14')]);router[_0x1485('0x15')](_0x1485('0x13'),auth[_0x1485('0xa')](),controller[_0x1485('0x16')]);module[_0x1485('0x17')]=router;
\ No newline at end of file
index 08e3b6d..06d72ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcc7=['moment','sequelize','STRING','INTEGER','contactListQueue'];(function(_0x26b80e,_0x5c9333){var _0x84a8a8=function(_0x2e5b4a){while(--_0x2e5b4a){_0x26b80e['push'](_0x26b80e['shift']());}};_0x84a8a8(++_0x5c9333);}(_0xbcc7,0x19a));var _0x7bcc=function(_0x50ac4d,_0x215714){_0x50ac4d=_0x50ac4d-0x0;var _0xcca394=_0xbcc7[_0x50ac4d];return _0xcca394;};'use strict';var moment=require(_0x7bcc('0x0'));var Sequelize=require(_0x7bcc('0x1'));module['exports']={'phone':{'type':Sequelize[_0x7bcc('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x7bcc('0x3')],'unique':'contactListQueue'},'VoiceQueueId':{'type':Sequelize[_0x7bcc('0x3')],'unique':_0x7bcc('0x4')}};
\ No newline at end of file
+var _0x04f1=['INTEGER','moment','sequelize','exports','contactListQueue'];(function(_0x1d0a2b,_0x4badff){var _0x29026a=function(_0x20909d){while(--_0x20909d){_0x1d0a2b['push'](_0x1d0a2b['shift']());}};_0x29026a(++_0x4badff);}(_0x04f1,0x92));var _0x104f=function(_0x28e1fc,_0x2249bb){_0x28e1fc=_0x28e1fc-0x0;var _0x3e3df2=_0x04f1[_0x28e1fc];return _0x3e3df2;};'use strict';var moment=require(_0x104f('0x0'));var Sequelize=require(_0x104f('0x1'));module[_0x104f('0x2')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x104f('0x3')},'ListId':{'type':Sequelize[_0x104f('0x4')],'unique':_0x104f('0x3')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'}};
\ No newline at end of file
index b1b1de0..d4ae843 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7428=['intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','count','then','includeAll','include','findAll','rows','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','end','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','destroy','sendStatus','error','name','send','index','map','CmHopperBlack','rawAttributes','fieldName','query','keys','filters'];(function(_0x48bb8f,_0x15ae9f){var _0x115417=function(_0x3be454){while(--_0x3be454){_0x48bb8f['push'](_0x48bb8f['shift']());}};_0x115417(++_0x15ae9f);}(_0x7428,0x1aa));var _0x8742=function(_0x2bce72,_0x40c242){_0x2bce72=_0x2bce72-0x0;var _0x267d9d=_0x7428[_0x2bce72];return _0x267d9d;};'use strict';var emlformat=require(_0x8742('0x0'));var rimraf=require(_0x8742('0x1'));var zipdir=require(_0x8742('0x2'));var jsonpatch=require(_0x8742('0x3'));var rp=require(_0x8742('0x4'));var moment=require(_0x8742('0x5'));var BPromise=require(_0x8742('0x6'));var Mustache=require(_0x8742('0x7'));var util=require(_0x8742('0x8'));var path=require(_0x8742('0x9'));var sox=require(_0x8742('0xa'));var csv=require(_0x8742('0xb'));var ejs=require(_0x8742('0xc'));var fs=require('fs');var fs_extra=require(_0x8742('0xd'));var _=require(_0x8742('0xe'));var squel=require(_0x8742('0xf'));var crypto=require(_0x8742('0x10'));var jsforce=require(_0x8742('0x11'));var deskjs=require(_0x8742('0x12'));var toCsv=require(_0x8742('0xb'));var querystring=require('querystring');var Papa=require(_0x8742('0x13'));var Redis=require(_0x8742('0x14'));var authService=require(_0x8742('0x15'));var qs=require(_0x8742('0x16'));var as=require(_0x8742('0x17'));var hardwareService=require(_0x8742('0x18'));var logger=require(_0x8742('0x19'))(_0x8742('0x1a'));var utils=require(_0x8742('0x1b'));var config=require('../../config/environment');var licenseUtil=require(_0x8742('0x1c'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x296084,_0x551c1c){_0x551c1c=_0x551c1c||0xcc;return function(_0x3cdd18){if(_0x3cdd18){return _0x296084['sendStatus'](_0x551c1c);}return _0x296084['status'](_0x551c1c)[_0x8742('0x1d')]();};}function respondWithResult(_0x14fa55,_0x5dde51){_0x5dde51=_0x5dde51||0xc8;return function(_0x39a8ff){if(_0x39a8ff){return _0x14fa55[_0x8742('0x1e')](_0x5dde51)[_0x8742('0x1f')](_0x39a8ff);}};}function respondWithFilteredResult(_0x84a1df,_0x3295aa){return function(_0x247c7f){if(_0x247c7f){var _0x494981=typeof _0x3295aa[_0x8742('0x20')]===_0x8742('0x21')&&typeof _0x3295aa[_0x8742('0x22')]==='undefined';var _0x39877f=_0x247c7f['count'];var _0x1fcf0b=_0x494981?0x0:_0x3295aa[_0x8742('0x20')];var _0x500667=_0x494981?_0x247c7f['count']:_0x3295aa['offset']+_0x3295aa['limit'];var _0x359bba;if(_0x500667>=_0x39877f){_0x500667=_0x39877f;_0x359bba=0xc8;}else{_0x359bba=0xce;}_0x84a1df[_0x8742('0x1e')](_0x359bba);return _0x84a1df[_0x8742('0x23')](_0x8742('0x24'),_0x1fcf0b+'-'+_0x500667+'/'+_0x39877f)['json'](_0x247c7f);}return null;};}function patchUpdates(_0x347467){return function(_0x4e03fb){try{jsonpatch[_0x8742('0x25')](_0x4e03fb,_0x347467,!![]);}catch(_0x44c956){return BPromise[_0x8742('0x26')](_0x44c956);}return _0x4e03fb[_0x8742('0x27')]();};}function saveUpdates(_0x2d15ee,_0x2e8008){return function(_0x396c60){if(_0x396c60){return _0x396c60[_0x8742('0x28')](_0x2d15ee)['then'](function(_0xa99cf0){return _0xa99cf0;});}return null;};}function removeEntity(_0x46c4f2,_0x1fa861){return function(_0x3603ae){if(_0x3603ae){return _0x3603ae[_0x8742('0x29')]()['then'](function(){_0x46c4f2[_0x8742('0x1e')](0xcc)[_0x8742('0x1d')]();});}};}function handleEntityNotFound(_0x14d781,_0x57db13){return function(_0x47a818){if(!_0x47a818){_0x14d781[_0x8742('0x2a')](0x194);}return _0x47a818;};}function handleError(_0x4dcf6e,_0x1f1884){_0x1f1884=_0x1f1884||0x1f4;return function(_0x66d52f){logger[_0x8742('0x2b')](_0x66d52f['stack']);if(_0x66d52f['name']){delete _0x66d52f[_0x8742('0x2c')];}_0x4dcf6e['status'](_0x1f1884)[_0x8742('0x2d')](_0x66d52f);};}exports[_0x8742('0x2e')]=function(_0x1b089e,_0x4bb259){var _0x5523d2={},_0x3d9bc4={},_0x1f304c={'count':0x0,'rows':[]};var _0x5f10e9=_[_0x8742('0x2f')](db[_0x8742('0x30')][_0x8742('0x31')],function(_0x351fff){return{'name':_0x351fff[_0x8742('0x32')],'type':_0x351fff['type']['key']};});_0x3d9bc4['model']=_[_0x8742('0x2f')](_0x5f10e9,'name');_0x3d9bc4[_0x8742('0x33')]=_[_0x8742('0x34')](_0x1b089e['query']);_0x3d9bc4[_0x8742('0x35')]=_[_0x8742('0x36')](_0x3d9bc4[_0x8742('0x37')],_0x3d9bc4[_0x8742('0x33')]);_0x5523d2[_0x8742('0x38')]=_[_0x8742('0x36')](_0x3d9bc4[_0x8742('0x37')],qs[_0x8742('0x39')](_0x1b089e['query']['fields']));_0x5523d2[_0x8742('0x38')]=_0x5523d2[_0x8742('0x38')][_0x8742('0x3a')]?_0x5523d2['attributes']:_0x3d9bc4['model'];if(!_0x1b089e['query'][_0x8742('0x3b')](_0x8742('0x3c'))){_0x5523d2[_0x8742('0x22')]=qs[_0x8742('0x22')](_0x1b089e[_0x8742('0x33')][_0x8742('0x22')]);_0x5523d2[_0x8742('0x20')]=qs[_0x8742('0x20')](_0x1b089e[_0x8742('0x33')][_0x8742('0x20')]);}_0x5523d2[_0x8742('0x3d')]=qs[_0x8742('0x3e')](_0x1b089e['query']['sort']);_0x5523d2[_0x8742('0x3f')]=qs['filters'](_['pick'](_0x1b089e[_0x8742('0x33')],_0x3d9bc4[_0x8742('0x35')]),_0x5f10e9);if(_0x1b089e['query']['filter']){_0x5523d2[_0x8742('0x3f')]=_[_0x8742('0x40')](_0x5523d2[_0x8742('0x3f')],{'$or':_['map'](_0x5f10e9,function(_0x30e894){if(_0x30e894['type']!==_0x8742('0x41')){var _0x46f3c0={};_0x46f3c0[_0x30e894[_0x8742('0x2c')]]={'$like':'%'+_0x1b089e[_0x8742('0x33')][_0x8742('0x42')]+'%'};return _0x46f3c0;}})});}_0x5523d2=_[_0x8742('0x40')]({},_0x5523d2,_0x1b089e[_0x8742('0x43')]);var _0xa9b6b6={'where':_0x5523d2[_0x8742('0x3f')]};return db['CmHopperBlack'][_0x8742('0x44')](_0xa9b6b6)[_0x8742('0x45')](function(_0x32d2d7){_0x1f304c[_0x8742('0x44')]=_0x32d2d7;if(_0x1b089e['query'][_0x8742('0x46')]){_0x5523d2[_0x8742('0x47')]=[{'all':!![]}];}return db[_0x8742('0x30')][_0x8742('0x48')](_0x5523d2);})['then'](function(_0x3f5c0b){_0x1f304c[_0x8742('0x49')]=_0x3f5c0b;return _0x1f304c;})[_0x8742('0x45')](respondWithFilteredResult(_0x4bb259,_0x5523d2))[_0x8742('0x4a')](handleError(_0x4bb259,null));};exports[_0x8742('0x4b')]=function(_0x59f0bd,_0x408ea7){var _0x30aac3={'raw':!![],'where':{'id':_0x59f0bd[_0x8742('0x4c')]['id']}},_0x3f2a79={};_0x3f2a79[_0x8742('0x37')]=_[_0x8742('0x34')](db['CmHopperBlack'][_0x8742('0x31')]);_0x3f2a79[_0x8742('0x33')]=_[_0x8742('0x34')](_0x59f0bd['query']);_0x3f2a79[_0x8742('0x35')]=_[_0x8742('0x36')](_0x3f2a79[_0x8742('0x37')],_0x3f2a79['query']);_0x30aac3['attributes']=_[_0x8742('0x36')](_0x3f2a79[_0x8742('0x37')],qs[_0x8742('0x39')](_0x59f0bd[_0x8742('0x33')][_0x8742('0x39')]));_0x30aac3['attributes']=_0x30aac3[_0x8742('0x38')][_0x8742('0x3a')]?_0x30aac3[_0x8742('0x38')]:_0x3f2a79[_0x8742('0x37')];if(_0x59f0bd[_0x8742('0x33')][_0x8742('0x46')]){_0x30aac3[_0x8742('0x47')]=[{'all':!![]}];}_0x30aac3=_[_0x8742('0x40')]({},_0x30aac3,_0x59f0bd['options']);return db[_0x8742('0x30')][_0x8742('0x4d')](_0x30aac3)[_0x8742('0x45')](handleEntityNotFound(_0x408ea7,null))[_0x8742('0x45')](respondWithResult(_0x408ea7,null))[_0x8742('0x4a')](handleError(_0x408ea7,null));};exports[_0x8742('0x28')]=function(_0x348223,_0x3ebb7a){if(_0x348223['body']['id']){delete _0x348223[_0x8742('0x4e')]['id'];}return db[_0x8742('0x30')][_0x8742('0x4d')]({'where':{'id':_0x348223[_0x8742('0x4c')]['id']}})[_0x8742('0x45')](handleEntityNotFound(_0x3ebb7a,null))[_0x8742('0x45')](saveUpdates(_0x348223[_0x8742('0x4e')],null))[_0x8742('0x45')](respondWithResult(_0x3ebb7a,null))[_0x8742('0x4a')](handleError(_0x3ebb7a,null));};exports[_0x8742('0x29')]=function(_0x25d520,_0x5a4863){return db[_0x8742('0x30')][_0x8742('0x4d')]({'where':{'id':_0x25d520[_0x8742('0x4c')]['id']}})[_0x8742('0x45')](handleEntityNotFound(_0x5a4863,null))['then'](removeEntity(_0x5a4863,null))[_0x8742('0x4a')](handleError(_0x5a4863,null));};exports[_0x8742('0x4f')]=function(_0x26bec8,_0x300267){return db[_0x8742('0x30')][_0x8742('0x4f')]()['then'](respondWithResult(_0x300267,null))[_0x8742('0x4a')](handleError(_0x300267,null));};
\ No newline at end of file
+var _0xfe89=['jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','stack','name','send','index','map','CmHopperBlack','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','options','includeAll','include','findAll','rows','catch','show','params','intersection','update','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x58e69d,_0x3dacaf){var _0x3f306b=function(_0x335b03){while(--_0x335b03){_0x58e69d['push'](_0x58e69d['shift']());}};_0x3f306b(++_0x3dacaf);}(_0xfe89,0x19d));var _0x9fe8=function(_0x2af4bb,_0x34e5bf){_0x2af4bb=_0x2af4bb-0x0;var _0x8f94f2=_0xfe89[_0x2af4bb];return _0x8f94f2;};'use strict';var emlformat=require(_0x9fe8('0x0'));var rimraf=require(_0x9fe8('0x1'));var zipdir=require(_0x9fe8('0x2'));var jsonpatch=require(_0x9fe8('0x3'));var rp=require(_0x9fe8('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x9fe8('0x5'));var util=require(_0x9fe8('0x6'));var path=require(_0x9fe8('0x7'));var sox=require('sox');var csv=require(_0x9fe8('0x8'));var ejs=require(_0x9fe8('0x9'));var fs=require('fs');var fs_extra=require(_0x9fe8('0xa'));var _=require(_0x9fe8('0xb'));var squel=require(_0x9fe8('0xc'));var crypto=require('crypto');var jsforce=require(_0x9fe8('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x9fe8('0x8'));var querystring=require(_0x9fe8('0xe'));var Papa=require(_0x9fe8('0xf'));var Redis=require('ioredis');var authService=require(_0x9fe8('0x10'));var qs=require(_0x9fe8('0x11'));var as=require(_0x9fe8('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9fe8('0x13'));var utils=require('../../config/utils');var config=require(_0x9fe8('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5732c5,_0x598393){_0x598393=_0x598393||0xcc;return function(_0x345463){if(_0x345463){return _0x5732c5[_0x9fe8('0x15')](_0x598393);}return _0x5732c5['status'](_0x598393)[_0x9fe8('0x16')]();};}function respondWithResult(_0x52552a,_0x2931f8){_0x2931f8=_0x2931f8||0xc8;return function(_0x160337){if(_0x160337){return _0x52552a[_0x9fe8('0x17')](_0x2931f8)[_0x9fe8('0x18')](_0x160337);}};}function respondWithFilteredResult(_0x5667eb,_0x227972){return function(_0x3f2192){if(_0x3f2192){var _0x3ac010=typeof _0x227972[_0x9fe8('0x19')]===_0x9fe8('0x1a')&&typeof _0x227972[_0x9fe8('0x1b')]==='undefined';var _0x42fa0b=_0x3f2192[_0x9fe8('0x1c')];var _0x4af30c=_0x3ac010?0x0:_0x227972['offset'];var _0x2a3aff=_0x3ac010?_0x3f2192[_0x9fe8('0x1c')]:_0x227972[_0x9fe8('0x19')]+_0x227972[_0x9fe8('0x1b')];var _0x201201;if(_0x2a3aff>=_0x42fa0b){_0x2a3aff=_0x42fa0b;_0x201201=0xc8;}else{_0x201201=0xce;}_0x5667eb[_0x9fe8('0x17')](_0x201201);return _0x5667eb[_0x9fe8('0x1d')](_0x9fe8('0x1e'),_0x4af30c+'-'+_0x2a3aff+'/'+_0x42fa0b)[_0x9fe8('0x18')](_0x3f2192);}return null;};}function patchUpdates(_0x418a8d){return function(_0x2960c1){try{jsonpatch[_0x9fe8('0x1f')](_0x2960c1,_0x418a8d,!![]);}catch(_0x1af29d){return BPromise[_0x9fe8('0x20')](_0x1af29d);}return _0x2960c1[_0x9fe8('0x21')]();};}function saveUpdates(_0x545c6b,_0x545c2c){return function(_0x4c6790){if(_0x4c6790){return _0x4c6790['update'](_0x545c6b)['then'](function(_0x3e1807){return _0x3e1807;});}return null;};}function removeEntity(_0x1062f7,_0x6def78){return function(_0x33276d){if(_0x33276d){return _0x33276d[_0x9fe8('0x22')]()[_0x9fe8('0x23')](function(){_0x1062f7[_0x9fe8('0x17')](0xcc)[_0x9fe8('0x16')]();});}};}function handleEntityNotFound(_0xb0d624,_0x38c58c){return function(_0x100f45){if(!_0x100f45){_0xb0d624['sendStatus'](0x194);}return _0x100f45;};}function handleError(_0x13d0dd,_0x4bacb4){_0x4bacb4=_0x4bacb4||0x1f4;return function(_0x14d416){logger['error'](_0x14d416[_0x9fe8('0x24')]);if(_0x14d416[_0x9fe8('0x25')]){delete _0x14d416['name'];}_0x13d0dd[_0x9fe8('0x17')](_0x4bacb4)[_0x9fe8('0x26')](_0x14d416);};}exports[_0x9fe8('0x27')]=function(_0x4ed1ac,_0x52bffa){var _0x4a70da={},_0x343a93={},_0x11cebb={'count':0x0,'rows':[]};var _0x9b095a=_[_0x9fe8('0x28')](db[_0x9fe8('0x29')]['rawAttributes'],function(_0x53d943){return{'name':_0x53d943['fieldName'],'type':_0x53d943['type'][_0x9fe8('0x2a')]};});_0x343a93[_0x9fe8('0x2b')]=_[_0x9fe8('0x28')](_0x9b095a,_0x9fe8('0x25'));_0x343a93[_0x9fe8('0x2c')]=_[_0x9fe8('0x2d')](_0x4ed1ac[_0x9fe8('0x2c')]);_0x343a93[_0x9fe8('0x2e')]=_['intersection'](_0x343a93[_0x9fe8('0x2b')],_0x343a93[_0x9fe8('0x2c')]);_0x4a70da[_0x9fe8('0x2f')]=_['intersection'](_0x343a93[_0x9fe8('0x2b')],qs[_0x9fe8('0x30')](_0x4ed1ac[_0x9fe8('0x2c')][_0x9fe8('0x30')]));_0x4a70da[_0x9fe8('0x2f')]=_0x4a70da['attributes'][_0x9fe8('0x31')]?_0x4a70da[_0x9fe8('0x2f')]:_0x343a93[_0x9fe8('0x2b')];if(!_0x4ed1ac[_0x9fe8('0x2c')][_0x9fe8('0x32')](_0x9fe8('0x33'))){_0x4a70da['limit']=qs['limit'](_0x4ed1ac[_0x9fe8('0x2c')]['limit']);_0x4a70da[_0x9fe8('0x19')]=qs[_0x9fe8('0x19')](_0x4ed1ac[_0x9fe8('0x2c')][_0x9fe8('0x19')]);}_0x4a70da['order']=qs['sort'](_0x4ed1ac[_0x9fe8('0x2c')][_0x9fe8('0x34')]);_0x4a70da[_0x9fe8('0x35')]=qs[_0x9fe8('0x2e')](_[_0x9fe8('0x36')](_0x4ed1ac[_0x9fe8('0x2c')],_0x343a93[_0x9fe8('0x2e')]),_0x9b095a);if(_0x4ed1ac['query'][_0x9fe8('0x37')]){_0x4a70da[_0x9fe8('0x35')]=_[_0x9fe8('0x38')](_0x4a70da['where'],{'$or':_['map'](_0x9b095a,function(_0x5ccb2a){if(_0x5ccb2a[_0x9fe8('0x39')]!=='VIRTUAL'){var _0x4e9011={};_0x4e9011[_0x5ccb2a[_0x9fe8('0x25')]]={'$like':'%'+_0x4ed1ac[_0x9fe8('0x2c')][_0x9fe8('0x37')]+'%'};return _0x4e9011;}})});}_0x4a70da=_['merge']({},_0x4a70da,_0x4ed1ac[_0x9fe8('0x3a')]);var _0x5be347={'where':_0x4a70da[_0x9fe8('0x35')]};return db[_0x9fe8('0x29')][_0x9fe8('0x1c')](_0x5be347)[_0x9fe8('0x23')](function(_0x3b496b){_0x11cebb[_0x9fe8('0x1c')]=_0x3b496b;if(_0x4ed1ac[_0x9fe8('0x2c')][_0x9fe8('0x3b')]){_0x4a70da[_0x9fe8('0x3c')]=[{'all':!![]}];}return db[_0x9fe8('0x29')][_0x9fe8('0x3d')](_0x4a70da);})[_0x9fe8('0x23')](function(_0x496645){_0x11cebb[_0x9fe8('0x3e')]=_0x496645;return _0x11cebb;})[_0x9fe8('0x23')](respondWithFilteredResult(_0x52bffa,_0x4a70da))[_0x9fe8('0x3f')](handleError(_0x52bffa,null));};exports[_0x9fe8('0x40')]=function(_0x2511ac,_0x4df926){var _0x199796={'raw':!![],'where':{'id':_0x2511ac[_0x9fe8('0x41')]['id']}},_0x125c4c={};_0x125c4c[_0x9fe8('0x2b')]=_['keys'](db['CmHopperBlack']['rawAttributes']);_0x125c4c['query']=_['keys'](_0x2511ac[_0x9fe8('0x2c')]);_0x125c4c[_0x9fe8('0x2e')]=_[_0x9fe8('0x42')](_0x125c4c[_0x9fe8('0x2b')],_0x125c4c[_0x9fe8('0x2c')]);_0x199796[_0x9fe8('0x2f')]=_[_0x9fe8('0x42')](_0x125c4c[_0x9fe8('0x2b')],qs[_0x9fe8('0x30')](_0x2511ac[_0x9fe8('0x2c')][_0x9fe8('0x30')]));_0x199796[_0x9fe8('0x2f')]=_0x199796[_0x9fe8('0x2f')][_0x9fe8('0x31')]?_0x199796['attributes']:_0x125c4c['model'];if(_0x2511ac[_0x9fe8('0x2c')][_0x9fe8('0x3b')]){_0x199796[_0x9fe8('0x3c')]=[{'all':!![]}];}_0x199796=_[_0x9fe8('0x38')]({},_0x199796,_0x2511ac['options']);return db['CmHopperBlack']['find'](_0x199796)['then'](handleEntityNotFound(_0x4df926,null))['then'](respondWithResult(_0x4df926,null))[_0x9fe8('0x3f')](handleError(_0x4df926,null));};exports[_0x9fe8('0x43')]=function(_0x3bfb3c,_0x5f463e){if(_0x3bfb3c['body']['id']){delete _0x3bfb3c[_0x9fe8('0x44')]['id'];}return db[_0x9fe8('0x29')][_0x9fe8('0x45')]({'where':{'id':_0x3bfb3c[_0x9fe8('0x41')]['id']}})['then'](handleEntityNotFound(_0x5f463e,null))['then'](saveUpdates(_0x3bfb3c[_0x9fe8('0x44')],null))[_0x9fe8('0x23')](respondWithResult(_0x5f463e,null))['catch'](handleError(_0x5f463e,null));};exports[_0x9fe8('0x22')]=function(_0x22a5ae,_0x5e5803){return db[_0x9fe8('0x29')][_0x9fe8('0x45')]({'where':{'id':_0x22a5ae['params']['id']}})[_0x9fe8('0x23')](handleEntityNotFound(_0x5e5803,null))[_0x9fe8('0x23')](removeEntity(_0x5e5803,null))[_0x9fe8('0x3f')](handleError(_0x5e5803,null));};exports[_0x9fe8('0x46')]=function(_0x47ba7b,_0x52323d){return db[_0x9fe8('0x29')][_0x9fe8('0x46')]()['then'](respondWithResult(_0x52323d,null))[_0x9fe8('0x3f')](handleError(_0x52323d,null));};
\ No newline at end of file
index 4ef395a..25940a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65ea=['request-promise','path','rimraf','../../config/environment','./cmHopperBlack.attributes','exports','define','cm_hopper_black','../../config/logger','api','bluebird'];(function(_0x1af669,_0x3486d4){var _0x384c91=function(_0x2540d4){while(--_0x2540d4){_0x1af669['push'](_0x1af669['shift']());}};_0x384c91(++_0x3486d4);}(_0x65ea,0x19f));var _0xa65e=function(_0x2af81b,_0x217d36){_0x2af81b=_0x2af81b-0x0;var _0x13671f=_0x65ea[_0x2af81b];return _0x13671f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xa65e('0x0'))(_0xa65e('0x1'));var moment=require('moment');var BPromise=require(_0xa65e('0x2'));var rp=require(_0xa65e('0x3'));var fs=require('fs');var path=require(_0xa65e('0x4'));var rimraf=require(_0xa65e('0x5'));var config=require(_0xa65e('0x6'));var attributes=require(_0xa65e('0x7'));module[_0xa65e('0x8')]=function(_0x470d98,_0x534b3c){return _0x470d98[_0xa65e('0x9')]('CmHopperBlack',attributes,{'tableName':_0xa65e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcb32=['rimraf','../../config/environment','exports','define','CmHopperBlack','cm_hopper_black','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xcb32,0x1a6));var _0x2cb3=function(_0x499ffc,_0x36164d){_0x499ffc=_0x499ffc-0x0;var _0x5c3c5b=_0xcb32[_0x499ffc];return _0x5c3c5b;};'use strict';var _=require(_0x2cb3('0x0'));var util=require(_0x2cb3('0x1'));var logger=require(_0x2cb3('0x2'))(_0x2cb3('0x3'));var moment=require(_0x2cb3('0x4'));var BPromise=require(_0x2cb3('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2cb3('0x6'));var rimraf=require(_0x2cb3('0x7'));var config=require(_0x2cb3('0x8'));var attributes=require('./cmHopperBlack.attributes');module[_0x2cb3('0x9')]=function(_0x106b37,_0x48807f){return _0x106b37[_0x2cb3('0xa')](_0x2cb3('0xb'),attributes,{'tableName':_0x2cb3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 43c196a..9e8a741 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde09=['where','attributes','limit','include','map','model','debug','UpdateCmHopperBlack','update','body','DestroyCmHopperBlack','destroy','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','request\x20sent','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopperBlack,\x20%s,\x20%s','message','info','result','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xde09,0x192));var _0x9de0=function(_0x2112d4,_0x3c863c){_0x2112d4=_0x2112d4-0x0;var _0x434972=_0xde09[_0x2112d4];return _0x434972;};'use strict';var _=require(_0x9de0('0x0'));var util=require(_0x9de0('0x1'));var moment=require(_0x9de0('0x2'));var BPromise=require(_0x9de0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9de0('0x4'))['db'];var utils=require(_0x9de0('0x5'));var logger=require(_0x9de0('0x6'))(_0x9de0('0x7'));var config=require('../../config/environment');var jayson=require(_0x9de0('0x8'));var client=jayson[_0x9de0('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c3c7d,_0x40a0c1,_0x20da63){return new BPromise(function(_0x495eec,_0x7a18c8){return client[_0x9de0('0xa')](_0x1c3c7d,_0x20da63)[_0x9de0('0xb')](function(_0x1ce26c){logger['info']('CmHopperBlack,\x20%s,\x20%s',_0x40a0c1,_0x9de0('0xc'));logger['debug'](_0x9de0('0xd'),_0x40a0c1,_0x9de0('0xc'),JSON[_0x9de0('0xe')](_0x1ce26c));if(_0x1ce26c['error']){if(_0x1ce26c[_0x9de0('0xf')][_0x9de0('0x10')]===0x1f4){logger['error'](_0x9de0('0x11'),_0x40a0c1,_0x1ce26c[_0x9de0('0xf')][_0x9de0('0x12')]);return _0x7a18c8(_0x1ce26c['error']['message']);}logger[_0x9de0('0xf')](_0x9de0('0x11'),_0x40a0c1,_0x1ce26c[_0x9de0('0xf')]['message']);return _0x495eec(_0x1ce26c[_0x9de0('0xf')]['message']);}else{logger[_0x9de0('0x13')](_0x9de0('0x11'),_0x40a0c1,_0x9de0('0xc'));_0x495eec(_0x1ce26c[_0x9de0('0x14')][_0x9de0('0x12')]);}})[_0x9de0('0x15')](function(_0x3cc45a){logger[_0x9de0('0xf')](_0x9de0('0x11'),_0x40a0c1,_0x3cc45a);_0x7a18c8(_0x3cc45a);});});}exports[_0x9de0('0x16')]=function(_0x7d914e){var _0x13d9ab=this;return new Promise(function(_0x183fcc,_0x1d7abb){return db[_0x9de0('0x17')][_0x9de0('0x18')]({'raw':_0x7d914e['options']?_0x7d914e[_0x9de0('0x19')][_0x9de0('0x1a')]===undefined?!![]:![]:!![],'where':_0x7d914e[_0x9de0('0x19')]?_0x7d914e[_0x9de0('0x19')][_0x9de0('0x1b')]||null:null,'attributes':_0x7d914e['options']?_0x7d914e['options'][_0x9de0('0x1c')]||null:null,'limit':_0x7d914e['options']?_0x7d914e[_0x9de0('0x19')][_0x9de0('0x1d')]||null:null,'include':_0x7d914e[_0x9de0('0x19')]?_0x7d914e[_0x9de0('0x19')][_0x9de0('0x1e')]?_[_0x9de0('0x1f')](_0x7d914e[_0x9de0('0x19')][_0x9de0('0x1e')],function(_0x527f87){return{'model':db[_0x527f87[_0x9de0('0x20')]],'as':_0x527f87['as'],'attributes':_0x527f87['attributes'],'include':_0x527f87[_0x9de0('0x1e')]?_[_0x9de0('0x1f')](_0x527f87[_0x9de0('0x1e')],function(_0x239d8a){return{'model':db[_0x239d8a[_0x9de0('0x20')]],'as':_0x239d8a['as'],'attributes':_0x239d8a[_0x9de0('0x1c')],'include':_0x239d8a[_0x9de0('0x1e')]?_[_0x9de0('0x1f')](_0x239d8a['include'],function(_0x33233a){return{'model':db[_0x33233a[_0x9de0('0x20')]],'as':_0x33233a['as'],'attributes':_0x33233a[_0x9de0('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x9de0('0xb')](function(_0x5a3775){logger[_0x9de0('0x13')](_0x9de0('0x16'),_0x7d914e);logger[_0x9de0('0x21')]('GetCmHopperBlack',_0x7d914e,JSON['stringify'](_0x5a3775));_0x183fcc(_0x5a3775);})[_0x9de0('0x15')](function(_0x53b9f0){logger[_0x9de0('0xf')](_0x9de0('0x16'),_0x53b9f0[_0x9de0('0x12')],_0x7d914e);_0x1d7abb(_0x13d9ab[_0x9de0('0xf')](0x1f4,_0x53b9f0['message']));});});};exports[_0x9de0('0x22')]=function(_0x3138c7){var _0x578cc0=this;return new Promise(function(_0x3fdae4,_0x3e2142){return db['CmHopperBlack'][_0x9de0('0x23')](_0x3138c7[_0x9de0('0x24')],{'raw':_0x3138c7[_0x9de0('0x19')]?_0x3138c7[_0x9de0('0x19')][_0x9de0('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3138c7[_0x9de0('0x19')]?_0x3138c7['options']['where']||null:null,'attributes':_0x3138c7['options']?_0x3138c7['options'][_0x9de0('0x1c')]||null:null,'limit':_0x3138c7[_0x9de0('0x19')]?_0x3138c7[_0x9de0('0x19')][_0x9de0('0x1d')]||null:null})['then'](function(_0x2e1a0d){logger['info'](_0x9de0('0x22'),_0x3138c7);logger['debug'](_0x9de0('0x22'),_0x3138c7,JSON['stringify'](_0x2e1a0d));_0x3fdae4(_0x2e1a0d);})[_0x9de0('0x15')](function(_0x213392){logger[_0x9de0('0xf')](_0x9de0('0x22'),_0x213392['message'],_0x3138c7);_0x3e2142(_0x578cc0[_0x9de0('0xf')](0x1f4,_0x213392[_0x9de0('0x12')]));});});};exports[_0x9de0('0x25')]=function(_0xc21bba){var _0x1242db=this;return new Promise(function(_0x408135,_0x16b5ff){return db[_0x9de0('0x17')][_0x9de0('0x26')]({'where':_0xc21bba[_0x9de0('0x19')]?_0xc21bba[_0x9de0('0x19')][_0x9de0('0x1b')]||null:null})[_0x9de0('0xb')](function(_0x4abe2a){logger['info'](_0x9de0('0x25'),_0xc21bba);logger[_0x9de0('0x21')]('DestroyCmHopperBlack',_0xc21bba,JSON[_0x9de0('0xe')](_0x4abe2a));_0x408135(_0x4abe2a);})[_0x9de0('0x15')](function(_0x40ef67){logger[_0x9de0('0xf')](_0x9de0('0x25'),_0x40ef67['message'],_0xc21bba);_0x16b5ff(_0x1242db[_0x9de0('0xf')](0x1f4,_0x40ef67[_0x9de0('0x12')]));});});};
\ No newline at end of file
+var _0x22d8=['then','lodash','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','CmHopperBlack,\x20%s,\x20%s','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CmHopperBlack','findAll','options','where','attributes','limit','include','map','model','GetCmHopperBlack','body','raw','UpdateCmHopperBlack','DestroyCmHopperBlack','destroy'];(function(_0x4441b5,_0x439198){var _0x43edfc=function(_0x28e1a9){while(--_0x28e1a9){_0x4441b5['push'](_0x4441b5['shift']());}};_0x43edfc(++_0x439198);}(_0x22d8,0x1bd));var _0x822d=function(_0x15574c,_0x44373d){_0x15574c=_0x15574c-0x0;var _0x323d16=_0x22d8[_0x15574c];return _0x323d16;};'use strict';var _=require(_0x822d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x822d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x822d('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x822d('0x3'));var logger=require(_0x822d('0x4'))(_0x822d('0x5'));var config=require(_0x822d('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x822d('0x7')][_0x822d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x277800,_0x4e6c68,_0x28ad10){return new BPromise(function(_0x66af65,_0x1ea4ce){return client[_0x822d('0x9')](_0x277800,_0x28ad10)['then'](function(_0x661ee0){logger[_0x822d('0xa')](_0x822d('0xb'),_0x4e6c68,'request\x20sent');logger[_0x822d('0xc')](_0x822d('0xd'),_0x4e6c68,_0x822d('0xe'),JSON[_0x822d('0xf')](_0x661ee0));if(_0x661ee0[_0x822d('0x10')]){if(_0x661ee0[_0x822d('0x10')][_0x822d('0x11')]===0x1f4){logger[_0x822d('0x10')]('CmHopperBlack,\x20%s,\x20%s',_0x4e6c68,_0x661ee0[_0x822d('0x10')]['message']);return _0x1ea4ce(_0x661ee0[_0x822d('0x10')][_0x822d('0x12')]);}logger[_0x822d('0x10')](_0x822d('0xb'),_0x4e6c68,_0x661ee0[_0x822d('0x10')]['message']);return _0x66af65(_0x661ee0[_0x822d('0x10')]['message']);}else{logger[_0x822d('0xa')](_0x822d('0xb'),_0x4e6c68,_0x822d('0xe'));_0x66af65(_0x661ee0[_0x822d('0x13')][_0x822d('0x12')]);}})[_0x822d('0x14')](function(_0x2389b2){logger[_0x822d('0x10')](_0x822d('0xb'),_0x4e6c68,_0x2389b2);_0x1ea4ce(_0x2389b2);});});}exports['GetCmHopperBlack']=function(_0x393e9b){var _0x2ddfd7=this;return new Promise(function(_0x57fb53,_0x2c831f){return db[_0x822d('0x15')][_0x822d('0x16')]({'raw':_0x393e9b['options']?_0x393e9b[_0x822d('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x393e9b[_0x822d('0x17')]?_0x393e9b['options'][_0x822d('0x18')]||null:null,'attributes':_0x393e9b[_0x822d('0x17')]?_0x393e9b['options'][_0x822d('0x19')]||null:null,'limit':_0x393e9b[_0x822d('0x17')]?_0x393e9b['options'][_0x822d('0x1a')]||null:null,'include':_0x393e9b[_0x822d('0x17')]?_0x393e9b[_0x822d('0x17')][_0x822d('0x1b')]?_[_0x822d('0x1c')](_0x393e9b['options'][_0x822d('0x1b')],function(_0xcfb706){return{'model':db[_0xcfb706[_0x822d('0x1d')]],'as':_0xcfb706['as'],'attributes':_0xcfb706[_0x822d('0x19')],'include':_0xcfb706[_0x822d('0x1b')]?_[_0x822d('0x1c')](_0xcfb706['include'],function(_0x5d5d69){return{'model':db[_0x5d5d69[_0x822d('0x1d')]],'as':_0x5d5d69['as'],'attributes':_0x5d5d69[_0x822d('0x19')],'include':_0x5d5d69[_0x822d('0x1b')]?_['map'](_0x5d5d69[_0x822d('0x1b')],function(_0x3dc29){return{'model':db[_0x3dc29['model']],'as':_0x3dc29['as'],'attributes':_0x3dc29[_0x822d('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x43d7e6){logger[_0x822d('0xa')](_0x822d('0x1e'),_0x393e9b);logger['debug'](_0x822d('0x1e'),_0x393e9b,JSON[_0x822d('0xf')](_0x43d7e6));_0x57fb53(_0x43d7e6);})[_0x822d('0x14')](function(_0x43980c){logger[_0x822d('0x10')]('GetCmHopperBlack',_0x43980c[_0x822d('0x12')],_0x393e9b);_0x2c831f(_0x2ddfd7[_0x822d('0x10')](0x1f4,_0x43980c[_0x822d('0x12')]));});});};exports['UpdateCmHopperBlack']=function(_0x253f4b){var _0xee9eeb=this;return new Promise(function(_0x3a7c11,_0x283d83){return db[_0x822d('0x15')]['update'](_0x253f4b[_0x822d('0x1f')],{'raw':_0x253f4b[_0x822d('0x17')]?_0x253f4b[_0x822d('0x17')][_0x822d('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x253f4b['options']?_0x253f4b[_0x822d('0x17')][_0x822d('0x18')]||null:null,'attributes':_0x253f4b['options']?_0x253f4b['options'][_0x822d('0x19')]||null:null,'limit':_0x253f4b[_0x822d('0x17')]?_0x253f4b[_0x822d('0x17')][_0x822d('0x1a')]||null:null})['then'](function(_0x2586ef){logger[_0x822d('0xa')]('UpdateCmHopperBlack',_0x253f4b);logger[_0x822d('0xc')](_0x822d('0x21'),_0x253f4b,JSON[_0x822d('0xf')](_0x2586ef));_0x3a7c11(_0x2586ef);})[_0x822d('0x14')](function(_0x1be347){logger[_0x822d('0x10')]('UpdateCmHopperBlack',_0x1be347[_0x822d('0x12')],_0x253f4b);_0x283d83(_0xee9eeb['error'](0x1f4,_0x1be347[_0x822d('0x12')]));});});};exports[_0x822d('0x22')]=function(_0x29bb90){var _0x331fc7=this;return new Promise(function(_0x39c448,_0x15a2ec){return db[_0x822d('0x15')][_0x822d('0x23')]({'where':_0x29bb90[_0x822d('0x17')]?_0x29bb90[_0x822d('0x17')][_0x822d('0x18')]||null:null})[_0x822d('0x24')](function(_0x49a19b){logger[_0x822d('0xa')]('DestroyCmHopperBlack',_0x29bb90);logger[_0x822d('0xc')](_0x822d('0x22'),_0x29bb90,JSON[_0x822d('0xf')](_0x49a19b));_0x39c448(_0x49a19b);})[_0x822d('0x14')](function(_0x39f67a){logger['error'](_0x822d('0x22'),_0x39f67a[_0x822d('0x12')],_0x29bb90);_0x15a2ec(_0x331fc7[_0x822d('0x10')](0x1f4,_0x39f67a[_0x822d('0x12')]));});});};
\ No newline at end of file
index 70f85fb..11d609f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1db9=['isAuthenticated','describe','put','/:id','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','/describe'];(function(_0x576885,_0x576ce3){var _0x29c536=function(_0x4b90b3){while(--_0x4b90b3){_0x576885['push'](_0x576885['shift']());}};_0x29c536(++_0x576ce3);}(_0x1db9,0x176));var _0x91db=function(_0x2fbe77,_0x213747){_0x2fbe77=_0x2fbe77-0x0;var _0x521e8c=_0x1db9[_0x2fbe77];return _0x521e8c;};'use strict';var multer=require(_0x91db('0x0'));var util=require(_0x91db('0x1'));var path=require(_0x91db('0x2'));var timeout=require(_0x91db('0x3'));var express=require(_0x91db('0x4'));var router=express[_0x91db('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x91db('0x6'));var interaction=require(_0x91db('0x7'));var config=require('../../config/environment');var controller=require('./cmHopperBlack.controller');router[_0x91db('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x91db('0x8')](_0x91db('0x9'),auth[_0x91db('0xa')](),controller[_0x91db('0xb')]);router[_0x91db('0x8')]('/:id',auth[_0x91db('0xa')](),controller['show']);router[_0x91db('0xc')](_0x91db('0xd'),auth[_0x91db('0xa')](),controller['update']);router[_0x91db('0xe')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x91db('0xf')]=router;
\ No newline at end of file
+var _0x9a5a=['put','/:id','update','delete','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','index','/describe','isAuthenticated','describe','show'];(function(_0x411613,_0x1d5202){var _0x443365=function(_0x11c9ea){while(--_0x11c9ea){_0x411613['push'](_0x411613['shift']());}};_0x443365(++_0x1d5202);}(_0x9a5a,0x194));var _0xa9a5=function(_0x472d6d,_0x5db7c1){_0x472d6d=_0x472d6d-0x0;var _0x37cda0=_0x9a5a[_0x472d6d];return _0x37cda0;};'use strict';var multer=require(_0xa9a5('0x0'));var util=require(_0xa9a5('0x1'));var path=require(_0xa9a5('0x2'));var timeout=require(_0xa9a5('0x3'));var express=require(_0xa9a5('0x4'));var router=express['Router']();var fs_extra=require(_0xa9a5('0x5'));var auth=require(_0xa9a5('0x6'));var interaction=require(_0xa9a5('0x7'));var config=require(_0xa9a5('0x8'));var controller=require(_0xa9a5('0x9'));router[_0xa9a5('0xa')]('/',auth['isAuthenticated'](),controller[_0xa9a5('0xb')]);router[_0xa9a5('0xa')](_0xa9a5('0xc'),auth[_0xa9a5('0xd')](),controller[_0xa9a5('0xe')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xa9a5('0xf')]);router[_0xa9a5('0x10')](_0xa9a5('0x11'),auth[_0xa9a5('0xd')](),controller[_0xa9a5('0x12')]);router[_0xa9a5('0x13')](_0xa9a5('0x11'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 063cc36..bd685fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe69=['seconds','BOOLEAN','sequelize','moment','exports','INTEGER','STRING','DATE','setDataValue','followuptime'];(function(_0x52205a,_0x14f256){var _0x40bb7d=function(_0xd9958c){while(--_0xd9958c){_0x52205a['push'](_0x52205a['shift']());}};_0x40bb7d(++_0x14f256);}(_0xbe69,0x1ce));var _0x9be6=function(_0x1eda52,_0x56aadb){_0x1eda52=_0x1eda52-0x0;var _0x40dceb=_0xbe69[_0x1eda52];return _0x40dceb;};'use strict';var Sequelize=require(_0x9be6('0x0'));var moment=require(_0x9be6('0x1'));module[_0x9be6('0x2')]={'state':{'type':Sequelize[_0x9be6('0x3')](0x2)},'statedesc':{'type':Sequelize[_0x9be6('0x4')]},'scheduledat':{'type':Sequelize[_0x9be6('0x5')]},'countbusyretry':{'type':Sequelize[_0x9be6('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x9be6('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x9be6('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x9be6('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x9be6('0x4')]},'originatecalleridnum':{'type':Sequelize[_0x9be6('0x4')]},'originatecalleridname':{'type':Sequelize[_0x9be6('0x4')]},'calleridnum':{'type':Sequelize[_0x9be6('0x4')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x9be6('0x5')]},'responsetime':{'type':Sequelize[_0x9be6('0x5')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x9be6('0x5')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x9be6('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x9be6('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x9be6('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x9be6('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x9be6('0x4')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x9be6('0x4')]},'membername':{'type':Sequelize[_0x9be6('0x4')]},'reason':{'type':Sequelize[_0x9be6('0x4')]},'disposition':{'type':Sequelize[_0x9be6('0x4')]},'secondDisposition':{'type':Sequelize[_0x9be6('0x4')]},'thirdDisposition':{'type':Sequelize[_0x9be6('0x4')]},'dispositionat':{'type':Sequelize[_0x9be6('0x5')],'set':function(_0x3e798f){var _0x384082=this['getDataValue']('endtime');if(_0x384082&&_0x3e798f){this[_0x9be6('0x6')](_0x9be6('0x7'),moment(_0x3e798f)['diff'](moment(_0x384082),_0x9be6('0x8')));}return this[_0x9be6('0x6')]('dispositionat',_0x3e798f);}},'amd':{'type':Sequelize[_0x9be6('0x9')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x9be6('0x9')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize[_0x9be6('0x9')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x9be6('0x5')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize[_0x9be6('0x5')]},'recallme':{'type':Sequelize[_0x9be6('0x9')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x9be6('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0x9be6('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x9be6('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x9be6('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x25e1=['STRING','DATE','getDataValue','endtime','setDataValue','followuptime','seconds','dispositionat','BOOLEAN','sequelize','moment','INTEGER'];(function(_0x59d353,_0x481a8a){var _0x278444=function(_0x5dc3c9){while(--_0x5dc3c9){_0x59d353['push'](_0x59d353['shift']());}};_0x278444(++_0x481a8a);}(_0x25e1,0xb1));var _0x125e=function(_0x8fb231,_0x3a2606){_0x8fb231=_0x8fb231-0x0;var _0x14f30a=_0x25e1[_0x8fb231];return _0x14f30a;};'use strict';var Sequelize=require(_0x125e('0x0'));var moment=require(_0x125e('0x1'));module['exports']={'state':{'type':Sequelize[_0x125e('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x125e('0x3')]},'scheduledat':{'type':Sequelize[_0x125e('0x4')]},'countbusyretry':{'type':Sequelize[_0x125e('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x125e('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x125e('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x125e('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x125e('0x3')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x125e('0x3')]},'calleridname':{'type':Sequelize[_0x125e('0x3')]},'starttime':{'type':Sequelize[_0x125e('0x4')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x125e('0x4')]},'droptime':{'type':Sequelize[_0x125e('0x4')]},'endtime':{'type':Sequelize[_0x125e('0x4')]},'ringtime':{'type':Sequelize[_0x125e('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x125e('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x125e('0x3')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x125e('0x3')]},'membername':{'type':Sequelize[_0x125e('0x3')]},'reason':{'type':Sequelize[_0x125e('0x3')]},'disposition':{'type':Sequelize[_0x125e('0x3')]},'secondDisposition':{'type':Sequelize[_0x125e('0x3')]},'thirdDisposition':{'type':Sequelize[_0x125e('0x3')]},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x5abad6){var _0x2910db=this[_0x125e('0x5')](_0x125e('0x6'));if(_0x2910db&&_0x5abad6){this[_0x125e('0x7')](_0x125e('0x8'),moment(_0x5abad6)['diff'](moment(_0x2910db),_0x125e('0x9')));}return this[_0x125e('0x7')](_0x125e('0xa'),_0x5abad6);}},'amd':{'type':Sequelize[_0x125e('0xb')],'defaultValue':![]},'fax':{'type':Sequelize[_0x125e('0xb')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x125e('0xb')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x125e('0xb')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x125e('0x4')]},'callback':{'type':Sequelize[_0x125e('0xb')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x125e('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x125e('0x4')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize[_0x125e('0x4')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x125e('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0x125e('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x125e('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x125e('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x125e('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 33c0484..ebd0123 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf61e=['rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','limit','set','Content-Range','apply','destroy','then','status','error','stack','name','send','index','map','CmHopperFinal','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','find','describe','update','body','uniqueid','params','countContactsQueueCampaignHopperFinal','COUNT','sequelize','literal','noSuchContacts','noAnswerContacts','busyContacts','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','moveContactsQueueCampaignHopperFinal','insert','cm_hopper','phone','scheduledAt','VoiceQueueId','createdAt','updatedAt','select','field','NOW()','ANY_VALUE(ContactId)','ListId','ANY_VALUE(VoiceQueueId)','from','cm_hopper_final','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','VoiceQueueId\x20=\x20?','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','into','fromQuery','ContactId','CampaignId','ANY_VALUE(calleridnum)','ANY_VALUE(ListId)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','calleridnum','checkContactHopper','findOne','eml-format'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0xf61e,0x191));var _0xef61=function(_0x115f77,_0x4baddc){_0x115f77=_0x115f77-0x0;var _0x27dfe8=_0xf61e[_0x115f77];return _0x27dfe8;};'use strict';var emlformat=require(_0xef61('0x0'));var rimraf=require(_0xef61('0x1'));var zipdir=require(_0xef61('0x2'));var jsonpatch=require(_0xef61('0x3'));var rp=require(_0xef61('0x4'));var moment=require(_0xef61('0x5'));var BPromise=require(_0xef61('0x6'));var Mustache=require(_0xef61('0x7'));var util=require(_0xef61('0x8'));var path=require(_0xef61('0x9'));var sox=require(_0xef61('0xa'));var csv=require(_0xef61('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xef61('0xc'));var _=require(_0xef61('0xd'));var squel=require('squel');var crypto=require(_0xef61('0xe'));var jsforce=require(_0xef61('0xf'));var deskjs=require(_0xef61('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xef61('0x11'));var Redis=require(_0xef61('0x12'));var authService=require(_0xef61('0x13'));var qs=require(_0xef61('0x14'));var as=require(_0xef61('0x15'));var hardwareService=require(_0xef61('0x16'));var logger=require(_0xef61('0x17'))(_0xef61('0x18'));var utils=require(_0xef61('0x19'));var config=require(_0xef61('0x1a'));var licenseUtil=require(_0xef61('0x1b'));var db=require(_0xef61('0x1c'))['db'];function respondWithStatusCode(_0x114e1f,_0x318f1c){_0x318f1c=_0x318f1c||0xcc;return function(_0x5de159){if(_0x5de159){return _0x114e1f[_0xef61('0x1d')](_0x318f1c);}return _0x114e1f['status'](_0x318f1c)[_0xef61('0x1e')]();};}function respondWithResult(_0x1db2a9,_0x370ee0){_0x370ee0=_0x370ee0||0xc8;return function(_0x76ef9b){if(_0x76ef9b){return _0x1db2a9['status'](_0x370ee0)[_0xef61('0x1f')](_0x76ef9b);}};}function respondWithFilteredResult(_0x435beb,_0x1224c2){return function(_0x78ff22){if(_0x78ff22){var _0x588a61=typeof _0x1224c2[_0xef61('0x20')]===_0xef61('0x21')&&typeof _0x1224c2['limit']===_0xef61('0x21');var _0x408541=_0x78ff22[_0xef61('0x22')];var _0x22dc1b=_0x588a61?0x0:_0x1224c2[_0xef61('0x20')];var _0x28315a=_0x588a61?_0x78ff22[_0xef61('0x22')]:_0x1224c2['offset']+_0x1224c2[_0xef61('0x23')];var _0x2c8dad;if(_0x28315a>=_0x408541){_0x28315a=_0x408541;_0x2c8dad=0xc8;}else{_0x2c8dad=0xce;}_0x435beb['status'](_0x2c8dad);return _0x435beb[_0xef61('0x24')](_0xef61('0x25'),_0x22dc1b+'-'+_0x28315a+'/'+_0x408541)[_0xef61('0x1f')](_0x78ff22);}return null;};}function patchUpdates(_0x26cf42){return function(_0xb0d7a4){try{jsonpatch[_0xef61('0x26')](_0xb0d7a4,_0x26cf42,!![]);}catch(_0x92ea33){return BPromise['reject'](_0x92ea33);}return _0xb0d7a4['save']();};}function saveUpdates(_0x3d31c1,_0x58bd7d){return function(_0x389d6d){if(_0x389d6d){return _0x389d6d['update'](_0x3d31c1)['then'](function(_0x2f0569){return _0x2f0569;});}return null;};}function removeEntity(_0x5ce99d,_0x53181b){return function(_0xfbee94){if(_0xfbee94){return _0xfbee94[_0xef61('0x27')]()[_0xef61('0x28')](function(){_0x5ce99d[_0xef61('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16b144,_0x4e738f){return function(_0x2a6832){if(!_0x2a6832){_0x16b144[_0xef61('0x1d')](0x194);}return _0x2a6832;};}function handleError(_0x2419a9,_0xf4c7c9){_0xf4c7c9=_0xf4c7c9||0x1f4;return function(_0x2155f1){logger[_0xef61('0x2a')](_0x2155f1[_0xef61('0x2b')]);if(_0x2155f1[_0xef61('0x2c')]){delete _0x2155f1[_0xef61('0x2c')];}_0x2419a9[_0xef61('0x29')](_0xf4c7c9)[_0xef61('0x2d')](_0x2155f1);};}exports[_0xef61('0x2e')]=function(_0xeb9a62,_0x63edd4){var _0x1f3572={},_0x85978={},_0x39c15e={'count':0x0,'rows':[]};var _0x393ea9=_[_0xef61('0x2f')](db[_0xef61('0x30')][_0xef61('0x31')],function(_0x53fa3b){return{'name':_0x53fa3b['fieldName'],'type':_0x53fa3b['type'][_0xef61('0x32')]};});_0x85978[_0xef61('0x33')]=_[_0xef61('0x2f')](_0x393ea9,'name');_0x85978[_0xef61('0x34')]=_[_0xef61('0x35')](_0xeb9a62['query']);_0x85978[_0xef61('0x36')]=_['intersection'](_0x85978['model'],_0x85978[_0xef61('0x34')]);_0x1f3572['attributes']=_[_0xef61('0x37')](_0x85978['model'],qs[_0xef61('0x38')](_0xeb9a62[_0xef61('0x34')][_0xef61('0x38')]));_0x1f3572[_0xef61('0x39')]=_0x1f3572[_0xef61('0x39')][_0xef61('0x3a')]?_0x1f3572[_0xef61('0x39')]:_0x85978[_0xef61('0x33')];if(!_0xeb9a62[_0xef61('0x34')][_0xef61('0x3b')]('nolimit')){_0x1f3572[_0xef61('0x23')]=qs[_0xef61('0x23')](_0xeb9a62[_0xef61('0x34')][_0xef61('0x23')]);_0x1f3572[_0xef61('0x20')]=qs['offset'](_0xeb9a62[_0xef61('0x34')][_0xef61('0x20')]);}_0x1f3572[_0xef61('0x3c')]=qs['sort'](_0xeb9a62['query']['sort']);_0x1f3572[_0xef61('0x3d')]=qs['filters'](_['pick'](_0xeb9a62['query'],_0x85978[_0xef61('0x36')]),_0x393ea9);if(_0xeb9a62[_0xef61('0x34')][_0xef61('0x3e')]){_0x1f3572['where']=_['merge'](_0x1f3572['where'],{'$or':_[_0xef61('0x2f')](_0x393ea9,function(_0x32ad44){if(_0x32ad44['type']!==_0xef61('0x3f')){var _0x12f442={};_0x12f442[_0x32ad44[_0xef61('0x2c')]]={'$like':'%'+_0xeb9a62[_0xef61('0x34')]['filter']+'%'};return _0x12f442;}})});}_0x1f3572=_[_0xef61('0x40')]({},_0x1f3572,_0xeb9a62[_0xef61('0x41')]);var _0x3103d4={'where':_0x1f3572[_0xef61('0x3d')]};return db['CmHopperFinal']['count'](_0x3103d4)[_0xef61('0x28')](function(_0x462972){_0x39c15e[_0xef61('0x22')]=_0x462972;if(_0xeb9a62['query'][_0xef61('0x42')]){_0x1f3572[_0xef61('0x43')]=[{'all':!![]}];}return db[_0xef61('0x30')][_0xef61('0x44')](_0x1f3572);})['then'](function(_0x545597){_0x39c15e['rows']=_0x545597;return _0x39c15e;})[_0xef61('0x28')](respondWithFilteredResult(_0x63edd4,_0x1f3572))[_0xef61('0x45')](handleError(_0x63edd4,null));};exports[_0xef61('0x46')]=function(_0xe40d,_0x3f81a1){var _0x272143={'raw':!![],'where':{'id':_0xe40d['params']['id']}},_0xc9b467={};_0xc9b467[_0xef61('0x33')]=_[_0xef61('0x35')](db[_0xef61('0x30')][_0xef61('0x31')]);_0xc9b467['query']=_[_0xef61('0x35')](_0xe40d[_0xef61('0x34')]);_0xc9b467[_0xef61('0x36')]=_[_0xef61('0x37')](_0xc9b467[_0xef61('0x33')],_0xc9b467[_0xef61('0x34')]);_0x272143['attributes']=_[_0xef61('0x37')](_0xc9b467[_0xef61('0x33')],qs[_0xef61('0x38')](_0xe40d['query'][_0xef61('0x38')]));_0x272143[_0xef61('0x39')]=_0x272143[_0xef61('0x39')][_0xef61('0x3a')]?_0x272143[_0xef61('0x39')]:_0xc9b467[_0xef61('0x33')];if(_0xe40d['query'][_0xef61('0x42')]){_0x272143[_0xef61('0x43')]=[{'all':!![]}];}_0x272143=_['merge']({},_0x272143,_0xe40d[_0xef61('0x41')]);return db[_0xef61('0x30')][_0xef61('0x47')](_0x272143)[_0xef61('0x28')](handleEntityNotFound(_0x3f81a1,null))['then'](respondWithResult(_0x3f81a1,null))[_0xef61('0x45')](handleError(_0x3f81a1,null));};exports[_0xef61('0x48')]=function(_0x5e614b,_0x47b09d){return db[_0xef61('0x30')][_0xef61('0x48')]()['then'](respondWithResult(_0x47b09d,null))[_0xef61('0x45')](handleError(_0x47b09d,null));};exports[_0xef61('0x49')]=function(_0x13d0f8,_0x2904e0){if(_0x13d0f8[_0xef61('0x4a')][_0xef61('0x4b')]){delete _0x13d0f8[_0xef61('0x4a')]['uniqueid'];}return db[_0xef61('0x30')]['find']({'where':{'uniqueid':_0x13d0f8[_0xef61('0x4c')]['id']}})[_0xef61('0x28')](handleEntityNotFound(_0x2904e0,null))[_0xef61('0x28')](saveUpdates(_0x13d0f8[_0xef61('0x4a')],null))[_0xef61('0x28')](respondWithResult(_0x2904e0,null))[_0xef61('0x45')](handleError(_0x2904e0,null));};exports[_0xef61('0x4d')]=function(_0x1565c7,_0x264877,_0x4af2f3){return db[_0xef61('0x30')][_0xef61('0x44')]({'raw':![],'where':{'VoiceQueueId':_0x1565c7['params']['id']},'attributes':[[db['sequelize']['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db['sequelize'][_0xef61('0x50')]('`state`\x20=\x200,\x201,\x20null'))),_0xef61('0x51')],[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')]('`state`\x20=\x203,\x201,\x20null'))),_0xef61('0x52')],[db[_0xef61('0x4f')]['fn']('COUNT',db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')]['literal']('`state`\x20=\x205,\x201,\x20null'))),_0xef61('0x53')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')]('`state`\x20=\x208,\x201,\x20null'))),_0xef61('0x54')],[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')](_0xef61('0x55')))),_0xef61('0x56')],[db['sequelize']['fn']('COUNT',db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')](_0xef61('0x57')))),_0xef61('0x58')],[db['sequelize']['fn'](_0xef61('0x4e'),db['sequelize']['fn']('IF',db['sequelize'][_0xef61('0x50')](_0xef61('0x59')))),_0xef61('0x5a')],[db['sequelize']['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')](_0xef61('0x5b')))),_0xef61('0x5c')]]})[_0xef61('0x28')](handleEntityNotFound(_0x264877,null))[_0xef61('0x28')](respondWithResult(_0x264877,null))[_0xef61('0x45')](handleError(_0x264877,null));};exports[_0xef61('0x5d')]=function(_0x5507ee,_0x15a8c5,_0x4b26e6){return db['CmHopperFinal'][_0xef61('0x44')]({'raw':![],'where':{'CampaignId':_0x5507ee[_0xef61('0x4c')]['id']},'attributes':[[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')]['literal']('`state`\x20=\x200,\x201,\x20null'))),_0xef61('0x51')],[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')](_0xef61('0x5e')))),_0xef61('0x52')],[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db['sequelize'][_0xef61('0x50')](_0xef61('0x5f')))),'busyContacts'],[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')](_0xef61('0x60')))),_0xef61('0x54')],[db[_0xef61('0x4f')]['fn']('COUNT',db[_0xef61('0x4f')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xef61('0x56')],[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db['sequelize']['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')](_0xef61('0x57')))),_0xef61('0x58')],[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')](_0xef61('0x59')))),_0xef61('0x5a')],[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')](_0xef61('0x5b')))),_0xef61('0x5c')]]})['then'](handleEntityNotFound(_0x15a8c5,null))[_0xef61('0x28')](respondWithResult(_0x15a8c5,null))[_0xef61('0x45')](handleError(_0x15a8c5,null));};exports[_0xef61('0x61')]=function(_0x5ab4fe,_0x38117b,_0x346752){return db['VoiceQueue'][_0xef61('0x47')]({'where':{'id':_0x5ab4fe[_0xef61('0x4c')]['id']}})['then'](handleEntityNotFound(_0x38117b,null))[_0xef61('0x28')](function(_0x54777a){var _0xe62ec2;if(_0x54777a){_0xe62ec2=squel[_0xef61('0x62')]()['into'](_0xef61('0x63'))['fromQuery']([_0xef61('0x64'),_0xef61('0x65'),'ContactId','ListId',_0xef61('0x66'),_0xef61('0x67'),_0xef61('0x68')],squel[_0xef61('0x69')]()[_0xef61('0x6a')]('ANY_VALUE(calleridnum)',_0xef61('0x64'))[_0xef61('0x6a')](_0xef61('0x6b'),_0xef61('0x65'))[_0xef61('0x6a')](_0xef61('0x6c'),'ContactId')[_0xef61('0x6a')]('ANY_VALUE(ListId)',_0xef61('0x6d'))[_0xef61('0x6a')](_0xef61('0x6e'),_0xef61('0x66'))[_0xef61('0x6a')](_0xef61('0x6b'),_0xef61('0x67'))[_0xef61('0x6a')](_0xef61('0x6b'),_0xef61('0x68'))[_0xef61('0x6f')](_0xef61('0x70'))[_0xef61('0x3d')]('VoiceQueueId\x20=\x20?',_0x5ab4fe[_0xef61('0x4c')]['id'][_0xef61('0x71')]())[_0xef61('0x3d')](_0xef61('0x72'),_0x5ab4fe['body'][_0xef61('0x73')]['toString']())['where'](_0xef61('0x74'))['where'](_0xef61('0x75'),squel['select']()['field'](_0xef61('0x64'))[_0xef61('0x6f')]('cm_hopper')[_0xef61('0x3d')]('VoiceQueueId\x20=\x20?',_0x5ab4fe[_0xef61('0x4c')]['id'][_0xef61('0x71')]()))[_0xef61('0x3d')](_0xef61('0x75'),squel['select']()[_0xef61('0x6a')]('calleridnum')[_0xef61('0x6f')](_0xef61('0x70'))[_0xef61('0x3d')](_0xef61('0x76'),_0x5ab4fe[_0xef61('0x4c')]['id'][_0xef61('0x71')]())[_0xef61('0x3d')](_0xef61('0x77')))[_0xef61('0x78')]('ContactId'))[_0xef61('0x71')]();return db['sequelize'][_0xef61('0x34')](_0xe62ec2);}return[];})[_0xef61('0x28')](respondWithResult(_0x38117b,null))['catch'](handleError(_0x38117b,null));};exports[_0xef61('0x79')]=function(_0x5b86e4,_0x52f7c5,_0x465fb5){return db[_0xef61('0x7a')]['find']({'where':{'id':_0x5b86e4[_0xef61('0x4c')]['id']}})[_0xef61('0x28')](handleEntityNotFound(_0x52f7c5,null))['then'](function(_0x352633){var _0x2cb8a8;if(_0x352633){_0x2cb8a8=squel['insert']()[_0xef61('0x7b')]('cm_hopper')[_0xef61('0x7c')]([_0xef61('0x64'),_0xef61('0x65'),_0xef61('0x7d'),'ListId',_0xef61('0x7e'),_0xef61('0x67'),_0xef61('0x68')],squel['select']()[_0xef61('0x6a')](_0xef61('0x7f'),'phone')['field'](_0xef61('0x6b'),_0xef61('0x65'))[_0xef61('0x6a')](_0xef61('0x6c'),_0xef61('0x7d'))[_0xef61('0x6a')](_0xef61('0x80'),_0xef61('0x6d'))[_0xef61('0x6a')](_0xef61('0x81'),_0xef61('0x7e'))[_0xef61('0x6a')](_0xef61('0x6b'),_0xef61('0x67'))[_0xef61('0x6a')](_0xef61('0x6b'),'updatedAt')[_0xef61('0x6f')](_0xef61('0x70'))[_0xef61('0x3d')](_0xef61('0x82'),_0x5b86e4[_0xef61('0x4c')]['id'][_0xef61('0x71')]())[_0xef61('0x3d')](_0xef61('0x72'),_0x5b86e4[_0xef61('0x4a')][_0xef61('0x73')][_0xef61('0x71')]())[_0xef61('0x3d')]('calleridnum\x20IS\x20NOT\x20NULL')[_0xef61('0x3d')](_0xef61('0x75'),squel['select']()[_0xef61('0x6a')](_0xef61('0x64'))[_0xef61('0x6f')](_0xef61('0x63'))[_0xef61('0x3d')]('CampaignId\x20=\x20?',_0x5b86e4[_0xef61('0x4c')]['id']['toString']()))[_0xef61('0x3d')](_0xef61('0x75'),squel[_0xef61('0x69')]()[_0xef61('0x6a')](_0xef61('0x83'))[_0xef61('0x6f')](_0xef61('0x70'))[_0xef61('0x3d')]('CampaignId\x20=\x20?',_0x5b86e4[_0xef61('0x4c')]['id'][_0xef61('0x71')]())[_0xef61('0x3d')](_0xef61('0x77')))[_0xef61('0x78')](_0xef61('0x7d')))[_0xef61('0x71')]();return db[_0xef61('0x4f')][_0xef61('0x34')](_0x2cb8a8);}return[];})['then'](respondWithResult(_0x52f7c5,null))[_0xef61('0x45')](handleError(_0x52f7c5,null));};exports[_0xef61('0x84')]=function(_0x22006a,_0x317c4a,_0x5d8ee9){return db['CmHopper'][_0xef61('0x85')]({'where':{'VoiceQueueId':_0x22006a[_0xef61('0x4a')][_0xef61('0x66')],'CampaignId':_0x22006a[_0xef61('0x4a')][_0xef61('0x7e')],'ContactId':_0x22006a[_0xef61('0x4a')][_0xef61('0x7d')]}})['then'](handleEntityNotFound(_0x317c4a,null))[_0xef61('0x28')](function(_0x660c71){if(_0x660c71){return _0x660c71;}return null;})[_0xef61('0x28')](respondWithResult(_0x317c4a,null))[_0xef61('0x45')](handleError(_0x317c4a,null));};
\ No newline at end of file
+var _0xeda8=['calleridnum','state\x20=\x204','group','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','checkContactHopper','findOne','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','update','then','stack','name','send','index','map','CmHopperFinal','rawAttributes','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','filter','includeAll','include','rows','catch','show','params','keys','options','find','body','uniqueid','countContactsQueueCampaignHopperFinal','findAll','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','congestionContacts','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','VoiceQueue','insert','into','cm_hopper','fromQuery','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','phone','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','from','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20NOT\x20IN\x20(?)','select'];(function(_0x154192,_0x2d360f){var _0x3c2792=function(_0x2e257b){while(--_0x2e257b){_0x154192['push'](_0x154192['shift']());}};_0x3c2792(++_0x2d360f);}(_0xeda8,0x104));var _0x8eda=function(_0xf8cbcf,_0x3b7bab){_0xf8cbcf=_0xf8cbcf-0x0;var _0x29b2ab=_0xeda8[_0xf8cbcf];return _0x29b2ab;};'use strict';var emlformat=require(_0x8eda('0x0'));var rimraf=require(_0x8eda('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8eda('0x2'));var rp=require(_0x8eda('0x3'));var moment=require(_0x8eda('0x4'));var BPromise=require(_0x8eda('0x5'));var Mustache=require(_0x8eda('0x6'));var util=require(_0x8eda('0x7'));var path=require(_0x8eda('0x8'));var sox=require(_0x8eda('0x9'));var csv=require(_0x8eda('0xa'));var ejs=require(_0x8eda('0xb'));var fs=require('fs');var fs_extra=require(_0x8eda('0xc'));var _=require(_0x8eda('0xd'));var squel=require('squel');var crypto=require(_0x8eda('0xe'));var jsforce=require(_0x8eda('0xf'));var deskjs=require(_0x8eda('0x10'));var toCsv=require(_0x8eda('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x8eda('0x11'));var as=require(_0x8eda('0x12'));var hardwareService=require(_0x8eda('0x13'));var logger=require('../../config/logger')(_0x8eda('0x14'));var utils=require('../../config/utils');var config=require(_0x8eda('0x15'));var licenseUtil=require(_0x8eda('0x16'));var db=require(_0x8eda('0x17'))['db'];function respondWithStatusCode(_0x1ad3df,_0x337573){_0x337573=_0x337573||0xcc;return function(_0x3af00c){if(_0x3af00c){return _0x1ad3df[_0x8eda('0x18')](_0x337573);}return _0x1ad3df[_0x8eda('0x19')](_0x337573)['end']();};}function respondWithResult(_0x500bd4,_0xe04d90){_0xe04d90=_0xe04d90||0xc8;return function(_0x223dcf){if(_0x223dcf){return _0x500bd4['status'](_0xe04d90)[_0x8eda('0x1a')](_0x223dcf);}};}function respondWithFilteredResult(_0x34b1ee,_0x123905){return function(_0x56ff8a){if(_0x56ff8a){var _0x3f2925=typeof _0x123905['offset']===_0x8eda('0x1b')&&typeof _0x123905['limit']===_0x8eda('0x1b');var _0x58023b=_0x56ff8a[_0x8eda('0x1c')];var _0x2a4d2b=_0x3f2925?0x0:_0x123905['offset'];var _0x5e44b7=_0x3f2925?_0x56ff8a[_0x8eda('0x1c')]:_0x123905[_0x8eda('0x1d')]+_0x123905[_0x8eda('0x1e')];var _0x41abfa;if(_0x5e44b7>=_0x58023b){_0x5e44b7=_0x58023b;_0x41abfa=0xc8;}else{_0x41abfa=0xce;}_0x34b1ee[_0x8eda('0x19')](_0x41abfa);return _0x34b1ee[_0x8eda('0x1f')](_0x8eda('0x20'),_0x2a4d2b+'-'+_0x5e44b7+'/'+_0x58023b)[_0x8eda('0x1a')](_0x56ff8a);}return null;};}function patchUpdates(_0x850cce){return function(_0x232786){try{jsonpatch[_0x8eda('0x21')](_0x232786,_0x850cce,!![]);}catch(_0x57f336){return BPromise[_0x8eda('0x22')](_0x57f336);}return _0x232786['save']();};}function saveUpdates(_0x45517e,_0x5183bc){return function(_0x1033d6){if(_0x1033d6){return _0x1033d6[_0x8eda('0x23')](_0x45517e)['then'](function(_0x58e54b){return _0x58e54b;});}return null;};}function removeEntity(_0x56dba4,_0x2a4c99){return function(_0x17cae8){if(_0x17cae8){return _0x17cae8['destroy']()[_0x8eda('0x24')](function(){_0x56dba4[_0x8eda('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x25e955,_0xfa57ca){return function(_0x24b1e1){if(!_0x24b1e1){_0x25e955[_0x8eda('0x18')](0x194);}return _0x24b1e1;};}function handleError(_0x2e42e4,_0x5c8488){_0x5c8488=_0x5c8488||0x1f4;return function(_0x41b5a9){logger['error'](_0x41b5a9[_0x8eda('0x25')]);if(_0x41b5a9[_0x8eda('0x26')]){delete _0x41b5a9[_0x8eda('0x26')];}_0x2e42e4['status'](_0x5c8488)[_0x8eda('0x27')](_0x41b5a9);};}exports[_0x8eda('0x28')]=function(_0x1dd12,_0x4cdd2e){var _0x1616ea={},_0x11a999={},_0x5dd315={'count':0x0,'rows':[]};var _0x27d2ce=_[_0x8eda('0x29')](db[_0x8eda('0x2a')][_0x8eda('0x2b')],function(_0x53274e){return{'name':_0x53274e['fieldName'],'type':_0x53274e['type'][_0x8eda('0x2c')]};});_0x11a999[_0x8eda('0x2d')]=_[_0x8eda('0x29')](_0x27d2ce,'name');_0x11a999['query']=_['keys'](_0x1dd12[_0x8eda('0x2e')]);_0x11a999[_0x8eda('0x2f')]=_[_0x8eda('0x30')](_0x11a999['model'],_0x11a999['query']);_0x1616ea['attributes']=_[_0x8eda('0x30')](_0x11a999[_0x8eda('0x2d')],qs[_0x8eda('0x31')](_0x1dd12[_0x8eda('0x2e')][_0x8eda('0x31')]));_0x1616ea[_0x8eda('0x32')]=_0x1616ea[_0x8eda('0x32')][_0x8eda('0x33')]?_0x1616ea[_0x8eda('0x32')]:_0x11a999[_0x8eda('0x2d')];if(!_0x1dd12[_0x8eda('0x2e')][_0x8eda('0x34')](_0x8eda('0x35'))){_0x1616ea[_0x8eda('0x1e')]=qs['limit'](_0x1dd12[_0x8eda('0x2e')][_0x8eda('0x1e')]);_0x1616ea[_0x8eda('0x1d')]=qs['offset'](_0x1dd12['query'][_0x8eda('0x1d')]);}_0x1616ea[_0x8eda('0x36')]=qs[_0x8eda('0x37')](_0x1dd12[_0x8eda('0x2e')]['sort']);_0x1616ea[_0x8eda('0x38')]=qs[_0x8eda('0x2f')](_[_0x8eda('0x39')](_0x1dd12[_0x8eda('0x2e')],_0x11a999[_0x8eda('0x2f')]),_0x27d2ce);if(_0x1dd12[_0x8eda('0x2e')]['filter']){_0x1616ea[_0x8eda('0x38')]=_[_0x8eda('0x3a')](_0x1616ea[_0x8eda('0x38')],{'$or':_[_0x8eda('0x29')](_0x27d2ce,function(_0x261e12){if(_0x261e12[_0x8eda('0x3b')]!=='VIRTUAL'){var _0x1067eb={};_0x1067eb[_0x261e12[_0x8eda('0x26')]]={'$like':'%'+_0x1dd12[_0x8eda('0x2e')][_0x8eda('0x3c')]+'%'};return _0x1067eb;}})});}_0x1616ea=_[_0x8eda('0x3a')]({},_0x1616ea,_0x1dd12['options']);var _0x17ee80={'where':_0x1616ea[_0x8eda('0x38')]};return db[_0x8eda('0x2a')]['count'](_0x17ee80)[_0x8eda('0x24')](function(_0x5d361e){_0x5dd315[_0x8eda('0x1c')]=_0x5d361e;if(_0x1dd12[_0x8eda('0x2e')][_0x8eda('0x3d')]){_0x1616ea[_0x8eda('0x3e')]=[{'all':!![]}];}return db[_0x8eda('0x2a')]['findAll'](_0x1616ea);})['then'](function(_0xbf14a1){_0x5dd315[_0x8eda('0x3f')]=_0xbf14a1;return _0x5dd315;})[_0x8eda('0x24')](respondWithFilteredResult(_0x4cdd2e,_0x1616ea))[_0x8eda('0x40')](handleError(_0x4cdd2e,null));};exports[_0x8eda('0x41')]=function(_0x13b3bc,_0x18b043){var _0xcb6164={'raw':!![],'where':{'id':_0x13b3bc[_0x8eda('0x42')]['id']}},_0x184590={};_0x184590[_0x8eda('0x2d')]=_[_0x8eda('0x43')](db[_0x8eda('0x2a')][_0x8eda('0x2b')]);_0x184590[_0x8eda('0x2e')]=_[_0x8eda('0x43')](_0x13b3bc[_0x8eda('0x2e')]);_0x184590[_0x8eda('0x2f')]=_[_0x8eda('0x30')](_0x184590['model'],_0x184590[_0x8eda('0x2e')]);_0xcb6164[_0x8eda('0x32')]=_['intersection'](_0x184590[_0x8eda('0x2d')],qs[_0x8eda('0x31')](_0x13b3bc['query'][_0x8eda('0x31')]));_0xcb6164[_0x8eda('0x32')]=_0xcb6164['attributes'][_0x8eda('0x33')]?_0xcb6164[_0x8eda('0x32')]:_0x184590[_0x8eda('0x2d')];if(_0x13b3bc['query'][_0x8eda('0x3d')]){_0xcb6164[_0x8eda('0x3e')]=[{'all':!![]}];}_0xcb6164=_[_0x8eda('0x3a')]({},_0xcb6164,_0x13b3bc[_0x8eda('0x44')]);return db[_0x8eda('0x2a')][_0x8eda('0x45')](_0xcb6164)[_0x8eda('0x24')](handleEntityNotFound(_0x18b043,null))['then'](respondWithResult(_0x18b043,null))[_0x8eda('0x40')](handleError(_0x18b043,null));};exports['describe']=function(_0xcde3e,_0x52b026){return db[_0x8eda('0x2a')]['describe']()[_0x8eda('0x24')](respondWithResult(_0x52b026,null))['catch'](handleError(_0x52b026,null));};exports[_0x8eda('0x23')]=function(_0x3aca19,_0xf445){if(_0x3aca19[_0x8eda('0x46')][_0x8eda('0x47')]){delete _0x3aca19[_0x8eda('0x46')][_0x8eda('0x47')];}return db[_0x8eda('0x2a')][_0x8eda('0x45')]({'where':{'uniqueid':_0x3aca19[_0x8eda('0x42')]['id']}})[_0x8eda('0x24')](handleEntityNotFound(_0xf445,null))[_0x8eda('0x24')](saveUpdates(_0x3aca19['body'],null))[_0x8eda('0x24')](respondWithResult(_0xf445,null))[_0x8eda('0x40')](handleError(_0xf445,null));};exports[_0x8eda('0x48')]=function(_0x3259de,_0x33ba39,_0x389399){return db[_0x8eda('0x2a')][_0x8eda('0x49')]({'raw':![],'where':{'VoiceQueueId':_0x3259de[_0x8eda('0x42')]['id']},'attributes':[[db[_0x8eda('0x4a')]['fn'](_0x8eda('0x4b'),db[_0x8eda('0x4a')]['fn']('IF',db[_0x8eda('0x4a')][_0x8eda('0x4c')](_0x8eda('0x4d')))),'noSuchContacts'],[db[_0x8eda('0x4a')]['fn'](_0x8eda('0x4b'),db[_0x8eda('0x4a')]['fn']('IF',db[_0x8eda('0x4a')][_0x8eda('0x4c')](_0x8eda('0x4e')))),'noAnswerContacts'],[db[_0x8eda('0x4a')]['fn'](_0x8eda('0x4b'),db[_0x8eda('0x4a')]['fn']('IF',db['sequelize'][_0x8eda('0x4c')]('`state`\x20=\x205,\x201,\x20null'))),_0x8eda('0x4f')],[db[_0x8eda('0x4a')]['fn'](_0x8eda('0x4b'),db['sequelize']['fn']('IF',db[_0x8eda('0x4a')][_0x8eda('0x4c')](_0x8eda('0x50')))),'congestionContacts'],[db[_0x8eda('0x4a')]['fn'](_0x8eda('0x4b'),db[_0x8eda('0x4a')]['fn']('IF',db[_0x8eda('0x4a')][_0x8eda('0x4c')](_0x8eda('0x51')))),_0x8eda('0x52')],[db[_0x8eda('0x4a')]['fn'](_0x8eda('0x4b'),db[_0x8eda('0x4a')]['fn']('IF',db['sequelize'][_0x8eda('0x4c')](_0x8eda('0x53')))),'abandonedContacts'],[db[_0x8eda('0x4a')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2022,\x201,\x20null'))),_0x8eda('0x54')],[db['sequelize']['fn'](_0x8eda('0x4b'),db[_0x8eda('0x4a')]['fn']('IF',db[_0x8eda('0x4a')][_0x8eda('0x4c')](_0x8eda('0x55')))),_0x8eda('0x56')]]})[_0x8eda('0x24')](handleEntityNotFound(_0x33ba39,null))['then'](respondWithResult(_0x33ba39,null))[_0x8eda('0x40')](handleError(_0x33ba39,null));};exports['countContactsIvrCampaignHopperFinal']=function(_0xdd71ce,_0x4ba827,_0xfb98bf){return db['CmHopperFinal'][_0x8eda('0x49')]({'raw':![],'where':{'CampaignId':_0xdd71ce[_0x8eda('0x42')]['id']},'attributes':[[db[_0x8eda('0x4a')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0x8eda('0x4c')](_0x8eda('0x4d')))),'noSuchContacts'],[db[_0x8eda('0x4a')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x8eda('0x4a')][_0x8eda('0x4c')](_0x8eda('0x4e')))),_0x8eda('0x57')],[db['sequelize']['fn']('COUNT',db[_0x8eda('0x4a')]['fn']('IF',db[_0x8eda('0x4a')][_0x8eda('0x4c')](_0x8eda('0x58')))),'busyContacts'],[db[_0x8eda('0x4a')]['fn']('COUNT',db[_0x8eda('0x4a')]['fn']('IF',db['sequelize'][_0x8eda('0x4c')]('`state`\x20=\x208,\x201,\x20null'))),_0x8eda('0x59')],[db[_0x8eda('0x4a')]['fn'](_0x8eda('0x4b'),db[_0x8eda('0x4a')]['fn']('IF',db[_0x8eda('0x4a')][_0x8eda('0x4c')](_0x8eda('0x51')))),_0x8eda('0x52')],[db[_0x8eda('0x4a')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x8eda('0x4a')]['literal'](_0x8eda('0x53')))),_0x8eda('0x5a')],[db[_0x8eda('0x4a')]['fn'](_0x8eda('0x4b'),db[_0x8eda('0x4a')]['fn']('IF',db['sequelize']['literal'](_0x8eda('0x5b')))),_0x8eda('0x54')],[db[_0x8eda('0x4a')]['fn'](_0x8eda('0x4b'),db[_0x8eda('0x4a')]['fn']('IF',db[_0x8eda('0x4a')][_0x8eda('0x4c')]('`state`\x20=\x2019,\x201,\x20null'))),_0x8eda('0x56')]]})[_0x8eda('0x24')](handleEntityNotFound(_0x4ba827,null))['then'](respondWithResult(_0x4ba827,null))[_0x8eda('0x40')](handleError(_0x4ba827,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x47f57c,_0x49d1a1,_0x5e66cd){return db[_0x8eda('0x5c')][_0x8eda('0x45')]({'where':{'id':_0x47f57c[_0x8eda('0x42')]['id']}})[_0x8eda('0x24')](handleEntityNotFound(_0x49d1a1,null))[_0x8eda('0x24')](function(_0xe5d324){var _0x589c2f;if(_0xe5d324){_0x589c2f=squel[_0x8eda('0x5d')]()[_0x8eda('0x5e')](_0x8eda('0x5f'))[_0x8eda('0x60')](['phone',_0x8eda('0x61'),_0x8eda('0x62'),_0x8eda('0x63'),_0x8eda('0x64'),_0x8eda('0x65'),_0x8eda('0x66')],squel['select']()[_0x8eda('0x67')](_0x8eda('0x68'),_0x8eda('0x69'))[_0x8eda('0x67')](_0x8eda('0x6a'),_0x8eda('0x61'))[_0x8eda('0x67')](_0x8eda('0x6b'),_0x8eda('0x62'))[_0x8eda('0x67')](_0x8eda('0x6c'),_0x8eda('0x63'))[_0x8eda('0x67')](_0x8eda('0x6d'),'VoiceQueueId')['field'](_0x8eda('0x6a'),_0x8eda('0x65'))[_0x8eda('0x67')](_0x8eda('0x6a'),'updatedAt')[_0x8eda('0x6e')](_0x8eda('0x6f'))['where'](_0x8eda('0x70'),_0x47f57c['params']['id'][_0x8eda('0x71')]())[_0x8eda('0x38')](_0x8eda('0x72'),_0x47f57c['body'][_0x8eda('0x73')][_0x8eda('0x71')]())[_0x8eda('0x38')]('calleridnum\x20IS\x20NOT\x20NULL')[_0x8eda('0x38')](_0x8eda('0x74'),squel[_0x8eda('0x75')]()[_0x8eda('0x67')]('phone')['from'](_0x8eda('0x5f'))[_0x8eda('0x38')](_0x8eda('0x70'),_0x47f57c[_0x8eda('0x42')]['id']['toString']()))[_0x8eda('0x38')](_0x8eda('0x74'),squel[_0x8eda('0x75')]()[_0x8eda('0x67')](_0x8eda('0x76'))['from'](_0x8eda('0x6f'))[_0x8eda('0x38')](_0x8eda('0x70'),_0x47f57c['params']['id']['toString']())['where'](_0x8eda('0x77')))[_0x8eda('0x78')](_0x8eda('0x62')))[_0x8eda('0x71')]();return db[_0x8eda('0x4a')][_0x8eda('0x2e')](_0x589c2f);}return[];})[_0x8eda('0x24')](respondWithResult(_0x49d1a1,null))[_0x8eda('0x40')](handleError(_0x49d1a1,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x1bbe8b,_0x437c6f,_0x1006b1){return db['Campaign'][_0x8eda('0x45')]({'where':{'id':_0x1bbe8b[_0x8eda('0x42')]['id']}})[_0x8eda('0x24')](handleEntityNotFound(_0x437c6f,null))[_0x8eda('0x24')](function(_0x33350e){var _0x3e245f;if(_0x33350e){_0x3e245f=squel[_0x8eda('0x5d')]()[_0x8eda('0x5e')](_0x8eda('0x5f'))[_0x8eda('0x60')]([_0x8eda('0x69'),'scheduledAt',_0x8eda('0x62'),_0x8eda('0x63'),_0x8eda('0x79'),_0x8eda('0x65'),_0x8eda('0x66')],squel[_0x8eda('0x75')]()[_0x8eda('0x67')](_0x8eda('0x68'),_0x8eda('0x69'))[_0x8eda('0x67')](_0x8eda('0x6a'),'scheduledAt')['field']('ANY_VALUE(ContactId)',_0x8eda('0x62'))[_0x8eda('0x67')]('ANY_VALUE(ListId)',_0x8eda('0x63'))[_0x8eda('0x67')](_0x8eda('0x7a'),'CampaignId')[_0x8eda('0x67')]('NOW()',_0x8eda('0x65'))['field'](_0x8eda('0x6a'),_0x8eda('0x66'))['from'](_0x8eda('0x6f'))[_0x8eda('0x38')](_0x8eda('0x7b'),_0x1bbe8b[_0x8eda('0x42')]['id'][_0x8eda('0x71')]())[_0x8eda('0x38')](_0x8eda('0x72'),_0x1bbe8b[_0x8eda('0x46')][_0x8eda('0x73')][_0x8eda('0x71')]())['where']('calleridnum\x20IS\x20NOT\x20NULL')['where']('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x8eda('0x75')]()[_0x8eda('0x67')](_0x8eda('0x69'))['from'](_0x8eda('0x5f'))[_0x8eda('0x38')](_0x8eda('0x7b'),_0x1bbe8b[_0x8eda('0x42')]['id'][_0x8eda('0x71')]()))[_0x8eda('0x38')](_0x8eda('0x74'),squel[_0x8eda('0x75')]()['field']('calleridnum')[_0x8eda('0x6e')](_0x8eda('0x6f'))['where'](_0x8eda('0x7b'),_0x1bbe8b[_0x8eda('0x42')]['id'][_0x8eda('0x71')]())['where'](_0x8eda('0x77')))[_0x8eda('0x78')](_0x8eda('0x62')))[_0x8eda('0x71')]();return db[_0x8eda('0x4a')][_0x8eda('0x2e')](_0x3e245f);}return[];})[_0x8eda('0x24')](respondWithResult(_0x437c6f,null))['catch'](handleError(_0x437c6f,null));};exports[_0x8eda('0x7c')]=function(_0x11f734,_0x4cb4e6,_0x5d8512){return db['CmHopper'][_0x8eda('0x7d')]({'where':{'VoiceQueueId':_0x11f734[_0x8eda('0x46')][_0x8eda('0x64')],'CampaignId':_0x11f734[_0x8eda('0x46')][_0x8eda('0x79')],'ContactId':_0x11f734[_0x8eda('0x46')][_0x8eda('0x62')]}})[_0x8eda('0x24')](handleEntityNotFound(_0x4cb4e6,null))[_0x8eda('0x24')](function(_0x1a3993){if(_0x1a3993){return _0x1a3993;}return null;})[_0x8eda('0x24')](respondWithResult(_0x4cb4e6,null))[_0x8eda('0x40')](handleError(_0x4cb4e6,null));};
\ No newline at end of file
index 2a3466b..26c1b33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1019=['rimraf','../../config/environment','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final','uniqueid','lodash','../../config/logger','moment','bluebird','request-promise'];(function(_0x3ce221,_0x22d678){var _0x3995b8=function(_0x4f0a97){while(--_0x4f0a97){_0x3ce221['push'](_0x3ce221['shift']());}};_0x3995b8(++_0x22d678);}(_0x1019,0xbe));var _0x9101=function(_0x3931ff,_0x49d16d){_0x3931ff=_0x3931ff-0x0;var _0x107f42=_0x1019[_0x3931ff];return _0x107f42;};'use strict';var _=require(_0x9101('0x0'));var util=require('util');var logger=require(_0x9101('0x1'))('api');var moment=require(_0x9101('0x2'));var BPromise=require(_0x9101('0x3'));var rp=require(_0x9101('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9101('0x5'));var config=require(_0x9101('0x6'));var attributes=require(_0x9101('0x7'));module[_0x9101('0x8')]=function(_0x3d1b3e,_0xa775fc){return _0x3d1b3e[_0x9101('0x9')](_0x9101('0xa'),attributes,{'tableName':_0x9101('0xb'),'paranoid':![],'indexes':[{'name':'calleridnum','fields':['calleridnum']},{'name':_0x9101('0xc'),'fields':[_0x9101('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa7fd=['CmHopperFinal','calleridnum','uniqueid','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperFinal.attributes'];(function(_0xbf59b0,_0x2a7597){var _0x3342b1=function(_0xfb798d){while(--_0xfb798d){_0xbf59b0['push'](_0xbf59b0['shift']());}};_0x3342b1(++_0x2a7597);}(_0xa7fd,0x19b));var _0xda7f=function(_0x24eafe,_0x464a25){_0x24eafe=_0x24eafe-0x0;var _0x9b6607=_0xa7fd[_0x24eafe];return _0x9b6607;};'use strict';var _=require('lodash');var util=require(_0xda7f('0x0'));var logger=require(_0xda7f('0x1'))(_0xda7f('0x2'));var moment=require('moment');var BPromise=require(_0xda7f('0x3'));var rp=require(_0xda7f('0x4'));var fs=require('fs');var path=require(_0xda7f('0x5'));var rimraf=require(_0xda7f('0x6'));var config=require(_0xda7f('0x7'));var attributes=require(_0xda7f('0x8'));module['exports']=function(_0x1a4284,_0x3e6a74){return _0x1a4284['define'](_0xda7f('0x9'),attributes,{'tableName':'cm_hopper_final','paranoid':![],'indexes':[{'name':_0xda7f('0xa'),'fields':[_0xda7f('0xa')]},{'name':'uniqueid','fields':[_0xda7f('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 6463d55..75bcfc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/environment','jayson/promise','http','info','CmHopperFinal,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','CmHopperFinal','create','body','options','raw','CreateCmHopperFinal','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x4e2f80,_0x3e1d03){var _0x4a2481=function(_0x433f0e){while(--_0x433f0e){_0x4e2f80['push'](_0x4e2f80['shift']());}};_0x4a2481(++_0x3e1d03);}(_0x7a54,0x106));var _0x47a5=function(_0x2c461d,_0x12a02f){_0x2c461d=_0x2c461d-0x0;var _0x179fd9=_0x7a54[_0x2c461d];return _0x179fd9;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('CmHopperFinal,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateCmHopperFinal']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateCmHopperFinal',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0x2ee83d,_0x3860f4){var _0xbfdebf=function(_0xf13c12){while(--_0xf13c12){_0x2ee83d['push'](_0x2ee83d['shift']());}};_0xbfdebf(++_0x3860f4);}(_0xb10b,0x12a));var _0xbb10=function(_0x1b3f63,_0x5578c9){_0x1b3f63=_0x1b3f63-0x0;var _0x39005d=_0xb10b[_0x1b3f63];return _0x39005d;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
index 0e3aec0..6b83d2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3278=['Router','../../components/auth/service','../../config/environment','./cmHopperFinal.controller','isAuthenticated','index','describe','get','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','put','/:id','exports','path','connect-timeout'];(function(_0x3776b4,_0x19a1e3){var _0x1636d9=function(_0x320ae3){while(--_0x320ae3){_0x3776b4['push'](_0x3776b4['shift']());}};_0x1636d9(++_0x19a1e3);}(_0x3278,0x11c));var _0x8327=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3278[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x8327('0x0'));var timeout=require(_0x8327('0x1'));var express=require('express');var router=express[_0x8327('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x8327('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x8327('0x4'));var controller=require(_0x8327('0x5'));router['get']('/',auth[_0x8327('0x6')](),controller[_0x8327('0x7')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x8327('0x8')]);router[_0x8327('0x9')]('/:id',auth[_0x8327('0x6')](),controller[_0x8327('0xa')]);router[_0x8327('0x9')](_0x8327('0xb'),auth[_0x8327('0x6')](),controller[_0x8327('0xc')]);router[_0x8327('0x9')]('/campaign/countAttributes/:id',auth[_0x8327('0x6')](),controller[_0x8327('0xd')]);router[_0x8327('0xe')](_0x8327('0xf'),auth[_0x8327('0x6')](),controller[_0x8327('0x10')]);router[_0x8327('0xe')](_0x8327('0x11'),auth[_0x8327('0x6')](),controller[_0x8327('0x12')]);router[_0x8327('0xe')]('/checkContactHopper',auth['isAuthenticated'](),controller['checkContactHopper']);router[_0x8327('0x13')](_0x8327('0x14'),auth[_0x8327('0x6')](),controller['update']);module[_0x8327('0x15')]=router;
\ No newline at end of file
+var _0x518b=['/describe','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','/checkContactHopper','checkContactHopper','update','multer','util','path','connect-timeout','express','../../components/interaction/service','../../config/environment','isAuthenticated','index','get'];(function(_0x1b43af,_0x501993){var _0x363e42=function(_0x25ae42){while(--_0x25ae42){_0x1b43af['push'](_0x1b43af['shift']());}};_0x363e42(++_0x501993);}(_0x518b,0x15b));var _0xb518=function(_0x777641,_0x19607d){_0x777641=_0x777641-0x0;var _0x54a378=_0x518b[_0x777641];return _0x54a378;};'use strict';var multer=require(_0xb518('0x0'));var util=require(_0xb518('0x1'));var path=require(_0xb518('0x2'));var timeout=require(_0xb518('0x3'));var express=require(_0xb518('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb518('0x5'));var config=require(_0xb518('0x6'));var controller=require('./cmHopperFinal.controller');router['get']('/',auth[_0xb518('0x7')](),controller[_0xb518('0x8')]);router[_0xb518('0x9')](_0xb518('0xa'),auth[_0xb518('0x7')](),controller['describe']);router[_0xb518('0x9')]('/:id',auth[_0xb518('0x7')](),controller['show']);router[_0xb518('0x9')]('/voice/queue/countAttributes/:id',auth[_0xb518('0x7')](),controller[_0xb518('0xb')]);router[_0xb518('0x9')](_0xb518('0xc'),auth[_0xb518('0x7')](),controller[_0xb518('0xd')]);router[_0xb518('0xe')](_0xb518('0xf'),auth[_0xb518('0x7')](),controller[_0xb518('0x10')]);router[_0xb518('0xe')](_0xb518('0x11'),auth[_0xb518('0x7')](),controller['moveContactsIvrCampaignHopperFinal']);router[_0xb518('0xe')](_0xb518('0x12'),auth[_0xb518('0x7')](),controller[_0xb518('0x13')]);router['put']('/:id',auth[_0xb518('0x7')](),controller[_0xb518('0x14')]);module['exports']=router;
\ No newline at end of file
index 9fda58e..88f9de0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c3e=['BOOLEAN','INTEGER','DATE','STRING'];(function(_0x5a77ff,_0x10d75f){var _0x588243=function(_0x35e550){while(--_0x35e550){_0x5a77ff['push'](_0x5a77ff['shift']());}};_0x588243(++_0x10d75f);}(_0x8c3e,0x189));var _0xe8c3=function(_0x108d68,_0x9b39de){_0x108d68=_0x108d68-0x0;var _0x11476a=_0x8c3e[_0x108d68];return _0x11476a;};'use strict';var Sequelize=require('sequelize');module['exports']={'state':{'type':Sequelize[_0xe8c3('0x0')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0xe8c3('0x1')]},'countbusyretry':{'type':Sequelize[_0xe8c3('0x0')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xe8c3('0x0')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xe8c3('0x2')]},'originatecalleridnum':{'type':Sequelize[_0xe8c3('0x2')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xe8c3('0x2')]},'calleridname':{'type':Sequelize[_0xe8c3('0x2')]},'starttime':{'type':Sequelize[_0xe8c3('0x1')]},'responsetime':{'type':Sequelize[_0xe8c3('0x1')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0xe8c3('0x1')]},'endtime':{'type':Sequelize[_0xe8c3('0x1')]},'ringtime':{'type':Sequelize[_0xe8c3('0x0')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xe8c3('0x0')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xe8c3('0x0')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0xe8c3('0x2')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize[_0xe8c3('0x3')],'defaultValue':![]},'fax':{'type':Sequelize[_0xe8c3('0x3')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xe8c3('0x1')]},'recallme':{'type':Sequelize[_0xe8c3('0x3')],'defaultValue':![]},'editedat':{'type':Sequelize[_0xe8c3('0x1')]},'edited':{'type':Sequelize[_0xe8c3('0x3')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xe8c3('0x0')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xe8c3('0x0')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xe8c3('0x0')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xe8c3('0x0')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xe8c3('0x0')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x4535=['sequelize','exports','INTEGER','DATE','STRING','BOOLEAN'];(function(_0x106466,_0xe55a0){var _0x4ae2aa=function(_0x201332){while(--_0x201332){_0x106466['push'](_0x106466['shift']());}};_0x4ae2aa(++_0xe55a0);}(_0x4535,0xd2));var _0x5453=function(_0x482de9,_0xe25682){_0x482de9=_0x482de9-0x0;var _0x434710=_0x4535[_0x482de9];return _0x434710;};'use strict';var Sequelize=require(_0x5453('0x0'));module[_0x5453('0x1')]={'state':{'type':Sequelize[_0x5453('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x5453('0x3')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x5453('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x5453('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x5453('0x4')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x5453('0x4')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x5453('0x3')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x5453('0x3')]},'endtime':{'type':Sequelize[_0x5453('0x3')]},'ringtime':{'type':Sequelize[_0x5453('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x5453('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x5453('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x5453('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x5453('0x4')]},'campaign':{'type':Sequelize[_0x5453('0x4')]},'campaigntype':{'type':Sequelize[_0x5453('0x4')]},'membername':{'type':Sequelize[_0x5453('0x4')]},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize[_0x5453('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x5453('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x5453('0x3')]},'recallme':{'type':Sequelize[_0x5453('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x5453('0x3')]},'edited':{'type':Sequelize[_0x5453('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x5453('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x5453('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x5453('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x5453('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x5453('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 252c0a4..9688dc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf847=['where','pick','filters','filter','merge','type','options','findAll','rows','show','params','keys','includeAll','find','catch','body','describe','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','sox','fs-extra','lodash','squel','jsforce','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','stack','name','send','index','map','CmHopperHistory','rawAttributes','fieldName','query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x4eab88,_0xcc1ff8){var _0x2042e3=function(_0x221e40){while(--_0x221e40){_0x4eab88['push'](_0x4eab88['shift']());}};_0x2042e3(++_0xcc1ff8);}(_0xf847,0xea));var _0x7f84=function(_0x1ccd10,_0x4d56c4){_0x1ccd10=_0x1ccd10-0x0;var _0x171147=_0xf847[_0x1ccd10];return _0x171147;};'use strict';var emlformat=require(_0x7f84('0x0'));var rimraf=require(_0x7f84('0x1'));var zipdir=require(_0x7f84('0x2'));var jsonpatch=require(_0x7f84('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x7f84('0x4'));var Mustache=require(_0x7f84('0x5'));var util=require('util');var path=require('path');var sox=require(_0x7f84('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7f84('0x7'));var _=require(_0x7f84('0x8'));var squel=require(_0x7f84('0x9'));var crypto=require('crypto');var jsforce=require(_0x7f84('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x7f84('0xb'));var querystring=require('querystring');var Papa=require(_0x7f84('0xc'));var Redis=require('ioredis');var authService=require(_0x7f84('0xd'));var qs=require(_0x7f84('0xe'));var as=require(_0x7f84('0xf'));var hardwareService=require(_0x7f84('0x10'));var logger=require('../../config/logger')(_0x7f84('0x11'));var utils=require(_0x7f84('0x12'));var config=require(_0x7f84('0x13'));var licenseUtil=require(_0x7f84('0x14'));var db=require(_0x7f84('0x15'))['db'];function respondWithStatusCode(_0x427b83,_0xdffc7f){_0xdffc7f=_0xdffc7f||0xcc;return function(_0x5c4e1d){if(_0x5c4e1d){return _0x427b83[_0x7f84('0x16')](_0xdffc7f);}return _0x427b83['status'](_0xdffc7f)[_0x7f84('0x17')]();};}function respondWithResult(_0x5547db,_0x39b97b){_0x39b97b=_0x39b97b||0xc8;return function(_0x4f9ec1){if(_0x4f9ec1){return _0x5547db[_0x7f84('0x18')](_0x39b97b)[_0x7f84('0x19')](_0x4f9ec1);}};}function respondWithFilteredResult(_0x1ae99b,_0x483978){return function(_0x3ce732){if(_0x3ce732){var _0x290b25=typeof _0x483978[_0x7f84('0x1a')]==='undefined'&&typeof _0x483978[_0x7f84('0x1b')]===_0x7f84('0x1c');var _0x53be37=_0x3ce732[_0x7f84('0x1d')];var _0x3e873d=_0x290b25?0x0:_0x483978[_0x7f84('0x1a')];var _0x34b98f=_0x290b25?_0x3ce732[_0x7f84('0x1d')]:_0x483978['offset']+_0x483978[_0x7f84('0x1b')];var _0x360dc0;if(_0x34b98f>=_0x53be37){_0x34b98f=_0x53be37;_0x360dc0=0xc8;}else{_0x360dc0=0xce;}_0x1ae99b[_0x7f84('0x18')](_0x360dc0);return _0x1ae99b[_0x7f84('0x1e')](_0x7f84('0x1f'),_0x3e873d+'-'+_0x34b98f+'/'+_0x53be37)[_0x7f84('0x19')](_0x3ce732);}return null;};}function patchUpdates(_0x129bf3){return function(_0x33036d){try{jsonpatch['apply'](_0x33036d,_0x129bf3,!![]);}catch(_0x19323b){return BPromise[_0x7f84('0x20')](_0x19323b);}return _0x33036d[_0x7f84('0x21')]();};}function saveUpdates(_0x65061e,_0x3e8667){return function(_0x1110af){if(_0x1110af){return _0x1110af[_0x7f84('0x22')](_0x65061e)[_0x7f84('0x23')](function(_0x17331a){return _0x17331a;});}return null;};}function removeEntity(_0x3e04ce,_0x4fb5ce){return function(_0x3a82ec){if(_0x3a82ec){return _0x3a82ec['destroy']()['then'](function(){_0x3e04ce[_0x7f84('0x18')](0xcc)[_0x7f84('0x17')]();});}};}function handleEntityNotFound(_0x453ae1,_0x3f093d){return function(_0x534986){if(!_0x534986){_0x453ae1[_0x7f84('0x16')](0x194);}return _0x534986;};}function handleError(_0x15b456,_0x38b4e8){_0x38b4e8=_0x38b4e8||0x1f4;return function(_0x42fc62){logger['error'](_0x42fc62[_0x7f84('0x24')]);if(_0x42fc62[_0x7f84('0x25')]){delete _0x42fc62[_0x7f84('0x25')];}_0x15b456['status'](_0x38b4e8)[_0x7f84('0x26')](_0x42fc62);};}exports[_0x7f84('0x27')]=function(_0xb9be82,_0x276aef){var _0x47429d={},_0x511ff4={},_0x1c0ca0={'count':0x0,'rows':[]};var _0xddd1e=_[_0x7f84('0x28')](db[_0x7f84('0x29')][_0x7f84('0x2a')],function(_0x31c745){return{'name':_0x31c745[_0x7f84('0x2b')],'type':_0x31c745['type']['key']};});_0x511ff4['model']=_[_0x7f84('0x28')](_0xddd1e,_0x7f84('0x25'));_0x511ff4[_0x7f84('0x2c')]=_['keys'](_0xb9be82['query']);_0x511ff4['filters']=_[_0x7f84('0x2d')](_0x511ff4['model'],_0x511ff4['query']);_0x47429d[_0x7f84('0x2e')]=_[_0x7f84('0x2d')](_0x511ff4[_0x7f84('0x2f')],qs[_0x7f84('0x30')](_0xb9be82[_0x7f84('0x2c')][_0x7f84('0x30')]));_0x47429d['attributes']=_0x47429d[_0x7f84('0x2e')][_0x7f84('0x31')]?_0x47429d['attributes']:_0x511ff4[_0x7f84('0x2f')];if(!_0xb9be82['query'][_0x7f84('0x32')](_0x7f84('0x33'))){_0x47429d['limit']=qs['limit'](_0xb9be82['query'][_0x7f84('0x1b')]);_0x47429d[_0x7f84('0x1a')]=qs['offset'](_0xb9be82[_0x7f84('0x2c')][_0x7f84('0x1a')]);}_0x47429d[_0x7f84('0x34')]=qs[_0x7f84('0x35')](_0xb9be82[_0x7f84('0x2c')][_0x7f84('0x35')]);_0x47429d[_0x7f84('0x36')]=qs['filters'](_[_0x7f84('0x37')](_0xb9be82[_0x7f84('0x2c')],_0x511ff4[_0x7f84('0x38')]),_0xddd1e);if(_0xb9be82['query'][_0x7f84('0x39')]){_0x47429d[_0x7f84('0x36')]=_[_0x7f84('0x3a')](_0x47429d[_0x7f84('0x36')],{'$or':_['map'](_0xddd1e,function(_0x10efa6){if(_0x10efa6[_0x7f84('0x3b')]!=='VIRTUAL'){var _0x4bcd10={};_0x4bcd10[_0x10efa6[_0x7f84('0x25')]]={'$like':'%'+_0xb9be82['query'][_0x7f84('0x39')]+'%'};return _0x4bcd10;}})});}_0x47429d=_[_0x7f84('0x3a')]({},_0x47429d,_0xb9be82[_0x7f84('0x3c')]);var _0x2ca916={'where':_0x47429d[_0x7f84('0x36')]};return db[_0x7f84('0x29')][_0x7f84('0x1d')](_0x2ca916)['then'](function(_0x1eaeab){_0x1c0ca0[_0x7f84('0x1d')]=_0x1eaeab;if(_0xb9be82[_0x7f84('0x2c')]['includeAll']){_0x47429d['include']=[{'all':!![]}];}return db[_0x7f84('0x29')][_0x7f84('0x3d')](_0x47429d);})[_0x7f84('0x23')](function(_0x5a9d4c){_0x1c0ca0[_0x7f84('0x3e')]=_0x5a9d4c;return _0x1c0ca0;})[_0x7f84('0x23')](respondWithFilteredResult(_0x276aef,_0x47429d))['catch'](handleError(_0x276aef,null));};exports[_0x7f84('0x3f')]=function(_0x36152d,_0x4f9bcd){var _0x1205d4={'raw':!![],'where':{'id':_0x36152d[_0x7f84('0x40')]['id']}},_0x58fb5f={};_0x58fb5f[_0x7f84('0x2f')]=_[_0x7f84('0x41')](db['CmHopperHistory'][_0x7f84('0x2a')]);_0x58fb5f[_0x7f84('0x2c')]=_[_0x7f84('0x41')](_0x36152d['query']);_0x58fb5f[_0x7f84('0x38')]=_[_0x7f84('0x2d')](_0x58fb5f[_0x7f84('0x2f')],_0x58fb5f[_0x7f84('0x2c')]);_0x1205d4[_0x7f84('0x2e')]=_[_0x7f84('0x2d')](_0x58fb5f[_0x7f84('0x2f')],qs['fields'](_0x36152d['query'][_0x7f84('0x30')]));_0x1205d4[_0x7f84('0x2e')]=_0x1205d4[_0x7f84('0x2e')][_0x7f84('0x31')]?_0x1205d4['attributes']:_0x58fb5f[_0x7f84('0x2f')];if(_0x36152d[_0x7f84('0x2c')][_0x7f84('0x42')]){_0x1205d4['include']=[{'all':!![]}];}_0x1205d4=_[_0x7f84('0x3a')]({},_0x1205d4,_0x36152d['options']);return db[_0x7f84('0x29')][_0x7f84('0x43')](_0x1205d4)[_0x7f84('0x23')](handleEntityNotFound(_0x4f9bcd,null))['then'](respondWithResult(_0x4f9bcd,null))[_0x7f84('0x44')](handleError(_0x4f9bcd,null));};exports['create']=function(_0x166bf4,_0xa12425){return db[_0x7f84('0x29')]['create'](_0x166bf4[_0x7f84('0x45')],{})[_0x7f84('0x23')](respondWithResult(_0xa12425,0xc9))['catch'](handleError(_0xa12425,null));};exports[_0x7f84('0x46')]=function(_0x524ebe,_0x3a6792){return db[_0x7f84('0x29')]['describe']()[_0x7f84('0x23')](respondWithResult(_0x3a6792,null))[_0x7f84('0x44')](handleError(_0x3a6792,null));};exports[_0x7f84('0x22')]=function(_0x413827,_0x204bac){if(_0x413827[_0x7f84('0x45')][_0x7f84('0x47')]){delete _0x413827[_0x7f84('0x45')]['uniqueid'];}return db[_0x7f84('0x29')][_0x7f84('0x43')]({'where':{'uniqueid':_0x413827[_0x7f84('0x40')]['id']}})[_0x7f84('0x23')](handleEntityNotFound(_0x204bac,null))[_0x7f84('0x23')](saveUpdates(_0x413827['body'],null))['then'](respondWithResult(_0x204bac,null))[_0x7f84('0x44')](handleError(_0x204bac,null));};
\ No newline at end of file
+var _0xbcd4=['../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','destroy','error','name','index','map','CmHopperHistory','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','then','includeAll','include','rows','catch','show','params','create','body','describe','update','uniqueid','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils'];(function(_0x2ae57a,_0x197dec){var _0x78fd1=function(_0x381b83){while(--_0x381b83){_0x2ae57a['push'](_0x2ae57a['shift']());}};_0x78fd1(++_0x197dec);}(_0xbcd4,0x16d));var _0x4bcd=function(_0x2900e8,_0x1f4d29){_0x2900e8=_0x2900e8-0x0;var _0x292d9d=_0xbcd4[_0x2900e8];return _0x292d9d;};'use strict';var emlformat=require(_0x4bcd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4bcd('0x1'));var jsonpatch=require(_0x4bcd('0x2'));var rp=require(_0x4bcd('0x3'));var moment=require(_0x4bcd('0x4'));var BPromise=require(_0x4bcd('0x5'));var Mustache=require(_0x4bcd('0x6'));var util=require(_0x4bcd('0x7'));var path=require(_0x4bcd('0x8'));var sox=require(_0x4bcd('0x9'));var csv=require('to-csv');var ejs=require(_0x4bcd('0xa'));var fs=require('fs');var fs_extra=require(_0x4bcd('0xb'));var _=require(_0x4bcd('0xc'));var squel=require(_0x4bcd('0xd'));var crypto=require('crypto');var jsforce=require(_0x4bcd('0xe'));var deskjs=require(_0x4bcd('0xf'));var toCsv=require(_0x4bcd('0x10'));var querystring=require(_0x4bcd('0x11'));var Papa=require(_0x4bcd('0x12'));var Redis=require(_0x4bcd('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x4bcd('0x14'));var as=require(_0x4bcd('0x15'));var hardwareService=require(_0x4bcd('0x16'));var logger=require('../../config/logger')(_0x4bcd('0x17'));var utils=require(_0x4bcd('0x18'));var config=require(_0x4bcd('0x19'));var licenseUtil=require(_0x4bcd('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x627743,_0x42b5e0){_0x42b5e0=_0x42b5e0||0xcc;return function(_0x161b04){if(_0x161b04){return _0x627743[_0x4bcd('0x1b')](_0x42b5e0);}return _0x627743[_0x4bcd('0x1c')](_0x42b5e0)[_0x4bcd('0x1d')]();};}function respondWithResult(_0x265b5b,_0x10b0c7){_0x10b0c7=_0x10b0c7||0xc8;return function(_0x565f40){if(_0x565f40){return _0x265b5b[_0x4bcd('0x1c')](_0x10b0c7)['json'](_0x565f40);}};}function respondWithFilteredResult(_0xbb04ea,_0x86ac6b){return function(_0x1f03d9){if(_0x1f03d9){var _0xc4d522=typeof _0x86ac6b[_0x4bcd('0x1e')]===_0x4bcd('0x1f')&&typeof _0x86ac6b[_0x4bcd('0x20')]===_0x4bcd('0x1f');var _0x53ac11=_0x1f03d9[_0x4bcd('0x21')];var _0x3aa29a=_0xc4d522?0x0:_0x86ac6b[_0x4bcd('0x1e')];var _0x32c742=_0xc4d522?_0x1f03d9[_0x4bcd('0x21')]:_0x86ac6b[_0x4bcd('0x1e')]+_0x86ac6b[_0x4bcd('0x20')];var _0x263ddd;if(_0x32c742>=_0x53ac11){_0x32c742=_0x53ac11;_0x263ddd=0xc8;}else{_0x263ddd=0xce;}_0xbb04ea[_0x4bcd('0x1c')](_0x263ddd);return _0xbb04ea[_0x4bcd('0x22')](_0x4bcd('0x23'),_0x3aa29a+'-'+_0x32c742+'/'+_0x53ac11)[_0x4bcd('0x24')](_0x1f03d9);}return null;};}function patchUpdates(_0x2ed066){return function(_0x2600cb){try{jsonpatch[_0x4bcd('0x25')](_0x2600cb,_0x2ed066,!![]);}catch(_0x5304e6){return BPromise[_0x4bcd('0x26')](_0x5304e6);}return _0x2600cb[_0x4bcd('0x27')]();};}function saveUpdates(_0xea716f,_0x4a3756){return function(_0x15d490){if(_0x15d490){return _0x15d490['update'](_0xea716f)['then'](function(_0x2d9523){return _0x2d9523;});}return null;};}function removeEntity(_0x18b385,_0x120319){return function(_0x2d271a){if(_0x2d271a){return _0x2d271a[_0x4bcd('0x28')]()['then'](function(){_0x18b385[_0x4bcd('0x1c')](0xcc)[_0x4bcd('0x1d')]();});}};}function handleEntityNotFound(_0x2911e4,_0x449999){return function(_0x299e1d){if(!_0x299e1d){_0x2911e4[_0x4bcd('0x1b')](0x194);}return _0x299e1d;};}function handleError(_0x5acd11,_0x1c5fd4){_0x1c5fd4=_0x1c5fd4||0x1f4;return function(_0x214f77){logger[_0x4bcd('0x29')](_0x214f77['stack']);if(_0x214f77[_0x4bcd('0x2a')]){delete _0x214f77[_0x4bcd('0x2a')];}_0x5acd11['status'](_0x1c5fd4)['send'](_0x214f77);};}exports[_0x4bcd('0x2b')]=function(_0x4912b3,_0x5a0491){var _0x4867e0={},_0x5c1dd2={},_0x81cff1={'count':0x0,'rows':[]};var _0x282711=_[_0x4bcd('0x2c')](db[_0x4bcd('0x2d')][_0x4bcd('0x2e')],function(_0x11f3b0){return{'name':_0x11f3b0['fieldName'],'type':_0x11f3b0[_0x4bcd('0x2f')][_0x4bcd('0x30')]};});_0x5c1dd2[_0x4bcd('0x31')]=_['map'](_0x282711,'name');_0x5c1dd2[_0x4bcd('0x32')]=_[_0x4bcd('0x33')](_0x4912b3[_0x4bcd('0x32')]);_0x5c1dd2['filters']=_[_0x4bcd('0x34')](_0x5c1dd2['model'],_0x5c1dd2[_0x4bcd('0x32')]);_0x4867e0[_0x4bcd('0x35')]=_[_0x4bcd('0x34')](_0x5c1dd2[_0x4bcd('0x31')],qs[_0x4bcd('0x36')](_0x4912b3[_0x4bcd('0x32')][_0x4bcd('0x36')]));_0x4867e0[_0x4bcd('0x35')]=_0x4867e0[_0x4bcd('0x35')][_0x4bcd('0x37')]?_0x4867e0[_0x4bcd('0x35')]:_0x5c1dd2[_0x4bcd('0x31')];if(!_0x4912b3[_0x4bcd('0x32')][_0x4bcd('0x38')](_0x4bcd('0x39'))){_0x4867e0['limit']=qs['limit'](_0x4912b3['query']['limit']);_0x4867e0[_0x4bcd('0x1e')]=qs[_0x4bcd('0x1e')](_0x4912b3[_0x4bcd('0x32')][_0x4bcd('0x1e')]);}_0x4867e0['order']=qs[_0x4bcd('0x3a')](_0x4912b3['query'][_0x4bcd('0x3a')]);_0x4867e0[_0x4bcd('0x3b')]=qs[_0x4bcd('0x3c')](_['pick'](_0x4912b3[_0x4bcd('0x32')],_0x5c1dd2[_0x4bcd('0x3c')]),_0x282711);if(_0x4912b3[_0x4bcd('0x32')][_0x4bcd('0x3d')]){_0x4867e0['where']=_[_0x4bcd('0x3e')](_0x4867e0[_0x4bcd('0x3b')],{'$or':_[_0x4bcd('0x2c')](_0x282711,function(_0x5c03b2){if(_0x5c03b2[_0x4bcd('0x2f')]!==_0x4bcd('0x3f')){var _0x5567e7={};_0x5567e7[_0x5c03b2[_0x4bcd('0x2a')]]={'$like':'%'+_0x4912b3[_0x4bcd('0x32')][_0x4bcd('0x3d')]+'%'};return _0x5567e7;}})});}_0x4867e0=_[_0x4bcd('0x3e')]({},_0x4867e0,_0x4912b3[_0x4bcd('0x40')]);var _0x54ce45={'where':_0x4867e0[_0x4bcd('0x3b')]};return db[_0x4bcd('0x2d')][_0x4bcd('0x21')](_0x54ce45)[_0x4bcd('0x41')](function(_0x2470c2){_0x81cff1[_0x4bcd('0x21')]=_0x2470c2;if(_0x4912b3['query'][_0x4bcd('0x42')]){_0x4867e0[_0x4bcd('0x43')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x4867e0);})[_0x4bcd('0x41')](function(_0x2756c1){_0x81cff1[_0x4bcd('0x44')]=_0x2756c1;return _0x81cff1;})[_0x4bcd('0x41')](respondWithFilteredResult(_0x5a0491,_0x4867e0))[_0x4bcd('0x45')](handleError(_0x5a0491,null));};exports[_0x4bcd('0x46')]=function(_0x40e330,_0x4f7394){var _0x4fa86b={'raw':!![],'where':{'id':_0x40e330[_0x4bcd('0x47')]['id']}},_0x42efb8={};_0x42efb8[_0x4bcd('0x31')]=_['keys'](db['CmHopperHistory'][_0x4bcd('0x2e')]);_0x42efb8[_0x4bcd('0x32')]=_[_0x4bcd('0x33')](_0x40e330[_0x4bcd('0x32')]);_0x42efb8[_0x4bcd('0x3c')]=_['intersection'](_0x42efb8[_0x4bcd('0x31')],_0x42efb8['query']);_0x4fa86b['attributes']=_[_0x4bcd('0x34')](_0x42efb8[_0x4bcd('0x31')],qs[_0x4bcd('0x36')](_0x40e330[_0x4bcd('0x32')][_0x4bcd('0x36')]));_0x4fa86b[_0x4bcd('0x35')]=_0x4fa86b[_0x4bcd('0x35')]['length']?_0x4fa86b[_0x4bcd('0x35')]:_0x42efb8[_0x4bcd('0x31')];if(_0x40e330[_0x4bcd('0x32')][_0x4bcd('0x42')]){_0x4fa86b[_0x4bcd('0x43')]=[{'all':!![]}];}_0x4fa86b=_[_0x4bcd('0x3e')]({},_0x4fa86b,_0x40e330[_0x4bcd('0x40')]);return db[_0x4bcd('0x2d')]['find'](_0x4fa86b)[_0x4bcd('0x41')](handleEntityNotFound(_0x4f7394,null))[_0x4bcd('0x41')](respondWithResult(_0x4f7394,null))[_0x4bcd('0x45')](handleError(_0x4f7394,null));};exports[_0x4bcd('0x48')]=function(_0x3a687a,_0x546bfc){return db[_0x4bcd('0x2d')][_0x4bcd('0x48')](_0x3a687a[_0x4bcd('0x49')],{})[_0x4bcd('0x41')](respondWithResult(_0x546bfc,0xc9))[_0x4bcd('0x45')](handleError(_0x546bfc,null));};exports['describe']=function(_0x38077c,_0x3c5293){return db[_0x4bcd('0x2d')][_0x4bcd('0x4a')]()['then'](respondWithResult(_0x3c5293,null))[_0x4bcd('0x45')](handleError(_0x3c5293,null));};exports[_0x4bcd('0x4b')]=function(_0x43862e,_0x4176d7){if(_0x43862e[_0x4bcd('0x49')][_0x4bcd('0x4c')]){delete _0x43862e['body'][_0x4bcd('0x4c')];}return db[_0x4bcd('0x2d')][_0x4bcd('0x4d')]({'where':{'uniqueid':_0x43862e[_0x4bcd('0x47')]['id']}})[_0x4bcd('0x41')](handleEntityNotFound(_0x4176d7,null))[_0x4bcd('0x41')](saveUpdates(_0x43862e[_0x4bcd('0x49')],null))[_0x4bcd('0x41')](respondWithResult(_0x4176d7,null))[_0x4bcd('0x45')](handleError(_0x4176d7,null));};
\ No newline at end of file
index 86dde87..06ceeea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0eeb=['uniqueid','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','define','cm_hopper_history','endtime'];(function(_0x5d3903,_0x3d6c3e){var _0x4b8bc9=function(_0x92b297){while(--_0x92b297){_0x5d3903['push'](_0x5d3903['shift']());}};_0x4b8bc9(++_0x3d6c3e);}(_0x0eeb,0xc5));var _0xb0ee=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x0eeb[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0xb0ee('0x0'));var util=require(_0xb0ee('0x1'));var logger=require(_0xb0ee('0x2'))(_0xb0ee('0x3'));var moment=require(_0xb0ee('0x4'));var BPromise=require(_0xb0ee('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb0ee('0x6'));var config=require(_0xb0ee('0x7'));var attributes=require(_0xb0ee('0x8'));module[_0xb0ee('0x9')]=function(_0x209dda,_0x453fa4){return _0x209dda[_0xb0ee('0xa')]('CmHopperHistory',attributes,{'tableName':_0xb0ee('0xb'),'paranoid':![],'indexes':[{'name':'endtime','fields':[_0xb0ee('0xc')]},{'name':_0xb0ee('0xd'),'fields':[_0xb0ee('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdb28=['bluebird','request-promise','path','rimraf','../../config/environment','exports','CmHopperHistory','cm_hopper_history','endtime','uniqueid','lodash','util','../../config/logger','api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdb28,0x106));var _0x8db2=function(_0x44b500,_0x3eae75){_0x44b500=_0x44b500-0x0;var _0x3c07ed=_0xdb28[_0x44b500];return _0x3c07ed;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var logger=require(_0x8db2('0x2'))(_0x8db2('0x3'));var moment=require('moment');var BPromise=require(_0x8db2('0x4'));var rp=require(_0x8db2('0x5'));var fs=require('fs');var path=require(_0x8db2('0x6'));var rimraf=require(_0x8db2('0x7'));var config=require(_0x8db2('0x8'));var attributes=require('./cmHopperHistory.attributes');module[_0x8db2('0x9')]=function(_0x1d2dd3,_0x5f42ee){return _0x1d2dd3['define'](_0x8db2('0xa'),attributes,{'tableName':_0x8db2('0xb'),'paranoid':![],'indexes':[{'name':_0x8db2('0xc'),'fields':[_0x8db2('0xc')]},{'name':_0x8db2('0xd'),'fields':[_0x8db2('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 2e7262b..4d530b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb575=['outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','ivrAnswerCallsDay','GetCampaignHopperHistory','lodash','util','bluebird','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','CmHopperHistory,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CmHopperHistory','create','options','raw','CreateCmHopperHistory','debug','stringify','where','sequelize','COUNT','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','AvgHandleTime','GetVoiceQueueHopperHistory','findAll','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','outboundNoAnswerCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','outboundUnknownCallsDay','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null'];(function(_0xf21aaa,_0x3f5fa3){var _0x548273=function(_0x68d210){while(--_0x68d210){_0xf21aaa['push'](_0xf21aaa['shift']());}};_0x548273(++_0x3f5fa3);}(_0xb575,0xda));var _0x5b57=function(_0x3a1987,_0x3ed73e){_0x3a1987=_0x3a1987-0x0;var _0x29231f=_0xb575[_0x3a1987];return _0x29231f;};'use strict';var _=require(_0x5b57('0x0'));var util=require(_0x5b57('0x1'));var moment=require('moment');var BPromise=require(_0x5b57('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x5b57('0x3'));var logger=require(_0x5b57('0x4'))('rpc');var config=require(_0x5b57('0x5'));var jayson=require(_0x5b57('0x6'));var client=jayson[_0x5b57('0x7')][_0x5b57('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x672beb,_0x5d223d,_0x4232d0){return new BPromise(function(_0x5dd0c7,_0x2f9789){return client[_0x5b57('0x9')](_0x672beb,_0x4232d0)[_0x5b57('0xa')](function(_0x49ce3a){logger[_0x5b57('0xb')](_0x5b57('0xc'),_0x5d223d,_0x5b57('0xd'));logger['debug'](_0x5b57('0xe'),_0x5d223d,_0x5b57('0xd'),JSON['stringify'](_0x49ce3a));if(_0x49ce3a['error']){if(_0x49ce3a[_0x5b57('0xf')][_0x5b57('0x10')]===0x1f4){logger[_0x5b57('0xf')](_0x5b57('0xc'),_0x5d223d,_0x49ce3a[_0x5b57('0xf')][_0x5b57('0x11')]);return _0x2f9789(_0x49ce3a[_0x5b57('0xf')][_0x5b57('0x11')]);}logger[_0x5b57('0xf')](_0x5b57('0xc'),_0x5d223d,_0x49ce3a['error'][_0x5b57('0x11')]);return _0x5dd0c7(_0x49ce3a[_0x5b57('0xf')][_0x5b57('0x11')]);}else{logger['info'](_0x5b57('0xc'),_0x5d223d,_0x5b57('0xd'));_0x5dd0c7(_0x49ce3a[_0x5b57('0x12')][_0x5b57('0x11')]);}})[_0x5b57('0x13')](function(_0x1e7cc0){logger[_0x5b57('0xf')](_0x5b57('0xc'),_0x5d223d,_0x1e7cc0);_0x2f9789(_0x1e7cc0);});});}exports['CreateCmHopperHistory']=function(_0x336db6){var _0x1e316f=this;return new Promise(function(_0x2cb809,_0x137899){return db[_0x5b57('0x14')][_0x5b57('0x15')](_0x336db6['body'],{'raw':_0x336db6[_0x5b57('0x16')]?_0x336db6[_0x5b57('0x16')][_0x5b57('0x17')]===undefined?!![]:![]:!![]})[_0x5b57('0xa')](function(_0x53378c){logger[_0x5b57('0xb')](_0x5b57('0x18'),_0x336db6);logger[_0x5b57('0x19')]('CreateCmHopperHistory',_0x336db6,JSON[_0x5b57('0x1a')](_0x53378c));_0x2cb809(_0x53378c);})[_0x5b57('0x13')](function(_0x3a4488){logger[_0x5b57('0xf')](_0x5b57('0x18'),_0x3a4488[_0x5b57('0x11')],_0x336db6);_0x137899(_0x1e316f['error'](0x1f4,_0x3a4488[_0x5b57('0x11')]));});});};exports['AvgHandleTime']=function(_0x11c149){var _0x38a3b3=this;return new Promise(function(_0x5a4961,_0x52e4b0){return db[_0x5b57('0x14')]['findAll']({'raw':_0x11c149[_0x5b57('0x16')]?_0x11c149[_0x5b57('0x16')][_0x5b57('0x17')]===undefined?!![]:![]:!![],'where':_0x11c149[_0x5b57('0x16')]?_0x11c149[_0x5b57('0x16')][_0x5b57('0x1b')]||null:null,'attributes':[[db[_0x5b57('0x1c')]['fn'](_0x5b57('0x1d'),db[_0x5b57('0x1c')][_0x5b57('0x1e')]('id')),_0x5b57('0x1f')],[db[_0x5b57('0x1c')]['fn'](_0x5b57('0x1d'),db[_0x5b57('0x1c')]['fn']('IF',db[_0x5b57('0x1c')][_0x5b57('0x20')](_0x5b57('0x21')))),'predictiveIntervalAnsweredCalls'],[db[_0x5b57('0x1c')]['fn']('COUNT',db[_0x5b57('0x1c')]['fn']('IF',db[_0x5b57('0x1c')][_0x5b57('0x20')](_0x5b57('0x22')))),_0x5b57('0x23')],[db[_0x5b57('0x1c')]['fn']('COUNT',db[_0x5b57('0x1c')]['fn']('IF',db[_0x5b57('0x1c')][_0x5b57('0x20')](_0x5b57('0x24')))),_0x5b57('0x25')],[db['sequelize']['fn'](_0x5b57('0x26'),db['sequelize']['fn']('IF',db[_0x5b57('0x1c')]['literal'](_0x5b57('0x27')))),_0x5b57('0x28')],[db[_0x5b57('0x1c')]['fn'](_0x5b57('0x26'),db[_0x5b57('0x1c')]['fn']('IF',db[_0x5b57('0x1c')][_0x5b57('0x20')](_0x5b57('0x29')))),_0x5b57('0x2a')]]})[_0x5b57('0xa')](function(_0x57985c){logger[_0x5b57('0xb')](_0x5b57('0x2b'),_0x11c149);logger[_0x5b57('0x19')](_0x5b57('0x2b'),_0x11c149,JSON[_0x5b57('0x1a')](_0x57985c));_0x5a4961(_0x57985c);})[_0x5b57('0x13')](function(_0x402fe7){logger[_0x5b57('0xf')](_0x5b57('0x2b'),_0x402fe7[_0x5b57('0x11')],_0x11c149);_0x52e4b0(_0x38a3b3[_0x5b57('0xf')](0x1f4,_0x402fe7[_0x5b57('0x11')]));});});};exports[_0x5b57('0x2c')]=function(_0xd0a05d){var _0x5b4bd2=this;return new Promise(function(_0x4155ac,_0x4db5ae){return db[_0x5b57('0x14')][_0x5b57('0x2d')]({'raw':_0xd0a05d[_0x5b57('0x16')]?_0xd0a05d[_0x5b57('0x16')][_0x5b57('0x17')]===undefined?!![]:![]:!![],'where':_0xd0a05d[_0x5b57('0x16')]?_0xd0a05d[_0x5b57('0x16')]['where']||null:null,'attributes':[[_0x5b57('0x2e'),_0x5b57('0x2f')],[db[_0x5b57('0x1c')]['fn']('COUNT',db[_0x5b57('0x1c')]['fn']('IF',db[_0x5b57('0x1c')]['literal'](_0x5b57('0x30')))),_0x5b57('0x31')],[db[_0x5b57('0x1c')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x5b57('0x1c')][_0x5b57('0x20')]('`state`\x20=\x203,\x201,\x20null'))),_0x5b57('0x32')],[db['sequelize']['fn'](_0x5b57('0x1d'),db[_0x5b57('0x1c')]['fn']('IF',db['sequelize'][_0x5b57('0x20')](_0x5b57('0x21')))),_0x5b57('0x33')],[db[_0x5b57('0x1c')]['fn'](_0x5b57('0x1d'),db[_0x5b57('0x1c')]['fn']('IF',db[_0x5b57('0x1c')]['literal']('`state`\x20=\x205,\x201,\x20null'))),_0x5b57('0x34')],[db['sequelize']['fn'](_0x5b57('0x1d'),db['sequelize']['fn']('IF',db[_0x5b57('0x1c')][_0x5b57('0x20')](_0x5b57('0x35')))),_0x5b57('0x36')],[db[_0x5b57('0x1c')]['fn'](_0x5b57('0x1d'),db[_0x5b57('0x1c')]['fn']('IF',db[_0x5b57('0x1c')][_0x5b57('0x20')](_0x5b57('0x37')))),_0x5b57('0x38')],[db[_0x5b57('0x1c')]['fn'](_0x5b57('0x1d'),db[_0x5b57('0x1c')]['fn']('IF',db[_0x5b57('0x1c')][_0x5b57('0x20')](_0x5b57('0x39')))),_0x5b57('0x3a')],[db[_0x5b57('0x1c')]['fn']('COUNT',db[_0x5b57('0x1c')]['fn']('IF',db[_0x5b57('0x1c')][_0x5b57('0x20')]('`state`\x20=\x2012,\x201,\x20null'))),_0x5b57('0x3b')],[db[_0x5b57('0x1c')]['fn'](_0x5b57('0x1d'),db[_0x5b57('0x1c')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2013,\x201,\x20null'))),_0x5b57('0x3c')],[db[_0x5b57('0x1c')]['fn']('COUNT',db[_0x5b57('0x1c')]['fn']('IF',db[_0x5b57('0x1c')][_0x5b57('0x20')](_0x5b57('0x3d')))),_0x5b57('0x3e')],[db[_0x5b57('0x1c')]['fn'](_0x5b57('0x1d'),db[_0x5b57('0x1c')]['fn']('IF',db[_0x5b57('0x1c')][_0x5b57('0x20')](_0x5b57('0x3f')))),_0x5b57('0x40')],[db[_0x5b57('0x1c')]['fn'](_0x5b57('0x1d'),db[_0x5b57('0x1c')]['fn']('IF',db[_0x5b57('0x1c')][_0x5b57('0x20')](_0x5b57('0x41')))),_0x5b57('0x42')],[db[_0x5b57('0x1c')]['fn'](_0x5b57('0x1d'),db[_0x5b57('0x1c')]['fn']('IF',db['sequelize']['literal'](_0x5b57('0x43')))),'outboundRejectCallsDay'],[db[_0x5b57('0x1c')]['fn']('COUNT',db[_0x5b57('0x1c')]['fn']('IF',db[_0x5b57('0x1c')][_0x5b57('0x20')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),'outboundReCallsDay']],'group':['campaign']})['then'](function(_0x367dea){logger['info']('GetVoiceQueueHopperHistory',_0xd0a05d);logger['debug'](_0x5b57('0x2c'),_0xd0a05d,JSON[_0x5b57('0x1a')](_0x367dea));_0x4155ac(_0x367dea);})[_0x5b57('0x13')](function(_0x3e0c0c){logger[_0x5b57('0xf')](_0x5b57('0x2c'),_0x3e0c0c['message'],_0xd0a05d);_0x4db5ae(_0x5b4bd2[_0x5b57('0xf')](0x1f4,_0x3e0c0c[_0x5b57('0x11')]));});});};exports['GetCampaignHopperHistory']=function(_0x118a1e){var _0x23841a=this;return new Promise(function(_0x2b1d59,_0xabfbe6){return db['CmHopperHistory']['findAll']({'raw':_0x118a1e[_0x5b57('0x16')]?_0x118a1e[_0x5b57('0x16')][_0x5b57('0x17')]===undefined?!![]:![]:!![],'where':_0x118a1e[_0x5b57('0x16')]?_0x118a1e[_0x5b57('0x16')]['where']||null:null,'attributes':[['campaign',_0x5b57('0x2f')],[db[_0x5b57('0x1c')]['fn'](_0x5b57('0x1d'),db['sequelize']['col']('id')),'ivrTotalCallsDays'],[db['sequelize']['fn'](_0x5b57('0x1d'),db[_0x5b57('0x1c')]['fn']('IF',db[_0x5b57('0x1c')][_0x5b57('0x20')](_0x5b57('0x21')))),_0x5b57('0x44')]],'group':[_0x5b57('0x2e')]})[_0x5b57('0xa')](function(_0x53b907){logger[_0x5b57('0xb')](_0x5b57('0x45'),_0x118a1e);logger[_0x5b57('0x19')](_0x5b57('0x45'),_0x118a1e,JSON['stringify'](_0x53b907));_0x2b1d59(_0x53b907);})[_0x5b57('0x13')](function(_0x57916e){logger[_0x5b57('0xf')](_0x5b57('0x45'),_0x57916e['message'],_0x118a1e);_0xabfbe6(_0x23841a[_0x5b57('0xf')](0x1f4,_0x57916e['message']));});});};
\ No newline at end of file
+var _0x0a9f=['outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','`state`\x20=\x2020,\x201,\x20null','outboundReCallsDay','then','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','where','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','CmHopperHistory,\x20%s,\x20%s','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','CreateCmHopperHistory','CmHopperHistory','create','body','options','raw','catch','findAll','sequelize','col','predictiveIntervalTotalCalls','COUNT','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','predictiveIntervalAvgTalktime','AvgHandleTime','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null'];(function(_0x1d28a0,_0x1027a9){var _0x37dafa=function(_0x3f8406){while(--_0x3f8406){_0x1d28a0['push'](_0x1d28a0['shift']());}};_0x37dafa(++_0x1027a9);}(_0x0a9f,0x1b5));var _0xf0a9=function(_0x12939d,_0x24971d){_0x12939d=_0x12939d-0x0;var _0x38f9ab=_0x0a9f[_0x12939d];return _0x38f9ab;};'use strict';var _=require(_0xf0a9('0x0'));var util=require(_0xf0a9('0x1'));var moment=require(_0xf0a9('0x2'));var BPromise=require(_0xf0a9('0x3'));var rs=require(_0xf0a9('0x4'));var fs=require('fs');var Redis=require(_0xf0a9('0x5'));var db=require(_0xf0a9('0x6'))['db'];var utils=require(_0xf0a9('0x7'));var logger=require(_0xf0a9('0x8'))(_0xf0a9('0x9'));var config=require(_0xf0a9('0xa'));var jayson=require(_0xf0a9('0xb'));var client=jayson['client'][_0xf0a9('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x59adba,_0xca5a79,_0x388cc4){return new BPromise(function(_0x5d5b74,_0x11f3e2){return client[_0xf0a9('0xd')](_0x59adba,_0x388cc4)['then'](function(_0x33f509){logger[_0xf0a9('0xe')](_0xf0a9('0xf'),_0xca5a79,'request\x20sent');logger[_0xf0a9('0x10')](_0xf0a9('0x11'),_0xca5a79,_0xf0a9('0x12'),JSON[_0xf0a9('0x13')](_0x33f509));if(_0x33f509[_0xf0a9('0x14')]){if(_0x33f509[_0xf0a9('0x14')][_0xf0a9('0x15')]===0x1f4){logger[_0xf0a9('0x14')](_0xf0a9('0xf'),_0xca5a79,_0x33f509[_0xf0a9('0x14')][_0xf0a9('0x16')]);return _0x11f3e2(_0x33f509[_0xf0a9('0x14')]['message']);}logger[_0xf0a9('0x14')](_0xf0a9('0xf'),_0xca5a79,_0x33f509[_0xf0a9('0x14')][_0xf0a9('0x16')]);return _0x5d5b74(_0x33f509[_0xf0a9('0x14')][_0xf0a9('0x16')]);}else{logger['info'](_0xf0a9('0xf'),_0xca5a79,_0xf0a9('0x12'));_0x5d5b74(_0x33f509['result'][_0xf0a9('0x16')]);}})['catch'](function(_0x121f44){logger[_0xf0a9('0x14')](_0xf0a9('0xf'),_0xca5a79,_0x121f44);_0x11f3e2(_0x121f44);});});}exports[_0xf0a9('0x17')]=function(_0x41e4c3){var _0x2a46c0=this;return new Promise(function(_0x4c82e7,_0x1952ab){return db[_0xf0a9('0x18')][_0xf0a9('0x19')](_0x41e4c3[_0xf0a9('0x1a')],{'raw':_0x41e4c3[_0xf0a9('0x1b')]?_0x41e4c3[_0xf0a9('0x1b')][_0xf0a9('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x48c381){logger[_0xf0a9('0xe')](_0xf0a9('0x17'),_0x41e4c3);logger[_0xf0a9('0x10')](_0xf0a9('0x17'),_0x41e4c3,JSON[_0xf0a9('0x13')](_0x48c381));_0x4c82e7(_0x48c381);})[_0xf0a9('0x1d')](function(_0x18dd39){logger['error'](_0xf0a9('0x17'),_0x18dd39[_0xf0a9('0x16')],_0x41e4c3);_0x1952ab(_0x2a46c0[_0xf0a9('0x14')](0x1f4,_0x18dd39['message']));});});};exports['AvgHandleTime']=function(_0x87063e){var _0x260f82=this;return new Promise(function(_0x408129,_0x57b81d){return db[_0xf0a9('0x18')][_0xf0a9('0x1e')]({'raw':_0x87063e[_0xf0a9('0x1b')]?_0x87063e['options'][_0xf0a9('0x1c')]===undefined?!![]:![]:!![],'where':_0x87063e['options']?_0x87063e[_0xf0a9('0x1b')]['where']||null:null,'attributes':[[db[_0xf0a9('0x1f')]['fn']('COUNT',db[_0xf0a9('0x1f')][_0xf0a9('0x20')]('id')),_0xf0a9('0x21')],[db[_0xf0a9('0x1f')]['fn'](_0xf0a9('0x22'),db[_0xf0a9('0x1f')]['fn']('IF',db[_0xf0a9('0x1f')][_0xf0a9('0x23')](_0xf0a9('0x24')))),_0xf0a9('0x25')],[db[_0xf0a9('0x1f')]['fn'](_0xf0a9('0x22'),db[_0xf0a9('0x1f')]['fn']('IF',db[_0xf0a9('0x1f')][_0xf0a9('0x23')](_0xf0a9('0x26')))),_0xf0a9('0x27')],[db[_0xf0a9('0x1f')]['fn'](_0xf0a9('0x22'),db[_0xf0a9('0x1f')]['fn']('IF',db[_0xf0a9('0x1f')]['literal'](_0xf0a9('0x28')))),_0xf0a9('0x29')],[db[_0xf0a9('0x1f')]['fn'](_0xf0a9('0x2a'),db[_0xf0a9('0x1f')]['fn']('IF',db[_0xf0a9('0x1f')][_0xf0a9('0x23')]('`state`\x20=\x204,\x20`holdtime`,\x20null'))),'predictiveIntervalAvgHoldtime'],[db[_0xf0a9('0x1f')]['fn'](_0xf0a9('0x2a'),db[_0xf0a9('0x1f')]['fn']('IF',db['sequelize'][_0xf0a9('0x23')]('`state`\x20=\x204,\x20`talktime`,\x20null'))),_0xf0a9('0x2b')]]})['then'](function(_0x473757){logger[_0xf0a9('0xe')]('AvgHandleTime',_0x87063e);logger[_0xf0a9('0x10')]('AvgHandleTime',_0x87063e,JSON['stringify'](_0x473757));_0x408129(_0x473757);})['catch'](function(_0x165cc8){logger[_0xf0a9('0x14')](_0xf0a9('0x2c'),_0x165cc8[_0xf0a9('0x16')],_0x87063e);_0x57b81d(_0x260f82[_0xf0a9('0x14')](0x1f4,_0x165cc8[_0xf0a9('0x16')]));});});};exports['GetVoiceQueueHopperHistory']=function(_0x574494){var _0x3deb3b=this;return new Promise(function(_0x2f6abe,_0x1264f3){return db[_0xf0a9('0x18')][_0xf0a9('0x1e')]({'raw':_0x574494['options']?_0x574494['options'][_0xf0a9('0x1c')]===undefined?!![]:![]:!![],'where':_0x574494[_0xf0a9('0x1b')]?_0x574494[_0xf0a9('0x1b')]['where']||null:null,'attributes':[[_0xf0a9('0x2d'),_0xf0a9('0x2e')],[db[_0xf0a9('0x1f')]['fn'](_0xf0a9('0x22'),db[_0xf0a9('0x1f')]['fn']('IF',db['sequelize'][_0xf0a9('0x23')](_0xf0a9('0x2f')))),_0xf0a9('0x30')],[db[_0xf0a9('0x1f')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xf0a9('0x1f')][_0xf0a9('0x23')](_0xf0a9('0x31')))),'outboundNoAnswerCallsDay'],[db[_0xf0a9('0x1f')]['fn']('COUNT',db[_0xf0a9('0x1f')]['fn']('IF',db[_0xf0a9('0x1f')]['literal'](_0xf0a9('0x24')))),'outboundAnswerCallsDay'],[db[_0xf0a9('0x1f')]['fn'](_0xf0a9('0x22'),db[_0xf0a9('0x1f')]['fn']('IF',db[_0xf0a9('0x1f')][_0xf0a9('0x23')](_0xf0a9('0x32')))),'outboundBusyCallsDay'],[db[_0xf0a9('0x1f')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xf0a9('0x1f')]['literal']('`state`\x20=\x208,\x201,\x20null'))),_0xf0a9('0x33')],[db['sequelize']['fn'](_0xf0a9('0x22'),db[_0xf0a9('0x1f')]['fn']('IF',db['sequelize'][_0xf0a9('0x23')](_0xf0a9('0x34')))),_0xf0a9('0x35')],[db[_0xf0a9('0x1f')]['fn']('COUNT',db[_0xf0a9('0x1f')]['fn']('IF',db['sequelize'][_0xf0a9('0x23')](_0xf0a9('0x36')))),'outboundDropCallsDayCallersExit'],[db[_0xf0a9('0x1f')]['fn'](_0xf0a9('0x22'),db[_0xf0a9('0x1f')]['fn']('IF',db[_0xf0a9('0x1f')][_0xf0a9('0x23')](_0xf0a9('0x37')))),_0xf0a9('0x38')],[db[_0xf0a9('0x1f')]['fn'](_0xf0a9('0x22'),db['sequelize']['fn']('IF',db[_0xf0a9('0x1f')][_0xf0a9('0x23')](_0xf0a9('0x39')))),_0xf0a9('0x3a')],[db['sequelize']['fn']('COUNT',db[_0xf0a9('0x1f')]['fn']('IF',db['sequelize'][_0xf0a9('0x23')](_0xf0a9('0x3b')))),_0xf0a9('0x3c')],[db[_0xf0a9('0x1f')]['fn'](_0xf0a9('0x22'),db[_0xf0a9('0x1f')]['fn']('IF',db[_0xf0a9('0x1f')][_0xf0a9('0x23')](_0xf0a9('0x3d')))),_0xf0a9('0x3e')],[db[_0xf0a9('0x1f')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xf0a9('0x1f')][_0xf0a9('0x23')](_0xf0a9('0x3f')))),'outboundAnswerAgiCallsDay'],[db[_0xf0a9('0x1f')]['fn'](_0xf0a9('0x22'),db[_0xf0a9('0x1f')]['fn']('IF',db[_0xf0a9('0x1f')][_0xf0a9('0x23')](_0xf0a9('0x40')))),_0xf0a9('0x3e')],[db['sequelize']['fn'](_0xf0a9('0x22'),db['sequelize']['fn']('IF',db[_0xf0a9('0x1f')]['literal']('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),_0xf0a9('0x41')]],'group':[_0xf0a9('0x2d')]})[_0xf0a9('0x42')](function(_0xa86ef){logger[_0xf0a9('0xe')](_0xf0a9('0x43'),_0x574494);logger[_0xf0a9('0x10')]('GetVoiceQueueHopperHistory',_0x574494,JSON[_0xf0a9('0x13')](_0xa86ef));_0x2f6abe(_0xa86ef);})[_0xf0a9('0x1d')](function(_0x1d40ba){logger[_0xf0a9('0x14')](_0xf0a9('0x43'),_0x1d40ba[_0xf0a9('0x16')],_0x574494);_0x1264f3(_0x3deb3b[_0xf0a9('0x14')](0x1f4,_0x1d40ba[_0xf0a9('0x16')]));});});};exports[_0xf0a9('0x44')]=function(_0x51bc4c){var _0x39e89d=this;return new Promise(function(_0x5edfb5,_0x1c9689){return db[_0xf0a9('0x18')][_0xf0a9('0x1e')]({'raw':_0x51bc4c[_0xf0a9('0x1b')]?_0x51bc4c[_0xf0a9('0x1b')][_0xf0a9('0x1c')]===undefined?!![]:![]:!![],'where':_0x51bc4c[_0xf0a9('0x1b')]?_0x51bc4c[_0xf0a9('0x1b')][_0xf0a9('0x45')]||null:null,'attributes':[[_0xf0a9('0x2d'),_0xf0a9('0x2e')],[db[_0xf0a9('0x1f')]['fn'](_0xf0a9('0x22'),db[_0xf0a9('0x1f')][_0xf0a9('0x20')]('id')),'ivrTotalCallsDays'],[db[_0xf0a9('0x1f')]['fn'](_0xf0a9('0x22'),db[_0xf0a9('0x1f')]['fn']('IF',db['sequelize'][_0xf0a9('0x23')](_0xf0a9('0x24')))),_0xf0a9('0x46')]],'group':[_0xf0a9('0x2d')]})[_0xf0a9('0x42')](function(_0x5409e1){logger[_0xf0a9('0xe')](_0xf0a9('0x44'),_0x51bc4c);logger['debug'](_0xf0a9('0x44'),_0x51bc4c,JSON[_0xf0a9('0x13')](_0x5409e1));_0x5edfb5(_0x5409e1);})[_0xf0a9('0x1d')](function(_0x26900a){logger[_0xf0a9('0x14')](_0xf0a9('0x44'),_0x26900a[_0xf0a9('0x16')],_0x51bc4c);_0x1c9689(_0x39e89d[_0xf0a9('0x14')](0x1f4,_0x26900a[_0xf0a9('0x16')]));});});};
\ No newline at end of file
index 14da632..0e2d20c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4926=['../../config/environment','./cmHopperHistory.controller','index','/describe','describe','get','/:id','isAuthenticated','post','create','update','exports','multer','path','Router','fs-extra','../../components/auth/service'];(function(_0x4ebcee,_0x22671d){var _0x26e5bf=function(_0x3ad167){while(--_0x3ad167){_0x4ebcee['push'](_0x4ebcee['shift']());}};_0x26e5bf(++_0x22671d);}(_0x4926,0x12d));var _0x6492=function(_0x16eb11,_0x1a2251){_0x16eb11=_0x16eb11-0x0;var _0x3ae7ef=_0x4926[_0x16eb11];return _0x3ae7ef;};'use strict';var multer=require(_0x6492('0x0'));var util=require('util');var path=require(_0x6492('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6492('0x2')]();var fs_extra=require(_0x6492('0x3'));var auth=require(_0x6492('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x6492('0x5'));var controller=require(_0x6492('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x6492('0x7')]);router['get'](_0x6492('0x8'),auth['isAuthenticated'](),controller[_0x6492('0x9')]);router[_0x6492('0xa')](_0x6492('0xb'),auth[_0x6492('0xc')](),controller['show']);router[_0x6492('0xd')]('/',auth[_0x6492('0xc')](),controller[_0x6492('0xe')]);router['put']('/:id',auth[_0x6492('0xc')](),controller[_0x6492('0xf')]);module[_0x6492('0x10')]=router;
\ No newline at end of file
+var _0x34ff=['post','create','put','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','./cmHopperHistory.controller','get','isAuthenticated','index','/describe','show'];(function(_0x438092,_0xf7605d){var _0x569e41=function(_0x1fbaa1){while(--_0x1fbaa1){_0x438092['push'](_0x438092['shift']());}};_0x569e41(++_0xf7605d);}(_0x34ff,0xe4));var _0xf34f=function(_0x3020fa,_0x1ed7ae){_0x3020fa=_0x3020fa-0x0;var _0x11a04c=_0x34ff[_0x3020fa];return _0x11a04c;};'use strict';var multer=require(_0xf34f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xf34f('0x1'));var express=require(_0xf34f('0x2'));var router=express[_0xf34f('0x3')]();var fs_extra=require(_0xf34f('0x4'));var auth=require(_0xf34f('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf34f('0x6'));router[_0xf34f('0x7')]('/',auth[_0xf34f('0x8')](),controller[_0xf34f('0x9')]);router[_0xf34f('0x7')](_0xf34f('0xa'),auth[_0xf34f('0x8')](),controller['describe']);router[_0xf34f('0x7')]('/:id',auth[_0xf34f('0x8')](),controller[_0xf34f('0xb')]);router[_0xf34f('0xc')]('/',auth[_0xf34f('0x8')](),controller[_0xf34f('0xd')]);router[_0xf34f('0xe')]('/:id',auth['isAuthenticated'](),controller['update']);module[_0xf34f('0xf')]=router;
\ No newline at end of file
index 0b2aa46..f66f7f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x269f=['STRING','sequelize','exports'];(function(_0x53afe9,_0x2c9f40){var _0x396396=function(_0x1f574d){while(--_0x1f574d){_0x53afe9['push'](_0x53afe9['shift']());}};_0x396396(++_0x2c9f40);}(_0x269f,0xee));var _0xf269=function(_0x25e7cb,_0x3579b7){_0x25e7cb=_0x25e7cb-0x0;var _0x375d92=_0x269f[_0x25e7cb];return _0x375d92;};'use strict';var Sequelize=require(_0xf269('0x0'));module[_0xf269('0x1')]={'name':{'type':Sequelize[_0xf269('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xf269('0x2')]},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x24ca=['name','STRING','sequelize'];(function(_0x55865b,_0x523605){var _0x586cb1=function(_0x2cbd90){while(--_0x2cbd90){_0x55865b['push'](_0x55865b['shift']());}};_0x586cb1(++_0x523605);}(_0x24ca,0x8c));var _0xa24c=function(_0x3ce2c4,_0x4544c1){_0x3ce2c4=_0x3ce2c4-0x0;var _0x4047c1=_0x24ca[_0x3ce2c4];return _0x4047c1;};'use strict';var Sequelize=require(_0xa24c('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xa24c('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize[_0xa24c('0x2')]}};
\ No newline at end of file
index 8251c9c..39501a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47d2=['count','Content-Range','apply','reject','update','then','destroy','get','Lists','UserProfileResource','sendStatus','error','stack','name','send','index','map','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','CmList','includeAll','include','findAll','rows','catch','rawAttributes','keys','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','ListId','Disposition','findOne','nolimit','removeDispositions','ids','addContacts','CmContact','tags','isArray','push','each','success','dataValues','errors','json','Malformed\x20request\x20syntax','getContacts','CustomFields','concat','format','cf_%d','raw','getContactsCsv','CmCustomField','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','download','transaction','addCustomFields','Sequelize','text','TEXT','number','INTEGER','switch','BOOLEAN','sequelize','queryInterface','addColumn','cf_%s','getCustomFields','findAndCountAll','addAgents','omit','spread','userCmList:save','removeAgents','emit','userCmList:remove','getAgents','User','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./cmList.socket','register','status','offset','undefined','limit'];(function(_0x11ae28,_0x5a2fa9){var _0x5012ec=function(_0x520237){while(--_0x520237){_0x11ae28['push'](_0x11ae28['shift']());}};_0x5012ec(++_0x5a2fa9);}(_0x47d2,0x10d));var _0x247d=function(_0x4a8428,_0x271b81){_0x4a8428=_0x4a8428-0x0;var _0x559859=_0x47d2[_0x4a8428];return _0x559859;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x247d('0x0'));var zipdir=require(_0x247d('0x1'));var jsonpatch=require(_0x247d('0x2'));var rp=require(_0x247d('0x3'));var moment=require('moment');var BPromise=require(_0x247d('0x4'));var Mustache=require(_0x247d('0x5'));var util=require(_0x247d('0x6'));var path=require(_0x247d('0x7'));var sox=require(_0x247d('0x8'));var csv=require(_0x247d('0x9'));var ejs=require(_0x247d('0xa'));var fs=require('fs');var fs_extra=require(_0x247d('0xb'));var _=require(_0x247d('0xc'));var squel=require(_0x247d('0xd'));var crypto=require('crypto');var jsforce=require(_0x247d('0xe'));var deskjs=require(_0x247d('0xf'));var toCsv=require(_0x247d('0x9'));var querystring=require(_0x247d('0x10'));var Papa=require(_0x247d('0x11'));var Redis=require(_0x247d('0x12'));var authService=require(_0x247d('0x13'));var qs=require(_0x247d('0x14'));var as=require(_0x247d('0x15'));var hardwareService=require(_0x247d('0x16'));var logger=require(_0x247d('0x17'))(_0x247d('0x18'));var utils=require(_0x247d('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x247d('0x1a'));var db=require(_0x247d('0x1b'))['db'];config[_0x247d('0x1c')]=_[_0x247d('0x1d')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x247d('0x1e'))(new Redis(config[_0x247d('0x1c')]));require(_0x247d('0x1f'))[_0x247d('0x20')](socket);function respondWithStatusCode(_0x549214,_0x48a66f){_0x48a66f=_0x48a66f||0xcc;return function(_0x463df4){if(_0x463df4){return _0x549214['sendStatus'](_0x48a66f);}return _0x549214['status'](_0x48a66f)['end']();};}function respondWithResult(_0x414b88,_0x5dad2f){_0x5dad2f=_0x5dad2f||0xc8;return function(_0x97df72){if(_0x97df72){return _0x414b88[_0x247d('0x21')](_0x5dad2f)['json'](_0x97df72);}};}function respondWithFilteredResult(_0x40c094,_0x145eb7){return function(_0x86ac58){if(_0x86ac58){var _0x13a785=typeof _0x145eb7[_0x247d('0x22')]===_0x247d('0x23')&&typeof _0x145eb7[_0x247d('0x24')]===_0x247d('0x23');var _0x28e486=_0x86ac58[_0x247d('0x25')];var _0x14c5a3=_0x13a785?0x0:_0x145eb7['offset'];var _0x40508d=_0x13a785?_0x86ac58[_0x247d('0x25')]:_0x145eb7['offset']+_0x145eb7[_0x247d('0x24')];var _0x1fb250;if(_0x40508d>=_0x28e486){_0x40508d=_0x28e486;_0x1fb250=0xc8;}else{_0x1fb250=0xce;}_0x40c094[_0x247d('0x21')](_0x1fb250);return _0x40c094['set'](_0x247d('0x26'),_0x14c5a3+'-'+_0x40508d+'/'+_0x28e486)['json'](_0x86ac58);}return null;};}function patchUpdates(_0x5187d8){return function(_0x3af5e9){try{jsonpatch[_0x247d('0x27')](_0x3af5e9,_0x5187d8,!![]);}catch(_0x578126){return BPromise[_0x247d('0x28')](_0x578126);}return _0x3af5e9['save']();};}function saveUpdates(_0xeb723d,_0x4380ec){return function(_0xa35277){if(_0xa35277){return _0xa35277[_0x247d('0x29')](_0xeb723d)[_0x247d('0x2a')](function(_0x576c38){return _0x576c38;});}return null;};}function removeEntity(_0x38c37a,_0x4cd86f){return function(_0x344978){if(_0x344978){return _0x344978[_0x247d('0x2b')]()[_0x247d('0x2a')](function(){var _0x89f85e=_0x344978[_0x247d('0x2c')]({'plain':!![]});var _0x5d638e=_0x247d('0x2d');return db[_0x247d('0x2e')][_0x247d('0x2b')]({'where':{'type':_0x5d638e,'resourceId':_0x89f85e['id']}})[_0x247d('0x2a')](function(){return _0x344978;});})[_0x247d('0x2a')](function(){_0x38c37a[_0x247d('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x19fd31,_0x4ad4d1){return function(_0x44fdca){if(!_0x44fdca){_0x19fd31[_0x247d('0x2f')](0x194);}return _0x44fdca;};}function handleError(_0x4b13a6,_0x161aa1){_0x161aa1=_0x161aa1||0x1f4;return function(_0x122d59){logger[_0x247d('0x30')](_0x122d59[_0x247d('0x31')]);if(_0x122d59[_0x247d('0x32')]){delete _0x122d59[_0x247d('0x32')];}_0x4b13a6[_0x247d('0x21')](_0x161aa1)[_0x247d('0x33')](_0x122d59);};}exports[_0x247d('0x34')]=function(_0x5d38f0,_0x205743){var _0x2121c7={},_0x6f6d24={},_0x52e722={'count':0x0,'rows':[]};var _0x207d10=_[_0x247d('0x35')](db['CmList']['rawAttributes'],function(_0x1aee97){return{'name':_0x1aee97[_0x247d('0x36')],'type':_0x1aee97[_0x247d('0x37')]['key']};});_0x6f6d24[_0x247d('0x38')]=_[_0x247d('0x35')](_0x207d10,_0x247d('0x32'));_0x6f6d24[_0x247d('0x39')]=_['keys'](_0x5d38f0[_0x247d('0x39')]);_0x6f6d24[_0x247d('0x3a')]=_[_0x247d('0x3b')](_0x6f6d24[_0x247d('0x38')],_0x6f6d24[_0x247d('0x39')]);_0x2121c7[_0x247d('0x3c')]=_[_0x247d('0x3b')](_0x6f6d24[_0x247d('0x38')],qs[_0x247d('0x3d')](_0x5d38f0[_0x247d('0x39')][_0x247d('0x3d')]));_0x2121c7[_0x247d('0x3c')]=_0x2121c7['attributes'][_0x247d('0x3e')]?_0x2121c7['attributes']:_0x6f6d24[_0x247d('0x38')];if(!_0x5d38f0['query'][_0x247d('0x3f')]('nolimit')){_0x2121c7['limit']=qs[_0x247d('0x24')](_0x5d38f0[_0x247d('0x39')][_0x247d('0x24')]);_0x2121c7[_0x247d('0x22')]=qs[_0x247d('0x22')](_0x5d38f0[_0x247d('0x39')][_0x247d('0x22')]);}_0x2121c7[_0x247d('0x40')]=qs[_0x247d('0x41')](_0x5d38f0[_0x247d('0x39')][_0x247d('0x41')]);_0x2121c7[_0x247d('0x42')]=qs['filters'](_[_0x247d('0x43')](_0x5d38f0[_0x247d('0x39')],_0x6f6d24[_0x247d('0x3a')]),_0x207d10);if(_0x5d38f0[_0x247d('0x39')][_0x247d('0x44')]){_0x2121c7[_0x247d('0x42')]=_[_0x247d('0x45')](_0x2121c7[_0x247d('0x42')],{'$or':_[_0x247d('0x35')](_0x207d10,function(_0x4b2a97){if(_0x4b2a97['type']!==_0x247d('0x46')){var _0x149417={};_0x149417[_0x4b2a97['name']]={'$like':'%'+_0x5d38f0[_0x247d('0x39')][_0x247d('0x44')]+'%'};return _0x149417;}})});}_0x2121c7=_[_0x247d('0x45')]({},_0x2121c7,_0x5d38f0[_0x247d('0x47')]);var _0x420609={'where':_0x2121c7[_0x247d('0x42')]};return db[_0x247d('0x48')][_0x247d('0x25')](_0x420609)['then'](function(_0x556aa0){_0x52e722[_0x247d('0x25')]=_0x556aa0;if(_0x5d38f0[_0x247d('0x39')][_0x247d('0x49')]){_0x2121c7[_0x247d('0x4a')]=[{'all':!![]}];}return db[_0x247d('0x48')][_0x247d('0x4b')](_0x2121c7);})['then'](function(_0x2370bf){_0x52e722[_0x247d('0x4c')]=_0x2370bf;return _0x52e722;})['then'](respondWithFilteredResult(_0x205743,_0x2121c7))[_0x247d('0x4d')](handleError(_0x205743,null));};exports['show']=function(_0x12ef94,_0x42ec6e){var _0x1af4f1={'raw':![],'where':{'id':_0x12ef94['params']['id']}},_0x251b58={};_0x251b58['model']=_['keys'](db[_0x247d('0x48')][_0x247d('0x4e')]);_0x251b58['query']=_[_0x247d('0x4f')](_0x12ef94['query']);_0x251b58[_0x247d('0x3a')]=_['intersection'](_0x251b58['model'],_0x251b58[_0x247d('0x39')]);_0x1af4f1[_0x247d('0x3c')]=_[_0x247d('0x3b')](_0x251b58[_0x247d('0x38')],qs['fields'](_0x12ef94['query'][_0x247d('0x3d')]));_0x1af4f1[_0x247d('0x3c')]=_0x1af4f1[_0x247d('0x3c')][_0x247d('0x3e')]?_0x1af4f1[_0x247d('0x3c')]:_0x251b58['model'];if(_0x12ef94[_0x247d('0x39')]['includeAll']){_0x1af4f1[_0x247d('0x4a')]=[{'all':!![]}];}_0x1af4f1=_['merge']({},_0x1af4f1,_0x12ef94[_0x247d('0x47')]);return db[_0x247d('0x48')]['find'](_0x1af4f1)[_0x247d('0x2a')](handleEntityNotFound(_0x42ec6e,null))[_0x247d('0x2a')](respondWithResult(_0x42ec6e,null))['catch'](handleError(_0x42ec6e,null));};exports[_0x247d('0x50')]=function(_0xb2051c,_0x5afe77){return db[_0x247d('0x48')][_0x247d('0x50')](_0xb2051c[_0x247d('0x51')],{})[_0x247d('0x2a')](function(_0x12378c){var _0x59d1eb=_0xb2051c['user'][_0x247d('0x2c')]({'plain':!![]});if(!_0x59d1eb)throw new Error(_0x247d('0x52'));if(_0x59d1eb[_0x247d('0x53')]===_0x247d('0x54')){var _0x54d688=_0x12378c[_0x247d('0x2c')]({'plain':!![]});var _0x385f56=_0x247d('0x2d');return db[_0x247d('0x55')][_0x247d('0x56')]({'where':{'name':_0x385f56,'userProfileId':_0x59d1eb[_0x247d('0x57')]},'raw':!![]})['then'](function(_0x4f59a5){if(_0x4f59a5&&_0x4f59a5[_0x247d('0x58')]===0x0){return db['UserProfileResource'][_0x247d('0x50')]({'name':_0x54d688['name'],'resourceId':_0x54d688['id'],'type':_0x4f59a5[_0x247d('0x32')],'sectionId':_0x4f59a5['id']},{})['then'](function(){return _0x12378c;});}else{return _0x12378c;}})[_0x247d('0x4d')](function(_0x2e8e2d){logger[_0x247d('0x30')](_0x247d('0x59'),_0x2e8e2d);throw _0x2e8e2d;});}return _0x12378c;})[_0x247d('0x2a')](respondWithResult(_0x5afe77,0xc9))[_0x247d('0x4d')](handleError(_0x5afe77,null));};exports[_0x247d('0x29')]=function(_0x13b428,_0x51740e){if(_0x13b428[_0x247d('0x51')]['id']){delete _0x13b428['body']['id'];}return db[_0x247d('0x48')][_0x247d('0x56')]({'where':{'id':_0x13b428[_0x247d('0x5a')]['id']}})[_0x247d('0x2a')](handleEntityNotFound(_0x51740e,null))['then'](saveUpdates(_0x13b428[_0x247d('0x51')],null))[_0x247d('0x2a')](respondWithResult(_0x51740e,null))[_0x247d('0x4d')](handleError(_0x51740e,null));};exports['destroy']=function(_0x191775,_0x1e471a){return db[_0x247d('0x48')][_0x247d('0x56')]({'where':{'id':_0x191775[_0x247d('0x5a')]['id']}})[_0x247d('0x2a')](handleEntityNotFound(_0x1e471a,null))[_0x247d('0x2a')](removeEntity(_0x1e471a,null))[_0x247d('0x4d')](handleError(_0x1e471a,null));};exports['describe']=function(_0x44d7cc,_0xa31c48){return db[_0x247d('0x48')][_0x247d('0x5b')]()['then'](respondWithResult(_0xa31c48,null))[_0x247d('0x4d')](handleError(_0xa31c48,null));};exports[_0x247d('0x5c')]=function(_0x25e137,_0x258088,_0x90eedb){if(_0x25e137['body']['id']){delete _0x25e137[_0x247d('0x51')]['id'];}return db[_0x247d('0x48')][_0x247d('0x56')]({'where':{'id':_0x25e137[_0x247d('0x5a')]['id']}})['then'](handleEntityNotFound(_0x258088,null))[_0x247d('0x2a')](function(_0x4461ca){if(_0x4461ca){_0x25e137[_0x247d('0x51')][_0x247d('0x5d')]=_0x4461ca['id'];return db[_0x247d('0x5e')][_0x247d('0x50')](_0x25e137[_0x247d('0x51')]);}})[_0x247d('0x2a')](respondWithResult(_0x258088,null))['catch'](handleError(_0x258088,null));};exports['getDispositions']=function(_0x4347f1,_0x1b6217,_0x19d9ce){var _0x383e54={'raw':![],'where':{}};var _0x582ad1={};var _0x5a74e3={'count':0x0,'rows':[]};return db[_0x247d('0x48')][_0x247d('0x5f')]({'where':{'id':_0x4347f1[_0x247d('0x5a')]['id']}})[_0x247d('0x2a')](handleEntityNotFound(_0x1b6217,null))[_0x247d('0x2a')](function(_0x1d6ae0){if(_0x1d6ae0){_0x582ad1[_0x247d('0x38')]=_[_0x247d('0x4f')](db[_0x247d('0x5e')][_0x247d('0x4e')]);_0x582ad1['query']=_[_0x247d('0x4f')](_0x4347f1[_0x247d('0x39')]);_0x582ad1[_0x247d('0x3a')]=_['intersection'](_0x582ad1['model'],_0x582ad1['query']);_0x383e54[_0x247d('0x3c')]=_[_0x247d('0x3b')](_0x582ad1[_0x247d('0x38')],qs[_0x247d('0x3d')](_0x4347f1[_0x247d('0x39')][_0x247d('0x3d')]));_0x383e54[_0x247d('0x3c')]=_0x383e54[_0x247d('0x3c')][_0x247d('0x3e')]?_0x383e54[_0x247d('0x3c')]:_0x582ad1[_0x247d('0x38')];if(!_0x4347f1[_0x247d('0x39')]['hasOwnProperty'](_0x247d('0x60'))){_0x383e54[_0x247d('0x24')]=qs[_0x247d('0x24')](_0x4347f1['query'][_0x247d('0x24')]);_0x383e54[_0x247d('0x22')]=qs[_0x247d('0x22')](_0x4347f1['query'][_0x247d('0x22')]);}_0x383e54[_0x247d('0x40')]=qs[_0x247d('0x41')](_0x4347f1[_0x247d('0x39')][_0x247d('0x41')]);_0x383e54[_0x247d('0x42')]=qs[_0x247d('0x3a')](_[_0x247d('0x43')](_0x4347f1[_0x247d('0x39')],_0x582ad1[_0x247d('0x3a')]));_0x383e54[_0x247d('0x42')][_0x247d('0x5d')]=_0x1d6ae0['id'];if(_0x4347f1[_0x247d('0x39')][_0x247d('0x44')]){_0x383e54[_0x247d('0x42')]=_[_0x247d('0x45')](_0x383e54['where'],{'$or':_[_0x247d('0x35')](_0x383e54[_0x247d('0x3c')],function(_0x5ac4bc){var _0x37ff97={};_0x37ff97[_0x5ac4bc]={'$like':'%'+_0x4347f1[_0x247d('0x39')][_0x247d('0x44')]+'%'};return _0x37ff97;})});}_0x383e54=_[_0x247d('0x45')]({},_0x383e54,_0x4347f1[_0x247d('0x47')]);return db[_0x247d('0x5e')][_0x247d('0x25')]({'where':_0x383e54[_0x247d('0x42')]})[_0x247d('0x2a')](function(_0x5d0c3f){_0x5a74e3['count']=_0x5d0c3f;if(_0x4347f1['query'][_0x247d('0x49')]){_0x383e54[_0x247d('0x4a')]=[{'all':!![]}];}return db[_0x247d('0x5e')][_0x247d('0x4b')](_0x383e54);})[_0x247d('0x2a')](function(_0x5b9aba){_0x5a74e3[_0x247d('0x4c')]=_0x5b9aba;return _0x5a74e3;});}})['then'](respondWithFilteredResult(_0x1b6217,_0x383e54))[_0x247d('0x4d')](handleError(_0x1b6217,null));};exports[_0x247d('0x61')]=function(_0x2671c0,_0x27496f,_0x56f522){return db[_0x247d('0x48')]['find']({'where':{'id':_0x2671c0[_0x247d('0x5a')]['id']}})[_0x247d('0x2a')](handleEntityNotFound(_0x27496f,null))[_0x247d('0x2a')](function(_0x41b716){if(_0x41b716){return _0x41b716[_0x247d('0x61')](_0x2671c0[_0x247d('0x39')][_0x247d('0x62')]);}})['then'](respondWithStatusCode(_0x27496f,null))['catch'](handleError(_0x27496f,null));};exports[_0x247d('0x63')]=function(_0x26d949,_0x400a93,_0x3be7ef){return db['CmList'][_0x247d('0x56')]({'where':{'id':_0x26d949[_0x247d('0x5a')]['id']}})['then'](handleEntityNotFound(_0x400a93,null))[_0x247d('0x2a')](function(_0x4ce926){if(_0x4ce926){var _0x4f8e12=[];var _0x351007={'success':[],'errors':[]};return db[_0x247d('0x64')][_0x247d('0x5b')]()[_0x247d('0x2a')](function(_0x45a77e){if(_0x26d949[_0x247d('0x51')][_0x247d('0x65')]&&_[_0x247d('0x66')](_0x26d949[_0x247d('0x51')][_0x247d('0x65')])){if(_0x26d949[_0x247d('0x51')][_0x247d('0x65')][_0x247d('0x3e')]){_0x26d949[_0x247d('0x51')]['tags']=_0x26d949[_0x247d('0x51')]['tags']['join'](';')+';';}else{_0x26d949[_0x247d('0x51')]['tags']=null;}}else{_0x26d949[_0x247d('0x51')][_0x247d('0x65')]=null;}if(_0x26d949[_0x247d('0x51')]&&_[_0x247d('0x66')](_0x26d949[_0x247d('0x51')])){for(var _0x11d5f6=0x0;_0x11d5f6<_0x26d949[_0x247d('0x51')][_0x247d('0x3e')];_0x11d5f6+=0x1){_0x26d949[_0x247d('0x51')][_0x11d5f6][_0x247d('0x5d')]=_0x26d949[_0x247d('0x5a')]['id'];_0x4f8e12[_0x247d('0x67')](_0x26d949[_0x247d('0x51')][_0x11d5f6]);}return BPromise[_0x247d('0x68')](_0x4f8e12,function(_0x2a2616){return db[_0x247d('0x64')][_0x247d('0x50')](_['omit'](_0x2a2616,[_0x247d('0x62'),'id'])||{},{'fields':_[_0x247d('0x4f')](_0x45a77e),'raw':!![]})[_0x247d('0x2a')](function(_0xde5509){_0x351007[_0x247d('0x69')][_0x247d('0x67')](_0xde5509[_0x247d('0x6a')]);})[_0x247d('0x4d')](function(_0x3822ba){_0x351007[_0x247d('0x6b')][_0x247d('0x67')]({'data':_0x2a2616,'error':_0x3822ba['message']});});})[_0x247d('0x2a')](function(_0x3479e5){return _0x351007;})[_0x247d('0x4d')](function(_0x19776f){return _0x19776f;});}else{_0x400a93[_0x247d('0x21')](0x190)[_0x247d('0x6c')]({'message':_0x247d('0x6d')});}});}})[_0x247d('0x2a')](respondWithResult(_0x400a93,null))[_0x247d('0x4d')](handleError(_0x400a93,null));};exports[_0x247d('0x6e')]=function(_0x217173,_0xd659ea,_0x3bdf45){var _0x25f884;return db[_0x247d('0x48')]['find']({'where':{'id':_0x217173[_0x247d('0x5a')]['id']},'include':[{'model':db['CmCustomField'],'as':_0x247d('0x6f')}]})['then'](handleEntityNotFound(_0xd659ea,null))[_0x247d('0x2a')](function(_0xcb621a){if(_0xcb621a){_0x25f884=_0xcb621a;return db[_0x247d('0x64')][_0x247d('0x4e')];}})[_0x247d('0x2a')](function(_0x15a7a0){if(_0x15a7a0){var _0x1e6e3c={};var _0x3d51fa={};_0x3d51fa[_0x247d('0x38')]=_[_0x247d('0x70')](_[_0x247d('0x4f')](_0x15a7a0),_[_0x247d('0x35')](_0x25f884[_0x247d('0x6f')],function(_0x21b13b){return util[_0x247d('0x71')](_0x247d('0x72'),_0x21b13b['id']);}));_0x3d51fa[_0x247d('0x39')]=_[_0x247d('0x4f')](_0x217173[_0x247d('0x39')]);_0x3d51fa['filters']=_[_0x247d('0x3b')](_0x3d51fa[_0x247d('0x38')],_0x3d51fa[_0x247d('0x39')]);_0x1e6e3c[_0x247d('0x3c')]=_[_0x247d('0x3b')](_0x3d51fa[_0x247d('0x38')],qs['fields'](_0x217173[_0x247d('0x39')]['fields']));_0x1e6e3c[_0x247d('0x3c')]=_0x1e6e3c[_0x247d('0x3c')][_0x247d('0x3e')]?_0x1e6e3c[_0x247d('0x3c')]:_0x3d51fa[_0x247d('0x38')];if(!_0x217173[_0x247d('0x39')][_0x247d('0x3f')]('nolimit')){_0x1e6e3c['limit']=qs[_0x247d('0x24')](_0x217173[_0x247d('0x39')][_0x247d('0x24')]);_0x1e6e3c[_0x247d('0x22')]=qs[_0x247d('0x22')](_0x217173['query'][_0x247d('0x22')]);}_0x1e6e3c[_0x247d('0x40')]=qs[_0x247d('0x41')](_0x217173[_0x247d('0x39')][_0x247d('0x41')]);_0x1e6e3c[_0x247d('0x42')]=qs['filters'](_[_0x247d('0x43')](_0x217173['query'],_0x3d51fa['filters']));_0x1e6e3c[_0x247d('0x73')]=!![];if(_0x217173[_0x247d('0x39')]['filter']){_0x1e6e3c[_0x247d('0x42')]=_[_0x247d('0x45')](_0x1e6e3c[_0x247d('0x42')],{'$or':_[_0x247d('0x35')](_0x1e6e3c['attributes'],function(_0x1e6308){var _0x29bdea={};_0x29bdea[_0x1e6308]={'$like':'%'+_0x217173['query'][_0x247d('0x44')]+'%'};return _0x29bdea;})});}_0x1e6e3c=_[_0x247d('0x45')]({},_0x1e6e3c,_0x217173['options']);return _0x25f884[_0x247d('0x6e')](_0x1e6e3c);}})['then'](respondWithResult(_0xd659ea,null))[_0x247d('0x4d')](handleError(_0xd659ea,null));};exports[_0x247d('0x74')]=function(_0x1b4115,_0x1af44e,_0x195608){var _0x354b64;return db[_0x247d('0x48')][_0x247d('0x56')]({'where':{'id':_0x1b4115['params']['id']},'include':[{'model':db[_0x247d('0x75')],'as':_0x247d('0x6f')}]})[_0x247d('0x2a')](handleEntityNotFound(_0x1af44e,null))[_0x247d('0x2a')](function(_0x3fe4eb){if(_0x3fe4eb){_0x354b64=_0x3fe4eb;return db[_0x247d('0x64')][_0x247d('0x4e')];}})[_0x247d('0x2a')](function(_0x7f6368){if(_0x7f6368){var _0x7590d8={};var _0x528f33={};_0x528f33[_0x247d('0x38')]=_[_0x247d('0x70')](_[_0x247d('0x4f')](_0x7f6368),_[_0x247d('0x35')](_0x354b64[_0x247d('0x6f')],function(_0x4a5c1c){return util[_0x247d('0x71')](_0x247d('0x72'),_0x4a5c1c['id']);}));_0x528f33['query']=_['keys'](_0x1b4115[_0x247d('0x39')]);_0x528f33[_0x247d('0x3a')]=_[_0x247d('0x3b')](_0x528f33[_0x247d('0x38')],_0x528f33[_0x247d('0x39')]);_0x7590d8[_0x247d('0x3c')]=_[_0x247d('0x3b')](_0x528f33[_0x247d('0x38')],qs['fields'](_0x1b4115[_0x247d('0x39')]['fields']));_0x7590d8[_0x247d('0x3c')]=_0x7590d8[_0x247d('0x3c')][_0x247d('0x3e')]?_0x7590d8[_0x247d('0x3c')]:_0x528f33[_0x247d('0x38')];if(!_0x1b4115[_0x247d('0x39')][_0x247d('0x3f')](_0x247d('0x60'))){_0x7590d8[_0x247d('0x24')]=qs[_0x247d('0x24')](_0x1b4115[_0x247d('0x39')][_0x247d('0x24')]);_0x7590d8['offset']=qs[_0x247d('0x22')](_0x1b4115[_0x247d('0x39')][_0x247d('0x22')]);}_0x7590d8[_0x247d('0x40')]=qs['sort'](_0x1b4115[_0x247d('0x39')][_0x247d('0x41')]);_0x7590d8[_0x247d('0x42')]=qs[_0x247d('0x3a')](_[_0x247d('0x43')](_0x1b4115['query'],_0x528f33[_0x247d('0x3a')]));_0x7590d8['raw']=!![];if(_0x1b4115[_0x247d('0x39')][_0x247d('0x44')]){_0x7590d8[_0x247d('0x42')]=_[_0x247d('0x45')](_0x7590d8[_0x247d('0x42')],{'$or':_['map'](_0x7590d8[_0x247d('0x3c')],function(_0x45cca4){var _0x4d6912={};_0x4d6912[_0x45cca4]={'$like':'%'+_0x1b4115['query'][_0x247d('0x44')]+'%'};return _0x4d6912;})});}_0x7590d8=_[_0x247d('0x45')]({},_0x7590d8,_0x1b4115[_0x247d('0x47')]);return _0x354b64[_0x247d('0x6e')](_0x7590d8);}})[_0x247d('0x2a')](function(_0x198b21){if(!_[_0x247d('0x76')](_0x198b21)){var _0x1f8f7b=toCsv(_0x198b21);var _0x2ba419=Date[_0x247d('0x77')]();fs[_0x247d('0x78')](util[_0x247d('0x71')](_0x247d('0x79'),_0x354b64['id'],_0x2ba419),_0x1f8f7b);_0x1af44e[_0x247d('0x7a')](_0x247d('0x7b'),_0x247d('0x7c')+util['format'](_0x247d('0x7d'),_0x354b64['id'],_0x2ba419));_0x1af44e[_0x247d('0x7a')](_0x247d('0x7e'),_0x247d('0x7f'));return _0x1af44e[_0x247d('0x80')](util[_0x247d('0x71')]('/tmp/list_%d_%s.csv',_0x354b64['id'],_0x2ba419));}else{return _0x1af44e['sendStatus'](0xcc);}})['catch'](handleError(_0x1af44e,null));};exports['addCustomField']=function(_0x3c7033,_0x224dcc,_0x2e8bda){var _0x214981;delete _0x3c7033[_0x247d('0x51')]['id'];return db[_0x247d('0x48')][_0x247d('0x5f')]({'where':{'id':_0x3c7033[_0x247d('0x5a')]['id']}})['then'](handleEntityNotFound(_0x224dcc,null))['then'](function(_0x519fb7){if(_0x519fb7){return db['sequelize'][_0x247d('0x81')](function(_0x54dd2a){return db[_0x247d('0x75')]['create'](_0x3c7033['body'],{'transaction':_0x54dd2a})['then'](function(_0x31a2fb){_0x214981=_0x31a2fb;return _0x519fb7[_0x247d('0x82')](_0x31a2fb,{'transaction':_0x54dd2a});})[_0x247d('0x2a')](function(){var _0x2dc79a={'type':db[_0x247d('0x83')]['TEXT'],'transaction':_0x54dd2a};switch(_0x3c7033['body'][_0x247d('0x37')]){case _0x247d('0x84'):_0x2dc79a[_0x247d('0x37')]=db[_0x247d('0x83')][_0x247d('0x85')];break;case _0x247d('0x86'):_0x2dc79a[_0x247d('0x37')]=db['Sequelize'][_0x247d('0x87')];break;case _0x247d('0x88'):_0x2dc79a[_0x247d('0x37')]=db['Sequelize'][_0x247d('0x89')];_0x2dc79a['defaultValue']=![];break;default:}return db[_0x247d('0x8a')][_0x247d('0x8b')][_0x247d('0x8c')]('cm_contacts',util['format'](_0x247d('0x8d'),_0x214981['id']),_0x2dc79a);})[_0x247d('0x2a')](function(){return _0x214981;});});}})[_0x247d('0x2a')](respondWithResult(_0x224dcc,null))['catch'](handleError(_0x224dcc,null));};exports[_0x247d('0x8e')]=function(_0x4e750f,_0x51cc90,_0x1cabd1){var _0x2aabe6={};var _0xed2cb6={};var _0x16d021;var _0x2c81fc;return db['CmList'][_0x247d('0x5f')]({'where':{'id':_0x4e750f[_0x247d('0x5a')]['id']}})['then'](handleEntityNotFound(_0x51cc90,null))[_0x247d('0x2a')](function(_0x2fffb7){if(_0x2fffb7){_0x16d021=_0x2fffb7;_0xed2cb6[_0x247d('0x38')]=_[_0x247d('0x4f')](db['CmCustomField'][_0x247d('0x4e')]);_0xed2cb6['query']=_[_0x247d('0x4f')](_0x4e750f[_0x247d('0x39')]);_0xed2cb6[_0x247d('0x3a')]=_[_0x247d('0x3b')](_0xed2cb6[_0x247d('0x38')],_0xed2cb6[_0x247d('0x39')]);_0x2aabe6[_0x247d('0x3c')]=_[_0x247d('0x3b')](_0xed2cb6['model'],qs[_0x247d('0x3d')](_0x4e750f[_0x247d('0x39')][_0x247d('0x3d')]));_0x2aabe6[_0x247d('0x3c')]=_0x2aabe6[_0x247d('0x3c')][_0x247d('0x3e')]?_0x2aabe6[_0x247d('0x3c')]:_0xed2cb6[_0x247d('0x38')];_0x2aabe6[_0x247d('0x40')]=qs[_0x247d('0x41')](_0x4e750f['query'][_0x247d('0x41')]);_0x2aabe6['where']=qs[_0x247d('0x3a')](_[_0x247d('0x43')](_0x4e750f[_0x247d('0x39')],_0xed2cb6['filters']));_0x2aabe6[_0x247d('0x42')]=_[_0x247d('0x45')](_0x2aabe6[_0x247d('0x42')],{'$or':[{'ListId':_0x2fffb7['id']},{'ListId':null}]});if(_0x4e750f[_0x247d('0x39')]['filter']){_0x2aabe6[_0x247d('0x42')]=_['merge'](_0x2aabe6[_0x247d('0x42')],{'$or':_['map'](_0x2aabe6[_0x247d('0x3c')],function(_0xd09a88){var _0x5ad299={};_0x5ad299[_0xd09a88]={'$like':'%'+_0x4e750f[_0x247d('0x39')]['filter']+'%'};return _0x5ad299;})});}_0x2aabe6=_[_0x247d('0x45')]({},_0x2aabe6,_0x4e750f['options']);return db['CmCustomField'][_0x247d('0x8f')](_0x2aabe6);}})[_0x247d('0x2a')](respondWithResult(_0x51cc90,null))[_0x247d('0x4d')](handleError(_0x51cc90,null));};exports[_0x247d('0x90')]=function(_0x3a370f,_0x4ba0a8,_0x272741){return db[_0x247d('0x48')][_0x247d('0x56')]({'where':{'id':_0x3a370f[_0x247d('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4ba0a8,null))['then'](function(_0x25c10c){if(_0x25c10c){return _0x25c10c[_0x247d('0x90')](_0x3a370f[_0x247d('0x51')][_0x247d('0x62')],_[_0x247d('0x91')](_0x3a370f[_0x247d('0x51')],[_0x247d('0x62'),'id'])||{})[_0x247d('0x92')](function(_0x2f3f72){for(var _0x360445=0x0;_0x360445<_0x3a370f['body'][_0x247d('0x62')][_0x247d('0x3e')];_0x360445+=0x1){socket['emit'](_0x247d('0x93'),{'UserId':Number(_0x3a370f[_0x247d('0x51')][_0x247d('0x62')][_0x360445]),'CmListId':Number(_0x3a370f[_0x247d('0x5a')]['id'])});}return _0x2f3f72;});}})[_0x247d('0x2a')](respondWithResult(_0x4ba0a8,null))['catch'](handleError(_0x4ba0a8,null));};exports[_0x247d('0x94')]=function(_0x293516,_0x4bce64,_0x4ae503){return db[_0x247d('0x48')]['find']({'where':{'id':_0x293516[_0x247d('0x5a')]['id']}})[_0x247d('0x2a')](handleEntityNotFound(_0x4bce64,null))[_0x247d('0x2a')](function(_0x65b32c){if(_0x65b32c){return _0x65b32c[_0x247d('0x94')](_0x293516[_0x247d('0x39')][_0x247d('0x62')])[_0x247d('0x2a')](function(){if(_[_0x247d('0x66')](_0x293516[_0x247d('0x39')]['ids'])){for(var _0x376e6e=0x0;_0x376e6e<_0x293516[_0x247d('0x39')][_0x247d('0x62')][_0x247d('0x3e')];_0x376e6e+=0x1){socket[_0x247d('0x95')](_0x247d('0x96'),{'UserId':Number(_0x293516[_0x247d('0x39')]['ids'][_0x376e6e]),'CmListId':Number(_0x293516['params']['id'])});}}else{socket[_0x247d('0x95')](_0x247d('0x96'),{'UserId':Number(_0x293516[_0x247d('0x39')][_0x247d('0x62')]),'CmListId':Number(_0x293516[_0x247d('0x5a')]['id'])});}});}})[_0x247d('0x2a')](respondWithStatusCode(_0x4bce64,null))['catch'](handleError(_0x4bce64,null));};exports[_0x247d('0x97')]=function(_0x36b151,_0x47ac4b,_0x3ece31){var _0x3c5983={};var _0x10a383={};var _0x396821;var _0x51c851;return db[_0x247d('0x48')][_0x247d('0x5f')]({'where':{'id':_0x36b151[_0x247d('0x5a')]['id']}})[_0x247d('0x2a')](handleEntityNotFound(_0x47ac4b,null))[_0x247d('0x2a')](function(_0x4954d7){if(_0x4954d7){_0x396821=_0x4954d7;_0x10a383[_0x247d('0x38')]=_['keys'](db[_0x247d('0x98')][_0x247d('0x4e')]);_0x10a383['query']=_[_0x247d('0x4f')](_0x36b151['query']);_0x10a383['filters']=_[_0x247d('0x3b')](_0x10a383[_0x247d('0x38')],_0x10a383[_0x247d('0x39')]);_0x3c5983['attributes']=_[_0x247d('0x3b')](_0x10a383[_0x247d('0x38')],qs[_0x247d('0x3d')](_0x36b151['query']['fields']));_0x3c5983[_0x247d('0x3c')]=_0x3c5983[_0x247d('0x3c')]['length']?_0x3c5983[_0x247d('0x3c')]:_0x10a383[_0x247d('0x38')];_0x3c5983[_0x247d('0x40')]=qs[_0x247d('0x41')](_0x36b151[_0x247d('0x39')][_0x247d('0x41')]);_0x3c5983['where']=qs['filters'](_[_0x247d('0x43')](_0x36b151[_0x247d('0x39')],_0x10a383['filters']));if(_0x36b151['query'][_0x247d('0x44')]){_0x3c5983[_0x247d('0x42')]=_[_0x247d('0x45')](_0x3c5983[_0x247d('0x42')],{'$or':_[_0x247d('0x35')](_0x3c5983[_0x247d('0x3c')],function(_0x1fedc0){var _0x50587a={};_0x50587a[_0x1fedc0]={'$like':'%'+_0x36b151[_0x247d('0x39')][_0x247d('0x44')]+'%'};return _0x50587a;})});}_0x3c5983=_[_0x247d('0x45')]({},_0x3c5983,_0x36b151[_0x247d('0x47')]);return _0x396821[_0x247d('0x97')](_0x3c5983);}})[_0x247d('0x2a')](function(_0x139a08){if(_0x139a08){_0x51c851=_0x139a08[_0x247d('0x3e')];if(!_0x36b151['query'][_0x247d('0x3f')](_0x247d('0x60'))){_0x3c5983[_0x247d('0x24')]=qs[_0x247d('0x24')](_0x36b151[_0x247d('0x39')][_0x247d('0x24')]);_0x3c5983['offset']=qs[_0x247d('0x22')](_0x36b151['query']['offset']);}return _0x396821[_0x247d('0x97')](_0x3c5983);}})[_0x247d('0x2a')](function(_0x1635ad){if(_0x1635ad){return _0x1635ad?{'count':_0x51c851,'rows':_0x1635ad}:null;}})[_0x247d('0x2a')](respondWithResult(_0x47ac4b,null))['catch'](handleError(_0x47ac4b,null));};
\ No newline at end of file
+var _0x90c1=['Sequelize','TEXT','text','number','queryInterface','addColumn','cm_contacts','cf_%s','getCustomFields','findAndCountAll','addAgents','spread','userCmList:save','removeAgents','emit','userCmList:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','update','then','get','Lists','name','send','map','CmList','rawAttributes','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','keys','find','catch','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','params','ListId','Disposition','getDispositions','removeDispositions','addContacts','CmContact','tags','isArray','join','push','each','omit','ids','success','dataValues','errors','message','getContacts','CustomFields','concat','cf_%d','raw','getContactsCsv','CmCustomField','format','now','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Content-type','text/csv','download','addCustomField','findOne','sequelize'];(function(_0x29dc85,_0x3e2100){var _0x41d113=function(_0x4e7bcf){while(--_0x4e7bcf){_0x29dc85['push'](_0x29dc85['shift']());}};_0x41d113(++_0x3e2100);}(_0x90c1,0x9b));var _0x190c=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x90c1[_0x59ee6f];return _0x4c0979;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x190c('0x0'));var zipdir=require(_0x190c('0x1'));var jsonpatch=require(_0x190c('0x2'));var rp=require(_0x190c('0x3'));var moment=require(_0x190c('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x190c('0x5'));var util=require(_0x190c('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x190c('0x7'));var ejs=require(_0x190c('0x8'));var fs=require('fs');var fs_extra=require(_0x190c('0x9'));var _=require(_0x190c('0xa'));var squel=require(_0x190c('0xb'));var crypto=require(_0x190c('0xc'));var jsforce=require(_0x190c('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x190c('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x190c('0xf'));var qs=require(_0x190c('0x10'));var as=require(_0x190c('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x190c('0x12'));var utils=require(_0x190c('0x13'));var config=require(_0x190c('0x14'));var licenseUtil=require(_0x190c('0x15'));var db=require(_0x190c('0x16'))['db'];config[_0x190c('0x17')]=_[_0x190c('0x18')](config[_0x190c('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x190c('0x19'))(new Redis(config[_0x190c('0x17')]));require('./cmList.socket')[_0x190c('0x1a')](socket);function respondWithStatusCode(_0x196589,_0x22cf87){_0x22cf87=_0x22cf87||0xcc;return function(_0x14dd63){if(_0x14dd63){return _0x196589[_0x190c('0x1b')](_0x22cf87);}return _0x196589[_0x190c('0x1c')](_0x22cf87)[_0x190c('0x1d')]();};}function respondWithResult(_0x533c72,_0x33ee6e){_0x33ee6e=_0x33ee6e||0xc8;return function(_0x520f43){if(_0x520f43){return _0x533c72[_0x190c('0x1c')](_0x33ee6e)['json'](_0x520f43);}};}function respondWithFilteredResult(_0x5edde1,_0x417ca3){return function(_0x41368b){if(_0x41368b){var _0x571b87=typeof _0x417ca3[_0x190c('0x1e')]===_0x190c('0x1f')&&typeof _0x417ca3[_0x190c('0x20')]===_0x190c('0x1f');var _0x175ccc=_0x41368b[_0x190c('0x21')];var _0x35c02b=_0x571b87?0x0:_0x417ca3[_0x190c('0x1e')];var _0x993e35=_0x571b87?_0x41368b[_0x190c('0x21')]:_0x417ca3[_0x190c('0x1e')]+_0x417ca3[_0x190c('0x20')];var _0x434870;if(_0x993e35>=_0x175ccc){_0x993e35=_0x175ccc;_0x434870=0xc8;}else{_0x434870=0xce;}_0x5edde1[_0x190c('0x1c')](_0x434870);return _0x5edde1['set'](_0x190c('0x22'),_0x35c02b+'-'+_0x993e35+'/'+_0x175ccc)[_0x190c('0x23')](_0x41368b);}return null;};}function patchUpdates(_0x5d677f){return function(_0x3fd5eb){try{jsonpatch[_0x190c('0x24')](_0x3fd5eb,_0x5d677f,!![]);}catch(_0x3a0cba){return BPromise[_0x190c('0x25')](_0x3a0cba);}return _0x3fd5eb['save']();};}function saveUpdates(_0x1e90ae,_0x48e097){return function(_0x24e1a8){if(_0x24e1a8){return _0x24e1a8[_0x190c('0x26')](_0x1e90ae)[_0x190c('0x27')](function(_0x332b33){return _0x332b33;});}return null;};}function removeEntity(_0x161f21,_0x26e350){return function(_0x7ff990){if(_0x7ff990){return _0x7ff990['destroy']()[_0x190c('0x27')](function(){var _0xb29f02=_0x7ff990[_0x190c('0x28')]({'plain':!![]});var _0x4f10b4=_0x190c('0x29');return db['UserProfileResource']['destroy']({'where':{'type':_0x4f10b4,'resourceId':_0xb29f02['id']}})[_0x190c('0x27')](function(){return _0x7ff990;});})['then'](function(){_0x161f21[_0x190c('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x57f8be,_0x24c142){return function(_0xad0636){if(!_0xad0636){_0x57f8be[_0x190c('0x1b')](0x194);}return _0xad0636;};}function handleError(_0x58b079,_0x2f246a){_0x2f246a=_0x2f246a||0x1f4;return function(_0x43adff){logger['error'](_0x43adff['stack']);if(_0x43adff[_0x190c('0x2a')]){delete _0x43adff[_0x190c('0x2a')];}_0x58b079[_0x190c('0x1c')](_0x2f246a)[_0x190c('0x2b')](_0x43adff);};}exports['index']=function(_0x429943,_0x16f268){var _0x59d408={},_0x55d0ae={},_0x2197bc={'count':0x0,'rows':[]};var _0x106b87=_[_0x190c('0x2c')](db[_0x190c('0x2d')][_0x190c('0x2e')],function(_0x44c06f){return{'name':_0x44c06f['fieldName'],'type':_0x44c06f[_0x190c('0x2f')]['key']};});_0x55d0ae[_0x190c('0x30')]=_[_0x190c('0x2c')](_0x106b87,_0x190c('0x2a'));_0x55d0ae[_0x190c('0x31')]=_['keys'](_0x429943[_0x190c('0x31')]);_0x55d0ae[_0x190c('0x32')]=_[_0x190c('0x33')](_0x55d0ae['model'],_0x55d0ae[_0x190c('0x31')]);_0x59d408[_0x190c('0x34')]=_['intersection'](_0x55d0ae[_0x190c('0x30')],qs[_0x190c('0x35')](_0x429943[_0x190c('0x31')]['fields']));_0x59d408['attributes']=_0x59d408[_0x190c('0x34')][_0x190c('0x36')]?_0x59d408['attributes']:_0x55d0ae[_0x190c('0x30')];if(!_0x429943['query'][_0x190c('0x37')](_0x190c('0x38'))){_0x59d408[_0x190c('0x20')]=qs[_0x190c('0x20')](_0x429943['query'][_0x190c('0x20')]);_0x59d408[_0x190c('0x1e')]=qs['offset'](_0x429943[_0x190c('0x31')][_0x190c('0x1e')]);}_0x59d408[_0x190c('0x39')]=qs[_0x190c('0x3a')](_0x429943[_0x190c('0x31')]['sort']);_0x59d408['where']=qs[_0x190c('0x32')](_[_0x190c('0x3b')](_0x429943[_0x190c('0x31')],_0x55d0ae[_0x190c('0x32')]),_0x106b87);if(_0x429943[_0x190c('0x31')][_0x190c('0x3c')]){_0x59d408['where']=_['merge'](_0x59d408[_0x190c('0x3d')],{'$or':_[_0x190c('0x2c')](_0x106b87,function(_0x5b414c){if(_0x5b414c[_0x190c('0x2f')]!==_0x190c('0x3e')){var _0x3c32c9={};_0x3c32c9[_0x5b414c[_0x190c('0x2a')]]={'$like':'%'+_0x429943[_0x190c('0x31')][_0x190c('0x3c')]+'%'};return _0x3c32c9;}})});}_0x59d408=_[_0x190c('0x3f')]({},_0x59d408,_0x429943[_0x190c('0x40')]);var _0x119e9a={'where':_0x59d408[_0x190c('0x3d')]};return db[_0x190c('0x2d')][_0x190c('0x21')](_0x119e9a)[_0x190c('0x27')](function(_0x534c5d){_0x2197bc[_0x190c('0x21')]=_0x534c5d;if(_0x429943[_0x190c('0x31')][_0x190c('0x41')]){_0x59d408[_0x190c('0x42')]=[{'all':!![]}];}return db['CmList'][_0x190c('0x43')](_0x59d408);})[_0x190c('0x27')](function(_0x4d836e){_0x2197bc[_0x190c('0x44')]=_0x4d836e;return _0x2197bc;})[_0x190c('0x27')](respondWithFilteredResult(_0x16f268,_0x59d408))['catch'](handleError(_0x16f268,null));};exports['show']=function(_0x12b9e1,_0x423e30){var _0x4aae92={'raw':![],'where':{'id':_0x12b9e1['params']['id']}},_0x8e33eb={};_0x8e33eb[_0x190c('0x30')]=_[_0x190c('0x45')](db[_0x190c('0x2d')][_0x190c('0x2e')]);_0x8e33eb[_0x190c('0x31')]=_[_0x190c('0x45')](_0x12b9e1[_0x190c('0x31')]);_0x8e33eb[_0x190c('0x32')]=_['intersection'](_0x8e33eb[_0x190c('0x30')],_0x8e33eb[_0x190c('0x31')]);_0x4aae92['attributes']=_['intersection'](_0x8e33eb[_0x190c('0x30')],qs['fields'](_0x12b9e1[_0x190c('0x31')][_0x190c('0x35')]));_0x4aae92[_0x190c('0x34')]=_0x4aae92[_0x190c('0x34')]['length']?_0x4aae92[_0x190c('0x34')]:_0x8e33eb[_0x190c('0x30')];if(_0x12b9e1['query'][_0x190c('0x41')]){_0x4aae92[_0x190c('0x42')]=[{'all':!![]}];}_0x4aae92=_[_0x190c('0x3f')]({},_0x4aae92,_0x12b9e1['options']);return db['CmList'][_0x190c('0x46')](_0x4aae92)['then'](handleEntityNotFound(_0x423e30,null))[_0x190c('0x27')](respondWithResult(_0x423e30,null))[_0x190c('0x47')](handleError(_0x423e30,null));};exports[_0x190c('0x48')]=function(_0x2e0ca7,_0x1d7ecb){return db[_0x190c('0x2d')][_0x190c('0x48')](_0x2e0ca7[_0x190c('0x49')],{})[_0x190c('0x27')](function(_0x3f9eb7){var _0x1a1bfe=_0x2e0ca7[_0x190c('0x4a')][_0x190c('0x28')]({'plain':!![]});if(!_0x1a1bfe)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1a1bfe[_0x190c('0x4b')]===_0x190c('0x4a')){var _0x2d6c82=_0x3f9eb7[_0x190c('0x28')]({'plain':!![]});var _0x23a48e=_0x190c('0x29');return db[_0x190c('0x4c')][_0x190c('0x46')]({'where':{'name':_0x23a48e,'userProfileId':_0x1a1bfe[_0x190c('0x4d')]},'raw':!![]})['then'](function(_0x7bda6d){if(_0x7bda6d&&_0x7bda6d[_0x190c('0x4e')]===0x0){return db[_0x190c('0x4f')][_0x190c('0x48')]({'name':_0x2d6c82[_0x190c('0x2a')],'resourceId':_0x2d6c82['id'],'type':_0x7bda6d['name'],'sectionId':_0x7bda6d['id']},{})['then'](function(){return _0x3f9eb7;});}else{return _0x3f9eb7;}})[_0x190c('0x47')](function(_0x44371f){logger[_0x190c('0x50')](_0x190c('0x51'),_0x44371f);throw _0x44371f;});}return _0x3f9eb7;})[_0x190c('0x27')](respondWithResult(_0x1d7ecb,0xc9))[_0x190c('0x47')](handleError(_0x1d7ecb,null));};exports['update']=function(_0x5969a5,_0x4702c0){if(_0x5969a5['body']['id']){delete _0x5969a5[_0x190c('0x49')]['id'];}return db[_0x190c('0x2d')][_0x190c('0x46')]({'where':{'id':_0x5969a5['params']['id']}})[_0x190c('0x27')](handleEntityNotFound(_0x4702c0,null))['then'](saveUpdates(_0x5969a5[_0x190c('0x49')],null))[_0x190c('0x27')](respondWithResult(_0x4702c0,null))[_0x190c('0x47')](handleError(_0x4702c0,null));};exports['destroy']=function(_0x3f18e5,_0x1d81d9){return db[_0x190c('0x2d')][_0x190c('0x46')]({'where':{'id':_0x3f18e5['params']['id']}})[_0x190c('0x27')](handleEntityNotFound(_0x1d81d9,null))[_0x190c('0x27')](removeEntity(_0x1d81d9,null))[_0x190c('0x47')](handleError(_0x1d81d9,null));};exports['describe']=function(_0x281eed,_0x37831d){return db[_0x190c('0x2d')][_0x190c('0x52')]()[_0x190c('0x27')](respondWithResult(_0x37831d,null))[_0x190c('0x47')](handleError(_0x37831d,null));};exports[_0x190c('0x53')]=function(_0x17a0b0,_0x471d67,_0x13a877){if(_0x17a0b0['body']['id']){delete _0x17a0b0['body']['id'];}return db['CmList'][_0x190c('0x46')]({'where':{'id':_0x17a0b0[_0x190c('0x54')]['id']}})[_0x190c('0x27')](handleEntityNotFound(_0x471d67,null))['then'](function(_0x247bdc){if(_0x247bdc){_0x17a0b0[_0x190c('0x49')][_0x190c('0x55')]=_0x247bdc['id'];return db[_0x190c('0x56')][_0x190c('0x48')](_0x17a0b0[_0x190c('0x49')]);}})[_0x190c('0x27')](respondWithResult(_0x471d67,null))[_0x190c('0x47')](handleError(_0x471d67,null));};exports[_0x190c('0x57')]=function(_0x4cc432,_0x3814a5,_0xd1f017){var _0x18a0d6={'raw':![],'where':{}};var _0x1d660e={};var _0x20ed0b={'count':0x0,'rows':[]};return db[_0x190c('0x2d')]['findOne']({'where':{'id':_0x4cc432['params']['id']}})['then'](handleEntityNotFound(_0x3814a5,null))[_0x190c('0x27')](function(_0x487a0d){if(_0x487a0d){_0x1d660e[_0x190c('0x30')]=_[_0x190c('0x45')](db[_0x190c('0x56')][_0x190c('0x2e')]);_0x1d660e[_0x190c('0x31')]=_['keys'](_0x4cc432[_0x190c('0x31')]);_0x1d660e[_0x190c('0x32')]=_[_0x190c('0x33')](_0x1d660e[_0x190c('0x30')],_0x1d660e['query']);_0x18a0d6[_0x190c('0x34')]=_[_0x190c('0x33')](_0x1d660e[_0x190c('0x30')],qs[_0x190c('0x35')](_0x4cc432[_0x190c('0x31')][_0x190c('0x35')]));_0x18a0d6[_0x190c('0x34')]=_0x18a0d6[_0x190c('0x34')][_0x190c('0x36')]?_0x18a0d6[_0x190c('0x34')]:_0x1d660e['model'];if(!_0x4cc432[_0x190c('0x31')][_0x190c('0x37')]('nolimit')){_0x18a0d6[_0x190c('0x20')]=qs[_0x190c('0x20')](_0x4cc432[_0x190c('0x31')][_0x190c('0x20')]);_0x18a0d6[_0x190c('0x1e')]=qs[_0x190c('0x1e')](_0x4cc432[_0x190c('0x31')][_0x190c('0x1e')]);}_0x18a0d6[_0x190c('0x39')]=qs[_0x190c('0x3a')](_0x4cc432[_0x190c('0x31')][_0x190c('0x3a')]);_0x18a0d6[_0x190c('0x3d')]=qs[_0x190c('0x32')](_[_0x190c('0x3b')](_0x4cc432[_0x190c('0x31')],_0x1d660e[_0x190c('0x32')]));_0x18a0d6['where']['ListId']=_0x487a0d['id'];if(_0x4cc432[_0x190c('0x31')][_0x190c('0x3c')]){_0x18a0d6['where']=_[_0x190c('0x3f')](_0x18a0d6[_0x190c('0x3d')],{'$or':_[_0x190c('0x2c')](_0x18a0d6['attributes'],function(_0x1c7644){var _0x870c8a={};_0x870c8a[_0x1c7644]={'$like':'%'+_0x4cc432[_0x190c('0x31')][_0x190c('0x3c')]+'%'};return _0x870c8a;})});}_0x18a0d6=_[_0x190c('0x3f')]({},_0x18a0d6,_0x4cc432['options']);return db[_0x190c('0x56')]['count']({'where':_0x18a0d6['where']})[_0x190c('0x27')](function(_0x5c3898){_0x20ed0b['count']=_0x5c3898;if(_0x4cc432[_0x190c('0x31')][_0x190c('0x41')]){_0x18a0d6[_0x190c('0x42')]=[{'all':!![]}];}return db[_0x190c('0x56')]['findAll'](_0x18a0d6);})['then'](function(_0x550f61){_0x20ed0b[_0x190c('0x44')]=_0x550f61;return _0x20ed0b;});}})[_0x190c('0x27')](respondWithFilteredResult(_0x3814a5,_0x18a0d6))[_0x190c('0x47')](handleError(_0x3814a5,null));};exports[_0x190c('0x58')]=function(_0x192fa0,_0x335e1c,_0x49f28a){return db[_0x190c('0x2d')]['find']({'where':{'id':_0x192fa0[_0x190c('0x54')]['id']}})[_0x190c('0x27')](handleEntityNotFound(_0x335e1c,null))[_0x190c('0x27')](function(_0x27344c){if(_0x27344c){return _0x27344c[_0x190c('0x58')](_0x192fa0['query']['ids']);}})[_0x190c('0x27')](respondWithStatusCode(_0x335e1c,null))['catch'](handleError(_0x335e1c,null));};exports[_0x190c('0x59')]=function(_0x31401e,_0x5c1a9a,_0x35232d){return db[_0x190c('0x2d')][_0x190c('0x46')]({'where':{'id':_0x31401e[_0x190c('0x54')]['id']}})[_0x190c('0x27')](handleEntityNotFound(_0x5c1a9a,null))[_0x190c('0x27')](function(_0x18b644){if(_0x18b644){var _0x5b9dd9=[];var _0x17511b={'success':[],'errors':[]};return db[_0x190c('0x5a')]['describe']()['then'](function(_0x49393e){if(_0x31401e['body'][_0x190c('0x5b')]&&_[_0x190c('0x5c')](_0x31401e[_0x190c('0x49')]['tags'])){if(_0x31401e[_0x190c('0x49')][_0x190c('0x5b')][_0x190c('0x36')]){_0x31401e[_0x190c('0x49')]['tags']=_0x31401e[_0x190c('0x49')][_0x190c('0x5b')][_0x190c('0x5d')](';')+';';}else{_0x31401e[_0x190c('0x49')][_0x190c('0x5b')]=null;}}else{_0x31401e[_0x190c('0x49')][_0x190c('0x5b')]=null;}if(_0x31401e[_0x190c('0x49')]&&_[_0x190c('0x5c')](_0x31401e['body'])){for(var _0x3d90f8=0x0;_0x3d90f8<_0x31401e[_0x190c('0x49')]['length'];_0x3d90f8+=0x1){_0x31401e[_0x190c('0x49')][_0x3d90f8]['ListId']=_0x31401e[_0x190c('0x54')]['id'];_0x5b9dd9[_0x190c('0x5e')](_0x31401e[_0x190c('0x49')][_0x3d90f8]);}return BPromise[_0x190c('0x5f')](_0x5b9dd9,function(_0x2d1456){return db[_0x190c('0x5a')][_0x190c('0x48')](_[_0x190c('0x60')](_0x2d1456,[_0x190c('0x61'),'id'])||{},{'fields':_[_0x190c('0x45')](_0x49393e),'raw':!![]})['then'](function(_0x6e5340){_0x17511b[_0x190c('0x62')][_0x190c('0x5e')](_0x6e5340[_0x190c('0x63')]);})['catch'](function(_0x28e65b){_0x17511b[_0x190c('0x64')][_0x190c('0x5e')]({'data':_0x2d1456,'error':_0x28e65b[_0x190c('0x65')]});});})[_0x190c('0x27')](function(_0x3dc856){return _0x17511b;})[_0x190c('0x47')](function(_0x5d6dc7){return _0x5d6dc7;});}else{_0x5c1a9a[_0x190c('0x1c')](0x190)[_0x190c('0x23')]({'message':'Malformed\x20request\x20syntax'});}});}})[_0x190c('0x27')](respondWithResult(_0x5c1a9a,null))['catch'](handleError(_0x5c1a9a,null));};exports[_0x190c('0x66')]=function(_0x3d3bee,_0x4c1489,_0x2a04a0){var _0x3ddfb0;return db[_0x190c('0x2d')][_0x190c('0x46')]({'where':{'id':_0x3d3bee[_0x190c('0x54')]['id']},'include':[{'model':db['CmCustomField'],'as':_0x190c('0x67')}]})[_0x190c('0x27')](handleEntityNotFound(_0x4c1489,null))[_0x190c('0x27')](function(_0x4f8616){if(_0x4f8616){_0x3ddfb0=_0x4f8616;return db[_0x190c('0x5a')]['rawAttributes'];}})[_0x190c('0x27')](function(_0xf3b69a){if(_0xf3b69a){var _0x6b648f={};var _0x4570e5={};_0x4570e5[_0x190c('0x30')]=_[_0x190c('0x68')](_[_0x190c('0x45')](_0xf3b69a),_[_0x190c('0x2c')](_0x3ddfb0[_0x190c('0x67')],function(_0x3a68ed){return util['format'](_0x190c('0x69'),_0x3a68ed['id']);}));_0x4570e5[_0x190c('0x31')]=_[_0x190c('0x45')](_0x3d3bee['query']);_0x4570e5[_0x190c('0x32')]=_['intersection'](_0x4570e5[_0x190c('0x30')],_0x4570e5[_0x190c('0x31')]);_0x6b648f[_0x190c('0x34')]=_[_0x190c('0x33')](_0x4570e5[_0x190c('0x30')],qs['fields'](_0x3d3bee[_0x190c('0x31')][_0x190c('0x35')]));_0x6b648f['attributes']=_0x6b648f['attributes'][_0x190c('0x36')]?_0x6b648f['attributes']:_0x4570e5[_0x190c('0x30')];if(!_0x3d3bee['query']['hasOwnProperty']('nolimit')){_0x6b648f[_0x190c('0x20')]=qs[_0x190c('0x20')](_0x3d3bee[_0x190c('0x31')]['limit']);_0x6b648f[_0x190c('0x1e')]=qs[_0x190c('0x1e')](_0x3d3bee[_0x190c('0x31')][_0x190c('0x1e')]);}_0x6b648f[_0x190c('0x39')]=qs[_0x190c('0x3a')](_0x3d3bee[_0x190c('0x31')][_0x190c('0x3a')]);_0x6b648f[_0x190c('0x3d')]=qs[_0x190c('0x32')](_[_0x190c('0x3b')](_0x3d3bee[_0x190c('0x31')],_0x4570e5[_0x190c('0x32')]));_0x6b648f[_0x190c('0x6a')]=!![];if(_0x3d3bee[_0x190c('0x31')]['filter']){_0x6b648f['where']=_[_0x190c('0x3f')](_0x6b648f[_0x190c('0x3d')],{'$or':_['map'](_0x6b648f[_0x190c('0x34')],function(_0x26f119){var _0x17e064={};_0x17e064[_0x26f119]={'$like':'%'+_0x3d3bee[_0x190c('0x31')][_0x190c('0x3c')]+'%'};return _0x17e064;})});}_0x6b648f=_[_0x190c('0x3f')]({},_0x6b648f,_0x3d3bee[_0x190c('0x40')]);return _0x3ddfb0[_0x190c('0x66')](_0x6b648f);}})[_0x190c('0x27')](respondWithResult(_0x4c1489,null))[_0x190c('0x47')](handleError(_0x4c1489,null));};exports[_0x190c('0x6b')]=function(_0x2bfd34,_0x304ce0,_0x3dbd82){var _0x3c5661;return db[_0x190c('0x2d')][_0x190c('0x46')]({'where':{'id':_0x2bfd34[_0x190c('0x54')]['id']},'include':[{'model':db[_0x190c('0x6c')],'as':_0x190c('0x67')}]})['then'](handleEntityNotFound(_0x304ce0,null))['then'](function(_0x585f7e){if(_0x585f7e){_0x3c5661=_0x585f7e;return db[_0x190c('0x5a')][_0x190c('0x2e')];}})['then'](function(_0x439f3d){if(_0x439f3d){var _0x1bf3c7={};var _0x3cc5de={};_0x3cc5de['model']=_[_0x190c('0x68')](_[_0x190c('0x45')](_0x439f3d),_['map'](_0x3c5661[_0x190c('0x67')],function(_0x38d7a0){return util[_0x190c('0x6d')](_0x190c('0x69'),_0x38d7a0['id']);}));_0x3cc5de[_0x190c('0x31')]=_[_0x190c('0x45')](_0x2bfd34['query']);_0x3cc5de[_0x190c('0x32')]=_['intersection'](_0x3cc5de[_0x190c('0x30')],_0x3cc5de[_0x190c('0x31')]);_0x1bf3c7['attributes']=_[_0x190c('0x33')](_0x3cc5de['model'],qs[_0x190c('0x35')](_0x2bfd34[_0x190c('0x31')]['fields']));_0x1bf3c7[_0x190c('0x34')]=_0x1bf3c7[_0x190c('0x34')][_0x190c('0x36')]?_0x1bf3c7['attributes']:_0x3cc5de[_0x190c('0x30')];if(!_0x2bfd34[_0x190c('0x31')][_0x190c('0x37')]('nolimit')){_0x1bf3c7['limit']=qs[_0x190c('0x20')](_0x2bfd34[_0x190c('0x31')][_0x190c('0x20')]);_0x1bf3c7[_0x190c('0x1e')]=qs[_0x190c('0x1e')](_0x2bfd34[_0x190c('0x31')]['offset']);}_0x1bf3c7[_0x190c('0x39')]=qs[_0x190c('0x3a')](_0x2bfd34[_0x190c('0x31')]['sort']);_0x1bf3c7[_0x190c('0x3d')]=qs[_0x190c('0x32')](_[_0x190c('0x3b')](_0x2bfd34['query'],_0x3cc5de[_0x190c('0x32')]));_0x1bf3c7[_0x190c('0x6a')]=!![];if(_0x2bfd34[_0x190c('0x31')][_0x190c('0x3c')]){_0x1bf3c7[_0x190c('0x3d')]=_[_0x190c('0x3f')](_0x1bf3c7[_0x190c('0x3d')],{'$or':_['map'](_0x1bf3c7[_0x190c('0x34')],function(_0x9c6fb6){var _0x1153da={};_0x1153da[_0x9c6fb6]={'$like':'%'+_0x2bfd34[_0x190c('0x31')][_0x190c('0x3c')]+'%'};return _0x1153da;})});}_0x1bf3c7=_[_0x190c('0x3f')]({},_0x1bf3c7,_0x2bfd34[_0x190c('0x40')]);return _0x3c5661[_0x190c('0x66')](_0x1bf3c7);}})['then'](function(_0x3437ea){if(!_['isEmpty'](_0x3437ea)){var _0x3c9e13=toCsv(_0x3437ea);var _0x296044=Date[_0x190c('0x6e')]();fs['writeFileSync'](util[_0x190c('0x6d')](_0x190c('0x6f'),_0x3c5661['id'],_0x296044),_0x3c9e13);_0x304ce0[_0x190c('0x70')](_0x190c('0x71'),_0x190c('0x72')+util['format']('list_%d_%s.csv',_0x3c5661['id'],_0x296044));_0x304ce0[_0x190c('0x70')](_0x190c('0x73'),_0x190c('0x74'));return _0x304ce0[_0x190c('0x75')](util[_0x190c('0x6d')]('/tmp/list_%d_%s.csv',_0x3c5661['id'],_0x296044));}else{return _0x304ce0[_0x190c('0x1b')](0xcc);}})[_0x190c('0x47')](handleError(_0x304ce0,null));};exports[_0x190c('0x76')]=function(_0x54f2d,_0x28090e,_0x421787){var _0x2b0039;delete _0x54f2d[_0x190c('0x49')]['id'];return db[_0x190c('0x2d')][_0x190c('0x77')]({'where':{'id':_0x54f2d[_0x190c('0x54')]['id']}})[_0x190c('0x27')](handleEntityNotFound(_0x28090e,null))[_0x190c('0x27')](function(_0x3ac7a1){if(_0x3ac7a1){return db[_0x190c('0x78')]['transaction'](function(_0x525334){return db[_0x190c('0x6c')][_0x190c('0x48')](_0x54f2d[_0x190c('0x49')],{'transaction':_0x525334})[_0x190c('0x27')](function(_0x47f2ad){_0x2b0039=_0x47f2ad;return _0x3ac7a1['addCustomFields'](_0x47f2ad,{'transaction':_0x525334});})[_0x190c('0x27')](function(){var _0x3453fd={'type':db[_0x190c('0x79')][_0x190c('0x7a')],'transaction':_0x525334};switch(_0x54f2d[_0x190c('0x49')][_0x190c('0x2f')]){case _0x190c('0x7b'):_0x3453fd[_0x190c('0x2f')]=db['Sequelize'][_0x190c('0x7a')];break;case _0x190c('0x7c'):_0x3453fd[_0x190c('0x2f')]=db[_0x190c('0x79')]['INTEGER'];break;case'switch':_0x3453fd[_0x190c('0x2f')]=db[_0x190c('0x79')]['BOOLEAN'];_0x3453fd['defaultValue']=![];break;default:}return db[_0x190c('0x78')][_0x190c('0x7d')][_0x190c('0x7e')](_0x190c('0x7f'),util['format'](_0x190c('0x80'),_0x2b0039['id']),_0x3453fd);})[_0x190c('0x27')](function(){return _0x2b0039;});});}})[_0x190c('0x27')](respondWithResult(_0x28090e,null))['catch'](handleError(_0x28090e,null));};exports[_0x190c('0x81')]=function(_0x1a2eea,_0x27c8db,_0x39b641){var _0x4f287a={};var _0x4d441b={};var _0x1d87ac;var _0x16c356;return db[_0x190c('0x2d')]['findOne']({'where':{'id':_0x1a2eea['params']['id']}})[_0x190c('0x27')](handleEntityNotFound(_0x27c8db,null))[_0x190c('0x27')](function(_0x3fd693){if(_0x3fd693){_0x1d87ac=_0x3fd693;_0x4d441b['model']=_[_0x190c('0x45')](db[_0x190c('0x6c')][_0x190c('0x2e')]);_0x4d441b[_0x190c('0x31')]=_[_0x190c('0x45')](_0x1a2eea['query']);_0x4d441b['filters']=_[_0x190c('0x33')](_0x4d441b[_0x190c('0x30')],_0x4d441b[_0x190c('0x31')]);_0x4f287a[_0x190c('0x34')]=_[_0x190c('0x33')](_0x4d441b[_0x190c('0x30')],qs[_0x190c('0x35')](_0x1a2eea['query'][_0x190c('0x35')]));_0x4f287a[_0x190c('0x34')]=_0x4f287a[_0x190c('0x34')][_0x190c('0x36')]?_0x4f287a[_0x190c('0x34')]:_0x4d441b[_0x190c('0x30')];_0x4f287a[_0x190c('0x39')]=qs['sort'](_0x1a2eea[_0x190c('0x31')]['sort']);_0x4f287a[_0x190c('0x3d')]=qs[_0x190c('0x32')](_[_0x190c('0x3b')](_0x1a2eea[_0x190c('0x31')],_0x4d441b[_0x190c('0x32')]));_0x4f287a[_0x190c('0x3d')]=_['merge'](_0x4f287a[_0x190c('0x3d')],{'$or':[{'ListId':_0x3fd693['id']},{'ListId':null}]});if(_0x1a2eea[_0x190c('0x31')]['filter']){_0x4f287a['where']=_[_0x190c('0x3f')](_0x4f287a[_0x190c('0x3d')],{'$or':_[_0x190c('0x2c')](_0x4f287a[_0x190c('0x34')],function(_0x151383){var _0x53fe4b={};_0x53fe4b[_0x151383]={'$like':'%'+_0x1a2eea[_0x190c('0x31')]['filter']+'%'};return _0x53fe4b;})});}_0x4f287a=_[_0x190c('0x3f')]({},_0x4f287a,_0x1a2eea['options']);return db['CmCustomField'][_0x190c('0x82')](_0x4f287a);}})[_0x190c('0x27')](respondWithResult(_0x27c8db,null))[_0x190c('0x47')](handleError(_0x27c8db,null));};exports[_0x190c('0x83')]=function(_0x165c69,_0x384da0,_0x341acd){return db[_0x190c('0x2d')][_0x190c('0x46')]({'where':{'id':_0x165c69['params']['id']}})['then'](handleEntityNotFound(_0x384da0,null))[_0x190c('0x27')](function(_0x109be3){if(_0x109be3){return _0x109be3[_0x190c('0x83')](_0x165c69[_0x190c('0x49')][_0x190c('0x61')],_[_0x190c('0x60')](_0x165c69['body'],[_0x190c('0x61'),'id'])||{})[_0x190c('0x84')](function(_0x709e0a){for(var _0x32bd35=0x0;_0x32bd35<_0x165c69[_0x190c('0x49')][_0x190c('0x61')]['length'];_0x32bd35+=0x1){socket['emit'](_0x190c('0x85'),{'UserId':Number(_0x165c69[_0x190c('0x49')][_0x190c('0x61')][_0x32bd35]),'CmListId':Number(_0x165c69[_0x190c('0x54')]['id'])});}return _0x709e0a;});}})[_0x190c('0x27')](respondWithResult(_0x384da0,null))[_0x190c('0x47')](handleError(_0x384da0,null));};exports[_0x190c('0x86')]=function(_0x14249f,_0x20869f,_0x9ce1d3){return db[_0x190c('0x2d')][_0x190c('0x46')]({'where':{'id':_0x14249f[_0x190c('0x54')]['id']}})[_0x190c('0x27')](handleEntityNotFound(_0x20869f,null))[_0x190c('0x27')](function(_0x2ece88){if(_0x2ece88){return _0x2ece88['removeAgents'](_0x14249f[_0x190c('0x31')][_0x190c('0x61')])[_0x190c('0x27')](function(){if(_[_0x190c('0x5c')](_0x14249f[_0x190c('0x31')][_0x190c('0x61')])){for(var _0x308f1a=0x0;_0x308f1a<_0x14249f[_0x190c('0x31')][_0x190c('0x61')][_0x190c('0x36')];_0x308f1a+=0x1){socket[_0x190c('0x87')]('userCmList:remove',{'UserId':Number(_0x14249f[_0x190c('0x31')][_0x190c('0x61')][_0x308f1a]),'CmListId':Number(_0x14249f['params']['id'])});}}else{socket[_0x190c('0x87')](_0x190c('0x88'),{'UserId':Number(_0x14249f[_0x190c('0x31')][_0x190c('0x61')]),'CmListId':Number(_0x14249f['params']['id'])});}});}})['then'](respondWithStatusCode(_0x20869f,null))[_0x190c('0x47')](handleError(_0x20869f,null));};exports[_0x190c('0x89')]=function(_0x493675,_0x49e240,_0x1b29c4){var _0x2160c1={};var _0x480c48={};var _0x5d2a06;var _0x5cb7f0;return db[_0x190c('0x2d')][_0x190c('0x77')]({'where':{'id':_0x493675[_0x190c('0x54')]['id']}})['then'](handleEntityNotFound(_0x49e240,null))[_0x190c('0x27')](function(_0x5ca5e8){if(_0x5ca5e8){_0x5d2a06=_0x5ca5e8;_0x480c48[_0x190c('0x30')]=_[_0x190c('0x45')](db['User'][_0x190c('0x2e')]);_0x480c48[_0x190c('0x31')]=_['keys'](_0x493675[_0x190c('0x31')]);_0x480c48[_0x190c('0x32')]=_[_0x190c('0x33')](_0x480c48[_0x190c('0x30')],_0x480c48[_0x190c('0x31')]);_0x2160c1[_0x190c('0x34')]=_[_0x190c('0x33')](_0x480c48[_0x190c('0x30')],qs[_0x190c('0x35')](_0x493675[_0x190c('0x31')][_0x190c('0x35')]));_0x2160c1[_0x190c('0x34')]=_0x2160c1[_0x190c('0x34')][_0x190c('0x36')]?_0x2160c1[_0x190c('0x34')]:_0x480c48[_0x190c('0x30')];_0x2160c1[_0x190c('0x39')]=qs['sort'](_0x493675[_0x190c('0x31')]['sort']);_0x2160c1[_0x190c('0x3d')]=qs[_0x190c('0x32')](_[_0x190c('0x3b')](_0x493675[_0x190c('0x31')],_0x480c48[_0x190c('0x32')]));if(_0x493675[_0x190c('0x31')][_0x190c('0x3c')]){_0x2160c1['where']=_['merge'](_0x2160c1[_0x190c('0x3d')],{'$or':_['map'](_0x2160c1[_0x190c('0x34')],function(_0x379ae6){var _0x433e70={};_0x433e70[_0x379ae6]={'$like':'%'+_0x493675[_0x190c('0x31')]['filter']+'%'};return _0x433e70;})});}_0x2160c1=_['merge']({},_0x2160c1,_0x493675[_0x190c('0x40')]);return _0x5d2a06[_0x190c('0x89')](_0x2160c1);}})['then'](function(_0x5971ea){if(_0x5971ea){_0x5cb7f0=_0x5971ea['length'];if(!_0x493675[_0x190c('0x31')][_0x190c('0x37')](_0x190c('0x38'))){_0x2160c1['limit']=qs[_0x190c('0x20')](_0x493675[_0x190c('0x31')][_0x190c('0x20')]);_0x2160c1['offset']=qs[_0x190c('0x1e')](_0x493675[_0x190c('0x31')][_0x190c('0x1e')]);}return _0x5d2a06[_0x190c('0x89')](_0x2160c1);}})[_0x190c('0x27')](function(_0x14f7a){if(_0x14f7a){return _0x14f7a?{'count':_0x5cb7f0,'rows':_0x14f7a}:null;}})[_0x190c('0x27')](respondWithResult(_0x49e240,null))[_0x190c('0x47')](handleError(_0x49e240,null));};
\ No newline at end of file
index c83df23..f082ce0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','CmList'];(function(_0x48668c,_0x20b3e4){var _0x183532=function(_0x28cb8f){while(--_0x28cb8f){_0x48668c['push'](_0x48668c['shift']());}};_0x183532(++_0x20b3e4);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var EventEmitter=require(_0x7995('0x0'));var CmList=require(_0x7995('0x1'))['db'][_0x7995('0x2')];var CmListEvents=new EventEmitter();CmListEvents[_0x7995('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7995('0x4'),'afterDestroy':_0x7995('0x5')};function emitEvent(_0x1902b4){return function(_0x462a03,_0x576d89,_0x744bea){CmListEvents[_0x7995('0x6')](_0x1902b4+':'+_0x462a03['id'],_0x462a03);CmListEvents[_0x7995('0x6')](_0x1902b4,_0x462a03);_0x744bea(null);};}for(var e in events){if(events[_0x7995('0x7')](e)){var event=events[e];CmList[_0x7995('0x8')](e,emitEvent(event));}}module[_0x7995('0x9')]=CmListEvents;
\ No newline at end of file
+var _0x7217=['emit','hasOwnProperty','hook','exports','events','CmList','setMaxListeners','save','update','remove'];(function(_0x16f77c,_0x5256b1){var _0x78986e=function(_0x10430){while(--_0x10430){_0x16f77c['push'](_0x16f77c['shift']());}};_0x78986e(++_0x5256b1);}(_0x7217,0x19e));var _0x7721=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7217[_0x14add3];return _0x4a174f;};'use strict';var EventEmitter=require(_0x7721('0x0'));var CmList=require('../../mysqldb')['db'][_0x7721('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x7721('0x2')](0x0);var events={'afterCreate':_0x7721('0x3'),'afterUpdate':_0x7721('0x4'),'afterDestroy':_0x7721('0x5')};function emitEvent(_0x4d6446){return function(_0x5bf160,_0x472a96,_0xce17f9){CmListEvents[_0x7721('0x6')](_0x4d6446+':'+_0x5bf160['id'],_0x5bf160);CmListEvents[_0x7721('0x6')](_0x4d6446,_0x5bf160);_0xce17f9(null);};}for(var e in events){if(events[_0x7721('0x7')](e)){var event=events[e];CmList[_0x7721('0x8')](e,emitEvent(event));}}module[_0x7721('0x9')]=CmListEvents;
\ No newline at end of file
index 5f139aa..016fa40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f7a=['CmList','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./cmList.attributes','exports','define'];(function(_0x4653f7,_0x3d3ae3){var _0x5454da=function(_0x448f55){while(--_0x448f55){_0x4653f7['push'](_0x4653f7['shift']());}};_0x5454da(++_0x3d3ae3);}(_0x6f7a,0x1ae));var _0xa6f7=function(_0x18a983,_0x32228){_0x18a983=_0x18a983-0x0;var _0x42bc15=_0x6f7a[_0x18a983];return _0x42bc15;};'use strict';var _=require(_0xa6f7('0x0'));var util=require(_0xa6f7('0x1'));var logger=require(_0xa6f7('0x2'))(_0xa6f7('0x3'));var moment=require('moment');var BPromise=require(_0xa6f7('0x4'));var rp=require(_0xa6f7('0x5'));var fs=require('fs');var path=require(_0xa6f7('0x6'));var rimraf=require(_0xa6f7('0x7'));var config=require(_0xa6f7('0x8'));var attributes=require(_0xa6f7('0x9'));module[_0xa6f7('0xa')]=function(_0x20cccd,_0x1fdd5f){return _0x20cccd[_0xa6f7('0xb')](_0xa6f7('0xc'),attributes,{'tableName':'cm_lists','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x153f=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./cmList.attributes','exports','define','cm_lists','lodash'];(function(_0x2a2126,_0x18cfae){var _0xc550ac=function(_0x5df676){while(--_0x5df676){_0x2a2126['push'](_0x2a2126['shift']());}};_0xc550ac(++_0x18cfae);}(_0x153f,0x15b));var _0xf153=function(_0x1d578a,_0x2434b6){_0x1d578a=_0x1d578a-0x0;var _0x117098=_0x153f[_0x1d578a];return _0x117098;};'use strict';var _=require(_0xf153('0x0'));var util=require(_0xf153('0x1'));var logger=require(_0xf153('0x2'))(_0xf153('0x3'));var moment=require(_0xf153('0x4'));var BPromise=require(_0xf153('0x5'));var rp=require(_0xf153('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf153('0x7'));var config=require('../../config/environment');var attributes=require(_0xf153('0x8'));module[_0xf153('0x9')]=function(_0x342a45,_0xafd987){return _0x342a45[_0xf153('0xa')]('CmList',attributes,{'tableName':_0xf153('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f332446..8491c61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x742b=['code','message','CmList,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','register','then','info','debug','CmList,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x257642,_0x270a80){var _0x3d813b=function(_0x2a1c8a){while(--_0x2a1c8a){_0x257642['push'](_0x257642['shift']());}};_0x3d813b(++_0x270a80);}(_0x742b,0x171));var _0xb742=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x742b[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0xb742('0x0'));var util=require(_0xb742('0x1'));var moment=require(_0xb742('0x2'));var BPromise=require(_0xb742('0x3'));var rs=require(_0xb742('0x4'));var fs=require('fs');var Redis=require(_0xb742('0x5'));var db=require(_0xb742('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xb742('0x7'));var jayson=require(_0xb742('0x8'));var client=jayson[_0xb742('0x9')][_0xb742('0xa')]({'port':0x232a});config[_0xb742('0xb')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xb742('0xc'))(new Redis(config[_0xb742('0xb')]));require('./cmList.socket')[_0xb742('0xd')](socket);function respondWithRpcPromise(_0x9be5af,_0x43aafe,_0x5a7e91){return new BPromise(function(_0x54ef7f,_0x4d74a6){return client['request'](_0x9be5af,_0x5a7e91)[_0xb742('0xe')](function(_0x9900be){logger[_0xb742('0xf')]('CmList,\x20%s,\x20%s',_0x43aafe,'request\x20sent');logger[_0xb742('0x10')](_0xb742('0x11'),_0x43aafe,_0xb742('0x12'),JSON[_0xb742('0x13')](_0x9900be));if(_0x9900be[_0xb742('0x14')]){if(_0x9900be[_0xb742('0x14')][_0xb742('0x15')]===0x1f4){logger[_0xb742('0x14')]('CmList,\x20%s,\x20%s',_0x43aafe,_0x9900be[_0xb742('0x14')]['message']);return _0x4d74a6(_0x9900be['error'][_0xb742('0x16')]);}logger['error']('CmList,\x20%s,\x20%s',_0x43aafe,_0x9900be['error'][_0xb742('0x16')]);return _0x54ef7f(_0x9900be[_0xb742('0x14')][_0xb742('0x16')]);}else{logger['info'](_0xb742('0x17'),_0x43aafe,_0xb742('0x12'));_0x54ef7f(_0x9900be[_0xb742('0x18')][_0xb742('0x16')]);}})[_0xb742('0x19')](function(_0x1c5821){logger['error'](_0xb742('0x17'),_0x43aafe,_0x1c5821);_0x4d74a6(_0x1c5821);});});}
\ No newline at end of file
+var _0x59f2=['request\x20sent','stringify','error','code','message','result','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','request','then','info','CmList,\x20%s,\x20%s','debug','CmList,\x20%s,\x20%s,\x20%s'];(function(_0xa60623,_0x2d4e4f){var _0x4a6487=function(_0xba6cbe){while(--_0xba6cbe){_0xa60623['push'](_0xa60623['shift']());}};_0x4a6487(++_0x2d4e4f);}(_0x59f2,0xe7));var _0x259f=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0x59f2[_0x297fd3];return _0x2af381;};'use strict';var _=require(_0x259f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x259f('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x259f('0x2'));var db=require(_0x259f('0x3'))['db'];var utils=require(_0x259f('0x4'));var logger=require(_0x259f('0x5'))(_0x259f('0x6'));var config=require(_0x259f('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x259f('0x8')]({'port':0x232a});config[_0x259f('0x9')]=_[_0x259f('0xa')](config[_0x259f('0x9')],{'host':_0x259f('0xb'),'port':0x18eb});var socket=require(_0x259f('0xc'))(new Redis(config['redis']));require(_0x259f('0xd'))[_0x259f('0xe')](socket);function respondWithRpcPromise(_0x475f49,_0x46e5a6,_0x1261ba){return new BPromise(function(_0x58656c,_0x139748){return client[_0x259f('0xf')](_0x475f49,_0x1261ba)[_0x259f('0x10')](function(_0x12cff5){logger[_0x259f('0x11')](_0x259f('0x12'),_0x46e5a6,'request\x20sent');logger[_0x259f('0x13')](_0x259f('0x14'),_0x46e5a6,_0x259f('0x15'),JSON[_0x259f('0x16')](_0x12cff5));if(_0x12cff5[_0x259f('0x17')]){if(_0x12cff5[_0x259f('0x17')][_0x259f('0x18')]===0x1f4){logger['error'](_0x259f('0x12'),_0x46e5a6,_0x12cff5['error'][_0x259f('0x19')]);return _0x139748(_0x12cff5[_0x259f('0x17')]['message']);}logger['error']('CmList,\x20%s,\x20%s',_0x46e5a6,_0x12cff5[_0x259f('0x17')][_0x259f('0x19')]);return _0x58656c(_0x12cff5['error'][_0x259f('0x19')]);}else{logger['info']('CmList,\x20%s,\x20%s',_0x46e5a6,'request\x20sent');_0x58656c(_0x12cff5[_0x259f('0x1a')][_0x259f('0x19')]);}})[_0x259f('0x1b')](function(_0x230e91){logger[_0x259f('0x17')](_0x259f('0x12'),_0x46e5a6,_0x230e91);_0x139748(_0x230e91);});});}
\ No newline at end of file
index 8379dbf..157f198 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfb9=['length','./cmList.events','remove','update','emit'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xbfb9,0x97));var _0x9bfb=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xbfb9[_0xa464c9];return _0x3d73c4;};'use strict';var CmListEvents=require(_0x9bfb('0x0'));var events=['save',_0x9bfb('0x1'),_0x9bfb('0x2')];function createListener(_0xb99654,_0x286f9b){return function(_0x214331){_0x286f9b[_0x9bfb('0x3')](_0xb99654,_0x214331);};}function removeListener(_0x1b343c,_0x43e63d){return function(){CmListEvents['removeListener'](_0x1b343c,_0x43e63d);};}exports['register']=function(_0x2a0ab6){for(var _0x348465=0x0,_0x25ce08=events[_0x9bfb('0x4')];_0x348465<_0x25ce08;_0x348465++){var _0x4c6ed9=events[_0x348465];var _0x4efce1=createListener('cmList:'+_0x4c6ed9,_0x2a0ab6);CmListEvents['on'](_0x4c6ed9,_0x4efce1);}};
\ No newline at end of file
+var _0xdf38=['remove','emit','register','length','./cmList.events','save'];(function(_0x1e50fc,_0x3d2684){var _0x497f51=function(_0x2f744b){while(--_0x2f744b){_0x1e50fc['push'](_0x1e50fc['shift']());}};_0x497f51(++_0x3d2684);}(_0xdf38,0x16c));var _0x8df3=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0xdf38[_0x209941];return _0x1e8729;};'use strict';var CmListEvents=require(_0x8df3('0x0'));var events=[_0x8df3('0x1'),_0x8df3('0x2'),'update'];function createListener(_0x1e3000,_0x11ed9c){return function(_0x5d5b77){_0x11ed9c[_0x8df3('0x3')](_0x1e3000,_0x5d5b77);};}function removeListener(_0x356061,_0x108c25){return function(){CmListEvents['removeListener'](_0x356061,_0x108c25);};}exports[_0x8df3('0x4')]=function(_0x4e1039){for(var _0x308812=0x0,_0xfdbd7=events[_0x8df3('0x5')];_0x308812<_0xfdbd7;_0x308812++){var _0x4c2f72=events[_0x308812];var _0x51aea2=createListener('cmList:'+_0x4c2f72,_0x4e1039);CmListEvents['on'](_0x4c2f72,_0x51aea2);}};
\ No newline at end of file
index 6226836..2c993dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef98=['removeAgents','exports','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','get','index','isAuthenticated','describe','show','getContacts','getContactsCsv','/:id/fields','getCustomFields','/:id/users','getAgents','post','addDisposition','/:id/contacts','put','/:id','update','delete','destroy','/:id/dispositions','removeDispositions'];(function(_0x4ac60a,_0x503a99){var _0x4b22e8=function(_0x145c47){while(--_0x145c47){_0x4ac60a['push'](_0x4ac60a['shift']());}};_0x4b22e8(++_0x503a99);}(_0xef98,0x1c2));var _0x8ef9=function(_0x4455af,_0x26f3c9){_0x4455af=_0x4455af-0x0;var _0x51cb57=_0xef98[_0x4455af];return _0x51cb57;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x8ef9('0x0'));var timeout=require(_0x8ef9('0x1'));var express=require('express');var router=express[_0x8ef9('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x8ef9('0x3'));var interaction=require(_0x8ef9('0x4'));var config=require('../../config/environment');var controller=require('./cmList.controller');router[_0x8ef9('0x5')]('/',auth['isAuthenticated'](),controller[_0x8ef9('0x6')]);router[_0x8ef9('0x5')]('/describe',auth[_0x8ef9('0x7')](),controller[_0x8ef9('0x8')]);router[_0x8ef9('0x5')]('/:id',auth[_0x8ef9('0x7')](),controller[_0x8ef9('0x9')]);router['get']('/:id/dispositions',auth['isAuthenticated'](),controller['getDispositions']);router[_0x8ef9('0x5')]('/:id/contacts',auth['isAuthenticated'](),controller[_0x8ef9('0xa')]);router[_0x8ef9('0x5')]('/:id/contacts/csv',auth[_0x8ef9('0x7')](),controller[_0x8ef9('0xb')]);router[_0x8ef9('0x5')](_0x8ef9('0xc'),auth[_0x8ef9('0x7')](),controller[_0x8ef9('0xd')]);router['get'](_0x8ef9('0xe'),auth[_0x8ef9('0x7')](),controller[_0x8ef9('0xf')]);router[_0x8ef9('0x10')]('/',auth[_0x8ef9('0x7')](),controller['create']);router[_0x8ef9('0x10')]('/:id/dispositions',auth[_0x8ef9('0x7')](),controller[_0x8ef9('0x11')]);router[_0x8ef9('0x10')](_0x8ef9('0x12'),auth[_0x8ef9('0x7')](),controller['addContacts']);router[_0x8ef9('0x10')]('/:id/fields',auth[_0x8ef9('0x7')](),controller['addCustomField']);router[_0x8ef9('0x10')](_0x8ef9('0xe'),auth[_0x8ef9('0x7')](),controller['addAgents']);router[_0x8ef9('0x13')](_0x8ef9('0x14'),auth['isAuthenticated'](),controller[_0x8ef9('0x15')]);router[_0x8ef9('0x16')](_0x8ef9('0x14'),auth[_0x8ef9('0x7')](),controller[_0x8ef9('0x17')]);router[_0x8ef9('0x16')](_0x8ef9('0x18'),auth['isAuthenticated'](),controller[_0x8ef9('0x19')]);router[_0x8ef9('0x16')]('/:id/users',auth[_0x8ef9('0x7')](),controller[_0x8ef9('0x1a')]);module[_0x8ef9('0x1b')]=router;
\ No newline at end of file
+var _0x807d=['get','isAuthenticated','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/contacts/csv','getContactsCsv','getCustomFields','/:id/users','getAgents','create','post','addDisposition','/:id/contacts','addContacts','addCustomField','put','update','delete','destroy','removeDispositions','multer','connect-timeout','express','Router','fs-extra','./cmList.controller'];(function(_0x16dc47,_0x2fa25b){var _0x3c5fad=function(_0x165d2b){while(--_0x165d2b){_0x16dc47['push'](_0x16dc47['shift']());}};_0x3c5fad(++_0x2fa25b);}(_0x807d,0x126));var _0xd807=function(_0xa917ba,_0x19ff1a){_0xa917ba=_0xa917ba-0x0;var _0x27964e=_0x807d[_0xa917ba];return _0x27964e;};'use strict';var multer=require(_0xd807('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xd807('0x1'));var express=require(_0xd807('0x2'));var router=express[_0xd807('0x3')]();var fs_extra=require(_0xd807('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd807('0x5'));router[_0xd807('0x6')]('/',auth[_0xd807('0x7')](),controller['index']);router[_0xd807('0x6')](_0xd807('0x8'),auth[_0xd807('0x7')](),controller[_0xd807('0x9')]);router[_0xd807('0x6')](_0xd807('0xa'),auth[_0xd807('0x7')](),controller[_0xd807('0xb')]);router['get'](_0xd807('0xc'),auth[_0xd807('0x7')](),controller[_0xd807('0xd')]);router[_0xd807('0x6')]('/:id/contacts',auth[_0xd807('0x7')](),controller['getContacts']);router[_0xd807('0x6')](_0xd807('0xe'),auth[_0xd807('0x7')](),controller[_0xd807('0xf')]);router['get']('/:id/fields',auth[_0xd807('0x7')](),controller[_0xd807('0x10')]);router[_0xd807('0x6')](_0xd807('0x11'),auth[_0xd807('0x7')](),controller[_0xd807('0x12')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd807('0x13')]);router[_0xd807('0x14')](_0xd807('0xc'),auth[_0xd807('0x7')](),controller[_0xd807('0x15')]);router[_0xd807('0x14')](_0xd807('0x16'),auth[_0xd807('0x7')](),controller[_0xd807('0x17')]);router[_0xd807('0x14')]('/:id/fields',auth[_0xd807('0x7')](),controller[_0xd807('0x18')]);router[_0xd807('0x14')](_0xd807('0x11'),auth[_0xd807('0x7')](),controller['addAgents']);router[_0xd807('0x19')](_0xd807('0xa'),auth[_0xd807('0x7')](),controller[_0xd807('0x1a')]);router[_0xd807('0x1b')](_0xd807('0xa'),auth[_0xd807('0x7')](),controller[_0xd807('0x1c')]);router[_0xd807('0x1b')](_0xd807('0xc'),auth[_0xd807('0x7')](),controller[_0xd807('0x1d')]);router[_0xd807('0x1b')](_0xd807('0x11'),auth[_0xd807('0x7')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 8df6fb8..2c32b81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27a0=['STRING','exports','VIRTUAL','getDataValue','field'];(function(_0x129d61,_0x1dff9b){var _0x468457=function(_0x262f55){while(--_0x262f55){_0x129d61['push'](_0x129d61['shift']());}};_0x468457(++_0x1dff9b);}(_0x27a0,0x13c));var _0x027a=function(_0x197e1a,_0x356755){_0x197e1a=_0x197e1a-0x0;var _0x3cdbb6=_0x27a0[_0x197e1a];return _0x3cdbb6;};'use strict';var Sequelize=require('sequelize');module[_0x027a('0x0')]={'name':{'type':Sequelize[_0x027a('0x1')],'get':function(_0x434623){return this[_0x027a('0x2')](_0x027a('0x3'));}},'field':{'type':Sequelize[_0x027a('0x4')],'allowNull':![]},'operator':{'type':Sequelize[_0x027a('0x4')],'allowNull':![]},'value':{'type':Sequelize[_0x027a('0x4')],'allowNull':![]}};
\ No newline at end of file
+var _0x4efa=['VIRTUAL','getDataValue','field','STRING','sequelize','exports'];(function(_0x2aa733,_0xcde568){var _0x2bcf85=function(_0x5d9358){while(--_0x5d9358){_0x2aa733['push'](_0x2aa733['shift']());}};_0x2bcf85(++_0xcde568);}(_0x4efa,0x13c));var _0xa4ef=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4efa[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xa4ef('0x0'));module[_0xa4ef('0x1')]={'name':{'type':Sequelize[_0xa4ef('0x2')],'get':function(_0x7788ec){return this[_0xa4ef('0x3')](_0xa4ef('0x4'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0xa4ef('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0xa4ef('0x5')],'allowNull':![]}};
\ No newline at end of file
index 569b3f7..6aa4b7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0x42e2b4,_0x2d4657){var _0xb5095c=function(_0x19ee84){while(--_0x19ee84){_0x42e2b4['push'](_0x42e2b4['shift']());}};_0xb5095c(++_0x2d4657);}(_0x7a54,0x106));var _0x47a5=function(_0x639219,_0x5d642f){_0x639219=_0x639219-0x0;var _0x313b87=_0x7a54[_0x639219];return _0x313b87;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
+var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0x1c5260,_0x861762){var _0x26287e=function(_0x45366b){while(--_0x45366b){_0x1c5260['push'](_0x1c5260['shift']());}};_0x26287e(++_0x861762);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
index a5df47c..e7d76c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf38d=['path','rimraf','../../config/environment','./condition.attributes','exports','define','Condition','lodash','util','../../config/logger','api','request-promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf38d,0x19f));var _0xdf38=function(_0x5ddfca,_0x233349){_0x5ddfca=_0x5ddfca-0x0;var _0x55be75=_0xf38d[_0x5ddfca];return _0x55be75;};'use strict';var _=require(_0xdf38('0x0'));var util=require(_0xdf38('0x1'));var logger=require(_0xdf38('0x2'))(_0xdf38('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xdf38('0x4'));var fs=require('fs');var path=require(_0xdf38('0x5'));var rimraf=require(_0xdf38('0x6'));var config=require(_0xdf38('0x7'));var attributes=require(_0xdf38('0x8'));module[_0xdf38('0x9')]=function(_0x5b85b2,_0x46a1d3){return _0x5b85b2[_0xdf38('0xa')](_0xdf38('0xb'),attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfb5c=['request-promise','path','rimraf','./condition.attributes','exports','tools_conditions','moment','bluebird'];(function(_0x5b701c,_0x23458a){var _0x580ad3=function(_0x102a06){while(--_0x102a06){_0x5b701c['push'](_0x5b701c['shift']());}};_0x580ad3(++_0x23458a);}(_0xfb5c,0x1de));var _0xcfb5=function(_0x56daff,_0xadca9a){_0x56daff=_0x56daff-0x0;var _0x132c82=_0xfb5c[_0x56daff];return _0x132c82;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xcfb5('0x0'));var BPromise=require(_0xcfb5('0x1'));var rp=require(_0xcfb5('0x2'));var fs=require('fs');var path=require(_0xcfb5('0x3'));var rimraf=require(_0xcfb5('0x4'));var config=require('../../config/environment');var attributes=require(_0xcfb5('0x5'));module[_0xcfb5('0x6')]=function(_0x2cd43d,_0x2a1873){return _0x2cd43d['define']('Condition',attributes,{'tableName':_0xcfb5('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e9b5b48..b9c6f67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5dc8=['message','info','result','catch','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','Condition,\x20%s,\x20%s','Condition,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error'];(function(_0x2eec2c,_0x150f96){var _0x5c2f6a=function(_0x4cf97c){while(--_0x4cf97c){_0x2eec2c['push'](_0x2eec2c['shift']());}};_0x5c2f6a(++_0x150f96);}(_0x5dc8,0x1d0));var _0x85dc=function(_0x4dda69,_0x2a0fe4){_0x4dda69=_0x4dda69-0x0;var _0x9014a9=_0x5dc8[_0x4dda69];return _0x9014a9;};'use strict';var _=require(_0x85dc('0x0'));var util=require(_0x85dc('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x85dc('0x2'));var db=require(_0x85dc('0x3'))['db'];var utils=require(_0x85dc('0x4'));var logger=require(_0x85dc('0x5'))(_0x85dc('0x6'));var config=require(_0x85dc('0x7'));var jayson=require(_0x85dc('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1eaec5,_0x40558f,_0x45de86){return new BPromise(function(_0x4d0ac9,_0x14a8d3){return client['request'](_0x1eaec5,_0x45de86)[_0x85dc('0x9')](function(_0x1d5fd5){logger['info'](_0x85dc('0xa'),_0x40558f,'request\x20sent');logger['debug'](_0x85dc('0xb'),_0x40558f,_0x85dc('0xc'),JSON[_0x85dc('0xd')](_0x1d5fd5));if(_0x1d5fd5['error']){if(_0x1d5fd5['error'][_0x85dc('0xe')]===0x1f4){logger[_0x85dc('0xf')](_0x85dc('0xa'),_0x40558f,_0x1d5fd5[_0x85dc('0xf')]['message']);return _0x14a8d3(_0x1d5fd5[_0x85dc('0xf')][_0x85dc('0x10')]);}logger['error']('Condition,\x20%s,\x20%s',_0x40558f,_0x1d5fd5[_0x85dc('0xf')][_0x85dc('0x10')]);return _0x4d0ac9(_0x1d5fd5['error'][_0x85dc('0x10')]);}else{logger[_0x85dc('0x11')](_0x85dc('0xa'),_0x40558f,_0x85dc('0xc'));_0x4d0ac9(_0x1d5fd5[_0x85dc('0x12')][_0x85dc('0x10')]);}})[_0x85dc('0x13')](function(_0x33f234){logger[_0x85dc('0xf')](_0x85dc('0xa'),_0x40558f,_0x33f234);_0x14a8d3(_0x33f234);});});}
\ No newline at end of file
+var _0x3f40=['catch','moment','randomstring','rpc','client','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x1f52af,_0x4edae5){var _0x400226=function(_0x458d02){while(--_0x458d02){_0x1f52af['push'](_0x1f52af['shift']());}};_0x400226(++_0x4edae5);}(_0x3f40,0xc7));var _0x03f4=function(_0x4b52f9,_0x28dc15){_0x4b52f9=_0x4b52f9-0x0;var _0x479a12=_0x3f40[_0x4b52f9];return _0x479a12;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x03f4('0x0'));var BPromise=require('bluebird');var rs=require(_0x03f4('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x03f4('0x2'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x03f4('0x3')][_0x03f4('0x4')]({'port':0x232a});function respondWithRpcPromise(_0x2c4b91,_0x541825,_0x5be2d2){return new BPromise(function(_0x51cbdb,_0x24b45b){return client[_0x03f4('0x5')](_0x2c4b91,_0x5be2d2)[_0x03f4('0x6')](function(_0x4e530d){logger[_0x03f4('0x7')](_0x03f4('0x8'),_0x541825,_0x03f4('0x9'));logger[_0x03f4('0xa')](_0x03f4('0xb'),_0x541825,_0x03f4('0x9'),JSON[_0x03f4('0xc')](_0x4e530d));if(_0x4e530d[_0x03f4('0xd')]){if(_0x4e530d['error'][_0x03f4('0xe')]===0x1f4){logger['error'](_0x03f4('0x8'),_0x541825,_0x4e530d[_0x03f4('0xd')]['message']);return _0x24b45b(_0x4e530d['error'][_0x03f4('0xf')]);}logger[_0x03f4('0xd')](_0x03f4('0x8'),_0x541825,_0x4e530d[_0x03f4('0xd')]['message']);return _0x51cbdb(_0x4e530d['error'][_0x03f4('0xf')]);}else{logger[_0x03f4('0x7')](_0x03f4('0x8'),_0x541825,_0x03f4('0x9'));_0x51cbdb(_0x4e530d[_0x03f4('0x10')]['message']);}})[_0x03f4('0x11')](function(_0x23a77a){logger[_0x03f4('0xd')](_0x03f4('0x8'),_0x541825,_0x23a77a);_0x24b45b(_0x23a77a);});});}
\ No newline at end of file
index 6dfe2c9..46a7c92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fe7=['destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./condition.controller','put','/:id','isAuthenticated','delete'];(function(_0x35caa8,_0x100229){var _0x72dcf0=function(_0x29571a){while(--_0x29571a){_0x35caa8['push'](_0x35caa8['shift']());}};_0x72dcf0(++_0x100229);}(_0x7fe7,0x1a6));var _0x77fe=function(_0x75ad68,_0xc75b2a){_0x75ad68=_0x75ad68-0x0;var _0x469c7d=_0x7fe7[_0x75ad68];return _0x469c7d;};'use strict';var multer=require(_0x77fe('0x0'));var util=require(_0x77fe('0x1'));var path=require(_0x77fe('0x2'));var timeout=require(_0x77fe('0x3'));var express=require('express');var router=express[_0x77fe('0x4')]();var fs_extra=require(_0x77fe('0x5'));var auth=require(_0x77fe('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x77fe('0x7'));var controller=require(_0x77fe('0x8'));router[_0x77fe('0x9')](_0x77fe('0xa'),auth[_0x77fe('0xb')](),controller['update']);router[_0x77fe('0xc')](_0x77fe('0xa'),auth[_0x77fe('0xb')](),controller[_0x77fe('0xd')]);module[_0x77fe('0xe')]=router;
\ No newline at end of file
+var _0x138d=['isAuthenticated','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./condition.controller','/:id'];(function(_0x25fc41,_0x250864){var _0x1371d1=function(_0x8ab2e3){while(--_0x8ab2e3){_0x25fc41['push'](_0x25fc41['shift']());}};_0x1371d1(++_0x250864);}(_0x138d,0x7d));var _0xd138=function(_0x10e840,_0x5b3935){_0x10e840=_0x10e840-0x0;var _0x405caa=_0x138d[_0x10e840];return _0x405caa;};'use strict';var multer=require(_0xd138('0x0'));var util=require(_0xd138('0x1'));var path=require(_0xd138('0x2'));var timeout=require(_0xd138('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd138('0x4'));var auth=require(_0xd138('0x5'));var interaction=require(_0xd138('0x6'));var config=require(_0xd138('0x7'));var controller=require(_0xd138('0x8'));router['put'](_0xd138('0x9'),auth[_0xd138('0xa')](),controller[_0xd138('0xb')]);router[_0xd138('0xc')](_0xd138('0x9'),auth[_0xd138('0xa')](),controller[_0xd138('0xd')]);module[_0xd138('0xe')]=router;
\ No newline at end of file
index d8fba69..b67cbde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['exports','STRING'];(function(_0x1e822a,_0x12dcb1){var _0x1b7404=function(_0x51dd3c){while(--_0x51dd3c){_0x1e822a['push'](_0x1e822a['shift']());}};_0x1b7404(++_0x12dcb1);}(_0x757a,0xde));var _0xa757=function(_0x25273f,_0x36b3e6){_0x25273f=_0x25273f-0x0;var _0x55f768=_0x757a[_0x25273f];return _0x55f768;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd8b0=['exports','sequelize'];(function(_0x3e47ac,_0x4a0f5a){var _0x4385aa=function(_0x5eb018){while(--_0x5eb018){_0x3e47ac['push'](_0x3e47ac['shift']());}};_0x4385aa(++_0x4a0f5a);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index aa97566..27efd29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cbd=['count','set','Content-Range','apply','reject','save','update','destroy','then','UserProfileResource','error','name','index','map','Dashboard','rawAttributes','fieldName','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','options','includeAll','findAll','rows','show','params','include','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','CustomDashboards','UserProfileSection','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','updatedAt','userProfileId','autoAssociation','type','iframe','attrUrl','attrs','value','https://','custom','attrPath','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','getItems','DashboardItem','nolimit','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','localhost','./dashboard.socket','register','sendStatus','end','status','json','offset','undefined','limit'];(function(_0x435fa1,_0x58550a){var _0x845f9f=function(_0x89867e){while(--_0x89867e){_0x435fa1['push'](_0x435fa1['shift']());}};_0x845f9f(++_0x58550a);}(_0x6cbd,0xca));var _0xd6cb=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x6cbd[_0x24061a];return _0x82054e;};'use strict';var emlformat=require(_0xd6cb('0x0'));var rimraf=require(_0xd6cb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd6cb('0x2'));var moment=require(_0xd6cb('0x3'));var BPromise=require(_0xd6cb('0x4'));var Mustache=require(_0xd6cb('0x5'));var util=require(_0xd6cb('0x6'));var path=require('path');var sox=require(_0xd6cb('0x7'));var csv=require(_0xd6cb('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd6cb('0x9'));var squel=require(_0xd6cb('0xa'));var crypto=require(_0xd6cb('0xb'));var jsforce=require(_0xd6cb('0xc'));var deskjs=require(_0xd6cb('0xd'));var toCsv=require(_0xd6cb('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd6cb('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xd6cb('0xf'));var as=require(_0xd6cb('0x10'));var hardwareService=require(_0xd6cb('0x11'));var logger=require(_0xd6cb('0x12'))('api');var utils=require(_0xd6cb('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xd6cb('0x14'));var db=require(_0xd6cb('0x15'))['db'];config['redis']=_[_0xd6cb('0x16')](config[_0xd6cb('0x17')],{'host':_0xd6cb('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd6cb('0x17')]));require(_0xd6cb('0x19'))[_0xd6cb('0x1a')](socket);function respondWithStatusCode(_0x3ef70c,_0x5cb003){_0x5cb003=_0x5cb003||0xcc;return function(_0x44317e){if(_0x44317e){return _0x3ef70c[_0xd6cb('0x1b')](_0x5cb003);}return _0x3ef70c['status'](_0x5cb003)[_0xd6cb('0x1c')]();};}function respondWithResult(_0x5e3255,_0x1cf08d){_0x1cf08d=_0x1cf08d||0xc8;return function(_0x4303eb){if(_0x4303eb){return _0x5e3255[_0xd6cb('0x1d')](_0x1cf08d)[_0xd6cb('0x1e')](_0x4303eb);}};}function respondWithFilteredResult(_0x341ef4,_0x1936ec){return function(_0x3c5b15){if(_0x3c5b15){var _0x55d058=typeof _0x1936ec[_0xd6cb('0x1f')]===_0xd6cb('0x20')&&typeof _0x1936ec[_0xd6cb('0x21')]===_0xd6cb('0x20');var _0x2bd395=_0x3c5b15[_0xd6cb('0x22')];var _0x3f0db1=_0x55d058?0x0:_0x1936ec[_0xd6cb('0x1f')];var _0x2497e5=_0x55d058?_0x3c5b15[_0xd6cb('0x22')]:_0x1936ec[_0xd6cb('0x1f')]+_0x1936ec[_0xd6cb('0x21')];var _0x4c487f;if(_0x2497e5>=_0x2bd395){_0x2497e5=_0x2bd395;_0x4c487f=0xc8;}else{_0x4c487f=0xce;}_0x341ef4[_0xd6cb('0x1d')](_0x4c487f);return _0x341ef4[_0xd6cb('0x23')](_0xd6cb('0x24'),_0x3f0db1+'-'+_0x2497e5+'/'+_0x2bd395)[_0xd6cb('0x1e')](_0x3c5b15);}return null;};}function patchUpdates(_0x486634){return function(_0x443c35){try{jsonpatch[_0xd6cb('0x25')](_0x443c35,_0x486634,!![]);}catch(_0xe032b7){return BPromise[_0xd6cb('0x26')](_0xe032b7);}return _0x443c35[_0xd6cb('0x27')]();};}function saveUpdates(_0x3a42b8,_0x4a77c4){return function(_0x3f3823){if(_0x3f3823){return _0x3f3823[_0xd6cb('0x28')](_0x3a42b8)['then'](function(_0x146797){return _0x146797;});}return null;};}function removeEntity(_0x2d4c5c,_0x2533e8){return function(_0x573fcb){if(_0x573fcb){return _0x573fcb[_0xd6cb('0x29')]()[_0xd6cb('0x2a')](function(){var _0x165e29=_0x573fcb['get']({'plain':!![]});var _0x3260f5='CustomDashboards';return db[_0xd6cb('0x2b')]['destroy']({'where':{'type':_0x3260f5,'resourceId':_0x165e29['id']}})[_0xd6cb('0x2a')](function(){return _0x573fcb;});})[_0xd6cb('0x2a')](function(){_0x2d4c5c[_0xd6cb('0x1d')](0xcc)[_0xd6cb('0x1c')]();});}};}function handleEntityNotFound(_0x98193e,_0x8fc9d6){return function(_0x13ab28){if(!_0x13ab28){_0x98193e[_0xd6cb('0x1b')](0x194);}return _0x13ab28;};}function handleError(_0x1b987e,_0x13230d){_0x13230d=_0x13230d||0x1f4;return function(_0x1fd407){logger[_0xd6cb('0x2c')](_0x1fd407['stack']);if(_0x1fd407[_0xd6cb('0x2d')]){delete _0x1fd407[_0xd6cb('0x2d')];}_0x1b987e[_0xd6cb('0x1d')](_0x13230d)['send'](_0x1fd407);};}exports[_0xd6cb('0x2e')]=function(_0x50de0a,_0x1c2df2){var _0x1a39ee={},_0x1f51f0={},_0xef3942={'count':0x0,'rows':[]};var _0x5f129a=_[_0xd6cb('0x2f')](db[_0xd6cb('0x30')][_0xd6cb('0x31')],function(_0x4abcf2){return{'name':_0x4abcf2[_0xd6cb('0x32')],'type':_0x4abcf2['type']['key']};});_0x1f51f0[_0xd6cb('0x33')]=_[_0xd6cb('0x2f')](_0x5f129a,_0xd6cb('0x2d'));_0x1f51f0[_0xd6cb('0x34')]=_[_0xd6cb('0x35')](_0x50de0a[_0xd6cb('0x34')]);_0x1f51f0['filters']=_[_0xd6cb('0x36')](_0x1f51f0[_0xd6cb('0x33')],_0x1f51f0['query']);_0x1a39ee[_0xd6cb('0x37')]=_[_0xd6cb('0x36')](_0x1f51f0['model'],qs[_0xd6cb('0x38')](_0x50de0a[_0xd6cb('0x34')][_0xd6cb('0x38')]));_0x1a39ee[_0xd6cb('0x37')]=_0x1a39ee[_0xd6cb('0x37')][_0xd6cb('0x39')]?_0x1a39ee['attributes']:_0x1f51f0['model'];if(!_0x50de0a[_0xd6cb('0x34')][_0xd6cb('0x3a')]('nolimit')){_0x1a39ee[_0xd6cb('0x21')]=qs[_0xd6cb('0x21')](_0x50de0a[_0xd6cb('0x34')]['limit']);_0x1a39ee[_0xd6cb('0x1f')]=qs[_0xd6cb('0x1f')](_0x50de0a[_0xd6cb('0x34')][_0xd6cb('0x1f')]);}_0x1a39ee[_0xd6cb('0x3b')]=qs[_0xd6cb('0x3c')](_0x50de0a['query']['sort']);_0x1a39ee[_0xd6cb('0x3d')]=qs[_0xd6cb('0x3e')](_['pick'](_0x50de0a[_0xd6cb('0x34')],_0x1f51f0[_0xd6cb('0x3e')]),_0x5f129a);if(_0x50de0a[_0xd6cb('0x34')][_0xd6cb('0x3f')]){_0x1a39ee[_0xd6cb('0x3d')]=_[_0xd6cb('0x40')](_0x1a39ee['where'],{'$or':_[_0xd6cb('0x2f')](_0x5f129a,function(_0x3a000d){if(_0x3a000d['type']!=='VIRTUAL'){var _0x55d905={};_0x55d905[_0x3a000d[_0xd6cb('0x2d')]]={'$like':'%'+_0x50de0a[_0xd6cb('0x34')][_0xd6cb('0x3f')]+'%'};return _0x55d905;}})});}_0x1a39ee=_['merge']({},_0x1a39ee,_0x50de0a[_0xd6cb('0x41')]);var _0x45c1f9={'where':_0x1a39ee[_0xd6cb('0x3d')]};return db['Dashboard'][_0xd6cb('0x22')](_0x45c1f9)['then'](function(_0x289782){_0xef3942[_0xd6cb('0x22')]=_0x289782;if(_0x50de0a['query'][_0xd6cb('0x42')]){_0x1a39ee['include']=[{'all':!![]}];}return db[_0xd6cb('0x30')][_0xd6cb('0x43')](_0x1a39ee);})[_0xd6cb('0x2a')](function(_0x5020dd){_0xef3942[_0xd6cb('0x44')]=_0x5020dd;return _0xef3942;})[_0xd6cb('0x2a')](respondWithFilteredResult(_0x1c2df2,_0x1a39ee))['catch'](handleError(_0x1c2df2,null));};exports[_0xd6cb('0x45')]=function(_0x3e3c0f,_0x4c1b1b){var _0x2e1a38={'raw':![],'where':{'id':_0x3e3c0f[_0xd6cb('0x46')]['id']}},_0x36a2c6={};_0x36a2c6[_0xd6cb('0x33')]=_['keys'](db[_0xd6cb('0x30')][_0xd6cb('0x31')]);_0x36a2c6[_0xd6cb('0x34')]=_[_0xd6cb('0x35')](_0x3e3c0f[_0xd6cb('0x34')]);_0x36a2c6[_0xd6cb('0x3e')]=_['intersection'](_0x36a2c6[_0xd6cb('0x33')],_0x36a2c6[_0xd6cb('0x34')]);_0x2e1a38[_0xd6cb('0x37')]=_[_0xd6cb('0x36')](_0x36a2c6[_0xd6cb('0x33')],qs[_0xd6cb('0x38')](_0x3e3c0f[_0xd6cb('0x34')][_0xd6cb('0x38')]));_0x2e1a38[_0xd6cb('0x37')]=_0x2e1a38[_0xd6cb('0x37')][_0xd6cb('0x39')]?_0x2e1a38[_0xd6cb('0x37')]:_0x36a2c6[_0xd6cb('0x33')];if(_0x3e3c0f[_0xd6cb('0x34')][_0xd6cb('0x42')]){_0x2e1a38[_0xd6cb('0x47')]=[{'all':!![]}];}_0x2e1a38=_[_0xd6cb('0x40')]({},_0x2e1a38,_0x3e3c0f['options']);return db[_0xd6cb('0x30')][_0xd6cb('0x48')](_0x2e1a38)[_0xd6cb('0x2a')](handleEntityNotFound(_0x4c1b1b,null))[_0xd6cb('0x2a')](respondWithResult(_0x4c1b1b,null))['catch'](handleError(_0x4c1b1b,null));};exports['create']=function(_0x1275b5,_0x5916ba){return db['Dashboard'][_0xd6cb('0x49')](_0x1275b5[_0xd6cb('0x4a')],{})[_0xd6cb('0x2a')](function(_0x3c3f37){var _0x199ca3=_0x1275b5[_0xd6cb('0x4b')][_0xd6cb('0x4c')]({'plain':!![]});if(!_0x199ca3)throw new Error(_0xd6cb('0x4d'));if(_0x199ca3[_0xd6cb('0x4e')]===_0xd6cb('0x4b')){var _0x509f5d=_0x3c3f37[_0xd6cb('0x4c')]({'plain':!![]});var _0x2cbeb0=_0xd6cb('0x4f');return db[_0xd6cb('0x50')]['find']({'where':{'name':_0x2cbeb0,'userProfileId':_0x199ca3['userProfileId']},'raw':!![]})['then'](function(_0x40cb56){if(_0x40cb56&&_0x40cb56['autoAssociation']===0x0){return db[_0xd6cb('0x2b')]['create']({'name':_0x509f5d[_0xd6cb('0x2d')],'resourceId':_0x509f5d['id'],'type':_0x40cb56[_0xd6cb('0x2d')],'sectionId':_0x40cb56['id']},{})[_0xd6cb('0x2a')](function(){return _0x3c3f37;});}else{return _0x3c3f37;}})[_0xd6cb('0x51')](function(_0x2b3d60){logger[_0xd6cb('0x2c')](_0xd6cb('0x52'),_0x2b3d60);throw _0x2b3d60;});}return _0x3c3f37;})[_0xd6cb('0x2a')](respondWithResult(_0x5916ba,0xc9))['catch'](handleError(_0x5916ba,null));};exports['clone']=function(_0x1afac8,_0x5cc1a3){var _0x10729b={'where':{'id':_0x1afac8['params']['id']}},_0x3a641a={};_0x3a641a['model']=_[_0xd6cb('0x35')](db[_0xd6cb('0x30')]['rawAttributes']);_0x10729b[_0xd6cb('0x37')]=_['intersection'](_0x3a641a[_0xd6cb('0x33')],qs[_0xd6cb('0x38')](_0x1afac8[_0xd6cb('0x34')][_0xd6cb('0x38')]));_0x10729b[_0xd6cb('0x37')]=_0x10729b[_0xd6cb('0x37')][_0xd6cb('0x39')]?_0x10729b[_0xd6cb('0x37')]:_0x3a641a[_0xd6cb('0x33')];if(_0x1afac8['query'][_0xd6cb('0x42')]){_0x10729b[_0xd6cb('0x47')]=[{'all':!![]}];}_0x10729b=_['merge']({},_0x10729b,_0x1afac8[_0xd6cb('0x41')]);return db[_0xd6cb('0x30')][_0xd6cb('0x48')](_0x10729b)['then'](handleEntityNotFound(_0x5cc1a3,null))['then'](function(_0x365573){if(_0x365573){var _0x240084=_0x365573[_0xd6cb('0x4c')]({'plain':!![]});_0x240084=qs[_0xd6cb('0x53')](_0x240084,['id',_0xd6cb('0x54'),_0xd6cb('0x55')]);_0x1afac8['body']=_[_0xd6cb('0x53')](_0x1afac8['body'],['id',_0xd6cb('0x54'),'updatedAt']);return db[_0xd6cb('0x30')][_0xd6cb('0x49')](_[_0xd6cb('0x40')](_0x240084,_0x1afac8[_0xd6cb('0x4a')]),{'include':_0x1afac8['query'][_0xd6cb('0x42')]?[{'all':!![]}]:undefined})[_0xd6cb('0x2a')](function(_0x21d78a){var _0x298959=_0x1afac8[_0xd6cb('0x4b')][_0xd6cb('0x4c')]({'plain':!![]});if(!_0x298959)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x298959[_0xd6cb('0x4e')]===_0xd6cb('0x4b')){var _0x39c357=_0x21d78a[_0xd6cb('0x4c')]({'plain':!![]});var _0x1e72f4=_0xd6cb('0x4f');return db[_0xd6cb('0x50')][_0xd6cb('0x48')]({'where':{'name':_0x1e72f4,'userProfileId':_0x298959[_0xd6cb('0x56')]},'raw':!![]})[_0xd6cb('0x2a')](function(_0x2d4d7f){if(_0x2d4d7f&&_0x2d4d7f[_0xd6cb('0x57')]===0x0){return db[_0xd6cb('0x2b')][_0xd6cb('0x49')]({'name':_0x39c357['name'],'resourceId':_0x39c357['id'],'type':_0x2d4d7f[_0xd6cb('0x2d')],'sectionId':_0x2d4d7f['id']},{})[_0xd6cb('0x2a')](function(){return _0x21d78a;});}else{return _0x21d78a;}})[_0xd6cb('0x51')](function(_0x5db14a){logger[_0xd6cb('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5db14a);throw _0x5db14a;});}return _0x21d78a;});}})[_0xd6cb('0x2a')](respondWithResult(_0x5cc1a3,0xc9))[_0xd6cb('0x51')](handleError(_0x5cc1a3,null));};exports['update']=function(_0x564c00,_0x2a318f){if(_0x564c00[_0xd6cb('0x4a')]['id']){delete _0x564c00['body']['id'];}return db[_0xd6cb('0x30')]['find']({'where':{'id':_0x564c00['params']['id']}})[_0xd6cb('0x2a')](handleEntityNotFound(_0x2a318f,null))[_0xd6cb('0x2a')](saveUpdates(_0x564c00[_0xd6cb('0x4a')],null))[_0xd6cb('0x2a')](respondWithResult(_0x2a318f,null))[_0xd6cb('0x51')](handleError(_0x2a318f,null));};exports['destroy']=function(_0x4cc500,_0x9b3dfb){return db[_0xd6cb('0x30')][_0xd6cb('0x48')]({'where':{'id':_0x4cc500['params']['id']}})[_0xd6cb('0x2a')](handleEntityNotFound(_0x9b3dfb,null))[_0xd6cb('0x2a')](removeEntity(_0x9b3dfb,null))['catch'](handleError(_0x9b3dfb,null));};function widgetAttributes(_0x1a1423){try{switch(_0x1a1423[_0xd6cb('0x58')]){case _0xd6cb('0x59'):return[{'name':_0xd6cb('0x5a'),'value':_0x1a1423[_0xd6cb('0x5a')]||(_0x1a1423[_0xd6cb('0x5b')]&&_0x1a1423['attrs'][0x0]?_0x1a1423[_0xd6cb('0x5b')][0x0][_0xd6cb('0x5c')]:undefined)||_0xd6cb('0x5d')}];case _0xd6cb('0x5e'):return[{'name':_0xd6cb('0x5f'),'value':_0x1a1423[_0xd6cb('0x5f')]||(_0x1a1423[_0xd6cb('0x5b')]&&_0x1a1423[_0xd6cb('0x5b')][0x0]?_0x1a1423['attrs'][0x0][_0xd6cb('0x5c')]:undefined)||''}];case'clock':return[{'name':_0xd6cb('0x60'),'value':_0x1a1423[_0xd6cb('0x60')]||(_0x1a1423[_0xd6cb('0x5b')]&&_0x1a1423['attrs'][0x0]?_0x1a1423['attrs'][0x0][_0xd6cb('0x5c')]:undefined)||_0xd6cb('0x61')},{'name':_0xd6cb('0x62'),'value':_0x1a1423[_0xd6cb('0x62')]||(_0x1a1423['attrs']&&_0x1a1423[_0xd6cb('0x5b')][0x1]?_0x1a1423[_0xd6cb('0x5b')][0x1][_0xd6cb('0x5c')]:undefined)||'0.00'},{'name':_0xd6cb('0x63'),'value':_0x1a1423[_0xd6cb('0x63')]||(_0x1a1423['attrs']&&_0x1a1423[_0xd6cb('0x5b')][0x2]?_0x1a1423[_0xd6cb('0x5b')][0x2][_0xd6cb('0x5c')]:undefined)||0xc}];case _0xd6cb('0x64'):return[{'name':_0xd6cb('0x65'),'value':_0x1a1423[_0xd6cb('0x65')]||(_0x1a1423['attrs']&&_0x1a1423[_0xd6cb('0x5b')][0x0]?_0x1a1423[_0xd6cb('0x5b')][0x0][_0xd6cb('0x5c')]:undefined)||_0xd6cb('0x66')},{'name':_0xd6cb('0x67'),'value':_0x1a1423[_0xd6cb('0x67')]||(_0x1a1423[_0xd6cb('0x5b')]&&_0x1a1423[_0xd6cb('0x5b')][0x1]?_0x1a1423[_0xd6cb('0x5b')][0x1][_0xd6cb('0x5c')]:undefined)||[]},{'name':_0xd6cb('0x63'),'value':_0x1a1423[_0xd6cb('0x63')]||(_0x1a1423['attrs']&&_0x1a1423['attrs'][0x2]?_0x1a1423[_0xd6cb('0x5b')][0x2][_0xd6cb('0x5c')]:undefined)||0x14}];case _0xd6cb('0x68'):case'pie-chart':return[{'name':'attrSerie1','value':_0x1a1423[_0xd6cb('0x69')]||(_0x1a1423[_0xd6cb('0x5b')]&&_0x1a1423[_0xd6cb('0x5b')][0x0]?_0x1a1423[_0xd6cb('0x5b')][0x0]['value']:undefined)||_0xd6cb('0x66')},{'name':_0xd6cb('0x6a'),'value':_0x1a1423[_0xd6cb('0x6a')]||(_0x1a1423['attrs']&&_0x1a1423['attrs'][0x1]?_0x1a1423[_0xd6cb('0x5b')][0x1][_0xd6cb('0x5c')]:undefined)||null},{'name':_0xd6cb('0x6b'),'value':_0x1a1423[_0xd6cb('0x6b')]||(_0x1a1423[_0xd6cb('0x5b')]&&_0x1a1423['attrs'][0x2]?_0x1a1423[_0xd6cb('0x5b')][0x2][_0xd6cb('0x5c')]:undefined)||null},{'name':_0xd6cb('0x67'),'value':_0x1a1423[_0xd6cb('0x67')]||(_0x1a1423[_0xd6cb('0x5b')]&&_0x1a1423[_0xd6cb('0x5b')][0x3]?_0x1a1423['attrs'][0x3][_0xd6cb('0x5c')]:undefined)||[]}];case _0xd6cb('0x6c'):return[{'name':_0xd6cb('0x6d'),'type':_0x1a1423['reportType']||(_0x1a1423[_0xd6cb('0x5b')]&&_0x1a1423[_0xd6cb('0x5b')][0x0]?_0x1a1423[_0xd6cb('0x5b')][0x0]['type']:undefined)||null,'value':_0x1a1423[_0xd6cb('0x6d')]||(_0x1a1423[_0xd6cb('0x5b')]&&_0x1a1423['attrs'][0x0]?_0x1a1423['attrs'][0x0][_0xd6cb('0x5c')]:undefined)||null},{'name':'attrRefresh','value':_0x1a1423[_0xd6cb('0x6e')]||(_0x1a1423[_0xd6cb('0x5b')]&&_0x1a1423[_0xd6cb('0x5b')][0x1]?_0x1a1423[_0xd6cb('0x5b')][0x1][_0xd6cb('0x5c')]:undefined)||0x0}];default:return[];}}catch(_0x38f8cb){logger[_0xd6cb('0x2c')](_0xd6cb('0x6f'),JSON[_0xd6cb('0x70')](_0x38f8cb));return[];}}exports[_0xd6cb('0x71')]=function(_0x5e706e,_0x90174c,_0xfc085c){if(_0x5e706e['body']['id']){delete _0x5e706e[_0xd6cb('0x4a')]['id'];}return db[_0xd6cb('0x30')][_0xd6cb('0x48')]({'where':{'id':_0x5e706e[_0xd6cb('0x46')]['id']}})[_0xd6cb('0x2a')](handleEntityNotFound(_0x90174c,null))[_0xd6cb('0x2a')](function(_0x3fca9b){if(_0x3fca9b){_0x5e706e[_0xd6cb('0x4a')][_0xd6cb('0x72')]=_0x3fca9b['id'];_0x5e706e[_0xd6cb('0x4a')][_0xd6cb('0x5b')]=widgetAttributes(_0x5e706e[_0xd6cb('0x4a')]);return db['DashboardItem'][_0xd6cb('0x49')](_0x5e706e['body']);}})[_0xd6cb('0x2a')](respondWithResult(_0x90174c,null))[_0xd6cb('0x51')](handleError(_0x90174c,null));};exports[_0xd6cb('0x73')]=function(_0x252387,_0x1eb34a,_0x6176d0){var _0xa83ae6={};var _0xe4d986={};var _0x1fb248;var _0x4a8c74;return db[_0xd6cb('0x30')]['findOne']({'where':{'id':_0x252387[_0xd6cb('0x46')]['id']}})[_0xd6cb('0x2a')](handleEntityNotFound(_0x1eb34a,null))[_0xd6cb('0x2a')](function(_0x44be9f){if(_0x44be9f){_0x1fb248=_0x44be9f;_0xe4d986[_0xd6cb('0x33')]=_['keys'](db[_0xd6cb('0x74')][_0xd6cb('0x31')]);_0xe4d986[_0xd6cb('0x34')]=_[_0xd6cb('0x35')](_0x252387[_0xd6cb('0x34')]);_0xe4d986[_0xd6cb('0x3e')]=_[_0xd6cb('0x36')](_0xe4d986[_0xd6cb('0x33')],_0xe4d986['query']);_0xa83ae6['attributes']=_['intersection'](_0xe4d986[_0xd6cb('0x33')],qs['fields'](_0x252387[_0xd6cb('0x34')][_0xd6cb('0x38')]));_0xa83ae6[_0xd6cb('0x37')]=_0xa83ae6[_0xd6cb('0x37')][_0xd6cb('0x39')]?_0xa83ae6[_0xd6cb('0x37')]:_0xe4d986[_0xd6cb('0x33')];_0xa83ae6['order']=qs[_0xd6cb('0x3c')](_0x252387[_0xd6cb('0x34')][_0xd6cb('0x3c')]);_0xa83ae6[_0xd6cb('0x3d')]=qs[_0xd6cb('0x3e')](_['pick'](_0x252387['query'],_0xe4d986['filters']));if(_0x252387[_0xd6cb('0x34')][_0xd6cb('0x3f')]){_0xa83ae6[_0xd6cb('0x3d')]=_[_0xd6cb('0x40')](_0xa83ae6['where'],{'$or':_[_0xd6cb('0x2f')](_0xa83ae6[_0xd6cb('0x37')],function(_0x1cdb52){var _0x243ac3={};_0x243ac3[_0x1cdb52]={'$like':'%'+_0x252387[_0xd6cb('0x34')][_0xd6cb('0x3f')]+'%'};return _0x243ac3;})});}_0xa83ae6=_['merge']({},_0xa83ae6,_0x252387[_0xd6cb('0x41')]);return _0x1fb248[_0xd6cb('0x73')](_0xa83ae6);}})[_0xd6cb('0x2a')](function(_0x26ef5e){if(_0x26ef5e){_0x4a8c74=_0x26ef5e[_0xd6cb('0x39')];if(!_0x252387[_0xd6cb('0x34')][_0xd6cb('0x3a')](_0xd6cb('0x75'))){_0xa83ae6['limit']=qs[_0xd6cb('0x21')](_0x252387['query'][_0xd6cb('0x21')]);_0xa83ae6[_0xd6cb('0x1f')]=qs[_0xd6cb('0x1f')](_0x252387['query']['offset']);}return _0x1fb248['getItems'](_0xa83ae6);}})['then'](function(_0x24aa09){if(_0x24aa09){return _0x24aa09?{'count':_0x4a8c74,'rows':_0x24aa09}:null;}})[_0xd6cb('0x2a')](respondWithResult(_0x1eb34a,null))['catch'](handleError(_0x1eb34a,null));};
\ No newline at end of file
+var _0xed8d=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','json','undefined','limit','count','offset','status','set','apply','reject','save','then','destroy','get','end','error','name','Dashboard','rawAttributes','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','includeAll','include','rows','catch','show','params','find','create','user','role','CustomDashboards','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','options','omit','createdAt','updatedAt','body','UserProfileResource','update','iframe','attrUrl','attrs','value','custom','attrPath','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','reportType','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','DashboardId','DashboardItem','getItems','map','nolimit','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service'];(function(_0x23a079,_0xb8c9aa){var _0x53f2a5=function(_0x1b3dc5){while(--_0x1b3dc5){_0x23a079['push'](_0x23a079['shift']());}};_0x53f2a5(++_0xb8c9aa);}(_0xed8d,0x14e));var _0xded8=function(_0x2d1258,_0x19cfd1){_0x2d1258=_0x2d1258-0x0;var _0x2174dd=_0xed8d[_0x2d1258];return _0x2174dd;};'use strict';var emlformat=require(_0xded8('0x0'));var rimraf=require(_0xded8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xded8('0x2'));var moment=require(_0xded8('0x3'));var BPromise=require(_0xded8('0x4'));var Mustache=require(_0xded8('0x5'));var util=require(_0xded8('0x6'));var path=require(_0xded8('0x7'));var sox=require(_0xded8('0x8'));var csv=require(_0xded8('0x9'));var ejs=require(_0xded8('0xa'));var fs=require('fs');var fs_extra=require(_0xded8('0xb'));var _=require(_0xded8('0xc'));var squel=require(_0xded8('0xd'));var crypto=require(_0xded8('0xe'));var jsforce=require(_0xded8('0xf'));var deskjs=require(_0xded8('0x10'));var toCsv=require(_0xded8('0x9'));var querystring=require(_0xded8('0x11'));var Papa=require(_0xded8('0x12'));var Redis=require('ioredis');var authService=require(_0xded8('0x13'));var qs=require(_0xded8('0x14'));var as=require(_0xded8('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xded8('0x16'))('api');var utils=require(_0xded8('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xded8('0x18'));var db=require(_0xded8('0x19'))['db'];config[_0xded8('0x1a')]=_['defaults'](config[_0xded8('0x1a')],{'host':_0xded8('0x1b'),'port':0x18eb});var socket=require(_0xded8('0x1c'))(new Redis(config[_0xded8('0x1a')]));require('./dashboard.socket')[_0xded8('0x1d')](socket);function respondWithStatusCode(_0x5c5d48,_0x5b44d5){_0x5b44d5=_0x5b44d5||0xcc;return function(_0x9f03bf){if(_0x9f03bf){return _0x5c5d48[_0xded8('0x1e')](_0x5b44d5);}return _0x5c5d48['status'](_0x5b44d5)['end']();};}function respondWithResult(_0x4fdaf8,_0x3de678){_0x3de678=_0x3de678||0xc8;return function(_0xf6af26){if(_0xf6af26){return _0x4fdaf8['status'](_0x3de678)[_0xded8('0x1f')](_0xf6af26);}};}function respondWithFilteredResult(_0x5a133c,_0x53549d){return function(_0xbb18a2){if(_0xbb18a2){var _0x136b07=typeof _0x53549d['offset']===_0xded8('0x20')&&typeof _0x53549d[_0xded8('0x21')]===_0xded8('0x20');var _0x5ba776=_0xbb18a2[_0xded8('0x22')];var _0x5e08f2=_0x136b07?0x0:_0x53549d[_0xded8('0x23')];var _0x4fce68=_0x136b07?_0xbb18a2['count']:_0x53549d['offset']+_0x53549d[_0xded8('0x21')];var _0x45f5d9;if(_0x4fce68>=_0x5ba776){_0x4fce68=_0x5ba776;_0x45f5d9=0xc8;}else{_0x45f5d9=0xce;}_0x5a133c[_0xded8('0x24')](_0x45f5d9);return _0x5a133c[_0xded8('0x25')]('Content-Range',_0x5e08f2+'-'+_0x4fce68+'/'+_0x5ba776)[_0xded8('0x1f')](_0xbb18a2);}return null;};}function patchUpdates(_0xf9b24f){return function(_0x24cd97){try{jsonpatch[_0xded8('0x26')](_0x24cd97,_0xf9b24f,!![]);}catch(_0xd75396){return BPromise[_0xded8('0x27')](_0xd75396);}return _0x24cd97[_0xded8('0x28')]();};}function saveUpdates(_0x1916c7,_0x22c386){return function(_0x502a49){if(_0x502a49){return _0x502a49['update'](_0x1916c7)[_0xded8('0x29')](function(_0x4d0145){return _0x4d0145;});}return null;};}function removeEntity(_0x28a961,_0x5a82a3){return function(_0x3e6788){if(_0x3e6788){return _0x3e6788[_0xded8('0x2a')]()[_0xded8('0x29')](function(){var _0x44b7e6=_0x3e6788[_0xded8('0x2b')]({'plain':!![]});var _0x109f74='CustomDashboards';return db['UserProfileResource'][_0xded8('0x2a')]({'where':{'type':_0x109f74,'resourceId':_0x44b7e6['id']}})['then'](function(){return _0x3e6788;});})[_0xded8('0x29')](function(){_0x28a961[_0xded8('0x24')](0xcc)[_0xded8('0x2c')]();});}};}function handleEntityNotFound(_0x57a3e7,_0x39ff2b){return function(_0x56a189){if(!_0x56a189){_0x57a3e7[_0xded8('0x1e')](0x194);}return _0x56a189;};}function handleError(_0x2fa811,_0x69c2b6){_0x69c2b6=_0x69c2b6||0x1f4;return function(_0x5e0038){logger[_0xded8('0x2d')](_0x5e0038['stack']);if(_0x5e0038[_0xded8('0x2e')]){delete _0x5e0038[_0xded8('0x2e')];}_0x2fa811[_0xded8('0x24')](_0x69c2b6)['send'](_0x5e0038);};}exports['index']=function(_0x40bb03,_0x1ec3b1){var _0x2806c8={},_0x166701={},_0x582ae3={'count':0x0,'rows':[]};var _0x334c30=_['map'](db[_0xded8('0x2f')][_0xded8('0x30')],function(_0x45210c){return{'name':_0x45210c['fieldName'],'type':_0x45210c[_0xded8('0x31')][_0xded8('0x32')]};});_0x166701[_0xded8('0x33')]=_['map'](_0x334c30,_0xded8('0x2e'));_0x166701['query']=_[_0xded8('0x34')](_0x40bb03[_0xded8('0x35')]);_0x166701[_0xded8('0x36')]=_['intersection'](_0x166701[_0xded8('0x33')],_0x166701[_0xded8('0x35')]);_0x2806c8[_0xded8('0x37')]=_[_0xded8('0x38')](_0x166701[_0xded8('0x33')],qs['fields'](_0x40bb03[_0xded8('0x35')][_0xded8('0x39')]));_0x2806c8['attributes']=_0x2806c8[_0xded8('0x37')][_0xded8('0x3a')]?_0x2806c8[_0xded8('0x37')]:_0x166701[_0xded8('0x33')];if(!_0x40bb03[_0xded8('0x35')][_0xded8('0x3b')]('nolimit')){_0x2806c8[_0xded8('0x21')]=qs[_0xded8('0x21')](_0x40bb03[_0xded8('0x35')]['limit']);_0x2806c8[_0xded8('0x23')]=qs[_0xded8('0x23')](_0x40bb03['query'][_0xded8('0x23')]);}_0x2806c8[_0xded8('0x3c')]=qs[_0xded8('0x3d')](_0x40bb03['query'][_0xded8('0x3d')]);_0x2806c8['where']=qs['filters'](_[_0xded8('0x3e')](_0x40bb03[_0xded8('0x35')],_0x166701[_0xded8('0x36')]),_0x334c30);if(_0x40bb03['query'][_0xded8('0x3f')]){_0x2806c8[_0xded8('0x40')]=_[_0xded8('0x41')](_0x2806c8[_0xded8('0x40')],{'$or':_['map'](_0x334c30,function(_0x59d3c3){if(_0x59d3c3[_0xded8('0x31')]!=='VIRTUAL'){var _0x10b26f={};_0x10b26f[_0x59d3c3['name']]={'$like':'%'+_0x40bb03['query'][_0xded8('0x3f')]+'%'};return _0x10b26f;}})});}_0x2806c8=_['merge']({},_0x2806c8,_0x40bb03['options']);var _0x305e8b={'where':_0x2806c8[_0xded8('0x40')]};return db[_0xded8('0x2f')][_0xded8('0x22')](_0x305e8b)[_0xded8('0x29')](function(_0x52c6f8){_0x582ae3[_0xded8('0x22')]=_0x52c6f8;if(_0x40bb03[_0xded8('0x35')][_0xded8('0x42')]){_0x2806c8[_0xded8('0x43')]=[{'all':!![]}];}return db[_0xded8('0x2f')]['findAll'](_0x2806c8);})['then'](function(_0xac51fb){_0x582ae3[_0xded8('0x44')]=_0xac51fb;return _0x582ae3;})[_0xded8('0x29')](respondWithFilteredResult(_0x1ec3b1,_0x2806c8))[_0xded8('0x45')](handleError(_0x1ec3b1,null));};exports[_0xded8('0x46')]=function(_0x4eda0e,_0x4541d3){var _0x4c8997={'raw':![],'where':{'id':_0x4eda0e[_0xded8('0x47')]['id']}},_0x5d4fe0={};_0x5d4fe0[_0xded8('0x33')]=_[_0xded8('0x34')](db['Dashboard'][_0xded8('0x30')]);_0x5d4fe0['query']=_[_0xded8('0x34')](_0x4eda0e[_0xded8('0x35')]);_0x5d4fe0[_0xded8('0x36')]=_[_0xded8('0x38')](_0x5d4fe0['model'],_0x5d4fe0[_0xded8('0x35')]);_0x4c8997[_0xded8('0x37')]=_[_0xded8('0x38')](_0x5d4fe0['model'],qs['fields'](_0x4eda0e[_0xded8('0x35')]['fields']));_0x4c8997[_0xded8('0x37')]=_0x4c8997['attributes'][_0xded8('0x3a')]?_0x4c8997[_0xded8('0x37')]:_0x5d4fe0[_0xded8('0x33')];if(_0x4eda0e['query']['includeAll']){_0x4c8997[_0xded8('0x43')]=[{'all':!![]}];}_0x4c8997=_[_0xded8('0x41')]({},_0x4c8997,_0x4eda0e['options']);return db[_0xded8('0x2f')][_0xded8('0x48')](_0x4c8997)['then'](handleEntityNotFound(_0x4541d3,null))[_0xded8('0x29')](respondWithResult(_0x4541d3,null))[_0xded8('0x45')](handleError(_0x4541d3,null));};exports[_0xded8('0x49')]=function(_0x229570,_0x5854e6){return db[_0xded8('0x2f')][_0xded8('0x49')](_0x229570['body'],{})[_0xded8('0x29')](function(_0x15991a){var _0xa8b310=_0x229570[_0xded8('0x4a')][_0xded8('0x2b')]({'plain':!![]});if(!_0xa8b310)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xa8b310[_0xded8('0x4b')]===_0xded8('0x4a')){var _0x42257f=_0x15991a['get']({'plain':!![]});var _0x33a97a=_0xded8('0x4c');return db[_0xded8('0x4d')][_0xded8('0x48')]({'where':{'name':_0x33a97a,'userProfileId':_0xa8b310[_0xded8('0x4e')]},'raw':!![]})[_0xded8('0x29')](function(_0x30d59d){if(_0x30d59d&&_0x30d59d[_0xded8('0x4f')]===0x0){return db['UserProfileResource']['create']({'name':_0x42257f['name'],'resourceId':_0x42257f['id'],'type':_0x30d59d[_0xded8('0x2e')],'sectionId':_0x30d59d['id']},{})[_0xded8('0x29')](function(){return _0x15991a;});}else{return _0x15991a;}})[_0xded8('0x45')](function(_0x38a5fe){logger[_0xded8('0x2d')](_0xded8('0x50'),_0x38a5fe);throw _0x38a5fe;});}return _0x15991a;})['then'](respondWithResult(_0x5854e6,0xc9))['catch'](handleError(_0x5854e6,null));};exports['clone']=function(_0x56d320,_0x296543){var _0x1f0fd6={'where':{'id':_0x56d320['params']['id']}},_0x487a06={};_0x487a06['model']=_[_0xded8('0x34')](db[_0xded8('0x2f')][_0xded8('0x30')]);_0x1f0fd6[_0xded8('0x37')]=_['intersection'](_0x487a06[_0xded8('0x33')],qs['fields'](_0x56d320[_0xded8('0x35')][_0xded8('0x39')]));_0x1f0fd6[_0xded8('0x37')]=_0x1f0fd6[_0xded8('0x37')][_0xded8('0x3a')]?_0x1f0fd6[_0xded8('0x37')]:_0x487a06['model'];if(_0x56d320[_0xded8('0x35')]['includeAll']){_0x1f0fd6[_0xded8('0x43')]=[{'all':!![]}];}_0x1f0fd6=_[_0xded8('0x41')]({},_0x1f0fd6,_0x56d320[_0xded8('0x51')]);return db['Dashboard'][_0xded8('0x48')](_0x1f0fd6)[_0xded8('0x29')](handleEntityNotFound(_0x296543,null))[_0xded8('0x29')](function(_0x54738d){if(_0x54738d){var _0x580870=_0x54738d[_0xded8('0x2b')]({'plain':!![]});_0x580870=qs[_0xded8('0x52')](_0x580870,['id',_0xded8('0x53'),_0xded8('0x54')]);_0x56d320[_0xded8('0x55')]=_[_0xded8('0x52')](_0x56d320['body'],['id','createdAt','updatedAt']);return db['Dashboard'][_0xded8('0x49')](_['merge'](_0x580870,_0x56d320[_0xded8('0x55')]),{'include':_0x56d320['query'][_0xded8('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x4a47b5){var _0x12c366=_0x56d320[_0xded8('0x4a')][_0xded8('0x2b')]({'plain':!![]});if(!_0x12c366)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x12c366[_0xded8('0x4b')]==='user'){var _0x530d4e=_0x4a47b5['get']({'plain':!![]});var _0x57ff63=_0xded8('0x4c');return db[_0xded8('0x4d')][_0xded8('0x48')]({'where':{'name':_0x57ff63,'userProfileId':_0x12c366[_0xded8('0x4e')]},'raw':!![]})['then'](function(_0x49e8a9){if(_0x49e8a9&&_0x49e8a9[_0xded8('0x4f')]===0x0){return db[_0xded8('0x56')]['create']({'name':_0x530d4e[_0xded8('0x2e')],'resourceId':_0x530d4e['id'],'type':_0x49e8a9[_0xded8('0x2e')],'sectionId':_0x49e8a9['id']},{})['then'](function(){return _0x4a47b5;});}else{return _0x4a47b5;}})[_0xded8('0x45')](function(_0x30224a){logger['error'](_0xded8('0x50'),_0x30224a);throw _0x30224a;});}return _0x4a47b5;});}})[_0xded8('0x29')](respondWithResult(_0x296543,0xc9))[_0xded8('0x45')](handleError(_0x296543,null));};exports[_0xded8('0x57')]=function(_0x3c200f,_0x2c456c){if(_0x3c200f[_0xded8('0x55')]['id']){delete _0x3c200f[_0xded8('0x55')]['id'];}return db[_0xded8('0x2f')]['find']({'where':{'id':_0x3c200f[_0xded8('0x47')]['id']}})[_0xded8('0x29')](handleEntityNotFound(_0x2c456c,null))[_0xded8('0x29')](saveUpdates(_0x3c200f['body'],null))[_0xded8('0x29')](respondWithResult(_0x2c456c,null))[_0xded8('0x45')](handleError(_0x2c456c,null));};exports[_0xded8('0x2a')]=function(_0x523d25,_0x495c79){return db['Dashboard'][_0xded8('0x48')]({'where':{'id':_0x523d25[_0xded8('0x47')]['id']}})[_0xded8('0x29')](handleEntityNotFound(_0x495c79,null))[_0xded8('0x29')](removeEntity(_0x495c79,null))[_0xded8('0x45')](handleError(_0x495c79,null));};function widgetAttributes(_0x3e8568){try{switch(_0x3e8568[_0xded8('0x31')]){case _0xded8('0x58'):return[{'name':'attrUrl','value':_0x3e8568[_0xded8('0x59')]||(_0x3e8568[_0xded8('0x5a')]&&_0x3e8568['attrs'][0x0]?_0x3e8568[_0xded8('0x5a')][0x0][_0xded8('0x5b')]:undefined)||'https://'}];case _0xded8('0x5c'):return[{'name':_0xded8('0x5d'),'value':_0x3e8568['attrPath']||(_0x3e8568[_0xded8('0x5a')]&&_0x3e8568[_0xded8('0x5a')][0x0]?_0x3e8568[_0xded8('0x5a')][0x0][_0xded8('0x5b')]:undefined)||''}];case _0xded8('0x5e'):return[{'name':_0xded8('0x5f'),'value':_0x3e8568[_0xded8('0x5f')]||(_0x3e8568[_0xded8('0x5a')]&&_0x3e8568[_0xded8('0x5a')][0x0]?_0x3e8568['attrs'][0x0][_0xded8('0x5b')]:undefined)||'HH:mm:ss'},{'name':_0xded8('0x60'),'value':_0x3e8568['attrTimezone']||(_0x3e8568[_0xded8('0x5a')]&&_0x3e8568[_0xded8('0x5a')][0x1]?_0x3e8568['attrs'][0x1][_0xded8('0x5b')]:undefined)||_0xded8('0x61')},{'name':'attrFontSize','value':_0x3e8568[_0xded8('0x62')]||(_0x3e8568[_0xded8('0x5a')]&&_0x3e8568[_0xded8('0x5a')][0x2]?_0x3e8568[_0xded8('0x5a')][0x2][_0xded8('0x5b')]:undefined)||0xc}];case _0xded8('0x63'):return[{'name':_0xded8('0x64'),'value':_0x3e8568[_0xded8('0x64')]||(_0x3e8568[_0xded8('0x5a')]&&_0x3e8568[_0xded8('0x5a')][0x0]?_0x3e8568[_0xded8('0x5a')][0x0][_0xded8('0x5b')]:undefined)||_0xded8('0x65')},{'name':'attrVoiceQueues','value':_0x3e8568[_0xded8('0x66')]||(_0x3e8568[_0xded8('0x5a')]&&_0x3e8568['attrs'][0x1]?_0x3e8568[_0xded8('0x5a')][0x1][_0xded8('0x5b')]:undefined)||[]},{'name':'attrFontSize','value':_0x3e8568[_0xded8('0x62')]||(_0x3e8568[_0xded8('0x5a')]&&_0x3e8568[_0xded8('0x5a')][0x2]?_0x3e8568[_0xded8('0x5a')][0x2]['value']:undefined)||0x14}];case'multibar-chart':case _0xded8('0x67'):return[{'name':_0xded8('0x68'),'value':_0x3e8568['attrSerie1']||(_0x3e8568[_0xded8('0x5a')]&&_0x3e8568[_0xded8('0x5a')][0x0]?_0x3e8568['attrs'][0x0][_0xded8('0x5b')]:undefined)||_0xded8('0x65')},{'name':_0xded8('0x69'),'value':_0x3e8568[_0xded8('0x69')]||(_0x3e8568['attrs']&&_0x3e8568[_0xded8('0x5a')][0x1]?_0x3e8568['attrs'][0x1][_0xded8('0x5b')]:undefined)||null},{'name':'attrSerie3','value':_0x3e8568[_0xded8('0x6a')]||(_0x3e8568['attrs']&&_0x3e8568['attrs'][0x2]?_0x3e8568[_0xded8('0x5a')][0x2][_0xded8('0x5b')]:undefined)||null},{'name':_0xded8('0x66'),'value':_0x3e8568['attrVoiceQueues']||(_0x3e8568[_0xded8('0x5a')]&&_0x3e8568['attrs'][0x3]?_0x3e8568['attrs'][0x3]['value']:undefined)||[]}];case _0xded8('0x6b'):return[{'name':'attrReport','type':_0x3e8568[_0xded8('0x6c')]||(_0x3e8568[_0xded8('0x5a')]&&_0x3e8568[_0xded8('0x5a')][0x0]?_0x3e8568[_0xded8('0x5a')][0x0][_0xded8('0x31')]:undefined)||null,'value':_0x3e8568[_0xded8('0x6d')]||(_0x3e8568[_0xded8('0x5a')]&&_0x3e8568['attrs'][0x0]?_0x3e8568[_0xded8('0x5a')][0x0][_0xded8('0x5b')]:undefined)||null},{'name':_0xded8('0x6e'),'value':_0x3e8568['attrRefresh']||(_0x3e8568[_0xded8('0x5a')]&&_0x3e8568[_0xded8('0x5a')][0x1]?_0x3e8568[_0xded8('0x5a')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x7390e){logger['error'](_0xded8('0x6f'),JSON[_0xded8('0x70')](_0x7390e));return[];}}exports['addItem']=function(_0x381599,_0x174175,_0x176c6a){if(_0x381599[_0xded8('0x55')]['id']){delete _0x381599[_0xded8('0x55')]['id'];}return db[_0xded8('0x2f')][_0xded8('0x48')]({'where':{'id':_0x381599[_0xded8('0x47')]['id']}})[_0xded8('0x29')](handleEntityNotFound(_0x174175,null))[_0xded8('0x29')](function(_0xc4029e){if(_0xc4029e){_0x381599[_0xded8('0x55')][_0xded8('0x71')]=_0xc4029e['id'];_0x381599[_0xded8('0x55')]['attrs']=widgetAttributes(_0x381599[_0xded8('0x55')]);return db[_0xded8('0x72')][_0xded8('0x49')](_0x381599[_0xded8('0x55')]);}})[_0xded8('0x29')](respondWithResult(_0x174175,null))[_0xded8('0x45')](handleError(_0x174175,null));};exports[_0xded8('0x73')]=function(_0x561ab7,_0x455f38,_0x42f58f){var _0x54129d={};var _0x1d56df={};var _0x4b1fbf;var _0x359929;return db[_0xded8('0x2f')]['findOne']({'where':{'id':_0x561ab7[_0xded8('0x47')]['id']}})[_0xded8('0x29')](handleEntityNotFound(_0x455f38,null))['then'](function(_0x51a840){if(_0x51a840){_0x4b1fbf=_0x51a840;_0x1d56df[_0xded8('0x33')]=_['keys'](db[_0xded8('0x72')][_0xded8('0x30')]);_0x1d56df[_0xded8('0x35')]=_['keys'](_0x561ab7[_0xded8('0x35')]);_0x1d56df['filters']=_[_0xded8('0x38')](_0x1d56df[_0xded8('0x33')],_0x1d56df['query']);_0x54129d[_0xded8('0x37')]=_[_0xded8('0x38')](_0x1d56df[_0xded8('0x33')],qs[_0xded8('0x39')](_0x561ab7[_0xded8('0x35')]['fields']));_0x54129d[_0xded8('0x37')]=_0x54129d['attributes'][_0xded8('0x3a')]?_0x54129d[_0xded8('0x37')]:_0x1d56df[_0xded8('0x33')];_0x54129d[_0xded8('0x3c')]=qs[_0xded8('0x3d')](_0x561ab7['query'][_0xded8('0x3d')]);_0x54129d[_0xded8('0x40')]=qs[_0xded8('0x36')](_['pick'](_0x561ab7[_0xded8('0x35')],_0x1d56df[_0xded8('0x36')]));if(_0x561ab7[_0xded8('0x35')]['filter']){_0x54129d[_0xded8('0x40')]=_[_0xded8('0x41')](_0x54129d[_0xded8('0x40')],{'$or':_[_0xded8('0x74')](_0x54129d[_0xded8('0x37')],function(_0x1783f7){var _0x4737fd={};_0x4737fd[_0x1783f7]={'$like':'%'+_0x561ab7[_0xded8('0x35')][_0xded8('0x3f')]+'%'};return _0x4737fd;})});}_0x54129d=_[_0xded8('0x41')]({},_0x54129d,_0x561ab7[_0xded8('0x51')]);return _0x4b1fbf[_0xded8('0x73')](_0x54129d);}})[_0xded8('0x29')](function(_0x5786d4){if(_0x5786d4){_0x359929=_0x5786d4[_0xded8('0x3a')];if(!_0x561ab7[_0xded8('0x35')][_0xded8('0x3b')](_0xded8('0x75'))){_0x54129d[_0xded8('0x21')]=qs[_0xded8('0x21')](_0x561ab7[_0xded8('0x35')][_0xded8('0x21')]);_0x54129d['offset']=qs['offset'](_0x561ab7[_0xded8('0x35')][_0xded8('0x23')]);}return _0x4b1fbf[_0xded8('0x73')](_0x54129d);}})[_0xded8('0x29')](function(_0x2d5c95){if(_0x2d5c95){return _0x2d5c95?{'count':_0x359929,'rows':_0x2d5c95}:null;}})[_0xded8('0x29')](respondWithResult(_0x455f38,null))[_0xded8('0x45')](handleError(_0x455f38,null));};
\ No newline at end of file
index 5dfc395..222c45a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ed6=['emit','hook','../../mysqldb','Dashboard','save','update','remove'];(function(_0x4e85f2,_0x1cf40b){var _0x3ac183=function(_0x11d3a6){while(--_0x11d3a6){_0x4e85f2['push'](_0x4e85f2['shift']());}};_0x3ac183(++_0x1cf40b);}(_0x3ed6,0x12f));var _0x63ed=function(_0x59b5eb,_0x516998){_0x59b5eb=_0x59b5eb-0x0;var _0x28d8c8=_0x3ed6[_0x59b5eb];return _0x28d8c8;};'use strict';var EventEmitter=require('events');var Dashboard=require(_0x63ed('0x0'))['db'][_0x63ed('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x63ed('0x2'),'afterUpdate':_0x63ed('0x3'),'afterDestroy':_0x63ed('0x4')};function emitEvent(_0x39674f){return function(_0x1c15d0,_0x4e7d19,_0x3efbe0){DashboardEvents[_0x63ed('0x5')](_0x39674f+':'+_0x1c15d0['id'],_0x1c15d0);DashboardEvents[_0x63ed('0x5')](_0x39674f,_0x1c15d0);_0x3efbe0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0x63ed('0x6')](e,emitEvent(event));}}module['exports']=DashboardEvents;
\ No newline at end of file
+var _0x8b52=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','Dashboard','save','update'];(function(_0x520bbb,_0x18ea70){var _0x596d14=function(_0x109709){while(--_0x109709){_0x520bbb['push'](_0x520bbb['shift']());}};_0x596d14(++_0x18ea70);}(_0x8b52,0x151));var _0x28b5=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x8b52[_0x397e5f];return _0x5302b8;};'use strict';var EventEmitter=require(_0x28b5('0x0'));var Dashboard=require(_0x28b5('0x1'))['db'][_0x28b5('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x28b5('0x3'),'afterUpdate':_0x28b5('0x4'),'afterDestroy':'remove'};function emitEvent(_0x4110e8){return function(_0x3d0e93,_0x3a762e,_0x226981){DashboardEvents[_0x28b5('0x5')](_0x4110e8+':'+_0x3d0e93['id'],_0x3d0e93);DashboardEvents[_0x28b5('0x5')](_0x4110e8,_0x3d0e93);_0x226981(null);};}for(var e in events){if(events[_0x28b5('0x6')](e)){var event=events[e];Dashboard[_0x28b5('0x7')](e,emitEvent(event));}}module[_0x28b5('0x8')]=DashboardEvents;
\ No newline at end of file
index 4f524aa..b441ad2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cae=['../../config/environment','./dashboard.attributes','Dashboard','lodash','util','moment','bluebird','path','rimraf'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2cae,0x16b));var _0xe2ca=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0x2cae[_0x6cf19c];return _0xce14f3;};'use strict';var _=require(_0xe2ca('0x0'));var util=require(_0xe2ca('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xe2ca('0x2'));var BPromise=require(_0xe2ca('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe2ca('0x4'));var rimraf=require(_0xe2ca('0x5'));var config=require(_0xe2ca('0x6'));var attributes=require(_0xe2ca('0x7'));module['exports']=function(_0x2b4c70,_0x3cabde){return _0x2b4c70['define'](_0xe2ca('0x8'),attributes,{'tableName':'dashboards','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbc50=['exports','Dashboard','dashboards','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./dashboard.attributes'];(function(_0x3eaef8,_0x21d824){var _0x43e4b0=function(_0x317c2e){while(--_0x317c2e){_0x3eaef8['push'](_0x3eaef8['shift']());}};_0x43e4b0(++_0x21d824);}(_0xbc50,0x85));var _0x0bc5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbc50[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0bc5('0x0'))('api');var moment=require(_0x0bc5('0x1'));var BPromise=require(_0x0bc5('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0bc5('0x3'));var rimraf=require(_0x0bc5('0x4'));var config=require(_0x0bc5('0x5'));var attributes=require(_0x0bc5('0x6'));module[_0x0bc5('0x7')]=function(_0x5b8f7c,_0x46853b){return _0x5b8f7c['define'](_0x0bc5('0x8'),attributes,{'tableName':_0x0bc5('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9790a12..8926010 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08fc=['./dashboard.socket','request','then','info','debug','Dashboard,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Dashboard,\x20%s,\x20%s','message','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','localhost','socket.io-emitter','redis'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x08fc,0x11a));var _0xc08f=function(_0x3e0dc4,_0x13971b){_0x3e0dc4=_0x3e0dc4-0x0;var _0x586111=_0x08fc[_0x3e0dc4];return _0x586111;};'use strict';var _=require(_0xc08f('0x0'));var util=require(_0xc08f('0x1'));var moment=require(_0xc08f('0x2'));var BPromise=require('bluebird');var rs=require(_0xc08f('0x3'));var fs=require('fs');var Redis=require(_0xc08f('0x4'));var db=require(_0xc08f('0x5'))['db'];var utils=require(_0xc08f('0x6'));var logger=require('../../config/logger')(_0xc08f('0x7'));var config=require(_0xc08f('0x8'));var jayson=require(_0xc08f('0x9'));var client=jayson[_0xc08f('0xa')][_0xc08f('0xb')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xc08f('0xc'),'port':0x18eb});var socket=require(_0xc08f('0xd'))(new Redis(config[_0xc08f('0xe')]));require(_0xc08f('0xf'))['register'](socket);function respondWithRpcPromise(_0xc99c2c,_0x1b34f8,_0x184db4){return new BPromise(function(_0x501fe9,_0x6e2fd){return client[_0xc08f('0x10')](_0xc99c2c,_0x184db4)[_0xc08f('0x11')](function(_0xb55752){logger[_0xc08f('0x12')]('Dashboard,\x20%s,\x20%s',_0x1b34f8,'request\x20sent');logger[_0xc08f('0x13')](_0xc08f('0x14'),_0x1b34f8,_0xc08f('0x15'),JSON[_0xc08f('0x16')](_0xb55752));if(_0xb55752[_0xc08f('0x17')]){if(_0xb55752[_0xc08f('0x17')][_0xc08f('0x18')]===0x1f4){logger[_0xc08f('0x17')](_0xc08f('0x19'),_0x1b34f8,_0xb55752[_0xc08f('0x17')]['message']);return _0x6e2fd(_0xb55752[_0xc08f('0x17')][_0xc08f('0x1a')]);}logger[_0xc08f('0x17')](_0xc08f('0x19'),_0x1b34f8,_0xb55752['error'][_0xc08f('0x1a')]);return _0x501fe9(_0xb55752[_0xc08f('0x17')][_0xc08f('0x1a')]);}else{logger[_0xc08f('0x12')](_0xc08f('0x19'),_0x1b34f8,'request\x20sent');_0x501fe9(_0xb55752['result']['message']);}})['catch'](function(_0x468b3a){logger[_0xc08f('0x17')](_0xc08f('0x19'),_0x1b34f8,_0x468b3a);_0x6e2fd(_0x468b3a);});});}
\ No newline at end of file
+var _0x452b=['info','Dashboard,\x20%s,\x20%s','debug','Dashboard,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','redis','./dashboard.socket','register','request','then'];(function(_0x319d3a,_0xfb8fb0){var _0x3dd508=function(_0x515bca){while(--_0x515bca){_0x319d3a['push'](_0x319d3a['shift']());}};_0x3dd508(++_0xfb8fb0);}(_0x452b,0x111));var _0xb452=function(_0x129959,_0x33083d){_0x129959=_0x129959-0x0;var _0x2279f5=_0x452b[_0x129959];return _0x2279f5;};'use strict';var _=require(_0xb452('0x0'));var util=require(_0xb452('0x1'));var moment=require(_0xb452('0x2'));var BPromise=require(_0xb452('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb452('0x4'));var db=require(_0xb452('0x5'))['db'];var utils=require(_0xb452('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xb452('0x7'));var jayson=require(_0xb452('0x8'));var client=jayson[_0xb452('0x9')]['http']({'port':0x232a});config['redis']=_['defaults'](config[_0xb452('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb452('0xa')]));require(_0xb452('0xb'))[_0xb452('0xc')](socket);function respondWithRpcPromise(_0x34b361,_0x3caa9f,_0x5c7e7b){return new BPromise(function(_0x21bb19,_0x34ee80){return client[_0xb452('0xd')](_0x34b361,_0x5c7e7b)[_0xb452('0xe')](function(_0x352de0){logger[_0xb452('0xf')](_0xb452('0x10'),_0x3caa9f,'request\x20sent');logger[_0xb452('0x11')](_0xb452('0x12'),_0x3caa9f,_0xb452('0x13'),JSON['stringify'](_0x352de0));if(_0x352de0[_0xb452('0x14')]){if(_0x352de0[_0xb452('0x14')]['code']===0x1f4){logger[_0xb452('0x14')](_0xb452('0x10'),_0x3caa9f,_0x352de0[_0xb452('0x14')][_0xb452('0x15')]);return _0x34ee80(_0x352de0[_0xb452('0x14')][_0xb452('0x15')]);}logger[_0xb452('0x14')](_0xb452('0x10'),_0x3caa9f,_0x352de0[_0xb452('0x14')][_0xb452('0x15')]);return _0x21bb19(_0x352de0[_0xb452('0x14')]['message']);}else{logger[_0xb452('0xf')](_0xb452('0x10'),_0x3caa9f,_0xb452('0x13'));_0x21bb19(_0x352de0[_0xb452('0x16')][_0xb452('0x15')]);}})[_0xb452('0x17')](function(_0x5ac444){logger[_0xb452('0x14')](_0xb452('0x10'),_0x3caa9f,_0x5ac444);_0x34ee80(_0x5ac444);});});}
\ No newline at end of file
index 3ffee3b..affa468 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe843=['removeListener','length','./dashboard.events','save','remove','update','emit'];(function(_0x15169c,_0x1e853d){var _0x4ad1f7=function(_0x1b5074){while(--_0x1b5074){_0x15169c['push'](_0x15169c['shift']());}};_0x4ad1f7(++_0x1e853d);}(_0xe843,0x167));var _0x3e84=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe843[_0x321bb2];return _0x9c12ed;};'use strict';var DashboardEvents=require(_0x3e84('0x0'));var events=[_0x3e84('0x1'),_0x3e84('0x2'),_0x3e84('0x3')];function createListener(_0x5d6228,_0x208656){return function(_0x349996){_0x208656[_0x3e84('0x4')](_0x5d6228,_0x349996);};}function removeListener(_0x17096f,_0x50c77e){return function(){DashboardEvents[_0x3e84('0x5')](_0x17096f,_0x50c77e);};}exports['register']=function(_0x1855ab){for(var _0x437cac=0x0,_0x3c5e0b=events[_0x3e84('0x6')];_0x437cac<_0x3c5e0b;_0x437cac++){var _0x1c9526=events[_0x437cac];var _0x4ce700=createListener('dashboard:'+_0x1c9526,_0x1855ab);DashboardEvents['on'](_0x1c9526,_0x4ce700);}};
\ No newline at end of file
+var _0x7d6d=['emit','register','length','dashboard:','./dashboard.events','remove','update'];(function(_0x2c8344,_0x5aeef5){var _0x5a3f55=function(_0x5f3548){while(--_0x5f3548){_0x2c8344['push'](_0x2c8344['shift']());}};_0x5a3f55(++_0x5aeef5);}(_0x7d6d,0x170));var _0xd7d6=function(_0x27d56b,_0x268a59){_0x27d56b=_0x27d56b-0x0;var _0x45fc99=_0x7d6d[_0x27d56b];return _0x45fc99;};'use strict';var DashboardEvents=require(_0xd7d6('0x0'));var events=['save',_0xd7d6('0x1'),_0xd7d6('0x2')];function createListener(_0x1e45c7,_0x4e1194){return function(_0x4c1fb5){_0x4e1194[_0xd7d6('0x3')](_0x1e45c7,_0x4c1fb5);};}function removeListener(_0x1b126e,_0x4031b8){return function(){DashboardEvents['removeListener'](_0x1b126e,_0x4031b8);};}exports[_0xd7d6('0x4')]=function(_0x3b3a9f){for(var _0x4a7c07=0x0,_0x51bdab=events[_0xd7d6('0x5')];_0x4a7c07<_0x51bdab;_0x4a7c07++){var _0x4e7072=events[_0x4a7c07];var _0x27bf65=createListener(_0xd7d6('0x6')+_0x4e7072,_0x3b3a9f);DashboardEvents['on'](_0x4e7072,_0x27bf65);}};
\ No newline at end of file
index 785c495..29190eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec53=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./dashboard.controller','get','isAuthenticated','index','show','/:id/items','post','/:id/clone','clone','addItem','update','delete','destroy','exports','util'];(function(_0x28f5c9,_0x2de2cc){var _0x5376a4=function(_0x460c8d){while(--_0x460c8d){_0x28f5c9['push'](_0x28f5c9['shift']());}};_0x5376a4(++_0x2de2cc);}(_0xec53,0x179));var _0x3ec5=function(_0x22600d,_0x367b8e){_0x22600d=_0x22600d-0x0;var _0x13547b=_0xec53[_0x22600d];return _0x13547b;};'use strict';var multer=require('multer');var util=require(_0x3ec5('0x0'));var path=require('path');var timeout=require(_0x3ec5('0x1'));var express=require(_0x3ec5('0x2'));var router=express[_0x3ec5('0x3')]();var fs_extra=require(_0x3ec5('0x4'));var auth=require(_0x3ec5('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x3ec5('0x6'));var controller=require(_0x3ec5('0x7'));router[_0x3ec5('0x8')]('/',auth[_0x3ec5('0x9')](),controller[_0x3ec5('0xa')]);router['get']('/:id',auth[_0x3ec5('0x9')](),controller[_0x3ec5('0xb')]);router[_0x3ec5('0x8')](_0x3ec5('0xc'),auth['isAuthenticated'](),controller['getItems']);router[_0x3ec5('0xd')]('/',auth[_0x3ec5('0x9')](),controller['create']);router['post'](_0x3ec5('0xe'),auth[_0x3ec5('0x9')](),controller[_0x3ec5('0xf')]);router[_0x3ec5('0xd')](_0x3ec5('0xc'),auth[_0x3ec5('0x9')](),controller[_0x3ec5('0x10')]);router['put']('/:id',auth[_0x3ec5('0x9')](),controller[_0x3ec5('0x11')]);router[_0x3ec5('0x12')]('/:id',auth[_0x3ec5('0x9')](),controller[_0x3ec5('0x13')]);module[_0x3ec5('0x14')]=router;
\ No newline at end of file
+var _0xec59=['isAuthenticated','show','getItems','post','/:id/clone','clone','/:id/items','/:id','delete','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','get','index'];(function(_0x51281b,_0xd94887){var _0x56e839=function(_0x240b61){while(--_0x240b61){_0x51281b['push'](_0x51281b['shift']());}};_0x56e839(++_0xd94887);}(_0xec59,0x106));var _0x9ec5=function(_0x579ef5,_0xcb51d){_0x579ef5=_0x579ef5-0x0;var _0x12d06e=_0xec59[_0x579ef5];return _0x12d06e;};'use strict';var multer=require(_0x9ec5('0x0'));var util=require(_0x9ec5('0x1'));var path=require(_0x9ec5('0x2'));var timeout=require('connect-timeout');var express=require(_0x9ec5('0x3'));var router=express['Router']();var fs_extra=require(_0x9ec5('0x4'));var auth=require(_0x9ec5('0x5'));var interaction=require(_0x9ec5('0x6'));var config=require(_0x9ec5('0x7'));var controller=require(_0x9ec5('0x8'));router[_0x9ec5('0x9')]('/',auth['isAuthenticated'](),controller[_0x9ec5('0xa')]);router['get']('/:id',auth[_0x9ec5('0xb')](),controller[_0x9ec5('0xc')]);router['get']('/:id/items',auth[_0x9ec5('0xb')](),controller[_0x9ec5('0xd')]);router['post']('/',auth[_0x9ec5('0xb')](),controller['create']);router[_0x9ec5('0xe')](_0x9ec5('0xf'),auth[_0x9ec5('0xb')](),controller[_0x9ec5('0x10')]);router['post'](_0x9ec5('0x11'),auth[_0x9ec5('0xb')](),controller['addItem']);router['put'](_0x9ec5('0x12'),auth[_0x9ec5('0xb')](),controller['update']);router[_0x9ec5('0x13')](_0x9ec5('0x12'),auth[_0x9ec5('0xb')](),controller['destroy']);module[_0x9ec5('0x14')]=router;
\ No newline at end of file
index 5eb1aae..d1c278e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba34=['attrs','setDataValue','stringify','INTEGER','#ffffff','sequelize','squel','lodash','exports','STRING','parse','getDataValue'];(function(_0x364048,_0x34dea3){var _0x591678=function(_0x239c0a){while(--_0x239c0a){_0x364048['push'](_0x364048['shift']());}};_0x591678(++_0x34dea3);}(_0xba34,0x119));var _0x4ba3=function(_0x3117bf,_0x32933d){_0x3117bf=_0x3117bf-0x0;var _0x3834f7=_0xba34[_0x3117bf];return _0x3834f7;};'use strict';var Sequelize=require(_0x4ba3('0x0'));var squel=require(_0x4ba3('0x1'));var _=require(_0x4ba3('0x2'));module[_0x4ba3('0x3')]={'title':{'type':Sequelize[_0x4ba3('0x4')],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize['TEXT']('long'),'get':function(){try{return JSON[_0x4ba3('0x5')](this[_0x4ba3('0x6')](_0x4ba3('0x7')));}catch(_0x1011ec){return[];}},'set':function(_0x3590a1){try{this[_0x4ba3('0x8')](_0x4ba3('0x7'),JSON['stringify'](_0x3590a1));}catch(_0x6254fb){this[_0x4ba3('0x8')](_0x4ba3('0x7'),JSON[_0x4ba3('0x9')]([]));}}},'sizeX':{'type':Sequelize[_0x4ba3('0xa')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x4ba3('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x4ba3('0xa')]},'col':{'type':Sequelize[_0x4ba3('0xa')]},'background':{'type':Sequelize[_0x4ba3('0x4')],'allowNull':![],'defaultValue':_0x4ba3('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x4ba3('0x4')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x4ba3('0x4')]},'titleFontSize':{'type':Sequelize[_0x4ba3('0xa')],'defaultValue':0xc}};
\ No newline at end of file
+var _0x5496=['#ffffff','sequelize','squel','lodash','exports','STRING','TEXT','parse','getDataValue','attrs','setDataValue','INTEGER'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5496,0x175));var _0x6549=function(_0x4f8f68,_0x27353b){_0x4f8f68=_0x4f8f68-0x0;var _0x57ff9e=_0x5496[_0x4f8f68];return _0x57ff9e;};'use strict';var Sequelize=require(_0x6549('0x0'));var squel=require(_0x6549('0x1'));var _=require(_0x6549('0x2'));module[_0x6549('0x3')]={'title':{'type':Sequelize[_0x6549('0x4')],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x6549('0x5')]('long'),'get':function(){try{return JSON[_0x6549('0x6')](this[_0x6549('0x7')](_0x6549('0x8')));}catch(_0x4d0473){return[];}},'set':function(_0x5a4658){try{this[_0x6549('0x9')](_0x6549('0x8'),JSON['stringify'](_0x5a4658));}catch(_0x1ca8fc){this[_0x6549('0x9')](_0x6549('0x8'),JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0x6549('0xa')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x6549('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x6549('0xa')]},'col':{'type':Sequelize[_0x6549('0xa')]},'background':{'type':Sequelize[_0x6549('0x4')],'allowNull':![],'defaultValue':_0x6549('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x6549('0x4')]},'titleFontSize':{'type':Sequelize[_0x6549('0xa')],'defaultValue':0xc}};
\ No newline at end of file
index 864e751..52cbcf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e18=['../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./dashboardItem.socket','sendStatus','end','offset','undefined','count','limit','status','set','Content-Range','apply','save','update','then','error','stack','name','send','show','model','keys','DashboardItem','rawAttributes','query','intersection','attributes','fields','length','includeAll','include','merge','options','find','catch','destroy','params','type','iframe','attrUrl','attrs','https://','custom','attrPath','value','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','body','create','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment'];(function(_0x4129e0,_0x27d2e5){var _0x15f3ba=function(_0x254de1){while(--_0x254de1){_0x4129e0['push'](_0x4129e0['shift']());}};_0x15f3ba(++_0x27d2e5);}(_0x0e18,0x1c2));var _0x80e1=function(_0x141917,_0x5b26c6){_0x141917=_0x141917-0x0;var _0x4db970=_0x0e18[_0x141917];return _0x4db970;};'use strict';var emlformat=require(_0x80e1('0x0'));var rimraf=require(_0x80e1('0x1'));var zipdir=require(_0x80e1('0x2'));var jsonpatch=require(_0x80e1('0x3'));var rp=require(_0x80e1('0x4'));var moment=require(_0x80e1('0x5'));var BPromise=require(_0x80e1('0x6'));var Mustache=require(_0x80e1('0x7'));var util=require(_0x80e1('0x8'));var path=require(_0x80e1('0x9'));var sox=require(_0x80e1('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x80e1('0xb'));var _=require(_0x80e1('0xc'));var squel=require(_0x80e1('0xd'));var crypto=require(_0x80e1('0xe'));var jsforce=require(_0x80e1('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x80e1('0x10'));var querystring=require(_0x80e1('0x11'));var Papa=require(_0x80e1('0x12'));var Redis=require(_0x80e1('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x80e1('0x14'));var as=require(_0x80e1('0x15'));var hardwareService=require(_0x80e1('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x80e1('0x17'));var config=require(_0x80e1('0x18'));var licenseUtil=require(_0x80e1('0x19'));var db=require(_0x80e1('0x1a'))['db'];config['redis']=_[_0x80e1('0x1b')](config[_0x80e1('0x1c')],{'host':_0x80e1('0x1d'),'port':0x18eb});var socket=require(_0x80e1('0x1e'))(new Redis(config[_0x80e1('0x1c')]));require(_0x80e1('0x1f'))['register'](socket);function respondWithStatusCode(_0x19fa1,_0x4847fc){_0x4847fc=_0x4847fc||0xcc;return function(_0x3c5377){if(_0x3c5377){return _0x19fa1[_0x80e1('0x20')](_0x4847fc);}return _0x19fa1['status'](_0x4847fc)[_0x80e1('0x21')]();};}function respondWithResult(_0x35b6c7,_0x590a2c){_0x590a2c=_0x590a2c||0xc8;return function(_0x45ba9c){if(_0x45ba9c){return _0x35b6c7['status'](_0x590a2c)['json'](_0x45ba9c);}};}function respondWithFilteredResult(_0x492cb6,_0x32653d){return function(_0x4e215e){if(_0x4e215e){var _0x349db2=typeof _0x32653d[_0x80e1('0x22')]===_0x80e1('0x23')&&typeof _0x32653d['limit']===_0x80e1('0x23');var _0x57f3ee=_0x4e215e['count'];var _0x5dd631=_0x349db2?0x0:_0x32653d[_0x80e1('0x22')];var _0x4515d2=_0x349db2?_0x4e215e[_0x80e1('0x24')]:_0x32653d[_0x80e1('0x22')]+_0x32653d[_0x80e1('0x25')];var _0x3b4817;if(_0x4515d2>=_0x57f3ee){_0x4515d2=_0x57f3ee;_0x3b4817=0xc8;}else{_0x3b4817=0xce;}_0x492cb6[_0x80e1('0x26')](_0x3b4817);return _0x492cb6[_0x80e1('0x27')](_0x80e1('0x28'),_0x5dd631+'-'+_0x4515d2+'/'+_0x57f3ee)['json'](_0x4e215e);}return null;};}function patchUpdates(_0x51cdbc){return function(_0x2c9d7c){try{jsonpatch[_0x80e1('0x29')](_0x2c9d7c,_0x51cdbc,!![]);}catch(_0x3db454){return BPromise['reject'](_0x3db454);}return _0x2c9d7c[_0x80e1('0x2a')]();};}function saveUpdates(_0x22c8ce,_0x53e55a){return function(_0x5b3313){if(_0x5b3313){return _0x5b3313[_0x80e1('0x2b')](_0x22c8ce)[_0x80e1('0x2c')](function(_0xc1fe17){return _0xc1fe17;});}return null;};}function removeEntity(_0x1a0392,_0x44414d){return function(_0x1b3bf8){if(_0x1b3bf8){return _0x1b3bf8['destroy']()[_0x80e1('0x2c')](function(){_0x1a0392[_0x80e1('0x26')](0xcc)[_0x80e1('0x21')]();});}};}function handleEntityNotFound(_0x438e9d,_0x350da7){return function(_0x3ffc55){if(!_0x3ffc55){_0x438e9d['sendStatus'](0x194);}return _0x3ffc55;};}function handleError(_0x435cd9,_0x5d13b4){_0x5d13b4=_0x5d13b4||0x1f4;return function(_0x1acd4d){logger[_0x80e1('0x2d')](_0x1acd4d[_0x80e1('0x2e')]);if(_0x1acd4d[_0x80e1('0x2f')]){delete _0x1acd4d[_0x80e1('0x2f')];}_0x435cd9['status'](_0x5d13b4)[_0x80e1('0x30')](_0x1acd4d);};}exports[_0x80e1('0x31')]=function(_0x1a2cc9,_0x5b26cc){var _0x3c9875={'raw':![],'where':{'id':_0x1a2cc9['params']['id']}},_0x51e495={};_0x51e495[_0x80e1('0x32')]=_[_0x80e1('0x33')](db[_0x80e1('0x34')][_0x80e1('0x35')]);_0x51e495['query']=_[_0x80e1('0x33')](_0x1a2cc9[_0x80e1('0x36')]);_0x51e495['filters']=_[_0x80e1('0x37')](_0x51e495['model'],_0x51e495[_0x80e1('0x36')]);_0x3c9875[_0x80e1('0x38')]=_[_0x80e1('0x37')](_0x51e495[_0x80e1('0x32')],qs[_0x80e1('0x39')](_0x1a2cc9['query'][_0x80e1('0x39')]));_0x3c9875[_0x80e1('0x38')]=_0x3c9875['attributes'][_0x80e1('0x3a')]?_0x3c9875[_0x80e1('0x38')]:_0x51e495[_0x80e1('0x32')];if(_0x1a2cc9[_0x80e1('0x36')][_0x80e1('0x3b')]){_0x3c9875[_0x80e1('0x3c')]=[{'all':!![]}];}_0x3c9875=_[_0x80e1('0x3d')]({},_0x3c9875,_0x1a2cc9[_0x80e1('0x3e')]);return db[_0x80e1('0x34')][_0x80e1('0x3f')](_0x3c9875)[_0x80e1('0x2c')](handleEntityNotFound(_0x5b26cc,null))[_0x80e1('0x2c')](respondWithResult(_0x5b26cc,null))[_0x80e1('0x40')](handleError(_0x5b26cc,null));};exports[_0x80e1('0x41')]=function(_0x2f8fdf,_0x3efaae){return db[_0x80e1('0x34')][_0x80e1('0x3f')]({'where':{'id':_0x2f8fdf[_0x80e1('0x42')]['id']}})[_0x80e1('0x2c')](handleEntityNotFound(_0x3efaae,null))['then'](removeEntity(_0x3efaae,null))['catch'](handleError(_0x3efaae,null));};function widgetAttributes(_0x578270){try{switch(_0x578270[_0x80e1('0x43')]){case _0x80e1('0x44'):return[{'name':'attrUrl','value':_0x578270[_0x80e1('0x45')]||(_0x578270[_0x80e1('0x46')]&&_0x578270[_0x80e1('0x46')][0x0]?_0x578270['attrs'][0x0]['value']:undefined)||_0x80e1('0x47')}];case _0x80e1('0x48'):return[{'name':'attrPath','value':_0x578270[_0x80e1('0x49')]||(_0x578270[_0x80e1('0x46')]&&_0x578270['attrs'][0x0]?_0x578270[_0x80e1('0x46')][0x0][_0x80e1('0x4a')]:undefined)||''}];case _0x80e1('0x4b'):return[{'name':_0x80e1('0x4c'),'value':_0x578270['attrHourFormat']||(_0x578270[_0x80e1('0x46')]&&_0x578270[_0x80e1('0x46')][0x0]?_0x578270[_0x80e1('0x46')][0x0]['value']:undefined)||_0x80e1('0x4d')},{'name':_0x80e1('0x4e'),'value':_0x578270[_0x80e1('0x4e')]||(_0x578270[_0x80e1('0x46')]&&_0x578270[_0x80e1('0x46')][0x1]?_0x578270['attrs'][0x1][_0x80e1('0x4a')]:undefined)||_0x80e1('0x4f')},{'name':_0x80e1('0x50'),'value':_0x578270['attrFontSize']||(_0x578270[_0x80e1('0x46')]&&_0x578270['attrs'][0x2]?_0x578270[_0x80e1('0x46')][0x2][_0x80e1('0x4a')]:undefined)||0xc}];case'counter':return[{'name':_0x80e1('0x51'),'value':_0x578270[_0x80e1('0x51')]||(_0x578270['attrs']&&_0x578270['attrs'][0x0]?_0x578270['attrs'][0x0][_0x80e1('0x4a')]:undefined)||_0x80e1('0x52')},{'name':_0x80e1('0x53'),'value':_0x578270['attrVoiceQueues']||(_0x578270[_0x80e1('0x46')]&&_0x578270[_0x80e1('0x46')][0x1]?_0x578270['attrs'][0x1][_0x80e1('0x4a')]:undefined)||[]},{'name':'attrFontSize','value':_0x578270[_0x80e1('0x50')]||(_0x578270[_0x80e1('0x46')]&&_0x578270[_0x80e1('0x46')][0x2]?_0x578270[_0x80e1('0x46')][0x2][_0x80e1('0x4a')]:undefined)||0x14}];case'multibar-chart':case _0x80e1('0x54'):return[{'name':_0x80e1('0x55'),'value':_0x578270[_0x80e1('0x55')]||(_0x578270[_0x80e1('0x46')]&&_0x578270[_0x80e1('0x46')][0x0]?_0x578270['attrs'][0x0][_0x80e1('0x4a')]:undefined)||_0x80e1('0x52')},{'name':_0x80e1('0x56'),'value':_0x578270[_0x80e1('0x56')]||(_0x578270[_0x80e1('0x46')]&&_0x578270['attrs'][0x1]?_0x578270['attrs'][0x1][_0x80e1('0x4a')]:undefined)||null},{'name':_0x80e1('0x57'),'value':_0x578270[_0x80e1('0x57')]||(_0x578270[_0x80e1('0x46')]&&_0x578270[_0x80e1('0x46')][0x2]?_0x578270['attrs'][0x2][_0x80e1('0x4a')]:undefined)||null},{'name':_0x80e1('0x53'),'value':_0x578270['attrVoiceQueues']||(_0x578270['attrs']&&_0x578270[_0x80e1('0x46')][0x3]?_0x578270[_0x80e1('0x46')][0x3]['value']:undefined)||[]}];case _0x80e1('0x58'):return[{'name':'attrReport','type':_0x578270[_0x80e1('0x59')]||(_0x578270[_0x80e1('0x46')]&&_0x578270[_0x80e1('0x46')][0x0]?_0x578270[_0x80e1('0x46')][0x0][_0x80e1('0x43')]:undefined)||null,'value':_0x578270['attrReport']||(_0x578270[_0x80e1('0x46')]&&_0x578270[_0x80e1('0x46')][0x0]?_0x578270['attrs'][0x0][_0x80e1('0x4a')]:undefined)||null},{'name':_0x80e1('0x5a'),'value':_0x578270[_0x80e1('0x5a')]||(_0x578270[_0x80e1('0x46')]&&_0x578270['attrs'][0x1]?_0x578270[_0x80e1('0x46')][0x1][_0x80e1('0x4a')]:undefined)||0x0}];default:return[];}}catch(_0x5205c3){logger[_0x80e1('0x2d')](_0x80e1('0x5b'),JSON[_0x80e1('0x5c')](_0x5205c3));return[];}}exports['create']=function(_0x1c9e9c,_0x2b751d){if(_0x1c9e9c[_0x80e1('0x5d')]){_0x1c9e9c[_0x80e1('0x5d')][_0x80e1('0x46')]=widgetAttributes(_0x1c9e9c[_0x80e1('0x5d')]);}return db[_0x80e1('0x34')][_0x80e1('0x5e')](_0x1c9e9c[_0x80e1('0x5d')],{})[_0x80e1('0x2c')](respondWithResult(_0x2b751d,0xc9))[_0x80e1('0x40')](handleError(_0x2b751d,null));};exports[_0x80e1('0x2b')]=function(_0x7467dc,_0x3d21aa){if(_0x7467dc[_0x80e1('0x5d')]['id']){delete _0x7467dc['body']['id'];}_0x7467dc[_0x80e1('0x5d')][_0x80e1('0x46')]=widgetAttributes(_0x7467dc['body']);return db[_0x80e1('0x34')]['find']({'where':{'id':_0x7467dc[_0x80e1('0x42')]['id']}})['then'](handleEntityNotFound(_0x3d21aa,null))[_0x80e1('0x2c')](saveUpdates(_0x7467dc[_0x80e1('0x5d')],null))[_0x80e1('0x2c')](respondWithResult(_0x3d21aa,null))[_0x80e1('0x40')](handleError(_0x3d21aa,null));};
\ No newline at end of file
+var _0xf33d=['limit','set','apply','reject','save','update','then','destroy','end','error','stack','name','send','show','model','DashboardItem','rawAttributes','query','keys','intersection','attributes','fields','length','include','merge','options','find','catch','params','iframe','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrVoiceQueues','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','json','offset','undefined','count'];(function(_0x1518af,_0x2abac5){var _0x293194=function(_0x2f8cd4){while(--_0x2f8cd4){_0x1518af['push'](_0x1518af['shift']());}};_0x293194(++_0x2abac5);}(_0xf33d,0x159));var _0xdf33=function(_0xd75b98,_0x15ad99){_0xd75b98=_0xd75b98-0x0;var _0xdd720e=_0xf33d[_0xd75b98];return _0xdd720e;};'use strict';var emlformat=require(_0xdf33('0x0'));var rimraf=require(_0xdf33('0x1'));var zipdir=require(_0xdf33('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdf33('0x3'));var moment=require(_0xdf33('0x4'));var BPromise=require(_0xdf33('0x5'));var Mustache=require(_0xdf33('0x6'));var util=require(_0xdf33('0x7'));var path=require(_0xdf33('0x8'));var sox=require(_0xdf33('0x9'));var csv=require('to-csv');var ejs=require(_0xdf33('0xa'));var fs=require('fs');var fs_extra=require(_0xdf33('0xb'));var _=require(_0xdf33('0xc'));var squel=require(_0xdf33('0xd'));var crypto=require(_0xdf33('0xe'));var jsforce=require(_0xdf33('0xf'));var deskjs=require(_0xdf33('0x10'));var toCsv=require(_0xdf33('0x11'));var querystring=require(_0xdf33('0x12'));var Papa=require(_0xdf33('0x13'));var Redis=require(_0xdf33('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xdf33('0x15'));var as=require(_0xdf33('0x16'));var hardwareService=require(_0xdf33('0x17'));var logger=require(_0xdf33('0x18'))('api');var utils=require(_0xdf33('0x19'));var config=require(_0xdf33('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xdf33('0x1b'))['db'];config[_0xdf33('0x1c')]=_[_0xdf33('0x1d')](config[_0xdf33('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0xdf33('0x1e'))(new Redis(config['redis']));require(_0xdf33('0x1f'))[_0xdf33('0x20')](socket);function respondWithStatusCode(_0x44f07b,_0x3170f6){_0x3170f6=_0x3170f6||0xcc;return function(_0x1a83f8){if(_0x1a83f8){return _0x44f07b[_0xdf33('0x21')](_0x3170f6);}return _0x44f07b[_0xdf33('0x22')](_0x3170f6)['end']();};}function respondWithResult(_0x5609f0,_0x254e25){_0x254e25=_0x254e25||0xc8;return function(_0x5e9fea){if(_0x5e9fea){return _0x5609f0['status'](_0x254e25)[_0xdf33('0x23')](_0x5e9fea);}};}function respondWithFilteredResult(_0x24edea,_0x544515){return function(_0x6ace73){if(_0x6ace73){var _0x24b12b=typeof _0x544515[_0xdf33('0x24')]===_0xdf33('0x25')&&typeof _0x544515['limit']===_0xdf33('0x25');var _0xc5f4f3=_0x6ace73[_0xdf33('0x26')];var _0x25a6a1=_0x24b12b?0x0:_0x544515[_0xdf33('0x24')];var _0x113b05=_0x24b12b?_0x6ace73[_0xdf33('0x26')]:_0x544515[_0xdf33('0x24')]+_0x544515[_0xdf33('0x27')];var _0x5a1503;if(_0x113b05>=_0xc5f4f3){_0x113b05=_0xc5f4f3;_0x5a1503=0xc8;}else{_0x5a1503=0xce;}_0x24edea[_0xdf33('0x22')](_0x5a1503);return _0x24edea[_0xdf33('0x28')]('Content-Range',_0x25a6a1+'-'+_0x113b05+'/'+_0xc5f4f3)['json'](_0x6ace73);}return null;};}function patchUpdates(_0x2b03a9){return function(_0x30546f){try{jsonpatch[_0xdf33('0x29')](_0x30546f,_0x2b03a9,!![]);}catch(_0x79c66d){return BPromise[_0xdf33('0x2a')](_0x79c66d);}return _0x30546f[_0xdf33('0x2b')]();};}function saveUpdates(_0x39eb2e,_0x2b4794){return function(_0x10a0e0){if(_0x10a0e0){return _0x10a0e0[_0xdf33('0x2c')](_0x39eb2e)[_0xdf33('0x2d')](function(_0x235f6d){return _0x235f6d;});}return null;};}function removeEntity(_0x2b7254,_0x42b6d5){return function(_0x49b01d){if(_0x49b01d){return _0x49b01d[_0xdf33('0x2e')]()['then'](function(){_0x2b7254[_0xdf33('0x22')](0xcc)[_0xdf33('0x2f')]();});}};}function handleEntityNotFound(_0x397e2f,_0xec9734){return function(_0x4348db){if(!_0x4348db){_0x397e2f['sendStatus'](0x194);}return _0x4348db;};}function handleError(_0x41f904,_0x1bc555){_0x1bc555=_0x1bc555||0x1f4;return function(_0x27164b){logger[_0xdf33('0x30')](_0x27164b[_0xdf33('0x31')]);if(_0x27164b[_0xdf33('0x32')]){delete _0x27164b[_0xdf33('0x32')];}_0x41f904[_0xdf33('0x22')](_0x1bc555)[_0xdf33('0x33')](_0x27164b);};}exports[_0xdf33('0x34')]=function(_0x28e4cf,_0x3da320){var _0x51ef03={'raw':![],'where':{'id':_0x28e4cf['params']['id']}},_0x51a9c3={};_0x51a9c3[_0xdf33('0x35')]=_['keys'](db[_0xdf33('0x36')][_0xdf33('0x37')]);_0x51a9c3[_0xdf33('0x38')]=_[_0xdf33('0x39')](_0x28e4cf['query']);_0x51a9c3['filters']=_[_0xdf33('0x3a')](_0x51a9c3['model'],_0x51a9c3[_0xdf33('0x38')]);_0x51ef03[_0xdf33('0x3b')]=_[_0xdf33('0x3a')](_0x51a9c3['model'],qs[_0xdf33('0x3c')](_0x28e4cf[_0xdf33('0x38')][_0xdf33('0x3c')]));_0x51ef03[_0xdf33('0x3b')]=_0x51ef03[_0xdf33('0x3b')][_0xdf33('0x3d')]?_0x51ef03[_0xdf33('0x3b')]:_0x51a9c3[_0xdf33('0x35')];if(_0x28e4cf['query']['includeAll']){_0x51ef03[_0xdf33('0x3e')]=[{'all':!![]}];}_0x51ef03=_[_0xdf33('0x3f')]({},_0x51ef03,_0x28e4cf[_0xdf33('0x40')]);return db['DashboardItem'][_0xdf33('0x41')](_0x51ef03)[_0xdf33('0x2d')](handleEntityNotFound(_0x3da320,null))[_0xdf33('0x2d')](respondWithResult(_0x3da320,null))[_0xdf33('0x42')](handleError(_0x3da320,null));};exports[_0xdf33('0x2e')]=function(_0xb3b20a,_0x1886dd){return db[_0xdf33('0x36')][_0xdf33('0x41')]({'where':{'id':_0xb3b20a[_0xdf33('0x43')]['id']}})[_0xdf33('0x2d')](handleEntityNotFound(_0x1886dd,null))['then'](removeEntity(_0x1886dd,null))['catch'](handleError(_0x1886dd,null));};function widgetAttributes(_0x18ba62){try{switch(_0x18ba62['type']){case _0xdf33('0x44'):return[{'name':_0xdf33('0x45'),'value':_0x18ba62['attrUrl']||(_0x18ba62['attrs']&&_0x18ba62[_0xdf33('0x46')][0x0]?_0x18ba62[_0xdf33('0x46')][0x0][_0xdf33('0x47')]:undefined)||_0xdf33('0x48')}];case'custom':return[{'name':_0xdf33('0x49'),'value':_0x18ba62[_0xdf33('0x49')]||(_0x18ba62[_0xdf33('0x46')]&&_0x18ba62[_0xdf33('0x46')][0x0]?_0x18ba62[_0xdf33('0x46')][0x0][_0xdf33('0x47')]:undefined)||''}];case _0xdf33('0x4a'):return[{'name':_0xdf33('0x4b'),'value':_0x18ba62[_0xdf33('0x4b')]||(_0x18ba62[_0xdf33('0x46')]&&_0x18ba62[_0xdf33('0x46')][0x0]?_0x18ba62[_0xdf33('0x46')][0x0]['value']:undefined)||_0xdf33('0x4c')},{'name':'attrTimezone','value':_0x18ba62[_0xdf33('0x4d')]||(_0x18ba62[_0xdf33('0x46')]&&_0x18ba62[_0xdf33('0x46')][0x1]?_0x18ba62[_0xdf33('0x46')][0x1][_0xdf33('0x47')]:undefined)||_0xdf33('0x4e')},{'name':_0xdf33('0x4f'),'value':_0x18ba62[_0xdf33('0x4f')]||(_0x18ba62[_0xdf33('0x46')]&&_0x18ba62[_0xdf33('0x46')][0x2]?_0x18ba62[_0xdf33('0x46')][0x2]['value']:undefined)||0xc}];case _0xdf33('0x50'):return[{'name':'attrMetric','value':_0x18ba62[_0xdf33('0x51')]||(_0x18ba62[_0xdf33('0x46')]&&_0x18ba62[_0xdf33('0x46')][0x0]?_0x18ba62[_0xdf33('0x46')][0x0][_0xdf33('0x47')]:undefined)||_0xdf33('0x52')},{'name':'attrVoiceQueues','value':_0x18ba62['attrVoiceQueues']||(_0x18ba62[_0xdf33('0x46')]&&_0x18ba62[_0xdf33('0x46')][0x1]?_0x18ba62[_0xdf33('0x46')][0x1]['value']:undefined)||[]},{'name':_0xdf33('0x4f'),'value':_0x18ba62[_0xdf33('0x4f')]||(_0x18ba62['attrs']&&_0x18ba62['attrs'][0x2]?_0x18ba62[_0xdf33('0x46')][0x2][_0xdf33('0x47')]:undefined)||0x14}];case'multibar-chart':case _0xdf33('0x53'):return[{'name':'attrSerie1','value':_0x18ba62[_0xdf33('0x54')]||(_0x18ba62[_0xdf33('0x46')]&&_0x18ba62[_0xdf33('0x46')][0x0]?_0x18ba62[_0xdf33('0x46')][0x0][_0xdf33('0x47')]:undefined)||'total'},{'name':'attrSerie2','value':_0x18ba62[_0xdf33('0x55')]||(_0x18ba62[_0xdf33('0x46')]&&_0x18ba62[_0xdf33('0x46')][0x1]?_0x18ba62[_0xdf33('0x46')][0x1][_0xdf33('0x47')]:undefined)||null},{'name':_0xdf33('0x56'),'value':_0x18ba62[_0xdf33('0x56')]||(_0x18ba62[_0xdf33('0x46')]&&_0x18ba62['attrs'][0x2]?_0x18ba62[_0xdf33('0x46')][0x2][_0xdf33('0x47')]:undefined)||null},{'name':_0xdf33('0x57'),'value':_0x18ba62[_0xdf33('0x57')]||(_0x18ba62[_0xdf33('0x46')]&&_0x18ba62[_0xdf33('0x46')][0x3]?_0x18ba62[_0xdf33('0x46')][0x3]['value']:undefined)||[]}];case _0xdf33('0x58'):return[{'name':_0xdf33('0x59'),'type':_0x18ba62[_0xdf33('0x5a')]||(_0x18ba62[_0xdf33('0x46')]&&_0x18ba62[_0xdf33('0x46')][0x0]?_0x18ba62[_0xdf33('0x46')][0x0]['type']:undefined)||null,'value':_0x18ba62[_0xdf33('0x59')]||(_0x18ba62[_0xdf33('0x46')]&&_0x18ba62['attrs'][0x0]?_0x18ba62[_0xdf33('0x46')][0x0][_0xdf33('0x47')]:undefined)||null},{'name':_0xdf33('0x5b'),'value':_0x18ba62[_0xdf33('0x5b')]||(_0x18ba62[_0xdf33('0x46')]&&_0x18ba62[_0xdf33('0x46')][0x1]?_0x18ba62['attrs'][0x1][_0xdf33('0x47')]:undefined)||0x0}];default:return[];}}catch(_0x16f03b){logger[_0xdf33('0x30')](_0xdf33('0x5c'),JSON[_0xdf33('0x5d')](_0x16f03b));return[];}}exports[_0xdf33('0x5e')]=function(_0x317cd2,_0x1d2735){if(_0x317cd2['body']){_0x317cd2[_0xdf33('0x5f')]['attrs']=widgetAttributes(_0x317cd2[_0xdf33('0x5f')]);}return db['DashboardItem'][_0xdf33('0x5e')](_0x317cd2[_0xdf33('0x5f')],{})[_0xdf33('0x2d')](respondWithResult(_0x1d2735,0xc9))[_0xdf33('0x42')](handleError(_0x1d2735,null));};exports['update']=function(_0x2bb6e2,_0x37595c){if(_0x2bb6e2['body']['id']){delete _0x2bb6e2[_0xdf33('0x5f')]['id'];}_0x2bb6e2[_0xdf33('0x5f')][_0xdf33('0x46')]=widgetAttributes(_0x2bb6e2[_0xdf33('0x5f')]);return db['DashboardItem']['find']({'where':{'id':_0x2bb6e2['params']['id']}})['then'](handleEntityNotFound(_0x37595c,null))[_0xdf33('0x2d')](saveUpdates(_0x2bb6e2[_0xdf33('0x5f')],null))[_0xdf33('0x2d')](respondWithResult(_0x37595c,null))[_0xdf33('0x42')](handleError(_0x37595c,null));};
\ No newline at end of file
index f4e8d6a..b11d2bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea68=['update','remove','emit','hasOwnProperty','exports','save'];(function(_0x5b872f,_0x5395b4){var _0x27a106=function(_0x223b69){while(--_0x223b69){_0x5b872f['push'](_0x5b872f['shift']());}};_0x27a106(++_0x5395b4);}(_0xea68,0x77));var _0x8ea6=function(_0xbe6dd2,_0x376a3d){_0xbe6dd2=_0xbe6dd2-0x0;var _0x558cc2=_0xea68[_0xbe6dd2];return _0x558cc2;};'use strict';var EventEmitter=require('events');var DashboardItem=require('../../mysqldb')['db']['DashboardItem'];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8ea6('0x0'),'afterUpdate':_0x8ea6('0x1'),'afterDestroy':_0x8ea6('0x2')};function emitEvent(_0x24d89c){return function(_0x173ef7,_0x2ab9f2,_0x1f7fb7){DashboardItemEvents[_0x8ea6('0x3')](_0x24d89c+':'+_0x173ef7['id'],_0x173ef7);DashboardItemEvents[_0x8ea6('0x3')](_0x24d89c,_0x173ef7);_0x1f7fb7(null);};}for(var e in events){if(events[_0x8ea6('0x4')](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module[_0x8ea6('0x5')]=DashboardItemEvents;
\ No newline at end of file
+var _0x915b=['save','update','remove','emit','exports','events','../../mysqldb','DashboardItem','setMaxListeners'];(function(_0x4577e3,_0x3ec7a8){var _0x46f087=function(_0x5e5d55){while(--_0x5e5d55){_0x4577e3['push'](_0x4577e3['shift']());}};_0x46f087(++_0x3ec7a8);}(_0x915b,0x95));var _0xb915=function(_0x18e654,_0x372fe9){_0x18e654=_0x18e654-0x0;var _0x3f2c10=_0x915b[_0x18e654];return _0x3f2c10;};'use strict';var EventEmitter=require(_0xb915('0x0'));var DashboardItem=require(_0xb915('0x1'))['db'][_0xb915('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xb915('0x3')](0x0);var events={'afterCreate':_0xb915('0x4'),'afterUpdate':_0xb915('0x5'),'afterDestroy':_0xb915('0x6')};function emitEvent(_0x49d1db){return function(_0xe7bfb,_0x2da8e5,_0x329ec1){DashboardItemEvents[_0xb915('0x7')](_0x49d1db+':'+_0xe7bfb['id'],_0xe7bfb);DashboardItemEvents[_0xb915('0x7')](_0x49d1db,_0xe7bfb);_0x329ec1(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module[_0xb915('0x8')]=DashboardItemEvents;
\ No newline at end of file
index a5186f5..0cef007 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfd0=['../../config/logger','api','moment','bluebird','path','../../config/environment','./dashboardItem.attributes','define','DashboardItem','lodash','util'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0xdfd0,0x13d));var _0x0dfd=function(_0x5c634f,_0x7e428c){_0x5c634f=_0x5c634f-0x0;var _0x517272=_0xdfd0[_0x5c634f];return _0x517272;};'use strict';var _=require(_0x0dfd('0x0'));var util=require(_0x0dfd('0x1'));var logger=require(_0x0dfd('0x2'))(_0x0dfd('0x3'));var moment=require(_0x0dfd('0x4'));var BPromise=require(_0x0dfd('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0dfd('0x6'));var rimraf=require('rimraf');var config=require(_0x0dfd('0x7'));var attributes=require(_0x0dfd('0x8'));module['exports']=function(_0x1241ee,_0xd8073a){return _0x1241ee[_0x0dfd('0x9')](_0x0dfd('0xa'),attributes,{'tableName':'dashboard_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x174e=['../../config/logger','api','request-promise','./dashboardItem.attributes','exports','DashboardItem','dashboard_items','lodash','util'];(function(_0x2cc1a4,_0x50c0d7){var _0x2ef90d=function(_0x30d865){while(--_0x30d865){_0x2cc1a4['push'](_0x2cc1a4['shift']());}};_0x2ef90d(++_0x50c0d7);}(_0x174e,0x19c));var _0xe174=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x174e[_0x46e363];return _0x3fb059;};'use strict';var _=require(_0xe174('0x0'));var util=require(_0xe174('0x1'));var logger=require(_0xe174('0x2'))(_0xe174('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xe174('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe174('0x5'));module[_0xe174('0x6')]=function(_0x17d613,_0x50b14e){return _0x17d613['define'](_0xe174('0x7'),attributes,{'tableName':_0xe174('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b257987..24eb12b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8739=['../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./dashboardItem.socket','register','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x3b6eb9,_0x409248){var _0x2d48a4=function(_0x5c5fb8){while(--_0x5c5fb8){_0x3b6eb9['push'](_0x3b6eb9['shift']());}};_0x2d48a4(++_0x409248);}(_0x8739,0x174));var _0x9873=function(_0x3eab2c,_0x2754ce){_0x3eab2c=_0x3eab2c-0x0;var _0x4361f2=_0x8739[_0x3eab2c];return _0x4361f2;};'use strict';var _=require('lodash');var util=require(_0x9873('0x0'));var moment=require(_0x9873('0x1'));var BPromise=require(_0x9873('0x2'));var rs=require(_0x9873('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9873('0x4'))['db'];var utils=require(_0x9873('0x5'));var logger=require(_0x9873('0x6'))(_0x9873('0x7'));var config=require(_0x9873('0x8'));var jayson=require(_0x9873('0x9'));var client=jayson['client'][_0x9873('0xa')]({'port':0x232a});config[_0x9873('0xb')]=_[_0x9873('0xc')](config[_0x9873('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x9873('0xd'))(new Redis(config[_0x9873('0xb')]));require(_0x9873('0xe'))[_0x9873('0xf')](socket);function respondWithRpcPromise(_0x241171,_0x1c1b6c,_0x320321){return new BPromise(function(_0x533642,_0x5af8e6){return client['request'](_0x241171,_0x320321)[_0x9873('0x10')](function(_0x8229e7){logger[_0x9873('0x11')](_0x9873('0x12'),_0x1c1b6c,_0x9873('0x13'));logger[_0x9873('0x14')](_0x9873('0x15'),_0x1c1b6c,'request\x20sent',JSON[_0x9873('0x16')](_0x8229e7));if(_0x8229e7[_0x9873('0x17')]){if(_0x8229e7[_0x9873('0x17')]['code']===0x1f4){logger[_0x9873('0x17')](_0x9873('0x12'),_0x1c1b6c,_0x8229e7['error']['message']);return _0x5af8e6(_0x8229e7[_0x9873('0x17')]['message']);}logger[_0x9873('0x17')]('DashboardItem,\x20%s,\x20%s',_0x1c1b6c,_0x8229e7[_0x9873('0x17')][_0x9873('0x18')]);return _0x533642(_0x8229e7[_0x9873('0x17')][_0x9873('0x18')]);}else{logger[_0x9873('0x11')](_0x9873('0x12'),_0x1c1b6c,_0x9873('0x13'));_0x533642(_0x8229e7[_0x9873('0x19')][_0x9873('0x18')]);}})[_0x9873('0x1a')](function(_0x8527e7){logger[_0x9873('0x17')](_0x9873('0x12'),_0x1c1b6c,_0x8527e7);_0x5af8e6(_0x8527e7);});});}
\ No newline at end of file
+var _0x4073=['redis','localhost','socket.io-emitter','./dashboardItem.socket','request','then','info','DashboardItem,\x20%s,\x20%s','DashboardItem,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http'];(function(_0x139229,_0x236164){var _0xa15684=function(_0x107918){while(--_0x107918){_0x139229['push'](_0x139229['shift']());}};_0xa15684(++_0x236164);}(_0x4073,0x154));var _0x3407=function(_0x5a1fe5,_0x24223a){_0x5a1fe5=_0x5a1fe5-0x0;var _0x5a6ba9=_0x4073[_0x5a1fe5];return _0x5a6ba9;};'use strict';var _=require(_0x3407('0x0'));var util=require('util');var moment=require(_0x3407('0x1'));var BPromise=require(_0x3407('0x2'));var rs=require(_0x3407('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3407('0x4'))['db'];var utils=require(_0x3407('0x5'));var logger=require(_0x3407('0x6'))(_0x3407('0x7'));var config=require('../../config/environment');var jayson=require(_0x3407('0x8'));var client=jayson[_0x3407('0x9')][_0x3407('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x3407('0xb')],{'host':_0x3407('0xc'),'port':0x18eb});var socket=require(_0x3407('0xd'))(new Redis(config[_0x3407('0xb')]));require(_0x3407('0xe'))['register'](socket);function respondWithRpcPromise(_0x34c00a,_0x46a25b,_0x42c591){return new BPromise(function(_0x439fea,_0x3199f6){return client[_0x3407('0xf')](_0x34c00a,_0x42c591)[_0x3407('0x10')](function(_0x154eb1){logger[_0x3407('0x11')](_0x3407('0x12'),_0x46a25b,'request\x20sent');logger['debug'](_0x3407('0x13'),_0x46a25b,_0x3407('0x14'),JSON[_0x3407('0x15')](_0x154eb1));if(_0x154eb1[_0x3407('0x16')]){if(_0x154eb1[_0x3407('0x16')][_0x3407('0x17')]===0x1f4){logger[_0x3407('0x16')](_0x3407('0x12'),_0x46a25b,_0x154eb1[_0x3407('0x16')][_0x3407('0x18')]);return _0x3199f6(_0x154eb1[_0x3407('0x16')][_0x3407('0x18')]);}logger['error'](_0x3407('0x12'),_0x46a25b,_0x154eb1['error'][_0x3407('0x18')]);return _0x439fea(_0x154eb1['error']['message']);}else{logger[_0x3407('0x11')](_0x3407('0x12'),_0x46a25b,_0x3407('0x14'));_0x439fea(_0x154eb1[_0x3407('0x19')][_0x3407('0x18')]);}})[_0x3407('0x1a')](function(_0x52ed3f){logger['error'](_0x3407('0x12'),_0x46a25b,_0x52ed3f);_0x3199f6(_0x52ed3f);});});}
\ No newline at end of file
index 5ddbbc6..6c91888 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe137=['save','update','emit','removeListener','dashboardItem:','./dashboardItem.events'];(function(_0x4a2f97,_0x1fd001){var _0x105ee8=function(_0x4ba8dc){while(--_0x4ba8dc){_0x4a2f97['push'](_0x4a2f97['shift']());}};_0x105ee8(++_0x1fd001);}(_0xe137,0x6b));var _0x7e13=function(_0x5b740b,_0x381833){_0x5b740b=_0x5b740b-0x0;var _0x6f8f4e=_0xe137[_0x5b740b];return _0x6f8f4e;};'use strict';var DashboardItemEvents=require(_0x7e13('0x0'));var events=[_0x7e13('0x1'),'remove',_0x7e13('0x2')];function createListener(_0x2e4e81,_0x141b10){return function(_0x2def4a){_0x141b10[_0x7e13('0x3')](_0x2e4e81,_0x2def4a);};}function removeListener(_0x29f390,_0x472a2e){return function(){DashboardItemEvents[_0x7e13('0x4')](_0x29f390,_0x472a2e);};}exports['register']=function(_0x56f81a){for(var _0x157fee=0x0,_0x1804f7=events['length'];_0x157fee<_0x1804f7;_0x157fee++){var _0x582457=events[_0x157fee];var _0x424306=createListener(_0x7e13('0x5')+_0x582457,_0x56f81a);DashboardItemEvents['on'](_0x582457,_0x424306);}};
\ No newline at end of file
+var _0x1dbc=['register','length','dashboardItem:','save','remove','update'];(function(_0x409d15,_0x5503da){var _0x4e57a1=function(_0x3b5179){while(--_0x3b5179){_0x409d15['push'](_0x409d15['shift']());}};_0x4e57a1(++_0x5503da);}(_0x1dbc,0xc9));var _0xc1db=function(_0x29859f,_0x2f7896){_0x29859f=_0x29859f-0x0;var _0x3a4118=_0x1dbc[_0x29859f];return _0x3a4118;};'use strict';var DashboardItemEvents=require('./dashboardItem.events');var events=[_0xc1db('0x0'),_0xc1db('0x1'),_0xc1db('0x2')];function createListener(_0x36e572,_0x46cad3){return function(_0x4ca27e){_0x46cad3['emit'](_0x36e572,_0x4ca27e);};}function removeListener(_0x2fab89,_0x75694e){return function(){DashboardItemEvents['removeListener'](_0x2fab89,_0x75694e);};}exports[_0xc1db('0x3')]=function(_0x2cd0dc){for(var _0x252b0b=0x0,_0x2819bf=events[_0xc1db('0x4')];_0x252b0b<_0x2819bf;_0x252b0b++){var _0x1ee733=events[_0x252b0b];var _0x525c80=createListener(_0xc1db('0x5')+_0x1ee733,_0x2cd0dc);DashboardItemEvents['on'](_0x1ee733,_0x525c80);}};
\ No newline at end of file
index f9d2f9b..68b8291 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc24=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','post','put','update','destroy','multer','util','connect-timeout','express','Router'];(function(_0x4ec63a,_0x2ef377){var _0x5ee5d3=function(_0x661f1b){while(--_0x661f1b){_0x4ec63a['push'](_0x4ec63a['shift']());}};_0x5ee5d3(++_0x2ef377);}(_0xfc24,0x13b));var _0x4fc2=function(_0x5e8eae,_0x4f81e0){_0x5e8eae=_0x5e8eae-0x0;var _0xdd09cd=_0xfc24[_0x5e8eae];return _0xdd09cd;};'use strict';var multer=require(_0x4fc2('0x0'));var util=require(_0x4fc2('0x1'));var path=require('path');var timeout=require(_0x4fc2('0x2'));var express=require(_0x4fc2('0x3'));var router=express[_0x4fc2('0x4')]();var fs_extra=require(_0x4fc2('0x5'));var auth=require(_0x4fc2('0x6'));var interaction=require(_0x4fc2('0x7'));var config=require(_0x4fc2('0x8'));var controller=require('./dashboardItem.controller');router[_0x4fc2('0x9')](_0x4fc2('0xa'),auth[_0x4fc2('0xb')](),controller['show']);router[_0x4fc2('0xc')]('/',auth[_0x4fc2('0xb')](),controller['create']);router[_0x4fc2('0xd')](_0x4fc2('0xa'),auth[_0x4fc2('0xb')](),controller[_0x4fc2('0xe')]);router['delete'](_0x4fc2('0xa'),auth[_0x4fc2('0xb')](),controller[_0x4fc2('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x1787=['put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','show','post','create'];(function(_0x13ba7b,_0x2ab451){var _0x548e8b=function(_0x2717f4){while(--_0x2717f4){_0x13ba7b['push'](_0x13ba7b['shift']());}};_0x548e8b(++_0x2ab451);}(_0x1787,0x101));var _0x7178=function(_0x56d624,_0x29d715){_0x56d624=_0x56d624-0x0;var _0x509910=_0x1787[_0x56d624];return _0x509910;};'use strict';var multer=require(_0x7178('0x0'));var util=require('util');var path=require(_0x7178('0x1'));var timeout=require(_0x7178('0x2'));var express=require(_0x7178('0x3'));var router=express[_0x7178('0x4')]();var fs_extra=require(_0x7178('0x5'));var auth=require(_0x7178('0x6'));var interaction=require(_0x7178('0x7'));var config=require(_0x7178('0x8'));var controller=require(_0x7178('0x9'));router[_0x7178('0xa')](_0x7178('0xb'),auth[_0x7178('0xc')](),controller[_0x7178('0xd')]);router[_0x7178('0xe')]('/',auth[_0x7178('0xc')](),controller[_0x7178('0xf')]);router[_0x7178('0x10')](_0x7178('0xb'),auth[_0x7178('0xc')](),controller[_0x7178('0x11')]);router[_0x7178('0x12')](_0x7178('0xb'),auth[_0x7178('0xc')](),controller[_0x7178('0x13')]);module[_0x7178('0x14')]=router;
\ No newline at end of file
index f64aee3..c3aa347 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c9a=['exports','STRING','ENUM','first','third','sequelize'];(function(_0x26cac6,_0x3e959e){var _0x384ba5=function(_0x5e933b){while(--_0x5e933b){_0x26cac6['push'](_0x26cac6['shift']());}};_0x384ba5(++_0x3e959e);}(_0x7c9a,0xb3));var _0xa7c9=function(_0x2daf2c,_0x4815b8){_0x2daf2c=_0x2daf2c-0x0;var _0x1763b0=_0x7c9a[_0x2daf2c];return _0x1763b0;};'use strict';var Sequelize=require(_0xa7c9('0x0'));module[_0xa7c9('0x1')]={'name':{'type':Sequelize[_0xa7c9('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0xa7c9('0x3')](_0xa7c9('0x4'),'second',_0xa7c9('0x5')),'allowNull':![],'defaultValue':_0xa7c9('0x4')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x7315=['first','second','third','STRING','ENUM'];(function(_0x4bddb8,_0x55b4e4){var _0x454a04=function(_0x3b6116){while(--_0x3b6116){_0x4bddb8['push'](_0x4bddb8['shift']());}};_0x454a04(++_0x55b4e4);}(_0x7315,0xd5));var _0x5731=function(_0x44e016,_0x2a4ac3){_0x44e016=_0x44e016-0x0;var _0x5bc0a0=_0x7315[_0x44e016];return _0x5bc0a0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x5731('0x0')],'allowNull':![]},'level':{'type':Sequelize[_0x5731('0x1')](_0x5731('0x2'),_0x5731('0x3'),_0x5731('0x4')),'allowNull':![],'defaultValue':_0x5731('0x2')},'description':{'type':Sequelize[_0x5731('0x0')]}};
\ No newline at end of file
index 63f6bbe..7fafa9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f27=['query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','type','VIRTUAL','filter','merge','options','findAll','rows','params','includeAll','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','Content-Range','json','reject','save','update','then','get','Dispositions','UserProfileResource','destroy','end','error','name','send','index','map','Disposition','key'];(function(_0x4f83ca,_0x46f67a){var _0x1fbac3=function(_0x19e401){while(--_0x19e401){_0x4f83ca['push'](_0x4f83ca['shift']());}};_0x1fbac3(++_0x46f67a);}(_0x3f27,0x1f4));var _0x73f2=function(_0x94bc4f,_0x55232e){_0x94bc4f=_0x94bc4f-0x0;var _0x268f4b=_0x3f27[_0x94bc4f];return _0x268f4b;};'use strict';var emlformat=require(_0x73f2('0x0'));var rimraf=require(_0x73f2('0x1'));var zipdir=require(_0x73f2('0x2'));var jsonpatch=require(_0x73f2('0x3'));var rp=require(_0x73f2('0x4'));var moment=require('moment');var BPromise=require(_0x73f2('0x5'));var Mustache=require(_0x73f2('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x73f2('0x7'));var ejs=require(_0x73f2('0x8'));var fs=require('fs');var fs_extra=require(_0x73f2('0x9'));var _=require(_0x73f2('0xa'));var squel=require(_0x73f2('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x73f2('0xc'));var toCsv=require(_0x73f2('0x7'));var querystring=require(_0x73f2('0xd'));var Papa=require(_0x73f2('0xe'));var Redis=require(_0x73f2('0xf'));var authService=require(_0x73f2('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x73f2('0x11'));var hardwareService=require(_0x73f2('0x12'));var logger=require(_0x73f2('0x13'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x73f2('0x14'));var db=require(_0x73f2('0x15'))['db'];function respondWithStatusCode(_0x20d4f3,_0x25e1bc){_0x25e1bc=_0x25e1bc||0xcc;return function(_0x454352){if(_0x454352){return _0x20d4f3[_0x73f2('0x16')](_0x25e1bc);}return _0x20d4f3[_0x73f2('0x17')](_0x25e1bc)['end']();};}function respondWithResult(_0x4d4bd2,_0x469686){_0x469686=_0x469686||0xc8;return function(_0x45e8e0){if(_0x45e8e0){return _0x4d4bd2['status'](_0x469686)['json'](_0x45e8e0);}};}function respondWithFilteredResult(_0x2c0720,_0x39feae){return function(_0x2a1ac6){if(_0x2a1ac6){var _0x262f51=typeof _0x39feae[_0x73f2('0x18')]===_0x73f2('0x19')&&typeof _0x39feae[_0x73f2('0x1a')]===_0x73f2('0x19');var _0x41e10c=_0x2a1ac6[_0x73f2('0x1b')];var _0x1dee61=_0x262f51?0x0:_0x39feae[_0x73f2('0x18')];var _0x2546a0=_0x262f51?_0x2a1ac6['count']:_0x39feae[_0x73f2('0x18')]+_0x39feae[_0x73f2('0x1a')];var _0x13c6ec;if(_0x2546a0>=_0x41e10c){_0x2546a0=_0x41e10c;_0x13c6ec=0xc8;}else{_0x13c6ec=0xce;}_0x2c0720[_0x73f2('0x17')](_0x13c6ec);return _0x2c0720['set'](_0x73f2('0x1c'),_0x1dee61+'-'+_0x2546a0+'/'+_0x41e10c)[_0x73f2('0x1d')](_0x2a1ac6);}return null;};}function patchUpdates(_0x416ead){return function(_0x2ae791){try{jsonpatch['apply'](_0x2ae791,_0x416ead,!![]);}catch(_0xd80727){return BPromise[_0x73f2('0x1e')](_0xd80727);}return _0x2ae791[_0x73f2('0x1f')]();};}function saveUpdates(_0x55416e,_0x4a723b){return function(_0x444b06){if(_0x444b06){return _0x444b06[_0x73f2('0x20')](_0x55416e)[_0x73f2('0x21')](function(_0x5e8f4c){return _0x5e8f4c;});}return null;};}function removeEntity(_0x4844df,_0x11a5da){return function(_0xd5bb3b){if(_0xd5bb3b){return _0xd5bb3b['destroy']()[_0x73f2('0x21')](function(){var _0x86c182=_0xd5bb3b[_0x73f2('0x22')]({'plain':!![]});var _0x4ecdc7=_0x73f2('0x23');return db[_0x73f2('0x24')][_0x73f2('0x25')]({'where':{'type':_0x4ecdc7,'resourceId':_0x86c182['id']}})['then'](function(){return _0xd5bb3b;});})['then'](function(){_0x4844df['status'](0xcc)[_0x73f2('0x26')]();});}};}function handleEntityNotFound(_0x4529c6,_0x398593){return function(_0x444efc){if(!_0x444efc){_0x4529c6[_0x73f2('0x16')](0x194);}return _0x444efc;};}function handleError(_0x3f784d,_0x545fb5){_0x545fb5=_0x545fb5||0x1f4;return function(_0x2840f0){logger[_0x73f2('0x27')](_0x2840f0['stack']);if(_0x2840f0[_0x73f2('0x28')]){delete _0x2840f0[_0x73f2('0x28')];}_0x3f784d[_0x73f2('0x17')](_0x545fb5)[_0x73f2('0x29')](_0x2840f0);};}exports[_0x73f2('0x2a')]=function(_0x52b04f,_0x3add12){var _0x1caacd={},_0x4fc6ff={},_0x5ea8d6={'count':0x0,'rows':[]};var _0x3a255f=_[_0x73f2('0x2b')](db[_0x73f2('0x2c')]['rawAttributes'],function(_0x4977d2){return{'name':_0x4977d2['fieldName'],'type':_0x4977d2['type'][_0x73f2('0x2d')]};});_0x4fc6ff['model']=_[_0x73f2('0x2b')](_0x3a255f,_0x73f2('0x28'));_0x4fc6ff[_0x73f2('0x2e')]=_[_0x73f2('0x2f')](_0x52b04f['query']);_0x4fc6ff[_0x73f2('0x30')]=_[_0x73f2('0x31')](_0x4fc6ff[_0x73f2('0x32')],_0x4fc6ff['query']);_0x1caacd[_0x73f2('0x33')]=_[_0x73f2('0x31')](_0x4fc6ff[_0x73f2('0x32')],qs['fields'](_0x52b04f[_0x73f2('0x2e')][_0x73f2('0x34')]));_0x1caacd[_0x73f2('0x33')]=_0x1caacd[_0x73f2('0x33')][_0x73f2('0x35')]?_0x1caacd[_0x73f2('0x33')]:_0x4fc6ff[_0x73f2('0x32')];if(!_0x52b04f[_0x73f2('0x2e')][_0x73f2('0x36')]('nolimit')){_0x1caacd['limit']=qs['limit'](_0x52b04f[_0x73f2('0x2e')][_0x73f2('0x1a')]);_0x1caacd[_0x73f2('0x18')]=qs['offset'](_0x52b04f[_0x73f2('0x2e')][_0x73f2('0x18')]);}_0x1caacd[_0x73f2('0x37')]=qs[_0x73f2('0x38')](_0x52b04f[_0x73f2('0x2e')]['sort']);_0x1caacd[_0x73f2('0x39')]=qs[_0x73f2('0x30')](_[_0x73f2('0x3a')](_0x52b04f[_0x73f2('0x2e')],_0x4fc6ff[_0x73f2('0x30')]),_0x3a255f);if(_0x52b04f[_0x73f2('0x2e')]['filter']){_0x1caacd[_0x73f2('0x39')]=_['merge'](_0x1caacd[_0x73f2('0x39')],{'$or':_[_0x73f2('0x2b')](_0x3a255f,function(_0x420a39){if(_0x420a39[_0x73f2('0x3b')]!==_0x73f2('0x3c')){var _0x283ea1={};_0x283ea1[_0x420a39[_0x73f2('0x28')]]={'$like':'%'+_0x52b04f[_0x73f2('0x2e')][_0x73f2('0x3d')]+'%'};return _0x283ea1;}})});}_0x1caacd=_[_0x73f2('0x3e')]({},_0x1caacd,_0x52b04f[_0x73f2('0x3f')]);var _0x317043={'where':_0x1caacd['where']};return db['Disposition'][_0x73f2('0x1b')](_0x317043)['then'](function(_0x58a244){_0x5ea8d6[_0x73f2('0x1b')]=_0x58a244;if(_0x52b04f[_0x73f2('0x2e')]['includeAll']){_0x1caacd['include']=[{'all':!![]}];}return db[_0x73f2('0x2c')][_0x73f2('0x40')](_0x1caacd);})[_0x73f2('0x21')](function(_0x211e04){_0x5ea8d6[_0x73f2('0x41')]=_0x211e04;return _0x5ea8d6;})[_0x73f2('0x21')](respondWithFilteredResult(_0x3add12,_0x1caacd))['catch'](handleError(_0x3add12,null));};exports['show']=function(_0x2c02ab,_0x2720ae){var _0x33e0ac={'raw':!![],'where':{'id':_0x2c02ab[_0x73f2('0x42')]['id']}},_0x4fd07a={};_0x4fd07a[_0x73f2('0x32')]=_[_0x73f2('0x2f')](db[_0x73f2('0x2c')]['rawAttributes']);_0x4fd07a[_0x73f2('0x2e')]=_['keys'](_0x2c02ab[_0x73f2('0x2e')]);_0x4fd07a['filters']=_[_0x73f2('0x31')](_0x4fd07a['model'],_0x4fd07a[_0x73f2('0x2e')]);_0x33e0ac[_0x73f2('0x33')]=_[_0x73f2('0x31')](_0x4fd07a[_0x73f2('0x32')],qs[_0x73f2('0x34')](_0x2c02ab[_0x73f2('0x2e')][_0x73f2('0x34')]));_0x33e0ac[_0x73f2('0x33')]=_0x33e0ac[_0x73f2('0x33')]['length']?_0x33e0ac[_0x73f2('0x33')]:_0x4fd07a['model'];if(_0x2c02ab[_0x73f2('0x2e')][_0x73f2('0x43')]){_0x33e0ac['include']=[{'all':!![]}];}_0x33e0ac=_['merge']({},_0x33e0ac,_0x2c02ab[_0x73f2('0x3f')]);return db[_0x73f2('0x2c')]['find'](_0x33e0ac)['then'](handleEntityNotFound(_0x2720ae,null))[_0x73f2('0x21')](respondWithResult(_0x2720ae,null))['catch'](handleError(_0x2720ae,null));};exports[_0x73f2('0x44')]=function(_0x4f9dfd,_0xdcdc3b){return db['Disposition'][_0x73f2('0x44')](_0x4f9dfd[_0x73f2('0x45')],{})[_0x73f2('0x21')](function(_0x410c4a){var _0x5739fd=_0x4f9dfd[_0x73f2('0x46')][_0x73f2('0x22')]({'plain':!![]});if(!_0x5739fd)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5739fd[_0x73f2('0x47')]===_0x73f2('0x46')){var _0x5d5bba=_0x410c4a[_0x73f2('0x22')]({'plain':!![]});var _0x4cfce9='Dispositions';return db[_0x73f2('0x48')]['find']({'where':{'name':_0x4cfce9,'userProfileId':_0x5739fd[_0x73f2('0x49')]},'raw':!![]})[_0x73f2('0x21')](function(_0x503f74){if(_0x503f74&&_0x503f74[_0x73f2('0x4a')]===0x0){return db[_0x73f2('0x24')][_0x73f2('0x44')]({'name':_0x5d5bba[_0x73f2('0x28')],'resourceId':_0x5d5bba['id'],'type':_0x503f74['name'],'sectionId':_0x503f74['id']},{})['then'](function(){return _0x410c4a;});}else{return _0x410c4a;}})[_0x73f2('0x4b')](function(_0x2eece4){logger[_0x73f2('0x27')](_0x73f2('0x4c'),_0x2eece4);throw _0x2eece4;});}return _0x410c4a;})['then'](respondWithResult(_0xdcdc3b,0xc9))[_0x73f2('0x4b')](handleError(_0xdcdc3b,null));};exports[_0x73f2('0x20')]=function(_0x5a55fe,_0xe968bd){if(_0x5a55fe[_0x73f2('0x45')]['id']){delete _0x5a55fe[_0x73f2('0x45')]['id'];}return db[_0x73f2('0x2c')][_0x73f2('0x4d')]({'where':{'id':_0x5a55fe[_0x73f2('0x42')]['id']}})['then'](handleEntityNotFound(_0xe968bd,null))['then'](saveUpdates(_0x5a55fe[_0x73f2('0x45')],null))['then'](respondWithResult(_0xe968bd,null))[_0x73f2('0x4b')](handleError(_0xe968bd,null));};exports[_0x73f2('0x25')]=function(_0xca621e,_0x275a6f){return db[_0x73f2('0x2c')]['find']({'where':{'id':_0xca621e[_0x73f2('0x42')]['id']}})[_0x73f2('0x21')](handleEntityNotFound(_0x275a6f,null))[_0x73f2('0x21')](removeEntity(_0x275a6f,null))['catch'](handleError(_0x275a6f,null));};
\ No newline at end of file
+var _0xbeba=['includeAll','include','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Dispositions','UserProfileSection','find','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','error','stack','name','send','index','map','Disposition','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','order','sort','pick','filter','where','VIRTUAL','merge','options','rows','show','params'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xbeba,0x64));var _0xabeb=function(_0x3f37cb,_0x5c8a98){_0x3f37cb=_0x3f37cb-0x0;var _0x136cf0=_0xbeba[_0x3f37cb];return _0x136cf0;};'use strict';var emlformat=require(_0xabeb('0x0'));var rimraf=require(_0xabeb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xabeb('0x2'));var rp=require(_0xabeb('0x3'));var moment=require(_0xabeb('0x4'));var BPromise=require(_0xabeb('0x5'));var Mustache=require(_0xabeb('0x6'));var util=require('util');var path=require(_0xabeb('0x7'));var sox=require(_0xabeb('0x8'));var csv=require(_0xabeb('0x9'));var ejs=require(_0xabeb('0xa'));var fs=require('fs');var fs_extra=require(_0xabeb('0xb'));var _=require(_0xabeb('0xc'));var squel=require(_0xabeb('0xd'));var crypto=require(_0xabeb('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xabeb('0x9'));var querystring=require(_0xabeb('0xf'));var Papa=require('papaparse');var Redis=require(_0xabeb('0x10'));var authService=require(_0xabeb('0x11'));var qs=require(_0xabeb('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xabeb('0x13'));var logger=require(_0xabeb('0x14'))('api');var utils=require(_0xabeb('0x15'));var config=require(_0xabeb('0x16'));var licenseUtil=require(_0xabeb('0x17'));var db=require(_0xabeb('0x18'))['db'];function respondWithStatusCode(_0x1902a2,_0x3b8646){_0x3b8646=_0x3b8646||0xcc;return function(_0x1f6add){if(_0x1f6add){return _0x1902a2[_0xabeb('0x19')](_0x3b8646);}return _0x1902a2[_0xabeb('0x1a')](_0x3b8646)[_0xabeb('0x1b')]();};}function respondWithResult(_0x107d4b,_0xfd2b73){_0xfd2b73=_0xfd2b73||0xc8;return function(_0x56b406){if(_0x56b406){return _0x107d4b[_0xabeb('0x1a')](_0xfd2b73)[_0xabeb('0x1c')](_0x56b406);}};}function respondWithFilteredResult(_0x1da4e1,_0x5c4e39){return function(_0x88209b){if(_0x88209b){var _0x244d89=typeof _0x5c4e39[_0xabeb('0x1d')]===_0xabeb('0x1e')&&typeof _0x5c4e39[_0xabeb('0x1f')]===_0xabeb('0x1e');var _0x1b79c7=_0x88209b[_0xabeb('0x20')];var _0x1ce9b4=_0x244d89?0x0:_0x5c4e39[_0xabeb('0x1d')];var _0x134a9e=_0x244d89?_0x88209b[_0xabeb('0x20')]:_0x5c4e39['offset']+_0x5c4e39['limit'];var _0x2df5e9;if(_0x134a9e>=_0x1b79c7){_0x134a9e=_0x1b79c7;_0x2df5e9=0xc8;}else{_0x2df5e9=0xce;}_0x1da4e1[_0xabeb('0x1a')](_0x2df5e9);return _0x1da4e1[_0xabeb('0x21')](_0xabeb('0x22'),_0x1ce9b4+'-'+_0x134a9e+'/'+_0x1b79c7)['json'](_0x88209b);}return null;};}function patchUpdates(_0x505eb8){return function(_0x22f3dd){try{jsonpatch[_0xabeb('0x23')](_0x22f3dd,_0x505eb8,!![]);}catch(_0x5c55f1){return BPromise[_0xabeb('0x24')](_0x5c55f1);}return _0x22f3dd[_0xabeb('0x25')]();};}function saveUpdates(_0x565c2a,_0x4bbc21){return function(_0x4db183){if(_0x4db183){return _0x4db183[_0xabeb('0x26')](_0x565c2a)[_0xabeb('0x27')](function(_0x436726){return _0x436726;});}return null;};}function removeEntity(_0x12319b,_0x57b10b){return function(_0x1ffd89){if(_0x1ffd89){return _0x1ffd89[_0xabeb('0x28')]()[_0xabeb('0x27')](function(){var _0x47dc97=_0x1ffd89[_0xabeb('0x29')]({'plain':!![]});var _0x4526a2='Dispositions';return db['UserProfileResource'][_0xabeb('0x28')]({'where':{'type':_0x4526a2,'resourceId':_0x47dc97['id']}})[_0xabeb('0x27')](function(){return _0x1ffd89;});})[_0xabeb('0x27')](function(){_0x12319b[_0xabeb('0x1a')](0xcc)[_0xabeb('0x1b')]();});}};}function handleEntityNotFound(_0x1ba0a9,_0x48530c){return function(_0x280b72){if(!_0x280b72){_0x1ba0a9['sendStatus'](0x194);}return _0x280b72;};}function handleError(_0x5652b1,_0x2e47b1){_0x2e47b1=_0x2e47b1||0x1f4;return function(_0x54e8a2){logger[_0xabeb('0x2a')](_0x54e8a2[_0xabeb('0x2b')]);if(_0x54e8a2[_0xabeb('0x2c')]){delete _0x54e8a2[_0xabeb('0x2c')];}_0x5652b1[_0xabeb('0x1a')](_0x2e47b1)[_0xabeb('0x2d')](_0x54e8a2);};}exports[_0xabeb('0x2e')]=function(_0x565576,_0x10d542){var _0x58a82d={},_0x25434e={},_0x38744d={'count':0x0,'rows':[]};var _0x32d352=_[_0xabeb('0x2f')](db[_0xabeb('0x30')][_0xabeb('0x31')],function(_0x293100){return{'name':_0x293100[_0xabeb('0x32')],'type':_0x293100[_0xabeb('0x33')][_0xabeb('0x34')]};});_0x25434e['model']=_[_0xabeb('0x2f')](_0x32d352,_0xabeb('0x2c'));_0x25434e[_0xabeb('0x35')]=_[_0xabeb('0x36')](_0x565576[_0xabeb('0x35')]);_0x25434e[_0xabeb('0x37')]=_[_0xabeb('0x38')](_0x25434e[_0xabeb('0x39')],_0x25434e['query']);_0x58a82d['attributes']=_[_0xabeb('0x38')](_0x25434e[_0xabeb('0x39')],qs[_0xabeb('0x3a')](_0x565576['query'][_0xabeb('0x3a')]));_0x58a82d['attributes']=_0x58a82d['attributes']['length']?_0x58a82d[_0xabeb('0x3b')]:_0x25434e[_0xabeb('0x39')];if(!_0x565576['query'][_0xabeb('0x3c')]('nolimit')){_0x58a82d[_0xabeb('0x1f')]=qs[_0xabeb('0x1f')](_0x565576[_0xabeb('0x35')][_0xabeb('0x1f')]);_0x58a82d[_0xabeb('0x1d')]=qs[_0xabeb('0x1d')](_0x565576[_0xabeb('0x35')]['offset']);}_0x58a82d[_0xabeb('0x3d')]=qs[_0xabeb('0x3e')](_0x565576['query'][_0xabeb('0x3e')]);_0x58a82d['where']=qs[_0xabeb('0x37')](_[_0xabeb('0x3f')](_0x565576[_0xabeb('0x35')],_0x25434e['filters']),_0x32d352);if(_0x565576[_0xabeb('0x35')][_0xabeb('0x40')]){_0x58a82d[_0xabeb('0x41')]=_['merge'](_0x58a82d[_0xabeb('0x41')],{'$or':_[_0xabeb('0x2f')](_0x32d352,function(_0x2fb429){if(_0x2fb429[_0xabeb('0x33')]!==_0xabeb('0x42')){var _0x255e19={};_0x255e19[_0x2fb429['name']]={'$like':'%'+_0x565576['query'][_0xabeb('0x40')]+'%'};return _0x255e19;}})});}_0x58a82d=_[_0xabeb('0x43')]({},_0x58a82d,_0x565576[_0xabeb('0x44')]);var _0x35cb21={'where':_0x58a82d[_0xabeb('0x41')]};return db[_0xabeb('0x30')]['count'](_0x35cb21)[_0xabeb('0x27')](function(_0xc6d03f){_0x38744d[_0xabeb('0x20')]=_0xc6d03f;if(_0x565576[_0xabeb('0x35')]['includeAll']){_0x58a82d['include']=[{'all':!![]}];}return db[_0xabeb('0x30')]['findAll'](_0x58a82d);})[_0xabeb('0x27')](function(_0x4b87f8){_0x38744d[_0xabeb('0x45')]=_0x4b87f8;return _0x38744d;})[_0xabeb('0x27')](respondWithFilteredResult(_0x10d542,_0x58a82d))['catch'](handleError(_0x10d542,null));};exports[_0xabeb('0x46')]=function(_0x13bc0c,_0x2d0d12){var _0xc656f8={'raw':!![],'where':{'id':_0x13bc0c[_0xabeb('0x47')]['id']}},_0xdca1aa={};_0xdca1aa[_0xabeb('0x39')]=_[_0xabeb('0x36')](db['Disposition']['rawAttributes']);_0xdca1aa[_0xabeb('0x35')]=_[_0xabeb('0x36')](_0x13bc0c[_0xabeb('0x35')]);_0xdca1aa['filters']=_['intersection'](_0xdca1aa[_0xabeb('0x39')],_0xdca1aa[_0xabeb('0x35')]);_0xc656f8[_0xabeb('0x3b')]=_[_0xabeb('0x38')](_0xdca1aa[_0xabeb('0x39')],qs[_0xabeb('0x3a')](_0x13bc0c[_0xabeb('0x35')]['fields']));_0xc656f8['attributes']=_0xc656f8['attributes']['length']?_0xc656f8[_0xabeb('0x3b')]:_0xdca1aa[_0xabeb('0x39')];if(_0x13bc0c['query'][_0xabeb('0x48')]){_0xc656f8[_0xabeb('0x49')]=[{'all':!![]}];}_0xc656f8=_['merge']({},_0xc656f8,_0x13bc0c[_0xabeb('0x44')]);return db[_0xabeb('0x30')]['find'](_0xc656f8)[_0xabeb('0x27')](handleEntityNotFound(_0x2d0d12,null))['then'](respondWithResult(_0x2d0d12,null))[_0xabeb('0x4a')](handleError(_0x2d0d12,null));};exports['create']=function(_0x736d0,_0x3a57c9){return db[_0xabeb('0x30')][_0xabeb('0x4b')](_0x736d0[_0xabeb('0x4c')],{})[_0xabeb('0x27')](function(_0x3afcfe){var _0x14c800=_0x736d0['user'][_0xabeb('0x29')]({'plain':!![]});if(!_0x14c800)throw new Error(_0xabeb('0x4d'));if(_0x14c800[_0xabeb('0x4e')]===_0xabeb('0x4f')){var _0x481600=_0x3afcfe[_0xabeb('0x29')]({'plain':!![]});var _0xb56f7e=_0xabeb('0x50');return db[_0xabeb('0x51')][_0xabeb('0x52')]({'where':{'name':_0xb56f7e,'userProfileId':_0x14c800['userProfileId']},'raw':!![]})['then'](function(_0x24cbef){if(_0x24cbef&&_0x24cbef[_0xabeb('0x53')]===0x0){return db[_0xabeb('0x54')][_0xabeb('0x4b')]({'name':_0x481600[_0xabeb('0x2c')],'resourceId':_0x481600['id'],'type':_0x24cbef[_0xabeb('0x2c')],'sectionId':_0x24cbef['id']},{})[_0xabeb('0x27')](function(){return _0x3afcfe;});}else{return _0x3afcfe;}})['catch'](function(_0x26ac76){logger[_0xabeb('0x2a')](_0xabeb('0x55'),_0x26ac76);throw _0x26ac76;});}return _0x3afcfe;})[_0xabeb('0x27')](respondWithResult(_0x3a57c9,0xc9))[_0xabeb('0x4a')](handleError(_0x3a57c9,null));};exports[_0xabeb('0x26')]=function(_0x3d15c5,_0x2ccc3e){if(_0x3d15c5['body']['id']){delete _0x3d15c5[_0xabeb('0x4c')]['id'];}return db[_0xabeb('0x30')][_0xabeb('0x52')]({'where':{'id':_0x3d15c5[_0xabeb('0x47')]['id']}})[_0xabeb('0x27')](handleEntityNotFound(_0x2ccc3e,null))[_0xabeb('0x27')](saveUpdates(_0x3d15c5[_0xabeb('0x4c')],null))['then'](respondWithResult(_0x2ccc3e,null))[_0xabeb('0x4a')](handleError(_0x2ccc3e,null));};exports[_0xabeb('0x28')]=function(_0x298399,_0x553203){return db[_0xabeb('0x30')][_0xabeb('0x52')]({'where':{'id':_0x298399[_0xabeb('0x47')]['id']}})[_0xabeb('0x27')](handleEntityNotFound(_0x553203,null))['then'](removeEntity(_0x553203,null))[_0xabeb('0x4a')](handleError(_0x553203,null));};
\ No newline at end of file
index c9d8c7c..d235374 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3558=['ChatWebsiteId','name_mail','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./disposition.attributes','exports','Disposition','tools_dispositions','name_voice','name','ListId','name_chat'];(function(_0x182a32,_0x298e71){var _0x30bf68=function(_0x5def04){while(--_0x5def04){_0x182a32['push'](_0x182a32['shift']());}};_0x30bf68(++_0x298e71);}(_0x3558,0xfe));var _0x8355=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x3558[_0x32f7d7];return _0x133d09;};'use strict';var _=require(_0x8355('0x0'));var util=require(_0x8355('0x1'));var logger=require(_0x8355('0x2'))('api');var moment=require(_0x8355('0x3'));var BPromise=require(_0x8355('0x4'));var rp=require(_0x8355('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8355('0x6'));var config=require(_0x8355('0x7'));var attributes=require(_0x8355('0x8'));module[_0x8355('0x9')]=function(_0x5bba6a,_0x8f5726){return _0x5bba6a['define'](_0x8355('0xa'),attributes,{'tableName':_0x8355('0xb'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x8355('0xc'),'fields':[_0x8355('0xd'),_0x8355('0xe')]},{'unique':!![],'name':_0x8355('0xf'),'fields':[_0x8355('0xd'),_0x8355('0x10')]},{'unique':!![],'name':_0x8355('0x11'),'fields':['name',_0x8355('0x12')]},{'unique':!![],'name':_0x8355('0x13'),'fields':[_0x8355('0xd'),_0x8355('0x14')]},{'unique':!![],'name':_0x8355('0x15'),'fields':[_0x8355('0xd'),_0x8355('0x16')]},{'unique':!![],'name':_0x8355('0x17'),'fields':[_0x8355('0xd'),_0x8355('0x18')]},{'unique':!![],'name':_0x8355('0x19'),'fields':[_0x8355('0xd'),_0x8355('0x1a')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1d5f=['name_sms','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','moment','bluebird','rimraf','../../config/environment','./disposition.attributes','define','Disposition','tools_dispositions','name','name_chat','ChatWebsiteId','name_mail','MailAccountId'];(function(_0x4baae2,_0x487ab6){var _0x1a2285=function(_0x1cea47){while(--_0x1cea47){_0x4baae2['push'](_0x4baae2['shift']());}};_0x1a2285(++_0x487ab6);}(_0x1d5f,0x110));var _0xf1d5=function(_0x4bed75,_0x211cc7){_0x4bed75=_0x4bed75-0x0;var _0x2dd8e8=_0x1d5f[_0x4bed75];return _0x2dd8e8;};'use strict';var _=require(_0xf1d5('0x0'));var util=require(_0xf1d5('0x1'));var logger=require(_0xf1d5('0x2'))('api');var moment=require(_0xf1d5('0x3'));var BPromise=require(_0xf1d5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xf1d5('0x5'));var config=require(_0xf1d5('0x6'));var attributes=require(_0xf1d5('0x7'));module['exports']=function(_0x7f1022,_0x47942e){return _0x7f1022[_0xf1d5('0x8')](_0xf1d5('0x9'),attributes,{'tableName':_0xf1d5('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':[_0xf1d5('0xb'),'ListId']},{'unique':!![],'name':_0xf1d5('0xc'),'fields':[_0xf1d5('0xb'),_0xf1d5('0xd')]},{'unique':!![],'name':_0xf1d5('0xe'),'fields':['name',_0xf1d5('0xf')]},{'unique':!![],'name':_0xf1d5('0x10'),'fields':[_0xf1d5('0xb'),_0xf1d5('0x11')]},{'unique':!![],'name':_0xf1d5('0x12'),'fields':['name',_0xf1d5('0x13')]},{'unique':!![],'name':_0xf1d5('0x14'),'fields':[_0xf1d5('0xb'),_0xf1d5('0x15')]},{'unique':!![],'name':_0xf1d5('0x16'),'fields':[_0xf1d5('0xb'),_0xf1d5('0x17')]}],'timestamps':!![]});};
\ No newline at end of file
index 101eeb7..c0c2684 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','Disposition,\x20%s,\x20%s','request\x20sent','debug','Disposition,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x32c19a,_0x197048){var _0x179c82=function(_0x251679){while(--_0x251679){_0x32c19a['push'](_0x32c19a['shift']());}};_0x179c82(++_0x197048);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xa9e0[_0x1da04e];return _0xdd8c41;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+var _0xa9e0=['http','info','Disposition,\x20%s,\x20%s','request\x20sent','debug','Disposition,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x136029,_0x427d23){var _0x4599c3=function(_0x110b33){while(--_0x110b33){_0x136029['push'](_0x136029['shift']());}};_0x4599c3(++_0x427d23);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa9e0[_0x5c351c];return _0x26f3b3;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index da18532..4310f1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4870=['util','path','connect-timeout','express','fs-extra','./disposition.controller','index','get','/:id','isAuthenticated','show','post','put','destroy','exports','multer'];(function(_0x54c695,_0x5d6677){var _0x3ce06b=function(_0x55bdf1){while(--_0x55bdf1){_0x54c695['push'](_0x54c695['shift']());}};_0x3ce06b(++_0x5d6677);}(_0x4870,0x8f));var _0x0487=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x4870[_0x178e48];return _0x440d7e;};'use strict';var multer=require(_0x0487('0x0'));var util=require(_0x0487('0x1'));var path=require(_0x0487('0x2'));var timeout=require(_0x0487('0x3'));var express=require(_0x0487('0x4'));var router=express['Router']();var fs_extra=require(_0x0487('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0487('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x0487('0x7')]);router[_0x0487('0x8')](_0x0487('0x9'),auth[_0x0487('0xa')](),controller[_0x0487('0xb')]);router[_0x0487('0xc')]('/',auth[_0x0487('0xa')](),controller['create']);router[_0x0487('0xd')]('/:id',auth[_0x0487('0xa')](),controller['update']);router['delete']('/:id',auth[_0x0487('0xa')](),controller[_0x0487('0xe')]);module[_0x0487('0xf')]=router;
\ No newline at end of file
+var _0xe2b2=['Router','fs-extra','../../components/interaction/service','./disposition.controller','index','get','/:id','show','post','isAuthenticated','create','update','delete','destroy','exports','multer','util','connect-timeout','express'];(function(_0x2e1c86,_0x281ecc){var _0x584f13=function(_0x30d6f9){while(--_0x30d6f9){_0x2e1c86['push'](_0x2e1c86['shift']());}};_0x584f13(++_0x281ecc);}(_0xe2b2,0xa7));var _0x2e2b=function(_0x1d30c5,_0x3e746f){_0x1d30c5=_0x1d30c5-0x0;var _0x2e366e=_0xe2b2[_0x1d30c5];return _0x2e366e;};'use strict';var multer=require(_0x2e2b('0x0'));var util=require(_0x2e2b('0x1'));var path=require('path');var timeout=require(_0x2e2b('0x2'));var express=require(_0x2e2b('0x3'));var router=express[_0x2e2b('0x4')]();var fs_extra=require(_0x2e2b('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2e2b('0x6'));var config=require('../../config/environment');var controller=require(_0x2e2b('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x2e2b('0x8')]);router[_0x2e2b('0x9')](_0x2e2b('0xa'),auth['isAuthenticated'](),controller[_0x2e2b('0xb')]);router[_0x2e2b('0xc')]('/',auth[_0x2e2b('0xd')](),controller[_0x2e2b('0xe')]);router['put'](_0x2e2b('0xa'),auth[_0x2e2b('0xd')](),controller[_0x2e2b('0xf')]);router[_0x2e2b('0x10')](_0x2e2b('0xa'),auth[_0x2e2b('0xd')](),controller[_0x2e2b('0x11')]);module[_0x2e2b('0x12')]=router;
\ No newline at end of file
index cbb405b..0be6c8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa645=['SIP','TEXT','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid','2400','4800','9600','14400','7200','v17,v27,v29','INTEGER','IAX','DADHI','KHOMP'];(function(_0xba1760,_0x191969){var _0x1f3143=function(_0x5aa807){while(--_0x5aa807){_0xba1760['push'](_0xba1760['shift']());}};_0x1f3143(++_0x191969);}(_0xa645,0xbf));var _0x5a64=function(_0x43cdf5,_0x47c1e7){_0x43cdf5=_0x43cdf5-0x0;var _0x89cc4b=_0xa645[_0x43cdf5];return _0x89cc4b;};'use strict';var Sequelize=require(_0x5a64('0x0'));module['exports']={'name':{'type':Sequelize[_0x5a64('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x5a64('0x1')]},'ecm':{'type':Sequelize[_0x5a64('0x2')](_0x5a64('0x3'),'no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x5a64('0x1')],'defaultValue':_0x5a64('0x4')},'localstationid':{'type':Sequelize[_0x5a64('0x1')],'unique':_0x5a64('0x5')},'minrate':{'type':Sequelize[_0x5a64('0x2')](_0x5a64('0x6'),_0x5a64('0x7'),'7200',_0x5a64('0x8'),'12000',_0x5a64('0x9')),'defaultValue':'4800'},'maxrate':{'type':Sequelize['ENUM'](_0x5a64('0x6'),_0x5a64('0x7'),_0x5a64('0xa'),_0x5a64('0x8'),'12000','14400'),'defaultValue':_0x5a64('0x9')},'modem':{'type':Sequelize[_0x5a64('0x1')],'defaultValue':_0x5a64('0xb')},'gateway':{'type':Sequelize[_0x5a64('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x5a64('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x5a64('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize['ENUM']('SIP',_0x5a64('0xd'),_0x5a64('0xe'),_0x5a64('0xf')),'defaultValue':_0x5a64('0x10')},'key':{'type':Sequelize[_0x5a64('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x5a64('0x11')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x5a64('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x5a64('0x12')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x5a64('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x5a64('0x12')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x5a64('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5a64('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x5a64('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x5a64('0xc')],'allowNull':!![],'defaultValue':null,'comment':_0x5a64('0x13')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x5a64('0x14'),'set':function(_0x4df738){if(!_0x4df738)this[_0x5a64('0x15')](_0x5a64('0x16'),null);this[_0x5a64('0x15')]('mandatoryDisposition',_0x4df738);}}};
\ No newline at end of file
+var _0xc55b=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','ENUM','yes','localstationid','4800','7200','9600','12000','14400','v17,v27,v29','IAX','DADHI','KHOMP','SIP','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER'];(function(_0x141c05,_0x319076){var _0x25fa28=function(_0x56f1c0){while(--_0x56f1c0){_0x141c05['push'](_0x141c05['shift']());}};_0x25fa28(++_0x319076);}(_0xc55b,0x147));var _0xbc55=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xc55b[_0x6c993a];return _0x27f547;};'use strict';var Sequelize=require('sequelize');module[_0xbc55('0x0')]={'name':{'type':Sequelize[_0xbc55('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xbc55('0x1')]},'ecm':{'type':Sequelize[_0xbc55('0x2')]('yes','no'),'defaultValue':_0xbc55('0x3')},'headerinfo':{'type':Sequelize[_0xbc55('0x1')],'defaultValue':'xCALLY\x20Motion\x20Fax'},'localstationid':{'type':Sequelize[_0xbc55('0x1')],'unique':_0xbc55('0x4')},'minrate':{'type':Sequelize[_0xbc55('0x2')]('2400',_0xbc55('0x5'),_0xbc55('0x6'),_0xbc55('0x7'),_0xbc55('0x8'),_0xbc55('0x9')),'defaultValue':'4800'},'maxrate':{'type':Sequelize[_0xbc55('0x2')]('2400','4800',_0xbc55('0x6'),'9600',_0xbc55('0x8'),'14400'),'defaultValue':'14400'},'modem':{'type':Sequelize['STRING'],'defaultValue':_0xbc55('0xa')},'gateway':{'type':Sequelize[_0xbc55('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xbc55('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xbc55('0x2')]('SIP',_0xbc55('0xb'),_0xbc55('0xc'),_0xbc55('0xd')),'defaultValue':_0xbc55('0xe')},'key':{'type':Sequelize[_0xbc55('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xbc55('0xf');}},'notificationSound':{'type':Sequelize[_0xbc55('0x10')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xbc55('0x10')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xbc55('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xbc55('0x10')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xbc55('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xbc55('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xbc55('0x11')],'allowNull':!![],'defaultValue':null,'comment':_0xbc55('0x12')},'mandatoryDisposition':{'type':Sequelize[_0xbc55('0x10')],'defaultValue':![],'comment':_0xbc55('0x13'),'set':function(_0x31e3eb){if(!_0x31e3eb)this[_0xbc55('0x14')](_0xbc55('0x15'),null);this[_0xbc55('0x14')](_0xbc55('0x16'),_0x31e3eb);}}};
\ No newline at end of file
index 2932962..83ebf99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4da2=['Set','ecm','localstationid','gateway','faxdetect','headerinfo','modem','FAXOPT(','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','addAccountApplications','sequelize','updateAccountApplications','VoiceExtension','createdAt','updatedAt','ListId','getMessages','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','send','CmList','Contacts','DESC','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','from','List','List\x20not\x20found','Send\x20Fax\x20failed','user','out','Contact\x20not\x20found','spread','filename','ContactId','dataValues','Messages','SendFax','SendFaxRpc,\x20%s','info','addAgents','userFaxAccount:save','removeAgents','isArray','emit','userFaxAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','FaxAccount,\x20%s,\x20%s','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','get','FaxAccounts','UserProfileResource','stack','name','index','Pause','map','FaxAccount','rawAttributes','key','model','keys','query','filters','attributes','fields','length','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','mandatoryDispositionPause','intersection','include','find','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','create','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','hasOwnProperty','pick','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','nolimit','removeAnswers','addInteraction','FaxInteraction','omit','getInteractions','CmContact','Contact','User','fullname','internal','Tags','color','tag','addApplications','transaction','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','context','from-voip-provider','exten','app','description','Fax\x20Extension','appdata','push','CDR(type)=inbound-fax'];(function(_0x14be19,_0x3067bb){var _0x240fb4=function(_0x58a3b9){while(--_0x58a3b9){_0x14be19['push'](_0x14be19['shift']());}};_0x240fb4(++_0x3067bb);}(_0x4da2,0x1c0));var _0x24da=function(_0x4d7f84,_0x2b4309){_0x4d7f84=_0x4d7f84-0x0;var _0x4a516a=_0x4da2[_0x4d7f84];return _0x4a516a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x24da('0x0'));var zipdir=require(_0x24da('0x1'));var jsonpatch=require(_0x24da('0x2'));var rp=require('request-promise');var moment=require(_0x24da('0x3'));var BPromise=require(_0x24da('0x4'));var Mustache=require(_0x24da('0x5'));var util=require(_0x24da('0x6'));var path=require(_0x24da('0x7'));var sox=require(_0x24da('0x8'));var csv=require('to-csv');var ejs=require(_0x24da('0x9'));var fs=require('fs');var fs_extra=require(_0x24da('0xa'));var _=require('lodash');var squel=require(_0x24da('0xb'));var crypto=require(_0x24da('0xc'));var jsforce=require(_0x24da('0xd'));var deskjs=require(_0x24da('0xe'));var toCsv=require(_0x24da('0xf'));var querystring=require(_0x24da('0x10'));var Papa=require(_0x24da('0x11'));var Redis=require(_0x24da('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x24da('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x24da('0x14'));var config=require(_0x24da('0x15'));var licenseUtil=require(_0x24da('0x16'));var db=require(_0x24da('0x17'))['db'];config[_0x24da('0x18')]=_[_0x24da('0x19')](config[_0x24da('0x18')],{'host':_0x24da('0x1a'),'port':0x18eb});var socket=require(_0x24da('0x1b'))(new Redis(config[_0x24da('0x18')]));require('./faxAccount.socket')[_0x24da('0x1c')](socket);var jayson=require(_0x24da('0x1d'));var client=jayson[_0x24da('0x1e')][_0x24da('0x1f')]({'port':0x232c});var client9002=jayson[_0x24da('0x1e')][_0x24da('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x425c33,_0x3dc796,_0xe823aa,_0x1fbf1f){return new BPromise(function(_0x3c0734,_0x1963fc){var _0x29050d=_0x1fbf1f||client;return _0x29050d[_0x24da('0x20')](_0x425c33,_0xe823aa)['then'](function(_0x568283){logger['info'](_0x24da('0x21'),_0x3dc796,_0x24da('0x22'));logger['debug'](_0x24da('0x23'),_0x3dc796,'request\x20sent',JSON[_0x24da('0x24')](_0x568283));if(_0x568283['error']){if(_0x568283[_0x24da('0x25')]['code']===0x1f4){logger[_0x24da('0x25')](_0x24da('0x21'),_0x3dc796,_0x568283[_0x24da('0x25')][_0x24da('0x26')]);return _0x1963fc(_0x568283[_0x24da('0x25')][_0x24da('0x26')]);}logger[_0x24da('0x25')](_0x24da('0x21'),_0x3dc796,_0x568283[_0x24da('0x25')][_0x24da('0x26')]);return _0x3c0734(_0x568283[_0x24da('0x25')][_0x24da('0x26')]);}else{logger['info']('FaxAccount,\x20%s,\x20%s',_0x3dc796,_0x24da('0x22'));_0x3c0734(_0x568283[_0x24da('0x27')][_0x24da('0x26')]);}})['catch'](function(_0x2b319c){logger[_0x24da('0x25')]('FaxAccount,\x20%s,\x20%s',_0x3dc796,_0x2b319c);_0x1963fc(_0x2b319c);});});}function respondWithStatusCode(_0x44c6df,_0x222be7){_0x222be7=_0x222be7||0xcc;return function(_0x912553){if(_0x912553){return _0x44c6df[_0x24da('0x28')](_0x222be7);}return _0x44c6df[_0x24da('0x29')](_0x222be7)[_0x24da('0x2a')]();};}function respondWithResult(_0x70bf1b,_0x542abf){_0x542abf=_0x542abf||0xc8;return function(_0x4bd9c9){if(_0x4bd9c9){return _0x70bf1b['status'](_0x542abf)[_0x24da('0x2b')](_0x4bd9c9);}};}function respondWithFilteredResult(_0x21a8ed,_0x5837e6){return function(_0x3a4ef9){if(_0x3a4ef9){var _0x5f01c7=typeof _0x5837e6[_0x24da('0x2c')]===_0x24da('0x2d')&&typeof _0x5837e6[_0x24da('0x2e')]===_0x24da('0x2d');var _0x1c6ff7=_0x3a4ef9[_0x24da('0x2f')];var _0xa92510=_0x5f01c7?0x0:_0x5837e6[_0x24da('0x2c')];var _0x262732=_0x5f01c7?_0x3a4ef9[_0x24da('0x2f')]:_0x5837e6[_0x24da('0x2c')]+_0x5837e6[_0x24da('0x2e')];var _0x45e533;if(_0x262732>=_0x1c6ff7){_0x262732=_0x1c6ff7;_0x45e533=0xc8;}else{_0x45e533=0xce;}_0x21a8ed[_0x24da('0x29')](_0x45e533);return _0x21a8ed[_0x24da('0x30')](_0x24da('0x31'),_0xa92510+'-'+_0x262732+'/'+_0x1c6ff7)[_0x24da('0x2b')](_0x3a4ef9);}return null;};}function patchUpdates(_0x4355f6){return function(_0x56c4af){try{jsonpatch['apply'](_0x56c4af,_0x4355f6,!![]);}catch(_0x2ab503){return BPromise[_0x24da('0x32')](_0x2ab503);}return _0x56c4af[_0x24da('0x33')]();};}function saveUpdates(_0x1910d4,_0x290eb8){return function(_0x170428){if(_0x170428){return _0x170428[_0x24da('0x34')](_0x1910d4)[_0x24da('0x35')](function(_0x2f0551){return _0x2f0551;});}return null;};}function removeEntity(_0x1d7afb,_0x5adeb1){return function(_0x4463b8){if(_0x4463b8){return _0x4463b8[_0x24da('0x36')]()[_0x24da('0x35')](function(){var _0xc0e772=_0x4463b8[_0x24da('0x37')]({'plain':!![]});var _0x315cea=_0x24da('0x38');return db[_0x24da('0x39')]['destroy']({'where':{'type':_0x315cea,'resourceId':_0xc0e772['id']}})[_0x24da('0x35')](function(){return _0x4463b8;});})[_0x24da('0x35')](function(){_0x1d7afb['status'](0xcc)[_0x24da('0x2a')]();});}};}function handleEntityNotFound(_0x4b2b82,_0x2efc1c){return function(_0x4fee14){if(!_0x4fee14){_0x4b2b82[_0x24da('0x28')](0x194);}return _0x4fee14;};}function handleError(_0x5a9916,_0x2087d1){_0x2087d1=_0x2087d1||0x1f4;return function(_0x25827e){logger[_0x24da('0x25')](_0x25827e[_0x24da('0x3a')]);if(_0x25827e[_0x24da('0x3b')]){delete _0x25827e[_0x24da('0x3b')];}_0x5a9916['status'](_0x2087d1)['send'](_0x25827e);};}exports[_0x24da('0x3c')]=function(_0x3aaed3,_0x1f1f0e){var _0x8755d6={'include':[{'model':db[_0x24da('0x3d')],'as':'mandatoryDispositionPause'}]},_0x8ce4e8={},_0x85fbf8={'count':0x0,'rows':[]};var _0x4994e8=_[_0x24da('0x3e')](db[_0x24da('0x3f')][_0x24da('0x40')],function(_0x1634f8){return{'name':_0x1634f8['fieldName'],'type':_0x1634f8['type'][_0x24da('0x41')]};});_0x8ce4e8[_0x24da('0x42')]=_[_0x24da('0x3e')](_0x4994e8,_0x24da('0x3b'));_0x8ce4e8['query']=_[_0x24da('0x43')](_0x3aaed3[_0x24da('0x44')]);_0x8ce4e8[_0x24da('0x45')]=_['intersection'](_0x8ce4e8['model'],_0x8ce4e8['query']);_0x8755d6[_0x24da('0x46')]=_['intersection'](_0x8ce4e8[_0x24da('0x42')],qs[_0x24da('0x47')](_0x3aaed3[_0x24da('0x44')]['fields']));_0x8755d6[_0x24da('0x46')]=_0x8755d6[_0x24da('0x46')][_0x24da('0x48')]?_0x8755d6['attributes']:_0x8ce4e8[_0x24da('0x42')];if(!_0x3aaed3[_0x24da('0x44')]['hasOwnProperty']('nolimit')){_0x8755d6[_0x24da('0x2e')]=qs[_0x24da('0x2e')](_0x3aaed3[_0x24da('0x44')]['limit']);_0x8755d6['offset']=qs[_0x24da('0x2c')](_0x3aaed3['query'][_0x24da('0x2c')]);}_0x8755d6[_0x24da('0x49')]=qs[_0x24da('0x4a')](_0x3aaed3[_0x24da('0x44')][_0x24da('0x4a')]);_0x8755d6[_0x24da('0x4b')]=qs[_0x24da('0x45')](_['pick'](_0x3aaed3['query'],_0x8ce4e8[_0x24da('0x45')]),_0x4994e8);if(_0x3aaed3[_0x24da('0x44')][_0x24da('0x4c')]){_0x8755d6[_0x24da('0x4b')]=_[_0x24da('0x4d')](_0x8755d6['where'],{'$or':_[_0x24da('0x3e')](_0x4994e8,function(_0x10eba1){if(_0x10eba1[_0x24da('0x4e')]!==_0x24da('0x4f')){var _0x25caa9={};_0x25caa9[_0x10eba1['name']]={'$like':'%'+_0x3aaed3[_0x24da('0x44')]['filter']+'%'};return _0x25caa9;}})});}_0x8755d6=_[_0x24da('0x4d')]({},_0x8755d6,_0x3aaed3[_0x24da('0x50')]);var _0x5d29eb={'where':_0x8755d6[_0x24da('0x4b')]};return db['FaxAccount'][_0x24da('0x2f')](_0x5d29eb)[_0x24da('0x35')](function(_0x15c6d9){_0x85fbf8[_0x24da('0x2f')]=_0x15c6d9;if(_0x3aaed3[_0x24da('0x44')][_0x24da('0x51')]){_0x8755d6['include']=[{'all':!![]}];}return db['FaxAccount'][_0x24da('0x52')](_0x8755d6);})[_0x24da('0x35')](function(_0x452f48){_0x85fbf8[_0x24da('0x53')]=_0x452f48;return _0x85fbf8;})[_0x24da('0x35')](respondWithFilteredResult(_0x1f1f0e,_0x8755d6))['catch'](handleError(_0x1f1f0e,null));};exports['show']=function(_0x3c8ce0,_0x33fa0b){var _0x144f41={'raw':![],'where':{'id':_0x3c8ce0['params']['id']},'include':[{'model':db['Pause'],'as':_0x24da('0x54')}]},_0x187df8={};_0x187df8[_0x24da('0x42')]=_[_0x24da('0x43')](db[_0x24da('0x3f')][_0x24da('0x40')]);_0x187df8['query']=_[_0x24da('0x43')](_0x3c8ce0['query']);_0x187df8[_0x24da('0x45')]=_['intersection'](_0x187df8[_0x24da('0x42')],_0x187df8[_0x24da('0x44')]);_0x144f41['attributes']=_[_0x24da('0x55')](_0x187df8[_0x24da('0x42')],qs[_0x24da('0x47')](_0x3c8ce0['query']['fields']));_0x144f41[_0x24da('0x46')]=_0x144f41['attributes'][_0x24da('0x48')]?_0x144f41[_0x24da('0x46')]:_0x187df8[_0x24da('0x42')];if(_0x3c8ce0[_0x24da('0x44')][_0x24da('0x51')]){_0x144f41[_0x24da('0x56')]=[{'all':!![]}];}_0x144f41=_[_0x24da('0x4d')]({},_0x144f41,_0x3c8ce0[_0x24da('0x50')]);return db[_0x24da('0x3f')][_0x24da('0x57')](_0x144f41)['then'](handleEntityNotFound(_0x33fa0b,null))['then'](respondWithResult(_0x33fa0b,null))['catch'](handleError(_0x33fa0b,null));};exports['create']=function(_0x55bf72,_0x1ba74b){return db['FaxAccount']['create'](_0x55bf72[_0x24da('0x58')],{})[_0x24da('0x35')](function(_0x2579b9){var _0x415802=_0x55bf72['user'][_0x24da('0x37')]({'plain':!![]});if(!_0x415802)throw new Error(_0x24da('0x59'));if(_0x415802[_0x24da('0x5a')]==='user'){var _0x351801=_0x2579b9[_0x24da('0x37')]({'plain':!![]});var _0x5b044b=_0x24da('0x38');return db[_0x24da('0x5b')][_0x24da('0x57')]({'where':{'name':_0x5b044b,'userProfileId':_0x415802[_0x24da('0x5c')]},'raw':!![]})[_0x24da('0x35')](function(_0x2c98b4){if(_0x2c98b4&&_0x2c98b4['autoAssociation']===0x0){return db['UserProfileResource'][_0x24da('0x5d')]({'name':_0x351801[_0x24da('0x3b')],'resourceId':_0x351801['id'],'type':_0x2c98b4[_0x24da('0x3b')],'sectionId':_0x2c98b4['id']},{})[_0x24da('0x35')](function(){return _0x2579b9;});}else{return _0x2579b9;}})[_0x24da('0x5e')](function(_0x81653e){logger[_0x24da('0x25')](_0x24da('0x5f'),_0x81653e);throw _0x81653e;});}return _0x2579b9;})[_0x24da('0x35')](respondWithResult(_0x1ba74b,0xc9))['catch'](handleError(_0x1ba74b,null));};exports[_0x24da('0x34')]=function(_0x5347cc,_0x5295c6){if(_0x5347cc[_0x24da('0x58')]['id']){delete _0x5347cc[_0x24da('0x58')]['id'];}return db['FaxAccount']['find']({'where':{'id':_0x5347cc[_0x24da('0x60')]['id']},'include':[{'model':db[_0x24da('0x3d')],'as':'mandatoryDispositionPause'}]})[_0x24da('0x35')](handleEntityNotFound(_0x5295c6,null))[_0x24da('0x35')](saveUpdates(_0x5347cc[_0x24da('0x58')],null))[_0x24da('0x35')](respondWithResult(_0x5295c6,null))['catch'](handleError(_0x5295c6,null));};exports['destroy']=function(_0x52c0ed,_0x51e008){return db[_0x24da('0x3f')][_0x24da('0x57')]({'where':{'id':_0x52c0ed[_0x24da('0x60')]['id']}})[_0x24da('0x35')](handleEntityNotFound(_0x51e008,null))[_0x24da('0x35')](removeEntity(_0x51e008,null))['catch'](handleError(_0x51e008,null));};exports[_0x24da('0x61')]=function(_0x31b027,_0x4360e4){return db[_0x24da('0x3f')][_0x24da('0x61')]()[_0x24da('0x35')](respondWithResult(_0x4360e4,null))[_0x24da('0x5e')](handleError(_0x4360e4,null));};exports[_0x24da('0x62')]=function(_0x137e1c,_0x33c172,_0x3e8252){if(_0x137e1c[_0x24da('0x58')]['id']){delete _0x137e1c[_0x24da('0x58')]['id'];}return db[_0x24da('0x3f')][_0x24da('0x57')]({'where':{'id':_0x137e1c['params']['id']}})['then'](handleEntityNotFound(_0x33c172,null))['then'](function(_0x50fd9d){if(_0x50fd9d){_0x137e1c[_0x24da('0x58')][_0x24da('0x63')]=_0x50fd9d['id'];return db[_0x24da('0x64')][_0x24da('0x5d')](_0x137e1c[_0x24da('0x58')]);}})[_0x24da('0x35')](respondWithResult(_0x33c172,null))['catch'](handleError(_0x33c172,null));};exports[_0x24da('0x65')]=function(_0x2cc4ab,_0x2df073,_0x3517a1){var _0x5f050c={'raw':![],'where':{}};var _0x450e12={};var _0x916da0={'count':0x0,'rows':[]};return db['FaxAccount'][_0x24da('0x66')]({'where':{'id':_0x2cc4ab[_0x24da('0x60')]['id']}})['then'](handleEntityNotFound(_0x2df073,null))[_0x24da('0x35')](function(_0x402751){if(_0x402751){_0x450e12[_0x24da('0x42')]=_[_0x24da('0x43')](db[_0x24da('0x64')][_0x24da('0x40')]);_0x450e12['query']=_[_0x24da('0x43')](_0x2cc4ab[_0x24da('0x44')]);_0x450e12[_0x24da('0x45')]=_[_0x24da('0x55')](_0x450e12[_0x24da('0x42')],_0x450e12['query']);_0x5f050c[_0x24da('0x46')]=_['intersection'](_0x450e12[_0x24da('0x42')],qs[_0x24da('0x47')](_0x2cc4ab[_0x24da('0x44')][_0x24da('0x47')]));_0x5f050c[_0x24da('0x46')]=_0x5f050c[_0x24da('0x46')][_0x24da('0x48')]?_0x5f050c[_0x24da('0x46')]:_0x450e12[_0x24da('0x42')];if(!_0x2cc4ab[_0x24da('0x44')][_0x24da('0x67')]('nolimit')){_0x5f050c[_0x24da('0x2e')]=qs[_0x24da('0x2e')](_0x2cc4ab['query'][_0x24da('0x2e')]);_0x5f050c[_0x24da('0x2c')]=qs[_0x24da('0x2c')](_0x2cc4ab[_0x24da('0x44')][_0x24da('0x2c')]);}_0x5f050c['order']=qs[_0x24da('0x4a')](_0x2cc4ab[_0x24da('0x44')]['sort']);_0x5f050c[_0x24da('0x4b')]=qs[_0x24da('0x45')](_[_0x24da('0x68')](_0x2cc4ab[_0x24da('0x44')],_0x450e12[_0x24da('0x45')]));_0x5f050c[_0x24da('0x4b')][_0x24da('0x63')]=_0x402751['id'];if(_0x2cc4ab[_0x24da('0x44')][_0x24da('0x4c')]){_0x5f050c[_0x24da('0x4b')]=_[_0x24da('0x4d')](_0x5f050c[_0x24da('0x4b')],{'$or':_['map'](_0x5f050c[_0x24da('0x46')],function(_0x6f689e){var _0x1109f={};_0x1109f[_0x6f689e]={'$like':'%'+_0x2cc4ab[_0x24da('0x44')][_0x24da('0x4c')]+'%'};return _0x1109f;})});}_0x5f050c=_[_0x24da('0x4d')]({},_0x5f050c,_0x2cc4ab['options']);return db[_0x24da('0x64')][_0x24da('0x2f')]({'where':_0x5f050c[_0x24da('0x4b')]})[_0x24da('0x35')](function(_0x3c9295){_0x916da0[_0x24da('0x2f')]=_0x3c9295;if(_0x2cc4ab[_0x24da('0x44')][_0x24da('0x51')]){_0x5f050c[_0x24da('0x56')]=[{'all':!![]}];}return db[_0x24da('0x64')][_0x24da('0x52')](_0x5f050c);})[_0x24da('0x35')](function(_0x40850f){_0x916da0[_0x24da('0x53')]=_0x40850f;return _0x916da0;});}})[_0x24da('0x35')](respondWithFilteredResult(_0x2df073,_0x5f050c))[_0x24da('0x5e')](handleError(_0x2df073,null));};exports[_0x24da('0x69')]=function(_0x38f5f1,_0x465951,_0x4bc070){return db['FaxAccount'][_0x24da('0x57')]({'where':{'id':_0x38f5f1[_0x24da('0x60')]['id']}})[_0x24da('0x35')](handleEntityNotFound(_0x465951,null))[_0x24da('0x35')](function(_0xbf8982){if(_0xbf8982){return _0xbf8982[_0x24da('0x69')](_0x38f5f1[_0x24da('0x44')][_0x24da('0x6a')]);}})['then'](respondWithStatusCode(_0x465951,null))[_0x24da('0x5e')](handleError(_0x465951,null));};exports[_0x24da('0x6b')]=function(_0x34ac07,_0x17b0a3,_0x5ce38b){if(_0x34ac07['body']['id']){delete _0x34ac07[_0x24da('0x58')]['id'];}return db[_0x24da('0x3f')][_0x24da('0x57')]({'where':{'id':_0x34ac07[_0x24da('0x60')]['id']}})[_0x24da('0x35')](handleEntityNotFound(_0x17b0a3,null))[_0x24da('0x35')](function(_0x42f00b){if(_0x42f00b){_0x34ac07['body'][_0x24da('0x63')]=_0x42f00b['id'];return db[_0x24da('0x6c')]['create'](_0x34ac07['body']);}})[_0x24da('0x35')](respondWithResult(_0x17b0a3,null))['catch'](handleError(_0x17b0a3,null));};exports[_0x24da('0x6d')]=function(_0x687c02,_0x4658de,_0xe22972){var _0xdf4f2b={'raw':![],'where':{}};var _0x424af8={};var _0x32826c={'count':0x0,'rows':[]};return db['FaxAccount'][_0x24da('0x66')]({'where':{'id':_0x687c02[_0x24da('0x60')]['id']}})[_0x24da('0x35')](handleEntityNotFound(_0x4658de,null))[_0x24da('0x35')](function(_0x5b00a4){if(_0x5b00a4){_0x424af8['model']=_['keys'](db[_0x24da('0x6c')]['rawAttributes']);_0x424af8['query']=_[_0x24da('0x43')](_0x687c02['query']);_0x424af8[_0x24da('0x45')]=_[_0x24da('0x55')](_0x424af8[_0x24da('0x42')],_0x424af8['query']);_0xdf4f2b[_0x24da('0x46')]=_['intersection'](_0x424af8[_0x24da('0x42')],qs[_0x24da('0x47')](_0x687c02[_0x24da('0x44')][_0x24da('0x47')]));_0xdf4f2b[_0x24da('0x46')]=_0xdf4f2b[_0x24da('0x46')][_0x24da('0x48')]?_0xdf4f2b[_0x24da('0x46')]:_0x424af8['model'];if(!_0x687c02[_0x24da('0x44')][_0x24da('0x67')](_0x24da('0x6e'))){_0xdf4f2b[_0x24da('0x2e')]=qs[_0x24da('0x2e')](_0x687c02[_0x24da('0x44')][_0x24da('0x2e')]);_0xdf4f2b[_0x24da('0x2c')]=qs['offset'](_0x687c02['query'][_0x24da('0x2c')]);}_0xdf4f2b[_0x24da('0x49')]=qs[_0x24da('0x4a')](_0x687c02['query']['sort']);_0xdf4f2b[_0x24da('0x4b')]=qs['filters'](_[_0x24da('0x68')](_0x687c02[_0x24da('0x44')],_0x424af8[_0x24da('0x45')]));_0xdf4f2b[_0x24da('0x4b')]['FaxAccountId']=_0x5b00a4['id'];if(_0x687c02[_0x24da('0x44')][_0x24da('0x4c')]){_0xdf4f2b[_0x24da('0x4b')]=_[_0x24da('0x4d')](_0xdf4f2b[_0x24da('0x4b')],{'$or':_['map'](_0xdf4f2b['attributes'],function(_0x3c33d6){var _0x4666f5={};_0x4666f5[_0x3c33d6]={'$like':'%'+_0x687c02[_0x24da('0x44')]['filter']+'%'};return _0x4666f5;})});}_0xdf4f2b=_['merge']({},_0xdf4f2b,_0x687c02[_0x24da('0x50')]);return db[_0x24da('0x6c')][_0x24da('0x2f')]({'where':_0xdf4f2b[_0x24da('0x4b')]})[_0x24da('0x35')](function(_0x1537d8){_0x32826c[_0x24da('0x2f')]=_0x1537d8;if(_0x687c02[_0x24da('0x44')]['includeAll']){_0xdf4f2b[_0x24da('0x56')]=[{'all':!![]}];}return db['CannedAnswer'][_0x24da('0x52')](_0xdf4f2b);})['then'](function(_0x1dc146){_0x32826c[_0x24da('0x53')]=_0x1dc146;return _0x32826c;});}})[_0x24da('0x35')](respondWithFilteredResult(_0x4658de,_0xdf4f2b))[_0x24da('0x5e')](handleError(_0x4658de,null));};exports[_0x24da('0x6f')]=function(_0x40943e,_0x273242,_0x3093bb){return db['FaxAccount'][_0x24da('0x57')]({'where':{'id':_0x40943e[_0x24da('0x60')]['id']}})[_0x24da('0x35')](handleEntityNotFound(_0x273242,null))['then'](function(_0x303027){if(_0x303027){return _0x303027[_0x24da('0x6f')](_0x40943e[_0x24da('0x44')][_0x24da('0x6a')]);}})[_0x24da('0x35')](respondWithStatusCode(_0x273242,null))[_0x24da('0x5e')](handleError(_0x273242,null));};exports[_0x24da('0x70')]=function(_0x5f07b3,_0x262c96,_0xb209e){return db[_0x24da('0x71')][_0x24da('0x57')]({'where':{'id':_0x5f07b3[_0x24da('0x60')]['id']}})[_0x24da('0x35')](handleEntityNotFound(_0x262c96,null))[_0x24da('0x35')](function(_0x5ca9a4){if(_0x5ca9a4){return _0x5ca9a4['addInteraction'](_0x5f07b3[_0x24da('0x58')][_0x24da('0x6a')],_[_0x24da('0x72')](_0x5f07b3[_0x24da('0x58')],[_0x24da('0x6a'),'id'])||{});}})[_0x24da('0x35')](respondWithResult(_0x262c96,null))[_0x24da('0x5e')](handleError(_0x262c96,null));};exports[_0x24da('0x73')]=function(_0x26d19a,_0x4f74f2,_0x2b5d97){var _0x2f9ebc={'raw':![],'where':{}};var _0x155226={};var _0x14f61a={'count':0x0,'rows':[]};return db[_0x24da('0x3f')]['findOne']({'where':{'id':_0x26d19a[_0x24da('0x60')]['id']}})[_0x24da('0x35')](handleEntityNotFound(_0x4f74f2,null))[_0x24da('0x35')](function(_0xb70748){if(_0xb70748){_0x155226[_0x24da('0x42')]=_[_0x24da('0x43')](db[_0x24da('0x71')]['rawAttributes']);_0x155226[_0x24da('0x44')]=_[_0x24da('0x43')](_0x26d19a['query']);_0x155226[_0x24da('0x45')]=_[_0x24da('0x55')](_0x155226['model'],_0x155226['query']);_0x2f9ebc[_0x24da('0x46')]=_[_0x24da('0x55')](_0x155226[_0x24da('0x42')],qs[_0x24da('0x47')](_0x26d19a[_0x24da('0x44')][_0x24da('0x47')]));_0x2f9ebc[_0x24da('0x46')]=_0x2f9ebc[_0x24da('0x46')][_0x24da('0x48')]?_0x2f9ebc[_0x24da('0x46')]:_0x155226['model'];if(!_0x26d19a['query'][_0x24da('0x67')](_0x24da('0x6e'))){_0x2f9ebc[_0x24da('0x2e')]=qs[_0x24da('0x2e')](_0x26d19a[_0x24da('0x44')]['limit']);_0x2f9ebc['offset']=qs[_0x24da('0x2c')](_0x26d19a[_0x24da('0x44')][_0x24da('0x2c')]);}_0x2f9ebc[_0x24da('0x49')]=qs[_0x24da('0x4a')](_0x26d19a[_0x24da('0x44')][_0x24da('0x4a')]);_0x2f9ebc[_0x24da('0x4b')]=qs['filters'](_[_0x24da('0x68')](_0x26d19a['query'],_0x155226[_0x24da('0x45')]));_0x2f9ebc['where'][_0x24da('0x63')]=_0xb70748['id'];if(_0x26d19a[_0x24da('0x44')][_0x24da('0x4c')]){_0x2f9ebc['where']=_[_0x24da('0x4d')](_0x2f9ebc[_0x24da('0x4b')],{'$or':_[_0x24da('0x3e')](_0x2f9ebc[_0x24da('0x46')],function(_0x15909d){var _0x9a37b2={};_0x9a37b2[_0x15909d]={'$like':'%'+_0x26d19a['query'][_0x24da('0x4c')]+'%'};return _0x9a37b2;})});}_0x2f9ebc=_[_0x24da('0x4d')]({},_0x2f9ebc,_0x26d19a['options']);return db[_0x24da('0x71')][_0x24da('0x2f')]({'where':_0x2f9ebc[_0x24da('0x4b')]})[_0x24da('0x35')](function(_0x132288){_0x14f61a[_0x24da('0x2f')]=_0x132288;if(_0x26d19a['query'][_0x24da('0x51')]){_0x2f9ebc[_0x24da('0x56')]=[{'model':db[_0x24da('0x74')],'as':_0x24da('0x75'),'required':![]},{'model':db[_0x24da('0x76')],'as':'Owner','attributes':['name',_0x24da('0x77'),_0x24da('0x78')],'required':![]},{'model':db['Tag'],'as':_0x24da('0x79'),'attributes':['id','name',_0x24da('0x7a')],'where':_0x26d19a['query'][_0x24da('0x7b')]?{'id':_0x26d19a[_0x24da('0x44')]['tag']}:undefined,'required':_0x26d19a[_0x24da('0x44')][_0x24da('0x7b')]?!![]:![]}];}return db['FaxInteraction'][_0x24da('0x52')](_0x2f9ebc);})['then'](function(_0x36bc21){_0x14f61a[_0x24da('0x53')]=_0x36bc21;return _0x14f61a;});}})[_0x24da('0x35')](respondWithFilteredResult(_0x4f74f2,_0x2f9ebc))['catch'](handleError(_0x4f74f2,null));};exports[_0x24da('0x7c')]=function(_0x1a03cc,_0x79cbe2,_0x330489){return db[_0x24da('0x3f')]['findOne']({'where':{'id':_0x1a03cc[_0x24da('0x60')]['id']}})[_0x24da('0x35')](handleEntityNotFound(_0x79cbe2,null))[_0x24da('0x35')](function(_0x582d3a){if(_0x582d3a){return db['sequelize'][_0x24da('0x7d')](function(_0x1caa30){return db[_0x24da('0x7e')][_0x24da('0x36')]({'where':{'FaxAccountId':_0x1a03cc[_0x24da('0x60')]['id']},'transaction':_0x1caa30})[_0x24da('0x35')](function(_0xce8a14){var _0x332843=_['map'](_0x1a03cc[_0x24da('0x58')],function(_0x1de9a1){_0x1de9a1['FaxAccountId']=_0x1a03cc[_0x24da('0x60')]['id'];return _0x1de9a1;});return db[_0x24da('0x7e')][_0x24da('0x7f')](_0x332843,{'transaction':_0x1caa30});});})[_0x24da('0x35')](function(){return db['FaxApplication'][_0x24da('0x80')]({'where':{'FaxAccountId':_0x1a03cc[_0x24da('0x60')]['id']},'order':_0x24da('0x81')});});}})[_0x24da('0x35')](respondWithResult(_0x79cbe2,null))[_0x24da('0x5e')](handleError(_0x79cbe2,null));};exports[_0x24da('0x82')]=function(_0x4c37a4,_0x9adbcb,_0x7e1f0a){var _0x3c4cc0={};var _0x5a1f54={};var _0x120fdd;var _0x3d4916;return db[_0x24da('0x3f')][_0x24da('0x66')]({'where':{'id':_0x4c37a4[_0x24da('0x60')]['id']}})[_0x24da('0x35')](handleEntityNotFound(_0x9adbcb,null))[_0x24da('0x35')](function(_0x237f91){if(_0x237f91){_0x120fdd=_0x237f91;_0x5a1f54['model']=_['keys'](db[_0x24da('0x7e')][_0x24da('0x40')]);_0x5a1f54[_0x24da('0x44')]=_['keys'](_0x4c37a4['query']);_0x5a1f54[_0x24da('0x45')]=_[_0x24da('0x55')](_0x5a1f54[_0x24da('0x42')],_0x5a1f54[_0x24da('0x44')]);_0x3c4cc0[_0x24da('0x46')]=_[_0x24da('0x55')](_0x5a1f54[_0x24da('0x42')],qs[_0x24da('0x47')](_0x4c37a4[_0x24da('0x44')][_0x24da('0x47')]));_0x3c4cc0[_0x24da('0x46')]=_0x3c4cc0['attributes'][_0x24da('0x48')]?_0x3c4cc0['attributes']:_0x5a1f54[_0x24da('0x42')];_0x3c4cc0[_0x24da('0x49')]=qs[_0x24da('0x4a')](_0x4c37a4['query']['sort']);_0x3c4cc0[_0x24da('0x4b')]=qs['filters'](_[_0x24da('0x68')](_0x4c37a4[_0x24da('0x44')],_0x5a1f54[_0x24da('0x45')]));if(_0x4c37a4[_0x24da('0x44')][_0x24da('0x4c')]){_0x3c4cc0[_0x24da('0x4b')]=_['merge'](_0x3c4cc0[_0x24da('0x4b')],{'$or':_[_0x24da('0x3e')](_0x3c4cc0['attributes'],function(_0x41414a){var _0x279652={};_0x279652[_0x41414a]={'$like':'%'+_0x4c37a4['query']['filter']+'%'};return _0x279652;})});}_0x3c4cc0=_[_0x24da('0x4d')]({},_0x3c4cc0,_0x4c37a4['options']);return _0x120fdd[_0x24da('0x82')](_0x3c4cc0);}})[_0x24da('0x35')](function(_0x2baf30){if(_0x2baf30){_0x3d4916=_0x2baf30[_0x24da('0x48')];if(!_0x4c37a4[_0x24da('0x44')][_0x24da('0x67')](_0x24da('0x6e'))){_0x3c4cc0['limit']=qs[_0x24da('0x2e')](_0x4c37a4['query'][_0x24da('0x2e')]);_0x3c4cc0['offset']=qs['offset'](_0x4c37a4[_0x24da('0x44')][_0x24da('0x2c')]);}return _0x120fdd[_0x24da('0x82')](_0x3c4cc0);}})[_0x24da('0x35')](function(_0x51f00c){if(_0x51f00c){return _0x51f00c?{'count':_0x3d4916,'rows':_0x51f00c}:null;}})[_0x24da('0x35')](respondWithResult(_0x9adbcb,null))['catch'](handleError(_0x9adbcb,null));};function Extension(_0x15fa32,_0x4011a4,_0x2dd0f3,_0x430dda){this[_0x24da('0x83')]=_0x24da('0x84');this[_0x24da('0x85')]=_0x15fa32['localstationid'];this[_0x24da('0x86')]=_0x430dda;this[_0x24da('0x4e')]='system';this[_0x24da('0x87')]=_0x24da('0x88');this[_0x24da('0x63')]=_0x15fa32['id'];this['priority']=_0x4011a4;this[_0x24da('0x89')]=_0x2dd0f3;}function createExtensionsReciveFax(_0x55e411){var _0x2e4638=0x1;var _0x1261b7=[];_0x1261b7[_0x24da('0x8a')](new Extension(_0x55e411,_0x2e4638,'','Answer'));_0x2e4638+=0x1;_0x1261b7[_0x24da('0x8a')](new Extension(_0x55e411,_0x2e4638,_0x24da('0x8b'),_0x24da('0x8c')));_0x2e4638+=0x1;for(var _0x59c214 in _0x55e411){if(_0x55e411[_0x24da('0x67')](_0x59c214)&&(_0x59c214===_0x24da('0x8d')||_0x59c214===_0x24da('0x8e')||_0x59c214===_0x24da('0x8f')||_0x59c214===_0x24da('0x90')||_0x59c214===_0x24da('0x91')||_0x59c214==='maxrate'||_0x59c214==='minrate'||_0x59c214===_0x24da('0x92')||_0x59c214==='t38timeout')){_0x1261b7[_0x24da('0x8a')](new Extension(_0x55e411,_0x2e4638,_0x24da('0x93')+_0x59c214+')='+_0x55e411[_0x59c214],_0x24da('0x8c')));_0x2e4638+=0x1;}}_0x1261b7['push'](new Extension(_0x55e411,_0x2e4638,'6','Wait'));_0x2e4638+=0x1;_0x1261b7[_0x24da('0x8a')](new Extension(_0x55e411,_0x2e4638,_0x24da('0x94'),_0x24da('0x95')));_0x2e4638=0x0;return _0x1261b7;}exports[_0x24da('0x96')]=function(_0x58c5c1,_0x17497d,_0x180fa4){var _0x26e690;return db[_0x24da('0x97')][_0x24da('0x7d')](function(_0x31116a){return db[_0x24da('0x3f')]['create'](_0x58c5c1[_0x24da('0x58')],{'transaction':_0x31116a})['then'](function(_0x736a4a){_0x26e690=_0x736a4a[_0x24da('0x37')]({'plain':!![]});return db['VoiceExtension'][_0x24da('0x7f')](createExtensionsReciveFax(_0x26e690),{'transaction':_0x31116a});});})[_0x24da('0x35')](function(){return _0x26e690;})['then'](respondWithResult(_0x17497d,null))[_0x24da('0x5e')](handleError(_0x17497d,null));};exports[_0x24da('0x98')]=function(_0x4dc684,_0x239bcc,_0x219996){var _0x449dd8;return db[_0x24da('0x97')][_0x24da('0x7d')](function(_0x89b404){return db[_0x24da('0x3f')][_0x24da('0x34')](_0x4dc684[_0x24da('0x58')],{'where':{'id':_0x4dc684[_0x24da('0x58')]['id']},'transaction':_0x89b404})[_0x24da('0x35')](function(_0x813885){return db['VoiceExtension'][_0x24da('0x36')]({'where':{'FaxAccountId':_0x4dc684[_0x24da('0x58')]['id']},'transaction':_0x89b404})[_0x24da('0x35')](function(_0x402de3){return db[_0x24da('0x99')][_0x24da('0x7f')](createExtensionsReciveFax(_[_0x24da('0x72')](_0x4dc684[_0x24da('0x58')],['tech',_0x24da('0x41'),_0x24da('0x9a'),_0x24da('0x9b'),'TrunkId',_0x24da('0x9c')])),{'transaction':_0x89b404});});});})[_0x24da('0x35')](function(){return db[_0x24da('0x3f')]['findById'](_0x4dc684['body']['id']);})[_0x24da('0x35')](respondWithResult(_0x239bcc,null))['catch'](handleError(_0x239bcc,null));};exports[_0x24da('0x9d')]=function(_0x4b6790,_0x1cf96f,_0x465cff){var _0x2eb8e5={'raw':!![],'where':{}};var _0x12f652={};var _0x3a997d={'count':0x0,'rows':[]};return db[_0x24da('0x3f')]['findOne']({'where':{'id':_0x4b6790[_0x24da('0x60')]['id']}})[_0x24da('0x35')](handleEntityNotFound(_0x1cf96f,null))['then'](function(_0x4b3757){if(_0x4b3757){_0x12f652[_0x24da('0x42')]=_['keys'](db[_0x24da('0x9e')]['rawAttributes']);_0x12f652[_0x24da('0x44')]=_[_0x24da('0x43')](_0x4b6790[_0x24da('0x44')]);_0x12f652[_0x24da('0x45')]=_[_0x24da('0x55')](_0x12f652[_0x24da('0x42')],_0x12f652[_0x24da('0x44')]);_0x2eb8e5[_0x24da('0x46')]=_[_0x24da('0x55')](_0x12f652[_0x24da('0x42')],qs[_0x24da('0x47')](_0x4b6790[_0x24da('0x44')]['fields']));_0x2eb8e5[_0x24da('0x46')]=_0x2eb8e5[_0x24da('0x46')][_0x24da('0x48')]?_0x2eb8e5['attributes']:_0x12f652[_0x24da('0x42')];if(!_0x4b6790[_0x24da('0x44')]['hasOwnProperty'](_0x24da('0x6e'))){_0x2eb8e5['limit']=qs[_0x24da('0x2e')](_0x4b6790[_0x24da('0x44')][_0x24da('0x2e')]);_0x2eb8e5[_0x24da('0x2c')]=qs['offset'](_0x4b6790['query'][_0x24da('0x2c')]);}_0x2eb8e5[_0x24da('0x49')]=qs[_0x24da('0x4a')](_0x4b6790[_0x24da('0x44')]['sort']);_0x2eb8e5[_0x24da('0x4b')]=qs[_0x24da('0x45')](_[_0x24da('0x68')](_0x4b6790[_0x24da('0x44')],_0x12f652['filters']));_0x2eb8e5[_0x24da('0x4b')][_0x24da('0x63')]=_0x4b3757['id'];if(_0x4b6790[_0x24da('0x44')][_0x24da('0x4c')]){_0x2eb8e5[_0x24da('0x4b')]=_[_0x24da('0x4d')](_0x2eb8e5[_0x24da('0x4b')],{'$or':_[_0x24da('0x3e')](_0x2eb8e5['attributes'],function(_0x40d041){var _0x106cc4={};_0x106cc4[_0x40d041]={'$like':'%'+_0x4b6790[_0x24da('0x44')]['filter']+'%'};return _0x106cc4;})});}if(_0x4b6790[_0x24da('0x44')]['$gte']){var _0x2c2578=_0x4b6790['query'][_0x24da('0x9f')][_0x24da('0xa0')](',');var _0x4fec7e={};_0x4fec7e[_0x2c2578[0x0]]={'$gte':moment(_0x2c2578[0x1])[_0x24da('0xa1')](_0x24da('0xa2'))};_0x2eb8e5['where']=_[_0x24da('0x4d')](_0x2eb8e5['where'],_0x4fec7e);}_0x2eb8e5=_[_0x24da('0x4d')]({},_0x2eb8e5,_0x4b6790[_0x24da('0x50')]);return db[_0x24da('0x9e')][_0x24da('0x2f')]({'where':_0x2eb8e5[_0x24da('0x4b')]})[_0x24da('0x35')](function(_0x5adfa9){_0x3a997d['count']=_0x5adfa9;if(_0x4b6790[_0x24da('0x44')]['includeAll']){_0x2eb8e5[_0x24da('0x56')]=[{'all':!![]}];}return db[_0x24da('0x9e')][_0x24da('0x52')](_0x2eb8e5);})[_0x24da('0x35')](function(_0x38df7b){_0x3a997d[_0x24da('0x53')]=_0x38df7b;return _0x3a997d;});}})[_0x24da('0x35')](respondWithFilteredResult(_0x1cf96f,_0x2eb8e5))[_0x24da('0x5e')](handleError(_0x1cf96f,null));};exports[_0x24da('0xa3')]=function(_0x4f37fb,_0x383c30,_0x3b271d){var _0x1dc96a,_0x125c70={},_0x5a83ef;if(_0x4f37fb[_0x24da('0x58')]['to']){_0x5a83ef=_0x4f37fb[_0x24da('0x58')]['to'][0x0];}return db[_0x24da('0x3f')]['find']({'where':{'id':_0x4f37fb[_0x24da('0x60')]['id']},'include':[{'model':db[_0x24da('0xa4')],'as':'List','include':[{'model':db['CmContact'],'as':_0x24da('0xa5'),'where':{'fax':_0x5a83ef},'limit':0x1,'order':[[_0x24da('0x9b'),_0x24da('0xa6')]]}]}]})['then'](handleEntityNotFound(_0x383c30,null))['then'](function(_0x556b48){_0x1dc96a=_0x556b48;if(_0x4f37fb['body'][_0x24da('0xa7')]&&_0x4f37fb[_0x24da('0x58')][_0x24da('0xa7')][_0x24da('0x48')]){for(var _0x27e5e0=0x0;_0x27e5e0<_0x4f37fb[_0x24da('0x58')][_0x24da('0xa7')]['length'];_0x27e5e0+=0x1){_0x4f37fb[_0x24da('0x58')][_0x24da('0xa7')][_0x27e5e0]={'filename':_0x4f37fb['body'][_0x24da('0xa7')][_0x27e5e0][_0x24da('0x3b')],'id':_0x4f37fb['body']['attachments'][_0x27e5e0]['id'],'path':path[_0x24da('0xa8')](config[_0x24da('0xa9')],_0x24da('0xaa'),_0x4f37fb[_0x24da('0x58')][_0x24da('0xa7')][_0x27e5e0][_0x24da('0xab')])};}}return respondWithRpcPromise(_0x24da('0xac'),_0x24da('0xac'),{'FaxAccountId':_[_0x24da('0xad')](_0x4f37fb[_0x24da('0x60')]['id'])?undefined:_0x4f37fb['params']['id'],'path':_[_0x24da('0xad')](_0x4f37fb[_0x24da('0x58')][_0x24da('0xa7')][0x0][_0x24da('0x7')])?undefined:_0x4f37fb[_0x24da('0x58')][_0x24da('0xa7')][0x0]['path'],'fax':_[_0x24da('0xad')](_0x4f37fb[_0x24da('0x58')]['to'][0x0])?undefined:_0x4f37fb[_0x24da('0x58')]['to'][0x0]},client9002);})[_0x24da('0x35')](function(){if(_0x1dc96a){if(_[_0x24da('0xad')](_0x4f37fb[_0x24da('0x58')][_0x24da('0xae')])){_0x4f37fb[_0x24da('0x58')][_0x24da('0xae')]=util[_0x24da('0xa1')]('\x22%s\x22\x20<%s>',_0x1dc96a[_0x24da('0x3b')],_0x1dc96a['fax']);}if(_0x1dc96a[_0x24da('0xaf')]){if(_0x1dc96a['List'][_0x24da('0xa5')]['length']){return _0x1dc96a['List']['Contacts'][0x0];}else{return db['CmContact']['create'](_[_0x24da('0x19')](_0x4f37fb[_0x24da('0x58')],{'firstName':_0x4f37fb[_0x24da('0x58')]['to'][0x0],'phone':_0x4f37fb['body']['to'][0x0],'fax':_0x4f37fb['body']['to'][0x0],'ListId':_0x1dc96a['ListId']}));}}else{throw new Error(_0x24da('0xb0'));}}else{throw new Error(_0x24da('0xb1'));}})[_0x24da('0x35')](function(_0x244d27){if(_0x244d27){return db['FaxInteraction'][_0x24da('0x57')]({'where':{'ContactId':_0x244d27['id'],'closed':![],'FaxAccountId':_0x1dc96a['id']}})[_0x24da('0x35')](function(_0x142f6e){if(_0x142f6e){return[_0x142f6e,![]];}return db[_0x24da('0x71')][_0x24da('0x5d')]({'UserId':_0x4f37fb[_0x24da('0xb2')]['id'],'ContactId':_0x244d27['id'],'FaxAccountId':_0x1dc96a['id'],'fax':_0x4f37fb[_0x24da('0x58')]['to'][0x0],'firstMsgDirection':_0x24da('0xb3'),'Messages':[_[_0x24da('0x4d')](_0x4f37fb[_0x24da('0x58')],{'read':![],'body':_0x4f37fb[_0x24da('0x58')][_0x24da('0xa7')][0x0]['filename'],'FaxAccountId':_0x1dc96a['id'],'UserId':_0x4f37fb[_0x24da('0xb2')]['id'],'ContactId':_0x244d27['id'],'AttachmentId':_0x4f37fb[_0x24da('0x58')][_0x24da('0xa7')][0x0]['id']})]},{'include':[{'model':db[_0x24da('0x9e')],'as':'Messages'}]})[_0x24da('0x35')](function(_0x4b5dfd){return[_0x4b5dfd,!![]];});});}else{throw new Error(_0x24da('0xb4'));}})[_0x24da('0xb5')](function(_0x45dcd0,_0x1cccd5){if(_0x1cccd5){return _0x45dcd0;}return db[_0x24da('0x9e')]['create']({'direction':'out','read':![],'body':_0x4f37fb[_0x24da('0x58')][_0x24da('0xa7')][0x0][_0x24da('0xb6')],'FaxAccountId':_0x1dc96a['id'],'FaxInteractionId':_0x45dcd0['id'],'UserId':_0x4f37fb[_0x24da('0xb2')]['id'],'ContactId':_0x45dcd0[_0x24da('0xb7')],'AttachmentId':_0x4f37fb[_0x24da('0x58')][_0x24da('0xa7')][0x0]['id']})['then'](function(_0x1d912b){_0x45dcd0[_0x24da('0xb8')][_0x24da('0xb9')]=[];_0x45dcd0[_0x24da('0xb8')]['Messages'][_0x24da('0x8a')](_0x1d912b[_0x24da('0xb8')]);return _0x45dcd0;});})[_0x24da('0x35')](function(_0x196a82){respondWithRpcPromise('SendFax',_0x24da('0xba'),{'FaxAccountId':_[_0x24da('0xad')](_0x4f37fb['params']['id'])?undefined:_0x4f37fb[_0x24da('0x60')]['id'],'path':_['isNil'](_0x4f37fb['body']['attachments'][0x0][_0x24da('0x7')])?undefined:_0x4f37fb[_0x24da('0x58')][_0x24da('0xa7')][0x0][_0x24da('0x7')],'fax':_[_0x24da('0xad')](_0x4f37fb[_0x24da('0x58')]['to'][0x0])?undefined:_0x4f37fb[_0x24da('0x58')]['to'][0x0],'AttachmentId':_0x4f37fb[_0x24da('0x58')][_0x24da('0xa7')][0x0]['id']},client9002)[_0x24da('0x35')](function(_0x3cbb98){logger['info'](_0x24da('0xbb'),_0x3cbb98);})[_0x24da('0x5e')](function(_0x4c7bb9){logger[_0x24da('0xbc')](_0x24da('0xbb'),_0x4c7bb9);});return _0x196a82;})[_0x24da('0x35')](respondWithResult(_0x383c30,null))[_0x24da('0x5e')](handleError(_0x383c30,null));};exports['addAgents']=function(_0x43a83b,_0x542928,_0x275655){return db[_0x24da('0x3f')][_0x24da('0x57')]({'where':{'id':_0x43a83b[_0x24da('0x60')]['id']}})['then'](handleEntityNotFound(_0x542928,null))[_0x24da('0x35')](function(_0x2e6ec2){if(_0x2e6ec2){return _0x2e6ec2[_0x24da('0xbd')](_0x43a83b[_0x24da('0x58')][_0x24da('0x6a')],_[_0x24da('0x72')](_0x43a83b['body'],[_0x24da('0x6a'),'id'])||{})['spread'](function(_0x571bc8){for(var _0x1afc40=0x0;_0x1afc40<_0x43a83b[_0x24da('0x58')][_0x24da('0x6a')][_0x24da('0x48')];_0x1afc40+=0x1){socket['emit'](_0x24da('0xbe'),{'UserId':Number(_0x43a83b[_0x24da('0x58')][_0x24da('0x6a')][_0x1afc40]),'FaxAccountId':Number(_0x43a83b[_0x24da('0x60')]['id'])});}return _0x571bc8;});}})[_0x24da('0x35')](respondWithResult(_0x542928,null))[_0x24da('0x5e')](handleError(_0x542928,null));};exports[_0x24da('0xbf')]=function(_0x221e9e,_0x31b7fd,_0x512bc8){return db['FaxAccount'][_0x24da('0x57')]({'where':{'id':_0x221e9e[_0x24da('0x60')]['id']}})[_0x24da('0x35')](handleEntityNotFound(_0x31b7fd,null))[_0x24da('0x35')](function(_0x4ddd35){if(_0x4ddd35){return _0x4ddd35[_0x24da('0xbf')](_0x221e9e[_0x24da('0x44')]['ids'])['then'](function(){if(_[_0x24da('0xc0')](_0x221e9e[_0x24da('0x44')][_0x24da('0x6a')])){for(var _0x2a4230=0x0;_0x2a4230<_0x221e9e[_0x24da('0x44')][_0x24da('0x6a')][_0x24da('0x48')];_0x2a4230+=0x1){socket[_0x24da('0xc1')](_0x24da('0xc2'),{'UserId':Number(_0x221e9e[_0x24da('0x44')][_0x24da('0x6a')][_0x2a4230]),'FaxAccountId':Number(_0x221e9e['params']['id'])});}}else{socket[_0x24da('0xc1')](_0x24da('0xc2'),{'UserId':Number(_0x221e9e[_0x24da('0x44')]['ids']),'FaxAccountId':Number(_0x221e9e[_0x24da('0x60')]['id'])});}});}})[_0x24da('0x35')](respondWithStatusCode(_0x31b7fd,null))[_0x24da('0x5e')](handleError(_0x31b7fd,null));};exports[_0x24da('0xc3')]=function(_0x386f30,_0x3a9b22,_0x5be921){var _0x200c41={};var _0x4a2913={};var _0x191a41;var _0x1f9d83;return db['FaxAccount'][_0x24da('0x66')]({'where':{'id':_0x386f30[_0x24da('0x60')]['id']}})[_0x24da('0x35')](handleEntityNotFound(_0x3a9b22,null))[_0x24da('0x35')](function(_0x1624e5){if(_0x1624e5){_0x191a41=_0x1624e5;_0x4a2913['model']=_['keys'](db[_0x24da('0x76')][_0x24da('0x40')]);_0x4a2913[_0x24da('0x44')]=_[_0x24da('0x43')](_0x386f30['query']);_0x4a2913['filters']=_[_0x24da('0x55')](_0x4a2913['model'],_0x4a2913['query']);_0x200c41[_0x24da('0x46')]=_[_0x24da('0x55')](_0x4a2913[_0x24da('0x42')],qs[_0x24da('0x47')](_0x386f30['query']['fields']));_0x200c41[_0x24da('0x46')]=_0x200c41['attributes'][_0x24da('0x48')]?_0x200c41[_0x24da('0x46')]:_0x4a2913[_0x24da('0x42')];_0x200c41[_0x24da('0x49')]=qs[_0x24da('0x4a')](_0x386f30[_0x24da('0x44')][_0x24da('0x4a')]);_0x200c41[_0x24da('0x4b')]=qs[_0x24da('0x45')](_[_0x24da('0x68')](_0x386f30[_0x24da('0x44')],_0x4a2913[_0x24da('0x45')]));if(_0x386f30[_0x24da('0x44')][_0x24da('0x4c')]){_0x200c41[_0x24da('0x4b')]=_['merge'](_0x200c41['where'],{'$or':_[_0x24da('0x3e')](_0x200c41['attributes'],function(_0x56ccf1){var _0x4da012={};_0x4da012[_0x56ccf1]={'$like':'%'+_0x386f30[_0x24da('0x44')][_0x24da('0x4c')]+'%'};return _0x4da012;})});}_0x200c41=_[_0x24da('0x4d')]({},_0x200c41,_0x386f30[_0x24da('0x50')]);return _0x191a41[_0x24da('0xc3')](_0x200c41);}})[_0x24da('0x35')](function(_0x4eb3ed){if(_0x4eb3ed){_0x1f9d83=_0x4eb3ed['length'];if(!_0x386f30[_0x24da('0x44')][_0x24da('0x67')]('nolimit')){_0x200c41[_0x24da('0x2e')]=qs[_0x24da('0x2e')](_0x386f30[_0x24da('0x44')][_0x24da('0x2e')]);_0x200c41[_0x24da('0x2c')]=qs[_0x24da('0x2c')](_0x386f30[_0x24da('0x44')]['offset']);}return _0x191a41[_0x24da('0xc3')](_0x200c41);}})[_0x24da('0x35')](function(_0x1eb110){if(_0x1eb110){return _0x1eb110?{'count':_0x1f9d83,'rows':_0x1eb110}:null;}})[_0x24da('0x35')](respondWithResult(_0x3a9b22,null))[_0x24da('0x5e')](handleError(_0x3a9b22,null));};
\ No newline at end of file
+var _0x637a=['order','sort','pick','filter','where','merge','VIRTUAL','options','include','rows','params','mandatoryDispositionPause','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','find','describe','Disposition','findAll','removeDispositions','ids','FaxAccountId','CannedAnswer','findOne','removeAnswers','addInteraction','FaxInteraction','omit','CmContact','Contact','User','Owner','fullname','Tag','tag','addApplications','transaction','FaxApplication','bulkCreate','priority','getApplications','context','from-voip-provider','exten','localstationid','app','system','description','Fax\x20Extension','appdata','push','Answer','Set','ecm','gateway','faxdetect','maxrate','minrate','t38timeout','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','addAccountApplications','sequelize','VoiceExtension','updateAccountApplications','TrunkId','ListId','findById','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','updatedAt','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','from','fax','List\x20not\x20found','Send\x20Fax\x20failed','out','Messages','spread','filename','ContactId','dataValues','SendFax','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','register','jayson/promise','http','client','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','get','FaxAccounts','UserProfileResource','end','stack','name','send','index','Pause','map','FaxAccount','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit'];(function(_0x16ce60,_0x1fb180){var _0x2c7947=function(_0x2df738){while(--_0x2df738){_0x16ce60['push'](_0x16ce60['shift']());}};_0x2c7947(++_0x1fb180);}(_0x637a,0x1e6));var _0xa637=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x637a[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa637('0x0'));var zipdir=require(_0xa637('0x1'));var jsonpatch=require(_0xa637('0x2'));var rp=require(_0xa637('0x3'));var moment=require('moment');var BPromise=require(_0xa637('0x4'));var Mustache=require(_0xa637('0x5'));var util=require(_0xa637('0x6'));var path=require(_0xa637('0x7'));var sox=require('sox');var csv=require(_0xa637('0x8'));var ejs=require(_0xa637('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa637('0xa'));var crypto=require(_0xa637('0xb'));var jsforce=require(_0xa637('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa637('0x8'));var querystring=require(_0xa637('0xd'));var Papa=require(_0xa637('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa637('0xf'));var as=require(_0xa637('0x10'));var hardwareService=require(_0xa637('0x11'));var logger=require(_0xa637('0x12'))(_0xa637('0x13'));var utils=require(_0xa637('0x14'));var config=require(_0xa637('0x15'));var licenseUtil=require(_0xa637('0x16'));var db=require(_0xa637('0x17'))['db'];config['redis']=_[_0xa637('0x18')](config['redis'],{'host':_0xa637('0x19'),'port':0x18eb});var socket=require(_0xa637('0x1a'))(new Redis(config[_0xa637('0x1b')]));require('./faxAccount.socket')[_0xa637('0x1c')](socket);var jayson=require(_0xa637('0x1d'));var client=jayson['client'][_0xa637('0x1e')]({'port':0x232c});var client9002=jayson[_0xa637('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x261e4e,_0x553675,_0x4646b3,_0x3f5b9d){return new BPromise(function(_0x5d334a,_0x437456){var _0xa5ce09=_0x3f5b9d||client;return _0xa5ce09[_0xa637('0x20')](_0x261e4e,_0x4646b3)[_0xa637('0x21')](function(_0x5d6e01){logger[_0xa637('0x22')](_0xa637('0x23'),_0x553675,_0xa637('0x24'));logger[_0xa637('0x25')](_0xa637('0x26'),_0x553675,'request\x20sent',JSON[_0xa637('0x27')](_0x5d6e01));if(_0x5d6e01[_0xa637('0x28')]){if(_0x5d6e01[_0xa637('0x28')][_0xa637('0x29')]===0x1f4){logger[_0xa637('0x28')](_0xa637('0x23'),_0x553675,_0x5d6e01[_0xa637('0x28')][_0xa637('0x2a')]);return _0x437456(_0x5d6e01[_0xa637('0x28')][_0xa637('0x2a')]);}logger[_0xa637('0x28')](_0xa637('0x23'),_0x553675,_0x5d6e01[_0xa637('0x28')][_0xa637('0x2a')]);return _0x5d334a(_0x5d6e01[_0xa637('0x28')][_0xa637('0x2a')]);}else{logger['info'](_0xa637('0x23'),_0x553675,_0xa637('0x24'));_0x5d334a(_0x5d6e01[_0xa637('0x2b')]['message']);}})[_0xa637('0x2c')](function(_0x5603ac){logger['error'](_0xa637('0x23'),_0x553675,_0x5603ac);_0x437456(_0x5603ac);});});}function respondWithStatusCode(_0x55780b,_0x3014c5){_0x3014c5=_0x3014c5||0xcc;return function(_0x5df982){if(_0x5df982){return _0x55780b[_0xa637('0x2d')](_0x3014c5);}return _0x55780b[_0xa637('0x2e')](_0x3014c5)['end']();};}function respondWithResult(_0x529330,_0x160c13){_0x160c13=_0x160c13||0xc8;return function(_0x71ddb9){if(_0x71ddb9){return _0x529330[_0xa637('0x2e')](_0x160c13)[_0xa637('0x2f')](_0x71ddb9);}};}function respondWithFilteredResult(_0x569b27,_0x203ce2){return function(_0x37832a){if(_0x37832a){var _0x2ff370=typeof _0x203ce2[_0xa637('0x30')]==='undefined'&&typeof _0x203ce2['limit']===_0xa637('0x31');var _0x1e44ff=_0x37832a[_0xa637('0x32')];var _0x5bb89e=_0x2ff370?0x0:_0x203ce2[_0xa637('0x30')];var _0x34463f=_0x2ff370?_0x37832a[_0xa637('0x32')]:_0x203ce2[_0xa637('0x30')]+_0x203ce2[_0xa637('0x33')];var _0x12bb97;if(_0x34463f>=_0x1e44ff){_0x34463f=_0x1e44ff;_0x12bb97=0xc8;}else{_0x12bb97=0xce;}_0x569b27[_0xa637('0x2e')](_0x12bb97);return _0x569b27[_0xa637('0x34')](_0xa637('0x35'),_0x5bb89e+'-'+_0x34463f+'/'+_0x1e44ff)['json'](_0x37832a);}return null;};}function patchUpdates(_0x5b70e5){return function(_0x1f5214){try{jsonpatch[_0xa637('0x36')](_0x1f5214,_0x5b70e5,!![]);}catch(_0x8ac8db){return BPromise[_0xa637('0x37')](_0x8ac8db);}return _0x1f5214[_0xa637('0x38')]();};}function saveUpdates(_0x1942c4,_0x2c2885){return function(_0x292c05){if(_0x292c05){return _0x292c05[_0xa637('0x39')](_0x1942c4)[_0xa637('0x21')](function(_0x32b531){return _0x32b531;});}return null;};}function removeEntity(_0x138e42,_0x434e97){return function(_0x6c6846){if(_0x6c6846){return _0x6c6846[_0xa637('0x3a')]()[_0xa637('0x21')](function(){var _0x1b1137=_0x6c6846[_0xa637('0x3b')]({'plain':!![]});var _0x1e99cc=_0xa637('0x3c');return db[_0xa637('0x3d')][_0xa637('0x3a')]({'where':{'type':_0x1e99cc,'resourceId':_0x1b1137['id']}})[_0xa637('0x21')](function(){return _0x6c6846;});})['then'](function(){_0x138e42[_0xa637('0x2e')](0xcc)[_0xa637('0x3e')]();});}};}function handleEntityNotFound(_0x103b68,_0xb5ba75){return function(_0x1ff395){if(!_0x1ff395){_0x103b68[_0xa637('0x2d')](0x194);}return _0x1ff395;};}function handleError(_0x88ae7f,_0x310569){_0x310569=_0x310569||0x1f4;return function(_0x53f5d5){logger['error'](_0x53f5d5[_0xa637('0x3f')]);if(_0x53f5d5[_0xa637('0x40')]){delete _0x53f5d5[_0xa637('0x40')];}_0x88ae7f[_0xa637('0x2e')](_0x310569)[_0xa637('0x41')](_0x53f5d5);};}exports[_0xa637('0x42')]=function(_0x137dee,_0x58c5e7){var _0x1b724d={'include':[{'model':db[_0xa637('0x43')],'as':'mandatoryDispositionPause'}]},_0x1a230a={},_0x4e0327={'count':0x0,'rows':[]};var _0x55ff6d=_[_0xa637('0x44')](db[_0xa637('0x45')][_0xa637('0x46')],function(_0x5a3e21){return{'name':_0x5a3e21[_0xa637('0x47')],'type':_0x5a3e21[_0xa637('0x48')][_0xa637('0x49')]};});_0x1a230a[_0xa637('0x4a')]=_['map'](_0x55ff6d,'name');_0x1a230a['query']=_[_0xa637('0x4b')](_0x137dee[_0xa637('0x4c')]);_0x1a230a[_0xa637('0x4d')]=_[_0xa637('0x4e')](_0x1a230a[_0xa637('0x4a')],_0x1a230a[_0xa637('0x4c')]);_0x1b724d['attributes']=_[_0xa637('0x4e')](_0x1a230a[_0xa637('0x4a')],qs[_0xa637('0x4f')](_0x137dee[_0xa637('0x4c')]['fields']));_0x1b724d['attributes']=_0x1b724d[_0xa637('0x50')][_0xa637('0x51')]?_0x1b724d['attributes']:_0x1a230a[_0xa637('0x4a')];if(!_0x137dee[_0xa637('0x4c')][_0xa637('0x52')](_0xa637('0x53'))){_0x1b724d[_0xa637('0x33')]=qs[_0xa637('0x33')](_0x137dee[_0xa637('0x4c')][_0xa637('0x33')]);_0x1b724d[_0xa637('0x30')]=qs['offset'](_0x137dee[_0xa637('0x4c')][_0xa637('0x30')]);}_0x1b724d[_0xa637('0x54')]=qs[_0xa637('0x55')](_0x137dee[_0xa637('0x4c')]['sort']);_0x1b724d['where']=qs[_0xa637('0x4d')](_[_0xa637('0x56')](_0x137dee[_0xa637('0x4c')],_0x1a230a['filters']),_0x55ff6d);if(_0x137dee[_0xa637('0x4c')][_0xa637('0x57')]){_0x1b724d[_0xa637('0x58')]=_[_0xa637('0x59')](_0x1b724d[_0xa637('0x58')],{'$or':_['map'](_0x55ff6d,function(_0x5fd195){if(_0x5fd195['type']!==_0xa637('0x5a')){var _0x3c9f57={};_0x3c9f57[_0x5fd195[_0xa637('0x40')]]={'$like':'%'+_0x137dee[_0xa637('0x4c')][_0xa637('0x57')]+'%'};return _0x3c9f57;}})});}_0x1b724d=_['merge']({},_0x1b724d,_0x137dee[_0xa637('0x5b')]);var _0x583adc={'where':_0x1b724d[_0xa637('0x58')]};return db['FaxAccount']['count'](_0x583adc)[_0xa637('0x21')](function(_0x40704b){_0x4e0327[_0xa637('0x32')]=_0x40704b;if(_0x137dee[_0xa637('0x4c')]['includeAll']){_0x1b724d[_0xa637('0x5c')]=[{'all':!![]}];}return db[_0xa637('0x45')]['findAll'](_0x1b724d);})[_0xa637('0x21')](function(_0x46a5bd){_0x4e0327[_0xa637('0x5d')]=_0x46a5bd;return _0x4e0327;})[_0xa637('0x21')](respondWithFilteredResult(_0x58c5e7,_0x1b724d))[_0xa637('0x2c')](handleError(_0x58c5e7,null));};exports['show']=function(_0x3b63eb,_0x1936da){var _0x4f0bed={'raw':![],'where':{'id':_0x3b63eb[_0xa637('0x5e')]['id']},'include':[{'model':db[_0xa637('0x43')],'as':_0xa637('0x5f')}]},_0x3883b1={};_0x3883b1[_0xa637('0x4a')]=_[_0xa637('0x4b')](db[_0xa637('0x45')][_0xa637('0x46')]);_0x3883b1[_0xa637('0x4c')]=_[_0xa637('0x4b')](_0x3b63eb[_0xa637('0x4c')]);_0x3883b1[_0xa637('0x4d')]=_[_0xa637('0x4e')](_0x3883b1['model'],_0x3883b1[_0xa637('0x4c')]);_0x4f0bed[_0xa637('0x50')]=_[_0xa637('0x4e')](_0x3883b1[_0xa637('0x4a')],qs['fields'](_0x3b63eb[_0xa637('0x4c')][_0xa637('0x4f')]));_0x4f0bed['attributes']=_0x4f0bed['attributes'][_0xa637('0x51')]?_0x4f0bed['attributes']:_0x3883b1[_0xa637('0x4a')];if(_0x3b63eb[_0xa637('0x4c')][_0xa637('0x60')]){_0x4f0bed[_0xa637('0x5c')]=[{'all':!![]}];}_0x4f0bed=_[_0xa637('0x59')]({},_0x4f0bed,_0x3b63eb['options']);return db[_0xa637('0x45')]['find'](_0x4f0bed)[_0xa637('0x21')](handleEntityNotFound(_0x1936da,null))[_0xa637('0x21')](respondWithResult(_0x1936da,null))['catch'](handleError(_0x1936da,null));};exports[_0xa637('0x61')]=function(_0x7902d,_0x5d11fb){return db[_0xa637('0x45')][_0xa637('0x61')](_0x7902d[_0xa637('0x62')],{})['then'](function(_0x5176e0){var _0x5002d4=_0x7902d[_0xa637('0x63')][_0xa637('0x3b')]({'plain':!![]});if(!_0x5002d4)throw new Error(_0xa637('0x64'));if(_0x5002d4['role']===_0xa637('0x63')){var _0x504d9a=_0x5176e0[_0xa637('0x3b')]({'plain':!![]});var _0x49ae88=_0xa637('0x3c');return db[_0xa637('0x65')]['find']({'where':{'name':_0x49ae88,'userProfileId':_0x5002d4[_0xa637('0x66')]},'raw':!![]})['then'](function(_0x19cc28){if(_0x19cc28&&_0x19cc28[_0xa637('0x67')]===0x0){return db[_0xa637('0x3d')]['create']({'name':_0x504d9a[_0xa637('0x40')],'resourceId':_0x504d9a['id'],'type':_0x19cc28['name'],'sectionId':_0x19cc28['id']},{})[_0xa637('0x21')](function(){return _0x5176e0;});}else{return _0x5176e0;}})[_0xa637('0x2c')](function(_0x2985e0){logger[_0xa637('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2985e0);throw _0x2985e0;});}return _0x5176e0;})['then'](respondWithResult(_0x5d11fb,0xc9))[_0xa637('0x2c')](handleError(_0x5d11fb,null));};exports[_0xa637('0x39')]=function(_0x4d52a8,_0x3d9770){if(_0x4d52a8[_0xa637('0x62')]['id']){delete _0x4d52a8[_0xa637('0x62')]['id'];}return db['FaxAccount'][_0xa637('0x68')]({'where':{'id':_0x4d52a8['params']['id']},'include':[{'model':db[_0xa637('0x43')],'as':_0xa637('0x5f')}]})[_0xa637('0x21')](handleEntityNotFound(_0x3d9770,null))[_0xa637('0x21')](saveUpdates(_0x4d52a8[_0xa637('0x62')],null))[_0xa637('0x21')](respondWithResult(_0x3d9770,null))[_0xa637('0x2c')](handleError(_0x3d9770,null));};exports[_0xa637('0x3a')]=function(_0x224fb7,_0x34d847){return db['FaxAccount'][_0xa637('0x68')]({'where':{'id':_0x224fb7[_0xa637('0x5e')]['id']}})[_0xa637('0x21')](handleEntityNotFound(_0x34d847,null))['then'](removeEntity(_0x34d847,null))[_0xa637('0x2c')](handleError(_0x34d847,null));};exports[_0xa637('0x69')]=function(_0x13101e,_0x18abe1){return db[_0xa637('0x45')][_0xa637('0x69')]()[_0xa637('0x21')](respondWithResult(_0x18abe1,null))['catch'](handleError(_0x18abe1,null));};exports['addDisposition']=function(_0x1daa87,_0x13325b,_0x52d288){if(_0x1daa87['body']['id']){delete _0x1daa87['body']['id'];}return db[_0xa637('0x45')][_0xa637('0x68')]({'where':{'id':_0x1daa87[_0xa637('0x5e')]['id']}})[_0xa637('0x21')](handleEntityNotFound(_0x13325b,null))[_0xa637('0x21')](function(_0x181894){if(_0x181894){_0x1daa87[_0xa637('0x62')]['FaxAccountId']=_0x181894['id'];return db['Disposition'][_0xa637('0x61')](_0x1daa87['body']);}})['then'](respondWithResult(_0x13325b,null))[_0xa637('0x2c')](handleError(_0x13325b,null));};exports['getDispositions']=function(_0x57428c,_0x14b294,_0x11b71b){var _0x5e79d0={'raw':![],'where':{}};var _0x3bb26e={};var _0x42b827={'count':0x0,'rows':[]};return db['FaxAccount']['findOne']({'where':{'id':_0x57428c[_0xa637('0x5e')]['id']}})[_0xa637('0x21')](handleEntityNotFound(_0x14b294,null))['then'](function(_0x254655){if(_0x254655){_0x3bb26e[_0xa637('0x4a')]=_[_0xa637('0x4b')](db[_0xa637('0x6a')][_0xa637('0x46')]);_0x3bb26e[_0xa637('0x4c')]=_[_0xa637('0x4b')](_0x57428c[_0xa637('0x4c')]);_0x3bb26e[_0xa637('0x4d')]=_[_0xa637('0x4e')](_0x3bb26e[_0xa637('0x4a')],_0x3bb26e[_0xa637('0x4c')]);_0x5e79d0[_0xa637('0x50')]=_[_0xa637('0x4e')](_0x3bb26e[_0xa637('0x4a')],qs[_0xa637('0x4f')](_0x57428c['query'][_0xa637('0x4f')]));_0x5e79d0['attributes']=_0x5e79d0[_0xa637('0x50')]['length']?_0x5e79d0['attributes']:_0x3bb26e[_0xa637('0x4a')];if(!_0x57428c['query'][_0xa637('0x52')](_0xa637('0x53'))){_0x5e79d0[_0xa637('0x33')]=qs[_0xa637('0x33')](_0x57428c[_0xa637('0x4c')]['limit']);_0x5e79d0[_0xa637('0x30')]=qs[_0xa637('0x30')](_0x57428c[_0xa637('0x4c')][_0xa637('0x30')]);}_0x5e79d0['order']=qs[_0xa637('0x55')](_0x57428c[_0xa637('0x4c')][_0xa637('0x55')]);_0x5e79d0[_0xa637('0x58')]=qs[_0xa637('0x4d')](_[_0xa637('0x56')](_0x57428c[_0xa637('0x4c')],_0x3bb26e[_0xa637('0x4d')]));_0x5e79d0[_0xa637('0x58')]['FaxAccountId']=_0x254655['id'];if(_0x57428c[_0xa637('0x4c')][_0xa637('0x57')]){_0x5e79d0[_0xa637('0x58')]=_['merge'](_0x5e79d0[_0xa637('0x58')],{'$or':_[_0xa637('0x44')](_0x5e79d0['attributes'],function(_0x337307){var _0x5255cb={};_0x5255cb[_0x337307]={'$like':'%'+_0x57428c['query'][_0xa637('0x57')]+'%'};return _0x5255cb;})});}_0x5e79d0=_['merge']({},_0x5e79d0,_0x57428c[_0xa637('0x5b')]);return db['Disposition'][_0xa637('0x32')]({'where':_0x5e79d0[_0xa637('0x58')]})[_0xa637('0x21')](function(_0x613cf6){_0x42b827[_0xa637('0x32')]=_0x613cf6;if(_0x57428c[_0xa637('0x4c')][_0xa637('0x60')]){_0x5e79d0[_0xa637('0x5c')]=[{'all':!![]}];}return db[_0xa637('0x6a')][_0xa637('0x6b')](_0x5e79d0);})[_0xa637('0x21')](function(_0x16a9f8){_0x42b827['rows']=_0x16a9f8;return _0x42b827;});}})[_0xa637('0x21')](respondWithFilteredResult(_0x14b294,_0x5e79d0))[_0xa637('0x2c')](handleError(_0x14b294,null));};exports[_0xa637('0x6c')]=function(_0x259026,_0x21f35f,_0x58cbec){return db[_0xa637('0x45')][_0xa637('0x68')]({'where':{'id':_0x259026[_0xa637('0x5e')]['id']}})[_0xa637('0x21')](handleEntityNotFound(_0x21f35f,null))[_0xa637('0x21')](function(_0x3413e3){if(_0x3413e3){return _0x3413e3[_0xa637('0x6c')](_0x259026['query'][_0xa637('0x6d')]);}})[_0xa637('0x21')](respondWithStatusCode(_0x21f35f,null))[_0xa637('0x2c')](handleError(_0x21f35f,null));};exports['addAnswer']=function(_0x34ade8,_0xa767f5,_0x51501f){if(_0x34ade8[_0xa637('0x62')]['id']){delete _0x34ade8[_0xa637('0x62')]['id'];}return db[_0xa637('0x45')][_0xa637('0x68')]({'where':{'id':_0x34ade8[_0xa637('0x5e')]['id']}})[_0xa637('0x21')](handleEntityNotFound(_0xa767f5,null))[_0xa637('0x21')](function(_0x5dbe1d){if(_0x5dbe1d){_0x34ade8[_0xa637('0x62')][_0xa637('0x6e')]=_0x5dbe1d['id'];return db[_0xa637('0x6f')][_0xa637('0x61')](_0x34ade8[_0xa637('0x62')]);}})[_0xa637('0x21')](respondWithResult(_0xa767f5,null))['catch'](handleError(_0xa767f5,null));};exports['getAnswers']=function(_0x1f842c,_0x57fb05,_0x6976f){var _0xc2463d={'raw':![],'where':{}};var _0x1d5506={};var _0x108c87={'count':0x0,'rows':[]};return db[_0xa637('0x45')][_0xa637('0x70')]({'where':{'id':_0x1f842c['params']['id']}})['then'](handleEntityNotFound(_0x57fb05,null))['then'](function(_0x55c249){if(_0x55c249){_0x1d5506['model']=_['keys'](db[_0xa637('0x6f')][_0xa637('0x46')]);_0x1d5506['query']=_[_0xa637('0x4b')](_0x1f842c[_0xa637('0x4c')]);_0x1d5506[_0xa637('0x4d')]=_[_0xa637('0x4e')](_0x1d5506[_0xa637('0x4a')],_0x1d5506[_0xa637('0x4c')]);_0xc2463d[_0xa637('0x50')]=_[_0xa637('0x4e')](_0x1d5506['model'],qs[_0xa637('0x4f')](_0x1f842c[_0xa637('0x4c')]['fields']));_0xc2463d[_0xa637('0x50')]=_0xc2463d[_0xa637('0x50')]['length']?_0xc2463d['attributes']:_0x1d5506[_0xa637('0x4a')];if(!_0x1f842c[_0xa637('0x4c')]['hasOwnProperty'](_0xa637('0x53'))){_0xc2463d[_0xa637('0x33')]=qs['limit'](_0x1f842c[_0xa637('0x4c')][_0xa637('0x33')]);_0xc2463d[_0xa637('0x30')]=qs[_0xa637('0x30')](_0x1f842c[_0xa637('0x4c')][_0xa637('0x30')]);}_0xc2463d['order']=qs[_0xa637('0x55')](_0x1f842c[_0xa637('0x4c')][_0xa637('0x55')]);_0xc2463d['where']=qs[_0xa637('0x4d')](_[_0xa637('0x56')](_0x1f842c[_0xa637('0x4c')],_0x1d5506[_0xa637('0x4d')]));_0xc2463d[_0xa637('0x58')][_0xa637('0x6e')]=_0x55c249['id'];if(_0x1f842c[_0xa637('0x4c')][_0xa637('0x57')]){_0xc2463d[_0xa637('0x58')]=_[_0xa637('0x59')](_0xc2463d[_0xa637('0x58')],{'$or':_['map'](_0xc2463d[_0xa637('0x50')],function(_0x34343a){var _0x87e56a={};_0x87e56a[_0x34343a]={'$like':'%'+_0x1f842c[_0xa637('0x4c')][_0xa637('0x57')]+'%'};return _0x87e56a;})});}_0xc2463d=_['merge']({},_0xc2463d,_0x1f842c[_0xa637('0x5b')]);return db[_0xa637('0x6f')][_0xa637('0x32')]({'where':_0xc2463d['where']})['then'](function(_0x7cf731){_0x108c87[_0xa637('0x32')]=_0x7cf731;if(_0x1f842c[_0xa637('0x4c')][_0xa637('0x60')]){_0xc2463d[_0xa637('0x5c')]=[{'all':!![]}];}return db[_0xa637('0x6f')][_0xa637('0x6b')](_0xc2463d);})[_0xa637('0x21')](function(_0x20bb5d){_0x108c87[_0xa637('0x5d')]=_0x20bb5d;return _0x108c87;});}})['then'](respondWithFilteredResult(_0x57fb05,_0xc2463d))[_0xa637('0x2c')](handleError(_0x57fb05,null));};exports[_0xa637('0x71')]=function(_0x5eb42c,_0x16a11b,_0x4957bd){return db[_0xa637('0x45')][_0xa637('0x68')]({'where':{'id':_0x5eb42c['params']['id']}})[_0xa637('0x21')](handleEntityNotFound(_0x16a11b,null))[_0xa637('0x21')](function(_0x3ac5ff){if(_0x3ac5ff){return _0x3ac5ff[_0xa637('0x71')](_0x5eb42c['query'][_0xa637('0x6d')]);}})['then'](respondWithStatusCode(_0x16a11b,null))['catch'](handleError(_0x16a11b,null));};exports[_0xa637('0x72')]=function(_0x241df6,_0x54edfa,_0x27d758){return db[_0xa637('0x73')][_0xa637('0x68')]({'where':{'id':_0x241df6[_0xa637('0x5e')]['id']}})['then'](handleEntityNotFound(_0x54edfa,null))[_0xa637('0x21')](function(_0xcecd43){if(_0xcecd43){return _0xcecd43[_0xa637('0x72')](_0x241df6[_0xa637('0x62')][_0xa637('0x6d')],_[_0xa637('0x74')](_0x241df6['body'],[_0xa637('0x6d'),'id'])||{});}})[_0xa637('0x21')](respondWithResult(_0x54edfa,null))[_0xa637('0x2c')](handleError(_0x54edfa,null));};exports['getInteractions']=function(_0x4b2f12,_0x3e730e,_0x5ae2c9){var _0x49d46a={'raw':![],'where':{}};var _0x3d2630={};var _0xb1cb60={'count':0x0,'rows':[]};return db[_0xa637('0x45')][_0xa637('0x70')]({'where':{'id':_0x4b2f12['params']['id']}})[_0xa637('0x21')](handleEntityNotFound(_0x3e730e,null))[_0xa637('0x21')](function(_0x54f846){if(_0x54f846){_0x3d2630[_0xa637('0x4a')]=_[_0xa637('0x4b')](db[_0xa637('0x73')][_0xa637('0x46')]);_0x3d2630[_0xa637('0x4c')]=_[_0xa637('0x4b')](_0x4b2f12[_0xa637('0x4c')]);_0x3d2630[_0xa637('0x4d')]=_['intersection'](_0x3d2630[_0xa637('0x4a')],_0x3d2630[_0xa637('0x4c')]);_0x49d46a['attributes']=_[_0xa637('0x4e')](_0x3d2630[_0xa637('0x4a')],qs[_0xa637('0x4f')](_0x4b2f12[_0xa637('0x4c')][_0xa637('0x4f')]));_0x49d46a['attributes']=_0x49d46a[_0xa637('0x50')][_0xa637('0x51')]?_0x49d46a[_0xa637('0x50')]:_0x3d2630[_0xa637('0x4a')];if(!_0x4b2f12[_0xa637('0x4c')][_0xa637('0x52')](_0xa637('0x53'))){_0x49d46a['limit']=qs['limit'](_0x4b2f12[_0xa637('0x4c')][_0xa637('0x33')]);_0x49d46a['offset']=qs[_0xa637('0x30')](_0x4b2f12[_0xa637('0x4c')][_0xa637('0x30')]);}_0x49d46a['order']=qs['sort'](_0x4b2f12[_0xa637('0x4c')][_0xa637('0x55')]);_0x49d46a['where']=qs[_0xa637('0x4d')](_[_0xa637('0x56')](_0x4b2f12['query'],_0x3d2630[_0xa637('0x4d')]));_0x49d46a[_0xa637('0x58')]['FaxAccountId']=_0x54f846['id'];if(_0x4b2f12[_0xa637('0x4c')][_0xa637('0x57')]){_0x49d46a[_0xa637('0x58')]=_[_0xa637('0x59')](_0x49d46a[_0xa637('0x58')],{'$or':_[_0xa637('0x44')](_0x49d46a[_0xa637('0x50')],function(_0x53a668){var _0x578744={};_0x578744[_0x53a668]={'$like':'%'+_0x4b2f12[_0xa637('0x4c')][_0xa637('0x57')]+'%'};return _0x578744;})});}_0x49d46a=_[_0xa637('0x59')]({},_0x49d46a,_0x4b2f12[_0xa637('0x5b')]);return db[_0xa637('0x73')]['count']({'where':_0x49d46a[_0xa637('0x58')]})[_0xa637('0x21')](function(_0x5a7043){_0xb1cb60[_0xa637('0x32')]=_0x5a7043;if(_0x4b2f12[_0xa637('0x4c')]['includeAll']){_0x49d46a[_0xa637('0x5c')]=[{'model':db[_0xa637('0x75')],'as':_0xa637('0x76'),'required':![]},{'model':db[_0xa637('0x77')],'as':_0xa637('0x78'),'attributes':[_0xa637('0x40'),_0xa637('0x79'),'internal'],'required':![]},{'model':db[_0xa637('0x7a')],'as':'Tags','attributes':['id',_0xa637('0x40'),'color'],'where':_0x4b2f12[_0xa637('0x4c')][_0xa637('0x7b')]?{'id':_0x4b2f12[_0xa637('0x4c')][_0xa637('0x7b')]}:undefined,'required':_0x4b2f12['query'][_0xa637('0x7b')]?!![]:![]}];}return db[_0xa637('0x73')][_0xa637('0x6b')](_0x49d46a);})[_0xa637('0x21')](function(_0x5e717c){_0xb1cb60[_0xa637('0x5d')]=_0x5e717c;return _0xb1cb60;});}})[_0xa637('0x21')](respondWithFilteredResult(_0x3e730e,_0x49d46a))['catch'](handleError(_0x3e730e,null));};exports[_0xa637('0x7c')]=function(_0x31425f,_0x5b6a1c,_0x29680e){return db['FaxAccount'][_0xa637('0x70')]({'where':{'id':_0x31425f[_0xa637('0x5e')]['id']}})[_0xa637('0x21')](handleEntityNotFound(_0x5b6a1c,null))['then'](function(_0x5c4f42){if(_0x5c4f42){return db['sequelize'][_0xa637('0x7d')](function(_0x4a41ff){return db[_0xa637('0x7e')]['destroy']({'where':{'FaxAccountId':_0x31425f[_0xa637('0x5e')]['id']},'transaction':_0x4a41ff})[_0xa637('0x21')](function(_0x567541){var _0x5b9abd=_[_0xa637('0x44')](_0x31425f[_0xa637('0x62')],function(_0x330735){_0x330735[_0xa637('0x6e')]=_0x31425f[_0xa637('0x5e')]['id'];return _0x330735;});return db[_0xa637('0x7e')][_0xa637('0x7f')](_0x5b9abd,{'transaction':_0x4a41ff});});})[_0xa637('0x21')](function(){return db[_0xa637('0x7e')]['findAndCountAll']({'where':{'FaxAccountId':_0x31425f[_0xa637('0x5e')]['id']},'order':_0xa637('0x80')});});}})[_0xa637('0x21')](respondWithResult(_0x5b6a1c,null))['catch'](handleError(_0x5b6a1c,null));};exports[_0xa637('0x81')]=function(_0x37589a,_0x5a1be1,_0x94cf72){var _0x238982={};var _0xbbe63c={};var _0x3b110c;var _0x1bda2b;return db[_0xa637('0x45')][_0xa637('0x70')]({'where':{'id':_0x37589a[_0xa637('0x5e')]['id']}})[_0xa637('0x21')](handleEntityNotFound(_0x5a1be1,null))[_0xa637('0x21')](function(_0x1f2b32){if(_0x1f2b32){_0x3b110c=_0x1f2b32;_0xbbe63c[_0xa637('0x4a')]=_[_0xa637('0x4b')](db['FaxApplication']['rawAttributes']);_0xbbe63c[_0xa637('0x4c')]=_[_0xa637('0x4b')](_0x37589a[_0xa637('0x4c')]);_0xbbe63c['filters']=_['intersection'](_0xbbe63c[_0xa637('0x4a')],_0xbbe63c['query']);_0x238982['attributes']=_['intersection'](_0xbbe63c[_0xa637('0x4a')],qs[_0xa637('0x4f')](_0x37589a[_0xa637('0x4c')][_0xa637('0x4f')]));_0x238982[_0xa637('0x50')]=_0x238982['attributes'][_0xa637('0x51')]?_0x238982[_0xa637('0x50')]:_0xbbe63c[_0xa637('0x4a')];_0x238982[_0xa637('0x54')]=qs[_0xa637('0x55')](_0x37589a[_0xa637('0x4c')][_0xa637('0x55')]);_0x238982[_0xa637('0x58')]=qs[_0xa637('0x4d')](_['pick'](_0x37589a[_0xa637('0x4c')],_0xbbe63c[_0xa637('0x4d')]));if(_0x37589a[_0xa637('0x4c')][_0xa637('0x57')]){_0x238982[_0xa637('0x58')]=_[_0xa637('0x59')](_0x238982['where'],{'$or':_['map'](_0x238982[_0xa637('0x50')],function(_0xceefc2){var _0x529612={};_0x529612[_0xceefc2]={'$like':'%'+_0x37589a['query']['filter']+'%'};return _0x529612;})});}_0x238982=_[_0xa637('0x59')]({},_0x238982,_0x37589a[_0xa637('0x5b')]);return _0x3b110c[_0xa637('0x81')](_0x238982);}})['then'](function(_0x1106ff){if(_0x1106ff){_0x1bda2b=_0x1106ff['length'];if(!_0x37589a[_0xa637('0x4c')][_0xa637('0x52')](_0xa637('0x53'))){_0x238982[_0xa637('0x33')]=qs['limit'](_0x37589a['query'][_0xa637('0x33')]);_0x238982[_0xa637('0x30')]=qs[_0xa637('0x30')](_0x37589a[_0xa637('0x4c')][_0xa637('0x30')]);}return _0x3b110c[_0xa637('0x81')](_0x238982);}})[_0xa637('0x21')](function(_0x443272){if(_0x443272){return _0x443272?{'count':_0x1bda2b,'rows':_0x443272}:null;}})[_0xa637('0x21')](respondWithResult(_0x5a1be1,null))[_0xa637('0x2c')](handleError(_0x5a1be1,null));};function Extension(_0x5a04ed,_0xcc9355,_0x117cc8,_0x5e4220){this[_0xa637('0x82')]=_0xa637('0x83');this[_0xa637('0x84')]=_0x5a04ed[_0xa637('0x85')];this[_0xa637('0x86')]=_0x5e4220;this[_0xa637('0x48')]=_0xa637('0x87');this[_0xa637('0x88')]=_0xa637('0x89');this[_0xa637('0x6e')]=_0x5a04ed['id'];this['priority']=_0xcc9355;this[_0xa637('0x8a')]=_0x117cc8;}function createExtensionsReciveFax(_0x13c7be){var _0x59ff00=0x1;var _0x578398=[];_0x578398[_0xa637('0x8b')](new Extension(_0x13c7be,_0x59ff00,'',_0xa637('0x8c')));_0x59ff00+=0x1;_0x578398[_0xa637('0x8b')](new Extension(_0x13c7be,_0x59ff00,'CDR(type)=inbound-fax',_0xa637('0x8d')));_0x59ff00+=0x1;for(var _0x1eeafb in _0x13c7be){if(_0x13c7be[_0xa637('0x52')](_0x1eeafb)&&(_0x1eeafb===_0xa637('0x8e')||_0x1eeafb===_0xa637('0x85')||_0x1eeafb===_0xa637('0x8f')||_0x1eeafb===_0xa637('0x90')||_0x1eeafb==='headerinfo'||_0x1eeafb===_0xa637('0x91')||_0x1eeafb===_0xa637('0x92')||_0x1eeafb==='modem'||_0x1eeafb===_0xa637('0x93'))){_0x578398['push'](new Extension(_0x13c7be,_0x59ff00,'FAXOPT('+_0x1eeafb+')='+_0x13c7be[_0x1eeafb],'Set'));_0x59ff00+=0x1;}}_0x578398[_0xa637('0x8b')](new Extension(_0x13c7be,_0x59ff00,'6',_0xa637('0x94')));_0x59ff00+=0x1;_0x578398[_0xa637('0x8b')](new Extension(_0x13c7be,_0x59ff00,_0xa637('0x95'),'ReceiveFax'));_0x59ff00=0x0;return _0x578398;}exports[_0xa637('0x96')]=function(_0x43ee84,_0x27f90d,_0x2857e3){var _0x234a2c;return db[_0xa637('0x97')][_0xa637('0x7d')](function(_0xd01770){return db[_0xa637('0x45')][_0xa637('0x61')](_0x43ee84[_0xa637('0x62')],{'transaction':_0xd01770})[_0xa637('0x21')](function(_0x2466c8){_0x234a2c=_0x2466c8['get']({'plain':!![]});return db[_0xa637('0x98')]['bulkCreate'](createExtensionsReciveFax(_0x234a2c),{'transaction':_0xd01770});});})[_0xa637('0x21')](function(){return _0x234a2c;})['then'](respondWithResult(_0x27f90d,null))[_0xa637('0x2c')](handleError(_0x27f90d,null));};exports[_0xa637('0x99')]=function(_0x47c497,_0x5c5bb5,_0x20fcae){var _0x1bd814;return db[_0xa637('0x97')][_0xa637('0x7d')](function(_0x56d153){return db[_0xa637('0x45')][_0xa637('0x39')](_0x47c497['body'],{'where':{'id':_0x47c497[_0xa637('0x62')]['id']},'transaction':_0x56d153})[_0xa637('0x21')](function(_0x10d6cf){return db[_0xa637('0x98')][_0xa637('0x3a')]({'where':{'FaxAccountId':_0x47c497[_0xa637('0x62')]['id']},'transaction':_0x56d153})[_0xa637('0x21')](function(_0xaa7bd){return db[_0xa637('0x98')][_0xa637('0x7f')](createExtensionsReciveFax(_[_0xa637('0x74')](_0x47c497[_0xa637('0x62')],['tech',_0xa637('0x49'),'createdAt','updatedAt',_0xa637('0x9a'),_0xa637('0x9b')])),{'transaction':_0x56d153});});});})['then'](function(){return db[_0xa637('0x45')][_0xa637('0x9c')](_0x47c497['body']['id']);})['then'](respondWithResult(_0x5c5bb5,null))[_0xa637('0x2c')](handleError(_0x5c5bb5,null));};exports['getMessages']=function(_0x280e8b,_0x148ac5,_0x353a9b){var _0x15be38={'raw':!![],'where':{}};var _0x5dbffe={};var _0x28fa67={'count':0x0,'rows':[]};return db[_0xa637('0x45')][_0xa637('0x70')]({'where':{'id':_0x280e8b[_0xa637('0x5e')]['id']}})[_0xa637('0x21')](handleEntityNotFound(_0x148ac5,null))[_0xa637('0x21')](function(_0x15dee3){if(_0x15dee3){_0x5dbffe['model']=_[_0xa637('0x4b')](db[_0xa637('0x9d')][_0xa637('0x46')]);_0x5dbffe[_0xa637('0x4c')]=_[_0xa637('0x4b')](_0x280e8b[_0xa637('0x4c')]);_0x5dbffe[_0xa637('0x4d')]=_[_0xa637('0x4e')](_0x5dbffe[_0xa637('0x4a')],_0x5dbffe[_0xa637('0x4c')]);_0x15be38[_0xa637('0x50')]=_[_0xa637('0x4e')](_0x5dbffe[_0xa637('0x4a')],qs['fields'](_0x280e8b[_0xa637('0x4c')][_0xa637('0x4f')]));_0x15be38[_0xa637('0x50')]=_0x15be38[_0xa637('0x50')][_0xa637('0x51')]?_0x15be38[_0xa637('0x50')]:_0x5dbffe[_0xa637('0x4a')];if(!_0x280e8b[_0xa637('0x4c')]['hasOwnProperty'](_0xa637('0x53'))){_0x15be38['limit']=qs[_0xa637('0x33')](_0x280e8b[_0xa637('0x4c')][_0xa637('0x33')]);_0x15be38[_0xa637('0x30')]=qs[_0xa637('0x30')](_0x280e8b[_0xa637('0x4c')]['offset']);}_0x15be38['order']=qs[_0xa637('0x55')](_0x280e8b['query'][_0xa637('0x55')]);_0x15be38[_0xa637('0x58')]=qs['filters'](_[_0xa637('0x56')](_0x280e8b[_0xa637('0x4c')],_0x5dbffe[_0xa637('0x4d')]));_0x15be38[_0xa637('0x58')][_0xa637('0x6e')]=_0x15dee3['id'];if(_0x280e8b[_0xa637('0x4c')][_0xa637('0x57')]){_0x15be38[_0xa637('0x58')]=_['merge'](_0x15be38[_0xa637('0x58')],{'$or':_[_0xa637('0x44')](_0x15be38[_0xa637('0x50')],function(_0x5e37ff){var _0x1a80fe={};_0x1a80fe[_0x5e37ff]={'$like':'%'+_0x280e8b[_0xa637('0x4c')]['filter']+'%'};return _0x1a80fe;})});}if(_0x280e8b[_0xa637('0x4c')][_0xa637('0x9e')]){var _0x2b2bf6=_0x280e8b[_0xa637('0x4c')]['$gte'][_0xa637('0x9f')](',');var _0x2dd6a7={};_0x2dd6a7[_0x2b2bf6[0x0]]={'$gte':moment(_0x2b2bf6[0x1])[_0xa637('0xa0')](_0xa637('0xa1'))};_0x15be38[_0xa637('0x58')]=_[_0xa637('0x59')](_0x15be38[_0xa637('0x58')],_0x2dd6a7);}_0x15be38=_[_0xa637('0x59')]({},_0x15be38,_0x280e8b['options']);return db[_0xa637('0x9d')]['count']({'where':_0x15be38[_0xa637('0x58')]})[_0xa637('0x21')](function(_0x571cc8){_0x28fa67['count']=_0x571cc8;if(_0x280e8b[_0xa637('0x4c')][_0xa637('0x60')]){_0x15be38[_0xa637('0x5c')]=[{'all':!![]}];}return db['FaxMessage'][_0xa637('0x6b')](_0x15be38);})['then'](function(_0x185fd9){_0x28fa67[_0xa637('0x5d')]=_0x185fd9;return _0x28fa67;});}})[_0xa637('0x21')](respondWithFilteredResult(_0x148ac5,_0x15be38))['catch'](handleError(_0x148ac5,null));};exports['send']=function(_0x570f88,_0x867f6f,_0x416761){var _0x214136,_0x554f38={},_0x15cffb;if(_0x570f88['body']['to']){_0x15cffb=_0x570f88[_0xa637('0x62')]['to'][0x0];}return db['FaxAccount'][_0xa637('0x68')]({'where':{'id':_0x570f88['params']['id']},'include':[{'model':db[_0xa637('0xa2')],'as':_0xa637('0xa3'),'include':[{'model':db['CmContact'],'as':_0xa637('0xa4'),'where':{'fax':_0x15cffb},'limit':0x1,'order':[[_0xa637('0xa5'),'DESC']]}]}]})[_0xa637('0x21')](handleEntityNotFound(_0x867f6f,null))[_0xa637('0x21')](function(_0x2ca64d){_0x214136=_0x2ca64d;if(_0x570f88[_0xa637('0x62')][_0xa637('0xa6')]&&_0x570f88[_0xa637('0x62')]['attachments'][_0xa637('0x51')]){for(var _0x4f230e=0x0;_0x4f230e<_0x570f88[_0xa637('0x62')]['attachments'][_0xa637('0x51')];_0x4f230e+=0x1){_0x570f88[_0xa637('0x62')][_0xa637('0xa6')][_0x4f230e]={'filename':_0x570f88[_0xa637('0x62')][_0xa637('0xa6')][_0x4f230e][_0xa637('0x40')],'id':_0x570f88[_0xa637('0x62')]['attachments'][_0x4f230e]['id'],'path':path[_0xa637('0xa7')](config[_0xa637('0xa8')],_0xa637('0xa9'),_0x570f88[_0xa637('0x62')][_0xa637('0xa6')][_0x4f230e][_0xa637('0xaa')])};}}return respondWithRpcPromise(_0xa637('0xab'),_0xa637('0xab'),{'FaxAccountId':_[_0xa637('0xac')](_0x570f88[_0xa637('0x5e')]['id'])?undefined:_0x570f88[_0xa637('0x5e')]['id'],'path':_[_0xa637('0xac')](_0x570f88[_0xa637('0x62')][_0xa637('0xa6')][0x0][_0xa637('0x7')])?undefined:_0x570f88[_0xa637('0x62')][_0xa637('0xa6')][0x0][_0xa637('0x7')],'fax':_['isNil'](_0x570f88[_0xa637('0x62')]['to'][0x0])?undefined:_0x570f88[_0xa637('0x62')]['to'][0x0]},client9002);})[_0xa637('0x21')](function(){if(_0x214136){if(_[_0xa637('0xac')](_0x570f88['body'][_0xa637('0xad')])){_0x570f88['body'][_0xa637('0xad')]=util['format']('\x22%s\x22\x20<%s>',_0x214136[_0xa637('0x40')],_0x214136[_0xa637('0xae')]);}if(_0x214136[_0xa637('0xa3')]){if(_0x214136[_0xa637('0xa3')][_0xa637('0xa4')][_0xa637('0x51')]){return _0x214136['List'][_0xa637('0xa4')][0x0];}else{return db[_0xa637('0x75')][_0xa637('0x61')](_[_0xa637('0x18')](_0x570f88['body'],{'firstName':_0x570f88[_0xa637('0x62')]['to'][0x0],'phone':_0x570f88['body']['to'][0x0],'fax':_0x570f88[_0xa637('0x62')]['to'][0x0],'ListId':_0x214136[_0xa637('0x9b')]}));}}else{throw new Error(_0xa637('0xaf'));}}else{throw new Error(_0xa637('0xb0'));}})['then'](function(_0x5b64e2){if(_0x5b64e2){return db[_0xa637('0x73')][_0xa637('0x68')]({'where':{'ContactId':_0x5b64e2['id'],'closed':![],'FaxAccountId':_0x214136['id']}})[_0xa637('0x21')](function(_0x13ef58){if(_0x13ef58){return[_0x13ef58,![]];}return db['FaxInteraction'][_0xa637('0x61')]({'UserId':_0x570f88[_0xa637('0x63')]['id'],'ContactId':_0x5b64e2['id'],'FaxAccountId':_0x214136['id'],'fax':_0x570f88[_0xa637('0x62')]['to'][0x0],'firstMsgDirection':_0xa637('0xb1'),'Messages':[_[_0xa637('0x59')](_0x570f88[_0xa637('0x62')],{'read':![],'body':_0x570f88[_0xa637('0x62')][_0xa637('0xa6')][0x0]['filename'],'FaxAccountId':_0x214136['id'],'UserId':_0x570f88[_0xa637('0x63')]['id'],'ContactId':_0x5b64e2['id'],'AttachmentId':_0x570f88[_0xa637('0x62')]['attachments'][0x0]['id']})]},{'include':[{'model':db[_0xa637('0x9d')],'as':_0xa637('0xb2')}]})['then'](function(_0x4214d6){return[_0x4214d6,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xa637('0xb3')](function(_0x4a32de,_0x315b10){if(_0x315b10){return _0x4a32de;}return db[_0xa637('0x9d')][_0xa637('0x61')]({'direction':_0xa637('0xb1'),'read':![],'body':_0x570f88[_0xa637('0x62')][_0xa637('0xa6')][0x0][_0xa637('0xb4')],'FaxAccountId':_0x214136['id'],'FaxInteractionId':_0x4a32de['id'],'UserId':_0x570f88[_0xa637('0x63')]['id'],'ContactId':_0x4a32de[_0xa637('0xb5')],'AttachmentId':_0x570f88[_0xa637('0x62')][_0xa637('0xa6')][0x0]['id']})[_0xa637('0x21')](function(_0x1bf5bc){_0x4a32de[_0xa637('0xb6')]['Messages']=[];_0x4a32de['dataValues']['Messages'][_0xa637('0x8b')](_0x1bf5bc[_0xa637('0xb6')]);return _0x4a32de;});})[_0xa637('0x21')](function(_0x5bf2af){respondWithRpcPromise(_0xa637('0xb7'),_0xa637('0xb7'),{'FaxAccountId':_['isNil'](_0x570f88[_0xa637('0x5e')]['id'])?undefined:_0x570f88['params']['id'],'path':_[_0xa637('0xac')](_0x570f88['body'][_0xa637('0xa6')][0x0][_0xa637('0x7')])?undefined:_0x570f88['body']['attachments'][0x0]['path'],'fax':_['isNil'](_0x570f88['body']['to'][0x0])?undefined:_0x570f88[_0xa637('0x62')]['to'][0x0],'AttachmentId':_0x570f88[_0xa637('0x62')][_0xa637('0xa6')][0x0]['id']},client9002)[_0xa637('0x21')](function(_0x5384d2){logger[_0xa637('0x22')]('SendFaxRpc,\x20%s',_0x5384d2);})[_0xa637('0x2c')](function(_0x5508e7){logger['info']('SendFaxRpc,\x20%s',_0x5508e7);});return _0x5bf2af;})[_0xa637('0x21')](respondWithResult(_0x867f6f,null))[_0xa637('0x2c')](handleError(_0x867f6f,null));};exports['addAgents']=function(_0x427841,_0x3475a8,_0x46d0de){return db[_0xa637('0x45')][_0xa637('0x68')]({'where':{'id':_0x427841['params']['id']}})[_0xa637('0x21')](handleEntityNotFound(_0x3475a8,null))[_0xa637('0x21')](function(_0x1404d9){if(_0x1404d9){return _0x1404d9['addAgents'](_0x427841['body'][_0xa637('0x6d')],_[_0xa637('0x74')](_0x427841['body'],['ids','id'])||{})[_0xa637('0xb3')](function(_0x1a152c){for(var _0x1c0890=0x0;_0x1c0890<_0x427841['body'][_0xa637('0x6d')][_0xa637('0x51')];_0x1c0890+=0x1){socket[_0xa637('0xb8')](_0xa637('0xb9'),{'UserId':Number(_0x427841[_0xa637('0x62')]['ids'][_0x1c0890]),'FaxAccountId':Number(_0x427841[_0xa637('0x5e')]['id'])});}return _0x1a152c;});}})[_0xa637('0x21')](respondWithResult(_0x3475a8,null))[_0xa637('0x2c')](handleError(_0x3475a8,null));};exports[_0xa637('0xba')]=function(_0x2d9480,_0xe99f11,_0x390383){return db[_0xa637('0x45')][_0xa637('0x68')]({'where':{'id':_0x2d9480['params']['id']}})['then'](handleEntityNotFound(_0xe99f11,null))['then'](function(_0x2f667d){if(_0x2f667d){return _0x2f667d[_0xa637('0xba')](_0x2d9480[_0xa637('0x4c')][_0xa637('0x6d')])[_0xa637('0x21')](function(){if(_[_0xa637('0xbb')](_0x2d9480[_0xa637('0x4c')][_0xa637('0x6d')])){for(var _0x19c2ea=0x0;_0x19c2ea<_0x2d9480[_0xa637('0x4c')][_0xa637('0x6d')]['length'];_0x19c2ea+=0x1){socket[_0xa637('0xb8')](_0xa637('0xbc'),{'UserId':Number(_0x2d9480['query'][_0xa637('0x6d')][_0x19c2ea]),'FaxAccountId':Number(_0x2d9480[_0xa637('0x5e')]['id'])});}}else{socket[_0xa637('0xb8')](_0xa637('0xbc'),{'UserId':Number(_0x2d9480[_0xa637('0x4c')][_0xa637('0x6d')]),'FaxAccountId':Number(_0x2d9480[_0xa637('0x5e')]['id'])});}});}})['then'](respondWithStatusCode(_0xe99f11,null))[_0xa637('0x2c')](handleError(_0xe99f11,null));};exports[_0xa637('0xbd')]=function(_0x3d0415,_0x173c91,_0x28e374){var _0x58e070={};var _0x362e34={};var _0x2b7a11;var _0x224707;return db[_0xa637('0x45')][_0xa637('0x70')]({'where':{'id':_0x3d0415['params']['id']}})[_0xa637('0x21')](handleEntityNotFound(_0x173c91,null))['then'](function(_0xed32c){if(_0xed32c){_0x2b7a11=_0xed32c;_0x362e34['model']=_[_0xa637('0x4b')](db[_0xa637('0x77')][_0xa637('0x46')]);_0x362e34['query']=_['keys'](_0x3d0415[_0xa637('0x4c')]);_0x362e34[_0xa637('0x4d')]=_['intersection'](_0x362e34[_0xa637('0x4a')],_0x362e34['query']);_0x58e070[_0xa637('0x50')]=_['intersection'](_0x362e34['model'],qs[_0xa637('0x4f')](_0x3d0415['query'][_0xa637('0x4f')]));_0x58e070['attributes']=_0x58e070[_0xa637('0x50')][_0xa637('0x51')]?_0x58e070[_0xa637('0x50')]:_0x362e34[_0xa637('0x4a')];_0x58e070[_0xa637('0x54')]=qs[_0xa637('0x55')](_0x3d0415['query'][_0xa637('0x55')]);_0x58e070['where']=qs[_0xa637('0x4d')](_[_0xa637('0x56')](_0x3d0415[_0xa637('0x4c')],_0x362e34['filters']));if(_0x3d0415[_0xa637('0x4c')][_0xa637('0x57')]){_0x58e070[_0xa637('0x58')]=_[_0xa637('0x59')](_0x58e070[_0xa637('0x58')],{'$or':_[_0xa637('0x44')](_0x58e070['attributes'],function(_0x611460){var _0x490f85={};_0x490f85[_0x611460]={'$like':'%'+_0x3d0415[_0xa637('0x4c')][_0xa637('0x57')]+'%'};return _0x490f85;})});}_0x58e070=_[_0xa637('0x59')]({},_0x58e070,_0x3d0415[_0xa637('0x5b')]);return _0x2b7a11['getAgents'](_0x58e070);}})[_0xa637('0x21')](function(_0x1adef9){if(_0x1adef9){_0x224707=_0x1adef9[_0xa637('0x51')];if(!_0x3d0415['query'][_0xa637('0x52')](_0xa637('0x53'))){_0x58e070[_0xa637('0x33')]=qs[_0xa637('0x33')](_0x3d0415[_0xa637('0x4c')][_0xa637('0x33')]);_0x58e070[_0xa637('0x30')]=qs[_0xa637('0x30')](_0x3d0415[_0xa637('0x4c')][_0xa637('0x30')]);}return _0x2b7a11[_0xa637('0xbd')](_0x58e070);}})['then'](function(_0x5ac7f1){if(_0x5ac7f1){return _0x5ac7f1?{'count':_0x224707,'rows':_0x5ac7f1}:null;}})[_0xa637('0x21')](respondWithResult(_0x173c91,null))['catch'](handleError(_0x173c91,null));};
\ No newline at end of file
index 1035658..8ed61ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4e3=['events','FaxAccount','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x2db12b,_0x30ab1d){var _0x20990b=function(_0x589477){while(--_0x589477){_0x2db12b['push'](_0x2db12b['shift']());}};_0x20990b(++_0x30ab1d);}(_0xa4e3,0x129));var _0x3a4e=function(_0x31288a,_0x4466a1){_0x31288a=_0x31288a-0x0;var _0x22317b=_0xa4e3[_0x31288a];return _0x22317b;};'use strict';var EventEmitter=require(_0x3a4e('0x0'));var FaxAccount=require('../../mysqldb')['db'][_0x3a4e('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3a4e('0x2'),'afterUpdate':_0x3a4e('0x3'),'afterDestroy':_0x3a4e('0x4')};function emitEvent(_0x301311){return function(_0x223215,_0x41591b,_0x15db7d){FaxAccountEvents[_0x3a4e('0x5')](_0x301311+':'+_0x223215['id'],_0x223215);FaxAccountEvents[_0x3a4e('0x5')](_0x301311,_0x223215);_0x15db7d(null);};}for(var e in events){if(events[_0x3a4e('0x6')](e)){var event=events[e];FaxAccount[_0x3a4e('0x7')](e,emitEvent(event));}}module[_0x3a4e('0x8')]=FaxAccountEvents;
\ No newline at end of file
+var _0xb4d6=['FaxAccount','save','update','remove','emit','exports','events','../../mysqldb'];(function(_0xca8958,_0x25eed8){var _0x3d7165=function(_0x5dcced){while(--_0x5dcced){_0xca8958['push'](_0xca8958['shift']());}};_0x3d7165(++_0x25eed8);}(_0xb4d6,0x1b6));var _0x6b4d=function(_0x41352a,_0x246ea2){_0x41352a=_0x41352a-0x0;var _0x3e392f=_0xb4d6[_0x41352a];return _0x3e392f;};'use strict';var EventEmitter=require(_0x6b4d('0x0'));var FaxAccount=require(_0x6b4d('0x1'))['db'][_0x6b4d('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6b4d('0x3'),'afterUpdate':_0x6b4d('0x4'),'afterDestroy':_0x6b4d('0x5')};function emitEvent(_0x41adff){return function(_0x10265a,_0x3a7ce4,_0x55f403){FaxAccountEvents[_0x6b4d('0x6')](_0x41adff+':'+_0x10265a['id'],_0x10265a);FaxAccountEvents[_0x6b4d('0x6')](_0x41adff,_0x10265a);_0x55f403(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module[_0x6b4d('0x7')]=FaxAccountEvents;
\ No newline at end of file
index 2853609..28c959c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x391a=['rimraf','../../config/environment','exports','define','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x255ac2,_0x13254c){var _0x5ef31b=function(_0x43e109){while(--_0x43e109){_0x255ac2['push'](_0x255ac2['shift']());}};_0x5ef31b(++_0x13254c);}(_0x391a,0x70));var _0xa391=function(_0xced93e,_0x2ae3c2){_0xced93e=_0xced93e-0x0;var _0x116b36=_0x391a[_0xced93e];return _0x116b36;};'use strict';var _=require(_0xa391('0x0'));var util=require(_0xa391('0x1'));var logger=require(_0xa391('0x2'))(_0xa391('0x3'));var moment=require(_0xa391('0x4'));var BPromise=require(_0xa391('0x5'));var rp=require(_0xa391('0x6'));var fs=require('fs');var path=require(_0xa391('0x7'));var rimraf=require(_0xa391('0x8'));var config=require(_0xa391('0x9'));var attributes=require('./faxAccount.attributes');module[_0xa391('0xa')]=function(_0x58a713,_0x4ab7a){return _0x58a713[_0xa391('0xb')]('FaxAccount',attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0acc=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./faxAccount.attributes','exports','FaxAccount','fax_accounts','lodash','util'];(function(_0x3817a9,_0x29e215){var _0x443f30=function(_0x13940b){while(--_0x13940b){_0x3817a9['push'](_0x3817a9['shift']());}};_0x443f30(++_0x29e215);}(_0x0acc,0x19e));var _0xc0ac=function(_0xe2a2d,_0x1cff32){_0xe2a2d=_0xe2a2d-0x0;var _0xee8c81=_0x0acc[_0xe2a2d];return _0xee8c81;};'use strict';var _=require(_0xc0ac('0x0'));var util=require(_0xc0ac('0x1'));var logger=require(_0xc0ac('0x2'))(_0xc0ac('0x3'));var moment=require(_0xc0ac('0x4'));var BPromise=require(_0xc0ac('0x5'));var rp=require(_0xc0ac('0x6'));var fs=require('fs');var path=require(_0xc0ac('0x7'));var rimraf=require(_0xc0ac('0x8'));var config=require('../../config/environment');var attributes=require(_0xc0ac('0x9'));module[_0xc0ac('0xa')]=function(_0x2d5525,_0x4a4d1b){return _0x2d5525['define'](_0xc0ac('0xb'),attributes,{'tableName':_0xc0ac('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7d82164..464025e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x927c=['redis','localhost','socket.io-emitter','./faxAccount.socket','register','info','FaxAccount,\x20%s,\x20%s','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetFaxAccount','FaxAccount','findAll','options','raw','where','attributes','limit','include','model','map','then','NotifyFaxAccount','body','fax','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','Contacts','DESC','FaxApplication','Applications','List','get','list','applications','orderBy','priority','create','contact','FaxInteraction','autoclose','push','length','close','unmanaged','*,*,*,*','created','ContactId','AttachmentId','UserId','name','interaction','unshift','Start','startRouting','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','defaults'];(function(_0x26a341,_0x1fafa1){var _0x26d84d=function(_0xc3eac8){while(--_0xc3eac8){_0x26a341['push'](_0x26a341['shift']());}};_0x26d84d(++_0x1fafa1);}(_0x927c,0xa7));var _0xc927=function(_0x10f4b9,_0x5d39ca){_0x10f4b9=_0x10f4b9-0x0;var _0x1dbd09=_0x927c[_0x10f4b9];return _0x1dbd09;};'use strict';var _=require(_0xc927('0x0'));var util=require(_0xc927('0x1'));var moment=require(_0xc927('0x2'));var BPromise=require(_0xc927('0x3'));var rs=require(_0xc927('0x4'));var fs=require('fs');var Redis=require(_0xc927('0x5'));var db=require(_0xc927('0x6'))['db'];var utils=require(_0xc927('0x7'));var logger=require(_0xc927('0x8'))(_0xc927('0x9'));var config=require('../../config/environment');var jayson=require(_0xc927('0xa'));var client=jayson['client'][_0xc927('0xb')]({'port':0x232c});config['redis']=_[_0xc927('0xc')](config[_0xc927('0xd')],{'host':_0xc927('0xe'),'port':0x18eb});var socket=require(_0xc927('0xf'))(new Redis(config['redis']));require(_0xc927('0x10'))[_0xc927('0x11')](socket);function respondWithRpcPromise(_0x4476f4,_0x596a4c,_0x5eef62){return new BPromise(function(_0x4daf8a,_0x4386fa){return client['request'](_0x4476f4,_0x5eef62)['then'](function(_0xda6d0f){logger[_0xc927('0x12')](_0xc927('0x13'),_0x596a4c,'request\x20sent');logger[_0xc927('0x14')](_0xc927('0x15'),_0x596a4c,_0xc927('0x16'),JSON[_0xc927('0x17')](_0xda6d0f));if(_0xda6d0f[_0xc927('0x18')]){if(_0xda6d0f[_0xc927('0x18')][_0xc927('0x19')]===0x1f4){logger['error'](_0xc927('0x13'),_0x596a4c,_0xda6d0f[_0xc927('0x18')]['message']);return _0x4386fa(_0xda6d0f['error'][_0xc927('0x1a')]);}logger['error']('FaxAccount,\x20%s,\x20%s',_0x596a4c,_0xda6d0f[_0xc927('0x18')][_0xc927('0x1a')]);return _0x4daf8a(_0xda6d0f[_0xc927('0x18')]['message']);}else{logger[_0xc927('0x12')](_0xc927('0x13'),_0x596a4c,_0xc927('0x16'));_0x4daf8a(_0xda6d0f[_0xc927('0x1b')]['message']);}})[_0xc927('0x1c')](function(_0x428453){logger[_0xc927('0x18')]('FaxAccount,\x20%s,\x20%s',_0x596a4c,_0x428453);_0x4386fa(_0x428453);});});}exports[_0xc927('0x1d')]=function(_0x1186f2){var _0x23aac1=this;return new Promise(function(_0x35e6c0,_0x1f542c){return db[_0xc927('0x1e')][_0xc927('0x1f')]({'raw':_0x1186f2[_0xc927('0x20')]?_0x1186f2['options'][_0xc927('0x21')]===undefined?!![]:![]:!![],'where':_0x1186f2[_0xc927('0x20')]?_0x1186f2[_0xc927('0x20')][_0xc927('0x22')]||null:null,'attributes':_0x1186f2[_0xc927('0x20')]?_0x1186f2[_0xc927('0x20')][_0xc927('0x23')]||null:null,'limit':_0x1186f2['options']?_0x1186f2[_0xc927('0x20')][_0xc927('0x24')]||null:null,'include':_0x1186f2[_0xc927('0x20')]?_0x1186f2[_0xc927('0x20')][_0xc927('0x25')]?_['map'](_0x1186f2[_0xc927('0x20')][_0xc927('0x25')],function(_0x565eb0){return{'model':db[_0x565eb0[_0xc927('0x26')]],'as':_0x565eb0['as'],'attributes':_0x565eb0['attributes'],'include':_0x565eb0[_0xc927('0x25')]?_['map'](_0x565eb0[_0xc927('0x25')],function(_0x1693e8){return{'model':db[_0x1693e8[_0xc927('0x26')]],'as':_0x1693e8['as'],'attributes':_0x1693e8[_0xc927('0x23')],'include':_0x1693e8['include']?_[_0xc927('0x27')](_0x1693e8[_0xc927('0x25')],function(_0x1daad2){return{'model':db[_0x1daad2[_0xc927('0x26')]],'as':_0x1daad2['as'],'attributes':_0x1daad2['attributes']};}):[]};}):[]};}):[]:[]})[_0xc927('0x28')](function(_0x383395){logger[_0xc927('0x12')](_0xc927('0x1d'),_0x1186f2);logger[_0xc927('0x14')]('GetFaxAccount',_0x1186f2,JSON[_0xc927('0x17')](_0x383395));_0x35e6c0(_0x383395);})[_0xc927('0x1c')](function(_0x5da6cf){logger[_0xc927('0x18')](_0xc927('0x1d'),_0x5da6cf[_0xc927('0x1a')],_0x1186f2);_0x1f542c(_0x23aac1['error'](0x1f4,_0x5da6cf[_0xc927('0x1a')]));});});};exports[_0xc927('0x29')]=function(_0x59c0a7,_0xe53699,_0x2b9444){var _0x104a41=this;return new Promise(function(_0x3c98e3,_0x5881b4){var _0x348379={'body':_0x59c0a7[_0xc927('0x2a')],'channel':_0xc927('0x2b')};var _0x357a26=[];var _0x3186ea=[];var _0x377453={};return db[_0xc927('0x2c')]['describe']()['then'](function(_0x34c098){if(!_0x34c098){throw new db[(_0xc927('0x2d'))][(_0xc927('0x2e'))](_0xc927('0x2f'));}_0x357a26=_[_0xc927('0x30')](_['keys'](_0x34c098),[_0xc927('0x31'),_0xc927('0x32')]);_0x3186ea=_[_0xc927('0x30')](_['keys'](_0x34c098),[_0xc927('0x31'),'updatedAt',_0xc927('0x33'),_0xc927('0x34')]);if(_0x59c0a7[_0xc927('0x2a')]['id']){delete _0x59c0a7[_0xc927('0x2a')]['id'];}if(_[_0xc927('0x35')](_0x59c0a7[_0xc927('0x2a')][_0xc927('0x36')])){throw new db['Sequelize']['ValidationError'](_0xc927('0x37'));}if(_[_0xc927('0x35')](_0x59c0a7['body'][_0xc927('0x2a')])||_0x59c0a7[_0xc927('0x2a')][_0xc927('0x2a')]===''){throw new db[(_0xc927('0x2d'))]['ValidationError'](_0xc927('0x38'));}if(_[_0xc927('0x35')](_0x59c0a7['body'][_0xc927('0x39')])){throw new db['Sequelize'][(_0xc927('0x2e'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x3186ea);}if(!_[_0xc927('0x3a')](_0x3186ea,_0x59c0a7['body'][_0xc927('0x39')])){throw new db[(_0xc927('0x2d'))][(_0xc927('0x2e'))](_0xc927('0x3b')+_0x3186ea);}_0x377453[_0x59c0a7[_0xc927('0x2a')][_0xc927('0x39')]]=_0x59c0a7['body'][_0xc927('0x36')];})[_0xc927('0x28')](function(){return db[_0xc927('0x1e')][_0xc927('0x3c')]({'where':{'id':_0x59c0a7[_0xc927('0x3d')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0xc927('0x2c')],'as':_0xc927('0x3e'),'where':_0x377453,'limit':0x1,'order':[['updatedAt',_0xc927('0x3f')]]}]},{'model':db[_0xc927('0x40')],'as':_0xc927('0x41')}]});})['then'](function(_0x5ce6c8){if(_0x5ce6c8&&_0x5ce6c8[_0xc927('0x42')]){var _0x3c0d52=_0x5ce6c8[_0xc927('0x43')]({'plain':!![]});_0x348379['account']=_0x3c0d52;_0x348379['applications']=_0x3c0d52[_0xc927('0x41')];_0x348379[_0xc927('0x44')]=_0x3c0d52[_0xc927('0x42')];_0x348379[_0xc927('0x45')]=_[_0xc927('0x46')](_0x348379[_0xc927('0x45')],[_0xc927('0x47')],['asc']);if(_0x348379[_0xc927('0x3d')][_0xc927('0x41')]){delete _0x348379[_0xc927('0x3d')][_0xc927('0x41')];}if(_0x348379['account'][_0xc927('0x42')]&&_0x348379[_0xc927('0x3d')]['List']['Contacts']['length']){return _0x348379[_0xc927('0x3d')][_0xc927('0x42')]['Contacts'][0x0];}var _0x501391=_['defaults'](_0x59c0a7[_0xc927('0x2a')],{'firstName':_0x59c0a7[_0xc927('0x2a')][_0xc927('0x36')],'ListId':_0x3c0d52['ListId']});_0x501391[_0x59c0a7[_0xc927('0x2a')]['mapKey']]=_0x59c0a7[_0xc927('0x2a')][_0xc927('0x36')];return db[_0xc927('0x2c')][_0xc927('0x48')](_0x501391,{'fields':_0x357a26,'raw':!![]});}})['then'](function(_0x4c5493){_0x348379[_0xc927('0x49')]=_0x4c5493;if(_0x4c5493){var _0x5e092d={'ContactId':_0x4c5493['id'],'FaxAccountId':_0x59c0a7[_0xc927('0x3d')]['id'],'fax':_0x4c5493[_0xc927('0x2b')]};return db['FaxInteraction'][_0xc927('0x3c')]({'where':{'ContactId':_0x4c5493['id'],'closed':![],'FaxAccountId':_0x59c0a7[_0xc927('0x3d')]['id']}})['then'](function(_0x5c0168){if(_0x5c0168){return[_0x5c0168,![]];}return db[_0xc927('0x4a')][_0xc927('0x48')](_0x5e092d)[_0xc927('0x28')](function(_0x2622c5){return[_0x2622c5,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})['spread'](function(_0x2398e2,_0x5e7989){var _0x1af2e8=_0x2398e2[_0xc927('0x43')]({'plain':!![]});if(_0x5e7989){if(_0x348379[_0xc927('0x3d')][_0xc927('0x4b')]){_0x348379[_0xc927('0x45')][_0xc927('0x4c')]({'id':0x0,'priority':_0x348379['applications'][_0xc927('0x4d')]+0x1,'app':_0xc927('0x4e'),'appdata':_0xc927('0x4f'),'interval':_0xc927('0x50')});}_0x1af2e8['created']=!![];}else{_0x1af2e8[_0xc927('0x51')]=![];}_0x348379['interaction']=_0x1af2e8;return db['FaxMessage'][_0xc927('0x48')]({'body':_0x59c0a7[_0xc927('0x2a')][_0xc927('0x2a')],'FaxAccountId':_0x59c0a7[_0xc927('0x3d')]['id'],'FaxInteractionId':_0x2398e2['id'],'direction':'in','ContactId':_0x2398e2[_0xc927('0x52')],'AttachmentId':_0x59c0a7['body'][_0xc927('0x53')]});})['then'](function(_0x272979){_0x348379[_0xc927('0x1a')]=_0x272979;if(_0x348379['interaction'][_0xc927('0x54')]){return db['User'][_0xc927('0x3c')]({'attributes':['id',_0xc927('0x55')],'where':{'id':_0x348379[_0xc927('0x56')][_0xc927('0x54')]}})[_0xc927('0x28')](function(_0x49576f){if(_0x49576f){_0x348379[_0xc927('0x45')][_0xc927('0x57')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x49576f[_0xc927('0x55')]+','+(_0x348379[_0xc927('0x3d')]['waitForTheAssignedAgent']||0xa),'interval':_0xc927('0x50')});}return respondWithRpcPromise(_0xc927('0x58'),'startRouting',_0x348379);});}return respondWithRpcPromise(_0xc927('0x58'),_0xc927('0x59'),_0x348379);})['then'](function(_0x3aaccc){_0x3c98e3(_0x3aaccc);})[_0xc927('0x1c')](function(_0x3a417c){_0x5881b4(_0x104a41[_0xc927('0x18')](0x1f4,_0x3a417c['message']));});});};
\ No newline at end of file
+var _0xb5eb=['catch','NotifyFaxAccount','body','fax','CmContact','describe','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','from','Sequelize','from\x20is\x20mandatory','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','List','DESC','FaxApplication','Applications','get','applications','priority','Contacts','length','ListId','contact','FaxInteraction','find','create','Contact\x20not\x20found','spread','push','*,*,*,*','created','interaction','FaxMessage','ContactId','User','name','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./faxAccount.socket','register','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','FaxAccount','findAll','options','raw','where','attributes','limit','map','include','model','GetFaxAccount'];(function(_0x5b78e8,_0x55096b){var _0xf2c321=function(_0x4e0cff){while(--_0x4e0cff){_0x5b78e8['push'](_0x5b78e8['shift']());}};_0xf2c321(++_0x55096b);}(_0xb5eb,0x8f));var _0xbb5e=function(_0x3e69ed,_0xdf6fb){_0x3e69ed=_0x3e69ed-0x0;var _0x51cd84=_0xb5eb[_0x3e69ed];return _0x51cd84;};'use strict';var _=require(_0xbb5e('0x0'));var util=require(_0xbb5e('0x1'));var moment=require('moment');var BPromise=require(_0xbb5e('0x2'));var rs=require(_0xbb5e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xbb5e('0x4'));var logger=require(_0xbb5e('0x5'))(_0xbb5e('0x6'));var config=require(_0xbb5e('0x7'));var jayson=require(_0xbb5e('0x8'));var client=jayson[_0xbb5e('0x9')][_0xbb5e('0xa')]({'port':0x232c});config[_0xbb5e('0xb')]=_[_0xbb5e('0xc')](config[_0xbb5e('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xbb5e('0xd'))(new Redis(config[_0xbb5e('0xb')]));require(_0xbb5e('0xe'))[_0xbb5e('0xf')](socket);function respondWithRpcPromise(_0x2cc9ee,_0x1778e4,_0x2dded4){return new BPromise(function(_0x4f6fb8,_0xba5f55){return client[_0xbb5e('0x10')](_0x2cc9ee,_0x2dded4)[_0xbb5e('0x11')](function(_0x1cf133){logger[_0xbb5e('0x12')](_0xbb5e('0x13'),_0x1778e4,_0xbb5e('0x14'));logger[_0xbb5e('0x15')](_0xbb5e('0x16'),_0x1778e4,_0xbb5e('0x14'),JSON[_0xbb5e('0x17')](_0x1cf133));if(_0x1cf133[_0xbb5e('0x18')]){if(_0x1cf133['error'][_0xbb5e('0x19')]===0x1f4){logger['error'](_0xbb5e('0x13'),_0x1778e4,_0x1cf133[_0xbb5e('0x18')][_0xbb5e('0x1a')]);return _0xba5f55(_0x1cf133[_0xbb5e('0x18')][_0xbb5e('0x1a')]);}logger[_0xbb5e('0x18')]('FaxAccount,\x20%s,\x20%s',_0x1778e4,_0x1cf133[_0xbb5e('0x18')][_0xbb5e('0x1a')]);return _0x4f6fb8(_0x1cf133[_0xbb5e('0x18')][_0xbb5e('0x1a')]);}else{logger[_0xbb5e('0x12')]('FaxAccount,\x20%s,\x20%s',_0x1778e4,_0xbb5e('0x14'));_0x4f6fb8(_0x1cf133[_0xbb5e('0x1b')][_0xbb5e('0x1a')]);}})['catch'](function(_0x16bb98){logger[_0xbb5e('0x18')](_0xbb5e('0x13'),_0x1778e4,_0x16bb98);_0xba5f55(_0x16bb98);});});}exports['GetFaxAccount']=function(_0x1055bf){var _0x588624=this;return new Promise(function(_0x1fd581,_0x2d127e){return db[_0xbb5e('0x1c')][_0xbb5e('0x1d')]({'raw':_0x1055bf[_0xbb5e('0x1e')]?_0x1055bf[_0xbb5e('0x1e')][_0xbb5e('0x1f')]===undefined?!![]:![]:!![],'where':_0x1055bf[_0xbb5e('0x1e')]?_0x1055bf['options'][_0xbb5e('0x20')]||null:null,'attributes':_0x1055bf[_0xbb5e('0x1e')]?_0x1055bf[_0xbb5e('0x1e')][_0xbb5e('0x21')]||null:null,'limit':_0x1055bf[_0xbb5e('0x1e')]?_0x1055bf[_0xbb5e('0x1e')][_0xbb5e('0x22')]||null:null,'include':_0x1055bf[_0xbb5e('0x1e')]?_0x1055bf[_0xbb5e('0x1e')]['include']?_[_0xbb5e('0x23')](_0x1055bf[_0xbb5e('0x1e')][_0xbb5e('0x24')],function(_0x5c12d1){return{'model':db[_0x5c12d1[_0xbb5e('0x25')]],'as':_0x5c12d1['as'],'attributes':_0x5c12d1['attributes'],'include':_0x5c12d1['include']?_[_0xbb5e('0x23')](_0x5c12d1[_0xbb5e('0x24')],function(_0x58f8e9){return{'model':db[_0x58f8e9[_0xbb5e('0x25')]],'as':_0x58f8e9['as'],'attributes':_0x58f8e9[_0xbb5e('0x21')],'include':_0x58f8e9[_0xbb5e('0x24')]?_[_0xbb5e('0x23')](_0x58f8e9[_0xbb5e('0x24')],function(_0x34f14e){return{'model':db[_0x34f14e[_0xbb5e('0x25')]],'as':_0x34f14e['as'],'attributes':_0x34f14e[_0xbb5e('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x474b22){logger[_0xbb5e('0x12')](_0xbb5e('0x26'),_0x1055bf);logger[_0xbb5e('0x15')]('GetFaxAccount',_0x1055bf,JSON['stringify'](_0x474b22));_0x1fd581(_0x474b22);})[_0xbb5e('0x27')](function(_0x72d8e4){logger[_0xbb5e('0x18')](_0xbb5e('0x26'),_0x72d8e4[_0xbb5e('0x1a')],_0x1055bf);_0x2d127e(_0x588624['error'](0x1f4,_0x72d8e4[_0xbb5e('0x1a')]));});});};exports[_0xbb5e('0x28')]=function(_0xf89fc7,_0x1ca8f0,_0x1b7c81){var _0x377221=this;return new Promise(function(_0x4d491f,_0x1a2c4d){var _0x3aa756={'body':_0xf89fc7[_0xbb5e('0x29')],'channel':_0xbb5e('0x2a')};var _0x5f36a3=[];var _0x3d6798=[];var _0x43cf8c={};return db[_0xbb5e('0x2b')][_0xbb5e('0x2c')]()['then'](function(_0x203275){if(!_0x203275){throw new db['Sequelize'][(_0xbb5e('0x2d'))](_0xbb5e('0x2e'));}_0x5f36a3=_[_0xbb5e('0x2f')](_[_0xbb5e('0x30')](_0x203275),[_0xbb5e('0x31'),_0xbb5e('0x32')]);_0x3d6798=_[_0xbb5e('0x2f')](_[_0xbb5e('0x30')](_0x203275),['createdAt',_0xbb5e('0x32'),_0xbb5e('0x33'),'ListId']);if(_0xf89fc7[_0xbb5e('0x29')]['id']){delete _0xf89fc7[_0xbb5e('0x29')]['id'];}if(_['isNil'](_0xf89fc7[_0xbb5e('0x29')][_0xbb5e('0x34')])){throw new db[(_0xbb5e('0x35'))][(_0xbb5e('0x2d'))](_0xbb5e('0x36'));}if(_[_0xbb5e('0x37')](_0xf89fc7[_0xbb5e('0x29')]['body'])||_0xf89fc7[_0xbb5e('0x29')]['body']===''){throw new db[(_0xbb5e('0x35'))][(_0xbb5e('0x2d'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xbb5e('0x37')](_0xf89fc7['body'][_0xbb5e('0x38')])){throw new db[(_0xbb5e('0x35'))][(_0xbb5e('0x2d'))](_0xbb5e('0x39')+_0x3d6798);}if(!_['includes'](_0x3d6798,_0xf89fc7[_0xbb5e('0x29')][_0xbb5e('0x38')])){throw new db[(_0xbb5e('0x35'))][(_0xbb5e('0x2d'))](_0xbb5e('0x3a')+_0x3d6798);}_0x43cf8c[_0xf89fc7['body'][_0xbb5e('0x38')]]=_0xf89fc7[_0xbb5e('0x29')]['from'];})['then'](function(){return db[_0xbb5e('0x1c')]['find']({'where':{'id':_0xf89fc7[_0xbb5e('0x3b')]['id']},'include':[{'model':db[_0xbb5e('0x3c')],'as':_0xbb5e('0x3d'),'include':[{'model':db[_0xbb5e('0x2b')],'as':'Contacts','where':_0x43cf8c,'limit':0x1,'order':[[_0xbb5e('0x32'),_0xbb5e('0x3e')]]}]},{'model':db[_0xbb5e('0x3f')],'as':_0xbb5e('0x40')}]});})[_0xbb5e('0x11')](function(_0x580767){if(_0x580767&&_0x580767[_0xbb5e('0x3d')]){var _0x3eb35b=_0x580767[_0xbb5e('0x41')]({'plain':!![]});_0x3aa756['account']=_0x3eb35b;_0x3aa756['applications']=_0x3eb35b[_0xbb5e('0x40')];_0x3aa756['list']=_0x3eb35b[_0xbb5e('0x3d')];_0x3aa756[_0xbb5e('0x42')]=_['orderBy'](_0x3aa756[_0xbb5e('0x42')],[_0xbb5e('0x43')],['asc']);if(_0x3aa756[_0xbb5e('0x3b')][_0xbb5e('0x40')]){delete _0x3aa756['account'][_0xbb5e('0x40')];}if(_0x3aa756[_0xbb5e('0x3b')][_0xbb5e('0x3d')]&&_0x3aa756['account'][_0xbb5e('0x3d')][_0xbb5e('0x44')][_0xbb5e('0x45')]){return _0x3aa756[_0xbb5e('0x3b')][_0xbb5e('0x3d')][_0xbb5e('0x44')][0x0];}var _0x39c87c=_[_0xbb5e('0xc')](_0xf89fc7[_0xbb5e('0x29')],{'firstName':_0xf89fc7['body'][_0xbb5e('0x34')],'ListId':_0x3eb35b[_0xbb5e('0x46')]});_0x39c87c[_0xf89fc7['body']['mapKey']]=_0xf89fc7[_0xbb5e('0x29')][_0xbb5e('0x34')];return db[_0xbb5e('0x2b')]['create'](_0x39c87c,{'fields':_0x5f36a3,'raw':!![]});}})['then'](function(_0x3129df){_0x3aa756[_0xbb5e('0x47')]=_0x3129df;if(_0x3129df){var _0x256c05={'ContactId':_0x3129df['id'],'FaxAccountId':_0xf89fc7[_0xbb5e('0x3b')]['id'],'fax':_0x3129df[_0xbb5e('0x2a')]};return db[_0xbb5e('0x48')][_0xbb5e('0x49')]({'where':{'ContactId':_0x3129df['id'],'closed':![],'FaxAccountId':_0xf89fc7[_0xbb5e('0x3b')]['id']}})[_0xbb5e('0x11')](function(_0x25e527){if(_0x25e527){return[_0x25e527,![]];}return db[_0xbb5e('0x48')][_0xbb5e('0x4a')](_0x256c05)[_0xbb5e('0x11')](function(_0x29742b){return[_0x29742b,!![]];});});}else{throw new Error(_0xbb5e('0x4b'));}})[_0xbb5e('0x4c')](function(_0x2d90d2,_0x4c5c63){var _0x365416=_0x2d90d2[_0xbb5e('0x41')]({'plain':!![]});if(_0x4c5c63){if(_0x3aa756[_0xbb5e('0x3b')]['autoclose']){_0x3aa756['applications'][_0xbb5e('0x4d')]({'id':0x0,'priority':_0x3aa756[_0xbb5e('0x42')]['length']+0x1,'app':'close','appdata':'unmanaged','interval':_0xbb5e('0x4e')});}_0x365416[_0xbb5e('0x4f')]=!![];}else{_0x365416['created']=![];}_0x3aa756[_0xbb5e('0x50')]=_0x365416;return db[_0xbb5e('0x51')]['create']({'body':_0xf89fc7[_0xbb5e('0x29')][_0xbb5e('0x29')],'FaxAccountId':_0xf89fc7[_0xbb5e('0x3b')]['id'],'FaxInteractionId':_0x2d90d2['id'],'direction':'in','ContactId':_0x2d90d2[_0xbb5e('0x52')],'AttachmentId':_0xf89fc7['body']['AttachmentId']});})['then'](function(_0x46860f){_0x3aa756[_0xbb5e('0x1a')]=_0x46860f;if(_0x3aa756['interaction']['UserId']){return db[_0xbb5e('0x53')][_0xbb5e('0x49')]({'attributes':['id',_0xbb5e('0x54')],'where':{'id':_0x3aa756[_0xbb5e('0x50')][_0xbb5e('0x55')]}})[_0xbb5e('0x11')](function(_0x4e0e74){if(_0x4e0e74){_0x3aa756[_0xbb5e('0x42')][_0xbb5e('0x56')]({'id':0x0,'priority':0x0,'app':_0xbb5e('0x57'),'appdata':_0x4e0e74['name']+','+(_0x3aa756[_0xbb5e('0x3b')][_0xbb5e('0x58')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xbb5e('0x59'),'startRouting',_0x3aa756);});}return respondWithRpcPromise(_0xbb5e('0x59'),_0xbb5e('0x5a'),_0x3aa756);})['then'](function(_0xdc04c0){_0x4d491f(_0xdc04c0);})['catch'](function(_0x1befa8){_0x1a2c4d(_0x377221[_0xbb5e('0x18')](0x1f4,_0x1befa8['message']));});});};
\ No newline at end of file
index 45dfa76..de31897 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5480=['faxAccount:','save','remove','emit','register','length'];(function(_0x596684,_0x3e7a0a){var _0x21d272=function(_0x1223f2){while(--_0x1223f2){_0x596684['push'](_0x596684['shift']());}};_0x21d272(++_0x3e7a0a);}(_0x5480,0x13f));var _0x0548=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0x5480[_0x3635ce];return _0x97ecd0;};'use strict';var FaxAccountEvents=require('./faxAccount.events');var events=[_0x0548('0x0'),_0x0548('0x1'),'update'];function createListener(_0x6c329,_0xf6d998){return function(_0x43afdf){_0xf6d998[_0x0548('0x2')](_0x6c329,_0x43afdf);};}function removeListener(_0x2b52d1,_0xf322d3){return function(){FaxAccountEvents['removeListener'](_0x2b52d1,_0xf322d3);};}exports[_0x0548('0x3')]=function(_0x11ea1e){for(var _0xa982fb=0x0,_0x2287b6=events[_0x0548('0x4')];_0xa982fb<_0x2287b6;_0xa982fb++){var _0x519c08=events[_0xa982fb];var _0x4aa863=createListener(_0x0548('0x5')+_0x519c08,_0x11ea1e);FaxAccountEvents['on'](_0x519c08,_0x4aa863);}};
\ No newline at end of file
+var _0x5aad=['update','emit','removeListener','length','faxAccount:','./faxAccount.events','save','remove'];(function(_0xabbd2f,_0x44d05a){var _0x34a040=function(_0x3736d9){while(--_0x3736d9){_0xabbd2f['push'](_0xabbd2f['shift']());}};_0x34a040(++_0x44d05a);}(_0x5aad,0xd5));var _0xd5aa=function(_0xfb8d8,_0x33e261){_0xfb8d8=_0xfb8d8-0x0;var _0xf443aa=_0x5aad[_0xfb8d8];return _0xf443aa;};'use strict';var FaxAccountEvents=require(_0xd5aa('0x0'));var events=[_0xd5aa('0x1'),_0xd5aa('0x2'),_0xd5aa('0x3')];function createListener(_0x20065b,_0x5749c4){return function(_0x4e2918){_0x5749c4[_0xd5aa('0x4')](_0x20065b,_0x4e2918);};}function removeListener(_0x428fd7,_0x359303){return function(){FaxAccountEvents[_0xd5aa('0x5')](_0x428fd7,_0x359303);};}exports['register']=function(_0x205ad4){for(var _0x11f2a1=0x0,_0x39086f=events[_0xd5aa('0x6')];_0x11f2a1<_0x39086f;_0x11f2a1++){var _0x3b58ba=events[_0x11f2a1];var _0x462b71=createListener(_0xd5aa('0x7')+_0x3b58ba,_0x205ad4);FaxAccountEvents['on'](_0x3b58ba,_0x462b71);}};
\ No newline at end of file
index f981ce9..7bb6930 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','index','/describe','show','/:id/dispositions','isAuthenticated','getDispositions','/:id/interactions','getInteractions','/:id/applications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addInteraction','addApplications','addAccountApplications','/updateaccountapplications','/:id/send','send','addAgents','put','/:id','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path'];(function(_0x31e66f,_0xe96570){var _0x1a57b2=function(_0x4528b4){while(--_0x4528b4){_0x31e66f['push'](_0x31e66f['shift']());}};_0x1a57b2(++_0xe96570);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0xa9e0[_0x3e112d];return _0x531c31;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','index','/describe','show','/:id/dispositions','isAuthenticated','getDispositions','/:id/interactions','getInteractions','/:id/applications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addInteraction','addApplications','addAccountApplications','/updateaccountapplications','/:id/send','send','addAgents','put','/:id','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path'];(function(_0x3ad462,_0x363c0d){var _0x4c721b=function(_0x11a62f){while(--_0x11a62f){_0x3ad462['push'](_0x3ad462['shift']());}};_0x4c721b(++_0x363c0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xa9e0[_0xf50820];return _0x2a9b10;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
index aa0968c..d46df3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cf5=['*,*,*,*','STRING','TEXT'];(function(_0x248f88,_0x2f30b0){var _0x5bf559=function(_0x40a2e8){while(--_0x40a2e8){_0x248f88['push'](_0x248f88['shift']());}};_0x5bf559(++_0x2f30b0);}(_0x3cf5,0x97));var _0x53cf=function(_0x59aeb3,_0x32f513){_0x59aeb3=_0x59aeb3-0x0;var _0x3c6521=_0x3cf5[_0x59aeb3];return _0x3c6521;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x53cf('0x0')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x53cf('0x1')]()},'description':{'type':Sequelize[_0x53cf('0x0')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x53cf('0x2')}};
\ No newline at end of file
+var _0x36ef=['*,*,*,*','sequelize','exports','STRING','noop','TEXT'];(function(_0xb7504e,_0x5a1bc6){var _0xd9de35=function(_0x529179){while(--_0x529179){_0xb7504e['push'](_0xb7504e['shift']());}};_0xd9de35(++_0x5a1bc6);}(_0x36ef,0x1bd));var _0xf36e=function(_0x4df15b,_0x29002d){_0x4df15b=_0x4df15b-0x0;var _0x66f80e=_0x36ef[_0x4df15b];return _0x66f80e;};'use strict';var Sequelize=require(_0xf36e('0x0'));module[_0xf36e('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xf36e('0x2')],'allowNull':![],'defaultValue':_0xf36e('0x3')},'appdata':{'type':Sequelize[_0xf36e('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xf36e('0x2')],'defaultValue':_0xf36e('0x5')}};
\ No newline at end of file
index 0e7ddf3..bc7d52e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb566=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','apply','update','then','destroy','end','sendStatus','error','stack','name','index','map','FaxApplication','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','params','find','catch','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xb566,0x7e));var _0x6b56=function(_0x21aec3,_0x5c97e9){_0x21aec3=_0x21aec3-0x0;var _0x288bbc=_0xb566[_0x21aec3];return _0x288bbc;};'use strict';var emlformat=require(_0x6b56('0x0'));var rimraf=require(_0x6b56('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6b56('0x2'));var rp=require(_0x6b56('0x3'));var moment=require(_0x6b56('0x4'));var BPromise=require(_0x6b56('0x5'));var Mustache=require('mustache');var util=require(_0x6b56('0x6'));var path=require('path');var sox=require(_0x6b56('0x7'));var csv=require(_0x6b56('0x8'));var ejs=require(_0x6b56('0x9'));var fs=require('fs');var fs_extra=require(_0x6b56('0xa'));var _=require(_0x6b56('0xb'));var squel=require(_0x6b56('0xc'));var crypto=require(_0x6b56('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6b56('0xe'));var toCsv=require(_0x6b56('0x8'));var querystring=require(_0x6b56('0xf'));var Papa=require(_0x6b56('0x10'));var Redis=require(_0x6b56('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x6b56('0x12'));var as=require(_0x6b56('0x13'));var hardwareService=require(_0x6b56('0x14'));var logger=require(_0x6b56('0x15'))(_0x6b56('0x16'));var utils=require('../../config/utils');var config=require(_0x6b56('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x6b56('0x18'))['db'];function respondWithStatusCode(_0x483bf0,_0x31332a){_0x31332a=_0x31332a||0xcc;return function(_0x35244b){if(_0x35244b){return _0x483bf0['sendStatus'](_0x31332a);}return _0x483bf0[_0x6b56('0x19')](_0x31332a)['end']();};}function respondWithResult(_0xc765fb,_0x53e6f4){_0x53e6f4=_0x53e6f4||0xc8;return function(_0x1ed444){if(_0x1ed444){return _0xc765fb['status'](_0x53e6f4)[_0x6b56('0x1a')](_0x1ed444);}};}function respondWithFilteredResult(_0x5db2a8,_0x28be31){return function(_0x43a7e6){if(_0x43a7e6){var _0x136271=typeof _0x28be31[_0x6b56('0x1b')]===_0x6b56('0x1c')&&typeof _0x28be31[_0x6b56('0x1d')]===_0x6b56('0x1c');var _0x1b9d21=_0x43a7e6[_0x6b56('0x1e')];var _0x4911ae=_0x136271?0x0:_0x28be31[_0x6b56('0x1b')];var _0x5e1259=_0x136271?_0x43a7e6[_0x6b56('0x1e')]:_0x28be31[_0x6b56('0x1b')]+_0x28be31[_0x6b56('0x1d')];var _0x2a7b0b;if(_0x5e1259>=_0x1b9d21){_0x5e1259=_0x1b9d21;_0x2a7b0b=0xc8;}else{_0x2a7b0b=0xce;}_0x5db2a8[_0x6b56('0x19')](_0x2a7b0b);return _0x5db2a8['set']('Content-Range',_0x4911ae+'-'+_0x5e1259+'/'+_0x1b9d21)[_0x6b56('0x1a')](_0x43a7e6);}return null;};}function patchUpdates(_0xfe3cfb){return function(_0x5a7ed0){try{jsonpatch[_0x6b56('0x1f')](_0x5a7ed0,_0xfe3cfb,!![]);}catch(_0x44d906){return BPromise['reject'](_0x44d906);}return _0x5a7ed0['save']();};}function saveUpdates(_0x276600,_0x4a1f9a){return function(_0x199329){if(_0x199329){return _0x199329[_0x6b56('0x20')](_0x276600)[_0x6b56('0x21')](function(_0x469b39){return _0x469b39;});}return null;};}function removeEntity(_0x319db8,_0xb2c86c){return function(_0x4df468){if(_0x4df468){return _0x4df468[_0x6b56('0x22')]()[_0x6b56('0x21')](function(){_0x319db8['status'](0xcc)[_0x6b56('0x23')]();});}};}function handleEntityNotFound(_0x4a58d5,_0x44f15c){return function(_0x191892){if(!_0x191892){_0x4a58d5[_0x6b56('0x24')](0x194);}return _0x191892;};}function handleError(_0x1a097c,_0x4c9d4d){_0x4c9d4d=_0x4c9d4d||0x1f4;return function(_0x59be2e){logger[_0x6b56('0x25')](_0x59be2e[_0x6b56('0x26')]);if(_0x59be2e[_0x6b56('0x27')]){delete _0x59be2e['name'];}_0x1a097c[_0x6b56('0x19')](_0x4c9d4d)['send'](_0x59be2e);};}exports[_0x6b56('0x28')]=function(_0x3abf6e,_0x3ea922){var _0x77bda0={},_0x4992ed={},_0x56f309={'count':0x0,'rows':[]};var _0x439162=_[_0x6b56('0x29')](db[_0x6b56('0x2a')][_0x6b56('0x2b')],function(_0x51ecb2){return{'name':_0x51ecb2[_0x6b56('0x2c')],'type':_0x51ecb2['type']['key']};});_0x4992ed[_0x6b56('0x2d')]=_[_0x6b56('0x29')](_0x439162,_0x6b56('0x27'));_0x4992ed[_0x6b56('0x2e')]=_[_0x6b56('0x2f')](_0x3abf6e[_0x6b56('0x2e')]);_0x4992ed[_0x6b56('0x30')]=_[_0x6b56('0x31')](_0x4992ed[_0x6b56('0x2d')],_0x4992ed['query']);_0x77bda0[_0x6b56('0x32')]=_[_0x6b56('0x31')](_0x4992ed['model'],qs[_0x6b56('0x33')](_0x3abf6e['query'][_0x6b56('0x33')]));_0x77bda0[_0x6b56('0x32')]=_0x77bda0[_0x6b56('0x32')][_0x6b56('0x34')]?_0x77bda0['attributes']:_0x4992ed['model'];if(!_0x3abf6e['query'][_0x6b56('0x35')](_0x6b56('0x36'))){_0x77bda0[_0x6b56('0x1d')]=qs['limit'](_0x3abf6e['query'][_0x6b56('0x1d')]);_0x77bda0[_0x6b56('0x1b')]=qs[_0x6b56('0x1b')](_0x3abf6e[_0x6b56('0x2e')][_0x6b56('0x1b')]);}_0x77bda0[_0x6b56('0x37')]=qs['sort'](_0x3abf6e['query']['sort']);_0x77bda0[_0x6b56('0x38')]=qs[_0x6b56('0x30')](_[_0x6b56('0x39')](_0x3abf6e[_0x6b56('0x2e')],_0x4992ed[_0x6b56('0x30')]),_0x439162);if(_0x3abf6e[_0x6b56('0x2e')][_0x6b56('0x3a')]){_0x77bda0['where']=_['merge'](_0x77bda0[_0x6b56('0x38')],{'$or':_['map'](_0x439162,function(_0x3ecc11){if(_0x3ecc11[_0x6b56('0x3b')]!==_0x6b56('0x3c')){var _0x52d77d={};_0x52d77d[_0x3ecc11[_0x6b56('0x27')]]={'$like':'%'+_0x3abf6e[_0x6b56('0x2e')][_0x6b56('0x3a')]+'%'};return _0x52d77d;}})});}_0x77bda0=_[_0x6b56('0x3d')]({},_0x77bda0,_0x3abf6e[_0x6b56('0x3e')]);var _0x3e83ad={'where':_0x77bda0[_0x6b56('0x38')]};return db[_0x6b56('0x2a')]['count'](_0x3e83ad)[_0x6b56('0x21')](function(_0x43b6c7){_0x56f309[_0x6b56('0x1e')]=_0x43b6c7;if(_0x3abf6e[_0x6b56('0x2e')][_0x6b56('0x3f')]){_0x77bda0[_0x6b56('0x40')]=[{'all':!![]}];}return db[_0x6b56('0x2a')][_0x6b56('0x41')](_0x77bda0);})['then'](function(_0x2c2419){_0x56f309[_0x6b56('0x42')]=_0x2c2419;return _0x56f309;})[_0x6b56('0x21')](respondWithFilteredResult(_0x3ea922,_0x77bda0))['catch'](handleError(_0x3ea922,null));};exports['show']=function(_0x45280e,_0xcf72f4){var _0x2bfd80={'raw':!![],'where':{'id':_0x45280e[_0x6b56('0x43')]['id']}},_0x5dcaab={};_0x5dcaab['model']=_[_0x6b56('0x2f')](db[_0x6b56('0x2a')][_0x6b56('0x2b')]);_0x5dcaab[_0x6b56('0x2e')]=_[_0x6b56('0x2f')](_0x45280e[_0x6b56('0x2e')]);_0x5dcaab[_0x6b56('0x30')]=_[_0x6b56('0x31')](_0x5dcaab['model'],_0x5dcaab[_0x6b56('0x2e')]);_0x2bfd80['attributes']=_[_0x6b56('0x31')](_0x5dcaab[_0x6b56('0x2d')],qs[_0x6b56('0x33')](_0x45280e[_0x6b56('0x2e')]['fields']));_0x2bfd80[_0x6b56('0x32')]=_0x2bfd80[_0x6b56('0x32')]['length']?_0x2bfd80[_0x6b56('0x32')]:_0x5dcaab[_0x6b56('0x2d')];if(_0x45280e['query'][_0x6b56('0x3f')]){_0x2bfd80[_0x6b56('0x40')]=[{'all':!![]}];}_0x2bfd80=_[_0x6b56('0x3d')]({},_0x2bfd80,_0x45280e['options']);return db[_0x6b56('0x2a')][_0x6b56('0x44')](_0x2bfd80)[_0x6b56('0x21')](handleEntityNotFound(_0xcf72f4,null))[_0x6b56('0x21')](respondWithResult(_0xcf72f4,null))[_0x6b56('0x45')](handleError(_0xcf72f4,null));};exports['create']=function(_0x5c844e,_0x5224ef){return db[_0x6b56('0x2a')][_0x6b56('0x46')](_0x5c844e['body'],{})[_0x6b56('0x21')](respondWithResult(_0x5224ef,0xc9))[_0x6b56('0x45')](handleError(_0x5224ef,null));};exports[_0x6b56('0x20')]=function(_0x90c2c2,_0x1cc7bd){if(_0x90c2c2['body']['id']){delete _0x90c2c2['body']['id'];}return db[_0x6b56('0x2a')][_0x6b56('0x44')]({'where':{'id':_0x90c2c2[_0x6b56('0x43')]['id']}})[_0x6b56('0x21')](handleEntityNotFound(_0x1cc7bd,null))[_0x6b56('0x21')](saveUpdates(_0x90c2c2[_0x6b56('0x47')],null))[_0x6b56('0x21')](respondWithResult(_0x1cc7bd,null))['catch'](handleError(_0x1cc7bd,null));};exports['destroy']=function(_0xf50005,_0x3db4cb){return db[_0x6b56('0x2a')]['find']({'where':{'id':_0xf50005[_0x6b56('0x43')]['id']}})['then'](handleEntityNotFound(_0x3db4cb,null))['then'](removeEntity(_0x3db4cb,null))[_0x6b56('0x45')](handleError(_0x3db4cb,null));};
\ No newline at end of file
+var _0x41ca=['order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','rows','show','include','find','create','body','catch','params','eml-format','rimraf','request-promise','moment','mustache','path','ejs','lodash','squel','jsforce','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','limit','count','offset','set','apply','reject','save','update','then','destroy','end','name','send','index','map','FaxApplication','rawAttributes','fieldName','key','model','keys','filters','intersection','query','fields','attributes','length','nolimit'];(function(_0x23b57c,_0xdc7f98){var _0x4c3b1d=function(_0x283147){while(--_0x283147){_0x23b57c['push'](_0x23b57c['shift']());}};_0x4c3b1d(++_0xdc7f98);}(_0x41ca,0x122));var _0xa41c=function(_0x22ec93,_0x1ca9e8){_0x22ec93=_0x22ec93-0x0;var _0xcbfae=_0x41ca[_0x22ec93];return _0xcbfae;};'use strict';var emlformat=require(_0xa41c('0x0'));var rimraf=require(_0xa41c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa41c('0x2'));var moment=require(_0xa41c('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa41c('0x4'));var util=require('util');var path=require(_0xa41c('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa41c('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa41c('0x7'));var squel=require(_0xa41c('0x8'));var crypto=require('crypto');var jsforce=require(_0xa41c('0x9'));var deskjs=require(_0xa41c('0xa'));var toCsv=require(_0xa41c('0xb'));var querystring=require('querystring');var Papa=require(_0xa41c('0xc'));var Redis=require('ioredis');var authService=require(_0xa41c('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xa41c('0xe'));var hardwareService=require(_0xa41c('0xf'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xa41c('0x10'));var licenseUtil=require(_0xa41c('0x11'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5435ce,_0x509ae5){_0x509ae5=_0x509ae5||0xcc;return function(_0x1892dd){if(_0x1892dd){return _0x5435ce[_0xa41c('0x12')](_0x509ae5);}return _0x5435ce[_0xa41c('0x13')](_0x509ae5)['end']();};}function respondWithResult(_0x14c449,_0x1cf4fc){_0x1cf4fc=_0x1cf4fc||0xc8;return function(_0x19b2f1){if(_0x19b2f1){return _0x14c449[_0xa41c('0x13')](_0x1cf4fc)[_0xa41c('0x14')](_0x19b2f1);}};}function respondWithFilteredResult(_0x229b54,_0x35deb9){return function(_0x39d571){if(_0x39d571){var _0x472674=typeof _0x35deb9['offset']===_0xa41c('0x15')&&typeof _0x35deb9[_0xa41c('0x16')]===_0xa41c('0x15');var _0x18bf1e=_0x39d571[_0xa41c('0x17')];var _0x2980be=_0x472674?0x0:_0x35deb9['offset'];var _0x3e87c5=_0x472674?_0x39d571[_0xa41c('0x17')]:_0x35deb9[_0xa41c('0x18')]+_0x35deb9[_0xa41c('0x16')];var _0x400ac8;if(_0x3e87c5>=_0x18bf1e){_0x3e87c5=_0x18bf1e;_0x400ac8=0xc8;}else{_0x400ac8=0xce;}_0x229b54[_0xa41c('0x13')](_0x400ac8);return _0x229b54[_0xa41c('0x19')]('Content-Range',_0x2980be+'-'+_0x3e87c5+'/'+_0x18bf1e)[_0xa41c('0x14')](_0x39d571);}return null;};}function patchUpdates(_0x45aa19){return function(_0x5e11a5){try{jsonpatch[_0xa41c('0x1a')](_0x5e11a5,_0x45aa19,!![]);}catch(_0x72de6e){return BPromise[_0xa41c('0x1b')](_0x72de6e);}return _0x5e11a5[_0xa41c('0x1c')]();};}function saveUpdates(_0x42c078,_0x210659){return function(_0x4b32aa){if(_0x4b32aa){return _0x4b32aa[_0xa41c('0x1d')](_0x42c078)[_0xa41c('0x1e')](function(_0x530dab){return _0x530dab;});}return null;};}function removeEntity(_0x11a668,_0x1a0c4a){return function(_0x4c5f48){if(_0x4c5f48){return _0x4c5f48[_0xa41c('0x1f')]()['then'](function(){_0x11a668[_0xa41c('0x13')](0xcc)[_0xa41c('0x20')]();});}};}function handleEntityNotFound(_0x499a01,_0xf8881e){return function(_0x1fbd1e){if(!_0x1fbd1e){_0x499a01['sendStatus'](0x194);}return _0x1fbd1e;};}function handleError(_0x2aa4ee,_0x312f5c){_0x312f5c=_0x312f5c||0x1f4;return function(_0xa087eb){logger['error'](_0xa087eb['stack']);if(_0xa087eb['name']){delete _0xa087eb[_0xa41c('0x21')];}_0x2aa4ee[_0xa41c('0x13')](_0x312f5c)[_0xa41c('0x22')](_0xa087eb);};}exports[_0xa41c('0x23')]=function(_0x23b3e0,_0x1f961d){var _0x3798fe={},_0x539604={},_0x141826={'count':0x0,'rows':[]};var _0xdca385=_[_0xa41c('0x24')](db[_0xa41c('0x25')][_0xa41c('0x26')],function(_0x424df7){return{'name':_0x424df7[_0xa41c('0x27')],'type':_0x424df7['type'][_0xa41c('0x28')]};});_0x539604[_0xa41c('0x29')]=_['map'](_0xdca385,_0xa41c('0x21'));_0x539604['query']=_[_0xa41c('0x2a')](_0x23b3e0['query']);_0x539604[_0xa41c('0x2b')]=_[_0xa41c('0x2c')](_0x539604[_0xa41c('0x29')],_0x539604[_0xa41c('0x2d')]);_0x3798fe['attributes']=_['intersection'](_0x539604['model'],qs[_0xa41c('0x2e')](_0x23b3e0[_0xa41c('0x2d')][_0xa41c('0x2e')]));_0x3798fe[_0xa41c('0x2f')]=_0x3798fe[_0xa41c('0x2f')][_0xa41c('0x30')]?_0x3798fe[_0xa41c('0x2f')]:_0x539604[_0xa41c('0x29')];if(!_0x23b3e0[_0xa41c('0x2d')]['hasOwnProperty'](_0xa41c('0x31'))){_0x3798fe['limit']=qs['limit'](_0x23b3e0[_0xa41c('0x2d')][_0xa41c('0x16')]);_0x3798fe[_0xa41c('0x18')]=qs[_0xa41c('0x18')](_0x23b3e0[_0xa41c('0x2d')][_0xa41c('0x18')]);}_0x3798fe[_0xa41c('0x32')]=qs[_0xa41c('0x33')](_0x23b3e0[_0xa41c('0x2d')][_0xa41c('0x33')]);_0x3798fe[_0xa41c('0x34')]=qs[_0xa41c('0x2b')](_[_0xa41c('0x35')](_0x23b3e0[_0xa41c('0x2d')],_0x539604[_0xa41c('0x2b')]),_0xdca385);if(_0x23b3e0[_0xa41c('0x2d')][_0xa41c('0x36')]){_0x3798fe[_0xa41c('0x34')]=_[_0xa41c('0x37')](_0x3798fe[_0xa41c('0x34')],{'$or':_[_0xa41c('0x24')](_0xdca385,function(_0x712638){if(_0x712638[_0xa41c('0x38')]!==_0xa41c('0x39')){var _0xdf7e12={};_0xdf7e12[_0x712638[_0xa41c('0x21')]]={'$like':'%'+_0x23b3e0[_0xa41c('0x2d')][_0xa41c('0x36')]+'%'};return _0xdf7e12;}})});}_0x3798fe=_[_0xa41c('0x37')]({},_0x3798fe,_0x23b3e0[_0xa41c('0x3a')]);var _0x590735={'where':_0x3798fe[_0xa41c('0x34')]};return db[_0xa41c('0x25')]['count'](_0x590735)[_0xa41c('0x1e')](function(_0x773be5){_0x141826[_0xa41c('0x17')]=_0x773be5;if(_0x23b3e0[_0xa41c('0x2d')][_0xa41c('0x3b')]){_0x3798fe['include']=[{'all':!![]}];}return db['FaxApplication']['findAll'](_0x3798fe);})[_0xa41c('0x1e')](function(_0x35e421){_0x141826[_0xa41c('0x3c')]=_0x35e421;return _0x141826;})['then'](respondWithFilteredResult(_0x1f961d,_0x3798fe))['catch'](handleError(_0x1f961d,null));};exports[_0xa41c('0x3d')]=function(_0x4534d2,_0x50e9eb){var _0x305622={'raw':!![],'where':{'id':_0x4534d2['params']['id']}},_0x2d21be={};_0x2d21be[_0xa41c('0x29')]=_[_0xa41c('0x2a')](db[_0xa41c('0x25')]['rawAttributes']);_0x2d21be[_0xa41c('0x2d')]=_['keys'](_0x4534d2[_0xa41c('0x2d')]);_0x2d21be[_0xa41c('0x2b')]=_[_0xa41c('0x2c')](_0x2d21be['model'],_0x2d21be[_0xa41c('0x2d')]);_0x305622['attributes']=_[_0xa41c('0x2c')](_0x2d21be[_0xa41c('0x29')],qs[_0xa41c('0x2e')](_0x4534d2['query'][_0xa41c('0x2e')]));_0x305622[_0xa41c('0x2f')]=_0x305622[_0xa41c('0x2f')][_0xa41c('0x30')]?_0x305622[_0xa41c('0x2f')]:_0x2d21be[_0xa41c('0x29')];if(_0x4534d2[_0xa41c('0x2d')]['includeAll']){_0x305622[_0xa41c('0x3e')]=[{'all':!![]}];}_0x305622=_[_0xa41c('0x37')]({},_0x305622,_0x4534d2[_0xa41c('0x3a')]);return db[_0xa41c('0x25')][_0xa41c('0x3f')](_0x305622)[_0xa41c('0x1e')](handleEntityNotFound(_0x50e9eb,null))[_0xa41c('0x1e')](respondWithResult(_0x50e9eb,null))['catch'](handleError(_0x50e9eb,null));};exports[_0xa41c('0x40')]=function(_0x4ed8cb,_0x49c2cf){return db[_0xa41c('0x25')][_0xa41c('0x40')](_0x4ed8cb[_0xa41c('0x41')],{})[_0xa41c('0x1e')](respondWithResult(_0x49c2cf,0xc9))[_0xa41c('0x42')](handleError(_0x49c2cf,null));};exports['update']=function(_0xe4a510,_0x5eb193){if(_0xe4a510[_0xa41c('0x41')]['id']){delete _0xe4a510[_0xa41c('0x41')]['id'];}return db[_0xa41c('0x25')][_0xa41c('0x3f')]({'where':{'id':_0xe4a510[_0xa41c('0x43')]['id']}})[_0xa41c('0x1e')](handleEntityNotFound(_0x5eb193,null))[_0xa41c('0x1e')](saveUpdates(_0xe4a510['body'],null))[_0xa41c('0x1e')](respondWithResult(_0x5eb193,null))[_0xa41c('0x42')](handleError(_0x5eb193,null));};exports[_0xa41c('0x1f')]=function(_0x1ec989,_0xbf2dbf){return db['FaxApplication'][_0xa41c('0x3f')]({'where':{'id':_0x1ec989['params']['id']}})[_0xa41c('0x1e')](handleEntityNotFound(_0xbf2dbf,null))['then'](removeEntity(_0xbf2dbf,null))[_0xa41c('0x42')](handleError(_0xbf2dbf,null));};
\ No newline at end of file
index ba41ef2..992c363 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa314=['api','bluebird','path','rimraf','../../config/environment','./faxApplication.attributes','define','fax_applications','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x303466,_0x155156){var _0x5e266b=function(_0x3c67dd){while(--_0x3c67dd){_0x303466['push'](_0x303466['shift']());}};_0x5e266b(++_0x155156);}(_0xa314,0x112));var _0x4a31=function(_0x3d5f84,_0x569548){_0x3d5f84=_0x3d5f84-0x0;var _0x1981b8=_0xa314[_0x3d5f84];return _0x1981b8;};'use strict';var _=require(_0x4a31('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x4a31('0x1'));var moment=require('moment');var BPromise=require(_0x4a31('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4a31('0x3'));var rimraf=require(_0x4a31('0x4'));var config=require(_0x4a31('0x5'));var attributes=require(_0x4a31('0x6'));module['exports']=function(_0x1f7c3a,_0x21d463){return _0x1f7c3a[_0x4a31('0x7')]('FaxApplication',attributes,{'tableName':_0x4a31('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4a31('0x9'),'collate':_0x4a31('0xa')});};
\ No newline at end of file
+var _0xd76f=['lodash','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./faxApplication.attributes','define','FaxApplication','fax_applications','utf8mb4','utf8mb4_unicode_ci'];(function(_0x385ffe,_0x32332e){var _0x1f2b68=function(_0x4333a8){while(--_0x4333a8){_0x385ffe['push'](_0x385ffe['shift']());}};_0x1f2b68(++_0x32332e);}(_0xd76f,0x12b));var _0xfd76=function(_0x483017,_0x73092c){_0x483017=_0x483017-0x0;var _0x3cc794=_0xd76f[_0x483017];return _0x3cc794;};'use strict';var _=require(_0xfd76('0x0'));var util=require('util');var logger=require(_0xfd76('0x1'))('api');var moment=require(_0xfd76('0x2'));var BPromise=require(_0xfd76('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfd76('0x4'));var rimraf=require(_0xfd76('0x5'));var config=require(_0xfd76('0x6'));var attributes=require(_0xfd76('0x7'));module['exports']=function(_0x3e78ff,_0x26092d){return _0x3e78ff[_0xfd76('0x8')](_0xfd76('0x9'),attributes,{'tableName':_0xfd76('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xfd76('0xb'),'collate':_0xfd76('0xc')});};
\ No newline at end of file
index c669f26..f0217ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5719=['request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','FaxApplication,\x20%s,\x20%s','message','result','body','options','raw','where','limit','UpdateFaxApplication','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info'];(function(_0x577814,_0x1ce63f){var _0x3fdca3=function(_0xadbdd4){while(--_0xadbdd4){_0x577814['push'](_0x577814['shift']());}};_0x3fdca3(++_0x1ce63f);}(_0x5719,0x101));var _0x9571=function(_0x3d0e93,_0x39644b){_0x3d0e93=_0x3d0e93-0x0;var _0xd6a34f=_0x5719[_0x3d0e93];return _0xd6a34f;};'use strict';var _=require('lodash');var util=require(_0x9571('0x0'));var moment=require(_0x9571('0x1'));var BPromise=require(_0x9571('0x2'));var rs=require(_0x9571('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9571('0x4'))['db'];var utils=require(_0x9571('0x5'));var logger=require('../../config/logger')(_0x9571('0x6'));var config=require('../../config/environment');var jayson=require(_0x9571('0x7'));var client=jayson[_0x9571('0x8')][_0x9571('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x351558,_0x2f369b,_0x185f62){return new BPromise(function(_0x244612,_0x4d071d){return client[_0x9571('0xa')](_0x351558,_0x185f62)[_0x9571('0xb')](function(_0x1f8a7e){logger[_0x9571('0xc')]('FaxApplication,\x20%s,\x20%s',_0x2f369b,_0x9571('0xd'));logger[_0x9571('0xe')](_0x9571('0xf'),_0x2f369b,'request\x20sent',JSON[_0x9571('0x10')](_0x1f8a7e));if(_0x1f8a7e[_0x9571('0x11')]){if(_0x1f8a7e[_0x9571('0x11')]['code']===0x1f4){logger[_0x9571('0x11')](_0x9571('0x12'),_0x2f369b,_0x1f8a7e[_0x9571('0x11')]['message']);return _0x4d071d(_0x1f8a7e[_0x9571('0x11')][_0x9571('0x13')]);}logger[_0x9571('0x11')](_0x9571('0x12'),_0x2f369b,_0x1f8a7e['error']['message']);return _0x244612(_0x1f8a7e['error']['message']);}else{logger['info'](_0x9571('0x12'),_0x2f369b,'request\x20sent');_0x244612(_0x1f8a7e[_0x9571('0x14')][_0x9571('0x13')]);}})['catch'](function(_0x3f3f06){logger[_0x9571('0x11')](_0x9571('0x12'),_0x2f369b,_0x3f3f06);_0x4d071d(_0x3f3f06);});});}exports['UpdateFaxApplication']=function(_0x41a738){var _0x4005da=this;return new Promise(function(_0x3df693,_0x30bc9b){return db['FaxApplication']['update'](_0x41a738[_0x9571('0x15')],{'raw':_0x41a738[_0x9571('0x16')]?_0x41a738[_0x9571('0x16')][_0x9571('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x41a738[_0x9571('0x16')]?_0x41a738[_0x9571('0x16')][_0x9571('0x18')]||null:null,'attributes':_0x41a738[_0x9571('0x16')]?_0x41a738['options']['attributes']||null:null,'limit':_0x41a738[_0x9571('0x16')]?_0x41a738[_0x9571('0x16')][_0x9571('0x19')]||null:null})[_0x9571('0xb')](function(_0x230e90){logger[_0x9571('0xc')](_0x9571('0x1a'),_0x41a738);logger[_0x9571('0xe')](_0x9571('0x1a'),_0x41a738,JSON[_0x9571('0x10')](_0x230e90));_0x3df693(_0x230e90);})['catch'](function(_0x3b192f){logger[_0x9571('0x11')](_0x9571('0x1a'),_0x3b192f[_0x9571('0x13')],_0x41a738);_0x30bc9b(_0x4005da[_0x9571('0x11')](0x1f4,_0x3b192f[_0x9571('0x13')]));});});};
\ No newline at end of file
+var _0xef2d=['options','raw','where','attributes','debug','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','info','FaxApplication,\x20%s,\x20%s','request\x20sent','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateFaxApplication','FaxApplication','update','body'];(function(_0xcda377,_0x1e2678){var _0x1c024f=function(_0x1aeb61){while(--_0x1aeb61){_0xcda377['push'](_0xcda377['shift']());}};_0x1c024f(++_0x1e2678);}(_0xef2d,0x16d));var _0xdef2=function(_0xf94f1c,_0x18a521){_0xf94f1c=_0xf94f1c-0x0;var _0x33567d=_0xef2d[_0xf94f1c];return _0x33567d;};'use strict';var _=require(_0xdef2('0x0'));var util=require(_0xdef2('0x1'));var moment=require(_0xdef2('0x2'));var BPromise=require(_0xdef2('0x3'));var rs=require(_0xdef2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdef2('0x5'))['db'];var utils=require(_0xdef2('0x6'));var logger=require(_0xdef2('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xdef2('0x8'));var client=jayson[_0xdef2('0x9')][_0xdef2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2efeb2,_0x5622a9,_0xe3a4e5){return new BPromise(function(_0x1f44aa,_0x41cb46){return client['request'](_0x2efeb2,_0xe3a4e5)['then'](function(_0xbc12a4){logger[_0xdef2('0xb')](_0xdef2('0xc'),_0x5622a9,_0xdef2('0xd'));logger['debug'](_0xdef2('0xe'),_0x5622a9,'request\x20sent',JSON[_0xdef2('0xf')](_0xbc12a4));if(_0xbc12a4[_0xdef2('0x10')]){if(_0xbc12a4['error'][_0xdef2('0x11')]===0x1f4){logger[_0xdef2('0x10')](_0xdef2('0xc'),_0x5622a9,_0xbc12a4[_0xdef2('0x10')][_0xdef2('0x12')]);return _0x41cb46(_0xbc12a4[_0xdef2('0x10')]['message']);}logger[_0xdef2('0x10')]('FaxApplication,\x20%s,\x20%s',_0x5622a9,_0xbc12a4[_0xdef2('0x10')][_0xdef2('0x12')]);return _0x1f44aa(_0xbc12a4[_0xdef2('0x10')][_0xdef2('0x12')]);}else{logger[_0xdef2('0xb')]('FaxApplication,\x20%s,\x20%s',_0x5622a9,_0xdef2('0xd'));_0x1f44aa(_0xbc12a4[_0xdef2('0x13')][_0xdef2('0x12')]);}})[_0xdef2('0x14')](function(_0x4bc3fb){logger[_0xdef2('0x10')](_0xdef2('0xc'),_0x5622a9,_0x4bc3fb);_0x41cb46(_0x4bc3fb);});});}exports[_0xdef2('0x15')]=function(_0x1aef0e){var _0x51703f=this;return new Promise(function(_0x40c2bc,_0x3cd630){return db[_0xdef2('0x16')][_0xdef2('0x17')](_0x1aef0e[_0xdef2('0x18')],{'raw':_0x1aef0e[_0xdef2('0x19')]?_0x1aef0e['options'][_0xdef2('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1aef0e['options']?_0x1aef0e[_0xdef2('0x19')][_0xdef2('0x1b')]||null:null,'attributes':_0x1aef0e[_0xdef2('0x19')]?_0x1aef0e['options'][_0xdef2('0x1c')]||null:null,'limit':_0x1aef0e['options']?_0x1aef0e[_0xdef2('0x19')]['limit']||null:null})['then'](function(_0xe595d1){logger[_0xdef2('0xb')](_0xdef2('0x15'),_0x1aef0e);logger[_0xdef2('0x1d')](_0xdef2('0x15'),_0x1aef0e,JSON[_0xdef2('0xf')](_0xe595d1));_0x40c2bc(_0xe595d1);})[_0xdef2('0x14')](function(_0x511b35){logger[_0xdef2('0x10')](_0xdef2('0x15'),_0x511b35[_0xdef2('0x12')],_0x1aef0e);_0x3cd630(_0x51703f[_0xdef2('0x10')](0x1f4,_0x511b35[_0xdef2('0x12')]));});});};
\ No newline at end of file
index ee9a415..378f074 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9348=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./faxApplication.controller','get','isAuthenticated','index','show','post','delete','/:id','destroy','exports','multer'];(function(_0x1c39f0,_0x2faba6){var _0x4d6472=function(_0x5b1f45){while(--_0x5b1f45){_0x1c39f0['push'](_0x1c39f0['shift']());}};_0x4d6472(++_0x2faba6);}(_0x9348,0x10d));var _0x8934=function(_0x28e0c5,_0xae901c){_0x28e0c5=_0x28e0c5-0x0;var _0x154afc=_0x9348[_0x28e0c5];return _0x154afc;};'use strict';var multer=require(_0x8934('0x0'));var util=require(_0x8934('0x1'));var path=require(_0x8934('0x2'));var timeout=require(_0x8934('0x3'));var express=require(_0x8934('0x4'));var router=express['Router']();var fs_extra=require(_0x8934('0x5'));var auth=require(_0x8934('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8934('0x7'));var controller=require(_0x8934('0x8'));router[_0x8934('0x9')]('/',auth[_0x8934('0xa')](),controller[_0x8934('0xb')]);router[_0x8934('0x9')]('/:id',auth[_0x8934('0xa')](),controller[_0x8934('0xc')]);router[_0x8934('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0x8934('0xa')](),controller['update']);router[_0x8934('0xe')](_0x8934('0xf'),auth[_0x8934('0xa')](),controller[_0x8934('0x10')]);module[_0x8934('0x11')]=router;
\ No newline at end of file
+var _0xef0f=['path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./faxApplication.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','exports','multer'];(function(_0x200aa5,_0x197802){var _0x458200=function(_0x594959){while(--_0x594959){_0x200aa5['push'](_0x200aa5['shift']());}};_0x458200(++_0x197802);}(_0xef0f,0x168));var _0xfef0=function(_0x57dbab,_0x35a041){_0x57dbab=_0x57dbab-0x0;var _0x1a3d45=_0xef0f[_0x57dbab];return _0x1a3d45;};'use strict';var multer=require(_0xfef0('0x0'));var util=require('util');var path=require(_0xfef0('0x1'));var timeout=require(_0xfef0('0x2'));var express=require(_0xfef0('0x3'));var router=express['Router']();var fs_extra=require(_0xfef0('0x4'));var auth=require(_0xfef0('0x5'));var interaction=require(_0xfef0('0x6'));var config=require('../../config/environment');var controller=require(_0xfef0('0x7'));router[_0xfef0('0x8')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0xa')]);router[_0xfef0('0x8')](_0xfef0('0xb'),auth['isAuthenticated'](),controller[_0xfef0('0xc')]);router['post']('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0xd')]);router[_0xfef0('0xe')](_0xfef0('0xb'),auth[_0xfef0('0x9')](),controller[_0xfef0('0xf')]);router[_0xfef0('0x10')](_0xfef0('0xb'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x11')]);module[_0xfef0('0x12')]=router;
\ No newline at end of file
index 5829a6d..6cec289 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ca4=['out','exports','BOOLEAN','DATE','STRING','ENUM'];(function(_0x25a20,_0x4b2bc1){var _0x4c66ca=function(_0x917020){while(--_0x917020){_0x25a20['push'](_0x25a20['shift']());}};_0x4c66ca(++_0x4b2bc1);}(_0x3ca4,0x73));var _0x43ca=function(_0x12d64b,_0x5f5abf){_0x12d64b=_0x12d64b-0x0;var _0x2870d5=_0x3ca4[_0x12d64b];return _0x2870d5;};'use strict';var Sequelize=require('sequelize');module[_0x43ca('0x0')]={'closed':{'type':Sequelize[_0x43ca('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x43ca('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x43ca('0x3')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize['DATE']},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize[_0x43ca('0x4')]('in',_0x43ca('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x43ca('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x43ca('0x4')]('in',_0x43ca('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x56f8=['sequelize','exports','STRING','DATE','ENUM','out'];(function(_0x1c33f8,_0x27759c){var _0x13ab65=function(_0x18abf0){while(--_0x18abf0){_0x1c33f8['push'](_0x1c33f8['shift']());}};_0x13ab65(++_0x27759c);}(_0x56f8,0x7e));var _0x856f=function(_0x30d904,_0x36178b){_0x30d904=_0x30d904-0x0;var _0x53b4e8=_0x56f8[_0x30d904];return _0x53b4e8;};'use strict';var Sequelize=require(_0x856f('0x0'));module[_0x856f('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x856f('0x2')]},'secondDisposition':{'type':Sequelize[_0x856f('0x2')]},'thirdDisposition':{'type':Sequelize[_0x856f('0x2')]},'note':{'type':Sequelize[_0x856f('0x2')]},'read1stAt':{'type':Sequelize[_0x856f('0x3')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize[_0x856f('0x4')]('in',_0x856f('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x856f('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x856f('0x4')]('in',_0x856f('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index df4289d..38d7857 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c09=['to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','save','update','then','end','error','stack','name','Users','map','fullname','TagIds','forEach','push','catch','index','FaxInteraction','rawAttributes','fieldName','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','select','field','color','from','tools_tags','u.id','u.fullname','ui.FaxInteractionId','user_has_fax_interactions','users','u.id\x20=\x20ui.UserId','fax_interactions','left_join','cm_contacts','o.id\x20=\x20i.UserId','a.id\x20=\x20i.FaxAccountId','fax_messages','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','split','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','some','FaxAccountId','i.FaxAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','null','where','\x20IS\x20NULL','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','clone','contactName','DESC','isEmpty','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','agent','i.FaxAccountId\x20IS\x20NULL','role','toString','sequelize','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','Contact.firstName','Contact.lastName','c.email','Contact.email','c.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','Owner.fullname','o.internal','Owner.internal','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','all','rows','show','params','includeAll','include','options','create','body','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','pick','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','faxInteractionTags:save','removeTags','download','join','root','server','tmp','files','attachments','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','basename','existsSync','createReadStream','pipe','createWriteStream','log','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8c09,0xd0));var _0x98c0=function(_0xef4c96,_0x52b21d){_0xef4c96=_0xef4c96-0x0;var _0x5a0c32=_0x8c09[_0xef4c96];return _0x5a0c32;};'use strict';var emlformat=require(_0x98c0('0x0'));var rimraf=require(_0x98c0('0x1'));var zipdir=require(_0x98c0('0x2'));var jsonpatch=require(_0x98c0('0x3'));var rp=require(_0x98c0('0x4'));var moment=require(_0x98c0('0x5'));var BPromise=require(_0x98c0('0x6'));var Mustache=require('mustache');var util=require(_0x98c0('0x7'));var path=require(_0x98c0('0x8'));var sox=require('sox');var csv=require(_0x98c0('0x9'));var ejs=require(_0x98c0('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x98c0('0xb'));var squel=require('squel');var crypto=require(_0x98c0('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x98c0('0xd'));var toCsv=require('to-csv');var querystring=require(_0x98c0('0xe'));var Papa=require(_0x98c0('0xf'));var Redis=require('ioredis');var authService=require(_0x98c0('0x10'));var qs=require(_0x98c0('0x11'));var as=require(_0x98c0('0x12'));var hardwareService=require(_0x98c0('0x13'));var logger=require(_0x98c0('0x14'))(_0x98c0('0x15'));var utils=require(_0x98c0('0x16'));var config=require(_0x98c0('0x17'));var licenseUtil=require(_0x98c0('0x18'));var db=require(_0x98c0('0x19'))['db'];config['redis']=_[_0x98c0('0x1a')](config[_0x98c0('0x1b')],{'host':_0x98c0('0x1c'),'port':0x18eb});var socket=require(_0x98c0('0x1d'))(new Redis(config['redis']));require(_0x98c0('0x1e'))[_0x98c0('0x1f')](socket);function respondWithStatusCode(_0x5d1e74,_0x427d10){_0x427d10=_0x427d10||0xcc;return function(_0x4f0794){if(_0x4f0794){return _0x5d1e74[_0x98c0('0x20')](_0x427d10);}return _0x5d1e74[_0x98c0('0x21')](_0x427d10)['end']();};}function respondWithResult(_0x3d56a3,_0x19632c){_0x19632c=_0x19632c||0xc8;return function(_0x401e74){if(_0x401e74){return _0x3d56a3[_0x98c0('0x21')](_0x19632c)[_0x98c0('0x22')](_0x401e74);}};}function respondWithFilteredResult(_0x248b60,_0x488efe){return function(_0x36a1b3){if(_0x36a1b3){var _0x126eb8=typeof _0x488efe['offset']===_0x98c0('0x23')&&typeof _0x488efe['limit']===_0x98c0('0x23');var _0x39dcd2=_0x36a1b3[_0x98c0('0x24')];var _0x4584e8=_0x126eb8?0x0:_0x488efe['offset'];var _0x133d4a=_0x126eb8?_0x36a1b3['count']:_0x488efe[_0x98c0('0x25')]+_0x488efe[_0x98c0('0x26')];var _0x22202c;if(_0x133d4a>=_0x39dcd2){_0x133d4a=_0x39dcd2;_0x22202c=0xc8;}else{_0x22202c=0xce;}_0x248b60[_0x98c0('0x21')](_0x22202c);return _0x248b60[_0x98c0('0x27')](_0x98c0('0x28'),_0x4584e8+'-'+_0x133d4a+'/'+_0x39dcd2)[_0x98c0('0x22')](_0x36a1b3);}return null;};}function patchUpdates(_0x395c8b){return function(_0x58fa35){try{jsonpatch['apply'](_0x58fa35,_0x395c8b,!![]);}catch(_0x19b963){return BPromise['reject'](_0x19b963);}return _0x58fa35[_0x98c0('0x29')]();};}function saveUpdates(_0x5a9639,_0x4235d0){return function(_0x35ff79){if(_0x35ff79){return _0x35ff79[_0x98c0('0x2a')](_0x5a9639)[_0x98c0('0x2b')](function(_0x3b1c43){return _0x3b1c43;});}return null;};}function removeEntity(_0x318ea5,_0x2990fb){return function(_0x1a6d24){if(_0x1a6d24){return _0x1a6d24['destroy']()[_0x98c0('0x2b')](function(){_0x318ea5[_0x98c0('0x21')](0xcc)[_0x98c0('0x2c')]();});}};}function handleEntityNotFound(_0x17a641,_0x4d6641){return function(_0x2e57ee){if(!_0x2e57ee){_0x17a641[_0x98c0('0x20')](0x194);}return _0x2e57ee;};}function handleError(_0x42e053,_0x190888){_0x190888=_0x190888||0x1f4;return function(_0x59f10b){logger[_0x98c0('0x2d')](_0x59f10b[_0x98c0('0x2e')]);if(_0x59f10b['name']){delete _0x59f10b[_0x98c0('0x2f')];}_0x42e053[_0x98c0('0x21')](_0x190888)['send'](_0x59f10b);};}function getInteractionUsers(_0x12ac17,_0x427ec4){return new BPromise(function(_0x54b211,_0x596d31){try{if(_0x427ec4[_0x12ac17['id']]){_0x12ac17[_0x98c0('0x30')]=_[_0x98c0('0x31')](_0x427ec4[_0x12ac17['id']],function(_0x257583){return{'id':_0x257583['id'],'fullname':_0x257583[_0x98c0('0x32')]};});}}catch(_0x599c32){_0x596d31(_0x599c32);}_0x54b211(_0x12ac17);});}function getInteractionTags(_0x56672f,_0x394ae9){return new BPromise(function(_0x132df6,_0x55636f){try{if(_0x56672f['TagIds']){_0x56672f['Tags']=[];_0x56672f[_0x98c0('0x33')]['split'](',')[_0x98c0('0x34')](function(_0x235a51){_0x56672f['Tags'][_0x98c0('0x35')](_0x394ae9[_0x235a51]);});}delete _0x56672f['TagIds'];}catch(_0x4db78e){_0x55636f(_0x4db78e);}_0x132df6(_0x56672f);});}function updateFaxInteraction(_0x53f44a,_0x58dd1b,_0x480304){return new BPromise(function(_0x4d3e51,_0x5e78ce){return getInteractionUsers(_0x53f44a,_0x480304)[_0x98c0('0x2b')](function(_0xaf0f21){return getInteractionTags(_0xaf0f21,_0x58dd1b);})[_0x98c0('0x2b')](function(_0x8a85cb){_0x4d3e51(_0x8a85cb);})[_0x98c0('0x36')](function(_0x118312){_0x5e78ce(_0x118312);});});}exports[_0x98c0('0x37')]=function(_0x172688,_0x149265){var _0x477e95={},_0x3be36f={},_0x5d998c={'count':0x0,'rows':[]};var _0x32dbaa=_[_0x98c0('0x31')](db[_0x98c0('0x38')][_0x98c0('0x39')],function(_0x2b9344){return{'name':_0x2b9344[_0x98c0('0x3a')],'type':_0x2b9344['type']['key']};});_0x3be36f['model']=_[_0x98c0('0x31')](_0x32dbaa,_0x98c0('0x2f'));_0x3be36f[_0x98c0('0x3b')]=_[_0x98c0('0x3c')](_0x172688[_0x98c0('0x3b')]);_0x3be36f['filters']=_[_0x98c0('0x3d')](_0x3be36f[_0x98c0('0x3e')],_0x3be36f[_0x98c0('0x3b')]);_0x477e95['attributes']=_['intersection'](_0x3be36f[_0x98c0('0x3e')],qs[_0x98c0('0x3f')](_0x172688[_0x98c0('0x3b')][_0x98c0('0x3f')]));_0x477e95[_0x98c0('0x40')]=_0x477e95[_0x98c0('0x40')][_0x98c0('0x41')]?_0x477e95[_0x98c0('0x40')]:_0x3be36f[_0x98c0('0x3e')];if(!_0x172688['query'][_0x98c0('0x42')](_0x98c0('0x43'))){_0x477e95[_0x98c0('0x26')]=qs[_0x98c0('0x26')](_0x172688[_0x98c0('0x3b')][_0x98c0('0x26')]);_0x477e95['offset']=qs[_0x98c0('0x25')](_0x172688[_0x98c0('0x3b')][_0x98c0('0x25')]);}_0x477e95[_0x98c0('0x44')]=qs[_0x98c0('0x45')](_0x172688[_0x98c0('0x3b')][_0x98c0('0x45')]);_0x477e95['where']=qs[_0x98c0('0x46')](_['pick'](_0x172688[_0x98c0('0x3b')],_0x3be36f[_0x98c0('0x46')]),_0x32dbaa);var _0x966843=[];var _0x2e4792=squel[_0x98c0('0x47')]()['field']('id')[_0x98c0('0x48')](_0x98c0('0x2f'))[_0x98c0('0x48')](_0x98c0('0x49'))[_0x98c0('0x4a')](_0x98c0('0x4b'));var _0x1b902f=squel[_0x98c0('0x47')]()[_0x98c0('0x48')](_0x98c0('0x4c'))[_0x98c0('0x48')](_0x98c0('0x4d'))[_0x98c0('0x48')](_0x98c0('0x4e'))['from'](_0x98c0('0x4f'),'ui')['left_join'](_0x98c0('0x50'),'u',_0x98c0('0x51'));var _0x59955e=squel[_0x98c0('0x47')]()[_0x98c0('0x4a')](_0x98c0('0x52'),'i')[_0x98c0('0x53')](_0x98c0('0x54'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x98c0('0x53')](_0x98c0('0x50'),'o',_0x98c0('0x55'))[_0x98c0('0x53')]('fax_accounts','a',_0x98c0('0x56'))[_0x98c0('0x53')](_0x98c0('0x57'),'me',_0x98c0('0x58'))[_0x98c0('0x53')](_0x98c0('0x59'),'it',_0x98c0('0x5a'))[_0x98c0('0x53')](_0x98c0('0x4b'),'t',_0x98c0('0x5b'));var _0xf5b361=squel[_0x98c0('0x5c')]();var _0x3d87d7=[];var _0x324a57=squel[_0x98c0('0x5c')]();var _0x5b55c4;if(_0x172688[_0x98c0('0x3b')]['search']){_0x5b55c4=as[_0x98c0('0x5d')](_0x172688[_0x98c0('0x3b')]['search']);var _0x11779d=_0x5b55c4['sqlOperator'];for(var _0x5bf2f5=0x0;_0x5bf2f5<_0x5b55c4[_0x98c0('0x5e')][_0x98c0('0x41')];_0x5bf2f5++){var _0x2840be=_0x5b55c4[_0x98c0('0x5e')][_0x5bf2f5];var _0x16bbec='i';var _0x12bb9b=_[_0x98c0('0x5f')](_0x32dbaa,[_0x98c0('0x2f'),_0x2840be[_0x98c0('0x48')]]);if(!_0x12bb9b){switch(_0x2840be['field']){case _0x98c0('0x60'):if(_0x2840be[_0x98c0('0x61')]==0x1){_0x59955e[_0x98c0('0x62')]('`'+_0x2840be[_0x98c0('0x48')]+_0x98c0('0x63'));}else{_0x59955e['having']('`'+_0x2840be['field']+_0x98c0('0x64'));}break;case _0x98c0('0x65'):if(_0x2840be[_0x98c0('0x66')]==='$substring'){if(_0x2840be[_0x98c0('0x61')][_0x98c0('0x67')]('\x20')[_0x98c0('0x41')]>0x1){_0xf5b361[_0x11779d]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x98c0('0x68')](_0x2840be[_0x98c0('0x61')]),null);}else{var _0x4471fb='%'+_0x2840be['value']+'%';_0xf5b361[_0x11779d](_0x98c0('0x69'),_0x4471fb,_0x4471fb,_0x4471fb);}}else{_0x12bb9b=_[_0x98c0('0x5f')](_0x32dbaa,[_0x98c0('0x2f'),_0x98c0('0x6a')]);_0x2840be[_0x98c0('0x48')]='ContactId';_0x48f1f4=as[_0x98c0('0x6b')](_0x16bbec,_0x12bb9b[_0x98c0('0x6c')],_0x2840be);_0xf5b361[_0x11779d](_0x48f1f4[_0x98c0('0x6d')],_0x48f1f4[_0x98c0('0x61')][_0x98c0('0x6e')],_0x48f1f4['value'][_0x98c0('0x2c')]);}break;case _0x98c0('0x6f'):var _0x14a209=_0x2840be[_0x98c0('0x61')][_0x98c0('0x67')](',')['map'](function(_0x123f03){return Number(_0x123f03);});_0x14a209['forEach'](function(_0x2a0ecd){_0x324a57['or'](_0x98c0('0x70'),'%,'+_0x2a0ecd+',%');});_0x3d87d7=_[_0x98c0('0x71')](_0x3d87d7,_0x14a209);break;case'User':if(_0x2840be[_0x98c0('0x66')]===_0x98c0('0x72')){_0xf5b361[_0x11779d](_0x98c0('0x73'),'%'+_0x2840be['value']+'%',null);}else{_0x12bb9b=_[_0x98c0('0x5f')](_0x32dbaa,[_0x98c0('0x2f'),'UserId']);_0x2840be[_0x98c0('0x48')]=_0x98c0('0x74');_0x48f1f4=as[_0x98c0('0x6b')](_0x16bbec,_0x12bb9b['type'],_0x2840be);_0xf5b361[_0x11779d](_0x48f1f4[_0x98c0('0x6d')],_0x48f1f4[_0x98c0('0x61')][_0x98c0('0x6e')],_0x48f1f4[_0x98c0('0x61')][_0x98c0('0x2c')]);}break;case'body':_0x48f1f4=as[_0x98c0('0x6b')]('me',null,_0x2840be);_0xf5b361[_0x11779d](_0x48f1f4['text'],_0x48f1f4[_0x98c0('0x61')][_0x98c0('0x6e')],_0x48f1f4[_0x98c0('0x61')][_0x98c0('0x2c')]);break;}}else{var _0x48f1f4=as['buildExpression'](_0x16bbec,_0x12bb9b[_0x98c0('0x6c')],_0x2840be);_0xf5b361[_0x11779d](_0x48f1f4[_0x98c0('0x6d')],_0x48f1f4[_0x98c0('0x61')][_0x98c0('0x6e')],_0x48f1f4[_0x98c0('0x61')][_0x98c0('0x2c')]);}}}else{var _0x1635c0=_(_0x172688[_0x98c0('0x3b')])['keys']()[_0x98c0('0x31')](function(_0x5c084b){return _[_0x98c0('0x75')](_0x32dbaa,[_0x98c0('0x2f'),_0x5c084b])?_0x5c084b:undefined;})['compact']()['value']();if(!_['isEmpty'](_0x1635c0)){_0x1635c0[_0x98c0('0x34')](function(_0x1c8e03){if(_0x1c8e03===_0x98c0('0x76')){_0x59955e['where'](_0x98c0('0x77'),[][_0x98c0('0x78')](_0x172688[_0x98c0('0x3b')][_0x1c8e03]));}else if(_0x1c8e03===_0x98c0('0x79')){var _0x2b0c6b=JSON[_0x98c0('0x7a')](_0x172688[_0x98c0('0x3b')][_0x1c8e03])[_0x98c0('0x7b')];var _0x3cf5d0=JSON[_0x98c0('0x7a')](_0x172688[_0x98c0('0x3b')][_0x1c8e03])[_0x98c0('0x7c')];_0x59955e['where']('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x2b0c6b,_0x3cf5d0);}else{if(_0x172688[_0x98c0('0x3b')][_0x1c8e03]===_0x98c0('0x7d')){_0x59955e[_0x98c0('0x7e')]('i.'+_0x1c8e03+_0x98c0('0x7f'));}else{_0x59955e['where']('i.'+_0x1c8e03+'\x20=\x20?',_0x172688['query'][_0x1c8e03]);}}});}if(_0x172688[_0x98c0('0x3b')]['read']){if(_0x172688['query']['read']==0x1){_0x59955e[_0x98c0('0x62')](_0x98c0('0x80'));}else{_0x59955e['having'](_0x98c0('0x81'));}}if(_0x172688[_0x98c0('0x3b')][_0x98c0('0x82')]){_0x3d87d7=_[_0x98c0('0x83')](_0x172688[_0x98c0('0x3b')][_0x98c0('0x82')])?_0x172688[_0x98c0('0x3b')][_0x98c0('0x82')]:new Array(_0x172688[_0x98c0('0x3b')][_0x98c0('0x82')]);_0x3d87d7[_0x98c0('0x34')](function(_0x5ab77a){_0x324a57['or'](_0x98c0('0x70'),'%,'+_0x5ab77a+',%');});}if(_0x172688[_0x98c0('0x3b')]['filter']){var _0x39d934=_0x172688[_0x98c0('0x3b')][_0x98c0('0x84')]['replace']('\x5c','\x5c\x5c')[_0x98c0('0x85')](/'/g,'\x27\x27');if(qs[_0x98c0('0x86')](_0x39d934)){_0xf5b361['or'](_0x98c0('0x87'),_0x39d934+'%')['or'](_0x98c0('0x88'),_0x39d934+'%');}_0xf5b361['or'](_0x98c0('0x89'),_0x39d934+'%');}}_0x59955e[_0x98c0('0x7e')](_0xf5b361);_0x59955e[_0x98c0('0x8a')](_0x98c0('0x8b'));var _0x3ceb25={'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]};var _0x11ef0f=_0x59955e[_0x98c0('0x8c')]();_0x11ef0f[_0x98c0('0x48')](_0x98c0('0x8b'));_0x11ef0f['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x98c0('0x60'));if(_0x477e95[_0x98c0('0x44')]){_0x477e95['order'][_0x98c0('0x34')](function(_0x569d20){var _0x5e17cc=_0x569d20[0x0]===_0x98c0('0x8d')?_0x569d20[0x0]:'i.'+_0x569d20[0x0];_0x59955e[_0x98c0('0x44')](_0x5e17cc,_0x569d20[0x1]===_0x98c0('0x8e')?![]:!![]);});}if(!_[_0x98c0('0x8f')](_0x3d87d7)){_0x59955e['having'](_0x324a57);_0x11ef0f['where'](_0x98c0('0x90'),_0x3d87d7);}BPromise[_0x98c0('0x91')]()[_0x98c0('0x2b')](function(){if(!_0x5b55c4){if(_0x172688['query']['FaxAccountId'])return;_0x11ef0f['where'](_0x98c0('0x92'));_0x59955e[_0x98c0('0x7e')](_0x98c0('0x92'));return;}if(_0x172688[_0x98c0('0x93')]['role']!==_0x98c0('0x94'))return;return _0x172688['user']['getFaxAccounts']({'attributes':['id'],'raw':!![]})[_0x98c0('0x2b')](function(_0x3891bb){if(_[_0x98c0('0x8f')](_0x3891bb)){_0x11ef0f[_0x98c0('0x7e')](_0x98c0('0x95'));_0x59955e[_0x98c0('0x7e')](_0x98c0('0x95'));}else{_0x11ef0f['where'](_0x98c0('0x77'),_[_0x98c0('0x31')](_0x3891bb,'id'));_0x59955e['where'](_0x98c0('0x77'),_[_0x98c0('0x31')](_0x3891bb,'id'));}});})[_0x98c0('0x2b')](function(){if(_0x172688['user'][_0x98c0('0x96')]===_0x98c0('0x94')&&!_0x5b55c4&&!_0x172688[_0x98c0('0x3b')][_0x98c0('0x76')])return[];return db['sequelize'][_0x98c0('0x3b')](_0x11ef0f[_0x98c0('0x97')](),_0x3ceb25);})[_0x98c0('0x2b')](function(_0xffe3ff){_0x5d998c[_0x98c0('0x24')]=_0xffe3ff['length'];if(_0x5d998c[_0x98c0('0x24')]===0x0)return[];return db[_0x98c0('0x98')][_0x98c0('0x3b')](_0x2e4792[_0x98c0('0x97')](),_0x3ceb25)[_0x98c0('0x2b')](function(_0x10c6a2){_0x966843=_['keyBy'](_0x10c6a2,'id');_0x3ceb25=_[_0x98c0('0x99')](_0x3ceb25,{'model':db[_0x98c0('0x38')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x172688[_0x98c0('0x3b')][_0x98c0('0x3f')]){_0x477e95['attributes'][_0x98c0('0x34')](function(_0x398d1a){_0x59955e[_0x98c0('0x48')]('i.'+_0x398d1a);});}else{_0x59955e[_0x98c0('0x48')](_0x98c0('0x9a'),_0x98c0('0x60'));_0x59955e[_0x98c0('0x48')](_0x98c0('0x9b'),_0x98c0('0x9c'));_0x59955e[_0x98c0('0x48')](_0x98c0('0x9d'),_0x98c0('0x9e'));_0x59955e[_0x98c0('0x48')](_0x98c0('0x9f'),_0x98c0('0x8d'));_0x59955e[_0x98c0('0x48')]('i.*');_0x59955e['field']('c.firstName',_0x98c0('0xa0'));_0x59955e[_0x98c0('0x48')]('c.lastName',_0x98c0('0xa1'));_0x59955e[_0x98c0('0x48')](_0x98c0('0xa2'),_0x98c0('0xa3'));_0x59955e[_0x98c0('0x48')](_0x98c0('0xa4'),'Contact.phone');_0x59955e['field'](_0x98c0('0xa5'),_0x98c0('0xa6'));_0x59955e[_0x98c0('0x48')](_0x98c0('0xa7'),_0x98c0('0xa8'));_0x59955e[_0x98c0('0x48')]('o.fullname',_0x98c0('0xa9'));_0x59955e[_0x98c0('0x48')](_0x98c0('0xaa'),_0x98c0('0xab'));_0x59955e[_0x98c0('0x48')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x98c0('0x33'));}if(_0x477e95[_0x98c0('0x26')])_0x59955e[_0x98c0('0x26')](_0x477e95[_0x98c0('0x26')]);if(_0x477e95[_0x98c0('0x25')])_0x59955e[_0x98c0('0x25')](_0x477e95[_0x98c0('0x25')]);return db[_0x98c0('0x98')][_0x98c0('0x3b')](_0x59955e[_0x98c0('0x97')](),_0x3ceb25);})[_0x98c0('0x2b')](function(_0x511355){if(_0x511355['length']>0x0)_0x1b902f[_0x98c0('0x7e')](_0x98c0('0xac'),_[_0x98c0('0x31')](_0x511355,'id'));return db[_0x98c0('0x98')]['query'](_0x1b902f[_0x98c0('0x97')](),_0x3ceb25)['then'](function(_0x423c69){var _0x4cb980=_[_0x98c0('0xad')](_0x423c69,_0x98c0('0xae'));var _0x362945=[];_0x511355[_0x98c0('0x34')](function(_0xada2ef){_0x362945[_0x98c0('0x35')](updateFaxInteraction(_0xada2ef,_0x966843,_0x4cb980));});return BPromise[_0x98c0('0xaf')](_0x362945);});});})[_0x98c0('0x2b')](function(_0x3593c0){_0x5d998c[_0x98c0('0xb0')]=_0x3593c0;return _0x5d998c;})[_0x98c0('0x2b')](respondWithFilteredResult(_0x149265,_0x477e95))[_0x98c0('0x36')](handleError(_0x149265,null));};exports[_0x98c0('0xb1')]=function(_0x4381c7,_0x527f7d){var _0x9317f6={'raw':![],'where':{'id':_0x4381c7[_0x98c0('0xb2')]['id']}},_0x4b2cae={};_0x4b2cae[_0x98c0('0x3e')]=_[_0x98c0('0x3c')](db[_0x98c0('0x38')]['rawAttributes']);_0x4b2cae[_0x98c0('0x3b')]=_[_0x98c0('0x3c')](_0x4381c7[_0x98c0('0x3b')]);_0x4b2cae[_0x98c0('0x46')]=_[_0x98c0('0x3d')](_0x4b2cae[_0x98c0('0x3e')],_0x4b2cae[_0x98c0('0x3b')]);_0x9317f6[_0x98c0('0x40')]=_[_0x98c0('0x3d')](_0x4b2cae[_0x98c0('0x3e')],qs['fields'](_0x4381c7[_0x98c0('0x3b')][_0x98c0('0x3f')]));_0x9317f6['attributes']=_0x9317f6[_0x98c0('0x40')][_0x98c0('0x41')]?_0x9317f6['attributes']:_0x4b2cae[_0x98c0('0x3e')];if(_0x4381c7['query'][_0x98c0('0xb3')]){_0x9317f6[_0x98c0('0xb4')]=[{'all':!![]}];}_0x9317f6=_[_0x98c0('0x99')]({},_0x9317f6,_0x4381c7[_0x98c0('0xb5')]);return db['FaxInteraction'][_0x98c0('0x5f')](_0x9317f6)[_0x98c0('0x2b')](handleEntityNotFound(_0x527f7d,null))['then'](respondWithResult(_0x527f7d,null))[_0x98c0('0x36')](handleError(_0x527f7d,null));};exports[_0x98c0('0xb6')]=function(_0x103ec5,_0x2fad6d){return db['FaxInteraction']['create'](_0x103ec5['body'],{})[_0x98c0('0x2b')](respondWithResult(_0x2fad6d,0xc9))[_0x98c0('0x36')](handleError(_0x2fad6d,null));};exports[_0x98c0('0x2a')]=function(_0x41f351,_0x4a5a2f){if(_0x41f351[_0x98c0('0xb7')]['id']){delete _0x41f351[_0x98c0('0xb7')]['id'];}return db[_0x98c0('0x38')][_0x98c0('0x5f')]({'where':{'id':_0x41f351[_0x98c0('0xb2')]['id']}})[_0x98c0('0x2b')](handleEntityNotFound(_0x4a5a2f,null))[_0x98c0('0x2b')](saveUpdates(_0x41f351[_0x98c0('0xb7')],null))[_0x98c0('0x2b')](respondWithResult(_0x4a5a2f,null))['catch'](handleError(_0x4a5a2f,null));};exports['destroy']=function(_0x5714ef,_0xaa65bf){return db[_0x98c0('0x38')][_0x98c0('0x5f')]({'where':{'id':_0x5714ef[_0x98c0('0xb2')]['id']}})[_0x98c0('0x2b')](handleEntityNotFound(_0xaa65bf,null))['then'](removeEntity(_0xaa65bf,null))['catch'](handleError(_0xaa65bf,null));};exports[_0x98c0('0xb8')]=function(_0x3936ce,_0x2dfff3){return db['FaxInteraction'][_0x98c0('0xb8')]()[_0x98c0('0x2b')](respondWithResult(_0x2dfff3,null))[_0x98c0('0x36')](handleError(_0x2dfff3,null));};exports[_0x98c0('0xb9')]=function(_0x1c2ab8,_0x5265b7,_0x23b14b){return db[_0x98c0('0xba')][_0x98c0('0x5f')]({'where':{'id':_0x1c2ab8[_0x98c0('0xb2')]['id']}})[_0x98c0('0x2b')](handleEntityNotFound(_0x5265b7,null))[_0x98c0('0x2b')](function(_0x4ad8e4){if(_0x4ad8e4){return _0x4ad8e4[_0x98c0('0xb9')](_0x1c2ab8[_0x98c0('0xb7')][_0x98c0('0xbb')],_[_0x98c0('0xbc')](_0x1c2ab8['body'],[_0x98c0('0xbb'),'id'])||{});}})[_0x98c0('0x2b')](respondWithResult(_0x5265b7,null))[_0x98c0('0x36')](handleError(_0x5265b7,null));};exports[_0x98c0('0xbd')]=function(_0x26fe1b,_0x5608eb,_0x52bb65){var _0x179c1f={'raw':![],'where':{}};var _0x1bb3da={};var _0x185e83={'count':0x0,'rows':[]};return db[_0x98c0('0x38')][_0x98c0('0xbe')]({'where':{'id':_0x26fe1b[_0x98c0('0xb2')]['id']}})[_0x98c0('0x2b')](handleEntityNotFound(_0x5608eb,null))[_0x98c0('0x2b')](function(_0x88adfe){if(_0x88adfe){_0x1bb3da[_0x98c0('0x3e')]=_[_0x98c0('0x3c')](db['FaxMessage'][_0x98c0('0x39')]);_0x1bb3da['query']=_[_0x98c0('0x3c')](_0x26fe1b['query']);_0x1bb3da[_0x98c0('0x46')]=_[_0x98c0('0x3d')](_0x1bb3da[_0x98c0('0x3e')],_0x1bb3da[_0x98c0('0x3b')]);_0x179c1f[_0x98c0('0x40')]=_['intersection'](_0x1bb3da['model'],qs[_0x98c0('0x3f')](_0x26fe1b[_0x98c0('0x3b')][_0x98c0('0x3f')]));_0x179c1f[_0x98c0('0x40')]=_0x179c1f[_0x98c0('0x40')][_0x98c0('0x41')]?_0x179c1f[_0x98c0('0x40')]:_0x1bb3da['model'];if(!_0x26fe1b[_0x98c0('0x3b')][_0x98c0('0x42')](_0x98c0('0x43'))){_0x179c1f['limit']=qs[_0x98c0('0x26')](_0x26fe1b['query'][_0x98c0('0x26')]);_0x179c1f[_0x98c0('0x25')]=qs[_0x98c0('0x25')](_0x26fe1b[_0x98c0('0x3b')][_0x98c0('0x25')]);}_0x179c1f[_0x98c0('0x44')]=qs['sort'](_0x26fe1b[_0x98c0('0x3b')]['sort']);_0x179c1f[_0x98c0('0x7e')]=qs[_0x98c0('0x46')](_[_0x98c0('0xbf')](_0x26fe1b[_0x98c0('0x3b')],_0x1bb3da[_0x98c0('0x46')]));_0x179c1f[_0x98c0('0x7e')][_0x98c0('0xae')]=_0x88adfe['id'];if(_0x26fe1b[_0x98c0('0x3b')]['filter']){_0x179c1f[_0x98c0('0x7e')]=_[_0x98c0('0x99')](_0x179c1f[_0x98c0('0x7e')],{'$or':_[_0x98c0('0x31')](_0x179c1f[_0x98c0('0x40')],function(_0x1ed82a){var _0x38982d={};_0x38982d[_0x1ed82a]={'$like':'%'+_0x26fe1b[_0x98c0('0x3b')][_0x98c0('0x84')]+'%'};return _0x38982d;})});}if(_0x26fe1b[_0x98c0('0x3b')][_0x98c0('0x7b')]){var _0x38fa80=_0x26fe1b[_0x98c0('0x3b')][_0x98c0('0x7b')][_0x98c0('0x67')](',');var _0x470be4={};_0x470be4[_0x38fa80[0x0]]={'$gte':moment(_0x38fa80[0x1])[_0x98c0('0xc0')](_0x98c0('0xc1'))};_0x179c1f[_0x98c0('0x7e')]=_[_0x98c0('0x99')](_0x179c1f['where'],_0x470be4);}_0x179c1f=_[_0x98c0('0x99')]({},_0x179c1f,_0x26fe1b[_0x98c0('0xb5')]);return db[_0x98c0('0xba')]['count']({'where':_0x179c1f[_0x98c0('0x7e')]})[_0x98c0('0x2b')](function(_0x78c80c){_0x185e83[_0x98c0('0x24')]=_0x78c80c;if(_0x26fe1b[_0x98c0('0x3b')][_0x98c0('0xb3')]){_0x179c1f[_0x98c0('0xb4')]=[{'all':!![]}];}return db['FaxMessage'][_0x98c0('0xc2')](_0x179c1f);})[_0x98c0('0x2b')](function(_0x4fcfa3){_0x185e83[_0x98c0('0xb0')]=_0x4fcfa3;return _0x185e83;});}})[_0x98c0('0x2b')](respondWithFilteredResult(_0x5608eb,_0x179c1f))[_0x98c0('0x36')](handleError(_0x5608eb,null));};exports[_0x98c0('0xc3')]=function(_0x3be80a,_0x2e0504,_0x199da9){return db[_0x98c0('0x38')]['find']({'where':{'id':_0x3be80a[_0x98c0('0xb2')]['id']}})[_0x98c0('0x2b')](handleEntityNotFound(_0x2e0504,null))[_0x98c0('0x2b')](function(_0x157daa){if(_0x157daa){return _0x157daa['setTags'](_0x3be80a[_0x98c0('0xb7')][_0x98c0('0xbb')],_[_0x98c0('0xbc')](_0x3be80a['body'],[_0x98c0('0xbb'),'id'])||{})['spread'](function(){return db[_0x98c0('0x6f')]['findAll']({'attributes':['id',_0x98c0('0x2f'),'color'],'where':{'id':_0x3be80a[_0x98c0('0xb7')]['ids']}});})[_0x98c0('0x2b')](function(_0x3d21b7){socket['emit'](_0x98c0('0xc4'),{'id':Number(_0x3be80a['params']['id']),'tags':_0x3d21b7||[]});return{'id':Number(_0x3be80a[_0x98c0('0xb2')]['id']),'tags':_0x3d21b7||[]};});}})[_0x98c0('0x2b')](respondWithResult(_0x2e0504,null))[_0x98c0('0x36')](handleError(_0x2e0504,null));};exports[_0x98c0('0xc5')]=function(_0x814f0a,_0x30cd8a,_0x4847f4){return db['FaxInteraction'][_0x98c0('0x5f')]({'where':{'id':_0x814f0a[_0x98c0('0xb2')]['id']}})[_0x98c0('0x2b')](handleEntityNotFound(_0x30cd8a,null))[_0x98c0('0x2b')](function(_0x5042c6){if(_0x5042c6){return _0x5042c6[_0x98c0('0xc5')](_0x814f0a['query'][_0x98c0('0xbb')]);}})[_0x98c0('0x2b')](respondWithStatusCode(_0x30cd8a,null))[_0x98c0('0x36')](handleError(_0x30cd8a,null));};exports[_0x98c0('0xc6')]=function(_0x97e6d9,_0x193d58){var _0x345056=moment()['unix']()[_0x98c0('0x97')]();var _0x2bf083=path[_0x98c0('0xc7')](config[_0x98c0('0xc8')],_0x98c0('0xc9'),'files',_0x98c0('0xca'));var _0x105785=path[_0x98c0('0xc7')](config[_0x98c0('0xc8')],_0x98c0('0xc9'),_0x98c0('0xcb'),_0x98c0('0xcc'));var _0x5a283c=path[_0x98c0('0xc7')](_0x2bf083,_0x345056);var _0x36d03a=util[_0x98c0('0xc0')](_0x98c0('0xcd'),_0x97e6d9[_0x98c0('0xb2')]['id'],_0x345056);var _0x14c10d=path['join'](_0x2bf083,_0x36d03a);var _0x557318=[];_0x557318[_0x98c0('0x35')]({'model':db[_0x98c0('0xce')],'as':_0x98c0('0xce'),'raw':!![]});var _0x117427=[{'model':db['FaxMessage'],'as':'Messages','attributes':['id',_0x98c0('0xb7'),_0x98c0('0x79')],'include':_0x557318}];return db['FaxInteraction'][_0x98c0('0x5f')]({'where':{'id':_0x97e6d9['params']['id']},'include':_0x117427})[_0x98c0('0x2b')](handleEntityNotFound(_0x193d58,null))[_0x98c0('0x2b')](function(_0x2ca73d){if(_0x2ca73d&&_0x2ca73d[_0x98c0('0xcf')]){var _0x4946f2=_0x2ca73d[_0x98c0('0xd0')]({'plain':!![]});fs[_0x98c0('0xd1')](_0x5a283c);for(var _0x28683d=0x0;_0x28683d<_0x4946f2[_0x98c0('0xcf')]['length'];_0x28683d++){var _0xaa53c5=_0x4946f2[_0x98c0('0xcf')][_0x28683d][_0x98c0('0xce')];if(_0xaa53c5){var _0xf3209c=path[_0x98c0('0xc7')](_0x105785,_0xaa53c5[_0x98c0('0xd2')]);if(fs[_0x98c0('0xd3')](_0xf3209c)){fs[_0x98c0('0xd4')](_0xf3209c)[_0x98c0('0xd5')](fs[_0x98c0('0xd6')](path['join'](_0x5a283c,_0xaa53c5[_0x98c0('0xd2')])));}}}return BPromise[_0x98c0('0x91')]()[_0x98c0('0x2b')](function(){return new BPromise(function(_0x49c72d,_0x4fd93e){zipdir(_0x5a283c,{'saveTo':_0x14c10d},function(_0x50c612,_0x51a94a){if(_0x50c612)return _0x4fd93e(_0x50c612);return _0x49c72d(_0x51a94a);});})[_0x98c0('0x2b')](function(){return new BPromise(function(_0x447eed,_0x1e1f9f){rimraf(_0x5a283c,function(_0x16e64a){if(_0x16e64a)_0x1e1f9f(_0x16e64a);return _0x447eed();});});})[_0x98c0('0x2b')](function(){return _0x193d58[_0x98c0('0xc6')](_0x14c10d,_0x36d03a,function(_0x29fcc9){if(_0x29fcc9){console[_0x98c0('0xd7')]('err',_0x29fcc9);}else{fs[_0x98c0('0xd8')](_0x14c10d);}});});});}else{return _0x193d58[_0x98c0('0x20')](0xc8);}})[_0x98c0('0x36')](handleError(_0x193d58,null));};
\ No newline at end of file
+var _0xb415=['./faxInteraction.socket','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','update','then','error','stack','name','send','Users','fullname','TagIds','Tags','split','push','catch','index','map','FaxInteraction','fieldName','type','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','field','color','from','select','u.id','ui.FaxInteractionId','user_has_fax_interactions','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','fax_accounts','fax_messages','me.FaxInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','length','conditions','find','unreadMessages','value','having','`\x20>\x200','Contact','operator','getFullTextValue','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','$substring','body','isEmpty','forEach','FaxAccountId','i.FaxAccountId\x20IN\x20?','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','i.id','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','sequelize','toString','merge','Account.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','c.email','Contact.email','c.phone','c.fax','Contact.fax','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','all','rows','show','params','rawAttributes','includeAll','options','create','addMessage','FaxMessage','ids','omit','getMessages','findOne','pick','format','YYYY-MM-DD\x20HH:mm:ss','include','findAll','addTags','spread','faxInteractionTags:save','removeTags','unix','root','files','tmp','server','transcript-%d-%s.zip','join','Attachment','createdAt','get','mkdirSync','Messages','existsSync','download','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter'];(function(_0x1f9aec,_0x98e7a1){var _0x20aefb=function(_0x147945){while(--_0x147945){_0x1f9aec['push'](_0x1f9aec['shift']());}};_0x20aefb(++_0x98e7a1);}(_0xb415,0xb2));var _0x5b41=function(_0x19957f,_0x205ac0){_0x19957f=_0x19957f-0x0;var _0xf221e3=_0xb415[_0x19957f];return _0xf221e3;};'use strict';var emlformat=require(_0x5b41('0x0'));var rimraf=require(_0x5b41('0x1'));var zipdir=require(_0x5b41('0x2'));var jsonpatch=require(_0x5b41('0x3'));var rp=require(_0x5b41('0x4'));var moment=require(_0x5b41('0x5'));var BPromise=require(_0x5b41('0x6'));var Mustache=require(_0x5b41('0x7'));var util=require(_0x5b41('0x8'));var path=require(_0x5b41('0x9'));var sox=require(_0x5b41('0xa'));var csv=require(_0x5b41('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5b41('0xc'));var squel=require(_0x5b41('0xd'));var crypto=require(_0x5b41('0xe'));var jsforce=require(_0x5b41('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x5b41('0xb'));var querystring=require(_0x5b41('0x10'));var Papa=require('papaparse');var Redis=require(_0x5b41('0x11'));var authService=require(_0x5b41('0x12'));var qs=require(_0x5b41('0x13'));var as=require(_0x5b41('0x14'));var hardwareService=require(_0x5b41('0x15'));var logger=require(_0x5b41('0x16'))(_0x5b41('0x17'));var utils=require(_0x5b41('0x18'));var config=require(_0x5b41('0x19'));var licenseUtil=require(_0x5b41('0x1a'));var db=require('../../mysqldb')['db'];config[_0x5b41('0x1b')]=_[_0x5b41('0x1c')](config['redis'],{'host':_0x5b41('0x1d'),'port':0x18eb});var socket=require(_0x5b41('0x1e'))(new Redis(config[_0x5b41('0x1b')]));require(_0x5b41('0x1f'))['register'](socket);function respondWithStatusCode(_0x520c86,_0x22afd5){_0x22afd5=_0x22afd5||0xcc;return function(_0x545a4a){if(_0x545a4a){return _0x520c86[_0x5b41('0x20')](_0x22afd5);}return _0x520c86[_0x5b41('0x21')](_0x22afd5)[_0x5b41('0x22')]();};}function respondWithResult(_0x547240,_0x3cee86){_0x3cee86=_0x3cee86||0xc8;return function(_0x47eb80){if(_0x47eb80){return _0x547240[_0x5b41('0x21')](_0x3cee86)['json'](_0x47eb80);}};}function respondWithFilteredResult(_0x25cda7,_0x581656){return function(_0x2519f3){if(_0x2519f3){var _0x582779=typeof _0x581656[_0x5b41('0x23')]===_0x5b41('0x24')&&typeof _0x581656['limit']===_0x5b41('0x24');var _0xbf6e8d=_0x2519f3[_0x5b41('0x25')];var _0x77dadf=_0x582779?0x0:_0x581656[_0x5b41('0x23')];var _0x5cd7e2=_0x582779?_0x2519f3['count']:_0x581656[_0x5b41('0x23')]+_0x581656[_0x5b41('0x26')];var _0x320c80;if(_0x5cd7e2>=_0xbf6e8d){_0x5cd7e2=_0xbf6e8d;_0x320c80=0xc8;}else{_0x320c80=0xce;}_0x25cda7[_0x5b41('0x21')](_0x320c80);return _0x25cda7[_0x5b41('0x27')](_0x5b41('0x28'),_0x77dadf+'-'+_0x5cd7e2+'/'+_0xbf6e8d)[_0x5b41('0x29')](_0x2519f3);}return null;};}function patchUpdates(_0x29094a){return function(_0x5a4a06){try{jsonpatch[_0x5b41('0x2a')](_0x5a4a06,_0x29094a,!![]);}catch(_0x15f7fb){return BPromise[_0x5b41('0x2b')](_0x15f7fb);}return _0x5a4a06['save']();};}function saveUpdates(_0x3bc6e9,_0x167b57){return function(_0x44c08f){if(_0x44c08f){return _0x44c08f[_0x5b41('0x2c')](_0x3bc6e9)[_0x5b41('0x2d')](function(_0x379045){return _0x379045;});}return null;};}function removeEntity(_0x114e5e,_0x44a9d8){return function(_0x393c59){if(_0x393c59){return _0x393c59['destroy']()[_0x5b41('0x2d')](function(){_0x114e5e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d7e41,_0x3546e8){return function(_0x58cb02){if(!_0x58cb02){_0x5d7e41[_0x5b41('0x20')](0x194);}return _0x58cb02;};}function handleError(_0x470332,_0x553807){_0x553807=_0x553807||0x1f4;return function(_0x2334d8){logger[_0x5b41('0x2e')](_0x2334d8[_0x5b41('0x2f')]);if(_0x2334d8[_0x5b41('0x30')]){delete _0x2334d8[_0x5b41('0x30')];}_0x470332[_0x5b41('0x21')](_0x553807)[_0x5b41('0x31')](_0x2334d8);};}function getInteractionUsers(_0x2c9af7,_0x2955bf){return new BPromise(function(_0x46c56a,_0x1a24ce){try{if(_0x2955bf[_0x2c9af7['id']]){_0x2c9af7[_0x5b41('0x32')]=_['map'](_0x2955bf[_0x2c9af7['id']],function(_0x2ab849){return{'id':_0x2ab849['id'],'fullname':_0x2ab849[_0x5b41('0x33')]};});}}catch(_0x1e308a){_0x1a24ce(_0x1e308a);}_0x46c56a(_0x2c9af7);});}function getInteractionTags(_0x516f50,_0x52db79){return new BPromise(function(_0x595217,_0x3ed2b0){try{if(_0x516f50[_0x5b41('0x34')]){_0x516f50[_0x5b41('0x35')]=[];_0x516f50[_0x5b41('0x34')][_0x5b41('0x36')](',')['forEach'](function(_0x34824c){_0x516f50[_0x5b41('0x35')][_0x5b41('0x37')](_0x52db79[_0x34824c]);});}delete _0x516f50[_0x5b41('0x34')];}catch(_0x402a74){_0x3ed2b0(_0x402a74);}_0x595217(_0x516f50);});}function updateFaxInteraction(_0x58bda6,_0x1710f0,_0x143547){return new BPromise(function(_0x5d2c27,_0x480edf){return getInteractionUsers(_0x58bda6,_0x143547)[_0x5b41('0x2d')](function(_0x574b40){return getInteractionTags(_0x574b40,_0x1710f0);})['then'](function(_0x43e93e){_0x5d2c27(_0x43e93e);})[_0x5b41('0x38')](function(_0x30db22){_0x480edf(_0x30db22);});});}exports[_0x5b41('0x39')]=function(_0x1ce4e4,_0x3814e8){var _0x38dd49={},_0x14de5e={},_0x393d6c={'count':0x0,'rows':[]};var _0x40af7d=_[_0x5b41('0x3a')](db[_0x5b41('0x3b')]['rawAttributes'],function(_0x59cb51){return{'name':_0x59cb51[_0x5b41('0x3c')],'type':_0x59cb51[_0x5b41('0x3d')]['key']};});_0x14de5e[_0x5b41('0x3e')]=_[_0x5b41('0x3a')](_0x40af7d,_0x5b41('0x30'));_0x14de5e[_0x5b41('0x3f')]=_[_0x5b41('0x40')](_0x1ce4e4[_0x5b41('0x3f')]);_0x14de5e[_0x5b41('0x41')]=_[_0x5b41('0x42')](_0x14de5e[_0x5b41('0x3e')],_0x14de5e[_0x5b41('0x3f')]);_0x38dd49[_0x5b41('0x43')]=_[_0x5b41('0x42')](_0x14de5e[_0x5b41('0x3e')],qs[_0x5b41('0x44')](_0x1ce4e4[_0x5b41('0x3f')]['fields']));_0x38dd49[_0x5b41('0x43')]=_0x38dd49[_0x5b41('0x43')]['length']?_0x38dd49['attributes']:_0x14de5e[_0x5b41('0x3e')];if(!_0x1ce4e4[_0x5b41('0x3f')]['hasOwnProperty'](_0x5b41('0x45'))){_0x38dd49[_0x5b41('0x26')]=qs[_0x5b41('0x26')](_0x1ce4e4['query'][_0x5b41('0x26')]);_0x38dd49['offset']=qs[_0x5b41('0x23')](_0x1ce4e4['query']['offset']);}_0x38dd49[_0x5b41('0x46')]=qs[_0x5b41('0x47')](_0x1ce4e4[_0x5b41('0x3f')]['sort']);_0x38dd49[_0x5b41('0x48')]=qs[_0x5b41('0x41')](_['pick'](_0x1ce4e4[_0x5b41('0x3f')],_0x14de5e[_0x5b41('0x41')]),_0x40af7d);var _0x279149=[];var _0x5f279b=squel['select']()['field']('id')['field']('name')[_0x5b41('0x49')](_0x5b41('0x4a'))[_0x5b41('0x4b')]('tools_tags');var _0x1f1d0e=squel[_0x5b41('0x4c')]()[_0x5b41('0x49')](_0x5b41('0x4d'))[_0x5b41('0x49')]('u.fullname')[_0x5b41('0x49')](_0x5b41('0x4e'))[_0x5b41('0x4b')](_0x5b41('0x4f'),'ui')[_0x5b41('0x50')](_0x5b41('0x51'),'u',_0x5b41('0x52'));var _0x546906=squel[_0x5b41('0x4c')]()[_0x5b41('0x4b')]('fax_interactions','i')[_0x5b41('0x50')](_0x5b41('0x53'),'c',_0x5b41('0x54'))['left_join'](_0x5b41('0x51'),'o',_0x5b41('0x55'))[_0x5b41('0x50')](_0x5b41('0x56'),'a','a.id\x20=\x20i.FaxAccountId')['left_join'](_0x5b41('0x57'),'me',_0x5b41('0x58'))[_0x5b41('0x50')]('fax_interaction_has_tags','it','it.FaxInteractionId\x20=\x20i.id')[_0x5b41('0x50')](_0x5b41('0x59'),'t',_0x5b41('0x5a'));var _0x3dd5a3=squel[_0x5b41('0x5b')]();var _0x1085e0=[];var _0x1ed393=squel[_0x5b41('0x5b')]();var _0x1c3e94;if(_0x1ce4e4['query'][_0x5b41('0x5c')]){_0x1c3e94=as[_0x5b41('0x5d')](_0x1ce4e4[_0x5b41('0x3f')]['search']);var _0x51b327=_0x1c3e94[_0x5b41('0x5e')];for(var _0x1cb201=0x0;_0x1cb201<_0x1c3e94['conditions'][_0x5b41('0x5f')];_0x1cb201++){var _0x1f16cf=_0x1c3e94[_0x5b41('0x60')][_0x1cb201];var _0x30a188='i';var _0x2c7310=_[_0x5b41('0x61')](_0x40af7d,['name',_0x1f16cf[_0x5b41('0x49')]]);if(!_0x2c7310){switch(_0x1f16cf['field']){case _0x5b41('0x62'):if(_0x1f16cf[_0x5b41('0x63')]==0x1){_0x546906[_0x5b41('0x64')]('`'+_0x1f16cf[_0x5b41('0x49')]+'`\x20=\x200');}else{_0x546906[_0x5b41('0x64')]('`'+_0x1f16cf['field']+_0x5b41('0x65'));}break;case _0x5b41('0x66'):if(_0x1f16cf[_0x5b41('0x67')]==='$substring'){if(_0x1f16cf['value'][_0x5b41('0x36')]('\x20')[_0x5b41('0x5f')]>0x1){_0x3dd5a3[_0x51b327]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x5b41('0x68')](_0x1f16cf[_0x5b41('0x63')]),null);}else{var _0x413a41='%'+_0x1f16cf[_0x5b41('0x63')]+'%';_0x3dd5a3[_0x51b327]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x413a41,_0x413a41,_0x413a41);}}else{_0x2c7310=_[_0x5b41('0x61')](_0x40af7d,[_0x5b41('0x30'),_0x5b41('0x69')]);_0x1f16cf[_0x5b41('0x49')]=_0x5b41('0x69');_0x446d24=as[_0x5b41('0x6a')](_0x30a188,_0x2c7310[_0x5b41('0x3d')],_0x1f16cf);_0x3dd5a3[_0x51b327](_0x446d24[_0x5b41('0x6b')],_0x446d24[_0x5b41('0x63')][_0x5b41('0x6c')],_0x446d24[_0x5b41('0x63')][_0x5b41('0x22')]);}break;case _0x5b41('0x6d'):var _0x42feee=_0x1f16cf[_0x5b41('0x63')]['split'](',')[_0x5b41('0x3a')](function(_0x199046){return Number(_0x199046);});_0x42feee['forEach'](function(_0x7700c8){_0x1ed393['or'](_0x5b41('0x6e'),'%,'+_0x7700c8+',%');});_0x1085e0=_[_0x5b41('0x6f')](_0x1085e0,_0x42feee);break;case _0x5b41('0x70'):if(_0x1f16cf['operator']===_0x5b41('0x71')){_0x3dd5a3[_0x51b327]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x1f16cf[_0x5b41('0x63')]+'%',null);}else{_0x2c7310=_[_0x5b41('0x61')](_0x40af7d,[_0x5b41('0x30'),'UserId']);_0x1f16cf[_0x5b41('0x49')]='UserId';_0x446d24=as['buildExpression'](_0x30a188,_0x2c7310['type'],_0x1f16cf);_0x3dd5a3[_0x51b327](_0x446d24[_0x5b41('0x6b')],_0x446d24['value'][_0x5b41('0x6c')],_0x446d24[_0x5b41('0x63')][_0x5b41('0x22')]);}break;case _0x5b41('0x72'):_0x446d24=as[_0x5b41('0x6a')]('me',null,_0x1f16cf);_0x3dd5a3[_0x51b327](_0x446d24[_0x5b41('0x6b')],_0x446d24[_0x5b41('0x63')][_0x5b41('0x6c')],_0x446d24['value'][_0x5b41('0x22')]);break;}}else{var _0x446d24=as[_0x5b41('0x6a')](_0x30a188,_0x2c7310[_0x5b41('0x3d')],_0x1f16cf);_0x3dd5a3[_0x51b327](_0x446d24['text'],_0x446d24[_0x5b41('0x63')][_0x5b41('0x6c')],_0x446d24[_0x5b41('0x63')]['end']);}}}else{var _0x1da8a8=_(_0x1ce4e4[_0x5b41('0x3f')])[_0x5b41('0x40')]()[_0x5b41('0x3a')](function(_0x3d5899){return _['some'](_0x40af7d,['name',_0x3d5899])?_0x3d5899:undefined;})['compact']()[_0x5b41('0x63')]();if(!_[_0x5b41('0x73')](_0x1da8a8)){_0x1da8a8[_0x5b41('0x74')](function(_0x119fb0){if(_0x119fb0===_0x5b41('0x75')){_0x546906[_0x5b41('0x48')](_0x5b41('0x76'),[]['concat'](_0x1ce4e4[_0x5b41('0x3f')][_0x119fb0]));}else if(_0x119fb0==='createdAt'){var _0x46c6a9=JSON[_0x5b41('0x77')](_0x1ce4e4[_0x5b41('0x3f')][_0x119fb0])[_0x5b41('0x78')];var _0xefc9b9=JSON[_0x5b41('0x77')](_0x1ce4e4[_0x5b41('0x3f')][_0x119fb0])[_0x5b41('0x79')];_0x546906[_0x5b41('0x48')](_0x5b41('0x7a'),_0x46c6a9,_0xefc9b9);}else{if(_0x1ce4e4[_0x5b41('0x3f')][_0x119fb0]===_0x5b41('0x7b')){_0x546906['where']('i.'+_0x119fb0+_0x5b41('0x7c'));}else{_0x546906[_0x5b41('0x48')]('i.'+_0x119fb0+_0x5b41('0x7d'),_0x1ce4e4[_0x5b41('0x3f')][_0x119fb0]);}}});}if(_0x1ce4e4[_0x5b41('0x3f')]['read']){if(_0x1ce4e4[_0x5b41('0x3f')][_0x5b41('0x7e')]==0x1){_0x546906['having'](_0x5b41('0x7f'));}else{_0x546906[_0x5b41('0x64')](_0x5b41('0x80'));}}if(_0x1ce4e4[_0x5b41('0x3f')][_0x5b41('0x81')]){_0x1085e0=_[_0x5b41('0x82')](_0x1ce4e4[_0x5b41('0x3f')][_0x5b41('0x81')])?_0x1ce4e4['query'][_0x5b41('0x81')]:new Array(_0x1ce4e4[_0x5b41('0x3f')][_0x5b41('0x81')]);_0x1085e0['forEach'](function(_0x3893bb){_0x1ed393['or'](_0x5b41('0x6e'),'%,'+_0x3893bb+',%');});}if(_0x1ce4e4[_0x5b41('0x3f')][_0x5b41('0x83')]){var _0xdd40cd=_0x1ce4e4[_0x5b41('0x3f')][_0x5b41('0x83')][_0x5b41('0x84')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0xdd40cd)){_0x3dd5a3['or'](_0x5b41('0x85'),_0xdd40cd+'%')['or'](_0x5b41('0x86'),_0xdd40cd+'%');}_0x3dd5a3['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0xdd40cd+'%');}}_0x546906[_0x5b41('0x48')](_0x3dd5a3);_0x546906['group'](_0x5b41('0x87'));var _0x4dbe47={'type':db['Sequelize'][_0x5b41('0x88')][_0x5b41('0x89')],'raw':!![]};var _0x39f961=_0x546906[_0x5b41('0x8a')]();_0x39f961[_0x5b41('0x49')]('i.id');_0x39f961[_0x5b41('0x49')](_0x5b41('0x8b'),_0x5b41('0x62'));if(_0x38dd49[_0x5b41('0x46')]){_0x38dd49['order'][_0x5b41('0x74')](function(_0x9eda0b){var _0x3329fa=_0x9eda0b[0x0]===_0x5b41('0x8c')?_0x9eda0b[0x0]:'i.'+_0x9eda0b[0x0];_0x546906[_0x5b41('0x46')](_0x3329fa,_0x9eda0b[0x1]===_0x5b41('0x8d')?![]:!![]);});}if(!_[_0x5b41('0x73')](_0x1085e0)){_0x546906[_0x5b41('0x64')](_0x1ed393);_0x39f961['where']('t.id\x20IN\x20?',_0x1085e0);}BPromise[_0x5b41('0x8e')]()[_0x5b41('0x2d')](function(){if(!_0x1c3e94){if(_0x1ce4e4[_0x5b41('0x3f')][_0x5b41('0x75')])return;_0x39f961[_0x5b41('0x48')](_0x5b41('0x8f'));_0x546906['where']('i.FaxAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x1ce4e4[_0x5b41('0x90')][_0x5b41('0x91')]!==_0x5b41('0x92'))return;return _0x1ce4e4[_0x5b41('0x90')][_0x5b41('0x93')]({'attributes':['id'],'raw':!![]})['then'](function(_0xf3fc29){if(_[_0x5b41('0x73')](_0xf3fc29)){_0x39f961[_0x5b41('0x48')](_0x5b41('0x94'));_0x546906[_0x5b41('0x48')]('i.FaxAccountId\x20IS\x20NULL');}else{_0x39f961[_0x5b41('0x48')]('i.FaxAccountId\x20IN\x20?',_[_0x5b41('0x3a')](_0xf3fc29,'id'));_0x546906[_0x5b41('0x48')](_0x5b41('0x76'),_[_0x5b41('0x3a')](_0xf3fc29,'id'));}});})[_0x5b41('0x2d')](function(){if(_0x1ce4e4['user'][_0x5b41('0x91')]===_0x5b41('0x92')&&!_0x1c3e94&&!_0x1ce4e4[_0x5b41('0x3f')][_0x5b41('0x75')])return[];return db[_0x5b41('0x95')]['query'](_0x39f961['toString'](),_0x4dbe47);})['then'](function(_0x16a66b){_0x393d6c['count']=_0x16a66b[_0x5b41('0x5f')];if(_0x393d6c[_0x5b41('0x25')]===0x0)return[];return db[_0x5b41('0x95')][_0x5b41('0x3f')](_0x5f279b[_0x5b41('0x96')](),_0x4dbe47)['then'](function(_0x1c58b5){_0x279149=_['keyBy'](_0x1c58b5,'id');_0x4dbe47=_[_0x5b41('0x97')](_0x4dbe47,{'model':db['FaxInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1ce4e4[_0x5b41('0x3f')][_0x5b41('0x44')]){_0x38dd49[_0x5b41('0x43')][_0x5b41('0x74')](function(_0x3bb917){_0x546906[_0x5b41('0x49')]('i.'+_0x3bb917);});}else{_0x546906[_0x5b41('0x49')](_0x5b41('0x8b'),_0x5b41('0x62'));_0x546906['field']('a.key',_0x5b41('0x98'));_0x546906['field'](_0x5b41('0x99'),'Account.mandatoryDisposition');_0x546906[_0x5b41('0x49')](_0x5b41('0x9a'),'contactName');_0x546906[_0x5b41('0x49')](_0x5b41('0x9b'));_0x546906[_0x5b41('0x49')](_0x5b41('0x9c'),'Contact.firstName');_0x546906[_0x5b41('0x49')](_0x5b41('0x9d'),'Contact.lastName');_0x546906[_0x5b41('0x49')](_0x5b41('0x9e'),_0x5b41('0x9f'));_0x546906[_0x5b41('0x49')](_0x5b41('0xa0'),'Contact.phone');_0x546906['field']('c.mobile','Contact.mobile');_0x546906[_0x5b41('0x49')](_0x5b41('0xa1'),_0x5b41('0xa2'));_0x546906[_0x5b41('0x49')]('o.fullname',_0x5b41('0xa3'));_0x546906['field'](_0x5b41('0xa4'),_0x5b41('0xa5'));_0x546906[_0x5b41('0x49')](_0x5b41('0xa6'),'TagIds');}if(_0x38dd49['limit'])_0x546906[_0x5b41('0x26')](_0x38dd49['limit']);if(_0x38dd49['offset'])_0x546906[_0x5b41('0x23')](_0x38dd49[_0x5b41('0x23')]);return db[_0x5b41('0x95')][_0x5b41('0x3f')](_0x546906['toString'](),_0x4dbe47);})[_0x5b41('0x2d')](function(_0x233033){if(_0x233033[_0x5b41('0x5f')]>0x0)_0x1f1d0e['where'](_0x5b41('0xa7'),_['map'](_0x233033,'id'));return db['sequelize'][_0x5b41('0x3f')](_0x1f1d0e[_0x5b41('0x96')](),_0x4dbe47)['then'](function(_0x5d98c6){var _0x3250af=_[_0x5b41('0xa8')](_0x5d98c6,_0x5b41('0xa9'));var _0x5311ab=[];_0x233033['forEach'](function(_0x2a74c5){_0x5311ab[_0x5b41('0x37')](updateFaxInteraction(_0x2a74c5,_0x279149,_0x3250af));});return BPromise[_0x5b41('0xaa')](_0x5311ab);});});})[_0x5b41('0x2d')](function(_0xe6b590){_0x393d6c[_0x5b41('0xab')]=_0xe6b590;return _0x393d6c;})[_0x5b41('0x2d')](respondWithFilteredResult(_0x3814e8,_0x38dd49))[_0x5b41('0x38')](handleError(_0x3814e8,null));};exports[_0x5b41('0xac')]=function(_0x587bcb,_0x16b518){var _0x7a2a7a={'raw':![],'where':{'id':_0x587bcb[_0x5b41('0xad')]['id']}},_0x538f64={};_0x538f64['model']=_[_0x5b41('0x40')](db[_0x5b41('0x3b')][_0x5b41('0xae')]);_0x538f64[_0x5b41('0x3f')]=_['keys'](_0x587bcb['query']);_0x538f64[_0x5b41('0x41')]=_['intersection'](_0x538f64[_0x5b41('0x3e')],_0x538f64[_0x5b41('0x3f')]);_0x7a2a7a[_0x5b41('0x43')]=_[_0x5b41('0x42')](_0x538f64['model'],qs[_0x5b41('0x44')](_0x587bcb[_0x5b41('0x3f')][_0x5b41('0x44')]));_0x7a2a7a[_0x5b41('0x43')]=_0x7a2a7a[_0x5b41('0x43')]['length']?_0x7a2a7a[_0x5b41('0x43')]:_0x538f64[_0x5b41('0x3e')];if(_0x587bcb[_0x5b41('0x3f')][_0x5b41('0xaf')]){_0x7a2a7a['include']=[{'all':!![]}];}_0x7a2a7a=_[_0x5b41('0x97')]({},_0x7a2a7a,_0x587bcb[_0x5b41('0xb0')]);return db[_0x5b41('0x3b')][_0x5b41('0x61')](_0x7a2a7a)['then'](handleEntityNotFound(_0x16b518,null))[_0x5b41('0x2d')](respondWithResult(_0x16b518,null))[_0x5b41('0x38')](handleError(_0x16b518,null));};exports[_0x5b41('0xb1')]=function(_0x28aafe,_0x1f87ea){return db[_0x5b41('0x3b')][_0x5b41('0xb1')](_0x28aafe['body'],{})[_0x5b41('0x2d')](respondWithResult(_0x1f87ea,0xc9))[_0x5b41('0x38')](handleError(_0x1f87ea,null));};exports['update']=function(_0xc2f48a,_0x5e02b7){if(_0xc2f48a[_0x5b41('0x72')]['id']){delete _0xc2f48a['body']['id'];}return db[_0x5b41('0x3b')][_0x5b41('0x61')]({'where':{'id':_0xc2f48a[_0x5b41('0xad')]['id']}})[_0x5b41('0x2d')](handleEntityNotFound(_0x5e02b7,null))[_0x5b41('0x2d')](saveUpdates(_0xc2f48a[_0x5b41('0x72')],null))['then'](respondWithResult(_0x5e02b7,null))[_0x5b41('0x38')](handleError(_0x5e02b7,null));};exports['destroy']=function(_0xbf4b1d,_0x141ec9){return db[_0x5b41('0x3b')]['find']({'where':{'id':_0xbf4b1d['params']['id']}})['then'](handleEntityNotFound(_0x141ec9,null))[_0x5b41('0x2d')](removeEntity(_0x141ec9,null))[_0x5b41('0x38')](handleError(_0x141ec9,null));};exports['describe']=function(_0x26033a,_0xf79e63){return db[_0x5b41('0x3b')]['describe']()[_0x5b41('0x2d')](respondWithResult(_0xf79e63,null))[_0x5b41('0x38')](handleError(_0xf79e63,null));};exports[_0x5b41('0xb2')]=function(_0x356987,_0x4af673,_0x5923d7){return db[_0x5b41('0xb3')]['find']({'where':{'id':_0x356987['params']['id']}})[_0x5b41('0x2d')](handleEntityNotFound(_0x4af673,null))[_0x5b41('0x2d')](function(_0x16c9af){if(_0x16c9af){return _0x16c9af[_0x5b41('0xb2')](_0x356987[_0x5b41('0x72')][_0x5b41('0xb4')],_[_0x5b41('0xb5')](_0x356987[_0x5b41('0x72')],[_0x5b41('0xb4'),'id'])||{});}})[_0x5b41('0x2d')](respondWithResult(_0x4af673,null))[_0x5b41('0x38')](handleError(_0x4af673,null));};exports[_0x5b41('0xb6')]=function(_0x4147d2,_0x4cb2d3,_0x391dd5){var _0x314847={'raw':![],'where':{}};var _0xdfe232={};var _0x478ae4={'count':0x0,'rows':[]};return db[_0x5b41('0x3b')][_0x5b41('0xb7')]({'where':{'id':_0x4147d2['params']['id']}})[_0x5b41('0x2d')](handleEntityNotFound(_0x4cb2d3,null))['then'](function(_0x35f7c9){if(_0x35f7c9){_0xdfe232[_0x5b41('0x3e')]=_['keys'](db[_0x5b41('0xb3')][_0x5b41('0xae')]);_0xdfe232[_0x5b41('0x3f')]=_['keys'](_0x4147d2[_0x5b41('0x3f')]);_0xdfe232[_0x5b41('0x41')]=_[_0x5b41('0x42')](_0xdfe232[_0x5b41('0x3e')],_0xdfe232['query']);_0x314847[_0x5b41('0x43')]=_['intersection'](_0xdfe232[_0x5b41('0x3e')],qs[_0x5b41('0x44')](_0x4147d2[_0x5b41('0x3f')][_0x5b41('0x44')]));_0x314847[_0x5b41('0x43')]=_0x314847[_0x5b41('0x43')][_0x5b41('0x5f')]?_0x314847[_0x5b41('0x43')]:_0xdfe232[_0x5b41('0x3e')];if(!_0x4147d2[_0x5b41('0x3f')]['hasOwnProperty'](_0x5b41('0x45'))){_0x314847[_0x5b41('0x26')]=qs[_0x5b41('0x26')](_0x4147d2[_0x5b41('0x3f')]['limit']);_0x314847['offset']=qs[_0x5b41('0x23')](_0x4147d2[_0x5b41('0x3f')][_0x5b41('0x23')]);}_0x314847[_0x5b41('0x46')]=qs['sort'](_0x4147d2['query']['sort']);_0x314847['where']=qs['filters'](_[_0x5b41('0xb8')](_0x4147d2[_0x5b41('0x3f')],_0xdfe232[_0x5b41('0x41')]));_0x314847[_0x5b41('0x48')][_0x5b41('0xa9')]=_0x35f7c9['id'];if(_0x4147d2['query'][_0x5b41('0x83')]){_0x314847[_0x5b41('0x48')]=_[_0x5b41('0x97')](_0x314847['where'],{'$or':_[_0x5b41('0x3a')](_0x314847[_0x5b41('0x43')],function(_0x505e79){var _0x29d6bf={};_0x29d6bf[_0x505e79]={'$like':'%'+_0x4147d2['query'][_0x5b41('0x83')]+'%'};return _0x29d6bf;})});}if(_0x4147d2['query'][_0x5b41('0x78')]){var _0x39b1a6=_0x4147d2[_0x5b41('0x3f')][_0x5b41('0x78')][_0x5b41('0x36')](',');var _0x53e2d3={};_0x53e2d3[_0x39b1a6[0x0]]={'$gte':moment(_0x39b1a6[0x1])[_0x5b41('0xb9')](_0x5b41('0xba'))};_0x314847[_0x5b41('0x48')]=_[_0x5b41('0x97')](_0x314847[_0x5b41('0x48')],_0x53e2d3);}_0x314847=_[_0x5b41('0x97')]({},_0x314847,_0x4147d2['options']);return db[_0x5b41('0xb3')][_0x5b41('0x25')]({'where':_0x314847['where']})['then'](function(_0x21cbca){_0x478ae4['count']=_0x21cbca;if(_0x4147d2['query'][_0x5b41('0xaf')]){_0x314847[_0x5b41('0xbb')]=[{'all':!![]}];}return db['FaxMessage'][_0x5b41('0xbc')](_0x314847);})['then'](function(_0x10564b){_0x478ae4['rows']=_0x10564b;return _0x478ae4;});}})['then'](respondWithFilteredResult(_0x4cb2d3,_0x314847))[_0x5b41('0x38')](handleError(_0x4cb2d3,null));};exports[_0x5b41('0xbd')]=function(_0x38421c,_0xddc2e4,_0x395ac6){return db['FaxInteraction']['find']({'where':{'id':_0x38421c[_0x5b41('0xad')]['id']}})[_0x5b41('0x2d')](handleEntityNotFound(_0xddc2e4,null))['then'](function(_0x550420){if(_0x550420){return _0x550420['setTags'](_0x38421c[_0x5b41('0x72')]['ids'],_['omit'](_0x38421c[_0x5b41('0x72')],[_0x5b41('0xb4'),'id'])||{})[_0x5b41('0xbe')](function(){return db[_0x5b41('0x6d')][_0x5b41('0xbc')]({'attributes':['id',_0x5b41('0x30'),_0x5b41('0x4a')],'where':{'id':_0x38421c[_0x5b41('0x72')][_0x5b41('0xb4')]}});})[_0x5b41('0x2d')](function(_0x14ae66){socket['emit'](_0x5b41('0xbf'),{'id':Number(_0x38421c[_0x5b41('0xad')]['id']),'tags':_0x14ae66||[]});return{'id':Number(_0x38421c[_0x5b41('0xad')]['id']),'tags':_0x14ae66||[]};});}})[_0x5b41('0x2d')](respondWithResult(_0xddc2e4,null))[_0x5b41('0x38')](handleError(_0xddc2e4,null));};exports[_0x5b41('0xc0')]=function(_0x54d9d1,_0x123a3a,_0xe7d646){return db['FaxInteraction'][_0x5b41('0x61')]({'where':{'id':_0x54d9d1[_0x5b41('0xad')]['id']}})['then'](handleEntityNotFound(_0x123a3a,null))[_0x5b41('0x2d')](function(_0x492345){if(_0x492345){return _0x492345[_0x5b41('0xc0')](_0x54d9d1[_0x5b41('0x3f')][_0x5b41('0xb4')]);}})[_0x5b41('0x2d')](respondWithStatusCode(_0x123a3a,null))[_0x5b41('0x38')](handleError(_0x123a3a,null));};exports['download']=function(_0x247d1c,_0x328560){var _0xd6ee0f=moment()[_0x5b41('0xc1')]()[_0x5b41('0x96')]();var _0x10dcf5=path['join'](config[_0x5b41('0xc2')],'server',_0x5b41('0xc3'),_0x5b41('0xc4'));var _0x8cc41a=path['join'](config[_0x5b41('0xc2')],_0x5b41('0xc5'),_0x5b41('0xc3'),'attachments');var _0x2b5c06=path['join'](_0x10dcf5,_0xd6ee0f);var _0x164e18=util['format'](_0x5b41('0xc6'),_0x247d1c[_0x5b41('0xad')]['id'],_0xd6ee0f);var _0x3af3e3=path[_0x5b41('0xc7')](_0x10dcf5,_0x164e18);var _0x399c67=[];_0x399c67[_0x5b41('0x37')]({'model':db['Attachment'],'as':_0x5b41('0xc8'),'raw':!![]});var _0xdeaa94=[{'model':db[_0x5b41('0xb3')],'as':'Messages','attributes':['id',_0x5b41('0x72'),_0x5b41('0xc9')],'include':_0x399c67}];return db[_0x5b41('0x3b')][_0x5b41('0x61')]({'where':{'id':_0x247d1c['params']['id']},'include':_0xdeaa94})[_0x5b41('0x2d')](handleEntityNotFound(_0x328560,null))['then'](function(_0x195af5){if(_0x195af5&&_0x195af5['Messages']){var _0x1c823d=_0x195af5[_0x5b41('0xca')]({'plain':!![]});fs[_0x5b41('0xcb')](_0x2b5c06);for(var _0x197cf4=0x0;_0x197cf4<_0x1c823d[_0x5b41('0xcc')][_0x5b41('0x5f')];_0x197cf4++){var _0x2618f1=_0x1c823d[_0x5b41('0xcc')][_0x197cf4]['Attachment'];if(_0x2618f1){var _0x8bbfc4=path[_0x5b41('0xc7')](_0x8cc41a,_0x2618f1['basename']);if(fs[_0x5b41('0xcd')](_0x8bbfc4)){fs['createReadStream'](_0x8bbfc4)['pipe'](fs['createWriteStream'](path[_0x5b41('0xc7')](_0x2b5c06,_0x2618f1['basename'])));}}}return BPromise[_0x5b41('0x8e')]()[_0x5b41('0x2d')](function(){return new BPromise(function(_0xad3008,_0x53edd0){zipdir(_0x2b5c06,{'saveTo':_0x3af3e3},function(_0x78aae6,_0x4f2c3c){if(_0x78aae6)return _0x53edd0(_0x78aae6);return _0xad3008(_0x4f2c3c);});})[_0x5b41('0x2d')](function(){return new BPromise(function(_0x22635a,_0x481a93){rimraf(_0x2b5c06,function(_0x345db0){if(_0x345db0)_0x481a93(_0x345db0);return _0x22635a();});});})['then'](function(){return _0x328560[_0x5b41('0xce')](_0x3af3e3,_0x164e18,function(_0x512d5b){if(_0x512d5b){console['log'](_0x5b41('0xcf'),_0x512d5b);}else{fs[_0x5b41('0xd0')](_0x3af3e3);}});});});}else{return _0x328560['sendStatus'](0xc8);}})[_0x5b41('0x38')](handleError(_0x328560,null));};
\ No newline at end of file
index ed1c71c..57a2d43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfeb2=['save','update','remove','then','setDataValue','Users','map','unreadMessages','length','emit','hasOwnProperty','hook','exports','../../mysqldb','FaxInteraction','FaxMessage'];(function(_0x20cae6,_0x893116){var _0x2fb00e=function(_0x2ed5a0){while(--_0x2ed5a0){_0x20cae6['push'](_0x20cae6['shift']());}};_0x2fb00e(++_0x893116);}(_0xfeb2,0xdd));var _0x2feb=function(_0x56608c,_0x29eb74){_0x56608c=_0x56608c-0x0;var _0x3c7fb0=_0xfeb2[_0x56608c];return _0x3c7fb0;};'use strict';var EventEmitter=require('events');var FaxInteraction=require(_0x2feb('0x0'))['db'][_0x2feb('0x1')];var FaxMessage=require(_0x2feb('0x0'))['db'][_0x2feb('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2feb('0x3'),'afterUpdate':_0x2feb('0x4'),'afterDestroy':_0x2feb('0x5')};function emitEvent(_0x453de0){return function(_0x1d8606,_0x25d86c,_0x24fa24){_0x1d8606['getUsers']({'attributes':['id'],'raw':!![]})[_0x2feb('0x6')](function(_0x324a35){_0x1d8606[_0x2feb('0x7')](_0x2feb('0x8'),_0x324a35[_0x2feb('0x9')](function(_0x2cc38e){return{'id':_0x2cc38e['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x1d8606['id'],'direction':'in','read':![]},'raw':!![]});})[_0x2feb('0x6')](function(_0x111b9f){_0x1d8606[_0x2feb('0x7')](_0x2feb('0xa'),_0x111b9f[_0x2feb('0xb')]);FaxInteractionEvents[_0x2feb('0xc')](_0x453de0+':'+_0x1d8606['id'],_0x1d8606);FaxInteractionEvents[_0x2feb('0xc')](_0x453de0,_0x1d8606);_0x24fa24(null);})['catch'](_0x24fa24(null));};}for(var e in events){if(events[_0x2feb('0xd')](e)){var event=events[e];FaxInteraction[_0x2feb('0xe')](e,emitEvent(event));}}module[_0x2feb('0xf')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x4ba1=['length','emit','catch','exports','events','FaxInteraction','setMaxListeners','save','update','remove','then','setDataValue','Users','map'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0x4ba1,0x1d2));var _0x14ba=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x4ba1[_0x167cc1];return _0x10bc4b;};'use strict';var EventEmitter=require(_0x14ba('0x0'));var FaxInteraction=require('../../mysqldb')['db'][_0x14ba('0x1')];var FaxMessage=require('../../mysqldb')['db']['FaxMessage'];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x14ba('0x2')](0x0);var events={'afterCreate':_0x14ba('0x3'),'afterUpdate':_0x14ba('0x4'),'afterDestroy':_0x14ba('0x5')};function emitEvent(_0x49b354){return function(_0x38d023,_0x5cba3d,_0x4827e4){_0x38d023['getUsers']({'attributes':['id'],'raw':!![]})[_0x14ba('0x6')](function(_0xec9ac3){_0x38d023[_0x14ba('0x7')](_0x14ba('0x8'),_0xec9ac3[_0x14ba('0x9')](function(_0x4dd324){return{'id':_0x4dd324['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x38d023['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x2c8ec5){_0x38d023['setDataValue']('unreadMessages',_0x2c8ec5[_0x14ba('0xa')]);FaxInteractionEvents[_0x14ba('0xb')](_0x49b354+':'+_0x38d023['id'],_0x38d023);FaxInteractionEvents[_0x14ba('0xb')](_0x49b354,_0x38d023);_0x4827e4(null);})[_0x14ba('0xc')](_0x4827e4(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0x14ba('0xd')]=FaxInteractionEvents;
\ No newline at end of file
index 1049245..555f2ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a90=['changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./faxInteraction.attributes','exports','FaxInteraction','fax_interactions'];(function(_0x589aee,_0x140a03){var _0x2f5ed4=function(_0x3d224f){while(--_0x3d224f){_0x589aee['push'](_0x589aee['shift']());}};_0x2f5ed4(++_0x140a03);}(_0x3a90,0x1f2));var _0x03a9=function(_0x33299b,_0x43437a){_0x33299b=_0x33299b-0x0;var _0x2df205=_0x3a90[_0x33299b];return _0x2df205;};'use strict';var _=require(_0x03a9('0x0'));var util=require('util');var logger=require(_0x03a9('0x1'))(_0x03a9('0x2'));var moment=require(_0x03a9('0x3'));var BPromise=require(_0x03a9('0x4'));var rp=require(_0x03a9('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x03a9('0x6'));var config=require(_0x03a9('0x7'));var attributes=require(_0x03a9('0x8'));module[_0x03a9('0x9')]=function(_0x38f21a,_0x50acb6){return _0x38f21a['define'](_0x03a9('0xa'),attributes,{'tableName':_0x03a9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1c99e3,_0x17d87d,_0x5e493c){if(_0x1c99e3[_0x03a9('0xc')](_0x03a9('0xd'))){_0x1c99e3[_0x03a9('0xe')]=moment()[_0x03a9('0xf')](_0x03a9('0x10'));}_0x5e493c(null,_0x1c99e3);}}});};
\ No newline at end of file
+var _0x5934=['closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxInteraction.attributes','exports','define','fax_interactions','closed'];(function(_0xf97eb0,_0x1578b7){var _0xea70f4=function(_0x574c8d){while(--_0x574c8d){_0xf97eb0['push'](_0xf97eb0['shift']());}};_0xea70f4(++_0x1578b7);}(_0x5934,0x146));var _0x4593=function(_0x368fa0,_0x13cf8b){_0x368fa0=_0x368fa0-0x0;var _0x41907f=_0x5934[_0x368fa0];return _0x41907f;};'use strict';var _=require(_0x4593('0x0'));var util=require(_0x4593('0x1'));var logger=require(_0x4593('0x2'))('api');var moment=require(_0x4593('0x3'));var BPromise=require(_0x4593('0x4'));var rp=require(_0x4593('0x5'));var fs=require('fs');var path=require(_0x4593('0x6'));var rimraf=require(_0x4593('0x7'));var config=require(_0x4593('0x8'));var attributes=require(_0x4593('0x9'));module[_0x4593('0xa')]=function(_0x4fe124,_0x4b7936){return _0x4fe124[_0x4593('0xb')]('FaxInteraction',attributes,{'tableName':_0x4593('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1d6130,_0xc3c5e2,_0x25101a){if(_0x1d6130['changed'](_0x4593('0xd'))){_0x1d6130[_0x4593('0xe')]=moment()[_0x4593('0xf')](_0x4593('0x10'));}_0x25101a(null,_0x1d6130);}}});};
\ No newline at end of file
index 0df9d07..b3365f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80b1=['info','FaxInteraction,\x20%s,\x20%s','request\x20sent','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','FaxInteraction','update','raw','options','where','attributes','limit','UpdateFaxInteraction','debug','AddTagsToFaxInteraction','find','addTags','body','ids','omit','spread','AddTags','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','register','request','then'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x80b1,0x1be));var _0x180b=function(_0x5ab653,_0x2b8dba){_0x5ab653=_0x5ab653-0x0;var _0x37b593=_0x80b1[_0x5ab653];return _0x37b593;};'use strict';var _=require('lodash');var util=require(_0x180b('0x0'));var moment=require(_0x180b('0x1'));var BPromise=require(_0x180b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x180b('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x180b('0x4'))(_0x180b('0x5'));var config=require(_0x180b('0x6'));var jayson=require(_0x180b('0x7'));var client=jayson['client'][_0x180b('0x8')]({'port':0x232a});config[_0x180b('0x9')]=_[_0x180b('0xa')](config[_0x180b('0x9')],{'host':_0x180b('0xb'),'port':0x18eb});var socket=require(_0x180b('0xc'))(new Redis(config[_0x180b('0x9')]));require('./faxInteraction.socket')[_0x180b('0xd')](socket);function respondWithRpcPromise(_0x5b9005,_0x9149fa,_0x527328){return new BPromise(function(_0x4bf680,_0x55ab10){return client[_0x180b('0xe')](_0x5b9005,_0x527328)[_0x180b('0xf')](function(_0x416809){logger[_0x180b('0x10')](_0x180b('0x11'),_0x9149fa,_0x180b('0x12'));logger['debug'](_0x180b('0x13'),_0x9149fa,_0x180b('0x12'),JSON[_0x180b('0x14')](_0x416809));if(_0x416809[_0x180b('0x15')]){if(_0x416809[_0x180b('0x15')][_0x180b('0x16')]===0x1f4){logger['error'](_0x180b('0x11'),_0x9149fa,_0x416809['error'][_0x180b('0x17')]);return _0x55ab10(_0x416809[_0x180b('0x15')][_0x180b('0x17')]);}logger['error'](_0x180b('0x11'),_0x9149fa,_0x416809[_0x180b('0x15')]['message']);return _0x4bf680(_0x416809[_0x180b('0x15')][_0x180b('0x17')]);}else{logger[_0x180b('0x10')]('FaxInteraction,\x20%s,\x20%s',_0x9149fa,_0x180b('0x12'));_0x4bf680(_0x416809['result']['message']);}})[_0x180b('0x18')](function(_0x15510f){logger[_0x180b('0x15')]('FaxInteraction,\x20%s,\x20%s',_0x9149fa,_0x15510f);_0x55ab10(_0x15510f);});});}exports['UpdateFaxInteraction']=function(_0x4ed7b7){var _0x3cc0ee=this;return new Promise(function(_0xa6b9bb,_0x4b2aab){return db[_0x180b('0x19')][_0x180b('0x1a')](_0x4ed7b7['body'],{'raw':_0x4ed7b7['options']?_0x4ed7b7['options'][_0x180b('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4ed7b7[_0x180b('0x1c')]?_0x4ed7b7[_0x180b('0x1c')][_0x180b('0x1d')]||null:null,'attributes':_0x4ed7b7[_0x180b('0x1c')]?_0x4ed7b7[_0x180b('0x1c')][_0x180b('0x1e')]||null:null,'limit':_0x4ed7b7[_0x180b('0x1c')]?_0x4ed7b7[_0x180b('0x1c')][_0x180b('0x1f')]||null:null})[_0x180b('0xf')](function(_0x2aad8a){logger[_0x180b('0x10')](_0x180b('0x20'),_0x4ed7b7);logger[_0x180b('0x21')](_0x180b('0x20'),_0x4ed7b7,JSON[_0x180b('0x14')](_0x2aad8a));_0xa6b9bb(_0x2aad8a);})[_0x180b('0x18')](function(_0x1fd872){logger[_0x180b('0x15')]('UpdateFaxInteraction',_0x1fd872['message'],_0x4ed7b7);_0x4b2aab(_0x3cc0ee[_0x180b('0x15')](0x1f4,_0x1fd872[_0x180b('0x17')]));});});};exports[_0x180b('0x22')]=function(_0x3f2ded){return new Promise(function(_0x2b1f48,_0x31b53f){return db[_0x180b('0x19')][_0x180b('0x23')]({'where':_0x3f2ded['options']?_0x3f2ded[_0x180b('0x1c')][_0x180b('0x1d')]||null:null})[_0x180b('0xf')](function(_0x577880){if(_0x577880){return _0x577880[_0x180b('0x24')](_0x3f2ded[_0x180b('0x25')][_0x180b('0x26')],_[_0x180b('0x27')](_0x3f2ded[_0x180b('0x25')],[_0x180b('0x26'),'id'])||{});}})[_0x180b('0x28')](function(_0x1575c5){logger['info']('AddTags',_0x3f2ded);logger[_0x180b('0x21')](_0x180b('0x29'),_0x3f2ded,JSON[_0x180b('0x14')](_0x1575c5));_0x2b1f48(_0x1575c5);})[_0x180b('0x18')](function(_0x23b422){logger['error'](_0x180b('0x29'),_0x23b422[_0x180b('0x17')],_0x3f2ded);_0x31b53f(_this[_0x180b('0x15')](0x1f4,_0x23b422[_0x180b('0x17')]));});});};
\ No newline at end of file
+var _0x5428=['client','redis','defaults','socket.io-emitter','./faxInteraction.socket','register','request','info','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','FaxInteraction,\x20%s,\x20%s','result','catch','update','body','options','raw','where','attributes','limit','UpdateFaxInteraction','FaxInteraction','then','addTags','omit','ids','spread','AddTags','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x436bc5,_0x47b676){var _0x3795fc=function(_0x12daa5){while(--_0x12daa5){_0x436bc5['push'](_0x436bc5['shift']());}};_0x3795fc(++_0x47b676);}(_0x5428,0x19b));var _0x8542=function(_0x5f005e,_0x400932){_0x5f005e=_0x5f005e-0x0;var _0x702fd6=_0x5428[_0x5f005e];return _0x702fd6;};'use strict';var _=require(_0x8542('0x0'));var util=require(_0x8542('0x1'));var moment=require(_0x8542('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8542('0x3'));var db=require(_0x8542('0x4'))['db'];var utils=require(_0x8542('0x5'));var logger=require(_0x8542('0x6'))(_0x8542('0x7'));var config=require('../../config/environment');var jayson=require(_0x8542('0x8'));var client=jayson[_0x8542('0x9')]['http']({'port':0x232a});config[_0x8542('0xa')]=_[_0x8542('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x8542('0xc'))(new Redis(config['redis']));require(_0x8542('0xd'))[_0x8542('0xe')](socket);function respondWithRpcPromise(_0x5106e9,_0x3a2c5f,_0xae9960){return new BPromise(function(_0x23a43b,_0x12d6c7){return client[_0x8542('0xf')](_0x5106e9,_0xae9960)['then'](function(_0x426c7c){logger[_0x8542('0x10')]('FaxInteraction,\x20%s,\x20%s',_0x3a2c5f,'request\x20sent');logger[_0x8542('0x11')](_0x8542('0x12'),_0x3a2c5f,_0x8542('0x13'),JSON[_0x8542('0x14')](_0x426c7c));if(_0x426c7c['error']){if(_0x426c7c[_0x8542('0x15')][_0x8542('0x16')]===0x1f4){logger[_0x8542('0x15')]('FaxInteraction,\x20%s,\x20%s',_0x3a2c5f,_0x426c7c['error']['message']);return _0x12d6c7(_0x426c7c[_0x8542('0x15')][_0x8542('0x17')]);}logger[_0x8542('0x15')](_0x8542('0x18'),_0x3a2c5f,_0x426c7c[_0x8542('0x15')][_0x8542('0x17')]);return _0x23a43b(_0x426c7c[_0x8542('0x15')]['message']);}else{logger[_0x8542('0x10')](_0x8542('0x18'),_0x3a2c5f,_0x8542('0x13'));_0x23a43b(_0x426c7c[_0x8542('0x19')][_0x8542('0x17')]);}})[_0x8542('0x1a')](function(_0x554850){logger[_0x8542('0x15')](_0x8542('0x18'),_0x3a2c5f,_0x554850);_0x12d6c7(_0x554850);});});}exports['UpdateFaxInteraction']=function(_0x366dca){var _0x441585=this;return new Promise(function(_0x2ff232,_0x189841){return db['FaxInteraction'][_0x8542('0x1b')](_0x366dca[_0x8542('0x1c')],{'raw':_0x366dca[_0x8542('0x1d')]?_0x366dca[_0x8542('0x1d')][_0x8542('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x366dca[_0x8542('0x1d')]?_0x366dca[_0x8542('0x1d')][_0x8542('0x1f')]||null:null,'attributes':_0x366dca[_0x8542('0x1d')]?_0x366dca[_0x8542('0x1d')][_0x8542('0x20')]||null:null,'limit':_0x366dca['options']?_0x366dca[_0x8542('0x1d')][_0x8542('0x21')]||null:null})['then'](function(_0x346255){logger[_0x8542('0x10')](_0x8542('0x22'),_0x366dca);logger[_0x8542('0x11')](_0x8542('0x22'),_0x366dca,JSON[_0x8542('0x14')](_0x346255));_0x2ff232(_0x346255);})['catch'](function(_0x46b929){logger[_0x8542('0x15')]('UpdateFaxInteraction',_0x46b929['message'],_0x366dca);_0x189841(_0x441585['error'](0x1f4,_0x46b929[_0x8542('0x17')]));});});};exports['AddTagsToFaxInteraction']=function(_0xa4749b){return new Promise(function(_0xa93a14,_0x3815f3){return db[_0x8542('0x23')]['find']({'where':_0xa4749b[_0x8542('0x1d')]?_0xa4749b['options'][_0x8542('0x1f')]||null:null})[_0x8542('0x24')](function(_0x59aa13){if(_0x59aa13){return _0x59aa13[_0x8542('0x25')](_0xa4749b[_0x8542('0x1c')]['ids'],_[_0x8542('0x26')](_0xa4749b[_0x8542('0x1c')],[_0x8542('0x27'),'id'])||{});}})[_0x8542('0x28')](function(_0x121dca){logger[_0x8542('0x10')](_0x8542('0x29'),_0xa4749b);logger[_0x8542('0x11')](_0x8542('0x29'),_0xa4749b,JSON[_0x8542('0x14')](_0x121dca));_0xa93a14(_0x121dca);})['catch'](function(_0x577040){logger[_0x8542('0x15')](_0x8542('0x29'),_0x577040[_0x8542('0x17')],_0xa4749b);_0x3815f3(_this[_0x8542('0x15')](0x1f4,_0x577040[_0x8542('0x17')]));});});};
\ No newline at end of file
index 13e5585..0a027c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1487=['update','emit','removeListener','register','./faxInteraction.events','save','remove'];(function(_0x62acd5,_0x4ddb49){var _0x227ab4=function(_0x24fb97){while(--_0x24fb97){_0x62acd5['push'](_0x62acd5['shift']());}};_0x227ab4(++_0x4ddb49);}(_0x1487,0x9e));var _0x7148=function(_0x75ce5b,_0x3b582f){_0x75ce5b=_0x75ce5b-0x0;var _0x22195e=_0x1487[_0x75ce5b];return _0x22195e;};'use strict';var FaxInteractionEvents=require(_0x7148('0x0'));var events=[_0x7148('0x1'),_0x7148('0x2'),_0x7148('0x3')];function createListener(_0x124072,_0x1338de){return function(_0x1d5ebe){_0x1338de[_0x7148('0x4')](_0x124072,_0x1d5ebe);};}function removeListener(_0x2e247e,_0x3c0261){return function(){FaxInteractionEvents[_0x7148('0x5')](_0x2e247e,_0x3c0261);};}exports[_0x7148('0x6')]=function(_0x2263f8){for(var _0x17a399=0x0,_0x1f6737=events['length'];_0x17a399<_0x1f6737;_0x17a399++){var _0xb50721=events[_0x17a399];var _0x26135c=createListener('faxInteraction:'+_0xb50721,_0x2263f8);FaxInteractionEvents['on'](_0xb50721,_0x26135c);}};
\ No newline at end of file
+var _0xe917=['removeListener','register','length','faxInteraction:','./faxInteraction.events','save','remove','update'];(function(_0x18f00d,_0x1954ef){var _0x4fa895=function(_0x22ee74){while(--_0x22ee74){_0x18f00d['push'](_0x18f00d['shift']());}};_0x4fa895(++_0x1954ef);}(_0xe917,0x1f4));var _0x7e91=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xe917[_0x21a9d9];return _0x46adce;};'use strict';var FaxInteractionEvents=require(_0x7e91('0x0'));var events=[_0x7e91('0x1'),_0x7e91('0x2'),_0x7e91('0x3')];function createListener(_0x4f6116,_0xcc74f7){return function(_0x37273b){_0xcc74f7['emit'](_0x4f6116,_0x37273b);};}function removeListener(_0x35a5e1,_0x2c09a7){return function(){FaxInteractionEvents[_0x7e91('0x4')](_0x35a5e1,_0x2c09a7);};}exports[_0x7e91('0x5')]=function(_0x1a86dd){for(var _0x2511df=0x0,_0x35f8bb=events[_0x7e91('0x6')];_0x2511df<_0x35f8bb;_0x2511df++){var _0x5ecce5=events[_0x2511df];var _0x48f59a=createListener(_0x7e91('0x7')+_0x5ecce5,_0x1a86dd);FaxInteractionEvents['on'](_0x5ecce5,_0x48f59a);}};
\ No newline at end of file
index 1b41813..6788622 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x408e=['/:id','show','/:id/messages','/:id/download','download','post','create','addMessage','fax','faxinteraction:addtags','put','tracked','faxinteraction:update','update','delete','faxinteraction:destroy','destroy','removeTags','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/describe','describe','get'];(function(_0x504677,_0x39fc14){var _0x5802fa=function(_0x3db145){while(--_0x3db145){_0x504677['push'](_0x504677['shift']());}};_0x5802fa(++_0x39fc14);}(_0x408e,0x1d3));var _0xe408=function(_0x459b3e,_0x5a0c7a){_0x459b3e=_0x459b3e-0x0;var _0xaf15e4=_0x408e[_0x459b3e];return _0xaf15e4;};'use strict';var multer=require('multer');var util=require(_0xe408('0x0'));var path=require(_0xe408('0x1'));var timeout=require('connect-timeout');var express=require(_0xe408('0x2'));var router=express[_0xe408('0x3')]();var fs_extra=require(_0xe408('0x4'));var auth=require(_0xe408('0x5'));var interaction=require(_0xe408('0x6'));var config=require(_0xe408('0x7'));var controller=require('./faxInteraction.controller');router['get']('/',auth[_0xe408('0x8')](),controller[_0xe408('0x9')]);router['get'](_0xe408('0xa'),auth['isAuthenticated'](),controller[_0xe408('0xb')]);router[_0xe408('0xc')](_0xe408('0xd'),auth[_0xe408('0x8')](),controller[_0xe408('0xe')]);router[_0xe408('0xc')](_0xe408('0xf'),auth['isAuthenticated'](),controller['getMessages']);router['get'](_0xe408('0x10'),auth[_0xe408('0x8')](),controller[_0xe408('0x11')]);router[_0xe408('0x12')]('/',auth['isAuthenticated'](),controller[_0xe408('0x13')]);router[_0xe408('0x12')](_0xe408('0xf'),auth[_0xe408('0x8')](),controller[_0xe408('0x14')]);router[_0xe408('0x12')]('/:id/tags',auth[_0xe408('0x8')](),interaction['tracked'](_0xe408('0x15'),_0xe408('0x16')),controller['addTags']);router[_0xe408('0x17')](_0xe408('0xd'),auth[_0xe408('0x8')](),interaction[_0xe408('0x18')](_0xe408('0x15'),_0xe408('0x19')),controller[_0xe408('0x1a')]);router[_0xe408('0x1b')]('/:id',auth[_0xe408('0x8')](),interaction[_0xe408('0x18')]('fax',_0xe408('0x1c')),controller[_0xe408('0x1d')]);router['delete']('/:id/tags',auth[_0xe408('0x8')](),controller[_0xe408('0x1e')]);module[_0xe408('0x1f')]=router;
\ No newline at end of file
+var _0x1f49=['removeTags','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','./faxInteraction.controller','get','index','/describe','isAuthenticated','describe','/:id','getMessages','/:id/download','download','post','create','/:id/messages','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','faxinteraction:update','update','delete'];(function(_0x5db313,_0x3c8f0c){var _0x36d503=function(_0x5d1ff6){while(--_0x5d1ff6){_0x5db313['push'](_0x5db313['shift']());}};_0x36d503(++_0x3c8f0c);}(_0x1f49,0x1f1));var _0x91f4=function(_0x1cb18a,_0x33167a){_0x1cb18a=_0x1cb18a-0x0;var _0x22442e=_0x1f49[_0x1cb18a];return _0x22442e;};'use strict';var multer=require(_0x91f4('0x0'));var util=require(_0x91f4('0x1'));var path=require(_0x91f4('0x2'));var timeout=require('connect-timeout');var express=require(_0x91f4('0x3'));var router=express[_0x91f4('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x91f4('0x5'));var interaction=require(_0x91f4('0x6'));var config=require('../../config/environment');var controller=require(_0x91f4('0x7'));router[_0x91f4('0x8')]('/',auth['isAuthenticated'](),controller[_0x91f4('0x9')]);router[_0x91f4('0x8')](_0x91f4('0xa'),auth[_0x91f4('0xb')](),controller[_0x91f4('0xc')]);router[_0x91f4('0x8')](_0x91f4('0xd'),auth[_0x91f4('0xb')](),controller['show']);router[_0x91f4('0x8')]('/:id/messages',auth[_0x91f4('0xb')](),controller[_0x91f4('0xe')]);router[_0x91f4('0x8')](_0x91f4('0xf'),auth[_0x91f4('0xb')](),controller[_0x91f4('0x10')]);router[_0x91f4('0x11')]('/',auth[_0x91f4('0xb')](),controller[_0x91f4('0x12')]);router[_0x91f4('0x11')](_0x91f4('0x13'),auth[_0x91f4('0xb')](),controller[_0x91f4('0x14')]);router[_0x91f4('0x11')](_0x91f4('0x15'),auth[_0x91f4('0xb')](),interaction[_0x91f4('0x16')](_0x91f4('0x17'),_0x91f4('0x18')),controller[_0x91f4('0x19')]);router[_0x91f4('0x1a')]('/:id',auth['isAuthenticated'](),interaction['tracked'](_0x91f4('0x17'),_0x91f4('0x1b')),controller[_0x91f4('0x1c')]);router[_0x91f4('0x1d')](_0x91f4('0xd'),auth[_0x91f4('0xb')](),interaction[_0x91f4('0x16')](_0x91f4('0x17'),'faxinteraction:destroy'),controller['destroy']);router[_0x91f4('0x1d')](_0x91f4('0x15'),auth[_0x91f4('0xb')](),controller[_0x91f4('0x1e')]);module['exports']=router;
\ No newline at end of file
index b512db5..0f5ee08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3b5=['ENUM','out','DATE','TEXT','medium','BOOLEAN'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xc3b5,0x6f));var _0x5c3b=function(_0x30af6e,_0xa93ffd){_0x30af6e=_0x30af6e-0x0;var _0x386424=_0xc3b5[_0x30af6e];return _0x386424;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0x5c3b('0x0')](_0x5c3b('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x5c3b('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x5c3b('0x3')]('in',_0x5c3b('0x4')),'defaultValue':_0x5c3b('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x5c3b('0x0')],'defaultValue':null},'readAt':{'type':Sequelize[_0x5c3b('0x5')]}};
\ No newline at end of file
+var _0xd737=['DATE','sequelize','TEXT','BOOLEAN','ENUM','out'];(function(_0x2cc0b3,_0x120bf1){var _0x1667ef=function(_0x3abcb4){while(--_0x3abcb4){_0x2cc0b3['push'](_0x2cc0b3['shift']());}};_0x1667ef(++_0x120bf1);}(_0xd737,0x85));var _0x7d73=function(_0x2730ad,_0x4d247d){_0x2730ad=_0x2730ad-0x0;var _0x1d4363=_0xd737[_0x2730ad];return _0x1d4363;};'use strict';var Sequelize=require(_0x7d73('0x0'));module['exports']={'body':{'type':Sequelize[_0x7d73('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x7d73('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x7d73('0x3')]('in',_0x7d73('0x4')),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize['TEXT'],'defaultValue':null},'readAt':{'type':Sequelize[_0x7d73('0x5')]}};
\ No newline at end of file
index 2e1f8f9..923de18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x880e=['user','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','stringify','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','QueryTypes','SELECT','User','agent','fullname','email','internal','manual','interface','channel','event','EventManager','acceptmessage','fax-interactions','fax','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','contact','SIP/%s','create','CmContact','findOne','Attachment','AttachmentId','SendFax','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','server','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','jayson/promise','http','client','request','then','info','FaxMessage,\x20%s,\x20%s','debug','FaxMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','sendStatus','offset','undefined','count','limit','status','set','Content-Range','json','reject','update','destroy','end','stack','name','send','index','map','FaxMessage','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','sort','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','find','body','describe','accept','readAt','format','UserId'];(function(_0x5b673f,_0x4e69a8){var _0x5d6898=function(_0x273437){while(--_0x273437){_0x5b673f['push'](_0x5b673f['shift']());}};_0x5d6898(++_0x4e69a8);}(_0x880e,0x1df));var _0xe880=function(_0x30f030,_0xd03b7a){_0x30f030=_0x30f030-0x0;var _0xf7614f=_0x880e[_0x30f030];return _0xf7614f;};'use strict';var emlformat=require(_0xe880('0x0'));var rimraf=require(_0xe880('0x1'));var zipdir=require(_0xe880('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe880('0x3'));var moment=require(_0xe880('0x4'));var BPromise=require(_0xe880('0x5'));var Mustache=require(_0xe880('0x6'));var util=require(_0xe880('0x7'));var path=require(_0xe880('0x8'));var sox=require(_0xe880('0x9'));var csv=require(_0xe880('0xa'));var ejs=require(_0xe880('0xb'));var fs=require('fs');var fs_extra=require(_0xe880('0xc'));var _=require(_0xe880('0xd'));var squel=require(_0xe880('0xe'));var crypto=require(_0xe880('0xf'));var jsforce=require(_0xe880('0x10'));var deskjs=require(_0xe880('0x11'));var toCsv=require(_0xe880('0xa'));var querystring=require(_0xe880('0x12'));var Papa=require(_0xe880('0x13'));var Redis=require(_0xe880('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xe880('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe880('0x16'));var logger=require(_0xe880('0x17'))(_0xe880('0x18'));var utils=require('../../config/utils');var config=require(_0xe880('0x19'));var licenseUtil=require(_0xe880('0x1a'));var db=require(_0xe880('0x1b'))['db'];config[_0xe880('0x1c')]=_[_0xe880('0x1d')](config[_0xe880('0x1c')],{'host':_0xe880('0x1e'),'port':0x18eb});var socket=require(_0xe880('0x1f'))(new Redis(config[_0xe880('0x1c')]));require(_0xe880('0x20'))[_0xe880('0x21')](socket);var jayson=require(_0xe880('0x22'));var client=jayson['client'][_0xe880('0x23')]({'port':0x232c});var client9002=jayson[_0xe880('0x24')][_0xe880('0x23')]({'port':0x232a});function respondWithRpcPromise(_0x52cde8,_0x16b06f,_0x55b54a,_0x46fbd5){return new BPromise(function(_0x324cd9,_0x45f1cb){var _0x929635=_0x46fbd5||client;return _0x929635[_0xe880('0x25')](_0x52cde8,_0x55b54a)[_0xe880('0x26')](function(_0x546c72){logger[_0xe880('0x27')](_0xe880('0x28'),_0x16b06f,'request\x20sent');logger[_0xe880('0x29')](_0xe880('0x2a'),_0x16b06f,_0xe880('0x2b'),JSON['stringify'](_0x546c72));if(_0x546c72[_0xe880('0x2c')]){if(_0x546c72[_0xe880('0x2c')][_0xe880('0x2d')]===0x1f4){logger['error']('FaxMessage,\x20%s,\x20%s',_0x16b06f,_0x546c72[_0xe880('0x2c')][_0xe880('0x2e')]);return _0x45f1cb(_0x546c72[_0xe880('0x2c')][_0xe880('0x2e')]);}logger['error'](_0xe880('0x28'),_0x16b06f,_0x546c72[_0xe880('0x2c')]['message']);return _0x324cd9(_0x546c72['error'][_0xe880('0x2e')]);}else{logger[_0xe880('0x27')](_0xe880('0x28'),_0x16b06f,'request\x20sent');_0x324cd9(_0x546c72['result'][_0xe880('0x2e')]);}})['catch'](function(_0x3e10a9){logger[_0xe880('0x2c')](_0xe880('0x28'),_0x16b06f,_0x3e10a9);_0x45f1cb(_0x3e10a9);});});}function respondWithStatusCode(_0x40845a,_0x36bdc9){_0x36bdc9=_0x36bdc9||0xcc;return function(_0xa51335){if(_0xa51335){return _0x40845a[_0xe880('0x2f')](_0x36bdc9);}return _0x40845a['status'](_0x36bdc9)['end']();};}function respondWithResult(_0x45d29c,_0x4eea05){_0x4eea05=_0x4eea05||0xc8;return function(_0x3993a7){if(_0x3993a7){return _0x45d29c['status'](_0x4eea05)['json'](_0x3993a7);}};}function respondWithFilteredResult(_0x54c71f,_0xda10d2){return function(_0x1d6eda){if(_0x1d6eda){var _0x2974cf=typeof _0xda10d2[_0xe880('0x30')]===_0xe880('0x31')&&typeof _0xda10d2['limit']==='undefined';var _0x3bb646=_0x1d6eda['count'];var _0x52d947=_0x2974cf?0x0:_0xda10d2[_0xe880('0x30')];var _0x5074e7=_0x2974cf?_0x1d6eda[_0xe880('0x32')]:_0xda10d2[_0xe880('0x30')]+_0xda10d2[_0xe880('0x33')];var _0x50e4e6;if(_0x5074e7>=_0x3bb646){_0x5074e7=_0x3bb646;_0x50e4e6=0xc8;}else{_0x50e4e6=0xce;}_0x54c71f[_0xe880('0x34')](_0x50e4e6);return _0x54c71f[_0xe880('0x35')](_0xe880('0x36'),_0x52d947+'-'+_0x5074e7+'/'+_0x3bb646)[_0xe880('0x37')](_0x1d6eda);}return null;};}function patchUpdates(_0x226dae){return function(_0x5a88e0){try{jsonpatch['apply'](_0x5a88e0,_0x226dae,!![]);}catch(_0x35cc75){return BPromise[_0xe880('0x38')](_0x35cc75);}return _0x5a88e0['save']();};}function saveUpdates(_0x2a3929,_0x4b4d3d){return function(_0x36769a){if(_0x36769a){return _0x36769a[_0xe880('0x39')](_0x2a3929)[_0xe880('0x26')](function(_0x2efee2){return _0x2efee2;});}return null;};}function removeEntity(_0x8fc4ed,_0x458795){return function(_0x24f049){if(_0x24f049){return _0x24f049[_0xe880('0x3a')]()[_0xe880('0x26')](function(){_0x8fc4ed[_0xe880('0x34')](0xcc)[_0xe880('0x3b')]();});}};}function handleEntityNotFound(_0x206687,_0x1eb6b6){return function(_0xcd0a2){if(!_0xcd0a2){_0x206687[_0xe880('0x2f')](0x194);}return _0xcd0a2;};}function handleError(_0x11033e,_0x695076){_0x695076=_0x695076||0x1f4;return function(_0x26d1bb){logger[_0xe880('0x2c')](_0x26d1bb[_0xe880('0x3c')]);if(_0x26d1bb['name']){delete _0x26d1bb[_0xe880('0x3d')];}_0x11033e['status'](_0x695076)[_0xe880('0x3e')](_0x26d1bb);};}exports[_0xe880('0x3f')]=function(_0x44236d,_0x11b9e9){var _0x213376={},_0x3b55a5={},_0x4341fa={'count':0x0,'rows':[]};var _0x11ce4a=_[_0xe880('0x40')](db[_0xe880('0x41')][_0xe880('0x42')],function(_0xc59401){return{'name':_0xc59401[_0xe880('0x43')],'type':_0xc59401[_0xe880('0x44')]['key']};});_0x3b55a5[_0xe880('0x45')]=_[_0xe880('0x40')](_0x11ce4a,_0xe880('0x3d'));_0x3b55a5['query']=_[_0xe880('0x46')](_0x44236d[_0xe880('0x47')]);_0x3b55a5[_0xe880('0x48')]=_[_0xe880('0x49')](_0x3b55a5[_0xe880('0x45')],_0x3b55a5[_0xe880('0x47')]);_0x213376[_0xe880('0x4a')]=_[_0xe880('0x49')](_0x3b55a5[_0xe880('0x45')],qs[_0xe880('0x4b')](_0x44236d[_0xe880('0x47')][_0xe880('0x4b')]));_0x213376[_0xe880('0x4a')]=_0x213376[_0xe880('0x4a')][_0xe880('0x4c')]?_0x213376['attributes']:_0x3b55a5[_0xe880('0x45')];if(!_0x44236d[_0xe880('0x47')]['hasOwnProperty']('nolimit')){_0x213376['limit']=qs[_0xe880('0x33')](_0x44236d[_0xe880('0x47')]['limit']);_0x213376[_0xe880('0x30')]=qs['offset'](_0x44236d['query'][_0xe880('0x30')]);}_0x213376['order']=qs[_0xe880('0x4d')](_0x44236d['query'][_0xe880('0x4d')]);_0x213376['where']=qs['filters'](_['pick'](_0x44236d[_0xe880('0x47')],_0x3b55a5[_0xe880('0x48')]),_0x11ce4a);if(_0x44236d['query'][_0xe880('0x4e')]){_0x213376[_0xe880('0x4f')]=_[_0xe880('0x50')](_0x213376['where'],{'$or':_[_0xe880('0x40')](_0x11ce4a,function(_0x5dffbb){if(_0x5dffbb['type']!==_0xe880('0x51')){var _0x54679c={};_0x54679c[_0x5dffbb['name']]={'$like':'%'+_0x44236d[_0xe880('0x47')][_0xe880('0x4e')]+'%'};return _0x54679c;}})});}_0x213376=_[_0xe880('0x50')]({},_0x213376,_0x44236d[_0xe880('0x52')]);var _0x56ab39={'where':_0x213376['where']};return db[_0xe880('0x41')][_0xe880('0x32')](_0x56ab39)[_0xe880('0x26')](function(_0x1378c0){_0x4341fa[_0xe880('0x32')]=_0x1378c0;if(_0x44236d[_0xe880('0x47')][_0xe880('0x53')]){_0x213376['include']=[{'all':!![]}];}return db[_0xe880('0x41')][_0xe880('0x54')](_0x213376);})[_0xe880('0x26')](function(_0xb6d7a1){_0x4341fa[_0xe880('0x55')]=_0xb6d7a1;return _0x4341fa;})[_0xe880('0x26')](respondWithFilteredResult(_0x11b9e9,_0x213376))[_0xe880('0x56')](handleError(_0x11b9e9,null));};exports[_0xe880('0x57')]=function(_0x435937,_0x454343){var _0x56c627={'raw':!![],'where':{'id':_0x435937[_0xe880('0x58')]['id']}},_0x42875f={};_0x42875f[_0xe880('0x45')]=_[_0xe880('0x46')](db[_0xe880('0x41')][_0xe880('0x42')]);_0x42875f[_0xe880('0x47')]=_[_0xe880('0x46')](_0x435937[_0xe880('0x47')]);_0x42875f[_0xe880('0x48')]=_[_0xe880('0x49')](_0x42875f[_0xe880('0x45')],_0x42875f[_0xe880('0x47')]);_0x56c627['attributes']=_['intersection'](_0x42875f[_0xe880('0x45')],qs[_0xe880('0x4b')](_0x435937['query'][_0xe880('0x4b')]));_0x56c627[_0xe880('0x4a')]=_0x56c627[_0xe880('0x4a')][_0xe880('0x4c')]?_0x56c627[_0xe880('0x4a')]:_0x42875f['model'];if(_0x435937[_0xe880('0x47')][_0xe880('0x53')]){_0x56c627[_0xe880('0x59')]=[{'all':!![]}];}_0x56c627=_[_0xe880('0x50')]({},_0x56c627,_0x435937['options']);return db[_0xe880('0x41')][_0xe880('0x5a')](_0x56c627)[_0xe880('0x26')](handleEntityNotFound(_0x454343,null))['then'](respondWithResult(_0x454343,null))[_0xe880('0x56')](handleError(_0x454343,null));};exports['update']=function(_0xf277fd,_0x29f831){if(_0xf277fd[_0xe880('0x5b')]['id']){delete _0xf277fd[_0xe880('0x5b')]['id'];}return db[_0xe880('0x41')][_0xe880('0x5a')]({'where':{'id':_0xf277fd[_0xe880('0x58')]['id']}})['then'](handleEntityNotFound(_0x29f831,null))[_0xe880('0x26')](saveUpdates(_0xf277fd[_0xe880('0x5b')],null))[_0xe880('0x26')](respondWithResult(_0x29f831,null))['catch'](handleError(_0x29f831,null));};exports[_0xe880('0x3a')]=function(_0x3cf4a8,_0x274f16){return db[_0xe880('0x41')][_0xe880('0x5a')]({'where':{'id':_0x3cf4a8[_0xe880('0x58')]['id']}})[_0xe880('0x26')](handleEntityNotFound(_0x274f16,null))[_0xe880('0x26')](removeEntity(_0x274f16,null))[_0xe880('0x56')](handleError(_0x274f16,null));};exports[_0xe880('0x5c')]=function(_0x1f3883,_0x26b23d){return db[_0xe880('0x41')][_0xe880('0x5c')]()[_0xe880('0x26')](respondWithResult(_0x26b23d,null))[_0xe880('0x56')](handleError(_0x26b23d,null));};var interaction_log=require('../../config/logger')('fax-interactions');exports[_0xe880('0x5d')]=function(_0x205f4e,_0x1a09e9,_0x30ebd5){var _0x2c5b65={'agent':{},'channel':'fax'};if(_0x205f4e[_0xe880('0x5b')]['id']){delete _0x205f4e[_0xe880('0x5b')]['id'];}_0x205f4e['body']['read']=!![];_0x205f4e['body'][_0xe880('0x5e')]=moment()[_0xe880('0x5f')]('YYYY-MM-DD\x20HH:mm:ss');_0x205f4e['body'][_0xe880('0x60')]=_0x205f4e[_0xe880('0x5b')]['UserId']||_0x205f4e[_0xe880('0x61')]['id'];_0x2c5b65['agent']['id']=_0x205f4e['body'][_0xe880('0x60')];return db[_0xe880('0x41')][_0xe880('0x5a')]({'where':{'id':_0x205f4e[_0xe880('0x58')]['id'],'UserId':null}})[_0xe880('0x26')](handleEntityNotFound(_0x1a09e9,null))[_0xe880('0x26')](saveUpdates(_0x205f4e[_0xe880('0x5b')],null))[_0xe880('0x26')](function(_0x5e683d){if(_0x5e683d){_0x2c5b65[_0xe880('0x2e')]=_0x5e683d[_0xe880('0x62')]({'plain':!![]});return db[_0xe880('0x63')][_0xe880('0x5a')]({'where':{'id':_0x5e683d[_0xe880('0x64')]}});}return null;})[_0xe880('0x26')](handleEntityNotFound(_0x1a09e9,null))[_0xe880('0x26')](function(_0x3d96e8){if(_0x3d96e8){return _0x3d96e8['update']({'UserId':_0x205f4e[_0xe880('0x5b')][_0xe880('0x60')],'read1stAt':_[_0xe880('0x65')](_0x3d96e8[_0xe880('0x66')])?moment()['format'](_0xe880('0x67')):undefined});}return null;})['then'](function(_0x422801){if(_0x422801){_0x2c5b65[_0xe880('0x68')]=_0x422801[_0xe880('0x62')]({'plain':!![]});interaction_log[_0xe880('0x27')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x205f4e[_0xe880('0x61')]['id'],_0x205f4e[_0xe880('0x61')][_0xe880('0x3d')],_0x205f4e[_0xe880('0x61')]['role'],_0x2c5b65['interaction']['id'],_0x205f4e['body']?JSON[_0xe880('0x69')](_0x205f4e[_0xe880('0x5b')]):_0xe880('0x6a'));return respondWithRpcPromise(_0xe880('0x6b'),_0xe880('0x6c'),_0x2c5b65);}return null;})[_0xe880('0x26')](function(_0x738751){var _0x53825d=_0xe880('0x6d')+_0x738751[_0xe880('0x2e')][_0xe880('0x6e')];return db['sequelize']['query'](_0x53825d,{'type':db['Sequelize'][_0xe880('0x6f')][_0xe880('0x70')],'raw':!![]})['then'](function(_0xe47f85){return _0xe47f85;});})['then'](function(_0x34ba02){if(_0x34ba02){_0x2c5b65['message']['contact']=_0x34ba02[0x0];if(!_0x205f4e[_0xe880('0x5b')]['UserId'])return;return db[_0xe880('0x71')][_0xe880('0x5a')]({'where':{'id':_0x205f4e['body'][_0xe880('0x60')],'role':_0xe880('0x72')},'attributes':['id',_0xe880('0x3d'),_0xe880('0x73'),_0xe880('0x74'),_0xe880('0x75')],'raw':!![]});}return null;})[_0xe880('0x26')](function(_0x169163){if(!_0x169163)return null;_0x2c5b65[_0xe880('0x2e')]['agent']=_0x169163;return _0x2c5b65;})['then'](function(_0x56843a){if(_0x56843a){if(_0x205f4e['body'][_0xe880('0x76')]){_0x2c5b65[_0xe880('0x2e')][_0xe880('0x77')]=util[_0xe880('0x5f')]('SIP/%s',_0x205f4e['user'][_0xe880('0x3d')]);_0x2c5b65['message'][_0xe880('0x78')]=_0x2c5b65['channel'];_0x2c5b65[_0xe880('0x2e')][_0xe880('0x79')]=_0xe880('0x5d');return respondWithRpcPromise(_0xe880('0x7a'),_0xe880('0x7a'),{'event':_0xe880('0x7b'),'message':_0x2c5b65[_0xe880('0x2e')]},client9002)['then'](function(){return _0x2c5b65;});}return _0x2c5b65;}return null;})[_0xe880('0x26')](respondWithResult(_0x1a09e9,null))[_0xe880('0x56')](handleError(_0x1a09e9,null));};var interaction_log=require('../../config/logger')(_0xe880('0x7c'));exports[_0xe880('0x38')]=function(_0x559aef,_0x3bdb60,_0x414e34){var _0x13a3d1={'agent':{},'channel':_0xe880('0x7d')};if(_0x559aef['body']['id']){delete _0x559aef[_0xe880('0x5b')]['id'];}_0x559aef[_0xe880('0x5b')]['UserId']=_0x559aef[_0xe880('0x5b')]['UserId']||_0x559aef[_0xe880('0x61')]['id'];_0x13a3d1[_0xe880('0x72')]['id']=_0x559aef[_0xe880('0x5b')][_0xe880('0x60')];return db[_0xe880('0x41')][_0xe880('0x5a')]({'where':{'id':_0x559aef[_0xe880('0x58')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3bdb60,null))[_0xe880('0x26')](function(_0x1c2cac){if(_0x1c2cac){_0x13a3d1[_0xe880('0x2e')]=_0x1c2cac[_0xe880('0x62')]({'plain':!![]});return db[_0xe880('0x63')][_0xe880('0x5a')]({'where':{'id':_0x1c2cac[_0xe880('0x64')]}});}return null;})['then'](handleEntityNotFound(_0x3bdb60,null))['then'](function(_0x34375a){if(_0x34375a){_0x13a3d1[_0xe880('0x68')]=_0x34375a[_0xe880('0x62')]({'plain':!![]});interaction_log[_0xe880('0x27')](_0xe880('0x7e'),_0x559aef[_0xe880('0x61')]['id'],_0x559aef[_0xe880('0x61')][_0xe880('0x3d')],_0x559aef[_0xe880('0x61')]['role'],_0x13a3d1[_0xe880('0x68')]['id'],_0x559aef[_0xe880('0x5b')]?JSON[_0xe880('0x69')](_0x559aef[_0xe880('0x5b')]):_0xe880('0x6a'));return respondWithRpcPromise(_0xe880('0x7f'),_0xe880('0x80'),_0x13a3d1);}return null;})['then'](function(_0x43caed){var _0x4c0bf9='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x43caed[_0xe880('0x2e')]['ContactId'];return db['sequelize'][_0xe880('0x47')](_0x4c0bf9,{'type':db[_0xe880('0x81')]['QueryTypes'][_0xe880('0x70')],'raw':!![]})[_0xe880('0x26')](function(_0x232aa3){return _0x232aa3;});})[_0xe880('0x26')](function(_0x22d400){if(_0x22d400){_0x13a3d1[_0xe880('0x2e')][_0xe880('0x82')]=_0x22d400[0x0];if(!_0x559aef[_0xe880('0x5b')][_0xe880('0x60')])return;return db[_0xe880('0x71')]['find']({'where':{'id':_0x559aef['body'][_0xe880('0x60')],'role':_0xe880('0x72')},'attributes':['id',_0xe880('0x3d'),_0xe880('0x73'),_0xe880('0x74'),_0xe880('0x75')],'raw':!![]});}return null;})[_0xe880('0x26')](function(_0x2aa63a){if(!_0x2aa63a)return null;_0x13a3d1['message'][_0xe880('0x72')]=_0x2aa63a;return _0x13a3d1;})[_0xe880('0x26')](function(_0x5e7b01){if(_0x5e7b01){_0x5e7b01[_0xe880('0x2e')]['interface']=util[_0xe880('0x5f')](_0xe880('0x83'),_0x559aef[_0xe880('0x61')][_0xe880('0x3d')]);_0x5e7b01[_0xe880('0x2e')][_0xe880('0x78')]=_0x13a3d1[_0xe880('0x78')];_0x5e7b01[_0xe880('0x2e')][_0xe880('0x79')]=_0xe880('0x38');respondWithRpcPromise(_0xe880('0x7a'),'EventManager',{'event':'rejectmessage','message':_0x5e7b01[_0xe880('0x2e')]},client9002);return _0x13a3d1;}return null;})[_0xe880('0x26')](respondWithResult(_0x3bdb60,null))[_0xe880('0x56')](handleError(_0x3bdb60,null));};exports[_0xe880('0x84')]=function(_0x5d2261,_0x4eefd8){var _0xa642bd;return db[_0xe880('0x41')][_0xe880('0x84')](_0x5d2261[_0xe880('0x5b')],{})[_0xe880('0x26')](function(_0x32eb94){_0xa642bd=_0x32eb94;return db[_0xe880('0x85')][_0xe880('0x86')]({'where':{'id':_0xa642bd[_0xe880('0x6e')]}});})[_0xe880('0x26')](function(_0x13b4af){if(_[_0xe880('0x65')](_0x13b4af)){return;}else{_0xa642bd[_0xe880('0x7d')]=_0x13b4af[_0xe880('0x7d')];return db[_0xe880('0x87')][_0xe880('0x86')]({'where':{'id':_0xa642bd[_0xe880('0x88')]}});}})[_0xe880('0x26')](function(_0x4801b2){return respondWithRpcPromise(_0xe880('0x89'),_0xe880('0x89'),{'FaxAccountId':_[_0xe880('0x65')](_0x5d2261[_0xe880('0x5b')])?undefined:_0x5d2261[_0xe880('0x5b')]['FaxAccountId'],'path':_[_0xe880('0x65')](_0x4801b2)?undefined:util[_0xe880('0x5f')](_0xe880('0x8a'),_0x4801b2[_0xe880('0x8b')]),'fax':_[_0xe880('0x65')](_0xa642bd[_0xe880('0x7d')])?undefined:_0xa642bd[_0xe880('0x7d')],'AttachmentId':_0xa642bd[_0xe880('0x88')]},client9002);})[_0xe880('0x26')](respondWithResult(_0x4eefd8,0xc9))[_0xe880('0x56')](handleError(_0x4eefd8,null));};exports[_0xe880('0x8c')]=function(_0x132e6c,_0x60f82d){var _0x367d4b=path[_0xe880('0x8d')](config[_0xe880('0x8e')],_0xe880('0x8f'),'files','attachments');return db[_0xe880('0x41')][_0xe880('0x5a')]({'where':{'id':_0x132e6c['params']['id']},'include':[{'model':db[_0xe880('0x87')],'as':_0xe880('0x87')}]})['then'](handleEntityNotFound(_0x60f82d,null))['then'](function(_0x14484f){if(_0x14484f){return _0x60f82d[_0xe880('0x8c')](path[_0xe880('0x8d')](_0x367d4b,_0x14484f[_0xe880('0x87')][_0xe880('0x8b')]));}})[_0xe880('0x56')](handleError(_0x60f82d,null));};
\ No newline at end of file
+var _0xa422=['rawAttributes','fieldName','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters','where','merge','type','VIRTUAL','filter','includeAll','FaxMessage','findAll','rows','show','options','find','catch','body','params','describe','fax','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','User','agent','fullname','internal','interface','format','channel','motionChannel','event','accept','EventManager','acceptmessage','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','sequelize','email','SIP/%s','create','findOne','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','root','files','attachments','Attachment','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','http','info','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','status','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','end','stack','name','send','map'];(function(_0x2dcef7,_0x534cc0){var _0x5ad3f8=function(_0x5cb63f){while(--_0x5cb63f){_0x2dcef7['push'](_0x2dcef7['shift']());}};_0x5ad3f8(++_0x534cc0);}(_0xa422,0xe4));var _0x2a42=function(_0x314ccb,_0x38886e){_0x314ccb=_0x314ccb-0x0;var _0x257b48=_0xa422[_0x314ccb];return _0x257b48;};'use strict';var emlformat=require(_0x2a42('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2a42('0x1'));var jsonpatch=require(_0x2a42('0x2'));var rp=require(_0x2a42('0x3'));var moment=require('moment');var BPromise=require(_0x2a42('0x4'));var Mustache=require('mustache');var util=require(_0x2a42('0x5'));var path=require(_0x2a42('0x6'));var sox=require(_0x2a42('0x7'));var csv=require(_0x2a42('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2a42('0x9'));var _=require(_0x2a42('0xa'));var squel=require('squel');var crypto=require(_0x2a42('0xb'));var jsforce=require(_0x2a42('0xc'));var deskjs=require(_0x2a42('0xd'));var toCsv=require(_0x2a42('0x8'));var querystring=require(_0x2a42('0xe'));var Papa=require(_0x2a42('0xf'));var Redis=require('ioredis');var authService=require(_0x2a42('0x10'));var qs=require(_0x2a42('0x11'));var as=require(_0x2a42('0x12'));var hardwareService=require(_0x2a42('0x13'));var logger=require(_0x2a42('0x14'))('api');var utils=require(_0x2a42('0x15'));var config=require(_0x2a42('0x16'));var licenseUtil=require(_0x2a42('0x17'));var db=require(_0x2a42('0x18'))['db'];config[_0x2a42('0x19')]=_[_0x2a42('0x1a')](config[_0x2a42('0x19')],{'host':_0x2a42('0x1b'),'port':0x18eb});var socket=require(_0x2a42('0x1c'))(new Redis(config[_0x2a42('0x19')]));require(_0x2a42('0x1d'))[_0x2a42('0x1e')](socket);var jayson=require(_0x2a42('0x1f'));var client=jayson[_0x2a42('0x20')][_0x2a42('0x21')]({'port':0x232c});var client9002=jayson[_0x2a42('0x20')][_0x2a42('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x5766b7,_0x2f4909,_0x559426,_0x6cc3f4){return new BPromise(function(_0xa78831,_0x4746ba){var _0x48f4a1=_0x6cc3f4||client;return _0x48f4a1['request'](_0x5766b7,_0x559426)['then'](function(_0x3ec4bd){logger[_0x2a42('0x22')](_0x2a42('0x23'),_0x2f4909,_0x2a42('0x24'));logger['debug'](_0x2a42('0x25'),_0x2f4909,_0x2a42('0x24'),JSON[_0x2a42('0x26')](_0x3ec4bd));if(_0x3ec4bd['error']){if(_0x3ec4bd[_0x2a42('0x27')][_0x2a42('0x28')]===0x1f4){logger[_0x2a42('0x27')](_0x2a42('0x23'),_0x2f4909,_0x3ec4bd[_0x2a42('0x27')]['message']);return _0x4746ba(_0x3ec4bd[_0x2a42('0x27')]['message']);}logger[_0x2a42('0x27')](_0x2a42('0x23'),_0x2f4909,_0x3ec4bd[_0x2a42('0x27')][_0x2a42('0x29')]);return _0xa78831(_0x3ec4bd['error'][_0x2a42('0x29')]);}else{logger[_0x2a42('0x22')](_0x2a42('0x23'),_0x2f4909,_0x2a42('0x24'));_0xa78831(_0x3ec4bd[_0x2a42('0x2a')][_0x2a42('0x29')]);}})['catch'](function(_0x512cf9){logger[_0x2a42('0x27')](_0x2a42('0x23'),_0x2f4909,_0x512cf9);_0x4746ba(_0x512cf9);});});}function respondWithStatusCode(_0x5f3029,_0x1ad219){_0x1ad219=_0x1ad219||0xcc;return function(_0x54646f){if(_0x54646f){return _0x5f3029['sendStatus'](_0x1ad219);}return _0x5f3029['status'](_0x1ad219)['end']();};}function respondWithResult(_0xd90819,_0x2f1a77){_0x2f1a77=_0x2f1a77||0xc8;return function(_0x3443b8){if(_0x3443b8){return _0xd90819[_0x2a42('0x2b')](_0x2f1a77)['json'](_0x3443b8);}};}function respondWithFilteredResult(_0x4eadd0,_0x50f885){return function(_0x570cba){if(_0x570cba){var _0x136407=typeof _0x50f885[_0x2a42('0x2c')]===_0x2a42('0x2d')&&typeof _0x50f885[_0x2a42('0x2e')]===_0x2a42('0x2d');var _0x599834=_0x570cba[_0x2a42('0x2f')];var _0x3c832f=_0x136407?0x0:_0x50f885[_0x2a42('0x2c')];var _0xc4f024=_0x136407?_0x570cba[_0x2a42('0x2f')]:_0x50f885[_0x2a42('0x2c')]+_0x50f885[_0x2a42('0x2e')];var _0x73ed9;if(_0xc4f024>=_0x599834){_0xc4f024=_0x599834;_0x73ed9=0xc8;}else{_0x73ed9=0xce;}_0x4eadd0[_0x2a42('0x2b')](_0x73ed9);return _0x4eadd0['set'](_0x2a42('0x30'),_0x3c832f+'-'+_0xc4f024+'/'+_0x599834)['json'](_0x570cba);}return null;};}function patchUpdates(_0xe21dd5){return function(_0x3808c8){try{jsonpatch[_0x2a42('0x31')](_0x3808c8,_0xe21dd5,!![]);}catch(_0x33dc9e){return BPromise[_0x2a42('0x32')](_0x33dc9e);}return _0x3808c8[_0x2a42('0x33')]();};}function saveUpdates(_0x2d9c00,_0x582cf2){return function(_0x14bde8){if(_0x14bde8){return _0x14bde8[_0x2a42('0x34')](_0x2d9c00)['then'](function(_0x471c10){return _0x471c10;});}return null;};}function removeEntity(_0x3d1c2c,_0x349e11){return function(_0x23568c){if(_0x23568c){return _0x23568c[_0x2a42('0x35')]()[_0x2a42('0x36')](function(){_0x3d1c2c[_0x2a42('0x2b')](0xcc)[_0x2a42('0x37')]();});}};}function handleEntityNotFound(_0x1dc167,_0x22d9e9){return function(_0x420be5){if(!_0x420be5){_0x1dc167['sendStatus'](0x194);}return _0x420be5;};}function handleError(_0x3ab769,_0x5a2410){_0x5a2410=_0x5a2410||0x1f4;return function(_0xf64445){logger['error'](_0xf64445[_0x2a42('0x38')]);if(_0xf64445[_0x2a42('0x39')]){delete _0xf64445[_0x2a42('0x39')];}_0x3ab769[_0x2a42('0x2b')](_0x5a2410)[_0x2a42('0x3a')](_0xf64445);};}exports['index']=function(_0x29a2cc,_0x155a40){var _0x2cfdce={},_0x3cb0ef={},_0x363138={'count':0x0,'rows':[]};var _0x18d86e=_[_0x2a42('0x3b')](db['FaxMessage'][_0x2a42('0x3c')],function(_0x220565){return{'name':_0x220565[_0x2a42('0x3d')],'type':_0x220565['type'][_0x2a42('0x3e')]};});_0x3cb0ef[_0x2a42('0x3f')]=_[_0x2a42('0x3b')](_0x18d86e,_0x2a42('0x39'));_0x3cb0ef[_0x2a42('0x40')]=_[_0x2a42('0x41')](_0x29a2cc['query']);_0x3cb0ef['filters']=_['intersection'](_0x3cb0ef[_0x2a42('0x3f')],_0x3cb0ef[_0x2a42('0x40')]);_0x2cfdce[_0x2a42('0x42')]=_[_0x2a42('0x43')](_0x3cb0ef['model'],qs['fields'](_0x29a2cc['query'][_0x2a42('0x44')]));_0x2cfdce[_0x2a42('0x42')]=_0x2cfdce['attributes'][_0x2a42('0x45')]?_0x2cfdce[_0x2a42('0x42')]:_0x3cb0ef[_0x2a42('0x3f')];if(!_0x29a2cc[_0x2a42('0x40')][_0x2a42('0x46')](_0x2a42('0x47'))){_0x2cfdce['limit']=qs[_0x2a42('0x2e')](_0x29a2cc[_0x2a42('0x40')][_0x2a42('0x2e')]);_0x2cfdce[_0x2a42('0x2c')]=qs['offset'](_0x29a2cc[_0x2a42('0x40')][_0x2a42('0x2c')]);}_0x2cfdce[_0x2a42('0x48')]=qs[_0x2a42('0x49')](_0x29a2cc[_0x2a42('0x40')][_0x2a42('0x49')]);_0x2cfdce['where']=qs['filters'](_[_0x2a42('0x4a')](_0x29a2cc[_0x2a42('0x40')],_0x3cb0ef[_0x2a42('0x4b')]),_0x18d86e);if(_0x29a2cc[_0x2a42('0x40')]['filter']){_0x2cfdce[_0x2a42('0x4c')]=_[_0x2a42('0x4d')](_0x2cfdce['where'],{'$or':_[_0x2a42('0x3b')](_0x18d86e,function(_0x3625fd){if(_0x3625fd[_0x2a42('0x4e')]!==_0x2a42('0x4f')){var _0x54b505={};_0x54b505[_0x3625fd['name']]={'$like':'%'+_0x29a2cc[_0x2a42('0x40')][_0x2a42('0x50')]+'%'};return _0x54b505;}})});}_0x2cfdce=_[_0x2a42('0x4d')]({},_0x2cfdce,_0x29a2cc['options']);var _0x9e7b92={'where':_0x2cfdce['where']};return db['FaxMessage'][_0x2a42('0x2f')](_0x9e7b92)['then'](function(_0x17da6b){_0x363138[_0x2a42('0x2f')]=_0x17da6b;if(_0x29a2cc['query'][_0x2a42('0x51')]){_0x2cfdce['include']=[{'all':!![]}];}return db[_0x2a42('0x52')][_0x2a42('0x53')](_0x2cfdce);})[_0x2a42('0x36')](function(_0x35aed3){_0x363138[_0x2a42('0x54')]=_0x35aed3;return _0x363138;})[_0x2a42('0x36')](respondWithFilteredResult(_0x155a40,_0x2cfdce))['catch'](handleError(_0x155a40,null));};exports[_0x2a42('0x55')]=function(_0x598d66,_0x74ad0d){var _0x4379eb={'raw':!![],'where':{'id':_0x598d66['params']['id']}},_0x5797ec={};_0x5797ec[_0x2a42('0x3f')]=_[_0x2a42('0x41')](db[_0x2a42('0x52')][_0x2a42('0x3c')]);_0x5797ec[_0x2a42('0x40')]=_[_0x2a42('0x41')](_0x598d66[_0x2a42('0x40')]);_0x5797ec[_0x2a42('0x4b')]=_[_0x2a42('0x43')](_0x5797ec[_0x2a42('0x3f')],_0x5797ec[_0x2a42('0x40')]);_0x4379eb[_0x2a42('0x42')]=_[_0x2a42('0x43')](_0x5797ec[_0x2a42('0x3f')],qs[_0x2a42('0x44')](_0x598d66[_0x2a42('0x40')][_0x2a42('0x44')]));_0x4379eb[_0x2a42('0x42')]=_0x4379eb[_0x2a42('0x42')][_0x2a42('0x45')]?_0x4379eb['attributes']:_0x5797ec['model'];if(_0x598d66[_0x2a42('0x40')][_0x2a42('0x51')]){_0x4379eb['include']=[{'all':!![]}];}_0x4379eb=_[_0x2a42('0x4d')]({},_0x4379eb,_0x598d66[_0x2a42('0x56')]);return db['FaxMessage'][_0x2a42('0x57')](_0x4379eb)[_0x2a42('0x36')](handleEntityNotFound(_0x74ad0d,null))[_0x2a42('0x36')](respondWithResult(_0x74ad0d,null))[_0x2a42('0x58')](handleError(_0x74ad0d,null));};exports[_0x2a42('0x34')]=function(_0x26c8ec,_0x1e30b3){if(_0x26c8ec[_0x2a42('0x59')]['id']){delete _0x26c8ec[_0x2a42('0x59')]['id'];}return db['FaxMessage']['find']({'where':{'id':_0x26c8ec[_0x2a42('0x5a')]['id']}})[_0x2a42('0x36')](handleEntityNotFound(_0x1e30b3,null))[_0x2a42('0x36')](saveUpdates(_0x26c8ec[_0x2a42('0x59')],null))[_0x2a42('0x36')](respondWithResult(_0x1e30b3,null))[_0x2a42('0x58')](handleError(_0x1e30b3,null));};exports[_0x2a42('0x35')]=function(_0x39f486,_0x5cdb3a){return db[_0x2a42('0x52')][_0x2a42('0x57')]({'where':{'id':_0x39f486[_0x2a42('0x5a')]['id']}})['then'](handleEntityNotFound(_0x5cdb3a,null))[_0x2a42('0x36')](removeEntity(_0x5cdb3a,null))[_0x2a42('0x58')](handleError(_0x5cdb3a,null));};exports[_0x2a42('0x5b')]=function(_0x2f6ec1,_0x5abedb){return db[_0x2a42('0x52')][_0x2a42('0x5b')]()[_0x2a42('0x36')](respondWithResult(_0x5abedb,null))[_0x2a42('0x58')](handleError(_0x5abedb,null));};var interaction_log=require(_0x2a42('0x14'))('fax-interactions');exports['accept']=function(_0x51e340,_0x2cb47e,_0x19735c){var _0x3ed981={'agent':{},'channel':_0x2a42('0x5c')};if(_0x51e340[_0x2a42('0x59')]['id']){delete _0x51e340['body']['id'];}_0x51e340['body'][_0x2a42('0x5d')]=!![];_0x51e340[_0x2a42('0x59')][_0x2a42('0x5e')]=moment()['format'](_0x2a42('0x5f'));_0x51e340[_0x2a42('0x59')][_0x2a42('0x60')]=_0x51e340['body']['UserId']||_0x51e340[_0x2a42('0x61')]['id'];_0x3ed981['agent']['id']=_0x51e340[_0x2a42('0x59')][_0x2a42('0x60')];return db[_0x2a42('0x52')][_0x2a42('0x57')]({'where':{'id':_0x51e340[_0x2a42('0x5a')]['id'],'UserId':null}})[_0x2a42('0x36')](handleEntityNotFound(_0x2cb47e,null))['then'](saveUpdates(_0x51e340[_0x2a42('0x59')],null))[_0x2a42('0x36')](function(_0x4b27d3){if(_0x4b27d3){_0x3ed981['message']=_0x4b27d3[_0x2a42('0x62')]({'plain':!![]});return db[_0x2a42('0x63')][_0x2a42('0x57')]({'where':{'id':_0x4b27d3[_0x2a42('0x64')]}});}return null;})[_0x2a42('0x36')](handleEntityNotFound(_0x2cb47e,null))[_0x2a42('0x36')](function(_0x3ea2e0){if(_0x3ea2e0){return _0x3ea2e0[_0x2a42('0x34')]({'UserId':_0x51e340[_0x2a42('0x59')]['UserId'],'read1stAt':_[_0x2a42('0x65')](_0x3ea2e0[_0x2a42('0x66')])?moment()['format'](_0x2a42('0x5f')):undefined});}return null;})['then'](function(_0x55b7cb){if(_0x55b7cb){_0x3ed981[_0x2a42('0x67')]=_0x55b7cb[_0x2a42('0x62')]({'plain':!![]});interaction_log['info'](_0x2a42('0x68'),_0x51e340[_0x2a42('0x61')]['id'],_0x51e340[_0x2a42('0x61')][_0x2a42('0x39')],_0x51e340['user'][_0x2a42('0x69')],_0x3ed981[_0x2a42('0x67')]['id'],_0x51e340[_0x2a42('0x59')]?JSON[_0x2a42('0x26')](_0x51e340[_0x2a42('0x59')]):_0x2a42('0x6a'));return respondWithRpcPromise(_0x2a42('0x6b'),_0x2a42('0x6c'),_0x3ed981);}return null;})[_0x2a42('0x36')](function(_0x19a633){var _0x5f5435=_0x2a42('0x6d')+_0x19a633[_0x2a42('0x29')][_0x2a42('0x6e')];return db['sequelize'][_0x2a42('0x40')](_0x5f5435,{'type':db[_0x2a42('0x6f')][_0x2a42('0x70')][_0x2a42('0x71')],'raw':!![]})[_0x2a42('0x36')](function(_0x19d8b2){return _0x19d8b2;});})[_0x2a42('0x36')](function(_0x3324a2){if(_0x3324a2){_0x3ed981[_0x2a42('0x29')][_0x2a42('0x72')]=_0x3324a2[0x0];if(!_0x51e340['body'][_0x2a42('0x60')])return;return db[_0x2a42('0x73')][_0x2a42('0x57')]({'where':{'id':_0x51e340[_0x2a42('0x59')][_0x2a42('0x60')],'role':_0x2a42('0x74')},'attributes':['id',_0x2a42('0x39'),_0x2a42('0x75'),'email',_0x2a42('0x76')],'raw':!![]});}return null;})[_0x2a42('0x36')](function(_0xb059fb){if(!_0xb059fb)return null;_0x3ed981[_0x2a42('0x29')][_0x2a42('0x74')]=_0xb059fb;return _0x3ed981;})[_0x2a42('0x36')](function(_0x2601c0){if(_0x2601c0){if(_0x51e340['body']['manual']){_0x3ed981[_0x2a42('0x29')][_0x2a42('0x77')]=util[_0x2a42('0x78')]('SIP/%s',_0x51e340[_0x2a42('0x61')]['name']);_0x3ed981[_0x2a42('0x29')][_0x2a42('0x79')]=_0x3ed981['channel'];_0x3ed981[_0x2a42('0x29')][_0x2a42('0x7a')]=_0x3ed981['channel'];_0x3ed981['message'][_0x2a42('0x7b')]=_0x2a42('0x7c');return respondWithRpcPromise(_0x2a42('0x7d'),_0x2a42('0x7d'),{'event':_0x2a42('0x7e'),'message':_0x3ed981[_0x2a42('0x29')]},client9002)[_0x2a42('0x36')](function(){return _0x3ed981;});}return _0x3ed981;}return null;})['then'](respondWithResult(_0x2cb47e,null))[_0x2a42('0x58')](handleError(_0x2cb47e,null));};var interaction_log=require('../../config/logger')('fax-interactions');exports['reject']=function(_0x3820a3,_0x3ee7bf,_0xfc2213){var _0x4fbe03={'agent':{},'channel':_0x2a42('0x5c')};if(_0x3820a3[_0x2a42('0x59')]['id']){delete _0x3820a3[_0x2a42('0x59')]['id'];}_0x3820a3[_0x2a42('0x59')][_0x2a42('0x60')]=_0x3820a3[_0x2a42('0x59')][_0x2a42('0x60')]||_0x3820a3[_0x2a42('0x61')]['id'];_0x4fbe03[_0x2a42('0x74')]['id']=_0x3820a3[_0x2a42('0x59')][_0x2a42('0x60')];return db[_0x2a42('0x52')][_0x2a42('0x57')]({'where':{'id':_0x3820a3[_0x2a42('0x5a')]['id'],'UserId':null}})[_0x2a42('0x36')](handleEntityNotFound(_0x3ee7bf,null))[_0x2a42('0x36')](function(_0x8aa9d){if(_0x8aa9d){_0x4fbe03[_0x2a42('0x29')]=_0x8aa9d[_0x2a42('0x62')]({'plain':!![]});return db[_0x2a42('0x63')][_0x2a42('0x57')]({'where':{'id':_0x8aa9d['FaxInteractionId']}});}return null;})[_0x2a42('0x36')](handleEntityNotFound(_0x3ee7bf,null))[_0x2a42('0x36')](function(_0x515f34){if(_0x515f34){_0x4fbe03[_0x2a42('0x67')]=_0x515f34[_0x2a42('0x62')]({'plain':!![]});interaction_log[_0x2a42('0x22')](_0x2a42('0x7f'),_0x3820a3[_0x2a42('0x61')]['id'],_0x3820a3[_0x2a42('0x61')]['name'],_0x3820a3['user'][_0x2a42('0x69')],_0x4fbe03['interaction']['id'],_0x3820a3[_0x2a42('0x59')]?JSON[_0x2a42('0x26')](_0x3820a3[_0x2a42('0x59')]):'null');return respondWithRpcPromise(_0x2a42('0x80'),'rejectMessage',_0x4fbe03);}return null;})[_0x2a42('0x36')](function(_0x14880c){var _0xdc1a1=_0x2a42('0x6d')+_0x14880c[_0x2a42('0x29')][_0x2a42('0x6e')];return db[_0x2a42('0x81')][_0x2a42('0x40')](_0xdc1a1,{'type':db[_0x2a42('0x6f')][_0x2a42('0x70')][_0x2a42('0x71')],'raw':!![]})[_0x2a42('0x36')](function(_0x5b8896){return _0x5b8896;});})[_0x2a42('0x36')](function(_0x50839f){if(_0x50839f){_0x4fbe03[_0x2a42('0x29')][_0x2a42('0x72')]=_0x50839f[0x0];if(!_0x3820a3['body'][_0x2a42('0x60')])return;return db['User'][_0x2a42('0x57')]({'where':{'id':_0x3820a3[_0x2a42('0x59')][_0x2a42('0x60')],'role':_0x2a42('0x74')},'attributes':['id',_0x2a42('0x39'),_0x2a42('0x75'),_0x2a42('0x82'),_0x2a42('0x76')],'raw':!![]});}return null;})[_0x2a42('0x36')](function(_0x5b8e59){if(!_0x5b8e59)return null;_0x4fbe03['message'][_0x2a42('0x74')]=_0x5b8e59;return _0x4fbe03;})[_0x2a42('0x36')](function(_0x43768c){if(_0x43768c){_0x43768c[_0x2a42('0x29')][_0x2a42('0x77')]=util['format'](_0x2a42('0x83'),_0x3820a3[_0x2a42('0x61')][_0x2a42('0x39')]);_0x43768c['message'][_0x2a42('0x79')]=_0x4fbe03['channel'];_0x43768c['message'][_0x2a42('0x7a')]=_0x4fbe03[_0x2a42('0x79')];_0x43768c[_0x2a42('0x29')]['event']=_0x2a42('0x32');respondWithRpcPromise(_0x2a42('0x7d'),_0x2a42('0x7d'),{'event':'rejectmessage','message':_0x43768c[_0x2a42('0x29')]},client9002);return _0x4fbe03;}return null;})[_0x2a42('0x36')](respondWithResult(_0x3ee7bf,null))[_0x2a42('0x58')](handleError(_0x3ee7bf,null));};exports[_0x2a42('0x84')]=function(_0x847ad8,_0x67db98){var _0x2cd552;return db[_0x2a42('0x52')][_0x2a42('0x84')](_0x847ad8[_0x2a42('0x59')],{})[_0x2a42('0x36')](function(_0xe82547){_0x2cd552=_0xe82547;return db['CmContact'][_0x2a42('0x85')]({'where':{'id':_0x2cd552['ContactId']}});})[_0x2a42('0x36')](function(_0x462889){if(_[_0x2a42('0x65')](_0x462889)){return;}else{_0x2cd552[_0x2a42('0x5c')]=_0x462889['fax'];return db['Attachment'][_0x2a42('0x85')]({'where':{'id':_0x2cd552[_0x2a42('0x86')]}});}})[_0x2a42('0x36')](function(_0x45f41c){return respondWithRpcPromise('SendFax',_0x2a42('0x87'),{'FaxAccountId':_['isNil'](_0x847ad8[_0x2a42('0x59')])?undefined:_0x847ad8[_0x2a42('0x59')][_0x2a42('0x88')],'path':_[_0x2a42('0x65')](_0x45f41c)?undefined:util[_0x2a42('0x78')](_0x2a42('0x89'),_0x45f41c[_0x2a42('0x8a')]),'fax':_[_0x2a42('0x65')](_0x2cd552['fax'])?undefined:_0x2cd552[_0x2a42('0x5c')],'AttachmentId':_0x2cd552[_0x2a42('0x86')]},client9002);})[_0x2a42('0x36')](respondWithResult(_0x67db98,0xc9))[_0x2a42('0x58')](handleError(_0x67db98,null));};exports[_0x2a42('0x8b')]=function(_0x1ba11b,_0xe88929){var _0x3e79ce=path['join'](config[_0x2a42('0x8c')],'server',_0x2a42('0x8d'),_0x2a42('0x8e'));return db[_0x2a42('0x52')]['find']({'where':{'id':_0x1ba11b[_0x2a42('0x5a')]['id']},'include':[{'model':db['Attachment'],'as':_0x2a42('0x8f')}]})['then'](handleEntityNotFound(_0xe88929,null))[_0x2a42('0x36')](function(_0x16e656){if(_0x16e656){return _0xe88929[_0x2a42('0x8b')](path['join'](_0x3e79ce,_0x16e656[_0x2a42('0x8f')][_0x2a42('0x8a')]));}})[_0x2a42('0x58')](handleError(_0xe88929,null));};
\ No newline at end of file
index 90ef451..e7ba92d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf02c=['save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','FaxMessage','setMaxListeners'];(function(_0x250d76,_0x4a0cb4){var _0x3abf94=function(_0xd1f371){while(--_0xd1f371){_0x250d76['push'](_0x250d76['shift']());}};_0x3abf94(++_0x4a0cb4);}(_0xf02c,0x92));var _0xcf02=function(_0x2e11f7,_0x37abfb){_0x2e11f7=_0x2e11f7-0x0;var _0xacf573=_0xf02c[_0x2e11f7];return _0xacf573;};'use strict';var EventEmitter=require(_0xcf02('0x0'));var FaxMessage=require(_0xcf02('0x1'))['db'][_0xcf02('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xcf02('0x3')](0x0);var events={'afterCreate':_0xcf02('0x4'),'afterUpdate':_0xcf02('0x5'),'afterDestroy':_0xcf02('0x6')};function emitEvent(_0x378e8b){return function(_0x3abde3,_0x354198,_0x3e8829){FaxMessageEvents[_0xcf02('0x7')](_0x378e8b+':'+_0x3abde3['id'],_0x3abde3);FaxMessageEvents[_0xcf02('0x7')](_0x378e8b,_0x3abde3);_0x3e8829(null);};}for(var e in events){if(events[_0xcf02('0x8')](e)){var event=events[e];FaxMessage[_0xcf02('0x9')](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
+var _0xf811=['exports','events','../../mysqldb','FaxMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x18da07,_0x2caa46){var _0x27570c=function(_0x4eeaa8){while(--_0x4eeaa8){_0x18da07['push'](_0x18da07['shift']());}};_0x27570c(++_0x2caa46);}(_0xf811,0x6f));var _0x1f81=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0xf811[_0x3511d3];return _0x5d6321;};'use strict';var EventEmitter=require(_0x1f81('0x0'));var FaxMessage=require(_0x1f81('0x1'))['db'][_0x1f81('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x1f81('0x3')](0x0);var events={'afterCreate':_0x1f81('0x4'),'afterUpdate':_0x1f81('0x5'),'afterDestroy':_0x1f81('0x6')};function emitEvent(_0x1650f4){return function(_0x18f178,_0x4281c3,_0x40b2b6){FaxMessageEvents[_0x1f81('0x7')](_0x1650f4+':'+_0x18f178['id'],_0x18f178);FaxMessageEvents[_0x1f81('0x7')](_0x1650f4,_0x18f178);_0x40b2b6(null);};}for(var e in events){if(events[_0x1f81('0x8')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module[_0x1f81('0x9')]=FaxMessageEvents;
\ No newline at end of file
index bdd7c68..324ca51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfcd=['FaxMessage','fax_messages','fti_fax_messages','body','FULLTEXT','get','direction','isNil','FaxInteraction','findOne','update','createdAt','toLowerCase','catch','error','utf8mb4','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./faxMessage.attributes','exports'];(function(_0x2dbcf0,_0x1c9ce9){var _0x185a15=function(_0x51b059){while(--_0x51b059){_0x2dbcf0['push'](_0x2dbcf0['shift']());}};_0x185a15(++_0x1c9ce9);}(_0xbfcd,0x10a));var _0xdbfc=function(_0x3a2476,_0x310178){_0x3a2476=_0x3a2476-0x0;var _0xea20f=_0xbfcd[_0x3a2476];return _0xea20f;};'use strict';var _=require('lodash');var util=require(_0xdbfc('0x0'));var logger=require('../../config/logger')(_0xdbfc('0x1'));var moment=require(_0xdbfc('0x2'));var BPromise=require(_0xdbfc('0x3'));var rp=require(_0xdbfc('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdbfc('0x5'));var config=require(_0xdbfc('0x6'));var attributes=require(_0xdbfc('0x7'));module[_0xdbfc('0x8')]=function(_0x2b8432,_0x3f45ee){return _0x2b8432['define'](_0xdbfc('0x9'),attributes,{'tableName':_0xdbfc('0xa'),'paranoid':![],'indexes':[{'name':_0xdbfc('0xb'),'fields':[_0xdbfc('0xc')],'type':_0xdbfc('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x325e3f,_0x2a0aad,_0x5d7b53){var _0x1a67cd=_0x2b8432['models'];var _0x1f6237=_0x325e3f[_0xdbfc('0xe')]({'plain':!![]});if(_0x1f6237[_0xdbfc('0xf')]['toLowerCase']()==='in'||_0x1f6237[_0xdbfc('0xf')]['toLowerCase']()==='out'&&!_0x1f6237['secret']&&!_[_0xdbfc('0x10')](_0x1f6237['UserId'])){_0x1a67cd[_0xdbfc('0x11')][_0xdbfc('0x12')]({'where':{'id':_0x1f6237['FaxInteractionId']}})['then'](function(_0x177757){if(_0x177757){_0x177757[_0xdbfc('0x13')]({'lastMsgAt':_0x1f6237[_0xdbfc('0x14')],'lastMsgDirection':_0x1f6237[_0xdbfc('0xf')][_0xdbfc('0x15')]()});}})[_0xdbfc('0x16')](function(_0x2f1b69){console[_0xdbfc('0x17')](_0x2f1b69);});}_0x5d7b53();}},'charset':_0xdbfc('0x18'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x1521=['FaxInteractionId','then','createdAt','direction','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./faxMessage.attributes','define','fti_fax_messages','body','FULLTEXT','models','toLowerCase','out','secret','isNil','UserId','FaxInteraction','findOne'];(function(_0x58c2c2,_0x3419ec){var _0x3c7a7b=function(_0x1d786b){while(--_0x1d786b){_0x58c2c2['push'](_0x58c2c2['shift']());}};_0x3c7a7b(++_0x3419ec);}(_0x1521,0x147));var _0x1152=function(_0x17b0d4,_0x377add){_0x17b0d4=_0x17b0d4-0x0;var _0x2d02c7=_0x1521[_0x17b0d4];return _0x2d02c7;};'use strict';var _=require(_0x1152('0x0'));var util=require(_0x1152('0x1'));var logger=require('../../config/logger')(_0x1152('0x2'));var moment=require(_0x1152('0x3'));var BPromise=require(_0x1152('0x4'));var rp=require(_0x1152('0x5'));var fs=require('fs');var path=require(_0x1152('0x6'));var rimraf=require('rimraf');var config=require(_0x1152('0x7'));var attributes=require(_0x1152('0x8'));module['exports']=function(_0x24b1dc,_0x3bb2b2){return _0x24b1dc[_0x1152('0x9')]('FaxMessage',attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':_0x1152('0xa'),'fields':[_0x1152('0xb')],'type':_0x1152('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4aef0a,_0x224319,_0x2f3007){var _0x18c361=_0x24b1dc[_0x1152('0xd')];var _0x206d5a=_0x4aef0a['get']({'plain':!![]});if(_0x206d5a['direction'][_0x1152('0xe')]()==='in'||_0x206d5a['direction'][_0x1152('0xe')]()===_0x1152('0xf')&&!_0x206d5a[_0x1152('0x10')]&&!_[_0x1152('0x11')](_0x206d5a[_0x1152('0x12')])){_0x18c361[_0x1152('0x13')][_0x1152('0x14')]({'where':{'id':_0x206d5a[_0x1152('0x15')]}})[_0x1152('0x16')](function(_0x27295d){if(_0x27295d){_0x27295d['update']({'lastMsgAt':_0x206d5a[_0x1152('0x17')],'lastMsgDirection':_0x206d5a[_0x1152('0x18')]['toLowerCase']()});}})[_0x1152('0x19')](function(_0x4b75a7){console[_0x1152('0x1a')](_0x4b75a7);});}_0x2f3007();}},'charset':_0x1152('0x1b'),'collate':_0x1152('0x1c')});};
\ No newline at end of file
index a313418..2bb343c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd1=['debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','CreateFaxMessage','FaxMessage','create','body','raw','catch','UpdateFaxMessage','options','where','attributes','limit','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5fd1,0x155));var _0x15fd=function(_0x34fdfd,_0x12f581){_0x34fdfd=_0x34fdfd-0x0;var _0xa14b59=_0x5fd1[_0x34fdfd];return _0xa14b59;};'use strict';var _=require(_0x15fd('0x0'));var util=require('util');var moment=require(_0x15fd('0x1'));var BPromise=require(_0x15fd('0x2'));var rs=require(_0x15fd('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x15fd('0x4'));var logger=require(_0x15fd('0x5'))(_0x15fd('0x6'));var config=require('../../config/environment');var jayson=require(_0x15fd('0x7'));var client=jayson[_0x15fd('0x8')][_0x15fd('0x9')]({'port':0x232a});config[_0x15fd('0xa')]=_[_0x15fd('0xb')](config['redis'],{'host':_0x15fd('0xc'),'port':0x18eb});var socket=require(_0x15fd('0xd'))(new Redis(config[_0x15fd('0xa')]));require('./faxMessage.socket')[_0x15fd('0xe')](socket);function respondWithRpcPromise(_0x5c9c63,_0x3dfdbb,_0x250457){return new BPromise(function(_0x4c226a,_0x4883fd){return client['request'](_0x5c9c63,_0x250457)[_0x15fd('0xf')](function(_0x2a4d55){logger[_0x15fd('0x10')](_0x15fd('0x11'),_0x3dfdbb,_0x15fd('0x12'));logger[_0x15fd('0x13')](_0x15fd('0x14'),_0x3dfdbb,_0x15fd('0x12'),JSON[_0x15fd('0x15')](_0x2a4d55));if(_0x2a4d55['error']){if(_0x2a4d55['error']['code']===0x1f4){logger[_0x15fd('0x16')](_0x15fd('0x11'),_0x3dfdbb,_0x2a4d55[_0x15fd('0x16')][_0x15fd('0x17')]);return _0x4883fd(_0x2a4d55[_0x15fd('0x16')][_0x15fd('0x17')]);}logger[_0x15fd('0x16')](_0x15fd('0x11'),_0x3dfdbb,_0x2a4d55['error']['message']);return _0x4c226a(_0x2a4d55[_0x15fd('0x16')]['message']);}else{logger[_0x15fd('0x10')]('FaxMessage,\x20%s,\x20%s',_0x3dfdbb,_0x15fd('0x12'));_0x4c226a(_0x2a4d55[_0x15fd('0x18')][_0x15fd('0x17')]);}})['catch'](function(_0x367c36){logger[_0x15fd('0x16')](_0x15fd('0x11'),_0x3dfdbb,_0x367c36);_0x4883fd(_0x367c36);});});}exports[_0x15fd('0x19')]=function(_0x2fb919){var _0x36a90e=this;return new Promise(function(_0x3761db,_0x2f46f1){return db[_0x15fd('0x1a')][_0x15fd('0x1b')](_0x2fb919[_0x15fd('0x1c')],{'raw':_0x2fb919['options']?_0x2fb919['options'][_0x15fd('0x1d')]===undefined?!![]:![]:!![]})[_0x15fd('0xf')](function(_0x252a1c){logger[_0x15fd('0x10')](_0x15fd('0x19'),_0x2fb919);logger[_0x15fd('0x13')](_0x15fd('0x19'),_0x2fb919,JSON['stringify'](_0x252a1c));_0x3761db(_0x252a1c);})[_0x15fd('0x1e')](function(_0x2d19ac){logger[_0x15fd('0x16')]('CreateFaxMessage',_0x2d19ac[_0x15fd('0x17')],_0x2fb919);_0x2f46f1(_0x36a90e['error'](0x1f4,_0x2d19ac[_0x15fd('0x17')]));});});};exports[_0x15fd('0x1f')]=function(_0x21601d){var _0x4c9708=this;return new Promise(function(_0x16b87c,_0x1cbf2c){return db[_0x15fd('0x1a')]['update'](_0x21601d[_0x15fd('0x1c')],{'raw':_0x21601d['options']?_0x21601d[_0x15fd('0x20')][_0x15fd('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21601d[_0x15fd('0x20')]?_0x21601d[_0x15fd('0x20')][_0x15fd('0x21')]||null:null,'attributes':_0x21601d[_0x15fd('0x20')]?_0x21601d[_0x15fd('0x20')][_0x15fd('0x22')]||null:null,'limit':_0x21601d[_0x15fd('0x20')]?_0x21601d[_0x15fd('0x20')][_0x15fd('0x23')]||null:null})['then'](function(_0x47c22c){logger[_0x15fd('0x10')]('UpdateFaxMessage',_0x21601d);logger[_0x15fd('0x13')](_0x15fd('0x1f'),_0x21601d,JSON['stringify'](_0x47c22c));_0x16b87c(_0x47c22c);})[_0x15fd('0x1e')](function(_0x197d15){logger['error'](_0x15fd('0x1f'),_0x197d15[_0x15fd('0x17')],_0x21601d);_0x1cbf2c(_0x4c9708[_0x15fd('0x16')](0x1f4,_0x197d15[_0x15fd('0x17')]));});});};
\ No newline at end of file
+var _0x425d=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateFaxMessage','FaxMessage','body','options','raw','catch','UpdateFaxMessage','where','attributes','limit'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x425d,0x1e0));var _0xd425=function(_0x251f7d,_0x50ac61){_0x251f7d=_0x251f7d-0x0;var _0x57160d=_0x425d[_0x251f7d];return _0x57160d;};'use strict';var _=require(_0xd425('0x0'));var util=require('util');var moment=require(_0xd425('0x1'));var BPromise=require(_0xd425('0x2'));var rs=require(_0xd425('0x3'));var fs=require('fs');var Redis=require(_0xd425('0x4'));var db=require(_0xd425('0x5'))['db'];var utils=require(_0xd425('0x6'));var logger=require(_0xd425('0x7'))('rpc');var config=require(_0xd425('0x8'));var jayson=require(_0xd425('0x9'));var client=jayson[_0xd425('0xa')][_0xd425('0xb')]({'port':0x232a});config[_0xd425('0xc')]=_[_0xd425('0xd')](config['redis'],{'host':_0xd425('0xe'),'port':0x18eb});var socket=require(_0xd425('0xf'))(new Redis(config[_0xd425('0xc')]));require(_0xd425('0x10'))[_0xd425('0x11')](socket);function respondWithRpcPromise(_0x2beb20,_0x30111e,_0x1969ba){return new BPromise(function(_0x3a7a01,_0x35a7f4){return client[_0xd425('0x12')](_0x2beb20,_0x1969ba)[_0xd425('0x13')](function(_0x26f6d2){logger[_0xd425('0x14')](_0xd425('0x15'),_0x30111e,_0xd425('0x16'));logger[_0xd425('0x17')](_0xd425('0x18'),_0x30111e,_0xd425('0x16'),JSON[_0xd425('0x19')](_0x26f6d2));if(_0x26f6d2['error']){if(_0x26f6d2[_0xd425('0x1a')][_0xd425('0x1b')]===0x1f4){logger[_0xd425('0x1a')]('FaxMessage,\x20%s,\x20%s',_0x30111e,_0x26f6d2[_0xd425('0x1a')][_0xd425('0x1c')]);return _0x35a7f4(_0x26f6d2[_0xd425('0x1a')][_0xd425('0x1c')]);}logger[_0xd425('0x1a')]('FaxMessage,\x20%s,\x20%s',_0x30111e,_0x26f6d2[_0xd425('0x1a')][_0xd425('0x1c')]);return _0x3a7a01(_0x26f6d2[_0xd425('0x1a')][_0xd425('0x1c')]);}else{logger['info'](_0xd425('0x15'),_0x30111e,_0xd425('0x16'));_0x3a7a01(_0x26f6d2[_0xd425('0x1d')][_0xd425('0x1c')]);}})['catch'](function(_0x58a0c1){logger['error']('FaxMessage,\x20%s,\x20%s',_0x30111e,_0x58a0c1);_0x35a7f4(_0x58a0c1);});});}exports[_0xd425('0x1e')]=function(_0xb92870){var _0x3c98db=this;return new Promise(function(_0x5e797a,_0x355af0){return db[_0xd425('0x1f')]['create'](_0xb92870[_0xd425('0x20')],{'raw':_0xb92870[_0xd425('0x21')]?_0xb92870[_0xd425('0x21')][_0xd425('0x22')]===undefined?!![]:![]:!![]})[_0xd425('0x13')](function(_0xb240c4){logger[_0xd425('0x14')](_0xd425('0x1e'),_0xb92870);logger[_0xd425('0x17')](_0xd425('0x1e'),_0xb92870,JSON[_0xd425('0x19')](_0xb240c4));_0x5e797a(_0xb240c4);})[_0xd425('0x23')](function(_0x47f44a){logger[_0xd425('0x1a')](_0xd425('0x1e'),_0x47f44a[_0xd425('0x1c')],_0xb92870);_0x355af0(_0x3c98db[_0xd425('0x1a')](0x1f4,_0x47f44a[_0xd425('0x1c')]));});});};exports[_0xd425('0x24')]=function(_0x3c3402){var _0x577e4b=this;return new Promise(function(_0x12f951,_0x177de2){return db[_0xd425('0x1f')]['update'](_0x3c3402[_0xd425('0x20')],{'raw':_0x3c3402[_0xd425('0x21')]?_0x3c3402[_0xd425('0x21')][_0xd425('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3c3402[_0xd425('0x21')]?_0x3c3402[_0xd425('0x21')][_0xd425('0x25')]||null:null,'attributes':_0x3c3402[_0xd425('0x21')]?_0x3c3402[_0xd425('0x21')][_0xd425('0x26')]||null:null,'limit':_0x3c3402['options']?_0x3c3402[_0xd425('0x21')][_0xd425('0x27')]||null:null})[_0xd425('0x13')](function(_0x3695dd){logger[_0xd425('0x14')](_0xd425('0x24'),_0x3c3402);logger[_0xd425('0x17')](_0xd425('0x24'),_0x3c3402,JSON[_0xd425('0x19')](_0x3695dd));_0x12f951(_0x3695dd);})[_0xd425('0x23')](function(_0x3583b0){logger['error'](_0xd425('0x24'),_0x3583b0[_0xd425('0x1c')],_0x3c3402);_0x177de2(_0x577e4b[_0xd425('0x1a')](0x1f4,_0x3583b0[_0xd425('0x1c')]));});});};
\ No newline at end of file
index 8deb8c1..41c68d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17f5=['save','update','emit','register','length','faxMessage:','./faxMessage.events'];(function(_0x25081f,_0x37701f){var _0x94e60f=function(_0x53f126){while(--_0x53f126){_0x25081f['push'](_0x25081f['shift']());}};_0x94e60f(++_0x37701f);}(_0x17f5,0x18e));var _0x517f=function(_0xdee2f7,_0x5a9c65){_0xdee2f7=_0xdee2f7-0x0;var _0x1bdf62=_0x17f5[_0xdee2f7];return _0x1bdf62;};'use strict';var FaxMessageEvents=require(_0x517f('0x0'));var events=[_0x517f('0x1'),'remove',_0x517f('0x2')];function createListener(_0x4f10ca,_0x11aee9){return function(_0x44d4fa){_0x11aee9[_0x517f('0x3')](_0x4f10ca,_0x44d4fa);};}function removeListener(_0x12decd,_0x5bb11d){return function(){FaxMessageEvents['removeListener'](_0x12decd,_0x5bb11d);};}exports[_0x517f('0x4')]=function(_0xa81c52){for(var _0x206313=0x0,_0x463968=events[_0x517f('0x5')];_0x206313<_0x463968;_0x206313++){var _0xc04cbc=events[_0x206313];var _0x1b4ae1=createListener(_0x517f('0x6')+_0xc04cbc,_0xa81c52);FaxMessageEvents['on'](_0xc04cbc,_0x1b4ae1);}};
\ No newline at end of file
+var _0xe858=['removeListener','register','length','./faxMessage.events','save','remove','update','emit'];(function(_0x22a828,_0x56eea7){var _0x5f26d1=function(_0x135eeb){while(--_0x135eeb){_0x22a828['push'](_0x22a828['shift']());}};_0x5f26d1(++_0x56eea7);}(_0xe858,0x103));var _0x8e85=function(_0x3e3f27,_0x2c2ecf){_0x3e3f27=_0x3e3f27-0x0;var _0x15c868=_0xe858[_0x3e3f27];return _0x15c868;};'use strict';var FaxMessageEvents=require(_0x8e85('0x0'));var events=[_0x8e85('0x1'),_0x8e85('0x2'),_0x8e85('0x3')];function createListener(_0x52ebd7,_0x394ce6){return function(_0x2617e3){_0x394ce6[_0x8e85('0x4')](_0x52ebd7,_0x2617e3);};}function removeListener(_0x52dad0,_0x1cbace){return function(){FaxMessageEvents[_0x8e85('0x5')](_0x52dad0,_0x1cbace);};}exports[_0x8e85('0x6')]=function(_0x19f191){for(var _0x5cc1bd=0x0,_0x2c5cb2=events[_0x8e85('0x7')];_0x5cc1bd<_0x2c5cb2;_0x5cc1bd++){var _0x353197=events[_0x5cc1bd];var _0x2bdbb7=createListener('faxMessage:'+_0x353197,_0x19f191);FaxMessageEvents['on'](_0x353197,_0x2bdbb7);}};
\ No newline at end of file
index d0e579e..7eac595 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x222f=['/:id/reject','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','describe','/:id','show','/:id/download','post','tracked','fax','create','put','update','/:id/accept'];(function(_0x27a8a9,_0x2a2b4d){var _0x8da759=function(_0x21ed81){while(--_0x21ed81){_0x27a8a9['push'](_0x27a8a9['shift']());}};_0x8da759(++_0x2a2b4d);}(_0x222f,0x1a4));var _0xf222=function(_0x4fe496,_0x1d8673){_0x4fe496=_0x4fe496-0x0;var _0x422b24=_0x222f[_0x4fe496];return _0x422b24;};'use strict';var multer=require(_0xf222('0x0'));var util=require(_0xf222('0x1'));var path=require(_0xf222('0x2'));var timeout=require(_0xf222('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf222('0x4'));var auth=require(_0xf222('0x5'));var interaction=require(_0xf222('0x6'));var config=require(_0xf222('0x7'));var controller=require('./faxMessage.controller');router[_0xf222('0x8')]('/',auth['isAuthenticated'](),controller[_0xf222('0x9')]);router[_0xf222('0x8')]('/describe',auth[_0xf222('0xa')](),controller[_0xf222('0xb')]);router['get'](_0xf222('0xc'),auth[_0xf222('0xa')](),controller[_0xf222('0xd')]);router[_0xf222('0x8')](_0xf222('0xe'),auth[_0xf222('0xa')](),controller['download']);router[_0xf222('0xf')]('/',auth[_0xf222('0xa')](),interaction[_0xf222('0x10')](_0xf222('0x11'),'faxmessage:create'),controller[_0xf222('0x12')]);router[_0xf222('0x13')](_0xf222('0xc'),auth[_0xf222('0xa')](),controller[_0xf222('0x14')]);router[_0xf222('0x13')](_0xf222('0x15'),auth[_0xf222('0xa')](),controller['accept']);router['put'](_0xf222('0x16'),auth[_0xf222('0xa')](),controller['reject']);router[_0xf222('0x17')](_0xf222('0xc'),auth[_0xf222('0xa')](),controller[_0xf222('0x18')]);module[_0xf222('0x19')]=router;
\ No newline at end of file
+var _0x5ff3=['/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxMessage.controller','get','isAuthenticated','index','/:id','download','tracked','put','update'];(function(_0x43b82e,_0x114b7e){var _0x22be53=function(_0x4230b5){while(--_0x4230b5){_0x43b82e['push'](_0x43b82e['shift']());}};_0x22be53(++_0x114b7e);}(_0x5ff3,0x17d));var _0x35ff=function(_0x5c07cf,_0x250d06){_0x5c07cf=_0x5c07cf-0x0;var _0x48543f=_0x5ff3[_0x5c07cf];return _0x48543f;};'use strict';var multer=require('multer');var util=require(_0x35ff('0x0'));var path=require('path');var timeout=require(_0x35ff('0x1'));var express=require('express');var router=express[_0x35ff('0x2')]();var fs_extra=require(_0x35ff('0x3'));var auth=require(_0x35ff('0x4'));var interaction=require(_0x35ff('0x5'));var config=require('../../config/environment');var controller=require(_0x35ff('0x6'));router[_0x35ff('0x7')]('/',auth[_0x35ff('0x8')](),controller[_0x35ff('0x9')]);router[_0x35ff('0x7')]('/describe',auth[_0x35ff('0x8')](),controller['describe']);router[_0x35ff('0x7')](_0x35ff('0xa'),auth[_0x35ff('0x8')](),controller['show']);router[_0x35ff('0x7')]('/:id/download',auth[_0x35ff('0x8')](),controller[_0x35ff('0xb')]);router['post']('/',auth['isAuthenticated'](),interaction[_0x35ff('0xc')]('fax','faxmessage:create'),controller['create']);router[_0x35ff('0xd')](_0x35ff('0xa'),auth[_0x35ff('0x8')](),controller[_0x35ff('0xe')]);router['put'](_0x35ff('0xf'),auth[_0x35ff('0x8')](),controller[_0x35ff('0x10')]);router['put'](_0x35ff('0x11'),auth[_0x35ff('0x8')](),controller[_0x35ff('0x12')]);router[_0x35ff('0x13')](_0x35ff('0xa'),auth[_0x35ff('0x8')](),controller[_0x35ff('0x14')]);module[_0x35ff('0x15')]=router;
\ No newline at end of file
index 383a6b5..09f1149 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16e0=['sequelize','STRING','name','ENUM','rrmemory','beepall','INTEGER'];(function(_0x3eaeb5,_0x39ce5e){var _0x48468d=function(_0x3da4e1){while(--_0x3da4e1){_0x3eaeb5['push'](_0x3eaeb5['shift']());}};_0x48468d(++_0x39ce5e);}(_0x16e0,0x1b2));var _0x016e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x16e0[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x016e('0x0'));module['exports']={'name':{'type':Sequelize[_0x016e('0x1')],'unique':_0x016e('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x016e('0x3')](_0x016e('0x4'),_0x016e('0x5'),'roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x016e('0x6')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xc4af=['ENUM','beepall','roundrobin','sequelize','STRING','name','INTEGER'];(function(_0x327999,_0x302f86){var _0x54c3a9=function(_0x1cddf1){while(--_0x1cddf1){_0x327999['push'](_0x327999['shift']());}};_0x54c3a9(++_0x302f86);}(_0xc4af,0x88));var _0xfc4a=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xc4af[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require(_0xfc4a('0x0'));module['exports']={'name':{'type':Sequelize[_0xfc4a('0x1')],'unique':_0xfc4a('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xfc4a('0x1')]},'timeout':{'type':Sequelize[_0xfc4a('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xfc4a('0x4')]('rrmemory',_0xfc4a('0x5'),_0xfc4a('0x6')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xfc4a('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 88e9e6d..c14408b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97f1=['to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','api','../../config/environment','../../mysqldb','redis','localhost','./faxQueue.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','destroy','FaxQueues','UserProfileResource','then','error','stack','name','FaxQueue','fieldName','key','model','map','query','keys','filters','attributes','fields','hasOwnProperty','order','sort','pick','where','merge','type','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','intersection','options','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','update','params','describe','getMembers','findOne','UserFaxQueue','rawAttributes','length','nolimit','User','findAndCountAll','faxPause','updatedAt','createdAt','SIP','getTeams','Agents','online','voicePause','interface','flatMap','transaction','addTeams','each','findOrCreate','forEach','emit','removeTeams','ids','select','field','tq.TeamId','from','team_has_fax_queues','join','user_has_teams','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','sequelize','toString','QueryTypes','includes','all','union','compact','removeAgents','addAgents','omit','userFaxQueue:save','isArray','userFaxQueue:remove','getAgents','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path'];(function(_0x3431d6,_0x19c714){var _0xb63359=function(_0x32936b){while(--_0x32936b){_0x3431d6['push'](_0x3431d6['shift']());}};_0xb63359(++_0x19c714);}(_0x97f1,0x7d));var _0x197f=function(_0x43c640,_0x32cc5a){_0x43c640=_0x43c640-0x0;var _0x355d25=_0x97f1[_0x43c640];return _0x355d25;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x197f('0x0'));var jsonpatch=require(_0x197f('0x1'));var rp=require(_0x197f('0x2'));var moment=require('moment');var BPromise=require(_0x197f('0x3'));var Mustache=require(_0x197f('0x4'));var util=require(_0x197f('0x5'));var path=require(_0x197f('0x6'));var sox=require('sox');var csv=require(_0x197f('0x7'));var ejs=require(_0x197f('0x8'));var fs=require('fs');var fs_extra=require(_0x197f('0x9'));var _=require(_0x197f('0xa'));var squel=require(_0x197f('0xb'));var crypto=require('crypto');var jsforce=require(_0x197f('0xc'));var deskjs=require(_0x197f('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x197f('0xe'));var Redis=require(_0x197f('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x197f('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x197f('0x11'));var utils=require('../../config/utils');var config=require(_0x197f('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x197f('0x13'))['db'];config[_0x197f('0x14')]=_['defaults'](config[_0x197f('0x14')],{'host':_0x197f('0x15'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x197f('0x14')]));require(_0x197f('0x16'))[_0x197f('0x17')](socket);function respondWithStatusCode(_0x29f64b,_0x1a9efc){_0x1a9efc=_0x1a9efc||0xcc;return function(_0x3798bf){if(_0x3798bf){return _0x29f64b[_0x197f('0x18')](_0x1a9efc);}return _0x29f64b[_0x197f('0x19')](_0x1a9efc)[_0x197f('0x1a')]();};}function respondWithResult(_0x2252f1,_0x68c1a1){_0x68c1a1=_0x68c1a1||0xc8;return function(_0x33b8a8){if(_0x33b8a8){return _0x2252f1[_0x197f('0x19')](_0x68c1a1)['json'](_0x33b8a8);}};}function respondWithFilteredResult(_0x44dba9,_0x51dcf8){return function(_0x3c1965){if(_0x3c1965){var _0x2e04e4=typeof _0x51dcf8[_0x197f('0x1b')]===_0x197f('0x1c')&&typeof _0x51dcf8[_0x197f('0x1d')]===_0x197f('0x1c');var _0x4d319d=_0x3c1965['count'];var _0x15d842=_0x2e04e4?0x0:_0x51dcf8['offset'];var _0x2bca2e=_0x2e04e4?_0x3c1965[_0x197f('0x1e')]:_0x51dcf8[_0x197f('0x1b')]+_0x51dcf8[_0x197f('0x1d')];var _0x51bccc;if(_0x2bca2e>=_0x4d319d){_0x2bca2e=_0x4d319d;_0x51bccc=0xc8;}else{_0x51bccc=0xce;}_0x44dba9[_0x197f('0x19')](_0x51bccc);return _0x44dba9[_0x197f('0x1f')](_0x197f('0x20'),_0x15d842+'-'+_0x2bca2e+'/'+_0x4d319d)[_0x197f('0x21')](_0x3c1965);}return null;};}function patchUpdates(_0x3f0b88){return function(_0x4e274c){try{jsonpatch[_0x197f('0x22')](_0x4e274c,_0x3f0b88,!![]);}catch(_0xeef571){return BPromise[_0x197f('0x23')](_0xeef571);}return _0x4e274c[_0x197f('0x24')]();};}function saveUpdates(_0x4c0524,_0x32a7b1){return function(_0xc4758b){if(_0xc4758b){return _0xc4758b['update'](_0x4c0524)['then'](function(_0x28f3a1){return _0x28f3a1;});}return null;};}function removeEntity(_0x39da23,_0x332759){return function(_0x1e5aac){if(_0x1e5aac){return _0x1e5aac[_0x197f('0x25')]()['then'](function(){var _0x3f24e9=_0x1e5aac['get']({'plain':!![]});var _0x6a9bd2=_0x197f('0x26');return db[_0x197f('0x27')]['destroy']({'where':{'type':_0x6a9bd2,'resourceId':_0x3f24e9['id']}})['then'](function(){return _0x1e5aac;});})[_0x197f('0x28')](function(){_0x39da23[_0x197f('0x19')](0xcc)[_0x197f('0x1a')]();});}};}function handleEntityNotFound(_0x14bb6d,_0x4b3733){return function(_0x1778db){if(!_0x1778db){_0x14bb6d[_0x197f('0x18')](0x194);}return _0x1778db;};}function handleError(_0x29916c,_0x565888){_0x565888=_0x565888||0x1f4;return function(_0x5915ae){logger[_0x197f('0x29')](_0x5915ae[_0x197f('0x2a')]);if(_0x5915ae[_0x197f('0x2b')]){delete _0x5915ae[_0x197f('0x2b')];}_0x29916c[_0x197f('0x19')](_0x565888)['send'](_0x5915ae);};}exports['index']=function(_0x5979bf,_0x58b636){var _0x5158be={},_0x212856={},_0x23b81a={'count':0x0,'rows':[]};var _0x3092f3=_['map'](db[_0x197f('0x2c')]['rawAttributes'],function(_0xff0f72){return{'name':_0xff0f72[_0x197f('0x2d')],'type':_0xff0f72['type'][_0x197f('0x2e')]};});_0x212856[_0x197f('0x2f')]=_[_0x197f('0x30')](_0x3092f3,'name');_0x212856[_0x197f('0x31')]=_[_0x197f('0x32')](_0x5979bf[_0x197f('0x31')]);_0x212856[_0x197f('0x33')]=_['intersection'](_0x212856[_0x197f('0x2f')],_0x212856[_0x197f('0x31')]);_0x5158be[_0x197f('0x34')]=_['intersection'](_0x212856[_0x197f('0x2f')],qs[_0x197f('0x35')](_0x5979bf['query'][_0x197f('0x35')]));_0x5158be[_0x197f('0x34')]=_0x5158be[_0x197f('0x34')]['length']?_0x5158be[_0x197f('0x34')]:_0x212856[_0x197f('0x2f')];if(!_0x5979bf[_0x197f('0x31')][_0x197f('0x36')]('nolimit')){_0x5158be['limit']=qs[_0x197f('0x1d')](_0x5979bf['query']['limit']);_0x5158be['offset']=qs[_0x197f('0x1b')](_0x5979bf[_0x197f('0x31')]['offset']);}_0x5158be[_0x197f('0x37')]=qs[_0x197f('0x38')](_0x5979bf[_0x197f('0x31')][_0x197f('0x38')]);_0x5158be['where']=qs[_0x197f('0x33')](_[_0x197f('0x39')](_0x5979bf['query'],_0x212856[_0x197f('0x33')]),_0x3092f3);if(_0x5979bf[_0x197f('0x31')]['filter']){_0x5158be[_0x197f('0x3a')]=_[_0x197f('0x3b')](_0x5158be[_0x197f('0x3a')],{'$or':_[_0x197f('0x30')](_0x3092f3,function(_0x173114){if(_0x173114[_0x197f('0x3c')]!==_0x197f('0x3d')){var _0x288fb7={};_0x288fb7[_0x173114[_0x197f('0x2b')]]={'$like':'%'+_0x5979bf[_0x197f('0x31')][_0x197f('0x3e')]+'%'};return _0x288fb7;}})});}_0x5158be=_[_0x197f('0x3b')]({},_0x5158be,_0x5979bf['options']);var _0x58195a={'where':_0x5158be[_0x197f('0x3a')]};return db[_0x197f('0x2c')]['count'](_0x58195a)[_0x197f('0x28')](function(_0x4c27d1){_0x23b81a[_0x197f('0x1e')]=_0x4c27d1;if(_0x5979bf['query'][_0x197f('0x3f')]){_0x5158be[_0x197f('0x40')]=[{'all':!![]}];}return db[_0x197f('0x2c')][_0x197f('0x41')](_0x5158be);})[_0x197f('0x28')](function(_0x284655){_0x23b81a[_0x197f('0x42')]=_0x284655;return _0x23b81a;})[_0x197f('0x28')](respondWithFilteredResult(_0x58b636,_0x5158be))[_0x197f('0x43')](handleError(_0x58b636,null));};exports[_0x197f('0x44')]=function(_0x19d5e9,_0x496ee8){var _0x19796a={'raw':!![],'where':{'id':_0x19d5e9['params']['id']}},_0x4f8f4e={};_0x4f8f4e[_0x197f('0x2f')]=_['keys'](db[_0x197f('0x2c')]['rawAttributes']);_0x4f8f4e[_0x197f('0x31')]=_[_0x197f('0x32')](_0x19d5e9['query']);_0x4f8f4e[_0x197f('0x33')]=_[_0x197f('0x45')](_0x4f8f4e[_0x197f('0x2f')],_0x4f8f4e[_0x197f('0x31')]);_0x19796a['attributes']=_['intersection'](_0x4f8f4e[_0x197f('0x2f')],qs[_0x197f('0x35')](_0x19d5e9['query']['fields']));_0x19796a[_0x197f('0x34')]=_0x19796a[_0x197f('0x34')]['length']?_0x19796a[_0x197f('0x34')]:_0x4f8f4e[_0x197f('0x2f')];if(_0x19d5e9['query'][_0x197f('0x3f')]){_0x19796a[_0x197f('0x40')]=[{'all':!![]}];}_0x19796a=_[_0x197f('0x3b')]({},_0x19796a,_0x19d5e9[_0x197f('0x46')]);return db['FaxQueue'][_0x197f('0x47')](_0x19796a)['then'](handleEntityNotFound(_0x496ee8,null))['then'](respondWithResult(_0x496ee8,null))[_0x197f('0x43')](handleError(_0x496ee8,null));};exports['create']=function(_0x4567bc,_0x4973ef){return db[_0x197f('0x2c')][_0x197f('0x48')](_0x4567bc[_0x197f('0x49')],{})[_0x197f('0x28')](function(_0x54b9ca){var _0x2a06d3=_0x4567bc['user'][_0x197f('0x4a')]({'plain':!![]});if(!_0x2a06d3)throw new Error(_0x197f('0x4b'));if(_0x2a06d3['role']===_0x197f('0x4c')){var _0x50b975=_0x54b9ca[_0x197f('0x4a')]({'plain':!![]});var _0x143109=_0x197f('0x26');return db[_0x197f('0x4d')][_0x197f('0x47')]({'where':{'name':_0x143109,'userProfileId':_0x2a06d3['userProfileId']},'raw':!![]})[_0x197f('0x28')](function(_0x4cb007){if(_0x4cb007&&_0x4cb007[_0x197f('0x4e')]===0x0){return db[_0x197f('0x27')][_0x197f('0x48')]({'name':_0x50b975[_0x197f('0x2b')],'resourceId':_0x50b975['id'],'type':_0x4cb007[_0x197f('0x2b')],'sectionId':_0x4cb007['id']},{})['then'](function(){return _0x54b9ca;});}else{return _0x54b9ca;}})[_0x197f('0x43')](function(_0x24212a){logger[_0x197f('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x24212a);throw _0x24212a;});}return _0x54b9ca;})[_0x197f('0x28')](respondWithResult(_0x4973ef,0xc9))['catch'](handleError(_0x4973ef,null));};exports[_0x197f('0x4f')]=function(_0x3a2765,_0x2337be){if(_0x3a2765[_0x197f('0x49')]['id']){delete _0x3a2765[_0x197f('0x49')]['id'];}return db[_0x197f('0x2c')][_0x197f('0x47')]({'where':{'id':_0x3a2765[_0x197f('0x50')]['id']}})['then'](handleEntityNotFound(_0x2337be,null))[_0x197f('0x28')](saveUpdates(_0x3a2765[_0x197f('0x49')],null))[_0x197f('0x28')](respondWithResult(_0x2337be,null))['catch'](handleError(_0x2337be,null));};exports[_0x197f('0x25')]=function(_0x3191d0,_0x3221ff){return db['FaxQueue']['find']({'where':{'id':_0x3191d0['params']['id']}})['then'](handleEntityNotFound(_0x3221ff,null))[_0x197f('0x28')](removeEntity(_0x3221ff,null))[_0x197f('0x43')](handleError(_0x3221ff,null));};exports['describe']=function(_0x1af6b9,_0x7badec){return db[_0x197f('0x2c')][_0x197f('0x51')]()[_0x197f('0x28')](respondWithResult(_0x7badec,null))[_0x197f('0x43')](handleError(_0x7badec,null));};exports[_0x197f('0x52')]=function(_0x4eb18d,_0x2b5789,_0x562367){var _0x4c283b={'raw':!![],'where':{}},_0x50dfbc={},_0x57d413;return db[_0x197f('0x2c')][_0x197f('0x53')]({'where':{'id':_0x4eb18d['params']['id']}})[_0x197f('0x28')](handleEntityNotFound(_0x2b5789,null))[_0x197f('0x28')](function(_0x50e2cb){if(_0x50e2cb){_0x57d413=_0x50e2cb['get']({'plain':!![]});_0x50dfbc[_0x197f('0x2f')]=_[_0x197f('0x32')](db[_0x197f('0x54')][_0x197f('0x55')]);_0x50dfbc[_0x197f('0x31')]=_[_0x197f('0x32')](_0x4eb18d[_0x197f('0x31')]);_0x50dfbc[_0x197f('0x33')]=_[_0x197f('0x45')](_0x50dfbc[_0x197f('0x2f')],_0x50dfbc[_0x197f('0x31')]);_0x4c283b['attributes']=_['intersection'](_0x50dfbc[_0x197f('0x2f')],qs[_0x197f('0x35')](_0x4eb18d[_0x197f('0x31')][_0x197f('0x35')]));_0x4c283b[_0x197f('0x34')]=_0x4c283b[_0x197f('0x34')][_0x197f('0x56')]?_0x4c283b[_0x197f('0x34')]:_0x50dfbc[_0x197f('0x2f')];if(!_0x4eb18d['query'][_0x197f('0x36')](_0x197f('0x57'))){_0x4c283b[_0x197f('0x1d')]=qs[_0x197f('0x1d')](_0x4eb18d['query'][_0x197f('0x1d')]);_0x4c283b['offset']=qs[_0x197f('0x1b')](_0x4eb18d['query'][_0x197f('0x1b')]);}_0x4c283b[_0x197f('0x37')]=qs[_0x197f('0x38')](_0x4eb18d[_0x197f('0x31')]['sort']);_0x4c283b[_0x197f('0x3a')]=qs[_0x197f('0x33')](_[_0x197f('0x39')](_0x4eb18d[_0x197f('0x31')],_0x50dfbc['filters']));_0x4c283b[_0x197f('0x3a')]['FaxQueueId']=_0x50e2cb['id'];if(_0x4eb18d[_0x197f('0x31')]['filter']){_0x4c283b[_0x197f('0x3a')]=_[_0x197f('0x3b')](_0x4c283b['where'],{'$or':_[_0x197f('0x30')](_0x4c283b[_0x197f('0x34')],function(_0x1a49ea){var _0x48138c={};_0x48138c[_0x1a49ea]={'$like':'%'+_0x4eb18d[_0x197f('0x31')][_0x197f('0x3e')]+'%'};return _0x48138c;})});}_0x4c283b=_[_0x197f('0x3b')]({},_0x4c283b,_0x4eb18d[_0x197f('0x46')]);return db[_0x197f('0x54')][_0x197f('0x41')](_0x4c283b);}})['then'](function(_0xf6f53c){if(_0xf6f53c){return db[_0x197f('0x58')][_0x197f('0x59')]({'where':{'id':_['map'](_0xf6f53c,'UserId'),'role':'agent'},'attributes':['id',_0x197f('0x2b'),_0x197f('0x5a'),_0x197f('0x5b'),_0x197f('0x5c')]});}})[_0x197f('0x28')](function(_0x2ff36b){if(_0x2ff36b){return{'count':_0x2ff36b[_0x197f('0x1e')],'rows':_[_0x197f('0x30')](_0x2ff36b[_0x197f('0x42')],function(_0x5aa5d8){return{'membername':_0x5aa5d8[_0x197f('0x2b')],'UserId':_0x5aa5d8['id'],'queue_name':_0x57d413[_0x197f('0x2b')],'FaxQueueId':_0x57d413['id'],'interface':util['format']('%s/%s',_0x197f('0x5d'),_0x5aa5d8[_0x197f('0x2b')]),'penalty':0x0,'paused':_0x5aa5d8['faxPause'],'createdAt':_0x5aa5d8[_0x197f('0x5c')],'updatedAt':_0x5aa5d8[_0x197f('0x5b')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x197f('0x28')](respondWithFilteredResult(_0x2b5789,_0x4c283b))[_0x197f('0x43')](handleError(_0x2b5789,null));};exports[_0x197f('0x5e')]=function(_0x11a37f,_0x5378a5,_0x26904f){var _0x3a982b={};var _0x4eae91={};var _0x342148;var _0x55261d;return db[_0x197f('0x2c')][_0x197f('0x53')]({'where':{'id':_0x11a37f['params']['id']}})[_0x197f('0x28')](handleEntityNotFound(_0x5378a5,null))[_0x197f('0x28')](function(_0x2718d1){if(_0x2718d1){_0x342148=_0x2718d1;_0x4eae91[_0x197f('0x2f')]=_[_0x197f('0x32')](db['Team'][_0x197f('0x55')]);_0x4eae91[_0x197f('0x31')]=_[_0x197f('0x32')](_0x11a37f[_0x197f('0x31')]);_0x4eae91[_0x197f('0x33')]=_['intersection'](_0x4eae91[_0x197f('0x2f')],_0x4eae91[_0x197f('0x31')]);_0x3a982b['attributes']=_['intersection'](_0x4eae91[_0x197f('0x2f')],qs[_0x197f('0x35')](_0x11a37f[_0x197f('0x31')]['fields']));_0x3a982b[_0x197f('0x34')]=_0x3a982b[_0x197f('0x34')][_0x197f('0x56')]?_0x3a982b['attributes']:_0x4eae91[_0x197f('0x2f')];_0x3a982b[_0x197f('0x37')]=qs[_0x197f('0x38')](_0x11a37f[_0x197f('0x31')][_0x197f('0x38')]);_0x3a982b[_0x197f('0x3a')]=qs[_0x197f('0x33')](_['pick'](_0x11a37f[_0x197f('0x31')],_0x4eae91['filters']));if(_0x11a37f[_0x197f('0x31')]['filter']){_0x3a982b[_0x197f('0x3a')]=_['merge'](_0x3a982b[_0x197f('0x3a')],{'$or':_[_0x197f('0x30')](_0x3a982b['attributes'],function(_0xa278e){var _0x461a96={};_0x461a96[_0xa278e]={'$like':'%'+_0x11a37f[_0x197f('0x31')][_0x197f('0x3e')]+'%'};return _0x461a96;})});}_0x3a982b=_[_0x197f('0x3b')]({},_0x3a982b,_0x11a37f['options']);return _0x342148[_0x197f('0x5e')](_0x3a982b);}})[_0x197f('0x28')](function(_0x320174){if(_0x320174){_0x55261d=_0x320174['length'];if(!_0x11a37f[_0x197f('0x31')]['hasOwnProperty'](_0x197f('0x57'))){_0x3a982b['limit']=qs[_0x197f('0x1d')](_0x11a37f[_0x197f('0x31')][_0x197f('0x1d')]);_0x3a982b[_0x197f('0x1b')]=qs['offset'](_0x11a37f['query']['offset']);}return _0x342148[_0x197f('0x5e')](_0x3a982b);}})[_0x197f('0x28')](function(_0x492849){if(_0x492849){return _0x492849?{'count':_0x55261d,'rows':_0x492849}:null;}})[_0x197f('0x28')](respondWithResult(_0x5378a5,null))[_0x197f('0x43')](handleError(_0x5378a5,null));};exports['addTeams']=function(_0x409d0c,_0x571c16,_0x5a42f7){var _0x3f2527=_0x409d0c[_0x197f('0x49')]['ids'];return db['Team'][_0x197f('0x41')]({'where':{'id':_0x3f2527},'attributes':['id'],'include':[{'model':db[_0x197f('0x58')],'as':_0x197f('0x5f'),'attributes':['id',_0x197f('0x2b'),_0x197f('0x60'),_0x197f('0x61'),_0x197f('0x62')],'raw':!![]}]})[_0x197f('0x28')](function(_0x5d9459){if(_0x5d9459){var _0x3197dc=_[_0x197f('0x63')](_0x5d9459,function(_0x93ecd7){var _0x3bde2a=_0x93ecd7[_0x197f('0x4a')]({'plain':!![]});return _0x3bde2a['Agents'];});return db[_0x197f('0x2c')]['find']({'where':{'id':_0x409d0c[_0x197f('0x50')]['id']}})[_0x197f('0x28')](function(_0xfd0771){return db['sequelize'][_0x197f('0x64')](function(_0x3200c5){return _0xfd0771[_0x197f('0x65')](_0x3f2527,{'transaction':_0x3200c5})[_0x197f('0x28')](function(){return BPromise[_0x197f('0x66')](_0x3197dc,function(_0x12608e){return db[_0x197f('0x54')][_0x197f('0x67')]({'where':{'UserId':_0x12608e['id'],'FaxQueueId':_0x409d0c[_0x197f('0x50')]['id']},'transaction':_0x3200c5});});})[_0x197f('0x28')](function(){_0x3197dc[_0x197f('0x68')](function(_0xb7d1c2){socket[_0x197f('0x69')]('userFaxQueue:save',{'UserId':_0xb7d1c2['id'],'FaxQueueId':_0xfd0771['id']});});});});});}})[_0x197f('0x28')](respondWithStatusCode(_0x571c16,null))[_0x197f('0x43')](handleError(_0x571c16,null));};exports[_0x197f('0x6a')]=function(_0x4baa77,_0xa05f6,_0x2ebae4){return db['Team'][_0x197f('0x41')]({'where':{'id':_0x4baa77[_0x197f('0x31')][_0x197f('0x6b')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x197f('0x5f'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0xa05f6,null))[_0x197f('0x28')](function(_0xabef14){var _0x4cc34a=_[_0x197f('0x30')](_0xabef14,'id');var _0x56fa4d=[];var _0x1fb766=[];var _0x2cb751=squel[_0x197f('0x6c')]();_0x2cb751[_0x197f('0x6d')](_0x197f('0x6e'))[_0x197f('0x6f')](_0x197f('0x70'),'tq')[_0x197f('0x71')](_0x197f('0x72'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0x197f('0x73'),_0x4baa77['params']['id']);for(var _0x122e42=0x0;_0x122e42<_0xabef14['length'];_0x122e42+=0x1){let _0x3a2658=_0xabef14[_0x122e42];for(var _0x3ff11c=0x0;_0x3ff11c<_0x3a2658[_0x197f('0x5f')][_0x197f('0x56')];_0x3ff11c+=0x1){let _0xbeac8e=_0x3a2658[_0x197f('0x5f')][_0x3ff11c];var _0x2bbc0a=_0x2cb751[_0x197f('0x74')]();_0x2bbc0a['where'](_0x197f('0x75'),_0xbeac8e['id']);_0x1fb766['push'](db[_0x197f('0x76')][_0x197f('0x31')](_0x2bbc0a[_0x197f('0x77')](),{'type':db[_0x197f('0x76')][_0x197f('0x78')]['SELECT']})[_0x197f('0x28')](function(_0x29708){if(_0x29708[_0x197f('0x56')]===0x1){return _0xbeac8e['id'];}else{var _0x507a9c=_['every'](_[_0x197f('0x30')](_0x29708,'TeamId'),function(_0x1fec4a){return _[_0x197f('0x79')](_0x4cc34a,_0x1fec4a);});if(_0x507a9c){return _0xbeac8e['id'];}}}));}}return BPromise[_0x197f('0x7a')](_0x1fb766)[_0x197f('0x28')](function(_0xefa852){_0x56fa4d=_(_0x56fa4d)[_0x197f('0x7b')](_0xefa852)[_0x197f('0x7c')]()['value']();return db['FaxQueue']['find']({'where':{'id':_0x4baa77[_0x197f('0x50')]['id']}})[_0x197f('0x28')](function(_0x5addd4){return db[_0x197f('0x76')][_0x197f('0x64')](function(_0x3c1958){return _0x5addd4[_0x197f('0x6a')](_0x4baa77['query'][_0x197f('0x6b')],{'transaction':_0x3c1958})[_0x197f('0x28')](function(){if(!_['isEmpty'](_0x56fa4d)){return _0x5addd4[_0x197f('0x7d')](_0x56fa4d,{'transaction':_0x3c1958});}})['then'](function(){_0x56fa4d[_0x197f('0x68')](function(_0x38b3d7){socket[_0x197f('0x69')]('userFaxQueue:remove',{'UserId':_0x38b3d7,'FaxQueueId':_0x5addd4['id']});});});});});});})[_0x197f('0x28')](respondWithStatusCode(_0xa05f6,null))[_0x197f('0x43')](handleError(_0xa05f6,null));};exports[_0x197f('0x7e')]=function(_0x1ad606,_0x22c677,_0x3b9eb7){return db['FaxQueue']['find']({'where':{'id':_0x1ad606['params']['id']}})[_0x197f('0x28')](handleEntityNotFound(_0x22c677,null))[_0x197f('0x28')](function(_0x10f7b6){if(_0x10f7b6){return _0x10f7b6[_0x197f('0x7e')](_0x1ad606[_0x197f('0x49')][_0x197f('0x6b')],_[_0x197f('0x7f')](_0x1ad606[_0x197f('0x49')],[_0x197f('0x6b'),'id'])||{})['spread'](function(_0x53190a){for(var _0x2949d8=0x0;_0x2949d8<_0x1ad606[_0x197f('0x49')]['ids'][_0x197f('0x56')];_0x2949d8+=0x1){socket[_0x197f('0x69')](_0x197f('0x80'),{'UserId':Number(_0x1ad606[_0x197f('0x49')]['ids'][_0x2949d8]),'FaxQueueId':Number(_0x1ad606[_0x197f('0x50')]['id'])});}return _0x53190a;});}})['then'](respondWithResult(_0x22c677,null))[_0x197f('0x43')](handleError(_0x22c677,null));};exports['removeAgents']=function(_0x2e62f3,_0x3403c0,_0x5b0674){return db[_0x197f('0x2c')][_0x197f('0x47')]({'where':{'id':_0x2e62f3[_0x197f('0x50')]['id']}})[_0x197f('0x28')](handleEntityNotFound(_0x3403c0,null))['then'](function(_0x435262){if(_0x435262){return _0x435262[_0x197f('0x7d')](_0x2e62f3[_0x197f('0x31')][_0x197f('0x6b')])['then'](function(){if(_[_0x197f('0x81')](_0x2e62f3['query'][_0x197f('0x6b')])){for(var _0x1d594d=0x0;_0x1d594d<_0x2e62f3[_0x197f('0x31')]['ids']['length'];_0x1d594d+=0x1){socket[_0x197f('0x69')](_0x197f('0x82'),{'UserId':Number(_0x2e62f3[_0x197f('0x31')]['ids'][_0x1d594d]),'FaxQueueId':Number(_0x2e62f3[_0x197f('0x50')]['id'])});}}else{socket[_0x197f('0x69')]('userFaxQueue:remove',{'UserId':Number(_0x2e62f3[_0x197f('0x31')]['ids']),'FaxQueueId':Number(_0x2e62f3[_0x197f('0x50')]['id'])});}});}})[_0x197f('0x28')](respondWithStatusCode(_0x3403c0,null))['catch'](handleError(_0x3403c0,null));};exports[_0x197f('0x83')]=function(_0x29d15d,_0x3d7dd9,_0x557310){var _0x1b45f8={};var _0x3274c1={};var _0x3bbb74;var _0x396a3c;return db[_0x197f('0x2c')][_0x197f('0x53')]({'where':{'id':_0x29d15d['params']['id']}})['then'](handleEntityNotFound(_0x3d7dd9,null))[_0x197f('0x28')](function(_0x3995cc){if(_0x3995cc){_0x3bbb74=_0x3995cc;_0x3274c1[_0x197f('0x2f')]=_[_0x197f('0x32')](db['User'][_0x197f('0x55')]);_0x3274c1['query']=_[_0x197f('0x32')](_0x29d15d[_0x197f('0x31')]);_0x3274c1[_0x197f('0x33')]=_['intersection'](_0x3274c1[_0x197f('0x2f')],_0x3274c1[_0x197f('0x31')]);_0x1b45f8[_0x197f('0x34')]=_['intersection'](_0x3274c1['model'],qs[_0x197f('0x35')](_0x29d15d[_0x197f('0x31')][_0x197f('0x35')]));_0x1b45f8[_0x197f('0x34')]=_0x1b45f8[_0x197f('0x34')][_0x197f('0x56')]?_0x1b45f8[_0x197f('0x34')]:_0x3274c1[_0x197f('0x2f')];_0x1b45f8[_0x197f('0x37')]=qs[_0x197f('0x38')](_0x29d15d[_0x197f('0x31')][_0x197f('0x38')]);_0x1b45f8[_0x197f('0x3a')]=qs[_0x197f('0x33')](_[_0x197f('0x39')](_0x29d15d['query'],_0x3274c1[_0x197f('0x33')]));if(_0x29d15d[_0x197f('0x31')][_0x197f('0x3e')]){_0x1b45f8['where']=_[_0x197f('0x3b')](_0x1b45f8[_0x197f('0x3a')],{'$or':_[_0x197f('0x30')](_0x1b45f8[_0x197f('0x34')],function(_0x4e92f8){var _0x268ce3={};_0x268ce3[_0x4e92f8]={'$like':'%'+_0x29d15d[_0x197f('0x31')][_0x197f('0x3e')]+'%'};return _0x268ce3;})});}_0x1b45f8=_[_0x197f('0x3b')]({},_0x1b45f8,_0x29d15d['options']);return _0x3bbb74[_0x197f('0x83')](_0x1b45f8);}})[_0x197f('0x28')](function(_0x3b456d){if(_0x3b456d){_0x396a3c=_0x3b456d[_0x197f('0x56')];if(!_0x29d15d[_0x197f('0x31')][_0x197f('0x36')](_0x197f('0x57'))){_0x1b45f8[_0x197f('0x1d')]=qs[_0x197f('0x1d')](_0x29d15d[_0x197f('0x31')][_0x197f('0x1d')]);_0x1b45f8[_0x197f('0x1b')]=qs['offset'](_0x29d15d[_0x197f('0x31')]['offset']);}return _0x3bbb74[_0x197f('0x83')](_0x1b45f8);}})[_0x197f('0x28')](function(_0x4b09c3){if(_0x4b09c3){return _0x4b09c3?{'count':_0x396a3c,'rows':_0x4b09c3}:null;}})['then'](respondWithResult(_0x3d7dd9,null))[_0x197f('0x43')](handleError(_0x3d7dd9,null));};
\ No newline at end of file
+var _0xa8a5=['undefined','limit','count','set','reject','save','update','then','get','FaxQueues','UserProfileResource','destroy','end','error','stack','name','FaxQueue','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','findAll','catch','show','params','keys','rawAttributes','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserFaxQueue','FaxQueueId','User','agent','faxPause','updatedAt','rows','format','%s/%s','createdAt','getTeams','options','addTeams','ids','online','voicePause','flatMap','Agents','transaction','each','findOrCreate','forEach','removeTeams','select','field','tq.TeamId','from','team_has_fax_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','emit','userFaxQueue:save','isArray','getAgents','eml-format','zip-dir','request-promise','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','json','offset'];(function(_0x470ce2,_0x4b3815){var _0x739076=function(_0x1f16f3){while(--_0x1f16f3){_0x470ce2['push'](_0x470ce2['shift']());}};_0x739076(++_0x4b3815);}(_0xa8a5,0x17d));var _0x5a8a=function(_0x3df223,_0x1740fc){_0x3df223=_0x3df223-0x0;var _0x562d11=_0xa8a5[_0x3df223];return _0x562d11;};'use strict';var emlformat=require(_0x5a8a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5a8a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5a8a('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x5a8a('0x3'));var util=require(_0x5a8a('0x4'));var path=require(_0x5a8a('0x5'));var sox=require(_0x5a8a('0x6'));var csv=require(_0x5a8a('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5a8a('0x8'));var _=require(_0x5a8a('0x9'));var squel=require(_0x5a8a('0xa'));var crypto=require(_0x5a8a('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5a8a('0x7'));var querystring=require(_0x5a8a('0xc'));var Papa=require(_0x5a8a('0xd'));var Redis=require(_0x5a8a('0xe'));var authService=require(_0x5a8a('0xf'));var qs=require(_0x5a8a('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5a8a('0x11'));var logger=require(_0x5a8a('0x12'))(_0x5a8a('0x13'));var utils=require(_0x5a8a('0x14'));var config=require(_0x5a8a('0x15'));var licenseUtil=require(_0x5a8a('0x16'));var db=require(_0x5a8a('0x17'))['db'];config[_0x5a8a('0x18')]=_['defaults'](config[_0x5a8a('0x18')],{'host':_0x5a8a('0x19'),'port':0x18eb});var socket=require(_0x5a8a('0x1a'))(new Redis(config[_0x5a8a('0x18')]));require(_0x5a8a('0x1b'))[_0x5a8a('0x1c')](socket);function respondWithStatusCode(_0x5a42bd,_0x4c0a9c){_0x4c0a9c=_0x4c0a9c||0xcc;return function(_0x22060a){if(_0x22060a){return _0x5a42bd[_0x5a8a('0x1d')](_0x4c0a9c);}return _0x5a42bd['status'](_0x4c0a9c)['end']();};}function respondWithResult(_0x453400,_0x23dd57){_0x23dd57=_0x23dd57||0xc8;return function(_0x204dd3){if(_0x204dd3){return _0x453400[_0x5a8a('0x1e')](_0x23dd57)[_0x5a8a('0x1f')](_0x204dd3);}};}function respondWithFilteredResult(_0x1f4a56,_0x28863a){return function(_0x463e87){if(_0x463e87){var _0x3ed541=typeof _0x28863a[_0x5a8a('0x20')]===_0x5a8a('0x21')&&typeof _0x28863a[_0x5a8a('0x22')]==='undefined';var _0x269249=_0x463e87[_0x5a8a('0x23')];var _0xbaa734=_0x3ed541?0x0:_0x28863a[_0x5a8a('0x20')];var _0x38e35b=_0x3ed541?_0x463e87[_0x5a8a('0x23')]:_0x28863a[_0x5a8a('0x20')]+_0x28863a[_0x5a8a('0x22')];var _0x1cd843;if(_0x38e35b>=_0x269249){_0x38e35b=_0x269249;_0x1cd843=0xc8;}else{_0x1cd843=0xce;}_0x1f4a56['status'](_0x1cd843);return _0x1f4a56[_0x5a8a('0x24')]('Content-Range',_0xbaa734+'-'+_0x38e35b+'/'+_0x269249)[_0x5a8a('0x1f')](_0x463e87);}return null;};}function patchUpdates(_0x5c48c5){return function(_0x1e143b){try{jsonpatch['apply'](_0x1e143b,_0x5c48c5,!![]);}catch(_0x5af653){return BPromise[_0x5a8a('0x25')](_0x5af653);}return _0x1e143b[_0x5a8a('0x26')]();};}function saveUpdates(_0x100604,_0x426ceb){return function(_0x825c68){if(_0x825c68){return _0x825c68[_0x5a8a('0x27')](_0x100604)[_0x5a8a('0x28')](function(_0x286220){return _0x286220;});}return null;};}function removeEntity(_0xa6e24b,_0x5bf72b){return function(_0x32aabe){if(_0x32aabe){return _0x32aabe['destroy']()[_0x5a8a('0x28')](function(){var _0x4819ad=_0x32aabe[_0x5a8a('0x29')]({'plain':!![]});var _0x527635=_0x5a8a('0x2a');return db[_0x5a8a('0x2b')][_0x5a8a('0x2c')]({'where':{'type':_0x527635,'resourceId':_0x4819ad['id']}})[_0x5a8a('0x28')](function(){return _0x32aabe;});})[_0x5a8a('0x28')](function(){_0xa6e24b[_0x5a8a('0x1e')](0xcc)[_0x5a8a('0x2d')]();});}};}function handleEntityNotFound(_0x39797f,_0x2bb3bd){return function(_0x1390d4){if(!_0x1390d4){_0x39797f['sendStatus'](0x194);}return _0x1390d4;};}function handleError(_0x2e541c,_0x4c704e){_0x4c704e=_0x4c704e||0x1f4;return function(_0x6fecb){logger[_0x5a8a('0x2e')](_0x6fecb[_0x5a8a('0x2f')]);if(_0x6fecb['name']){delete _0x6fecb[_0x5a8a('0x30')];}_0x2e541c[_0x5a8a('0x1e')](_0x4c704e)['send'](_0x6fecb);};}exports['index']=function(_0x552c5d,_0x23eb22){var _0x3f30c1={},_0x37955b={},_0x5e6eda={'count':0x0,'rows':[]};var _0x416e1b=_['map'](db[_0x5a8a('0x31')]['rawAttributes'],function(_0x1d27e0){return{'name':_0x1d27e0['fieldName'],'type':_0x1d27e0[_0x5a8a('0x32')][_0x5a8a('0x33')]};});_0x37955b[_0x5a8a('0x34')]=_[_0x5a8a('0x35')](_0x416e1b,_0x5a8a('0x30'));_0x37955b[_0x5a8a('0x36')]=_['keys'](_0x552c5d[_0x5a8a('0x36')]);_0x37955b[_0x5a8a('0x37')]=_[_0x5a8a('0x38')](_0x37955b['model'],_0x37955b[_0x5a8a('0x36')]);_0x3f30c1[_0x5a8a('0x39')]=_[_0x5a8a('0x38')](_0x37955b[_0x5a8a('0x34')],qs[_0x5a8a('0x3a')](_0x552c5d[_0x5a8a('0x36')]['fields']));_0x3f30c1['attributes']=_0x3f30c1['attributes']['length']?_0x3f30c1[_0x5a8a('0x39')]:_0x37955b[_0x5a8a('0x34')];if(!_0x552c5d['query'][_0x5a8a('0x3b')](_0x5a8a('0x3c'))){_0x3f30c1[_0x5a8a('0x22')]=qs[_0x5a8a('0x22')](_0x552c5d['query'][_0x5a8a('0x22')]);_0x3f30c1[_0x5a8a('0x20')]=qs[_0x5a8a('0x20')](_0x552c5d[_0x5a8a('0x36')][_0x5a8a('0x20')]);}_0x3f30c1[_0x5a8a('0x3d')]=qs[_0x5a8a('0x3e')](_0x552c5d['query'][_0x5a8a('0x3e')]);_0x3f30c1[_0x5a8a('0x3f')]=qs[_0x5a8a('0x37')](_[_0x5a8a('0x40')](_0x552c5d[_0x5a8a('0x36')],_0x37955b[_0x5a8a('0x37')]),_0x416e1b);if(_0x552c5d['query'][_0x5a8a('0x41')]){_0x3f30c1[_0x5a8a('0x3f')]=_[_0x5a8a('0x42')](_0x3f30c1[_0x5a8a('0x3f')],{'$or':_[_0x5a8a('0x35')](_0x416e1b,function(_0x4aafb9){if(_0x4aafb9[_0x5a8a('0x32')]!=='VIRTUAL'){var _0x30f240={};_0x30f240[_0x4aafb9['name']]={'$like':'%'+_0x552c5d[_0x5a8a('0x36')][_0x5a8a('0x41')]+'%'};return _0x30f240;}})});}_0x3f30c1=_[_0x5a8a('0x42')]({},_0x3f30c1,_0x552c5d['options']);var _0x2dd960={'where':_0x3f30c1[_0x5a8a('0x3f')]};return db[_0x5a8a('0x31')]['count'](_0x2dd960)[_0x5a8a('0x28')](function(_0x4025d3){_0x5e6eda[_0x5a8a('0x23')]=_0x4025d3;if(_0x552c5d[_0x5a8a('0x36')][_0x5a8a('0x43')]){_0x3f30c1['include']=[{'all':!![]}];}return db[_0x5a8a('0x31')][_0x5a8a('0x44')](_0x3f30c1);})['then'](function(_0x40b0b0){_0x5e6eda['rows']=_0x40b0b0;return _0x5e6eda;})[_0x5a8a('0x28')](respondWithFilteredResult(_0x23eb22,_0x3f30c1))[_0x5a8a('0x45')](handleError(_0x23eb22,null));};exports[_0x5a8a('0x46')]=function(_0x36e6a9,_0xa7ac2a){var _0x1f0184={'raw':!![],'where':{'id':_0x36e6a9[_0x5a8a('0x47')]['id']}},_0x530281={};_0x530281[_0x5a8a('0x34')]=_[_0x5a8a('0x48')](db[_0x5a8a('0x31')][_0x5a8a('0x49')]);_0x530281[_0x5a8a('0x36')]=_['keys'](_0x36e6a9['query']);_0x530281[_0x5a8a('0x37')]=_[_0x5a8a('0x38')](_0x530281[_0x5a8a('0x34')],_0x530281[_0x5a8a('0x36')]);_0x1f0184['attributes']=_[_0x5a8a('0x38')](_0x530281[_0x5a8a('0x34')],qs[_0x5a8a('0x3a')](_0x36e6a9[_0x5a8a('0x36')]['fields']));_0x1f0184['attributes']=_0x1f0184['attributes'][_0x5a8a('0x4a')]?_0x1f0184[_0x5a8a('0x39')]:_0x530281[_0x5a8a('0x34')];if(_0x36e6a9[_0x5a8a('0x36')][_0x5a8a('0x43')]){_0x1f0184['include']=[{'all':!![]}];}_0x1f0184=_[_0x5a8a('0x42')]({},_0x1f0184,_0x36e6a9['options']);return db[_0x5a8a('0x31')]['find'](_0x1f0184)[_0x5a8a('0x28')](handleEntityNotFound(_0xa7ac2a,null))[_0x5a8a('0x28')](respondWithResult(_0xa7ac2a,null))[_0x5a8a('0x45')](handleError(_0xa7ac2a,null));};exports[_0x5a8a('0x4b')]=function(_0x5a6d63,_0x2d73cb){return db[_0x5a8a('0x31')][_0x5a8a('0x4b')](_0x5a6d63[_0x5a8a('0x4c')],{})['then'](function(_0x3e1084){var _0x3118a6=_0x5a6d63[_0x5a8a('0x4d')][_0x5a8a('0x29')]({'plain':!![]});if(!_0x3118a6)throw new Error(_0x5a8a('0x4e'));if(_0x3118a6[_0x5a8a('0x4f')]==='user'){var _0x597577=_0x3e1084[_0x5a8a('0x29')]({'plain':!![]});var _0x56ba61=_0x5a8a('0x2a');return db['UserProfileSection'][_0x5a8a('0x50')]({'where':{'name':_0x56ba61,'userProfileId':_0x3118a6['userProfileId']},'raw':!![]})[_0x5a8a('0x28')](function(_0x58c244){if(_0x58c244&&_0x58c244[_0x5a8a('0x51')]===0x0){return db[_0x5a8a('0x2b')][_0x5a8a('0x4b')]({'name':_0x597577[_0x5a8a('0x30')],'resourceId':_0x597577['id'],'type':_0x58c244[_0x5a8a('0x30')],'sectionId':_0x58c244['id']},{})['then'](function(){return _0x3e1084;});}else{return _0x3e1084;}})[_0x5a8a('0x45')](function(_0x5af58a){logger[_0x5a8a('0x2e')](_0x5a8a('0x52'),_0x5af58a);throw _0x5af58a;});}return _0x3e1084;})[_0x5a8a('0x28')](respondWithResult(_0x2d73cb,0xc9))['catch'](handleError(_0x2d73cb,null));};exports[_0x5a8a('0x27')]=function(_0x56673e,_0x12aa2b){if(_0x56673e[_0x5a8a('0x4c')]['id']){delete _0x56673e['body']['id'];}return db[_0x5a8a('0x31')][_0x5a8a('0x50')]({'where':{'id':_0x56673e[_0x5a8a('0x47')]['id']}})[_0x5a8a('0x28')](handleEntityNotFound(_0x12aa2b,null))[_0x5a8a('0x28')](saveUpdates(_0x56673e[_0x5a8a('0x4c')],null))[_0x5a8a('0x28')](respondWithResult(_0x12aa2b,null))['catch'](handleError(_0x12aa2b,null));};exports['destroy']=function(_0x1f6989,_0x28cb86){return db[_0x5a8a('0x31')]['find']({'where':{'id':_0x1f6989[_0x5a8a('0x47')]['id']}})[_0x5a8a('0x28')](handleEntityNotFound(_0x28cb86,null))[_0x5a8a('0x28')](removeEntity(_0x28cb86,null))['catch'](handleError(_0x28cb86,null));};exports[_0x5a8a('0x53')]=function(_0x53fd8f,_0x552241){return db['FaxQueue'][_0x5a8a('0x53')]()[_0x5a8a('0x28')](respondWithResult(_0x552241,null))['catch'](handleError(_0x552241,null));};exports['getMembers']=function(_0x33d883,_0x4a52c2,_0x496d21){var _0x5b66fb={'raw':!![],'where':{}},_0x3bd232={},_0x13bf2e;return db['FaxQueue'][_0x5a8a('0x54')]({'where':{'id':_0x33d883[_0x5a8a('0x47')]['id']}})[_0x5a8a('0x28')](handleEntityNotFound(_0x4a52c2,null))[_0x5a8a('0x28')](function(_0x34996d){if(_0x34996d){_0x13bf2e=_0x34996d[_0x5a8a('0x29')]({'plain':!![]});_0x3bd232['model']=_[_0x5a8a('0x48')](db[_0x5a8a('0x55')][_0x5a8a('0x49')]);_0x3bd232['query']=_[_0x5a8a('0x48')](_0x33d883[_0x5a8a('0x36')]);_0x3bd232[_0x5a8a('0x37')]=_[_0x5a8a('0x38')](_0x3bd232[_0x5a8a('0x34')],_0x3bd232['query']);_0x5b66fb['attributes']=_[_0x5a8a('0x38')](_0x3bd232[_0x5a8a('0x34')],qs[_0x5a8a('0x3a')](_0x33d883['query'][_0x5a8a('0x3a')]));_0x5b66fb[_0x5a8a('0x39')]=_0x5b66fb['attributes'][_0x5a8a('0x4a')]?_0x5b66fb[_0x5a8a('0x39')]:_0x3bd232[_0x5a8a('0x34')];if(!_0x33d883[_0x5a8a('0x36')][_0x5a8a('0x3b')]('nolimit')){_0x5b66fb[_0x5a8a('0x22')]=qs[_0x5a8a('0x22')](_0x33d883['query']['limit']);_0x5b66fb[_0x5a8a('0x20')]=qs[_0x5a8a('0x20')](_0x33d883[_0x5a8a('0x36')]['offset']);}_0x5b66fb['order']=qs[_0x5a8a('0x3e')](_0x33d883[_0x5a8a('0x36')][_0x5a8a('0x3e')]);_0x5b66fb['where']=qs[_0x5a8a('0x37')](_['pick'](_0x33d883[_0x5a8a('0x36')],_0x3bd232['filters']));_0x5b66fb[_0x5a8a('0x3f')][_0x5a8a('0x56')]=_0x34996d['id'];if(_0x33d883[_0x5a8a('0x36')][_0x5a8a('0x41')]){_0x5b66fb['where']=_[_0x5a8a('0x42')](_0x5b66fb[_0x5a8a('0x3f')],{'$or':_[_0x5a8a('0x35')](_0x5b66fb['attributes'],function(_0x4d85c4){var _0x45dd74={};_0x45dd74[_0x4d85c4]={'$like':'%'+_0x33d883[_0x5a8a('0x36')]['filter']+'%'};return _0x45dd74;})});}_0x5b66fb=_[_0x5a8a('0x42')]({},_0x5b66fb,_0x33d883['options']);return db[_0x5a8a('0x55')]['findAll'](_0x5b66fb);}})['then'](function(_0x27aae1){if(_0x27aae1){return db[_0x5a8a('0x57')]['findAndCountAll']({'where':{'id':_['map'](_0x27aae1,'UserId'),'role':_0x5a8a('0x58')},'attributes':['id','name',_0x5a8a('0x59'),_0x5a8a('0x5a'),'createdAt']});}})[_0x5a8a('0x28')](function(_0x49ff40){if(_0x49ff40){return{'count':_0x49ff40[_0x5a8a('0x23')],'rows':_[_0x5a8a('0x35')](_0x49ff40[_0x5a8a('0x5b')],function(_0x1f2deb){return{'membername':_0x1f2deb['name'],'UserId':_0x1f2deb['id'],'queue_name':_0x13bf2e[_0x5a8a('0x30')],'FaxQueueId':_0x13bf2e['id'],'interface':util[_0x5a8a('0x5c')](_0x5a8a('0x5d'),'SIP',_0x1f2deb[_0x5a8a('0x30')]),'penalty':0x0,'paused':_0x1f2deb[_0x5a8a('0x59')],'createdAt':_0x1f2deb[_0x5a8a('0x5e')],'updatedAt':_0x1f2deb[_0x5a8a('0x5a')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4a52c2,_0x5b66fb))[_0x5a8a('0x45')](handleError(_0x4a52c2,null));};exports[_0x5a8a('0x5f')]=function(_0x358b66,_0x326645,_0x576847){var _0x4e52f8={};var _0x5792fa={};var _0x5f5c0f;var _0x214704;return db['FaxQueue']['findOne']({'where':{'id':_0x358b66[_0x5a8a('0x47')]['id']}})[_0x5a8a('0x28')](handleEntityNotFound(_0x326645,null))[_0x5a8a('0x28')](function(_0x1ee82d){if(_0x1ee82d){_0x5f5c0f=_0x1ee82d;_0x5792fa[_0x5a8a('0x34')]=_[_0x5a8a('0x48')](db['Team'][_0x5a8a('0x49')]);_0x5792fa['query']=_['keys'](_0x358b66[_0x5a8a('0x36')]);_0x5792fa[_0x5a8a('0x37')]=_[_0x5a8a('0x38')](_0x5792fa[_0x5a8a('0x34')],_0x5792fa[_0x5a8a('0x36')]);_0x4e52f8[_0x5a8a('0x39')]=_[_0x5a8a('0x38')](_0x5792fa['model'],qs[_0x5a8a('0x3a')](_0x358b66[_0x5a8a('0x36')]['fields']));_0x4e52f8[_0x5a8a('0x39')]=_0x4e52f8['attributes'][_0x5a8a('0x4a')]?_0x4e52f8['attributes']:_0x5792fa['model'];_0x4e52f8['order']=qs[_0x5a8a('0x3e')](_0x358b66[_0x5a8a('0x36')][_0x5a8a('0x3e')]);_0x4e52f8[_0x5a8a('0x3f')]=qs[_0x5a8a('0x37')](_[_0x5a8a('0x40')](_0x358b66['query'],_0x5792fa['filters']));if(_0x358b66[_0x5a8a('0x36')]['filter']){_0x4e52f8[_0x5a8a('0x3f')]=_[_0x5a8a('0x42')](_0x4e52f8[_0x5a8a('0x3f')],{'$or':_[_0x5a8a('0x35')](_0x4e52f8['attributes'],function(_0x109838){var _0x5e0a9e={};_0x5e0a9e[_0x109838]={'$like':'%'+_0x358b66[_0x5a8a('0x36')]['filter']+'%'};return _0x5e0a9e;})});}_0x4e52f8=_[_0x5a8a('0x42')]({},_0x4e52f8,_0x358b66[_0x5a8a('0x60')]);return _0x5f5c0f[_0x5a8a('0x5f')](_0x4e52f8);}})[_0x5a8a('0x28')](function(_0x5415d9){if(_0x5415d9){_0x214704=_0x5415d9[_0x5a8a('0x4a')];if(!_0x358b66[_0x5a8a('0x36')][_0x5a8a('0x3b')](_0x5a8a('0x3c'))){_0x4e52f8[_0x5a8a('0x22')]=qs[_0x5a8a('0x22')](_0x358b66[_0x5a8a('0x36')]['limit']);_0x4e52f8[_0x5a8a('0x20')]=qs[_0x5a8a('0x20')](_0x358b66[_0x5a8a('0x36')][_0x5a8a('0x20')]);}return _0x5f5c0f['getTeams'](_0x4e52f8);}})[_0x5a8a('0x28')](function(_0x1c5bd2){if(_0x1c5bd2){return _0x1c5bd2?{'count':_0x214704,'rows':_0x1c5bd2}:null;}})[_0x5a8a('0x28')](respondWithResult(_0x326645,null))[_0x5a8a('0x45')](handleError(_0x326645,null));};exports[_0x5a8a('0x61')]=function(_0x496aa7,_0x3b880a,_0x1e2ca9){var _0x827497=_0x496aa7['body'][_0x5a8a('0x62')];return db['Team'][_0x5a8a('0x44')]({'where':{'id':_0x827497},'attributes':['id'],'include':[{'model':db[_0x5a8a('0x57')],'as':'Agents','attributes':['id',_0x5a8a('0x30'),_0x5a8a('0x63'),_0x5a8a('0x64'),'interface'],'raw':!![]}]})[_0x5a8a('0x28')](function(_0x44bc83){if(_0x44bc83){var _0x8380ef=_[_0x5a8a('0x65')](_0x44bc83,function(_0x3ebcc4){var _0x5024ea=_0x3ebcc4[_0x5a8a('0x29')]({'plain':!![]});return _0x5024ea[_0x5a8a('0x66')];});return db[_0x5a8a('0x31')][_0x5a8a('0x50')]({'where':{'id':_0x496aa7[_0x5a8a('0x47')]['id']}})[_0x5a8a('0x28')](function(_0x1bbdb2){return db['sequelize'][_0x5a8a('0x67')](function(_0x4a9dbc){return _0x1bbdb2['addTeams'](_0x827497,{'transaction':_0x4a9dbc})['then'](function(){return BPromise[_0x5a8a('0x68')](_0x8380ef,function(_0x599077){return db[_0x5a8a('0x55')][_0x5a8a('0x69')]({'where':{'UserId':_0x599077['id'],'FaxQueueId':_0x496aa7[_0x5a8a('0x47')]['id']},'transaction':_0x4a9dbc});});})[_0x5a8a('0x28')](function(){_0x8380ef[_0x5a8a('0x6a')](function(_0x3a04bd){socket['emit']('userFaxQueue:save',{'UserId':_0x3a04bd['id'],'FaxQueueId':_0x1bbdb2['id']});});});});});}})[_0x5a8a('0x28')](respondWithStatusCode(_0x3b880a,null))[_0x5a8a('0x45')](handleError(_0x3b880a,null));};exports[_0x5a8a('0x6b')]=function(_0x5e35d3,_0x16f4ce,_0x351c48){return db['Team'][_0x5a8a('0x44')]({'where':{'id':_0x5e35d3[_0x5a8a('0x36')][_0x5a8a('0x62')]},'attributes':['id'],'include':[{'model':db[_0x5a8a('0x57')],'as':_0x5a8a('0x66'),'attributes':['id'],'raw':!![]}]})[_0x5a8a('0x28')](handleEntityNotFound(_0x16f4ce,null))[_0x5a8a('0x28')](function(_0x5084a7){var _0x4cebb8=_[_0x5a8a('0x35')](_0x5084a7,'id');var _0x7e8aa4=[];var _0xa14ee=[];var _0x1fd305=squel[_0x5a8a('0x6c')]();_0x1fd305[_0x5a8a('0x6d')](_0x5a8a('0x6e'))[_0x5a8a('0x6f')](_0x5a8a('0x70'),'tq')['join'](_0x5a8a('0x71'),'ut',_0x5a8a('0x72'))[_0x5a8a('0x3f')](_0x5a8a('0x73'),_0x5e35d3[_0x5a8a('0x47')]['id']);for(var _0x206e71=0x0;_0x206e71<_0x5084a7[_0x5a8a('0x4a')];_0x206e71+=0x1){let _0x2abf79=_0x5084a7[_0x206e71];for(var _0x2b1a53=0x0;_0x2b1a53<_0x2abf79[_0x5a8a('0x66')]['length'];_0x2b1a53+=0x1){let _0x67f5d8=_0x2abf79[_0x5a8a('0x66')][_0x2b1a53];var _0x291d04=_0x1fd305[_0x5a8a('0x74')]();_0x291d04['where'](_0x5a8a('0x75'),_0x67f5d8['id']);_0xa14ee[_0x5a8a('0x76')](db['sequelize'][_0x5a8a('0x36')](_0x291d04['toString'](),{'type':db[_0x5a8a('0x77')][_0x5a8a('0x78')][_0x5a8a('0x79')]})[_0x5a8a('0x28')](function(_0xe8e266){if(_0xe8e266[_0x5a8a('0x4a')]===0x1){return _0x67f5d8['id'];}else{var _0x1c815e=_[_0x5a8a('0x7a')](_[_0x5a8a('0x35')](_0xe8e266,_0x5a8a('0x7b')),function(_0x134c7a){return _[_0x5a8a('0x7c')](_0x4cebb8,_0x134c7a);});if(_0x1c815e){return _0x67f5d8['id'];}}}));}}return BPromise[_0x5a8a('0x7d')](_0xa14ee)[_0x5a8a('0x28')](function(_0x2b0c53){_0x7e8aa4=_(_0x7e8aa4)[_0x5a8a('0x7e')](_0x2b0c53)[_0x5a8a('0x7f')]()[_0x5a8a('0x80')]();return db[_0x5a8a('0x31')][_0x5a8a('0x50')]({'where':{'id':_0x5e35d3['params']['id']}})[_0x5a8a('0x28')](function(_0x2c830a){return db['sequelize']['transaction'](function(_0x2795ea){return _0x2c830a[_0x5a8a('0x6b')](_0x5e35d3[_0x5a8a('0x36')][_0x5a8a('0x62')],{'transaction':_0x2795ea})['then'](function(){if(!_[_0x5a8a('0x81')](_0x7e8aa4)){return _0x2c830a[_0x5a8a('0x82')](_0x7e8aa4,{'transaction':_0x2795ea});}})[_0x5a8a('0x28')](function(){_0x7e8aa4[_0x5a8a('0x6a')](function(_0x402193){socket['emit'](_0x5a8a('0x83'),{'UserId':_0x402193,'FaxQueueId':_0x2c830a['id']});});});});});});})[_0x5a8a('0x28')](respondWithStatusCode(_0x16f4ce,null))['catch'](handleError(_0x16f4ce,null));};exports[_0x5a8a('0x84')]=function(_0x41c5eb,_0x50d888,_0x2d8566){return db[_0x5a8a('0x31')][_0x5a8a('0x50')]({'where':{'id':_0x41c5eb['params']['id']}})[_0x5a8a('0x28')](handleEntityNotFound(_0x50d888,null))[_0x5a8a('0x28')](function(_0x2d31f7){if(_0x2d31f7){return _0x2d31f7[_0x5a8a('0x84')](_0x41c5eb[_0x5a8a('0x4c')]['ids'],_[_0x5a8a('0x85')](_0x41c5eb[_0x5a8a('0x4c')],[_0x5a8a('0x62'),'id'])||{})['spread'](function(_0x34e911){for(var _0x295737=0x0;_0x295737<_0x41c5eb['body'][_0x5a8a('0x62')][_0x5a8a('0x4a')];_0x295737+=0x1){socket[_0x5a8a('0x86')](_0x5a8a('0x87'),{'UserId':Number(_0x41c5eb[_0x5a8a('0x4c')][_0x5a8a('0x62')][_0x295737]),'FaxQueueId':Number(_0x41c5eb[_0x5a8a('0x47')]['id'])});}return _0x34e911;});}})[_0x5a8a('0x28')](respondWithResult(_0x50d888,null))[_0x5a8a('0x45')](handleError(_0x50d888,null));};exports[_0x5a8a('0x82')]=function(_0x264ab9,_0x5ec74e,_0x15e0eb){return db[_0x5a8a('0x31')][_0x5a8a('0x50')]({'where':{'id':_0x264ab9[_0x5a8a('0x47')]['id']}})[_0x5a8a('0x28')](handleEntityNotFound(_0x5ec74e,null))[_0x5a8a('0x28')](function(_0x11793c){if(_0x11793c){return _0x11793c[_0x5a8a('0x82')](_0x264ab9['query']['ids'])['then'](function(){if(_[_0x5a8a('0x88')](_0x264ab9[_0x5a8a('0x36')]['ids'])){for(var _0x3f01ac=0x0;_0x3f01ac<_0x264ab9[_0x5a8a('0x36')][_0x5a8a('0x62')][_0x5a8a('0x4a')];_0x3f01ac+=0x1){socket[_0x5a8a('0x86')]('userFaxQueue:remove',{'UserId':Number(_0x264ab9[_0x5a8a('0x36')][_0x5a8a('0x62')][_0x3f01ac]),'FaxQueueId':Number(_0x264ab9[_0x5a8a('0x47')]['id'])});}}else{socket[_0x5a8a('0x86')](_0x5a8a('0x83'),{'UserId':Number(_0x264ab9[_0x5a8a('0x36')]['ids']),'FaxQueueId':Number(_0x264ab9['params']['id'])});}});}})[_0x5a8a('0x28')](respondWithStatusCode(_0x5ec74e,null))[_0x5a8a('0x45')](handleError(_0x5ec74e,null));};exports[_0x5a8a('0x89')]=function(_0x203af1,_0x13f86b,_0x1d579a){var _0x4cbae7={};var _0x3e5076={};var _0x668a3c;var _0x33fd07;return db['FaxQueue'][_0x5a8a('0x54')]({'where':{'id':_0x203af1[_0x5a8a('0x47')]['id']}})['then'](handleEntityNotFound(_0x13f86b,null))[_0x5a8a('0x28')](function(_0x404e88){if(_0x404e88){_0x668a3c=_0x404e88;_0x3e5076[_0x5a8a('0x34')]=_['keys'](db['User'][_0x5a8a('0x49')]);_0x3e5076[_0x5a8a('0x36')]=_[_0x5a8a('0x48')](_0x203af1[_0x5a8a('0x36')]);_0x3e5076[_0x5a8a('0x37')]=_[_0x5a8a('0x38')](_0x3e5076['model'],_0x3e5076['query']);_0x4cbae7[_0x5a8a('0x39')]=_[_0x5a8a('0x38')](_0x3e5076['model'],qs[_0x5a8a('0x3a')](_0x203af1[_0x5a8a('0x36')][_0x5a8a('0x3a')]));_0x4cbae7[_0x5a8a('0x39')]=_0x4cbae7[_0x5a8a('0x39')][_0x5a8a('0x4a')]?_0x4cbae7['attributes']:_0x3e5076[_0x5a8a('0x34')];_0x4cbae7[_0x5a8a('0x3d')]=qs['sort'](_0x203af1[_0x5a8a('0x36')][_0x5a8a('0x3e')]);_0x4cbae7[_0x5a8a('0x3f')]=qs[_0x5a8a('0x37')](_[_0x5a8a('0x40')](_0x203af1[_0x5a8a('0x36')],_0x3e5076[_0x5a8a('0x37')]));if(_0x203af1['query'][_0x5a8a('0x41')]){_0x4cbae7[_0x5a8a('0x3f')]=_[_0x5a8a('0x42')](_0x4cbae7[_0x5a8a('0x3f')],{'$or':_[_0x5a8a('0x35')](_0x4cbae7['attributes'],function(_0x3ab9e1){var _0x3519c0={};_0x3519c0[_0x3ab9e1]={'$like':'%'+_0x203af1[_0x5a8a('0x36')]['filter']+'%'};return _0x3519c0;})});}_0x4cbae7=_[_0x5a8a('0x42')]({},_0x4cbae7,_0x203af1[_0x5a8a('0x60')]);return _0x668a3c['getAgents'](_0x4cbae7);}})[_0x5a8a('0x28')](function(_0x10171f){if(_0x10171f){_0x33fd07=_0x10171f['length'];if(!_0x203af1[_0x5a8a('0x36')]['hasOwnProperty'](_0x5a8a('0x3c'))){_0x4cbae7['limit']=qs[_0x5a8a('0x22')](_0x203af1[_0x5a8a('0x36')]['limit']);_0x4cbae7[_0x5a8a('0x20')]=qs[_0x5a8a('0x20')](_0x203af1['query'][_0x5a8a('0x20')]);}return _0x668a3c[_0x5a8a('0x89')](_0x4cbae7);}})['then'](function(_0x363294){if(_0x363294){return _0x363294?{'count':_0x33fd07,'rows':_0x363294}:null;}})[_0x5a8a('0x28')](respondWithResult(_0x13f86b,null))[_0x5a8a('0x45')](handleError(_0x13f86b,null));};
\ No newline at end of file
index 2c80e11..f47f17a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd936=['events','FaxQueue','save','update','emit','hasOwnProperty','hook','exports'];(function(_0x461a70,_0x9dc1d1){var _0x17e007=function(_0x10c637){while(--_0x10c637){_0x461a70['push'](_0x461a70['shift']());}};_0x17e007(++_0x9dc1d1);}(_0xd936,0x188));var _0x6d93=function(_0xa459ff,_0x495be7){_0xa459ff=_0xa459ff-0x0;var _0x12d4e1=_0xd936[_0xa459ff];return _0x12d4e1;};'use strict';var EventEmitter=require(_0x6d93('0x0'));var FaxQueue=require('../../mysqldb')['db'][_0x6d93('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6d93('0x2'),'afterUpdate':_0x6d93('0x3'),'afterDestroy':'remove'};function emitEvent(_0x40b050){return function(_0x60ad42,_0xa8099f,_0x43318f){FaxQueueEvents[_0x6d93('0x4')](_0x40b050+':'+_0x60ad42['id'],_0x60ad42);FaxQueueEvents[_0x6d93('0x4')](_0x40b050,_0x60ad42);_0x43318f(null);};}for(var e in events){if(events[_0x6d93('0x5')](e)){var event=events[e];FaxQueue[_0x6d93('0x6')](e,emitEvent(event));}}module[_0x6d93('0x7')]=FaxQueueEvents;
\ No newline at end of file
+var _0x212d=['exports','events','../../mysqldb','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x4a8aa1,_0x52cefc){var _0x45b24e=function(_0x4615c5){while(--_0x4615c5){_0x4a8aa1['push'](_0x4a8aa1['shift']());}};_0x45b24e(++_0x52cefc);}(_0x212d,0x81));var _0xd212=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x212d[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xd212('0x0'));var FaxQueue=require(_0xd212('0x1'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xd212('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd212('0x3'),'afterDestroy':_0xd212('0x4')};function emitEvent(_0x3d598d){return function(_0x17f16a,_0x1d44c7,_0x725f3a){FaxQueueEvents[_0xd212('0x5')](_0x3d598d+':'+_0x17f16a['id'],_0x17f16a);FaxQueueEvents[_0xd212('0x5')](_0x3d598d,_0x17f16a);_0x725f3a(null);};}for(var e in events){if(events[_0xd212('0x6')](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0xd212('0x7')]=FaxQueueEvents;
\ No newline at end of file
index 660e757..4298ba9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5d8=['lodash','util','api','bluebird','path','rimraf','../../config/environment','./faxQueue.attributes','exports','FaxQueue','fax_queues'];(function(_0x449158,_0x44e1b0){var _0x1f3c3a=function(_0x5f1053){while(--_0x5f1053){_0x449158['push'](_0x449158['shift']());}};_0x1f3c3a(++_0x44e1b0);}(_0xf5d8,0x1ce));var _0x8f5d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf5d8[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x8f5d('0x0'));var util=require(_0x8f5d('0x1'));var logger=require('../../config/logger')(_0x8f5d('0x2'));var moment=require('moment');var BPromise=require(_0x8f5d('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8f5d('0x4'));var rimraf=require(_0x8f5d('0x5'));var config=require(_0x8f5d('0x6'));var attributes=require(_0x8f5d('0x7'));module[_0x8f5d('0x8')]=function(_0x2c28c0,_0x35fcf7){return _0x2c28c0['define'](_0x8f5d('0x9'),attributes,{'tableName':_0x8f5d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x25ed=['moment','bluebird','request-promise','rimraf','../../config/environment','exports','FaxQueue','fax_queues','lodash','util','../../config/logger'];(function(_0x433044,_0x2a05bf){var _0xf27ad6=function(_0x939a3d){while(--_0x939a3d){_0x433044['push'](_0x433044['shift']());}};_0xf27ad6(++_0x2a05bf);}(_0x25ed,0x147));var _0xd25e=function(_0x49d7c8,_0x52d9a3){_0x49d7c8=_0x49d7c8-0x0;var _0x450089=_0x25ed[_0x49d7c8];return _0x450089;};'use strict';var _=require(_0xd25e('0x0'));var util=require(_0xd25e('0x1'));var logger=require(_0xd25e('0x2'))('api');var moment=require(_0xd25e('0x3'));var BPromise=require(_0xd25e('0x4'));var rp=require(_0xd25e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd25e('0x6'));var config=require(_0xd25e('0x7'));var attributes=require('./faxQueue.attributes');module[_0xd25e('0x8')]=function(_0x3b86eb,_0x35605e){return _0x3b86eb['define'](_0xd25e('0x9'),attributes,{'tableName':_0xd25e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1504e14..9e812c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x438c=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./faxQueue.socket','register','request','then','request\x20sent','debug','stringify','error','code','FaxQueue,\x20%s,\x20%s','message','info','catch','FaxQueue','findAll','options','raw','where','limit','include','map','model','attributes','GetFaxQueue','ShowFaxQueue','util','moment','bluebird'];(function(_0x2d0512,_0x181bbd){var _0x4db5ed=function(_0x2caf46){while(--_0x2caf46){_0x2d0512['push'](_0x2d0512['shift']());}};_0x4db5ed(++_0x181bbd);}(_0x438c,0x1c0));var _0xc438=function(_0x372f26,_0x2bfab4){_0x372f26=_0x372f26-0x0;var _0x233c46=_0x438c[_0x372f26];return _0x233c46;};'use strict';var _=require('lodash');var util=require(_0xc438('0x0'));var moment=require(_0xc438('0x1'));var BPromise=require(_0xc438('0x2'));var rs=require(_0xc438('0x3'));var fs=require('fs');var Redis=require(_0xc438('0x4'));var db=require(_0xc438('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc438('0x6'))(_0xc438('0x7'));var config=require(_0xc438('0x8'));var jayson=require(_0xc438('0x9'));var client=jayson[_0xc438('0xa')][_0xc438('0xb')]({'port':0x232a});config['redis']=_[_0xc438('0xc')](config[_0xc438('0xd')],{'host':_0xc438('0xe'),'port':0x18eb});var socket=require(_0xc438('0xf'))(new Redis(config[_0xc438('0xd')]));require(_0xc438('0x10'))[_0xc438('0x11')](socket);function respondWithRpcPromise(_0x4c4c26,_0x2a8085,_0x3d6e6a){return new BPromise(function(_0x5b4a29,_0x11d17b){return client[_0xc438('0x12')](_0x4c4c26,_0x3d6e6a)[_0xc438('0x13')](function(_0x4ad48e){logger['info']('FaxQueue,\x20%s,\x20%s',_0x2a8085,_0xc438('0x14'));logger[_0xc438('0x15')]('FaxQueue,\x20%s,\x20%s,\x20%s',_0x2a8085,_0xc438('0x14'),JSON[_0xc438('0x16')](_0x4ad48e));if(_0x4ad48e['error']){if(_0x4ad48e[_0xc438('0x17')][_0xc438('0x18')]===0x1f4){logger[_0xc438('0x17')](_0xc438('0x19'),_0x2a8085,_0x4ad48e[_0xc438('0x17')]['message']);return _0x11d17b(_0x4ad48e[_0xc438('0x17')][_0xc438('0x1a')]);}logger['error'](_0xc438('0x19'),_0x2a8085,_0x4ad48e[_0xc438('0x17')][_0xc438('0x1a')]);return _0x5b4a29(_0x4ad48e[_0xc438('0x17')]['message']);}else{logger[_0xc438('0x1b')](_0xc438('0x19'),_0x2a8085,_0xc438('0x14'));_0x5b4a29(_0x4ad48e['result']['message']);}})[_0xc438('0x1c')](function(_0x54a988){logger[_0xc438('0x17')](_0xc438('0x19'),_0x2a8085,_0x54a988);_0x11d17b(_0x54a988);});});}exports['GetFaxQueue']=function(_0x238a72){var _0x5bdc8d=this;return new Promise(function(_0x504a8d,_0xc2e2f0){return db[_0xc438('0x1d')][_0xc438('0x1e')]({'raw':_0x238a72[_0xc438('0x1f')]?_0x238a72[_0xc438('0x1f')][_0xc438('0x20')]===undefined?!![]:![]:!![],'where':_0x238a72[_0xc438('0x1f')]?_0x238a72[_0xc438('0x1f')][_0xc438('0x21')]||null:null,'attributes':_0x238a72[_0xc438('0x1f')]?_0x238a72[_0xc438('0x1f')]['attributes']||null:null,'limit':_0x238a72[_0xc438('0x1f')]?_0x238a72[_0xc438('0x1f')][_0xc438('0x22')]||null:null,'include':_0x238a72['options']?_0x238a72['options'][_0xc438('0x23')]?_[_0xc438('0x24')](_0x238a72[_0xc438('0x1f')][_0xc438('0x23')],function(_0x2a4eac){return{'model':db[_0x2a4eac[_0xc438('0x25')]],'as':_0x2a4eac['as'],'attributes':_0x2a4eac[_0xc438('0x26')],'include':_0x2a4eac['include']?_[_0xc438('0x24')](_0x2a4eac[_0xc438('0x23')],function(_0x442d97){return{'model':db[_0x442d97[_0xc438('0x25')]],'as':_0x442d97['as'],'attributes':_0x442d97[_0xc438('0x26')],'include':_0x442d97['include']?_[_0xc438('0x24')](_0x442d97[_0xc438('0x23')],function(_0x14d9cd){return{'model':db[_0x14d9cd[_0xc438('0x25')]],'as':_0x14d9cd['as'],'attributes':_0x14d9cd[_0xc438('0x26')]};}):[]};}):[]};}):[]:[]})[_0xc438('0x13')](function(_0x4463ac){logger[_0xc438('0x1b')](_0xc438('0x27'),_0x238a72);logger[_0xc438('0x15')](_0xc438('0x27'),_0x238a72,JSON[_0xc438('0x16')](_0x4463ac));_0x504a8d(_0x4463ac);})['catch'](function(_0xb5a2f5){logger[_0xc438('0x17')](_0xc438('0x27'),_0xb5a2f5[_0xc438('0x1a')],_0x238a72);_0xc2e2f0(_0x5bdc8d[_0xc438('0x17')](0x1f4,_0xb5a2f5['message']));});});};exports['ShowFaxQueue']=function(_0x37ffef){var _0x385486=this;return new Promise(function(_0x3c0353,_0x43f21f){return db[_0xc438('0x1d')]['find']({'raw':_0x37ffef[_0xc438('0x1f')]?_0x37ffef[_0xc438('0x1f')][_0xc438('0x20')]===undefined?!![]:![]:!![],'where':_0x37ffef[_0xc438('0x1f')]?_0x37ffef[_0xc438('0x1f')]['where']||null:null,'attributes':_0x37ffef[_0xc438('0x1f')]?_0x37ffef[_0xc438('0x1f')][_0xc438('0x26')]||null:null,'include':_0x37ffef[_0xc438('0x1f')]?_0x37ffef['options']['include']?_[_0xc438('0x24')](_0x37ffef['options'][_0xc438('0x23')],function(_0x192ac8){return{'model':db[_0x192ac8['model']],'as':_0x192ac8['as'],'attributes':_0x192ac8['attributes'],'include':_0x192ac8[_0xc438('0x23')]?_[_0xc438('0x24')](_0x192ac8[_0xc438('0x23')],function(_0xf5c229){return{'model':db[_0xf5c229[_0xc438('0x25')]],'as':_0xf5c229['as'],'attributes':_0xf5c229['attributes'],'include':_0xf5c229[_0xc438('0x23')]?_[_0xc438('0x24')](_0xf5c229[_0xc438('0x23')],function(_0x973e6f){return{'model':db[_0x973e6f[_0xc438('0x25')]],'as':_0x973e6f['as'],'attributes':_0x973e6f['attributes']};}):[]};}):[]};}):[]:[]})[_0xc438('0x13')](function(_0x4eba19){logger[_0xc438('0x1b')](_0xc438('0x28'),_0x37ffef);logger['debug'](_0xc438('0x28'),_0x37ffef,JSON[_0xc438('0x16')](_0x4eba19));_0x3c0353(_0x4eba19);})[_0xc438('0x1c')](function(_0x49dfe9){logger[_0xc438('0x17')](_0xc438('0x28'),_0x49dfe9[_0xc438('0x1a')],_0x37ffef);_0x43f21f(_0x385486[_0xc438('0x17')](0x1f4,_0x49dfe9['message']));});});};
\ No newline at end of file
+var _0xdac9=['then','stringify','ShowFaxQueue','find','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','register','request','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','GetFaxQueue','FaxQueue','findAll','options','raw','where','attributes','limit','include','map','model'];(function(_0xa869c6,_0x365603){var _0x9fc931=function(_0x4622cd){while(--_0x4622cd){_0xa869c6['push'](_0xa869c6['shift']());}};_0x9fc931(++_0x365603);}(_0xdac9,0x123));var _0x9dac=function(_0x5192de,_0x4e91cd){_0x5192de=_0x5192de-0x0;var _0x4e287e=_0xdac9[_0x5192de];return _0x4e287e;};'use strict';var _=require(_0x9dac('0x0'));var util=require('util');var moment=require(_0x9dac('0x1'));var BPromise=require('bluebird');var rs=require(_0x9dac('0x2'));var fs=require('fs');var Redis=require(_0x9dac('0x3'));var db=require(_0x9dac('0x4'))['db'];var utils=require(_0x9dac('0x5'));var logger=require(_0x9dac('0x6'))(_0x9dac('0x7'));var config=require(_0x9dac('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9dac('0x9')][_0x9dac('0xa')]({'port':0x232a});config[_0x9dac('0xb')]=_['defaults'](config[_0x9dac('0xb')],{'host':_0x9dac('0xc'),'port':0x18eb});var socket=require(_0x9dac('0xd'))(new Redis(config[_0x9dac('0xb')]));require('./faxQueue.socket')[_0x9dac('0xe')](socket);function respondWithRpcPromise(_0x41ad90,_0x1bcf24,_0xfbb56a){return new BPromise(function(_0x2c79aa,_0x3d72bb){return client[_0x9dac('0xf')](_0x41ad90,_0xfbb56a)['then'](function(_0x86c2ac){logger['info'](_0x9dac('0x10'),_0x1bcf24,_0x9dac('0x11'));logger[_0x9dac('0x12')](_0x9dac('0x13'),_0x1bcf24,_0x9dac('0x11'),JSON['stringify'](_0x86c2ac));if(_0x86c2ac[_0x9dac('0x14')]){if(_0x86c2ac[_0x9dac('0x14')][_0x9dac('0x15')]===0x1f4){logger[_0x9dac('0x14')](_0x9dac('0x10'),_0x1bcf24,_0x86c2ac[_0x9dac('0x14')][_0x9dac('0x16')]);return _0x3d72bb(_0x86c2ac[_0x9dac('0x14')]['message']);}logger[_0x9dac('0x14')](_0x9dac('0x10'),_0x1bcf24,_0x86c2ac[_0x9dac('0x14')][_0x9dac('0x16')]);return _0x2c79aa(_0x86c2ac[_0x9dac('0x14')][_0x9dac('0x16')]);}else{logger[_0x9dac('0x17')]('FaxQueue,\x20%s,\x20%s',_0x1bcf24,_0x9dac('0x11'));_0x2c79aa(_0x86c2ac[_0x9dac('0x18')][_0x9dac('0x16')]);}})[_0x9dac('0x19')](function(_0x1176a6){logger[_0x9dac('0x14')](_0x9dac('0x10'),_0x1bcf24,_0x1176a6);_0x3d72bb(_0x1176a6);});});}exports[_0x9dac('0x1a')]=function(_0x3dd173){var _0x53cc1f=this;return new Promise(function(_0x2debca,_0xf2fc45){return db[_0x9dac('0x1b')][_0x9dac('0x1c')]({'raw':_0x3dd173[_0x9dac('0x1d')]?_0x3dd173[_0x9dac('0x1d')][_0x9dac('0x1e')]===undefined?!![]:![]:!![],'where':_0x3dd173['options']?_0x3dd173['options'][_0x9dac('0x1f')]||null:null,'attributes':_0x3dd173[_0x9dac('0x1d')]?_0x3dd173['options'][_0x9dac('0x20')]||null:null,'limit':_0x3dd173['options']?_0x3dd173['options'][_0x9dac('0x21')]||null:null,'include':_0x3dd173['options']?_0x3dd173[_0x9dac('0x1d')][_0x9dac('0x22')]?_[_0x9dac('0x23')](_0x3dd173[_0x9dac('0x1d')]['include'],function(_0xacf05b){return{'model':db[_0xacf05b[_0x9dac('0x24')]],'as':_0xacf05b['as'],'attributes':_0xacf05b[_0x9dac('0x20')],'include':_0xacf05b['include']?_[_0x9dac('0x23')](_0xacf05b[_0x9dac('0x22')],function(_0x192c17){return{'model':db[_0x192c17[_0x9dac('0x24')]],'as':_0x192c17['as'],'attributes':_0x192c17[_0x9dac('0x20')],'include':_0x192c17['include']?_['map'](_0x192c17[_0x9dac('0x22')],function(_0x17930c){return{'model':db[_0x17930c['model']],'as':_0x17930c['as'],'attributes':_0x17930c[_0x9dac('0x20')]};}):[]};}):[]};}):[]:[]})[_0x9dac('0x25')](function(_0x4840b8){logger['info'](_0x9dac('0x1a'),_0x3dd173);logger[_0x9dac('0x12')]('GetFaxQueue',_0x3dd173,JSON[_0x9dac('0x26')](_0x4840b8));_0x2debca(_0x4840b8);})[_0x9dac('0x19')](function(_0x3105d7){logger['error'](_0x9dac('0x1a'),_0x3105d7[_0x9dac('0x16')],_0x3dd173);_0xf2fc45(_0x53cc1f[_0x9dac('0x14')](0x1f4,_0x3105d7[_0x9dac('0x16')]));});});};exports[_0x9dac('0x27')]=function(_0x3418e1){var _0x30c1ad=this;return new Promise(function(_0x402988,_0x33e011){return db[_0x9dac('0x1b')][_0x9dac('0x28')]({'raw':_0x3418e1[_0x9dac('0x1d')]?_0x3418e1[_0x9dac('0x1d')][_0x9dac('0x1e')]===undefined?!![]:![]:!![],'where':_0x3418e1[_0x9dac('0x1d')]?_0x3418e1['options'][_0x9dac('0x1f')]||null:null,'attributes':_0x3418e1['options']?_0x3418e1[_0x9dac('0x1d')]['attributes']||null:null,'include':_0x3418e1[_0x9dac('0x1d')]?_0x3418e1[_0x9dac('0x1d')][_0x9dac('0x22')]?_[_0x9dac('0x23')](_0x3418e1[_0x9dac('0x1d')][_0x9dac('0x22')],function(_0x1a5aaf){return{'model':db[_0x1a5aaf[_0x9dac('0x24')]],'as':_0x1a5aaf['as'],'attributes':_0x1a5aaf[_0x9dac('0x20')],'include':_0x1a5aaf[_0x9dac('0x22')]?_[_0x9dac('0x23')](_0x1a5aaf[_0x9dac('0x22')],function(_0x259c94){return{'model':db[_0x259c94[_0x9dac('0x24')]],'as':_0x259c94['as'],'attributes':_0x259c94[_0x9dac('0x20')],'include':_0x259c94[_0x9dac('0x22')]?_[_0x9dac('0x23')](_0x259c94[_0x9dac('0x22')],function(_0x146d8f){return{'model':db[_0x146d8f[_0x9dac('0x24')]],'as':_0x146d8f['as'],'attributes':_0x146d8f['attributes']};}):[]};}):[]};}):[]:[]})[_0x9dac('0x25')](function(_0x4ab4ee){logger[_0x9dac('0x17')]('ShowFaxQueue',_0x3418e1);logger[_0x9dac('0x12')](_0x9dac('0x27'),_0x3418e1,JSON[_0x9dac('0x26')](_0x4ab4ee));_0x402988(_0x4ab4ee);})[_0x9dac('0x19')](function(_0x4f9d7c){logger[_0x9dac('0x14')](_0x9dac('0x27'),_0x4f9d7c[_0x9dac('0x16')],_0x3418e1);_0x33e011(_0x30c1ad['error'](0x1f4,_0x4f9d7c['message']));});});};
\ No newline at end of file
index 5b4575b..5f614e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d4e=['removeListener','faxQueue:','./faxQueue.events','save','remove','update'];(function(_0x32df3f,_0x32976f){var _0x4b9d2f=function(_0x2e38ff){while(--_0x2e38ff){_0x32df3f['push'](_0x32df3f['shift']());}};_0x4b9d2f(++_0x32976f);}(_0x5d4e,0xda));var _0xe5d4=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x5d4e[_0x20a584];return _0x4b41a8;};'use strict';var FaxQueueEvents=require(_0xe5d4('0x0'));var events=[_0xe5d4('0x1'),_0xe5d4('0x2'),_0xe5d4('0x3')];function createListener(_0x149383,_0x383ec6){return function(_0x246d66){_0x383ec6['emit'](_0x149383,_0x246d66);};}function removeListener(_0x599cc2,_0x3ac5bb){return function(){FaxQueueEvents[_0xe5d4('0x4')](_0x599cc2,_0x3ac5bb);};}exports['register']=function(_0x347eba){for(var _0x2c25f5=0x0,_0x5dc4ed=events['length'];_0x2c25f5<_0x5dc4ed;_0x2c25f5++){var _0x26c385=events[_0x2c25f5];var _0x14645e=createListener(_0xe5d4('0x5')+_0x26c385,_0x347eba);FaxQueueEvents['on'](_0x26c385,_0x14645e);}};
\ No newline at end of file
+var _0xba6c=['length','faxQueue:','./faxQueue.events','remove','update','emit','register'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xba6c,0x113));var _0xcba6=function(_0x1dac7a,_0x1828ce){_0x1dac7a=_0x1dac7a-0x0;var _0x4cb363=_0xba6c[_0x1dac7a];return _0x4cb363;};'use strict';var FaxQueueEvents=require(_0xcba6('0x0'));var events=['save',_0xcba6('0x1'),_0xcba6('0x2')];function createListener(_0x1994bd,_0x20b811){return function(_0x3030b5){_0x20b811[_0xcba6('0x3')](_0x1994bd,_0x3030b5);};}function removeListener(_0x2b34a3,_0x5c911d){return function(){FaxQueueEvents['removeListener'](_0x2b34a3,_0x5c911d);};}exports[_0xcba6('0x4')]=function(_0x1fd901){for(var _0x34d35d=0x0,_0x137300=events[_0xcba6('0x5')];_0x34d35d<_0x137300;_0x34d35d++){var _0x95c2f1=events[_0x34d35d];var _0x308366=createListener(_0xcba6('0x6')+_0x95c2f1,_0x1fd901);FaxQueueEvents['on'](_0x95c2f1,_0x308366);}};
\ No newline at end of file
index d640329..046811a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a6b=['update','destroy','delete','removeTeams','removeAgents','exports','multer','express','fs-extra','../../components/auth/service','../../components/interaction/service','./faxQueue.controller','isAuthenticated','index','/describe','describe','show','get','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','/:id'];(function(_0x1db251,_0xf0443d){var _0x56685a=function(_0x6ec6b7){while(--_0x6ec6b7){_0x1db251['push'](_0x1db251['shift']());}};_0x56685a(++_0xf0443d);}(_0x0a6b,0x18e));var _0xb0a6=function(_0x863e9e,_0x5854b0){_0x863e9e=_0x863e9e-0x0;var _0x24fa60=_0x0a6b[_0x863e9e];return _0x24fa60;};'use strict';var multer=require(_0xb0a6('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb0a6('0x1'));var router=express['Router']();var fs_extra=require(_0xb0a6('0x2'));var auth=require(_0xb0a6('0x3'));var interaction=require(_0xb0a6('0x4'));var config=require('../../config/environment');var controller=require(_0xb0a6('0x5'));router['get']('/',auth[_0xb0a6('0x6')](),controller[_0xb0a6('0x7')]);router['get'](_0xb0a6('0x8'),auth[_0xb0a6('0x6')](),controller[_0xb0a6('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xb0a6('0xa')]);router[_0xb0a6('0xb')](_0xb0a6('0xc'),auth[_0xb0a6('0x6')](),controller['getMembers']);router[_0xb0a6('0xb')](_0xb0a6('0xd'),auth['isAuthenticated'](),controller[_0xb0a6('0xe')]);router[_0xb0a6('0xb')](_0xb0a6('0xf'),auth[_0xb0a6('0x6')](),controller[_0xb0a6('0x10')]);router[_0xb0a6('0x11')]('/',auth[_0xb0a6('0x6')](),controller[_0xb0a6('0x12')]);router[_0xb0a6('0x11')](_0xb0a6('0xd'),auth['isAuthenticated'](),controller[_0xb0a6('0x13')]);router['post'](_0xb0a6('0xf'),auth['isAuthenticated'](),controller[_0xb0a6('0x14')]);router['put'](_0xb0a6('0x15'),auth[_0xb0a6('0x6')](),controller[_0xb0a6('0x16')]);router['delete']('/:id',auth[_0xb0a6('0x6')](),controller[_0xb0a6('0x17')]);router[_0xb0a6('0x18')](_0xb0a6('0xd'),auth[_0xb0a6('0x6')](),controller[_0xb0a6('0x19')]);router['delete'](_0xb0a6('0xf'),auth[_0xb0a6('0x6')](),controller[_0xb0a6('0x1a')]);module[_0xb0a6('0x1b')]=router;
\ No newline at end of file
+var _0x9f37=['exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./faxQueue.controller','get','/describe','isAuthenticated','describe','/:id','/:id/members','getMembers','getTeams','getAgents','post','/:id/teams','addTeams','/:id/users','put','update','delete','removeTeams','removeAgents'];(function(_0x160bff,_0x276ba6){var _0x42f39f=function(_0x3fc436){while(--_0x3fc436){_0x160bff['push'](_0x160bff['shift']());}};_0x42f39f(++_0x276ba6);}(_0x9f37,0xd1));var _0x79f3=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0x9f37[_0x24f31b];return _0x488401;};'use strict';var multer=require(_0x79f3('0x0'));var util=require(_0x79f3('0x1'));var path=require('path');var timeout=require(_0x79f3('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x79f3('0x3'));var auth=require(_0x79f3('0x4'));var interaction=require(_0x79f3('0x5'));var config=require('../../config/environment');var controller=require(_0x79f3('0x6'));router[_0x79f3('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x79f3('0x7')](_0x79f3('0x8'),auth[_0x79f3('0x9')](),controller[_0x79f3('0xa')]);router['get'](_0x79f3('0xb'),auth[_0x79f3('0x9')](),controller['show']);router[_0x79f3('0x7')](_0x79f3('0xc'),auth[_0x79f3('0x9')](),controller[_0x79f3('0xd')]);router[_0x79f3('0x7')]('/:id/teams',auth[_0x79f3('0x9')](),controller[_0x79f3('0xe')]);router['get']('/:id/users',auth[_0x79f3('0x9')](),controller[_0x79f3('0xf')]);router[_0x79f3('0x10')]('/',auth[_0x79f3('0x9')](),controller['create']);router[_0x79f3('0x10')](_0x79f3('0x11'),auth[_0x79f3('0x9')](),controller[_0x79f3('0x12')]);router[_0x79f3('0x10')](_0x79f3('0x13'),auth['isAuthenticated'](),controller['addAgents']);router[_0x79f3('0x14')](_0x79f3('0xb'),auth['isAuthenticated'](),controller[_0x79f3('0x15')]);router[_0x79f3('0x16')](_0x79f3('0xb'),auth[_0x79f3('0x9')](),controller['destroy']);router[_0x79f3('0x16')](_0x79f3('0x11'),auth[_0x79f3('0x9')](),controller[_0x79f3('0x17')]);router[_0x79f3('0x16')](_0x79f3('0x13'),auth[_0x79f3('0x9')](),controller[_0x79f3('0x18')]);module[_0x79f3('0x19')]=router;
\ No newline at end of file
index d475ba8..68aeaa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe49b=['STRING','DATE','moment','exports'];(function(_0x3541d2,_0x37f0d2){var _0x196c19=function(_0x2f4881){while(--_0x2f4881){_0x3541d2['push'](_0x3541d2['shift']());}};_0x196c19(++_0x37f0d2);}(_0xe49b,0x11e));var _0xbe49=function(_0x2dfaa1,_0x817a1f){_0x2dfaa1=_0x2dfaa1-0x0;var _0x48c517=_0xe49b[_0x2dfaa1];return _0x48c517;};'use strict';var moment=require(_0xbe49('0x0'));var Sequelize=require('sequelize');module[_0xbe49('0x1')]={'uniqueid':{'type':Sequelize[_0xbe49('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xbe49('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xbe49('0x3')]},'exitAt':{'type':Sequelize[_0xbe49('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xbdba=['exports','STRING','DATE','moment'];(function(_0x4d1ee9,_0x394a78){var _0x9a5456=function(_0x224f3b){while(--_0x224f3b){_0x4d1ee9['push'](_0x4d1ee9['shift']());}};_0x9a5456(++_0x394a78);}(_0xbdba,0x107));var _0xabdb=function(_0x17f657,_0x5927d6){_0x17f657=_0x17f657-0x0;var _0x5328de=_0xbdba[_0x17f657];return _0x5328de;};'use strict';var moment=require(_0xabdb('0x0'));var Sequelize=require('sequelize');module[_0xabdb('0x1')]={'uniqueid':{'type':Sequelize[_0xabdb('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xabdb('0x2')]},'joinAt':{'type':Sequelize[_0xabdb('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xabdb('0x3')]},'exitAt':{'type':Sequelize[_0xabdb('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e921499..6d51528 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49ac=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','count','set','Content-Range','reject','update','destroy','error','stack','name','FaxQueueReport','rawAttributes','fieldName','type','query','keys','model','attributes','intersection','nolimit','order','sort','where','filters','pick','filter','merge','map','VIRTUAL','includeAll','findAll','then','rows','catch','params','fields','length','include','options','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','to-csv','papaparse'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0x49ac,0x19e));var _0xc49a=function(_0x419550,_0x15cdf1){_0x419550=_0x419550-0x0;var _0x55f9ef=_0x49ac[_0x419550];return _0x55f9ef;};'use strict';var emlformat=require(_0xc49a('0x0'));var rimraf=require(_0xc49a('0x1'));var zipdir=require(_0xc49a('0x2'));var jsonpatch=require(_0xc49a('0x3'));var rp=require(_0xc49a('0x4'));var moment=require(_0xc49a('0x5'));var BPromise=require(_0xc49a('0x6'));var Mustache=require(_0xc49a('0x7'));var util=require(_0xc49a('0x8'));var path=require(_0xc49a('0x9'));var sox=require(_0xc49a('0xa'));var csv=require('to-csv');var ejs=require(_0xc49a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc49a('0xc'));var squel=require(_0xc49a('0xd'));var crypto=require(_0xc49a('0xe'));var jsforce=require(_0xc49a('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xc49a('0x10'));var querystring=require('querystring');var Papa=require(_0xc49a('0x11'));var Redis=require('ioredis');var authService=require(_0xc49a('0x12'));var qs=require(_0xc49a('0x13'));var as=require(_0xc49a('0x14'));var hardwareService=require(_0xc49a('0x15'));var logger=require(_0xc49a('0x16'))('api');var utils=require('../../config/utils');var config=require(_0xc49a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xc49a('0x18'))['db'];function respondWithStatusCode(_0x3fe60b,_0x5a656c){_0x5a656c=_0x5a656c||0xcc;return function(_0x18b30e){if(_0x18b30e){return _0x3fe60b[_0xc49a('0x19')](_0x5a656c);}return _0x3fe60b[_0xc49a('0x1a')](_0x5a656c)['end']();};}function respondWithResult(_0x5dff88,_0x5872fc){_0x5872fc=_0x5872fc||0xc8;return function(_0x2e3519){if(_0x2e3519){return _0x5dff88[_0xc49a('0x1a')](_0x5872fc)[_0xc49a('0x1b')](_0x2e3519);}};}function respondWithFilteredResult(_0x14dd30,_0x45d5d1){return function(_0x33e530){if(_0x33e530){var _0xbb89d0=typeof _0x45d5d1[_0xc49a('0x1c')]==='undefined'&&typeof _0x45d5d1[_0xc49a('0x1d')]==='undefined';var _0x4e4228=_0x33e530[_0xc49a('0x1e')];var _0x34a424=_0xbb89d0?0x0:_0x45d5d1[_0xc49a('0x1c')];var _0x189400=_0xbb89d0?_0x33e530[_0xc49a('0x1e')]:_0x45d5d1[_0xc49a('0x1c')]+_0x45d5d1[_0xc49a('0x1d')];var _0x329811;if(_0x189400>=_0x4e4228){_0x189400=_0x4e4228;_0x329811=0xc8;}else{_0x329811=0xce;}_0x14dd30['status'](_0x329811);return _0x14dd30[_0xc49a('0x1f')](_0xc49a('0x20'),_0x34a424+'-'+_0x189400+'/'+_0x4e4228)[_0xc49a('0x1b')](_0x33e530);}return null;};}function patchUpdates(_0x302d31){return function(_0xc1d93c){try{jsonpatch['apply'](_0xc1d93c,_0x302d31,!![]);}catch(_0xefd77c){return BPromise[_0xc49a('0x21')](_0xefd77c);}return _0xc1d93c['save']();};}function saveUpdates(_0x3ffbcd,_0x230b19){return function(_0x8e95d){if(_0x8e95d){return _0x8e95d[_0xc49a('0x22')](_0x3ffbcd)['then'](function(_0x2e1c1e){return _0x2e1c1e;});}return null;};}function removeEntity(_0xf0dd34,_0x1d08c6){return function(_0x2e7061){if(_0x2e7061){return _0x2e7061[_0xc49a('0x23')]()['then'](function(){_0xf0dd34[_0xc49a('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x502591,_0x4096c5){return function(_0x41e0dc){if(!_0x41e0dc){_0x502591[_0xc49a('0x19')](0x194);}return _0x41e0dc;};}function handleError(_0x2fcafb,_0x10ca48){_0x10ca48=_0x10ca48||0x1f4;return function(_0x4130b5){logger[_0xc49a('0x24')](_0x4130b5[_0xc49a('0x25')]);if(_0x4130b5['name']){delete _0x4130b5[_0xc49a('0x26')];}_0x2fcafb[_0xc49a('0x1a')](_0x10ca48)['send'](_0x4130b5);};}exports['index']=function(_0x50a40c,_0x3f68ba){var _0x189249={},_0x5e079c={},_0x18c483={'count':0x0,'rows':[]};var _0x32278b=_['map'](db[_0xc49a('0x27')][_0xc49a('0x28')],function(_0x5d17f7){return{'name':_0x5d17f7[_0xc49a('0x29')],'type':_0x5d17f7[_0xc49a('0x2a')]['key']};});_0x5e079c['model']=_['map'](_0x32278b,_0xc49a('0x26'));_0x5e079c[_0xc49a('0x2b')]=_[_0xc49a('0x2c')](_0x50a40c[_0xc49a('0x2b')]);_0x5e079c['filters']=_['intersection'](_0x5e079c[_0xc49a('0x2d')],_0x5e079c[_0xc49a('0x2b')]);_0x189249[_0xc49a('0x2e')]=_[_0xc49a('0x2f')](_0x5e079c[_0xc49a('0x2d')],qs['fields'](_0x50a40c[_0xc49a('0x2b')]['fields']));_0x189249[_0xc49a('0x2e')]=_0x189249['attributes']['length']?_0x189249[_0xc49a('0x2e')]:_0x5e079c[_0xc49a('0x2d')];if(!_0x50a40c[_0xc49a('0x2b')]['hasOwnProperty'](_0xc49a('0x30'))){_0x189249['limit']=qs['limit'](_0x50a40c[_0xc49a('0x2b')]['limit']);_0x189249[_0xc49a('0x1c')]=qs['offset'](_0x50a40c[_0xc49a('0x2b')]['offset']);}_0x189249[_0xc49a('0x31')]=qs[_0xc49a('0x32')](_0x50a40c[_0xc49a('0x2b')][_0xc49a('0x32')]);_0x189249[_0xc49a('0x33')]=qs[_0xc49a('0x34')](_[_0xc49a('0x35')](_0x50a40c[_0xc49a('0x2b')],_0x5e079c[_0xc49a('0x34')]),_0x32278b);if(_0x50a40c[_0xc49a('0x2b')][_0xc49a('0x36')]){_0x189249['where']=_[_0xc49a('0x37')](_0x189249[_0xc49a('0x33')],{'$or':_[_0xc49a('0x38')](_0x32278b,function(_0x36a8c0){if(_0x36a8c0['type']!==_0xc49a('0x39')){var _0x4d1524={};_0x4d1524[_0x36a8c0[_0xc49a('0x26')]]={'$like':'%'+_0x50a40c[_0xc49a('0x2b')][_0xc49a('0x36')]+'%'};return _0x4d1524;}})});}_0x189249=_['merge']({},_0x189249,_0x50a40c['options']);var _0x299765={'where':_0x189249[_0xc49a('0x33')]};return db[_0xc49a('0x27')][_0xc49a('0x1e')](_0x299765)['then'](function(_0x8e6fbb){_0x18c483['count']=_0x8e6fbb;if(_0x50a40c[_0xc49a('0x2b')][_0xc49a('0x3a')]){_0x189249['include']=[{'all':!![]}];}return db[_0xc49a('0x27')][_0xc49a('0x3b')](_0x189249);})[_0xc49a('0x3c')](function(_0x54a610){_0x18c483[_0xc49a('0x3d')]=_0x54a610;return _0x18c483;})[_0xc49a('0x3c')](respondWithFilteredResult(_0x3f68ba,_0x189249))[_0xc49a('0x3e')](handleError(_0x3f68ba,null));};exports['show']=function(_0x269f11,_0x46c471){var _0x511649={'raw':!![],'where':{'id':_0x269f11[_0xc49a('0x3f')]['id']}},_0x525fb0={};_0x525fb0[_0xc49a('0x2d')]=_[_0xc49a('0x2c')](db[_0xc49a('0x27')]['rawAttributes']);_0x525fb0[_0xc49a('0x2b')]=_[_0xc49a('0x2c')](_0x269f11[_0xc49a('0x2b')]);_0x525fb0[_0xc49a('0x34')]=_[_0xc49a('0x2f')](_0x525fb0[_0xc49a('0x2d')],_0x525fb0['query']);_0x511649[_0xc49a('0x2e')]=_[_0xc49a('0x2f')](_0x525fb0['model'],qs[_0xc49a('0x40')](_0x269f11[_0xc49a('0x2b')][_0xc49a('0x40')]));_0x511649['attributes']=_0x511649[_0xc49a('0x2e')][_0xc49a('0x41')]?_0x511649[_0xc49a('0x2e')]:_0x525fb0[_0xc49a('0x2d')];if(_0x269f11['query'][_0xc49a('0x3a')]){_0x511649[_0xc49a('0x42')]=[{'all':!![]}];}_0x511649=_['merge']({},_0x511649,_0x269f11[_0xc49a('0x43')]);return db[_0xc49a('0x27')]['find'](_0x511649)[_0xc49a('0x3c')](handleEntityNotFound(_0x46c471,null))[_0xc49a('0x3c')](respondWithResult(_0x46c471,null))[_0xc49a('0x3e')](handleError(_0x46c471,null));};exports['create']=function(_0x227376,_0x33aa6b){return db[_0xc49a('0x27')][_0xc49a('0x44')](_0x227376['body'],{})[_0xc49a('0x3c')](respondWithResult(_0x33aa6b,0xc9))[_0xc49a('0x3e')](handleError(_0x33aa6b,null));};exports[_0xc49a('0x22')]=function(_0x2311c7,_0x1a2c61){if(_0x2311c7[_0xc49a('0x45')]['id']){delete _0x2311c7[_0xc49a('0x45')]['id'];}return db[_0xc49a('0x27')][_0xc49a('0x46')]({'where':{'id':_0x2311c7['params']['id']}})[_0xc49a('0x3c')](handleEntityNotFound(_0x1a2c61,null))[_0xc49a('0x3c')](saveUpdates(_0x2311c7[_0xc49a('0x45')],null))[_0xc49a('0x3c')](respondWithResult(_0x1a2c61,null))[_0xc49a('0x3e')](handleError(_0x1a2c61,null));};exports[_0xc49a('0x23')]=function(_0x583125,_0x4be734){return db[_0xc49a('0x27')][_0xc49a('0x46')]({'where':{'id':_0x583125[_0xc49a('0x3f')]['id']}})[_0xc49a('0x3c')](handleEntityNotFound(_0x4be734,null))['then'](removeEntity(_0x4be734,null))[_0xc49a('0x3e')](handleError(_0x4be734,null));};exports[_0xc49a('0x47')]=function(_0x182647,_0x504986){return db[_0xc49a('0x27')][_0xc49a('0x47')]()[_0xc49a('0x3c')](respondWithResult(_0x504986,null))[_0xc49a('0x3e')](handleError(_0x504986,null));};
\ No newline at end of file
+var _0xe58a=['include','findAll','rows','catch','show','length','find','create','body','params','describe','eml-format','rimraf','zip-dir','request-promise','mustache','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','end','stack','name','map','FaxQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','sort','pick','filter','where','merge','VIRTUAL','options','includeAll'];(function(_0xec7ea,_0xc94414){var _0x4af2dd=function(_0x3eb040){while(--_0x3eb040){_0xec7ea['push'](_0xec7ea['shift']());}};_0x4af2dd(++_0xc94414);}(_0xe58a,0x9f));var _0xae58=function(_0x586421,_0x4718e5){_0x586421=_0x586421-0x0;var _0x3ab75b=_0xe58a[_0x586421];return _0x3ab75b;};'use strict';var emlformat=require(_0xae58('0x0'));var rimraf=require(_0xae58('0x1'));var zipdir=require(_0xae58('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xae58('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xae58('0x4'));var util=require('util');var path=require('path');var sox=require(_0xae58('0x5'));var csv=require('to-csv');var ejs=require(_0xae58('0x6'));var fs=require('fs');var fs_extra=require(_0xae58('0x7'));var _=require(_0xae58('0x8'));var squel=require(_0xae58('0x9'));var crypto=require(_0xae58('0xa'));var jsforce=require(_0xae58('0xb'));var deskjs=require(_0xae58('0xc'));var toCsv=require(_0xae58('0xd'));var querystring=require(_0xae58('0xe'));var Papa=require(_0xae58('0xf'));var Redis=require('ioredis');var authService=require(_0xae58('0x10'));var qs=require(_0xae58('0x11'));var as=require(_0xae58('0x12'));var hardwareService=require(_0xae58('0x13'));var logger=require(_0xae58('0x14'))('api');var utils=require(_0xae58('0x15'));var config=require(_0xae58('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xae58('0x17'))['db'];function respondWithStatusCode(_0x574c0d,_0x3a0ce7){_0x3a0ce7=_0x3a0ce7||0xcc;return function(_0x819a8b){if(_0x819a8b){return _0x574c0d[_0xae58('0x18')](_0x3a0ce7);}return _0x574c0d[_0xae58('0x19')](_0x3a0ce7)['end']();};}function respondWithResult(_0x36ee75,_0x52503a){_0x52503a=_0x52503a||0xc8;return function(_0x54f59c){if(_0x54f59c){return _0x36ee75[_0xae58('0x19')](_0x52503a)[_0xae58('0x1a')](_0x54f59c);}};}function respondWithFilteredResult(_0x144e48,_0x12642f){return function(_0x4c57b9){if(_0x4c57b9){var _0x13f61e=typeof _0x12642f[_0xae58('0x1b')]===_0xae58('0x1c')&&typeof _0x12642f[_0xae58('0x1d')]==='undefined';var _0x4dcadf=_0x4c57b9[_0xae58('0x1e')];var _0x3d9b06=_0x13f61e?0x0:_0x12642f[_0xae58('0x1b')];var _0x252488=_0x13f61e?_0x4c57b9[_0xae58('0x1e')]:_0x12642f['offset']+_0x12642f[_0xae58('0x1d')];var _0x3802cc;if(_0x252488>=_0x4dcadf){_0x252488=_0x4dcadf;_0x3802cc=0xc8;}else{_0x3802cc=0xce;}_0x144e48[_0xae58('0x19')](_0x3802cc);return _0x144e48[_0xae58('0x1f')](_0xae58('0x20'),_0x3d9b06+'-'+_0x252488+'/'+_0x4dcadf)[_0xae58('0x1a')](_0x4c57b9);}return null;};}function patchUpdates(_0x3b7fc4){return function(_0x367130){try{jsonpatch[_0xae58('0x21')](_0x367130,_0x3b7fc4,!![]);}catch(_0x544768){return BPromise['reject'](_0x544768);}return _0x367130[_0xae58('0x22')]();};}function saveUpdates(_0x598499,_0x3f199e){return function(_0x4da705){if(_0x4da705){return _0x4da705[_0xae58('0x23')](_0x598499)[_0xae58('0x24')](function(_0x128fd4){return _0x128fd4;});}return null;};}function removeEntity(_0x2ace7f,_0x41d2f2){return function(_0x569f07){if(_0x569f07){return _0x569f07[_0xae58('0x25')]()[_0xae58('0x24')](function(){_0x2ace7f[_0xae58('0x19')](0xcc)[_0xae58('0x26')]();});}};}function handleEntityNotFound(_0x557b6e,_0x2fdc7a){return function(_0x567c8b){if(!_0x567c8b){_0x557b6e['sendStatus'](0x194);}return _0x567c8b;};}function handleError(_0x2b1fff,_0x4e5bd5){_0x4e5bd5=_0x4e5bd5||0x1f4;return function(_0x2c3876){logger['error'](_0x2c3876[_0xae58('0x27')]);if(_0x2c3876[_0xae58('0x28')]){delete _0x2c3876[_0xae58('0x28')];}_0x2b1fff['status'](_0x4e5bd5)['send'](_0x2c3876);};}exports['index']=function(_0x5049de,_0x2afd0e){var _0x5b6505={},_0x551755={},_0xbefe7c={'count':0x0,'rows':[]};var _0x16dc96=_[_0xae58('0x29')](db[_0xae58('0x2a')][_0xae58('0x2b')],function(_0x5eaea4){return{'name':_0x5eaea4[_0xae58('0x2c')],'type':_0x5eaea4[_0xae58('0x2d')][_0xae58('0x2e')]};});_0x551755[_0xae58('0x2f')]=_[_0xae58('0x29')](_0x16dc96,_0xae58('0x28'));_0x551755[_0xae58('0x30')]=_[_0xae58('0x31')](_0x5049de[_0xae58('0x30')]);_0x551755[_0xae58('0x32')]=_[_0xae58('0x33')](_0x551755[_0xae58('0x2f')],_0x551755['query']);_0x5b6505[_0xae58('0x34')]=_[_0xae58('0x33')](_0x551755[_0xae58('0x2f')],qs[_0xae58('0x35')](_0x5049de[_0xae58('0x30')]['fields']));_0x5b6505[_0xae58('0x34')]=_0x5b6505[_0xae58('0x34')]['length']?_0x5b6505[_0xae58('0x34')]:_0x551755[_0xae58('0x2f')];if(!_0x5049de[_0xae58('0x30')][_0xae58('0x36')]('nolimit')){_0x5b6505[_0xae58('0x1d')]=qs['limit'](_0x5049de[_0xae58('0x30')][_0xae58('0x1d')]);_0x5b6505[_0xae58('0x1b')]=qs[_0xae58('0x1b')](_0x5049de['query'][_0xae58('0x1b')]);}_0x5b6505['order']=qs[_0xae58('0x37')](_0x5049de[_0xae58('0x30')]['sort']);_0x5b6505['where']=qs[_0xae58('0x32')](_[_0xae58('0x38')](_0x5049de['query'],_0x551755[_0xae58('0x32')]),_0x16dc96);if(_0x5049de[_0xae58('0x30')][_0xae58('0x39')]){_0x5b6505[_0xae58('0x3a')]=_[_0xae58('0x3b')](_0x5b6505['where'],{'$or':_[_0xae58('0x29')](_0x16dc96,function(_0x5e6ec3){if(_0x5e6ec3[_0xae58('0x2d')]!==_0xae58('0x3c')){var _0x140f2d={};_0x140f2d[_0x5e6ec3[_0xae58('0x28')]]={'$like':'%'+_0x5049de[_0xae58('0x30')][_0xae58('0x39')]+'%'};return _0x140f2d;}})});}_0x5b6505=_[_0xae58('0x3b')]({},_0x5b6505,_0x5049de[_0xae58('0x3d')]);var _0xdbe20d={'where':_0x5b6505[_0xae58('0x3a')]};return db[_0xae58('0x2a')][_0xae58('0x1e')](_0xdbe20d)[_0xae58('0x24')](function(_0x383aeb){_0xbefe7c[_0xae58('0x1e')]=_0x383aeb;if(_0x5049de[_0xae58('0x30')][_0xae58('0x3e')]){_0x5b6505[_0xae58('0x3f')]=[{'all':!![]}];}return db['FaxQueueReport'][_0xae58('0x40')](_0x5b6505);})['then'](function(_0x1d4276){_0xbefe7c[_0xae58('0x41')]=_0x1d4276;return _0xbefe7c;})['then'](respondWithFilteredResult(_0x2afd0e,_0x5b6505))[_0xae58('0x42')](handleError(_0x2afd0e,null));};exports[_0xae58('0x43')]=function(_0x461dfe,_0xcd7d92){var _0x4f1039={'raw':!![],'where':{'id':_0x461dfe['params']['id']}},_0x58b242={};_0x58b242['model']=_[_0xae58('0x31')](db[_0xae58('0x2a')]['rawAttributes']);_0x58b242[_0xae58('0x30')]=_['keys'](_0x461dfe[_0xae58('0x30')]);_0x58b242[_0xae58('0x32')]=_[_0xae58('0x33')](_0x58b242[_0xae58('0x2f')],_0x58b242['query']);_0x4f1039['attributes']=_[_0xae58('0x33')](_0x58b242['model'],qs[_0xae58('0x35')](_0x461dfe[_0xae58('0x30')]['fields']));_0x4f1039[_0xae58('0x34')]=_0x4f1039[_0xae58('0x34')][_0xae58('0x44')]?_0x4f1039[_0xae58('0x34')]:_0x58b242[_0xae58('0x2f')];if(_0x461dfe[_0xae58('0x30')][_0xae58('0x3e')]){_0x4f1039[_0xae58('0x3f')]=[{'all':!![]}];}_0x4f1039=_['merge']({},_0x4f1039,_0x461dfe[_0xae58('0x3d')]);return db[_0xae58('0x2a')][_0xae58('0x45')](_0x4f1039)[_0xae58('0x24')](handleEntityNotFound(_0xcd7d92,null))[_0xae58('0x24')](respondWithResult(_0xcd7d92,null))[_0xae58('0x42')](handleError(_0xcd7d92,null));};exports[_0xae58('0x46')]=function(_0x33d1c0,_0x3a44e1){return db[_0xae58('0x2a')][_0xae58('0x46')](_0x33d1c0[_0xae58('0x47')],{})[_0xae58('0x24')](respondWithResult(_0x3a44e1,0xc9))[_0xae58('0x42')](handleError(_0x3a44e1,null));};exports[_0xae58('0x23')]=function(_0x51d068,_0x384d93){if(_0x51d068['body']['id']){delete _0x51d068[_0xae58('0x47')]['id'];}return db['FaxQueueReport']['find']({'where':{'id':_0x51d068['params']['id']}})[_0xae58('0x24')](handleEntityNotFound(_0x384d93,null))[_0xae58('0x24')](saveUpdates(_0x51d068['body'],null))['then'](respondWithResult(_0x384d93,null))['catch'](handleError(_0x384d93,null));};exports[_0xae58('0x25')]=function(_0x306a05,_0xafe83c){return db[_0xae58('0x2a')]['find']({'where':{'id':_0x306a05[_0xae58('0x48')]['id']}})[_0xae58('0x24')](handleEntityNotFound(_0xafe83c,null))[_0xae58('0x24')](removeEntity(_0xafe83c,null))[_0xae58('0x42')](handleError(_0xafe83c,null));};exports[_0xae58('0x49')]=function(_0x22fec7,_0x6d677c){return db[_0xae58('0x2a')][_0xae58('0x49')]()[_0xae58('0x24')](respondWithResult(_0x6d677c,null))[_0xae58('0x42')](handleError(_0x6d677c,null));};
\ No newline at end of file
index 3d3fc30..5b00406 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','FaxQueueReport','report_fax_queue','uniqueid','lodash','util','api'];(function(_0x4441c9,_0x264016){var _0x2e8e32=function(_0x5909e4){while(--_0x5909e4){_0x4441c9['push'](_0x4441c9['shift']());}};_0x2e8e32(++_0x264016);}(_0x5fab,0x177));var _0xb5fa=function(_0x54a8d3,_0x12b8b7){_0x54a8d3=_0x54a8d3-0x0;var _0x5eec0e=_0x5fab[_0x54a8d3];return _0x5eec0e;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var logger=require('../../config/logger')(_0xb5fa('0x2'));var moment=require(_0xb5fa('0x3'));var BPromise=require(_0xb5fa('0x4'));var rp=require(_0xb5fa('0x5'));var fs=require('fs');var path=require(_0xb5fa('0x6'));var rimraf=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var attributes=require(_0xb5fa('0x9'));module[_0xb5fa('0xa')]=function(_0x44df89,_0x4a0249){return _0x44df89['define'](_0xb5fa('0xb'),attributes,{'tableName':_0xb5fa('0xc'),'paranoid':![],'indexes':[{'name':_0xb5fa('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','uniqueid','lodash'];(function(_0x4f908d,_0x4b2ff1){var _0x546f03=function(_0x4e0ed2){while(--_0x4e0ed2){_0x4f908d['push'](_0x4f908d['shift']());}};_0x546f03(++_0x4b2ff1);}(_0x326f,0xd1));var _0xf326=function(_0x114657,_0x48b4cd){_0x114657=_0x114657-0x0;var _0x141bf4=_0x326f[_0x114657];return _0x141bf4;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[{'name':_0xf326('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index e62d514..c0ec1ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8805=['bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateFaxQueueReport','FaxQueueReport','create','options','raw','update','where','attributes','limit','UpdateFaxQueueReport','lodash','util'];(function(_0x367dd6,_0x10b1ae){var _0x90e0bc=function(_0x4fd481){while(--_0x4fd481){_0x367dd6['push'](_0x367dd6['shift']());}};_0x90e0bc(++_0x10b1ae);}(_0x8805,0x174));var _0x5880=function(_0x2300f2,_0x315c5f){_0x2300f2=_0x2300f2-0x0;var _0x6bd508=_0x8805[_0x2300f2];return _0x6bd508;};'use strict';var _=require(_0x5880('0x0'));var util=require(_0x5880('0x1'));var moment=require('moment');var BPromise=require(_0x5880('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5880('0x3'));var db=require(_0x5880('0x4'))['db'];var utils=require(_0x5880('0x5'));var logger=require('../../config/logger')(_0x5880('0x6'));var config=require(_0x5880('0x7'));var jayson=require(_0x5880('0x8'));var client=jayson[_0x5880('0x9')][_0x5880('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xddf832,_0x428346,_0x38ca94){return new BPromise(function(_0x96b518,_0x304c54){return client[_0x5880('0xb')](_0xddf832,_0x38ca94)[_0x5880('0xc')](function(_0x4d428c){logger[_0x5880('0xd')](_0x5880('0xe'),_0x428346,_0x5880('0xf'));logger[_0x5880('0x10')](_0x5880('0x11'),_0x428346,_0x5880('0xf'),JSON[_0x5880('0x12')](_0x4d428c));if(_0x4d428c[_0x5880('0x13')]){if(_0x4d428c['error'][_0x5880('0x14')]===0x1f4){logger[_0x5880('0x13')](_0x5880('0xe'),_0x428346,_0x4d428c['error'][_0x5880('0x15')]);return _0x304c54(_0x4d428c[_0x5880('0x13')]['message']);}logger[_0x5880('0x13')]('FaxQueueReport,\x20%s,\x20%s',_0x428346,_0x4d428c['error'][_0x5880('0x15')]);return _0x96b518(_0x4d428c['error']['message']);}else{logger[_0x5880('0xd')](_0x5880('0xe'),_0x428346,_0x5880('0xf'));_0x96b518(_0x4d428c[_0x5880('0x16')][_0x5880('0x15')]);}})[_0x5880('0x17')](function(_0xccb1b6){logger[_0x5880('0x13')](_0x5880('0xe'),_0x428346,_0xccb1b6);_0x304c54(_0xccb1b6);});});}exports[_0x5880('0x18')]=function(_0x4d43da){var _0x338cfd=this;return new Promise(function(_0xa3803,_0x12f81f){return db[_0x5880('0x19')][_0x5880('0x1a')](_0x4d43da['body'],{'raw':_0x4d43da['options']?_0x4d43da[_0x5880('0x1b')][_0x5880('0x1c')]===undefined?!![]:![]:!![]})[_0x5880('0xc')](function(_0x101903){logger['info'](_0x5880('0x18'),_0x4d43da);logger['debug']('CreateFaxQueueReport',_0x4d43da,JSON[_0x5880('0x12')](_0x101903));_0xa3803(_0x101903);})[_0x5880('0x17')](function(_0x68fe16){logger['error'](_0x5880('0x18'),_0x68fe16[_0x5880('0x15')],_0x4d43da);_0x12f81f(_0x338cfd['error'](0x1f4,_0x68fe16[_0x5880('0x15')]));});});};exports['UpdateFaxQueueReport']=function(_0x378002){var _0x501d0f=this;return new Promise(function(_0x4ec699,_0x1051df){return db['FaxQueueReport'][_0x5880('0x1d')](_0x378002['body'],{'raw':_0x378002[_0x5880('0x1b')]?_0x378002[_0x5880('0x1b')][_0x5880('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x378002[_0x5880('0x1b')]?_0x378002[_0x5880('0x1b')][_0x5880('0x1e')]||null:null,'attributes':_0x378002[_0x5880('0x1b')]?_0x378002[_0x5880('0x1b')][_0x5880('0x1f')]||null:null,'limit':_0x378002[_0x5880('0x1b')]?_0x378002['options'][_0x5880('0x20')]||null:null})['then'](function(_0x1d0722){logger[_0x5880('0xd')](_0x5880('0x21'),_0x378002);logger[_0x5880('0x10')](_0x5880('0x21'),_0x378002,JSON[_0x5880('0x12')](_0x1d0722));_0x4ec699(_0x1d0722);})['catch'](function(_0x4ec043){logger[_0x5880('0x13')](_0x5880('0x21'),_0x4ec043[_0x5880('0x15')],_0x378002);_0x1051df(_0x501d0f[_0x5880('0x13')](0x1f4,_0x4ec043[_0x5880('0x15')]));});});};
\ No newline at end of file
+var _0x4248=['FaxQueueReport,\x20%s,\x20%s','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','UpdateFaxQueueReport','attributes','limit','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','info'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4248,0x10a));var _0x8424=function(_0x2ff5c6,_0x248fe2){_0x2ff5c6=_0x2ff5c6-0x0;var _0x5605f2=_0x4248[_0x2ff5c6];return _0x5605f2;};'use strict';var _=require('lodash');var util=require(_0x8424('0x0'));var moment=require(_0x8424('0x1'));var BPromise=require(_0x8424('0x2'));var rs=require(_0x8424('0x3'));var fs=require('fs');var Redis=require(_0x8424('0x4'));var db=require(_0x8424('0x5'))['db'];var utils=require(_0x8424('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x8424('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x8424('0x8')][_0x8424('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x8efc00,_0x5f3e08,_0x4f38b6){return new BPromise(function(_0x524377,_0x2d2e4a){return client[_0x8424('0xa')](_0x8efc00,_0x4f38b6)[_0x8424('0xb')](function(_0x4cad95){logger[_0x8424('0xc')](_0x8424('0xd'),_0x5f3e08,'request\x20sent');logger[_0x8424('0xe')](_0x8424('0xf'),_0x5f3e08,_0x8424('0x10'),JSON[_0x8424('0x11')](_0x4cad95));if(_0x4cad95[_0x8424('0x12')]){if(_0x4cad95[_0x8424('0x12')]['code']===0x1f4){logger[_0x8424('0x12')](_0x8424('0xd'),_0x5f3e08,_0x4cad95[_0x8424('0x12')]['message']);return _0x2d2e4a(_0x4cad95[_0x8424('0x12')][_0x8424('0x13')]);}logger[_0x8424('0x12')]('FaxQueueReport,\x20%s,\x20%s',_0x5f3e08,_0x4cad95[_0x8424('0x12')][_0x8424('0x13')]);return _0x524377(_0x4cad95['error']['message']);}else{logger[_0x8424('0xc')](_0x8424('0xd'),_0x5f3e08,_0x8424('0x10'));_0x524377(_0x4cad95[_0x8424('0x14')]['message']);}})[_0x8424('0x15')](function(_0x1621de){logger[_0x8424('0x12')](_0x8424('0xd'),_0x5f3e08,_0x1621de);_0x2d2e4a(_0x1621de);});});}exports[_0x8424('0x16')]=function(_0x2a6766){var _0x2a11ce=this;return new Promise(function(_0x381819,_0x411549){return db[_0x8424('0x17')][_0x8424('0x18')](_0x2a6766[_0x8424('0x19')],{'raw':_0x2a6766[_0x8424('0x1a')]?_0x2a6766[_0x8424('0x1a')][_0x8424('0x1b')]===undefined?!![]:![]:!![]})[_0x8424('0xb')](function(_0x27ca6e){logger[_0x8424('0xc')](_0x8424('0x16'),_0x2a6766);logger[_0x8424('0xe')](_0x8424('0x16'),_0x2a6766,JSON[_0x8424('0x11')](_0x27ca6e));_0x381819(_0x27ca6e);})['catch'](function(_0x51a8e4){logger[_0x8424('0x12')](_0x8424('0x16'),_0x51a8e4[_0x8424('0x13')],_0x2a6766);_0x411549(_0x2a11ce[_0x8424('0x12')](0x1f4,_0x51a8e4[_0x8424('0x13')]));});});};exports[_0x8424('0x1c')]=function(_0x2f84e4){var _0x123c08=this;return new Promise(function(_0x4c9f56,_0x1e60b3){return db['FaxQueueReport']['update'](_0x2f84e4[_0x8424('0x19')],{'raw':_0x2f84e4[_0x8424('0x1a')]?_0x2f84e4['options'][_0x8424('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2f84e4['options']?_0x2f84e4[_0x8424('0x1a')]['where']||null:null,'attributes':_0x2f84e4['options']?_0x2f84e4[_0x8424('0x1a')][_0x8424('0x1d')]||null:null,'limit':_0x2f84e4[_0x8424('0x1a')]?_0x2f84e4['options'][_0x8424('0x1e')]||null:null})[_0x8424('0xb')](function(_0x1bb7f){logger[_0x8424('0xc')](_0x8424('0x1c'),_0x2f84e4);logger['debug'](_0x8424('0x1c'),_0x2f84e4,JSON[_0x8424('0x11')](_0x1bb7f));_0x4c9f56(_0x1bb7f);})[_0x8424('0x15')](function(_0x545212){logger[_0x8424('0x12')](_0x8424('0x1c'),_0x545212['message'],_0x2f84e4);_0x1e60b3(_0x123c08[_0x8424('0x12')](0x1f4,_0x545212[_0x8424('0x13')]));});});};
\ No newline at end of file
index d58be70..f157b28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc0e=['./faxQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/interaction/service'];(function(_0x557785,_0x333686){var _0x4cbaf5=function(_0x2c1baf){while(--_0x2c1baf){_0x557785['push'](_0x557785['shift']());}};_0x4cbaf5(++_0x333686);}(_0xdc0e,0x19d));var _0xedc0=function(_0x58ab89,_0xf01b2d){_0x58ab89=_0x58ab89-0x0;var _0xb93c04=_0xdc0e[_0x58ab89];return _0xb93c04;};'use strict';var multer=require(_0xedc0('0x0'));var util=require(_0xedc0('0x1'));var path=require(_0xedc0('0x2'));var timeout=require('connect-timeout');var express=require(_0xedc0('0x3'));var router=express[_0xedc0('0x4')]();var fs_extra=require(_0xedc0('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xedc0('0x6'));var config=require('../../config/environment');var controller=require(_0xedc0('0x7'));router[_0xedc0('0x8')]('/',auth[_0xedc0('0x9')](),controller[_0xedc0('0xa')]);router['get'](_0xedc0('0xb'),auth[_0xedc0('0x9')](),controller[_0xedc0('0xc')]);router[_0xedc0('0x8')](_0xedc0('0xd'),auth['isAuthenticated'](),controller[_0xedc0('0xe')]);router[_0xedc0('0xf')]('/',auth['isAuthenticated'](),controller[_0xedc0('0x10')]);router[_0xedc0('0x11')](_0xedc0('0xd'),auth[_0xedc0('0x9')](),controller[_0xedc0('0x12')]);router[_0xedc0('0x13')](_0xedc0('0xd'),auth['isAuthenticated'](),controller[_0xedc0('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x7a20=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','post','create','update','delete'];(function(_0x11656,_0x3471ee){var _0x3b7fea=function(_0x339efd){while(--_0x339efd){_0x11656['push'](_0x11656['shift']());}};_0x3b7fea(++_0x3471ee);}(_0x7a20,0xdd));var _0x07a2=function(_0x199277,_0x1055ad){_0x199277=_0x199277-0x0;var _0x4c125a=_0x7a20[_0x199277];return _0x4c125a;};'use strict';var multer=require(_0x07a2('0x0'));var util=require(_0x07a2('0x1'));var path=require(_0x07a2('0x2'));var timeout=require(_0x07a2('0x3'));var express=require(_0x07a2('0x4'));var router=express['Router']();var fs_extra=require(_0x07a2('0x5'));var auth=require(_0x07a2('0x6'));var interaction=require(_0x07a2('0x7'));var config=require(_0x07a2('0x8'));var controller=require('./faxQueueReport.controller');router[_0x07a2('0x9')]('/',auth[_0x07a2('0xa')](),controller[_0x07a2('0xb')]);router[_0x07a2('0x9')](_0x07a2('0xc'),auth[_0x07a2('0xa')](),controller[_0x07a2('0xd')]);router[_0x07a2('0x9')](_0x07a2('0xe'),auth[_0x07a2('0xa')](),controller['show']);router[_0x07a2('0xf')]('/',auth[_0x07a2('0xa')](),controller[_0x07a2('0x10')]);router['put']('/:id',auth[_0x07a2('0xa')](),controller[_0x07a2('0x11')]);router[_0x07a2('0x12')](_0x07a2('0xe'),auth['isAuthenticated'](),controller['destroy']);module[_0x07a2('0x13')]=router;
\ No newline at end of file
index 41e0914..8d88d42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x3a9e14,_0x2f1fd8){var _0x147919=function(_0x505529){while(--_0x505529){_0x3a9e14['push'](_0x3a9e14['shift']());}};_0x147919(++_0x2f1fd8);}(_0xf4eb,0xec));var _0xbf4e=function(_0xcec05f,_0x372a6d){_0xcec05f=_0xcec05f-0x0;var _0xff6fbe=_0xf4eb[_0xcec05f];return _0xff6fbe;};'use strict';var moment=require(_0xbf4e('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xbf4e('0x1'),'agent','queue'),'allowNull':![],'defaultValue':_0xbf4e('0x2')},'transferredAt':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':Sequelize[_0xbf4e('0x4')]}};
\ No newline at end of file
+var _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x558da7,_0x5dde6e){var _0x1f7e50=function(_0x242931){while(--_0x242931){_0x558da7['push'](_0x558da7['shift']());}};_0x1f7e50(++_0x5dde6e);}(_0xaa88,0x137));var _0x8aa8=function(_0x3ee55a,_0x19aeea){_0x3ee55a=_0x3ee55a-0x0;var _0x581800=_0xaa88[_0x3ee55a];return _0x581800;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
index ffc6c24..c59276c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b9d=['json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','FaxTransferReport','includeAll','include','findAll','catch','params','options','create','body','find','destroy','describe','eml-format','rimraf','request-promise','util','path','sox','fs-extra','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x1fffcc,_0xb258ec){var _0xa83ea3=function(_0x327fcc){while(--_0x327fcc){_0x1fffcc['push'](_0x1fffcc['shift']());}};_0xa83ea3(++_0xb258ec);}(_0x5b9d,0x14b));var _0xd5b9=function(_0x2a14a5,_0x3783ff){_0x2a14a5=_0x2a14a5-0x0;var _0x4d4da6=_0x5b9d[_0x2a14a5];return _0x4d4da6;};'use strict';var emlformat=require(_0xd5b9('0x0'));var rimraf=require(_0xd5b9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd5b9('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd5b9('0x3'));var path=require(_0xd5b9('0x4'));var sox=require(_0xd5b9('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd5b9('0x6'));var _=require('lodash');var squel=require(_0xd5b9('0x7'));var crypto=require(_0xd5b9('0x8'));var jsforce=require('jsforce');var deskjs=require(_0xd5b9('0x9'));var toCsv=require(_0xd5b9('0xa'));var querystring=require(_0xd5b9('0xb'));var Papa=require(_0xd5b9('0xc'));var Redis=require(_0xd5b9('0xd'));var authService=require(_0xd5b9('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xd5b9('0xf'));var hardwareService=require(_0xd5b9('0x10'));var logger=require(_0xd5b9('0x11'))(_0xd5b9('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd5b9('0x13'));var db=require(_0xd5b9('0x14'))['db'];function respondWithStatusCode(_0x1ea3d1,_0x544306){_0x544306=_0x544306||0xcc;return function(_0x5bd928){if(_0x5bd928){return _0x1ea3d1[_0xd5b9('0x15')](_0x544306);}return _0x1ea3d1[_0xd5b9('0x16')](_0x544306)[_0xd5b9('0x17')]();};}function respondWithResult(_0x54a7c0,_0x3ffbf2){_0x3ffbf2=_0x3ffbf2||0xc8;return function(_0x2689fd){if(_0x2689fd){return _0x54a7c0[_0xd5b9('0x16')](_0x3ffbf2)[_0xd5b9('0x18')](_0x2689fd);}};}function respondWithFilteredResult(_0x56f45d,_0xbb8cd5){return function(_0x5751e4){if(_0x5751e4){var _0x4ae0e4=typeof _0xbb8cd5[_0xd5b9('0x19')]===_0xd5b9('0x1a')&&typeof _0xbb8cd5[_0xd5b9('0x1b')]===_0xd5b9('0x1a');var _0x2e20ed=_0x5751e4[_0xd5b9('0x1c')];var _0x24d31d=_0x4ae0e4?0x0:_0xbb8cd5[_0xd5b9('0x19')];var _0x2c0187=_0x4ae0e4?_0x5751e4[_0xd5b9('0x1c')]:_0xbb8cd5['offset']+_0xbb8cd5[_0xd5b9('0x1b')];var _0x4c7d6b;if(_0x2c0187>=_0x2e20ed){_0x2c0187=_0x2e20ed;_0x4c7d6b=0xc8;}else{_0x4c7d6b=0xce;}_0x56f45d[_0xd5b9('0x16')](_0x4c7d6b);return _0x56f45d[_0xd5b9('0x1d')](_0xd5b9('0x1e'),_0x24d31d+'-'+_0x2c0187+'/'+_0x2e20ed)[_0xd5b9('0x18')](_0x5751e4);}return null;};}function patchUpdates(_0x44a781){return function(_0x4f0c6b){try{jsonpatch['apply'](_0x4f0c6b,_0x44a781,!![]);}catch(_0x501ded){return BPromise[_0xd5b9('0x1f')](_0x501ded);}return _0x4f0c6b[_0xd5b9('0x20')]();};}function saveUpdates(_0x16cfdc,_0x286f81){return function(_0x1dd814){if(_0x1dd814){return _0x1dd814[_0xd5b9('0x21')](_0x16cfdc)['then'](function(_0x2817f9){return _0x2817f9;});}return null;};}function removeEntity(_0x578f4b,_0x2dc268){return function(_0x25169f){if(_0x25169f){return _0x25169f['destroy']()[_0xd5b9('0x22')](function(){_0x578f4b[_0xd5b9('0x16')](0xcc)[_0xd5b9('0x17')]();});}};}function handleEntityNotFound(_0x218147,_0x5a058d){return function(_0x153b56){if(!_0x153b56){_0x218147[_0xd5b9('0x15')](0x194);}return _0x153b56;};}function handleError(_0x36e961,_0x5ae735){_0x5ae735=_0x5ae735||0x1f4;return function(_0x2585a6){logger['error'](_0x2585a6['stack']);if(_0x2585a6[_0xd5b9('0x23')]){delete _0x2585a6[_0xd5b9('0x23')];}_0x36e961[_0xd5b9('0x16')](_0x5ae735)[_0xd5b9('0x24')](_0x2585a6);};}exports[_0xd5b9('0x25')]=function(_0x37013f,_0x3d600d){var _0x242457={},_0x231f0e={},_0x58ba61={'count':0x0,'rows':[]};var _0x1edd32=_[_0xd5b9('0x26')](db['FaxTransferReport'][_0xd5b9('0x27')],function(_0x2246bc){return{'name':_0x2246bc[_0xd5b9('0x28')],'type':_0x2246bc[_0xd5b9('0x29')][_0xd5b9('0x2a')]};});_0x231f0e[_0xd5b9('0x2b')]=_[_0xd5b9('0x26')](_0x1edd32,_0xd5b9('0x23'));_0x231f0e[_0xd5b9('0x2c')]=_[_0xd5b9('0x2d')](_0x37013f[_0xd5b9('0x2c')]);_0x231f0e[_0xd5b9('0x2e')]=_[_0xd5b9('0x2f')](_0x231f0e['model'],_0x231f0e[_0xd5b9('0x2c')]);_0x242457[_0xd5b9('0x30')]=_[_0xd5b9('0x2f')](_0x231f0e[_0xd5b9('0x2b')],qs[_0xd5b9('0x31')](_0x37013f[_0xd5b9('0x2c')][_0xd5b9('0x31')]));_0x242457['attributes']=_0x242457[_0xd5b9('0x30')][_0xd5b9('0x32')]?_0x242457['attributes']:_0x231f0e[_0xd5b9('0x2b')];if(!_0x37013f['query'][_0xd5b9('0x33')](_0xd5b9('0x34'))){_0x242457[_0xd5b9('0x1b')]=qs[_0xd5b9('0x1b')](_0x37013f['query']['limit']);_0x242457[_0xd5b9('0x19')]=qs[_0xd5b9('0x19')](_0x37013f['query'][_0xd5b9('0x19')]);}_0x242457[_0xd5b9('0x35')]=qs[_0xd5b9('0x36')](_0x37013f['query'][_0xd5b9('0x36')]);_0x242457[_0xd5b9('0x37')]=qs[_0xd5b9('0x2e')](_['pick'](_0x37013f[_0xd5b9('0x2c')],_0x231f0e[_0xd5b9('0x2e')]),_0x1edd32);if(_0x37013f[_0xd5b9('0x2c')][_0xd5b9('0x38')]){_0x242457[_0xd5b9('0x37')]=_[_0xd5b9('0x39')](_0x242457[_0xd5b9('0x37')],{'$or':_[_0xd5b9('0x26')](_0x1edd32,function(_0x2be2ff){if(_0x2be2ff['type']!==_0xd5b9('0x3a')){var _0x3de1c2={};_0x3de1c2[_0x2be2ff[_0xd5b9('0x23')]]={'$like':'%'+_0x37013f[_0xd5b9('0x2c')][_0xd5b9('0x38')]+'%'};return _0x3de1c2;}})});}_0x242457=_[_0xd5b9('0x39')]({},_0x242457,_0x37013f['options']);var _0x3f2576={'where':_0x242457[_0xd5b9('0x37')]};return db[_0xd5b9('0x3b')]['count'](_0x3f2576)[_0xd5b9('0x22')](function(_0x198149){_0x58ba61[_0xd5b9('0x1c')]=_0x198149;if(_0x37013f[_0xd5b9('0x2c')][_0xd5b9('0x3c')]){_0x242457[_0xd5b9('0x3d')]=[{'all':!![]}];}return db[_0xd5b9('0x3b')][_0xd5b9('0x3e')](_0x242457);})[_0xd5b9('0x22')](function(_0x55892e){_0x58ba61['rows']=_0x55892e;return _0x58ba61;})[_0xd5b9('0x22')](respondWithFilteredResult(_0x3d600d,_0x242457))[_0xd5b9('0x3f')](handleError(_0x3d600d,null));};exports['show']=function(_0x54295c,_0x148df2){var _0x79da14={'raw':!![],'where':{'id':_0x54295c[_0xd5b9('0x40')]['id']}},_0x43fa59={};_0x43fa59[_0xd5b9('0x2b')]=_[_0xd5b9('0x2d')](db['FaxTransferReport'][_0xd5b9('0x27')]);_0x43fa59['query']=_[_0xd5b9('0x2d')](_0x54295c[_0xd5b9('0x2c')]);_0x43fa59[_0xd5b9('0x2e')]=_[_0xd5b9('0x2f')](_0x43fa59['model'],_0x43fa59[_0xd5b9('0x2c')]);_0x79da14['attributes']=_[_0xd5b9('0x2f')](_0x43fa59['model'],qs[_0xd5b9('0x31')](_0x54295c[_0xd5b9('0x2c')][_0xd5b9('0x31')]));_0x79da14['attributes']=_0x79da14[_0xd5b9('0x30')][_0xd5b9('0x32')]?_0x79da14[_0xd5b9('0x30')]:_0x43fa59[_0xd5b9('0x2b')];if(_0x54295c[_0xd5b9('0x2c')][_0xd5b9('0x3c')]){_0x79da14[_0xd5b9('0x3d')]=[{'all':!![]}];}_0x79da14=_[_0xd5b9('0x39')]({},_0x79da14,_0x54295c[_0xd5b9('0x41')]);return db[_0xd5b9('0x3b')]['find'](_0x79da14)[_0xd5b9('0x22')](handleEntityNotFound(_0x148df2,null))[_0xd5b9('0x22')](respondWithResult(_0x148df2,null))[_0xd5b9('0x3f')](handleError(_0x148df2,null));};exports[_0xd5b9('0x42')]=function(_0x5d1887,_0x2f6a21){return db['FaxTransferReport'][_0xd5b9('0x42')](_0x5d1887[_0xd5b9('0x43')],{})[_0xd5b9('0x22')](respondWithResult(_0x2f6a21,0xc9))[_0xd5b9('0x3f')](handleError(_0x2f6a21,null));};exports[_0xd5b9('0x21')]=function(_0x15ffc7,_0x4bfca5){if(_0x15ffc7[_0xd5b9('0x43')]['id']){delete _0x15ffc7['body']['id'];}return db[_0xd5b9('0x3b')][_0xd5b9('0x44')]({'where':{'id':_0x15ffc7[_0xd5b9('0x40')]['id']}})[_0xd5b9('0x22')](handleEntityNotFound(_0x4bfca5,null))[_0xd5b9('0x22')](saveUpdates(_0x15ffc7[_0xd5b9('0x43')],null))[_0xd5b9('0x22')](respondWithResult(_0x4bfca5,null))[_0xd5b9('0x3f')](handleError(_0x4bfca5,null));};exports[_0xd5b9('0x45')]=function(_0x49f10a,_0x2f697a){return db['FaxTransferReport'][_0xd5b9('0x44')]({'where':{'id':_0x49f10a[_0xd5b9('0x40')]['id']}})['then'](handleEntityNotFound(_0x2f697a,null))['then'](removeEntity(_0x2f697a,null))[_0xd5b9('0x3f')](handleError(_0x2f697a,null));};exports[_0xd5b9('0x46')]=function(_0x183d79,_0xcdbe03){return db[_0xd5b9('0x3b')][_0xd5b9('0x46')]()['then'](respondWithResult(_0xcdbe03,null))['catch'](handleError(_0xcdbe03,null));};
\ No newline at end of file
+var _0x00a8=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','count','limit','set','Content-Range','destroy','stack','name','send','index','map','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','sort','pick','filter','where','merge','VIRTUAL','FaxTransferReport','includeAll','include','findAll','then','show','params','length','options','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','sox','to-csv','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x46df5b,_0xbfc508){var _0x2daac0=function(_0x10d509){while(--_0x10d509){_0x46df5b['push'](_0x46df5b['shift']());}};_0x2daac0(++_0xbfc508);}(_0x00a8,0x1c6));var _0x800a=function(_0x5646ab,_0x5367e8){_0x5646ab=_0x5646ab-0x0;var _0x21d288=_0x00a8[_0x5646ab];return _0x21d288;};'use strict';var emlformat=require(_0x800a('0x0'));var rimraf=require(_0x800a('0x1'));var zipdir=require(_0x800a('0x2'));var jsonpatch=require(_0x800a('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x800a('0x4'));var Mustache=require('mustache');var util=require(_0x800a('0x5'));var path=require('path');var sox=require(_0x800a('0x6'));var csv=require(_0x800a('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x800a('0x8'));var _=require('lodash');var squel=require(_0x800a('0x9'));var crypto=require('crypto');var jsforce=require(_0x800a('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x800a('0x7'));var querystring=require(_0x800a('0xb'));var Papa=require(_0x800a('0xc'));var Redis=require(_0x800a('0xd'));var authService=require(_0x800a('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x800a('0xf'));var logger=require(_0x800a('0x10'))(_0x800a('0x11'));var utils=require(_0x800a('0x12'));var config=require(_0x800a('0x13'));var licenseUtil=require(_0x800a('0x14'));var db=require(_0x800a('0x15'))['db'];function respondWithStatusCode(_0x5cd09c,_0x12cc9b){_0x12cc9b=_0x12cc9b||0xcc;return function(_0x55f86f){if(_0x55f86f){return _0x5cd09c['sendStatus'](_0x12cc9b);}return _0x5cd09c['status'](_0x12cc9b)[_0x800a('0x16')]();};}function respondWithResult(_0x19a080,_0x3a83dc){_0x3a83dc=_0x3a83dc||0xc8;return function(_0x341160){if(_0x341160){return _0x19a080[_0x800a('0x17')](_0x3a83dc)[_0x800a('0x18')](_0x341160);}};}function respondWithFilteredResult(_0x281b88,_0x147c71){return function(_0x46dc98){if(_0x46dc98){var _0x339237=typeof _0x147c71[_0x800a('0x19')]===_0x800a('0x1a')&&typeof _0x147c71['limit']==='undefined';var _0x355e0d=_0x46dc98[_0x800a('0x1b')];var _0x2b15cd=_0x339237?0x0:_0x147c71[_0x800a('0x19')];var _0x1dbcb3=_0x339237?_0x46dc98[_0x800a('0x1b')]:_0x147c71[_0x800a('0x19')]+_0x147c71[_0x800a('0x1c')];var _0x55f907;if(_0x1dbcb3>=_0x355e0d){_0x1dbcb3=_0x355e0d;_0x55f907=0xc8;}else{_0x55f907=0xce;}_0x281b88['status'](_0x55f907);return _0x281b88[_0x800a('0x1d')](_0x800a('0x1e'),_0x2b15cd+'-'+_0x1dbcb3+'/'+_0x355e0d)[_0x800a('0x18')](_0x46dc98);}return null;};}function patchUpdates(_0x1943e7){return function(_0x2c53b7){try{jsonpatch['apply'](_0x2c53b7,_0x1943e7,!![]);}catch(_0xf7be8b){return BPromise['reject'](_0xf7be8b);}return _0x2c53b7['save']();};}function saveUpdates(_0x1d85f3,_0x4edc6c){return function(_0x5c54d2){if(_0x5c54d2){return _0x5c54d2['update'](_0x1d85f3)['then'](function(_0x52bb55){return _0x52bb55;});}return null;};}function removeEntity(_0x4222b3,_0x424750){return function(_0x2aaca7){if(_0x2aaca7){return _0x2aaca7[_0x800a('0x1f')]()['then'](function(){_0x4222b3[_0x800a('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x246463,_0x3406ae){return function(_0x39ff47){if(!_0x39ff47){_0x246463['sendStatus'](0x194);}return _0x39ff47;};}function handleError(_0x16d176,_0xc9e5cd){_0xc9e5cd=_0xc9e5cd||0x1f4;return function(_0x21e01f){logger['error'](_0x21e01f[_0x800a('0x20')]);if(_0x21e01f[_0x800a('0x21')]){delete _0x21e01f[_0x800a('0x21')];}_0x16d176[_0x800a('0x17')](_0xc9e5cd)[_0x800a('0x22')](_0x21e01f);};}exports[_0x800a('0x23')]=function(_0x3bd536,_0x33cdd3){var _0x32fa33={},_0x3b994e={},_0x30a5f6={'count':0x0,'rows':[]};var _0x205175=_[_0x800a('0x24')](db['FaxTransferReport'][_0x800a('0x25')],function(_0x3d843c){return{'name':_0x3d843c['fieldName'],'type':_0x3d843c[_0x800a('0x26')][_0x800a('0x27')]};});_0x3b994e[_0x800a('0x28')]=_[_0x800a('0x24')](_0x205175,_0x800a('0x21'));_0x3b994e['query']=_[_0x800a('0x29')](_0x3bd536[_0x800a('0x2a')]);_0x3b994e[_0x800a('0x2b')]=_[_0x800a('0x2c')](_0x3b994e[_0x800a('0x28')],_0x3b994e['query']);_0x32fa33['attributes']=_[_0x800a('0x2c')](_0x3b994e[_0x800a('0x28')],qs[_0x800a('0x2d')](_0x3bd536[_0x800a('0x2a')][_0x800a('0x2d')]));_0x32fa33[_0x800a('0x2e')]=_0x32fa33[_0x800a('0x2e')]['length']?_0x32fa33[_0x800a('0x2e')]:_0x3b994e[_0x800a('0x28')];if(!_0x3bd536['query']['hasOwnProperty']('nolimit')){_0x32fa33[_0x800a('0x1c')]=qs['limit'](_0x3bd536[_0x800a('0x2a')][_0x800a('0x1c')]);_0x32fa33[_0x800a('0x19')]=qs[_0x800a('0x19')](_0x3bd536[_0x800a('0x2a')]['offset']);}_0x32fa33['order']=qs['sort'](_0x3bd536['query'][_0x800a('0x2f')]);_0x32fa33['where']=qs['filters'](_[_0x800a('0x30')](_0x3bd536[_0x800a('0x2a')],_0x3b994e[_0x800a('0x2b')]),_0x205175);if(_0x3bd536[_0x800a('0x2a')][_0x800a('0x31')]){_0x32fa33[_0x800a('0x32')]=_[_0x800a('0x33')](_0x32fa33[_0x800a('0x32')],{'$or':_[_0x800a('0x24')](_0x205175,function(_0x52aa5f){if(_0x52aa5f[_0x800a('0x26')]!==_0x800a('0x34')){var _0x474f17={};_0x474f17[_0x52aa5f[_0x800a('0x21')]]={'$like':'%'+_0x3bd536['query']['filter']+'%'};return _0x474f17;}})});}_0x32fa33=_[_0x800a('0x33')]({},_0x32fa33,_0x3bd536['options']);var _0x2096d6={'where':_0x32fa33[_0x800a('0x32')]};return db[_0x800a('0x35')][_0x800a('0x1b')](_0x2096d6)['then'](function(_0x177cf8){_0x30a5f6['count']=_0x177cf8;if(_0x3bd536[_0x800a('0x2a')][_0x800a('0x36')]){_0x32fa33[_0x800a('0x37')]=[{'all':!![]}];}return db[_0x800a('0x35')][_0x800a('0x38')](_0x32fa33);})[_0x800a('0x39')](function(_0x69de2b){_0x30a5f6['rows']=_0x69de2b;return _0x30a5f6;})[_0x800a('0x39')](respondWithFilteredResult(_0x33cdd3,_0x32fa33))['catch'](handleError(_0x33cdd3,null));};exports[_0x800a('0x3a')]=function(_0x384d26,_0x3bc1dc){var _0x415f72={'raw':!![],'where':{'id':_0x384d26[_0x800a('0x3b')]['id']}},_0xe7804a={};_0xe7804a[_0x800a('0x28')]=_[_0x800a('0x29')](db[_0x800a('0x35')]['rawAttributes']);_0xe7804a['query']=_[_0x800a('0x29')](_0x384d26[_0x800a('0x2a')]);_0xe7804a[_0x800a('0x2b')]=_[_0x800a('0x2c')](_0xe7804a[_0x800a('0x28')],_0xe7804a['query']);_0x415f72[_0x800a('0x2e')]=_[_0x800a('0x2c')](_0xe7804a[_0x800a('0x28')],qs[_0x800a('0x2d')](_0x384d26['query']['fields']));_0x415f72[_0x800a('0x2e')]=_0x415f72[_0x800a('0x2e')][_0x800a('0x3c')]?_0x415f72['attributes']:_0xe7804a[_0x800a('0x28')];if(_0x384d26['query']['includeAll']){_0x415f72['include']=[{'all':!![]}];}_0x415f72=_[_0x800a('0x33')]({},_0x415f72,_0x384d26[_0x800a('0x3d')]);return db[_0x800a('0x35')][_0x800a('0x3e')](_0x415f72)[_0x800a('0x39')](handleEntityNotFound(_0x3bc1dc,null))[_0x800a('0x39')](respondWithResult(_0x3bc1dc,null))[_0x800a('0x3f')](handleError(_0x3bc1dc,null));};exports[_0x800a('0x40')]=function(_0x3f4243,_0x1269eb){return db[_0x800a('0x35')]['create'](_0x3f4243['body'],{})['then'](respondWithResult(_0x1269eb,0xc9))[_0x800a('0x3f')](handleError(_0x1269eb,null));};exports['update']=function(_0x15a4c7,_0x527e30){if(_0x15a4c7[_0x800a('0x41')]['id']){delete _0x15a4c7[_0x800a('0x41')]['id'];}return db['FaxTransferReport']['find']({'where':{'id':_0x15a4c7['params']['id']}})[_0x800a('0x39')](handleEntityNotFound(_0x527e30,null))['then'](saveUpdates(_0x15a4c7[_0x800a('0x41')],null))[_0x800a('0x39')](respondWithResult(_0x527e30,null))[_0x800a('0x3f')](handleError(_0x527e30,null));};exports[_0x800a('0x1f')]=function(_0x4643ec,_0x562fbe){return db[_0x800a('0x35')]['find']({'where':{'id':_0x4643ec[_0x800a('0x3b')]['id']}})['then'](handleEntityNotFound(_0x562fbe,null))['then'](removeEntity(_0x562fbe,null))[_0x800a('0x3f')](handleError(_0x562fbe,null));};exports['describe']=function(_0x4409ff,_0xf8a4bd){return db[_0x800a('0x35')][_0x800a('0x42')]()['then'](respondWithResult(_0xf8a4bd,null))[_0x800a('0x3f')](handleError(_0xf8a4bd,null));};
\ No newline at end of file
index 215cd4c..a546f88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa724=['api','bluebird','path','rimraf','../../config/environment','./faxTransferReport.attributes','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash'];(function(_0x5d8018,_0x588592){var _0x151ac4=function(_0x548679){while(--_0x548679){_0x5d8018['push'](_0x5d8018['shift']());}};_0x151ac4(++_0x588592);}(_0xa724,0xf1));var _0x4a72=function(_0x3b38e5,_0x1f625d){_0x3b38e5=_0x3b38e5-0x0;var _0x496518=_0xa724[_0x3b38e5];return _0x496518;};'use strict';var _=require(_0x4a72('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x4a72('0x1'));var moment=require('moment');var BPromise=require(_0x4a72('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4a72('0x3'));var rimraf=require(_0x4a72('0x4'));var config=require(_0x4a72('0x5'));var attributes=require(_0x4a72('0x6'));module['exports']=function(_0xe22fb9,_0x4aaccb){return _0xe22fb9[_0x4a72('0x7')](_0x4a72('0x8'),attributes,{'tableName':_0x4a72('0x9'),'paranoid':![],'indexes':[{'name':_0x4a72('0xa'),'fields':[_0x4a72('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9ad9=['./faxTransferReport.attributes','exports','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x3d6aea,_0x48b0c3){var _0x3966fc=function(_0x4bc798){while(--_0x4bc798){_0x3d6aea['push'](_0x3d6aea['shift']());}};_0x3966fc(++_0x48b0c3);}(_0x9ad9,0xbc));var _0x99ad=function(_0x4a7843,_0x24f6d1){_0x4a7843=_0x4a7843-0x0;var _0x2c57fe=_0x9ad9[_0x4a7843];return _0x2c57fe;};'use strict';var _=require(_0x99ad('0x0'));var util=require('util');var logger=require(_0x99ad('0x1'))(_0x99ad('0x2'));var moment=require(_0x99ad('0x3'));var BPromise=require(_0x99ad('0x4'));var rp=require(_0x99ad('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x99ad('0x6'));var config=require(_0x99ad('0x7'));var attributes=require(_0x99ad('0x8'));module[_0x99ad('0x9')]=function(_0x5d0d18,_0x3c5ac6){return _0x5d0d18[_0x99ad('0xa')](_0x99ad('0xb'),attributes,{'tableName':_0x99ad('0xc'),'paranoid':![],'indexes':[{'name':_0x99ad('0xd'),'fields':[_0x99ad('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 4add106..b9cbaf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa784=['http','then','info','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxTransferReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0x10df6d,_0x30ea63){var _0x39198b=function(_0x33b965){while(--_0x33b965){_0x10df6d['push'](_0x10df6d['shift']());}};_0x39198b(++_0x30ea63);}(_0xa784,0x152));var _0x4a78=function(_0x1fd041,_0x5b17dc){_0x1fd041=_0x1fd041-0x0;var _0x4d33e0=_0xa784[_0x1fd041];return _0x4d33e0;};'use strict';var _=require(_0x4a78('0x0'));var util=require(_0x4a78('0x1'));var moment=require(_0x4a78('0x2'));var BPromise=require(_0x4a78('0x3'));var rs=require(_0x4a78('0x4'));var fs=require('fs');var Redis=require(_0x4a78('0x5'));var db=require(_0x4a78('0x6'))['db'];var utils=require(_0x4a78('0x7'));var logger=require('../../config/logger')(_0x4a78('0x8'));var config=require(_0x4a78('0x9'));var jayson=require(_0x4a78('0xa'));var client=jayson[_0x4a78('0xb')][_0x4a78('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x103d5c,_0x2038eb,_0x3bf039){return new BPromise(function(_0x4a3803,_0x3abb63){return client['request'](_0x103d5c,_0x3bf039)[_0x4a78('0xd')](function(_0x4f6240){logger[_0x4a78('0xe')]('FaxTransferReport,\x20%s,\x20%s',_0x2038eb,_0x4a78('0xf'));logger[_0x4a78('0x10')](_0x4a78('0x11'),_0x2038eb,_0x4a78('0xf'),JSON[_0x4a78('0x12')](_0x4f6240));if(_0x4f6240[_0x4a78('0x13')]){if(_0x4f6240['error'][_0x4a78('0x14')]===0x1f4){logger['error'](_0x4a78('0x15'),_0x2038eb,_0x4f6240[_0x4a78('0x13')][_0x4a78('0x16')]);return _0x3abb63(_0x4f6240[_0x4a78('0x13')][_0x4a78('0x16')]);}logger['error'](_0x4a78('0x15'),_0x2038eb,_0x4f6240[_0x4a78('0x13')][_0x4a78('0x16')]);return _0x4a3803(_0x4f6240[_0x4a78('0x13')][_0x4a78('0x16')]);}else{logger[_0x4a78('0xe')](_0x4a78('0x15'),_0x2038eb,_0x4a78('0xf'));_0x4a3803(_0x4f6240[_0x4a78('0x17')][_0x4a78('0x16')]);}})[_0x4a78('0x18')](function(_0x430186){logger[_0x4a78('0x13')](_0x4a78('0x15'),_0x2038eb,_0x430186);_0x3abb63(_0x430186);});});}
\ No newline at end of file
+var _0x60a2=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x159e3f,_0x206862){var _0x26accc=function(_0x540d22){while(--_0x540d22){_0x159e3f['push'](_0x159e3f['shift']());}};_0x26accc(++_0x206862);}(_0x60a2,0x12f));var _0x260a=function(_0x206d24,_0x353f87){_0x206d24=_0x206d24-0x0;var _0x58bc18=_0x60a2[_0x206d24];return _0x58bc18;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x260a('0x0'));var fs=require('fs');var Redis=require(_0x260a('0x1'));var db=require(_0x260a('0x2'))['db'];var utils=require(_0x260a('0x3'));var logger=require(_0x260a('0x4'))(_0x260a('0x5'));var config=require(_0x260a('0x6'));var jayson=require(_0x260a('0x7'));var client=jayson[_0x260a('0x8')][_0x260a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x188ab7,_0x1817c5,_0x37804c){return new BPromise(function(_0x586d3f,_0x483b4f){return client[_0x260a('0xa')](_0x188ab7,_0x37804c)[_0x260a('0xb')](function(_0x18892d){logger[_0x260a('0xc')](_0x260a('0xd'),_0x1817c5,_0x260a('0xe'));logger[_0x260a('0xf')](_0x260a('0x10'),_0x1817c5,_0x260a('0xe'),JSON[_0x260a('0x11')](_0x18892d));if(_0x18892d[_0x260a('0x12')]){if(_0x18892d[_0x260a('0x12')][_0x260a('0x13')]===0x1f4){logger['error'](_0x260a('0xd'),_0x1817c5,_0x18892d[_0x260a('0x12')][_0x260a('0x14')]);return _0x483b4f(_0x18892d[_0x260a('0x12')]['message']);}logger[_0x260a('0x12')](_0x260a('0xd'),_0x1817c5,_0x18892d[_0x260a('0x12')]['message']);return _0x586d3f(_0x18892d[_0x260a('0x12')][_0x260a('0x14')]);}else{logger[_0x260a('0xc')]('FaxTransferReport,\x20%s,\x20%s',_0x1817c5,'request\x20sent');_0x586d3f(_0x18892d['result'][_0x260a('0x14')]);}})[_0x260a('0x15')](function(_0x2feb25){logger['error'](_0x260a('0xd'),_0x1817c5,_0x2feb25);_0x483b4f(_0x2feb25);});});}
\ No newline at end of file
index c734009..7db8930 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47ad=['util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer'];(function(_0x1c3386,_0x2868c0){var _0x2cc8e9=function(_0x556aa2){while(--_0x556aa2){_0x1c3386['push'](_0x1c3386['shift']());}};_0x2cc8e9(++_0x2868c0);}(_0x47ad,0x15f));var _0xd47a=function(_0x631a3c,_0x1b61b6){_0x631a3c=_0x631a3c-0x0;var _0x2bdfa3=_0x47ad[_0x631a3c];return _0x2bdfa3;};'use strict';var multer=require(_0xd47a('0x0'));var util=require(_0xd47a('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd47a('0x2')]();var fs_extra=require(_0xd47a('0x3'));var auth=require(_0xd47a('0x4'));var interaction=require(_0xd47a('0x5'));var config=require(_0xd47a('0x6'));var controller=require(_0xd47a('0x7'));router['get']('/',auth[_0xd47a('0x8')](),controller[_0xd47a('0x9')]);router[_0xd47a('0xa')](_0xd47a('0xb'),auth[_0xd47a('0x8')](),controller[_0xd47a('0xc')]);router[_0xd47a('0xa')](_0xd47a('0xd'),auth[_0xd47a('0x8')](),controller[_0xd47a('0xe')]);router[_0xd47a('0xf')]('/',auth['isAuthenticated'](),controller[_0xd47a('0x10')]);router[_0xd47a('0x11')]('/:id',auth[_0xd47a('0x8')](),controller[_0xd47a('0x12')]);router[_0xd47a('0x13')](_0xd47a('0xd'),auth['isAuthenticated'](),controller[_0xd47a('0x14')]);module[_0xd47a('0x15')]=router;
\ No newline at end of file
+var _0x28dd=['./faxTransferReport.controller','get','/describe','isAuthenticated','/:id','show','post','create','put','update','delete','exports','multer','util','path','express','fs-extra','../../config/environment'];(function(_0x2ca50d,_0x5a21e6){var _0x3da16b=function(_0x62ef2b){while(--_0x62ef2b){_0x2ca50d['push'](_0x2ca50d['shift']());}};_0x3da16b(++_0x5a21e6);}(_0x28dd,0x66));var _0xd28d=function(_0x41cfd4,_0x1ed2cc){_0x41cfd4=_0x41cfd4-0x0;var _0x190f48=_0x28dd[_0x41cfd4];return _0x190f48;};'use strict';var multer=require(_0xd28d('0x0'));var util=require(_0xd28d('0x1'));var path=require(_0xd28d('0x2'));var timeout=require('connect-timeout');var express=require(_0xd28d('0x3'));var router=express['Router']();var fs_extra=require(_0xd28d('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xd28d('0x5'));var controller=require(_0xd28d('0x6'));router[_0xd28d('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xd28d('0x8'),auth[_0xd28d('0x9')](),controller['describe']);router['get'](_0xd28d('0xa'),auth[_0xd28d('0x9')](),controller[_0xd28d('0xb')]);router[_0xd28d('0xc')]('/',auth['isAuthenticated'](),controller[_0xd28d('0xd')]);router[_0xd28d('0xe')]('/:id',auth[_0xd28d('0x9')](),controller[_0xd28d('0xf')]);router[_0xd28d('0x10')](_0xd28d('0xa'),auth[_0xd28d('0x9')](),controller['destroy']);module[_0xd28d('0x11')]=router;
\ No newline at end of file
index 8a6b3ea..d6fc835 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3512=['delete','exports','multer','util','path','express','fs-extra','../../config/environment','./intDeskAccount.controller','isAuthenticated','index','get','/:id','show','/:id/configurations','/:id/fields','getFields','post','update'];(function(_0x245c70,_0x17903c){var _0x2f53ae=function(_0x3116d6){while(--_0x3116d6){_0x245c70['push'](_0x245c70['shift']());}};_0x2f53ae(++_0x17903c);}(_0x3512,0x74));var _0x2351=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x3512[_0x4565bf];return _0x5610ba;};'use strict';var multer=require(_0x2351('0x0'));var util=require(_0x2351('0x1'));var path=require(_0x2351('0x2'));var timeout=require('connect-timeout');var express=require(_0x2351('0x3'));var router=express['Router']();var fs_extra=require(_0x2351('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x2351('0x5'));var controller=require(_0x2351('0x6'));router['get']('/',auth[_0x2351('0x7')](),controller[_0x2351('0x8')]);router[_0x2351('0x9')](_0x2351('0xa'),auth['isAuthenticated'](),controller[_0x2351('0xb')]);router[_0x2351('0x9')](_0x2351('0xc'),auth[_0x2351('0x7')](),controller['getConfigurations']);router[_0x2351('0x9')](_0x2351('0xd'),auth[_0x2351('0x7')](),controller[_0x2351('0xe')]);router[_0x2351('0xf')]('/',auth[_0x2351('0x7')](),controller['create']);router[_0x2351('0xf')](_0x2351('0xc'),auth['isAuthenticated'](),controller['addConfiguration']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x2351('0x10')]);router[_0x2351('0x11')](_0x2351('0xa'),auth[_0x2351('0x7')](),controller['destroy']);module[_0x2351('0x12')]=router;
\ No newline at end of file
+var _0x171b=['util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','/:id/configurations','addConfiguration','update','destroy','exports','multer'];(function(_0x2f5bce,_0x3d0276){var _0x1c2969=function(_0x22287b){while(--_0x22287b){_0x2f5bce['push'](_0x2f5bce['shift']());}};_0x1c2969(++_0x3d0276);}(_0x171b,0x112));var _0xb171=function(_0x90f9b0,_0x2743b9){_0x90f9b0=_0x90f9b0-0x0;var _0x228da0=_0x171b[_0x90f9b0];return _0x228da0;};'use strict';var multer=require(_0xb171('0x0'));var util=require(_0xb171('0x1'));var path=require(_0xb171('0x2'));var timeout=require('connect-timeout');var express=require(_0xb171('0x3'));var router=express[_0xb171('0x4')]();var fs_extra=require(_0xb171('0x5'));var auth=require(_0xb171('0x6'));var interaction=require(_0xb171('0x7'));var config=require(_0xb171('0x8'));var controller=require(_0xb171('0x9'));router[_0xb171('0xa')]('/',auth[_0xb171('0xb')](),controller[_0xb171('0xc')]);router[_0xb171('0xa')](_0xb171('0xd'),auth[_0xb171('0xb')](),controller[_0xb171('0xe')]);router[_0xb171('0xa')]('/:id/configurations',auth[_0xb171('0xb')](),controller[_0xb171('0xf')]);router[_0xb171('0xa')](_0xb171('0x10'),auth[_0xb171('0xb')](),controller[_0xb171('0x11')]);router[_0xb171('0x12')]('/',auth[_0xb171('0xb')](),controller[_0xb171('0x13')]);router['post'](_0xb171('0x14'),auth['isAuthenticated'](),controller[_0xb171('0x15')]);router['put'](_0xb171('0xd'),auth['isAuthenticated'](),controller[_0xb171('0x16')]);router['delete'](_0xb171('0xd'),auth[_0xb171('0xb')](),controller[_0xb171('0x17')]);module[_0xb171('0x18')]=router;
\ No newline at end of file
index 2e80a39..0dd997c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd09b=['STRING','ENUM','newTab','integrationTab','sequelize'];(function(_0x18fb16,_0x45edbc){var _0x147b0d=function(_0x5b1b00){while(--_0x5b1b00){_0x18fb16['push'](_0x18fb16['shift']());}};_0x147b0d(++_0x45edbc);}(_0xd09b,0x1cb));var _0xbd09=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0xd09b[_0x1694f5];return _0x5b4321;};'use strict';var Sequelize=require(_0xbd09('0x0'));module['exports']={'name':{'type':Sequelize[_0xbd09('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xbd09('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize[_0xbd09('0x2')]('basic'),'defaultValue':'basic'},'password':{'type':Sequelize[_0xbd09('0x1')]},'consumerKey':{'type':Sequelize[_0xbd09('0x1')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xbd09('0x1')]},'tokenSecret':{'type':Sequelize[_0xbd09('0x1')]},'serverUrl':{'type':Sequelize[_0xbd09('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xbd09('0x2')]('integrationTab',_0xbd09('0x3')),'defaultValue':_0xbd09('0x4')}};
\ No newline at end of file
+var _0x03b9=['sequelize','exports','STRING','ENUM','basic','integrationTab','newTab'];(function(_0x567cb3,_0x4ac335){var _0x31c5d6=function(_0x9188c7){while(--_0x9188c7){_0x567cb3['push'](_0x567cb3['shift']());}};_0x31c5d6(++_0x4ac335);}(_0x03b9,0x1e3));var _0x903b=function(_0x1894c1,_0x585fb0){_0x1894c1=_0x1894c1-0x0;var _0x45b23b=_0x03b9[_0x1894c1];return _0x45b23b;};'use strict';var Sequelize=require(_0x903b('0x0'));module[_0x903b('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x903b('0x2')]},'username':{'type':Sequelize[_0x903b('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize[_0x903b('0x3')](_0x903b('0x4')),'defaultValue':_0x903b('0x4')},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize[_0x903b('0x2')]},'consumerSecret':{'type':Sequelize[_0x903b('0x2')]},'token':{'type':Sequelize[_0x903b('0x2')]},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x903b('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x903b('0x3')](_0x903b('0x5'),_0x903b('0x6')),'defaultValue':_0x903b('0x5')}};
\ No newline at end of file
index 6572b9b..4aa631f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa75a=['merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','getConfigurations','DeskConfiguration','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','DeskField','priority','remoteUri','authType','username','password','consumerSecret','token','tokenSecret','slice','substring','lastIndexOf','format','%s/custom_fields','application/json','basic','headers','Authorization','Basic\x20%s','toString','base64','concat','active','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','rimraf','fast-json-patch','moment','mustache','util','path','sox','to-csv','lodash','squel','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','offset','undefined','limit','count','json','apply','reject','update','then','destroy','sendStatus','error','name','send','map','DeskAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter'];(function(_0x49ca18,_0x5e6d05){var _0x145d54=function(_0x30b9be){while(--_0x30b9be){_0x49ca18['push'](_0x49ca18['shift']());}};_0x145d54(++_0x5e6d05);}(_0xa75a,0x1f3));var _0xaa75=function(_0x41f745,_0x4b5c4a){_0x41f745=_0x41f745-0x0;var _0x2cbbcb=_0xa75a[_0x41f745];return _0x2cbbcb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaa75('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaa75('0x1'));var rp=require('request-promise');var moment=require(_0xaa75('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xaa75('0x3'));var util=require(_0xaa75('0x4'));var path=require(_0xaa75('0x5'));var sox=require(_0xaa75('0x6'));var csv=require(_0xaa75('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaa75('0x8'));var squel=require(_0xaa75('0x9'));var crypto=require('crypto');var jsforce=require(_0xaa75('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xaa75('0x7'));var querystring=require(_0xaa75('0xb'));var Papa=require('papaparse');var Redis=require(_0xaa75('0xc'));var authService=require(_0xaa75('0xd'));var qs=require(_0xaa75('0xe'));var as=require(_0xaa75('0xf'));var hardwareService=require(_0xaa75('0x10'));var logger=require(_0xaa75('0x11'))(_0xaa75('0x12'));var utils=require(_0xaa75('0x13'));var config=require(_0xaa75('0x14'));var licenseUtil=require(_0xaa75('0x15'));var db=require(_0xaa75('0x16'))['db'];var integrations=require(_0xaa75('0x17'));function respondWithStatusCode(_0x37c2f7,_0x4caf80){_0x4caf80=_0x4caf80||0xcc;return function(_0x5f3fdc){if(_0x5f3fdc){return _0x37c2f7['sendStatus'](_0x4caf80);}return _0x37c2f7[_0xaa75('0x18')](_0x4caf80)[_0xaa75('0x19')]();};}function respondWithResult(_0x53365f,_0x578fc1){_0x578fc1=_0x578fc1||0xc8;return function(_0xd0d2f9){if(_0xd0d2f9){return _0x53365f[_0xaa75('0x18')](_0x578fc1)['json'](_0xd0d2f9);}};}function respondWithFilteredResult(_0x413b2b,_0x200e48){return function(_0x29c0f4){if(_0x29c0f4){var _0x11ba7b=typeof _0x200e48[_0xaa75('0x1a')]===_0xaa75('0x1b')&&typeof _0x200e48[_0xaa75('0x1c')]===_0xaa75('0x1b');var _0xc65d48=_0x29c0f4[_0xaa75('0x1d')];var _0x858a71=_0x11ba7b?0x0:_0x200e48[_0xaa75('0x1a')];var _0x57c3c6=_0x11ba7b?_0x29c0f4[_0xaa75('0x1d')]:_0x200e48[_0xaa75('0x1a')]+_0x200e48['limit'];var _0x59f00f;if(_0x57c3c6>=_0xc65d48){_0x57c3c6=_0xc65d48;_0x59f00f=0xc8;}else{_0x59f00f=0xce;}_0x413b2b[_0xaa75('0x18')](_0x59f00f);return _0x413b2b['set']('Content-Range',_0x858a71+'-'+_0x57c3c6+'/'+_0xc65d48)[_0xaa75('0x1e')](_0x29c0f4);}return null;};}function patchUpdates(_0x1954f0){return function(_0x32b865){try{jsonpatch[_0xaa75('0x1f')](_0x32b865,_0x1954f0,!![]);}catch(_0x44ad4b){return BPromise[_0xaa75('0x20')](_0x44ad4b);}return _0x32b865['save']();};}function saveUpdates(_0x628b60,_0x2ec6bd){return function(_0x1c81aa){if(_0x1c81aa){return _0x1c81aa[_0xaa75('0x21')](_0x628b60)[_0xaa75('0x22')](function(_0x3ddf5b){return _0x3ddf5b;});}return null;};}function removeEntity(_0x37fb5a,_0x14f9b5){return function(_0x42f245){if(_0x42f245){return _0x42f245[_0xaa75('0x23')]()[_0xaa75('0x22')](function(){_0x37fb5a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x381ea6,_0x14f248){return function(_0x1ab841){if(!_0x1ab841){_0x381ea6[_0xaa75('0x24')](0x194);}return _0x1ab841;};}function handleError(_0xe2bd84,_0x28c849){_0x28c849=_0x28c849||0x1f4;return function(_0x17776d){logger[_0xaa75('0x25')](_0x17776d['stack']);if(_0x17776d['name']){delete _0x17776d[_0xaa75('0x26')];}_0xe2bd84['status'](_0x28c849)[_0xaa75('0x27')](_0x17776d);};}exports['index']=function(_0x3df418,_0x1b1a8c){var _0x37b159={},_0x3ffeb1={},_0x29a4a6={'count':0x0,'rows':[]};var _0x2fa52e=_[_0xaa75('0x28')](db[_0xaa75('0x29')][_0xaa75('0x2a')],function(_0x4470f6){return{'name':_0x4470f6[_0xaa75('0x2b')],'type':_0x4470f6[_0xaa75('0x2c')][_0xaa75('0x2d')]};});_0x3ffeb1[_0xaa75('0x2e')]=_['map'](_0x2fa52e,_0xaa75('0x26'));_0x3ffeb1[_0xaa75('0x2f')]=_[_0xaa75('0x30')](_0x3df418[_0xaa75('0x2f')]);_0x3ffeb1[_0xaa75('0x31')]=_[_0xaa75('0x32')](_0x3ffeb1['model'],_0x3ffeb1[_0xaa75('0x2f')]);_0x37b159[_0xaa75('0x33')]=_[_0xaa75('0x32')](_0x3ffeb1['model'],qs[_0xaa75('0x34')](_0x3df418['query'][_0xaa75('0x34')]));_0x37b159[_0xaa75('0x33')]=_0x37b159[_0xaa75('0x33')][_0xaa75('0x35')]?_0x37b159[_0xaa75('0x33')]:_0x3ffeb1[_0xaa75('0x2e')];if(!_0x3df418[_0xaa75('0x2f')][_0xaa75('0x36')](_0xaa75('0x37'))){_0x37b159[_0xaa75('0x1c')]=qs[_0xaa75('0x1c')](_0x3df418['query'][_0xaa75('0x1c')]);_0x37b159[_0xaa75('0x1a')]=qs[_0xaa75('0x1a')](_0x3df418['query'][_0xaa75('0x1a')]);}_0x37b159[_0xaa75('0x38')]=qs[_0xaa75('0x39')](_0x3df418[_0xaa75('0x2f')][_0xaa75('0x39')]);_0x37b159[_0xaa75('0x3a')]=qs[_0xaa75('0x31')](_[_0xaa75('0x3b')](_0x3df418[_0xaa75('0x2f')],_0x3ffeb1[_0xaa75('0x31')]),_0x2fa52e);if(_0x3df418['query'][_0xaa75('0x3c')]){_0x37b159[_0xaa75('0x3a')]=_[_0xaa75('0x3d')](_0x37b159[_0xaa75('0x3a')],{'$or':_[_0xaa75('0x28')](_0x2fa52e,function(_0x4ae279){if(_0x4ae279[_0xaa75('0x2c')]!==_0xaa75('0x3e')){var _0x17b8f2={};_0x17b8f2[_0x4ae279[_0xaa75('0x26')]]={'$like':'%'+_0x3df418[_0xaa75('0x2f')][_0xaa75('0x3c')]+'%'};return _0x17b8f2;}})});}_0x37b159=_[_0xaa75('0x3d')]({},_0x37b159,_0x3df418[_0xaa75('0x3f')]);var _0x3e1650={'where':_0x37b159['where']};return db[_0xaa75('0x29')][_0xaa75('0x1d')](_0x3e1650)[_0xaa75('0x22')](function(_0x53cd98){_0x29a4a6[_0xaa75('0x1d')]=_0x53cd98;if(_0x3df418[_0xaa75('0x2f')][_0xaa75('0x40')]){_0x37b159[_0xaa75('0x41')]=[{'all':!![]}];}return db[_0xaa75('0x29')][_0xaa75('0x42')](_0x37b159);})[_0xaa75('0x22')](function(_0x2ed098){_0x29a4a6[_0xaa75('0x43')]=_0x2ed098;return _0x29a4a6;})[_0xaa75('0x22')](respondWithFilteredResult(_0x1b1a8c,_0x37b159))[_0xaa75('0x44')](handleError(_0x1b1a8c,null));};exports[_0xaa75('0x45')]=function(_0x305c3f,_0x5171d4){var _0x2f07d7={'raw':![],'where':{'id':_0x305c3f[_0xaa75('0x46')]['id']}},_0x3199b4={};_0x3199b4[_0xaa75('0x2e')]=_['keys'](db['DeskAccount'][_0xaa75('0x2a')]);_0x3199b4[_0xaa75('0x2f')]=_[_0xaa75('0x30')](_0x305c3f['query']);_0x3199b4[_0xaa75('0x31')]=_[_0xaa75('0x32')](_0x3199b4[_0xaa75('0x2e')],_0x3199b4['query']);_0x2f07d7['attributes']=_['intersection'](_0x3199b4[_0xaa75('0x2e')],qs[_0xaa75('0x34')](_0x305c3f[_0xaa75('0x2f')][_0xaa75('0x34')]));_0x2f07d7[_0xaa75('0x33')]=_0x2f07d7[_0xaa75('0x33')][_0xaa75('0x35')]?_0x2f07d7[_0xaa75('0x33')]:_0x3199b4[_0xaa75('0x2e')];if(_0x305c3f[_0xaa75('0x2f')][_0xaa75('0x40')]){_0x2f07d7['include']=[{'all':!![]}];}_0x2f07d7=_[_0xaa75('0x3d')]({},_0x2f07d7,_0x305c3f['options']);return db[_0xaa75('0x29')]['find'](_0x2f07d7)[_0xaa75('0x22')](handleEntityNotFound(_0x5171d4,null))['then'](respondWithResult(_0x5171d4,null))[_0xaa75('0x44')](handleError(_0x5171d4,null));};exports['create']=function(_0x15d8b0,_0x196bde){return db['DeskAccount'][_0xaa75('0x47')](_0x15d8b0[_0xaa75('0x48')],{})[_0xaa75('0x22')](respondWithResult(_0x196bde,0xc9))[_0xaa75('0x44')](handleError(_0x196bde,null));};exports['update']=function(_0x5a75f4,_0x52cc2c){if(_0x5a75f4[_0xaa75('0x48')]['id']){delete _0x5a75f4[_0xaa75('0x48')]['id'];}return db[_0xaa75('0x29')][_0xaa75('0x49')]({'where':{'id':_0x5a75f4[_0xaa75('0x46')]['id']}})[_0xaa75('0x22')](handleEntityNotFound(_0x52cc2c,null))[_0xaa75('0x22')](saveUpdates(_0x5a75f4[_0xaa75('0x48')],null))[_0xaa75('0x22')](respondWithResult(_0x52cc2c,null))[_0xaa75('0x44')](handleError(_0x52cc2c,null));};exports['destroy']=function(_0x387f0b,_0x46a307){return db[_0xaa75('0x29')][_0xaa75('0x49')]({'where':{'id':_0x387f0b[_0xaa75('0x46')]['id']}})[_0xaa75('0x22')](handleEntityNotFound(_0x46a307,null))[_0xaa75('0x22')](removeEntity(_0x46a307,null))[_0xaa75('0x44')](handleError(_0x46a307,null));};exports[_0xaa75('0x4a')]=function(_0x5636c2,_0x31af8f,_0x43a864){var _0x3896f7={};var _0x43d3a7={};var _0x4fd3e6;var _0x446779;return db['DeskAccount']['findOne']({'where':{'id':_0x5636c2['params']['id']}})[_0xaa75('0x22')](handleEntityNotFound(_0x31af8f,null))['then'](function(_0x48ecf9){if(_0x48ecf9){_0x4fd3e6=_0x48ecf9;_0x43d3a7[_0xaa75('0x2e')]=_['keys'](db[_0xaa75('0x4b')][_0xaa75('0x2a')]);_0x43d3a7[_0xaa75('0x2f')]=_[_0xaa75('0x30')](_0x5636c2[_0xaa75('0x2f')]);_0x43d3a7['filters']=_[_0xaa75('0x32')](_0x43d3a7[_0xaa75('0x2e')],_0x43d3a7['query']);_0x3896f7['attributes']=_[_0xaa75('0x32')](_0x43d3a7['model'],qs['fields'](_0x5636c2[_0xaa75('0x2f')][_0xaa75('0x34')]));_0x3896f7[_0xaa75('0x33')]=_0x3896f7[_0xaa75('0x33')][_0xaa75('0x35')]?_0x3896f7['attributes']:_0x43d3a7[_0xaa75('0x2e')];_0x3896f7[_0xaa75('0x38')]=qs['sort'](_0x5636c2['query'][_0xaa75('0x39')]);_0x3896f7[_0xaa75('0x3a')]=qs[_0xaa75('0x31')](_[_0xaa75('0x3b')](_0x5636c2[_0xaa75('0x2f')],_0x43d3a7['filters']));if(_0x5636c2['query'][_0xaa75('0x3c')]){_0x3896f7[_0xaa75('0x3a')]=_[_0xaa75('0x3d')](_0x3896f7[_0xaa75('0x3a')],{'$or':_[_0xaa75('0x28')](_0x3896f7[_0xaa75('0x33')],function(_0x36485d){var _0x28a755={};_0x28a755[_0x36485d]={'$like':'%'+_0x5636c2[_0xaa75('0x2f')][_0xaa75('0x3c')]+'%'};return _0x28a755;})});}_0x3896f7=_[_0xaa75('0x3d')]({},_0x3896f7,_0x5636c2[_0xaa75('0x3f')]);return _0x4fd3e6[_0xaa75('0x4a')](_0x3896f7);}})[_0xaa75('0x22')](function(_0x192365){if(_0x192365){_0x446779=_0x192365[_0xaa75('0x35')];if(!_0x5636c2['query'][_0xaa75('0x36')](_0xaa75('0x37'))){_0x3896f7[_0xaa75('0x1c')]=qs[_0xaa75('0x1c')](_0x5636c2[_0xaa75('0x2f')][_0xaa75('0x1c')]);_0x3896f7['offset']=qs[_0xaa75('0x1a')](_0x5636c2[_0xaa75('0x2f')][_0xaa75('0x1a')]);}return _0x4fd3e6[_0xaa75('0x4a')](_0x3896f7);}})[_0xaa75('0x22')](function(_0x43405e){if(_0x43405e){return _0x43405e?{'count':_0x446779,'rows':_0x43405e}:null;}})['then'](respondWithResult(_0x31af8f,null))['catch'](handleError(_0x31af8f,null));};exports[_0xaa75('0x4c')]=function(_0x1486a3,_0x29adbb,_0x428c29){if(_0x1486a3['body']['id']){delete _0x1486a3[_0xaa75('0x48')]['id'];}return db[_0xaa75('0x29')][_0xaa75('0x4d')]({'where':{'id':_0x1486a3[_0xaa75('0x46')]['id']}})[_0xaa75('0x22')](handleEntityNotFound(_0x29adbb,null))[_0xaa75('0x22')](function(_0x5d2005){if(_0x5d2005){_0x1486a3[_0xaa75('0x48')][_0xaa75('0x4e')]=_0x5d2005['id'];_0x1486a3[_0xaa75('0x48')][_0xaa75('0x4f')]=integrations[_0xaa75('0x50')](_0x1486a3['body'][_0xaa75('0x51')],_0x1486a3['body'][_0xaa75('0x2c')]);_0x1486a3[_0xaa75('0x48')][_0xaa75('0x52')]=integrations['getDescriptions'](_0x1486a3[_0xaa75('0x48')][_0xaa75('0x51')],_0x1486a3[_0xaa75('0x48')][_0xaa75('0x2c')]);return db[_0xaa75('0x4b')][_0xaa75('0x47')](_0x1486a3[_0xaa75('0x48')],{'include':[{'model':db[_0xaa75('0x53')],'as':'Subjects'},{'model':db[_0xaa75('0x53')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x29adbb,null))[_0xaa75('0x44')](handleError(_0x29adbb,null));};exports['getFields']=function(_0x5c64e1,_0x49a840,_0x46516d){var _0x31734e=[{'name':_0xaa75('0x54'),'label':_0xaa75('0x54'),'custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x43d904='';return db[_0xaa75('0x29')][_0xaa75('0x4d')]({'where':{'id':_0x5c64e1[_0xaa75('0x46')]['id']},'attributes':['id',_0xaa75('0x55'),_0xaa75('0x56'),_0xaa75('0x57'),_0xaa75('0x58'),'consumerKey',_0xaa75('0x59'),_0xaa75('0x5a'),_0xaa75('0x5b')]})[_0xaa75('0x22')](handleEntityNotFound(_0x49a840,null))[_0xaa75('0x22')](function(_0x23946c){if(_0x23946c){_0x43d904=_0x23946c[_0xaa75('0x55')];var _0x422f45=_0x43d904[_0xaa75('0x5c')](-0x1);if(_0x422f45==='/'){_0x43d904=_0x43d904[_0xaa75('0x5d')](0x0,_0x43d904[_0xaa75('0x5e')](_0x422f45));}var _0xa0ed90={'method':'GET','uri':util[_0xaa75('0x5f')](_0xaa75('0x60'),_0x43d904),'headers':{'Content-Type':_0xaa75('0x61'),'Accept':_0xaa75('0x61')},'json':!![]};if(_0x23946c[_0xaa75('0x56')]===_0xaa75('0x62')){_0xa0ed90[_0xaa75('0x63')][_0xaa75('0x64')]=util['format'](_0xaa75('0x65'),new Buffer(util[_0xaa75('0x5f')]('%s:%s',_0x23946c['username'],_0x23946c[_0xaa75('0x58')]))[_0xaa75('0x66')](_0xaa75('0x67')));}return rp(_0xa0ed90)['then'](function(_0x5518a9){return _0x31734e[_0xaa75('0x68')](_[_0xaa75('0x28')](_0x5518a9['_embedded']['entries'],function(_0x167822){return{'id':_0x167822['name'],'name':_0x167822[_0xaa75('0x26')],'type':_0x167822['type'],'active':_0x167822[_0xaa75('0x69')],'label':_0x167822['label'],'custom':!![]};}));});}})['then'](function(_0x55ed06){return{'count':_0x55ed06['length'],'rows':_0x55ed06};})[_0xaa75('0x22')](respondWithResult(_0x49a840,null))['catch'](function(_0xfe5a7f){var _0x2289ac=_0x5c64e1[_0xaa75('0x2f')][_0xaa75('0x6a')]?0x1f4:_0xfe5a7f[_0xaa75('0x6b')]||0x1f4;logger['error'](_0xaa75('0x6c'),_0xaa75('0x6d'),_0x2289ac,JSON[_0xaa75('0x6e')](_0xfe5a7f));delete _0xfe5a7f[_0xaa75('0x26')];if(_0x2289ac===0x191){_0x2289ac=0x190;}_0x49a840[_0xaa75('0x18')](_0x2289ac)[_0xaa75('0x27')](_0x5c64e1['query'][_0xaa75('0x6a')]?{'message':_0xaa75('0x6f'),'statusCode':_0xfe5a7f[_0xaa75('0x6b')]}:_0xfe5a7f);});};
\ No newline at end of file
+var _0x11d4=['attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','rawAttributes','create','body','find','params','destroy','getConfigurations','findOne','DeskConfiguration','order','addConfiguration','Subjects','getSubjects','channel','Descriptions','getDescriptions','DeskField','priority','authType','username','password','consumerKey','consumerSecret','token','tokenSecret','slice','substring','lastIndexOf','format','%s/custom_fields','application/json','Authorization','%s:%s','base64','concat','_embedded','entries','active','label','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','sendStatus','error','stack','name','index','DeskAccount','fieldName','key','model','map','query','keys','intersection'];(function(_0x515a41,_0x4c631c){var _0x5a435b=function(_0x5dc9b4){while(--_0x5dc9b4){_0x515a41['push'](_0x515a41['shift']());}};_0x5a435b(++_0x4c631c);}(_0x11d4,0xb6));var _0x411d=function(_0x3d79e9,_0x183148){_0x3d79e9=_0x3d79e9-0x0;var _0x389c41=_0x11d4[_0x3d79e9];return _0x389c41;};'use strict';var emlformat=require(_0x411d('0x0'));var rimraf=require(_0x411d('0x1'));var zipdir=require(_0x411d('0x2'));var jsonpatch=require(_0x411d('0x3'));var rp=require(_0x411d('0x4'));var moment=require(_0x411d('0x5'));var BPromise=require(_0x411d('0x6'));var Mustache=require(_0x411d('0x7'));var util=require(_0x411d('0x8'));var path=require(_0x411d('0x9'));var sox=require(_0x411d('0xa'));var csv=require('to-csv');var ejs=require(_0x411d('0xb'));var fs=require('fs');var fs_extra=require(_0x411d('0xc'));var _=require(_0x411d('0xd'));var squel=require(_0x411d('0xe'));var crypto=require(_0x411d('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x411d('0x10'));var toCsv=require('to-csv');var querystring=require(_0x411d('0x11'));var Papa=require(_0x411d('0x12'));var Redis=require(_0x411d('0x13'));var authService=require(_0x411d('0x14'));var qs=require(_0x411d('0x15'));var as=require(_0x411d('0x16'));var hardwareService=require(_0x411d('0x17'));var logger=require(_0x411d('0x18'))(_0x411d('0x19'));var utils=require(_0x411d('0x1a'));var config=require(_0x411d('0x1b'));var licenseUtil=require(_0x411d('0x1c'));var db=require(_0x411d('0x1d'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x24c941,_0x1924ea){_0x1924ea=_0x1924ea||0xcc;return function(_0x2a2fe5){if(_0x2a2fe5){return _0x24c941['sendStatus'](_0x1924ea);}return _0x24c941[_0x411d('0x1e')](_0x1924ea)[_0x411d('0x1f')]();};}function respondWithResult(_0x4f1723,_0x1deb4c){_0x1deb4c=_0x1deb4c||0xc8;return function(_0x2d2178){if(_0x2d2178){return _0x4f1723['status'](_0x1deb4c)[_0x411d('0x20')](_0x2d2178);}};}function respondWithFilteredResult(_0x2e7e81,_0x34f803){return function(_0x53f9fd){if(_0x53f9fd){var _0x3a3bd2=typeof _0x34f803[_0x411d('0x21')]===_0x411d('0x22')&&typeof _0x34f803['limit']===_0x411d('0x22');var _0x303653=_0x53f9fd[_0x411d('0x23')];var _0x8fabdf=_0x3a3bd2?0x0:_0x34f803['offset'];var _0x1c66ba=_0x3a3bd2?_0x53f9fd[_0x411d('0x23')]:_0x34f803[_0x411d('0x21')]+_0x34f803[_0x411d('0x24')];var _0x94eef6;if(_0x1c66ba>=_0x303653){_0x1c66ba=_0x303653;_0x94eef6=0xc8;}else{_0x94eef6=0xce;}_0x2e7e81[_0x411d('0x1e')](_0x94eef6);return _0x2e7e81[_0x411d('0x25')](_0x411d('0x26'),_0x8fabdf+'-'+_0x1c66ba+'/'+_0x303653)[_0x411d('0x20')](_0x53f9fd);}return null;};}function patchUpdates(_0x120e58){return function(_0x193e8a){try{jsonpatch[_0x411d('0x27')](_0x193e8a,_0x120e58,!![]);}catch(_0x2f95cc){return BPromise['reject'](_0x2f95cc);}return _0x193e8a[_0x411d('0x28')]();};}function saveUpdates(_0x353e40,_0x131d3f){return function(_0x3ea714){if(_0x3ea714){return _0x3ea714[_0x411d('0x29')](_0x353e40)[_0x411d('0x2a')](function(_0x439ef3){return _0x439ef3;});}return null;};}function removeEntity(_0x54fc75,_0x5a7f7a){return function(_0x4a0a23){if(_0x4a0a23){return _0x4a0a23['destroy']()[_0x411d('0x2a')](function(){_0x54fc75['status'](0xcc)[_0x411d('0x1f')]();});}};}function handleEntityNotFound(_0x1f0821,_0x4daf75){return function(_0x81b390){if(!_0x81b390){_0x1f0821[_0x411d('0x2b')](0x194);}return _0x81b390;};}function handleError(_0x35acc6,_0x181717){_0x181717=_0x181717||0x1f4;return function(_0x2fc65c){logger[_0x411d('0x2c')](_0x2fc65c[_0x411d('0x2d')]);if(_0x2fc65c[_0x411d('0x2e')]){delete _0x2fc65c[_0x411d('0x2e')];}_0x35acc6[_0x411d('0x1e')](_0x181717)['send'](_0x2fc65c);};}exports[_0x411d('0x2f')]=function(_0x5f48f0,_0x5086ca){var _0x48429b={},_0x126727={},_0x22a65d={'count':0x0,'rows':[]};var _0x363fef=_['map'](db[_0x411d('0x30')]['rawAttributes'],function(_0x366055){return{'name':_0x366055[_0x411d('0x31')],'type':_0x366055['type'][_0x411d('0x32')]};});_0x126727[_0x411d('0x33')]=_[_0x411d('0x34')](_0x363fef,'name');_0x126727[_0x411d('0x35')]=_[_0x411d('0x36')](_0x5f48f0[_0x411d('0x35')]);_0x126727['filters']=_[_0x411d('0x37')](_0x126727[_0x411d('0x33')],_0x126727[_0x411d('0x35')]);_0x48429b[_0x411d('0x38')]=_[_0x411d('0x37')](_0x126727['model'],qs[_0x411d('0x39')](_0x5f48f0[_0x411d('0x35')][_0x411d('0x39')]));_0x48429b[_0x411d('0x38')]=_0x48429b[_0x411d('0x38')][_0x411d('0x3a')]?_0x48429b[_0x411d('0x38')]:_0x126727[_0x411d('0x33')];if(!_0x5f48f0[_0x411d('0x35')][_0x411d('0x3b')](_0x411d('0x3c'))){_0x48429b['limit']=qs[_0x411d('0x24')](_0x5f48f0[_0x411d('0x35')][_0x411d('0x24')]);_0x48429b[_0x411d('0x21')]=qs[_0x411d('0x21')](_0x5f48f0['query'][_0x411d('0x21')]);}_0x48429b['order']=qs[_0x411d('0x3d')](_0x5f48f0[_0x411d('0x35')][_0x411d('0x3d')]);_0x48429b[_0x411d('0x3e')]=qs[_0x411d('0x3f')](_[_0x411d('0x40')](_0x5f48f0[_0x411d('0x35')],_0x126727[_0x411d('0x3f')]),_0x363fef);if(_0x5f48f0[_0x411d('0x35')][_0x411d('0x41')]){_0x48429b['where']=_[_0x411d('0x42')](_0x48429b[_0x411d('0x3e')],{'$or':_[_0x411d('0x34')](_0x363fef,function(_0x3e4e66){if(_0x3e4e66[_0x411d('0x43')]!==_0x411d('0x44')){var _0x2da41e={};_0x2da41e[_0x3e4e66[_0x411d('0x2e')]]={'$like':'%'+_0x5f48f0['query'][_0x411d('0x41')]+'%'};return _0x2da41e;}})});}_0x48429b=_[_0x411d('0x42')]({},_0x48429b,_0x5f48f0[_0x411d('0x45')]);var _0x480a82={'where':_0x48429b[_0x411d('0x3e')]};return db[_0x411d('0x30')][_0x411d('0x23')](_0x480a82)['then'](function(_0x7cbf51){_0x22a65d['count']=_0x7cbf51;if(_0x5f48f0[_0x411d('0x35')][_0x411d('0x46')]){_0x48429b[_0x411d('0x47')]=[{'all':!![]}];}return db[_0x411d('0x30')][_0x411d('0x48')](_0x48429b);})[_0x411d('0x2a')](function(_0x5e5ef6){_0x22a65d[_0x411d('0x49')]=_0x5e5ef6;return _0x22a65d;})[_0x411d('0x2a')](respondWithFilteredResult(_0x5086ca,_0x48429b))[_0x411d('0x4a')](handleError(_0x5086ca,null));};exports['show']=function(_0x5ce0f7,_0xe0c975){var _0x517b83={'raw':![],'where':{'id':_0x5ce0f7['params']['id']}},_0x1494e9={};_0x1494e9[_0x411d('0x33')]=_[_0x411d('0x36')](db[_0x411d('0x30')][_0x411d('0x4b')]);_0x1494e9['query']=_['keys'](_0x5ce0f7['query']);_0x1494e9['filters']=_[_0x411d('0x37')](_0x1494e9[_0x411d('0x33')],_0x1494e9[_0x411d('0x35')]);_0x517b83[_0x411d('0x38')]=_[_0x411d('0x37')](_0x1494e9['model'],qs[_0x411d('0x39')](_0x5ce0f7[_0x411d('0x35')][_0x411d('0x39')]));_0x517b83['attributes']=_0x517b83[_0x411d('0x38')][_0x411d('0x3a')]?_0x517b83[_0x411d('0x38')]:_0x1494e9[_0x411d('0x33')];if(_0x5ce0f7[_0x411d('0x35')]['includeAll']){_0x517b83['include']=[{'all':!![]}];}_0x517b83=_[_0x411d('0x42')]({},_0x517b83,_0x5ce0f7[_0x411d('0x45')]);return db[_0x411d('0x30')]['find'](_0x517b83)['then'](handleEntityNotFound(_0xe0c975,null))['then'](respondWithResult(_0xe0c975,null))[_0x411d('0x4a')](handleError(_0xe0c975,null));};exports[_0x411d('0x4c')]=function(_0x26cc93,_0x4a8518){return db[_0x411d('0x30')]['create'](_0x26cc93[_0x411d('0x4d')],{})['then'](respondWithResult(_0x4a8518,0xc9))[_0x411d('0x4a')](handleError(_0x4a8518,null));};exports[_0x411d('0x29')]=function(_0x10a305,_0x3a6c76){if(_0x10a305[_0x411d('0x4d')]['id']){delete _0x10a305[_0x411d('0x4d')]['id'];}return db['DeskAccount'][_0x411d('0x4e')]({'where':{'id':_0x10a305[_0x411d('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3a6c76,null))[_0x411d('0x2a')](saveUpdates(_0x10a305[_0x411d('0x4d')],null))['then'](respondWithResult(_0x3a6c76,null))['catch'](handleError(_0x3a6c76,null));};exports[_0x411d('0x50')]=function(_0x26d942,_0x463bc6){return db[_0x411d('0x30')][_0x411d('0x4e')]({'where':{'id':_0x26d942[_0x411d('0x4f')]['id']}})['then'](handleEntityNotFound(_0x463bc6,null))[_0x411d('0x2a')](removeEntity(_0x463bc6,null))[_0x411d('0x4a')](handleError(_0x463bc6,null));};exports[_0x411d('0x51')]=function(_0xbc2cdc,_0x502613,_0x3c483a){var _0x3f6a3e={};var _0x197b1c={};var _0x4cf975;var _0x1e4535;return db[_0x411d('0x30')][_0x411d('0x52')]({'where':{'id':_0xbc2cdc[_0x411d('0x4f')]['id']}})[_0x411d('0x2a')](handleEntityNotFound(_0x502613,null))[_0x411d('0x2a')](function(_0x2824dc){if(_0x2824dc){_0x4cf975=_0x2824dc;_0x197b1c[_0x411d('0x33')]=_[_0x411d('0x36')](db[_0x411d('0x53')][_0x411d('0x4b')]);_0x197b1c[_0x411d('0x35')]=_[_0x411d('0x36')](_0xbc2cdc[_0x411d('0x35')]);_0x197b1c[_0x411d('0x3f')]=_[_0x411d('0x37')](_0x197b1c[_0x411d('0x33')],_0x197b1c[_0x411d('0x35')]);_0x3f6a3e[_0x411d('0x38')]=_['intersection'](_0x197b1c[_0x411d('0x33')],qs['fields'](_0xbc2cdc[_0x411d('0x35')][_0x411d('0x39')]));_0x3f6a3e[_0x411d('0x38')]=_0x3f6a3e['attributes'][_0x411d('0x3a')]?_0x3f6a3e[_0x411d('0x38')]:_0x197b1c['model'];_0x3f6a3e[_0x411d('0x54')]=qs[_0x411d('0x3d')](_0xbc2cdc['query'][_0x411d('0x3d')]);_0x3f6a3e[_0x411d('0x3e')]=qs[_0x411d('0x3f')](_['pick'](_0xbc2cdc[_0x411d('0x35')],_0x197b1c[_0x411d('0x3f')]));if(_0xbc2cdc[_0x411d('0x35')]['filter']){_0x3f6a3e['where']=_[_0x411d('0x42')](_0x3f6a3e[_0x411d('0x3e')],{'$or':_[_0x411d('0x34')](_0x3f6a3e['attributes'],function(_0xf9f6c9){var _0x485706={};_0x485706[_0xf9f6c9]={'$like':'%'+_0xbc2cdc[_0x411d('0x35')]['filter']+'%'};return _0x485706;})});}_0x3f6a3e=_['merge']({},_0x3f6a3e,_0xbc2cdc[_0x411d('0x45')]);return _0x4cf975[_0x411d('0x51')](_0x3f6a3e);}})['then'](function(_0x1afcab){if(_0x1afcab){_0x1e4535=_0x1afcab[_0x411d('0x3a')];if(!_0xbc2cdc[_0x411d('0x35')][_0x411d('0x3b')](_0x411d('0x3c'))){_0x3f6a3e[_0x411d('0x24')]=qs['limit'](_0xbc2cdc['query']['limit']);_0x3f6a3e[_0x411d('0x21')]=qs[_0x411d('0x21')](_0xbc2cdc[_0x411d('0x35')][_0x411d('0x21')]);}return _0x4cf975[_0x411d('0x51')](_0x3f6a3e);}})['then'](function(_0x32cd60){if(_0x32cd60){return _0x32cd60?{'count':_0x1e4535,'rows':_0x32cd60}:null;}})[_0x411d('0x2a')](respondWithResult(_0x502613,null))[_0x411d('0x4a')](handleError(_0x502613,null));};exports[_0x411d('0x55')]=function(_0x1e8df3,_0x59329e,_0x3f45d2){if(_0x1e8df3[_0x411d('0x4d')]['id']){delete _0x1e8df3['body']['id'];}return db['DeskAccount'][_0x411d('0x52')]({'where':{'id':_0x1e8df3[_0x411d('0x4f')]['id']}})[_0x411d('0x2a')](handleEntityNotFound(_0x59329e,null))[_0x411d('0x2a')](function(_0x588380){if(_0x588380){_0x1e8df3[_0x411d('0x4d')]['AccountId']=_0x588380['id'];_0x1e8df3[_0x411d('0x4d')][_0x411d('0x56')]=integrations[_0x411d('0x57')](_0x1e8df3[_0x411d('0x4d')][_0x411d('0x58')],_0x1e8df3[_0x411d('0x4d')][_0x411d('0x43')]);_0x1e8df3[_0x411d('0x4d')][_0x411d('0x59')]=integrations[_0x411d('0x5a')](_0x1e8df3['body'][_0x411d('0x58')],_0x1e8df3[_0x411d('0x4d')][_0x411d('0x43')]);return db[_0x411d('0x53')][_0x411d('0x4c')](_0x1e8df3[_0x411d('0x4d')],{'include':[{'model':db[_0x411d('0x5b')],'as':_0x411d('0x56')},{'model':db[_0x411d('0x5b')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x59329e,null))[_0x411d('0x4a')](handleError(_0x59329e,null));};exports['getFields']=function(_0x23439d,_0x2706c5,_0x82efb){var _0x263dc2=[{'name':_0x411d('0x5c'),'label':'priority','custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x43ef6c='';return db[_0x411d('0x30')][_0x411d('0x52')]({'where':{'id':_0x23439d[_0x411d('0x4f')]['id']},'attributes':['id','remoteUri',_0x411d('0x5d'),_0x411d('0x5e'),_0x411d('0x5f'),_0x411d('0x60'),_0x411d('0x61'),_0x411d('0x62'),_0x411d('0x63')]})['then'](handleEntityNotFound(_0x2706c5,null))[_0x411d('0x2a')](function(_0x5726e4){if(_0x5726e4){_0x43ef6c=_0x5726e4['remoteUri'];var _0x1b7208=_0x43ef6c[_0x411d('0x64')](-0x1);if(_0x1b7208==='/'){_0x43ef6c=_0x43ef6c[_0x411d('0x65')](0x0,_0x43ef6c[_0x411d('0x66')](_0x1b7208));}var _0x418752={'method':'GET','uri':util[_0x411d('0x67')](_0x411d('0x68'),_0x43ef6c),'headers':{'Content-Type':_0x411d('0x69'),'Accept':_0x411d('0x69')},'json':!![]};if(_0x5726e4[_0x411d('0x5d')]==='basic'){_0x418752['headers'][_0x411d('0x6a')]=util[_0x411d('0x67')]('Basic\x20%s',new Buffer(util[_0x411d('0x67')](_0x411d('0x6b'),_0x5726e4[_0x411d('0x5e')],_0x5726e4[_0x411d('0x5f')]))['toString'](_0x411d('0x6c')));}return rp(_0x418752)[_0x411d('0x2a')](function(_0x4e4562){return _0x263dc2[_0x411d('0x6d')](_[_0x411d('0x34')](_0x4e4562[_0x411d('0x6e')][_0x411d('0x6f')],function(_0x3dca0f){return{'id':_0x3dca0f[_0x411d('0x2e')],'name':_0x3dca0f[_0x411d('0x2e')],'type':_0x3dca0f['type'],'active':_0x3dca0f[_0x411d('0x70')],'label':_0x3dca0f[_0x411d('0x71')],'custom':!![]};}));});}})['then'](function(_0x11799c){return{'count':_0x11799c['length'],'rows':_0x11799c};})[_0x411d('0x2a')](respondWithResult(_0x2706c5,null))[_0x411d('0x4a')](function(_0x57ab81){var _0x77ff9a=_0x23439d[_0x411d('0x35')][_0x411d('0x72')]?0x1f4:_0x57ab81['statusCode']||0x1f4;logger[_0x411d('0x2c')](_0x411d('0x73'),'getFields',_0x77ff9a,JSON[_0x411d('0x74')](_0x57ab81));delete _0x57ab81[_0x411d('0x2e')];if(_0x77ff9a===0x191){_0x77ff9a=0x190;}_0x2706c5['status'](_0x77ff9a)['send'](_0x23439d[_0x411d('0x35')]['test']?{'message':_0x411d('0x75'),'statusCode':_0x57ab81[_0x411d('0x76')]}:_0x57ab81);});};
\ No newline at end of file
index d998d03..34cc2aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4639=['exports','define','DeskAccount','int_desk_accounts','lodash','api','moment','bluebird','rimraf','../../config/environment','./intDeskAccount.attributes'];(function(_0x157f06,_0xdb358){var _0x3b8d5e=function(_0x49e810){while(--_0x49e810){_0x157f06['push'](_0x157f06['shift']());}};_0x3b8d5e(++_0xdb358);}(_0x4639,0x16f));var _0x9463=function(_0x456200,_0x3d4c03){_0x456200=_0x456200-0x0;var _0x551f2e=_0x4639[_0x456200];return _0x551f2e;};'use strict';var _=require(_0x9463('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x9463('0x1'));var moment=require(_0x9463('0x2'));var BPromise=require(_0x9463('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x9463('0x4'));var config=require(_0x9463('0x5'));var attributes=require(_0x9463('0x6'));var integrations=require('../../components/integrations/configuration');module[_0x9463('0x7')]=function(_0x22e30e,_0x100940){return _0x22e30e[_0x9463('0x8')](_0x9463('0x9'),attributes,{'tableName':_0x9463('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x85a2=['../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','define','DeskAccount','int_desk_accounts','lodash','util'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x85a2,0x1ec));var _0x285a=function(_0x3f3613,_0x482e34){_0x3f3613=_0x3f3613-0x0;var _0x2119b3=_0x85a2[_0x3f3613];return _0x2119b3;};'use strict';var _=require(_0x285a('0x0'));var util=require(_0x285a('0x1'));var logger=require(_0x285a('0x2'))('api');var moment=require(_0x285a('0x3'));var BPromise=require(_0x285a('0x4'));var rp=require(_0x285a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x285a('0x6'));var config=require(_0x285a('0x7'));var attributes=require(_0x285a('0x8'));var integrations=require(_0x285a('0x9'));module['exports']=function(_0x45e1c7,_0xa3b700){return _0x45e1c7[_0x285a('0xa')](_0x285a('0xb'),attributes,{'tableName':_0x285a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5bdc85d..2465a28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33f5=['request','then','info','DeskAccount,\x20%s,\x20%s','debug','DeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','DeskAccount','findAll','options','raw','where','attributes','limit','include','model','map','stringify','GetDeskAccount','ShowDeskAccount','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http'];(function(_0x4a1f4b,_0x5abacb){var _0x6fe8a8=function(_0xce889e){while(--_0xce889e){_0x4a1f4b['push'](_0x4a1f4b['shift']());}};_0x6fe8a8(++_0x5abacb);}(_0x33f5,0x1f4));var _0x533f=function(_0xfbe9d9,_0xf858f0){_0xfbe9d9=_0xfbe9d9-0x0;var _0x2fc180=_0x33f5[_0xfbe9d9];return _0x2fc180;};'use strict';var _=require(_0x533f('0x0'));var util=require('util');var moment=require(_0x533f('0x1'));var BPromise=require('bluebird');var rs=require(_0x533f('0x2'));var fs=require('fs');var Redis=require(_0x533f('0x3'));var db=require(_0x533f('0x4'))['db'];var utils=require(_0x533f('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x533f('0x6'));var jayson=require(_0x533f('0x7'));var client=jayson[_0x533f('0x8')][_0x533f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x13ed66,_0x1b7e57,_0x369b1a){return new BPromise(function(_0x2b0734,_0x5ee069){return client[_0x533f('0xa')](_0x13ed66,_0x369b1a)[_0x533f('0xb')](function(_0x17f258){logger[_0x533f('0xc')](_0x533f('0xd'),_0x1b7e57,'request\x20sent');logger[_0x533f('0xe')](_0x533f('0xf'),_0x1b7e57,_0x533f('0x10'),JSON['stringify'](_0x17f258));if(_0x17f258[_0x533f('0x11')]){if(_0x17f258['error'][_0x533f('0x12')]===0x1f4){logger[_0x533f('0x11')]('DeskAccount,\x20%s,\x20%s',_0x1b7e57,_0x17f258[_0x533f('0x11')]['message']);return _0x5ee069(_0x17f258[_0x533f('0x11')][_0x533f('0x13')]);}logger[_0x533f('0x11')](_0x533f('0xd'),_0x1b7e57,_0x17f258['error']['message']);return _0x2b0734(_0x17f258[_0x533f('0x11')][_0x533f('0x13')]);}else{logger[_0x533f('0xc')](_0x533f('0xd'),_0x1b7e57,'request\x20sent');_0x2b0734(_0x17f258['result'][_0x533f('0x13')]);}})[_0x533f('0x14')](function(_0x3e0b09){logger[_0x533f('0x11')](_0x533f('0xd'),_0x1b7e57,_0x3e0b09);_0x5ee069(_0x3e0b09);});});}exports['GetDeskAccount']=function(_0xf2185){var _0x5aab72=this;return new Promise(function(_0x556c80,_0x477c55){return db[_0x533f('0x15')][_0x533f('0x16')]({'raw':_0xf2185[_0x533f('0x17')]?_0xf2185[_0x533f('0x17')][_0x533f('0x18')]===undefined?!![]:![]:!![],'where':_0xf2185[_0x533f('0x17')]?_0xf2185['options'][_0x533f('0x19')]||null:null,'attributes':_0xf2185['options']?_0xf2185[_0x533f('0x17')][_0x533f('0x1a')]||null:null,'limit':_0xf2185[_0x533f('0x17')]?_0xf2185[_0x533f('0x17')][_0x533f('0x1b')]||null:null,'include':_0xf2185[_0x533f('0x17')]?_0xf2185[_0x533f('0x17')][_0x533f('0x1c')]?_['map'](_0xf2185['options'][_0x533f('0x1c')],function(_0x22c00f){return{'model':db[_0x22c00f[_0x533f('0x1d')]],'as':_0x22c00f['as'],'attributes':_0x22c00f['attributes'],'include':_0x22c00f[_0x533f('0x1c')]?_[_0x533f('0x1e')](_0x22c00f[_0x533f('0x1c')],function(_0x17b014){return{'model':db[_0x17b014[_0x533f('0x1d')]],'as':_0x17b014['as'],'attributes':_0x17b014[_0x533f('0x1a')],'include':_0x17b014[_0x533f('0x1c')]?_['map'](_0x17b014[_0x533f('0x1c')],function(_0x4dbb0e){return{'model':db[_0x4dbb0e[_0x533f('0x1d')]],'as':_0x4dbb0e['as'],'attributes':_0x4dbb0e['attributes']};}):[]};}):[]};}):[]:[]})[_0x533f('0xb')](function(_0x1401cd){logger[_0x533f('0xc')]('GetDeskAccount',_0xf2185);logger['debug']('GetDeskAccount',_0xf2185,JSON[_0x533f('0x1f')](_0x1401cd));_0x556c80(_0x1401cd);})['catch'](function(_0x5994b0){logger[_0x533f('0x11')](_0x533f('0x20'),_0x5994b0[_0x533f('0x13')],_0xf2185);_0x477c55(_0x5aab72[_0x533f('0x11')](0x1f4,_0x5994b0['message']));});});};exports[_0x533f('0x21')]=function(_0x5937ba){var _0x14dcde=this;return new Promise(function(_0x225b77,_0x24a1b5){return db['DeskAccount']['find']({'raw':_0x5937ba[_0x533f('0x17')]?_0x5937ba[_0x533f('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x5937ba['options']?_0x5937ba[_0x533f('0x17')][_0x533f('0x19')]||null:null,'attributes':_0x5937ba[_0x533f('0x17')]?_0x5937ba[_0x533f('0x17')][_0x533f('0x1a')]||null:null,'include':_0x5937ba[_0x533f('0x17')]?_0x5937ba['options']['include']?_[_0x533f('0x1e')](_0x5937ba[_0x533f('0x17')]['include'],function(_0x4b0b66){return{'model':db[_0x4b0b66[_0x533f('0x1d')]],'as':_0x4b0b66['as'],'attributes':_0x4b0b66[_0x533f('0x1a')],'include':_0x4b0b66['include']?_[_0x533f('0x1e')](_0x4b0b66[_0x533f('0x1c')],function(_0x32ac13){return{'model':db[_0x32ac13[_0x533f('0x1d')]],'as':_0x32ac13['as'],'attributes':_0x32ac13['attributes'],'include':_0x32ac13[_0x533f('0x1c')]?_[_0x533f('0x1e')](_0x32ac13[_0x533f('0x1c')],function(_0x207827){return{'model':db[_0x207827[_0x533f('0x1d')]],'as':_0x207827['as'],'attributes':_0x207827[_0x533f('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4dc115){logger['info'](_0x533f('0x21'),_0x5937ba);logger['debug'](_0x533f('0x21'),_0x5937ba,JSON['stringify'](_0x4dc115));_0x225b77(_0x4dc115);})[_0x533f('0x14')](function(_0x1b5055){logger[_0x533f('0x11')](_0x533f('0x21'),_0x1b5055['message'],_0x5937ba);_0x24a1b5(_0x14dcde[_0x533f('0x11')](0x1f4,_0x1b5055[_0x533f('0x13')]));});});};
\ No newline at end of file
+var _0xf448=['catch','GetDeskAccount','DeskAccount','findAll','options','raw','where','attributes','limit','include','model','map','ShowDeskAccount','find','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x1ac98f,_0x1a96b0){var _0x9d0e7=function(_0x50a405){while(--_0x50a405){_0x1ac98f['push'](_0x1ac98f['shift']());}};_0x9d0e7(++_0x1a96b0);}(_0xf448,0xa2));var _0x8f44=function(_0x4a9433,_0x5337cb){_0x4a9433=_0x4a9433-0x0;var _0x434947=_0xf448[_0x4a9433];return _0x434947;};'use strict';var _=require(_0x8f44('0x0'));var util=require(_0x8f44('0x1'));var moment=require('moment');var BPromise=require(_0x8f44('0x2'));var rs=require(_0x8f44('0x3'));var fs=require('fs');var Redis=require(_0x8f44('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8f44('0x5'));var logger=require(_0x8f44('0x6'))(_0x8f44('0x7'));var config=require(_0x8f44('0x8'));var jayson=require(_0x8f44('0x9'));var client=jayson[_0x8f44('0xa')][_0x8f44('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x27b67e,_0x413ca4,_0x46da16){return new BPromise(function(_0x5bffe1,_0x7ea9ad){return client[_0x8f44('0xc')](_0x27b67e,_0x46da16)[_0x8f44('0xd')](function(_0x36814c){logger[_0x8f44('0xe')](_0x8f44('0xf'),_0x413ca4,_0x8f44('0x10'));logger[_0x8f44('0x11')](_0x8f44('0x12'),_0x413ca4,_0x8f44('0x10'),JSON[_0x8f44('0x13')](_0x36814c));if(_0x36814c[_0x8f44('0x14')]){if(_0x36814c[_0x8f44('0x14')][_0x8f44('0x15')]===0x1f4){logger[_0x8f44('0x14')](_0x8f44('0xf'),_0x413ca4,_0x36814c[_0x8f44('0x14')][_0x8f44('0x16')]);return _0x7ea9ad(_0x36814c[_0x8f44('0x14')][_0x8f44('0x16')]);}logger[_0x8f44('0x14')](_0x8f44('0xf'),_0x413ca4,_0x36814c[_0x8f44('0x14')][_0x8f44('0x16')]);return _0x5bffe1(_0x36814c['error'][_0x8f44('0x16')]);}else{logger['info'](_0x8f44('0xf'),_0x413ca4,_0x8f44('0x10'));_0x5bffe1(_0x36814c['result'][_0x8f44('0x16')]);}})[_0x8f44('0x17')](function(_0x56896b){logger[_0x8f44('0x14')]('DeskAccount,\x20%s,\x20%s',_0x413ca4,_0x56896b);_0x7ea9ad(_0x56896b);});});}exports[_0x8f44('0x18')]=function(_0x5286d7){var _0x15458c=this;return new Promise(function(_0x6bec36,_0x5ab419){return db[_0x8f44('0x19')][_0x8f44('0x1a')]({'raw':_0x5286d7['options']?_0x5286d7[_0x8f44('0x1b')][_0x8f44('0x1c')]===undefined?!![]:![]:!![],'where':_0x5286d7[_0x8f44('0x1b')]?_0x5286d7[_0x8f44('0x1b')][_0x8f44('0x1d')]||null:null,'attributes':_0x5286d7[_0x8f44('0x1b')]?_0x5286d7[_0x8f44('0x1b')][_0x8f44('0x1e')]||null:null,'limit':_0x5286d7[_0x8f44('0x1b')]?_0x5286d7['options'][_0x8f44('0x1f')]||null:null,'include':_0x5286d7[_0x8f44('0x1b')]?_0x5286d7[_0x8f44('0x1b')]['include']?_['map'](_0x5286d7[_0x8f44('0x1b')][_0x8f44('0x20')],function(_0xd25af3){return{'model':db[_0xd25af3[_0x8f44('0x21')]],'as':_0xd25af3['as'],'attributes':_0xd25af3['attributes'],'include':_0xd25af3[_0x8f44('0x20')]?_[_0x8f44('0x22')](_0xd25af3['include'],function(_0x31e6fe){return{'model':db[_0x31e6fe[_0x8f44('0x21')]],'as':_0x31e6fe['as'],'attributes':_0x31e6fe['attributes'],'include':_0x31e6fe[_0x8f44('0x20')]?_[_0x8f44('0x22')](_0x31e6fe[_0x8f44('0x20')],function(_0x190cc6){return{'model':db[_0x190cc6[_0x8f44('0x21')]],'as':_0x190cc6['as'],'attributes':_0x190cc6[_0x8f44('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x8f44('0xd')](function(_0x2de932){logger[_0x8f44('0xe')](_0x8f44('0x18'),_0x5286d7);logger['debug'](_0x8f44('0x18'),_0x5286d7,JSON[_0x8f44('0x13')](_0x2de932));_0x6bec36(_0x2de932);})[_0x8f44('0x17')](function(_0x235f64){logger[_0x8f44('0x14')](_0x8f44('0x18'),_0x235f64['message'],_0x5286d7);_0x5ab419(_0x15458c[_0x8f44('0x14')](0x1f4,_0x235f64[_0x8f44('0x16')]));});});};exports[_0x8f44('0x23')]=function(_0x1f7568){var _0x4bc8a1=this;return new Promise(function(_0x3ef679,_0x188788){return db[_0x8f44('0x19')][_0x8f44('0x24')]({'raw':_0x1f7568[_0x8f44('0x1b')]?_0x1f7568[_0x8f44('0x1b')][_0x8f44('0x1c')]===undefined?!![]:![]:!![],'where':_0x1f7568[_0x8f44('0x1b')]?_0x1f7568[_0x8f44('0x1b')][_0x8f44('0x1d')]||null:null,'attributes':_0x1f7568[_0x8f44('0x1b')]?_0x1f7568[_0x8f44('0x1b')][_0x8f44('0x1e')]||null:null,'include':_0x1f7568[_0x8f44('0x1b')]?_0x1f7568['options'][_0x8f44('0x20')]?_[_0x8f44('0x22')](_0x1f7568[_0x8f44('0x1b')][_0x8f44('0x20')],function(_0x30088c){return{'model':db[_0x30088c['model']],'as':_0x30088c['as'],'attributes':_0x30088c['attributes'],'include':_0x30088c['include']?_['map'](_0x30088c['include'],function(_0x5d28ae){return{'model':db[_0x5d28ae[_0x8f44('0x21')]],'as':_0x5d28ae['as'],'attributes':_0x5d28ae[_0x8f44('0x1e')],'include':_0x5d28ae[_0x8f44('0x20')]?_[_0x8f44('0x22')](_0x5d28ae[_0x8f44('0x20')],function(_0x28e7e9){return{'model':db[_0x28e7e9[_0x8f44('0x21')]],'as':_0x28e7e9['as'],'attributes':_0x28e7e9['attributes']};}):[]};}):[]};}):[]:[]})[_0x8f44('0xd')](function(_0x4f3166){logger[_0x8f44('0xe')]('ShowDeskAccount',_0x1f7568);logger['debug']('ShowDeskAccount',_0x1f7568,JSON[_0x8f44('0x13')](_0x4f3166));_0x3ef679(_0x4f3166);})[_0x8f44('0x17')](function(_0x4dbf07){logger['error'](_0x8f44('0x23'),_0x4dbf07['message'],_0x1f7568);_0x188788(_0x4bc8a1[_0x8f44('0x14')](0x1f4,_0x4dbf07['message']));});});};
\ No newline at end of file
index 49309f2..331f393 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intDeskConfiguration.controller','isAuthenticated','index','get','/:id','/:id/fields','getFields','getSubjects','/:id/descriptions','/:id/tags','post','setTags','put','update'];(function(_0x3486e3,_0x4aa5f3){var _0x497a88=function(_0x289504){while(--_0x289504){_0x3486e3['push'](_0x3486e3['shift']());}};_0x497a88(++_0x4aa5f3);}(_0x9c44,0x178));var _0x49c4=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0x9c44[_0x255d5b];return _0x3e141a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x49c4('0x6'));router['get']('/',auth[_0x49c4('0x7')](),controller[_0x49c4('0x8')]);router[_0x49c4('0x9')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller['show']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['get']('/:id/subjects',auth[_0x49c4('0x7')](),controller[_0x49c4('0xd')]);router['get'](_0x49c4('0xe'),auth[_0x49c4('0x7')](),controller['getDescriptions']);router['get'](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller['getTags']);router[_0x49c4('0x10')]('/',auth[_0x49c4('0x7')](),controller['create']);router[_0x49c4('0x10')](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x11')]);router[_0x49c4('0x12')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x13')]);router['delete'](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);module[_0x49c4('0x15')]=router;
\ No newline at end of file
+var _0x55ca=['../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','setTags','put','/:id','update','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service'];(function(_0x506d2f,_0x5ab76e){var _0x101255=function(_0x1596b1){while(--_0x1596b1){_0x506d2f['push'](_0x506d2f['shift']());}};_0x101255(++_0x5ab76e);}(_0x55ca,0x126));var _0xa55c=function(_0x1b51ea,_0x394fd9){_0x1b51ea=_0x1b51ea-0x0;var _0x18bbdc=_0x55ca[_0x1b51ea];return _0x18bbdc;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['getFields']);router['get'](_0xa55c('0xc'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xd')]);router[_0xa55c('0x7')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);router[_0xa55c('0x7')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller['getTags']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/tags',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router['delete'](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x15')]);module[_0xa55c('0x16')]=router;
\ No newline at end of file
index c0dba1d..ebdb888 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6c3=['sequelize','exports','STRING'];(function(_0xcd9cd7,_0x4db42b){var _0x2fba9f=function(_0x2cf775){while(--_0x2cf775){_0xcd9cd7['push'](_0xcd9cd7['shift']());}};_0x2fba9f(++_0x4db42b);}(_0xb6c3,0xe1));var _0x3b6c=function(_0x267d92,_0x121afd){_0x267d92=_0x267d92-0x0;var _0x2503b2=_0xb6c3[_0x267d92];return _0x2503b2;};'use strict';var Sequelize=require(_0x3b6c('0x0'));module[_0x3b6c('0x1')]={'name':{'type':Sequelize[_0x3b6c('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf7c5=['exports','STRING','sequelize'];(function(_0xea8947,_0x1b573d){var _0x2455e9=function(_0x18771e){while(--_0x18771e){_0xea8947['push'](_0xea8947['shift']());}};_0x2455e9(++_0x1b573d);}(_0xf7c5,0x1cd));var _0x5f7c=function(_0x3f6c29,_0x370d86){_0x3f6c29=_0x3f6c29-0x0;var _0x4af959=_0xf7c5[_0x3f6c29];return _0x4af959;};'use strict';var Sequelize=require(_0x5f7c('0x0'));module[_0x5f7c('0x1')]={'name':{'type':Sequelize[_0x5f7c('0x2')]},'description':{'type':Sequelize[_0x5f7c('0x2')]}};
\ No newline at end of file
index f88f731..669a7dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13bc=['then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','DeskConfiguration','includeAll','include','findAll','rows','show','params','find','create','catch','body','getFields','findOne','DeskField','hasOwnProperty','getSubjects','getDescriptions','Tag','getTags','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','Content-Range','json','apply','reject','update'];(function(_0x3fba9f,_0x3b7b9b){var _0x192cf1=function(_0x557290){while(--_0x557290){_0x3fba9f['push'](_0x3fba9f['shift']());}};_0x192cf1(++_0x3b7b9b);}(_0x13bc,0xe0));var _0xc13b=function(_0x42b678,_0x38ee8b){_0x42b678=_0x42b678-0x0;var _0x102def=_0x13bc[_0x42b678];return _0x102def;};'use strict';var emlformat=require(_0xc13b('0x0'));var rimraf=require(_0xc13b('0x1'));var zipdir=require(_0xc13b('0x2'));var jsonpatch=require(_0xc13b('0x3'));var rp=require(_0xc13b('0x4'));var moment=require(_0xc13b('0x5'));var BPromise=require(_0xc13b('0x6'));var Mustache=require(_0xc13b('0x7'));var util=require(_0xc13b('0x8'));var path=require(_0xc13b('0x9'));var sox=require(_0xc13b('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc13b('0xb'));var _=require('lodash');var squel=require(_0xc13b('0xc'));var crypto=require('crypto');var jsforce=require(_0xc13b('0xd'));var deskjs=require(_0xc13b('0xe'));var toCsv=require(_0xc13b('0xf'));var querystring=require('querystring');var Papa=require(_0xc13b('0x10'));var Redis=require(_0xc13b('0x11'));var authService=require(_0xc13b('0x12'));var qs=require(_0xc13b('0x13'));var as=require(_0xc13b('0x14'));var hardwareService=require(_0xc13b('0x15'));var logger=require(_0xc13b('0x16'))(_0xc13b('0x17'));var utils=require(_0xc13b('0x18'));var config=require(_0xc13b('0x19'));var licenseUtil=require(_0xc13b('0x1a'));var db=require(_0xc13b('0x1b'))['db'];function respondWithStatusCode(_0x7f82d3,_0x3a6388){_0x3a6388=_0x3a6388||0xcc;return function(_0x578e42){if(_0x578e42){return _0x7f82d3[_0xc13b('0x1c')](_0x3a6388);}return _0x7f82d3['status'](_0x3a6388)[_0xc13b('0x1d')]();};}function respondWithResult(_0x1d3a04,_0x323ff2){_0x323ff2=_0x323ff2||0xc8;return function(_0x213802){if(_0x213802){return _0x1d3a04[_0xc13b('0x1e')](_0x323ff2)['json'](_0x213802);}};}function respondWithFilteredResult(_0x51112f,_0x251321){return function(_0x4348fb){if(_0x4348fb){var _0x485a17=typeof _0x251321[_0xc13b('0x1f')]==='undefined'&&typeof _0x251321[_0xc13b('0x20')]===_0xc13b('0x21');var _0x5245af=_0x4348fb[_0xc13b('0x22')];var _0x35ea78=_0x485a17?0x0:_0x251321[_0xc13b('0x1f')];var _0x50e033=_0x485a17?_0x4348fb['count']:_0x251321[_0xc13b('0x1f')]+_0x251321[_0xc13b('0x20')];var _0x53a9f5;if(_0x50e033>=_0x5245af){_0x50e033=_0x5245af;_0x53a9f5=0xc8;}else{_0x53a9f5=0xce;}_0x51112f[_0xc13b('0x1e')](_0x53a9f5);return _0x51112f['set'](_0xc13b('0x23'),_0x35ea78+'-'+_0x50e033+'/'+_0x5245af)[_0xc13b('0x24')](_0x4348fb);}return null;};}function patchUpdates(_0x3dd124){return function(_0x5bed48){try{jsonpatch[_0xc13b('0x25')](_0x5bed48,_0x3dd124,!![]);}catch(_0x6ff231){return BPromise[_0xc13b('0x26')](_0x6ff231);}return _0x5bed48['save']();};}function saveUpdates(_0x20193e,_0x2079a2){return function(_0x420109){if(_0x420109){return _0x420109[_0xc13b('0x27')](_0x20193e)[_0xc13b('0x28')](function(_0x2ac9aa){return _0x2ac9aa;});}return null;};}function removeEntity(_0x316cb2,_0x29cec0){return function(_0x3c3235){if(_0x3c3235){return _0x3c3235[_0xc13b('0x29')]()[_0xc13b('0x28')](function(){_0x316cb2[_0xc13b('0x1e')](0xcc)[_0xc13b('0x1d')]();});}};}function handleEntityNotFound(_0x316e1f,_0x296621){return function(_0x6c533d){if(!_0x6c533d){_0x316e1f[_0xc13b('0x1c')](0x194);}return _0x6c533d;};}function handleError(_0x5e5029,_0x349cef){_0x349cef=_0x349cef||0x1f4;return function(_0x2b834f){logger[_0xc13b('0x2a')](_0x2b834f['stack']);if(_0x2b834f[_0xc13b('0x2b')]){delete _0x2b834f[_0xc13b('0x2b')];}_0x5e5029[_0xc13b('0x1e')](_0x349cef)[_0xc13b('0x2c')](_0x2b834f);};}exports[_0xc13b('0x2d')]=function(_0x1feba9,_0xde98a){var _0x4259d1={},_0x3930ac={},_0x598bf9={'count':0x0,'rows':[]};var _0x2df36a=_[_0xc13b('0x2e')](db['DeskConfiguration'][_0xc13b('0x2f')],function(_0x32c6aa){return{'name':_0x32c6aa[_0xc13b('0x30')],'type':_0x32c6aa[_0xc13b('0x31')]['key']};});_0x3930ac[_0xc13b('0x32')]=_[_0xc13b('0x2e')](_0x2df36a,_0xc13b('0x2b'));_0x3930ac[_0xc13b('0x33')]=_[_0xc13b('0x34')](_0x1feba9[_0xc13b('0x33')]);_0x3930ac['filters']=_[_0xc13b('0x35')](_0x3930ac[_0xc13b('0x32')],_0x3930ac[_0xc13b('0x33')]);_0x4259d1[_0xc13b('0x36')]=_[_0xc13b('0x35')](_0x3930ac[_0xc13b('0x32')],qs[_0xc13b('0x37')](_0x1feba9[_0xc13b('0x33')][_0xc13b('0x37')]));_0x4259d1[_0xc13b('0x36')]=_0x4259d1[_0xc13b('0x36')][_0xc13b('0x38')]?_0x4259d1[_0xc13b('0x36')]:_0x3930ac[_0xc13b('0x32')];if(!_0x1feba9[_0xc13b('0x33')]['hasOwnProperty'](_0xc13b('0x39'))){_0x4259d1[_0xc13b('0x20')]=qs[_0xc13b('0x20')](_0x1feba9[_0xc13b('0x33')][_0xc13b('0x20')]);_0x4259d1[_0xc13b('0x1f')]=qs['offset'](_0x1feba9[_0xc13b('0x33')]['offset']);}_0x4259d1[_0xc13b('0x3a')]=qs[_0xc13b('0x3b')](_0x1feba9[_0xc13b('0x33')]['sort']);_0x4259d1[_0xc13b('0x3c')]=qs[_0xc13b('0x3d')](_[_0xc13b('0x3e')](_0x1feba9[_0xc13b('0x33')],_0x3930ac[_0xc13b('0x3d')]),_0x2df36a);if(_0x1feba9[_0xc13b('0x33')][_0xc13b('0x3f')]){_0x4259d1[_0xc13b('0x3c')]=_['merge'](_0x4259d1[_0xc13b('0x3c')],{'$or':_[_0xc13b('0x2e')](_0x2df36a,function(_0x46124f){if(_0x46124f[_0xc13b('0x31')]!==_0xc13b('0x40')){var _0xe58b94={};_0xe58b94[_0x46124f[_0xc13b('0x2b')]]={'$like':'%'+_0x1feba9['query'][_0xc13b('0x3f')]+'%'};return _0xe58b94;}})});}_0x4259d1=_[_0xc13b('0x41')]({},_0x4259d1,_0x1feba9[_0xc13b('0x42')]);var _0x34852a={'where':_0x4259d1[_0xc13b('0x3c')]};return db[_0xc13b('0x43')][_0xc13b('0x22')](_0x34852a)[_0xc13b('0x28')](function(_0x327c97){_0x598bf9[_0xc13b('0x22')]=_0x327c97;if(_0x1feba9['query'][_0xc13b('0x44')]){_0x4259d1[_0xc13b('0x45')]=[{'all':!![]}];}return db[_0xc13b('0x43')][_0xc13b('0x46')](_0x4259d1);})[_0xc13b('0x28')](function(_0x214c58){_0x598bf9[_0xc13b('0x47')]=_0x214c58;return _0x598bf9;})[_0xc13b('0x28')](respondWithFilteredResult(_0xde98a,_0x4259d1))['catch'](handleError(_0xde98a,null));};exports[_0xc13b('0x48')]=function(_0x241cc4,_0x3a531c){var _0x3b8296={'raw':![],'where':{'id':_0x241cc4[_0xc13b('0x49')]['id']}},_0x11382e={};_0x11382e[_0xc13b('0x32')]=_[_0xc13b('0x34')](db[_0xc13b('0x43')][_0xc13b('0x2f')]);_0x11382e[_0xc13b('0x33')]=_[_0xc13b('0x34')](_0x241cc4[_0xc13b('0x33')]);_0x11382e[_0xc13b('0x3d')]=_[_0xc13b('0x35')](_0x11382e['model'],_0x11382e[_0xc13b('0x33')]);_0x3b8296[_0xc13b('0x36')]=_[_0xc13b('0x35')](_0x11382e[_0xc13b('0x32')],qs[_0xc13b('0x37')](_0x241cc4[_0xc13b('0x33')][_0xc13b('0x37')]));_0x3b8296['attributes']=_0x3b8296[_0xc13b('0x36')]['length']?_0x3b8296[_0xc13b('0x36')]:_0x11382e['model'];if(_0x241cc4[_0xc13b('0x33')]['includeAll']){_0x3b8296[_0xc13b('0x45')]=[{'all':!![]}];}_0x3b8296=_[_0xc13b('0x41')]({},_0x3b8296,_0x241cc4[_0xc13b('0x42')]);return db[_0xc13b('0x43')][_0xc13b('0x4a')](_0x3b8296)[_0xc13b('0x28')](handleEntityNotFound(_0x3a531c,null))[_0xc13b('0x28')](respondWithResult(_0x3a531c,null))['catch'](handleError(_0x3a531c,null));};exports['create']=function(_0x43a513,_0x2896e7){return db['DeskConfiguration'][_0xc13b('0x4b')](_0x43a513['body'],{})[_0xc13b('0x28')](respondWithResult(_0x2896e7,0xc9))[_0xc13b('0x4c')](handleError(_0x2896e7,null));};exports[_0xc13b('0x27')]=function(_0x38ba64,_0x17f3be){if(_0x38ba64[_0xc13b('0x4d')]['id']){delete _0x38ba64[_0xc13b('0x4d')]['id'];}return db['DeskConfiguration'][_0xc13b('0x4a')]({'where':{'id':_0x38ba64[_0xc13b('0x49')]['id']}})[_0xc13b('0x28')](handleEntityNotFound(_0x17f3be,null))[_0xc13b('0x28')](saveUpdates(_0x38ba64[_0xc13b('0x4d')],null))[_0xc13b('0x28')](respondWithResult(_0x17f3be,null))[_0xc13b('0x4c')](handleError(_0x17f3be,null));};exports[_0xc13b('0x29')]=function(_0x320c3d,_0x5d231d){return db[_0xc13b('0x43')]['find']({'where':{'id':_0x320c3d[_0xc13b('0x49')]['id']}})[_0xc13b('0x28')](handleEntityNotFound(_0x5d231d,null))[_0xc13b('0x28')](removeEntity(_0x5d231d,null))['catch'](handleError(_0x5d231d,null));};exports[_0xc13b('0x4e')]=function(_0x1b7c2d,_0x2587c1,_0x41b17a){var _0x382189={};var _0x21ea37={};var _0x3d4971;var _0x56ae73;return db[_0xc13b('0x43')][_0xc13b('0x4f')]({'where':{'id':_0x1b7c2d[_0xc13b('0x49')]['id']}})[_0xc13b('0x28')](handleEntityNotFound(_0x2587c1,null))[_0xc13b('0x28')](function(_0x3dd6c0){if(_0x3dd6c0){_0x3d4971=_0x3dd6c0;_0x21ea37['model']=_[_0xc13b('0x34')](db[_0xc13b('0x50')]['rawAttributes']);_0x21ea37[_0xc13b('0x33')]=_['keys'](_0x1b7c2d[_0xc13b('0x33')]);_0x21ea37[_0xc13b('0x3d')]=_[_0xc13b('0x35')](_0x21ea37['model'],_0x21ea37[_0xc13b('0x33')]);_0x382189[_0xc13b('0x36')]=_[_0xc13b('0x35')](_0x21ea37['model'],qs['fields'](_0x1b7c2d[_0xc13b('0x33')][_0xc13b('0x37')]));_0x382189[_0xc13b('0x36')]=_0x382189[_0xc13b('0x36')]['length']?_0x382189[_0xc13b('0x36')]:_0x21ea37['model'];_0x382189['order']=qs['sort'](_0x1b7c2d[_0xc13b('0x33')]['sort']);_0x382189[_0xc13b('0x3c')]=qs[_0xc13b('0x3d')](_[_0xc13b('0x3e')](_0x1b7c2d['query'],_0x21ea37[_0xc13b('0x3d')]));if(_0x1b7c2d[_0xc13b('0x33')][_0xc13b('0x3f')]){_0x382189[_0xc13b('0x3c')]=_[_0xc13b('0x41')](_0x382189[_0xc13b('0x3c')],{'$or':_['map'](_0x382189[_0xc13b('0x36')],function(_0x5174c2){var _0x37e0f7={};_0x37e0f7[_0x5174c2]={'$like':'%'+_0x1b7c2d[_0xc13b('0x33')]['filter']+'%'};return _0x37e0f7;})});}_0x382189=_[_0xc13b('0x41')]({},_0x382189,_0x1b7c2d[_0xc13b('0x42')]);return _0x3d4971[_0xc13b('0x4e')](_0x382189);}})[_0xc13b('0x28')](function(_0x4583bf){if(_0x4583bf){_0x56ae73=_0x4583bf[_0xc13b('0x38')];if(!_0x1b7c2d[_0xc13b('0x33')][_0xc13b('0x51')](_0xc13b('0x39'))){_0x382189['limit']=qs[_0xc13b('0x20')](_0x1b7c2d[_0xc13b('0x33')][_0xc13b('0x20')]);_0x382189[_0xc13b('0x1f')]=qs[_0xc13b('0x1f')](_0x1b7c2d[_0xc13b('0x33')][_0xc13b('0x1f')]);}return _0x3d4971['getFields'](_0x382189);}})[_0xc13b('0x28')](function(_0x2147e5){if(_0x2147e5){return _0x2147e5?{'count':_0x56ae73,'rows':_0x2147e5}:null;}})['then'](respondWithResult(_0x2587c1,null))[_0xc13b('0x4c')](handleError(_0x2587c1,null));};exports[_0xc13b('0x52')]=function(_0xa8ed1c,_0x286890,_0x3fc8aa){var _0xa7c102={};var _0x5ebaa1={};var _0x26580b;var _0x302b27;return db[_0xc13b('0x43')]['findOne']({'where':{'id':_0xa8ed1c[_0xc13b('0x49')]['id']}})[_0xc13b('0x28')](handleEntityNotFound(_0x286890,null))['then'](function(_0x4c4c5c){if(_0x4c4c5c){_0x26580b=_0x4c4c5c;_0x5ebaa1['model']=_[_0xc13b('0x34')](db[_0xc13b('0x50')]['rawAttributes']);_0x5ebaa1[_0xc13b('0x33')]=_[_0xc13b('0x34')](_0xa8ed1c['query']);_0x5ebaa1[_0xc13b('0x3d')]=_[_0xc13b('0x35')](_0x5ebaa1['model'],_0x5ebaa1['query']);_0xa7c102[_0xc13b('0x36')]=_[_0xc13b('0x35')](_0x5ebaa1[_0xc13b('0x32')],qs[_0xc13b('0x37')](_0xa8ed1c[_0xc13b('0x33')][_0xc13b('0x37')]));_0xa7c102[_0xc13b('0x36')]=_0xa7c102['attributes']['length']?_0xa7c102[_0xc13b('0x36')]:_0x5ebaa1['model'];_0xa7c102[_0xc13b('0x3a')]=qs[_0xc13b('0x3b')](_0xa8ed1c[_0xc13b('0x33')][_0xc13b('0x3b')]);_0xa7c102[_0xc13b('0x3c')]=qs[_0xc13b('0x3d')](_['pick'](_0xa8ed1c['query'],_0x5ebaa1[_0xc13b('0x3d')]));if(_0xa8ed1c[_0xc13b('0x33')][_0xc13b('0x3f')]){_0xa7c102['where']=_['merge'](_0xa7c102[_0xc13b('0x3c')],{'$or':_[_0xc13b('0x2e')](_0xa7c102[_0xc13b('0x36')],function(_0x35b50d){var _0x4f7970={};_0x4f7970[_0x35b50d]={'$like':'%'+_0xa8ed1c['query'][_0xc13b('0x3f')]+'%'};return _0x4f7970;})});}_0xa7c102=_[_0xc13b('0x41')]({},_0xa7c102,_0xa8ed1c[_0xc13b('0x42')]);return _0x26580b[_0xc13b('0x52')](_0xa7c102);}})[_0xc13b('0x28')](function(_0x3a48f1){if(_0x3a48f1){_0x302b27=_0x3a48f1['length'];if(!_0xa8ed1c[_0xc13b('0x33')][_0xc13b('0x51')](_0xc13b('0x39'))){_0xa7c102[_0xc13b('0x20')]=qs['limit'](_0xa8ed1c[_0xc13b('0x33')]['limit']);_0xa7c102[_0xc13b('0x1f')]=qs[_0xc13b('0x1f')](_0xa8ed1c[_0xc13b('0x33')][_0xc13b('0x1f')]);}return _0x26580b['getSubjects'](_0xa7c102);}})[_0xc13b('0x28')](function(_0x1dfee5){if(_0x1dfee5){return _0x1dfee5?{'count':_0x302b27,'rows':_0x1dfee5}:null;}})['then'](respondWithResult(_0x286890,null))[_0xc13b('0x4c')](handleError(_0x286890,null));};exports[_0xc13b('0x53')]=function(_0x5ec399,_0x1bea89,_0x55bdb9){var _0x43b1f4={};var _0x5de99b={};var _0x3cb8a5;var _0x77e911;return db[_0xc13b('0x43')][_0xc13b('0x4f')]({'where':{'id':_0x5ec399[_0xc13b('0x49')]['id']}})[_0xc13b('0x28')](handleEntityNotFound(_0x1bea89,null))[_0xc13b('0x28')](function(_0x2a8d0a){if(_0x2a8d0a){_0x3cb8a5=_0x2a8d0a;_0x5de99b[_0xc13b('0x32')]=_[_0xc13b('0x34')](db[_0xc13b('0x50')][_0xc13b('0x2f')]);_0x5de99b[_0xc13b('0x33')]=_[_0xc13b('0x34')](_0x5ec399[_0xc13b('0x33')]);_0x5de99b['filters']=_[_0xc13b('0x35')](_0x5de99b[_0xc13b('0x32')],_0x5de99b[_0xc13b('0x33')]);_0x43b1f4[_0xc13b('0x36')]=_[_0xc13b('0x35')](_0x5de99b[_0xc13b('0x32')],qs[_0xc13b('0x37')](_0x5ec399[_0xc13b('0x33')][_0xc13b('0x37')]));_0x43b1f4[_0xc13b('0x36')]=_0x43b1f4[_0xc13b('0x36')][_0xc13b('0x38')]?_0x43b1f4[_0xc13b('0x36')]:_0x5de99b[_0xc13b('0x32')];_0x43b1f4['order']=qs[_0xc13b('0x3b')](_0x5ec399['query'][_0xc13b('0x3b')]);_0x43b1f4['where']=qs[_0xc13b('0x3d')](_[_0xc13b('0x3e')](_0x5ec399[_0xc13b('0x33')],_0x5de99b[_0xc13b('0x3d')]));if(_0x5ec399[_0xc13b('0x33')]['filter']){_0x43b1f4[_0xc13b('0x3c')]=_[_0xc13b('0x41')](_0x43b1f4[_0xc13b('0x3c')],{'$or':_[_0xc13b('0x2e')](_0x43b1f4['attributes'],function(_0x270b19){var _0x4bf2eb={};_0x4bf2eb[_0x270b19]={'$like':'%'+_0x5ec399[_0xc13b('0x33')][_0xc13b('0x3f')]+'%'};return _0x4bf2eb;})});}_0x43b1f4=_[_0xc13b('0x41')]({},_0x43b1f4,_0x5ec399[_0xc13b('0x42')]);return _0x3cb8a5[_0xc13b('0x53')](_0x43b1f4);}})['then'](function(_0x29d42c){if(_0x29d42c){_0x77e911=_0x29d42c[_0xc13b('0x38')];if(!_0x5ec399[_0xc13b('0x33')]['hasOwnProperty']('nolimit')){_0x43b1f4[_0xc13b('0x20')]=qs[_0xc13b('0x20')](_0x5ec399[_0xc13b('0x33')][_0xc13b('0x20')]);_0x43b1f4[_0xc13b('0x1f')]=qs[_0xc13b('0x1f')](_0x5ec399[_0xc13b('0x33')][_0xc13b('0x1f')]);}return _0x3cb8a5['getDescriptions'](_0x43b1f4);}})[_0xc13b('0x28')](function(_0x1c7dbf){if(_0x1c7dbf){return _0x1c7dbf?{'count':_0x77e911,'rows':_0x1c7dbf}:null;}})[_0xc13b('0x28')](respondWithResult(_0x1bea89,null))[_0xc13b('0x4c')](handleError(_0x1bea89,null));};exports['getTags']=function(_0x4d09c6,_0x218e0e,_0x509147){var _0x5a6371={};var _0xddaa80={};var _0x20040f;var _0x54d397;return db['DeskConfiguration'][_0xc13b('0x4f')]({'where':{'id':_0x4d09c6[_0xc13b('0x49')]['id']}})['then'](handleEntityNotFound(_0x218e0e,null))[_0xc13b('0x28')](function(_0x38dc8a){if(_0x38dc8a){_0x20040f=_0x38dc8a;_0xddaa80[_0xc13b('0x32')]=_[_0xc13b('0x34')](db[_0xc13b('0x54')][_0xc13b('0x2f')]);_0xddaa80[_0xc13b('0x33')]=_[_0xc13b('0x34')](_0x4d09c6['query']);_0xddaa80[_0xc13b('0x3d')]=_['intersection'](_0xddaa80[_0xc13b('0x32')],_0xddaa80[_0xc13b('0x33')]);_0x5a6371[_0xc13b('0x36')]=_['intersection'](_0xddaa80[_0xc13b('0x32')],qs[_0xc13b('0x37')](_0x4d09c6[_0xc13b('0x33')][_0xc13b('0x37')]));_0x5a6371['attributes']=_0x5a6371[_0xc13b('0x36')][_0xc13b('0x38')]?_0x5a6371[_0xc13b('0x36')]:_0xddaa80[_0xc13b('0x32')];_0x5a6371['order']=qs[_0xc13b('0x3b')](_0x4d09c6['query'][_0xc13b('0x3b')]);_0x5a6371[_0xc13b('0x3c')]=qs[_0xc13b('0x3d')](_[_0xc13b('0x3e')](_0x4d09c6[_0xc13b('0x33')],_0xddaa80[_0xc13b('0x3d')]));if(_0x4d09c6[_0xc13b('0x33')][_0xc13b('0x3f')]){_0x5a6371[_0xc13b('0x3c')]=_[_0xc13b('0x41')](_0x5a6371['where'],{'$or':_[_0xc13b('0x2e')](_0x5a6371['attributes'],function(_0x32d26e){var _0x37e5c6={};_0x37e5c6[_0x32d26e]={'$like':'%'+_0x4d09c6[_0xc13b('0x33')]['filter']+'%'};return _0x37e5c6;})});}_0x5a6371=_[_0xc13b('0x41')]({},_0x5a6371,_0x4d09c6[_0xc13b('0x42')]);return _0x20040f[_0xc13b('0x55')](_0x5a6371);}})[_0xc13b('0x28')](function(_0x575572){if(_0x575572){_0x54d397=_0x575572[_0xc13b('0x38')];if(!_0x4d09c6['query'][_0xc13b('0x51')]('nolimit')){_0x5a6371[_0xc13b('0x20')]=qs[_0xc13b('0x20')](_0x4d09c6[_0xc13b('0x33')][_0xc13b('0x20')]);_0x5a6371['offset']=qs[_0xc13b('0x1f')](_0x4d09c6[_0xc13b('0x33')][_0xc13b('0x1f')]);}return _0x20040f[_0xc13b('0x55')](_0x5a6371);}})[_0xc13b('0x28')](function(_0x599d68){if(_0x599d68){return _0x599d68?{'count':_0x54d397,'rows':_0x599d68}:null;}})[_0xc13b('0x28')](respondWithResult(_0x218e0e,null))[_0xc13b('0x4c')](handleError(_0x218e0e,null));};exports[_0xc13b('0x56')]=function(_0x4fba59,_0x238048,_0x10885a){if(_0x4fba59[_0xc13b('0x4d')]['id']){delete _0x4fba59['body']['id'];}return db[_0xc13b('0x43')][_0xc13b('0x4f')]({'where':{'id':_0x4fba59['params']['id']}})[_0xc13b('0x28')](handleEntityNotFound(_0x238048,null))[_0xc13b('0x28')](function(_0x3ff97d){if(_0x3ff97d){return _0x3ff97d[_0xc13b('0x56')](_0x4fba59[_0xc13b('0x4d')][_0xc13b('0x57')]||[]);}return null;})['then'](respondWithResult(_0x238048,null))[_0xc13b('0x4c')](handleError(_0x238048,null));};
\ No newline at end of file
+var _0x6fd8=['body','find','getFields','findOne','DeskField','sort','nolimit','getSubjects','order','getDescriptions','getTags','Tag','setTags','ids','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','desk.js','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','DeskConfiguration','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','show','params','catch','create'];(function(_0x3f2c1c,_0x4f182b){var _0x391934=function(_0x5f2742){while(--_0x5f2742){_0x3f2c1c['push'](_0x3f2c1c['shift']());}};_0x391934(++_0x4f182b);}(_0x6fd8,0x1f4));var _0x86fd=function(_0x1b544c,_0x37a7a0){_0x1b544c=_0x1b544c-0x0;var _0x44e150=_0x6fd8[_0x1b544c];return _0x44e150;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x86fd('0x0'));var zipdir=require(_0x86fd('0x1'));var jsonpatch=require(_0x86fd('0x2'));var rp=require(_0x86fd('0x3'));var moment=require('moment');var BPromise=require(_0x86fd('0x4'));var Mustache=require(_0x86fd('0x5'));var util=require(_0x86fd('0x6'));var path=require('path');var sox=require(_0x86fd('0x7'));var csv=require(_0x86fd('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x86fd('0x9'));var _=require(_0x86fd('0xa'));var squel=require(_0x86fd('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x86fd('0xc'));var toCsv=require(_0x86fd('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x86fd('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x86fd('0xe'))(_0x86fd('0xf'));var utils=require('../../config/utils');var config=require(_0x86fd('0x10'));var licenseUtil=require(_0x86fd('0x11'));var db=require(_0x86fd('0x12'))['db'];function respondWithStatusCode(_0xedfd92,_0x18ae77){_0x18ae77=_0x18ae77||0xcc;return function(_0x3bb76d){if(_0x3bb76d){return _0xedfd92['sendStatus'](_0x18ae77);}return _0xedfd92[_0x86fd('0x13')](_0x18ae77)[_0x86fd('0x14')]();};}function respondWithResult(_0x32180c,_0x162999){_0x162999=_0x162999||0xc8;return function(_0x1165f9){if(_0x1165f9){return _0x32180c[_0x86fd('0x13')](_0x162999)[_0x86fd('0x15')](_0x1165f9);}};}function respondWithFilteredResult(_0x5f22ed,_0x364642){return function(_0x595f43){if(_0x595f43){var _0x62b475=typeof _0x364642[_0x86fd('0x16')]===_0x86fd('0x17')&&typeof _0x364642[_0x86fd('0x18')]===_0x86fd('0x17');var _0x51a393=_0x595f43[_0x86fd('0x19')];var _0x1976c4=_0x62b475?0x0:_0x364642[_0x86fd('0x16')];var _0x13eccf=_0x62b475?_0x595f43['count']:_0x364642[_0x86fd('0x16')]+_0x364642[_0x86fd('0x18')];var _0x380db6;if(_0x13eccf>=_0x51a393){_0x13eccf=_0x51a393;_0x380db6=0xc8;}else{_0x380db6=0xce;}_0x5f22ed['status'](_0x380db6);return _0x5f22ed[_0x86fd('0x1a')](_0x86fd('0x1b'),_0x1976c4+'-'+_0x13eccf+'/'+_0x51a393)['json'](_0x595f43);}return null;};}function patchUpdates(_0x4f9d52){return function(_0x5e360a){try{jsonpatch[_0x86fd('0x1c')](_0x5e360a,_0x4f9d52,!![]);}catch(_0x527f7a){return BPromise[_0x86fd('0x1d')](_0x527f7a);}return _0x5e360a[_0x86fd('0x1e')]();};}function saveUpdates(_0xb6bb60,_0x437be7){return function(_0xbd626c){if(_0xbd626c){return _0xbd626c[_0x86fd('0x1f')](_0xb6bb60)[_0x86fd('0x20')](function(_0x2a3229){return _0x2a3229;});}return null;};}function removeEntity(_0x5d9b9c,_0xd1d1aa){return function(_0x5ee98b){if(_0x5ee98b){return _0x5ee98b[_0x86fd('0x21')]()[_0x86fd('0x20')](function(){_0x5d9b9c[_0x86fd('0x13')](0xcc)[_0x86fd('0x14')]();});}};}function handleEntityNotFound(_0x2180a6,_0x42ce26){return function(_0x3c1525){if(!_0x3c1525){_0x2180a6[_0x86fd('0x22')](0x194);}return _0x3c1525;};}function handleError(_0x5f069c,_0x4b939a){_0x4b939a=_0x4b939a||0x1f4;return function(_0x8b175b){logger[_0x86fd('0x23')](_0x8b175b[_0x86fd('0x24')]);if(_0x8b175b['name']){delete _0x8b175b[_0x86fd('0x25')];}_0x5f069c['status'](_0x4b939a)[_0x86fd('0x26')](_0x8b175b);};}exports['index']=function(_0xe3e3a6,_0x226eb8){var _0x17ff8a={},_0x53fa86={},_0x1c1091={'count':0x0,'rows':[]};var _0x5b7a25=_[_0x86fd('0x27')](db[_0x86fd('0x28')][_0x86fd('0x29')],function(_0x1ec2c4){return{'name':_0x1ec2c4[_0x86fd('0x2a')],'type':_0x1ec2c4[_0x86fd('0x2b')][_0x86fd('0x2c')]};});_0x53fa86[_0x86fd('0x2d')]=_[_0x86fd('0x27')](_0x5b7a25,_0x86fd('0x25'));_0x53fa86['query']=_[_0x86fd('0x2e')](_0xe3e3a6['query']);_0x53fa86[_0x86fd('0x2f')]=_[_0x86fd('0x30')](_0x53fa86[_0x86fd('0x2d')],_0x53fa86[_0x86fd('0x31')]);_0x17ff8a['attributes']=_[_0x86fd('0x30')](_0x53fa86['model'],qs[_0x86fd('0x32')](_0xe3e3a6[_0x86fd('0x31')]['fields']));_0x17ff8a['attributes']=_0x17ff8a[_0x86fd('0x33')][_0x86fd('0x34')]?_0x17ff8a['attributes']:_0x53fa86[_0x86fd('0x2d')];if(!_0xe3e3a6[_0x86fd('0x31')][_0x86fd('0x35')]('nolimit')){_0x17ff8a[_0x86fd('0x18')]=qs[_0x86fd('0x18')](_0xe3e3a6[_0x86fd('0x31')][_0x86fd('0x18')]);_0x17ff8a[_0x86fd('0x16')]=qs[_0x86fd('0x16')](_0xe3e3a6[_0x86fd('0x31')][_0x86fd('0x16')]);}_0x17ff8a['order']=qs['sort'](_0xe3e3a6[_0x86fd('0x31')]['sort']);_0x17ff8a[_0x86fd('0x36')]=qs[_0x86fd('0x2f')](_[_0x86fd('0x37')](_0xe3e3a6[_0x86fd('0x31')],_0x53fa86[_0x86fd('0x2f')]),_0x5b7a25);if(_0xe3e3a6[_0x86fd('0x31')][_0x86fd('0x38')]){_0x17ff8a[_0x86fd('0x36')]=_[_0x86fd('0x39')](_0x17ff8a[_0x86fd('0x36')],{'$or':_[_0x86fd('0x27')](_0x5b7a25,function(_0x2e1e95){if(_0x2e1e95[_0x86fd('0x2b')]!==_0x86fd('0x3a')){var _0x5b8e59={};_0x5b8e59[_0x2e1e95[_0x86fd('0x25')]]={'$like':'%'+_0xe3e3a6[_0x86fd('0x31')]['filter']+'%'};return _0x5b8e59;}})});}_0x17ff8a=_[_0x86fd('0x39')]({},_0x17ff8a,_0xe3e3a6[_0x86fd('0x3b')]);var _0x1c2899={'where':_0x17ff8a[_0x86fd('0x36')]};return db[_0x86fd('0x28')]['count'](_0x1c2899)['then'](function(_0x25dd34){_0x1c1091[_0x86fd('0x19')]=_0x25dd34;if(_0xe3e3a6[_0x86fd('0x31')][_0x86fd('0x3c')]){_0x17ff8a[_0x86fd('0x3d')]=[{'all':!![]}];}return db[_0x86fd('0x28')]['findAll'](_0x17ff8a);})[_0x86fd('0x20')](function(_0x2ae41b){_0x1c1091[_0x86fd('0x3e')]=_0x2ae41b;return _0x1c1091;})[_0x86fd('0x20')](respondWithFilteredResult(_0x226eb8,_0x17ff8a))['catch'](handleError(_0x226eb8,null));};exports[_0x86fd('0x3f')]=function(_0x2c9a31,_0x2aac04){var _0x2428a9={'raw':![],'where':{'id':_0x2c9a31[_0x86fd('0x40')]['id']}},_0x549d69={};_0x549d69[_0x86fd('0x2d')]=_['keys'](db['DeskConfiguration'][_0x86fd('0x29')]);_0x549d69[_0x86fd('0x31')]=_[_0x86fd('0x2e')](_0x2c9a31[_0x86fd('0x31')]);_0x549d69['filters']=_[_0x86fd('0x30')](_0x549d69[_0x86fd('0x2d')],_0x549d69[_0x86fd('0x31')]);_0x2428a9[_0x86fd('0x33')]=_[_0x86fd('0x30')](_0x549d69['model'],qs[_0x86fd('0x32')](_0x2c9a31[_0x86fd('0x31')][_0x86fd('0x32')]));_0x2428a9['attributes']=_0x2428a9[_0x86fd('0x33')]['length']?_0x2428a9[_0x86fd('0x33')]:_0x549d69[_0x86fd('0x2d')];if(_0x2c9a31[_0x86fd('0x31')][_0x86fd('0x3c')]){_0x2428a9[_0x86fd('0x3d')]=[{'all':!![]}];}_0x2428a9=_['merge']({},_0x2428a9,_0x2c9a31['options']);return db[_0x86fd('0x28')]['find'](_0x2428a9)[_0x86fd('0x20')](handleEntityNotFound(_0x2aac04,null))[_0x86fd('0x20')](respondWithResult(_0x2aac04,null))[_0x86fd('0x41')](handleError(_0x2aac04,null));};exports[_0x86fd('0x42')]=function(_0x33421a,_0x27758f){return db[_0x86fd('0x28')][_0x86fd('0x42')](_0x33421a[_0x86fd('0x43')],{})[_0x86fd('0x20')](respondWithResult(_0x27758f,0xc9))[_0x86fd('0x41')](handleError(_0x27758f,null));};exports[_0x86fd('0x1f')]=function(_0x3a6d82,_0x24a1bf){if(_0x3a6d82['body']['id']){delete _0x3a6d82[_0x86fd('0x43')]['id'];}return db['DeskConfiguration']['find']({'where':{'id':_0x3a6d82[_0x86fd('0x40')]['id']}})[_0x86fd('0x20')](handleEntityNotFound(_0x24a1bf,null))[_0x86fd('0x20')](saveUpdates(_0x3a6d82[_0x86fd('0x43')],null))[_0x86fd('0x20')](respondWithResult(_0x24a1bf,null))[_0x86fd('0x41')](handleError(_0x24a1bf,null));};exports[_0x86fd('0x21')]=function(_0xf548d2,_0x50caa5){return db[_0x86fd('0x28')][_0x86fd('0x44')]({'where':{'id':_0xf548d2[_0x86fd('0x40')]['id']}})[_0x86fd('0x20')](handleEntityNotFound(_0x50caa5,null))[_0x86fd('0x20')](removeEntity(_0x50caa5,null))[_0x86fd('0x41')](handleError(_0x50caa5,null));};exports[_0x86fd('0x45')]=function(_0x3026e2,_0xdbbe97,_0x5b2830){var _0x57e146={};var _0x590125={};var _0x55ce5c;var _0x8d9dbc;return db['DeskConfiguration'][_0x86fd('0x46')]({'where':{'id':_0x3026e2['params']['id']}})[_0x86fd('0x20')](handleEntityNotFound(_0xdbbe97,null))[_0x86fd('0x20')](function(_0x2ec4b2){if(_0x2ec4b2){_0x55ce5c=_0x2ec4b2;_0x590125[_0x86fd('0x2d')]=_[_0x86fd('0x2e')](db[_0x86fd('0x47')][_0x86fd('0x29')]);_0x590125[_0x86fd('0x31')]=_[_0x86fd('0x2e')](_0x3026e2[_0x86fd('0x31')]);_0x590125[_0x86fd('0x2f')]=_[_0x86fd('0x30')](_0x590125[_0x86fd('0x2d')],_0x590125[_0x86fd('0x31')]);_0x57e146['attributes']=_[_0x86fd('0x30')](_0x590125['model'],qs['fields'](_0x3026e2[_0x86fd('0x31')]['fields']));_0x57e146[_0x86fd('0x33')]=_0x57e146[_0x86fd('0x33')]['length']?_0x57e146[_0x86fd('0x33')]:_0x590125[_0x86fd('0x2d')];_0x57e146['order']=qs['sort'](_0x3026e2[_0x86fd('0x31')][_0x86fd('0x48')]);_0x57e146['where']=qs[_0x86fd('0x2f')](_[_0x86fd('0x37')](_0x3026e2[_0x86fd('0x31')],_0x590125[_0x86fd('0x2f')]));if(_0x3026e2['query'][_0x86fd('0x38')]){_0x57e146[_0x86fd('0x36')]=_[_0x86fd('0x39')](_0x57e146['where'],{'$or':_[_0x86fd('0x27')](_0x57e146[_0x86fd('0x33')],function(_0x12ffc3){var _0x4b8753={};_0x4b8753[_0x12ffc3]={'$like':'%'+_0x3026e2[_0x86fd('0x31')][_0x86fd('0x38')]+'%'};return _0x4b8753;})});}_0x57e146=_[_0x86fd('0x39')]({},_0x57e146,_0x3026e2[_0x86fd('0x3b')]);return _0x55ce5c[_0x86fd('0x45')](_0x57e146);}})[_0x86fd('0x20')](function(_0xf98c86){if(_0xf98c86){_0x8d9dbc=_0xf98c86['length'];if(!_0x3026e2[_0x86fd('0x31')][_0x86fd('0x35')](_0x86fd('0x49'))){_0x57e146['limit']=qs['limit'](_0x3026e2[_0x86fd('0x31')][_0x86fd('0x18')]);_0x57e146[_0x86fd('0x16')]=qs[_0x86fd('0x16')](_0x3026e2[_0x86fd('0x31')][_0x86fd('0x16')]);}return _0x55ce5c[_0x86fd('0x45')](_0x57e146);}})[_0x86fd('0x20')](function(_0x32658b){if(_0x32658b){return _0x32658b?{'count':_0x8d9dbc,'rows':_0x32658b}:null;}})[_0x86fd('0x20')](respondWithResult(_0xdbbe97,null))[_0x86fd('0x41')](handleError(_0xdbbe97,null));};exports[_0x86fd('0x4a')]=function(_0xb0445b,_0x5debc1,_0x32bca4){var _0x1705c6={};var _0x49bfa3={};var _0x85f726;var _0x109ccd;return db['DeskConfiguration'][_0x86fd('0x46')]({'where':{'id':_0xb0445b[_0x86fd('0x40')]['id']}})[_0x86fd('0x20')](handleEntityNotFound(_0x5debc1,null))[_0x86fd('0x20')](function(_0x24cc88){if(_0x24cc88){_0x85f726=_0x24cc88;_0x49bfa3['model']=_[_0x86fd('0x2e')](db['DeskField'][_0x86fd('0x29')]);_0x49bfa3[_0x86fd('0x31')]=_[_0x86fd('0x2e')](_0xb0445b[_0x86fd('0x31')]);_0x49bfa3[_0x86fd('0x2f')]=_['intersection'](_0x49bfa3['model'],_0x49bfa3[_0x86fd('0x31')]);_0x1705c6[_0x86fd('0x33')]=_[_0x86fd('0x30')](_0x49bfa3[_0x86fd('0x2d')],qs[_0x86fd('0x32')](_0xb0445b[_0x86fd('0x31')]['fields']));_0x1705c6[_0x86fd('0x33')]=_0x1705c6[_0x86fd('0x33')][_0x86fd('0x34')]?_0x1705c6[_0x86fd('0x33')]:_0x49bfa3[_0x86fd('0x2d')];_0x1705c6[_0x86fd('0x4b')]=qs[_0x86fd('0x48')](_0xb0445b[_0x86fd('0x31')][_0x86fd('0x48')]);_0x1705c6['where']=qs[_0x86fd('0x2f')](_[_0x86fd('0x37')](_0xb0445b[_0x86fd('0x31')],_0x49bfa3[_0x86fd('0x2f')]));if(_0xb0445b['query'][_0x86fd('0x38')]){_0x1705c6[_0x86fd('0x36')]=_['merge'](_0x1705c6[_0x86fd('0x36')],{'$or':_[_0x86fd('0x27')](_0x1705c6['attributes'],function(_0x35fcdf){var _0x4321e3={};_0x4321e3[_0x35fcdf]={'$like':'%'+_0xb0445b[_0x86fd('0x31')][_0x86fd('0x38')]+'%'};return _0x4321e3;})});}_0x1705c6=_[_0x86fd('0x39')]({},_0x1705c6,_0xb0445b[_0x86fd('0x3b')]);return _0x85f726[_0x86fd('0x4a')](_0x1705c6);}})['then'](function(_0x53e590){if(_0x53e590){_0x109ccd=_0x53e590[_0x86fd('0x34')];if(!_0xb0445b[_0x86fd('0x31')]['hasOwnProperty'](_0x86fd('0x49'))){_0x1705c6[_0x86fd('0x18')]=qs[_0x86fd('0x18')](_0xb0445b[_0x86fd('0x31')][_0x86fd('0x18')]);_0x1705c6[_0x86fd('0x16')]=qs[_0x86fd('0x16')](_0xb0445b[_0x86fd('0x31')][_0x86fd('0x16')]);}return _0x85f726[_0x86fd('0x4a')](_0x1705c6);}})['then'](function(_0x4a2e4e){if(_0x4a2e4e){return _0x4a2e4e?{'count':_0x109ccd,'rows':_0x4a2e4e}:null;}})[_0x86fd('0x20')](respondWithResult(_0x5debc1,null))['catch'](handleError(_0x5debc1,null));};exports[_0x86fd('0x4c')]=function(_0x5675e7,_0x201356,_0x38ffc3){var _0x3e5209={};var _0x255802={};var _0x11ec61;var _0x278968;return db[_0x86fd('0x28')]['findOne']({'where':{'id':_0x5675e7[_0x86fd('0x40')]['id']}})[_0x86fd('0x20')](handleEntityNotFound(_0x201356,null))[_0x86fd('0x20')](function(_0x593603){if(_0x593603){_0x11ec61=_0x593603;_0x255802[_0x86fd('0x2d')]=_[_0x86fd('0x2e')](db[_0x86fd('0x47')][_0x86fd('0x29')]);_0x255802[_0x86fd('0x31')]=_[_0x86fd('0x2e')](_0x5675e7[_0x86fd('0x31')]);_0x255802[_0x86fd('0x2f')]=_[_0x86fd('0x30')](_0x255802[_0x86fd('0x2d')],_0x255802[_0x86fd('0x31')]);_0x3e5209[_0x86fd('0x33')]=_['intersection'](_0x255802[_0x86fd('0x2d')],qs[_0x86fd('0x32')](_0x5675e7['query'][_0x86fd('0x32')]));_0x3e5209[_0x86fd('0x33')]=_0x3e5209[_0x86fd('0x33')]['length']?_0x3e5209[_0x86fd('0x33')]:_0x255802['model'];_0x3e5209[_0x86fd('0x4b')]=qs['sort'](_0x5675e7[_0x86fd('0x31')][_0x86fd('0x48')]);_0x3e5209[_0x86fd('0x36')]=qs[_0x86fd('0x2f')](_[_0x86fd('0x37')](_0x5675e7['query'],_0x255802[_0x86fd('0x2f')]));if(_0x5675e7[_0x86fd('0x31')][_0x86fd('0x38')]){_0x3e5209[_0x86fd('0x36')]=_[_0x86fd('0x39')](_0x3e5209['where'],{'$or':_[_0x86fd('0x27')](_0x3e5209[_0x86fd('0x33')],function(_0x18913d){var _0x3c6017={};_0x3c6017[_0x18913d]={'$like':'%'+_0x5675e7[_0x86fd('0x31')][_0x86fd('0x38')]+'%'};return _0x3c6017;})});}_0x3e5209=_[_0x86fd('0x39')]({},_0x3e5209,_0x5675e7[_0x86fd('0x3b')]);return _0x11ec61[_0x86fd('0x4c')](_0x3e5209);}})[_0x86fd('0x20')](function(_0x11cf9d){if(_0x11cf9d){_0x278968=_0x11cf9d[_0x86fd('0x34')];if(!_0x5675e7[_0x86fd('0x31')]['hasOwnProperty'](_0x86fd('0x49'))){_0x3e5209[_0x86fd('0x18')]=qs['limit'](_0x5675e7['query'][_0x86fd('0x18')]);_0x3e5209[_0x86fd('0x16')]=qs[_0x86fd('0x16')](_0x5675e7[_0x86fd('0x31')][_0x86fd('0x16')]);}return _0x11ec61[_0x86fd('0x4c')](_0x3e5209);}})[_0x86fd('0x20')](function(_0x434fc9){if(_0x434fc9){return _0x434fc9?{'count':_0x278968,'rows':_0x434fc9}:null;}})[_0x86fd('0x20')](respondWithResult(_0x201356,null))['catch'](handleError(_0x201356,null));};exports[_0x86fd('0x4d')]=function(_0x38d182,_0x42989a,_0x26d746){var _0x43480a={};var _0x4b66d3={};var _0x1d7459;var _0xf718cd;return db['DeskConfiguration'][_0x86fd('0x46')]({'where':{'id':_0x38d182[_0x86fd('0x40')]['id']}})[_0x86fd('0x20')](handleEntityNotFound(_0x42989a,null))['then'](function(_0x386e61){if(_0x386e61){_0x1d7459=_0x386e61;_0x4b66d3[_0x86fd('0x2d')]=_[_0x86fd('0x2e')](db[_0x86fd('0x4e')][_0x86fd('0x29')]);_0x4b66d3[_0x86fd('0x31')]=_[_0x86fd('0x2e')](_0x38d182[_0x86fd('0x31')]);_0x4b66d3['filters']=_['intersection'](_0x4b66d3[_0x86fd('0x2d')],_0x4b66d3[_0x86fd('0x31')]);_0x43480a['attributes']=_[_0x86fd('0x30')](_0x4b66d3[_0x86fd('0x2d')],qs['fields'](_0x38d182[_0x86fd('0x31')]['fields']));_0x43480a[_0x86fd('0x33')]=_0x43480a[_0x86fd('0x33')][_0x86fd('0x34')]?_0x43480a['attributes']:_0x4b66d3[_0x86fd('0x2d')];_0x43480a[_0x86fd('0x4b')]=qs[_0x86fd('0x48')](_0x38d182[_0x86fd('0x31')][_0x86fd('0x48')]);_0x43480a[_0x86fd('0x36')]=qs['filters'](_[_0x86fd('0x37')](_0x38d182[_0x86fd('0x31')],_0x4b66d3[_0x86fd('0x2f')]));if(_0x38d182['query'][_0x86fd('0x38')]){_0x43480a[_0x86fd('0x36')]=_[_0x86fd('0x39')](_0x43480a[_0x86fd('0x36')],{'$or':_[_0x86fd('0x27')](_0x43480a[_0x86fd('0x33')],function(_0xef1a06){var _0x296004={};_0x296004[_0xef1a06]={'$like':'%'+_0x38d182['query']['filter']+'%'};return _0x296004;})});}_0x43480a=_[_0x86fd('0x39')]({},_0x43480a,_0x38d182['options']);return _0x1d7459[_0x86fd('0x4d')](_0x43480a);}})[_0x86fd('0x20')](function(_0x5da5ec){if(_0x5da5ec){_0xf718cd=_0x5da5ec[_0x86fd('0x34')];if(!_0x38d182[_0x86fd('0x31')]['hasOwnProperty'](_0x86fd('0x49'))){_0x43480a[_0x86fd('0x18')]=qs[_0x86fd('0x18')](_0x38d182[_0x86fd('0x31')][_0x86fd('0x18')]);_0x43480a[_0x86fd('0x16')]=qs[_0x86fd('0x16')](_0x38d182['query']['offset']);}return _0x1d7459['getTags'](_0x43480a);}})[_0x86fd('0x20')](function(_0x3dd615){if(_0x3dd615){return _0x3dd615?{'count':_0xf718cd,'rows':_0x3dd615}:null;}})[_0x86fd('0x20')](respondWithResult(_0x42989a,null))['catch'](handleError(_0x42989a,null));};exports[_0x86fd('0x4f')]=function(_0x22d712,_0x462ecc,_0x15fdcd){if(_0x22d712[_0x86fd('0x43')]['id']){delete _0x22d712[_0x86fd('0x43')]['id'];}return db[_0x86fd('0x28')]['findOne']({'where':{'id':_0x22d712['params']['id']}})['then'](handleEntityNotFound(_0x462ecc,null))[_0x86fd('0x20')](function(_0xe21d7){if(_0xe21d7){return _0xe21d7[_0x86fd('0x4f')](_0x22d712[_0x86fd('0x43')][_0x86fd('0x50')]||[]);}return null;})[_0x86fd('0x20')](respondWithResult(_0x462ecc,null))[_0x86fd('0x41')](handleError(_0x462ecc,null));};
\ No newline at end of file
index 3c31ccc..1df0feb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3527=['bluebird','request-promise','path','rimraf','../../config/environment','DeskConfiguration','util','../../config/logger','moment'];(function(_0x539e26,_0x7e8591){var _0x55398e=function(_0x4da9ab){while(--_0x4da9ab){_0x539e26['push'](_0x539e26['shift']());}};_0x55398e(++_0x7e8591);}(_0x3527,0xd5));var _0x7352=function(_0x5317b5,_0x4dfd6e){_0x5317b5=_0x5317b5-0x0;var _0x3b7ce2=_0x3527[_0x5317b5];return _0x3b7ce2;};'use strict';var _=require('lodash');var util=require(_0x7352('0x0'));var logger=require(_0x7352('0x1'))('api');var moment=require(_0x7352('0x2'));var BPromise=require(_0x7352('0x3'));var rp=require(_0x7352('0x4'));var fs=require('fs');var path=require(_0x7352('0x5'));var rimraf=require(_0x7352('0x6'));var config=require(_0x7352('0x7'));var attributes=require('./intDeskConfiguration.attributes');module['exports']=function(_0x5bfc52,_0x1bf23e){return _0x5bfc52['define'](_0x7352('0x8'),attributes,{'tableName':'int_desk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0601=['./intDeskConfiguration.attributes','DeskConfiguration','lodash','util','../../config/logger','bluebird','../../config/environment'];(function(_0x4d9df9,_0x2cedef){var _0x726884=function(_0x4d8876){while(--_0x4d8876){_0x4d9df9['push'](_0x4d9df9['shift']());}};_0x726884(++_0x2cedef);}(_0x0601,0x6b));var _0x1060=function(_0x17dcd1,_0x3b7ccb){_0x17dcd1=_0x17dcd1-0x0;var _0x12af77=_0x0601[_0x17dcd1];return _0x12af77;};'use strict';var _=require(_0x1060('0x0'));var util=require(_0x1060('0x1'));var logger=require(_0x1060('0x2'))('api');var moment=require('moment');var BPromise=require(_0x1060('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1060('0x4'));var attributes=require(_0x1060('0x5'));module['exports']=function(_0x9813e,_0x2af69e){return _0x9813e['define'](_0x1060('0x6'),attributes,{'tableName':'int_desk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6ab1837..19e2af1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f0e=['debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','request','then','info','DeskConfiguration,\x20%s,\x20%s'];(function(_0x5c2092,_0x1f699c){var _0x13aa9d=function(_0x50c84a){while(--_0x50c84a){_0x5c2092['push'](_0x5c2092['shift']());}};_0x13aa9d(++_0x1f699c);}(_0x9f0e,0x8d));var _0xe9f0=function(_0x470e37,_0x123d4b){_0x470e37=_0x470e37-0x0;var _0x12f059=_0x9f0e[_0x470e37];return _0x12f059;};'use strict';var _=require(_0xe9f0('0x0'));var util=require('util');var moment=require(_0xe9f0('0x1'));var BPromise=require(_0xe9f0('0x2'));var rs=require(_0xe9f0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe9f0('0x4'))['db'];var utils=require(_0xe9f0('0x5'));var logger=require(_0xe9f0('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xe9f0('0x7'));var client=jayson[_0xe9f0('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x554383,_0x3829ef,_0xf31581){return new BPromise(function(_0x404707,_0x19afa8){return client[_0xe9f0('0x9')](_0x554383,_0xf31581)[_0xe9f0('0xa')](function(_0xebf170){logger[_0xe9f0('0xb')](_0xe9f0('0xc'),_0x3829ef,'request\x20sent');logger[_0xe9f0('0xd')](_0xe9f0('0xe'),_0x3829ef,_0xe9f0('0xf'),JSON[_0xe9f0('0x10')](_0xebf170));if(_0xebf170['error']){if(_0xebf170[_0xe9f0('0x11')][_0xe9f0('0x12')]===0x1f4){logger['error'](_0xe9f0('0xc'),_0x3829ef,_0xebf170[_0xe9f0('0x11')][_0xe9f0('0x13')]);return _0x19afa8(_0xebf170[_0xe9f0('0x11')][_0xe9f0('0x13')]);}logger[_0xe9f0('0x11')](_0xe9f0('0xc'),_0x3829ef,_0xebf170[_0xe9f0('0x11')][_0xe9f0('0x13')]);return _0x404707(_0xebf170[_0xe9f0('0x11')][_0xe9f0('0x13')]);}else{logger[_0xe9f0('0xb')](_0xe9f0('0xc'),_0x3829ef,_0xe9f0('0xf'));_0x404707(_0xebf170[_0xe9f0('0x14')][_0xe9f0('0x13')]);}})[_0xe9f0('0x15')](function(_0x1f2c79){logger['error'](_0xe9f0('0xc'),_0x3829ef,_0x1f2c79);_0x19afa8(_0x1f2c79);});});}
\ No newline at end of file
+var _0x4c99=['debug','stringify','error','code','message','result','lodash','moment','../../mysqldb','../../config/utils','rpc','../../config/environment','client','request','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x10d7b2,_0x2bdbc7){var _0x26c6c=function(_0x1e9c74){while(--_0x1e9c74){_0x10d7b2['push'](_0x10d7b2['shift']());}};_0x26c6c(++_0x2bdbc7);}(_0x4c99,0x1ec));var _0x94c9=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x4c99[_0x36c5b0];return _0xf19333;};'use strict';var _=require(_0x94c9('0x0'));var util=require('util');var moment=require(_0x94c9('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x94c9('0x2'))['db'];var utils=require(_0x94c9('0x3'));var logger=require('../../config/logger')(_0x94c9('0x4'));var config=require(_0x94c9('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x94c9('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ebd2b,_0x49b85b,_0x23d961){return new BPromise(function(_0x4403ba,_0x3a1743){return client[_0x94c9('0x7')](_0x4ebd2b,_0x23d961)[_0x94c9('0x8')](function(_0x1c0983){logger[_0x94c9('0x9')](_0x94c9('0xa'),_0x49b85b,_0x94c9('0xb'));logger[_0x94c9('0xc')]('DeskConfiguration,\x20%s,\x20%s,\x20%s',_0x49b85b,_0x94c9('0xb'),JSON[_0x94c9('0xd')](_0x1c0983));if(_0x1c0983[_0x94c9('0xe')]){if(_0x1c0983['error'][_0x94c9('0xf')]===0x1f4){logger[_0x94c9('0xe')](_0x94c9('0xa'),_0x49b85b,_0x1c0983[_0x94c9('0xe')][_0x94c9('0x10')]);return _0x3a1743(_0x1c0983[_0x94c9('0xe')][_0x94c9('0x10')]);}logger[_0x94c9('0xe')]('DeskConfiguration,\x20%s,\x20%s',_0x49b85b,_0x1c0983['error']['message']);return _0x4403ba(_0x1c0983[_0x94c9('0xe')][_0x94c9('0x10')]);}else{logger['info'](_0x94c9('0xa'),_0x49b85b,_0x94c9('0xb'));_0x4403ba(_0x1c0983[_0x94c9('0x11')]['message']);}})['catch'](function(_0x447937){logger[_0x94c9('0xe')](_0x94c9('0xa'),_0x49b85b,_0x447937);_0x3a1743(_0x447937);});});}
\ No newline at end of file
index b655585..5644ded 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x567a=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intDeskField.controller','get','isAuthenticated','index','/:id','show','create','delete','destroy','exports','multer','util','path'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0x567a,0x8d));var _0xa567=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x567a[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xa567('0x0'));var util=require(_0xa567('0x1'));var path=require(_0xa567('0x2'));var timeout=require(_0xa567('0x3'));var express=require(_0xa567('0x4'));var router=express[_0xa567('0x5')]();var fs_extra=require(_0xa567('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xa567('0x7'));var config=require('../../config/environment');var controller=require(_0xa567('0x8'));router[_0xa567('0x9')]('/',auth[_0xa567('0xa')](),controller[_0xa567('0xb')]);router[_0xa567('0x9')](_0xa567('0xc'),auth[_0xa567('0xa')](),controller[_0xa567('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xa567('0xe')]);router['put'](_0xa567('0xc'),auth['isAuthenticated'](),controller['update']);router[_0xa567('0xf')]('/:id',auth[_0xa567('0xa')](),controller[_0xa567('0x10')]);module[_0xa567('0x11')]=router;
\ No newline at end of file
+var _0xe03c=['multer','util','path','connect-timeout','../../components/interaction/service','../../config/environment','./intDeskField.controller','index','get','/:id','isAuthenticated','show','post','create','put','update','delete','exports'];(function(_0x31ced5,_0x5d5415){var _0x10d9e5=function(_0x2e51a5){while(--_0x2e51a5){_0x31ced5['push'](_0x31ced5['shift']());}};_0x10d9e5(++_0x5d5415);}(_0xe03c,0x19e));var _0xce03=function(_0x4f25f9,_0x255051){_0x4f25f9=_0x4f25f9-0x0;var _0x92083c=_0xe03c[_0x4f25f9];return _0x92083c;};'use strict';var multer=require(_0xce03('0x0'));var util=require(_0xce03('0x1'));var path=require(_0xce03('0x2'));var timeout=require(_0xce03('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xce03('0x4'));var config=require(_0xce03('0x5'));var controller=require(_0xce03('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xce03('0x7')]);router[_0xce03('0x8')](_0xce03('0x9'),auth[_0xce03('0xa')](),controller[_0xce03('0xb')]);router[_0xce03('0xc')]('/',auth[_0xce03('0xa')](),controller[_0xce03('0xd')]);router[_0xce03('0xe')](_0xce03('0x9'),auth[_0xce03('0xa')](),controller[_0xce03('0xf')]);router[_0xce03('0x10')]('/:id',auth[_0xce03('0xa')](),controller['destroy']);module[_0xce03('0x11')]=router;
\ No newline at end of file
index 55ec58e..5dbb125 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64f8=['sequelize','string','STRING','ENUM','variable','customVariable','BOOLEAN'];(function(_0x3eca5a,_0x20d490){var _0x15470e=function(_0x219cc6){while(--_0x219cc6){_0x3eca5a['push'](_0x3eca5a['shift']());}};_0x15470e(++_0x20d490);}(_0x64f8,0x9a));var _0x864f=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x64f8[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x864f('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x864f('0x1'),'variable','customVariable','keyValue','picklist'),'defaultValue':_0x864f('0x1')},'content':{'type':Sequelize[_0x864f('0x2')]},'key':{'type':Sequelize[_0x864f('0x2')]},'keyType':{'type':Sequelize[_0x864f('0x3')]('string',_0x864f('0x4'),_0x864f('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x864f('0x2')]},'nameField':{'type':Sequelize[_0x864f('0x2')]},'customField':{'type':Sequelize[_0x864f('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x864f('0x2')]}};
\ No newline at end of file
+var _0xce19=['sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xce19,0xb4));var _0x9ce1=function(_0xeba35c,_0x2e5dad){_0xeba35c=_0xeba35c-0x0;var _0x2f2c39=_0xce19[_0xeba35c];return _0x2f2c39;};'use strict';var Sequelize=require(_0x9ce1('0x0'));module[_0x9ce1('0x1')]={'type':{'type':Sequelize[_0x9ce1('0x2')](_0x9ce1('0x3'),_0x9ce1('0x4'),_0x9ce1('0x5'),_0x9ce1('0x6'),_0x9ce1('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0x9ce1('0x8')]},'key':{'type':Sequelize[_0x9ce1('0x8')]},'keyType':{'type':Sequelize[_0x9ce1('0x2')]('string',_0x9ce1('0x4'),_0x9ce1('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x9ce1('0x8')]},'customField':{'type':Sequelize[_0x9ce1('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9ce1('0x8')]}};
\ No newline at end of file
index 3e26dde..d740331 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2842=['options','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','save','update','destroy','stack','name','send','index','map','DeskField','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','then','include','rows','catch','params','rawAttributes','includeAll'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2842,0x1ba));var _0x2284=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2842[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2284('0x0'));var zipdir=require(_0x2284('0x1'));var jsonpatch=require(_0x2284('0x2'));var rp=require(_0x2284('0x3'));var moment=require(_0x2284('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2284('0x5'));var util=require(_0x2284('0x6'));var path=require('path');var sox=require(_0x2284('0x7'));var csv=require(_0x2284('0x8'));var ejs=require(_0x2284('0x9'));var fs=require('fs');var fs_extra=require(_0x2284('0xa'));var _=require(_0x2284('0xb'));var squel=require(_0x2284('0xc'));var crypto=require('crypto');var jsforce=require(_0x2284('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x2284('0x8'));var querystring=require(_0x2284('0xe'));var Papa=require(_0x2284('0xf'));var Redis=require('ioredis');var authService=require(_0x2284('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x2284('0x11'));var hardwareService=require(_0x2284('0x12'));var logger=require(_0x2284('0x13'))(_0x2284('0x14'));var utils=require(_0x2284('0x15'));var config=require(_0x2284('0x16'));var licenseUtil=require(_0x2284('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3523ef,_0x554894){_0x554894=_0x554894||0xcc;return function(_0xf35d2c){if(_0xf35d2c){return _0x3523ef[_0x2284('0x18')](_0x554894);}return _0x3523ef[_0x2284('0x19')](_0x554894)[_0x2284('0x1a')]();};}function respondWithResult(_0x56b45b,_0xe9f93d){_0xe9f93d=_0xe9f93d||0xc8;return function(_0x281dd5){if(_0x281dd5){return _0x56b45b['status'](_0xe9f93d)[_0x2284('0x1b')](_0x281dd5);}};}function respondWithFilteredResult(_0x5cb2a7,_0x4e09ba){return function(_0x390719){if(_0x390719){var _0x18b7a0=typeof _0x4e09ba[_0x2284('0x1c')]===_0x2284('0x1d')&&typeof _0x4e09ba[_0x2284('0x1e')]==='undefined';var _0xfa1008=_0x390719[_0x2284('0x1f')];var _0xb7935d=_0x18b7a0?0x0:_0x4e09ba['offset'];var _0x2e688c=_0x18b7a0?_0x390719[_0x2284('0x1f')]:_0x4e09ba[_0x2284('0x1c')]+_0x4e09ba[_0x2284('0x1e')];var _0x499a9a;if(_0x2e688c>=_0xfa1008){_0x2e688c=_0xfa1008;_0x499a9a=0xc8;}else{_0x499a9a=0xce;}_0x5cb2a7[_0x2284('0x19')](_0x499a9a);return _0x5cb2a7[_0x2284('0x20')]('Content-Range',_0xb7935d+'-'+_0x2e688c+'/'+_0xfa1008)[_0x2284('0x1b')](_0x390719);}return null;};}function patchUpdates(_0x55733f){return function(_0x367527){try{jsonpatch['apply'](_0x367527,_0x55733f,!![]);}catch(_0x34f1d4){return BPromise['reject'](_0x34f1d4);}return _0x367527[_0x2284('0x21')]();};}function saveUpdates(_0x132b87,_0x9ba6fc){return function(_0x428231){if(_0x428231){return _0x428231[_0x2284('0x22')](_0x132b87)['then'](function(_0x3e8f59){return _0x3e8f59;});}return null;};}function removeEntity(_0x43b99d,_0x173303){return function(_0x3bf787){if(_0x3bf787){return _0x3bf787[_0x2284('0x23')]()['then'](function(){_0x43b99d[_0x2284('0x19')](0xcc)[_0x2284('0x1a')]();});}};}function handleEntityNotFound(_0x2ee84c,_0x26e87d){return function(_0x11aede){if(!_0x11aede){_0x2ee84c[_0x2284('0x18')](0x194);}return _0x11aede;};}function handleError(_0x1976c4,_0xe1e5e3){_0xe1e5e3=_0xe1e5e3||0x1f4;return function(_0x3aa78d){logger['error'](_0x3aa78d[_0x2284('0x24')]);if(_0x3aa78d[_0x2284('0x25')]){delete _0x3aa78d[_0x2284('0x25')];}_0x1976c4[_0x2284('0x19')](_0xe1e5e3)[_0x2284('0x26')](_0x3aa78d);};}exports[_0x2284('0x27')]=function(_0x4e0e0b,_0x16c5a5){var _0x31e2bc={},_0x515276={},_0x58afe8={'count':0x0,'rows':[]};var _0x3ade9c=_[_0x2284('0x28')](db[_0x2284('0x29')]['rawAttributes'],function(_0x2299f0){return{'name':_0x2299f0[_0x2284('0x2a')],'type':_0x2299f0[_0x2284('0x2b')][_0x2284('0x2c')]};});_0x515276[_0x2284('0x2d')]=_['map'](_0x3ade9c,_0x2284('0x25'));_0x515276[_0x2284('0x2e')]=_[_0x2284('0x2f')](_0x4e0e0b[_0x2284('0x2e')]);_0x515276[_0x2284('0x30')]=_[_0x2284('0x31')](_0x515276[_0x2284('0x2d')],_0x515276[_0x2284('0x2e')]);_0x31e2bc[_0x2284('0x32')]=_[_0x2284('0x31')](_0x515276['model'],qs[_0x2284('0x33')](_0x4e0e0b['query'][_0x2284('0x33')]));_0x31e2bc['attributes']=_0x31e2bc[_0x2284('0x32')][_0x2284('0x34')]?_0x31e2bc[_0x2284('0x32')]:_0x515276[_0x2284('0x2d')];if(!_0x4e0e0b[_0x2284('0x2e')][_0x2284('0x35')](_0x2284('0x36'))){_0x31e2bc[_0x2284('0x1e')]=qs[_0x2284('0x1e')](_0x4e0e0b[_0x2284('0x2e')][_0x2284('0x1e')]);_0x31e2bc[_0x2284('0x1c')]=qs[_0x2284('0x1c')](_0x4e0e0b[_0x2284('0x2e')]['offset']);}_0x31e2bc[_0x2284('0x37')]=qs[_0x2284('0x38')](_0x4e0e0b['query'][_0x2284('0x38')]);_0x31e2bc[_0x2284('0x39')]=qs['filters'](_[_0x2284('0x3a')](_0x4e0e0b[_0x2284('0x2e')],_0x515276[_0x2284('0x30')]),_0x3ade9c);if(_0x4e0e0b['query'][_0x2284('0x3b')]){_0x31e2bc[_0x2284('0x39')]=_[_0x2284('0x3c')](_0x31e2bc[_0x2284('0x39')],{'$or':_[_0x2284('0x28')](_0x3ade9c,function(_0x3601c1){if(_0x3601c1[_0x2284('0x2b')]!==_0x2284('0x3d')){var _0x47c4b4={};_0x47c4b4[_0x3601c1[_0x2284('0x25')]]={'$like':'%'+_0x4e0e0b[_0x2284('0x2e')]['filter']+'%'};return _0x47c4b4;}})});}_0x31e2bc=_[_0x2284('0x3c')]({},_0x31e2bc,_0x4e0e0b['options']);var _0x475bf9={'where':_0x31e2bc[_0x2284('0x39')]};return db[_0x2284('0x29')]['count'](_0x475bf9)[_0x2284('0x3e')](function(_0x542dd2){_0x58afe8[_0x2284('0x1f')]=_0x542dd2;if(_0x4e0e0b[_0x2284('0x2e')]['includeAll']){_0x31e2bc[_0x2284('0x3f')]=[{'all':!![]}];}return db['DeskField']['findAll'](_0x31e2bc);})[_0x2284('0x3e')](function(_0x40dec3){_0x58afe8[_0x2284('0x40')]=_0x40dec3;return _0x58afe8;})[_0x2284('0x3e')](respondWithFilteredResult(_0x16c5a5,_0x31e2bc))[_0x2284('0x41')](handleError(_0x16c5a5,null));};exports['show']=function(_0x554351,_0x4776d4){var _0x6c5e60={'raw':!![],'where':{'id':_0x554351[_0x2284('0x42')]['id']}},_0x22b420={};_0x22b420[_0x2284('0x2d')]=_[_0x2284('0x2f')](db[_0x2284('0x29')][_0x2284('0x43')]);_0x22b420['query']=_[_0x2284('0x2f')](_0x554351['query']);_0x22b420[_0x2284('0x30')]=_[_0x2284('0x31')](_0x22b420[_0x2284('0x2d')],_0x22b420[_0x2284('0x2e')]);_0x6c5e60[_0x2284('0x32')]=_[_0x2284('0x31')](_0x22b420['model'],qs[_0x2284('0x33')](_0x554351['query'][_0x2284('0x33')]));_0x6c5e60[_0x2284('0x32')]=_0x6c5e60[_0x2284('0x32')][_0x2284('0x34')]?_0x6c5e60['attributes']:_0x22b420[_0x2284('0x2d')];if(_0x554351[_0x2284('0x2e')][_0x2284('0x44')]){_0x6c5e60['include']=[{'all':!![]}];}_0x6c5e60=_[_0x2284('0x3c')]({},_0x6c5e60,_0x554351[_0x2284('0x45')]);return db['DeskField'][_0x2284('0x46')](_0x6c5e60)['then'](handleEntityNotFound(_0x4776d4,null))[_0x2284('0x3e')](respondWithResult(_0x4776d4,null))['catch'](handleError(_0x4776d4,null));};exports[_0x2284('0x47')]=function(_0x4b324b,_0x33ca34){return db[_0x2284('0x29')]['create'](_0x4b324b[_0x2284('0x48')],{})['then'](respondWithResult(_0x33ca34,0xc9))['catch'](handleError(_0x33ca34,null));};exports[_0x2284('0x22')]=function(_0x59fbb6,_0x5178cb){if(_0x59fbb6[_0x2284('0x48')]['id']){delete _0x59fbb6[_0x2284('0x48')]['id'];}return db[_0x2284('0x29')][_0x2284('0x46')]({'where':{'id':_0x59fbb6[_0x2284('0x42')]['id']}})['then'](handleEntityNotFound(_0x5178cb,null))[_0x2284('0x3e')](saveUpdates(_0x59fbb6[_0x2284('0x48')],null))[_0x2284('0x3e')](respondWithResult(_0x5178cb,null))[_0x2284('0x41')](handleError(_0x5178cb,null));};exports['destroy']=function(_0x24964e,_0x58bea3){return db[_0x2284('0x29')]['find']({'where':{'id':_0x24964e['params']['id']}})[_0x2284('0x3e')](handleEntityNotFound(_0x58bea3,null))['then'](removeEntity(_0x58bea3,null))['catch'](handleError(_0x58bea3,null));};
\ No newline at end of file
+var _0x3e1d=['then','destroy','error','stack','name','send','index','map','DeskField','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','hasOwnProperty','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','fields','length','options','create','body','find','eml-format','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update'];(function(_0x2ce426,_0x2c7a2d){var _0xdbc337=function(_0x5189e6){while(--_0x5189e6){_0x2ce426['push'](_0x2ce426['shift']());}};_0xdbc337(++_0x2c7a2d);}(_0x3e1d,0x70));var _0xd3e1=function(_0x81ac6c,_0x1cf87c){_0x81ac6c=_0x81ac6c-0x0;var _0x442c04=_0x3e1d[_0x81ac6c];return _0x442c04;};'use strict';var emlformat=require(_0xd3e1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd3e1('0x1'));var jsonpatch=require(_0xd3e1('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xd3e1('0x3'));var util=require(_0xd3e1('0x4'));var path=require(_0xd3e1('0x5'));var sox=require(_0xd3e1('0x6'));var csv=require(_0xd3e1('0x7'));var ejs=require(_0xd3e1('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd3e1('0x9'));var squel=require(_0xd3e1('0xa'));var crypto=require(_0xd3e1('0xb'));var jsforce=require(_0xd3e1('0xc'));var deskjs=require(_0xd3e1('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd3e1('0xe'));var authService=require(_0xd3e1('0xf'));var qs=require(_0xd3e1('0x10'));var as=require(_0xd3e1('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd3e1('0x12'))(_0xd3e1('0x13'));var utils=require('../../config/utils');var config=require(_0xd3e1('0x14'));var licenseUtil=require(_0xd3e1('0x15'));var db=require(_0xd3e1('0x16'))['db'];function respondWithStatusCode(_0x2f1336,_0x30d7f0){_0x30d7f0=_0x30d7f0||0xcc;return function(_0x465d51){if(_0x465d51){return _0x2f1336[_0xd3e1('0x17')](_0x30d7f0);}return _0x2f1336[_0xd3e1('0x18')](_0x30d7f0)[_0xd3e1('0x19')]();};}function respondWithResult(_0x2273ca,_0x17d7d7){_0x17d7d7=_0x17d7d7||0xc8;return function(_0x284eb7){if(_0x284eb7){return _0x2273ca['status'](_0x17d7d7)[_0xd3e1('0x1a')](_0x284eb7);}};}function respondWithFilteredResult(_0xa48cf8,_0x5115a6){return function(_0x373656){if(_0x373656){var _0x47fded=typeof _0x5115a6[_0xd3e1('0x1b')]===_0xd3e1('0x1c')&&typeof _0x5115a6[_0xd3e1('0x1d')]===_0xd3e1('0x1c');var _0x570527=_0x373656[_0xd3e1('0x1e')];var _0x2d1940=_0x47fded?0x0:_0x5115a6[_0xd3e1('0x1b')];var _0x18c2a8=_0x47fded?_0x373656[_0xd3e1('0x1e')]:_0x5115a6[_0xd3e1('0x1b')]+_0x5115a6[_0xd3e1('0x1d')];var _0x271cf8;if(_0x18c2a8>=_0x570527){_0x18c2a8=_0x570527;_0x271cf8=0xc8;}else{_0x271cf8=0xce;}_0xa48cf8['status'](_0x271cf8);return _0xa48cf8['set'](_0xd3e1('0x1f'),_0x2d1940+'-'+_0x18c2a8+'/'+_0x570527)[_0xd3e1('0x1a')](_0x373656);}return null;};}function patchUpdates(_0x707e7c){return function(_0x2b51d4){try{jsonpatch[_0xd3e1('0x20')](_0x2b51d4,_0x707e7c,!![]);}catch(_0x33ded7){return BPromise[_0xd3e1('0x21')](_0x33ded7);}return _0x2b51d4[_0xd3e1('0x22')]();};}function saveUpdates(_0xbf998d,_0x22de6e){return function(_0x7583d){if(_0x7583d){return _0x7583d[_0xd3e1('0x23')](_0xbf998d)[_0xd3e1('0x24')](function(_0x4857f9){return _0x4857f9;});}return null;};}function removeEntity(_0xf2179,_0x1233e4){return function(_0x2167e5){if(_0x2167e5){return _0x2167e5[_0xd3e1('0x25')]()[_0xd3e1('0x24')](function(){_0xf2179[_0xd3e1('0x18')](0xcc)[_0xd3e1('0x19')]();});}};}function handleEntityNotFound(_0x514aea,_0x4fa098){return function(_0x55ed16){if(!_0x55ed16){_0x514aea[_0xd3e1('0x17')](0x194);}return _0x55ed16;};}function handleError(_0x2ce1be,_0x50747a){_0x50747a=_0x50747a||0x1f4;return function(_0x394104){logger[_0xd3e1('0x26')](_0x394104[_0xd3e1('0x27')]);if(_0x394104[_0xd3e1('0x28')]){delete _0x394104[_0xd3e1('0x28')];}_0x2ce1be[_0xd3e1('0x18')](_0x50747a)[_0xd3e1('0x29')](_0x394104);};}exports[_0xd3e1('0x2a')]=function(_0x2285f2,_0x9f510a){var _0x56371f={},_0x467968={},_0x2ce67c={'count':0x0,'rows':[]};var _0x54b2a2=_[_0xd3e1('0x2b')](db[_0xd3e1('0x2c')][_0xd3e1('0x2d')],function(_0x4b4d7d){return{'name':_0x4b4d7d[_0xd3e1('0x2e')],'type':_0x4b4d7d[_0xd3e1('0x2f')]['key']};});_0x467968['model']=_[_0xd3e1('0x2b')](_0x54b2a2,_0xd3e1('0x28'));_0x467968[_0xd3e1('0x30')]=_[_0xd3e1('0x31')](_0x2285f2[_0xd3e1('0x30')]);_0x467968[_0xd3e1('0x32')]=_[_0xd3e1('0x33')](_0x467968[_0xd3e1('0x34')],_0x467968[_0xd3e1('0x30')]);_0x56371f['attributes']=_[_0xd3e1('0x33')](_0x467968[_0xd3e1('0x34')],qs['fields'](_0x2285f2['query']['fields']));_0x56371f[_0xd3e1('0x35')]=_0x56371f[_0xd3e1('0x35')]['length']?_0x56371f['attributes']:_0x467968[_0xd3e1('0x34')];if(!_0x2285f2[_0xd3e1('0x30')][_0xd3e1('0x36')]('nolimit')){_0x56371f[_0xd3e1('0x1d')]=qs[_0xd3e1('0x1d')](_0x2285f2[_0xd3e1('0x30')][_0xd3e1('0x1d')]);_0x56371f[_0xd3e1('0x1b')]=qs['offset'](_0x2285f2[_0xd3e1('0x30')][_0xd3e1('0x1b')]);}_0x56371f['order']=qs[_0xd3e1('0x37')](_0x2285f2[_0xd3e1('0x30')]['sort']);_0x56371f['where']=qs['filters'](_[_0xd3e1('0x38')](_0x2285f2[_0xd3e1('0x30')],_0x467968[_0xd3e1('0x32')]),_0x54b2a2);if(_0x2285f2['query'][_0xd3e1('0x39')]){_0x56371f[_0xd3e1('0x3a')]=_[_0xd3e1('0x3b')](_0x56371f['where'],{'$or':_['map'](_0x54b2a2,function(_0x2d5861){if(_0x2d5861[_0xd3e1('0x2f')]!==_0xd3e1('0x3c')){var _0x1ba9d7={};_0x1ba9d7[_0x2d5861[_0xd3e1('0x28')]]={'$like':'%'+_0x2285f2[_0xd3e1('0x30')][_0xd3e1('0x39')]+'%'};return _0x1ba9d7;}})});}_0x56371f=_[_0xd3e1('0x3b')]({},_0x56371f,_0x2285f2['options']);var _0x4852ef={'where':_0x56371f[_0xd3e1('0x3a')]};return db[_0xd3e1('0x2c')]['count'](_0x4852ef)[_0xd3e1('0x24')](function(_0x1f8f53){_0x2ce67c[_0xd3e1('0x1e')]=_0x1f8f53;if(_0x2285f2['query'][_0xd3e1('0x3d')]){_0x56371f[_0xd3e1('0x3e')]=[{'all':!![]}];}return db['DeskField'][_0xd3e1('0x3f')](_0x56371f);})['then'](function(_0x5446da){_0x2ce67c[_0xd3e1('0x40')]=_0x5446da;return _0x2ce67c;})['then'](respondWithFilteredResult(_0x9f510a,_0x56371f))[_0xd3e1('0x41')](handleError(_0x9f510a,null));};exports[_0xd3e1('0x42')]=function(_0x3936de,_0x2eeb8b){var _0x2d1397={'raw':!![],'where':{'id':_0x3936de[_0xd3e1('0x43')]['id']}},_0x4ed43d={};_0x4ed43d[_0xd3e1('0x34')]=_['keys'](db[_0xd3e1('0x2c')][_0xd3e1('0x2d')]);_0x4ed43d['query']=_[_0xd3e1('0x31')](_0x3936de[_0xd3e1('0x30')]);_0x4ed43d['filters']=_[_0xd3e1('0x33')](_0x4ed43d[_0xd3e1('0x34')],_0x4ed43d['query']);_0x2d1397[_0xd3e1('0x35')]=_[_0xd3e1('0x33')](_0x4ed43d[_0xd3e1('0x34')],qs[_0xd3e1('0x44')](_0x3936de[_0xd3e1('0x30')]['fields']));_0x2d1397[_0xd3e1('0x35')]=_0x2d1397[_0xd3e1('0x35')][_0xd3e1('0x45')]?_0x2d1397[_0xd3e1('0x35')]:_0x4ed43d[_0xd3e1('0x34')];if(_0x3936de[_0xd3e1('0x30')][_0xd3e1('0x3d')]){_0x2d1397[_0xd3e1('0x3e')]=[{'all':!![]}];}_0x2d1397=_[_0xd3e1('0x3b')]({},_0x2d1397,_0x3936de[_0xd3e1('0x46')]);return db['DeskField']['find'](_0x2d1397)[_0xd3e1('0x24')](handleEntityNotFound(_0x2eeb8b,null))[_0xd3e1('0x24')](respondWithResult(_0x2eeb8b,null))[_0xd3e1('0x41')](handleError(_0x2eeb8b,null));};exports[_0xd3e1('0x47')]=function(_0x1ac7ea,_0x357d1f){return db['DeskField']['create'](_0x1ac7ea[_0xd3e1('0x48')],{})[_0xd3e1('0x24')](respondWithResult(_0x357d1f,0xc9))[_0xd3e1('0x41')](handleError(_0x357d1f,null));};exports[_0xd3e1('0x23')]=function(_0x3ae04f,_0x3efbb9){if(_0x3ae04f['body']['id']){delete _0x3ae04f[_0xd3e1('0x48')]['id'];}return db[_0xd3e1('0x2c')][_0xd3e1('0x49')]({'where':{'id':_0x3ae04f[_0xd3e1('0x43')]['id']}})[_0xd3e1('0x24')](handleEntityNotFound(_0x3efbb9,null))[_0xd3e1('0x24')](saveUpdates(_0x3ae04f[_0xd3e1('0x48')],null))['then'](respondWithResult(_0x3efbb9,null))[_0xd3e1('0x41')](handleError(_0x3efbb9,null));};exports[_0xd3e1('0x25')]=function(_0xcfa747,_0x8eb2f){return db[_0xd3e1('0x2c')][_0xd3e1('0x49')]({'where':{'id':_0xcfa747[_0xd3e1('0x43')]['id']}})[_0xd3e1('0x24')](handleEntityNotFound(_0x8eb2f,null))[_0xd3e1('0x24')](removeEntity(_0x8eb2f,null))[_0xd3e1('0x41')](handleError(_0x8eb2f,null));};
\ No newline at end of file
index ad387b0..5b1a75a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36dd=['./intDeskField.attributes','exports','define','int_desk_fields','desk_unique_index','FieldId','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x36e1e1,_0x57958d){var _0x4640d6=function(_0x2ace87){while(--_0x2ace87){_0x36e1e1['push'](_0x36e1e1['shift']());}};_0x4640d6(++_0x57958d);}(_0x36dd,0x18e));var _0xd36d=function(_0xdd82b4,_0x5cd8b8){_0xdd82b4=_0xdd82b4-0x0;var _0x549bb2=_0x36dd[_0xdd82b4];return _0x549bb2;};'use strict';var _=require('lodash');var util=require(_0xd36d('0x0'));var logger=require('../../config/logger')(_0xd36d('0x1'));var moment=require(_0xd36d('0x2'));var BPromise=require(_0xd36d('0x3'));var rp=require(_0xd36d('0x4'));var fs=require('fs');var path=require(_0xd36d('0x5'));var rimraf=require(_0xd36d('0x6'));var config=require(_0xd36d('0x7'));var attributes=require(_0xd36d('0x8'));module[_0xd36d('0x9')]=function(_0x2fb688,_0x1ca40c){return _0x2fb688[_0xd36d('0xa')]('DeskField',attributes,{'tableName':_0xd36d('0xb'),'paranoid':![],'indexes':[{'name':_0xd36d('0xc'),'fields':['idField',_0xd36d('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd122=['DeskField','int_desk_fields','desk_unique_index','idField','FieldId','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./intDeskField.attributes','exports','define'];(function(_0x1a246b,_0x275731){var _0x2b31ac=function(_0x514fc7){while(--_0x514fc7){_0x1a246b['push'](_0x1a246b['shift']());}};_0x2b31ac(++_0x275731);}(_0xd122,0x1d6));var _0x2d12=function(_0x20f099,_0x3fd7f4){_0x20f099=_0x20f099-0x0;var _0x11137d=_0xd122[_0x20f099];return _0x11137d;};'use strict';var _=require('lodash');var util=require(_0x2d12('0x0'));var logger=require(_0x2d12('0x1'))(_0x2d12('0x2'));var moment=require('moment');var BPromise=require(_0x2d12('0x3'));var rp=require(_0x2d12('0x4'));var fs=require('fs');var path=require(_0x2d12('0x5'));var rimraf=require('rimraf');var config=require(_0x2d12('0x6'));var attributes=require(_0x2d12('0x7'));module[_0x2d12('0x8')]=function(_0x5af3b2,_0x1802d0){return _0x5af3b2[_0x2d12('0x9')](_0x2d12('0xa'),attributes,{'tableName':_0x2d12('0xb'),'paranoid':![],'indexes':[{'name':_0x2d12('0xc'),'fields':[_0x2d12('0xd'),_0x2d12('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index bb75e17..11615e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a1d=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result'];(function(_0x192447,_0x3de82c){var _0x26074f=function(_0x216c9a){while(--_0x216c9a){_0x192447['push'](_0x192447['shift']());}};_0x26074f(++_0x3de82c);}(_0x9a1d,0x1a2));var _0xd9a1=function(_0x326ff9,_0x436c7f){_0x326ff9=_0x326ff9-0x0;var _0x23d315=_0x9a1d[_0x326ff9];return _0x23d315;};'use strict';var _=require('lodash');var util=require(_0xd9a1('0x0'));var moment=require(_0xd9a1('0x1'));var BPromise=require(_0xd9a1('0x2'));var rs=require(_0xd9a1('0x3'));var fs=require('fs');var Redis=require(_0xd9a1('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd9a1('0x5'));var logger=require(_0xd9a1('0x6'))('rpc');var config=require(_0xd9a1('0x7'));var jayson=require(_0xd9a1('0x8'));var client=jayson[_0xd9a1('0x9')][_0xd9a1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4b4e96,_0x340414,_0x3aaf72){return new BPromise(function(_0x2d4354,_0x370386){return client[_0xd9a1('0xb')](_0x4b4e96,_0x3aaf72)['then'](function(_0x40061c){logger[_0xd9a1('0xc')](_0xd9a1('0xd'),_0x340414,_0xd9a1('0xe'));logger[_0xd9a1('0xf')](_0xd9a1('0x10'),_0x340414,_0xd9a1('0xe'),JSON[_0xd9a1('0x11')](_0x40061c));if(_0x40061c['error']){if(_0x40061c['error'][_0xd9a1('0x12')]===0x1f4){logger[_0xd9a1('0x13')]('DeskField,\x20%s,\x20%s',_0x340414,_0x40061c[_0xd9a1('0x13')]['message']);return _0x370386(_0x40061c['error'][_0xd9a1('0x14')]);}logger['error']('DeskField,\x20%s,\x20%s',_0x340414,_0x40061c[_0xd9a1('0x13')][_0xd9a1('0x14')]);return _0x2d4354(_0x40061c[_0xd9a1('0x13')][_0xd9a1('0x14')]);}else{logger[_0xd9a1('0xc')](_0xd9a1('0xd'),_0x340414,_0xd9a1('0xe'));_0x2d4354(_0x40061c[_0xd9a1('0x15')][_0xd9a1('0x14')]);}})['catch'](function(_0x27fb7a){logger[_0xd9a1('0x13')]('DeskField,\x20%s,\x20%s',_0x340414,_0x27fb7a);_0x370386(_0x27fb7a);});});}
\ No newline at end of file
+var _0x989d=['rpc','../../config/environment','jayson/promise','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','../../config/utils','../../config/logger'];(function(_0x2f407d,_0x4f9fdd){var _0x2f07dc=function(_0x4f2a78){while(--_0x4f2a78){_0x2f407d['push'](_0x2f407d['shift']());}};_0x2f07dc(++_0x4f9fdd);}(_0x989d,0x19c));var _0xd989=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0x989d[_0x819464];return _0x49dcc0;};'use strict';var _=require(_0xd989('0x0'));var util=require(_0xd989('0x1'));var moment=require(_0xd989('0x2'));var BPromise=require(_0xd989('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xd989('0x4'));var logger=require(_0xd989('0x5'))(_0xd989('0x6'));var config=require(_0xd989('0x7'));var jayson=require(_0xd989('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x256cb9,_0x5a5547,_0x128743){return new BPromise(function(_0x149c2f,_0x25cb8a){return client['request'](_0x256cb9,_0x128743)['then'](function(_0x1e5e63){logger[_0xd989('0x9')](_0xd989('0xa'),_0x5a5547,_0xd989('0xb'));logger[_0xd989('0xc')](_0xd989('0xd'),_0x5a5547,_0xd989('0xb'),JSON[_0xd989('0xe')](_0x1e5e63));if(_0x1e5e63[_0xd989('0xf')]){if(_0x1e5e63[_0xd989('0xf')][_0xd989('0x10')]===0x1f4){logger['error'](_0xd989('0xa'),_0x5a5547,_0x1e5e63[_0xd989('0xf')][_0xd989('0x11')]);return _0x25cb8a(_0x1e5e63[_0xd989('0xf')][_0xd989('0x11')]);}logger[_0xd989('0xf')](_0xd989('0xa'),_0x5a5547,_0x1e5e63[_0xd989('0xf')][_0xd989('0x11')]);return _0x149c2f(_0x1e5e63[_0xd989('0xf')][_0xd989('0x11')]);}else{logger[_0xd989('0x9')](_0xd989('0xa'),_0x5a5547,_0xd989('0xb'));_0x149c2f(_0x1e5e63['result'][_0xd989('0x11')]);}})[_0xd989('0x12')](function(_0x3ed1d0){logger[_0xd989('0xf')](_0xd989('0xa'),_0x5a5547,_0x3ed1d0);_0x25cb8a(_0x3ed1d0);});});}
\ No newline at end of file
index 287a1b2..a23da76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f2e=['update','delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','./intDynamics365Account.controller','get','isAuthenticated','show','getConfigurations','getFields','post','create','/:id/configurations','addConfiguration','/:id'];(function(_0x4afe85,_0x289392){var _0x2df80e=function(_0x132d53){while(--_0x132d53){_0x4afe85['push'](_0x4afe85['shift']());}};_0x2df80e(++_0x289392);}(_0x9f2e,0x82));var _0xe9f2=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x9f2e[_0x1d1779];return _0x2377e9;};'use strict';var multer=require(_0xe9f2('0x0'));var util=require(_0xe9f2('0x1'));var path=require(_0xe9f2('0x2'));var timeout=require('connect-timeout');var express=require(_0xe9f2('0x3'));var router=express['Router']();var fs_extra=require(_0xe9f2('0x4'));var auth=require(_0xe9f2('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xe9f2('0x6'));router[_0xe9f2('0x7')]('/',auth[_0xe9f2('0x8')](),controller['index']);router[_0xe9f2('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xe9f2('0x9')]);router[_0xe9f2('0x7')]('/:id/configurations',auth[_0xe9f2('0x8')](),controller[_0xe9f2('0xa')]);router[_0xe9f2('0x7')]('/:id/fields',auth[_0xe9f2('0x8')](),controller[_0xe9f2('0xb')]);router[_0xe9f2('0xc')]('/',auth[_0xe9f2('0x8')](),controller[_0xe9f2('0xd')]);router[_0xe9f2('0xc')](_0xe9f2('0xe'),auth[_0xe9f2('0x8')](),controller[_0xe9f2('0xf')]);router['put'](_0xe9f2('0x10'),auth[_0xe9f2('0x8')](),controller[_0xe9f2('0x11')]);router[_0xe9f2('0x12')](_0xe9f2('0x10'),auth[_0xe9f2('0x8')](),controller[_0xe9f2('0x13')]);module[_0xe9f2('0x14')]=router;
\ No newline at end of file
+var _0x5e04=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','put','/:id','update','destroy','multer','util','path','connect-timeout'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5e04,0x155));var _0x45e0=function(_0x338782,_0x608258){_0x338782=_0x338782-0x0;var _0x3555ee=_0x5e04[_0x338782];return _0x3555ee;};'use strict';var multer=require(_0x45e0('0x0'));var util=require(_0x45e0('0x1'));var path=require(_0x45e0('0x2'));var timeout=require(_0x45e0('0x3'));var express=require(_0x45e0('0x4'));var router=express[_0x45e0('0x5')]();var fs_extra=require(_0x45e0('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x45e0('0x7'));var config=require(_0x45e0('0x8'));var controller=require('./intDynamics365Account.controller');router[_0x45e0('0x9')]('/',auth[_0x45e0('0xa')](),controller[_0x45e0('0xb')]);router[_0x45e0('0x9')]('/:id',auth[_0x45e0('0xa')](),controller[_0x45e0('0xc')]);router[_0x45e0('0x9')](_0x45e0('0xd'),auth[_0x45e0('0xa')](),controller['getConfigurations']);router[_0x45e0('0x9')](_0x45e0('0xe'),auth[_0x45e0('0xa')](),controller[_0x45e0('0xf')]);router[_0x45e0('0x10')]('/',auth[_0x45e0('0xa')](),controller[_0x45e0('0x11')]);router[_0x45e0('0x10')](_0x45e0('0xd'),auth['isAuthenticated'](),controller[_0x45e0('0x12')]);router[_0x45e0('0x13')](_0x45e0('0x14'),auth[_0x45e0('0xa')](),controller[_0x45e0('0x15')]);router['delete'](_0x45e0('0x14'),auth[_0x45e0('0xa')](),controller[_0x45e0('0x16')]);module['exports']=router;
\ No newline at end of file
index 4c2d30e..0b3a1af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7510=['STRING','exports'];(function(_0x4fffac,_0x33b868){var _0x221f32=function(_0x211e78){while(--_0x211e78){_0x4fffac['push'](_0x4fffac['shift']());}};_0x221f32(++_0x33b868);}(_0x7510,0xa9));var _0x0751=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x7510[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require('sequelize');module[_0x0751('0x0')]={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x0751('0x1')]},'password':{'type':Sequelize[_0x0751('0x1')]},'remoteUri':{'type':Sequelize[_0x0751('0x1')]},'tenantId':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0x0751('0x1')]},'clientSecret':{'type':Sequelize[_0x0751('0x1')]},'serverUrl':{'type':Sequelize[_0x0751('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6fad=['sequelize','exports','STRING'];(function(_0x280c4b,_0xfe785d){var _0x2a5e90=function(_0x37db79){while(--_0x37db79){_0x280c4b['push'](_0x280c4b['shift']());}};_0x2a5e90(++_0xfe785d);}(_0x6fad,0x17a));var _0xd6fa=function(_0x38995a,_0x3565b2){_0x38995a=_0x38995a-0x0;var _0x5da3d2=_0x6fad[_0x38995a];return _0x5da3d2;};'use strict';var Sequelize=require(_0xd6fa('0x0'));module[_0xd6fa('0x1')]={'name':{'type':Sequelize[_0xd6fa('0x2')]},'username':{'type':Sequelize[_0xd6fa('0x2')]},'password':{'type':Sequelize[_0xd6fa('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'tenantId':{'type':Sequelize[_0xd6fa('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0xd6fa('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xd6fa('0x2')]}};
\ No newline at end of file
index 0145e35..55b9c28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x046b=['Descriptions','getDescriptions','Dynamics365Field','Subjects','getFields','ticketType','incident','PhoneCall','title','description','customerid','caseorigincode','subject','phonenumber','regardingobjectid','phonecall_activity_parties','accountidname','actualserviceunits','billedserviceunits','contactidname','contactidyominame','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','emailaddress','entitlementidname','entityimage_timestamp','escalatedon','followupby','influencescore','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_iotalertname','onholdtime','overriddencreatedon','owneridname','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','resolveby','resolvebykpiidname','responseby','responsiblecontactidyominame','slaname','socialprofileidname','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','concat','username','password','remoteUri','tenantId','clientId','clientSecret','slice','lastIndexOf','format','POST','/oauth2/token','access_token','GET','Bearer\x20','4.0','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','LogicalName','forEach','@odata.type','substring','all','isNil','BooleanAttributeMetadata','StringAttributeMetadata','BigIntAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','statusCode','Wrong\x20credentials',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','UserLocalizedLabel','Value','push',')/Attributes(',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','true','FalseOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','DisplayName','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../components/integrations/configuration','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','sendStatus','error','stack','name','send','index','Dynamics365Account','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','filter','options','includeAll','include','findAll','rows','show','params','catch','create','body','find','destroy','findOne','Dynamics365Configuration','getConfigurations','addConfiguration','AccountId','getSubjects','channel'];(function(_0x1014c9,_0x5541ee){var _0x52c226=function(_0x581687){while(--_0x581687){_0x1014c9['push'](_0x1014c9['shift']());}};_0x52c226(++_0x5541ee);}(_0x046b,0x147));var _0xb046=function(_0x2d555b,_0x14fc35){_0x2d555b=_0x2d555b-0x0;var _0x5081be=_0x046b[_0x2d555b];return _0x5081be;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb046('0x0'));var zipdir=require(_0xb046('0x1'));var jsonpatch=require(_0xb046('0x2'));var rp=require(_0xb046('0x3'));var moment=require(_0xb046('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb046('0x5'));var util=require(_0xb046('0x6'));var path=require(_0xb046('0x7'));var sox=require(_0xb046('0x8'));var csv=require(_0xb046('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb046('0xa'));var squel=require(_0xb046('0xb'));var crypto=require(_0xb046('0xc'));var jsforce=require(_0xb046('0xd'));var deskjs=require(_0xb046('0xe'));var toCsv=require(_0xb046('0x9'));var querystring=require(_0xb046('0xf'));var Papa=require(_0xb046('0x10'));var Redis=require('ioredis');var authService=require(_0xb046('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xb046('0x12'));var hardwareService=require(_0xb046('0x13'));var logger=require(_0xb046('0x14'))(_0xb046('0x15'));var utils=require(_0xb046('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0xb046('0x17'));function respondWithStatusCode(_0x1f6f1e,_0x55ba2a){_0x55ba2a=_0x55ba2a||0xcc;return function(_0x1fed52){if(_0x1fed52){return _0x1f6f1e['sendStatus'](_0x55ba2a);}return _0x1f6f1e[_0xb046('0x18')](_0x55ba2a)[_0xb046('0x19')]();};}function respondWithResult(_0x4e8899,_0xa34e5d){_0xa34e5d=_0xa34e5d||0xc8;return function(_0x29f3b2){if(_0x29f3b2){return _0x4e8899[_0xb046('0x18')](_0xa34e5d)[_0xb046('0x1a')](_0x29f3b2);}};}function respondWithFilteredResult(_0x12776b,_0x5e66fe){return function(_0x3d2282){if(_0x3d2282){var _0xd041d2=typeof _0x5e66fe[_0xb046('0x1b')]===_0xb046('0x1c')&&typeof _0x5e66fe[_0xb046('0x1d')]===_0xb046('0x1c');var _0x271613=_0x3d2282[_0xb046('0x1e')];var _0x48e3e6=_0xd041d2?0x0:_0x5e66fe[_0xb046('0x1b')];var _0x22ddca=_0xd041d2?_0x3d2282['count']:_0x5e66fe[_0xb046('0x1b')]+_0x5e66fe['limit'];var _0x5804c5;if(_0x22ddca>=_0x271613){_0x22ddca=_0x271613;_0x5804c5=0xc8;}else{_0x5804c5=0xce;}_0x12776b['status'](_0x5804c5);return _0x12776b[_0xb046('0x1f')]('Content-Range',_0x48e3e6+'-'+_0x22ddca+'/'+_0x271613)['json'](_0x3d2282);}return null;};}function patchUpdates(_0x363412){return function(_0x35ac05){try{jsonpatch[_0xb046('0x20')](_0x35ac05,_0x363412,!![]);}catch(_0x500d3e){return BPromise['reject'](_0x500d3e);}return _0x35ac05[_0xb046('0x21')]();};}function saveUpdates(_0x2b9de2,_0x568c43){return function(_0x3d145e){if(_0x3d145e){return _0x3d145e[_0xb046('0x22')](_0x2b9de2)[_0xb046('0x23')](function(_0x388d05){return _0x388d05;});}return null;};}function removeEntity(_0x30b1fa,_0x9a232){return function(_0x4da0fe){if(_0x4da0fe){return _0x4da0fe['destroy']()[_0xb046('0x23')](function(){_0x30b1fa[_0xb046('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2fa3de,_0x1d4c9a){return function(_0x3eed17){if(!_0x3eed17){_0x2fa3de[_0xb046('0x24')](0x194);}return _0x3eed17;};}function handleError(_0x306a72,_0x24a17e){_0x24a17e=_0x24a17e||0x1f4;return function(_0x84c64){logger[_0xb046('0x25')](_0x84c64[_0xb046('0x26')]);if(_0x84c64[_0xb046('0x27')]){delete _0x84c64['name'];}_0x306a72[_0xb046('0x18')](_0x24a17e)[_0xb046('0x28')](_0x84c64);};}exports[_0xb046('0x29')]=function(_0xeaadf,_0x86ab9e){var _0x939e76={},_0x4f0107={},_0x52cba6={'count':0x0,'rows':[]};var _0x23b029=_['map'](db[_0xb046('0x2a')][_0xb046('0x2b')],function(_0x5946e3){return{'name':_0x5946e3[_0xb046('0x2c')],'type':_0x5946e3[_0xb046('0x2d')][_0xb046('0x2e')]};});_0x4f0107[_0xb046('0x2f')]=_['map'](_0x23b029,_0xb046('0x27'));_0x4f0107[_0xb046('0x30')]=_[_0xb046('0x31')](_0xeaadf[_0xb046('0x30')]);_0x4f0107[_0xb046('0x32')]=_[_0xb046('0x33')](_0x4f0107[_0xb046('0x2f')],_0x4f0107[_0xb046('0x30')]);_0x939e76[_0xb046('0x34')]=_[_0xb046('0x33')](_0x4f0107[_0xb046('0x2f')],qs[_0xb046('0x35')](_0xeaadf[_0xb046('0x30')][_0xb046('0x35')]));_0x939e76[_0xb046('0x34')]=_0x939e76[_0xb046('0x34')][_0xb046('0x36')]?_0x939e76[_0xb046('0x34')]:_0x4f0107['model'];if(!_0xeaadf['query'][_0xb046('0x37')](_0xb046('0x38'))){_0x939e76[_0xb046('0x1d')]=qs['limit'](_0xeaadf[_0xb046('0x30')][_0xb046('0x1d')]);_0x939e76[_0xb046('0x1b')]=qs['offset'](_0xeaadf['query'][_0xb046('0x1b')]);}_0x939e76[_0xb046('0x39')]=qs[_0xb046('0x3a')](_0xeaadf[_0xb046('0x30')]['sort']);_0x939e76[_0xb046('0x3b')]=qs[_0xb046('0x32')](_[_0xb046('0x3c')](_0xeaadf[_0xb046('0x30')],_0x4f0107[_0xb046('0x32')]),_0x23b029);if(_0xeaadf['query']['filter']){_0x939e76['where']=_[_0xb046('0x3d')](_0x939e76[_0xb046('0x3b')],{'$or':_[_0xb046('0x3e')](_0x23b029,function(_0x45ed2f){if(_0x45ed2f['type']!=='VIRTUAL'){var _0x229f5f={};_0x229f5f[_0x45ed2f[_0xb046('0x27')]]={'$like':'%'+_0xeaadf[_0xb046('0x30')][_0xb046('0x3f')]+'%'};return _0x229f5f;}})});}_0x939e76=_[_0xb046('0x3d')]({},_0x939e76,_0xeaadf[_0xb046('0x40')]);var _0x264ad0={'where':_0x939e76[_0xb046('0x3b')]};return db[_0xb046('0x2a')][_0xb046('0x1e')](_0x264ad0)[_0xb046('0x23')](function(_0x469dc9){_0x52cba6[_0xb046('0x1e')]=_0x469dc9;if(_0xeaadf[_0xb046('0x30')][_0xb046('0x41')]){_0x939e76[_0xb046('0x42')]=[{'all':!![]}];}return db[_0xb046('0x2a')][_0xb046('0x43')](_0x939e76);})['then'](function(_0x513ad4){_0x52cba6[_0xb046('0x44')]=_0x513ad4;return _0x52cba6;})[_0xb046('0x23')](respondWithFilteredResult(_0x86ab9e,_0x939e76))['catch'](handleError(_0x86ab9e,null));};exports[_0xb046('0x45')]=function(_0x1e1d5e,_0x2cb6c6){var _0x2ab14f={'raw':![],'where':{'id':_0x1e1d5e[_0xb046('0x46')]['id']}},_0xdcfb16={};_0xdcfb16[_0xb046('0x2f')]=_[_0xb046('0x31')](db[_0xb046('0x2a')]['rawAttributes']);_0xdcfb16[_0xb046('0x30')]=_[_0xb046('0x31')](_0x1e1d5e['query']);_0xdcfb16[_0xb046('0x32')]=_[_0xb046('0x33')](_0xdcfb16[_0xb046('0x2f')],_0xdcfb16['query']);_0x2ab14f['attributes']=_['intersection'](_0xdcfb16[_0xb046('0x2f')],qs[_0xb046('0x35')](_0x1e1d5e[_0xb046('0x30')][_0xb046('0x35')]));_0x2ab14f[_0xb046('0x34')]=_0x2ab14f['attributes']['length']?_0x2ab14f[_0xb046('0x34')]:_0xdcfb16[_0xb046('0x2f')];if(_0x1e1d5e[_0xb046('0x30')][_0xb046('0x41')]){_0x2ab14f[_0xb046('0x42')]=[{'all':!![]}];}_0x2ab14f=_[_0xb046('0x3d')]({},_0x2ab14f,_0x1e1d5e[_0xb046('0x40')]);return db[_0xb046('0x2a')]['find'](_0x2ab14f)[_0xb046('0x23')](handleEntityNotFound(_0x2cb6c6,null))['then'](respondWithResult(_0x2cb6c6,null))[_0xb046('0x47')](handleError(_0x2cb6c6,null));};exports['create']=function(_0x44e152,_0x799d61){return db[_0xb046('0x2a')][_0xb046('0x48')](_0x44e152[_0xb046('0x49')],{})['then'](respondWithResult(_0x799d61,0xc9))['catch'](handleError(_0x799d61,null));};exports[_0xb046('0x22')]=function(_0x972aa7,_0x3587a5){if(_0x972aa7[_0xb046('0x49')]['id']){delete _0x972aa7['body']['id'];}return db[_0xb046('0x2a')][_0xb046('0x4a')]({'where':{'id':_0x972aa7[_0xb046('0x46')]['id']}})[_0xb046('0x23')](handleEntityNotFound(_0x3587a5,null))[_0xb046('0x23')](saveUpdates(_0x972aa7['body'],null))[_0xb046('0x23')](respondWithResult(_0x3587a5,null))[_0xb046('0x47')](handleError(_0x3587a5,null));};exports[_0xb046('0x4b')]=function(_0x5d98c3,_0x35fd10){return db[_0xb046('0x2a')][_0xb046('0x4a')]({'where':{'id':_0x5d98c3[_0xb046('0x46')]['id']}})[_0xb046('0x23')](handleEntityNotFound(_0x35fd10,null))[_0xb046('0x23')](removeEntity(_0x35fd10,null))[_0xb046('0x47')](handleError(_0x35fd10,null));};exports['getConfigurations']=function(_0x3e4fea,_0x2a6b2a,_0x239120){var _0xb24a97={};var _0x4cb0d7={};var _0x41d018;var _0x191537;return db[_0xb046('0x2a')][_0xb046('0x4c')]({'where':{'id':_0x3e4fea[_0xb046('0x46')]['id']}})[_0xb046('0x23')](handleEntityNotFound(_0x2a6b2a,null))[_0xb046('0x23')](function(_0x122151){if(_0x122151){_0x41d018=_0x122151;_0x4cb0d7[_0xb046('0x2f')]=_[_0xb046('0x31')](db[_0xb046('0x4d')]['rawAttributes']);_0x4cb0d7[_0xb046('0x30')]=_[_0xb046('0x31')](_0x3e4fea[_0xb046('0x30')]);_0x4cb0d7[_0xb046('0x32')]=_[_0xb046('0x33')](_0x4cb0d7[_0xb046('0x2f')],_0x4cb0d7[_0xb046('0x30')]);_0xb24a97[_0xb046('0x34')]=_[_0xb046('0x33')](_0x4cb0d7[_0xb046('0x2f')],qs[_0xb046('0x35')](_0x3e4fea[_0xb046('0x30')][_0xb046('0x35')]));_0xb24a97['attributes']=_0xb24a97[_0xb046('0x34')]['length']?_0xb24a97[_0xb046('0x34')]:_0x4cb0d7['model'];_0xb24a97[_0xb046('0x39')]=qs[_0xb046('0x3a')](_0x3e4fea[_0xb046('0x30')]['sort']);_0xb24a97['where']=qs[_0xb046('0x32')](_['pick'](_0x3e4fea[_0xb046('0x30')],_0x4cb0d7[_0xb046('0x32')]));if(_0x3e4fea[_0xb046('0x30')][_0xb046('0x3f')]){_0xb24a97[_0xb046('0x3b')]=_[_0xb046('0x3d')](_0xb24a97[_0xb046('0x3b')],{'$or':_[_0xb046('0x3e')](_0xb24a97['attributes'],function(_0x5e07a0){var _0x5b1b7={};_0x5b1b7[_0x5e07a0]={'$like':'%'+_0x3e4fea[_0xb046('0x30')][_0xb046('0x3f')]+'%'};return _0x5b1b7;})});}_0xb24a97=_['merge']({},_0xb24a97,_0x3e4fea[_0xb046('0x40')]);return _0x41d018[_0xb046('0x4e')](_0xb24a97);}})[_0xb046('0x23')](function(_0x4602f3){if(_0x4602f3){_0x191537=_0x4602f3[_0xb046('0x36')];if(!_0x3e4fea['query'][_0xb046('0x37')](_0xb046('0x38'))){_0xb24a97[_0xb046('0x1d')]=qs[_0xb046('0x1d')](_0x3e4fea[_0xb046('0x30')]['limit']);_0xb24a97[_0xb046('0x1b')]=qs[_0xb046('0x1b')](_0x3e4fea[_0xb046('0x30')][_0xb046('0x1b')]);}return _0x41d018[_0xb046('0x4e')](_0xb24a97);}})[_0xb046('0x23')](function(_0x1497b5){if(_0x1497b5){return _0x1497b5?{'count':_0x191537,'rows':_0x1497b5}:null;}})[_0xb046('0x23')](respondWithResult(_0x2a6b2a,null))['catch'](handleError(_0x2a6b2a,null));};exports[_0xb046('0x4f')]=function(_0x2f5fab,_0x4ba676,_0x270755){if(_0x2f5fab[_0xb046('0x49')]['id']){delete _0x2f5fab[_0xb046('0x49')]['id'];}return db[_0xb046('0x2a')][_0xb046('0x4c')]({'where':{'id':_0x2f5fab[_0xb046('0x46')]['id']}})[_0xb046('0x23')](handleEntityNotFound(_0x4ba676,null))[_0xb046('0x23')](function(_0x1d40a8){if(_0x1d40a8){_0x2f5fab[_0xb046('0x49')][_0xb046('0x50')]=_0x1d40a8['id'];_0x2f5fab[_0xb046('0x49')]['Subjects']=integrations[_0xb046('0x51')](_0x2f5fab[_0xb046('0x49')][_0xb046('0x52')],_0x2f5fab[_0xb046('0x49')][_0xb046('0x2d')]);_0x2f5fab[_0xb046('0x49')][_0xb046('0x53')]=integrations[_0xb046('0x54')](_0x2f5fab[_0xb046('0x49')][_0xb046('0x52')],_0x2f5fab[_0xb046('0x49')][_0xb046('0x2d')]);return db['Dynamics365Configuration'][_0xb046('0x48')](_0x2f5fab[_0xb046('0x49')],{'include':[{'model':db[_0xb046('0x55')],'as':_0xb046('0x56')},{'model':db[_0xb046('0x55')],'as':_0xb046('0x53')}]});}return null;})['then'](respondWithResult(_0x4ba676,null))[_0xb046('0x47')](handleError(_0x4ba676,null));};exports[_0xb046('0x57')]=function(_0x49f096,_0x10f9b2,_0xe40bde){var _0x341885=_0x49f096['query'][_0xb046('0x58')];var _0x441210=_0x341885===_0xb046('0x59')?'Incident':_0xb046('0x5a');var _0x5a29f1='';var _0x429501='';var _0x47b06b='';var _0x47194c='';var _0x1a2c4b='';var _0xc5156e='';var _0x2dc542='';var _0x391fca='';var _0x162031=[_0xb046('0x5b'),_0xb046('0x5c'),_0xb046('0x5d'),'ownerid',_0xb046('0x5e'),_0xb046('0x5f'),_0xb046('0x60'),_0xb046('0x61'),'directioncode',_0xb046('0x62')];var _0x239b2a=[_0xb046('0x63'),'accountidyominame',_0xb046('0x64'),_0xb046('0x65'),_0xb046('0x66'),_0xb046('0x67'),'contractdetailidname','contractidname',_0xb046('0x68'),_0xb046('0x69'),_0xb046('0x6a'),_0xb046('0x6b'),_0xb046('0x6c'),_0xb046('0x6d'),_0xb046('0x6e'),_0xb046('0x6f'),'customeridtype','customeridyominame',_0xb046('0x70'),_0xb046('0x71'),_0xb046('0x72'),'entityimage_url',_0xb046('0x73'),'exchangerate','firstresponsebykpiidname',_0xb046('0x74'),'importsequencenumber',_0xb046('0x75'),_0xb046('0x76'),_0xb046('0x77'),_0xb046('0x78'),_0xb046('0x79'),_0xb046('0x7a'),_0xb046('0x7b'),_0xb046('0x7c'),_0xb046('0x7d'),_0xb046('0x7e'),_0xb046('0x7f'),'msdyn_incidenttypename',_0xb046('0x80'),'numberofchildincidents',_0xb046('0x81'),_0xb046('0x82'),_0xb046('0x83'),'owneridtype',_0xb046('0x84'),_0xb046('0x85'),_0xb046('0x86'),_0xb046('0x87'),'prioritycodename','productidname','productserialnumber',_0xb046('0x88'),_0xb046('0x89'),_0xb046('0x8a'),'responsiblecontactidname',_0xb046('0x8b'),'sentimentvalue','slainvokedidname',_0xb046('0x8c'),_0xb046('0x8d'),'statecode',_0xb046('0x8e'),_0xb046('0x8f'),_0xb046('0x90'),_0xb046('0x91'),_0xb046('0x92'),_0xb046('0x93'),'utcconversiontimezonecode','versionnumber'];var _0x58d4f7=_0x162031[_0xb046('0x94')](_0x239b2a);return db[_0xb046('0x2a')][_0xb046('0x4c')]({'where':{'id':_0x49f096[_0xb046('0x46')]['id']},'attributes':['id',_0xb046('0x95'),_0xb046('0x96'),_0xb046('0x97'),_0xb046('0x98'),_0xb046('0x99'),_0xb046('0x9a')]})[_0xb046('0x23')](handleEntityNotFound(_0x10f9b2,null))[_0xb046('0x23')](function(_0x4bea5a){if(_0x4bea5a){_0x391fca=_0x4bea5a[_0xb046('0x97')];var _0x55b8d7=_0x391fca[_0xb046('0x9b')](-0x1);if(_0x55b8d7==='/'){_0x391fca=_0x391fca['substring'](0x0,_0x391fca[_0xb046('0x9c')](_0x55b8d7));}_0x2dc542=util[_0xb046('0x9d')]('%s/api/data/v9.0/',_0x391fca);var _0x7093df={'method':_0xb046('0x9e'),'uri':'https://login.microsoftonline.com/'+_0x4bea5a[_0xb046('0x98')]+_0xb046('0x9f'),'form':{'client_id':_0x4bea5a[_0xb046('0x99')],'resource':_0x391fca,'username':_0x4bea5a['username'],'password':_0x4bea5a[_0xb046('0x96')],'grant_type':_0xb046('0x96'),'client_secret':_0x4bea5a['clientSecret']},'json':!![]};return rp(_0x7093df);}})[_0xb046('0x23')](function(_0x580162){_0xc5156e=_0x580162[_0xb046('0xa0')];var _0x35a097={'method':_0xb046('0xa1'),'uri':encodeURI(_0x2dc542+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x441210+'\x27'),'headers':{'Authorization':_0xb046('0xa2')+_0xc5156e,'If-None-Match':null,'OData-Version':_0xb046('0xa3')},'json':!![]};return rp(_0x35a097);})[_0xb046('0x23')](function(_0x46542b){var _0x3067df=_0x46542b[_0xb046('0xa4')][0x0];var _0x2def2a=_0x3067df[_0xb046('0xa5')];var _0xd3e3ad={'method':_0xb046('0xa1'),'uri':_0x2dc542+_0xb046('0xa6')+_0x2def2a+_0xb046('0xa7'),'headers':{'Authorization':_0xb046('0xa2')+_0xc5156e,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0xd3e3ad);})[_0xb046('0x23')](function(_0x44590d){_0x5a29f1=_0x44590d;_0x429501=_0x5a29f1[_0xb046('0xa8')];_0x429501=_[_0xb046('0xa9')](_0x429501,function(_0x33546f){return!_0x58d4f7[_0xb046('0xaa')](_0x33546f[_0xb046('0xab')]);});var _0x801a2d=[];var _0x389fe8=[];_0x429501[_0xb046('0xac')](function(_0x433aa3){if(_0x433aa3[_0xb046('0xad')]){var _0xe17e4a=_0x433aa3[_0xb046('0xad')][_0xb046('0xae')](_0x433aa3[_0xb046('0xad')][_0xb046('0x9c')]('.')+0x1);if(_0xe17e4a==='PicklistAttributeMetadata'){_0x801a2d['push'](getSelectList(_0x2dc542,_0x341885,_0x389fe8,_0x5a29f1['MetadataId'],_0x433aa3[_0xb046('0xa5')],_0xc5156e));}}});return Promise[_0xb046('0xaf')](_0x801a2d);})[_0xb046('0x23')](function(_0x418ae4){_0x47b06b=_0x418ae4[0x0];var _0x35a7e7=[];var _0x58f08c=[];_0x429501['forEach'](function(_0x239d1f){if(!_[_0xb046('0xb0')](_0x239d1f[_0xb046('0xad')])){var _0x5f1613=_0x239d1f[_0xb046('0xad')][_0xb046('0xae')](_0x239d1f[_0xb046('0xad')][_0xb046('0x9c')]('.')+0x1);if(_0x5f1613===_0xb046('0xb1')){_0x35a7e7['push'](getBooleanList(_0x2dc542,_0x341885,_0x58f08c,_0x5a29f1['MetadataId'],_0x239d1f[_0xb046('0xa5')],_0xc5156e));}}});return Promise[_0xb046('0xaf')](_0x35a7e7);})[_0xb046('0x23')](function(_0x1504e5){_0x47194c=_0x1504e5[0x0];var _0xc35539=[];var _0x21cfcc=[];_0x429501[_0xb046('0xac')](function(_0x77a6fd){if(_0x77a6fd[_0xb046('0xad')]){var _0xb0d50c=_0x77a6fd['@odata.type']['substring'](_0x77a6fd['@odata.type'][_0xb046('0x9c')]('.')+0x1);if(_0xb0d50c===_0xb046('0xb2')||_0xb0d50c==='DoubleAttributeMetadata'||_0xb0d50c===_0xb046('0xb3')||_0xb0d50c==='IntegerAttributeMetadata'||_0xb0d50c==='MemoAttributeMetadata'||_0xb0d50c===_0xb046('0xb4')||_0xb0d50c===_0xb046('0xb5')||_0xb0d50c===_0xb046('0xb6')||_0xb0d50c===_0xb046('0xb7')||_0xb0d50c===_0xb046('0xb8')){_0xc35539['push'](getInputList(_0x2dc542,_0x341885,_0xb0d50c,_0x21cfcc,_0x5a29f1['MetadataId'],_0x77a6fd[_0xb046('0xa5')],_0xc5156e));}}});return Promise[_0xb046('0xaf')](_0xc35539);})[_0xb046('0x23')](function(_0x22f4ad){_0x1a2c4b=_0x22f4ad[0x0];var _0x5ce3c7=_0x47b06b[_0xb046('0x94')](_0x47194c)[_0xb046('0x94')](_0x1a2c4b);var _0x355a82={'count':_0x5ce3c7[_0xb046('0x36')],'rows':_0x5ce3c7};return _0x355a82;})[_0xb046('0x23')](respondWithResult(_0x10f9b2,null))[_0xb046('0x47')](function(_0x4edf10){var _0x2595e8=_0x49f096[_0xb046('0x30')][_0xb046('0xb9')]?0x1f4:_0x4edf10[_0xb046('0xba')]||0x1f4;logger['error'](_0x4edf10[_0xb046('0x26')]);delete _0x4edf10[_0xb046('0x27')];if(_0x2595e8===0x191){_0x2595e8=0x190;}_0x10f9b2[_0xb046('0x18')](_0x2595e8)['send'](_0x49f096[_0xb046('0x30')]['test']?{'message':_0xb046('0xbb'),'statusCode':_0x4edf10[_0xb046('0xba')]}:_0x4edf10);});};function getSelectList(_0x2353ad,_0x47a5ad,_0x32580a,_0x24d2fe,_0x1d6c5b,_0x4ffa9a){var _0x2b47d4={'method':_0xb046('0xa1'),'uri':_0x2353ad+_0xb046('0xa6')+_0x24d2fe+')/Attributes('+_0x1d6c5b+_0xb046('0xbc')+_0xb046('0xbd'),'headers':{'Authorization':'Bearer\x20'+_0x4ffa9a,'If-None-Match':null,'OData-Version':_0xb046('0xa3')},'json':!![]};return rp(_0x2b47d4)[_0xb046('0x23')](function(_0x1e5cf){var _0x913348=[];var _0x1ab2ea=_0x1e5cf[_0xb046('0xbe')][_0xb046('0xbf')];_0x1ab2ea[_0xb046('0xac')](function(_0x13adf9){_0x913348['push']({'name':_0x13adf9[_0xb046('0xc0')][_0xb046('0xc1')]['Label'],'value':String(_0x13adf9[_0xb046('0xc2')])});});var _0x4af3fa={'id':_0x47a5ad+'_'+_0x1e5cf[_0xb046('0xab')],'name':_0x1e5cf['DisplayName'][_0xb046('0xc1')]['Label'],'custom':![],'options':_0x913348};_0x32580a[_0xb046('0xc3')](_0x4af3fa);return _0x32580a;});}function getBooleanList(_0x45267c,_0xb0c657,_0xc7fa75,_0x59662a,_0x5b202f,_0x52c319){var _0x4ff739={'method':'GET','uri':_0x45267c+_0xb046('0xa6')+_0x59662a+_0xb046('0xc4')+_0x5b202f+_0xb046('0xc5'),'headers':{'Authorization':_0xb046('0xa2')+_0x52c319,'If-None-Match':null,'OData-Version':_0xb046('0xa3')},'json':!![]};return rp(_0x4ff739)[_0xb046('0x23')](function(_0x1e7378){var _0xb741e7=[];_0xb741e7[_0xb046('0xc3')]({'name':_0x1e7378['OptionSet'][_0xb046('0xc6')][_0xb046('0xc0')]['UserLocalizedLabel'][_0xb046('0xc0')],'value':_0xb046('0xc7')},{'name':_0x1e7378['OptionSet'][_0xb046('0xc8')][_0xb046('0xc0')][_0xb046('0xc1')]['Label'],'value':_0xb046('0xc9')});var _0x2d8fec={'id':_0xb0c657+'_'+_0x1e7378['LogicalName'],'name':_0x1e7378['DisplayName'][_0xb046('0xc1')][_0xb046('0xc0')],'custom':![],'options':_0xb741e7};_0xc7fa75[_0xb046('0xc3')](_0x2d8fec);return _0xc7fa75;});}function getInputList(_0x433d5a,_0x33b660,_0x3308b8,_0x152e41,_0x4bb54d,_0x588890,_0x3ed2e8){var _0x3895e7={'method':'GET','uri':_0x433d5a+_0xb046('0xa6')+_0x4bb54d+')/Attributes('+_0x588890+_0xb046('0xca')+_0x3308b8+_0xb046('0xcb'),'headers':{'Authorization':_0xb046('0xa2')+_0x3ed2e8,'If-None-Match':null,'OData-Version':_0xb046('0xa3')},'json':!![]};return rp(_0x3895e7)['then'](function(_0x326ffb){var _0xdb148d={'id':_0x33b660+'_'+_0x326ffb[_0xb046('0xab')],'name':_0x326ffb[_0xb046('0xcc')]['UserLocalizedLabel']?_0x326ffb[_0xb046('0xcc')][_0xb046('0xc1')]['Label']:_0x326ffb[_0xb046('0xab')],'custom':![],'options':[]};_0x152e41[_0xb046('0xc3')](_0xdb148d);return _0x152e41;});}
\ No newline at end of file
+var _0x089f=['clientId','clientSecret','slice','substring','lastIndexOf','format','%s/api/data/v9.0/','POST','https://login.microsoftonline.com/','/oauth2/token','username','access_token','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value','MetadataId','GET',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','forEach','@odata.type','PicklistAttributeMetadata','push','all','isNil','BooleanAttributeMetadata','DoubleAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','DecimalAttributeMetadata','test','statusCode','send','Wrong\x20credentials','EntityDefinitions(',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','UserLocalizedLabel','Value','LogicalName','TrueOption','true','false','?$select=DisplayName,LogicalName','DisplayName','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','Dynamics365Account','rawAttributes','fieldName','type','key','query','keys','filters','attributes','intersection','model','fields','hasOwnProperty','sort','where','filter','VIRTUAL','merge','options','includeAll','findAll','catch','length','include','find','create','body','params','getConfigurations','findOne','pick','addConfiguration','AccountId','channel','Descriptions','Dynamics365Configuration','Dynamics365Field','getFields','ticketType','Incident','title','description','ownerid','subject','phonenumber','regardingobjectid','directioncode','accountidname','billedserviceunits','contactidname','contractdetailidname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridyominame','entitlementidname','exchangerate','firstresponsebykpiidname','importsequencenumber','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_iotalertname','onholdtime','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','prioritycodename','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statecode','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','concat','password','remoteUri','tenantId'];(function(_0x5a2065,_0x19c4fb){var _0x218567=function(_0x209f0d){while(--_0x209f0d){_0x5a2065['push'](_0x5a2065['shift']());}};_0x218567(++_0x19c4fb);}(_0x089f,0x1c7));var _0xf089=function(_0x4486e3,_0x24e0d5){_0x4486e3=_0x4486e3-0x0;var _0x3bdf85=_0x089f[_0x4486e3];return _0x3bdf85;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf089('0x0'));var zipdir=require(_0xf089('0x1'));var jsonpatch=require(_0xf089('0x2'));var rp=require(_0xf089('0x3'));var moment=require(_0xf089('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xf089('0x5'));var util=require(_0xf089('0x6'));var path=require(_0xf089('0x7'));var sox=require('sox');var csv=require(_0xf089('0x8'));var ejs=require(_0xf089('0x9'));var fs=require('fs');var fs_extra=require(_0xf089('0xa'));var _=require('lodash');var squel=require(_0xf089('0xb'));var crypto=require(_0xf089('0xc'));var jsforce=require(_0xf089('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf089('0x8'));var querystring=require(_0xf089('0xe'));var Papa=require(_0xf089('0xf'));var Redis=require(_0xf089('0x10'));var authService=require(_0xf089('0x11'));var qs=require(_0xf089('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf089('0x13'));var logger=require(_0xf089('0x14'))(_0xf089('0x15'));var utils=require('../../config/utils');var config=require(_0xf089('0x16'));var licenseUtil=require(_0xf089('0x17'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0xa988bb,_0x3c58dc){_0x3c58dc=_0x3c58dc||0xcc;return function(_0x4ca74e){if(_0x4ca74e){return _0xa988bb[_0xf089('0x18')](_0x3c58dc);}return _0xa988bb[_0xf089('0x19')](_0x3c58dc)[_0xf089('0x1a')]();};}function respondWithResult(_0x337673,_0x58b0db){_0x58b0db=_0x58b0db||0xc8;return function(_0x329719){if(_0x329719){return _0x337673['status'](_0x58b0db)[_0xf089('0x1b')](_0x329719);}};}function respondWithFilteredResult(_0x528cf9,_0x342bb3){return function(_0x5aee45){if(_0x5aee45){var _0x3bc27b=typeof _0x342bb3[_0xf089('0x1c')]===_0xf089('0x1d')&&typeof _0x342bb3[_0xf089('0x1e')]===_0xf089('0x1d');var _0x57f2a7=_0x5aee45[_0xf089('0x1f')];var _0x4e714a=_0x3bc27b?0x0:_0x342bb3[_0xf089('0x1c')];var _0x3418c4=_0x3bc27b?_0x5aee45['count']:_0x342bb3[_0xf089('0x1c')]+_0x342bb3[_0xf089('0x1e')];var _0x5eadfe;if(_0x3418c4>=_0x57f2a7){_0x3418c4=_0x57f2a7;_0x5eadfe=0xc8;}else{_0x5eadfe=0xce;}_0x528cf9[_0xf089('0x19')](_0x5eadfe);return _0x528cf9[_0xf089('0x20')](_0xf089('0x21'),_0x4e714a+'-'+_0x3418c4+'/'+_0x57f2a7)[_0xf089('0x1b')](_0x5aee45);}return null;};}function patchUpdates(_0x105f05){return function(_0x390681){try{jsonpatch[_0xf089('0x22')](_0x390681,_0x105f05,!![]);}catch(_0x290cb8){return BPromise[_0xf089('0x23')](_0x290cb8);}return _0x390681[_0xf089('0x24')]();};}function saveUpdates(_0x581180,_0x36ace9){return function(_0x31050f){if(_0x31050f){return _0x31050f[_0xf089('0x25')](_0x581180)[_0xf089('0x26')](function(_0x599b04){return _0x599b04;});}return null;};}function removeEntity(_0x19e801,_0x249b88){return function(_0x94df4d){if(_0x94df4d){return _0x94df4d[_0xf089('0x27')]()[_0xf089('0x26')](function(){_0x19e801['status'](0xcc)[_0xf089('0x1a')]();});}};}function handleEntityNotFound(_0x598a4e,_0x38078a){return function(_0x372a7a){if(!_0x372a7a){_0x598a4e['sendStatus'](0x194);}return _0x372a7a;};}function handleError(_0x3ef0bc,_0x5e72c9){_0x5e72c9=_0x5e72c9||0x1f4;return function(_0x52ea47){logger[_0xf089('0x28')](_0x52ea47[_0xf089('0x29')]);if(_0x52ea47[_0xf089('0x2a')]){delete _0x52ea47[_0xf089('0x2a')];}_0x3ef0bc[_0xf089('0x19')](_0x5e72c9)['send'](_0x52ea47);};}exports[_0xf089('0x2b')]=function(_0x531dd2,_0x83d36){var _0x449c85={},_0x159fe9={},_0x2634c3={'count':0x0,'rows':[]};var _0x32f869=_[_0xf089('0x2c')](db[_0xf089('0x2d')][_0xf089('0x2e')],function(_0x281fee){return{'name':_0x281fee[_0xf089('0x2f')],'type':_0x281fee[_0xf089('0x30')][_0xf089('0x31')]};});_0x159fe9['model']=_['map'](_0x32f869,_0xf089('0x2a'));_0x159fe9[_0xf089('0x32')]=_[_0xf089('0x33')](_0x531dd2[_0xf089('0x32')]);_0x159fe9[_0xf089('0x34')]=_['intersection'](_0x159fe9['model'],_0x159fe9[_0xf089('0x32')]);_0x449c85[_0xf089('0x35')]=_[_0xf089('0x36')](_0x159fe9[_0xf089('0x37')],qs[_0xf089('0x38')](_0x531dd2[_0xf089('0x32')][_0xf089('0x38')]));_0x449c85[_0xf089('0x35')]=_0x449c85[_0xf089('0x35')]['length']?_0x449c85[_0xf089('0x35')]:_0x159fe9['model'];if(!_0x531dd2[_0xf089('0x32')][_0xf089('0x39')]('nolimit')){_0x449c85[_0xf089('0x1e')]=qs[_0xf089('0x1e')](_0x531dd2[_0xf089('0x32')][_0xf089('0x1e')]);_0x449c85['offset']=qs[_0xf089('0x1c')](_0x531dd2['query'][_0xf089('0x1c')]);}_0x449c85['order']=qs['sort'](_0x531dd2['query'][_0xf089('0x3a')]);_0x449c85[_0xf089('0x3b')]=qs['filters'](_['pick'](_0x531dd2['query'],_0x159fe9[_0xf089('0x34')]),_0x32f869);if(_0x531dd2[_0xf089('0x32')][_0xf089('0x3c')]){_0x449c85[_0xf089('0x3b')]=_['merge'](_0x449c85[_0xf089('0x3b')],{'$or':_[_0xf089('0x2c')](_0x32f869,function(_0xc94e62){if(_0xc94e62['type']!==_0xf089('0x3d')){var _0x4c5cea={};_0x4c5cea[_0xc94e62[_0xf089('0x2a')]]={'$like':'%'+_0x531dd2[_0xf089('0x32')][_0xf089('0x3c')]+'%'};return _0x4c5cea;}})});}_0x449c85=_[_0xf089('0x3e')]({},_0x449c85,_0x531dd2[_0xf089('0x3f')]);var _0x2cf9f3={'where':_0x449c85[_0xf089('0x3b')]};return db[_0xf089('0x2d')][_0xf089('0x1f')](_0x2cf9f3)[_0xf089('0x26')](function(_0x4924ea){_0x2634c3[_0xf089('0x1f')]=_0x4924ea;if(_0x531dd2[_0xf089('0x32')][_0xf089('0x40')]){_0x449c85['include']=[{'all':!![]}];}return db['Dynamics365Account'][_0xf089('0x41')](_0x449c85);})[_0xf089('0x26')](function(_0xd35fbe){_0x2634c3['rows']=_0xd35fbe;return _0x2634c3;})[_0xf089('0x26')](respondWithFilteredResult(_0x83d36,_0x449c85))[_0xf089('0x42')](handleError(_0x83d36,null));};exports['show']=function(_0x35c36f,_0x303788){var _0x5cb0d2={'raw':![],'where':{'id':_0x35c36f['params']['id']}},_0x9cd3ad={};_0x9cd3ad[_0xf089('0x37')]=_[_0xf089('0x33')](db[_0xf089('0x2d')][_0xf089('0x2e')]);_0x9cd3ad[_0xf089('0x32')]=_['keys'](_0x35c36f[_0xf089('0x32')]);_0x9cd3ad[_0xf089('0x34')]=_['intersection'](_0x9cd3ad[_0xf089('0x37')],_0x9cd3ad[_0xf089('0x32')]);_0x5cb0d2[_0xf089('0x35')]=_[_0xf089('0x36')](_0x9cd3ad[_0xf089('0x37')],qs[_0xf089('0x38')](_0x35c36f[_0xf089('0x32')]['fields']));_0x5cb0d2['attributes']=_0x5cb0d2['attributes'][_0xf089('0x43')]?_0x5cb0d2[_0xf089('0x35')]:_0x9cd3ad[_0xf089('0x37')];if(_0x35c36f[_0xf089('0x32')]['includeAll']){_0x5cb0d2[_0xf089('0x44')]=[{'all':!![]}];}_0x5cb0d2=_['merge']({},_0x5cb0d2,_0x35c36f[_0xf089('0x3f')]);return db[_0xf089('0x2d')][_0xf089('0x45')](_0x5cb0d2)['then'](handleEntityNotFound(_0x303788,null))[_0xf089('0x26')](respondWithResult(_0x303788,null))[_0xf089('0x42')](handleError(_0x303788,null));};exports['create']=function(_0x341de8,_0x1a28cd){return db[_0xf089('0x2d')][_0xf089('0x46')](_0x341de8['body'],{})[_0xf089('0x26')](respondWithResult(_0x1a28cd,0xc9))['catch'](handleError(_0x1a28cd,null));};exports['update']=function(_0x2c064d,_0x32d6d7){if(_0x2c064d['body']['id']){delete _0x2c064d[_0xf089('0x47')]['id'];}return db['Dynamics365Account']['find']({'where':{'id':_0x2c064d['params']['id']}})['then'](handleEntityNotFound(_0x32d6d7,null))[_0xf089('0x26')](saveUpdates(_0x2c064d[_0xf089('0x47')],null))['then'](respondWithResult(_0x32d6d7,null))[_0xf089('0x42')](handleError(_0x32d6d7,null));};exports[_0xf089('0x27')]=function(_0x30d9e1,_0x340cb9){return db[_0xf089('0x2d')][_0xf089('0x45')]({'where':{'id':_0x30d9e1[_0xf089('0x48')]['id']}})['then'](handleEntityNotFound(_0x340cb9,null))[_0xf089('0x26')](removeEntity(_0x340cb9,null))[_0xf089('0x42')](handleError(_0x340cb9,null));};exports[_0xf089('0x49')]=function(_0x2e2dfb,_0x52ed2d,_0x2d8c4e){var _0x428470={};var _0x26989a={};var _0xb14c2c;var _0x356bfd;return db[_0xf089('0x2d')][_0xf089('0x4a')]({'where':{'id':_0x2e2dfb['params']['id']}})['then'](handleEntityNotFound(_0x52ed2d,null))['then'](function(_0x184748){if(_0x184748){_0xb14c2c=_0x184748;_0x26989a[_0xf089('0x37')]=_['keys'](db['Dynamics365Configuration'][_0xf089('0x2e')]);_0x26989a[_0xf089('0x32')]=_[_0xf089('0x33')](_0x2e2dfb[_0xf089('0x32')]);_0x26989a[_0xf089('0x34')]=_[_0xf089('0x36')](_0x26989a[_0xf089('0x37')],_0x26989a['query']);_0x428470['attributes']=_[_0xf089('0x36')](_0x26989a[_0xf089('0x37')],qs[_0xf089('0x38')](_0x2e2dfb['query'][_0xf089('0x38')]));_0x428470[_0xf089('0x35')]=_0x428470[_0xf089('0x35')][_0xf089('0x43')]?_0x428470[_0xf089('0x35')]:_0x26989a['model'];_0x428470['order']=qs[_0xf089('0x3a')](_0x2e2dfb[_0xf089('0x32')][_0xf089('0x3a')]);_0x428470['where']=qs['filters'](_[_0xf089('0x4b')](_0x2e2dfb['query'],_0x26989a[_0xf089('0x34')]));if(_0x2e2dfb[_0xf089('0x32')][_0xf089('0x3c')]){_0x428470['where']=_[_0xf089('0x3e')](_0x428470['where'],{'$or':_[_0xf089('0x2c')](_0x428470[_0xf089('0x35')],function(_0x33bd2d){var _0x35bdab={};_0x35bdab[_0x33bd2d]={'$like':'%'+_0x2e2dfb['query']['filter']+'%'};return _0x35bdab;})});}_0x428470=_[_0xf089('0x3e')]({},_0x428470,_0x2e2dfb['options']);return _0xb14c2c[_0xf089('0x49')](_0x428470);}})['then'](function(_0x496c7c){if(_0x496c7c){_0x356bfd=_0x496c7c[_0xf089('0x43')];if(!_0x2e2dfb[_0xf089('0x32')]['hasOwnProperty']('nolimit')){_0x428470[_0xf089('0x1e')]=qs['limit'](_0x2e2dfb[_0xf089('0x32')][_0xf089('0x1e')]);_0x428470[_0xf089('0x1c')]=qs[_0xf089('0x1c')](_0x2e2dfb[_0xf089('0x32')][_0xf089('0x1c')]);}return _0xb14c2c['getConfigurations'](_0x428470);}})[_0xf089('0x26')](function(_0x887c47){if(_0x887c47){return _0x887c47?{'count':_0x356bfd,'rows':_0x887c47}:null;}})['then'](respondWithResult(_0x52ed2d,null))[_0xf089('0x42')](handleError(_0x52ed2d,null));};exports[_0xf089('0x4c')]=function(_0x31b488,_0x2810cd,_0x5f54b1){if(_0x31b488[_0xf089('0x47')]['id']){delete _0x31b488[_0xf089('0x47')]['id'];}return db[_0xf089('0x2d')][_0xf089('0x4a')]({'where':{'id':_0x31b488[_0xf089('0x48')]['id']}})[_0xf089('0x26')](handleEntityNotFound(_0x2810cd,null))[_0xf089('0x26')](function(_0x2adbe0){if(_0x2adbe0){_0x31b488[_0xf089('0x47')][_0xf089('0x4d')]=_0x2adbe0['id'];_0x31b488[_0xf089('0x47')]['Subjects']=integrations['getSubjects'](_0x31b488[_0xf089('0x47')][_0xf089('0x4e')],_0x31b488[_0xf089('0x47')][_0xf089('0x30')]);_0x31b488[_0xf089('0x47')][_0xf089('0x4f')]=integrations['getDescriptions'](_0x31b488[_0xf089('0x47')][_0xf089('0x4e')],_0x31b488[_0xf089('0x47')]['type']);return db[_0xf089('0x50')][_0xf089('0x46')](_0x31b488[_0xf089('0x47')],{'include':[{'model':db[_0xf089('0x51')],'as':'Subjects'},{'model':db[_0xf089('0x51')],'as':_0xf089('0x4f')}]});}return null;})[_0xf089('0x26')](respondWithResult(_0x2810cd,null))[_0xf089('0x42')](handleError(_0x2810cd,null));};exports[_0xf089('0x52')]=function(_0x237d78,_0x4a3548,_0x47effd){var _0x38eafb=_0x237d78[_0xf089('0x32')][_0xf089('0x53')];var _0x16b235=_0x38eafb==='incident'?_0xf089('0x54'):'PhoneCall';var _0x1e62d2='';var _0x2450dc='';var _0x19d213='';var _0x227c1f='';var _0x29dabd='';var _0x4f14f3='';var _0x408bba='';var _0x548b68='';var _0x1a1caa=[_0xf089('0x55'),_0xf089('0x56'),'customerid',_0xf089('0x57'),'caseorigincode',_0xf089('0x58'),_0xf089('0x59'),_0xf089('0x5a'),_0xf089('0x5b'),'phonecall_activity_parties'];var _0x1fe29b=[_0xf089('0x5c'),'accountidyominame','actualserviceunits',_0xf089('0x5d'),_0xf089('0x5e'),'contactidyominame',_0xf089('0x5f'),'contractidname','createdbyexternalpartyname',_0xf089('0x60'),_0xf089('0x61'),_0xf089('0x62'),_0xf089('0x63'),_0xf089('0x64'),_0xf089('0x65'),'customeridname','customeridtype',_0xf089('0x66'),'emailaddress',_0xf089('0x67'),'entityimage_timestamp','entityimage_url','escalatedon',_0xf089('0x68'),_0xf089('0x69'),'followupby',_0xf089('0x6a'),'influencescore',_0xf089('0x6b'),_0xf089('0x6c'),_0xf089('0x6d'),_0xf089('0x6e'),_0xf089('0x6f'),_0xf089('0x70'),'modifiedbyyominame',_0xf089('0x71'),_0xf089('0x72'),_0xf089('0x73'),'msdyn_incidenttypename',_0xf089('0x74'),'numberofchildincidents',_0xf089('0x75'),'overriddencreatedon',_0xf089('0x76'),_0xf089('0x77'),_0xf089('0x78'),_0xf089('0x79'),_0xf089('0x7a'),_0xf089('0x7b'),_0xf089('0x7c'),'productidname','productserialnumber',_0xf089('0x7d'),_0xf089('0x7e'),_0xf089('0x7f'),_0xf089('0x80'),_0xf089('0x81'),_0xf089('0x82'),_0xf089('0x83'),_0xf089('0x84'),_0xf089('0x85'),_0xf089('0x86'),_0xf089('0x87'),_0xf089('0x88'),_0xf089('0x89'),_0xf089('0x8a'),_0xf089('0x8b'),_0xf089('0x8c'),'utcconversiontimezonecode','versionnumber'];var _0x1a3c74=_0x1a1caa[_0xf089('0x8d')](_0x1fe29b);return db[_0xf089('0x2d')][_0xf089('0x4a')]({'where':{'id':_0x237d78[_0xf089('0x48')]['id']},'attributes':['id','username',_0xf089('0x8e'),_0xf089('0x8f'),_0xf089('0x90'),_0xf089('0x91'),_0xf089('0x92')]})['then'](handleEntityNotFound(_0x4a3548,null))['then'](function(_0x1bfb23){if(_0x1bfb23){_0x548b68=_0x1bfb23['remoteUri'];var _0x4c4e28=_0x548b68[_0xf089('0x93')](-0x1);if(_0x4c4e28==='/'){_0x548b68=_0x548b68[_0xf089('0x94')](0x0,_0x548b68[_0xf089('0x95')](_0x4c4e28));}_0x408bba=util[_0xf089('0x96')](_0xf089('0x97'),_0x548b68);var _0x27146c={'method':_0xf089('0x98'),'uri':_0xf089('0x99')+_0x1bfb23[_0xf089('0x90')]+_0xf089('0x9a'),'form':{'client_id':_0x1bfb23[_0xf089('0x91')],'resource':_0x548b68,'username':_0x1bfb23[_0xf089('0x9b')],'password':_0x1bfb23[_0xf089('0x8e')],'grant_type':'password','client_secret':_0x1bfb23[_0xf089('0x92')]},'json':!![]};return rp(_0x27146c);}})[_0xf089('0x26')](function(_0x3ced14){_0x4f14f3=_0x3ced14[_0xf089('0x9c')];var _0x32b296={'method':'GET','uri':encodeURI(_0x408bba+_0xf089('0x9d')+_0x16b235+'\x27'),'headers':{'Authorization':_0xf089('0x9e')+_0x4f14f3,'If-None-Match':null,'OData-Version':_0xf089('0x9f')},'json':!![]};return rp(_0x32b296);})[_0xf089('0x26')](function(_0x3f1751){var _0x6817de=_0x3f1751[_0xf089('0xa0')][0x0];var _0x1ca2bf=_0x6817de[_0xf089('0xa1')];var _0x2e7a46={'method':_0xf089('0xa2'),'uri':_0x408bba+'EntityDefinitions('+_0x1ca2bf+_0xf089('0xa3'),'headers':{'Authorization':_0xf089('0x9e')+_0x4f14f3,'If-None-Match':null,'OData-Version':_0xf089('0x9f')},'json':!![]};return rp(_0x2e7a46);})[_0xf089('0x26')](function(_0x4f6703){_0x1e62d2=_0x4f6703;_0x2450dc=_0x1e62d2[_0xf089('0xa4')];_0x2450dc=_[_0xf089('0xa5')](_0x2450dc,function(_0x59d2bb){return!_0x1a3c74[_0xf089('0xa6')](_0x59d2bb['LogicalName']);});var _0x2715fa=[];var _0x22f180=[];_0x2450dc[_0xf089('0xa7')](function(_0x1455a8){if(_0x1455a8[_0xf089('0xa8')]){var _0x3a266c=_0x1455a8['@odata.type'][_0xf089('0x94')](_0x1455a8[_0xf089('0xa8')][_0xf089('0x95')]('.')+0x1);if(_0x3a266c===_0xf089('0xa9')){_0x2715fa[_0xf089('0xaa')](getSelectList(_0x408bba,_0x38eafb,_0x22f180,_0x1e62d2[_0xf089('0xa1')],_0x1455a8['MetadataId'],_0x4f14f3));}}});return Promise[_0xf089('0xab')](_0x2715fa);})[_0xf089('0x26')](function(_0x4e6d38){_0x19d213=_0x4e6d38[0x0];var _0x1de5ec=[];var _0x4db3a7=[];_0x2450dc[_0xf089('0xa7')](function(_0x4d9dd5){if(!_[_0xf089('0xac')](_0x4d9dd5[_0xf089('0xa8')])){var _0x24ca31=_0x4d9dd5[_0xf089('0xa8')]['substring'](_0x4d9dd5[_0xf089('0xa8')]['lastIndexOf']('.')+0x1);if(_0x24ca31===_0xf089('0xad')){_0x1de5ec[_0xf089('0xaa')](getBooleanList(_0x408bba,_0x38eafb,_0x4db3a7,_0x1e62d2[_0xf089('0xa1')],_0x4d9dd5[_0xf089('0xa1')],_0x4f14f3));}}});return Promise['all'](_0x1de5ec);})[_0xf089('0x26')](function(_0x2c817d){_0x227c1f=_0x2c817d[0x0];var _0x1cf382=[];var _0x30c357=[];_0x2450dc[_0xf089('0xa7')](function(_0x312d21){if(_0x312d21['@odata.type']){var _0x744dea=_0x312d21[_0xf089('0xa8')][_0xf089('0x94')](_0x312d21[_0xf089('0xa8')][_0xf089('0x95')]('.')+0x1);if(_0x744dea==='StringAttributeMetadata'||_0x744dea===_0xf089('0xae')||_0x744dea==='BigIntAttributeMetadata'||_0x744dea===_0xf089('0xaf')||_0x744dea===_0xf089('0xb0')||_0x744dea===_0xf089('0xb1')||_0x744dea===_0xf089('0xb2')||_0x744dea===_0xf089('0xb3')||_0x744dea==='StateAttributeMetadata'||_0x744dea===_0xf089('0xb4')){_0x1cf382[_0xf089('0xaa')](getInputList(_0x408bba,_0x38eafb,_0x744dea,_0x30c357,_0x1e62d2['MetadataId'],_0x312d21[_0xf089('0xa1')],_0x4f14f3));}}});return Promise[_0xf089('0xab')](_0x1cf382);})[_0xf089('0x26')](function(_0x1d3531){_0x29dabd=_0x1d3531[0x0];var _0x5c13e1=_0x19d213[_0xf089('0x8d')](_0x227c1f)[_0xf089('0x8d')](_0x29dabd);var _0xe5212d={'count':_0x5c13e1[_0xf089('0x43')],'rows':_0x5c13e1};return _0xe5212d;})[_0xf089('0x26')](respondWithResult(_0x4a3548,null))[_0xf089('0x42')](function(_0x168e9b){var _0x4336f1=_0x237d78['query'][_0xf089('0xb5')]?0x1f4:_0x168e9b[_0xf089('0xb6')]||0x1f4;logger[_0xf089('0x28')](_0x168e9b[_0xf089('0x29')]);delete _0x168e9b[_0xf089('0x2a')];if(_0x4336f1===0x191){_0x4336f1=0x190;}_0x4a3548['status'](_0x4336f1)[_0xf089('0xb7')](_0x237d78[_0xf089('0x32')][_0xf089('0xb5')]?{'message':_0xf089('0xb8'),'statusCode':_0x168e9b[_0xf089('0xb6')]}:_0x168e9b);});};function getSelectList(_0x2a05e8,_0x2b27a0,_0xda63c9,_0x1d3763,_0x4ac2c2,_0x45f5eb){var _0x51ef11={'method':_0xf089('0xa2'),'uri':_0x2a05e8+_0xf089('0xb9')+_0x1d3763+_0xf089('0xba')+_0x4ac2c2+_0xf089('0xbb')+_0xf089('0xbc'),'headers':{'Authorization':_0xf089('0x9e')+_0x45f5eb,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x51ef11)[_0xf089('0x26')](function(_0x5c187e){var _0x58c65f=[];var _0x43ea03=_0x5c187e[_0xf089('0xbd')][_0xf089('0xbe')];_0x43ea03['forEach'](function(_0x287140){_0x58c65f[_0xf089('0xaa')]({'name':_0x287140[_0xf089('0xbf')][_0xf089('0xc0')][_0xf089('0xbf')],'value':String(_0x287140[_0xf089('0xc1')])});});var _0x2e0bb6={'id':_0x2b27a0+'_'+_0x5c187e[_0xf089('0xc2')],'name':_0x5c187e['DisplayName'][_0xf089('0xc0')]['Label'],'custom':![],'options':_0x58c65f};_0xda63c9[_0xf089('0xaa')](_0x2e0bb6);return _0xda63c9;});}function getBooleanList(_0x182650,_0x25ebc2,_0x4d2c59,_0x306c9e,_0x2def0f,_0x13709e){var _0x376f15={'method':_0xf089('0xa2'),'uri':_0x182650+'EntityDefinitions('+_0x306c9e+')/Attributes('+_0x2def0f+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':'Bearer\x20'+_0x13709e,'If-None-Match':null,'OData-Version':_0xf089('0x9f')},'json':!![]};return rp(_0x376f15)[_0xf089('0x26')](function(_0x547e97){var _0x4d467f=[];_0x4d467f[_0xf089('0xaa')]({'name':_0x547e97[_0xf089('0xbd')][_0xf089('0xc3')]['Label'][_0xf089('0xc0')]['Label'],'value':_0xf089('0xc4')},{'name':_0x547e97['OptionSet']['FalseOption'][_0xf089('0xbf')]['UserLocalizedLabel'][_0xf089('0xbf')],'value':_0xf089('0xc5')});var _0x4ab775={'id':_0x25ebc2+'_'+_0x547e97['LogicalName'],'name':_0x547e97['DisplayName']['UserLocalizedLabel']['Label'],'custom':![],'options':_0x4d467f};_0x4d2c59[_0xf089('0xaa')](_0x4ab775);return _0x4d2c59;});}function getInputList(_0x270b32,_0x308d8d,_0x114a30,_0x2c9df9,_0x8f54ac,_0x44a39d,_0x226f73){var _0x20e0bf={'method':_0xf089('0xa2'),'uri':_0x270b32+_0xf089('0xb9')+_0x8f54ac+_0xf089('0xba')+_0x44a39d+')/Microsoft.Dynamics.CRM.'+_0x114a30+_0xf089('0xc6'),'headers':{'Authorization':_0xf089('0x9e')+_0x226f73,'If-None-Match':null,'OData-Version':_0xf089('0x9f')},'json':!![]};return rp(_0x20e0bf)[_0xf089('0x26')](function(_0x1cb17e){var _0x52ee00={'id':_0x308d8d+'_'+_0x1cb17e[_0xf089('0xc2')],'name':_0x1cb17e[_0xf089('0xc7')][_0xf089('0xc0')]?_0x1cb17e[_0xf089('0xc7')]['UserLocalizedLabel'][_0xf089('0xbf')]:_0x1cb17e[_0xf089('0xc2')],'custom':![],'options':[]};_0x2c9df9[_0xf089('0xaa')](_0x52ee00);return _0x2c9df9;});}
\ No newline at end of file
index 3476137..29cca0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['Dynamics365Account','int_dynamics365_accounts','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration'];(function(_0x474e8d,_0x70c913){var _0xf938f8=function(_0xc92253){while(--_0xc92253){_0x474e8d['push'](_0x474e8d['shift']());}};_0xf938f8(++_0x70c913);}(_0x757a,0xde));var _0xa757=function(_0x5309a3,_0x299111){_0x5309a3=_0x5309a3-0x0;var _0x5ae675=_0x757a[_0x5309a3];return _0x5ae675;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));var integrations=require(_0xa757('0x7'));module['exports']=function(_0xae0e7c,_0x4343b6){return _0xae0e7c['define'](_0xa757('0x8'),attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x757a=['Dynamics365Account','int_dynamics365_accounts','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration'];(function(_0x149b39,_0x21ed66){var _0x317366=function(_0x4d3fb3){while(--_0x4d3fb3){_0x149b39['push'](_0x149b39['shift']());}};_0x317366(++_0x21ed66);}(_0x757a,0xde));var _0xa757=function(_0x317b7d,_0x2a5ad6){_0x317b7d=_0x317b7d-0x0;var _0x570754=_0x757a[_0x317b7d];return _0x570754;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));var integrations=require(_0xa757('0x7'));module['exports']=function(_0xae0e7c,_0x4343b6){return _0xae0e7c['define'](_0xa757('0x8'),attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 609575d..62ede9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40dc=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','Dynamics365Account,\x20%s,\x20%s','request\x20sent','Dynamics365Account,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','attributes','limit','include','model','map','debug','stringify','ShowDynamics365Account','info','lodash','util','moment','ioredis'];(function(_0x338f82,_0x1d8247){var _0x5123d1=function(_0xf35d5){while(--_0xf35d5){_0x338f82['push'](_0x338f82['shift']());}};_0x5123d1(++_0x1d8247);}(_0x40dc,0x188));var _0xc40d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x40dc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc40d('0x0'));var util=require(_0xc40d('0x1'));var moment=require(_0xc40d('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc40d('0x3'));var db=require(_0xc40d('0x4'))['db'];var utils=require(_0xc40d('0x5'));var logger=require(_0xc40d('0x6'))(_0xc40d('0x7'));var config=require(_0xc40d('0x8'));var jayson=require(_0xc40d('0x9'));var client=jayson[_0xc40d('0xa')][_0xc40d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4c8d7f,_0x491cfb,_0x512bbf){return new BPromise(function(_0x43624d,_0x5e0431){return client['request'](_0x4c8d7f,_0x512bbf)[_0xc40d('0xc')](function(_0x5bf24b){logger['info'](_0xc40d('0xd'),_0x491cfb,_0xc40d('0xe'));logger['debug'](_0xc40d('0xf'),_0x491cfb,_0xc40d('0xe'),JSON['stringify'](_0x5bf24b));if(_0x5bf24b[_0xc40d('0x10')]){if(_0x5bf24b[_0xc40d('0x10')][_0xc40d('0x11')]===0x1f4){logger[_0xc40d('0x10')]('Dynamics365Account,\x20%s,\x20%s',_0x491cfb,_0x5bf24b['error']['message']);return _0x5e0431(_0x5bf24b[_0xc40d('0x10')][_0xc40d('0x12')]);}logger['error']('Dynamics365Account,\x20%s,\x20%s',_0x491cfb,_0x5bf24b[_0xc40d('0x10')]['message']);return _0x43624d(_0x5bf24b[_0xc40d('0x10')][_0xc40d('0x12')]);}else{logger['info'](_0xc40d('0xd'),_0x491cfb,_0xc40d('0xe'));_0x43624d(_0x5bf24b[_0xc40d('0x13')]['message']);}})[_0xc40d('0x14')](function(_0x32370b){logger[_0xc40d('0x10')](_0xc40d('0xd'),_0x491cfb,_0x32370b);_0x5e0431(_0x32370b);});});}exports[_0xc40d('0x15')]=function(_0x2b33d2){var _0x5748cb=this;return new Promise(function(_0x2c3c35,_0x522a22){return db[_0xc40d('0x16')][_0xc40d('0x17')]({'raw':_0x2b33d2[_0xc40d('0x18')]?_0x2b33d2[_0xc40d('0x18')][_0xc40d('0x19')]===undefined?!![]:![]:!![],'where':_0x2b33d2[_0xc40d('0x18')]?_0x2b33d2[_0xc40d('0x18')][_0xc40d('0x1a')]||null:null,'attributes':_0x2b33d2[_0xc40d('0x18')]?_0x2b33d2['options'][_0xc40d('0x1b')]||null:null,'limit':_0x2b33d2[_0xc40d('0x18')]?_0x2b33d2[_0xc40d('0x18')][_0xc40d('0x1c')]||null:null,'include':_0x2b33d2[_0xc40d('0x18')]?_0x2b33d2[_0xc40d('0x18')][_0xc40d('0x1d')]?_['map'](_0x2b33d2[_0xc40d('0x18')][_0xc40d('0x1d')],function(_0x443262){return{'model':db[_0x443262[_0xc40d('0x1e')]],'as':_0x443262['as'],'attributes':_0x443262[_0xc40d('0x1b')],'include':_0x443262[_0xc40d('0x1d')]?_['map'](_0x443262['include'],function(_0x187c37){return{'model':db[_0x187c37[_0xc40d('0x1e')]],'as':_0x187c37['as'],'attributes':_0x187c37[_0xc40d('0x1b')],'include':_0x187c37[_0xc40d('0x1d')]?_[_0xc40d('0x1f')](_0x187c37[_0xc40d('0x1d')],function(_0x76edae){return{'model':db[_0x76edae['model']],'as':_0x76edae['as'],'attributes':_0x76edae['attributes']};}):[]};}):[]};}):[]:[]})[_0xc40d('0xc')](function(_0x457ee0){logger['info'](_0xc40d('0x15'),_0x2b33d2);logger[_0xc40d('0x20')](_0xc40d('0x15'),_0x2b33d2,JSON[_0xc40d('0x21')](_0x457ee0));_0x2c3c35(_0x457ee0);})['catch'](function(_0x1eed06){logger[_0xc40d('0x10')](_0xc40d('0x15'),_0x1eed06['message'],_0x2b33d2);_0x522a22(_0x5748cb[_0xc40d('0x10')](0x1f4,_0x1eed06['message']));});});};exports[_0xc40d('0x22')]=function(_0x5ce34a){var _0xad3448=this;return new Promise(function(_0x392650,_0x21de30){return db['Dynamics365Account']['find']({'raw':_0x5ce34a[_0xc40d('0x18')]?_0x5ce34a[_0xc40d('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x5ce34a[_0xc40d('0x18')]?_0x5ce34a[_0xc40d('0x18')]['where']||null:null,'attributes':_0x5ce34a['options']?_0x5ce34a[_0xc40d('0x18')]['attributes']||null:null,'include':_0x5ce34a[_0xc40d('0x18')]?_0x5ce34a[_0xc40d('0x18')][_0xc40d('0x1d')]?_[_0xc40d('0x1f')](_0x5ce34a[_0xc40d('0x18')][_0xc40d('0x1d')],function(_0x3126eb){return{'model':db[_0x3126eb[_0xc40d('0x1e')]],'as':_0x3126eb['as'],'attributes':_0x3126eb['attributes'],'include':_0x3126eb[_0xc40d('0x1d')]?_[_0xc40d('0x1f')](_0x3126eb[_0xc40d('0x1d')],function(_0x2e0cbf){return{'model':db[_0x2e0cbf['model']],'as':_0x2e0cbf['as'],'attributes':_0x2e0cbf[_0xc40d('0x1b')],'include':_0x2e0cbf[_0xc40d('0x1d')]?_[_0xc40d('0x1f')](_0x2e0cbf[_0xc40d('0x1d')],function(_0x211589){return{'model':db[_0x211589[_0xc40d('0x1e')]],'as':_0x211589['as'],'attributes':_0x211589[_0xc40d('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xc40d('0xc')](function(_0x360a1){logger[_0xc40d('0x23')]('ShowDynamics365Account',_0x5ce34a);logger[_0xc40d('0x20')](_0xc40d('0x22'),_0x5ce34a,JSON[_0xc40d('0x21')](_0x360a1));_0x392650(_0x360a1);})[_0xc40d('0x14')](function(_0x78b91e){logger['error'](_0xc40d('0x22'),_0x78b91e[_0xc40d('0x12')],_0x5ce34a);_0x21de30(_0xad3448['error'](0x1f4,_0x78b91e[_0xc40d('0x12')]));});});};
\ No newline at end of file
+var _0x97d6=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','info','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','Dynamics365Account,\x20%s,\x20%s','message','result','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','limit','include','map','model','attributes','where','ShowDynamics365Account','lodash','util'];(function(_0x3ba8be,_0x3203ee){var _0x3ae0d8=function(_0x3e0c5c){while(--_0x3e0c5c){_0x3ba8be['push'](_0x3ba8be['shift']());}};_0x3ae0d8(++_0x3203ee);}(_0x97d6,0x18a));var _0x697d=function(_0x496333,_0x1c47d6){_0x496333=_0x496333-0x0;var _0x44256e=_0x97d6[_0x496333];return _0x44256e;};'use strict';var _=require(_0x697d('0x0'));var util=require(_0x697d('0x1'));var moment=require(_0x697d('0x2'));var BPromise=require(_0x697d('0x3'));var rs=require(_0x697d('0x4'));var fs=require('fs');var Redis=require(_0x697d('0x5'));var db=require(_0x697d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x697d('0x7'))('rpc');var config=require(_0x697d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x697d('0x9')][_0x697d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15bb92,_0x1dfa54,_0x3f7080){return new BPromise(function(_0x5d2ed3,_0x1c3d89){return client[_0x697d('0xb')](_0x15bb92,_0x3f7080)[_0x697d('0xc')](function(_0x4278fe){logger[_0x697d('0xd')]('Dynamics365Account,\x20%s,\x20%s',_0x1dfa54,_0x697d('0xe'));logger[_0x697d('0xf')](_0x697d('0x10'),_0x1dfa54,'request\x20sent',JSON[_0x697d('0x11')](_0x4278fe));if(_0x4278fe[_0x697d('0x12')]){if(_0x4278fe[_0x697d('0x12')][_0x697d('0x13')]===0x1f4){logger[_0x697d('0x12')](_0x697d('0x14'),_0x1dfa54,_0x4278fe[_0x697d('0x12')][_0x697d('0x15')]);return _0x1c3d89(_0x4278fe[_0x697d('0x12')][_0x697d('0x15')]);}logger[_0x697d('0x12')]('Dynamics365Account,\x20%s,\x20%s',_0x1dfa54,_0x4278fe[_0x697d('0x12')][_0x697d('0x15')]);return _0x5d2ed3(_0x4278fe[_0x697d('0x12')][_0x697d('0x15')]);}else{logger[_0x697d('0xd')](_0x697d('0x14'),_0x1dfa54,_0x697d('0xe'));_0x5d2ed3(_0x4278fe[_0x697d('0x16')][_0x697d('0x15')]);}})[_0x697d('0x17')](function(_0xdcd316){logger[_0x697d('0x12')]('Dynamics365Account,\x20%s,\x20%s',_0x1dfa54,_0xdcd316);_0x1c3d89(_0xdcd316);});});}exports[_0x697d('0x18')]=function(_0x9ad684){var _0x4264c3=this;return new Promise(function(_0x298e24,_0x445f86){return db[_0x697d('0x19')][_0x697d('0x1a')]({'raw':_0x9ad684[_0x697d('0x1b')]?_0x9ad684[_0x697d('0x1b')][_0x697d('0x1c')]===undefined?!![]:![]:!![],'where':_0x9ad684[_0x697d('0x1b')]?_0x9ad684[_0x697d('0x1b')]['where']||null:null,'attributes':_0x9ad684['options']?_0x9ad684[_0x697d('0x1b')]['attributes']||null:null,'limit':_0x9ad684['options']?_0x9ad684[_0x697d('0x1b')][_0x697d('0x1d')]||null:null,'include':_0x9ad684[_0x697d('0x1b')]?_0x9ad684['options'][_0x697d('0x1e')]?_[_0x697d('0x1f')](_0x9ad684[_0x697d('0x1b')][_0x697d('0x1e')],function(_0x2877c3){return{'model':db[_0x2877c3[_0x697d('0x20')]],'as':_0x2877c3['as'],'attributes':_0x2877c3[_0x697d('0x21')],'include':_0x2877c3[_0x697d('0x1e')]?_[_0x697d('0x1f')](_0x2877c3['include'],function(_0x212421){return{'model':db[_0x212421[_0x697d('0x20')]],'as':_0x212421['as'],'attributes':_0x212421[_0x697d('0x21')],'include':_0x212421[_0x697d('0x1e')]?_[_0x697d('0x1f')](_0x212421[_0x697d('0x1e')],function(_0x20c7f0){return{'model':db[_0x20c7f0[_0x697d('0x20')]],'as':_0x20c7f0['as'],'attributes':_0x20c7f0[_0x697d('0x21')]};}):[]};}):[]};}):[]:[]})[_0x697d('0xc')](function(_0x2e06da){logger['info'](_0x697d('0x18'),_0x9ad684);logger['debug']('GetDynamics365Account',_0x9ad684,JSON[_0x697d('0x11')](_0x2e06da));_0x298e24(_0x2e06da);})[_0x697d('0x17')](function(_0x407389){logger[_0x697d('0x12')](_0x697d('0x18'),_0x407389[_0x697d('0x15')],_0x9ad684);_0x445f86(_0x4264c3[_0x697d('0x12')](0x1f4,_0x407389[_0x697d('0x15')]));});});};exports['ShowDynamics365Account']=function(_0x31e607){var _0x34e4f7=this;return new Promise(function(_0x4a25fd,_0x4bfb64){return db[_0x697d('0x19')]['find']({'raw':_0x31e607['options']?_0x31e607[_0x697d('0x1b')][_0x697d('0x1c')]===undefined?!![]:![]:!![],'where':_0x31e607[_0x697d('0x1b')]?_0x31e607['options'][_0x697d('0x22')]||null:null,'attributes':_0x31e607['options']?_0x31e607[_0x697d('0x1b')][_0x697d('0x21')]||null:null,'include':_0x31e607['options']?_0x31e607['options'][_0x697d('0x1e')]?_['map'](_0x31e607[_0x697d('0x1b')][_0x697d('0x1e')],function(_0x357583){return{'model':db[_0x357583[_0x697d('0x20')]],'as':_0x357583['as'],'attributes':_0x357583[_0x697d('0x21')],'include':_0x357583[_0x697d('0x1e')]?_[_0x697d('0x1f')](_0x357583['include'],function(_0x5f39d8){return{'model':db[_0x5f39d8['model']],'as':_0x5f39d8['as'],'attributes':_0x5f39d8[_0x697d('0x21')],'include':_0x5f39d8[_0x697d('0x1e')]?_[_0x697d('0x1f')](_0x5f39d8[_0x697d('0x1e')],function(_0x102c91){return{'model':db[_0x102c91[_0x697d('0x20')]],'as':_0x102c91['as'],'attributes':_0x102c91[_0x697d('0x21')]};}):[]};}):[]};}):[]:[]})[_0x697d('0xc')](function(_0x5ac3ed){logger[_0x697d('0xd')](_0x697d('0x23'),_0x31e607);logger['debug'](_0x697d('0x23'),_0x31e607,JSON['stringify'](_0x5ac3ed));_0x4a25fd(_0x5ac3ed);})['catch'](function(_0x313608){logger[_0x697d('0x12')]('ShowDynamics365Account',_0x313608[_0x697d('0x15')],_0x31e607);_0x4bfb64(_0x34e4f7[_0x697d('0x12')](0x1f4,_0x313608[_0x697d('0x15')]));});});};
\ No newline at end of file
index c42b7eb..95116b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1516=['./intDynamics365Configuration.controller','isAuthenticated','index','get','/:id','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','update','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x5b2c8c,_0x1d704d){var _0x1e347f=function(_0x5dde3e){while(--_0x5dde3e){_0x5b2c8c['push'](_0x5b2c8c['shift']());}};_0x1e347f(++_0x1d704d);}(_0x1516,0xb0));var _0x6151=function(_0xeebfaa,_0x1ff1aa){_0xeebfaa=_0xeebfaa-0x0;var _0x3935b1=_0x1516[_0xeebfaa];return _0x3935b1;};'use strict';var multer=require(_0x6151('0x0'));var util=require(_0x6151('0x1'));var path=require(_0x6151('0x2'));var timeout=require('connect-timeout');var express=require(_0x6151('0x3'));var router=express[_0x6151('0x4')]();var fs_extra=require(_0x6151('0x5'));var auth=require(_0x6151('0x6'));var interaction=require(_0x6151('0x7'));var config=require('../../config/environment');var controller=require(_0x6151('0x8'));router['get']('/',auth[_0x6151('0x9')](),controller[_0x6151('0xa')]);router[_0x6151('0xb')](_0x6151('0xc'),auth[_0x6151('0x9')](),controller[_0x6151('0xd')]);router[_0x6151('0xb')](_0x6151('0xe'),auth[_0x6151('0x9')](),controller['getFields']);router['get'](_0x6151('0xf'),auth[_0x6151('0x9')](),controller[_0x6151('0x10')]);router[_0x6151('0xb')](_0x6151('0x11'),auth[_0x6151('0x9')](),controller[_0x6151('0x12')]);router[_0x6151('0x13')]('/',auth[_0x6151('0x9')](),controller['create']);router['put'](_0x6151('0xc'),auth[_0x6151('0x9')](),controller[_0x6151('0x14')]);router['delete'](_0x6151('0xc'),auth[_0x6151('0x9')](),controller[_0x6151('0x15')]);module[_0x6151('0x16')]=router;
\ No newline at end of file
+var _0x783c=['show','getFields','get','/:id/subjects','getSubjects','getDescriptions','post','create','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','index','isAuthenticated'];(function(_0x3513f4,_0x5243ce){var _0x2e4e41=function(_0x2c65ad){while(--_0x2c65ad){_0x3513f4['push'](_0x3513f4['shift']());}};_0x2e4e41(++_0x5243ce);}(_0x783c,0xaf));var _0xc783=function(_0x43f61b,_0x59bef2){_0x43f61b=_0x43f61b-0x0;var _0xc53341=_0x783c[_0x43f61b];return _0xc53341;};'use strict';var multer=require(_0xc783('0x0'));var util=require('util');var path=require(_0xc783('0x1'));var timeout=require(_0xc783('0x2'));var express=require(_0xc783('0x3'));var router=express['Router']();var fs_extra=require(_0xc783('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xc783('0x5'));var config=require(_0xc783('0x6'));var controller=require('./intDynamics365Configuration.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xc783('0x7')]);router['get']('/:id',auth[_0xc783('0x8')](),controller[_0xc783('0x9')]);router['get']('/:id/fields',auth[_0xc783('0x8')](),controller[_0xc783('0xa')]);router[_0xc783('0xb')](_0xc783('0xc'),auth[_0xc783('0x8')](),controller[_0xc783('0xd')]);router[_0xc783('0xb')]('/:id/descriptions',auth[_0xc783('0x8')](),controller[_0xc783('0xe')]);router[_0xc783('0xf')]('/',auth['isAuthenticated'](),controller[_0xc783('0x10')]);router[_0xc783('0x11')](_0xc783('0x12'),auth[_0xc783('0x8')](),controller[_0xc783('0x13')]);router[_0xc783('0x14')]('/:id',auth[_0xc783('0x8')](),controller[_0xc783('0x15')]);module[_0xc783('0x16')]=router;
\ No newline at end of file
index c2495ab..e6e4c09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24db=['incident','sequelize','exports','STRING','ENUM'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x24db,0xbf));var _0xb24d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x24db[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xb24d('0x0'));module[_0xb24d('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb24d('0x2')]},'ticketType':{'type':Sequelize[_0xb24d('0x3')](_0xb24d('0x4'),'phonecall'),'defaultValue':_0xb24d('0x4')}};
\ No newline at end of file
+var _0x5e93=['incident','sequelize','exports'];(function(_0x5b64a1,_0x2ec810){var _0x4b6f55=function(_0x44dd84){while(--_0x44dd84){_0x5b64a1['push'](_0x5b64a1['shift']());}};_0x4b6f55(++_0x2ec810);}(_0x5e93,0xdc));var _0x35e9=function(_0xf8305d,_0x1600c0){_0xf8305d=_0xf8305d-0x0;var _0x5326c5=_0x5e93[_0xf8305d];return _0x5326c5;};'use strict';var Sequelize=require(_0x35e9('0x0'));module[_0x35e9('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize['ENUM'](_0x35e9('0x2'),'phonecall'),'defaultValue':_0x35e9('0x2')}};
\ No newline at end of file
index a70e0c0..bbcc26b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fcb=['sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','getFields','findOne','Dynamics365Field','order','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','map','Dynamics365Configuration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty'];(function(_0xc9396b,_0x734ceb){var _0x56d6ee=function(_0x2456c0){while(--_0x2456c0){_0xc9396b['push'](_0xc9396b['shift']());}};_0x56d6ee(++_0x734ceb);}(_0x7fcb,0xbd));var _0xb7fc=function(_0x1855de,_0x15a076){_0x1855de=_0x1855de-0x0;var _0x16b75a=_0x7fcb[_0x1855de];return _0x16b75a;};'use strict';var emlformat=require(_0xb7fc('0x0'));var rimraf=require(_0xb7fc('0x1'));var zipdir=require(_0xb7fc('0x2'));var jsonpatch=require(_0xb7fc('0x3'));var rp=require(_0xb7fc('0x4'));var moment=require('moment');var BPromise=require(_0xb7fc('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xb7fc('0x6'));var ejs=require(_0xb7fc('0x7'));var fs=require('fs');var fs_extra=require(_0xb7fc('0x8'));var _=require(_0xb7fc('0x9'));var squel=require(_0xb7fc('0xa'));var crypto=require(_0xb7fc('0xb'));var jsforce=require(_0xb7fc('0xc'));var deskjs=require(_0xb7fc('0xd'));var toCsv=require(_0xb7fc('0x6'));var querystring=require(_0xb7fc('0xe'));var Papa=require(_0xb7fc('0xf'));var Redis=require(_0xb7fc('0x10'));var authService=require(_0xb7fc('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xb7fc('0x12'));var hardwareService=require(_0xb7fc('0x13'));var logger=require(_0xb7fc('0x14'))(_0xb7fc('0x15'));var utils=require(_0xb7fc('0x16'));var config=require(_0xb7fc('0x17'));var licenseUtil=require(_0xb7fc('0x18'));var db=require(_0xb7fc('0x19'))['db'];function respondWithStatusCode(_0x15d2bb,_0x62e37b){_0x62e37b=_0x62e37b||0xcc;return function(_0x36fba6){if(_0x36fba6){return _0x15d2bb['sendStatus'](_0x62e37b);}return _0x15d2bb[_0xb7fc('0x1a')](_0x62e37b)[_0xb7fc('0x1b')]();};}function respondWithResult(_0x857ecc,_0x3b592a){_0x3b592a=_0x3b592a||0xc8;return function(_0x4ed515){if(_0x4ed515){return _0x857ecc[_0xb7fc('0x1a')](_0x3b592a)[_0xb7fc('0x1c')](_0x4ed515);}};}function respondWithFilteredResult(_0x44570a,_0x2188c4){return function(_0x204e71){if(_0x204e71){var _0x4a9c00=typeof _0x2188c4[_0xb7fc('0x1d')]===_0xb7fc('0x1e')&&typeof _0x2188c4[_0xb7fc('0x1f')]==='undefined';var _0x163346=_0x204e71[_0xb7fc('0x20')];var _0x2b13a1=_0x4a9c00?0x0:_0x2188c4[_0xb7fc('0x1d')];var _0x4de171=_0x4a9c00?_0x204e71['count']:_0x2188c4['offset']+_0x2188c4['limit'];var _0x5b8eeb;if(_0x4de171>=_0x163346){_0x4de171=_0x163346;_0x5b8eeb=0xc8;}else{_0x5b8eeb=0xce;}_0x44570a['status'](_0x5b8eeb);return _0x44570a[_0xb7fc('0x21')](_0xb7fc('0x22'),_0x2b13a1+'-'+_0x4de171+'/'+_0x163346)['json'](_0x204e71);}return null;};}function patchUpdates(_0x392176){return function(_0x3f69fa){try{jsonpatch[_0xb7fc('0x23')](_0x3f69fa,_0x392176,!![]);}catch(_0x1f366e){return BPromise[_0xb7fc('0x24')](_0x1f366e);}return _0x3f69fa['save']();};}function saveUpdates(_0x114175,_0x503648){return function(_0xb69f50){if(_0xb69f50){return _0xb69f50[_0xb7fc('0x25')](_0x114175)[_0xb7fc('0x26')](function(_0x51a482){return _0x51a482;});}return null;};}function removeEntity(_0x54555a,_0x16cd73){return function(_0x231c23){if(_0x231c23){return _0x231c23[_0xb7fc('0x27')]()[_0xb7fc('0x26')](function(){_0x54555a[_0xb7fc('0x1a')](0xcc)[_0xb7fc('0x1b')]();});}};}function handleEntityNotFound(_0x4f622c,_0x58795a){return function(_0x259c50){if(!_0x259c50){_0x4f622c[_0xb7fc('0x28')](0x194);}return _0x259c50;};}function handleError(_0x5b9fc9,_0x1b013f){_0x1b013f=_0x1b013f||0x1f4;return function(_0x202650){logger[_0xb7fc('0x29')](_0x202650[_0xb7fc('0x2a')]);if(_0x202650[_0xb7fc('0x2b')]){delete _0x202650[_0xb7fc('0x2b')];}_0x5b9fc9[_0xb7fc('0x1a')](_0x1b013f)[_0xb7fc('0x2c')](_0x202650);};}exports['index']=function(_0x5672ba,_0x16fe8a){var _0x42ea3e={},_0x55286d={},_0x3f76e9={'count':0x0,'rows':[]};var _0x2611c9=_[_0xb7fc('0x2d')](db[_0xb7fc('0x2e')][_0xb7fc('0x2f')],function(_0x4bb15e){return{'name':_0x4bb15e[_0xb7fc('0x30')],'type':_0x4bb15e[_0xb7fc('0x31')][_0xb7fc('0x32')]};});_0x55286d[_0xb7fc('0x33')]=_[_0xb7fc('0x2d')](_0x2611c9,_0xb7fc('0x2b'));_0x55286d[_0xb7fc('0x34')]=_[_0xb7fc('0x35')](_0x5672ba[_0xb7fc('0x34')]);_0x55286d[_0xb7fc('0x36')]=_[_0xb7fc('0x37')](_0x55286d[_0xb7fc('0x33')],_0x55286d['query']);_0x42ea3e['attributes']=_[_0xb7fc('0x37')](_0x55286d[_0xb7fc('0x33')],qs[_0xb7fc('0x38')](_0x5672ba[_0xb7fc('0x34')][_0xb7fc('0x38')]));_0x42ea3e[_0xb7fc('0x39')]=_0x42ea3e['attributes'][_0xb7fc('0x3a')]?_0x42ea3e['attributes']:_0x55286d[_0xb7fc('0x33')];if(!_0x5672ba[_0xb7fc('0x34')][_0xb7fc('0x3b')]('nolimit')){_0x42ea3e['limit']=qs[_0xb7fc('0x1f')](_0x5672ba[_0xb7fc('0x34')][_0xb7fc('0x1f')]);_0x42ea3e['offset']=qs[_0xb7fc('0x1d')](_0x5672ba[_0xb7fc('0x34')][_0xb7fc('0x1d')]);}_0x42ea3e['order']=qs['sort'](_0x5672ba['query'][_0xb7fc('0x3c')]);_0x42ea3e[_0xb7fc('0x3d')]=qs[_0xb7fc('0x36')](_[_0xb7fc('0x3e')](_0x5672ba[_0xb7fc('0x34')],_0x55286d['filters']),_0x2611c9);if(_0x5672ba[_0xb7fc('0x34')][_0xb7fc('0x3f')]){_0x42ea3e['where']=_[_0xb7fc('0x40')](_0x42ea3e['where'],{'$or':_[_0xb7fc('0x2d')](_0x2611c9,function(_0x13cd3a){if(_0x13cd3a['type']!==_0xb7fc('0x41')){var _0x1a7fa3={};_0x1a7fa3[_0x13cd3a[_0xb7fc('0x2b')]]={'$like':'%'+_0x5672ba[_0xb7fc('0x34')][_0xb7fc('0x3f')]+'%'};return _0x1a7fa3;}})});}_0x42ea3e=_['merge']({},_0x42ea3e,_0x5672ba[_0xb7fc('0x42')]);var _0x4dc1ae={'where':_0x42ea3e['where']};return db[_0xb7fc('0x2e')][_0xb7fc('0x20')](_0x4dc1ae)[_0xb7fc('0x26')](function(_0x457092){_0x3f76e9[_0xb7fc('0x20')]=_0x457092;if(_0x5672ba[_0xb7fc('0x34')][_0xb7fc('0x43')]){_0x42ea3e[_0xb7fc('0x44')]=[{'all':!![]}];}return db['Dynamics365Configuration']['findAll'](_0x42ea3e);})['then'](function(_0x59e3a7){_0x3f76e9[_0xb7fc('0x45')]=_0x59e3a7;return _0x3f76e9;})[_0xb7fc('0x26')](respondWithFilteredResult(_0x16fe8a,_0x42ea3e))[_0xb7fc('0x46')](handleError(_0x16fe8a,null));};exports[_0xb7fc('0x47')]=function(_0xb5b773,_0x3f10b5){var _0x525aa9={'raw':![],'where':{'id':_0xb5b773[_0xb7fc('0x48')]['id']}},_0x8a9de2={};_0x8a9de2[_0xb7fc('0x33')]=_[_0xb7fc('0x35')](db['Dynamics365Configuration'][_0xb7fc('0x2f')]);_0x8a9de2[_0xb7fc('0x34')]=_[_0xb7fc('0x35')](_0xb5b773[_0xb7fc('0x34')]);_0x8a9de2[_0xb7fc('0x36')]=_['intersection'](_0x8a9de2['model'],_0x8a9de2[_0xb7fc('0x34')]);_0x525aa9[_0xb7fc('0x39')]=_[_0xb7fc('0x37')](_0x8a9de2[_0xb7fc('0x33')],qs[_0xb7fc('0x38')](_0xb5b773['query'][_0xb7fc('0x38')]));_0x525aa9[_0xb7fc('0x39')]=_0x525aa9[_0xb7fc('0x39')][_0xb7fc('0x3a')]?_0x525aa9['attributes']:_0x8a9de2[_0xb7fc('0x33')];if(_0xb5b773[_0xb7fc('0x34')]['includeAll']){_0x525aa9['include']=[{'all':!![]}];}_0x525aa9=_[_0xb7fc('0x40')]({},_0x525aa9,_0xb5b773[_0xb7fc('0x42')]);return db['Dynamics365Configuration'][_0xb7fc('0x49')](_0x525aa9)[_0xb7fc('0x26')](handleEntityNotFound(_0x3f10b5,null))[_0xb7fc('0x26')](respondWithResult(_0x3f10b5,null))[_0xb7fc('0x46')](handleError(_0x3f10b5,null));};exports[_0xb7fc('0x4a')]=function(_0x5e3962,_0x8e2a5a){return db[_0xb7fc('0x2e')][_0xb7fc('0x4a')](_0x5e3962[_0xb7fc('0x4b')],{})[_0xb7fc('0x26')](respondWithResult(_0x8e2a5a,0xc9))[_0xb7fc('0x46')](handleError(_0x8e2a5a,null));};exports['update']=function(_0x1c15dc,_0x34be43){if(_0x1c15dc[_0xb7fc('0x4b')]['id']){delete _0x1c15dc['body']['id'];}return db['Dynamics365Configuration'][_0xb7fc('0x49')]({'where':{'id':_0x1c15dc['params']['id']}})[_0xb7fc('0x26')](handleEntityNotFound(_0x34be43,null))[_0xb7fc('0x26')](saveUpdates(_0x1c15dc[_0xb7fc('0x4b')],null))[_0xb7fc('0x26')](respondWithResult(_0x34be43,null))[_0xb7fc('0x46')](handleError(_0x34be43,null));};exports['destroy']=function(_0x54ab40,_0x3e8448){return db[_0xb7fc('0x2e')][_0xb7fc('0x49')]({'where':{'id':_0x54ab40[_0xb7fc('0x48')]['id']}})[_0xb7fc('0x26')](handleEntityNotFound(_0x3e8448,null))[_0xb7fc('0x26')](removeEntity(_0x3e8448,null))[_0xb7fc('0x46')](handleError(_0x3e8448,null));};exports[_0xb7fc('0x4c')]=function(_0x242744,_0x3c2f72,_0x2ef015){var _0x589ef9={};var _0x543a16={};var _0x17e630;var _0x14dcd5;return db[_0xb7fc('0x2e')][_0xb7fc('0x4d')]({'where':{'id':_0x242744[_0xb7fc('0x48')]['id']}})[_0xb7fc('0x26')](handleEntityNotFound(_0x3c2f72,null))['then'](function(_0xed988f){if(_0xed988f){_0x17e630=_0xed988f;_0x543a16['model']=_[_0xb7fc('0x35')](db[_0xb7fc('0x4e')][_0xb7fc('0x2f')]);_0x543a16[_0xb7fc('0x34')]=_['keys'](_0x242744[_0xb7fc('0x34')]);_0x543a16[_0xb7fc('0x36')]=_[_0xb7fc('0x37')](_0x543a16[_0xb7fc('0x33')],_0x543a16['query']);_0x589ef9['attributes']=_['intersection'](_0x543a16[_0xb7fc('0x33')],qs[_0xb7fc('0x38')](_0x242744['query'][_0xb7fc('0x38')]));_0x589ef9[_0xb7fc('0x39')]=_0x589ef9[_0xb7fc('0x39')]['length']?_0x589ef9[_0xb7fc('0x39')]:_0x543a16[_0xb7fc('0x33')];_0x589ef9[_0xb7fc('0x4f')]=qs[_0xb7fc('0x3c')](_0x242744[_0xb7fc('0x34')][_0xb7fc('0x3c')]);_0x589ef9[_0xb7fc('0x3d')]=qs[_0xb7fc('0x36')](_[_0xb7fc('0x3e')](_0x242744['query'],_0x543a16[_0xb7fc('0x36')]));if(_0x242744[_0xb7fc('0x34')][_0xb7fc('0x3f')]){_0x589ef9[_0xb7fc('0x3d')]=_['merge'](_0x589ef9[_0xb7fc('0x3d')],{'$or':_[_0xb7fc('0x2d')](_0x589ef9[_0xb7fc('0x39')],function(_0x29916f){var _0x20d84a={};_0x20d84a[_0x29916f]={'$like':'%'+_0x242744[_0xb7fc('0x34')]['filter']+'%'};return _0x20d84a;})});}_0x589ef9=_[_0xb7fc('0x40')]({},_0x589ef9,_0x242744[_0xb7fc('0x42')]);return _0x17e630[_0xb7fc('0x4c')](_0x589ef9);}})[_0xb7fc('0x26')](function(_0x30867e){if(_0x30867e){_0x14dcd5=_0x30867e['length'];if(!_0x242744[_0xb7fc('0x34')][_0xb7fc('0x3b')](_0xb7fc('0x50'))){_0x589ef9['limit']=qs[_0xb7fc('0x1f')](_0x242744['query'][_0xb7fc('0x1f')]);_0x589ef9[_0xb7fc('0x1d')]=qs[_0xb7fc('0x1d')](_0x242744[_0xb7fc('0x34')][_0xb7fc('0x1d')]);}return _0x17e630[_0xb7fc('0x4c')](_0x589ef9);}})['then'](function(_0x3e996f){if(_0x3e996f){return _0x3e996f?{'count':_0x14dcd5,'rows':_0x3e996f}:null;}})[_0xb7fc('0x26')](respondWithResult(_0x3c2f72,null))['catch'](handleError(_0x3c2f72,null));};exports[_0xb7fc('0x51')]=function(_0x3473ad,_0x5926d7,_0xe6c860){var _0x2f033d={};var _0x5acbb1={};var _0x364071;var _0x3dcadc;return db[_0xb7fc('0x2e')][_0xb7fc('0x4d')]({'where':{'id':_0x3473ad[_0xb7fc('0x48')]['id']}})[_0xb7fc('0x26')](handleEntityNotFound(_0x5926d7,null))['then'](function(_0xe1a0ef){if(_0xe1a0ef){_0x364071=_0xe1a0ef;_0x5acbb1[_0xb7fc('0x33')]=_[_0xb7fc('0x35')](db['Dynamics365Field'][_0xb7fc('0x2f')]);_0x5acbb1[_0xb7fc('0x34')]=_[_0xb7fc('0x35')](_0x3473ad[_0xb7fc('0x34')]);_0x5acbb1['filters']=_[_0xb7fc('0x37')](_0x5acbb1[_0xb7fc('0x33')],_0x5acbb1[_0xb7fc('0x34')]);_0x2f033d['attributes']=_[_0xb7fc('0x37')](_0x5acbb1[_0xb7fc('0x33')],qs['fields'](_0x3473ad[_0xb7fc('0x34')][_0xb7fc('0x38')]));_0x2f033d[_0xb7fc('0x39')]=_0x2f033d[_0xb7fc('0x39')]['length']?_0x2f033d[_0xb7fc('0x39')]:_0x5acbb1[_0xb7fc('0x33')];_0x2f033d[_0xb7fc('0x4f')]=qs['sort'](_0x3473ad[_0xb7fc('0x34')][_0xb7fc('0x3c')]);_0x2f033d[_0xb7fc('0x3d')]=qs[_0xb7fc('0x36')](_['pick'](_0x3473ad[_0xb7fc('0x34')],_0x5acbb1[_0xb7fc('0x36')]));if(_0x3473ad['query'][_0xb7fc('0x3f')]){_0x2f033d[_0xb7fc('0x3d')]=_[_0xb7fc('0x40')](_0x2f033d[_0xb7fc('0x3d')],{'$or':_[_0xb7fc('0x2d')](_0x2f033d[_0xb7fc('0x39')],function(_0x46dc27){var _0x4f9c46={};_0x4f9c46[_0x46dc27]={'$like':'%'+_0x3473ad[_0xb7fc('0x34')][_0xb7fc('0x3f')]+'%'};return _0x4f9c46;})});}_0x2f033d=_[_0xb7fc('0x40')]({},_0x2f033d,_0x3473ad['options']);return _0x364071[_0xb7fc('0x51')](_0x2f033d);}})[_0xb7fc('0x26')](function(_0x155483){if(_0x155483){_0x3dcadc=_0x155483[_0xb7fc('0x3a')];if(!_0x3473ad[_0xb7fc('0x34')][_0xb7fc('0x3b')](_0xb7fc('0x50'))){_0x2f033d[_0xb7fc('0x1f')]=qs[_0xb7fc('0x1f')](_0x3473ad['query'][_0xb7fc('0x1f')]);_0x2f033d[_0xb7fc('0x1d')]=qs[_0xb7fc('0x1d')](_0x3473ad[_0xb7fc('0x34')][_0xb7fc('0x1d')]);}return _0x364071[_0xb7fc('0x51')](_0x2f033d);}})[_0xb7fc('0x26')](function(_0x369b35){if(_0x369b35){return _0x369b35?{'count':_0x3dcadc,'rows':_0x369b35}:null;}})[_0xb7fc('0x26')](respondWithResult(_0x5926d7,null))[_0xb7fc('0x46')](handleError(_0x5926d7,null));};exports[_0xb7fc('0x52')]=function(_0x26d438,_0x43df0d,_0x392dd1){var _0x2a6ff0={};var _0x69b11a={};var _0x47229e;var _0x36abc9;return db[_0xb7fc('0x2e')][_0xb7fc('0x4d')]({'where':{'id':_0x26d438['params']['id']}})['then'](handleEntityNotFound(_0x43df0d,null))[_0xb7fc('0x26')](function(_0x36f163){if(_0x36f163){_0x47229e=_0x36f163;_0x69b11a[_0xb7fc('0x33')]=_[_0xb7fc('0x35')](db[_0xb7fc('0x4e')][_0xb7fc('0x2f')]);_0x69b11a['query']=_[_0xb7fc('0x35')](_0x26d438['query']);_0x69b11a[_0xb7fc('0x36')]=_[_0xb7fc('0x37')](_0x69b11a[_0xb7fc('0x33')],_0x69b11a['query']);_0x2a6ff0[_0xb7fc('0x39')]=_[_0xb7fc('0x37')](_0x69b11a[_0xb7fc('0x33')],qs['fields'](_0x26d438[_0xb7fc('0x34')][_0xb7fc('0x38')]));_0x2a6ff0[_0xb7fc('0x39')]=_0x2a6ff0[_0xb7fc('0x39')]['length']?_0x2a6ff0[_0xb7fc('0x39')]:_0x69b11a[_0xb7fc('0x33')];_0x2a6ff0[_0xb7fc('0x4f')]=qs[_0xb7fc('0x3c')](_0x26d438[_0xb7fc('0x34')][_0xb7fc('0x3c')]);_0x2a6ff0[_0xb7fc('0x3d')]=qs['filters'](_[_0xb7fc('0x3e')](_0x26d438[_0xb7fc('0x34')],_0x69b11a[_0xb7fc('0x36')]));if(_0x26d438[_0xb7fc('0x34')][_0xb7fc('0x3f')]){_0x2a6ff0['where']=_[_0xb7fc('0x40')](_0x2a6ff0[_0xb7fc('0x3d')],{'$or':_[_0xb7fc('0x2d')](_0x2a6ff0[_0xb7fc('0x39')],function(_0x38d676){var _0x23a225={};_0x23a225[_0x38d676]={'$like':'%'+_0x26d438[_0xb7fc('0x34')]['filter']+'%'};return _0x23a225;})});}_0x2a6ff0=_[_0xb7fc('0x40')]({},_0x2a6ff0,_0x26d438[_0xb7fc('0x42')]);return _0x47229e[_0xb7fc('0x52')](_0x2a6ff0);}})[_0xb7fc('0x26')](function(_0x5958fd){if(_0x5958fd){_0x36abc9=_0x5958fd['length'];if(!_0x26d438['query'][_0xb7fc('0x3b')](_0xb7fc('0x50'))){_0x2a6ff0[_0xb7fc('0x1f')]=qs[_0xb7fc('0x1f')](_0x26d438[_0xb7fc('0x34')]['limit']);_0x2a6ff0[_0xb7fc('0x1d')]=qs['offset'](_0x26d438[_0xb7fc('0x34')][_0xb7fc('0x1d')]);}return _0x47229e['getDescriptions'](_0x2a6ff0);}})[_0xb7fc('0x26')](function(_0x3f908c){if(_0x3f908c){return _0x3f908c?{'count':_0x36abc9,'rows':_0x3f908c}:null;}})[_0xb7fc('0x26')](respondWithResult(_0x43df0d,null))[_0xb7fc('0x46')](handleError(_0x43df0d,null));};
\ No newline at end of file
+var _0xe3c4=['includeAll','include','rows','show','rawAttributes','find','catch','create','body','params','getFields','Dynamics365Field','getSubjects','findOne','getDescriptions','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','end','status','json','undefined','limit','count','offset','set','apply','reject','update','then','destroy','error','stack','name','send','index','Dynamics365Configuration','type','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe3c4,0x143));var _0x4e3c=function(_0x597f74,_0x114090){_0x597f74=_0x597f74-0x0;var _0x119025=_0xe3c4[_0x597f74];return _0x119025;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4e3c('0x0'));var jsonpatch=require(_0x4e3c('0x1'));var rp=require(_0x4e3c('0x2'));var moment=require(_0x4e3c('0x3'));var BPromise=require(_0x4e3c('0x4'));var Mustache=require(_0x4e3c('0x5'));var util=require(_0x4e3c('0x6'));var path=require(_0x4e3c('0x7'));var sox=require(_0x4e3c('0x8'));var csv=require('to-csv');var ejs=require(_0x4e3c('0x9'));var fs=require('fs');var fs_extra=require(_0x4e3c('0xa'));var _=require('lodash');var squel=require(_0x4e3c('0xb'));var crypto=require('crypto');var jsforce=require(_0x4e3c('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4e3c('0xd'));var Papa=require(_0x4e3c('0xe'));var Redis=require(_0x4e3c('0xf'));var authService=require(_0x4e3c('0x10'));var qs=require(_0x4e3c('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x4e3c('0x12'))(_0x4e3c('0x13'));var utils=require(_0x4e3c('0x14'));var config=require(_0x4e3c('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x361fca,_0x165b12){_0x165b12=_0x165b12||0xcc;return function(_0x3ceaa2){if(_0x3ceaa2){return _0x361fca[_0x4e3c('0x16')](_0x165b12);}return _0x361fca['status'](_0x165b12)[_0x4e3c('0x17')]();};}function respondWithResult(_0x6d0ed2,_0x194973){_0x194973=_0x194973||0xc8;return function(_0x41dca0){if(_0x41dca0){return _0x6d0ed2[_0x4e3c('0x18')](_0x194973)[_0x4e3c('0x19')](_0x41dca0);}};}function respondWithFilteredResult(_0x55a107,_0x17e308){return function(_0x1f17c2){if(_0x1f17c2){var _0x5bbdb9=typeof _0x17e308['offset']===_0x4e3c('0x1a')&&typeof _0x17e308[_0x4e3c('0x1b')]==='undefined';var _0x47c5cf=_0x1f17c2[_0x4e3c('0x1c')];var _0x101218=_0x5bbdb9?0x0:_0x17e308['offset'];var _0x53518d=_0x5bbdb9?_0x1f17c2[_0x4e3c('0x1c')]:_0x17e308[_0x4e3c('0x1d')]+_0x17e308[_0x4e3c('0x1b')];var _0x477d84;if(_0x53518d>=_0x47c5cf){_0x53518d=_0x47c5cf;_0x477d84=0xc8;}else{_0x477d84=0xce;}_0x55a107[_0x4e3c('0x18')](_0x477d84);return _0x55a107[_0x4e3c('0x1e')]('Content-Range',_0x101218+'-'+_0x53518d+'/'+_0x47c5cf)['json'](_0x1f17c2);}return null;};}function patchUpdates(_0x100014){return function(_0x1556e9){try{jsonpatch[_0x4e3c('0x1f')](_0x1556e9,_0x100014,!![]);}catch(_0x54a424){return BPromise[_0x4e3c('0x20')](_0x54a424);}return _0x1556e9['save']();};}function saveUpdates(_0x8099f,_0x5bd33b){return function(_0x3f3498){if(_0x3f3498){return _0x3f3498[_0x4e3c('0x21')](_0x8099f)[_0x4e3c('0x22')](function(_0x29a1a0){return _0x29a1a0;});}return null;};}function removeEntity(_0xe45215,_0x93b42f){return function(_0x2825d6){if(_0x2825d6){return _0x2825d6[_0x4e3c('0x23')]()['then'](function(){_0xe45215[_0x4e3c('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3cf63d,_0x197bdf){return function(_0xfe8551){if(!_0xfe8551){_0x3cf63d[_0x4e3c('0x16')](0x194);}return _0xfe8551;};}function handleError(_0x193504,_0x2e5227){_0x2e5227=_0x2e5227||0x1f4;return function(_0x10a3d7){logger[_0x4e3c('0x24')](_0x10a3d7[_0x4e3c('0x25')]);if(_0x10a3d7[_0x4e3c('0x26')]){delete _0x10a3d7[_0x4e3c('0x26')];}_0x193504[_0x4e3c('0x18')](_0x2e5227)[_0x4e3c('0x27')](_0x10a3d7);};}exports[_0x4e3c('0x28')]=function(_0x307985,_0x25f846){var _0x475179={},_0x570926={},_0x1255e9={'count':0x0,'rows':[]};var _0x4f457f=_['map'](db[_0x4e3c('0x29')]['rawAttributes'],function(_0x541598){return{'name':_0x541598['fieldName'],'type':_0x541598[_0x4e3c('0x2a')]['key']};});_0x570926[_0x4e3c('0x2b')]=_[_0x4e3c('0x2c')](_0x4f457f,_0x4e3c('0x26'));_0x570926[_0x4e3c('0x2d')]=_[_0x4e3c('0x2e')](_0x307985[_0x4e3c('0x2d')]);_0x570926['filters']=_[_0x4e3c('0x2f')](_0x570926[_0x4e3c('0x2b')],_0x570926[_0x4e3c('0x2d')]);_0x475179['attributes']=_[_0x4e3c('0x2f')](_0x570926[_0x4e3c('0x2b')],qs['fields'](_0x307985[_0x4e3c('0x2d')][_0x4e3c('0x30')]));_0x475179[_0x4e3c('0x31')]=_0x475179[_0x4e3c('0x31')][_0x4e3c('0x32')]?_0x475179[_0x4e3c('0x31')]:_0x570926[_0x4e3c('0x2b')];if(!_0x307985[_0x4e3c('0x2d')][_0x4e3c('0x33')](_0x4e3c('0x34'))){_0x475179[_0x4e3c('0x1b')]=qs['limit'](_0x307985[_0x4e3c('0x2d')][_0x4e3c('0x1b')]);_0x475179[_0x4e3c('0x1d')]=qs[_0x4e3c('0x1d')](_0x307985[_0x4e3c('0x2d')][_0x4e3c('0x1d')]);}_0x475179[_0x4e3c('0x35')]=qs[_0x4e3c('0x36')](_0x307985[_0x4e3c('0x2d')][_0x4e3c('0x36')]);_0x475179[_0x4e3c('0x37')]=qs[_0x4e3c('0x38')](_[_0x4e3c('0x39')](_0x307985['query'],_0x570926[_0x4e3c('0x38')]),_0x4f457f);if(_0x307985[_0x4e3c('0x2d')][_0x4e3c('0x3a')]){_0x475179[_0x4e3c('0x37')]=_['merge'](_0x475179['where'],{'$or':_[_0x4e3c('0x2c')](_0x4f457f,function(_0x13b867){if(_0x13b867[_0x4e3c('0x2a')]!==_0x4e3c('0x3b')){var _0x3177ea={};_0x3177ea[_0x13b867[_0x4e3c('0x26')]]={'$like':'%'+_0x307985[_0x4e3c('0x2d')][_0x4e3c('0x3a')]+'%'};return _0x3177ea;}})});}_0x475179=_[_0x4e3c('0x3c')]({},_0x475179,_0x307985[_0x4e3c('0x3d')]);var _0x4a21b1={'where':_0x475179['where']};return db[_0x4e3c('0x29')][_0x4e3c('0x1c')](_0x4a21b1)['then'](function(_0x2e8290){_0x1255e9[_0x4e3c('0x1c')]=_0x2e8290;if(_0x307985[_0x4e3c('0x2d')][_0x4e3c('0x3e')]){_0x475179[_0x4e3c('0x3f')]=[{'all':!![]}];}return db[_0x4e3c('0x29')]['findAll'](_0x475179);})['then'](function(_0xd08090){_0x1255e9[_0x4e3c('0x40')]=_0xd08090;return _0x1255e9;})[_0x4e3c('0x22')](respondWithFilteredResult(_0x25f846,_0x475179))['catch'](handleError(_0x25f846,null));};exports[_0x4e3c('0x41')]=function(_0xd94f0,_0xaa8ecf){var _0x26a184={'raw':![],'where':{'id':_0xd94f0['params']['id']}},_0x1e34fd={};_0x1e34fd[_0x4e3c('0x2b')]=_[_0x4e3c('0x2e')](db['Dynamics365Configuration'][_0x4e3c('0x42')]);_0x1e34fd['query']=_['keys'](_0xd94f0[_0x4e3c('0x2d')]);_0x1e34fd[_0x4e3c('0x38')]=_[_0x4e3c('0x2f')](_0x1e34fd[_0x4e3c('0x2b')],_0x1e34fd[_0x4e3c('0x2d')]);_0x26a184[_0x4e3c('0x31')]=_[_0x4e3c('0x2f')](_0x1e34fd[_0x4e3c('0x2b')],qs[_0x4e3c('0x30')](_0xd94f0[_0x4e3c('0x2d')][_0x4e3c('0x30')]));_0x26a184[_0x4e3c('0x31')]=_0x26a184[_0x4e3c('0x31')][_0x4e3c('0x32')]?_0x26a184[_0x4e3c('0x31')]:_0x1e34fd[_0x4e3c('0x2b')];if(_0xd94f0['query']['includeAll']){_0x26a184[_0x4e3c('0x3f')]=[{'all':!![]}];}_0x26a184=_[_0x4e3c('0x3c')]({},_0x26a184,_0xd94f0[_0x4e3c('0x3d')]);return db[_0x4e3c('0x29')][_0x4e3c('0x43')](_0x26a184)[_0x4e3c('0x22')](handleEntityNotFound(_0xaa8ecf,null))[_0x4e3c('0x22')](respondWithResult(_0xaa8ecf,null))[_0x4e3c('0x44')](handleError(_0xaa8ecf,null));};exports[_0x4e3c('0x45')]=function(_0x2545d9,_0x2481bc){return db[_0x4e3c('0x29')][_0x4e3c('0x45')](_0x2545d9[_0x4e3c('0x46')],{})[_0x4e3c('0x22')](respondWithResult(_0x2481bc,0xc9))[_0x4e3c('0x44')](handleError(_0x2481bc,null));};exports[_0x4e3c('0x21')]=function(_0x552822,_0x4181f0){if(_0x552822[_0x4e3c('0x46')]['id']){delete _0x552822[_0x4e3c('0x46')]['id'];}return db[_0x4e3c('0x29')][_0x4e3c('0x43')]({'where':{'id':_0x552822[_0x4e3c('0x47')]['id']}})[_0x4e3c('0x22')](handleEntityNotFound(_0x4181f0,null))[_0x4e3c('0x22')](saveUpdates(_0x552822[_0x4e3c('0x46')],null))[_0x4e3c('0x22')](respondWithResult(_0x4181f0,null))['catch'](handleError(_0x4181f0,null));};exports[_0x4e3c('0x23')]=function(_0x613f6,_0x486d51){return db[_0x4e3c('0x29')][_0x4e3c('0x43')]({'where':{'id':_0x613f6['params']['id']}})[_0x4e3c('0x22')](handleEntityNotFound(_0x486d51,null))[_0x4e3c('0x22')](removeEntity(_0x486d51,null))['catch'](handleError(_0x486d51,null));};exports[_0x4e3c('0x48')]=function(_0x359570,_0x29ecc4,_0x2df08d){var _0x1c1ae1={};var _0x9348f3={};var _0xb38b56;var _0x36141b;return db[_0x4e3c('0x29')]['findOne']({'where':{'id':_0x359570[_0x4e3c('0x47')]['id']}})[_0x4e3c('0x22')](handleEntityNotFound(_0x29ecc4,null))['then'](function(_0x561e8b){if(_0x561e8b){_0xb38b56=_0x561e8b;_0x9348f3[_0x4e3c('0x2b')]=_[_0x4e3c('0x2e')](db[_0x4e3c('0x49')]['rawAttributes']);_0x9348f3['query']=_[_0x4e3c('0x2e')](_0x359570[_0x4e3c('0x2d')]);_0x9348f3[_0x4e3c('0x38')]=_[_0x4e3c('0x2f')](_0x9348f3['model'],_0x9348f3['query']);_0x1c1ae1[_0x4e3c('0x31')]=_[_0x4e3c('0x2f')](_0x9348f3['model'],qs['fields'](_0x359570['query']['fields']));_0x1c1ae1[_0x4e3c('0x31')]=_0x1c1ae1[_0x4e3c('0x31')]['length']?_0x1c1ae1['attributes']:_0x9348f3['model'];_0x1c1ae1[_0x4e3c('0x35')]=qs[_0x4e3c('0x36')](_0x359570[_0x4e3c('0x2d')][_0x4e3c('0x36')]);_0x1c1ae1[_0x4e3c('0x37')]=qs[_0x4e3c('0x38')](_[_0x4e3c('0x39')](_0x359570[_0x4e3c('0x2d')],_0x9348f3['filters']));if(_0x359570[_0x4e3c('0x2d')][_0x4e3c('0x3a')]){_0x1c1ae1[_0x4e3c('0x37')]=_[_0x4e3c('0x3c')](_0x1c1ae1[_0x4e3c('0x37')],{'$or':_[_0x4e3c('0x2c')](_0x1c1ae1[_0x4e3c('0x31')],function(_0x581a0b){var _0x4bbb1f={};_0x4bbb1f[_0x581a0b]={'$like':'%'+_0x359570[_0x4e3c('0x2d')][_0x4e3c('0x3a')]+'%'};return _0x4bbb1f;})});}_0x1c1ae1=_[_0x4e3c('0x3c')]({},_0x1c1ae1,_0x359570[_0x4e3c('0x3d')]);return _0xb38b56['getFields'](_0x1c1ae1);}})[_0x4e3c('0x22')](function(_0x4aa390){if(_0x4aa390){_0x36141b=_0x4aa390['length'];if(!_0x359570[_0x4e3c('0x2d')][_0x4e3c('0x33')](_0x4e3c('0x34'))){_0x1c1ae1[_0x4e3c('0x1b')]=qs[_0x4e3c('0x1b')](_0x359570['query'][_0x4e3c('0x1b')]);_0x1c1ae1[_0x4e3c('0x1d')]=qs[_0x4e3c('0x1d')](_0x359570['query'][_0x4e3c('0x1d')]);}return _0xb38b56[_0x4e3c('0x48')](_0x1c1ae1);}})[_0x4e3c('0x22')](function(_0x415402){if(_0x415402){return _0x415402?{'count':_0x36141b,'rows':_0x415402}:null;}})[_0x4e3c('0x22')](respondWithResult(_0x29ecc4,null))['catch'](handleError(_0x29ecc4,null));};exports[_0x4e3c('0x4a')]=function(_0x412ed9,_0x1c05b2,_0x29e1cf){var _0x9e1818={};var _0x2c8d16={};var _0x2f0394;var _0x32083d;return db['Dynamics365Configuration'][_0x4e3c('0x4b')]({'where':{'id':_0x412ed9[_0x4e3c('0x47')]['id']}})[_0x4e3c('0x22')](handleEntityNotFound(_0x1c05b2,null))['then'](function(_0x92880d){if(_0x92880d){_0x2f0394=_0x92880d;_0x2c8d16[_0x4e3c('0x2b')]=_[_0x4e3c('0x2e')](db[_0x4e3c('0x49')][_0x4e3c('0x42')]);_0x2c8d16[_0x4e3c('0x2d')]=_[_0x4e3c('0x2e')](_0x412ed9['query']);_0x2c8d16['filters']=_[_0x4e3c('0x2f')](_0x2c8d16[_0x4e3c('0x2b')],_0x2c8d16[_0x4e3c('0x2d')]);_0x9e1818['attributes']=_[_0x4e3c('0x2f')](_0x2c8d16[_0x4e3c('0x2b')],qs[_0x4e3c('0x30')](_0x412ed9[_0x4e3c('0x2d')][_0x4e3c('0x30')]));_0x9e1818[_0x4e3c('0x31')]=_0x9e1818[_0x4e3c('0x31')][_0x4e3c('0x32')]?_0x9e1818['attributes']:_0x2c8d16[_0x4e3c('0x2b')];_0x9e1818[_0x4e3c('0x35')]=qs[_0x4e3c('0x36')](_0x412ed9[_0x4e3c('0x2d')][_0x4e3c('0x36')]);_0x9e1818[_0x4e3c('0x37')]=qs[_0x4e3c('0x38')](_[_0x4e3c('0x39')](_0x412ed9[_0x4e3c('0x2d')],_0x2c8d16[_0x4e3c('0x38')]));if(_0x412ed9[_0x4e3c('0x2d')]['filter']){_0x9e1818[_0x4e3c('0x37')]=_[_0x4e3c('0x3c')](_0x9e1818[_0x4e3c('0x37')],{'$or':_[_0x4e3c('0x2c')](_0x9e1818[_0x4e3c('0x31')],function(_0xbfaf14){var _0x1fb63d={};_0x1fb63d[_0xbfaf14]={'$like':'%'+_0x412ed9[_0x4e3c('0x2d')][_0x4e3c('0x3a')]+'%'};return _0x1fb63d;})});}_0x9e1818=_[_0x4e3c('0x3c')]({},_0x9e1818,_0x412ed9[_0x4e3c('0x3d')]);return _0x2f0394['getSubjects'](_0x9e1818);}})['then'](function(_0x12d362){if(_0x12d362){_0x32083d=_0x12d362['length'];if(!_0x412ed9['query']['hasOwnProperty'](_0x4e3c('0x34'))){_0x9e1818[_0x4e3c('0x1b')]=qs[_0x4e3c('0x1b')](_0x412ed9[_0x4e3c('0x2d')]['limit']);_0x9e1818[_0x4e3c('0x1d')]=qs['offset'](_0x412ed9[_0x4e3c('0x2d')][_0x4e3c('0x1d')]);}return _0x2f0394[_0x4e3c('0x4a')](_0x9e1818);}})[_0x4e3c('0x22')](function(_0x30b86b){if(_0x30b86b){return _0x30b86b?{'count':_0x32083d,'rows':_0x30b86b}:null;}})[_0x4e3c('0x22')](respondWithResult(_0x1c05b2,null))[_0x4e3c('0x44')](handleError(_0x1c05b2,null));};exports[_0x4e3c('0x4c')]=function(_0x1bb997,_0x16c42d,_0x3c17aa){var _0x53bc69={};var _0x4d84b9={};var _0x3c8749;var _0x4e7cae;return db[_0x4e3c('0x29')]['findOne']({'where':{'id':_0x1bb997[_0x4e3c('0x47')]['id']}})[_0x4e3c('0x22')](handleEntityNotFound(_0x16c42d,null))[_0x4e3c('0x22')](function(_0x180418){if(_0x180418){_0x3c8749=_0x180418;_0x4d84b9[_0x4e3c('0x2b')]=_[_0x4e3c('0x2e')](db['Dynamics365Field'][_0x4e3c('0x42')]);_0x4d84b9[_0x4e3c('0x2d')]=_['keys'](_0x1bb997[_0x4e3c('0x2d')]);_0x4d84b9[_0x4e3c('0x38')]=_[_0x4e3c('0x2f')](_0x4d84b9['model'],_0x4d84b9[_0x4e3c('0x2d')]);_0x53bc69[_0x4e3c('0x31')]=_[_0x4e3c('0x2f')](_0x4d84b9[_0x4e3c('0x2b')],qs['fields'](_0x1bb997[_0x4e3c('0x2d')]['fields']));_0x53bc69[_0x4e3c('0x31')]=_0x53bc69[_0x4e3c('0x31')][_0x4e3c('0x32')]?_0x53bc69[_0x4e3c('0x31')]:_0x4d84b9[_0x4e3c('0x2b')];_0x53bc69[_0x4e3c('0x35')]=qs['sort'](_0x1bb997[_0x4e3c('0x2d')][_0x4e3c('0x36')]);_0x53bc69[_0x4e3c('0x37')]=qs['filters'](_[_0x4e3c('0x39')](_0x1bb997['query'],_0x4d84b9['filters']));if(_0x1bb997[_0x4e3c('0x2d')]['filter']){_0x53bc69[_0x4e3c('0x37')]=_[_0x4e3c('0x3c')](_0x53bc69[_0x4e3c('0x37')],{'$or':_['map'](_0x53bc69[_0x4e3c('0x31')],function(_0x1329a9){var _0x6deedc={};_0x6deedc[_0x1329a9]={'$like':'%'+_0x1bb997[_0x4e3c('0x2d')][_0x4e3c('0x3a')]+'%'};return _0x6deedc;})});}_0x53bc69=_['merge']({},_0x53bc69,_0x1bb997[_0x4e3c('0x3d')]);return _0x3c8749[_0x4e3c('0x4c')](_0x53bc69);}})[_0x4e3c('0x22')](function(_0x33bd56){if(_0x33bd56){_0x4e7cae=_0x33bd56[_0x4e3c('0x32')];if(!_0x1bb997[_0x4e3c('0x2d')][_0x4e3c('0x33')]('nolimit')){_0x53bc69[_0x4e3c('0x1b')]=qs[_0x4e3c('0x1b')](_0x1bb997[_0x4e3c('0x2d')]['limit']);_0x53bc69[_0x4e3c('0x1d')]=qs[_0x4e3c('0x1d')](_0x1bb997['query'][_0x4e3c('0x1d')]);}return _0x3c8749['getDescriptions'](_0x53bc69);}})[_0x4e3c('0x22')](function(_0x9f0357){if(_0x9f0357){return _0x9f0357?{'count':_0x4e7cae,'rows':_0x9f0357}:null;}})[_0x4e3c('0x22')](respondWithResult(_0x16c42d,null))[_0x4e3c('0x44')](handleError(_0x16c42d,null));};
\ No newline at end of file
index 08d9986..b44c2ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['util','../../config/logger','moment','request-promise','path','../../config/environment','./intDynamics365Configuration.attributes','define','Dynamics365Configuration','int_dynamics365_configurations','lodash'];(function(_0x29d449,_0x8ae281){var _0x93ea94=function(_0x39c346){while(--_0x39c346){_0x29d449['push'](_0x29d449['shift']());}};_0x93ea94(++_0x8ae281);}(_0x00bb,0x1d8));var _0xb00b=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0x00bb[_0x47b58b];return _0x46bebe;};'use strict';var _=require(_0xb00b('0x0'));var util=require(_0xb00b('0x1'));var logger=require(_0xb00b('0x2'))('api');var moment=require(_0xb00b('0x3'));var BPromise=require('bluebird');var rp=require(_0xb00b('0x4'));var fs=require('fs');var path=require(_0xb00b('0x5'));var rimraf=require('rimraf');var config=require(_0xb00b('0x6'));var attributes=require(_0xb00b('0x7'));module['exports']=function(_0x574cf8,_0x532ffb){return _0x574cf8[_0xb00b('0x8')](_0xb00b('0x9'),attributes,{'tableName':_0xb00b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4b84=['moment','path','rimraf','../../config/environment','Dynamics365Configuration','lodash','util'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4b84,0x1cc));var _0x44b8=function(_0x5ad190,_0xd39c9e){_0x5ad190=_0x5ad190-0x0;var _0x518ed3=_0x4b84[_0x5ad190];return _0x518ed3;};'use strict';var _=require(_0x44b8('0x0'));var util=require(_0x44b8('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x44b8('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x44b8('0x3'));var rimraf=require(_0x44b8('0x4'));var config=require(_0x44b8('0x5'));var attributes=require('./intDynamics365Configuration.attributes');module['exports']=function(_0x55f25d,_0x996a8b){return _0x55f25d['define'](_0x44b8('0x6'),attributes,{'tableName':'int_dynamics365_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c677e97..a267bc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc805=['../../config/environment','jayson/promise','http','request','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x392237,_0x367f35){var _0x3ae087=function(_0x3b9291){while(--_0x3b9291){_0x392237['push'](_0x392237['shift']());}};_0x3ae087(++_0x367f35);}(_0xc805,0xb7));var _0x5c80=function(_0x21d7a2,_0x5aecda){_0x21d7a2=_0x21d7a2-0x0;var _0x1da981=_0xc805[_0x21d7a2];return _0x1da981;};'use strict';var _=require(_0x5c80('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5c80('0x1'));var rs=require(_0x5c80('0x2'));var fs=require('fs');var Redis=require(_0x5c80('0x3'));var db=require(_0x5c80('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x5c80('0x5'))(_0x5c80('0x6'));var config=require(_0x5c80('0x7'));var jayson=require(_0x5c80('0x8'));var client=jayson['client'][_0x5c80('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x46cca8,_0xad9ae2,_0x5cd8c3){return new BPromise(function(_0x5b4ff3,_0x5e1b34){return client[_0x5c80('0xa')](_0x46cca8,_0x5cd8c3)['then'](function(_0x422200){logger[_0x5c80('0xb')](_0x5c80('0xc'),_0xad9ae2,_0x5c80('0xd'));logger['debug']('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0xad9ae2,_0x5c80('0xd'),JSON[_0x5c80('0xe')](_0x422200));if(_0x422200[_0x5c80('0xf')]){if(_0x422200[_0x5c80('0xf')][_0x5c80('0x10')]===0x1f4){logger[_0x5c80('0xf')](_0x5c80('0xc'),_0xad9ae2,_0x422200[_0x5c80('0xf')][_0x5c80('0x11')]);return _0x5e1b34(_0x422200['error'][_0x5c80('0x11')]);}logger[_0x5c80('0xf')](_0x5c80('0xc'),_0xad9ae2,_0x422200['error'][_0x5c80('0x11')]);return _0x5b4ff3(_0x422200[_0x5c80('0xf')][_0x5c80('0x11')]);}else{logger[_0x5c80('0xb')](_0x5c80('0xc'),_0xad9ae2,_0x5c80('0xd'));_0x5b4ff3(_0x422200['result']['message']);}})[_0x5c80('0x12')](function(_0x1088a3){logger[_0x5c80('0xf')](_0x5c80('0xc'),_0xad9ae2,_0x1088a3);_0x5e1b34(_0x1088a3);});});}
\ No newline at end of file
+var _0x8938=['Dynamics365Configuration,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1d47c7,_0x520b4c){var _0x3973b2=function(_0x2d7128){while(--_0x2d7128){_0x1d47c7['push'](_0x1d47c7['shift']());}};_0x3973b2(++_0x520b4c);}(_0x8938,0x166));var _0x8893=function(_0x323419,_0x2a6172){_0x323419=_0x323419-0x0;var _0x4c0be7=_0x8938[_0x323419];return _0x4c0be7;};'use strict';var _=require('lodash');var util=require(_0x8893('0x0'));var moment=require(_0x8893('0x1'));var BPromise=require(_0x8893('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8893('0x3'));var db=require(_0x8893('0x4'))['db'];var utils=require(_0x8893('0x5'));var logger=require(_0x8893('0x6'))(_0x8893('0x7'));var config=require('../../config/environment');var jayson=require(_0x8893('0x8'));var client=jayson[_0x8893('0x9')][_0x8893('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x23c34a,_0x399755,_0x275185){return new BPromise(function(_0x1894e7,_0x59004b){return client['request'](_0x23c34a,_0x275185)[_0x8893('0xb')](function(_0x519bc6){logger[_0x8893('0xc')](_0x8893('0xd'),_0x399755,_0x8893('0xe'));logger[_0x8893('0xf')](_0x8893('0x10'),_0x399755,'request\x20sent',JSON['stringify'](_0x519bc6));if(_0x519bc6[_0x8893('0x11')]){if(_0x519bc6[_0x8893('0x11')][_0x8893('0x12')]===0x1f4){logger[_0x8893('0x11')](_0x8893('0xd'),_0x399755,_0x519bc6[_0x8893('0x11')]['message']);return _0x59004b(_0x519bc6[_0x8893('0x11')][_0x8893('0x13')]);}logger['error']('Dynamics365Configuration,\x20%s,\x20%s',_0x399755,_0x519bc6[_0x8893('0x11')][_0x8893('0x13')]);return _0x1894e7(_0x519bc6[_0x8893('0x11')]['message']);}else{logger[_0x8893('0xc')](_0x8893('0xd'),_0x399755,_0x8893('0xe'));_0x1894e7(_0x519bc6[_0x8893('0x14')][_0x8893('0x13')]);}})[_0x8893('0x15')](function(_0x51957e){logger[_0x8893('0x11')](_0x8893('0xd'),_0x399755,_0x51957e);_0x59004b(_0x51957e);});});}
\ No newline at end of file
index 3ebe5eb..ef70e3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2a9=['put','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','post','create'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xd2a9,0x193));var _0x9d2a=function(_0x5f4b67,_0x23b961){_0x5f4b67=_0x5f4b67-0x0;var _0x4f4fcb=_0xd2a9[_0x5f4b67];return _0x4f4fcb;};'use strict';var multer=require(_0x9d2a('0x0'));var util=require(_0x9d2a('0x1'));var path=require('path');var timeout=require(_0x9d2a('0x2'));var express=require(_0x9d2a('0x3'));var router=express[_0x9d2a('0x4')]();var fs_extra=require(_0x9d2a('0x5'));var auth=require(_0x9d2a('0x6'));var interaction=require(_0x9d2a('0x7'));var config=require(_0x9d2a('0x8'));var controller=require('./intDynamics365Field.controller');router['get']('/',auth[_0x9d2a('0x9')](),controller[_0x9d2a('0xa')]);router[_0x9d2a('0xb')](_0x9d2a('0xc'),auth[_0x9d2a('0x9')](),controller['show']);router[_0x9d2a('0xd')]('/',auth[_0x9d2a('0x9')](),controller[_0x9d2a('0xe')]);router[_0x9d2a('0xf')](_0x9d2a('0xc'),auth[_0x9d2a('0x9')](),controller[_0x9d2a('0x10')]);router[_0x9d2a('0x11')]('/:id',auth[_0x9d2a('0x9')](),controller[_0x9d2a('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x1021=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x810025,_0x34bb04){var _0x4dbc81=function(_0x2c3907){while(--_0x2c3907){_0x810025['push'](_0x810025['shift']());}};_0x4dbc81(++_0x34bb04);}(_0x1021,0x1b3));var _0x1102=function(_0x57de80,_0x570d10){_0x57de80=_0x57de80-0x0;var _0x40633c=_0x1021[_0x57de80];return _0x40633c;};'use strict';var multer=require(_0x1102('0x0'));var util=require(_0x1102('0x1'));var path=require(_0x1102('0x2'));var timeout=require(_0x1102('0x3'));var express=require(_0x1102('0x4'));var router=express[_0x1102('0x5')]();var fs_extra=require(_0x1102('0x6'));var auth=require(_0x1102('0x7'));var interaction=require(_0x1102('0x8'));var config=require(_0x1102('0x9'));var controller=require(_0x1102('0xa'));router[_0x1102('0xb')]('/',auth[_0x1102('0xc')](),controller[_0x1102('0xd')]);router[_0x1102('0xb')](_0x1102('0xe'),auth[_0x1102('0xc')](),controller['show']);router[_0x1102('0xf')]('/',auth[_0x1102('0xc')](),controller[_0x1102('0x10')]);router[_0x1102('0x11')](_0x1102('0xe'),auth['isAuthenticated'](),controller[_0x1102('0x12')]);router[_0x1102('0x13')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x1102('0x14')]=router;
\ No newline at end of file
index cafca6d..4163898 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb43=['exports','ENUM','string','variable','customVariable','picklist','STRING','BOOLEAN'];(function(_0x5c3ae9,_0x450f9a){var _0x3f5950=function(_0x594c1f){while(--_0x594c1f){_0x5c3ae9['push'](_0x5c3ae9['shift']());}};_0x3f5950(++_0x450f9a);}(_0xfb43,0x108));var _0x3fb4=function(_0x328b37,_0x43ec8b){_0x328b37=_0x328b37-0x0;var _0x727126=_0xfb43[_0x328b37];return _0x727126;};'use strict';var Sequelize=require('sequelize');module[_0x3fb4('0x0')]={'type':{'type':Sequelize[_0x3fb4('0x1')](_0x3fb4('0x2'),_0x3fb4('0x3'),_0x3fb4('0x4'),'keyValue',_0x3fb4('0x5')),'defaultValue':_0x3fb4('0x2')},'content':{'type':Sequelize[_0x3fb4('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x3fb4('0x1')](_0x3fb4('0x2'),_0x3fb4('0x3'),_0x3fb4('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x3fb4('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x3fb4('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3fb4('0x6')]}};
\ No newline at end of file
+var _0xc25a=['BOOLEAN','exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x4d6c85,_0x2ce752){var _0x27b011=function(_0xf23807){while(--_0xf23807){_0x4d6c85['push'](_0x4d6c85['shift']());}};_0x27b011(++_0x2ce752);}(_0xc25a,0x157));var _0xac25=function(_0x13b8f3,_0x442821){_0x13b8f3=_0x13b8f3-0x0;var _0x1a6d06=_0xc25a[_0x13b8f3];return _0x1a6d06;};'use strict';var Sequelize=require('sequelize');module[_0xac25('0x0')]={'type':{'type':Sequelize[_0xac25('0x1')](_0xac25('0x2'),_0xac25('0x3'),_0xac25('0x4'),_0xac25('0x5'),_0xac25('0x6')),'defaultValue':_0xac25('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xac25('0x7')]},'keyType':{'type':Sequelize[_0xac25('0x1')](_0xac25('0x2'),_0xac25('0x3'),_0xac25('0x4'))},'keyContent':{'type':Sequelize[_0xac25('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xac25('0x7')]},'customField':{'type':Sequelize[_0xac25('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d297c05..8080516 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b35=['path','sox','to-csv','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','end','status','json','undefined','limit','count','offset','set','apply','reject','save','then','destroy','stack','name','send','map','Dynamics365Field','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','rawAttributes','create','update','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache'];(function(_0x226c11,_0x14c0a4){var _0x4dc73e=function(_0x17e242){while(--_0x17e242){_0x226c11['push'](_0x226c11['shift']());}};_0x4dc73e(++_0x14c0a4);}(_0x9b35,0x85));var _0x59b3=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x9b35[_0x432682];return _0x463d05;};'use strict';var emlformat=require(_0x59b3('0x0'));var rimraf=require(_0x59b3('0x1'));var zipdir=require(_0x59b3('0x2'));var jsonpatch=require(_0x59b3('0x3'));var rp=require(_0x59b3('0x4'));var moment=require('moment');var BPromise=require(_0x59b3('0x5'));var Mustache=require(_0x59b3('0x6'));var util=require('util');var path=require(_0x59b3('0x7'));var sox=require(_0x59b3('0x8'));var csv=require(_0x59b3('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x59b3('0xa'));var jsforce=require(_0x59b3('0xb'));var deskjs=require(_0x59b3('0xc'));var toCsv=require('to-csv');var querystring=require(_0x59b3('0xd'));var Papa=require(_0x59b3('0xe'));var Redis=require(_0x59b3('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x59b3('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x59b3('0x11'))(_0x59b3('0x12'));var utils=require(_0x59b3('0x13'));var config=require(_0x59b3('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x258848,_0x30f98c){_0x30f98c=_0x30f98c||0xcc;return function(_0x53b1de){if(_0x53b1de){return _0x258848[_0x59b3('0x15')](_0x30f98c);}return _0x258848['status'](_0x30f98c)[_0x59b3('0x16')]();};}function respondWithResult(_0x280a9e,_0x2cbd41){_0x2cbd41=_0x2cbd41||0xc8;return function(_0x40329a){if(_0x40329a){return _0x280a9e[_0x59b3('0x17')](_0x2cbd41)[_0x59b3('0x18')](_0x40329a);}};}function respondWithFilteredResult(_0x4ddb8a,_0x1d9098){return function(_0x55b77c){if(_0x55b77c){var _0x6c062f=typeof _0x1d9098['offset']===_0x59b3('0x19')&&typeof _0x1d9098[_0x59b3('0x1a')]===_0x59b3('0x19');var _0x2c9f4e=_0x55b77c[_0x59b3('0x1b')];var _0x15fa69=_0x6c062f?0x0:_0x1d9098[_0x59b3('0x1c')];var _0x1a891e=_0x6c062f?_0x55b77c['count']:_0x1d9098[_0x59b3('0x1c')]+_0x1d9098['limit'];var _0x3e0213;if(_0x1a891e>=_0x2c9f4e){_0x1a891e=_0x2c9f4e;_0x3e0213=0xc8;}else{_0x3e0213=0xce;}_0x4ddb8a[_0x59b3('0x17')](_0x3e0213);return _0x4ddb8a[_0x59b3('0x1d')]('Content-Range',_0x15fa69+'-'+_0x1a891e+'/'+_0x2c9f4e)[_0x59b3('0x18')](_0x55b77c);}return null;};}function patchUpdates(_0x4277a7){return function(_0x3f4d00){try{jsonpatch[_0x59b3('0x1e')](_0x3f4d00,_0x4277a7,!![]);}catch(_0x1010ea){return BPromise[_0x59b3('0x1f')](_0x1010ea);}return _0x3f4d00[_0x59b3('0x20')]();};}function saveUpdates(_0x48de08,_0x3a23e5){return function(_0x38f7f6){if(_0x38f7f6){return _0x38f7f6['update'](_0x48de08)[_0x59b3('0x21')](function(_0x216cf3){return _0x216cf3;});}return null;};}function removeEntity(_0x5a99ba,_0xb31043){return function(_0x177e84){if(_0x177e84){return _0x177e84[_0x59b3('0x22')]()[_0x59b3('0x21')](function(){_0x5a99ba['status'](0xcc)[_0x59b3('0x16')]();});}};}function handleEntityNotFound(_0x5e3a15,_0x47e29c){return function(_0x469d32){if(!_0x469d32){_0x5e3a15[_0x59b3('0x15')](0x194);}return _0x469d32;};}function handleError(_0x259c7d,_0x40ee64){_0x40ee64=_0x40ee64||0x1f4;return function(_0x4ee9ce){logger['error'](_0x4ee9ce[_0x59b3('0x23')]);if(_0x4ee9ce[_0x59b3('0x24')]){delete _0x4ee9ce[_0x59b3('0x24')];}_0x259c7d['status'](_0x40ee64)[_0x59b3('0x25')](_0x4ee9ce);};}exports['index']=function(_0x5c69ee,_0x2b8331){var _0x324a5d={},_0x403e7d={},_0x4645c5={'count':0x0,'rows':[]};var _0x38df84=_[_0x59b3('0x26')](db[_0x59b3('0x27')]['rawAttributes'],function(_0x429409){return{'name':_0x429409['fieldName'],'type':_0x429409['type'][_0x59b3('0x28')]};});_0x403e7d[_0x59b3('0x29')]=_['map'](_0x38df84,_0x59b3('0x24'));_0x403e7d[_0x59b3('0x2a')]=_[_0x59b3('0x2b')](_0x5c69ee['query']);_0x403e7d[_0x59b3('0x2c')]=_['intersection'](_0x403e7d['model'],_0x403e7d['query']);_0x324a5d[_0x59b3('0x2d')]=_[_0x59b3('0x2e')](_0x403e7d[_0x59b3('0x29')],qs['fields'](_0x5c69ee['query'][_0x59b3('0x2f')]));_0x324a5d[_0x59b3('0x2d')]=_0x324a5d[_0x59b3('0x2d')][_0x59b3('0x30')]?_0x324a5d['attributes']:_0x403e7d[_0x59b3('0x29')];if(!_0x5c69ee[_0x59b3('0x2a')]['hasOwnProperty'](_0x59b3('0x31'))){_0x324a5d['limit']=qs['limit'](_0x5c69ee['query']['limit']);_0x324a5d['offset']=qs[_0x59b3('0x1c')](_0x5c69ee[_0x59b3('0x2a')][_0x59b3('0x1c')]);}_0x324a5d[_0x59b3('0x32')]=qs[_0x59b3('0x33')](_0x5c69ee[_0x59b3('0x2a')][_0x59b3('0x33')]);_0x324a5d[_0x59b3('0x34')]=qs['filters'](_[_0x59b3('0x35')](_0x5c69ee[_0x59b3('0x2a')],_0x403e7d[_0x59b3('0x2c')]),_0x38df84);if(_0x5c69ee['query'][_0x59b3('0x36')]){_0x324a5d[_0x59b3('0x34')]=_['merge'](_0x324a5d[_0x59b3('0x34')],{'$or':_[_0x59b3('0x26')](_0x38df84,function(_0x4d8add){if(_0x4d8add[_0x59b3('0x37')]!==_0x59b3('0x38')){var _0x543d8e={};_0x543d8e[_0x4d8add['name']]={'$like':'%'+_0x5c69ee[_0x59b3('0x2a')]['filter']+'%'};return _0x543d8e;}})});}_0x324a5d=_[_0x59b3('0x39')]({},_0x324a5d,_0x5c69ee[_0x59b3('0x3a')]);var _0xdabe51={'where':_0x324a5d[_0x59b3('0x34')]};return db[_0x59b3('0x27')][_0x59b3('0x1b')](_0xdabe51)['then'](function(_0x27f2fd){_0x4645c5[_0x59b3('0x1b')]=_0x27f2fd;if(_0x5c69ee['query'][_0x59b3('0x3b')]){_0x324a5d[_0x59b3('0x3c')]=[{'all':!![]}];}return db[_0x59b3('0x27')][_0x59b3('0x3d')](_0x324a5d);})[_0x59b3('0x21')](function(_0x5b2fa7){_0x4645c5[_0x59b3('0x3e')]=_0x5b2fa7;return _0x4645c5;})[_0x59b3('0x21')](respondWithFilteredResult(_0x2b8331,_0x324a5d))[_0x59b3('0x3f')](handleError(_0x2b8331,null));};exports[_0x59b3('0x40')]=function(_0x2814bd,_0x8508d9){var _0x188241={'raw':!![],'where':{'id':_0x2814bd['params']['id']}},_0x4da7a5={};_0x4da7a5[_0x59b3('0x29')]=_[_0x59b3('0x2b')](db[_0x59b3('0x27')][_0x59b3('0x41')]);_0x4da7a5[_0x59b3('0x2a')]=_[_0x59b3('0x2b')](_0x2814bd[_0x59b3('0x2a')]);_0x4da7a5[_0x59b3('0x2c')]=_[_0x59b3('0x2e')](_0x4da7a5['model'],_0x4da7a5[_0x59b3('0x2a')]);_0x188241[_0x59b3('0x2d')]=_['intersection'](_0x4da7a5[_0x59b3('0x29')],qs[_0x59b3('0x2f')](_0x2814bd['query'][_0x59b3('0x2f')]));_0x188241['attributes']=_0x188241[_0x59b3('0x2d')][_0x59b3('0x30')]?_0x188241[_0x59b3('0x2d')]:_0x4da7a5[_0x59b3('0x29')];if(_0x2814bd[_0x59b3('0x2a')][_0x59b3('0x3b')]){_0x188241[_0x59b3('0x3c')]=[{'all':!![]}];}_0x188241=_[_0x59b3('0x39')]({},_0x188241,_0x2814bd[_0x59b3('0x3a')]);return db[_0x59b3('0x27')]['find'](_0x188241)[_0x59b3('0x21')](handleEntityNotFound(_0x8508d9,null))[_0x59b3('0x21')](respondWithResult(_0x8508d9,null))[_0x59b3('0x3f')](handleError(_0x8508d9,null));};exports[_0x59b3('0x42')]=function(_0x137001,_0x7e5c03){return db[_0x59b3('0x27')][_0x59b3('0x42')](_0x137001['body'],{})['then'](respondWithResult(_0x7e5c03,0xc9))['catch'](handleError(_0x7e5c03,null));};exports[_0x59b3('0x43')]=function(_0x394c66,_0x49aa3c){if(_0x394c66[_0x59b3('0x44')]['id']){delete _0x394c66[_0x59b3('0x44')]['id'];}return db[_0x59b3('0x27')][_0x59b3('0x45')]({'where':{'id':_0x394c66['params']['id']}})[_0x59b3('0x21')](handleEntityNotFound(_0x49aa3c,null))[_0x59b3('0x21')](saveUpdates(_0x394c66[_0x59b3('0x44')],null))[_0x59b3('0x21')](respondWithResult(_0x49aa3c,null))[_0x59b3('0x3f')](handleError(_0x49aa3c,null));};exports[_0x59b3('0x22')]=function(_0x18c3c6,_0xbc2188){return db[_0x59b3('0x27')][_0x59b3('0x45')]({'where':{'id':_0x18c3c6['params']['id']}})[_0x59b3('0x21')](handleEntityNotFound(_0xbc2188,null))[_0x59b3('0x21')](removeEntity(_0xbc2188,null))[_0x59b3('0x3f')](handleError(_0xbc2188,null));};
\ No newline at end of file
+var _0xead2=['sendStatus','status','end','json','limit','count','offset','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','Dynamics365Field','rawAttributes','fieldName','type','key','query','filters','model','attributes','intersection','fields','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','findAll','rows','catch','show','keys','length','includeAll','include','find','create','body','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x28547e,_0x100df3){var _0x5382da=function(_0x281bbf){while(--_0x281bbf){_0x28547e['push'](_0x28547e['shift']());}};_0x5382da(++_0x100df3);}(_0xead2,0xc7));var _0x2ead=function(_0x32e0a1,_0x3ae3f9){_0x32e0a1=_0x32e0a1-0x0;var _0x4f7992=_0xead2[_0x32e0a1];return _0x4f7992;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2ead('0x0'));var zipdir=require(_0x2ead('0x1'));var jsonpatch=require(_0x2ead('0x2'));var rp=require(_0x2ead('0x3'));var moment=require(_0x2ead('0x4'));var BPromise=require(_0x2ead('0x5'));var Mustache=require(_0x2ead('0x6'));var util=require(_0x2ead('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x2ead('0x8'));var ejs=require(_0x2ead('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2ead('0xa'));var squel=require('squel');var crypto=require(_0x2ead('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x2ead('0xc'));var toCsv=require(_0x2ead('0x8'));var querystring=require(_0x2ead('0xd'));var Papa=require(_0x2ead('0xe'));var Redis=require('ioredis');var authService=require(_0x2ead('0xf'));var qs=require(_0x2ead('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x2ead('0x11'))(_0x2ead('0x12'));var utils=require(_0x2ead('0x13'));var config=require(_0x2ead('0x14'));var licenseUtil=require(_0x2ead('0x15'));var db=require(_0x2ead('0x16'))['db'];function respondWithStatusCode(_0x1155ee,_0x29d95c){_0x29d95c=_0x29d95c||0xcc;return function(_0x17f80d){if(_0x17f80d){return _0x1155ee[_0x2ead('0x17')](_0x29d95c);}return _0x1155ee[_0x2ead('0x18')](_0x29d95c)[_0x2ead('0x19')]();};}function respondWithResult(_0x6f349,_0x4eb2c9){_0x4eb2c9=_0x4eb2c9||0xc8;return function(_0xb6e9a9){if(_0xb6e9a9){return _0x6f349['status'](_0x4eb2c9)[_0x2ead('0x1a')](_0xb6e9a9);}};}function respondWithFilteredResult(_0x2ebf56,_0x302155){return function(_0x915917){if(_0x915917){var _0x3d6d9c=typeof _0x302155['offset']==='undefined'&&typeof _0x302155[_0x2ead('0x1b')]==='undefined';var _0x1ad94e=_0x915917[_0x2ead('0x1c')];var _0x246c68=_0x3d6d9c?0x0:_0x302155[_0x2ead('0x1d')];var _0x33635d=_0x3d6d9c?_0x915917[_0x2ead('0x1c')]:_0x302155['offset']+_0x302155[_0x2ead('0x1b')];var _0x40ac79;if(_0x33635d>=_0x1ad94e){_0x33635d=_0x1ad94e;_0x40ac79=0xc8;}else{_0x40ac79=0xce;}_0x2ebf56['status'](_0x40ac79);return _0x2ebf56['set']('Content-Range',_0x246c68+'-'+_0x33635d+'/'+_0x1ad94e)[_0x2ead('0x1a')](_0x915917);}return null;};}function patchUpdates(_0x4c4663){return function(_0x142703){try{jsonpatch[_0x2ead('0x1e')](_0x142703,_0x4c4663,!![]);}catch(_0x335100){return BPromise[_0x2ead('0x1f')](_0x335100);}return _0x142703[_0x2ead('0x20')]();};}function saveUpdates(_0x4b18ec,_0x1f5166){return function(_0x51c865){if(_0x51c865){return _0x51c865[_0x2ead('0x21')](_0x4b18ec)[_0x2ead('0x22')](function(_0x2e8f1f){return _0x2e8f1f;});}return null;};}function removeEntity(_0x8b9366,_0x9cbf17){return function(_0x402496){if(_0x402496){return _0x402496[_0x2ead('0x23')]()[_0x2ead('0x22')](function(){_0x8b9366[_0x2ead('0x18')](0xcc)[_0x2ead('0x19')]();});}};}function handleEntityNotFound(_0x36fbc2,_0x5df809){return function(_0x3907d9){if(!_0x3907d9){_0x36fbc2[_0x2ead('0x17')](0x194);}return _0x3907d9;};}function handleError(_0x113e18,_0x196b7d){_0x196b7d=_0x196b7d||0x1f4;return function(_0x1b22e6){logger[_0x2ead('0x24')](_0x1b22e6[_0x2ead('0x25')]);if(_0x1b22e6[_0x2ead('0x26')]){delete _0x1b22e6[_0x2ead('0x26')];}_0x113e18[_0x2ead('0x18')](_0x196b7d)[_0x2ead('0x27')](_0x1b22e6);};}exports[_0x2ead('0x28')]=function(_0xeaff2a,_0xc44fba){var _0x5e1cb0={},_0xa8a0d={},_0x4e0ac9={'count':0x0,'rows':[]};var _0x1df863=_[_0x2ead('0x29')](db[_0x2ead('0x2a')][_0x2ead('0x2b')],function(_0x154b03){return{'name':_0x154b03[_0x2ead('0x2c')],'type':_0x154b03[_0x2ead('0x2d')][_0x2ead('0x2e')]};});_0xa8a0d['model']=_[_0x2ead('0x29')](_0x1df863,_0x2ead('0x26'));_0xa8a0d[_0x2ead('0x2f')]=_['keys'](_0xeaff2a[_0x2ead('0x2f')]);_0xa8a0d[_0x2ead('0x30')]=_['intersection'](_0xa8a0d[_0x2ead('0x31')],_0xa8a0d[_0x2ead('0x2f')]);_0x5e1cb0[_0x2ead('0x32')]=_[_0x2ead('0x33')](_0xa8a0d[_0x2ead('0x31')],qs[_0x2ead('0x34')](_0xeaff2a[_0x2ead('0x2f')][_0x2ead('0x34')]));_0x5e1cb0[_0x2ead('0x32')]=_0x5e1cb0['attributes']['length']?_0x5e1cb0['attributes']:_0xa8a0d[_0x2ead('0x31')];if(!_0xeaff2a[_0x2ead('0x2f')]['hasOwnProperty'](_0x2ead('0x35'))){_0x5e1cb0[_0x2ead('0x1b')]=qs[_0x2ead('0x1b')](_0xeaff2a[_0x2ead('0x2f')][_0x2ead('0x1b')]);_0x5e1cb0[_0x2ead('0x1d')]=qs[_0x2ead('0x1d')](_0xeaff2a[_0x2ead('0x2f')][_0x2ead('0x1d')]);}_0x5e1cb0[_0x2ead('0x36')]=qs[_0x2ead('0x37')](_0xeaff2a['query'][_0x2ead('0x37')]);_0x5e1cb0[_0x2ead('0x38')]=qs['filters'](_[_0x2ead('0x39')](_0xeaff2a[_0x2ead('0x2f')],_0xa8a0d[_0x2ead('0x30')]),_0x1df863);if(_0xeaff2a['query']['filter']){_0x5e1cb0[_0x2ead('0x38')]=_[_0x2ead('0x3a')](_0x5e1cb0[_0x2ead('0x38')],{'$or':_['map'](_0x1df863,function(_0x299a20){if(_0x299a20[_0x2ead('0x2d')]!==_0x2ead('0x3b')){var _0x381fba={};_0x381fba[_0x299a20[_0x2ead('0x26')]]={'$like':'%'+_0xeaff2a[_0x2ead('0x2f')][_0x2ead('0x3c')]+'%'};return _0x381fba;}})});}_0x5e1cb0=_['merge']({},_0x5e1cb0,_0xeaff2a[_0x2ead('0x3d')]);var _0x3ac832={'where':_0x5e1cb0['where']};return db[_0x2ead('0x2a')]['count'](_0x3ac832)['then'](function(_0x1bc910){_0x4e0ac9[_0x2ead('0x1c')]=_0x1bc910;if(_0xeaff2a[_0x2ead('0x2f')]['includeAll']){_0x5e1cb0['include']=[{'all':!![]}];}return db[_0x2ead('0x2a')][_0x2ead('0x3e')](_0x5e1cb0);})[_0x2ead('0x22')](function(_0x3b444e){_0x4e0ac9[_0x2ead('0x3f')]=_0x3b444e;return _0x4e0ac9;})[_0x2ead('0x22')](respondWithFilteredResult(_0xc44fba,_0x5e1cb0))[_0x2ead('0x40')](handleError(_0xc44fba,null));};exports[_0x2ead('0x41')]=function(_0x2342b4,_0x17f49d){var _0xae322c={'raw':!![],'where':{'id':_0x2342b4['params']['id']}},_0x28c846={};_0x28c846['model']=_[_0x2ead('0x42')](db[_0x2ead('0x2a')][_0x2ead('0x2b')]);_0x28c846[_0x2ead('0x2f')]=_['keys'](_0x2342b4[_0x2ead('0x2f')]);_0x28c846[_0x2ead('0x30')]=_[_0x2ead('0x33')](_0x28c846[_0x2ead('0x31')],_0x28c846['query']);_0xae322c[_0x2ead('0x32')]=_[_0x2ead('0x33')](_0x28c846[_0x2ead('0x31')],qs[_0x2ead('0x34')](_0x2342b4[_0x2ead('0x2f')]['fields']));_0xae322c[_0x2ead('0x32')]=_0xae322c[_0x2ead('0x32')][_0x2ead('0x43')]?_0xae322c[_0x2ead('0x32')]:_0x28c846[_0x2ead('0x31')];if(_0x2342b4[_0x2ead('0x2f')][_0x2ead('0x44')]){_0xae322c[_0x2ead('0x45')]=[{'all':!![]}];}_0xae322c=_[_0x2ead('0x3a')]({},_0xae322c,_0x2342b4[_0x2ead('0x3d')]);return db[_0x2ead('0x2a')][_0x2ead('0x46')](_0xae322c)['then'](handleEntityNotFound(_0x17f49d,null))[_0x2ead('0x22')](respondWithResult(_0x17f49d,null))[_0x2ead('0x40')](handleError(_0x17f49d,null));};exports[_0x2ead('0x47')]=function(_0x3523a3,_0x47b668){return db[_0x2ead('0x2a')]['create'](_0x3523a3['body'],{})['then'](respondWithResult(_0x47b668,0xc9))['catch'](handleError(_0x47b668,null));};exports[_0x2ead('0x21')]=function(_0x5ab4fd,_0x2f62b2){if(_0x5ab4fd['body']['id']){delete _0x5ab4fd[_0x2ead('0x48')]['id'];}return db['Dynamics365Field'][_0x2ead('0x46')]({'where':{'id':_0x5ab4fd[_0x2ead('0x49')]['id']}})[_0x2ead('0x22')](handleEntityNotFound(_0x2f62b2,null))['then'](saveUpdates(_0x5ab4fd[_0x2ead('0x48')],null))[_0x2ead('0x22')](respondWithResult(_0x2f62b2,null))['catch'](handleError(_0x2f62b2,null));};exports[_0x2ead('0x23')]=function(_0x5e17da,_0x52e022){return db[_0x2ead('0x2a')][_0x2ead('0x46')]({'where':{'id':_0x5e17da[_0x2ead('0x49')]['id']}})['then'](handleEntityNotFound(_0x52e022,null))[_0x2ead('0x22')](removeEntity(_0x52e022,null))[_0x2ead('0x40')](handleError(_0x52e022,null));};
\ No newline at end of file
index 08b2b06..014c394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6316=['lodash','util','../../config/logger','api','path','../../config/environment','./intDynamics365Field.attributes','exports','define','Dynamics365Field','dynamics365_unique_index','FieldId'];(function(_0x2c405c,_0x5b158a){var _0xb77730=function(_0x3bf171){while(--_0x3bf171){_0x2c405c['push'](_0x2c405c['shift']());}};_0xb77730(++_0x5b158a);}(_0x6316,0xd8));var _0x6631=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x6316[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x6631('0x0'));var util=require(_0x6631('0x1'));var logger=require(_0x6631('0x2'))(_0x6631('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x6631('0x4'));var rimraf=require('rimraf');var config=require(_0x6631('0x5'));var attributes=require(_0x6631('0x6'));module[_0x6631('0x7')]=function(_0x350a05,_0x125153){return _0x350a05[_0x6631('0x8')](_0x6631('0x9'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':_0x6631('0xa'),'fields':['idField',_0x6631('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5fa0=['define','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','idField','FieldId','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','exports'];(function(_0x1ff6d1,_0x52f903){var _0x1554cd=function(_0x233f9d){while(--_0x233f9d){_0x1ff6d1['push'](_0x1ff6d1['shift']());}};_0x1554cd(++_0x52f903);}(_0x5fa0,0x8d));var _0x05fa=function(_0x282dbc,_0x531810){_0x282dbc=_0x282dbc-0x0;var _0x2911ad=_0x5fa0[_0x282dbc];return _0x2911ad;};'use strict';var _=require(_0x05fa('0x0'));var util=require(_0x05fa('0x1'));var logger=require('../../config/logger')(_0x05fa('0x2'));var moment=require(_0x05fa('0x3'));var BPromise=require(_0x05fa('0x4'));var rp=require(_0x05fa('0x5'));var fs=require('fs');var path=require(_0x05fa('0x6'));var rimraf=require('rimraf');var config=require(_0x05fa('0x7'));var attributes=require('./intDynamics365Field.attributes');module[_0x05fa('0x8')]=function(_0x2e047b,_0x5948a6){return _0x2e047b[_0x05fa('0x9')](_0x05fa('0xa'),attributes,{'tableName':_0x05fa('0xb'),'paranoid':![],'indexes':[{'name':_0x05fa('0xc'),'fields':[_0x05fa('0xd'),_0x05fa('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index a36fc82..a245115 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe48d=['bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','Dynamics365Field,\x20%s,\x20%s','message','info','request\x20sent','catch','lodash'];(function(_0x3301a7,_0x113a70){var _0x4e9e5b=function(_0x50e133){while(--_0x50e133){_0x3301a7['push'](_0x3301a7['shift']());}};_0x4e9e5b(++_0x113a70);}(_0xe48d,0x9f));var _0xde48=function(_0x1f5386,_0x41280c){_0x1f5386=_0x1f5386-0x0;var _0x4a5768=_0xe48d[_0x1f5386];return _0x4a5768;};'use strict';var _=require(_0xde48('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xde48('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xde48('0x2'))['db'];var utils=require(_0xde48('0x3'));var logger=require(_0xde48('0x4'))(_0xde48('0x5'));var config=require(_0xde48('0x6'));var jayson=require(_0xde48('0x7'));var client=jayson['client'][_0xde48('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x7e4b19,_0xb0c6a3,_0x3e9192){return new BPromise(function(_0x1fa12d,_0x2922be){return client['request'](_0x7e4b19,_0x3e9192)[_0xde48('0x9')](function(_0x450d40){logger['info']('Dynamics365Field,\x20%s,\x20%s',_0xb0c6a3,'request\x20sent');logger[_0xde48('0xa')](_0xde48('0xb'),_0xb0c6a3,'request\x20sent',JSON[_0xde48('0xc')](_0x450d40));if(_0x450d40[_0xde48('0xd')]){if(_0x450d40[_0xde48('0xd')][_0xde48('0xe')]===0x1f4){logger[_0xde48('0xd')](_0xde48('0xf'),_0xb0c6a3,_0x450d40[_0xde48('0xd')][_0xde48('0x10')]);return _0x2922be(_0x450d40[_0xde48('0xd')][_0xde48('0x10')]);}logger[_0xde48('0xd')]('Dynamics365Field,\x20%s,\x20%s',_0xb0c6a3,_0x450d40[_0xde48('0xd')]['message']);return _0x1fa12d(_0x450d40[_0xde48('0xd')][_0xde48('0x10')]);}else{logger[_0xde48('0x11')]('Dynamics365Field,\x20%s,\x20%s',_0xb0c6a3,_0xde48('0x12'));_0x1fa12d(_0x450d40['result'][_0xde48('0x10')]);}})[_0xde48('0x13')](function(_0x56a2d5){logger[_0xde48('0xd')](_0xde48('0xf'),_0xb0c6a3,_0x56a2d5);_0x2922be(_0x56a2d5);});});}
\ No newline at end of file
+var _0x41bb=['../../config/environment','jayson/promise','client','http','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x5b19ca,_0x5b37ad){var _0x301239=function(_0x7d1579){while(--_0x7d1579){_0x5b19ca['push'](_0x5b19ca['shift']());}};_0x301239(++_0x5b37ad);}(_0x41bb,0xa5));var _0xb41b=function(_0x4c9730,_0x412b10){_0x4c9730=_0x4c9730-0x0;var _0x16a1ef=_0x41bb[_0x4c9730];return _0x16a1ef;};'use strict';var _=require(_0xb41b('0x0'));var util=require(_0xb41b('0x1'));var moment=require(_0xb41b('0x2'));var BPromise=require(_0xb41b('0x3'));var rs=require(_0xb41b('0x4'));var fs=require('fs');var Redis=require(_0xb41b('0x5'));var db=require(_0xb41b('0x6'))['db'];var utils=require(_0xb41b('0x7'));var logger=require(_0xb41b('0x8'))(_0xb41b('0x9'));var config=require(_0xb41b('0xa'));var jayson=require(_0xb41b('0xb'));var client=jayson[_0xb41b('0xc')][_0xb41b('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x54e750,_0x316eab,_0xd0b025){return new BPromise(function(_0x3ccf61,_0x2b5fc8){return client['request'](_0x54e750,_0xd0b025)[_0xb41b('0xe')](function(_0x3467d4){logger[_0xb41b('0xf')](_0xb41b('0x10'),_0x316eab,_0xb41b('0x11'));logger['debug'](_0xb41b('0x12'),_0x316eab,_0xb41b('0x11'),JSON[_0xb41b('0x13')](_0x3467d4));if(_0x3467d4[_0xb41b('0x14')]){if(_0x3467d4[_0xb41b('0x14')][_0xb41b('0x15')]===0x1f4){logger[_0xb41b('0x14')](_0xb41b('0x10'),_0x316eab,_0x3467d4[_0xb41b('0x14')]['message']);return _0x2b5fc8(_0x3467d4[_0xb41b('0x14')]['message']);}logger[_0xb41b('0x14')](_0xb41b('0x10'),_0x316eab,_0x3467d4[_0xb41b('0x14')]['message']);return _0x3ccf61(_0x3467d4[_0xb41b('0x14')][_0xb41b('0x16')]);}else{logger['info'](_0xb41b('0x10'),_0x316eab,'request\x20sent');_0x3ccf61(_0x3467d4[_0xb41b('0x17')][_0xb41b('0x16')]);}})[_0xb41b('0x18')](function(_0x3363e0){logger[_0xb41b('0x14')]('Dynamics365Field,\x20%s,\x20%s',_0x316eab,_0x3363e0);_0x2b5fc8(_0x3363e0);});});}
\ No newline at end of file
index 52575da..b19bc19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3022=['post','create','addConfiguration','update','destroy','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','/:id/configurations','getConfigurations','/:id/fields','getFields'];(function(_0x13f980,_0x1e1c56){var _0x27153c=function(_0x3953d5){while(--_0x3953d5){_0x13f980['push'](_0x13f980['shift']());}};_0x27153c(++_0x1e1c56);}(_0x3022,0x181));var _0x2302=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x3022[_0x1d1779];return _0x2377e9;};'use strict';var multer=require('multer');var util=require(_0x2302('0x0'));var path=require(_0x2302('0x1'));var timeout=require(_0x2302('0x2'));var express=require(_0x2302('0x3'));var router=express['Router']();var fs_extra=require(_0x2302('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2302('0x5'));var config=require(_0x2302('0x6'));var controller=require('./intFreshdeskAccount.controller');router[_0x2302('0x7')]('/',auth['isAuthenticated'](),controller[_0x2302('0x8')]);router[_0x2302('0x7')](_0x2302('0x9'),auth[_0x2302('0xa')](),controller['show']);router[_0x2302('0x7')](_0x2302('0xb'),auth['isAuthenticated'](),controller[_0x2302('0xc')]);router['get'](_0x2302('0xd'),auth[_0x2302('0xa')](),controller[_0x2302('0xe')]);router[_0x2302('0xf')]('/',auth['isAuthenticated'](),controller[_0x2302('0x10')]);router[_0x2302('0xf')](_0x2302('0xb'),auth[_0x2302('0xa')](),controller[_0x2302('0x11')]);router['put'](_0x2302('0x9'),auth[_0x2302('0xa')](),controller[_0x2302('0x12')]);router['delete'](_0x2302('0x9'),auth['isAuthenticated'](),controller[_0x2302('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xc00e=['/:id/configurations','addConfiguration','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','get','index','/:id','isAuthenticated','show','getConfigurations','/:id/fields','getFields','post','create'];(function(_0x39c734,_0x2f3e06){var _0xb2a2f9=function(_0x502f3f){while(--_0x502f3f){_0x39c734['push'](_0x39c734['shift']());}};_0xb2a2f9(++_0x2f3e06);}(_0xc00e,0x7e));var _0xec00=function(_0x5d23be,_0x49910a){_0x5d23be=_0x5d23be-0x0;var _0x1ca77e=_0xc00e[_0x5d23be];return _0x1ca77e;};'use strict';var multer=require(_0xec00('0x0'));var util=require(_0xec00('0x1'));var path=require(_0xec00('0x2'));var timeout=require(_0xec00('0x3'));var express=require(_0xec00('0x4'));var router=express[_0xec00('0x5')]();var fs_extra=require(_0xec00('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xec00('0x7'));var controller=require('./intFreshdeskAccount.controller');router[_0xec00('0x8')]('/',auth['isAuthenticated'](),controller[_0xec00('0x9')]);router[_0xec00('0x8')](_0xec00('0xa'),auth[_0xec00('0xb')](),controller[_0xec00('0xc')]);router[_0xec00('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0xec00('0xd')]);router[_0xec00('0x8')](_0xec00('0xe'),auth[_0xec00('0xb')](),controller[_0xec00('0xf')]);router[_0xec00('0x10')]('/',auth[_0xec00('0xb')](),controller[_0xec00('0x11')]);router['post'](_0xec00('0x12'),auth[_0xec00('0xb')](),controller[_0xec00('0x13')]);router[_0xec00('0x14')](_0xec00('0xa'),auth[_0xec00('0xb')](),controller[_0xec00('0x15')]);router['delete'](_0xec00('0xa'),auth[_0xec00('0xb')](),controller[_0xec00('0x16')]);module[_0xec00('0x17')]=router;
\ No newline at end of file
index c194837..4810a78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf2f=['exports','STRING','remoteUri','sequelize'];(function(_0x2f9cd5,_0x1acdde){var _0x34fdb2=function(_0x244688){while(--_0x244688){_0x2f9cd5['push'](_0x2f9cd5['shift']());}};_0x34fdb2(++_0x1acdde);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x3907e6,_0x370e69){_0x3907e6=_0x3907e6-0x0;var _0x432c0f=_0xcf2f[_0x3907e6];return _0x432c0f;};'use strict';var Sequelize=require(_0xfcf2('0x0'));module[_0xfcf2('0x1')]={'name':{'type':Sequelize[_0xfcf2('0x2')]},'description':{'type':Sequelize[_0xfcf2('0x2')]},'username':{'type':Sequelize[_0xfcf2('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0xfcf2('0x2')]},'remoteUri':{'type':Sequelize[_0xfcf2('0x2')],'unique':_0xfcf2('0x3')},'serverUrl':{'type':Sequelize[_0xfcf2('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x8952=['username','remoteUri','exports','STRING'];(function(_0x59726f,_0x12ca2b){var _0x261676=function(_0x48bc57){while(--_0x48bc57){_0x59726f['push'](_0x59726f['shift']());}};_0x261676(++_0x12ca2b);}(_0x8952,0x17e));var _0x2895=function(_0x242e24,_0x2c69ec){_0x242e24=_0x242e24-0x0;var _0x1a310f=_0x8952[_0x242e24];return _0x1a310f;};'use strict';var Sequelize=require('sequelize');module[_0x2895('0x0')]={'name':{'type':Sequelize[_0x2895('0x1')]},'description':{'type':Sequelize[_0x2895('0x1')]},'username':{'type':Sequelize[_0x2895('0x1')],'unique':_0x2895('0x2')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x2895('0x1')],'unique':_0x2895('0x3')},'serverUrl':{'type':Sequelize[_0x2895('0x1')],'allowNull':![]}};
\ No newline at end of file
index 63b03fc..099df7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa446=['offset','undefined','limit','count','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','FreshdeskAccount','rawAttributes','type','model','map','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','includeAll','include','params','options','catch','create','find','body','getConfigurations','FreshdeskConfiguration','order','pick','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','api/v2/ticket_fields','Basic\x20%s','toString','base64','subject','agent','description','priority','group','ticket_type','remove','includes','default','custom_text','custom_dropdown','choices','capitalize','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end'];(function(_0x2519d5,_0x523469){var _0x37d0a0=function(_0x3a7452){while(--_0x3a7452){_0x2519d5['push'](_0x2519d5['shift']());}};_0x37d0a0(++_0x523469);}(_0xa446,0xc6));var _0x6a44=function(_0x1d651c,_0x44338b){_0x1d651c=_0x1d651c-0x0;var _0x387c28=_0xa446[_0x1d651c];return _0x387c28;};'use strict';var emlformat=require(_0x6a44('0x0'));var rimraf=require(_0x6a44('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6a44('0x2'));var rp=require('request-promise');var moment=require(_0x6a44('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6a44('0x4'));var util=require('util');var path=require(_0x6a44('0x5'));var sox=require(_0x6a44('0x6'));var csv=require(_0x6a44('0x7'));var ejs=require(_0x6a44('0x8'));var fs=require('fs');var fs_extra=require(_0x6a44('0x9'));var _=require(_0x6a44('0xa'));var squel=require('squel');var crypto=require(_0x6a44('0xb'));var jsforce=require(_0x6a44('0xc'));var deskjs=require(_0x6a44('0xd'));var toCsv=require(_0x6a44('0x7'));var querystring=require(_0x6a44('0xe'));var Papa=require('papaparse');var Redis=require(_0x6a44('0xf'));var authService=require(_0x6a44('0x10'));var qs=require(_0x6a44('0x11'));var as=require(_0x6a44('0x12'));var hardwareService=require(_0x6a44('0x13'));var logger=require(_0x6a44('0x14'))(_0x6a44('0x15'));var utils=require('../../config/utils');var config=require(_0x6a44('0x16'));var licenseUtil=require(_0x6a44('0x17'));var db=require('../../mysqldb')['db'];var integrations=require(_0x6a44('0x18'));function respondWithStatusCode(_0x1e0639,_0x21ce4a){_0x21ce4a=_0x21ce4a||0xcc;return function(_0x491c1c){if(_0x491c1c){return _0x1e0639[_0x6a44('0x19')](_0x21ce4a);}return _0x1e0639[_0x6a44('0x1a')](_0x21ce4a)[_0x6a44('0x1b')]();};}function respondWithResult(_0xb1d987,_0x156a27){_0x156a27=_0x156a27||0xc8;return function(_0x1481ed){if(_0x1481ed){return _0xb1d987['status'](_0x156a27)['json'](_0x1481ed);}};}function respondWithFilteredResult(_0x260be6,_0x973938){return function(_0x577275){if(_0x577275){var _0xa665c0=typeof _0x973938[_0x6a44('0x1c')]===_0x6a44('0x1d')&&typeof _0x973938[_0x6a44('0x1e')]===_0x6a44('0x1d');var _0x1e1de0=_0x577275[_0x6a44('0x1f')];var _0x6054d3=_0xa665c0?0x0:_0x973938[_0x6a44('0x1c')];var _0x25a47c=_0xa665c0?_0x577275[_0x6a44('0x1f')]:_0x973938[_0x6a44('0x1c')]+_0x973938[_0x6a44('0x1e')];var _0x108c4b;if(_0x25a47c>=_0x1e1de0){_0x25a47c=_0x1e1de0;_0x108c4b=0xc8;}else{_0x108c4b=0xce;}_0x260be6['status'](_0x108c4b);return _0x260be6['set']('Content-Range',_0x6054d3+'-'+_0x25a47c+'/'+_0x1e1de0)[_0x6a44('0x20')](_0x577275);}return null;};}function patchUpdates(_0x19410f){return function(_0x2ef3cf){try{jsonpatch[_0x6a44('0x21')](_0x2ef3cf,_0x19410f,!![]);}catch(_0x4bde4d){return BPromise[_0x6a44('0x22')](_0x4bde4d);}return _0x2ef3cf[_0x6a44('0x23')]();};}function saveUpdates(_0x528afe,_0xebf7d6){return function(_0x24c04a){if(_0x24c04a){return _0x24c04a[_0x6a44('0x24')](_0x528afe)[_0x6a44('0x25')](function(_0x21a25c){return _0x21a25c;});}return null;};}function removeEntity(_0x12e6fb,_0x178b35){return function(_0x1650fe){if(_0x1650fe){return _0x1650fe[_0x6a44('0x26')]()['then'](function(){_0x12e6fb[_0x6a44('0x1a')](0xcc)[_0x6a44('0x1b')]();});}};}function handleEntityNotFound(_0x466c54,_0x36b027){return function(_0x499e87){if(!_0x499e87){_0x466c54[_0x6a44('0x19')](0x194);}return _0x499e87;};}function handleError(_0x4ee88c,_0x3ad23e){_0x3ad23e=_0x3ad23e||0x1f4;return function(_0x596a12){logger[_0x6a44('0x27')](_0x596a12[_0x6a44('0x28')]);if(_0x596a12[_0x6a44('0x29')]){delete _0x596a12[_0x6a44('0x29')];}_0x4ee88c[_0x6a44('0x1a')](_0x3ad23e)[_0x6a44('0x2a')](_0x596a12);};}exports[_0x6a44('0x2b')]=function(_0x5b81ce,_0x4a5eab){var _0x265f9d={},_0x5abc23={},_0xaef746={'count':0x0,'rows':[]};var _0x5b46cd=_['map'](db[_0x6a44('0x2c')][_0x6a44('0x2d')],function(_0x3454a7){return{'name':_0x3454a7['fieldName'],'type':_0x3454a7[_0x6a44('0x2e')]['key']};});_0x5abc23[_0x6a44('0x2f')]=_[_0x6a44('0x30')](_0x5b46cd,'name');_0x5abc23['query']=_[_0x6a44('0x31')](_0x5b81ce[_0x6a44('0x32')]);_0x5abc23[_0x6a44('0x33')]=_['intersection'](_0x5abc23['model'],_0x5abc23[_0x6a44('0x32')]);_0x265f9d[_0x6a44('0x34')]=_[_0x6a44('0x35')](_0x5abc23['model'],qs[_0x6a44('0x36')](_0x5b81ce[_0x6a44('0x32')][_0x6a44('0x36')]));_0x265f9d[_0x6a44('0x34')]=_0x265f9d[_0x6a44('0x34')][_0x6a44('0x37')]?_0x265f9d[_0x6a44('0x34')]:_0x5abc23[_0x6a44('0x2f')];if(!_0x5b81ce[_0x6a44('0x32')][_0x6a44('0x38')](_0x6a44('0x39'))){_0x265f9d[_0x6a44('0x1e')]=qs['limit'](_0x5b81ce[_0x6a44('0x32')]['limit']);_0x265f9d['offset']=qs['offset'](_0x5b81ce['query'][_0x6a44('0x1c')]);}_0x265f9d['order']=qs[_0x6a44('0x3a')](_0x5b81ce['query'][_0x6a44('0x3a')]);_0x265f9d[_0x6a44('0x3b')]=qs['filters'](_['pick'](_0x5b81ce[_0x6a44('0x32')],_0x5abc23[_0x6a44('0x33')]),_0x5b46cd);if(_0x5b81ce[_0x6a44('0x32')][_0x6a44('0x3c')]){_0x265f9d['where']=_[_0x6a44('0x3d')](_0x265f9d[_0x6a44('0x3b')],{'$or':_[_0x6a44('0x30')](_0x5b46cd,function(_0x4738cb){if(_0x4738cb[_0x6a44('0x2e')]!==_0x6a44('0x3e')){var _0x56c05c={};_0x56c05c[_0x4738cb[_0x6a44('0x29')]]={'$like':'%'+_0x5b81ce[_0x6a44('0x32')]['filter']+'%'};return _0x56c05c;}})});}_0x265f9d=_[_0x6a44('0x3d')]({},_0x265f9d,_0x5b81ce['options']);var _0xcd852f={'where':_0x265f9d['where']};return db[_0x6a44('0x2c')][_0x6a44('0x1f')](_0xcd852f)[_0x6a44('0x25')](function(_0x7b1ca6){_0xaef746[_0x6a44('0x1f')]=_0x7b1ca6;if(_0x5b81ce['query'][_0x6a44('0x3f')]){_0x265f9d[_0x6a44('0x40')]=[{'all':!![]}];}return db[_0x6a44('0x2c')]['findAll'](_0x265f9d);})[_0x6a44('0x25')](function(_0x2cf9cb){_0xaef746['rows']=_0x2cf9cb;return _0xaef746;})['then'](respondWithFilteredResult(_0x4a5eab,_0x265f9d))['catch'](handleError(_0x4a5eab,null));};exports['show']=function(_0xea4abf,_0xcdb39){var _0x21ba45={'raw':![],'where':{'id':_0xea4abf[_0x6a44('0x41')]['id']}},_0x18315e={};_0x18315e['model']=_['keys'](db[_0x6a44('0x2c')][_0x6a44('0x2d')]);_0x18315e[_0x6a44('0x32')]=_['keys'](_0xea4abf[_0x6a44('0x32')]);_0x18315e[_0x6a44('0x33')]=_[_0x6a44('0x35')](_0x18315e['model'],_0x18315e[_0x6a44('0x32')]);_0x21ba45[_0x6a44('0x34')]=_[_0x6a44('0x35')](_0x18315e[_0x6a44('0x2f')],qs[_0x6a44('0x36')](_0xea4abf[_0x6a44('0x32')][_0x6a44('0x36')]));_0x21ba45[_0x6a44('0x34')]=_0x21ba45['attributes'][_0x6a44('0x37')]?_0x21ba45[_0x6a44('0x34')]:_0x18315e[_0x6a44('0x2f')];if(_0xea4abf[_0x6a44('0x32')][_0x6a44('0x3f')]){_0x21ba45[_0x6a44('0x40')]=[{'all':!![]}];}_0x21ba45=_[_0x6a44('0x3d')]({},_0x21ba45,_0xea4abf[_0x6a44('0x42')]);return db[_0x6a44('0x2c')]['find'](_0x21ba45)[_0x6a44('0x25')](handleEntityNotFound(_0xcdb39,null))[_0x6a44('0x25')](respondWithResult(_0xcdb39,null))[_0x6a44('0x43')](handleError(_0xcdb39,null));};exports[_0x6a44('0x44')]=function(_0x620eb6,_0x215b77){return db[_0x6a44('0x2c')][_0x6a44('0x44')](_0x620eb6['body'],{})[_0x6a44('0x25')](respondWithResult(_0x215b77,0xc9))[_0x6a44('0x43')](handleError(_0x215b77,null));};exports[_0x6a44('0x24')]=function(_0x4dce0f,_0x151681){if(_0x4dce0f['body']['id']){delete _0x4dce0f['body']['id'];}return db[_0x6a44('0x2c')][_0x6a44('0x45')]({'where':{'id':_0x4dce0f['params']['id']}})['then'](handleEntityNotFound(_0x151681,null))[_0x6a44('0x25')](saveUpdates(_0x4dce0f[_0x6a44('0x46')],null))['then'](respondWithResult(_0x151681,null))[_0x6a44('0x43')](handleError(_0x151681,null));};exports['destroy']=function(_0x18f09a,_0x434ded){return db[_0x6a44('0x2c')]['find']({'where':{'id':_0x18f09a['params']['id']}})['then'](handleEntityNotFound(_0x434ded,null))['then'](removeEntity(_0x434ded,null))[_0x6a44('0x43')](handleError(_0x434ded,null));};exports[_0x6a44('0x47')]=function(_0x428a08,_0x21b457,_0x213478){var _0x598d7a={};var _0x288224={};var _0x560ab2;var _0x28855c;return db[_0x6a44('0x2c')]['findOne']({'where':{'id':_0x428a08[_0x6a44('0x41')]['id']}})[_0x6a44('0x25')](handleEntityNotFound(_0x21b457,null))['then'](function(_0x39774a){if(_0x39774a){_0x560ab2=_0x39774a;_0x288224[_0x6a44('0x2f')]=_[_0x6a44('0x31')](db[_0x6a44('0x48')][_0x6a44('0x2d')]);_0x288224[_0x6a44('0x32')]=_[_0x6a44('0x31')](_0x428a08[_0x6a44('0x32')]);_0x288224[_0x6a44('0x33')]=_[_0x6a44('0x35')](_0x288224['model'],_0x288224[_0x6a44('0x32')]);_0x598d7a['attributes']=_[_0x6a44('0x35')](_0x288224[_0x6a44('0x2f')],qs[_0x6a44('0x36')](_0x428a08[_0x6a44('0x32')][_0x6a44('0x36')]));_0x598d7a['attributes']=_0x598d7a[_0x6a44('0x34')][_0x6a44('0x37')]?_0x598d7a[_0x6a44('0x34')]:_0x288224[_0x6a44('0x2f')];_0x598d7a[_0x6a44('0x49')]=qs[_0x6a44('0x3a')](_0x428a08[_0x6a44('0x32')][_0x6a44('0x3a')]);_0x598d7a[_0x6a44('0x3b')]=qs[_0x6a44('0x33')](_[_0x6a44('0x4a')](_0x428a08['query'],_0x288224[_0x6a44('0x33')]));if(_0x428a08[_0x6a44('0x32')][_0x6a44('0x3c')]){_0x598d7a[_0x6a44('0x3b')]=_[_0x6a44('0x3d')](_0x598d7a[_0x6a44('0x3b')],{'$or':_[_0x6a44('0x30')](_0x598d7a[_0x6a44('0x34')],function(_0x276625){var _0x4fabb8={};_0x4fabb8[_0x276625]={'$like':'%'+_0x428a08[_0x6a44('0x32')][_0x6a44('0x3c')]+'%'};return _0x4fabb8;})});}_0x598d7a=_[_0x6a44('0x3d')]({},_0x598d7a,_0x428a08[_0x6a44('0x42')]);return _0x560ab2['getConfigurations'](_0x598d7a);}})[_0x6a44('0x25')](function(_0x1c3350){if(_0x1c3350){_0x28855c=_0x1c3350[_0x6a44('0x37')];if(!_0x428a08['query'][_0x6a44('0x38')]('nolimit')){_0x598d7a['limit']=qs[_0x6a44('0x1e')](_0x428a08[_0x6a44('0x32')][_0x6a44('0x1e')]);_0x598d7a[_0x6a44('0x1c')]=qs[_0x6a44('0x1c')](_0x428a08['query'][_0x6a44('0x1c')]);}return _0x560ab2[_0x6a44('0x47')](_0x598d7a);}})['then'](function(_0x4abebd){if(_0x4abebd){return _0x4abebd?{'count':_0x28855c,'rows':_0x4abebd}:null;}})[_0x6a44('0x25')](respondWithResult(_0x21b457,null))[_0x6a44('0x43')](handleError(_0x21b457,null));};exports[_0x6a44('0x4b')]=function(_0x2aaea3,_0x5e02ed,_0x214529){if(_0x2aaea3[_0x6a44('0x46')]['id']){delete _0x2aaea3['body']['id'];}return db['FreshdeskAccount'][_0x6a44('0x4c')]({'where':{'id':_0x2aaea3[_0x6a44('0x41')]['id']}})[_0x6a44('0x25')](handleEntityNotFound(_0x5e02ed,null))['then'](function(_0x252ea4){if(_0x252ea4){_0x2aaea3[_0x6a44('0x46')][_0x6a44('0x4d')]=_0x252ea4['id'];_0x2aaea3[_0x6a44('0x46')][_0x6a44('0x4e')]=integrations[_0x6a44('0x4f')](_0x2aaea3['body'][_0x6a44('0x50')],_0x2aaea3[_0x6a44('0x46')]['type']);_0x2aaea3[_0x6a44('0x46')][_0x6a44('0x51')]=integrations[_0x6a44('0x52')](_0x2aaea3['body']['channel'],_0x2aaea3[_0x6a44('0x46')][_0x6a44('0x2e')]);return db['FreshdeskConfiguration'][_0x6a44('0x44')](_0x2aaea3['body'],{'include':[{'model':db[_0x6a44('0x53')],'as':_0x6a44('0x4e')},{'model':db[_0x6a44('0x53')],'as':_0x6a44('0x51')}]});}return null;})['then'](respondWithResult(_0x5e02ed,null))['catch'](handleError(_0x5e02ed,null));};exports[_0x6a44('0x54')]=function(_0x46dbe5,_0x46a77a,_0x229bc4){var _0x230932='';return db[_0x6a44('0x2c')][_0x6a44('0x4c')]({'where':{'id':_0x46dbe5[_0x6a44('0x41')]['id']},'attributes':['id',_0x6a44('0x55'),_0x6a44('0x56')]})[_0x6a44('0x25')](handleEntityNotFound(_0x46a77a,null))[_0x6a44('0x25')](function(_0x19de84){if(_0x19de84){_0x230932=_0x19de84[_0x6a44('0x55')];var _0x1490be=_0x230932[_0x6a44('0x57')](-0x1);if(_0x1490be==='/'){_0x230932=_0x230932[_0x6a44('0x58')](0x0,_0x230932[_0x6a44('0x59')](_0x1490be));}return rp({'method':_0x6a44('0x5a'),'uri':util[_0x6a44('0x5b')]('%s/%s',_0x230932,_0x6a44('0x5c')),'headers':{'Authorization':util[_0x6a44('0x5b')](_0x6a44('0x5d'),new Buffer(util[_0x6a44('0x5b')]('%s:X',_0x19de84[_0x6a44('0x56')]))[_0x6a44('0x5e')](_0x6a44('0x5f')))},'json':!![]});}})[_0x6a44('0x25')](function(_0x436833){if(_0x436833){var _0x3c1561=['requester',_0x6a44('0x60'),_0x6a44('0x61'),_0x6a44('0x62'),_0x6a44('0x1a'),_0x6a44('0x63'),_0x6a44('0x64'),'source',_0x6a44('0x65'),_0x6a44('0x64'),'company'];_[_0x6a44('0x66')](_0x436833,function(_0x463126){return _0x3c1561[_0x6a44('0x67')](_0x463126['name'])||!_0x463126[_0x6a44('0x68')]&&_0x463126['type']!==_0x6a44('0x69')&&_0x463126['type']!==_0x6a44('0x6a');});return{'count':_0x436833['length'],'rows':_[_0x6a44('0x30')](_0x436833,function(_0x457d9e){return{'id':_0x457d9e[_0x6a44('0x29')],'name':_0x457d9e['label'],'custom':!_0x457d9e['default'],'options':_0x457d9e[_0x6a44('0x6b')]?_[_0x6a44('0x30')](_0x457d9e[_0x6a44('0x6b')],function(_0x414c7){return{'name':_[_0x6a44('0x6c')](_0x414c7),'value':_0x414c7};}):[]};})};}})['then'](respondWithResult(_0x46a77a,null))[_0x6a44('0x43')](function(_0x40e621){var _0x26e3b2=_0x46dbe5[_0x6a44('0x32')][_0x6a44('0x6d')]?0x1f4:_0x40e621[_0x6a44('0x6e')]||0x1f4;logger[_0x6a44('0x27')]('getFields,\x20%s,\x20%s,\x20%s',_0x6a44('0x54'),_0x26e3b2,JSON[_0x6a44('0x6f')](_0x40e621));delete _0x40e621[_0x6a44('0x29')];if(_0x26e3b2===0x191){_0x26e3b2=0x190;}_0x46a77a[_0x6a44('0x1a')](_0x26e3b2)[_0x6a44('0x2a')](_0x46dbe5[_0x6a44('0x32')][_0x6a44('0x6d')]?{'message':_0x6a44('0x70'),'statusCode':_0x40e621[_0x6a44('0x6e')]}:_0x40e621);});};
\ No newline at end of file
+var _0xc686=['path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','FreshdeskAccount','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create','body','FreshdeskConfiguration','getConfigurations','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','findOne','remoteUri','apiKey','lastIndexOf','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','requester','subject','agent','description','priority','group','ticket_type','remove','custom_dropdown','label','default','choices','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','zip-dir','request-promise','bluebird','mustache','util'];(function(_0x5c7d4b,_0x305110){var _0x422e90=function(_0x23153f){while(--_0x23153f){_0x5c7d4b['push'](_0x5c7d4b['shift']());}};_0x422e90(++_0x305110);}(_0xc686,0x148));var _0x6c68=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xc686[_0x47e7cb];return _0x2a8874;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6c68('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6c68('0x1'));var moment=require('moment');var BPromise=require(_0x6c68('0x2'));var Mustache=require(_0x6c68('0x3'));var util=require(_0x6c68('0x4'));var path=require(_0x6c68('0x5'));var sox=require(_0x6c68('0x6'));var csv=require(_0x6c68('0x7'));var ejs=require(_0x6c68('0x8'));var fs=require('fs');var fs_extra=require(_0x6c68('0x9'));var _=require(_0x6c68('0xa'));var squel=require(_0x6c68('0xb'));var crypto=require(_0x6c68('0xc'));var jsforce=require(_0x6c68('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x6c68('0x7'));var querystring=require(_0x6c68('0xe'));var Papa=require('papaparse');var Redis=require(_0x6c68('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x6c68('0x10'));var as=require(_0x6c68('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6c68('0x12'))('api');var utils=require(_0x6c68('0x13'));var config=require(_0x6c68('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x6c68('0x15'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4f947a,_0x29e0a5){_0x29e0a5=_0x29e0a5||0xcc;return function(_0x5c9dc5){if(_0x5c9dc5){return _0x4f947a[_0x6c68('0x16')](_0x29e0a5);}return _0x4f947a[_0x6c68('0x17')](_0x29e0a5)[_0x6c68('0x18')]();};}function respondWithResult(_0x4c4f5d,_0x25a4dc){_0x25a4dc=_0x25a4dc||0xc8;return function(_0xe1192c){if(_0xe1192c){return _0x4c4f5d[_0x6c68('0x17')](_0x25a4dc)[_0x6c68('0x19')](_0xe1192c);}};}function respondWithFilteredResult(_0x2dc30b,_0x494b6e){return function(_0x5a0a84){if(_0x5a0a84){var _0x49520f=typeof _0x494b6e[_0x6c68('0x1a')]===_0x6c68('0x1b')&&typeof _0x494b6e[_0x6c68('0x1c')]===_0x6c68('0x1b');var _0x50e459=_0x5a0a84[_0x6c68('0x1d')];var _0x16a4a0=_0x49520f?0x0:_0x494b6e['offset'];var _0x54a792=_0x49520f?_0x5a0a84[_0x6c68('0x1d')]:_0x494b6e[_0x6c68('0x1a')]+_0x494b6e[_0x6c68('0x1c')];var _0x5d7efc;if(_0x54a792>=_0x50e459){_0x54a792=_0x50e459;_0x5d7efc=0xc8;}else{_0x5d7efc=0xce;}_0x2dc30b[_0x6c68('0x17')](_0x5d7efc);return _0x2dc30b[_0x6c68('0x1e')](_0x6c68('0x1f'),_0x16a4a0+'-'+_0x54a792+'/'+_0x50e459)[_0x6c68('0x19')](_0x5a0a84);}return null;};}function patchUpdates(_0x153edb){return function(_0x232a63){try{jsonpatch[_0x6c68('0x20')](_0x232a63,_0x153edb,!![]);}catch(_0x3a5043){return BPromise[_0x6c68('0x21')](_0x3a5043);}return _0x232a63[_0x6c68('0x22')]();};}function saveUpdates(_0x5974e8,_0x201d7d){return function(_0x3879a2){if(_0x3879a2){return _0x3879a2[_0x6c68('0x23')](_0x5974e8)[_0x6c68('0x24')](function(_0xb06428){return _0xb06428;});}return null;};}function removeEntity(_0x2a4aba,_0x3e680a){return function(_0x47560e){if(_0x47560e){return _0x47560e[_0x6c68('0x25')]()[_0x6c68('0x24')](function(){_0x2a4aba[_0x6c68('0x17')](0xcc)[_0x6c68('0x18')]();});}};}function handleEntityNotFound(_0x1efc4e,_0x3b105c){return function(_0x45e351){if(!_0x45e351){_0x1efc4e[_0x6c68('0x16')](0x194);}return _0x45e351;};}function handleError(_0x69310b,_0x5c9c19){_0x5c9c19=_0x5c9c19||0x1f4;return function(_0x35eaa3){logger[_0x6c68('0x26')](_0x35eaa3[_0x6c68('0x27')]);if(_0x35eaa3[_0x6c68('0x28')]){delete _0x35eaa3[_0x6c68('0x28')];}_0x69310b[_0x6c68('0x17')](_0x5c9c19)[_0x6c68('0x29')](_0x35eaa3);};}exports[_0x6c68('0x2a')]=function(_0x111723,_0x4ec904){var _0x1321d1={},_0x43bf40={},_0x56b684={'count':0x0,'rows':[]};var _0x5a3f37=_[_0x6c68('0x2b')](db[_0x6c68('0x2c')]['rawAttributes'],function(_0x18f087){return{'name':_0x18f087[_0x6c68('0x2d')],'type':_0x18f087[_0x6c68('0x2e')]['key']};});_0x43bf40[_0x6c68('0x2f')]=_[_0x6c68('0x2b')](_0x5a3f37,_0x6c68('0x28'));_0x43bf40[_0x6c68('0x30')]=_[_0x6c68('0x31')](_0x111723[_0x6c68('0x30')]);_0x43bf40[_0x6c68('0x32')]=_[_0x6c68('0x33')](_0x43bf40[_0x6c68('0x2f')],_0x43bf40[_0x6c68('0x30')]);_0x1321d1[_0x6c68('0x34')]=_[_0x6c68('0x33')](_0x43bf40[_0x6c68('0x2f')],qs[_0x6c68('0x35')](_0x111723[_0x6c68('0x30')][_0x6c68('0x35')]));_0x1321d1['attributes']=_0x1321d1['attributes'][_0x6c68('0x36')]?_0x1321d1[_0x6c68('0x34')]:_0x43bf40[_0x6c68('0x2f')];if(!_0x111723[_0x6c68('0x30')][_0x6c68('0x37')]('nolimit')){_0x1321d1[_0x6c68('0x1c')]=qs[_0x6c68('0x1c')](_0x111723[_0x6c68('0x30')][_0x6c68('0x1c')]);_0x1321d1[_0x6c68('0x1a')]=qs[_0x6c68('0x1a')](_0x111723['query']['offset']);}_0x1321d1[_0x6c68('0x38')]=qs[_0x6c68('0x39')](_0x111723['query']['sort']);_0x1321d1[_0x6c68('0x3a')]=qs['filters'](_[_0x6c68('0x3b')](_0x111723[_0x6c68('0x30')],_0x43bf40['filters']),_0x5a3f37);if(_0x111723[_0x6c68('0x30')][_0x6c68('0x3c')]){_0x1321d1[_0x6c68('0x3a')]=_[_0x6c68('0x3d')](_0x1321d1[_0x6c68('0x3a')],{'$or':_[_0x6c68('0x2b')](_0x5a3f37,function(_0x32a716){if(_0x32a716[_0x6c68('0x2e')]!==_0x6c68('0x3e')){var _0x1bdadd={};_0x1bdadd[_0x32a716[_0x6c68('0x28')]]={'$like':'%'+_0x111723[_0x6c68('0x30')][_0x6c68('0x3c')]+'%'};return _0x1bdadd;}})});}_0x1321d1=_[_0x6c68('0x3d')]({},_0x1321d1,_0x111723[_0x6c68('0x3f')]);var _0x285292={'where':_0x1321d1[_0x6c68('0x3a')]};return db[_0x6c68('0x2c')][_0x6c68('0x1d')](_0x285292)[_0x6c68('0x24')](function(_0x10ea12){_0x56b684[_0x6c68('0x1d')]=_0x10ea12;if(_0x111723[_0x6c68('0x30')]['includeAll']){_0x1321d1[_0x6c68('0x40')]=[{'all':!![]}];}return db[_0x6c68('0x2c')][_0x6c68('0x41')](_0x1321d1);})['then'](function(_0x42bc91){_0x56b684[_0x6c68('0x42')]=_0x42bc91;return _0x56b684;})[_0x6c68('0x24')](respondWithFilteredResult(_0x4ec904,_0x1321d1))[_0x6c68('0x43')](handleError(_0x4ec904,null));};exports[_0x6c68('0x44')]=function(_0x154139,_0x13968a){var _0x388d2c={'raw':![],'where':{'id':_0x154139[_0x6c68('0x45')]['id']}},_0x17103f={};_0x17103f[_0x6c68('0x2f')]=_[_0x6c68('0x31')](db[_0x6c68('0x2c')][_0x6c68('0x46')]);_0x17103f[_0x6c68('0x30')]=_[_0x6c68('0x31')](_0x154139['query']);_0x17103f[_0x6c68('0x32')]=_[_0x6c68('0x33')](_0x17103f[_0x6c68('0x2f')],_0x17103f[_0x6c68('0x30')]);_0x388d2c['attributes']=_[_0x6c68('0x33')](_0x17103f[_0x6c68('0x2f')],qs['fields'](_0x154139[_0x6c68('0x30')][_0x6c68('0x35')]));_0x388d2c[_0x6c68('0x34')]=_0x388d2c['attributes'][_0x6c68('0x36')]?_0x388d2c[_0x6c68('0x34')]:_0x17103f[_0x6c68('0x2f')];if(_0x154139[_0x6c68('0x30')][_0x6c68('0x47')]){_0x388d2c[_0x6c68('0x40')]=[{'all':!![]}];}_0x388d2c=_['merge']({},_0x388d2c,_0x154139[_0x6c68('0x3f')]);return db['FreshdeskAccount'][_0x6c68('0x48')](_0x388d2c)['then'](handleEntityNotFound(_0x13968a,null))[_0x6c68('0x24')](respondWithResult(_0x13968a,null))['catch'](handleError(_0x13968a,null));};exports[_0x6c68('0x49')]=function(_0x40b3ed,_0x131344){return db[_0x6c68('0x2c')][_0x6c68('0x49')](_0x40b3ed[_0x6c68('0x4a')],{})[_0x6c68('0x24')](respondWithResult(_0x131344,0xc9))[_0x6c68('0x43')](handleError(_0x131344,null));};exports['update']=function(_0x19f1fc,_0x49b046){if(_0x19f1fc['body']['id']){delete _0x19f1fc[_0x6c68('0x4a')]['id'];}return db[_0x6c68('0x2c')][_0x6c68('0x48')]({'where':{'id':_0x19f1fc[_0x6c68('0x45')]['id']}})[_0x6c68('0x24')](handleEntityNotFound(_0x49b046,null))['then'](saveUpdates(_0x19f1fc[_0x6c68('0x4a')],null))[_0x6c68('0x24')](respondWithResult(_0x49b046,null))[_0x6c68('0x43')](handleError(_0x49b046,null));};exports['destroy']=function(_0x30defa,_0x42bda2){return db[_0x6c68('0x2c')][_0x6c68('0x48')]({'where':{'id':_0x30defa['params']['id']}})['then'](handleEntityNotFound(_0x42bda2,null))[_0x6c68('0x24')](removeEntity(_0x42bda2,null))[_0x6c68('0x43')](handleError(_0x42bda2,null));};exports['getConfigurations']=function(_0x41d4c9,_0x506198,_0x501353){var _0x472e49={};var _0x53c905={};var _0x42c8c1;var _0x1cf860;return db[_0x6c68('0x2c')]['findOne']({'where':{'id':_0x41d4c9['params']['id']}})['then'](handleEntityNotFound(_0x506198,null))[_0x6c68('0x24')](function(_0x3a56dd){if(_0x3a56dd){_0x42c8c1=_0x3a56dd;_0x53c905[_0x6c68('0x2f')]=_[_0x6c68('0x31')](db[_0x6c68('0x4b')][_0x6c68('0x46')]);_0x53c905[_0x6c68('0x30')]=_[_0x6c68('0x31')](_0x41d4c9['query']);_0x53c905[_0x6c68('0x32')]=_['intersection'](_0x53c905[_0x6c68('0x2f')],_0x53c905[_0x6c68('0x30')]);_0x472e49[_0x6c68('0x34')]=_[_0x6c68('0x33')](_0x53c905['model'],qs[_0x6c68('0x35')](_0x41d4c9[_0x6c68('0x30')]['fields']));_0x472e49[_0x6c68('0x34')]=_0x472e49[_0x6c68('0x34')][_0x6c68('0x36')]?_0x472e49[_0x6c68('0x34')]:_0x53c905[_0x6c68('0x2f')];_0x472e49['order']=qs[_0x6c68('0x39')](_0x41d4c9[_0x6c68('0x30')]['sort']);_0x472e49['where']=qs[_0x6c68('0x32')](_['pick'](_0x41d4c9[_0x6c68('0x30')],_0x53c905[_0x6c68('0x32')]));if(_0x41d4c9[_0x6c68('0x30')][_0x6c68('0x3c')]){_0x472e49[_0x6c68('0x3a')]=_[_0x6c68('0x3d')](_0x472e49['where'],{'$or':_['map'](_0x472e49[_0x6c68('0x34')],function(_0x2526bd){var _0x109187={};_0x109187[_0x2526bd]={'$like':'%'+_0x41d4c9[_0x6c68('0x30')][_0x6c68('0x3c')]+'%'};return _0x109187;})});}_0x472e49=_[_0x6c68('0x3d')]({},_0x472e49,_0x41d4c9[_0x6c68('0x3f')]);return _0x42c8c1[_0x6c68('0x4c')](_0x472e49);}})['then'](function(_0x509852){if(_0x509852){_0x1cf860=_0x509852['length'];if(!_0x41d4c9[_0x6c68('0x30')]['hasOwnProperty'](_0x6c68('0x4d'))){_0x472e49[_0x6c68('0x1c')]=qs['limit'](_0x41d4c9[_0x6c68('0x30')][_0x6c68('0x1c')]);_0x472e49[_0x6c68('0x1a')]=qs[_0x6c68('0x1a')](_0x41d4c9[_0x6c68('0x30')][_0x6c68('0x1a')]);}return _0x42c8c1[_0x6c68('0x4c')](_0x472e49);}})[_0x6c68('0x24')](function(_0x1b1d29){if(_0x1b1d29){return _0x1b1d29?{'count':_0x1cf860,'rows':_0x1b1d29}:null;}})['then'](respondWithResult(_0x506198,null))[_0x6c68('0x43')](handleError(_0x506198,null));};exports[_0x6c68('0x4e')]=function(_0x156061,_0x649c35,_0x3b803f){if(_0x156061[_0x6c68('0x4a')]['id']){delete _0x156061[_0x6c68('0x4a')]['id'];}return db['FreshdeskAccount']['findOne']({'where':{'id':_0x156061[_0x6c68('0x45')]['id']}})[_0x6c68('0x24')](handleEntityNotFound(_0x649c35,null))[_0x6c68('0x24')](function(_0x4afb5c){if(_0x4afb5c){_0x156061['body'][_0x6c68('0x4f')]=_0x4afb5c['id'];_0x156061['body'][_0x6c68('0x50')]=integrations[_0x6c68('0x51')](_0x156061[_0x6c68('0x4a')][_0x6c68('0x52')],_0x156061['body'][_0x6c68('0x2e')]);_0x156061[_0x6c68('0x4a')][_0x6c68('0x53')]=integrations['getDescriptions'](_0x156061[_0x6c68('0x4a')]['channel'],_0x156061[_0x6c68('0x4a')][_0x6c68('0x2e')]);return db[_0x6c68('0x4b')][_0x6c68('0x49')](_0x156061[_0x6c68('0x4a')],{'include':[{'model':db['FreshdeskField'],'as':_0x6c68('0x50')},{'model':db['FreshdeskField'],'as':_0x6c68('0x53')}]});}return null;})[_0x6c68('0x24')](respondWithResult(_0x649c35,null))[_0x6c68('0x43')](handleError(_0x649c35,null));};exports['getFields']=function(_0x109f24,_0x13c411,_0x2571b3){var _0x1ead1d='';return db[_0x6c68('0x2c')][_0x6c68('0x54')]({'where':{'id':_0x109f24['params']['id']},'attributes':['id',_0x6c68('0x55'),_0x6c68('0x56')]})[_0x6c68('0x24')](handleEntityNotFound(_0x13c411,null))['then'](function(_0x821b3f){if(_0x821b3f){_0x1ead1d=_0x821b3f[_0x6c68('0x55')];var _0x452fa9=_0x1ead1d['slice'](-0x1);if(_0x452fa9==='/'){_0x1ead1d=_0x1ead1d['substring'](0x0,_0x1ead1d[_0x6c68('0x57')](_0x452fa9));}return rp({'method':'GET','uri':util[_0x6c68('0x58')](_0x6c68('0x59'),_0x1ead1d,_0x6c68('0x5a')),'headers':{'Authorization':util[_0x6c68('0x58')](_0x6c68('0x5b'),new Buffer(util[_0x6c68('0x58')]('%s:X',_0x821b3f[_0x6c68('0x56')]))['toString']('base64'))},'json':!![]});}})['then'](function(_0x11338a){if(_0x11338a){var _0x4325ce=[_0x6c68('0x5c'),_0x6c68('0x5d'),_0x6c68('0x5e'),_0x6c68('0x5f'),_0x6c68('0x17'),_0x6c68('0x60'),_0x6c68('0x61'),'source',_0x6c68('0x62'),_0x6c68('0x61'),'company'];_[_0x6c68('0x63')](_0x11338a,function(_0x4e20cd){return _0x4325ce['includes'](_0x4e20cd[_0x6c68('0x28')])||!_0x4e20cd['default']&&_0x4e20cd[_0x6c68('0x2e')]!=='custom_text'&&_0x4e20cd[_0x6c68('0x2e')]!==_0x6c68('0x64');});return{'count':_0x11338a['length'],'rows':_[_0x6c68('0x2b')](_0x11338a,function(_0x15d769){return{'id':_0x15d769[_0x6c68('0x28')],'name':_0x15d769[_0x6c68('0x65')],'custom':!_0x15d769[_0x6c68('0x66')],'options':_0x15d769[_0x6c68('0x67')]?_['map'](_0x15d769[_0x6c68('0x67')],function(_0x43eb0e){return{'name':_[_0x6c68('0x68')](_0x43eb0e),'value':_0x43eb0e};}):[]};})};}})['then'](respondWithResult(_0x13c411,null))[_0x6c68('0x43')](function(_0x1e900f){var _0x20ed9c=_0x109f24['query'][_0x6c68('0x69')]?0x1f4:_0x1e900f[_0x6c68('0x6a')]||0x1f4;logger[_0x6c68('0x26')](_0x6c68('0x6b'),_0x6c68('0x6c'),_0x20ed9c,JSON[_0x6c68('0x6d')](_0x1e900f));delete _0x1e900f[_0x6c68('0x28')];if(_0x20ed9c===0x191){_0x20ed9c=0x190;}_0x13c411[_0x6c68('0x17')](_0x20ed9c)[_0x6c68('0x29')](_0x109f24[_0x6c68('0x30')]['test']?{'message':_0x6c68('0x6e'),'statusCode':_0x1e900f[_0x6c68('0x6a')]}:_0x1e900f);});};
\ No newline at end of file
index 38f8980..90dd2b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf5e=['../../config/environment','../../components/integrations/configuration','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x3a8697,_0x4e39e8){var _0xa4c873=function(_0x3479aa){while(--_0x3479aa){_0x3a8697['push'](_0x3a8697['shift']());}};_0xa4c873(++_0x4e39e8);}(_0xaf5e,0x116));var _0xeaf5=function(_0x490da9,_0x43753d){_0x490da9=_0x490da9-0x0;var _0x20593d=_0xaf5e[_0x490da9];return _0x20593d;};'use strict';var _=require(_0xeaf5('0x0'));var util=require(_0xeaf5('0x1'));var logger=require(_0xeaf5('0x2'))(_0xeaf5('0x3'));var moment=require(_0xeaf5('0x4'));var BPromise=require(_0xeaf5('0x5'));var rp=require(_0xeaf5('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xeaf5('0x7'));var config=require(_0xeaf5('0x8'));var attributes=require('./intFreshdeskAccount.attributes');var integrations=require(_0xeaf5('0x9'));module['exports']=function(_0x5be828,_0x57cdcd){return _0x5be828[_0xeaf5('0xa')](_0xeaf5('0xb'),attributes,{'tableName':_0xeaf5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x637f=['../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','define','int_freshdesk_accounts','lodash','../../config/logger','moment','request-promise','rimraf'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x637f,0xaf));var _0xf637=function(_0x5f5497,_0x50803a){_0x5f5497=_0x5f5497-0x0;var _0x10e943=_0x637f[_0x5f5497];return _0x10e943;};'use strict';var _=require(_0xf637('0x0'));var util=require('util');var logger=require(_0xf637('0x1'))('api');var moment=require(_0xf637('0x2'));var BPromise=require('bluebird');var rp=require(_0xf637('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf637('0x4'));var config=require(_0xf637('0x5'));var attributes=require(_0xf637('0x6'));var integrations=require(_0xf637('0x7'));module['exports']=function(_0x5145cf,_0x4d7a15){return _0x5145cf[_0xf637('0x8')]('FreshdeskAccount',attributes,{'tableName':_0xf637('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0fe8947..d1fe490 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69b4=['findAll','options','raw','where','attributes','limit','include','map','model','stringify','ShowFreshdeskAccount','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','GetFreshdeskAccount','FreshdeskAccount'];(function(_0x4fd71e,_0x3ec6d5){var _0x7cf1dc=function(_0x132589){while(--_0x132589){_0x4fd71e['push'](_0x4fd71e['shift']());}};_0x7cf1dc(++_0x3ec6d5);}(_0x69b4,0x133));var _0x469b=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x69b4[_0x126558];return _0x1f6d14;};'use strict';var _=require(_0x469b('0x0'));var util=require(_0x469b('0x1'));var moment=require(_0x469b('0x2'));var BPromise=require('bluebird');var rs=require(_0x469b('0x3'));var fs=require('fs');var Redis=require(_0x469b('0x4'));var db=require(_0x469b('0x5'))['db'];var utils=require(_0x469b('0x6'));var logger=require(_0x469b('0x7'))(_0x469b('0x8'));var config=require(_0x469b('0x9'));var jayson=require(_0x469b('0xa'));var client=jayson[_0x469b('0xb')][_0x469b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x390028,_0x5e3dad,_0x2d5cb1){return new BPromise(function(_0x5c3975,_0x72f6f4){return client[_0x469b('0xd')](_0x390028,_0x2d5cb1)[_0x469b('0xe')](function(_0x459230){logger['info'](_0x469b('0xf'),_0x5e3dad,_0x469b('0x10'));logger[_0x469b('0x11')](_0x469b('0x12'),_0x5e3dad,'request\x20sent',JSON['stringify'](_0x459230));if(_0x459230['error']){if(_0x459230[_0x469b('0x13')][_0x469b('0x14')]===0x1f4){logger['error'](_0x469b('0xf'),_0x5e3dad,_0x459230[_0x469b('0x13')][_0x469b('0x15')]);return _0x72f6f4(_0x459230[_0x469b('0x13')][_0x469b('0x15')]);}logger['error']('FreshdeskAccount,\x20%s,\x20%s',_0x5e3dad,_0x459230[_0x469b('0x13')][_0x469b('0x15')]);return _0x5c3975(_0x459230['error'][_0x469b('0x15')]);}else{logger[_0x469b('0x16')]('FreshdeskAccount,\x20%s,\x20%s',_0x5e3dad,'request\x20sent');_0x5c3975(_0x459230['result']['message']);}})[_0x469b('0x17')](function(_0xcf18b9){logger[_0x469b('0x13')](_0x469b('0xf'),_0x5e3dad,_0xcf18b9);_0x72f6f4(_0xcf18b9);});});}exports[_0x469b('0x18')]=function(_0x1b4a87){var _0x4cb5f8=this;return new Promise(function(_0x45d8e2,_0x1e6527){return db[_0x469b('0x19')][_0x469b('0x1a')]({'raw':_0x1b4a87[_0x469b('0x1b')]?_0x1b4a87['options'][_0x469b('0x1c')]===undefined?!![]:![]:!![],'where':_0x1b4a87[_0x469b('0x1b')]?_0x1b4a87[_0x469b('0x1b')][_0x469b('0x1d')]||null:null,'attributes':_0x1b4a87['options']?_0x1b4a87[_0x469b('0x1b')][_0x469b('0x1e')]||null:null,'limit':_0x1b4a87[_0x469b('0x1b')]?_0x1b4a87[_0x469b('0x1b')][_0x469b('0x1f')]||null:null,'include':_0x1b4a87['options']?_0x1b4a87[_0x469b('0x1b')][_0x469b('0x20')]?_[_0x469b('0x21')](_0x1b4a87[_0x469b('0x1b')][_0x469b('0x20')],function(_0x488058){return{'model':db[_0x488058['model']],'as':_0x488058['as'],'attributes':_0x488058[_0x469b('0x1e')],'include':_0x488058[_0x469b('0x20')]?_[_0x469b('0x21')](_0x488058[_0x469b('0x20')],function(_0x1f44a1){return{'model':db[_0x1f44a1[_0x469b('0x22')]],'as':_0x1f44a1['as'],'attributes':_0x1f44a1[_0x469b('0x1e')],'include':_0x1f44a1[_0x469b('0x20')]?_['map'](_0x1f44a1[_0x469b('0x20')],function(_0x220b69){return{'model':db[_0x220b69[_0x469b('0x22')]],'as':_0x220b69['as'],'attributes':_0x220b69[_0x469b('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x469b('0xe')](function(_0x70bdc0){logger[_0x469b('0x16')]('GetFreshdeskAccount',_0x1b4a87);logger[_0x469b('0x11')](_0x469b('0x18'),_0x1b4a87,JSON[_0x469b('0x23')](_0x70bdc0));_0x45d8e2(_0x70bdc0);})[_0x469b('0x17')](function(_0x2569f8){logger[_0x469b('0x13')](_0x469b('0x18'),_0x2569f8[_0x469b('0x15')],_0x1b4a87);_0x1e6527(_0x4cb5f8[_0x469b('0x13')](0x1f4,_0x2569f8['message']));});});};exports[_0x469b('0x24')]=function(_0x4a2fda){var _0x3af0de=this;return new Promise(function(_0x2aba99,_0x292f53){return db['FreshdeskAccount']['find']({'raw':_0x4a2fda[_0x469b('0x1b')]?_0x4a2fda[_0x469b('0x1b')][_0x469b('0x1c')]===undefined?!![]:![]:!![],'where':_0x4a2fda[_0x469b('0x1b')]?_0x4a2fda[_0x469b('0x1b')][_0x469b('0x1d')]||null:null,'attributes':_0x4a2fda[_0x469b('0x1b')]?_0x4a2fda[_0x469b('0x1b')][_0x469b('0x1e')]||null:null,'include':_0x4a2fda[_0x469b('0x1b')]?_0x4a2fda[_0x469b('0x1b')][_0x469b('0x20')]?_['map'](_0x4a2fda['options'][_0x469b('0x20')],function(_0x4d3539){return{'model':db[_0x4d3539['model']],'as':_0x4d3539['as'],'attributes':_0x4d3539[_0x469b('0x1e')],'include':_0x4d3539[_0x469b('0x20')]?_[_0x469b('0x21')](_0x4d3539[_0x469b('0x20')],function(_0xa3be40){return{'model':db[_0xa3be40[_0x469b('0x22')]],'as':_0xa3be40['as'],'attributes':_0xa3be40[_0x469b('0x1e')],'include':_0xa3be40[_0x469b('0x20')]?_['map'](_0xa3be40[_0x469b('0x20')],function(_0x1f90e0){return{'model':db[_0x1f90e0[_0x469b('0x22')]],'as':_0x1f90e0['as'],'attributes':_0x1f90e0['attributes']};}):[]};}):[]};}):[]:[]})[_0x469b('0xe')](function(_0x52b34b){logger[_0x469b('0x16')]('ShowFreshdeskAccount',_0x4a2fda);logger[_0x469b('0x11')](_0x469b('0x24'),_0x4a2fda,JSON[_0x469b('0x23')](_0x52b34b));_0x2aba99(_0x52b34b);})[_0x469b('0x17')](function(_0xd2a8b0){logger[_0x469b('0x13')](_0x469b('0x24'),_0xd2a8b0['message'],_0x4a2fda);_0x292f53(_0x3af0de[_0x469b('0x13')](0x1f4,_0xd2a8b0[_0x469b('0x15')]));});});};
\ No newline at end of file
+var _0xfc1a=['rpc','http','request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','FreshdeskAccount','findAll','options','raw','where','attributes','limit','include','model','map','GetFreshdeskAccount','ShowFreshdeskAccount','find','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x262d7a,_0xf35286){var _0x27beb5=function(_0x3a27e8){while(--_0x3a27e8){_0x262d7a['push'](_0x262d7a['shift']());}};_0x27beb5(++_0xf35286);}(_0xfc1a,0x1c0));var _0xafc1=function(_0x4c08cc,_0x275419){_0x4c08cc=_0x4c08cc-0x0;var _0x5c3366=_0xfc1a[_0x4c08cc];return _0x5c3366;};'use strict';var _=require(_0xafc1('0x0'));var util=require(_0xafc1('0x1'));var moment=require(_0xafc1('0x2'));var BPromise=require('bluebird');var rs=require(_0xafc1('0x3'));var fs=require('fs');var Redis=require(_0xafc1('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xafc1('0x5'));var logger=require(_0xafc1('0x6'))(_0xafc1('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xafc1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x50c335,_0x1e450e,_0xe0f769){return new BPromise(function(_0x5168bc,_0x19329e){return client[_0xafc1('0x9')](_0x50c335,_0xe0f769)[_0xafc1('0xa')](function(_0x484840){logger[_0xafc1('0xb')](_0xafc1('0xc'),_0x1e450e,_0xafc1('0xd'));logger[_0xafc1('0xe')](_0xafc1('0xf'),_0x1e450e,_0xafc1('0xd'),JSON[_0xafc1('0x10')](_0x484840));if(_0x484840[_0xafc1('0x11')]){if(_0x484840[_0xafc1('0x11')][_0xafc1('0x12')]===0x1f4){logger[_0xafc1('0x11')](_0xafc1('0xc'),_0x1e450e,_0x484840[_0xafc1('0x11')][_0xafc1('0x13')]);return _0x19329e(_0x484840[_0xafc1('0x11')][_0xafc1('0x13')]);}logger[_0xafc1('0x11')](_0xafc1('0xc'),_0x1e450e,_0x484840[_0xafc1('0x11')][_0xafc1('0x13')]);return _0x5168bc(_0x484840[_0xafc1('0x11')][_0xafc1('0x13')]);}else{logger['info'](_0xafc1('0xc'),_0x1e450e,_0xafc1('0xd'));_0x5168bc(_0x484840[_0xafc1('0x14')][_0xafc1('0x13')]);}})[_0xafc1('0x15')](function(_0x49398f){logger['error'](_0xafc1('0xc'),_0x1e450e,_0x49398f);_0x19329e(_0x49398f);});});}exports['GetFreshdeskAccount']=function(_0x166254){var _0x1b991b=this;return new Promise(function(_0x2e7553,_0x5c572d){return db[_0xafc1('0x16')][_0xafc1('0x17')]({'raw':_0x166254[_0xafc1('0x18')]?_0x166254[_0xafc1('0x18')][_0xafc1('0x19')]===undefined?!![]:![]:!![],'where':_0x166254['options']?_0x166254[_0xafc1('0x18')][_0xafc1('0x1a')]||null:null,'attributes':_0x166254[_0xafc1('0x18')]?_0x166254[_0xafc1('0x18')][_0xafc1('0x1b')]||null:null,'limit':_0x166254[_0xafc1('0x18')]?_0x166254['options'][_0xafc1('0x1c')]||null:null,'include':_0x166254['options']?_0x166254[_0xafc1('0x18')][_0xafc1('0x1d')]?_['map'](_0x166254[_0xafc1('0x18')]['include'],function(_0x52c38a){return{'model':db[_0x52c38a[_0xafc1('0x1e')]],'as':_0x52c38a['as'],'attributes':_0x52c38a[_0xafc1('0x1b')],'include':_0x52c38a[_0xafc1('0x1d')]?_[_0xafc1('0x1f')](_0x52c38a[_0xafc1('0x1d')],function(_0x57f4b5){return{'model':db[_0x57f4b5[_0xafc1('0x1e')]],'as':_0x57f4b5['as'],'attributes':_0x57f4b5['attributes'],'include':_0x57f4b5[_0xafc1('0x1d')]?_[_0xafc1('0x1f')](_0x57f4b5[_0xafc1('0x1d')],function(_0x21eae3){return{'model':db[_0x21eae3[_0xafc1('0x1e')]],'as':_0x21eae3['as'],'attributes':_0x21eae3[_0xafc1('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xafc1('0xa')](function(_0x5a424a){logger['info']('GetFreshdeskAccount',_0x166254);logger[_0xafc1('0xe')](_0xafc1('0x20'),_0x166254,JSON['stringify'](_0x5a424a));_0x2e7553(_0x5a424a);})['catch'](function(_0x391e3f){logger[_0xafc1('0x11')](_0xafc1('0x20'),_0x391e3f[_0xafc1('0x13')],_0x166254);_0x5c572d(_0x1b991b[_0xafc1('0x11')](0x1f4,_0x391e3f[_0xafc1('0x13')]));});});};exports[_0xafc1('0x21')]=function(_0x2fac80){var _0x35a664=this;return new Promise(function(_0x50e971,_0x289fa7){return db['FreshdeskAccount'][_0xafc1('0x22')]({'raw':_0x2fac80[_0xafc1('0x18')]?_0x2fac80['options']['raw']===undefined?!![]:![]:!![],'where':_0x2fac80[_0xafc1('0x18')]?_0x2fac80['options'][_0xafc1('0x1a')]||null:null,'attributes':_0x2fac80[_0xafc1('0x18')]?_0x2fac80[_0xafc1('0x18')][_0xafc1('0x1b')]||null:null,'include':_0x2fac80[_0xafc1('0x18')]?_0x2fac80[_0xafc1('0x18')][_0xafc1('0x1d')]?_['map'](_0x2fac80[_0xafc1('0x18')]['include'],function(_0x42b9db){return{'model':db[_0x42b9db[_0xafc1('0x1e')]],'as':_0x42b9db['as'],'attributes':_0x42b9db['attributes'],'include':_0x42b9db[_0xafc1('0x1d')]?_[_0xafc1('0x1f')](_0x42b9db[_0xafc1('0x1d')],function(_0x1aba74){return{'model':db[_0x1aba74[_0xafc1('0x1e')]],'as':_0x1aba74['as'],'attributes':_0x1aba74[_0xafc1('0x1b')],'include':_0x1aba74['include']?_[_0xafc1('0x1f')](_0x1aba74[_0xafc1('0x1d')],function(_0x3f20c7){return{'model':db[_0x3f20c7[_0xafc1('0x1e')]],'as':_0x3f20c7['as'],'attributes':_0x3f20c7[_0xafc1('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xafc1('0xa')](function(_0x4c30a6){logger['info'](_0xafc1('0x21'),_0x2fac80);logger[_0xafc1('0xe')](_0xafc1('0x21'),_0x2fac80,JSON[_0xafc1('0x10')](_0x4c30a6));_0x50e971(_0x4c30a6);})[_0xafc1('0x15')](function(_0x46784a){logger[_0xafc1('0x11')](_0xafc1('0x21'),_0x46784a[_0xafc1('0x13')],_0x2fac80);_0x289fa7(_0x35a664[_0xafc1('0x11')](0x1f4,_0x46784a[_0xafc1('0x13')]));});});};
\ No newline at end of file
index 270bfd5..3b2e34b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3206=['../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','/:id/tags','getTags','post','setTags','put','update','delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service'];(function(_0x4c86b2,_0x29089a){var _0x2901c0=function(_0x30aa2c){while(--_0x30aa2c){_0x4c86b2['push'](_0x4c86b2['shift']());}};_0x2901c0(++_0x29089a);}(_0x3206,0x1e0));var _0x6320=function(_0x233b2a,_0x440cd1){_0x233b2a=_0x233b2a-0x0;var _0x4e828a=_0x3206[_0x233b2a];return _0x4e828a;};'use strict';var multer=require(_0x6320('0x0'));var util=require(_0x6320('0x1'));var path=require(_0x6320('0x2'));var timeout=require('connect-timeout');var express=require(_0x6320('0x3'));var router=express['Router']();var fs_extra=require(_0x6320('0x4'));var auth=require(_0x6320('0x5'));var interaction=require(_0x6320('0x6'));var config=require(_0x6320('0x7'));var controller=require('./intFreshdeskConfiguration.controller');router[_0x6320('0x8')]('/',auth['isAuthenticated'](),controller[_0x6320('0x9')]);router['get'](_0x6320('0xa'),auth[_0x6320('0xb')](),controller[_0x6320('0xc')]);router[_0x6320('0x8')](_0x6320('0xd'),auth[_0x6320('0xb')](),controller[_0x6320('0xe')]);router['get'](_0x6320('0xf'),auth[_0x6320('0xb')](),controller[_0x6320('0x10')]);router[_0x6320('0x8')]('/:id/descriptions',auth[_0x6320('0xb')](),controller[_0x6320('0x11')]);router[_0x6320('0x8')](_0x6320('0x12'),auth[_0x6320('0xb')](),controller[_0x6320('0x13')]);router[_0x6320('0x14')]('/',auth[_0x6320('0xb')](),controller['create']);router[_0x6320('0x14')](_0x6320('0x12'),auth['isAuthenticated'](),controller[_0x6320('0x15')]);router[_0x6320('0x16')](_0x6320('0xa'),auth[_0x6320('0xb')](),controller[_0x6320('0x17')]);router[_0x6320('0x18')]('/:id',auth[_0x6320('0xb')](),controller[_0x6320('0x19')]);module[_0x6320('0x1a')]=router;
\ No newline at end of file
+var _0x2c32=['destroy','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','get','index','/:id','show','/:id/fields','isAuthenticated','getFields','/:id/subjects','getSubjects','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update','delete'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x2c32,0x12a));var _0x22c3=function(_0x31db5c,_0x29f686){_0x31db5c=_0x31db5c-0x0;var _0x52946f=_0x2c32[_0x31db5c];return _0x52946f;};'use strict';var multer=require('multer');var util=require(_0x22c3('0x0'));var path=require(_0x22c3('0x1'));var timeout=require('connect-timeout');var express=require(_0x22c3('0x2'));var router=express[_0x22c3('0x3')]();var fs_extra=require(_0x22c3('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x22c3('0x5'));var config=require(_0x22c3('0x6'));var controller=require(_0x22c3('0x7'));router[_0x22c3('0x8')]('/',auth['isAuthenticated'](),controller[_0x22c3('0x9')]);router[_0x22c3('0x8')](_0x22c3('0xa'),auth['isAuthenticated'](),controller[_0x22c3('0xb')]);router[_0x22c3('0x8')](_0x22c3('0xc'),auth[_0x22c3('0xd')](),controller[_0x22c3('0xe')]);router[_0x22c3('0x8')](_0x22c3('0xf'),auth[_0x22c3('0xd')](),controller[_0x22c3('0x10')]);router[_0x22c3('0x8')]('/:id/descriptions',auth[_0x22c3('0xd')](),controller[_0x22c3('0x11')]);router[_0x22c3('0x8')](_0x22c3('0x12'),auth[_0x22c3('0xd')](),controller[_0x22c3('0x13')]);router[_0x22c3('0x14')]('/',auth[_0x22c3('0xd')](),controller[_0x22c3('0x15')]);router[_0x22c3('0x14')](_0x22c3('0x12'),auth[_0x22c3('0xd')](),controller[_0x22c3('0x16')]);router[_0x22c3('0x17')](_0x22c3('0xa'),auth['isAuthenticated'](),controller[_0x22c3('0x18')]);router[_0x22c3('0x19')](_0x22c3('0xa'),auth[_0x22c3('0xd')](),controller[_0x22c3('0x1a')]);module['exports']=router;
\ No newline at end of file
index 216ae7f..fcce18a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43e8=['sequelize','exports','STRING'];(function(_0x3eb4c2,_0x53dabb){var _0xb3751f=function(_0x373874){while(--_0x373874){_0x3eb4c2['push'](_0x3eb4c2['shift']());}};_0xb3751f(++_0x53dabb);}(_0x43e8,0x8a));var _0x843e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0x43e8[_0x491a7f];return _0x3d8f44;};'use strict';var Sequelize=require(_0x843e('0x0'));module[_0x843e('0x1')]={'name':{'type':Sequelize[_0x843e('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xcf00=['STRING','exports'];(function(_0xcbcade,_0x531372){var _0x3cb9c0=function(_0x5b1b4c){while(--_0x5b1b4c){_0xcbcade['push'](_0xcbcade['shift']());}};_0x3cb9c0(++_0x531372);}(_0xcf00,0x177));var _0x0cf0=function(_0x3b9007,_0x482404){_0x3b9007=_0x3b9007-0x0;var _0xfe01e7=_0xcf00[_0x3b9007];return _0xfe01e7;};'use strict';var Sequelize=require('sequelize');module[_0x0cf0('0x0')]={'name':{'type':Sequelize[_0x0cf0('0x1')]},'description':{'type':Sequelize[_0x0cf0('0x1')]}};
\ No newline at end of file
index 3a2f7ad..724800d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8484=['fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','set','Content-Range','reject','save','update','destroy','then','error','name','send','index','FreshdeskConfiguration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','find','body','params','findOne','FreshdeskField','order','getFields','getSubjects','getDescriptions','Tag','setTags','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv'];(function(_0x5099dc,_0x1c89e8){var _0x22f03c=function(_0x5533bf){while(--_0x5533bf){_0x5099dc['push'](_0x5099dc['shift']());}};_0x22f03c(++_0x1c89e8);}(_0x8484,0x1e4));var _0x4848=function(_0x5acfde,_0x3596d4){_0x5acfde=_0x5acfde-0x0;var _0x123d61=_0x8484[_0x5acfde];return _0x123d61;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4848('0x0'));var jsonpatch=require(_0x4848('0x1'));var rp=require(_0x4848('0x2'));var moment=require(_0x4848('0x3'));var BPromise=require(_0x4848('0x4'));var Mustache=require('mustache');var util=require(_0x4848('0x5'));var path=require(_0x4848('0x6'));var sox=require('sox');var csv=require(_0x4848('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4848('0x8'));var _=require(_0x4848('0x9'));var squel=require(_0x4848('0xa'));var crypto=require('crypto');var jsforce=require(_0x4848('0xb'));var deskjs=require(_0x4848('0xc'));var toCsv=require(_0x4848('0x7'));var querystring=require(_0x4848('0xd'));var Papa=require(_0x4848('0xe'));var Redis=require(_0x4848('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x4848('0x10'));var as=require(_0x4848('0x11'));var hardwareService=require(_0x4848('0x12'));var logger=require(_0x4848('0x13'))('api');var utils=require(_0x4848('0x14'));var config=require(_0x4848('0x15'));var licenseUtil=require(_0x4848('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x370119,_0x31ed19){_0x31ed19=_0x31ed19||0xcc;return function(_0xd08e9f){if(_0xd08e9f){return _0x370119[_0x4848('0x17')](_0x31ed19);}return _0x370119[_0x4848('0x18')](_0x31ed19)[_0x4848('0x19')]();};}function respondWithResult(_0x1bf6d1,_0x5f5ca2){_0x5f5ca2=_0x5f5ca2||0xc8;return function(_0x2b4174){if(_0x2b4174){return _0x1bf6d1[_0x4848('0x18')](_0x5f5ca2)[_0x4848('0x1a')](_0x2b4174);}};}function respondWithFilteredResult(_0x551892,_0x516837){return function(_0x35e0ac){if(_0x35e0ac){var _0x419d94=typeof _0x516837[_0x4848('0x1b')]==='undefined'&&typeof _0x516837[_0x4848('0x1c')]===_0x4848('0x1d');var _0x3c54c3=_0x35e0ac['count'];var _0x3522a9=_0x419d94?0x0:_0x516837[_0x4848('0x1b')];var _0x99541e=_0x419d94?_0x35e0ac['count']:_0x516837['offset']+_0x516837['limit'];var _0xfad690;if(_0x99541e>=_0x3c54c3){_0x99541e=_0x3c54c3;_0xfad690=0xc8;}else{_0xfad690=0xce;}_0x551892[_0x4848('0x18')](_0xfad690);return _0x551892[_0x4848('0x1e')](_0x4848('0x1f'),_0x3522a9+'-'+_0x99541e+'/'+_0x3c54c3)[_0x4848('0x1a')](_0x35e0ac);}return null;};}function patchUpdates(_0x2611ce){return function(_0x152510){try{jsonpatch['apply'](_0x152510,_0x2611ce,!![]);}catch(_0x51dd43){return BPromise[_0x4848('0x20')](_0x51dd43);}return _0x152510[_0x4848('0x21')]();};}function saveUpdates(_0x4470f2,_0x38a152){return function(_0x3b8191){if(_0x3b8191){return _0x3b8191[_0x4848('0x22')](_0x4470f2)['then'](function(_0x5cac99){return _0x5cac99;});}return null;};}function removeEntity(_0x13ac62,_0x13f53f){return function(_0x2bedfb){if(_0x2bedfb){return _0x2bedfb[_0x4848('0x23')]()[_0x4848('0x24')](function(){_0x13ac62[_0x4848('0x18')](0xcc)[_0x4848('0x19')]();});}};}function handleEntityNotFound(_0x5ee1b4,_0x27a2dc){return function(_0x54d5b9){if(!_0x54d5b9){_0x5ee1b4['sendStatus'](0x194);}return _0x54d5b9;};}function handleError(_0x4843df,_0x4f07f7){_0x4f07f7=_0x4f07f7||0x1f4;return function(_0x171584){logger[_0x4848('0x25')](_0x171584['stack']);if(_0x171584[_0x4848('0x26')]){delete _0x171584[_0x4848('0x26')];}_0x4843df[_0x4848('0x18')](_0x4f07f7)[_0x4848('0x27')](_0x171584);};}exports[_0x4848('0x28')]=function(_0x468871,_0xa56a27){var _0x5c05f4={},_0x48e486={},_0x188005={'count':0x0,'rows':[]};var _0x263bb4=_['map'](db[_0x4848('0x29')][_0x4848('0x2a')],function(_0x227d08){return{'name':_0x227d08[_0x4848('0x2b')],'type':_0x227d08[_0x4848('0x2c')][_0x4848('0x2d')]};});_0x48e486['model']=_['map'](_0x263bb4,_0x4848('0x26'));_0x48e486[_0x4848('0x2e')]=_[_0x4848('0x2f')](_0x468871[_0x4848('0x2e')]);_0x48e486[_0x4848('0x30')]=_[_0x4848('0x31')](_0x48e486['model'],_0x48e486[_0x4848('0x2e')]);_0x5c05f4[_0x4848('0x32')]=_[_0x4848('0x31')](_0x48e486['model'],qs[_0x4848('0x33')](_0x468871[_0x4848('0x2e')][_0x4848('0x33')]));_0x5c05f4[_0x4848('0x32')]=_0x5c05f4[_0x4848('0x32')][_0x4848('0x34')]?_0x5c05f4['attributes']:_0x48e486[_0x4848('0x35')];if(!_0x468871[_0x4848('0x2e')][_0x4848('0x36')](_0x4848('0x37'))){_0x5c05f4[_0x4848('0x1c')]=qs['limit'](_0x468871[_0x4848('0x2e')][_0x4848('0x1c')]);_0x5c05f4[_0x4848('0x1b')]=qs[_0x4848('0x1b')](_0x468871[_0x4848('0x2e')][_0x4848('0x1b')]);}_0x5c05f4['order']=qs[_0x4848('0x38')](_0x468871[_0x4848('0x2e')]['sort']);_0x5c05f4[_0x4848('0x39')]=qs[_0x4848('0x30')](_[_0x4848('0x3a')](_0x468871[_0x4848('0x2e')],_0x48e486['filters']),_0x263bb4);if(_0x468871[_0x4848('0x2e')][_0x4848('0x3b')]){_0x5c05f4[_0x4848('0x39')]=_[_0x4848('0x3c')](_0x5c05f4[_0x4848('0x39')],{'$or':_[_0x4848('0x3d')](_0x263bb4,function(_0x596cbe){if(_0x596cbe[_0x4848('0x2c')]!==_0x4848('0x3e')){var _0x618082={};_0x618082[_0x596cbe[_0x4848('0x26')]]={'$like':'%'+_0x468871['query'][_0x4848('0x3b')]+'%'};return _0x618082;}})});}_0x5c05f4=_[_0x4848('0x3c')]({},_0x5c05f4,_0x468871[_0x4848('0x3f')]);var _0x2cd4e2={'where':_0x5c05f4[_0x4848('0x39')]};return db['FreshdeskConfiguration']['count'](_0x2cd4e2)[_0x4848('0x24')](function(_0x25e783){_0x188005[_0x4848('0x40')]=_0x25e783;if(_0x468871['query'][_0x4848('0x41')]){_0x5c05f4[_0x4848('0x42')]=[{'all':!![]}];}return db['FreshdeskConfiguration'][_0x4848('0x43')](_0x5c05f4);})[_0x4848('0x24')](function(_0x1e9d81){_0x188005[_0x4848('0x44')]=_0x1e9d81;return _0x188005;})[_0x4848('0x24')](respondWithFilteredResult(_0xa56a27,_0x5c05f4))[_0x4848('0x45')](handleError(_0xa56a27,null));};exports[_0x4848('0x46')]=function(_0x5ea6dd,_0x39d53c){var _0x19e480={'raw':![],'where':{'id':_0x5ea6dd['params']['id']}},_0x346b35={};_0x346b35[_0x4848('0x35')]=_[_0x4848('0x2f')](db['FreshdeskConfiguration'][_0x4848('0x2a')]);_0x346b35[_0x4848('0x2e')]=_['keys'](_0x5ea6dd[_0x4848('0x2e')]);_0x346b35[_0x4848('0x30')]=_[_0x4848('0x31')](_0x346b35['model'],_0x346b35[_0x4848('0x2e')]);_0x19e480[_0x4848('0x32')]=_[_0x4848('0x31')](_0x346b35[_0x4848('0x35')],qs[_0x4848('0x33')](_0x5ea6dd['query'][_0x4848('0x33')]));_0x19e480['attributes']=_0x19e480['attributes'][_0x4848('0x34')]?_0x19e480[_0x4848('0x32')]:_0x346b35[_0x4848('0x35')];if(_0x5ea6dd['query'][_0x4848('0x41')]){_0x19e480[_0x4848('0x42')]=[{'all':!![]}];}_0x19e480=_[_0x4848('0x3c')]({},_0x19e480,_0x5ea6dd[_0x4848('0x3f')]);return db['FreshdeskConfiguration'][_0x4848('0x47')](_0x19e480)['then'](handleEntityNotFound(_0x39d53c,null))[_0x4848('0x24')](respondWithResult(_0x39d53c,null))[_0x4848('0x45')](handleError(_0x39d53c,null));};exports['create']=function(_0x3c15c5,_0x19d432){return db['FreshdeskConfiguration']['create'](_0x3c15c5[_0x4848('0x48')],{})[_0x4848('0x24')](respondWithResult(_0x19d432,0xc9))[_0x4848('0x45')](handleError(_0x19d432,null));};exports[_0x4848('0x22')]=function(_0x4e649c,_0x61e014){if(_0x4e649c[_0x4848('0x48')]['id']){delete _0x4e649c[_0x4848('0x48')]['id'];}return db[_0x4848('0x29')][_0x4848('0x47')]({'where':{'id':_0x4e649c[_0x4848('0x49')]['id']}})[_0x4848('0x24')](handleEntityNotFound(_0x61e014,null))[_0x4848('0x24')](saveUpdates(_0x4e649c['body'],null))['then'](respondWithResult(_0x61e014,null))[_0x4848('0x45')](handleError(_0x61e014,null));};exports[_0x4848('0x23')]=function(_0x25c860,_0x1bdc15){return db[_0x4848('0x29')][_0x4848('0x47')]({'where':{'id':_0x25c860['params']['id']}})[_0x4848('0x24')](handleEntityNotFound(_0x1bdc15,null))['then'](removeEntity(_0x1bdc15,null))[_0x4848('0x45')](handleError(_0x1bdc15,null));};exports['getFields']=function(_0x5e2d2c,_0x221f79,_0x20c5a7){var _0x3158ed={};var _0x5c5f8c={};var _0x382c39;var _0x1a3999;return db[_0x4848('0x29')][_0x4848('0x4a')]({'where':{'id':_0x5e2d2c[_0x4848('0x49')]['id']}})[_0x4848('0x24')](handleEntityNotFound(_0x221f79,null))[_0x4848('0x24')](function(_0x442fa7){if(_0x442fa7){_0x382c39=_0x442fa7;_0x5c5f8c[_0x4848('0x35')]=_[_0x4848('0x2f')](db[_0x4848('0x4b')]['rawAttributes']);_0x5c5f8c[_0x4848('0x2e')]=_[_0x4848('0x2f')](_0x5e2d2c[_0x4848('0x2e')]);_0x5c5f8c[_0x4848('0x30')]=_[_0x4848('0x31')](_0x5c5f8c['model'],_0x5c5f8c[_0x4848('0x2e')]);_0x3158ed[_0x4848('0x32')]=_[_0x4848('0x31')](_0x5c5f8c['model'],qs[_0x4848('0x33')](_0x5e2d2c[_0x4848('0x2e')][_0x4848('0x33')]));_0x3158ed['attributes']=_0x3158ed['attributes'][_0x4848('0x34')]?_0x3158ed['attributes']:_0x5c5f8c[_0x4848('0x35')];_0x3158ed[_0x4848('0x4c')]=qs[_0x4848('0x38')](_0x5e2d2c['query'][_0x4848('0x38')]);_0x3158ed[_0x4848('0x39')]=qs[_0x4848('0x30')](_['pick'](_0x5e2d2c[_0x4848('0x2e')],_0x5c5f8c['filters']));if(_0x5e2d2c[_0x4848('0x2e')][_0x4848('0x3b')]){_0x3158ed[_0x4848('0x39')]=_[_0x4848('0x3c')](_0x3158ed[_0x4848('0x39')],{'$or':_[_0x4848('0x3d')](_0x3158ed[_0x4848('0x32')],function(_0xca621e){var _0xc6d939={};_0xc6d939[_0xca621e]={'$like':'%'+_0x5e2d2c['query'][_0x4848('0x3b')]+'%'};return _0xc6d939;})});}_0x3158ed=_[_0x4848('0x3c')]({},_0x3158ed,_0x5e2d2c['options']);return _0x382c39[_0x4848('0x4d')](_0x3158ed);}})[_0x4848('0x24')](function(_0x4929fe){if(_0x4929fe){_0x1a3999=_0x4929fe['length'];if(!_0x5e2d2c['query'][_0x4848('0x36')](_0x4848('0x37'))){_0x3158ed[_0x4848('0x1c')]=qs[_0x4848('0x1c')](_0x5e2d2c[_0x4848('0x2e')][_0x4848('0x1c')]);_0x3158ed['offset']=qs['offset'](_0x5e2d2c[_0x4848('0x2e')][_0x4848('0x1b')]);}return _0x382c39[_0x4848('0x4d')](_0x3158ed);}})[_0x4848('0x24')](function(_0x4f2f49){if(_0x4f2f49){return _0x4f2f49?{'count':_0x1a3999,'rows':_0x4f2f49}:null;}})['then'](respondWithResult(_0x221f79,null))['catch'](handleError(_0x221f79,null));};exports[_0x4848('0x4e')]=function(_0x576f14,_0x4ba5dc,_0x395eae){var _0x419dea={};var _0x433b1b={};var _0x4a519d;var _0x5171f2;return db[_0x4848('0x29')][_0x4848('0x4a')]({'where':{'id':_0x576f14[_0x4848('0x49')]['id']}})[_0x4848('0x24')](handleEntityNotFound(_0x4ba5dc,null))[_0x4848('0x24')](function(_0x4b670e){if(_0x4b670e){_0x4a519d=_0x4b670e;_0x433b1b['model']=_[_0x4848('0x2f')](db['FreshdeskField']['rawAttributes']);_0x433b1b[_0x4848('0x2e')]=_[_0x4848('0x2f')](_0x576f14[_0x4848('0x2e')]);_0x433b1b[_0x4848('0x30')]=_[_0x4848('0x31')](_0x433b1b[_0x4848('0x35')],_0x433b1b['query']);_0x419dea['attributes']=_[_0x4848('0x31')](_0x433b1b[_0x4848('0x35')],qs[_0x4848('0x33')](_0x576f14['query'][_0x4848('0x33')]));_0x419dea[_0x4848('0x32')]=_0x419dea[_0x4848('0x32')][_0x4848('0x34')]?_0x419dea[_0x4848('0x32')]:_0x433b1b['model'];_0x419dea[_0x4848('0x4c')]=qs[_0x4848('0x38')](_0x576f14['query']['sort']);_0x419dea[_0x4848('0x39')]=qs[_0x4848('0x30')](_[_0x4848('0x3a')](_0x576f14[_0x4848('0x2e')],_0x433b1b[_0x4848('0x30')]));if(_0x576f14[_0x4848('0x2e')][_0x4848('0x3b')]){_0x419dea[_0x4848('0x39')]=_[_0x4848('0x3c')](_0x419dea[_0x4848('0x39')],{'$or':_['map'](_0x419dea[_0x4848('0x32')],function(_0x4b148f){var _0x4551a2={};_0x4551a2[_0x4b148f]={'$like':'%'+_0x576f14['query'][_0x4848('0x3b')]+'%'};return _0x4551a2;})});}_0x419dea=_[_0x4848('0x3c')]({},_0x419dea,_0x576f14[_0x4848('0x3f')]);return _0x4a519d[_0x4848('0x4e')](_0x419dea);}})['then'](function(_0x4b7d8f){if(_0x4b7d8f){_0x5171f2=_0x4b7d8f[_0x4848('0x34')];if(!_0x576f14['query'][_0x4848('0x36')](_0x4848('0x37'))){_0x419dea[_0x4848('0x1c')]=qs[_0x4848('0x1c')](_0x576f14[_0x4848('0x2e')][_0x4848('0x1c')]);_0x419dea['offset']=qs[_0x4848('0x1b')](_0x576f14[_0x4848('0x2e')][_0x4848('0x1b')]);}return _0x4a519d[_0x4848('0x4e')](_0x419dea);}})['then'](function(_0x1d11de){if(_0x1d11de){return _0x1d11de?{'count':_0x5171f2,'rows':_0x1d11de}:null;}})[_0x4848('0x24')](respondWithResult(_0x4ba5dc,null))[_0x4848('0x45')](handleError(_0x4ba5dc,null));};exports[_0x4848('0x4f')]=function(_0xf0e158,_0x1042b3,_0x235ea3){var _0xc7df61={};var _0x58b40a={};var _0x227676;var _0x15a589;return db[_0x4848('0x29')][_0x4848('0x4a')]({'where':{'id':_0xf0e158[_0x4848('0x49')]['id']}})['then'](handleEntityNotFound(_0x1042b3,null))[_0x4848('0x24')](function(_0x271455){if(_0x271455){_0x227676=_0x271455;_0x58b40a['model']=_[_0x4848('0x2f')](db[_0x4848('0x4b')][_0x4848('0x2a')]);_0x58b40a[_0x4848('0x2e')]=_[_0x4848('0x2f')](_0xf0e158[_0x4848('0x2e')]);_0x58b40a[_0x4848('0x30')]=_['intersection'](_0x58b40a[_0x4848('0x35')],_0x58b40a[_0x4848('0x2e')]);_0xc7df61[_0x4848('0x32')]=_[_0x4848('0x31')](_0x58b40a[_0x4848('0x35')],qs['fields'](_0xf0e158['query'][_0x4848('0x33')]));_0xc7df61[_0x4848('0x32')]=_0xc7df61[_0x4848('0x32')][_0x4848('0x34')]?_0xc7df61[_0x4848('0x32')]:_0x58b40a['model'];_0xc7df61['order']=qs['sort'](_0xf0e158[_0x4848('0x2e')][_0x4848('0x38')]);_0xc7df61[_0x4848('0x39')]=qs[_0x4848('0x30')](_[_0x4848('0x3a')](_0xf0e158[_0x4848('0x2e')],_0x58b40a[_0x4848('0x30')]));if(_0xf0e158[_0x4848('0x2e')][_0x4848('0x3b')]){_0xc7df61[_0x4848('0x39')]=_[_0x4848('0x3c')](_0xc7df61[_0x4848('0x39')],{'$or':_['map'](_0xc7df61[_0x4848('0x32')],function(_0x56ed09){var _0x41e97b={};_0x41e97b[_0x56ed09]={'$like':'%'+_0xf0e158['query'][_0x4848('0x3b')]+'%'};return _0x41e97b;})});}_0xc7df61=_[_0x4848('0x3c')]({},_0xc7df61,_0xf0e158['options']);return _0x227676[_0x4848('0x4f')](_0xc7df61);}})['then'](function(_0x40c53c){if(_0x40c53c){_0x15a589=_0x40c53c[_0x4848('0x34')];if(!_0xf0e158['query']['hasOwnProperty']('nolimit')){_0xc7df61['limit']=qs['limit'](_0xf0e158[_0x4848('0x2e')][_0x4848('0x1c')]);_0xc7df61[_0x4848('0x1b')]=qs['offset'](_0xf0e158['query'][_0x4848('0x1b')]);}return _0x227676['getDescriptions'](_0xc7df61);}})[_0x4848('0x24')](function(_0x3500a2){if(_0x3500a2){return _0x3500a2?{'count':_0x15a589,'rows':_0x3500a2}:null;}})[_0x4848('0x24')](respondWithResult(_0x1042b3,null))[_0x4848('0x45')](handleError(_0x1042b3,null));};exports['getTags']=function(_0x5ea685,_0x755f5c,_0x595cb6){var _0x45652f={};var _0x587742={};var _0x1efd8a;var _0x1b6f33;return db['FreshdeskConfiguration'][_0x4848('0x4a')]({'where':{'id':_0x5ea685[_0x4848('0x49')]['id']}})[_0x4848('0x24')](handleEntityNotFound(_0x755f5c,null))[_0x4848('0x24')](function(_0xb4f1a1){if(_0xb4f1a1){_0x1efd8a=_0xb4f1a1;_0x587742['model']=_[_0x4848('0x2f')](db[_0x4848('0x50')]['rawAttributes']);_0x587742[_0x4848('0x2e')]=_['keys'](_0x5ea685[_0x4848('0x2e')]);_0x587742['filters']=_[_0x4848('0x31')](_0x587742[_0x4848('0x35')],_0x587742['query']);_0x45652f[_0x4848('0x32')]=_[_0x4848('0x31')](_0x587742['model'],qs['fields'](_0x5ea685[_0x4848('0x2e')][_0x4848('0x33')]));_0x45652f['attributes']=_0x45652f[_0x4848('0x32')]['length']?_0x45652f[_0x4848('0x32')]:_0x587742[_0x4848('0x35')];_0x45652f[_0x4848('0x4c')]=qs['sort'](_0x5ea685[_0x4848('0x2e')]['sort']);_0x45652f[_0x4848('0x39')]=qs[_0x4848('0x30')](_['pick'](_0x5ea685[_0x4848('0x2e')],_0x587742[_0x4848('0x30')]));if(_0x5ea685['query'][_0x4848('0x3b')]){_0x45652f[_0x4848('0x39')]=_[_0x4848('0x3c')](_0x45652f[_0x4848('0x39')],{'$or':_['map'](_0x45652f['attributes'],function(_0x551a7d){var _0x3270e2={};_0x3270e2[_0x551a7d]={'$like':'%'+_0x5ea685[_0x4848('0x2e')][_0x4848('0x3b')]+'%'};return _0x3270e2;})});}_0x45652f=_['merge']({},_0x45652f,_0x5ea685[_0x4848('0x3f')]);return _0x1efd8a['getTags'](_0x45652f);}})[_0x4848('0x24')](function(_0x17bf58){if(_0x17bf58){_0x1b6f33=_0x17bf58[_0x4848('0x34')];if(!_0x5ea685[_0x4848('0x2e')]['hasOwnProperty'](_0x4848('0x37'))){_0x45652f[_0x4848('0x1c')]=qs['limit'](_0x5ea685[_0x4848('0x2e')][_0x4848('0x1c')]);_0x45652f['offset']=qs[_0x4848('0x1b')](_0x5ea685[_0x4848('0x2e')]['offset']);}return _0x1efd8a['getTags'](_0x45652f);}})[_0x4848('0x24')](function(_0x179e23){if(_0x179e23){return _0x179e23?{'count':_0x1b6f33,'rows':_0x179e23}:null;}})[_0x4848('0x24')](respondWithResult(_0x755f5c,null))[_0x4848('0x45')](handleError(_0x755f5c,null));};exports['setTags']=function(_0x287ef8,_0x2e8279,_0x2bc1f4){if(_0x287ef8['body']['id']){delete _0x287ef8[_0x4848('0x48')]['id'];}return db[_0x4848('0x29')]['findOne']({'where':{'id':_0x287ef8['params']['id']}})[_0x4848('0x24')](handleEntityNotFound(_0x2e8279,null))[_0x4848('0x24')](function(_0x1c865f){if(_0x1c865f){return _0x1c865f[_0x4848('0x51')](_0x287ef8[_0x4848('0x48')]['ids']||[]);}return null;})[_0x4848('0x24')](respondWithResult(_0x2e8279,null))['catch'](handleError(_0x2e8279,null));};
\ No newline at end of file
+var _0xb798=['destroy','then','sendStatus','error','stack','name','send','index','FreshdeskConfiguration','type','key','query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','map','VIRTUAL','filter','includeAll','include','findAll','catch','show','params','keys','rawAttributes','merge','options','find','create','body','update','getFields','order','getSubjects','findOne','FreshdeskField','getDescriptions','Tag','getTags','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','undefined','count','offset','limit','Content-Range','apply'];(function(_0x5e23a3,_0x56700a){var _0x709017=function(_0x3be0d9){while(--_0x3be0d9){_0x5e23a3['push'](_0x5e23a3['shift']());}};_0x709017(++_0x56700a);}(_0xb798,0x12e));var _0x8b79=function(_0x3f5dc6,_0x315503){_0x3f5dc6=_0x3f5dc6-0x0;var _0x22d974=_0xb798[_0x3f5dc6];return _0x22d974;};'use strict';var emlformat=require(_0x8b79('0x0'));var rimraf=require(_0x8b79('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8b79('0x2'));var rp=require(_0x8b79('0x3'));var moment=require(_0x8b79('0x4'));var BPromise=require(_0x8b79('0x5'));var Mustache=require(_0x8b79('0x6'));var util=require(_0x8b79('0x7'));var path=require('path');var sox=require(_0x8b79('0x8'));var csv=require(_0x8b79('0x9'));var ejs=require(_0x8b79('0xa'));var fs=require('fs');var fs_extra=require(_0x8b79('0xb'));var _=require(_0x8b79('0xc'));var squel=require(_0x8b79('0xd'));var crypto=require(_0x8b79('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8b79('0x9'));var querystring=require(_0x8b79('0xf'));var Papa=require(_0x8b79('0x10'));var Redis=require(_0x8b79('0x11'));var authService=require(_0x8b79('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8b79('0x13'));var logger=require(_0x8b79('0x14'))(_0x8b79('0x15'));var utils=require(_0x8b79('0x16'));var config=require(_0x8b79('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x8b79('0x18'))['db'];function respondWithStatusCode(_0x2fb923,_0x7d45d5){_0x7d45d5=_0x7d45d5||0xcc;return function(_0x499c55){if(_0x499c55){return _0x2fb923['sendStatus'](_0x7d45d5);}return _0x2fb923[_0x8b79('0x19')](_0x7d45d5)[_0x8b79('0x1a')]();};}function respondWithResult(_0x395d36,_0xb2f197){_0xb2f197=_0xb2f197||0xc8;return function(_0x3d2646){if(_0x3d2646){return _0x395d36[_0x8b79('0x19')](_0xb2f197)[_0x8b79('0x1b')](_0x3d2646);}};}function respondWithFilteredResult(_0x4ddca4,_0x3d7194){return function(_0x4c0884){if(_0x4c0884){var _0x316022=typeof _0x3d7194['offset']===_0x8b79('0x1c')&&typeof _0x3d7194['limit']===_0x8b79('0x1c');var _0x4110e0=_0x4c0884[_0x8b79('0x1d')];var _0x3547aa=_0x316022?0x0:_0x3d7194[_0x8b79('0x1e')];var _0x4a4fe5=_0x316022?_0x4c0884[_0x8b79('0x1d')]:_0x3d7194[_0x8b79('0x1e')]+_0x3d7194[_0x8b79('0x1f')];var _0x4ce63d;if(_0x4a4fe5>=_0x4110e0){_0x4a4fe5=_0x4110e0;_0x4ce63d=0xc8;}else{_0x4ce63d=0xce;}_0x4ddca4[_0x8b79('0x19')](_0x4ce63d);return _0x4ddca4['set'](_0x8b79('0x20'),_0x3547aa+'-'+_0x4a4fe5+'/'+_0x4110e0)[_0x8b79('0x1b')](_0x4c0884);}return null;};}function patchUpdates(_0x3dc631){return function(_0x105a83){try{jsonpatch[_0x8b79('0x21')](_0x105a83,_0x3dc631,!![]);}catch(_0x5979ed){return BPromise['reject'](_0x5979ed);}return _0x105a83['save']();};}function saveUpdates(_0x280fb4,_0x227cf0){return function(_0x386416){if(_0x386416){return _0x386416['update'](_0x280fb4)['then'](function(_0x29796a){return _0x29796a;});}return null;};}function removeEntity(_0x4d28ac,_0x5cd10e){return function(_0x3b4359){if(_0x3b4359){return _0x3b4359[_0x8b79('0x22')]()[_0x8b79('0x23')](function(){_0x4d28ac[_0x8b79('0x19')](0xcc)[_0x8b79('0x1a')]();});}};}function handleEntityNotFound(_0x12fad7,_0x55a1b3){return function(_0x31d7e0){if(!_0x31d7e0){_0x12fad7[_0x8b79('0x24')](0x194);}return _0x31d7e0;};}function handleError(_0x2c6a5f,_0xb9e42f){_0xb9e42f=_0xb9e42f||0x1f4;return function(_0x1f46f9){logger[_0x8b79('0x25')](_0x1f46f9[_0x8b79('0x26')]);if(_0x1f46f9[_0x8b79('0x27')]){delete _0x1f46f9[_0x8b79('0x27')];}_0x2c6a5f[_0x8b79('0x19')](_0xb9e42f)[_0x8b79('0x28')](_0x1f46f9);};}exports[_0x8b79('0x29')]=function(_0x4d734d,_0x1443d8){var _0x2b2fd7={},_0x3b1a9c={},_0xd780a3={'count':0x0,'rows':[]};var _0x5aa855=_['map'](db[_0x8b79('0x2a')]['rawAttributes'],function(_0x1bb063){return{'name':_0x1bb063['fieldName'],'type':_0x1bb063[_0x8b79('0x2b')][_0x8b79('0x2c')]};});_0x3b1a9c['model']=_['map'](_0x5aa855,'name');_0x3b1a9c[_0x8b79('0x2d')]=_['keys'](_0x4d734d[_0x8b79('0x2d')]);_0x3b1a9c['filters']=_[_0x8b79('0x2e')](_0x3b1a9c['model'],_0x3b1a9c['query']);_0x2b2fd7[_0x8b79('0x2f')]=_[_0x8b79('0x2e')](_0x3b1a9c[_0x8b79('0x30')],qs['fields'](_0x4d734d[_0x8b79('0x2d')][_0x8b79('0x31')]));_0x2b2fd7['attributes']=_0x2b2fd7[_0x8b79('0x2f')][_0x8b79('0x32')]?_0x2b2fd7[_0x8b79('0x2f')]:_0x3b1a9c[_0x8b79('0x30')];if(!_0x4d734d[_0x8b79('0x2d')][_0x8b79('0x33')](_0x8b79('0x34'))){_0x2b2fd7[_0x8b79('0x1f')]=qs[_0x8b79('0x1f')](_0x4d734d[_0x8b79('0x2d')][_0x8b79('0x1f')]);_0x2b2fd7['offset']=qs['offset'](_0x4d734d['query'][_0x8b79('0x1e')]);}_0x2b2fd7['order']=qs[_0x8b79('0x35')](_0x4d734d[_0x8b79('0x2d')][_0x8b79('0x35')]);_0x2b2fd7[_0x8b79('0x36')]=qs[_0x8b79('0x37')](_[_0x8b79('0x38')](_0x4d734d['query'],_0x3b1a9c['filters']),_0x5aa855);if(_0x4d734d[_0x8b79('0x2d')]['filter']){_0x2b2fd7['where']=_['merge'](_0x2b2fd7[_0x8b79('0x36')],{'$or':_[_0x8b79('0x39')](_0x5aa855,function(_0x45a11e){if(_0x45a11e['type']!==_0x8b79('0x3a')){var _0x3a5cc0={};_0x3a5cc0[_0x45a11e[_0x8b79('0x27')]]={'$like':'%'+_0x4d734d[_0x8b79('0x2d')][_0x8b79('0x3b')]+'%'};return _0x3a5cc0;}})});}_0x2b2fd7=_['merge']({},_0x2b2fd7,_0x4d734d['options']);var _0x2bde3b={'where':_0x2b2fd7[_0x8b79('0x36')]};return db[_0x8b79('0x2a')][_0x8b79('0x1d')](_0x2bde3b)[_0x8b79('0x23')](function(_0x2de94c){_0xd780a3['count']=_0x2de94c;if(_0x4d734d['query'][_0x8b79('0x3c')]){_0x2b2fd7[_0x8b79('0x3d')]=[{'all':!![]}];}return db[_0x8b79('0x2a')][_0x8b79('0x3e')](_0x2b2fd7);})[_0x8b79('0x23')](function(_0x2c0b30){_0xd780a3['rows']=_0x2c0b30;return _0xd780a3;})['then'](respondWithFilteredResult(_0x1443d8,_0x2b2fd7))[_0x8b79('0x3f')](handleError(_0x1443d8,null));};exports[_0x8b79('0x40')]=function(_0x16881b,_0x108e60){var _0x124e94={'raw':![],'where':{'id':_0x16881b[_0x8b79('0x41')]['id']}},_0x1c59be={};_0x1c59be[_0x8b79('0x30')]=_[_0x8b79('0x42')](db[_0x8b79('0x2a')][_0x8b79('0x43')]);_0x1c59be['query']=_[_0x8b79('0x42')](_0x16881b[_0x8b79('0x2d')]);_0x1c59be[_0x8b79('0x37')]=_[_0x8b79('0x2e')](_0x1c59be[_0x8b79('0x30')],_0x1c59be[_0x8b79('0x2d')]);_0x124e94['attributes']=_['intersection'](_0x1c59be[_0x8b79('0x30')],qs['fields'](_0x16881b[_0x8b79('0x2d')][_0x8b79('0x31')]));_0x124e94[_0x8b79('0x2f')]=_0x124e94[_0x8b79('0x2f')]['length']?_0x124e94[_0x8b79('0x2f')]:_0x1c59be[_0x8b79('0x30')];if(_0x16881b[_0x8b79('0x2d')][_0x8b79('0x3c')]){_0x124e94[_0x8b79('0x3d')]=[{'all':!![]}];}_0x124e94=_[_0x8b79('0x44')]({},_0x124e94,_0x16881b[_0x8b79('0x45')]);return db[_0x8b79('0x2a')][_0x8b79('0x46')](_0x124e94)['then'](handleEntityNotFound(_0x108e60,null))[_0x8b79('0x23')](respondWithResult(_0x108e60,null))[_0x8b79('0x3f')](handleError(_0x108e60,null));};exports[_0x8b79('0x47')]=function(_0x24cc13,_0x254b43){return db['FreshdeskConfiguration'][_0x8b79('0x47')](_0x24cc13[_0x8b79('0x48')],{})[_0x8b79('0x23')](respondWithResult(_0x254b43,0xc9))[_0x8b79('0x3f')](handleError(_0x254b43,null));};exports[_0x8b79('0x49')]=function(_0x4541c2,_0x477c3e){if(_0x4541c2[_0x8b79('0x48')]['id']){delete _0x4541c2[_0x8b79('0x48')]['id'];}return db[_0x8b79('0x2a')]['find']({'where':{'id':_0x4541c2[_0x8b79('0x41')]['id']}})[_0x8b79('0x23')](handleEntityNotFound(_0x477c3e,null))[_0x8b79('0x23')](saveUpdates(_0x4541c2[_0x8b79('0x48')],null))[_0x8b79('0x23')](respondWithResult(_0x477c3e,null))[_0x8b79('0x3f')](handleError(_0x477c3e,null));};exports[_0x8b79('0x22')]=function(_0xeebb5,_0x4b51c0){return db['FreshdeskConfiguration'][_0x8b79('0x46')]({'where':{'id':_0xeebb5[_0x8b79('0x41')]['id']}})[_0x8b79('0x23')](handleEntityNotFound(_0x4b51c0,null))[_0x8b79('0x23')](removeEntity(_0x4b51c0,null))['catch'](handleError(_0x4b51c0,null));};exports[_0x8b79('0x4a')]=function(_0x4d2e01,_0x266c26,_0x3ca484){var _0x49336a={};var _0x38cb13={};var _0x2dbdba;var _0x19e8f3;return db[_0x8b79('0x2a')]['findOne']({'where':{'id':_0x4d2e01[_0x8b79('0x41')]['id']}})['then'](handleEntityNotFound(_0x266c26,null))[_0x8b79('0x23')](function(_0x14d2fd){if(_0x14d2fd){_0x2dbdba=_0x14d2fd;_0x38cb13[_0x8b79('0x30')]=_[_0x8b79('0x42')](db['FreshdeskField'][_0x8b79('0x43')]);_0x38cb13[_0x8b79('0x2d')]=_[_0x8b79('0x42')](_0x4d2e01[_0x8b79('0x2d')]);_0x38cb13[_0x8b79('0x37')]=_[_0x8b79('0x2e')](_0x38cb13[_0x8b79('0x30')],_0x38cb13['query']);_0x49336a['attributes']=_['intersection'](_0x38cb13['model'],qs[_0x8b79('0x31')](_0x4d2e01[_0x8b79('0x2d')][_0x8b79('0x31')]));_0x49336a[_0x8b79('0x2f')]=_0x49336a['attributes'][_0x8b79('0x32')]?_0x49336a[_0x8b79('0x2f')]:_0x38cb13[_0x8b79('0x30')];_0x49336a[_0x8b79('0x4b')]=qs[_0x8b79('0x35')](_0x4d2e01[_0x8b79('0x2d')]['sort']);_0x49336a[_0x8b79('0x36')]=qs[_0x8b79('0x37')](_['pick'](_0x4d2e01[_0x8b79('0x2d')],_0x38cb13['filters']));if(_0x4d2e01[_0x8b79('0x2d')][_0x8b79('0x3b')]){_0x49336a[_0x8b79('0x36')]=_[_0x8b79('0x44')](_0x49336a['where'],{'$or':_[_0x8b79('0x39')](_0x49336a[_0x8b79('0x2f')],function(_0x162d89){var _0x21e566={};_0x21e566[_0x162d89]={'$like':'%'+_0x4d2e01[_0x8b79('0x2d')]['filter']+'%'};return _0x21e566;})});}_0x49336a=_[_0x8b79('0x44')]({},_0x49336a,_0x4d2e01[_0x8b79('0x45')]);return _0x2dbdba[_0x8b79('0x4a')](_0x49336a);}})['then'](function(_0x157cf6){if(_0x157cf6){_0x19e8f3=_0x157cf6[_0x8b79('0x32')];if(!_0x4d2e01[_0x8b79('0x2d')][_0x8b79('0x33')](_0x8b79('0x34'))){_0x49336a[_0x8b79('0x1f')]=qs[_0x8b79('0x1f')](_0x4d2e01[_0x8b79('0x2d')]['limit']);_0x49336a['offset']=qs[_0x8b79('0x1e')](_0x4d2e01[_0x8b79('0x2d')][_0x8b79('0x1e')]);}return _0x2dbdba[_0x8b79('0x4a')](_0x49336a);}})[_0x8b79('0x23')](function(_0x4c348f){if(_0x4c348f){return _0x4c348f?{'count':_0x19e8f3,'rows':_0x4c348f}:null;}})[_0x8b79('0x23')](respondWithResult(_0x266c26,null))['catch'](handleError(_0x266c26,null));};exports[_0x8b79('0x4c')]=function(_0x200bee,_0x442c0b,_0x22db59){var _0xcfe26d={};var _0x3913f5={};var _0x15b1ee;var _0xe805c;return db[_0x8b79('0x2a')][_0x8b79('0x4d')]({'where':{'id':_0x200bee['params']['id']}})[_0x8b79('0x23')](handleEntityNotFound(_0x442c0b,null))[_0x8b79('0x23')](function(_0x3ec76b){if(_0x3ec76b){_0x15b1ee=_0x3ec76b;_0x3913f5[_0x8b79('0x30')]=_[_0x8b79('0x42')](db[_0x8b79('0x4e')][_0x8b79('0x43')]);_0x3913f5[_0x8b79('0x2d')]=_[_0x8b79('0x42')](_0x200bee[_0x8b79('0x2d')]);_0x3913f5[_0x8b79('0x37')]=_[_0x8b79('0x2e')](_0x3913f5[_0x8b79('0x30')],_0x3913f5[_0x8b79('0x2d')]);_0xcfe26d[_0x8b79('0x2f')]=_[_0x8b79('0x2e')](_0x3913f5['model'],qs['fields'](_0x200bee[_0x8b79('0x2d')][_0x8b79('0x31')]));_0xcfe26d['attributes']=_0xcfe26d[_0x8b79('0x2f')]['length']?_0xcfe26d[_0x8b79('0x2f')]:_0x3913f5[_0x8b79('0x30')];_0xcfe26d[_0x8b79('0x4b')]=qs['sort'](_0x200bee[_0x8b79('0x2d')][_0x8b79('0x35')]);_0xcfe26d[_0x8b79('0x36')]=qs[_0x8b79('0x37')](_['pick'](_0x200bee[_0x8b79('0x2d')],_0x3913f5[_0x8b79('0x37')]));if(_0x200bee['query']['filter']){_0xcfe26d['where']=_['merge'](_0xcfe26d[_0x8b79('0x36')],{'$or':_['map'](_0xcfe26d[_0x8b79('0x2f')],function(_0x50c132){var _0x4f3e38={};_0x4f3e38[_0x50c132]={'$like':'%'+_0x200bee[_0x8b79('0x2d')][_0x8b79('0x3b')]+'%'};return _0x4f3e38;})});}_0xcfe26d=_[_0x8b79('0x44')]({},_0xcfe26d,_0x200bee[_0x8b79('0x45')]);return _0x15b1ee[_0x8b79('0x4c')](_0xcfe26d);}})[_0x8b79('0x23')](function(_0x6f3af9){if(_0x6f3af9){_0xe805c=_0x6f3af9['length'];if(!_0x200bee[_0x8b79('0x2d')]['hasOwnProperty'](_0x8b79('0x34'))){_0xcfe26d[_0x8b79('0x1f')]=qs[_0x8b79('0x1f')](_0x200bee[_0x8b79('0x2d')][_0x8b79('0x1f')]);_0xcfe26d[_0x8b79('0x1e')]=qs[_0x8b79('0x1e')](_0x200bee['query'][_0x8b79('0x1e')]);}return _0x15b1ee['getSubjects'](_0xcfe26d);}})['then'](function(_0x40cba6){if(_0x40cba6){return _0x40cba6?{'count':_0xe805c,'rows':_0x40cba6}:null;}})['then'](respondWithResult(_0x442c0b,null))[_0x8b79('0x3f')](handleError(_0x442c0b,null));};exports['getDescriptions']=function(_0xe318e4,_0x30aead,_0x1bf083){var _0x14b578={};var _0x49686a={};var _0x4df96a;var _0x47aa13;return db[_0x8b79('0x2a')][_0x8b79('0x4d')]({'where':{'id':_0xe318e4['params']['id']}})[_0x8b79('0x23')](handleEntityNotFound(_0x30aead,null))[_0x8b79('0x23')](function(_0x2e0b5b){if(_0x2e0b5b){_0x4df96a=_0x2e0b5b;_0x49686a['model']=_['keys'](db[_0x8b79('0x4e')][_0x8b79('0x43')]);_0x49686a['query']=_['keys'](_0xe318e4[_0x8b79('0x2d')]);_0x49686a[_0x8b79('0x37')]=_[_0x8b79('0x2e')](_0x49686a['model'],_0x49686a['query']);_0x14b578[_0x8b79('0x2f')]=_[_0x8b79('0x2e')](_0x49686a[_0x8b79('0x30')],qs['fields'](_0xe318e4['query'][_0x8b79('0x31')]));_0x14b578[_0x8b79('0x2f')]=_0x14b578[_0x8b79('0x2f')]['length']?_0x14b578['attributes']:_0x49686a[_0x8b79('0x30')];_0x14b578[_0x8b79('0x4b')]=qs[_0x8b79('0x35')](_0xe318e4[_0x8b79('0x2d')][_0x8b79('0x35')]);_0x14b578[_0x8b79('0x36')]=qs[_0x8b79('0x37')](_[_0x8b79('0x38')](_0xe318e4['query'],_0x49686a['filters']));if(_0xe318e4[_0x8b79('0x2d')][_0x8b79('0x3b')]){_0x14b578[_0x8b79('0x36')]=_[_0x8b79('0x44')](_0x14b578[_0x8b79('0x36')],{'$or':_['map'](_0x14b578[_0x8b79('0x2f')],function(_0xfaceb9){var _0x27dbc8={};_0x27dbc8[_0xfaceb9]={'$like':'%'+_0xe318e4[_0x8b79('0x2d')]['filter']+'%'};return _0x27dbc8;})});}_0x14b578=_[_0x8b79('0x44')]({},_0x14b578,_0xe318e4[_0x8b79('0x45')]);return _0x4df96a[_0x8b79('0x4f')](_0x14b578);}})[_0x8b79('0x23')](function(_0xf1fbe7){if(_0xf1fbe7){_0x47aa13=_0xf1fbe7[_0x8b79('0x32')];if(!_0xe318e4[_0x8b79('0x2d')][_0x8b79('0x33')](_0x8b79('0x34'))){_0x14b578[_0x8b79('0x1f')]=qs[_0x8b79('0x1f')](_0xe318e4['query']['limit']);_0x14b578['offset']=qs[_0x8b79('0x1e')](_0xe318e4[_0x8b79('0x2d')][_0x8b79('0x1e')]);}return _0x4df96a[_0x8b79('0x4f')](_0x14b578);}})[_0x8b79('0x23')](function(_0x41c048){if(_0x41c048){return _0x41c048?{'count':_0x47aa13,'rows':_0x41c048}:null;}})['then'](respondWithResult(_0x30aead,null))[_0x8b79('0x3f')](handleError(_0x30aead,null));};exports['getTags']=function(_0x2d915f,_0x110777,_0x1d064d){var _0x82ba8d={};var _0x4ea349={};var _0x261dab;var _0x24c5d1;return db['FreshdeskConfiguration'][_0x8b79('0x4d')]({'where':{'id':_0x2d915f[_0x8b79('0x41')]['id']}})[_0x8b79('0x23')](handleEntityNotFound(_0x110777,null))[_0x8b79('0x23')](function(_0x58e740){if(_0x58e740){_0x261dab=_0x58e740;_0x4ea349['model']=_['keys'](db[_0x8b79('0x50')][_0x8b79('0x43')]);_0x4ea349['query']=_[_0x8b79('0x42')](_0x2d915f['query']);_0x4ea349[_0x8b79('0x37')]=_[_0x8b79('0x2e')](_0x4ea349[_0x8b79('0x30')],_0x4ea349['query']);_0x82ba8d[_0x8b79('0x2f')]=_['intersection'](_0x4ea349[_0x8b79('0x30')],qs[_0x8b79('0x31')](_0x2d915f[_0x8b79('0x2d')][_0x8b79('0x31')]));_0x82ba8d[_0x8b79('0x2f')]=_0x82ba8d[_0x8b79('0x2f')][_0x8b79('0x32')]?_0x82ba8d['attributes']:_0x4ea349['model'];_0x82ba8d[_0x8b79('0x4b')]=qs[_0x8b79('0x35')](_0x2d915f['query']['sort']);_0x82ba8d[_0x8b79('0x36')]=qs[_0x8b79('0x37')](_[_0x8b79('0x38')](_0x2d915f[_0x8b79('0x2d')],_0x4ea349[_0x8b79('0x37')]));if(_0x2d915f[_0x8b79('0x2d')][_0x8b79('0x3b')]){_0x82ba8d['where']=_[_0x8b79('0x44')](_0x82ba8d[_0x8b79('0x36')],{'$or':_[_0x8b79('0x39')](_0x82ba8d['attributes'],function(_0x57dfae){var _0x28b01c={};_0x28b01c[_0x57dfae]={'$like':'%'+_0x2d915f[_0x8b79('0x2d')][_0x8b79('0x3b')]+'%'};return _0x28b01c;})});}_0x82ba8d=_['merge']({},_0x82ba8d,_0x2d915f['options']);return _0x261dab[_0x8b79('0x51')](_0x82ba8d);}})[_0x8b79('0x23')](function(_0x3718b1){if(_0x3718b1){_0x24c5d1=_0x3718b1[_0x8b79('0x32')];if(!_0x2d915f['query'][_0x8b79('0x33')](_0x8b79('0x34'))){_0x82ba8d[_0x8b79('0x1f')]=qs['limit'](_0x2d915f[_0x8b79('0x2d')][_0x8b79('0x1f')]);_0x82ba8d[_0x8b79('0x1e')]=qs['offset'](_0x2d915f['query']['offset']);}return _0x261dab[_0x8b79('0x51')](_0x82ba8d);}})[_0x8b79('0x23')](function(_0x488663){if(_0x488663){return _0x488663?{'count':_0x24c5d1,'rows':_0x488663}:null;}})[_0x8b79('0x23')](respondWithResult(_0x110777,null))[_0x8b79('0x3f')](handleError(_0x110777,null));};exports['setTags']=function(_0x5b3b43,_0x597fba,_0x2c7149){if(_0x5b3b43['body']['id']){delete _0x5b3b43['body']['id'];}return db[_0x8b79('0x2a')][_0x8b79('0x4d')]({'where':{'id':_0x5b3b43[_0x8b79('0x41')]['id']}})[_0x8b79('0x23')](handleEntityNotFound(_0x597fba,null))[_0x8b79('0x23')](function(_0x45c675){if(_0x45c675){return _0x45c675[_0x8b79('0x52')](_0x5b3b43[_0x8b79('0x48')][_0x8b79('0x53')]||[]);}return null;})[_0x8b79('0x23')](respondWithResult(_0x597fba,null))['catch'](handleError(_0x597fba,null));};
\ No newline at end of file
index 89afec9..d3e63b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb64=['bluebird','request-promise','path','rimraf','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','../../config/logger','moment'];(function(_0x30ae81,_0x1e8be1){var _0x34b4f1=function(_0x567fa4){while(--_0x567fa4){_0x30ae81['push'](_0x30ae81['shift']());}};_0x34b4f1(++_0x1e8be1);}(_0xeb64,0x1ea));var _0x4eb6=function(_0x401a6d,_0x4cd80a){_0x401a6d=_0x401a6d-0x0;var _0x7b1b5f=_0xeb64[_0x401a6d];return _0x7b1b5f;};'use strict';var _=require(_0x4eb6('0x0'));var util=require(_0x4eb6('0x1'));var logger=require(_0x4eb6('0x2'))('api');var moment=require(_0x4eb6('0x3'));var BPromise=require(_0x4eb6('0x4'));var rp=require(_0x4eb6('0x5'));var fs=require('fs');var path=require(_0x4eb6('0x6'));var rimraf=require(_0x4eb6('0x7'));var config=require('../../config/environment');var attributes=require(_0x4eb6('0x8'));module[_0x4eb6('0x9')]=function(_0x92db67,_0x5eee55){return _0x92db67[_0x4eb6('0xa')](_0x4eb6('0xb'),attributes,{'tableName':_0x4eb6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcbd3=['path','../../config/environment','./intFreshdeskConfiguration.attributes','define','FreshdeskConfiguration','lodash','../../config/logger','moment','request-promise'];(function(_0x42eed4,_0xb764dc){var _0x80bb08=function(_0x438a83){while(--_0x438a83){_0x42eed4['push'](_0x42eed4['shift']());}};_0x80bb08(++_0xb764dc);}(_0xcbd3,0x1eb));var _0x3cbd=function(_0x31f86b,_0x264109){_0x31f86b=_0x31f86b-0x0;var _0x2b82b6=_0xcbd3[_0x31f86b];return _0x2b82b6;};'use strict';var _=require(_0x3cbd('0x0'));var util=require('util');var logger=require(_0x3cbd('0x1'))('api');var moment=require(_0x3cbd('0x2'));var BPromise=require('bluebird');var rp=require(_0x3cbd('0x3'));var fs=require('fs');var path=require(_0x3cbd('0x4'));var rimraf=require('rimraf');var config=require(_0x3cbd('0x5'));var attributes=require(_0x3cbd('0x6'));module['exports']=function(_0xd22b8b,_0x58bd92){return _0xd22b8b[_0x3cbd('0x7')](_0x3cbd('0x8'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 41417b2..05e2020 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32ce=['../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x32ce,0xdf));var _0xe32c=function(_0x4ddf68,_0x34d642){_0x4ddf68=_0x4ddf68-0x0;var _0x2819b5=_0x32ce[_0x4ddf68];return _0x2819b5;};'use strict';var _=require(_0xe32c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe32c('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe32c('0x2'))['db'];var utils=require(_0xe32c('0x3'));var logger=require(_0xe32c('0x4'))('rpc');var config=require(_0xe32c('0x5'));var jayson=require(_0xe32c('0x6'));var client=jayson[_0xe32c('0x7')][_0xe32c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1c30f3,_0x2b2edf,_0x35f90f){return new BPromise(function(_0x56a2f1,_0x3665bf){return client[_0xe32c('0x9')](_0x1c30f3,_0x35f90f)[_0xe32c('0xa')](function(_0x2d0669){logger[_0xe32c('0xb')](_0xe32c('0xc'),_0x2b2edf,_0xe32c('0xd'));logger[_0xe32c('0xe')](_0xe32c('0xf'),_0x2b2edf,_0xe32c('0xd'),JSON['stringify'](_0x2d0669));if(_0x2d0669['error']){if(_0x2d0669[_0xe32c('0x10')]['code']===0x1f4){logger[_0xe32c('0x10')](_0xe32c('0xc'),_0x2b2edf,_0x2d0669['error']['message']);return _0x3665bf(_0x2d0669[_0xe32c('0x10')][_0xe32c('0x11')]);}logger[_0xe32c('0x10')](_0xe32c('0xc'),_0x2b2edf,_0x2d0669[_0xe32c('0x10')][_0xe32c('0x11')]);return _0x56a2f1(_0x2d0669['error'][_0xe32c('0x11')]);}else{logger[_0xe32c('0xb')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x2b2edf,_0xe32c('0xd'));_0x56a2f1(_0x2d0669['result'][_0xe32c('0x11')]);}})[_0xe32c('0x12')](function(_0x3dce2f){logger[_0xe32c('0x10')](_0xe32c('0xc'),_0x2b2edf,_0x3dce2f);_0x3665bf(_0x3dce2f);});});}
\ No newline at end of file
+var _0x6ca6=['error','code','message','info','request\x20sent','result','catch','lodash','util','randomstring','ioredis','../../config/utils','client','http','request','FreshdeskConfiguration,\x20%s,\x20%s','stringify'];(function(_0x3e3e00,_0x4f3a74){var _0x5106d3=function(_0x5c31e0){while(--_0x5c31e0){_0x3e3e00['push'](_0x3e3e00['shift']());}};_0x5106d3(++_0x4f3a74);}(_0x6ca6,0x8f));var _0x66ca=function(_0xdaef4a,_0x2b39cb){_0xdaef4a=_0xdaef4a-0x0;var _0x5fde30=_0x6ca6[_0xdaef4a];return _0x5fde30;};'use strict';var _=require(_0x66ca('0x0'));var util=require(_0x66ca('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x66ca('0x2'));var fs=require('fs');var Redis=require(_0x66ca('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x66ca('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x66ca('0x5')][_0x66ca('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x533913,_0x52d7fc,_0x4f3e1c){return new BPromise(function(_0xab894a,_0x1246f9){return client[_0x66ca('0x7')](_0x533913,_0x4f3e1c)['then'](function(_0x2e8904){logger['info'](_0x66ca('0x8'),_0x52d7fc,'request\x20sent');logger['debug']('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0x52d7fc,'request\x20sent',JSON[_0x66ca('0x9')](_0x2e8904));if(_0x2e8904[_0x66ca('0xa')]){if(_0x2e8904[_0x66ca('0xa')][_0x66ca('0xb')]===0x1f4){logger[_0x66ca('0xa')](_0x66ca('0x8'),_0x52d7fc,_0x2e8904[_0x66ca('0xa')][_0x66ca('0xc')]);return _0x1246f9(_0x2e8904[_0x66ca('0xa')][_0x66ca('0xc')]);}logger[_0x66ca('0xa')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x52d7fc,_0x2e8904['error'][_0x66ca('0xc')]);return _0xab894a(_0x2e8904[_0x66ca('0xa')]['message']);}else{logger[_0x66ca('0xd')](_0x66ca('0x8'),_0x52d7fc,_0x66ca('0xe'));_0xab894a(_0x2e8904[_0x66ca('0xf')][_0x66ca('0xc')]);}})[_0x66ca('0x10')](function(_0x13295d){logger[_0x66ca('0xa')](_0x66ca('0x8'),_0x52d7fc,_0x13295d);_0x1246f9(_0x13295d);});});}
\ No newline at end of file
index c5f5606..20bab49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea73=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express'];(function(_0x4f1c92,_0x259090){var _0x5570b5=function(_0x36b3e0){while(--_0x36b3e0){_0x4f1c92['push'](_0x4f1c92['shift']());}};_0x5570b5(++_0x259090);}(_0xea73,0x79));var _0x3ea7=function(_0x375ac5,_0x438d55){_0x375ac5=_0x375ac5-0x0;var _0x3e6c42=_0xea73[_0x375ac5];return _0x3e6c42;};'use strict';var multer=require(_0x3ea7('0x0'));var util=require(_0x3ea7('0x1'));var path=require(_0x3ea7('0x2'));var timeout=require(_0x3ea7('0x3'));var express=require(_0x3ea7('0x4'));var router=express[_0x3ea7('0x5')]();var fs_extra=require(_0x3ea7('0x6'));var auth=require(_0x3ea7('0x7'));var interaction=require(_0x3ea7('0x8'));var config=require(_0x3ea7('0x9'));var controller=require('./intFreshdeskField.controller');router[_0x3ea7('0xa')]('/',auth[_0x3ea7('0xb')](),controller[_0x3ea7('0xc')]);router['get'](_0x3ea7('0xd'),auth[_0x3ea7('0xb')](),controller[_0x3ea7('0xe')]);router[_0x3ea7('0xf')]('/',auth[_0x3ea7('0xb')](),controller[_0x3ea7('0x10')]);router[_0x3ea7('0x11')](_0x3ea7('0xd'),auth[_0x3ea7('0xb')](),controller[_0x3ea7('0x12')]);router[_0x3ea7('0x13')](_0x3ea7('0xd'),auth[_0x3ea7('0xb')](),controller['destroy']);module[_0x3ea7('0x14')]=router;
\ No newline at end of file
+var _0x1b2d=['index','isAuthenticated','show','post','create','put','/:id','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x1b2d,0x130));var _0xd1b2=function(_0x14c4bb,_0xffe187){_0x14c4bb=_0x14c4bb-0x0;var _0xfd5913=_0x1b2d[_0x14c4bb];return _0xfd5913;};'use strict';var multer=require(_0xd1b2('0x0'));var util=require('util');var path=require(_0xd1b2('0x1'));var timeout=require(_0xd1b2('0x2'));var express=require(_0xd1b2('0x3'));var router=express[_0xd1b2('0x4')]();var fs_extra=require(_0xd1b2('0x5'));var auth=require(_0xd1b2('0x6'));var interaction=require(_0xd1b2('0x7'));var config=require(_0xd1b2('0x8'));var controller=require(_0xd1b2('0x9'));router[_0xd1b2('0xa')]('/',auth['isAuthenticated'](),controller[_0xd1b2('0xb')]);router['get']('/:id',auth[_0xd1b2('0xc')](),controller[_0xd1b2('0xd')]);router[_0xd1b2('0xe')]('/',auth[_0xd1b2('0xc')](),controller[_0xd1b2('0xf')]);router[_0xd1b2('0x10')](_0xd1b2('0x11'),auth[_0xd1b2('0xc')](),controller[_0xd1b2('0x12')]);router[_0xd1b2('0x13')](_0xd1b2('0x11'),auth[_0xd1b2('0xc')](),controller[_0xd1b2('0x14')]);module['exports']=router;
\ No newline at end of file
index b7cf1b5..c273c17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf04e=['exports','ENUM','variable','customVariable','string','STRING','BOOLEAN','sequelize'];(function(_0x9cca29,_0x3a39b7){var _0x4819b5=function(_0x4a4563){while(--_0x4a4563){_0x9cca29['push'](_0x9cca29['shift']());}};_0x4819b5(++_0x3a39b7);}(_0xf04e,0x1bf));var _0xef04=function(_0x4b7d73,_0x300a32){_0x4b7d73=_0x4b7d73-0x0;var _0x35fad4=_0xf04e[_0x4b7d73];return _0x35fad4;};'use strict';var Sequelize=require(_0xef04('0x0'));module[_0xef04('0x1')]={'type':{'type':Sequelize[_0xef04('0x2')]('string',_0xef04('0x3'),_0xef04('0x4'),'keyValue','picklist'),'defaultValue':_0xef04('0x5')},'content':{'type':Sequelize[_0xef04('0x6')]},'key':{'type':Sequelize[_0xef04('0x6')]},'keyType':{'type':Sequelize['ENUM']('string','variable',_0xef04('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xef04('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xef04('0x6')]}};
\ No newline at end of file
+var _0x499e=['exports','ENUM','variable','keyValue','picklist','string','STRING','customVariable','sequelize'];(function(_0x10317d,_0x1857cf){var _0x4da70c=function(_0x385b2d){while(--_0x385b2d){_0x10317d['push'](_0x10317d['shift']());}};_0x4da70c(++_0x1857cf);}(_0x499e,0x128));var _0xe499=function(_0x42c69e,_0x1072a8){_0x42c69e=_0x42c69e-0x0;var _0x5a7cb6=_0x499e[_0x42c69e];return _0x5a7cb6;};'use strict';var Sequelize=require(_0xe499('0x0'));module[_0xe499('0x1')]={'type':{'type':Sequelize[_0xe499('0x2')]('string',_0xe499('0x3'),'customVariable',_0xe499('0x4'),_0xe499('0x5')),'defaultValue':_0xe499('0x6')},'content':{'type':Sequelize[_0xe499('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0xe499('0x6'),_0xe499('0x3'),_0xe499('0x8'))},'keyContent':{'type':Sequelize[_0xe499('0x7')]},'idField':{'type':Sequelize[_0xe499('0x7')]},'nameField':{'type':Sequelize[_0xe499('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe499('0x7')]}};
\ No newline at end of file
index 7583e40..9ead884 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4522=['querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','error','stack','name','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','filter','where','type','merge','options','FreshdeskField','includeAll','include','findAll','rows','show','params','length','find','create','body','catch','destroy','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js'];(function(_0x47de3c,_0x58d9c7){var _0x3fbb51=function(_0x5ea074){while(--_0x5ea074){_0x47de3c['push'](_0x47de3c['shift']());}};_0x3fbb51(++_0x58d9c7);}(_0x4522,0x1a0));var _0x2452=function(_0x37036c,_0x5e9c10){_0x37036c=_0x37036c-0x0;var _0x3402c1=_0x4522[_0x37036c];return _0x3402c1;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2452('0x0'));var jsonpatch=require(_0x2452('0x1'));var rp=require(_0x2452('0x2'));var moment=require('moment');var BPromise=require(_0x2452('0x3'));var Mustache=require(_0x2452('0x4'));var util=require(_0x2452('0x5'));var path=require(_0x2452('0x6'));var sox=require(_0x2452('0x7'));var csv=require(_0x2452('0x8'));var ejs=require(_0x2452('0x9'));var fs=require('fs');var fs_extra=require(_0x2452('0xa'));var _=require(_0x2452('0xb'));var squel=require(_0x2452('0xc'));var crypto=require(_0x2452('0xd'));var jsforce=require(_0x2452('0xe'));var deskjs=require(_0x2452('0xf'));var toCsv=require(_0x2452('0x8'));var querystring=require(_0x2452('0x10'));var Papa=require(_0x2452('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2452('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x2452('0x13'))(_0x2452('0x14'));var utils=require(_0x2452('0x15'));var config=require(_0x2452('0x16'));var licenseUtil=require(_0x2452('0x17'));var db=require(_0x2452('0x18'))['db'];function respondWithStatusCode(_0x2c1e0f,_0x2377b9){_0x2377b9=_0x2377b9||0xcc;return function(_0x4968e8){if(_0x4968e8){return _0x2c1e0f['sendStatus'](_0x2377b9);}return _0x2c1e0f['status'](_0x2377b9)[_0x2452('0x19')]();};}function respondWithResult(_0x4fafa0,_0x33e592){_0x33e592=_0x33e592||0xc8;return function(_0x506cd4){if(_0x506cd4){return _0x4fafa0[_0x2452('0x1a')](_0x33e592)[_0x2452('0x1b')](_0x506cd4);}};}function respondWithFilteredResult(_0x5d0438,_0x1dbadf){return function(_0x47930c){if(_0x47930c){var _0x3dd8cc=typeof _0x1dbadf[_0x2452('0x1c')]===_0x2452('0x1d')&&typeof _0x1dbadf[_0x2452('0x1e')]==='undefined';var _0x2108e4=_0x47930c[_0x2452('0x1f')];var _0x59d89a=_0x3dd8cc?0x0:_0x1dbadf['offset'];var _0x1bfb44=_0x3dd8cc?_0x47930c[_0x2452('0x1f')]:_0x1dbadf[_0x2452('0x1c')]+_0x1dbadf['limit'];var _0x914d2b;if(_0x1bfb44>=_0x2108e4){_0x1bfb44=_0x2108e4;_0x914d2b=0xc8;}else{_0x914d2b=0xce;}_0x5d0438[_0x2452('0x1a')](_0x914d2b);return _0x5d0438[_0x2452('0x20')](_0x2452('0x21'),_0x59d89a+'-'+_0x1bfb44+'/'+_0x2108e4)[_0x2452('0x1b')](_0x47930c);}return null;};}function patchUpdates(_0x1c70cb){return function(_0x3f48c2){try{jsonpatch[_0x2452('0x22')](_0x3f48c2,_0x1c70cb,!![]);}catch(_0x5e921d){return BPromise['reject'](_0x5e921d);}return _0x3f48c2[_0x2452('0x23')]();};}function saveUpdates(_0x32dfe7,_0x4bb3ff){return function(_0x17d0a0){if(_0x17d0a0){return _0x17d0a0[_0x2452('0x24')](_0x32dfe7)[_0x2452('0x25')](function(_0x617ba7){return _0x617ba7;});}return null;};}function removeEntity(_0x285281,_0x397f21){return function(_0x155caa){if(_0x155caa){return _0x155caa['destroy']()[_0x2452('0x25')](function(){_0x285281[_0x2452('0x1a')](0xcc)[_0x2452('0x19')]();});}};}function handleEntityNotFound(_0x231410,_0x3a4326){return function(_0x516fcf){if(!_0x516fcf){_0x231410['sendStatus'](0x194);}return _0x516fcf;};}function handleError(_0x295be0,_0x159ba1){_0x159ba1=_0x159ba1||0x1f4;return function(_0x46fcbb){logger[_0x2452('0x26')](_0x46fcbb[_0x2452('0x27')]);if(_0x46fcbb['name']){delete _0x46fcbb[_0x2452('0x28')];}_0x295be0[_0x2452('0x1a')](_0x159ba1)['send'](_0x46fcbb);};}exports['index']=function(_0x332878,_0xe8d39b){var _0x36cb6c={},_0x28e6ea={},_0x43fde0={'count':0x0,'rows':[]};var _0x258fa6=_['map'](db['FreshdeskField'][_0x2452('0x29')],function(_0x454e0a){return{'name':_0x454e0a[_0x2452('0x2a')],'type':_0x454e0a['type'][_0x2452('0x2b')]};});_0x28e6ea[_0x2452('0x2c')]=_['map'](_0x258fa6,_0x2452('0x28'));_0x28e6ea[_0x2452('0x2d')]=_[_0x2452('0x2e')](_0x332878[_0x2452('0x2d')]);_0x28e6ea[_0x2452('0x2f')]=_[_0x2452('0x30')](_0x28e6ea[_0x2452('0x2c')],_0x28e6ea[_0x2452('0x2d')]);_0x36cb6c[_0x2452('0x31')]=_[_0x2452('0x30')](_0x28e6ea[_0x2452('0x2c')],qs[_0x2452('0x32')](_0x332878[_0x2452('0x2d')]['fields']));_0x36cb6c[_0x2452('0x31')]=_0x36cb6c[_0x2452('0x31')]['length']?_0x36cb6c[_0x2452('0x31')]:_0x28e6ea['model'];if(!_0x332878[_0x2452('0x2d')][_0x2452('0x33')]('nolimit')){_0x36cb6c[_0x2452('0x1e')]=qs[_0x2452('0x1e')](_0x332878[_0x2452('0x2d')]['limit']);_0x36cb6c[_0x2452('0x1c')]=qs[_0x2452('0x1c')](_0x332878['query'][_0x2452('0x1c')]);}_0x36cb6c[_0x2452('0x34')]=qs[_0x2452('0x35')](_0x332878[_0x2452('0x2d')][_0x2452('0x35')]);_0x36cb6c['where']=qs['filters'](_['pick'](_0x332878[_0x2452('0x2d')],_0x28e6ea[_0x2452('0x2f')]),_0x258fa6);if(_0x332878[_0x2452('0x2d')][_0x2452('0x36')]){_0x36cb6c[_0x2452('0x37')]=_['merge'](_0x36cb6c[_0x2452('0x37')],{'$or':_['map'](_0x258fa6,function(_0x5be9b4){if(_0x5be9b4[_0x2452('0x38')]!=='VIRTUAL'){var _0x44ef50={};_0x44ef50[_0x5be9b4[_0x2452('0x28')]]={'$like':'%'+_0x332878['query'][_0x2452('0x36')]+'%'};return _0x44ef50;}})});}_0x36cb6c=_[_0x2452('0x39')]({},_0x36cb6c,_0x332878[_0x2452('0x3a')]);var _0x34d7f9={'where':_0x36cb6c[_0x2452('0x37')]};return db[_0x2452('0x3b')][_0x2452('0x1f')](_0x34d7f9)[_0x2452('0x25')](function(_0x5b864e){_0x43fde0[_0x2452('0x1f')]=_0x5b864e;if(_0x332878['query'][_0x2452('0x3c')]){_0x36cb6c[_0x2452('0x3d')]=[{'all':!![]}];}return db['FreshdeskField'][_0x2452('0x3e')](_0x36cb6c);})[_0x2452('0x25')](function(_0xb4e3f5){_0x43fde0[_0x2452('0x3f')]=_0xb4e3f5;return _0x43fde0;})[_0x2452('0x25')](respondWithFilteredResult(_0xe8d39b,_0x36cb6c))['catch'](handleError(_0xe8d39b,null));};exports[_0x2452('0x40')]=function(_0x29910e,_0x5379a9){var _0xfabbd8={'raw':!![],'where':{'id':_0x29910e[_0x2452('0x41')]['id']}},_0x449b89={};_0x449b89[_0x2452('0x2c')]=_['keys'](db[_0x2452('0x3b')][_0x2452('0x29')]);_0x449b89[_0x2452('0x2d')]=_[_0x2452('0x2e')](_0x29910e[_0x2452('0x2d')]);_0x449b89[_0x2452('0x2f')]=_['intersection'](_0x449b89[_0x2452('0x2c')],_0x449b89['query']);_0xfabbd8[_0x2452('0x31')]=_[_0x2452('0x30')](_0x449b89['model'],qs['fields'](_0x29910e['query']['fields']));_0xfabbd8[_0x2452('0x31')]=_0xfabbd8['attributes'][_0x2452('0x42')]?_0xfabbd8['attributes']:_0x449b89[_0x2452('0x2c')];if(_0x29910e[_0x2452('0x2d')]['includeAll']){_0xfabbd8['include']=[{'all':!![]}];}_0xfabbd8=_[_0x2452('0x39')]({},_0xfabbd8,_0x29910e['options']);return db[_0x2452('0x3b')][_0x2452('0x43')](_0xfabbd8)[_0x2452('0x25')](handleEntityNotFound(_0x5379a9,null))[_0x2452('0x25')](respondWithResult(_0x5379a9,null))['catch'](handleError(_0x5379a9,null));};exports['create']=function(_0x3e4a8b,_0x38615e){return db[_0x2452('0x3b')][_0x2452('0x44')](_0x3e4a8b[_0x2452('0x45')],{})['then'](respondWithResult(_0x38615e,0xc9))[_0x2452('0x46')](handleError(_0x38615e,null));};exports['update']=function(_0x3634f7,_0x53fd05){if(_0x3634f7[_0x2452('0x45')]['id']){delete _0x3634f7[_0x2452('0x45')]['id'];}return db['FreshdeskField'][_0x2452('0x43')]({'where':{'id':_0x3634f7['params']['id']}})[_0x2452('0x25')](handleEntityNotFound(_0x53fd05,null))['then'](saveUpdates(_0x3634f7['body'],null))['then'](respondWithResult(_0x53fd05,null))[_0x2452('0x46')](handleError(_0x53fd05,null));};exports[_0x2452('0x47')]=function(_0x36ebcb,_0x4b705f){return db[_0x2452('0x3b')][_0x2452('0x43')]({'where':{'id':_0x36ebcb[_0x2452('0x41')]['id']}})[_0x2452('0x25')](handleEntityNotFound(_0x4b705f,null))[_0x2452('0x25')](removeEntity(_0x4b705f,null))['catch'](handleError(_0x4b705f,null));};
\ No newline at end of file
+var _0x80df=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','index','FreshdeskField','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','length','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring'];(function(_0x35f650,_0x16645d){var _0x500a96=function(_0x244e61){while(--_0x244e61){_0x35f650['push'](_0x35f650['shift']());}};_0x500a96(++_0x16645d);}(_0x80df,0x17e));var _0xf80d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x80df[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0xf80d('0x0'));var rimraf=require(_0xf80d('0x1'));var zipdir=require(_0xf80d('0x2'));var jsonpatch=require(_0xf80d('0x3'));var rp=require('request-promise');var moment=require(_0xf80d('0x4'));var BPromise=require(_0xf80d('0x5'));var Mustache=require(_0xf80d('0x6'));var util=require(_0xf80d('0x7'));var path=require(_0xf80d('0x8'));var sox=require(_0xf80d('0x9'));var csv=require(_0xf80d('0xa'));var ejs=require(_0xf80d('0xb'));var fs=require('fs');var fs_extra=require(_0xf80d('0xc'));var _=require(_0xf80d('0xd'));var squel=require('squel');var crypto=require(_0xf80d('0xe'));var jsforce=require(_0xf80d('0xf'));var deskjs=require(_0xf80d('0x10'));var toCsv=require(_0xf80d('0xa'));var querystring=require(_0xf80d('0x11'));var Papa=require(_0xf80d('0x12'));var Redis=require(_0xf80d('0x13'));var authService=require(_0xf80d('0x14'));var qs=require(_0xf80d('0x15'));var as=require(_0xf80d('0x16'));var hardwareService=require(_0xf80d('0x17'));var logger=require(_0xf80d('0x18'))(_0xf80d('0x19'));var utils=require(_0xf80d('0x1a'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf80d('0x1b'))['db'];function respondWithStatusCode(_0x74ce36,_0x489bdf){_0x489bdf=_0x489bdf||0xcc;return function(_0x34e130){if(_0x34e130){return _0x74ce36['sendStatus'](_0x489bdf);}return _0x74ce36[_0xf80d('0x1c')](_0x489bdf)['end']();};}function respondWithResult(_0x4285de,_0x50c968){_0x50c968=_0x50c968||0xc8;return function(_0x3be9a9){if(_0x3be9a9){return _0x4285de[_0xf80d('0x1c')](_0x50c968)[_0xf80d('0x1d')](_0x3be9a9);}};}function respondWithFilteredResult(_0x1e1b08,_0x2098d6){return function(_0x45751c){if(_0x45751c){var _0x482043=typeof _0x2098d6[_0xf80d('0x1e')]===_0xf80d('0x1f')&&typeof _0x2098d6[_0xf80d('0x20')]===_0xf80d('0x1f');var _0x27b2ea=_0x45751c[_0xf80d('0x21')];var _0x1d104a=_0x482043?0x0:_0x2098d6[_0xf80d('0x1e')];var _0x2ea2c1=_0x482043?_0x45751c[_0xf80d('0x21')]:_0x2098d6[_0xf80d('0x1e')]+_0x2098d6[_0xf80d('0x20')];var _0x5392c5;if(_0x2ea2c1>=_0x27b2ea){_0x2ea2c1=_0x27b2ea;_0x5392c5=0xc8;}else{_0x5392c5=0xce;}_0x1e1b08[_0xf80d('0x1c')](_0x5392c5);return _0x1e1b08[_0xf80d('0x22')]('Content-Range',_0x1d104a+'-'+_0x2ea2c1+'/'+_0x27b2ea)[_0xf80d('0x1d')](_0x45751c);}return null;};}function patchUpdates(_0x539c80){return function(_0x3f3a2a){try{jsonpatch[_0xf80d('0x23')](_0x3f3a2a,_0x539c80,!![]);}catch(_0x2d5e46){return BPromise[_0xf80d('0x24')](_0x2d5e46);}return _0x3f3a2a[_0xf80d('0x25')]();};}function saveUpdates(_0x25d031,_0x446153){return function(_0x269859){if(_0x269859){return _0x269859[_0xf80d('0x26')](_0x25d031)[_0xf80d('0x27')](function(_0x33d58c){return _0x33d58c;});}return null;};}function removeEntity(_0x739968,_0x570c99){return function(_0x32ad42){if(_0x32ad42){return _0x32ad42[_0xf80d('0x28')]()['then'](function(){_0x739968[_0xf80d('0x1c')](0xcc)[_0xf80d('0x29')]();});}};}function handleEntityNotFound(_0x323540,_0x947bb){return function(_0x4986ad){if(!_0x4986ad){_0x323540[_0xf80d('0x2a')](0x194);}return _0x4986ad;};}function handleError(_0x14399e,_0xf4c3af){_0xf4c3af=_0xf4c3af||0x1f4;return function(_0x2a4597){logger[_0xf80d('0x2b')](_0x2a4597[_0xf80d('0x2c')]);if(_0x2a4597[_0xf80d('0x2d')]){delete _0x2a4597[_0xf80d('0x2d')];}_0x14399e[_0xf80d('0x1c')](_0xf4c3af)['send'](_0x2a4597);};}exports[_0xf80d('0x2e')]=function(_0x1603a4,_0x3e2c8c){var _0x368865={},_0x3ce924={},_0x5eab42={'count':0x0,'rows':[]};var _0x401cfb=_['map'](db[_0xf80d('0x2f')][_0xf80d('0x30')],function(_0x214bff){return{'name':_0x214bff[_0xf80d('0x31')],'type':_0x214bff['type']['key']};});_0x3ce924[_0xf80d('0x32')]=_['map'](_0x401cfb,_0xf80d('0x2d'));_0x3ce924[_0xf80d('0x33')]=_[_0xf80d('0x34')](_0x1603a4['query']);_0x3ce924[_0xf80d('0x35')]=_[_0xf80d('0x36')](_0x3ce924['model'],_0x3ce924[_0xf80d('0x33')]);_0x368865[_0xf80d('0x37')]=_[_0xf80d('0x36')](_0x3ce924['model'],qs[_0xf80d('0x38')](_0x1603a4[_0xf80d('0x33')][_0xf80d('0x38')]));_0x368865[_0xf80d('0x37')]=_0x368865[_0xf80d('0x37')]['length']?_0x368865[_0xf80d('0x37')]:_0x3ce924['model'];if(!_0x1603a4[_0xf80d('0x33')][_0xf80d('0x39')](_0xf80d('0x3a'))){_0x368865[_0xf80d('0x20')]=qs['limit'](_0x1603a4[_0xf80d('0x33')][_0xf80d('0x20')]);_0x368865[_0xf80d('0x1e')]=qs[_0xf80d('0x1e')](_0x1603a4['query'][_0xf80d('0x1e')]);}_0x368865[_0xf80d('0x3b')]=qs[_0xf80d('0x3c')](_0x1603a4[_0xf80d('0x33')][_0xf80d('0x3c')]);_0x368865[_0xf80d('0x3d')]=qs[_0xf80d('0x35')](_[_0xf80d('0x3e')](_0x1603a4['query'],_0x3ce924[_0xf80d('0x35')]),_0x401cfb);if(_0x1603a4[_0xf80d('0x33')][_0xf80d('0x3f')]){_0x368865['where']=_[_0xf80d('0x40')](_0x368865['where'],{'$or':_[_0xf80d('0x41')](_0x401cfb,function(_0x1a4ab7){if(_0x1a4ab7[_0xf80d('0x42')]!==_0xf80d('0x43')){var _0x4a3c5e={};_0x4a3c5e[_0x1a4ab7['name']]={'$like':'%'+_0x1603a4['query'][_0xf80d('0x3f')]+'%'};return _0x4a3c5e;}})});}_0x368865=_[_0xf80d('0x40')]({},_0x368865,_0x1603a4[_0xf80d('0x44')]);var _0x4b9f1d={'where':_0x368865[_0xf80d('0x3d')]};return db[_0xf80d('0x2f')]['count'](_0x4b9f1d)[_0xf80d('0x27')](function(_0x511310){_0x5eab42[_0xf80d('0x21')]=_0x511310;if(_0x1603a4['query'][_0xf80d('0x45')]){_0x368865['include']=[{'all':!![]}];}return db[_0xf80d('0x2f')][_0xf80d('0x46')](_0x368865);})[_0xf80d('0x27')](function(_0x2cd371){_0x5eab42[_0xf80d('0x47')]=_0x2cd371;return _0x5eab42;})[_0xf80d('0x27')](respondWithFilteredResult(_0x3e2c8c,_0x368865))[_0xf80d('0x48')](handleError(_0x3e2c8c,null));};exports[_0xf80d('0x49')]=function(_0x99e531,_0x80f24a){var _0x1fcbad={'raw':!![],'where':{'id':_0x99e531[_0xf80d('0x4a')]['id']}},_0x437e44={};_0x437e44[_0xf80d('0x32')]=_[_0xf80d('0x34')](db[_0xf80d('0x2f')][_0xf80d('0x30')]);_0x437e44[_0xf80d('0x33')]=_[_0xf80d('0x34')](_0x99e531[_0xf80d('0x33')]);_0x437e44[_0xf80d('0x35')]=_[_0xf80d('0x36')](_0x437e44[_0xf80d('0x32')],_0x437e44[_0xf80d('0x33')]);_0x1fcbad[_0xf80d('0x37')]=_['intersection'](_0x437e44[_0xf80d('0x32')],qs[_0xf80d('0x38')](_0x99e531[_0xf80d('0x33')][_0xf80d('0x38')]));_0x1fcbad[_0xf80d('0x37')]=_0x1fcbad['attributes'][_0xf80d('0x4b')]?_0x1fcbad[_0xf80d('0x37')]:_0x437e44[_0xf80d('0x32')];if(_0x99e531[_0xf80d('0x33')][_0xf80d('0x45')]){_0x1fcbad[_0xf80d('0x4c')]=[{'all':!![]}];}_0x1fcbad=_[_0xf80d('0x40')]({},_0x1fcbad,_0x99e531[_0xf80d('0x44')]);return db[_0xf80d('0x2f')][_0xf80d('0x4d')](_0x1fcbad)[_0xf80d('0x27')](handleEntityNotFound(_0x80f24a,null))[_0xf80d('0x27')](respondWithResult(_0x80f24a,null))[_0xf80d('0x48')](handleError(_0x80f24a,null));};exports[_0xf80d('0x4e')]=function(_0x3a420d,_0x10d5b5){return db[_0xf80d('0x2f')]['create'](_0x3a420d[_0xf80d('0x4f')],{})[_0xf80d('0x27')](respondWithResult(_0x10d5b5,0xc9))[_0xf80d('0x48')](handleError(_0x10d5b5,null));};exports['update']=function(_0x3e5cf6,_0x1088ca){if(_0x3e5cf6['body']['id']){delete _0x3e5cf6['body']['id'];}return db[_0xf80d('0x2f')]['find']({'where':{'id':_0x3e5cf6[_0xf80d('0x4a')]['id']}})[_0xf80d('0x27')](handleEntityNotFound(_0x1088ca,null))[_0xf80d('0x27')](saveUpdates(_0x3e5cf6[_0xf80d('0x4f')],null))[_0xf80d('0x27')](respondWithResult(_0x1088ca,null))[_0xf80d('0x48')](handleError(_0x1088ca,null));};exports[_0xf80d('0x28')]=function(_0x114132,_0x115d1f){return db[_0xf80d('0x2f')][_0xf80d('0x4d')]({'where':{'id':_0x114132[_0xf80d('0x4a')]['id']}})['then'](handleEntityNotFound(_0x115d1f,null))[_0xf80d('0x27')](removeEntity(_0x115d1f,null))[_0xf80d('0x48')](handleError(_0x115d1f,null));};
\ No newline at end of file
index b07f842..403f494 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e25=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./intFreshdeskField.attributes','FreshdeskField','int_freshdesk_fields','idField','FieldId'];(function(_0x20b2bc,_0x5bf994){var _0x1d3584=function(_0x28cca2){while(--_0x28cca2){_0x20b2bc['push'](_0x20b2bc['shift']());}};_0x1d3584(++_0x5bf994);}(_0x9e25,0x82));var _0x59e2=function(_0x1e040e,_0x37b86e){_0x1e040e=_0x1e040e-0x0;var _0x5b9bc3=_0x9e25[_0x1e040e];return _0x5b9bc3;};'use strict';var _=require(_0x59e2('0x0'));var util=require(_0x59e2('0x1'));var logger=require(_0x59e2('0x2'))(_0x59e2('0x3'));var moment=require(_0x59e2('0x4'));var BPromise=require(_0x59e2('0x5'));var rp=require(_0x59e2('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x59e2('0x7'));var attributes=require(_0x59e2('0x8'));module['exports']=function(_0x4acab3,_0x7f1155){return _0x4acab3['define'](_0x59e2('0x9'),attributes,{'tableName':_0x59e2('0xa'),'paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':[_0x59e2('0xb'),_0x59e2('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c17=['path','../../config/environment','./intFreshdeskField.attributes','exports','define','freshdesk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x1aed55,_0x2f71a8){var _0xbf123b=function(_0x30c451){while(--_0x30c451){_0x1aed55['push'](_0x1aed55['shift']());}};_0xbf123b(++_0x2f71a8);}(_0x1c17,0x158));var _0x71c1=function(_0x3138e1,_0x26baec){_0x3138e1=_0x3138e1-0x0;var _0x378ca0=_0x1c17[_0x3138e1];return _0x378ca0;};'use strict';var _=require(_0x71c1('0x0'));var util=require(_0x71c1('0x1'));var logger=require(_0x71c1('0x2'))(_0x71c1('0x3'));var moment=require('moment');var BPromise=require(_0x71c1('0x4'));var rp=require(_0x71c1('0x5'));var fs=require('fs');var path=require(_0x71c1('0x6'));var rimraf=require('rimraf');var config=require(_0x71c1('0x7'));var attributes=require(_0x71c1('0x8'));module[_0x71c1('0x9')]=function(_0x17f02b,_0x4ae3ea){return _0x17f02b[_0x71c1('0xa')]('FreshdeskField',attributes,{'tableName':'int_freshdesk_fields','paranoid':![],'indexes':[{'name':_0x71c1('0xb'),'fields':[_0x71c1('0xc'),_0x71c1('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 02a6905..2f0194f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32e3=['info','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','request\x20sent','stringify','error','FreshdeskField,\x20%s,\x20%s','message'];(function(_0x184be8,_0x2a62fb){var _0x25671b=function(_0x2a2720){while(--_0x2a2720){_0x184be8['push'](_0x184be8['shift']());}};_0x25671b(++_0x2a62fb);}(_0x32e3,0x16a));var _0x332e=function(_0x2daae2,_0x4af2c7){_0x2daae2=_0x2daae2-0x0;var _0x6382d5=_0x32e3[_0x2daae2];return _0x6382d5;};'use strict';var _=require(_0x332e('0x0'));var util=require('util');var moment=require(_0x332e('0x1'));var BPromise=require(_0x332e('0x2'));var rs=require(_0x332e('0x3'));var fs=require('fs');var Redis=require(_0x332e('0x4'));var db=require(_0x332e('0x5'))['db'];var utils=require(_0x332e('0x6'));var logger=require(_0x332e('0x7'))(_0x332e('0x8'));var config=require('../../config/environment');var jayson=require(_0x332e('0x9'));var client=jayson[_0x332e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x485df3,_0xd7faa0,_0x1ab097){return new BPromise(function(_0x1b8ed2,_0xa8d3c0){return client[_0x332e('0xb')](_0x485df3,_0x1ab097)[_0x332e('0xc')](function(_0x1a7f0a){logger['info']('FreshdeskField,\x20%s,\x20%s',_0xd7faa0,'request\x20sent');logger['debug']('FreshdeskField,\x20%s,\x20%s,\x20%s',_0xd7faa0,_0x332e('0xd'),JSON[_0x332e('0xe')](_0x1a7f0a));if(_0x1a7f0a[_0x332e('0xf')]){if(_0x1a7f0a[_0x332e('0xf')]['code']===0x1f4){logger[_0x332e('0xf')](_0x332e('0x10'),_0xd7faa0,_0x1a7f0a[_0x332e('0xf')][_0x332e('0x11')]);return _0xa8d3c0(_0x1a7f0a['error'][_0x332e('0x11')]);}logger[_0x332e('0xf')](_0x332e('0x10'),_0xd7faa0,_0x1a7f0a[_0x332e('0xf')][_0x332e('0x11')]);return _0x1b8ed2(_0x1a7f0a['error'][_0x332e('0x11')]);}else{logger[_0x332e('0x12')](_0x332e('0x10'),_0xd7faa0,_0x332e('0xd'));_0x1b8ed2(_0x1a7f0a[_0x332e('0x13')]['message']);}})['catch'](function(_0x5c4470){logger[_0x332e('0xf')](_0x332e('0x10'),_0xd7faa0,_0x5c4470);_0xa8d3c0(_0x5c4470);});});}
\ No newline at end of file
+var _0x1d99=['http','request','then','info','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FreshdeskField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x28f6c9,_0x5470f2){var _0x5e803b=function(_0x31cb2e){while(--_0x31cb2e){_0x28f6c9['push'](_0x28f6c9['shift']());}};_0x5e803b(++_0x5470f2);}(_0x1d99,0x1c3));var _0x91d9=function(_0x37cc0b,_0x2e5562){_0x37cc0b=_0x37cc0b-0x0;var _0x5ea81c=_0x1d99[_0x37cc0b];return _0x5ea81c;};'use strict';var _=require(_0x91d9('0x0'));var util=require(_0x91d9('0x1'));var moment=require(_0x91d9('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x91d9('0x3'));var db=require(_0x91d9('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x91d9('0x5'))('rpc');var config=require(_0x91d9('0x6'));var jayson=require(_0x91d9('0x7'));var client=jayson[_0x91d9('0x8')][_0x91d9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x191d07,_0x1cb6cc,_0x1c37d2){return new BPromise(function(_0xf6dbdb,_0x502427){return client[_0x91d9('0xa')](_0x191d07,_0x1c37d2)[_0x91d9('0xb')](function(_0x1f41ba){logger[_0x91d9('0xc')]('FreshdeskField,\x20%s,\x20%s',_0x1cb6cc,'request\x20sent');logger[_0x91d9('0xd')](_0x91d9('0xe'),_0x1cb6cc,_0x91d9('0xf'),JSON[_0x91d9('0x10')](_0x1f41ba));if(_0x1f41ba[_0x91d9('0x11')]){if(_0x1f41ba[_0x91d9('0x11')][_0x91d9('0x12')]===0x1f4){logger['error'](_0x91d9('0x13'),_0x1cb6cc,_0x1f41ba[_0x91d9('0x11')][_0x91d9('0x14')]);return _0x502427(_0x1f41ba[_0x91d9('0x11')]['message']);}logger[_0x91d9('0x11')](_0x91d9('0x13'),_0x1cb6cc,_0x1f41ba[_0x91d9('0x11')][_0x91d9('0x14')]);return _0xf6dbdb(_0x1f41ba[_0x91d9('0x11')][_0x91d9('0x14')]);}else{logger[_0x91d9('0xc')](_0x91d9('0x13'),_0x1cb6cc,_0x91d9('0xf'));_0xf6dbdb(_0x1f41ba[_0x91d9('0x15')][_0x91d9('0x14')]);}})[_0x91d9('0x16')](function(_0x417967){logger[_0x91d9('0x11')](_0x91d9('0x13'),_0x1cb6cc,_0x417967);_0x502427(_0x417967);});});}
\ No newline at end of file
index 4f14b2c..8bd35c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c7c=['./intFreshsalesAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x150792,_0x187824){var _0x5f2974=function(_0x2791d5){while(--_0x2791d5){_0x150792['push'](_0x150792['shift']());}};_0x5f2974(++_0x187824);}(_0x1c7c,0x164));var _0xc1c7=function(_0x5ce5e1,_0x4487e6){_0x5ce5e1=_0x5ce5e1-0x0;var _0x33929d=_0x1c7c[_0x5ce5e1];return _0x33929d;};'use strict';var multer=require(_0xc1c7('0x0'));var util=require(_0xc1c7('0x1'));var path=require(_0xc1c7('0x2'));var timeout=require(_0xc1c7('0x3'));var express=require('express');var router=express[_0xc1c7('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc1c7('0x5'));var interaction=require(_0xc1c7('0x6'));var config=require(_0xc1c7('0x7'));var controller=require(_0xc1c7('0x8'));router[_0xc1c7('0x9')]('/',auth[_0xc1c7('0xa')](),controller[_0xc1c7('0xb')]);router[_0xc1c7('0x9')](_0xc1c7('0xc'),auth[_0xc1c7('0xa')](),controller[_0xc1c7('0xd')]);router[_0xc1c7('0x9')](_0xc1c7('0xe'),auth[_0xc1c7('0xa')](),controller[_0xc1c7('0xf')]);router[_0xc1c7('0x9')](_0xc1c7('0x10'),auth['isAuthenticated'](),controller[_0xc1c7('0x11')]);router[_0xc1c7('0x12')]('/',auth['isAuthenticated'](),controller[_0xc1c7('0x13')]);router[_0xc1c7('0x12')](_0xc1c7('0xe'),auth['isAuthenticated'](),controller[_0xc1c7('0x14')]);router[_0xc1c7('0x15')](_0xc1c7('0xc'),auth[_0xc1c7('0xa')](),controller[_0xc1c7('0x16')]);router[_0xc1c7('0x17')](_0xc1c7('0xc'),auth[_0xc1c7('0xa')](),controller[_0xc1c7('0x18')]);module[_0xc1c7('0x19')]=router;
\ No newline at end of file
+var _0x4cf8=['put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','show','/:id/configurations','/:id/fields','getFields','create','addConfiguration'];(function(_0x650d4d,_0x3c8c24){var _0x39c7ff=function(_0x479a0c){while(--_0x479a0c){_0x650d4d['push'](_0x650d4d['shift']());}};_0x39c7ff(++_0x3c8c24);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x2431d6,_0x25189a){_0x2431d6=_0x2431d6-0x0;var _0x4d0f9b=_0x4cf8[_0x2431d6];return _0x4d0f9b;};'use strict';var multer=require(_0x84cf('0x0'));var util=require(_0x84cf('0x1'));var path=require(_0x84cf('0x2'));var timeout=require(_0x84cf('0x3'));var express=require(_0x84cf('0x4'));var router=express[_0x84cf('0x5')]();var fs_extra=require(_0x84cf('0x6'));var auth=require(_0x84cf('0x7'));var interaction=require(_0x84cf('0x8'));var config=require(_0x84cf('0x9'));var controller=require(_0x84cf('0xa'));router[_0x84cf('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0x84cf('0xb')]('/:id',auth[_0x84cf('0xc')](),controller[_0x84cf('0xd')]);router['get'](_0x84cf('0xe'),auth[_0x84cf('0xc')](),controller['getConfigurations']);router[_0x84cf('0xb')](_0x84cf('0xf'),auth[_0x84cf('0xc')](),controller[_0x84cf('0x10')]);router['post']('/',auth[_0x84cf('0xc')](),controller[_0x84cf('0x11')]);router['post']('/:id/configurations',auth[_0x84cf('0xc')](),controller[_0x84cf('0x12')]);router[_0x84cf('0x13')](_0x84cf('0x14'),auth[_0x84cf('0xc')](),controller[_0x84cf('0x15')]);router[_0x84cf('0x16')](_0x84cf('0x14'),auth[_0x84cf('0xc')](),controller[_0x84cf('0x17')]);module[_0x84cf('0x18')]=router;
\ No newline at end of file
index bf2b3ee..0f33879 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['STRING','username','remoteUri','sequelize'];(function(_0x41e7d4,_0x4ea0dc){var _0x4f2771=function(_0x12b189){while(--_0x12b189){_0x41e7d4['push'](_0x41e7d4['shift']());}};_0x4f2771(++_0x4ea0dc);}(_0x0b0e,0x187));var _0xe0b0=function(_0x11d684,_0x4d4123){_0x11d684=_0x11d684-0x0;var _0x78a301=_0x0b0e[_0x11d684];return _0x78a301;};'use strict';var Sequelize=require(_0xe0b0('0x0'));module['exports']={'name':{'type':Sequelize[_0xe0b0('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xe0b0('0x1')],'unique':_0xe0b0('0x2')},'apiKey':{'type':Sequelize[_0xe0b0('0x1')]},'remoteUri':{'type':Sequelize[_0xe0b0('0x1')],'unique':_0xe0b0('0x3')},'serverUrl':{'type':Sequelize[_0xe0b0('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xdf55=['exports','STRING','remoteUri','sequelize'];(function(_0xcbd3e4,_0x18d7d6){var _0x3abed4=function(_0x552729){while(--_0x552729){_0xcbd3e4['push'](_0xcbd3e4['shift']());}};_0x3abed4(++_0x18d7d6);}(_0xdf55,0x83));var _0x5df5=function(_0x18b4d3,_0x1cc71){_0x18b4d3=_0x18b4d3-0x0;var _0x665332=_0xdf55[_0x18b4d3];return _0x665332;};'use strict';var Sequelize=require(_0x5df5('0x0'));module[_0x5df5('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x5df5('0x2')]},'username':{'type':Sequelize[_0x5df5('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0x5df5('0x2')]},'remoteUri':{'type':Sequelize[_0x5df5('0x2')],'unique':_0x5df5('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index ede206b..f652230 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x064e=['status','json','offset','limit','count','set','apply','save','update','then','destroy','end','error','stack','name','index','map','FreshsalesAccount','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','catch','create','body','getConfigurations','findOne','order','addConfiguration','Subjects','channel','Descriptions','getDescriptions','FreshsalesConfiguration','FreshsalesField','getFields','username','remoteUri','apiKey','substring','format','%s%s','/api/selector/owners','Token\x20token=','users','email','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus'];(function(_0x2690be,_0x44b266){var _0x202c8d=function(_0x2a3bb3){while(--_0x2a3bb3){_0x2690be['push'](_0x2690be['shift']());}};_0x202c8d(++_0x44b266);}(_0x064e,0x110));var _0xe064=function(_0x5646f2,_0x12641d){_0x5646f2=_0x5646f2-0x0;var _0x130102=_0x064e[_0x5646f2];return _0x130102;};'use strict';var emlformat=require(_0xe064('0x0'));var rimraf=require(_0xe064('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe064('0x2'));var rp=require(_0xe064('0x3'));var moment=require('moment');var BPromise=require(_0xe064('0x4'));var Mustache=require(_0xe064('0x5'));var util=require(_0xe064('0x6'));var path=require(_0xe064('0x7'));var sox=require(_0xe064('0x8'));var csv=require(_0xe064('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe064('0xa'));var _=require(_0xe064('0xb'));var squel=require(_0xe064('0xc'));var crypto=require('crypto');var jsforce=require(_0xe064('0xd'));var deskjs=require(_0xe064('0xe'));var toCsv=require(_0xe064('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe064('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe064('0x10'));var hardwareService=require(_0xe064('0x11'));var logger=require(_0xe064('0x12'))('api');var utils=require(_0xe064('0x13'));var config=require(_0xe064('0x14'));var licenseUtil=require(_0xe064('0x15'));var db=require(_0xe064('0x16'))['db'];var integrations=require(_0xe064('0x17'));function respondWithStatusCode(_0x48a08a,_0x832d01){_0x832d01=_0x832d01||0xcc;return function(_0x59915d){if(_0x59915d){return _0x48a08a[_0xe064('0x18')](_0x832d01);}return _0x48a08a[_0xe064('0x19')](_0x832d01)['end']();};}function respondWithResult(_0xf59bf1,_0x1800ab){_0x1800ab=_0x1800ab||0xc8;return function(_0xfabd8d){if(_0xfabd8d){return _0xf59bf1['status'](_0x1800ab)[_0xe064('0x1a')](_0xfabd8d);}};}function respondWithFilteredResult(_0x461479,_0x21e224){return function(_0xbadb9c){if(_0xbadb9c){var _0x588d75=typeof _0x21e224[_0xe064('0x1b')]==='undefined'&&typeof _0x21e224[_0xe064('0x1c')]==='undefined';var _0xba02f4=_0xbadb9c[_0xe064('0x1d')];var _0x33b124=_0x588d75?0x0:_0x21e224[_0xe064('0x1b')];var _0x4a22a6=_0x588d75?_0xbadb9c[_0xe064('0x1d')]:_0x21e224[_0xe064('0x1b')]+_0x21e224[_0xe064('0x1c')];var _0x138f40;if(_0x4a22a6>=_0xba02f4){_0x4a22a6=_0xba02f4;_0x138f40=0xc8;}else{_0x138f40=0xce;}_0x461479[_0xe064('0x19')](_0x138f40);return _0x461479[_0xe064('0x1e')]('Content-Range',_0x33b124+'-'+_0x4a22a6+'/'+_0xba02f4)['json'](_0xbadb9c);}return null;};}function patchUpdates(_0x1f169c){return function(_0x21b326){try{jsonpatch[_0xe064('0x1f')](_0x21b326,_0x1f169c,!![]);}catch(_0xf6839c){return BPromise['reject'](_0xf6839c);}return _0x21b326[_0xe064('0x20')]();};}function saveUpdates(_0x5b0d59,_0x3c0f43){return function(_0x4dc708){if(_0x4dc708){return _0x4dc708[_0xe064('0x21')](_0x5b0d59)[_0xe064('0x22')](function(_0x18efe7){return _0x18efe7;});}return null;};}function removeEntity(_0x1fa142,_0x208309){return function(_0x178759){if(_0x178759){return _0x178759[_0xe064('0x23')]()[_0xe064('0x22')](function(){_0x1fa142[_0xe064('0x19')](0xcc)[_0xe064('0x24')]();});}};}function handleEntityNotFound(_0xcc4a6b,_0x2dab07){return function(_0x21b3ab){if(!_0x21b3ab){_0xcc4a6b[_0xe064('0x18')](0x194);}return _0x21b3ab;};}function handleError(_0x510b94,_0x3bd68f){_0x3bd68f=_0x3bd68f||0x1f4;return function(_0x54d825){logger[_0xe064('0x25')](_0x54d825[_0xe064('0x26')]);if(_0x54d825[_0xe064('0x27')]){delete _0x54d825['name'];}_0x510b94[_0xe064('0x19')](_0x3bd68f)['send'](_0x54d825);};}exports[_0xe064('0x28')]=function(_0x3aea94,_0x51f5cc){var _0x259f26={},_0x4f075d={},_0x1ba919={'count':0x0,'rows':[]};var _0x62148a=_[_0xe064('0x29')](db[_0xe064('0x2a')]['rawAttributes'],function(_0x5aa3e6){return{'name':_0x5aa3e6[_0xe064('0x2b')],'type':_0x5aa3e6[_0xe064('0x2c')]['key']};});_0x4f075d[_0xe064('0x2d')]=_[_0xe064('0x29')](_0x62148a,'name');_0x4f075d[_0xe064('0x2e')]=_[_0xe064('0x2f')](_0x3aea94['query']);_0x4f075d[_0xe064('0x30')]=_[_0xe064('0x31')](_0x4f075d[_0xe064('0x2d')],_0x4f075d[_0xe064('0x2e')]);_0x259f26[_0xe064('0x32')]=_[_0xe064('0x31')](_0x4f075d['model'],qs[_0xe064('0x33')](_0x3aea94['query'][_0xe064('0x33')]));_0x259f26[_0xe064('0x32')]=_0x259f26['attributes'][_0xe064('0x34')]?_0x259f26[_0xe064('0x32')]:_0x4f075d[_0xe064('0x2d')];if(!_0x3aea94[_0xe064('0x2e')][_0xe064('0x35')](_0xe064('0x36'))){_0x259f26[_0xe064('0x1c')]=qs['limit'](_0x3aea94[_0xe064('0x2e')][_0xe064('0x1c')]);_0x259f26[_0xe064('0x1b')]=qs[_0xe064('0x1b')](_0x3aea94[_0xe064('0x2e')]['offset']);}_0x259f26['order']=qs['sort'](_0x3aea94['query'][_0xe064('0x37')]);_0x259f26[_0xe064('0x38')]=qs[_0xe064('0x30')](_[_0xe064('0x39')](_0x3aea94[_0xe064('0x2e')],_0x4f075d[_0xe064('0x30')]),_0x62148a);if(_0x3aea94['query'][_0xe064('0x3a')]){_0x259f26[_0xe064('0x38')]=_['merge'](_0x259f26[_0xe064('0x38')],{'$or':_[_0xe064('0x29')](_0x62148a,function(_0x372091){if(_0x372091[_0xe064('0x2c')]!==_0xe064('0x3b')){var _0x307b99={};_0x307b99[_0x372091[_0xe064('0x27')]]={'$like':'%'+_0x3aea94[_0xe064('0x2e')][_0xe064('0x3a')]+'%'};return _0x307b99;}})});}_0x259f26=_[_0xe064('0x3c')]({},_0x259f26,_0x3aea94[_0xe064('0x3d')]);var _0x3019df={'where':_0x259f26[_0xe064('0x38')]};return db['FreshsalesAccount']['count'](_0x3019df)[_0xe064('0x22')](function(_0x3a9b32){_0x1ba919[_0xe064('0x1d')]=_0x3a9b32;if(_0x3aea94['query'][_0xe064('0x3e')]){_0x259f26[_0xe064('0x3f')]=[{'all':!![]}];}return db[_0xe064('0x2a')][_0xe064('0x40')](_0x259f26);})[_0xe064('0x22')](function(_0x8ef9f1){_0x1ba919[_0xe064('0x41')]=_0x8ef9f1;return _0x1ba919;})['then'](respondWithFilteredResult(_0x51f5cc,_0x259f26))['catch'](handleError(_0x51f5cc,null));};exports[_0xe064('0x42')]=function(_0x152a8c,_0x167733){var _0x28802c={'raw':![],'where':{'id':_0x152a8c[_0xe064('0x43')]['id']}},_0x3e84d2={};_0x3e84d2['model']=_[_0xe064('0x2f')](db['FreshsalesAccount'][_0xe064('0x44')]);_0x3e84d2[_0xe064('0x2e')]=_[_0xe064('0x2f')](_0x152a8c[_0xe064('0x2e')]);_0x3e84d2[_0xe064('0x30')]=_[_0xe064('0x31')](_0x3e84d2[_0xe064('0x2d')],_0x3e84d2[_0xe064('0x2e')]);_0x28802c[_0xe064('0x32')]=_[_0xe064('0x31')](_0x3e84d2['model'],qs[_0xe064('0x33')](_0x152a8c[_0xe064('0x2e')]['fields']));_0x28802c[_0xe064('0x32')]=_0x28802c[_0xe064('0x32')][_0xe064('0x34')]?_0x28802c[_0xe064('0x32')]:_0x3e84d2[_0xe064('0x2d')];if(_0x152a8c['query'][_0xe064('0x3e')]){_0x28802c[_0xe064('0x3f')]=[{'all':!![]}];}_0x28802c=_[_0xe064('0x3c')]({},_0x28802c,_0x152a8c[_0xe064('0x3d')]);return db[_0xe064('0x2a')][_0xe064('0x45')](_0x28802c)[_0xe064('0x22')](handleEntityNotFound(_0x167733,null))[_0xe064('0x22')](respondWithResult(_0x167733,null))[_0xe064('0x46')](handleError(_0x167733,null));};exports[_0xe064('0x47')]=function(_0x5a6ced,_0x34d6f4){return db[_0xe064('0x2a')][_0xe064('0x47')](_0x5a6ced['body'],{})['then'](respondWithResult(_0x34d6f4,0xc9))['catch'](handleError(_0x34d6f4,null));};exports['update']=function(_0x3e96e9,_0x257a5b){if(_0x3e96e9['body']['id']){delete _0x3e96e9['body']['id'];}return db[_0xe064('0x2a')][_0xe064('0x45')]({'where':{'id':_0x3e96e9['params']['id']}})[_0xe064('0x22')](handleEntityNotFound(_0x257a5b,null))[_0xe064('0x22')](saveUpdates(_0x3e96e9[_0xe064('0x48')],null))[_0xe064('0x22')](respondWithResult(_0x257a5b,null))[_0xe064('0x46')](handleError(_0x257a5b,null));};exports[_0xe064('0x23')]=function(_0x1c48dd,_0x1661f9){return db['FreshsalesAccount'][_0xe064('0x45')]({'where':{'id':_0x1c48dd[_0xe064('0x43')]['id']}})[_0xe064('0x22')](handleEntityNotFound(_0x1661f9,null))['then'](removeEntity(_0x1661f9,null))[_0xe064('0x46')](handleError(_0x1661f9,null));};exports[_0xe064('0x49')]=function(_0x3a9f36,_0x3d5e99,_0x1085e0){var _0x49677a={};var _0x31e5fa={};var _0x2fa851;var _0x19a506;return db[_0xe064('0x2a')][_0xe064('0x4a')]({'where':{'id':_0x3a9f36[_0xe064('0x43')]['id']}})[_0xe064('0x22')](handleEntityNotFound(_0x3d5e99,null))[_0xe064('0x22')](function(_0x4bdad7){if(_0x4bdad7){_0x2fa851=_0x4bdad7;_0x31e5fa['model']=_[_0xe064('0x2f')](db['FreshsalesConfiguration'][_0xe064('0x44')]);_0x31e5fa[_0xe064('0x2e')]=_[_0xe064('0x2f')](_0x3a9f36['query']);_0x31e5fa[_0xe064('0x30')]=_[_0xe064('0x31')](_0x31e5fa[_0xe064('0x2d')],_0x31e5fa[_0xe064('0x2e')]);_0x49677a['attributes']=_['intersection'](_0x31e5fa[_0xe064('0x2d')],qs[_0xe064('0x33')](_0x3a9f36[_0xe064('0x2e')][_0xe064('0x33')]));_0x49677a['attributes']=_0x49677a[_0xe064('0x32')][_0xe064('0x34')]?_0x49677a[_0xe064('0x32')]:_0x31e5fa['model'];_0x49677a[_0xe064('0x4b')]=qs[_0xe064('0x37')](_0x3a9f36[_0xe064('0x2e')][_0xe064('0x37')]);_0x49677a[_0xe064('0x38')]=qs[_0xe064('0x30')](_[_0xe064('0x39')](_0x3a9f36[_0xe064('0x2e')],_0x31e5fa[_0xe064('0x30')]));if(_0x3a9f36[_0xe064('0x2e')][_0xe064('0x3a')]){_0x49677a[_0xe064('0x38')]=_[_0xe064('0x3c')](_0x49677a[_0xe064('0x38')],{'$or':_[_0xe064('0x29')](_0x49677a[_0xe064('0x32')],function(_0x317c4a){var _0x3c403e={};_0x3c403e[_0x317c4a]={'$like':'%'+_0x3a9f36['query'][_0xe064('0x3a')]+'%'};return _0x3c403e;})});}_0x49677a=_[_0xe064('0x3c')]({},_0x49677a,_0x3a9f36[_0xe064('0x3d')]);return _0x2fa851[_0xe064('0x49')](_0x49677a);}})[_0xe064('0x22')](function(_0xb34c51){if(_0xb34c51){_0x19a506=_0xb34c51[_0xe064('0x34')];if(!_0x3a9f36[_0xe064('0x2e')][_0xe064('0x35')](_0xe064('0x36'))){_0x49677a[_0xe064('0x1c')]=qs[_0xe064('0x1c')](_0x3a9f36['query'][_0xe064('0x1c')]);_0x49677a[_0xe064('0x1b')]=qs[_0xe064('0x1b')](_0x3a9f36['query'][_0xe064('0x1b')]);}return _0x2fa851[_0xe064('0x49')](_0x49677a);}})[_0xe064('0x22')](function(_0x1bb24f){if(_0x1bb24f){return _0x1bb24f?{'count':_0x19a506,'rows':_0x1bb24f}:null;}})['then'](respondWithResult(_0x3d5e99,null))[_0xe064('0x46')](handleError(_0x3d5e99,null));};exports[_0xe064('0x4c')]=function(_0x40df02,_0x48486b,_0x19337e){if(_0x40df02[_0xe064('0x48')]['id']){delete _0x40df02[_0xe064('0x48')]['id'];}return db[_0xe064('0x2a')]['findOne']({'where':{'id':_0x40df02[_0xe064('0x43')]['id']}})[_0xe064('0x22')](handleEntityNotFound(_0x48486b,null))[_0xe064('0x22')](function(_0x530bda){if(_0x530bda){_0x40df02[_0xe064('0x48')]['AccountId']=_0x530bda['id'];_0x40df02['body'][_0xe064('0x4d')]=integrations['getSubjects'](_0x40df02[_0xe064('0x48')][_0xe064('0x4e')],_0x40df02[_0xe064('0x48')][_0xe064('0x2c')]);_0x40df02['body'][_0xe064('0x4f')]=integrations[_0xe064('0x50')](_0x40df02[_0xe064('0x48')][_0xe064('0x4e')],_0x40df02[_0xe064('0x48')]['type']);return db[_0xe064('0x51')][_0xe064('0x47')](_0x40df02['body'],{'include':[{'model':db[_0xe064('0x52')],'as':_0xe064('0x4d')},{'model':db[_0xe064('0x52')],'as':_0xe064('0x4f')}]});}return null;})['then'](respondWithResult(_0x48486b,null))[_0xe064('0x46')](handleError(_0x48486b,null));};exports[_0xe064('0x53')]=function(_0x3b5995,_0x324b51,_0xccaef){var _0x2ce185='';var _0x43b54e='';return db['FreshsalesAccount'][_0xe064('0x4a')]({'where':{'id':_0x3b5995[_0xe064('0x43')]['id']},'attributes':['id',_0xe064('0x54'),_0xe064('0x55'),_0xe064('0x56')]})['then'](handleEntityNotFound(_0x324b51,null))[_0xe064('0x22')](function(_0x31b0f4){if(_0x31b0f4){_0x43b54e=_0x31b0f4[_0xe064('0x54')];_0x2ce185=_0x31b0f4[_0xe064('0x55')];var _0x55ba51=_0x31b0f4[_0xe064('0x55')]['slice'](-0x1);if(_0x55ba51==='/'){_0x2ce185=_0x2ce185[_0xe064('0x57')](0x0,_0x2ce185['lastIndexOf'](_0x55ba51));}return rp({'method':'GET','uri':util[_0xe064('0x58')](_0xe064('0x59'),_0x2ce185,_0xe064('0x5a')),'headers':{'Authorization':_0xe064('0x5b')+_0x31b0f4[_0xe064('0x56')]},'json':!![]});}})[_0xe064('0x22')](function(_0x115678){if(_0x115678){var _0x50dbe8=_0x115678[_0xe064('0x5c')];var _0x4ee0fd=![];var _0x6e0dc1=null;for(_0x6e0dc1=0x0;_0x6e0dc1<_0x50dbe8['length'];_0x6e0dc1++){if(_0x50dbe8[_0x6e0dc1][_0xe064('0x5d')]===_0x43b54e){_0x4ee0fd=!![];}}if(_0x4ee0fd){return!![];}else{throw new Error({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}})[_0xe064('0x22')](respondWithResult(_0x324b51,null))['catch'](function(_0x432f99){var _0x4f2b92=_0x3b5995['query'][_0xe064('0x5e')]?0x1f4:_0x432f99[_0xe064('0x5f')]||0x1f4;logger[_0xe064('0x25')](_0xe064('0x60'),_0xe064('0x53'),_0x4f2b92,JSON[_0xe064('0x61')](_0x432f99));delete _0x432f99[_0xe064('0x27')];if(_0x4f2b92===0x191){_0x4f2b92=0x190;}_0x324b51[_0xe064('0x19')](_0x4f2b92)['send'](_0x3b5995[_0xe064('0x2e')][_0xe064('0x5e')]?{'message':_0xe064('0x62'),'statusCode':_0x432f99[_0xe064('0x5f')]}:_0x432f99);});};
\ No newline at end of file
+var _0xe351=['filters','pick','filter','merge','VIRTUAL','options','where','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body','FreshsalesConfiguration','order','getConfigurations','hasOwnProperty','addConfiguration','findOne','AccountId','getSubjects','Descriptions','getDescriptions','channel','FreshsalesField','Subjects','getFields','username','remoteUri','apiKey','slice','GET','%s%s','users','length','email','Requested\x20Resource\x20not\x20Found','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','count','offset','limit','Content-Range','apply','reject','then','destroy','error','stack','name','send','map','FreshsalesAccount','rawAttributes','fieldName','type','key','model','keys','query','attributes','fields','nolimit','sort'];(function(_0x25fcf6,_0x526969){var _0x2f62a1=function(_0x2c4d1d){while(--_0x2c4d1d){_0x25fcf6['push'](_0x25fcf6['shift']());}};_0x2f62a1(++_0x526969);}(_0xe351,0x92));var _0x1e35=function(_0x50c958,_0x543114){_0x50c958=_0x50c958-0x0;var _0x5046f0=_0xe351[_0x50c958];return _0x5046f0;};'use strict';var emlformat=require(_0x1e35('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1e35('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1e35('0x2'));var moment=require(_0x1e35('0x3'));var BPromise=require(_0x1e35('0x4'));var Mustache=require(_0x1e35('0x5'));var util=require(_0x1e35('0x6'));var path=require(_0x1e35('0x7'));var sox=require(_0x1e35('0x8'));var csv=require(_0x1e35('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1e35('0xa'));var _=require(_0x1e35('0xb'));var squel=require(_0x1e35('0xc'));var crypto=require('crypto');var jsforce=require(_0x1e35('0xd'));var deskjs=require(_0x1e35('0xe'));var toCsv=require(_0x1e35('0x9'));var querystring=require('querystring');var Papa=require(_0x1e35('0xf'));var Redis=require(_0x1e35('0x10'));var authService=require(_0x1e35('0x11'));var qs=require(_0x1e35('0x12'));var as=require(_0x1e35('0x13'));var hardwareService=require(_0x1e35('0x14'));var logger=require(_0x1e35('0x15'))('api');var utils=require(_0x1e35('0x16'));var config=require(_0x1e35('0x17'));var licenseUtil=require(_0x1e35('0x18'));var db=require(_0x1e35('0x19'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x57b735,_0x41f7fc){_0x41f7fc=_0x41f7fc||0xcc;return function(_0x1121ad){if(_0x1121ad){return _0x57b735[_0x1e35('0x1a')](_0x41f7fc);}return _0x57b735['status'](_0x41f7fc)[_0x1e35('0x1b')]();};}function respondWithResult(_0x418113,_0x171dae){_0x171dae=_0x171dae||0xc8;return function(_0x43a0d4){if(_0x43a0d4){return _0x418113[_0x1e35('0x1c')](_0x171dae)[_0x1e35('0x1d')](_0x43a0d4);}};}function respondWithFilteredResult(_0x403662,_0x47d1ac){return function(_0x2229bb){if(_0x2229bb){var _0x34f7c6=typeof _0x47d1ac['offset']===_0x1e35('0x1e')&&typeof _0x47d1ac['limit']===_0x1e35('0x1e');var _0x414a19=_0x2229bb[_0x1e35('0x1f')];var _0x119266=_0x34f7c6?0x0:_0x47d1ac['offset'];var _0x5fd552=_0x34f7c6?_0x2229bb[_0x1e35('0x1f')]:_0x47d1ac[_0x1e35('0x20')]+_0x47d1ac[_0x1e35('0x21')];var _0x40d6ed;if(_0x5fd552>=_0x414a19){_0x5fd552=_0x414a19;_0x40d6ed=0xc8;}else{_0x40d6ed=0xce;}_0x403662['status'](_0x40d6ed);return _0x403662['set'](_0x1e35('0x22'),_0x119266+'-'+_0x5fd552+'/'+_0x414a19)[_0x1e35('0x1d')](_0x2229bb);}return null;};}function patchUpdates(_0x684217){return function(_0x5c195e){try{jsonpatch[_0x1e35('0x23')](_0x5c195e,_0x684217,!![]);}catch(_0x3477d0){return BPromise[_0x1e35('0x24')](_0x3477d0);}return _0x5c195e['save']();};}function saveUpdates(_0x213963,_0x15de3e){return function(_0x5e5106){if(_0x5e5106){return _0x5e5106['update'](_0x213963)[_0x1e35('0x25')](function(_0x30e36f){return _0x30e36f;});}return null;};}function removeEntity(_0x18a20e,_0x151265){return function(_0x4faf53){if(_0x4faf53){return _0x4faf53[_0x1e35('0x26')]()[_0x1e35('0x25')](function(){_0x18a20e[_0x1e35('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41a1fb,_0x2d7974){return function(_0x4c432f){if(!_0x4c432f){_0x41a1fb[_0x1e35('0x1a')](0x194);}return _0x4c432f;};}function handleError(_0x54f974,_0x2a5ba8){_0x2a5ba8=_0x2a5ba8||0x1f4;return function(_0x514b3c){logger[_0x1e35('0x27')](_0x514b3c[_0x1e35('0x28')]);if(_0x514b3c[_0x1e35('0x29')]){delete _0x514b3c[_0x1e35('0x29')];}_0x54f974[_0x1e35('0x1c')](_0x2a5ba8)[_0x1e35('0x2a')](_0x514b3c);};}exports['index']=function(_0x4da2b7,_0xaf4c88){var _0x30b785={},_0x352967={},_0xafb578={'count':0x0,'rows':[]};var _0x252f82=_[_0x1e35('0x2b')](db[_0x1e35('0x2c')][_0x1e35('0x2d')],function(_0x1bda71){return{'name':_0x1bda71[_0x1e35('0x2e')],'type':_0x1bda71[_0x1e35('0x2f')][_0x1e35('0x30')]};});_0x352967[_0x1e35('0x31')]=_[_0x1e35('0x2b')](_0x252f82,_0x1e35('0x29'));_0x352967['query']=_[_0x1e35('0x32')](_0x4da2b7[_0x1e35('0x33')]);_0x352967['filters']=_['intersection'](_0x352967[_0x1e35('0x31')],_0x352967['query']);_0x30b785[_0x1e35('0x34')]=_['intersection'](_0x352967[_0x1e35('0x31')],qs['fields'](_0x4da2b7[_0x1e35('0x33')][_0x1e35('0x35')]));_0x30b785['attributes']=_0x30b785[_0x1e35('0x34')]['length']?_0x30b785[_0x1e35('0x34')]:_0x352967[_0x1e35('0x31')];if(!_0x4da2b7['query']['hasOwnProperty'](_0x1e35('0x36'))){_0x30b785[_0x1e35('0x21')]=qs[_0x1e35('0x21')](_0x4da2b7['query'][_0x1e35('0x21')]);_0x30b785[_0x1e35('0x20')]=qs[_0x1e35('0x20')](_0x4da2b7[_0x1e35('0x33')]['offset']);}_0x30b785['order']=qs['sort'](_0x4da2b7[_0x1e35('0x33')][_0x1e35('0x37')]);_0x30b785['where']=qs[_0x1e35('0x38')](_[_0x1e35('0x39')](_0x4da2b7[_0x1e35('0x33')],_0x352967[_0x1e35('0x38')]),_0x252f82);if(_0x4da2b7['query'][_0x1e35('0x3a')]){_0x30b785['where']=_[_0x1e35('0x3b')](_0x30b785['where'],{'$or':_[_0x1e35('0x2b')](_0x252f82,function(_0x5a531b){if(_0x5a531b[_0x1e35('0x2f')]!==_0x1e35('0x3c')){var _0x511926={};_0x511926[_0x5a531b['name']]={'$like':'%'+_0x4da2b7[_0x1e35('0x33')]['filter']+'%'};return _0x511926;}})});}_0x30b785=_['merge']({},_0x30b785,_0x4da2b7[_0x1e35('0x3d')]);var _0x5e51b1={'where':_0x30b785[_0x1e35('0x3e')]};return db['FreshsalesAccount']['count'](_0x5e51b1)[_0x1e35('0x25')](function(_0x86bf4d){_0xafb578[_0x1e35('0x1f')]=_0x86bf4d;if(_0x4da2b7[_0x1e35('0x33')][_0x1e35('0x3f')]){_0x30b785[_0x1e35('0x40')]=[{'all':!![]}];}return db['FreshsalesAccount'][_0x1e35('0x41')](_0x30b785);})[_0x1e35('0x25')](function(_0x56428e){_0xafb578[_0x1e35('0x42')]=_0x56428e;return _0xafb578;})[_0x1e35('0x25')](respondWithFilteredResult(_0xaf4c88,_0x30b785))[_0x1e35('0x43')](handleError(_0xaf4c88,null));};exports[_0x1e35('0x44')]=function(_0x49db13,_0x2c1ebb){var _0xb7ab85={'raw':![],'where':{'id':_0x49db13[_0x1e35('0x45')]['id']}},_0x54604e={};_0x54604e[_0x1e35('0x31')]=_['keys'](db[_0x1e35('0x2c')][_0x1e35('0x2d')]);_0x54604e[_0x1e35('0x33')]=_[_0x1e35('0x32')](_0x49db13[_0x1e35('0x33')]);_0x54604e['filters']=_[_0x1e35('0x46')](_0x54604e[_0x1e35('0x31')],_0x54604e[_0x1e35('0x33')]);_0xb7ab85[_0x1e35('0x34')]=_[_0x1e35('0x46')](_0x54604e[_0x1e35('0x31')],qs[_0x1e35('0x35')](_0x49db13[_0x1e35('0x33')]['fields']));_0xb7ab85[_0x1e35('0x34')]=_0xb7ab85[_0x1e35('0x34')]['length']?_0xb7ab85[_0x1e35('0x34')]:_0x54604e[_0x1e35('0x31')];if(_0x49db13['query']['includeAll']){_0xb7ab85[_0x1e35('0x40')]=[{'all':!![]}];}_0xb7ab85=_[_0x1e35('0x3b')]({},_0xb7ab85,_0x49db13['options']);return db['FreshsalesAccount'][_0x1e35('0x47')](_0xb7ab85)['then'](handleEntityNotFound(_0x2c1ebb,null))[_0x1e35('0x25')](respondWithResult(_0x2c1ebb,null))['catch'](handleError(_0x2c1ebb,null));};exports[_0x1e35('0x48')]=function(_0x1f5a5f,_0x3579ad){return db[_0x1e35('0x2c')][_0x1e35('0x48')](_0x1f5a5f[_0x1e35('0x49')],{})[_0x1e35('0x25')](respondWithResult(_0x3579ad,0xc9))[_0x1e35('0x43')](handleError(_0x3579ad,null));};exports['update']=function(_0x215d81,_0x1ffc66){if(_0x215d81[_0x1e35('0x49')]['id']){delete _0x215d81[_0x1e35('0x49')]['id'];}return db[_0x1e35('0x2c')][_0x1e35('0x47')]({'where':{'id':_0x215d81[_0x1e35('0x45')]['id']}})[_0x1e35('0x25')](handleEntityNotFound(_0x1ffc66,null))['then'](saveUpdates(_0x215d81['body'],null))[_0x1e35('0x25')](respondWithResult(_0x1ffc66,null))['catch'](handleError(_0x1ffc66,null));};exports[_0x1e35('0x26')]=function(_0x440e95,_0x1f3cbc){return db[_0x1e35('0x2c')][_0x1e35('0x47')]({'where':{'id':_0x440e95[_0x1e35('0x45')]['id']}})[_0x1e35('0x25')](handleEntityNotFound(_0x1f3cbc,null))[_0x1e35('0x25')](removeEntity(_0x1f3cbc,null))[_0x1e35('0x43')](handleError(_0x1f3cbc,null));};exports['getConfigurations']=function(_0x2e54d1,_0x10f0f1,_0x570317){var _0xadcf3c={};var _0x17ec5b={};var _0x4f0568;var _0x5b477c;return db[_0x1e35('0x2c')]['findOne']({'where':{'id':_0x2e54d1[_0x1e35('0x45')]['id']}})[_0x1e35('0x25')](handleEntityNotFound(_0x10f0f1,null))[_0x1e35('0x25')](function(_0x346fb1){if(_0x346fb1){_0x4f0568=_0x346fb1;_0x17ec5b[_0x1e35('0x31')]=_[_0x1e35('0x32')](db[_0x1e35('0x4a')][_0x1e35('0x2d')]);_0x17ec5b['query']=_[_0x1e35('0x32')](_0x2e54d1[_0x1e35('0x33')]);_0x17ec5b['filters']=_[_0x1e35('0x46')](_0x17ec5b[_0x1e35('0x31')],_0x17ec5b[_0x1e35('0x33')]);_0xadcf3c[_0x1e35('0x34')]=_[_0x1e35('0x46')](_0x17ec5b['model'],qs[_0x1e35('0x35')](_0x2e54d1[_0x1e35('0x33')]['fields']));_0xadcf3c[_0x1e35('0x34')]=_0xadcf3c['attributes']['length']?_0xadcf3c[_0x1e35('0x34')]:_0x17ec5b[_0x1e35('0x31')];_0xadcf3c[_0x1e35('0x4b')]=qs[_0x1e35('0x37')](_0x2e54d1['query']['sort']);_0xadcf3c['where']=qs[_0x1e35('0x38')](_[_0x1e35('0x39')](_0x2e54d1[_0x1e35('0x33')],_0x17ec5b[_0x1e35('0x38')]));if(_0x2e54d1[_0x1e35('0x33')][_0x1e35('0x3a')]){_0xadcf3c[_0x1e35('0x3e')]=_['merge'](_0xadcf3c[_0x1e35('0x3e')],{'$or':_[_0x1e35('0x2b')](_0xadcf3c['attributes'],function(_0x4d875e){var _0x4b4d2d={};_0x4b4d2d[_0x4d875e]={'$like':'%'+_0x2e54d1['query'][_0x1e35('0x3a')]+'%'};return _0x4b4d2d;})});}_0xadcf3c=_[_0x1e35('0x3b')]({},_0xadcf3c,_0x2e54d1[_0x1e35('0x3d')]);return _0x4f0568[_0x1e35('0x4c')](_0xadcf3c);}})[_0x1e35('0x25')](function(_0x57d32b){if(_0x57d32b){_0x5b477c=_0x57d32b['length'];if(!_0x2e54d1[_0x1e35('0x33')][_0x1e35('0x4d')](_0x1e35('0x36'))){_0xadcf3c[_0x1e35('0x21')]=qs[_0x1e35('0x21')](_0x2e54d1[_0x1e35('0x33')][_0x1e35('0x21')]);_0xadcf3c[_0x1e35('0x20')]=qs[_0x1e35('0x20')](_0x2e54d1[_0x1e35('0x33')][_0x1e35('0x20')]);}return _0x4f0568[_0x1e35('0x4c')](_0xadcf3c);}})[_0x1e35('0x25')](function(_0x230f97){if(_0x230f97){return _0x230f97?{'count':_0x5b477c,'rows':_0x230f97}:null;}})[_0x1e35('0x25')](respondWithResult(_0x10f0f1,null))[_0x1e35('0x43')](handleError(_0x10f0f1,null));};exports[_0x1e35('0x4e')]=function(_0x406de5,_0x54a5be,_0x214916){if(_0x406de5[_0x1e35('0x49')]['id']){delete _0x406de5['body']['id'];}return db[_0x1e35('0x2c')][_0x1e35('0x4f')]({'where':{'id':_0x406de5['params']['id']}})[_0x1e35('0x25')](handleEntityNotFound(_0x54a5be,null))[_0x1e35('0x25')](function(_0x1703ef){if(_0x1703ef){_0x406de5['body'][_0x1e35('0x50')]=_0x1703ef['id'];_0x406de5[_0x1e35('0x49')]['Subjects']=integrations[_0x1e35('0x51')](_0x406de5[_0x1e35('0x49')]['channel'],_0x406de5['body']['type']);_0x406de5[_0x1e35('0x49')][_0x1e35('0x52')]=integrations[_0x1e35('0x53')](_0x406de5[_0x1e35('0x49')][_0x1e35('0x54')],_0x406de5[_0x1e35('0x49')]['type']);return db['FreshsalesConfiguration'][_0x1e35('0x48')](_0x406de5[_0x1e35('0x49')],{'include':[{'model':db[_0x1e35('0x55')],'as':_0x1e35('0x56')},{'model':db['FreshsalesField'],'as':_0x1e35('0x52')}]});}return null;})[_0x1e35('0x25')](respondWithResult(_0x54a5be,null))[_0x1e35('0x43')](handleError(_0x54a5be,null));};exports[_0x1e35('0x57')]=function(_0x15a641,_0xc63c7c,_0x375e8e){var _0x22062b='';var _0x53e3a2='';return db[_0x1e35('0x2c')][_0x1e35('0x4f')]({'where':{'id':_0x15a641['params']['id']},'attributes':['id',_0x1e35('0x58'),_0x1e35('0x59'),_0x1e35('0x5a')]})['then'](handleEntityNotFound(_0xc63c7c,null))[_0x1e35('0x25')](function(_0x53c320){if(_0x53c320){_0x53e3a2=_0x53c320[_0x1e35('0x58')];_0x22062b=_0x53c320[_0x1e35('0x59')];var _0x1d152b=_0x53c320[_0x1e35('0x59')][_0x1e35('0x5b')](-0x1);if(_0x1d152b==='/'){_0x22062b=_0x22062b['substring'](0x0,_0x22062b['lastIndexOf'](_0x1d152b));}return rp({'method':_0x1e35('0x5c'),'uri':util['format'](_0x1e35('0x5d'),_0x22062b,'/api/selector/owners'),'headers':{'Authorization':'Token\x20token='+_0x53c320['apiKey']},'json':!![]});}})[_0x1e35('0x25')](function(_0x2bdb53){if(_0x2bdb53){var _0x2f8443=_0x2bdb53[_0x1e35('0x5e')];var _0x3e9e0c=![];var _0x432d80=null;for(_0x432d80=0x0;_0x432d80<_0x2f8443[_0x1e35('0x5f')];_0x432d80++){if(_0x2f8443[_0x432d80][_0x1e35('0x60')]===_0x53e3a2){_0x3e9e0c=!![];}}if(_0x3e9e0c){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x1e35('0x61')});}}})['then'](respondWithResult(_0xc63c7c,null))['catch'](function(_0x3250a9){var _0x2158a9=_0x15a641[_0x1e35('0x33')][_0x1e35('0x62')]?0x1f4:_0x3250a9[_0x1e35('0x63')]||0x1f4;logger[_0x1e35('0x27')](_0x1e35('0x64'),_0x1e35('0x57'),_0x2158a9,JSON['stringify'](_0x3250a9));delete _0x3250a9[_0x1e35('0x29')];if(_0x2158a9===0x191){_0x2158a9=0x190;}_0xc63c7c[_0x1e35('0x1c')](_0x2158a9)['send'](_0x15a641[_0x1e35('0x33')][_0x1e35('0x62')]?{'message':'Wrong\x20credentials','statusCode':_0x3250a9['statusCode']}:_0x3250a9);});};
\ No newline at end of file
index a04d0c5..39af70f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcf0=['lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','int_freshsales_accounts'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0xfcf0,0x138));var _0x0fcf=function(_0x3d2d6f,_0x368872){_0x3d2d6f=_0x3d2d6f-0x0;var _0x5c0022=_0xfcf0[_0x3d2d6f];return _0x5c0022;};'use strict';var _=require(_0x0fcf('0x0'));var util=require(_0x0fcf('0x1'));var logger=require('../../config/logger')(_0x0fcf('0x2'));var moment=require(_0x0fcf('0x3'));var BPromise=require(_0x0fcf('0x4'));var rp=require(_0x0fcf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0fcf('0x6'));var config=require(_0x0fcf('0x7'));var attributes=require(_0x0fcf('0x8'));var integrations=require(_0x0fcf('0x9'));module[_0x0fcf('0xa')]=function(_0x1a7b03,_0x61bbb9){return _0x1a7b03[_0x0fcf('0xb')]('FreshsalesAccount',attributes,{'tableName':_0x0fcf('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4aa=['bluebird','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','FreshsalesAccount','lodash','util','../../config/logger','api','moment'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0xc4aa[_0x2235bf];return _0x4c3a64;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));var integrations=require(_0xac4a('0x8'));module[_0xac4a('0x9')]=function(_0x96be2b,_0x15cd34){return _0x96be2b[_0xac4a('0xa')](_0xac4a('0xb'),attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ed41c3a..be445ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1893=['request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','attributes','include','map','model','catch','ShowFreshsalesAccount','find','then','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','FreshsalesAccount,\x20%s,\x20%s'];(function(_0xbb2ac6,_0xda29c9){var _0x13dc19=function(_0x14e40f){while(--_0x14e40f){_0xbb2ac6['push'](_0xbb2ac6['shift']());}};_0x13dc19(++_0xda29c9);}(_0x1893,0xa2));var _0x3189=function(_0x503d48,_0x42e5a9){_0x503d48=_0x503d48-0x0;var _0x59743e=_0x1893[_0x503d48];return _0x59743e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3189('0x0'));var BPromise=require(_0x3189('0x1'));var rs=require(_0x3189('0x2'));var fs=require('fs');var Redis=require(_0x3189('0x3'));var db=require(_0x3189('0x4'))['db'];var utils=require(_0x3189('0x5'));var logger=require(_0x3189('0x6'))('rpc');var config=require(_0x3189('0x7'));var jayson=require(_0x3189('0x8'));var client=jayson[_0x3189('0x9')][_0x3189('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x77c566,_0x118970,_0x14d84b){return new BPromise(function(_0x1f6764,_0x5312a3){return client[_0x3189('0xb')](_0x77c566,_0x14d84b)['then'](function(_0x127449){logger['info'](_0x3189('0xc'),_0x118970,_0x3189('0xd'));logger[_0x3189('0xe')](_0x3189('0xf'),_0x118970,'request\x20sent',JSON[_0x3189('0x10')](_0x127449));if(_0x127449[_0x3189('0x11')]){if(_0x127449[_0x3189('0x11')][_0x3189('0x12')]===0x1f4){logger[_0x3189('0x11')]('FreshsalesAccount,\x20%s,\x20%s',_0x118970,_0x127449[_0x3189('0x11')][_0x3189('0x13')]);return _0x5312a3(_0x127449[_0x3189('0x11')][_0x3189('0x13')]);}logger[_0x3189('0x11')](_0x3189('0xc'),_0x118970,_0x127449[_0x3189('0x11')][_0x3189('0x13')]);return _0x1f6764(_0x127449['error'][_0x3189('0x13')]);}else{logger[_0x3189('0x14')](_0x3189('0xc'),_0x118970,_0x3189('0xd'));_0x1f6764(_0x127449['result'][_0x3189('0x13')]);}})['catch'](function(_0x55f432){logger[_0x3189('0x11')]('FreshsalesAccount,\x20%s,\x20%s',_0x118970,_0x55f432);_0x5312a3(_0x55f432);});});}exports[_0x3189('0x15')]=function(_0xf8aed7){var _0x22c7ba=this;return new Promise(function(_0x9905c4,_0x4c4d9b){return db[_0x3189('0x16')][_0x3189('0x17')]({'raw':_0xf8aed7[_0x3189('0x18')]?_0xf8aed7['options'][_0x3189('0x19')]===undefined?!![]:![]:!![],'where':_0xf8aed7[_0x3189('0x18')]?_0xf8aed7[_0x3189('0x18')][_0x3189('0x1a')]||null:null,'attributes':_0xf8aed7[_0x3189('0x18')]?_0xf8aed7['options'][_0x3189('0x1b')]||null:null,'limit':_0xf8aed7[_0x3189('0x18')]?_0xf8aed7[_0x3189('0x18')]['limit']||null:null,'include':_0xf8aed7[_0x3189('0x18')]?_0xf8aed7['options'][_0x3189('0x1c')]?_[_0x3189('0x1d')](_0xf8aed7[_0x3189('0x18')][_0x3189('0x1c')],function(_0x1cbe33){return{'model':db[_0x1cbe33[_0x3189('0x1e')]],'as':_0x1cbe33['as'],'attributes':_0x1cbe33['attributes'],'include':_0x1cbe33['include']?_[_0x3189('0x1d')](_0x1cbe33[_0x3189('0x1c')],function(_0x1dc1c8){return{'model':db[_0x1dc1c8[_0x3189('0x1e')]],'as':_0x1dc1c8['as'],'attributes':_0x1dc1c8[_0x3189('0x1b')],'include':_0x1dc1c8[_0x3189('0x1c')]?_[_0x3189('0x1d')](_0x1dc1c8[_0x3189('0x1c')],function(_0x17b540){return{'model':db[_0x17b540[_0x3189('0x1e')]],'as':_0x17b540['as'],'attributes':_0x17b540['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5aa34a){logger[_0x3189('0x14')](_0x3189('0x15'),_0xf8aed7);logger[_0x3189('0xe')](_0x3189('0x15'),_0xf8aed7,JSON[_0x3189('0x10')](_0x5aa34a));_0x9905c4(_0x5aa34a);})[_0x3189('0x1f')](function(_0x4d453a){logger[_0x3189('0x11')](_0x3189('0x15'),_0x4d453a['message'],_0xf8aed7);_0x4c4d9b(_0x22c7ba[_0x3189('0x11')](0x1f4,_0x4d453a[_0x3189('0x13')]));});});};exports[_0x3189('0x20')]=function(_0x5c7a36){var _0x168dc2=this;return new Promise(function(_0x32bba1,_0x23798e){return db['FreshsalesAccount'][_0x3189('0x21')]({'raw':_0x5c7a36[_0x3189('0x18')]?_0x5c7a36['options'][_0x3189('0x19')]===undefined?!![]:![]:!![],'where':_0x5c7a36[_0x3189('0x18')]?_0x5c7a36[_0x3189('0x18')][_0x3189('0x1a')]||null:null,'attributes':_0x5c7a36[_0x3189('0x18')]?_0x5c7a36['options']['attributes']||null:null,'include':_0x5c7a36[_0x3189('0x18')]?_0x5c7a36['options'][_0x3189('0x1c')]?_[_0x3189('0x1d')](_0x5c7a36[_0x3189('0x18')][_0x3189('0x1c')],function(_0x231d72){return{'model':db[_0x231d72[_0x3189('0x1e')]],'as':_0x231d72['as'],'attributes':_0x231d72[_0x3189('0x1b')],'include':_0x231d72[_0x3189('0x1c')]?_[_0x3189('0x1d')](_0x231d72['include'],function(_0x453e4b){return{'model':db[_0x453e4b[_0x3189('0x1e')]],'as':_0x453e4b['as'],'attributes':_0x453e4b[_0x3189('0x1b')],'include':_0x453e4b[_0x3189('0x1c')]?_[_0x3189('0x1d')](_0x453e4b[_0x3189('0x1c')],function(_0xd1ee0){return{'model':db[_0xd1ee0['model']],'as':_0xd1ee0['as'],'attributes':_0xd1ee0['attributes']};}):[]};}):[]};}):[]:[]})[_0x3189('0x22')](function(_0x580064){logger[_0x3189('0x14')](_0x3189('0x20'),_0x5c7a36);logger['debug'](_0x3189('0x20'),_0x5c7a36,JSON[_0x3189('0x10')](_0x580064));_0x32bba1(_0x580064);})[_0x3189('0x1f')](function(_0x254135){logger['error'](_0x3189('0x20'),_0x254135['message'],_0x5c7a36);_0x23798e(_0x168dc2['error'](0x1f4,_0x254135[_0x3189('0x13')]));});});};
\ No newline at end of file
+var _0x77d4=['util','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','ShowFreshsalesAccount','find'];(function(_0x1abbd1,_0x26581f){var _0x41a7f2=function(_0x3e8820){while(--_0x3e8820){_0x1abbd1['push'](_0x1abbd1['shift']());}};_0x41a7f2(++_0x26581f);}(_0x77d4,0x108));var _0x477d=function(_0x1badb1,_0x375ec6){_0x1badb1=_0x1badb1-0x0;var _0x260dae=_0x77d4[_0x1badb1];return _0x260dae;};'use strict';var _=require('lodash');var util=require(_0x477d('0x0'));var moment=require('moment');var BPromise=require(_0x477d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x477d('0x2'));var db=require(_0x477d('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x477d('0x4'));var config=require(_0x477d('0x5'));var jayson=require(_0x477d('0x6'));var client=jayson[_0x477d('0x7')][_0x477d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x45ca2d,_0x5153df,_0x4f4fb4){return new BPromise(function(_0x2dd5d2,_0x579859){return client['request'](_0x45ca2d,_0x4f4fb4)[_0x477d('0x9')](function(_0x29f11b){logger[_0x477d('0xa')](_0x477d('0xb'),_0x5153df,_0x477d('0xc'));logger['debug'](_0x477d('0xd'),_0x5153df,'request\x20sent',JSON[_0x477d('0xe')](_0x29f11b));if(_0x29f11b[_0x477d('0xf')]){if(_0x29f11b['error'][_0x477d('0x10')]===0x1f4){logger[_0x477d('0xf')]('FreshsalesAccount,\x20%s,\x20%s',_0x5153df,_0x29f11b['error'][_0x477d('0x11')]);return _0x579859(_0x29f11b[_0x477d('0xf')]['message']);}logger[_0x477d('0xf')](_0x477d('0xb'),_0x5153df,_0x29f11b['error']['message']);return _0x2dd5d2(_0x29f11b[_0x477d('0xf')]['message']);}else{logger[_0x477d('0xa')](_0x477d('0xb'),_0x5153df,_0x477d('0xc'));_0x2dd5d2(_0x29f11b['result'][_0x477d('0x11')]);}})[_0x477d('0x12')](function(_0x29c6f8){logger[_0x477d('0xf')]('FreshsalesAccount,\x20%s,\x20%s',_0x5153df,_0x29c6f8);_0x579859(_0x29c6f8);});});}exports[_0x477d('0x13')]=function(_0x5d5553){var _0x367965=this;return new Promise(function(_0x1399d7,_0x159beb){return db[_0x477d('0x14')][_0x477d('0x15')]({'raw':_0x5d5553[_0x477d('0x16')]?_0x5d5553['options'][_0x477d('0x17')]===undefined?!![]:![]:!![],'where':_0x5d5553['options']?_0x5d5553[_0x477d('0x16')][_0x477d('0x18')]||null:null,'attributes':_0x5d5553[_0x477d('0x16')]?_0x5d5553[_0x477d('0x16')][_0x477d('0x19')]||null:null,'limit':_0x5d5553[_0x477d('0x16')]?_0x5d5553[_0x477d('0x16')][_0x477d('0x1a')]||null:null,'include':_0x5d5553[_0x477d('0x16')]?_0x5d5553[_0x477d('0x16')][_0x477d('0x1b')]?_[_0x477d('0x1c')](_0x5d5553[_0x477d('0x16')][_0x477d('0x1b')],function(_0x4e6a44){return{'model':db[_0x4e6a44[_0x477d('0x1d')]],'as':_0x4e6a44['as'],'attributes':_0x4e6a44['attributes'],'include':_0x4e6a44[_0x477d('0x1b')]?_[_0x477d('0x1c')](_0x4e6a44[_0x477d('0x1b')],function(_0x2287b4){return{'model':db[_0x2287b4['model']],'as':_0x2287b4['as'],'attributes':_0x2287b4[_0x477d('0x19')],'include':_0x2287b4[_0x477d('0x1b')]?_[_0x477d('0x1c')](_0x2287b4['include'],function(_0x585648){return{'model':db[_0x585648[_0x477d('0x1d')]],'as':_0x585648['as'],'attributes':_0x585648[_0x477d('0x19')]};}):[]};}):[]};}):[]:[]})[_0x477d('0x9')](function(_0x5c8ef1){logger[_0x477d('0xa')](_0x477d('0x13'),_0x5d5553);logger[_0x477d('0x1e')](_0x477d('0x13'),_0x5d5553,JSON[_0x477d('0xe')](_0x5c8ef1));_0x1399d7(_0x5c8ef1);})['catch'](function(_0x2fc959){logger[_0x477d('0xf')](_0x477d('0x13'),_0x2fc959[_0x477d('0x11')],_0x5d5553);_0x159beb(_0x367965[_0x477d('0xf')](0x1f4,_0x2fc959[_0x477d('0x11')]));});});};exports[_0x477d('0x1f')]=function(_0x98b5d9){var _0x204541=this;return new Promise(function(_0x8fe6c4,_0x41b790){return db[_0x477d('0x14')][_0x477d('0x20')]({'raw':_0x98b5d9[_0x477d('0x16')]?_0x98b5d9[_0x477d('0x16')][_0x477d('0x17')]===undefined?!![]:![]:!![],'where':_0x98b5d9[_0x477d('0x16')]?_0x98b5d9[_0x477d('0x16')][_0x477d('0x18')]||null:null,'attributes':_0x98b5d9[_0x477d('0x16')]?_0x98b5d9['options'][_0x477d('0x19')]||null:null,'include':_0x98b5d9['options']?_0x98b5d9[_0x477d('0x16')][_0x477d('0x1b')]?_[_0x477d('0x1c')](_0x98b5d9['options'][_0x477d('0x1b')],function(_0x1201a9){return{'model':db[_0x1201a9[_0x477d('0x1d')]],'as':_0x1201a9['as'],'attributes':_0x1201a9[_0x477d('0x19')],'include':_0x1201a9[_0x477d('0x1b')]?_[_0x477d('0x1c')](_0x1201a9[_0x477d('0x1b')],function(_0xf84c4c){return{'model':db[_0xf84c4c[_0x477d('0x1d')]],'as':_0xf84c4c['as'],'attributes':_0xf84c4c[_0x477d('0x19')],'include':_0xf84c4c['include']?_[_0x477d('0x1c')](_0xf84c4c[_0x477d('0x1b')],function(_0xb41cd8){return{'model':db[_0xb41cd8['model']],'as':_0xb41cd8['as'],'attributes':_0xb41cd8[_0x477d('0x19')]};}):[]};}):[]};}):[]:[]})[_0x477d('0x9')](function(_0x1b0410){logger['info']('ShowFreshsalesAccount',_0x98b5d9);logger[_0x477d('0x1e')](_0x477d('0x1f'),_0x98b5d9,JSON[_0x477d('0xe')](_0x1b0410));_0x8fe6c4(_0x1b0410);})[_0x477d('0x12')](function(_0x1c0d86){logger['error'](_0x477d('0x1f'),_0x1c0d86['message'],_0x98b5d9);_0x41b790(_0x204541[_0x477d('0xf')](0x1f4,_0x1c0d86[_0x477d('0x11')]));});});};
\ No newline at end of file
index beffd17..2229232 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf7b=['update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','index','get','isAuthenticated','getSubjects','/:id/descriptions','/:id/fields','getFields','create','put'];(function(_0x3302c2,_0x4a60e5){var _0x258145=function(_0x30d0d0){while(--_0x30d0d0){_0x3302c2['push'](_0x3302c2['shift']());}};_0x258145(++_0x4a60e5);}(_0xaf7b,0xb3));var _0xbaf7=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xaf7b[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require('multer');var util=require(_0xbaf7('0x0'));var path=require(_0xbaf7('0x1'));var timeout=require(_0xbaf7('0x2'));var express=require(_0xbaf7('0x3'));var router=express[_0xbaf7('0x4')]();var fs_extra=require(_0xbaf7('0x5'));var auth=require(_0xbaf7('0x6'));var interaction=require(_0xbaf7('0x7'));var config=require(_0xbaf7('0x8'));var controller=require(_0xbaf7('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xbaf7('0xa')]);router[_0xbaf7('0xb')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xbaf7('0xb')]('/:id/subjects',auth[_0xbaf7('0xc')](),controller[_0xbaf7('0xd')]);router['get'](_0xbaf7('0xe'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0xbaf7('0xb')](_0xbaf7('0xf'),auth['isAuthenticated'](),controller[_0xbaf7('0x10')]);router['post']('/',auth[_0xbaf7('0xc')](),controller[_0xbaf7('0x11')]);router[_0xbaf7('0x12')]('/:id',auth[_0xbaf7('0xc')](),controller[_0xbaf7('0x13')]);router[_0xbaf7('0x14')]('/:id',auth[_0xbaf7('0xc')](),controller['destroy']);module[_0xbaf7('0x15')]=router;
\ No newline at end of file
+var _0x1432=['/:id/fields','getFields','post','create','update','delete','/:id','destroy','exports','multer','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','get','isAuthenticated','index','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions'];(function(_0x38255d,_0x42bc70){var _0x12680b=function(_0x31d06d){while(--_0x31d06d){_0x38255d['push'](_0x38255d['shift']());}};_0x12680b(++_0x42bc70);}(_0x1432,0x1e4));var _0x2143=function(_0x42bdad,_0x12836c){_0x42bdad=_0x42bdad-0x0;var _0x122626=_0x1432[_0x42bdad];return _0x122626;};'use strict';var multer=require(_0x2143('0x0'));var util=require(_0x2143('0x1'));var path=require(_0x2143('0x2'));var timeout=require('connect-timeout');var express=require(_0x2143('0x3'));var router=express['Router']();var fs_extra=require(_0x2143('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2143('0x5'));var config=require(_0x2143('0x6'));var controller=require(_0x2143('0x7'));router[_0x2143('0x8')]('/',auth[_0x2143('0x9')](),controller[_0x2143('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x2143('0xb')]);router[_0x2143('0x8')](_0x2143('0xc'),auth[_0x2143('0x9')](),controller[_0x2143('0xd')]);router['get'](_0x2143('0xe'),auth[_0x2143('0x9')](),controller[_0x2143('0xf')]);router[_0x2143('0x8')](_0x2143('0x10'),auth[_0x2143('0x9')](),controller[_0x2143('0x11')]);router[_0x2143('0x12')]('/',auth[_0x2143('0x9')](),controller[_0x2143('0x13')]);router['put']('/:id',auth[_0x2143('0x9')](),controller[_0x2143('0x14')]);router[_0x2143('0x15')](_0x2143('0x16'),auth['isAuthenticated'](),controller[_0x2143('0x17')]);module[_0x2143('0x18')]=router;
\ No newline at end of file
index fd34fc2..ef5f969 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2aaf=['STRING','exports'];(function(_0x43f20d,_0x8eaaef){var _0x5b0f9b=function(_0x4c3302){while(--_0x4c3302){_0x43f20d['push'](_0x43f20d['shift']());}};_0x5b0f9b(++_0x8eaaef);}(_0x2aaf,0x141));var _0xf2aa=function(_0xcf2cac,_0x3d74ae){_0xcf2cac=_0xcf2cac-0x0;var _0xe03eaf=_0x2aaf[_0xcf2cac];return _0xe03eaf;};'use strict';var Sequelize=require('sequelize');module[_0xf2aa('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xf2aa('0x1')]}};
\ No newline at end of file
+var _0xa409=['exports','STRING','sequelize'];(function(_0x3a207c,_0x35a0c8){var _0x5614a0=function(_0x41645a){while(--_0x41645a){_0x3a207c['push'](_0x3a207c['shift']());}};_0x5614a0(++_0x35a0c8);}(_0xa409,0x12b));var _0x9a40=function(_0x41248b,_0x47724b){_0x41248b=_0x41248b-0x0;var _0x30419f=_0xa409[_0x41248b];return _0x30419f;};'use strict';var Sequelize=require(_0x9a40('0x0'));module[_0x9a40('0x1')]={'name':{'type':Sequelize[_0x9a40('0x2')]},'description':{'type':Sequelize[_0x9a40('0x2')]}};
\ No newline at end of file
index fc8994a..78173e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6973=['then','destroy','end','error','stack','name','send','map','FreshsalesConfiguration','fieldName','key','query','keys','intersection','model','attributes','fields','hasOwnProperty','order','sort','filters','merge','type','VIRTUAL','filter','options','where','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','getSubjects','findOne','FreshsalesField','length','pick','nolimit','getDescriptions','getFields','eml-format','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update'];(function(_0x5550b3,_0x2d0ee0){var _0x4b8fc4=function(_0x22393a){while(--_0x22393a){_0x5550b3['push'](_0x5550b3['shift']());}};_0x4b8fc4(++_0x2d0ee0);}(_0x6973,0x17a));var _0x3697=function(_0x4b42b3,_0x287970){_0x4b42b3=_0x4b42b3-0x0;var _0x23dc19=_0x6973[_0x4b42b3];return _0x23dc19;};'use strict';var emlformat=require(_0x3697('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3697('0x1'));var jsonpatch=require(_0x3697('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3697('0x3'));var Mustache=require('mustache');var util=require(_0x3697('0x4'));var path=require(_0x3697('0x5'));var sox=require(_0x3697('0x6'));var csv=require(_0x3697('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3697('0x8'));var _=require('lodash');var squel=require(_0x3697('0x9'));var crypto=require('crypto');var jsforce=require(_0x3697('0xa'));var deskjs=require(_0x3697('0xb'));var toCsv=require(_0x3697('0x7'));var querystring=require(_0x3697('0xc'));var Papa=require(_0x3697('0xd'));var Redis=require(_0x3697('0xe'));var authService=require(_0x3697('0xf'));var qs=require(_0x3697('0x10'));var as=require(_0x3697('0x11'));var hardwareService=require(_0x3697('0x12'));var logger=require(_0x3697('0x13'))('api');var utils=require(_0x3697('0x14'));var config=require(_0x3697('0x15'));var licenseUtil=require(_0x3697('0x16'));var db=require(_0x3697('0x17'))['db'];function respondWithStatusCode(_0x3d7e5f,_0x3bd2cd){_0x3bd2cd=_0x3bd2cd||0xcc;return function(_0x31d00f){if(_0x31d00f){return _0x3d7e5f[_0x3697('0x18')](_0x3bd2cd);}return _0x3d7e5f['status'](_0x3bd2cd)['end']();};}function respondWithResult(_0x23eec9,_0x5f586a){_0x5f586a=_0x5f586a||0xc8;return function(_0x4740c1){if(_0x4740c1){return _0x23eec9[_0x3697('0x19')](_0x5f586a)[_0x3697('0x1a')](_0x4740c1);}};}function respondWithFilteredResult(_0x1435ba,_0x4fcce2){return function(_0x52f42c){if(_0x52f42c){var _0x1ee971=typeof _0x4fcce2[_0x3697('0x1b')]===_0x3697('0x1c')&&typeof _0x4fcce2[_0x3697('0x1d')]===_0x3697('0x1c');var _0x3c3c01=_0x52f42c[_0x3697('0x1e')];var _0x33043c=_0x1ee971?0x0:_0x4fcce2[_0x3697('0x1b')];var _0x40d17=_0x1ee971?_0x52f42c[_0x3697('0x1e')]:_0x4fcce2[_0x3697('0x1b')]+_0x4fcce2[_0x3697('0x1d')];var _0x4cb2ad;if(_0x40d17>=_0x3c3c01){_0x40d17=_0x3c3c01;_0x4cb2ad=0xc8;}else{_0x4cb2ad=0xce;}_0x1435ba['status'](_0x4cb2ad);return _0x1435ba[_0x3697('0x1f')](_0x3697('0x20'),_0x33043c+'-'+_0x40d17+'/'+_0x3c3c01)[_0x3697('0x1a')](_0x52f42c);}return null;};}function patchUpdates(_0x3c8419){return function(_0x5cac00){try{jsonpatch[_0x3697('0x21')](_0x5cac00,_0x3c8419,!![]);}catch(_0x31bc5d){return BPromise[_0x3697('0x22')](_0x31bc5d);}return _0x5cac00[_0x3697('0x23')]();};}function saveUpdates(_0x40918a,_0xb75054){return function(_0x7ec302){if(_0x7ec302){return _0x7ec302[_0x3697('0x24')](_0x40918a)[_0x3697('0x25')](function(_0x4c5ab){return _0x4c5ab;});}return null;};}function removeEntity(_0x186dea,_0x3b7088){return function(_0x4793ab){if(_0x4793ab){return _0x4793ab[_0x3697('0x26')]()['then'](function(){_0x186dea['status'](0xcc)[_0x3697('0x27')]();});}};}function handleEntityNotFound(_0xf8558,_0x187697){return function(_0x35ccb8){if(!_0x35ccb8){_0xf8558['sendStatus'](0x194);}return _0x35ccb8;};}function handleError(_0x2ccef1,_0x5f0f51){_0x5f0f51=_0x5f0f51||0x1f4;return function(_0x3b87a1){logger[_0x3697('0x28')](_0x3b87a1[_0x3697('0x29')]);if(_0x3b87a1[_0x3697('0x2a')]){delete _0x3b87a1[_0x3697('0x2a')];}_0x2ccef1['status'](_0x5f0f51)[_0x3697('0x2b')](_0x3b87a1);};}exports['index']=function(_0x5c1ca0,_0x120186){var _0x29177a={},_0xa2eda2={},_0x537b33={'count':0x0,'rows':[]};var _0x1dca9e=_[_0x3697('0x2c')](db[_0x3697('0x2d')]['rawAttributes'],function(_0x4fe88d){return{'name':_0x4fe88d[_0x3697('0x2e')],'type':_0x4fe88d['type'][_0x3697('0x2f')]};});_0xa2eda2['model']=_['map'](_0x1dca9e,_0x3697('0x2a'));_0xa2eda2[_0x3697('0x30')]=_[_0x3697('0x31')](_0x5c1ca0['query']);_0xa2eda2['filters']=_[_0x3697('0x32')](_0xa2eda2[_0x3697('0x33')],_0xa2eda2[_0x3697('0x30')]);_0x29177a[_0x3697('0x34')]=_[_0x3697('0x32')](_0xa2eda2[_0x3697('0x33')],qs[_0x3697('0x35')](_0x5c1ca0[_0x3697('0x30')][_0x3697('0x35')]));_0x29177a[_0x3697('0x34')]=_0x29177a[_0x3697('0x34')]['length']?_0x29177a['attributes']:_0xa2eda2['model'];if(!_0x5c1ca0['query'][_0x3697('0x36')]('nolimit')){_0x29177a[_0x3697('0x1d')]=qs['limit'](_0x5c1ca0[_0x3697('0x30')]['limit']);_0x29177a[_0x3697('0x1b')]=qs[_0x3697('0x1b')](_0x5c1ca0[_0x3697('0x30')][_0x3697('0x1b')]);}_0x29177a[_0x3697('0x37')]=qs['sort'](_0x5c1ca0['query'][_0x3697('0x38')]);_0x29177a['where']=qs[_0x3697('0x39')](_['pick'](_0x5c1ca0[_0x3697('0x30')],_0xa2eda2['filters']),_0x1dca9e);if(_0x5c1ca0[_0x3697('0x30')]['filter']){_0x29177a['where']=_[_0x3697('0x3a')](_0x29177a['where'],{'$or':_['map'](_0x1dca9e,function(_0x2de8e2){if(_0x2de8e2[_0x3697('0x3b')]!==_0x3697('0x3c')){var _0x3ccc6f={};_0x3ccc6f[_0x2de8e2[_0x3697('0x2a')]]={'$like':'%'+_0x5c1ca0[_0x3697('0x30')][_0x3697('0x3d')]+'%'};return _0x3ccc6f;}})});}_0x29177a=_[_0x3697('0x3a')]({},_0x29177a,_0x5c1ca0[_0x3697('0x3e')]);var _0xd19408={'where':_0x29177a[_0x3697('0x3f')]};return db[_0x3697('0x2d')]['count'](_0xd19408)[_0x3697('0x25')](function(_0x278e31){_0x537b33['count']=_0x278e31;if(_0x5c1ca0['query'][_0x3697('0x40')]){_0x29177a[_0x3697('0x41')]=[{'all':!![]}];}return db[_0x3697('0x2d')][_0x3697('0x42')](_0x29177a);})['then'](function(_0x36b3b){_0x537b33[_0x3697('0x43')]=_0x36b3b;return _0x537b33;})[_0x3697('0x25')](respondWithFilteredResult(_0x120186,_0x29177a))[_0x3697('0x44')](handleError(_0x120186,null));};exports[_0x3697('0x45')]=function(_0x20e6a0,_0x2a60cb){var _0x3f07a5={'raw':![],'where':{'id':_0x20e6a0[_0x3697('0x46')]['id']}},_0x3c83e3={};_0x3c83e3[_0x3697('0x33')]=_[_0x3697('0x31')](db[_0x3697('0x2d')][_0x3697('0x47')]);_0x3c83e3[_0x3697('0x30')]=_['keys'](_0x20e6a0[_0x3697('0x30')]);_0x3c83e3[_0x3697('0x39')]=_[_0x3697('0x32')](_0x3c83e3[_0x3697('0x33')],_0x3c83e3[_0x3697('0x30')]);_0x3f07a5[_0x3697('0x34')]=_[_0x3697('0x32')](_0x3c83e3[_0x3697('0x33')],qs[_0x3697('0x35')](_0x20e6a0['query']['fields']));_0x3f07a5[_0x3697('0x34')]=_0x3f07a5['attributes']['length']?_0x3f07a5[_0x3697('0x34')]:_0x3c83e3['model'];if(_0x20e6a0[_0x3697('0x30')][_0x3697('0x40')]){_0x3f07a5[_0x3697('0x41')]=[{'all':!![]}];}_0x3f07a5=_['merge']({},_0x3f07a5,_0x20e6a0[_0x3697('0x3e')]);return db['FreshsalesConfiguration'][_0x3697('0x48')](_0x3f07a5)[_0x3697('0x25')](handleEntityNotFound(_0x2a60cb,null))[_0x3697('0x25')](respondWithResult(_0x2a60cb,null))[_0x3697('0x44')](handleError(_0x2a60cb,null));};exports[_0x3697('0x49')]=function(_0x43234f,_0xea443f){return db['FreshsalesConfiguration']['create'](_0x43234f[_0x3697('0x4a')],{})[_0x3697('0x25')](respondWithResult(_0xea443f,0xc9))[_0x3697('0x44')](handleError(_0xea443f,null));};exports[_0x3697('0x24')]=function(_0x38574b,_0x481c31){if(_0x38574b[_0x3697('0x4a')]['id']){delete _0x38574b[_0x3697('0x4a')]['id'];}return db[_0x3697('0x2d')][_0x3697('0x48')]({'where':{'id':_0x38574b[_0x3697('0x46')]['id']}})['then'](handleEntityNotFound(_0x481c31,null))[_0x3697('0x25')](saveUpdates(_0x38574b[_0x3697('0x4a')],null))[_0x3697('0x25')](respondWithResult(_0x481c31,null))[_0x3697('0x44')](handleError(_0x481c31,null));};exports[_0x3697('0x26')]=function(_0x1c93b6,_0x17ed57){return db[_0x3697('0x2d')][_0x3697('0x48')]({'where':{'id':_0x1c93b6[_0x3697('0x46')]['id']}})['then'](handleEntityNotFound(_0x17ed57,null))['then'](removeEntity(_0x17ed57,null))[_0x3697('0x44')](handleError(_0x17ed57,null));};exports[_0x3697('0x4b')]=function(_0x82cb91,_0x2a4bab,_0x5a2b42){var _0x5ab455={};var _0x425020={};var _0x384991;var _0x10ca31;return db[_0x3697('0x2d')][_0x3697('0x4c')]({'where':{'id':_0x82cb91[_0x3697('0x46')]['id']}})[_0x3697('0x25')](handleEntityNotFound(_0x2a4bab,null))[_0x3697('0x25')](function(_0x1e61d5){if(_0x1e61d5){_0x384991=_0x1e61d5;_0x425020[_0x3697('0x33')]=_['keys'](db[_0x3697('0x4d')]['rawAttributes']);_0x425020[_0x3697('0x30')]=_['keys'](_0x82cb91[_0x3697('0x30')]);_0x425020[_0x3697('0x39')]=_['intersection'](_0x425020['model'],_0x425020[_0x3697('0x30')]);_0x5ab455[_0x3697('0x34')]=_[_0x3697('0x32')](_0x425020['model'],qs[_0x3697('0x35')](_0x82cb91['query']['fields']));_0x5ab455[_0x3697('0x34')]=_0x5ab455[_0x3697('0x34')][_0x3697('0x4e')]?_0x5ab455[_0x3697('0x34')]:_0x425020[_0x3697('0x33')];_0x5ab455[_0x3697('0x37')]=qs[_0x3697('0x38')](_0x82cb91[_0x3697('0x30')][_0x3697('0x38')]);_0x5ab455[_0x3697('0x3f')]=qs[_0x3697('0x39')](_[_0x3697('0x4f')](_0x82cb91[_0x3697('0x30')],_0x425020[_0x3697('0x39')]));if(_0x82cb91[_0x3697('0x30')]['filter']){_0x5ab455['where']=_[_0x3697('0x3a')](_0x5ab455[_0x3697('0x3f')],{'$or':_[_0x3697('0x2c')](_0x5ab455[_0x3697('0x34')],function(_0x18fa51){var _0x290d52={};_0x290d52[_0x18fa51]={'$like':'%'+_0x82cb91[_0x3697('0x30')][_0x3697('0x3d')]+'%'};return _0x290d52;})});}_0x5ab455=_[_0x3697('0x3a')]({},_0x5ab455,_0x82cb91[_0x3697('0x3e')]);return _0x384991[_0x3697('0x4b')](_0x5ab455);}})[_0x3697('0x25')](function(_0x3f54b1){if(_0x3f54b1){_0x10ca31=_0x3f54b1[_0x3697('0x4e')];if(!_0x82cb91['query'][_0x3697('0x36')](_0x3697('0x50'))){_0x5ab455[_0x3697('0x1d')]=qs[_0x3697('0x1d')](_0x82cb91[_0x3697('0x30')][_0x3697('0x1d')]);_0x5ab455[_0x3697('0x1b')]=qs[_0x3697('0x1b')](_0x82cb91[_0x3697('0x30')][_0x3697('0x1b')]);}return _0x384991['getSubjects'](_0x5ab455);}})['then'](function(_0x1a3d16){if(_0x1a3d16){return _0x1a3d16?{'count':_0x10ca31,'rows':_0x1a3d16}:null;}})[_0x3697('0x25')](respondWithResult(_0x2a4bab,null))['catch'](handleError(_0x2a4bab,null));};exports['getDescriptions']=function(_0x4c954a,_0x3d2809,_0x1daf50){var _0x5eb573={};var _0x2bd4cb={};var _0x459177;var _0x3fe754;return db[_0x3697('0x2d')]['findOne']({'where':{'id':_0x4c954a['params']['id']}})[_0x3697('0x25')](handleEntityNotFound(_0x3d2809,null))[_0x3697('0x25')](function(_0x15194b){if(_0x15194b){_0x459177=_0x15194b;_0x2bd4cb[_0x3697('0x33')]=_[_0x3697('0x31')](db[_0x3697('0x4d')][_0x3697('0x47')]);_0x2bd4cb[_0x3697('0x30')]=_[_0x3697('0x31')](_0x4c954a['query']);_0x2bd4cb[_0x3697('0x39')]=_['intersection'](_0x2bd4cb[_0x3697('0x33')],_0x2bd4cb[_0x3697('0x30')]);_0x5eb573[_0x3697('0x34')]=_[_0x3697('0x32')](_0x2bd4cb[_0x3697('0x33')],qs[_0x3697('0x35')](_0x4c954a[_0x3697('0x30')][_0x3697('0x35')]));_0x5eb573[_0x3697('0x34')]=_0x5eb573[_0x3697('0x34')][_0x3697('0x4e')]?_0x5eb573[_0x3697('0x34')]:_0x2bd4cb[_0x3697('0x33')];_0x5eb573[_0x3697('0x37')]=qs[_0x3697('0x38')](_0x4c954a[_0x3697('0x30')][_0x3697('0x38')]);_0x5eb573[_0x3697('0x3f')]=qs[_0x3697('0x39')](_['pick'](_0x4c954a[_0x3697('0x30')],_0x2bd4cb[_0x3697('0x39')]));if(_0x4c954a['query']['filter']){_0x5eb573[_0x3697('0x3f')]=_['merge'](_0x5eb573[_0x3697('0x3f')],{'$or':_[_0x3697('0x2c')](_0x5eb573[_0x3697('0x34')],function(_0x194457){var _0x5068aa={};_0x5068aa[_0x194457]={'$like':'%'+_0x4c954a[_0x3697('0x30')]['filter']+'%'};return _0x5068aa;})});}_0x5eb573=_[_0x3697('0x3a')]({},_0x5eb573,_0x4c954a[_0x3697('0x3e')]);return _0x459177[_0x3697('0x51')](_0x5eb573);}})[_0x3697('0x25')](function(_0x2552ac){if(_0x2552ac){_0x3fe754=_0x2552ac[_0x3697('0x4e')];if(!_0x4c954a[_0x3697('0x30')][_0x3697('0x36')](_0x3697('0x50'))){_0x5eb573['limit']=qs['limit'](_0x4c954a[_0x3697('0x30')][_0x3697('0x1d')]);_0x5eb573[_0x3697('0x1b')]=qs['offset'](_0x4c954a[_0x3697('0x30')][_0x3697('0x1b')]);}return _0x459177[_0x3697('0x51')](_0x5eb573);}})['then'](function(_0x23f5f1){if(_0x23f5f1){return _0x23f5f1?{'count':_0x3fe754,'rows':_0x23f5f1}:null;}})[_0x3697('0x25')](respondWithResult(_0x3d2809,null))[_0x3697('0x44')](handleError(_0x3d2809,null));};exports[_0x3697('0x52')]=function(_0x13f4f8,_0x5cb22a,_0x28ed3c){var _0x319948={};var _0x4a6977={};var _0x598686;var _0x3debbb;return db[_0x3697('0x2d')]['findOne']({'where':{'id':_0x13f4f8[_0x3697('0x46')]['id']}})[_0x3697('0x25')](handleEntityNotFound(_0x5cb22a,null))['then'](function(_0x5e820e){if(_0x5e820e){_0x598686=_0x5e820e;_0x4a6977[_0x3697('0x33')]=_[_0x3697('0x31')](db[_0x3697('0x4d')][_0x3697('0x47')]);_0x4a6977[_0x3697('0x30')]=_[_0x3697('0x31')](_0x13f4f8[_0x3697('0x30')]);_0x4a6977[_0x3697('0x39')]=_[_0x3697('0x32')](_0x4a6977[_0x3697('0x33')],_0x4a6977['query']);_0x319948['attributes']=_[_0x3697('0x32')](_0x4a6977[_0x3697('0x33')],qs[_0x3697('0x35')](_0x13f4f8[_0x3697('0x30')][_0x3697('0x35')]));_0x319948['attributes']=_0x319948['attributes']['length']?_0x319948[_0x3697('0x34')]:_0x4a6977['model'];_0x319948[_0x3697('0x37')]=qs['sort'](_0x13f4f8[_0x3697('0x30')][_0x3697('0x38')]);_0x319948[_0x3697('0x3f')]=qs[_0x3697('0x39')](_[_0x3697('0x4f')](_0x13f4f8[_0x3697('0x30')],_0x4a6977[_0x3697('0x39')]));if(_0x13f4f8[_0x3697('0x30')][_0x3697('0x3d')]){_0x319948[_0x3697('0x3f')]=_[_0x3697('0x3a')](_0x319948[_0x3697('0x3f')],{'$or':_[_0x3697('0x2c')](_0x319948['attributes'],function(_0xa29647){var _0x3a69de={};_0x3a69de[_0xa29647]={'$like':'%'+_0x13f4f8[_0x3697('0x30')][_0x3697('0x3d')]+'%'};return _0x3a69de;})});}_0x319948=_[_0x3697('0x3a')]({},_0x319948,_0x13f4f8[_0x3697('0x3e')]);return _0x598686[_0x3697('0x52')](_0x319948);}})['then'](function(_0x3e9046){if(_0x3e9046){_0x3debbb=_0x3e9046[_0x3697('0x4e')];if(!_0x13f4f8[_0x3697('0x30')][_0x3697('0x36')](_0x3697('0x50'))){_0x319948['limit']=qs[_0x3697('0x1d')](_0x13f4f8[_0x3697('0x30')][_0x3697('0x1d')]);_0x319948[_0x3697('0x1b')]=qs[_0x3697('0x1b')](_0x13f4f8[_0x3697('0x30')][_0x3697('0x1b')]);}return _0x598686[_0x3697('0x52')](_0x319948);}})[_0x3697('0x25')](function(_0xef7adf){if(_0xef7adf){return _0xef7adf?{'count':_0x3debbb,'rows':_0xef7adf}:null;}})[_0x3697('0x25')](respondWithResult(_0x5cb22a,null))[_0x3697('0x44')](handleError(_0x5cb22a,null));};
\ No newline at end of file
+var _0x33b8=['../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','FreshsalesConfiguration','includeAll','include','findAll','rows','catch','show','keys','create','body','find','params','getSubjects','findOne','FreshsalesField','getDescriptions','getFields','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util'];(function(_0x649277,_0x59bfda){var _0x8e30e=function(_0x254f7f){while(--_0x254f7f){_0x649277['push'](_0x649277['shift']());}};_0x8e30e(++_0x59bfda);}(_0x33b8,0x190));var _0x833b=function(_0x305bbf,_0x5647b3){_0x305bbf=_0x305bbf-0x0;var _0x4ed772=_0x33b8[_0x305bbf];return _0x4ed772;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x833b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x833b('0x1'));var rp=require(_0x833b('0x2'));var moment=require('moment');var BPromise=require(_0x833b('0x3'));var Mustache=require(_0x833b('0x4'));var util=require(_0x833b('0x5'));var path=require(_0x833b('0x6'));var sox=require('sox');var csv=require(_0x833b('0x7'));var ejs=require(_0x833b('0x8'));var fs=require('fs');var fs_extra=require(_0x833b('0x9'));var _=require(_0x833b('0xa'));var squel=require(_0x833b('0xb'));var crypto=require(_0x833b('0xc'));var jsforce=require(_0x833b('0xd'));var deskjs=require(_0x833b('0xe'));var toCsv=require(_0x833b('0x7'));var querystring=require(_0x833b('0xf'));var Papa=require(_0x833b('0x10'));var Redis=require(_0x833b('0x11'));var authService=require(_0x833b('0x12'));var qs=require(_0x833b('0x13'));var as=require(_0x833b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x833b('0x15'))(_0x833b('0x16'));var utils=require(_0x833b('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x833b('0x18'));var db=require(_0x833b('0x19'))['db'];function respondWithStatusCode(_0x2b769d,_0x63a3b4){_0x63a3b4=_0x63a3b4||0xcc;return function(_0x50d6ee){if(_0x50d6ee){return _0x2b769d[_0x833b('0x1a')](_0x63a3b4);}return _0x2b769d[_0x833b('0x1b')](_0x63a3b4)[_0x833b('0x1c')]();};}function respondWithResult(_0x12e144,_0x154805){_0x154805=_0x154805||0xc8;return function(_0x2dd990){if(_0x2dd990){return _0x12e144[_0x833b('0x1b')](_0x154805)['json'](_0x2dd990);}};}function respondWithFilteredResult(_0x2b339e,_0x19c356){return function(_0x55be03){if(_0x55be03){var _0x4d3dda=typeof _0x19c356['offset']===_0x833b('0x1d')&&typeof _0x19c356[_0x833b('0x1e')]===_0x833b('0x1d');var _0x15dcb1=_0x55be03[_0x833b('0x1f')];var _0x1c822a=_0x4d3dda?0x0:_0x19c356[_0x833b('0x20')];var _0x277633=_0x4d3dda?_0x55be03[_0x833b('0x1f')]:_0x19c356[_0x833b('0x20')]+_0x19c356[_0x833b('0x1e')];var _0x33005a;if(_0x277633>=_0x15dcb1){_0x277633=_0x15dcb1;_0x33005a=0xc8;}else{_0x33005a=0xce;}_0x2b339e[_0x833b('0x1b')](_0x33005a);return _0x2b339e[_0x833b('0x21')](_0x833b('0x22'),_0x1c822a+'-'+_0x277633+'/'+_0x15dcb1)[_0x833b('0x23')](_0x55be03);}return null;};}function patchUpdates(_0x9d71e1){return function(_0x191e26){try{jsonpatch['apply'](_0x191e26,_0x9d71e1,!![]);}catch(_0x3d3894){return BPromise[_0x833b('0x24')](_0x3d3894);}return _0x191e26[_0x833b('0x25')]();};}function saveUpdates(_0x49f95a,_0x1bfc8){return function(_0x2305a5){if(_0x2305a5){return _0x2305a5[_0x833b('0x26')](_0x49f95a)[_0x833b('0x27')](function(_0x593aeb){return _0x593aeb;});}return null;};}function removeEntity(_0x15fec7,_0x71dd4d){return function(_0x2c0eb3){if(_0x2c0eb3){return _0x2c0eb3[_0x833b('0x28')]()[_0x833b('0x27')](function(){_0x15fec7[_0x833b('0x1b')](0xcc)[_0x833b('0x1c')]();});}};}function handleEntityNotFound(_0x2aabb2,_0x2302eb){return function(_0x2b431d){if(!_0x2b431d){_0x2aabb2[_0x833b('0x1a')](0x194);}return _0x2b431d;};}function handleError(_0x41883f,_0x423a93){_0x423a93=_0x423a93||0x1f4;return function(_0x111a13){logger[_0x833b('0x29')](_0x111a13[_0x833b('0x2a')]);if(_0x111a13[_0x833b('0x2b')]){delete _0x111a13[_0x833b('0x2b')];}_0x41883f[_0x833b('0x1b')](_0x423a93)[_0x833b('0x2c')](_0x111a13);};}exports[_0x833b('0x2d')]=function(_0x1af4df,_0x14e673){var _0xce9aa1={},_0x5da519={},_0x222556={'count':0x0,'rows':[]};var _0x43220f=_[_0x833b('0x2e')](db['FreshsalesConfiguration'][_0x833b('0x2f')],function(_0x940b){return{'name':_0x940b[_0x833b('0x30')],'type':_0x940b['type'][_0x833b('0x31')]};});_0x5da519[_0x833b('0x32')]=_[_0x833b('0x2e')](_0x43220f,_0x833b('0x2b'));_0x5da519[_0x833b('0x33')]=_['keys'](_0x1af4df[_0x833b('0x33')]);_0x5da519[_0x833b('0x34')]=_[_0x833b('0x35')](_0x5da519[_0x833b('0x32')],_0x5da519[_0x833b('0x33')]);_0xce9aa1['attributes']=_[_0x833b('0x35')](_0x5da519[_0x833b('0x32')],qs[_0x833b('0x36')](_0x1af4df[_0x833b('0x33')][_0x833b('0x36')]));_0xce9aa1[_0x833b('0x37')]=_0xce9aa1[_0x833b('0x37')][_0x833b('0x38')]?_0xce9aa1['attributes']:_0x5da519['model'];if(!_0x1af4df[_0x833b('0x33')][_0x833b('0x39')](_0x833b('0x3a'))){_0xce9aa1['limit']=qs[_0x833b('0x1e')](_0x1af4df[_0x833b('0x33')][_0x833b('0x1e')]);_0xce9aa1[_0x833b('0x20')]=qs[_0x833b('0x20')](_0x1af4df[_0x833b('0x33')][_0x833b('0x20')]);}_0xce9aa1[_0x833b('0x3b')]=qs[_0x833b('0x3c')](_0x1af4df['query'][_0x833b('0x3c')]);_0xce9aa1[_0x833b('0x3d')]=qs[_0x833b('0x34')](_[_0x833b('0x3e')](_0x1af4df[_0x833b('0x33')],_0x5da519[_0x833b('0x34')]),_0x43220f);if(_0x1af4df[_0x833b('0x33')][_0x833b('0x3f')]){_0xce9aa1[_0x833b('0x3d')]=_[_0x833b('0x40')](_0xce9aa1[_0x833b('0x3d')],{'$or':_[_0x833b('0x2e')](_0x43220f,function(_0x491834){if(_0x491834[_0x833b('0x41')]!==_0x833b('0x42')){var _0x51b6cf={};_0x51b6cf[_0x491834[_0x833b('0x2b')]]={'$like':'%'+_0x1af4df['query'][_0x833b('0x3f')]+'%'};return _0x51b6cf;}})});}_0xce9aa1=_[_0x833b('0x40')]({},_0xce9aa1,_0x1af4df[_0x833b('0x43')]);var _0x20defb={'where':_0xce9aa1[_0x833b('0x3d')]};return db[_0x833b('0x44')][_0x833b('0x1f')](_0x20defb)[_0x833b('0x27')](function(_0xb18d4a){_0x222556[_0x833b('0x1f')]=_0xb18d4a;if(_0x1af4df[_0x833b('0x33')][_0x833b('0x45')]){_0xce9aa1[_0x833b('0x46')]=[{'all':!![]}];}return db[_0x833b('0x44')][_0x833b('0x47')](_0xce9aa1);})['then'](function(_0x393f9a){_0x222556[_0x833b('0x48')]=_0x393f9a;return _0x222556;})[_0x833b('0x27')](respondWithFilteredResult(_0x14e673,_0xce9aa1))[_0x833b('0x49')](handleError(_0x14e673,null));};exports[_0x833b('0x4a')]=function(_0x475d0c,_0x471c5e){var _0x3c095c={'raw':![],'where':{'id':_0x475d0c['params']['id']}},_0x3f7057={};_0x3f7057[_0x833b('0x32')]=_[_0x833b('0x4b')](db[_0x833b('0x44')][_0x833b('0x2f')]);_0x3f7057[_0x833b('0x33')]=_[_0x833b('0x4b')](_0x475d0c['query']);_0x3f7057[_0x833b('0x34')]=_['intersection'](_0x3f7057[_0x833b('0x32')],_0x3f7057[_0x833b('0x33')]);_0x3c095c[_0x833b('0x37')]=_['intersection'](_0x3f7057[_0x833b('0x32')],qs['fields'](_0x475d0c[_0x833b('0x33')][_0x833b('0x36')]));_0x3c095c[_0x833b('0x37')]=_0x3c095c[_0x833b('0x37')]['length']?_0x3c095c[_0x833b('0x37')]:_0x3f7057['model'];if(_0x475d0c[_0x833b('0x33')][_0x833b('0x45')]){_0x3c095c[_0x833b('0x46')]=[{'all':!![]}];}_0x3c095c=_['merge']({},_0x3c095c,_0x475d0c[_0x833b('0x43')]);return db['FreshsalesConfiguration']['find'](_0x3c095c)[_0x833b('0x27')](handleEntityNotFound(_0x471c5e,null))['then'](respondWithResult(_0x471c5e,null))[_0x833b('0x49')](handleError(_0x471c5e,null));};exports[_0x833b('0x4c')]=function(_0x2cb89e,_0x40519c){return db[_0x833b('0x44')][_0x833b('0x4c')](_0x2cb89e[_0x833b('0x4d')],{})[_0x833b('0x27')](respondWithResult(_0x40519c,0xc9))[_0x833b('0x49')](handleError(_0x40519c,null));};exports[_0x833b('0x26')]=function(_0x157707,_0x211659){if(_0x157707[_0x833b('0x4d')]['id']){delete _0x157707[_0x833b('0x4d')]['id'];}return db[_0x833b('0x44')][_0x833b('0x4e')]({'where':{'id':_0x157707[_0x833b('0x4f')]['id']}})[_0x833b('0x27')](handleEntityNotFound(_0x211659,null))[_0x833b('0x27')](saveUpdates(_0x157707[_0x833b('0x4d')],null))[_0x833b('0x27')](respondWithResult(_0x211659,null))[_0x833b('0x49')](handleError(_0x211659,null));};exports[_0x833b('0x28')]=function(_0x38f8a2,_0x111393){return db[_0x833b('0x44')][_0x833b('0x4e')]({'where':{'id':_0x38f8a2[_0x833b('0x4f')]['id']}})[_0x833b('0x27')](handleEntityNotFound(_0x111393,null))['then'](removeEntity(_0x111393,null))['catch'](handleError(_0x111393,null));};exports[_0x833b('0x50')]=function(_0x48a2b8,_0x34e8e8,_0x5a4b65){var _0x23d11f={};var _0x5a2f56={};var _0x28bd0b;var _0x1aee7;return db[_0x833b('0x44')][_0x833b('0x51')]({'where':{'id':_0x48a2b8[_0x833b('0x4f')]['id']}})['then'](handleEntityNotFound(_0x34e8e8,null))[_0x833b('0x27')](function(_0x4f40ea){if(_0x4f40ea){_0x28bd0b=_0x4f40ea;_0x5a2f56[_0x833b('0x32')]=_[_0x833b('0x4b')](db[_0x833b('0x52')][_0x833b('0x2f')]);_0x5a2f56[_0x833b('0x33')]=_[_0x833b('0x4b')](_0x48a2b8[_0x833b('0x33')]);_0x5a2f56[_0x833b('0x34')]=_[_0x833b('0x35')](_0x5a2f56[_0x833b('0x32')],_0x5a2f56[_0x833b('0x33')]);_0x23d11f['attributes']=_[_0x833b('0x35')](_0x5a2f56[_0x833b('0x32')],qs['fields'](_0x48a2b8[_0x833b('0x33')][_0x833b('0x36')]));_0x23d11f[_0x833b('0x37')]=_0x23d11f[_0x833b('0x37')][_0x833b('0x38')]?_0x23d11f['attributes']:_0x5a2f56['model'];_0x23d11f['order']=qs[_0x833b('0x3c')](_0x48a2b8[_0x833b('0x33')][_0x833b('0x3c')]);_0x23d11f[_0x833b('0x3d')]=qs[_0x833b('0x34')](_['pick'](_0x48a2b8[_0x833b('0x33')],_0x5a2f56['filters']));if(_0x48a2b8[_0x833b('0x33')][_0x833b('0x3f')]){_0x23d11f[_0x833b('0x3d')]=_['merge'](_0x23d11f['where'],{'$or':_['map'](_0x23d11f[_0x833b('0x37')],function(_0x1ddb89){var _0x1bfe0d={};_0x1bfe0d[_0x1ddb89]={'$like':'%'+_0x48a2b8['query'][_0x833b('0x3f')]+'%'};return _0x1bfe0d;})});}_0x23d11f=_[_0x833b('0x40')]({},_0x23d11f,_0x48a2b8[_0x833b('0x43')]);return _0x28bd0b[_0x833b('0x50')](_0x23d11f);}})['then'](function(_0x500477){if(_0x500477){_0x1aee7=_0x500477[_0x833b('0x38')];if(!_0x48a2b8[_0x833b('0x33')][_0x833b('0x39')]('nolimit')){_0x23d11f[_0x833b('0x1e')]=qs[_0x833b('0x1e')](_0x48a2b8[_0x833b('0x33')]['limit']);_0x23d11f['offset']=qs[_0x833b('0x20')](_0x48a2b8[_0x833b('0x33')][_0x833b('0x20')]);}return _0x28bd0b[_0x833b('0x50')](_0x23d11f);}})[_0x833b('0x27')](function(_0x25b34e){if(_0x25b34e){return _0x25b34e?{'count':_0x1aee7,'rows':_0x25b34e}:null;}})[_0x833b('0x27')](respondWithResult(_0x34e8e8,null))[_0x833b('0x49')](handleError(_0x34e8e8,null));};exports[_0x833b('0x53')]=function(_0xb953d1,_0x2a1f8c,_0x377d66){var _0x563436={};var _0x1fc414={};var _0x52ef29;var _0x3615c1;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0xb953d1['params']['id']}})[_0x833b('0x27')](handleEntityNotFound(_0x2a1f8c,null))[_0x833b('0x27')](function(_0x1a8c50){if(_0x1a8c50){_0x52ef29=_0x1a8c50;_0x1fc414[_0x833b('0x32')]=_[_0x833b('0x4b')](db[_0x833b('0x52')][_0x833b('0x2f')]);_0x1fc414[_0x833b('0x33')]=_[_0x833b('0x4b')](_0xb953d1['query']);_0x1fc414['filters']=_[_0x833b('0x35')](_0x1fc414['model'],_0x1fc414[_0x833b('0x33')]);_0x563436[_0x833b('0x37')]=_[_0x833b('0x35')](_0x1fc414[_0x833b('0x32')],qs['fields'](_0xb953d1[_0x833b('0x33')]['fields']));_0x563436[_0x833b('0x37')]=_0x563436[_0x833b('0x37')][_0x833b('0x38')]?_0x563436[_0x833b('0x37')]:_0x1fc414['model'];_0x563436[_0x833b('0x3b')]=qs[_0x833b('0x3c')](_0xb953d1[_0x833b('0x33')][_0x833b('0x3c')]);_0x563436[_0x833b('0x3d')]=qs[_0x833b('0x34')](_[_0x833b('0x3e')](_0xb953d1[_0x833b('0x33')],_0x1fc414[_0x833b('0x34')]));if(_0xb953d1[_0x833b('0x33')]['filter']){_0x563436[_0x833b('0x3d')]=_['merge'](_0x563436[_0x833b('0x3d')],{'$or':_[_0x833b('0x2e')](_0x563436['attributes'],function(_0xb5a0e){var _0x19f439={};_0x19f439[_0xb5a0e]={'$like':'%'+_0xb953d1['query'][_0x833b('0x3f')]+'%'};return _0x19f439;})});}_0x563436=_[_0x833b('0x40')]({},_0x563436,_0xb953d1[_0x833b('0x43')]);return _0x52ef29['getDescriptions'](_0x563436);}})['then'](function(_0x2e6a2c){if(_0x2e6a2c){_0x3615c1=_0x2e6a2c[_0x833b('0x38')];if(!_0xb953d1[_0x833b('0x33')][_0x833b('0x39')]('nolimit')){_0x563436['limit']=qs[_0x833b('0x1e')](_0xb953d1['query'][_0x833b('0x1e')]);_0x563436[_0x833b('0x20')]=qs[_0x833b('0x20')](_0xb953d1[_0x833b('0x33')][_0x833b('0x20')]);}return _0x52ef29[_0x833b('0x53')](_0x563436);}})[_0x833b('0x27')](function(_0x526cf1){if(_0x526cf1){return _0x526cf1?{'count':_0x3615c1,'rows':_0x526cf1}:null;}})[_0x833b('0x27')](respondWithResult(_0x2a1f8c,null))['catch'](handleError(_0x2a1f8c,null));};exports['getFields']=function(_0x22d678,_0x1888d7,_0x1decd8){var _0x12741f={};var _0x23cfb3={};var _0x1001e9;var _0x2fa96a;return db[_0x833b('0x44')][_0x833b('0x51')]({'where':{'id':_0x22d678['params']['id']}})[_0x833b('0x27')](handleEntityNotFound(_0x1888d7,null))[_0x833b('0x27')](function(_0x1da4e0){if(_0x1da4e0){_0x1001e9=_0x1da4e0;_0x23cfb3[_0x833b('0x32')]=_[_0x833b('0x4b')](db['FreshsalesField']['rawAttributes']);_0x23cfb3['query']=_[_0x833b('0x4b')](_0x22d678[_0x833b('0x33')]);_0x23cfb3[_0x833b('0x34')]=_['intersection'](_0x23cfb3['model'],_0x23cfb3[_0x833b('0x33')]);_0x12741f['attributes']=_[_0x833b('0x35')](_0x23cfb3[_0x833b('0x32')],qs[_0x833b('0x36')](_0x22d678[_0x833b('0x33')]['fields']));_0x12741f[_0x833b('0x37')]=_0x12741f[_0x833b('0x37')][_0x833b('0x38')]?_0x12741f['attributes']:_0x23cfb3[_0x833b('0x32')];_0x12741f[_0x833b('0x3b')]=qs[_0x833b('0x3c')](_0x22d678[_0x833b('0x33')][_0x833b('0x3c')]);_0x12741f[_0x833b('0x3d')]=qs['filters'](_[_0x833b('0x3e')](_0x22d678[_0x833b('0x33')],_0x23cfb3[_0x833b('0x34')]));if(_0x22d678[_0x833b('0x33')][_0x833b('0x3f')]){_0x12741f[_0x833b('0x3d')]=_[_0x833b('0x40')](_0x12741f['where'],{'$or':_[_0x833b('0x2e')](_0x12741f[_0x833b('0x37')],function(_0x278faa){var _0x2c41ae={};_0x2c41ae[_0x278faa]={'$like':'%'+_0x22d678[_0x833b('0x33')]['filter']+'%'};return _0x2c41ae;})});}_0x12741f=_['merge']({},_0x12741f,_0x22d678[_0x833b('0x43')]);return _0x1001e9['getFields'](_0x12741f);}})[_0x833b('0x27')](function(_0xbe726e){if(_0xbe726e){_0x2fa96a=_0xbe726e[_0x833b('0x38')];if(!_0x22d678[_0x833b('0x33')][_0x833b('0x39')](_0x833b('0x3a'))){_0x12741f[_0x833b('0x1e')]=qs[_0x833b('0x1e')](_0x22d678['query']['limit']);_0x12741f[_0x833b('0x20')]=qs['offset'](_0x22d678[_0x833b('0x33')][_0x833b('0x20')]);}return _0x1001e9[_0x833b('0x54')](_0x12741f);}})[_0x833b('0x27')](function(_0x393d31){if(_0x393d31){return _0x393d31?{'count':_0x2fa96a,'rows':_0x393d31}:null;}})[_0x833b('0x27')](respondWithResult(_0x1888d7,null))[_0x833b('0x49')](handleError(_0x1888d7,null));};
\ No newline at end of file
index 16ec19f..1d7ceb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56a2=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','define','int_freshsales_configurations','lodash','util'];(function(_0x261e29,_0x10fffd){var _0x25ef43=function(_0x21b8e7){while(--_0x21b8e7){_0x261e29['push'](_0x261e29['shift']());}};_0x25ef43(++_0x10fffd);}(_0x56a2,0x10f));var _0x256a=function(_0x3bb5b4,_0x128455){_0x3bb5b4=_0x3bb5b4-0x0;var _0x586c60=_0x56a2[_0x3bb5b4];return _0x586c60;};'use strict';var _=require(_0x256a('0x0'));var util=require(_0x256a('0x1'));var logger=require(_0x256a('0x2'))(_0x256a('0x3'));var moment=require(_0x256a('0x4'));var BPromise=require('bluebird');var rp=require(_0x256a('0x5'));var fs=require('fs');var path=require(_0x256a('0x6'));var rimraf=require(_0x256a('0x7'));var config=require(_0x256a('0x8'));var attributes=require(_0x256a('0x9'));module[_0x256a('0xa')]=function(_0x1bd591,_0x3f5597){return _0x1bd591[_0x256a('0xb')]('FreshsalesConfiguration',attributes,{'tableName':_0x256a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4b00=['bluebird','request-promise','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','FreshsalesConfiguration','lodash','util','../../config/logger','api','moment'];(function(_0x3da312,_0x391ccd){var _0x28fb08=function(_0x1792bf){while(--_0x1792bf){_0x3da312['push'](_0x3da312['shift']());}};_0x28fb08(++_0x391ccd);}(_0x4b00,0x187));var _0x04b0=function(_0x2bb7dd,_0x17bbdb){_0x2bb7dd=_0x2bb7dd-0x0;var _0x387f31=_0x4b00[_0x2bb7dd];return _0x387f31;};'use strict';var _=require(_0x04b0('0x0'));var util=require(_0x04b0('0x1'));var logger=require(_0x04b0('0x2'))(_0x04b0('0x3'));var moment=require(_0x04b0('0x4'));var BPromise=require(_0x04b0('0x5'));var rp=require(_0x04b0('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x04b0('0x7'));var config=require(_0x04b0('0x8'));var attributes=require(_0x04b0('0x9'));module[_0x04b0('0xa')]=function(_0xbf5890,_0x5dd0c4){return _0xbf5890['define'](_0x04b0('0xb'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d23b7d5..058a714 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc20f=['../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FreshsalesConfiguration,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x500534,_0x3cf687){var _0x15f560=function(_0x2e96bf){while(--_0x2e96bf){_0x500534['push'](_0x500534['shift']());}};_0x15f560(++_0x3cf687);}(_0xc20f,0x1a2));var _0xfc20=function(_0x4d4990,_0x42d2d8){_0x4d4990=_0x4d4990-0x0;var _0x3ab7e1=_0xc20f[_0x4d4990];return _0x3ab7e1;};'use strict';var _=require(_0xfc20('0x0'));var util=require(_0xfc20('0x1'));var moment=require(_0xfc20('0x2'));var BPromise=require(_0xfc20('0x3'));var rs=require(_0xfc20('0x4'));var fs=require('fs');var Redis=require(_0xfc20('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xfc20('0x6'));var logger=require(_0xfc20('0x7'))(_0xfc20('0x8'));var config=require('../../config/environment');var jayson=require(_0xfc20('0x9'));var client=jayson[_0xfc20('0xa')][_0xfc20('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x438d54,_0x10b8b1,_0x47b0d4){return new BPromise(function(_0xffd23e,_0x189d1e){return client[_0xfc20('0xc')](_0x438d54,_0x47b0d4)[_0xfc20('0xd')](function(_0x113fde){logger[_0xfc20('0xe')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x10b8b1,_0xfc20('0xf'));logger[_0xfc20('0x10')](_0xfc20('0x11'),_0x10b8b1,_0xfc20('0xf'),JSON[_0xfc20('0x12')](_0x113fde));if(_0x113fde['error']){if(_0x113fde[_0xfc20('0x13')][_0xfc20('0x14')]===0x1f4){logger[_0xfc20('0x13')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x10b8b1,_0x113fde[_0xfc20('0x13')][_0xfc20('0x15')]);return _0x189d1e(_0x113fde['error'][_0xfc20('0x15')]);}logger[_0xfc20('0x13')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x10b8b1,_0x113fde[_0xfc20('0x13')]['message']);return _0xffd23e(_0x113fde['error'][_0xfc20('0x15')]);}else{logger['info'](_0xfc20('0x16'),_0x10b8b1,_0xfc20('0xf'));_0xffd23e(_0x113fde[_0xfc20('0x17')]['message']);}})[_0xfc20('0x18')](function(_0x315ad5){logger['error'](_0xfc20('0x16'),_0x10b8b1,_0x315ad5);_0x189d1e(_0x315ad5);});});}
\ No newline at end of file
+var _0xe9b2=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch'];(function(_0x3dadf1,_0x24d768){var _0x3323de=function(_0xc94733){while(--_0xc94733){_0x3dadf1['push'](_0x3dadf1['shift']());}};_0x3323de(++_0x24d768);}(_0xe9b2,0xf0));var _0x2e9b=function(_0x401b8e,_0x334bb2){_0x401b8e=_0x401b8e-0x0;var _0x533f3e=_0xe9b2[_0x401b8e];return _0x533f3e;};'use strict';var _=require('lodash');var util=require(_0x2e9b('0x0'));var moment=require(_0x2e9b('0x1'));var BPromise=require(_0x2e9b('0x2'));var rs=require(_0x2e9b('0x3'));var fs=require('fs');var Redis=require(_0x2e9b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2e9b('0x5'));var logger=require(_0x2e9b('0x6'))(_0x2e9b('0x7'));var config=require(_0x2e9b('0x8'));var jayson=require(_0x2e9b('0x9'));var client=jayson[_0x2e9b('0xa')][_0x2e9b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x354848,_0x34cc90,_0x335da5){return new BPromise(function(_0x16f1a6,_0x25682f){return client[_0x2e9b('0xc')](_0x354848,_0x335da5)[_0x2e9b('0xd')](function(_0x56ed27){logger[_0x2e9b('0xe')](_0x2e9b('0xf'),_0x34cc90,'request\x20sent');logger[_0x2e9b('0x10')](_0x2e9b('0x11'),_0x34cc90,_0x2e9b('0x12'),JSON[_0x2e9b('0x13')](_0x56ed27));if(_0x56ed27[_0x2e9b('0x14')]){if(_0x56ed27[_0x2e9b('0x14')][_0x2e9b('0x15')]===0x1f4){logger[_0x2e9b('0x14')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x34cc90,_0x56ed27[_0x2e9b('0x14')][_0x2e9b('0x16')]);return _0x25682f(_0x56ed27[_0x2e9b('0x14')][_0x2e9b('0x16')]);}logger[_0x2e9b('0x14')](_0x2e9b('0xf'),_0x34cc90,_0x56ed27[_0x2e9b('0x14')][_0x2e9b('0x16')]);return _0x16f1a6(_0x56ed27[_0x2e9b('0x14')]['message']);}else{logger[_0x2e9b('0xe')](_0x2e9b('0xf'),_0x34cc90,_0x2e9b('0x12'));_0x16f1a6(_0x56ed27['result'][_0x2e9b('0x16')]);}})[_0x2e9b('0x17')](function(_0x5e5992){logger['error'](_0x2e9b('0xf'),_0x34cc90,_0x5e5992);_0x25682f(_0x5e5992);});});}
\ No newline at end of file
index 49c94fc..f26b807 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb26e=['../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','exports','multer','express','Router','../../components/auth/service'];(function(_0x3f753e,_0x3fa961){var _0x32b975=function(_0x3ea1ee){while(--_0x3ea1ee){_0x3f753e['push'](_0x3f753e['shift']());}};_0x32b975(++_0x3fa961);}(_0xb26e,0x11d));var _0xeb26=function(_0x4c825d,_0x10ec2b){_0x4c825d=_0x4c825d-0x0;var _0x43de87=_0xb26e[_0x4c825d];return _0x43de87;};'use strict';var multer=require(_0xeb26('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xeb26('0x1'));var router=express[_0xeb26('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xeb26('0x3'));var interaction=require(_0xeb26('0x4'));var config=require(_0xeb26('0x5'));var controller=require(_0xeb26('0x6'));router[_0xeb26('0x7')]('/',auth[_0xeb26('0x8')](),controller[_0xeb26('0x9')]);router[_0xeb26('0x7')](_0xeb26('0xa'),auth[_0xeb26('0x8')](),controller[_0xeb26('0xb')]);router[_0xeb26('0xc')]('/',auth[_0xeb26('0x8')](),controller['create']);router[_0xeb26('0xd')]('/:id',auth['isAuthenticated'](),controller[_0xeb26('0xe')]);router[_0xeb26('0xf')]('/:id',auth[_0xeb26('0x8')](),controller['destroy']);module[_0xeb26('0x10')]=router;
\ No newline at end of file
+var _0xe3ed=['fs-extra','../../components/auth/service','../../config/environment','./intFreshsalesField.controller','isAuthenticated','get','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xe3ed,0x8d));var _0xde3e=function(_0xf18b8d,_0x394fa9){_0xf18b8d=_0xf18b8d-0x0;var _0x27df40=_0xe3ed[_0xf18b8d];return _0x27df40;};'use strict';var multer=require(_0xde3e('0x0'));var util=require(_0xde3e('0x1'));var path=require(_0xde3e('0x2'));var timeout=require(_0xde3e('0x3'));var express=require(_0xde3e('0x4'));var router=express[_0xde3e('0x5')]();var fs_extra=require(_0xde3e('0x6'));var auth=require(_0xde3e('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xde3e('0x8'));var controller=require(_0xde3e('0x9'));router['get']('/',auth[_0xde3e('0xa')](),controller['index']);router[_0xde3e('0xb')](_0xde3e('0xc'),auth['isAuthenticated'](),controller[_0xde3e('0xd')]);router[_0xde3e('0xe')]('/',auth[_0xde3e('0xa')](),controller[_0xde3e('0xf')]);router[_0xde3e('0x10')]('/:id',auth[_0xde3e('0xa')](),controller[_0xde3e('0x11')]);router[_0xde3e('0x12')](_0xde3e('0xc'),auth['isAuthenticated'](),controller[_0xde3e('0x13')]);module[_0xde3e('0x14')]=router;
\ No newline at end of file
index 64d3041..e9753b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6362=['string','variable','customVariable','picklist','STRING','BOOLEAN','exports','ENUM'];(function(_0x3a8e71,_0x44ff2f){var _0x3ab65a=function(_0x404701){while(--_0x404701){_0x3a8e71['push'](_0x3a8e71['shift']());}};_0x3ab65a(++_0x44ff2f);}(_0x6362,0x7e));var _0x2636=function(_0x49fa1b,_0x259ce8){_0x49fa1b=_0x49fa1b-0x0;var _0x154649=_0x6362[_0x49fa1b];return _0x154649;};'use strict';var Sequelize=require('sequelize');module[_0x2636('0x0')]={'type':{'type':Sequelize[_0x2636('0x1')](_0x2636('0x2'),_0x2636('0x3'),_0x2636('0x4'),'keyValue',_0x2636('0x5')),'defaultValue':_0x2636('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x2636('0x6')]},'keyType':{'type':Sequelize[_0x2636('0x1')](_0x2636('0x2'),_0x2636('0x3'),_0x2636('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x2636('0x6')]},'customField':{'type':Sequelize[_0x2636('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x260f=['ENUM','variable','keyValue','picklist','STRING','string','customVariable','BOOLEAN','sequelize','exports'];(function(_0x4833db,_0x3e2bbe){var _0x167282=function(_0x22f4f1){while(--_0x22f4f1){_0x4833db['push'](_0x4833db['shift']());}};_0x167282(++_0x3e2bbe);}(_0x260f,0x76));var _0xf260=function(_0x48711f,_0x535b4f){_0x48711f=_0x48711f-0x0;var _0x3ec5b0=_0x260f[_0x48711f];return _0x3ec5b0;};'use strict';var Sequelize=require(_0xf260('0x0'));module[_0xf260('0x1')]={'type':{'type':Sequelize[_0xf260('0x2')]('string',_0xf260('0x3'),'customVariable',_0xf260('0x4'),_0xf260('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0xf260('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0xf260('0x7'),_0xf260('0x3'),_0xf260('0x8'))},'keyContent':{'type':Sequelize[_0xf260('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xf260('0x6')]},'customField':{'type':Sequelize[_0xf260('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf260('0x6')]}};
\ No newline at end of file
index 942d525..c7e8051 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf986=['includeAll','include','findAll','catch','find','create','body','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','error','stack','name','index','FreshsalesField','rawAttributes','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options'];(function(_0x2c0ff7,_0x5dd45e){var _0x57742=function(_0x5562ce){while(--_0x5562ce){_0x2c0ff7['push'](_0x2c0ff7['shift']());}};_0x57742(++_0x5dd45e);}(_0xf986,0x12d));var _0x6f98=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xf986[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0x6f98('0x0'));var rimraf=require(_0x6f98('0x1'));var zipdir=require(_0x6f98('0x2'));var jsonpatch=require(_0x6f98('0x3'));var rp=require(_0x6f98('0x4'));var moment=require('moment');var BPromise=require(_0x6f98('0x5'));var Mustache=require(_0x6f98('0x6'));var util=require(_0x6f98('0x7'));var path=require(_0x6f98('0x8'));var sox=require(_0x6f98('0x9'));var csv=require(_0x6f98('0xa'));var ejs=require(_0x6f98('0xb'));var fs=require('fs');var fs_extra=require(_0x6f98('0xc'));var _=require(_0x6f98('0xd'));var squel=require(_0x6f98('0xe'));var crypto=require(_0x6f98('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6f98('0xa'));var querystring=require(_0x6f98('0x10'));var Papa=require(_0x6f98('0x11'));var Redis=require(_0x6f98('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x6f98('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6f98('0x14'))('api');var utils=require(_0x6f98('0x15'));var config=require(_0x6f98('0x16'));var licenseUtil=require(_0x6f98('0x17'));var db=require(_0x6f98('0x18'))['db'];function respondWithStatusCode(_0x5cc2ca,_0x4a40c1){_0x4a40c1=_0x4a40c1||0xcc;return function(_0x3f97a6){if(_0x3f97a6){return _0x5cc2ca['sendStatus'](_0x4a40c1);}return _0x5cc2ca[_0x6f98('0x19')](_0x4a40c1)[_0x6f98('0x1a')]();};}function respondWithResult(_0x3ab784,_0x2dd5fc){_0x2dd5fc=_0x2dd5fc||0xc8;return function(_0x582736){if(_0x582736){return _0x3ab784[_0x6f98('0x19')](_0x2dd5fc)[_0x6f98('0x1b')](_0x582736);}};}function respondWithFilteredResult(_0x10f4b4,_0xba2f9d){return function(_0x5961d6){if(_0x5961d6){var _0x1c91c3=typeof _0xba2f9d[_0x6f98('0x1c')]===_0x6f98('0x1d')&&typeof _0xba2f9d[_0x6f98('0x1e')]===_0x6f98('0x1d');var _0x356f37=_0x5961d6[_0x6f98('0x1f')];var _0x1092b1=_0x1c91c3?0x0:_0xba2f9d[_0x6f98('0x1c')];var _0x2675e0=_0x1c91c3?_0x5961d6['count']:_0xba2f9d['offset']+_0xba2f9d[_0x6f98('0x1e')];var _0x5650ee;if(_0x2675e0>=_0x356f37){_0x2675e0=_0x356f37;_0x5650ee=0xc8;}else{_0x5650ee=0xce;}_0x10f4b4[_0x6f98('0x19')](_0x5650ee);return _0x10f4b4[_0x6f98('0x20')]('Content-Range',_0x1092b1+'-'+_0x2675e0+'/'+_0x356f37)[_0x6f98('0x1b')](_0x5961d6);}return null;};}function patchUpdates(_0xb8028e){return function(_0x120994){try{jsonpatch[_0x6f98('0x21')](_0x120994,_0xb8028e,!![]);}catch(_0xa05cdf){return BPromise['reject'](_0xa05cdf);}return _0x120994[_0x6f98('0x22')]();};}function saveUpdates(_0xee869b,_0x46c391){return function(_0x838261){if(_0x838261){return _0x838261[_0x6f98('0x23')](_0xee869b)[_0x6f98('0x24')](function(_0x5095c9){return _0x5095c9;});}return null;};}function removeEntity(_0x2ed0d4,_0x4d1385){return function(_0x192ac5){if(_0x192ac5){return _0x192ac5['destroy']()['then'](function(){_0x2ed0d4['status'](0xcc)[_0x6f98('0x1a')]();});}};}function handleEntityNotFound(_0x2a8260,_0x25dfe1){return function(_0xc29687){if(!_0xc29687){_0x2a8260['sendStatus'](0x194);}return _0xc29687;};}function handleError(_0x10d1c5,_0x4143c9){_0x4143c9=_0x4143c9||0x1f4;return function(_0x3ae180){logger[_0x6f98('0x25')](_0x3ae180[_0x6f98('0x26')]);if(_0x3ae180[_0x6f98('0x27')]){delete _0x3ae180['name'];}_0x10d1c5['status'](_0x4143c9)['send'](_0x3ae180);};}exports[_0x6f98('0x28')]=function(_0x38cdbf,_0x5ecced){var _0x4e627b={},_0x3eef6b={},_0x4a1c85={'count':0x0,'rows':[]};var _0x52b4ce=_['map'](db[_0x6f98('0x29')][_0x6f98('0x2a')],function(_0x32ae0e){return{'name':_0x32ae0e['fieldName'],'type':_0x32ae0e[_0x6f98('0x2b')][_0x6f98('0x2c')]};});_0x3eef6b[_0x6f98('0x2d')]=_[_0x6f98('0x2e')](_0x52b4ce,'name');_0x3eef6b[_0x6f98('0x2f')]=_[_0x6f98('0x30')](_0x38cdbf['query']);_0x3eef6b[_0x6f98('0x31')]=_[_0x6f98('0x32')](_0x3eef6b[_0x6f98('0x2d')],_0x3eef6b[_0x6f98('0x2f')]);_0x4e627b['attributes']=_[_0x6f98('0x32')](_0x3eef6b[_0x6f98('0x2d')],qs[_0x6f98('0x33')](_0x38cdbf['query'][_0x6f98('0x33')]));_0x4e627b[_0x6f98('0x34')]=_0x4e627b[_0x6f98('0x34')][_0x6f98('0x35')]?_0x4e627b['attributes']:_0x3eef6b['model'];if(!_0x38cdbf[_0x6f98('0x2f')][_0x6f98('0x36')](_0x6f98('0x37'))){_0x4e627b['limit']=qs[_0x6f98('0x1e')](_0x38cdbf[_0x6f98('0x2f')]['limit']);_0x4e627b[_0x6f98('0x1c')]=qs[_0x6f98('0x1c')](_0x38cdbf[_0x6f98('0x2f')][_0x6f98('0x1c')]);}_0x4e627b[_0x6f98('0x38')]=qs['sort'](_0x38cdbf[_0x6f98('0x2f')][_0x6f98('0x39')]);_0x4e627b[_0x6f98('0x3a')]=qs[_0x6f98('0x31')](_[_0x6f98('0x3b')](_0x38cdbf[_0x6f98('0x2f')],_0x3eef6b['filters']),_0x52b4ce);if(_0x38cdbf[_0x6f98('0x2f')]['filter']){_0x4e627b[_0x6f98('0x3a')]=_[_0x6f98('0x3c')](_0x4e627b[_0x6f98('0x3a')],{'$or':_[_0x6f98('0x2e')](_0x52b4ce,function(_0x5a3f43){if(_0x5a3f43[_0x6f98('0x2b')]!==_0x6f98('0x3d')){var _0x21f9a1={};_0x21f9a1[_0x5a3f43[_0x6f98('0x27')]]={'$like':'%'+_0x38cdbf['query'][_0x6f98('0x3e')]+'%'};return _0x21f9a1;}})});}_0x4e627b=_[_0x6f98('0x3c')]({},_0x4e627b,_0x38cdbf[_0x6f98('0x3f')]);var _0x570f6d={'where':_0x4e627b['where']};return db[_0x6f98('0x29')]['count'](_0x570f6d)[_0x6f98('0x24')](function(_0x18176f){_0x4a1c85['count']=_0x18176f;if(_0x38cdbf[_0x6f98('0x2f')][_0x6f98('0x40')]){_0x4e627b[_0x6f98('0x41')]=[{'all':!![]}];}return db[_0x6f98('0x29')][_0x6f98('0x42')](_0x4e627b);})['then'](function(_0x743747){_0x4a1c85['rows']=_0x743747;return _0x4a1c85;})[_0x6f98('0x24')](respondWithFilteredResult(_0x5ecced,_0x4e627b))[_0x6f98('0x43')](handleError(_0x5ecced,null));};exports['show']=function(_0x15fc15,_0x5a1370){var _0x4f0a96={'raw':!![],'where':{'id':_0x15fc15['params']['id']}},_0x5edf3c={};_0x5edf3c['model']=_['keys'](db['FreshsalesField'][_0x6f98('0x2a')]);_0x5edf3c['query']=_[_0x6f98('0x30')](_0x15fc15['query']);_0x5edf3c['filters']=_['intersection'](_0x5edf3c[_0x6f98('0x2d')],_0x5edf3c[_0x6f98('0x2f')]);_0x4f0a96[_0x6f98('0x34')]=_[_0x6f98('0x32')](_0x5edf3c[_0x6f98('0x2d')],qs[_0x6f98('0x33')](_0x15fc15['query']['fields']));_0x4f0a96[_0x6f98('0x34')]=_0x4f0a96[_0x6f98('0x34')]['length']?_0x4f0a96[_0x6f98('0x34')]:_0x5edf3c['model'];if(_0x15fc15['query'][_0x6f98('0x40')]){_0x4f0a96[_0x6f98('0x41')]=[{'all':!![]}];}_0x4f0a96=_['merge']({},_0x4f0a96,_0x15fc15[_0x6f98('0x3f')]);return db[_0x6f98('0x29')][_0x6f98('0x44')](_0x4f0a96)[_0x6f98('0x24')](handleEntityNotFound(_0x5a1370,null))[_0x6f98('0x24')](respondWithResult(_0x5a1370,null))[_0x6f98('0x43')](handleError(_0x5a1370,null));};exports[_0x6f98('0x45')]=function(_0x2c13b7,_0x7e316e){return db[_0x6f98('0x29')][_0x6f98('0x45')](_0x2c13b7[_0x6f98('0x46')],{})['then'](respondWithResult(_0x7e316e,0xc9))[_0x6f98('0x43')](handleError(_0x7e316e,null));};exports['update']=function(_0x267a7c,_0x23e35d){if(_0x267a7c[_0x6f98('0x46')]['id']){delete _0x267a7c['body']['id'];}return db[_0x6f98('0x29')][_0x6f98('0x44')]({'where':{'id':_0x267a7c[_0x6f98('0x47')]['id']}})[_0x6f98('0x24')](handleEntityNotFound(_0x23e35d,null))['then'](saveUpdates(_0x267a7c[_0x6f98('0x46')],null))[_0x6f98('0x24')](respondWithResult(_0x23e35d,null))[_0x6f98('0x43')](handleError(_0x23e35d,null));};exports[_0x6f98('0x48')]=function(_0x255183,_0x44fee5){return db[_0x6f98('0x29')][_0x6f98('0x44')]({'where':{'id':_0x255183[_0x6f98('0x47')]['id']}})['then'](handleEntityNotFound(_0x44fee5,null))[_0x6f98('0x24')](removeEntity(_0x44fee5,null))[_0x6f98('0x43')](handleError(_0x44fee5,null));};
\ No newline at end of file
+var _0x7f74=['desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','save','update','then','destroy','end','error','stack','name','send','index','FreshsalesField','fieldName','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','type','VIRTUAL','includeAll','include','findAll','catch','rawAttributes','body','find','params','eml-format','zip-dir','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce'];(function(_0x2c08ef,_0x477ddd){var _0x1fb611=function(_0x1fed20){while(--_0x1fed20){_0x2c08ef['push'](_0x2c08ef['shift']());}};_0x1fb611(++_0x477ddd);}(_0x7f74,0x107));var _0x47f7=function(_0x13315d,_0x5e1edb){_0x13315d=_0x13315d-0x0;var _0x25ebb0=_0x7f74[_0x13315d];return _0x25ebb0;};'use strict';var emlformat=require(_0x47f7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x47f7('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x47f7('0x2'));var Mustache=require(_0x47f7('0x3'));var util=require(_0x47f7('0x4'));var path=require(_0x47f7('0x5'));var sox=require(_0x47f7('0x6'));var csv=require(_0x47f7('0x7'));var ejs=require(_0x47f7('0x8'));var fs=require('fs');var fs_extra=require(_0x47f7('0x9'));var _=require(_0x47f7('0xa'));var squel=require(_0x47f7('0xb'));var crypto=require('crypto');var jsforce=require(_0x47f7('0xc'));var deskjs=require(_0x47f7('0xd'));var toCsv=require(_0x47f7('0x7'));var querystring=require(_0x47f7('0xe'));var Papa=require(_0x47f7('0xf'));var Redis=require(_0x47f7('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x47f7('0x11'));var as=require(_0x47f7('0x12'));var hardwareService=require(_0x47f7('0x13'));var logger=require(_0x47f7('0x14'))(_0x47f7('0x15'));var utils=require(_0x47f7('0x16'));var config=require(_0x47f7('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x47f7('0x18'))['db'];function respondWithStatusCode(_0x1af865,_0x309f57){_0x309f57=_0x309f57||0xcc;return function(_0x3ea095){if(_0x3ea095){return _0x1af865[_0x47f7('0x19')](_0x309f57);}return _0x1af865[_0x47f7('0x1a')](_0x309f57)['end']();};}function respondWithResult(_0x2d0347,_0x1d307c){_0x1d307c=_0x1d307c||0xc8;return function(_0x16355d){if(_0x16355d){return _0x2d0347[_0x47f7('0x1a')](_0x1d307c)[_0x47f7('0x1b')](_0x16355d);}};}function respondWithFilteredResult(_0x2f0be8,_0x59d361){return function(_0x5c21ed){if(_0x5c21ed){var _0x47a18e=typeof _0x59d361[_0x47f7('0x1c')]===_0x47f7('0x1d')&&typeof _0x59d361[_0x47f7('0x1e')]===_0x47f7('0x1d');var _0x4fd203=_0x5c21ed['count'];var _0x553756=_0x47a18e?0x0:_0x59d361[_0x47f7('0x1c')];var _0x5b1643=_0x47a18e?_0x5c21ed[_0x47f7('0x1f')]:_0x59d361['offset']+_0x59d361['limit'];var _0x3fe064;if(_0x5b1643>=_0x4fd203){_0x5b1643=_0x4fd203;_0x3fe064=0xc8;}else{_0x3fe064=0xce;}_0x2f0be8[_0x47f7('0x1a')](_0x3fe064);return _0x2f0be8['set']('Content-Range',_0x553756+'-'+_0x5b1643+'/'+_0x4fd203)[_0x47f7('0x1b')](_0x5c21ed);}return null;};}function patchUpdates(_0x5485d8){return function(_0x146fb1){try{jsonpatch['apply'](_0x146fb1,_0x5485d8,!![]);}catch(_0x22ae7d){return BPromise['reject'](_0x22ae7d);}return _0x146fb1[_0x47f7('0x20')]();};}function saveUpdates(_0x5d60a8,_0x541796){return function(_0xe67cb6){if(_0xe67cb6){return _0xe67cb6[_0x47f7('0x21')](_0x5d60a8)[_0x47f7('0x22')](function(_0x377748){return _0x377748;});}return null;};}function removeEntity(_0x1839ab,_0x2d96ab){return function(_0x40bfd4){if(_0x40bfd4){return _0x40bfd4[_0x47f7('0x23')]()[_0x47f7('0x22')](function(){_0x1839ab[_0x47f7('0x1a')](0xcc)[_0x47f7('0x24')]();});}};}function handleEntityNotFound(_0x167741,_0x58b597){return function(_0xf565e3){if(!_0xf565e3){_0x167741[_0x47f7('0x19')](0x194);}return _0xf565e3;};}function handleError(_0x6f7dd4,_0x276e27){_0x276e27=_0x276e27||0x1f4;return function(_0x4f4530){logger[_0x47f7('0x25')](_0x4f4530[_0x47f7('0x26')]);if(_0x4f4530['name']){delete _0x4f4530[_0x47f7('0x27')];}_0x6f7dd4[_0x47f7('0x1a')](_0x276e27)[_0x47f7('0x28')](_0x4f4530);};}exports[_0x47f7('0x29')]=function(_0x3a40d2,_0x205f00){var _0x7e9937={},_0x23d160={},_0x233691={'count':0x0,'rows':[]};var _0x40d7b8=_['map'](db[_0x47f7('0x2a')]['rawAttributes'],function(_0x4e93c3){return{'name':_0x4e93c3[_0x47f7('0x2b')],'type':_0x4e93c3['type']['key']};});_0x23d160[_0x47f7('0x2c')]=_[_0x47f7('0x2d')](_0x40d7b8,_0x47f7('0x27'));_0x23d160[_0x47f7('0x2e')]=_[_0x47f7('0x2f')](_0x3a40d2[_0x47f7('0x2e')]);_0x23d160[_0x47f7('0x30')]=_[_0x47f7('0x31')](_0x23d160[_0x47f7('0x2c')],_0x23d160[_0x47f7('0x2e')]);_0x7e9937[_0x47f7('0x32')]=_[_0x47f7('0x31')](_0x23d160['model'],qs['fields'](_0x3a40d2[_0x47f7('0x2e')][_0x47f7('0x33')]));_0x7e9937[_0x47f7('0x32')]=_0x7e9937['attributes'][_0x47f7('0x34')]?_0x7e9937[_0x47f7('0x32')]:_0x23d160['model'];if(!_0x3a40d2[_0x47f7('0x2e')]['hasOwnProperty'](_0x47f7('0x35'))){_0x7e9937[_0x47f7('0x1e')]=qs[_0x47f7('0x1e')](_0x3a40d2[_0x47f7('0x2e')][_0x47f7('0x1e')]);_0x7e9937[_0x47f7('0x1c')]=qs[_0x47f7('0x1c')](_0x3a40d2[_0x47f7('0x2e')]['offset']);}_0x7e9937[_0x47f7('0x36')]=qs['sort'](_0x3a40d2['query'][_0x47f7('0x37')]);_0x7e9937[_0x47f7('0x38')]=qs[_0x47f7('0x30')](_['pick'](_0x3a40d2[_0x47f7('0x2e')],_0x23d160[_0x47f7('0x30')]),_0x40d7b8);if(_0x3a40d2[_0x47f7('0x2e')][_0x47f7('0x39')]){_0x7e9937[_0x47f7('0x38')]=_[_0x47f7('0x3a')](_0x7e9937[_0x47f7('0x38')],{'$or':_[_0x47f7('0x2d')](_0x40d7b8,function(_0x1c2746){if(_0x1c2746[_0x47f7('0x3b')]!==_0x47f7('0x3c')){var _0x588151={};_0x588151[_0x1c2746[_0x47f7('0x27')]]={'$like':'%'+_0x3a40d2[_0x47f7('0x2e')][_0x47f7('0x39')]+'%'};return _0x588151;}})});}_0x7e9937=_[_0x47f7('0x3a')]({},_0x7e9937,_0x3a40d2['options']);var _0x319159={'where':_0x7e9937[_0x47f7('0x38')]};return db[_0x47f7('0x2a')][_0x47f7('0x1f')](_0x319159)[_0x47f7('0x22')](function(_0x456732){_0x233691[_0x47f7('0x1f')]=_0x456732;if(_0x3a40d2['query'][_0x47f7('0x3d')]){_0x7e9937[_0x47f7('0x3e')]=[{'all':!![]}];}return db['FreshsalesField'][_0x47f7('0x3f')](_0x7e9937);})[_0x47f7('0x22')](function(_0xb1c433){_0x233691['rows']=_0xb1c433;return _0x233691;})['then'](respondWithFilteredResult(_0x205f00,_0x7e9937))[_0x47f7('0x40')](handleError(_0x205f00,null));};exports['show']=function(_0x27ceed,_0x4ef164){var _0x4f17cd={'raw':!![],'where':{'id':_0x27ceed['params']['id']}},_0x369f75={};_0x369f75['model']=_['keys'](db[_0x47f7('0x2a')][_0x47f7('0x41')]);_0x369f75['query']=_[_0x47f7('0x2f')](_0x27ceed[_0x47f7('0x2e')]);_0x369f75[_0x47f7('0x30')]=_[_0x47f7('0x31')](_0x369f75['model'],_0x369f75[_0x47f7('0x2e')]);_0x4f17cd[_0x47f7('0x32')]=_['intersection'](_0x369f75[_0x47f7('0x2c')],qs[_0x47f7('0x33')](_0x27ceed['query'][_0x47f7('0x33')]));_0x4f17cd[_0x47f7('0x32')]=_0x4f17cd[_0x47f7('0x32')][_0x47f7('0x34')]?_0x4f17cd['attributes']:_0x369f75[_0x47f7('0x2c')];if(_0x27ceed[_0x47f7('0x2e')]['includeAll']){_0x4f17cd[_0x47f7('0x3e')]=[{'all':!![]}];}_0x4f17cd=_[_0x47f7('0x3a')]({},_0x4f17cd,_0x27ceed['options']);return db['FreshsalesField']['find'](_0x4f17cd)['then'](handleEntityNotFound(_0x4ef164,null))[_0x47f7('0x22')](respondWithResult(_0x4ef164,null))[_0x47f7('0x40')](handleError(_0x4ef164,null));};exports['create']=function(_0x552f81,_0x2d8d13){return db[_0x47f7('0x2a')]['create'](_0x552f81[_0x47f7('0x42')],{})[_0x47f7('0x22')](respondWithResult(_0x2d8d13,0xc9))['catch'](handleError(_0x2d8d13,null));};exports[_0x47f7('0x21')]=function(_0x53f4e6,_0x39e3ce){if(_0x53f4e6['body']['id']){delete _0x53f4e6[_0x47f7('0x42')]['id'];}return db[_0x47f7('0x2a')][_0x47f7('0x43')]({'where':{'id':_0x53f4e6[_0x47f7('0x44')]['id']}})['then'](handleEntityNotFound(_0x39e3ce,null))[_0x47f7('0x22')](saveUpdates(_0x53f4e6[_0x47f7('0x42')],null))[_0x47f7('0x22')](respondWithResult(_0x39e3ce,null))[_0x47f7('0x40')](handleError(_0x39e3ce,null));};exports[_0x47f7('0x23')]=function(_0x3f0d75,_0x23a906){return db[_0x47f7('0x2a')]['find']({'where':{'id':_0x3f0d75[_0x47f7('0x44')]['id']}})['then'](handleEntityNotFound(_0x23a906,null))[_0x47f7('0x22')](removeEntity(_0x23a906,null))[_0x47f7('0x40')](handleError(_0x23a906,null));};
\ No newline at end of file
index 1a82589..8b8dc03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbee0=['idField','FieldId','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','define','FreshsalesField','freshsales_unique_index'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xbee0,0x147));var _0x0bee=function(_0x4f5fb9,_0x59bcff){_0x4f5fb9=_0x4f5fb9-0x0;var _0x2450b6=_0xbee0[_0x4f5fb9];return _0x2450b6;};'use strict';var _=require('lodash');var util=require(_0x0bee('0x0'));var logger=require(_0x0bee('0x1'))(_0x0bee('0x2'));var moment=require(_0x0bee('0x3'));var BPromise=require(_0x0bee('0x4'));var rp=require(_0x0bee('0x5'));var fs=require('fs');var path=require(_0x0bee('0x6'));var rimraf=require(_0x0bee('0x7'));var config=require('../../config/environment');var attributes=require('./intFreshsalesField.attributes');module['exports']=function(_0xd0c8f,_0xa3a091){return _0xd0c8f[_0x0bee('0x8')](_0x0bee('0x9'),attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':_0x0bee('0xa'),'fields':[_0x0bee('0xb'),_0x0bee('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5ba3=['path','../../config/environment','./intFreshsalesField.attributes','exports','define','FreshsalesField','int_freshsales_fields','idField','lodash','../../config/logger','api','bluebird','request-promise'];(function(_0xd4f05d,_0x1531ff){var _0x2b774f=function(_0x1ab3ec){while(--_0x1ab3ec){_0xd4f05d['push'](_0xd4f05d['shift']());}};_0x2b774f(++_0x1531ff);}(_0x5ba3,0x140));var _0x35ba=function(_0x2809a8,_0x45270d){_0x2809a8=_0x2809a8-0x0;var _0x698377=_0x5ba3[_0x2809a8];return _0x698377;};'use strict';var _=require(_0x35ba('0x0'));var util=require('util');var logger=require(_0x35ba('0x1'))(_0x35ba('0x2'));var moment=require('moment');var BPromise=require(_0x35ba('0x3'));var rp=require(_0x35ba('0x4'));var fs=require('fs');var path=require(_0x35ba('0x5'));var rimraf=require('rimraf');var config=require(_0x35ba('0x6'));var attributes=require(_0x35ba('0x7'));module[_0x35ba('0x8')]=function(_0x596785,_0x54c722){return _0x596785[_0x35ba('0x9')](_0x35ba('0xa'),attributes,{'tableName':_0x35ba('0xb'),'paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0x35ba('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index e7bcc58..ee0e523 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then'];(function(_0x4bfac3,_0x58324d){var _0x15f0f2=function(_0xf0c511){while(--_0xf0c511){_0x4bfac3['push'](_0x4bfac3['shift']());}};_0x15f0f2(++_0x58324d);}(_0x814b,0x1a2));var _0xb814=function(_0x6148ee,_0x4d2fca){_0x6148ee=_0x6148ee-0x0;var _0x5afc74=_0x814b[_0x6148ee];return _0x5afc74;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var moment=require(_0xb814('0x2'));var BPromise=require(_0xb814('0x3'));var rs=require(_0xb814('0x4'));var fs=require('fs');var Redis=require(_0xb814('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb814('0x6'));var logger=require(_0xb814('0x7'))(_0xb814('0x8'));var config=require(_0xb814('0x9'));var jayson=require(_0xb814('0xa'));var client=jayson[_0xb814('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b0829,_0x2e6272,_0x5c8539){return new BPromise(function(_0x271af9,_0x2913a6){return client[_0xb814('0xc')](_0x3b0829,_0x5c8539)[_0xb814('0xd')](function(_0x1fea33){logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));logger[_0xb814('0x11')](_0xb814('0x12'),_0x2e6272,_0xb814('0x10'),JSON['stringify'](_0x1fea33));if(_0x1fea33[_0xb814('0x13')]){if(_0x1fea33['error'][_0xb814('0x14')]===0x1f4){logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x2913a6(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x271af9(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}else{logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));_0x271af9(_0x1fea33[_0xb814('0x16')][_0xb814('0x15')]);}})[_0xb814('0x17')](function(_0x21b73f){logger[_0xb814('0x13')]('FreshsalesField,\x20%s,\x20%s',_0x2e6272,_0x21b73f);_0x2913a6(_0x21b73f);});});}
\ No newline at end of file
+var _0x5d17=['request','info','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshsalesField,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x58ed0e,_0x5040e2){var _0x2dabdc=function(_0x1cfa2f){while(--_0x1cfa2f){_0x58ed0e['push'](_0x58ed0e['shift']());}};_0x2dabdc(++_0x5040e2);}(_0x5d17,0x114));var _0x75d1=function(_0x11a289,_0x54b41c){_0x11a289=_0x11a289-0x0;var _0x224679=_0x5d17[_0x11a289];return _0x224679;};'use strict';var _=require(_0x75d1('0x0'));var util=require(_0x75d1('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x75d1('0x2'));var fs=require('fs');var Redis=require(_0x75d1('0x3'));var db=require(_0x75d1('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x75d1('0x5'))(_0x75d1('0x6'));var config=require(_0x75d1('0x7'));var jayson=require(_0x75d1('0x8'));var client=jayson['client'][_0x75d1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x116a51,_0x5c957a,_0x1ee61b){return new BPromise(function(_0x3a9d5e,_0x105607){return client[_0x75d1('0xa')](_0x116a51,_0x1ee61b)['then'](function(_0x4cf632){logger[_0x75d1('0xb')]('FreshsalesField,\x20%s,\x20%s',_0x5c957a,'request\x20sent');logger[_0x75d1('0xc')](_0x75d1('0xd'),_0x5c957a,'request\x20sent',JSON[_0x75d1('0xe')](_0x4cf632));if(_0x4cf632[_0x75d1('0xf')]){if(_0x4cf632[_0x75d1('0xf')][_0x75d1('0x10')]===0x1f4){logger[_0x75d1('0xf')](_0x75d1('0x11'),_0x5c957a,_0x4cf632['error'][_0x75d1('0x12')]);return _0x105607(_0x4cf632[_0x75d1('0xf')][_0x75d1('0x12')]);}logger[_0x75d1('0xf')]('FreshsalesField,\x20%s,\x20%s',_0x5c957a,_0x4cf632['error']['message']);return _0x3a9d5e(_0x4cf632[_0x75d1('0xf')][_0x75d1('0x12')]);}else{logger[_0x75d1('0xb')]('FreshsalesField,\x20%s,\x20%s',_0x5c957a,_0x75d1('0x13'));_0x3a9d5e(_0x4cf632[_0x75d1('0x14')][_0x75d1('0x12')]);}})[_0x75d1('0x15')](function(_0x1160ca){logger[_0x75d1('0xf')](_0x75d1('0x11'),_0x5c957a,_0x1160ca);_0x105607(_0x1160ca);});});}
\ No newline at end of file
index 948da1c..056366f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x5cb3ab,_0x3dde3e){var _0x21336e=function(_0x1d606b){while(--_0x1d606b){_0x5cb3ab['push'](_0x5cb3ab['shift']());}};_0x21336e(++_0x3dde3e);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x16db80,_0xee4001){var _0x53889b=function(_0x3b5ac2){while(--_0x3b5ac2){_0x16db80['push'](_0x16db80['shift']());}};_0x53889b(++_0xee4001);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 7d44be3..db4190d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32c3=['username','ENUM','integrationTab','newTab','sequelize','exports','STRING'];(function(_0x52ea08,_0x15d935){var _0x28d546=function(_0x4a3aa7){while(--_0x4a3aa7){_0x52ea08['push'](_0x52ea08['shift']());}};_0x28d546(++_0x15d935);}(_0x32c3,0x1a8));var _0x332c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x32c3[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x332c('0x0'));module[_0x332c('0x1')]={'name':{'type':Sequelize[_0x332c('0x2')]},'description':{'type':Sequelize[_0x332c('0x2')]},'username':{'type':Sequelize[_0x332c('0x2')],'unique':_0x332c('0x3')},'remoteUri':{'type':Sequelize[_0x332c('0x2')]},'password':{'type':Sequelize[_0x332c('0x2')]},'clientId':{'type':Sequelize[_0x332c('0x2')]},'clientSecret':{'type':Sequelize[_0x332c('0x2')]},'securityToken':{'type':Sequelize[_0x332c('0x2')]},'serverUrl':{'type':Sequelize[_0x332c('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x332c('0x4')](_0x332c('0x5'),_0x332c('0x6')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0x66ee=['newTab','sequelize','exports','STRING','ENUM','integrationTab'];(function(_0x134efb,_0x1041ec){var _0x50a87a=function(_0x19b76b){while(--_0x19b76b){_0x134efb['push'](_0x134efb['shift']());}};_0x50a87a(++_0x1041ec);}(_0x66ee,0x85));var _0xe66e=function(_0x56c0cf,_0x31b7b5){_0x56c0cf=_0x56c0cf-0x0;var _0xa499a5=_0x66ee[_0x56c0cf];return _0xa499a5;};'use strict';var Sequelize=require(_0xe66e('0x0'));module[_0xe66e('0x1')]={'name':{'type':Sequelize[_0xe66e('0x2')]},'description':{'type':Sequelize[_0xe66e('0x2')]},'username':{'type':Sequelize[_0xe66e('0x2')],'unique':'username'},'remoteUri':{'type':Sequelize[_0xe66e('0x2')]},'password':{'type':Sequelize[_0xe66e('0x2')]},'clientId':{'type':Sequelize[_0xe66e('0x2')]},'clientSecret':{'type':Sequelize[_0xe66e('0x2')]},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xe66e('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xe66e('0x3')](_0xe66e('0x4'),_0xe66e('0x5')),'defaultValue':_0xe66e('0x4')}};
\ No newline at end of file
index fedafed..6aef33e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a3c=['sort','where','pick','filter','merge','type','options','includeAll','findAll','catch','show','params','include','find','create','body','findOne','SalesforceConfiguration','getConfigurations','hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SalesforceField','getFields','Task','remoteUri','clientId','clientSecret','username','password','securityToken','slice','login','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsRecurrence','Subject','string','int','picklist','boolean','email','textarea','phone','remove','includes','label','custom','picklistValues','True','true','false','getFields,\x20%s,\x20%s,\x20%s','stringify','send','test','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','to-csv','ejs','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','destroy','then','error','stack','name','index','SalesforceAccount','rawAttributes','fieldName','key','map','query','keys','filters','intersection','model','fields','attributes','length','nolimit','order'];(function(_0x23570f,_0x50c9ce){var _0x538419=function(_0x5d7cb7){while(--_0x5d7cb7){_0x23570f['push'](_0x23570f['shift']());}};_0x538419(++_0x50c9ce);}(_0x4a3c,0xbe));var _0xc4a3=function(_0x45552c,_0x57b370){_0x45552c=_0x45552c-0x0;var _0xd4c1d7=_0x4a3c[_0x45552c];return _0xd4c1d7;};'use strict';var emlformat=require(_0xc4a3('0x0'));var rimraf=require(_0xc4a3('0x1'));var zipdir=require(_0xc4a3('0x2'));var jsonpatch=require(_0xc4a3('0x3'));var rp=require('request-promise');var moment=require(_0xc4a3('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc4a3('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xc4a3('0x6'));var ejs=require(_0xc4a3('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc4a3('0x8'));var squel=require(_0xc4a3('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc4a3('0xa'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc4a3('0xb'));var Redis=require(_0xc4a3('0xc'));var authService=require(_0xc4a3('0xd'));var qs=require(_0xc4a3('0xe'));var as=require(_0xc4a3('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc4a3('0x10'))(_0xc4a3('0x11'));var utils=require('../../config/utils');var config=require(_0xc4a3('0x12'));var licenseUtil=require(_0xc4a3('0x13'));var db=require(_0xc4a3('0x14'))['db'];var integrations=require(_0xc4a3('0x15'));function respondWithStatusCode(_0x9a7ee3,_0x2adc37){_0x2adc37=_0x2adc37||0xcc;return function(_0x55e8a2){if(_0x55e8a2){return _0x9a7ee3[_0xc4a3('0x16')](_0x2adc37);}return _0x9a7ee3[_0xc4a3('0x17')](_0x2adc37)[_0xc4a3('0x18')]();};}function respondWithResult(_0x400f24,_0x179842){_0x179842=_0x179842||0xc8;return function(_0x517c75){if(_0x517c75){return _0x400f24['status'](_0x179842)[_0xc4a3('0x19')](_0x517c75);}};}function respondWithFilteredResult(_0x5a1d0f,_0x283254){return function(_0x222751){if(_0x222751){var _0x4e3195=typeof _0x283254[_0xc4a3('0x1a')]===_0xc4a3('0x1b')&&typeof _0x283254[_0xc4a3('0x1c')]===_0xc4a3('0x1b');var _0x5c3a38=_0x222751['count'];var _0xd13be4=_0x4e3195?0x0:_0x283254['offset'];var _0x2949b=_0x4e3195?_0x222751[_0xc4a3('0x1d')]:_0x283254['offset']+_0x283254[_0xc4a3('0x1c')];var _0x90bb28;if(_0x2949b>=_0x5c3a38){_0x2949b=_0x5c3a38;_0x90bb28=0xc8;}else{_0x90bb28=0xce;}_0x5a1d0f['status'](_0x90bb28);return _0x5a1d0f[_0xc4a3('0x1e')](_0xc4a3('0x1f'),_0xd13be4+'-'+_0x2949b+'/'+_0x5c3a38)[_0xc4a3('0x19')](_0x222751);}return null;};}function patchUpdates(_0x3b6930){return function(_0x17be3e){try{jsonpatch['apply'](_0x17be3e,_0x3b6930,!![]);}catch(_0x18cf7e){return BPromise['reject'](_0x18cf7e);}return _0x17be3e[_0xc4a3('0x20')]();};}function saveUpdates(_0x2b14da,_0x3afe0f){return function(_0x1c8f04){if(_0x1c8f04){return _0x1c8f04['update'](_0x2b14da)['then'](function(_0x3c63e7){return _0x3c63e7;});}return null;};}function removeEntity(_0x2b43a2,_0x4e15a4){return function(_0x43f729){if(_0x43f729){return _0x43f729[_0xc4a3('0x21')]()[_0xc4a3('0x22')](function(){_0x2b43a2[_0xc4a3('0x17')](0xcc)[_0xc4a3('0x18')]();});}};}function handleEntityNotFound(_0xeb14b4,_0x4e7396){return function(_0xe3adb3){if(!_0xe3adb3){_0xeb14b4[_0xc4a3('0x16')](0x194);}return _0xe3adb3;};}function handleError(_0x34e08f,_0x7fe5b2){_0x7fe5b2=_0x7fe5b2||0x1f4;return function(_0x1fa04b){logger[_0xc4a3('0x23')](_0x1fa04b[_0xc4a3('0x24')]);if(_0x1fa04b[_0xc4a3('0x25')]){delete _0x1fa04b['name'];}_0x34e08f[_0xc4a3('0x17')](_0x7fe5b2)['send'](_0x1fa04b);};}exports[_0xc4a3('0x26')]=function(_0x5cc606,_0x5b4f4b){var _0x44cdc5={},_0x38b23f={},_0x495671={'count':0x0,'rows':[]};var _0x44bc2e=_['map'](db[_0xc4a3('0x27')][_0xc4a3('0x28')],function(_0x8148a3){return{'name':_0x8148a3[_0xc4a3('0x29')],'type':_0x8148a3['type'][_0xc4a3('0x2a')]};});_0x38b23f['model']=_[_0xc4a3('0x2b')](_0x44bc2e,_0xc4a3('0x25'));_0x38b23f[_0xc4a3('0x2c')]=_[_0xc4a3('0x2d')](_0x5cc606[_0xc4a3('0x2c')]);_0x38b23f[_0xc4a3('0x2e')]=_[_0xc4a3('0x2f')](_0x38b23f[_0xc4a3('0x30')],_0x38b23f[_0xc4a3('0x2c')]);_0x44cdc5['attributes']=_['intersection'](_0x38b23f[_0xc4a3('0x30')],qs['fields'](_0x5cc606[_0xc4a3('0x2c')][_0xc4a3('0x31')]));_0x44cdc5[_0xc4a3('0x32')]=_0x44cdc5[_0xc4a3('0x32')][_0xc4a3('0x33')]?_0x44cdc5['attributes']:_0x38b23f[_0xc4a3('0x30')];if(!_0x5cc606[_0xc4a3('0x2c')]['hasOwnProperty'](_0xc4a3('0x34'))){_0x44cdc5[_0xc4a3('0x1c')]=qs[_0xc4a3('0x1c')](_0x5cc606[_0xc4a3('0x2c')]['limit']);_0x44cdc5['offset']=qs['offset'](_0x5cc606[_0xc4a3('0x2c')][_0xc4a3('0x1a')]);}_0x44cdc5[_0xc4a3('0x35')]=qs[_0xc4a3('0x36')](_0x5cc606[_0xc4a3('0x2c')][_0xc4a3('0x36')]);_0x44cdc5[_0xc4a3('0x37')]=qs[_0xc4a3('0x2e')](_[_0xc4a3('0x38')](_0x5cc606['query'],_0x38b23f['filters']),_0x44bc2e);if(_0x5cc606[_0xc4a3('0x2c')][_0xc4a3('0x39')]){_0x44cdc5[_0xc4a3('0x37')]=_[_0xc4a3('0x3a')](_0x44cdc5[_0xc4a3('0x37')],{'$or':_[_0xc4a3('0x2b')](_0x44bc2e,function(_0x57f443){if(_0x57f443[_0xc4a3('0x3b')]!=='VIRTUAL'){var _0x2ebf4a={};_0x2ebf4a[_0x57f443[_0xc4a3('0x25')]]={'$like':'%'+_0x5cc606['query'][_0xc4a3('0x39')]+'%'};return _0x2ebf4a;}})});}_0x44cdc5=_[_0xc4a3('0x3a')]({},_0x44cdc5,_0x5cc606[_0xc4a3('0x3c')]);var _0x26608a={'where':_0x44cdc5[_0xc4a3('0x37')]};return db['SalesforceAccount'][_0xc4a3('0x1d')](_0x26608a)[_0xc4a3('0x22')](function(_0x27e8bd){_0x495671['count']=_0x27e8bd;if(_0x5cc606[_0xc4a3('0x2c')][_0xc4a3('0x3d')]){_0x44cdc5['include']=[{'all':!![]}];}return db[_0xc4a3('0x27')][_0xc4a3('0x3e')](_0x44cdc5);})[_0xc4a3('0x22')](function(_0x5d5cfb){_0x495671['rows']=_0x5d5cfb;return _0x495671;})[_0xc4a3('0x22')](respondWithFilteredResult(_0x5b4f4b,_0x44cdc5))[_0xc4a3('0x3f')](handleError(_0x5b4f4b,null));};exports[_0xc4a3('0x40')]=function(_0x3c4a90,_0x56d2cb){var _0x487e7e={'raw':![],'where':{'id':_0x3c4a90[_0xc4a3('0x41')]['id']}},_0x131274={};_0x131274['model']=_[_0xc4a3('0x2d')](db[_0xc4a3('0x27')][_0xc4a3('0x28')]);_0x131274[_0xc4a3('0x2c')]=_[_0xc4a3('0x2d')](_0x3c4a90[_0xc4a3('0x2c')]);_0x131274[_0xc4a3('0x2e')]=_['intersection'](_0x131274[_0xc4a3('0x30')],_0x131274[_0xc4a3('0x2c')]);_0x487e7e[_0xc4a3('0x32')]=_[_0xc4a3('0x2f')](_0x131274[_0xc4a3('0x30')],qs[_0xc4a3('0x31')](_0x3c4a90[_0xc4a3('0x2c')][_0xc4a3('0x31')]));_0x487e7e[_0xc4a3('0x32')]=_0x487e7e[_0xc4a3('0x32')][_0xc4a3('0x33')]?_0x487e7e[_0xc4a3('0x32')]:_0x131274[_0xc4a3('0x30')];if(_0x3c4a90['query'][_0xc4a3('0x3d')]){_0x487e7e[_0xc4a3('0x42')]=[{'all':!![]}];}_0x487e7e=_[_0xc4a3('0x3a')]({},_0x487e7e,_0x3c4a90[_0xc4a3('0x3c')]);return db[_0xc4a3('0x27')][_0xc4a3('0x43')](_0x487e7e)[_0xc4a3('0x22')](handleEntityNotFound(_0x56d2cb,null))[_0xc4a3('0x22')](respondWithResult(_0x56d2cb,null))[_0xc4a3('0x3f')](handleError(_0x56d2cb,null));};exports['create']=function(_0x376192,_0xafbd4e){return db[_0xc4a3('0x27')][_0xc4a3('0x44')](_0x376192[_0xc4a3('0x45')],{})['then'](respondWithResult(_0xafbd4e,0xc9))[_0xc4a3('0x3f')](handleError(_0xafbd4e,null));};exports['update']=function(_0x4a8854,_0x227e30){if(_0x4a8854[_0xc4a3('0x45')]['id']){delete _0x4a8854['body']['id'];}return db[_0xc4a3('0x27')][_0xc4a3('0x43')]({'where':{'id':_0x4a8854[_0xc4a3('0x41')]['id']}})[_0xc4a3('0x22')](handleEntityNotFound(_0x227e30,null))['then'](saveUpdates(_0x4a8854[_0xc4a3('0x45')],null))[_0xc4a3('0x22')](respondWithResult(_0x227e30,null))[_0xc4a3('0x3f')](handleError(_0x227e30,null));};exports['destroy']=function(_0x2da64e,_0x138b29){return db[_0xc4a3('0x27')]['find']({'where':{'id':_0x2da64e['params']['id']}})[_0xc4a3('0x22')](handleEntityNotFound(_0x138b29,null))['then'](removeEntity(_0x138b29,null))['catch'](handleError(_0x138b29,null));};exports['getConfigurations']=function(_0x554be4,_0x5e5c13,_0x4481f1){var _0x38aa34={};var _0x38a62b={};var _0xf7174;var _0x233d0c;return db[_0xc4a3('0x27')][_0xc4a3('0x46')]({'where':{'id':_0x554be4[_0xc4a3('0x41')]['id']}})[_0xc4a3('0x22')](handleEntityNotFound(_0x5e5c13,null))[_0xc4a3('0x22')](function(_0x332839){if(_0x332839){_0xf7174=_0x332839;_0x38a62b[_0xc4a3('0x30')]=_[_0xc4a3('0x2d')](db[_0xc4a3('0x47')][_0xc4a3('0x28')]);_0x38a62b[_0xc4a3('0x2c')]=_[_0xc4a3('0x2d')](_0x554be4[_0xc4a3('0x2c')]);_0x38a62b[_0xc4a3('0x2e')]=_[_0xc4a3('0x2f')](_0x38a62b[_0xc4a3('0x30')],_0x38a62b[_0xc4a3('0x2c')]);_0x38aa34[_0xc4a3('0x32')]=_[_0xc4a3('0x2f')](_0x38a62b['model'],qs[_0xc4a3('0x31')](_0x554be4[_0xc4a3('0x2c')][_0xc4a3('0x31')]));_0x38aa34[_0xc4a3('0x32')]=_0x38aa34[_0xc4a3('0x32')][_0xc4a3('0x33')]?_0x38aa34['attributes']:_0x38a62b[_0xc4a3('0x30')];_0x38aa34[_0xc4a3('0x35')]=qs[_0xc4a3('0x36')](_0x554be4['query'][_0xc4a3('0x36')]);_0x38aa34[_0xc4a3('0x37')]=qs[_0xc4a3('0x2e')](_[_0xc4a3('0x38')](_0x554be4[_0xc4a3('0x2c')],_0x38a62b[_0xc4a3('0x2e')]));if(_0x554be4[_0xc4a3('0x2c')][_0xc4a3('0x39')]){_0x38aa34['where']=_[_0xc4a3('0x3a')](_0x38aa34[_0xc4a3('0x37')],{'$or':_[_0xc4a3('0x2b')](_0x38aa34[_0xc4a3('0x32')],function(_0xb89ec){var _0x1df33c={};_0x1df33c[_0xb89ec]={'$like':'%'+_0x554be4[_0xc4a3('0x2c')][_0xc4a3('0x39')]+'%'};return _0x1df33c;})});}_0x38aa34=_[_0xc4a3('0x3a')]({},_0x38aa34,_0x554be4[_0xc4a3('0x3c')]);return _0xf7174[_0xc4a3('0x48')](_0x38aa34);}})[_0xc4a3('0x22')](function(_0x5891aa){if(_0x5891aa){_0x233d0c=_0x5891aa[_0xc4a3('0x33')];if(!_0x554be4[_0xc4a3('0x2c')][_0xc4a3('0x49')](_0xc4a3('0x34'))){_0x38aa34['limit']=qs[_0xc4a3('0x1c')](_0x554be4['query'][_0xc4a3('0x1c')]);_0x38aa34[_0xc4a3('0x1a')]=qs['offset'](_0x554be4[_0xc4a3('0x2c')][_0xc4a3('0x1a')]);}return _0xf7174['getConfigurations'](_0x38aa34);}})[_0xc4a3('0x22')](function(_0x309053){if(_0x309053){return _0x309053?{'count':_0x233d0c,'rows':_0x309053}:null;}})['then'](respondWithResult(_0x5e5c13,null))[_0xc4a3('0x3f')](handleError(_0x5e5c13,null));};exports[_0xc4a3('0x4a')]=function(_0x6c3f7e,_0x463341,_0x345f4c){if(_0x6c3f7e['body']['id']){delete _0x6c3f7e[_0xc4a3('0x45')]['id'];}return db[_0xc4a3('0x27')]['findOne']({'where':{'id':_0x6c3f7e['params']['id']}})['then'](handleEntityNotFound(_0x463341,null))['then'](function(_0x4d3e2b){if(_0x4d3e2b){_0x6c3f7e[_0xc4a3('0x45')][_0xc4a3('0x4b')]=_0x4d3e2b['id'];_0x6c3f7e[_0xc4a3('0x45')][_0xc4a3('0x4c')]=integrations[_0xc4a3('0x4d')](_0x6c3f7e['body'][_0xc4a3('0x4e')],_0x6c3f7e[_0xc4a3('0x45')][_0xc4a3('0x3b')]);_0x6c3f7e[_0xc4a3('0x45')][_0xc4a3('0x4f')]=integrations[_0xc4a3('0x50')](_0x6c3f7e[_0xc4a3('0x45')]['channel'],_0x6c3f7e[_0xc4a3('0x45')][_0xc4a3('0x3b')]);return db['SalesforceConfiguration'][_0xc4a3('0x44')](_0x6c3f7e[_0xc4a3('0x45')],{'include':[{'model':db[_0xc4a3('0x51')],'as':'Subjects'},{'model':db[_0xc4a3('0x51')],'as':_0xc4a3('0x4f')}]});}return null;})[_0xc4a3('0x22')](respondWithResult(_0x463341,null))[_0xc4a3('0x3f')](handleError(_0x463341,null));};exports[_0xc4a3('0x52')]=function(_0x4cc91d,_0x5669e6,_0x3734da){var _0x235159;var _0x2ee5a1='';var _0x2c22a9=_0xc4a3('0x53');return db[_0xc4a3('0x27')][_0xc4a3('0x46')]({'where':{'id':_0x4cc91d[_0xc4a3('0x41')]['id']},'attributes':['id',_0xc4a3('0x54'),_0xc4a3('0x55'),_0xc4a3('0x56'),_0xc4a3('0x57'),_0xc4a3('0x58'),_0xc4a3('0x59')]})[_0xc4a3('0x22')](handleEntityNotFound(_0x5669e6,null))[_0xc4a3('0x22')](function(_0x46fa7a){if(_0x46fa7a){_0x2ee5a1=_0x46fa7a[_0xc4a3('0x54')];var _0x5c97c2=_0x2ee5a1[_0xc4a3('0x5a')](-0x1);if(_0x5c97c2==='/'){_0x2ee5a1=_0x2ee5a1['substring'](0x0,_0x2ee5a1['lastIndexOf'](_0x5c97c2));}_0x235159=new jsforce['Connection']({'oauth2':{'loginUrl':_0x2ee5a1,'clientId':_0x46fa7a[_0xc4a3('0x55')],'clientSecret':_0x46fa7a[_0xc4a3('0x56')]}});return _0x235159[_0xc4a3('0x5b')](_0x46fa7a[_0xc4a3('0x57')],_0x46fa7a['password'][_0xc4a3('0x5c')](_0x46fa7a[_0xc4a3('0x59')]));}})[_0xc4a3('0x22')](function(_0xaf61a){if(_0xaf61a){if(!_[_0xc4a3('0x5d')](_0x4cc91d[_0xc4a3('0x2c')][_0xc4a3('0x5e')])){_0x2c22a9=_0x4cc91d[_0xc4a3('0x2c')][_0xc4a3('0x5e')];}return _0x235159[_0xc4a3('0x5f')](_0x2c22a9)[_0xc4a3('0x60')]();}})[_0xc4a3('0x22')](function(_0x36da67){var _0xbc8b4d=[_0xc4a3('0x61'),_0xc4a3('0x62'),'IsReminderSet',_0xc4a3('0x63'),_0xc4a3('0x64'),'Description'];var _0x2fe74f=[_0xc4a3('0x65'),_0xc4a3('0x66'),_0xc4a3('0x67'),_0xc4a3('0x68'),_0xc4a3('0x69'),_0xc4a3('0x6a'),_0xc4a3('0x6b')];if(_0x36da67){_[_0xc4a3('0x6c')](_0x36da67[_0xc4a3('0x31')],function(_0x20ac0d){return _0xbc8b4d[_0xc4a3('0x6d')](_0x20ac0d[_0xc4a3('0x25')])||!_0x2fe74f[_0xc4a3('0x6d')](_0x20ac0d['type']);});return{'count':_0x36da67['fields'][_0xc4a3('0x33')],'rows':_[_0xc4a3('0x2b')](_0x36da67[_0xc4a3('0x31')],function(_0xb0821c){return{'id':_0xb0821c[_0xc4a3('0x25')],'name':_0xb0821c[_0xc4a3('0x6e')],'custom':_0xb0821c[_0xc4a3('0x6f')],'options':_0xb0821c[_0xc4a3('0x70')][_0xc4a3('0x33')]>0x0?_[_0xc4a3('0x2b')](_0xb0821c['picklistValues'],function(_0xa439f0){return{'name':_0xa439f0[_0xc4a3('0x6e')],'value':_0xa439f0['value']};}):_0xb0821c[_0xc4a3('0x3b')]=='boolean'?[{'name':_0xc4a3('0x71'),'value':_0xc4a3('0x72')},{'name':'False','value':_0xc4a3('0x73')}]:[]};})};}})[_0xc4a3('0x22')](respondWithResult(_0x5669e6,null))[_0xc4a3('0x3f')](function(_0x223c76){var _0x5a3f63=_0x4cc91d[_0xc4a3('0x2c')]['test']?0x1f4:_0x223c76['statusCode']||0x1f4;logger['error'](_0xc4a3('0x74'),_0xc4a3('0x52'),_0x5a3f63,JSON[_0xc4a3('0x75')](_0x223c76));delete _0x223c76[_0xc4a3('0x25')];if(_0x5a3f63===0x191){_0x5a3f63=0x190;}_0x5669e6[_0xc4a3('0x17')](_0x5a3f63)[_0xc4a3('0x76')](_0x4cc91d['query'][_0xc4a3('0x77')]?{'message':_0xc4a3('0x78'),'statusCode':_0x223c76[_0xc4a3('0x79')]}:_0x223c76);});};
\ No newline at end of file
+var _0xf1b3=['rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','api','../../config/utils','../../config/license/util','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','SalesforceAccount','rawAttributes','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','type','filter','includeAll','include','findAll','rows','catch','show','params','merge','options','find','body','findOne','SalesforceConfiguration','getConfigurations','AccountId','getSubjects','channel','Descriptions','create','SalesforceField','getFields','Task','remoteUri','username','password','securityToken','slice','substring','Connection','clientId','clientSecret','login','concat','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','string','int','picklist','boolean','textarea','phone','remove','includes','label','custom','picklistValues','value','True','true','false','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0xf1b3,0xf7));var _0x3f1b=function(_0x18746c,_0x4be3c5){_0x18746c=_0x18746c-0x0;var _0x1d969b=_0xf1b3[_0x18746c];return _0x1d969b;};'use strict';var emlformat=require(_0x3f1b('0x0'));var rimraf=require(_0x3f1b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3f1b('0x2'));var rp=require(_0x3f1b('0x3'));var moment=require(_0x3f1b('0x4'));var BPromise=require(_0x3f1b('0x5'));var Mustache=require(_0x3f1b('0x6'));var util=require(_0x3f1b('0x7'));var path=require(_0x3f1b('0x8'));var sox=require(_0x3f1b('0x9'));var csv=require(_0x3f1b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3f1b('0xb'));var _=require('lodash');var squel=require(_0x3f1b('0xc'));var crypto=require(_0x3f1b('0xd'));var jsforce=require(_0x3f1b('0xe'));var deskjs=require(_0x3f1b('0xf'));var toCsv=require(_0x3f1b('0xa'));var querystring=require(_0x3f1b('0x10'));var Papa=require('papaparse');var Redis=require(_0x3f1b('0x11'));var authService=require(_0x3f1b('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3f1b('0x13'));var utils=require(_0x3f1b('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x3f1b('0x15'));var db=require('../../mysqldb')['db'];var integrations=require(_0x3f1b('0x16'));function respondWithStatusCode(_0x34672b,_0x2d0e26){_0x2d0e26=_0x2d0e26||0xcc;return function(_0x2abb80){if(_0x2abb80){return _0x34672b[_0x3f1b('0x17')](_0x2d0e26);}return _0x34672b['status'](_0x2d0e26)[_0x3f1b('0x18')]();};}function respondWithResult(_0x2111f1,_0x54cc46){_0x54cc46=_0x54cc46||0xc8;return function(_0x852017){if(_0x852017){return _0x2111f1[_0x3f1b('0x19')](_0x54cc46)[_0x3f1b('0x1a')](_0x852017);}};}function respondWithFilteredResult(_0x3ea577,_0x5ca0eb){return function(_0x38c0c3){if(_0x38c0c3){var _0x2e9540=typeof _0x5ca0eb[_0x3f1b('0x1b')]===_0x3f1b('0x1c')&&typeof _0x5ca0eb[_0x3f1b('0x1d')]===_0x3f1b('0x1c');var _0x3cd3ac=_0x38c0c3[_0x3f1b('0x1e')];var _0x9c5d0a=_0x2e9540?0x0:_0x5ca0eb[_0x3f1b('0x1b')];var _0x477345=_0x2e9540?_0x38c0c3[_0x3f1b('0x1e')]:_0x5ca0eb[_0x3f1b('0x1b')]+_0x5ca0eb['limit'];var _0x16d6f5;if(_0x477345>=_0x3cd3ac){_0x477345=_0x3cd3ac;_0x16d6f5=0xc8;}else{_0x16d6f5=0xce;}_0x3ea577['status'](_0x16d6f5);return _0x3ea577[_0x3f1b('0x1f')](_0x3f1b('0x20'),_0x9c5d0a+'-'+_0x477345+'/'+_0x3cd3ac)[_0x3f1b('0x1a')](_0x38c0c3);}return null;};}function patchUpdates(_0xcef7ca){return function(_0x251f1b){try{jsonpatch[_0x3f1b('0x21')](_0x251f1b,_0xcef7ca,!![]);}catch(_0x2dca06){return BPromise[_0x3f1b('0x22')](_0x2dca06);}return _0x251f1b['save']();};}function saveUpdates(_0x44cb90,_0x2ef630){return function(_0x21e552){if(_0x21e552){return _0x21e552[_0x3f1b('0x23')](_0x44cb90)[_0x3f1b('0x24')](function(_0x5ee7b3){return _0x5ee7b3;});}return null;};}function removeEntity(_0x192c0f,_0x4cede8){return function(_0x596905){if(_0x596905){return _0x596905[_0x3f1b('0x25')]()['then'](function(){_0x192c0f[_0x3f1b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x425920,_0x465bd8){return function(_0x52e75b){if(!_0x52e75b){_0x425920[_0x3f1b('0x17')](0x194);}return _0x52e75b;};}function handleError(_0x401a82,_0x19aeac){_0x19aeac=_0x19aeac||0x1f4;return function(_0x3a0de1){logger['error'](_0x3a0de1[_0x3f1b('0x26')]);if(_0x3a0de1[_0x3f1b('0x27')]){delete _0x3a0de1[_0x3f1b('0x27')];}_0x401a82[_0x3f1b('0x19')](_0x19aeac)[_0x3f1b('0x28')](_0x3a0de1);};}exports[_0x3f1b('0x29')]=function(_0x517964,_0xe2f1c3){var _0x46a39c={},_0x37750b={},_0x30f8c8={'count':0x0,'rows':[]};var _0x21b168=_[_0x3f1b('0x2a')](db[_0x3f1b('0x2b')][_0x3f1b('0x2c')],function(_0x8ab659){return{'name':_0x8ab659['fieldName'],'type':_0x8ab659['type'][_0x3f1b('0x2d')]};});_0x37750b['model']=_['map'](_0x21b168,'name');_0x37750b[_0x3f1b('0x2e')]=_[_0x3f1b('0x2f')](_0x517964[_0x3f1b('0x2e')]);_0x37750b[_0x3f1b('0x30')]=_[_0x3f1b('0x31')](_0x37750b['model'],_0x37750b[_0x3f1b('0x2e')]);_0x46a39c[_0x3f1b('0x32')]=_[_0x3f1b('0x31')](_0x37750b[_0x3f1b('0x33')],qs[_0x3f1b('0x34')](_0x517964[_0x3f1b('0x2e')][_0x3f1b('0x34')]));_0x46a39c['attributes']=_0x46a39c[_0x3f1b('0x32')][_0x3f1b('0x35')]?_0x46a39c[_0x3f1b('0x32')]:_0x37750b[_0x3f1b('0x33')];if(!_0x517964[_0x3f1b('0x2e')][_0x3f1b('0x36')](_0x3f1b('0x37'))){_0x46a39c[_0x3f1b('0x1d')]=qs[_0x3f1b('0x1d')](_0x517964[_0x3f1b('0x2e')][_0x3f1b('0x1d')]);_0x46a39c['offset']=qs['offset'](_0x517964['query'][_0x3f1b('0x1b')]);}_0x46a39c[_0x3f1b('0x38')]=qs[_0x3f1b('0x39')](_0x517964[_0x3f1b('0x2e')][_0x3f1b('0x39')]);_0x46a39c[_0x3f1b('0x3a')]=qs['filters'](_[_0x3f1b('0x3b')](_0x517964[_0x3f1b('0x2e')],_0x37750b[_0x3f1b('0x30')]),_0x21b168);if(_0x517964[_0x3f1b('0x2e')]['filter']){_0x46a39c[_0x3f1b('0x3a')]=_['merge'](_0x46a39c[_0x3f1b('0x3a')],{'$or':_[_0x3f1b('0x2a')](_0x21b168,function(_0x513830){if(_0x513830[_0x3f1b('0x3c')]!=='VIRTUAL'){var _0x56cf28={};_0x56cf28[_0x513830[_0x3f1b('0x27')]]={'$like':'%'+_0x517964[_0x3f1b('0x2e')][_0x3f1b('0x3d')]+'%'};return _0x56cf28;}})});}_0x46a39c=_['merge']({},_0x46a39c,_0x517964['options']);var _0x49d48a={'where':_0x46a39c['where']};return db[_0x3f1b('0x2b')][_0x3f1b('0x1e')](_0x49d48a)['then'](function(_0x136662){_0x30f8c8[_0x3f1b('0x1e')]=_0x136662;if(_0x517964[_0x3f1b('0x2e')][_0x3f1b('0x3e')]){_0x46a39c[_0x3f1b('0x3f')]=[{'all':!![]}];}return db[_0x3f1b('0x2b')][_0x3f1b('0x40')](_0x46a39c);})[_0x3f1b('0x24')](function(_0x24a139){_0x30f8c8[_0x3f1b('0x41')]=_0x24a139;return _0x30f8c8;})[_0x3f1b('0x24')](respondWithFilteredResult(_0xe2f1c3,_0x46a39c))[_0x3f1b('0x42')](handleError(_0xe2f1c3,null));};exports[_0x3f1b('0x43')]=function(_0x5ef229,_0x22335a){var _0x4e8205={'raw':![],'where':{'id':_0x5ef229[_0x3f1b('0x44')]['id']}},_0x55c275={};_0x55c275[_0x3f1b('0x33')]=_[_0x3f1b('0x2f')](db[_0x3f1b('0x2b')][_0x3f1b('0x2c')]);_0x55c275['query']=_[_0x3f1b('0x2f')](_0x5ef229[_0x3f1b('0x2e')]);_0x55c275[_0x3f1b('0x30')]=_[_0x3f1b('0x31')](_0x55c275['model'],_0x55c275['query']);_0x4e8205[_0x3f1b('0x32')]=_[_0x3f1b('0x31')](_0x55c275[_0x3f1b('0x33')],qs[_0x3f1b('0x34')](_0x5ef229[_0x3f1b('0x2e')][_0x3f1b('0x34')]));_0x4e8205[_0x3f1b('0x32')]=_0x4e8205['attributes'][_0x3f1b('0x35')]?_0x4e8205[_0x3f1b('0x32')]:_0x55c275[_0x3f1b('0x33')];if(_0x5ef229['query']['includeAll']){_0x4e8205[_0x3f1b('0x3f')]=[{'all':!![]}];}_0x4e8205=_[_0x3f1b('0x45')]({},_0x4e8205,_0x5ef229[_0x3f1b('0x46')]);return db[_0x3f1b('0x2b')][_0x3f1b('0x47')](_0x4e8205)[_0x3f1b('0x24')](handleEntityNotFound(_0x22335a,null))[_0x3f1b('0x24')](respondWithResult(_0x22335a,null))[_0x3f1b('0x42')](handleError(_0x22335a,null));};exports['create']=function(_0x1888a9,_0x5705aa){return db[_0x3f1b('0x2b')]['create'](_0x1888a9[_0x3f1b('0x48')],{})[_0x3f1b('0x24')](respondWithResult(_0x5705aa,0xc9))['catch'](handleError(_0x5705aa,null));};exports[_0x3f1b('0x23')]=function(_0x5dcbad,_0x4438ed){if(_0x5dcbad[_0x3f1b('0x48')]['id']){delete _0x5dcbad[_0x3f1b('0x48')]['id'];}return db['SalesforceAccount'][_0x3f1b('0x47')]({'where':{'id':_0x5dcbad[_0x3f1b('0x44')]['id']}})[_0x3f1b('0x24')](handleEntityNotFound(_0x4438ed,null))[_0x3f1b('0x24')](saveUpdates(_0x5dcbad[_0x3f1b('0x48')],null))['then'](respondWithResult(_0x4438ed,null))[_0x3f1b('0x42')](handleError(_0x4438ed,null));};exports[_0x3f1b('0x25')]=function(_0x40c2ea,_0x35199a){return db[_0x3f1b('0x2b')][_0x3f1b('0x47')]({'where':{'id':_0x40c2ea[_0x3f1b('0x44')]['id']}})[_0x3f1b('0x24')](handleEntityNotFound(_0x35199a,null))[_0x3f1b('0x24')](removeEntity(_0x35199a,null))[_0x3f1b('0x42')](handleError(_0x35199a,null));};exports['getConfigurations']=function(_0x264fa0,_0x327a23,_0xff097){var _0x4fa59f={};var _0xa0b452={};var _0x3436aa;var _0x5d87ef;return db[_0x3f1b('0x2b')][_0x3f1b('0x49')]({'where':{'id':_0x264fa0[_0x3f1b('0x44')]['id']}})['then'](handleEntityNotFound(_0x327a23,null))['then'](function(_0x53f401){if(_0x53f401){_0x3436aa=_0x53f401;_0xa0b452[_0x3f1b('0x33')]=_[_0x3f1b('0x2f')](db[_0x3f1b('0x4a')][_0x3f1b('0x2c')]);_0xa0b452[_0x3f1b('0x2e')]=_[_0x3f1b('0x2f')](_0x264fa0['query']);_0xa0b452[_0x3f1b('0x30')]=_[_0x3f1b('0x31')](_0xa0b452[_0x3f1b('0x33')],_0xa0b452['query']);_0x4fa59f['attributes']=_['intersection'](_0xa0b452[_0x3f1b('0x33')],qs[_0x3f1b('0x34')](_0x264fa0['query'][_0x3f1b('0x34')]));_0x4fa59f['attributes']=_0x4fa59f['attributes'][_0x3f1b('0x35')]?_0x4fa59f[_0x3f1b('0x32')]:_0xa0b452['model'];_0x4fa59f[_0x3f1b('0x38')]=qs['sort'](_0x264fa0[_0x3f1b('0x2e')][_0x3f1b('0x39')]);_0x4fa59f[_0x3f1b('0x3a')]=qs[_0x3f1b('0x30')](_[_0x3f1b('0x3b')](_0x264fa0[_0x3f1b('0x2e')],_0xa0b452[_0x3f1b('0x30')]));if(_0x264fa0[_0x3f1b('0x2e')][_0x3f1b('0x3d')]){_0x4fa59f[_0x3f1b('0x3a')]=_['merge'](_0x4fa59f[_0x3f1b('0x3a')],{'$or':_[_0x3f1b('0x2a')](_0x4fa59f['attributes'],function(_0x26c98e){var _0x4a21db={};_0x4a21db[_0x26c98e]={'$like':'%'+_0x264fa0[_0x3f1b('0x2e')][_0x3f1b('0x3d')]+'%'};return _0x4a21db;})});}_0x4fa59f=_['merge']({},_0x4fa59f,_0x264fa0[_0x3f1b('0x46')]);return _0x3436aa[_0x3f1b('0x4b')](_0x4fa59f);}})['then'](function(_0x273db0){if(_0x273db0){_0x5d87ef=_0x273db0[_0x3f1b('0x35')];if(!_0x264fa0[_0x3f1b('0x2e')][_0x3f1b('0x36')](_0x3f1b('0x37'))){_0x4fa59f[_0x3f1b('0x1d')]=qs[_0x3f1b('0x1d')](_0x264fa0[_0x3f1b('0x2e')][_0x3f1b('0x1d')]);_0x4fa59f[_0x3f1b('0x1b')]=qs[_0x3f1b('0x1b')](_0x264fa0[_0x3f1b('0x2e')][_0x3f1b('0x1b')]);}return _0x3436aa[_0x3f1b('0x4b')](_0x4fa59f);}})[_0x3f1b('0x24')](function(_0x3efe34){if(_0x3efe34){return _0x3efe34?{'count':_0x5d87ef,'rows':_0x3efe34}:null;}})[_0x3f1b('0x24')](respondWithResult(_0x327a23,null))['catch'](handleError(_0x327a23,null));};exports['addConfiguration']=function(_0x5bdb54,_0x26496c,_0x425a22){if(_0x5bdb54[_0x3f1b('0x48')]['id']){delete _0x5bdb54[_0x3f1b('0x48')]['id'];}return db[_0x3f1b('0x2b')][_0x3f1b('0x49')]({'where':{'id':_0x5bdb54[_0x3f1b('0x44')]['id']}})['then'](handleEntityNotFound(_0x26496c,null))[_0x3f1b('0x24')](function(_0x1ce7a3){if(_0x1ce7a3){_0x5bdb54['body'][_0x3f1b('0x4c')]=_0x1ce7a3['id'];_0x5bdb54[_0x3f1b('0x48')]['Subjects']=integrations[_0x3f1b('0x4d')](_0x5bdb54['body'][_0x3f1b('0x4e')],_0x5bdb54['body'][_0x3f1b('0x3c')]);_0x5bdb54[_0x3f1b('0x48')][_0x3f1b('0x4f')]=integrations['getDescriptions'](_0x5bdb54[_0x3f1b('0x48')]['channel'],_0x5bdb54[_0x3f1b('0x48')][_0x3f1b('0x3c')]);return db['SalesforceConfiguration'][_0x3f1b('0x50')](_0x5bdb54[_0x3f1b('0x48')],{'include':[{'model':db[_0x3f1b('0x51')],'as':'Subjects'},{'model':db[_0x3f1b('0x51')],'as':_0x3f1b('0x4f')}]});}return null;})[_0x3f1b('0x24')](respondWithResult(_0x26496c,null))[_0x3f1b('0x42')](handleError(_0x26496c,null));};exports[_0x3f1b('0x52')]=function(_0x5b69d2,_0x5ef106,_0x2c12fc){var _0x4b32c8;var _0x2c1d1c='';var _0x38bb2e=_0x3f1b('0x53');return db[_0x3f1b('0x2b')][_0x3f1b('0x49')]({'where':{'id':_0x5b69d2[_0x3f1b('0x44')]['id']},'attributes':['id',_0x3f1b('0x54'),'clientId','clientSecret',_0x3f1b('0x55'),_0x3f1b('0x56'),_0x3f1b('0x57')]})[_0x3f1b('0x24')](handleEntityNotFound(_0x5ef106,null))[_0x3f1b('0x24')](function(_0x558dd){if(_0x558dd){_0x2c1d1c=_0x558dd[_0x3f1b('0x54')];var _0x370ac0=_0x2c1d1c[_0x3f1b('0x58')](-0x1);if(_0x370ac0==='/'){_0x2c1d1c=_0x2c1d1c[_0x3f1b('0x59')](0x0,_0x2c1d1c['lastIndexOf'](_0x370ac0));}_0x4b32c8=new jsforce[(_0x3f1b('0x5a'))]({'oauth2':{'loginUrl':_0x2c1d1c,'clientId':_0x558dd[_0x3f1b('0x5b')],'clientSecret':_0x558dd[_0x3f1b('0x5c')]}});return _0x4b32c8[_0x3f1b('0x5d')](_0x558dd['username'],_0x558dd[_0x3f1b('0x56')][_0x3f1b('0x5e')](_0x558dd[_0x3f1b('0x57')]));}})[_0x3f1b('0x24')](function(_0x496a66){if(_0x496a66){if(!_['isNil'](_0x5b69d2[_0x3f1b('0x2e')]['ticketType'])){_0x38bb2e=_0x5b69d2[_0x3f1b('0x2e')]['ticketType'];}return _0x4b32c8[_0x3f1b('0x5f')](_0x38bb2e)[_0x3f1b('0x60')]();}})[_0x3f1b('0x24')](function(_0x4813d2){var _0x266f09=[_0x3f1b('0x61'),_0x3f1b('0x62'),_0x3f1b('0x63'),_0x3f1b('0x64'),_0x3f1b('0x65'),_0x3f1b('0x66')];var _0x520047=[_0x3f1b('0x67'),_0x3f1b('0x68'),_0x3f1b('0x69'),_0x3f1b('0x6a'),'email',_0x3f1b('0x6b'),_0x3f1b('0x6c')];if(_0x4813d2){_[_0x3f1b('0x6d')](_0x4813d2[_0x3f1b('0x34')],function(_0x4d2e56){return _0x266f09[_0x3f1b('0x6e')](_0x4d2e56[_0x3f1b('0x27')])||!_0x520047[_0x3f1b('0x6e')](_0x4d2e56[_0x3f1b('0x3c')]);});return{'count':_0x4813d2[_0x3f1b('0x34')][_0x3f1b('0x35')],'rows':_[_0x3f1b('0x2a')](_0x4813d2[_0x3f1b('0x34')],function(_0x12c7ed){return{'id':_0x12c7ed[_0x3f1b('0x27')],'name':_0x12c7ed[_0x3f1b('0x6f')],'custom':_0x12c7ed[_0x3f1b('0x70')],'options':_0x12c7ed[_0x3f1b('0x71')][_0x3f1b('0x35')]>0x0?_['map'](_0x12c7ed['picklistValues'],function(_0x193e4b){return{'name':_0x193e4b['label'],'value':_0x193e4b[_0x3f1b('0x72')]};}):_0x12c7ed[_0x3f1b('0x3c')]==_0x3f1b('0x6a')?[{'name':_0x3f1b('0x73'),'value':_0x3f1b('0x74')},{'name':'False','value':_0x3f1b('0x75')}]:[]};})};}})[_0x3f1b('0x24')](respondWithResult(_0x5ef106,null))['catch'](function(_0x1caed7){var _0x2206b3=_0x5b69d2[_0x3f1b('0x2e')][_0x3f1b('0x76')]?0x1f4:_0x1caed7[_0x3f1b('0x77')]||0x1f4;logger[_0x3f1b('0x78')](_0x3f1b('0x79'),_0x3f1b('0x52'),_0x2206b3,JSON[_0x3f1b('0x7a')](_0x1caed7));delete _0x1caed7[_0x3f1b('0x27')];if(_0x2206b3===0x191){_0x2206b3=0x190;}_0x5ef106['status'](_0x2206b3)['send'](_0x5b69d2[_0x3f1b('0x2e')][_0x3f1b('0x76')]?{'message':_0x3f1b('0x7b'),'statusCode':_0x1caed7[_0x3f1b('0x77')]}:_0x1caed7);});};
\ No newline at end of file
index 90da9d4..e2f2e90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27d3=['define','SalesforceAccount','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x69a23c,_0x386b96){var _0x1975a5=function(_0x485419){while(--_0x485419){_0x69a23c['push'](_0x69a23c['shift']());}};_0x1975a5(++_0x386b96);}(_0x27d3,0xca));var _0x327d=function(_0x2112d4,_0x3c863c){_0x2112d4=_0x2112d4-0x0;var _0x434972=_0x27d3[_0x2112d4];return _0x434972;};'use strict';var _=require(_0x327d('0x0'));var util=require('util');var logger=require(_0x327d('0x1'))('api');var moment=require(_0x327d('0x2'));var BPromise=require(_0x327d('0x3'));var rp=require(_0x327d('0x4'));var fs=require('fs');var path=require(_0x327d('0x5'));var rimraf=require(_0x327d('0x6'));var config=require(_0x327d('0x7'));var attributes=require('./intSalesforceAccount.attributes');var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x583cd8,_0x275ee3){return _0x583cd8[_0x327d('0x8')](_0x327d('0x9'),attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa04d=['util','../../config/logger','moment','bluebird','request-promise','path','../../components/integrations/configuration','exports','define','SalesforceAccount'];(function(_0x2ef111,_0x1851ad){var _0x95250a=function(_0x1ebb64){while(--_0x1ebb64){_0x2ef111['push'](_0x2ef111['shift']());}};_0x95250a(++_0x1851ad);}(_0xa04d,0x118));var _0xda04=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa04d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xda04('0x0'));var logger=require(_0xda04('0x1'))('api');var moment=require(_0xda04('0x2'));var BPromise=require(_0xda04('0x3'));var rp=require(_0xda04('0x4'));var fs=require('fs');var path=require(_0xda04('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intSalesforceAccount.attributes');var integrations=require(_0xda04('0x6'));module[_0xda04('0x7')]=function(_0x40a9ce,_0x55a8b6){return _0x40a9ce[_0xda04('0x8')](_0xda04('0x9'),attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 95ef101..64eeb95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96cf=['request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','code','message','error','result','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','raw','where','attributes','limit','include','map','model','stringify','ShowSalesforceAccount','find','lodash','util','ioredis','../../config/utils','rpc','../../config/environment','client'];(function(_0x375bec,_0x2f32d9){var _0x3cb1f1=function(_0x45fff8){while(--_0x45fff8){_0x375bec['push'](_0x375bec['shift']());}};_0x3cb1f1(++_0x2f32d9);}(_0x96cf,0x143));var _0xf96c=function(_0x22151c,_0x5d44f8){_0x22151c=_0x22151c-0x0;var _0x4f5c87=_0x96cf[_0x22151c];return _0x4f5c87;};'use strict';var _=require(_0xf96c('0x0'));var util=require(_0xf96c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf96c('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xf96c('0x3'));var logger=require('../../config/logger')(_0xf96c('0x4'));var config=require(_0xf96c('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xf96c('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x31a171,_0x3bd1e5,_0x3c0f15){return new BPromise(function(_0x3ba7e7,_0x15711d){return client[_0xf96c('0x7')](_0x31a171,_0x3c0f15)[_0xf96c('0x8')](function(_0x4a7a7e){logger[_0xf96c('0x9')](_0xf96c('0xa'),_0x3bd1e5,_0xf96c('0xb'));logger[_0xf96c('0xc')](_0xf96c('0xd'),_0x3bd1e5,_0xf96c('0xb'),JSON['stringify'](_0x4a7a7e));if(_0x4a7a7e['error']){if(_0x4a7a7e['error'][_0xf96c('0xe')]===0x1f4){logger['error'](_0xf96c('0xa'),_0x3bd1e5,_0x4a7a7e['error'][_0xf96c('0xf')]);return _0x15711d(_0x4a7a7e[_0xf96c('0x10')][_0xf96c('0xf')]);}logger[_0xf96c('0x10')](_0xf96c('0xa'),_0x3bd1e5,_0x4a7a7e['error']['message']);return _0x3ba7e7(_0x4a7a7e['error'][_0xf96c('0xf')]);}else{logger[_0xf96c('0x9')](_0xf96c('0xa'),_0x3bd1e5,_0xf96c('0xb'));_0x3ba7e7(_0x4a7a7e[_0xf96c('0x11')][_0xf96c('0xf')]);}})[_0xf96c('0x12')](function(_0x13a9f6){logger[_0xf96c('0x10')]('SalesforceAccount,\x20%s,\x20%s',_0x3bd1e5,_0x13a9f6);_0x15711d(_0x13a9f6);});});}exports[_0xf96c('0x13')]=function(_0x50f76e){var _0x553b5e=this;return new Promise(function(_0xfffcad,_0x10ab39){return db[_0xf96c('0x14')][_0xf96c('0x15')]({'raw':_0x50f76e['options']?_0x50f76e[_0xf96c('0x16')][_0xf96c('0x17')]===undefined?!![]:![]:!![],'where':_0x50f76e[_0xf96c('0x16')]?_0x50f76e[_0xf96c('0x16')][_0xf96c('0x18')]||null:null,'attributes':_0x50f76e['options']?_0x50f76e[_0xf96c('0x16')][_0xf96c('0x19')]||null:null,'limit':_0x50f76e[_0xf96c('0x16')]?_0x50f76e[_0xf96c('0x16')][_0xf96c('0x1a')]||null:null,'include':_0x50f76e[_0xf96c('0x16')]?_0x50f76e[_0xf96c('0x16')][_0xf96c('0x1b')]?_[_0xf96c('0x1c')](_0x50f76e[_0xf96c('0x16')][_0xf96c('0x1b')],function(_0x877ffe){return{'model':db[_0x877ffe['model']],'as':_0x877ffe['as'],'attributes':_0x877ffe[_0xf96c('0x19')],'include':_0x877ffe[_0xf96c('0x1b')]?_['map'](_0x877ffe[_0xf96c('0x1b')],function(_0x4c3533){return{'model':db[_0x4c3533[_0xf96c('0x1d')]],'as':_0x4c3533['as'],'attributes':_0x4c3533[_0xf96c('0x19')],'include':_0x4c3533['include']?_[_0xf96c('0x1c')](_0x4c3533[_0xf96c('0x1b')],function(_0x1d12b5){return{'model':db[_0x1d12b5['model']],'as':_0x1d12b5['as'],'attributes':_0x1d12b5[_0xf96c('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xe22f5){logger[_0xf96c('0x9')]('GetSalesforceAccount',_0x50f76e);logger[_0xf96c('0xc')](_0xf96c('0x13'),_0x50f76e,JSON[_0xf96c('0x1e')](_0xe22f5));_0xfffcad(_0xe22f5);})[_0xf96c('0x12')](function(_0x49af6f){logger[_0xf96c('0x10')]('GetSalesforceAccount',_0x49af6f[_0xf96c('0xf')],_0x50f76e);_0x10ab39(_0x553b5e[_0xf96c('0x10')](0x1f4,_0x49af6f[_0xf96c('0xf')]));});});};exports[_0xf96c('0x1f')]=function(_0x2200c6){var _0x4c43a9=this;return new Promise(function(_0x274bb2,_0x13a000){return db[_0xf96c('0x14')][_0xf96c('0x20')]({'raw':_0x2200c6['options']?_0x2200c6['options'][_0xf96c('0x17')]===undefined?!![]:![]:!![],'where':_0x2200c6['options']?_0x2200c6[_0xf96c('0x16')][_0xf96c('0x18')]||null:null,'attributes':_0x2200c6['options']?_0x2200c6[_0xf96c('0x16')]['attributes']||null:null,'include':_0x2200c6[_0xf96c('0x16')]?_0x2200c6[_0xf96c('0x16')]['include']?_[_0xf96c('0x1c')](_0x2200c6['options'][_0xf96c('0x1b')],function(_0x928a8d){return{'model':db[_0x928a8d['model']],'as':_0x928a8d['as'],'attributes':_0x928a8d[_0xf96c('0x19')],'include':_0x928a8d[_0xf96c('0x1b')]?_[_0xf96c('0x1c')](_0x928a8d['include'],function(_0x3e8c4a){return{'model':db[_0x3e8c4a['model']],'as':_0x3e8c4a['as'],'attributes':_0x3e8c4a[_0xf96c('0x19')],'include':_0x3e8c4a['include']?_[_0xf96c('0x1c')](_0x3e8c4a[_0xf96c('0x1b')],function(_0x14d338){return{'model':db[_0x14d338[_0xf96c('0x1d')]],'as':_0x14d338['as'],'attributes':_0x14d338[_0xf96c('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x93da29){logger['info'](_0xf96c('0x1f'),_0x2200c6);logger[_0xf96c('0xc')](_0xf96c('0x1f'),_0x2200c6,JSON['stringify'](_0x93da29));_0x274bb2(_0x93da29);})[_0xf96c('0x12')](function(_0x3dd9ea){logger[_0xf96c('0x10')](_0xf96c('0x1f'),_0x3dd9ea['message'],_0x2200c6);_0x13a000(_0x4c43a9[_0xf96c('0x10')](0x1f4,_0x3dd9ea[_0xf96c('0xf')]));});});};
\ No newline at end of file
+var _0x76c1=['SalesforceAccount,\x20%s,\x20%s','message','result','catch','GetSalesforceAccount','SalesforceAccount','options','raw','attributes','limit','include','map','model','then','ShowSalesforceAccount','find','where','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','http','info','request\x20sent','debug','stringify','error','code'];(function(_0x570e00,_0x21cc07){var _0xee81da=function(_0x1c7f35){while(--_0x1c7f35){_0x570e00['push'](_0x570e00['shift']());}};_0xee81da(++_0x21cc07);}(_0x76c1,0x15b));var _0x176c=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x76c1[_0x68c979];return _0x4f0001;};'use strict';var _=require(_0x176c('0x0'));var util=require(_0x176c('0x1'));var moment=require(_0x176c('0x2'));var BPromise=require(_0x176c('0x3'));var rs=require(_0x176c('0x4'));var fs=require('fs');var Redis=require(_0x176c('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x176c('0x6'))(_0x176c('0x7'));var config=require(_0x176c('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x176c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x329a5e,_0x51d219,_0x1ae05b){return new BPromise(function(_0x3fc769,_0x40c110){return client['request'](_0x329a5e,_0x1ae05b)['then'](function(_0x27c52f){logger[_0x176c('0xa')]('SalesforceAccount,\x20%s,\x20%s',_0x51d219,_0x176c('0xb'));logger[_0x176c('0xc')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x51d219,_0x176c('0xb'),JSON[_0x176c('0xd')](_0x27c52f));if(_0x27c52f[_0x176c('0xe')]){if(_0x27c52f['error'][_0x176c('0xf')]===0x1f4){logger['error'](_0x176c('0x10'),_0x51d219,_0x27c52f[_0x176c('0xe')]['message']);return _0x40c110(_0x27c52f[_0x176c('0xe')]['message']);}logger[_0x176c('0xe')](_0x176c('0x10'),_0x51d219,_0x27c52f[_0x176c('0xe')][_0x176c('0x11')]);return _0x3fc769(_0x27c52f['error'][_0x176c('0x11')]);}else{logger['info'](_0x176c('0x10'),_0x51d219,_0x176c('0xb'));_0x3fc769(_0x27c52f[_0x176c('0x12')][_0x176c('0x11')]);}})[_0x176c('0x13')](function(_0xaf2ef9){logger[_0x176c('0xe')]('SalesforceAccount,\x20%s,\x20%s',_0x51d219,_0xaf2ef9);_0x40c110(_0xaf2ef9);});});}exports[_0x176c('0x14')]=function(_0x2b33c3){var _0x4301fc=this;return new Promise(function(_0x5168f6,_0x384246){return db[_0x176c('0x15')]['findAll']({'raw':_0x2b33c3['options']?_0x2b33c3[_0x176c('0x16')][_0x176c('0x17')]===undefined?!![]:![]:!![],'where':_0x2b33c3[_0x176c('0x16')]?_0x2b33c3[_0x176c('0x16')]['where']||null:null,'attributes':_0x2b33c3[_0x176c('0x16')]?_0x2b33c3[_0x176c('0x16')][_0x176c('0x18')]||null:null,'limit':_0x2b33c3[_0x176c('0x16')]?_0x2b33c3[_0x176c('0x16')][_0x176c('0x19')]||null:null,'include':_0x2b33c3[_0x176c('0x16')]?_0x2b33c3[_0x176c('0x16')][_0x176c('0x1a')]?_[_0x176c('0x1b')](_0x2b33c3[_0x176c('0x16')][_0x176c('0x1a')],function(_0x22c7ce){return{'model':db[_0x22c7ce[_0x176c('0x1c')]],'as':_0x22c7ce['as'],'attributes':_0x22c7ce['attributes'],'include':_0x22c7ce[_0x176c('0x1a')]?_[_0x176c('0x1b')](_0x22c7ce[_0x176c('0x1a')],function(_0x1e9815){return{'model':db[_0x1e9815['model']],'as':_0x1e9815['as'],'attributes':_0x1e9815['attributes'],'include':_0x1e9815['include']?_[_0x176c('0x1b')](_0x1e9815[_0x176c('0x1a')],function(_0x482bb8){return{'model':db[_0x482bb8['model']],'as':_0x482bb8['as'],'attributes':_0x482bb8[_0x176c('0x18')]};}):[]};}):[]};}):[]:[]})[_0x176c('0x1d')](function(_0x33bd16){logger[_0x176c('0xa')]('GetSalesforceAccount',_0x2b33c3);logger[_0x176c('0xc')](_0x176c('0x14'),_0x2b33c3,JSON['stringify'](_0x33bd16));_0x5168f6(_0x33bd16);})[_0x176c('0x13')](function(_0x1132f5){logger['error'](_0x176c('0x14'),_0x1132f5['message'],_0x2b33c3);_0x384246(_0x4301fc[_0x176c('0xe')](0x1f4,_0x1132f5[_0x176c('0x11')]));});});};exports[_0x176c('0x1e')]=function(_0x36ddc6){var _0x354ce3=this;return new Promise(function(_0x178b16,_0x37714e){return db[_0x176c('0x15')][_0x176c('0x1f')]({'raw':_0x36ddc6[_0x176c('0x16')]?_0x36ddc6['options'][_0x176c('0x17')]===undefined?!![]:![]:!![],'where':_0x36ddc6[_0x176c('0x16')]?_0x36ddc6['options'][_0x176c('0x20')]||null:null,'attributes':_0x36ddc6['options']?_0x36ddc6[_0x176c('0x16')]['attributes']||null:null,'include':_0x36ddc6[_0x176c('0x16')]?_0x36ddc6['options'][_0x176c('0x1a')]?_[_0x176c('0x1b')](_0x36ddc6[_0x176c('0x16')][_0x176c('0x1a')],function(_0x41513a){return{'model':db[_0x41513a[_0x176c('0x1c')]],'as':_0x41513a['as'],'attributes':_0x41513a[_0x176c('0x18')],'include':_0x41513a[_0x176c('0x1a')]?_[_0x176c('0x1b')](_0x41513a[_0x176c('0x1a')],function(_0x567690){return{'model':db[_0x567690['model']],'as':_0x567690['as'],'attributes':_0x567690['attributes'],'include':_0x567690['include']?_['map'](_0x567690[_0x176c('0x1a')],function(_0x2393f2){return{'model':db[_0x2393f2[_0x176c('0x1c')]],'as':_0x2393f2['as'],'attributes':_0x2393f2[_0x176c('0x18')]};}):[]};}):[]};}):[]:[]})[_0x176c('0x1d')](function(_0x47acd9){logger[_0x176c('0xa')](_0x176c('0x1e'),_0x36ddc6);logger[_0x176c('0xc')](_0x176c('0x1e'),_0x36ddc6,JSON[_0x176c('0xd')](_0x47acd9));_0x178b16(_0x47acd9);})['catch'](function(_0x420d89){logger[_0x176c('0xe')](_0x176c('0x1e'),_0x420d89[_0x176c('0x11')],_0x36ddc6);_0x37714e(_0x354ce3['error'](0x1f4,_0x420d89[_0x176c('0x11')]));});});};
\ No newline at end of file
index 05eaf22..47a930e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','delete','destroy','exports','util','connect-timeout','express'];(function(_0x276852,_0x142d6e){var _0x53e28a=function(_0xc206b6){while(--_0xc206b6){_0x276852['push'](_0x276852['shift']());}};_0x53e28a(++_0x142d6e);}(_0xadb5,0xad));var _0x5adb=function(_0x16beb9,_0x3afd18){_0x16beb9=_0x16beb9-0x0;var _0x23ce8a=_0xadb5[_0x16beb9];return _0x23ce8a;};'use strict';var multer=require('multer');var util=require(_0x5adb('0x0'));var path=require('path');var timeout=require(_0x5adb('0x1'));var express=require(_0x5adb('0x2'));var router=express[_0x5adb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5adb('0x4'));var interaction=require(_0x5adb('0x5'));var config=require(_0x5adb('0x6'));var controller=require('./intSalesforceConfiguration.controller');router[_0x5adb('0x7')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0x9')]);router[_0x5adb('0x7')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xb')]);router[_0x5adb('0x7')](_0x5adb('0xc'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xd')]);router[_0x5adb('0x7')](_0x5adb('0xe'),auth[_0x5adb('0x8')](),controller['getSubjects']);router['get'](_0x5adb('0xf'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x10')]);router['post']('/',auth[_0x5adb('0x8')](),controller['create']);router[_0x5adb('0x11')]('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x12')]);router[_0x5adb('0x13')]('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x14')]);module[_0x5adb('0x15')]=router;
\ No newline at end of file
+var _0x2ef3=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intSalesforceConfiguration.controller','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','exports','multer','util','path'];(function(_0x1c8e80,_0x253fcb){var _0x13e641=function(_0x45e615){while(--_0x45e615){_0x1c8e80['push'](_0x1c8e80['shift']());}};_0x13e641(++_0x253fcb);}(_0x2ef3,0xba));var _0x32ef=function(_0x534a42,_0x12df54){_0x534a42=_0x534a42-0x0;var _0x2ceace=_0x2ef3[_0x534a42];return _0x2ceace;};'use strict';var multer=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var path=require(_0x32ef('0x2'));var timeout=require(_0x32ef('0x3'));var express=require(_0x32ef('0x4'));var router=express[_0x32ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x32ef('0x6'));var interaction=require(_0x32ef('0x7'));var config=require('../../config/environment');var controller=require(_0x32ef('0x8'));router[_0x32ef('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x32ef('0x9')](_0x32ef('0xa'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xc')]);router[_0x32ef('0x9')](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xe')]);router[_0x32ef('0x9')](_0x32ef('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x32ef('0x9')](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x11')]);router['post']('/',auth[_0x32ef('0xb')](),controller['create']);router[_0x32ef('0x12')]('/:id',auth[_0x32ef('0xb')](),controller[_0x32ef('0x13')]);router['delete']('/:id',auth[_0x32ef('0xb')](),controller['destroy']);module[_0x32ef('0x14')]=router;
\ No newline at end of file
index 819d722..dd353d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d33=['Task','Case','contact','lead','account','nothing','sequelize','exports','STRING','ENUM'];(function(_0x22a452,_0x166e5f){var _0x509447=function(_0x52a16d){while(--_0x52a16d){_0x22a452['push'](_0x22a452['shift']());}};_0x509447(++_0x166e5f);}(_0x7d33,0xec));var _0x37d3=function(_0x498118,_0x1c8762){_0x498118=_0x498118-0x0;var _0x5d5617=_0x7d33[_0x498118];return _0x5d5617;};'use strict';var Sequelize=require(_0x37d3('0x0'));module[_0x37d3('0x1')]={'name':{'type':Sequelize[_0x37d3('0x2')]},'description':{'type':Sequelize[_0x37d3('0x2')]},'ticketType':{'type':Sequelize[_0x37d3('0x3')](_0x37d3('0x4'),_0x37d3('0x5')),'defaultValue':_0x37d3('0x4')},'moduleSearch':{'type':Sequelize[_0x37d3('0x3')]('contact_lead',_0x37d3('0x6'),_0x37d3('0x7'),'account_contact_lead',_0x37d3('0x8')),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize[_0x37d3('0x3')](_0x37d3('0x9'),_0x37d3('0x6'),_0x37d3('0x7'),_0x37d3('0x8')),'defaultValue':_0x37d3('0x7')},'leadId':{'type':Sequelize[_0x37d3('0x2')]},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0x37d3('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x37d3('0x2')]}};
\ No newline at end of file
+var _0x5072=['account_contact_lead','account','nothing','sequelize','exports','STRING','ENUM','Task','Case','contact_lead','contact','lead'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5072,0xf3));var _0x2507=function(_0x55dbbe,_0x39562a){_0x55dbbe=_0x55dbbe-0x0;var _0x16072e=_0x5072[_0x55dbbe];return _0x16072e;};'use strict';var Sequelize=require(_0x2507('0x0'));module[_0x2507('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x2507('0x2')]},'ticketType':{'type':Sequelize[_0x2507('0x3')](_0x2507('0x4'),_0x2507('0x5')),'defaultValue':_0x2507('0x4')},'moduleSearch':{'type':Sequelize[_0x2507('0x3')](_0x2507('0x6'),_0x2507('0x7'),_0x2507('0x8'),_0x2507('0x9'),_0x2507('0xa')),'defaultValue':_0x2507('0x6')},'moduleCreate':{'type':Sequelize[_0x2507('0x3')](_0x2507('0xb'),_0x2507('0x7'),_0x2507('0x8'),_0x2507('0xa')),'defaultValue':'lead'},'leadId':{'type':Sequelize['STRING']},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0x2507('0x2')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 1bf8226..d3ec7b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b51=['mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','reject','save','update','then','destroy','error','stack','name','map','rawAttributes','fieldName','type','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','SalesforceConfiguration','create','body','find','getFields','findOne','SalesforceField','order','options','getSubjects','getDescriptions','rimraf','fast-json-patch','request-promise','moment'];(function(_0x3e6a61,_0x4406f3){var _0x1b9b5b=function(_0x4042b1){while(--_0x4042b1){_0x3e6a61['push'](_0x3e6a61['shift']());}};_0x1b9b5b(++_0x4406f3);}(_0x6b51,0x94));var _0x16b5=function(_0xce78f,_0x5da8d9){_0xce78f=_0xce78f-0x0;var _0x3144e4=_0x6b51[_0xce78f];return _0x3144e4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x16b5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x16b5('0x1'));var rp=require(_0x16b5('0x2'));var moment=require(_0x16b5('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x16b5('0x4'));var util=require('util');var path=require(_0x16b5('0x5'));var sox=require('sox');var csv=require(_0x16b5('0x6'));var ejs=require(_0x16b5('0x7'));var fs=require('fs');var fs_extra=require(_0x16b5('0x8'));var _=require(_0x16b5('0x9'));var squel=require(_0x16b5('0xa'));var crypto=require(_0x16b5('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x16b5('0xc'));var toCsv=require('to-csv');var querystring=require(_0x16b5('0xd'));var Papa=require('papaparse');var Redis=require(_0x16b5('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x16b5('0xf'));var as=require(_0x16b5('0x10'));var hardwareService=require(_0x16b5('0x11'));var logger=require(_0x16b5('0x12'))(_0x16b5('0x13'));var utils=require(_0x16b5('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x16b5('0x15'));var db=require(_0x16b5('0x16'))['db'];function respondWithStatusCode(_0x2d0c72,_0x157c71){_0x157c71=_0x157c71||0xcc;return function(_0x8483ad){if(_0x8483ad){return _0x2d0c72['sendStatus'](_0x157c71);}return _0x2d0c72[_0x16b5('0x17')](_0x157c71)[_0x16b5('0x18')]();};}function respondWithResult(_0x5dfb39,_0x5df42e){_0x5df42e=_0x5df42e||0xc8;return function(_0x36cc88){if(_0x36cc88){return _0x5dfb39[_0x16b5('0x17')](_0x5df42e)[_0x16b5('0x19')](_0x36cc88);}};}function respondWithFilteredResult(_0x3d5e4d,_0x3f7919){return function(_0x49f41e){if(_0x49f41e){var _0x1a8843=typeof _0x3f7919['offset']===_0x16b5('0x1a')&&typeof _0x3f7919['limit']==='undefined';var _0x456b75=_0x49f41e[_0x16b5('0x1b')];var _0x1fa367=_0x1a8843?0x0:_0x3f7919[_0x16b5('0x1c')];var _0xb42c05=_0x1a8843?_0x49f41e[_0x16b5('0x1b')]:_0x3f7919['offset']+_0x3f7919[_0x16b5('0x1d')];var _0x1449b6;if(_0xb42c05>=_0x456b75){_0xb42c05=_0x456b75;_0x1449b6=0xc8;}else{_0x1449b6=0xce;}_0x3d5e4d['status'](_0x1449b6);return _0x3d5e4d['set']('Content-Range',_0x1fa367+'-'+_0xb42c05+'/'+_0x456b75)[_0x16b5('0x19')](_0x49f41e);}return null;};}function patchUpdates(_0x30b8db){return function(_0x2b785a){try{jsonpatch['apply'](_0x2b785a,_0x30b8db,!![]);}catch(_0x1eac96){return BPromise[_0x16b5('0x1e')](_0x1eac96);}return _0x2b785a[_0x16b5('0x1f')]();};}function saveUpdates(_0x31febd,_0x105e41){return function(_0x192f3c){if(_0x192f3c){return _0x192f3c[_0x16b5('0x20')](_0x31febd)[_0x16b5('0x21')](function(_0x4b486f){return _0x4b486f;});}return null;};}function removeEntity(_0x282df7,_0x22fe74){return function(_0x1f7cf1){if(_0x1f7cf1){return _0x1f7cf1[_0x16b5('0x22')]()[_0x16b5('0x21')](function(){_0x282df7[_0x16b5('0x17')](0xcc)[_0x16b5('0x18')]();});}};}function handleEntityNotFound(_0x4a7719,_0x24976b){return function(_0x3a31fd){if(!_0x3a31fd){_0x4a7719['sendStatus'](0x194);}return _0x3a31fd;};}function handleError(_0x306518,_0xea2f08){_0xea2f08=_0xea2f08||0x1f4;return function(_0x1b19a5){logger[_0x16b5('0x23')](_0x1b19a5[_0x16b5('0x24')]);if(_0x1b19a5[_0x16b5('0x25')]){delete _0x1b19a5[_0x16b5('0x25')];}_0x306518['status'](_0xea2f08)['send'](_0x1b19a5);};}exports['index']=function(_0x394c1b,_0x6a1274){var _0x3a9127={},_0x5cdcc7={},_0x16b0b7={'count':0x0,'rows':[]};var _0x476700=_[_0x16b5('0x26')](db['SalesforceConfiguration'][_0x16b5('0x27')],function(_0xb25ef7){return{'name':_0xb25ef7[_0x16b5('0x28')],'type':_0xb25ef7[_0x16b5('0x29')]['key']};});_0x5cdcc7['model']=_['map'](_0x476700,_0x16b5('0x25'));_0x5cdcc7['query']=_[_0x16b5('0x2a')](_0x394c1b[_0x16b5('0x2b')]);_0x5cdcc7[_0x16b5('0x2c')]=_[_0x16b5('0x2d')](_0x5cdcc7[_0x16b5('0x2e')],_0x5cdcc7['query']);_0x3a9127['attributes']=_[_0x16b5('0x2d')](_0x5cdcc7[_0x16b5('0x2e')],qs[_0x16b5('0x2f')](_0x394c1b[_0x16b5('0x2b')][_0x16b5('0x2f')]));_0x3a9127['attributes']=_0x3a9127[_0x16b5('0x30')][_0x16b5('0x31')]?_0x3a9127[_0x16b5('0x30')]:_0x5cdcc7['model'];if(!_0x394c1b['query'][_0x16b5('0x32')](_0x16b5('0x33'))){_0x3a9127[_0x16b5('0x1d')]=qs[_0x16b5('0x1d')](_0x394c1b[_0x16b5('0x2b')][_0x16b5('0x1d')]);_0x3a9127['offset']=qs['offset'](_0x394c1b['query'][_0x16b5('0x1c')]);}_0x3a9127['order']=qs['sort'](_0x394c1b[_0x16b5('0x2b')][_0x16b5('0x34')]);_0x3a9127[_0x16b5('0x35')]=qs[_0x16b5('0x2c')](_[_0x16b5('0x36')](_0x394c1b['query'],_0x5cdcc7[_0x16b5('0x2c')]),_0x476700);if(_0x394c1b[_0x16b5('0x2b')][_0x16b5('0x37')]){_0x3a9127[_0x16b5('0x35')]=_[_0x16b5('0x38')](_0x3a9127[_0x16b5('0x35')],{'$or':_['map'](_0x476700,function(_0x55ae60){if(_0x55ae60['type']!==_0x16b5('0x39')){var _0x160fc0={};_0x160fc0[_0x55ae60[_0x16b5('0x25')]]={'$like':'%'+_0x394c1b[_0x16b5('0x2b')][_0x16b5('0x37')]+'%'};return _0x160fc0;}})});}_0x3a9127=_['merge']({},_0x3a9127,_0x394c1b['options']);var _0x37c381={'where':_0x3a9127[_0x16b5('0x35')]};return db['SalesforceConfiguration']['count'](_0x37c381)[_0x16b5('0x21')](function(_0x33fce1){_0x16b0b7[_0x16b5('0x1b')]=_0x33fce1;if(_0x394c1b['query'][_0x16b5('0x3a')]){_0x3a9127[_0x16b5('0x3b')]=[{'all':!![]}];}return db['SalesforceConfiguration'][_0x16b5('0x3c')](_0x3a9127);})['then'](function(_0x45af6b){_0x16b0b7[_0x16b5('0x3d')]=_0x45af6b;return _0x16b0b7;})[_0x16b5('0x21')](respondWithFilteredResult(_0x6a1274,_0x3a9127))[_0x16b5('0x3e')](handleError(_0x6a1274,null));};exports[_0x16b5('0x3f')]=function(_0x3492cc,_0x4d2a4f){var _0x580b88={'raw':![],'where':{'id':_0x3492cc[_0x16b5('0x40')]['id']}},_0x2ae17f={};_0x2ae17f[_0x16b5('0x2e')]=_[_0x16b5('0x2a')](db['SalesforceConfiguration'][_0x16b5('0x27')]);_0x2ae17f[_0x16b5('0x2b')]=_['keys'](_0x3492cc[_0x16b5('0x2b')]);_0x2ae17f[_0x16b5('0x2c')]=_['intersection'](_0x2ae17f['model'],_0x2ae17f[_0x16b5('0x2b')]);_0x580b88[_0x16b5('0x30')]=_['intersection'](_0x2ae17f['model'],qs['fields'](_0x3492cc['query']['fields']));_0x580b88[_0x16b5('0x30')]=_0x580b88[_0x16b5('0x30')][_0x16b5('0x31')]?_0x580b88[_0x16b5('0x30')]:_0x2ae17f['model'];if(_0x3492cc['query'][_0x16b5('0x3a')]){_0x580b88[_0x16b5('0x3b')]=[{'all':!![]}];}_0x580b88=_[_0x16b5('0x38')]({},_0x580b88,_0x3492cc['options']);return db[_0x16b5('0x41')]['find'](_0x580b88)[_0x16b5('0x21')](handleEntityNotFound(_0x4d2a4f,null))[_0x16b5('0x21')](respondWithResult(_0x4d2a4f,null))[_0x16b5('0x3e')](handleError(_0x4d2a4f,null));};exports[_0x16b5('0x42')]=function(_0x3c8aa1,_0x126f24){return db[_0x16b5('0x41')][_0x16b5('0x42')](_0x3c8aa1[_0x16b5('0x43')],{})[_0x16b5('0x21')](respondWithResult(_0x126f24,0xc9))[_0x16b5('0x3e')](handleError(_0x126f24,null));};exports[_0x16b5('0x20')]=function(_0x2d7c00,_0x43e79d){if(_0x2d7c00[_0x16b5('0x43')]['id']){delete _0x2d7c00[_0x16b5('0x43')]['id'];}return db[_0x16b5('0x41')][_0x16b5('0x44')]({'where':{'id':_0x2d7c00[_0x16b5('0x40')]['id']}})[_0x16b5('0x21')](handleEntityNotFound(_0x43e79d,null))[_0x16b5('0x21')](saveUpdates(_0x2d7c00[_0x16b5('0x43')],null))['then'](respondWithResult(_0x43e79d,null))[_0x16b5('0x3e')](handleError(_0x43e79d,null));};exports[_0x16b5('0x22')]=function(_0x4b4728,_0x2de775){return db[_0x16b5('0x41')][_0x16b5('0x44')]({'where':{'id':_0x4b4728[_0x16b5('0x40')]['id']}})[_0x16b5('0x21')](handleEntityNotFound(_0x2de775,null))[_0x16b5('0x21')](removeEntity(_0x2de775,null))[_0x16b5('0x3e')](handleError(_0x2de775,null));};exports[_0x16b5('0x45')]=function(_0x17b69e,_0x2af402,_0x1998bf){var _0x52c00d={};var _0x43ea6e={};var _0x15bda2;var _0x37dbde;return db[_0x16b5('0x41')][_0x16b5('0x46')]({'where':{'id':_0x17b69e['params']['id']}})[_0x16b5('0x21')](handleEntityNotFound(_0x2af402,null))[_0x16b5('0x21')](function(_0x3c6f97){if(_0x3c6f97){_0x15bda2=_0x3c6f97;_0x43ea6e[_0x16b5('0x2e')]=_[_0x16b5('0x2a')](db[_0x16b5('0x47')][_0x16b5('0x27')]);_0x43ea6e[_0x16b5('0x2b')]=_[_0x16b5('0x2a')](_0x17b69e[_0x16b5('0x2b')]);_0x43ea6e['filters']=_[_0x16b5('0x2d')](_0x43ea6e['model'],_0x43ea6e[_0x16b5('0x2b')]);_0x52c00d[_0x16b5('0x30')]=_[_0x16b5('0x2d')](_0x43ea6e[_0x16b5('0x2e')],qs[_0x16b5('0x2f')](_0x17b69e[_0x16b5('0x2b')][_0x16b5('0x2f')]));_0x52c00d['attributes']=_0x52c00d[_0x16b5('0x30')]['length']?_0x52c00d['attributes']:_0x43ea6e['model'];_0x52c00d[_0x16b5('0x48')]=qs['sort'](_0x17b69e[_0x16b5('0x2b')]['sort']);_0x52c00d[_0x16b5('0x35')]=qs[_0x16b5('0x2c')](_[_0x16b5('0x36')](_0x17b69e[_0x16b5('0x2b')],_0x43ea6e[_0x16b5('0x2c')]));if(_0x17b69e[_0x16b5('0x2b')]['filter']){_0x52c00d[_0x16b5('0x35')]=_[_0x16b5('0x38')](_0x52c00d['where'],{'$or':_['map'](_0x52c00d[_0x16b5('0x30')],function(_0x15ba53){var _0x28f58b={};_0x28f58b[_0x15ba53]={'$like':'%'+_0x17b69e[_0x16b5('0x2b')][_0x16b5('0x37')]+'%'};return _0x28f58b;})});}_0x52c00d=_[_0x16b5('0x38')]({},_0x52c00d,_0x17b69e[_0x16b5('0x49')]);return _0x15bda2['getFields'](_0x52c00d);}})[_0x16b5('0x21')](function(_0x164d56){if(_0x164d56){_0x37dbde=_0x164d56[_0x16b5('0x31')];if(!_0x17b69e[_0x16b5('0x2b')][_0x16b5('0x32')](_0x16b5('0x33'))){_0x52c00d[_0x16b5('0x1d')]=qs[_0x16b5('0x1d')](_0x17b69e[_0x16b5('0x2b')][_0x16b5('0x1d')]);_0x52c00d[_0x16b5('0x1c')]=qs[_0x16b5('0x1c')](_0x17b69e['query'][_0x16b5('0x1c')]);}return _0x15bda2[_0x16b5('0x45')](_0x52c00d);}})[_0x16b5('0x21')](function(_0x2e6800){if(_0x2e6800){return _0x2e6800?{'count':_0x37dbde,'rows':_0x2e6800}:null;}})['then'](respondWithResult(_0x2af402,null))[_0x16b5('0x3e')](handleError(_0x2af402,null));};exports[_0x16b5('0x4a')]=function(_0xb98958,_0x178d94,_0xec3893){var _0x586b32={};var _0x107a78={};var _0x361f5a;var _0x1667e9;return db[_0x16b5('0x41')][_0x16b5('0x46')]({'where':{'id':_0xb98958[_0x16b5('0x40')]['id']}})[_0x16b5('0x21')](handleEntityNotFound(_0x178d94,null))[_0x16b5('0x21')](function(_0x3c041b){if(_0x3c041b){_0x361f5a=_0x3c041b;_0x107a78[_0x16b5('0x2e')]=_[_0x16b5('0x2a')](db[_0x16b5('0x47')][_0x16b5('0x27')]);_0x107a78[_0x16b5('0x2b')]=_[_0x16b5('0x2a')](_0xb98958['query']);_0x107a78[_0x16b5('0x2c')]=_[_0x16b5('0x2d')](_0x107a78[_0x16b5('0x2e')],_0x107a78['query']);_0x586b32[_0x16b5('0x30')]=_[_0x16b5('0x2d')](_0x107a78[_0x16b5('0x2e')],qs['fields'](_0xb98958[_0x16b5('0x2b')][_0x16b5('0x2f')]));_0x586b32[_0x16b5('0x30')]=_0x586b32[_0x16b5('0x30')][_0x16b5('0x31')]?_0x586b32[_0x16b5('0x30')]:_0x107a78[_0x16b5('0x2e')];_0x586b32[_0x16b5('0x48')]=qs['sort'](_0xb98958['query'][_0x16b5('0x34')]);_0x586b32[_0x16b5('0x35')]=qs[_0x16b5('0x2c')](_[_0x16b5('0x36')](_0xb98958[_0x16b5('0x2b')],_0x107a78[_0x16b5('0x2c')]));if(_0xb98958[_0x16b5('0x2b')][_0x16b5('0x37')]){_0x586b32['where']=_[_0x16b5('0x38')](_0x586b32[_0x16b5('0x35')],{'$or':_['map'](_0x586b32[_0x16b5('0x30')],function(_0x2a28ad){var _0x5026b3={};_0x5026b3[_0x2a28ad]={'$like':'%'+_0xb98958[_0x16b5('0x2b')][_0x16b5('0x37')]+'%'};return _0x5026b3;})});}_0x586b32=_['merge']({},_0x586b32,_0xb98958[_0x16b5('0x49')]);return _0x361f5a['getSubjects'](_0x586b32);}})[_0x16b5('0x21')](function(_0x13a0b8){if(_0x13a0b8){_0x1667e9=_0x13a0b8[_0x16b5('0x31')];if(!_0xb98958['query'][_0x16b5('0x32')](_0x16b5('0x33'))){_0x586b32[_0x16b5('0x1d')]=qs[_0x16b5('0x1d')](_0xb98958['query'][_0x16b5('0x1d')]);_0x586b32[_0x16b5('0x1c')]=qs[_0x16b5('0x1c')](_0xb98958[_0x16b5('0x2b')][_0x16b5('0x1c')]);}return _0x361f5a[_0x16b5('0x4a')](_0x586b32);}})['then'](function(_0x7255cb){if(_0x7255cb){return _0x7255cb?{'count':_0x1667e9,'rows':_0x7255cb}:null;}})[_0x16b5('0x21')](respondWithResult(_0x178d94,null))[_0x16b5('0x3e')](handleError(_0x178d94,null));};exports[_0x16b5('0x4b')]=function(_0x5e5564,_0x5e8022,_0x2fbd6){var _0x16e813={};var _0x2f736d={};var _0x3c2fd9;var _0x10ff68;return db[_0x16b5('0x41')]['findOne']({'where':{'id':_0x5e5564['params']['id']}})[_0x16b5('0x21')](handleEntityNotFound(_0x5e8022,null))[_0x16b5('0x21')](function(_0x14206b){if(_0x14206b){_0x3c2fd9=_0x14206b;_0x2f736d[_0x16b5('0x2e')]=_[_0x16b5('0x2a')](db[_0x16b5('0x47')][_0x16b5('0x27')]);_0x2f736d['query']=_[_0x16b5('0x2a')](_0x5e5564['query']);_0x2f736d[_0x16b5('0x2c')]=_[_0x16b5('0x2d')](_0x2f736d[_0x16b5('0x2e')],_0x2f736d[_0x16b5('0x2b')]);_0x16e813['attributes']=_[_0x16b5('0x2d')](_0x2f736d[_0x16b5('0x2e')],qs['fields'](_0x5e5564[_0x16b5('0x2b')][_0x16b5('0x2f')]));_0x16e813['attributes']=_0x16e813[_0x16b5('0x30')]['length']?_0x16e813[_0x16b5('0x30')]:_0x2f736d[_0x16b5('0x2e')];_0x16e813[_0x16b5('0x48')]=qs[_0x16b5('0x34')](_0x5e5564['query']['sort']);_0x16e813[_0x16b5('0x35')]=qs[_0x16b5('0x2c')](_[_0x16b5('0x36')](_0x5e5564['query'],_0x2f736d[_0x16b5('0x2c')]));if(_0x5e5564[_0x16b5('0x2b')][_0x16b5('0x37')]){_0x16e813[_0x16b5('0x35')]=_[_0x16b5('0x38')](_0x16e813[_0x16b5('0x35')],{'$or':_[_0x16b5('0x26')](_0x16e813['attributes'],function(_0x4a408e){var _0x5e83d3={};_0x5e83d3[_0x4a408e]={'$like':'%'+_0x5e5564[_0x16b5('0x2b')]['filter']+'%'};return _0x5e83d3;})});}_0x16e813=_['merge']({},_0x16e813,_0x5e5564[_0x16b5('0x49')]);return _0x3c2fd9['getDescriptions'](_0x16e813);}})[_0x16b5('0x21')](function(_0x579e95){if(_0x579e95){_0x10ff68=_0x579e95['length'];if(!_0x5e5564[_0x16b5('0x2b')][_0x16b5('0x32')](_0x16b5('0x33'))){_0x16e813['limit']=qs[_0x16b5('0x1d')](_0x5e5564[_0x16b5('0x2b')][_0x16b5('0x1d')]);_0x16e813[_0x16b5('0x1c')]=qs[_0x16b5('0x1c')](_0x5e5564['query']['offset']);}return _0x3c2fd9['getDescriptions'](_0x16e813);}})[_0x16b5('0x21')](function(_0x1c0bbd){if(_0x1c0bbd){return _0x1c0bbd?{'count':_0x10ff68,'rows':_0x1c0bbd}:null;}})[_0x16b5('0x21')](respondWithResult(_0x5e8022,null))[_0x16b5('0x3e')](handleError(_0x5e8022,null));};
\ No newline at end of file
+var _0x6b45=['rows','catch','show','params','create','body','update','find','destroy','getFields','findOne','SalesforceField','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','save','then','error','stack','name','send','map','rawAttributes','fieldName','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','SalesforceConfiguration','includeAll','include'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x6b45,0xb0));var _0x56b4=function(_0x51b6dc,_0x5a079b){_0x51b6dc=_0x51b6dc-0x0;var _0x70be33=_0x6b45[_0x51b6dc];return _0x70be33;};'use strict';var emlformat=require(_0x56b4('0x0'));var rimraf=require(_0x56b4('0x1'));var zipdir=require(_0x56b4('0x2'));var jsonpatch=require(_0x56b4('0x3'));var rp=require(_0x56b4('0x4'));var moment=require(_0x56b4('0x5'));var BPromise=require(_0x56b4('0x6'));var Mustache=require('mustache');var util=require(_0x56b4('0x7'));var path=require(_0x56b4('0x8'));var sox=require(_0x56b4('0x9'));var csv=require(_0x56b4('0xa'));var ejs=require(_0x56b4('0xb'));var fs=require('fs');var fs_extra=require(_0x56b4('0xc'));var _=require(_0x56b4('0xd'));var squel=require('squel');var crypto=require(_0x56b4('0xe'));var jsforce=require(_0x56b4('0xf'));var deskjs=require(_0x56b4('0x10'));var toCsv=require(_0x56b4('0xa'));var querystring=require(_0x56b4('0x11'));var Papa=require('papaparse');var Redis=require(_0x56b4('0x12'));var authService=require(_0x56b4('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x56b4('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x56b4('0x15'))('api');var utils=require(_0x56b4('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x56b4('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x8df5c1,_0x5be090){_0x5be090=_0x5be090||0xcc;return function(_0x538a26){if(_0x538a26){return _0x8df5c1[_0x56b4('0x18')](_0x5be090);}return _0x8df5c1[_0x56b4('0x19')](_0x5be090)[_0x56b4('0x1a')]();};}function respondWithResult(_0x27ef6f,_0x5054d1){_0x5054d1=_0x5054d1||0xc8;return function(_0x29eb80){if(_0x29eb80){return _0x27ef6f[_0x56b4('0x19')](_0x5054d1)[_0x56b4('0x1b')](_0x29eb80);}};}function respondWithFilteredResult(_0x2ca7f3,_0x105d5d){return function(_0x2091ff){if(_0x2091ff){var _0x224979=typeof _0x105d5d['offset']==='undefined'&&typeof _0x105d5d['limit']===_0x56b4('0x1c');var _0x1c1187=_0x2091ff[_0x56b4('0x1d')];var _0xd835ac=_0x224979?0x0:_0x105d5d[_0x56b4('0x1e')];var _0x5af3f0=_0x224979?_0x2091ff[_0x56b4('0x1d')]:_0x105d5d['offset']+_0x105d5d[_0x56b4('0x1f')];var _0xbf4c8a;if(_0x5af3f0>=_0x1c1187){_0x5af3f0=_0x1c1187;_0xbf4c8a=0xc8;}else{_0xbf4c8a=0xce;}_0x2ca7f3[_0x56b4('0x19')](_0xbf4c8a);return _0x2ca7f3[_0x56b4('0x20')](_0x56b4('0x21'),_0xd835ac+'-'+_0x5af3f0+'/'+_0x1c1187)[_0x56b4('0x1b')](_0x2091ff);}return null;};}function patchUpdates(_0x1da2ce){return function(_0xffb062){try{jsonpatch[_0x56b4('0x22')](_0xffb062,_0x1da2ce,!![]);}catch(_0x3f663f){return BPromise['reject'](_0x3f663f);}return _0xffb062[_0x56b4('0x23')]();};}function saveUpdates(_0x1c2931,_0x33c284){return function(_0xd6e947){if(_0xd6e947){return _0xd6e947['update'](_0x1c2931)[_0x56b4('0x24')](function(_0x902a3f){return _0x902a3f;});}return null;};}function removeEntity(_0x266ac1,_0x56f51e){return function(_0x529f29){if(_0x529f29){return _0x529f29['destroy']()['then'](function(){_0x266ac1[_0x56b4('0x19')](0xcc)[_0x56b4('0x1a')]();});}};}function handleEntityNotFound(_0x27aee1,_0x519de4){return function(_0x1932ca){if(!_0x1932ca){_0x27aee1[_0x56b4('0x18')](0x194);}return _0x1932ca;};}function handleError(_0x108370,_0x58c132){_0x58c132=_0x58c132||0x1f4;return function(_0x3d2688){logger[_0x56b4('0x25')](_0x3d2688[_0x56b4('0x26')]);if(_0x3d2688[_0x56b4('0x27')]){delete _0x3d2688[_0x56b4('0x27')];}_0x108370['status'](_0x58c132)[_0x56b4('0x28')](_0x3d2688);};}exports['index']=function(_0x72c355,_0x2c9efb){var _0x183478={},_0xebae7={},_0x284d1e={'count':0x0,'rows':[]};var _0x15ee3c=_[_0x56b4('0x29')](db['SalesforceConfiguration'][_0x56b4('0x2a')],function(_0x537973){return{'name':_0x537973[_0x56b4('0x2b')],'type':_0x537973['type'][_0x56b4('0x2c')]};});_0xebae7['model']=_[_0x56b4('0x29')](_0x15ee3c,'name');_0xebae7['query']=_[_0x56b4('0x2d')](_0x72c355[_0x56b4('0x2e')]);_0xebae7[_0x56b4('0x2f')]=_[_0x56b4('0x30')](_0xebae7[_0x56b4('0x31')],_0xebae7[_0x56b4('0x2e')]);_0x183478[_0x56b4('0x32')]=_[_0x56b4('0x30')](_0xebae7[_0x56b4('0x31')],qs['fields'](_0x72c355[_0x56b4('0x2e')][_0x56b4('0x33')]));_0x183478[_0x56b4('0x32')]=_0x183478['attributes'][_0x56b4('0x34')]?_0x183478[_0x56b4('0x32')]:_0xebae7[_0x56b4('0x31')];if(!_0x72c355['query'][_0x56b4('0x35')](_0x56b4('0x36'))){_0x183478[_0x56b4('0x1f')]=qs[_0x56b4('0x1f')](_0x72c355[_0x56b4('0x2e')][_0x56b4('0x1f')]);_0x183478[_0x56b4('0x1e')]=qs[_0x56b4('0x1e')](_0x72c355[_0x56b4('0x2e')][_0x56b4('0x1e')]);}_0x183478[_0x56b4('0x37')]=qs[_0x56b4('0x38')](_0x72c355[_0x56b4('0x2e')]['sort']);_0x183478[_0x56b4('0x39')]=qs[_0x56b4('0x2f')](_[_0x56b4('0x3a')](_0x72c355[_0x56b4('0x2e')],_0xebae7['filters']),_0x15ee3c);if(_0x72c355[_0x56b4('0x2e')][_0x56b4('0x3b')]){_0x183478[_0x56b4('0x39')]=_['merge'](_0x183478[_0x56b4('0x39')],{'$or':_[_0x56b4('0x29')](_0x15ee3c,function(_0x59a576){if(_0x59a576[_0x56b4('0x3c')]!==_0x56b4('0x3d')){var _0x4716d4={};_0x4716d4[_0x59a576[_0x56b4('0x27')]]={'$like':'%'+_0x72c355['query'][_0x56b4('0x3b')]+'%'};return _0x4716d4;}})});}_0x183478=_[_0x56b4('0x3e')]({},_0x183478,_0x72c355[_0x56b4('0x3f')]);var _0x429eff={'where':_0x183478[_0x56b4('0x39')]};return db[_0x56b4('0x40')][_0x56b4('0x1d')](_0x429eff)[_0x56b4('0x24')](function(_0x21df78){_0x284d1e[_0x56b4('0x1d')]=_0x21df78;if(_0x72c355[_0x56b4('0x2e')][_0x56b4('0x41')]){_0x183478[_0x56b4('0x42')]=[{'all':!![]}];}return db[_0x56b4('0x40')]['findAll'](_0x183478);})['then'](function(_0x54fd4f){_0x284d1e[_0x56b4('0x43')]=_0x54fd4f;return _0x284d1e;})[_0x56b4('0x24')](respondWithFilteredResult(_0x2c9efb,_0x183478))[_0x56b4('0x44')](handleError(_0x2c9efb,null));};exports[_0x56b4('0x45')]=function(_0x530b57,_0x8a4a6e){var _0x12bbde={'raw':![],'where':{'id':_0x530b57[_0x56b4('0x46')]['id']}},_0x2e3b3c={};_0x2e3b3c[_0x56b4('0x31')]=_[_0x56b4('0x2d')](db[_0x56b4('0x40')][_0x56b4('0x2a')]);_0x2e3b3c[_0x56b4('0x2e')]=_[_0x56b4('0x2d')](_0x530b57[_0x56b4('0x2e')]);_0x2e3b3c[_0x56b4('0x2f')]=_[_0x56b4('0x30')](_0x2e3b3c['model'],_0x2e3b3c[_0x56b4('0x2e')]);_0x12bbde['attributes']=_[_0x56b4('0x30')](_0x2e3b3c[_0x56b4('0x31')],qs[_0x56b4('0x33')](_0x530b57[_0x56b4('0x2e')][_0x56b4('0x33')]));_0x12bbde['attributes']=_0x12bbde[_0x56b4('0x32')]['length']?_0x12bbde['attributes']:_0x2e3b3c['model'];if(_0x530b57[_0x56b4('0x2e')]['includeAll']){_0x12bbde[_0x56b4('0x42')]=[{'all':!![]}];}_0x12bbde=_[_0x56b4('0x3e')]({},_0x12bbde,_0x530b57[_0x56b4('0x3f')]);return db['SalesforceConfiguration']['find'](_0x12bbde)[_0x56b4('0x24')](handleEntityNotFound(_0x8a4a6e,null))[_0x56b4('0x24')](respondWithResult(_0x8a4a6e,null))[_0x56b4('0x44')](handleError(_0x8a4a6e,null));};exports[_0x56b4('0x47')]=function(_0x3d90bc,_0x2e8ede){return db['SalesforceConfiguration'][_0x56b4('0x47')](_0x3d90bc[_0x56b4('0x48')],{})[_0x56b4('0x24')](respondWithResult(_0x2e8ede,0xc9))[_0x56b4('0x44')](handleError(_0x2e8ede,null));};exports[_0x56b4('0x49')]=function(_0x563335,_0x1fd95d){if(_0x563335[_0x56b4('0x48')]['id']){delete _0x563335[_0x56b4('0x48')]['id'];}return db[_0x56b4('0x40')][_0x56b4('0x4a')]({'where':{'id':_0x563335[_0x56b4('0x46')]['id']}})[_0x56b4('0x24')](handleEntityNotFound(_0x1fd95d,null))[_0x56b4('0x24')](saveUpdates(_0x563335[_0x56b4('0x48')],null))['then'](respondWithResult(_0x1fd95d,null))[_0x56b4('0x44')](handleError(_0x1fd95d,null));};exports[_0x56b4('0x4b')]=function(_0x17b266,_0x2035aa){return db[_0x56b4('0x40')][_0x56b4('0x4a')]({'where':{'id':_0x17b266[_0x56b4('0x46')]['id']}})['then'](handleEntityNotFound(_0x2035aa,null))['then'](removeEntity(_0x2035aa,null))['catch'](handleError(_0x2035aa,null));};exports[_0x56b4('0x4c')]=function(_0x184b25,_0x1c0063,_0x547f1e){var _0x45b38b={};var _0x47544b={};var _0x4f8800;var _0x5e049c;return db[_0x56b4('0x40')][_0x56b4('0x4d')]({'where':{'id':_0x184b25['params']['id']}})[_0x56b4('0x24')](handleEntityNotFound(_0x1c0063,null))['then'](function(_0x169cb9){if(_0x169cb9){_0x4f8800=_0x169cb9;_0x47544b[_0x56b4('0x31')]=_[_0x56b4('0x2d')](db[_0x56b4('0x4e')][_0x56b4('0x2a')]);_0x47544b['query']=_[_0x56b4('0x2d')](_0x184b25[_0x56b4('0x2e')]);_0x47544b[_0x56b4('0x2f')]=_[_0x56b4('0x30')](_0x47544b['model'],_0x47544b[_0x56b4('0x2e')]);_0x45b38b[_0x56b4('0x32')]=_[_0x56b4('0x30')](_0x47544b[_0x56b4('0x31')],qs[_0x56b4('0x33')](_0x184b25['query']['fields']));_0x45b38b['attributes']=_0x45b38b[_0x56b4('0x32')][_0x56b4('0x34')]?_0x45b38b[_0x56b4('0x32')]:_0x47544b[_0x56b4('0x31')];_0x45b38b[_0x56b4('0x37')]=qs[_0x56b4('0x38')](_0x184b25[_0x56b4('0x2e')]['sort']);_0x45b38b['where']=qs[_0x56b4('0x2f')](_[_0x56b4('0x3a')](_0x184b25['query'],_0x47544b[_0x56b4('0x2f')]));if(_0x184b25['query'][_0x56b4('0x3b')]){_0x45b38b[_0x56b4('0x39')]=_[_0x56b4('0x3e')](_0x45b38b['where'],{'$or':_[_0x56b4('0x29')](_0x45b38b['attributes'],function(_0x330f48){var _0xb32f88={};_0xb32f88[_0x330f48]={'$like':'%'+_0x184b25['query'][_0x56b4('0x3b')]+'%'};return _0xb32f88;})});}_0x45b38b=_['merge']({},_0x45b38b,_0x184b25[_0x56b4('0x3f')]);return _0x4f8800['getFields'](_0x45b38b);}})[_0x56b4('0x24')](function(_0x47a730){if(_0x47a730){_0x5e049c=_0x47a730[_0x56b4('0x34')];if(!_0x184b25[_0x56b4('0x2e')][_0x56b4('0x35')]('nolimit')){_0x45b38b[_0x56b4('0x1f')]=qs[_0x56b4('0x1f')](_0x184b25['query'][_0x56b4('0x1f')]);_0x45b38b[_0x56b4('0x1e')]=qs[_0x56b4('0x1e')](_0x184b25[_0x56b4('0x2e')][_0x56b4('0x1e')]);}return _0x4f8800[_0x56b4('0x4c')](_0x45b38b);}})[_0x56b4('0x24')](function(_0x6f80ae){if(_0x6f80ae){return _0x6f80ae?{'count':_0x5e049c,'rows':_0x6f80ae}:null;}})[_0x56b4('0x24')](respondWithResult(_0x1c0063,null))[_0x56b4('0x44')](handleError(_0x1c0063,null));};exports[_0x56b4('0x4f')]=function(_0x3978e8,_0xfbfe20,_0x198641){var _0xdcf499={};var _0x4dae77={};var _0x41280b;var _0x3b487e;return db[_0x56b4('0x40')][_0x56b4('0x4d')]({'where':{'id':_0x3978e8[_0x56b4('0x46')]['id']}})[_0x56b4('0x24')](handleEntityNotFound(_0xfbfe20,null))[_0x56b4('0x24')](function(_0x3f0012){if(_0x3f0012){_0x41280b=_0x3f0012;_0x4dae77[_0x56b4('0x31')]=_[_0x56b4('0x2d')](db[_0x56b4('0x4e')][_0x56b4('0x2a')]);_0x4dae77[_0x56b4('0x2e')]=_['keys'](_0x3978e8[_0x56b4('0x2e')]);_0x4dae77[_0x56b4('0x2f')]=_[_0x56b4('0x30')](_0x4dae77[_0x56b4('0x31')],_0x4dae77[_0x56b4('0x2e')]);_0xdcf499[_0x56b4('0x32')]=_[_0x56b4('0x30')](_0x4dae77['model'],qs[_0x56b4('0x33')](_0x3978e8[_0x56b4('0x2e')][_0x56b4('0x33')]));_0xdcf499[_0x56b4('0x32')]=_0xdcf499[_0x56b4('0x32')]['length']?_0xdcf499[_0x56b4('0x32')]:_0x4dae77['model'];_0xdcf499[_0x56b4('0x37')]=qs['sort'](_0x3978e8[_0x56b4('0x2e')][_0x56b4('0x38')]);_0xdcf499[_0x56b4('0x39')]=qs['filters'](_[_0x56b4('0x3a')](_0x3978e8[_0x56b4('0x2e')],_0x4dae77[_0x56b4('0x2f')]));if(_0x3978e8[_0x56b4('0x2e')][_0x56b4('0x3b')]){_0xdcf499['where']=_['merge'](_0xdcf499[_0x56b4('0x39')],{'$or':_['map'](_0xdcf499[_0x56b4('0x32')],function(_0x216fde){var _0x32ebcd={};_0x32ebcd[_0x216fde]={'$like':'%'+_0x3978e8[_0x56b4('0x2e')]['filter']+'%'};return _0x32ebcd;})});}_0xdcf499=_[_0x56b4('0x3e')]({},_0xdcf499,_0x3978e8[_0x56b4('0x3f')]);return _0x41280b['getSubjects'](_0xdcf499);}})[_0x56b4('0x24')](function(_0x3c3f60){if(_0x3c3f60){_0x3b487e=_0x3c3f60[_0x56b4('0x34')];if(!_0x3978e8['query'][_0x56b4('0x35')]('nolimit')){_0xdcf499[_0x56b4('0x1f')]=qs[_0x56b4('0x1f')](_0x3978e8[_0x56b4('0x2e')][_0x56b4('0x1f')]);_0xdcf499['offset']=qs[_0x56b4('0x1e')](_0x3978e8[_0x56b4('0x2e')]['offset']);}return _0x41280b[_0x56b4('0x4f')](_0xdcf499);}})[_0x56b4('0x24')](function(_0x56e887){if(_0x56e887){return _0x56e887?{'count':_0x3b487e,'rows':_0x56e887}:null;}})['then'](respondWithResult(_0xfbfe20,null))[_0x56b4('0x44')](handleError(_0xfbfe20,null));};exports[_0x56b4('0x50')]=function(_0x139365,_0x4b4cab,_0x4b9d37){var _0x428d49={};var _0x3b357e={};var _0x3277dc;var _0x4befe8;return db[_0x56b4('0x40')][_0x56b4('0x4d')]({'where':{'id':_0x139365['params']['id']}})['then'](handleEntityNotFound(_0x4b4cab,null))[_0x56b4('0x24')](function(_0x166138){if(_0x166138){_0x3277dc=_0x166138;_0x3b357e['model']=_[_0x56b4('0x2d')](db[_0x56b4('0x4e')]['rawAttributes']);_0x3b357e[_0x56b4('0x2e')]=_['keys'](_0x139365['query']);_0x3b357e[_0x56b4('0x2f')]=_[_0x56b4('0x30')](_0x3b357e[_0x56b4('0x31')],_0x3b357e['query']);_0x428d49['attributes']=_[_0x56b4('0x30')](_0x3b357e[_0x56b4('0x31')],qs[_0x56b4('0x33')](_0x139365['query']['fields']));_0x428d49['attributes']=_0x428d49[_0x56b4('0x32')][_0x56b4('0x34')]?_0x428d49[_0x56b4('0x32')]:_0x3b357e[_0x56b4('0x31')];_0x428d49['order']=qs[_0x56b4('0x38')](_0x139365[_0x56b4('0x2e')][_0x56b4('0x38')]);_0x428d49[_0x56b4('0x39')]=qs[_0x56b4('0x2f')](_[_0x56b4('0x3a')](_0x139365[_0x56b4('0x2e')],_0x3b357e[_0x56b4('0x2f')]));if(_0x139365[_0x56b4('0x2e')][_0x56b4('0x3b')]){_0x428d49[_0x56b4('0x39')]=_[_0x56b4('0x3e')](_0x428d49['where'],{'$or':_['map'](_0x428d49[_0x56b4('0x32')],function(_0x8bc06e){var _0x42befd={};_0x42befd[_0x8bc06e]={'$like':'%'+_0x139365[_0x56b4('0x2e')][_0x56b4('0x3b')]+'%'};return _0x42befd;})});}_0x428d49=_['merge']({},_0x428d49,_0x139365[_0x56b4('0x3f')]);return _0x3277dc['getDescriptions'](_0x428d49);}})[_0x56b4('0x24')](function(_0x11d6f2){if(_0x11d6f2){_0x4befe8=_0x11d6f2[_0x56b4('0x34')];if(!_0x139365['query']['hasOwnProperty'](_0x56b4('0x36'))){_0x428d49[_0x56b4('0x1f')]=qs[_0x56b4('0x1f')](_0x139365[_0x56b4('0x2e')][_0x56b4('0x1f')]);_0x428d49[_0x56b4('0x1e')]=qs[_0x56b4('0x1e')](_0x139365[_0x56b4('0x2e')][_0x56b4('0x1e')]);}return _0x3277dc[_0x56b4('0x50')](_0x428d49);}})[_0x56b4('0x24')](function(_0x507cd9){if(_0x507cd9){return _0x507cd9?{'count':_0x4befe8,'rows':_0x507cd9}:null;}})[_0x56b4('0x24')](respondWithResult(_0x4b4cab,null))['catch'](handleError(_0x4b4cab,null));};
\ No newline at end of file
index e8364cb..d961efd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c90=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration','lodash','util','../../config/logger'];(function(_0x53c2b9,_0x1dbc82){var _0x2c677b=function(_0x3a7310){while(--_0x3a7310){_0x53c2b9['push'](_0x53c2b9['shift']());}};_0x2c677b(++_0x1dbc82);}(_0x6c90,0x123));var _0x06c9=function(_0x54535d,_0x3f911f){_0x54535d=_0x54535d-0x0;var _0x35d3a3=_0x6c90[_0x54535d];return _0x35d3a3;};'use strict';var _=require(_0x06c9('0x0'));var util=require(_0x06c9('0x1'));var logger=require(_0x06c9('0x2'))(_0x06c9('0x3'));var moment=require(_0x06c9('0x4'));var BPromise=require(_0x06c9('0x5'));var rp=require(_0x06c9('0x6'));var fs=require('fs');var path=require(_0x06c9('0x7'));var rimraf=require(_0x06c9('0x8'));var config=require(_0x06c9('0x9'));var attributes=require(_0x06c9('0xa'));module[_0x06c9('0xb')]=function(_0x27ffe0,_0x272b78){return _0x27ffe0[_0x06c9('0xc')](_0x06c9('0xd'),attributes,{'tableName':'int_salesforce_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb225=['SalesforceConfiguration','int_salesforce_configurations','api','moment','bluebird','request-promise','path','rimraf','./intSalesforceConfiguration.attributes','exports'];(function(_0x54aea3,_0xae7d81){var _0x21ae46=function(_0xe16dbc){while(--_0xe16dbc){_0x54aea3['push'](_0x54aea3['shift']());}};_0x21ae46(++_0xae7d81);}(_0xb225,0xb6));var _0x5b22=function(_0x146837,_0x2aa6a2){_0x146837=_0x146837-0x0;var _0x3d7e60=_0xb225[_0x146837];return _0x3d7e60;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x5b22('0x0'));var moment=require(_0x5b22('0x1'));var BPromise=require(_0x5b22('0x2'));var rp=require(_0x5b22('0x3'));var fs=require('fs');var path=require(_0x5b22('0x4'));var rimraf=require(_0x5b22('0x5'));var config=require('../../config/environment');var attributes=require(_0x5b22('0x6'));module[_0x5b22('0x7')]=function(_0x6191b4,_0x3f036d){return _0x6191b4['define'](_0x5b22('0x8'),attributes,{'tableName':_0x5b22('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 948cc7d..9f064ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe58=['http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x2e7c8a,_0x33763c){var _0x56ed9f=function(_0x31f228){while(--_0x31f228){_0x2e7c8a['push'](_0x2e7c8a['shift']());}};_0x56ed9f(++_0x33763c);}(_0xfe58,0x18e));var _0x8fe5=function(_0x20f14e,_0x1f3c7f){_0x20f14e=_0x20f14e-0x0;var _0x33dd5b=_0xfe58[_0x20f14e];return _0x33dd5b;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x8fe5('0x0'));var rs=require(_0x8fe5('0x1'));var fs=require('fs');var Redis=require(_0x8fe5('0x2'));var db=require(_0x8fe5('0x3'))['db'];var utils=require(_0x8fe5('0x4'));var logger=require(_0x8fe5('0x5'))(_0x8fe5('0x6'));var config=require(_0x8fe5('0x7'));var jayson=require(_0x8fe5('0x8'));var client=jayson[_0x8fe5('0x9')][_0x8fe5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2c1c96,_0x4b49bf,_0x32b539){return new BPromise(function(_0x2ab440,_0x11318a){return client[_0x8fe5('0xb')](_0x2c1c96,_0x32b539)[_0x8fe5('0xc')](function(_0x936b26){logger[_0x8fe5('0xd')](_0x8fe5('0xe'),_0x4b49bf,_0x8fe5('0xf'));logger[_0x8fe5('0x10')](_0x8fe5('0x11'),_0x4b49bf,_0x8fe5('0xf'),JSON[_0x8fe5('0x12')](_0x936b26));if(_0x936b26[_0x8fe5('0x13')]){if(_0x936b26[_0x8fe5('0x13')][_0x8fe5('0x14')]===0x1f4){logger['error'](_0x8fe5('0xe'),_0x4b49bf,_0x936b26[_0x8fe5('0x13')]['message']);return _0x11318a(_0x936b26[_0x8fe5('0x13')][_0x8fe5('0x15')]);}logger[_0x8fe5('0x13')]('SalesforceConfiguration,\x20%s,\x20%s',_0x4b49bf,_0x936b26[_0x8fe5('0x13')][_0x8fe5('0x15')]);return _0x2ab440(_0x936b26['error'][_0x8fe5('0x15')]);}else{logger[_0x8fe5('0xd')](_0x8fe5('0xe'),_0x4b49bf,'request\x20sent');_0x2ab440(_0x936b26[_0x8fe5('0x16')][_0x8fe5('0x15')]);}})[_0x8fe5('0x17')](function(_0x493c3c){logger[_0x8fe5('0x13')](_0x8fe5('0xe'),_0x4b49bf,_0x493c3c);_0x11318a(_0x493c3c);});});}
\ No newline at end of file
+var _0xcb72=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird'];(function(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0xcb72,0x16c));var _0x2cb7=function(_0x1c42c7,_0x263b64){_0x1c42c7=_0x1c42c7-0x0;var _0x284cbb=_0xcb72[_0x1c42c7];return _0x284cbb;};'use strict';var _=require(_0x2cb7('0x0'));var util=require(_0x2cb7('0x1'));var moment=require(_0x2cb7('0x2'));var BPromise=require(_0x2cb7('0x3'));var rs=require(_0x2cb7('0x4'));var fs=require('fs');var Redis=require(_0x2cb7('0x5'));var db=require(_0x2cb7('0x6'))['db'];var utils=require(_0x2cb7('0x7'));var logger=require(_0x2cb7('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2cb7('0x9'));var client=jayson[_0x2cb7('0xa')][_0x2cb7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x29d38c,_0x2e8094,_0x1b8716){return new BPromise(function(_0x4027e6,_0x2695a9){return client['request'](_0x29d38c,_0x1b8716)[_0x2cb7('0xc')](function(_0x5d8aab){logger[_0x2cb7('0xd')](_0x2cb7('0xe'),_0x2e8094,_0x2cb7('0xf'));logger[_0x2cb7('0x10')](_0x2cb7('0x11'),_0x2e8094,_0x2cb7('0xf'),JSON[_0x2cb7('0x12')](_0x5d8aab));if(_0x5d8aab[_0x2cb7('0x13')]){if(_0x5d8aab[_0x2cb7('0x13')][_0x2cb7('0x14')]===0x1f4){logger['error'](_0x2cb7('0xe'),_0x2e8094,_0x5d8aab[_0x2cb7('0x13')][_0x2cb7('0x15')]);return _0x2695a9(_0x5d8aab[_0x2cb7('0x13')]['message']);}logger['error']('SalesforceConfiguration,\x20%s,\x20%s',_0x2e8094,_0x5d8aab[_0x2cb7('0x13')]['message']);return _0x4027e6(_0x5d8aab[_0x2cb7('0x13')][_0x2cb7('0x15')]);}else{logger['info']('SalesforceConfiguration,\x20%s,\x20%s',_0x2e8094,_0x2cb7('0xf'));_0x4027e6(_0x5d8aab['result'][_0x2cb7('0x15')]);}})[_0x2cb7('0x16')](function(_0xc679cd){logger[_0x2cb7('0x13')](_0x2cb7('0xe'),_0x2e8094,_0xc679cd);_0x2695a9(_0xc679cd);});});}
\ No newline at end of file
index 1c1a360..a14ddcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c28=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','get','isAuthenticated','index','/:id','show','post','create'];(function(_0xcc6789,_0x5c3ecf){var _0x207a96=function(_0xa4b148){while(--_0xa4b148){_0xcc6789['push'](_0xcc6789['shift']());}};_0x207a96(++_0x5c3ecf);}(_0x3c28,0x147));var _0x83c2=function(_0x12de4d,_0x5db248){_0x12de4d=_0x12de4d-0x0;var _0x3acd27=_0x3c28[_0x12de4d];return _0x3acd27;};'use strict';var multer=require(_0x83c2('0x0'));var util=require(_0x83c2('0x1'));var path=require(_0x83c2('0x2'));var timeout=require(_0x83c2('0x3'));var express=require(_0x83c2('0x4'));var router=express[_0x83c2('0x5')]();var fs_extra=require(_0x83c2('0x6'));var auth=require(_0x83c2('0x7'));var interaction=require(_0x83c2('0x8'));var config=require(_0x83c2('0x9'));var controller=require(_0x83c2('0xa'));router[_0x83c2('0xb')]('/',auth[_0x83c2('0xc')](),controller[_0x83c2('0xd')]);router[_0x83c2('0xb')](_0x83c2('0xe'),auth[_0x83c2('0xc')](),controller[_0x83c2('0xf')]);router[_0x83c2('0x10')]('/',auth[_0x83c2('0xc')](),controller[_0x83c2('0x11')]);router[_0x83c2('0x12')]('/:id',auth[_0x83c2('0xc')](),controller[_0x83c2('0x13')]);router[_0x83c2('0x14')](_0x83c2('0xe'),auth[_0x83c2('0xc')](),controller[_0x83c2('0x15')]);module[_0x83c2('0x16')]=router;
\ No newline at end of file
+var _0x389c=['create','delete','destroy','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','isAuthenticated','get','/:id','post'];(function(_0xf55e73,_0x3fecc5){var _0x116b99=function(_0x314e0c){while(--_0x314e0c){_0xf55e73['push'](_0xf55e73['shift']());}};_0x116b99(++_0x3fecc5);}(_0x389c,0x173));var _0xc389=function(_0xe55236,_0x52852b){_0xe55236=_0xe55236-0x0;var _0x1e435c=_0x389c[_0xe55236];return _0x1e435c;};'use strict';var multer=require(_0xc389('0x0'));var util=require(_0xc389('0x1'));var path=require('path');var timeout=require(_0xc389('0x2'));var express=require(_0xc389('0x3'));var router=express['Router']();var fs_extra=require(_0xc389('0x4'));var auth=require(_0xc389('0x5'));var interaction=require(_0xc389('0x6'));var config=require(_0xc389('0x7'));var controller=require(_0xc389('0x8'));router['get']('/',auth[_0xc389('0x9')](),controller['index']);router[_0xc389('0xa')](_0xc389('0xb'),auth[_0xc389('0x9')](),controller['show']);router[_0xc389('0xc')]('/',auth[_0xc389('0x9')](),controller[_0xc389('0xd')]);router['put'](_0xc389('0xb'),auth[_0xc389('0x9')](),controller['update']);router[_0xc389('0xe')](_0xc389('0xb'),auth['isAuthenticated'](),controller[_0xc389('0xf')]);module['exports']=router;
\ No newline at end of file
index 2a970c7..1e7b243 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa050=['customVariable','STRING','ENUM','string','variable'];(function(_0x2ec3a6,_0x460f88){var _0xd9868e=function(_0x166f65){while(--_0x166f65){_0x2ec3a6['push'](_0x2ec3a6['shift']());}};_0xd9868e(++_0x460f88);}(_0xa050,0x9d));var _0x0a05=function(_0x516f2f,_0x126c87){_0x516f2f=_0x516f2f-0x0;var _0x5b96d4=_0xa050[_0x516f2f];return _0x5b96d4;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x0a05('0x0')](_0x0a05('0x1'),_0x0a05('0x2'),_0x0a05('0x3'),'keyValue','picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x0a05('0x4')]},'key':{'type':Sequelize[_0x0a05('0x4')]},'keyType':{'type':Sequelize['ENUM'](_0x0a05('0x1'),'variable',_0x0a05('0x3'))},'keyContent':{'type':Sequelize[_0x0a05('0x4')]},'idField':{'type':Sequelize[_0x0a05('0x4')]},'variableName':{'type':Sequelize[_0x0a05('0x4')]}};
\ No newline at end of file
+var _0xbddf=['ENUM','exports','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x10ba15,_0x4e129b){var _0x38011a=function(_0x5c6c01){while(--_0x5c6c01){_0x10ba15['push'](_0x10ba15['shift']());}};_0x38011a(++_0x4e129b);}(_0xbddf,0xf1));var _0xfbdd=function(_0x57edf5,_0x512da3){_0x57edf5=_0x57edf5-0x0;var _0x185fcb=_0xbddf[_0x57edf5];return _0x185fcb;};'use strict';var Sequelize=require('sequelize');module[_0xfbdd('0x0')]={'type':{'type':Sequelize['ENUM'](_0xfbdd('0x1'),_0xfbdd('0x2'),_0xfbdd('0x3'),_0xfbdd('0x4'),_0xfbdd('0x5')),'defaultValue':_0xfbdd('0x1')},'content':{'type':Sequelize[_0xfbdd('0x6')]},'key':{'type':Sequelize[_0xfbdd('0x6')]},'keyType':{'type':Sequelize[_0xfbdd('0x7')](_0xfbdd('0x1'),_0xfbdd('0x2'),_0xfbdd('0x3'))},'keyContent':{'type':Sequelize[_0xfbdd('0x6')]},'idField':{'type':Sequelize[_0xfbdd('0x6')]},'variableName':{'type':Sequelize[_0xfbdd('0x6')]}};
\ No newline at end of file
index 4efb24c..5872393 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8599=['VIRTUAL','options','SalesforceField','includeAll','include','findAll','rows','catch','show','find','create','body','update','params','destroy','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','apply','reject','save','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x73dc26,_0x5a8c43){var _0x53e5c3=function(_0x4af15b){while(--_0x4af15b){_0x73dc26['push'](_0x73dc26['shift']());}};_0x53e5c3(++_0x5a8c43);}(_0x8599,0x1e3));var _0x9859=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x8599[_0x3bf83f];return _0x22c4a9;};'use strict';var emlformat=require(_0x9859('0x0'));var rimraf=require(_0x9859('0x1'));var zipdir=require(_0x9859('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9859('0x3'));var moment=require('moment');var BPromise=require(_0x9859('0x4'));var Mustache=require('mustache');var util=require(_0x9859('0x5'));var path=require(_0x9859('0x6'));var sox=require(_0x9859('0x7'));var csv=require(_0x9859('0x8'));var ejs=require(_0x9859('0x9'));var fs=require('fs');var fs_extra=require(_0x9859('0xa'));var _=require(_0x9859('0xb'));var squel=require(_0x9859('0xc'));var crypto=require(_0x9859('0xd'));var jsforce=require(_0x9859('0xe'));var deskjs=require(_0x9859('0xf'));var toCsv=require('to-csv');var querystring=require(_0x9859('0x10'));var Papa=require(_0x9859('0x11'));var Redis=require('ioredis');var authService=require(_0x9859('0x12'));var qs=require(_0x9859('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9859('0x14'));var logger=require('../../config/logger')(_0x9859('0x15'));var utils=require(_0x9859('0x16'));var config=require(_0x9859('0x17'));var licenseUtil=require(_0x9859('0x18'));var db=require(_0x9859('0x19'))['db'];function respondWithStatusCode(_0x350e98,_0x13ac6b){_0x13ac6b=_0x13ac6b||0xcc;return function(_0x3d93b6){if(_0x3d93b6){return _0x350e98[_0x9859('0x1a')](_0x13ac6b);}return _0x350e98[_0x9859('0x1b')](_0x13ac6b)[_0x9859('0x1c')]();};}function respondWithResult(_0x510f19,_0x3511d5){_0x3511d5=_0x3511d5||0xc8;return function(_0x1da2b9){if(_0x1da2b9){return _0x510f19[_0x9859('0x1b')](_0x3511d5)['json'](_0x1da2b9);}};}function respondWithFilteredResult(_0x1a7b2f,_0xce4d8f){return function(_0xd990cc){if(_0xd990cc){var _0x3201d1=typeof _0xce4d8f[_0x9859('0x1d')]==='undefined'&&typeof _0xce4d8f[_0x9859('0x1e')]===_0x9859('0x1f');var _0x521708=_0xd990cc[_0x9859('0x20')];var _0x13f392=_0x3201d1?0x0:_0xce4d8f[_0x9859('0x1d')];var _0x18e7b0=_0x3201d1?_0xd990cc['count']:_0xce4d8f[_0x9859('0x1d')]+_0xce4d8f[_0x9859('0x1e')];var _0x130083;if(_0x18e7b0>=_0x521708){_0x18e7b0=_0x521708;_0x130083=0xc8;}else{_0x130083=0xce;}_0x1a7b2f[_0x9859('0x1b')](_0x130083);return _0x1a7b2f[_0x9859('0x21')]('Content-Range',_0x13f392+'-'+_0x18e7b0+'/'+_0x521708)['json'](_0xd990cc);}return null;};}function patchUpdates(_0x5058a7){return function(_0x4e66a3){try{jsonpatch[_0x9859('0x22')](_0x4e66a3,_0x5058a7,!![]);}catch(_0x14f3f3){return BPromise[_0x9859('0x23')](_0x14f3f3);}return _0x4e66a3[_0x9859('0x24')]();};}function saveUpdates(_0x2c007c,_0x14ba73){return function(_0x78f7c4){if(_0x78f7c4){return _0x78f7c4['update'](_0x2c007c)[_0x9859('0x25')](function(_0x42c1b9){return _0x42c1b9;});}return null;};}function removeEntity(_0x48ea26,_0x4af58d){return function(_0x22ce2d){if(_0x22ce2d){return _0x22ce2d['destroy']()['then'](function(){_0x48ea26[_0x9859('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x264f28,_0x28752e){return function(_0x40603f){if(!_0x40603f){_0x264f28['sendStatus'](0x194);}return _0x40603f;};}function handleError(_0x5d8f9b,_0x7801b4){_0x7801b4=_0x7801b4||0x1f4;return function(_0x25d7a1){logger[_0x9859('0x26')](_0x25d7a1[_0x9859('0x27')]);if(_0x25d7a1[_0x9859('0x28')]){delete _0x25d7a1[_0x9859('0x28')];}_0x5d8f9b[_0x9859('0x1b')](_0x7801b4)[_0x9859('0x29')](_0x25d7a1);};}exports[_0x9859('0x2a')]=function(_0x1d5572,_0x391caf){var _0xed8581={},_0x35ec19={},_0x541338={'count':0x0,'rows':[]};var _0x44b9fb=_[_0x9859('0x2b')](db['SalesforceField'][_0x9859('0x2c')],function(_0x462c1a){return{'name':_0x462c1a[_0x9859('0x2d')],'type':_0x462c1a[_0x9859('0x2e')]['key']};});_0x35ec19['model']=_[_0x9859('0x2b')](_0x44b9fb,_0x9859('0x28'));_0x35ec19['query']=_[_0x9859('0x2f')](_0x1d5572[_0x9859('0x30')]);_0x35ec19[_0x9859('0x31')]=_[_0x9859('0x32')](_0x35ec19['model'],_0x35ec19[_0x9859('0x30')]);_0xed8581['attributes']=_[_0x9859('0x32')](_0x35ec19[_0x9859('0x33')],qs[_0x9859('0x34')](_0x1d5572[_0x9859('0x30')][_0x9859('0x34')]));_0xed8581[_0x9859('0x35')]=_0xed8581[_0x9859('0x35')][_0x9859('0x36')]?_0xed8581[_0x9859('0x35')]:_0x35ec19['model'];if(!_0x1d5572['query'][_0x9859('0x37')](_0x9859('0x38'))){_0xed8581['limit']=qs[_0x9859('0x1e')](_0x1d5572[_0x9859('0x30')][_0x9859('0x1e')]);_0xed8581['offset']=qs[_0x9859('0x1d')](_0x1d5572[_0x9859('0x30')][_0x9859('0x1d')]);}_0xed8581[_0x9859('0x39')]=qs['sort'](_0x1d5572[_0x9859('0x30')][_0x9859('0x3a')]);_0xed8581[_0x9859('0x3b')]=qs[_0x9859('0x31')](_[_0x9859('0x3c')](_0x1d5572[_0x9859('0x30')],_0x35ec19[_0x9859('0x31')]),_0x44b9fb);if(_0x1d5572[_0x9859('0x30')][_0x9859('0x3d')]){_0xed8581['where']=_[_0x9859('0x3e')](_0xed8581['where'],{'$or':_[_0x9859('0x2b')](_0x44b9fb,function(_0x326a59){if(_0x326a59[_0x9859('0x2e')]!==_0x9859('0x3f')){var _0x15c83e={};_0x15c83e[_0x326a59[_0x9859('0x28')]]={'$like':'%'+_0x1d5572[_0x9859('0x30')][_0x9859('0x3d')]+'%'};return _0x15c83e;}})});}_0xed8581=_['merge']({},_0xed8581,_0x1d5572[_0x9859('0x40')]);var _0x1bba55={'where':_0xed8581['where']};return db[_0x9859('0x41')][_0x9859('0x20')](_0x1bba55)[_0x9859('0x25')](function(_0x1383d6){_0x541338[_0x9859('0x20')]=_0x1383d6;if(_0x1d5572[_0x9859('0x30')][_0x9859('0x42')]){_0xed8581[_0x9859('0x43')]=[{'all':!![]}];}return db[_0x9859('0x41')][_0x9859('0x44')](_0xed8581);})[_0x9859('0x25')](function(_0x364937){_0x541338[_0x9859('0x45')]=_0x364937;return _0x541338;})['then'](respondWithFilteredResult(_0x391caf,_0xed8581))[_0x9859('0x46')](handleError(_0x391caf,null));};exports[_0x9859('0x47')]=function(_0x33f053,_0x3758dd){var _0x393f30={'raw':!![],'where':{'id':_0x33f053['params']['id']}},_0x4a3641={};_0x4a3641[_0x9859('0x33')]=_[_0x9859('0x2f')](db[_0x9859('0x41')][_0x9859('0x2c')]);_0x4a3641[_0x9859('0x30')]=_['keys'](_0x33f053[_0x9859('0x30')]);_0x4a3641[_0x9859('0x31')]=_['intersection'](_0x4a3641[_0x9859('0x33')],_0x4a3641[_0x9859('0x30')]);_0x393f30[_0x9859('0x35')]=_[_0x9859('0x32')](_0x4a3641[_0x9859('0x33')],qs[_0x9859('0x34')](_0x33f053[_0x9859('0x30')][_0x9859('0x34')]));_0x393f30[_0x9859('0x35')]=_0x393f30['attributes'][_0x9859('0x36')]?_0x393f30[_0x9859('0x35')]:_0x4a3641[_0x9859('0x33')];if(_0x33f053[_0x9859('0x30')]['includeAll']){_0x393f30[_0x9859('0x43')]=[{'all':!![]}];}_0x393f30=_[_0x9859('0x3e')]({},_0x393f30,_0x33f053['options']);return db[_0x9859('0x41')][_0x9859('0x48')](_0x393f30)['then'](handleEntityNotFound(_0x3758dd,null))[_0x9859('0x25')](respondWithResult(_0x3758dd,null))[_0x9859('0x46')](handleError(_0x3758dd,null));};exports[_0x9859('0x49')]=function(_0x22af0d,_0x5a6f56){return db['SalesforceField']['create'](_0x22af0d[_0x9859('0x4a')],{})[_0x9859('0x25')](respondWithResult(_0x5a6f56,0xc9))['catch'](handleError(_0x5a6f56,null));};exports[_0x9859('0x4b')]=function(_0x3dffae,_0x3cc3fc){if(_0x3dffae['body']['id']){delete _0x3dffae['body']['id'];}return db[_0x9859('0x41')][_0x9859('0x48')]({'where':{'id':_0x3dffae[_0x9859('0x4c')]['id']}})[_0x9859('0x25')](handleEntityNotFound(_0x3cc3fc,null))[_0x9859('0x25')](saveUpdates(_0x3dffae['body'],null))[_0x9859('0x25')](respondWithResult(_0x3cc3fc,null))[_0x9859('0x46')](handleError(_0x3cc3fc,null));};exports[_0x9859('0x4d')]=function(_0x4b3bf6,_0x1b99f2){return db['SalesforceField'][_0x9859('0x48')]({'where':{'id':_0x4b3bf6[_0x9859('0x4c')]['id']}})[_0x9859('0x25')](handleEntityNotFound(_0x1b99f2,null))[_0x9859('0x25')](removeEntity(_0x1b99f2,null))[_0x9859('0x46')](handleError(_0x1b99f2,null));};
\ No newline at end of file
+var _0xee8c=['ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','end','error','stack','name','send','map','SalesforceField','rawAttributes','fieldName','key','model','filters','intersection','query','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','update','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv'];(function(_0x2755b3,_0x284810){var _0x3b7826=function(_0x184673){while(--_0x184673){_0x2755b3['push'](_0x2755b3['shift']());}};_0x3b7826(++_0x284810);}(_0xee8c,0x90));var _0xcee8=function(_0x17ce8f,_0x521c18){_0x17ce8f=_0x17ce8f-0x0;var _0x4ba1b2=_0xee8c[_0x17ce8f];return _0x4ba1b2;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xcee8('0x0'));var jsonpatch=require(_0xcee8('0x1'));var rp=require('request-promise');var moment=require(_0xcee8('0x2'));var BPromise=require(_0xcee8('0x3'));var Mustache=require(_0xcee8('0x4'));var util=require(_0xcee8('0x5'));var path=require('path');var sox=require(_0xcee8('0x6'));var csv=require(_0xcee8('0x7'));var ejs=require(_0xcee8('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcee8('0x9'));var squel=require(_0xcee8('0xa'));var crypto=require(_0xcee8('0xb'));var jsforce=require(_0xcee8('0xc'));var deskjs=require(_0xcee8('0xd'));var toCsv=require(_0xcee8('0x7'));var querystring=require(_0xcee8('0xe'));var Papa=require(_0xcee8('0xf'));var Redis=require(_0xcee8('0x10'));var authService=require(_0xcee8('0x11'));var qs=require(_0xcee8('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcee8('0x13'));var logger=require('../../config/logger')(_0xcee8('0x14'));var utils=require(_0xcee8('0x15'));var config=require(_0xcee8('0x16'));var licenseUtil=require(_0xcee8('0x17'));var db=require(_0xcee8('0x18'))['db'];function respondWithStatusCode(_0x585aa9,_0x2b7068){_0x2b7068=_0x2b7068||0xcc;return function(_0x320abe){if(_0x320abe){return _0x585aa9[_0xcee8('0x19')](_0x2b7068);}return _0x585aa9[_0xcee8('0x1a')](_0x2b7068)['end']();};}function respondWithResult(_0x507adb,_0x3a50b3){_0x3a50b3=_0x3a50b3||0xc8;return function(_0x2ca2e1){if(_0x2ca2e1){return _0x507adb[_0xcee8('0x1a')](_0x3a50b3)[_0xcee8('0x1b')](_0x2ca2e1);}};}function respondWithFilteredResult(_0x1267dc,_0x29edb0){return function(_0x375a6d){if(_0x375a6d){var _0x1704fa=typeof _0x29edb0[_0xcee8('0x1c')]===_0xcee8('0x1d')&&typeof _0x29edb0[_0xcee8('0x1e')]===_0xcee8('0x1d');var _0x16bf83=_0x375a6d['count'];var _0x237160=_0x1704fa?0x0:_0x29edb0[_0xcee8('0x1c')];var _0x2080d7=_0x1704fa?_0x375a6d[_0xcee8('0x1f')]:_0x29edb0[_0xcee8('0x1c')]+_0x29edb0[_0xcee8('0x1e')];var _0x51706f;if(_0x2080d7>=_0x16bf83){_0x2080d7=_0x16bf83;_0x51706f=0xc8;}else{_0x51706f=0xce;}_0x1267dc[_0xcee8('0x1a')](_0x51706f);return _0x1267dc[_0xcee8('0x20')](_0xcee8('0x21'),_0x237160+'-'+_0x2080d7+'/'+_0x16bf83)['json'](_0x375a6d);}return null;};}function patchUpdates(_0x3c8de8){return function(_0x465191){try{jsonpatch['apply'](_0x465191,_0x3c8de8,!![]);}catch(_0x5ea424){return BPromise[_0xcee8('0x22')](_0x5ea424);}return _0x465191[_0xcee8('0x23')]();};}function saveUpdates(_0x3bebf4,_0xee4765){return function(_0xc44a77){if(_0xc44a77){return _0xc44a77['update'](_0x3bebf4)[_0xcee8('0x24')](function(_0x4afdd8){return _0x4afdd8;});}return null;};}function removeEntity(_0x43e269,_0x1c5dce){return function(_0x2a7571){if(_0x2a7571){return _0x2a7571[_0xcee8('0x25')]()[_0xcee8('0x24')](function(){_0x43e269['status'](0xcc)[_0xcee8('0x26')]();});}};}function handleEntityNotFound(_0x38b782,_0x3bb963){return function(_0xb69c86){if(!_0xb69c86){_0x38b782[_0xcee8('0x19')](0x194);}return _0xb69c86;};}function handleError(_0x2b34ea,_0x4c75a0){_0x4c75a0=_0x4c75a0||0x1f4;return function(_0xdb4f5c){logger[_0xcee8('0x27')](_0xdb4f5c[_0xcee8('0x28')]);if(_0xdb4f5c[_0xcee8('0x29')]){delete _0xdb4f5c['name'];}_0x2b34ea[_0xcee8('0x1a')](_0x4c75a0)[_0xcee8('0x2a')](_0xdb4f5c);};}exports['index']=function(_0x372620,_0x289a56){var _0xd54ff={},_0x44d8fc={},_0x5e405a={'count':0x0,'rows':[]};var _0x1247d9=_[_0xcee8('0x2b')](db[_0xcee8('0x2c')][_0xcee8('0x2d')],function(_0x4e8ddb){return{'name':_0x4e8ddb[_0xcee8('0x2e')],'type':_0x4e8ddb['type'][_0xcee8('0x2f')]};});_0x44d8fc[_0xcee8('0x30')]=_['map'](_0x1247d9,_0xcee8('0x29'));_0x44d8fc['query']=_['keys'](_0x372620['query']);_0x44d8fc[_0xcee8('0x31')]=_[_0xcee8('0x32')](_0x44d8fc[_0xcee8('0x30')],_0x44d8fc[_0xcee8('0x33')]);_0xd54ff[_0xcee8('0x34')]=_[_0xcee8('0x32')](_0x44d8fc['model'],qs[_0xcee8('0x35')](_0x372620[_0xcee8('0x33')][_0xcee8('0x35')]));_0xd54ff[_0xcee8('0x34')]=_0xd54ff[_0xcee8('0x34')][_0xcee8('0x36')]?_0xd54ff[_0xcee8('0x34')]:_0x44d8fc['model'];if(!_0x372620[_0xcee8('0x33')]['hasOwnProperty'](_0xcee8('0x37'))){_0xd54ff['limit']=qs[_0xcee8('0x1e')](_0x372620[_0xcee8('0x33')][_0xcee8('0x1e')]);_0xd54ff[_0xcee8('0x1c')]=qs[_0xcee8('0x1c')](_0x372620['query'][_0xcee8('0x1c')]);}_0xd54ff[_0xcee8('0x38')]=qs[_0xcee8('0x39')](_0x372620['query'][_0xcee8('0x39')]);_0xd54ff[_0xcee8('0x3a')]=qs[_0xcee8('0x31')](_[_0xcee8('0x3b')](_0x372620[_0xcee8('0x33')],_0x44d8fc[_0xcee8('0x31')]),_0x1247d9);if(_0x372620[_0xcee8('0x33')][_0xcee8('0x3c')]){_0xd54ff[_0xcee8('0x3a')]=_[_0xcee8('0x3d')](_0xd54ff[_0xcee8('0x3a')],{'$or':_[_0xcee8('0x2b')](_0x1247d9,function(_0x2e6578){if(_0x2e6578['type']!==_0xcee8('0x3e')){var _0x21987c={};_0x21987c[_0x2e6578[_0xcee8('0x29')]]={'$like':'%'+_0x372620[_0xcee8('0x33')][_0xcee8('0x3c')]+'%'};return _0x21987c;}})});}_0xd54ff=_[_0xcee8('0x3d')]({},_0xd54ff,_0x372620[_0xcee8('0x3f')]);var _0x2cebc1={'where':_0xd54ff['where']};return db[_0xcee8('0x2c')]['count'](_0x2cebc1)[_0xcee8('0x24')](function(_0x46126c){_0x5e405a[_0xcee8('0x1f')]=_0x46126c;if(_0x372620[_0xcee8('0x33')][_0xcee8('0x40')]){_0xd54ff[_0xcee8('0x41')]=[{'all':!![]}];}return db[_0xcee8('0x2c')][_0xcee8('0x42')](_0xd54ff);})[_0xcee8('0x24')](function(_0x4c39a4){_0x5e405a[_0xcee8('0x43')]=_0x4c39a4;return _0x5e405a;})[_0xcee8('0x24')](respondWithFilteredResult(_0x289a56,_0xd54ff))[_0xcee8('0x44')](handleError(_0x289a56,null));};exports[_0xcee8('0x45')]=function(_0x3ecc79,_0x22a1e6){var _0x17e6ef={'raw':!![],'where':{'id':_0x3ecc79[_0xcee8('0x46')]['id']}},_0x4d0280={};_0x4d0280[_0xcee8('0x30')]=_[_0xcee8('0x47')](db[_0xcee8('0x2c')][_0xcee8('0x2d')]);_0x4d0280['query']=_[_0xcee8('0x47')](_0x3ecc79[_0xcee8('0x33')]);_0x4d0280[_0xcee8('0x31')]=_[_0xcee8('0x32')](_0x4d0280[_0xcee8('0x30')],_0x4d0280[_0xcee8('0x33')]);_0x17e6ef['attributes']=_['intersection'](_0x4d0280['model'],qs[_0xcee8('0x35')](_0x3ecc79[_0xcee8('0x33')][_0xcee8('0x35')]));_0x17e6ef[_0xcee8('0x34')]=_0x17e6ef[_0xcee8('0x34')][_0xcee8('0x36')]?_0x17e6ef[_0xcee8('0x34')]:_0x4d0280[_0xcee8('0x30')];if(_0x3ecc79['query'][_0xcee8('0x40')]){_0x17e6ef[_0xcee8('0x41')]=[{'all':!![]}];}_0x17e6ef=_['merge']({},_0x17e6ef,_0x3ecc79['options']);return db[_0xcee8('0x2c')][_0xcee8('0x48')](_0x17e6ef)[_0xcee8('0x24')](handleEntityNotFound(_0x22a1e6,null))[_0xcee8('0x24')](respondWithResult(_0x22a1e6,null))['catch'](handleError(_0x22a1e6,null));};exports[_0xcee8('0x49')]=function(_0x5a4394,_0x4dfdb2){return db[_0xcee8('0x2c')][_0xcee8('0x49')](_0x5a4394[_0xcee8('0x4a')],{})['then'](respondWithResult(_0x4dfdb2,0xc9))[_0xcee8('0x44')](handleError(_0x4dfdb2,null));};exports[_0xcee8('0x4b')]=function(_0x52300a,_0x4dee29){if(_0x52300a[_0xcee8('0x4a')]['id']){delete _0x52300a[_0xcee8('0x4a')]['id'];}return db['SalesforceField']['find']({'where':{'id':_0x52300a[_0xcee8('0x46')]['id']}})[_0xcee8('0x24')](handleEntityNotFound(_0x4dee29,null))['then'](saveUpdates(_0x52300a[_0xcee8('0x4a')],null))[_0xcee8('0x24')](respondWithResult(_0x4dee29,null))[_0xcee8('0x44')](handleError(_0x4dee29,null));};exports[_0xcee8('0x25')]=function(_0x3793e5,_0x150e9d){return db['SalesforceField'][_0xcee8('0x48')]({'where':{'id':_0x3793e5[_0xcee8('0x46')]['id']}})[_0xcee8('0x24')](handleEntityNotFound(_0x150e9d,null))[_0xcee8('0x24')](removeEntity(_0x150e9d,null))[_0xcee8('0x44')](handleError(_0x150e9d,null));};
\ No newline at end of file
index eaba5cf..058d020 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48e0=['./intSalesforceField.attributes','exports','int_salesforce_fields','salesforce_unique_index','idField','FieldId','lodash','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x48e0,0xf6));var _0x048e=function(_0x55a6bc,_0x9f507c){_0x55a6bc=_0x55a6bc-0x0;var _0x145d2b=_0x48e0[_0x55a6bc];return _0x145d2b;};'use strict';var _=require(_0x048e('0x0'));var util=require('util');var logger=require(_0x048e('0x1'))('api');var moment=require(_0x048e('0x2'));var BPromise=require(_0x048e('0x3'));var rp=require(_0x048e('0x4'));var fs=require('fs');var path=require(_0x048e('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x048e('0x6'));module[_0x048e('0x7')]=function(_0x3301de,_0x555d39){return _0x3301de['define']('SalesforceField',attributes,{'tableName':_0x048e('0x8'),'paranoid':![],'indexes':[{'name':_0x048e('0x9'),'fields':[_0x048e('0xa'),_0x048e('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe9fd=['salesforce_unique_index','idField','FieldId','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','SalesforceField','int_salesforce_fields'];(function(_0x4ab9a7,_0x291df1){var _0xd08799=function(_0x32bd6a){while(--_0x32bd6a){_0x4ab9a7['push'](_0x4ab9a7['shift']());}};_0xd08799(++_0x291df1);}(_0xe9fd,0xf3));var _0xde9f=function(_0x423c7d,_0x51a9f6){_0x423c7d=_0x423c7d-0x0;var _0x2d4e62=_0xe9fd[_0x423c7d];return _0x2d4e62;};'use strict';var _=require(_0xde9f('0x0'));var util=require('util');var logger=require(_0xde9f('0x1'))(_0xde9f('0x2'));var moment=require(_0xde9f('0x3'));var BPromise=require(_0xde9f('0x4'));var rp=require(_0xde9f('0x5'));var fs=require('fs');var path=require(_0xde9f('0x6'));var rimraf=require(_0xde9f('0x7'));var config=require(_0xde9f('0x8'));var attributes=require('./intSalesforceField.attributes');module['exports']=function(_0x27e630,_0x2e0162){return _0x27e630[_0xde9f('0x9')](_0xde9f('0xa'),attributes,{'tableName':_0xde9f('0xb'),'paranoid':![],'indexes':[{'name':_0xde9f('0xc'),'fields':[_0xde9f('0xd'),_0xde9f('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 587e13e..cc92cef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeca5=['../../config/environment','client','http','request','then','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc'];(function(_0x589989,_0x2cfd1f){var _0x50584f=function(_0x22ec4c){while(--_0x22ec4c){_0x589989['push'](_0x589989['shift']());}};_0x50584f(++_0x2cfd1f);}(_0xeca5,0x1d8));var _0x5eca=function(_0x8c2457,_0x39edc5){_0x8c2457=_0x8c2457-0x0;var _0x37b632=_0xeca5[_0x8c2457];return _0x37b632;};'use strict';var _=require(_0x5eca('0x0'));var util=require(_0x5eca('0x1'));var moment=require(_0x5eca('0x2'));var BPromise=require(_0x5eca('0x3'));var rs=require(_0x5eca('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5eca('0x5'))['db'];var utils=require(_0x5eca('0x6'));var logger=require('../../config/logger')(_0x5eca('0x7'));var config=require(_0x5eca('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x5eca('0x9')][_0x5eca('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x306315,_0xf57f24,_0x419ff9){return new BPromise(function(_0x1a5890,_0x48fd8e){return client[_0x5eca('0xb')](_0x306315,_0x419ff9)[_0x5eca('0xc')](function(_0x436176){logger['info'](_0x5eca('0xd'),_0xf57f24,_0x5eca('0xe'));logger[_0x5eca('0xf')](_0x5eca('0x10'),_0xf57f24,_0x5eca('0xe'),JSON[_0x5eca('0x11')](_0x436176));if(_0x436176[_0x5eca('0x12')]){if(_0x436176['error'][_0x5eca('0x13')]===0x1f4){logger[_0x5eca('0x12')](_0x5eca('0xd'),_0xf57f24,_0x436176['error'][_0x5eca('0x14')]);return _0x48fd8e(_0x436176['error']['message']);}logger['error']('SalesforceField,\x20%s,\x20%s',_0xf57f24,_0x436176[_0x5eca('0x12')][_0x5eca('0x14')]);return _0x1a5890(_0x436176[_0x5eca('0x12')][_0x5eca('0x14')]);}else{logger[_0x5eca('0x15')]('SalesforceField,\x20%s,\x20%s',_0xf57f24,_0x5eca('0xe'));_0x1a5890(_0x436176[_0x5eca('0x16')]['message']);}})[_0x5eca('0x17')](function(_0x332361){logger[_0x5eca('0x12')](_0x5eca('0xd'),_0xf57f24,_0x332361);_0x48fd8e(_0x332361);});});}
\ No newline at end of file
+var _0xd170=['client','then','info','request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','SalesforceField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise'];(function(_0x19d070,_0x308fce){var _0x3b3382=function(_0x4588c7){while(--_0x4588c7){_0x19d070['push'](_0x19d070['shift']());}};_0x3b3382(++_0x308fce);}(_0xd170,0x1b0));var _0x0d17=function(_0x2291cb,_0x3d2b79){_0x2291cb=_0x2291cb-0x0;var _0x53b5d2=_0xd170[_0x2291cb];return _0x53b5d2;};'use strict';var _=require(_0x0d17('0x0'));var util=require(_0x0d17('0x1'));var moment=require(_0x0d17('0x2'));var BPromise=require(_0x0d17('0x3'));var rs=require(_0x0d17('0x4'));var fs=require('fs');var Redis=require(_0x0d17('0x5'));var db=require(_0x0d17('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x0d17('0x7'));var jayson=require(_0x0d17('0x8'));var client=jayson[_0x0d17('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4347b3,_0x3dca53,_0x10e857){return new BPromise(function(_0x510977,_0x259543){return client['request'](_0x4347b3,_0x10e857)[_0x0d17('0xa')](function(_0x249a19){logger[_0x0d17('0xb')]('SalesforceField,\x20%s,\x20%s',_0x3dca53,_0x0d17('0xc'));logger['debug'](_0x0d17('0xd'),_0x3dca53,_0x0d17('0xc'),JSON[_0x0d17('0xe')](_0x249a19));if(_0x249a19[_0x0d17('0xf')]){if(_0x249a19['error'][_0x0d17('0x10')]===0x1f4){logger[_0x0d17('0xf')](_0x0d17('0x11'),_0x3dca53,_0x249a19['error'][_0x0d17('0x12')]);return _0x259543(_0x249a19[_0x0d17('0xf')][_0x0d17('0x12')]);}logger['error'](_0x0d17('0x11'),_0x3dca53,_0x249a19[_0x0d17('0xf')][_0x0d17('0x12')]);return _0x510977(_0x249a19[_0x0d17('0xf')]['message']);}else{logger[_0x0d17('0xb')](_0x0d17('0x11'),_0x3dca53,_0x0d17('0xc'));_0x510977(_0x249a19[_0x0d17('0x13')][_0x0d17('0x12')]);}})[_0x0d17('0x14')](function(_0x184003){logger[_0x0d17('0xf')](_0x0d17('0x11'),_0x3dca53,_0x184003);_0x259543(_0x184003);});});}
\ No newline at end of file
index cfea40e..40940a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae11=['isAuthenticated','index','show','/:id/configurations','/:id/fields','getFields','post','put','/:id','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x35050f,_0x47a6e3){var _0x61a820=function(_0x4d6671){while(--_0x4d6671){_0x35050f['push'](_0x35050f['shift']());}};_0x61a820(++_0x47a6e3);}(_0xae11,0x1c1));var _0x1ae1=function(_0x188a93,_0xaf57db){_0x188a93=_0x188a93-0x0;var _0x23b40d=_0xae11[_0x188a93];return _0x23b40d;};'use strict';var multer=require(_0x1ae1('0x0'));var util=require(_0x1ae1('0x1'));var path=require(_0x1ae1('0x2'));var timeout=require(_0x1ae1('0x3'));var express=require(_0x1ae1('0x4'));var router=express[_0x1ae1('0x5')]();var fs_extra=require(_0x1ae1('0x6'));var auth=require(_0x1ae1('0x7'));var interaction=require(_0x1ae1('0x8'));var config=require(_0x1ae1('0x9'));var controller=require('./intServicenowAccount.controller');router[_0x1ae1('0xa')]('/',auth[_0x1ae1('0xb')](),controller[_0x1ae1('0xc')]);router[_0x1ae1('0xa')]('/:id',auth[_0x1ae1('0xb')](),controller[_0x1ae1('0xd')]);router[_0x1ae1('0xa')](_0x1ae1('0xe'),auth[_0x1ae1('0xb')](),controller['getConfigurations']);router['get'](_0x1ae1('0xf'),auth['isAuthenticated'](),controller[_0x1ae1('0x10')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x1ae1('0x11')](_0x1ae1('0xe'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0x1ae1('0x12')](_0x1ae1('0x13'),auth[_0x1ae1('0xb')](),controller[_0x1ae1('0x14')]);router[_0x1ae1('0x15')]('/:id',auth[_0x1ae1('0xb')](),controller[_0x1ae1('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x0a0d=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getFields','post','create','addConfiguration','put','delete','destroy','exports','multer','util','path','express','Router'];(function(_0x450c21,_0x1f3eef){var _0x56d7e0=function(_0x26985b){while(--_0x26985b){_0x450c21['push'](_0x450c21['shift']());}};_0x56d7e0(++_0x1f3eef);}(_0x0a0d,0x85));var _0xd0a0=function(_0x3233c3,_0x15e5fa){_0x3233c3=_0x3233c3-0x0;var _0x36029b=_0x0a0d[_0x3233c3];return _0x36029b;};'use strict';var multer=require(_0xd0a0('0x0'));var util=require(_0xd0a0('0x1'));var path=require(_0xd0a0('0x2'));var timeout=require('connect-timeout');var express=require(_0xd0a0('0x3'));var router=express[_0xd0a0('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd0a0('0x5'));var interaction=require(_0xd0a0('0x6'));var config=require(_0xd0a0('0x7'));var controller=require(_0xd0a0('0x8'));router[_0xd0a0('0x9')]('/',auth[_0xd0a0('0xa')](),controller[_0xd0a0('0xb')]);router[_0xd0a0('0x9')](_0xd0a0('0xc'),auth[_0xd0a0('0xa')](),controller[_0xd0a0('0xd')]);router['get'](_0xd0a0('0xe'),auth[_0xd0a0('0xa')](),controller['getConfigurations']);router[_0xd0a0('0x9')]('/:id/fields',auth['isAuthenticated'](),controller[_0xd0a0('0xf')]);router[_0xd0a0('0x10')]('/',auth[_0xd0a0('0xa')](),controller[_0xd0a0('0x11')]);router[_0xd0a0('0x10')](_0xd0a0('0xe'),auth[_0xd0a0('0xa')](),controller[_0xd0a0('0x12')]);router[_0xd0a0('0x13')](_0xd0a0('0xc'),auth['isAuthenticated'](),controller['update']);router[_0xd0a0('0x14')]('/:id',auth[_0xd0a0('0xa')](),controller[_0xd0a0('0x15')]);module[_0xd0a0('0x16')]=router;
\ No newline at end of file
index 7f75369..83e64a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fe7=['STRING','username','remoteUri','sequelize','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1fe7,0xe4));var _0x71fe=function(_0x33237e,_0x5c86ee){_0x33237e=_0x33237e-0x0;var _0x366b35=_0x1fe7[_0x33237e];return _0x366b35;};'use strict';var Sequelize=require(_0x71fe('0x0'));module[_0x71fe('0x1')]={'name':{'type':Sequelize[_0x71fe('0x2')]},'description':{'type':Sequelize[_0x71fe('0x2')]},'username':{'type':Sequelize[_0x71fe('0x2')],'unique':_0x71fe('0x3')},'password':{'type':Sequelize[_0x71fe('0x2')]},'email':{'type':Sequelize[_0x71fe('0x2')]},'remoteUri':{'type':Sequelize[_0x71fe('0x2')],'unique':_0x71fe('0x4')},'serverUrl':{'type':Sequelize[_0x71fe('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x641f=['STRING','username','remoteUri','sequelize','exports'];(function(_0x161584,_0x2d88d4){var _0x449886=function(_0x41d2db){while(--_0x41d2db){_0x161584['push'](_0x161584['shift']());}};_0x449886(++_0x2d88d4);}(_0x641f,0x13e));var _0xf641=function(_0x11eebd,_0x2ad476){_0x11eebd=_0x11eebd-0x0;var _0x5001bd=_0x641f[_0x11eebd];return _0x5001bd;};'use strict';var Sequelize=require(_0xf641('0x0'));module[_0xf641('0x1')]={'name':{'type':Sequelize[_0xf641('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xf641('0x2')],'unique':_0xf641('0x3')},'password':{'type':Sequelize[_0xf641('0x2')]},'email':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xf641('0x2')],'unique':_0xf641('0x4')},'serverUrl':{'type':Sequelize[_0xf641('0x2')],'allowNull':![]}};
\ No newline at end of file
index 1542ff0..22c18cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3474=['notify','incident_state','category','parent','caused_by','watch_list','upon_reject','sys_updated_on','approval_history','resolved_by','sys_updated_by','sys_created_on','sys_domain','state','calendar_stc','delivery_plan','impact','active','business_service','priority','sys_domain_path','time_worked','expected_start','opened_at','business_duration','group_list','work_end','reopened_time','resolved_at','caller_id','short_description','correlation_display','delivery_task','work_start','assignment_group','business_stc','additional_assignee_list','calendar_duration','close_notes','closed_by','follow_up','parent_incident','sys_id','contact_type','reopened_by','urgency','problem_id','company','assigned_to','sla_due','approval','comments_and_work_notes','due_date','sys_mod_count','reopen_count','escalation','upon_approval','correlation_id','location','password','substring','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','incident?sysparm_display_value=all','log','incident\x20table\x20objects','assign','remove','includes','forEach','label','push','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','internalType','concat','ServiceNow\x20error:\x20','test','Wrong\x20credentials','statusCode','False','false','GET','sys_choice?sysparm_query=name=incident^element=','result','inactive','value','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','limit','count','apply','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','sort','where','pick','filters','filter','merge','options','ServicenowAccount','includeAll','include','findAll','rows','show','params','find','create','update','body','catch','getConfigurations','findOne','ServicenowConfiguration','order','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ServicenowField','made_sla','hold_reason','knowledge','subcategory','close_code'];(function(_0x1f64a1,_0x37ba82){var _0x3889ad=function(_0x48eaee){while(--_0x48eaee){_0x1f64a1['push'](_0x1f64a1['shift']());}};_0x3889ad(++_0x37ba82);}(_0x3474,0x10b));var _0x4347=function(_0xd64692,_0x28e445){_0xd64692=_0xd64692-0x0;var _0x201668=_0x3474[_0xd64692];return _0x201668;};'use strict';var emlformat=require(_0x4347('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4347('0x1'));var jsonpatch=require(_0x4347('0x2'));var rp=require(_0x4347('0x3'));var moment=require('moment');var BPromise=require(_0x4347('0x4'));var Mustache=require(_0x4347('0x5'));var util=require(_0x4347('0x6'));var path=require(_0x4347('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4347('0x8'));var fs=require('fs');var fs_extra=require(_0x4347('0x9'));var _=require(_0x4347('0xa'));var squel=require(_0x4347('0xb'));var crypto=require(_0x4347('0xc'));var jsforce=require(_0x4347('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x4347('0xe'));var querystring=require(_0x4347('0xf'));var Papa=require('papaparse');var Redis=require(_0x4347('0x10'));var authService=require(_0x4347('0x11'));var qs=require(_0x4347('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4347('0x13'));var logger=require('../../config/logger')(_0x4347('0x14'));var utils=require('../../config/utils');var config=require(_0x4347('0x15'));var licenseUtil=require(_0x4347('0x16'));var db=require(_0x4347('0x17'))['db'];var integrations=require(_0x4347('0x18'));function respondWithStatusCode(_0x231302,_0x1fb61f){_0x1fb61f=_0x1fb61f||0xcc;return function(_0x25f91f){if(_0x25f91f){return _0x231302['sendStatus'](_0x1fb61f);}return _0x231302[_0x4347('0x19')](_0x1fb61f)[_0x4347('0x1a')]();};}function respondWithResult(_0x5c3f25,_0x59ef3c){_0x59ef3c=_0x59ef3c||0xc8;return function(_0x1983ab){if(_0x1983ab){return _0x5c3f25[_0x4347('0x19')](_0x59ef3c)[_0x4347('0x1b')](_0x1983ab);}};}function respondWithFilteredResult(_0x52ff71,_0x7550e2){return function(_0xcc6a59){if(_0xcc6a59){var _0x58dabf=typeof _0x7550e2[_0x4347('0x1c')]===_0x4347('0x1d')&&typeof _0x7550e2[_0x4347('0x1e')]==='undefined';var _0x193fab=_0xcc6a59['count'];var _0xb63606=_0x58dabf?0x0:_0x7550e2[_0x4347('0x1c')];var _0x493072=_0x58dabf?_0xcc6a59[_0x4347('0x1f')]:_0x7550e2['offset']+_0x7550e2[_0x4347('0x1e')];var _0x7dd0d6;if(_0x493072>=_0x193fab){_0x493072=_0x193fab;_0x7dd0d6=0xc8;}else{_0x7dd0d6=0xce;}_0x52ff71[_0x4347('0x19')](_0x7dd0d6);return _0x52ff71['set']('Content-Range',_0xb63606+'-'+_0x493072+'/'+_0x193fab)[_0x4347('0x1b')](_0xcc6a59);}return null;};}function patchUpdates(_0xfc1cd6){return function(_0x17a805){try{jsonpatch[_0x4347('0x20')](_0x17a805,_0xfc1cd6,!![]);}catch(_0x171fa1){return BPromise['reject'](_0x171fa1);}return _0x17a805[_0x4347('0x21')]();};}function saveUpdates(_0x1aacf3,_0x3f660f){return function(_0x4ff6e9){if(_0x4ff6e9){return _0x4ff6e9['update'](_0x1aacf3)[_0x4347('0x22')](function(_0xbe88f5){return _0xbe88f5;});}return null;};}function removeEntity(_0x15af82,_0x2a360c){return function(_0x1ebffc){if(_0x1ebffc){return _0x1ebffc[_0x4347('0x23')]()[_0x4347('0x22')](function(){_0x15af82['status'](0xcc)[_0x4347('0x1a')]();});}};}function handleEntityNotFound(_0x432d6e,_0x35dcb9){return function(_0x39a19c){if(!_0x39a19c){_0x432d6e['sendStatus'](0x194);}return _0x39a19c;};}function handleError(_0x5bb0a7,_0x412f75){_0x412f75=_0x412f75||0x1f4;return function(_0x4cce55){logger[_0x4347('0x24')](_0x4cce55[_0x4347('0x25')]);if(_0x4cce55[_0x4347('0x26')]){delete _0x4cce55[_0x4347('0x26')];}_0x5bb0a7[_0x4347('0x19')](_0x412f75)[_0x4347('0x27')](_0x4cce55);};}exports[_0x4347('0x28')]=function(_0x4b4d18,_0x3816cc){var _0x17edd6={},_0x25178e={},_0x50e976={'count':0x0,'rows':[]};var _0x3fe992=_[_0x4347('0x29')](db['ServicenowAccount'][_0x4347('0x2a')],function(_0x156cc1){return{'name':_0x156cc1[_0x4347('0x2b')],'type':_0x156cc1[_0x4347('0x2c')][_0x4347('0x2d')]};});_0x25178e['model']=_[_0x4347('0x29')](_0x3fe992,'name');_0x25178e[_0x4347('0x2e')]=_[_0x4347('0x2f')](_0x4b4d18[_0x4347('0x2e')]);_0x25178e['filters']=_[_0x4347('0x30')](_0x25178e[_0x4347('0x31')],_0x25178e['query']);_0x17edd6[_0x4347('0x32')]=_[_0x4347('0x30')](_0x25178e[_0x4347('0x31')],qs[_0x4347('0x33')](_0x4b4d18[_0x4347('0x2e')][_0x4347('0x33')]));_0x17edd6[_0x4347('0x32')]=_0x17edd6[_0x4347('0x32')][_0x4347('0x34')]?_0x17edd6[_0x4347('0x32')]:_0x25178e[_0x4347('0x31')];if(!_0x4b4d18[_0x4347('0x2e')][_0x4347('0x35')]('nolimit')){_0x17edd6[_0x4347('0x1e')]=qs[_0x4347('0x1e')](_0x4b4d18[_0x4347('0x2e')][_0x4347('0x1e')]);_0x17edd6[_0x4347('0x1c')]=qs[_0x4347('0x1c')](_0x4b4d18[_0x4347('0x2e')][_0x4347('0x1c')]);}_0x17edd6['order']=qs[_0x4347('0x36')](_0x4b4d18['query'][_0x4347('0x36')]);_0x17edd6[_0x4347('0x37')]=qs['filters'](_[_0x4347('0x38')](_0x4b4d18[_0x4347('0x2e')],_0x25178e[_0x4347('0x39')]),_0x3fe992);if(_0x4b4d18[_0x4347('0x2e')][_0x4347('0x3a')]){_0x17edd6[_0x4347('0x37')]=_['merge'](_0x17edd6[_0x4347('0x37')],{'$or':_['map'](_0x3fe992,function(_0x414394){if(_0x414394[_0x4347('0x2c')]!=='VIRTUAL'){var _0x3aa075={};_0x3aa075[_0x414394['name']]={'$like':'%'+_0x4b4d18[_0x4347('0x2e')][_0x4347('0x3a')]+'%'};return _0x3aa075;}})});}_0x17edd6=_[_0x4347('0x3b')]({},_0x17edd6,_0x4b4d18[_0x4347('0x3c')]);var _0x41d076={'where':_0x17edd6[_0x4347('0x37')]};return db[_0x4347('0x3d')][_0x4347('0x1f')](_0x41d076)[_0x4347('0x22')](function(_0x4aa769){_0x50e976['count']=_0x4aa769;if(_0x4b4d18['query'][_0x4347('0x3e')]){_0x17edd6[_0x4347('0x3f')]=[{'all':!![]}];}return db['ServicenowAccount'][_0x4347('0x40')](_0x17edd6);})[_0x4347('0x22')](function(_0x39d2be){_0x50e976[_0x4347('0x41')]=_0x39d2be;return _0x50e976;})[_0x4347('0x22')](respondWithFilteredResult(_0x3816cc,_0x17edd6))['catch'](handleError(_0x3816cc,null));};exports[_0x4347('0x42')]=function(_0x57fa76,_0x45833a){var _0x23e897={'raw':![],'where':{'id':_0x57fa76[_0x4347('0x43')]['id']}},_0x595d24={};_0x595d24[_0x4347('0x31')]=_['keys'](db['ServicenowAccount'][_0x4347('0x2a')]);_0x595d24[_0x4347('0x2e')]=_[_0x4347('0x2f')](_0x57fa76[_0x4347('0x2e')]);_0x595d24[_0x4347('0x39')]=_[_0x4347('0x30')](_0x595d24[_0x4347('0x31')],_0x595d24[_0x4347('0x2e')]);_0x23e897[_0x4347('0x32')]=_[_0x4347('0x30')](_0x595d24[_0x4347('0x31')],qs[_0x4347('0x33')](_0x57fa76['query'][_0x4347('0x33')]));_0x23e897[_0x4347('0x32')]=_0x23e897['attributes'][_0x4347('0x34')]?_0x23e897[_0x4347('0x32')]:_0x595d24[_0x4347('0x31')];if(_0x57fa76['query'][_0x4347('0x3e')]){_0x23e897[_0x4347('0x3f')]=[{'all':!![]}];}_0x23e897=_[_0x4347('0x3b')]({},_0x23e897,_0x57fa76[_0x4347('0x3c')]);return db[_0x4347('0x3d')][_0x4347('0x44')](_0x23e897)[_0x4347('0x22')](handleEntityNotFound(_0x45833a,null))[_0x4347('0x22')](respondWithResult(_0x45833a,null))['catch'](handleError(_0x45833a,null));};exports['create']=function(_0x426a6c,_0x510463){return db[_0x4347('0x3d')][_0x4347('0x45')](_0x426a6c['body'],{})['then'](respondWithResult(_0x510463,0xc9))['catch'](handleError(_0x510463,null));};exports[_0x4347('0x46')]=function(_0x26826a,_0x398bd6){if(_0x26826a[_0x4347('0x47')]['id']){delete _0x26826a[_0x4347('0x47')]['id'];}return db[_0x4347('0x3d')][_0x4347('0x44')]({'where':{'id':_0x26826a[_0x4347('0x43')]['id']}})[_0x4347('0x22')](handleEntityNotFound(_0x398bd6,null))['then'](saveUpdates(_0x26826a[_0x4347('0x47')],null))['then'](respondWithResult(_0x398bd6,null))[_0x4347('0x48')](handleError(_0x398bd6,null));};exports['destroy']=function(_0x4e251d,_0x54ba2f){return db[_0x4347('0x3d')]['find']({'where':{'id':_0x4e251d[_0x4347('0x43')]['id']}})[_0x4347('0x22')](handleEntityNotFound(_0x54ba2f,null))[_0x4347('0x22')](removeEntity(_0x54ba2f,null))['catch'](handleError(_0x54ba2f,null));};exports[_0x4347('0x49')]=function(_0x301cb3,_0x450f32,_0x474130){var _0x169778={};var _0x334767={};var _0x48c0bf;var _0x310ebc;return db[_0x4347('0x3d')][_0x4347('0x4a')]({'where':{'id':_0x301cb3[_0x4347('0x43')]['id']}})[_0x4347('0x22')](handleEntityNotFound(_0x450f32,null))[_0x4347('0x22')](function(_0x3d7a86){if(_0x3d7a86){_0x48c0bf=_0x3d7a86;_0x334767['model']=_[_0x4347('0x2f')](db[_0x4347('0x4b')][_0x4347('0x2a')]);_0x334767[_0x4347('0x2e')]=_[_0x4347('0x2f')](_0x301cb3['query']);_0x334767[_0x4347('0x39')]=_[_0x4347('0x30')](_0x334767['model'],_0x334767[_0x4347('0x2e')]);_0x169778[_0x4347('0x32')]=_['intersection'](_0x334767[_0x4347('0x31')],qs['fields'](_0x301cb3['query'][_0x4347('0x33')]));_0x169778[_0x4347('0x32')]=_0x169778[_0x4347('0x32')][_0x4347('0x34')]?_0x169778['attributes']:_0x334767[_0x4347('0x31')];_0x169778[_0x4347('0x4c')]=qs[_0x4347('0x36')](_0x301cb3[_0x4347('0x2e')][_0x4347('0x36')]);_0x169778[_0x4347('0x37')]=qs['filters'](_['pick'](_0x301cb3[_0x4347('0x2e')],_0x334767[_0x4347('0x39')]));if(_0x301cb3['query'][_0x4347('0x3a')]){_0x169778[_0x4347('0x37')]=_['merge'](_0x169778[_0x4347('0x37')],{'$or':_[_0x4347('0x29')](_0x169778['attributes'],function(_0x1bfd3d){var _0x3710a8={};_0x3710a8[_0x1bfd3d]={'$like':'%'+_0x301cb3[_0x4347('0x2e')][_0x4347('0x3a')]+'%'};return _0x3710a8;})});}_0x169778=_[_0x4347('0x3b')]({},_0x169778,_0x301cb3['options']);return _0x48c0bf[_0x4347('0x49')](_0x169778);}})['then'](function(_0x2edc2b){if(_0x2edc2b){_0x310ebc=_0x2edc2b[_0x4347('0x34')];if(!_0x301cb3[_0x4347('0x2e')]['hasOwnProperty'](_0x4347('0x4d'))){_0x169778['limit']=qs[_0x4347('0x1e')](_0x301cb3[_0x4347('0x2e')][_0x4347('0x1e')]);_0x169778[_0x4347('0x1c')]=qs[_0x4347('0x1c')](_0x301cb3[_0x4347('0x2e')][_0x4347('0x1c')]);}return _0x48c0bf['getConfigurations'](_0x169778);}})[_0x4347('0x22')](function(_0x362441){if(_0x362441){return _0x362441?{'count':_0x310ebc,'rows':_0x362441}:null;}})[_0x4347('0x22')](respondWithResult(_0x450f32,null))['catch'](handleError(_0x450f32,null));};exports[_0x4347('0x4e')]=function(_0x5e0b81,_0x1939d7,_0x18d62e){if(_0x5e0b81['body']['id']){delete _0x5e0b81['body']['id'];}return db[_0x4347('0x3d')][_0x4347('0x4a')]({'where':{'id':_0x5e0b81[_0x4347('0x43')]['id']}})[_0x4347('0x22')](handleEntityNotFound(_0x1939d7,null))['then'](function(_0x316be7){if(_0x316be7){_0x5e0b81[_0x4347('0x47')][_0x4347('0x4f')]=_0x316be7['id'];_0x5e0b81['body'][_0x4347('0x50')]=integrations[_0x4347('0x51')](_0x5e0b81[_0x4347('0x47')][_0x4347('0x52')],_0x5e0b81['body'][_0x4347('0x2c')]);_0x5e0b81[_0x4347('0x47')][_0x4347('0x53')]=integrations[_0x4347('0x54')](_0x5e0b81['body']['channel'],_0x5e0b81[_0x4347('0x47')]['type']);return db['ServicenowConfiguration'][_0x4347('0x45')](_0x5e0b81[_0x4347('0x47')],{'include':[{'model':db[_0x4347('0x55')],'as':_0x4347('0x50')},{'model':db[_0x4347('0x55')],'as':_0x4347('0x53')}]});}return null;})[_0x4347('0x22')](respondWithResult(_0x1939d7,null))[_0x4347('0x48')](handleError(_0x1939d7,null));};exports['getFields']=function(_0x21f32,_0x4422ea,_0x1f9a37){var _0x16e916=[_0x4347('0x56'),_0x4347('0x57'),_0x4347('0x58'),_0x4347('0x59'),_0x4347('0x5a'),_0x4347('0x5b'),_0x4347('0x5c'),'severity',_0x4347('0x5d')];var _0x5ad269=[_0x4347('0x5e'),_0x4347('0x56'),_0x4347('0x5f'),_0x4347('0x60'),_0x4347('0x61'),_0x4347('0x62'),'child_incidents',_0x4347('0x57'),_0x4347('0x63'),'number',_0x4347('0x64'),_0x4347('0x65'),'opened_by','user_input',_0x4347('0x66'),_0x4347('0x67'),_0x4347('0x68'),'sys_created_by',_0x4347('0x58'),_0x4347('0x4c'),_0x4347('0x69'),'closed_at','cmdb_ci',_0x4347('0x6a'),_0x4347('0x6b'),_0x4347('0x6c'),'work_notes_list',_0x4347('0x6d'),_0x4347('0x6e'),_0x4347('0x6f'),'rfc',_0x4347('0x70'),_0x4347('0x71'),_0x4347('0x72'),_0x4347('0x73'),_0x4347('0x74'),_0x4347('0x75'),_0x4347('0x76'),_0x4347('0x77'),_0x4347('0x78'),'approval_set',_0x4347('0x59'),'work_notes',_0x4347('0x79'),_0x4347('0x5a'),_0x4347('0x7a'),_0x4347('0x7b'),_0x4347('0x7c'),_0x4347('0x7d'),_0x4347('0x7e'),_0x4347('0x7f'),'description',_0x4347('0x80'),_0x4347('0x5b'),'sys_class_name',_0x4347('0x81'),_0x4347('0x82'),_0x4347('0x83'),_0x4347('0x84'),_0x4347('0x85'),_0x4347('0x86'),_0x4347('0x87'),_0x4347('0x5c'),_0x4347('0x88'),_0x4347('0x89'),_0x4347('0x8a'),'reassignment_count','activity_due',_0x4347('0x8b'),'severity','comments',_0x4347('0x8c'),_0x4347('0x8d'),_0x4347('0x8e'),_0x4347('0x8f'),_0x4347('0x90'),_0x4347('0x91'),'sys_tags',_0x4347('0x92'),_0x4347('0x93'),_0x4347('0x94'),_0x4347('0x95'),_0x4347('0x5d')];var _0x1efd66='';var _0x1ab506='';var _0x59b4a2=[];var _0x238561='';var _0x125da2='';var _0x32ee4b=[];var _0x30efb7='';var _0x3b5013='';var _0xae64d5={};var _0x601306='';return db[_0x4347('0x3d')]['findOne']({'where':{'id':_0x21f32[_0x4347('0x43')]['id']},'attributes':['id','username',_0x4347('0x96'),'email','remoteUri','serverUrl']})[_0x4347('0x22')](handleEntityNotFound(_0x4422ea,null))[_0x4347('0x22')](function(_0x41825d){if(_0x41825d){_0x601306=_0x41825d['remoteUri'];var _0x5ed165=_0x601306['slice'](-0x1);if(_0x5ed165==='/'){_0x601306=_0x601306[_0x4347('0x97')](0x0,_0x601306[_0x4347('0x98')](_0x5ed165));}_0x3b5013=util[_0x4347('0x99')](_0x4347('0x9a'),_0x601306);_0x30efb7=util[_0x4347('0x99')](_0x4347('0x9b'),_0x601306);_0xae64d5={'user':_0x41825d['username'],'pass':_0x41825d[_0x4347('0x96')]};var _0x3cce3a={'method':'GET','uri':_0x3b5013+_0x4347('0x9c'),'auth':_0xae64d5,'json':!![]};return rp(_0x3cce3a);}})[_0x4347('0x22')](function(_0x4e801b){if(_0x4e801b['result'][_0x4347('0x34')]>0x0){_0x1efd66=_0x4e801b['result'];}console[_0x4347('0x9d')](_0x4347('0x9e'),_0x1efd66);_0x32ee4b=[];_0x1ab506=Object[_0x4347('0x9f')]([],_0x1efd66);_[_0x4347('0xa0')](_0x1ab506,function(_0x188c7d){return!_0x16e916[_0x4347('0xa1')](_0x188c7d['name']);});_0x1ab506[_0x4347('0xa2')](function(_0x51bdad){var _0x4e29c6=createFieldObject(_0x30efb7,_0xae64d5,_0x51bdad['internalType'],_0x51bdad[_0x4347('0x26')],_0x51bdad[_0x4347('0xa3')],![]);_0x32ee4b[_0x4347('0xa4')](_0x4e29c6);});return Promise['all'](_0x32ee4b);})[_0x4347('0x22')](function(_0x20bfbe){_0x59b4a2=_0x20bfbe;_0x238561=Object[_0x4347('0x9f')]([],_0x1efd66);console[_0x4347('0x9d')]('TCL:\x20_object',_0x1efd66);_[_0x4347('0xa0')](_0x238561,function(_0x4818c7){return _0x5ad269[_0x4347('0xa1')](_0x4818c7[_0x4347('0x26')]);});console[_0x4347('0x9d')](_0x4347('0xa5'),_0x238561);_0x32ee4b=[];_0x238561['forEach'](function(_0x5b66ea){var _0x79d00d=createFieldObject(_0x30efb7,_0xae64d5,_0x5b66ea[_0x4347('0xa6')],_0x5b66ea[_0x4347('0x26')],_0x5b66ea[_0x4347('0xa3')],!![]);_0x32ee4b['push'](_0x79d00d);});return Promise['all'](_0x32ee4b);})[_0x4347('0x22')](function(_0x3f2e48){_0x125da2=_0x3f2e48;var _0x87f5ab=_0x59b4a2[_0x4347('0xa7')](_0x125da2);return{'count':_0x87f5ab[_0x4347('0x34')],'rows':_0x87f5ab};})['then'](respondWithResult(_0x4422ea,null))[_0x4347('0x48')](function(_0x453d8b){console['log'](_0x4347('0xa8')+_0x453d8b);var _0x1a579c=_0x21f32[_0x4347('0x2e')][_0x4347('0xa9')]?0x1f4:_0x453d8b['statusCode']||0x1f4;logger[_0x4347('0x24')](_0x453d8b[_0x4347('0x25')]);delete _0x453d8b[_0x4347('0x26')];if(_0x1a579c===0x191){_0x1a579c=0x190;}_0x4422ea[_0x4347('0x19')](_0x1a579c)[_0x4347('0x27')](_0x21f32[_0x4347('0x2e')][_0x4347('0xa9')]?{'message':_0x4347('0xaa'),'statusCode':_0x453d8b[_0x4347('0xab')]}:_0x453d8b);});};function createFieldObject(_0x1ee15e,_0xfa9264,_0x18c2c7,_0x637632,_0x946c49,_0x128143){return new Promise(function(_0x5197fb,_0x23a95d){var _0xb8daa4={'id':_0x637632,'name':_0x946c49,'custom':_0x128143};if(_0x18c2c7==='boolean'){_0xb8daa4['options']=[{'name':'True','value':'true'},{'name':_0x4347('0xac'),'value':_0x4347('0xad')}];_0x5197fb(_0xb8daa4);}else{var _0x27e421={'method':_0x4347('0xae'),'uri':_0x1ee15e+_0x4347('0xaf')+_0x637632,'auth':_0xfa9264,'json':!![]};return rp(_0x27e421)[_0x4347('0x22')](function(_0x361635){var _0x3c7b01=[];if(_0x361635[_0x4347('0xb0')][_0x4347('0x34')]>0x0){_0x361635['result']['forEach'](function(_0x541281){if(_0x541281[_0x4347('0xb1')]==='false'){var _0x4f6467={'name':_0x541281[_0x4347('0xa3')],'value':_0x541281[_0x4347('0xb2')]};_0x3c7b01[_0x4347('0xa4')](_0x4f6467);}});}_0xb8daa4[_0x4347('0x3c')]=_0x3c7b01;if(_0xb8daa4[_0x4347('0x3c')][_0x4347('0x34')]>0x0){_0x5197fb(_0xb8daa4);}else{if(_0x128143==![]){_0x5197fb();}else{_0x5197fb(_0xb8daa4);}}});}});}
\ No newline at end of file
+var _0xf7ba=['calendar_duration','notify','sys_class_name','close_notes','closed_by','follow_up','sys_id','reopened_by','urgency','activity_due','assigned_to','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','correlation_id','location','username','email','serverUrl','slice','substring','lastIndexOf','format','%s/api/now/doc/table/schema/','password','GET','log','incident\x20table\x20objects','assign','remove','includes','forEach','internalType','all','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','label','concat','ServiceNow\x20error:\x20','test','statusCode','boolean','True','False','sys_choice?sysparm_query=name=incident^element=','result','false','value','push','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined','count','limit','set','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','ServicenowAccount','includeAll','include','rows','show','params','length','create','body','catch','find','getConfigurations','findOne','ServicenowConfiguration','addConfiguration','channel','Descriptions','getDescriptions','ServicenowField','Subjects','getFields','made_sla','knowledge','incident_state','severity','category','parent','caused_by','watch_list','sys_updated_on','child_incidents','hold_reason','number','resolved_by','opened_by','user_input','sys_created_on','sys_domain','state','sys_created_by','calendar_stc','closed_at','cmdb_ci','delivery_plan','impact','active','business_service','priority','rfc','opened_at','business_duration','group_list','work_end','reopened_time','resolved_at','caller_id','approval_set','subcategory','short_description','correlation_display','work_start','assignment_group','business_stc','additional_assignee_list','description'];(function(_0x3d2f5a,_0x25edec){var _0x515221=function(_0x200e54){while(--_0x200e54){_0x3d2f5a['push'](_0x3d2f5a['shift']());}};_0x515221(++_0x25edec);}(_0xf7ba,0xea));var _0xaf7b=function(_0x3e3287,_0x167e2e){_0x3e3287=_0x3e3287-0x0;var _0x34b4e3=_0xf7ba[_0x3e3287];return _0x34b4e3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaf7b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaf7b('0x1'));var rp=require(_0xaf7b('0x2'));var moment=require(_0xaf7b('0x3'));var BPromise=require(_0xaf7b('0x4'));var Mustache=require('mustache');var util=require(_0xaf7b('0x5'));var path=require(_0xaf7b('0x6'));var sox=require('sox');var csv=require(_0xaf7b('0x7'));var ejs=require(_0xaf7b('0x8'));var fs=require('fs');var fs_extra=require(_0xaf7b('0x9'));var _=require('lodash');var squel=require(_0xaf7b('0xa'));var crypto=require(_0xaf7b('0xb'));var jsforce=require(_0xaf7b('0xc'));var deskjs=require(_0xaf7b('0xd'));var toCsv=require(_0xaf7b('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xaf7b('0xe'));var qs=require(_0xaf7b('0xf'));var as=require(_0xaf7b('0x10'));var hardwareService=require(_0xaf7b('0x11'));var logger=require(_0xaf7b('0x12'))(_0xaf7b('0x13'));var utils=require(_0xaf7b('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xaf7b('0x15'))['db'];var integrations=require(_0xaf7b('0x16'));function respondWithStatusCode(_0x45e0b4,_0x323814){_0x323814=_0x323814||0xcc;return function(_0x5b4670){if(_0x5b4670){return _0x45e0b4['sendStatus'](_0x323814);}return _0x45e0b4[_0xaf7b('0x17')](_0x323814)['end']();};}function respondWithResult(_0x427505,_0x1f7e1e){_0x1f7e1e=_0x1f7e1e||0xc8;return function(_0x45ca39){if(_0x45ca39){return _0x427505[_0xaf7b('0x17')](_0x1f7e1e)[_0xaf7b('0x18')](_0x45ca39);}};}function respondWithFilteredResult(_0x10acba,_0x478d3f){return function(_0x2e3439){if(_0x2e3439){var _0x4365f8=typeof _0x478d3f[_0xaf7b('0x19')]==='undefined'&&typeof _0x478d3f['limit']===_0xaf7b('0x1a');var _0xe89133=_0x2e3439[_0xaf7b('0x1b')];var _0x1c79e8=_0x4365f8?0x0:_0x478d3f[_0xaf7b('0x19')];var _0x45d79b=_0x4365f8?_0x2e3439[_0xaf7b('0x1b')]:_0x478d3f[_0xaf7b('0x19')]+_0x478d3f[_0xaf7b('0x1c')];var _0x1608cd;if(_0x45d79b>=_0xe89133){_0x45d79b=_0xe89133;_0x1608cd=0xc8;}else{_0x1608cd=0xce;}_0x10acba['status'](_0x1608cd);return _0x10acba[_0xaf7b('0x1d')]('Content-Range',_0x1c79e8+'-'+_0x45d79b+'/'+_0xe89133)[_0xaf7b('0x18')](_0x2e3439);}return null;};}function patchUpdates(_0x5376b3){return function(_0x1df750){try{jsonpatch[_0xaf7b('0x1e')](_0x1df750,_0x5376b3,!![]);}catch(_0x30c7ff){return BPromise[_0xaf7b('0x1f')](_0x30c7ff);}return _0x1df750[_0xaf7b('0x20')]();};}function saveUpdates(_0x286a2d,_0x57b042){return function(_0x249771){if(_0x249771){return _0x249771[_0xaf7b('0x21')](_0x286a2d)[_0xaf7b('0x22')](function(_0x20b187){return _0x20b187;});}return null;};}function removeEntity(_0x18f913,_0x3d39d2){return function(_0x1afab5){if(_0x1afab5){return _0x1afab5[_0xaf7b('0x23')]()[_0xaf7b('0x22')](function(){_0x18f913[_0xaf7b('0x17')](0xcc)[_0xaf7b('0x24')]();});}};}function handleEntityNotFound(_0x56ee6d,_0x1becb6){return function(_0x54d22d){if(!_0x54d22d){_0x56ee6d[_0xaf7b('0x25')](0x194);}return _0x54d22d;};}function handleError(_0x2e2fba,_0x3e2564){_0x3e2564=_0x3e2564||0x1f4;return function(_0x43e3c2){logger[_0xaf7b('0x26')](_0x43e3c2[_0xaf7b('0x27')]);if(_0x43e3c2[_0xaf7b('0x28')]){delete _0x43e3c2['name'];}_0x2e2fba[_0xaf7b('0x17')](_0x3e2564)[_0xaf7b('0x29')](_0x43e3c2);};}exports[_0xaf7b('0x2a')]=function(_0x6fbdd,_0x28ccaa){var _0x5b3bf5={},_0x583810={},_0x4c41aa={'count':0x0,'rows':[]};var _0x511943=_[_0xaf7b('0x2b')](db['ServicenowAccount'][_0xaf7b('0x2c')],function(_0x17cd0f){return{'name':_0x17cd0f[_0xaf7b('0x2d')],'type':_0x17cd0f[_0xaf7b('0x2e')]['key']};});_0x583810[_0xaf7b('0x2f')]=_[_0xaf7b('0x2b')](_0x511943,'name');_0x583810[_0xaf7b('0x30')]=_[_0xaf7b('0x31')](_0x6fbdd[_0xaf7b('0x30')]);_0x583810['filters']=_[_0xaf7b('0x32')](_0x583810[_0xaf7b('0x2f')],_0x583810[_0xaf7b('0x30')]);_0x5b3bf5[_0xaf7b('0x33')]=_[_0xaf7b('0x32')](_0x583810[_0xaf7b('0x2f')],qs[_0xaf7b('0x34')](_0x6fbdd['query']['fields']));_0x5b3bf5[_0xaf7b('0x33')]=_0x5b3bf5['attributes']['length']?_0x5b3bf5[_0xaf7b('0x33')]:_0x583810[_0xaf7b('0x2f')];if(!_0x6fbdd['query'][_0xaf7b('0x35')](_0xaf7b('0x36'))){_0x5b3bf5[_0xaf7b('0x1c')]=qs[_0xaf7b('0x1c')](_0x6fbdd[_0xaf7b('0x30')][_0xaf7b('0x1c')]);_0x5b3bf5[_0xaf7b('0x19')]=qs['offset'](_0x6fbdd['query']['offset']);}_0x5b3bf5[_0xaf7b('0x37')]=qs[_0xaf7b('0x38')](_0x6fbdd['query'][_0xaf7b('0x38')]);_0x5b3bf5[_0xaf7b('0x39')]=qs[_0xaf7b('0x3a')](_['pick'](_0x6fbdd['query'],_0x583810[_0xaf7b('0x3a')]),_0x511943);if(_0x6fbdd['query'][_0xaf7b('0x3b')]){_0x5b3bf5[_0xaf7b('0x39')]=_[_0xaf7b('0x3c')](_0x5b3bf5['where'],{'$or':_[_0xaf7b('0x2b')](_0x511943,function(_0x53c692){if(_0x53c692[_0xaf7b('0x2e')]!==_0xaf7b('0x3d')){var _0x53fa09={};_0x53fa09[_0x53c692[_0xaf7b('0x28')]]={'$like':'%'+_0x6fbdd['query'][_0xaf7b('0x3b')]+'%'};return _0x53fa09;}})});}_0x5b3bf5=_['merge']({},_0x5b3bf5,_0x6fbdd[_0xaf7b('0x3e')]);var _0x1a44be={'where':_0x5b3bf5[_0xaf7b('0x39')]};return db[_0xaf7b('0x3f')][_0xaf7b('0x1b')](_0x1a44be)[_0xaf7b('0x22')](function(_0x5a44f8){_0x4c41aa[_0xaf7b('0x1b')]=_0x5a44f8;if(_0x6fbdd[_0xaf7b('0x30')][_0xaf7b('0x40')]){_0x5b3bf5[_0xaf7b('0x41')]=[{'all':!![]}];}return db[_0xaf7b('0x3f')]['findAll'](_0x5b3bf5);})[_0xaf7b('0x22')](function(_0x36e504){_0x4c41aa[_0xaf7b('0x42')]=_0x36e504;return _0x4c41aa;})[_0xaf7b('0x22')](respondWithFilteredResult(_0x28ccaa,_0x5b3bf5))['catch'](handleError(_0x28ccaa,null));};exports[_0xaf7b('0x43')]=function(_0x1a8892,_0x7c3928){var _0x53cb1a={'raw':![],'where':{'id':_0x1a8892[_0xaf7b('0x44')]['id']}},_0x44625e={};_0x44625e[_0xaf7b('0x2f')]=_[_0xaf7b('0x31')](db[_0xaf7b('0x3f')]['rawAttributes']);_0x44625e[_0xaf7b('0x30')]=_[_0xaf7b('0x31')](_0x1a8892[_0xaf7b('0x30')]);_0x44625e[_0xaf7b('0x3a')]=_[_0xaf7b('0x32')](_0x44625e[_0xaf7b('0x2f')],_0x44625e['query']);_0x53cb1a[_0xaf7b('0x33')]=_[_0xaf7b('0x32')](_0x44625e['model'],qs[_0xaf7b('0x34')](_0x1a8892[_0xaf7b('0x30')][_0xaf7b('0x34')]));_0x53cb1a[_0xaf7b('0x33')]=_0x53cb1a[_0xaf7b('0x33')][_0xaf7b('0x45')]?_0x53cb1a['attributes']:_0x44625e[_0xaf7b('0x2f')];if(_0x1a8892[_0xaf7b('0x30')]['includeAll']){_0x53cb1a[_0xaf7b('0x41')]=[{'all':!![]}];}_0x53cb1a=_[_0xaf7b('0x3c')]({},_0x53cb1a,_0x1a8892[_0xaf7b('0x3e')]);return db[_0xaf7b('0x3f')]['find'](_0x53cb1a)[_0xaf7b('0x22')](handleEntityNotFound(_0x7c3928,null))[_0xaf7b('0x22')](respondWithResult(_0x7c3928,null))['catch'](handleError(_0x7c3928,null));};exports['create']=function(_0x42c5b3,_0x2f2f3f){return db['ServicenowAccount'][_0xaf7b('0x46')](_0x42c5b3[_0xaf7b('0x47')],{})[_0xaf7b('0x22')](respondWithResult(_0x2f2f3f,0xc9))[_0xaf7b('0x48')](handleError(_0x2f2f3f,null));};exports[_0xaf7b('0x21')]=function(_0x1d717e,_0x37bfe4){if(_0x1d717e[_0xaf7b('0x47')]['id']){delete _0x1d717e[_0xaf7b('0x47')]['id'];}return db[_0xaf7b('0x3f')]['find']({'where':{'id':_0x1d717e[_0xaf7b('0x44')]['id']}})['then'](handleEntityNotFound(_0x37bfe4,null))['then'](saveUpdates(_0x1d717e[_0xaf7b('0x47')],null))['then'](respondWithResult(_0x37bfe4,null))[_0xaf7b('0x48')](handleError(_0x37bfe4,null));};exports[_0xaf7b('0x23')]=function(_0xd53e26,_0x5b5c1d){return db[_0xaf7b('0x3f')][_0xaf7b('0x49')]({'where':{'id':_0xd53e26[_0xaf7b('0x44')]['id']}})[_0xaf7b('0x22')](handleEntityNotFound(_0x5b5c1d,null))[_0xaf7b('0x22')](removeEntity(_0x5b5c1d,null))['catch'](handleError(_0x5b5c1d,null));};exports[_0xaf7b('0x4a')]=function(_0x185953,_0x59cb5f,_0x10b49a){var _0x185a76={};var _0x3d7b6e={};var _0x124cf2;var _0x2a6e56;return db[_0xaf7b('0x3f')][_0xaf7b('0x4b')]({'where':{'id':_0x185953['params']['id']}})[_0xaf7b('0x22')](handleEntityNotFound(_0x59cb5f,null))[_0xaf7b('0x22')](function(_0x11ae11){if(_0x11ae11){_0x124cf2=_0x11ae11;_0x3d7b6e[_0xaf7b('0x2f')]=_[_0xaf7b('0x31')](db[_0xaf7b('0x4c')][_0xaf7b('0x2c')]);_0x3d7b6e[_0xaf7b('0x30')]=_['keys'](_0x185953[_0xaf7b('0x30')]);_0x3d7b6e['filters']=_[_0xaf7b('0x32')](_0x3d7b6e[_0xaf7b('0x2f')],_0x3d7b6e['query']);_0x185a76[_0xaf7b('0x33')]=_[_0xaf7b('0x32')](_0x3d7b6e[_0xaf7b('0x2f')],qs['fields'](_0x185953[_0xaf7b('0x30')][_0xaf7b('0x34')]));_0x185a76['attributes']=_0x185a76['attributes'][_0xaf7b('0x45')]?_0x185a76[_0xaf7b('0x33')]:_0x3d7b6e['model'];_0x185a76['order']=qs[_0xaf7b('0x38')](_0x185953['query'][_0xaf7b('0x38')]);_0x185a76[_0xaf7b('0x39')]=qs[_0xaf7b('0x3a')](_['pick'](_0x185953[_0xaf7b('0x30')],_0x3d7b6e['filters']));if(_0x185953[_0xaf7b('0x30')][_0xaf7b('0x3b')]){_0x185a76[_0xaf7b('0x39')]=_['merge'](_0x185a76[_0xaf7b('0x39')],{'$or':_['map'](_0x185a76['attributes'],function(_0x149e61){var _0x22995d={};_0x22995d[_0x149e61]={'$like':'%'+_0x185953[_0xaf7b('0x30')][_0xaf7b('0x3b')]+'%'};return _0x22995d;})});}_0x185a76=_['merge']({},_0x185a76,_0x185953['options']);return _0x124cf2[_0xaf7b('0x4a')](_0x185a76);}})[_0xaf7b('0x22')](function(_0x11d546){if(_0x11d546){_0x2a6e56=_0x11d546[_0xaf7b('0x45')];if(!_0x185953[_0xaf7b('0x30')][_0xaf7b('0x35')](_0xaf7b('0x36'))){_0x185a76[_0xaf7b('0x1c')]=qs['limit'](_0x185953['query'][_0xaf7b('0x1c')]);_0x185a76[_0xaf7b('0x19')]=qs[_0xaf7b('0x19')](_0x185953[_0xaf7b('0x30')][_0xaf7b('0x19')]);}return _0x124cf2[_0xaf7b('0x4a')](_0x185a76);}})[_0xaf7b('0x22')](function(_0x270572){if(_0x270572){return _0x270572?{'count':_0x2a6e56,'rows':_0x270572}:null;}})['then'](respondWithResult(_0x59cb5f,null))[_0xaf7b('0x48')](handleError(_0x59cb5f,null));};exports[_0xaf7b('0x4d')]=function(_0x439ea4,_0x3303e8,_0x376aa5){if(_0x439ea4['body']['id']){delete _0x439ea4[_0xaf7b('0x47')]['id'];}return db['ServicenowAccount']['findOne']({'where':{'id':_0x439ea4[_0xaf7b('0x44')]['id']}})[_0xaf7b('0x22')](handleEntityNotFound(_0x3303e8,null))['then'](function(_0x542bf0){if(_0x542bf0){_0x439ea4[_0xaf7b('0x47')]['AccountId']=_0x542bf0['id'];_0x439ea4[_0xaf7b('0x47')]['Subjects']=integrations['getSubjects'](_0x439ea4[_0xaf7b('0x47')][_0xaf7b('0x4e')],_0x439ea4[_0xaf7b('0x47')][_0xaf7b('0x2e')]);_0x439ea4[_0xaf7b('0x47')][_0xaf7b('0x4f')]=integrations[_0xaf7b('0x50')](_0x439ea4[_0xaf7b('0x47')][_0xaf7b('0x4e')],_0x439ea4[_0xaf7b('0x47')][_0xaf7b('0x2e')]);return db[_0xaf7b('0x4c')][_0xaf7b('0x46')](_0x439ea4[_0xaf7b('0x47')],{'include':[{'model':db[_0xaf7b('0x51')],'as':_0xaf7b('0x52')},{'model':db[_0xaf7b('0x51')],'as':_0xaf7b('0x4f')}]});}return null;})['then'](respondWithResult(_0x3303e8,null))[_0xaf7b('0x48')](handleError(_0x3303e8,null));};exports[_0xaf7b('0x53')]=function(_0x25e9d6,_0x55a69b,_0x20cc7f){var _0x1f4a14=[_0xaf7b('0x54'),'hold_reason',_0xaf7b('0x55'),'subcategory','close_code','notify',_0xaf7b('0x56'),_0xaf7b('0x57'),_0xaf7b('0x58')];var _0x2c3725=[_0xaf7b('0x59'),'made_sla',_0xaf7b('0x5a'),_0xaf7b('0x5b'),'upon_reject',_0xaf7b('0x5c'),_0xaf7b('0x5d'),_0xaf7b('0x5e'),'approval_history',_0xaf7b('0x5f'),_0xaf7b('0x60'),'sys_updated_by',_0xaf7b('0x61'),_0xaf7b('0x62'),_0xaf7b('0x63'),_0xaf7b('0x64'),_0xaf7b('0x65'),_0xaf7b('0x66'),_0xaf7b('0x55'),'order',_0xaf7b('0x67'),_0xaf7b('0x68'),_0xaf7b('0x69'),_0xaf7b('0x6a'),_0xaf7b('0x6b'),_0xaf7b('0x6c'),'work_notes_list',_0xaf7b('0x6d'),_0xaf7b('0x6e'),'sys_domain_path',_0xaf7b('0x6f'),'time_worked','expected_start',_0xaf7b('0x70'),_0xaf7b('0x71'),_0xaf7b('0x72'),_0xaf7b('0x73'),_0xaf7b('0x74'),_0xaf7b('0x75'),_0xaf7b('0x76'),_0xaf7b('0x77'),_0xaf7b('0x78'),'work_notes',_0xaf7b('0x79'),'close_code',_0xaf7b('0x7a'),'delivery_task',_0xaf7b('0x7b'),_0xaf7b('0x7c'),_0xaf7b('0x7d'),_0xaf7b('0x7e'),_0xaf7b('0x7f'),_0xaf7b('0x80'),_0xaf7b('0x81'),_0xaf7b('0x82'),_0xaf7b('0x83'),_0xaf7b('0x84'),_0xaf7b('0x85'),'parent_incident',_0xaf7b('0x86'),'contact_type',_0xaf7b('0x87'),_0xaf7b('0x56'),_0xaf7b('0x88'),'problem_id','company','reassignment_count',_0xaf7b('0x89'),_0xaf7b('0x8a'),_0xaf7b('0x57'),'comments','sla_due','approval',_0xaf7b('0x8b'),_0xaf7b('0x8c'),_0xaf7b('0x8d'),_0xaf7b('0x8e'),_0xaf7b('0x8f'),_0xaf7b('0x90'),_0xaf7b('0x91'),_0xaf7b('0x92'),_0xaf7b('0x93'),_0xaf7b('0x58')];var _0x23cfee='';var _0x350060='';var _0x5a4e04=[];var _0x403265='';var _0xcdf1c8='';var _0x3aba33=[];var _0x5794c3='';var _0x1fe549='';var _0xc73efd={};var _0x86f750='';return db['ServicenowAccount'][_0xaf7b('0x4b')]({'where':{'id':_0x25e9d6[_0xaf7b('0x44')]['id']},'attributes':['id',_0xaf7b('0x94'),'password',_0xaf7b('0x95'),'remoteUri',_0xaf7b('0x96')]})[_0xaf7b('0x22')](handleEntityNotFound(_0x55a69b,null))['then'](function(_0x579602){if(_0x579602){_0x86f750=_0x579602['remoteUri'];var _0x572168=_0x86f750[_0xaf7b('0x97')](-0x1);if(_0x572168==='/'){_0x86f750=_0x86f750[_0xaf7b('0x98')](0x0,_0x86f750[_0xaf7b('0x99')](_0x572168));}_0x1fe549=util[_0xaf7b('0x9a')](_0xaf7b('0x9b'),_0x86f750);_0x5794c3=util[_0xaf7b('0x9a')]('%s/api/now/table/',_0x86f750);_0xc73efd={'user':_0x579602['username'],'pass':_0x579602[_0xaf7b('0x9c')]};var _0x27c966={'method':_0xaf7b('0x9d'),'uri':_0x1fe549+'incident?sysparm_display_value=all','auth':_0xc73efd,'json':!![]};return rp(_0x27c966);}})['then'](function(_0x32581d){if(_0x32581d['result'][_0xaf7b('0x45')]>0x0){_0x23cfee=_0x32581d['result'];}console[_0xaf7b('0x9e')](_0xaf7b('0x9f'),_0x23cfee);_0x3aba33=[];_0x350060=Object[_0xaf7b('0xa0')]([],_0x23cfee);_[_0xaf7b('0xa1')](_0x350060,function(_0x50bcc0){return!_0x1f4a14[_0xaf7b('0xa2')](_0x50bcc0[_0xaf7b('0x28')]);});_0x350060[_0xaf7b('0xa3')](function(_0x218bca){var _0x5a8666=createFieldObject(_0x5794c3,_0xc73efd,_0x218bca[_0xaf7b('0xa4')],_0x218bca[_0xaf7b('0x28')],_0x218bca['label'],![]);_0x3aba33['push'](_0x5a8666);});return Promise[_0xaf7b('0xa5')](_0x3aba33);})[_0xaf7b('0x22')](function(_0x14a07e){_0x5a4e04=_0x14a07e;_0x403265=Object[_0xaf7b('0xa0')]([],_0x23cfee);console[_0xaf7b('0x9e')](_0xaf7b('0xa6'),_0x23cfee);_[_0xaf7b('0xa1')](_0x403265,function(_0x506342){return _0x2c3725['includes'](_0x506342['name']);});console[_0xaf7b('0x9e')](_0xaf7b('0xa7'),_0x403265);_0x3aba33=[];_0x403265[_0xaf7b('0xa3')](function(_0x12a525){var _0x451dbc=createFieldObject(_0x5794c3,_0xc73efd,_0x12a525[_0xaf7b('0xa4')],_0x12a525['name'],_0x12a525[_0xaf7b('0xa8')],!![]);_0x3aba33['push'](_0x451dbc);});return Promise[_0xaf7b('0xa5')](_0x3aba33);})[_0xaf7b('0x22')](function(_0x198688){_0xcdf1c8=_0x198688;var _0x4124cc=_0x5a4e04[_0xaf7b('0xa9')](_0xcdf1c8);return{'count':_0x4124cc['length'],'rows':_0x4124cc};})['then'](respondWithResult(_0x55a69b,null))[_0xaf7b('0x48')](function(_0x5bf705){console[_0xaf7b('0x9e')](_0xaf7b('0xaa')+_0x5bf705);var _0x51dc8b=_0x25e9d6[_0xaf7b('0x30')][_0xaf7b('0xab')]?0x1f4:_0x5bf705[_0xaf7b('0xac')]||0x1f4;logger['error'](_0x5bf705[_0xaf7b('0x27')]);delete _0x5bf705[_0xaf7b('0x28')];if(_0x51dc8b===0x191){_0x51dc8b=0x190;}_0x55a69b[_0xaf7b('0x17')](_0x51dc8b)[_0xaf7b('0x29')](_0x25e9d6['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x5bf705['statusCode']}:_0x5bf705);});};function createFieldObject(_0x2adf33,_0x3c8b69,_0x2ce1d6,_0x483ea2,_0x238eb9,_0x30a68f){return new Promise(function(_0x5e85c9,_0x34b993){var _0x1d3cfc={'id':_0x483ea2,'name':_0x238eb9,'custom':_0x30a68f};if(_0x2ce1d6===_0xaf7b('0xad')){_0x1d3cfc[_0xaf7b('0x3e')]=[{'name':_0xaf7b('0xae'),'value':'true'},{'name':_0xaf7b('0xaf'),'value':'false'}];_0x5e85c9(_0x1d3cfc);}else{var _0x33ea07={'method':_0xaf7b('0x9d'),'uri':_0x2adf33+_0xaf7b('0xb0')+_0x483ea2,'auth':_0x3c8b69,'json':!![]};return rp(_0x33ea07)[_0xaf7b('0x22')](function(_0x2dd7e0){var _0x511174=[];if(_0x2dd7e0['result'][_0xaf7b('0x45')]>0x0){_0x2dd7e0[_0xaf7b('0xb1')][_0xaf7b('0xa3')](function(_0x450a39){if(_0x450a39['inactive']===_0xaf7b('0xb2')){var _0x548fa2={'name':_0x450a39[_0xaf7b('0xa8')],'value':_0x450a39[_0xaf7b('0xb3')]};_0x511174[_0xaf7b('0xb4')](_0x548fa2);}});}_0x1d3cfc[_0xaf7b('0x3e')]=_0x511174;if(_0x1d3cfc[_0xaf7b('0x3e')]['length']>0x0){_0x5e85c9(_0x1d3cfc);}else{if(_0x30a68f==![]){_0x5e85c9();}else{_0x5e85c9(_0x1d3cfc);}}});}});}
\ No newline at end of file
index 6e7f69e..5095d48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','ServicenowAccount','int_servicenow_accounts'];(function(_0x445c98,_0x132bf7){var _0x2fe913=function(_0x32e864){while(--_0x32e864){_0x445c98['push'](_0x445c98['shift']());}};_0x2fe913(++_0x132bf7);}(_0x5fc3,0xa8));var _0x35fc=function(_0x381589,_0x27a707){_0x381589=_0x381589-0x0;var _0x2a075d=_0x5fc3[_0x381589];return _0x2a075d;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));var integrations=require(_0x35fc('0x9'));module['exports']=function(_0x5754be,_0x19a0d1){return _0x5754be['define'](_0x35fc('0xa'),attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfdbd=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intServicenowAccount.attributes','exports','int_servicenow_accounts'];(function(_0x2bd757,_0x51055b){var _0x274b7a=function(_0x351f97){while(--_0x351f97){_0x2bd757['push'](_0x2bd757['shift']());}};_0x274b7a(++_0x51055b);}(_0xfdbd,0xf0));var _0xdfdb=function(_0x3f9584,_0x5ab12c){_0x3f9584=_0x3f9584-0x0;var _0x9d54c=_0xfdbd[_0x3f9584];return _0x9d54c;};'use strict';var _=require(_0xdfdb('0x0'));var util=require(_0xdfdb('0x1'));var logger=require(_0xdfdb('0x2'))(_0xdfdb('0x3'));var moment=require(_0xdfdb('0x4'));var BPromise=require(_0xdfdb('0x5'));var rp=require(_0xdfdb('0x6'));var fs=require('fs');var path=require(_0xdfdb('0x7'));var rimraf=require(_0xdfdb('0x8'));var config=require('../../config/environment');var attributes=require(_0xdfdb('0x9'));var integrations=require('../../components/integrations/configuration');module[_0xdfdb('0xa')]=function(_0x41bd5e,_0x489f19){return _0x41bd5e['define']('ServicenowAccount',attributes,{'tableName':_0xdfdb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 031f32c..778d5c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5f9=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','request','then','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','ServicenowAccount','findAll','options','raw','where','limit','include','map','model','attributes','GetServicenowAccount','ShowServicenowAccount','util'];(function(_0x2a8add,_0x25357c){var _0x8f61bb=function(_0x5416a3){while(--_0x5416a3){_0x2a8add['push'](_0x2a8add['shift']());}};_0x8f61bb(++_0x25357c);}(_0xb5f9,0xcb));var _0x9b5f=function(_0x4468b2,_0x42f390){_0x4468b2=_0x4468b2-0x0;var _0x3e84b7=_0xb5f9[_0x4468b2];return _0x3e84b7;};'use strict';var _=require('lodash');var util=require(_0x9b5f('0x0'));var moment=require(_0x9b5f('0x1'));var BPromise=require(_0x9b5f('0x2'));var rs=require(_0x9b5f('0x3'));var fs=require('fs');var Redis=require(_0x9b5f('0x4'));var db=require(_0x9b5f('0x5'))['db'];var utils=require(_0x9b5f('0x6'));var logger=require(_0x9b5f('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x9b5f('0x8'));var client=jayson['client'][_0x9b5f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1c78e3,_0x18c401,_0x2b56d6){return new BPromise(function(_0x483683,_0xea47c3){return client[_0x9b5f('0xa')](_0x1c78e3,_0x2b56d6)[_0x9b5f('0xb')](function(_0x82e340){logger['info'](_0x9b5f('0xc'),_0x18c401,_0x9b5f('0xd'));logger[_0x9b5f('0xe')](_0x9b5f('0xf'),_0x18c401,_0x9b5f('0xd'),JSON[_0x9b5f('0x10')](_0x82e340));if(_0x82e340[_0x9b5f('0x11')]){if(_0x82e340[_0x9b5f('0x11')]['code']===0x1f4){logger[_0x9b5f('0x11')]('ServicenowAccount,\x20%s,\x20%s',_0x18c401,_0x82e340[_0x9b5f('0x11')][_0x9b5f('0x12')]);return _0xea47c3(_0x82e340[_0x9b5f('0x11')][_0x9b5f('0x12')]);}logger[_0x9b5f('0x11')](_0x9b5f('0xc'),_0x18c401,_0x82e340['error'][_0x9b5f('0x12')]);return _0x483683(_0x82e340[_0x9b5f('0x11')][_0x9b5f('0x12')]);}else{logger[_0x9b5f('0x13')](_0x9b5f('0xc'),_0x18c401,_0x9b5f('0xd'));_0x483683(_0x82e340[_0x9b5f('0x14')]['message']);}})[_0x9b5f('0x15')](function(_0x2ddbf2){logger['error']('ServicenowAccount,\x20%s,\x20%s',_0x18c401,_0x2ddbf2);_0xea47c3(_0x2ddbf2);});});}exports['GetServicenowAccount']=function(_0x1deb98){var _0x1c17a6=this;return new Promise(function(_0x320543,_0x3eaf3f){return db[_0x9b5f('0x16')][_0x9b5f('0x17')]({'raw':_0x1deb98[_0x9b5f('0x18')]?_0x1deb98[_0x9b5f('0x18')][_0x9b5f('0x19')]===undefined?!![]:![]:!![],'where':_0x1deb98[_0x9b5f('0x18')]?_0x1deb98[_0x9b5f('0x18')][_0x9b5f('0x1a')]||null:null,'attributes':_0x1deb98[_0x9b5f('0x18')]?_0x1deb98[_0x9b5f('0x18')]['attributes']||null:null,'limit':_0x1deb98[_0x9b5f('0x18')]?_0x1deb98[_0x9b5f('0x18')][_0x9b5f('0x1b')]||null:null,'include':_0x1deb98['options']?_0x1deb98[_0x9b5f('0x18')][_0x9b5f('0x1c')]?_[_0x9b5f('0x1d')](_0x1deb98['options'][_0x9b5f('0x1c')],function(_0x37965b){return{'model':db[_0x37965b[_0x9b5f('0x1e')]],'as':_0x37965b['as'],'attributes':_0x37965b[_0x9b5f('0x1f')],'include':_0x37965b[_0x9b5f('0x1c')]?_[_0x9b5f('0x1d')](_0x37965b[_0x9b5f('0x1c')],function(_0x42199f){return{'model':db[_0x42199f[_0x9b5f('0x1e')]],'as':_0x42199f['as'],'attributes':_0x42199f['attributes'],'include':_0x42199f[_0x9b5f('0x1c')]?_[_0x9b5f('0x1d')](_0x42199f[_0x9b5f('0x1c')],function(_0x436365){return{'model':db[_0x436365[_0x9b5f('0x1e')]],'as':_0x436365['as'],'attributes':_0x436365[_0x9b5f('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x9b5f('0xb')](function(_0x3dcaa2){logger[_0x9b5f('0x13')](_0x9b5f('0x20'),_0x1deb98);logger[_0x9b5f('0xe')]('GetServicenowAccount',_0x1deb98,JSON[_0x9b5f('0x10')](_0x3dcaa2));_0x320543(_0x3dcaa2);})[_0x9b5f('0x15')](function(_0x1e4ce2){logger['error']('GetServicenowAccount',_0x1e4ce2['message'],_0x1deb98);_0x3eaf3f(_0x1c17a6['error'](0x1f4,_0x1e4ce2[_0x9b5f('0x12')]));});});};exports[_0x9b5f('0x21')]=function(_0x1e236b){var _0x3e0b1b=this;return new Promise(function(_0xf3eca2,_0x32ee4d){return db[_0x9b5f('0x16')]['find']({'raw':_0x1e236b['options']?_0x1e236b[_0x9b5f('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x1e236b[_0x9b5f('0x18')]?_0x1e236b['options'][_0x9b5f('0x1a')]||null:null,'attributes':_0x1e236b[_0x9b5f('0x18')]?_0x1e236b[_0x9b5f('0x18')][_0x9b5f('0x1f')]||null:null,'include':_0x1e236b[_0x9b5f('0x18')]?_0x1e236b[_0x9b5f('0x18')][_0x9b5f('0x1c')]?_[_0x9b5f('0x1d')](_0x1e236b['options'][_0x9b5f('0x1c')],function(_0x3f5896){return{'model':db[_0x3f5896[_0x9b5f('0x1e')]],'as':_0x3f5896['as'],'attributes':_0x3f5896[_0x9b5f('0x1f')],'include':_0x3f5896['include']?_[_0x9b5f('0x1d')](_0x3f5896['include'],function(_0x5679b6){return{'model':db[_0x5679b6[_0x9b5f('0x1e')]],'as':_0x5679b6['as'],'attributes':_0x5679b6[_0x9b5f('0x1f')],'include':_0x5679b6[_0x9b5f('0x1c')]?_[_0x9b5f('0x1d')](_0x5679b6[_0x9b5f('0x1c')],function(_0x3289d){return{'model':db[_0x3289d[_0x9b5f('0x1e')]],'as':_0x3289d['as'],'attributes':_0x3289d[_0x9b5f('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x9b5f('0xb')](function(_0x96998e){logger['info']('ShowServicenowAccount',_0x1e236b);logger[_0x9b5f('0xe')](_0x9b5f('0x21'),_0x1e236b,JSON['stringify'](_0x96998e));_0xf3eca2(_0x96998e);})['catch'](function(_0x567fdb){logger['error'](_0x9b5f('0x21'),_0x567fdb['message'],_0x1e236b);_0x32ee4d(_0x3e0b1b[_0x9b5f('0x11')](0x1f4,_0x567fdb[_0x9b5f('0x12')]));});});};
\ No newline at end of file
+var _0x3ca4=['model','attributes','include','info','GetServicenowAccount','ShowServicenowAccount','find','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','findAll','options','where','limit','map'];(function(_0x2dc343,_0xf015a2){var _0x51eac5=function(_0x1adfef){while(--_0x1adfef){_0x2dc343['push'](_0x2dc343['shift']());}};_0x51eac5(++_0xf015a2);}(_0x3ca4,0x17d));var _0x43ca=function(_0x54dfc2,_0x5cc3db){_0x54dfc2=_0x54dfc2-0x0;var _0xc9aa7e=_0x3ca4[_0x54dfc2];return _0xc9aa7e;};'use strict';var _=require(_0x43ca('0x0'));var util=require(_0x43ca('0x1'));var moment=require(_0x43ca('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x43ca('0x3'));var db=require(_0x43ca('0x4'))['db'];var utils=require(_0x43ca('0x5'));var logger=require(_0x43ca('0x6'))(_0x43ca('0x7'));var config=require(_0x43ca('0x8'));var jayson=require(_0x43ca('0x9'));var client=jayson['client'][_0x43ca('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1ba987,_0x2e6edf,_0x609e75){return new BPromise(function(_0x3147b3,_0x4669f5){return client[_0x43ca('0xb')](_0x1ba987,_0x609e75)[_0x43ca('0xc')](function(_0x4cd9b6){logger['info'](_0x43ca('0xd'),_0x2e6edf,_0x43ca('0xe'));logger[_0x43ca('0xf')](_0x43ca('0x10'),_0x2e6edf,'request\x20sent',JSON[_0x43ca('0x11')](_0x4cd9b6));if(_0x4cd9b6[_0x43ca('0x12')]){if(_0x4cd9b6[_0x43ca('0x12')][_0x43ca('0x13')]===0x1f4){logger[_0x43ca('0x12')](_0x43ca('0xd'),_0x2e6edf,_0x4cd9b6[_0x43ca('0x12')][_0x43ca('0x14')]);return _0x4669f5(_0x4cd9b6[_0x43ca('0x12')]['message']);}logger[_0x43ca('0x12')](_0x43ca('0xd'),_0x2e6edf,_0x4cd9b6['error'][_0x43ca('0x14')]);return _0x3147b3(_0x4cd9b6['error'][_0x43ca('0x14')]);}else{logger['info'](_0x43ca('0xd'),_0x2e6edf,_0x43ca('0xe'));_0x3147b3(_0x4cd9b6['result'][_0x43ca('0x14')]);}})[_0x43ca('0x15')](function(_0x14f9af){logger['error']('ServicenowAccount,\x20%s,\x20%s',_0x2e6edf,_0x14f9af);_0x4669f5(_0x14f9af);});});}exports['GetServicenowAccount']=function(_0x5e50c9){var _0x2cb3e5=this;return new Promise(function(_0x268817,_0x1389ce){return db['ServicenowAccount'][_0x43ca('0x16')]({'raw':_0x5e50c9[_0x43ca('0x17')]?_0x5e50c9[_0x43ca('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x5e50c9[_0x43ca('0x17')]?_0x5e50c9['options'][_0x43ca('0x18')]||null:null,'attributes':_0x5e50c9[_0x43ca('0x17')]?_0x5e50c9[_0x43ca('0x17')]['attributes']||null:null,'limit':_0x5e50c9[_0x43ca('0x17')]?_0x5e50c9[_0x43ca('0x17')][_0x43ca('0x19')]||null:null,'include':_0x5e50c9[_0x43ca('0x17')]?_0x5e50c9[_0x43ca('0x17')]['include']?_[_0x43ca('0x1a')](_0x5e50c9[_0x43ca('0x17')]['include'],function(_0x379902){return{'model':db[_0x379902[_0x43ca('0x1b')]],'as':_0x379902['as'],'attributes':_0x379902[_0x43ca('0x1c')],'include':_0x379902[_0x43ca('0x1d')]?_[_0x43ca('0x1a')](_0x379902['include'],function(_0x2da1ec){return{'model':db[_0x2da1ec[_0x43ca('0x1b')]],'as':_0x2da1ec['as'],'attributes':_0x2da1ec[_0x43ca('0x1c')],'include':_0x2da1ec[_0x43ca('0x1d')]?_[_0x43ca('0x1a')](_0x2da1ec[_0x43ca('0x1d')],function(_0x3b2078){return{'model':db[_0x3b2078[_0x43ca('0x1b')]],'as':_0x3b2078['as'],'attributes':_0x3b2078['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4a75af){logger[_0x43ca('0x1e')](_0x43ca('0x1f'),_0x5e50c9);logger[_0x43ca('0xf')](_0x43ca('0x1f'),_0x5e50c9,JSON[_0x43ca('0x11')](_0x4a75af));_0x268817(_0x4a75af);})[_0x43ca('0x15')](function(_0xffad2d){logger[_0x43ca('0x12')]('GetServicenowAccount',_0xffad2d[_0x43ca('0x14')],_0x5e50c9);_0x1389ce(_0x2cb3e5['error'](0x1f4,_0xffad2d['message']));});});};exports[_0x43ca('0x20')]=function(_0x1f2814){var _0x313518=this;return new Promise(function(_0x359b7c,_0x248ec3){return db['ServicenowAccount'][_0x43ca('0x21')]({'raw':_0x1f2814['options']?_0x1f2814[_0x43ca('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x1f2814[_0x43ca('0x17')]?_0x1f2814[_0x43ca('0x17')]['where']||null:null,'attributes':_0x1f2814[_0x43ca('0x17')]?_0x1f2814[_0x43ca('0x17')][_0x43ca('0x1c')]||null:null,'include':_0x1f2814[_0x43ca('0x17')]?_0x1f2814[_0x43ca('0x17')][_0x43ca('0x1d')]?_[_0x43ca('0x1a')](_0x1f2814['options'][_0x43ca('0x1d')],function(_0x5976a3){return{'model':db[_0x5976a3[_0x43ca('0x1b')]],'as':_0x5976a3['as'],'attributes':_0x5976a3[_0x43ca('0x1c')],'include':_0x5976a3['include']?_[_0x43ca('0x1a')](_0x5976a3['include'],function(_0x49ef94){return{'model':db[_0x49ef94[_0x43ca('0x1b')]],'as':_0x49ef94['as'],'attributes':_0x49ef94[_0x43ca('0x1c')],'include':_0x49ef94[_0x43ca('0x1d')]?_[_0x43ca('0x1a')](_0x49ef94[_0x43ca('0x1d')],function(_0x28d0a3){return{'model':db[_0x28d0a3[_0x43ca('0x1b')]],'as':_0x28d0a3['as'],'attributes':_0x28d0a3['attributes']};}):[]};}):[]};}):[]:[]})[_0x43ca('0xc')](function(_0x67b8b0){logger['info'](_0x43ca('0x20'),_0x1f2814);logger[_0x43ca('0xf')]('ShowServicenowAccount',_0x1f2814,JSON[_0x43ca('0x11')](_0x67b8b0));_0x359b7c(_0x67b8b0);})['catch'](function(_0x5a4224){logger[_0x43ca('0x12')](_0x43ca('0x20'),_0x5a4224[_0x43ca('0x14')],_0x1f2814);_0x248ec3(_0x313518[_0x43ca('0x12')](0x1f4,_0x5a4224[_0x43ca('0x14')]));});});};
\ No newline at end of file
index b0c878c..79195f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72e1=['/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','destroy','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','index','get','/:id','isAuthenticated','show','/:id/fields','getFields'];(function(_0xce3c00,_0xc66c51){var _0x44ea6e=function(_0x20f356){while(--_0x20f356){_0xce3c00['push'](_0xce3c00['shift']());}};_0x44ea6e(++_0xc66c51);}(_0x72e1,0x140));var _0x172e=function(_0x5c15a5,_0x1b2af1){_0x5c15a5=_0x5c15a5-0x0;var _0x4693f9=_0x72e1[_0x5c15a5];return _0x4693f9;};'use strict';var multer=require(_0x172e('0x0'));var util=require(_0x172e('0x1'));var path=require(_0x172e('0x2'));var timeout=require('connect-timeout');var express=require(_0x172e('0x3'));var router=express['Router']();var fs_extra=require(_0x172e('0x4'));var auth=require(_0x172e('0x5'));var interaction=require(_0x172e('0x6'));var config=require(_0x172e('0x7'));var controller=require(_0x172e('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x172e('0x9')]);router[_0x172e('0xa')](_0x172e('0xb'),auth[_0x172e('0xc')](),controller[_0x172e('0xd')]);router[_0x172e('0xa')](_0x172e('0xe'),auth['isAuthenticated'](),controller[_0x172e('0xf')]);router[_0x172e('0xa')](_0x172e('0x10'),auth[_0x172e('0xc')](),controller[_0x172e('0x11')]);router[_0x172e('0xa')](_0x172e('0x12'),auth[_0x172e('0xc')](),controller[_0x172e('0x13')]);router[_0x172e('0x14')]('/',auth['isAuthenticated'](),controller[_0x172e('0x15')]);router[_0x172e('0x16')](_0x172e('0xb'),auth[_0x172e('0xc')](),controller['update']);router['delete'](_0x172e('0xb'),auth['isAuthenticated'](),controller[_0x172e('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x03ea=['/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','index','isAuthenticated','show','getFields','/:id/subjects','getSubjects','getDescriptions','create','put'];(function(_0x4a9a60,_0x281235){var _0x246c5e=function(_0x389a70){while(--_0x389a70){_0x4a9a60['push'](_0x4a9a60['shift']());}};_0x246c5e(++_0x281235);}(_0x03ea,0x163));var _0xa03e=function(_0x338889,_0x1e6616){_0x338889=_0x338889-0x0;var _0xa8cff1=_0x03ea[_0x338889];return _0xa8cff1;};'use strict';var multer=require(_0xa03e('0x0'));var util=require(_0xa03e('0x1'));var path=require(_0xa03e('0x2'));var timeout=require(_0xa03e('0x3'));var express=require(_0xa03e('0x4'));var router=express[_0xa03e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xa03e('0x6'));var interaction=require(_0xa03e('0x7'));var config=require(_0xa03e('0x8'));var controller=require(_0xa03e('0x9'));router[_0xa03e('0xa')]('/',auth['isAuthenticated'](),controller[_0xa03e('0xb')]);router[_0xa03e('0xa')]('/:id',auth[_0xa03e('0xc')](),controller[_0xa03e('0xd')]);router[_0xa03e('0xa')]('/:id/fields',auth[_0xa03e('0xc')](),controller[_0xa03e('0xe')]);router[_0xa03e('0xa')](_0xa03e('0xf'),auth[_0xa03e('0xc')](),controller[_0xa03e('0x10')]);router['get']('/:id/descriptions',auth[_0xa03e('0xc')](),controller[_0xa03e('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0xa03e('0x12')]);router[_0xa03e('0x13')](_0xa03e('0x14'),auth[_0xa03e('0xc')](),controller[_0xa03e('0x15')]);router[_0xa03e('0x16')]('/:id',auth[_0xa03e('0xc')](),controller[_0xa03e('0x17')]);module[_0xa03e('0x18')]=router;
\ No newline at end of file
index 6f51fdb..f400738 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa182=['sequelize','exports','STRING'];(function(_0x2dd688,_0x22a2b9){var _0x4bd6c3=function(_0xc0f9b){while(--_0xc0f9b){_0x2dd688['push'](_0x2dd688['shift']());}};_0x4bd6c3(++_0x22a2b9);}(_0xa182,0x1ef));var _0x2a18=function(_0x54f16b,_0x16d2a0){_0x54f16b=_0x54f16b-0x0;var _0x575e81=_0xa182[_0x54f16b];return _0x575e81;};'use strict';var Sequelize=require(_0x2a18('0x0'));module[_0x2a18('0x1')]={'name':{'type':Sequelize[_0x2a18('0x2')]},'description':{'type':Sequelize[_0x2a18('0x2')]}};
\ No newline at end of file
+var _0x1f7e=['exports','STRING','sequelize'];(function(_0x4178af,_0x388652){var _0x20f4b1=function(_0x504188){while(--_0x504188){_0x4178af['push'](_0x4178af['shift']());}};_0x20f4b1(++_0x388652);}(_0x1f7e,0xce));var _0xe1f7=function(_0x363075,_0x5e0985){_0x363075=_0x363075-0x0;var _0x1fd493=_0x1f7e[_0x363075];return _0x1fd493;};'use strict';var Sequelize=require(_0xe1f7('0x0'));module[_0xe1f7('0x1')]={'name':{'type':Sequelize[_0xe1f7('0x2')]},'description':{'type':Sequelize[_0xe1f7('0x2')]}};
\ No newline at end of file
index 84a3da4..f39bdeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dc7=['set','apply','save','update','then','error','name','send','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','nolimit','limit','order','sort','where','filters','filter','merge','type','VIRTUAL','options','includeAll','include','ServicenowConfiguration','findAll','rows','catch','show','length','find','create','body','params','destroy','getFields','findOne','pick','getSubjects','ServicenowField','hasOwnProperty','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset'];(function(_0x16938f,_0x35e57f){var _0x5c66e9=function(_0x5167d7){while(--_0x5167d7){_0x16938f['push'](_0x16938f['shift']());}};_0x5c66e9(++_0x35e57f);}(_0x6dc7,0x80));var _0x76dc=function(_0xa1de8d,_0x1399a8){_0xa1de8d=_0xa1de8d-0x0;var _0x478b44=_0x6dc7[_0xa1de8d];return _0x478b44;};'use strict';var emlformat=require(_0x76dc('0x0'));var rimraf=require(_0x76dc('0x1'));var zipdir=require(_0x76dc('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x76dc('0x3'));var moment=require(_0x76dc('0x4'));var BPromise=require(_0x76dc('0x5'));var Mustache=require('mustache');var util=require(_0x76dc('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x76dc('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x76dc('0x8'));var squel=require(_0x76dc('0x9'));var crypto=require(_0x76dc('0xa'));var jsforce=require(_0x76dc('0xb'));var deskjs=require(_0x76dc('0xc'));var toCsv=require(_0x76dc('0xd'));var querystring=require(_0x76dc('0xe'));var Papa=require(_0x76dc('0xf'));var Redis=require(_0x76dc('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x76dc('0x11'));var as=require(_0x76dc('0x12'));var hardwareService=require(_0x76dc('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x76dc('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x76dc('0x15'));var db=require(_0x76dc('0x16'))['db'];function respondWithStatusCode(_0x14d7d9,_0xab8183){_0xab8183=_0xab8183||0xcc;return function(_0x2cfbcf){if(_0x2cfbcf){return _0x14d7d9[_0x76dc('0x17')](_0xab8183);}return _0x14d7d9[_0x76dc('0x18')](_0xab8183)[_0x76dc('0x19')]();};}function respondWithResult(_0xc441af,_0xc18f39){_0xc18f39=_0xc18f39||0xc8;return function(_0x38fd9a){if(_0x38fd9a){return _0xc441af[_0x76dc('0x18')](_0xc18f39)[_0x76dc('0x1a')](_0x38fd9a);}};}function respondWithFilteredResult(_0xb37f2a,_0xf31a8f){return function(_0x111837){if(_0x111837){var _0x2a5e6e=typeof _0xf31a8f['offset']==='undefined'&&typeof _0xf31a8f['limit']===_0x76dc('0x1b');var _0x3db2c0=_0x111837[_0x76dc('0x1c')];var _0x2e00cc=_0x2a5e6e?0x0:_0xf31a8f['offset'];var _0x5159d1=_0x2a5e6e?_0x111837[_0x76dc('0x1c')]:_0xf31a8f[_0x76dc('0x1d')]+_0xf31a8f['limit'];var _0x2dad6f;if(_0x5159d1>=_0x3db2c0){_0x5159d1=_0x3db2c0;_0x2dad6f=0xc8;}else{_0x2dad6f=0xce;}_0xb37f2a[_0x76dc('0x18')](_0x2dad6f);return _0xb37f2a[_0x76dc('0x1e')]('Content-Range',_0x2e00cc+'-'+_0x5159d1+'/'+_0x3db2c0)[_0x76dc('0x1a')](_0x111837);}return null;};}function patchUpdates(_0x1167ba){return function(_0x55e797){try{jsonpatch[_0x76dc('0x1f')](_0x55e797,_0x1167ba,!![]);}catch(_0xf54c51){return BPromise['reject'](_0xf54c51);}return _0x55e797[_0x76dc('0x20')]();};}function saveUpdates(_0x136edf,_0x333d44){return function(_0x1350e8){if(_0x1350e8){return _0x1350e8[_0x76dc('0x21')](_0x136edf)[_0x76dc('0x22')](function(_0x467033){return _0x467033;});}return null;};}function removeEntity(_0x2e0451,_0x353c43){return function(_0x504d58){if(_0x504d58){return _0x504d58['destroy']()[_0x76dc('0x22')](function(){_0x2e0451[_0x76dc('0x18')](0xcc)[_0x76dc('0x19')]();});}};}function handleEntityNotFound(_0x416ebb,_0x5d1b33){return function(_0x35a009){if(!_0x35a009){_0x416ebb[_0x76dc('0x17')](0x194);}return _0x35a009;};}function handleError(_0x44eb7a,_0x5d16e6){_0x5d16e6=_0x5d16e6||0x1f4;return function(_0x507ceb){logger[_0x76dc('0x23')](_0x507ceb['stack']);if(_0x507ceb[_0x76dc('0x24')]){delete _0x507ceb[_0x76dc('0x24')];}_0x44eb7a['status'](_0x5d16e6)[_0x76dc('0x25')](_0x507ceb);};}exports['index']=function(_0x1c162e,_0x5a5634){var _0x2d896b={},_0x4904af={},_0x21f3e4={'count':0x0,'rows':[]};var _0x25c7f9=_[_0x76dc('0x26')](db['ServicenowConfiguration'][_0x76dc('0x27')],function(_0xc1a656){return{'name':_0xc1a656[_0x76dc('0x28')],'type':_0xc1a656['type'][_0x76dc('0x29')]};});_0x4904af[_0x76dc('0x2a')]=_[_0x76dc('0x26')](_0x25c7f9,'name');_0x4904af[_0x76dc('0x2b')]=_[_0x76dc('0x2c')](_0x1c162e['query']);_0x4904af['filters']=_[_0x76dc('0x2d')](_0x4904af[_0x76dc('0x2a')],_0x4904af['query']);_0x2d896b[_0x76dc('0x2e')]=_[_0x76dc('0x2d')](_0x4904af[_0x76dc('0x2a')],qs['fields'](_0x1c162e[_0x76dc('0x2b')][_0x76dc('0x2f')]));_0x2d896b[_0x76dc('0x2e')]=_0x2d896b[_0x76dc('0x2e')]['length']?_0x2d896b[_0x76dc('0x2e')]:_0x4904af[_0x76dc('0x2a')];if(!_0x1c162e[_0x76dc('0x2b')]['hasOwnProperty'](_0x76dc('0x30'))){_0x2d896b['limit']=qs[_0x76dc('0x31')](_0x1c162e[_0x76dc('0x2b')][_0x76dc('0x31')]);_0x2d896b['offset']=qs['offset'](_0x1c162e[_0x76dc('0x2b')][_0x76dc('0x1d')]);}_0x2d896b[_0x76dc('0x32')]=qs[_0x76dc('0x33')](_0x1c162e[_0x76dc('0x2b')][_0x76dc('0x33')]);_0x2d896b[_0x76dc('0x34')]=qs[_0x76dc('0x35')](_['pick'](_0x1c162e['query'],_0x4904af[_0x76dc('0x35')]),_0x25c7f9);if(_0x1c162e[_0x76dc('0x2b')][_0x76dc('0x36')]){_0x2d896b[_0x76dc('0x34')]=_[_0x76dc('0x37')](_0x2d896b[_0x76dc('0x34')],{'$or':_[_0x76dc('0x26')](_0x25c7f9,function(_0x4ac967){if(_0x4ac967[_0x76dc('0x38')]!==_0x76dc('0x39')){var _0x610138={};_0x610138[_0x4ac967[_0x76dc('0x24')]]={'$like':'%'+_0x1c162e[_0x76dc('0x2b')][_0x76dc('0x36')]+'%'};return _0x610138;}})});}_0x2d896b=_[_0x76dc('0x37')]({},_0x2d896b,_0x1c162e[_0x76dc('0x3a')]);var _0x54d61c={'where':_0x2d896b['where']};return db['ServicenowConfiguration'][_0x76dc('0x1c')](_0x54d61c)[_0x76dc('0x22')](function(_0x1df6b9){_0x21f3e4[_0x76dc('0x1c')]=_0x1df6b9;if(_0x1c162e['query'][_0x76dc('0x3b')]){_0x2d896b[_0x76dc('0x3c')]=[{'all':!![]}];}return db[_0x76dc('0x3d')][_0x76dc('0x3e')](_0x2d896b);})[_0x76dc('0x22')](function(_0x9f40e5){_0x21f3e4[_0x76dc('0x3f')]=_0x9f40e5;return _0x21f3e4;})[_0x76dc('0x22')](respondWithFilteredResult(_0x5a5634,_0x2d896b))[_0x76dc('0x40')](handleError(_0x5a5634,null));};exports[_0x76dc('0x41')]=function(_0x62cf1d,_0x4d18ef){var _0x3f1a0b={'raw':![],'where':{'id':_0x62cf1d['params']['id']}},_0x16a7dd={};_0x16a7dd['model']=_['keys'](db[_0x76dc('0x3d')]['rawAttributes']);_0x16a7dd[_0x76dc('0x2b')]=_[_0x76dc('0x2c')](_0x62cf1d['query']);_0x16a7dd['filters']=_[_0x76dc('0x2d')](_0x16a7dd[_0x76dc('0x2a')],_0x16a7dd[_0x76dc('0x2b')]);_0x3f1a0b[_0x76dc('0x2e')]=_[_0x76dc('0x2d')](_0x16a7dd['model'],qs['fields'](_0x62cf1d[_0x76dc('0x2b')]['fields']));_0x3f1a0b[_0x76dc('0x2e')]=_0x3f1a0b[_0x76dc('0x2e')][_0x76dc('0x42')]?_0x3f1a0b[_0x76dc('0x2e')]:_0x16a7dd[_0x76dc('0x2a')];if(_0x62cf1d['query'][_0x76dc('0x3b')]){_0x3f1a0b[_0x76dc('0x3c')]=[{'all':!![]}];}_0x3f1a0b=_[_0x76dc('0x37')]({},_0x3f1a0b,_0x62cf1d['options']);return db['ServicenowConfiguration'][_0x76dc('0x43')](_0x3f1a0b)[_0x76dc('0x22')](handleEntityNotFound(_0x4d18ef,null))[_0x76dc('0x22')](respondWithResult(_0x4d18ef,null))['catch'](handleError(_0x4d18ef,null));};exports[_0x76dc('0x44')]=function(_0x3877c6,_0x4f5098){return db[_0x76dc('0x3d')][_0x76dc('0x44')](_0x3877c6[_0x76dc('0x45')],{})[_0x76dc('0x22')](respondWithResult(_0x4f5098,0xc9))[_0x76dc('0x40')](handleError(_0x4f5098,null));};exports[_0x76dc('0x21')]=function(_0x240c1b,_0x4128f6){if(_0x240c1b['body']['id']){delete _0x240c1b['body']['id'];}return db[_0x76dc('0x3d')][_0x76dc('0x43')]({'where':{'id':_0x240c1b[_0x76dc('0x46')]['id']}})[_0x76dc('0x22')](handleEntityNotFound(_0x4128f6,null))[_0x76dc('0x22')](saveUpdates(_0x240c1b[_0x76dc('0x45')],null))[_0x76dc('0x22')](respondWithResult(_0x4128f6,null))['catch'](handleError(_0x4128f6,null));};exports[_0x76dc('0x47')]=function(_0x3e4f0b,_0xbc3167){return db[_0x76dc('0x3d')][_0x76dc('0x43')]({'where':{'id':_0x3e4f0b[_0x76dc('0x46')]['id']}})[_0x76dc('0x22')](handleEntityNotFound(_0xbc3167,null))[_0x76dc('0x22')](removeEntity(_0xbc3167,null))[_0x76dc('0x40')](handleError(_0xbc3167,null));};exports[_0x76dc('0x48')]=function(_0x5f0818,_0x3ba2b3,_0x27edf9){var _0x145482={};var _0x22bd2d={};var _0xd87567;var _0x52006b;return db['ServicenowConfiguration'][_0x76dc('0x49')]({'where':{'id':_0x5f0818[_0x76dc('0x46')]['id']}})[_0x76dc('0x22')](handleEntityNotFound(_0x3ba2b3,null))[_0x76dc('0x22')](function(_0x10d663){if(_0x10d663){_0xd87567=_0x10d663;_0x22bd2d['model']=_[_0x76dc('0x2c')](db['ServicenowField'][_0x76dc('0x27')]);_0x22bd2d['query']=_['keys'](_0x5f0818[_0x76dc('0x2b')]);_0x22bd2d[_0x76dc('0x35')]=_[_0x76dc('0x2d')](_0x22bd2d['model'],_0x22bd2d[_0x76dc('0x2b')]);_0x145482[_0x76dc('0x2e')]=_[_0x76dc('0x2d')](_0x22bd2d[_0x76dc('0x2a')],qs[_0x76dc('0x2f')](_0x5f0818[_0x76dc('0x2b')]['fields']));_0x145482['attributes']=_0x145482[_0x76dc('0x2e')][_0x76dc('0x42')]?_0x145482[_0x76dc('0x2e')]:_0x22bd2d[_0x76dc('0x2a')];_0x145482[_0x76dc('0x32')]=qs[_0x76dc('0x33')](_0x5f0818[_0x76dc('0x2b')][_0x76dc('0x33')]);_0x145482[_0x76dc('0x34')]=qs['filters'](_[_0x76dc('0x4a')](_0x5f0818[_0x76dc('0x2b')],_0x22bd2d['filters']));if(_0x5f0818[_0x76dc('0x2b')]['filter']){_0x145482['where']=_['merge'](_0x145482['where'],{'$or':_[_0x76dc('0x26')](_0x145482[_0x76dc('0x2e')],function(_0x42fb7e){var _0x53cae9={};_0x53cae9[_0x42fb7e]={'$like':'%'+_0x5f0818[_0x76dc('0x2b')][_0x76dc('0x36')]+'%'};return _0x53cae9;})});}_0x145482=_[_0x76dc('0x37')]({},_0x145482,_0x5f0818[_0x76dc('0x3a')]);return _0xd87567[_0x76dc('0x48')](_0x145482);}})[_0x76dc('0x22')](function(_0x442d23){if(_0x442d23){_0x52006b=_0x442d23[_0x76dc('0x42')];if(!_0x5f0818[_0x76dc('0x2b')]['hasOwnProperty'](_0x76dc('0x30'))){_0x145482[_0x76dc('0x31')]=qs[_0x76dc('0x31')](_0x5f0818[_0x76dc('0x2b')]['limit']);_0x145482[_0x76dc('0x1d')]=qs[_0x76dc('0x1d')](_0x5f0818['query']['offset']);}return _0xd87567['getFields'](_0x145482);}})[_0x76dc('0x22')](function(_0x48ef04){if(_0x48ef04){return _0x48ef04?{'count':_0x52006b,'rows':_0x48ef04}:null;}})['then'](respondWithResult(_0x3ba2b3,null))[_0x76dc('0x40')](handleError(_0x3ba2b3,null));};exports[_0x76dc('0x4b')]=function(_0x361813,_0x4facf5,_0x2cd7d3){var _0x299345={};var _0x3c8344={};var _0x14cf71;var _0x220b34;return db[_0x76dc('0x3d')]['findOne']({'where':{'id':_0x361813[_0x76dc('0x46')]['id']}})[_0x76dc('0x22')](handleEntityNotFound(_0x4facf5,null))['then'](function(_0x34e131){if(_0x34e131){_0x14cf71=_0x34e131;_0x3c8344[_0x76dc('0x2a')]=_[_0x76dc('0x2c')](db[_0x76dc('0x4c')]['rawAttributes']);_0x3c8344[_0x76dc('0x2b')]=_[_0x76dc('0x2c')](_0x361813[_0x76dc('0x2b')]);_0x3c8344[_0x76dc('0x35')]=_[_0x76dc('0x2d')](_0x3c8344['model'],_0x3c8344[_0x76dc('0x2b')]);_0x299345['attributes']=_['intersection'](_0x3c8344[_0x76dc('0x2a')],qs[_0x76dc('0x2f')](_0x361813['query'][_0x76dc('0x2f')]));_0x299345['attributes']=_0x299345[_0x76dc('0x2e')][_0x76dc('0x42')]?_0x299345[_0x76dc('0x2e')]:_0x3c8344[_0x76dc('0x2a')];_0x299345[_0x76dc('0x32')]=qs[_0x76dc('0x33')](_0x361813[_0x76dc('0x2b')][_0x76dc('0x33')]);_0x299345['where']=qs[_0x76dc('0x35')](_[_0x76dc('0x4a')](_0x361813[_0x76dc('0x2b')],_0x3c8344[_0x76dc('0x35')]));if(_0x361813[_0x76dc('0x2b')][_0x76dc('0x36')]){_0x299345[_0x76dc('0x34')]=_[_0x76dc('0x37')](_0x299345[_0x76dc('0x34')],{'$or':_['map'](_0x299345[_0x76dc('0x2e')],function(_0x4bafb4){var _0x204758={};_0x204758[_0x4bafb4]={'$like':'%'+_0x361813[_0x76dc('0x2b')]['filter']+'%'};return _0x204758;})});}_0x299345=_[_0x76dc('0x37')]({},_0x299345,_0x361813['options']);return _0x14cf71[_0x76dc('0x4b')](_0x299345);}})[_0x76dc('0x22')](function(_0x147566){if(_0x147566){_0x220b34=_0x147566['length'];if(!_0x361813[_0x76dc('0x2b')][_0x76dc('0x4d')]('nolimit')){_0x299345[_0x76dc('0x31')]=qs[_0x76dc('0x31')](_0x361813['query'][_0x76dc('0x31')]);_0x299345[_0x76dc('0x1d')]=qs[_0x76dc('0x1d')](_0x361813['query'][_0x76dc('0x1d')]);}return _0x14cf71['getSubjects'](_0x299345);}})[_0x76dc('0x22')](function(_0x442a3a){if(_0x442a3a){return _0x442a3a?{'count':_0x220b34,'rows':_0x442a3a}:null;}})[_0x76dc('0x22')](respondWithResult(_0x4facf5,null))['catch'](handleError(_0x4facf5,null));};exports[_0x76dc('0x4e')]=function(_0x469391,_0x5f14b6,_0x28660a){var _0x4dabe2={};var _0x5b5250={};var _0x43be19;var _0x1afc37;return db['ServicenowConfiguration'][_0x76dc('0x49')]({'where':{'id':_0x469391['params']['id']}})[_0x76dc('0x22')](handleEntityNotFound(_0x5f14b6,null))['then'](function(_0x26ee7a){if(_0x26ee7a){_0x43be19=_0x26ee7a;_0x5b5250[_0x76dc('0x2a')]=_['keys'](db[_0x76dc('0x4c')][_0x76dc('0x27')]);_0x5b5250[_0x76dc('0x2b')]=_['keys'](_0x469391[_0x76dc('0x2b')]);_0x5b5250['filters']=_['intersection'](_0x5b5250['model'],_0x5b5250[_0x76dc('0x2b')]);_0x4dabe2[_0x76dc('0x2e')]=_[_0x76dc('0x2d')](_0x5b5250[_0x76dc('0x2a')],qs['fields'](_0x469391[_0x76dc('0x2b')][_0x76dc('0x2f')]));_0x4dabe2[_0x76dc('0x2e')]=_0x4dabe2[_0x76dc('0x2e')][_0x76dc('0x42')]?_0x4dabe2[_0x76dc('0x2e')]:_0x5b5250[_0x76dc('0x2a')];_0x4dabe2['order']=qs[_0x76dc('0x33')](_0x469391[_0x76dc('0x2b')][_0x76dc('0x33')]);_0x4dabe2['where']=qs[_0x76dc('0x35')](_['pick'](_0x469391[_0x76dc('0x2b')],_0x5b5250[_0x76dc('0x35')]));if(_0x469391[_0x76dc('0x2b')][_0x76dc('0x36')]){_0x4dabe2['where']=_[_0x76dc('0x37')](_0x4dabe2[_0x76dc('0x34')],{'$or':_[_0x76dc('0x26')](_0x4dabe2[_0x76dc('0x2e')],function(_0x21dd35){var _0x1154e7={};_0x1154e7[_0x21dd35]={'$like':'%'+_0x469391[_0x76dc('0x2b')]['filter']+'%'};return _0x1154e7;})});}_0x4dabe2=_[_0x76dc('0x37')]({},_0x4dabe2,_0x469391[_0x76dc('0x3a')]);return _0x43be19[_0x76dc('0x4e')](_0x4dabe2);}})[_0x76dc('0x22')](function(_0x48e822){if(_0x48e822){_0x1afc37=_0x48e822[_0x76dc('0x42')];if(!_0x469391[_0x76dc('0x2b')]['hasOwnProperty'](_0x76dc('0x30'))){_0x4dabe2[_0x76dc('0x31')]=qs['limit'](_0x469391[_0x76dc('0x2b')][_0x76dc('0x31')]);_0x4dabe2[_0x76dc('0x1d')]=qs[_0x76dc('0x1d')](_0x469391['query'][_0x76dc('0x1d')]);}return _0x43be19[_0x76dc('0x4e')](_0x4dabe2);}})[_0x76dc('0x22')](function(_0x325190){if(_0x325190){return _0x325190?{'count':_0x1afc37,'rows':_0x325190}:null;}})[_0x76dc('0x22')](respondWithResult(_0x5f14b6,null))[_0x76dc('0x40')](handleError(_0x5f14b6,null));};
\ No newline at end of file
+var _0x5647=['length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','then','catch','show','params','rawAttributes','create','body','find','findOne','ServicenowField','getFields','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','end','json','offset','undefined','count','limit','status','set','Content-Range','apply','reject','save','update','destroy','sendStatus','error','stack','name','index','ServicenowConfiguration','fieldName','type','key','map','keys','query','intersection','model','fields','attributes'];(function(_0x55529b,_0x22a69c){var _0x422c6b=function(_0x1dda6e){while(--_0x1dda6e){_0x55529b['push'](_0x55529b['shift']());}};_0x422c6b(++_0x22a69c);}(_0x5647,0x163));var _0x7564=function(_0x2fb481,_0x2696d2){_0x2fb481=_0x2fb481-0x0;var _0x5d597d=_0x5647[_0x2fb481];return _0x5d597d;};'use strict';var emlformat=require(_0x7564('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7564('0x1'));var jsonpatch=require(_0x7564('0x2'));var rp=require('request-promise');var moment=require(_0x7564('0x3'));var BPromise=require(_0x7564('0x4'));var Mustache=require(_0x7564('0x5'));var util=require(_0x7564('0x6'));var path=require(_0x7564('0x7'));var sox=require(_0x7564('0x8'));var csv=require(_0x7564('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7564('0xa'));var _=require(_0x7564('0xb'));var squel=require(_0x7564('0xc'));var crypto=require(_0x7564('0xd'));var jsforce=require(_0x7564('0xe'));var deskjs=require(_0x7564('0xf'));var toCsv=require(_0x7564('0x9'));var querystring=require('querystring');var Papa=require(_0x7564('0x10'));var Redis=require(_0x7564('0x11'));var authService=require(_0x7564('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x7564('0x13'));var hardwareService=require(_0x7564('0x14'));var logger=require(_0x7564('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x7564('0x16'));var licenseUtil=require(_0x7564('0x17'));var db=require(_0x7564('0x18'))['db'];function respondWithStatusCode(_0x64fa71,_0x43b325){_0x43b325=_0x43b325||0xcc;return function(_0xfb7f73){if(_0xfb7f73){return _0x64fa71['sendStatus'](_0x43b325);}return _0x64fa71['status'](_0x43b325)[_0x7564('0x19')]();};}function respondWithResult(_0x3fea52,_0x4a6176){_0x4a6176=_0x4a6176||0xc8;return function(_0x79136f){if(_0x79136f){return _0x3fea52['status'](_0x4a6176)[_0x7564('0x1a')](_0x79136f);}};}function respondWithFilteredResult(_0x3e3f55,_0x11b9d8){return function(_0x330f66){if(_0x330f66){var _0x386572=typeof _0x11b9d8[_0x7564('0x1b')]===_0x7564('0x1c')&&typeof _0x11b9d8['limit']===_0x7564('0x1c');var _0x1a89eb=_0x330f66[_0x7564('0x1d')];var _0x27e16a=_0x386572?0x0:_0x11b9d8[_0x7564('0x1b')];var _0x153ae6=_0x386572?_0x330f66[_0x7564('0x1d')]:_0x11b9d8[_0x7564('0x1b')]+_0x11b9d8[_0x7564('0x1e')];var _0x47a196;if(_0x153ae6>=_0x1a89eb){_0x153ae6=_0x1a89eb;_0x47a196=0xc8;}else{_0x47a196=0xce;}_0x3e3f55[_0x7564('0x1f')](_0x47a196);return _0x3e3f55[_0x7564('0x20')](_0x7564('0x21'),_0x27e16a+'-'+_0x153ae6+'/'+_0x1a89eb)[_0x7564('0x1a')](_0x330f66);}return null;};}function patchUpdates(_0x3f406d){return function(_0x25582b){try{jsonpatch[_0x7564('0x22')](_0x25582b,_0x3f406d,!![]);}catch(_0x4a713d){return BPromise[_0x7564('0x23')](_0x4a713d);}return _0x25582b[_0x7564('0x24')]();};}function saveUpdates(_0x642342,_0x4d0743){return function(_0x2ba416){if(_0x2ba416){return _0x2ba416[_0x7564('0x25')](_0x642342)['then'](function(_0x3dc9ce){return _0x3dc9ce;});}return null;};}function removeEntity(_0x2e2a57,_0x185f0b){return function(_0x5bd5b1){if(_0x5bd5b1){return _0x5bd5b1[_0x7564('0x26')]()['then'](function(){_0x2e2a57[_0x7564('0x1f')](0xcc)[_0x7564('0x19')]();});}};}function handleEntityNotFound(_0x59d255,_0x36374e){return function(_0x443230){if(!_0x443230){_0x59d255[_0x7564('0x27')](0x194);}return _0x443230;};}function handleError(_0x5665e1,_0x38077a){_0x38077a=_0x38077a||0x1f4;return function(_0x5c1741){logger[_0x7564('0x28')](_0x5c1741[_0x7564('0x29')]);if(_0x5c1741['name']){delete _0x5c1741[_0x7564('0x2a')];}_0x5665e1['status'](_0x38077a)['send'](_0x5c1741);};}exports[_0x7564('0x2b')]=function(_0x4d31d5,_0xd3568){var _0x183d0c={},_0x2e69d6={},_0x3517d8={'count':0x0,'rows':[]};var _0x33a284=_['map'](db[_0x7564('0x2c')]['rawAttributes'],function(_0x2b333a){return{'name':_0x2b333a[_0x7564('0x2d')],'type':_0x2b333a[_0x7564('0x2e')][_0x7564('0x2f')]};});_0x2e69d6['model']=_[_0x7564('0x30')](_0x33a284,_0x7564('0x2a'));_0x2e69d6['query']=_[_0x7564('0x31')](_0x4d31d5[_0x7564('0x32')]);_0x2e69d6['filters']=_[_0x7564('0x33')](_0x2e69d6[_0x7564('0x34')],_0x2e69d6[_0x7564('0x32')]);_0x183d0c['attributes']=_[_0x7564('0x33')](_0x2e69d6[_0x7564('0x34')],qs[_0x7564('0x35')](_0x4d31d5[_0x7564('0x32')][_0x7564('0x35')]));_0x183d0c[_0x7564('0x36')]=_0x183d0c[_0x7564('0x36')][_0x7564('0x37')]?_0x183d0c[_0x7564('0x36')]:_0x2e69d6['model'];if(!_0x4d31d5[_0x7564('0x32')][_0x7564('0x38')](_0x7564('0x39'))){_0x183d0c['limit']=qs['limit'](_0x4d31d5['query']['limit']);_0x183d0c[_0x7564('0x1b')]=qs[_0x7564('0x1b')](_0x4d31d5[_0x7564('0x32')][_0x7564('0x1b')]);}_0x183d0c[_0x7564('0x3a')]=qs['sort'](_0x4d31d5[_0x7564('0x32')][_0x7564('0x3b')]);_0x183d0c[_0x7564('0x3c')]=qs[_0x7564('0x3d')](_[_0x7564('0x3e')](_0x4d31d5[_0x7564('0x32')],_0x2e69d6['filters']),_0x33a284);if(_0x4d31d5['query'][_0x7564('0x3f')]){_0x183d0c[_0x7564('0x3c')]=_[_0x7564('0x40')](_0x183d0c['where'],{'$or':_[_0x7564('0x30')](_0x33a284,function(_0x4bff56){if(_0x4bff56[_0x7564('0x2e')]!=='VIRTUAL'){var _0x5dfe33={};_0x5dfe33[_0x4bff56[_0x7564('0x2a')]]={'$like':'%'+_0x4d31d5['query'][_0x7564('0x3f')]+'%'};return _0x5dfe33;}})});}_0x183d0c=_[_0x7564('0x40')]({},_0x183d0c,_0x4d31d5[_0x7564('0x41')]);var _0x5adba0={'where':_0x183d0c['where']};return db[_0x7564('0x2c')][_0x7564('0x1d')](_0x5adba0)['then'](function(_0x127f6b){_0x3517d8[_0x7564('0x1d')]=_0x127f6b;if(_0x4d31d5[_0x7564('0x32')][_0x7564('0x42')]){_0x183d0c[_0x7564('0x43')]=[{'all':!![]}];}return db[_0x7564('0x2c')][_0x7564('0x44')](_0x183d0c);})[_0x7564('0x45')](function(_0xe04035){_0x3517d8['rows']=_0xe04035;return _0x3517d8;})['then'](respondWithFilteredResult(_0xd3568,_0x183d0c))[_0x7564('0x46')](handleError(_0xd3568,null));};exports[_0x7564('0x47')]=function(_0x3d376e,_0x450526){var _0x2e3298={'raw':![],'where':{'id':_0x3d376e[_0x7564('0x48')]['id']}},_0x37b6dd={};_0x37b6dd[_0x7564('0x34')]=_[_0x7564('0x31')](db[_0x7564('0x2c')][_0x7564('0x49')]);_0x37b6dd[_0x7564('0x32')]=_[_0x7564('0x31')](_0x3d376e[_0x7564('0x32')]);_0x37b6dd['filters']=_['intersection'](_0x37b6dd['model'],_0x37b6dd[_0x7564('0x32')]);_0x2e3298['attributes']=_['intersection'](_0x37b6dd['model'],qs[_0x7564('0x35')](_0x3d376e['query'][_0x7564('0x35')]));_0x2e3298[_0x7564('0x36')]=_0x2e3298['attributes']['length']?_0x2e3298[_0x7564('0x36')]:_0x37b6dd[_0x7564('0x34')];if(_0x3d376e[_0x7564('0x32')][_0x7564('0x42')]){_0x2e3298['include']=[{'all':!![]}];}_0x2e3298=_[_0x7564('0x40')]({},_0x2e3298,_0x3d376e[_0x7564('0x41')]);return db[_0x7564('0x2c')]['find'](_0x2e3298)['then'](handleEntityNotFound(_0x450526,null))[_0x7564('0x45')](respondWithResult(_0x450526,null))[_0x7564('0x46')](handleError(_0x450526,null));};exports[_0x7564('0x4a')]=function(_0x1cf43f,_0x533656){return db[_0x7564('0x2c')][_0x7564('0x4a')](_0x1cf43f[_0x7564('0x4b')],{})[_0x7564('0x45')](respondWithResult(_0x533656,0xc9))[_0x7564('0x46')](handleError(_0x533656,null));};exports[_0x7564('0x25')]=function(_0x111894,_0x46ee4e){if(_0x111894[_0x7564('0x4b')]['id']){delete _0x111894[_0x7564('0x4b')]['id'];}return db[_0x7564('0x2c')][_0x7564('0x4c')]({'where':{'id':_0x111894['params']['id']}})[_0x7564('0x45')](handleEntityNotFound(_0x46ee4e,null))[_0x7564('0x45')](saveUpdates(_0x111894['body'],null))['then'](respondWithResult(_0x46ee4e,null))[_0x7564('0x46')](handleError(_0x46ee4e,null));};exports[_0x7564('0x26')]=function(_0x5f7cc3,_0x4a8ad1){return db[_0x7564('0x2c')][_0x7564('0x4c')]({'where':{'id':_0x5f7cc3['params']['id']}})[_0x7564('0x45')](handleEntityNotFound(_0x4a8ad1,null))[_0x7564('0x45')](removeEntity(_0x4a8ad1,null))['catch'](handleError(_0x4a8ad1,null));};exports['getFields']=function(_0x2da903,_0x7a373b,_0x50a0fc){var _0x98ab66={};var _0x5535a5={};var _0x136a54;var _0x5e73b5;return db['ServicenowConfiguration'][_0x7564('0x4d')]({'where':{'id':_0x2da903['params']['id']}})['then'](handleEntityNotFound(_0x7a373b,null))[_0x7564('0x45')](function(_0x439dd4){if(_0x439dd4){_0x136a54=_0x439dd4;_0x5535a5[_0x7564('0x34')]=_[_0x7564('0x31')](db[_0x7564('0x4e')][_0x7564('0x49')]);_0x5535a5[_0x7564('0x32')]=_['keys'](_0x2da903[_0x7564('0x32')]);_0x5535a5[_0x7564('0x3d')]=_[_0x7564('0x33')](_0x5535a5[_0x7564('0x34')],_0x5535a5['query']);_0x98ab66[_0x7564('0x36')]=_['intersection'](_0x5535a5[_0x7564('0x34')],qs[_0x7564('0x35')](_0x2da903['query'][_0x7564('0x35')]));_0x98ab66['attributes']=_0x98ab66[_0x7564('0x36')]['length']?_0x98ab66['attributes']:_0x5535a5[_0x7564('0x34')];_0x98ab66['order']=qs[_0x7564('0x3b')](_0x2da903[_0x7564('0x32')][_0x7564('0x3b')]);_0x98ab66[_0x7564('0x3c')]=qs[_0x7564('0x3d')](_[_0x7564('0x3e')](_0x2da903['query'],_0x5535a5[_0x7564('0x3d')]));if(_0x2da903[_0x7564('0x32')][_0x7564('0x3f')]){_0x98ab66[_0x7564('0x3c')]=_['merge'](_0x98ab66[_0x7564('0x3c')],{'$or':_[_0x7564('0x30')](_0x98ab66['attributes'],function(_0x292270){var _0x5aff5a={};_0x5aff5a[_0x292270]={'$like':'%'+_0x2da903[_0x7564('0x32')][_0x7564('0x3f')]+'%'};return _0x5aff5a;})});}_0x98ab66=_[_0x7564('0x40')]({},_0x98ab66,_0x2da903[_0x7564('0x41')]);return _0x136a54['getFields'](_0x98ab66);}})[_0x7564('0x45')](function(_0x446080){if(_0x446080){_0x5e73b5=_0x446080[_0x7564('0x37')];if(!_0x2da903[_0x7564('0x32')][_0x7564('0x38')](_0x7564('0x39'))){_0x98ab66['limit']=qs['limit'](_0x2da903[_0x7564('0x32')][_0x7564('0x1e')]);_0x98ab66[_0x7564('0x1b')]=qs[_0x7564('0x1b')](_0x2da903[_0x7564('0x32')][_0x7564('0x1b')]);}return _0x136a54[_0x7564('0x4f')](_0x98ab66);}})[_0x7564('0x45')](function(_0x5b9bba){if(_0x5b9bba){return _0x5b9bba?{'count':_0x5e73b5,'rows':_0x5b9bba}:null;}})['then'](respondWithResult(_0x7a373b,null))['catch'](handleError(_0x7a373b,null));};exports[_0x7564('0x50')]=function(_0x53131f,_0x536d8b,_0x5f1a80){var _0x3a13a2={};var _0x20b1fe={};var _0x25b66d;var _0x5c7ebe;return db['ServicenowConfiguration'][_0x7564('0x4d')]({'where':{'id':_0x53131f['params']['id']}})['then'](handleEntityNotFound(_0x536d8b,null))[_0x7564('0x45')](function(_0x3fd266){if(_0x3fd266){_0x25b66d=_0x3fd266;_0x20b1fe[_0x7564('0x34')]=_['keys'](db[_0x7564('0x4e')]['rawAttributes']);_0x20b1fe[_0x7564('0x32')]=_[_0x7564('0x31')](_0x53131f[_0x7564('0x32')]);_0x20b1fe[_0x7564('0x3d')]=_[_0x7564('0x33')](_0x20b1fe[_0x7564('0x34')],_0x20b1fe[_0x7564('0x32')]);_0x3a13a2['attributes']=_[_0x7564('0x33')](_0x20b1fe['model'],qs[_0x7564('0x35')](_0x53131f[_0x7564('0x32')]['fields']));_0x3a13a2[_0x7564('0x36')]=_0x3a13a2['attributes']['length']?_0x3a13a2[_0x7564('0x36')]:_0x20b1fe['model'];_0x3a13a2[_0x7564('0x3a')]=qs[_0x7564('0x3b')](_0x53131f[_0x7564('0x32')][_0x7564('0x3b')]);_0x3a13a2[_0x7564('0x3c')]=qs[_0x7564('0x3d')](_[_0x7564('0x3e')](_0x53131f[_0x7564('0x32')],_0x20b1fe[_0x7564('0x3d')]));if(_0x53131f[_0x7564('0x32')]['filter']){_0x3a13a2['where']=_[_0x7564('0x40')](_0x3a13a2[_0x7564('0x3c')],{'$or':_[_0x7564('0x30')](_0x3a13a2[_0x7564('0x36')],function(_0x391a3b){var _0x53d7f5={};_0x53d7f5[_0x391a3b]={'$like':'%'+_0x53131f[_0x7564('0x32')][_0x7564('0x3f')]+'%'};return _0x53d7f5;})});}_0x3a13a2=_['merge']({},_0x3a13a2,_0x53131f[_0x7564('0x41')]);return _0x25b66d[_0x7564('0x50')](_0x3a13a2);}})[_0x7564('0x45')](function(_0x2dcf86){if(_0x2dcf86){_0x5c7ebe=_0x2dcf86[_0x7564('0x37')];if(!_0x53131f[_0x7564('0x32')][_0x7564('0x38')](_0x7564('0x39'))){_0x3a13a2[_0x7564('0x1e')]=qs[_0x7564('0x1e')](_0x53131f['query'][_0x7564('0x1e')]);_0x3a13a2[_0x7564('0x1b')]=qs[_0x7564('0x1b')](_0x53131f[_0x7564('0x32')][_0x7564('0x1b')]);}return _0x25b66d[_0x7564('0x50')](_0x3a13a2);}})[_0x7564('0x45')](function(_0x126386){if(_0x126386){return _0x126386?{'count':_0x5c7ebe,'rows':_0x126386}:null;}})[_0x7564('0x45')](respondWithResult(_0x536d8b,null))[_0x7564('0x46')](handleError(_0x536d8b,null));};exports[_0x7564('0x51')]=function(_0x3d8927,_0x478963,_0x2b70ba){var _0x59f1df={};var _0x392847={};var _0x5838ee;var _0x42700b;return db[_0x7564('0x2c')][_0x7564('0x4d')]({'where':{'id':_0x3d8927[_0x7564('0x48')]['id']}})[_0x7564('0x45')](handleEntityNotFound(_0x478963,null))[_0x7564('0x45')](function(_0x992019){if(_0x992019){_0x5838ee=_0x992019;_0x392847[_0x7564('0x34')]=_[_0x7564('0x31')](db[_0x7564('0x4e')][_0x7564('0x49')]);_0x392847[_0x7564('0x32')]=_['keys'](_0x3d8927['query']);_0x392847[_0x7564('0x3d')]=_[_0x7564('0x33')](_0x392847[_0x7564('0x34')],_0x392847['query']);_0x59f1df[_0x7564('0x36')]=_[_0x7564('0x33')](_0x392847[_0x7564('0x34')],qs[_0x7564('0x35')](_0x3d8927[_0x7564('0x32')][_0x7564('0x35')]));_0x59f1df['attributes']=_0x59f1df[_0x7564('0x36')][_0x7564('0x37')]?_0x59f1df[_0x7564('0x36')]:_0x392847['model'];_0x59f1df[_0x7564('0x3a')]=qs[_0x7564('0x3b')](_0x3d8927[_0x7564('0x32')]['sort']);_0x59f1df[_0x7564('0x3c')]=qs['filters'](_['pick'](_0x3d8927[_0x7564('0x32')],_0x392847['filters']));if(_0x3d8927[_0x7564('0x32')][_0x7564('0x3f')]){_0x59f1df[_0x7564('0x3c')]=_[_0x7564('0x40')](_0x59f1df[_0x7564('0x3c')],{'$or':_[_0x7564('0x30')](_0x59f1df[_0x7564('0x36')],function(_0x50a477){var _0x3e697c={};_0x3e697c[_0x50a477]={'$like':'%'+_0x3d8927[_0x7564('0x32')][_0x7564('0x3f')]+'%'};return _0x3e697c;})});}_0x59f1df=_[_0x7564('0x40')]({},_0x59f1df,_0x3d8927[_0x7564('0x41')]);return _0x5838ee[_0x7564('0x51')](_0x59f1df);}})['then'](function(_0x436588){if(_0x436588){_0x42700b=_0x436588[_0x7564('0x37')];if(!_0x3d8927[_0x7564('0x32')]['hasOwnProperty']('nolimit')){_0x59f1df[_0x7564('0x1e')]=qs[_0x7564('0x1e')](_0x3d8927[_0x7564('0x32')][_0x7564('0x1e')]);_0x59f1df[_0x7564('0x1b')]=qs['offset'](_0x3d8927[_0x7564('0x32')][_0x7564('0x1b')]);}return _0x5838ee[_0x7564('0x51')](_0x59f1df);}})[_0x7564('0x45')](function(_0x34bd05){if(_0x34bd05){return _0x34bd05?{'count':_0x42700b,'rows':_0x34bd05}:null;}})[_0x7564('0x45')](respondWithResult(_0x478963,null))[_0x7564('0x46')](handleError(_0x478963,null));};
\ No newline at end of file
index bc31b79..a7b7b74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2547=['rimraf','./intServicenowConfiguration.attributes','exports','ServicenowConfiguration','int_servicenow_configurations','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x4e2d3e,_0x59578a){var _0x3596bc=function(_0x5528e3){while(--_0x5528e3){_0x4e2d3e['push'](_0x4e2d3e['shift']());}};_0x3596bc(++_0x59578a);}(_0x2547,0x1cd));var _0x7254=function(_0x45a41f,_0x56c1e0){_0x45a41f=_0x45a41f-0x0;var _0x58e7e0=_0x2547[_0x45a41f];return _0x58e7e0;};'use strict';var _=require('lodash');var util=require(_0x7254('0x0'));var logger=require(_0x7254('0x1'))(_0x7254('0x2'));var moment=require(_0x7254('0x3'));var BPromise=require(_0x7254('0x4'));var rp=require(_0x7254('0x5'));var fs=require('fs');var path=require(_0x7254('0x6'));var rimraf=require(_0x7254('0x7'));var config=require('../../config/environment');var attributes=require(_0x7254('0x8'));module[_0x7254('0x9')]=function(_0x67f427,_0x119f66){return _0x67f427['define'](_0x7254('0xa'),attributes,{'tableName':_0x7254('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6629=['lodash','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intServicenowConfiguration.attributes','define','int_servicenow_configurations'];(function(_0x1fb6e2,_0x3a22ce){var _0x354690=function(_0x51f968){while(--_0x51f968){_0x1fb6e2['push'](_0x1fb6e2['shift']());}};_0x354690(++_0x3a22ce);}(_0x6629,0x1c2));var _0x9662=function(_0x5af04d,_0x28b6e6){_0x5af04d=_0x5af04d-0x0;var _0x192ae2=_0x6629[_0x5af04d];return _0x192ae2;};'use strict';var _=require(_0x9662('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x9662('0x1'));var moment=require(_0x9662('0x2'));var BPromise=require(_0x9662('0x3'));var rp=require(_0x9662('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9662('0x5'));var config=require(_0x9662('0x6'));var attributes=require(_0x9662('0x7'));module['exports']=function(_0x32db20,_0x39be49){return _0x32db20[_0x9662('0x8')]('ServicenowConfiguration',attributes,{'tableName':_0x9662('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 32f29b0..3943298 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf83=['info','result','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','error','ServicenowConfiguration,\x20%s,\x20%s','message'];(function(_0x1e5755,_0x5e0d48){var _0x38975b=function(_0x1ec4a2){while(--_0x1ec4a2){_0x1e5755['push'](_0x1e5755['shift']());}};_0x38975b(++_0x5e0d48);}(_0xdf83,0x120));var _0x3df8=function(_0x65f505,_0xaad51d){_0x65f505=_0x65f505-0x0;var _0x33cee5=_0xdf83[_0x65f505];return _0x33cee5;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x3df8('0x0'));var rs=require(_0x3df8('0x1'));var fs=require('fs');var Redis=require(_0x3df8('0x2'));var db=require(_0x3df8('0x3'))['db'];var utils=require(_0x3df8('0x4'));var logger=require(_0x3df8('0x5'))(_0x3df8('0x6'));var config=require(_0x3df8('0x7'));var jayson=require(_0x3df8('0x8'));var client=jayson[_0x3df8('0x9')][_0x3df8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2d8572,_0x4f6bcc,_0x44c5fc){return new BPromise(function(_0x2e5d8b,_0x58e408){return client[_0x3df8('0xb')](_0x2d8572,_0x44c5fc)['then'](function(_0x4a1e7c){logger['info']('ServicenowConfiguration,\x20%s,\x20%s',_0x4f6bcc,_0x3df8('0xc'));logger['debug']('ServicenowConfiguration,\x20%s,\x20%s,\x20%s',_0x4f6bcc,'request\x20sent',JSON['stringify'](_0x4a1e7c));if(_0x4a1e7c[_0x3df8('0xd')]){if(_0x4a1e7c[_0x3df8('0xd')]['code']===0x1f4){logger[_0x3df8('0xd')](_0x3df8('0xe'),_0x4f6bcc,_0x4a1e7c[_0x3df8('0xd')][_0x3df8('0xf')]);return _0x58e408(_0x4a1e7c[_0x3df8('0xd')][_0x3df8('0xf')]);}logger[_0x3df8('0xd')]('ServicenowConfiguration,\x20%s,\x20%s',_0x4f6bcc,_0x4a1e7c['error'][_0x3df8('0xf')]);return _0x2e5d8b(_0x4a1e7c[_0x3df8('0xd')]['message']);}else{logger[_0x3df8('0x10')](_0x3df8('0xe'),_0x4f6bcc,_0x3df8('0xc'));_0x2e5d8b(_0x4a1e7c[_0x3df8('0x11')][_0x3df8('0xf')]);}})[_0x3df8('0x12')](function(_0x4665cf){logger[_0x3df8('0xd')](_0x3df8('0xe'),_0x4f6bcc,_0x4665cf);_0x58e408(_0x4665cf);});});}
\ No newline at end of file
+var _0x43c4=['request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','ServicenowConfiguration,\x20%s,\x20%s','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x562bc8,_0x1b1c19){var _0x2a37d3=function(_0x180ba9){while(--_0x180ba9){_0x562bc8['push'](_0x562bc8['shift']());}};_0x2a37d3(++_0x1b1c19);}(_0x43c4,0xf7));var _0x443c=function(_0x3f4e55,_0x25877f){_0x3f4e55=_0x3f4e55-0x0;var _0x597f72=_0x43c4[_0x3f4e55];return _0x597f72;};'use strict';var _=require('lodash');var util=require(_0x443c('0x0'));var moment=require(_0x443c('0x1'));var BPromise=require(_0x443c('0x2'));var rs=require(_0x443c('0x3'));var fs=require('fs');var Redis=require(_0x443c('0x4'));var db=require(_0x443c('0x5'))['db'];var utils=require(_0x443c('0x6'));var logger=require(_0x443c('0x7'))(_0x443c('0x8'));var config=require('../../config/environment');var jayson=require(_0x443c('0x9'));var client=jayson[_0x443c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x259bf9,_0x55ee19,_0x5af8d3){return new BPromise(function(_0xe725bb,_0x1892b9){return client[_0x443c('0xb')](_0x259bf9,_0x5af8d3)[_0x443c('0xc')](function(_0x56c5bb){logger[_0x443c('0xd')](_0x443c('0xe'),_0x55ee19,'request\x20sent');logger[_0x443c('0xf')](_0x443c('0x10'),_0x55ee19,_0x443c('0x11'),JSON[_0x443c('0x12')](_0x56c5bb));if(_0x56c5bb[_0x443c('0x13')]){if(_0x56c5bb[_0x443c('0x13')][_0x443c('0x14')]===0x1f4){logger[_0x443c('0x13')]('ServicenowConfiguration,\x20%s,\x20%s',_0x55ee19,_0x56c5bb[_0x443c('0x13')]['message']);return _0x1892b9(_0x56c5bb[_0x443c('0x13')][_0x443c('0x15')]);}logger[_0x443c('0x13')](_0x443c('0xe'),_0x55ee19,_0x56c5bb[_0x443c('0x13')][_0x443c('0x15')]);return _0xe725bb(_0x56c5bb['error'][_0x443c('0x15')]);}else{logger[_0x443c('0xd')](_0x443c('0xe'),_0x55ee19,_0x443c('0x11'));_0xe725bb(_0x56c5bb[_0x443c('0x16')][_0x443c('0x15')]);}})[_0x443c('0x17')](function(_0x6ed874){logger[_0x443c('0x13')](_0x443c('0xe'),_0x55ee19,_0x6ed874);_0x1892b9(_0x6ed874);});});}
\ No newline at end of file
index 0d6adf1..b81ddeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97d0=['post','isAuthenticated','create','update','destroy','util','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','index','/:id','show'];(function(_0x2b9cf5,_0x2a7804){var _0xd0cf15=function(_0x92a896){while(--_0x92a896){_0x2b9cf5['push'](_0x2b9cf5['shift']());}};_0xd0cf15(++_0x2a7804);}(_0x97d0,0x1e5));var _0x097d=function(_0x3595f3,_0x21cea1){_0x3595f3=_0x3595f3-0x0;var _0x4833d8=_0x97d0[_0x3595f3];return _0x4833d8;};'use strict';var multer=require('multer');var util=require(_0x097d('0x0'));var path=require('path');var timeout=require(_0x097d('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x097d('0x2'));var interaction=require(_0x097d('0x3'));var config=require(_0x097d('0x4'));var controller=require(_0x097d('0x5'));router[_0x097d('0x6')]('/',auth['isAuthenticated'](),controller[_0x097d('0x7')]);router['get'](_0x097d('0x8'),auth['isAuthenticated'](),controller[_0x097d('0x9')]);router[_0x097d('0xa')]('/',auth[_0x097d('0xb')](),controller[_0x097d('0xc')]);router['put']('/:id',auth[_0x097d('0xb')](),controller[_0x097d('0xd')]);router['delete'](_0x097d('0x8'),auth[_0x097d('0xb')](),controller[_0x097d('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x5063=['../../config/environment','./intServicenowField.controller','get','isAuthenticated','/:id','show','put','update','delete','destroy','exports','util','path','Router','../../components/auth/service'];(function(_0x21c09f,_0x6ce866){var _0x164d58=function(_0x3f94c1){while(--_0x3f94c1){_0x21c09f['push'](_0x21c09f['shift']());}};_0x164d58(++_0x6ce866);}(_0x5063,0x65));var _0x3506=function(_0x134987,_0x266182){_0x134987=_0x134987-0x0;var _0x1d833f=_0x5063[_0x134987];return _0x1d833f;};'use strict';var multer=require('multer');var util=require(_0x3506('0x0'));var path=require(_0x3506('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3506('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x3506('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x3506('0x4'));var controller=require(_0x3506('0x5'));router[_0x3506('0x6')]('/',auth[_0x3506('0x7')](),controller['index']);router[_0x3506('0x6')](_0x3506('0x8'),auth[_0x3506('0x7')](),controller[_0x3506('0x9')]);router['post']('/',auth[_0x3506('0x7')](),controller['create']);router[_0x3506('0xa')](_0x3506('0x8'),auth[_0x3506('0x7')](),controller[_0x3506('0xb')]);router[_0x3506('0xc')](_0x3506('0x8'),auth[_0x3506('0x7')](),controller[_0x3506('0xd')]);module[_0x3506('0xe')]=router;
\ No newline at end of file
index ab37dc2..9d3f154 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9678=['ENUM','keyValue','picklist','string','STRING','BOOLEAN','sequelize','exports'];(function(_0x5844c1,_0xd4ac08){var _0x19a54d=function(_0x54e2b9){while(--_0x54e2b9){_0x5844c1['push'](_0x5844c1['shift']());}};_0x19a54d(++_0xd4ac08);}(_0x9678,0xae));var _0x8967=function(_0x288c67,_0x5a72c0){_0x288c67=_0x288c67-0x0;var _0x5b6ece=_0x9678[_0x288c67];return _0x5b6ece;};'use strict';var Sequelize=require(_0x8967('0x0'));module[_0x8967('0x1')]={'type':{'type':Sequelize[_0x8967('0x2')]('string','variable','customVariable',_0x8967('0x3'),_0x8967('0x4')),'defaultValue':_0x8967('0x5')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x8967('0x6')]},'keyType':{'type':Sequelize[_0x8967('0x2')](_0x8967('0x5'),'variable','customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x8967('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x8967('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8967('0x6')]}};
\ No newline at end of file
+var _0x28c3=['variable','customVariable','picklist','STRING','ENUM','BOOLEAN','exports','string'];(function(_0x58efa6,_0x2c00bd){var _0x5d643c=function(_0x1d1ef2){while(--_0x1d1ef2){_0x58efa6['push'](_0x58efa6['shift']());}};_0x5d643c(++_0x2c00bd);}(_0x28c3,0xbe));var _0x328c=function(_0x894285,_0x16f8e3){_0x894285=_0x894285-0x0;var _0x350506=_0x28c3[_0x894285];return _0x350506;};'use strict';var Sequelize=require('sequelize');module[_0x328c('0x0')]={'type':{'type':Sequelize['ENUM'](_0x328c('0x1'),_0x328c('0x2'),_0x328c('0x3'),'keyValue',_0x328c('0x4')),'defaultValue':_0x328c('0x1')},'content':{'type':Sequelize[_0x328c('0x5')]},'key':{'type':Sequelize[_0x328c('0x5')]},'keyType':{'type':Sequelize[_0x328c('0x6')](_0x328c('0x1'),_0x328c('0x2'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x328c('0x5')]},'customField':{'type':Sequelize[_0x328c('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x328c('0x5')]}};
\ No newline at end of file
index 66852c2..93f4f30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb44a=['body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','end','stack','name','send','index','map','fieldName','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','options','ServicenowField','includeAll','include','findAll','catch','show','params','rawAttributes','keys','length','find','create'];(function(_0x549996,_0xd04634){var _0x4de5d1=function(_0x1883a7){while(--_0x1883a7){_0x549996['push'](_0x549996['shift']());}};_0x4de5d1(++_0xd04634);}(_0xb44a,0x93));var _0xab44=function(_0x56ee15,_0x1effd1){_0x56ee15=_0x56ee15-0x0;var _0x94991f=_0xb44a[_0x56ee15];return _0x94991f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xab44('0x0'));var zipdir=require(_0xab44('0x1'));var jsonpatch=require(_0xab44('0x2'));var rp=require(_0xab44('0x3'));var moment=require(_0xab44('0x4'));var BPromise=require(_0xab44('0x5'));var Mustache=require(_0xab44('0x6'));var util=require('util');var path=require(_0xab44('0x7'));var sox=require(_0xab44('0x8'));var csv=require(_0xab44('0x9'));var ejs=require(_0xab44('0xa'));var fs=require('fs');var fs_extra=require(_0xab44('0xb'));var _=require(_0xab44('0xc'));var squel=require('squel');var crypto=require(_0xab44('0xd'));var jsforce=require(_0xab44('0xe'));var deskjs=require(_0xab44('0xf'));var toCsv=require(_0xab44('0x9'));var querystring=require(_0xab44('0x10'));var Papa=require(_0xab44('0x11'));var Redis=require(_0xab44('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xab44('0x13'));var as=require(_0xab44('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xab44('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xab44('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x566f8f,_0x335064){_0x335064=_0x335064||0xcc;return function(_0xfa9175){if(_0xfa9175){return _0x566f8f[_0xab44('0x17')](_0x335064);}return _0x566f8f[_0xab44('0x18')](_0x335064)['end']();};}function respondWithResult(_0x1a26c3,_0x2d401e){_0x2d401e=_0x2d401e||0xc8;return function(_0x561762){if(_0x561762){return _0x1a26c3[_0xab44('0x18')](_0x2d401e)[_0xab44('0x19')](_0x561762);}};}function respondWithFilteredResult(_0x161009,_0x1f5aa2){return function(_0x4b534b){if(_0x4b534b){var _0x67f672=typeof _0x1f5aa2['offset']===_0xab44('0x1a')&&typeof _0x1f5aa2[_0xab44('0x1b')]===_0xab44('0x1a');var _0x32354d=_0x4b534b[_0xab44('0x1c')];var _0x4a3c45=_0x67f672?0x0:_0x1f5aa2['offset'];var _0x46eab8=_0x67f672?_0x4b534b[_0xab44('0x1c')]:_0x1f5aa2[_0xab44('0x1d')]+_0x1f5aa2[_0xab44('0x1b')];var _0x555705;if(_0x46eab8>=_0x32354d){_0x46eab8=_0x32354d;_0x555705=0xc8;}else{_0x555705=0xce;}_0x161009[_0xab44('0x18')](_0x555705);return _0x161009[_0xab44('0x1e')](_0xab44('0x1f'),_0x4a3c45+'-'+_0x46eab8+'/'+_0x32354d)['json'](_0x4b534b);}return null;};}function patchUpdates(_0x272d09){return function(_0x3d8231){try{jsonpatch[_0xab44('0x20')](_0x3d8231,_0x272d09,!![]);}catch(_0x1a3b44){return BPromise['reject'](_0x1a3b44);}return _0x3d8231[_0xab44('0x21')]();};}function saveUpdates(_0x1d54a9,_0x51260a){return function(_0x12059a){if(_0x12059a){return _0x12059a[_0xab44('0x22')](_0x1d54a9)[_0xab44('0x23')](function(_0x12644a){return _0x12644a;});}return null;};}function removeEntity(_0x378284,_0x2b60c8){return function(_0x1b1373){if(_0x1b1373){return _0x1b1373['destroy']()[_0xab44('0x23')](function(){_0x378284['status'](0xcc)[_0xab44('0x24')]();});}};}function handleEntityNotFound(_0x47e8c8,_0x168d0f){return function(_0x44e508){if(!_0x44e508){_0x47e8c8[_0xab44('0x17')](0x194);}return _0x44e508;};}function handleError(_0x5de630,_0x2cd8a2){_0x2cd8a2=_0x2cd8a2||0x1f4;return function(_0x4ba27c){logger['error'](_0x4ba27c[_0xab44('0x25')]);if(_0x4ba27c[_0xab44('0x26')]){delete _0x4ba27c['name'];}_0x5de630[_0xab44('0x18')](_0x2cd8a2)[_0xab44('0x27')](_0x4ba27c);};}exports[_0xab44('0x28')]=function(_0x39d47c,_0x189d2a){var _0x20664c={},_0x279ca7={},_0x47ca4c={'count':0x0,'rows':[]};var _0x3206c8=_[_0xab44('0x29')](db['ServicenowField']['rawAttributes'],function(_0x1f890d){return{'name':_0x1f890d[_0xab44('0x2a')],'type':_0x1f890d['type'][_0xab44('0x2b')]};});_0x279ca7[_0xab44('0x2c')]=_[_0xab44('0x29')](_0x3206c8,'name');_0x279ca7['query']=_['keys'](_0x39d47c[_0xab44('0x2d')]);_0x279ca7[_0xab44('0x2e')]=_[_0xab44('0x2f')](_0x279ca7[_0xab44('0x2c')],_0x279ca7['query']);_0x20664c['attributes']=_['intersection'](_0x279ca7['model'],qs['fields'](_0x39d47c[_0xab44('0x2d')][_0xab44('0x30')]));_0x20664c[_0xab44('0x31')]=_0x20664c[_0xab44('0x31')]['length']?_0x20664c[_0xab44('0x31')]:_0x279ca7[_0xab44('0x2c')];if(!_0x39d47c['query'][_0xab44('0x32')](_0xab44('0x33'))){_0x20664c[_0xab44('0x1b')]=qs[_0xab44('0x1b')](_0x39d47c['query']['limit']);_0x20664c[_0xab44('0x1d')]=qs[_0xab44('0x1d')](_0x39d47c[_0xab44('0x2d')][_0xab44('0x1d')]);}_0x20664c[_0xab44('0x34')]=qs[_0xab44('0x35')](_0x39d47c[_0xab44('0x2d')][_0xab44('0x35')]);_0x20664c[_0xab44('0x36')]=qs[_0xab44('0x2e')](_[_0xab44('0x37')](_0x39d47c[_0xab44('0x2d')],_0x279ca7[_0xab44('0x2e')]),_0x3206c8);if(_0x39d47c[_0xab44('0x2d')]['filter']){_0x20664c['where']=_[_0xab44('0x38')](_0x20664c['where'],{'$or':_[_0xab44('0x29')](_0x3206c8,function(_0x11fca7){if(_0x11fca7[_0xab44('0x39')]!==_0xab44('0x3a')){var _0xe1d017={};_0xe1d017[_0x11fca7['name']]={'$like':'%'+_0x39d47c['query']['filter']+'%'};return _0xe1d017;}})});}_0x20664c=_[_0xab44('0x38')]({},_0x20664c,_0x39d47c[_0xab44('0x3b')]);var _0x3e1398={'where':_0x20664c[_0xab44('0x36')]};return db[_0xab44('0x3c')][_0xab44('0x1c')](_0x3e1398)[_0xab44('0x23')](function(_0x5e8005){_0x47ca4c['count']=_0x5e8005;if(_0x39d47c[_0xab44('0x2d')][_0xab44('0x3d')]){_0x20664c[_0xab44('0x3e')]=[{'all':!![]}];}return db['ServicenowField'][_0xab44('0x3f')](_0x20664c);})[_0xab44('0x23')](function(_0x2d5c27){_0x47ca4c['rows']=_0x2d5c27;return _0x47ca4c;})[_0xab44('0x23')](respondWithFilteredResult(_0x189d2a,_0x20664c))[_0xab44('0x40')](handleError(_0x189d2a,null));};exports[_0xab44('0x41')]=function(_0x53a1e4,_0x11bcea){var _0x4be9b8={'raw':!![],'where':{'id':_0x53a1e4[_0xab44('0x42')]['id']}},_0x5a5edc={};_0x5a5edc[_0xab44('0x2c')]=_['keys'](db[_0xab44('0x3c')][_0xab44('0x43')]);_0x5a5edc[_0xab44('0x2d')]=_[_0xab44('0x44')](_0x53a1e4['query']);_0x5a5edc[_0xab44('0x2e')]=_[_0xab44('0x2f')](_0x5a5edc['model'],_0x5a5edc[_0xab44('0x2d')]);_0x4be9b8[_0xab44('0x31')]=_['intersection'](_0x5a5edc[_0xab44('0x2c')],qs[_0xab44('0x30')](_0x53a1e4['query'][_0xab44('0x30')]));_0x4be9b8[_0xab44('0x31')]=_0x4be9b8['attributes'][_0xab44('0x45')]?_0x4be9b8[_0xab44('0x31')]:_0x5a5edc[_0xab44('0x2c')];if(_0x53a1e4[_0xab44('0x2d')][_0xab44('0x3d')]){_0x4be9b8['include']=[{'all':!![]}];}_0x4be9b8=_[_0xab44('0x38')]({},_0x4be9b8,_0x53a1e4[_0xab44('0x3b')]);return db[_0xab44('0x3c')][_0xab44('0x46')](_0x4be9b8)['then'](handleEntityNotFound(_0x11bcea,null))[_0xab44('0x23')](respondWithResult(_0x11bcea,null))[_0xab44('0x40')](handleError(_0x11bcea,null));};exports[_0xab44('0x47')]=function(_0xaa1fbc,_0x36e4d4){return db[_0xab44('0x3c')][_0xab44('0x47')](_0xaa1fbc[_0xab44('0x48')],{})[_0xab44('0x23')](respondWithResult(_0x36e4d4,0xc9))['catch'](handleError(_0x36e4d4,null));};exports[_0xab44('0x22')]=function(_0x31c0bc,_0x4a73a5){if(_0x31c0bc[_0xab44('0x48')]['id']){delete _0x31c0bc['body']['id'];}return db[_0xab44('0x3c')][_0xab44('0x46')]({'where':{'id':_0x31c0bc[_0xab44('0x42')]['id']}})[_0xab44('0x23')](handleEntityNotFound(_0x4a73a5,null))[_0xab44('0x23')](saveUpdates(_0x31c0bc[_0xab44('0x48')],null))['then'](respondWithResult(_0x4a73a5,null))[_0xab44('0x40')](handleError(_0x4a73a5,null));};exports['destroy']=function(_0x4e038f,_0x5ea3ca){return db[_0xab44('0x3c')][_0xab44('0x46')]({'where':{'id':_0x4e038f[_0xab44('0x42')]['id']}})['then'](handleEntityNotFound(_0x5ea3ca,null))[_0xab44('0x23')](removeEntity(_0x5ea3ca,null))[_0xab44('0x40')](handleError(_0x5ea3ca,null));};
\ No newline at end of file
+var _0x72ff=['keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','update','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','error','stack','send','index','map','ServicenowField','rawAttributes','fieldName','type','key','model','name'];(function(_0x4527f1,_0x2d1dec){var _0x107e4d=function(_0x1e3be9){while(--_0x1e3be9){_0x4527f1['push'](_0x4527f1['shift']());}};_0x107e4d(++_0x2d1dec);}(_0x72ff,0xb4));var _0xf72f=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x72ff[_0x18ab2a];return _0x16dcee;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xf72f('0x0'));var jsonpatch=require(_0xf72f('0x1'));var rp=require(_0xf72f('0x2'));var moment=require(_0xf72f('0x3'));var BPromise=require(_0xf72f('0x4'));var Mustache=require('mustache');var util=require(_0xf72f('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xf72f('0x6'));var ejs=require(_0xf72f('0x7'));var fs=require('fs');var fs_extra=require(_0xf72f('0x8'));var _=require(_0xf72f('0x9'));var squel=require(_0xf72f('0xa'));var crypto=require(_0xf72f('0xb'));var jsforce=require(_0xf72f('0xc'));var deskjs=require(_0xf72f('0xd'));var toCsv=require('to-csv');var querystring=require(_0xf72f('0xe'));var Papa=require(_0xf72f('0xf'));var Redis=require(_0xf72f('0x10'));var authService=require(_0xf72f('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xf72f('0x12'));var hardwareService=require(_0xf72f('0x13'));var logger=require(_0xf72f('0x14'))(_0xf72f('0x15'));var utils=require(_0xf72f('0x16'));var config=require(_0xf72f('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xf72f('0x18'))['db'];function respondWithStatusCode(_0x53519e,_0x3f1c5d){_0x3f1c5d=_0x3f1c5d||0xcc;return function(_0x463d0c){if(_0x463d0c){return _0x53519e[_0xf72f('0x19')](_0x3f1c5d);}return _0x53519e[_0xf72f('0x1a')](_0x3f1c5d)[_0xf72f('0x1b')]();};}function respondWithResult(_0x323ce3,_0x43595a){_0x43595a=_0x43595a||0xc8;return function(_0xde0072){if(_0xde0072){return _0x323ce3[_0xf72f('0x1a')](_0x43595a)[_0xf72f('0x1c')](_0xde0072);}};}function respondWithFilteredResult(_0x1326c3,_0x30e205){return function(_0x269a5e){if(_0x269a5e){var _0x102994=typeof _0x30e205[_0xf72f('0x1d')]===_0xf72f('0x1e')&&typeof _0x30e205[_0xf72f('0x1f')]===_0xf72f('0x1e');var _0x56415d=_0x269a5e[_0xf72f('0x20')];var _0x1d737c=_0x102994?0x0:_0x30e205['offset'];var _0x2c585b=_0x102994?_0x269a5e['count']:_0x30e205['offset']+_0x30e205['limit'];var _0x549899;if(_0x2c585b>=_0x56415d){_0x2c585b=_0x56415d;_0x549899=0xc8;}else{_0x549899=0xce;}_0x1326c3['status'](_0x549899);return _0x1326c3[_0xf72f('0x21')](_0xf72f('0x22'),_0x1d737c+'-'+_0x2c585b+'/'+_0x56415d)[_0xf72f('0x1c')](_0x269a5e);}return null;};}function patchUpdates(_0x4c437e){return function(_0x5bc9b2){try{jsonpatch[_0xf72f('0x23')](_0x5bc9b2,_0x4c437e,!![]);}catch(_0x438eec){return BPromise['reject'](_0x438eec);}return _0x5bc9b2[_0xf72f('0x24')]();};}function saveUpdates(_0xd907e,_0x4e5c87){return function(_0x4c8968){if(_0x4c8968){return _0x4c8968['update'](_0xd907e)[_0xf72f('0x25')](function(_0x8861c8){return _0x8861c8;});}return null;};}function removeEntity(_0x4f45f9,_0x3f191a){return function(_0x4fca59){if(_0x4fca59){return _0x4fca59[_0xf72f('0x26')]()['then'](function(){_0x4f45f9['status'](0xcc)[_0xf72f('0x1b')]();});}};}function handleEntityNotFound(_0x19f5ec,_0x50a710){return function(_0x46e464){if(!_0x46e464){_0x19f5ec[_0xf72f('0x19')](0x194);}return _0x46e464;};}function handleError(_0x4d43c2,_0x16bd59){_0x16bd59=_0x16bd59||0x1f4;return function(_0xe5fc20){logger[_0xf72f('0x27')](_0xe5fc20[_0xf72f('0x28')]);if(_0xe5fc20['name']){delete _0xe5fc20['name'];}_0x4d43c2[_0xf72f('0x1a')](_0x16bd59)[_0xf72f('0x29')](_0xe5fc20);};}exports[_0xf72f('0x2a')]=function(_0x34407f,_0x37f0c9){var _0x1bc613={},_0x529163={},_0x391b79={'count':0x0,'rows':[]};var _0x3740aa=_[_0xf72f('0x2b')](db[_0xf72f('0x2c')][_0xf72f('0x2d')],function(_0x20d5dc){return{'name':_0x20d5dc[_0xf72f('0x2e')],'type':_0x20d5dc[_0xf72f('0x2f')][_0xf72f('0x30')]};});_0x529163[_0xf72f('0x31')]=_[_0xf72f('0x2b')](_0x3740aa,_0xf72f('0x32'));_0x529163['query']=_[_0xf72f('0x33')](_0x34407f[_0xf72f('0x34')]);_0x529163[_0xf72f('0x35')]=_[_0xf72f('0x36')](_0x529163[_0xf72f('0x31')],_0x529163[_0xf72f('0x34')]);_0x1bc613[_0xf72f('0x37')]=_[_0xf72f('0x36')](_0x529163[_0xf72f('0x31')],qs[_0xf72f('0x38')](_0x34407f['query'][_0xf72f('0x38')]));_0x1bc613[_0xf72f('0x37')]=_0x1bc613[_0xf72f('0x37')][_0xf72f('0x39')]?_0x1bc613[_0xf72f('0x37')]:_0x529163[_0xf72f('0x31')];if(!_0x34407f['query'][_0xf72f('0x3a')](_0xf72f('0x3b'))){_0x1bc613['limit']=qs['limit'](_0x34407f[_0xf72f('0x34')][_0xf72f('0x1f')]);_0x1bc613[_0xf72f('0x1d')]=qs[_0xf72f('0x1d')](_0x34407f[_0xf72f('0x34')][_0xf72f('0x1d')]);}_0x1bc613['order']=qs[_0xf72f('0x3c')](_0x34407f['query'][_0xf72f('0x3c')]);_0x1bc613[_0xf72f('0x3d')]=qs[_0xf72f('0x35')](_[_0xf72f('0x3e')](_0x34407f[_0xf72f('0x34')],_0x529163[_0xf72f('0x35')]),_0x3740aa);if(_0x34407f[_0xf72f('0x34')][_0xf72f('0x3f')]){_0x1bc613['where']=_[_0xf72f('0x40')](_0x1bc613[_0xf72f('0x3d')],{'$or':_['map'](_0x3740aa,function(_0x10e4ef){if(_0x10e4ef['type']!==_0xf72f('0x41')){var _0x4235b4={};_0x4235b4[_0x10e4ef[_0xf72f('0x32')]]={'$like':'%'+_0x34407f['query']['filter']+'%'};return _0x4235b4;}})});}_0x1bc613=_[_0xf72f('0x40')]({},_0x1bc613,_0x34407f[_0xf72f('0x42')]);var _0x130e6e={'where':_0x1bc613['where']};return db['ServicenowField']['count'](_0x130e6e)['then'](function(_0x2fe78c){_0x391b79[_0xf72f('0x20')]=_0x2fe78c;if(_0x34407f[_0xf72f('0x34')][_0xf72f('0x43')]){_0x1bc613[_0xf72f('0x44')]=[{'all':!![]}];}return db[_0xf72f('0x2c')][_0xf72f('0x45')](_0x1bc613);})[_0xf72f('0x25')](function(_0x489443){_0x391b79['rows']=_0x489443;return _0x391b79;})[_0xf72f('0x25')](respondWithFilteredResult(_0x37f0c9,_0x1bc613))[_0xf72f('0x46')](handleError(_0x37f0c9,null));};exports[_0xf72f('0x47')]=function(_0x358879,_0x43ee67){var _0x2b9a9e={'raw':!![],'where':{'id':_0x358879[_0xf72f('0x48')]['id']}},_0x3519e7={};_0x3519e7[_0xf72f('0x31')]=_['keys'](db[_0xf72f('0x2c')][_0xf72f('0x2d')]);_0x3519e7['query']=_[_0xf72f('0x33')](_0x358879[_0xf72f('0x34')]);_0x3519e7[_0xf72f('0x35')]=_[_0xf72f('0x36')](_0x3519e7[_0xf72f('0x31')],_0x3519e7[_0xf72f('0x34')]);_0x2b9a9e[_0xf72f('0x37')]=_[_0xf72f('0x36')](_0x3519e7[_0xf72f('0x31')],qs[_0xf72f('0x38')](_0x358879[_0xf72f('0x34')][_0xf72f('0x38')]));_0x2b9a9e['attributes']=_0x2b9a9e[_0xf72f('0x37')]['length']?_0x2b9a9e[_0xf72f('0x37')]:_0x3519e7[_0xf72f('0x31')];if(_0x358879[_0xf72f('0x34')]['includeAll']){_0x2b9a9e[_0xf72f('0x44')]=[{'all':!![]}];}_0x2b9a9e=_[_0xf72f('0x40')]({},_0x2b9a9e,_0x358879[_0xf72f('0x42')]);return db['ServicenowField'][_0xf72f('0x49')](_0x2b9a9e)[_0xf72f('0x25')](handleEntityNotFound(_0x43ee67,null))['then'](respondWithResult(_0x43ee67,null))[_0xf72f('0x46')](handleError(_0x43ee67,null));};exports[_0xf72f('0x4a')]=function(_0x393c74,_0x4dca02){return db[_0xf72f('0x2c')][_0xf72f('0x4a')](_0x393c74[_0xf72f('0x4b')],{})[_0xf72f('0x25')](respondWithResult(_0x4dca02,0xc9))[_0xf72f('0x46')](handleError(_0x4dca02,null));};exports[_0xf72f('0x4c')]=function(_0x671f89,_0x2f1bfd){if(_0x671f89[_0xf72f('0x4b')]['id']){delete _0x671f89['body']['id'];}return db['ServicenowField'][_0xf72f('0x49')]({'where':{'id':_0x671f89[_0xf72f('0x48')]['id']}})[_0xf72f('0x25')](handleEntityNotFound(_0x2f1bfd,null))['then'](saveUpdates(_0x671f89[_0xf72f('0x4b')],null))[_0xf72f('0x25')](respondWithResult(_0x2f1bfd,null))[_0xf72f('0x46')](handleError(_0x2f1bfd,null));};exports[_0xf72f('0x26')]=function(_0xbb7bc7,_0x2326ed){return db[_0xf72f('0x2c')]['find']({'where':{'id':_0xbb7bc7[_0xf72f('0x48')]['id']}})[_0xf72f('0x25')](handleEntityNotFound(_0x2326ed,null))[_0xf72f('0x25')](removeEntity(_0x2326ed,null))[_0xf72f('0x46')](handleError(_0x2326ed,null));};
\ No newline at end of file
index b0d9b22..770f930 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5292=['rimraf','../../config/environment','./intServicenowField.attributes','exports','ServicenowField','int_servicenow_fields','idField','FieldId','util','../../config/logger','api','moment','bluebird'];(function(_0x7c008b,_0x149cd4){var _0x43b711=function(_0x44cb93){while(--_0x44cb93){_0x7c008b['push'](_0x7c008b['shift']());}};_0x43b711(++_0x149cd4);}(_0x5292,0x10c));var _0x2529=function(_0x6823e,_0xc66f0e){_0x6823e=_0x6823e-0x0;var _0x5a2be8=_0x5292[_0x6823e];return _0x5a2be8;};'use strict';var _=require('lodash');var util=require(_0x2529('0x0'));var logger=require(_0x2529('0x1'))(_0x2529('0x2'));var moment=require(_0x2529('0x3'));var BPromise=require(_0x2529('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x2529('0x5'));var config=require(_0x2529('0x6'));var attributes=require(_0x2529('0x7'));module[_0x2529('0x8')]=function(_0x481cf6,_0xcb2724){return _0x481cf6['define'](_0x2529('0x9'),attributes,{'tableName':_0x2529('0xa'),'paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':[_0x2529('0xb'),_0x2529('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3054=['rimraf','../../config/environment','exports','define','int_servicenow_fields','servicenow_unique_index','FieldId','../../config/logger','api','moment','request-promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3054,0xac));var _0x4305=function(_0xcf17fb,_0x5beea5){_0xcf17fb=_0xcf17fb-0x0;var _0x5d2cd7=_0x3054[_0xcf17fb];return _0x5d2cd7;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4305('0x0'))(_0x4305('0x1'));var moment=require(_0x4305('0x2'));var BPromise=require('bluebird');var rp=require(_0x4305('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4305('0x4'));var config=require(_0x4305('0x5'));var attributes=require('./intServicenowField.attributes');module[_0x4305('0x6')]=function(_0x2d2b78,_0x1c56ca){return _0x2d2b78[_0x4305('0x7')]('ServicenowField',attributes,{'tableName':_0x4305('0x8'),'paranoid':![],'indexes':[{'name':_0x4305('0x9'),'fields':['idField',_0x4305('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index fa81811..56a0e5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['code','message','ServicenowField,\x20%s,\x20%s','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0x5ab13b,_0x35127f){var _0x16bb60=function(_0x81f050){while(--_0x81f050){_0x5ab13b['push'](_0x5ab13b['shift']());}};_0x16bb60(++_0x35127f);}(_0x9bde,0xe1));var _0xe9bd=function(_0xea0959,_0x534467){_0xea0959=_0xea0959-0x0;var _0x5f22b4=_0x9bde[_0xea0959];return _0x5f22b4;};'use strict';var _=require('lodash');var util=require(_0xe9bd('0x0'));var moment=require('moment');var BPromise=require(_0xe9bd('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe9bd('0x2'));var db=require(_0xe9bd('0x3'))['db'];var utils=require(_0xe9bd('0x4'));var logger=require(_0xe9bd('0x5'))(_0xe9bd('0x6'));var config=require(_0xe9bd('0x7'));var jayson=require(_0xe9bd('0x8'));var client=jayson['client'][_0xe9bd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5f18fe,_0x22a438,_0xa66ae2){return new BPromise(function(_0x2d5c75,_0x3ef9e3){return client[_0xe9bd('0xa')](_0x5f18fe,_0xa66ae2)[_0xe9bd('0xb')](function(_0x439abc){logger[_0xe9bd('0xc')]('ServicenowField,\x20%s,\x20%s',_0x22a438,'request\x20sent');logger[_0xe9bd('0xd')](_0xe9bd('0xe'),_0x22a438,_0xe9bd('0xf'),JSON['stringify'](_0x439abc));if(_0x439abc[_0xe9bd('0x10')]){if(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x11')]===0x1f4){logger[_0xe9bd('0x10')]('ServicenowField,\x20%s,\x20%s',_0x22a438,_0x439abc[_0xe9bd('0x10')]['message']);return _0x3ef9e3(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}logger[_0xe9bd('0x10')]('ServicenowField,\x20%s,\x20%s',_0x22a438,_0x439abc['error'][_0xe9bd('0x12')]);return _0x2d5c75(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}else{logger[_0xe9bd('0xc')](_0xe9bd('0x13'),_0x22a438,_0xe9bd('0xf'));_0x2d5c75(_0x439abc[_0xe9bd('0x14')]['message']);}})[_0xe9bd('0x15')](function(_0x464a1b){logger[_0xe9bd('0x10')]('ServicenowField,\x20%s,\x20%s',_0x22a438,_0x464a1b);_0x3ef9e3(_0x464a1b);});});}
\ No newline at end of file
+var _0xbdb7=['request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','info','ServicenowField,\x20%s,\x20%s'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x21a11d,_0x18d8ec){_0x21a11d=_0x21a11d-0x0;var _0x474e50=_0xbdb7[_0x21a11d];return _0x474e50;};'use strict';var _=require(_0x7bdb('0x0'));var util=require(_0x7bdb('0x1'));var moment=require(_0x7bdb('0x2'));var BPromise=require(_0x7bdb('0x3'));var rs=require(_0x7bdb('0x4'));var fs=require('fs');var Redis=require(_0x7bdb('0x5'));var db=require(_0x7bdb('0x6'))['db'];var utils=require(_0x7bdb('0x7'));var logger=require(_0x7bdb('0x8'))('rpc');var config=require(_0x7bdb('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7bdb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1e23a3,_0x493bde,_0x513cba){return new BPromise(function(_0x468041,_0x11a877){return client['request'](_0x1e23a3,_0x513cba)['then'](function(_0xdc2ffc){logger[_0x7bdb('0xb')](_0x7bdb('0xc'),_0x493bde,_0x7bdb('0xd'));logger[_0x7bdb('0xe')](_0x7bdb('0xf'),_0x493bde,_0x7bdb('0xd'),JSON[_0x7bdb('0x10')](_0xdc2ffc));if(_0xdc2ffc['error']){if(_0xdc2ffc['error']['code']===0x1f4){logger[_0x7bdb('0x11')](_0x7bdb('0xc'),_0x493bde,_0xdc2ffc['error'][_0x7bdb('0x12')]);return _0x11a877(_0xdc2ffc['error']['message']);}logger[_0x7bdb('0x11')](_0x7bdb('0xc'),_0x493bde,_0xdc2ffc['error']['message']);return _0x468041(_0xdc2ffc['error'][_0x7bdb('0x12')]);}else{logger[_0x7bdb('0xb')](_0x7bdb('0xc'),_0x493bde,_0x7bdb('0xd'));_0x468041(_0xdc2ffc[_0x7bdb('0x13')][_0x7bdb('0x12')]);}})[_0x7bdb('0x14')](function(_0x1b2d9b){logger['error'](_0x7bdb('0xc'),_0x493bde,_0x1b2d9b);_0x11a877(_0x1b2d9b);});});}
\ No newline at end of file
index b16a44b..bda0588 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x1538d1,_0x3eab18){var _0xe84c01=function(_0x403400){while(--_0x403400){_0x1538d1['push'](_0x1538d1['shift']());}};_0xe84c01(++_0x3eab18);}(_0xa9e0,0x123));var _0x0a9e=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0xa9e0[_0x373dee];return _0x46798f;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x2f562a,_0x50ea5a){var _0x4ba4a1=function(_0x5d2e03){while(--_0x5d2e03){_0x2f562a['push'](_0x2f562a['shift']());}};_0x4ba4a1(++_0x50ea5a);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 0606d74..0f3041a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x3124f5,_0x2555d8){var _0x291342=function(_0x446a47){while(--_0x446a47){_0x3124f5['push'](_0x3124f5['shift']());}};_0x291342(++_0x2555d8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xa9e0[_0x297fd3];return _0x2af381;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'name':{'type':Sequelize[_0x0a9e('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x0a9e('0x3')},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x0a9e('0x2')],'unique':_0x0a9e('0x4')},'serverUrl':{'type':Sequelize[_0x0a9e('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0xf4cad3,_0x2215ee){var _0x2a5c89=function(_0x5a3dc7){while(--_0x5a3dc7){_0xf4cad3['push'](_0xf4cad3['shift']());}};_0x2a5c89(++_0x2215ee);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'name':{'type':Sequelize[_0x0a9e('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x0a9e('0x3')},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x0a9e('0x2')],'unique':_0x0a9e('0x4')},'serverUrl':{'type':Sequelize[_0x0a9e('0x2')],'allowNull':![]}};
\ No newline at end of file
index 660b9ed..949ea19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7deb=['assigned_user_id','created_by','description','date_start','duration_hours','parent_id','parent_type','parent_name','username','password','remoteUri','slice','substring','lastIndexOf','format','%s%s','/service/v4_1/rest.php','login','JSON','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','POST','get_module_fields','Calls','values','module_fields','remove','includes','endsWith','value','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','status','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','map','SugarcrmAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','include','findAll','rows','catch','params','includeAll','options','find','create','body','getConfigurations','nolimit','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','getDescriptions','SugarcrmConfiguration','SugarcrmField','Descriptions','getFields'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x7deb,0x11f));var _0xb7de=function(_0x2c3255,_0x4e00ae){_0x2c3255=_0x2c3255-0x0;var _0x282aba=_0x7deb[_0x2c3255];return _0x282aba;};'use strict';var emlformat=require(_0xb7de('0x0'));var rimraf=require(_0xb7de('0x1'));var zipdir=require(_0xb7de('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xb7de('0x3'));var util=require(_0xb7de('0x4'));var path=require(_0xb7de('0x5'));var sox=require(_0xb7de('0x6'));var csv=require(_0xb7de('0x7'));var ejs=require(_0xb7de('0x8'));var fs=require('fs');var fs_extra=require(_0xb7de('0x9'));var _=require(_0xb7de('0xa'));var squel=require(_0xb7de('0xb'));var crypto=require(_0xb7de('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xb7de('0xd'));var toCsv=require(_0xb7de('0x7'));var querystring=require(_0xb7de('0xe'));var Papa=require(_0xb7de('0xf'));var Redis=require('ioredis');var authService=require(_0xb7de('0x10'));var qs=require(_0xb7de('0x11'));var as=require(_0xb7de('0x12'));var hardwareService=require(_0xb7de('0x13'));var logger=require(_0xb7de('0x14'))(_0xb7de('0x15'));var utils=require(_0xb7de('0x16'));var config=require(_0xb7de('0x17'));var licenseUtil=require(_0xb7de('0x18'));var db=require(_0xb7de('0x19'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x52060a,_0x1ff575){_0x1ff575=_0x1ff575||0xcc;return function(_0x2c33cb){if(_0x2c33cb){return _0x52060a[_0xb7de('0x1a')](_0x1ff575);}return _0x52060a['status'](_0x1ff575)[_0xb7de('0x1b')]();};}function respondWithResult(_0x175e58,_0x42eb18){_0x42eb18=_0x42eb18||0xc8;return function(_0x571aae){if(_0x571aae){return _0x175e58['status'](_0x42eb18)['json'](_0x571aae);}};}function respondWithFilteredResult(_0x52c34e,_0x1f94d1){return function(_0x5a4af3){if(_0x5a4af3){var _0x3e8c89=typeof _0x1f94d1[_0xb7de('0x1c')]===_0xb7de('0x1d')&&typeof _0x1f94d1[_0xb7de('0x1e')]===_0xb7de('0x1d');var _0x545e0d=_0x5a4af3[_0xb7de('0x1f')];var _0x279621=_0x3e8c89?0x0:_0x1f94d1[_0xb7de('0x1c')];var _0x3c8b70=_0x3e8c89?_0x5a4af3[_0xb7de('0x1f')]:_0x1f94d1[_0xb7de('0x1c')]+_0x1f94d1['limit'];var _0xd893f7;if(_0x3c8b70>=_0x545e0d){_0x3c8b70=_0x545e0d;_0xd893f7=0xc8;}else{_0xd893f7=0xce;}_0x52c34e[_0xb7de('0x20')](_0xd893f7);return _0x52c34e[_0xb7de('0x21')](_0xb7de('0x22'),_0x279621+'-'+_0x3c8b70+'/'+_0x545e0d)[_0xb7de('0x23')](_0x5a4af3);}return null;};}function patchUpdates(_0x379fc7){return function(_0x17323e){try{jsonpatch[_0xb7de('0x24')](_0x17323e,_0x379fc7,!![]);}catch(_0x40ada5){return BPromise[_0xb7de('0x25')](_0x40ada5);}return _0x17323e[_0xb7de('0x26')]();};}function saveUpdates(_0x527e1b,_0x282d98){return function(_0x350afe){if(_0x350afe){return _0x350afe[_0xb7de('0x27')](_0x527e1b)[_0xb7de('0x28')](function(_0x39ddd6){return _0x39ddd6;});}return null;};}function removeEntity(_0x15049f,_0x2f0fbe){return function(_0x3279a4){if(_0x3279a4){return _0x3279a4[_0xb7de('0x29')]()[_0xb7de('0x28')](function(){_0x15049f[_0xb7de('0x20')](0xcc)[_0xb7de('0x1b')]();});}};}function handleEntityNotFound(_0x8c5e92,_0x599fa7){return function(_0x1b4471){if(!_0x1b4471){_0x8c5e92['sendStatus'](0x194);}return _0x1b4471;};}function handleError(_0x2db41a,_0x10767e){_0x10767e=_0x10767e||0x1f4;return function(_0x23b6e4){logger[_0xb7de('0x2a')](_0x23b6e4[_0xb7de('0x2b')]);if(_0x23b6e4[_0xb7de('0x2c')]){delete _0x23b6e4['name'];}_0x2db41a[_0xb7de('0x20')](_0x10767e)[_0xb7de('0x2d')](_0x23b6e4);};}exports['index']=function(_0x4007b5,_0x474017){var _0x2c02d8={},_0x1ad84a={},_0x4ffe63={'count':0x0,'rows':[]};var _0x4c7fb4=_[_0xb7de('0x2e')](db[_0xb7de('0x2f')][_0xb7de('0x30')],function(_0x30d5f5){return{'name':_0x30d5f5[_0xb7de('0x31')],'type':_0x30d5f5[_0xb7de('0x32')][_0xb7de('0x33')]};});_0x1ad84a[_0xb7de('0x34')]=_[_0xb7de('0x2e')](_0x4c7fb4,'name');_0x1ad84a[_0xb7de('0x35')]=_[_0xb7de('0x36')](_0x4007b5[_0xb7de('0x35')]);_0x1ad84a[_0xb7de('0x37')]=_[_0xb7de('0x38')](_0x1ad84a[_0xb7de('0x34')],_0x1ad84a[_0xb7de('0x35')]);_0x2c02d8[_0xb7de('0x39')]=_[_0xb7de('0x38')](_0x1ad84a['model'],qs['fields'](_0x4007b5['query'][_0xb7de('0x3a')]));_0x2c02d8['attributes']=_0x2c02d8['attributes'][_0xb7de('0x3b')]?_0x2c02d8[_0xb7de('0x39')]:_0x1ad84a[_0xb7de('0x34')];if(!_0x4007b5[_0xb7de('0x35')][_0xb7de('0x3c')]('nolimit')){_0x2c02d8['limit']=qs[_0xb7de('0x1e')](_0x4007b5['query'][_0xb7de('0x1e')]);_0x2c02d8[_0xb7de('0x1c')]=qs[_0xb7de('0x1c')](_0x4007b5[_0xb7de('0x35')][_0xb7de('0x1c')]);}_0x2c02d8[_0xb7de('0x3d')]=qs[_0xb7de('0x3e')](_0x4007b5['query'][_0xb7de('0x3e')]);_0x2c02d8['where']=qs[_0xb7de('0x37')](_[_0xb7de('0x3f')](_0x4007b5[_0xb7de('0x35')],_0x1ad84a[_0xb7de('0x37')]),_0x4c7fb4);if(_0x4007b5[_0xb7de('0x35')][_0xb7de('0x40')]){_0x2c02d8[_0xb7de('0x41')]=_[_0xb7de('0x42')](_0x2c02d8[_0xb7de('0x41')],{'$or':_[_0xb7de('0x2e')](_0x4c7fb4,function(_0x5c223b){if(_0x5c223b[_0xb7de('0x32')]!==_0xb7de('0x43')){var _0x486f16={};_0x486f16[_0x5c223b[_0xb7de('0x2c')]]={'$like':'%'+_0x4007b5[_0xb7de('0x35')][_0xb7de('0x40')]+'%'};return _0x486f16;}})});}_0x2c02d8=_[_0xb7de('0x42')]({},_0x2c02d8,_0x4007b5['options']);var _0x64d7ff={'where':_0x2c02d8[_0xb7de('0x41')]};return db[_0xb7de('0x2f')][_0xb7de('0x1f')](_0x64d7ff)[_0xb7de('0x28')](function(_0x2d0f9f){_0x4ffe63[_0xb7de('0x1f')]=_0x2d0f9f;if(_0x4007b5[_0xb7de('0x35')]['includeAll']){_0x2c02d8[_0xb7de('0x44')]=[{'all':!![]}];}return db['SugarcrmAccount'][_0xb7de('0x45')](_0x2c02d8);})[_0xb7de('0x28')](function(_0x14743d){_0x4ffe63[_0xb7de('0x46')]=_0x14743d;return _0x4ffe63;})[_0xb7de('0x28')](respondWithFilteredResult(_0x474017,_0x2c02d8))[_0xb7de('0x47')](handleError(_0x474017,null));};exports['show']=function(_0x18fde8,_0x4d60e0){var _0x3cc52e={'raw':![],'where':{'id':_0x18fde8[_0xb7de('0x48')]['id']}},_0x1cab95={};_0x1cab95['model']=_[_0xb7de('0x36')](db[_0xb7de('0x2f')][_0xb7de('0x30')]);_0x1cab95['query']=_[_0xb7de('0x36')](_0x18fde8[_0xb7de('0x35')]);_0x1cab95[_0xb7de('0x37')]=_['intersection'](_0x1cab95[_0xb7de('0x34')],_0x1cab95[_0xb7de('0x35')]);_0x3cc52e[_0xb7de('0x39')]=_[_0xb7de('0x38')](_0x1cab95['model'],qs[_0xb7de('0x3a')](_0x18fde8[_0xb7de('0x35')][_0xb7de('0x3a')]));_0x3cc52e[_0xb7de('0x39')]=_0x3cc52e[_0xb7de('0x39')][_0xb7de('0x3b')]?_0x3cc52e['attributes']:_0x1cab95['model'];if(_0x18fde8[_0xb7de('0x35')][_0xb7de('0x49')]){_0x3cc52e[_0xb7de('0x44')]=[{'all':!![]}];}_0x3cc52e=_[_0xb7de('0x42')]({},_0x3cc52e,_0x18fde8[_0xb7de('0x4a')]);return db['SugarcrmAccount'][_0xb7de('0x4b')](_0x3cc52e)[_0xb7de('0x28')](handleEntityNotFound(_0x4d60e0,null))[_0xb7de('0x28')](respondWithResult(_0x4d60e0,null))[_0xb7de('0x47')](handleError(_0x4d60e0,null));};exports[_0xb7de('0x4c')]=function(_0x997dcb,_0x5c6e4b){return db[_0xb7de('0x2f')][_0xb7de('0x4c')](_0x997dcb[_0xb7de('0x4d')],{})[_0xb7de('0x28')](respondWithResult(_0x5c6e4b,0xc9))[_0xb7de('0x47')](handleError(_0x5c6e4b,null));};exports[_0xb7de('0x27')]=function(_0x22ff48,_0x1e541e){if(_0x22ff48['body']['id']){delete _0x22ff48[_0xb7de('0x4d')]['id'];}return db[_0xb7de('0x2f')][_0xb7de('0x4b')]({'where':{'id':_0x22ff48[_0xb7de('0x48')]['id']}})[_0xb7de('0x28')](handleEntityNotFound(_0x1e541e,null))['then'](saveUpdates(_0x22ff48['body'],null))[_0xb7de('0x28')](respondWithResult(_0x1e541e,null))['catch'](handleError(_0x1e541e,null));};exports['destroy']=function(_0x452cad,_0x2def2d){return db[_0xb7de('0x2f')]['find']({'where':{'id':_0x452cad['params']['id']}})[_0xb7de('0x28')](handleEntityNotFound(_0x2def2d,null))[_0xb7de('0x28')](removeEntity(_0x2def2d,null))[_0xb7de('0x47')](handleError(_0x2def2d,null));};exports['getConfigurations']=function(_0x2b8b97,_0x18eae,_0x1c1821){var _0x29be53={};var _0x5a095b={};var _0x4cbf28;var _0xd52658;return db['SugarcrmAccount']['findOne']({'where':{'id':_0x2b8b97[_0xb7de('0x48')]['id']}})[_0xb7de('0x28')](handleEntityNotFound(_0x18eae,null))[_0xb7de('0x28')](function(_0x2bb19f){if(_0x2bb19f){_0x4cbf28=_0x2bb19f;_0x5a095b[_0xb7de('0x34')]=_[_0xb7de('0x36')](db['SugarcrmConfiguration'][_0xb7de('0x30')]);_0x5a095b[_0xb7de('0x35')]=_[_0xb7de('0x36')](_0x2b8b97['query']);_0x5a095b[_0xb7de('0x37')]=_['intersection'](_0x5a095b['model'],_0x5a095b[_0xb7de('0x35')]);_0x29be53[_0xb7de('0x39')]=_[_0xb7de('0x38')](_0x5a095b['model'],qs[_0xb7de('0x3a')](_0x2b8b97[_0xb7de('0x35')][_0xb7de('0x3a')]));_0x29be53[_0xb7de('0x39')]=_0x29be53[_0xb7de('0x39')][_0xb7de('0x3b')]?_0x29be53[_0xb7de('0x39')]:_0x5a095b[_0xb7de('0x34')];_0x29be53[_0xb7de('0x3d')]=qs[_0xb7de('0x3e')](_0x2b8b97[_0xb7de('0x35')][_0xb7de('0x3e')]);_0x29be53[_0xb7de('0x41')]=qs['filters'](_[_0xb7de('0x3f')](_0x2b8b97[_0xb7de('0x35')],_0x5a095b[_0xb7de('0x37')]));if(_0x2b8b97[_0xb7de('0x35')]['filter']){_0x29be53[_0xb7de('0x41')]=_[_0xb7de('0x42')](_0x29be53[_0xb7de('0x41')],{'$or':_[_0xb7de('0x2e')](_0x29be53[_0xb7de('0x39')],function(_0x1bb2e9){var _0x168666={};_0x168666[_0x1bb2e9]={'$like':'%'+_0x2b8b97[_0xb7de('0x35')][_0xb7de('0x40')]+'%'};return _0x168666;})});}_0x29be53=_[_0xb7de('0x42')]({},_0x29be53,_0x2b8b97[_0xb7de('0x4a')]);return _0x4cbf28[_0xb7de('0x4e')](_0x29be53);}})[_0xb7de('0x28')](function(_0x3dbca9){if(_0x3dbca9){_0xd52658=_0x3dbca9[_0xb7de('0x3b')];if(!_0x2b8b97[_0xb7de('0x35')][_0xb7de('0x3c')](_0xb7de('0x4f'))){_0x29be53[_0xb7de('0x1e')]=qs['limit'](_0x2b8b97[_0xb7de('0x35')][_0xb7de('0x1e')]);_0x29be53[_0xb7de('0x1c')]=qs[_0xb7de('0x1c')](_0x2b8b97[_0xb7de('0x35')]['offset']);}return _0x4cbf28[_0xb7de('0x4e')](_0x29be53);}})['then'](function(_0x199975){if(_0x199975){return _0x199975?{'count':_0xd52658,'rows':_0x199975}:null;}})[_0xb7de('0x28')](respondWithResult(_0x18eae,null))[_0xb7de('0x47')](handleError(_0x18eae,null));};exports[_0xb7de('0x50')]=function(_0x7039d6,_0x2d0f5b,_0x431c93){if(_0x7039d6[_0xb7de('0x4d')]['id']){delete _0x7039d6[_0xb7de('0x4d')]['id'];}return db[_0xb7de('0x2f')][_0xb7de('0x51')]({'where':{'id':_0x7039d6['params']['id']}})['then'](handleEntityNotFound(_0x2d0f5b,null))[_0xb7de('0x28')](function(_0x1257eb){if(_0x1257eb){_0x7039d6['body'][_0xb7de('0x52')]=_0x1257eb['id'];_0x7039d6[_0xb7de('0x4d')][_0xb7de('0x53')]=integrations[_0xb7de('0x54')](_0x7039d6[_0xb7de('0x4d')][_0xb7de('0x55')],_0x7039d6[_0xb7de('0x4d')][_0xb7de('0x32')]);_0x7039d6[_0xb7de('0x4d')]['Descriptions']=integrations[_0xb7de('0x56')](_0x7039d6[_0xb7de('0x4d')][_0xb7de('0x55')],_0x7039d6[_0xb7de('0x4d')][_0xb7de('0x32')]);return db[_0xb7de('0x57')][_0xb7de('0x4c')](_0x7039d6[_0xb7de('0x4d')],{'include':[{'model':db[_0xb7de('0x58')],'as':'Subjects'},{'model':db['SugarcrmField'],'as':_0xb7de('0x59')}]});}return null;})[_0xb7de('0x28')](respondWithResult(_0x2d0f5b,null))[_0xb7de('0x47')](handleError(_0x2d0f5b,null));};exports[_0xb7de('0x5a')]=function(_0x266a83,_0x1c6cbe,_0x4831b9){var _0xff5a41='';var _0x4c81b9=['id',_0xb7de('0x2c'),_0xb7de('0x5b'),_0xb7de('0x5c'),_0xb7de('0x5d'),_0xb7de('0x5e'),_0xb7de('0x5f'),'duration_minutes',_0xb7de('0x60'),_0xb7de('0x61'),_0xb7de('0x62'),'direction'];return db[_0xb7de('0x2f')]['findOne']({'where':{'id':_0x266a83[_0xb7de('0x48')]['id']},'attributes':['id',_0xb7de('0x63'),_0xb7de('0x64'),_0xb7de('0x65')]})[_0xb7de('0x28')](handleEntityNotFound(_0x1c6cbe,null))['then'](function(_0x2f17c6){if(_0x2f17c6){_0xff5a41=_0x2f17c6[_0xb7de('0x65')];var _0x2254dd=_0xff5a41[_0xb7de('0x66')](-0x1);if(_0x2254dd==='/'){_0xff5a41=_0xff5a41[_0xb7de('0x67')](0x0,_0xff5a41[_0xb7de('0x68')](_0x2254dd));}return rp({'method':'POST','uri':util[_0xb7de('0x69')](_0xb7de('0x6a'),_0xff5a41,_0xb7de('0x6b')),'json':!![],'form':{'method':_0xb7de('0x6c'),'input_type':'JSON','response_type':_0xb7de('0x6d'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x2f17c6[_0xb7de('0x63')],'password':_0x2f17c6[_0xb7de('0x64')],'encryption':_0xb7de('0x6e')},'application':_0xb7de('0x6f')})}});}})[_0xb7de('0x28')](function(_0x2be493){if(_0x2be493&&_0x2be493[_0xb7de('0x2c')]!==_0xb7de('0x70')&&_0x2be493[_0xb7de('0x2c')]!==_0xb7de('0x71')){return rp({'method':_0xb7de('0x72'),'uri':util[_0xb7de('0x69')](_0xb7de('0x6a'),_0xff5a41,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0xb7de('0x73'),'input_type':_0xb7de('0x6d'),'response_type':_0xb7de('0x6d'),'rest_data':JSON['stringify']({'session':_0x2be493['id'],'module_name':_0xb7de('0x74')})}})[_0xb7de('0x28')](function(_0x2fbd68){if(_0x2fbd68){var _0x2d3eb0=_[_0xb7de('0x75')](_0x2fbd68[_0xb7de('0x76')]);_[_0xb7de('0x77')](_0x2d3eb0,function(_0x543f98){return _0x4c81b9[_0xb7de('0x78')](_0x543f98[_0xb7de('0x2c')]);});return{'count':_0x2d3eb0[_0xb7de('0x3b')],'rows':_['map'](_0x2d3eb0,function(_0x2a60a1){return{'id':_0x2a60a1[_0xb7de('0x2c')],'name':_0x2a60a1['label'],'custom':_[_0xb7de('0x79')](_0x2a60a1['name'],'_c')?!![]:![],'options':_0x2a60a1[_0xb7de('0x4a')]?_[_0xb7de('0x2e')](_[_0xb7de('0x75')](_0x2a60a1['options']),function(_0xf982b9){return{'name':_0xf982b9[_0xb7de('0x7a')],'value':_0xf982b9['name']};}):[]};})};}})[_0xb7de('0x28')](respondWithResult(_0x1c6cbe,null))['catch'](function(_0xd2127e){var _0x453c8f=_0x266a83['query']['test']?0x1f4:_0xd2127e[_0xb7de('0x7b')]||0x1f4;logger[_0xb7de('0x2a')](_0xb7de('0x7c'),_0xb7de('0x5a'),_0x453c8f,JSON['stringify'](_0xd2127e));delete _0xd2127e[_0xb7de('0x2c')];if(_0x453c8f===0x191){_0x453c8f=0x190;}_0x1c6cbe[_0xb7de('0x20')](_0x453c8f)[_0xb7de('0x2d')](_0x266a83[_0xb7de('0x35')]['test']?{'message':_0xb7de('0x7d'),'statusCode':_0xd2127e['statusCode']}:_0xd2127e);});}else{var _0x1405cf=0x1f4;_0x1c6cbe[_0xb7de('0x20')](_0x1405cf)[_0xb7de('0x2d')]({'message':_0xb7de('0x7d'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0x926d=['moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','error','stack','name','index','map','SugarcrmAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','getConfigurations','length','order','findOne','getSubjects','channel','Descriptions','getDescriptions','SugarcrmField','Subjects','getFields','assigned_user_id','created_by','description','date_start','duration_minutes','parent_id','parent_type','parent_name','username','password','remoteUri','slice','substring','lastIndexOf','POST','/service/v4_1/rest.php','login','JSON','stringify','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','format','%s%s','Calls','values','module_fields','remove','label','endsWith','value','getFields,\x20%s,\x20%s,\x20%s','send','test','Wrong\x20credentials','statusCode','eml-format','request-promise'];(function(_0x5e81ea,_0x2c6893){var _0x4c19ed=function(_0x21ee0f){while(--_0x21ee0f){_0x5e81ea['push'](_0x5e81ea['shift']());}};_0x4c19ed(++_0x2c6893);}(_0x926d,0x1ee));var _0xd926=function(_0x233331,_0x177c38){_0x233331=_0x233331-0x0;var _0x3dff68=_0x926d[_0x233331];return _0x3dff68;};'use strict';var emlformat=require(_0xd926('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd926('0x1'));var moment=require(_0xd926('0x2'));var BPromise=require(_0xd926('0x3'));var Mustache=require(_0xd926('0x4'));var util=require(_0xd926('0x5'));var path=require(_0xd926('0x6'));var sox=require(_0xd926('0x7'));var csv=require(_0xd926('0x8'));var ejs=require(_0xd926('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd926('0xa'));var squel=require(_0xd926('0xb'));var crypto=require(_0xd926('0xc'));var jsforce=require(_0xd926('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd926('0xe'));var Papa=require(_0xd926('0xf'));var Redis=require(_0xd926('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xd926('0x11'));var as=require(_0xd926('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd926('0x13'))(_0xd926('0x14'));var utils=require(_0xd926('0x15'));var config=require(_0xd926('0x16'));var licenseUtil=require(_0xd926('0x17'));var db=require(_0xd926('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5e489c,_0x15bb6b){_0x15bb6b=_0x15bb6b||0xcc;return function(_0x1086a0){if(_0x1086a0){return _0x5e489c[_0xd926('0x19')](_0x15bb6b);}return _0x5e489c['status'](_0x15bb6b)[_0xd926('0x1a')]();};}function respondWithResult(_0x293ec5,_0x38b80e){_0x38b80e=_0x38b80e||0xc8;return function(_0x544893){if(_0x544893){return _0x293ec5[_0xd926('0x1b')](_0x38b80e)[_0xd926('0x1c')](_0x544893);}};}function respondWithFilteredResult(_0x494ca,_0x457de0){return function(_0x3ce996){if(_0x3ce996){var _0x2ba42c=typeof _0x457de0[_0xd926('0x1d')]===_0xd926('0x1e')&&typeof _0x457de0['limit']===_0xd926('0x1e');var _0xee2f4c=_0x3ce996[_0xd926('0x1f')];var _0x164311=_0x2ba42c?0x0:_0x457de0[_0xd926('0x1d')];var _0x537f1a=_0x2ba42c?_0x3ce996[_0xd926('0x1f')]:_0x457de0['offset']+_0x457de0[_0xd926('0x20')];var _0x2c4e96;if(_0x537f1a>=_0xee2f4c){_0x537f1a=_0xee2f4c;_0x2c4e96=0xc8;}else{_0x2c4e96=0xce;}_0x494ca[_0xd926('0x1b')](_0x2c4e96);return _0x494ca[_0xd926('0x21')](_0xd926('0x22'),_0x164311+'-'+_0x537f1a+'/'+_0xee2f4c)[_0xd926('0x1c')](_0x3ce996);}return null;};}function patchUpdates(_0x329c8e){return function(_0x637a80){try{jsonpatch[_0xd926('0x23')](_0x637a80,_0x329c8e,!![]);}catch(_0xe49caf){return BPromise['reject'](_0xe49caf);}return _0x637a80[_0xd926('0x24')]();};}function saveUpdates(_0x11a055,_0x576fa8){return function(_0x3346ff){if(_0x3346ff){return _0x3346ff[_0xd926('0x25')](_0x11a055)[_0xd926('0x26')](function(_0x38025e){return _0x38025e;});}return null;};}function removeEntity(_0x1aa001,_0x55c932){return function(_0x450ba9){if(_0x450ba9){return _0x450ba9[_0xd926('0x27')]()[_0xd926('0x26')](function(){_0x1aa001[_0xd926('0x1b')](0xcc)[_0xd926('0x1a')]();});}};}function handleEntityNotFound(_0x50cb13,_0x16a371){return function(_0x131afb){if(!_0x131afb){_0x50cb13[_0xd926('0x19')](0x194);}return _0x131afb;};}function handleError(_0x4df965,_0x31b295){_0x31b295=_0x31b295||0x1f4;return function(_0x17b91f){logger[_0xd926('0x28')](_0x17b91f[_0xd926('0x29')]);if(_0x17b91f[_0xd926('0x2a')]){delete _0x17b91f['name'];}_0x4df965[_0xd926('0x1b')](_0x31b295)['send'](_0x17b91f);};}exports[_0xd926('0x2b')]=function(_0x181094,_0x9f6d80){var _0x5892e9={},_0x3cf25c={},_0x546b22={'count':0x0,'rows':[]};var _0x179182=_[_0xd926('0x2c')](db[_0xd926('0x2d')][_0xd926('0x2e')],function(_0x24f0e9){return{'name':_0x24f0e9[_0xd926('0x2f')],'type':_0x24f0e9[_0xd926('0x30')][_0xd926('0x31')]};});_0x3cf25c[_0xd926('0x32')]=_[_0xd926('0x2c')](_0x179182,'name');_0x3cf25c[_0xd926('0x33')]=_[_0xd926('0x34')](_0x181094[_0xd926('0x33')]);_0x3cf25c['filters']=_[_0xd926('0x35')](_0x3cf25c[_0xd926('0x32')],_0x3cf25c[_0xd926('0x33')]);_0x5892e9[_0xd926('0x36')]=_[_0xd926('0x35')](_0x3cf25c[_0xd926('0x32')],qs[_0xd926('0x37')](_0x181094['query']['fields']));_0x5892e9[_0xd926('0x36')]=_0x5892e9[_0xd926('0x36')]['length']?_0x5892e9[_0xd926('0x36')]:_0x3cf25c[_0xd926('0x32')];if(!_0x181094[_0xd926('0x33')][_0xd926('0x38')](_0xd926('0x39'))){_0x5892e9[_0xd926('0x20')]=qs[_0xd926('0x20')](_0x181094[_0xd926('0x33')][_0xd926('0x20')]);_0x5892e9[_0xd926('0x1d')]=qs[_0xd926('0x1d')](_0x181094[_0xd926('0x33')][_0xd926('0x1d')]);}_0x5892e9['order']=qs[_0xd926('0x3a')](_0x181094[_0xd926('0x33')][_0xd926('0x3a')]);_0x5892e9[_0xd926('0x3b')]=qs[_0xd926('0x3c')](_[_0xd926('0x3d')](_0x181094[_0xd926('0x33')],_0x3cf25c[_0xd926('0x3c')]),_0x179182);if(_0x181094['query'][_0xd926('0x3e')]){_0x5892e9[_0xd926('0x3b')]=_[_0xd926('0x3f')](_0x5892e9[_0xd926('0x3b')],{'$or':_[_0xd926('0x2c')](_0x179182,function(_0x9caa3a){if(_0x9caa3a['type']!==_0xd926('0x40')){var _0x3c9288={};_0x3c9288[_0x9caa3a['name']]={'$like':'%'+_0x181094['query']['filter']+'%'};return _0x3c9288;}})});}_0x5892e9=_['merge']({},_0x5892e9,_0x181094[_0xd926('0x41')]);var _0x15f962={'where':_0x5892e9['where']};return db[_0xd926('0x2d')][_0xd926('0x1f')](_0x15f962)[_0xd926('0x26')](function(_0xc454f1){_0x546b22[_0xd926('0x1f')]=_0xc454f1;if(_0x181094[_0xd926('0x33')]['includeAll']){_0x5892e9[_0xd926('0x42')]=[{'all':!![]}];}return db['SugarcrmAccount'][_0xd926('0x43')](_0x5892e9);})[_0xd926('0x26')](function(_0x456a8f){_0x546b22[_0xd926('0x44')]=_0x456a8f;return _0x546b22;})['then'](respondWithFilteredResult(_0x9f6d80,_0x5892e9))[_0xd926('0x45')](handleError(_0x9f6d80,null));};exports[_0xd926('0x46')]=function(_0x280d1b,_0x427ef6){var _0x485742={'raw':![],'where':{'id':_0x280d1b[_0xd926('0x47')]['id']}},_0x3ccacc={};_0x3ccacc['model']=_[_0xd926('0x34')](db['SugarcrmAccount'][_0xd926('0x2e')]);_0x3ccacc['query']=_[_0xd926('0x34')](_0x280d1b[_0xd926('0x33')]);_0x3ccacc[_0xd926('0x3c')]=_[_0xd926('0x35')](_0x3ccacc['model'],_0x3ccacc[_0xd926('0x33')]);_0x485742[_0xd926('0x36')]=_[_0xd926('0x35')](_0x3ccacc[_0xd926('0x32')],qs[_0xd926('0x37')](_0x280d1b[_0xd926('0x33')][_0xd926('0x37')]));_0x485742[_0xd926('0x36')]=_0x485742[_0xd926('0x36')]['length']?_0x485742[_0xd926('0x36')]:_0x3ccacc['model'];if(_0x280d1b['query'][_0xd926('0x48')]){_0x485742[_0xd926('0x42')]=[{'all':!![]}];}_0x485742=_[_0xd926('0x3f')]({},_0x485742,_0x280d1b['options']);return db[_0xd926('0x2d')][_0xd926('0x49')](_0x485742)[_0xd926('0x26')](handleEntityNotFound(_0x427ef6,null))[_0xd926('0x26')](respondWithResult(_0x427ef6,null))[_0xd926('0x45')](handleError(_0x427ef6,null));};exports[_0xd926('0x4a')]=function(_0x4476b6,_0x46199c){return db[_0xd926('0x2d')][_0xd926('0x4a')](_0x4476b6[_0xd926('0x4b')],{})[_0xd926('0x26')](respondWithResult(_0x46199c,0xc9))[_0xd926('0x45')](handleError(_0x46199c,null));};exports[_0xd926('0x25')]=function(_0x37f346,_0x5511cf){if(_0x37f346[_0xd926('0x4b')]['id']){delete _0x37f346['body']['id'];}return db[_0xd926('0x2d')][_0xd926('0x49')]({'where':{'id':_0x37f346[_0xd926('0x47')]['id']}})[_0xd926('0x26')](handleEntityNotFound(_0x5511cf,null))[_0xd926('0x26')](saveUpdates(_0x37f346[_0xd926('0x4b')],null))['then'](respondWithResult(_0x5511cf,null))[_0xd926('0x45')](handleError(_0x5511cf,null));};exports[_0xd926('0x27')]=function(_0x2526a8,_0x28b8c3){return db[_0xd926('0x2d')][_0xd926('0x49')]({'where':{'id':_0x2526a8['params']['id']}})['then'](handleEntityNotFound(_0x28b8c3,null))['then'](removeEntity(_0x28b8c3,null))['catch'](handleError(_0x28b8c3,null));};exports[_0xd926('0x4c')]=function(_0x3aba5e,_0x59d447,_0x576d7e){var _0x3ba88f={};var _0x39338e={};var _0x689670;var _0x3bd511;return db[_0xd926('0x2d')]['findOne']({'where':{'id':_0x3aba5e['params']['id']}})[_0xd926('0x26')](handleEntityNotFound(_0x59d447,null))[_0xd926('0x26')](function(_0x46c82a){if(_0x46c82a){_0x689670=_0x46c82a;_0x39338e[_0xd926('0x32')]=_[_0xd926('0x34')](db['SugarcrmConfiguration']['rawAttributes']);_0x39338e['query']=_[_0xd926('0x34')](_0x3aba5e[_0xd926('0x33')]);_0x39338e['filters']=_[_0xd926('0x35')](_0x39338e['model'],_0x39338e[_0xd926('0x33')]);_0x3ba88f[_0xd926('0x36')]=_['intersection'](_0x39338e[_0xd926('0x32')],qs[_0xd926('0x37')](_0x3aba5e[_0xd926('0x33')][_0xd926('0x37')]));_0x3ba88f[_0xd926('0x36')]=_0x3ba88f['attributes'][_0xd926('0x4d')]?_0x3ba88f[_0xd926('0x36')]:_0x39338e[_0xd926('0x32')];_0x3ba88f[_0xd926('0x4e')]=qs[_0xd926('0x3a')](_0x3aba5e[_0xd926('0x33')][_0xd926('0x3a')]);_0x3ba88f[_0xd926('0x3b')]=qs[_0xd926('0x3c')](_['pick'](_0x3aba5e[_0xd926('0x33')],_0x39338e[_0xd926('0x3c')]));if(_0x3aba5e['query'][_0xd926('0x3e')]){_0x3ba88f[_0xd926('0x3b')]=_['merge'](_0x3ba88f['where'],{'$or':_['map'](_0x3ba88f['attributes'],function(_0x539415){var _0x10689e={};_0x10689e[_0x539415]={'$like':'%'+_0x3aba5e[_0xd926('0x33')]['filter']+'%'};return _0x10689e;})});}_0x3ba88f=_[_0xd926('0x3f')]({},_0x3ba88f,_0x3aba5e[_0xd926('0x41')]);return _0x689670[_0xd926('0x4c')](_0x3ba88f);}})[_0xd926('0x26')](function(_0x510319){if(_0x510319){_0x3bd511=_0x510319[_0xd926('0x4d')];if(!_0x3aba5e[_0xd926('0x33')][_0xd926('0x38')]('nolimit')){_0x3ba88f[_0xd926('0x20')]=qs['limit'](_0x3aba5e['query'][_0xd926('0x20')]);_0x3ba88f[_0xd926('0x1d')]=qs[_0xd926('0x1d')](_0x3aba5e[_0xd926('0x33')][_0xd926('0x1d')]);}return _0x689670[_0xd926('0x4c')](_0x3ba88f);}})['then'](function(_0x4e495c){if(_0x4e495c){return _0x4e495c?{'count':_0x3bd511,'rows':_0x4e495c}:null;}})[_0xd926('0x26')](respondWithResult(_0x59d447,null))[_0xd926('0x45')](handleError(_0x59d447,null));};exports['addConfiguration']=function(_0x1e2fc0,_0x5acd0c,_0x379b68){if(_0x1e2fc0['body']['id']){delete _0x1e2fc0[_0xd926('0x4b')]['id'];}return db[_0xd926('0x2d')][_0xd926('0x4f')]({'where':{'id':_0x1e2fc0['params']['id']}})[_0xd926('0x26')](handleEntityNotFound(_0x5acd0c,null))[_0xd926('0x26')](function(_0x32f7b6){if(_0x32f7b6){_0x1e2fc0[_0xd926('0x4b')]['AccountId']=_0x32f7b6['id'];_0x1e2fc0[_0xd926('0x4b')]['Subjects']=integrations[_0xd926('0x50')](_0x1e2fc0[_0xd926('0x4b')][_0xd926('0x51')],_0x1e2fc0['body'][_0xd926('0x30')]);_0x1e2fc0[_0xd926('0x4b')][_0xd926('0x52')]=integrations[_0xd926('0x53')](_0x1e2fc0['body'][_0xd926('0x51')],_0x1e2fc0[_0xd926('0x4b')][_0xd926('0x30')]);return db['SugarcrmConfiguration'][_0xd926('0x4a')](_0x1e2fc0[_0xd926('0x4b')],{'include':[{'model':db[_0xd926('0x54')],'as':_0xd926('0x55')},{'model':db[_0xd926('0x54')],'as':_0xd926('0x52')}]});}return null;})[_0xd926('0x26')](respondWithResult(_0x5acd0c,null))[_0xd926('0x45')](handleError(_0x5acd0c,null));};exports[_0xd926('0x56')]=function(_0x37748b,_0x2885d7,_0x554b6d){var _0x1e372b='';var _0x48e910=['id',_0xd926('0x2a'),_0xd926('0x57'),_0xd926('0x58'),_0xd926('0x59'),_0xd926('0x5a'),'duration_hours',_0xd926('0x5b'),_0xd926('0x5c'),_0xd926('0x5d'),_0xd926('0x5e'),'direction'];return db[_0xd926('0x2d')]['findOne']({'where':{'id':_0x37748b[_0xd926('0x47')]['id']},'attributes':['id',_0xd926('0x5f'),_0xd926('0x60'),_0xd926('0x61')]})[_0xd926('0x26')](handleEntityNotFound(_0x2885d7,null))[_0xd926('0x26')](function(_0x5d07a2){if(_0x5d07a2){_0x1e372b=_0x5d07a2['remoteUri'];var _0x4cd9ed=_0x1e372b[_0xd926('0x62')](-0x1);if(_0x4cd9ed==='/'){_0x1e372b=_0x1e372b[_0xd926('0x63')](0x0,_0x1e372b[_0xd926('0x64')](_0x4cd9ed));}return rp({'method':_0xd926('0x65'),'uri':util['format']('%s%s',_0x1e372b,_0xd926('0x66')),'json':!![],'form':{'method':_0xd926('0x67'),'input_type':_0xd926('0x68'),'response_type':_0xd926('0x68'),'rest_data':JSON[_0xd926('0x69')]({'user_auth':{'user_name':_0x5d07a2[_0xd926('0x5f')],'password':_0x5d07a2[_0xd926('0x60')],'encryption':_0xd926('0x6a')},'application':_0xd926('0x6b')})}});}})[_0xd926('0x26')](function(_0x520089){if(_0x520089&&_0x520089[_0xd926('0x2a')]!==_0xd926('0x6c')&&_0x520089['name']!==_0xd926('0x6d')){return rp({'method':'POST','uri':util[_0xd926('0x6e')](_0xd926('0x6f'),_0x1e372b,_0xd926('0x66')),'json':!![],'form':{'method':'get_module_fields','input_type':_0xd926('0x68'),'response_type':_0xd926('0x68'),'rest_data':JSON['stringify']({'session':_0x520089['id'],'module_name':_0xd926('0x70')})}})['then'](function(_0xb3bc64){if(_0xb3bc64){var _0x2f59b0=_[_0xd926('0x71')](_0xb3bc64[_0xd926('0x72')]);_[_0xd926('0x73')](_0x2f59b0,function(_0x26d66b){return _0x48e910['includes'](_0x26d66b['name']);});return{'count':_0x2f59b0[_0xd926('0x4d')],'rows':_[_0xd926('0x2c')](_0x2f59b0,function(_0x54ee7d){return{'id':_0x54ee7d[_0xd926('0x2a')],'name':_0x54ee7d[_0xd926('0x74')],'custom':_[_0xd926('0x75')](_0x54ee7d['name'],'_c')?!![]:![],'options':_0x54ee7d[_0xd926('0x41')]?_[_0xd926('0x2c')](_['values'](_0x54ee7d['options']),function(_0x903fd1){return{'name':_0x903fd1[_0xd926('0x76')],'value':_0x903fd1[_0xd926('0x2a')]};}):[]};})};}})[_0xd926('0x26')](respondWithResult(_0x2885d7,null))['catch'](function(_0x3fc0f3){var _0x55a5e0=_0x37748b[_0xd926('0x33')]['test']?0x1f4:_0x3fc0f3['statusCode']||0x1f4;logger[_0xd926('0x28')](_0xd926('0x77'),_0xd926('0x56'),_0x55a5e0,JSON[_0xd926('0x69')](_0x3fc0f3));delete _0x3fc0f3[_0xd926('0x2a')];if(_0x55a5e0===0x191){_0x55a5e0=0x190;}_0x2885d7['status'](_0x55a5e0)[_0xd926('0x78')](_0x37748b[_0xd926('0x33')][_0xd926('0x79')]?{'message':_0xd926('0x7a'),'statusCode':_0x3fc0f3[_0xd926('0x7b')]}:_0x3fc0f3);});}else{var _0x144cfa=0x1f4;_0x2885d7[_0xd926('0x1b')](_0x144cfa)[_0xd926('0x78')]({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
index 92726bb..39c4877 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d5e=['request-promise','path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','define','lodash','util','../../config/logger','api','bluebird'];(function(_0xc3083f,_0x5ac664){var _0x8e45bb=function(_0x466769){while(--_0x466769){_0xc3083f['push'](_0xc3083f['shift']());}};_0x8e45bb(++_0x5ac664);}(_0x6d5e,0x103));var _0xe6d5=function(_0x44516f,_0x5aa94b){_0x44516f=_0x44516f-0x0;var _0x1adf13=_0x6d5e[_0x44516f];return _0x1adf13;};'use strict';var _=require(_0xe6d5('0x0'));var util=require(_0xe6d5('0x1'));var logger=require(_0xe6d5('0x2'))(_0xe6d5('0x3'));var moment=require('moment');var BPromise=require(_0xe6d5('0x4'));var rp=require(_0xe6d5('0x5'));var fs=require('fs');var path=require(_0xe6d5('0x6'));var rimraf=require(_0xe6d5('0x7'));var config=require(_0xe6d5('0x8'));var attributes=require(_0xe6d5('0x9'));var integrations=require(_0xe6d5('0xa'));module['exports']=function(_0x13411d,_0x4c0f87){return _0x13411d[_0xe6d5('0xb')]('SugarcrmAccount',attributes,{'tableName':'int_sugarcrm_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6755=['request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','int_sugarcrm_accounts','lodash','util','api','moment'];(function(_0x7d62cb,_0x7622c){var _0x3a6266=function(_0x1cc5fa){while(--_0x1cc5fa){_0x7d62cb['push'](_0x7d62cb['shift']());}};_0x3a6266(++_0x7622c);}(_0x6755,0x193));var _0x5675=function(_0x3e4535,_0x3e8f58){_0x3e4535=_0x3e4535-0x0;var _0x5c054b=_0x6755[_0x3e4535];return _0x5c054b;};'use strict';var _=require(_0x5675('0x0'));var util=require(_0x5675('0x1'));var logger=require('../../config/logger')(_0x5675('0x2'));var moment=require(_0x5675('0x3'));var BPromise=require('bluebird');var rp=require(_0x5675('0x4'));var fs=require('fs');var path=require(_0x5675('0x5'));var rimraf=require(_0x5675('0x6'));var config=require(_0x5675('0x7'));var attributes=require('./intSugarcrmAccount.attributes');var integrations=require(_0x5675('0x8'));module[_0x5675('0x9')]=function(_0x425a6c,_0x323b58){return _0x425a6c['define']('SugarcrmAccount',attributes,{'tableName':_0x5675('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a48b77f..512833f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf92f=['debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','GetSugarcrmAccount','SugarcrmAccount','options','raw','where','attributes','limit','map','include','model','ShowSugarcrmAccount','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent'];(function(_0x392250,_0x25fdb9){var _0x2c5f1a=function(_0x372d69){while(--_0x372d69){_0x392250['push'](_0x392250['shift']());}};_0x2c5f1a(++_0x25fdb9);}(_0xf92f,0x191));var _0xff92=function(_0x37bc54,_0x16a284){_0x37bc54=_0x37bc54-0x0;var _0x3300b4=_0xf92f[_0x37bc54];return _0x3300b4;};'use strict';var _=require('lodash');var util=require(_0xff92('0x0'));var moment=require(_0xff92('0x1'));var BPromise=require(_0xff92('0x2'));var rs=require(_0xff92('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xff92('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xff92('0x5'))(_0xff92('0x6'));var config=require(_0xff92('0x7'));var jayson=require(_0xff92('0x8'));var client=jayson[_0xff92('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x95903b,_0x346faf,_0x46c2c6){return new BPromise(function(_0x1e357c,_0x4dfdd4){return client[_0xff92('0xa')](_0x95903b,_0x46c2c6)[_0xff92('0xb')](function(_0x1b6e5e){logger[_0xff92('0xc')](_0xff92('0xd'),_0x346faf,_0xff92('0xe'));logger[_0xff92('0xf')](_0xff92('0x10'),_0x346faf,_0xff92('0xe'),JSON[_0xff92('0x11')](_0x1b6e5e));if(_0x1b6e5e['error']){if(_0x1b6e5e[_0xff92('0x12')]['code']===0x1f4){logger[_0xff92('0x12')](_0xff92('0xd'),_0x346faf,_0x1b6e5e[_0xff92('0x12')][_0xff92('0x13')]);return _0x4dfdd4(_0x1b6e5e[_0xff92('0x12')][_0xff92('0x13')]);}logger[_0xff92('0x12')]('SugarcrmAccount,\x20%s,\x20%s',_0x346faf,_0x1b6e5e[_0xff92('0x12')][_0xff92('0x13')]);return _0x1e357c(_0x1b6e5e[_0xff92('0x12')][_0xff92('0x13')]);}else{logger[_0xff92('0xc')](_0xff92('0xd'),_0x346faf,_0xff92('0xe'));_0x1e357c(_0x1b6e5e['result'][_0xff92('0x13')]);}})[_0xff92('0x14')](function(_0x53f185){logger['error'](_0xff92('0xd'),_0x346faf,_0x53f185);_0x4dfdd4(_0x53f185);});});}exports[_0xff92('0x15')]=function(_0x183c97){var _0x325b7b=this;return new Promise(function(_0x4f5707,_0x14f1e4){return db[_0xff92('0x16')]['findAll']({'raw':_0x183c97[_0xff92('0x17')]?_0x183c97['options'][_0xff92('0x18')]===undefined?!![]:![]:!![],'where':_0x183c97[_0xff92('0x17')]?_0x183c97['options'][_0xff92('0x19')]||null:null,'attributes':_0x183c97[_0xff92('0x17')]?_0x183c97[_0xff92('0x17')][_0xff92('0x1a')]||null:null,'limit':_0x183c97[_0xff92('0x17')]?_0x183c97['options'][_0xff92('0x1b')]||null:null,'include':_0x183c97[_0xff92('0x17')]?_0x183c97[_0xff92('0x17')]['include']?_[_0xff92('0x1c')](_0x183c97['options']['include'],function(_0x398f3e){return{'model':db[_0x398f3e['model']],'as':_0x398f3e['as'],'attributes':_0x398f3e[_0xff92('0x1a')],'include':_0x398f3e['include']?_[_0xff92('0x1c')](_0x398f3e[_0xff92('0x1d')],function(_0x5ec05d){return{'model':db[_0x5ec05d['model']],'as':_0x5ec05d['as'],'attributes':_0x5ec05d['attributes'],'include':_0x5ec05d[_0xff92('0x1d')]?_['map'](_0x5ec05d[_0xff92('0x1d')],function(_0x165357){return{'model':db[_0x165357[_0xff92('0x1e')]],'as':_0x165357['as'],'attributes':_0x165357['attributes']};}):[]};}):[]};}):[]:[]})[_0xff92('0xb')](function(_0x1ef83b){logger['info'](_0xff92('0x15'),_0x183c97);logger[_0xff92('0xf')](_0xff92('0x15'),_0x183c97,JSON[_0xff92('0x11')](_0x1ef83b));_0x4f5707(_0x1ef83b);})['catch'](function(_0xe3f3db){logger[_0xff92('0x12')]('GetSugarcrmAccount',_0xe3f3db[_0xff92('0x13')],_0x183c97);_0x14f1e4(_0x325b7b['error'](0x1f4,_0xe3f3db['message']));});});};exports[_0xff92('0x1f')]=function(_0x5b32a4){var _0x301180=this;return new Promise(function(_0xc8a035,_0x1e2dab){return db[_0xff92('0x16')]['find']({'raw':_0x5b32a4[_0xff92('0x17')]?_0x5b32a4['options'][_0xff92('0x18')]===undefined?!![]:![]:!![],'where':_0x5b32a4[_0xff92('0x17')]?_0x5b32a4[_0xff92('0x17')][_0xff92('0x19')]||null:null,'attributes':_0x5b32a4[_0xff92('0x17')]?_0x5b32a4[_0xff92('0x17')][_0xff92('0x1a')]||null:null,'include':_0x5b32a4[_0xff92('0x17')]?_0x5b32a4[_0xff92('0x17')][_0xff92('0x1d')]?_[_0xff92('0x1c')](_0x5b32a4[_0xff92('0x17')][_0xff92('0x1d')],function(_0x1b8bf8){return{'model':db[_0x1b8bf8[_0xff92('0x1e')]],'as':_0x1b8bf8['as'],'attributes':_0x1b8bf8[_0xff92('0x1a')],'include':_0x1b8bf8[_0xff92('0x1d')]?_['map'](_0x1b8bf8[_0xff92('0x1d')],function(_0xf55f0){return{'model':db[_0xf55f0[_0xff92('0x1e')]],'as':_0xf55f0['as'],'attributes':_0xf55f0[_0xff92('0x1a')],'include':_0xf55f0['include']?_[_0xff92('0x1c')](_0xf55f0[_0xff92('0x1d')],function(_0x3f1ca5){return{'model':db[_0x3f1ca5[_0xff92('0x1e')]],'as':_0x3f1ca5['as'],'attributes':_0x3f1ca5['attributes']};}):[]};}):[]};}):[]:[]})[_0xff92('0xb')](function(_0x1dca66){logger[_0xff92('0xc')](_0xff92('0x1f'),_0x5b32a4);logger['debug'](_0xff92('0x1f'),_0x5b32a4,JSON[_0xff92('0x11')](_0x1dca66));_0xc8a035(_0x1dca66);})[_0xff92('0x14')](function(_0x2d567f){logger[_0xff92('0x12')](_0xff92('0x1f'),_0x2d567f[_0xff92('0x13')],_0x5b32a4);_0x1e2dab(_0x301180[_0xff92('0x12')](0x1f4,_0x2d567f[_0xff92('0x13')]));});});};
\ No newline at end of file
+var _0x28da=['debug','stringify','error','code','message','info','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','where','limit','include','model','attributes','map','ShowSugarcrmAccount','find','util','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','SugarcrmAccount,\x20%s,\x20%s','request\x20sent'];(function(_0x5cf592,_0x52d27e){var _0x326222=function(_0x5c6c5c){while(--_0x5c6c5c){_0x5cf592['push'](_0x5cf592['shift']());}};_0x326222(++_0x52d27e);}(_0x28da,0x102));var _0xa28d=function(_0x39006e,_0x147665){_0x39006e=_0x39006e-0x0;var _0x58d5b6=_0x28da[_0x39006e];return _0x58d5b6;};'use strict';var _=require('lodash');var util=require(_0xa28d('0x0'));var moment=require(_0xa28d('0x1'));var BPromise=require(_0xa28d('0x2'));var rs=require(_0xa28d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa28d('0x4'));var logger=require('../../config/logger')(_0xa28d('0x5'));var config=require(_0xa28d('0x6'));var jayson=require(_0xa28d('0x7'));var client=jayson[_0xa28d('0x8')][_0xa28d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4b7a1c,_0xfb765c,_0x47d2f1){return new BPromise(function(_0x583222,_0x2739e6){return client[_0xa28d('0xa')](_0x4b7a1c,_0x47d2f1)[_0xa28d('0xb')](function(_0x2775e6){logger['info'](_0xa28d('0xc'),_0xfb765c,_0xa28d('0xd'));logger[_0xa28d('0xe')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0xfb765c,_0xa28d('0xd'),JSON[_0xa28d('0xf')](_0x2775e6));if(_0x2775e6[_0xa28d('0x10')]){if(_0x2775e6['error'][_0xa28d('0x11')]===0x1f4){logger[_0xa28d('0x10')](_0xa28d('0xc'),_0xfb765c,_0x2775e6[_0xa28d('0x10')][_0xa28d('0x12')]);return _0x2739e6(_0x2775e6['error'][_0xa28d('0x12')]);}logger[_0xa28d('0x10')](_0xa28d('0xc'),_0xfb765c,_0x2775e6['error'][_0xa28d('0x12')]);return _0x583222(_0x2775e6['error'][_0xa28d('0x12')]);}else{logger[_0xa28d('0x13')]('SugarcrmAccount,\x20%s,\x20%s',_0xfb765c,_0xa28d('0xd'));_0x583222(_0x2775e6['result'][_0xa28d('0x12')]);}})[_0xa28d('0x14')](function(_0x713f07){logger['error'](_0xa28d('0xc'),_0xfb765c,_0x713f07);_0x2739e6(_0x713f07);});});}exports[_0xa28d('0x15')]=function(_0x12bc4b){var _0xae0059=this;return new Promise(function(_0x253dc2,_0x1cd622){return db[_0xa28d('0x16')][_0xa28d('0x17')]({'raw':_0x12bc4b[_0xa28d('0x18')]?_0x12bc4b['options'][_0xa28d('0x19')]===undefined?!![]:![]:!![],'where':_0x12bc4b['options']?_0x12bc4b[_0xa28d('0x18')][_0xa28d('0x1a')]||null:null,'attributes':_0x12bc4b['options']?_0x12bc4b[_0xa28d('0x18')]['attributes']||null:null,'limit':_0x12bc4b['options']?_0x12bc4b[_0xa28d('0x18')][_0xa28d('0x1b')]||null:null,'include':_0x12bc4b[_0xa28d('0x18')]?_0x12bc4b[_0xa28d('0x18')][_0xa28d('0x1c')]?_['map'](_0x12bc4b[_0xa28d('0x18')][_0xa28d('0x1c')],function(_0x1a2d18){return{'model':db[_0x1a2d18[_0xa28d('0x1d')]],'as':_0x1a2d18['as'],'attributes':_0x1a2d18[_0xa28d('0x1e')],'include':_0x1a2d18[_0xa28d('0x1c')]?_[_0xa28d('0x1f')](_0x1a2d18['include'],function(_0xc16fd4){return{'model':db[_0xc16fd4[_0xa28d('0x1d')]],'as':_0xc16fd4['as'],'attributes':_0xc16fd4[_0xa28d('0x1e')],'include':_0xc16fd4[_0xa28d('0x1c')]?_[_0xa28d('0x1f')](_0xc16fd4[_0xa28d('0x1c')],function(_0x597ce5){return{'model':db[_0x597ce5[_0xa28d('0x1d')]],'as':_0x597ce5['as'],'attributes':_0x597ce5['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x464b53){logger[_0xa28d('0x13')]('GetSugarcrmAccount',_0x12bc4b);logger[_0xa28d('0xe')](_0xa28d('0x15'),_0x12bc4b,JSON[_0xa28d('0xf')](_0x464b53));_0x253dc2(_0x464b53);})[_0xa28d('0x14')](function(_0x502edc){logger[_0xa28d('0x10')]('GetSugarcrmAccount',_0x502edc[_0xa28d('0x12')],_0x12bc4b);_0x1cd622(_0xae0059['error'](0x1f4,_0x502edc[_0xa28d('0x12')]));});});};exports[_0xa28d('0x20')]=function(_0x25fbca){var _0x3a7de3=this;return new Promise(function(_0x518c55,_0x1e3adb){return db[_0xa28d('0x16')][_0xa28d('0x21')]({'raw':_0x25fbca['options']?_0x25fbca[_0xa28d('0x18')][_0xa28d('0x19')]===undefined?!![]:![]:!![],'where':_0x25fbca[_0xa28d('0x18')]?_0x25fbca[_0xa28d('0x18')][_0xa28d('0x1a')]||null:null,'attributes':_0x25fbca[_0xa28d('0x18')]?_0x25fbca['options']['attributes']||null:null,'include':_0x25fbca[_0xa28d('0x18')]?_0x25fbca[_0xa28d('0x18')][_0xa28d('0x1c')]?_[_0xa28d('0x1f')](_0x25fbca[_0xa28d('0x18')][_0xa28d('0x1c')],function(_0x407752){return{'model':db[_0x407752[_0xa28d('0x1d')]],'as':_0x407752['as'],'attributes':_0x407752[_0xa28d('0x1e')],'include':_0x407752[_0xa28d('0x1c')]?_[_0xa28d('0x1f')](_0x407752[_0xa28d('0x1c')],function(_0x48a756){return{'model':db[_0x48a756[_0xa28d('0x1d')]],'as':_0x48a756['as'],'attributes':_0x48a756[_0xa28d('0x1e')],'include':_0x48a756[_0xa28d('0x1c')]?_[_0xa28d('0x1f')](_0x48a756['include'],function(_0x6a2801){return{'model':db[_0x6a2801[_0xa28d('0x1d')]],'as':_0x6a2801['as'],'attributes':_0x6a2801[_0xa28d('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xa28d('0xb')](function(_0x3164fe){logger['info'](_0xa28d('0x20'),_0x25fbca);logger[_0xa28d('0xe')](_0xa28d('0x20'),_0x25fbca,JSON['stringify'](_0x3164fe));_0x518c55(_0x3164fe);})[_0xa28d('0x14')](function(_0x24270e){logger[_0xa28d('0x10')](_0xa28d('0x20'),_0x24270e[_0xa28d('0x12')],_0x25fbca);_0x1e3adb(_0x3a7de3[_0xa28d('0x10')](0x1f4,_0x24270e[_0xa28d('0x12')]));});});};
\ No newline at end of file
index 657a13d..6d28eb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x108f=['/:id/descriptions','getDescriptions','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects'];(function(_0x3ddce0,_0x22274b){var _0x4ac3ea=function(_0x3e4692){while(--_0x3e4692){_0x3ddce0['push'](_0x3ddce0['shift']());}};_0x4ac3ea(++_0x22274b);}(_0x108f,0x110));var _0xf108=function(_0x3a68c5,_0x339fd2){_0x3a68c5=_0x3a68c5-0x0;var _0x1e93d3=_0x108f[_0x3a68c5];return _0x1e93d3;};'use strict';var multer=require(_0xf108('0x0'));var util=require(_0xf108('0x1'));var path=require(_0xf108('0x2'));var timeout=require(_0xf108('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf108('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xf108('0x5'));var config=require(_0xf108('0x6'));var controller=require(_0xf108('0x7'));router[_0xf108('0x8')]('/',auth['isAuthenticated'](),controller[_0xf108('0x9')]);router['get'](_0xf108('0xa'),auth[_0xf108('0xb')](),controller[_0xf108('0xc')]);router[_0xf108('0x8')](_0xf108('0xd'),auth[_0xf108('0xb')](),controller[_0xf108('0xe')]);router[_0xf108('0x8')](_0xf108('0xf'),auth[_0xf108('0xb')](),controller['getSubjects']);router[_0xf108('0x8')](_0xf108('0x10'),auth[_0xf108('0xb')](),controller[_0xf108('0x11')]);router[_0xf108('0x12')]('/',auth[_0xf108('0xb')](),controller[_0xf108('0x13')]);router[_0xf108('0x14')](_0xf108('0xa'),auth[_0xf108('0xb')](),controller[_0xf108('0x15')]);router['delete']('/:id',auth[_0xf108('0xb')](),controller[_0xf108('0x16')]);module[_0xf108('0x17')]=router;
\ No newline at end of file
+var _0x0c00=['isAuthenticated','index','/:id','show','getFields','getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0c00,0x12e));var _0x00c0=function(_0x2faddb,_0xc18b78){_0x2faddb=_0x2faddb-0x0;var _0x273c05=_0x0c00[_0x2faddb];return _0x273c05;};'use strict';var multer=require(_0x00c0('0x0'));var util=require(_0x00c0('0x1'));var path=require(_0x00c0('0x2'));var timeout=require(_0x00c0('0x3'));var express=require(_0x00c0('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x00c0('0x5'));var interaction=require(_0x00c0('0x6'));var config=require(_0x00c0('0x7'));var controller=require(_0x00c0('0x8'));router[_0x00c0('0x9')]('/',auth[_0x00c0('0xa')](),controller[_0x00c0('0xb')]);router[_0x00c0('0x9')](_0x00c0('0xc'),auth[_0x00c0('0xa')](),controller[_0x00c0('0xd')]);router['get']('/:id/fields',auth[_0x00c0('0xa')](),controller[_0x00c0('0xe')]);router[_0x00c0('0x9')]('/:id/subjects',auth[_0x00c0('0xa')](),controller[_0x00c0('0xf')]);router['get']('/:id/descriptions',auth['isAuthenticated'](),controller[_0x00c0('0x10')]);router[_0x00c0('0x11')]('/',auth['isAuthenticated'](),controller[_0x00c0('0x12')]);router[_0x00c0('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x00c0('0x14')]);router[_0x00c0('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x00c0('0x16')]);module[_0x00c0('0x17')]=router;
\ No newline at end of file
index e65b52a..4a393dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc349=['sequelize','exports','STRING'];(function(_0x2a03b3,_0x3328a4){var _0x170e08=function(_0x48232c){while(--_0x48232c){_0x2a03b3['push'](_0x2a03b3['shift']());}};_0x170e08(++_0x3328a4);}(_0xc349,0x141));var _0x9c34=function(_0x587bb4,_0xa1c6bc){_0x587bb4=_0x587bb4-0x0;var _0x12ef96=_0xc349[_0x587bb4];return _0x12ef96;};'use strict';var Sequelize=require(_0x9c34('0x0'));module[_0x9c34('0x1')]={'name':{'type':Sequelize[_0x9c34('0x2')]},'description':{'type':Sequelize[_0x9c34('0x2')]}};
\ No newline at end of file
+var _0xd48c=['exports'];(function(_0x59843f,_0x4f774b){var _0x51173b=function(_0x1e527e){while(--_0x1e527e){_0x59843f['push'](_0x59843f['shift']());}};_0x51173b(++_0x4f774b);}(_0xd48c,0x143));var _0xcd48=function(_0x96f74c,_0xfc30a4){_0x96f74c=_0x96f74c-0x0;var _0x379222=_0xd48c[_0x96f74c];return _0x379222;};'use strict';var Sequelize=require('sequelize');module[_0xcd48('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 008e4b8..c65ed31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8968=['order','pick','getSubjects','getDescriptions','SugarcrmField','rimraf','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','end','status','offset','undefined','count','limit','set','apply','reject','save','update','destroy','then','error','stack','name','send','SugarcrmConfiguration','rawAttributes','fieldName','type','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','getFields','findOne'];(function(_0x5de237,_0x2058e8){var _0x3b3d4d=function(_0x3debe1){while(--_0x3debe1){_0x5de237['push'](_0x5de237['shift']());}};_0x3b3d4d(++_0x2058e8);}(_0x8968,0xe6));var _0x8896=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0x8968[_0x484e36];return _0xafc85d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8896('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8896('0x1'));var rp=require(_0x8896('0x2'));var moment=require(_0x8896('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x8896('0x4'));var path=require('path');var sox=require(_0x8896('0x5'));var csv=require(_0x8896('0x6'));var ejs=require(_0x8896('0x7'));var fs=require('fs');var fs_extra=require(_0x8896('0x8'));var _=require(_0x8896('0x9'));var squel=require(_0x8896('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x8896('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8896('0xc'));var Redis=require(_0x8896('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x8896('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8896('0xf'));var logger=require(_0x8896('0x10'))(_0x8896('0x11'));var utils=require('../../config/utils');var config=require(_0x8896('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3fcb7e,_0x49539f){_0x49539f=_0x49539f||0xcc;return function(_0x3077af){if(_0x3077af){return _0x3fcb7e[_0x8896('0x13')](_0x49539f);}return _0x3fcb7e['status'](_0x49539f)[_0x8896('0x14')]();};}function respondWithResult(_0x2d1e77,_0x449d7a){_0x449d7a=_0x449d7a||0xc8;return function(_0x497cde){if(_0x497cde){return _0x2d1e77[_0x8896('0x15')](_0x449d7a)['json'](_0x497cde);}};}function respondWithFilteredResult(_0x1bd03e,_0x279542){return function(_0x3f757c){if(_0x3f757c){var _0x14029f=typeof _0x279542[_0x8896('0x16')]===_0x8896('0x17')&&typeof _0x279542['limit']===_0x8896('0x17');var _0x2d16c7=_0x3f757c[_0x8896('0x18')];var _0x538a3a=_0x14029f?0x0:_0x279542[_0x8896('0x16')];var _0x4041ce=_0x14029f?_0x3f757c[_0x8896('0x18')]:_0x279542[_0x8896('0x16')]+_0x279542[_0x8896('0x19')];var _0x267478;if(_0x4041ce>=_0x2d16c7){_0x4041ce=_0x2d16c7;_0x267478=0xc8;}else{_0x267478=0xce;}_0x1bd03e[_0x8896('0x15')](_0x267478);return _0x1bd03e[_0x8896('0x1a')]('Content-Range',_0x538a3a+'-'+_0x4041ce+'/'+_0x2d16c7)['json'](_0x3f757c);}return null;};}function patchUpdates(_0x79ef68){return function(_0x1b1668){try{jsonpatch[_0x8896('0x1b')](_0x1b1668,_0x79ef68,!![]);}catch(_0x21b03c){return BPromise[_0x8896('0x1c')](_0x21b03c);}return _0x1b1668[_0x8896('0x1d')]();};}function saveUpdates(_0xa8eda6,_0x5bbc2b){return function(_0x504f7c){if(_0x504f7c){return _0x504f7c[_0x8896('0x1e')](_0xa8eda6)['then'](function(_0x2abb66){return _0x2abb66;});}return null;};}function removeEntity(_0x3eed47,_0xd9027b){return function(_0x50d2f5){if(_0x50d2f5){return _0x50d2f5[_0x8896('0x1f')]()[_0x8896('0x20')](function(){_0x3eed47['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x111a08,_0x305194){return function(_0x44375b){if(!_0x44375b){_0x111a08['sendStatus'](0x194);}return _0x44375b;};}function handleError(_0x77e603,_0x226485){_0x226485=_0x226485||0x1f4;return function(_0x548617){logger[_0x8896('0x21')](_0x548617[_0x8896('0x22')]);if(_0x548617[_0x8896('0x23')]){delete _0x548617[_0x8896('0x23')];}_0x77e603[_0x8896('0x15')](_0x226485)[_0x8896('0x24')](_0x548617);};}exports['index']=function(_0x3d1923,_0x3f785f){var _0x4627e8={},_0x12e3c5={},_0x1a7ccd={'count':0x0,'rows':[]};var _0x25b7d8=_['map'](db[_0x8896('0x25')][_0x8896('0x26')],function(_0x3bb729){return{'name':_0x3bb729[_0x8896('0x27')],'type':_0x3bb729[_0x8896('0x28')]['key']};});_0x12e3c5['model']=_[_0x8896('0x29')](_0x25b7d8,'name');_0x12e3c5[_0x8896('0x2a')]=_[_0x8896('0x2b')](_0x3d1923[_0x8896('0x2a')]);_0x12e3c5[_0x8896('0x2c')]=_[_0x8896('0x2d')](_0x12e3c5[_0x8896('0x2e')],_0x12e3c5['query']);_0x4627e8[_0x8896('0x2f')]=_[_0x8896('0x2d')](_0x12e3c5[_0x8896('0x2e')],qs[_0x8896('0x30')](_0x3d1923['query'][_0x8896('0x30')]));_0x4627e8[_0x8896('0x2f')]=_0x4627e8[_0x8896('0x2f')][_0x8896('0x31')]?_0x4627e8[_0x8896('0x2f')]:_0x12e3c5[_0x8896('0x2e')];if(!_0x3d1923[_0x8896('0x2a')][_0x8896('0x32')](_0x8896('0x33'))){_0x4627e8['limit']=qs[_0x8896('0x19')](_0x3d1923[_0x8896('0x2a')][_0x8896('0x19')]);_0x4627e8[_0x8896('0x16')]=qs[_0x8896('0x16')](_0x3d1923[_0x8896('0x2a')][_0x8896('0x16')]);}_0x4627e8['order']=qs[_0x8896('0x34')](_0x3d1923['query'][_0x8896('0x34')]);_0x4627e8[_0x8896('0x35')]=qs[_0x8896('0x2c')](_['pick'](_0x3d1923[_0x8896('0x2a')],_0x12e3c5[_0x8896('0x2c')]),_0x25b7d8);if(_0x3d1923[_0x8896('0x2a')][_0x8896('0x36')]){_0x4627e8['where']=_[_0x8896('0x37')](_0x4627e8['where'],{'$or':_['map'](_0x25b7d8,function(_0x4144bd){if(_0x4144bd[_0x8896('0x28')]!==_0x8896('0x38')){var _0x7b0364={};_0x7b0364[_0x4144bd[_0x8896('0x23')]]={'$like':'%'+_0x3d1923['query'][_0x8896('0x36')]+'%'};return _0x7b0364;}})});}_0x4627e8=_[_0x8896('0x37')]({},_0x4627e8,_0x3d1923[_0x8896('0x39')]);var _0x1946d6={'where':_0x4627e8['where']};return db[_0x8896('0x25')][_0x8896('0x18')](_0x1946d6)[_0x8896('0x20')](function(_0x5ea791){_0x1a7ccd[_0x8896('0x18')]=_0x5ea791;if(_0x3d1923[_0x8896('0x2a')][_0x8896('0x3a')]){_0x4627e8[_0x8896('0x3b')]=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0x8896('0x3c')](_0x4627e8);})[_0x8896('0x20')](function(_0x48ef00){_0x1a7ccd[_0x8896('0x3d')]=_0x48ef00;return _0x1a7ccd;})[_0x8896('0x20')](respondWithFilteredResult(_0x3f785f,_0x4627e8))[_0x8896('0x3e')](handleError(_0x3f785f,null));};exports[_0x8896('0x3f')]=function(_0x40837e,_0x5cd6e8){var _0x466238={'raw':![],'where':{'id':_0x40837e[_0x8896('0x40')]['id']}},_0x137e41={};_0x137e41[_0x8896('0x2e')]=_[_0x8896('0x2b')](db[_0x8896('0x25')][_0x8896('0x26')]);_0x137e41[_0x8896('0x2a')]=_[_0x8896('0x2b')](_0x40837e[_0x8896('0x2a')]);_0x137e41[_0x8896('0x2c')]=_[_0x8896('0x2d')](_0x137e41['model'],_0x137e41[_0x8896('0x2a')]);_0x466238[_0x8896('0x2f')]=_[_0x8896('0x2d')](_0x137e41[_0x8896('0x2e')],qs[_0x8896('0x30')](_0x40837e['query'][_0x8896('0x30')]));_0x466238[_0x8896('0x2f')]=_0x466238['attributes'][_0x8896('0x31')]?_0x466238[_0x8896('0x2f')]:_0x137e41[_0x8896('0x2e')];if(_0x40837e[_0x8896('0x2a')][_0x8896('0x3a')]){_0x466238[_0x8896('0x3b')]=[{'all':!![]}];}_0x466238=_[_0x8896('0x37')]({},_0x466238,_0x40837e[_0x8896('0x39')]);return db[_0x8896('0x25')]['find'](_0x466238)[_0x8896('0x20')](handleEntityNotFound(_0x5cd6e8,null))[_0x8896('0x20')](respondWithResult(_0x5cd6e8,null))[_0x8896('0x3e')](handleError(_0x5cd6e8,null));};exports[_0x8896('0x41')]=function(_0x6e025b,_0x752a5a){return db[_0x8896('0x25')][_0x8896('0x41')](_0x6e025b[_0x8896('0x42')],{})[_0x8896('0x20')](respondWithResult(_0x752a5a,0xc9))[_0x8896('0x3e')](handleError(_0x752a5a,null));};exports[_0x8896('0x1e')]=function(_0x39be0a,_0x1e60b9){if(_0x39be0a[_0x8896('0x42')]['id']){delete _0x39be0a[_0x8896('0x42')]['id'];}return db[_0x8896('0x25')][_0x8896('0x43')]({'where':{'id':_0x39be0a['params']['id']}})['then'](handleEntityNotFound(_0x1e60b9,null))['then'](saveUpdates(_0x39be0a[_0x8896('0x42')],null))[_0x8896('0x20')](respondWithResult(_0x1e60b9,null))[_0x8896('0x3e')](handleError(_0x1e60b9,null));};exports[_0x8896('0x1f')]=function(_0x558ace,_0x52edb4){return db[_0x8896('0x25')][_0x8896('0x43')]({'where':{'id':_0x558ace[_0x8896('0x40')]['id']}})['then'](handleEntityNotFound(_0x52edb4,null))[_0x8896('0x20')](removeEntity(_0x52edb4,null))[_0x8896('0x3e')](handleError(_0x52edb4,null));};exports[_0x8896('0x44')]=function(_0x3ea7ed,_0x1d206b,_0xef1da7){var _0x87ea78={};var _0x43593e={};var _0x439608;var _0x330512;return db[_0x8896('0x25')][_0x8896('0x45')]({'where':{'id':_0x3ea7ed[_0x8896('0x40')]['id']}})[_0x8896('0x20')](handleEntityNotFound(_0x1d206b,null))[_0x8896('0x20')](function(_0xf6cd0){if(_0xf6cd0){_0x439608=_0xf6cd0;_0x43593e[_0x8896('0x2e')]=_[_0x8896('0x2b')](db['SugarcrmField'][_0x8896('0x26')]);_0x43593e[_0x8896('0x2a')]=_['keys'](_0x3ea7ed[_0x8896('0x2a')]);_0x43593e['filters']=_[_0x8896('0x2d')](_0x43593e[_0x8896('0x2e')],_0x43593e[_0x8896('0x2a')]);_0x87ea78[_0x8896('0x2f')]=_['intersection'](_0x43593e[_0x8896('0x2e')],qs[_0x8896('0x30')](_0x3ea7ed[_0x8896('0x2a')][_0x8896('0x30')]));_0x87ea78[_0x8896('0x2f')]=_0x87ea78['attributes'][_0x8896('0x31')]?_0x87ea78[_0x8896('0x2f')]:_0x43593e['model'];_0x87ea78[_0x8896('0x46')]=qs[_0x8896('0x34')](_0x3ea7ed[_0x8896('0x2a')]['sort']);_0x87ea78[_0x8896('0x35')]=qs[_0x8896('0x2c')](_[_0x8896('0x47')](_0x3ea7ed[_0x8896('0x2a')],_0x43593e['filters']));if(_0x3ea7ed[_0x8896('0x2a')]['filter']){_0x87ea78[_0x8896('0x35')]=_[_0x8896('0x37')](_0x87ea78['where'],{'$or':_[_0x8896('0x29')](_0x87ea78[_0x8896('0x2f')],function(_0x582bc9){var _0xbd45cd={};_0xbd45cd[_0x582bc9]={'$like':'%'+_0x3ea7ed[_0x8896('0x2a')][_0x8896('0x36')]+'%'};return _0xbd45cd;})});}_0x87ea78=_[_0x8896('0x37')]({},_0x87ea78,_0x3ea7ed[_0x8896('0x39')]);return _0x439608['getFields'](_0x87ea78);}})[_0x8896('0x20')](function(_0x5ecb8d){if(_0x5ecb8d){_0x330512=_0x5ecb8d['length'];if(!_0x3ea7ed[_0x8896('0x2a')][_0x8896('0x32')](_0x8896('0x33'))){_0x87ea78[_0x8896('0x19')]=qs['limit'](_0x3ea7ed[_0x8896('0x2a')]['limit']);_0x87ea78[_0x8896('0x16')]=qs[_0x8896('0x16')](_0x3ea7ed[_0x8896('0x2a')][_0x8896('0x16')]);}return _0x439608[_0x8896('0x44')](_0x87ea78);}})[_0x8896('0x20')](function(_0x2d64a7){if(_0x2d64a7){return _0x2d64a7?{'count':_0x330512,'rows':_0x2d64a7}:null;}})[_0x8896('0x20')](respondWithResult(_0x1d206b,null))['catch'](handleError(_0x1d206b,null));};exports[_0x8896('0x48')]=function(_0x483c29,_0xdbc23e,_0x22dcae){var _0x256aed={};var _0xd9b909={};var _0x3baa43;var _0x582747;return db['SugarcrmConfiguration'][_0x8896('0x45')]({'where':{'id':_0x483c29[_0x8896('0x40')]['id']}})['then'](handleEntityNotFound(_0xdbc23e,null))[_0x8896('0x20')](function(_0x53b89e){if(_0x53b89e){_0x3baa43=_0x53b89e;_0xd9b909[_0x8896('0x2e')]=_[_0x8896('0x2b')](db['SugarcrmField'][_0x8896('0x26')]);_0xd9b909[_0x8896('0x2a')]=_[_0x8896('0x2b')](_0x483c29['query']);_0xd9b909[_0x8896('0x2c')]=_[_0x8896('0x2d')](_0xd9b909[_0x8896('0x2e')],_0xd9b909[_0x8896('0x2a')]);_0x256aed['attributes']=_[_0x8896('0x2d')](_0xd9b909[_0x8896('0x2e')],qs[_0x8896('0x30')](_0x483c29[_0x8896('0x2a')][_0x8896('0x30')]));_0x256aed[_0x8896('0x2f')]=_0x256aed[_0x8896('0x2f')][_0x8896('0x31')]?_0x256aed[_0x8896('0x2f')]:_0xd9b909[_0x8896('0x2e')];_0x256aed['order']=qs[_0x8896('0x34')](_0x483c29[_0x8896('0x2a')]['sort']);_0x256aed[_0x8896('0x35')]=qs[_0x8896('0x2c')](_[_0x8896('0x47')](_0x483c29['query'],_0xd9b909['filters']));if(_0x483c29[_0x8896('0x2a')]['filter']){_0x256aed[_0x8896('0x35')]=_['merge'](_0x256aed[_0x8896('0x35')],{'$or':_[_0x8896('0x29')](_0x256aed[_0x8896('0x2f')],function(_0x2a6e36){var _0x2df02f={};_0x2df02f[_0x2a6e36]={'$like':'%'+_0x483c29['query'][_0x8896('0x36')]+'%'};return _0x2df02f;})});}_0x256aed=_[_0x8896('0x37')]({},_0x256aed,_0x483c29[_0x8896('0x39')]);return _0x3baa43['getSubjects'](_0x256aed);}})[_0x8896('0x20')](function(_0x32c36f){if(_0x32c36f){_0x582747=_0x32c36f['length'];if(!_0x483c29['query'][_0x8896('0x32')](_0x8896('0x33'))){_0x256aed['limit']=qs['limit'](_0x483c29[_0x8896('0x2a')][_0x8896('0x19')]);_0x256aed['offset']=qs['offset'](_0x483c29[_0x8896('0x2a')][_0x8896('0x16')]);}return _0x3baa43[_0x8896('0x48')](_0x256aed);}})[_0x8896('0x20')](function(_0xa6381b){if(_0xa6381b){return _0xa6381b?{'count':_0x582747,'rows':_0xa6381b}:null;}})['then'](respondWithResult(_0xdbc23e,null))[_0x8896('0x3e')](handleError(_0xdbc23e,null));};exports[_0x8896('0x49')]=function(_0x4386f6,_0x189ed3,_0xd9f16f){var _0x1c48ad={};var _0x4534d2={};var _0x3a7a28;var _0x22f5e9;return db[_0x8896('0x25')]['findOne']({'where':{'id':_0x4386f6['params']['id']}})[_0x8896('0x20')](handleEntityNotFound(_0x189ed3,null))['then'](function(_0x1e73ad){if(_0x1e73ad){_0x3a7a28=_0x1e73ad;_0x4534d2[_0x8896('0x2e')]=_['keys'](db[_0x8896('0x4a')][_0x8896('0x26')]);_0x4534d2[_0x8896('0x2a')]=_[_0x8896('0x2b')](_0x4386f6[_0x8896('0x2a')]);_0x4534d2[_0x8896('0x2c')]=_[_0x8896('0x2d')](_0x4534d2[_0x8896('0x2e')],_0x4534d2[_0x8896('0x2a')]);_0x1c48ad[_0x8896('0x2f')]=_[_0x8896('0x2d')](_0x4534d2[_0x8896('0x2e')],qs[_0x8896('0x30')](_0x4386f6[_0x8896('0x2a')][_0x8896('0x30')]));_0x1c48ad[_0x8896('0x2f')]=_0x1c48ad[_0x8896('0x2f')][_0x8896('0x31')]?_0x1c48ad[_0x8896('0x2f')]:_0x4534d2['model'];_0x1c48ad[_0x8896('0x46')]=qs[_0x8896('0x34')](_0x4386f6[_0x8896('0x2a')][_0x8896('0x34')]);_0x1c48ad[_0x8896('0x35')]=qs['filters'](_['pick'](_0x4386f6[_0x8896('0x2a')],_0x4534d2[_0x8896('0x2c')]));if(_0x4386f6[_0x8896('0x2a')][_0x8896('0x36')]){_0x1c48ad['where']=_[_0x8896('0x37')](_0x1c48ad[_0x8896('0x35')],{'$or':_[_0x8896('0x29')](_0x1c48ad[_0x8896('0x2f')],function(_0x48b212){var _0x164a53={};_0x164a53[_0x48b212]={'$like':'%'+_0x4386f6[_0x8896('0x2a')][_0x8896('0x36')]+'%'};return _0x164a53;})});}_0x1c48ad=_[_0x8896('0x37')]({},_0x1c48ad,_0x4386f6[_0x8896('0x39')]);return _0x3a7a28[_0x8896('0x49')](_0x1c48ad);}})[_0x8896('0x20')](function(_0x263813){if(_0x263813){_0x22f5e9=_0x263813['length'];if(!_0x4386f6[_0x8896('0x2a')]['hasOwnProperty'](_0x8896('0x33'))){_0x1c48ad[_0x8896('0x19')]=qs[_0x8896('0x19')](_0x4386f6['query'][_0x8896('0x19')]);_0x1c48ad['offset']=qs['offset'](_0x4386f6[_0x8896('0x2a')]['offset']);}return _0x3a7a28[_0x8896('0x49')](_0x1c48ad);}})[_0x8896('0x20')](function(_0x4f5d2a){if(_0x4f5d2a){return _0x4f5d2a?{'count':_0x22f5e9,'rows':_0x4f5d2a}:null;}})[_0x8896('0x20')](respondWithResult(_0x189ed3,null))[_0x8896('0x3e')](handleError(_0x189ed3,null));};
\ No newline at end of file
+var _0xcddd=['attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','then','includeAll','findAll','rows','catch','show','params','keys','intersection','include','options','create','body','find','getFields','SugarcrmField','nolimit','getSubjects','findOne','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','reject','save','update','destroy','error','stack','name','send','index','map','SugarcrmConfiguration','rawAttributes','type','key','query','filters','model','fields'];(function(_0x5f2be0,_0x51db27){var _0x42ec6c=function(_0x46d7e4){while(--_0x46d7e4){_0x5f2be0['push'](_0x5f2be0['shift']());}};_0x42ec6c(++_0x51db27);}(_0xcddd,0x11a));var _0xdcdd=function(_0x537e14,_0x1b9862){_0x537e14=_0x537e14-0x0;var _0x4aa2a3=_0xcddd[_0x537e14];return _0x4aa2a3;};'use strict';var emlformat=require(_0xdcdd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdcdd('0x1'));var jsonpatch=require(_0xdcdd('0x2'));var rp=require(_0xdcdd('0x3'));var moment=require(_0xdcdd('0x4'));var BPromise=require(_0xdcdd('0x5'));var Mustache=require(_0xdcdd('0x6'));var util=require(_0xdcdd('0x7'));var path=require(_0xdcdd('0x8'));var sox=require(_0xdcdd('0x9'));var csv=require(_0xdcdd('0xa'));var ejs=require(_0xdcdd('0xb'));var fs=require('fs');var fs_extra=require(_0xdcdd('0xc'));var _=require(_0xdcdd('0xd'));var squel=require(_0xdcdd('0xe'));var crypto=require(_0xdcdd('0xf'));var jsforce=require(_0xdcdd('0x10'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xdcdd('0x11'));var Papa=require('papaparse');var Redis=require(_0xdcdd('0x12'));var authService=require(_0xdcdd('0x13'));var qs=require(_0xdcdd('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdcdd('0x15'));var logger=require(_0xdcdd('0x16'))(_0xdcdd('0x17'));var utils=require(_0xdcdd('0x18'));var config=require(_0xdcdd('0x19'));var licenseUtil=require(_0xdcdd('0x1a'));var db=require(_0xdcdd('0x1b'))['db'];function respondWithStatusCode(_0xa289ba,_0x5caf13){_0x5caf13=_0x5caf13||0xcc;return function(_0x44aa48){if(_0x44aa48){return _0xa289ba[_0xdcdd('0x1c')](_0x5caf13);}return _0xa289ba[_0xdcdd('0x1d')](_0x5caf13)[_0xdcdd('0x1e')]();};}function respondWithResult(_0x1c4ca5,_0x36bbba){_0x36bbba=_0x36bbba||0xc8;return function(_0x121f3c){if(_0x121f3c){return _0x1c4ca5['status'](_0x36bbba)[_0xdcdd('0x1f')](_0x121f3c);}};}function respondWithFilteredResult(_0x2931e1,_0x2a9650){return function(_0x1d137c){if(_0x1d137c){var _0x300c80=typeof _0x2a9650[_0xdcdd('0x20')]==='undefined'&&typeof _0x2a9650['limit']===_0xdcdd('0x21');var _0x1638a4=_0x1d137c[_0xdcdd('0x22')];var _0x4c4d37=_0x300c80?0x0:_0x2a9650[_0xdcdd('0x20')];var _0x22aadd=_0x300c80?_0x1d137c[_0xdcdd('0x22')]:_0x2a9650['offset']+_0x2a9650[_0xdcdd('0x23')];var _0x139dde;if(_0x22aadd>=_0x1638a4){_0x22aadd=_0x1638a4;_0x139dde=0xc8;}else{_0x139dde=0xce;}_0x2931e1['status'](_0x139dde);return _0x2931e1['set']('Content-Range',_0x4c4d37+'-'+_0x22aadd+'/'+_0x1638a4)[_0xdcdd('0x1f')](_0x1d137c);}return null;};}function patchUpdates(_0x7f93ee){return function(_0x2e0714){try{jsonpatch['apply'](_0x2e0714,_0x7f93ee,!![]);}catch(_0x4c1bee){return BPromise[_0xdcdd('0x24')](_0x4c1bee);}return _0x2e0714[_0xdcdd('0x25')]();};}function saveUpdates(_0x258dd4,_0x29a6e8){return function(_0x3c3686){if(_0x3c3686){return _0x3c3686[_0xdcdd('0x26')](_0x258dd4)['then'](function(_0x40c4d4){return _0x40c4d4;});}return null;};}function removeEntity(_0x4b8879,_0x3965ff){return function(_0x51ad77){if(_0x51ad77){return _0x51ad77[_0xdcdd('0x27')]()['then'](function(){_0x4b8879[_0xdcdd('0x1d')](0xcc)[_0xdcdd('0x1e')]();});}};}function handleEntityNotFound(_0x447492,_0x4d96a8){return function(_0x5f0464){if(!_0x5f0464){_0x447492['sendStatus'](0x194);}return _0x5f0464;};}function handleError(_0x17924f,_0x2df912){_0x2df912=_0x2df912||0x1f4;return function(_0x18cdb3){logger[_0xdcdd('0x28')](_0x18cdb3[_0xdcdd('0x29')]);if(_0x18cdb3[_0xdcdd('0x2a')]){delete _0x18cdb3[_0xdcdd('0x2a')];}_0x17924f[_0xdcdd('0x1d')](_0x2df912)[_0xdcdd('0x2b')](_0x18cdb3);};}exports[_0xdcdd('0x2c')]=function(_0x30f341,_0x15c11c){var _0x2e867c={},_0x4cb29e={},_0x2c8891={'count':0x0,'rows':[]};var _0x40a94f=_[_0xdcdd('0x2d')](db[_0xdcdd('0x2e')][_0xdcdd('0x2f')],function(_0x5af2d5){return{'name':_0x5af2d5['fieldName'],'type':_0x5af2d5[_0xdcdd('0x30')][_0xdcdd('0x31')]};});_0x4cb29e['model']=_[_0xdcdd('0x2d')](_0x40a94f,_0xdcdd('0x2a'));_0x4cb29e['query']=_['keys'](_0x30f341[_0xdcdd('0x32')]);_0x4cb29e[_0xdcdd('0x33')]=_['intersection'](_0x4cb29e['model'],_0x4cb29e[_0xdcdd('0x32')]);_0x2e867c['attributes']=_['intersection'](_0x4cb29e[_0xdcdd('0x34')],qs[_0xdcdd('0x35')](_0x30f341[_0xdcdd('0x32')][_0xdcdd('0x35')]));_0x2e867c[_0xdcdd('0x36')]=_0x2e867c[_0xdcdd('0x36')][_0xdcdd('0x37')]?_0x2e867c['attributes']:_0x4cb29e[_0xdcdd('0x34')];if(!_0x30f341[_0xdcdd('0x32')][_0xdcdd('0x38')]('nolimit')){_0x2e867c[_0xdcdd('0x23')]=qs[_0xdcdd('0x23')](_0x30f341['query'][_0xdcdd('0x23')]);_0x2e867c['offset']=qs[_0xdcdd('0x20')](_0x30f341[_0xdcdd('0x32')][_0xdcdd('0x20')]);}_0x2e867c[_0xdcdd('0x39')]=qs[_0xdcdd('0x3a')](_0x30f341[_0xdcdd('0x32')][_0xdcdd('0x3a')]);_0x2e867c[_0xdcdd('0x3b')]=qs[_0xdcdd('0x33')](_[_0xdcdd('0x3c')](_0x30f341[_0xdcdd('0x32')],_0x4cb29e['filters']),_0x40a94f);if(_0x30f341[_0xdcdd('0x32')][_0xdcdd('0x3d')]){_0x2e867c[_0xdcdd('0x3b')]=_[_0xdcdd('0x3e')](_0x2e867c[_0xdcdd('0x3b')],{'$or':_[_0xdcdd('0x2d')](_0x40a94f,function(_0x4cafd7){if(_0x4cafd7[_0xdcdd('0x30')]!==_0xdcdd('0x3f')){var _0x3e2688={};_0x3e2688[_0x4cafd7[_0xdcdd('0x2a')]]={'$like':'%'+_0x30f341[_0xdcdd('0x32')][_0xdcdd('0x3d')]+'%'};return _0x3e2688;}})});}_0x2e867c=_[_0xdcdd('0x3e')]({},_0x2e867c,_0x30f341['options']);var _0x3ef092={'where':_0x2e867c['where']};return db[_0xdcdd('0x2e')]['count'](_0x3ef092)[_0xdcdd('0x40')](function(_0xfb5727){_0x2c8891['count']=_0xfb5727;if(_0x30f341[_0xdcdd('0x32')][_0xdcdd('0x41')]){_0x2e867c['include']=[{'all':!![]}];}return db[_0xdcdd('0x2e')][_0xdcdd('0x42')](_0x2e867c);})[_0xdcdd('0x40')](function(_0x52bb52){_0x2c8891[_0xdcdd('0x43')]=_0x52bb52;return _0x2c8891;})[_0xdcdd('0x40')](respondWithFilteredResult(_0x15c11c,_0x2e867c))[_0xdcdd('0x44')](handleError(_0x15c11c,null));};exports[_0xdcdd('0x45')]=function(_0x4c6bcb,_0xfe00ec){var _0x3e575a={'raw':![],'where':{'id':_0x4c6bcb[_0xdcdd('0x46')]['id']}},_0xcd4956={};_0xcd4956['model']=_[_0xdcdd('0x47')](db[_0xdcdd('0x2e')][_0xdcdd('0x2f')]);_0xcd4956['query']=_['keys'](_0x4c6bcb[_0xdcdd('0x32')]);_0xcd4956[_0xdcdd('0x33')]=_[_0xdcdd('0x48')](_0xcd4956[_0xdcdd('0x34')],_0xcd4956[_0xdcdd('0x32')]);_0x3e575a[_0xdcdd('0x36')]=_[_0xdcdd('0x48')](_0xcd4956[_0xdcdd('0x34')],qs['fields'](_0x4c6bcb['query'][_0xdcdd('0x35')]));_0x3e575a['attributes']=_0x3e575a[_0xdcdd('0x36')][_0xdcdd('0x37')]?_0x3e575a[_0xdcdd('0x36')]:_0xcd4956[_0xdcdd('0x34')];if(_0x4c6bcb[_0xdcdd('0x32')][_0xdcdd('0x41')]){_0x3e575a[_0xdcdd('0x49')]=[{'all':!![]}];}_0x3e575a=_['merge']({},_0x3e575a,_0x4c6bcb[_0xdcdd('0x4a')]);return db[_0xdcdd('0x2e')]['find'](_0x3e575a)[_0xdcdd('0x40')](handleEntityNotFound(_0xfe00ec,null))[_0xdcdd('0x40')](respondWithResult(_0xfe00ec,null))[_0xdcdd('0x44')](handleError(_0xfe00ec,null));};exports[_0xdcdd('0x4b')]=function(_0xeee344,_0x502dc8){return db[_0xdcdd('0x2e')][_0xdcdd('0x4b')](_0xeee344['body'],{})[_0xdcdd('0x40')](respondWithResult(_0x502dc8,0xc9))[_0xdcdd('0x44')](handleError(_0x502dc8,null));};exports[_0xdcdd('0x26')]=function(_0x39fc7e,_0x3ae11e){if(_0x39fc7e[_0xdcdd('0x4c')]['id']){delete _0x39fc7e['body']['id'];}return db[_0xdcdd('0x2e')]['find']({'where':{'id':_0x39fc7e[_0xdcdd('0x46')]['id']}})['then'](handleEntityNotFound(_0x3ae11e,null))[_0xdcdd('0x40')](saveUpdates(_0x39fc7e[_0xdcdd('0x4c')],null))['then'](respondWithResult(_0x3ae11e,null))[_0xdcdd('0x44')](handleError(_0x3ae11e,null));};exports[_0xdcdd('0x27')]=function(_0x240246,_0x417583){return db[_0xdcdd('0x2e')][_0xdcdd('0x4d')]({'where':{'id':_0x240246[_0xdcdd('0x46')]['id']}})[_0xdcdd('0x40')](handleEntityNotFound(_0x417583,null))['then'](removeEntity(_0x417583,null))[_0xdcdd('0x44')](handleError(_0x417583,null));};exports[_0xdcdd('0x4e')]=function(_0x4ace7d,_0x1f11e1,_0x4beaf5){var _0x2192fb={};var _0x2b2ac8={};var _0x3d464c;var _0xb5732;return db[_0xdcdd('0x2e')]['findOne']({'where':{'id':_0x4ace7d[_0xdcdd('0x46')]['id']}})[_0xdcdd('0x40')](handleEntityNotFound(_0x1f11e1,null))[_0xdcdd('0x40')](function(_0x3cb872){if(_0x3cb872){_0x3d464c=_0x3cb872;_0x2b2ac8[_0xdcdd('0x34')]=_[_0xdcdd('0x47')](db[_0xdcdd('0x4f')][_0xdcdd('0x2f')]);_0x2b2ac8['query']=_[_0xdcdd('0x47')](_0x4ace7d['query']);_0x2b2ac8[_0xdcdd('0x33')]=_['intersection'](_0x2b2ac8[_0xdcdd('0x34')],_0x2b2ac8[_0xdcdd('0x32')]);_0x2192fb['attributes']=_[_0xdcdd('0x48')](_0x2b2ac8[_0xdcdd('0x34')],qs[_0xdcdd('0x35')](_0x4ace7d[_0xdcdd('0x32')][_0xdcdd('0x35')]));_0x2192fb[_0xdcdd('0x36')]=_0x2192fb[_0xdcdd('0x36')][_0xdcdd('0x37')]?_0x2192fb[_0xdcdd('0x36')]:_0x2b2ac8[_0xdcdd('0x34')];_0x2192fb[_0xdcdd('0x39')]=qs[_0xdcdd('0x3a')](_0x4ace7d[_0xdcdd('0x32')][_0xdcdd('0x3a')]);_0x2192fb['where']=qs[_0xdcdd('0x33')](_[_0xdcdd('0x3c')](_0x4ace7d['query'],_0x2b2ac8[_0xdcdd('0x33')]));if(_0x4ace7d[_0xdcdd('0x32')][_0xdcdd('0x3d')]){_0x2192fb[_0xdcdd('0x3b')]=_[_0xdcdd('0x3e')](_0x2192fb[_0xdcdd('0x3b')],{'$or':_[_0xdcdd('0x2d')](_0x2192fb[_0xdcdd('0x36')],function(_0x179102){var _0x1ab061={};_0x1ab061[_0x179102]={'$like':'%'+_0x4ace7d[_0xdcdd('0x32')][_0xdcdd('0x3d')]+'%'};return _0x1ab061;})});}_0x2192fb=_[_0xdcdd('0x3e')]({},_0x2192fb,_0x4ace7d[_0xdcdd('0x4a')]);return _0x3d464c[_0xdcdd('0x4e')](_0x2192fb);}})[_0xdcdd('0x40')](function(_0x4be62c){if(_0x4be62c){_0xb5732=_0x4be62c[_0xdcdd('0x37')];if(!_0x4ace7d[_0xdcdd('0x32')][_0xdcdd('0x38')](_0xdcdd('0x50'))){_0x2192fb[_0xdcdd('0x23')]=qs[_0xdcdd('0x23')](_0x4ace7d[_0xdcdd('0x32')][_0xdcdd('0x23')]);_0x2192fb['offset']=qs[_0xdcdd('0x20')](_0x4ace7d['query'][_0xdcdd('0x20')]);}return _0x3d464c['getFields'](_0x2192fb);}})[_0xdcdd('0x40')](function(_0x56e983){if(_0x56e983){return _0x56e983?{'count':_0xb5732,'rows':_0x56e983}:null;}})[_0xdcdd('0x40')](respondWithResult(_0x1f11e1,null))[_0xdcdd('0x44')](handleError(_0x1f11e1,null));};exports['getSubjects']=function(_0xfb26b2,_0x32ddf6,_0x55f7d8){var _0x451b6f={};var _0x209874={};var _0x59d801;var _0x189629;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0xfb26b2[_0xdcdd('0x46')]['id']}})[_0xdcdd('0x40')](handleEntityNotFound(_0x32ddf6,null))[_0xdcdd('0x40')](function(_0x437364){if(_0x437364){_0x59d801=_0x437364;_0x209874['model']=_[_0xdcdd('0x47')](db[_0xdcdd('0x4f')][_0xdcdd('0x2f')]);_0x209874[_0xdcdd('0x32')]=_['keys'](_0xfb26b2[_0xdcdd('0x32')]);_0x209874[_0xdcdd('0x33')]=_[_0xdcdd('0x48')](_0x209874[_0xdcdd('0x34')],_0x209874[_0xdcdd('0x32')]);_0x451b6f['attributes']=_[_0xdcdd('0x48')](_0x209874[_0xdcdd('0x34')],qs[_0xdcdd('0x35')](_0xfb26b2[_0xdcdd('0x32')][_0xdcdd('0x35')]));_0x451b6f[_0xdcdd('0x36')]=_0x451b6f[_0xdcdd('0x36')]['length']?_0x451b6f[_0xdcdd('0x36')]:_0x209874[_0xdcdd('0x34')];_0x451b6f[_0xdcdd('0x39')]=qs[_0xdcdd('0x3a')](_0xfb26b2[_0xdcdd('0x32')][_0xdcdd('0x3a')]);_0x451b6f[_0xdcdd('0x3b')]=qs[_0xdcdd('0x33')](_[_0xdcdd('0x3c')](_0xfb26b2[_0xdcdd('0x32')],_0x209874[_0xdcdd('0x33')]));if(_0xfb26b2[_0xdcdd('0x32')][_0xdcdd('0x3d')]){_0x451b6f[_0xdcdd('0x3b')]=_[_0xdcdd('0x3e')](_0x451b6f[_0xdcdd('0x3b')],{'$or':_[_0xdcdd('0x2d')](_0x451b6f[_0xdcdd('0x36')],function(_0x83c4c9){var _0x10c725={};_0x10c725[_0x83c4c9]={'$like':'%'+_0xfb26b2[_0xdcdd('0x32')][_0xdcdd('0x3d')]+'%'};return _0x10c725;})});}_0x451b6f=_[_0xdcdd('0x3e')]({},_0x451b6f,_0xfb26b2[_0xdcdd('0x4a')]);return _0x59d801[_0xdcdd('0x51')](_0x451b6f);}})['then'](function(_0x130574){if(_0x130574){_0x189629=_0x130574[_0xdcdd('0x37')];if(!_0xfb26b2[_0xdcdd('0x32')][_0xdcdd('0x38')](_0xdcdd('0x50'))){_0x451b6f[_0xdcdd('0x23')]=qs['limit'](_0xfb26b2[_0xdcdd('0x32')]['limit']);_0x451b6f[_0xdcdd('0x20')]=qs[_0xdcdd('0x20')](_0xfb26b2[_0xdcdd('0x32')][_0xdcdd('0x20')]);}return _0x59d801[_0xdcdd('0x51')](_0x451b6f);}})['then'](function(_0x319263){if(_0x319263){return _0x319263?{'count':_0x189629,'rows':_0x319263}:null;}})[_0xdcdd('0x40')](respondWithResult(_0x32ddf6,null))[_0xdcdd('0x44')](handleError(_0x32ddf6,null));};exports['getDescriptions']=function(_0x23c68b,_0x2f7cea,_0x3df220){var _0x308f8e={};var _0x817e4d={};var _0x29a184;var _0x200116;return db[_0xdcdd('0x2e')][_0xdcdd('0x52')]({'where':{'id':_0x23c68b[_0xdcdd('0x46')]['id']}})[_0xdcdd('0x40')](handleEntityNotFound(_0x2f7cea,null))[_0xdcdd('0x40')](function(_0xdd4686){if(_0xdd4686){_0x29a184=_0xdd4686;_0x817e4d['model']=_[_0xdcdd('0x47')](db[_0xdcdd('0x4f')][_0xdcdd('0x2f')]);_0x817e4d[_0xdcdd('0x32')]=_[_0xdcdd('0x47')](_0x23c68b[_0xdcdd('0x32')]);_0x817e4d[_0xdcdd('0x33')]=_[_0xdcdd('0x48')](_0x817e4d[_0xdcdd('0x34')],_0x817e4d['query']);_0x308f8e[_0xdcdd('0x36')]=_[_0xdcdd('0x48')](_0x817e4d[_0xdcdd('0x34')],qs[_0xdcdd('0x35')](_0x23c68b['query'][_0xdcdd('0x35')]));_0x308f8e['attributes']=_0x308f8e[_0xdcdd('0x36')]['length']?_0x308f8e[_0xdcdd('0x36')]:_0x817e4d[_0xdcdd('0x34')];_0x308f8e[_0xdcdd('0x39')]=qs[_0xdcdd('0x3a')](_0x23c68b['query'][_0xdcdd('0x3a')]);_0x308f8e[_0xdcdd('0x3b')]=qs[_0xdcdd('0x33')](_[_0xdcdd('0x3c')](_0x23c68b[_0xdcdd('0x32')],_0x817e4d[_0xdcdd('0x33')]));if(_0x23c68b['query']['filter']){_0x308f8e[_0xdcdd('0x3b')]=_['merge'](_0x308f8e['where'],{'$or':_[_0xdcdd('0x2d')](_0x308f8e[_0xdcdd('0x36')],function(_0x1f7680){var _0x1fccc2={};_0x1fccc2[_0x1f7680]={'$like':'%'+_0x23c68b[_0xdcdd('0x32')][_0xdcdd('0x3d')]+'%'};return _0x1fccc2;})});}_0x308f8e=_['merge']({},_0x308f8e,_0x23c68b[_0xdcdd('0x4a')]);return _0x29a184[_0xdcdd('0x53')](_0x308f8e);}})[_0xdcdd('0x40')](function(_0x9e90eb){if(_0x9e90eb){_0x200116=_0x9e90eb[_0xdcdd('0x37')];if(!_0x23c68b[_0xdcdd('0x32')]['hasOwnProperty'](_0xdcdd('0x50'))){_0x308f8e[_0xdcdd('0x23')]=qs[_0xdcdd('0x23')](_0x23c68b[_0xdcdd('0x32')][_0xdcdd('0x23')]);_0x308f8e[_0xdcdd('0x20')]=qs[_0xdcdd('0x20')](_0x23c68b['query'][_0xdcdd('0x20')]);}return _0x29a184[_0xdcdd('0x53')](_0x308f8e);}})[_0xdcdd('0x40')](function(_0x4a7593){if(_0x4a7593){return _0x4a7593?{'count':_0x200116,'rows':_0x4a7593}:null;}})[_0xdcdd('0x40')](respondWithResult(_0x2f7cea,null))[_0xdcdd('0x44')](handleError(_0x2f7cea,null));};
\ No newline at end of file
index 485e52b..af52da0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35d0=['util','../../config/logger','moment','request-promise','rimraf','../../config/environment','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash'];(function(_0x37a3f3,_0x663b49){var _0x4da923=function(_0x47713f){while(--_0x47713f){_0x37a3f3['push'](_0x37a3f3['shift']());}};_0x4da923(++_0x663b49);}(_0x35d0,0x9f));var _0x035d=function(_0x3e32a8,_0x255953){_0x3e32a8=_0x3e32a8-0x0;var _0x2997b0=_0x35d0[_0x3e32a8];return _0x2997b0;};'use strict';var _=require(_0x035d('0x0'));var util=require(_0x035d('0x1'));var logger=require(_0x035d('0x2'))('api');var moment=require(_0x035d('0x3'));var BPromise=require('bluebird');var rp=require(_0x035d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x035d('0x5'));var config=require(_0x035d('0x6'));var attributes=require('./intSugarcrmConfiguration.attributes');module['exports']=function(_0x28c40e,_0x1f0121){return _0x28c40e[_0x035d('0x7')](_0x035d('0x8'),attributes,{'tableName':_0x035d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xebbb=['exports','define','int_sugarcrm_configurations','lodash','util','../../config/logger','api','moment','../../config/environment','./intSugarcrmConfiguration.attributes'];(function(_0x510b78,_0x3c5184){var _0x2e166d=function(_0x3497f0){while(--_0x3497f0){_0x510b78['push'](_0x510b78['shift']());}};_0x2e166d(++_0x3c5184);}(_0xebbb,0x175));var _0xbebb=function(_0xd0e677,_0x5e6d06){_0xd0e677=_0xd0e677-0x0;var _0x5873e4=_0xebbb[_0xd0e677];return _0x5873e4;};'use strict';var _=require(_0xbebb('0x0'));var util=require(_0xbebb('0x1'));var logger=require(_0xbebb('0x2'))(_0xbebb('0x3'));var moment=require(_0xbebb('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xbebb('0x5'));var attributes=require(_0xbebb('0x6'));module[_0xbebb('0x7')]=function(_0x1d9cb5,_0x1b294d){return _0x1d9cb5[_0xbebb('0x8')]('SugarcrmConfiguration',attributes,{'tableName':_0xbebb('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 54ae286..d85172e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7488=['code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','http','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x4dcdf8,_0x2c7aab){var _0x5f0590=function(_0x30baa5){while(--_0x30baa5){_0x4dcdf8['push'](_0x4dcdf8['shift']());}};_0x5f0590(++_0x2c7aab);}(_0x7488,0x82));var _0x8748=function(_0x439660,_0x3e13d3){_0x439660=_0x439660-0x0;var _0x2fa049=_0x7488[_0x439660];return _0x2fa049;};'use strict';var _=require(_0x8748('0x0'));var util=require(_0x8748('0x1'));var moment=require(_0x8748('0x2'));var BPromise=require(_0x8748('0x3'));var rs=require(_0x8748('0x4'));var fs=require('fs');var Redis=require(_0x8748('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8748('0x6'))(_0x8748('0x7'));var config=require('../../config/environment');var jayson=require(_0x8748('0x8'));var client=jayson[_0x8748('0x9')][_0x8748('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x321360,_0x820217,_0x467053){return new BPromise(function(_0x5ab813,_0x1a3506){return client['request'](_0x321360,_0x467053)[_0x8748('0xb')](function(_0x3bf5b7){logger[_0x8748('0xc')](_0x8748('0xd'),_0x820217,_0x8748('0xe'));logger['debug']('SugarcrmConfiguration,\x20%s,\x20%s,\x20%s',_0x820217,_0x8748('0xe'),JSON[_0x8748('0xf')](_0x3bf5b7));if(_0x3bf5b7[_0x8748('0x10')]){if(_0x3bf5b7[_0x8748('0x10')][_0x8748('0x11')]===0x1f4){logger[_0x8748('0x10')](_0x8748('0xd'),_0x820217,_0x3bf5b7[_0x8748('0x10')][_0x8748('0x12')]);return _0x1a3506(_0x3bf5b7[_0x8748('0x10')]['message']);}logger[_0x8748('0x10')](_0x8748('0xd'),_0x820217,_0x3bf5b7['error']['message']);return _0x5ab813(_0x3bf5b7[_0x8748('0x10')]['message']);}else{logger[_0x8748('0xc')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x820217,_0x8748('0xe'));_0x5ab813(_0x3bf5b7[_0x8748('0x13')][_0x8748('0x12')]);}})[_0x8748('0x14')](function(_0x9aecc2){logger['error'](_0x8748('0xd'),_0x820217,_0x9aecc2);_0x1a3506(_0x9aecc2);});});}
\ No newline at end of file
+var _0xec94=['randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird'];(function(_0x423375,_0xadf775){var _0x5cbf9c=function(_0x1d4e19){while(--_0x1d4e19){_0x423375['push'](_0x423375['shift']());}};_0x5cbf9c(++_0xadf775);}(_0xec94,0xa8));var _0x4ec9=function(_0x3d4bb6,_0x2946fe){_0x3d4bb6=_0x3d4bb6-0x0;var _0x48fcf9=_0xec94[_0x3d4bb6];return _0x48fcf9;};'use strict';var _=require(_0x4ec9('0x0'));var util=require('util');var moment=require(_0x4ec9('0x1'));var BPromise=require(_0x4ec9('0x2'));var rs=require(_0x4ec9('0x3'));var fs=require('fs');var Redis=require(_0x4ec9('0x4'));var db=require(_0x4ec9('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x4ec9('0x6'));var config=require(_0x4ec9('0x7'));var jayson=require(_0x4ec9('0x8'));var client=jayson['client'][_0x4ec9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5537a7,_0x364edd,_0x334a25){return new BPromise(function(_0x360513,_0x3e4b90){return client[_0x4ec9('0xa')](_0x5537a7,_0x334a25)['then'](function(_0x3d4b3a){logger['info'](_0x4ec9('0xb'),_0x364edd,_0x4ec9('0xc'));logger['debug'](_0x4ec9('0xd'),_0x364edd,_0x4ec9('0xc'),JSON[_0x4ec9('0xe')](_0x3d4b3a));if(_0x3d4b3a[_0x4ec9('0xf')]){if(_0x3d4b3a[_0x4ec9('0xf')]['code']===0x1f4){logger[_0x4ec9('0xf')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x364edd,_0x3d4b3a[_0x4ec9('0xf')][_0x4ec9('0x10')]);return _0x3e4b90(_0x3d4b3a['error']['message']);}logger[_0x4ec9('0xf')](_0x4ec9('0xb'),_0x364edd,_0x3d4b3a[_0x4ec9('0xf')][_0x4ec9('0x10')]);return _0x360513(_0x3d4b3a[_0x4ec9('0xf')][_0x4ec9('0x10')]);}else{logger['info'](_0x4ec9('0xb'),_0x364edd,_0x4ec9('0xc'));_0x360513(_0x3d4b3a[_0x4ec9('0x11')][_0x4ec9('0x10')]);}})[_0x4ec9('0x12')](function(_0x22c46d){logger[_0x4ec9('0xf')](_0x4ec9('0xb'),_0x364edd,_0x22c46d);_0x3e4b90(_0x22c46d);});});}
\ No newline at end of file
index f4db44e..4089243 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43a2=['../../components/interaction/service','../../config/environment','./intSugarcrmField.controller','get','isAuthenticated','/:id','show','post','create','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x2f66bf,_0x18758f){var _0x52e014=function(_0xe6c6d4){while(--_0xe6c6d4){_0x2f66bf['push'](_0x2f66bf['shift']());}};_0x52e014(++_0x18758f);}(_0x43a2,0x162));var _0x243a=function(_0x3e44bb,_0x4f32af){_0x3e44bb=_0x3e44bb-0x0;var _0x6bd5a7=_0x43a2[_0x3e44bb];return _0x6bd5a7;};'use strict';var multer=require(_0x243a('0x0'));var util=require('util');var path=require(_0x243a('0x1'));var timeout=require(_0x243a('0x2'));var express=require(_0x243a('0x3'));var router=express[_0x243a('0x4')]();var fs_extra=require(_0x243a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x243a('0x6'));var config=require(_0x243a('0x7'));var controller=require(_0x243a('0x8'));router[_0x243a('0x9')]('/',auth[_0x243a('0xa')](),controller['index']);router['get'](_0x243a('0xb'),auth[_0x243a('0xa')](),controller[_0x243a('0xc')]);router[_0x243a('0xd')]('/',auth[_0x243a('0xa')](),controller[_0x243a('0xe')]);router['put'](_0x243a('0xb'),auth['isAuthenticated'](),controller[_0x243a('0xf')]);router[_0x243a('0x10')](_0x243a('0xb'),auth[_0x243a('0xa')](),controller['destroy']);module[_0x243a('0x11')]=router;
\ No newline at end of file
+var _0x0e48=['index','/:id','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','./intSugarcrmField.controller','get','isAuthenticated'];(function(_0x5a6cef,_0x1697df){var _0x37f76f=function(_0x17dc71){while(--_0x17dc71){_0x5a6cef['push'](_0x5a6cef['shift']());}};_0x37f76f(++_0x1697df);}(_0x0e48,0xb4));var _0x80e4=function(_0x2ae4bb,_0x502363){_0x2ae4bb=_0x2ae4bb-0x0;var _0xbc0d1f=_0x0e48[_0x2ae4bb];return _0xbc0d1f;};'use strict';var multer=require(_0x80e4('0x0'));var util=require(_0x80e4('0x1'));var path=require(_0x80e4('0x2'));var timeout=require(_0x80e4('0x3'));var express=require(_0x80e4('0x4'));var router=express[_0x80e4('0x5')]();var fs_extra=require(_0x80e4('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x80e4('0x7'));router[_0x80e4('0x8')]('/',auth[_0x80e4('0x9')](),controller[_0x80e4('0xa')]);router[_0x80e4('0x8')](_0x80e4('0xb'),auth[_0x80e4('0x9')](),controller[_0x80e4('0xc')]);router[_0x80e4('0xd')]('/',auth[_0x80e4('0x9')](),controller[_0x80e4('0xe')]);router['put'](_0x80e4('0xb'),auth[_0x80e4('0x9')](),controller[_0x80e4('0xf')]);router[_0x80e4('0x10')](_0x80e4('0xb'),auth[_0x80e4('0x9')](),controller[_0x80e4('0x11')]);module[_0x80e4('0x12')]=router;
\ No newline at end of file
index d5ff328..39ed75f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c4f=['ENUM','string','customVariable','keyValue','picklist','STRING','variable','exports'];(function(_0x2f1651,_0x10b559){var _0xedeb1=function(_0x3f8e4b){while(--_0x3f8e4b){_0x2f1651['push'](_0x2f1651['shift']());}};_0xedeb1(++_0x10b559);}(_0x4c4f,0x11f));var _0xf4c4=function(_0x39df70,_0x243fab){_0x39df70=_0x39df70-0x0;var _0x23f793=_0x4c4f[_0x39df70];return _0x23f793;};'use strict';var Sequelize=require('sequelize');module[_0xf4c4('0x0')]={'type':{'type':Sequelize[_0xf4c4('0x1')](_0xf4c4('0x2'),'variable',_0xf4c4('0x3'),_0xf4c4('0x4'),_0xf4c4('0x5')),'defaultValue':_0xf4c4('0x2')},'content':{'type':Sequelize[_0xf4c4('0x6')]},'key':{'type':Sequelize[_0xf4c4('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0xf4c4('0x2'),_0xf4c4('0x7'),_0xf4c4('0x3'))},'keyContent':{'type':Sequelize[_0xf4c4('0x6')]},'idField':{'type':Sequelize[_0xf4c4('0x6')]},'nameField':{'type':Sequelize[_0xf4c4('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf4c4('0x6')]}};
\ No newline at end of file
+var _0xd7bf=['variable','BOOLEAN','sequelize','exports','ENUM','string','customVariable','keyValue','picklist','STRING'];(function(_0x401011,_0xe4e28e){var _0xbcb0cd=function(_0x5b8f0c){while(--_0x5b8f0c){_0x401011['push'](_0x401011['shift']());}};_0xbcb0cd(++_0xe4e28e);}(_0xd7bf,0xc0));var _0xfd7b=function(_0x22f4bf,_0x48d95b){_0x22f4bf=_0x22f4bf-0x0;var _0xf5d6c9=_0xd7bf[_0x22f4bf];return _0xf5d6c9;};'use strict';var Sequelize=require(_0xfd7b('0x0'));module[_0xfd7b('0x1')]={'type':{'type':Sequelize[_0xfd7b('0x2')](_0xfd7b('0x3'),'variable',_0xfd7b('0x4'),_0xfd7b('0x5'),_0xfd7b('0x6')),'defaultValue':_0xfd7b('0x3')},'content':{'type':Sequelize[_0xfd7b('0x7')]},'key':{'type':Sequelize[_0xfd7b('0x7')]},'keyType':{'type':Sequelize[_0xfd7b('0x2')]('string',_0xfd7b('0x8'),_0xfd7b('0x4'))},'keyContent':{'type':Sequelize[_0xfd7b('0x7')]},'idField':{'type':Sequelize[_0xfd7b('0x7')]},'nameField':{'type':Sequelize[_0xfd7b('0x7')]},'customField':{'type':Sequelize[_0xfd7b('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e892336..3fec1e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5cc=['bluebird','mustache','util','sox','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','json','limit','count','offset','status','Content-Range','apply','save','update','then','destroy','end','error','stack','name','send','map','fieldName','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','type','options','SugarcrmField','includeAll','include','findAll','rows','catch','find','create','body','params','eml-format','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x38af78,_0x41cdf6){var _0x12b3eb=function(_0x4d212f){while(--_0x4d212f){_0x38af78['push'](_0x38af78['shift']());}};_0x12b3eb(++_0x41cdf6);}(_0xd5cc,0x10b));var _0xcd5c=function(_0xad8f8c,_0x30298b){_0xad8f8c=_0xad8f8c-0x0;var _0x2ef37b=_0xd5cc[_0xad8f8c];return _0x2ef37b;};'use strict';var emlformat=require(_0xcd5c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcd5c('0x1'));var jsonpatch=require(_0xcd5c('0x2'));var rp=require(_0xcd5c('0x3'));var moment=require(_0xcd5c('0x4'));var BPromise=require(_0xcd5c('0x5'));var Mustache=require(_0xcd5c('0x6'));var util=require(_0xcd5c('0x7'));var path=require('path');var sox=require(_0xcd5c('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcd5c('0x9'));var squel=require(_0xcd5c('0xa'));var crypto=require(_0xcd5c('0xb'));var jsforce=require(_0xcd5c('0xc'));var deskjs=require(_0xcd5c('0xd'));var toCsv=require('to-csv');var querystring=require(_0xcd5c('0xe'));var Papa=require(_0xcd5c('0xf'));var Redis=require('ioredis');var authService=require(_0xcd5c('0x10'));var qs=require(_0xcd5c('0x11'));var as=require(_0xcd5c('0x12'));var hardwareService=require(_0xcd5c('0x13'));var logger=require('../../config/logger')(_0xcd5c('0x14'));var utils=require(_0xcd5c('0x15'));var config=require(_0xcd5c('0x16'));var licenseUtil=require(_0xcd5c('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5c84a5,_0x4174da){_0x4174da=_0x4174da||0xcc;return function(_0x492d8b){if(_0x492d8b){return _0x5c84a5[_0xcd5c('0x18')](_0x4174da);}return _0x5c84a5['status'](_0x4174da)['end']();};}function respondWithResult(_0x449c49,_0x7bfa24){_0x7bfa24=_0x7bfa24||0xc8;return function(_0x22d82f){if(_0x22d82f){return _0x449c49['status'](_0x7bfa24)[_0xcd5c('0x19')](_0x22d82f);}};}function respondWithFilteredResult(_0x127015,_0x401e9c){return function(_0x37e594){if(_0x37e594){var _0x305be2=typeof _0x401e9c['offset']==='undefined'&&typeof _0x401e9c[_0xcd5c('0x1a')]==='undefined';var _0x339b05=_0x37e594[_0xcd5c('0x1b')];var _0x3f9bd7=_0x305be2?0x0:_0x401e9c[_0xcd5c('0x1c')];var _0x3512c2=_0x305be2?_0x37e594['count']:_0x401e9c[_0xcd5c('0x1c')]+_0x401e9c['limit'];var _0x386105;if(_0x3512c2>=_0x339b05){_0x3512c2=_0x339b05;_0x386105=0xc8;}else{_0x386105=0xce;}_0x127015[_0xcd5c('0x1d')](_0x386105);return _0x127015['set'](_0xcd5c('0x1e'),_0x3f9bd7+'-'+_0x3512c2+'/'+_0x339b05)[_0xcd5c('0x19')](_0x37e594);}return null;};}function patchUpdates(_0x483ebe){return function(_0x1dcf64){try{jsonpatch[_0xcd5c('0x1f')](_0x1dcf64,_0x483ebe,!![]);}catch(_0x100daa){return BPromise['reject'](_0x100daa);}return _0x1dcf64[_0xcd5c('0x20')]();};}function saveUpdates(_0x12dacf,_0x22765c){return function(_0x27fdf8){if(_0x27fdf8){return _0x27fdf8[_0xcd5c('0x21')](_0x12dacf)[_0xcd5c('0x22')](function(_0x4fac56){return _0x4fac56;});}return null;};}function removeEntity(_0x312128,_0x5c0380){return function(_0xc12ffd){if(_0xc12ffd){return _0xc12ffd[_0xcd5c('0x23')]()[_0xcd5c('0x22')](function(){_0x312128[_0xcd5c('0x1d')](0xcc)[_0xcd5c('0x24')]();});}};}function handleEntityNotFound(_0x19ba45,_0x882ec){return function(_0x127bc7){if(!_0x127bc7){_0x19ba45[_0xcd5c('0x18')](0x194);}return _0x127bc7;};}function handleError(_0x241c5d,_0x1eba2a){_0x1eba2a=_0x1eba2a||0x1f4;return function(_0x5490ed){logger[_0xcd5c('0x25')](_0x5490ed[_0xcd5c('0x26')]);if(_0x5490ed[_0xcd5c('0x27')]){delete _0x5490ed[_0xcd5c('0x27')];}_0x241c5d[_0xcd5c('0x1d')](_0x1eba2a)[_0xcd5c('0x28')](_0x5490ed);};}exports['index']=function(_0x5cec63,_0x5b20c7){var _0x24e4b2={},_0x280d0a={},_0x3e160f={'count':0x0,'rows':[]};var _0x3a6251=_[_0xcd5c('0x29')](db['SugarcrmField']['rawAttributes'],function(_0x57f31a){return{'name':_0x57f31a[_0xcd5c('0x2a')],'type':_0x57f31a['type']['key']};});_0x280d0a[_0xcd5c('0x2b')]=_[_0xcd5c('0x29')](_0x3a6251,_0xcd5c('0x27'));_0x280d0a[_0xcd5c('0x2c')]=_['keys'](_0x5cec63[_0xcd5c('0x2c')]);_0x280d0a[_0xcd5c('0x2d')]=_[_0xcd5c('0x2e')](_0x280d0a[_0xcd5c('0x2b')],_0x280d0a[_0xcd5c('0x2c')]);_0x24e4b2[_0xcd5c('0x2f')]=_[_0xcd5c('0x2e')](_0x280d0a[_0xcd5c('0x2b')],qs[_0xcd5c('0x30')](_0x5cec63[_0xcd5c('0x2c')][_0xcd5c('0x30')]));_0x24e4b2[_0xcd5c('0x2f')]=_0x24e4b2[_0xcd5c('0x2f')][_0xcd5c('0x31')]?_0x24e4b2['attributes']:_0x280d0a[_0xcd5c('0x2b')];if(!_0x5cec63[_0xcd5c('0x2c')][_0xcd5c('0x32')](_0xcd5c('0x33'))){_0x24e4b2['limit']=qs[_0xcd5c('0x1a')](_0x5cec63[_0xcd5c('0x2c')]['limit']);_0x24e4b2[_0xcd5c('0x1c')]=qs[_0xcd5c('0x1c')](_0x5cec63[_0xcd5c('0x2c')][_0xcd5c('0x1c')]);}_0x24e4b2[_0xcd5c('0x34')]=qs[_0xcd5c('0x35')](_0x5cec63['query'][_0xcd5c('0x35')]);_0x24e4b2[_0xcd5c('0x36')]=qs['filters'](_['pick'](_0x5cec63[_0xcd5c('0x2c')],_0x280d0a[_0xcd5c('0x2d')]),_0x3a6251);if(_0x5cec63[_0xcd5c('0x2c')][_0xcd5c('0x37')]){_0x24e4b2[_0xcd5c('0x36')]=_['merge'](_0x24e4b2[_0xcd5c('0x36')],{'$or':_[_0xcd5c('0x29')](_0x3a6251,function(_0x730cda){if(_0x730cda[_0xcd5c('0x38')]!=='VIRTUAL'){var _0x18e121={};_0x18e121[_0x730cda[_0xcd5c('0x27')]]={'$like':'%'+_0x5cec63[_0xcd5c('0x2c')][_0xcd5c('0x37')]+'%'};return _0x18e121;}})});}_0x24e4b2=_['merge']({},_0x24e4b2,_0x5cec63[_0xcd5c('0x39')]);var _0x4727d0={'where':_0x24e4b2['where']};return db[_0xcd5c('0x3a')][_0xcd5c('0x1b')](_0x4727d0)[_0xcd5c('0x22')](function(_0x2abd47){_0x3e160f[_0xcd5c('0x1b')]=_0x2abd47;if(_0x5cec63[_0xcd5c('0x2c')][_0xcd5c('0x3b')]){_0x24e4b2[_0xcd5c('0x3c')]=[{'all':!![]}];}return db[_0xcd5c('0x3a')][_0xcd5c('0x3d')](_0x24e4b2);})['then'](function(_0x409dcc){_0x3e160f[_0xcd5c('0x3e')]=_0x409dcc;return _0x3e160f;})[_0xcd5c('0x22')](respondWithFilteredResult(_0x5b20c7,_0x24e4b2))[_0xcd5c('0x3f')](handleError(_0x5b20c7,null));};exports['show']=function(_0x2fe4a6,_0x494e06){var _0x81a324={'raw':!![],'where':{'id':_0x2fe4a6['params']['id']}},_0x1173fa={};_0x1173fa['model']=_['keys'](db[_0xcd5c('0x3a')]['rawAttributes']);_0x1173fa[_0xcd5c('0x2c')]=_['keys'](_0x2fe4a6[_0xcd5c('0x2c')]);_0x1173fa[_0xcd5c('0x2d')]=_[_0xcd5c('0x2e')](_0x1173fa[_0xcd5c('0x2b')],_0x1173fa[_0xcd5c('0x2c')]);_0x81a324['attributes']=_[_0xcd5c('0x2e')](_0x1173fa[_0xcd5c('0x2b')],qs[_0xcd5c('0x30')](_0x2fe4a6[_0xcd5c('0x2c')][_0xcd5c('0x30')]));_0x81a324['attributes']=_0x81a324['attributes'][_0xcd5c('0x31')]?_0x81a324[_0xcd5c('0x2f')]:_0x1173fa[_0xcd5c('0x2b')];if(_0x2fe4a6['query']['includeAll']){_0x81a324[_0xcd5c('0x3c')]=[{'all':!![]}];}_0x81a324=_['merge']({},_0x81a324,_0x2fe4a6[_0xcd5c('0x39')]);return db[_0xcd5c('0x3a')][_0xcd5c('0x40')](_0x81a324)[_0xcd5c('0x22')](handleEntityNotFound(_0x494e06,null))[_0xcd5c('0x22')](respondWithResult(_0x494e06,null))[_0xcd5c('0x3f')](handleError(_0x494e06,null));};exports[_0xcd5c('0x41')]=function(_0x7ff62,_0x10d035){return db[_0xcd5c('0x3a')][_0xcd5c('0x41')](_0x7ff62['body'],{})[_0xcd5c('0x22')](respondWithResult(_0x10d035,0xc9))[_0xcd5c('0x3f')](handleError(_0x10d035,null));};exports['update']=function(_0x1eb734,_0x3c49c5){if(_0x1eb734['body']['id']){delete _0x1eb734[_0xcd5c('0x42')]['id'];}return db[_0xcd5c('0x3a')][_0xcd5c('0x40')]({'where':{'id':_0x1eb734[_0xcd5c('0x43')]['id']}})[_0xcd5c('0x22')](handleEntityNotFound(_0x3c49c5,null))[_0xcd5c('0x22')](saveUpdates(_0x1eb734[_0xcd5c('0x42')],null))[_0xcd5c('0x22')](respondWithResult(_0x3c49c5,null))[_0xcd5c('0x3f')](handleError(_0x3c49c5,null));};exports[_0xcd5c('0x23')]=function(_0x2254b4,_0x56de22){return db[_0xcd5c('0x3a')]['find']({'where':{'id':_0x2254b4[_0xcd5c('0x43')]['id']}})[_0xcd5c('0x22')](handleEntityNotFound(_0x56de22,null))[_0xcd5c('0x22')](removeEntity(_0x56de22,null))['catch'](handleError(_0x56de22,null));};
\ No newline at end of file
+var _0xe080=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','destroy','name','send','index','map','SugarcrmField','fieldName','key','model','query','keys','filters','attributes','intersection','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','includeAll','include','findAll','then','catch','show','params','rawAttributes','fields','length','body','find','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox'];(function(_0x9c82a8,_0xabe6ff){var _0x13dd36=function(_0x1d478a){while(--_0x1d478a){_0x9c82a8['push'](_0x9c82a8['shift']());}};_0x13dd36(++_0xabe6ff);}(_0xe080,0x1ac));var _0x0e08=function(_0x3b5500,_0xedfc5d){_0x3b5500=_0x3b5500-0x0;var _0x4f41ce=_0xe080[_0x3b5500];return _0x4f41ce;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0e08('0x0'));var zipdir=require(_0x0e08('0x1'));var jsonpatch=require(_0x0e08('0x2'));var rp=require(_0x0e08('0x3'));var moment=require(_0x0e08('0x4'));var BPromise=require(_0x0e08('0x5'));var Mustache=require(_0x0e08('0x6'));var util=require(_0x0e08('0x7'));var path=require(_0x0e08('0x8'));var sox=require(_0x0e08('0x9'));var csv=require(_0x0e08('0xa'));var ejs=require(_0x0e08('0xb'));var fs=require('fs');var fs_extra=require(_0x0e08('0xc'));var _=require(_0x0e08('0xd'));var squel=require(_0x0e08('0xe'));var crypto=require(_0x0e08('0xf'));var jsforce=require(_0x0e08('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x0e08('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x0e08('0x11'));var authService=require(_0x0e08('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x0e08('0x13'));var hardwareService=require(_0x0e08('0x14'));var logger=require('../../config/logger')(_0x0e08('0x15'));var utils=require(_0x0e08('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0e08('0x17'));var db=require(_0x0e08('0x18'))['db'];function respondWithStatusCode(_0x41f0f1,_0x1d4ce5){_0x1d4ce5=_0x1d4ce5||0xcc;return function(_0x5bc852){if(_0x5bc852){return _0x41f0f1[_0x0e08('0x19')](_0x1d4ce5);}return _0x41f0f1['status'](_0x1d4ce5)[_0x0e08('0x1a')]();};}function respondWithResult(_0x3e1dd5,_0x45944f){_0x45944f=_0x45944f||0xc8;return function(_0x31b164){if(_0x31b164){return _0x3e1dd5[_0x0e08('0x1b')](_0x45944f)[_0x0e08('0x1c')](_0x31b164);}};}function respondWithFilteredResult(_0x176fab,_0x5a4c2f){return function(_0x613f9){if(_0x613f9){var _0x51b270=typeof _0x5a4c2f[_0x0e08('0x1d')]==='undefined'&&typeof _0x5a4c2f[_0x0e08('0x1e')]===_0x0e08('0x1f');var _0x3e7a94=_0x613f9[_0x0e08('0x20')];var _0x491286=_0x51b270?0x0:_0x5a4c2f[_0x0e08('0x1d')];var _0x29c675=_0x51b270?_0x613f9[_0x0e08('0x20')]:_0x5a4c2f['offset']+_0x5a4c2f[_0x0e08('0x1e')];var _0x198943;if(_0x29c675>=_0x3e7a94){_0x29c675=_0x3e7a94;_0x198943=0xc8;}else{_0x198943=0xce;}_0x176fab['status'](_0x198943);return _0x176fab[_0x0e08('0x21')](_0x0e08('0x22'),_0x491286+'-'+_0x29c675+'/'+_0x3e7a94)['json'](_0x613f9);}return null;};}function patchUpdates(_0x163748){return function(_0x468b07){try{jsonpatch['apply'](_0x468b07,_0x163748,!![]);}catch(_0x3573ad){return BPromise[_0x0e08('0x23')](_0x3573ad);}return _0x468b07[_0x0e08('0x24')]();};}function saveUpdates(_0x38a2b9,_0x15e95f){return function(_0x281876){if(_0x281876){return _0x281876[_0x0e08('0x25')](_0x38a2b9)['then'](function(_0x1751a0){return _0x1751a0;});}return null;};}function removeEntity(_0x3bad8a,_0x519127){return function(_0x30b5e3){if(_0x30b5e3){return _0x30b5e3[_0x0e08('0x26')]()['then'](function(){_0x3bad8a[_0x0e08('0x1b')](0xcc)[_0x0e08('0x1a')]();});}};}function handleEntityNotFound(_0x2c2a9c,_0x330262){return function(_0x27cc8c){if(!_0x27cc8c){_0x2c2a9c[_0x0e08('0x19')](0x194);}return _0x27cc8c;};}function handleError(_0x34e3ff,_0x4fcfb4){_0x4fcfb4=_0x4fcfb4||0x1f4;return function(_0x1d4ee6){logger['error'](_0x1d4ee6['stack']);if(_0x1d4ee6[_0x0e08('0x27')]){delete _0x1d4ee6[_0x0e08('0x27')];}_0x34e3ff[_0x0e08('0x1b')](_0x4fcfb4)[_0x0e08('0x28')](_0x1d4ee6);};}exports[_0x0e08('0x29')]=function(_0x19af60,_0x203643){var _0x4700dc={},_0xe9655b={},_0x4881af={'count':0x0,'rows':[]};var _0x85b9c5=_[_0x0e08('0x2a')](db[_0x0e08('0x2b')]['rawAttributes'],function(_0x5d7a71){return{'name':_0x5d7a71[_0x0e08('0x2c')],'type':_0x5d7a71['type'][_0x0e08('0x2d')]};});_0xe9655b[_0x0e08('0x2e')]=_['map'](_0x85b9c5,'name');_0xe9655b[_0x0e08('0x2f')]=_[_0x0e08('0x30')](_0x19af60[_0x0e08('0x2f')]);_0xe9655b[_0x0e08('0x31')]=_['intersection'](_0xe9655b['model'],_0xe9655b['query']);_0x4700dc[_0x0e08('0x32')]=_[_0x0e08('0x33')](_0xe9655b[_0x0e08('0x2e')],qs['fields'](_0x19af60[_0x0e08('0x2f')]['fields']));_0x4700dc[_0x0e08('0x32')]=_0x4700dc['attributes']['length']?_0x4700dc[_0x0e08('0x32')]:_0xe9655b[_0x0e08('0x2e')];if(!_0x19af60[_0x0e08('0x2f')][_0x0e08('0x34')](_0x0e08('0x35'))){_0x4700dc[_0x0e08('0x1e')]=qs[_0x0e08('0x1e')](_0x19af60[_0x0e08('0x2f')][_0x0e08('0x1e')]);_0x4700dc[_0x0e08('0x1d')]=qs[_0x0e08('0x1d')](_0x19af60[_0x0e08('0x2f')]['offset']);}_0x4700dc[_0x0e08('0x36')]=qs['sort'](_0x19af60[_0x0e08('0x2f')][_0x0e08('0x37')]);_0x4700dc[_0x0e08('0x38')]=qs[_0x0e08('0x31')](_['pick'](_0x19af60[_0x0e08('0x2f')],_0xe9655b[_0x0e08('0x31')]),_0x85b9c5);if(_0x19af60[_0x0e08('0x2f')][_0x0e08('0x39')]){_0x4700dc[_0x0e08('0x38')]=_[_0x0e08('0x3a')](_0x4700dc['where'],{'$or':_[_0x0e08('0x2a')](_0x85b9c5,function(_0x4d3e22){if(_0x4d3e22[_0x0e08('0x3b')]!==_0x0e08('0x3c')){var _0x1a8235={};_0x1a8235[_0x4d3e22[_0x0e08('0x27')]]={'$like':'%'+_0x19af60['query'][_0x0e08('0x39')]+'%'};return _0x1a8235;}})});}_0x4700dc=_[_0x0e08('0x3a')]({},_0x4700dc,_0x19af60['options']);var _0x2b900a={'where':_0x4700dc[_0x0e08('0x38')]};return db[_0x0e08('0x2b')][_0x0e08('0x20')](_0x2b900a)['then'](function(_0x2c2753){_0x4881af[_0x0e08('0x20')]=_0x2c2753;if(_0x19af60['query'][_0x0e08('0x3d')]){_0x4700dc[_0x0e08('0x3e')]=[{'all':!![]}];}return db['SugarcrmField'][_0x0e08('0x3f')](_0x4700dc);})[_0x0e08('0x40')](function(_0x454e53){_0x4881af['rows']=_0x454e53;return _0x4881af;})[_0x0e08('0x40')](respondWithFilteredResult(_0x203643,_0x4700dc))[_0x0e08('0x41')](handleError(_0x203643,null));};exports[_0x0e08('0x42')]=function(_0xeb1ba5,_0x243944){var _0x3bc81f={'raw':!![],'where':{'id':_0xeb1ba5[_0x0e08('0x43')]['id']}},_0x58c065={};_0x58c065[_0x0e08('0x2e')]=_['keys'](db[_0x0e08('0x2b')][_0x0e08('0x44')]);_0x58c065[_0x0e08('0x2f')]=_[_0x0e08('0x30')](_0xeb1ba5['query']);_0x58c065['filters']=_[_0x0e08('0x33')](_0x58c065[_0x0e08('0x2e')],_0x58c065[_0x0e08('0x2f')]);_0x3bc81f[_0x0e08('0x32')]=_['intersection'](_0x58c065[_0x0e08('0x2e')],qs[_0x0e08('0x45')](_0xeb1ba5[_0x0e08('0x2f')][_0x0e08('0x45')]));_0x3bc81f[_0x0e08('0x32')]=_0x3bc81f[_0x0e08('0x32')][_0x0e08('0x46')]?_0x3bc81f[_0x0e08('0x32')]:_0x58c065[_0x0e08('0x2e')];if(_0xeb1ba5['query'][_0x0e08('0x3d')]){_0x3bc81f[_0x0e08('0x3e')]=[{'all':!![]}];}_0x3bc81f=_['merge']({},_0x3bc81f,_0xeb1ba5['options']);return db[_0x0e08('0x2b')]['find'](_0x3bc81f)[_0x0e08('0x40')](handleEntityNotFound(_0x243944,null))['then'](respondWithResult(_0x243944,null))['catch'](handleError(_0x243944,null));};exports['create']=function(_0x1f5662,_0x20ffcb){return db[_0x0e08('0x2b')]['create'](_0x1f5662[_0x0e08('0x47')],{})[_0x0e08('0x40')](respondWithResult(_0x20ffcb,0xc9))[_0x0e08('0x41')](handleError(_0x20ffcb,null));};exports[_0x0e08('0x25')]=function(_0x23f3a5,_0x26e831){if(_0x23f3a5[_0x0e08('0x47')]['id']){delete _0x23f3a5['body']['id'];}return db[_0x0e08('0x2b')][_0x0e08('0x48')]({'where':{'id':_0x23f3a5[_0x0e08('0x43')]['id']}})[_0x0e08('0x40')](handleEntityNotFound(_0x26e831,null))['then'](saveUpdates(_0x23f3a5['body'],null))[_0x0e08('0x40')](respondWithResult(_0x26e831,null))[_0x0e08('0x41')](handleError(_0x26e831,null));};exports[_0x0e08('0x26')]=function(_0x58d3dd,_0x515806){return db[_0x0e08('0x2b')][_0x0e08('0x48')]({'where':{'id':_0x58d3dd[_0x0e08('0x43')]['id']}})[_0x0e08('0x40')](handleEntityNotFound(_0x515806,null))[_0x0e08('0x40')](removeEntity(_0x515806,null))[_0x0e08('0x41')](handleError(_0x515806,null));};
\ No newline at end of file
index a21da28..334c96b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e66=['moment','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define','sugarcrm_unique_index','FieldId','lodash','util','api'];(function(_0x3a99f4,_0x2a81c1){var _0xea0b42=function(_0x41f533){while(--_0x41f533){_0x3a99f4['push'](_0x3a99f4['shift']());}};_0xea0b42(++_0x2a81c1);}(_0x4e66,0xfa));var _0x64e6=function(_0x15121d,_0x3e8fee){_0x15121d=_0x15121d-0x0;var _0x32740d=_0x4e66[_0x15121d];return _0x32740d;};'use strict';var _=require(_0x64e6('0x0'));var util=require(_0x64e6('0x1'));var logger=require('../../config/logger')(_0x64e6('0x2'));var moment=require(_0x64e6('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x64e6('0x4'));var config=require(_0x64e6('0x5'));var attributes=require(_0x64e6('0x6'));module[_0x64e6('0x7')]=function(_0x169a85,_0x507d14){return _0x169a85[_0x64e6('0x8')]('SugarcrmField',attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':_0x64e6('0x9'),'fields':['idField',_0x64e6('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x142f=['define','SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','FieldId','util','api','moment','bluebird','request-promise','path','../../config/environment','exports'];(function(_0x413762,_0x4c8b01){var _0xa2e042=function(_0x4023ef){while(--_0x4023ef){_0x413762['push'](_0x413762['shift']());}};_0xa2e042(++_0x4c8b01);}(_0x142f,0xe2));var _0xf142=function(_0x2d5df5,_0x282cba){_0x2d5df5=_0x2d5df5-0x0;var _0x48d803=_0x142f[_0x2d5df5];return _0x48d803;};'use strict';var _=require('lodash');var util=require(_0xf142('0x0'));var logger=require('../../config/logger')(_0xf142('0x1'));var moment=require(_0xf142('0x2'));var BPromise=require(_0xf142('0x3'));var rp=require(_0xf142('0x4'));var fs=require('fs');var path=require(_0xf142('0x5'));var rimraf=require('rimraf');var config=require(_0xf142('0x6'));var attributes=require('./intSugarcrmField.attributes');module[_0xf142('0x7')]=function(_0x2e1af8,_0x206fe1){return _0x2e1af8[_0xf142('0x8')](_0xf142('0x9'),attributes,{'tableName':_0xf142('0xa'),'paranoid':![],'indexes':[{'name':_0xf142('0xb'),'fields':['idField',_0xf142('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 39aaa23..d9251fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9df=['message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x2c87e0,_0x3b9c6){var _0x506af4=function(_0x4681bc){while(--_0x4681bc){_0x2c87e0['push'](_0x2c87e0['shift']());}};_0x506af4(++_0x3b9c6);}(_0xb9df,0x144));var _0xfb9d=function(_0x44fbf7,_0x14c5ca){_0x44fbf7=_0x44fbf7-0x0;var _0x309508=_0xb9df[_0x44fbf7];return _0x309508;};'use strict';var _=require(_0xfb9d('0x0'));var util=require(_0xfb9d('0x1'));var moment=require(_0xfb9d('0x2'));var BPromise=require(_0xfb9d('0x3'));var rs=require(_0xfb9d('0x4'));var fs=require('fs');var Redis=require(_0xfb9d('0x5'));var db=require(_0xfb9d('0x6'))['db'];var utils=require(_0xfb9d('0x7'));var logger=require(_0xfb9d('0x8'))(_0xfb9d('0x9'));var config=require('../../config/environment');var jayson=require(_0xfb9d('0xa'));var client=jayson[_0xfb9d('0xb')][_0xfb9d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5ece7b,_0x481a7c,_0x1e8e0d){return new BPromise(function(_0x461f6a,_0x47451f){return client[_0xfb9d('0xd')](_0x5ece7b,_0x1e8e0d)['then'](function(_0xf1fc31){logger[_0xfb9d('0xe')](_0xfb9d('0xf'),_0x481a7c,_0xfb9d('0x10'));logger[_0xfb9d('0x11')]('SugarcrmField,\x20%s,\x20%s,\x20%s',_0x481a7c,'request\x20sent',JSON[_0xfb9d('0x12')](_0xf1fc31));if(_0xf1fc31[_0xfb9d('0x13')]){if(_0xf1fc31[_0xfb9d('0x13')][_0xfb9d('0x14')]===0x1f4){logger[_0xfb9d('0x13')](_0xfb9d('0xf'),_0x481a7c,_0xf1fc31[_0xfb9d('0x13')][_0xfb9d('0x15')]);return _0x47451f(_0xf1fc31[_0xfb9d('0x13')][_0xfb9d('0x15')]);}logger['error'](_0xfb9d('0xf'),_0x481a7c,_0xf1fc31[_0xfb9d('0x13')][_0xfb9d('0x15')]);return _0x461f6a(_0xf1fc31[_0xfb9d('0x13')][_0xfb9d('0x15')]);}else{logger['info'](_0xfb9d('0xf'),_0x481a7c,_0xfb9d('0x10'));_0x461f6a(_0xf1fc31[_0xfb9d('0x16')]['message']);}})['catch'](function(_0x525212){logger['error']('SugarcrmField,\x20%s,\x20%s',_0x481a7c,_0x525212);_0x47451f(_0x525212);});});}
\ No newline at end of file
+var _0xf972=['client','request','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x4dff0f,_0x15aa06){var _0x28f401=function(_0x1c4a8c){while(--_0x1c4a8c){_0x4dff0f['push'](_0x4dff0f['shift']());}};_0x28f401(++_0x15aa06);}(_0xf972,0x124));var _0x2f97=function(_0x10339d,_0xbdb316){_0x10339d=_0x10339d-0x0;var _0x51affc=_0xf972[_0x10339d];return _0x51affc;};'use strict';var _=require('lodash');var util=require(_0x2f97('0x0'));var moment=require('moment');var BPromise=require(_0x2f97('0x1'));var rs=require(_0x2f97('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2f97('0x3'))['db'];var utils=require(_0x2f97('0x4'));var logger=require(_0x2f97('0x5'))(_0x2f97('0x6'));var config=require(_0x2f97('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2f97('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x536960,_0x214698,_0x542e54){return new BPromise(function(_0x180d1c,_0x3b97b5){return client[_0x2f97('0x9')](_0x536960,_0x542e54)['then'](function(_0x3dfa86){logger[_0x2f97('0xa')](_0x2f97('0xb'),_0x214698,_0x2f97('0xc'));logger[_0x2f97('0xd')](_0x2f97('0xe'),_0x214698,_0x2f97('0xc'),JSON[_0x2f97('0xf')](_0x3dfa86));if(_0x3dfa86['error']){if(_0x3dfa86[_0x2f97('0x10')]['code']===0x1f4){logger[_0x2f97('0x10')](_0x2f97('0xb'),_0x214698,_0x3dfa86[_0x2f97('0x10')][_0x2f97('0x11')]);return _0x3b97b5(_0x3dfa86[_0x2f97('0x10')]['message']);}logger[_0x2f97('0x10')](_0x2f97('0xb'),_0x214698,_0x3dfa86[_0x2f97('0x10')][_0x2f97('0x11')]);return _0x180d1c(_0x3dfa86[_0x2f97('0x10')]['message']);}else{logger[_0x2f97('0xa')](_0x2f97('0xb'),_0x214698,'request\x20sent');_0x180d1c(_0x3dfa86[_0x2f97('0x12')][_0x2f97('0x11')]);}})[_0x2f97('0x13')](function(_0x3d13a8){logger[_0x2f97('0x10')](_0x2f97('0xb'),_0x214698,_0x3d13a8);_0x3b97b5(_0x3d13a8);});});}
\ No newline at end of file
index 9ee1f36..4cf1df7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x207c=['addConfiguration','put','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','index','get','/:id','show','/:id/configurations','getConfigurations','/:id/fields','isAuthenticated','getFields','post'];(function(_0xfb199c,_0x53d475){var _0x4b6b2a=function(_0x4e771e){while(--_0x4e771e){_0xfb199c['push'](_0xfb199c['shift']());}};_0x4b6b2a(++_0x53d475);}(_0x207c,0x1e8));var _0xc207=function(_0x2f8255,_0x44ff85){_0x2f8255=_0x2f8255-0x0;var _0x2207f6=_0x207c[_0x2f8255];return _0x2207f6;};'use strict';var multer=require('multer');var util=require(_0xc207('0x0'));var path=require(_0xc207('0x1'));var timeout=require(_0xc207('0x2'));var express=require(_0xc207('0x3'));var router=express[_0xc207('0x4')]();var fs_extra=require(_0xc207('0x5'));var auth=require(_0xc207('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc207('0x7'));var controller=require('./intVtigerAccount.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xc207('0x8')]);router[_0xc207('0x9')](_0xc207('0xa'),auth['isAuthenticated'](),controller[_0xc207('0xb')]);router[_0xc207('0x9')](_0xc207('0xc'),auth['isAuthenticated'](),controller[_0xc207('0xd')]);router[_0xc207('0x9')](_0xc207('0xe'),auth[_0xc207('0xf')](),controller[_0xc207('0x10')]);router[_0xc207('0x11')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0xc207('0xc'),auth['isAuthenticated'](),controller[_0xc207('0x12')]);router[_0xc207('0x13')]('/:id',auth[_0xc207('0xf')](),controller[_0xc207('0x14')]);router[_0xc207('0x15')](_0xc207('0xa'),auth[_0xc207('0xf')](),controller['destroy']);module[_0xc207('0x16')]=router;
\ No newline at end of file
+var _0x81ef=['/:id','show','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','index'];(function(_0x18fe21,_0x410d2b){var _0x26d637=function(_0x5b3a20){while(--_0x5b3a20){_0x18fe21['push'](_0x18fe21['shift']());}};_0x26d637(++_0x410d2b);}(_0x81ef,0xc3));var _0xf81e=function(_0x33d57b,_0x4d2727){_0x33d57b=_0x33d57b-0x0;var _0x434a41=_0x81ef[_0x33d57b];return _0x434a41;};'use strict';var multer=require(_0xf81e('0x0'));var util=require(_0xf81e('0x1'));var path=require(_0xf81e('0x2'));var timeout=require(_0xf81e('0x3'));var express=require(_0xf81e('0x4'));var router=express[_0xf81e('0x5')]();var fs_extra=require(_0xf81e('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf81e('0x7'));var controller=require(_0xf81e('0x8'));router[_0xf81e('0x9')]('/',auth[_0xf81e('0xa')](),controller[_0xf81e('0xb')]);router[_0xf81e('0x9')](_0xf81e('0xc'),auth[_0xf81e('0xa')](),controller[_0xf81e('0xd')]);router['get'](_0xf81e('0xe'),auth['isAuthenticated'](),controller[_0xf81e('0xf')]);router[_0xf81e('0x9')]('/:id/fields',auth[_0xf81e('0xa')](),controller[_0xf81e('0x10')]);router[_0xf81e('0x11')]('/',auth[_0xf81e('0xa')](),controller[_0xf81e('0x12')]);router[_0xf81e('0x11')]('/:id/configurations',auth[_0xf81e('0xa')](),controller[_0xf81e('0x13')]);router[_0xf81e('0x14')](_0xf81e('0xc'),auth[_0xf81e('0xa')](),controller[_0xf81e('0x15')]);router[_0xf81e('0x16')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 14ba1f4..2ed0e9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0217=['HelpDesk','sequelize','exports','STRING'];(function(_0x692813,_0x166322){var _0x43e4f8=function(_0xc51e9d){while(--_0xc51e9d){_0x692813['push'](_0x692813['shift']());}};_0x43e4f8(++_0x166322);}(_0x0217,0x175));var _0x7021=function(_0x5baefc,_0x39b64c){_0x5baefc=_0x5baefc-0x0;var _0x3f43e7=_0x0217[_0x5baefc];return _0x3f43e7;};'use strict';var Sequelize=require(_0x7021('0x0'));module[_0x7021('0x1')]={'name':{'type':Sequelize[_0x7021('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x7021('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x7021('0x3')},'remoteUri':{'type':Sequelize[_0x7021('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x7021('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x43ee=['HelpDesk','sequelize','exports','STRING'];(function(_0x50e02c,_0x49822d){var _0x5946f2=function(_0x82e7d0){while(--_0x82e7d0){_0x50e02c['push'](_0x50e02c['shift']());}};_0x5946f2(++_0x49822d);}(_0x43ee,0x1a5));var _0xe43e=function(_0x2ae22a,_0x4fe753){_0x2ae22a=_0x2ae22a-0x0;var _0x286a82=_0x43ee[_0x2ae22a];return _0x286a82;};'use strict';var Sequelize=require(_0xe43e('0x0'));module[_0xe43e('0x1')]={'name':{'type':Sequelize[_0xe43e('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xe43e('0x2')]},'username':{'type':Sequelize[_0xe43e('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0xe43e('0x2')],'allowNull':![],'defaultValue':_0xe43e('0x3')},'remoteUri':{'type':Sequelize[_0xe43e('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'accessKey':{'type':Sequelize[_0xe43e('0x2')],'allowNull':![]}};
\ No newline at end of file
index 9a4eb28..e04b132 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc797=['fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','VtigerAccount','include','findAll','show','params','includeAll','create','catch','body','find','VtigerConfiguration','order','getConfigurations','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerField','getFields','description','remoteUri','serverUrl','username','accessKey','substring','lastIndexOf','format','%s/webservice.php','GET','getchallenge','success','POST','login','result','token','describe','sessionName','autogenerated','remove','includes','editable','false','label','startsWith','cf_','picklist','picklistValues','value','test','statusCode','error','Wrong\x20credentials','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','end','stack','name','send','index','map','rawAttributes'];(function(_0x26033f,_0x9dbe5f){var _0x428a27=function(_0x545930){while(--_0x545930){_0x26033f['push'](_0x26033f['shift']());}};_0x428a27(++_0x9dbe5f);}(_0xc797,0x1ba));var _0x7c79=function(_0x11417f,_0x2abc8c){_0x11417f=_0x11417f-0x0;var _0xfb6fb7=_0xc797[_0x11417f];return _0xfb6fb7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7c79('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7c79('0x1'));var rp=require(_0x7c79('0x2'));var moment=require(_0x7c79('0x3'));var BPromise=require(_0x7c79('0x4'));var Mustache=require(_0x7c79('0x5'));var util=require(_0x7c79('0x6'));var path=require(_0x7c79('0x7'));var sox=require(_0x7c79('0x8'));var csv=require(_0x7c79('0x9'));var ejs=require(_0x7c79('0xa'));var fs=require('fs');var fs_extra=require(_0x7c79('0xb'));var _=require(_0x7c79('0xc'));var squel=require('squel');var crypto=require(_0x7c79('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x7c79('0xe'));var toCsv=require(_0x7c79('0x9'));var querystring=require(_0x7c79('0xf'));var Papa=require(_0x7c79('0x10'));var Redis=require(_0x7c79('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x7c79('0x12'));var as=require(_0x7c79('0x13'));var hardwareService=require(_0x7c79('0x14'));var logger=require('../../config/logger')(_0x7c79('0x15'));var utils=require(_0x7c79('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x7c79('0x17'));var db=require(_0x7c79('0x18'))['db'];var integrations=require(_0x7c79('0x19'));function respondWithStatusCode(_0x1ce8bb,_0x4748db){_0x4748db=_0x4748db||0xcc;return function(_0x1364e2){if(_0x1364e2){return _0x1ce8bb[_0x7c79('0x1a')](_0x4748db);}return _0x1ce8bb['status'](_0x4748db)['end']();};}function respondWithResult(_0x43af30,_0x5e32c0){_0x5e32c0=_0x5e32c0||0xc8;return function(_0x5a217d){if(_0x5a217d){return _0x43af30[_0x7c79('0x1b')](_0x5e32c0)[_0x7c79('0x1c')](_0x5a217d);}};}function respondWithFilteredResult(_0x206617,_0x59ba00){return function(_0x32a9a0){if(_0x32a9a0){var _0x365372=typeof _0x59ba00[_0x7c79('0x1d')]===_0x7c79('0x1e')&&typeof _0x59ba00[_0x7c79('0x1f')]===_0x7c79('0x1e');var _0x489e1a=_0x32a9a0[_0x7c79('0x20')];var _0x17ce16=_0x365372?0x0:_0x59ba00[_0x7c79('0x1d')];var _0x3b277d=_0x365372?_0x32a9a0[_0x7c79('0x20')]:_0x59ba00[_0x7c79('0x1d')]+_0x59ba00['limit'];var _0x3585c0;if(_0x3b277d>=_0x489e1a){_0x3b277d=_0x489e1a;_0x3585c0=0xc8;}else{_0x3585c0=0xce;}_0x206617['status'](_0x3585c0);return _0x206617[_0x7c79('0x21')]('Content-Range',_0x17ce16+'-'+_0x3b277d+'/'+_0x489e1a)[_0x7c79('0x1c')](_0x32a9a0);}return null;};}function patchUpdates(_0xd56865){return function(_0x597abc){try{jsonpatch[_0x7c79('0x22')](_0x597abc,_0xd56865,!![]);}catch(_0x30616d){return BPromise['reject'](_0x30616d);}return _0x597abc[_0x7c79('0x23')]();};}function saveUpdates(_0x3567d3,_0x559cfc){return function(_0x4e0e8a){if(_0x4e0e8a){return _0x4e0e8a[_0x7c79('0x24')](_0x3567d3)[_0x7c79('0x25')](function(_0x1fa358){return _0x1fa358;});}return null;};}function removeEntity(_0xcb2ea4,_0x4051c3){return function(_0x285d45){if(_0x285d45){return _0x285d45[_0x7c79('0x26')]()['then'](function(){_0xcb2ea4[_0x7c79('0x1b')](0xcc)[_0x7c79('0x27')]();});}};}function handleEntityNotFound(_0x1f0e5e,_0x303fbe){return function(_0x5778e1){if(!_0x5778e1){_0x1f0e5e[_0x7c79('0x1a')](0x194);}return _0x5778e1;};}function handleError(_0x524430,_0x2b1ace){_0x2b1ace=_0x2b1ace||0x1f4;return function(_0x1a06c8){logger['error'](_0x1a06c8[_0x7c79('0x28')]);if(_0x1a06c8[_0x7c79('0x29')]){delete _0x1a06c8[_0x7c79('0x29')];}_0x524430[_0x7c79('0x1b')](_0x2b1ace)[_0x7c79('0x2a')](_0x1a06c8);};}exports[_0x7c79('0x2b')]=function(_0x53a6a8,_0x4d1732){var _0xc2d7b0={},_0x409fb4={},_0x5b5448={'count':0x0,'rows':[]};var _0x15109a=_[_0x7c79('0x2c')](db['VtigerAccount'][_0x7c79('0x2d')],function(_0x3d71f8){return{'name':_0x3d71f8[_0x7c79('0x2e')],'type':_0x3d71f8[_0x7c79('0x2f')][_0x7c79('0x30')]};});_0x409fb4[_0x7c79('0x31')]=_[_0x7c79('0x2c')](_0x15109a,_0x7c79('0x29'));_0x409fb4['query']=_[_0x7c79('0x32')](_0x53a6a8[_0x7c79('0x33')]);_0x409fb4[_0x7c79('0x34')]=_[_0x7c79('0x35')](_0x409fb4[_0x7c79('0x31')],_0x409fb4['query']);_0xc2d7b0[_0x7c79('0x36')]=_[_0x7c79('0x35')](_0x409fb4[_0x7c79('0x31')],qs['fields'](_0x53a6a8['query'][_0x7c79('0x37')]));_0xc2d7b0['attributes']=_0xc2d7b0[_0x7c79('0x36')][_0x7c79('0x38')]?_0xc2d7b0['attributes']:_0x409fb4[_0x7c79('0x31')];if(!_0x53a6a8['query'][_0x7c79('0x39')](_0x7c79('0x3a'))){_0xc2d7b0[_0x7c79('0x1f')]=qs[_0x7c79('0x1f')](_0x53a6a8[_0x7c79('0x33')][_0x7c79('0x1f')]);_0xc2d7b0[_0x7c79('0x1d')]=qs[_0x7c79('0x1d')](_0x53a6a8[_0x7c79('0x33')][_0x7c79('0x1d')]);}_0xc2d7b0['order']=qs[_0x7c79('0x3b')](_0x53a6a8[_0x7c79('0x33')][_0x7c79('0x3b')]);_0xc2d7b0[_0x7c79('0x3c')]=qs[_0x7c79('0x34')](_[_0x7c79('0x3d')](_0x53a6a8[_0x7c79('0x33')],_0x409fb4[_0x7c79('0x34')]),_0x15109a);if(_0x53a6a8[_0x7c79('0x33')][_0x7c79('0x3e')]){_0xc2d7b0[_0x7c79('0x3c')]=_[_0x7c79('0x3f')](_0xc2d7b0[_0x7c79('0x3c')],{'$or':_[_0x7c79('0x2c')](_0x15109a,function(_0x185a53){if(_0x185a53['type']!==_0x7c79('0x40')){var _0x53108f={};_0x53108f[_0x185a53['name']]={'$like':'%'+_0x53a6a8['query'][_0x7c79('0x3e')]+'%'};return _0x53108f;}})});}_0xc2d7b0=_['merge']({},_0xc2d7b0,_0x53a6a8[_0x7c79('0x41')]);var _0x4261e7={'where':_0xc2d7b0[_0x7c79('0x3c')]};return db[_0x7c79('0x42')][_0x7c79('0x20')](_0x4261e7)[_0x7c79('0x25')](function(_0x18811e){_0x5b5448['count']=_0x18811e;if(_0x53a6a8[_0x7c79('0x33')]['includeAll']){_0xc2d7b0[_0x7c79('0x43')]=[{'all':!![]}];}return db['VtigerAccount'][_0x7c79('0x44')](_0xc2d7b0);})[_0x7c79('0x25')](function(_0x497202){_0x5b5448['rows']=_0x497202;return _0x5b5448;})[_0x7c79('0x25')](respondWithFilteredResult(_0x4d1732,_0xc2d7b0))['catch'](handleError(_0x4d1732,null));};exports[_0x7c79('0x45')]=function(_0x16eb99,_0x439ec4){var _0x287c36={'raw':![],'where':{'id':_0x16eb99[_0x7c79('0x46')]['id']}},_0x4fe789={};_0x4fe789[_0x7c79('0x31')]=_[_0x7c79('0x32')](db[_0x7c79('0x42')]['rawAttributes']);_0x4fe789[_0x7c79('0x33')]=_[_0x7c79('0x32')](_0x16eb99[_0x7c79('0x33')]);_0x4fe789['filters']=_[_0x7c79('0x35')](_0x4fe789['model'],_0x4fe789[_0x7c79('0x33')]);_0x287c36[_0x7c79('0x36')]=_[_0x7c79('0x35')](_0x4fe789[_0x7c79('0x31')],qs['fields'](_0x16eb99[_0x7c79('0x33')][_0x7c79('0x37')]));_0x287c36[_0x7c79('0x36')]=_0x287c36[_0x7c79('0x36')]['length']?_0x287c36[_0x7c79('0x36')]:_0x4fe789[_0x7c79('0x31')];if(_0x16eb99[_0x7c79('0x33')][_0x7c79('0x47')]){_0x287c36['include']=[{'all':!![]}];}_0x287c36=_['merge']({},_0x287c36,_0x16eb99[_0x7c79('0x41')]);return db['VtigerAccount']['find'](_0x287c36)[_0x7c79('0x25')](handleEntityNotFound(_0x439ec4,null))[_0x7c79('0x25')](respondWithResult(_0x439ec4,null))['catch'](handleError(_0x439ec4,null));};exports['create']=function(_0x20615c,_0x582999){return db[_0x7c79('0x42')][_0x7c79('0x48')](_0x20615c['body'],{})['then'](respondWithResult(_0x582999,0xc9))[_0x7c79('0x49')](handleError(_0x582999,null));};exports[_0x7c79('0x24')]=function(_0x468669,_0x314a51){if(_0x468669['body']['id']){delete _0x468669[_0x7c79('0x4a')]['id'];}return db[_0x7c79('0x42')][_0x7c79('0x4b')]({'where':{'id':_0x468669['params']['id']}})['then'](handleEntityNotFound(_0x314a51,null))['then'](saveUpdates(_0x468669[_0x7c79('0x4a')],null))[_0x7c79('0x25')](respondWithResult(_0x314a51,null))[_0x7c79('0x49')](handleError(_0x314a51,null));};exports[_0x7c79('0x26')]=function(_0x5a7bf7,_0x38ddc8){return db[_0x7c79('0x42')][_0x7c79('0x4b')]({'where':{'id':_0x5a7bf7[_0x7c79('0x46')]['id']}})[_0x7c79('0x25')](handleEntityNotFound(_0x38ddc8,null))[_0x7c79('0x25')](removeEntity(_0x38ddc8,null))[_0x7c79('0x49')](handleError(_0x38ddc8,null));};exports['getConfigurations']=function(_0x450d7f,_0x603311,_0x4419db){var _0x31f794={};var _0x506da2={};var _0x114cc1;var _0x337f60;return db[_0x7c79('0x42')]['findOne']({'where':{'id':_0x450d7f[_0x7c79('0x46')]['id']}})[_0x7c79('0x25')](handleEntityNotFound(_0x603311,null))['then'](function(_0x7a8ab1){if(_0x7a8ab1){_0x114cc1=_0x7a8ab1;_0x506da2[_0x7c79('0x31')]=_[_0x7c79('0x32')](db[_0x7c79('0x4c')][_0x7c79('0x2d')]);_0x506da2['query']=_[_0x7c79('0x32')](_0x450d7f['query']);_0x506da2['filters']=_[_0x7c79('0x35')](_0x506da2[_0x7c79('0x31')],_0x506da2[_0x7c79('0x33')]);_0x31f794[_0x7c79('0x36')]=_[_0x7c79('0x35')](_0x506da2['model'],qs[_0x7c79('0x37')](_0x450d7f[_0x7c79('0x33')]['fields']));_0x31f794[_0x7c79('0x36')]=_0x31f794[_0x7c79('0x36')][_0x7c79('0x38')]?_0x31f794[_0x7c79('0x36')]:_0x506da2['model'];_0x31f794[_0x7c79('0x4d')]=qs['sort'](_0x450d7f[_0x7c79('0x33')][_0x7c79('0x3b')]);_0x31f794[_0x7c79('0x3c')]=qs['filters'](_[_0x7c79('0x3d')](_0x450d7f[_0x7c79('0x33')],_0x506da2[_0x7c79('0x34')]));if(_0x450d7f[_0x7c79('0x33')][_0x7c79('0x3e')]){_0x31f794[_0x7c79('0x3c')]=_[_0x7c79('0x3f')](_0x31f794['where'],{'$or':_[_0x7c79('0x2c')](_0x31f794[_0x7c79('0x36')],function(_0x314c7d){var _0x3e81fb={};_0x3e81fb[_0x314c7d]={'$like':'%'+_0x450d7f['query'][_0x7c79('0x3e')]+'%'};return _0x3e81fb;})});}_0x31f794=_[_0x7c79('0x3f')]({},_0x31f794,_0x450d7f[_0x7c79('0x41')]);return _0x114cc1['getConfigurations'](_0x31f794);}})[_0x7c79('0x25')](function(_0x3b5999){if(_0x3b5999){_0x337f60=_0x3b5999[_0x7c79('0x38')];if(!_0x450d7f[_0x7c79('0x33')][_0x7c79('0x39')](_0x7c79('0x3a'))){_0x31f794['limit']=qs[_0x7c79('0x1f')](_0x450d7f[_0x7c79('0x33')][_0x7c79('0x1f')]);_0x31f794[_0x7c79('0x1d')]=qs['offset'](_0x450d7f['query'][_0x7c79('0x1d')]);}return _0x114cc1[_0x7c79('0x4e')](_0x31f794);}})['then'](function(_0x410135){if(_0x410135){return _0x410135?{'count':_0x337f60,'rows':_0x410135}:null;}})['then'](respondWithResult(_0x603311,null))[_0x7c79('0x49')](handleError(_0x603311,null));};exports[_0x7c79('0x4f')]=function(_0x2961cb,_0x420fc6,_0x3f30ec){if(_0x2961cb['body']['id']){delete _0x2961cb['body']['id'];}return db[_0x7c79('0x42')][_0x7c79('0x50')]({'where':{'id':_0x2961cb['params']['id']}})['then'](handleEntityNotFound(_0x420fc6,null))[_0x7c79('0x25')](function(_0x2cc28e){if(_0x2cc28e){_0x2961cb[_0x7c79('0x4a')][_0x7c79('0x51')]=_0x2cc28e['id'];_0x2961cb[_0x7c79('0x4a')][_0x7c79('0x52')]=integrations[_0x7c79('0x53')](_0x2961cb['body'][_0x7c79('0x54')],_0x2961cb['body'][_0x7c79('0x2f')]);_0x2961cb[_0x7c79('0x4a')][_0x7c79('0x55')]=integrations[_0x7c79('0x56')](_0x2961cb[_0x7c79('0x4a')][_0x7c79('0x54')],_0x2961cb[_0x7c79('0x4a')]['type']);return db[_0x7c79('0x4c')][_0x7c79('0x48')](_0x2961cb[_0x7c79('0x4a')],{'include':[{'model':db[_0x7c79('0x57')],'as':_0x7c79('0x52')},{'model':db[_0x7c79('0x57')],'as':_0x7c79('0x55')}]});}return null;})['then'](respondWithResult(_0x420fc6,null))[_0x7c79('0x49')](handleError(_0x420fc6,null));};var md5=require('md5');exports[_0x7c79('0x58')]=function(_0x32ea69,_0x38b2c0,_0x5eedb6){var _0x417a17=null;var _0x233478=null;var _0x43023e=null;var _0x4b2002=null;var _0x4da2ad='';return db[_0x7c79('0x42')][_0x7c79('0x50')]({'where':{'id':_0x32ea69[_0x7c79('0x46')]['id']},'attributes':['id','name','username',_0x7c79('0x59'),'moduleName',_0x7c79('0x5a'),_0x7c79('0x5b'),'accessKey']})[_0x7c79('0x25')](handleEntityNotFound(_0x38b2c0,null))[_0x7c79('0x25')](function(_0x349813){if(_0x349813){_0x417a17=_0x349813[_0x7c79('0x5c')];_0x233478=_0x349813[_0x7c79('0x5d')];_0x43023e=_0x349813['moduleName'];_0x4da2ad=_0x349813['remoteUri'];var _0x480347=_0x4da2ad['slice'](-0x1);if(_0x480347==='/'){_0x4da2ad=_0x4da2ad[_0x7c79('0x5e')](0x0,_0x4da2ad[_0x7c79('0x5f')](_0x480347));}_0x4b2002=util[_0x7c79('0x60')](_0x7c79('0x61'),_0x4da2ad);var _0x70c807={'method':_0x7c79('0x62'),'uri':_0x4b2002,'qs':{'operation':_0x7c79('0x63'),'username':_0x349813[_0x7c79('0x5c')]},'json':!![]};return rp(_0x70c807);}})[_0x7c79('0x25')](function(_0x1bbb26){if(_0x1bbb26[_0x7c79('0x64')]){var _0x1d4c24={'method':_0x7c79('0x65'),'uri':_0x4b2002,'form':{'operation':_0x7c79('0x66'),'username':_0x417a17,'accessKey':md5(_0x1bbb26[_0x7c79('0x67')][_0x7c79('0x68')]+_0x233478)},'json':!![]};return rp(_0x1d4c24);}})[_0x7c79('0x25')](function(_0x5efd2b){if(_0x5efd2b[_0x7c79('0x64')]){var _0x554ac2={'method':_0x7c79('0x62'),'uri':_0x4b2002,'qs':{'operation':_0x7c79('0x69'),'username':_0x417a17,'sessionName':_0x5efd2b[_0x7c79('0x67')][_0x7c79('0x6a')],'elementType':_0x43023e},'json':!![]};return rp(_0x554ac2);}})['then'](function(_0x425a4c){if(_0x425a4c['success']){var _0x31b499=[_0x7c79('0x6b'),'reference','owner'];_[_0x7c79('0x6c')](_0x425a4c['result'][_0x7c79('0x37')],function(_0x4da3b8){return _0x31b499[_0x7c79('0x6d')](_0x4da3b8[_0x7c79('0x2f')]['name']);});_[_0x7c79('0x6c')](_0x425a4c['result'][_0x7c79('0x37')],function(_0x214a13){return _0x214a13[_0x7c79('0x6e')]===_0x7c79('0x6f');});return{'count':_0x425a4c[_0x7c79('0x67')][_0x7c79('0x37')][_0x7c79('0x38')],'rows':_[_0x7c79('0x2c')](_0x425a4c['result'][_0x7c79('0x37')],function(_0x3d5cf8){return{'id':_0x3d5cf8[_0x7c79('0x29')],'name':_0x3d5cf8[_0x7c79('0x70')],'custom':_[_0x7c79('0x71')](_0x3d5cf8[_0x7c79('0x29')],_0x7c79('0x72'))?!![]:![],'options':_0x3d5cf8[_0x7c79('0x2f')][_0x7c79('0x29')]===_0x7c79('0x73')&&_0x3d5cf8[_0x7c79('0x2f')][_0x7c79('0x74')]['length']>0x0?_[_0x7c79('0x2c')](_0x3d5cf8['type'][_0x7c79('0x74')],function(_0x30f6bd){return{'name':_0x30f6bd[_0x7c79('0x70')],'value':_0x30f6bd[_0x7c79('0x75')]};}):[]};})};}})[_0x7c79('0x25')](respondWithResult(_0x38b2c0,null))['catch'](function(_0x12804d){console['log']('vTiger\x20error:\x20'+_0x12804d);var _0x527ef6=_0x32ea69[_0x7c79('0x33')][_0x7c79('0x76')]?0x1f4:_0x12804d[_0x7c79('0x77')]||0x1f4;logger[_0x7c79('0x78')]('getFields,\x20%s,\x20%s,\x20%s',_0x7c79('0x58'),_0x527ef6,JSON['stringify'](_0x12804d));delete _0x12804d['name'];if(_0x527ef6===0x191){_0x527ef6=0x190;}_0x38b2c0[_0x7c79('0x1b')](_0x527ef6)[_0x7c79('0x2a')](_0x32ea69[_0x7c79('0x33')]['test']?{'message':_0x7c79('0x79'),'statusCode':_0x12804d[_0x7c79('0x77')]}:_0x12804d);});};
\ No newline at end of file
+var _0x40fe=['jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','save','update','then','destroy','error','name','index','map','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','VtigerAccount','includeAll','include','findAll','rows','show','params','find','catch','create','body','VtigerConfiguration','getConfigurations','hasOwnProperty','nolimit','AccountId','Subjects','channel','getDescriptions','VtigerField','Descriptions','md5','getFields','findOne','username','description','remoteUri','serverUrl','accessKey','moduleName','slice','lastIndexOf','format','%s/webservice.php','GET','getchallenge','success','POST','token','sessionName','autogenerated','reference','remove','result','editable','false','label','cf_','picklistValues','value','log','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','to-csv','fs-extra','lodash','squel'];(function(_0x327074,_0x191729){var _0x4a45be=function(_0x32e7b6){while(--_0x32e7b6){_0x327074['push'](_0x327074['shift']());}};_0x4a45be(++_0x191729);}(_0x40fe,0x1bc));var _0xe40f=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x40fe[_0x4565bf];return _0x5610ba;};'use strict';var emlformat=require(_0xe40f('0x0'));var rimraf=require(_0xe40f('0x1'));var zipdir=require(_0xe40f('0x2'));var jsonpatch=require(_0xe40f('0x3'));var rp=require(_0xe40f('0x4'));var moment=require('moment');var BPromise=require(_0xe40f('0x5'));var Mustache=require('mustache');var util=require(_0xe40f('0x6'));var path=require('path');var sox=require(_0xe40f('0x7'));var csv=require(_0xe40f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe40f('0x9'));var _=require(_0xe40f('0xa'));var squel=require(_0xe40f('0xb'));var crypto=require('crypto');var jsforce=require(_0xe40f('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xe40f('0x8'));var querystring=require(_0xe40f('0xd'));var Papa=require(_0xe40f('0xe'));var Redis=require('ioredis');var authService=require(_0xe40f('0xf'));var qs=require(_0xe40f('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe40f('0x11'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xe40f('0x12'));var licenseUtil=require(_0xe40f('0x13'));var db=require(_0xe40f('0x14'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x30d599,_0x16935d){_0x16935d=_0x16935d||0xcc;return function(_0x2ed616){if(_0x2ed616){return _0x30d599[_0xe40f('0x15')](_0x16935d);}return _0x30d599[_0xe40f('0x16')](_0x16935d)['end']();};}function respondWithResult(_0x5e14bc,_0x32cb1c){_0x32cb1c=_0x32cb1c||0xc8;return function(_0x225105){if(_0x225105){return _0x5e14bc['status'](_0x32cb1c)[_0xe40f('0x17')](_0x225105);}};}function respondWithFilteredResult(_0x2f0756,_0x30dc24){return function(_0x20de4c){if(_0x20de4c){var _0x5cd81c=typeof _0x30dc24['offset']===_0xe40f('0x18')&&typeof _0x30dc24['limit']===_0xe40f('0x18');var _0x5be031=_0x20de4c[_0xe40f('0x19')];var _0x52e7f0=_0x5cd81c?0x0:_0x30dc24[_0xe40f('0x1a')];var _0x49d546=_0x5cd81c?_0x20de4c[_0xe40f('0x19')]:_0x30dc24['offset']+_0x30dc24[_0xe40f('0x1b')];var _0x2f43de;if(_0x49d546>=_0x5be031){_0x49d546=_0x5be031;_0x2f43de=0xc8;}else{_0x2f43de=0xce;}_0x2f0756[_0xe40f('0x16')](_0x2f43de);return _0x2f0756[_0xe40f('0x1c')](_0xe40f('0x1d'),_0x52e7f0+'-'+_0x49d546+'/'+_0x5be031)[_0xe40f('0x17')](_0x20de4c);}return null;};}function patchUpdates(_0x271b14){return function(_0x54a0c0){try{jsonpatch['apply'](_0x54a0c0,_0x271b14,!![]);}catch(_0x31967c){return BPromise['reject'](_0x31967c);}return _0x54a0c0[_0xe40f('0x1e')]();};}function saveUpdates(_0x260be2,_0x248ae2){return function(_0x46112a){if(_0x46112a){return _0x46112a[_0xe40f('0x1f')](_0x260be2)[_0xe40f('0x20')](function(_0x5dbe6f){return _0x5dbe6f;});}return null;};}function removeEntity(_0x5cdc7b,_0x320fd5){return function(_0xcc2c23){if(_0xcc2c23){return _0xcc2c23[_0xe40f('0x21')]()[_0xe40f('0x20')](function(){_0x5cdc7b[_0xe40f('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x52b98c,_0x25b69f){return function(_0x488672){if(!_0x488672){_0x52b98c[_0xe40f('0x15')](0x194);}return _0x488672;};}function handleError(_0x9dd6ea,_0xe22300){_0xe22300=_0xe22300||0x1f4;return function(_0x444154){logger[_0xe40f('0x22')](_0x444154['stack']);if(_0x444154[_0xe40f('0x23')]){delete _0x444154['name'];}_0x9dd6ea['status'](_0xe22300)['send'](_0x444154);};}exports[_0xe40f('0x24')]=function(_0x39e43b,_0x10971d){var _0x97313f={},_0xee796f={},_0x154193={'count':0x0,'rows':[]};var _0x5c0b54=_[_0xe40f('0x25')](db['VtigerAccount'][_0xe40f('0x26')],function(_0x9b380e){return{'name':_0x9b380e[_0xe40f('0x27')],'type':_0x9b380e[_0xe40f('0x28')][_0xe40f('0x29')]};});_0xee796f['model']=_[_0xe40f('0x25')](_0x5c0b54,_0xe40f('0x23'));_0xee796f[_0xe40f('0x2a')]=_[_0xe40f('0x2b')](_0x39e43b['query']);_0xee796f[_0xe40f('0x2c')]=_['intersection'](_0xee796f[_0xe40f('0x2d')],_0xee796f[_0xe40f('0x2a')]);_0x97313f[_0xe40f('0x2e')]=_[_0xe40f('0x2f')](_0xee796f[_0xe40f('0x2d')],qs['fields'](_0x39e43b[_0xe40f('0x2a')][_0xe40f('0x30')]));_0x97313f['attributes']=_0x97313f['attributes'][_0xe40f('0x31')]?_0x97313f['attributes']:_0xee796f[_0xe40f('0x2d')];if(!_0x39e43b[_0xe40f('0x2a')]['hasOwnProperty']('nolimit')){_0x97313f[_0xe40f('0x1b')]=qs[_0xe40f('0x1b')](_0x39e43b[_0xe40f('0x2a')][_0xe40f('0x1b')]);_0x97313f['offset']=qs[_0xe40f('0x1a')](_0x39e43b[_0xe40f('0x2a')][_0xe40f('0x1a')]);}_0x97313f[_0xe40f('0x32')]=qs['sort'](_0x39e43b[_0xe40f('0x2a')][_0xe40f('0x33')]);_0x97313f[_0xe40f('0x34')]=qs['filters'](_[_0xe40f('0x35')](_0x39e43b[_0xe40f('0x2a')],_0xee796f['filters']),_0x5c0b54);if(_0x39e43b[_0xe40f('0x2a')][_0xe40f('0x36')]){_0x97313f[_0xe40f('0x34')]=_[_0xe40f('0x37')](_0x97313f['where'],{'$or':_[_0xe40f('0x25')](_0x5c0b54,function(_0x4e2517){if(_0x4e2517[_0xe40f('0x28')]!==_0xe40f('0x38')){var _0xdc2aaf={};_0xdc2aaf[_0x4e2517[_0xe40f('0x23')]]={'$like':'%'+_0x39e43b[_0xe40f('0x2a')][_0xe40f('0x36')]+'%'};return _0xdc2aaf;}})});}_0x97313f=_[_0xe40f('0x37')]({},_0x97313f,_0x39e43b[_0xe40f('0x39')]);var _0xc8ef={'where':_0x97313f[_0xe40f('0x34')]};return db[_0xe40f('0x3a')][_0xe40f('0x19')](_0xc8ef)[_0xe40f('0x20')](function(_0x432cd4){_0x154193[_0xe40f('0x19')]=_0x432cd4;if(_0x39e43b[_0xe40f('0x2a')][_0xe40f('0x3b')]){_0x97313f[_0xe40f('0x3c')]=[{'all':!![]}];}return db[_0xe40f('0x3a')][_0xe40f('0x3d')](_0x97313f);})[_0xe40f('0x20')](function(_0x516507){_0x154193[_0xe40f('0x3e')]=_0x516507;return _0x154193;})['then'](respondWithFilteredResult(_0x10971d,_0x97313f))['catch'](handleError(_0x10971d,null));};exports[_0xe40f('0x3f')]=function(_0x237d1a,_0x2ee141){var _0x5e6498={'raw':![],'where':{'id':_0x237d1a[_0xe40f('0x40')]['id']}},_0x2327d5={};_0x2327d5[_0xe40f('0x2d')]=_[_0xe40f('0x2b')](db['VtigerAccount'][_0xe40f('0x26')]);_0x2327d5[_0xe40f('0x2a')]=_[_0xe40f('0x2b')](_0x237d1a[_0xe40f('0x2a')]);_0x2327d5['filters']=_[_0xe40f('0x2f')](_0x2327d5[_0xe40f('0x2d')],_0x2327d5[_0xe40f('0x2a')]);_0x5e6498[_0xe40f('0x2e')]=_['intersection'](_0x2327d5[_0xe40f('0x2d')],qs['fields'](_0x237d1a[_0xe40f('0x2a')][_0xe40f('0x30')]));_0x5e6498['attributes']=_0x5e6498['attributes']['length']?_0x5e6498['attributes']:_0x2327d5[_0xe40f('0x2d')];if(_0x237d1a[_0xe40f('0x2a')][_0xe40f('0x3b')]){_0x5e6498['include']=[{'all':!![]}];}_0x5e6498=_[_0xe40f('0x37')]({},_0x5e6498,_0x237d1a['options']);return db['VtigerAccount'][_0xe40f('0x41')](_0x5e6498)[_0xe40f('0x20')](handleEntityNotFound(_0x2ee141,null))[_0xe40f('0x20')](respondWithResult(_0x2ee141,null))[_0xe40f('0x42')](handleError(_0x2ee141,null));};exports[_0xe40f('0x43')]=function(_0x60dc3,_0x2b6a75){return db[_0xe40f('0x3a')][_0xe40f('0x43')](_0x60dc3['body'],{})[_0xe40f('0x20')](respondWithResult(_0x2b6a75,0xc9))['catch'](handleError(_0x2b6a75,null));};exports[_0xe40f('0x1f')]=function(_0x2db40c,_0x4c1641){if(_0x2db40c['body']['id']){delete _0x2db40c[_0xe40f('0x44')]['id'];}return db['VtigerAccount'][_0xe40f('0x41')]({'where':{'id':_0x2db40c['params']['id']}})[_0xe40f('0x20')](handleEntityNotFound(_0x4c1641,null))[_0xe40f('0x20')](saveUpdates(_0x2db40c['body'],null))['then'](respondWithResult(_0x4c1641,null))[_0xe40f('0x42')](handleError(_0x4c1641,null));};exports[_0xe40f('0x21')]=function(_0x4418f7,_0x30b162){return db['VtigerAccount'][_0xe40f('0x41')]({'where':{'id':_0x4418f7[_0xe40f('0x40')]['id']}})['then'](handleEntityNotFound(_0x30b162,null))[_0xe40f('0x20')](removeEntity(_0x30b162,null))[_0xe40f('0x42')](handleError(_0x30b162,null));};exports['getConfigurations']=function(_0x46f6f2,_0x11e75d,_0x26dad3){var _0xb6c3df={};var _0x143c3d={};var _0x50a382;var _0x1b3747;return db[_0xe40f('0x3a')]['findOne']({'where':{'id':_0x46f6f2['params']['id']}})[_0xe40f('0x20')](handleEntityNotFound(_0x11e75d,null))[_0xe40f('0x20')](function(_0x3e70ab){if(_0x3e70ab){_0x50a382=_0x3e70ab;_0x143c3d[_0xe40f('0x2d')]=_[_0xe40f('0x2b')](db[_0xe40f('0x45')]['rawAttributes']);_0x143c3d[_0xe40f('0x2a')]=_[_0xe40f('0x2b')](_0x46f6f2[_0xe40f('0x2a')]);_0x143c3d[_0xe40f('0x2c')]=_[_0xe40f('0x2f')](_0x143c3d[_0xe40f('0x2d')],_0x143c3d[_0xe40f('0x2a')]);_0xb6c3df[_0xe40f('0x2e')]=_[_0xe40f('0x2f')](_0x143c3d[_0xe40f('0x2d')],qs[_0xe40f('0x30')](_0x46f6f2['query'][_0xe40f('0x30')]));_0xb6c3df['attributes']=_0xb6c3df[_0xe40f('0x2e')][_0xe40f('0x31')]?_0xb6c3df[_0xe40f('0x2e')]:_0x143c3d['model'];_0xb6c3df[_0xe40f('0x32')]=qs[_0xe40f('0x33')](_0x46f6f2[_0xe40f('0x2a')]['sort']);_0xb6c3df[_0xe40f('0x34')]=qs[_0xe40f('0x2c')](_[_0xe40f('0x35')](_0x46f6f2[_0xe40f('0x2a')],_0x143c3d[_0xe40f('0x2c')]));if(_0x46f6f2[_0xe40f('0x2a')]['filter']){_0xb6c3df[_0xe40f('0x34')]=_[_0xe40f('0x37')](_0xb6c3df[_0xe40f('0x34')],{'$or':_[_0xe40f('0x25')](_0xb6c3df[_0xe40f('0x2e')],function(_0x54f9dc){var _0x383b47={};_0x383b47[_0x54f9dc]={'$like':'%'+_0x46f6f2[_0xe40f('0x2a')][_0xe40f('0x36')]+'%'};return _0x383b47;})});}_0xb6c3df=_['merge']({},_0xb6c3df,_0x46f6f2[_0xe40f('0x39')]);return _0x50a382[_0xe40f('0x46')](_0xb6c3df);}})['then'](function(_0x32646b){if(_0x32646b){_0x1b3747=_0x32646b[_0xe40f('0x31')];if(!_0x46f6f2[_0xe40f('0x2a')][_0xe40f('0x47')](_0xe40f('0x48'))){_0xb6c3df[_0xe40f('0x1b')]=qs['limit'](_0x46f6f2[_0xe40f('0x2a')][_0xe40f('0x1b')]);_0xb6c3df[_0xe40f('0x1a')]=qs['offset'](_0x46f6f2[_0xe40f('0x2a')][_0xe40f('0x1a')]);}return _0x50a382[_0xe40f('0x46')](_0xb6c3df);}})[_0xe40f('0x20')](function(_0x19c0b2){if(_0x19c0b2){return _0x19c0b2?{'count':_0x1b3747,'rows':_0x19c0b2}:null;}})[_0xe40f('0x20')](respondWithResult(_0x11e75d,null))[_0xe40f('0x42')](handleError(_0x11e75d,null));};exports['addConfiguration']=function(_0x5bbf0d,_0x2fefc5,_0x1e344b){if(_0x5bbf0d[_0xe40f('0x44')]['id']){delete _0x5bbf0d['body']['id'];}return db['VtigerAccount']['findOne']({'where':{'id':_0x5bbf0d['params']['id']}})['then'](handleEntityNotFound(_0x2fefc5,null))[_0xe40f('0x20')](function(_0x308d7d){if(_0x308d7d){_0x5bbf0d[_0xe40f('0x44')][_0xe40f('0x49')]=_0x308d7d['id'];_0x5bbf0d[_0xe40f('0x44')][_0xe40f('0x4a')]=integrations['getSubjects'](_0x5bbf0d[_0xe40f('0x44')][_0xe40f('0x4b')],_0x5bbf0d[_0xe40f('0x44')][_0xe40f('0x28')]);_0x5bbf0d['body']['Descriptions']=integrations[_0xe40f('0x4c')](_0x5bbf0d[_0xe40f('0x44')]['channel'],_0x5bbf0d[_0xe40f('0x44')]['type']);return db['VtigerConfiguration'][_0xe40f('0x43')](_0x5bbf0d[_0xe40f('0x44')],{'include':[{'model':db['VtigerField'],'as':_0xe40f('0x4a')},{'model':db[_0xe40f('0x4d')],'as':_0xe40f('0x4e')}]});}return null;})['then'](respondWithResult(_0x2fefc5,null))[_0xe40f('0x42')](handleError(_0x2fefc5,null));};var md5=require(_0xe40f('0x4f'));exports[_0xe40f('0x50')]=function(_0x5f1951,_0x5dbf8a,_0xdeed21){var _0x5e630a=null;var _0x4ee56f=null;var _0x2f0271=null;var _0x26a70f=null;var _0x5b41fd='';return db[_0xe40f('0x3a')][_0xe40f('0x51')]({'where':{'id':_0x5f1951[_0xe40f('0x40')]['id']},'attributes':['id',_0xe40f('0x23'),_0xe40f('0x52'),_0xe40f('0x53'),'moduleName',_0xe40f('0x54'),_0xe40f('0x55'),'accessKey']})[_0xe40f('0x20')](handleEntityNotFound(_0x5dbf8a,null))[_0xe40f('0x20')](function(_0x5b0d75){if(_0x5b0d75){_0x5e630a=_0x5b0d75[_0xe40f('0x52')];_0x4ee56f=_0x5b0d75[_0xe40f('0x56')];_0x2f0271=_0x5b0d75[_0xe40f('0x57')];_0x5b41fd=_0x5b0d75['remoteUri'];var _0x160dcf=_0x5b41fd[_0xe40f('0x58')](-0x1);if(_0x160dcf==='/'){_0x5b41fd=_0x5b41fd['substring'](0x0,_0x5b41fd[_0xe40f('0x59')](_0x160dcf));}_0x26a70f=util[_0xe40f('0x5a')](_0xe40f('0x5b'),_0x5b41fd);var _0x5a85b7={'method':_0xe40f('0x5c'),'uri':_0x26a70f,'qs':{'operation':_0xe40f('0x5d'),'username':_0x5b0d75[_0xe40f('0x52')]},'json':!![]};return rp(_0x5a85b7);}})[_0xe40f('0x20')](function(_0x453ab5){if(_0x453ab5[_0xe40f('0x5e')]){var _0x11dff4={'method':_0xe40f('0x5f'),'uri':_0x26a70f,'form':{'operation':'login','username':_0x5e630a,'accessKey':md5(_0x453ab5['result'][_0xe40f('0x60')]+_0x4ee56f)},'json':!![]};return rp(_0x11dff4);}})[_0xe40f('0x20')](function(_0x575431){if(_0x575431[_0xe40f('0x5e')]){var _0x1c483b={'method':'GET','uri':_0x26a70f,'qs':{'operation':'describe','username':_0x5e630a,'sessionName':_0x575431['result'][_0xe40f('0x61')],'elementType':_0x2f0271},'json':!![]};return rp(_0x1c483b);}})['then'](function(_0x4d2110){if(_0x4d2110[_0xe40f('0x5e')]){var _0x1cce63=[_0xe40f('0x62'),_0xe40f('0x63'),'owner'];_[_0xe40f('0x64')](_0x4d2110[_0xe40f('0x65')][_0xe40f('0x30')],function(_0x421a41){return _0x1cce63['includes'](_0x421a41[_0xe40f('0x28')][_0xe40f('0x23')]);});_['remove'](_0x4d2110[_0xe40f('0x65')][_0xe40f('0x30')],function(_0x15abe5){return _0x15abe5[_0xe40f('0x66')]===_0xe40f('0x67');});return{'count':_0x4d2110[_0xe40f('0x65')][_0xe40f('0x30')][_0xe40f('0x31')],'rows':_[_0xe40f('0x25')](_0x4d2110['result']['fields'],function(_0x3a4f83){return{'id':_0x3a4f83[_0xe40f('0x23')],'name':_0x3a4f83[_0xe40f('0x68')],'custom':_['startsWith'](_0x3a4f83[_0xe40f('0x23')],_0xe40f('0x69'))?!![]:![],'options':_0x3a4f83[_0xe40f('0x28')][_0xe40f('0x23')]==='picklist'&&_0x3a4f83[_0xe40f('0x28')][_0xe40f('0x6a')]['length']>0x0?_['map'](_0x3a4f83[_0xe40f('0x28')][_0xe40f('0x6a')],function(_0x2c53c6){return{'name':_0x2c53c6[_0xe40f('0x68')],'value':_0x2c53c6[_0xe40f('0x6b')]};}):[]};})};}})[_0xe40f('0x20')](respondWithResult(_0x5dbf8a,null))['catch'](function(_0x50fb57){console[_0xe40f('0x6c')]('vTiger\x20error:\x20'+_0x50fb57);var _0x3a3050=_0x5f1951[_0xe40f('0x2a')][_0xe40f('0x6d')]?0x1f4:_0x50fb57[_0xe40f('0x6e')]||0x1f4;logger[_0xe40f('0x22')](_0xe40f('0x6f'),_0xe40f('0x50'),_0x3a3050,JSON[_0xe40f('0x70')](_0x50fb57));delete _0x50fb57['name'];if(_0x3a3050===0x191){_0x3a3050=0x190;}_0x5dbf8a['status'](_0x3a3050)['send'](_0x5f1951[_0xe40f('0x2a')][_0xe40f('0x6d')]?{'message':_0xe40f('0x71'),'statusCode':_0x50fb57[_0xe40f('0x6e')]}:_0x50fb57);});};
\ No newline at end of file
index 4f256d1..955e517 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9416=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','int_vtiger_accounts','lodash','util'];(function(_0x54fc38,_0x18b950){var _0x435fd2=function(_0x533bd6){while(--_0x533bd6){_0x54fc38['push'](_0x54fc38['shift']());}};_0x435fd2(++_0x18b950);}(_0x9416,0xde));var _0x6941=function(_0x505598,_0x479db5){_0x505598=_0x505598-0x0;var _0x140049=_0x9416[_0x505598];return _0x140049;};'use strict';var _=require(_0x6941('0x0'));var util=require(_0x6941('0x1'));var logger=require(_0x6941('0x2'))(_0x6941('0x3'));var moment=require(_0x6941('0x4'));var BPromise=require(_0x6941('0x5'));var rp=require(_0x6941('0x6'));var fs=require('fs');var path=require(_0x6941('0x7'));var rimraf=require(_0x6941('0x8'));var config=require(_0x6941('0x9'));var attributes=require(_0x6941('0xa'));var integrations=require(_0x6941('0xb'));module[_0x6941('0xc')]=function(_0x28f5b4,_0x104025){return _0x28f5b4[_0x6941('0xd')](_0x6941('0xe'),attributes,{'tableName':_0x6941('0xf'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6ebf=['../../components/integrations/configuration','int_vtiger_accounts','lodash','util','api','moment','path','../../config/environment','./intVtigerAccount.attributes'];(function(_0x3b4dd8,_0x35ed64){var _0x29b8db=function(_0x4c4696){while(--_0x4c4696){_0x3b4dd8['push'](_0x3b4dd8['shift']());}};_0x29b8db(++_0x35ed64);}(_0x6ebf,0x9b));var _0xf6eb=function(_0xd2d54,_0x5329f7){_0xd2d54=_0xd2d54-0x0;var _0x78b113=_0x6ebf[_0xd2d54];return _0x78b113;};'use strict';var _=require(_0xf6eb('0x0'));var util=require(_0xf6eb('0x1'));var logger=require('../../config/logger')(_0xf6eb('0x2'));var moment=require(_0xf6eb('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf6eb('0x4'));var rimraf=require('rimraf');var config=require(_0xf6eb('0x5'));var attributes=require(_0xf6eb('0x6'));var integrations=require(_0xf6eb('0x7'));module['exports']=function(_0x3af559,_0x502888){return _0x3af559['define']('VtigerAccount',attributes,{'tableName':_0xf6eb('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dc9b98c..e89dcd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','GetVtigerAccount','VtigerAccount','findAll','options','where','attributes','limit','include','model','map','ShowVtigerAccount','find','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x24b852,_0x2bad67){var _0x180ad2=function(_0x454562){while(--_0x454562){_0x24b852['push'](_0x24b852['shift']());}};_0x180ad2(++_0x2bad67);}(_0xbaf0,0x12a));var _0x0baf=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xbaf0[_0x432682];return _0x463d05;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var moment=require(_0x0baf('0x1'));var BPromise=require(_0x0baf('0x2'));var rs=require(_0x0baf('0x3'));var fs=require('fs');var Redis=require(_0x0baf('0x4'));var db=require(_0x0baf('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0baf('0x6'))(_0x0baf('0x7'));var config=require(_0x0baf('0x8'));var jayson=require(_0x0baf('0x9'));var client=jayson[_0x0baf('0xa')][_0x0baf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1a10b1,_0x2dcaac,_0x1d0a0d){return new BPromise(function(_0x5f5030,_0x11b947){return client['request'](_0x1a10b1,_0x1d0a0d)[_0x0baf('0xc')](function(_0x2c7442){logger[_0x0baf('0xd')](_0x0baf('0xe'),_0x2dcaac,_0x0baf('0xf'));logger[_0x0baf('0x10')](_0x0baf('0x11'),_0x2dcaac,_0x0baf('0xf'),JSON[_0x0baf('0x12')](_0x2c7442));if(_0x2c7442[_0x0baf('0x13')]){if(_0x2c7442[_0x0baf('0x13')]['code']===0x1f4){logger['error'](_0x0baf('0xe'),_0x2dcaac,_0x2c7442[_0x0baf('0x13')][_0x0baf('0x14')]);return _0x11b947(_0x2c7442[_0x0baf('0x13')]['message']);}logger[_0x0baf('0x13')]('VtigerAccount,\x20%s,\x20%s',_0x2dcaac,_0x2c7442[_0x0baf('0x13')][_0x0baf('0x14')]);return _0x5f5030(_0x2c7442[_0x0baf('0x13')][_0x0baf('0x14')]);}else{logger[_0x0baf('0xd')](_0x0baf('0xe'),_0x2dcaac,'request\x20sent');_0x5f5030(_0x2c7442['result'][_0x0baf('0x14')]);}})[_0x0baf('0x15')](function(_0x283408){logger[_0x0baf('0x13')](_0x0baf('0xe'),_0x2dcaac,_0x283408);_0x11b947(_0x283408);});});}exports[_0x0baf('0x16')]=function(_0x53c338){var _0x63c820=this;return new Promise(function(_0xfbecec,_0x1ef0e5){return db[_0x0baf('0x17')][_0x0baf('0x18')]({'raw':_0x53c338[_0x0baf('0x19')]?_0x53c338['options']['raw']===undefined?!![]:![]:!![],'where':_0x53c338[_0x0baf('0x19')]?_0x53c338[_0x0baf('0x19')][_0x0baf('0x1a')]||null:null,'attributes':_0x53c338[_0x0baf('0x19')]?_0x53c338[_0x0baf('0x19')][_0x0baf('0x1b')]||null:null,'limit':_0x53c338[_0x0baf('0x19')]?_0x53c338[_0x0baf('0x19')][_0x0baf('0x1c')]||null:null,'include':_0x53c338[_0x0baf('0x19')]?_0x53c338['options'][_0x0baf('0x1d')]?_['map'](_0x53c338[_0x0baf('0x19')]['include'],function(_0x4de74c){return{'model':db[_0x4de74c[_0x0baf('0x1e')]],'as':_0x4de74c['as'],'attributes':_0x4de74c['attributes'],'include':_0x4de74c['include']?_[_0x0baf('0x1f')](_0x4de74c[_0x0baf('0x1d')],function(_0x34e264){return{'model':db[_0x34e264[_0x0baf('0x1e')]],'as':_0x34e264['as'],'attributes':_0x34e264[_0x0baf('0x1b')],'include':_0x34e264['include']?_[_0x0baf('0x1f')](_0x34e264[_0x0baf('0x1d')],function(_0x1ca35a){return{'model':db[_0x1ca35a[_0x0baf('0x1e')]],'as':_0x1ca35a['as'],'attributes':_0x1ca35a[_0x0baf('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x0baf('0xc')](function(_0x453525){logger['info'](_0x0baf('0x16'),_0x53c338);logger[_0x0baf('0x10')](_0x0baf('0x16'),_0x53c338,JSON[_0x0baf('0x12')](_0x453525));_0xfbecec(_0x453525);})['catch'](function(_0x29dbdf){logger[_0x0baf('0x13')]('GetVtigerAccount',_0x29dbdf[_0x0baf('0x14')],_0x53c338);_0x1ef0e5(_0x63c820[_0x0baf('0x13')](0x1f4,_0x29dbdf[_0x0baf('0x14')]));});});};exports[_0x0baf('0x20')]=function(_0xd14f0f){var _0x366924=this;return new Promise(function(_0x213a6a,_0x57476f){return db[_0x0baf('0x17')][_0x0baf('0x21')]({'raw':_0xd14f0f[_0x0baf('0x19')]?_0xd14f0f[_0x0baf('0x19')][_0x0baf('0x22')]===undefined?!![]:![]:!![],'where':_0xd14f0f[_0x0baf('0x19')]?_0xd14f0f[_0x0baf('0x19')][_0x0baf('0x1a')]||null:null,'attributes':_0xd14f0f[_0x0baf('0x19')]?_0xd14f0f[_0x0baf('0x19')][_0x0baf('0x1b')]||null:null,'include':_0xd14f0f[_0x0baf('0x19')]?_0xd14f0f[_0x0baf('0x19')][_0x0baf('0x1d')]?_['map'](_0xd14f0f[_0x0baf('0x19')]['include'],function(_0x1aa474){return{'model':db[_0x1aa474[_0x0baf('0x1e')]],'as':_0x1aa474['as'],'attributes':_0x1aa474[_0x0baf('0x1b')],'include':_0x1aa474[_0x0baf('0x1d')]?_['map'](_0x1aa474[_0x0baf('0x1d')],function(_0x1d6575){return{'model':db[_0x1d6575['model']],'as':_0x1d6575['as'],'attributes':_0x1d6575[_0x0baf('0x1b')],'include':_0x1d6575[_0x0baf('0x1d')]?_[_0x0baf('0x1f')](_0x1d6575[_0x0baf('0x1d')],function(_0x1f60bd){return{'model':db[_0x1f60bd[_0x0baf('0x1e')]],'as':_0x1f60bd['as'],'attributes':_0x1f60bd[_0x0baf('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x0baf('0xc')](function(_0x4aa6ed){logger[_0x0baf('0xd')](_0x0baf('0x20'),_0xd14f0f);logger['debug'](_0x0baf('0x20'),_0xd14f0f,JSON['stringify'](_0x4aa6ed));_0x213a6a(_0x4aa6ed);})['catch'](function(_0x11bc49){logger[_0x0baf('0x13')]('ShowVtigerAccount',_0x11bc49['message'],_0xd14f0f);_0x57476f(_0x366924[_0x0baf('0x13')](0x1f4,_0x11bc49[_0x0baf('0x14')]));});});};
\ No newline at end of file
+var _0xab40=['VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','VtigerAccount','findAll','options','limit','include','model','map','attributes','GetVtigerAccount','ShowVtigerAccount','raw','where','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug'];(function(_0xea0e0c,_0x49b078){var _0x1111ff=function(_0x25b90b){while(--_0x25b90b){_0xea0e0c['push'](_0xea0e0c['shift']());}};_0x1111ff(++_0x49b078);}(_0xab40,0xcd));var _0x0ab4=function(_0x2776ec,_0x14648f){_0x2776ec=_0x2776ec-0x0;var _0x18c757=_0xab40[_0x2776ec];return _0x18c757;};'use strict';var _=require(_0x0ab4('0x0'));var util=require(_0x0ab4('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0ab4('0x2'));var db=require(_0x0ab4('0x3'))['db'];var utils=require(_0x0ab4('0x4'));var logger=require(_0x0ab4('0x5'))(_0x0ab4('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0ab4('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x10d92b,_0x46d16a,_0x11e99f){return new BPromise(function(_0x6d135d,_0x4cf8de){return client['request'](_0x10d92b,_0x11e99f)['then'](function(_0x24271e){logger[_0x0ab4('0x8')](_0x0ab4('0x9'),_0x46d16a,_0x0ab4('0xa'));logger[_0x0ab4('0xb')](_0x0ab4('0xc'),_0x46d16a,_0x0ab4('0xa'),JSON[_0x0ab4('0xd')](_0x24271e));if(_0x24271e['error']){if(_0x24271e['error'][_0x0ab4('0xe')]===0x1f4){logger['error'](_0x0ab4('0x9'),_0x46d16a,_0x24271e[_0x0ab4('0xf')][_0x0ab4('0x10')]);return _0x4cf8de(_0x24271e[_0x0ab4('0xf')][_0x0ab4('0x10')]);}logger[_0x0ab4('0xf')](_0x0ab4('0x9'),_0x46d16a,_0x24271e[_0x0ab4('0xf')][_0x0ab4('0x10')]);return _0x6d135d(_0x24271e[_0x0ab4('0xf')][_0x0ab4('0x10')]);}else{logger[_0x0ab4('0x8')](_0x0ab4('0x9'),_0x46d16a,_0x0ab4('0xa'));_0x6d135d(_0x24271e[_0x0ab4('0x11')][_0x0ab4('0x10')]);}})[_0x0ab4('0x12')](function(_0x2bdda7){logger['error']('VtigerAccount,\x20%s,\x20%s',_0x46d16a,_0x2bdda7);_0x4cf8de(_0x2bdda7);});});}exports['GetVtigerAccount']=function(_0x17422f){var _0x30d5df=this;return new Promise(function(_0x2f50d2,_0x53723c){return db[_0x0ab4('0x13')][_0x0ab4('0x14')]({'raw':_0x17422f[_0x0ab4('0x15')]?_0x17422f[_0x0ab4('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x17422f['options']?_0x17422f[_0x0ab4('0x15')]['where']||null:null,'attributes':_0x17422f[_0x0ab4('0x15')]?_0x17422f[_0x0ab4('0x15')]['attributes']||null:null,'limit':_0x17422f[_0x0ab4('0x15')]?_0x17422f[_0x0ab4('0x15')][_0x0ab4('0x16')]||null:null,'include':_0x17422f[_0x0ab4('0x15')]?_0x17422f[_0x0ab4('0x15')]['include']?_['map'](_0x17422f[_0x0ab4('0x15')][_0x0ab4('0x17')],function(_0x392afe){return{'model':db[_0x392afe[_0x0ab4('0x18')]],'as':_0x392afe['as'],'attributes':_0x392afe['attributes'],'include':_0x392afe[_0x0ab4('0x17')]?_[_0x0ab4('0x19')](_0x392afe[_0x0ab4('0x17')],function(_0x4ea9aa){return{'model':db[_0x4ea9aa['model']],'as':_0x4ea9aa['as'],'attributes':_0x4ea9aa[_0x0ab4('0x1a')],'include':_0x4ea9aa[_0x0ab4('0x17')]?_[_0x0ab4('0x19')](_0x4ea9aa['include'],function(_0x519b23){return{'model':db[_0x519b23['model']],'as':_0x519b23['as'],'attributes':_0x519b23[_0x0ab4('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3bf844){logger[_0x0ab4('0x8')]('GetVtigerAccount',_0x17422f);logger['debug']('GetVtigerAccount',_0x17422f,JSON[_0x0ab4('0xd')](_0x3bf844));_0x2f50d2(_0x3bf844);})[_0x0ab4('0x12')](function(_0x1cfdad){logger[_0x0ab4('0xf')](_0x0ab4('0x1b'),_0x1cfdad['message'],_0x17422f);_0x53723c(_0x30d5df['error'](0x1f4,_0x1cfdad['message']));});});};exports[_0x0ab4('0x1c')]=function(_0x2b66d5){var _0x155d96=this;return new Promise(function(_0x182bbe,_0x46eda7){return db['VtigerAccount']['find']({'raw':_0x2b66d5[_0x0ab4('0x15')]?_0x2b66d5[_0x0ab4('0x15')][_0x0ab4('0x1d')]===undefined?!![]:![]:!![],'where':_0x2b66d5['options']?_0x2b66d5['options'][_0x0ab4('0x1e')]||null:null,'attributes':_0x2b66d5['options']?_0x2b66d5[_0x0ab4('0x15')][_0x0ab4('0x1a')]||null:null,'include':_0x2b66d5[_0x0ab4('0x15')]?_0x2b66d5[_0x0ab4('0x15')][_0x0ab4('0x17')]?_[_0x0ab4('0x19')](_0x2b66d5['options'][_0x0ab4('0x17')],function(_0x4696fc){return{'model':db[_0x4696fc[_0x0ab4('0x18')]],'as':_0x4696fc['as'],'attributes':_0x4696fc[_0x0ab4('0x1a')],'include':_0x4696fc['include']?_['map'](_0x4696fc[_0x0ab4('0x17')],function(_0x3e65a1){return{'model':db[_0x3e65a1[_0x0ab4('0x18')]],'as':_0x3e65a1['as'],'attributes':_0x3e65a1['attributes'],'include':_0x3e65a1['include']?_['map'](_0x3e65a1[_0x0ab4('0x17')],function(_0x35eab3){return{'model':db[_0x35eab3[_0x0ab4('0x18')]],'as':_0x35eab3['as'],'attributes':_0x35eab3['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x492943){logger[_0x0ab4('0x8')](_0x0ab4('0x1c'),_0x2b66d5);logger[_0x0ab4('0xb')](_0x0ab4('0x1c'),_0x2b66d5,JSON[_0x0ab4('0xd')](_0x492943));_0x182bbe(_0x492943);})[_0x0ab4('0x12')](function(_0x52d9bf){logger[_0x0ab4('0xf')](_0x0ab4('0x1c'),_0x52d9bf[_0x0ab4('0x10')],_0x2b66d5);_0x46eda7(_0x155d96['error'](0x1f4,_0x52d9bf[_0x0ab4('0x10')]));});});};
\ No newline at end of file
index b0afc43..e8f518e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ed7=['show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intVtigerConfiguration.controller','isAuthenticated','get'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x3ed7,0x1b6));var _0x73ed=function(_0x2008c0,_0x583df7){_0x2008c0=_0x2008c0-0x0;var _0x21dec2=_0x3ed7[_0x2008c0];return _0x21dec2;};'use strict';var multer=require(_0x73ed('0x0'));var util=require(_0x73ed('0x1'));var path=require(_0x73ed('0x2'));var timeout=require(_0x73ed('0x3'));var express=require(_0x73ed('0x4'));var router=express[_0x73ed('0x5')]();var fs_extra=require(_0x73ed('0x6'));var auth=require(_0x73ed('0x7'));var interaction=require(_0x73ed('0x8'));var config=require('../../config/environment');var controller=require(_0x73ed('0x9'));router['get']('/',auth[_0x73ed('0xa')](),controller['index']);router[_0x73ed('0xb')]('/:id',auth[_0x73ed('0xa')](),controller[_0x73ed('0xc')]);router['get'](_0x73ed('0xd'),auth[_0x73ed('0xa')](),controller['getFields']);router[_0x73ed('0xb')](_0x73ed('0xe'),auth[_0x73ed('0xa')](),controller[_0x73ed('0xf')]);router[_0x73ed('0xb')](_0x73ed('0x10'),auth[_0x73ed('0xa')](),controller[_0x73ed('0x11')]);router[_0x73ed('0x12')]('/',auth['isAuthenticated'](),controller[_0x73ed('0x13')]);router[_0x73ed('0x14')](_0x73ed('0x15'),auth['isAuthenticated'](),controller[_0x73ed('0x16')]);router['delete'](_0x73ed('0x15'),auth[_0x73ed('0xa')](),controller[_0x73ed('0x17')]);module[_0x73ed('0x18')]=router;
\ No newline at end of file
+var _0x633b=['/:id/subjects','getSubjects','getDescriptions','post','create','/:id','exports','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','show','/:id/fields'];(function(_0x9c7969,_0xfbafa0){var _0x53408f=function(_0x12f1f7){while(--_0x12f1f7){_0x9c7969['push'](_0x9c7969['shift']());}};_0x53408f(++_0xfbafa0);}(_0x633b,0x1cf));var _0xb633=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x633b[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xb633('0x0'));var express=require(_0xb633('0x1'));var router=express['Router']();var fs_extra=require(_0xb633('0x2'));var auth=require(_0xb633('0x3'));var interaction=require(_0xb633('0x4'));var config=require(_0xb633('0x5'));var controller=require(_0xb633('0x6'));router[_0xb633('0x7')]('/',auth[_0xb633('0x8')](),controller[_0xb633('0x9')]);router[_0xb633('0x7')]('/:id',auth[_0xb633('0x8')](),controller[_0xb633('0xa')]);router[_0xb633('0x7')](_0xb633('0xb'),auth[_0xb633('0x8')](),controller['getFields']);router[_0xb633('0x7')](_0xb633('0xc'),auth[_0xb633('0x8')](),controller[_0xb633('0xd')]);router[_0xb633('0x7')]('/:id/descriptions',auth[_0xb633('0x8')](),controller[_0xb633('0xe')]);router[_0xb633('0xf')]('/',auth[_0xb633('0x8')](),controller[_0xb633('0x10')]);router['put']('/:id',auth[_0xb633('0x8')](),controller['update']);router['delete'](_0xb633('0x11'),auth[_0xb633('0x8')](),controller['destroy']);module[_0xb633('0x12')]=router;
\ No newline at end of file
index 5e0c3e8..92c0d3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc59c=['STRING','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xc59c,0x17d));var _0xcc59=function(_0x9d304e,_0x571739){_0x9d304e=_0x9d304e-0x0;var _0x13f2c9=_0xc59c[_0x9d304e];return _0x13f2c9;};'use strict';var Sequelize=require('sequelize');module[_0xcc59('0x0')]={'name':{'type':Sequelize[_0xcc59('0x1')]},'description':{'type':Sequelize[_0xcc59('0x1')]}};
\ No newline at end of file
+var _0xaa7a=['exports','STRING','sequelize'];(function(_0x18a5c0,_0x514506){var _0x1d720d=function(_0x49dad9){while(--_0x49dad9){_0x18a5c0['push'](_0x18a5c0['shift']());}};_0x1d720d(++_0x514506);}(_0xaa7a,0x167));var _0xaaa7=function(_0x53fe97,_0x544271){_0x53fe97=_0x53fe97-0x0;var _0x5c49a2=_0xaa7a[_0x53fe97];return _0x5c49a2;};'use strict';var Sequelize=require(_0xaaa7('0x0'));module[_0xaaa7('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xaaa7('0x2')]}};
\ No newline at end of file
index e4e40ed..1fe75ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecb6=['findOne','VtigerField','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','VtigerConfiguration','rawAttributes','fieldName','key','filters','intersection','model','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','includeAll','include','findAll','rows','catch','show','keys','options','create','body','find','params','getFields'];(function(_0xff8595,_0x39341d){var _0x31e49e=function(_0x23ee7b){while(--_0x23ee7b){_0xff8595['push'](_0xff8595['shift']());}};_0x31e49e(++_0x39341d);}(_0xecb6,0xaa));var _0x6ecb=function(_0x2b0a92,_0x1caa3a){_0x2b0a92=_0x2b0a92-0x0;var _0x721f18=_0xecb6[_0x2b0a92];return _0x721f18;};'use strict';var emlformat=require(_0x6ecb('0x0'));var rimraf=require(_0x6ecb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6ecb('0x2'));var rp=require(_0x6ecb('0x3'));var moment=require(_0x6ecb('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6ecb('0x5'));var util=require('util');var path=require(_0x6ecb('0x6'));var sox=require('sox');var csv=require(_0x6ecb('0x7'));var ejs=require(_0x6ecb('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6ecb('0x9'));var squel=require(_0x6ecb('0xa'));var crypto=require(_0x6ecb('0xb'));var jsforce=require(_0x6ecb('0xc'));var deskjs=require(_0x6ecb('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6ecb('0xe'));var Papa=require(_0x6ecb('0xf'));var Redis=require(_0x6ecb('0x10'));var authService=require(_0x6ecb('0x11'));var qs=require(_0x6ecb('0x12'));var as=require(_0x6ecb('0x13'));var hardwareService=require(_0x6ecb('0x14'));var logger=require('../../config/logger')(_0x6ecb('0x15'));var utils=require(_0x6ecb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x6ecb('0x17'));var db=require(_0x6ecb('0x18'))['db'];function respondWithStatusCode(_0xe559a4,_0x1336bc){_0x1336bc=_0x1336bc||0xcc;return function(_0x5dc9b6){if(_0x5dc9b6){return _0xe559a4[_0x6ecb('0x19')](_0x1336bc);}return _0xe559a4[_0x6ecb('0x1a')](_0x1336bc)[_0x6ecb('0x1b')]();};}function respondWithResult(_0x2d6b35,_0x2c0ffa){_0x2c0ffa=_0x2c0ffa||0xc8;return function(_0x3b1c36){if(_0x3b1c36){return _0x2d6b35[_0x6ecb('0x1a')](_0x2c0ffa)[_0x6ecb('0x1c')](_0x3b1c36);}};}function respondWithFilteredResult(_0x5cbad2,_0x4d544f){return function(_0xea1bbd){if(_0xea1bbd){var _0x4e04fe=typeof _0x4d544f[_0x6ecb('0x1d')]===_0x6ecb('0x1e')&&typeof _0x4d544f[_0x6ecb('0x1f')]===_0x6ecb('0x1e');var _0x3527b1=_0xea1bbd[_0x6ecb('0x20')];var _0xa27b80=_0x4e04fe?0x0:_0x4d544f[_0x6ecb('0x1d')];var _0x1adae7=_0x4e04fe?_0xea1bbd[_0x6ecb('0x20')]:_0x4d544f[_0x6ecb('0x1d')]+_0x4d544f['limit'];var _0x3fc65f;if(_0x1adae7>=_0x3527b1){_0x1adae7=_0x3527b1;_0x3fc65f=0xc8;}else{_0x3fc65f=0xce;}_0x5cbad2[_0x6ecb('0x1a')](_0x3fc65f);return _0x5cbad2[_0x6ecb('0x21')](_0x6ecb('0x22'),_0xa27b80+'-'+_0x1adae7+'/'+_0x3527b1)[_0x6ecb('0x1c')](_0xea1bbd);}return null;};}function patchUpdates(_0x28bf63){return function(_0x32c1cb){try{jsonpatch[_0x6ecb('0x23')](_0x32c1cb,_0x28bf63,!![]);}catch(_0x363688){return BPromise[_0x6ecb('0x24')](_0x363688);}return _0x32c1cb[_0x6ecb('0x25')]();};}function saveUpdates(_0x5496ae,_0x4673f0){return function(_0x371884){if(_0x371884){return _0x371884[_0x6ecb('0x26')](_0x5496ae)[_0x6ecb('0x27')](function(_0x4a067c){return _0x4a067c;});}return null;};}function removeEntity(_0x3f929a,_0x4a160d){return function(_0x16e52e){if(_0x16e52e){return _0x16e52e[_0x6ecb('0x28')]()[_0x6ecb('0x27')](function(){_0x3f929a[_0x6ecb('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1756d8,_0x3ad739){return function(_0x1517cc){if(!_0x1517cc){_0x1756d8['sendStatus'](0x194);}return _0x1517cc;};}function handleError(_0x28e236,_0x4b758d){_0x4b758d=_0x4b758d||0x1f4;return function(_0x54b1cd){logger[_0x6ecb('0x29')](_0x54b1cd['stack']);if(_0x54b1cd[_0x6ecb('0x2a')]){delete _0x54b1cd[_0x6ecb('0x2a')];}_0x28e236['status'](_0x4b758d)[_0x6ecb('0x2b')](_0x54b1cd);};}exports[_0x6ecb('0x2c')]=function(_0xd54d4f,_0x3995cb){var _0x3125a5={},_0x4906a9={},_0x5304be={'count':0x0,'rows':[]};var _0x4e3ada=_[_0x6ecb('0x2d')](db[_0x6ecb('0x2e')][_0x6ecb('0x2f')],function(_0x45d3ba){return{'name':_0x45d3ba[_0x6ecb('0x30')],'type':_0x45d3ba['type'][_0x6ecb('0x31')]};});_0x4906a9['model']=_[_0x6ecb('0x2d')](_0x4e3ada,_0x6ecb('0x2a'));_0x4906a9['query']=_['keys'](_0xd54d4f['query']);_0x4906a9[_0x6ecb('0x32')]=_[_0x6ecb('0x33')](_0x4906a9[_0x6ecb('0x34')],_0x4906a9[_0x6ecb('0x35')]);_0x3125a5['attributes']=_['intersection'](_0x4906a9['model'],qs[_0x6ecb('0x36')](_0xd54d4f[_0x6ecb('0x35')][_0x6ecb('0x36')]));_0x3125a5[_0x6ecb('0x37')]=_0x3125a5[_0x6ecb('0x37')][_0x6ecb('0x38')]?_0x3125a5[_0x6ecb('0x37')]:_0x4906a9[_0x6ecb('0x34')];if(!_0xd54d4f[_0x6ecb('0x35')][_0x6ecb('0x39')](_0x6ecb('0x3a'))){_0x3125a5['limit']=qs['limit'](_0xd54d4f[_0x6ecb('0x35')][_0x6ecb('0x1f')]);_0x3125a5[_0x6ecb('0x1d')]=qs[_0x6ecb('0x1d')](_0xd54d4f[_0x6ecb('0x35')][_0x6ecb('0x1d')]);}_0x3125a5[_0x6ecb('0x3b')]=qs['sort'](_0xd54d4f[_0x6ecb('0x35')][_0x6ecb('0x3c')]);_0x3125a5[_0x6ecb('0x3d')]=qs[_0x6ecb('0x32')](_[_0x6ecb('0x3e')](_0xd54d4f[_0x6ecb('0x35')],_0x4906a9[_0x6ecb('0x32')]),_0x4e3ada);if(_0xd54d4f['query'][_0x6ecb('0x3f')]){_0x3125a5[_0x6ecb('0x3d')]=_[_0x6ecb('0x40')](_0x3125a5[_0x6ecb('0x3d')],{'$or':_[_0x6ecb('0x2d')](_0x4e3ada,function(_0x289e62){if(_0x289e62[_0x6ecb('0x41')]!=='VIRTUAL'){var _0x5395e8={};_0x5395e8[_0x289e62[_0x6ecb('0x2a')]]={'$like':'%'+_0xd54d4f['query'][_0x6ecb('0x3f')]+'%'};return _0x5395e8;}})});}_0x3125a5=_[_0x6ecb('0x40')]({},_0x3125a5,_0xd54d4f['options']);var _0x1a1df0={'where':_0x3125a5[_0x6ecb('0x3d')]};return db['VtigerConfiguration']['count'](_0x1a1df0)[_0x6ecb('0x27')](function(_0x20f8c4){_0x5304be['count']=_0x20f8c4;if(_0xd54d4f[_0x6ecb('0x35')][_0x6ecb('0x42')]){_0x3125a5[_0x6ecb('0x43')]=[{'all':!![]}];}return db[_0x6ecb('0x2e')][_0x6ecb('0x44')](_0x3125a5);})[_0x6ecb('0x27')](function(_0x2d777a){_0x5304be[_0x6ecb('0x45')]=_0x2d777a;return _0x5304be;})[_0x6ecb('0x27')](respondWithFilteredResult(_0x3995cb,_0x3125a5))[_0x6ecb('0x46')](handleError(_0x3995cb,null));};exports[_0x6ecb('0x47')]=function(_0x142af0,_0x25ae59){var _0x41f5ae={'raw':![],'where':{'id':_0x142af0['params']['id']}},_0x2507f1={};_0x2507f1[_0x6ecb('0x34')]=_[_0x6ecb('0x48')](db['VtigerConfiguration'][_0x6ecb('0x2f')]);_0x2507f1[_0x6ecb('0x35')]=_['keys'](_0x142af0['query']);_0x2507f1[_0x6ecb('0x32')]=_[_0x6ecb('0x33')](_0x2507f1[_0x6ecb('0x34')],_0x2507f1['query']);_0x41f5ae['attributes']=_[_0x6ecb('0x33')](_0x2507f1[_0x6ecb('0x34')],qs[_0x6ecb('0x36')](_0x142af0[_0x6ecb('0x35')][_0x6ecb('0x36')]));_0x41f5ae['attributes']=_0x41f5ae[_0x6ecb('0x37')][_0x6ecb('0x38')]?_0x41f5ae['attributes']:_0x2507f1[_0x6ecb('0x34')];if(_0x142af0[_0x6ecb('0x35')][_0x6ecb('0x42')]){_0x41f5ae[_0x6ecb('0x43')]=[{'all':!![]}];}_0x41f5ae=_[_0x6ecb('0x40')]({},_0x41f5ae,_0x142af0[_0x6ecb('0x49')]);return db['VtigerConfiguration']['find'](_0x41f5ae)[_0x6ecb('0x27')](handleEntityNotFound(_0x25ae59,null))[_0x6ecb('0x27')](respondWithResult(_0x25ae59,null))['catch'](handleError(_0x25ae59,null));};exports['create']=function(_0x333602,_0x5852bd){return db[_0x6ecb('0x2e')][_0x6ecb('0x4a')](_0x333602[_0x6ecb('0x4b')],{})[_0x6ecb('0x27')](respondWithResult(_0x5852bd,0xc9))['catch'](handleError(_0x5852bd,null));};exports['update']=function(_0x8099f7,_0x3020a9){if(_0x8099f7[_0x6ecb('0x4b')]['id']){delete _0x8099f7[_0x6ecb('0x4b')]['id'];}return db['VtigerConfiguration'][_0x6ecb('0x4c')]({'where':{'id':_0x8099f7[_0x6ecb('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3020a9,null))['then'](saveUpdates(_0x8099f7['body'],null))[_0x6ecb('0x27')](respondWithResult(_0x3020a9,null))[_0x6ecb('0x46')](handleError(_0x3020a9,null));};exports[_0x6ecb('0x28')]=function(_0x5628b7,_0x38bd1d){return db[_0x6ecb('0x2e')][_0x6ecb('0x4c')]({'where':{'id':_0x5628b7[_0x6ecb('0x4d')]['id']}})['then'](handleEntityNotFound(_0x38bd1d,null))[_0x6ecb('0x27')](removeEntity(_0x38bd1d,null))[_0x6ecb('0x46')](handleError(_0x38bd1d,null));};exports[_0x6ecb('0x4e')]=function(_0x255d7b,_0x2d83ef,_0x3c81cb){var _0x34ecc8={};var _0x110d7c={};var _0x24f874;var _0x38d433;return db['VtigerConfiguration'][_0x6ecb('0x4f')]({'where':{'id':_0x255d7b[_0x6ecb('0x4d')]['id']}})[_0x6ecb('0x27')](handleEntityNotFound(_0x2d83ef,null))[_0x6ecb('0x27')](function(_0x4c4b5c){if(_0x4c4b5c){_0x24f874=_0x4c4b5c;_0x110d7c['model']=_[_0x6ecb('0x48')](db[_0x6ecb('0x50')]['rawAttributes']);_0x110d7c[_0x6ecb('0x35')]=_[_0x6ecb('0x48')](_0x255d7b['query']);_0x110d7c[_0x6ecb('0x32')]=_[_0x6ecb('0x33')](_0x110d7c['model'],_0x110d7c[_0x6ecb('0x35')]);_0x34ecc8['attributes']=_['intersection'](_0x110d7c[_0x6ecb('0x34')],qs[_0x6ecb('0x36')](_0x255d7b[_0x6ecb('0x35')][_0x6ecb('0x36')]));_0x34ecc8['attributes']=_0x34ecc8[_0x6ecb('0x37')][_0x6ecb('0x38')]?_0x34ecc8['attributes']:_0x110d7c[_0x6ecb('0x34')];_0x34ecc8[_0x6ecb('0x3b')]=qs[_0x6ecb('0x3c')](_0x255d7b['query']['sort']);_0x34ecc8[_0x6ecb('0x3d')]=qs[_0x6ecb('0x32')](_[_0x6ecb('0x3e')](_0x255d7b[_0x6ecb('0x35')],_0x110d7c[_0x6ecb('0x32')]));if(_0x255d7b[_0x6ecb('0x35')][_0x6ecb('0x3f')]){_0x34ecc8['where']=_[_0x6ecb('0x40')](_0x34ecc8['where'],{'$or':_['map'](_0x34ecc8[_0x6ecb('0x37')],function(_0x7cb158){var _0x59004b={};_0x59004b[_0x7cb158]={'$like':'%'+_0x255d7b[_0x6ecb('0x35')][_0x6ecb('0x3f')]+'%'};return _0x59004b;})});}_0x34ecc8=_['merge']({},_0x34ecc8,_0x255d7b['options']);return _0x24f874[_0x6ecb('0x4e')](_0x34ecc8);}})[_0x6ecb('0x27')](function(_0x2543c9){if(_0x2543c9){_0x38d433=_0x2543c9[_0x6ecb('0x38')];if(!_0x255d7b[_0x6ecb('0x35')][_0x6ecb('0x39')](_0x6ecb('0x3a'))){_0x34ecc8['limit']=qs['limit'](_0x255d7b[_0x6ecb('0x35')][_0x6ecb('0x1f')]);_0x34ecc8[_0x6ecb('0x1d')]=qs[_0x6ecb('0x1d')](_0x255d7b[_0x6ecb('0x35')][_0x6ecb('0x1d')]);}return _0x24f874[_0x6ecb('0x4e')](_0x34ecc8);}})[_0x6ecb('0x27')](function(_0x34110e){if(_0x34110e){return _0x34110e?{'count':_0x38d433,'rows':_0x34110e}:null;}})['then'](respondWithResult(_0x2d83ef,null))['catch'](handleError(_0x2d83ef,null));};exports[_0x6ecb('0x51')]=function(_0x38d55d,_0x5237de,_0x3570c8){var _0x2a2266={};var _0x33762a={};var _0x5a7477;var _0x4cf3f5;return db[_0x6ecb('0x2e')]['findOne']({'where':{'id':_0x38d55d[_0x6ecb('0x4d')]['id']}})[_0x6ecb('0x27')](handleEntityNotFound(_0x5237de,null))['then'](function(_0x49edcd){if(_0x49edcd){_0x5a7477=_0x49edcd;_0x33762a[_0x6ecb('0x34')]=_[_0x6ecb('0x48')](db[_0x6ecb('0x50')][_0x6ecb('0x2f')]);_0x33762a[_0x6ecb('0x35')]=_['keys'](_0x38d55d[_0x6ecb('0x35')]);_0x33762a[_0x6ecb('0x32')]=_['intersection'](_0x33762a[_0x6ecb('0x34')],_0x33762a[_0x6ecb('0x35')]);_0x2a2266[_0x6ecb('0x37')]=_[_0x6ecb('0x33')](_0x33762a[_0x6ecb('0x34')],qs[_0x6ecb('0x36')](_0x38d55d['query']['fields']));_0x2a2266[_0x6ecb('0x37')]=_0x2a2266['attributes'][_0x6ecb('0x38')]?_0x2a2266['attributes']:_0x33762a[_0x6ecb('0x34')];_0x2a2266[_0x6ecb('0x3b')]=qs[_0x6ecb('0x3c')](_0x38d55d[_0x6ecb('0x35')][_0x6ecb('0x3c')]);_0x2a2266[_0x6ecb('0x3d')]=qs[_0x6ecb('0x32')](_['pick'](_0x38d55d['query'],_0x33762a['filters']));if(_0x38d55d['query'][_0x6ecb('0x3f')]){_0x2a2266[_0x6ecb('0x3d')]=_[_0x6ecb('0x40')](_0x2a2266['where'],{'$or':_[_0x6ecb('0x2d')](_0x2a2266[_0x6ecb('0x37')],function(_0x486962){var _0x2662df={};_0x2662df[_0x486962]={'$like':'%'+_0x38d55d[_0x6ecb('0x35')]['filter']+'%'};return _0x2662df;})});}_0x2a2266=_[_0x6ecb('0x40')]({},_0x2a2266,_0x38d55d[_0x6ecb('0x49')]);return _0x5a7477[_0x6ecb('0x51')](_0x2a2266);}})[_0x6ecb('0x27')](function(_0x4dd01b){if(_0x4dd01b){_0x4cf3f5=_0x4dd01b['length'];if(!_0x38d55d['query'][_0x6ecb('0x39')]('nolimit')){_0x2a2266['limit']=qs['limit'](_0x38d55d[_0x6ecb('0x35')]['limit']);_0x2a2266[_0x6ecb('0x1d')]=qs[_0x6ecb('0x1d')](_0x38d55d['query'][_0x6ecb('0x1d')]);}return _0x5a7477[_0x6ecb('0x51')](_0x2a2266);}})[_0x6ecb('0x27')](function(_0x544f12){if(_0x544f12){return _0x544f12?{'count':_0x4cf3f5,'rows':_0x544f12}:null;}})['then'](respondWithResult(_0x5237de,null))[_0x6ecb('0x46')](handleError(_0x5237de,null));};exports[_0x6ecb('0x52')]=function(_0x2942f0,_0x4eed16,_0xc34e21){var _0x48031a={};var _0x5264d9={};var _0x3fe17b;var _0x7160a2;return db[_0x6ecb('0x2e')][_0x6ecb('0x4f')]({'where':{'id':_0x2942f0[_0x6ecb('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4eed16,null))[_0x6ecb('0x27')](function(_0x1c9479){if(_0x1c9479){_0x3fe17b=_0x1c9479;_0x5264d9[_0x6ecb('0x34')]=_[_0x6ecb('0x48')](db[_0x6ecb('0x50')][_0x6ecb('0x2f')]);_0x5264d9[_0x6ecb('0x35')]=_[_0x6ecb('0x48')](_0x2942f0[_0x6ecb('0x35')]);_0x5264d9[_0x6ecb('0x32')]=_['intersection'](_0x5264d9['model'],_0x5264d9['query']);_0x48031a[_0x6ecb('0x37')]=_[_0x6ecb('0x33')](_0x5264d9[_0x6ecb('0x34')],qs[_0x6ecb('0x36')](_0x2942f0[_0x6ecb('0x35')][_0x6ecb('0x36')]));_0x48031a[_0x6ecb('0x37')]=_0x48031a[_0x6ecb('0x37')][_0x6ecb('0x38')]?_0x48031a[_0x6ecb('0x37')]:_0x5264d9[_0x6ecb('0x34')];_0x48031a['order']=qs[_0x6ecb('0x3c')](_0x2942f0[_0x6ecb('0x35')][_0x6ecb('0x3c')]);_0x48031a[_0x6ecb('0x3d')]=qs[_0x6ecb('0x32')](_['pick'](_0x2942f0[_0x6ecb('0x35')],_0x5264d9[_0x6ecb('0x32')]));if(_0x2942f0[_0x6ecb('0x35')][_0x6ecb('0x3f')]){_0x48031a['where']=_['merge'](_0x48031a[_0x6ecb('0x3d')],{'$or':_[_0x6ecb('0x2d')](_0x48031a[_0x6ecb('0x37')],function(_0x5c0d70){var _0x1a1255={};_0x1a1255[_0x5c0d70]={'$like':'%'+_0x2942f0[_0x6ecb('0x35')][_0x6ecb('0x3f')]+'%'};return _0x1a1255;})});}_0x48031a=_[_0x6ecb('0x40')]({},_0x48031a,_0x2942f0[_0x6ecb('0x49')]);return _0x3fe17b[_0x6ecb('0x52')](_0x48031a);}})[_0x6ecb('0x27')](function(_0x1a9858){if(_0x1a9858){_0x7160a2=_0x1a9858[_0x6ecb('0x38')];if(!_0x2942f0[_0x6ecb('0x35')][_0x6ecb('0x39')](_0x6ecb('0x3a'))){_0x48031a[_0x6ecb('0x1f')]=qs[_0x6ecb('0x1f')](_0x2942f0[_0x6ecb('0x35')][_0x6ecb('0x1f')]);_0x48031a[_0x6ecb('0x1d')]=qs['offset'](_0x2942f0[_0x6ecb('0x35')][_0x6ecb('0x1d')]);}return _0x3fe17b[_0x6ecb('0x52')](_0x48031a);}})[_0x6ecb('0x27')](function(_0x4164c4){if(_0x4164c4){return _0x4164c4?{'count':_0x7160a2,'rows':_0x4164c4}:null;}})[_0x6ecb('0x27')](respondWithResult(_0x4eed16,null))['catch'](handleError(_0x4eed16,null));};
\ No newline at end of file
+var _0xb6e5=['set','Content-Range','apply','save','update','then','destroy','error','stack','name','index','VtigerConfiguration','rawAttributes','model','map','keys','filters','attributes','intersection','fields','query','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','VtigerField','pick','getFields','getSubjects','findOne','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count'];(function(_0x199fd7,_0x57d0d1){var _0x17dc04=function(_0x2a8011){while(--_0x2a8011){_0x199fd7['push'](_0x199fd7['shift']());}};_0x17dc04(++_0x57d0d1);}(_0xb6e5,0x81));var _0x5b6e=function(_0x2ef787,_0x2b7e24){_0x2ef787=_0x2ef787-0x0;var _0x5e8784=_0xb6e5[_0x2ef787];return _0x5e8784;};'use strict';var emlformat=require(_0x5b6e('0x0'));var rimraf=require(_0x5b6e('0x1'));var zipdir=require(_0x5b6e('0x2'));var jsonpatch=require(_0x5b6e('0x3'));var rp=require(_0x5b6e('0x4'));var moment=require(_0x5b6e('0x5'));var BPromise=require(_0x5b6e('0x6'));var Mustache=require('mustache');var util=require(_0x5b6e('0x7'));var path=require(_0x5b6e('0x8'));var sox=require(_0x5b6e('0x9'));var csv=require('to-csv');var ejs=require(_0x5b6e('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5b6e('0xb'));var squel=require(_0x5b6e('0xc'));var crypto=require(_0x5b6e('0xd'));var jsforce=require(_0x5b6e('0xe'));var deskjs=require(_0x5b6e('0xf'));var toCsv=require('to-csv');var querystring=require(_0x5b6e('0x10'));var Papa=require(_0x5b6e('0x11'));var Redis=require(_0x5b6e('0x12'));var authService=require(_0x5b6e('0x13'));var qs=require(_0x5b6e('0x14'));var as=require(_0x5b6e('0x15'));var hardwareService=require(_0x5b6e('0x16'));var logger=require(_0x5b6e('0x17'))(_0x5b6e('0x18'));var utils=require('../../config/utils');var config=require(_0x5b6e('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x5b6e('0x1a'))['db'];function respondWithStatusCode(_0x5cfece,_0x53d585){_0x53d585=_0x53d585||0xcc;return function(_0x10435d){if(_0x10435d){return _0x5cfece[_0x5b6e('0x1b')](_0x53d585);}return _0x5cfece['status'](_0x53d585)[_0x5b6e('0x1c')]();};}function respondWithResult(_0x3bbeff,_0x235356){_0x235356=_0x235356||0xc8;return function(_0x13fb99){if(_0x13fb99){return _0x3bbeff[_0x5b6e('0x1d')](_0x235356)[_0x5b6e('0x1e')](_0x13fb99);}};}function respondWithFilteredResult(_0x89385a,_0x44a5f5){return function(_0x1142f2){if(_0x1142f2){var _0x22c1fc=typeof _0x44a5f5[_0x5b6e('0x1f')]===_0x5b6e('0x20')&&typeof _0x44a5f5[_0x5b6e('0x21')]===_0x5b6e('0x20');var _0x5d577d=_0x1142f2['count'];var _0x336955=_0x22c1fc?0x0:_0x44a5f5[_0x5b6e('0x1f')];var _0x52bfb3=_0x22c1fc?_0x1142f2[_0x5b6e('0x22')]:_0x44a5f5['offset']+_0x44a5f5[_0x5b6e('0x21')];var _0x56ac7b;if(_0x52bfb3>=_0x5d577d){_0x52bfb3=_0x5d577d;_0x56ac7b=0xc8;}else{_0x56ac7b=0xce;}_0x89385a[_0x5b6e('0x1d')](_0x56ac7b);return _0x89385a[_0x5b6e('0x23')](_0x5b6e('0x24'),_0x336955+'-'+_0x52bfb3+'/'+_0x5d577d)[_0x5b6e('0x1e')](_0x1142f2);}return null;};}function patchUpdates(_0x15df92){return function(_0x2f609e){try{jsonpatch[_0x5b6e('0x25')](_0x2f609e,_0x15df92,!![]);}catch(_0x1076c4){return BPromise['reject'](_0x1076c4);}return _0x2f609e[_0x5b6e('0x26')]();};}function saveUpdates(_0x1ed102,_0x11fd67){return function(_0x183f89){if(_0x183f89){return _0x183f89[_0x5b6e('0x27')](_0x1ed102)[_0x5b6e('0x28')](function(_0x460803){return _0x460803;});}return null;};}function removeEntity(_0xe250c2,_0x346c02){return function(_0x5e85f2){if(_0x5e85f2){return _0x5e85f2[_0x5b6e('0x29')]()[_0x5b6e('0x28')](function(){_0xe250c2[_0x5b6e('0x1d')](0xcc)[_0x5b6e('0x1c')]();});}};}function handleEntityNotFound(_0x456dfc,_0x369b04){return function(_0x4faad0){if(!_0x4faad0){_0x456dfc['sendStatus'](0x194);}return _0x4faad0;};}function handleError(_0x1ea8fb,_0x3666d0){_0x3666d0=_0x3666d0||0x1f4;return function(_0x49b3d5){logger[_0x5b6e('0x2a')](_0x49b3d5[_0x5b6e('0x2b')]);if(_0x49b3d5[_0x5b6e('0x2c')]){delete _0x49b3d5[_0x5b6e('0x2c')];}_0x1ea8fb[_0x5b6e('0x1d')](_0x3666d0)['send'](_0x49b3d5);};}exports[_0x5b6e('0x2d')]=function(_0x171b4b,_0x5b7d34){var _0x3219b0={},_0x3af2b2={},_0x1560c0={'count':0x0,'rows':[]};var _0x251a70=_['map'](db[_0x5b6e('0x2e')][_0x5b6e('0x2f')],function(_0x110cf9){return{'name':_0x110cf9['fieldName'],'type':_0x110cf9['type']['key']};});_0x3af2b2[_0x5b6e('0x30')]=_[_0x5b6e('0x31')](_0x251a70,'name');_0x3af2b2['query']=_[_0x5b6e('0x32')](_0x171b4b['query']);_0x3af2b2[_0x5b6e('0x33')]=_['intersection'](_0x3af2b2[_0x5b6e('0x30')],_0x3af2b2['query']);_0x3219b0[_0x5b6e('0x34')]=_[_0x5b6e('0x35')](_0x3af2b2[_0x5b6e('0x30')],qs[_0x5b6e('0x36')](_0x171b4b[_0x5b6e('0x37')][_0x5b6e('0x36')]));_0x3219b0[_0x5b6e('0x34')]=_0x3219b0[_0x5b6e('0x34')][_0x5b6e('0x38')]?_0x3219b0[_0x5b6e('0x34')]:_0x3af2b2[_0x5b6e('0x30')];if(!_0x171b4b['query'][_0x5b6e('0x39')](_0x5b6e('0x3a'))){_0x3219b0[_0x5b6e('0x21')]=qs[_0x5b6e('0x21')](_0x171b4b[_0x5b6e('0x37')][_0x5b6e('0x21')]);_0x3219b0['offset']=qs['offset'](_0x171b4b[_0x5b6e('0x37')][_0x5b6e('0x1f')]);}_0x3219b0[_0x5b6e('0x3b')]=qs['sort'](_0x171b4b[_0x5b6e('0x37')][_0x5b6e('0x3c')]);_0x3219b0[_0x5b6e('0x3d')]=qs['filters'](_['pick'](_0x171b4b[_0x5b6e('0x37')],_0x3af2b2[_0x5b6e('0x33')]),_0x251a70);if(_0x171b4b[_0x5b6e('0x37')][_0x5b6e('0x3e')]){_0x3219b0[_0x5b6e('0x3d')]=_[_0x5b6e('0x3f')](_0x3219b0[_0x5b6e('0x3d')],{'$or':_[_0x5b6e('0x31')](_0x251a70,function(_0x2aa1a7){if(_0x2aa1a7[_0x5b6e('0x40')]!==_0x5b6e('0x41')){var _0x531e57={};_0x531e57[_0x2aa1a7[_0x5b6e('0x2c')]]={'$like':'%'+_0x171b4b[_0x5b6e('0x37')][_0x5b6e('0x3e')]+'%'};return _0x531e57;}})});}_0x3219b0=_[_0x5b6e('0x3f')]({},_0x3219b0,_0x171b4b[_0x5b6e('0x42')]);var _0x463abe={'where':_0x3219b0[_0x5b6e('0x3d')]};return db['VtigerConfiguration'][_0x5b6e('0x22')](_0x463abe)[_0x5b6e('0x28')](function(_0x1d477c){_0x1560c0[_0x5b6e('0x22')]=_0x1d477c;if(_0x171b4b[_0x5b6e('0x37')][_0x5b6e('0x43')]){_0x3219b0[_0x5b6e('0x44')]=[{'all':!![]}];}return db['VtigerConfiguration'][_0x5b6e('0x45')](_0x3219b0);})[_0x5b6e('0x28')](function(_0x24bb7b){_0x1560c0['rows']=_0x24bb7b;return _0x1560c0;})[_0x5b6e('0x28')](respondWithFilteredResult(_0x5b7d34,_0x3219b0))[_0x5b6e('0x46')](handleError(_0x5b7d34,null));};exports[_0x5b6e('0x47')]=function(_0x4af99a,_0x3b66a1){var _0x4b12cb={'raw':![],'where':{'id':_0x4af99a[_0x5b6e('0x48')]['id']}},_0x58d324={};_0x58d324[_0x5b6e('0x30')]=_[_0x5b6e('0x32')](db['VtigerConfiguration'][_0x5b6e('0x2f')]);_0x58d324[_0x5b6e('0x37')]=_[_0x5b6e('0x32')](_0x4af99a[_0x5b6e('0x37')]);_0x58d324[_0x5b6e('0x33')]=_[_0x5b6e('0x35')](_0x58d324[_0x5b6e('0x30')],_0x58d324['query']);_0x4b12cb[_0x5b6e('0x34')]=_[_0x5b6e('0x35')](_0x58d324['model'],qs[_0x5b6e('0x36')](_0x4af99a['query'][_0x5b6e('0x36')]));_0x4b12cb[_0x5b6e('0x34')]=_0x4b12cb[_0x5b6e('0x34')]['length']?_0x4b12cb['attributes']:_0x58d324[_0x5b6e('0x30')];if(_0x4af99a[_0x5b6e('0x37')]['includeAll']){_0x4b12cb['include']=[{'all':!![]}];}_0x4b12cb=_[_0x5b6e('0x3f')]({},_0x4b12cb,_0x4af99a[_0x5b6e('0x42')]);return db[_0x5b6e('0x2e')][_0x5b6e('0x49')](_0x4b12cb)[_0x5b6e('0x28')](handleEntityNotFound(_0x3b66a1,null))[_0x5b6e('0x28')](respondWithResult(_0x3b66a1,null))[_0x5b6e('0x46')](handleError(_0x3b66a1,null));};exports[_0x5b6e('0x4a')]=function(_0x57f0f5,_0x2c0078){return db[_0x5b6e('0x2e')][_0x5b6e('0x4a')](_0x57f0f5[_0x5b6e('0x4b')],{})[_0x5b6e('0x28')](respondWithResult(_0x2c0078,0xc9))[_0x5b6e('0x46')](handleError(_0x2c0078,null));};exports[_0x5b6e('0x27')]=function(_0x3dde72,_0x34d97f){if(_0x3dde72[_0x5b6e('0x4b')]['id']){delete _0x3dde72['body']['id'];}return db[_0x5b6e('0x2e')]['find']({'where':{'id':_0x3dde72['params']['id']}})[_0x5b6e('0x28')](handleEntityNotFound(_0x34d97f,null))[_0x5b6e('0x28')](saveUpdates(_0x3dde72[_0x5b6e('0x4b')],null))[_0x5b6e('0x28')](respondWithResult(_0x34d97f,null))[_0x5b6e('0x46')](handleError(_0x34d97f,null));};exports['destroy']=function(_0x3c4224,_0x5b46aa){return db[_0x5b6e('0x2e')]['find']({'where':{'id':_0x3c4224[_0x5b6e('0x48')]['id']}})[_0x5b6e('0x28')](handleEntityNotFound(_0x5b46aa,null))['then'](removeEntity(_0x5b46aa,null))[_0x5b6e('0x46')](handleError(_0x5b46aa,null));};exports['getFields']=function(_0x23118b,_0x191891,_0x11ca51){var _0x4faca5={};var _0x41dbcf={};var _0x4aaaf4;var _0x2cd537;return db[_0x5b6e('0x2e')]['findOne']({'where':{'id':_0x23118b['params']['id']}})[_0x5b6e('0x28')](handleEntityNotFound(_0x191891,null))[_0x5b6e('0x28')](function(_0x1d47af){if(_0x1d47af){_0x4aaaf4=_0x1d47af;_0x41dbcf[_0x5b6e('0x30')]=_['keys'](db[_0x5b6e('0x4c')][_0x5b6e('0x2f')]);_0x41dbcf['query']=_[_0x5b6e('0x32')](_0x23118b[_0x5b6e('0x37')]);_0x41dbcf[_0x5b6e('0x33')]=_[_0x5b6e('0x35')](_0x41dbcf[_0x5b6e('0x30')],_0x41dbcf[_0x5b6e('0x37')]);_0x4faca5[_0x5b6e('0x34')]=_[_0x5b6e('0x35')](_0x41dbcf[_0x5b6e('0x30')],qs[_0x5b6e('0x36')](_0x23118b[_0x5b6e('0x37')][_0x5b6e('0x36')]));_0x4faca5[_0x5b6e('0x34')]=_0x4faca5[_0x5b6e('0x34')][_0x5b6e('0x38')]?_0x4faca5[_0x5b6e('0x34')]:_0x41dbcf['model'];_0x4faca5[_0x5b6e('0x3b')]=qs[_0x5b6e('0x3c')](_0x23118b[_0x5b6e('0x37')][_0x5b6e('0x3c')]);_0x4faca5[_0x5b6e('0x3d')]=qs[_0x5b6e('0x33')](_[_0x5b6e('0x4d')](_0x23118b[_0x5b6e('0x37')],_0x41dbcf['filters']));if(_0x23118b[_0x5b6e('0x37')]['filter']){_0x4faca5['where']=_['merge'](_0x4faca5[_0x5b6e('0x3d')],{'$or':_[_0x5b6e('0x31')](_0x4faca5[_0x5b6e('0x34')],function(_0x215fc2){var _0x2d81a5={};_0x2d81a5[_0x215fc2]={'$like':'%'+_0x23118b[_0x5b6e('0x37')]['filter']+'%'};return _0x2d81a5;})});}_0x4faca5=_[_0x5b6e('0x3f')]({},_0x4faca5,_0x23118b[_0x5b6e('0x42')]);return _0x4aaaf4[_0x5b6e('0x4e')](_0x4faca5);}})[_0x5b6e('0x28')](function(_0x2218a5){if(_0x2218a5){_0x2cd537=_0x2218a5[_0x5b6e('0x38')];if(!_0x23118b[_0x5b6e('0x37')][_0x5b6e('0x39')](_0x5b6e('0x3a'))){_0x4faca5['limit']=qs[_0x5b6e('0x21')](_0x23118b[_0x5b6e('0x37')]['limit']);_0x4faca5[_0x5b6e('0x1f')]=qs[_0x5b6e('0x1f')](_0x23118b[_0x5b6e('0x37')][_0x5b6e('0x1f')]);}return _0x4aaaf4[_0x5b6e('0x4e')](_0x4faca5);}})[_0x5b6e('0x28')](function(_0x453461){if(_0x453461){return _0x453461?{'count':_0x2cd537,'rows':_0x453461}:null;}})[_0x5b6e('0x28')](respondWithResult(_0x191891,null))[_0x5b6e('0x46')](handleError(_0x191891,null));};exports[_0x5b6e('0x4f')]=function(_0x26f904,_0x3f81a4,_0x3f48b1){var _0xd5953={};var _0x4765fc={};var _0x50f089;var _0xf99bf;return db[_0x5b6e('0x2e')][_0x5b6e('0x50')]({'where':{'id':_0x26f904['params']['id']}})[_0x5b6e('0x28')](handleEntityNotFound(_0x3f81a4,null))[_0x5b6e('0x28')](function(_0x3f119c){if(_0x3f119c){_0x50f089=_0x3f119c;_0x4765fc[_0x5b6e('0x30')]=_[_0x5b6e('0x32')](db[_0x5b6e('0x4c')][_0x5b6e('0x2f')]);_0x4765fc[_0x5b6e('0x37')]=_[_0x5b6e('0x32')](_0x26f904[_0x5b6e('0x37')]);_0x4765fc[_0x5b6e('0x33')]=_['intersection'](_0x4765fc[_0x5b6e('0x30')],_0x4765fc['query']);_0xd5953[_0x5b6e('0x34')]=_[_0x5b6e('0x35')](_0x4765fc[_0x5b6e('0x30')],qs[_0x5b6e('0x36')](_0x26f904[_0x5b6e('0x37')][_0x5b6e('0x36')]));_0xd5953[_0x5b6e('0x34')]=_0xd5953['attributes']['length']?_0xd5953[_0x5b6e('0x34')]:_0x4765fc[_0x5b6e('0x30')];_0xd5953[_0x5b6e('0x3b')]=qs[_0x5b6e('0x3c')](_0x26f904[_0x5b6e('0x37')][_0x5b6e('0x3c')]);_0xd5953[_0x5b6e('0x3d')]=qs['filters'](_[_0x5b6e('0x4d')](_0x26f904[_0x5b6e('0x37')],_0x4765fc['filters']));if(_0x26f904[_0x5b6e('0x37')]['filter']){_0xd5953['where']=_[_0x5b6e('0x3f')](_0xd5953[_0x5b6e('0x3d')],{'$or':_[_0x5b6e('0x31')](_0xd5953[_0x5b6e('0x34')],function(_0x326eab){var _0x48735c={};_0x48735c[_0x326eab]={'$like':'%'+_0x26f904['query']['filter']+'%'};return _0x48735c;})});}_0xd5953=_[_0x5b6e('0x3f')]({},_0xd5953,_0x26f904[_0x5b6e('0x42')]);return _0x50f089['getSubjects'](_0xd5953);}})['then'](function(_0x116476){if(_0x116476){_0xf99bf=_0x116476[_0x5b6e('0x38')];if(!_0x26f904['query'][_0x5b6e('0x39')]('nolimit')){_0xd5953[_0x5b6e('0x21')]=qs[_0x5b6e('0x21')](_0x26f904[_0x5b6e('0x37')][_0x5b6e('0x21')]);_0xd5953[_0x5b6e('0x1f')]=qs[_0x5b6e('0x1f')](_0x26f904[_0x5b6e('0x37')][_0x5b6e('0x1f')]);}return _0x50f089[_0x5b6e('0x4f')](_0xd5953);}})[_0x5b6e('0x28')](function(_0x5d32a6){if(_0x5d32a6){return _0x5d32a6?{'count':_0xf99bf,'rows':_0x5d32a6}:null;}})[_0x5b6e('0x28')](respondWithResult(_0x3f81a4,null))['catch'](handleError(_0x3f81a4,null));};exports[_0x5b6e('0x51')]=function(_0x2028e7,_0x29f630,_0x4aadb5){var _0x5339d9={};var _0x257b42={};var _0x355b14;var _0x26a3fa;return db[_0x5b6e('0x2e')]['findOne']({'where':{'id':_0x2028e7[_0x5b6e('0x48')]['id']}})[_0x5b6e('0x28')](handleEntityNotFound(_0x29f630,null))[_0x5b6e('0x28')](function(_0x2a246c){if(_0x2a246c){_0x355b14=_0x2a246c;_0x257b42['model']=_[_0x5b6e('0x32')](db[_0x5b6e('0x4c')][_0x5b6e('0x2f')]);_0x257b42[_0x5b6e('0x37')]=_[_0x5b6e('0x32')](_0x2028e7[_0x5b6e('0x37')]);_0x257b42[_0x5b6e('0x33')]=_[_0x5b6e('0x35')](_0x257b42[_0x5b6e('0x30')],_0x257b42[_0x5b6e('0x37')]);_0x5339d9[_0x5b6e('0x34')]=_[_0x5b6e('0x35')](_0x257b42[_0x5b6e('0x30')],qs[_0x5b6e('0x36')](_0x2028e7['query'][_0x5b6e('0x36')]));_0x5339d9[_0x5b6e('0x34')]=_0x5339d9[_0x5b6e('0x34')][_0x5b6e('0x38')]?_0x5339d9[_0x5b6e('0x34')]:_0x257b42[_0x5b6e('0x30')];_0x5339d9[_0x5b6e('0x3b')]=qs[_0x5b6e('0x3c')](_0x2028e7[_0x5b6e('0x37')]['sort']);_0x5339d9[_0x5b6e('0x3d')]=qs[_0x5b6e('0x33')](_[_0x5b6e('0x4d')](_0x2028e7[_0x5b6e('0x37')],_0x257b42['filters']));if(_0x2028e7[_0x5b6e('0x37')][_0x5b6e('0x3e')]){_0x5339d9[_0x5b6e('0x3d')]=_[_0x5b6e('0x3f')](_0x5339d9['where'],{'$or':_['map'](_0x5339d9[_0x5b6e('0x34')],function(_0x9fcb94){var _0x26c5b3={};_0x26c5b3[_0x9fcb94]={'$like':'%'+_0x2028e7[_0x5b6e('0x37')]['filter']+'%'};return _0x26c5b3;})});}_0x5339d9=_[_0x5b6e('0x3f')]({},_0x5339d9,_0x2028e7[_0x5b6e('0x42')]);return _0x355b14[_0x5b6e('0x51')](_0x5339d9);}})[_0x5b6e('0x28')](function(_0x59f670){if(_0x59f670){_0x26a3fa=_0x59f670['length'];if(!_0x2028e7['query']['hasOwnProperty'](_0x5b6e('0x3a'))){_0x5339d9[_0x5b6e('0x21')]=qs[_0x5b6e('0x21')](_0x2028e7[_0x5b6e('0x37')][_0x5b6e('0x21')]);_0x5339d9[_0x5b6e('0x1f')]=qs[_0x5b6e('0x1f')](_0x2028e7[_0x5b6e('0x37')]['offset']);}return _0x355b14[_0x5b6e('0x51')](_0x5339d9);}})[_0x5b6e('0x28')](function(_0xea97d){if(_0xea97d){return _0xea97d?{'count':_0x26a3fa,'rows':_0xea97d}:null;}})[_0x5b6e('0x28')](respondWithResult(_0x29f630,null))[_0x5b6e('0x46')](handleError(_0x29f630,null));};
\ No newline at end of file
index 7f832ff..84285a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f10=['../../config/environment','./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration','int_vtiger_configurations','lodash','moment','request-promise','path'];(function(_0x24f964,_0x2276f0){var _0x327009=function(_0xcf3094){while(--_0xcf3094){_0x24f964['push'](_0x24f964['shift']());}};_0x327009(++_0x2276f0);}(_0x4f10,0x92));var _0x04f1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x4f10[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x04f1('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x04f1('0x1'));var BPromise=require('bluebird');var rp=require(_0x04f1('0x2'));var fs=require('fs');var path=require(_0x04f1('0x3'));var rimraf=require('rimraf');var config=require(_0x04f1('0x4'));var attributes=require(_0x04f1('0x5'));module[_0x04f1('0x6')]=function(_0xc8f2c5,_0x104023){return _0xc8f2c5[_0x04f1('0x7')](_0x04f1('0x8'),attributes,{'tableName':_0x04f1('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f11=['../../config/environment','./intVtigerConfiguration.attributes','exports','define','int_vtiger_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x4f07df,_0x11417e){var _0x227d06=function(_0xbe2e19){while(--_0xbe2e19){_0x4f07df['push'](_0x4f07df['shift']());}};_0x227d06(++_0x11417e);}(_0x8f11,0x7a));var _0x18f1=function(_0x5b89a7,_0x3ba723){_0x5b89a7=_0x5b89a7-0x0;var _0x36dcbc=_0x8f11[_0x5b89a7];return _0x36dcbc;};'use strict';var _=require(_0x18f1('0x0'));var util=require(_0x18f1('0x1'));var logger=require(_0x18f1('0x2'))(_0x18f1('0x3'));var moment=require(_0x18f1('0x4'));var BPromise=require(_0x18f1('0x5'));var rp=require(_0x18f1('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x18f1('0x7'));var config=require(_0x18f1('0x8'));var attributes=require(_0x18f1('0x9'));module[_0x18f1('0xa')]=function(_0x55e934,_0x510619){return _0x55e934[_0x18f1('0xb')]('VtigerConfiguration',attributes,{'tableName':_0x18f1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 644cdae..dd02ef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7a7=['request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','client','http'];(function(_0x687ddc,_0x2092fa){var _0x441991=function(_0x49c6a6){while(--_0x49c6a6){_0x687ddc['push'](_0x687ddc['shift']());}};_0x441991(++_0x2092fa);}(_0xf7a7,0x15f));var _0x7f7a=function(_0x530cd9,_0x5f3cc4){_0x530cd9=_0x530cd9-0x0;var _0x3ebeda=_0xf7a7[_0x530cd9];return _0x3ebeda;};'use strict';var _=require('lodash');var util=require(_0x7f7a('0x0'));var moment=require(_0x7f7a('0x1'));var BPromise=require(_0x7f7a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7f7a('0x3'));var db=require(_0x7f7a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x7f7a('0x5'))(_0x7f7a('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x7f7a('0x7')][_0x7f7a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x82d0d7,_0x9a8a42,_0x8c17db){return new BPromise(function(_0x5b0fed,_0x4e0e6b){return client[_0x7f7a('0x9')](_0x82d0d7,_0x8c17db)[_0x7f7a('0xa')](function(_0x41f39e){logger[_0x7f7a('0xb')](_0x7f7a('0xc'),_0x9a8a42,_0x7f7a('0xd'));logger['debug'](_0x7f7a('0xe'),_0x9a8a42,'request\x20sent',JSON[_0x7f7a('0xf')](_0x41f39e));if(_0x41f39e[_0x7f7a('0x10')]){if(_0x41f39e[_0x7f7a('0x10')][_0x7f7a('0x11')]===0x1f4){logger[_0x7f7a('0x10')](_0x7f7a('0xc'),_0x9a8a42,_0x41f39e[_0x7f7a('0x10')][_0x7f7a('0x12')]);return _0x4e0e6b(_0x41f39e[_0x7f7a('0x10')][_0x7f7a('0x12')]);}logger[_0x7f7a('0x10')](_0x7f7a('0xc'),_0x9a8a42,_0x41f39e[_0x7f7a('0x10')][_0x7f7a('0x12')]);return _0x5b0fed(_0x41f39e[_0x7f7a('0x10')][_0x7f7a('0x12')]);}else{logger[_0x7f7a('0xb')](_0x7f7a('0xc'),_0x9a8a42,_0x7f7a('0xd'));_0x5b0fed(_0x41f39e['result']['message']);}})[_0x7f7a('0x13')](function(_0x3336a6){logger[_0x7f7a('0x10')](_0x7f7a('0xc'),_0x9a8a42,_0x3336a6);_0x4e0e6b(_0x3336a6);});});}
\ No newline at end of file
+var _0x8613=['../../config/utils','../../config/environment','http','then','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x17ee38,_0x5bdff4){var _0x439a4e=function(_0x2c6e2b){while(--_0x2c6e2b){_0x17ee38['push'](_0x17ee38['shift']());}};_0x439a4e(++_0x5bdff4);}(_0x8613,0x1c7));var _0x3861=function(_0x58cbde,_0x4b0f62){_0x58cbde=_0x58cbde-0x0;var _0x5799f3=_0x8613[_0x58cbde];return _0x5799f3;};'use strict';var _=require(_0x3861('0x0'));var util=require(_0x3861('0x1'));var moment=require(_0x3861('0x2'));var BPromise=require(_0x3861('0x3'));var rs=require(_0x3861('0x4'));var fs=require('fs');var Redis=require(_0x3861('0x5'));var db=require(_0x3861('0x6'))['db'];var utils=require(_0x3861('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x3861('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3861('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x7d632b,_0x575eb4,_0x4f70f7){return new BPromise(function(_0x2aaa5d,_0x349443){return client['request'](_0x7d632b,_0x4f70f7)[_0x3861('0xa')](function(_0x17b1a5){logger['info'](_0x3861('0xb'),_0x575eb4,_0x3861('0xc'));logger[_0x3861('0xd')](_0x3861('0xe'),_0x575eb4,_0x3861('0xc'),JSON['stringify'](_0x17b1a5));if(_0x17b1a5[_0x3861('0xf')]){if(_0x17b1a5['error'][_0x3861('0x10')]===0x1f4){logger[_0x3861('0xf')](_0x3861('0xb'),_0x575eb4,_0x17b1a5[_0x3861('0xf')][_0x3861('0x11')]);return _0x349443(_0x17b1a5[_0x3861('0xf')][_0x3861('0x11')]);}logger[_0x3861('0xf')](_0x3861('0xb'),_0x575eb4,_0x17b1a5[_0x3861('0xf')][_0x3861('0x11')]);return _0x2aaa5d(_0x17b1a5[_0x3861('0xf')][_0x3861('0x11')]);}else{logger[_0x3861('0x12')](_0x3861('0xb'),_0x575eb4,'request\x20sent');_0x2aaa5d(_0x17b1a5[_0x3861('0x13')][_0x3861('0x11')]);}})[_0x3861('0x14')](function(_0x219476){logger['error'](_0x3861('0xb'),_0x575eb4,_0x219476);_0x349443(_0x219476);});});}
\ No newline at end of file
index 1140a9f..68d0fd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07e7=['destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated','index','show','post','create','put','update','/:id'];(function(_0x2e986d,_0x4b6b63){var _0x351c79=function(_0xf178c7){while(--_0xf178c7){_0x2e986d['push'](_0x2e986d['shift']());}};_0x351c79(++_0x4b6b63);}(_0x07e7,0x9a));var _0x707e=function(_0x405735,_0x18d0cc){_0x405735=_0x405735-0x0;var _0x1ecc09=_0x07e7[_0x405735];return _0x1ecc09;};'use strict';var multer=require(_0x707e('0x0'));var util=require(_0x707e('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x707e('0x2'));var router=express[_0x707e('0x3')]();var fs_extra=require(_0x707e('0x4'));var auth=require(_0x707e('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x707e('0x6'));var controller=require(_0x707e('0x7'));router[_0x707e('0x8')]('/',auth[_0x707e('0x9')](),controller[_0x707e('0xa')]);router[_0x707e('0x8')]('/:id',auth[_0x707e('0x9')](),controller[_0x707e('0xb')]);router[_0x707e('0xc')]('/',auth[_0x707e('0x9')](),controller[_0x707e('0xd')]);router[_0x707e('0xe')]('/:id',auth[_0x707e('0x9')](),controller[_0x707e('0xf')]);router['delete'](_0x707e('0x10'),auth[_0x707e('0x9')](),controller[_0x707e('0x11')]);module[_0x707e('0x12')]=router;
\ No newline at end of file
+var _0x7fc8=['show','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intVtigerField.controller','index','get','isAuthenticated'];(function(_0x46428c,_0x20ab75){var _0x16a677=function(_0x2b0817){while(--_0x2b0817){_0x46428c['push'](_0x46428c['shift']());}};_0x16a677(++_0x20ab75);}(_0x7fc8,0x105));var _0x87fc=function(_0x44b533,_0x221c8d){_0x44b533=_0x44b533-0x0;var _0x42325b=_0x7fc8[_0x44b533];return _0x42325b;};'use strict';var multer=require(_0x87fc('0x0'));var util=require(_0x87fc('0x1'));var path=require(_0x87fc('0x2'));var timeout=require(_0x87fc('0x3'));var express=require(_0x87fc('0x4'));var router=express[_0x87fc('0x5')]();var fs_extra=require(_0x87fc('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x87fc('0x7'));var config=require('../../config/environment');var controller=require(_0x87fc('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x87fc('0x9')]);router[_0x87fc('0xa')]('/:id',auth[_0x87fc('0xb')](),controller[_0x87fc('0xc')]);router[_0x87fc('0xd')]('/',auth[_0x87fc('0xb')](),controller[_0x87fc('0xe')]);router[_0x87fc('0xf')](_0x87fc('0x10'),auth[_0x87fc('0xb')](),controller[_0x87fc('0x11')]);router[_0x87fc('0x12')](_0x87fc('0x10'),auth['isAuthenticated'](),controller[_0x87fc('0x13')]);module[_0x87fc('0x14')]=router;
\ No newline at end of file
index 4ef45ec..73a7c8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f04=['picklist','string','STRING','variable','BOOLEAN','sequelize','exports','ENUM','customVariable','keyValue'];(function(_0x29b826,_0xf3f837){var _0x2b33dc=function(_0x51c646){while(--_0x51c646){_0x29b826['push'](_0x29b826['shift']());}};_0x2b33dc(++_0xf3f837);}(_0x2f04,0x1db));var _0x42f0=function(_0x565ed7,_0x398228){_0x565ed7=_0x565ed7-0x0;var _0x183ad7=_0x2f04[_0x565ed7];return _0x183ad7;};'use strict';var Sequelize=require(_0x42f0('0x0'));module[_0x42f0('0x1')]={'type':{'type':Sequelize[_0x42f0('0x2')]('string','variable',_0x42f0('0x3'),_0x42f0('0x4'),_0x42f0('0x5')),'defaultValue':_0x42f0('0x6')},'content':{'type':Sequelize[_0x42f0('0x7')]},'key':{'type':Sequelize[_0x42f0('0x7')]},'keyType':{'type':Sequelize[_0x42f0('0x2')](_0x42f0('0x6'),_0x42f0('0x8'),_0x42f0('0x3'))},'keyContent':{'type':Sequelize[_0x42f0('0x7')]},'idField':{'type':Sequelize[_0x42f0('0x7')]},'nameField':{'type':Sequelize[_0x42f0('0x7')]},'customField':{'type':Sequelize[_0x42f0('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x42f0('0x7')]}};
\ No newline at end of file
+var _0xdc1f=['customVariable','picklist','ENUM','STRING','BOOLEAN','exports','string','variable'];(function(_0x100d63,_0x2dfabc){var _0x3e4ed9=function(_0x467bdc){while(--_0x467bdc){_0x100d63['push'](_0x100d63['shift']());}};_0x3e4ed9(++_0x2dfabc);}(_0xdc1f,0x115));var _0xfdc1=function(_0x8d55c,_0x3d3aef){_0x8d55c=_0x8d55c-0x0;var _0x2823da=_0xdc1f[_0x8d55c];return _0x2823da;};'use strict';var Sequelize=require('sequelize');module[_0xfdc1('0x0')]={'type':{'type':Sequelize['ENUM'](_0xfdc1('0x1'),_0xfdc1('0x2'),_0xfdc1('0x3'),'keyValue',_0xfdc1('0x4')),'defaultValue':_0xfdc1('0x1')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xfdc1('0x5')]('string',_0xfdc1('0x2'),_0xfdc1('0x3'))},'keyContent':{'type':Sequelize[_0xfdc1('0x6')]},'idField':{'type':Sequelize[_0xfdc1('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xfdc1('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 9509298..5ac575b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ae4=['send','index','VtigerField','rawAttributes','type','key','map','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','options','includeAll','include','rows','catch','show','params','find','create','body','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','apply','save','update','then','destroy','error','stack','name'];(function(_0x2c86ba,_0x4d1914){var _0x3ffbf7=function(_0x5a4672){while(--_0x5a4672){_0x2c86ba['push'](_0x2c86ba['shift']());}};_0x3ffbf7(++_0x4d1914);}(_0x0ae4,0xf7));var _0x40ae=function(_0x2d8208,_0x21dfc8){_0x2d8208=_0x2d8208-0x0;var _0x293814=_0x0ae4[_0x2d8208];return _0x293814;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x40ae('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x40ae('0x1'));var rp=require(_0x40ae('0x2'));var moment=require(_0x40ae('0x3'));var BPromise=require(_0x40ae('0x4'));var Mustache=require(_0x40ae('0x5'));var util=require(_0x40ae('0x6'));var path=require(_0x40ae('0x7'));var sox=require(_0x40ae('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x40ae('0x9'));var squel=require(_0x40ae('0xa'));var crypto=require(_0x40ae('0xb'));var jsforce=require(_0x40ae('0xc'));var deskjs=require(_0x40ae('0xd'));var toCsv=require('to-csv');var querystring=require(_0x40ae('0xe'));var Papa=require(_0x40ae('0xf'));var Redis=require('ioredis');var authService=require(_0x40ae('0x10'));var qs=require(_0x40ae('0x11'));var as=require(_0x40ae('0x12'));var hardwareService=require(_0x40ae('0x13'));var logger=require(_0x40ae('0x14'))(_0x40ae('0x15'));var utils=require('../../config/utils');var config=require(_0x40ae('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x40ae('0x17'))['db'];function respondWithStatusCode(_0x37449c,_0x2b2f4e){_0x2b2f4e=_0x2b2f4e||0xcc;return function(_0x518eec){if(_0x518eec){return _0x37449c[_0x40ae('0x18')](_0x2b2f4e);}return _0x37449c[_0x40ae('0x19')](_0x2b2f4e)[_0x40ae('0x1a')]();};}function respondWithResult(_0x410f89,_0x19cb9f){_0x19cb9f=_0x19cb9f||0xc8;return function(_0x4ac729){if(_0x4ac729){return _0x410f89[_0x40ae('0x19')](_0x19cb9f)['json'](_0x4ac729);}};}function respondWithFilteredResult(_0xb44747,_0x51542e){return function(_0x9c356a){if(_0x9c356a){var _0x3768c2=typeof _0x51542e[_0x40ae('0x1b')]===_0x40ae('0x1c')&&typeof _0x51542e['limit']===_0x40ae('0x1c');var _0xbf6ea2=_0x9c356a[_0x40ae('0x1d')];var _0x256266=_0x3768c2?0x0:_0x51542e['offset'];var _0x2d6fc0=_0x3768c2?_0x9c356a['count']:_0x51542e[_0x40ae('0x1b')]+_0x51542e[_0x40ae('0x1e')];var _0x137c73;if(_0x2d6fc0>=_0xbf6ea2){_0x2d6fc0=_0xbf6ea2;_0x137c73=0xc8;}else{_0x137c73=0xce;}_0xb44747[_0x40ae('0x19')](_0x137c73);return _0xb44747['set'](_0x40ae('0x1f'),_0x256266+'-'+_0x2d6fc0+'/'+_0xbf6ea2)[_0x40ae('0x20')](_0x9c356a);}return null;};}function patchUpdates(_0x1e77d2){return function(_0x491764){try{jsonpatch[_0x40ae('0x21')](_0x491764,_0x1e77d2,!![]);}catch(_0x367624){return BPromise['reject'](_0x367624);}return _0x491764[_0x40ae('0x22')]();};}function saveUpdates(_0x1887d1,_0x19fb5f){return function(_0x4f601a){if(_0x4f601a){return _0x4f601a[_0x40ae('0x23')](_0x1887d1)[_0x40ae('0x24')](function(_0x53066a){return _0x53066a;});}return null;};}function removeEntity(_0x5854ed,_0xb488ba){return function(_0xdb372d){if(_0xdb372d){return _0xdb372d[_0x40ae('0x25')]()[_0x40ae('0x24')](function(){_0x5854ed[_0x40ae('0x19')](0xcc)[_0x40ae('0x1a')]();});}};}function handleEntityNotFound(_0x4ba6a5,_0x5db942){return function(_0x36028f){if(!_0x36028f){_0x4ba6a5[_0x40ae('0x18')](0x194);}return _0x36028f;};}function handleError(_0x3d7295,_0x25fdcf){_0x25fdcf=_0x25fdcf||0x1f4;return function(_0x3cb6a0){logger[_0x40ae('0x26')](_0x3cb6a0[_0x40ae('0x27')]);if(_0x3cb6a0[_0x40ae('0x28')]){delete _0x3cb6a0[_0x40ae('0x28')];}_0x3d7295[_0x40ae('0x19')](_0x25fdcf)[_0x40ae('0x29')](_0x3cb6a0);};}exports[_0x40ae('0x2a')]=function(_0x1d626e,_0x281aef){var _0x4df682={},_0xa10838={},_0x55931c={'count':0x0,'rows':[]};var _0x2fd601=_['map'](db[_0x40ae('0x2b')][_0x40ae('0x2c')],function(_0x460683){return{'name':_0x460683['fieldName'],'type':_0x460683[_0x40ae('0x2d')][_0x40ae('0x2e')]};});_0xa10838['model']=_[_0x40ae('0x2f')](_0x2fd601,_0x40ae('0x28'));_0xa10838['query']=_[_0x40ae('0x30')](_0x1d626e[_0x40ae('0x31')]);_0xa10838[_0x40ae('0x32')]=_[_0x40ae('0x33')](_0xa10838[_0x40ae('0x34')],_0xa10838[_0x40ae('0x31')]);_0x4df682[_0x40ae('0x35')]=_[_0x40ae('0x33')](_0xa10838[_0x40ae('0x34')],qs[_0x40ae('0x36')](_0x1d626e[_0x40ae('0x31')][_0x40ae('0x36')]));_0x4df682['attributes']=_0x4df682[_0x40ae('0x35')][_0x40ae('0x37')]?_0x4df682[_0x40ae('0x35')]:_0xa10838[_0x40ae('0x34')];if(!_0x1d626e[_0x40ae('0x31')][_0x40ae('0x38')](_0x40ae('0x39'))){_0x4df682[_0x40ae('0x1e')]=qs[_0x40ae('0x1e')](_0x1d626e[_0x40ae('0x31')][_0x40ae('0x1e')]);_0x4df682[_0x40ae('0x1b')]=qs[_0x40ae('0x1b')](_0x1d626e[_0x40ae('0x31')][_0x40ae('0x1b')]);}_0x4df682['order']=qs[_0x40ae('0x3a')](_0x1d626e[_0x40ae('0x31')]['sort']);_0x4df682[_0x40ae('0x3b')]=qs[_0x40ae('0x32')](_['pick'](_0x1d626e[_0x40ae('0x31')],_0xa10838[_0x40ae('0x32')]),_0x2fd601);if(_0x1d626e[_0x40ae('0x31')][_0x40ae('0x3c')]){_0x4df682[_0x40ae('0x3b')]=_[_0x40ae('0x3d')](_0x4df682['where'],{'$or':_['map'](_0x2fd601,function(_0x346207){if(_0x346207['type']!=='VIRTUAL'){var _0x376ee3={};_0x376ee3[_0x346207[_0x40ae('0x28')]]={'$like':'%'+_0x1d626e[_0x40ae('0x31')]['filter']+'%'};return _0x376ee3;}})});}_0x4df682=_[_0x40ae('0x3d')]({},_0x4df682,_0x1d626e[_0x40ae('0x3e')]);var _0x71c57c={'where':_0x4df682['where']};return db[_0x40ae('0x2b')][_0x40ae('0x1d')](_0x71c57c)[_0x40ae('0x24')](function(_0x44fd6f){_0x55931c[_0x40ae('0x1d')]=_0x44fd6f;if(_0x1d626e[_0x40ae('0x31')][_0x40ae('0x3f')]){_0x4df682[_0x40ae('0x40')]=[{'all':!![]}];}return db[_0x40ae('0x2b')]['findAll'](_0x4df682);})[_0x40ae('0x24')](function(_0x28b493){_0x55931c[_0x40ae('0x41')]=_0x28b493;return _0x55931c;})[_0x40ae('0x24')](respondWithFilteredResult(_0x281aef,_0x4df682))[_0x40ae('0x42')](handleError(_0x281aef,null));};exports[_0x40ae('0x43')]=function(_0x4872d2,_0x416bf7){var _0x473395={'raw':!![],'where':{'id':_0x4872d2[_0x40ae('0x44')]['id']}},_0x136ea5={};_0x136ea5['model']=_[_0x40ae('0x30')](db['VtigerField'][_0x40ae('0x2c')]);_0x136ea5[_0x40ae('0x31')]=_[_0x40ae('0x30')](_0x4872d2[_0x40ae('0x31')]);_0x136ea5['filters']=_[_0x40ae('0x33')](_0x136ea5[_0x40ae('0x34')],_0x136ea5[_0x40ae('0x31')]);_0x473395[_0x40ae('0x35')]=_[_0x40ae('0x33')](_0x136ea5[_0x40ae('0x34')],qs['fields'](_0x4872d2[_0x40ae('0x31')][_0x40ae('0x36')]));_0x473395['attributes']=_0x473395[_0x40ae('0x35')]['length']?_0x473395[_0x40ae('0x35')]:_0x136ea5[_0x40ae('0x34')];if(_0x4872d2['query'][_0x40ae('0x3f')]){_0x473395[_0x40ae('0x40')]=[{'all':!![]}];}_0x473395=_['merge']({},_0x473395,_0x4872d2[_0x40ae('0x3e')]);return db[_0x40ae('0x2b')][_0x40ae('0x45')](_0x473395)[_0x40ae('0x24')](handleEntityNotFound(_0x416bf7,null))['then'](respondWithResult(_0x416bf7,null))[_0x40ae('0x42')](handleError(_0x416bf7,null));};exports[_0x40ae('0x46')]=function(_0x3bd6fe,_0x19797c){return db[_0x40ae('0x2b')][_0x40ae('0x46')](_0x3bd6fe[_0x40ae('0x47')],{})[_0x40ae('0x24')](respondWithResult(_0x19797c,0xc9))[_0x40ae('0x42')](handleError(_0x19797c,null));};exports['update']=function(_0x1e4810,_0x47a18f){if(_0x1e4810[_0x40ae('0x47')]['id']){delete _0x1e4810['body']['id'];}return db['VtigerField'][_0x40ae('0x45')]({'where':{'id':_0x1e4810[_0x40ae('0x44')]['id']}})[_0x40ae('0x24')](handleEntityNotFound(_0x47a18f,null))[_0x40ae('0x24')](saveUpdates(_0x1e4810['body'],null))[_0x40ae('0x24')](respondWithResult(_0x47a18f,null))[_0x40ae('0x42')](handleError(_0x47a18f,null));};exports[_0x40ae('0x25')]=function(_0x252aa7,_0x41268c){return db[_0x40ae('0x2b')]['find']({'where':{'id':_0x252aa7[_0x40ae('0x44')]['id']}})[_0x40ae('0x24')](handleEntityNotFound(_0x41268c,null))[_0x40ae('0x24')](removeEntity(_0x41268c,null))['catch'](handleError(_0x41268c,null));};
\ No newline at end of file
+var _0x952f=['attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','findAll','show','params','length','includeAll','include','find','catch','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','index','VtigerField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields'];(function(_0x30947a,_0x4e60d6){var _0x1bef65=function(_0x243327){while(--_0x243327){_0x30947a['push'](_0x30947a['shift']());}};_0x1bef65(++_0x4e60d6);}(_0x952f,0x64));var _0xf952=function(_0x4c9f6a,_0xcb2cb2){_0x4c9f6a=_0x4c9f6a-0x0;var _0x5df5b9=_0x952f[_0x4c9f6a];return _0x5df5b9;};'use strict';var emlformat=require(_0xf952('0x0'));var rimraf=require(_0xf952('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf952('0x2'));var rp=require(_0xf952('0x3'));var moment=require(_0xf952('0x4'));var BPromise=require(_0xf952('0x5'));var Mustache=require(_0xf952('0x6'));var util=require(_0xf952('0x7'));var path=require(_0xf952('0x8'));var sox=require(_0xf952('0x9'));var csv=require('to-csv');var ejs=require(_0xf952('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf952('0xb'));var squel=require(_0xf952('0xc'));var crypto=require(_0xf952('0xd'));var jsforce=require(_0xf952('0xe'));var deskjs=require(_0xf952('0xf'));var toCsv=require(_0xf952('0x10'));var querystring=require(_0xf952('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xf952('0x12'));var qs=require(_0xf952('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf952('0x14'));var logger=require(_0xf952('0x15'))(_0xf952('0x16'));var utils=require('../../config/utils');var config=require(_0xf952('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xf952('0x18'))['db'];function respondWithStatusCode(_0x3ae684,_0x59afa6){_0x59afa6=_0x59afa6||0xcc;return function(_0x55e725){if(_0x55e725){return _0x3ae684[_0xf952('0x19')](_0x59afa6);}return _0x3ae684[_0xf952('0x1a')](_0x59afa6)['end']();};}function respondWithResult(_0x232d9e,_0x23460e){_0x23460e=_0x23460e||0xc8;return function(_0x31fa80){if(_0x31fa80){return _0x232d9e[_0xf952('0x1a')](_0x23460e)[_0xf952('0x1b')](_0x31fa80);}};}function respondWithFilteredResult(_0x2161ba,_0x299029){return function(_0x3a9363){if(_0x3a9363){var _0x14d73f=typeof _0x299029['offset']==='undefined'&&typeof _0x299029[_0xf952('0x1c')]===_0xf952('0x1d');var _0x63b55a=_0x3a9363['count'];var _0x26564b=_0x14d73f?0x0:_0x299029['offset'];var _0x338671=_0x14d73f?_0x3a9363[_0xf952('0x1e')]:_0x299029[_0xf952('0x1f')]+_0x299029[_0xf952('0x1c')];var _0x21ce17;if(_0x338671>=_0x63b55a){_0x338671=_0x63b55a;_0x21ce17=0xc8;}else{_0x21ce17=0xce;}_0x2161ba[_0xf952('0x1a')](_0x21ce17);return _0x2161ba[_0xf952('0x20')](_0xf952('0x21'),_0x26564b+'-'+_0x338671+'/'+_0x63b55a)[_0xf952('0x1b')](_0x3a9363);}return null;};}function patchUpdates(_0x3a3990){return function(_0x577a29){try{jsonpatch[_0xf952('0x22')](_0x577a29,_0x3a3990,!![]);}catch(_0x418e60){return BPromise[_0xf952('0x23')](_0x418e60);}return _0x577a29[_0xf952('0x24')]();};}function saveUpdates(_0x55cb13,_0x200568){return function(_0x2ee2ed){if(_0x2ee2ed){return _0x2ee2ed[_0xf952('0x25')](_0x55cb13)[_0xf952('0x26')](function(_0x40f4ab){return _0x40f4ab;});}return null;};}function removeEntity(_0x156a55,_0x3a49f5){return function(_0x2144d6){if(_0x2144d6){return _0x2144d6[_0xf952('0x27')]()[_0xf952('0x26')](function(){_0x156a55[_0xf952('0x1a')](0xcc)[_0xf952('0x28')]();});}};}function handleEntityNotFound(_0x3f04a7,_0xa63722){return function(_0x17c1be){if(!_0x17c1be){_0x3f04a7[_0xf952('0x19')](0x194);}return _0x17c1be;};}function handleError(_0x23aeb6,_0x29a50e){_0x29a50e=_0x29a50e||0x1f4;return function(_0x591825){logger[_0xf952('0x29')](_0x591825[_0xf952('0x2a')]);if(_0x591825[_0xf952('0x2b')]){delete _0x591825[_0xf952('0x2b')];}_0x23aeb6[_0xf952('0x1a')](_0x29a50e)['send'](_0x591825);};}exports[_0xf952('0x2c')]=function(_0x667f44,_0x1c401d){var _0xfaa60d={},_0x159f79={},_0x174a77={'count':0x0,'rows':[]};var _0x4dbb49=_['map'](db[_0xf952('0x2d')][_0xf952('0x2e')],function(_0x236769){return{'name':_0x236769[_0xf952('0x2f')],'type':_0x236769[_0xf952('0x30')][_0xf952('0x31')]};});_0x159f79[_0xf952('0x32')]=_['map'](_0x4dbb49,'name');_0x159f79[_0xf952('0x33')]=_[_0xf952('0x34')](_0x667f44[_0xf952('0x33')]);_0x159f79[_0xf952('0x35')]=_[_0xf952('0x36')](_0x159f79[_0xf952('0x32')],_0x159f79['query']);_0xfaa60d['attributes']=_['intersection'](_0x159f79['model'],qs[_0xf952('0x37')](_0x667f44[_0xf952('0x33')]['fields']));_0xfaa60d[_0xf952('0x38')]=_0xfaa60d[_0xf952('0x38')]['length']?_0xfaa60d[_0xf952('0x38')]:_0x159f79['model'];if(!_0x667f44[_0xf952('0x33')][_0xf952('0x39')](_0xf952('0x3a'))){_0xfaa60d[_0xf952('0x1c')]=qs[_0xf952('0x1c')](_0x667f44[_0xf952('0x33')][_0xf952('0x1c')]);_0xfaa60d[_0xf952('0x1f')]=qs[_0xf952('0x1f')](_0x667f44[_0xf952('0x33')]['offset']);}_0xfaa60d[_0xf952('0x3b')]=qs[_0xf952('0x3c')](_0x667f44[_0xf952('0x33')][_0xf952('0x3c')]);_0xfaa60d[_0xf952('0x3d')]=qs['filters'](_[_0xf952('0x3e')](_0x667f44['query'],_0x159f79[_0xf952('0x35')]),_0x4dbb49);if(_0x667f44['query'][_0xf952('0x3f')]){_0xfaa60d[_0xf952('0x3d')]=_[_0xf952('0x40')](_0xfaa60d['where'],{'$or':_[_0xf952('0x41')](_0x4dbb49,function(_0x3a819d){if(_0x3a819d[_0xf952('0x30')]!==_0xf952('0x42')){var _0x250ac3={};_0x250ac3[_0x3a819d['name']]={'$like':'%'+_0x667f44[_0xf952('0x33')][_0xf952('0x3f')]+'%'};return _0x250ac3;}})});}_0xfaa60d=_[_0xf952('0x40')]({},_0xfaa60d,_0x667f44[_0xf952('0x43')]);var _0x1fd773={'where':_0xfaa60d[_0xf952('0x3d')]};return db['VtigerField'][_0xf952('0x1e')](_0x1fd773)['then'](function(_0x1237fe){_0x174a77[_0xf952('0x1e')]=_0x1237fe;if(_0x667f44['query']['includeAll']){_0xfaa60d['include']=[{'all':!![]}];}return db[_0xf952('0x2d')][_0xf952('0x44')](_0xfaa60d);})[_0xf952('0x26')](function(_0x4053c5){_0x174a77['rows']=_0x4053c5;return _0x174a77;})[_0xf952('0x26')](respondWithFilteredResult(_0x1c401d,_0xfaa60d))['catch'](handleError(_0x1c401d,null));};exports[_0xf952('0x45')]=function(_0x52e697,_0x1391d5){var _0x573dab={'raw':!![],'where':{'id':_0x52e697[_0xf952('0x46')]['id']}},_0x586453={};_0x586453[_0xf952('0x32')]=_[_0xf952('0x34')](db['VtigerField']['rawAttributes']);_0x586453[_0xf952('0x33')]=_[_0xf952('0x34')](_0x52e697[_0xf952('0x33')]);_0x586453['filters']=_[_0xf952('0x36')](_0x586453[_0xf952('0x32')],_0x586453['query']);_0x573dab['attributes']=_['intersection'](_0x586453['model'],qs[_0xf952('0x37')](_0x52e697[_0xf952('0x33')][_0xf952('0x37')]));_0x573dab[_0xf952('0x38')]=_0x573dab[_0xf952('0x38')][_0xf952('0x47')]?_0x573dab[_0xf952('0x38')]:_0x586453[_0xf952('0x32')];if(_0x52e697[_0xf952('0x33')][_0xf952('0x48')]){_0x573dab[_0xf952('0x49')]=[{'all':!![]}];}_0x573dab=_[_0xf952('0x40')]({},_0x573dab,_0x52e697[_0xf952('0x43')]);return db['VtigerField'][_0xf952('0x4a')](_0x573dab)[_0xf952('0x26')](handleEntityNotFound(_0x1391d5,null))[_0xf952('0x26')](respondWithResult(_0x1391d5,null))[_0xf952('0x4b')](handleError(_0x1391d5,null));};exports[_0xf952('0x4c')]=function(_0x49efa6,_0x5d4f09){return db[_0xf952('0x2d')][_0xf952('0x4c')](_0x49efa6[_0xf952('0x4d')],{})[_0xf952('0x26')](respondWithResult(_0x5d4f09,0xc9))[_0xf952('0x4b')](handleError(_0x5d4f09,null));};exports[_0xf952('0x25')]=function(_0x4f904b,_0x244922){if(_0x4f904b[_0xf952('0x4d')]['id']){delete _0x4f904b[_0xf952('0x4d')]['id'];}return db[_0xf952('0x2d')][_0xf952('0x4a')]({'where':{'id':_0x4f904b[_0xf952('0x46')]['id']}})[_0xf952('0x26')](handleEntityNotFound(_0x244922,null))['then'](saveUpdates(_0x4f904b[_0xf952('0x4d')],null))[_0xf952('0x26')](respondWithResult(_0x244922,null))['catch'](handleError(_0x244922,null));};exports[_0xf952('0x27')]=function(_0xbe13b9,_0x35805e){return db['VtigerField']['find']({'where':{'id':_0xbe13b9[_0xf952('0x46')]['id']}})[_0xf952('0x26')](handleEntityNotFound(_0x35805e,null))['then'](removeEntity(_0x35805e,null))['catch'](handleError(_0x35805e,null));};
\ No newline at end of file
index 9e171eb..66d8719 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x426c=['../../config/environment','./intVtigerField.attributes','exports','VtigerField','vtiger_unique_index','idField','FieldId','lodash','util','../../config/logger','request-promise','path','rimraf'];(function(_0x3088dc,_0x3d44bd){var _0x92d987=function(_0x32d338){while(--_0x32d338){_0x3088dc['push'](_0x3088dc['shift']());}};_0x92d987(++_0x3d44bd);}(_0x426c,0x180));var _0xc426=function(_0x47761d,_0x3f8494){_0x47761d=_0x47761d-0x0;var _0x3d1c05=_0x426c[_0x47761d];return _0x3d1c05;};'use strict';var _=require(_0xc426('0x0'));var util=require(_0xc426('0x1'));var logger=require(_0xc426('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc426('0x3'));var fs=require('fs');var path=require(_0xc426('0x4'));var rimraf=require(_0xc426('0x5'));var config=require(_0xc426('0x6'));var attributes=require(_0xc426('0x7'));module[_0xc426('0x8')]=function(_0x5dde93,_0x4239f6){return _0x5dde93['define'](_0xc426('0x9'),attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':_0xc426('0xa'),'fields':[_0xc426('0xb'),_0xc426('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb06b=['rimraf','../../config/environment','./intVtigerField.attributes','exports','define','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','lodash','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x441f7a,_0x576321){var _0x4821da=function(_0x5c5b52){while(--_0x5c5b52){_0x441f7a['push'](_0x441f7a['shift']());}};_0x4821da(++_0x576321);}(_0xb06b,0xca));var _0xbb06=function(_0x383fbd,_0x145965){_0x383fbd=_0x383fbd-0x0;var _0x4474cf=_0xb06b[_0x383fbd];return _0x4474cf;};'use strict';var _=require(_0xbb06('0x0'));var util=require('util');var logger=require(_0xbb06('0x1'))('api');var moment=require(_0xbb06('0x2'));var BPromise=require(_0xbb06('0x3'));var rp=require(_0xbb06('0x4'));var fs=require('fs');var path=require(_0xbb06('0x5'));var rimraf=require(_0xbb06('0x6'));var config=require(_0xbb06('0x7'));var attributes=require(_0xbb06('0x8'));module[_0xbb06('0x9')]=function(_0x61d63,_0x1ded23){return _0x61d63[_0xbb06('0xa')](_0xbb06('0xb'),attributes,{'tableName':_0xbb06('0xc'),'paranoid':![],'indexes':[{'name':_0xbb06('0xd'),'fields':[_0xbb06('0xe'),_0xbb06('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index cb4f9f6..43638ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf199=['lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xf199,0x168));var _0x9f19=function(_0x443246,_0x199405){_0x443246=_0x443246-0x0;var _0xf91625=_0xf199[_0x443246];return _0xf91625;};'use strict';var _=require(_0x9f19('0x0'));var util=require('util');var moment=require(_0x9f19('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9f19('0x2'));var db=require(_0x9f19('0x3'))['db'];var utils=require(_0x9f19('0x4'));var logger=require(_0x9f19('0x5'))('rpc');var config=require(_0x9f19('0x6'));var jayson=require(_0x9f19('0x7'));var client=jayson[_0x9f19('0x8')][_0x9f19('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3914b8,_0x1d7a58,_0x584dad){return new BPromise(function(_0x37b29d,_0x15900a){return client[_0x9f19('0xa')](_0x3914b8,_0x584dad)[_0x9f19('0xb')](function(_0x5cc152){logger[_0x9f19('0xc')](_0x9f19('0xd'),_0x1d7a58,_0x9f19('0xe'));logger[_0x9f19('0xf')](_0x9f19('0x10'),_0x1d7a58,_0x9f19('0xe'),JSON[_0x9f19('0x11')](_0x5cc152));if(_0x5cc152[_0x9f19('0x12')]){if(_0x5cc152[_0x9f19('0x12')]['code']===0x1f4){logger[_0x9f19('0x12')](_0x9f19('0xd'),_0x1d7a58,_0x5cc152['error'][_0x9f19('0x13')]);return _0x15900a(_0x5cc152['error']['message']);}logger[_0x9f19('0x12')](_0x9f19('0xd'),_0x1d7a58,_0x5cc152['error']['message']);return _0x37b29d(_0x5cc152[_0x9f19('0x12')][_0x9f19('0x13')]);}else{logger[_0x9f19('0xc')](_0x9f19('0xd'),_0x1d7a58,'request\x20sent');_0x37b29d(_0x5cc152['result']['message']);}})['catch'](function(_0x74db8a){logger[_0x9f19('0x12')](_0x9f19('0xd'),_0x1d7a58,_0x74db8a);_0x15900a(_0x74db8a);});});}
\ No newline at end of file
+var _0x250e=['request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','info','VtigerField,\x20%s,\x20%s'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x250e,0x134));var _0xe250=function(_0x38eb04,_0x5349ef){_0x38eb04=_0x38eb04-0x0;var _0x47bc28=_0x250e[_0x38eb04];return _0x47bc28;};'use strict';var _=require(_0xe250('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xe250('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe250('0x2'));var db=require(_0xe250('0x3'))['db'];var utils=require(_0xe250('0x4'));var logger=require('../../config/logger')(_0xe250('0x5'));var config=require(_0xe250('0x6'));var jayson=require(_0xe250('0x7'));var client=jayson['client'][_0xe250('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1ce102,_0x113eae,_0x5003c3){return new BPromise(function(_0x3703eb,_0x333cbd){return client[_0xe250('0x9')](_0x1ce102,_0x5003c3)['then'](function(_0x400b23){logger[_0xe250('0xa')](_0xe250('0xb'),_0x113eae,_0xe250('0xc'));logger[_0xe250('0xd')](_0xe250('0xe'),_0x113eae,_0xe250('0xc'),JSON[_0xe250('0xf')](_0x400b23));if(_0x400b23[_0xe250('0x10')]){if(_0x400b23[_0xe250('0x10')]['code']===0x1f4){logger[_0xe250('0x10')](_0xe250('0xb'),_0x113eae,_0x400b23['error'][_0xe250('0x11')]);return _0x333cbd(_0x400b23['error']['message']);}logger[_0xe250('0x10')](_0xe250('0xb'),_0x113eae,_0x400b23[_0xe250('0x10')][_0xe250('0x11')]);return _0x3703eb(_0x400b23[_0xe250('0x10')][_0xe250('0x11')]);}else{logger[_0xe250('0xa')](_0xe250('0xb'),_0x113eae,_0xe250('0xc'));_0x3703eb(_0x400b23[_0xe250('0x12')][_0xe250('0x11')]);}})[_0xe250('0x13')](function(_0x4318a4){logger[_0xe250('0x10')](_0xe250('0xb'),_0x113eae,_0x4318a4);_0x333cbd(_0x4318a4);});});}
\ No newline at end of file
index d9d45e7..bab907a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x398b=['path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./intZendeskAccount.controller','index','isAuthenticated','show','get','/:id/configurations','getConfigurations','getFields','create','post','put','/:id','update','delete','exports','multer','util'];(function(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0x398b,0x1b6));var _0xb398=function(_0x4b7fdc,_0x3e29ce){_0x4b7fdc=_0x4b7fdc-0x0;var _0x32a791=_0x398b[_0x4b7fdc];return _0x32a791;};'use strict';var multer=require(_0xb398('0x0'));var util=require(_0xb398('0x1'));var path=require(_0xb398('0x2'));var timeout=require(_0xb398('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xb398('0x4'));var auth=require(_0xb398('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb398('0x6'));var controller=require(_0xb398('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xb398('0x8')]);router['get']('/:id',auth[_0xb398('0x9')](),controller[_0xb398('0xa')]);router[_0xb398('0xb')](_0xb398('0xc'),auth['isAuthenticated'](),controller[_0xb398('0xd')]);router['get']('/:id/fields',auth[_0xb398('0x9')](),controller[_0xb398('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb398('0xf')]);router[_0xb398('0x10')](_0xb398('0xc'),auth[_0xb398('0x9')](),controller['addConfiguration']);router[_0xb398('0x11')](_0xb398('0x12'),auth['isAuthenticated'](),controller[_0xb398('0x13')]);router[_0xb398('0x14')](_0xb398('0x12'),auth[_0xb398('0x9')](),controller['destroy']);module[_0xb398('0x15')]=router;
\ No newline at end of file
+var _0x0e07=['express','fs-extra','../../components/interaction/service','./intZendeskAccount.controller','get','isAuthenticated','/:id','getConfigurations','getFields','post','create','/:id/configurations','put','delete','util','path','connect-timeout'];(function(_0xd07624,_0x121aad){var _0x2acf19=function(_0x4f189e){while(--_0x4f189e){_0xd07624['push'](_0xd07624['shift']());}};_0x2acf19(++_0x121aad);}(_0x0e07,0xa7));var _0x70e0=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x0e07[_0x167cc1];return _0x10bc4b;};'use strict';var multer=require('multer');var util=require(_0x70e0('0x0'));var path=require(_0x70e0('0x1'));var timeout=require(_0x70e0('0x2'));var express=require(_0x70e0('0x3'));var router=express['Router']();var fs_extra=require(_0x70e0('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x70e0('0x5'));var config=require('../../config/environment');var controller=require(_0x70e0('0x6'));router[_0x70e0('0x7')]('/',auth[_0x70e0('0x8')](),controller['index']);router[_0x70e0('0x7')](_0x70e0('0x9'),auth[_0x70e0('0x8')](),controller['show']);router[_0x70e0('0x7')]('/:id/configurations',auth[_0x70e0('0x8')](),controller[_0x70e0('0xa')]);router[_0x70e0('0x7')]('/:id/fields',auth[_0x70e0('0x8')](),controller[_0x70e0('0xb')]);router[_0x70e0('0xc')]('/',auth[_0x70e0('0x8')](),controller[_0x70e0('0xd')]);router[_0x70e0('0xc')](_0x70e0('0xe'),auth[_0x70e0('0x8')](),controller['addConfiguration']);router[_0x70e0('0xf')](_0x70e0('0x9'),auth[_0x70e0('0x8')](),controller['update']);router[_0x70e0('0x10')](_0x70e0('0x9'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 1f5c8bf..4179858 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d68=['newTab','sequelize','exports','STRING','username','remoteUri','password','token','integrationTab'];(function(_0x187283,_0x4246d2){var _0x4aca7f=function(_0x44b8e1){while(--_0x44b8e1){_0x187283['push'](_0x187283['shift']());}};_0x4aca7f(++_0x4246d2);}(_0x4d68,0x1c3));var _0x84d6=function(_0x8ba19a,_0x1d2b2b){_0x8ba19a=_0x8ba19a-0x0;var _0x2bd8b4=_0x4d68[_0x8ba19a];return _0x2bd8b4;};'use strict';var Sequelize=require(_0x84d6('0x0'));module[_0x84d6('0x1')]={'name':{'type':Sequelize[_0x84d6('0x2')]},'description':{'type':Sequelize[_0x84d6('0x2')]},'username':{'type':Sequelize[_0x84d6('0x2')],'unique':_0x84d6('0x3')},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x84d6('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x84d6('0x4')},'authType':{'type':Sequelize['ENUM'](_0x84d6('0x5'),_0x84d6('0x6')),'defaultValue':_0x84d6('0x5')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x84d6('0x7'),_0x84d6('0x8')),'defaultValue':_0x84d6('0x7')}};
\ No newline at end of file
+var _0x7e4b=['ENUM','password','token','integrationTab','sequelize','exports','STRING','remoteUri'];(function(_0x9b5245,_0x4b6bd4){var _0x4f2c7d=function(_0x56c740){while(--_0x56c740){_0x9b5245['push'](_0x9b5245['shift']());}};_0x4f2c7d(++_0x4b6bd4);}(_0x7e4b,0x84));var _0xb7e4=function(_0x22e67f,_0x55b6ac){_0x22e67f=_0x22e67f-0x0;var _0x314212=_0x7e4b[_0x22e67f];return _0x314212;};'use strict';var Sequelize=require(_0xb7e4('0x0'));module[_0xb7e4('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb7e4('0x2')]},'username':{'type':Sequelize[_0xb7e4('0x2')],'unique':'username'},'password':{'type':Sequelize[_0xb7e4('0x2')]},'token':{'type':Sequelize[_0xb7e4('0x2')]},'remoteUri':{'type':Sequelize[_0xb7e4('0x2')],'unique':_0xb7e4('0x3')},'authType':{'type':Sequelize[_0xb7e4('0x4')](_0xb7e4('0x5'),_0xb7e4('0x6')),'defaultValue':_0xb7e4('0x5')},'serverUrl':{'type':Sequelize[_0xb7e4('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xb7e4('0x7'),'newTab'),'defaultValue':_0xb7e4('0x7')}};
\ No newline at end of file
index 0f91e03..6c64046 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1e3=['assignee','remove','includes','position','title','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','end','json','undefined','count','offset','status','set','apply','save','then','destroy','name','send','ZendeskAccount','type','map','query','keys','attributes','intersection','model','fields','hasOwnProperty','nolimit','limit','order','sort','where','filters','pick','filter','VIRTUAL','includeAll','findAll','rows','catch','show','params','rawAttributes','merge','find','create','body','update','ZendeskConfiguration','length','getConfigurations','AccountId','getSubjects','channel','Descriptions','getDescriptions','ZendeskField','Subjects','getFields','findOne','password','token','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','ticket_fields','Basic\x20%s','%s:%s','username','base64','headers','%s/token:%s','ValidationError','Unknown\x20authentication\x20type','subject','group'];(function(_0x35b48e,_0x239b57){var _0x1ea91=function(_0x4c9850){while(--_0x4c9850){_0x35b48e['push'](_0x35b48e['shift']());}};_0x1ea91(++_0x239b57);}(_0xe1e3,0x1bb));var _0x3e1e=function(_0x4ef658,_0x298555){_0x4ef658=_0x4ef658-0x0;var _0x1ed4ff=_0xe1e3[_0x4ef658];return _0x1ed4ff;};'use strict';var emlformat=require(_0x3e1e('0x0'));var rimraf=require(_0x3e1e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3e1e('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3e1e('0x3'));var Mustache=require('mustache');var util=require(_0x3e1e('0x4'));var path=require(_0x3e1e('0x5'));var sox=require(_0x3e1e('0x6'));var csv=require(_0x3e1e('0x7'));var ejs=require(_0x3e1e('0x8'));var fs=require('fs');var fs_extra=require(_0x3e1e('0x9'));var _=require('lodash');var squel=require(_0x3e1e('0xa'));var crypto=require(_0x3e1e('0xb'));var jsforce=require(_0x3e1e('0xc'));var deskjs=require(_0x3e1e('0xd'));var toCsv=require(_0x3e1e('0x7'));var querystring=require(_0x3e1e('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x3e1e('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3e1e('0x10'));var logger=require(_0x3e1e('0x11'))(_0x3e1e('0x12'));var utils=require('../../config/utils');var config=require(_0x3e1e('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x536129,_0x5c09a2){_0x5c09a2=_0x5c09a2||0xcc;return function(_0x14ad58){if(_0x14ad58){return _0x536129['sendStatus'](_0x5c09a2);}return _0x536129['status'](_0x5c09a2)[_0x3e1e('0x14')]();};}function respondWithResult(_0x8bd4cd,_0x78ee54){_0x78ee54=_0x78ee54||0xc8;return function(_0x50f221){if(_0x50f221){return _0x8bd4cd['status'](_0x78ee54)[_0x3e1e('0x15')](_0x50f221);}};}function respondWithFilteredResult(_0x1b62e6,_0x4dca60){return function(_0x26cb35){if(_0x26cb35){var _0x1f0af9=typeof _0x4dca60['offset']===_0x3e1e('0x16')&&typeof _0x4dca60['limit']===_0x3e1e('0x16');var _0x247daa=_0x26cb35[_0x3e1e('0x17')];var _0x39eaa7=_0x1f0af9?0x0:_0x4dca60[_0x3e1e('0x18')];var _0x1c181b=_0x1f0af9?_0x26cb35['count']:_0x4dca60['offset']+_0x4dca60['limit'];var _0x428e4e;if(_0x1c181b>=_0x247daa){_0x1c181b=_0x247daa;_0x428e4e=0xc8;}else{_0x428e4e=0xce;}_0x1b62e6[_0x3e1e('0x19')](_0x428e4e);return _0x1b62e6[_0x3e1e('0x1a')]('Content-Range',_0x39eaa7+'-'+_0x1c181b+'/'+_0x247daa)[_0x3e1e('0x15')](_0x26cb35);}return null;};}function patchUpdates(_0x530815){return function(_0x228991){try{jsonpatch[_0x3e1e('0x1b')](_0x228991,_0x530815,!![]);}catch(_0x474085){return BPromise['reject'](_0x474085);}return _0x228991[_0x3e1e('0x1c')]();};}function saveUpdates(_0x96396,_0xefa098){return function(_0x55dc62){if(_0x55dc62){return _0x55dc62['update'](_0x96396)[_0x3e1e('0x1d')](function(_0x1b5097){return _0x1b5097;});}return null;};}function removeEntity(_0x488f9f,_0x60e6bc){return function(_0x56ae51){if(_0x56ae51){return _0x56ae51[_0x3e1e('0x1e')]()[_0x3e1e('0x1d')](function(){_0x488f9f[_0x3e1e('0x19')](0xcc)[_0x3e1e('0x14')]();});}};}function handleEntityNotFound(_0x43d583,_0x21c898){return function(_0x4ee2b5){if(!_0x4ee2b5){_0x43d583['sendStatus'](0x194);}return _0x4ee2b5;};}function handleError(_0x44e419,_0x541ef1){_0x541ef1=_0x541ef1||0x1f4;return function(_0x55db8f){logger['error'](_0x55db8f['stack']);if(_0x55db8f[_0x3e1e('0x1f')]){delete _0x55db8f[_0x3e1e('0x1f')];}_0x44e419['status'](_0x541ef1)[_0x3e1e('0x20')](_0x55db8f);};}exports['index']=function(_0xdfcd93,_0x176bb4){var _0x53a6ff={},_0x43e029={},_0x210a84={'count':0x0,'rows':[]};var _0x45ed0e=_['map'](db[_0x3e1e('0x21')]['rawAttributes'],function(_0x591c36){return{'name':_0x591c36['fieldName'],'type':_0x591c36[_0x3e1e('0x22')]['key']};});_0x43e029['model']=_[_0x3e1e('0x23')](_0x45ed0e,_0x3e1e('0x1f'));_0x43e029[_0x3e1e('0x24')]=_[_0x3e1e('0x25')](_0xdfcd93[_0x3e1e('0x24')]);_0x43e029['filters']=_['intersection'](_0x43e029['model'],_0x43e029['query']);_0x53a6ff[_0x3e1e('0x26')]=_[_0x3e1e('0x27')](_0x43e029[_0x3e1e('0x28')],qs[_0x3e1e('0x29')](_0xdfcd93[_0x3e1e('0x24')][_0x3e1e('0x29')]));_0x53a6ff[_0x3e1e('0x26')]=_0x53a6ff[_0x3e1e('0x26')]['length']?_0x53a6ff[_0x3e1e('0x26')]:_0x43e029[_0x3e1e('0x28')];if(!_0xdfcd93['query'][_0x3e1e('0x2a')](_0x3e1e('0x2b'))){_0x53a6ff[_0x3e1e('0x2c')]=qs[_0x3e1e('0x2c')](_0xdfcd93['query']['limit']);_0x53a6ff[_0x3e1e('0x18')]=qs[_0x3e1e('0x18')](_0xdfcd93['query'][_0x3e1e('0x18')]);}_0x53a6ff[_0x3e1e('0x2d')]=qs['sort'](_0xdfcd93[_0x3e1e('0x24')][_0x3e1e('0x2e')]);_0x53a6ff[_0x3e1e('0x2f')]=qs[_0x3e1e('0x30')](_[_0x3e1e('0x31')](_0xdfcd93['query'],_0x43e029[_0x3e1e('0x30')]),_0x45ed0e);if(_0xdfcd93[_0x3e1e('0x24')][_0x3e1e('0x32')]){_0x53a6ff[_0x3e1e('0x2f')]=_['merge'](_0x53a6ff[_0x3e1e('0x2f')],{'$or':_[_0x3e1e('0x23')](_0x45ed0e,function(_0x111da4){if(_0x111da4[_0x3e1e('0x22')]!==_0x3e1e('0x33')){var _0x25a95b={};_0x25a95b[_0x111da4[_0x3e1e('0x1f')]]={'$like':'%'+_0xdfcd93['query'][_0x3e1e('0x32')]+'%'};return _0x25a95b;}})});}_0x53a6ff=_['merge']({},_0x53a6ff,_0xdfcd93['options']);var _0x4f598e={'where':_0x53a6ff[_0x3e1e('0x2f')]};return db[_0x3e1e('0x21')]['count'](_0x4f598e)[_0x3e1e('0x1d')](function(_0xb030eb){_0x210a84['count']=_0xb030eb;if(_0xdfcd93[_0x3e1e('0x24')][_0x3e1e('0x34')]){_0x53a6ff['include']=[{'all':!![]}];}return db['ZendeskAccount'][_0x3e1e('0x35')](_0x53a6ff);})['then'](function(_0x4ff868){_0x210a84[_0x3e1e('0x36')]=_0x4ff868;return _0x210a84;})[_0x3e1e('0x1d')](respondWithFilteredResult(_0x176bb4,_0x53a6ff))[_0x3e1e('0x37')](handleError(_0x176bb4,null));};exports[_0x3e1e('0x38')]=function(_0x377a06,_0x55ea1d){var _0x5b32ad={'raw':![],'where':{'id':_0x377a06[_0x3e1e('0x39')]['id']}},_0x24b2ad={};_0x24b2ad[_0x3e1e('0x28')]=_['keys'](db[_0x3e1e('0x21')][_0x3e1e('0x3a')]);_0x24b2ad[_0x3e1e('0x24')]=_['keys'](_0x377a06[_0x3e1e('0x24')]);_0x24b2ad['filters']=_['intersection'](_0x24b2ad[_0x3e1e('0x28')],_0x24b2ad[_0x3e1e('0x24')]);_0x5b32ad[_0x3e1e('0x26')]=_[_0x3e1e('0x27')](_0x24b2ad['model'],qs['fields'](_0x377a06['query']['fields']));_0x5b32ad[_0x3e1e('0x26')]=_0x5b32ad[_0x3e1e('0x26')]['length']?_0x5b32ad['attributes']:_0x24b2ad[_0x3e1e('0x28')];if(_0x377a06[_0x3e1e('0x24')][_0x3e1e('0x34')]){_0x5b32ad['include']=[{'all':!![]}];}_0x5b32ad=_[_0x3e1e('0x3b')]({},_0x5b32ad,_0x377a06['options']);return db[_0x3e1e('0x21')][_0x3e1e('0x3c')](_0x5b32ad)[_0x3e1e('0x1d')](handleEntityNotFound(_0x55ea1d,null))[_0x3e1e('0x1d')](respondWithResult(_0x55ea1d,null))[_0x3e1e('0x37')](handleError(_0x55ea1d,null));};exports[_0x3e1e('0x3d')]=function(_0x53d32b,_0x2f14b3){return db[_0x3e1e('0x21')]['create'](_0x53d32b[_0x3e1e('0x3e')],{})[_0x3e1e('0x1d')](respondWithResult(_0x2f14b3,0xc9))['catch'](handleError(_0x2f14b3,null));};exports[_0x3e1e('0x3f')]=function(_0x347b3f,_0x2e286f){if(_0x347b3f[_0x3e1e('0x3e')]['id']){delete _0x347b3f['body']['id'];}return db[_0x3e1e('0x21')][_0x3e1e('0x3c')]({'where':{'id':_0x347b3f[_0x3e1e('0x39')]['id']}})[_0x3e1e('0x1d')](handleEntityNotFound(_0x2e286f,null))['then'](saveUpdates(_0x347b3f[_0x3e1e('0x3e')],null))[_0x3e1e('0x1d')](respondWithResult(_0x2e286f,null))[_0x3e1e('0x37')](handleError(_0x2e286f,null));};exports[_0x3e1e('0x1e')]=function(_0xe2516c,_0x1df5a8){return db[_0x3e1e('0x21')][_0x3e1e('0x3c')]({'where':{'id':_0xe2516c['params']['id']}})[_0x3e1e('0x1d')](handleEntityNotFound(_0x1df5a8,null))['then'](removeEntity(_0x1df5a8,null))['catch'](handleError(_0x1df5a8,null));};exports['getConfigurations']=function(_0x1c4269,_0x17641c,_0x5147a2){var _0x13b076={};var _0x592733={};var _0x5b2416;var _0x3eaf76;return db['ZendeskAccount']['findOne']({'where':{'id':_0x1c4269['params']['id']}})[_0x3e1e('0x1d')](handleEntityNotFound(_0x17641c,null))[_0x3e1e('0x1d')](function(_0x1334c8){if(_0x1334c8){_0x5b2416=_0x1334c8;_0x592733[_0x3e1e('0x28')]=_[_0x3e1e('0x25')](db[_0x3e1e('0x40')][_0x3e1e('0x3a')]);_0x592733['query']=_[_0x3e1e('0x25')](_0x1c4269['query']);_0x592733[_0x3e1e('0x30')]=_[_0x3e1e('0x27')](_0x592733[_0x3e1e('0x28')],_0x592733['query']);_0x13b076['attributes']=_[_0x3e1e('0x27')](_0x592733[_0x3e1e('0x28')],qs['fields'](_0x1c4269[_0x3e1e('0x24')]['fields']));_0x13b076['attributes']=_0x13b076[_0x3e1e('0x26')][_0x3e1e('0x41')]?_0x13b076['attributes']:_0x592733[_0x3e1e('0x28')];_0x13b076['order']=qs['sort'](_0x1c4269[_0x3e1e('0x24')]['sort']);_0x13b076[_0x3e1e('0x2f')]=qs['filters'](_[_0x3e1e('0x31')](_0x1c4269['query'],_0x592733[_0x3e1e('0x30')]));if(_0x1c4269[_0x3e1e('0x24')]['filter']){_0x13b076['where']=_['merge'](_0x13b076[_0x3e1e('0x2f')],{'$or':_[_0x3e1e('0x23')](_0x13b076[_0x3e1e('0x26')],function(_0x588189){var _0x1b04ce={};_0x1b04ce[_0x588189]={'$like':'%'+_0x1c4269[_0x3e1e('0x24')][_0x3e1e('0x32')]+'%'};return _0x1b04ce;})});}_0x13b076=_['merge']({},_0x13b076,_0x1c4269['options']);return _0x5b2416[_0x3e1e('0x42')](_0x13b076);}})['then'](function(_0x3b97a2){if(_0x3b97a2){_0x3eaf76=_0x3b97a2[_0x3e1e('0x41')];if(!_0x1c4269[_0x3e1e('0x24')]['hasOwnProperty'](_0x3e1e('0x2b'))){_0x13b076['limit']=qs[_0x3e1e('0x2c')](_0x1c4269[_0x3e1e('0x24')]['limit']);_0x13b076[_0x3e1e('0x18')]=qs['offset'](_0x1c4269[_0x3e1e('0x24')]['offset']);}return _0x5b2416[_0x3e1e('0x42')](_0x13b076);}})['then'](function(_0x31062e){if(_0x31062e){return _0x31062e?{'count':_0x3eaf76,'rows':_0x31062e}:null;}})[_0x3e1e('0x1d')](respondWithResult(_0x17641c,null))[_0x3e1e('0x37')](handleError(_0x17641c,null));};exports['addConfiguration']=function(_0x11cab1,_0x1fbcfc,_0x4e6957){if(_0x11cab1[_0x3e1e('0x3e')]['id']){delete _0x11cab1['body']['id'];}return db['ZendeskAccount']['findOne']({'where':{'id':_0x11cab1[_0x3e1e('0x39')]['id']}})[_0x3e1e('0x1d')](handleEntityNotFound(_0x1fbcfc,null))[_0x3e1e('0x1d')](function(_0x4b0944){if(_0x4b0944){_0x11cab1[_0x3e1e('0x3e')][_0x3e1e('0x43')]=_0x4b0944['id'];_0x11cab1[_0x3e1e('0x3e')]['Subjects']=integrations[_0x3e1e('0x44')](_0x11cab1[_0x3e1e('0x3e')][_0x3e1e('0x45')],_0x11cab1[_0x3e1e('0x3e')][_0x3e1e('0x22')]);_0x11cab1[_0x3e1e('0x3e')][_0x3e1e('0x46')]=integrations[_0x3e1e('0x47')](_0x11cab1['body']['channel'],_0x11cab1[_0x3e1e('0x3e')][_0x3e1e('0x22')]);return db[_0x3e1e('0x40')][_0x3e1e('0x3d')](_0x11cab1[_0x3e1e('0x3e')],{'include':[{'model':db[_0x3e1e('0x48')],'as':_0x3e1e('0x49')},{'model':db[_0x3e1e('0x48')],'as':_0x3e1e('0x46')}]});}return null;})[_0x3e1e('0x1d')](respondWithResult(_0x1fbcfc,null))[_0x3e1e('0x37')](handleError(_0x1fbcfc,null));};exports[_0x3e1e('0x4a')]=function(_0x5e148e,_0x5581ee,_0x20bc4d){var _0x29ddc4='';return db[_0x3e1e('0x21')][_0x3e1e('0x4b')]({'where':{'id':_0x5e148e[_0x3e1e('0x39')]['id']},'attributes':['id','username',_0x3e1e('0x4c'),_0x3e1e('0x4d'),_0x3e1e('0x4e'),_0x3e1e('0x4f')]})[_0x3e1e('0x1d')](handleEntityNotFound(_0x5581ee,null))['then'](function(_0x8b6b28){if(_0x8b6b28){_0x29ddc4=_0x8b6b28[_0x3e1e('0x4f')];var _0xc60340=_0x29ddc4[_0x3e1e('0x50')](-0x1);if(_0xc60340==='/'){_0x29ddc4=_0x29ddc4[_0x3e1e('0x51')](0x0,_0x29ddc4[_0x3e1e('0x52')](_0xc60340));}var _0x4d0854={'method':_0x3e1e('0x53'),'uri':util[_0x3e1e('0x54')](_0x3e1e('0x55'),_0x29ddc4,_0x3e1e('0x56')),'json':!![]};switch(_0x8b6b28[_0x3e1e('0x4e')]){case _0x3e1e('0x4c'):_0x4d0854['headers']={'Authorization':util[_0x3e1e('0x54')](_0x3e1e('0x57'),new Buffer(util[_0x3e1e('0x54')](_0x3e1e('0x58'),_0x8b6b28[_0x3e1e('0x59')],_0x8b6b28[_0x3e1e('0x4c')]))['toString'](_0x3e1e('0x5a')))};break;case'token':_0x4d0854[_0x3e1e('0x5b')]={'Authorization':util[_0x3e1e('0x54')]('Basic\x20%s',new Buffer(util[_0x3e1e('0x54')](_0x3e1e('0x5c'),_0x8b6b28[_0x3e1e('0x59')],_0x8b6b28[_0x3e1e('0x4d')]))['toString'](_0x3e1e('0x5a')))};break;default:throw new db['Sequelize'][(_0x3e1e('0x5d'))](_0x3e1e('0x5e'));}return rp(_0x4d0854);}})[_0x3e1e('0x1d')](function(_0x632f99){if(_0x632f99){var _0x2ef476=[_0x3e1e('0x5f'),'description',_0x3e1e('0x60'),_0x3e1e('0x61')];_[_0x3e1e('0x62')](_0x632f99[_0x3e1e('0x56')],function(_0x4b4fd4){return _0x2ef476[_0x3e1e('0x63')](_0x4b4fd4[_0x3e1e('0x22')]);});return{'count':_0x632f99[_0x3e1e('0x56')][_0x3e1e('0x41')],'rows':_['map'](_0x632f99[_0x3e1e('0x56')],function(_0x41d98f){return{'id':_0x41d98f['id'],'name':_0x41d98f[_0x3e1e('0x64')]>0x7?_0x41d98f[_0x3e1e('0x65')]:_0x41d98f[_0x3e1e('0x22')],'custom':_0x41d98f[_0x3e1e('0x64')]>0x7?!![]:![],'options':_0x41d98f['system_field_options']?_0x41d98f['system_field_options']:_0x41d98f['custom_field_options']?_0x41d98f[_0x3e1e('0x66')]:[]};})};}})['then'](respondWithResult(_0x5581ee,null))[_0x3e1e('0x37')](function(_0x5f436f){var _0x32b5ef=_0x5e148e[_0x3e1e('0x24')][_0x3e1e('0x67')]?0x1f4:_0x5f436f[_0x3e1e('0x68')]||0x1f4;logger['error'](_0x3e1e('0x69'),'getFields',_0x32b5ef,JSON[_0x3e1e('0x6a')](_0x5f436f));delete _0x5f436f['name'];if(_0x32b5ef===0x191){_0x32b5ef=0x190;}_0x5581ee[_0x3e1e('0x19')](_0x32b5ef)[_0x3e1e('0x20')](_0x5e148e['query'][_0x3e1e('0x67')]?{'message':_0x3e1e('0x6b'),'statusCode':_0x5f436f[_0x3e1e('0x68')]}:_0x5f436f);});};
\ No newline at end of file
+var _0xa902=['%s:%s','base64','%s/token:%s','token','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','group','assignee','remove','includes','position','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','limit','set','Content-Range','json','apply','reject','update','destroy','then','end','error','stack','ZendeskAccount','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','fields','attributes','length','nolimit','order','where','pick','merge','VIRTUAL','filter','options','count','includeAll','include','findAll','rows','show','params','find','catch','create','body','sort','map','getConfigurations','hasOwnProperty','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','ZendeskConfiguration','ZendeskField','getFields','findOne','username','password','remoteUri','slice','GET','format','%s/%s','ticket_fields','authType','headers','Basic\x20%s'];(function(_0x67a5a9,_0x52dbc3){var _0x1ecd01=function(_0x3905d6){while(--_0x3905d6){_0x67a5a9['push'](_0x67a5a9['shift']());}};_0x1ecd01(++_0x52dbc3);}(_0xa902,0x8d));var _0x2a90=function(_0x120fc1,_0x1e555c){_0x120fc1=_0x120fc1-0x0;var _0x2af105=_0xa902[_0x120fc1];return _0x2af105;};'use strict';var emlformat=require(_0x2a90('0x0'));var rimraf=require(_0x2a90('0x1'));var zipdir=require(_0x2a90('0x2'));var jsonpatch=require(_0x2a90('0x3'));var rp=require(_0x2a90('0x4'));var moment=require('moment');var BPromise=require(_0x2a90('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x2a90('0x6'));var sox=require(_0x2a90('0x7'));var csv=require(_0x2a90('0x8'));var ejs=require(_0x2a90('0x9'));var fs=require('fs');var fs_extra=require(_0x2a90('0xa'));var _=require(_0x2a90('0xb'));var squel=require('squel');var crypto=require(_0x2a90('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2a90('0x8'));var querystring=require(_0x2a90('0xd'));var Papa=require(_0x2a90('0xe'));var Redis=require(_0x2a90('0xf'));var authService=require(_0x2a90('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x2a90('0x11'));var hardwareService=require(_0x2a90('0x12'));var logger=require(_0x2a90('0x13'))(_0x2a90('0x14'));var utils=require('../../config/utils');var config=require(_0x2a90('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x2a90('0x16'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x1f6953,_0x57aee3){_0x57aee3=_0x57aee3||0xcc;return function(_0x407ce5){if(_0x407ce5){return _0x1f6953[_0x2a90('0x17')](_0x57aee3);}return _0x1f6953[_0x2a90('0x18')](_0x57aee3)['end']();};}function respondWithResult(_0x56d1b8,_0x57227c){_0x57227c=_0x57227c||0xc8;return function(_0x46cb32){if(_0x46cb32){return _0x56d1b8[_0x2a90('0x18')](_0x57227c)['json'](_0x46cb32);}};}function respondWithFilteredResult(_0x1ff63d,_0x21c648){return function(_0x312782){if(_0x312782){var _0x25bd0e=typeof _0x21c648[_0x2a90('0x19')]===_0x2a90('0x1a')&&typeof _0x21c648[_0x2a90('0x1b')]===_0x2a90('0x1a');var _0x43eea5=_0x312782['count'];var _0x162f0b=_0x25bd0e?0x0:_0x21c648[_0x2a90('0x19')];var _0x4190ff=_0x25bd0e?_0x312782['count']:_0x21c648[_0x2a90('0x19')]+_0x21c648[_0x2a90('0x1b')];var _0x148d18;if(_0x4190ff>=_0x43eea5){_0x4190ff=_0x43eea5;_0x148d18=0xc8;}else{_0x148d18=0xce;}_0x1ff63d[_0x2a90('0x18')](_0x148d18);return _0x1ff63d[_0x2a90('0x1c')](_0x2a90('0x1d'),_0x162f0b+'-'+_0x4190ff+'/'+_0x43eea5)[_0x2a90('0x1e')](_0x312782);}return null;};}function patchUpdates(_0x114d42){return function(_0xf97adb){try{jsonpatch[_0x2a90('0x1f')](_0xf97adb,_0x114d42,!![]);}catch(_0x1340b9){return BPromise[_0x2a90('0x20')](_0x1340b9);}return _0xf97adb['save']();};}function saveUpdates(_0x3da7d0,_0x217873){return function(_0x2955a9){if(_0x2955a9){return _0x2955a9[_0x2a90('0x21')](_0x3da7d0)['then'](function(_0x180485){return _0x180485;});}return null;};}function removeEntity(_0xd033d,_0x4ed9e6){return function(_0x1bcfd7){if(_0x1bcfd7){return _0x1bcfd7[_0x2a90('0x22')]()[_0x2a90('0x23')](function(){_0xd033d[_0x2a90('0x18')](0xcc)[_0x2a90('0x24')]();});}};}function handleEntityNotFound(_0x1303d9,_0x29ed73){return function(_0x24a6d3){if(!_0x24a6d3){_0x1303d9['sendStatus'](0x194);}return _0x24a6d3;};}function handleError(_0x27f883,_0x17f978){_0x17f978=_0x17f978||0x1f4;return function(_0x3934d4){logger[_0x2a90('0x25')](_0x3934d4[_0x2a90('0x26')]);if(_0x3934d4['name']){delete _0x3934d4['name'];}_0x27f883[_0x2a90('0x18')](_0x17f978)['send'](_0x3934d4);};}exports['index']=function(_0x4969c3,_0x2d83b3){var _0x3c78f5={},_0x595638={},_0x5bd700={'count':0x0,'rows':[]};var _0x1add9a=_['map'](db[_0x2a90('0x27')][_0x2a90('0x28')],function(_0x3b580f){return{'name':_0x3b580f[_0x2a90('0x29')],'type':_0x3b580f[_0x2a90('0x2a')][_0x2a90('0x2b')]};});_0x595638[_0x2a90('0x2c')]=_['map'](_0x1add9a,_0x2a90('0x2d'));_0x595638[_0x2a90('0x2e')]=_[_0x2a90('0x2f')](_0x4969c3['query']);_0x595638[_0x2a90('0x30')]=_[_0x2a90('0x31')](_0x595638[_0x2a90('0x2c')],_0x595638[_0x2a90('0x2e')]);_0x3c78f5['attributes']=_[_0x2a90('0x31')](_0x595638[_0x2a90('0x2c')],qs[_0x2a90('0x32')](_0x4969c3[_0x2a90('0x2e')][_0x2a90('0x32')]));_0x3c78f5[_0x2a90('0x33')]=_0x3c78f5['attributes'][_0x2a90('0x34')]?_0x3c78f5[_0x2a90('0x33')]:_0x595638[_0x2a90('0x2c')];if(!_0x4969c3[_0x2a90('0x2e')]['hasOwnProperty'](_0x2a90('0x35'))){_0x3c78f5[_0x2a90('0x1b')]=qs['limit'](_0x4969c3[_0x2a90('0x2e')][_0x2a90('0x1b')]);_0x3c78f5['offset']=qs['offset'](_0x4969c3[_0x2a90('0x2e')][_0x2a90('0x19')]);}_0x3c78f5[_0x2a90('0x36')]=qs['sort'](_0x4969c3[_0x2a90('0x2e')]['sort']);_0x3c78f5[_0x2a90('0x37')]=qs['filters'](_[_0x2a90('0x38')](_0x4969c3['query'],_0x595638['filters']),_0x1add9a);if(_0x4969c3[_0x2a90('0x2e')]['filter']){_0x3c78f5[_0x2a90('0x37')]=_[_0x2a90('0x39')](_0x3c78f5[_0x2a90('0x37')],{'$or':_['map'](_0x1add9a,function(_0x57a2a5){if(_0x57a2a5[_0x2a90('0x2a')]!==_0x2a90('0x3a')){var _0x4eb7d9={};_0x4eb7d9[_0x57a2a5[_0x2a90('0x2d')]]={'$like':'%'+_0x4969c3[_0x2a90('0x2e')][_0x2a90('0x3b')]+'%'};return _0x4eb7d9;}})});}_0x3c78f5=_['merge']({},_0x3c78f5,_0x4969c3[_0x2a90('0x3c')]);var _0x1db9d8={'where':_0x3c78f5['where']};return db[_0x2a90('0x27')][_0x2a90('0x3d')](_0x1db9d8)[_0x2a90('0x23')](function(_0x28f289){_0x5bd700[_0x2a90('0x3d')]=_0x28f289;if(_0x4969c3[_0x2a90('0x2e')][_0x2a90('0x3e')]){_0x3c78f5[_0x2a90('0x3f')]=[{'all':!![]}];}return db[_0x2a90('0x27')][_0x2a90('0x40')](_0x3c78f5);})[_0x2a90('0x23')](function(_0x3dba8a){_0x5bd700[_0x2a90('0x41')]=_0x3dba8a;return _0x5bd700;})[_0x2a90('0x23')](respondWithFilteredResult(_0x2d83b3,_0x3c78f5))['catch'](handleError(_0x2d83b3,null));};exports[_0x2a90('0x42')]=function(_0x3a70fe,_0x528b41){var _0x1045bb={'raw':![],'where':{'id':_0x3a70fe[_0x2a90('0x43')]['id']}},_0x1e971c={};_0x1e971c[_0x2a90('0x2c')]=_[_0x2a90('0x2f')](db['ZendeskAccount'][_0x2a90('0x28')]);_0x1e971c['query']=_[_0x2a90('0x2f')](_0x3a70fe['query']);_0x1e971c[_0x2a90('0x30')]=_[_0x2a90('0x31')](_0x1e971c[_0x2a90('0x2c')],_0x1e971c[_0x2a90('0x2e')]);_0x1045bb[_0x2a90('0x33')]=_[_0x2a90('0x31')](_0x1e971c[_0x2a90('0x2c')],qs['fields'](_0x3a70fe['query'][_0x2a90('0x32')]));_0x1045bb[_0x2a90('0x33')]=_0x1045bb[_0x2a90('0x33')][_0x2a90('0x34')]?_0x1045bb[_0x2a90('0x33')]:_0x1e971c[_0x2a90('0x2c')];if(_0x3a70fe[_0x2a90('0x2e')][_0x2a90('0x3e')]){_0x1045bb['include']=[{'all':!![]}];}_0x1045bb=_[_0x2a90('0x39')]({},_0x1045bb,_0x3a70fe['options']);return db[_0x2a90('0x27')][_0x2a90('0x44')](_0x1045bb)['then'](handleEntityNotFound(_0x528b41,null))[_0x2a90('0x23')](respondWithResult(_0x528b41,null))[_0x2a90('0x45')](handleError(_0x528b41,null));};exports[_0x2a90('0x46')]=function(_0x1d55db,_0x175d59){return db[_0x2a90('0x27')][_0x2a90('0x46')](_0x1d55db['body'],{})['then'](respondWithResult(_0x175d59,0xc9))[_0x2a90('0x45')](handleError(_0x175d59,null));};exports[_0x2a90('0x21')]=function(_0x42c890,_0x43266a){if(_0x42c890[_0x2a90('0x47')]['id']){delete _0x42c890['body']['id'];}return db['ZendeskAccount'][_0x2a90('0x44')]({'where':{'id':_0x42c890[_0x2a90('0x43')]['id']}})['then'](handleEntityNotFound(_0x43266a,null))['then'](saveUpdates(_0x42c890['body'],null))[_0x2a90('0x23')](respondWithResult(_0x43266a,null))['catch'](handleError(_0x43266a,null));};exports[_0x2a90('0x22')]=function(_0x3dfe72,_0x272d07){return db[_0x2a90('0x27')][_0x2a90('0x44')]({'where':{'id':_0x3dfe72[_0x2a90('0x43')]['id']}})['then'](handleEntityNotFound(_0x272d07,null))[_0x2a90('0x23')](removeEntity(_0x272d07,null))[_0x2a90('0x45')](handleError(_0x272d07,null));};exports['getConfigurations']=function(_0x265769,_0x4d1303,_0x4c8bae){var _0x46f687={};var _0xe47c6b={};var _0x5819ab;var _0x4c0cb2;return db[_0x2a90('0x27')]['findOne']({'where':{'id':_0x265769[_0x2a90('0x43')]['id']}})[_0x2a90('0x23')](handleEntityNotFound(_0x4d1303,null))['then'](function(_0x366429){if(_0x366429){_0x5819ab=_0x366429;_0xe47c6b[_0x2a90('0x2c')]=_[_0x2a90('0x2f')](db['ZendeskConfiguration'][_0x2a90('0x28')]);_0xe47c6b[_0x2a90('0x2e')]=_['keys'](_0x265769['query']);_0xe47c6b[_0x2a90('0x30')]=_[_0x2a90('0x31')](_0xe47c6b['model'],_0xe47c6b[_0x2a90('0x2e')]);_0x46f687['attributes']=_[_0x2a90('0x31')](_0xe47c6b['model'],qs[_0x2a90('0x32')](_0x265769[_0x2a90('0x2e')][_0x2a90('0x32')]));_0x46f687['attributes']=_0x46f687['attributes']['length']?_0x46f687[_0x2a90('0x33')]:_0xe47c6b[_0x2a90('0x2c')];_0x46f687[_0x2a90('0x36')]=qs[_0x2a90('0x48')](_0x265769[_0x2a90('0x2e')][_0x2a90('0x48')]);_0x46f687[_0x2a90('0x37')]=qs[_0x2a90('0x30')](_[_0x2a90('0x38')](_0x265769[_0x2a90('0x2e')],_0xe47c6b[_0x2a90('0x30')]));if(_0x265769[_0x2a90('0x2e')][_0x2a90('0x3b')]){_0x46f687['where']=_['merge'](_0x46f687['where'],{'$or':_[_0x2a90('0x49')](_0x46f687[_0x2a90('0x33')],function(_0x13270d){var _0x400aca={};_0x400aca[_0x13270d]={'$like':'%'+_0x265769[_0x2a90('0x2e')][_0x2a90('0x3b')]+'%'};return _0x400aca;})});}_0x46f687=_[_0x2a90('0x39')]({},_0x46f687,_0x265769[_0x2a90('0x3c')]);return _0x5819ab[_0x2a90('0x4a')](_0x46f687);}})[_0x2a90('0x23')](function(_0x50973b){if(_0x50973b){_0x4c0cb2=_0x50973b[_0x2a90('0x34')];if(!_0x265769[_0x2a90('0x2e')][_0x2a90('0x4b')](_0x2a90('0x35'))){_0x46f687[_0x2a90('0x1b')]=qs['limit'](_0x265769[_0x2a90('0x2e')]['limit']);_0x46f687[_0x2a90('0x19')]=qs[_0x2a90('0x19')](_0x265769[_0x2a90('0x2e')][_0x2a90('0x19')]);}return _0x5819ab[_0x2a90('0x4a')](_0x46f687);}})[_0x2a90('0x23')](function(_0x44b211){if(_0x44b211){return _0x44b211?{'count':_0x4c0cb2,'rows':_0x44b211}:null;}})['then'](respondWithResult(_0x4d1303,null))[_0x2a90('0x45')](handleError(_0x4d1303,null));};exports[_0x2a90('0x4c')]=function(_0xf88bbb,_0x48f9fa,_0xa1234a){if(_0xf88bbb[_0x2a90('0x47')]['id']){delete _0xf88bbb[_0x2a90('0x47')]['id'];}return db[_0x2a90('0x27')]['findOne']({'where':{'id':_0xf88bbb[_0x2a90('0x43')]['id']}})['then'](handleEntityNotFound(_0x48f9fa,null))[_0x2a90('0x23')](function(_0x94e9fb){if(_0x94e9fb){_0xf88bbb[_0x2a90('0x47')][_0x2a90('0x4d')]=_0x94e9fb['id'];_0xf88bbb[_0x2a90('0x47')][_0x2a90('0x4e')]=integrations['getSubjects'](_0xf88bbb[_0x2a90('0x47')][_0x2a90('0x4f')],_0xf88bbb[_0x2a90('0x47')][_0x2a90('0x2a')]);_0xf88bbb[_0x2a90('0x47')][_0x2a90('0x50')]=integrations[_0x2a90('0x51')](_0xf88bbb[_0x2a90('0x47')][_0x2a90('0x4f')],_0xf88bbb['body'][_0x2a90('0x2a')]);return db[_0x2a90('0x52')][_0x2a90('0x46')](_0xf88bbb['body'],{'include':[{'model':db[_0x2a90('0x53')],'as':_0x2a90('0x4e')},{'model':db[_0x2a90('0x53')],'as':_0x2a90('0x50')}]});}return null;})[_0x2a90('0x23')](respondWithResult(_0x48f9fa,null))['catch'](handleError(_0x48f9fa,null));};exports[_0x2a90('0x54')]=function(_0x5e0bf2,_0x5a770b,_0x9fafd){var _0x4e1dcd='';return db['ZendeskAccount'][_0x2a90('0x55')]({'where':{'id':_0x5e0bf2['params']['id']},'attributes':['id',_0x2a90('0x56'),_0x2a90('0x57'),'token','authType',_0x2a90('0x58')]})['then'](handleEntityNotFound(_0x5a770b,null))['then'](function(_0xd52ae2){if(_0xd52ae2){_0x4e1dcd=_0xd52ae2[_0x2a90('0x58')];var _0x1db063=_0x4e1dcd[_0x2a90('0x59')](-0x1);if(_0x1db063==='/'){_0x4e1dcd=_0x4e1dcd['substring'](0x0,_0x4e1dcd['lastIndexOf'](_0x1db063));}var _0x370144={'method':_0x2a90('0x5a'),'uri':util[_0x2a90('0x5b')](_0x2a90('0x5c'),_0x4e1dcd,_0x2a90('0x5d')),'json':!![]};switch(_0xd52ae2[_0x2a90('0x5e')]){case _0x2a90('0x57'):_0x370144[_0x2a90('0x5f')]={'Authorization':util[_0x2a90('0x5b')](_0x2a90('0x60'),new Buffer(util[_0x2a90('0x5b')](_0x2a90('0x61'),_0xd52ae2['username'],_0xd52ae2[_0x2a90('0x57')]))['toString'](_0x2a90('0x62')))};break;case'token':_0x370144[_0x2a90('0x5f')]={'Authorization':util['format']('Basic\x20%s',new Buffer(util[_0x2a90('0x5b')](_0x2a90('0x63'),_0xd52ae2[_0x2a90('0x56')],_0xd52ae2[_0x2a90('0x64')]))['toString']('base64'))};break;default:throw new db[(_0x2a90('0x65'))][(_0x2a90('0x66'))](_0x2a90('0x67'));}return rp(_0x370144);}})[_0x2a90('0x23')](function(_0x59b9e6){if(_0x59b9e6){var _0x3b0d5e=[_0x2a90('0x68'),_0x2a90('0x69'),_0x2a90('0x6a'),_0x2a90('0x6b')];_[_0x2a90('0x6c')](_0x59b9e6[_0x2a90('0x5d')],function(_0x4d46f5){return _0x3b0d5e[_0x2a90('0x6d')](_0x4d46f5[_0x2a90('0x2a')]);});return{'count':_0x59b9e6[_0x2a90('0x5d')][_0x2a90('0x34')],'rows':_[_0x2a90('0x49')](_0x59b9e6[_0x2a90('0x5d')],function(_0x1bbadd){return{'id':_0x1bbadd['id'],'name':_0x1bbadd[_0x2a90('0x6e')]>0x7?_0x1bbadd['title']:_0x1bbadd[_0x2a90('0x2a')],'custom':_0x1bbadd[_0x2a90('0x6e')]>0x7?!![]:![],'options':_0x1bbadd['system_field_options']?_0x1bbadd[_0x2a90('0x6f')]:_0x1bbadd[_0x2a90('0x70')]?_0x1bbadd[_0x2a90('0x70')]:[]};})};}})[_0x2a90('0x23')](respondWithResult(_0x5a770b,null))[_0x2a90('0x45')](function(_0x16e9e7){var _0x4b4a47=_0x5e0bf2[_0x2a90('0x2e')][_0x2a90('0x71')]?0x1f4:_0x16e9e7[_0x2a90('0x72')]||0x1f4;logger[_0x2a90('0x25')](_0x2a90('0x73'),_0x2a90('0x54'),_0x4b4a47,JSON[_0x2a90('0x74')](_0x16e9e7));delete _0x16e9e7[_0x2a90('0x2d')];if(_0x4b4a47===0x191){_0x4b4a47=0x190;}_0x5a770b['status'](_0x4b4a47)[_0x2a90('0x75')](_0x5e0bf2[_0x2a90('0x2e')][_0x2a90('0x71')]?{'message':_0x2a90('0x76'),'statusCode':_0x16e9e7[_0x2a90('0x72')]}:_0x16e9e7);});};
\ No newline at end of file
index c6d14a2..2b139c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbb3=['request-promise','path','rimraf','./intZendeskAccount.attributes','../../components/integrations/configuration','define','int_zendesk_accounts','util','api','moment','bluebird'];(function(_0x33eca7,_0x1d65b9){var _0x98f72b=function(_0x1bfa5b){while(--_0x1bfa5b){_0x33eca7['push'](_0x33eca7['shift']());}};_0x98f72b(++_0x1d65b9);}(_0xdbb3,0x19e));var _0x3dbb=function(_0x4d07cc,_0x587613){_0x4d07cc=_0x4d07cc-0x0;var _0x42de3b=_0xdbb3[_0x4d07cc];return _0x42de3b;};'use strict';var _=require('lodash');var util=require(_0x3dbb('0x0'));var logger=require('../../config/logger')(_0x3dbb('0x1'));var moment=require(_0x3dbb('0x2'));var BPromise=require(_0x3dbb('0x3'));var rp=require(_0x3dbb('0x4'));var fs=require('fs');var path=require(_0x3dbb('0x5'));var rimraf=require(_0x3dbb('0x6'));var config=require('../../config/environment');var attributes=require(_0x3dbb('0x7'));var integrations=require(_0x3dbb('0x8'));module['exports']=function(_0x2567bc,_0xc3009f){return _0x2567bc[_0x3dbb('0x9')]('ZendeskAccount',attributes,{'tableName':_0x3dbb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa1b9=['api','moment','path','../../config/environment','../../components/integrations/configuration','exports','ZendeskAccount','int_zendesk_accounts','util','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa1b9,0x9e));var _0x9a1b=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xa1b9[_0x3ce3c];return _0x55a2c9;};'use strict';var _=require('lodash');var util=require(_0x9a1b('0x0'));var logger=require(_0x9a1b('0x1'))(_0x9a1b('0x2'));var moment=require(_0x9a1b('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x9a1b('0x4'));var rimraf=require('rimraf');var config=require(_0x9a1b('0x5'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0x9a1b('0x6'));module[_0x9a1b('0x7')]=function(_0xee9ea9,_0x28f3cb){return _0xee9ea9['define'](_0x9a1b('0x8'),attributes,{'tableName':_0x9a1b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bcfd250..dfd0e99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cc6=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','request','then','info','request\x20sent','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','ZendeskAccount,\x20%s,\x20%s','message','result','ZendeskAccount','findAll','options','where','attributes','limit','map','model','include','GetZendeskAccount','debug','catch','find','raw','ShowZendeskAccount','lodash'];(function(_0x31eb96,_0x1ce1d6){var _0x2984ca=function(_0x1eef00){while(--_0x1eef00){_0x31eb96['push'](_0x31eb96['shift']());}};_0x2984ca(++_0x1ce1d6);}(_0x9cc6,0x1af));var _0x69cc=function(_0x3a3c17,_0x5b7b7e){_0x3a3c17=_0x3a3c17-0x0;var _0xd07f21=_0x9cc6[_0x3a3c17];return _0xd07f21;};'use strict';var _=require(_0x69cc('0x0'));var util=require(_0x69cc('0x1'));var moment=require(_0x69cc('0x2'));var BPromise=require(_0x69cc('0x3'));var rs=require(_0x69cc('0x4'));var fs=require('fs');var Redis=require(_0x69cc('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x69cc('0x6'));var logger=require(_0x69cc('0x7'))(_0x69cc('0x8'));var config=require('../../config/environment');var jayson=require(_0x69cc('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x54df18,_0x49c2c2,_0xc2b03e){return new BPromise(function(_0x570bc6,_0x16a1dc){return client[_0x69cc('0xa')](_0x54df18,_0xc2b03e)[_0x69cc('0xb')](function(_0x27a4e3){logger[_0x69cc('0xc')]('ZendeskAccount,\x20%s,\x20%s',_0x49c2c2,_0x69cc('0xd'));logger['debug'](_0x69cc('0xe'),_0x49c2c2,_0x69cc('0xd'),JSON[_0x69cc('0xf')](_0x27a4e3));if(_0x27a4e3['error']){if(_0x27a4e3[_0x69cc('0x10')][_0x69cc('0x11')]===0x1f4){logger[_0x69cc('0x10')](_0x69cc('0x12'),_0x49c2c2,_0x27a4e3[_0x69cc('0x10')][_0x69cc('0x13')]);return _0x16a1dc(_0x27a4e3['error'][_0x69cc('0x13')]);}logger[_0x69cc('0x10')](_0x69cc('0x12'),_0x49c2c2,_0x27a4e3[_0x69cc('0x10')][_0x69cc('0x13')]);return _0x570bc6(_0x27a4e3[_0x69cc('0x10')][_0x69cc('0x13')]);}else{logger[_0x69cc('0xc')](_0x69cc('0x12'),_0x49c2c2,'request\x20sent');_0x570bc6(_0x27a4e3[_0x69cc('0x14')][_0x69cc('0x13')]);}})['catch'](function(_0x309a8c){logger[_0x69cc('0x10')]('ZendeskAccount,\x20%s,\x20%s',_0x49c2c2,_0x309a8c);_0x16a1dc(_0x309a8c);});});}exports['GetZendeskAccount']=function(_0x3ebe5c){var _0x18cae3=this;return new Promise(function(_0x1afb96,_0x27ade7){return db[_0x69cc('0x15')][_0x69cc('0x16')]({'raw':_0x3ebe5c['options']?_0x3ebe5c[_0x69cc('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x3ebe5c[_0x69cc('0x17')]?_0x3ebe5c[_0x69cc('0x17')][_0x69cc('0x18')]||null:null,'attributes':_0x3ebe5c[_0x69cc('0x17')]?_0x3ebe5c[_0x69cc('0x17')][_0x69cc('0x19')]||null:null,'limit':_0x3ebe5c[_0x69cc('0x17')]?_0x3ebe5c['options'][_0x69cc('0x1a')]||null:null,'include':_0x3ebe5c['options']?_0x3ebe5c['options']['include']?_[_0x69cc('0x1b')](_0x3ebe5c[_0x69cc('0x17')]['include'],function(_0xe3dce2){return{'model':db[_0xe3dce2[_0x69cc('0x1c')]],'as':_0xe3dce2['as'],'attributes':_0xe3dce2[_0x69cc('0x19')],'include':_0xe3dce2[_0x69cc('0x1d')]?_[_0x69cc('0x1b')](_0xe3dce2['include'],function(_0x4a24b1){return{'model':db[_0x4a24b1[_0x69cc('0x1c')]],'as':_0x4a24b1['as'],'attributes':_0x4a24b1[_0x69cc('0x19')],'include':_0x4a24b1[_0x69cc('0x1d')]?_['map'](_0x4a24b1[_0x69cc('0x1d')],function(_0x73b3ef){return{'model':db[_0x73b3ef[_0x69cc('0x1c')]],'as':_0x73b3ef['as'],'attributes':_0x73b3ef['attributes']};}):[]};}):[]};}):[]:[]})[_0x69cc('0xb')](function(_0xa3dfdc){logger[_0x69cc('0xc')](_0x69cc('0x1e'),_0x3ebe5c);logger[_0x69cc('0x1f')](_0x69cc('0x1e'),_0x3ebe5c,JSON['stringify'](_0xa3dfdc));_0x1afb96(_0xa3dfdc);})[_0x69cc('0x20')](function(_0x5ed2db){logger[_0x69cc('0x10')]('GetZendeskAccount',_0x5ed2db[_0x69cc('0x13')],_0x3ebe5c);_0x27ade7(_0x18cae3['error'](0x1f4,_0x5ed2db[_0x69cc('0x13')]));});});};exports['ShowZendeskAccount']=function(_0x332366){var _0x443d8f=this;return new Promise(function(_0x5c82a9,_0xa495ac){return db[_0x69cc('0x15')][_0x69cc('0x21')]({'raw':_0x332366['options']?_0x332366[_0x69cc('0x17')][_0x69cc('0x22')]===undefined?!![]:![]:!![],'where':_0x332366[_0x69cc('0x17')]?_0x332366[_0x69cc('0x17')]['where']||null:null,'attributes':_0x332366[_0x69cc('0x17')]?_0x332366[_0x69cc('0x17')][_0x69cc('0x19')]||null:null,'include':_0x332366[_0x69cc('0x17')]?_0x332366[_0x69cc('0x17')][_0x69cc('0x1d')]?_['map'](_0x332366[_0x69cc('0x17')]['include'],function(_0x2ee7d9){return{'model':db[_0x2ee7d9[_0x69cc('0x1c')]],'as':_0x2ee7d9['as'],'attributes':_0x2ee7d9['attributes'],'include':_0x2ee7d9[_0x69cc('0x1d')]?_[_0x69cc('0x1b')](_0x2ee7d9[_0x69cc('0x1d')],function(_0x5e00ab){return{'model':db[_0x5e00ab['model']],'as':_0x5e00ab['as'],'attributes':_0x5e00ab[_0x69cc('0x19')],'include':_0x5e00ab['include']?_[_0x69cc('0x1b')](_0x5e00ab['include'],function(_0x4668d0){return{'model':db[_0x4668d0[_0x69cc('0x1c')]],'as':_0x4668d0['as'],'attributes':_0x4668d0[_0x69cc('0x19')]};}):[]};}):[]};}):[]:[]})[_0x69cc('0xb')](function(_0x54f08a){logger[_0x69cc('0xc')]('ShowZendeskAccount',_0x332366);logger['debug']('ShowZendeskAccount',_0x332366,JSON[_0x69cc('0xf')](_0x54f08a));_0x5c82a9(_0x54f08a);})['catch'](function(_0x5810c1){logger[_0x69cc('0x10')](_0x69cc('0x23'),_0x5810c1[_0x69cc('0x13')],_0x332366);_0xa495ac(_0x443d8f[_0x69cc('0x10')](0x1f4,_0x5810c1['message']));});});};
\ No newline at end of file
+var _0x4b8b=['ZendeskAccount','findAll','options','raw','include','map','attributes','model','GetZendeskAccount','ShowZendeskAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','ZendeskAccount,\x20%s,\x20%s','message','result','catch'];(function(_0x4c6e15,_0xeda83){var _0x4427da=function(_0x43d03c){while(--_0x43d03c){_0x4c6e15['push'](_0x4c6e15['shift']());}};_0x4427da(++_0xeda83);}(_0x4b8b,0x133));var _0xb4b8=function(_0x16d369,_0xbbaa52){_0x16d369=_0x16d369-0x0;var _0x53c1ca=_0x4b8b[_0x16d369];return _0x53c1ca;};'use strict';var _=require(_0xb4b8('0x0'));var util=require(_0xb4b8('0x1'));var moment=require(_0xb4b8('0x2'));var BPromise=require(_0xb4b8('0x3'));var rs=require(_0xb4b8('0x4'));var fs=require('fs');var Redis=require(_0xb4b8('0x5'));var db=require(_0xb4b8('0x6'))['db'];var utils=require(_0xb4b8('0x7'));var logger=require(_0xb4b8('0x8'))(_0xb4b8('0x9'));var config=require(_0xb4b8('0xa'));var jayson=require(_0xb4b8('0xb'));var client=jayson[_0xb4b8('0xc')][_0xb4b8('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x15d39f,_0x2088ea,_0x1b1a46){return new BPromise(function(_0x5c2a25,_0x323be2){return client[_0xb4b8('0xe')](_0x15d39f,_0x1b1a46)[_0xb4b8('0xf')](function(_0x117540){logger[_0xb4b8('0x10')]('ZendeskAccount,\x20%s,\x20%s',_0x2088ea,_0xb4b8('0x11'));logger[_0xb4b8('0x12')]('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x2088ea,_0xb4b8('0x11'),JSON[_0xb4b8('0x13')](_0x117540));if(_0x117540[_0xb4b8('0x14')]){if(_0x117540[_0xb4b8('0x14')][_0xb4b8('0x15')]===0x1f4){logger[_0xb4b8('0x14')](_0xb4b8('0x16'),_0x2088ea,_0x117540[_0xb4b8('0x14')][_0xb4b8('0x17')]);return _0x323be2(_0x117540[_0xb4b8('0x14')][_0xb4b8('0x17')]);}logger[_0xb4b8('0x14')](_0xb4b8('0x16'),_0x2088ea,_0x117540[_0xb4b8('0x14')][_0xb4b8('0x17')]);return _0x5c2a25(_0x117540[_0xb4b8('0x14')][_0xb4b8('0x17')]);}else{logger['info'](_0xb4b8('0x16'),_0x2088ea,'request\x20sent');_0x5c2a25(_0x117540[_0xb4b8('0x18')][_0xb4b8('0x17')]);}})[_0xb4b8('0x19')](function(_0x4ef8a6){logger['error'](_0xb4b8('0x16'),_0x2088ea,_0x4ef8a6);_0x323be2(_0x4ef8a6);});});}exports['GetZendeskAccount']=function(_0x397201){var _0x5afb3b=this;return new Promise(function(_0x5e609c,_0x5c0b33){return db[_0xb4b8('0x1a')][_0xb4b8('0x1b')]({'raw':_0x397201[_0xb4b8('0x1c')]?_0x397201[_0xb4b8('0x1c')][_0xb4b8('0x1d')]===undefined?!![]:![]:!![],'where':_0x397201[_0xb4b8('0x1c')]?_0x397201[_0xb4b8('0x1c')]['where']||null:null,'attributes':_0x397201[_0xb4b8('0x1c')]?_0x397201[_0xb4b8('0x1c')]['attributes']||null:null,'limit':_0x397201['options']?_0x397201['options']['limit']||null:null,'include':_0x397201['options']?_0x397201[_0xb4b8('0x1c')][_0xb4b8('0x1e')]?_[_0xb4b8('0x1f')](_0x397201['options'][_0xb4b8('0x1e')],function(_0x2fc96a){return{'model':db[_0x2fc96a['model']],'as':_0x2fc96a['as'],'attributes':_0x2fc96a[_0xb4b8('0x20')],'include':_0x2fc96a[_0xb4b8('0x1e')]?_[_0xb4b8('0x1f')](_0x2fc96a[_0xb4b8('0x1e')],function(_0x9a9865){return{'model':db[_0x9a9865['model']],'as':_0x9a9865['as'],'attributes':_0x9a9865[_0xb4b8('0x20')],'include':_0x9a9865['include']?_[_0xb4b8('0x1f')](_0x9a9865[_0xb4b8('0x1e')],function(_0x33dad0){return{'model':db[_0x33dad0[_0xb4b8('0x21')]],'as':_0x33dad0['as'],'attributes':_0x33dad0['attributes']};}):[]};}):[]};}):[]:[]})[_0xb4b8('0xf')](function(_0x58f9c9){logger['info']('GetZendeskAccount',_0x397201);logger['debug']('GetZendeskAccount',_0x397201,JSON[_0xb4b8('0x13')](_0x58f9c9));_0x5e609c(_0x58f9c9);})[_0xb4b8('0x19')](function(_0x43de14){logger['error'](_0xb4b8('0x22'),_0x43de14[_0xb4b8('0x17')],_0x397201);_0x5c0b33(_0x5afb3b[_0xb4b8('0x14')](0x1f4,_0x43de14[_0xb4b8('0x17')]));});});};exports[_0xb4b8('0x23')]=function(_0x2fb280){var _0x54189c=this;return new Promise(function(_0x45d1da,_0x4c8780){return db[_0xb4b8('0x1a')][_0xb4b8('0x24')]({'raw':_0x2fb280['options']?_0x2fb280[_0xb4b8('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x2fb280[_0xb4b8('0x1c')]?_0x2fb280[_0xb4b8('0x1c')]['where']||null:null,'attributes':_0x2fb280[_0xb4b8('0x1c')]?_0x2fb280['options']['attributes']||null:null,'include':_0x2fb280[_0xb4b8('0x1c')]?_0x2fb280[_0xb4b8('0x1c')][_0xb4b8('0x1e')]?_[_0xb4b8('0x1f')](_0x2fb280[_0xb4b8('0x1c')][_0xb4b8('0x1e')],function(_0x48486e){return{'model':db[_0x48486e[_0xb4b8('0x21')]],'as':_0x48486e['as'],'attributes':_0x48486e[_0xb4b8('0x20')],'include':_0x48486e[_0xb4b8('0x1e')]?_[_0xb4b8('0x1f')](_0x48486e[_0xb4b8('0x1e')],function(_0x4bed6d){return{'model':db[_0x4bed6d[_0xb4b8('0x21')]],'as':_0x4bed6d['as'],'attributes':_0x4bed6d['attributes'],'include':_0x4bed6d[_0xb4b8('0x1e')]?_[_0xb4b8('0x1f')](_0x4bed6d[_0xb4b8('0x1e')],function(_0x191107){return{'model':db[_0x191107[_0xb4b8('0x21')]],'as':_0x191107['as'],'attributes':_0x191107[_0xb4b8('0x20')]};}):[]};}):[]};}):[]:[]})[_0xb4b8('0xf')](function(_0x1a99b1){logger[_0xb4b8('0x10')](_0xb4b8('0x23'),_0x2fb280);logger[_0xb4b8('0x12')](_0xb4b8('0x23'),_0x2fb280,JSON[_0xb4b8('0x13')](_0x1a99b1));_0x45d1da(_0x1a99b1);})[_0xb4b8('0x19')](function(_0x21d0fb){logger[_0xb4b8('0x14')](_0xb4b8('0x23'),_0x21d0fb['message'],_0x2fb280);_0x4c8780(_0x54189c[_0xb4b8('0x14')](0x1f4,_0x21d0fb[_0xb4b8('0x17')]));});});};
\ No newline at end of file
index 96ef100..b649a32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['delete','destroy','exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','index','get','/:id','show','/:id/fields','isAuthenticated','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','create','put','update'];(function(_0x1b7368,_0x3286ed){var _0x25d54c=function(_0x2366da){while(--_0x2366da){_0x1b7368['push'](_0x1b7368['shift']());}};_0x25d54c(++_0x3286ed);}(_0xb7e7,0x121));var _0x7b7e=function(_0x42bc91,_0x41f40a){_0x42bc91=_0x42bc91-0x0;var _0x3f5507=_0xb7e7[_0x42bc91];return _0x3f5507;};'use strict';var multer=require(_0x7b7e('0x0'));var util=require('util');var path=require(_0x7b7e('0x1'));var timeout=require('connect-timeout');var express=require(_0x7b7e('0x2'));var router=express['Router']();var fs_extra=require(_0x7b7e('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var controller=require(_0x7b7e('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7b7e('0x7')]);router[_0x7b7e('0x8')](_0x7b7e('0x9'),auth['isAuthenticated'](),controller[_0x7b7e('0xa')]);router[_0x7b7e('0x8')](_0x7b7e('0xb'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0xd')]);router[_0x7b7e('0x8')](_0x7b7e('0xe'),auth['isAuthenticated'](),controller[_0x7b7e('0xf')]);router[_0x7b7e('0x8')](_0x7b7e('0x10'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x11')]);router[_0x7b7e('0x8')](_0x7b7e('0x12'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x13')]);router['post']('/',auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x14')]);router['post'](_0x7b7e('0x12'),auth['isAuthenticated'](),controller['setTags']);router[_0x7b7e('0x15')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x16')]);router[_0x7b7e('0x17')]('/:id',auth['isAuthenticated'](),controller[_0x7b7e('0x18')]);module[_0x7b7e('0x19')]=router;
\ No newline at end of file
+var _0x878f=['../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','/:id','/:id/fields','/:id/subjects','isAuthenticated','/:id/descriptions','getDescriptions','/:id/tags','getTags','create','post','setTags','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x47d6dc,_0xc036cc){var _0x1a1c93=function(_0x18ec96){while(--_0x18ec96){_0x47d6dc['push'](_0x47d6dc['shift']());}};_0x1a1c93(++_0xc036cc);}(_0x878f,0x173));var _0xf878=function(_0x2a0084,_0x156e2d){_0x2a0084=_0x2a0084-0x0;var _0x3f3490=_0x878f[_0x2a0084];return _0x3f3490;};'use strict';var multer=require('multer');var util=require(_0xf878('0x0'));var path=require(_0xf878('0x1'));var timeout=require(_0xf878('0x2'));var express=require(_0xf878('0x3'));var router=express[_0xf878('0x4')]();var fs_extra=require(_0xf878('0x5'));var auth=require(_0xf878('0x6'));var interaction=require(_0xf878('0x7'));var config=require(_0xf878('0x8'));var controller=require(_0xf878('0x9'));router[_0xf878('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xf878('0xa')](_0xf878('0xb'),auth['isAuthenticated'](),controller['show']);router['get'](_0xf878('0xc'),auth['isAuthenticated'](),controller['getFields']);router[_0xf878('0xa')](_0xf878('0xd'),auth[_0xf878('0xe')](),controller['getSubjects']);router[_0xf878('0xa')](_0xf878('0xf'),auth['isAuthenticated'](),controller[_0xf878('0x10')]);router['get'](_0xf878('0x11'),auth[_0xf878('0xe')](),controller[_0xf878('0x12')]);router['post']('/',auth[_0xf878('0xe')](),controller[_0xf878('0x13')]);router[_0xf878('0x14')]('/:id/tags',auth[_0xf878('0xe')](),controller[_0xf878('0x15')]);router[_0xf878('0x16')]('/:id',auth['isAuthenticated'](),controller[_0xf878('0x17')]);router[_0xf878('0x18')](_0xf878('0xb'),auth[_0xf878('0xe')](),controller[_0xf878('0x19')]);module[_0xf878('0x1a')]=router;
\ No newline at end of file
index f30b46a..953f818 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa580=['STRING','sequelize','exports'];(function(_0x9cfb64,_0x142c4c){var _0x52872a=function(_0x5a9fa1){while(--_0x5a9fa1){_0x9cfb64['push'](_0x9cfb64['shift']());}};_0x52872a(++_0x142c4c);}(_0xa580,0x1c9));var _0x0a58=function(_0x3f58d3,_0x29b359){_0x3f58d3=_0x3f58d3-0x0;var _0x51155e=_0xa580[_0x3f58d3];return _0x51155e;};'use strict';var Sequelize=require(_0x0a58('0x0'));module[_0x0a58('0x1')]={'name':{'type':Sequelize[_0x0a58('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xa445=['sequelize','exports','STRING'];(function(_0xd19bb1,_0xe1ab91){var _0x524fd2=function(_0x58908a){while(--_0x58908a){_0xd19bb1['push'](_0xd19bb1['shift']());}};_0x524fd2(++_0xe1ab91);}(_0xa445,0xfc));var _0x5a44=function(_0x2cf0c9,_0x12d661){_0x2cf0c9=_0x2cf0c9-0x0;var _0x297396=_0xa445[_0x2cf0c9];return _0x297396;};'use strict';var Sequelize=require(_0x5a44('0x0'));module[_0x5a44('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x5a44('0x2')]}};
\ No newline at end of file
index dc77077..17fcd3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x364b=['where','merge','options','includeAll','include','findAll','rows','catch','params','intersection','create','body','find','findOne','ZendeskField','getFields','getSubjects','nolimit','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','offset','undefined','limit','count','status','set','Content-Range','json','apply','save','then','destroy','error','stack','name','index','map','ZendeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','attributes','fields','length','hasOwnProperty','order','sort','pick','filters','filter'];(function(_0x166a72,_0x3a865b){var _0x374300=function(_0x1e6162){while(--_0x1e6162){_0x166a72['push'](_0x166a72['shift']());}};_0x374300(++_0x3a865b);}(_0x364b,0x15f));var _0xb364=function(_0xa0476f,_0x1a2267){_0xa0476f=_0xa0476f-0x0;var _0x5e95a9=_0x364b[_0xa0476f];return _0x5e95a9;};'use strict';var emlformat=require(_0xb364('0x0'));var rimraf=require(_0xb364('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb364('0x2'));var rp=require(_0xb364('0x3'));var moment=require('moment');var BPromise=require(_0xb364('0x4'));var Mustache=require(_0xb364('0x5'));var util=require(_0xb364('0x6'));var path=require(_0xb364('0x7'));var sox=require(_0xb364('0x8'));var csv=require('to-csv');var ejs=require(_0xb364('0x9'));var fs=require('fs');var fs_extra=require(_0xb364('0xa'));var _=require(_0xb364('0xb'));var squel=require(_0xb364('0xc'));var crypto=require('crypto');var jsforce=require(_0xb364('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb364('0xe'));var Papa=require(_0xb364('0xf'));var Redis=require(_0xb364('0x10'));var authService=require(_0xb364('0x11'));var qs=require(_0xb364('0x12'));var as=require(_0xb364('0x13'));var hardwareService=require(_0xb364('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xb364('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xb364('0x16'));var db=require(_0xb364('0x17'))['db'];function respondWithStatusCode(_0x5208d1,_0x5956e9){_0x5956e9=_0x5956e9||0xcc;return function(_0x321b2a){if(_0x321b2a){return _0x5208d1[_0xb364('0x18')](_0x5956e9);}return _0x5208d1['status'](_0x5956e9)['end']();};}function respondWithResult(_0x1662c4,_0x3e405a){_0x3e405a=_0x3e405a||0xc8;return function(_0x34974f){if(_0x34974f){return _0x1662c4['status'](_0x3e405a)['json'](_0x34974f);}};}function respondWithFilteredResult(_0x3155cc,_0x3653c7){return function(_0x18b158){if(_0x18b158){var _0x448b0a=typeof _0x3653c7[_0xb364('0x19')]===_0xb364('0x1a')&&typeof _0x3653c7[_0xb364('0x1b')]==='undefined';var _0x80a472=_0x18b158[_0xb364('0x1c')];var _0x3c03ac=_0x448b0a?0x0:_0x3653c7['offset'];var _0x377d71=_0x448b0a?_0x18b158[_0xb364('0x1c')]:_0x3653c7['offset']+_0x3653c7[_0xb364('0x1b')];var _0x3e1b04;if(_0x377d71>=_0x80a472){_0x377d71=_0x80a472;_0x3e1b04=0xc8;}else{_0x3e1b04=0xce;}_0x3155cc[_0xb364('0x1d')](_0x3e1b04);return _0x3155cc[_0xb364('0x1e')](_0xb364('0x1f'),_0x3c03ac+'-'+_0x377d71+'/'+_0x80a472)[_0xb364('0x20')](_0x18b158);}return null;};}function patchUpdates(_0x21908c){return function(_0x3bec01){try{jsonpatch[_0xb364('0x21')](_0x3bec01,_0x21908c,!![]);}catch(_0x2258e8){return BPromise['reject'](_0x2258e8);}return _0x3bec01[_0xb364('0x22')]();};}function saveUpdates(_0x4dc286,_0x51318c){return function(_0x29746f){if(_0x29746f){return _0x29746f['update'](_0x4dc286)[_0xb364('0x23')](function(_0x1696e9){return _0x1696e9;});}return null;};}function removeEntity(_0x32221c,_0x1041a4){return function(_0x351849){if(_0x351849){return _0x351849[_0xb364('0x24')]()[_0xb364('0x23')](function(){_0x32221c[_0xb364('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x395f62,_0xb65370){return function(_0x4d7f03){if(!_0x4d7f03){_0x395f62[_0xb364('0x18')](0x194);}return _0x4d7f03;};}function handleError(_0x102f99,_0x50377e){_0x50377e=_0x50377e||0x1f4;return function(_0x20322f){logger[_0xb364('0x25')](_0x20322f[_0xb364('0x26')]);if(_0x20322f[_0xb364('0x27')]){delete _0x20322f[_0xb364('0x27')];}_0x102f99[_0xb364('0x1d')](_0x50377e)['send'](_0x20322f);};}exports[_0xb364('0x28')]=function(_0x20b02c,_0x5f7da6){var _0x3d65d6={},_0x4eaeeb={},_0x3d6c79={'count':0x0,'rows':[]};var _0x241ba3=_[_0xb364('0x29')](db[_0xb364('0x2a')][_0xb364('0x2b')],function(_0x3fe109){return{'name':_0x3fe109[_0xb364('0x2c')],'type':_0x3fe109[_0xb364('0x2d')][_0xb364('0x2e')]};});_0x4eaeeb[_0xb364('0x2f')]=_[_0xb364('0x29')](_0x241ba3,_0xb364('0x27'));_0x4eaeeb[_0xb364('0x30')]=_[_0xb364('0x31')](_0x20b02c[_0xb364('0x30')]);_0x4eaeeb['filters']=_['intersection'](_0x4eaeeb['model'],_0x4eaeeb[_0xb364('0x30')]);_0x3d65d6[_0xb364('0x32')]=_['intersection'](_0x4eaeeb['model'],qs[_0xb364('0x33')](_0x20b02c[_0xb364('0x30')][_0xb364('0x33')]));_0x3d65d6[_0xb364('0x32')]=_0x3d65d6[_0xb364('0x32')][_0xb364('0x34')]?_0x3d65d6[_0xb364('0x32')]:_0x4eaeeb['model'];if(!_0x20b02c[_0xb364('0x30')][_0xb364('0x35')]('nolimit')){_0x3d65d6[_0xb364('0x1b')]=qs[_0xb364('0x1b')](_0x20b02c['query'][_0xb364('0x1b')]);_0x3d65d6['offset']=qs[_0xb364('0x19')](_0x20b02c[_0xb364('0x30')][_0xb364('0x19')]);}_0x3d65d6[_0xb364('0x36')]=qs['sort'](_0x20b02c[_0xb364('0x30')][_0xb364('0x37')]);_0x3d65d6['where']=qs['filters'](_[_0xb364('0x38')](_0x20b02c[_0xb364('0x30')],_0x4eaeeb[_0xb364('0x39')]),_0x241ba3);if(_0x20b02c[_0xb364('0x30')][_0xb364('0x3a')]){_0x3d65d6[_0xb364('0x3b')]=_[_0xb364('0x3c')](_0x3d65d6[_0xb364('0x3b')],{'$or':_[_0xb364('0x29')](_0x241ba3,function(_0x4acc26){if(_0x4acc26[_0xb364('0x2d')]!=='VIRTUAL'){var _0x5c0367={};_0x5c0367[_0x4acc26[_0xb364('0x27')]]={'$like':'%'+_0x20b02c[_0xb364('0x30')][_0xb364('0x3a')]+'%'};return _0x5c0367;}})});}_0x3d65d6=_[_0xb364('0x3c')]({},_0x3d65d6,_0x20b02c[_0xb364('0x3d')]);var _0x483e46={'where':_0x3d65d6[_0xb364('0x3b')]};return db[_0xb364('0x2a')][_0xb364('0x1c')](_0x483e46)[_0xb364('0x23')](function(_0x5ee525){_0x3d6c79[_0xb364('0x1c')]=_0x5ee525;if(_0x20b02c[_0xb364('0x30')][_0xb364('0x3e')]){_0x3d65d6[_0xb364('0x3f')]=[{'all':!![]}];}return db[_0xb364('0x2a')][_0xb364('0x40')](_0x3d65d6);})[_0xb364('0x23')](function(_0x126069){_0x3d6c79[_0xb364('0x41')]=_0x126069;return _0x3d6c79;})[_0xb364('0x23')](respondWithFilteredResult(_0x5f7da6,_0x3d65d6))[_0xb364('0x42')](handleError(_0x5f7da6,null));};exports['show']=function(_0x36f8a8,_0xc92619){var _0x506f2a={'raw':![],'where':{'id':_0x36f8a8[_0xb364('0x43')]['id']}},_0x38f531={};_0x38f531['model']=_[_0xb364('0x31')](db[_0xb364('0x2a')][_0xb364('0x2b')]);_0x38f531[_0xb364('0x30')]=_['keys'](_0x36f8a8['query']);_0x38f531[_0xb364('0x39')]=_[_0xb364('0x44')](_0x38f531[_0xb364('0x2f')],_0x38f531[_0xb364('0x30')]);_0x506f2a[_0xb364('0x32')]=_[_0xb364('0x44')](_0x38f531[_0xb364('0x2f')],qs[_0xb364('0x33')](_0x36f8a8[_0xb364('0x30')][_0xb364('0x33')]));_0x506f2a['attributes']=_0x506f2a[_0xb364('0x32')][_0xb364('0x34')]?_0x506f2a['attributes']:_0x38f531[_0xb364('0x2f')];if(_0x36f8a8[_0xb364('0x30')][_0xb364('0x3e')]){_0x506f2a['include']=[{'all':!![]}];}_0x506f2a=_[_0xb364('0x3c')]({},_0x506f2a,_0x36f8a8[_0xb364('0x3d')]);return db[_0xb364('0x2a')]['find'](_0x506f2a)[_0xb364('0x23')](handleEntityNotFound(_0xc92619,null))[_0xb364('0x23')](respondWithResult(_0xc92619,null))[_0xb364('0x42')](handleError(_0xc92619,null));};exports[_0xb364('0x45')]=function(_0x2fd770,_0x3754b6){return db['ZendeskConfiguration']['create'](_0x2fd770[_0xb364('0x46')],{})[_0xb364('0x23')](respondWithResult(_0x3754b6,0xc9))[_0xb364('0x42')](handleError(_0x3754b6,null));};exports['update']=function(_0xfedeb,_0x36a00e){if(_0xfedeb[_0xb364('0x46')]['id']){delete _0xfedeb[_0xb364('0x46')]['id'];}return db[_0xb364('0x2a')][_0xb364('0x47')]({'where':{'id':_0xfedeb['params']['id']}})[_0xb364('0x23')](handleEntityNotFound(_0x36a00e,null))['then'](saveUpdates(_0xfedeb[_0xb364('0x46')],null))[_0xb364('0x23')](respondWithResult(_0x36a00e,null))['catch'](handleError(_0x36a00e,null));};exports[_0xb364('0x24')]=function(_0x293904,_0x495307){return db[_0xb364('0x2a')]['find']({'where':{'id':_0x293904['params']['id']}})['then'](handleEntityNotFound(_0x495307,null))[_0xb364('0x23')](removeEntity(_0x495307,null))['catch'](handleError(_0x495307,null));};exports['getFields']=function(_0x1b9070,_0x25f02a,_0x36fd0f){var _0x10a5f5={};var _0x50e245={};var _0x462e34;var _0x4130e7;return db[_0xb364('0x2a')][_0xb364('0x48')]({'where':{'id':_0x1b9070[_0xb364('0x43')]['id']}})['then'](handleEntityNotFound(_0x25f02a,null))[_0xb364('0x23')](function(_0x239891){if(_0x239891){_0x462e34=_0x239891;_0x50e245[_0xb364('0x2f')]=_[_0xb364('0x31')](db[_0xb364('0x49')]['rawAttributes']);_0x50e245[_0xb364('0x30')]=_[_0xb364('0x31')](_0x1b9070[_0xb364('0x30')]);_0x50e245[_0xb364('0x39')]=_[_0xb364('0x44')](_0x50e245['model'],_0x50e245[_0xb364('0x30')]);_0x10a5f5['attributes']=_[_0xb364('0x44')](_0x50e245['model'],qs[_0xb364('0x33')](_0x1b9070[_0xb364('0x30')][_0xb364('0x33')]));_0x10a5f5[_0xb364('0x32')]=_0x10a5f5[_0xb364('0x32')][_0xb364('0x34')]?_0x10a5f5[_0xb364('0x32')]:_0x50e245['model'];_0x10a5f5[_0xb364('0x36')]=qs[_0xb364('0x37')](_0x1b9070[_0xb364('0x30')][_0xb364('0x37')]);_0x10a5f5[_0xb364('0x3b')]=qs[_0xb364('0x39')](_['pick'](_0x1b9070[_0xb364('0x30')],_0x50e245[_0xb364('0x39')]));if(_0x1b9070[_0xb364('0x30')]['filter']){_0x10a5f5[_0xb364('0x3b')]=_['merge'](_0x10a5f5[_0xb364('0x3b')],{'$or':_[_0xb364('0x29')](_0x10a5f5[_0xb364('0x32')],function(_0x419c47){var _0x247ba0={};_0x247ba0[_0x419c47]={'$like':'%'+_0x1b9070['query'][_0xb364('0x3a')]+'%'};return _0x247ba0;})});}_0x10a5f5=_[_0xb364('0x3c')]({},_0x10a5f5,_0x1b9070[_0xb364('0x3d')]);return _0x462e34[_0xb364('0x4a')](_0x10a5f5);}})['then'](function(_0x323072){if(_0x323072){_0x4130e7=_0x323072[_0xb364('0x34')];if(!_0x1b9070[_0xb364('0x30')][_0xb364('0x35')]('nolimit')){_0x10a5f5['limit']=qs[_0xb364('0x1b')](_0x1b9070[_0xb364('0x30')]['limit']);_0x10a5f5[_0xb364('0x19')]=qs['offset'](_0x1b9070['query']['offset']);}return _0x462e34[_0xb364('0x4a')](_0x10a5f5);}})['then'](function(_0x454d38){if(_0x454d38){return _0x454d38?{'count':_0x4130e7,'rows':_0x454d38}:null;}})[_0xb364('0x23')](respondWithResult(_0x25f02a,null))[_0xb364('0x42')](handleError(_0x25f02a,null));};exports[_0xb364('0x4b')]=function(_0x58d1a4,_0x34232e,_0x26e156){var _0x5114c3={};var _0x85c33d={};var _0x1b0f5d;var _0x5ce280;return db[_0xb364('0x2a')][_0xb364('0x48')]({'where':{'id':_0x58d1a4[_0xb364('0x43')]['id']}})[_0xb364('0x23')](handleEntityNotFound(_0x34232e,null))[_0xb364('0x23')](function(_0x1a5fb){if(_0x1a5fb){_0x1b0f5d=_0x1a5fb;_0x85c33d[_0xb364('0x2f')]=_[_0xb364('0x31')](db['ZendeskField'][_0xb364('0x2b')]);_0x85c33d[_0xb364('0x30')]=_[_0xb364('0x31')](_0x58d1a4[_0xb364('0x30')]);_0x85c33d[_0xb364('0x39')]=_[_0xb364('0x44')](_0x85c33d[_0xb364('0x2f')],_0x85c33d[_0xb364('0x30')]);_0x5114c3[_0xb364('0x32')]=_[_0xb364('0x44')](_0x85c33d[_0xb364('0x2f')],qs[_0xb364('0x33')](_0x58d1a4[_0xb364('0x30')]['fields']));_0x5114c3[_0xb364('0x32')]=_0x5114c3['attributes'][_0xb364('0x34')]?_0x5114c3[_0xb364('0x32')]:_0x85c33d[_0xb364('0x2f')];_0x5114c3[_0xb364('0x36')]=qs[_0xb364('0x37')](_0x58d1a4[_0xb364('0x30')]['sort']);_0x5114c3[_0xb364('0x3b')]=qs['filters'](_[_0xb364('0x38')](_0x58d1a4[_0xb364('0x30')],_0x85c33d[_0xb364('0x39')]));if(_0x58d1a4[_0xb364('0x30')]['filter']){_0x5114c3[_0xb364('0x3b')]=_[_0xb364('0x3c')](_0x5114c3[_0xb364('0x3b')],{'$or':_[_0xb364('0x29')](_0x5114c3[_0xb364('0x32')],function(_0x4cbb92){var _0x3911f7={};_0x3911f7[_0x4cbb92]={'$like':'%'+_0x58d1a4[_0xb364('0x30')][_0xb364('0x3a')]+'%'};return _0x3911f7;})});}_0x5114c3=_[_0xb364('0x3c')]({},_0x5114c3,_0x58d1a4[_0xb364('0x3d')]);return _0x1b0f5d[_0xb364('0x4b')](_0x5114c3);}})['then'](function(_0x2e87bc){if(_0x2e87bc){_0x5ce280=_0x2e87bc[_0xb364('0x34')];if(!_0x58d1a4[_0xb364('0x30')][_0xb364('0x35')](_0xb364('0x4c'))){_0x5114c3[_0xb364('0x1b')]=qs[_0xb364('0x1b')](_0x58d1a4['query'][_0xb364('0x1b')]);_0x5114c3[_0xb364('0x19')]=qs['offset'](_0x58d1a4[_0xb364('0x30')][_0xb364('0x19')]);}return _0x1b0f5d[_0xb364('0x4b')](_0x5114c3);}})[_0xb364('0x23')](function(_0x3367ea){if(_0x3367ea){return _0x3367ea?{'count':_0x5ce280,'rows':_0x3367ea}:null;}})['then'](respondWithResult(_0x34232e,null))[_0xb364('0x42')](handleError(_0x34232e,null));};exports[_0xb364('0x4d')]=function(_0x4cf4ab,_0x47b035,_0x3adf37){var _0xa4eb34={};var _0x1c3257={};var _0x293a11;var _0x5a067b;return db[_0xb364('0x2a')][_0xb364('0x48')]({'where':{'id':_0x4cf4ab['params']['id']}})[_0xb364('0x23')](handleEntityNotFound(_0x47b035,null))[_0xb364('0x23')](function(_0x51ea1e){if(_0x51ea1e){_0x293a11=_0x51ea1e;_0x1c3257[_0xb364('0x2f')]=_[_0xb364('0x31')](db[_0xb364('0x49')][_0xb364('0x2b')]);_0x1c3257[_0xb364('0x30')]=_['keys'](_0x4cf4ab[_0xb364('0x30')]);_0x1c3257['filters']=_['intersection'](_0x1c3257[_0xb364('0x2f')],_0x1c3257[_0xb364('0x30')]);_0xa4eb34['attributes']=_[_0xb364('0x44')](_0x1c3257[_0xb364('0x2f')],qs[_0xb364('0x33')](_0x4cf4ab[_0xb364('0x30')]['fields']));_0xa4eb34[_0xb364('0x32')]=_0xa4eb34[_0xb364('0x32')][_0xb364('0x34')]?_0xa4eb34['attributes']:_0x1c3257['model'];_0xa4eb34[_0xb364('0x36')]=qs[_0xb364('0x37')](_0x4cf4ab[_0xb364('0x30')][_0xb364('0x37')]);_0xa4eb34['where']=qs[_0xb364('0x39')](_[_0xb364('0x38')](_0x4cf4ab[_0xb364('0x30')],_0x1c3257[_0xb364('0x39')]));if(_0x4cf4ab[_0xb364('0x30')]['filter']){_0xa4eb34['where']=_[_0xb364('0x3c')](_0xa4eb34[_0xb364('0x3b')],{'$or':_[_0xb364('0x29')](_0xa4eb34[_0xb364('0x32')],function(_0x277e54){var _0x11f04e={};_0x11f04e[_0x277e54]={'$like':'%'+_0x4cf4ab[_0xb364('0x30')]['filter']+'%'};return _0x11f04e;})});}_0xa4eb34=_['merge']({},_0xa4eb34,_0x4cf4ab['options']);return _0x293a11[_0xb364('0x4d')](_0xa4eb34);}})['then'](function(_0x659ae8){if(_0x659ae8){_0x5a067b=_0x659ae8[_0xb364('0x34')];if(!_0x4cf4ab[_0xb364('0x30')][_0xb364('0x35')](_0xb364('0x4c'))){_0xa4eb34[_0xb364('0x1b')]=qs[_0xb364('0x1b')](_0x4cf4ab[_0xb364('0x30')][_0xb364('0x1b')]);_0xa4eb34[_0xb364('0x19')]=qs[_0xb364('0x19')](_0x4cf4ab[_0xb364('0x30')][_0xb364('0x19')]);}return _0x293a11[_0xb364('0x4d')](_0xa4eb34);}})[_0xb364('0x23')](function(_0x25554c){if(_0x25554c){return _0x25554c?{'count':_0x5a067b,'rows':_0x25554c}:null;}})[_0xb364('0x23')](respondWithResult(_0x47b035,null))[_0xb364('0x42')](handleError(_0x47b035,null));};exports[_0xb364('0x4e')]=function(_0x37009f,_0x174532,_0x45ccf8){var _0x4524f9={};var _0x108302={};var _0x14671e;var _0x11fc94;return db[_0xb364('0x2a')][_0xb364('0x48')]({'where':{'id':_0x37009f[_0xb364('0x43')]['id']}})[_0xb364('0x23')](handleEntityNotFound(_0x174532,null))[_0xb364('0x23')](function(_0x2a4a3d){if(_0x2a4a3d){_0x14671e=_0x2a4a3d;_0x108302[_0xb364('0x2f')]=_[_0xb364('0x31')](db[_0xb364('0x4f')][_0xb364('0x2b')]);_0x108302[_0xb364('0x30')]=_[_0xb364('0x31')](_0x37009f[_0xb364('0x30')]);_0x108302['filters']=_[_0xb364('0x44')](_0x108302[_0xb364('0x2f')],_0x108302[_0xb364('0x30')]);_0x4524f9[_0xb364('0x32')]=_['intersection'](_0x108302[_0xb364('0x2f')],qs[_0xb364('0x33')](_0x37009f['query']['fields']));_0x4524f9[_0xb364('0x32')]=_0x4524f9[_0xb364('0x32')][_0xb364('0x34')]?_0x4524f9['attributes']:_0x108302[_0xb364('0x2f')];_0x4524f9[_0xb364('0x36')]=qs['sort'](_0x37009f[_0xb364('0x30')][_0xb364('0x37')]);_0x4524f9[_0xb364('0x3b')]=qs['filters'](_[_0xb364('0x38')](_0x37009f[_0xb364('0x30')],_0x108302['filters']));if(_0x37009f[_0xb364('0x30')][_0xb364('0x3a')]){_0x4524f9[_0xb364('0x3b')]=_['merge'](_0x4524f9[_0xb364('0x3b')],{'$or':_[_0xb364('0x29')](_0x4524f9[_0xb364('0x32')],function(_0x5d2ee4){var _0x427bba={};_0x427bba[_0x5d2ee4]={'$like':'%'+_0x37009f['query'][_0xb364('0x3a')]+'%'};return _0x427bba;})});}_0x4524f9=_['merge']({},_0x4524f9,_0x37009f[_0xb364('0x3d')]);return _0x14671e['getTags'](_0x4524f9);}})[_0xb364('0x23')](function(_0x525877){if(_0x525877){_0x11fc94=_0x525877['length'];if(!_0x37009f[_0xb364('0x30')][_0xb364('0x35')](_0xb364('0x4c'))){_0x4524f9['limit']=qs[_0xb364('0x1b')](_0x37009f[_0xb364('0x30')][_0xb364('0x1b')]);_0x4524f9[_0xb364('0x19')]=qs[_0xb364('0x19')](_0x37009f['query']['offset']);}return _0x14671e[_0xb364('0x4e')](_0x4524f9);}})[_0xb364('0x23')](function(_0x41d104){if(_0x41d104){return _0x41d104?{'count':_0x11fc94,'rows':_0x41d104}:null;}})[_0xb364('0x23')](respondWithResult(_0x174532,null))[_0xb364('0x42')](handleError(_0x174532,null));};exports[_0xb364('0x50')]=function(_0x1a95b2,_0x82ead1,_0x3f1be8){if(_0x1a95b2[_0xb364('0x46')]['id']){delete _0x1a95b2[_0xb364('0x46')]['id'];}return db[_0xb364('0x2a')][_0xb364('0x48')]({'where':{'id':_0x1a95b2[_0xb364('0x43')]['id']}})[_0xb364('0x23')](handleEntityNotFound(_0x82ead1,null))[_0xb364('0x23')](function(_0x4e6e01){if(_0x4e6e01){return _0x4e6e01[_0xb364('0x50')](_0x1a95b2['body'][_0xb364('0x51')]||[]);}return null;})['then'](respondWithResult(_0x82ead1,null))['catch'](handleError(_0x82ead1,null));};
\ No newline at end of file
+var _0x24af=['sendStatus','status','end','json','limit','undefined','offset','count','set','reject','update','then','destroy','stack','name','index','map','fieldName','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','ZendeskConfiguration','findAll','rows','catch','show','params','rawAttributes','find','create','body','getFields','findOne','ZendeskField','length','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x569ef8,_0x868a8d){var _0x4e63e9=function(_0x1d48c6){while(--_0x1d48c6){_0x569ef8['push'](_0x569ef8['shift']());}};_0x4e63e9(++_0x868a8d);}(_0x24af,0x182));var _0xf24a=function(_0x182b7d,_0x416e33){_0x182b7d=_0x182b7d-0x0;var _0x4f3e12=_0x24af[_0x182b7d];return _0x4f3e12;};'use strict';var emlformat=require(_0xf24a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf24a('0x1'));var jsonpatch=require(_0xf24a('0x2'));var rp=require(_0xf24a('0x3'));var moment=require(_0xf24a('0x4'));var BPromise=require(_0xf24a('0x5'));var Mustache=require(_0xf24a('0x6'));var util=require('util');var path=require(_0xf24a('0x7'));var sox=require('sox');var csv=require(_0xf24a('0x8'));var ejs=require(_0xf24a('0x9'));var fs=require('fs');var fs_extra=require(_0xf24a('0xa'));var _=require(_0xf24a('0xb'));var squel=require('squel');var crypto=require(_0xf24a('0xc'));var jsforce=require(_0xf24a('0xd'));var deskjs=require(_0xf24a('0xe'));var toCsv=require(_0xf24a('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xf24a('0xf'));var qs=require(_0xf24a('0x10'));var as=require(_0xf24a('0x11'));var hardwareService=require(_0xf24a('0x12'));var logger=require(_0xf24a('0x13'))(_0xf24a('0x14'));var utils=require(_0xf24a('0x15'));var config=require(_0xf24a('0x16'));var licenseUtil=require(_0xf24a('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x350114,_0x3e7db2){_0x3e7db2=_0x3e7db2||0xcc;return function(_0x50f568){if(_0x50f568){return _0x350114[_0xf24a('0x18')](_0x3e7db2);}return _0x350114[_0xf24a('0x19')](_0x3e7db2)[_0xf24a('0x1a')]();};}function respondWithResult(_0x3c9b66,_0x1d3aa5){_0x1d3aa5=_0x1d3aa5||0xc8;return function(_0x4917d6){if(_0x4917d6){return _0x3c9b66['status'](_0x1d3aa5)[_0xf24a('0x1b')](_0x4917d6);}};}function respondWithFilteredResult(_0x15859b,_0x438e20){return function(_0x5e9f6a){if(_0x5e9f6a){var _0x296317=typeof _0x438e20['offset']==='undefined'&&typeof _0x438e20[_0xf24a('0x1c')]===_0xf24a('0x1d');var _0x340940=_0x5e9f6a['count'];var _0x249d8c=_0x296317?0x0:_0x438e20[_0xf24a('0x1e')];var _0x238cce=_0x296317?_0x5e9f6a[_0xf24a('0x1f')]:_0x438e20['offset']+_0x438e20['limit'];var _0x53cc9c;if(_0x238cce>=_0x340940){_0x238cce=_0x340940;_0x53cc9c=0xc8;}else{_0x53cc9c=0xce;}_0x15859b[_0xf24a('0x19')](_0x53cc9c);return _0x15859b[_0xf24a('0x20')]('Content-Range',_0x249d8c+'-'+_0x238cce+'/'+_0x340940)[_0xf24a('0x1b')](_0x5e9f6a);}return null;};}function patchUpdates(_0x5bf114){return function(_0x13c8e9){try{jsonpatch['apply'](_0x13c8e9,_0x5bf114,!![]);}catch(_0x240dfa){return BPromise[_0xf24a('0x21')](_0x240dfa);}return _0x13c8e9['save']();};}function saveUpdates(_0x43f3e1,_0x349537){return function(_0x2042f3){if(_0x2042f3){return _0x2042f3[_0xf24a('0x22')](_0x43f3e1)[_0xf24a('0x23')](function(_0x388712){return _0x388712;});}return null;};}function removeEntity(_0x3b167b,_0x12a0aa){return function(_0x566b51){if(_0x566b51){return _0x566b51[_0xf24a('0x24')]()['then'](function(){_0x3b167b[_0xf24a('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5b00d3,_0xb5f7b6){return function(_0x15eb2b){if(!_0x15eb2b){_0x5b00d3[_0xf24a('0x18')](0x194);}return _0x15eb2b;};}function handleError(_0x16c724,_0x2bc997){_0x2bc997=_0x2bc997||0x1f4;return function(_0x612093){logger['error'](_0x612093[_0xf24a('0x25')]);if(_0x612093[_0xf24a('0x26')]){delete _0x612093[_0xf24a('0x26')];}_0x16c724[_0xf24a('0x19')](_0x2bc997)['send'](_0x612093);};}exports[_0xf24a('0x27')]=function(_0x451eb2,_0x455f14){var _0x2470e6={},_0x2ee08e={},_0x191d39={'count':0x0,'rows':[]};var _0x2c4a01=_[_0xf24a('0x28')](db['ZendeskConfiguration']['rawAttributes'],function(_0x2d80a4){return{'name':_0x2d80a4[_0xf24a('0x29')],'type':_0x2d80a4['type']['key']};});_0x2ee08e[_0xf24a('0x2a')]=_['map'](_0x2c4a01,_0xf24a('0x26'));_0x2ee08e[_0xf24a('0x2b')]=_[_0xf24a('0x2c')](_0x451eb2[_0xf24a('0x2b')]);_0x2ee08e[_0xf24a('0x2d')]=_[_0xf24a('0x2e')](_0x2ee08e[_0xf24a('0x2a')],_0x2ee08e[_0xf24a('0x2b')]);_0x2470e6['attributes']=_[_0xf24a('0x2e')](_0x2ee08e[_0xf24a('0x2a')],qs[_0xf24a('0x2f')](_0x451eb2[_0xf24a('0x2b')]['fields']));_0x2470e6[_0xf24a('0x30')]=_0x2470e6[_0xf24a('0x30')]['length']?_0x2470e6[_0xf24a('0x30')]:_0x2ee08e['model'];if(!_0x451eb2['query'][_0xf24a('0x31')](_0xf24a('0x32'))){_0x2470e6[_0xf24a('0x1c')]=qs['limit'](_0x451eb2[_0xf24a('0x2b')][_0xf24a('0x1c')]);_0x2470e6[_0xf24a('0x1e')]=qs[_0xf24a('0x1e')](_0x451eb2[_0xf24a('0x2b')][_0xf24a('0x1e')]);}_0x2470e6[_0xf24a('0x33')]=qs[_0xf24a('0x34')](_0x451eb2[_0xf24a('0x2b')][_0xf24a('0x34')]);_0x2470e6[_0xf24a('0x35')]=qs['filters'](_[_0xf24a('0x36')](_0x451eb2[_0xf24a('0x2b')],_0x2ee08e[_0xf24a('0x2d')]),_0x2c4a01);if(_0x451eb2[_0xf24a('0x2b')][_0xf24a('0x37')]){_0x2470e6[_0xf24a('0x35')]=_['merge'](_0x2470e6['where'],{'$or':_[_0xf24a('0x28')](_0x2c4a01,function(_0x1ac8f1){if(_0x1ac8f1[_0xf24a('0x38')]!==_0xf24a('0x39')){var _0x4b78fc={};_0x4b78fc[_0x1ac8f1['name']]={'$like':'%'+_0x451eb2[_0xf24a('0x2b')][_0xf24a('0x37')]+'%'};return _0x4b78fc;}})});}_0x2470e6=_[_0xf24a('0x3a')]({},_0x2470e6,_0x451eb2[_0xf24a('0x3b')]);var _0x24a9de={'where':_0x2470e6[_0xf24a('0x35')]};return db['ZendeskConfiguration'][_0xf24a('0x1f')](_0x24a9de)[_0xf24a('0x23')](function(_0x265e15){_0x191d39[_0xf24a('0x1f')]=_0x265e15;if(_0x451eb2['query'][_0xf24a('0x3c')]){_0x2470e6[_0xf24a('0x3d')]=[{'all':!![]}];}return db[_0xf24a('0x3e')][_0xf24a('0x3f')](_0x2470e6);})['then'](function(_0x460134){_0x191d39[_0xf24a('0x40')]=_0x460134;return _0x191d39;})[_0xf24a('0x23')](respondWithFilteredResult(_0x455f14,_0x2470e6))[_0xf24a('0x41')](handleError(_0x455f14,null));};exports[_0xf24a('0x42')]=function(_0x409302,_0x59d66a){var _0x207a55={'raw':![],'where':{'id':_0x409302[_0xf24a('0x43')]['id']}},_0x19017d={};_0x19017d[_0xf24a('0x2a')]=_['keys'](db[_0xf24a('0x3e')][_0xf24a('0x44')]);_0x19017d[_0xf24a('0x2b')]=_['keys'](_0x409302[_0xf24a('0x2b')]);_0x19017d[_0xf24a('0x2d')]=_[_0xf24a('0x2e')](_0x19017d['model'],_0x19017d[_0xf24a('0x2b')]);_0x207a55[_0xf24a('0x30')]=_['intersection'](_0x19017d['model'],qs[_0xf24a('0x2f')](_0x409302['query'][_0xf24a('0x2f')]));_0x207a55['attributes']=_0x207a55[_0xf24a('0x30')]['length']?_0x207a55[_0xf24a('0x30')]:_0x19017d[_0xf24a('0x2a')];if(_0x409302['query'][_0xf24a('0x3c')]){_0x207a55[_0xf24a('0x3d')]=[{'all':!![]}];}_0x207a55=_[_0xf24a('0x3a')]({},_0x207a55,_0x409302['options']);return db[_0xf24a('0x3e')][_0xf24a('0x45')](_0x207a55)[_0xf24a('0x23')](handleEntityNotFound(_0x59d66a,null))[_0xf24a('0x23')](respondWithResult(_0x59d66a,null))[_0xf24a('0x41')](handleError(_0x59d66a,null));};exports[_0xf24a('0x46')]=function(_0x23064c,_0x1e4abb){return db[_0xf24a('0x3e')]['create'](_0x23064c[_0xf24a('0x47')],{})['then'](respondWithResult(_0x1e4abb,0xc9))[_0xf24a('0x41')](handleError(_0x1e4abb,null));};exports['update']=function(_0x3e7cc4,_0x42f095){if(_0x3e7cc4['body']['id']){delete _0x3e7cc4[_0xf24a('0x47')]['id'];}return db['ZendeskConfiguration'][_0xf24a('0x45')]({'where':{'id':_0x3e7cc4['params']['id']}})[_0xf24a('0x23')](handleEntityNotFound(_0x42f095,null))[_0xf24a('0x23')](saveUpdates(_0x3e7cc4[_0xf24a('0x47')],null))['then'](respondWithResult(_0x42f095,null))['catch'](handleError(_0x42f095,null));};exports[_0xf24a('0x24')]=function(_0x233e06,_0x461cac){return db[_0xf24a('0x3e')]['find']({'where':{'id':_0x233e06[_0xf24a('0x43')]['id']}})['then'](handleEntityNotFound(_0x461cac,null))[_0xf24a('0x23')](removeEntity(_0x461cac,null))[_0xf24a('0x41')](handleError(_0x461cac,null));};exports[_0xf24a('0x48')]=function(_0x4d7f27,_0x22093b,_0x4fcc4f){var _0x42a217={};var _0x5b3403={};var _0x418a22;var _0xcf067b;return db['ZendeskConfiguration'][_0xf24a('0x49')]({'where':{'id':_0x4d7f27[_0xf24a('0x43')]['id']}})[_0xf24a('0x23')](handleEntityNotFound(_0x22093b,null))[_0xf24a('0x23')](function(_0x5a7e81){if(_0x5a7e81){_0x418a22=_0x5a7e81;_0x5b3403[_0xf24a('0x2a')]=_[_0xf24a('0x2c')](db[_0xf24a('0x4a')][_0xf24a('0x44')]);_0x5b3403[_0xf24a('0x2b')]=_[_0xf24a('0x2c')](_0x4d7f27[_0xf24a('0x2b')]);_0x5b3403[_0xf24a('0x2d')]=_[_0xf24a('0x2e')](_0x5b3403[_0xf24a('0x2a')],_0x5b3403[_0xf24a('0x2b')]);_0x42a217[_0xf24a('0x30')]=_[_0xf24a('0x2e')](_0x5b3403[_0xf24a('0x2a')],qs[_0xf24a('0x2f')](_0x4d7f27[_0xf24a('0x2b')][_0xf24a('0x2f')]));_0x42a217[_0xf24a('0x30')]=_0x42a217[_0xf24a('0x30')][_0xf24a('0x4b')]?_0x42a217[_0xf24a('0x30')]:_0x5b3403[_0xf24a('0x2a')];_0x42a217['order']=qs[_0xf24a('0x34')](_0x4d7f27[_0xf24a('0x2b')][_0xf24a('0x34')]);_0x42a217[_0xf24a('0x35')]=qs[_0xf24a('0x2d')](_[_0xf24a('0x36')](_0x4d7f27[_0xf24a('0x2b')],_0x5b3403[_0xf24a('0x2d')]));if(_0x4d7f27[_0xf24a('0x2b')]['filter']){_0x42a217[_0xf24a('0x35')]=_[_0xf24a('0x3a')](_0x42a217[_0xf24a('0x35')],{'$or':_[_0xf24a('0x28')](_0x42a217['attributes'],function(_0x3e365f){var _0x206dd5={};_0x206dd5[_0x3e365f]={'$like':'%'+_0x4d7f27[_0xf24a('0x2b')][_0xf24a('0x37')]+'%'};return _0x206dd5;})});}_0x42a217=_[_0xf24a('0x3a')]({},_0x42a217,_0x4d7f27['options']);return _0x418a22[_0xf24a('0x48')](_0x42a217);}})[_0xf24a('0x23')](function(_0x555467){if(_0x555467){_0xcf067b=_0x555467['length'];if(!_0x4d7f27[_0xf24a('0x2b')]['hasOwnProperty'](_0xf24a('0x32'))){_0x42a217[_0xf24a('0x1c')]=qs[_0xf24a('0x1c')](_0x4d7f27['query'][_0xf24a('0x1c')]);_0x42a217[_0xf24a('0x1e')]=qs[_0xf24a('0x1e')](_0x4d7f27[_0xf24a('0x2b')][_0xf24a('0x1e')]);}return _0x418a22['getFields'](_0x42a217);}})['then'](function(_0x2f0116){if(_0x2f0116){return _0x2f0116?{'count':_0xcf067b,'rows':_0x2f0116}:null;}})[_0xf24a('0x23')](respondWithResult(_0x22093b,null))[_0xf24a('0x41')](handleError(_0x22093b,null));};exports['getSubjects']=function(_0x37acb2,_0x110340,_0x1a8624){var _0x150e33={};var _0x12488f={};var _0x166c39;var _0x533658;return db[_0xf24a('0x3e')][_0xf24a('0x49')]({'where':{'id':_0x37acb2[_0xf24a('0x43')]['id']}})[_0xf24a('0x23')](handleEntityNotFound(_0x110340,null))[_0xf24a('0x23')](function(_0x46ba1c){if(_0x46ba1c){_0x166c39=_0x46ba1c;_0x12488f[_0xf24a('0x2a')]=_['keys'](db[_0xf24a('0x4a')][_0xf24a('0x44')]);_0x12488f['query']=_[_0xf24a('0x2c')](_0x37acb2[_0xf24a('0x2b')]);_0x12488f['filters']=_[_0xf24a('0x2e')](_0x12488f[_0xf24a('0x2a')],_0x12488f[_0xf24a('0x2b')]);_0x150e33[_0xf24a('0x30')]=_['intersection'](_0x12488f[_0xf24a('0x2a')],qs[_0xf24a('0x2f')](_0x37acb2[_0xf24a('0x2b')][_0xf24a('0x2f')]));_0x150e33['attributes']=_0x150e33[_0xf24a('0x30')][_0xf24a('0x4b')]?_0x150e33[_0xf24a('0x30')]:_0x12488f['model'];_0x150e33[_0xf24a('0x33')]=qs[_0xf24a('0x34')](_0x37acb2[_0xf24a('0x2b')]['sort']);_0x150e33['where']=qs['filters'](_[_0xf24a('0x36')](_0x37acb2[_0xf24a('0x2b')],_0x12488f[_0xf24a('0x2d')]));if(_0x37acb2['query'][_0xf24a('0x37')]){_0x150e33[_0xf24a('0x35')]=_[_0xf24a('0x3a')](_0x150e33[_0xf24a('0x35')],{'$or':_[_0xf24a('0x28')](_0x150e33[_0xf24a('0x30')],function(_0x584b82){var _0x39f914={};_0x39f914[_0x584b82]={'$like':'%'+_0x37acb2[_0xf24a('0x2b')][_0xf24a('0x37')]+'%'};return _0x39f914;})});}_0x150e33=_[_0xf24a('0x3a')]({},_0x150e33,_0x37acb2[_0xf24a('0x3b')]);return _0x166c39[_0xf24a('0x4c')](_0x150e33);}})[_0xf24a('0x23')](function(_0x46ad55){if(_0x46ad55){_0x533658=_0x46ad55[_0xf24a('0x4b')];if(!_0x37acb2['query'][_0xf24a('0x31')](_0xf24a('0x32'))){_0x150e33['limit']=qs[_0xf24a('0x1c')](_0x37acb2['query'][_0xf24a('0x1c')]);_0x150e33[_0xf24a('0x1e')]=qs[_0xf24a('0x1e')](_0x37acb2[_0xf24a('0x2b')]['offset']);}return _0x166c39[_0xf24a('0x4c')](_0x150e33);}})[_0xf24a('0x23')](function(_0x1766b6){if(_0x1766b6){return _0x1766b6?{'count':_0x533658,'rows':_0x1766b6}:null;}})[_0xf24a('0x23')](respondWithResult(_0x110340,null))['catch'](handleError(_0x110340,null));};exports[_0xf24a('0x4d')]=function(_0xaee4b4,_0x4dd0bb,_0x1dfdb4){var _0x8f6b2e={};var _0x226dc9={};var _0xf73f54;var _0x5e285e;return db[_0xf24a('0x3e')][_0xf24a('0x49')]({'where':{'id':_0xaee4b4['params']['id']}})[_0xf24a('0x23')](handleEntityNotFound(_0x4dd0bb,null))[_0xf24a('0x23')](function(_0x39feec){if(_0x39feec){_0xf73f54=_0x39feec;_0x226dc9[_0xf24a('0x2a')]=_[_0xf24a('0x2c')](db[_0xf24a('0x4a')][_0xf24a('0x44')]);_0x226dc9[_0xf24a('0x2b')]=_['keys'](_0xaee4b4['query']);_0x226dc9[_0xf24a('0x2d')]=_[_0xf24a('0x2e')](_0x226dc9[_0xf24a('0x2a')],_0x226dc9[_0xf24a('0x2b')]);_0x8f6b2e['attributes']=_[_0xf24a('0x2e')](_0x226dc9[_0xf24a('0x2a')],qs[_0xf24a('0x2f')](_0xaee4b4[_0xf24a('0x2b')][_0xf24a('0x2f')]));_0x8f6b2e[_0xf24a('0x30')]=_0x8f6b2e[_0xf24a('0x30')][_0xf24a('0x4b')]?_0x8f6b2e[_0xf24a('0x30')]:_0x226dc9['model'];_0x8f6b2e['order']=qs[_0xf24a('0x34')](_0xaee4b4[_0xf24a('0x2b')][_0xf24a('0x34')]);_0x8f6b2e['where']=qs[_0xf24a('0x2d')](_[_0xf24a('0x36')](_0xaee4b4[_0xf24a('0x2b')],_0x226dc9[_0xf24a('0x2d')]));if(_0xaee4b4['query'][_0xf24a('0x37')]){_0x8f6b2e[_0xf24a('0x35')]=_[_0xf24a('0x3a')](_0x8f6b2e[_0xf24a('0x35')],{'$or':_[_0xf24a('0x28')](_0x8f6b2e[_0xf24a('0x30')],function(_0x363163){var _0x3ec74e={};_0x3ec74e[_0x363163]={'$like':'%'+_0xaee4b4['query'][_0xf24a('0x37')]+'%'};return _0x3ec74e;})});}_0x8f6b2e=_[_0xf24a('0x3a')]({},_0x8f6b2e,_0xaee4b4['options']);return _0xf73f54[_0xf24a('0x4d')](_0x8f6b2e);}})['then'](function(_0x3de045){if(_0x3de045){_0x5e285e=_0x3de045['length'];if(!_0xaee4b4['query'][_0xf24a('0x31')](_0xf24a('0x32'))){_0x8f6b2e[_0xf24a('0x1c')]=qs[_0xf24a('0x1c')](_0xaee4b4[_0xf24a('0x2b')][_0xf24a('0x1c')]);_0x8f6b2e[_0xf24a('0x1e')]=qs['offset'](_0xaee4b4[_0xf24a('0x2b')][_0xf24a('0x1e')]);}return _0xf73f54[_0xf24a('0x4d')](_0x8f6b2e);}})[_0xf24a('0x23')](function(_0x31ccac){if(_0x31ccac){return _0x31ccac?{'count':_0x5e285e,'rows':_0x31ccac}:null;}})[_0xf24a('0x23')](respondWithResult(_0x4dd0bb,null))[_0xf24a('0x41')](handleError(_0x4dd0bb,null));};exports[_0xf24a('0x4e')]=function(_0x2c725b,_0xbc58dc,_0x507927){var _0x2a2b65={};var _0x582b4e={};var _0x4f4886;var _0x183284;return db[_0xf24a('0x3e')]['findOne']({'where':{'id':_0x2c725b['params']['id']}})[_0xf24a('0x23')](handleEntityNotFound(_0xbc58dc,null))['then'](function(_0x493b4c){if(_0x493b4c){_0x4f4886=_0x493b4c;_0x582b4e[_0xf24a('0x2a')]=_[_0xf24a('0x2c')](db[_0xf24a('0x4f')][_0xf24a('0x44')]);_0x582b4e[_0xf24a('0x2b')]=_['keys'](_0x2c725b[_0xf24a('0x2b')]);_0x582b4e[_0xf24a('0x2d')]=_['intersection'](_0x582b4e[_0xf24a('0x2a')],_0x582b4e[_0xf24a('0x2b')]);_0x2a2b65[_0xf24a('0x30')]=_[_0xf24a('0x2e')](_0x582b4e[_0xf24a('0x2a')],qs[_0xf24a('0x2f')](_0x2c725b['query']['fields']));_0x2a2b65[_0xf24a('0x30')]=_0x2a2b65[_0xf24a('0x30')][_0xf24a('0x4b')]?_0x2a2b65['attributes']:_0x582b4e[_0xf24a('0x2a')];_0x2a2b65[_0xf24a('0x33')]=qs[_0xf24a('0x34')](_0x2c725b[_0xf24a('0x2b')][_0xf24a('0x34')]);_0x2a2b65[_0xf24a('0x35')]=qs['filters'](_[_0xf24a('0x36')](_0x2c725b[_0xf24a('0x2b')],_0x582b4e[_0xf24a('0x2d')]));if(_0x2c725b[_0xf24a('0x2b')][_0xf24a('0x37')]){_0x2a2b65[_0xf24a('0x35')]=_[_0xf24a('0x3a')](_0x2a2b65[_0xf24a('0x35')],{'$or':_[_0xf24a('0x28')](_0x2a2b65[_0xf24a('0x30')],function(_0x1c1540){var _0x3c39e0={};_0x3c39e0[_0x1c1540]={'$like':'%'+_0x2c725b[_0xf24a('0x2b')]['filter']+'%'};return _0x3c39e0;})});}_0x2a2b65=_[_0xf24a('0x3a')]({},_0x2a2b65,_0x2c725b[_0xf24a('0x3b')]);return _0x4f4886[_0xf24a('0x4e')](_0x2a2b65);}})[_0xf24a('0x23')](function(_0x261005){if(_0x261005){_0x183284=_0x261005[_0xf24a('0x4b')];if(!_0x2c725b['query'][_0xf24a('0x31')]('nolimit')){_0x2a2b65[_0xf24a('0x1c')]=qs[_0xf24a('0x1c')](_0x2c725b[_0xf24a('0x2b')][_0xf24a('0x1c')]);_0x2a2b65['offset']=qs[_0xf24a('0x1e')](_0x2c725b[_0xf24a('0x2b')][_0xf24a('0x1e')]);}return _0x4f4886[_0xf24a('0x4e')](_0x2a2b65);}})['then'](function(_0x2bd4a3){if(_0x2bd4a3){return _0x2bd4a3?{'count':_0x183284,'rows':_0x2bd4a3}:null;}})[_0xf24a('0x23')](respondWithResult(_0xbc58dc,null))[_0xf24a('0x41')](handleError(_0xbc58dc,null));};exports[_0xf24a('0x50')]=function(_0x16eeee,_0x51dd7c,_0x2e6ce4){if(_0x16eeee[_0xf24a('0x47')]['id']){delete _0x16eeee[_0xf24a('0x47')]['id'];}return db[_0xf24a('0x3e')][_0xf24a('0x49')]({'where':{'id':_0x16eeee['params']['id']}})[_0xf24a('0x23')](handleEntityNotFound(_0x51dd7c,null))[_0xf24a('0x23')](function(_0x4ff734){if(_0x4ff734){return _0x4ff734['setTags'](_0x16eeee[_0xf24a('0x47')][_0xf24a('0x51')]||[]);}return null;})[_0xf24a('0x23')](respondWithResult(_0x51dd7c,null))['catch'](handleError(_0x51dd7c,null));};
\ No newline at end of file
index d364329..c4b94dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e3f=['request-promise','rimraf','../../config/environment','exports','define','int_zendesk_configurations','lodash','util','../../config/logger','moment','bluebird'];(function(_0x3f64cc,_0x434cab){var _0x5a728d=function(_0x10ea28){while(--_0x10ea28){_0x3f64cc['push'](_0x3f64cc['shift']());}};_0x5a728d(++_0x434cab);}(_0x8e3f,0xc1));var _0xf8e3=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x8e3f[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0xf8e3('0x0'));var util=require(_0xf8e3('0x1'));var logger=require(_0xf8e3('0x2'))('api');var moment=require(_0xf8e3('0x3'));var BPromise=require(_0xf8e3('0x4'));var rp=require(_0xf8e3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf8e3('0x6'));var config=require(_0xf8e3('0x7'));var attributes=require('./intZendeskConfiguration.attributes');module[_0xf8e3('0x8')]=function(_0xb21f8d,_0x2621c5){return _0xb21f8d[_0xf8e3('0x9')]('ZendeskConfiguration',attributes,{'tableName':_0xf8e3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7708=['../../config/environment','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash','util','api','rimraf'];(function(_0x5acebb,_0x51ec1a){var _0x435fc3=function(_0x57a438){while(--_0x57a438){_0x5acebb['push'](_0x5acebb['shift']());}};_0x435fc3(++_0x51ec1a);}(_0x7708,0x188));var _0x8770=function(_0x53a7af,_0x1408a5){_0x53a7af=_0x53a7af-0x0;var _0x3cc7f6=_0x7708[_0x53a7af];return _0x3cc7f6;};'use strict';var _=require(_0x8770('0x0'));var util=require(_0x8770('0x1'));var logger=require('../../config/logger')(_0x8770('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8770('0x3'));var config=require(_0x8770('0x4'));var attributes=require('./intZendeskConfiguration.attributes');module[_0x8770('0x5')]=function(_0x50bab7,_0x31390d){return _0x50bab7[_0x8770('0x6')](_0x8770('0x7'),attributes,{'tableName':_0x8770('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e8f567c..d8416c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x500e=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','ZendeskConfiguration,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','util','bluebird'];(function(_0x54df10,_0x596791){var _0x33255f=function(_0x512681){while(--_0x512681){_0x54df10['push'](_0x54df10['shift']());}};_0x33255f(++_0x596791);}(_0x500e,0x1dd));var _0xe500=function(_0x12bcf7,_0xc11103){_0x12bcf7=_0x12bcf7-0x0;var _0x2825a=_0x500e[_0x12bcf7];return _0x2825a;};'use strict';var _=require(_0xe500('0x0'));var util=require(_0xe500('0x1'));var moment=require('moment');var BPromise=require(_0xe500('0x2'));var rs=require(_0xe500('0x3'));var fs=require('fs');var Redis=require(_0xe500('0x4'));var db=require(_0xe500('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe500('0x6'))(_0xe500('0x7'));var config=require('../../config/environment');var jayson=require(_0xe500('0x8'));var client=jayson[_0xe500('0x9')][_0xe500('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x94d48f,_0x3eb49f,_0x33ae92){return new BPromise(function(_0x175abf,_0x38bf68){return client[_0xe500('0xb')](_0x94d48f,_0x33ae92)[_0xe500('0xc')](function(_0x18de45){logger[_0xe500('0xd')]('ZendeskConfiguration,\x20%s,\x20%s',_0x3eb49f,'request\x20sent');logger[_0xe500('0xe')](_0xe500('0xf'),_0x3eb49f,'request\x20sent',JSON[_0xe500('0x10')](_0x18de45));if(_0x18de45[_0xe500('0x11')]){if(_0x18de45['error'][_0xe500('0x12')]===0x1f4){logger[_0xe500('0x11')](_0xe500('0x13'),_0x3eb49f,_0x18de45[_0xe500('0x11')]['message']);return _0x38bf68(_0x18de45['error']['message']);}logger['error'](_0xe500('0x13'),_0x3eb49f,_0x18de45[_0xe500('0x11')][_0xe500('0x14')]);return _0x175abf(_0x18de45[_0xe500('0x11')][_0xe500('0x14')]);}else{logger[_0xe500('0xd')](_0xe500('0x13'),_0x3eb49f,_0xe500('0x15'));_0x175abf(_0x18de45[_0xe500('0x16')][_0xe500('0x14')]);}})[_0xe500('0x17')](function(_0x45a959){logger[_0xe500('0x11')](_0xe500('0x13'),_0x3eb49f,_0x45a959);_0x38bf68(_0x45a959);});});}
\ No newline at end of file
+var _0x2c7c=['moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','error','message','result','catch','lodash'];(function(_0x10e983,_0x2f4eda){var _0x324138=function(_0x17a377){while(--_0x17a377){_0x10e983['push'](_0x10e983['shift']());}};_0x324138(++_0x2f4eda);}(_0x2c7c,0x1d3));var _0xc2c7=function(_0x3a08b8,_0x3f6a97){_0x3a08b8=_0x3a08b8-0x0;var _0x2b2817=_0x2c7c[_0x3a08b8];return _0x2b2817;};'use strict';var _=require(_0xc2c7('0x0'));var util=require('util');var moment=require(_0xc2c7('0x1'));var BPromise=require(_0xc2c7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc2c7('0x3'));var logger=require(_0xc2c7('0x4'))(_0xc2c7('0x5'));var config=require(_0xc2c7('0x6'));var jayson=require(_0xc2c7('0x7'));var client=jayson[_0xc2c7('0x8')][_0xc2c7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x308d46,_0x35eae3,_0x330540){return new BPromise(function(_0x472ed2,_0x54fad2){return client['request'](_0x308d46,_0x330540)[_0xc2c7('0xa')](function(_0x5f384e){logger[_0xc2c7('0xb')](_0xc2c7('0xc'),_0x35eae3,_0xc2c7('0xd'));logger['debug']('ZendeskConfiguration,\x20%s,\x20%s,\x20%s',_0x35eae3,_0xc2c7('0xd'),JSON['stringify'](_0x5f384e));if(_0x5f384e[_0xc2c7('0xe')]){if(_0x5f384e[_0xc2c7('0xe')]['code']===0x1f4){logger['error'](_0xc2c7('0xc'),_0x35eae3,_0x5f384e[_0xc2c7('0xe')][_0xc2c7('0xf')]);return _0x54fad2(_0x5f384e['error'][_0xc2c7('0xf')]);}logger[_0xc2c7('0xe')]('ZendeskConfiguration,\x20%s,\x20%s',_0x35eae3,_0x5f384e[_0xc2c7('0xe')]['message']);return _0x472ed2(_0x5f384e[_0xc2c7('0xe')]['message']);}else{logger[_0xc2c7('0xb')](_0xc2c7('0xc'),_0x35eae3,_0xc2c7('0xd'));_0x472ed2(_0x5f384e[_0xc2c7('0x10')][_0xc2c7('0xf')]);}})[_0xc2c7('0x11')](function(_0x5e5c6c){logger[_0xc2c7('0xe')](_0xc2c7('0xc'),_0x35eae3,_0x5e5c6c);_0x54fad2(_0x5e5c6c);});});}
\ No newline at end of file
index 598f5e9..06f3208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9085=['express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0xfa6863,_0x3ae724){var _0x1fb967=function(_0x465dad){while(--_0x465dad){_0xfa6863['push'](_0xfa6863['shift']());}};_0x1fb967(++_0x3ae724);}(_0x9085,0xf3));var _0x5908=function(_0x346df7,_0x3404ad){_0x346df7=_0x346df7-0x0;var _0x504fd8=_0x9085[_0x346df7];return _0x504fd8;};'use strict';var multer=require(_0x5908('0x0'));var util=require(_0x5908('0x1'));var path=require(_0x5908('0x2'));var timeout=require(_0x5908('0x3'));var express=require(_0x5908('0x4'));var router=express['Router']();var fs_extra=require(_0x5908('0x5'));var auth=require(_0x5908('0x6'));var interaction=require(_0x5908('0x7'));var config=require('../../config/environment');var controller=require('./intZendeskField.controller');router[_0x5908('0x8')]('/',auth[_0x5908('0x9')](),controller[_0x5908('0xa')]);router['get'](_0x5908('0xb'),auth['isAuthenticated'](),controller[_0x5908('0xc')]);router[_0x5908('0xd')]('/',auth[_0x5908('0x9')](),controller[_0x5908('0xe')]);router[_0x5908('0xf')](_0x5908('0xb'),auth[_0x5908('0x9')](),controller['update']);router[_0x5908('0x10')](_0x5908('0xb'),auth[_0x5908('0x9')](),controller[_0x5908('0x11')]);module[_0x5908('0x12')]=router;
\ No newline at end of file
+var _0x497c=['util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','isAuthenticated','get','/:id','show','post','put','update','delete','destroy','exports'];(function(_0x137a29,_0xa48818){var _0x4c7b3d=function(_0xdf9d2d){while(--_0xdf9d2d){_0x137a29['push'](_0x137a29['shift']());}};_0x4c7b3d(++_0xa48818);}(_0x497c,0xd1));var _0xc497=function(_0x5f3f88,_0x562baf){_0x5f3f88=_0x5f3f88-0x0;var _0xd08119=_0x497c[_0x5f3f88];return _0xd08119;};'use strict';var multer=require('multer');var util=require(_0xc497('0x0'));var path=require(_0xc497('0x1'));var timeout=require('connect-timeout');var express=require(_0xc497('0x2'));var router=express[_0xc497('0x3')]();var fs_extra=require(_0xc497('0x4'));var auth=require(_0xc497('0x5'));var interaction=require(_0xc497('0x6'));var config=require(_0xc497('0x7'));var controller=require(_0xc497('0x8'));router['get']('/',auth[_0xc497('0x9')](),controller['index']);router[_0xc497('0xa')](_0xc497('0xb'),auth[_0xc497('0x9')](),controller[_0xc497('0xc')]);router[_0xc497('0xd')]('/',auth[_0xc497('0x9')](),controller['create']);router[_0xc497('0xe')](_0xc497('0xb'),auth[_0xc497('0x9')](),controller[_0xc497('0xf')]);router[_0xc497('0x10')](_0xc497('0xb'),auth[_0xc497('0x9')](),controller[_0xc497('0x11')]);module[_0xc497('0x12')]=router;
\ No newline at end of file
index 15bb56c..c5cdaed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36ff=['sequelize','exports','string','variable','customVariable','keyValue','picklist','STRING','ENUM','BOOLEAN'];(function(_0x1486e6,_0x403e17){var _0x2f4a2a=function(_0x1692e4){while(--_0x1692e4){_0x1486e6['push'](_0x1486e6['shift']());}};_0x2f4a2a(++_0x403e17);}(_0x36ff,0x78));var _0xf36f=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0x36ff[_0x4709c0];return _0x13348b;};'use strict';var Sequelize=require(_0xf36f('0x0'));module[_0xf36f('0x1')]={'type':{'type':Sequelize['ENUM'](_0xf36f('0x2'),_0xf36f('0x3'),_0xf36f('0x4'),_0xf36f('0x5'),_0xf36f('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0xf36f('0x7')]},'key':{'type':Sequelize[_0xf36f('0x7')]},'keyType':{'type':Sequelize[_0xf36f('0x8')](_0xf36f('0x2'),_0xf36f('0x3'),_0xf36f('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xf36f('0x7')]},'nameField':{'type':Sequelize[_0xf36f('0x7')]},'customField':{'type':Sequelize[_0xf36f('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf36f('0x7')]}};
\ No newline at end of file
+var _0x6141=['customVariable','keyValue','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable'];(function(_0x576a26,_0x14e361){var _0x576069=function(_0x14efd3){while(--_0x14efd3){_0x576a26['push'](_0x576a26['shift']());}};_0x576069(++_0x14e361);}(_0x6141,0x1ea));var _0x1614=function(_0x1a2e77,_0x415305){_0x1a2e77=_0x1a2e77-0x0;var _0x27b61a=_0x6141[_0x1a2e77];return _0x27b61a;};'use strict';var Sequelize=require(_0x1614('0x0'));module[_0x1614('0x1')]={'type':{'type':Sequelize[_0x1614('0x2')](_0x1614('0x3'),_0x1614('0x4'),_0x1614('0x5'),_0x1614('0x6'),'picklist'),'defaultValue':_0x1614('0x3')},'content':{'type':Sequelize[_0x1614('0x7')]},'key':{'type':Sequelize[_0x1614('0x7')]},'keyType':{'type':Sequelize[_0x1614('0x2')]('string',_0x1614('0x4'),_0x1614('0x5'))},'keyContent':{'type':Sequelize[_0x1614('0x7')]},'idField':{'type':Sequelize[_0x1614('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x1614('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1614('0x7')]}};
\ No newline at end of file
index 2e52c4a..97e7ab9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa216=['keys','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','intersection','include','create','body','find','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','type','model'];(function(_0x2be577,_0x4821cb){var _0x37b80=function(_0x456920){while(--_0x456920){_0x2be577['push'](_0x2be577['shift']());}};_0x37b80(++_0x4821cb);}(_0xa216,0xf4));var _0x6a21=function(_0x211219,_0x1c7e0d){_0x211219=_0x211219-0x0;var _0x2f39b1=_0xa216[_0x211219];return _0x2f39b1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6a21('0x0'));var zipdir=require(_0x6a21('0x1'));var jsonpatch=require(_0x6a21('0x2'));var rp=require(_0x6a21('0x3'));var moment=require(_0x6a21('0x4'));var BPromise=require(_0x6a21('0x5'));var Mustache=require(_0x6a21('0x6'));var util=require(_0x6a21('0x7'));var path=require(_0x6a21('0x8'));var sox=require('sox');var csv=require(_0x6a21('0x9'));var ejs=require(_0x6a21('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x6a21('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6a21('0x9'));var querystring=require(_0x6a21('0xc'));var Papa=require(_0x6a21('0xd'));var Redis=require(_0x6a21('0xe'));var authService=require(_0x6a21('0xf'));var qs=require(_0x6a21('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6a21('0x11'));var logger=require(_0x6a21('0x12'))(_0x6a21('0x13'));var utils=require(_0x6a21('0x14'));var config=require(_0x6a21('0x15'));var licenseUtil=require(_0x6a21('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xabe87b,_0x850cd0){_0x850cd0=_0x850cd0||0xcc;return function(_0x4ffb65){if(_0x4ffb65){return _0xabe87b['sendStatus'](_0x850cd0);}return _0xabe87b[_0x6a21('0x17')](_0x850cd0)[_0x6a21('0x18')]();};}function respondWithResult(_0x1391df,_0x2d4ffc){_0x2d4ffc=_0x2d4ffc||0xc8;return function(_0x3b274a){if(_0x3b274a){return _0x1391df[_0x6a21('0x17')](_0x2d4ffc)[_0x6a21('0x19')](_0x3b274a);}};}function respondWithFilteredResult(_0x360e2e,_0x2448c8){return function(_0xf878f6){if(_0xf878f6){var _0x3fb700=typeof _0x2448c8[_0x6a21('0x1a')]===_0x6a21('0x1b')&&typeof _0x2448c8['limit']===_0x6a21('0x1b');var _0x3e21ca=_0xf878f6[_0x6a21('0x1c')];var _0xf55225=_0x3fb700?0x0:_0x2448c8[_0x6a21('0x1a')];var _0x37e3dd=_0x3fb700?_0xf878f6[_0x6a21('0x1c')]:_0x2448c8[_0x6a21('0x1a')]+_0x2448c8[_0x6a21('0x1d')];var _0xea53d;if(_0x37e3dd>=_0x3e21ca){_0x37e3dd=_0x3e21ca;_0xea53d=0xc8;}else{_0xea53d=0xce;}_0x360e2e[_0x6a21('0x17')](_0xea53d);return _0x360e2e['set'](_0x6a21('0x1e'),_0xf55225+'-'+_0x37e3dd+'/'+_0x3e21ca)[_0x6a21('0x19')](_0xf878f6);}return null;};}function patchUpdates(_0x201ed3){return function(_0x797587){try{jsonpatch[_0x6a21('0x1f')](_0x797587,_0x201ed3,!![]);}catch(_0x31c45d){return BPromise[_0x6a21('0x20')](_0x31c45d);}return _0x797587[_0x6a21('0x21')]();};}function saveUpdates(_0x15cfab,_0x1467b7){return function(_0x5da564){if(_0x5da564){return _0x5da564['update'](_0x15cfab)[_0x6a21('0x22')](function(_0x55e5df){return _0x55e5df;});}return null;};}function removeEntity(_0x4625ef,_0x2da595){return function(_0x325c38){if(_0x325c38){return _0x325c38[_0x6a21('0x23')]()[_0x6a21('0x22')](function(){_0x4625ef[_0x6a21('0x17')](0xcc)[_0x6a21('0x18')]();});}};}function handleEntityNotFound(_0x2d8dce,_0x3d69f9){return function(_0x3d445e){if(!_0x3d445e){_0x2d8dce[_0x6a21('0x24')](0x194);}return _0x3d445e;};}function handleError(_0x4e4e32,_0x419f3c){_0x419f3c=_0x419f3c||0x1f4;return function(_0x20b8b5){logger[_0x6a21('0x25')](_0x20b8b5[_0x6a21('0x26')]);if(_0x20b8b5[_0x6a21('0x27')]){delete _0x20b8b5[_0x6a21('0x27')];}_0x4e4e32[_0x6a21('0x17')](_0x419f3c)[_0x6a21('0x28')](_0x20b8b5);};}exports[_0x6a21('0x29')]=function(_0x2e886e,_0x1284cb){var _0x2f1ac0={},_0x8cc2ed={},_0x1014a9={'count':0x0,'rows':[]};var _0x185b29=_[_0x6a21('0x2a')](db[_0x6a21('0x2b')][_0x6a21('0x2c')],function(_0x42775d){return{'name':_0x42775d[_0x6a21('0x2d')],'type':_0x42775d[_0x6a21('0x2e')]['key']};});_0x8cc2ed[_0x6a21('0x2f')]=_['map'](_0x185b29,_0x6a21('0x27'));_0x8cc2ed['query']=_[_0x6a21('0x30')](_0x2e886e[_0x6a21('0x31')]);_0x8cc2ed['filters']=_['intersection'](_0x8cc2ed[_0x6a21('0x2f')],_0x8cc2ed['query']);_0x2f1ac0[_0x6a21('0x32')]=_['intersection'](_0x8cc2ed[_0x6a21('0x2f')],qs[_0x6a21('0x33')](_0x2e886e[_0x6a21('0x31')][_0x6a21('0x33')]));_0x2f1ac0['attributes']=_0x2f1ac0[_0x6a21('0x32')][_0x6a21('0x34')]?_0x2f1ac0[_0x6a21('0x32')]:_0x8cc2ed[_0x6a21('0x2f')];if(!_0x2e886e[_0x6a21('0x31')][_0x6a21('0x35')](_0x6a21('0x36'))){_0x2f1ac0['limit']=qs[_0x6a21('0x1d')](_0x2e886e[_0x6a21('0x31')][_0x6a21('0x1d')]);_0x2f1ac0[_0x6a21('0x1a')]=qs[_0x6a21('0x1a')](_0x2e886e[_0x6a21('0x31')][_0x6a21('0x1a')]);}_0x2f1ac0['order']=qs[_0x6a21('0x37')](_0x2e886e[_0x6a21('0x31')]['sort']);_0x2f1ac0[_0x6a21('0x38')]=qs['filters'](_[_0x6a21('0x39')](_0x2e886e[_0x6a21('0x31')],_0x8cc2ed[_0x6a21('0x3a')]),_0x185b29);if(_0x2e886e[_0x6a21('0x31')][_0x6a21('0x3b')]){_0x2f1ac0['where']=_['merge'](_0x2f1ac0['where'],{'$or':_[_0x6a21('0x2a')](_0x185b29,function(_0x445513){if(_0x445513['type']!==_0x6a21('0x3c')){var _0x1c06f6={};_0x1c06f6[_0x445513[_0x6a21('0x27')]]={'$like':'%'+_0x2e886e['query'][_0x6a21('0x3b')]+'%'};return _0x1c06f6;}})});}_0x2f1ac0=_['merge']({},_0x2f1ac0,_0x2e886e[_0x6a21('0x3d')]);var _0x3b7754={'where':_0x2f1ac0[_0x6a21('0x38')]};return db[_0x6a21('0x2b')][_0x6a21('0x1c')](_0x3b7754)[_0x6a21('0x22')](function(_0x1897b8){_0x1014a9[_0x6a21('0x1c')]=_0x1897b8;if(_0x2e886e['query'][_0x6a21('0x3e')]){_0x2f1ac0['include']=[{'all':!![]}];}return db[_0x6a21('0x2b')][_0x6a21('0x3f')](_0x2f1ac0);})[_0x6a21('0x22')](function(_0xece6c5){_0x1014a9[_0x6a21('0x40')]=_0xece6c5;return _0x1014a9;})['then'](respondWithFilteredResult(_0x1284cb,_0x2f1ac0))[_0x6a21('0x41')](handleError(_0x1284cb,null));};exports[_0x6a21('0x42')]=function(_0x319a64,_0x221cb6){var _0x2bd7e6={'raw':!![],'where':{'id':_0x319a64[_0x6a21('0x43')]['id']}},_0x24bfaa={};_0x24bfaa[_0x6a21('0x2f')]=_[_0x6a21('0x30')](db[_0x6a21('0x2b')][_0x6a21('0x2c')]);_0x24bfaa[_0x6a21('0x31')]=_['keys'](_0x319a64[_0x6a21('0x31')]);_0x24bfaa['filters']=_['intersection'](_0x24bfaa['model'],_0x24bfaa[_0x6a21('0x31')]);_0x2bd7e6[_0x6a21('0x32')]=_[_0x6a21('0x44')](_0x24bfaa['model'],qs[_0x6a21('0x33')](_0x319a64[_0x6a21('0x31')][_0x6a21('0x33')]));_0x2bd7e6[_0x6a21('0x32')]=_0x2bd7e6[_0x6a21('0x32')][_0x6a21('0x34')]?_0x2bd7e6[_0x6a21('0x32')]:_0x24bfaa['model'];if(_0x319a64['query'][_0x6a21('0x3e')]){_0x2bd7e6[_0x6a21('0x45')]=[{'all':!![]}];}_0x2bd7e6=_['merge']({},_0x2bd7e6,_0x319a64[_0x6a21('0x3d')]);return db[_0x6a21('0x2b')]['find'](_0x2bd7e6)[_0x6a21('0x22')](handleEntityNotFound(_0x221cb6,null))['then'](respondWithResult(_0x221cb6,null))[_0x6a21('0x41')](handleError(_0x221cb6,null));};exports[_0x6a21('0x46')]=function(_0x246004,_0x4cf5b1){return db[_0x6a21('0x2b')][_0x6a21('0x46')](_0x246004[_0x6a21('0x47')],{})[_0x6a21('0x22')](respondWithResult(_0x4cf5b1,0xc9))[_0x6a21('0x41')](handleError(_0x4cf5b1,null));};exports['update']=function(_0x538087,_0x4d3444){if(_0x538087[_0x6a21('0x47')]['id']){delete _0x538087[_0x6a21('0x47')]['id'];}return db['ZendeskField']['find']({'where':{'id':_0x538087[_0x6a21('0x43')]['id']}})[_0x6a21('0x22')](handleEntityNotFound(_0x4d3444,null))['then'](saveUpdates(_0x538087['body'],null))[_0x6a21('0x22')](respondWithResult(_0x4d3444,null))[_0x6a21('0x41')](handleError(_0x4d3444,null));};exports[_0x6a21('0x23')]=function(_0x2ea223,_0x75c1a){return db[_0x6a21('0x2b')][_0x6a21('0x48')]({'where':{'id':_0x2ea223[_0x6a21('0x43')]['id']}})[_0x6a21('0x22')](handleEntityNotFound(_0x75c1a,null))[_0x6a21('0x22')](removeEntity(_0x75c1a,null))[_0x6a21('0x41')](handleError(_0x75c1a,null));};
\ No newline at end of file
+var _0x2ba6=['send','map','ZendeskField','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','VIRTUAL','merge','includeAll','include','findAll','rows','catch','params','create','body','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','lodash','squel','jsforce','desk.js','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','then','error','name'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x2ba6,0x135));var _0x62ba=function(_0x17b20d,_0x1ebf66){_0x17b20d=_0x17b20d-0x0;var _0x49bb21=_0x2ba6[_0x17b20d];return _0x49bb21;};'use strict';var emlformat=require(_0x62ba('0x0'));var rimraf=require(_0x62ba('0x1'));var zipdir=require(_0x62ba('0x2'));var jsonpatch=require(_0x62ba('0x3'));var rp=require(_0x62ba('0x4'));var moment=require(_0x62ba('0x5'));var BPromise=require(_0x62ba('0x6'));var Mustache=require(_0x62ba('0x7'));var util=require(_0x62ba('0x8'));var path=require('path');var sox=require(_0x62ba('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x62ba('0xa'));var squel=require(_0x62ba('0xb'));var crypto=require('crypto');var jsforce=require(_0x62ba('0xc'));var deskjs=require(_0x62ba('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x62ba('0xe'));var as=require(_0x62ba('0xf'));var hardwareService=require(_0x62ba('0x10'));var logger=require(_0x62ba('0x11'))(_0x62ba('0x12'));var utils=require('../../config/utils');var config=require(_0x62ba('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x62ba('0x14'))['db'];function respondWithStatusCode(_0x132513,_0x39db78){_0x39db78=_0x39db78||0xcc;return function(_0x2c6d55){if(_0x2c6d55){return _0x132513[_0x62ba('0x15')](_0x39db78);}return _0x132513[_0x62ba('0x16')](_0x39db78)[_0x62ba('0x17')]();};}function respondWithResult(_0x140e59,_0x3374c8){_0x3374c8=_0x3374c8||0xc8;return function(_0x3709c8){if(_0x3709c8){return _0x140e59['status'](_0x3374c8)[_0x62ba('0x18')](_0x3709c8);}};}function respondWithFilteredResult(_0x2ca2a9,_0x2ada50){return function(_0x47f66c){if(_0x47f66c){var _0x477d40=typeof _0x2ada50[_0x62ba('0x19')]===_0x62ba('0x1a')&&typeof _0x2ada50[_0x62ba('0x1b')]===_0x62ba('0x1a');var _0x17063a=_0x47f66c[_0x62ba('0x1c')];var _0x489b94=_0x477d40?0x0:_0x2ada50[_0x62ba('0x19')];var _0x5913ee=_0x477d40?_0x47f66c['count']:_0x2ada50[_0x62ba('0x19')]+_0x2ada50[_0x62ba('0x1b')];var _0x2b1583;if(_0x5913ee>=_0x17063a){_0x5913ee=_0x17063a;_0x2b1583=0xc8;}else{_0x2b1583=0xce;}_0x2ca2a9['status'](_0x2b1583);return _0x2ca2a9['set']('Content-Range',_0x489b94+'-'+_0x5913ee+'/'+_0x17063a)[_0x62ba('0x18')](_0x47f66c);}return null;};}function patchUpdates(_0x3829e7){return function(_0x173e6c){try{jsonpatch[_0x62ba('0x1d')](_0x173e6c,_0x3829e7,!![]);}catch(_0x590c52){return BPromise[_0x62ba('0x1e')](_0x590c52);}return _0x173e6c[_0x62ba('0x1f')]();};}function saveUpdates(_0x3b6828,_0x28a1f9){return function(_0x3f60e3){if(_0x3f60e3){return _0x3f60e3[_0x62ba('0x20')](_0x3b6828)[_0x62ba('0x21')](function(_0x8409d7){return _0x8409d7;});}return null;};}function removeEntity(_0x629d1,_0x44438e){return function(_0x12a45c){if(_0x12a45c){return _0x12a45c['destroy']()['then'](function(){_0x629d1['status'](0xcc)[_0x62ba('0x17')]();});}};}function handleEntityNotFound(_0x1dd45b,_0x4b85f2){return function(_0x3ddee3){if(!_0x3ddee3){_0x1dd45b[_0x62ba('0x15')](0x194);}return _0x3ddee3;};}function handleError(_0x1de4ea,_0x744203){_0x744203=_0x744203||0x1f4;return function(_0x1ad93c){logger[_0x62ba('0x22')](_0x1ad93c['stack']);if(_0x1ad93c['name']){delete _0x1ad93c[_0x62ba('0x23')];}_0x1de4ea['status'](_0x744203)[_0x62ba('0x24')](_0x1ad93c);};}exports['index']=function(_0x903dde,_0x4b4301){var _0x216bd6={},_0x1f4602={},_0x56f923={'count':0x0,'rows':[]};var _0x36d744=_[_0x62ba('0x25')](db[_0x62ba('0x26')][_0x62ba('0x27')],function(_0x111b2f){return{'name':_0x111b2f[_0x62ba('0x28')],'type':_0x111b2f[_0x62ba('0x29')][_0x62ba('0x2a')]};});_0x1f4602[_0x62ba('0x2b')]=_[_0x62ba('0x25')](_0x36d744,_0x62ba('0x23'));_0x1f4602[_0x62ba('0x2c')]=_[_0x62ba('0x2d')](_0x903dde[_0x62ba('0x2c')]);_0x1f4602[_0x62ba('0x2e')]=_['intersection'](_0x1f4602[_0x62ba('0x2b')],_0x1f4602[_0x62ba('0x2c')]);_0x216bd6[_0x62ba('0x2f')]=_[_0x62ba('0x30')](_0x1f4602['model'],qs[_0x62ba('0x31')](_0x903dde['query'][_0x62ba('0x31')]));_0x216bd6[_0x62ba('0x2f')]=_0x216bd6[_0x62ba('0x2f')][_0x62ba('0x32')]?_0x216bd6['attributes']:_0x1f4602[_0x62ba('0x2b')];if(!_0x903dde[_0x62ba('0x2c')][_0x62ba('0x33')](_0x62ba('0x34'))){_0x216bd6[_0x62ba('0x1b')]=qs[_0x62ba('0x1b')](_0x903dde[_0x62ba('0x2c')][_0x62ba('0x1b')]);_0x216bd6[_0x62ba('0x19')]=qs[_0x62ba('0x19')](_0x903dde['query'][_0x62ba('0x19')]);}_0x216bd6[_0x62ba('0x35')]=qs[_0x62ba('0x36')](_0x903dde[_0x62ba('0x2c')][_0x62ba('0x36')]);_0x216bd6['where']=qs[_0x62ba('0x2e')](_['pick'](_0x903dde[_0x62ba('0x2c')],_0x1f4602['filters']),_0x36d744);if(_0x903dde[_0x62ba('0x2c')][_0x62ba('0x37')]){_0x216bd6[_0x62ba('0x38')]=_['merge'](_0x216bd6[_0x62ba('0x38')],{'$or':_['map'](_0x36d744,function(_0x544400){if(_0x544400['type']!==_0x62ba('0x39')){var _0x39b2a4={};_0x39b2a4[_0x544400[_0x62ba('0x23')]]={'$like':'%'+_0x903dde[_0x62ba('0x2c')][_0x62ba('0x37')]+'%'};return _0x39b2a4;}})});}_0x216bd6=_[_0x62ba('0x3a')]({},_0x216bd6,_0x903dde['options']);var _0x59fb7d={'where':_0x216bd6[_0x62ba('0x38')]};return db[_0x62ba('0x26')]['count'](_0x59fb7d)[_0x62ba('0x21')](function(_0x1fdeac){_0x56f923[_0x62ba('0x1c')]=_0x1fdeac;if(_0x903dde[_0x62ba('0x2c')][_0x62ba('0x3b')]){_0x216bd6[_0x62ba('0x3c')]=[{'all':!![]}];}return db[_0x62ba('0x26')][_0x62ba('0x3d')](_0x216bd6);})[_0x62ba('0x21')](function(_0x449251){_0x56f923[_0x62ba('0x3e')]=_0x449251;return _0x56f923;})[_0x62ba('0x21')](respondWithFilteredResult(_0x4b4301,_0x216bd6))[_0x62ba('0x3f')](handleError(_0x4b4301,null));};exports['show']=function(_0x33a903,_0x40d364){var _0x5570ff={'raw':!![],'where':{'id':_0x33a903[_0x62ba('0x40')]['id']}},_0x4ea475={};_0x4ea475[_0x62ba('0x2b')]=_['keys'](db[_0x62ba('0x26')][_0x62ba('0x27')]);_0x4ea475['query']=_[_0x62ba('0x2d')](_0x33a903['query']);_0x4ea475[_0x62ba('0x2e')]=_['intersection'](_0x4ea475[_0x62ba('0x2b')],_0x4ea475[_0x62ba('0x2c')]);_0x5570ff[_0x62ba('0x2f')]=_['intersection'](_0x4ea475[_0x62ba('0x2b')],qs[_0x62ba('0x31')](_0x33a903['query']['fields']));_0x5570ff['attributes']=_0x5570ff[_0x62ba('0x2f')]['length']?_0x5570ff[_0x62ba('0x2f')]:_0x4ea475[_0x62ba('0x2b')];if(_0x33a903[_0x62ba('0x2c')][_0x62ba('0x3b')]){_0x5570ff['include']=[{'all':!![]}];}_0x5570ff=_[_0x62ba('0x3a')]({},_0x5570ff,_0x33a903['options']);return db[_0x62ba('0x26')]['find'](_0x5570ff)[_0x62ba('0x21')](handleEntityNotFound(_0x40d364,null))[_0x62ba('0x21')](respondWithResult(_0x40d364,null))['catch'](handleError(_0x40d364,null));};exports[_0x62ba('0x41')]=function(_0x3be5d1,_0x143537){return db['ZendeskField'][_0x62ba('0x41')](_0x3be5d1[_0x62ba('0x42')],{})[_0x62ba('0x21')](respondWithResult(_0x143537,0xc9))[_0x62ba('0x3f')](handleError(_0x143537,null));};exports['update']=function(_0x2e3849,_0x159485){if(_0x2e3849[_0x62ba('0x42')]['id']){delete _0x2e3849[_0x62ba('0x42')]['id'];}return db[_0x62ba('0x26')][_0x62ba('0x43')]({'where':{'id':_0x2e3849[_0x62ba('0x40')]['id']}})['then'](handleEntityNotFound(_0x159485,null))[_0x62ba('0x21')](saveUpdates(_0x2e3849['body'],null))[_0x62ba('0x21')](respondWithResult(_0x159485,null))[_0x62ba('0x3f')](handleError(_0x159485,null));};exports[_0x62ba('0x44')]=function(_0xfcf3f4,_0x1365e5){return db['ZendeskField'][_0x62ba('0x43')]({'where':{'id':_0xfcf3f4[_0x62ba('0x40')]['id']}})[_0x62ba('0x21')](handleEntityNotFound(_0x1365e5,null))[_0x62ba('0x21')](removeEntity(_0x1365e5,null))[_0x62ba('0x3f')](handleError(_0x1365e5,null));};
\ No newline at end of file
index fda7ad1..26ed21a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x203a=['define','zendesk_unique_index','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intZendeskField.attributes','exports'];(function(_0x4195dc,_0x3ec874){var _0x13281d=function(_0x18547f){while(--_0x18547f){_0x4195dc['push'](_0x4195dc['shift']());}};_0x13281d(++_0x3ec874);}(_0x203a,0x16e));var _0xa203=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x203a[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0xa203('0x0'));var util=require(_0xa203('0x1'));var logger=require(_0xa203('0x2'))(_0xa203('0x3'));var moment=require(_0xa203('0x4'));var BPromise=require(_0xa203('0x5'));var rp=require(_0xa203('0x6'));var fs=require('fs');var path=require(_0xa203('0x7'));var rimraf=require(_0xa203('0x8'));var config=require('../../config/environment');var attributes=require(_0xa203('0x9'));module[_0xa203('0xa')]=function(_0x13aed6,_0x26a3ce){return _0x13aed6[_0xa203('0xb')]('ZendeskField',attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':_0xa203('0xc'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe095=['path','rimraf','../../config/environment','./intZendeskField.attributes','exports','define','ZendeskField','int_zendesk_fields','idField','FieldId','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x20ac14,_0x26cdc9){var _0x1f9e71=function(_0x5f182f){while(--_0x5f182f){_0x20ac14['push'](_0x20ac14['shift']());}};_0x1f9e71(++_0x26cdc9);}(_0xe095,0xca));var _0x5e09=function(_0x1a10d9,_0x16bdc5){_0x1a10d9=_0x1a10d9-0x0;var _0x5625b5=_0xe095[_0x1a10d9];return _0x5625b5;};'use strict';var _=require('lodash');var util=require(_0x5e09('0x0'));var logger=require(_0x5e09('0x1'))(_0x5e09('0x2'));var moment=require(_0x5e09('0x3'));var BPromise=require(_0x5e09('0x4'));var rp=require(_0x5e09('0x5'));var fs=require('fs');var path=require(_0x5e09('0x6'));var rimraf=require(_0x5e09('0x7'));var config=require(_0x5e09('0x8'));var attributes=require(_0x5e09('0x9'));module[_0x5e09('0xa')]=function(_0x83e2de,_0x4a90ca){return _0x83e2de[_0x5e09('0xb')](_0x5e09('0xc'),attributes,{'tableName':_0x5e09('0xd'),'paranoid':![],'indexes':[{'name':'zendesk_unique_index','fields':[_0x5e09('0xe'),_0x5e09('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 8677163..635aece 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe64c=['../../config/logger','rpc','jayson/promise','client','http','then','ZendeskField,\x20%s,\x20%s','request\x20sent','error','message','info','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe64c,0x1d5));var _0xce64=function(_0x27c7b7,_0x3bdd75){_0x27c7b7=_0x27c7b7-0x0;var _0x4a8edf=_0xe64c[_0x27c7b7];return _0x4a8edf;};'use strict';var _=require(_0xce64('0x0'));var util=require(_0xce64('0x1'));var moment=require('moment');var BPromise=require(_0xce64('0x2'));var rs=require(_0xce64('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xce64('0x4'))['db'];var utils=require(_0xce64('0x5'));var logger=require(_0xce64('0x6'))(_0xce64('0x7'));var config=require('../../config/environment');var jayson=require(_0xce64('0x8'));var client=jayson[_0xce64('0x9')][_0xce64('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2878a9,_0x37fcc2,_0x32b2e0){return new BPromise(function(_0x55da74,_0x56f55e){return client['request'](_0x2878a9,_0x32b2e0)[_0xce64('0xb')](function(_0x28d08f){logger['info'](_0xce64('0xc'),_0x37fcc2,_0xce64('0xd'));logger['debug']('ZendeskField,\x20%s,\x20%s,\x20%s',_0x37fcc2,'request\x20sent',JSON['stringify'](_0x28d08f));if(_0x28d08f[_0xce64('0xe')]){if(_0x28d08f['error']['code']===0x1f4){logger[_0xce64('0xe')](_0xce64('0xc'),_0x37fcc2,_0x28d08f[_0xce64('0xe')][_0xce64('0xf')]);return _0x56f55e(_0x28d08f[_0xce64('0xe')][_0xce64('0xf')]);}logger['error'](_0xce64('0xc'),_0x37fcc2,_0x28d08f[_0xce64('0xe')][_0xce64('0xf')]);return _0x55da74(_0x28d08f[_0xce64('0xe')]['message']);}else{logger[_0xce64('0x10')]('ZendeskField,\x20%s,\x20%s',_0x37fcc2,_0xce64('0xd'));_0x55da74(_0x28d08f[_0xce64('0x11')][_0xce64('0xf')]);}})[_0xce64('0x12')](function(_0x4c79ac){logger[_0xce64('0xe')](_0xce64('0xc'),_0x37fcc2,_0x4c79ac);_0x56f55e(_0x4c79ac);});});}
\ No newline at end of file
+var _0xd804=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xd804,0x84));var _0x4d80=function(_0x191d52,_0x250701){_0x191d52=_0x191d52-0x0;var _0x1ecc49=_0xd804[_0x191d52];return _0x1ecc49;};'use strict';var _=require('lodash');var util=require(_0x4d80('0x0'));var moment=require(_0x4d80('0x1'));var BPromise=require(_0x4d80('0x2'));var rs=require(_0x4d80('0x3'));var fs=require('fs');var Redis=require(_0x4d80('0x4'));var db=require(_0x4d80('0x5'))['db'];var utils=require(_0x4d80('0x6'));var logger=require('../../config/logger')(_0x4d80('0x7'));var config=require(_0x4d80('0x8'));var jayson=require(_0x4d80('0x9'));var client=jayson['client'][_0x4d80('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x403c1b,_0x81ce65,_0xfbf073){return new BPromise(function(_0x57c8fb,_0x37c309){return client['request'](_0x403c1b,_0xfbf073)[_0x4d80('0xb')](function(_0x937b3c){logger[_0x4d80('0xc')](_0x4d80('0xd'),_0x81ce65,_0x4d80('0xe'));logger[_0x4d80('0xf')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x81ce65,_0x4d80('0xe'),JSON[_0x4d80('0x10')](_0x937b3c));if(_0x937b3c[_0x4d80('0x11')]){if(_0x937b3c[_0x4d80('0x11')][_0x4d80('0x12')]===0x1f4){logger['error'](_0x4d80('0xd'),_0x81ce65,_0x937b3c[_0x4d80('0x11')][_0x4d80('0x13')]);return _0x37c309(_0x937b3c[_0x4d80('0x11')][_0x4d80('0x13')]);}logger[_0x4d80('0x11')]('ZendeskField,\x20%s,\x20%s',_0x81ce65,_0x937b3c[_0x4d80('0x11')]['message']);return _0x57c8fb(_0x937b3c[_0x4d80('0x11')][_0x4d80('0x13')]);}else{logger[_0x4d80('0xc')](_0x4d80('0xd'),_0x81ce65,'request\x20sent');_0x57c8fb(_0x937b3c[_0x4d80('0x14')][_0x4d80('0x13')]);}})[_0x4d80('0x15')](function(_0x5334f9){logger['error'](_0x4d80('0xd'),_0x81ce65,_0x5334f9);_0x37c309(_0x5334f9);});});}
\ No newline at end of file
index 1d2bbdc..3150e57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafdb=['show','/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','isAuthenticated','index','get','/:id'];(function(_0x5c0773,_0x5ba61b){var _0x51f829=function(_0x4c7c9e){while(--_0x4c7c9e){_0x5c0773['push'](_0x5c0773['shift']());}};_0x51f829(++_0x5ba61b);}(_0xafdb,0x88));var _0xbafd=function(_0x166742,_0x55520c){_0x166742=_0x166742-0x0;var _0xb7814a=_0xafdb[_0x166742];return _0xb7814a;};'use strict';var multer=require(_0xbafd('0x0'));var util=require(_0xbafd('0x1'));var path=require(_0xbafd('0x2'));var timeout=require(_0xbafd('0x3'));var express=require(_0xbafd('0x4'));var router=express[_0xbafd('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xbafd('0x6'));var interaction=require(_0xbafd('0x7'));var config=require(_0xbafd('0x8'));var controller=require(_0xbafd('0x9'));router['get']('/',auth[_0xbafd('0xa')](),controller[_0xbafd('0xb')]);router[_0xbafd('0xc')](_0xbafd('0xd'),auth[_0xbafd('0xa')](),controller[_0xbafd('0xe')]);router[_0xbafd('0xc')](_0xbafd('0xf'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0xbafd('0xc')](_0xbafd('0x10'),auth[_0xbafd('0xa')](),controller[_0xbafd('0x11')]);router[_0xbafd('0x12')]('/',auth[_0xbafd('0xa')](),controller[_0xbafd('0x13')]);router[_0xbafd('0x12')](_0xbafd('0xf'),auth[_0xbafd('0xa')](),controller[_0xbafd('0x14')]);router['put'](_0xbafd('0xd'),auth[_0xbafd('0xa')](),controller[_0xbafd('0x15')]);router[_0xbafd('0x16')](_0xbafd('0xd'),auth[_0xbafd('0xa')](),controller[_0xbafd('0x17')]);module[_0xbafd('0x18')]=router;
\ No newline at end of file
+var _0x6ef2=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','index','isAuthenticated','show','/:id/configurations','getConfigurations','getFields','post','addConfiguration','/:id','update','delete'];(function(_0x4e381e,_0x2c20c1){var _0x3a78e6=function(_0xca793e){while(--_0xca793e){_0x4e381e['push'](_0x4e381e['shift']());}};_0x3a78e6(++_0x2c20c1);}(_0x6ef2,0x98));var _0x26ef=function(_0x4c138a,_0xa951e7){_0x4c138a=_0x4c138a-0x0;var _0x41ef71=_0x6ef2[_0x4c138a];return _0x41ef71;};'use strict';var multer=require(_0x26ef('0x0'));var util=require(_0x26ef('0x1'));var path=require(_0x26ef('0x2'));var timeout=require(_0x26ef('0x3'));var express=require(_0x26ef('0x4'));var router=express[_0x26ef('0x5')]();var fs_extra=require(_0x26ef('0x6'));var auth=require(_0x26ef('0x7'));var interaction=require(_0x26ef('0x8'));var config=require(_0x26ef('0x9'));var controller=require(_0x26ef('0xa'));router[_0x26ef('0xb')]('/',auth['isAuthenticated'](),controller[_0x26ef('0xc')]);router[_0x26ef('0xb')]('/:id',auth[_0x26ef('0xd')](),controller[_0x26ef('0xe')]);router[_0x26ef('0xb')](_0x26ef('0xf'),auth['isAuthenticated'](),controller[_0x26ef('0x10')]);router[_0x26ef('0xb')]('/:id/fields',auth[_0x26ef('0xd')](),controller[_0x26ef('0x11')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x26ef('0x12')]('/:id/configurations',auth[_0x26ef('0xd')](),controller[_0x26ef('0x13')]);router['put'](_0x26ef('0x14'),auth['isAuthenticated'](),controller[_0x26ef('0x15')]);router[_0x26ef('0x16')](_0x26ef('0x14'),auth[_0x26ef('0xd')](),controller[_0x26ef('0x17')]);module[_0x26ef('0x18')]=router;
\ No newline at end of file
index 446c7b7..206749a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['STRING','sequelize','exports'];(function(_0x1ca4cc,_0x402c23){var _0x108010=function(_0x4c5082){while(--_0x4c5082){_0x1ca4cc['push'](_0x1ca4cc['shift']());}};_0x108010(++_0x402c23);}(_0x54ef,0x112));var _0xf54e=function(_0x58e0a4,_0x1c49e4){_0x58e0a4=_0x58e0a4-0x0;var _0xb6225d=_0x54ef[_0x58e0a4];return _0xb6225d;};'use strict';var Sequelize=require(_0xf54e('0x0'));module[_0xf54e('0x1')]={'name':{'type':Sequelize[_0xf54e('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xf54e('0x2')]},'zone':{'type':Sequelize[_0xf54e('0x2')]},'clientId':{'type':Sequelize[_0xf54e('0x2')]},'clientSecret':{'type':Sequelize[_0xf54e('0x2')]},'serverUrl':{'type':Sequelize[_0xf54e('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0xf54e('0x2')]},'refreshToken':{'type':Sequelize[_0xf54e('0x2')]}};
\ No newline at end of file
+var _0x9bde=['STRING','exports'];(function(_0x43f881,_0xd6e5a2){var _0x365c14=function(_0x50d386){while(--_0x50d386){_0x43f881['push'](_0x43f881['shift']());}};_0x365c14(++_0xd6e5a2);}(_0x9bde,0xe1));var _0xe9bd=function(_0x2e15fc,_0x325473){_0x2e15fc=_0x2e15fc-0x0;var _0x389867=_0x9bde[_0x2e15fc];return _0x389867;};'use strict';var Sequelize=require('sequelize');module[_0xe9bd('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xe9bd('0x1')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0xe9bd('0x1')]},'clientId':{'type':Sequelize[_0xe9bd('0x1')]},'clientSecret':{'type':Sequelize[_0xe9bd('0x1')]},'serverUrl':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'code':{'type':Sequelize[_0xe9bd('0x1')]},'refreshToken':{'type':Sequelize[_0xe9bd('0x1')]}};
\ No newline at end of file
index 4a3f9f2..5e98b48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eec=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','then','error','stack','name','map','rawAttributes','fieldName','type','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','ZohoAccount','findAll','rows','catch','show','params','length','create','body','update','find','destroy','getConfigurations','findOne','ZohoConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','refreshToken','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','serverUrl','code','zoho.eu','com','substring','lastIndexOf','GET','format','Calls','response','message','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','push','custom_field','data_type','pick_list_values','test','stringify','send','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x12833e,_0x302abb){var _0xe6208a=function(_0x1ca6bc){while(--_0x1ca6bc){_0x12833e['push'](_0x12833e['shift']());}};_0xe6208a(++_0x302abb);}(_0x3eec,0xf0));var _0xc3ee=function(_0x248da7,_0x51de38){_0x248da7=_0x248da7-0x0;var _0x25b6ab=_0x3eec[_0x248da7];return _0x25b6ab;};'use strict';var emlformat=require(_0xc3ee('0x0'));var rimraf=require(_0xc3ee('0x1'));var zipdir=require(_0xc3ee('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc3ee('0x3'));var moment=require('moment');var BPromise=require(_0xc3ee('0x4'));var Mustache=require(_0xc3ee('0x5'));var util=require(_0xc3ee('0x6'));var path=require(_0xc3ee('0x7'));var sox=require(_0xc3ee('0x8'));var csv=require(_0xc3ee('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc3ee('0xa'));var squel=require('squel');var crypto=require(_0xc3ee('0xb'));var jsforce=require(_0xc3ee('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xc3ee('0x9'));var querystring=require(_0xc3ee('0xd'));var Papa=require(_0xc3ee('0xe'));var Redis=require(_0xc3ee('0xf'));var authService=require(_0xc3ee('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xc3ee('0x11'));var hardwareService=require(_0xc3ee('0x12'));var logger=require(_0xc3ee('0x13'))(_0xc3ee('0x14'));var utils=require(_0xc3ee('0x15'));var config=require(_0xc3ee('0x16'));var licenseUtil=require(_0xc3ee('0x17'));var db=require(_0xc3ee('0x18'))['db'];var integrations=require(_0xc3ee('0x19'));function respondWithStatusCode(_0x5c9ad8,_0x4f7906){_0x4f7906=_0x4f7906||0xcc;return function(_0x5a27b1){if(_0x5a27b1){return _0x5c9ad8[_0xc3ee('0x1a')](_0x4f7906);}return _0x5c9ad8[_0xc3ee('0x1b')](_0x4f7906)[_0xc3ee('0x1c')]();};}function respondWithResult(_0x11701c,_0x2a398f){_0x2a398f=_0x2a398f||0xc8;return function(_0xa088a3){if(_0xa088a3){return _0x11701c['status'](_0x2a398f)[_0xc3ee('0x1d')](_0xa088a3);}};}function respondWithFilteredResult(_0xceb7c,_0x4aaa0f){return function(_0xb278cd){if(_0xb278cd){var _0x592a64=typeof _0x4aaa0f[_0xc3ee('0x1e')]===_0xc3ee('0x1f')&&typeof _0x4aaa0f[_0xc3ee('0x20')]==='undefined';var _0x5c80e9=_0xb278cd[_0xc3ee('0x21')];var _0x296487=_0x592a64?0x0:_0x4aaa0f['offset'];var _0x27ac08=_0x592a64?_0xb278cd[_0xc3ee('0x21')]:_0x4aaa0f['offset']+_0x4aaa0f[_0xc3ee('0x20')];var _0x1ff73f;if(_0x27ac08>=_0x5c80e9){_0x27ac08=_0x5c80e9;_0x1ff73f=0xc8;}else{_0x1ff73f=0xce;}_0xceb7c[_0xc3ee('0x1b')](_0x1ff73f);return _0xceb7c[_0xc3ee('0x22')](_0xc3ee('0x23'),_0x296487+'-'+_0x27ac08+'/'+_0x5c80e9)['json'](_0xb278cd);}return null;};}function patchUpdates(_0x24c1c0){return function(_0x324c28){try{jsonpatch['apply'](_0x324c28,_0x24c1c0,!![]);}catch(_0x57ae38){return BPromise['reject'](_0x57ae38);}return _0x324c28[_0xc3ee('0x24')]();};}function saveUpdates(_0x2b38ef,_0x1c59fd){return function(_0x829c1c){if(_0x829c1c){return _0x829c1c['update'](_0x2b38ef)[_0xc3ee('0x25')](function(_0x36e6a8){return _0x36e6a8;});}return null;};}function removeEntity(_0x2a43fb,_0x322076){return function(_0x47256f){if(_0x47256f){return _0x47256f['destroy']()[_0xc3ee('0x25')](function(){_0x2a43fb[_0xc3ee('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x459c5a,_0x157489){return function(_0xc45f3f){if(!_0xc45f3f){_0x459c5a[_0xc3ee('0x1a')](0x194);}return _0xc45f3f;};}function handleError(_0xb4ffff,_0x45747d){_0x45747d=_0x45747d||0x1f4;return function(_0xe275b){logger[_0xc3ee('0x26')](_0xe275b[_0xc3ee('0x27')]);if(_0xe275b[_0xc3ee('0x28')]){delete _0xe275b['name'];}_0xb4ffff[_0xc3ee('0x1b')](_0x45747d)['send'](_0xe275b);};}exports['index']=function(_0x425555,_0x4613ba){var _0x3c43a3={},_0x4dfa53={},_0x18de1a={'count':0x0,'rows':[]};var _0x4d4d8e=_[_0xc3ee('0x29')](db['ZohoAccount'][_0xc3ee('0x2a')],function(_0xef1e7c){return{'name':_0xef1e7c[_0xc3ee('0x2b')],'type':_0xef1e7c[_0xc3ee('0x2c')]['key']};});_0x4dfa53[_0xc3ee('0x2d')]=_['map'](_0x4d4d8e,_0xc3ee('0x28'));_0x4dfa53[_0xc3ee('0x2e')]=_[_0xc3ee('0x2f')](_0x425555[_0xc3ee('0x2e')]);_0x4dfa53['filters']=_[_0xc3ee('0x30')](_0x4dfa53['model'],_0x4dfa53[_0xc3ee('0x2e')]);_0x3c43a3['attributes']=_[_0xc3ee('0x30')](_0x4dfa53[_0xc3ee('0x2d')],qs['fields'](_0x425555['query'][_0xc3ee('0x31')]));_0x3c43a3[_0xc3ee('0x32')]=_0x3c43a3[_0xc3ee('0x32')]['length']?_0x3c43a3[_0xc3ee('0x32')]:_0x4dfa53[_0xc3ee('0x2d')];if(!_0x425555['query'][_0xc3ee('0x33')](_0xc3ee('0x34'))){_0x3c43a3[_0xc3ee('0x20')]=qs[_0xc3ee('0x20')](_0x425555['query'][_0xc3ee('0x20')]);_0x3c43a3['offset']=qs['offset'](_0x425555[_0xc3ee('0x2e')][_0xc3ee('0x1e')]);}_0x3c43a3[_0xc3ee('0x35')]=qs[_0xc3ee('0x36')](_0x425555[_0xc3ee('0x2e')]['sort']);_0x3c43a3[_0xc3ee('0x37')]=qs[_0xc3ee('0x38')](_[_0xc3ee('0x39')](_0x425555[_0xc3ee('0x2e')],_0x4dfa53[_0xc3ee('0x38')]),_0x4d4d8e);if(_0x425555[_0xc3ee('0x2e')][_0xc3ee('0x3a')]){_0x3c43a3[_0xc3ee('0x37')]=_[_0xc3ee('0x3b')](_0x3c43a3[_0xc3ee('0x37')],{'$or':_[_0xc3ee('0x29')](_0x4d4d8e,function(_0x3a23ad){if(_0x3a23ad[_0xc3ee('0x2c')]!==_0xc3ee('0x3c')){var _0x29a25a={};_0x29a25a[_0x3a23ad[_0xc3ee('0x28')]]={'$like':'%'+_0x425555['query'][_0xc3ee('0x3a')]+'%'};return _0x29a25a;}})});}_0x3c43a3=_[_0xc3ee('0x3b')]({},_0x3c43a3,_0x425555[_0xc3ee('0x3d')]);var _0x5a9caf={'where':_0x3c43a3[_0xc3ee('0x37')]};return db['ZohoAccount'][_0xc3ee('0x21')](_0x5a9caf)[_0xc3ee('0x25')](function(_0x10f5b9){_0x18de1a['count']=_0x10f5b9;if(_0x425555[_0xc3ee('0x2e')][_0xc3ee('0x3e')]){_0x3c43a3[_0xc3ee('0x3f')]=[{'all':!![]}];}return db[_0xc3ee('0x40')][_0xc3ee('0x41')](_0x3c43a3);})['then'](function(_0x1fb563){_0x18de1a[_0xc3ee('0x42')]=_0x1fb563;return _0x18de1a;})['then'](respondWithFilteredResult(_0x4613ba,_0x3c43a3))[_0xc3ee('0x43')](handleError(_0x4613ba,null));};exports[_0xc3ee('0x44')]=function(_0x41fa0e,_0x44801c){var _0x2c8cce={'raw':![],'where':{'id':_0x41fa0e[_0xc3ee('0x45')]['id']}},_0x28161f={};_0x28161f['model']=_[_0xc3ee('0x2f')](db['ZohoAccount'][_0xc3ee('0x2a')]);_0x28161f[_0xc3ee('0x2e')]=_['keys'](_0x41fa0e[_0xc3ee('0x2e')]);_0x28161f[_0xc3ee('0x38')]=_[_0xc3ee('0x30')](_0x28161f[_0xc3ee('0x2d')],_0x28161f['query']);_0x2c8cce[_0xc3ee('0x32')]=_[_0xc3ee('0x30')](_0x28161f[_0xc3ee('0x2d')],qs[_0xc3ee('0x31')](_0x41fa0e[_0xc3ee('0x2e')][_0xc3ee('0x31')]));_0x2c8cce[_0xc3ee('0x32')]=_0x2c8cce[_0xc3ee('0x32')][_0xc3ee('0x46')]?_0x2c8cce[_0xc3ee('0x32')]:_0x28161f[_0xc3ee('0x2d')];if(_0x41fa0e[_0xc3ee('0x2e')][_0xc3ee('0x3e')]){_0x2c8cce[_0xc3ee('0x3f')]=[{'all':!![]}];}_0x2c8cce=_['merge']({},_0x2c8cce,_0x41fa0e[_0xc3ee('0x3d')]);return db[_0xc3ee('0x40')]['find'](_0x2c8cce)['then'](handleEntityNotFound(_0x44801c,null))[_0xc3ee('0x25')](respondWithResult(_0x44801c,null))['catch'](handleError(_0x44801c,null));};exports[_0xc3ee('0x47')]=function(_0x5d4b78,_0x284ec6){return db[_0xc3ee('0x40')][_0xc3ee('0x47')](_0x5d4b78[_0xc3ee('0x48')],{})[_0xc3ee('0x25')](respondWithResult(_0x284ec6,0xc9))[_0xc3ee('0x43')](handleError(_0x284ec6,null));};exports[_0xc3ee('0x49')]=function(_0xb70a5b,_0x427f62){if(_0xb70a5b[_0xc3ee('0x48')]['id']){delete _0xb70a5b[_0xc3ee('0x48')]['id'];}return db[_0xc3ee('0x40')][_0xc3ee('0x4a')]({'where':{'id':_0xb70a5b['params']['id']}})['then'](handleEntityNotFound(_0x427f62,null))[_0xc3ee('0x25')](saveUpdates(_0xb70a5b['body'],null))[_0xc3ee('0x25')](respondWithResult(_0x427f62,null))[_0xc3ee('0x43')](handleError(_0x427f62,null));};exports[_0xc3ee('0x4b')]=function(_0x3f5a3c,_0x429754){return db[_0xc3ee('0x40')][_0xc3ee('0x4a')]({'where':{'id':_0x3f5a3c[_0xc3ee('0x45')]['id']}})[_0xc3ee('0x25')](handleEntityNotFound(_0x429754,null))[_0xc3ee('0x25')](removeEntity(_0x429754,null))[_0xc3ee('0x43')](handleError(_0x429754,null));};exports[_0xc3ee('0x4c')]=function(_0x1970d1,_0x1f6191,_0x461f84){var _0xccebcb={};var _0x364a42={};var _0x12fde4;var _0x49c467;return db['ZohoAccount'][_0xc3ee('0x4d')]({'where':{'id':_0x1970d1[_0xc3ee('0x45')]['id']}})['then'](handleEntityNotFound(_0x1f6191,null))[_0xc3ee('0x25')](function(_0x41be0b){if(_0x41be0b){_0x12fde4=_0x41be0b;_0x364a42[_0xc3ee('0x2d')]=_['keys'](db[_0xc3ee('0x4e')][_0xc3ee('0x2a')]);_0x364a42[_0xc3ee('0x2e')]=_[_0xc3ee('0x2f')](_0x1970d1[_0xc3ee('0x2e')]);_0x364a42[_0xc3ee('0x38')]=_[_0xc3ee('0x30')](_0x364a42[_0xc3ee('0x2d')],_0x364a42[_0xc3ee('0x2e')]);_0xccebcb[_0xc3ee('0x32')]=_[_0xc3ee('0x30')](_0x364a42['model'],qs['fields'](_0x1970d1[_0xc3ee('0x2e')]['fields']));_0xccebcb[_0xc3ee('0x32')]=_0xccebcb[_0xc3ee('0x32')][_0xc3ee('0x46')]?_0xccebcb['attributes']:_0x364a42[_0xc3ee('0x2d')];_0xccebcb[_0xc3ee('0x35')]=qs[_0xc3ee('0x36')](_0x1970d1[_0xc3ee('0x2e')][_0xc3ee('0x36')]);_0xccebcb[_0xc3ee('0x37')]=qs[_0xc3ee('0x38')](_[_0xc3ee('0x39')](_0x1970d1[_0xc3ee('0x2e')],_0x364a42[_0xc3ee('0x38')]));if(_0x1970d1['query']['filter']){_0xccebcb['where']=_[_0xc3ee('0x3b')](_0xccebcb[_0xc3ee('0x37')],{'$or':_[_0xc3ee('0x29')](_0xccebcb['attributes'],function(_0xac170b){var _0x54c851={};_0x54c851[_0xac170b]={'$like':'%'+_0x1970d1[_0xc3ee('0x2e')][_0xc3ee('0x3a')]+'%'};return _0x54c851;})});}_0xccebcb=_['merge']({},_0xccebcb,_0x1970d1[_0xc3ee('0x3d')]);return _0x12fde4[_0xc3ee('0x4c')](_0xccebcb);}})[_0xc3ee('0x25')](function(_0x324686){if(_0x324686){_0x49c467=_0x324686['length'];if(!_0x1970d1['query'][_0xc3ee('0x33')](_0xc3ee('0x34'))){_0xccebcb[_0xc3ee('0x20')]=qs[_0xc3ee('0x20')](_0x1970d1[_0xc3ee('0x2e')][_0xc3ee('0x20')]);_0xccebcb[_0xc3ee('0x1e')]=qs[_0xc3ee('0x1e')](_0x1970d1[_0xc3ee('0x2e')][_0xc3ee('0x1e')]);}return _0x12fde4[_0xc3ee('0x4c')](_0xccebcb);}})['then'](function(_0x1ee437){if(_0x1ee437){return _0x1ee437?{'count':_0x49c467,'rows':_0x1ee437}:null;}})[_0xc3ee('0x25')](respondWithResult(_0x1f6191,null))['catch'](handleError(_0x1f6191,null));};exports['addConfiguration']=function(_0x390beb,_0x2284b2,_0x42ab11){if(_0x390beb[_0xc3ee('0x48')]['id']){delete _0x390beb[_0xc3ee('0x48')]['id'];}return db[_0xc3ee('0x40')][_0xc3ee('0x4d')]({'where':{'id':_0x390beb['params']['id']}})[_0xc3ee('0x25')](handleEntityNotFound(_0x2284b2,null))[_0xc3ee('0x25')](function(_0x32bb7e){if(_0x32bb7e){_0x390beb['body'][_0xc3ee('0x4f')]=_0x32bb7e['id'];_0x390beb['body']['Subjects']=integrations[_0xc3ee('0x50')](_0x390beb[_0xc3ee('0x48')][_0xc3ee('0x51')],_0x390beb[_0xc3ee('0x48')]['type']);_0x390beb[_0xc3ee('0x48')][_0xc3ee('0x52')]=integrations[_0xc3ee('0x53')](_0x390beb[_0xc3ee('0x48')]['channel'],_0x390beb[_0xc3ee('0x48')][_0xc3ee('0x2c')]);return db[_0xc3ee('0x4e')][_0xc3ee('0x47')](_0x390beb['body'],{'include':[{'model':db['ZohoField'],'as':'Subjects'},{'model':db[_0xc3ee('0x54')],'as':'Descriptions'}]});}return null;})[_0xc3ee('0x25')](respondWithResult(_0x2284b2,null))[_0xc3ee('0x43')](handleError(_0x2284b2,null));};function getAccessToken(_0xc678a2){return new Promise(function(_0x10f17a,_0x492646){var _0x5dd922;switch(_0xc678a2[_0xc3ee('0x55')]){case'US':_0x5dd922=_0xc3ee('0x56');break;case'AU':_0x5dd922='https://accounts.zoho.com.au';break;case'EU':_0x5dd922=_0xc3ee('0x57');break;case'IN':_0x5dd922=_0xc3ee('0x58');break;case'CN':_0x5dd922=_0xc3ee('0x59');break;default:_0x5dd922=_0xc3ee('0x57');break;}var _0x4883bf={'method':_0xc3ee('0x5a'),'uri':_0x5dd922+'/oauth/v2/token','qs':{'refresh_token':_0xc678a2[_0xc3ee('0x5b')],'client_id':_0xc678a2[_0xc3ee('0x5c')],'client_secret':_0xc678a2[_0xc3ee('0x5d')],'grant_type':_0xc3ee('0x5e')},'json':!![]};return rp(_0x4883bf)[_0xc3ee('0x25')](function(_0xcef306){if(_0xcef306[_0xc3ee('0x5f')]){_0x10f17a(_0xcef306[_0xc3ee('0x5f')]);}else{_0x492646(_0xc3ee('0x60'));}})['catch'](function(_0x2d6b0c){_0x492646(_0x2d6b0c);});});}exports[_0xc3ee('0x61')]=function(_0x4a8e24,_0x407375,_0x782a83){var _0x135971,_0x31f7e6,_0x1065b3,_0x1d9f74,_0x3defcf;return db[_0xc3ee('0x40')]['findOne']({'where':{'id':_0x4a8e24[_0xc3ee('0x45')]['id']},'attributes':['id',_0xc3ee('0x62'),_0xc3ee('0x55'),_0xc3ee('0x5c'),'clientSecret',_0xc3ee('0x63'),_0xc3ee('0x64'),_0xc3ee('0x5b')]})[_0xc3ee('0x25')](handleEntityNotFound(_0x407375,null))[_0xc3ee('0x25')](function(_0x3bcc0c){_0x3defcf=_0x3bcc0c;_0x135971=_0x3defcf['host'];_0x31f7e6=_0x135971===_0xc3ee('0x65')?'eu':_0xc3ee('0x66');_0x1065b3=_0x3defcf[_0xc3ee('0x63')];var _0x5cee37=_0x1065b3['slice'](-0x1);if(_0x5cee37==='/'||_0x5cee37==='\x5c'||_0x5cee37===':'){_0x1065b3=_0x1065b3[_0xc3ee('0x67')](0x0,_0x1065b3[_0xc3ee('0x68')](_0x5cee37));}if(!_0x3defcf['refreshToken']){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x3defcf);})['then'](function(_0x203190){if(_0x203190){return rp({'method':_0xc3ee('0x69'),'uri':util[_0xc3ee('0x6a')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x31f7e6),'qs':{'module':_0xc3ee('0x6b')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x203190},'json':!![]});}})[_0xc3ee('0x25')](function(_0x58269c){if(_0x58269c){if(_0x58269c[_0xc3ee('0x6c')]&&_0x58269c[_0xc3ee('0x6c')][_0xc3ee('0x26')]){throw new Error(_0x58269c[_0xc3ee('0x6c')]['error'][_0xc3ee('0x6d')]);}var _0x53601b=[];var _0x5b0df0=[];var _0x5e4f72=[_0xc3ee('0x6e'),_0xc3ee('0x6f'),_0xc3ee('0x70'),_0xc3ee('0x71'),_0xc3ee('0x72'),_0xc3ee('0x73'),_0xc3ee('0x74'),_0xc3ee('0x75')];_0x5b0df0=_[_0xc3ee('0x76')](_0x58269c[_0xc3ee('0x31')],function(_0x2f791c){return _0x5e4f72[_0xc3ee('0x77')](_0x2f791c[_0xc3ee('0x78')]);});for(var _0x256bbf=0x0;_0x256bbf<_0x5b0df0['length'];_0x256bbf++){if(_0x5b0df0[_0x256bbf]['system_mandatory']===![]){_0x53601b[_0xc3ee('0x79')]({'id':_0x5b0df0[_0x256bbf]['id'],'name':_0x5b0df0[_0x256bbf]['display_label'],'custom':_0x5b0df0[_0x256bbf][_0xc3ee('0x7a')],'options':_0x5b0df0[_0x256bbf][_0xc3ee('0x7b')]==='picklist'&&_0x5b0df0[_0x256bbf]['pick_list_values'][_0xc3ee('0x46')]>-0x1?_[_0xc3ee('0x29')](_0x5b0df0[_0x256bbf][_0xc3ee('0x7c')],function(_0xe15f63){return{'name':_0xe15f63,'value':_0xe15f63};}):[]});}}return{'count':_0x53601b[_0xc3ee('0x46')],'rows':_0x53601b};}else{return{'count':0x0,'rows':[]};}})[_0xc3ee('0x25')](respondWithResult(_0x407375,null))['catch'](function(_0x382aa0){var _0x56de21=_0x4a8e24[_0xc3ee('0x2e')][_0xc3ee('0x7d')]?0x1f4:_0x382aa0['statusCode']||0x1f4;logger[_0xc3ee('0x26')]('getFields,\x20%s,\x20%s,\x20%s',_0xc3ee('0x61'),_0x56de21,JSON[_0xc3ee('0x7e')](_0x382aa0));delete _0x382aa0[_0xc3ee('0x28')];if(_0x56de21===0x191){_0x56de21=0x190;}_0x407375[_0xc3ee('0x1b')](_0x56de21)[_0xc3ee('0x7f')](_0x4a8e24[_0xc3ee('0x2e')][_0xc3ee('0x7d')]?{'message':_0xc3ee('0x80'),'statusCode':_0x382aa0[_0xc3ee('0x81')]}:_0x382aa0);});};
\ No newline at end of file
+var _0xc19c=['ZohoAccount','find','create','body','update','getConfigurations','findOne','sort','addConfiguration','AccountId','Subjects','getSubjects','getDescriptions','ZohoField','Descriptions','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','serverUrl','code','zoho.eu','com','slice','substring','GET','format','Calls','Zoho-oauthtoken\x20','response','Owner','WhoId','Call_Duration','Call_Result','remove','includes','system_mandatory','display_label','custom_field','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','lodash','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','offset','set','Content-Range','apply','reject','save','then','destroy','error','stack','send','index','map','key','model','name','query','keys','intersection','attributes','fields','nolimit','order','where','pick','filters','filter','merge','type','VIRTUAL','options','count','includeAll','include','findAll','catch','show','params','rawAttributes','length'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xc19c,0xb9));var _0xcc19=function(_0x35c795,_0x49ca73){_0x35c795=_0x35c795-0x0;var _0x3f3a1c=_0xc19c[_0x35c795];return _0x3f3a1c;};'use strict';var emlformat=require(_0xcc19('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcc19('0x1'));var jsonpatch=require(_0xcc19('0x2'));var rp=require('request-promise');var moment=require(_0xcc19('0x3'));var BPromise=require(_0xcc19('0x4'));var Mustache=require(_0xcc19('0x5'));var util=require(_0xcc19('0x6'));var path=require('path');var sox=require(_0xcc19('0x7'));var csv=require(_0xcc19('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcc19('0x9'));var squel=require('squel');var crypto=require(_0xcc19('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xcc19('0xb'));var toCsv=require(_0xcc19('0x8'));var querystring=require(_0xcc19('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xcc19('0xd'));var qs=require(_0xcc19('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcc19('0xf'));var logger=require(_0xcc19('0x10'))(_0xcc19('0x11'));var utils=require(_0xcc19('0x12'));var config=require(_0xcc19('0x13'));var licenseUtil=require(_0xcc19('0x14'));var db=require(_0xcc19('0x15'))['db'];var integrations=require(_0xcc19('0x16'));function respondWithStatusCode(_0x4701ac,_0x436b4c){_0x436b4c=_0x436b4c||0xcc;return function(_0x441510){if(_0x441510){return _0x4701ac[_0xcc19('0x17')](_0x436b4c);}return _0x4701ac[_0xcc19('0x18')](_0x436b4c)[_0xcc19('0x19')]();};}function respondWithResult(_0x3ebfb6,_0x276666){_0x276666=_0x276666||0xc8;return function(_0x54be20){if(_0x54be20){return _0x3ebfb6[_0xcc19('0x18')](_0x276666)[_0xcc19('0x1a')](_0x54be20);}};}function respondWithFilteredResult(_0x172bf3,_0x44359b){return function(_0x519f0c){if(_0x519f0c){var _0xbe40e=typeof _0x44359b['offset']===_0xcc19('0x1b')&&typeof _0x44359b[_0xcc19('0x1c')]===_0xcc19('0x1b');var _0x21989d=_0x519f0c['count'];var _0x1a6d8b=_0xbe40e?0x0:_0x44359b[_0xcc19('0x1d')];var _0x4bcc2b=_0xbe40e?_0x519f0c['count']:_0x44359b['offset']+_0x44359b[_0xcc19('0x1c')];var _0x2366c7;if(_0x4bcc2b>=_0x21989d){_0x4bcc2b=_0x21989d;_0x2366c7=0xc8;}else{_0x2366c7=0xce;}_0x172bf3[_0xcc19('0x18')](_0x2366c7);return _0x172bf3[_0xcc19('0x1e')](_0xcc19('0x1f'),_0x1a6d8b+'-'+_0x4bcc2b+'/'+_0x21989d)[_0xcc19('0x1a')](_0x519f0c);}return null;};}function patchUpdates(_0x33d612){return function(_0x3735cc){try{jsonpatch[_0xcc19('0x20')](_0x3735cc,_0x33d612,!![]);}catch(_0x180272){return BPromise[_0xcc19('0x21')](_0x180272);}return _0x3735cc[_0xcc19('0x22')]();};}function saveUpdates(_0x4f38dd,_0x2c66f1){return function(_0x2adbf1){if(_0x2adbf1){return _0x2adbf1['update'](_0x4f38dd)[_0xcc19('0x23')](function(_0x3a6dd1){return _0x3a6dd1;});}return null;};}function removeEntity(_0x2629ac,_0x4b3e35){return function(_0x21cfcc){if(_0x21cfcc){return _0x21cfcc[_0xcc19('0x24')]()['then'](function(){_0x2629ac['status'](0xcc)[_0xcc19('0x19')]();});}};}function handleEntityNotFound(_0x1fc4e2,_0x291af3){return function(_0x2cb015){if(!_0x2cb015){_0x1fc4e2[_0xcc19('0x17')](0x194);}return _0x2cb015;};}function handleError(_0x140024,_0x5907d2){_0x5907d2=_0x5907d2||0x1f4;return function(_0x1eac94){logger[_0xcc19('0x25')](_0x1eac94[_0xcc19('0x26')]);if(_0x1eac94['name']){delete _0x1eac94['name'];}_0x140024[_0xcc19('0x18')](_0x5907d2)[_0xcc19('0x27')](_0x1eac94);};}exports[_0xcc19('0x28')]=function(_0x390e9e,_0x1cbc5e){var _0x3087eb={},_0x18fee3={},_0x1589ea={'count':0x0,'rows':[]};var _0x2c51e4=_[_0xcc19('0x29')](db['ZohoAccount']['rawAttributes'],function(_0x1e7241){return{'name':_0x1e7241['fieldName'],'type':_0x1e7241['type'][_0xcc19('0x2a')]};});_0x18fee3[_0xcc19('0x2b')]=_[_0xcc19('0x29')](_0x2c51e4,_0xcc19('0x2c'));_0x18fee3[_0xcc19('0x2d')]=_[_0xcc19('0x2e')](_0x390e9e[_0xcc19('0x2d')]);_0x18fee3['filters']=_[_0xcc19('0x2f')](_0x18fee3['model'],_0x18fee3['query']);_0x3087eb[_0xcc19('0x30')]=_[_0xcc19('0x2f')](_0x18fee3['model'],qs[_0xcc19('0x31')](_0x390e9e[_0xcc19('0x2d')][_0xcc19('0x31')]));_0x3087eb[_0xcc19('0x30')]=_0x3087eb[_0xcc19('0x30')]['length']?_0x3087eb[_0xcc19('0x30')]:_0x18fee3[_0xcc19('0x2b')];if(!_0x390e9e[_0xcc19('0x2d')]['hasOwnProperty'](_0xcc19('0x32'))){_0x3087eb['limit']=qs[_0xcc19('0x1c')](_0x390e9e[_0xcc19('0x2d')][_0xcc19('0x1c')]);_0x3087eb[_0xcc19('0x1d')]=qs[_0xcc19('0x1d')](_0x390e9e[_0xcc19('0x2d')][_0xcc19('0x1d')]);}_0x3087eb[_0xcc19('0x33')]=qs['sort'](_0x390e9e[_0xcc19('0x2d')]['sort']);_0x3087eb[_0xcc19('0x34')]=qs['filters'](_[_0xcc19('0x35')](_0x390e9e[_0xcc19('0x2d')],_0x18fee3[_0xcc19('0x36')]),_0x2c51e4);if(_0x390e9e['query'][_0xcc19('0x37')]){_0x3087eb[_0xcc19('0x34')]=_[_0xcc19('0x38')](_0x3087eb['where'],{'$or':_[_0xcc19('0x29')](_0x2c51e4,function(_0x4cb6a3){if(_0x4cb6a3[_0xcc19('0x39')]!==_0xcc19('0x3a')){var _0x9b36eb={};_0x9b36eb[_0x4cb6a3[_0xcc19('0x2c')]]={'$like':'%'+_0x390e9e['query'][_0xcc19('0x37')]+'%'};return _0x9b36eb;}})});}_0x3087eb=_[_0xcc19('0x38')]({},_0x3087eb,_0x390e9e[_0xcc19('0x3b')]);var _0x5e1717={'where':_0x3087eb[_0xcc19('0x34')]};return db['ZohoAccount'][_0xcc19('0x3c')](_0x5e1717)[_0xcc19('0x23')](function(_0x43aba2){_0x1589ea[_0xcc19('0x3c')]=_0x43aba2;if(_0x390e9e[_0xcc19('0x2d')][_0xcc19('0x3d')]){_0x3087eb[_0xcc19('0x3e')]=[{'all':!![]}];}return db['ZohoAccount'][_0xcc19('0x3f')](_0x3087eb);})[_0xcc19('0x23')](function(_0x5c559a){_0x1589ea['rows']=_0x5c559a;return _0x1589ea;})[_0xcc19('0x23')](respondWithFilteredResult(_0x1cbc5e,_0x3087eb))[_0xcc19('0x40')](handleError(_0x1cbc5e,null));};exports[_0xcc19('0x41')]=function(_0x5ba367,_0x1b2da9){var _0x41ffe6={'raw':![],'where':{'id':_0x5ba367[_0xcc19('0x42')]['id']}},_0x47023c={};_0x47023c['model']=_['keys'](db['ZohoAccount'][_0xcc19('0x43')]);_0x47023c[_0xcc19('0x2d')]=_[_0xcc19('0x2e')](_0x5ba367['query']);_0x47023c[_0xcc19('0x36')]=_[_0xcc19('0x2f')](_0x47023c['model'],_0x47023c['query']);_0x41ffe6[_0xcc19('0x30')]=_[_0xcc19('0x2f')](_0x47023c[_0xcc19('0x2b')],qs['fields'](_0x5ba367['query']['fields']));_0x41ffe6[_0xcc19('0x30')]=_0x41ffe6['attributes'][_0xcc19('0x44')]?_0x41ffe6[_0xcc19('0x30')]:_0x47023c[_0xcc19('0x2b')];if(_0x5ba367[_0xcc19('0x2d')][_0xcc19('0x3d')]){_0x41ffe6[_0xcc19('0x3e')]=[{'all':!![]}];}_0x41ffe6=_[_0xcc19('0x38')]({},_0x41ffe6,_0x5ba367[_0xcc19('0x3b')]);return db[_0xcc19('0x45')][_0xcc19('0x46')](_0x41ffe6)[_0xcc19('0x23')](handleEntityNotFound(_0x1b2da9,null))['then'](respondWithResult(_0x1b2da9,null))[_0xcc19('0x40')](handleError(_0x1b2da9,null));};exports[_0xcc19('0x47')]=function(_0x2b2ef8,_0x17bcbe){return db[_0xcc19('0x45')]['create'](_0x2b2ef8[_0xcc19('0x48')],{})[_0xcc19('0x23')](respondWithResult(_0x17bcbe,0xc9))['catch'](handleError(_0x17bcbe,null));};exports[_0xcc19('0x49')]=function(_0x51e3b1,_0x4ef63a){if(_0x51e3b1[_0xcc19('0x48')]['id']){delete _0x51e3b1[_0xcc19('0x48')]['id'];}return db['ZohoAccount'][_0xcc19('0x46')]({'where':{'id':_0x51e3b1[_0xcc19('0x42')]['id']}})[_0xcc19('0x23')](handleEntityNotFound(_0x4ef63a,null))['then'](saveUpdates(_0x51e3b1['body'],null))[_0xcc19('0x23')](respondWithResult(_0x4ef63a,null))['catch'](handleError(_0x4ef63a,null));};exports['destroy']=function(_0x855971,_0x3a5cd3){return db['ZohoAccount']['find']({'where':{'id':_0x855971[_0xcc19('0x42')]['id']}})[_0xcc19('0x23')](handleEntityNotFound(_0x3a5cd3,null))[_0xcc19('0x23')](removeEntity(_0x3a5cd3,null))[_0xcc19('0x40')](handleError(_0x3a5cd3,null));};exports[_0xcc19('0x4a')]=function(_0x2020f1,_0x5d08d3,_0x4b3de0){var _0x28efb6={};var _0x4750b2={};var _0x555d7e;var _0x3a10fa;return db[_0xcc19('0x45')][_0xcc19('0x4b')]({'where':{'id':_0x2020f1[_0xcc19('0x42')]['id']}})[_0xcc19('0x23')](handleEntityNotFound(_0x5d08d3,null))[_0xcc19('0x23')](function(_0x54cd68){if(_0x54cd68){_0x555d7e=_0x54cd68;_0x4750b2['model']=_[_0xcc19('0x2e')](db['ZohoConfiguration'][_0xcc19('0x43')]);_0x4750b2[_0xcc19('0x2d')]=_[_0xcc19('0x2e')](_0x2020f1[_0xcc19('0x2d')]);_0x4750b2[_0xcc19('0x36')]=_[_0xcc19('0x2f')](_0x4750b2[_0xcc19('0x2b')],_0x4750b2[_0xcc19('0x2d')]);_0x28efb6[_0xcc19('0x30')]=_['intersection'](_0x4750b2[_0xcc19('0x2b')],qs['fields'](_0x2020f1['query'][_0xcc19('0x31')]));_0x28efb6['attributes']=_0x28efb6[_0xcc19('0x30')]['length']?_0x28efb6['attributes']:_0x4750b2[_0xcc19('0x2b')];_0x28efb6[_0xcc19('0x33')]=qs[_0xcc19('0x4c')](_0x2020f1['query']['sort']);_0x28efb6[_0xcc19('0x34')]=qs[_0xcc19('0x36')](_[_0xcc19('0x35')](_0x2020f1[_0xcc19('0x2d')],_0x4750b2[_0xcc19('0x36')]));if(_0x2020f1['query'][_0xcc19('0x37')]){_0x28efb6[_0xcc19('0x34')]=_['merge'](_0x28efb6[_0xcc19('0x34')],{'$or':_[_0xcc19('0x29')](_0x28efb6[_0xcc19('0x30')],function(_0x13ec9f){var _0x539aac={};_0x539aac[_0x13ec9f]={'$like':'%'+_0x2020f1['query'][_0xcc19('0x37')]+'%'};return _0x539aac;})});}_0x28efb6=_[_0xcc19('0x38')]({},_0x28efb6,_0x2020f1[_0xcc19('0x3b')]);return _0x555d7e[_0xcc19('0x4a')](_0x28efb6);}})[_0xcc19('0x23')](function(_0x551651){if(_0x551651){_0x3a10fa=_0x551651[_0xcc19('0x44')];if(!_0x2020f1['query']['hasOwnProperty']('nolimit')){_0x28efb6[_0xcc19('0x1c')]=qs['limit'](_0x2020f1['query'][_0xcc19('0x1c')]);_0x28efb6[_0xcc19('0x1d')]=qs[_0xcc19('0x1d')](_0x2020f1[_0xcc19('0x2d')]['offset']);}return _0x555d7e[_0xcc19('0x4a')](_0x28efb6);}})[_0xcc19('0x23')](function(_0x4e80e0){if(_0x4e80e0){return _0x4e80e0?{'count':_0x3a10fa,'rows':_0x4e80e0}:null;}})[_0xcc19('0x23')](respondWithResult(_0x5d08d3,null))[_0xcc19('0x40')](handleError(_0x5d08d3,null));};exports[_0xcc19('0x4d')]=function(_0x525540,_0x21056e,_0x3b3080){if(_0x525540[_0xcc19('0x48')]['id']){delete _0x525540[_0xcc19('0x48')]['id'];}return db[_0xcc19('0x45')][_0xcc19('0x4b')]({'where':{'id':_0x525540['params']['id']}})['then'](handleEntityNotFound(_0x21056e,null))[_0xcc19('0x23')](function(_0x53e8d9){if(_0x53e8d9){_0x525540[_0xcc19('0x48')][_0xcc19('0x4e')]=_0x53e8d9['id'];_0x525540[_0xcc19('0x48')][_0xcc19('0x4f')]=integrations[_0xcc19('0x50')](_0x525540[_0xcc19('0x48')]['channel'],_0x525540[_0xcc19('0x48')]['type']);_0x525540[_0xcc19('0x48')]['Descriptions']=integrations[_0xcc19('0x51')](_0x525540[_0xcc19('0x48')]['channel'],_0x525540[_0xcc19('0x48')][_0xcc19('0x39')]);return db['ZohoConfiguration'][_0xcc19('0x47')](_0x525540[_0xcc19('0x48')],{'include':[{'model':db[_0xcc19('0x52')],'as':_0xcc19('0x4f')},{'model':db[_0xcc19('0x52')],'as':_0xcc19('0x53')}]});}return null;})[_0xcc19('0x23')](respondWithResult(_0x21056e,null))[_0xcc19('0x40')](handleError(_0x21056e,null));};function getAccessToken(_0x5d2334){return new Promise(function(_0x271567,_0x2fbe23){var _0x444011;switch(_0x5d2334[_0xcc19('0x54')]){case'US':_0x444011=_0xcc19('0x55');break;case'AU':_0x444011=_0xcc19('0x56');break;case'EU':_0x444011=_0xcc19('0x57');break;case'IN':_0x444011='https://accounts.zoho.in';break;case'CN':_0x444011=_0xcc19('0x58');break;default:_0x444011=_0xcc19('0x57');break;}var _0x10a868={'method':_0xcc19('0x59'),'uri':_0x444011+_0xcc19('0x5a'),'qs':{'refresh_token':_0x5d2334[_0xcc19('0x5b')],'client_id':_0x5d2334[_0xcc19('0x5c')],'client_secret':_0x5d2334[_0xcc19('0x5d')],'grant_type':_0xcc19('0x5e')},'json':!![]};return rp(_0x10a868)[_0xcc19('0x23')](function(_0x306a05){if(_0x306a05['access_token']){_0x271567(_0x306a05[_0xcc19('0x5f')]);}else{_0x2fbe23(_0xcc19('0x60'));}})['catch'](function(_0x15e2f1){_0x2fbe23(_0x15e2f1);});});}exports[_0xcc19('0x61')]=function(_0x2fbbeb,_0x1d6e02,_0x1c3d1b){var _0x5e7530,_0x2b02ed,_0x4d6009,_0x5b3e82,_0x31c95e;return db[_0xcc19('0x45')][_0xcc19('0x4b')]({'where':{'id':_0x2fbbeb[_0xcc19('0x42')]['id']},'attributes':['id',_0xcc19('0x62'),_0xcc19('0x54'),'clientId','clientSecret',_0xcc19('0x63'),_0xcc19('0x64'),_0xcc19('0x5b')]})[_0xcc19('0x23')](handleEntityNotFound(_0x1d6e02,null))[_0xcc19('0x23')](function(_0x17873a){_0x31c95e=_0x17873a;_0x5e7530=_0x31c95e['host'];_0x2b02ed=_0x5e7530===_0xcc19('0x65')?'eu':_0xcc19('0x66');_0x4d6009=_0x31c95e[_0xcc19('0x63')];var _0xf4fa5c=_0x4d6009[_0xcc19('0x67')](-0x1);if(_0xf4fa5c==='/'||_0xf4fa5c==='\x5c'||_0xf4fa5c===':'){_0x4d6009=_0x4d6009[_0xcc19('0x68')](0x0,_0x4d6009['lastIndexOf'](_0xf4fa5c));}if(!_0x31c95e[_0xcc19('0x5b')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x31c95e);})[_0xcc19('0x23')](function(_0x2c89ed){if(_0x2c89ed){return rp({'method':_0xcc19('0x69'),'uri':util[_0xcc19('0x6a')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x2b02ed),'qs':{'module':_0xcc19('0x6b')},'headers':{'Authorization':_0xcc19('0x6c')+_0x2c89ed},'json':!![]});}})['then'](function(_0x3191a8){if(_0x3191a8){if(_0x3191a8['response']&&_0x3191a8['response'][_0xcc19('0x25')]){throw new Error(_0x3191a8[_0xcc19('0x6d')][_0xcc19('0x25')]['message']);}var _0x5271fe=[];var _0x59556d=[];var _0x453790=[_0xcc19('0x6e'),'Subject','Description',_0xcc19('0x6f'),_0xcc19('0x70'),_0xcc19('0x71'),'Call_Start_Time','Call_Type'];_0x59556d=_[_0xcc19('0x72')](_0x3191a8['fields'],function(_0x4dd637){return _0x453790[_0xcc19('0x73')](_0x4dd637['api_name']);});for(var _0x2143df=0x0;_0x2143df<_0x59556d[_0xcc19('0x44')];_0x2143df++){if(_0x59556d[_0x2143df][_0xcc19('0x74')]===![]){_0x5271fe['push']({'id':_0x59556d[_0x2143df]['id'],'name':_0x59556d[_0x2143df][_0xcc19('0x75')],'custom':_0x59556d[_0x2143df][_0xcc19('0x76')],'options':_0x59556d[_0x2143df][_0xcc19('0x77')]===_0xcc19('0x78')&&_0x59556d[_0x2143df]['pick_list_values'][_0xcc19('0x44')]>-0x1?_[_0xcc19('0x29')](_0x59556d[_0x2143df][_0xcc19('0x79')],function(_0xee0b4){return{'name':_0xee0b4,'value':_0xee0b4};}):[]});}}return{'count':_0x5271fe[_0xcc19('0x44')],'rows':_0x5271fe};}else{return{'count':0x0,'rows':[]};}})[_0xcc19('0x23')](respondWithResult(_0x1d6e02,null))[_0xcc19('0x40')](function(_0x34e81f){var _0x3bc1f6=_0x2fbbeb[_0xcc19('0x2d')][_0xcc19('0x7a')]?0x1f4:_0x34e81f[_0xcc19('0x7b')]||0x1f4;logger[_0xcc19('0x25')](_0xcc19('0x7c'),_0xcc19('0x61'),_0x3bc1f6,JSON[_0xcc19('0x7d')](_0x34e81f));delete _0x34e81f['name'];if(_0x3bc1f6===0x191){_0x3bc1f6=0x190;}_0x1d6e02[_0xcc19('0x18')](_0x3bc1f6)[_0xcc19('0x27')](_0x2fbbeb[_0xcc19('0x2d')][_0xcc19('0x7a')]?{'message':_0xcc19('0x7e'),'statusCode':_0x34e81f['statusCode']}:_0x34e81f);});};
\ No newline at end of file
index 0e61566..bc96197 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x754e=['lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','application/x-www-form-urlencoded','then','parse','refresh_token','refreshToken','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','clientSecret','https://accounts.zoho.com.au','authorization_code','info','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intZohoAccount.attributes','exports','define','ZohoAccount','int_zoho_accounts','changed','zone','serverUrl','clientId','code','host','slice','substring'];(function(_0x2bd385,_0xa82360){var _0x3b778d=function(_0x1a109b){while(--_0x1a109b){_0x2bd385['push'](_0x2bd385['shift']());}};_0x3b778d(++_0xa82360);}(_0x754e,0x118));var _0xe754=function(_0x17546e,_0x398a9e){_0x17546e=_0x17546e-0x0;var _0x3dde58=_0x754e[_0x17546e];return _0x3dde58;};'use strict';var _=require(_0xe754('0x0'));var util=require(_0xe754('0x1'));var logger=require('../../config/logger')(_0xe754('0x2'));var moment=require(_0xe754('0x3'));var BPromise=require(_0xe754('0x4'));var rp=require(_0xe754('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe754('0x6'));var config=require(_0xe754('0x7'));var attributes=require(_0xe754('0x8'));var integrations=require('../../components/integrations/configuration');module[_0xe754('0x9')]=function(_0x4f43d6,_0x4ee22a){return _0x4f43d6[_0xe754('0xa')](_0xe754('0xb'),attributes,{'tableName':_0xe754('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x184b92,_0x2308fa,_0xab91fb){if(_0x184b92[_0xe754('0xd')](_0xe754('0xe'))||_0x184b92[_0xe754('0xd')](_0xe754('0xf'))||_0x184b92[_0xe754('0xd')](_0xe754('0x10'))||_0x184b92[_0xe754('0xd')]('clientSecret')||_0x184b92[_0xe754('0xd')](_0xe754('0x11'))||_0x184b92[_0xe754('0xd')](_0xe754('0x12'))){var _0x4681f9,_0x4e7e93;_0x4681f9=_0x184b92[_0xe754('0xf')];var _0x34fe7e=_0x4681f9[_0xe754('0x13')](-0x1);if(_0x34fe7e==='/'||_0x34fe7e==='\x5c'||_0x34fe7e===':'){_0x4681f9=_0x4681f9[_0xe754('0x14')](0x0,_0x4681f9[_0xe754('0x15')](_0x34fe7e));}switch(_0x184b92[_0xe754('0xe')]){case'US':_0x4e7e93=_0xe754('0x16');break;case'AU':_0x4e7e93='https://accounts.zoho.com.au';break;case'IN':_0x4e7e93=_0xe754('0x17');break;case'CN':_0x4e7e93=_0xe754('0x18');break;default:_0x4e7e93=_0xe754('0x19');break;}var _0x29b7fc={'method':_0xe754('0x1a'),'uri':_0x4e7e93+_0xe754('0x1b'),'form':{'grant_type':'authorization_code','client_id':_0x184b92[_0xe754('0x10')],'client_secret':_0x184b92['clientSecret'],'redirect_uri':_0x184b92['serverUrl'],'code':_0x184b92['code']},'headers':{'Content-Type':_0xe754('0x1c')}};return rp(_0x29b7fc)[_0xe754('0x1d')](function(_0x16f42e){var _0xc6424f=JSON[_0xe754('0x1e')](_0x16f42e);if(_0xc6424f[_0xe754('0x1f')]){_0x184b92[_0xe754('0x20')]=_0xc6424f[_0xe754('0x1f')];logger['info'](util[_0xe754('0x21')](_0xe754('0x22'),_0x184b92[_0xe754('0x23')],_0x184b92['id']));}else{logger[_0xe754('0x24')](util[_0xe754('0x21')](_0xe754('0x25'),_0x184b92[_0xe754('0x23')],_0x184b92['id']),util[_0xe754('0x26')](_0xc6424f,{'showHidden':![],'depth':null}));}return _0xab91fb(null,_0x2308fa);})['catch'](function(_0x3945d9){logger[_0xe754('0x24')](util[_0xe754('0x21')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x184b92[_0xe754('0x23')],_0x184b92['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0xab91fb(_0x3945d9);});}else{return _0xab91fb(null,_0x2308fa);}},'beforeUpdate':function(_0x123dec,_0x21ae02,_0x1271d5){if(_0x123dec[_0xe754('0xd')](_0xe754('0xe'))||_0x123dec['changed'](_0xe754('0xf'))||_0x123dec[_0xe754('0xd')](_0xe754('0x10'))||_0x123dec[_0xe754('0xd')](_0xe754('0x27'))||_0x123dec[_0xe754('0xd')](_0xe754('0x11'))||_0x123dec[_0xe754('0xd')](_0xe754('0x12'))){var _0x3ba570,_0x447bc8;_0x3ba570=_0x123dec['serverUrl'];var _0x41508a=_0x3ba570['slice'](-0x1);if(_0x41508a==='/'||_0x41508a==='\x5c'||_0x41508a===':'){_0x3ba570=_0x3ba570[_0xe754('0x14')](0x0,_0x3ba570['lastIndexOf'](_0x41508a));}switch(_0x123dec[_0xe754('0xe')]){case'US':_0x447bc8=_0xe754('0x16');break;case'AU':_0x447bc8=_0xe754('0x28');break;case'IN':_0x447bc8=_0xe754('0x17');break;case'CN':_0x447bc8=_0xe754('0x18');break;default:_0x447bc8='https://accounts.zoho.eu';break;}var _0x1cdb08={'method':_0xe754('0x1a'),'uri':_0x447bc8+_0xe754('0x1b'),'form':{'grant_type':_0xe754('0x29'),'client_id':_0x123dec[_0xe754('0x10')],'client_secret':_0x123dec['clientSecret'],'redirect_uri':_0x123dec['serverUrl'],'code':_0x123dec[_0xe754('0x11')]},'headers':{'Content-Type':_0xe754('0x1c')}};return rp(_0x1cdb08)['then'](function(_0x889431){var _0x274e92=JSON['parse'](_0x889431);if(_0x274e92[_0xe754('0x1f')]){_0x123dec[_0xe754('0x20')]=_0x274e92[_0xe754('0x1f')];logger[_0xe754('0x2a')](util[_0xe754('0x21')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x123dec['name'],_0x123dec['id']));}else{logger[_0xe754('0x24')](util[_0xe754('0x21')](_0xe754('0x25'),_0x123dec[_0xe754('0x23')],_0x123dec['id']),util[_0xe754('0x26')](_0x274e92,{'showHidden':![],'depth':null}));}return _0x1271d5(null,_0x21ae02);})['catch'](function(_0x22f6e0){logger[_0xe754('0x24')](util[_0xe754('0x21')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x123dec['name'],_0x123dec['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x1271d5(_0x22f6e0);});}else{return _0x1271d5(null,_0x21ae02);}}}});};
\ No newline at end of file
+var _0xf263=['catch','host','POST','then','lodash','util','../../config/logger','api','moment','bluebird','path','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','ZohoAccount','changed','zone','serverUrl','clientId','clientSecret','code','slice','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','/oauth/v2/token','authorization_code','application/x-www-form-urlencoded','parse','refresh_token','refreshToken','info','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','format','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect'];(function(_0x21d916,_0x59c331){var _0x2c12df=function(_0x5dcdde){while(--_0x5dcdde){_0x21d916['push'](_0x21d916['shift']());}};_0x2c12df(++_0x59c331);}(_0xf263,0x106));var _0x3f26=function(_0x5ca5bc,_0x5b8a9d){_0x5ca5bc=_0x5ca5bc-0x0;var _0x26ca86=_0xf263[_0x5ca5bc];return _0x26ca86;};'use strict';var _=require(_0x3f26('0x0'));var util=require(_0x3f26('0x1'));var logger=require(_0x3f26('0x2'))(_0x3f26('0x3'));var moment=require(_0x3f26('0x4'));var BPromise=require(_0x3f26('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3f26('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3f26('0x7'));var integrations=require(_0x3f26('0x8'));module[_0x3f26('0x9')]=function(_0x3817c0,_0x2c1445){return _0x3817c0[_0x3f26('0xa')](_0x3f26('0xb'),attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x331a75,_0x52c997,_0xfdd919){if(_0x331a75[_0x3f26('0xc')](_0x3f26('0xd'))||_0x331a75['changed'](_0x3f26('0xe'))||_0x331a75[_0x3f26('0xc')](_0x3f26('0xf'))||_0x331a75[_0x3f26('0xc')](_0x3f26('0x10'))||_0x331a75['changed'](_0x3f26('0x11'))||_0x331a75[_0x3f26('0xc')]('host')){var _0x4d2cbf,_0x6cdfcd;_0x4d2cbf=_0x331a75[_0x3f26('0xe')];var _0x4268cd=_0x4d2cbf[_0x3f26('0x12')](-0x1);if(_0x4268cd==='/'||_0x4268cd==='\x5c'||_0x4268cd===':'){_0x4d2cbf=_0x4d2cbf[_0x3f26('0x13')](0x0,_0x4d2cbf[_0x3f26('0x14')](_0x4268cd));}switch(_0x331a75['zone']){case'US':_0x6cdfcd=_0x3f26('0x15');break;case'AU':_0x6cdfcd=_0x3f26('0x16');break;case'IN':_0x6cdfcd=_0x3f26('0x17');break;case'CN':_0x6cdfcd=_0x3f26('0x18');break;default:_0x6cdfcd=_0x3f26('0x19');break;}var _0x388359={'method':'POST','uri':_0x6cdfcd+_0x3f26('0x1a'),'form':{'grant_type':_0x3f26('0x1b'),'client_id':_0x331a75[_0x3f26('0xf')],'client_secret':_0x331a75[_0x3f26('0x10')],'redirect_uri':_0x331a75[_0x3f26('0xe')],'code':_0x331a75['code']},'headers':{'Content-Type':_0x3f26('0x1c')}};return rp(_0x388359)['then'](function(_0x72ce3a){var _0x272e0e=JSON[_0x3f26('0x1d')](_0x72ce3a);if(_0x272e0e[_0x3f26('0x1e')]){_0x331a75[_0x3f26('0x1f')]=_0x272e0e[_0x3f26('0x1e')];logger[_0x3f26('0x20')](util['format'](_0x3f26('0x21'),_0x331a75[_0x3f26('0x22')],_0x331a75['id']));}else{logger[_0x3f26('0x23')](util[_0x3f26('0x24')](_0x3f26('0x25'),_0x331a75[_0x3f26('0x22')],_0x331a75['id']),util[_0x3f26('0x26')](_0x272e0e,{'showHidden':![],'depth':null}));}return _0xfdd919(null,_0x52c997);})[_0x3f26('0x27')](function(_0x3596ce){logger['error'](util['format'](_0x3f26('0x25'),_0x331a75[_0x3f26('0x22')],_0x331a75['id']),util[_0x3f26('0x26')](parsedResult,{'showHidden':![],'depth':null}));return _0xfdd919(_0x3596ce);});}else{return _0xfdd919(null,_0x52c997);}},'beforeUpdate':function(_0x1276c0,_0x27a9a6,_0x130f17){if(_0x1276c0['changed'](_0x3f26('0xd'))||_0x1276c0[_0x3f26('0xc')](_0x3f26('0xe'))||_0x1276c0[_0x3f26('0xc')](_0x3f26('0xf'))||_0x1276c0[_0x3f26('0xc')](_0x3f26('0x10'))||_0x1276c0[_0x3f26('0xc')]('code')||_0x1276c0[_0x3f26('0xc')](_0x3f26('0x28'))){var _0x3a5ba0,_0x2d9c73;_0x3a5ba0=_0x1276c0[_0x3f26('0xe')];var _0x19d528=_0x3a5ba0[_0x3f26('0x12')](-0x1);if(_0x19d528==='/'||_0x19d528==='\x5c'||_0x19d528===':'){_0x3a5ba0=_0x3a5ba0['substring'](0x0,_0x3a5ba0['lastIndexOf'](_0x19d528));}switch(_0x1276c0[_0x3f26('0xd')]){case'US':_0x2d9c73=_0x3f26('0x15');break;case'AU':_0x2d9c73='https://accounts.zoho.com.au';break;case'IN':_0x2d9c73='https://accounts.zoho.in';break;case'CN':_0x2d9c73='https://accounts.zoho.com.cn';break;default:_0x2d9c73=_0x3f26('0x19');break;}var _0xc36526={'method':_0x3f26('0x29'),'uri':_0x2d9c73+_0x3f26('0x1a'),'form':{'grant_type':'authorization_code','client_id':_0x1276c0[_0x3f26('0xf')],'client_secret':_0x1276c0[_0x3f26('0x10')],'redirect_uri':_0x1276c0[_0x3f26('0xe')],'code':_0x1276c0['code']},'headers':{'Content-Type':_0x3f26('0x1c')}};return rp(_0xc36526)[_0x3f26('0x2a')](function(_0x5d4979){var _0x4e0c33=JSON[_0x3f26('0x1d')](_0x5d4979);if(_0x4e0c33[_0x3f26('0x1e')]){_0x1276c0[_0x3f26('0x1f')]=_0x4e0c33[_0x3f26('0x1e')];logger['info'](util[_0x3f26('0x24')](_0x3f26('0x21'),_0x1276c0['name'],_0x1276c0['id']));}else{logger['error'](util[_0x3f26('0x24')](_0x3f26('0x25'),_0x1276c0[_0x3f26('0x22')],_0x1276c0['id']),util[_0x3f26('0x26')](_0x4e0c33,{'showHidden':![],'depth':null}));}return _0x130f17(null,_0x27a9a6);})[_0x3f26('0x27')](function(_0x27fd19){logger[_0x3f26('0x23')](util['format'](_0x3f26('0x25'),_0x1276c0[_0x3f26('0x22')],_0x1276c0['id']),util[_0x3f26('0x26')](parsedResult,{'showHidden':![],'depth':null}));return _0x130f17(_0x27fd19);});}else{return _0x130f17(null,_0x27a9a6);}}}});};
\ No newline at end of file
index b293570..cc6da44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3445=['bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ZohoAccount,\x20%s,\x20%s','result','catch','GetZohoAccount','ZohoAccount','options','where','attributes','limit','map','include','model','ShowZohoAccount','find','lodash','util','moment'];(function(_0xffd864,_0x3dc29d){var _0x121790=function(_0xc4bad7){while(--_0xc4bad7){_0xffd864['push'](_0xffd864['shift']());}};_0x121790(++_0x3dc29d);}(_0x3445,0x1b7));var _0x5344=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3445[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5344('0x0'));var util=require(_0x5344('0x1'));var moment=require(_0x5344('0x2'));var BPromise=require(_0x5344('0x3'));var rs=require(_0x5344('0x4'));var fs=require('fs');var Redis=require(_0x5344('0x5'));var db=require(_0x5344('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5344('0x7'));var config=require(_0x5344('0x8'));var jayson=require(_0x5344('0x9'));var client=jayson[_0x5344('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ffe5f,_0x5642cb,_0x5a4f52){return new BPromise(function(_0x3f638c,_0x4adb8a){return client['request'](_0x4ffe5f,_0x5a4f52)[_0x5344('0xb')](function(_0xbc5346){logger[_0x5344('0xc')]('ZohoAccount,\x20%s,\x20%s',_0x5642cb,_0x5344('0xd'));logger[_0x5344('0xe')](_0x5344('0xf'),_0x5642cb,_0x5344('0xd'),JSON[_0x5344('0x10')](_0xbc5346));if(_0xbc5346[_0x5344('0x11')]){if(_0xbc5346['error'][_0x5344('0x12')]===0x1f4){logger[_0x5344('0x11')]('ZohoAccount,\x20%s,\x20%s',_0x5642cb,_0xbc5346[_0x5344('0x11')]['message']);return _0x4adb8a(_0xbc5346[_0x5344('0x11')]['message']);}logger['error']('ZohoAccount,\x20%s,\x20%s',_0x5642cb,_0xbc5346[_0x5344('0x11')][_0x5344('0x13')]);return _0x3f638c(_0xbc5346[_0x5344('0x11')][_0x5344('0x13')]);}else{logger[_0x5344('0xc')](_0x5344('0x14'),_0x5642cb,_0x5344('0xd'));_0x3f638c(_0xbc5346[_0x5344('0x15')][_0x5344('0x13')]);}})[_0x5344('0x16')](function(_0x4ae241){logger[_0x5344('0x11')](_0x5344('0x14'),_0x5642cb,_0x4ae241);_0x4adb8a(_0x4ae241);});});}exports[_0x5344('0x17')]=function(_0x215fbd){var _0x517b16=this;return new Promise(function(_0x4fb036,_0x508e34){return db[_0x5344('0x18')]['findAll']({'raw':_0x215fbd['options']?_0x215fbd['options']['raw']===undefined?!![]:![]:!![],'where':_0x215fbd[_0x5344('0x19')]?_0x215fbd[_0x5344('0x19')][_0x5344('0x1a')]||null:null,'attributes':_0x215fbd[_0x5344('0x19')]?_0x215fbd[_0x5344('0x19')][_0x5344('0x1b')]||null:null,'limit':_0x215fbd[_0x5344('0x19')]?_0x215fbd[_0x5344('0x19')][_0x5344('0x1c')]||null:null,'include':_0x215fbd[_0x5344('0x19')]?_0x215fbd['options']['include']?_[_0x5344('0x1d')](_0x215fbd[_0x5344('0x19')][_0x5344('0x1e')],function(_0x434e0d){return{'model':db[_0x434e0d[_0x5344('0x1f')]],'as':_0x434e0d['as'],'attributes':_0x434e0d['attributes'],'include':_0x434e0d[_0x5344('0x1e')]?_[_0x5344('0x1d')](_0x434e0d[_0x5344('0x1e')],function(_0x477c0a){return{'model':db[_0x477c0a['model']],'as':_0x477c0a['as'],'attributes':_0x477c0a[_0x5344('0x1b')],'include':_0x477c0a[_0x5344('0x1e')]?_[_0x5344('0x1d')](_0x477c0a[_0x5344('0x1e')],function(_0x4c120c){return{'model':db[_0x4c120c['model']],'as':_0x4c120c['as'],'attributes':_0x4c120c[_0x5344('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x5344('0xb')](function(_0x3471a9){logger[_0x5344('0xc')]('GetZohoAccount',_0x215fbd);logger[_0x5344('0xe')](_0x5344('0x17'),_0x215fbd,JSON[_0x5344('0x10')](_0x3471a9));_0x4fb036(_0x3471a9);})[_0x5344('0x16')](function(_0x1867d6){logger[_0x5344('0x11')](_0x5344('0x17'),_0x1867d6['message'],_0x215fbd);_0x508e34(_0x517b16[_0x5344('0x11')](0x1f4,_0x1867d6['message']));});});};exports[_0x5344('0x20')]=function(_0x2ad28e){var _0x3dbb4e=this;return new Promise(function(_0xdaa060,_0x43a1e2){return db[_0x5344('0x18')][_0x5344('0x21')]({'raw':_0x2ad28e[_0x5344('0x19')]?_0x2ad28e[_0x5344('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x2ad28e[_0x5344('0x19')]?_0x2ad28e[_0x5344('0x19')][_0x5344('0x1a')]||null:null,'attributes':_0x2ad28e[_0x5344('0x19')]?_0x2ad28e['options'][_0x5344('0x1b')]||null:null,'include':_0x2ad28e[_0x5344('0x19')]?_0x2ad28e['options'][_0x5344('0x1e')]?_[_0x5344('0x1d')](_0x2ad28e['options'][_0x5344('0x1e')],function(_0x3c0988){return{'model':db[_0x3c0988['model']],'as':_0x3c0988['as'],'attributes':_0x3c0988[_0x5344('0x1b')],'include':_0x3c0988[_0x5344('0x1e')]?_['map'](_0x3c0988[_0x5344('0x1e')],function(_0x332a1d){return{'model':db[_0x332a1d[_0x5344('0x1f')]],'as':_0x332a1d['as'],'attributes':_0x332a1d[_0x5344('0x1b')],'include':_0x332a1d[_0x5344('0x1e')]?_['map'](_0x332a1d['include'],function(_0x3fafb1){return{'model':db[_0x3fafb1['model']],'as':_0x3fafb1['as'],'attributes':_0x3fafb1['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a430){logger[_0x5344('0xc')](_0x5344('0x20'),_0x2ad28e);logger['debug'](_0x5344('0x20'),_0x2ad28e,JSON['stringify'](_0x45a430));_0xdaa060(_0x45a430);})['catch'](function(_0x5e812f){logger[_0x5344('0x11')](_0x5344('0x20'),_0x5e812f[_0x5344('0x13')],_0x2ad28e);_0x43a1e2(_0x3dbb4e[_0x5344('0x11')](0x1f4,_0x5e812f[_0x5344('0x13')]));});});};
\ No newline at end of file
+var _0xf767=['result','GetZohoAccount','ZohoAccount','findAll','options','raw','attributes','limit','include','map','model','catch','find','where','ShowZohoAccount','moment','bluebird','randomstring','ioredis','../../config/environment','jayson/promise','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x4c02db,_0x1919d6){var _0x9c80ce=function(_0x1ee0ec){while(--_0x1ee0ec){_0x4c02db['push'](_0x4c02db['shift']());}};_0x9c80ce(++_0x1919d6);}(_0xf767,0x183));var _0x7f76=function(_0x4f3b2d,_0x3bbf46){_0x4f3b2d=_0x4f3b2d-0x0;var _0x3dddfa=_0xf767[_0x4f3b2d];return _0x3dddfa;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x7f76('0x0'));var BPromise=require(_0x7f76('0x1'));var rs=require(_0x7f76('0x2'));var fs=require('fs');var Redis=require(_0x7f76('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x7f76('0x4'));var jayson=require(_0x7f76('0x5'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x23629f,_0x370b0a,_0x5ced68){return new BPromise(function(_0x4060f6,_0x7561e0){return client['request'](_0x23629f,_0x5ced68)[_0x7f76('0x6')](function(_0x3e79ad){logger[_0x7f76('0x7')](_0x7f76('0x8'),_0x370b0a,_0x7f76('0x9'));logger[_0x7f76('0xa')](_0x7f76('0xb'),_0x370b0a,_0x7f76('0x9'),JSON[_0x7f76('0xc')](_0x3e79ad));if(_0x3e79ad['error']){if(_0x3e79ad[_0x7f76('0xd')][_0x7f76('0xe')]===0x1f4){logger[_0x7f76('0xd')](_0x7f76('0x8'),_0x370b0a,_0x3e79ad[_0x7f76('0xd')][_0x7f76('0xf')]);return _0x7561e0(_0x3e79ad[_0x7f76('0xd')][_0x7f76('0xf')]);}logger[_0x7f76('0xd')]('ZohoAccount,\x20%s,\x20%s',_0x370b0a,_0x3e79ad[_0x7f76('0xd')][_0x7f76('0xf')]);return _0x4060f6(_0x3e79ad[_0x7f76('0xd')][_0x7f76('0xf')]);}else{logger['info'](_0x7f76('0x8'),_0x370b0a,_0x7f76('0x9'));_0x4060f6(_0x3e79ad[_0x7f76('0x10')]['message']);}})['catch'](function(_0x1eea7e){logger['error'](_0x7f76('0x8'),_0x370b0a,_0x1eea7e);_0x7561e0(_0x1eea7e);});});}exports[_0x7f76('0x11')]=function(_0x380fd7){var _0x12fa61=this;return new Promise(function(_0x5c98c1,_0x4919c7){return db[_0x7f76('0x12')][_0x7f76('0x13')]({'raw':_0x380fd7['options']?_0x380fd7[_0x7f76('0x14')][_0x7f76('0x15')]===undefined?!![]:![]:!![],'where':_0x380fd7[_0x7f76('0x14')]?_0x380fd7[_0x7f76('0x14')]['where']||null:null,'attributes':_0x380fd7['options']?_0x380fd7['options'][_0x7f76('0x16')]||null:null,'limit':_0x380fd7[_0x7f76('0x14')]?_0x380fd7['options'][_0x7f76('0x17')]||null:null,'include':_0x380fd7[_0x7f76('0x14')]?_0x380fd7['options'][_0x7f76('0x18')]?_[_0x7f76('0x19')](_0x380fd7[_0x7f76('0x14')][_0x7f76('0x18')],function(_0x1b67ac){return{'model':db[_0x1b67ac[_0x7f76('0x1a')]],'as':_0x1b67ac['as'],'attributes':_0x1b67ac[_0x7f76('0x16')],'include':_0x1b67ac[_0x7f76('0x18')]?_[_0x7f76('0x19')](_0x1b67ac['include'],function(_0x495abf){return{'model':db[_0x495abf['model']],'as':_0x495abf['as'],'attributes':_0x495abf['attributes'],'include':_0x495abf[_0x7f76('0x18')]?_['map'](_0x495abf[_0x7f76('0x18')],function(_0x404ae1){return{'model':db[_0x404ae1[_0x7f76('0x1a')]],'as':_0x404ae1['as'],'attributes':_0x404ae1[_0x7f76('0x16')]};}):[]};}):[]};}):[]:[]})[_0x7f76('0x6')](function(_0x59be19){logger[_0x7f76('0x7')]('GetZohoAccount',_0x380fd7);logger['debug'](_0x7f76('0x11'),_0x380fd7,JSON['stringify'](_0x59be19));_0x5c98c1(_0x59be19);})[_0x7f76('0x1b')](function(_0xa1f67c){logger[_0x7f76('0xd')]('GetZohoAccount',_0xa1f67c[_0x7f76('0xf')],_0x380fd7);_0x4919c7(_0x12fa61['error'](0x1f4,_0xa1f67c[_0x7f76('0xf')]));});});};exports['ShowZohoAccount']=function(_0x79c947){var _0x36af6f=this;return new Promise(function(_0x2a486e,_0xbb481e){return db['ZohoAccount'][_0x7f76('0x1c')]({'raw':_0x79c947[_0x7f76('0x14')]?_0x79c947['options']['raw']===undefined?!![]:![]:!![],'where':_0x79c947[_0x7f76('0x14')]?_0x79c947['options'][_0x7f76('0x1d')]||null:null,'attributes':_0x79c947['options']?_0x79c947[_0x7f76('0x14')][_0x7f76('0x16')]||null:null,'include':_0x79c947[_0x7f76('0x14')]?_0x79c947[_0x7f76('0x14')][_0x7f76('0x18')]?_[_0x7f76('0x19')](_0x79c947[_0x7f76('0x14')][_0x7f76('0x18')],function(_0x2700c7){return{'model':db[_0x2700c7[_0x7f76('0x1a')]],'as':_0x2700c7['as'],'attributes':_0x2700c7[_0x7f76('0x16')],'include':_0x2700c7[_0x7f76('0x18')]?_[_0x7f76('0x19')](_0x2700c7[_0x7f76('0x18')],function(_0x1a4691){return{'model':db[_0x1a4691[_0x7f76('0x1a')]],'as':_0x1a4691['as'],'attributes':_0x1a4691[_0x7f76('0x16')],'include':_0x1a4691[_0x7f76('0x18')]?_['map'](_0x1a4691[_0x7f76('0x18')],function(_0x1cc3f8){return{'model':db[_0x1cc3f8[_0x7f76('0x1a')]],'as':_0x1cc3f8['as'],'attributes':_0x1cc3f8[_0x7f76('0x16')]};}):[]};}):[]};}):[]:[]})[_0x7f76('0x6')](function(_0x59923e){logger['info'](_0x7f76('0x1e'),_0x79c947);logger['debug'](_0x7f76('0x1e'),_0x79c947,JSON[_0x7f76('0xc')](_0x59923e));_0x2a486e(_0x59923e);})['catch'](function(_0x35c8d3){logger['error'](_0x7f76('0x1e'),_0x35c8d3[_0x7f76('0xf')],_0x79c947);_0xbb481e(_0x36af6f[_0x7f76('0xd')](0x1f4,_0x35c8d3[_0x7f76('0xf')]));});});};
\ No newline at end of file
index be02182..83b5557 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fc2=['delete','destroy','exports','multer','util','connect-timeout','Router','../../config/environment','./intZohoConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/descriptions','getDescriptions','create'];(function(_0x416468,_0x2e7a72){var _0x2ee9b7=function(_0xf354ce){while(--_0xf354ce){_0x416468['push'](_0x416468['shift']());}};_0x2ee9b7(++_0x2e7a72);}(_0x0fc2,0x88));var _0x20fc=function(_0x3ff0e0,_0x1efa24){_0x3ff0e0=_0x3ff0e0-0x0;var _0xb9e8ee=_0x0fc2[_0x3ff0e0];return _0xb9e8ee;};'use strict';var multer=require(_0x20fc('0x0'));var util=require(_0x20fc('0x1'));var path=require('path');var timeout=require(_0x20fc('0x2'));var express=require('express');var router=express[_0x20fc('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x20fc('0x4'));var controller=require(_0x20fc('0x5'));router[_0x20fc('0x6')]('/',auth['isAuthenticated'](),controller[_0x20fc('0x7')]);router[_0x20fc('0x6')](_0x20fc('0x8'),auth[_0x20fc('0x9')](),controller[_0x20fc('0xa')]);router['get'](_0x20fc('0xb'),auth[_0x20fc('0x9')](),controller[_0x20fc('0xc')]);router['get']('/:id/subjects',auth[_0x20fc('0x9')](),controller['getSubjects']);router[_0x20fc('0x6')](_0x20fc('0xd'),auth['isAuthenticated'](),controller[_0x20fc('0xe')]);router['post']('/',auth[_0x20fc('0x9')](),controller[_0x20fc('0xf')]);router['put'](_0x20fc('0x8'),auth[_0x20fc('0x9')](),controller['update']);router[_0x20fc('0x10')]('/:id',auth[_0x20fc('0x9')](),controller[_0x20fc('0x11')]);module[_0x20fc('0x12')]=router;
\ No newline at end of file
+var _0x7e88=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','update','delete','destroy','exports','multer','util','path','express'];(function(_0x266b45,_0x4d46bc){var _0x379205=function(_0x594c72){while(--_0x594c72){_0x266b45['push'](_0x266b45['shift']());}};_0x379205(++_0x4d46bc);}(_0x7e88,0x1c4));var _0x87e8=function(_0x248cd4,_0x33b38a){_0x248cd4=_0x248cd4-0x0;var _0x2c5bd5=_0x7e88[_0x248cd4];return _0x2c5bd5;};'use strict';var multer=require(_0x87e8('0x0'));var util=require(_0x87e8('0x1'));var path=require(_0x87e8('0x2'));var timeout=require('connect-timeout');var express=require(_0x87e8('0x3'));var router=express['Router']();var fs_extra=require(_0x87e8('0x4'));var auth=require(_0x87e8('0x5'));var interaction=require(_0x87e8('0x6'));var config=require(_0x87e8('0x7'));var controller=require('./intZohoConfiguration.controller');router['get']('/',auth[_0x87e8('0x8')](),controller[_0x87e8('0x9')]);router[_0x87e8('0xa')](_0x87e8('0xb'),auth['isAuthenticated'](),controller[_0x87e8('0xc')]);router[_0x87e8('0xa')](_0x87e8('0xd'),auth[_0x87e8('0x8')](),controller[_0x87e8('0xe')]);router[_0x87e8('0xa')](_0x87e8('0xf'),auth[_0x87e8('0x8')](),controller[_0x87e8('0x10')]);router['get'](_0x87e8('0x11'),auth['isAuthenticated'](),controller[_0x87e8('0x12')]);router[_0x87e8('0x13')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0x87e8('0x8')](),controller[_0x87e8('0x14')]);router[_0x87e8('0x15')](_0x87e8('0xb'),auth[_0x87e8('0x8')](),controller[_0x87e8('0x16')]);module[_0x87e8('0x17')]=router;
\ No newline at end of file
index 01ce378..3c22e28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2e1=['lead','contact','nothing','contact_lead','sequelize','exports','STRING','ENUM'];(function(_0x14d930,_0x4539be){var _0x7667de=function(_0x1ee5d8){while(--_0x1ee5d8){_0x14d930['push'](_0x14d930['shift']());}};_0x7667de(++_0x4539be);}(_0xb2e1,0xd4));var _0x1b2e=function(_0x1f6e37,_0x560390){_0x1f6e37=_0x1f6e37-0x0;var _0x3d17ad=_0xb2e1[_0x1f6e37];return _0x3d17ad;};'use strict';var Sequelize=require(_0x1b2e('0x0'));module[_0x1b2e('0x1')]={'name':{'type':Sequelize[_0x1b2e('0x2')]},'moduleCreate':{'type':Sequelize[_0x1b2e('0x3')](_0x1b2e('0x4'),_0x1b2e('0x5'),_0x1b2e('0x6')),'defaultValue':_0x1b2e('0x4')},'moduleSearch':{'type':Sequelize['ENUM'](_0x1b2e('0x7'),'contact',_0x1b2e('0x4')),'defaultValue':_0x1b2e('0x7')},'description':{'type':Sequelize[_0x1b2e('0x2')]}};
\ No newline at end of file
+var _0x6f2e=['contact','nothing','contact_lead','sequelize','exports','STRING','ENUM','lead'];(function(_0x3f5126,_0x3cc940){var _0x2cb54e=function(_0x58aece){while(--_0x58aece){_0x3f5126['push'](_0x3f5126['shift']());}};_0x2cb54e(++_0x3cc940);}(_0x6f2e,0x11b));var _0xe6f2=function(_0x4b171f,_0x2b828d){_0x4b171f=_0x4b171f-0x0;var _0x24b96c=_0x6f2e[_0x4b171f];return _0x24b96c;};'use strict';var Sequelize=require(_0xe6f2('0x0'));module[_0xe6f2('0x1')]={'name':{'type':Sequelize[_0xe6f2('0x2')]},'moduleCreate':{'type':Sequelize[_0xe6f2('0x3')](_0xe6f2('0x4'),_0xe6f2('0x5'),_0xe6f2('0x6')),'defaultValue':_0xe6f2('0x4')},'moduleSearch':{'type':Sequelize[_0xe6f2('0x3')]('contact_lead',_0xe6f2('0x5'),'lead'),'defaultValue':_0xe6f2('0x7')},'description':{'type':Sequelize[_0xe6f2('0x2')]}};
\ No newline at end of file
index e8abb3b..d96c2eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe769=['reject','save','then','stack','name','send','index','map','fieldName','type','key','model','keys','query','intersection','attributes','fields','nolimit','where','pick','filters','merge','VIRTUAL','filter','options','ZohoConfiguration','includeAll','include','rows','catch','params','length','find','create','body','update','destroy','getFields','findOne','ZohoField','order','sort','getSubjects','rawAttributes','getDescriptions','hasOwnProperty','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply'];(function(_0x1a3276,_0xfddeaf){var _0xe10349=function(_0x38fd3e){while(--_0x38fd3e){_0x1a3276['push'](_0x1a3276['shift']());}};_0xe10349(++_0xfddeaf);}(_0xe769,0x127));var _0x9e76=function(_0x461c41,_0x2e6d1c){_0x461c41=_0x461c41-0x0;var _0x509e12=_0xe769[_0x461c41];return _0x509e12;};'use strict';var emlformat=require(_0x9e76('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9e76('0x1'));var jsonpatch=require(_0x9e76('0x2'));var rp=require('request-promise');var moment=require(_0x9e76('0x3'));var BPromise=require(_0x9e76('0x4'));var Mustache=require(_0x9e76('0x5'));var util=require(_0x9e76('0x6'));var path=require(_0x9e76('0x7'));var sox=require(_0x9e76('0x8'));var csv=require(_0x9e76('0x9'));var ejs=require(_0x9e76('0xa'));var fs=require('fs');var fs_extra=require(_0x9e76('0xb'));var _=require(_0x9e76('0xc'));var squel=require('squel');var crypto=require(_0x9e76('0xd'));var jsforce=require(_0x9e76('0xe'));var deskjs=require(_0x9e76('0xf'));var toCsv=require(_0x9e76('0x9'));var querystring=require(_0x9e76('0x10'));var Papa=require(_0x9e76('0x11'));var Redis=require(_0x9e76('0x12'));var authService=require(_0x9e76('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x9e76('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9e76('0x15'))(_0x9e76('0x16'));var utils=require(_0x9e76('0x17'));var config=require(_0x9e76('0x18'));var licenseUtil=require(_0x9e76('0x19'));var db=require(_0x9e76('0x1a'))['db'];function respondWithStatusCode(_0x3329c9,_0x52f21c){_0x52f21c=_0x52f21c||0xcc;return function(_0x6a9a2c){if(_0x6a9a2c){return _0x3329c9[_0x9e76('0x1b')](_0x52f21c);}return _0x3329c9[_0x9e76('0x1c')](_0x52f21c)[_0x9e76('0x1d')]();};}function respondWithResult(_0x33deac,_0x10870f){_0x10870f=_0x10870f||0xc8;return function(_0x700169){if(_0x700169){return _0x33deac[_0x9e76('0x1c')](_0x10870f)[_0x9e76('0x1e')](_0x700169);}};}function respondWithFilteredResult(_0x1a868c,_0x3599e4){return function(_0x34cd60){if(_0x34cd60){var _0x45ff1c=typeof _0x3599e4['offset']===_0x9e76('0x1f')&&typeof _0x3599e4[_0x9e76('0x20')]===_0x9e76('0x1f');var _0x2cd949=_0x34cd60[_0x9e76('0x21')];var _0x789ad9=_0x45ff1c?0x0:_0x3599e4[_0x9e76('0x22')];var _0x54e76a=_0x45ff1c?_0x34cd60['count']:_0x3599e4['offset']+_0x3599e4[_0x9e76('0x20')];var _0x175098;if(_0x54e76a>=_0x2cd949){_0x54e76a=_0x2cd949;_0x175098=0xc8;}else{_0x175098=0xce;}_0x1a868c[_0x9e76('0x1c')](_0x175098);return _0x1a868c[_0x9e76('0x23')]('Content-Range',_0x789ad9+'-'+_0x54e76a+'/'+_0x2cd949)[_0x9e76('0x1e')](_0x34cd60);}return null;};}function patchUpdates(_0x3407f4){return function(_0xd6591c){try{jsonpatch[_0x9e76('0x24')](_0xd6591c,_0x3407f4,!![]);}catch(_0x4ca9d3){return BPromise[_0x9e76('0x25')](_0x4ca9d3);}return _0xd6591c[_0x9e76('0x26')]();};}function saveUpdates(_0x3450b9,_0x21eccf){return function(_0x448f61){if(_0x448f61){return _0x448f61['update'](_0x3450b9)[_0x9e76('0x27')](function(_0x5f21d6){return _0x5f21d6;});}return null;};}function removeEntity(_0x4a670a,_0x2ad76f){return function(_0x19326e){if(_0x19326e){return _0x19326e['destroy']()[_0x9e76('0x27')](function(){_0x4a670a[_0x9e76('0x1c')](0xcc)[_0x9e76('0x1d')]();});}};}function handleEntityNotFound(_0x82d8f9,_0x4324de){return function(_0x20f218){if(!_0x20f218){_0x82d8f9['sendStatus'](0x194);}return _0x20f218;};}function handleError(_0x3a7309,_0x3ecf19){_0x3ecf19=_0x3ecf19||0x1f4;return function(_0x7e3f9a){logger['error'](_0x7e3f9a[_0x9e76('0x28')]);if(_0x7e3f9a[_0x9e76('0x29')]){delete _0x7e3f9a[_0x9e76('0x29')];}_0x3a7309[_0x9e76('0x1c')](_0x3ecf19)[_0x9e76('0x2a')](_0x7e3f9a);};}exports[_0x9e76('0x2b')]=function(_0x460a01,_0x3b3a7c){var _0x13bcd3={},_0x20ce7f={},_0x39ca2d={'count':0x0,'rows':[]};var _0x284147=_[_0x9e76('0x2c')](db['ZohoConfiguration']['rawAttributes'],function(_0xef3a37){return{'name':_0xef3a37[_0x9e76('0x2d')],'type':_0xef3a37[_0x9e76('0x2e')][_0x9e76('0x2f')]};});_0x20ce7f[_0x9e76('0x30')]=_[_0x9e76('0x2c')](_0x284147,_0x9e76('0x29'));_0x20ce7f['query']=_[_0x9e76('0x31')](_0x460a01[_0x9e76('0x32')]);_0x20ce7f['filters']=_[_0x9e76('0x33')](_0x20ce7f[_0x9e76('0x30')],_0x20ce7f['query']);_0x13bcd3[_0x9e76('0x34')]=_[_0x9e76('0x33')](_0x20ce7f['model'],qs['fields'](_0x460a01[_0x9e76('0x32')][_0x9e76('0x35')]));_0x13bcd3[_0x9e76('0x34')]=_0x13bcd3['attributes']['length']?_0x13bcd3[_0x9e76('0x34')]:_0x20ce7f[_0x9e76('0x30')];if(!_0x460a01[_0x9e76('0x32')]['hasOwnProperty'](_0x9e76('0x36'))){_0x13bcd3[_0x9e76('0x20')]=qs[_0x9e76('0x20')](_0x460a01[_0x9e76('0x32')][_0x9e76('0x20')]);_0x13bcd3[_0x9e76('0x22')]=qs[_0x9e76('0x22')](_0x460a01[_0x9e76('0x32')][_0x9e76('0x22')]);}_0x13bcd3['order']=qs['sort'](_0x460a01[_0x9e76('0x32')]['sort']);_0x13bcd3[_0x9e76('0x37')]=qs['filters'](_[_0x9e76('0x38')](_0x460a01['query'],_0x20ce7f[_0x9e76('0x39')]),_0x284147);if(_0x460a01[_0x9e76('0x32')]['filter']){_0x13bcd3[_0x9e76('0x37')]=_[_0x9e76('0x3a')](_0x13bcd3[_0x9e76('0x37')],{'$or':_[_0x9e76('0x2c')](_0x284147,function(_0x1e2ff7){if(_0x1e2ff7[_0x9e76('0x2e')]!==_0x9e76('0x3b')){var _0x8e9a1e={};_0x8e9a1e[_0x1e2ff7[_0x9e76('0x29')]]={'$like':'%'+_0x460a01[_0x9e76('0x32')][_0x9e76('0x3c')]+'%'};return _0x8e9a1e;}})});}_0x13bcd3=_[_0x9e76('0x3a')]({},_0x13bcd3,_0x460a01[_0x9e76('0x3d')]);var _0x2c3b69={'where':_0x13bcd3[_0x9e76('0x37')]};return db[_0x9e76('0x3e')][_0x9e76('0x21')](_0x2c3b69)[_0x9e76('0x27')](function(_0x5c137b){_0x39ca2d['count']=_0x5c137b;if(_0x460a01[_0x9e76('0x32')][_0x9e76('0x3f')]){_0x13bcd3[_0x9e76('0x40')]=[{'all':!![]}];}return db[_0x9e76('0x3e')]['findAll'](_0x13bcd3);})['then'](function(_0x53141a){_0x39ca2d[_0x9e76('0x41')]=_0x53141a;return _0x39ca2d;})['then'](respondWithFilteredResult(_0x3b3a7c,_0x13bcd3))[_0x9e76('0x42')](handleError(_0x3b3a7c,null));};exports['show']=function(_0x93f778,_0x8e6eb0){var _0x2702b6={'raw':![],'where':{'id':_0x93f778[_0x9e76('0x43')]['id']}},_0x229619={};_0x229619[_0x9e76('0x30')]=_[_0x9e76('0x31')](db[_0x9e76('0x3e')]['rawAttributes']);_0x229619['query']=_['keys'](_0x93f778[_0x9e76('0x32')]);_0x229619[_0x9e76('0x39')]=_[_0x9e76('0x33')](_0x229619[_0x9e76('0x30')],_0x229619[_0x9e76('0x32')]);_0x2702b6['attributes']=_['intersection'](_0x229619['model'],qs[_0x9e76('0x35')](_0x93f778[_0x9e76('0x32')][_0x9e76('0x35')]));_0x2702b6[_0x9e76('0x34')]=_0x2702b6[_0x9e76('0x34')][_0x9e76('0x44')]?_0x2702b6[_0x9e76('0x34')]:_0x229619[_0x9e76('0x30')];if(_0x93f778[_0x9e76('0x32')]['includeAll']){_0x2702b6[_0x9e76('0x40')]=[{'all':!![]}];}_0x2702b6=_[_0x9e76('0x3a')]({},_0x2702b6,_0x93f778[_0x9e76('0x3d')]);return db[_0x9e76('0x3e')][_0x9e76('0x45')](_0x2702b6)['then'](handleEntityNotFound(_0x8e6eb0,null))['then'](respondWithResult(_0x8e6eb0,null))[_0x9e76('0x42')](handleError(_0x8e6eb0,null));};exports[_0x9e76('0x46')]=function(_0xb572ff,_0x1e7913){return db[_0x9e76('0x3e')][_0x9e76('0x46')](_0xb572ff[_0x9e76('0x47')],{})[_0x9e76('0x27')](respondWithResult(_0x1e7913,0xc9))['catch'](handleError(_0x1e7913,null));};exports[_0x9e76('0x48')]=function(_0x2b87d8,_0x3ef886){if(_0x2b87d8['body']['id']){delete _0x2b87d8[_0x9e76('0x47')]['id'];}return db['ZohoConfiguration']['find']({'where':{'id':_0x2b87d8['params']['id']}})[_0x9e76('0x27')](handleEntityNotFound(_0x3ef886,null))[_0x9e76('0x27')](saveUpdates(_0x2b87d8[_0x9e76('0x47')],null))[_0x9e76('0x27')](respondWithResult(_0x3ef886,null))[_0x9e76('0x42')](handleError(_0x3ef886,null));};exports[_0x9e76('0x49')]=function(_0x1f935d,_0x311d9d){return db[_0x9e76('0x3e')]['find']({'where':{'id':_0x1f935d[_0x9e76('0x43')]['id']}})[_0x9e76('0x27')](handleEntityNotFound(_0x311d9d,null))[_0x9e76('0x27')](removeEntity(_0x311d9d,null))[_0x9e76('0x42')](handleError(_0x311d9d,null));};exports[_0x9e76('0x4a')]=function(_0xc2e108,_0x434087,_0x35e29c){var _0x1943fa={};var _0x14c4b1={};var _0x4afe1d;var _0x2ced22;return db[_0x9e76('0x3e')][_0x9e76('0x4b')]({'where':{'id':_0xc2e108['params']['id']}})[_0x9e76('0x27')](handleEntityNotFound(_0x434087,null))[_0x9e76('0x27')](function(_0x5bbe03){if(_0x5bbe03){_0x4afe1d=_0x5bbe03;_0x14c4b1['model']=_[_0x9e76('0x31')](db[_0x9e76('0x4c')]['rawAttributes']);_0x14c4b1[_0x9e76('0x32')]=_[_0x9e76('0x31')](_0xc2e108[_0x9e76('0x32')]);_0x14c4b1[_0x9e76('0x39')]=_[_0x9e76('0x33')](_0x14c4b1[_0x9e76('0x30')],_0x14c4b1[_0x9e76('0x32')]);_0x1943fa[_0x9e76('0x34')]=_[_0x9e76('0x33')](_0x14c4b1['model'],qs[_0x9e76('0x35')](_0xc2e108[_0x9e76('0x32')]['fields']));_0x1943fa['attributes']=_0x1943fa[_0x9e76('0x34')][_0x9e76('0x44')]?_0x1943fa[_0x9e76('0x34')]:_0x14c4b1[_0x9e76('0x30')];_0x1943fa[_0x9e76('0x4d')]=qs[_0x9e76('0x4e')](_0xc2e108[_0x9e76('0x32')][_0x9e76('0x4e')]);_0x1943fa[_0x9e76('0x37')]=qs[_0x9e76('0x39')](_[_0x9e76('0x38')](_0xc2e108[_0x9e76('0x32')],_0x14c4b1['filters']));if(_0xc2e108[_0x9e76('0x32')][_0x9e76('0x3c')]){_0x1943fa[_0x9e76('0x37')]=_['merge'](_0x1943fa[_0x9e76('0x37')],{'$or':_['map'](_0x1943fa[_0x9e76('0x34')],function(_0x3d2796){var _0x42b81a={};_0x42b81a[_0x3d2796]={'$like':'%'+_0xc2e108[_0x9e76('0x32')]['filter']+'%'};return _0x42b81a;})});}_0x1943fa=_['merge']({},_0x1943fa,_0xc2e108[_0x9e76('0x3d')]);return _0x4afe1d[_0x9e76('0x4a')](_0x1943fa);}})['then'](function(_0x99b46c){if(_0x99b46c){_0x2ced22=_0x99b46c['length'];if(!_0xc2e108[_0x9e76('0x32')]['hasOwnProperty']('nolimit')){_0x1943fa[_0x9e76('0x20')]=qs[_0x9e76('0x20')](_0xc2e108['query']['limit']);_0x1943fa[_0x9e76('0x22')]=qs[_0x9e76('0x22')](_0xc2e108[_0x9e76('0x32')][_0x9e76('0x22')]);}return _0x4afe1d[_0x9e76('0x4a')](_0x1943fa);}})[_0x9e76('0x27')](function(_0x3b51a8){if(_0x3b51a8){return _0x3b51a8?{'count':_0x2ced22,'rows':_0x3b51a8}:null;}})[_0x9e76('0x27')](respondWithResult(_0x434087,null))[_0x9e76('0x42')](handleError(_0x434087,null));};exports[_0x9e76('0x4f')]=function(_0x224d9b,_0x28ca16,_0x5dc699){var _0x22db78={};var _0x2f194e={};var _0x2c3d02;var _0x74d53a;return db[_0x9e76('0x3e')][_0x9e76('0x4b')]({'where':{'id':_0x224d9b[_0x9e76('0x43')]['id']}})[_0x9e76('0x27')](handleEntityNotFound(_0x28ca16,null))[_0x9e76('0x27')](function(_0x52592d){if(_0x52592d){_0x2c3d02=_0x52592d;_0x2f194e['model']=_['keys'](db['ZohoField'][_0x9e76('0x50')]);_0x2f194e[_0x9e76('0x32')]=_[_0x9e76('0x31')](_0x224d9b[_0x9e76('0x32')]);_0x2f194e[_0x9e76('0x39')]=_['intersection'](_0x2f194e['model'],_0x2f194e[_0x9e76('0x32')]);_0x22db78[_0x9e76('0x34')]=_['intersection'](_0x2f194e[_0x9e76('0x30')],qs[_0x9e76('0x35')](_0x224d9b[_0x9e76('0x32')][_0x9e76('0x35')]));_0x22db78[_0x9e76('0x34')]=_0x22db78[_0x9e76('0x34')][_0x9e76('0x44')]?_0x22db78[_0x9e76('0x34')]:_0x2f194e[_0x9e76('0x30')];_0x22db78['order']=qs[_0x9e76('0x4e')](_0x224d9b[_0x9e76('0x32')]['sort']);_0x22db78[_0x9e76('0x37')]=qs[_0x9e76('0x39')](_['pick'](_0x224d9b['query'],_0x2f194e['filters']));if(_0x224d9b[_0x9e76('0x32')][_0x9e76('0x3c')]){_0x22db78[_0x9e76('0x37')]=_['merge'](_0x22db78[_0x9e76('0x37')],{'$or':_['map'](_0x22db78['attributes'],function(_0x5ca627){var _0x5a1cf2={};_0x5a1cf2[_0x5ca627]={'$like':'%'+_0x224d9b[_0x9e76('0x32')][_0x9e76('0x3c')]+'%'};return _0x5a1cf2;})});}_0x22db78=_[_0x9e76('0x3a')]({},_0x22db78,_0x224d9b[_0x9e76('0x3d')]);return _0x2c3d02[_0x9e76('0x4f')](_0x22db78);}})[_0x9e76('0x27')](function(_0x55b0bb){if(_0x55b0bb){_0x74d53a=_0x55b0bb[_0x9e76('0x44')];if(!_0x224d9b[_0x9e76('0x32')]['hasOwnProperty']('nolimit')){_0x22db78['limit']=qs[_0x9e76('0x20')](_0x224d9b[_0x9e76('0x32')][_0x9e76('0x20')]);_0x22db78['offset']=qs[_0x9e76('0x22')](_0x224d9b[_0x9e76('0x32')]['offset']);}return _0x2c3d02['getSubjects'](_0x22db78);}})[_0x9e76('0x27')](function(_0xa9e0f1){if(_0xa9e0f1){return _0xa9e0f1?{'count':_0x74d53a,'rows':_0xa9e0f1}:null;}})[_0x9e76('0x27')](respondWithResult(_0x28ca16,null))[_0x9e76('0x42')](handleError(_0x28ca16,null));};exports[_0x9e76('0x51')]=function(_0x3a6877,_0x17524d,_0x4cb6fa){var _0x1212eb={};var _0x20ed66={};var _0x1804f0;var _0x1c47fc;return db[_0x9e76('0x3e')][_0x9e76('0x4b')]({'where':{'id':_0x3a6877[_0x9e76('0x43')]['id']}})[_0x9e76('0x27')](handleEntityNotFound(_0x17524d,null))[_0x9e76('0x27')](function(_0x48718e){if(_0x48718e){_0x1804f0=_0x48718e;_0x20ed66[_0x9e76('0x30')]=_[_0x9e76('0x31')](db[_0x9e76('0x4c')][_0x9e76('0x50')]);_0x20ed66[_0x9e76('0x32')]=_[_0x9e76('0x31')](_0x3a6877['query']);_0x20ed66[_0x9e76('0x39')]=_[_0x9e76('0x33')](_0x20ed66['model'],_0x20ed66[_0x9e76('0x32')]);_0x1212eb[_0x9e76('0x34')]=_[_0x9e76('0x33')](_0x20ed66[_0x9e76('0x30')],qs[_0x9e76('0x35')](_0x3a6877[_0x9e76('0x32')][_0x9e76('0x35')]));_0x1212eb['attributes']=_0x1212eb[_0x9e76('0x34')][_0x9e76('0x44')]?_0x1212eb[_0x9e76('0x34')]:_0x20ed66[_0x9e76('0x30')];_0x1212eb[_0x9e76('0x4d')]=qs[_0x9e76('0x4e')](_0x3a6877[_0x9e76('0x32')]['sort']);_0x1212eb['where']=qs[_0x9e76('0x39')](_[_0x9e76('0x38')](_0x3a6877[_0x9e76('0x32')],_0x20ed66['filters']));if(_0x3a6877['query'][_0x9e76('0x3c')]){_0x1212eb[_0x9e76('0x37')]=_[_0x9e76('0x3a')](_0x1212eb[_0x9e76('0x37')],{'$or':_['map'](_0x1212eb[_0x9e76('0x34')],function(_0x1da5c6){var _0x1ab0cb={};_0x1ab0cb[_0x1da5c6]={'$like':'%'+_0x3a6877[_0x9e76('0x32')][_0x9e76('0x3c')]+'%'};return _0x1ab0cb;})});}_0x1212eb=_[_0x9e76('0x3a')]({},_0x1212eb,_0x3a6877['options']);return _0x1804f0[_0x9e76('0x51')](_0x1212eb);}})[_0x9e76('0x27')](function(_0x5e10ce){if(_0x5e10ce){_0x1c47fc=_0x5e10ce['length'];if(!_0x3a6877[_0x9e76('0x32')][_0x9e76('0x52')](_0x9e76('0x36'))){_0x1212eb['limit']=qs[_0x9e76('0x20')](_0x3a6877[_0x9e76('0x32')]['limit']);_0x1212eb[_0x9e76('0x22')]=qs[_0x9e76('0x22')](_0x3a6877[_0x9e76('0x32')][_0x9e76('0x22')]);}return _0x1804f0[_0x9e76('0x51')](_0x1212eb);}})[_0x9e76('0x27')](function(_0x2eb8f4){if(_0x2eb8f4){return _0x2eb8f4?{'count':_0x1c47fc,'rows':_0x2eb8f4}:null;}})[_0x9e76('0x27')](respondWithResult(_0x17524d,null))[_0x9e76('0x42')](handleError(_0x17524d,null));};
\ No newline at end of file
+var _0x265e=['then','destroy','name','index','map','ZohoConfiguration','rawAttributes','fieldName','keys','filters','intersection','model','query','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','findAll','catch','params','include','find','create','body','update','findOne','ZohoField','length','getFields','getSubjects','pick','getDescriptions','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save'];(function(_0x1bcbc4,_0x32b47f){var _0x2fbb28=function(_0x24bc94){while(--_0x24bc94){_0x1bcbc4['push'](_0x1bcbc4['shift']());}};_0x2fbb28(++_0x32b47f);}(_0x265e,0xb8));var _0xe265=function(_0x15acdf,_0x486c01){_0x15acdf=_0x15acdf-0x0;var _0x3fc65b=_0x265e[_0x15acdf];return _0x3fc65b;};'use strict';var emlformat=require(_0xe265('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe265('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe265('0x2'));var moment=require('moment');var BPromise=require(_0xe265('0x3'));var Mustache=require(_0xe265('0x4'));var util=require(_0xe265('0x5'));var path=require(_0xe265('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe265('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe265('0x8'));var crypto=require(_0xe265('0x9'));var jsforce=require(_0xe265('0xa'));var deskjs=require(_0xe265('0xb'));var toCsv=require('to-csv');var querystring=require(_0xe265('0xc'));var Papa=require(_0xe265('0xd'));var Redis=require(_0xe265('0xe'));var authService=require(_0xe265('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xe265('0x10'));var hardwareService=require(_0xe265('0x11'));var logger=require('../../config/logger')(_0xe265('0x12'));var utils=require(_0xe265('0x13'));var config=require(_0xe265('0x14'));var licenseUtil=require(_0xe265('0x15'));var db=require(_0xe265('0x16'))['db'];function respondWithStatusCode(_0x44470e,_0x13f988){_0x13f988=_0x13f988||0xcc;return function(_0x5a2a0e){if(_0x5a2a0e){return _0x44470e[_0xe265('0x17')](_0x13f988);}return _0x44470e[_0xe265('0x18')](_0x13f988)[_0xe265('0x19')]();};}function respondWithResult(_0x9be08b,_0x31c825){_0x31c825=_0x31c825||0xc8;return function(_0x5ed46c){if(_0x5ed46c){return _0x9be08b[_0xe265('0x18')](_0x31c825)[_0xe265('0x1a')](_0x5ed46c);}};}function respondWithFilteredResult(_0x243832,_0x1567de){return function(_0x45aa63){if(_0x45aa63){var _0x93fecf=typeof _0x1567de['offset']===_0xe265('0x1b')&&typeof _0x1567de[_0xe265('0x1c')]==='undefined';var _0x35bd2b=_0x45aa63[_0xe265('0x1d')];var _0x46c418=_0x93fecf?0x0:_0x1567de[_0xe265('0x1e')];var _0x3422f4=_0x93fecf?_0x45aa63[_0xe265('0x1d')]:_0x1567de[_0xe265('0x1e')]+_0x1567de[_0xe265('0x1c')];var _0x1537f2;if(_0x3422f4>=_0x35bd2b){_0x3422f4=_0x35bd2b;_0x1537f2=0xc8;}else{_0x1537f2=0xce;}_0x243832['status'](_0x1537f2);return _0x243832[_0xe265('0x1f')](_0xe265('0x20'),_0x46c418+'-'+_0x3422f4+'/'+_0x35bd2b)[_0xe265('0x1a')](_0x45aa63);}return null;};}function patchUpdates(_0x2561ee){return function(_0x408541){try{jsonpatch[_0xe265('0x21')](_0x408541,_0x2561ee,!![]);}catch(_0x362580){return BPromise['reject'](_0x362580);}return _0x408541[_0xe265('0x22')]();};}function saveUpdates(_0x2713b7,_0x1da2dd){return function(_0x48afbe){if(_0x48afbe){return _0x48afbe['update'](_0x2713b7)[_0xe265('0x23')](function(_0x25dc62){return _0x25dc62;});}return null;};}function removeEntity(_0x478777,_0x4cee8c){return function(_0x3f0382){if(_0x3f0382){return _0x3f0382[_0xe265('0x24')]()[_0xe265('0x23')](function(){_0x478777[_0xe265('0x18')](0xcc)[_0xe265('0x19')]();});}};}function handleEntityNotFound(_0x1d6957,_0x422bae){return function(_0x476482){if(!_0x476482){_0x1d6957['sendStatus'](0x194);}return _0x476482;};}function handleError(_0x1fa5fd,_0x3092bd){_0x3092bd=_0x3092bd||0x1f4;return function(_0x2bbe4f){logger['error'](_0x2bbe4f['stack']);if(_0x2bbe4f[_0xe265('0x25')]){delete _0x2bbe4f[_0xe265('0x25')];}_0x1fa5fd[_0xe265('0x18')](_0x3092bd)['send'](_0x2bbe4f);};}exports[_0xe265('0x26')]=function(_0x15a923,_0x1d10ad){var _0x2855dd={},_0x38e6c2={},_0x474fa5={'count':0x0,'rows':[]};var _0x4bbdeb=_[_0xe265('0x27')](db[_0xe265('0x28')][_0xe265('0x29')],function(_0x517f1a){return{'name':_0x517f1a[_0xe265('0x2a')],'type':_0x517f1a['type']['key']};});_0x38e6c2['model']=_['map'](_0x4bbdeb,_0xe265('0x25'));_0x38e6c2['query']=_[_0xe265('0x2b')](_0x15a923['query']);_0x38e6c2[_0xe265('0x2c')]=_[_0xe265('0x2d')](_0x38e6c2[_0xe265('0x2e')],_0x38e6c2[_0xe265('0x2f')]);_0x2855dd['attributes']=_[_0xe265('0x2d')](_0x38e6c2[_0xe265('0x2e')],qs[_0xe265('0x30')](_0x15a923[_0xe265('0x2f')][_0xe265('0x30')]));_0x2855dd[_0xe265('0x31')]=_0x2855dd['attributes']['length']?_0x2855dd[_0xe265('0x31')]:_0x38e6c2[_0xe265('0x2e')];if(!_0x15a923[_0xe265('0x2f')][_0xe265('0x32')](_0xe265('0x33'))){_0x2855dd[_0xe265('0x1c')]=qs['limit'](_0x15a923['query'][_0xe265('0x1c')]);_0x2855dd[_0xe265('0x1e')]=qs[_0xe265('0x1e')](_0x15a923[_0xe265('0x2f')][_0xe265('0x1e')]);}_0x2855dd[_0xe265('0x34')]=qs['sort'](_0x15a923[_0xe265('0x2f')][_0xe265('0x35')]);_0x2855dd[_0xe265('0x36')]=qs[_0xe265('0x2c')](_['pick'](_0x15a923[_0xe265('0x2f')],_0x38e6c2[_0xe265('0x2c')]),_0x4bbdeb);if(_0x15a923[_0xe265('0x2f')]['filter']){_0x2855dd['where']=_['merge'](_0x2855dd['where'],{'$or':_[_0xe265('0x27')](_0x4bbdeb,function(_0x4fa340){if(_0x4fa340['type']!=='VIRTUAL'){var _0x1f0223={};_0x1f0223[_0x4fa340[_0xe265('0x25')]]={'$like':'%'+_0x15a923[_0xe265('0x2f')][_0xe265('0x37')]+'%'};return _0x1f0223;}})});}_0x2855dd=_[_0xe265('0x38')]({},_0x2855dd,_0x15a923[_0xe265('0x39')]);var _0x31ccb6={'where':_0x2855dd['where']};return db[_0xe265('0x28')]['count'](_0x31ccb6)[_0xe265('0x23')](function(_0x5c2729){_0x474fa5[_0xe265('0x1d')]=_0x5c2729;if(_0x15a923[_0xe265('0x2f')]['includeAll']){_0x2855dd['include']=[{'all':!![]}];}return db[_0xe265('0x28')][_0xe265('0x3a')](_0x2855dd);})[_0xe265('0x23')](function(_0x5855c0){_0x474fa5['rows']=_0x5855c0;return _0x474fa5;})['then'](respondWithFilteredResult(_0x1d10ad,_0x2855dd))[_0xe265('0x3b')](handleError(_0x1d10ad,null));};exports['show']=function(_0x37d24a,_0x3f7385){var _0x356cff={'raw':![],'where':{'id':_0x37d24a[_0xe265('0x3c')]['id']}},_0x20ea73={};_0x20ea73['model']=_[_0xe265('0x2b')](db[_0xe265('0x28')][_0xe265('0x29')]);_0x20ea73[_0xe265('0x2f')]=_[_0xe265('0x2b')](_0x37d24a['query']);_0x20ea73[_0xe265('0x2c')]=_[_0xe265('0x2d')](_0x20ea73['model'],_0x20ea73[_0xe265('0x2f')]);_0x356cff[_0xe265('0x31')]=_[_0xe265('0x2d')](_0x20ea73['model'],qs[_0xe265('0x30')](_0x37d24a['query'][_0xe265('0x30')]));_0x356cff[_0xe265('0x31')]=_0x356cff[_0xe265('0x31')]['length']?_0x356cff[_0xe265('0x31')]:_0x20ea73[_0xe265('0x2e')];if(_0x37d24a[_0xe265('0x2f')]['includeAll']){_0x356cff[_0xe265('0x3d')]=[{'all':!![]}];}_0x356cff=_[_0xe265('0x38')]({},_0x356cff,_0x37d24a['options']);return db[_0xe265('0x28')][_0xe265('0x3e')](_0x356cff)['then'](handleEntityNotFound(_0x3f7385,null))[_0xe265('0x23')](respondWithResult(_0x3f7385,null))[_0xe265('0x3b')](handleError(_0x3f7385,null));};exports[_0xe265('0x3f')]=function(_0x58e6cb,_0x5a3fcc){return db['ZohoConfiguration']['create'](_0x58e6cb[_0xe265('0x40')],{})['then'](respondWithResult(_0x5a3fcc,0xc9))[_0xe265('0x3b')](handleError(_0x5a3fcc,null));};exports[_0xe265('0x41')]=function(_0x3a3ea7,_0x1c722b){if(_0x3a3ea7[_0xe265('0x40')]['id']){delete _0x3a3ea7['body']['id'];}return db[_0xe265('0x28')][_0xe265('0x3e')]({'where':{'id':_0x3a3ea7[_0xe265('0x3c')]['id']}})['then'](handleEntityNotFound(_0x1c722b,null))[_0xe265('0x23')](saveUpdates(_0x3a3ea7['body'],null))['then'](respondWithResult(_0x1c722b,null))['catch'](handleError(_0x1c722b,null));};exports[_0xe265('0x24')]=function(_0x32d7e3,_0x1e7a98){return db[_0xe265('0x28')][_0xe265('0x3e')]({'where':{'id':_0x32d7e3[_0xe265('0x3c')]['id']}})['then'](handleEntityNotFound(_0x1e7a98,null))[_0xe265('0x23')](removeEntity(_0x1e7a98,null))[_0xe265('0x3b')](handleError(_0x1e7a98,null));};exports['getFields']=function(_0x3c238f,_0x3c937e,_0x133de5){var _0x52cf04={};var _0x49e4c9={};var _0x4a1a75;var _0x85211d;return db[_0xe265('0x28')][_0xe265('0x42')]({'where':{'id':_0x3c238f[_0xe265('0x3c')]['id']}})['then'](handleEntityNotFound(_0x3c937e,null))['then'](function(_0x31475d){if(_0x31475d){_0x4a1a75=_0x31475d;_0x49e4c9['model']=_[_0xe265('0x2b')](db[_0xe265('0x43')]['rawAttributes']);_0x49e4c9[_0xe265('0x2f')]=_[_0xe265('0x2b')](_0x3c238f[_0xe265('0x2f')]);_0x49e4c9[_0xe265('0x2c')]=_[_0xe265('0x2d')](_0x49e4c9[_0xe265('0x2e')],_0x49e4c9['query']);_0x52cf04['attributes']=_[_0xe265('0x2d')](_0x49e4c9[_0xe265('0x2e')],qs[_0xe265('0x30')](_0x3c238f[_0xe265('0x2f')][_0xe265('0x30')]));_0x52cf04['attributes']=_0x52cf04[_0xe265('0x31')][_0xe265('0x44')]?_0x52cf04[_0xe265('0x31')]:_0x49e4c9[_0xe265('0x2e')];_0x52cf04[_0xe265('0x34')]=qs[_0xe265('0x35')](_0x3c238f[_0xe265('0x2f')][_0xe265('0x35')]);_0x52cf04['where']=qs[_0xe265('0x2c')](_['pick'](_0x3c238f['query'],_0x49e4c9[_0xe265('0x2c')]));if(_0x3c238f[_0xe265('0x2f')][_0xe265('0x37')]){_0x52cf04[_0xe265('0x36')]=_[_0xe265('0x38')](_0x52cf04['where'],{'$or':_[_0xe265('0x27')](_0x52cf04[_0xe265('0x31')],function(_0x38f135){var _0x3af1c9={};_0x3af1c9[_0x38f135]={'$like':'%'+_0x3c238f['query'][_0xe265('0x37')]+'%'};return _0x3af1c9;})});}_0x52cf04=_[_0xe265('0x38')]({},_0x52cf04,_0x3c238f[_0xe265('0x39')]);return _0x4a1a75[_0xe265('0x45')](_0x52cf04);}})[_0xe265('0x23')](function(_0x5958f4){if(_0x5958f4){_0x85211d=_0x5958f4[_0xe265('0x44')];if(!_0x3c238f[_0xe265('0x2f')][_0xe265('0x32')](_0xe265('0x33'))){_0x52cf04[_0xe265('0x1c')]=qs['limit'](_0x3c238f['query'][_0xe265('0x1c')]);_0x52cf04[_0xe265('0x1e')]=qs['offset'](_0x3c238f[_0xe265('0x2f')][_0xe265('0x1e')]);}return _0x4a1a75[_0xe265('0x45')](_0x52cf04);}})[_0xe265('0x23')](function(_0x571aa1){if(_0x571aa1){return _0x571aa1?{'count':_0x85211d,'rows':_0x571aa1}:null;}})[_0xe265('0x23')](respondWithResult(_0x3c937e,null))[_0xe265('0x3b')](handleError(_0x3c937e,null));};exports[_0xe265('0x46')]=function(_0x190b32,_0x5338c8,_0x22c1f0){var _0x5a66d5={};var _0x325cb1={};var _0x267720;var _0x19e15e;return db[_0xe265('0x28')][_0xe265('0x42')]({'where':{'id':_0x190b32['params']['id']}})[_0xe265('0x23')](handleEntityNotFound(_0x5338c8,null))[_0xe265('0x23')](function(_0x37035e){if(_0x37035e){_0x267720=_0x37035e;_0x325cb1[_0xe265('0x2e')]=_[_0xe265('0x2b')](db['ZohoField'][_0xe265('0x29')]);_0x325cb1[_0xe265('0x2f')]=_[_0xe265('0x2b')](_0x190b32[_0xe265('0x2f')]);_0x325cb1['filters']=_[_0xe265('0x2d')](_0x325cb1[_0xe265('0x2e')],_0x325cb1[_0xe265('0x2f')]);_0x5a66d5[_0xe265('0x31')]=_[_0xe265('0x2d')](_0x325cb1[_0xe265('0x2e')],qs[_0xe265('0x30')](_0x190b32[_0xe265('0x2f')]['fields']));_0x5a66d5[_0xe265('0x31')]=_0x5a66d5[_0xe265('0x31')][_0xe265('0x44')]?_0x5a66d5[_0xe265('0x31')]:_0x325cb1[_0xe265('0x2e')];_0x5a66d5[_0xe265('0x34')]=qs[_0xe265('0x35')](_0x190b32[_0xe265('0x2f')][_0xe265('0x35')]);_0x5a66d5['where']=qs['filters'](_[_0xe265('0x47')](_0x190b32[_0xe265('0x2f')],_0x325cb1['filters']));if(_0x190b32[_0xe265('0x2f')]['filter']){_0x5a66d5[_0xe265('0x36')]=_[_0xe265('0x38')](_0x5a66d5[_0xe265('0x36')],{'$or':_[_0xe265('0x27')](_0x5a66d5[_0xe265('0x31')],function(_0x2a7958){var _0xbc40e0={};_0xbc40e0[_0x2a7958]={'$like':'%'+_0x190b32[_0xe265('0x2f')][_0xe265('0x37')]+'%'};return _0xbc40e0;})});}_0x5a66d5=_[_0xe265('0x38')]({},_0x5a66d5,_0x190b32[_0xe265('0x39')]);return _0x267720[_0xe265('0x46')](_0x5a66d5);}})[_0xe265('0x23')](function(_0x47032c){if(_0x47032c){_0x19e15e=_0x47032c[_0xe265('0x44')];if(!_0x190b32[_0xe265('0x2f')][_0xe265('0x32')](_0xe265('0x33'))){_0x5a66d5['limit']=qs['limit'](_0x190b32[_0xe265('0x2f')]['limit']);_0x5a66d5[_0xe265('0x1e')]=qs[_0xe265('0x1e')](_0x190b32[_0xe265('0x2f')][_0xe265('0x1e')]);}return _0x267720[_0xe265('0x46')](_0x5a66d5);}})['then'](function(_0x3c4bb4){if(_0x3c4bb4){return _0x3c4bb4?{'count':_0x19e15e,'rows':_0x3c4bb4}:null;}})[_0xe265('0x23')](respondWithResult(_0x5338c8,null))[_0xe265('0x3b')](handleError(_0x5338c8,null));};exports[_0xe265('0x48')]=function(_0xfbf162,_0xffc151,_0x4dcccf){var _0x58d230={};var _0x3e13df={};var _0x509167;var _0x21d748;return db[_0xe265('0x28')][_0xe265('0x42')]({'where':{'id':_0xfbf162[_0xe265('0x3c')]['id']}})['then'](handleEntityNotFound(_0xffc151,null))[_0xe265('0x23')](function(_0x27b0c7){if(_0x27b0c7){_0x509167=_0x27b0c7;_0x3e13df[_0xe265('0x2e')]=_[_0xe265('0x2b')](db['ZohoField']['rawAttributes']);_0x3e13df[_0xe265('0x2f')]=_['keys'](_0xfbf162['query']);_0x3e13df[_0xe265('0x2c')]=_['intersection'](_0x3e13df[_0xe265('0x2e')],_0x3e13df['query']);_0x58d230[_0xe265('0x31')]=_[_0xe265('0x2d')](_0x3e13df['model'],qs['fields'](_0xfbf162[_0xe265('0x2f')]['fields']));_0x58d230['attributes']=_0x58d230['attributes'][_0xe265('0x44')]?_0x58d230[_0xe265('0x31')]:_0x3e13df['model'];_0x58d230['order']=qs[_0xe265('0x35')](_0xfbf162[_0xe265('0x2f')][_0xe265('0x35')]);_0x58d230[_0xe265('0x36')]=qs[_0xe265('0x2c')](_['pick'](_0xfbf162[_0xe265('0x2f')],_0x3e13df[_0xe265('0x2c')]));if(_0xfbf162['query'][_0xe265('0x37')]){_0x58d230[_0xe265('0x36')]=_[_0xe265('0x38')](_0x58d230['where'],{'$or':_[_0xe265('0x27')](_0x58d230[_0xe265('0x31')],function(_0x203ae4){var _0x1676aa={};_0x1676aa[_0x203ae4]={'$like':'%'+_0xfbf162['query'][_0xe265('0x37')]+'%'};return _0x1676aa;})});}_0x58d230=_[_0xe265('0x38')]({},_0x58d230,_0xfbf162[_0xe265('0x39')]);return _0x509167['getDescriptions'](_0x58d230);}})[_0xe265('0x23')](function(_0x4d40f2){if(_0x4d40f2){_0x21d748=_0x4d40f2[_0xe265('0x44')];if(!_0xfbf162[_0xe265('0x2f')][_0xe265('0x32')](_0xe265('0x33'))){_0x58d230[_0xe265('0x1c')]=qs[_0xe265('0x1c')](_0xfbf162[_0xe265('0x2f')]['limit']);_0x58d230[_0xe265('0x1e')]=qs['offset'](_0xfbf162[_0xe265('0x2f')][_0xe265('0x1e')]);}return _0x509167[_0xe265('0x48')](_0x58d230);}})[_0xe265('0x23')](function(_0x4c84ec){if(_0x4c84ec){return _0x4c84ec?{'count':_0x21d748,'rows':_0x4c84ec}:null;}})['then'](respondWithResult(_0xffc151,null))[_0xe265('0x3b')](handleError(_0xffc151,null));};
\ No newline at end of file
index bd55c5e..667347a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55d9=['./intZohoConfiguration.attributes','define','ZohoConfiguration','int_zoho_configurations','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x12ca5f,_0x223d98){var _0xfc3ae9=function(_0x1928fb){while(--_0x1928fb){_0x12ca5f['push'](_0x12ca5f['shift']());}};_0xfc3ae9(++_0x223d98);}(_0x55d9,0xeb));var _0x955d=function(_0x2f1172,_0x5f5b26){_0x2f1172=_0x2f1172-0x0;var _0x58e374=_0x55d9[_0x2f1172];return _0x58e374;};'use strict';var _=require(_0x955d('0x0'));var util=require('util');var logger=require(_0x955d('0x1'))(_0x955d('0x2'));var moment=require(_0x955d('0x3'));var BPromise=require(_0x955d('0x4'));var rp=require(_0x955d('0x5'));var fs=require('fs');var path=require(_0x955d('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x955d('0x7'));module['exports']=function(_0x27f87d,_0x4c8739){return _0x27f87d[_0x955d('0x8')](_0x955d('0x9'),attributes,{'tableName':_0x955d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbf58=['../../config/environment','./intZohoConfiguration.attributes','exports','ZohoConfiguration','util','../../config/logger','api','moment','bluebird','path'];(function(_0x32f9ca,_0x2fa8bc){var _0x52e083=function(_0x4fd86a){while(--_0x4fd86a){_0x32f9ca['push'](_0x32f9ca['shift']());}};_0x52e083(++_0x2fa8bc);}(_0xbf58,0xea));var _0x8bf5=function(_0x57849e,_0xe8baf1){_0x57849e=_0x57849e-0x0;var _0x57469a=_0xbf58[_0x57849e];return _0x57469a;};'use strict';var _=require('lodash');var util=require(_0x8bf5('0x0'));var logger=require(_0x8bf5('0x1'))(_0x8bf5('0x2'));var moment=require(_0x8bf5('0x3'));var BPromise=require(_0x8bf5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8bf5('0x5'));var rimraf=require('rimraf');var config=require(_0x8bf5('0x6'));var attributes=require(_0x8bf5('0x7'));module[_0x8bf5('0x8')]=function(_0x2fd300,_0x1f41a0){return _0x2fd300['define'](_0x8bf5('0x9'),attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e30cfe5..6525434 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb94=['jayson/promise','client','http','request','then','info','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ZohoConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x46ad9e,_0x203184){var _0x5727cb=function(_0x32a93e){while(--_0x32a93e){_0x46ad9e['push'](_0x46ad9e['shift']());}};_0x5727cb(++_0x203184);}(_0xcb94,0x92));var _0x4cb9=function(_0x497161,_0x413161){_0x497161=_0x497161-0x0;var _0x3b6172=_0xcb94[_0x497161];return _0x3b6172;};'use strict';var _=require(_0x4cb9('0x0'));var util=require(_0x4cb9('0x1'));var moment=require('moment');var BPromise=require(_0x4cb9('0x2'));var rs=require(_0x4cb9('0x3'));var fs=require('fs');var Redis=require(_0x4cb9('0x4'));var db=require(_0x4cb9('0x5'))['db'];var utils=require(_0x4cb9('0x6'));var logger=require(_0x4cb9('0x7'))(_0x4cb9('0x8'));var config=require(_0x4cb9('0x9'));var jayson=require(_0x4cb9('0xa'));var client=jayson[_0x4cb9('0xb')][_0x4cb9('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2aaffd,_0x593594,_0x5b05d3){return new BPromise(function(_0x55b192,_0x354b31){return client[_0x4cb9('0xd')](_0x2aaffd,_0x5b05d3)[_0x4cb9('0xe')](function(_0x5ef5fc){logger[_0x4cb9('0xf')]('ZohoConfiguration,\x20%s,\x20%s',_0x593594,'request\x20sent');logger[_0x4cb9('0x10')](_0x4cb9('0x11'),_0x593594,_0x4cb9('0x12'),JSON[_0x4cb9('0x13')](_0x5ef5fc));if(_0x5ef5fc['error']){if(_0x5ef5fc[_0x4cb9('0x14')][_0x4cb9('0x15')]===0x1f4){logger[_0x4cb9('0x14')](_0x4cb9('0x16'),_0x593594,_0x5ef5fc[_0x4cb9('0x14')][_0x4cb9('0x17')]);return _0x354b31(_0x5ef5fc[_0x4cb9('0x14')][_0x4cb9('0x17')]);}logger[_0x4cb9('0x14')]('ZohoConfiguration,\x20%s,\x20%s',_0x593594,_0x5ef5fc[_0x4cb9('0x14')][_0x4cb9('0x17')]);return _0x55b192(_0x5ef5fc[_0x4cb9('0x14')][_0x4cb9('0x17')]);}else{logger[_0x4cb9('0xf')]('ZohoConfiguration,\x20%s,\x20%s',_0x593594,_0x4cb9('0x12'));_0x55b192(_0x5ef5fc[_0x4cb9('0x18')][_0x4cb9('0x17')]);}})[_0x4cb9('0x19')](function(_0x3cf3a9){logger['error']('ZohoConfiguration,\x20%s,\x20%s',_0x593594,_0x3cf3a9);_0x354b31(_0x3cf3a9);});});}
\ No newline at end of file
+var _0xabba=['ZohoConfiguration,\x20%s,\x20%s','message','info','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x14e3c4,_0x1036d4){var _0x3c90f6=function(_0x166ba3){while(--_0x166ba3){_0x14e3c4['push'](_0x14e3c4['shift']());}};_0x3c90f6(++_0x1036d4);}(_0xabba,0xca));var _0xaabb=function(_0x4b45cc,_0x13e14f){_0x4b45cc=_0x4b45cc-0x0;var _0x5e9fc1=_0xabba[_0x4b45cc];return _0x5e9fc1;};'use strict';var _=require(_0xaabb('0x0'));var util=require(_0xaabb('0x1'));var moment=require('moment');var BPromise=require(_0xaabb('0x2'));var rs=require(_0xaabb('0x3'));var fs=require('fs');var Redis=require(_0xaabb('0x4'));var db=require(_0xaabb('0x5'))['db'];var utils=require(_0xaabb('0x6'));var logger=require(_0xaabb('0x7'))(_0xaabb('0x8'));var config=require(_0xaabb('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xaabb('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ac821,_0x253744,_0x298639){return new BPromise(function(_0x23291a,_0x30b861){return client[_0xaabb('0xb')](_0x4ac821,_0x298639)['then'](function(_0x20c032){logger['info']('ZohoConfiguration,\x20%s,\x20%s',_0x253744,_0xaabb('0xc'));logger[_0xaabb('0xd')](_0xaabb('0xe'),_0x253744,'request\x20sent',JSON[_0xaabb('0xf')](_0x20c032));if(_0x20c032[_0xaabb('0x10')]){if(_0x20c032[_0xaabb('0x10')][_0xaabb('0x11')]===0x1f4){logger[_0xaabb('0x10')](_0xaabb('0x12'),_0x253744,_0x20c032[_0xaabb('0x10')][_0xaabb('0x13')]);return _0x30b861(_0x20c032[_0xaabb('0x10')][_0xaabb('0x13')]);}logger[_0xaabb('0x10')](_0xaabb('0x12'),_0x253744,_0x20c032[_0xaabb('0x10')][_0xaabb('0x13')]);return _0x23291a(_0x20c032[_0xaabb('0x10')][_0xaabb('0x13')]);}else{logger[_0xaabb('0x14')](_0xaabb('0x12'),_0x253744,_0xaabb('0xc'));_0x23291a(_0x20c032[_0xaabb('0x15')][_0xaabb('0x13')]);}})['catch'](function(_0x3f999d){logger[_0xaabb('0x10')](_0xaabb('0x12'),_0x253744,_0x3f999d);_0x30b861(_0x3f999d);});});}
\ No newline at end of file
index c161f4c..6a8b40a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacdb=['express','Router','../../components/auth/service','../../components/interaction/service','./intZohoField.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','destroy','exports','util','path','connect-timeout'];(function(_0x315aea,_0x318a80){var _0x4a4bdb=function(_0x7c049c){while(--_0x7c049c){_0x315aea['push'](_0x315aea['shift']());}};_0x4a4bdb(++_0x318a80);}(_0xacdb,0x11a));var _0xbacd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xacdb[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0xbacd('0x0'));var path=require(_0xbacd('0x1'));var timeout=require(_0xbacd('0x2'));var express=require(_0xbacd('0x3'));var router=express[_0xbacd('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xbacd('0x5'));var interaction=require(_0xbacd('0x6'));var config=require('../../config/environment');var controller=require(_0xbacd('0x7'));router['get']('/',auth[_0xbacd('0x8')](),controller[_0xbacd('0x9')]);router[_0xbacd('0xa')](_0xbacd('0xb'),auth['isAuthenticated'](),controller[_0xbacd('0xc')]);router[_0xbacd('0xd')]('/',auth[_0xbacd('0x8')](),controller[_0xbacd('0xe')]);router[_0xbacd('0xf')](_0xbacd('0xb'),auth[_0xbacd('0x8')](),controller[_0xbacd('0x10')]);router['delete'](_0xbacd('0xb'),auth[_0xbacd('0x8')](),controller[_0xbacd('0x11')]);module[_0xbacd('0x12')]=router;
\ No newline at end of file
+var _0xe8bb=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','show','post','create','put','update','delete','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x489b4d,_0x4ddcbe){var _0x17f1ba=function(_0x90a305){while(--_0x90a305){_0x489b4d['push'](_0x489b4d['shift']());}};_0x17f1ba(++_0x4ddcbe);}(_0xe8bb,0x71));var _0xbe8b=function(_0x757942,_0x34287f){_0x757942=_0x757942-0x0;var _0xf7b37c=_0xe8bb[_0x757942];return _0xf7b37c;};'use strict';var multer=require(_0xbe8b('0x0'));var util=require('util');var path=require(_0xbe8b('0x1'));var timeout=require(_0xbe8b('0x2'));var express=require(_0xbe8b('0x3'));var router=express[_0xbe8b('0x4')]();var fs_extra=require(_0xbe8b('0x5'));var auth=require(_0xbe8b('0x6'));var interaction=require(_0xbe8b('0x7'));var config=require(_0xbe8b('0x8'));var controller=require('./intZohoField.controller');router[_0xbe8b('0x9')]('/',auth[_0xbe8b('0xa')](),controller['index']);router[_0xbe8b('0x9')]('/:id',auth[_0xbe8b('0xa')](),controller[_0xbe8b('0xb')]);router[_0xbe8b('0xc')]('/',auth[_0xbe8b('0xa')](),controller[_0xbe8b('0xd')]);router[_0xbe8b('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xbe8b('0xf')]);router[_0xbe8b('0x10')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index ed2bd38..4951171 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4259=['variable','keyValue','picklist','STRING','sequelize','exports','ENUM','string'];(function(_0x40be86,_0x5c67d7){var _0x2512a5=function(_0x3f8d2b){while(--_0x3f8d2b){_0x40be86['push'](_0x40be86['shift']());}};_0x2512a5(++_0x5c67d7);}(_0x4259,0x124));var _0x9425=function(_0x11c61c,_0x203f6f){_0x11c61c=_0x11c61c-0x0;var _0x142782=_0x4259[_0x11c61c];return _0x142782;};'use strict';var Sequelize=require(_0x9425('0x0'));module[_0x9425('0x1')]={'type':{'type':Sequelize[_0x9425('0x2')](_0x9425('0x3'),_0x9425('0x4'),'customVariable',_0x9425('0x5'),_0x9425('0x6')),'defaultValue':_0x9425('0x3')},'content':{'type':Sequelize[_0x9425('0x7')]},'key':{'type':Sequelize[_0x9425('0x7')]},'keyType':{'type':Sequelize[_0x9425('0x2')](_0x9425('0x3'),_0x9425('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0x9425('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x9425('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9425('0x7')]}};
\ No newline at end of file
+var _0xbc4f=['STRING','BOOLEAN','sequelize','exports','ENUM','variable','customVariable','picklist','string'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0xbc4f,0x18e));var _0xfbc4=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0xbc4f[_0x40ac5e];return _0x2839d6;};'use strict';var Sequelize=require(_0xfbc4('0x0'));module[_0xfbc4('0x1')]={'type':{'type':Sequelize[_0xfbc4('0x2')]('string',_0xfbc4('0x3'),_0xfbc4('0x4'),'keyValue',_0xfbc4('0x5')),'defaultValue':_0xfbc4('0x6')},'content':{'type':Sequelize[_0xfbc4('0x7')]},'key':{'type':Sequelize[_0xfbc4('0x7')]},'keyType':{'type':Sequelize[_0xfbc4('0x2')](_0xfbc4('0x6'),_0xfbc4('0x3'),_0xfbc4('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xfbc4('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xfbc4('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xfbc4('0x7')]}};
\ No newline at end of file
index f5e0a6a..47810af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10df=['bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','status','end','limit','count','offset','set','Content-Range','json','apply','save','update','then','destroy','sendStatus','error','name','send','map','ZohoField','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','show','params','keys','includeAll','find','catch','create','body','eml-format','rimraf','fast-json-patch','moment'];(function(_0x4d8a59,_0x4a283f){var _0x2606ef=function(_0x109ea7){while(--_0x109ea7){_0x4d8a59['push'](_0x4d8a59['shift']());}};_0x2606ef(++_0x4a283f);}(_0x10df,0x178));var _0xf10d=function(_0x57cc16,_0x444378){_0x57cc16=_0x57cc16-0x0;var _0x5421e5=_0x10df[_0x57cc16];return _0x5421e5;};'use strict';var emlformat=require(_0xf10d('0x0'));var rimraf=require(_0xf10d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf10d('0x2'));var rp=require('request-promise');var moment=require(_0xf10d('0x3'));var BPromise=require(_0xf10d('0x4'));var Mustache=require('mustache');var util=require(_0xf10d('0x5'));var path=require(_0xf10d('0x6'));var sox=require(_0xf10d('0x7'));var csv=require(_0xf10d('0x8'));var ejs=require(_0xf10d('0x9'));var fs=require('fs');var fs_extra=require(_0xf10d('0xa'));var _=require(_0xf10d('0xb'));var squel=require(_0xf10d('0xc'));var crypto=require(_0xf10d('0xd'));var jsforce=require(_0xf10d('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xf10d('0x8'));var querystring=require(_0xf10d('0xf'));var Papa=require(_0xf10d('0x10'));var Redis=require(_0xf10d('0x11'));var authService=require(_0xf10d('0x12'));var qs=require(_0xf10d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf10d('0x14'));var logger=require(_0xf10d('0x15'))(_0xf10d('0x16'));var utils=require('../../config/utils');var config=require(_0xf10d('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xf10d('0x18'))['db'];function respondWithStatusCode(_0x4b4827,_0x2ba287){_0x2ba287=_0x2ba287||0xcc;return function(_0x3e8adf){if(_0x3e8adf){return _0x4b4827['sendStatus'](_0x2ba287);}return _0x4b4827[_0xf10d('0x19')](_0x2ba287)[_0xf10d('0x1a')]();};}function respondWithResult(_0x2118e1,_0x5930b3){_0x5930b3=_0x5930b3||0xc8;return function(_0x440a3d){if(_0x440a3d){return _0x2118e1[_0xf10d('0x19')](_0x5930b3)['json'](_0x440a3d);}};}function respondWithFilteredResult(_0x1eacf6,_0x5f259c){return function(_0xd30c16){if(_0xd30c16){var _0x5590c3=typeof _0x5f259c['offset']==='undefined'&&typeof _0x5f259c[_0xf10d('0x1b')]==='undefined';var _0x9a539f=_0xd30c16[_0xf10d('0x1c')];var _0x1e235a=_0x5590c3?0x0:_0x5f259c[_0xf10d('0x1d')];var _0x3ad44a=_0x5590c3?_0xd30c16[_0xf10d('0x1c')]:_0x5f259c[_0xf10d('0x1d')]+_0x5f259c['limit'];var _0x459edc;if(_0x3ad44a>=_0x9a539f){_0x3ad44a=_0x9a539f;_0x459edc=0xc8;}else{_0x459edc=0xce;}_0x1eacf6[_0xf10d('0x19')](_0x459edc);return _0x1eacf6[_0xf10d('0x1e')](_0xf10d('0x1f'),_0x1e235a+'-'+_0x3ad44a+'/'+_0x9a539f)[_0xf10d('0x20')](_0xd30c16);}return null;};}function patchUpdates(_0x4a539a){return function(_0x2c41bd){try{jsonpatch[_0xf10d('0x21')](_0x2c41bd,_0x4a539a,!![]);}catch(_0x1b15ba){return BPromise['reject'](_0x1b15ba);}return _0x2c41bd[_0xf10d('0x22')]();};}function saveUpdates(_0x29795d,_0x5fea4b){return function(_0x3c6637){if(_0x3c6637){return _0x3c6637[_0xf10d('0x23')](_0x29795d)[_0xf10d('0x24')](function(_0x4a4319){return _0x4a4319;});}return null;};}function removeEntity(_0x272b82,_0x5f03b5){return function(_0x1ad6a6){if(_0x1ad6a6){return _0x1ad6a6[_0xf10d('0x25')]()[_0xf10d('0x24')](function(){_0x272b82[_0xf10d('0x19')](0xcc)[_0xf10d('0x1a')]();});}};}function handleEntityNotFound(_0x10c163,_0x1bc244){return function(_0x52dcb8){if(!_0x52dcb8){_0x10c163[_0xf10d('0x26')](0x194);}return _0x52dcb8;};}function handleError(_0x9bfa1a,_0x29f459){_0x29f459=_0x29f459||0x1f4;return function(_0x490fec){logger[_0xf10d('0x27')](_0x490fec['stack']);if(_0x490fec[_0xf10d('0x28')]){delete _0x490fec[_0xf10d('0x28')];}_0x9bfa1a[_0xf10d('0x19')](_0x29f459)[_0xf10d('0x29')](_0x490fec);};}exports['index']=function(_0x5442e2,_0x13ac5b){var _0x32b133={},_0x24efdf={},_0x23ca47={'count':0x0,'rows':[]};var _0x4612b5=_[_0xf10d('0x2a')](db[_0xf10d('0x2b')][_0xf10d('0x2c')],function(_0xba9ec0){return{'name':_0xba9ec0[_0xf10d('0x2d')],'type':_0xba9ec0[_0xf10d('0x2e')][_0xf10d('0x2f')]};});_0x24efdf['model']=_[_0xf10d('0x2a')](_0x4612b5,_0xf10d('0x28'));_0x24efdf[_0xf10d('0x30')]=_['keys'](_0x5442e2[_0xf10d('0x30')]);_0x24efdf[_0xf10d('0x31')]=_[_0xf10d('0x32')](_0x24efdf[_0xf10d('0x33')],_0x24efdf[_0xf10d('0x30')]);_0x32b133[_0xf10d('0x34')]=_[_0xf10d('0x32')](_0x24efdf[_0xf10d('0x33')],qs[_0xf10d('0x35')](_0x5442e2[_0xf10d('0x30')][_0xf10d('0x35')]));_0x32b133[_0xf10d('0x34')]=_0x32b133[_0xf10d('0x34')][_0xf10d('0x36')]?_0x32b133[_0xf10d('0x34')]:_0x24efdf['model'];if(!_0x5442e2['query'][_0xf10d('0x37')](_0xf10d('0x38'))){_0x32b133['limit']=qs[_0xf10d('0x1b')](_0x5442e2[_0xf10d('0x30')][_0xf10d('0x1b')]);_0x32b133[_0xf10d('0x1d')]=qs[_0xf10d('0x1d')](_0x5442e2['query'][_0xf10d('0x1d')]);}_0x32b133[_0xf10d('0x39')]=qs[_0xf10d('0x3a')](_0x5442e2[_0xf10d('0x30')][_0xf10d('0x3a')]);_0x32b133[_0xf10d('0x3b')]=qs[_0xf10d('0x31')](_[_0xf10d('0x3c')](_0x5442e2[_0xf10d('0x30')],_0x24efdf['filters']),_0x4612b5);if(_0x5442e2[_0xf10d('0x30')][_0xf10d('0x3d')]){_0x32b133['where']=_[_0xf10d('0x3e')](_0x32b133[_0xf10d('0x3b')],{'$or':_[_0xf10d('0x2a')](_0x4612b5,function(_0x257150){if(_0x257150['type']!==_0xf10d('0x3f')){var _0x47891c={};_0x47891c[_0x257150[_0xf10d('0x28')]]={'$like':'%'+_0x5442e2[_0xf10d('0x30')]['filter']+'%'};return _0x47891c;}})});}_0x32b133=_[_0xf10d('0x3e')]({},_0x32b133,_0x5442e2[_0xf10d('0x40')]);var _0xc32568={'where':_0x32b133[_0xf10d('0x3b')]};return db[_0xf10d('0x2b')]['count'](_0xc32568)[_0xf10d('0x24')](function(_0x4d15b3){_0x23ca47[_0xf10d('0x1c')]=_0x4d15b3;if(_0x5442e2[_0xf10d('0x30')]['includeAll']){_0x32b133[_0xf10d('0x41')]=[{'all':!![]}];}return db[_0xf10d('0x2b')][_0xf10d('0x42')](_0x32b133);})[_0xf10d('0x24')](function(_0x5487fe){_0x23ca47[_0xf10d('0x43')]=_0x5487fe;return _0x23ca47;})['then'](respondWithFilteredResult(_0x13ac5b,_0x32b133))['catch'](handleError(_0x13ac5b,null));};exports[_0xf10d('0x44')]=function(_0x168827,_0x5ae7c4){var _0x331803={'raw':!![],'where':{'id':_0x168827[_0xf10d('0x45')]['id']}},_0x2d7987={};_0x2d7987['model']=_[_0xf10d('0x46')](db['ZohoField'][_0xf10d('0x2c')]);_0x2d7987[_0xf10d('0x30')]=_[_0xf10d('0x46')](_0x168827['query']);_0x2d7987[_0xf10d('0x31')]=_['intersection'](_0x2d7987[_0xf10d('0x33')],_0x2d7987[_0xf10d('0x30')]);_0x331803[_0xf10d('0x34')]=_['intersection'](_0x2d7987[_0xf10d('0x33')],qs['fields'](_0x168827[_0xf10d('0x30')]['fields']));_0x331803['attributes']=_0x331803['attributes'][_0xf10d('0x36')]?_0x331803[_0xf10d('0x34')]:_0x2d7987[_0xf10d('0x33')];if(_0x168827['query'][_0xf10d('0x47')]){_0x331803[_0xf10d('0x41')]=[{'all':!![]}];}_0x331803=_[_0xf10d('0x3e')]({},_0x331803,_0x168827[_0xf10d('0x40')]);return db[_0xf10d('0x2b')][_0xf10d('0x48')](_0x331803)['then'](handleEntityNotFound(_0x5ae7c4,null))['then'](respondWithResult(_0x5ae7c4,null))[_0xf10d('0x49')](handleError(_0x5ae7c4,null));};exports[_0xf10d('0x4a')]=function(_0x3b1cbb,_0x1d85b6){return db['ZohoField']['create'](_0x3b1cbb[_0xf10d('0x4b')],{})[_0xf10d('0x24')](respondWithResult(_0x1d85b6,0xc9))['catch'](handleError(_0x1d85b6,null));};exports[_0xf10d('0x23')]=function(_0x19a347,_0x260530){if(_0x19a347[_0xf10d('0x4b')]['id']){delete _0x19a347[_0xf10d('0x4b')]['id'];}return db['ZohoField']['find']({'where':{'id':_0x19a347[_0xf10d('0x45')]['id']}})[_0xf10d('0x24')](handleEntityNotFound(_0x260530,null))['then'](saveUpdates(_0x19a347[_0xf10d('0x4b')],null))[_0xf10d('0x24')](respondWithResult(_0x260530,null))[_0xf10d('0x49')](handleError(_0x260530,null));};exports[_0xf10d('0x25')]=function(_0x24070f,_0x55f3fe){return db[_0xf10d('0x2b')][_0xf10d('0x48')]({'where':{'id':_0x24070f[_0xf10d('0x45')]['id']}})[_0xf10d('0x24')](handleEntityNotFound(_0x55f3fe,null))[_0xf10d('0x24')](removeEntity(_0x55f3fe,null))[_0xf10d('0x49')](handleError(_0x55f3fe,null));};
\ No newline at end of file
+var _0xc06d=['json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','ZohoField','includeAll','include','findAll','catch','show','params','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x344244,_0x3e301d){var _0x35b720=function(_0xdccb0){while(--_0xdccb0){_0x344244['push'](_0x344244['shift']());}};_0x35b720(++_0x3e301d);}(_0xc06d,0x15a));var _0xdc06=function(_0x2808e7,_0x54f13d){_0x2808e7=_0x2808e7-0x0;var _0x361a0b=_0xc06d[_0x2808e7];return _0x361a0b;};'use strict';var emlformat=require(_0xdc06('0x0'));var rimraf=require(_0xdc06('0x1'));var zipdir=require(_0xdc06('0x2'));var jsonpatch=require(_0xdc06('0x3'));var rp=require('request-promise');var moment=require(_0xdc06('0x4'));var BPromise=require(_0xdc06('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xdc06('0x6'));var sox=require('sox');var csv=require(_0xdc06('0x7'));var ejs=require(_0xdc06('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xdc06('0x9'));var crypto=require(_0xdc06('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xdc06('0xb'));var toCsv=require(_0xdc06('0x7'));var querystring=require(_0xdc06('0xc'));var Papa=require(_0xdc06('0xd'));var Redis=require(_0xdc06('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xdc06('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdc06('0x10'))(_0xdc06('0x11'));var utils=require(_0xdc06('0x12'));var config=require(_0xdc06('0x13'));var licenseUtil=require(_0xdc06('0x14'));var db=require(_0xdc06('0x15'))['db'];function respondWithStatusCode(_0x582ceb,_0x4b5f06){_0x4b5f06=_0x4b5f06||0xcc;return function(_0xb9e716){if(_0xb9e716){return _0x582ceb[_0xdc06('0x16')](_0x4b5f06);}return _0x582ceb[_0xdc06('0x17')](_0x4b5f06)['end']();};}function respondWithResult(_0x31be40,_0x18c5de){_0x18c5de=_0x18c5de||0xc8;return function(_0x40ea3b){if(_0x40ea3b){return _0x31be40[_0xdc06('0x17')](_0x18c5de)[_0xdc06('0x18')](_0x40ea3b);}};}function respondWithFilteredResult(_0x52b5f8,_0x3bbc5c){return function(_0x5a0ed2){if(_0x5a0ed2){var _0x3aeca3=typeof _0x3bbc5c[_0xdc06('0x19')]===_0xdc06('0x1a')&&typeof _0x3bbc5c[_0xdc06('0x1b')]===_0xdc06('0x1a');var _0x4d3a1f=_0x5a0ed2[_0xdc06('0x1c')];var _0x3b3d8b=_0x3aeca3?0x0:_0x3bbc5c[_0xdc06('0x19')];var _0x5ca232=_0x3aeca3?_0x5a0ed2[_0xdc06('0x1c')]:_0x3bbc5c[_0xdc06('0x19')]+_0x3bbc5c[_0xdc06('0x1b')];var _0xfddd59;if(_0x5ca232>=_0x4d3a1f){_0x5ca232=_0x4d3a1f;_0xfddd59=0xc8;}else{_0xfddd59=0xce;}_0x52b5f8[_0xdc06('0x17')](_0xfddd59);return _0x52b5f8['set'](_0xdc06('0x1d'),_0x3b3d8b+'-'+_0x5ca232+'/'+_0x4d3a1f)['json'](_0x5a0ed2);}return null;};}function patchUpdates(_0x23d2d4){return function(_0x40c112){try{jsonpatch[_0xdc06('0x1e')](_0x40c112,_0x23d2d4,!![]);}catch(_0x342715){return BPromise[_0xdc06('0x1f')](_0x342715);}return _0x40c112['save']();};}function saveUpdates(_0x49444d,_0x3199c6){return function(_0x93911){if(_0x93911){return _0x93911[_0xdc06('0x20')](_0x49444d)[_0xdc06('0x21')](function(_0x414103){return _0x414103;});}return null;};}function removeEntity(_0x41f64e,_0x505f22){return function(_0x4c5cf1){if(_0x4c5cf1){return _0x4c5cf1['destroy']()[_0xdc06('0x21')](function(){_0x41f64e[_0xdc06('0x17')](0xcc)[_0xdc06('0x22')]();});}};}function handleEntityNotFound(_0x12b246,_0x40d645){return function(_0x3d1881){if(!_0x3d1881){_0x12b246[_0xdc06('0x16')](0x194);}return _0x3d1881;};}function handleError(_0x555db4,_0x254333){_0x254333=_0x254333||0x1f4;return function(_0x52cdac){logger[_0xdc06('0x23')](_0x52cdac[_0xdc06('0x24')]);if(_0x52cdac[_0xdc06('0x25')]){delete _0x52cdac[_0xdc06('0x25')];}_0x555db4[_0xdc06('0x17')](_0x254333)[_0xdc06('0x26')](_0x52cdac);};}exports[_0xdc06('0x27')]=function(_0x3b7c80,_0x28495c){var _0x2380da={},_0x1994c2={},_0x2780de={'count':0x0,'rows':[]};var _0x2e614e=_[_0xdc06('0x28')](db['ZohoField'][_0xdc06('0x29')],function(_0x36d32e){return{'name':_0x36d32e[_0xdc06('0x2a')],'type':_0x36d32e[_0xdc06('0x2b')][_0xdc06('0x2c')]};});_0x1994c2['model']=_[_0xdc06('0x28')](_0x2e614e,_0xdc06('0x25'));_0x1994c2[_0xdc06('0x2d')]=_[_0xdc06('0x2e')](_0x3b7c80[_0xdc06('0x2d')]);_0x1994c2[_0xdc06('0x2f')]=_['intersection'](_0x1994c2[_0xdc06('0x30')],_0x1994c2['query']);_0x2380da[_0xdc06('0x31')]=_[_0xdc06('0x32')](_0x1994c2[_0xdc06('0x30')],qs[_0xdc06('0x33')](_0x3b7c80[_0xdc06('0x2d')][_0xdc06('0x33')]));_0x2380da[_0xdc06('0x31')]=_0x2380da[_0xdc06('0x31')][_0xdc06('0x34')]?_0x2380da[_0xdc06('0x31')]:_0x1994c2['model'];if(!_0x3b7c80['query'][_0xdc06('0x35')](_0xdc06('0x36'))){_0x2380da[_0xdc06('0x1b')]=qs['limit'](_0x3b7c80['query'][_0xdc06('0x1b')]);_0x2380da[_0xdc06('0x19')]=qs[_0xdc06('0x19')](_0x3b7c80[_0xdc06('0x2d')][_0xdc06('0x19')]);}_0x2380da[_0xdc06('0x37')]=qs[_0xdc06('0x38')](_0x3b7c80[_0xdc06('0x2d')]['sort']);_0x2380da[_0xdc06('0x39')]=qs[_0xdc06('0x2f')](_[_0xdc06('0x3a')](_0x3b7c80[_0xdc06('0x2d')],_0x1994c2[_0xdc06('0x2f')]),_0x2e614e);if(_0x3b7c80['query']['filter']){_0x2380da[_0xdc06('0x39')]=_[_0xdc06('0x3b')](_0x2380da[_0xdc06('0x39')],{'$or':_[_0xdc06('0x28')](_0x2e614e,function(_0x46ea25){if(_0x46ea25[_0xdc06('0x2b')]!==_0xdc06('0x3c')){var _0x3d36af={};_0x3d36af[_0x46ea25[_0xdc06('0x25')]]={'$like':'%'+_0x3b7c80['query'][_0xdc06('0x3d')]+'%'};return _0x3d36af;}})});}_0x2380da=_[_0xdc06('0x3b')]({},_0x2380da,_0x3b7c80[_0xdc06('0x3e')]);var _0x1c4d62={'where':_0x2380da['where']};return db[_0xdc06('0x3f')][_0xdc06('0x1c')](_0x1c4d62)[_0xdc06('0x21')](function(_0x1cd390){_0x2780de[_0xdc06('0x1c')]=_0x1cd390;if(_0x3b7c80['query'][_0xdc06('0x40')]){_0x2380da[_0xdc06('0x41')]=[{'all':!![]}];}return db['ZohoField'][_0xdc06('0x42')](_0x2380da);})[_0xdc06('0x21')](function(_0x25d3b0){_0x2780de['rows']=_0x25d3b0;return _0x2780de;})[_0xdc06('0x21')](respondWithFilteredResult(_0x28495c,_0x2380da))[_0xdc06('0x43')](handleError(_0x28495c,null));};exports[_0xdc06('0x44')]=function(_0x3e1128,_0x1cde77){var _0x271e2e={'raw':!![],'where':{'id':_0x3e1128[_0xdc06('0x45')]['id']}},_0x2540be={};_0x2540be[_0xdc06('0x30')]=_[_0xdc06('0x2e')](db['ZohoField'][_0xdc06('0x29')]);_0x2540be[_0xdc06('0x2d')]=_[_0xdc06('0x2e')](_0x3e1128[_0xdc06('0x2d')]);_0x2540be[_0xdc06('0x2f')]=_['intersection'](_0x2540be[_0xdc06('0x30')],_0x2540be[_0xdc06('0x2d')]);_0x271e2e['attributes']=_['intersection'](_0x2540be[_0xdc06('0x30')],qs['fields'](_0x3e1128[_0xdc06('0x2d')]['fields']));_0x271e2e[_0xdc06('0x31')]=_0x271e2e['attributes'][_0xdc06('0x34')]?_0x271e2e[_0xdc06('0x31')]:_0x2540be[_0xdc06('0x30')];if(_0x3e1128[_0xdc06('0x2d')][_0xdc06('0x40')]){_0x271e2e[_0xdc06('0x41')]=[{'all':!![]}];}_0x271e2e=_[_0xdc06('0x3b')]({},_0x271e2e,_0x3e1128[_0xdc06('0x3e')]);return db[_0xdc06('0x3f')][_0xdc06('0x46')](_0x271e2e)[_0xdc06('0x21')](handleEntityNotFound(_0x1cde77,null))[_0xdc06('0x21')](respondWithResult(_0x1cde77,null))['catch'](handleError(_0x1cde77,null));};exports[_0xdc06('0x47')]=function(_0x51a605,_0x54a8f0){return db[_0xdc06('0x3f')][_0xdc06('0x47')](_0x51a605[_0xdc06('0x48')],{})[_0xdc06('0x21')](respondWithResult(_0x54a8f0,0xc9))[_0xdc06('0x43')](handleError(_0x54a8f0,null));};exports[_0xdc06('0x20')]=function(_0xe4a6e7,_0x1936fd){if(_0xe4a6e7[_0xdc06('0x48')]['id']){delete _0xe4a6e7['body']['id'];}return db[_0xdc06('0x3f')][_0xdc06('0x46')]({'where':{'id':_0xe4a6e7[_0xdc06('0x45')]['id']}})['then'](handleEntityNotFound(_0x1936fd,null))[_0xdc06('0x21')](saveUpdates(_0xe4a6e7[_0xdc06('0x48')],null))[_0xdc06('0x21')](respondWithResult(_0x1936fd,null))[_0xdc06('0x43')](handleError(_0x1936fd,null));};exports[_0xdc06('0x49')]=function(_0xd52529,_0x3e2616){return db[_0xdc06('0x3f')][_0xdc06('0x46')]({'where':{'id':_0xd52529['params']['id']}})[_0xdc06('0x21')](handleEntityNotFound(_0x3e2616,null))[_0xdc06('0x21')](removeEntity(_0x3e2616,null))[_0xdc06('0x43')](handleError(_0x3e2616,null));};
\ No newline at end of file
index a6367c9..4e6aaa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZohoField.attributes','exports','ZohoField','int_zoho_fields','zoho_unique_index','FieldId','lodash'];(function(_0x4ace32,_0x113bc5){var _0x15c563=function(_0x217c05){while(--_0x217c05){_0x4ace32['push'](_0x4ace32['shift']());}};_0x15c563(++_0x113bc5);}(_0x4975,0x86));var _0x5497=function(_0x57ad5d,_0x12b239){_0x57ad5d=_0x57ad5d-0x0;var _0x158e04=_0x4975[_0x57ad5d];return _0x158e04;};'use strict';var _=require(_0x5497('0x0'));var util=require('util');var logger=require(_0x5497('0x1'))(_0x5497('0x2'));var moment=require(_0x5497('0x3'));var BPromise=require(_0x5497('0x4'));var rp=require(_0x5497('0x5'));var fs=require('fs');var path=require(_0x5497('0x6'));var rimraf=require(_0x5497('0x7'));var config=require(_0x5497('0x8'));var attributes=require(_0x5497('0x9'));module[_0x5497('0xa')]=function(_0x539a27,_0x37e48d){return _0x539a27['define'](_0x5497('0xb'),attributes,{'tableName':_0x5497('0xc'),'paranoid':![],'indexes':[{'name':_0x5497('0xd'),'fields':['idField',_0x5497('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf2e3=['request-promise','path','rimraf','../../config/environment','./intZohoField.attributes','define','ZohoField','int_zoho_fields','zoho_unique_index','idField','FieldId','lodash','../../config/logger','api','moment','bluebird'];(function(_0x1b6186,_0x1ec7f2){var _0x186121=function(_0x1748a8){while(--_0x1748a8){_0x1b6186['push'](_0x1b6186['shift']());}};_0x186121(++_0x1ec7f2);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xf2e3[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x3f2e('0x0'));var util=require('util');var logger=require(_0x3f2e('0x1'))(_0x3f2e('0x2'));var moment=require(_0x3f2e('0x3'));var BPromise=require(_0x3f2e('0x4'));var rp=require(_0x3f2e('0x5'));var fs=require('fs');var path=require(_0x3f2e('0x6'));var rimraf=require(_0x3f2e('0x7'));var config=require(_0x3f2e('0x8'));var attributes=require(_0x3f2e('0x9'));module['exports']=function(_0x33a3b7,_0xdd6b3e){return _0x33a3b7[_0x3f2e('0xa')](_0x3f2e('0xb'),attributes,{'tableName':_0x3f2e('0xc'),'paranoid':![],'indexes':[{'name':_0x3f2e('0xd'),'fields':[_0x3f2e('0xe'),_0x3f2e('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index f5b9ef3..465e5cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc555=['catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','http','request','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x4af23c,_0x50e294){var _0x194b63=function(_0x44f871){while(--_0x44f871){_0x4af23c['push'](_0x4af23c['shift']());}};_0x194b63(++_0x50e294);}(_0xc555,0x1e7));var _0x5c55=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0xc555[_0x173441];return _0x2423a8;};'use strict';var _=require('lodash');var util=require(_0x5c55('0x0'));var moment=require('moment');var BPromise=require(_0x5c55('0x1'));var rs=require(_0x5c55('0x2'));var fs=require('fs');var Redis=require(_0x5c55('0x3'));var db=require(_0x5c55('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x5c55('0x5'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x5c55('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x2263c5,_0x465110,_0x5c7590){return new BPromise(function(_0x2bcaf4,_0x2de58c){return client[_0x5c55('0x7')](_0x2263c5,_0x5c7590)[_0x5c55('0x8')](function(_0x35e239){logger[_0x5c55('0x9')](_0x5c55('0xa'),_0x465110,_0x5c55('0xb'));logger[_0x5c55('0xc')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x465110,'request\x20sent',JSON[_0x5c55('0xd')](_0x35e239));if(_0x35e239[_0x5c55('0xe')]){if(_0x35e239[_0x5c55('0xe')][_0x5c55('0xf')]===0x1f4){logger[_0x5c55('0xe')](_0x5c55('0xa'),_0x465110,_0x35e239['error'][_0x5c55('0x10')]);return _0x2de58c(_0x35e239[_0x5c55('0xe')][_0x5c55('0x10')]);}logger['error'](_0x5c55('0xa'),_0x465110,_0x35e239['error'][_0x5c55('0x10')]);return _0x2bcaf4(_0x35e239[_0x5c55('0xe')][_0x5c55('0x10')]);}else{logger[_0x5c55('0x9')](_0x5c55('0xa'),_0x465110,_0x5c55('0xb'));_0x2bcaf4(_0x35e239['result'][_0x5c55('0x10')]);}})[_0x5c55('0x11')](function(_0x2a640c){logger[_0x5c55('0xe')](_0x5c55('0xa'),_0x465110,_0x2a640c);_0x2de58c(_0x2a640c);});});}
\ No newline at end of file
+var _0x5cff=['util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash'];(function(_0x5d548f,_0x3672f3){var _0x14ffa0=function(_0x19c65c){while(--_0x19c65c){_0x5d548f['push'](_0x5d548f['shift']());}};_0x14ffa0(++_0x3672f3);}(_0x5cff,0x1cb));var _0xf5cf=function(_0x43180e,_0x31ddd1){_0x43180e=_0x43180e-0x0;var _0x384e14=_0x5cff[_0x43180e];return _0x384e14;};'use strict';var _=require(_0xf5cf('0x0'));var util=require(_0xf5cf('0x1'));var moment=require(_0xf5cf('0x2'));var BPromise=require(_0xf5cf('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf5cf('0x4'));var db=require(_0xf5cf('0x5'))['db'];var utils=require(_0xf5cf('0x6'));var logger=require(_0xf5cf('0x7'))(_0xf5cf('0x8'));var config=require(_0xf5cf('0x9'));var jayson=require(_0xf5cf('0xa'));var client=jayson[_0xf5cf('0xb')][_0xf5cf('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xacda11,_0x584087,_0x3bbcc1){return new BPromise(function(_0x20ceab,_0x16ff8c){return client[_0xf5cf('0xd')](_0xacda11,_0x3bbcc1)['then'](function(_0x35c4f6){logger[_0xf5cf('0xe')](_0xf5cf('0xf'),_0x584087,_0xf5cf('0x10'));logger[_0xf5cf('0x11')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x584087,_0xf5cf('0x10'),JSON['stringify'](_0x35c4f6));if(_0x35c4f6['error']){if(_0x35c4f6[_0xf5cf('0x12')][_0xf5cf('0x13')]===0x1f4){logger[_0xf5cf('0x12')](_0xf5cf('0xf'),_0x584087,_0x35c4f6[_0xf5cf('0x12')][_0xf5cf('0x14')]);return _0x16ff8c(_0x35c4f6[_0xf5cf('0x12')]['message']);}logger[_0xf5cf('0x12')](_0xf5cf('0xf'),_0x584087,_0x35c4f6[_0xf5cf('0x12')]['message']);return _0x20ceab(_0x35c4f6[_0xf5cf('0x12')][_0xf5cf('0x14')]);}else{logger[_0xf5cf('0xe')](_0xf5cf('0xf'),_0x584087,_0xf5cf('0x10'));_0x20ceab(_0x35c4f6[_0xf5cf('0x15')]['message']);}})[_0xf5cf('0x16')](function(_0x2549a4){logger[_0xf5cf('0x12')](_0xf5cf('0xf'),_0x584087,_0x2549a4);_0x16ff8c(_0x2549a4);});});}
\ No newline at end of file
index 955b2d5..f7c0592 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x245073,_0x206130){var _0x4bdf92=function(_0x3866b0){while(--_0x3866b0){_0x245073['push'](_0x245073['shift']());}};_0x4bdf92(++_0x206130);}(_0xe706,0xa3));var _0x6e70=function(_0x110ea8,_0xacb6fa){_0x110ea8=_0x110ea8-0x0;var _0x4073cf=_0xe706[_0x110ea8];return _0x4073cf;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x14c70b,_0x2d57f1){var _0x3d32c7=function(_0x5b0e98){while(--_0x5b0e98){_0x14c70b['push'](_0x14c70b['shift']());}};_0x3d32c7(++_0x2d57f1);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index f928381..cde0625 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd023=['state','sequelize','STRING','unique_name_and_version','app.js','INTEGER','BOOLEAN'];(function(_0x45f951,_0x2750c8){var _0x24756c=function(_0x31c931){while(--_0x31c931){_0x45f951['push'](_0x45f951['shift']());}};_0x24756c(++_0x2750c8);}(_0xd023,0x94));var _0x3d02=function(_0x501ca1,_0x6c6edc){_0x501ca1=_0x501ca1-0x0;var _0x2a99c4=_0xd023[_0x501ca1];return _0x2a99c4;};'use strict';var Sequelize=require(_0x3d02('0x0'));module['exports']={'name':{'type':Sequelize[_0x3d02('0x1')],'allowNull':![],'unique':_0x3d02('0x2')},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x3d02('0x2')},'main':{'type':Sequelize[_0x3d02('0x1')],'defaultValue':_0x3d02('0x3')},'filename':{'type':Sequelize['STRING']},'path':{'type':Sequelize[_0x3d02('0x1')]},'type':{'type':Sequelize[_0x3d02('0x1')]},'size':{'type':Sequelize[_0x3d02('0x4')]},'active':{'type':Sequelize[_0x3d02('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0x3d02('0x1')]},'logo':{'type':Sequelize[_0x3d02('0x1')]},'state':{'type':Sequelize['STRING'],'unique':_0x3d02('0x6')},'description':{'type':Sequelize[_0x3d02('0x1')]},'title':{'type':Sequelize[_0x3d02('0x1')]},'remoteUri':{'type':Sequelize[_0x3d02('0x1')]},'link':{'type':Sequelize[_0x3d02('0x1')],'defaultValue':'#'}};
\ No newline at end of file
+var _0x2160=['unique_name_and_version','app.js','INTEGER','BOOLEAN','state','exports','STRING'];(function(_0x8018db,_0x3d6e4f){var _0x3cd654=function(_0x491e26){while(--_0x491e26){_0x8018db['push'](_0x8018db['shift']());}};_0x3cd654(++_0x3d6e4f);}(_0x2160,0x132));var _0x0216=function(_0x39f82b,_0x1927a2){_0x39f82b=_0x39f82b-0x0;var _0x575a53=_0x2160[_0x39f82b];return _0x575a53;};'use strict';var Sequelize=require('sequelize');module[_0x0216('0x0')]={'name':{'type':Sequelize[_0x0216('0x1')],'allowNull':![],'unique':_0x0216('0x2')},'version':{'type':Sequelize[_0x0216('0x1')],'allowNull':![],'unique':_0x0216('0x2')},'main':{'type':Sequelize[_0x0216('0x1')],'defaultValue':_0x0216('0x3')},'filename':{'type':Sequelize[_0x0216('0x1')]},'path':{'type':Sequelize[_0x0216('0x1')]},'type':{'type':Sequelize[_0x0216('0x1')]},'size':{'type':Sequelize[_0x0216('0x4')]},'active':{'type':Sequelize[_0x0216('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0x0216('0x1')]},'logo':{'type':Sequelize[_0x0216('0x1')]},'state':{'type':Sequelize['STRING'],'unique':_0x0216('0x6')},'description':{'type':Sequelize[_0x0216('0x1')]},'title':{'type':Sequelize[_0x0216('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize[_0x0216('0x1')],'defaultValue':'#'}};
\ No newline at end of file
index 331a70f..8d1385f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x781d=['../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','update','destroy','then','error','name','send','index','map','Integration','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','nolimit','order','where','filters','filter','merge','VIRTUAL','includeAll','catch','show','params','rawAttributes','options','body','find','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0x33466a,_0x77acf9){var _0x173332=function(_0x297a6c){while(--_0x297a6c){_0x33466a['push'](_0x33466a['shift']());}};_0x173332(++_0x77acf9);}(_0x781d,0x14a));var _0xd781=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x781d[_0x3bf83f];return _0x22c4a9;};'use strict';var emlformat=require(_0xd781('0x0'));var rimraf=require(_0xd781('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd781('0x2'));var moment=require(_0xd781('0x3'));var BPromise=require(_0xd781('0x4'));var Mustache=require(_0xd781('0x5'));var util=require(_0xd781('0x6'));var path=require(_0xd781('0x7'));var sox=require(_0xd781('0x8'));var csv=require(_0xd781('0x9'));var ejs=require(_0xd781('0xa'));var fs=require('fs');var fs_extra=require(_0xd781('0xb'));var _=require('lodash');var squel=require(_0xd781('0xc'));var crypto=require(_0xd781('0xd'));var jsforce=require(_0xd781('0xe'));var deskjs=require(_0xd781('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd781('0x10'));var Papa=require('papaparse');var Redis=require(_0xd781('0x11'));var authService=require(_0xd781('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xd781('0x13'));var hardwareService=require(_0xd781('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xd781('0x15'));var config=require(_0xd781('0x16'));var licenseUtil=require(_0xd781('0x17'));var db=require(_0xd781('0x18'))['db'];function respondWithStatusCode(_0xbea78b,_0x1f2f1e){_0x1f2f1e=_0x1f2f1e||0xcc;return function(_0xc7758f){if(_0xc7758f){return _0xbea78b[_0xd781('0x19')](_0x1f2f1e);}return _0xbea78b[_0xd781('0x1a')](_0x1f2f1e)[_0xd781('0x1b')]();};}function respondWithResult(_0xd454e7,_0x587953){_0x587953=_0x587953||0xc8;return function(_0x477bdc){if(_0x477bdc){return _0xd454e7[_0xd781('0x1a')](_0x587953)['json'](_0x477bdc);}};}function respondWithFilteredResult(_0x3a1f48,_0x48bffc){return function(_0x294e5a){if(_0x294e5a){var _0x22d787=typeof _0x48bffc[_0xd781('0x1c')]===_0xd781('0x1d')&&typeof _0x48bffc[_0xd781('0x1e')]===_0xd781('0x1d');var _0x501b0d=_0x294e5a['count'];var _0x1407fc=_0x22d787?0x0:_0x48bffc[_0xd781('0x1c')];var _0x395d9c=_0x22d787?_0x294e5a[_0xd781('0x1f')]:_0x48bffc[_0xd781('0x1c')]+_0x48bffc[_0xd781('0x1e')];var _0x260aa8;if(_0x395d9c>=_0x501b0d){_0x395d9c=_0x501b0d;_0x260aa8=0xc8;}else{_0x260aa8=0xce;}_0x3a1f48[_0xd781('0x1a')](_0x260aa8);return _0x3a1f48['set'](_0xd781('0x20'),_0x1407fc+'-'+_0x395d9c+'/'+_0x501b0d)[_0xd781('0x21')](_0x294e5a);}return null;};}function patchUpdates(_0x1036d3){return function(_0x103758){try{jsonpatch[_0xd781('0x22')](_0x103758,_0x1036d3,!![]);}catch(_0x274665){return BPromise[_0xd781('0x23')](_0x274665);}return _0x103758['save']();};}function saveUpdates(_0xe0c65f,_0x4e2c56){return function(_0x567fdf){if(_0x567fdf){return _0x567fdf[_0xd781('0x24')](_0xe0c65f)['then'](function(_0x175ba6){return _0x175ba6;});}return null;};}function removeEntity(_0x101480,_0x395087){return function(_0x31bf57){if(_0x31bf57){return _0x31bf57[_0xd781('0x25')]()[_0xd781('0x26')](function(){_0x101480[_0xd781('0x1a')](0xcc)[_0xd781('0x1b')]();});}};}function handleEntityNotFound(_0x10940b,_0x5662db){return function(_0x529ca1){if(!_0x529ca1){_0x10940b[_0xd781('0x19')](0x194);}return _0x529ca1;};}function handleError(_0x849587,_0xdad0b1){_0xdad0b1=_0xdad0b1||0x1f4;return function(_0x57b41e){logger[_0xd781('0x27')](_0x57b41e['stack']);if(_0x57b41e['name']){delete _0x57b41e[_0xd781('0x28')];}_0x849587['status'](_0xdad0b1)[_0xd781('0x29')](_0x57b41e);};}exports[_0xd781('0x2a')]=function(_0x5c3848,_0x5b6b9d){var _0x43cc74={},_0x5b0464={},_0x296a0b={'count':0x0,'rows':[]};var _0x4a3bd3=_[_0xd781('0x2b')](db[_0xd781('0x2c')]['rawAttributes'],function(_0x54521e){return{'name':_0x54521e[_0xd781('0x2d')],'type':_0x54521e[_0xd781('0x2e')][_0xd781('0x2f')]};});_0x5b0464['model']=_['map'](_0x4a3bd3,_0xd781('0x28'));_0x5b0464[_0xd781('0x30')]=_[_0xd781('0x31')](_0x5c3848['query']);_0x5b0464['filters']=_[_0xd781('0x32')](_0x5b0464[_0xd781('0x33')],_0x5b0464['query']);_0x43cc74[_0xd781('0x34')]=_[_0xd781('0x32')](_0x5b0464['model'],qs[_0xd781('0x35')](_0x5c3848[_0xd781('0x30')][_0xd781('0x35')]));_0x43cc74[_0xd781('0x34')]=_0x43cc74['attributes'][_0xd781('0x36')]?_0x43cc74[_0xd781('0x34')]:_0x5b0464[_0xd781('0x33')];if(!_0x5c3848[_0xd781('0x30')]['hasOwnProperty'](_0xd781('0x37'))){_0x43cc74[_0xd781('0x1e')]=qs['limit'](_0x5c3848[_0xd781('0x30')]['limit']);_0x43cc74[_0xd781('0x1c')]=qs[_0xd781('0x1c')](_0x5c3848['query'][_0xd781('0x1c')]);}_0x43cc74[_0xd781('0x38')]=qs['sort'](_0x5c3848[_0xd781('0x30')]['sort']);_0x43cc74[_0xd781('0x39')]=qs[_0xd781('0x3a')](_['pick'](_0x5c3848[_0xd781('0x30')],_0x5b0464[_0xd781('0x3a')]),_0x4a3bd3);if(_0x5c3848['query'][_0xd781('0x3b')]){_0x43cc74[_0xd781('0x39')]=_[_0xd781('0x3c')](_0x43cc74['where'],{'$or':_[_0xd781('0x2b')](_0x4a3bd3,function(_0x22b94e){if(_0x22b94e[_0xd781('0x2e')]!==_0xd781('0x3d')){var _0x2e8218={};_0x2e8218[_0x22b94e[_0xd781('0x28')]]={'$like':'%'+_0x5c3848[_0xd781('0x30')][_0xd781('0x3b')]+'%'};return _0x2e8218;}})});}_0x43cc74=_[_0xd781('0x3c')]({},_0x43cc74,_0x5c3848['options']);var _0x2a60d6={'where':_0x43cc74['where']};return db[_0xd781('0x2c')][_0xd781('0x1f')](_0x2a60d6)['then'](function(_0x1a5833){_0x296a0b[_0xd781('0x1f')]=_0x1a5833;if(_0x5c3848[_0xd781('0x30')][_0xd781('0x3e')]){_0x43cc74['include']=[{'all':!![]}];}return db[_0xd781('0x2c')]['findAll'](_0x43cc74);})[_0xd781('0x26')](function(_0xcdaacf){_0x296a0b['rows']=_0xcdaacf;return _0x296a0b;})['then'](respondWithFilteredResult(_0x5b6b9d,_0x43cc74))[_0xd781('0x3f')](handleError(_0x5b6b9d,null));};exports[_0xd781('0x40')]=function(_0x15b49d,_0x23bbab){var _0x53aba6={'raw':![],'where':{'id':_0x15b49d[_0xd781('0x41')]['id']}},_0x46e7f6={};_0x46e7f6['model']=_['keys'](db[_0xd781('0x2c')][_0xd781('0x42')]);_0x46e7f6[_0xd781('0x30')]=_['keys'](_0x15b49d['query']);_0x46e7f6[_0xd781('0x3a')]=_[_0xd781('0x32')](_0x46e7f6[_0xd781('0x33')],_0x46e7f6[_0xd781('0x30')]);_0x53aba6[_0xd781('0x34')]=_[_0xd781('0x32')](_0x46e7f6['model'],qs['fields'](_0x15b49d[_0xd781('0x30')][_0xd781('0x35')]));_0x53aba6[_0xd781('0x34')]=_0x53aba6[_0xd781('0x34')][_0xd781('0x36')]?_0x53aba6['attributes']:_0x46e7f6[_0xd781('0x33')];if(_0x15b49d[_0xd781('0x30')][_0xd781('0x3e')]){_0x53aba6['include']=[{'all':!![]}];}_0x53aba6=_[_0xd781('0x3c')]({},_0x53aba6,_0x15b49d[_0xd781('0x43')]);return db[_0xd781('0x2c')]['find'](_0x53aba6)[_0xd781('0x26')](handleEntityNotFound(_0x23bbab,null))[_0xd781('0x26')](respondWithResult(_0x23bbab,null))['catch'](handleError(_0x23bbab,null));};exports['create']=function(_0x13a907,_0x16d16e){return db[_0xd781('0x2c')]['create'](_0x13a907[_0xd781('0x44')],{})[_0xd781('0x26')](respondWithResult(_0x16d16e,0xc9))[_0xd781('0x3f')](handleError(_0x16d16e,null));};exports[_0xd781('0x24')]=function(_0x336d30,_0x3828ad){if(_0x336d30[_0xd781('0x44')]['id']){delete _0x336d30['body']['id'];}return db[_0xd781('0x2c')][_0xd781('0x45')]({'where':{'id':_0x336d30[_0xd781('0x41')]['id']}})['then'](handleEntityNotFound(_0x3828ad,null))[_0xd781('0x26')](saveUpdates(_0x336d30[_0xd781('0x44')],null))['then'](respondWithResult(_0x3828ad,null))[_0xd781('0x3f')](handleError(_0x3828ad,null));};exports[_0xd781('0x25')]=function(_0x41caac,_0x207546){return db[_0xd781('0x2c')]['find']({'where':{'id':_0x41caac[_0xd781('0x41')]['id']}})['then'](handleEntityNotFound(_0x207546,null))[_0xd781('0x26')](removeEntity(_0x207546,null))['catch'](handleError(_0x207546,null));};
\ No newline at end of file
+var _0x2ef3=['update','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','Integration','then','includeAll','include','findAll','catch','show','params','keys','create','body','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save'];(function(_0x2f9625,_0x4efdd8){var _0x56e181=function(_0x1e2151){while(--_0x1e2151){_0x2f9625['push'](_0x2f9625['shift']());}};_0x56e181(++_0x4efdd8);}(_0x2ef3,0xba));var _0x32ef=function(_0x4dfa8a,_0x52e406){_0x4dfa8a=_0x4dfa8a-0x0;var _0x4d3fd7=_0x2ef3[_0x4dfa8a];return _0x4d3fd7;};'use strict';var emlformat=require(_0x32ef('0x0'));var rimraf=require(_0x32ef('0x1'));var zipdir=require(_0x32ef('0x2'));var jsonpatch=require(_0x32ef('0x3'));var rp=require(_0x32ef('0x4'));var moment=require(_0x32ef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x32ef('0x6'));var util=require(_0x32ef('0x7'));var path=require('path');var sox=require(_0x32ef('0x8'));var csv=require(_0x32ef('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x32ef('0xa'));var squel=require(_0x32ef('0xb'));var crypto=require(_0x32ef('0xc'));var jsforce=require(_0x32ef('0xd'));var deskjs=require(_0x32ef('0xe'));var toCsv=require(_0x32ef('0x9'));var querystring=require(_0x32ef('0xf'));var Papa=require(_0x32ef('0x10'));var Redis=require(_0x32ef('0x11'));var authService=require(_0x32ef('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x32ef('0x13'));var logger=require(_0x32ef('0x14'))(_0x32ef('0x15'));var utils=require(_0x32ef('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x32ef('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a5106,_0x49d590){_0x49d590=_0x49d590||0xcc;return function(_0x3e98df){if(_0x3e98df){return _0x1a5106[_0x32ef('0x18')](_0x49d590);}return _0x1a5106['status'](_0x49d590)['end']();};}function respondWithResult(_0x19ce1,_0x4d8009){_0x4d8009=_0x4d8009||0xc8;return function(_0x326fce){if(_0x326fce){return _0x19ce1[_0x32ef('0x19')](_0x4d8009)[_0x32ef('0x1a')](_0x326fce);}};}function respondWithFilteredResult(_0x54c7f5,_0x57aff1){return function(_0x55bf0b){if(_0x55bf0b){var _0x531e30=typeof _0x57aff1[_0x32ef('0x1b')]===_0x32ef('0x1c')&&typeof _0x57aff1[_0x32ef('0x1d')]==='undefined';var _0x5d559b=_0x55bf0b[_0x32ef('0x1e')];var _0x1a9476=_0x531e30?0x0:_0x57aff1[_0x32ef('0x1b')];var _0x57863c=_0x531e30?_0x55bf0b[_0x32ef('0x1e')]:_0x57aff1[_0x32ef('0x1b')]+_0x57aff1['limit'];var _0x304505;if(_0x57863c>=_0x5d559b){_0x57863c=_0x5d559b;_0x304505=0xc8;}else{_0x304505=0xce;}_0x54c7f5[_0x32ef('0x19')](_0x304505);return _0x54c7f5[_0x32ef('0x1f')](_0x32ef('0x20'),_0x1a9476+'-'+_0x57863c+'/'+_0x5d559b)[_0x32ef('0x1a')](_0x55bf0b);}return null;};}function patchUpdates(_0x3aec05){return function(_0x4de441){try{jsonpatch[_0x32ef('0x21')](_0x4de441,_0x3aec05,!![]);}catch(_0x5cc3ef){return BPromise[_0x32ef('0x22')](_0x5cc3ef);}return _0x4de441[_0x32ef('0x23')]();};}function saveUpdates(_0x49f2d8,_0x1af371){return function(_0x97780){if(_0x97780){return _0x97780[_0x32ef('0x24')](_0x49f2d8)['then'](function(_0x57f5e5){return _0x57f5e5;});}return null;};}function removeEntity(_0x22f2d7,_0xb30fab){return function(_0x225feb){if(_0x225feb){return _0x225feb['destroy']()['then'](function(){_0x22f2d7[_0x32ef('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51a412,_0x278495){return function(_0x14d4b3){if(!_0x14d4b3){_0x51a412[_0x32ef('0x18')](0x194);}return _0x14d4b3;};}function handleError(_0x1dbe98,_0x15ce54){_0x15ce54=_0x15ce54||0x1f4;return function(_0x234175){logger[_0x32ef('0x25')](_0x234175[_0x32ef('0x26')]);if(_0x234175[_0x32ef('0x27')]){delete _0x234175[_0x32ef('0x27')];}_0x1dbe98[_0x32ef('0x19')](_0x15ce54)[_0x32ef('0x28')](_0x234175);};}exports['index']=function(_0xd65fde,_0x2f5d06){var _0x5a04cd={},_0x12de1a={},_0x3c569d={'count':0x0,'rows':[]};var _0x30b250=_[_0x32ef('0x29')](db['Integration'][_0x32ef('0x2a')],function(_0x22bf86){return{'name':_0x22bf86[_0x32ef('0x2b')],'type':_0x22bf86[_0x32ef('0x2c')][_0x32ef('0x2d')]};});_0x12de1a[_0x32ef('0x2e')]=_[_0x32ef('0x29')](_0x30b250,'name');_0x12de1a[_0x32ef('0x2f')]=_['keys'](_0xd65fde[_0x32ef('0x2f')]);_0x12de1a[_0x32ef('0x30')]=_['intersection'](_0x12de1a[_0x32ef('0x2e')],_0x12de1a[_0x32ef('0x2f')]);_0x5a04cd[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0x12de1a[_0x32ef('0x2e')],qs['fields'](_0xd65fde['query'][_0x32ef('0x33')]));_0x5a04cd['attributes']=_0x5a04cd[_0x32ef('0x31')][_0x32ef('0x34')]?_0x5a04cd[_0x32ef('0x31')]:_0x12de1a[_0x32ef('0x2e')];if(!_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x35')]('nolimit')){_0x5a04cd['limit']=qs['limit'](_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x1d')]);_0x5a04cd[_0x32ef('0x1b')]=qs['offset'](_0xd65fde['query'][_0x32ef('0x1b')]);}_0x5a04cd[_0x32ef('0x36')]=qs[_0x32ef('0x37')](_0xd65fde['query']['sort']);_0x5a04cd[_0x32ef('0x38')]=qs[_0x32ef('0x30')](_[_0x32ef('0x39')](_0xd65fde[_0x32ef('0x2f')],_0x12de1a[_0x32ef('0x30')]),_0x30b250);if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]){_0x5a04cd[_0x32ef('0x38')]=_[_0x32ef('0x3b')](_0x5a04cd['where'],{'$or':_[_0x32ef('0x29')](_0x30b250,function(_0x36e374){if(_0x36e374[_0x32ef('0x2c')]!=='VIRTUAL'){var _0x365125={};_0x365125[_0x36e374[_0x32ef('0x27')]]={'$like':'%'+_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]+'%'};return _0x365125;}})});}_0x5a04cd=_[_0x32ef('0x3b')]({},_0x5a04cd,_0xd65fde[_0x32ef('0x3c')]);var _0x256c40={'where':_0x5a04cd[_0x32ef('0x38')]};return db[_0x32ef('0x3d')][_0x32ef('0x1e')](_0x256c40)[_0x32ef('0x3e')](function(_0x4615b4){_0x3c569d['count']=_0x4615b4;if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3f')]){_0x5a04cd[_0x32ef('0x40')]=[{'all':!![]}];}return db[_0x32ef('0x3d')][_0x32ef('0x41')](_0x5a04cd);})[_0x32ef('0x3e')](function(_0x3c0e44){_0x3c569d['rows']=_0x3c0e44;return _0x3c569d;})['then'](respondWithFilteredResult(_0x2f5d06,_0x5a04cd))[_0x32ef('0x42')](handleError(_0x2f5d06,null));};exports[_0x32ef('0x43')]=function(_0x2a33dd,_0x765c63){var _0x5dca14={'raw':![],'where':{'id':_0x2a33dd[_0x32ef('0x44')]['id']}},_0x2901a1={};_0x2901a1['model']=_[_0x32ef('0x45')](db['Integration'][_0x32ef('0x2a')]);_0x2901a1[_0x32ef('0x2f')]=_[_0x32ef('0x45')](_0x2a33dd[_0x32ef('0x2f')]);_0x2901a1[_0x32ef('0x30')]=_[_0x32ef('0x32')](_0x2901a1[_0x32ef('0x2e')],_0x2901a1[_0x32ef('0x2f')]);_0x5dca14[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0x2901a1['model'],qs[_0x32ef('0x33')](_0x2a33dd['query'][_0x32ef('0x33')]));_0x5dca14[_0x32ef('0x31')]=_0x5dca14[_0x32ef('0x31')]['length']?_0x5dca14[_0x32ef('0x31')]:_0x2901a1[_0x32ef('0x2e')];if(_0x2a33dd[_0x32ef('0x2f')][_0x32ef('0x3f')]){_0x5dca14[_0x32ef('0x40')]=[{'all':!![]}];}_0x5dca14=_[_0x32ef('0x3b')]({},_0x5dca14,_0x2a33dd[_0x32ef('0x3c')]);return db['Integration']['find'](_0x5dca14)[_0x32ef('0x3e')](handleEntityNotFound(_0x765c63,null))[_0x32ef('0x3e')](respondWithResult(_0x765c63,null))[_0x32ef('0x42')](handleError(_0x765c63,null));};exports[_0x32ef('0x46')]=function(_0x209361,_0xd67dc9){return db[_0x32ef('0x3d')][_0x32ef('0x46')](_0x209361[_0x32ef('0x47')],{})[_0x32ef('0x3e')](respondWithResult(_0xd67dc9,0xc9))[_0x32ef('0x42')](handleError(_0xd67dc9,null));};exports[_0x32ef('0x24')]=function(_0x36a65c,_0x4c2534){if(_0x36a65c[_0x32ef('0x47')]['id']){delete _0x36a65c[_0x32ef('0x47')]['id'];}return db[_0x32ef('0x3d')][_0x32ef('0x48')]({'where':{'id':_0x36a65c[_0x32ef('0x44')]['id']}})[_0x32ef('0x3e')](handleEntityNotFound(_0x4c2534,null))[_0x32ef('0x3e')](saveUpdates(_0x36a65c[_0x32ef('0x47')],null))[_0x32ef('0x3e')](respondWithResult(_0x4c2534,null))[_0x32ef('0x42')](handleError(_0x4c2534,null));};exports[_0x32ef('0x49')]=function(_0x29d456,_0x272377){return db[_0x32ef('0x3d')][_0x32ef('0x48')]({'where':{'id':_0x29d456[_0x32ef('0x44')]['id']}})[_0x32ef('0x3e')](handleEntityNotFound(_0x272377,null))[_0x32ef('0x3e')](removeEntity(_0x272377,null))['catch'](handleError(_0x272377,null));};
\ No newline at end of file
index 23b399b..124ad66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7428=['path','../../config/environment','./integration.attributes','exports','define','Integration','lodash','util','../../config/logger','moment','bluebird'];(function(_0x8f7825,_0xaa0ca0){var _0x29a7c9=function(_0x43f1eb){while(--_0x43f1eb){_0x8f7825['push'](_0x8f7825['shift']());}};_0x29a7c9(++_0xaa0ca0);}(_0x7428,0x187));var _0x8742=function(_0x39241c,_0x2217bb){_0x39241c=_0x39241c-0x0;var _0x19df74=_0x7428[_0x39241c];return _0x19df74;};'use strict';var _=require(_0x8742('0x0'));var util=require(_0x8742('0x1'));var logger=require(_0x8742('0x2'))('api');var moment=require(_0x8742('0x3'));var BPromise=require(_0x8742('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8742('0x5'));var rimraf=require('rimraf');var config=require(_0x8742('0x6'));var attributes=require(_0x8742('0x7'));module[_0x8742('0x8')]=function(_0x3ec63f,_0x3dd6b3){return _0x3ec63f[_0x8742('0x9')](_0x8742('0xa'),attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc8c2=['api','moment','bluebird','path','rimraf','../../config/environment','./integration.attributes','exports','define','Integration','integrations','lodash','util'];(function(_0x220958,_0x220c42){var _0x5295ca=function(_0x1c819d){while(--_0x1c819d){_0x220958['push'](_0x220958['shift']());}};_0x5295ca(++_0x220c42);}(_0xc8c2,0x150));var _0x2c8c=function(_0x21f9c2,_0x2b3d2a){_0x21f9c2=_0x21f9c2-0x0;var _0x3da17f=_0xc8c2[_0x21f9c2];return _0x3da17f;};'use strict';var _=require(_0x2c8c('0x0'));var util=require(_0x2c8c('0x1'));var logger=require('../../config/logger')(_0x2c8c('0x2'));var moment=require(_0x2c8c('0x3'));var BPromise=require(_0x2c8c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2c8c('0x5'));var rimraf=require(_0x2c8c('0x6'));var config=require(_0x2c8c('0x7'));var attributes=require(_0x2c8c('0x8'));module[_0x2c8c('0x9')]=function(_0x5b4a2a,_0x2abb9a){return _0x5b4a2a[_0x2c8c('0xa')](_0x2c8c('0xb'),attributes,{'tableName':_0x2c8c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 738ee72..4eb598b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x896e=['Integration,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then'];(function(_0x3b8aab,_0x5237db){var _0x47e1ef=function(_0x2ddf68){while(--_0x2ddf68){_0x3b8aab['push'](_0x3b8aab['shift']());}};_0x47e1ef(++_0x5237db);}(_0x896e,0x1e9));var _0xe896=function(_0x58f464,_0x2dae5d){_0x58f464=_0x58f464-0x0;var _0x3e72b7=_0x896e[_0x58f464];return _0x3e72b7;};'use strict';var _=require(_0xe896('0x0'));var util=require(_0xe896('0x1'));var moment=require(_0xe896('0x2'));var BPromise=require(_0xe896('0x3'));var rs=require(_0xe896('0x4'));var fs=require('fs');var Redis=require(_0xe896('0x5'));var db=require(_0xe896('0x6'))['db'];var utils=require(_0xe896('0x7'));var logger=require(_0xe896('0x8'))(_0xe896('0x9'));var config=require(_0xe896('0xa'));var jayson=require(_0xe896('0xb'));var client=jayson['client'][_0xe896('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x7a0721,_0x3b902c,_0x264eeb){return new BPromise(function(_0x43c619,_0x5a1909){return client[_0xe896('0xd')](_0x7a0721,_0x264eeb)[_0xe896('0xe')](function(_0x37a90d){logger['info'](_0xe896('0xf'),_0x3b902c,'request\x20sent');logger[_0xe896('0x10')]('Integration,\x20%s,\x20%s,\x20%s',_0x3b902c,_0xe896('0x11'),JSON[_0xe896('0x12')](_0x37a90d));if(_0x37a90d[_0xe896('0x13')]){if(_0x37a90d['error'][_0xe896('0x14')]===0x1f4){logger[_0xe896('0x13')](_0xe896('0xf'),_0x3b902c,_0x37a90d['error'][_0xe896('0x15')]);return _0x5a1909(_0x37a90d[_0xe896('0x13')][_0xe896('0x15')]);}logger['error'](_0xe896('0xf'),_0x3b902c,_0x37a90d[_0xe896('0x13')][_0xe896('0x15')]);return _0x43c619(_0x37a90d['error']['message']);}else{logger[_0xe896('0x16')](_0xe896('0xf'),_0x3b902c,'request\x20sent');_0x43c619(_0x37a90d['result'][_0xe896('0x15')]);}})[_0xe896('0x17')](function(_0x57f04b){logger[_0xe896('0x13')]('Integration,\x20%s,\x20%s',_0x3b902c,_0x57f04b);_0x5a1909(_0x57f04b);});});}
\ No newline at end of file
+var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','Integration,\x20%s,\x20%s','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0xac9bb8,_0x4c1343){var _0x8c7c24=function(_0x55e70c){while(--_0x55e70c){_0xac9bb8['push'](_0xac9bb8['shift']());}};_0x8c7c24(++_0x4c1343);}(_0x2ef3,0xba));var _0x32ef=function(_0x2ee7eb,_0x304d7b){_0x2ee7eb=_0x2ee7eb-0x0;var _0x2d978e=_0x2ef3[_0x2ee7eb];return _0x2d978e;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('Integration,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('Integration,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
index ba28569..c094f01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','create','put','update','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x5f66[_0x4154a6];return _0x3b2786;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./integrationReport.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['show']);router['post']('/',auth[_0x65f6('0x8')](),controller[_0x65f6('0xc')]);router[_0x65f6('0xd')](_0x65f6('0xb'),auth['isAuthenticated'](),controller[_0x65f6('0xe')]);router['delete']('/:id',auth[_0x65f6('0x8')](),controller['destroy']);module[_0x65f6('0xf')]=router;
\ No newline at end of file
+var _0xef0f=['update','delete','destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./integrationReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put'];(function(_0x53069d,_0x129fb7){var _0x1d8ba3=function(_0x955f3){while(--_0x955f3){_0x53069d['push'](_0x53069d['shift']());}};_0x1d8ba3(++_0x129fb7);}(_0xef0f,0x168));var _0xfef0=function(_0x19231f,_0x2f4bfd){_0x19231f=_0x19231f-0x0;var _0x2114eb=_0xef0f[_0x19231f];return _0x2114eb;};'use strict';var multer=require(_0xfef0('0x0'));var util=require('util');var path=require(_0xfef0('0x1'));var timeout=require(_0xfef0('0x2'));var express=require(_0xfef0('0x3'));var router=express['Router']();var fs_extra=require(_0xfef0('0x4'));var auth=require(_0xfef0('0x5'));var interaction=require(_0xfef0('0x6'));var config=require('../../config/environment');var controller=require(_0xfef0('0x7'));router[_0xfef0('0x8')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0xa')]);router[_0xfef0('0x8')](_0xfef0('0xb'),auth['isAuthenticated'](),controller[_0xfef0('0xc')]);router['get'](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0xe')]);router[_0xfef0('0xf')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0x10')]);router[_0xfef0('0x11')](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x12')]);router[_0xfef0('0x13')](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x14')]);module['exports']=router;
\ No newline at end of file
index 8aad710..3dc154c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeef1=['BOOLEAN','TEXT','ENUM','SENT','RECEIVED','sequelize','exports','STRING','INTEGER','DATE'];(function(_0x41aaff,_0x492197){var _0x4f0890=function(_0x595a44){while(--_0x595a44){_0x41aaff['push'](_0x41aaff['shift']());}};_0x4f0890(++_0x492197);}(_0xeef1,0x1e5));var _0x1eef=function(_0x580cb0,_0x37e9f6){_0x580cb0=_0x580cb0-0x0;var _0x4f50bd=_0xeef1[_0x580cb0];return _0x4f50bd;};'use strict';var Sequelize=require(_0x1eef('0x0'));module[_0x1eef('0x1')]={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize[_0x1eef('0x2')]},'exitStatus':{'type':Sequelize[_0x1eef('0x2')]},'ticketId':{'type':Sequelize[_0x1eef('0x2')]},'integrationId':{'type':Sequelize[_0x1eef('0x3')]},'contacts':{'type':Sequelize[_0x1eef('0x2')]},'uniqueid':{'type':Sequelize[_0x1eef('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x1eef('0x2')]},'queue':{'type':Sequelize[_0x1eef('0x2')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x1eef('0x2')]},'agentcalledAt':{'type':Sequelize[_0x1eef('0x4')]},'agentconnectAt':{'type':Sequelize[_0x1eef('0x4')]},'holdtime':{'type':Sequelize[_0x1eef('0x3')]},'agentcomplete':{'type':Sequelize[_0x1eef('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x1eef('0x4')]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0x1eef('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0x1eef('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x1eef('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x1eef('0x4')]},'agentdump':{'type':Sequelize[_0x1eef('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x1eef('0x4')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x1eef('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x1eef('0x2')]},'connectedlinenum':{'type':Sequelize[_0x1eef('0x2')]},'connectedlinename':{'type':Sequelize[_0x1eef('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x1eef('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x1eef('0x2')]},'priority':{'type':Sequelize[_0x1eef('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x1eef('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x1eef('0x2')]},'destcalleridnum':{'type':Sequelize[_0x1eef('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x1eef('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x1eef('0x2')]},'destlanguage':{'type':Sequelize[_0x1eef('0x2')]},'destaccountcode':{'type':Sequelize[_0x1eef('0x2')]},'destcontext':{'type':Sequelize[_0x1eef('0x2')]},'destexten':{'type':Sequelize[_0x1eef('0x2')]},'destpriority':{'type':Sequelize[_0x1eef('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0x1eef('0x2')]},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize[_0x1eef('0x2')]},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0x1eef('0x2')]},'cc':{'type':Sequelize[_0x1eef('0x2')]},'attachment':{'type':Sequelize[_0x1eef('0x6')]},'html':{'type':Sequelize[_0x1eef('0x6')]},'text':{'type':Sequelize[_0x1eef('0x6')]},'status':{'type':Sequelize[_0x1eef('0x7')](_0x1eef('0x8'),'SENDING',_0x1eef('0x9'),'FAILED')},'url':{'type':Sequelize['STRING']},'app':{'type':Sequelize[_0x1eef('0x2')]},'appdata':{'type':Sequelize[_0x1eef('0x2')]},'projectId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xab12=['exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','SENT','SENDING','RECEIVED','FAILED','sequelize'];(function(_0x35fabd,_0x825452){var _0x61a8ee=function(_0x218f4c){while(--_0x218f4c){_0x35fabd['push'](_0x35fabd['shift']());}};_0x61a8ee(++_0x825452);}(_0xab12,0x133));var _0x2ab1=function(_0x471afc,_0x45825b){_0x471afc=_0x471afc-0x0;var _0x28f789=_0xab12[_0x471afc];return _0x28f789;};'use strict';var Sequelize=require(_0x2ab1('0x0'));module[_0x2ab1('0x1')]={'integration':{'type':Sequelize[_0x2ab1('0x2')]},'eventChannel':{'type':Sequelize[_0x2ab1('0x2')]},'exitStatus':{'type':Sequelize[_0x2ab1('0x2')]},'ticketId':{'type':Sequelize[_0x2ab1('0x2')]},'integrationId':{'type':Sequelize[_0x2ab1('0x3')]},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x2ab1('0x2')]},'calleridnum':{'type':Sequelize[_0x2ab1('0x2')]},'calleridname':{'type':Sequelize[_0x2ab1('0x2')]},'queue':{'type':Sequelize[_0x2ab1('0x2')]},'interface':{'type':Sequelize[_0x2ab1('0x2')]},'membername':{'type':Sequelize[_0x2ab1('0x2')]},'agentcalledAt':{'type':Sequelize[_0x2ab1('0x4')]},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x2ab1('0x3')]},'agentcomplete':{'type':Sequelize[_0x2ab1('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x2ab1('0x4')]},'talktime':{'type':Sequelize[_0x2ab1('0x3')]},'agentacw':{'type':Sequelize[_0x2ab1('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x2ab1('0x3')]},'reason':{'type':Sequelize[_0x2ab1('0x2')]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x2ab1('0x4')]},'agentdump':{'type':Sequelize[_0x2ab1('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x2ab1('0x4')]},'lastevent':{'type':Sequelize[_0x2ab1('0x2')]},'channel':{'type':Sequelize[_0x2ab1('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x2ab1('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x2ab1('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x2ab1('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x2ab1('0x2')]},'destchannel':{'type':Sequelize[_0x2ab1('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x2ab1('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x2ab1('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x2ab1('0x2')]},'destlanguage':{'type':Sequelize[_0x2ab1('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x2ab1('0x2')]},'destexten':{'type':Sequelize[_0x2ab1('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0x2ab1('0x2')]},'inReplyTo':{'type':Sequelize[_0x2ab1('0x2')]},'subject':{'type':Sequelize[_0x2ab1('0x2')]},'from':{'type':Sequelize[_0x2ab1('0x2')]},'to':{'type':Sequelize[_0x2ab1('0x2')]},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0x2ab1('0x6')]},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize['TEXT']},'status':{'type':Sequelize['ENUM'](_0x2ab1('0x7'),_0x2ab1('0x8'),_0x2ab1('0x9'),_0x2ab1('0xa'))},'url':{'type':Sequelize['STRING']},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize[_0x2ab1('0x2')]},'projectId':{'type':Sequelize[_0x2ab1('0x3')]}};
\ No newline at end of file
index 4dadd67..e2b0295 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51b7=['error','stack','name','send','index','map','IntegrationReport','rawAttributes','type','model','query','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filters','merge','VIRTUAL','filter','includeAll','include','findAll','show','params','keys','find','create','body','catch','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x51b7,0xad));var _0x751b=function(_0x54e76c,_0x3f0761){_0x54e76c=_0x54e76c-0x0;var _0x59120c=_0x51b7[_0x54e76c];return _0x59120c;};'use strict';var emlformat=require(_0x751b('0x0'));var rimraf=require(_0x751b('0x1'));var zipdir=require(_0x751b('0x2'));var jsonpatch=require(_0x751b('0x3'));var rp=require(_0x751b('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x751b('0x5'));var path=require(_0x751b('0x6'));var sox=require(_0x751b('0x7'));var csv=require(_0x751b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x751b('0x9'));var squel=require(_0x751b('0xa'));var crypto=require(_0x751b('0xb'));var jsforce=require(_0x751b('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x751b('0xd'));var Papa=require('papaparse');var Redis=require(_0x751b('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x751b('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x751b('0x10'));var logger=require(_0x751b('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x751b('0x12'))['db'];function respondWithStatusCode(_0x121dd7,_0x2db18c){_0x2db18c=_0x2db18c||0xcc;return function(_0x97f39e){if(_0x97f39e){return _0x121dd7[_0x751b('0x13')](_0x2db18c);}return _0x121dd7['status'](_0x2db18c)[_0x751b('0x14')]();};}function respondWithResult(_0x54e2a8,_0x3e8c1f){_0x3e8c1f=_0x3e8c1f||0xc8;return function(_0x287753){if(_0x287753){return _0x54e2a8[_0x751b('0x15')](_0x3e8c1f)[_0x751b('0x16')](_0x287753);}};}function respondWithFilteredResult(_0x11782b,_0x5d04b4){return function(_0xffcbb8){if(_0xffcbb8){var _0x232fdd=typeof _0x5d04b4[_0x751b('0x17')]===_0x751b('0x18')&&typeof _0x5d04b4[_0x751b('0x19')]===_0x751b('0x18');var _0x516617=_0xffcbb8[_0x751b('0x1a')];var _0x588dbb=_0x232fdd?0x0:_0x5d04b4[_0x751b('0x17')];var _0x5df2d5=_0x232fdd?_0xffcbb8[_0x751b('0x1a')]:_0x5d04b4[_0x751b('0x17')]+_0x5d04b4[_0x751b('0x19')];var _0xad96f9;if(_0x5df2d5>=_0x516617){_0x5df2d5=_0x516617;_0xad96f9=0xc8;}else{_0xad96f9=0xce;}_0x11782b[_0x751b('0x15')](_0xad96f9);return _0x11782b[_0x751b('0x1b')](_0x751b('0x1c'),_0x588dbb+'-'+_0x5df2d5+'/'+_0x516617)[_0x751b('0x16')](_0xffcbb8);}return null;};}function patchUpdates(_0x58d7aa){return function(_0x4fb8af){try{jsonpatch[_0x751b('0x1d')](_0x4fb8af,_0x58d7aa,!![]);}catch(_0x52cef3){return BPromise[_0x751b('0x1e')](_0x52cef3);}return _0x4fb8af['save']();};}function saveUpdates(_0x4577ae,_0x7dafe1){return function(_0x22515d){if(_0x22515d){return _0x22515d[_0x751b('0x1f')](_0x4577ae)[_0x751b('0x20')](function(_0x4d191d){return _0x4d191d;});}return null;};}function removeEntity(_0xf46c95,_0x800b11){return function(_0x19dbdf){if(_0x19dbdf){return _0x19dbdf[_0x751b('0x21')]()[_0x751b('0x20')](function(){_0xf46c95[_0x751b('0x15')](0xcc)[_0x751b('0x14')]();});}};}function handleEntityNotFound(_0x1998e0,_0x5ac33a){return function(_0x574ed4){if(!_0x574ed4){_0x1998e0[_0x751b('0x13')](0x194);}return _0x574ed4;};}function handleError(_0x5b68d3,_0x496b02){_0x496b02=_0x496b02||0x1f4;return function(_0x2fc6d0){logger[_0x751b('0x22')](_0x2fc6d0[_0x751b('0x23')]);if(_0x2fc6d0[_0x751b('0x24')]){delete _0x2fc6d0[_0x751b('0x24')];}_0x5b68d3[_0x751b('0x15')](_0x496b02)[_0x751b('0x25')](_0x2fc6d0);};}exports[_0x751b('0x26')]=function(_0x18a330,_0x598128){var _0x5894e2={},_0x3a6f1a={},_0x51a774={'count':0x0,'rows':[]};var _0x6d0774=_[_0x751b('0x27')](db[_0x751b('0x28')][_0x751b('0x29')],function(_0x3f7f50){return{'name':_0x3f7f50['fieldName'],'type':_0x3f7f50[_0x751b('0x2a')]['key']};});_0x3a6f1a[_0x751b('0x2b')]=_[_0x751b('0x27')](_0x6d0774,_0x751b('0x24'));_0x3a6f1a[_0x751b('0x2c')]=_['keys'](_0x18a330[_0x751b('0x2c')]);_0x3a6f1a['filters']=_[_0x751b('0x2d')](_0x3a6f1a[_0x751b('0x2b')],_0x3a6f1a[_0x751b('0x2c')]);_0x5894e2[_0x751b('0x2e')]=_['intersection'](_0x3a6f1a[_0x751b('0x2b')],qs[_0x751b('0x2f')](_0x18a330['query']['fields']));_0x5894e2[_0x751b('0x2e')]=_0x5894e2[_0x751b('0x2e')][_0x751b('0x30')]?_0x5894e2[_0x751b('0x2e')]:_0x3a6f1a[_0x751b('0x2b')];if(!_0x18a330[_0x751b('0x2c')]['hasOwnProperty'](_0x751b('0x31'))){_0x5894e2[_0x751b('0x19')]=qs['limit'](_0x18a330['query'][_0x751b('0x19')]);_0x5894e2[_0x751b('0x17')]=qs[_0x751b('0x17')](_0x18a330[_0x751b('0x2c')][_0x751b('0x17')]);}_0x5894e2[_0x751b('0x32')]=qs[_0x751b('0x33')](_0x18a330[_0x751b('0x2c')]['sort']);_0x5894e2[_0x751b('0x34')]=qs['filters'](_[_0x751b('0x35')](_0x18a330[_0x751b('0x2c')],_0x3a6f1a[_0x751b('0x36')]),_0x6d0774);if(_0x18a330[_0x751b('0x2c')]['filter']){_0x5894e2[_0x751b('0x34')]=_[_0x751b('0x37')](_0x5894e2[_0x751b('0x34')],{'$or':_['map'](_0x6d0774,function(_0x78220d){if(_0x78220d[_0x751b('0x2a')]!==_0x751b('0x38')){var _0x275f6e={};_0x275f6e[_0x78220d[_0x751b('0x24')]]={'$like':'%'+_0x18a330[_0x751b('0x2c')][_0x751b('0x39')]+'%'};return _0x275f6e;}})});}_0x5894e2=_['merge']({},_0x5894e2,_0x18a330['options']);var _0x3a25ad={'where':_0x5894e2[_0x751b('0x34')]};return db[_0x751b('0x28')][_0x751b('0x1a')](_0x3a25ad)[_0x751b('0x20')](function(_0x5878bf){_0x51a774[_0x751b('0x1a')]=_0x5878bf;if(_0x18a330[_0x751b('0x2c')][_0x751b('0x3a')]){_0x5894e2[_0x751b('0x3b')]=[{'all':!![]}];}return db[_0x751b('0x28')][_0x751b('0x3c')](_0x5894e2);})[_0x751b('0x20')](function(_0x35c6ae){_0x51a774['rows']=_0x35c6ae;return _0x51a774;})[_0x751b('0x20')](respondWithFilteredResult(_0x598128,_0x5894e2))['catch'](handleError(_0x598128,null));};exports[_0x751b('0x3d')]=function(_0x1ce78e,_0x524355){var _0x7289d={'raw':![],'where':{'id':_0x1ce78e[_0x751b('0x3e')]['id']}},_0x5b92c7={};_0x5b92c7[_0x751b('0x2b')]=_[_0x751b('0x3f')](db['IntegrationReport'][_0x751b('0x29')]);_0x5b92c7[_0x751b('0x2c')]=_['keys'](_0x1ce78e['query']);_0x5b92c7['filters']=_[_0x751b('0x2d')](_0x5b92c7['model'],_0x5b92c7['query']);_0x7289d[_0x751b('0x2e')]=_['intersection'](_0x5b92c7['model'],qs[_0x751b('0x2f')](_0x1ce78e[_0x751b('0x2c')][_0x751b('0x2f')]));_0x7289d['attributes']=_0x7289d[_0x751b('0x2e')][_0x751b('0x30')]?_0x7289d[_0x751b('0x2e')]:_0x5b92c7[_0x751b('0x2b')];if(_0x1ce78e['query']['includeAll']){_0x7289d[_0x751b('0x3b')]=[{'all':!![]}];}_0x7289d=_[_0x751b('0x37')]({},_0x7289d,_0x1ce78e['options']);return db[_0x751b('0x28')][_0x751b('0x40')](_0x7289d)[_0x751b('0x20')](handleEntityNotFound(_0x524355,null))[_0x751b('0x20')](respondWithResult(_0x524355,null))['catch'](handleError(_0x524355,null));};exports[_0x751b('0x41')]=function(_0x2b5d02,_0x75d4a0){return db['IntegrationReport'][_0x751b('0x41')](_0x2b5d02[_0x751b('0x42')],{})[_0x751b('0x20')](respondWithResult(_0x75d4a0,0xc9))[_0x751b('0x43')](handleError(_0x75d4a0,null));};exports['update']=function(_0x3c05c3,_0x11377b){if(_0x3c05c3[_0x751b('0x42')]['id']){delete _0x3c05c3['body']['id'];}return db[_0x751b('0x28')]['find']({'where':{'id':_0x3c05c3[_0x751b('0x3e')]['id']}})[_0x751b('0x20')](handleEntityNotFound(_0x11377b,null))[_0x751b('0x20')](saveUpdates(_0x3c05c3['body'],null))[_0x751b('0x20')](respondWithResult(_0x11377b,null))[_0x751b('0x43')](handleError(_0x11377b,null));};exports[_0x751b('0x21')]=function(_0x250540,_0x507aa0){return db[_0x751b('0x28')][_0x751b('0x40')]({'where':{'id':_0x250540[_0x751b('0x3e')]['id']}})[_0x751b('0x20')](handleEntityNotFound(_0x507aa0,null))[_0x751b('0x20')](removeEntity(_0x507aa0,null))[_0x751b('0x43')](handleError(_0x507aa0,null));};exports[_0x751b('0x44')]=function(_0x1b89b4,_0x1eb34b){return db[_0x751b('0x28')][_0x751b('0x44')]()[_0x751b('0x20')](respondWithResult(_0x1eb34b,null))[_0x751b('0x43')](handleError(_0x1eb34b,null));};
\ No newline at end of file
+var _0x1a90=['sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','update','then','destroy','error','stack','name','send','index','map','IntegrationReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','options','includeAll','include','findAll','rows','show','params','rawAttributes','catch','create','body','find','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','util'];(function(_0xfe2c35,_0x4853c5){var _0x5f1510=function(_0x4ead6d){while(--_0x4ead6d){_0xfe2c35['push'](_0xfe2c35['shift']());}};_0x5f1510(++_0x4853c5);}(_0x1a90,0x8a));var _0x01a9=function(_0x4a7f75,_0x3587c9){_0x4a7f75=_0x4a7f75-0x0;var _0x43e37a=_0x1a90[_0x4a7f75];return _0x43e37a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x01a9('0x0'));var jsonpatch=require(_0x01a9('0x1'));var rp=require(_0x01a9('0x2'));var moment=require(_0x01a9('0x3'));var BPromise=require(_0x01a9('0x4'));var Mustache=require('mustache');var util=require(_0x01a9('0x5'));var path=require('path');var sox=require(_0x01a9('0x6'));var csv=require(_0x01a9('0x7'));var ejs=require(_0x01a9('0x8'));var fs=require('fs');var fs_extra=require(_0x01a9('0x9'));var _=require('lodash');var squel=require(_0x01a9('0xa'));var crypto=require(_0x01a9('0xb'));var jsforce=require(_0x01a9('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x01a9('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x01a9('0xd'));var qs=require(_0x01a9('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x01a9('0xf'));var logger=require(_0x01a9('0x10'))(_0x01a9('0x11'));var utils=require('../../config/utils');var config=require(_0x01a9('0x12'));var licenseUtil=require(_0x01a9('0x13'));var db=require(_0x01a9('0x14'))['db'];function respondWithStatusCode(_0x5119be,_0x51f510){_0x51f510=_0x51f510||0xcc;return function(_0x2de561){if(_0x2de561){return _0x5119be[_0x01a9('0x15')](_0x51f510);}return _0x5119be[_0x01a9('0x16')](_0x51f510)[_0x01a9('0x17')]();};}function respondWithResult(_0x22f584,_0x303de9){_0x303de9=_0x303de9||0xc8;return function(_0x462395){if(_0x462395){return _0x22f584[_0x01a9('0x16')](_0x303de9)[_0x01a9('0x18')](_0x462395);}};}function respondWithFilteredResult(_0x2db17d,_0x7441d5){return function(_0x4b2478){if(_0x4b2478){var _0x2ca0d6=typeof _0x7441d5[_0x01a9('0x19')]===_0x01a9('0x1a')&&typeof _0x7441d5[_0x01a9('0x1b')]===_0x01a9('0x1a');var _0x346648=_0x4b2478[_0x01a9('0x1c')];var _0x3b05f9=_0x2ca0d6?0x0:_0x7441d5[_0x01a9('0x19')];var _0x16ce6e=_0x2ca0d6?_0x4b2478[_0x01a9('0x1c')]:_0x7441d5['offset']+_0x7441d5[_0x01a9('0x1b')];var _0x4f0633;if(_0x16ce6e>=_0x346648){_0x16ce6e=_0x346648;_0x4f0633=0xc8;}else{_0x4f0633=0xce;}_0x2db17d[_0x01a9('0x16')](_0x4f0633);return _0x2db17d[_0x01a9('0x1d')]('Content-Range',_0x3b05f9+'-'+_0x16ce6e+'/'+_0x346648)[_0x01a9('0x18')](_0x4b2478);}return null;};}function patchUpdates(_0x170ec6){return function(_0x22607e){try{jsonpatch[_0x01a9('0x1e')](_0x22607e,_0x170ec6,!![]);}catch(_0x2f13ab){return BPromise['reject'](_0x2f13ab);}return _0x22607e['save']();};}function saveUpdates(_0x4ffa21,_0x477a37){return function(_0x512620){if(_0x512620){return _0x512620[_0x01a9('0x1f')](_0x4ffa21)[_0x01a9('0x20')](function(_0x41418f){return _0x41418f;});}return null;};}function removeEntity(_0x2bbfb1,_0x26c87a){return function(_0x263efb){if(_0x263efb){return _0x263efb[_0x01a9('0x21')]()[_0x01a9('0x20')](function(){_0x2bbfb1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2220a6,_0x3b5ac5){return function(_0x5a410a){if(!_0x5a410a){_0x2220a6[_0x01a9('0x15')](0x194);}return _0x5a410a;};}function handleError(_0x48e16f,_0x201abe){_0x201abe=_0x201abe||0x1f4;return function(_0x5e6c3e){logger[_0x01a9('0x22')](_0x5e6c3e[_0x01a9('0x23')]);if(_0x5e6c3e['name']){delete _0x5e6c3e[_0x01a9('0x24')];}_0x48e16f[_0x01a9('0x16')](_0x201abe)[_0x01a9('0x25')](_0x5e6c3e);};}exports[_0x01a9('0x26')]=function(_0x374ec1,_0x16bae7){var _0x1e3fc7={},_0x572aa0={},_0x22fb9a={'count':0x0,'rows':[]};var _0x21393a=_[_0x01a9('0x27')](db[_0x01a9('0x28')]['rawAttributes'],function(_0x1d2221){return{'name':_0x1d2221[_0x01a9('0x29')],'type':_0x1d2221[_0x01a9('0x2a')][_0x01a9('0x2b')]};});_0x572aa0[_0x01a9('0x2c')]=_[_0x01a9('0x27')](_0x21393a,_0x01a9('0x24'));_0x572aa0[_0x01a9('0x2d')]=_[_0x01a9('0x2e')](_0x374ec1['query']);_0x572aa0[_0x01a9('0x2f')]=_[_0x01a9('0x30')](_0x572aa0[_0x01a9('0x2c')],_0x572aa0[_0x01a9('0x2d')]);_0x1e3fc7[_0x01a9('0x31')]=_[_0x01a9('0x30')](_0x572aa0[_0x01a9('0x2c')],qs[_0x01a9('0x32')](_0x374ec1['query'][_0x01a9('0x32')]));_0x1e3fc7[_0x01a9('0x31')]=_0x1e3fc7[_0x01a9('0x31')][_0x01a9('0x33')]?_0x1e3fc7[_0x01a9('0x31')]:_0x572aa0[_0x01a9('0x2c')];if(!_0x374ec1[_0x01a9('0x2d')][_0x01a9('0x34')](_0x01a9('0x35'))){_0x1e3fc7[_0x01a9('0x1b')]=qs[_0x01a9('0x1b')](_0x374ec1[_0x01a9('0x2d')][_0x01a9('0x1b')]);_0x1e3fc7['offset']=qs[_0x01a9('0x19')](_0x374ec1[_0x01a9('0x2d')][_0x01a9('0x19')]);}_0x1e3fc7[_0x01a9('0x36')]=qs[_0x01a9('0x37')](_0x374ec1['query']['sort']);_0x1e3fc7[_0x01a9('0x38')]=qs['filters'](_[_0x01a9('0x39')](_0x374ec1['query'],_0x572aa0[_0x01a9('0x2f')]),_0x21393a);if(_0x374ec1[_0x01a9('0x2d')]['filter']){_0x1e3fc7[_0x01a9('0x38')]=_['merge'](_0x1e3fc7['where'],{'$or':_[_0x01a9('0x27')](_0x21393a,function(_0xe847d4){if(_0xe847d4[_0x01a9('0x2a')]!=='VIRTUAL'){var _0xcd434a={};_0xcd434a[_0xe847d4[_0x01a9('0x24')]]={'$like':'%'+_0x374ec1['query'][_0x01a9('0x3a')]+'%'};return _0xcd434a;}})});}_0x1e3fc7=_['merge']({},_0x1e3fc7,_0x374ec1[_0x01a9('0x3b')]);var _0x2cafcf={'where':_0x1e3fc7['where']};return db[_0x01a9('0x28')][_0x01a9('0x1c')](_0x2cafcf)[_0x01a9('0x20')](function(_0x18e42a){_0x22fb9a['count']=_0x18e42a;if(_0x374ec1['query'][_0x01a9('0x3c')]){_0x1e3fc7[_0x01a9('0x3d')]=[{'all':!![]}];}return db[_0x01a9('0x28')][_0x01a9('0x3e')](_0x1e3fc7);})[_0x01a9('0x20')](function(_0x2fa60b){_0x22fb9a[_0x01a9('0x3f')]=_0x2fa60b;return _0x22fb9a;})['then'](respondWithFilteredResult(_0x16bae7,_0x1e3fc7))['catch'](handleError(_0x16bae7,null));};exports[_0x01a9('0x40')]=function(_0x368b21,_0x10bfa8){var _0x58362a={'raw':![],'where':{'id':_0x368b21[_0x01a9('0x41')]['id']}},_0x59c386={};_0x59c386[_0x01a9('0x2c')]=_[_0x01a9('0x2e')](db[_0x01a9('0x28')][_0x01a9('0x42')]);_0x59c386[_0x01a9('0x2d')]=_[_0x01a9('0x2e')](_0x368b21[_0x01a9('0x2d')]);_0x59c386[_0x01a9('0x2f')]=_[_0x01a9('0x30')](_0x59c386[_0x01a9('0x2c')],_0x59c386[_0x01a9('0x2d')]);_0x58362a[_0x01a9('0x31')]=_[_0x01a9('0x30')](_0x59c386['model'],qs[_0x01a9('0x32')](_0x368b21['query'][_0x01a9('0x32')]));_0x58362a[_0x01a9('0x31')]=_0x58362a[_0x01a9('0x31')]['length']?_0x58362a[_0x01a9('0x31')]:_0x59c386[_0x01a9('0x2c')];if(_0x368b21['query'][_0x01a9('0x3c')]){_0x58362a[_0x01a9('0x3d')]=[{'all':!![]}];}_0x58362a=_['merge']({},_0x58362a,_0x368b21[_0x01a9('0x3b')]);return db[_0x01a9('0x28')]['find'](_0x58362a)[_0x01a9('0x20')](handleEntityNotFound(_0x10bfa8,null))['then'](respondWithResult(_0x10bfa8,null))[_0x01a9('0x43')](handleError(_0x10bfa8,null));};exports[_0x01a9('0x44')]=function(_0xa120af,_0x6e37d){return db[_0x01a9('0x28')]['create'](_0xa120af[_0x01a9('0x45')],{})[_0x01a9('0x20')](respondWithResult(_0x6e37d,0xc9))[_0x01a9('0x43')](handleError(_0x6e37d,null));};exports['update']=function(_0x570291,_0x891f46){if(_0x570291[_0x01a9('0x45')]['id']){delete _0x570291[_0x01a9('0x45')]['id'];}return db[_0x01a9('0x28')][_0x01a9('0x46')]({'where':{'id':_0x570291[_0x01a9('0x41')]['id']}})[_0x01a9('0x20')](handleEntityNotFound(_0x891f46,null))[_0x01a9('0x20')](saveUpdates(_0x570291['body'],null))[_0x01a9('0x20')](respondWithResult(_0x891f46,null))[_0x01a9('0x43')](handleError(_0x891f46,null));};exports[_0x01a9('0x21')]=function(_0x585994,_0x1ef7a4){return db['IntegrationReport'][_0x01a9('0x46')]({'where':{'id':_0x585994[_0x01a9('0x41')]['id']}})['then'](handleEntityNotFound(_0x1ef7a4,null))[_0x01a9('0x20')](removeEntity(_0x1ef7a4,null))[_0x01a9('0x43')](handleError(_0x1ef7a4,null));};exports[_0x01a9('0x47')]=function(_0x3c4edf,_0x25e72a){return db[_0x01a9('0x28')][_0x01a9('0x47')]()[_0x01a9('0x20')](respondWithResult(_0x25e72a,null))['catch'](handleError(_0x25e72a,null));};
\ No newline at end of file
index c47bc28..767f4c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d3f=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./integrationReport.attributes','exports','IntegrationReport','report_integration'];(function(_0x1fcc6d,_0x2c233f){var _0x2c1e98=function(_0x7f3974){while(--_0x7f3974){_0x1fcc6d['push'](_0x1fcc6d['shift']());}};_0x2c1e98(++_0x2c233f);}(_0x6d3f,0xa9));var _0xf6d3=function(_0x1b93ce,_0x59fdb2){_0x1b93ce=_0x1b93ce-0x0;var _0x193f0a=_0x6d3f[_0x1b93ce];return _0x193f0a;};'use strict';var _=require(_0xf6d3('0x0'));var util=require('util');var logger=require(_0xf6d3('0x1'))(_0xf6d3('0x2'));var moment=require(_0xf6d3('0x3'));var BPromise=require(_0xf6d3('0x4'));var rp=require(_0xf6d3('0x5'));var fs=require('fs');var path=require(_0xf6d3('0x6'));var rimraf=require(_0xf6d3('0x7'));var config=require(_0xf6d3('0x8'));var attributes=require(_0xf6d3('0x9'));module[_0xf6d3('0xa')]=function(_0x50a8a9,_0x335f88){return _0x50a8a9['define'](_0xf6d3('0xb'),attributes,{'tableName':_0xf6d3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8383=['../../config/logger','api','request-promise','path','exports','define','IntegrationReport','report_integration','lodash'];(function(_0x359d1e,_0x19d09d){var _0x4f5551=function(_0x4efae9){while(--_0x4efae9){_0x359d1e['push'](_0x359d1e['shift']());}};_0x4f5551(++_0x19d09d);}(_0x8383,0xd7));var _0x3838=function(_0x241a0d,_0x4d953c){_0x241a0d=_0x241a0d-0x0;var _0x28d6d6=_0x8383[_0x241a0d];return _0x28d6d6;};'use strict';var _=require(_0x3838('0x0'));var util=require('util');var logger=require(_0x3838('0x1'))(_0x3838('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3838('0x3'));var fs=require('fs');var path=require(_0x3838('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./integrationReport.attributes');module[_0x3838('0x5')]=function(_0x107379,_0x14e74a){return _0x107379[_0x3838('0x6')](_0x3838('0x7'),attributes,{'tableName':_0x3838('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f76de43..8736ecd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x39c65b,_0x4b5a02){var _0x487fee=function(_0x5d3a6b){while(--_0x5d3a6b){_0x39c65b['push'](_0x39c65b['shift']());}};_0x487fee(++_0x4b5a02);}(_0xadb5,0xad));var _0x5adb=function(_0x339ed9,_0x375907){_0x339ed9=_0x339ed9-0x0;var _0x1beca2=_0xadb5[_0x339ed9];return _0x1beca2;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('IntegrationReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
+var _0xc2c7=['../../config/logger','jayson/promise','client','http','request','then','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0xc2c7,0x134));var _0x7c2c=function(_0x10069e,_0x435d8e){_0x10069e=_0x10069e-0x0;var _0x3ce1e2=_0xc2c7[_0x10069e];return _0x3ce1e2;};'use strict';var _=require('lodash');var util=require(_0x7c2c('0x0'));var moment=require(_0x7c2c('0x1'));var BPromise=require(_0x7c2c('0x2'));var rs=require(_0x7c2c('0x3'));var fs=require('fs');var Redis=require(_0x7c2c('0x4'));var db=require(_0x7c2c('0x5'))['db'];var utils=require(_0x7c2c('0x6'));var logger=require(_0x7c2c('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7c2c('0x8'));var client=jayson[_0x7c2c('0x9')][_0x7c2c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x54f027,_0x4abe93,_0x5a1027){return new BPromise(function(_0x2274cd,_0x29638d){return client[_0x7c2c('0xb')](_0x54f027,_0x5a1027)[_0x7c2c('0xc')](function(_0x279cff){logger['info'](_0x7c2c('0xd'),_0x4abe93,_0x7c2c('0xe'));logger[_0x7c2c('0xf')](_0x7c2c('0x10'),_0x4abe93,_0x7c2c('0xe'),JSON[_0x7c2c('0x11')](_0x279cff));if(_0x279cff[_0x7c2c('0x12')]){if(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x13')]===0x1f4){logger[_0x7c2c('0x12')](_0x7c2c('0xd'),_0x4abe93,_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);return _0x29638d(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);}logger[_0x7c2c('0x12')]('IntegrationReport,\x20%s,\x20%s',_0x4abe93,_0x279cff['error'][_0x7c2c('0x14')]);return _0x2274cd(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);}else{logger['info'](_0x7c2c('0xd'),_0x4abe93,_0x7c2c('0xe'));_0x2274cd(_0x279cff['result'][_0x7c2c('0x14')]);}})['catch'](function(_0x1aa355){logger['error'](_0x7c2c('0xd'),_0x4abe93,_0x1aa355);_0x29638d(_0x1aa355);});});}
\ No newline at end of file
index 828cb65..a0f0c78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d76=['update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./interval.controller','get','isAuthenticated','index','/:id','show','/:id/sub_intervals','getIntervals','post','create','addInterval','addIntervals','put'];(function(_0x581c13,_0x5b2049){var _0xa9783d=function(_0x597f2d){while(--_0x597f2d){_0x581c13['push'](_0x581c13['shift']());}};_0xa9783d(++_0x5b2049);}(_0x9d76,0x76));var _0x69d7=function(_0x17a1e0,_0x25a3e8){_0x17a1e0=_0x17a1e0-0x0;var _0x1f1163=_0x9d76[_0x17a1e0];return _0x1f1163;};'use strict';var multer=require(_0x69d7('0x0'));var util=require('util');var path=require(_0x69d7('0x1'));var timeout=require(_0x69d7('0x2'));var express=require(_0x69d7('0x3'));var router=express[_0x69d7('0x4')]();var fs_extra=require(_0x69d7('0x5'));var auth=require(_0x69d7('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x69d7('0x7'));router[_0x69d7('0x8')]('/',auth[_0x69d7('0x9')](),controller[_0x69d7('0xa')]);router['get'](_0x69d7('0xb'),auth[_0x69d7('0x9')](),controller[_0x69d7('0xc')]);router[_0x69d7('0x8')](_0x69d7('0xd'),auth[_0x69d7('0x9')](),controller[_0x69d7('0xe')]);router[_0x69d7('0xf')]('/',auth['isAuthenticated'](),controller[_0x69d7('0x10')]);router[_0x69d7('0xf')](_0x69d7('0xd'),auth[_0x69d7('0x9')](),controller[_0x69d7('0x11')]);router[_0x69d7('0xf')]('/:id/sub_intervals/create_many',auth['isAuthenticated'](),controller[_0x69d7('0x12')]);router[_0x69d7('0x13')]('/:id',auth[_0x69d7('0x9')](),controller[_0x69d7('0x14')]);router[_0x69d7('0x15')](_0x69d7('0xb'),auth[_0x69d7('0x9')](),controller[_0x69d7('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xcff4=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./interval.controller','get','isAuthenticated','index','show','/:id/sub_intervals','getIntervals','post','create','addInterval','/:id/sub_intervals/create_many','addIntervals','put','/:id','update','delete','destroy','exports'];(function(_0x47dfad,_0xca91e){var _0xbbad18=function(_0x3a32e7){while(--_0x3a32e7){_0x47dfad['push'](_0x47dfad['shift']());}};_0xbbad18(++_0xca91e);}(_0xcff4,0x11e));var _0x4cff=function(_0x46f5b5,_0x15842e){_0x46f5b5=_0x46f5b5-0x0;var _0x4e3d26=_0xcff4[_0x46f5b5];return _0x4e3d26;};'use strict';var multer=require(_0x4cff('0x0'));var util=require(_0x4cff('0x1'));var path=require(_0x4cff('0x2'));var timeout=require(_0x4cff('0x3'));var express=require(_0x4cff('0x4'));var router=express[_0x4cff('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4cff('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x4cff('0x7'));var controller=require(_0x4cff('0x8'));router[_0x4cff('0x9')]('/',auth[_0x4cff('0xa')](),controller[_0x4cff('0xb')]);router[_0x4cff('0x9')]('/:id',auth[_0x4cff('0xa')](),controller[_0x4cff('0xc')]);router[_0x4cff('0x9')](_0x4cff('0xd'),auth[_0x4cff('0xa')](),controller[_0x4cff('0xe')]);router[_0x4cff('0xf')]('/',auth[_0x4cff('0xa')](),controller[_0x4cff('0x10')]);router[_0x4cff('0xf')]('/:id/sub_intervals',auth['isAuthenticated'](),controller[_0x4cff('0x11')]);router[_0x4cff('0xf')](_0x4cff('0x12'),auth['isAuthenticated'](),controller[_0x4cff('0x13')]);router[_0x4cff('0x14')](_0x4cff('0x15'),auth[_0x4cff('0xa')](),controller[_0x4cff('0x16')]);router[_0x4cff('0x17')](_0x4cff('0x15'),auth[_0x4cff('0xa')](),controller[_0x4cff('0x18')]);module[_0x4cff('0x19')]=router;
\ No newline at end of file
index 16de96e..ad64c64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6ec=['sequelize','STRING'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0xe6ec,0x7a));var _0xce6e=function(_0x16f515,_0x403a35){_0x16f515=_0x16f515-0x0;var _0x20659c=_0xe6ec[_0x16f515];return _0x20659c;};'use strict';var Sequelize=require(_0xce6e('0x0'));module['exports']={'name':{'type':Sequelize[_0xce6e('0x1')]},'description':{'type':Sequelize[_0xce6e('0x1')]},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0xb396=['STRING','sequelize','exports'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xb396,0x1a5));var _0x6b39=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xb396[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x6b39('0x0'));module[_0x6b39('0x1')]={'name':{'type':Sequelize[_0x6b39('0x2')]},'description':{'type':Sequelize[_0x6b39('0x2')]},'interval':{'type':Sequelize[_0x6b39('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 8d2ba7a..fdf0915 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x323e=['../../components/extensions/rewrite','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','get','Intervals','UserProfileResource','destroy','sendStatus','error','stack','name','send','map','Interval','type','key','model','keys','intersection','query','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','options','include','findAll','show','params','length','includeAll','create','body','UserProfileSection','userProfileId','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','addInterval','getIntervals','rawAttributes','addIntervals','findOne','sequelize','transaction','bulkCreate','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x25b217,_0x5bb647){var _0x11ac67=function(_0x2e5d6a){while(--_0x2e5d6a){_0x25b217['push'](_0x25b217['shift']());}};_0x11ac67(++_0x5bb647);}(_0x323e,0x14b));var _0xe323=function(_0x21df2b,_0x556721){_0x21df2b=_0x21df2b-0x0;var _0x4c03c2=_0x323e[_0x21df2b];return _0x4c03c2;};'use strict';var emlformat=require(_0xe323('0x0'));var rimraf=require(_0xe323('0x1'));var zipdir=require(_0xe323('0x2'));var jsonpatch=require(_0xe323('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe323('0x4'));var util=require(_0xe323('0x5'));var path=require(_0xe323('0x6'));var sox=require(_0xe323('0x7'));var csv=require(_0xe323('0x8'));var ejs=require(_0xe323('0x9'));var fs=require('fs');var fs_extra=require(_0xe323('0xa'));var _=require(_0xe323('0xb'));var squel=require('squel');var crypto=require(_0xe323('0xc'));var jsforce=require(_0xe323('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xe323('0x8'));var querystring=require(_0xe323('0xe'));var Papa=require(_0xe323('0xf'));var Redis=require('ioredis');var authService=require(_0xe323('0x10'));var qs=require(_0xe323('0x11'));var as=require(_0xe323('0x12'));var hardwareService=require(_0xe323('0x13'));var logger=require(_0xe323('0x14'))(_0xe323('0x15'));var utils=require(_0xe323('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xe323('0x17'));var db=require(_0xe323('0x18'))['db'];var extensions=require(_0xe323('0x19'));function respondWithStatusCode(_0x2e1ca7,_0xdfebb3){_0xdfebb3=_0xdfebb3||0xcc;return function(_0xa6b371){if(_0xa6b371){return _0x2e1ca7['sendStatus'](_0xdfebb3);}return _0x2e1ca7[_0xe323('0x1a')](_0xdfebb3)[_0xe323('0x1b')]();};}function respondWithResult(_0x133e02,_0x46a5f0){_0x46a5f0=_0x46a5f0||0xc8;return function(_0x2faecb){if(_0x2faecb){return _0x133e02[_0xe323('0x1a')](_0x46a5f0)[_0xe323('0x1c')](_0x2faecb);}};}function respondWithFilteredResult(_0x4555fd,_0x30886e){return function(_0x559868){if(_0x559868){var _0x499c52=typeof _0x30886e[_0xe323('0x1d')]===_0xe323('0x1e')&&typeof _0x30886e[_0xe323('0x1f')]===_0xe323('0x1e');var _0x2eb5ea=_0x559868['count'];var _0x4bd6aa=_0x499c52?0x0:_0x30886e[_0xe323('0x1d')];var _0x34c575=_0x499c52?_0x559868[_0xe323('0x20')]:_0x30886e['offset']+_0x30886e[_0xe323('0x1f')];var _0x1c3b7c;if(_0x34c575>=_0x2eb5ea){_0x34c575=_0x2eb5ea;_0x1c3b7c=0xc8;}else{_0x1c3b7c=0xce;}_0x4555fd[_0xe323('0x1a')](_0x1c3b7c);return _0x4555fd[_0xe323('0x21')](_0xe323('0x22'),_0x4bd6aa+'-'+_0x34c575+'/'+_0x2eb5ea)[_0xe323('0x1c')](_0x559868);}return null;};}function patchUpdates(_0x58618e){return function(_0x12d7bd){try{jsonpatch[_0xe323('0x23')](_0x12d7bd,_0x58618e,!![]);}catch(_0x33fa6e){return BPromise[_0xe323('0x24')](_0x33fa6e);}return _0x12d7bd['save']();};}function saveUpdates(_0x394acc,_0x56d819){return function(_0x318f13){if(_0x318f13){return _0x318f13[_0xe323('0x25')](_0x394acc)[_0xe323('0x26')](function(_0x53d543){return _0x53d543;});}return null;};}function removeEntity(_0x3aa745,_0x2553e4){return function(_0xebac7f){if(_0xebac7f){return _0xebac7f['destroy']()[_0xe323('0x26')](function(){var _0x3d3f62=_0xebac7f[_0xe323('0x27')]({'plain':!![]});var _0x5c4114=_0xe323('0x28');return db[_0xe323('0x29')][_0xe323('0x2a')]({'where':{'type':_0x5c4114,'resourceId':_0x3d3f62['id']}})[_0xe323('0x26')](function(){return _0xebac7f;});})[_0xe323('0x26')](function(){_0x3aa745['status'](0xcc)[_0xe323('0x1b')]();});}};}function handleEntityNotFound(_0x470633,_0x5d4c1a){return function(_0x94eddb){if(!_0x94eddb){_0x470633[_0xe323('0x2b')](0x194);}return _0x94eddb;};}function handleError(_0x1b9180,_0x81bf8f){_0x81bf8f=_0x81bf8f||0x1f4;return function(_0x45b224){logger[_0xe323('0x2c')](_0x45b224[_0xe323('0x2d')]);if(_0x45b224[_0xe323('0x2e')]){delete _0x45b224['name'];}_0x1b9180[_0xe323('0x1a')](_0x81bf8f)[_0xe323('0x2f')](_0x45b224);};}exports['index']=function(_0x338bd1,_0xf73731){var _0x59e8e1={},_0x5e2f8f={},_0x444680={'count':0x0,'rows':[]};var _0x5ed14d=_[_0xe323('0x30')](db[_0xe323('0x31')]['rawAttributes'],function(_0x1191be){return{'name':_0x1191be['fieldName'],'type':_0x1191be[_0xe323('0x32')][_0xe323('0x33')]};});_0x5e2f8f[_0xe323('0x34')]=_[_0xe323('0x30')](_0x5ed14d,_0xe323('0x2e'));_0x5e2f8f['query']=_[_0xe323('0x35')](_0x338bd1['query']);_0x5e2f8f['filters']=_[_0xe323('0x36')](_0x5e2f8f[_0xe323('0x34')],_0x5e2f8f[_0xe323('0x37')]);_0x59e8e1[_0xe323('0x38')]=_[_0xe323('0x36')](_0x5e2f8f['model'],qs[_0xe323('0x39')](_0x338bd1['query'][_0xe323('0x39')]));_0x59e8e1['attributes']=_0x59e8e1['attributes']['length']?_0x59e8e1[_0xe323('0x38')]:_0x5e2f8f[_0xe323('0x34')];if(!_0x338bd1[_0xe323('0x37')][_0xe323('0x3a')](_0xe323('0x3b'))){_0x59e8e1[_0xe323('0x1f')]=qs['limit'](_0x338bd1[_0xe323('0x37')][_0xe323('0x1f')]);_0x59e8e1[_0xe323('0x1d')]=qs[_0xe323('0x1d')](_0x338bd1['query'][_0xe323('0x1d')]);}_0x59e8e1[_0xe323('0x3c')]=qs[_0xe323('0x3d')](_0x338bd1[_0xe323('0x37')][_0xe323('0x3d')]);_0x59e8e1['where']=qs[_0xe323('0x3e')](_[_0xe323('0x3f')](_0x338bd1[_0xe323('0x37')],_0x5e2f8f[_0xe323('0x3e')]),_0x5ed14d);if(_0x338bd1[_0xe323('0x37')][_0xe323('0x40')]){_0x59e8e1[_0xe323('0x41')]=_[_0xe323('0x42')](_0x59e8e1['where'],{'$or':_[_0xe323('0x30')](_0x5ed14d,function(_0x26458f){if(_0x26458f[_0xe323('0x32')]!=='VIRTUAL'){var _0x3c8010={};_0x3c8010[_0x26458f[_0xe323('0x2e')]]={'$like':'%'+_0x338bd1['query'][_0xe323('0x40')]+'%'};return _0x3c8010;}})});}_0x59e8e1=_[_0xe323('0x42')]({},_0x59e8e1,_0x338bd1[_0xe323('0x43')]);var _0x266415={'where':_0x59e8e1['where']};return db[_0xe323('0x31')][_0xe323('0x20')](_0x266415)[_0xe323('0x26')](function(_0x4901d4){_0x444680[_0xe323('0x20')]=_0x4901d4;if(_0x338bd1[_0xe323('0x37')]['includeAll']){_0x59e8e1[_0xe323('0x44')]=[{'all':!![]}];}return db['Interval'][_0xe323('0x45')](_0x59e8e1);})[_0xe323('0x26')](function(_0x5674ea){_0x444680['rows']=_0x5674ea;return _0x444680;})[_0xe323('0x26')](respondWithFilteredResult(_0xf73731,_0x59e8e1))['catch'](handleError(_0xf73731,null));};exports[_0xe323('0x46')]=function(_0x4f45c2,_0x3e07ef){var _0x30e0d2={'raw':!![],'where':{'id':_0x4f45c2[_0xe323('0x47')]['id']}},_0x4cff57={};_0x4cff57['model']=_['keys'](db[_0xe323('0x31')]['rawAttributes']);_0x4cff57[_0xe323('0x37')]=_['keys'](_0x4f45c2[_0xe323('0x37')]);_0x4cff57[_0xe323('0x3e')]=_[_0xe323('0x36')](_0x4cff57[_0xe323('0x34')],_0x4cff57[_0xe323('0x37')]);_0x30e0d2[_0xe323('0x38')]=_['intersection'](_0x4cff57[_0xe323('0x34')],qs[_0xe323('0x39')](_0x4f45c2[_0xe323('0x37')][_0xe323('0x39')]));_0x30e0d2[_0xe323('0x38')]=_0x30e0d2[_0xe323('0x38')][_0xe323('0x48')]?_0x30e0d2[_0xe323('0x38')]:_0x4cff57[_0xe323('0x34')];if(_0x4f45c2[_0xe323('0x37')][_0xe323('0x49')]){_0x30e0d2[_0xe323('0x44')]=[{'all':!![]}];}_0x30e0d2=_['merge']({},_0x30e0d2,_0x4f45c2[_0xe323('0x43')]);return db[_0xe323('0x31')]['find'](_0x30e0d2)['then'](handleEntityNotFound(_0x3e07ef,null))[_0xe323('0x26')](respondWithResult(_0x3e07ef,null))['catch'](handleError(_0x3e07ef,null));};exports[_0xe323('0x4a')]=function(_0xa06d06,_0x2e34e3){return db[_0xe323('0x31')][_0xe323('0x4a')](_0xa06d06[_0xe323('0x4b')],{})[_0xe323('0x26')](function(_0x440d1b){var _0x4dc2b1=_0xa06d06['user'][_0xe323('0x27')]({'plain':!![]});if(!_0x4dc2b1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4dc2b1['role']==='user'){var _0xa65c07=_0x440d1b[_0xe323('0x27')]({'plain':!![]});var _0x2b853a=_0xe323('0x28');return db[_0xe323('0x4c')]['find']({'where':{'name':_0x2b853a,'userProfileId':_0x4dc2b1[_0xe323('0x4d')]},'raw':!![]})[_0xe323('0x26')](function(_0xa3362a){if(_0xa3362a&&_0xa3362a['autoAssociation']===0x0){return db['UserProfileResource'][_0xe323('0x4a')]({'name':_0xa65c07[_0xe323('0x2e')],'resourceId':_0xa65c07['id'],'type':_0xa3362a[_0xe323('0x2e')],'sectionId':_0xa3362a['id']},{})['then'](function(){return _0x440d1b;});}else{return _0x440d1b;}})[_0xe323('0x4e')](function(_0x180a11){logger[_0xe323('0x2c')](_0xe323('0x4f'),_0x180a11);throw _0x180a11;});}return _0x440d1b;})[_0xe323('0x26')](respondWithResult(_0x2e34e3,0xc9))['catch'](handleError(_0x2e34e3,null));};exports[_0xe323('0x25')]=function(_0x45c402,_0x4a61d8){if(_0x45c402[_0xe323('0x4b')]['id']){delete _0x45c402[_0xe323('0x4b')]['id'];}return db[_0xe323('0x31')][_0xe323('0x50')]({'where':{'id':_0x45c402[_0xe323('0x47')]['id']}})[_0xe323('0x26')](handleEntityNotFound(_0x4a61d8,null))['then'](saveUpdates(_0x45c402['body'],null))[_0xe323('0x26')](respondWithResult(_0x4a61d8,null))[_0xe323('0x4e')](handleError(_0x4a61d8,null));};exports[_0xe323('0x2a')]=function(_0x2ad290,_0x1fa348){return db[_0xe323('0x31')]['find']({'where':{'id':_0x2ad290[_0xe323('0x47')]['id']}})['then'](handleEntityNotFound(_0x1fa348,null))['then'](removeEntity(_0x1fa348,null))[_0xe323('0x4e')](handleError(_0x1fa348,null));};exports[_0xe323('0x51')]=function(_0x177bf3,_0x47f91d,_0x45b8ee){if(_0x177bf3[_0xe323('0x4b')]['id']){delete _0x177bf3[_0xe323('0x4b')]['id'];}return db['Interval'][_0xe323('0x50')]({'where':{'id':_0x177bf3[_0xe323('0x47')]['id']}})[_0xe323('0x26')](handleEntityNotFound(_0x47f91d,null))[_0xe323('0x26')](function(_0x5e4bf5){if(_0x5e4bf5){_0x177bf3['body']['IntervalId']=_0x5e4bf5['id'];return db[_0xe323('0x31')][_0xe323('0x4a')](_0x177bf3[_0xe323('0x4b')]);}})[_0xe323('0x26')](respondWithResult(_0x47f91d,null))['catch'](handleError(_0x47f91d,null));};exports[_0xe323('0x52')]=function(_0x5c2b15,_0x34edd6,_0x5aa47f){var _0x2be651={};var _0x2170e7={};var _0x45b280;var _0x57df61;return db[_0xe323('0x31')]['findOne']({'where':{'id':_0x5c2b15[_0xe323('0x47')]['id']}})[_0xe323('0x26')](handleEntityNotFound(_0x34edd6,null))[_0xe323('0x26')](function(_0x20fb0f){if(_0x20fb0f){_0x45b280=_0x20fb0f;_0x2170e7[_0xe323('0x34')]=_[_0xe323('0x35')](db[_0xe323('0x31')][_0xe323('0x53')]);_0x2170e7[_0xe323('0x37')]=_[_0xe323('0x35')](_0x5c2b15[_0xe323('0x37')]);_0x2170e7[_0xe323('0x3e')]=_[_0xe323('0x36')](_0x2170e7[_0xe323('0x34')],_0x2170e7[_0xe323('0x37')]);_0x2be651[_0xe323('0x38')]=_[_0xe323('0x36')](_0x2170e7['model'],qs[_0xe323('0x39')](_0x5c2b15['query'][_0xe323('0x39')]));_0x2be651['attributes']=_0x2be651[_0xe323('0x38')][_0xe323('0x48')]?_0x2be651[_0xe323('0x38')]:_0x2170e7['model'];_0x2be651[_0xe323('0x3c')]=qs[_0xe323('0x3d')](_0x5c2b15['query'][_0xe323('0x3d')]);_0x2be651[_0xe323('0x41')]=qs['filters'](_[_0xe323('0x3f')](_0x5c2b15[_0xe323('0x37')],_0x2170e7[_0xe323('0x3e')]));if(_0x5c2b15[_0xe323('0x37')][_0xe323('0x40')]){_0x2be651[_0xe323('0x41')]=_['merge'](_0x2be651['where'],{'$or':_[_0xe323('0x30')](_0x2be651['attributes'],function(_0x1df879){var _0x465ef5={};_0x465ef5[_0x1df879]={'$like':'%'+_0x5c2b15[_0xe323('0x37')][_0xe323('0x40')]+'%'};return _0x465ef5;})});}_0x2be651=_[_0xe323('0x42')]({},_0x2be651,_0x5c2b15[_0xe323('0x43')]);return _0x45b280[_0xe323('0x52')](_0x2be651);}})[_0xe323('0x26')](function(_0x1b86c0){if(_0x1b86c0){_0x57df61=_0x1b86c0[_0xe323('0x48')];if(!_0x5c2b15[_0xe323('0x37')][_0xe323('0x3a')]('nolimit')){_0x2be651['limit']=qs[_0xe323('0x1f')](_0x5c2b15[_0xe323('0x37')][_0xe323('0x1f')]);_0x2be651[_0xe323('0x1d')]=qs[_0xe323('0x1d')](_0x5c2b15[_0xe323('0x37')][_0xe323('0x1d')]);}return _0x45b280[_0xe323('0x52')](_0x2be651);}})['then'](function(_0x55b492){if(_0x55b492){return _0x55b492?{'count':_0x57df61,'rows':_0x55b492}:null;}})[_0xe323('0x26')](respondWithResult(_0x34edd6,null))[_0xe323('0x4e')](handleError(_0x34edd6,null));};exports[_0xe323('0x54')]=function(_0x53d369,_0x5d4300,_0x53520c){return db['Interval'][_0xe323('0x55')]({'where':{'id':_0x53d369['params']['id']}})[_0xe323('0x26')](handleEntityNotFound(_0x5d4300,null))[_0xe323('0x26')](function(_0x255e6d){if(_0x255e6d){return db[_0xe323('0x56')][_0xe323('0x57')](function(_0x10cfba){return db[_0xe323('0x31')][_0xe323('0x2a')]({'where':{'IntervalId':_0x53d369['params']['id']},'transaction':_0x10cfba})[_0xe323('0x26')](function(_0x1beb0b){var _0x1bae1c=_['map'](_0x53d369[_0xe323('0x4b')],function(_0x549320){delete _0x549320['id'];_0x549320['IntervalId']=_0x53d369[_0xe323('0x47')]['id'];return _0x549320;});return db['Interval'][_0xe323('0x58')](_0x1bae1c,{'transaction':_0x10cfba});});})[_0xe323('0x26')](function(){return db[_0xe323('0x31')][_0xe323('0x45')]({'where':{'IntervalId':_0x53d369[_0xe323('0x47')]['id']}});});}})[_0xe323('0x26')](respondWithResult(_0x5d4300,null))[_0xe323('0x4e')](handleError(_0x5d4300,null));};
\ No newline at end of file
+var _0xfd0e=['Interval','includeAll','include','findAll','rows','catch','show','params','find','create','body','role','user','Intervals','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addInterval','IntervalId','getIntervals','findOne','addIntervals','transaction','bulkCreate','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../components/extensions/rewrite','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','get','UserProfileResource','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options'];(function(_0x25a195,_0x3e663f){var _0x548754=function(_0x281242){while(--_0x281242){_0x25a195['push'](_0x25a195['shift']());}};_0x548754(++_0x3e663f);}(_0xfd0e,0x18d));var _0xefd0=function(_0x469ac7,_0x38e416){_0x469ac7=_0x469ac7-0x0;var _0x22f3b0=_0xfd0e[_0x469ac7];return _0x22f3b0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xefd0('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xefd0('0x1'));var rp=require('request-promise');var moment=require(_0xefd0('0x2'));var BPromise=require(_0xefd0('0x3'));var Mustache=require(_0xefd0('0x4'));var util=require(_0xefd0('0x5'));var path=require(_0xefd0('0x6'));var sox=require('sox');var csv=require(_0xefd0('0x7'));var ejs=require(_0xefd0('0x8'));var fs=require('fs');var fs_extra=require(_0xefd0('0x9'));var _=require(_0xefd0('0xa'));var squel=require(_0xefd0('0xb'));var crypto=require(_0xefd0('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xefd0('0xd'));var toCsv=require('to-csv');var querystring=require(_0xefd0('0xe'));var Papa=require(_0xefd0('0xf'));var Redis=require(_0xefd0('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xefd0('0x11'));var as=require(_0xefd0('0x12'));var hardwareService=require(_0xefd0('0x13'));var logger=require('../../config/logger')(_0xefd0('0x14'));var utils=require(_0xefd0('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var extensions=require(_0xefd0('0x16'));function respondWithStatusCode(_0x2fb5f8,_0x1f2cd0){_0x1f2cd0=_0x1f2cd0||0xcc;return function(_0x24756d){if(_0x24756d){return _0x2fb5f8[_0xefd0('0x17')](_0x1f2cd0);}return _0x2fb5f8[_0xefd0('0x18')](_0x1f2cd0)[_0xefd0('0x19')]();};}function respondWithResult(_0x3989ce,_0x29b869){_0x29b869=_0x29b869||0xc8;return function(_0x8db30f){if(_0x8db30f){return _0x3989ce[_0xefd0('0x18')](_0x29b869)[_0xefd0('0x1a')](_0x8db30f);}};}function respondWithFilteredResult(_0x46613a,_0x4c94a9){return function(_0x2e1cdf){if(_0x2e1cdf){var _0x3947b6=typeof _0x4c94a9[_0xefd0('0x1b')]===_0xefd0('0x1c')&&typeof _0x4c94a9[_0xefd0('0x1d')]==='undefined';var _0x26c732=_0x2e1cdf[_0xefd0('0x1e')];var _0x13d925=_0x3947b6?0x0:_0x4c94a9[_0xefd0('0x1b')];var _0x20c2a9=_0x3947b6?_0x2e1cdf[_0xefd0('0x1e')]:_0x4c94a9['offset']+_0x4c94a9[_0xefd0('0x1d')];var _0x249bc6;if(_0x20c2a9>=_0x26c732){_0x20c2a9=_0x26c732;_0x249bc6=0xc8;}else{_0x249bc6=0xce;}_0x46613a[_0xefd0('0x18')](_0x249bc6);return _0x46613a[_0xefd0('0x1f')](_0xefd0('0x20'),_0x13d925+'-'+_0x20c2a9+'/'+_0x26c732)[_0xefd0('0x1a')](_0x2e1cdf);}return null;};}function patchUpdates(_0x35b7d3){return function(_0x1d6fad){try{jsonpatch[_0xefd0('0x21')](_0x1d6fad,_0x35b7d3,!![]);}catch(_0x1bc25c){return BPromise[_0xefd0('0x22')](_0x1bc25c);}return _0x1d6fad['save']();};}function saveUpdates(_0x4a3049,_0x52ab3d){return function(_0x468d3e){if(_0x468d3e){return _0x468d3e[_0xefd0('0x23')](_0x4a3049)[_0xefd0('0x24')](function(_0x559066){return _0x559066;});}return null;};}function removeEntity(_0x45524d,_0x2725df){return function(_0x5414b5){if(_0x5414b5){return _0x5414b5['destroy']()['then'](function(){var _0x3a2a74=_0x5414b5[_0xefd0('0x25')]({'plain':!![]});var _0x39ff07='Intervals';return db[_0xefd0('0x26')][_0xefd0('0x27')]({'where':{'type':_0x39ff07,'resourceId':_0x3a2a74['id']}})[_0xefd0('0x24')](function(){return _0x5414b5;});})[_0xefd0('0x24')](function(){_0x45524d[_0xefd0('0x18')](0xcc)[_0xefd0('0x19')]();});}};}function handleEntityNotFound(_0x1d05c6,_0x2cb1bb){return function(_0x405d78){if(!_0x405d78){_0x1d05c6[_0xefd0('0x17')](0x194);}return _0x405d78;};}function handleError(_0x266ab4,_0x301f44){_0x301f44=_0x301f44||0x1f4;return function(_0xe5163f){logger[_0xefd0('0x28')](_0xe5163f[_0xefd0('0x29')]);if(_0xe5163f[_0xefd0('0x2a')]){delete _0xe5163f[_0xefd0('0x2a')];}_0x266ab4[_0xefd0('0x18')](_0x301f44)[_0xefd0('0x2b')](_0xe5163f);};}exports[_0xefd0('0x2c')]=function(_0x423a41,_0x52a75a){var _0x4ca609={},_0x362247={},_0x2713e4={'count':0x0,'rows':[]};var _0xb146e3=_[_0xefd0('0x2d')](db['Interval'][_0xefd0('0x2e')],function(_0x51334b){return{'name':_0x51334b[_0xefd0('0x2f')],'type':_0x51334b[_0xefd0('0x30')][_0xefd0('0x31')]};});_0x362247['model']=_[_0xefd0('0x2d')](_0xb146e3,_0xefd0('0x2a'));_0x362247[_0xefd0('0x32')]=_[_0xefd0('0x33')](_0x423a41[_0xefd0('0x32')]);_0x362247[_0xefd0('0x34')]=_[_0xefd0('0x35')](_0x362247['model'],_0x362247[_0xefd0('0x32')]);_0x4ca609[_0xefd0('0x36')]=_[_0xefd0('0x35')](_0x362247[_0xefd0('0x37')],qs[_0xefd0('0x38')](_0x423a41['query'][_0xefd0('0x38')]));_0x4ca609[_0xefd0('0x36')]=_0x4ca609[_0xefd0('0x36')][_0xefd0('0x39')]?_0x4ca609['attributes']:_0x362247[_0xefd0('0x37')];if(!_0x423a41[_0xefd0('0x32')][_0xefd0('0x3a')](_0xefd0('0x3b'))){_0x4ca609['limit']=qs[_0xefd0('0x1d')](_0x423a41['query'][_0xefd0('0x1d')]);_0x4ca609[_0xefd0('0x1b')]=qs[_0xefd0('0x1b')](_0x423a41[_0xefd0('0x32')][_0xefd0('0x1b')]);}_0x4ca609[_0xefd0('0x3c')]=qs[_0xefd0('0x3d')](_0x423a41['query'][_0xefd0('0x3d')]);_0x4ca609[_0xefd0('0x3e')]=qs['filters'](_[_0xefd0('0x3f')](_0x423a41['query'],_0x362247[_0xefd0('0x34')]),_0xb146e3);if(_0x423a41[_0xefd0('0x32')]['filter']){_0x4ca609[_0xefd0('0x3e')]=_[_0xefd0('0x40')](_0x4ca609['where'],{'$or':_[_0xefd0('0x2d')](_0xb146e3,function(_0x2760de){if(_0x2760de[_0xefd0('0x30')]!==_0xefd0('0x41')){var _0x59924c={};_0x59924c[_0x2760de['name']]={'$like':'%'+_0x423a41[_0xefd0('0x32')][_0xefd0('0x42')]+'%'};return _0x59924c;}})});}_0x4ca609=_[_0xefd0('0x40')]({},_0x4ca609,_0x423a41[_0xefd0('0x43')]);var _0x109fb6={'where':_0x4ca609[_0xefd0('0x3e')]};return db[_0xefd0('0x44')]['count'](_0x109fb6)[_0xefd0('0x24')](function(_0x45e5cf){_0x2713e4[_0xefd0('0x1e')]=_0x45e5cf;if(_0x423a41[_0xefd0('0x32')][_0xefd0('0x45')]){_0x4ca609[_0xefd0('0x46')]=[{'all':!![]}];}return db['Interval'][_0xefd0('0x47')](_0x4ca609);})[_0xefd0('0x24')](function(_0x3753f7){_0x2713e4[_0xefd0('0x48')]=_0x3753f7;return _0x2713e4;})[_0xefd0('0x24')](respondWithFilteredResult(_0x52a75a,_0x4ca609))[_0xefd0('0x49')](handleError(_0x52a75a,null));};exports[_0xefd0('0x4a')]=function(_0x4a2c3f,_0x183fe6){var _0x3c2e55={'raw':!![],'where':{'id':_0x4a2c3f[_0xefd0('0x4b')]['id']}},_0xd0d6b8={};_0xd0d6b8[_0xefd0('0x37')]=_[_0xefd0('0x33')](db['Interval']['rawAttributes']);_0xd0d6b8['query']=_['keys'](_0x4a2c3f[_0xefd0('0x32')]);_0xd0d6b8[_0xefd0('0x34')]=_[_0xefd0('0x35')](_0xd0d6b8[_0xefd0('0x37')],_0xd0d6b8[_0xefd0('0x32')]);_0x3c2e55[_0xefd0('0x36')]=_[_0xefd0('0x35')](_0xd0d6b8['model'],qs[_0xefd0('0x38')](_0x4a2c3f[_0xefd0('0x32')][_0xefd0('0x38')]));_0x3c2e55['attributes']=_0x3c2e55[_0xefd0('0x36')][_0xefd0('0x39')]?_0x3c2e55[_0xefd0('0x36')]:_0xd0d6b8[_0xefd0('0x37')];if(_0x4a2c3f[_0xefd0('0x32')]['includeAll']){_0x3c2e55[_0xefd0('0x46')]=[{'all':!![]}];}_0x3c2e55=_['merge']({},_0x3c2e55,_0x4a2c3f[_0xefd0('0x43')]);return db[_0xefd0('0x44')][_0xefd0('0x4c')](_0x3c2e55)[_0xefd0('0x24')](handleEntityNotFound(_0x183fe6,null))[_0xefd0('0x24')](respondWithResult(_0x183fe6,null))[_0xefd0('0x49')](handleError(_0x183fe6,null));};exports[_0xefd0('0x4d')]=function(_0x422a21,_0x54c3d7){return db[_0xefd0('0x44')]['create'](_0x422a21[_0xefd0('0x4e')],{})[_0xefd0('0x24')](function(_0x5a4e35){var _0x46c27d=_0x422a21['user'][_0xefd0('0x25')]({'plain':!![]});if(!_0x46c27d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x46c27d[_0xefd0('0x4f')]===_0xefd0('0x50')){var _0x2bd989=_0x5a4e35[_0xefd0('0x25')]({'plain':!![]});var _0x315499=_0xefd0('0x51');return db[_0xefd0('0x52')][_0xefd0('0x4c')]({'where':{'name':_0x315499,'userProfileId':_0x46c27d[_0xefd0('0x53')]},'raw':!![]})[_0xefd0('0x24')](function(_0x53ea25){if(_0x53ea25&&_0x53ea25[_0xefd0('0x54')]===0x0){return db[_0xefd0('0x26')][_0xefd0('0x4d')]({'name':_0x2bd989[_0xefd0('0x2a')],'resourceId':_0x2bd989['id'],'type':_0x53ea25['name'],'sectionId':_0x53ea25['id']},{})[_0xefd0('0x24')](function(){return _0x5a4e35;});}else{return _0x5a4e35;}})[_0xefd0('0x49')](function(_0x5e9e9e){logger[_0xefd0('0x28')](_0xefd0('0x55'),_0x5e9e9e);throw _0x5e9e9e;});}return _0x5a4e35;})[_0xefd0('0x24')](respondWithResult(_0x54c3d7,0xc9))[_0xefd0('0x49')](handleError(_0x54c3d7,null));};exports['update']=function(_0x366a02,_0x15e706){if(_0x366a02[_0xefd0('0x4e')]['id']){delete _0x366a02[_0xefd0('0x4e')]['id'];}return db[_0xefd0('0x44')][_0xefd0('0x4c')]({'where':{'id':_0x366a02['params']['id']}})[_0xefd0('0x24')](handleEntityNotFound(_0x15e706,null))[_0xefd0('0x24')](saveUpdates(_0x366a02[_0xefd0('0x4e')],null))[_0xefd0('0x24')](respondWithResult(_0x15e706,null))[_0xefd0('0x49')](handleError(_0x15e706,null));};exports[_0xefd0('0x27')]=function(_0x313225,_0x42a211){return db[_0xefd0('0x44')][_0xefd0('0x4c')]({'where':{'id':_0x313225[_0xefd0('0x4b')]['id']}})[_0xefd0('0x24')](handleEntityNotFound(_0x42a211,null))[_0xefd0('0x24')](removeEntity(_0x42a211,null))[_0xefd0('0x49')](handleError(_0x42a211,null));};exports[_0xefd0('0x56')]=function(_0x8d88dd,_0x12177b,_0x33f82f){if(_0x8d88dd['body']['id']){delete _0x8d88dd[_0xefd0('0x4e')]['id'];}return db[_0xefd0('0x44')][_0xefd0('0x4c')]({'where':{'id':_0x8d88dd[_0xefd0('0x4b')]['id']}})[_0xefd0('0x24')](handleEntityNotFound(_0x12177b,null))[_0xefd0('0x24')](function(_0x516ed9){if(_0x516ed9){_0x8d88dd[_0xefd0('0x4e')][_0xefd0('0x57')]=_0x516ed9['id'];return db['Interval'][_0xefd0('0x4d')](_0x8d88dd[_0xefd0('0x4e')]);}})['then'](respondWithResult(_0x12177b,null))[_0xefd0('0x49')](handleError(_0x12177b,null));};exports[_0xefd0('0x58')]=function(_0x23d941,_0x280a7,_0x77b9d1){var _0x480717={};var _0x345c8b={};var _0x197646;var _0x35b7b4;return db[_0xefd0('0x44')][_0xefd0('0x59')]({'where':{'id':_0x23d941[_0xefd0('0x4b')]['id']}})['then'](handleEntityNotFound(_0x280a7,null))[_0xefd0('0x24')](function(_0x625b5f){if(_0x625b5f){_0x197646=_0x625b5f;_0x345c8b[_0xefd0('0x37')]=_[_0xefd0('0x33')](db['Interval'][_0xefd0('0x2e')]);_0x345c8b[_0xefd0('0x32')]=_[_0xefd0('0x33')](_0x23d941[_0xefd0('0x32')]);_0x345c8b[_0xefd0('0x34')]=_[_0xefd0('0x35')](_0x345c8b[_0xefd0('0x37')],_0x345c8b['query']);_0x480717[_0xefd0('0x36')]=_[_0xefd0('0x35')](_0x345c8b['model'],qs[_0xefd0('0x38')](_0x23d941[_0xefd0('0x32')][_0xefd0('0x38')]));_0x480717[_0xefd0('0x36')]=_0x480717[_0xefd0('0x36')][_0xefd0('0x39')]?_0x480717[_0xefd0('0x36')]:_0x345c8b[_0xefd0('0x37')];_0x480717[_0xefd0('0x3c')]=qs[_0xefd0('0x3d')](_0x23d941[_0xefd0('0x32')][_0xefd0('0x3d')]);_0x480717[_0xefd0('0x3e')]=qs[_0xefd0('0x34')](_['pick'](_0x23d941['query'],_0x345c8b[_0xefd0('0x34')]));if(_0x23d941[_0xefd0('0x32')]['filter']){_0x480717['where']=_['merge'](_0x480717[_0xefd0('0x3e')],{'$or':_[_0xefd0('0x2d')](_0x480717[_0xefd0('0x36')],function(_0x14da90){var _0x1d18df={};_0x1d18df[_0x14da90]={'$like':'%'+_0x23d941[_0xefd0('0x32')]['filter']+'%'};return _0x1d18df;})});}_0x480717=_[_0xefd0('0x40')]({},_0x480717,_0x23d941['options']);return _0x197646[_0xefd0('0x58')](_0x480717);}})['then'](function(_0x52387a){if(_0x52387a){_0x35b7b4=_0x52387a[_0xefd0('0x39')];if(!_0x23d941[_0xefd0('0x32')][_0xefd0('0x3a')](_0xefd0('0x3b'))){_0x480717[_0xefd0('0x1d')]=qs['limit'](_0x23d941[_0xefd0('0x32')][_0xefd0('0x1d')]);_0x480717['offset']=qs[_0xefd0('0x1b')](_0x23d941[_0xefd0('0x32')][_0xefd0('0x1b')]);}return _0x197646[_0xefd0('0x58')](_0x480717);}})['then'](function(_0x2002b2){if(_0x2002b2){return _0x2002b2?{'count':_0x35b7b4,'rows':_0x2002b2}:null;}})[_0xefd0('0x24')](respondWithResult(_0x280a7,null))[_0xefd0('0x49')](handleError(_0x280a7,null));};exports[_0xefd0('0x5a')]=function(_0x123a82,_0x3f158a,_0x3db791){return db[_0xefd0('0x44')][_0xefd0('0x59')]({'where':{'id':_0x123a82[_0xefd0('0x4b')]['id']}})[_0xefd0('0x24')](handleEntityNotFound(_0x3f158a,null))[_0xefd0('0x24')](function(_0x5e1361){if(_0x5e1361){return db['sequelize'][_0xefd0('0x5b')](function(_0x5050a4){return db[_0xefd0('0x44')][_0xefd0('0x27')]({'where':{'IntervalId':_0x123a82[_0xefd0('0x4b')]['id']},'transaction':_0x5050a4})[_0xefd0('0x24')](function(_0x339c95){var _0x2831d8=_[_0xefd0('0x2d')](_0x123a82['body'],function(_0xb41b95){delete _0xb41b95['id'];_0xb41b95[_0xefd0('0x57')]=_0x123a82[_0xefd0('0x4b')]['id'];return _0xb41b95;});return db[_0xefd0('0x44')][_0xefd0('0x5c')](_0x2831d8,{'transaction':_0x5050a4});});})[_0xefd0('0x24')](function(){return db[_0xefd0('0x44')][_0xefd0('0x47')]({'where':{'IntervalId':_0x123a82[_0xefd0('0x4b')]['id']}});});}})['then'](respondWithResult(_0x3f158a,null))[_0xefd0('0x49')](handleError(_0x3f158a,null));};
\ No newline at end of file
index 66b2e9e..edbcb2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe254=['util','../../config/logger','api','bluebird','path','rimraf','./interval.attributes','../../components/extensions/rewrite','exports','define','tools_intervals','rewrite','lodash'];(function(_0x55107e,_0x210c83){var _0x118ef9=function(_0x3f5282){while(--_0x3f5282){_0x55107e['push'](_0x55107e['shift']());}};_0x118ef9(++_0x210c83);}(_0xe254,0xa8));var _0x4e25=function(_0x302e6c,_0x33fcc1){_0x302e6c=_0x302e6c-0x0;var _0x3650a0=_0xe254[_0x302e6c];return _0x3650a0;};'use strict';var _=require(_0x4e25('0x0'));var util=require(_0x4e25('0x1'));var logger=require(_0x4e25('0x2'))(_0x4e25('0x3'));var moment=require('moment');var BPromise=require(_0x4e25('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4e25('0x5'));var rimraf=require(_0x4e25('0x6'));var config=require('../../config/environment');var attributes=require(_0x4e25('0x7'));var extensions=require(_0x4e25('0x8'));module[_0x4e25('0x9')]=function(_0x34634a,_0x592195){return _0x34634a[_0x4e25('0xa')]('Interval',attributes,{'tableName':_0x4e25('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x33d554,_0x958701){extensions[_0x4e25('0xc')](_0x34634a,_0x33d554);},'afterBulkCreate':function(_0x30c158,_0x44be34,_0x236ad7){_0x236ad7();extensions['rewrite'](_0x34634a,_0x30c158[0x0]);},'afterUpdate':function(_0x1e9280,_0x3e8005){extensions['rewrite'](_0x34634a,_0x1e9280);},'afterDestroy':function(_0x5613d2,_0x1de445){extensions['rewrite'](_0x34634a,_0x5613d2);}}});};
\ No newline at end of file
+var _0x17f7=['bluebird','path','rimraf','../../config/environment','../../components/extensions/rewrite','define','rewrite','lodash','util','../../config/logger','moment'];(function(_0x2b0507,_0x50f6f5){var _0x3de079=function(_0x56bf9d){while(--_0x56bf9d){_0x2b0507['push'](_0x2b0507['shift']());}};_0x3de079(++_0x50f6f5);}(_0x17f7,0x1bf));var _0x717f=function(_0x4c931a,_0x525603){_0x4c931a=_0x4c931a-0x0;var _0x37d734=_0x17f7[_0x4c931a];return _0x37d734;};'use strict';var _=require(_0x717f('0x0'));var util=require(_0x717f('0x1'));var logger=require(_0x717f('0x2'))('api');var moment=require(_0x717f('0x3'));var BPromise=require(_0x717f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x717f('0x5'));var rimraf=require(_0x717f('0x6'));var config=require(_0x717f('0x7'));var attributes=require('./interval.attributes');var extensions=require(_0x717f('0x8'));module['exports']=function(_0x50038f,_0xa52986){return _0x50038f[_0x717f('0x9')]('Interval',attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x37eb71,_0x2f56ac){extensions[_0x717f('0xa')](_0x50038f,_0x37eb71);},'afterBulkCreate':function(_0x44a8b9,_0xcf050b,_0x4e6e20){_0x4e6e20();extensions['rewrite'](_0x50038f,_0x44a8b9[0x0]);},'afterUpdate':function(_0xafeeb6,_0x2f9d7a){extensions[_0x717f('0xa')](_0x50038f,_0xafeeb6);},'afterDestroy':function(_0x2c2d20,_0x456bd2){extensions['rewrite'](_0x50038f,_0x2c2d20);}}});};
\ No newline at end of file
index 1f90568..81e8b5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x47df54,_0x1aeb61){var _0x261b87=function(_0x54bc77){while(--_0x54bc77){_0x47df54['push'](_0x47df54['shift']());}};_0x261b87(++_0x1aeb61);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
+var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x14363e,_0x4f0e0d){var _0x17c56d=function(_0x1c7bac){while(--_0x1c7bac){_0x14363e['push'](_0x14363e['shift']());}};_0x17c56d(++_0x4f0e0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xa9e0[_0xbb091];return _0x467a04;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
index 72171cb..d7e5ad4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['send','exports','Router','./jira.controller','post','isAuthenticated'];(function(_0x55821d,_0x27a22e){var _0x58ea8a=function(_0x5bdd3d){while(--_0x5bdd3d){_0x55821d['push'](_0x55821d['shift']());}};_0x58ea8a(++_0x27a22e);}(_0x5f66,0x1a0));var _0x65f6=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x5f66[_0x502c7d];return _0x30b7ed;};'use strict';var express=require('express');var router=express[_0x65f6('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x65f6('0x1'));router[_0x65f6('0x2')]('/',auth[_0x65f6('0x3')](),controller[_0x65f6('0x4')]);module[_0x65f6('0x5')]=router;
\ No newline at end of file
+var _0x2032=['isAuthenticated','send','Router','../../components/auth/service','./jira.controller'];(function(_0x3a982d,_0x13a4ca){var _0x1fcecb=function(_0x57fa74){while(--_0x57fa74){_0x3a982d['push'](_0x3a982d['shift']());}};_0x1fcecb(++_0x13a4ca);}(_0x2032,0xd9));var _0x2203=function(_0x596436,_0x2cb89f){_0x596436=_0x596436-0x0;var _0x5e974f=_0x2032[_0x596436];return _0x5e974f;};'use strict';var express=require('express');var router=express[_0x2203('0x0')]();var auth=require(_0x2203('0x1'));var controller=require(_0x2203('0x2'));router['post']('/',auth[_0x2203('0x3')](),controller[_0x2203('0x4')]);module['exports']=router;
\ No newline at end of file
index 598e8c6..3759225 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48b8=['oldToken','customfield_11502','newToken','name','reason','track.xcallymotion.com','/rest/api/2/issue','POST','application/json','Basic\x20','toString','base64','request','setEncoding','utf8','data','end','statusCode','json','parse','status','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','write','send','body','headers','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','key','MOTGUI','Report','\x20from\x20','description','stringify','issuetype','Bug','fields','customfield_11500','email','customfield_11501'];(function(_0x4f96e2,_0x27f60e){var _0x19d6d3=function(_0x21b51e){while(--_0x21b51e){_0x4f96e2['push'](_0x4f96e2['shift']());}};_0x19d6d3(++_0x27f60e);}(_0x48b8,0x19e));var _0x848b=function(_0x139dfc,_0x46e4c0){_0x139dfc=_0x139dfc-0x0;var _0x13599a=_0x48b8[_0x139dfc];return _0x13599a;};'use strict';var BPromise=require(_0x848b('0x0'));var https=require(_0x848b('0x1'));var logger=require(_0x848b('0x2'))(_0x848b('0x3'));var USERNAME=_0x848b('0x4');var PASSWORD=_0x848b('0x5');function openIssue(_0xa25943,_0x5b381b){var _0x4a23b4={'fields':{'project':{'key':_0xa25943[_0x848b('0x6')]||_0x848b('0x7')},'summary':(_0xa25943['summary']||_0x848b('0x8'))+_0x848b('0x9')+_0xa25943['ip'],'description':_0xa25943[_0x848b('0xa')]||JSON[_0x848b('0xb')](_0xa25943),'issuetype':{'name':_0xa25943[_0x848b('0xc')]||_0x848b('0xd')}}};_0x4a23b4[_0x848b('0xe')][_0x848b('0xf')]=_0xa25943[_0x848b('0x10')];_0x4a23b4[_0x848b('0xe')][_0x848b('0x11')]=_0xa25943[_0x848b('0x12')];_0x4a23b4[_0x848b('0xe')][_0x848b('0x13')]=_0xa25943[_0x848b('0x14')];_0x4a23b4[_0x848b('0xe')]['customfield_11503']=_0xa25943[_0x848b('0x15')];_0x4a23b4[_0x848b('0xe')]['customfield_11504']=_0xa25943[_0x848b('0x16')];_0x4a23b4[_0x848b('0xe')]['customfield_10102']=_0xa25943['ip'];var _0x2d3e07={'host':_0x848b('0x17'),'port':0x1bb,'path':_0x848b('0x18'),'method':_0x848b('0x19'),'timeout':0x4e20,'headers':{'Content-Type':_0x848b('0x1a'),'Authorization':_0x848b('0x1b')+new Buffer(USERNAME+':'+PASSWORD)[_0x848b('0x1c')](_0x848b('0x1d'))}};var _0x192175=JSON[_0x848b('0xb')](_0x4a23b4);var _0x4eaddc=https[_0x848b('0x1e')](_0x2d3e07,function(_0x51ddcd){_0x51ddcd[_0x848b('0x1f')](_0x848b('0x20'));var _0x3984f8='';_0x51ddcd['on'](_0x848b('0x21'),function(_0x535715){_0x3984f8+=_0x535715;});_0x51ddcd['on'](_0x848b('0x22'),function(){if(_0x5b381b){return _0x5b381b['status'](_0x51ddcd[_0x848b('0x23')])[_0x848b('0x24')](JSON[_0x848b('0x25')](_0x3984f8));}});});_0x4eaddc['on']('error',function(_0x516da3){if(_0x5b381b){return _0x5b381b[_0x848b('0x26')](0x1f4)[_0x848b('0x24')]({'errors':[{'message':_0x848b('0x27'),'type':'api.jira'}]});}});_0x4eaddc[_0x848b('0x28')](_0x192175);_0x4eaddc[_0x848b('0x22')]();}exports['openIssue']=openIssue;exports[_0x848b('0x29')]=function(_0x4c1424,_0x2cdb41){_0x4c1424[_0x848b('0x2a')]['ip']=_0x4c1424[_0x848b('0x2b')][_0x848b('0x2c')]||_0x4c1424[_0x848b('0x2d')][_0x848b('0x2e')]||_0x4c1424[_0x848b('0x2f')][_0x848b('0x2e')]||_0x4c1424['connection'][_0x848b('0x2f')]['remoteAddress'];return openIssue(_0x4c1424[_0x848b('0x2a')],_0x2cdb41);};
\ No newline at end of file
+var _0xaeef=['setEncoding','utf8','data','end','status','statusCode','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','send','body','headers','connection','remoteAddress','socket','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','key','MOTGUI','Report','stringify','issuetype','fields','customfield_11500','email','customfield_11501','oldToken','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','POST','application/json','toString','base64'];(function(_0x3598bb,_0x24befa){var _0x13c837=function(_0x3de578){while(--_0x3de578){_0x3598bb['push'](_0x3598bb['shift']());}};_0x13c837(++_0x24befa);}(_0xaeef,0x1d3));var _0xfaee=function(_0x2263d7,_0x3e5cad){_0x2263d7=_0x2263d7-0x0;var _0x23e823=_0xaeef[_0x2263d7];return _0x23e823;};'use strict';var BPromise=require(_0xfaee('0x0'));var https=require(_0xfaee('0x1'));var logger=require(_0xfaee('0x2'))(_0xfaee('0x3'));var USERNAME=_0xfaee('0x4');var PASSWORD=_0xfaee('0x5');function openIssue(_0x4f6eee,_0x55819a){var _0x469d22={'fields':{'project':{'key':_0x4f6eee[_0xfaee('0x6')]||_0xfaee('0x7')},'summary':(_0x4f6eee['summary']||_0xfaee('0x8'))+'\x20from\x20'+_0x4f6eee['ip'],'description':_0x4f6eee['description']||JSON[_0xfaee('0x9')](_0x4f6eee),'issuetype':{'name':_0x4f6eee[_0xfaee('0xa')]||'Bug'}}};_0x469d22[_0xfaee('0xb')][_0xfaee('0xc')]=_0x4f6eee[_0xfaee('0xd')];_0x469d22['fields'][_0xfaee('0xe')]=_0x4f6eee[_0xfaee('0xf')];_0x469d22[_0xfaee('0xb')]['customfield_11502']=_0x4f6eee['newToken'];_0x469d22['fields']['customfield_11503']=_0x4f6eee[_0xfaee('0x10')];_0x469d22[_0xfaee('0xb')][_0xfaee('0x11')]=_0x4f6eee[_0xfaee('0x12')];_0x469d22['fields'][_0xfaee('0x13')]=_0x4f6eee['ip'];var _0x271a26={'host':_0xfaee('0x14'),'port':0x1bb,'path':'/rest/api/2/issue','method':_0xfaee('0x15'),'timeout':0x4e20,'headers':{'Content-Type':_0xfaee('0x16'),'Authorization':'Basic\x20'+new Buffer(USERNAME+':'+PASSWORD)[_0xfaee('0x17')](_0xfaee('0x18'))}};var _0x122a99=JSON[_0xfaee('0x9')](_0x469d22);var _0x1a1e23=https['request'](_0x271a26,function(_0x1fa736){_0x1fa736[_0xfaee('0x19')](_0xfaee('0x1a'));var _0x6d7396='';_0x1fa736['on'](_0xfaee('0x1b'),function(_0x2d1fe9){_0x6d7396+=_0x2d1fe9;});_0x1fa736['on'](_0xfaee('0x1c'),function(){if(_0x55819a){return _0x55819a[_0xfaee('0x1d')](_0x1fa736[_0xfaee('0x1e')])[_0xfaee('0x1f')](JSON[_0xfaee('0x20')](_0x6d7396));}});});_0x1a1e23['on'](_0xfaee('0x21'),function(_0x58dbe6){if(_0x55819a){return _0x55819a[_0xfaee('0x1d')](0x1f4)['json']({'errors':[{'message':_0xfaee('0x22'),'type':'api.jira'}]});}});_0x1a1e23['write'](_0x122a99);_0x1a1e23[_0xfaee('0x1c')]();}exports['openIssue']=openIssue;exports[_0xfaee('0x23')]=function(_0x3294f6,_0x3da5a3){_0x3294f6[_0xfaee('0x24')]['ip']=_0x3294f6[_0xfaee('0x25')]['x-forwarded-for']||_0x3294f6[_0xfaee('0x26')][_0xfaee('0x27')]||_0x3294f6[_0xfaee('0x28')][_0xfaee('0x27')]||_0x3294f6['connection'][_0xfaee('0x28')]['remoteAddress'];return openIssue(_0x3294f6['body'],_0x3da5a3);};
\ No newline at end of file
index 63d609c..bd4041a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c81=['index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','multer','util','connect-timeout','express','../../config/environment','./jscriptyAnswerReport.controller','get','isAuthenticated'];(function(_0x2ca515,_0x2f0654){var _0x2f7701=function(_0x20b48b){while(--_0x20b48b){_0x2ca515['push'](_0x2ca515['shift']());}};_0x2f7701(++_0x2f0654);}(_0x3c81,0x102));var _0x13c8=function(_0x3ccb78,_0x3e886c){_0x3ccb78=_0x3ccb78-0x0;var _0x5be230=_0x3c81[_0x3ccb78];return _0x5be230;};'use strict';var multer=require(_0x13c8('0x0'));var util=require(_0x13c8('0x1'));var path=require('path');var timeout=require(_0x13c8('0x2'));var express=require(_0x13c8('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x13c8('0x4'));var controller=require(_0x13c8('0x5'));router[_0x13c8('0x6')]('/',auth[_0x13c8('0x7')](),controller[_0x13c8('0x8')]);router[_0x13c8('0x6')](_0x13c8('0x9'),auth['isAuthenticated'](),controller[_0x13c8('0xa')]);router['get'](_0x13c8('0xb'),auth[_0x13c8('0x7')](),controller[_0x13c8('0xc')]);router[_0x13c8('0xd')]('/',auth[_0x13c8('0x7')](),controller[_0x13c8('0xe')]);router[_0x13c8('0xf')](_0x13c8('0xb'),auth[_0x13c8('0x7')](),controller[_0x13c8('0x10')]);router[_0x13c8('0x11')](_0x13c8('0xb'),auth[_0x13c8('0x7')](),controller[_0x13c8('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xfd28=['show','put','delete','destroy','exports','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','get','isAuthenticated','index','describe','/:id'];(function(_0x13fd59,_0x2e05b1){var _0x2e6ce7=function(_0x519a4b){while(--_0x519a4b){_0x13fd59['push'](_0x13fd59['shift']());}};_0x2e6ce7(++_0x2e05b1);}(_0xfd28,0x148));var _0x8fd2=function(_0x648163,_0x241576){_0x648163=_0x648163-0x0;var _0x199d4d=_0xfd28[_0x648163];return _0x199d4d;};'use strict';var multer=require('multer');var util=require(_0x8fd2('0x0'));var path=require(_0x8fd2('0x1'));var timeout=require('connect-timeout');var express=require(_0x8fd2('0x2'));var router=express['Router']();var fs_extra=require(_0x8fd2('0x3'));var auth=require(_0x8fd2('0x4'));var interaction=require(_0x8fd2('0x5'));var config=require('../../config/environment');var controller=require(_0x8fd2('0x6'));router[_0x8fd2('0x7')]('/',auth[_0x8fd2('0x8')](),controller[_0x8fd2('0x9')]);router[_0x8fd2('0x7')]('/describe',auth['isAuthenticated'](),controller[_0x8fd2('0xa')]);router[_0x8fd2('0x7')](_0x8fd2('0xb'),auth['isAuthenticated'](),controller[_0x8fd2('0xc')]);router['post']('/',auth[_0x8fd2('0x8')](),controller['create']);router[_0x8fd2('0xd')]('/:id',auth[_0x8fd2('0x8')](),controller['update']);router[_0x8fd2('0xe')]('/:id',auth[_0x8fd2('0x8')](),controller[_0x8fd2('0xf')]);module[_0x8fd2('0x10')]=router;
\ No newline at end of file
index 08f7f3f..740370e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x1caf6a,_0x26a5bf){var _0x1bf493=function(_0x3982f5){while(--_0x3982f5){_0x1caf6a['push'](_0x1caf6a['shift']());}};_0x1bf493(++_0x26a5bf);}(_0x7a54,0x106));var _0x47a5=function(_0x12db02,_0x87f27d){_0x12db02=_0x12db02-0x0;var _0x4339f4=_0x7a54[_0x12db02];return _0x4339f4;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0x7a54,0x106));var _0x47a5=function(_0x424a47,_0x4cd08c){_0x424a47=_0x424a47-0x0;var _0x59eb54=_0x7a54[_0x424a47];return _0x59eb54;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
index a3156e2..a15b08a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x425d=['mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','error','name','send','index','map','JscriptyAnswerReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','fields','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x425d,0x1e0));var _0xd425=function(_0x10d07b,_0xa771c5){_0x10d07b=_0x10d07b-0x0;var _0x2c880e=_0x425d[_0x10d07b];return _0x2c880e;};'use strict';var emlformat=require(_0xd425('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd425('0x1'));var jsonpatch=require(_0xd425('0x2'));var rp=require(_0xd425('0x3'));var moment=require(_0xd425('0x4'));var BPromise=require(_0xd425('0x5'));var Mustache=require(_0xd425('0x6'));var util=require(_0xd425('0x7'));var path=require('path');var sox=require(_0xd425('0x8'));var csv=require(_0xd425('0x9'));var ejs=require(_0xd425('0xa'));var fs=require('fs');var fs_extra=require(_0xd425('0xb'));var _=require(_0xd425('0xc'));var squel=require(_0xd425('0xd'));var crypto=require('crypto');var jsforce=require(_0xd425('0xe'));var deskjs=require(_0xd425('0xf'));var toCsv=require(_0xd425('0x9'));var querystring=require(_0xd425('0x10'));var Papa=require(_0xd425('0x11'));var Redis=require(_0xd425('0x12'));var authService=require(_0xd425('0x13'));var qs=require(_0xd425('0x14'));var as=require(_0xd425('0x15'));var hardwareService=require(_0xd425('0x16'));var logger=require(_0xd425('0x17'))(_0xd425('0x18'));var utils=require(_0xd425('0x19'));var config=require(_0xd425('0x1a'));var licenseUtil=require(_0xd425('0x1b'));var db=require(_0xd425('0x1c'))['db'];function respondWithStatusCode(_0x9bb611,_0x3cacf7){_0x3cacf7=_0x3cacf7||0xcc;return function(_0x3b5de8){if(_0x3b5de8){return _0x9bb611[_0xd425('0x1d')](_0x3cacf7);}return _0x9bb611['status'](_0x3cacf7)[_0xd425('0x1e')]();};}function respondWithResult(_0x17a498,_0x336dc3){_0x336dc3=_0x336dc3||0xc8;return function(_0x5d3d60){if(_0x5d3d60){return _0x17a498[_0xd425('0x1f')](_0x336dc3)[_0xd425('0x20')](_0x5d3d60);}};}function respondWithFilteredResult(_0x643fd2,_0x41f34d){return function(_0x1fc822){if(_0x1fc822){var _0x538a0a=typeof _0x41f34d[_0xd425('0x21')]===_0xd425('0x22')&&typeof _0x41f34d[_0xd425('0x23')]===_0xd425('0x22');var _0x5d6585=_0x1fc822[_0xd425('0x24')];var _0x434d97=_0x538a0a?0x0:_0x41f34d[_0xd425('0x21')];var _0x1155bc=_0x538a0a?_0x1fc822['count']:_0x41f34d['offset']+_0x41f34d['limit'];var _0x4b293a;if(_0x1155bc>=_0x5d6585){_0x1155bc=_0x5d6585;_0x4b293a=0xc8;}else{_0x4b293a=0xce;}_0x643fd2[_0xd425('0x1f')](_0x4b293a);return _0x643fd2[_0xd425('0x25')](_0xd425('0x26'),_0x434d97+'-'+_0x1155bc+'/'+_0x5d6585)['json'](_0x1fc822);}return null;};}function patchUpdates(_0x355af0){return function(_0x7e982e){try{jsonpatch['apply'](_0x7e982e,_0x355af0,!![]);}catch(_0x2e1ec4){return BPromise[_0xd425('0x27')](_0x2e1ec4);}return _0x7e982e[_0xd425('0x28')]();};}function saveUpdates(_0x1d3fc0,_0x3e93db){return function(_0xb240c4){if(_0xb240c4){return _0xb240c4[_0xd425('0x29')](_0x1d3fc0)[_0xd425('0x2a')](function(_0x314201){return _0x314201;});}return null;};}function removeEntity(_0x2b030b,_0x151ad9){return function(_0x40e84b){if(_0x40e84b){return _0x40e84b['destroy']()[_0xd425('0x2a')](function(){_0x2b030b[_0xd425('0x1f')](0xcc)[_0xd425('0x1e')]();});}};}function handleEntityNotFound(_0x1908a5,_0x2afcdb){return function(_0x400dd7){if(!_0x400dd7){_0x1908a5[_0xd425('0x1d')](0x194);}return _0x400dd7;};}function handleError(_0x577e4b,_0x12f951){_0x12f951=_0x12f951||0x1f4;return function(_0x177de2){logger[_0xd425('0x2b')](_0x177de2['stack']);if(_0x177de2[_0xd425('0x2c')]){delete _0x177de2[_0xd425('0x2c')];}_0x577e4b[_0xd425('0x1f')](_0x12f951)[_0xd425('0x2d')](_0x177de2);};}exports[_0xd425('0x2e')]=function(_0x185d7e,_0x2fd17a){var _0x37b63c={},_0x24da23={},_0x1cac61={'count':0x0,'rows':[]};var _0x482ba6=_[_0xd425('0x2f')](db[_0xd425('0x30')][_0xd425('0x31')],function(_0x3695dd){return{'name':_0x3695dd[_0xd425('0x32')],'type':_0x3695dd[_0xd425('0x33')][_0xd425('0x34')]};});_0x24da23[_0xd425('0x35')]=_[_0xd425('0x2f')](_0x482ba6,_0xd425('0x2c'));_0x24da23[_0xd425('0x36')]=_['keys'](_0x185d7e[_0xd425('0x36')]);_0x24da23[_0xd425('0x37')]=_[_0xd425('0x38')](_0x24da23[_0xd425('0x35')],_0x24da23[_0xd425('0x36')]);_0x37b63c['attributes']=_[_0xd425('0x38')](_0x24da23[_0xd425('0x35')],qs['fields'](_0x185d7e['query']['fields']));_0x37b63c[_0xd425('0x39')]=_0x37b63c[_0xd425('0x39')][_0xd425('0x3a')]?_0x37b63c[_0xd425('0x39')]:_0x24da23['model'];if(!_0x185d7e[_0xd425('0x36')][_0xd425('0x3b')](_0xd425('0x3c'))){_0x37b63c[_0xd425('0x23')]=qs[_0xd425('0x23')](_0x185d7e[_0xd425('0x36')][_0xd425('0x23')]);_0x37b63c['offset']=qs[_0xd425('0x21')](_0x185d7e['query'][_0xd425('0x21')]);}_0x37b63c[_0xd425('0x3d')]=qs[_0xd425('0x3e')](_0x185d7e['query'][_0xd425('0x3e')]);_0x37b63c[_0xd425('0x3f')]=qs[_0xd425('0x37')](_[_0xd425('0x40')](_0x185d7e['query'],_0x24da23[_0xd425('0x37')]),_0x482ba6);if(_0x185d7e[_0xd425('0x36')]['filter']){_0x37b63c['where']=_['merge'](_0x37b63c[_0xd425('0x3f')],{'$or':_[_0xd425('0x2f')](_0x482ba6,function(_0x1f30c1){if(_0x1f30c1['type']!=='VIRTUAL'){var _0x58ebb1={};_0x58ebb1[_0x1f30c1[_0xd425('0x2c')]]={'$like':'%'+_0x185d7e[_0xd425('0x36')][_0xd425('0x41')]+'%'};return _0x58ebb1;}})});}_0x37b63c=_[_0xd425('0x42')]({},_0x37b63c,_0x185d7e[_0xd425('0x43')]);var _0x14f3be={'where':_0x37b63c[_0xd425('0x3f')]};return db['JscriptyAnswerReport'][_0xd425('0x24')](_0x14f3be)[_0xd425('0x2a')](function(_0x1d82ec){_0x1cac61['count']=_0x1d82ec;if(_0x185d7e[_0xd425('0x36')][_0xd425('0x44')]){_0x37b63c[_0xd425('0x45')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0xd425('0x46')](_0x37b63c);})[_0xd425('0x2a')](function(_0x1c5ba6){_0x1cac61[_0xd425('0x47')]=_0x1c5ba6;return _0x1cac61;})['then'](respondWithFilteredResult(_0x2fd17a,_0x37b63c))[_0xd425('0x48')](handleError(_0x2fd17a,null));};exports[_0xd425('0x49')]=function(_0x2b1149,_0x41b25e){var _0x3f24fb={'raw':!![],'where':{'id':_0x2b1149[_0xd425('0x4a')]['id']}},_0x2f6bf7={};_0x2f6bf7['model']=_[_0xd425('0x4b')](db[_0xd425('0x30')]['rawAttributes']);_0x2f6bf7[_0xd425('0x36')]=_['keys'](_0x2b1149['query']);_0x2f6bf7[_0xd425('0x37')]=_['intersection'](_0x2f6bf7[_0xd425('0x35')],_0x2f6bf7['query']);_0x3f24fb[_0xd425('0x39')]=_[_0xd425('0x38')](_0x2f6bf7[_0xd425('0x35')],qs[_0xd425('0x4c')](_0x2b1149[_0xd425('0x36')]['fields']));_0x3f24fb[_0xd425('0x39')]=_0x3f24fb['attributes'][_0xd425('0x3a')]?_0x3f24fb['attributes']:_0x2f6bf7[_0xd425('0x35')];if(_0x2b1149[_0xd425('0x36')][_0xd425('0x44')]){_0x3f24fb[_0xd425('0x45')]=[{'all':!![]}];}_0x3f24fb=_[_0xd425('0x42')]({},_0x3f24fb,_0x2b1149['options']);return db[_0xd425('0x30')][_0xd425('0x4d')](_0x3f24fb)[_0xd425('0x2a')](handleEntityNotFound(_0x41b25e,null))[_0xd425('0x2a')](respondWithResult(_0x41b25e,null))[_0xd425('0x48')](handleError(_0x41b25e,null));};exports['create']=function(_0x440dc5,_0x177704){return db[_0xd425('0x30')][_0xd425('0x4e')](_0x440dc5[_0xd425('0x4f')],{})[_0xd425('0x2a')](respondWithResult(_0x177704,0xc9))['catch'](handleError(_0x177704,null));};exports[_0xd425('0x29')]=function(_0x128cb3,_0x5bfac6){if(_0x128cb3[_0xd425('0x4f')]['id']){delete _0x128cb3[_0xd425('0x4f')]['id'];}return db[_0xd425('0x30')][_0xd425('0x4d')]({'where':{'id':_0x128cb3['params']['id']}})[_0xd425('0x2a')](handleEntityNotFound(_0x5bfac6,null))[_0xd425('0x2a')](saveUpdates(_0x128cb3[_0xd425('0x4f')],null))[_0xd425('0x2a')](respondWithResult(_0x5bfac6,null))[_0xd425('0x48')](handleError(_0x5bfac6,null));};exports['destroy']=function(_0x4be6fa,_0x381bdb){return db['JscriptyAnswerReport'][_0xd425('0x4d')]({'where':{'id':_0x4be6fa[_0xd425('0x4a')]['id']}})['then'](handleEntityNotFound(_0x381bdb,null))[_0xd425('0x2a')](removeEntity(_0x381bdb,null))['catch'](handleError(_0x381bdb,null));};exports['describe']=function(_0x39f588,_0x111905){return db[_0xd425('0x30')][_0xd425('0x50')]()[_0xd425('0x2a')](respondWithResult(_0x111905,null))[_0xd425('0x48')](handleError(_0x111905,null));};
\ No newline at end of file
+var _0x0f4d=['query','keys','filters','intersection','fields','attributes','length','order','sort','where','pick','merge','type','options','include','findAll','rows','catch','rawAttributes','find','create','body','params','describe','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','stack','name','send','index','map','JscriptyAnswerReport','model'];(function(_0x191db0,_0x5bc30a){var _0xebb0fc=function(_0x529c79){while(--_0x529c79){_0x191db0['push'](_0x191db0['shift']());}};_0xebb0fc(++_0x5bc30a);}(_0x0f4d,0x12c));var _0xd0f4=function(_0xae2847,_0x52c339){_0xae2847=_0xae2847-0x0;var _0x41e593=_0x0f4d[_0xae2847];return _0x41e593;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xd0f4('0x0'));var rp=require('request-promise');var moment=require(_0xd0f4('0x1'));var BPromise=require(_0xd0f4('0x2'));var Mustache=require(_0xd0f4('0x3'));var util=require(_0xd0f4('0x4'));var path=require(_0xd0f4('0x5'));var sox=require(_0xd0f4('0x6'));var csv=require(_0xd0f4('0x7'));var ejs=require(_0xd0f4('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd0f4('0x9'));var squel=require(_0xd0f4('0xa'));var crypto=require('crypto');var jsforce=require(_0xd0f4('0xb'));var deskjs=require(_0xd0f4('0xc'));var toCsv=require('to-csv');var querystring=require(_0xd0f4('0xd'));var Papa=require(_0xd0f4('0xe'));var Redis=require('ioredis');var authService=require(_0xd0f4('0xf'));var qs=require(_0xd0f4('0x10'));var as=require(_0xd0f4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd0f4('0x12'));var utils=require(_0xd0f4('0x13'));var config=require(_0xd0f4('0x14'));var licenseUtil=require(_0xd0f4('0x15'));var db=require(_0xd0f4('0x16'))['db'];function respondWithStatusCode(_0x64232c,_0x134492){_0x134492=_0x134492||0xcc;return function(_0x5679a7){if(_0x5679a7){return _0x64232c[_0xd0f4('0x17')](_0x134492);}return _0x64232c[_0xd0f4('0x18')](_0x134492)['end']();};}function respondWithResult(_0x104d48,_0x536d71){_0x536d71=_0x536d71||0xc8;return function(_0x828792){if(_0x828792){return _0x104d48['status'](_0x536d71)[_0xd0f4('0x19')](_0x828792);}};}function respondWithFilteredResult(_0x4d5aef,_0x4afe4d){return function(_0x54b806){if(_0x54b806){var _0x45b32e=typeof _0x4afe4d[_0xd0f4('0x1a')]===_0xd0f4('0x1b')&&typeof _0x4afe4d[_0xd0f4('0x1c')]===_0xd0f4('0x1b');var _0x10acbe=_0x54b806[_0xd0f4('0x1d')];var _0x35be48=_0x45b32e?0x0:_0x4afe4d[_0xd0f4('0x1a')];var _0x5de07b=_0x45b32e?_0x54b806[_0xd0f4('0x1d')]:_0x4afe4d[_0xd0f4('0x1a')]+_0x4afe4d[_0xd0f4('0x1c')];var _0xa0662;if(_0x5de07b>=_0x10acbe){_0x5de07b=_0x10acbe;_0xa0662=0xc8;}else{_0xa0662=0xce;}_0x4d5aef['status'](_0xa0662);return _0x4d5aef[_0xd0f4('0x1e')](_0xd0f4('0x1f'),_0x35be48+'-'+_0x5de07b+'/'+_0x10acbe)[_0xd0f4('0x19')](_0x54b806);}return null;};}function patchUpdates(_0x208a6f){return function(_0x4e1689){try{jsonpatch[_0xd0f4('0x20')](_0x4e1689,_0x208a6f,!![]);}catch(_0xda1d14){return BPromise[_0xd0f4('0x21')](_0xda1d14);}return _0x4e1689[_0xd0f4('0x22')]();};}function saveUpdates(_0x14ba70,_0x2a1df0){return function(_0x25ee43){if(_0x25ee43){return _0x25ee43['update'](_0x14ba70)[_0xd0f4('0x23')](function(_0x327696){return _0x327696;});}return null;};}function removeEntity(_0x20e0c8,_0x299904){return function(_0x4d49c0){if(_0x4d49c0){return _0x4d49c0[_0xd0f4('0x24')]()['then'](function(){_0x20e0c8[_0xd0f4('0x18')](0xcc)[_0xd0f4('0x25')]();});}};}function handleEntityNotFound(_0x1cf493,_0x567eb4){return function(_0x42d944){if(!_0x42d944){_0x1cf493[_0xd0f4('0x17')](0x194);}return _0x42d944;};}function handleError(_0x459931,_0x1ed6e2){_0x1ed6e2=_0x1ed6e2||0x1f4;return function(_0x366af6){logger['error'](_0x366af6[_0xd0f4('0x26')]);if(_0x366af6[_0xd0f4('0x27')]){delete _0x366af6[_0xd0f4('0x27')];}_0x459931[_0xd0f4('0x18')](_0x1ed6e2)[_0xd0f4('0x28')](_0x366af6);};}exports[_0xd0f4('0x29')]=function(_0x1d3246,_0x33eb58){var _0x3cb97c={},_0x4cff90={},_0x42a44f={'count':0x0,'rows':[]};var _0x2df1ed=_[_0xd0f4('0x2a')](db[_0xd0f4('0x2b')]['rawAttributes'],function(_0x4058d7){return{'name':_0x4058d7['fieldName'],'type':_0x4058d7['type']['key']};});_0x4cff90[_0xd0f4('0x2c')]=_[_0xd0f4('0x2a')](_0x2df1ed,_0xd0f4('0x27'));_0x4cff90[_0xd0f4('0x2d')]=_[_0xd0f4('0x2e')](_0x1d3246[_0xd0f4('0x2d')]);_0x4cff90[_0xd0f4('0x2f')]=_[_0xd0f4('0x30')](_0x4cff90['model'],_0x4cff90[_0xd0f4('0x2d')]);_0x3cb97c['attributes']=_[_0xd0f4('0x30')](_0x4cff90[_0xd0f4('0x2c')],qs['fields'](_0x1d3246['query'][_0xd0f4('0x31')]));_0x3cb97c['attributes']=_0x3cb97c[_0xd0f4('0x32')][_0xd0f4('0x33')]?_0x3cb97c['attributes']:_0x4cff90[_0xd0f4('0x2c')];if(!_0x1d3246[_0xd0f4('0x2d')]['hasOwnProperty']('nolimit')){_0x3cb97c[_0xd0f4('0x1c')]=qs[_0xd0f4('0x1c')](_0x1d3246['query'][_0xd0f4('0x1c')]);_0x3cb97c['offset']=qs[_0xd0f4('0x1a')](_0x1d3246[_0xd0f4('0x2d')]['offset']);}_0x3cb97c[_0xd0f4('0x34')]=qs[_0xd0f4('0x35')](_0x1d3246[_0xd0f4('0x2d')][_0xd0f4('0x35')]);_0x3cb97c[_0xd0f4('0x36')]=qs['filters'](_[_0xd0f4('0x37')](_0x1d3246[_0xd0f4('0x2d')],_0x4cff90[_0xd0f4('0x2f')]),_0x2df1ed);if(_0x1d3246[_0xd0f4('0x2d')]['filter']){_0x3cb97c[_0xd0f4('0x36')]=_[_0xd0f4('0x38')](_0x3cb97c[_0xd0f4('0x36')],{'$or':_[_0xd0f4('0x2a')](_0x2df1ed,function(_0xd109a4){if(_0xd109a4[_0xd0f4('0x39')]!=='VIRTUAL'){var _0x269629={};_0x269629[_0xd109a4[_0xd0f4('0x27')]]={'$like':'%'+_0x1d3246[_0xd0f4('0x2d')]['filter']+'%'};return _0x269629;}})});}_0x3cb97c=_[_0xd0f4('0x38')]({},_0x3cb97c,_0x1d3246[_0xd0f4('0x3a')]);var _0x4bebe8={'where':_0x3cb97c[_0xd0f4('0x36')]};return db[_0xd0f4('0x2b')]['count'](_0x4bebe8)['then'](function(_0x3bb4ab){_0x42a44f[_0xd0f4('0x1d')]=_0x3bb4ab;if(_0x1d3246[_0xd0f4('0x2d')]['includeAll']){_0x3cb97c[_0xd0f4('0x3b')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0xd0f4('0x3c')](_0x3cb97c);})['then'](function(_0x29439d){_0x42a44f[_0xd0f4('0x3d')]=_0x29439d;return _0x42a44f;})[_0xd0f4('0x23')](respondWithFilteredResult(_0x33eb58,_0x3cb97c))[_0xd0f4('0x3e')](handleError(_0x33eb58,null));};exports['show']=function(_0x10509e,_0x198e47){var _0xb02892={'raw':!![],'where':{'id':_0x10509e['params']['id']}},_0x4c8b9a={};_0x4c8b9a[_0xd0f4('0x2c')]=_[_0xd0f4('0x2e')](db[_0xd0f4('0x2b')][_0xd0f4('0x3f')]);_0x4c8b9a[_0xd0f4('0x2d')]=_[_0xd0f4('0x2e')](_0x10509e[_0xd0f4('0x2d')]);_0x4c8b9a[_0xd0f4('0x2f')]=_[_0xd0f4('0x30')](_0x4c8b9a[_0xd0f4('0x2c')],_0x4c8b9a[_0xd0f4('0x2d')]);_0xb02892[_0xd0f4('0x32')]=_['intersection'](_0x4c8b9a[_0xd0f4('0x2c')],qs[_0xd0f4('0x31')](_0x10509e['query'][_0xd0f4('0x31')]));_0xb02892[_0xd0f4('0x32')]=_0xb02892[_0xd0f4('0x32')][_0xd0f4('0x33')]?_0xb02892[_0xd0f4('0x32')]:_0x4c8b9a[_0xd0f4('0x2c')];if(_0x10509e[_0xd0f4('0x2d')]['includeAll']){_0xb02892[_0xd0f4('0x3b')]=[{'all':!![]}];}_0xb02892=_[_0xd0f4('0x38')]({},_0xb02892,_0x10509e[_0xd0f4('0x3a')]);return db['JscriptyAnswerReport'][_0xd0f4('0x40')](_0xb02892)[_0xd0f4('0x23')](handleEntityNotFound(_0x198e47,null))[_0xd0f4('0x23')](respondWithResult(_0x198e47,null))[_0xd0f4('0x3e')](handleError(_0x198e47,null));};exports[_0xd0f4('0x41')]=function(_0x563759,_0x54bb8d){return db['JscriptyAnswerReport'][_0xd0f4('0x41')](_0x563759[_0xd0f4('0x42')],{})[_0xd0f4('0x23')](respondWithResult(_0x54bb8d,0xc9))[_0xd0f4('0x3e')](handleError(_0x54bb8d,null));};exports['update']=function(_0x31db89,_0x1b1baa){if(_0x31db89['body']['id']){delete _0x31db89[_0xd0f4('0x42')]['id'];}return db[_0xd0f4('0x2b')][_0xd0f4('0x40')]({'where':{'id':_0x31db89[_0xd0f4('0x43')]['id']}})[_0xd0f4('0x23')](handleEntityNotFound(_0x1b1baa,null))[_0xd0f4('0x23')](saveUpdates(_0x31db89[_0xd0f4('0x42')],null))[_0xd0f4('0x23')](respondWithResult(_0x1b1baa,null))[_0xd0f4('0x3e')](handleError(_0x1b1baa,null));};exports[_0xd0f4('0x24')]=function(_0x431df3,_0x120c17){return db[_0xd0f4('0x2b')]['find']({'where':{'id':_0x431df3[_0xd0f4('0x43')]['id']}})[_0xd0f4('0x23')](handleEntityNotFound(_0x120c17,null))[_0xd0f4('0x23')](removeEntity(_0x120c17,null))['catch'](handleError(_0x120c17,null));};exports[_0xd0f4('0x44')]=function(_0x3f8bcc,_0x1d8543){return db['JscriptyAnswerReport'][_0xd0f4('0x44')]()['then'](respondWithResult(_0x1d8543,null))[_0xd0f4('0x3e')](handleError(_0x1d8543,null));};
\ No newline at end of file
index 1a96abd..3939cbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b6c=['./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment'];(function(_0x10a5f7,_0x4bdc94){var _0x4b9f99=function(_0x50a738){while(--_0x50a738){_0x10a5f7['push'](_0x10a5f7['shift']());}};_0x4b9f99(++_0x4bdc94);}(_0x3b6c,0xe8));var _0xc3b6=function(_0x1144a7,_0x439dd1){_0x1144a7=_0x1144a7-0x0;var _0x401d24=_0x3b6c[_0x1144a7];return _0x401d24;};'use strict';var _=require(_0xc3b6('0x0'));var util=require(_0xc3b6('0x1'));var logger=require(_0xc3b6('0x2'))(_0xc3b6('0x3'));var moment=require(_0xc3b6('0x4'));var BPromise=require(_0xc3b6('0x5'));var rp=require(_0xc3b6('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xc3b6('0x7'));var attributes=require(_0xc3b6('0x8'));module[_0xc3b6('0x9')]=function(_0x32196f,_0x23cc9e){return _0x32196f[_0xc3b6('0xa')](_0xc3b6('0xb'),attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xac96=['report_jscripty_answers','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports','define'];(function(_0x3aa5e8,_0x33f9cb){var _0x415abc=function(_0x63c8c7){while(--_0x63c8c7){_0x3aa5e8['push'](_0x3aa5e8['shift']());}};_0x415abc(++_0x33f9cb);}(_0xac96,0x1ef));var _0x6ac9=function(_0x56c34d,_0x3431ef){_0x56c34d=_0x56c34d-0x0;var _0x1fad03=_0xac96[_0x56c34d];return _0x1fad03;};'use strict';var _=require(_0x6ac9('0x0'));var util=require(_0x6ac9('0x1'));var logger=require(_0x6ac9('0x2'))(_0x6ac9('0x3'));var moment=require('moment');var BPromise=require(_0x6ac9('0x4'));var rp=require(_0x6ac9('0x5'));var fs=require('fs');var path=require(_0x6ac9('0x6'));var rimraf=require(_0x6ac9('0x7'));var config=require(_0x6ac9('0x8'));var attributes=require(_0x6ac9('0x9'));module[_0x6ac9('0xa')]=function(_0x12e364,_0x594d93){return _0x12e364[_0x6ac9('0xb')]('JscriptyAnswerReport',attributes,{'tableName':_0x6ac9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 57b4baa..a9906ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x644a=['../../config/environment','jayson/promise','client','http','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x53afa6,_0x59e786){var _0x51f86a=function(_0x368385){while(--_0x368385){_0x53afa6['push'](_0x53afa6['shift']());}};_0x51f86a(++_0x59e786);}(_0x644a,0xae));var _0xa644=function(_0x3572b3,_0x593ffe){_0x3572b3=_0x3572b3-0x0;var _0x55e4aa=_0x644a[_0x3572b3];return _0x55e4aa;};'use strict';var _=require('lodash');var util=require(_0xa644('0x0'));var moment=require(_0xa644('0x1'));var BPromise=require(_0xa644('0x2'));var rs=require(_0xa644('0x3'));var fs=require('fs');var Redis=require(_0xa644('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa644('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xa644('0x6'));var jayson=require(_0xa644('0x7'));var client=jayson[_0xa644('0x8')][_0xa644('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4681d7,_0x4ed7c8,_0x2cd3da){return new BPromise(function(_0x4e7ee3,_0x5a6b87){return client['request'](_0x4681d7,_0x2cd3da)[_0xa644('0xa')](function(_0x3e82a7){logger[_0xa644('0xb')](_0xa644('0xc'),_0x4ed7c8,_0xa644('0xd'));logger[_0xa644('0xe')]('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x4ed7c8,'request\x20sent',JSON[_0xa644('0xf')](_0x3e82a7));if(_0x3e82a7['error']){if(_0x3e82a7[_0xa644('0x10')]['code']===0x1f4){logger[_0xa644('0x10')](_0xa644('0xc'),_0x4ed7c8,_0x3e82a7['error'][_0xa644('0x11')]);return _0x5a6b87(_0x3e82a7[_0xa644('0x10')]['message']);}logger[_0xa644('0x10')](_0xa644('0xc'),_0x4ed7c8,_0x3e82a7['error'][_0xa644('0x11')]);return _0x4e7ee3(_0x3e82a7[_0xa644('0x10')][_0xa644('0x11')]);}else{logger['info'](_0xa644('0xc'),_0x4ed7c8,'request\x20sent');_0x4e7ee3(_0x3e82a7[_0xa644('0x12')][_0xa644('0x11')]);}})[_0xa644('0x13')](function(_0x3000b0){logger[_0xa644('0x10')](_0xa644('0xc'),_0x4ed7c8,_0x3000b0);_0x5a6b87(_0x3000b0);});});}
\ No newline at end of file
+var _0x4de0=['message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4170bd,_0x1f85e6){var _0x408a1d=function(_0x77e00d){while(--_0x77e00d){_0x4170bd['push'](_0x4170bd['shift']());}};_0x408a1d(++_0x1f85e6);}(_0x4de0,0x75));var _0x04de=function(_0x11de6f,_0x4b541d){_0x11de6f=_0x11de6f-0x0;var _0x4ed56f=_0x4de0[_0x11de6f];return _0x4ed56f;};'use strict';var _=require(_0x04de('0x0'));var util=require('util');var moment=require(_0x04de('0x1'));var BPromise=require(_0x04de('0x2'));var rs=require(_0x04de('0x3'));var fs=require('fs');var Redis=require(_0x04de('0x4'));var db=require(_0x04de('0x5'))['db'];var utils=require(_0x04de('0x6'));var logger=require(_0x04de('0x7'))(_0x04de('0x8'));var config=require('../../config/environment');var jayson=require(_0x04de('0x9'));var client=jayson[_0x04de('0xa')][_0x04de('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x352d99,_0x15691a,_0x375c77){return new BPromise(function(_0x1628e9,_0x5b95d9){return client[_0x04de('0xc')](_0x352d99,_0x375c77)[_0x04de('0xd')](function(_0x2a829d){logger[_0x04de('0xe')](_0x04de('0xf'),_0x15691a,_0x04de('0x10'));logger[_0x04de('0x11')](_0x04de('0x12'),_0x15691a,_0x04de('0x10'),JSON[_0x04de('0x13')](_0x2a829d));if(_0x2a829d['error']){if(_0x2a829d['error']['code']===0x1f4){logger[_0x04de('0x14')](_0x04de('0xf'),_0x15691a,_0x2a829d[_0x04de('0x14')][_0x04de('0x15')]);return _0x5b95d9(_0x2a829d[_0x04de('0x14')]['message']);}logger[_0x04de('0x14')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x15691a,_0x2a829d[_0x04de('0x14')][_0x04de('0x15')]);return _0x1628e9(_0x2a829d[_0x04de('0x14')][_0x04de('0x15')]);}else{logger[_0x04de('0xe')](_0x04de('0xf'),_0x15691a,_0x04de('0x10'));_0x1628e9(_0x2a829d[_0x04de('0x16')][_0x04de('0x15')]);}})['catch'](function(_0x507a62){logger[_0x04de('0x14')](_0x04de('0xf'),_0x15691a,_0x507a62);_0x5b95d9(_0x507a62);});});}
\ No newline at end of file
index 57cd045..8c6dee0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7bd=['multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyProject.controller','get','isAuthenticated','/:id','show','/:id/sessions','getSessions','/:id/answers','/:id/summary','30s','post','create','/:id/clone','put','update','delete','destroy','exports'];(function(_0x2e914,_0x1c7566){var _0x936e45=function(_0x1b22e4){while(--_0x1b22e4){_0x2e914['push'](_0x2e914['shift']());}};_0x936e45(++_0x1c7566);}(_0xb7bd,0x9c));var _0xdb7b=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xb7bd[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0xdb7b('0x0'));var util=require(_0xdb7b('0x1'));var path=require(_0xdb7b('0x2'));var timeout=require('connect-timeout');var express=require(_0xdb7b('0x3'));var router=express[_0xdb7b('0x4')]();var fs_extra=require(_0xdb7b('0x5'));var auth=require(_0xdb7b('0x6'));var interaction=require(_0xdb7b('0x7'));var config=require('../../config/environment');var controller=require(_0xdb7b('0x8'));router[_0xdb7b('0x9')]('/',auth[_0xdb7b('0xa')](),controller['index']);router[_0xdb7b('0x9')](_0xdb7b('0xb'),auth[_0xdb7b('0xa')](),controller[_0xdb7b('0xc')]);router[_0xdb7b('0x9')](_0xdb7b('0xd'),auth['isAuthenticated'](),controller[_0xdb7b('0xe')]);router[_0xdb7b('0x9')](_0xdb7b('0xf'),auth[_0xdb7b('0xa')](),controller['getAnswers']);router['get'](_0xdb7b('0x10'),auth[_0xdb7b('0xa')](),timeout(_0xdb7b('0x11')),controller['getSummary']);router[_0xdb7b('0x12')]('/',auth[_0xdb7b('0xa')](),controller[_0xdb7b('0x13')]);router[_0xdb7b('0x12')](_0xdb7b('0x14'),auth[_0xdb7b('0xa')](),controller['clone']);router[_0xdb7b('0x15')]('/:id',auth[_0xdb7b('0xa')](),controller[_0xdb7b('0x16')]);router[_0xdb7b('0x17')](_0xdb7b('0xb'),auth[_0xdb7b('0xa')](),controller[_0xdb7b('0x18')]);module[_0xdb7b('0x19')]=router;
\ No newline at end of file
+var _0x2ac7=['clone','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','get','isAuthenticated','index','/:id','show','/:id/sessions','getSessions','getAnswers','/:id/summary','post','/:id/clone'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2ac7,0x9b));var _0x72ac=function(_0x5a58ba,_0x7cecd7){_0x5a58ba=_0x5a58ba-0x0;var _0x58dc46=_0x2ac7[_0x5a58ba];return _0x58dc46;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x72ac('0x0'));var timeout=require(_0x72ac('0x1'));var express=require(_0x72ac('0x2'));var router=express[_0x72ac('0x3')]();var fs_extra=require(_0x72ac('0x4'));var auth=require(_0x72ac('0x5'));var interaction=require(_0x72ac('0x6'));var config=require(_0x72ac('0x7'));var controller=require(_0x72ac('0x8'));router[_0x72ac('0x9')]('/',auth[_0x72ac('0xa')](),controller[_0x72ac('0xb')]);router[_0x72ac('0x9')](_0x72ac('0xc'),auth[_0x72ac('0xa')](),controller[_0x72ac('0xd')]);router[_0x72ac('0x9')](_0x72ac('0xe'),auth[_0x72ac('0xa')](),controller[_0x72ac('0xf')]);router[_0x72ac('0x9')]('/:id/answers',auth['isAuthenticated'](),controller[_0x72ac('0x10')]);router[_0x72ac('0x9')](_0x72ac('0x11'),auth['isAuthenticated'](),timeout('30s'),controller['getSummary']);router[_0x72ac('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0x72ac('0x12')](_0x72ac('0x13'),auth[_0x72ac('0xa')](),controller[_0x72ac('0x14')]);router['put'](_0x72ac('0xc'),auth['isAuthenticated'](),controller[_0x72ac('0x15')]);router[_0x72ac('0x16')](_0x72ac('0xc'),auth[_0x72ac('0xa')](),controller[_0x72ac('0x17')]);module[_0x72ac('0x18')]=router;
\ No newline at end of file
index 336ef56..37a1529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cb6=['setDataValue','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','sequelize','lodash','util','exports','name','STRING','TEXT','isObjectLike','isString'];(function(_0x4dd30d,_0x52cf9d){var _0x294701=function(_0x179d15){while(--_0x179d15){_0x4dd30d['push'](_0x4dd30d['shift']());}};_0x294701(++_0x52cf9d);}(_0x3cb6,0x6f));var _0x63cb=function(_0x483e0b,_0x344244){_0x483e0b=_0x483e0b-0x0;var _0x157365=_0x3cb6[_0x483e0b];return _0x157365;};'use strict';var Sequelize=require(_0x63cb('0x0'));var _=require(_0x63cb('0x1'));var util=require(_0x63cb('0x2'));module[_0x63cb('0x3')]={'name':{'type':Sequelize['STRING'],'unique':_0x63cb('0x4')},'description':{'type':Sequelize[_0x63cb('0x5')]},'formData':{'type':Sequelize[_0x63cb('0x6')]('long'),'set':function(_0xdc1f00){if(_[_0x63cb('0x7')](_0xdc1f00)){this['setDataValue']('formData',JSON['stringify'](_0xdc1f00));}else if(_[_0x63cb('0x8')](_0xdc1f00)){this[_0x63cb('0x9')]('formData',_0xdc1f00);}else{this[_0x63cb('0x9')]('formData',util[_0x63cb('0xa')](_0x63cb('0xb'),this[_0x63cb('0xc')]('name')||'',this[_0x63cb('0xc')](_0x63cb('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x63cb('0xe')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x63cb('0xe')],'defaultValue':![]}};
\ No newline at end of file
+var _0x3d0e=['description','BOOLEAN','sequelize','lodash','util','exports','STRING','name','TEXT','setDataValue','stringify','isString','formData','format','getDataValue'];(function(_0x4ecc46,_0x20221e){var _0x3c81df=function(_0x250e6c){while(--_0x250e6c){_0x4ecc46['push'](_0x4ecc46['shift']());}};_0x3c81df(++_0x20221e);}(_0x3d0e,0x15b));var _0xe3d0=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0x3d0e[_0x2a6809];return _0x11c371;};'use strict';var Sequelize=require(_0xe3d0('0x0'));var _=require(_0xe3d0('0x1'));var util=require(_0xe3d0('0x2'));module[_0xe3d0('0x3')]={'name':{'type':Sequelize[_0xe3d0('0x4')],'unique':_0xe3d0('0x5')},'description':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0xe3d0('0x6')]('long'),'set':function(_0x3239ec){if(_['isObjectLike'](_0x3239ec)){this[_0xe3d0('0x7')]('formData',JSON[_0xe3d0('0x8')](_0x3239ec));}else if(_[_0xe3d0('0x9')](_0x3239ec)){this['setDataValue'](_0xe3d0('0xa'),_0x3239ec);}else{this[_0xe3d0('0x7')](_0xe3d0('0xa'),util[_0xe3d0('0xb')]('{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}',this[_0xe3d0('0xc')](_0xe3d0('0x5'))||'',this[_0xe3d0('0xc')](_0xe3d0('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xe3d0('0xe')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xe3d0('0xe')],'defaultValue':![]}};
\ No newline at end of file
index 633b341..0a3222c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdac7=['findAll','rows','catch','show','params','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','createdAt','updatedAt','omit','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getSessions','findOne','JscriptySessionReport','ProjectId','JscriptyAnswerReport','hasOwnProperty','number','fromCharCode','toString','indexOf','getSummary','starttime','parse','JscriptyQuestionReport','question','format','YYYY-MM-DD\x20HH:mm:ss','questionId','push','isEmpty','now','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','download','eml-format','rimraf','moment','bluebird','mustache','util','ejs','fs-extra','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','update','destroy','then','get','Projects','error','stack','name','index','map','rawAttributes','fieldName','type','key','query','keys','filters','attributes','intersection','model','fields','length','nolimit','order','sort','where','pick','merge','filter','options','JscriptyProject','include'];(function(_0x480f4a,_0x2ea3f8){var _0xdccb7d=function(_0x151258){while(--_0x151258){_0x480f4a['push'](_0x480f4a['shift']());}};_0xdccb7d(++_0x2ea3f8);}(_0xdac7,0x180));var _0x7dac=function(_0xce5f09,_0x3ca5b6){_0xce5f09=_0xce5f09-0x0;var _0x2e403a=_0xdac7[_0xce5f09];return _0x2e403a;};'use strict';var emlformat=require(_0x7dac('0x0'));var rimraf=require(_0x7dac('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7dac('0x2'));var BPromise=require(_0x7dac('0x3'));var Mustache=require(_0x7dac('0x4'));var util=require(_0x7dac('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x7dac('0x6'));var fs=require('fs');var fs_extra=require(_0x7dac('0x7'));var _=require('lodash');var squel=require(_0x7dac('0x8'));var crypto=require('crypto');var jsforce=require(_0x7dac('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x7dac('0xa'));var querystring=require(_0x7dac('0xb'));var Papa=require(_0x7dac('0xc'));var Redis=require(_0x7dac('0xd'));var authService=require(_0x7dac('0xe'));var qs=require(_0x7dac('0xf'));var as=require(_0x7dac('0x10'));var hardwareService=require(_0x7dac('0x11'));var logger=require(_0x7dac('0x12'))(_0x7dac('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x7dac('0x14'))['db'];function respondWithStatusCode(_0x5dd35a,_0x42fbe3){_0x42fbe3=_0x42fbe3||0xcc;return function(_0x4e5e65){if(_0x4e5e65){return _0x5dd35a[_0x7dac('0x15')](_0x42fbe3);}return _0x5dd35a[_0x7dac('0x16')](_0x42fbe3)[_0x7dac('0x17')]();};}function respondWithResult(_0x168ea6,_0x1efd1b){_0x1efd1b=_0x1efd1b||0xc8;return function(_0x2c5dae){if(_0x2c5dae){return _0x168ea6[_0x7dac('0x16')](_0x1efd1b)['json'](_0x2c5dae);}};}function respondWithFilteredResult(_0x17442e,_0x5171e4){return function(_0x507951){if(_0x507951){var _0x218a2a=typeof _0x5171e4[_0x7dac('0x18')]===_0x7dac('0x19')&&typeof _0x5171e4[_0x7dac('0x1a')]===_0x7dac('0x19');var _0x48f97c=_0x507951[_0x7dac('0x1b')];var _0x4c1f4f=_0x218a2a?0x0:_0x5171e4[_0x7dac('0x18')];var _0x4639e2=_0x218a2a?_0x507951[_0x7dac('0x1b')]:_0x5171e4[_0x7dac('0x18')]+_0x5171e4[_0x7dac('0x1a')];var _0x3b403f;if(_0x4639e2>=_0x48f97c){_0x4639e2=_0x48f97c;_0x3b403f=0xc8;}else{_0x3b403f=0xce;}_0x17442e[_0x7dac('0x16')](_0x3b403f);return _0x17442e[_0x7dac('0x1c')](_0x7dac('0x1d'),_0x4c1f4f+'-'+_0x4639e2+'/'+_0x48f97c)[_0x7dac('0x1e')](_0x507951);}return null;};}function patchUpdates(_0x18f993){return function(_0xb095bb){try{jsonpatch[_0x7dac('0x1f')](_0xb095bb,_0x18f993,!![]);}catch(_0x356d93){return BPromise['reject'](_0x356d93);}return _0xb095bb['save']();};}function saveUpdates(_0x12cd84,_0x4c9fda){return function(_0x137c18){if(_0x137c18){return _0x137c18[_0x7dac('0x20')](_0x12cd84)['then'](function(_0x41f1a2){return _0x41f1a2;});}return null;};}function removeEntity(_0x417172,_0x4f4664){return function(_0xbdabba){if(_0xbdabba){return _0xbdabba[_0x7dac('0x21')]()[_0x7dac('0x22')](function(){var _0x179881=_0xbdabba[_0x7dac('0x23')]({'plain':!![]});var _0x3c9967=_0x7dac('0x24');return db['UserProfileResource'][_0x7dac('0x21')]({'where':{'type':_0x3c9967,'resourceId':_0x179881['id']}})[_0x7dac('0x22')](function(){return _0xbdabba;});})[_0x7dac('0x22')](function(){_0x417172['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x456264,_0xaa5aae){return function(_0x7ac43c){if(!_0x7ac43c){_0x456264[_0x7dac('0x15')](0x194);}return _0x7ac43c;};}function handleError(_0xbad8a1,_0x3d47e9){_0x3d47e9=_0x3d47e9||0x1f4;return function(_0x3f76fd){logger[_0x7dac('0x25')](_0x3f76fd[_0x7dac('0x26')]);if(_0x3f76fd[_0x7dac('0x27')]){delete _0x3f76fd[_0x7dac('0x27')];}_0xbad8a1['status'](_0x3d47e9)['send'](_0x3f76fd);};}exports[_0x7dac('0x28')]=function(_0xa92c4b,_0x1647be){var _0x4e6680={},_0x4396f2={},_0x823620={'count':0x0,'rows':[]};var _0x3efddf=_[_0x7dac('0x29')](db['JscriptyProject'][_0x7dac('0x2a')],function(_0x50fdfa){return{'name':_0x50fdfa[_0x7dac('0x2b')],'type':_0x50fdfa[_0x7dac('0x2c')][_0x7dac('0x2d')]};});_0x4396f2['model']=_[_0x7dac('0x29')](_0x3efddf,_0x7dac('0x27'));_0x4396f2[_0x7dac('0x2e')]=_[_0x7dac('0x2f')](_0xa92c4b[_0x7dac('0x2e')]);_0x4396f2[_0x7dac('0x30')]=_['intersection'](_0x4396f2['model'],_0x4396f2['query']);_0x4e6680[_0x7dac('0x31')]=_[_0x7dac('0x32')](_0x4396f2[_0x7dac('0x33')],qs['fields'](_0xa92c4b[_0x7dac('0x2e')][_0x7dac('0x34')]));_0x4e6680[_0x7dac('0x31')]=_0x4e6680['attributes'][_0x7dac('0x35')]?_0x4e6680[_0x7dac('0x31')]:_0x4396f2[_0x7dac('0x33')];if(!_0xa92c4b[_0x7dac('0x2e')]['hasOwnProperty'](_0x7dac('0x36'))){_0x4e6680[_0x7dac('0x1a')]=qs[_0x7dac('0x1a')](_0xa92c4b[_0x7dac('0x2e')][_0x7dac('0x1a')]);_0x4e6680[_0x7dac('0x18')]=qs['offset'](_0xa92c4b[_0x7dac('0x2e')]['offset']);}_0x4e6680[_0x7dac('0x37')]=qs['sort'](_0xa92c4b[_0x7dac('0x2e')][_0x7dac('0x38')]);_0x4e6680[_0x7dac('0x39')]=qs[_0x7dac('0x30')](_[_0x7dac('0x3a')](_0xa92c4b['query'],_0x4396f2['filters']),_0x3efddf);if(_0xa92c4b[_0x7dac('0x2e')]['filter']){_0x4e6680[_0x7dac('0x39')]=_[_0x7dac('0x3b')](_0x4e6680[_0x7dac('0x39')],{'$or':_[_0x7dac('0x29')](_0x3efddf,function(_0x20bd55){if(_0x20bd55[_0x7dac('0x2c')]!=='VIRTUAL'){var _0x57baf2={};_0x57baf2[_0x20bd55[_0x7dac('0x27')]]={'$like':'%'+_0xa92c4b[_0x7dac('0x2e')][_0x7dac('0x3c')]+'%'};return _0x57baf2;}})});}_0x4e6680=_[_0x7dac('0x3b')]({},_0x4e6680,_0xa92c4b[_0x7dac('0x3d')]);var _0x186894={'where':_0x4e6680['where']};return db[_0x7dac('0x3e')][_0x7dac('0x1b')](_0x186894)[_0x7dac('0x22')](function(_0x20346f){_0x823620['count']=_0x20346f;if(_0xa92c4b[_0x7dac('0x2e')]['includeAll']){_0x4e6680[_0x7dac('0x3f')]=[{'all':!![]}];}return db[_0x7dac('0x3e')][_0x7dac('0x40')](_0x4e6680);})[_0x7dac('0x22')](function(_0x1ccf40){_0x823620[_0x7dac('0x41')]=_0x1ccf40;return _0x823620;})['then'](respondWithFilteredResult(_0x1647be,_0x4e6680))[_0x7dac('0x42')](handleError(_0x1647be,null));};exports[_0x7dac('0x43')]=function(_0x12e250,_0x10c30c){var _0x261d11={'raw':![],'where':{'id':_0x12e250[_0x7dac('0x44')]['id']}},_0x310654={};_0x310654[_0x7dac('0x33')]=_[_0x7dac('0x2f')](db[_0x7dac('0x3e')][_0x7dac('0x2a')]);_0x310654['query']=_['keys'](_0x12e250[_0x7dac('0x2e')]);_0x310654[_0x7dac('0x30')]=_['intersection'](_0x310654[_0x7dac('0x33')],_0x310654[_0x7dac('0x2e')]);_0x261d11[_0x7dac('0x31')]=_[_0x7dac('0x32')](_0x310654[_0x7dac('0x33')],qs['fields'](_0x12e250[_0x7dac('0x2e')][_0x7dac('0x34')]));_0x261d11['attributes']=_0x261d11[_0x7dac('0x31')][_0x7dac('0x35')]?_0x261d11['attributes']:_0x310654[_0x7dac('0x33')];if(_0x12e250[_0x7dac('0x2e')][_0x7dac('0x45')]){_0x261d11[_0x7dac('0x3f')]=[{'all':!![]}];}_0x261d11=_[_0x7dac('0x3b')]({},_0x261d11,_0x12e250[_0x7dac('0x3d')]);return db[_0x7dac('0x3e')][_0x7dac('0x46')](_0x261d11)[_0x7dac('0x22')](handleEntityNotFound(_0x10c30c,null))['then'](respondWithResult(_0x10c30c,null))[_0x7dac('0x42')](handleError(_0x10c30c,null));};exports[_0x7dac('0x47')]=function(_0x49804d,_0x8ae242){return db[_0x7dac('0x3e')][_0x7dac('0x47')](_0x49804d[_0x7dac('0x48')],{})[_0x7dac('0x22')](function(_0x14a97a){var _0x3efdc2=_0x49804d[_0x7dac('0x49')][_0x7dac('0x23')]({'plain':!![]});if(!_0x3efdc2)throw new Error(_0x7dac('0x4a'));if(_0x3efdc2[_0x7dac('0x4b')]===_0x7dac('0x49')){var _0x1da157=_0x14a97a[_0x7dac('0x23')]({'plain':!![]});var _0xc1e154='Projects';return db[_0x7dac('0x4c')]['find']({'where':{'name':_0xc1e154,'userProfileId':_0x3efdc2[_0x7dac('0x4d')]},'raw':!![]})[_0x7dac('0x22')](function(_0x4dcd63){if(_0x4dcd63&&_0x4dcd63[_0x7dac('0x4e')]===0x0){return db[_0x7dac('0x4f')][_0x7dac('0x47')]({'name':_0x1da157['name'],'resourceId':_0x1da157['id'],'type':_0x4dcd63[_0x7dac('0x27')],'sectionId':_0x4dcd63['id']},{})[_0x7dac('0x22')](function(){return _0x14a97a;});}else{return _0x14a97a;}})[_0x7dac('0x42')](function(_0x33909c){logger[_0x7dac('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x33909c);throw _0x33909c;});}return _0x14a97a;})[_0x7dac('0x22')](respondWithResult(_0x8ae242,0xc9))[_0x7dac('0x42')](handleError(_0x8ae242,null));};exports['clone']=function(_0x23671f,_0x16df9b){var _0x41a842={'where':{'id':_0x23671f[_0x7dac('0x44')]['id']}},_0x5cd59c={};_0x5cd59c[_0x7dac('0x33')]=_[_0x7dac('0x2f')](db[_0x7dac('0x3e')][_0x7dac('0x2a')]);_0x41a842[_0x7dac('0x31')]=_[_0x7dac('0x32')](_0x5cd59c['model'],qs['fields'](_0x23671f['query'][_0x7dac('0x34')]));_0x41a842[_0x7dac('0x31')]=_0x41a842['attributes'][_0x7dac('0x35')]?_0x41a842[_0x7dac('0x31')]:_0x5cd59c[_0x7dac('0x33')];if(_0x23671f[_0x7dac('0x2e')][_0x7dac('0x45')]){_0x41a842[_0x7dac('0x3f')]=[{'all':!![]}];}_0x41a842=_[_0x7dac('0x3b')]({},_0x41a842,_0x23671f[_0x7dac('0x3d')]);return db[_0x7dac('0x3e')][_0x7dac('0x46')](_0x41a842)[_0x7dac('0x22')](handleEntityNotFound(_0x16df9b,null))[_0x7dac('0x22')](function(_0x54b37d){if(_0x54b37d){var _0x3f85a9=_0x54b37d[_0x7dac('0x23')]({'plain':!![]});_0x3f85a9=qs['omit'](_0x3f85a9,['id',_0x7dac('0x50'),_0x7dac('0x51')]);_0x23671f[_0x7dac('0x48')]=_[_0x7dac('0x52')](_0x23671f['body'],['id',_0x7dac('0x50'),_0x7dac('0x51')]);return db[_0x7dac('0x3e')][_0x7dac('0x47')](_[_0x7dac('0x3b')](_0x3f85a9,_0x23671f['body']),{'include':_0x23671f[_0x7dac('0x2e')][_0x7dac('0x45')]?[{'all':!![]}]:undefined})[_0x7dac('0x22')](function(_0x5c4229){var _0x5bc558=_0x23671f[_0x7dac('0x49')][_0x7dac('0x23')]({'plain':!![]});if(!_0x5bc558)throw new Error(_0x7dac('0x4a'));if(_0x5bc558[_0x7dac('0x4b')]===_0x7dac('0x49')){var _0x49c004=_0x5c4229['get']({'plain':!![]});var _0x4b3d12=_0x7dac('0x24');return db[_0x7dac('0x4c')][_0x7dac('0x46')]({'where':{'name':_0x4b3d12,'userProfileId':_0x5bc558[_0x7dac('0x4d')]},'raw':!![]})[_0x7dac('0x22')](function(_0x4a7a49){if(_0x4a7a49&&_0x4a7a49['autoAssociation']===0x0){return db[_0x7dac('0x4f')]['create']({'name':_0x49c004['name'],'resourceId':_0x49c004['id'],'type':_0x4a7a49[_0x7dac('0x27')],'sectionId':_0x4a7a49['id']},{})[_0x7dac('0x22')](function(){return _0x5c4229;});}else{return _0x5c4229;}})[_0x7dac('0x42')](function(_0x1bc2eb){logger['error'](_0x7dac('0x53'),_0x1bc2eb);throw _0x1bc2eb;});}return _0x5c4229;});}})['then'](respondWithResult(_0x16df9b,0xc9))[_0x7dac('0x42')](handleError(_0x16df9b,null));};exports[_0x7dac('0x20')]=function(_0x3ed600,_0x3e281f){if(_0x3ed600[_0x7dac('0x48')]['id']){delete _0x3ed600[_0x7dac('0x48')]['id'];}return db['JscriptyProject']['find']({'where':{'id':_0x3ed600[_0x7dac('0x44')]['id']}})[_0x7dac('0x22')](handleEntityNotFound(_0x3e281f,null))[_0x7dac('0x22')](saveUpdates(_0x3ed600[_0x7dac('0x48')],null))[_0x7dac('0x22')](respondWithResult(_0x3e281f,null))[_0x7dac('0x42')](handleError(_0x3e281f,null));};exports[_0x7dac('0x21')]=function(_0x5dc5d6,_0x3ed1f8){return db[_0x7dac('0x3e')][_0x7dac('0x46')]({'where':{'id':_0x5dc5d6[_0x7dac('0x44')]['id']}})['then'](handleEntityNotFound(_0x3ed1f8,null))[_0x7dac('0x22')](removeEntity(_0x3ed1f8,null))[_0x7dac('0x42')](handleError(_0x3ed1f8,null));};exports[_0x7dac('0x54')]=function(_0x1d1c6e,_0x3830c3,_0x215972){var _0x4a02a8={'raw':!![],'where':{}};var _0xf25c={};var _0x498b07={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x7dac('0x55')]({'where':{'id':_0x1d1c6e['params']['id']}})[_0x7dac('0x22')](handleEntityNotFound(_0x3830c3,null))['then'](function(_0x561f07){if(_0x561f07){_0xf25c[_0x7dac('0x33')]=_[_0x7dac('0x2f')](db[_0x7dac('0x56')][_0x7dac('0x2a')]);_0xf25c[_0x7dac('0x2e')]=_['keys'](_0x1d1c6e[_0x7dac('0x2e')]);_0xf25c[_0x7dac('0x30')]=_[_0x7dac('0x32')](_0xf25c['model'],_0xf25c[_0x7dac('0x2e')]);_0x4a02a8[_0x7dac('0x31')]=_[_0x7dac('0x32')](_0xf25c[_0x7dac('0x33')],qs['fields'](_0x1d1c6e[_0x7dac('0x2e')][_0x7dac('0x34')]));_0x4a02a8[_0x7dac('0x31')]=_0x4a02a8[_0x7dac('0x31')][_0x7dac('0x35')]?_0x4a02a8[_0x7dac('0x31')]:_0xf25c[_0x7dac('0x33')];if(!_0x1d1c6e[_0x7dac('0x2e')]['hasOwnProperty'](_0x7dac('0x36'))){_0x4a02a8[_0x7dac('0x1a')]=qs[_0x7dac('0x1a')](_0x1d1c6e[_0x7dac('0x2e')][_0x7dac('0x1a')]);_0x4a02a8[_0x7dac('0x18')]=qs['offset'](_0x1d1c6e['query'][_0x7dac('0x18')]);}_0x4a02a8[_0x7dac('0x37')]=qs[_0x7dac('0x38')](_0x1d1c6e['query'][_0x7dac('0x38')]);_0x4a02a8['where']=qs['filters'](_[_0x7dac('0x3a')](_0x1d1c6e[_0x7dac('0x2e')],_0xf25c[_0x7dac('0x30')]));_0x4a02a8[_0x7dac('0x39')][_0x7dac('0x57')]=_0x561f07['id'];if(_0x1d1c6e[_0x7dac('0x2e')][_0x7dac('0x3c')]){_0x4a02a8['where']=_[_0x7dac('0x3b')](_0x4a02a8[_0x7dac('0x39')],{'$or':_[_0x7dac('0x29')](_0x4a02a8['attributes'],function(_0x28a772){var _0x5376fd={};_0x5376fd[_0x28a772]={'$like':'%'+_0x1d1c6e['query'][_0x7dac('0x3c')]+'%'};return _0x5376fd;})});}_0x4a02a8=_[_0x7dac('0x3b')]({},_0x4a02a8,_0x1d1c6e[_0x7dac('0x3d')]);return db[_0x7dac('0x56')][_0x7dac('0x1b')]({'where':_0x4a02a8[_0x7dac('0x39')]})['then'](function(_0x3f9297){_0x498b07[_0x7dac('0x1b')]=_0x3f9297;if(_0x1d1c6e[_0x7dac('0x2e')][_0x7dac('0x45')]){_0x4a02a8[_0x7dac('0x3f')]=[{'all':!![]}];}return db[_0x7dac('0x56')][_0x7dac('0x40')](_0x4a02a8);})[_0x7dac('0x22')](function(_0x2227ac){_0x498b07[_0x7dac('0x41')]=_0x2227ac;return _0x498b07;});}})[_0x7dac('0x22')](respondWithFilteredResult(_0x3830c3,_0x4a02a8))[_0x7dac('0x42')](handleError(_0x3830c3,null));};exports['getAnswers']=function(_0x1d3f22,_0xfe57b7,_0xd0cd73){var _0x2243ce={'raw':!![],'where':{}};var _0x191df7={};var _0x2df4ad={'count':0x0,'rows':[]};return db[_0x7dac('0x3e')][_0x7dac('0x55')]({'where':{'id':_0x1d3f22['params']['id']}})[_0x7dac('0x22')](handleEntityNotFound(_0xfe57b7,null))['then'](function(_0x5b3c64){if(_0x5b3c64){_0x191df7['model']=_[_0x7dac('0x2f')](db[_0x7dac('0x58')][_0x7dac('0x2a')]);_0x191df7[_0x7dac('0x2e')]=_[_0x7dac('0x2f')](_0x1d3f22[_0x7dac('0x2e')]);_0x191df7[_0x7dac('0x30')]=_[_0x7dac('0x32')](_0x191df7['model'],_0x191df7[_0x7dac('0x2e')]);_0x2243ce[_0x7dac('0x31')]=_['intersection'](_0x191df7[_0x7dac('0x33')],qs[_0x7dac('0x34')](_0x1d3f22[_0x7dac('0x2e')][_0x7dac('0x34')]));_0x2243ce[_0x7dac('0x31')]=_0x2243ce[_0x7dac('0x31')][_0x7dac('0x35')]?_0x2243ce['attributes']:_0x191df7[_0x7dac('0x33')];if(!_0x1d3f22[_0x7dac('0x2e')][_0x7dac('0x59')](_0x7dac('0x36'))){_0x2243ce['limit']=qs[_0x7dac('0x1a')](_0x1d3f22[_0x7dac('0x2e')]['limit']);_0x2243ce[_0x7dac('0x18')]=qs['offset'](_0x1d3f22[_0x7dac('0x2e')][_0x7dac('0x18')]);}_0x2243ce[_0x7dac('0x37')]=qs['sort'](_0x1d3f22[_0x7dac('0x2e')][_0x7dac('0x38')]);_0x2243ce[_0x7dac('0x39')]=qs['filters'](_['pick'](_0x1d3f22[_0x7dac('0x2e')],_0x191df7[_0x7dac('0x30')]));_0x2243ce[_0x7dac('0x39')]['ProjectId']=_0x5b3c64['id'];if(_0x1d3f22[_0x7dac('0x2e')]['filter']){_0x2243ce[_0x7dac('0x39')]=_[_0x7dac('0x3b')](_0x2243ce[_0x7dac('0x39')],{'$or':_[_0x7dac('0x29')](_0x2243ce[_0x7dac('0x31')],function(_0x44f40a){var _0x15fef4={};_0x15fef4[_0x44f40a]={'$like':'%'+_0x1d3f22[_0x7dac('0x2e')][_0x7dac('0x3c')]+'%'};return _0x15fef4;})});}_0x2243ce=_[_0x7dac('0x3b')]({},_0x2243ce,_0x1d3f22[_0x7dac('0x3d')]);return db['JscriptyAnswerReport'][_0x7dac('0x1b')]({'where':_0x2243ce[_0x7dac('0x39')]})[_0x7dac('0x22')](function(_0xe458fb){_0x2df4ad[_0x7dac('0x1b')]=_0xe458fb;if(_0x1d3f22['query'][_0x7dac('0x45')]){_0x2243ce[_0x7dac('0x3f')]=[{'all':!![]}];}return db[_0x7dac('0x58')][_0x7dac('0x40')](_0x2243ce);})[_0x7dac('0x22')](function(_0x34983b){_0x2df4ad[_0x7dac('0x41')]=_0x34983b;return _0x2df4ad;});}})[_0x7dac('0x22')](respondWithFilteredResult(_0xfe57b7,_0x2243ce))[_0x7dac('0x42')](handleError(_0xfe57b7,null));};function char(_0x4c3803){return _0x7dac('0x5a')===typeof _0x4c3803?String[_0x7dac('0x5b')]['apply'](null,arguments):_0x4c3803;}function needsEncapsulation(_0x15ed4f){return!!_0x15ed4f&&(_0x15ed4f[_0x7dac('0x5c')]()[_0x7dac('0x5d')](char(0xd))>=0x0||_0x15ed4f['toString']()[_0x7dac('0x5d')](char(0xa))>=0x0||_0x15ed4f[_0x7dac('0x5c')]()[_0x7dac('0x5d')](char(0x2c))>=0x0||_0x15ed4f['toString']()[_0x7dac('0x5d')](char(0x22))>=0x0);}function encapsulate(_0x5310a7){var _0xd1f06f=char(0x22),_0x13c27c='\x5c'+char(0x22),_0xa45efc=_0x5310a7[_0x7dac('0x5c')]()['replace'](new RegExp(_0xd1f06f,'g'),_0x13c27c);return _0xd1f06f+_0xa45efc+_0xd1f06f;}exports[_0x7dac('0x5e')]=function(_0x26fd04,_0x25366a,_0x192957){var _0x1d8e55,_0x39160c;var _0x601b79={'where':{'ProjectId':_0x26fd04[_0x7dac('0x44')]['id']}};if(_0x26fd04[_0x7dac('0x2e')]['startTime']){_0x601b79[_0x7dac('0x39')][_0x7dac('0x5f')]=JSON[_0x7dac('0x60')](_0x26fd04[_0x7dac('0x2e')]['startTime']);}return db['JscriptySessionReport'][_0x7dac('0x40')](_0x601b79)['then'](handleEntityNotFound(_0x25366a,null))[_0x7dac('0x22')](function(_0xf04e4a){if(_0xf04e4a){_0x1d8e55=_0xf04e4a;return db[_0x7dac('0x61')][_0x7dac('0x40')]({'where':{'SessionId':{'$in':_[_0x7dac('0x29')](_0x1d8e55,'id')},'ProjectId':_0x26fd04[_0x7dac('0x44')]['id']},'order':'-createdAt'});}})[_0x7dac('0x22')](handleEntityNotFound(_0x25366a,null))[_0x7dac('0x22')](function(_0x184289){if(_0x184289){_0x39160c=_0x184289;var _0x519578={};for(var _0x596aa5=0x0,_0x462554=_0x39160c[_0x7dac('0x35')];_0x596aa5<_0x462554;_0x596aa5++){if(!_0x519578[_0x7dac('0x59')](_0x39160c[_0x596aa5]['questionId'])){_0x519578[_0x39160c[_0x596aa5]['questionId']]=needsEncapsulation(_0x39160c[_0x596aa5][_0x7dac('0x62')])?encapsulate(_0x39160c[_0x596aa5][_0x7dac('0x62')]):_0x39160c[_0x596aa5]['question'];}}var _0x104d64=[],_0x213703={};for(var _0x4e47f9=0x0,_0x62042d=_0x1d8e55['length'];_0x4e47f9<_0x62042d;_0x4e47f9++){_0x213703={'ProjectId':_0x26fd04[_0x7dac('0x44')]['id'],'SessionId':_0x1d8e55[_0x4e47f9]['id'],'StartTime':moment(_0x1d8e55[_0x4e47f9][_0x7dac('0x5f')])[_0x7dac('0x63')](_0x7dac('0x64'))};for(var _0x4207eb=0x0,_0x2ec0e6=_0x39160c[_0x7dac('0x35')];_0x4207eb<_0x2ec0e6;_0x4207eb++){if(_0x39160c[_0x4207eb]['SessionId']==_0x1d8e55[_0x4e47f9]['id']&&_0x519578[_0x7dac('0x59')](_0x39160c[_0x4207eb][_0x7dac('0x65')])){_0x213703[_0x519578[_0x39160c[_0x4207eb][_0x7dac('0x65')]]]=_0x39160c[_0x4207eb]['answer'];}}for(var _0x545f06 in _0x519578){if(!_0x213703['hasOwnProperty'](_0x519578[_0x545f06])){_0x213703[_0x519578[_0x545f06]]=null;}}_0x104d64[_0x7dac('0x66')](_0x213703);}return _0x104d64;}})[_0x7dac('0x22')](function(_0x37229b){if(!_[_0x7dac('0x67')](_0x37229b)){var _0x31226e=toCsv(_0x37229b);var _0x3ba205=Date[_0x7dac('0x68')]();fs['writeFileSync'](util[_0x7dac('0x63')](_0x7dac('0x69'),_0x26fd04[_0x7dac('0x44')]['id'],_0x3ba205),_0x31226e);_0x25366a[_0x7dac('0x6a')](_0x7dac('0x6b'),_0x7dac('0x6c')+util[_0x7dac('0x63')](_0x7dac('0x6d'),_0x26fd04[_0x7dac('0x44')]['id'],_0x3ba205));_0x25366a[_0x7dac('0x6a')](_0x7dac('0x6e'),'text/csv');return _0x25366a[_0x7dac('0x6f')](util[_0x7dac('0x63')](_0x7dac('0x69'),_0x26fd04['params']['id'],_0x3ba205));}else{return _0x25366a[_0x7dac('0x15')](0xcc);}})[_0x7dac('0x42')](handleError(_0x25366a,null));};
\ No newline at end of file
+var _0xd403=['download','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','count','limit','apply','reject','save','update','then','destroy','Projects','UserProfileResource','sendStatus','error','stack','name','send','map','rawAttributes','fieldName','type','key','query','keys','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','JscriptyProject','find','create','body','user','get','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','updatedAt','omit','role','UserProfileSection','getSessions','findOne','JscriptySessionReport','pick','ProjectId','JscriptyAnswerReport','number','fromCharCode','toString','indexOf','replace','startTime','starttime','parse','JscriptyQuestionReport','-createdAt','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','Content-disposition','attachment;\x20filename=','setHeader','text/csv'];(function(_0x50e30b,_0x216368){var _0x4b7300=function(_0x8f06d7){while(--_0x8f06d7){_0x50e30b['push'](_0x50e30b['shift']());}};_0x4b7300(++_0x216368);}(_0xd403,0x1d5));var _0x3d40=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd403[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0x3d40('0x0'));var rimraf=require(_0x3d40('0x1'));var zipdir=require(_0x3d40('0x2'));var jsonpatch=require(_0x3d40('0x3'));var rp=require('request-promise');var moment=require(_0x3d40('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3d40('0x5'));var util=require(_0x3d40('0x6'));var path=require(_0x3d40('0x7'));var sox=require(_0x3d40('0x8'));var csv=require(_0x3d40('0x9'));var ejs=require(_0x3d40('0xa'));var fs=require('fs');var fs_extra=require(_0x3d40('0xb'));var _=require(_0x3d40('0xc'));var squel=require(_0x3d40('0xd'));var crypto=require(_0x3d40('0xe'));var jsforce=require(_0x3d40('0xf'));var deskjs=require(_0x3d40('0x10'));var toCsv=require(_0x3d40('0x9'));var querystring=require(_0x3d40('0x11'));var Papa=require(_0x3d40('0x12'));var Redis=require(_0x3d40('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x3d40('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3d40('0x15'));var logger=require(_0x3d40('0x16'))(_0x3d40('0x17'));var utils=require('../../config/utils');var config=require(_0x3d40('0x18'));var licenseUtil=require(_0x3d40('0x19'));var db=require(_0x3d40('0x1a'))['db'];function respondWithStatusCode(_0x49ea7c,_0x31c199){_0x31c199=_0x31c199||0xcc;return function(_0x405625){if(_0x405625){return _0x49ea7c['sendStatus'](_0x31c199);}return _0x49ea7c['status'](_0x31c199)[_0x3d40('0x1b')]();};}function respondWithResult(_0x24d2c0,_0x3e6d19){_0x3e6d19=_0x3e6d19||0xc8;return function(_0x5062ec){if(_0x5062ec){return _0x24d2c0[_0x3d40('0x1c')](_0x3e6d19)[_0x3d40('0x1d')](_0x5062ec);}};}function respondWithFilteredResult(_0x311d57,_0x3e6e71){return function(_0x2b5e2d){if(_0x2b5e2d){var _0x359e9d=typeof _0x3e6e71[_0x3d40('0x1e')]==='undefined'&&typeof _0x3e6e71['limit']===_0x3d40('0x1f');var _0x2f38e1=_0x2b5e2d[_0x3d40('0x20')];var _0x75437e=_0x359e9d?0x0:_0x3e6e71[_0x3d40('0x1e')];var _0x2f3663=_0x359e9d?_0x2b5e2d[_0x3d40('0x20')]:_0x3e6e71[_0x3d40('0x1e')]+_0x3e6e71[_0x3d40('0x21')];var _0x402b4e;if(_0x2f3663>=_0x2f38e1){_0x2f3663=_0x2f38e1;_0x402b4e=0xc8;}else{_0x402b4e=0xce;}_0x311d57[_0x3d40('0x1c')](_0x402b4e);return _0x311d57['set']('Content-Range',_0x75437e+'-'+_0x2f3663+'/'+_0x2f38e1)[_0x3d40('0x1d')](_0x2b5e2d);}return null;};}function patchUpdates(_0x41608f){return function(_0x2fc0e2){try{jsonpatch[_0x3d40('0x22')](_0x2fc0e2,_0x41608f,!![]);}catch(_0x28b1c0){return BPromise[_0x3d40('0x23')](_0x28b1c0);}return _0x2fc0e2[_0x3d40('0x24')]();};}function saveUpdates(_0xbd7298,_0x3df1f9){return function(_0x321bc2){if(_0x321bc2){return _0x321bc2[_0x3d40('0x25')](_0xbd7298)[_0x3d40('0x26')](function(_0x181688){return _0x181688;});}return null;};}function removeEntity(_0x5314c5,_0x1a2d0f){return function(_0x14cad3){if(_0x14cad3){return _0x14cad3[_0x3d40('0x27')]()[_0x3d40('0x26')](function(){var _0x645da4=_0x14cad3['get']({'plain':!![]});var _0x45aa46=_0x3d40('0x28');return db[_0x3d40('0x29')][_0x3d40('0x27')]({'where':{'type':_0x45aa46,'resourceId':_0x645da4['id']}})[_0x3d40('0x26')](function(){return _0x14cad3;});})['then'](function(){_0x5314c5[_0x3d40('0x1c')](0xcc)[_0x3d40('0x1b')]();});}};}function handleEntityNotFound(_0x4e4ee9,_0x412d46){return function(_0x1f94ac){if(!_0x1f94ac){_0x4e4ee9[_0x3d40('0x2a')](0x194);}return _0x1f94ac;};}function handleError(_0x537790,_0x38ff70){_0x38ff70=_0x38ff70||0x1f4;return function(_0x265c2c){logger[_0x3d40('0x2b')](_0x265c2c[_0x3d40('0x2c')]);if(_0x265c2c[_0x3d40('0x2d')]){delete _0x265c2c[_0x3d40('0x2d')];}_0x537790[_0x3d40('0x1c')](_0x38ff70)[_0x3d40('0x2e')](_0x265c2c);};}exports['index']=function(_0x4e536f,_0x394fab){var _0xcb3c3b={},_0x5071b9={},_0x2c1ce6={'count':0x0,'rows':[]};var _0x4f235f=_[_0x3d40('0x2f')](db['JscriptyProject'][_0x3d40('0x30')],function(_0xbff1f2){return{'name':_0xbff1f2[_0x3d40('0x31')],'type':_0xbff1f2[_0x3d40('0x32')][_0x3d40('0x33')]};});_0x5071b9['model']=_['map'](_0x4f235f,_0x3d40('0x2d'));_0x5071b9[_0x3d40('0x34')]=_[_0x3d40('0x35')](_0x4e536f['query']);_0x5071b9[_0x3d40('0x36')]=_['intersection'](_0x5071b9['model'],_0x5071b9['query']);_0xcb3c3b[_0x3d40('0x37')]=_[_0x3d40('0x38')](_0x5071b9[_0x3d40('0x39')],qs[_0x3d40('0x3a')](_0x4e536f[_0x3d40('0x34')][_0x3d40('0x3a')]));_0xcb3c3b[_0x3d40('0x37')]=_0xcb3c3b[_0x3d40('0x37')][_0x3d40('0x3b')]?_0xcb3c3b['attributes']:_0x5071b9['model'];if(!_0x4e536f[_0x3d40('0x34')][_0x3d40('0x3c')](_0x3d40('0x3d'))){_0xcb3c3b[_0x3d40('0x21')]=qs[_0x3d40('0x21')](_0x4e536f[_0x3d40('0x34')]['limit']);_0xcb3c3b[_0x3d40('0x1e')]=qs[_0x3d40('0x1e')](_0x4e536f[_0x3d40('0x34')]['offset']);}_0xcb3c3b[_0x3d40('0x3e')]=qs['sort'](_0x4e536f[_0x3d40('0x34')][_0x3d40('0x3f')]);_0xcb3c3b['where']=qs[_0x3d40('0x36')](_['pick'](_0x4e536f['query'],_0x5071b9[_0x3d40('0x36')]),_0x4f235f);if(_0x4e536f[_0x3d40('0x34')]['filter']){_0xcb3c3b[_0x3d40('0x40')]=_[_0x3d40('0x41')](_0xcb3c3b[_0x3d40('0x40')],{'$or':_['map'](_0x4f235f,function(_0x295418){if(_0x295418[_0x3d40('0x32')]!==_0x3d40('0x42')){var _0x2c45c5={};_0x2c45c5[_0x295418[_0x3d40('0x2d')]]={'$like':'%'+_0x4e536f[_0x3d40('0x34')][_0x3d40('0x43')]+'%'};return _0x2c45c5;}})});}_0xcb3c3b=_[_0x3d40('0x41')]({},_0xcb3c3b,_0x4e536f[_0x3d40('0x44')]);var _0x322030={'where':_0xcb3c3b[_0x3d40('0x40')]};return db['JscriptyProject'][_0x3d40('0x20')](_0x322030)['then'](function(_0x575268){_0x2c1ce6['count']=_0x575268;if(_0x4e536f[_0x3d40('0x34')][_0x3d40('0x45')]){_0xcb3c3b[_0x3d40('0x46')]=[{'all':!![]}];}return db['JscriptyProject'][_0x3d40('0x47')](_0xcb3c3b);})[_0x3d40('0x26')](function(_0x46e59d){_0x2c1ce6[_0x3d40('0x48')]=_0x46e59d;return _0x2c1ce6;})['then'](respondWithFilteredResult(_0x394fab,_0xcb3c3b))[_0x3d40('0x49')](handleError(_0x394fab,null));};exports[_0x3d40('0x4a')]=function(_0x17becc,_0x1be4a9){var _0xdde7e4={'raw':![],'where':{'id':_0x17becc[_0x3d40('0x4b')]['id']}},_0x4387f5={};_0x4387f5[_0x3d40('0x39')]=_[_0x3d40('0x35')](db[_0x3d40('0x4c')]['rawAttributes']);_0x4387f5['query']=_[_0x3d40('0x35')](_0x17becc[_0x3d40('0x34')]);_0x4387f5[_0x3d40('0x36')]=_[_0x3d40('0x38')](_0x4387f5[_0x3d40('0x39')],_0x4387f5[_0x3d40('0x34')]);_0xdde7e4[_0x3d40('0x37')]=_[_0x3d40('0x38')](_0x4387f5[_0x3d40('0x39')],qs['fields'](_0x17becc['query'][_0x3d40('0x3a')]));_0xdde7e4[_0x3d40('0x37')]=_0xdde7e4[_0x3d40('0x37')][_0x3d40('0x3b')]?_0xdde7e4[_0x3d40('0x37')]:_0x4387f5['model'];if(_0x17becc[_0x3d40('0x34')][_0x3d40('0x45')]){_0xdde7e4['include']=[{'all':!![]}];}_0xdde7e4=_['merge']({},_0xdde7e4,_0x17becc['options']);return db[_0x3d40('0x4c')][_0x3d40('0x4d')](_0xdde7e4)[_0x3d40('0x26')](handleEntityNotFound(_0x1be4a9,null))['then'](respondWithResult(_0x1be4a9,null))[_0x3d40('0x49')](handleError(_0x1be4a9,null));};exports['create']=function(_0x580eee,_0xa3ba73){return db[_0x3d40('0x4c')][_0x3d40('0x4e')](_0x580eee[_0x3d40('0x4f')],{})['then'](function(_0xb99156){var _0x5d957d=_0x580eee[_0x3d40('0x50')][_0x3d40('0x51')]({'plain':!![]});if(!_0x5d957d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5d957d['role']===_0x3d40('0x50')){var _0x1448c4=_0xb99156[_0x3d40('0x51')]({'plain':!![]});var _0x23eadf=_0x3d40('0x28');return db['UserProfileSection']['find']({'where':{'name':_0x23eadf,'userProfileId':_0x5d957d[_0x3d40('0x52')]},'raw':!![]})[_0x3d40('0x26')](function(_0x333538){if(_0x333538&&_0x333538[_0x3d40('0x53')]===0x0){return db[_0x3d40('0x29')][_0x3d40('0x4e')]({'name':_0x1448c4['name'],'resourceId':_0x1448c4['id'],'type':_0x333538[_0x3d40('0x2d')],'sectionId':_0x333538['id']},{})[_0x3d40('0x26')](function(){return _0xb99156;});}else{return _0xb99156;}})[_0x3d40('0x49')](function(_0x10223d){logger[_0x3d40('0x2b')](_0x3d40('0x54'),_0x10223d);throw _0x10223d;});}return _0xb99156;})[_0x3d40('0x26')](respondWithResult(_0xa3ba73,0xc9))[_0x3d40('0x49')](handleError(_0xa3ba73,null));};exports[_0x3d40('0x55')]=function(_0x189e80,_0x40eb86){var _0x1ab188={'where':{'id':_0x189e80[_0x3d40('0x4b')]['id']}},_0x427f2a={};_0x427f2a['model']=_['keys'](db['JscriptyProject']['rawAttributes']);_0x1ab188['attributes']=_[_0x3d40('0x38')](_0x427f2a['model'],qs[_0x3d40('0x3a')](_0x189e80[_0x3d40('0x34')]['fields']));_0x1ab188[_0x3d40('0x37')]=_0x1ab188[_0x3d40('0x37')]['length']?_0x1ab188[_0x3d40('0x37')]:_0x427f2a[_0x3d40('0x39')];if(_0x189e80[_0x3d40('0x34')]['includeAll']){_0x1ab188[_0x3d40('0x46')]=[{'all':!![]}];}_0x1ab188=_['merge']({},_0x1ab188,_0x189e80[_0x3d40('0x44')]);return db['JscriptyProject']['find'](_0x1ab188)['then'](handleEntityNotFound(_0x40eb86,null))[_0x3d40('0x26')](function(_0x18626d){if(_0x18626d){var _0x5ad181=_0x18626d[_0x3d40('0x51')]({'plain':!![]});_0x5ad181=qs['omit'](_0x5ad181,['id','createdAt',_0x3d40('0x56')]);_0x189e80['body']=_[_0x3d40('0x57')](_0x189e80['body'],['id','createdAt',_0x3d40('0x56')]);return db['JscriptyProject'][_0x3d40('0x4e')](_[_0x3d40('0x41')](_0x5ad181,_0x189e80[_0x3d40('0x4f')]),{'include':_0x189e80[_0x3d40('0x34')][_0x3d40('0x45')]?[{'all':!![]}]:undefined})['then'](function(_0x358999){var _0x1d6445=_0x189e80[_0x3d40('0x50')][_0x3d40('0x51')]({'plain':!![]});if(!_0x1d6445)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1d6445[_0x3d40('0x58')]===_0x3d40('0x50')){var _0x4600a2=_0x358999['get']({'plain':!![]});var _0x44d093=_0x3d40('0x28');return db[_0x3d40('0x59')][_0x3d40('0x4d')]({'where':{'name':_0x44d093,'userProfileId':_0x1d6445[_0x3d40('0x52')]},'raw':!![]})['then'](function(_0x850ccc){if(_0x850ccc&&_0x850ccc[_0x3d40('0x53')]===0x0){return db[_0x3d40('0x29')][_0x3d40('0x4e')]({'name':_0x4600a2[_0x3d40('0x2d')],'resourceId':_0x4600a2['id'],'type':_0x850ccc[_0x3d40('0x2d')],'sectionId':_0x850ccc['id']},{})[_0x3d40('0x26')](function(){return _0x358999;});}else{return _0x358999;}})['catch'](function(_0x5d14f8){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5d14f8);throw _0x5d14f8;});}return _0x358999;});}})[_0x3d40('0x26')](respondWithResult(_0x40eb86,0xc9))['catch'](handleError(_0x40eb86,null));};exports[_0x3d40('0x25')]=function(_0x471d78,_0x19f033){if(_0x471d78[_0x3d40('0x4f')]['id']){delete _0x471d78[_0x3d40('0x4f')]['id'];}return db[_0x3d40('0x4c')][_0x3d40('0x4d')]({'where':{'id':_0x471d78[_0x3d40('0x4b')]['id']}})[_0x3d40('0x26')](handleEntityNotFound(_0x19f033,null))['then'](saveUpdates(_0x471d78[_0x3d40('0x4f')],null))[_0x3d40('0x26')](respondWithResult(_0x19f033,null))[_0x3d40('0x49')](handleError(_0x19f033,null));};exports[_0x3d40('0x27')]=function(_0x46ef8e,_0x25637f){return db[_0x3d40('0x4c')][_0x3d40('0x4d')]({'where':{'id':_0x46ef8e[_0x3d40('0x4b')]['id']}})['then'](handleEntityNotFound(_0x25637f,null))[_0x3d40('0x26')](removeEntity(_0x25637f,null))[_0x3d40('0x49')](handleError(_0x25637f,null));};exports[_0x3d40('0x5a')]=function(_0x11fc54,_0x2cfc63,_0x213ea9){var _0x4dc423={'raw':!![],'where':{}};var _0x4409a2={};var _0x5cea69={'count':0x0,'rows':[]};return db[_0x3d40('0x4c')][_0x3d40('0x5b')]({'where':{'id':_0x11fc54['params']['id']}})['then'](handleEntityNotFound(_0x2cfc63,null))[_0x3d40('0x26')](function(_0xa531d1){if(_0xa531d1){_0x4409a2[_0x3d40('0x39')]=_['keys'](db[_0x3d40('0x5c')][_0x3d40('0x30')]);_0x4409a2[_0x3d40('0x34')]=_['keys'](_0x11fc54[_0x3d40('0x34')]);_0x4409a2['filters']=_[_0x3d40('0x38')](_0x4409a2[_0x3d40('0x39')],_0x4409a2[_0x3d40('0x34')]);_0x4dc423[_0x3d40('0x37')]=_[_0x3d40('0x38')](_0x4409a2['model'],qs[_0x3d40('0x3a')](_0x11fc54['query']['fields']));_0x4dc423[_0x3d40('0x37')]=_0x4dc423['attributes'][_0x3d40('0x3b')]?_0x4dc423[_0x3d40('0x37')]:_0x4409a2[_0x3d40('0x39')];if(!_0x11fc54['query']['hasOwnProperty'](_0x3d40('0x3d'))){_0x4dc423[_0x3d40('0x21')]=qs['limit'](_0x11fc54['query'][_0x3d40('0x21')]);_0x4dc423['offset']=qs[_0x3d40('0x1e')](_0x11fc54[_0x3d40('0x34')][_0x3d40('0x1e')]);}_0x4dc423['order']=qs[_0x3d40('0x3f')](_0x11fc54[_0x3d40('0x34')][_0x3d40('0x3f')]);_0x4dc423[_0x3d40('0x40')]=qs[_0x3d40('0x36')](_[_0x3d40('0x5d')](_0x11fc54[_0x3d40('0x34')],_0x4409a2['filters']));_0x4dc423[_0x3d40('0x40')]['ProjectId']=_0xa531d1['id'];if(_0x11fc54[_0x3d40('0x34')][_0x3d40('0x43')]){_0x4dc423[_0x3d40('0x40')]=_[_0x3d40('0x41')](_0x4dc423[_0x3d40('0x40')],{'$or':_['map'](_0x4dc423[_0x3d40('0x37')],function(_0x183b7d){var _0x5416f3={};_0x5416f3[_0x183b7d]={'$like':'%'+_0x11fc54[_0x3d40('0x34')]['filter']+'%'};return _0x5416f3;})});}_0x4dc423=_[_0x3d40('0x41')]({},_0x4dc423,_0x11fc54[_0x3d40('0x44')]);return db[_0x3d40('0x5c')][_0x3d40('0x20')]({'where':_0x4dc423[_0x3d40('0x40')]})[_0x3d40('0x26')](function(_0x15e576){_0x5cea69['count']=_0x15e576;if(_0x11fc54[_0x3d40('0x34')][_0x3d40('0x45')]){_0x4dc423[_0x3d40('0x46')]=[{'all':!![]}];}return db[_0x3d40('0x5c')]['findAll'](_0x4dc423);})[_0x3d40('0x26')](function(_0x1e84f0){_0x5cea69[_0x3d40('0x48')]=_0x1e84f0;return _0x5cea69;});}})['then'](respondWithFilteredResult(_0x2cfc63,_0x4dc423))[_0x3d40('0x49')](handleError(_0x2cfc63,null));};exports['getAnswers']=function(_0x8883b2,_0x4647e5,_0x5bdbd8){var _0x317dcf={'raw':!![],'where':{}};var _0x568ba9={};var _0x229865={'count':0x0,'rows':[]};return db[_0x3d40('0x4c')][_0x3d40('0x5b')]({'where':{'id':_0x8883b2[_0x3d40('0x4b')]['id']}})[_0x3d40('0x26')](handleEntityNotFound(_0x4647e5,null))[_0x3d40('0x26')](function(_0x2916f9){if(_0x2916f9){_0x568ba9[_0x3d40('0x39')]=_[_0x3d40('0x35')](db['JscriptyAnswerReport'][_0x3d40('0x30')]);_0x568ba9['query']=_[_0x3d40('0x35')](_0x8883b2[_0x3d40('0x34')]);_0x568ba9['filters']=_[_0x3d40('0x38')](_0x568ba9[_0x3d40('0x39')],_0x568ba9[_0x3d40('0x34')]);_0x317dcf['attributes']=_[_0x3d40('0x38')](_0x568ba9['model'],qs[_0x3d40('0x3a')](_0x8883b2[_0x3d40('0x34')][_0x3d40('0x3a')]));_0x317dcf[_0x3d40('0x37')]=_0x317dcf[_0x3d40('0x37')][_0x3d40('0x3b')]?_0x317dcf[_0x3d40('0x37')]:_0x568ba9[_0x3d40('0x39')];if(!_0x8883b2[_0x3d40('0x34')]['hasOwnProperty'](_0x3d40('0x3d'))){_0x317dcf[_0x3d40('0x21')]=qs[_0x3d40('0x21')](_0x8883b2[_0x3d40('0x34')][_0x3d40('0x21')]);_0x317dcf[_0x3d40('0x1e')]=qs[_0x3d40('0x1e')](_0x8883b2[_0x3d40('0x34')][_0x3d40('0x1e')]);}_0x317dcf[_0x3d40('0x3e')]=qs[_0x3d40('0x3f')](_0x8883b2['query'][_0x3d40('0x3f')]);_0x317dcf[_0x3d40('0x40')]=qs['filters'](_[_0x3d40('0x5d')](_0x8883b2[_0x3d40('0x34')],_0x568ba9['filters']));_0x317dcf['where'][_0x3d40('0x5e')]=_0x2916f9['id'];if(_0x8883b2[_0x3d40('0x34')][_0x3d40('0x43')]){_0x317dcf[_0x3d40('0x40')]=_[_0x3d40('0x41')](_0x317dcf[_0x3d40('0x40')],{'$or':_['map'](_0x317dcf[_0x3d40('0x37')],function(_0x97a8f2){var _0x1aca85={};_0x1aca85[_0x97a8f2]={'$like':'%'+_0x8883b2[_0x3d40('0x34')][_0x3d40('0x43')]+'%'};return _0x1aca85;})});}_0x317dcf=_[_0x3d40('0x41')]({},_0x317dcf,_0x8883b2[_0x3d40('0x44')]);return db['JscriptyAnswerReport']['count']({'where':_0x317dcf[_0x3d40('0x40')]})['then'](function(_0x1c0932){_0x229865['count']=_0x1c0932;if(_0x8883b2[_0x3d40('0x34')][_0x3d40('0x45')]){_0x317dcf[_0x3d40('0x46')]=[{'all':!![]}];}return db[_0x3d40('0x5f')][_0x3d40('0x47')](_0x317dcf);})[_0x3d40('0x26')](function(_0x496311){_0x229865[_0x3d40('0x48')]=_0x496311;return _0x229865;});}})['then'](respondWithFilteredResult(_0x4647e5,_0x317dcf))['catch'](handleError(_0x4647e5,null));};function char(_0x36e290){return _0x3d40('0x60')===typeof _0x36e290?String[_0x3d40('0x61')][_0x3d40('0x22')](null,arguments):_0x36e290;}function needsEncapsulation(_0x49e8fe){return!!_0x49e8fe&&(_0x49e8fe[_0x3d40('0x62')]()[_0x3d40('0x63')](char(0xd))>=0x0||_0x49e8fe['toString']()[_0x3d40('0x63')](char(0xa))>=0x0||_0x49e8fe[_0x3d40('0x62')]()[_0x3d40('0x63')](char(0x2c))>=0x0||_0x49e8fe[_0x3d40('0x62')]()[_0x3d40('0x63')](char(0x22))>=0x0);}function encapsulate(_0x56ce4e){var _0x4c7713=char(0x22),_0x428a8f='\x5c'+char(0x22),_0x1ada84=_0x56ce4e['toString']()[_0x3d40('0x64')](new RegExp(_0x4c7713,'g'),_0x428a8f);return _0x4c7713+_0x1ada84+_0x4c7713;}exports['getSummary']=function(_0x3a6dd7,_0x4f3f3a,_0x487ca0){var _0x5bed4b,_0x31aab8;var _0x5cbf16={'where':{'ProjectId':_0x3a6dd7[_0x3d40('0x4b')]['id']}};if(_0x3a6dd7[_0x3d40('0x34')][_0x3d40('0x65')]){_0x5cbf16[_0x3d40('0x40')][_0x3d40('0x66')]=JSON[_0x3d40('0x67')](_0x3a6dd7[_0x3d40('0x34')]['startTime']);}return db[_0x3d40('0x5c')][_0x3d40('0x47')](_0x5cbf16)[_0x3d40('0x26')](handleEntityNotFound(_0x4f3f3a,null))[_0x3d40('0x26')](function(_0x42652a){if(_0x42652a){_0x5bed4b=_0x42652a;return db[_0x3d40('0x68')][_0x3d40('0x47')]({'where':{'SessionId':{'$in':_['map'](_0x5bed4b,'id')},'ProjectId':_0x3a6dd7['params']['id']},'order':_0x3d40('0x69')});}})[_0x3d40('0x26')](handleEntityNotFound(_0x4f3f3a,null))[_0x3d40('0x26')](function(_0x238842){if(_0x238842){_0x31aab8=_0x238842;var _0x30b3ea={};for(var _0x4c296b=0x0,_0x44c91a=_0x31aab8[_0x3d40('0x3b')];_0x4c296b<_0x44c91a;_0x4c296b++){if(!_0x30b3ea[_0x3d40('0x3c')](_0x31aab8[_0x4c296b][_0x3d40('0x6a')])){_0x30b3ea[_0x31aab8[_0x4c296b][_0x3d40('0x6a')]]=needsEncapsulation(_0x31aab8[_0x4c296b][_0x3d40('0x6b')])?encapsulate(_0x31aab8[_0x4c296b][_0x3d40('0x6b')]):_0x31aab8[_0x4c296b]['question'];}}var _0x505588=[],_0x216f4f={};for(var _0x13f359=0x0,_0x1f7223=_0x5bed4b[_0x3d40('0x3b')];_0x13f359<_0x1f7223;_0x13f359++){_0x216f4f={'ProjectId':_0x3a6dd7['params']['id'],'SessionId':_0x5bed4b[_0x13f359]['id'],'StartTime':moment(_0x5bed4b[_0x13f359][_0x3d40('0x66')])[_0x3d40('0x6c')](_0x3d40('0x6d'))};for(var _0x39c2a1=0x0,_0x4a0444=_0x31aab8[_0x3d40('0x3b')];_0x39c2a1<_0x4a0444;_0x39c2a1++){if(_0x31aab8[_0x39c2a1]['SessionId']==_0x5bed4b[_0x13f359]['id']&&_0x30b3ea[_0x3d40('0x3c')](_0x31aab8[_0x39c2a1][_0x3d40('0x6a')])){_0x216f4f[_0x30b3ea[_0x31aab8[_0x39c2a1][_0x3d40('0x6a')]]]=_0x31aab8[_0x39c2a1]['answer'];}}for(var _0x49a656 in _0x30b3ea){if(!_0x216f4f[_0x3d40('0x3c')](_0x30b3ea[_0x49a656])){_0x216f4f[_0x30b3ea[_0x49a656]]=null;}}_0x505588['push'](_0x216f4f);}return _0x505588;}})[_0x3d40('0x26')](function(_0x4e85d4){if(!_['isEmpty'](_0x4e85d4)){var _0x2b28f2=toCsv(_0x4e85d4);var _0x188537=Date['now']();fs[_0x3d40('0x6e')](util[_0x3d40('0x6c')](_0x3d40('0x6f'),_0x3a6dd7[_0x3d40('0x4b')]['id'],_0x188537),_0x2b28f2);_0x4f3f3a['setHeader'](_0x3d40('0x70'),_0x3d40('0x71')+util[_0x3d40('0x6c')]('Jscripty_Project_%d_Summary_%s.csv',_0x3a6dd7[_0x3d40('0x4b')]['id'],_0x188537));_0x4f3f3a[_0x3d40('0x72')]('Content-type',_0x3d40('0x73'));return _0x4f3f3a[_0x3d40('0x74')](util[_0x3d40('0x6c')](_0x3d40('0x6f'),_0x3a6dd7[_0x3d40('0x4b')]['id'],_0x188537));}else{return _0x4f3f3a[_0x3d40('0x2a')](0xcc);}})['catch'](handleError(_0x4f3f3a,null));};
\ No newline at end of file
index 7200255..a83f554 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1061=['request-promise','path','rimraf','../../config/environment','./jscriptyProject.attributes','exports','define','lodash','moment','bluebird'];(function(_0x168450,_0x57242c){var _0x4b68c2=function(_0x4553a9){while(--_0x4553a9){_0x168450['push'](_0x168450['shift']());}};_0x4b68c2(++_0x57242c);}(_0x1061,0x1b5));var _0x1106=function(_0x3e0862,_0x20d9c6){_0x3e0862=_0x3e0862-0x0;var _0x413849=_0x1061[_0x3e0862];return _0x413849;};'use strict';var _=require(_0x1106('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x1106('0x1'));var BPromise=require(_0x1106('0x2'));var rp=require(_0x1106('0x3'));var fs=require('fs');var path=require(_0x1106('0x4'));var rimraf=require(_0x1106('0x5'));var config=require(_0x1106('0x6'));var attributes=require(_0x1106('0x7'));module[_0x1106('0x8')]=function(_0x5120c6,_0x1f098a){return _0x5120c6[_0x1106('0x9')]('JscriptyProject',attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf120=['./jscriptyProject.attributes','exports','define','JscriptyProject','jscripty_projects','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment'];(function(_0x234491,_0x303898){var _0x4cac47=function(_0x56e048){while(--_0x56e048){_0x234491['push'](_0x234491['shift']());}};_0x4cac47(++_0x303898);}(_0xf120,0x179));var _0x0f12=function(_0xa8e316,_0x21a6d9){_0xa8e316=_0xa8e316-0x0;var _0x1941a1=_0xf120[_0xa8e316];return _0x1941a1;};'use strict';var _=require('lodash');var util=require(_0x0f12('0x0'));var logger=require(_0x0f12('0x1'))(_0x0f12('0x2'));var moment=require('moment');var BPromise=require(_0x0f12('0x3'));var rp=require(_0x0f12('0x4'));var fs=require('fs');var path=require(_0x0f12('0x5'));var rimraf=require('rimraf');var config=require(_0x0f12('0x6'));var attributes=require(_0x0f12('0x7'));module[_0x0f12('0x8')]=function(_0x308941,_0x21f951){return _0x308941[_0x0f12('0x9')](_0x0f12('0xa'),attributes,{'tableName':_0x0f12('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index be2371a..a9669dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','then','info','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','error','JscriptyProject,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird'];(function(_0x33ff0c,_0x448c2a){var _0x44bdc2=function(_0x4f8652){while(--_0x4f8652){_0x33ff0c['push'](_0x33ff0c['shift']());}};_0x44bdc2(++_0x448c2a);}(_0xaa88,0x137));var _0x8aa8=function(_0x4953da,_0x5adaca){_0x4953da=_0x4953da-0x0;var _0x2d3780=_0xaa88[_0x4953da];return _0x2d3780;};'use strict';var _=require(_0x8aa8('0x0'));var util=require(_0x8aa8('0x1'));var moment=require(_0x8aa8('0x2'));var BPromise=require(_0x8aa8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8aa8('0x4'));var db=require(_0x8aa8('0x5'))['db'];var utils=require(_0x8aa8('0x6'));var logger=require(_0x8aa8('0x7'))(_0x8aa8('0x8'));var config=require(_0x8aa8('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8aa8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5264ff,_0x449d2d,_0x1ed84d){return new BPromise(function(_0x27c08d,_0x40826f){return client['request'](_0x5264ff,_0x1ed84d)[_0x8aa8('0xb')](function(_0x2d974c){logger[_0x8aa8('0xc')]('JscriptyProject,\x20%s,\x20%s',_0x449d2d,_0x8aa8('0xd'));logger[_0x8aa8('0xe')](_0x8aa8('0xf'),_0x449d2d,_0x8aa8('0xd'),JSON['stringify'](_0x2d974c));if(_0x2d974c[_0x8aa8('0x10')]){if(_0x2d974c[_0x8aa8('0x10')]['code']===0x1f4){logger[_0x8aa8('0x10')](_0x8aa8('0x11'),_0x449d2d,_0x2d974c[_0x8aa8('0x10')]['message']);return _0x40826f(_0x2d974c[_0x8aa8('0x10')][_0x8aa8('0x12')]);}logger[_0x8aa8('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x449d2d,_0x2d974c[_0x8aa8('0x10')]['message']);return _0x27c08d(_0x2d974c['error'][_0x8aa8('0x12')]);}else{logger[_0x8aa8('0xc')](_0x8aa8('0x11'),_0x449d2d,_0x8aa8('0xd'));_0x27c08d(_0x2d974c[_0x8aa8('0x13')][_0x8aa8('0x12')]);}})[_0x8aa8('0x14')](function(_0xd59fb8){logger[_0x8aa8('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x449d2d,_0xd59fb8);_0x40826f(_0xd59fb8);});});}
\ No newline at end of file
+var _0xb43b=['rpc','../../config/environment','http','request','info','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','JscriptyProject,\x20%s,\x20%s','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x16b4a3,_0x8e0d2d){var _0x1572b4=function(_0x92db30){while(--_0x92db30){_0x16b4a3['push'](_0x16b4a3['shift']());}};_0x1572b4(++_0x8e0d2d);}(_0xb43b,0x1b2));var _0xbb43=function(_0x38a811,_0xd0c6b7){_0x38a811=_0x38a811-0x0;var _0x2f853f=_0xb43b[_0x38a811];return _0x2f853f;};'use strict';var _=require(_0xbb43('0x0'));var util=require(_0xbb43('0x1'));var moment=require('moment');var BPromise=require(_0xbb43('0x2'));var rs=require(_0xbb43('0x3'));var fs=require('fs');var Redis=require(_0xbb43('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbb43('0x5'));var logger=require(_0xbb43('0x6'))(_0xbb43('0x7'));var config=require(_0xbb43('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xbb43('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x553520,_0x80fe61,_0x1ccd49){return new BPromise(function(_0x2a2f11,_0x29ae1a){return client[_0xbb43('0xa')](_0x553520,_0x1ccd49)['then'](function(_0x208c2b){logger[_0xbb43('0xb')]('JscriptyProject,\x20%s,\x20%s',_0x80fe61,_0xbb43('0xc'));logger[_0xbb43('0xd')](_0xbb43('0xe'),_0x80fe61,_0xbb43('0xc'),JSON[_0xbb43('0xf')](_0x208c2b));if(_0x208c2b[_0xbb43('0x10')]){if(_0x208c2b['error'][_0xbb43('0x11')]===0x1f4){logger[_0xbb43('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x80fe61,_0x208c2b['error'][_0xbb43('0x12')]);return _0x29ae1a(_0x208c2b['error']['message']);}logger[_0xbb43('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x80fe61,_0x208c2b[_0xbb43('0x10')][_0xbb43('0x12')]);return _0x2a2f11(_0x208c2b['error']['message']);}else{logger['info'](_0xbb43('0x13'),_0x80fe61,_0xbb43('0xc'));_0x2a2f11(_0x208c2b['result']['message']);}})[_0xbb43('0x14')](function(_0x563ce1){logger['error'](_0xbb43('0x13'),_0x80fe61,_0x563ce1);_0x29ae1a(_0x563ce1);});});}
\ No newline at end of file
index d6ee35d..170da63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a4a=['exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','index','/describe','describe','/:id','isAuthenticated','show','post','create','put','update','delete','destroy'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0x9a4a,0x8b));var _0xa9a4=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x9a4a[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0xa9a4('0x0'));var util=require(_0xa9a4('0x1'));var path=require(_0xa9a4('0x2'));var timeout=require(_0xa9a4('0x3'));var express=require('express');var router=express[_0xa9a4('0x4')]();var fs_extra=require(_0xa9a4('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa9a4('0x6'));var config=require(_0xa9a4('0x7'));var controller=require(_0xa9a4('0x8'));router[_0xa9a4('0x9')]('/',auth['isAuthenticated'](),controller[_0xa9a4('0xa')]);router['get'](_0xa9a4('0xb'),auth['isAuthenticated'](),controller[_0xa9a4('0xc')]);router[_0xa9a4('0x9')](_0xa9a4('0xd'),auth[_0xa9a4('0xe')](),controller[_0xa9a4('0xf')]);router[_0xa9a4('0x10')]('/',auth[_0xa9a4('0xe')](),controller[_0xa9a4('0x11')]);router[_0xa9a4('0x12')](_0xa9a4('0xd'),auth[_0xa9a4('0xe')](),controller[_0xa9a4('0x13')]);router[_0xa9a4('0x14')](_0xa9a4('0xd'),auth['isAuthenticated'](),controller[_0xa9a4('0x15')]);module[_0xa9a4('0x16')]=router;
\ No newline at end of file
+var _0xce2d=['post','create','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x469ae2,_0x24cd30){var _0x5e33e4=function(_0x1aaeb1){while(--_0x1aaeb1){_0x469ae2['push'](_0x469ae2['shift']());}};_0x5e33e4(++_0x24cd30);}(_0xce2d,0x132));var _0xdce2=function(_0x117277,_0x2bf5d8){_0x117277=_0x117277-0x0;var _0x1bf507=_0xce2d[_0x117277];return _0x1bf507;};'use strict';var multer=require(_0xdce2('0x0'));var util=require('util');var path=require(_0xdce2('0x1'));var timeout=require(_0xdce2('0x2'));var express=require(_0xdce2('0x3'));var router=express['Router']();var fs_extra=require(_0xdce2('0x4'));var auth=require(_0xdce2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xdce2('0x6'));var controller=require(_0xdce2('0x7'));router[_0xdce2('0x8')]('/',auth[_0xdce2('0x9')](),controller[_0xdce2('0xa')]);router[_0xdce2('0x8')](_0xdce2('0xb'),auth[_0xdce2('0x9')](),controller[_0xdce2('0xc')]);router[_0xdce2('0x8')](_0xdce2('0xd'),auth[_0xdce2('0x9')](),controller['show']);router[_0xdce2('0xe')]('/',auth[_0xdce2('0x9')](),controller[_0xdce2('0xf')]);router['put'](_0xdce2('0xd'),auth[_0xdce2('0x9')](),controller[_0xdce2('0x10')]);router[_0xdce2('0x11')]('/:id',auth[_0xdce2('0x9')](),controller[_0xdce2('0x12')]);module[_0xdce2('0x13')]=router;
\ No newline at end of file
index b5ce3cd..ad5e17b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x7a54,0x106));var _0x47a5=function(_0x1140a9,_0x10ac5c){_0x1140a9=_0x1140a9-0x0;var _0x22b1f6=_0x7a54[_0x1140a9];return _0x22b1f6;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x7a54,0x106));var _0x47a5=function(_0xa1fb7f,_0x331da2){_0xa1fb7f=_0xa1fb7f-0x0;var _0x4c71a5=_0x7a54[_0xa1fb7f];return _0x4c71a5;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
index cd79d62..6df836b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfe0=['then','destroy','error','name','map','JscriptyQuestionReport','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','body','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update'];(function(_0x3da707,_0x30c36d){var _0x342ee7=function(_0x175135){while(--_0x175135){_0x3da707['push'](_0x3da707['shift']());}};_0x342ee7(++_0x30c36d);}(_0xbfe0,0x1ed));var _0x0bfe=function(_0xffa198,_0x5a8940){_0xffa198=_0xffa198-0x0;var _0x1e4b50=_0xbfe0[_0xffa198];return _0x1e4b50;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x0bfe('0x0'));var jsonpatch=require(_0x0bfe('0x1'));var rp=require(_0x0bfe('0x2'));var moment=require(_0x0bfe('0x3'));var BPromise=require(_0x0bfe('0x4'));var Mustache=require(_0x0bfe('0x5'));var util=require(_0x0bfe('0x6'));var path=require(_0x0bfe('0x7'));var sox=require(_0x0bfe('0x8'));var csv=require(_0x0bfe('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0bfe('0xa'));var _=require(_0x0bfe('0xb'));var squel=require(_0x0bfe('0xc'));var crypto=require(_0x0bfe('0xd'));var jsforce=require(_0x0bfe('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0bfe('0xf'));var Papa=require('papaparse');var Redis=require(_0x0bfe('0x10'));var authService=require(_0x0bfe('0x11'));var qs=require(_0x0bfe('0x12'));var as=require(_0x0bfe('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0bfe('0x14'))(_0x0bfe('0x15'));var utils=require(_0x0bfe('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0bfe('0x17'));var db=require(_0x0bfe('0x18'))['db'];function respondWithStatusCode(_0x3abe0b,_0x3a8088){_0x3a8088=_0x3a8088||0xcc;return function(_0xb77201){if(_0xb77201){return _0x3abe0b[_0x0bfe('0x19')](_0x3a8088);}return _0x3abe0b[_0x0bfe('0x1a')](_0x3a8088)[_0x0bfe('0x1b')]();};}function respondWithResult(_0x33bd87,_0x51622e){_0x51622e=_0x51622e||0xc8;return function(_0x242c8d){if(_0x242c8d){return _0x33bd87[_0x0bfe('0x1a')](_0x51622e)[_0x0bfe('0x1c')](_0x242c8d);}};}function respondWithFilteredResult(_0x1eaf06,_0x252a8f){return function(_0x20b74d){if(_0x20b74d){var _0xeb4d5a=typeof _0x252a8f[_0x0bfe('0x1d')]==='undefined'&&typeof _0x252a8f[_0x0bfe('0x1e')]===_0x0bfe('0x1f');var _0x223192=_0x20b74d[_0x0bfe('0x20')];var _0x4db956=_0xeb4d5a?0x0:_0x252a8f[_0x0bfe('0x1d')];var _0x1c9c6c=_0xeb4d5a?_0x20b74d[_0x0bfe('0x20')]:_0x252a8f[_0x0bfe('0x1d')]+_0x252a8f[_0x0bfe('0x1e')];var _0x2d4372;if(_0x1c9c6c>=_0x223192){_0x1c9c6c=_0x223192;_0x2d4372=0xc8;}else{_0x2d4372=0xce;}_0x1eaf06[_0x0bfe('0x1a')](_0x2d4372);return _0x1eaf06[_0x0bfe('0x21')](_0x0bfe('0x22'),_0x4db956+'-'+_0x1c9c6c+'/'+_0x223192)[_0x0bfe('0x1c')](_0x20b74d);}return null;};}function patchUpdates(_0x3f8c7){return function(_0x56f696){try{jsonpatch[_0x0bfe('0x23')](_0x56f696,_0x3f8c7,!![]);}catch(_0xc432ae){return BPromise[_0x0bfe('0x24')](_0xc432ae);}return _0x56f696[_0x0bfe('0x25')]();};}function saveUpdates(_0x4cfb62,_0x814fb2){return function(_0xc594bd){if(_0xc594bd){return _0xc594bd[_0x0bfe('0x26')](_0x4cfb62)[_0x0bfe('0x27')](function(_0x548fa0){return _0x548fa0;});}return null;};}function removeEntity(_0x5d488d,_0x18d7da){return function(_0x4fe8f7){if(_0x4fe8f7){return _0x4fe8f7[_0x0bfe('0x28')]()['then'](function(){_0x5d488d[_0x0bfe('0x1a')](0xcc)[_0x0bfe('0x1b')]();});}};}function handleEntityNotFound(_0x4aabbe,_0x3e0c19){return function(_0x4064b4){if(!_0x4064b4){_0x4aabbe[_0x0bfe('0x19')](0x194);}return _0x4064b4;};}function handleError(_0xe59975,_0x19284a){_0x19284a=_0x19284a||0x1f4;return function(_0x2010fe){logger[_0x0bfe('0x29')](_0x2010fe['stack']);if(_0x2010fe[_0x0bfe('0x2a')]){delete _0x2010fe['name'];}_0xe59975[_0x0bfe('0x1a')](_0x19284a)['send'](_0x2010fe);};}exports['index']=function(_0xfc2738,_0x179580){var _0x329f89={},_0x59aee8={},_0x2bbeb9={'count':0x0,'rows':[]};var _0x1cc1c5=_[_0x0bfe('0x2b')](db[_0x0bfe('0x2c')][_0x0bfe('0x2d')],function(_0x4e3db8){return{'name':_0x4e3db8[_0x0bfe('0x2e')],'type':_0x4e3db8[_0x0bfe('0x2f')]['key']};});_0x59aee8['model']=_['map'](_0x1cc1c5,_0x0bfe('0x2a'));_0x59aee8[_0x0bfe('0x30')]=_[_0x0bfe('0x31')](_0xfc2738[_0x0bfe('0x30')]);_0x59aee8['filters']=_[_0x0bfe('0x32')](_0x59aee8[_0x0bfe('0x33')],_0x59aee8['query']);_0x329f89[_0x0bfe('0x34')]=_[_0x0bfe('0x32')](_0x59aee8['model'],qs[_0x0bfe('0x35')](_0xfc2738['query'][_0x0bfe('0x35')]));_0x329f89[_0x0bfe('0x34')]=_0x329f89['attributes']['length']?_0x329f89[_0x0bfe('0x34')]:_0x59aee8[_0x0bfe('0x33')];if(!_0xfc2738[_0x0bfe('0x30')][_0x0bfe('0x36')](_0x0bfe('0x37'))){_0x329f89[_0x0bfe('0x1e')]=qs[_0x0bfe('0x1e')](_0xfc2738[_0x0bfe('0x30')][_0x0bfe('0x1e')]);_0x329f89[_0x0bfe('0x1d')]=qs[_0x0bfe('0x1d')](_0xfc2738[_0x0bfe('0x30')][_0x0bfe('0x1d')]);}_0x329f89['order']=qs[_0x0bfe('0x38')](_0xfc2738[_0x0bfe('0x30')][_0x0bfe('0x38')]);_0x329f89[_0x0bfe('0x39')]=qs[_0x0bfe('0x3a')](_[_0x0bfe('0x3b')](_0xfc2738[_0x0bfe('0x30')],_0x59aee8[_0x0bfe('0x3a')]),_0x1cc1c5);if(_0xfc2738[_0x0bfe('0x30')][_0x0bfe('0x3c')]){_0x329f89[_0x0bfe('0x39')]=_[_0x0bfe('0x3d')](_0x329f89[_0x0bfe('0x39')],{'$or':_['map'](_0x1cc1c5,function(_0x706ff9){if(_0x706ff9['type']!==_0x0bfe('0x3e')){var _0x52968d={};_0x52968d[_0x706ff9[_0x0bfe('0x2a')]]={'$like':'%'+_0xfc2738[_0x0bfe('0x30')][_0x0bfe('0x3c')]+'%'};return _0x52968d;}})});}_0x329f89=_[_0x0bfe('0x3d')]({},_0x329f89,_0xfc2738['options']);var _0x2a0a67={'where':_0x329f89[_0x0bfe('0x39')]};return db[_0x0bfe('0x2c')][_0x0bfe('0x20')](_0x2a0a67)['then'](function(_0x5e6bd1){_0x2bbeb9['count']=_0x5e6bd1;if(_0xfc2738[_0x0bfe('0x30')][_0x0bfe('0x3f')]){_0x329f89[_0x0bfe('0x40')]=[{'all':!![]}];}return db[_0x0bfe('0x2c')][_0x0bfe('0x41')](_0x329f89);})[_0x0bfe('0x27')](function(_0xf75883){_0x2bbeb9[_0x0bfe('0x42')]=_0xf75883;return _0x2bbeb9;})[_0x0bfe('0x27')](respondWithFilteredResult(_0x179580,_0x329f89))[_0x0bfe('0x43')](handleError(_0x179580,null));};exports[_0x0bfe('0x44')]=function(_0x46a1b5,_0xf7db94){var _0x5b3f88={'raw':!![],'where':{'id':_0x46a1b5[_0x0bfe('0x45')]['id']}},_0x4242cd={};_0x4242cd[_0x0bfe('0x33')]=_[_0x0bfe('0x31')](db[_0x0bfe('0x2c')][_0x0bfe('0x2d')]);_0x4242cd[_0x0bfe('0x30')]=_[_0x0bfe('0x31')](_0x46a1b5['query']);_0x4242cd[_0x0bfe('0x3a')]=_[_0x0bfe('0x32')](_0x4242cd[_0x0bfe('0x33')],_0x4242cd[_0x0bfe('0x30')]);_0x5b3f88['attributes']=_[_0x0bfe('0x32')](_0x4242cd[_0x0bfe('0x33')],qs['fields'](_0x46a1b5[_0x0bfe('0x30')][_0x0bfe('0x35')]));_0x5b3f88[_0x0bfe('0x34')]=_0x5b3f88['attributes'][_0x0bfe('0x46')]?_0x5b3f88[_0x0bfe('0x34')]:_0x4242cd[_0x0bfe('0x33')];if(_0x46a1b5[_0x0bfe('0x30')][_0x0bfe('0x3f')]){_0x5b3f88['include']=[{'all':!![]}];}_0x5b3f88=_[_0x0bfe('0x3d')]({},_0x5b3f88,_0x46a1b5[_0x0bfe('0x47')]);return db[_0x0bfe('0x2c')][_0x0bfe('0x48')](_0x5b3f88)[_0x0bfe('0x27')](handleEntityNotFound(_0xf7db94,null))[_0x0bfe('0x27')](respondWithResult(_0xf7db94,null))[_0x0bfe('0x43')](handleError(_0xf7db94,null));};exports['create']=function(_0x1ece79,_0x134cc1){return db[_0x0bfe('0x2c')][_0x0bfe('0x49')](_0x1ece79[_0x0bfe('0x4a')],{})['then'](respondWithResult(_0x134cc1,0xc9))[_0x0bfe('0x43')](handleError(_0x134cc1,null));};exports[_0x0bfe('0x26')]=function(_0x1e8311,_0x4f7eed){if(_0x1e8311[_0x0bfe('0x4a')]['id']){delete _0x1e8311['body']['id'];}return db[_0x0bfe('0x2c')][_0x0bfe('0x48')]({'where':{'id':_0x1e8311[_0x0bfe('0x45')]['id']}})[_0x0bfe('0x27')](handleEntityNotFound(_0x4f7eed,null))[_0x0bfe('0x27')](saveUpdates(_0x1e8311['body'],null))['then'](respondWithResult(_0x4f7eed,null))[_0x0bfe('0x43')](handleError(_0x4f7eed,null));};exports['destroy']=function(_0xc44efa,_0x41ca01){return db[_0x0bfe('0x2c')][_0x0bfe('0x48')]({'where':{'id':_0xc44efa[_0x0bfe('0x45')]['id']}})['then'](handleEntityNotFound(_0x41ca01,null))[_0x0bfe('0x27')](removeEntity(_0x41ca01,null))[_0x0bfe('0x43')](handleError(_0x41ca01,null));};exports[_0x0bfe('0x4b')]=function(_0x2b79d1,_0x41d258){return db[_0x0bfe('0x2c')][_0x0bfe('0x4b')]()[_0x0bfe('0x27')](respondWithResult(_0x41d258,null))['catch'](handleError(_0x41d258,null));};
\ No newline at end of file
+var _0x0f6d=['map','JscriptyQuestionReport','rawAttributes','fieldName','model','keys','query','filters','attributes','intersection','fields','length','order','sort','where','pick','filter','options','includeAll','include','findAll','rows','catch','show','params','merge','find','create','body','destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','sendStatus','error','stack','name','send'];(function(_0x548627,_0x4ec392){var _0x844a84=function(_0x2ffdd2){while(--_0x2ffdd2){_0x548627['push'](_0x548627['shift']());}};_0x844a84(++_0x4ec392);}(_0x0f6d,0x14f));var _0xd0f6=function(_0x270adf,_0x1daaa3){_0x270adf=_0x270adf-0x0;var _0x29eda9=_0x0f6d[_0x270adf];return _0x29eda9;};'use strict';var emlformat=require(_0xd0f6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd0f6('0x1'));var jsonpatch=require(_0xd0f6('0x2'));var rp=require(_0xd0f6('0x3'));var moment=require(_0xd0f6('0x4'));var BPromise=require(_0xd0f6('0x5'));var Mustache=require(_0xd0f6('0x6'));var util=require(_0xd0f6('0x7'));var path=require(_0xd0f6('0x8'));var sox=require(_0xd0f6('0x9'));var csv=require(_0xd0f6('0xa'));var ejs=require(_0xd0f6('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd0f6('0xc'));var squel=require(_0xd0f6('0xd'));var crypto=require(_0xd0f6('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xd0f6('0xf'));var toCsv=require(_0xd0f6('0xa'));var querystring=require(_0xd0f6('0x10'));var Papa=require(_0xd0f6('0x11'));var Redis=require(_0xd0f6('0x12'));var authService=require(_0xd0f6('0x13'));var qs=require(_0xd0f6('0x14'));var as=require(_0xd0f6('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd0f6('0x16'))(_0xd0f6('0x17'));var utils=require(_0xd0f6('0x18'));var config=require(_0xd0f6('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xd0f6('0x1a'))['db'];function respondWithStatusCode(_0x434113,_0x398946){_0x398946=_0x398946||0xcc;return function(_0x38dfed){if(_0x38dfed){return _0x434113['sendStatus'](_0x398946);}return _0x434113[_0xd0f6('0x1b')](_0x398946)[_0xd0f6('0x1c')]();};}function respondWithResult(_0x4cd0e1,_0x33ccab){_0x33ccab=_0x33ccab||0xc8;return function(_0x260a3d){if(_0x260a3d){return _0x4cd0e1['status'](_0x33ccab)[_0xd0f6('0x1d')](_0x260a3d);}};}function respondWithFilteredResult(_0x1315ce,_0x4c4487){return function(_0x338d40){if(_0x338d40){var _0x330def=typeof _0x4c4487[_0xd0f6('0x1e')]===_0xd0f6('0x1f')&&typeof _0x4c4487[_0xd0f6('0x20')]===_0xd0f6('0x1f');var _0x5e41e9=_0x338d40[_0xd0f6('0x21')];var _0x5c843d=_0x330def?0x0:_0x4c4487['offset'];var _0x483484=_0x330def?_0x338d40[_0xd0f6('0x21')]:_0x4c4487[_0xd0f6('0x1e')]+_0x4c4487[_0xd0f6('0x20')];var _0x5804d1;if(_0x483484>=_0x5e41e9){_0x483484=_0x5e41e9;_0x5804d1=0xc8;}else{_0x5804d1=0xce;}_0x1315ce[_0xd0f6('0x1b')](_0x5804d1);return _0x1315ce['set'](_0xd0f6('0x22'),_0x5c843d+'-'+_0x483484+'/'+_0x5e41e9)['json'](_0x338d40);}return null;};}function patchUpdates(_0x22063d){return function(_0x751e1b){try{jsonpatch[_0xd0f6('0x23')](_0x751e1b,_0x22063d,!![]);}catch(_0x441c9a){return BPromise[_0xd0f6('0x24')](_0x441c9a);}return _0x751e1b[_0xd0f6('0x25')]();};}function saveUpdates(_0x392363,_0xdabf5){return function(_0x75377e){if(_0x75377e){return _0x75377e[_0xd0f6('0x26')](_0x392363)[_0xd0f6('0x27')](function(_0xddf6b7){return _0xddf6b7;});}return null;};}function removeEntity(_0x3e5e52,_0x5e11cd){return function(_0x3f53cc){if(_0x3f53cc){return _0x3f53cc['destroy']()[_0xd0f6('0x27')](function(){_0x3e5e52[_0xd0f6('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x59ec1c,_0x2cac54){return function(_0xd953c4){if(!_0xd953c4){_0x59ec1c[_0xd0f6('0x28')](0x194);}return _0xd953c4;};}function handleError(_0x4091c0,_0x189c82){_0x189c82=_0x189c82||0x1f4;return function(_0x5b0781){logger[_0xd0f6('0x29')](_0x5b0781[_0xd0f6('0x2a')]);if(_0x5b0781['name']){delete _0x5b0781[_0xd0f6('0x2b')];}_0x4091c0[_0xd0f6('0x1b')](_0x189c82)[_0xd0f6('0x2c')](_0x5b0781);};}exports['index']=function(_0x1fd095,_0xa289fe){var _0x1865a3={},_0x57ecfb={},_0x2a4111={'count':0x0,'rows':[]};var _0x1a1f93=_[_0xd0f6('0x2d')](db[_0xd0f6('0x2e')][_0xd0f6('0x2f')],function(_0x22cf9f){return{'name':_0x22cf9f[_0xd0f6('0x30')],'type':_0x22cf9f['type']['key']};});_0x57ecfb[_0xd0f6('0x31')]=_['map'](_0x1a1f93,_0xd0f6('0x2b'));_0x57ecfb['query']=_[_0xd0f6('0x32')](_0x1fd095[_0xd0f6('0x33')]);_0x57ecfb[_0xd0f6('0x34')]=_['intersection'](_0x57ecfb[_0xd0f6('0x31')],_0x57ecfb['query']);_0x1865a3[_0xd0f6('0x35')]=_[_0xd0f6('0x36')](_0x57ecfb['model'],qs[_0xd0f6('0x37')](_0x1fd095['query'][_0xd0f6('0x37')]));_0x1865a3[_0xd0f6('0x35')]=_0x1865a3[_0xd0f6('0x35')][_0xd0f6('0x38')]?_0x1865a3[_0xd0f6('0x35')]:_0x57ecfb['model'];if(!_0x1fd095['query']['hasOwnProperty']('nolimit')){_0x1865a3[_0xd0f6('0x20')]=qs[_0xd0f6('0x20')](_0x1fd095[_0xd0f6('0x33')]['limit']);_0x1865a3['offset']=qs[_0xd0f6('0x1e')](_0x1fd095[_0xd0f6('0x33')][_0xd0f6('0x1e')]);}_0x1865a3[_0xd0f6('0x39')]=qs[_0xd0f6('0x3a')](_0x1fd095['query'][_0xd0f6('0x3a')]);_0x1865a3[_0xd0f6('0x3b')]=qs[_0xd0f6('0x34')](_[_0xd0f6('0x3c')](_0x1fd095['query'],_0x57ecfb['filters']),_0x1a1f93);if(_0x1fd095[_0xd0f6('0x33')][_0xd0f6('0x3d')]){_0x1865a3[_0xd0f6('0x3b')]=_['merge'](_0x1865a3[_0xd0f6('0x3b')],{'$or':_[_0xd0f6('0x2d')](_0x1a1f93,function(_0x823ee0){if(_0x823ee0['type']!=='VIRTUAL'){var _0x1b2067={};_0x1b2067[_0x823ee0[_0xd0f6('0x2b')]]={'$like':'%'+_0x1fd095['query'][_0xd0f6('0x3d')]+'%'};return _0x1b2067;}})});}_0x1865a3=_['merge']({},_0x1865a3,_0x1fd095[_0xd0f6('0x3e')]);var _0x4ad64c={'where':_0x1865a3['where']};return db[_0xd0f6('0x2e')][_0xd0f6('0x21')](_0x4ad64c)['then'](function(_0x519c0b){_0x2a4111[_0xd0f6('0x21')]=_0x519c0b;if(_0x1fd095[_0xd0f6('0x33')][_0xd0f6('0x3f')]){_0x1865a3[_0xd0f6('0x40')]=[{'all':!![]}];}return db[_0xd0f6('0x2e')][_0xd0f6('0x41')](_0x1865a3);})[_0xd0f6('0x27')](function(_0x371dd0){_0x2a4111[_0xd0f6('0x42')]=_0x371dd0;return _0x2a4111;})[_0xd0f6('0x27')](respondWithFilteredResult(_0xa289fe,_0x1865a3))[_0xd0f6('0x43')](handleError(_0xa289fe,null));};exports[_0xd0f6('0x44')]=function(_0x448c8b,_0x1ee375){var _0x230df1={'raw':!![],'where':{'id':_0x448c8b[_0xd0f6('0x45')]['id']}},_0x282997={};_0x282997[_0xd0f6('0x31')]=_['keys'](db['JscriptyQuestionReport']['rawAttributes']);_0x282997[_0xd0f6('0x33')]=_[_0xd0f6('0x32')](_0x448c8b[_0xd0f6('0x33')]);_0x282997[_0xd0f6('0x34')]=_[_0xd0f6('0x36')](_0x282997[_0xd0f6('0x31')],_0x282997['query']);_0x230df1[_0xd0f6('0x35')]=_[_0xd0f6('0x36')](_0x282997[_0xd0f6('0x31')],qs[_0xd0f6('0x37')](_0x448c8b[_0xd0f6('0x33')][_0xd0f6('0x37')]));_0x230df1[_0xd0f6('0x35')]=_0x230df1['attributes'][_0xd0f6('0x38')]?_0x230df1[_0xd0f6('0x35')]:_0x282997[_0xd0f6('0x31')];if(_0x448c8b['query'][_0xd0f6('0x3f')]){_0x230df1[_0xd0f6('0x40')]=[{'all':!![]}];}_0x230df1=_[_0xd0f6('0x46')]({},_0x230df1,_0x448c8b['options']);return db[_0xd0f6('0x2e')][_0xd0f6('0x47')](_0x230df1)[_0xd0f6('0x27')](handleEntityNotFound(_0x1ee375,null))[_0xd0f6('0x27')](respondWithResult(_0x1ee375,null))[_0xd0f6('0x43')](handleError(_0x1ee375,null));};exports['create']=function(_0x194758,_0x33f733){return db[_0xd0f6('0x2e')][_0xd0f6('0x48')](_0x194758[_0xd0f6('0x49')],{})[_0xd0f6('0x27')](respondWithResult(_0x33f733,0xc9))[_0xd0f6('0x43')](handleError(_0x33f733,null));};exports['update']=function(_0x13a0bd,_0x2fdc0b){if(_0x13a0bd['body']['id']){delete _0x13a0bd[_0xd0f6('0x49')]['id'];}return db['JscriptyQuestionReport'][_0xd0f6('0x47')]({'where':{'id':_0x13a0bd[_0xd0f6('0x45')]['id']}})[_0xd0f6('0x27')](handleEntityNotFound(_0x2fdc0b,null))[_0xd0f6('0x27')](saveUpdates(_0x13a0bd[_0xd0f6('0x49')],null))[_0xd0f6('0x27')](respondWithResult(_0x2fdc0b,null))['catch'](handleError(_0x2fdc0b,null));};exports[_0xd0f6('0x4a')]=function(_0x14c4b1,_0x42a197){return db['JscriptyQuestionReport'][_0xd0f6('0x47')]({'where':{'id':_0x14c4b1[_0xd0f6('0x45')]['id']}})['then'](handleEntityNotFound(_0x42a197,null))['then'](removeEntity(_0x42a197,null))['catch'](handleError(_0x42a197,null));};exports['describe']=function(_0x506b3b,_0x242fdf){return db['JscriptyQuestionReport'][_0xd0f6('0x4b')]()[_0xd0f6('0x27')](respondWithResult(_0x242fdf,null))[_0xd0f6('0x43')](handleError(_0x242fdf,null));};
\ No newline at end of file
index fa58202..ea5bdb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x710f=['JscriptyQuestionReport','lodash','util','api','bluebird','path','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports'];(function(_0x4640f8,_0x4e1564){var _0x4d4bd3=function(_0x10dffc){while(--_0x10dffc){_0x4640f8['push'](_0x4640f8['shift']());}};_0x4d4bd3(++_0x4e1564);}(_0x710f,0xbf));var _0xf710=function(_0x587b16,_0x4c00a0){_0x587b16=_0x587b16-0x0;var _0x464e9d=_0x710f[_0x587b16];return _0x464e9d;};'use strict';var _=require(_0xf710('0x0'));var util=require(_0xf710('0x1'));var logger=require('../../config/logger')(_0xf710('0x2'));var moment=require('moment');var BPromise=require(_0xf710('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf710('0x4'));var rimraf=require(_0xf710('0x5'));var config=require(_0xf710('0x6'));var attributes=require(_0xf710('0x7'));module[_0xf710('0x8')]=function(_0x4cc453,_0x45165c){return _0x4cc453['define'](_0xf710('0x9'),attributes,{'tableName':'report_jscripty_questions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3c1b=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','JscriptyQuestionReport','report_jscripty_questions'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0x3c1b,0x1ad));var _0xb3c1=function(_0x40a9df,_0x283d9e){_0x40a9df=_0x40a9df-0x0;var _0x2a42b2=_0x3c1b[_0x40a9df];return _0x2a42b2;};'use strict';var _=require(_0xb3c1('0x0'));var util=require(_0xb3c1('0x1'));var logger=require(_0xb3c1('0x2'))(_0xb3c1('0x3'));var moment=require(_0xb3c1('0x4'));var BPromise=require(_0xb3c1('0x5'));var rp=require(_0xb3c1('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb3c1('0x7'));var attributes=require(_0xb3c1('0x8'));module[_0xb3c1('0x9')]=function(_0x949c3d,_0x371117){return _0x949c3d[_0xb3c1('0xa')](_0xb3c1('0xb'),attributes,{'tableName':_0xb3c1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b80892b..81b144e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33b9=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0xa46b86,_0x5c1465){var _0x417360=function(_0x4800d1){while(--_0x4800d1){_0xa46b86['push'](_0xa46b86['shift']());}};_0x417360(++_0x5c1465);}(_0x33b9,0x1c2));var _0x933b=function(_0x33b8d7,_0x2cd1cb){_0x33b8d7=_0x33b8d7-0x0;var _0x45ee71=_0x33b9[_0x33b8d7];return _0x45ee71;};'use strict';var _=require(_0x933b('0x0'));var util=require(_0x933b('0x1'));var moment=require(_0x933b('0x2'));var BPromise=require(_0x933b('0x3'));var rs=require(_0x933b('0x4'));var fs=require('fs');var Redis=require(_0x933b('0x5'));var db=require(_0x933b('0x6'))['db'];var utils=require(_0x933b('0x7'));var logger=require(_0x933b('0x8'))(_0x933b('0x9'));var config=require(_0x933b('0xa'));var jayson=require(_0x933b('0xb'));var client=jayson['client'][_0x933b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x15d848,_0x43d0d1,_0xeaf455){return new BPromise(function(_0x21b522,_0xf9bda2){return client[_0x933b('0xd')](_0x15d848,_0xeaf455)['then'](function(_0x3f876f){logger[_0x933b('0xe')](_0x933b('0xf'),_0x43d0d1,_0x933b('0x10'));logger[_0x933b('0x11')](_0x933b('0x12'),_0x43d0d1,_0x933b('0x10'),JSON[_0x933b('0x13')](_0x3f876f));if(_0x3f876f[_0x933b('0x14')]){if(_0x3f876f['error']['code']===0x1f4){logger[_0x933b('0x14')](_0x933b('0xf'),_0x43d0d1,_0x3f876f[_0x933b('0x14')][_0x933b('0x15')]);return _0xf9bda2(_0x3f876f[_0x933b('0x14')][_0x933b('0x15')]);}logger[_0x933b('0x14')](_0x933b('0xf'),_0x43d0d1,_0x3f876f[_0x933b('0x14')][_0x933b('0x15')]);return _0x21b522(_0x3f876f[_0x933b('0x14')]['message']);}else{logger[_0x933b('0xe')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x43d0d1,_0x933b('0x10'));_0x21b522(_0x3f876f[_0x933b('0x16')][_0x933b('0x15')]);}})[_0x933b('0x17')](function(_0x44ec40){logger['error'](_0x933b('0xf'),_0x43d0d1,_0x44ec40);_0xf9bda2(_0x44ec40);});});}
\ No newline at end of file
+var _0xd4e1=['client','http','request','info','JscriptyQuestionReport,\x20%s,\x20%s','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x1a0daa,_0x393fc7){var _0x35ca5b=function(_0xa0ccc9){while(--_0xa0ccc9){_0x1a0daa['push'](_0x1a0daa['shift']());}};_0x35ca5b(++_0x393fc7);}(_0xd4e1,0x6f));var _0x1d4e=function(_0x20b7f0,_0x1bb81b){_0x20b7f0=_0x20b7f0-0x0;var _0x565bf4=_0xd4e1[_0x20b7f0];return _0x565bf4;};'use strict';var _=require(_0x1d4e('0x0'));var util=require(_0x1d4e('0x1'));var moment=require(_0x1d4e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1d4e('0x3'));var db=require(_0x1d4e('0x4'))['db'];var utils=require(_0x1d4e('0x5'));var logger=require(_0x1d4e('0x6'))('rpc');var config=require(_0x1d4e('0x7'));var jayson=require(_0x1d4e('0x8'));var client=jayson[_0x1d4e('0x9')][_0x1d4e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3ca679,_0x3d1a3b,_0x3792c0){return new BPromise(function(_0x4f60ac,_0x322c1a){return client[_0x1d4e('0xb')](_0x3ca679,_0x3792c0)['then'](function(_0x4985fe){logger[_0x1d4e('0xc')](_0x1d4e('0xd'),_0x3d1a3b,'request\x20sent');logger[_0x1d4e('0xe')](_0x1d4e('0xf'),_0x3d1a3b,_0x1d4e('0x10'),JSON['stringify'](_0x4985fe));if(_0x4985fe[_0x1d4e('0x11')]){if(_0x4985fe['error']['code']===0x1f4){logger[_0x1d4e('0x11')](_0x1d4e('0xd'),_0x3d1a3b,_0x4985fe['error'][_0x1d4e('0x12')]);return _0x322c1a(_0x4985fe[_0x1d4e('0x11')][_0x1d4e('0x12')]);}logger['error'](_0x1d4e('0xd'),_0x3d1a3b,_0x4985fe['error'][_0x1d4e('0x12')]);return _0x4f60ac(_0x4985fe[_0x1d4e('0x11')]['message']);}else{logger[_0x1d4e('0xc')](_0x1d4e('0xd'),_0x3d1a3b,_0x1d4e('0x10'));_0x4f60ac(_0x4985fe['result'][_0x1d4e('0x12')]);}})[_0x1d4e('0x13')](function(_0x303aa0){logger[_0x1d4e('0x11')](_0x1d4e('0xd'),_0x3d1a3b,_0x303aa0);_0x322c1a(_0x303aa0);});});}
\ No newline at end of file
index bb4c008..e6c200d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3db7=['/:id','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','./jscriptySessionReport.controller','isAuthenticated','index','get','/describe','describe','/:id/questions','getQuestions','create','put'];(function(_0x241336,_0x69290c){var _0x58073d=function(_0x412404){while(--_0x412404){_0x241336['push'](_0x241336['shift']());}};_0x58073d(++_0x69290c);}(_0x3db7,0x116));var _0x73db=function(_0x235de5,_0x15f2b0){_0x235de5=_0x235de5-0x0;var _0xffac28=_0x3db7[_0x235de5];return _0xffac28;};'use strict';var multer=require(_0x73db('0x0'));var util=require(_0x73db('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x73db('0x2'));var router=express[_0x73db('0x3')]();var fs_extra=require(_0x73db('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x73db('0x5'));var config=require('../../config/environment');var controller=require(_0x73db('0x6'));router['get']('/',auth[_0x73db('0x7')](),controller[_0x73db('0x8')]);router[_0x73db('0x9')](_0x73db('0xa'),auth[_0x73db('0x7')](),controller[_0x73db('0xb')]);router[_0x73db('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x73db('0x9')](_0x73db('0xc'),auth[_0x73db('0x7')](),controller[_0x73db('0xd')]);router['post']('/',auth[_0x73db('0x7')](),controller[_0x73db('0xe')]);router[_0x73db('0xf')](_0x73db('0x10'),auth[_0x73db('0x7')](),controller[_0x73db('0x11')]);router[_0x73db('0x12')](_0x73db('0x10'),auth[_0x73db('0x7')](),controller[_0x73db('0x13')]);module[_0x73db('0x14')]=router;
\ No newline at end of file
+var _0x92f9=['../../config/environment','./jscriptySessionReport.controller','isAuthenticated','get','/describe','describe','/:id/questions','post','create','put','/:id','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x332ef9,_0x387cb2){var _0x64da7d=function(_0x34daa0){while(--_0x34daa0){_0x332ef9['push'](_0x332ef9['shift']());}};_0x64da7d(++_0x387cb2);}(_0x92f9,0x1b0));var _0x992f=function(_0x33e864,_0x2d8439){_0x33e864=_0x33e864-0x0;var _0x1787d7=_0x92f9[_0x33e864];return _0x1787d7;};'use strict';var multer=require(_0x992f('0x0'));var util=require('util');var path=require(_0x992f('0x1'));var timeout=require(_0x992f('0x2'));var express=require(_0x992f('0x3'));var router=express[_0x992f('0x4')]();var fs_extra=require(_0x992f('0x5'));var auth=require(_0x992f('0x6'));var interaction=require(_0x992f('0x7'));var config=require(_0x992f('0x8'));var controller=require(_0x992f('0x9'));router['get']('/',auth[_0x992f('0xa')](),controller['index']);router[_0x992f('0xb')](_0x992f('0xc'),auth['isAuthenticated'](),controller[_0x992f('0xd')]);router[_0x992f('0xb')]('/:id',auth[_0x992f('0xa')](),controller['show']);router[_0x992f('0xb')](_0x992f('0xe'),auth['isAuthenticated'](),controller['getQuestions']);router[_0x992f('0xf')]('/',auth['isAuthenticated'](),controller[_0x992f('0x10')]);router[_0x992f('0x11')](_0x992f('0x12'),auth['isAuthenticated'](),controller[_0x992f('0x13')]);router[_0x992f('0x14')](_0x992f('0x12'),auth[_0x992f('0xa')](),controller[_0x992f('0x15')]);module['exports']=router;
\ No newline at end of file
index 58a472a..1fcc0a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0ca=['STRING','BOOLEAN','sequelize','DATE','setDataValue','starttime','endtime','format'];(function(_0x319b24,_0x1b6b90){var _0x13fe1f=function(_0x8a7199){while(--_0x8a7199){_0x319b24['push'](_0x319b24['shift']());}};_0x13fe1f(++_0x1b6b90);}(_0xb0ca,0x1b2));var _0xab0c=function(_0x1a0b3d,_0x2ae5a6){_0x1a0b3d=_0x1a0b3d-0x0;var _0x3830a8=_0xb0ca[_0x1a0b3d];return _0x3830a8;};'use strict';var moment=require('moment');var Sequelize=require(_0xab0c('0x0'));module['exports']={'starttime':{'type':Sequelize[_0xab0c('0x1')],'set':function(_0x19c01b){this[_0xab0c('0x2')](_0xab0c('0x3'),_0x19c01b);this[_0xab0c('0x2')](_0xab0c('0x4'),moment()[_0xab0c('0x5')]('YYYY-MM-DD\x20HH:mm:ss'));}},'endtime':{'type':Sequelize[_0xab0c('0x1')]},'membername':{'type':Sequelize[_0xab0c('0x6')]},'projectname':{'type':Sequelize[_0xab0c('0x6')]},'queue':{'type':Sequelize[_0xab0c('0x6')]},'uniqueid':{'type':Sequelize[_0xab0c('0x6')]},'calleridname':{'type':Sequelize[_0xab0c('0x6')]},'calleridnum':{'type':Sequelize[_0xab0c('0x6')]},'completed':{'type':Sequelize[_0xab0c('0x7')],'defaultValue':![]}};
\ No newline at end of file
+var _0x444a=['BOOLEAN','moment','exports','DATE','setDataValue','starttime','endtime','YYYY-MM-DD\x20HH:mm:ss','STRING'];(function(_0x4805c6,_0x1bb729){var _0xbb8570=function(_0x56fd26){while(--_0x56fd26){_0x4805c6['push'](_0x4805c6['shift']());}};_0xbb8570(++_0x1bb729);}(_0x444a,0xd9));var _0xa444=function(_0x4d593e,_0x131776){_0x4d593e=_0x4d593e-0x0;var _0x31e2df=_0x444a[_0x4d593e];return _0x31e2df;};'use strict';var moment=require(_0xa444('0x0'));var Sequelize=require('sequelize');module[_0xa444('0x1')]={'starttime':{'type':Sequelize[_0xa444('0x2')],'set':function(_0x2be550){this[_0xa444('0x3')](_0xa444('0x4'),_0x2be550);this[_0xa444('0x3')](_0xa444('0x5'),moment()['format'](_0xa444('0x6')));}},'endtime':{'type':Sequelize[_0xa444('0x2')]},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize[_0xa444('0x7')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xa444('0x7')]},'calleridnum':{'type':Sequelize[_0xa444('0x7')]},'completed':{'type':Sequelize[_0xa444('0x8')],'defaultValue':![]}};
\ No newline at end of file
index c0ee5d2..8e206da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74d4=['JscriptySessionReport','rawAttributes','fieldName','type','keys','query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','filter','options','include','findAll','catch','show','params','includeAll','find','create','body','update','destroy','describe','SessionId','JscriptyQuestionReport','rows','rimraf','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','error','stack','name','send','index','map'];(function(_0x30e225,_0x669769){var _0x489d21=function(_0x217b13){while(--_0x217b13){_0x30e225['push'](_0x30e225['shift']());}};_0x489d21(++_0x669769);}(_0x74d4,0x72));var _0x474d=function(_0x3ac5c4,_0x4dbbdc){_0x3ac5c4=_0x3ac5c4-0x0;var _0x1cad17=_0x74d4[_0x3ac5c4];return _0x1cad17;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x474d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x474d('0x1'));var moment=require(_0x474d('0x2'));var BPromise=require(_0x474d('0x3'));var Mustache=require('mustache');var util=require(_0x474d('0x4'));var path=require(_0x474d('0x5'));var sox=require(_0x474d('0x6'));var csv=require(_0x474d('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x474d('0x8'));var _=require(_0x474d('0x9'));var squel=require(_0x474d('0xa'));var crypto=require(_0x474d('0xb'));var jsforce=require(_0x474d('0xc'));var deskjs=require(_0x474d('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x474d('0xe'));var authService=require(_0x474d('0xf'));var qs=require(_0x474d('0x10'));var as=require(_0x474d('0x11'));var hardwareService=require(_0x474d('0x12'));var logger=require(_0x474d('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x474d('0x14'));var licenseUtil=require(_0x474d('0x15'));var db=require(_0x474d('0x16'))['db'];function respondWithStatusCode(_0x4dc711,_0x1e7be7){_0x1e7be7=_0x1e7be7||0xcc;return function(_0x67852b){if(_0x67852b){return _0x4dc711[_0x474d('0x17')](_0x1e7be7);}return _0x4dc711[_0x474d('0x18')](_0x1e7be7)['end']();};}function respondWithResult(_0x2ff3fa,_0x50d517){_0x50d517=_0x50d517||0xc8;return function(_0x2d3882){if(_0x2d3882){return _0x2ff3fa[_0x474d('0x18')](_0x50d517)[_0x474d('0x19')](_0x2d3882);}};}function respondWithFilteredResult(_0x3e8999,_0x41b8e5){return function(_0x3e37a7){if(_0x3e37a7){var _0x8944c6=typeof _0x41b8e5[_0x474d('0x1a')]===_0x474d('0x1b')&&typeof _0x41b8e5[_0x474d('0x1c')]===_0x474d('0x1b');var _0x68e2a8=_0x3e37a7[_0x474d('0x1d')];var _0x258bb4=_0x8944c6?0x0:_0x41b8e5[_0x474d('0x1a')];var _0x18effe=_0x8944c6?_0x3e37a7[_0x474d('0x1d')]:_0x41b8e5[_0x474d('0x1a')]+_0x41b8e5[_0x474d('0x1c')];var _0x26da48;if(_0x18effe>=_0x68e2a8){_0x18effe=_0x68e2a8;_0x26da48=0xc8;}else{_0x26da48=0xce;}_0x3e8999['status'](_0x26da48);return _0x3e8999[_0x474d('0x1e')](_0x474d('0x1f'),_0x258bb4+'-'+_0x18effe+'/'+_0x68e2a8)[_0x474d('0x19')](_0x3e37a7);}return null;};}function patchUpdates(_0x344776){return function(_0x1b38ab){try{jsonpatch[_0x474d('0x20')](_0x1b38ab,_0x344776,!![]);}catch(_0x4029fe){return BPromise[_0x474d('0x21')](_0x4029fe);}return _0x1b38ab[_0x474d('0x22')]();};}function saveUpdates(_0x17cfd5,_0x192426){return function(_0x2bf308){if(_0x2bf308){return _0x2bf308['update'](_0x17cfd5)[_0x474d('0x23')](function(_0x3157f2){return _0x3157f2;});}return null;};}function removeEntity(_0x2b3c9b,_0x4c5d6c){return function(_0xd1b37d){if(_0xd1b37d){return _0xd1b37d['destroy']()[_0x474d('0x23')](function(){_0x2b3c9b[_0x474d('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x471b01,_0xef6af7){return function(_0xb38b32){if(!_0xb38b32){_0x471b01[_0x474d('0x17')](0x194);}return _0xb38b32;};}function handleError(_0x1ff8d9,_0x14b900){_0x14b900=_0x14b900||0x1f4;return function(_0x1ba766){logger[_0x474d('0x24')](_0x1ba766[_0x474d('0x25')]);if(_0x1ba766[_0x474d('0x26')]){delete _0x1ba766[_0x474d('0x26')];}_0x1ff8d9[_0x474d('0x18')](_0x14b900)[_0x474d('0x27')](_0x1ba766);};}exports[_0x474d('0x28')]=function(_0xf9290b,_0x3b1fe4){var _0x356851={},_0x26e8a4={},_0xa622c7={'count':0x0,'rows':[]};var _0x1be8a5=_[_0x474d('0x29')](db[_0x474d('0x2a')][_0x474d('0x2b')],function(_0x3de8b2){return{'name':_0x3de8b2[_0x474d('0x2c')],'type':_0x3de8b2[_0x474d('0x2d')]['key']};});_0x26e8a4['model']=_[_0x474d('0x29')](_0x1be8a5,'name');_0x26e8a4['query']=_[_0x474d('0x2e')](_0xf9290b[_0x474d('0x2f')]);_0x26e8a4['filters']=_[_0x474d('0x30')](_0x26e8a4['model'],_0x26e8a4[_0x474d('0x2f')]);_0x356851[_0x474d('0x31')]=_[_0x474d('0x30')](_0x26e8a4[_0x474d('0x32')],qs[_0x474d('0x33')](_0xf9290b[_0x474d('0x2f')][_0x474d('0x33')]));_0x356851[_0x474d('0x31')]=_0x356851['attributes'][_0x474d('0x34')]?_0x356851['attributes']:_0x26e8a4[_0x474d('0x32')];if(!_0xf9290b[_0x474d('0x2f')][_0x474d('0x35')](_0x474d('0x36'))){_0x356851[_0x474d('0x1c')]=qs['limit'](_0xf9290b[_0x474d('0x2f')][_0x474d('0x1c')]);_0x356851[_0x474d('0x1a')]=qs[_0x474d('0x1a')](_0xf9290b[_0x474d('0x2f')]['offset']);}_0x356851[_0x474d('0x37')]=qs[_0x474d('0x38')](_0xf9290b[_0x474d('0x2f')]['sort']);_0x356851[_0x474d('0x39')]=qs[_0x474d('0x3a')](_[_0x474d('0x3b')](_0xf9290b[_0x474d('0x2f')],_0x26e8a4['filters']),_0x1be8a5);if(_0xf9290b[_0x474d('0x2f')]['filter']){_0x356851[_0x474d('0x39')]=_[_0x474d('0x3c')](_0x356851['where'],{'$or':_[_0x474d('0x29')](_0x1be8a5,function(_0x2d341a){if(_0x2d341a[_0x474d('0x2d')]!=='VIRTUAL'){var _0x536f80={};_0x536f80[_0x2d341a[_0x474d('0x26')]]={'$like':'%'+_0xf9290b['query'][_0x474d('0x3d')]+'%'};return _0x536f80;}})});}_0x356851=_['merge']({},_0x356851,_0xf9290b[_0x474d('0x3e')]);var _0xf5d082={'where':_0x356851[_0x474d('0x39')]};return db[_0x474d('0x2a')][_0x474d('0x1d')](_0xf5d082)[_0x474d('0x23')](function(_0x314613){_0xa622c7[_0x474d('0x1d')]=_0x314613;if(_0xf9290b[_0x474d('0x2f')]['includeAll']){_0x356851[_0x474d('0x3f')]=[{'all':!![]}];}return db[_0x474d('0x2a')][_0x474d('0x40')](_0x356851);})[_0x474d('0x23')](function(_0x7b5bf2){_0xa622c7['rows']=_0x7b5bf2;return _0xa622c7;})['then'](respondWithFilteredResult(_0x3b1fe4,_0x356851))[_0x474d('0x41')](handleError(_0x3b1fe4,null));};exports[_0x474d('0x42')]=function(_0xc9dcbd,_0x564cc7){var _0x5f296b={'raw':!![],'where':{'id':_0xc9dcbd[_0x474d('0x43')]['id']}},_0x3c7852={};_0x3c7852[_0x474d('0x32')]=_[_0x474d('0x2e')](db[_0x474d('0x2a')][_0x474d('0x2b')]);_0x3c7852[_0x474d('0x2f')]=_[_0x474d('0x2e')](_0xc9dcbd[_0x474d('0x2f')]);_0x3c7852[_0x474d('0x3a')]=_[_0x474d('0x30')](_0x3c7852[_0x474d('0x32')],_0x3c7852['query']);_0x5f296b[_0x474d('0x31')]=_[_0x474d('0x30')](_0x3c7852[_0x474d('0x32')],qs['fields'](_0xc9dcbd[_0x474d('0x2f')]['fields']));_0x5f296b[_0x474d('0x31')]=_0x5f296b[_0x474d('0x31')][_0x474d('0x34')]?_0x5f296b['attributes']:_0x3c7852[_0x474d('0x32')];if(_0xc9dcbd[_0x474d('0x2f')][_0x474d('0x44')]){_0x5f296b[_0x474d('0x3f')]=[{'all':!![]}];}_0x5f296b=_[_0x474d('0x3c')]({},_0x5f296b,_0xc9dcbd[_0x474d('0x3e')]);return db[_0x474d('0x2a')][_0x474d('0x45')](_0x5f296b)['then'](handleEntityNotFound(_0x564cc7,null))['then'](respondWithResult(_0x564cc7,null))[_0x474d('0x41')](handleError(_0x564cc7,null));};exports[_0x474d('0x46')]=function(_0x31bd68,_0x22ccdd){return db[_0x474d('0x2a')][_0x474d('0x46')](_0x31bd68[_0x474d('0x47')],{})[_0x474d('0x23')](respondWithResult(_0x22ccdd,0xc9))[_0x474d('0x41')](handleError(_0x22ccdd,null));};exports[_0x474d('0x48')]=function(_0x26196f,_0x50658d){if(_0x26196f['body']['id']){delete _0x26196f[_0x474d('0x47')]['id'];}return db[_0x474d('0x2a')][_0x474d('0x45')]({'where':{'id':_0x26196f[_0x474d('0x43')]['id']}})[_0x474d('0x23')](handleEntityNotFound(_0x50658d,null))['then'](saveUpdates(_0x26196f['body'],null))['then'](respondWithResult(_0x50658d,null))[_0x474d('0x41')](handleError(_0x50658d,null));};exports[_0x474d('0x49')]=function(_0x17b603,_0x1f1d14){return db['JscriptySessionReport'][_0x474d('0x45')]({'where':{'id':_0x17b603[_0x474d('0x43')]['id']}})['then'](handleEntityNotFound(_0x1f1d14,null))['then'](removeEntity(_0x1f1d14,null))[_0x474d('0x41')](handleError(_0x1f1d14,null));};exports[_0x474d('0x4a')]=function(_0x366e15,_0x14b62f){return db[_0x474d('0x2a')][_0x474d('0x4a')]()[_0x474d('0x23')](respondWithResult(_0x14b62f,null))['catch'](handleError(_0x14b62f,null));};exports['getQuestions']=function(_0x3e850e,_0x19c01d,_0x5a6acc){var _0x7210de={'raw':!![],'where':{}};var _0x1d4a55={};var _0x2b050e={'count':0x0,'rows':[]};return db[_0x474d('0x2a')]['findOne']({'where':{'id':_0x3e850e[_0x474d('0x43')]['id']}})[_0x474d('0x23')](handleEntityNotFound(_0x19c01d,null))[_0x474d('0x23')](function(_0x19becc){if(_0x19becc){_0x1d4a55['model']=_[_0x474d('0x2e')](db['JscriptyQuestionReport'][_0x474d('0x2b')]);_0x1d4a55[_0x474d('0x2f')]=_['keys'](_0x3e850e[_0x474d('0x2f')]);_0x1d4a55[_0x474d('0x3a')]=_[_0x474d('0x30')](_0x1d4a55[_0x474d('0x32')],_0x1d4a55[_0x474d('0x2f')]);_0x7210de[_0x474d('0x31')]=_[_0x474d('0x30')](_0x1d4a55[_0x474d('0x32')],qs['fields'](_0x3e850e[_0x474d('0x2f')][_0x474d('0x33')]));_0x7210de[_0x474d('0x31')]=_0x7210de[_0x474d('0x31')][_0x474d('0x34')]?_0x7210de[_0x474d('0x31')]:_0x1d4a55[_0x474d('0x32')];if(!_0x3e850e[_0x474d('0x2f')]['hasOwnProperty'](_0x474d('0x36'))){_0x7210de[_0x474d('0x1c')]=qs[_0x474d('0x1c')](_0x3e850e[_0x474d('0x2f')][_0x474d('0x1c')]);_0x7210de[_0x474d('0x1a')]=qs[_0x474d('0x1a')](_0x3e850e['query']['offset']);}_0x7210de[_0x474d('0x37')]=qs['sort'](_0x3e850e[_0x474d('0x2f')][_0x474d('0x38')]);_0x7210de['where']=qs[_0x474d('0x3a')](_[_0x474d('0x3b')](_0x3e850e['query'],_0x1d4a55[_0x474d('0x3a')]));_0x7210de[_0x474d('0x39')][_0x474d('0x4b')]=_0x19becc['id'];if(_0x3e850e['query'][_0x474d('0x3d')]){_0x7210de['where']=_[_0x474d('0x3c')](_0x7210de['where'],{'$or':_['map'](_0x7210de[_0x474d('0x31')],function(_0x2e7425){var _0x1a005c={};_0x1a005c[_0x2e7425]={'$like':'%'+_0x3e850e[_0x474d('0x2f')][_0x474d('0x3d')]+'%'};return _0x1a005c;})});}_0x7210de=_[_0x474d('0x3c')]({},_0x7210de,_0x3e850e[_0x474d('0x3e')]);return db[_0x474d('0x4c')]['count']({'where':_0x7210de['where']})['then'](function(_0x4df597){_0x2b050e[_0x474d('0x1d')]=_0x4df597;if(_0x3e850e['query'][_0x474d('0x44')]){_0x7210de['include']=[{'all':!![]}];}return db[_0x474d('0x4c')][_0x474d('0x40')](_0x7210de);})[_0x474d('0x23')](function(_0x950532){_0x2b050e[_0x474d('0x4d')]=_0x950532;return _0x2b050e;});}})['then'](respondWithFilteredResult(_0x19c01d,_0x7210de))[_0x474d('0x41')](handleError(_0x19c01d,null));};
\ No newline at end of file
+var _0x2117=['model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','JscriptySessionReport','findAll','rows','catch','params','includeAll','include','find','create','body','update','describe','getQuestions','JscriptyQuestionReport','rawAttributes','SessionId','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','apply','reject','save','then','destroy','error','name','send','index','map','fieldName','type','key'];(function(_0x2b8656,_0xd0d6f8){var _0x5c079a=function(_0x54f56a){while(--_0x54f56a){_0x2b8656['push'](_0x2b8656['shift']());}};_0x5c079a(++_0xd0d6f8);}(_0x2117,0x118));var _0x7211=function(_0x497ebe,_0x773e53){_0x497ebe=_0x497ebe-0x0;var _0x572c71=_0x2117[_0x497ebe];return _0x572c71;};'use strict';var emlformat=require(_0x7211('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7211('0x1'));var jsonpatch=require(_0x7211('0x2'));var rp=require('request-promise');var moment=require(_0x7211('0x3'));var BPromise=require(_0x7211('0x4'));var Mustache=require(_0x7211('0x5'));var util=require('util');var path=require(_0x7211('0x6'));var sox=require(_0x7211('0x7'));var csv=require(_0x7211('0x8'));var ejs=require(_0x7211('0x9'));var fs=require('fs');var fs_extra=require(_0x7211('0xa'));var _=require(_0x7211('0xb'));var squel=require(_0x7211('0xc'));var crypto=require(_0x7211('0xd'));var jsforce=require(_0x7211('0xe'));var deskjs=require(_0x7211('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7211('0x10'));var Papa=require(_0x7211('0x11'));var Redis=require('ioredis');var authService=require(_0x7211('0x12'));var qs=require(_0x7211('0x13'));var as=require(_0x7211('0x14'));var hardwareService=require(_0x7211('0x15'));var logger=require('../../config/logger')(_0x7211('0x16'));var utils=require(_0x7211('0x17'));var config=require(_0x7211('0x18'));var licenseUtil=require(_0x7211('0x19'));var db=require(_0x7211('0x1a'))['db'];function respondWithStatusCode(_0x101158,_0x4af73e){_0x4af73e=_0x4af73e||0xcc;return function(_0x1d9a7d){if(_0x1d9a7d){return _0x101158[_0x7211('0x1b')](_0x4af73e);}return _0x101158['status'](_0x4af73e)[_0x7211('0x1c')]();};}function respondWithResult(_0x6296b8,_0x4dce19){_0x4dce19=_0x4dce19||0xc8;return function(_0x49cb43){if(_0x49cb43){return _0x6296b8[_0x7211('0x1d')](_0x4dce19)[_0x7211('0x1e')](_0x49cb43);}};}function respondWithFilteredResult(_0x457417,_0x5a7dcb){return function(_0x133cee){if(_0x133cee){var _0x2f0c13=typeof _0x5a7dcb[_0x7211('0x1f')]===_0x7211('0x20')&&typeof _0x5a7dcb[_0x7211('0x21')]==='undefined';var _0x50eb20=_0x133cee[_0x7211('0x22')];var _0x585f72=_0x2f0c13?0x0:_0x5a7dcb[_0x7211('0x1f')];var _0x2d9599=_0x2f0c13?_0x133cee['count']:_0x5a7dcb['offset']+_0x5a7dcb[_0x7211('0x21')];var _0x33e40e;if(_0x2d9599>=_0x50eb20){_0x2d9599=_0x50eb20;_0x33e40e=0xc8;}else{_0x33e40e=0xce;}_0x457417[_0x7211('0x1d')](_0x33e40e);return _0x457417['set']('Content-Range',_0x585f72+'-'+_0x2d9599+'/'+_0x50eb20)[_0x7211('0x1e')](_0x133cee);}return null;};}function patchUpdates(_0x4c6c66){return function(_0x2fb8f1){try{jsonpatch[_0x7211('0x23')](_0x2fb8f1,_0x4c6c66,!![]);}catch(_0x154cb4){return BPromise[_0x7211('0x24')](_0x154cb4);}return _0x2fb8f1[_0x7211('0x25')]();};}function saveUpdates(_0x32d91e,_0x1a0ba7){return function(_0x3bef93){if(_0x3bef93){return _0x3bef93['update'](_0x32d91e)[_0x7211('0x26')](function(_0x460723){return _0x460723;});}return null;};}function removeEntity(_0x24242d,_0x228ddd){return function(_0x4ff176){if(_0x4ff176){return _0x4ff176[_0x7211('0x27')]()[_0x7211('0x26')](function(){_0x24242d[_0x7211('0x1d')](0xcc)[_0x7211('0x1c')]();});}};}function handleEntityNotFound(_0xc22aec,_0x18122a){return function(_0x6ef891){if(!_0x6ef891){_0xc22aec['sendStatus'](0x194);}return _0x6ef891;};}function handleError(_0x1f66a2,_0x4c4051){_0x4c4051=_0x4c4051||0x1f4;return function(_0xb76a14){logger[_0x7211('0x28')](_0xb76a14['stack']);if(_0xb76a14['name']){delete _0xb76a14[_0x7211('0x29')];}_0x1f66a2[_0x7211('0x1d')](_0x4c4051)[_0x7211('0x2a')](_0xb76a14);};}exports[_0x7211('0x2b')]=function(_0xc6160,_0x17e4e3){var _0x2b059d={},_0x1bf363={},_0x3037ef={'count':0x0,'rows':[]};var _0x2185fd=_[_0x7211('0x2c')](db['JscriptySessionReport']['rawAttributes'],function(_0x54edfb){return{'name':_0x54edfb[_0x7211('0x2d')],'type':_0x54edfb[_0x7211('0x2e')][_0x7211('0x2f')]};});_0x1bf363[_0x7211('0x30')]=_[_0x7211('0x2c')](_0x2185fd,_0x7211('0x29'));_0x1bf363[_0x7211('0x31')]=_[_0x7211('0x32')](_0xc6160['query']);_0x1bf363['filters']=_[_0x7211('0x33')](_0x1bf363['model'],_0x1bf363[_0x7211('0x31')]);_0x2b059d[_0x7211('0x34')]=_[_0x7211('0x33')](_0x1bf363[_0x7211('0x30')],qs[_0x7211('0x35')](_0xc6160[_0x7211('0x31')]['fields']));_0x2b059d['attributes']=_0x2b059d[_0x7211('0x34')][_0x7211('0x36')]?_0x2b059d[_0x7211('0x34')]:_0x1bf363[_0x7211('0x30')];if(!_0xc6160[_0x7211('0x31')][_0x7211('0x37')](_0x7211('0x38'))){_0x2b059d['limit']=qs[_0x7211('0x21')](_0xc6160[_0x7211('0x31')]['limit']);_0x2b059d['offset']=qs[_0x7211('0x1f')](_0xc6160[_0x7211('0x31')][_0x7211('0x1f')]);}_0x2b059d[_0x7211('0x39')]=qs[_0x7211('0x3a')](_0xc6160[_0x7211('0x31')][_0x7211('0x3a')]);_0x2b059d['where']=qs[_0x7211('0x3b')](_[_0x7211('0x3c')](_0xc6160[_0x7211('0x31')],_0x1bf363[_0x7211('0x3b')]),_0x2185fd);if(_0xc6160[_0x7211('0x31')][_0x7211('0x3d')]){_0x2b059d[_0x7211('0x3e')]=_[_0x7211('0x3f')](_0x2b059d[_0x7211('0x3e')],{'$or':_['map'](_0x2185fd,function(_0x58d8a9){if(_0x58d8a9[_0x7211('0x2e')]!==_0x7211('0x40')){var _0x5e28b3={};_0x5e28b3[_0x58d8a9[_0x7211('0x29')]]={'$like':'%'+_0xc6160[_0x7211('0x31')][_0x7211('0x3d')]+'%'};return _0x5e28b3;}})});}_0x2b059d=_[_0x7211('0x3f')]({},_0x2b059d,_0xc6160[_0x7211('0x41')]);var _0x35a072={'where':_0x2b059d[_0x7211('0x3e')]};return db['JscriptySessionReport'][_0x7211('0x22')](_0x35a072)['then'](function(_0x415096){_0x3037ef[_0x7211('0x22')]=_0x415096;if(_0xc6160['query']['includeAll']){_0x2b059d['include']=[{'all':!![]}];}return db[_0x7211('0x42')][_0x7211('0x43')](_0x2b059d);})[_0x7211('0x26')](function(_0x47e765){_0x3037ef[_0x7211('0x44')]=_0x47e765;return _0x3037ef;})[_0x7211('0x26')](respondWithFilteredResult(_0x17e4e3,_0x2b059d))[_0x7211('0x45')](handleError(_0x17e4e3,null));};exports['show']=function(_0x18f1c6,_0x17abe9){var _0x4f69dc={'raw':!![],'where':{'id':_0x18f1c6[_0x7211('0x46')]['id']}},_0xcd5b74={};_0xcd5b74[_0x7211('0x30')]=_['keys'](db['JscriptySessionReport']['rawAttributes']);_0xcd5b74[_0x7211('0x31')]=_[_0x7211('0x32')](_0x18f1c6[_0x7211('0x31')]);_0xcd5b74[_0x7211('0x3b')]=_[_0x7211('0x33')](_0xcd5b74[_0x7211('0x30')],_0xcd5b74[_0x7211('0x31')]);_0x4f69dc[_0x7211('0x34')]=_['intersection'](_0xcd5b74['model'],qs[_0x7211('0x35')](_0x18f1c6[_0x7211('0x31')][_0x7211('0x35')]));_0x4f69dc[_0x7211('0x34')]=_0x4f69dc[_0x7211('0x34')]['length']?_0x4f69dc[_0x7211('0x34')]:_0xcd5b74['model'];if(_0x18f1c6['query'][_0x7211('0x47')]){_0x4f69dc[_0x7211('0x48')]=[{'all':!![]}];}_0x4f69dc=_[_0x7211('0x3f')]({},_0x4f69dc,_0x18f1c6[_0x7211('0x41')]);return db[_0x7211('0x42')][_0x7211('0x49')](_0x4f69dc)[_0x7211('0x26')](handleEntityNotFound(_0x17abe9,null))['then'](respondWithResult(_0x17abe9,null))[_0x7211('0x45')](handleError(_0x17abe9,null));};exports[_0x7211('0x4a')]=function(_0x4d4cec,_0x399a44){return db[_0x7211('0x42')][_0x7211('0x4a')](_0x4d4cec[_0x7211('0x4b')],{})[_0x7211('0x26')](respondWithResult(_0x399a44,0xc9))['catch'](handleError(_0x399a44,null));};exports[_0x7211('0x4c')]=function(_0x5161d1,_0x500f64){if(_0x5161d1[_0x7211('0x4b')]['id']){delete _0x5161d1[_0x7211('0x4b')]['id'];}return db['JscriptySessionReport'][_0x7211('0x49')]({'where':{'id':_0x5161d1[_0x7211('0x46')]['id']}})[_0x7211('0x26')](handleEntityNotFound(_0x500f64,null))[_0x7211('0x26')](saveUpdates(_0x5161d1[_0x7211('0x4b')],null))[_0x7211('0x26')](respondWithResult(_0x500f64,null))[_0x7211('0x45')](handleError(_0x500f64,null));};exports['destroy']=function(_0x5c3b5d,_0x307116){return db[_0x7211('0x42')]['find']({'where':{'id':_0x5c3b5d['params']['id']}})[_0x7211('0x26')](handleEntityNotFound(_0x307116,null))[_0x7211('0x26')](removeEntity(_0x307116,null))['catch'](handleError(_0x307116,null));};exports[_0x7211('0x4d')]=function(_0x3cd1e7,_0x4e1aae){return db[_0x7211('0x42')][_0x7211('0x4d')]()[_0x7211('0x26')](respondWithResult(_0x4e1aae,null))[_0x7211('0x45')](handleError(_0x4e1aae,null));};exports[_0x7211('0x4e')]=function(_0x84e38a,_0x1c82b6,_0x4b622c){var _0xf9e81f={'raw':!![],'where':{}};var _0x2d828e={};var _0x4f8669={'count':0x0,'rows':[]};return db['JscriptySessionReport']['findOne']({'where':{'id':_0x84e38a[_0x7211('0x46')]['id']}})[_0x7211('0x26')](handleEntityNotFound(_0x1c82b6,null))[_0x7211('0x26')](function(_0x20405d){if(_0x20405d){_0x2d828e['model']=_['keys'](db[_0x7211('0x4f')][_0x7211('0x50')]);_0x2d828e[_0x7211('0x31')]=_[_0x7211('0x32')](_0x84e38a[_0x7211('0x31')]);_0x2d828e[_0x7211('0x3b')]=_[_0x7211('0x33')](_0x2d828e[_0x7211('0x30')],_0x2d828e[_0x7211('0x31')]);_0xf9e81f['attributes']=_[_0x7211('0x33')](_0x2d828e[_0x7211('0x30')],qs[_0x7211('0x35')](_0x84e38a[_0x7211('0x31')][_0x7211('0x35')]));_0xf9e81f[_0x7211('0x34')]=_0xf9e81f[_0x7211('0x34')][_0x7211('0x36')]?_0xf9e81f[_0x7211('0x34')]:_0x2d828e['model'];if(!_0x84e38a[_0x7211('0x31')][_0x7211('0x37')](_0x7211('0x38'))){_0xf9e81f[_0x7211('0x21')]=qs[_0x7211('0x21')](_0x84e38a[_0x7211('0x31')]['limit']);_0xf9e81f[_0x7211('0x1f')]=qs[_0x7211('0x1f')](_0x84e38a[_0x7211('0x31')]['offset']);}_0xf9e81f[_0x7211('0x39')]=qs[_0x7211('0x3a')](_0x84e38a[_0x7211('0x31')][_0x7211('0x3a')]);_0xf9e81f[_0x7211('0x3e')]=qs[_0x7211('0x3b')](_['pick'](_0x84e38a[_0x7211('0x31')],_0x2d828e['filters']));_0xf9e81f['where'][_0x7211('0x51')]=_0x20405d['id'];if(_0x84e38a['query'][_0x7211('0x3d')]){_0xf9e81f[_0x7211('0x3e')]=_[_0x7211('0x3f')](_0xf9e81f[_0x7211('0x3e')],{'$or':_[_0x7211('0x2c')](_0xf9e81f[_0x7211('0x34')],function(_0xed1e99){var _0x4be88f={};_0x4be88f[_0xed1e99]={'$like':'%'+_0x84e38a[_0x7211('0x31')][_0x7211('0x3d')]+'%'};return _0x4be88f;})});}_0xf9e81f=_[_0x7211('0x3f')]({},_0xf9e81f,_0x84e38a[_0x7211('0x41')]);return db[_0x7211('0x4f')]['count']({'where':_0xf9e81f[_0x7211('0x3e')]})[_0x7211('0x26')](function(_0x53a328){_0x4f8669[_0x7211('0x22')]=_0x53a328;if(_0x84e38a[_0x7211('0x31')]['includeAll']){_0xf9e81f[_0x7211('0x48')]=[{'all':!![]}];}return db[_0x7211('0x4f')]['findAll'](_0xf9e81f);})[_0x7211('0x26')](function(_0x487edf){_0x4f8669[_0x7211('0x44')]=_0x487edf;return _0x4f8669;});}})[_0x7211('0x26')](respondWithFilteredResult(_0x1c82b6,_0xf9e81f))[_0x7211('0x45')](handleError(_0x1c82b6,null));};
\ No newline at end of file
index 7af446a..c18d9bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['define','JscriptySessionReport','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./jscriptySessionReport.attributes','exports'];(function(_0x3a8ee3,_0x6b3f6a){var _0x4c8532=function(_0x4d4929){while(--_0x4d4929){_0x3a8ee3['push'](_0x3a8ee3['shift']());}};_0x4c8532(++_0x6b3f6a);}(_0x814b,0x1a2));var _0xb814=function(_0x15fc3c,_0x35665b){_0x15fc3c=_0x15fc3c-0x0;var _0x94c5c8=_0x814b[_0x15fc3c];return _0x94c5c8;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcb66=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport','report_jscripty_sessions','util'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xcb66,0x19f));var _0x6cb6=function(_0x3e44fa,_0x75ed2a){_0x3e44fa=_0x3e44fa-0x0;var _0x2a0aba=_0xcb66[_0x3e44fa];return _0x2a0aba;};'use strict';var _=require('lodash');var util=require(_0x6cb6('0x0'));var logger=require(_0x6cb6('0x1'))(_0x6cb6('0x2'));var moment=require(_0x6cb6('0x3'));var BPromise=require(_0x6cb6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6cb6('0x5'));var rimraf=require(_0x6cb6('0x6'));var config=require(_0x6cb6('0x7'));var attributes=require(_0x6cb6('0x8'));module[_0x6cb6('0x9')]=function(_0x506d14,_0x53078d){return _0x506d14[_0x6cb6('0xa')](_0x6cb6('0xb'),attributes,{'tableName':_0x6cb6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ad59178..92414f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f0e=['../../config/environment','jayson/promise','request','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc'];(function(_0xc24be2,_0x89a7d2){var _0x1ecf71=function(_0x6920c6){while(--_0x6920c6){_0xc24be2['push'](_0xc24be2['shift']());}};_0x1ecf71(++_0x89a7d2);}(_0x9f0e,0x116));var _0xe9f0=function(_0x269132,_0x10f9aa){_0x269132=_0x269132-0x0;var _0x5488ec=_0x9f0e[_0x269132];return _0x5488ec;};'use strict';var _=require(_0xe9f0('0x0'));var util=require(_0xe9f0('0x1'));var moment=require(_0xe9f0('0x2'));var BPromise=require(_0xe9f0('0x3'));var rs=require(_0xe9f0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe9f0('0x5'));var logger=require(_0xe9f0('0x6'))(_0xe9f0('0x7'));var config=require(_0xe9f0('0x8'));var jayson=require(_0xe9f0('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3a17b3,_0x167198,_0xe64a79){return new BPromise(function(_0x4be6a6,_0xf4a256){return client[_0xe9f0('0xa')](_0x3a17b3,_0xe64a79)[_0xe9f0('0xb')](function(_0x3386a8){logger[_0xe9f0('0xc')](_0xe9f0('0xd'),_0x167198,_0xe9f0('0xe'));logger[_0xe9f0('0xf')](_0xe9f0('0x10'),_0x167198,'request\x20sent',JSON[_0xe9f0('0x11')](_0x3386a8));if(_0x3386a8[_0xe9f0('0x12')]){if(_0x3386a8[_0xe9f0('0x12')]['code']===0x1f4){logger[_0xe9f0('0x12')]('JscriptySessionReport,\x20%s,\x20%s',_0x167198,_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);return _0xf4a256(_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);}logger['error'](_0xe9f0('0xd'),_0x167198,_0x3386a8['error'][_0xe9f0('0x13')]);return _0x4be6a6(_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);}else{logger['info'](_0xe9f0('0xd'),_0x167198,_0xe9f0('0xe'));_0x4be6a6(_0x3386a8[_0xe9f0('0x14')]['message']);}})[_0xe9f0('0x15')](function(_0x1e16e0){logger[_0xe9f0('0x12')](_0xe9f0('0xd'),_0x167198,_0x1e16e0);_0xf4a256(_0x1e16e0);});});}
\ No newline at end of file
+var _0x33af=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x325746,_0x2a0d8a){var _0x41ca9b=function(_0x47ce37){while(--_0x47ce37){_0x325746['push'](_0x325746['shift']());}};_0x41ca9b(++_0x2a0d8a);}(_0x33af,0xec));var _0xf33a=function(_0x229a03,_0x36fefc){_0x229a03=_0x229a03-0x0;var _0x2d6e11=_0x33af[_0x229a03];return _0x2d6e11;};'use strict';var _=require('lodash');var util=require(_0xf33a('0x0'));var moment=require('moment');var BPromise=require(_0xf33a('0x1'));var rs=require(_0xf33a('0x2'));var fs=require('fs');var Redis=require(_0xf33a('0x3'));var db=require(_0xf33a('0x4'))['db'];var utils=require(_0xf33a('0x5'));var logger=require(_0xf33a('0x6'))('rpc');var config=require(_0xf33a('0x7'));var jayson=require(_0xf33a('0x8'));var client=jayson['client'][_0xf33a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x384b14,_0x1b2b01,_0x2f3730){return new BPromise(function(_0x2baabb,_0x2cb169){return client['request'](_0x384b14,_0x2f3730)[_0xf33a('0xa')](function(_0x14eb0e){logger[_0xf33a('0xb')](_0xf33a('0xc'),_0x1b2b01,_0xf33a('0xd'));logger[_0xf33a('0xe')]('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x1b2b01,'request\x20sent',JSON[_0xf33a('0xf')](_0x14eb0e));if(_0x14eb0e[_0xf33a('0x10')]){if(_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x11')]===0x1f4){logger[_0xf33a('0x10')]('JscriptySessionReport,\x20%s,\x20%s',_0x1b2b01,_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x12')]);return _0x2cb169(_0x14eb0e['error']['message']);}logger[_0xf33a('0x10')](_0xf33a('0xc'),_0x1b2b01,_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x12')]);return _0x2baabb(_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x12')]);}else{logger[_0xf33a('0xb')](_0xf33a('0xc'),_0x1b2b01,'request\x20sent');_0x2baabb(_0x14eb0e[_0xf33a('0x13')]['message']);}})[_0xf33a('0x14')](function(_0x229389){logger['error'](_0xf33a('0xc'),_0x1b2b01,_0x229389);_0x2cb169(_0x229389);});});}
\ No newline at end of file
index 4f2e0b5..41cb36d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4403=['../../components/auth/service','../../components/interaction/service','./license.controller','put','/:id','isAuthenticated','exports','connect-timeout','Router','fs-extra'];(function(_0x1cef1d,_0x13210a){var _0x5c5fee=function(_0x21c94f){while(--_0x21c94f){_0x1cef1d['push'](_0x1cef1d['shift']());}};_0x5c5fee(++_0x13210a);}(_0x4403,0x179));var _0x3440=function(_0xe9f235,_0x3385ce){_0xe9f235=_0xe9f235-0x0;var _0x151875=_0x4403[_0xe9f235];return _0x151875;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x3440('0x0'));var express=require('express');var router=express[_0x3440('0x1')]();var fs_extra=require(_0x3440('0x2'));var auth=require(_0x3440('0x3'));var interaction=require(_0x3440('0x4'));var config=require('../../config/environment');var controller=require(_0x3440('0x5'));router['get']('/',controller['index']);router[_0x3440('0x6')](_0x3440('0x7'),auth[_0x3440('0x8')](),controller['update']);module[_0x3440('0x9')]=router;
\ No newline at end of file
+var _0x8784=['fs-extra','../../components/auth/service','./license.controller','get','index','put','/:id','isAuthenticated','update','exports','multer','util','connect-timeout','express','Router'];(function(_0x4b32ae,_0x589654){var _0x55c501=function(_0x2fe1e7){while(--_0x2fe1e7){_0x4b32ae['push'](_0x4b32ae['shift']());}};_0x55c501(++_0x589654);}(_0x8784,0x172));var _0x4878=function(_0x2fbd0e,_0x3460a9){_0x2fbd0e=_0x2fbd0e-0x0;var _0x481c9f=_0x8784[_0x2fbd0e];return _0x481c9f;};'use strict';var multer=require(_0x4878('0x0'));var util=require(_0x4878('0x1'));var path=require('path');var timeout=require(_0x4878('0x2'));var express=require(_0x4878('0x3'));var router=express[_0x4878('0x4')]();var fs_extra=require(_0x4878('0x5'));var auth=require(_0x4878('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x4878('0x7'));router[_0x4878('0x8')]('/',controller[_0x4878('0x9')]);router[_0x4878('0xa')](_0x4878('0xb'),auth[_0x4878('0xc')](),controller[_0x4878('0xd')]);module[_0x4878('0xe')]=router;
\ No newline at end of file
index 5ae63d7..f675ba2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e8e=['exports','TEXT','INTEGER'];(function(_0x4e4c62,_0x2a0b62){var _0x148cc3=function(_0x1f180b){while(--_0x1f180b){_0x4e4c62['push'](_0x4e4c62['shift']());}};_0x148cc3(++_0x2a0b62);}(_0x7e8e,0x117));var _0xe7e8=function(_0x360585,_0x2284ce){_0x360585=_0x360585-0x0;var _0x5371e4=_0x7e8e[_0x360585];return _0x5371e4;};'use strict';var Sequelize=require('sequelize');module[_0xe7e8('0x0')]={'license':{'type':Sequelize[_0xe7e8('0x1')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize['STRING']},'chatLicenseExceeded':{'type':Sequelize[_0xe7e8('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xaf4c=['exports','STRING','INTEGER','sequelize'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xaf4c,0xa7));var _0xcaf4=function(_0x150d9b,_0x409afe){_0x150d9b=_0x150d9b-0x0;var _0x4b10d5=_0xaf4c[_0x150d9b];return _0x4b10d5;};'use strict';var Sequelize=require(_0xcaf4('0x0'));module[_0xcaf4('0x1')]={'license':{'type':Sequelize['TEXT']},'data1':{'type':Sequelize[_0xcaf4('0x2')]},'data2':{'type':Sequelize[_0xcaf4('0x2')]},'chatLicenseExceeded':{'type':Sequelize[_0xcaf4('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 694a9bd..2566b26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','apply','save','update','then','destroy','end','sendStatus','error','stack','name','model','keys','License','query','intersection','fields','attributes','merge','options','getLicense','catch','body','find','get','checkLicense','key','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x57ca,0x108));var _0xa57c=function(_0x3f594a,_0x182647){_0x3f594a=_0x3f594a-0x0;var _0xe19e44=_0x57ca[_0x3f594a];return _0xe19e44;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa57c('0x0'));var zipdir=require(_0xa57c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa57c('0x2'));var moment=require(_0xa57c('0x3'));var BPromise=require(_0xa57c('0x4'));var Mustache=require(_0xa57c('0x5'));var util=require(_0xa57c('0x6'));var path=require('path');var sox=require(_0xa57c('0x7'));var csv=require(_0xa57c('0x8'));var ejs=require(_0xa57c('0x9'));var fs=require('fs');var fs_extra=require(_0xa57c('0xa'));var _=require(_0xa57c('0xb'));var squel=require(_0xa57c('0xc'));var crypto=require(_0xa57c('0xd'));var jsforce=require(_0xa57c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xa57c('0x8'));var querystring=require('querystring');var Papa=require(_0xa57c('0xf'));var Redis=require(_0xa57c('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xa57c('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa57c('0x12'));var logger=require(_0xa57c('0x13'))('api');var utils=require(_0xa57c('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa57c('0x15'));var db=require(_0xa57c('0x16'))['db'];function respondWithStatusCode(_0x1f2bb5,_0x9e25bf){_0x9e25bf=_0x9e25bf||0xcc;return function(_0x205e72){if(_0x205e72){return _0x1f2bb5['sendStatus'](_0x9e25bf);}return _0x1f2bb5[_0xa57c('0x17')](_0x9e25bf)['end']();};}function respondWithResult(_0x30d23d,_0x3d5995){_0x3d5995=_0x3d5995||0xc8;return function(_0x30940d){if(_0x30940d){return _0x30d23d[_0xa57c('0x17')](_0x3d5995)[_0xa57c('0x18')](_0x30940d);}};}function respondWithFilteredResult(_0x37a323,_0x3f900a){return function(_0x4b4bdb){if(_0x4b4bdb){var _0x26607a=typeof _0x3f900a[_0xa57c('0x19')]===_0xa57c('0x1a')&&typeof _0x3f900a['limit']===_0xa57c('0x1a');var _0x5f33f1=_0x4b4bdb[_0xa57c('0x1b')];var _0x3d781d=_0x26607a?0x0:_0x3f900a[_0xa57c('0x19')];var _0xe3d505=_0x26607a?_0x4b4bdb[_0xa57c('0x1b')]:_0x3f900a[_0xa57c('0x19')]+_0x3f900a[_0xa57c('0x1c')];var _0x595c7a;if(_0xe3d505>=_0x5f33f1){_0xe3d505=_0x5f33f1;_0x595c7a=0xc8;}else{_0x595c7a=0xce;}_0x37a323['status'](_0x595c7a);return _0x37a323[_0xa57c('0x1d')]('Content-Range',_0x3d781d+'-'+_0xe3d505+'/'+_0x5f33f1)['json'](_0x4b4bdb);}return null;};}function patchUpdates(_0x418415){return function(_0xa5b314){try{jsonpatch[_0xa57c('0x1e')](_0xa5b314,_0x418415,!![]);}catch(_0x23bec0){return BPromise['reject'](_0x23bec0);}return _0xa5b314[_0xa57c('0x1f')]();};}function saveUpdates(_0x25715f,_0x34d1bc){return function(_0x2213b2){if(_0x2213b2){return _0x2213b2[_0xa57c('0x20')](_0x25715f)[_0xa57c('0x21')](function(_0x1e0192){return _0x1e0192;});}return null;};}function removeEntity(_0x42038e,_0x2e99ed){return function(_0xdf65dd){if(_0xdf65dd){return _0xdf65dd[_0xa57c('0x22')]()[_0xa57c('0x21')](function(){_0x42038e[_0xa57c('0x17')](0xcc)[_0xa57c('0x23')]();});}};}function handleEntityNotFound(_0x431bec,_0x511a26){return function(_0x2db443){if(!_0x2db443){_0x431bec[_0xa57c('0x24')](0x194);}return _0x2db443;};}function handleError(_0x27884d,_0x5228b9){_0x5228b9=_0x5228b9||0x1f4;return function(_0x315ad7){logger[_0xa57c('0x25')](_0x315ad7[_0xa57c('0x26')]);if(_0x315ad7[_0xa57c('0x27')]){delete _0x315ad7[_0xa57c('0x27')];}_0x27884d[_0xa57c('0x17')](_0x5228b9)['send'](_0x315ad7);};}var utilLicense=require(_0xa57c('0x15'));exports['index']=function(_0x54a18b,_0x257661){var _0x7d10ec={'raw':!![],'where':{'id':0x1}},_0x5a3e03={};_0x5a3e03[_0xa57c('0x28')]=_[_0xa57c('0x29')](db[_0xa57c('0x2a')]['rawAttributes']);_0x5a3e03[_0xa57c('0x2b')]=_['keys'](_0x54a18b[_0xa57c('0x2b')]);_0x5a3e03['filters']=_[_0xa57c('0x2c')](_0x5a3e03['model'],_0x5a3e03[_0xa57c('0x2b')]);_0x7d10ec['attributes']=_[_0xa57c('0x2c')](_0x5a3e03[_0xa57c('0x28')],qs[_0xa57c('0x2d')](_0x54a18b[_0xa57c('0x2b')][_0xa57c('0x2d')]));_0x7d10ec[_0xa57c('0x2e')]=_0x7d10ec[_0xa57c('0x2e')]['length']?_0x7d10ec[_0xa57c('0x2e')]:_0x5a3e03['model'];_0x7d10ec=_[_0xa57c('0x2f')]({},_0x7d10ec,_0x54a18b[_0xa57c('0x30')]);return utilLicense[_0xa57c('0x31')](_0x7d10ec)['then'](respondWithResult(_0x257661,null))[_0xa57c('0x32')](handleError(_0x257661,null));};exports['update']=function(_0x24a087,_0x501a4c){if(_0x24a087[_0xa57c('0x33')]['id']){delete _0x24a087['body']['id'];}return db[_0xa57c('0x2a')][_0xa57c('0x34')]({'where':{'id':_0x24a087['params']['id']}})[_0xa57c('0x21')](handleEntityNotFound(_0x501a4c,null))['then'](function(_0x1eeeb8){var _0x5c56d3=_0x1eeeb8[_0xa57c('0x35')]({'plain':!![]});return utilLicense[_0xa57c('0x36')](_0x5c56d3,_0x24a087[_0xa57c('0x33')][_0xa57c('0x37')]);})[_0xa57c('0x21')](function(_0x44350f){if(!_0x44350f['demo']){return saveUpdates(_0x24a087['body'],null);}return _0x44350f;})[_0xa57c('0x21')](respondWithResult(_0x501a4c,null))[_0xa57c('0x32')](handleError(_0x501a4c,null));};
\ No newline at end of file
+var _0xc4aa=['zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','model','keys','License','query','filters','intersection','attributes','fields','length','merge','options','getLicense','catch','body','find','params','get','checkLicense','key','demo','eml-format','rimraf'];(function(_0x58c851,_0x1f3d96){var _0x534d8a=function(_0x10c1a0){while(--_0x10c1a0){_0x58c851['push'](_0x58c851['shift']());}};_0x534d8a(++_0x1f3d96);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0xc4aa[_0x16b9ed];return _0x66b1f8;};'use strict';var emlformat=require(_0xac4a('0x0'));var rimraf=require(_0xac4a('0x1'));var zipdir=require(_0xac4a('0x2'));var jsonpatch=require(_0xac4a('0x3'));var rp=require(_0xac4a('0x4'));var moment=require(_0xac4a('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xac4a('0x6'));var sox=require(_0xac4a('0x7'));var csv=require(_0xac4a('0x8'));var ejs=require(_0xac4a('0x9'));var fs=require('fs');var fs_extra=require(_0xac4a('0xa'));var _=require(_0xac4a('0xb'));var squel=require(_0xac4a('0xc'));var crypto=require(_0xac4a('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xac4a('0x8'));var querystring=require(_0xac4a('0xe'));var Papa=require(_0xac4a('0xf'));var Redis=require('ioredis');var authService=require(_0xac4a('0x10'));var qs=require(_0xac4a('0x11'));var as=require(_0xac4a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xac4a('0x13'))('api');var utils=require(_0xac4a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xac4a('0x15'));var db=require(_0xac4a('0x16'))['db'];function respondWithStatusCode(_0x24291d,_0x5e16aa){_0x5e16aa=_0x5e16aa||0xcc;return function(_0x21a79){if(_0x21a79){return _0x24291d[_0xac4a('0x17')](_0x5e16aa);}return _0x24291d[_0xac4a('0x18')](_0x5e16aa)[_0xac4a('0x19')]();};}function respondWithResult(_0x1b4313,_0x3b71c0){_0x3b71c0=_0x3b71c0||0xc8;return function(_0x34bc01){if(_0x34bc01){return _0x1b4313[_0xac4a('0x18')](_0x3b71c0)[_0xac4a('0x1a')](_0x34bc01);}};}function respondWithFilteredResult(_0x42c7fc,_0x11e101){return function(_0x26dbb8){if(_0x26dbb8){var _0x4a2119=typeof _0x11e101[_0xac4a('0x1b')]===_0xac4a('0x1c')&&typeof _0x11e101[_0xac4a('0x1d')]===_0xac4a('0x1c');var _0x3e88e3=_0x26dbb8[_0xac4a('0x1e')];var _0x28e304=_0x4a2119?0x0:_0x11e101[_0xac4a('0x1b')];var _0x546c5d=_0x4a2119?_0x26dbb8['count']:_0x11e101[_0xac4a('0x1b')]+_0x11e101[_0xac4a('0x1d')];var _0x39b691;if(_0x546c5d>=_0x3e88e3){_0x546c5d=_0x3e88e3;_0x39b691=0xc8;}else{_0x39b691=0xce;}_0x42c7fc['status'](_0x39b691);return _0x42c7fc[_0xac4a('0x1f')](_0xac4a('0x20'),_0x28e304+'-'+_0x546c5d+'/'+_0x3e88e3)[_0xac4a('0x1a')](_0x26dbb8);}return null;};}function patchUpdates(_0x3a3cdb){return function(_0x123694){try{jsonpatch[_0xac4a('0x21')](_0x123694,_0x3a3cdb,!![]);}catch(_0xe38996){return BPromise[_0xac4a('0x22')](_0xe38996);}return _0x123694['save']();};}function saveUpdates(_0x3d8f0a,_0x3204ad){return function(_0x599787){if(_0x599787){return _0x599787[_0xac4a('0x23')](_0x3d8f0a)[_0xac4a('0x24')](function(_0x3eacd3){return _0x3eacd3;});}return null;};}function removeEntity(_0x947d8e,_0x4d2d6c){return function(_0x1b7998){if(_0x1b7998){return _0x1b7998[_0xac4a('0x25')]()[_0xac4a('0x24')](function(){_0x947d8e[_0xac4a('0x18')](0xcc)[_0xac4a('0x19')]();});}};}function handleEntityNotFound(_0x2b0dc2,_0x222507){return function(_0x36054a){if(!_0x36054a){_0x2b0dc2[_0xac4a('0x17')](0x194);}return _0x36054a;};}function handleError(_0x3bc318,_0x1d0539){_0x1d0539=_0x1d0539||0x1f4;return function(_0x215a31){logger[_0xac4a('0x26')](_0x215a31[_0xac4a('0x27')]);if(_0x215a31[_0xac4a('0x28')]){delete _0x215a31[_0xac4a('0x28')];}_0x3bc318['status'](_0x1d0539)[_0xac4a('0x29')](_0x215a31);};}var utilLicense=require(_0xac4a('0x15'));exports[_0xac4a('0x2a')]=function(_0x2772fe,_0x116700){var _0x4a5a9e={'raw':!![],'where':{'id':0x1}},_0x47f49c={};_0x47f49c[_0xac4a('0x2b')]=_[_0xac4a('0x2c')](db[_0xac4a('0x2d')]['rawAttributes']);_0x47f49c['query']=_[_0xac4a('0x2c')](_0x2772fe[_0xac4a('0x2e')]);_0x47f49c[_0xac4a('0x2f')]=_[_0xac4a('0x30')](_0x47f49c[_0xac4a('0x2b')],_0x47f49c['query']);_0x4a5a9e[_0xac4a('0x31')]=_['intersection'](_0x47f49c[_0xac4a('0x2b')],qs['fields'](_0x2772fe[_0xac4a('0x2e')][_0xac4a('0x32')]));_0x4a5a9e[_0xac4a('0x31')]=_0x4a5a9e[_0xac4a('0x31')][_0xac4a('0x33')]?_0x4a5a9e[_0xac4a('0x31')]:_0x47f49c[_0xac4a('0x2b')];_0x4a5a9e=_[_0xac4a('0x34')]({},_0x4a5a9e,_0x2772fe[_0xac4a('0x35')]);return utilLicense[_0xac4a('0x36')](_0x4a5a9e)[_0xac4a('0x24')](respondWithResult(_0x116700,null))[_0xac4a('0x37')](handleError(_0x116700,null));};exports[_0xac4a('0x23')]=function(_0x1a9d4e,_0x5634e2){if(_0x1a9d4e[_0xac4a('0x38')]['id']){delete _0x1a9d4e[_0xac4a('0x38')]['id'];}return db['License'][_0xac4a('0x39')]({'where':{'id':_0x1a9d4e[_0xac4a('0x3a')]['id']}})['then'](handleEntityNotFound(_0x5634e2,null))['then'](function(_0x11f0be){var _0x1ba096=_0x11f0be[_0xac4a('0x3b')]({'plain':!![]});return utilLicense[_0xac4a('0x3c')](_0x1ba096,_0x1a9d4e['body'][_0xac4a('0x3d')]);})[_0xac4a('0x24')](function(_0x4e7630){if(!_0x4e7630[_0xac4a('0x3e')]){return saveUpdates(_0x1a9d4e[_0xac4a('0x38')],null);}return _0x4e7630;})[_0xac4a('0x24')](respondWithResult(_0x5634e2,null))['catch'](handleError(_0x5634e2,null));};
\ No newline at end of file
index c9732e0..183cc65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb66=['util','api','bluebird','path','../../config/environment','./license.attributes','exports','License','license','lodash'];(function(_0x58270d,_0x1a3752){var _0x41d8cb=function(_0x3d31a8){while(--_0x3d31a8){_0x58270d['push'](_0x58270d['shift']());}};_0x41d8cb(++_0x1a3752);}(_0xfb66,0x1f3));var _0x6fb6=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xfb66[_0x465028];return _0xb783d4;};'use strict';var _=require(_0x6fb6('0x0'));var util=require(_0x6fb6('0x1'));var logger=require('../../config/logger')(_0x6fb6('0x2'));var moment=require('moment');var BPromise=require(_0x6fb6('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6fb6('0x4'));var rimraf=require('rimraf');var config=require(_0x6fb6('0x5'));var attributes=require(_0x6fb6('0x6'));module[_0x6fb6('0x7')]=function(_0x1117e8,_0x529f61){return _0x1117e8['define'](_0x6fb6('0x8'),attributes,{'tableName':_0x6fb6('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2252=['path','rimraf','exports','define','License','license','lodash','api','moment','request-promise'];(function(_0xe7e1ec,_0x157bac){var _0x524722=function(_0x793d9d){while(--_0x793d9d){_0xe7e1ec['push'](_0xe7e1ec['shift']());}};_0x524722(++_0x157bac);}(_0x2252,0x10a));var _0x2225=function(_0x4b42b2,_0x564226){_0x4b42b2=_0x4b42b2-0x0;var _0x9ba27e=_0x2252[_0x4b42b2];return _0x9ba27e;};'use strict';var _=require(_0x2225('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2225('0x1'));var moment=require(_0x2225('0x2'));var BPromise=require('bluebird');var rp=require(_0x2225('0x3'));var fs=require('fs');var path=require(_0x2225('0x4'));var rimraf=require(_0x2225('0x5'));var config=require('../../config/environment');var attributes=require('./license.attributes');module[_0x2225('0x6')]=function(_0xc99230,_0x484aae){return _0xc99230[_0x2225('0x7')](_0x2225('0x8'),attributes,{'tableName':_0x2225('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e8a2d41..df75935 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a66=['request\x20sent','stringify','error','code','License,\x20%s,\x20%s','message','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','debug'];(function(_0x2047b4,_0x5151a2){var _0x3e0b97=function(_0x2adbb7){while(--_0x2adbb7){_0x2047b4['push'](_0x2047b4['shift']());}};_0x3e0b97(++_0x5151a2);}(_0x7a66,0x78));var _0x67a6=function(_0x35e24b,_0x6eb583){_0x35e24b=_0x35e24b-0x0;var _0x193ca0=_0x7a66[_0x35e24b];return _0x193ca0;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x67a6('0x0'));var rs=require(_0x67a6('0x1'));var fs=require('fs');var Redis=require(_0x67a6('0x2'));var db=require(_0x67a6('0x3'))['db'];var utils=require(_0x67a6('0x4'));var logger=require('../../config/logger')(_0x67a6('0x5'));var config=require(_0x67a6('0x6'));var jayson=require(_0x67a6('0x7'));var client=jayson[_0x67a6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3bca76,_0x490845,_0x2c8c27){return new BPromise(function(_0x4f5ccd,_0x1613b3){return client[_0x67a6('0x9')](_0x3bca76,_0x2c8c27)[_0x67a6('0xa')](function(_0x30195b){logger[_0x67a6('0xb')]('License,\x20%s,\x20%s',_0x490845,'request\x20sent');logger[_0x67a6('0xc')]('License,\x20%s,\x20%s,\x20%s',_0x490845,_0x67a6('0xd'),JSON[_0x67a6('0xe')](_0x30195b));if(_0x30195b[_0x67a6('0xf')]){if(_0x30195b['error'][_0x67a6('0x10')]===0x1f4){logger['error'](_0x67a6('0x11'),_0x490845,_0x30195b[_0x67a6('0xf')][_0x67a6('0x12')]);return _0x1613b3(_0x30195b[_0x67a6('0xf')][_0x67a6('0x12')]);}logger[_0x67a6('0xf')]('License,\x20%s,\x20%s',_0x490845,_0x30195b['error'][_0x67a6('0x12')]);return _0x4f5ccd(_0x30195b['error'][_0x67a6('0x12')]);}else{logger[_0x67a6('0xb')](_0x67a6('0x11'),_0x490845,'request\x20sent');_0x4f5ccd(_0x30195b['result'][_0x67a6('0x12')]);}})['catch'](function(_0x468937){logger[_0x67a6('0xf')](_0x67a6('0x11'),_0x490845,_0x468937);_0x1613b3(_0x468937);});});}
\ No newline at end of file
+var _0x8760=['rpc','../../config/environment','client','http','request','info','License,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','lodash','randomstring','../../mysqldb','../../config/logger'];(function(_0xf0fcd,_0x3637a7){var _0x115626=function(_0x37593b){while(--_0x37593b){_0xf0fcd['push'](_0xf0fcd['shift']());}};_0x115626(++_0x3637a7);}(_0x8760,0xf3));var _0x0876=function(_0x58965a,_0x2e71db){_0x58965a=_0x58965a-0x0;var _0x254efc=_0x8760[_0x58965a];return _0x254efc;};'use strict';var _=require(_0x0876('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0876('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0876('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x0876('0x3'))(_0x0876('0x4'));var config=require(_0x0876('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x0876('0x6')][_0x0876('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x63bd23,_0x412dfa,_0x92aaa2){return new BPromise(function(_0x38c35c,_0x1bf698){return client[_0x0876('0x8')](_0x63bd23,_0x92aaa2)['then'](function(_0x3d20bb){logger[_0x0876('0x9')](_0x0876('0xa'),_0x412dfa,'request\x20sent');logger[_0x0876('0xb')]('License,\x20%s,\x20%s,\x20%s',_0x412dfa,_0x0876('0xc'),JSON[_0x0876('0xd')](_0x3d20bb));if(_0x3d20bb['error']){if(_0x3d20bb[_0x0876('0xe')][_0x0876('0xf')]===0x1f4){logger[_0x0876('0xe')](_0x0876('0xa'),_0x412dfa,_0x3d20bb[_0x0876('0xe')][_0x0876('0x10')]);return _0x1bf698(_0x3d20bb[_0x0876('0xe')][_0x0876('0x10')]);}logger[_0x0876('0xe')]('License,\x20%s,\x20%s',_0x412dfa,_0x3d20bb[_0x0876('0xe')][_0x0876('0x10')]);return _0x38c35c(_0x3d20bb['error']['message']);}else{logger['info'](_0x0876('0xa'),_0x412dfa,_0x0876('0xc'));_0x38c35c(_0x3d20bb[_0x0876('0x11')][_0x0876('0x10')]);}})[_0x0876('0x12')](function(_0x141600){logger[_0x0876('0xe')]('License,\x20%s,\x20%s',_0x412dfa,_0x141600);_0x1bf698(_0x141600);});});}
\ No newline at end of file
index 9ec7918..202f042 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9887=['removeSmtp','removeAgents','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/out_servers','getSmtp','getInteractions','getApplications','/:id/verify','verifySmtp','/:id/users','getAgents','post','addDisposition','addAnswer','create','addSmtp','/:id/interactions','addInteraction','/:id/applications','/:id/send','send','addAgents','put','update','removeDispositions','delete','removeAnswers','/:id/in_servers'];(function(_0x5c6310,_0x57afac){var _0x3e6db4=function(_0x5a88e3){while(--_0x5a88e3){_0x5c6310['push'](_0x5c6310['shift']());}};_0x3e6db4(++_0x57afac);}(_0x9887,0x11d));var _0x7988=function(_0x442b30,_0x58cdaa){_0x442b30=_0x442b30-0x0;var _0x3fe84d=_0x9887[_0x442b30];return _0x3fe84d;};'use strict';var multer=require('multer');var util=require(_0x7988('0x0'));var path=require(_0x7988('0x1'));var timeout=require(_0x7988('0x2'));var express=require(_0x7988('0x3'));var router=express[_0x7988('0x4')]();var fs_extra=require(_0x7988('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x7988('0x6'));var config=require(_0x7988('0x7'));var controller=require(_0x7988('0x8'));router[_0x7988('0x9')]('/',auth[_0x7988('0xa')](),controller[_0x7988('0xb')]);router[_0x7988('0x9')](_0x7988('0xc'),auth['isAuthenticated'](),controller[_0x7988('0xd')]);router[_0x7988('0x9')](_0x7988('0xe'),auth[_0x7988('0xa')](),controller[_0x7988('0xf')]);router[_0x7988('0x9')](_0x7988('0x10'),auth[_0x7988('0xa')](),controller[_0x7988('0x11')]);router[_0x7988('0x9')](_0x7988('0x12'),auth['isAuthenticated'](),controller['getAnswers']);router[_0x7988('0x9')]('/:id/in_servers',auth[_0x7988('0xa')](),controller['getImap']);router['get'](_0x7988('0x13'),auth[_0x7988('0xa')](),controller[_0x7988('0x14')]);router['get']('/:id/interactions',auth[_0x7988('0xa')](),controller[_0x7988('0x15')]);router[_0x7988('0x9')]('/:id/applications',auth[_0x7988('0xa')](),controller[_0x7988('0x16')]);router[_0x7988('0x9')]('/:id/messages',auth[_0x7988('0xa')](),controller['getMessages']);router[_0x7988('0x9')](_0x7988('0x17'),auth[_0x7988('0xa')](),controller[_0x7988('0x18')]);router[_0x7988('0x9')](_0x7988('0x19'),auth['isAuthenticated'](),controller[_0x7988('0x1a')]);router[_0x7988('0x1b')](_0x7988('0x10'),auth[_0x7988('0xa')](),controller[_0x7988('0x1c')]);router[_0x7988('0x1b')]('/:id/canned_answers',auth[_0x7988('0xa')](),controller[_0x7988('0x1d')]);router[_0x7988('0x1b')]('/',auth[_0x7988('0xa')](),controller[_0x7988('0x1e')]);router[_0x7988('0x1b')]('/:id/in_servers',auth[_0x7988('0xa')](),controller['addImap']);router[_0x7988('0x1b')](_0x7988('0x13'),auth[_0x7988('0xa')](),controller[_0x7988('0x1f')]);router[_0x7988('0x1b')](_0x7988('0x20'),auth[_0x7988('0xa')](),controller[_0x7988('0x21')]);router[_0x7988('0x1b')](_0x7988('0x22'),auth[_0x7988('0xa')](),controller['addApplications']);router['post'](_0x7988('0x23'),auth[_0x7988('0xa')](),controller[_0x7988('0x24')]);router['post']('/:id/users',auth[_0x7988('0xa')](),controller[_0x7988('0x25')]);router[_0x7988('0x26')]('/:id',auth['isAuthenticated'](),controller[_0x7988('0x27')]);router['delete'](_0x7988('0x10'),auth[_0x7988('0xa')](),controller[_0x7988('0x28')]);router[_0x7988('0x29')](_0x7988('0x12'),auth['isAuthenticated'](),controller[_0x7988('0x2a')]);router[_0x7988('0x29')](_0x7988('0x2b'),auth['isAuthenticated'](),controller['removeImap']);router[_0x7988('0x29')](_0x7988('0x13'),auth[_0x7988('0xa')](),controller[_0x7988('0x2c')]);router[_0x7988('0x29')](_0x7988('0xe'),auth[_0x7988('0xa')](),controller['destroy']);router[_0x7988('0x29')](_0x7988('0x19'),auth[_0x7988('0xa')](),controller[_0x7988('0x2d')]);module[_0x7988('0x2e')]=router;
\ No newline at end of file
+var _0x41d5=['/:id/out_servers','addSmtp','addInteraction','/:id/applications','addApplications','/:id/send','addAgents','put','delete','removeDispositions','removeAnswers','removeImap','removeSmtp','destroy','exports','multer','util','fs-extra','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/canned_answers','getAnswers','/:id/in_servers','getImap','getSmtp','/:id/interactions','getInteractions','getMessages','verifySmtp','/:id/users','getAgents','post','/:id/dispositions','addDisposition','addAnswer','create'];(function(_0xb69e6d,_0x3ad7b7){var _0x51a6f0=function(_0x2a7e6b){while(--_0x2a7e6b){_0xb69e6d['push'](_0xb69e6d['shift']());}};_0x51a6f0(++_0x3ad7b7);}(_0x41d5,0x192));var _0x541d=function(_0x1e4b9c,_0x3a8901){_0x1e4b9c=_0x1e4b9c-0x0;var _0x967a12=_0x41d5[_0x1e4b9c];return _0x967a12;};'use strict';var multer=require(_0x541d('0x0'));var util=require(_0x541d('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x541d('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x541d('0x3'));var config=require(_0x541d('0x4'));var controller=require(_0x541d('0x5'));router[_0x541d('0x6')]('/',auth[_0x541d('0x7')](),controller['index']);router[_0x541d('0x6')](_0x541d('0x8'),auth[_0x541d('0x7')](),controller[_0x541d('0x9')]);router['get'](_0x541d('0xa'),auth[_0x541d('0x7')](),controller[_0x541d('0xb')]);router[_0x541d('0x6')]('/:id/dispositions',auth['isAuthenticated'](),controller['getDispositions']);router['get'](_0x541d('0xc'),auth[_0x541d('0x7')](),controller[_0x541d('0xd')]);router[_0x541d('0x6')](_0x541d('0xe'),auth[_0x541d('0x7')](),controller[_0x541d('0xf')]);router[_0x541d('0x6')]('/:id/out_servers',auth[_0x541d('0x7')](),controller[_0x541d('0x10')]);router[_0x541d('0x6')](_0x541d('0x11'),auth[_0x541d('0x7')](),controller[_0x541d('0x12')]);router[_0x541d('0x6')]('/:id/applications',auth[_0x541d('0x7')](),controller['getApplications']);router[_0x541d('0x6')]('/:id/messages',auth[_0x541d('0x7')](),controller[_0x541d('0x13')]);router[_0x541d('0x6')]('/:id/verify',auth[_0x541d('0x7')](),controller[_0x541d('0x14')]);router['get'](_0x541d('0x15'),auth['isAuthenticated'](),controller[_0x541d('0x16')]);router[_0x541d('0x17')](_0x541d('0x18'),auth[_0x541d('0x7')](),controller[_0x541d('0x19')]);router['post'](_0x541d('0xc'),auth['isAuthenticated'](),controller[_0x541d('0x1a')]);router['post']('/',auth['isAuthenticated'](),controller[_0x541d('0x1b')]);router[_0x541d('0x17')](_0x541d('0xe'),auth['isAuthenticated'](),controller['addImap']);router[_0x541d('0x17')](_0x541d('0x1c'),auth[_0x541d('0x7')](),controller[_0x541d('0x1d')]);router[_0x541d('0x17')](_0x541d('0x11'),auth['isAuthenticated'](),controller[_0x541d('0x1e')]);router[_0x541d('0x17')](_0x541d('0x1f'),auth[_0x541d('0x7')](),controller[_0x541d('0x20')]);router[_0x541d('0x17')](_0x541d('0x21'),auth[_0x541d('0x7')](),controller['send']);router[_0x541d('0x17')](_0x541d('0x15'),auth[_0x541d('0x7')](),controller[_0x541d('0x22')]);router[_0x541d('0x23')](_0x541d('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x541d('0x24')](_0x541d('0x18'),auth[_0x541d('0x7')](),controller[_0x541d('0x25')]);router['delete']('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x541d('0x26')]);router[_0x541d('0x24')](_0x541d('0xe'),auth[_0x541d('0x7')](),controller[_0x541d('0x27')]);router[_0x541d('0x24')](_0x541d('0x1c'),auth['isAuthenticated'](),controller[_0x541d('0x28')]);router['delete'](_0x541d('0xa'),auth[_0x541d('0x7')](),controller[_0x541d('0x29')]);router['delete']('/:id/users',auth[_0x541d('0x7')](),controller['removeAgents']);module[_0x541d('0x2a')]=router;
\ No newline at end of file
index 5c4befe..b5aade9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2ca=['STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize','exports'];(function(_0x3dc1a0,_0xb49eae){var _0x573b60=function(_0x91986b){while(--_0x91986b){_0x3dc1a0['push'](_0x3dc1a0['shift']());}};_0x573b60(++_0xb49eae);}(_0xf2ca,0x16a));var _0xaf2c=function(_0x254081,_0x20731a){_0x254081=_0x254081-0x0;var _0x5d1e2a=_0xf2ca[_0x254081];return _0x5d1e2a;};'use strict';var Sequelize=require(_0xaf2c('0x0'));module[_0xaf2c('0x1')]={'description':{'type':Sequelize[_0xaf2c('0x2')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0xaf2c('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0xaf2c('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xaf2c('0x3')],'defaultValue':!![]},'key':{'type':Sequelize[_0xaf2c('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0xaf2c('0x4')]},'markAsUnread':{'type':Sequelize[_0xaf2c('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xaf2c('0x5')},'fontSize':{'type':Sequelize[_0xaf2c('0x6')](0x2)[_0xaf2c('0x7')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xaf2c('0x4')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}';}},'notificationSound':{'type':Sequelize[_0xaf2c('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xaf2c('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xaf2c('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xaf2c('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xaf2c('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0xaf2c('0x8')},'mandatoryDisposition':{'type':Sequelize[_0xaf2c('0x3')],'defaultValue':![],'comment':_0xaf2c('0x9'),'set':function(_0x5ad9b0){if(!_0x5ad9b0)this['setDataValue'](_0xaf2c('0xa'),null);this[_0xaf2c('0xb')](_0xaf2c('0xc'),_0x5ad9b0);}}};
\ No newline at end of file
+var _0xc5c7=['mandatoryDisposition','exports','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue'];(function(_0x58cbde,_0x4b0f62){var _0x5799f3=function(_0x326eca){while(--_0x326eca){_0x58cbde['push'](_0x58cbde['shift']());}};_0x5799f3(++_0x4b0f62);}(_0xc5c7,0x1cf));var _0x7c5c=function(_0x5f2ffa,_0x2f0215){_0x5f2ffa=_0x5f2ffa-0x0;var _0x4133bd=_0xc5c7[_0x5f2ffa];return _0x4133bd;};'use strict';var Sequelize=require('sequelize');module[_0x7c5c('0x0')]={'description':{'type':Sequelize[_0x7c5c('0x1')]},'name':{'type':Sequelize[_0x7c5c('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0x7c5c('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x7c5c('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x7c5c('0x2')],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0x7c5c('0x3')]},'markAsUnread':{'type':Sequelize[_0x7c5c('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x7c5c('0x1')],'allowNull':![],'defaultValue':_0x7c5c('0x4')},'fontSize':{'type':Sequelize[_0x7c5c('0x5')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x7c5c('0x6');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x7c5c('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x7c5c('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x7c5c('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x7c5c('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0x7c5c('0x7')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x7c5c('0x8'),'set':function(_0x58ef28){if(!_0x58ef28)this[_0x7c5c('0x9')]('mandatoryDispositionPauseId',null);this[_0x7c5c('0x9')](_0x7c5c('0xa'),_0x58ef28);}}};
\ No newline at end of file
index 950fa97..e393e6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15fc=['rimraf','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','html-to-text','juice','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','jayson/promise','http','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','MailAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','save','update','destroy','get','UserProfileResource','stack','name','send','index','MailServerIn','Imap','MailServerOut','Smtp','Pause','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','show','options','body','find','describe','addDisposition','params','MailAccountId','Disposition','findOne','hasOwnProperty','findAll','removeDispositions','addAnswer','CannedAnswer','create','removeAnswers','ids','email','description','isNil','cservice','cauthentication','user','cuser','password','pass','cpassword','authentication','host','port','service','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','MailAccounts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','getSmtp','addSmtp','addInteraction','MailInteraction','omit','CmContact','Contact','Owner','fullname','internal','Tag','Tags','color','tag','addApplications','sequelize','transaction','MailApplication','findAndCountAll','priority','getApplications','getMessages','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','Contacts','updatedAt','DESC','from','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','auth','secure','sendMail','List\x20not\x20found','List','messageId','subject','attach','out','Messages','verifySmtp','Sequelize','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','User','eml-format'];(function(_0x4f2094,_0x5e31ae){var _0x188e9a=function(_0x440ed5){while(--_0x440ed5){_0x4f2094['push'](_0x4f2094['shift']());}};_0x188e9a(++_0x5e31ae);}(_0x15fc,0x183));var _0xc15f=function(_0x566c5a,_0x42e09c){_0x566c5a=_0x566c5a-0x0;var _0x3c4abe=_0x15fc[_0x566c5a];return _0x3c4abe;};'use strict';var emlformat=require(_0xc15f('0x0'));var rimraf=require(_0xc15f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xc15f('0x2'));var moment=require(_0xc15f('0x3'));var BPromise=require(_0xc15f('0x4'));var Mustache=require(_0xc15f('0x5'));var util=require(_0xc15f('0x6'));var path=require('path');var sox=require(_0xc15f('0x7'));var csv=require(_0xc15f('0x8'));var ejs=require(_0xc15f('0x9'));var fs=require('fs');var fs_extra=require(_0xc15f('0xa'));var _=require(_0xc15f('0xb'));var squel=require(_0xc15f('0xc'));var crypto=require(_0xc15f('0xd'));var jsforce=require(_0xc15f('0xe'));var deskjs=require(_0xc15f('0xf'));var toCsv=require(_0xc15f('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var htmlToText=require(_0xc15f('0x10'));var juice=require(_0xc15f('0x11'));var Redis=require(_0xc15f('0x12'));var authService=require(_0xc15f('0x13'));var qs=require(_0xc15f('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc15f('0x15'));var logger=require(_0xc15f('0x16'))(_0xc15f('0x17'));var utils=require(_0xc15f('0x18'));var config=require(_0xc15f('0x19'));var licenseUtil=require(_0xc15f('0x1a'));var db=require('../../mysqldb')['db'];config[_0xc15f('0x1b')]=_[_0xc15f('0x1c')](config['redis'],{'host':_0xc15f('0x1d'),'port':0x18eb});var socket=require(_0xc15f('0x1e'))(new Redis(config[_0xc15f('0x1b')]));require(_0xc15f('0x1f'))[_0xc15f('0x20')](socket);var jayson=require(_0xc15f('0x21'));var client=jayson['client'][_0xc15f('0x22')]({'port':0x232b});function respondWithRpcPromise(_0x1cc98c,_0x198701,_0x20f31c,_0x444b36){return new BPromise(function(_0x2f8142,_0x131dfb){var _0x2b0926=_0x444b36||client;return _0x2b0926[_0xc15f('0x23')](_0x1cc98c,_0x20f31c)[_0xc15f('0x24')](function(_0xe8ecd4){logger[_0xc15f('0x25')](_0xc15f('0x26'),_0x198701,_0xc15f('0x27'));logger['debug'](_0xc15f('0x28'),_0x198701,_0xc15f('0x27'),JSON['stringify'](_0xe8ecd4));if(_0xe8ecd4[_0xc15f('0x29')]){if(_0xe8ecd4[_0xc15f('0x29')][_0xc15f('0x2a')]===0x1f4){logger[_0xc15f('0x29')](_0xc15f('0x26'),_0x198701,_0xe8ecd4[_0xc15f('0x29')][_0xc15f('0x2b')]);return _0x131dfb(_0xe8ecd4['error'][_0xc15f('0x2b')]);}logger['error'](_0xc15f('0x26'),_0x198701,_0xe8ecd4['error']['message']);return _0x2f8142(_0xe8ecd4['error'][_0xc15f('0x2b')]);}else{logger[_0xc15f('0x25')](_0xc15f('0x26'),_0x198701,_0xc15f('0x27'));_0x2f8142(_0xe8ecd4[_0xc15f('0x2c')]['message']);}})[_0xc15f('0x2d')](function(_0x3cc8a7){logger[_0xc15f('0x29')](_0xc15f('0x26'),_0x198701,_0x3cc8a7);_0x131dfb(_0x3cc8a7);});});}function respondWithStatusCode(_0x51ff3e,_0x470474){_0x470474=_0x470474||0xcc;return function(_0x47ef6b){if(_0x47ef6b){return _0x51ff3e[_0xc15f('0x2e')](_0x470474);}return _0x51ff3e[_0xc15f('0x2f')](_0x470474)['end']();};}function respondWithResult(_0x53a844,_0x5c3ccd){_0x5c3ccd=_0x5c3ccd||0xc8;return function(_0x380f18){if(_0x380f18){return _0x53a844['status'](_0x5c3ccd)[_0xc15f('0x30')](_0x380f18);}};}function respondWithFilteredResult(_0x58e197,_0xc85848){return function(_0xef762f){if(_0xef762f){var _0x558230=typeof _0xc85848[_0xc15f('0x31')]===_0xc15f('0x32')&&typeof _0xc85848['limit']==='undefined';var _0x46c58e=_0xef762f[_0xc15f('0x33')];var _0x3ad74f=_0x558230?0x0:_0xc85848[_0xc15f('0x31')];var _0x23036d=_0x558230?_0xef762f[_0xc15f('0x33')]:_0xc85848[_0xc15f('0x31')]+_0xc85848[_0xc15f('0x34')];var _0x5dc398;if(_0x23036d>=_0x46c58e){_0x23036d=_0x46c58e;_0x5dc398=0xc8;}else{_0x5dc398=0xce;}_0x58e197[_0xc15f('0x2f')](_0x5dc398);return _0x58e197[_0xc15f('0x35')](_0xc15f('0x36'),_0x3ad74f+'-'+_0x23036d+'/'+_0x46c58e)[_0xc15f('0x30')](_0xef762f);}return null;};}function patchUpdates(_0x2cf806){return function(_0x40c58c){try{jsonpatch['apply'](_0x40c58c,_0x2cf806,!![]);}catch(_0x44c35e){return BPromise['reject'](_0x44c35e);}return _0x40c58c[_0xc15f('0x37')]();};}function saveUpdates(_0x2abfd4,_0x27bbc4){return function(_0x5a7413){if(_0x5a7413){return _0x5a7413[_0xc15f('0x38')](_0x2abfd4)[_0xc15f('0x24')](function(_0x34b720){return _0x34b720;});}return null;};}function removeEntity(_0x1bbb94,_0x408b8e){return function(_0x5c5111){if(_0x5c5111){return _0x5c5111[_0xc15f('0x39')]()[_0xc15f('0x24')](function(){var _0x642ae8=_0x5c5111[_0xc15f('0x3a')]({'plain':!![]});var _0x558509='MailAccounts';return db[_0xc15f('0x3b')][_0xc15f('0x39')]({'where':{'type':_0x558509,'resourceId':_0x642ae8['id']}})[_0xc15f('0x24')](function(){return _0x5c5111;});})['then'](function(){_0x1bbb94[_0xc15f('0x2f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x438dc9,_0xbdccbf){return function(_0x348ccc){if(!_0x348ccc){_0x438dc9[_0xc15f('0x2e')](0x194);}return _0x348ccc;};}function handleError(_0x47f432,_0x1bd043){_0x1bd043=_0x1bd043||0x1f4;return function(_0x387ac0){logger[_0xc15f('0x29')](_0x387ac0[_0xc15f('0x3c')]);if(_0x387ac0[_0xc15f('0x3d')]){delete _0x387ac0[_0xc15f('0x3d')];}_0x47f432[_0xc15f('0x2f')](_0x1bd043)[_0xc15f('0x3e')](_0x387ac0);};}exports[_0xc15f('0x3f')]=function(_0x50ae9b,_0x17fdf9){var _0x4398c4={'include':[{'model':db[_0xc15f('0x40')],'as':_0xc15f('0x41')},{'model':db[_0xc15f('0x42')],'as':_0xc15f('0x43')},{'model':db[_0xc15f('0x44')],'as':_0xc15f('0x45')}]},_0x4c5a8a={},_0x15ca4c={'count':0x0,'rows':[]};var _0x2403bb=_[_0xc15f('0x46')](db[_0xc15f('0x47')][_0xc15f('0x48')],function(_0x513ebb){return{'name':_0x513ebb[_0xc15f('0x49')],'type':_0x513ebb[_0xc15f('0x4a')]['key']};});_0x4c5a8a[_0xc15f('0x4b')]=_['map'](_0x2403bb,_0xc15f('0x3d'));_0x4c5a8a[_0xc15f('0x4c')]=_[_0xc15f('0x4d')](_0x50ae9b['query']);_0x4c5a8a[_0xc15f('0x4e')]=_[_0xc15f('0x4f')](_0x4c5a8a[_0xc15f('0x4b')],_0x4c5a8a[_0xc15f('0x4c')]);_0x4398c4[_0xc15f('0x50')]=_['intersection'](_0x4c5a8a[_0xc15f('0x4b')],qs[_0xc15f('0x51')](_0x50ae9b[_0xc15f('0x4c')]['fields']));_0x4398c4[_0xc15f('0x50')]=_0x4398c4[_0xc15f('0x50')][_0xc15f('0x52')]?_0x4398c4[_0xc15f('0x50')]:_0x4c5a8a[_0xc15f('0x4b')];if(!_0x50ae9b[_0xc15f('0x4c')]['hasOwnProperty'](_0xc15f('0x53'))){_0x4398c4[_0xc15f('0x34')]=qs[_0xc15f('0x34')](_0x50ae9b[_0xc15f('0x4c')][_0xc15f('0x34')]);_0x4398c4['offset']=qs[_0xc15f('0x31')](_0x50ae9b[_0xc15f('0x4c')][_0xc15f('0x31')]);}_0x4398c4[_0xc15f('0x54')]=qs[_0xc15f('0x55')](_0x50ae9b[_0xc15f('0x4c')][_0xc15f('0x55')]);_0x4398c4[_0xc15f('0x56')]=qs[_0xc15f('0x4e')](_[_0xc15f('0x57')](_0x50ae9b[_0xc15f('0x4c')],_0x4c5a8a[_0xc15f('0x4e')]),_0x2403bb);if(_0x50ae9b[_0xc15f('0x4c')][_0xc15f('0x58')]){_0x4398c4[_0xc15f('0x56')]=_[_0xc15f('0x59')](_0x4398c4[_0xc15f('0x56')],{'$or':_[_0xc15f('0x46')](_0x2403bb,function(_0x48656b){if(_0x48656b[_0xc15f('0x4a')]!==_0xc15f('0x5a')){var _0x486b6a={};_0x486b6a[_0x48656b['name']]={'$like':'%'+_0x50ae9b[_0xc15f('0x4c')][_0xc15f('0x58')]+'%'};return _0x486b6a;}})});}_0x4398c4=_[_0xc15f('0x59')]({},_0x4398c4,_0x50ae9b['options']);var _0xb47145={'where':_0x4398c4[_0xc15f('0x56')]};return db[_0xc15f('0x47')]['count'](_0xb47145)[_0xc15f('0x24')](function(_0x162a06){_0x15ca4c[_0xc15f('0x33')]=_0x162a06;if(_0x50ae9b[_0xc15f('0x4c')][_0xc15f('0x5b')]){_0x4398c4[_0xc15f('0x5c')]=[{'all':!![]}];}return db[_0xc15f('0x47')]['findAll'](_0x4398c4);})['then'](function(_0x40b05e){_0x15ca4c[_0xc15f('0x5d')]=_0x40b05e;return _0x15ca4c;})['then'](respondWithFilteredResult(_0x17fdf9,_0x4398c4))[_0xc15f('0x2d')](handleError(_0x17fdf9,null));};exports[_0xc15f('0x5e')]=function(_0x15ca3f,_0x59d9b4){var _0x365f87={'raw':![],'where':{'id':_0x15ca3f['params']['id']},'include':[{'model':db[_0xc15f('0x40')],'as':_0xc15f('0x41')},{'model':db[_0xc15f('0x42')],'as':_0xc15f('0x43')},{'model':db[_0xc15f('0x44')],'as':'mandatoryDispositionPause'}]},_0x2b2d08={};_0x2b2d08[_0xc15f('0x4b')]=_[_0xc15f('0x4d')](db[_0xc15f('0x47')][_0xc15f('0x48')]);_0x2b2d08[_0xc15f('0x4c')]=_['keys'](_0x15ca3f[_0xc15f('0x4c')]);_0x2b2d08[_0xc15f('0x4e')]=_[_0xc15f('0x4f')](_0x2b2d08['model'],_0x2b2d08[_0xc15f('0x4c')]);_0x365f87['attributes']=_[_0xc15f('0x4f')](_0x2b2d08[_0xc15f('0x4b')],qs['fields'](_0x15ca3f['query'][_0xc15f('0x51')]));_0x365f87[_0xc15f('0x50')]=_0x365f87[_0xc15f('0x50')][_0xc15f('0x52')]?_0x365f87[_0xc15f('0x50')]:_0x2b2d08[_0xc15f('0x4b')];if(_0x15ca3f[_0xc15f('0x4c')][_0xc15f('0x5b')]){_0x365f87[_0xc15f('0x5c')]=[{'all':!![]}];}_0x365f87=_['merge']({},_0x365f87,_0x15ca3f[_0xc15f('0x5f')]);return db[_0xc15f('0x47')]['find'](_0x365f87)['then'](handleEntityNotFound(_0x59d9b4,null))['then'](respondWithResult(_0x59d9b4,null))[_0xc15f('0x2d')](handleError(_0x59d9b4,null));};exports[_0xc15f('0x38')]=function(_0x360ba8,_0x3106a3){if(_0x360ba8[_0xc15f('0x60')]['id']){delete _0x360ba8[_0xc15f('0x60')]['id'];}return db[_0xc15f('0x47')][_0xc15f('0x61')]({'where':{'id':_0x360ba8['params']['id']},'include':[{'model':db[_0xc15f('0x40')],'as':_0xc15f('0x41')},{'model':db[_0xc15f('0x42')],'as':'Smtp'},{'model':db[_0xc15f('0x44')],'as':'mandatoryDispositionPause'}]})[_0xc15f('0x24')](handleEntityNotFound(_0x3106a3,null))[_0xc15f('0x24')](saveUpdates(_0x360ba8[_0xc15f('0x60')],null))[_0xc15f('0x24')](function(_0xbb8fd0){if(_0xbb8fd0&&_0x360ba8[_0xc15f('0x60')]['Imap']){return db[_0xc15f('0x40')][_0xc15f('0x38')](_0x360ba8[_0xc15f('0x60')][_0xc15f('0x41')],{'where':{'MailAccountId':_0xbb8fd0['id']}})[_0xc15f('0x24')](function(){return _0xbb8fd0;});}return _0xbb8fd0;})[_0xc15f('0x24')](function(_0x20b167){if(_0x20b167&&_0x360ba8[_0xc15f('0x60')][_0xc15f('0x43')]){return db[_0xc15f('0x42')][_0xc15f('0x38')](_0x360ba8[_0xc15f('0x60')][_0xc15f('0x43')],{'where':{'MailAccountId':_0x20b167['id']}})[_0xc15f('0x24')](function(){return _0x20b167;});}return _0x20b167;})['then'](respondWithResult(_0x3106a3,null))[_0xc15f('0x2d')](handleError(_0x3106a3,null));};exports[_0xc15f('0x62')]=function(_0x131af3,_0x136d97){return db[_0xc15f('0x47')]['describe']()[_0xc15f('0x24')](respondWithResult(_0x136d97,null))['catch'](handleError(_0x136d97,null));};exports[_0xc15f('0x63')]=function(_0x27cb5b,_0x211d63,_0x3f0ed2){if(_0x27cb5b[_0xc15f('0x60')]['id']){delete _0x27cb5b[_0xc15f('0x60')]['id'];}return db[_0xc15f('0x47')][_0xc15f('0x61')]({'where':{'id':_0x27cb5b[_0xc15f('0x64')]['id']}})[_0xc15f('0x24')](handleEntityNotFound(_0x211d63,null))[_0xc15f('0x24')](function(_0x373d2f){if(_0x373d2f){_0x27cb5b[_0xc15f('0x60')][_0xc15f('0x65')]=_0x373d2f['id'];return db[_0xc15f('0x66')]['create'](_0x27cb5b[_0xc15f('0x60')]);}})[_0xc15f('0x24')](respondWithResult(_0x211d63,null))[_0xc15f('0x2d')](handleError(_0x211d63,null));};exports['getDispositions']=function(_0x1d543b,_0x1ea578,_0x24110d){var _0x23d887={'raw':![],'where':{}};var _0x516929={};var _0x516566={'count':0x0,'rows':[]};return db[_0xc15f('0x47')][_0xc15f('0x67')]({'where':{'id':_0x1d543b[_0xc15f('0x64')]['id']}})[_0xc15f('0x24')](handleEntityNotFound(_0x1ea578,null))[_0xc15f('0x24')](function(_0x189a27){if(_0x189a27){_0x516929['model']=_[_0xc15f('0x4d')](db['Disposition'][_0xc15f('0x48')]);_0x516929[_0xc15f('0x4c')]=_[_0xc15f('0x4d')](_0x1d543b['query']);_0x516929[_0xc15f('0x4e')]=_[_0xc15f('0x4f')](_0x516929['model'],_0x516929[_0xc15f('0x4c')]);_0x23d887[_0xc15f('0x50')]=_[_0xc15f('0x4f')](_0x516929[_0xc15f('0x4b')],qs[_0xc15f('0x51')](_0x1d543b[_0xc15f('0x4c')][_0xc15f('0x51')]));_0x23d887[_0xc15f('0x50')]=_0x23d887[_0xc15f('0x50')][_0xc15f('0x52')]?_0x23d887[_0xc15f('0x50')]:_0x516929[_0xc15f('0x4b')];if(!_0x1d543b['query'][_0xc15f('0x68')]('nolimit')){_0x23d887[_0xc15f('0x34')]=qs[_0xc15f('0x34')](_0x1d543b[_0xc15f('0x4c')][_0xc15f('0x34')]);_0x23d887[_0xc15f('0x31')]=qs[_0xc15f('0x31')](_0x1d543b[_0xc15f('0x4c')][_0xc15f('0x31')]);}_0x23d887[_0xc15f('0x54')]=qs[_0xc15f('0x55')](_0x1d543b[_0xc15f('0x4c')][_0xc15f('0x55')]);_0x23d887['where']=qs['filters'](_['pick'](_0x1d543b[_0xc15f('0x4c')],_0x516929[_0xc15f('0x4e')]));_0x23d887[_0xc15f('0x56')][_0xc15f('0x65')]=_0x189a27['id'];if(_0x1d543b[_0xc15f('0x4c')][_0xc15f('0x58')]){_0x23d887['where']=_[_0xc15f('0x59')](_0x23d887['where'],{'$or':_['map'](_0x23d887[_0xc15f('0x50')],function(_0x3d2c3d){var _0x3ffd31={};_0x3ffd31[_0x3d2c3d]={'$like':'%'+_0x1d543b[_0xc15f('0x4c')][_0xc15f('0x58')]+'%'};return _0x3ffd31;})});}_0x23d887=_[_0xc15f('0x59')]({},_0x23d887,_0x1d543b['options']);return db['Disposition'][_0xc15f('0x33')]({'where':_0x23d887['where']})['then'](function(_0x220bbb){_0x516566[_0xc15f('0x33')]=_0x220bbb;if(_0x1d543b[_0xc15f('0x4c')][_0xc15f('0x5b')]){_0x23d887[_0xc15f('0x5c')]=[{'all':!![]}];}return db[_0xc15f('0x66')][_0xc15f('0x69')](_0x23d887);})[_0xc15f('0x24')](function(_0x50b4d6){_0x516566[_0xc15f('0x5d')]=_0x50b4d6;return _0x516566;});}})[_0xc15f('0x24')](respondWithFilteredResult(_0x1ea578,_0x23d887))['catch'](handleError(_0x1ea578,null));};exports[_0xc15f('0x6a')]=function(_0x34c11d,_0x1d8759,_0xe24e55){return db['MailAccount'][_0xc15f('0x61')]({'where':{'id':_0x34c11d[_0xc15f('0x64')]['id']}})[_0xc15f('0x24')](handleEntityNotFound(_0x1d8759,null))['then'](function(_0x2266ab){if(_0x2266ab){return _0x2266ab[_0xc15f('0x6a')](_0x34c11d[_0xc15f('0x4c')]['ids']);}})[_0xc15f('0x24')](respondWithStatusCode(_0x1d8759,null))[_0xc15f('0x2d')](handleError(_0x1d8759,null));};exports[_0xc15f('0x6b')]=function(_0xe7bd9e,_0x11c98c,_0x368ecd){if(_0xe7bd9e[_0xc15f('0x60')]['id']){delete _0xe7bd9e[_0xc15f('0x60')]['id'];}return db[_0xc15f('0x47')][_0xc15f('0x61')]({'where':{'id':_0xe7bd9e['params']['id']}})['then'](handleEntityNotFound(_0x11c98c,null))[_0xc15f('0x24')](function(_0x124667){if(_0x124667){_0xe7bd9e[_0xc15f('0x60')][_0xc15f('0x65')]=_0x124667['id'];return db[_0xc15f('0x6c')][_0xc15f('0x6d')](_0xe7bd9e[_0xc15f('0x60')]);}})[_0xc15f('0x24')](respondWithResult(_0x11c98c,null))[_0xc15f('0x2d')](handleError(_0x11c98c,null));};exports['getAnswers']=function(_0x5de9cf,_0x17122c,_0x1a4494){var _0xcfbe83={'raw':![],'where':{}};var _0x31a686={};var _0x16a5a6={'count':0x0,'rows':[]};return db['MailAccount'][_0xc15f('0x67')]({'where':{'id':_0x5de9cf[_0xc15f('0x64')]['id']}})[_0xc15f('0x24')](handleEntityNotFound(_0x17122c,null))[_0xc15f('0x24')](function(_0x1f93b4){if(_0x1f93b4){_0x31a686[_0xc15f('0x4b')]=_[_0xc15f('0x4d')](db[_0xc15f('0x6c')][_0xc15f('0x48')]);_0x31a686[_0xc15f('0x4c')]=_['keys'](_0x5de9cf[_0xc15f('0x4c')]);_0x31a686[_0xc15f('0x4e')]=_[_0xc15f('0x4f')](_0x31a686[_0xc15f('0x4b')],_0x31a686[_0xc15f('0x4c')]);_0xcfbe83[_0xc15f('0x50')]=_[_0xc15f('0x4f')](_0x31a686[_0xc15f('0x4b')],qs[_0xc15f('0x51')](_0x5de9cf['query'][_0xc15f('0x51')]));_0xcfbe83['attributes']=_0xcfbe83[_0xc15f('0x50')][_0xc15f('0x52')]?_0xcfbe83[_0xc15f('0x50')]:_0x31a686[_0xc15f('0x4b')];if(!_0x5de9cf[_0xc15f('0x4c')]['hasOwnProperty'](_0xc15f('0x53'))){_0xcfbe83[_0xc15f('0x34')]=qs[_0xc15f('0x34')](_0x5de9cf[_0xc15f('0x4c')][_0xc15f('0x34')]);_0xcfbe83[_0xc15f('0x31')]=qs[_0xc15f('0x31')](_0x5de9cf[_0xc15f('0x4c')][_0xc15f('0x31')]);}_0xcfbe83[_0xc15f('0x54')]=qs['sort'](_0x5de9cf[_0xc15f('0x4c')][_0xc15f('0x55')]);_0xcfbe83[_0xc15f('0x56')]=qs[_0xc15f('0x4e')](_['pick'](_0x5de9cf[_0xc15f('0x4c')],_0x31a686[_0xc15f('0x4e')]));_0xcfbe83[_0xc15f('0x56')][_0xc15f('0x65')]=_0x1f93b4['id'];if(_0x5de9cf[_0xc15f('0x4c')][_0xc15f('0x58')]){_0xcfbe83[_0xc15f('0x56')]=_[_0xc15f('0x59')](_0xcfbe83[_0xc15f('0x56')],{'$or':_[_0xc15f('0x46')](_0xcfbe83['attributes'],function(_0x5b4488){var _0x383a42={};_0x383a42[_0x5b4488]={'$like':'%'+_0x5de9cf['query'][_0xc15f('0x58')]+'%'};return _0x383a42;})});}_0xcfbe83=_[_0xc15f('0x59')]({},_0xcfbe83,_0x5de9cf[_0xc15f('0x5f')]);return db[_0xc15f('0x6c')][_0xc15f('0x33')]({'where':_0xcfbe83[_0xc15f('0x56')]})[_0xc15f('0x24')](function(_0x26196e){_0x16a5a6['count']=_0x26196e;if(_0x5de9cf['query']['includeAll']){_0xcfbe83[_0xc15f('0x5c')]=[{'all':!![]}];}return db['CannedAnswer'][_0xc15f('0x69')](_0xcfbe83);})[_0xc15f('0x24')](function(_0x1ae697){_0x16a5a6['rows']=_0x1ae697;return _0x16a5a6;});}})[_0xc15f('0x24')](respondWithFilteredResult(_0x17122c,_0xcfbe83))[_0xc15f('0x2d')](handleError(_0x17122c,null));};exports[_0xc15f('0x6e')]=function(_0xaca4cb,_0x551a85,_0x33098e){return db[_0xc15f('0x47')]['find']({'where':{'id':_0xaca4cb[_0xc15f('0x64')]['id']}})[_0xc15f('0x24')](handleEntityNotFound(_0x551a85,null))[_0xc15f('0x24')](function(_0x2d382d){if(_0x2d382d){return _0x2d382d[_0xc15f('0x6e')](_0xaca4cb[_0xc15f('0x4c')][_0xc15f('0x6f')]);}})[_0xc15f('0x24')](respondWithStatusCode(_0x551a85,null))[_0xc15f('0x2d')](handleError(_0x551a85,null));};exports[_0xc15f('0x6d')]=function(_0x7ff98f,_0x471b41){var _0x1ad7bd={'name':_0x7ff98f['body'][_0xc15f('0x3d')],'key':_0x7ff98f[_0xc15f('0x60')]['key'],'email':_0x7ff98f[_0xc15f('0x60')][_0xc15f('0x70')],'ListId':_0x7ff98f['body']['ListId'],'active':!_['isNil'](_0x7ff98f[_0xc15f('0x60')]['active'])?_0x7ff98f['body']['active']:!![],'description':_0x7ff98f['body'][_0xc15f('0x71')]||null,'Imap':{},'Smtp':{}};if(_[_0xc15f('0x72')](_0x7ff98f[_0xc15f('0x60')][_0xc15f('0x73')])){if(_0x7ff98f[_0xc15f('0x60')][_0xc15f('0x74')]){_0x1ad7bd[_0xc15f('0x41')]['user']=_0x1ad7bd[_0xc15f('0x43')][_0xc15f('0x75')]=_0x7ff98f['body'][_0xc15f('0x76')];_0x1ad7bd[_0xc15f('0x41')][_0xc15f('0x77')]=_0x1ad7bd[_0xc15f('0x43')][_0xc15f('0x78')]=_0x7ff98f[_0xc15f('0x60')][_0xc15f('0x79')];}else{_0x1ad7bd['Imap'][_0xc15f('0x7a')]=_0x1ad7bd[_0xc15f('0x43')][_0xc15f('0x7a')]=![];}_0x1ad7bd[_0xc15f('0x41')][_0xc15f('0x7b')]=_0x7ff98f[_0xc15f('0x60')][_0xc15f('0x41')][_0xc15f('0x7b')];_0x1ad7bd[_0xc15f('0x41')]['port']=_0x7ff98f[_0xc15f('0x60')][_0xc15f('0x41')][_0xc15f('0x7c')];_0x1ad7bd[_0xc15f('0x43')][_0xc15f('0x7b')]=_0x7ff98f['body'][_0xc15f('0x43')]['host'];_0x1ad7bd[_0xc15f('0x43')][_0xc15f('0x7c')]=_0x7ff98f[_0xc15f('0x60')][_0xc15f('0x43')][_0xc15f('0x7c')];}else{_0x1ad7bd[_0xc15f('0x41')][_0xc15f('0x7d')]=_0x1ad7bd[_0xc15f('0x43')][_0xc15f('0x7d')]=_0x7ff98f['body'][_0xc15f('0x73')];_0x1ad7bd['Imap'][_0xc15f('0x75')]=_0x1ad7bd['Smtp'][_0xc15f('0x75')]=_0x7ff98f[_0xc15f('0x60')][_0xc15f('0x76')];_0x1ad7bd[_0xc15f('0x41')][_0xc15f('0x77')]=_0x1ad7bd['Smtp']['pass']=_0x7ff98f['body'][_0xc15f('0x79')];}return db[_0xc15f('0x47')][_0xc15f('0x6d')](_0x1ad7bd,{'include':[{'model':db[_0xc15f('0x42')],'as':_0xc15f('0x43')},{'model':db[_0xc15f('0x40')],'as':_0xc15f('0x41')}]})[_0xc15f('0x24')](function(_0x57b759){var _0x2c8e7b=_0x7ff98f[_0xc15f('0x75')][_0xc15f('0x3a')]({'plain':!![]});if(!_0x2c8e7b)throw new Error(_0xc15f('0x7e'));if(_0x2c8e7b['role']===_0xc15f('0x75')){var _0x2c5283=_0x57b759['get']({'plain':!![]});return db[_0xc15f('0x7f')][_0xc15f('0x61')]({'where':{'name':_0xc15f('0x80'),'userProfileId':_0x2c8e7b[_0xc15f('0x81')]},'raw':!![]})['then'](function(_0x1f3bdd){if(_0x1f3bdd&&_0x1f3bdd[_0xc15f('0x82')]===0x0){return db[_0xc15f('0x3b')][_0xc15f('0x6d')]({'name':_0x2c5283[_0xc15f('0x3d')],'resourceId':_0x2c5283['id'],'type':_0x1f3bdd['name'],'sectionId':_0x1f3bdd['id']},{})['then'](function(){return _0x57b759;});}else{return _0x57b759;}})['catch'](function(_0x3baf95){logger[_0xc15f('0x29')](_0xc15f('0x83'),_0x3baf95);throw _0x3baf95;});}return _0x57b759;})['then'](respondWithResult(_0x471b41,0xc9))[_0xc15f('0x2d')](handleError(_0x471b41,null));};exports[_0xc15f('0x84')]=function(_0x5d640a,_0x5cc973,_0x83d4a0){return db[_0xc15f('0x47')]['findOne']({'where':{'id':_0x5d640a['params']['id']}})[_0xc15f('0x24')](handleEntityNotFound(_0x5cc973,null))[_0xc15f('0x24')](function(_0x4a1a08){if(_0x4a1a08){return _0x4a1a08[_0xc15f('0x84')]();}return null;})['then'](respondWithResult(_0x5cc973,null))['catch'](handleError(_0x5cc973,null));};exports[_0xc15f('0x85')]=function(_0x503dcd,_0x5bb270,_0x1f74ab){if(_0x503dcd[_0xc15f('0x60')]['id']){delete _0x503dcd['body']['id'];}return db[_0xc15f('0x47')][_0xc15f('0x61')]({'where':{'id':_0x503dcd[_0xc15f('0x64')]['id']}})[_0xc15f('0x24')](handleEntityNotFound(_0x5bb270,null))[_0xc15f('0x24')](function(_0x11a719){if(_0x11a719){_0x503dcd[_0xc15f('0x60')]['MailAccountId']=_0x11a719['id'];return db[_0xc15f('0x40')][_0xc15f('0x6d')](_0x503dcd['body']);}})[_0xc15f('0x24')](respondWithResult(_0x5bb270,null))[_0xc15f('0x2d')](handleError(_0x5bb270,null));};exports[_0xc15f('0x86')]=function(_0x57acf4,_0x242171,_0x426a9c){return db[_0xc15f('0x47')][_0xc15f('0x67')]({'where':{'id':_0x57acf4['params']['id']}})['then'](handleEntityNotFound(_0x242171,null))[_0xc15f('0x24')](function(_0x494c75){if(_0x494c75){return _0x494c75['setImap'](null);}return null;})[_0xc15f('0x24')](respondWithStatusCode(_0x242171,null))[_0xc15f('0x2d')](handleError(_0x242171,null));};exports['getSmtp']=function(_0x4bd2e4,_0x412d68,_0xe0eff5){return db[_0xc15f('0x47')]['findOne']({'where':{'id':_0x4bd2e4[_0xc15f('0x64')]['id']}})['then'](handleEntityNotFound(_0x412d68,null))[_0xc15f('0x24')](function(_0x249440){if(_0x249440){return _0x249440[_0xc15f('0x87')]();}return null;})[_0xc15f('0x24')](respondWithResult(_0x412d68,null))[_0xc15f('0x2d')](handleError(_0x412d68,null));};exports[_0xc15f('0x88')]=function(_0x3f4c42,_0x1e8dcb,_0x2da685){if(_0x3f4c42[_0xc15f('0x60')]['id']){delete _0x3f4c42[_0xc15f('0x60')]['id'];}return db[_0xc15f('0x47')]['find']({'where':{'id':_0x3f4c42[_0xc15f('0x64')]['id']}})[_0xc15f('0x24')](handleEntityNotFound(_0x1e8dcb,null))[_0xc15f('0x24')](function(_0x5edb29){if(_0x5edb29){_0x3f4c42[_0xc15f('0x60')]['MailAccountId']=_0x5edb29['id'];return db[_0xc15f('0x42')][_0xc15f('0x6d')](_0x3f4c42[_0xc15f('0x60')]);}})[_0xc15f('0x24')](respondWithResult(_0x1e8dcb,null))[_0xc15f('0x2d')](handleError(_0x1e8dcb,null));};exports['removeSmtp']=function(_0x263a11,_0x18291c,_0x5bb56b){return db[_0xc15f('0x47')][_0xc15f('0x67')]({'where':{'id':_0x263a11[_0xc15f('0x64')]['id']}})['then'](handleEntityNotFound(_0x18291c,null))[_0xc15f('0x24')](function(_0x2f0387){if(_0x2f0387){return _0x2f0387['setSmtp'](null);}return null;})['then'](respondWithStatusCode(_0x18291c,null))['catch'](handleError(_0x18291c,null));};exports[_0xc15f('0x89')]=function(_0x4ad7a7,_0x102d8e,_0x67d7d7){return db[_0xc15f('0x8a')][_0xc15f('0x61')]({'where':{'id':_0x4ad7a7[_0xc15f('0x64')]['id']}})[_0xc15f('0x24')](handleEntityNotFound(_0x102d8e,null))[_0xc15f('0x24')](function(_0x4d6d8f){if(_0x4d6d8f){return _0x4d6d8f[_0xc15f('0x89')](_0x4ad7a7[_0xc15f('0x60')][_0xc15f('0x6f')],_[_0xc15f('0x8b')](_0x4ad7a7['body'],['ids','id'])||{});}})[_0xc15f('0x24')](respondWithResult(_0x102d8e,null))[_0xc15f('0x2d')](handleError(_0x102d8e,null));};exports['getInteractions']=function(_0x586fa8,_0x1ba842,_0x55f8a4){var _0x321078={'raw':![],'where':{}};var _0x15cbb1={};var _0x2ee783={'count':0x0,'rows':[]};return db[_0xc15f('0x47')][_0xc15f('0x67')]({'where':{'id':_0x586fa8['params']['id']}})[_0xc15f('0x24')](handleEntityNotFound(_0x1ba842,null))[_0xc15f('0x24')](function(_0x29c53e){if(_0x29c53e){_0x15cbb1[_0xc15f('0x4b')]=_['keys'](db[_0xc15f('0x8a')][_0xc15f('0x48')]);_0x15cbb1[_0xc15f('0x4c')]=_[_0xc15f('0x4d')](_0x586fa8[_0xc15f('0x4c')]);_0x15cbb1['filters']=_[_0xc15f('0x4f')](_0x15cbb1['model'],_0x15cbb1[_0xc15f('0x4c')]);_0x321078[_0xc15f('0x50')]=_[_0xc15f('0x4f')](_0x15cbb1[_0xc15f('0x4b')],qs[_0xc15f('0x51')](_0x586fa8[_0xc15f('0x4c')][_0xc15f('0x51')]));_0x321078[_0xc15f('0x50')]=_0x321078[_0xc15f('0x50')][_0xc15f('0x52')]?_0x321078['attributes']:_0x15cbb1[_0xc15f('0x4b')];if(!_0x586fa8[_0xc15f('0x4c')][_0xc15f('0x68')](_0xc15f('0x53'))){_0x321078[_0xc15f('0x34')]=qs[_0xc15f('0x34')](_0x586fa8[_0xc15f('0x4c')][_0xc15f('0x34')]);_0x321078[_0xc15f('0x31')]=qs['offset'](_0x586fa8[_0xc15f('0x4c')][_0xc15f('0x31')]);}_0x321078[_0xc15f('0x54')]=qs[_0xc15f('0x55')](_0x586fa8[_0xc15f('0x4c')][_0xc15f('0x55')]);_0x321078['where']=qs['filters'](_[_0xc15f('0x57')](_0x586fa8[_0xc15f('0x4c')],_0x15cbb1[_0xc15f('0x4e')]));_0x321078[_0xc15f('0x56')]['MailAccountId']=_0x29c53e['id'];if(_0x586fa8['query']['filter']){_0x321078[_0xc15f('0x56')]=_[_0xc15f('0x59')](_0x321078['where'],{'$or':_[_0xc15f('0x46')](_0x321078[_0xc15f('0x50')],function(_0x19f079){var _0x50ae40={};_0x50ae40[_0x19f079]={'$like':'%'+_0x586fa8[_0xc15f('0x4c')][_0xc15f('0x58')]+'%'};return _0x50ae40;})});}_0x321078=_[_0xc15f('0x59')]({},_0x321078,_0x586fa8[_0xc15f('0x5f')]);return db[_0xc15f('0x8a')][_0xc15f('0x33')]({'where':_0x321078['where']})[_0xc15f('0x24')](function(_0xea9264){_0x2ee783[_0xc15f('0x33')]=_0xea9264;if(_0x586fa8['query'][_0xc15f('0x5b')]){_0x321078['include']=[{'model':db[_0xc15f('0x8c')],'as':_0xc15f('0x8d'),'required':![]},{'model':db['User'],'as':_0xc15f('0x8e'),'attributes':[_0xc15f('0x3d'),_0xc15f('0x8f'),_0xc15f('0x90')],'required':![]},{'model':db[_0xc15f('0x91')],'as':_0xc15f('0x92'),'attributes':['id',_0xc15f('0x3d'),_0xc15f('0x93')],'where':_0x586fa8[_0xc15f('0x4c')][_0xc15f('0x94')]?{'id':_0x586fa8['query']['tag']}:undefined,'required':_0x586fa8[_0xc15f('0x4c')][_0xc15f('0x94')]?!![]:![]}];}return db[_0xc15f('0x8a')][_0xc15f('0x69')](_0x321078);})[_0xc15f('0x24')](function(_0x19d5b5){_0x2ee783[_0xc15f('0x5d')]=_0x19d5b5;return _0x2ee783;});}})['then'](respondWithFilteredResult(_0x1ba842,_0x321078))[_0xc15f('0x2d')](handleError(_0x1ba842,null));};exports[_0xc15f('0x95')]=function(_0x303544,_0x58e75c,_0x4570bf){return db['MailAccount']['findOne']({'where':{'id':_0x303544[_0xc15f('0x64')]['id']}})['then'](handleEntityNotFound(_0x58e75c,null))['then'](function(_0x11f187){if(_0x11f187){return db[_0xc15f('0x96')][_0xc15f('0x97')](function(_0x4dba29){return db[_0xc15f('0x98')][_0xc15f('0x39')]({'where':{'MailAccountId':_0x303544['params']['id']},'transaction':_0x4dba29})[_0xc15f('0x24')](function(_0x44efac){var _0x524a63=_[_0xc15f('0x46')](_0x303544['body'],function(_0x214208){_0x214208[_0xc15f('0x65')]=_0x303544[_0xc15f('0x64')]['id'];return _0x214208;});return db[_0xc15f('0x98')]['bulkCreate'](_0x524a63,{'transaction':_0x4dba29});});})['then'](function(){return db[_0xc15f('0x98')][_0xc15f('0x99')]({'where':{'MailAccountId':_0x303544['params']['id']},'order':_0xc15f('0x9a')});});}})[_0xc15f('0x24')](respondWithResult(_0x58e75c,null))[_0xc15f('0x2d')](handleError(_0x58e75c,null));};exports[_0xc15f('0x9b')]=function(_0x5ef789,_0x4fc474,_0x1e4348){var _0x22b3f4={};var _0x4cf236={};var _0x443fc6;var _0x2c8c2c;return db['MailAccount'][_0xc15f('0x67')]({'where':{'id':_0x5ef789['params']['id']}})[_0xc15f('0x24')](handleEntityNotFound(_0x4fc474,null))[_0xc15f('0x24')](function(_0x4b9a9f){if(_0x4b9a9f){_0x443fc6=_0x4b9a9f;_0x4cf236[_0xc15f('0x4b')]=_[_0xc15f('0x4d')](db['MailApplication']['rawAttributes']);_0x4cf236[_0xc15f('0x4c')]=_[_0xc15f('0x4d')](_0x5ef789[_0xc15f('0x4c')]);_0x4cf236[_0xc15f('0x4e')]=_[_0xc15f('0x4f')](_0x4cf236[_0xc15f('0x4b')],_0x4cf236[_0xc15f('0x4c')]);_0x22b3f4[_0xc15f('0x50')]=_[_0xc15f('0x4f')](_0x4cf236[_0xc15f('0x4b')],qs[_0xc15f('0x51')](_0x5ef789['query'][_0xc15f('0x51')]));_0x22b3f4['attributes']=_0x22b3f4['attributes'][_0xc15f('0x52')]?_0x22b3f4[_0xc15f('0x50')]:_0x4cf236['model'];_0x22b3f4[_0xc15f('0x54')]=qs['sort'](_0x5ef789['query'][_0xc15f('0x55')]);_0x22b3f4[_0xc15f('0x56')]=qs[_0xc15f('0x4e')](_[_0xc15f('0x57')](_0x5ef789[_0xc15f('0x4c')],_0x4cf236[_0xc15f('0x4e')]));if(_0x5ef789[_0xc15f('0x4c')][_0xc15f('0x58')]){_0x22b3f4['where']=_['merge'](_0x22b3f4[_0xc15f('0x56')],{'$or':_[_0xc15f('0x46')](_0x22b3f4[_0xc15f('0x50')],function(_0x2a1a90){var _0x27c231={};_0x27c231[_0x2a1a90]={'$like':'%'+_0x5ef789[_0xc15f('0x4c')][_0xc15f('0x58')]+'%'};return _0x27c231;})});}_0x22b3f4=_[_0xc15f('0x59')]({},_0x22b3f4,_0x5ef789['options']);return _0x443fc6[_0xc15f('0x9b')](_0x22b3f4);}})[_0xc15f('0x24')](function(_0x337095){if(_0x337095){_0x2c8c2c=_0x337095[_0xc15f('0x52')];if(!_0x5ef789[_0xc15f('0x4c')][_0xc15f('0x68')](_0xc15f('0x53'))){_0x22b3f4['limit']=qs['limit'](_0x5ef789[_0xc15f('0x4c')]['limit']);_0x22b3f4[_0xc15f('0x31')]=qs[_0xc15f('0x31')](_0x5ef789[_0xc15f('0x4c')][_0xc15f('0x31')]);}return _0x443fc6[_0xc15f('0x9b')](_0x22b3f4);}})['then'](function(_0x4dfb3c){if(_0x4dfb3c){return _0x4dfb3c?{'count':_0x2c8c2c,'rows':_0x4dfb3c}:null;}})['then'](respondWithResult(_0x4fc474,null))['catch'](handleError(_0x4fc474,null));};exports[_0xc15f('0x9c')]=function(_0x4b25f8,_0x428766,_0x29916f){var _0x51163e={'raw':!![],'where':{}};var _0x2596bb={};var _0x348953={'count':0x0,'rows':[]};return db[_0xc15f('0x47')]['findOne']({'where':{'id':_0x4b25f8['params']['id']}})[_0xc15f('0x24')](handleEntityNotFound(_0x428766,null))[_0xc15f('0x24')](function(_0x180477){if(_0x180477){_0x2596bb[_0xc15f('0x4b')]=_['keys'](db[_0xc15f('0x9d')][_0xc15f('0x48')]);_0x2596bb[_0xc15f('0x4c')]=_[_0xc15f('0x4d')](_0x4b25f8['query']);_0x2596bb[_0xc15f('0x4e')]=_[_0xc15f('0x4f')](_0x2596bb[_0xc15f('0x4b')],_0x2596bb[_0xc15f('0x4c')]);_0x51163e[_0xc15f('0x50')]=_[_0xc15f('0x4f')](_0x2596bb[_0xc15f('0x4b')],qs['fields'](_0x4b25f8[_0xc15f('0x4c')]['fields']));_0x51163e[_0xc15f('0x50')]=_0x51163e[_0xc15f('0x50')][_0xc15f('0x52')]?_0x51163e[_0xc15f('0x50')]:_0x2596bb['model'];if(!_0x4b25f8[_0xc15f('0x4c')][_0xc15f('0x68')](_0xc15f('0x53'))){_0x51163e[_0xc15f('0x34')]=qs[_0xc15f('0x34')](_0x4b25f8['query']['limit']);_0x51163e['offset']=qs[_0xc15f('0x31')](_0x4b25f8[_0xc15f('0x4c')]['offset']);}_0x51163e[_0xc15f('0x54')]=qs[_0xc15f('0x55')](_0x4b25f8[_0xc15f('0x4c')][_0xc15f('0x55')]);_0x51163e['where']=qs[_0xc15f('0x4e')](_[_0xc15f('0x57')](_0x4b25f8['query'],_0x2596bb[_0xc15f('0x4e')]));_0x51163e['where'][_0xc15f('0x65')]=_0x180477['id'];if(_0x4b25f8[_0xc15f('0x4c')][_0xc15f('0x58')]){_0x51163e[_0xc15f('0x56')]=_[_0xc15f('0x59')](_0x51163e[_0xc15f('0x56')],{'$or':_[_0xc15f('0x46')](_0x51163e[_0xc15f('0x50')],function(_0x1b1837){var _0x160470={};_0x160470[_0x1b1837]={'$like':'%'+_0x4b25f8['query'][_0xc15f('0x58')]+'%'};return _0x160470;})});}if(_0x4b25f8[_0xc15f('0x4c')][_0xc15f('0x9e')]){var _0x2a61db=_0x4b25f8[_0xc15f('0x4c')]['$gte'][_0xc15f('0x9f')](',');var _0x27d512={};_0x27d512[_0x2a61db[0x0]]={'$gte':moment(_0x2a61db[0x1])[_0xc15f('0xa0')](_0xc15f('0xa1'))};_0x51163e[_0xc15f('0x56')]=_[_0xc15f('0x59')](_0x51163e['where'],_0x27d512);}_0x51163e=_[_0xc15f('0x59')]({},_0x51163e,_0x4b25f8[_0xc15f('0x5f')]);return db[_0xc15f('0x9d')][_0xc15f('0x33')]({'where':_0x51163e[_0xc15f('0x56')]})['then'](function(_0x1381c2){_0x348953['count']=_0x1381c2;if(_0x4b25f8['query']['includeAll']){_0x51163e[_0xc15f('0x5c')]=[{'all':!![]}];}return db[_0xc15f('0x9d')][_0xc15f('0x69')](_0x51163e);})[_0xc15f('0x24')](function(_0x37ac1f){if(_0x4b25f8[_0xc15f('0x4c')]['inlineCss']==='true'){for(var _0x5c812b=0x0;_0x5c812b<_0x37ac1f[_0xc15f('0x52')];_0x5c812b++){_0x37ac1f[_0x5c812b][_0xc15f('0x60')]=juice(_0x37ac1f[_0x5c812b]['body']);}}_0x348953[_0xc15f('0x5d')]=_0x37ac1f;return _0x348953;});}})[_0xc15f('0x24')](respondWithFilteredResult(_0x428766,_0x51163e))['catch'](handleError(_0x428766,null));};exports[_0xc15f('0x3e')]=function(_0xd52234,_0x71b87e,_0x3fe6b4){var _0x46011e,_0x5e302c={},_0x223e2e;if(_0xd52234[_0xc15f('0x60')]['to']){_0x223e2e=_0xd52234[_0xc15f('0x60')]['to'][_0xc15f('0x9f')](',')[0x0];}return db[_0xc15f('0x47')][_0xc15f('0x61')]({'where':{'id':_0xd52234[_0xc15f('0x64')]['id']},'include':[{'model':db[_0xc15f('0xa2')],'as':'List','include':[{'model':db[_0xc15f('0x8c')],'as':_0xc15f('0xa3'),'where':{'email':_0x223e2e},'limit':0x1,'order':[[_0xc15f('0xa4'),_0xc15f('0xa5')]]}]},{'model':db['MailServerOut'],'as':'Smtp','raw':!![]}]})[_0xc15f('0x24')](handleEntityNotFound(_0x71b87e,null))[_0xc15f('0x24')](function(_0x9bd172){if(_0x9bd172){_0x46011e=_0x9bd172;if(_0x9bd172[_0xc15f('0x43')]){if(_['isNil'](_0xd52234[_0xc15f('0x60')][_0xc15f('0xa6')])){_0xd52234[_0xc15f('0x60')][_0xc15f('0xa6')]=util[_0xc15f('0xa0')](_0xc15f('0xa7'),_0x9bd172[_0xc15f('0x3d')],_0x9bd172[_0xc15f('0x70')]||_0x9bd172[_0xc15f('0x43')][_0xc15f('0x75')]);}if(_0xd52234['body'][_0xc15f('0xa8')]&&_0xd52234[_0xc15f('0x60')][_0xc15f('0xa8')][_0xc15f('0x52')]){for(var _0x59dbe8=0x0;_0x59dbe8<_0xd52234['body']['attachments']['length'];_0x59dbe8+=0x1){_0xd52234['body'][_0xc15f('0xa8')][_0x59dbe8]={'filename':_0xd52234[_0xc15f('0x60')][_0xc15f('0xa8')][_0x59dbe8][_0xc15f('0x3d')],'path':path[_0xc15f('0xa9')](config[_0xc15f('0xaa')],_0xc15f('0xab'),_0xd52234['body'][_0xc15f('0xa8')][_0x59dbe8][_0xc15f('0xac')])};}}var _0x1558f2={'tls':{'rejectUnauthorized':![]}};if(_[_0xc15f('0x72')](_0x9bd172[_0xc15f('0x43')][_0xc15f('0x7d')])){if(_0x9bd172[_0xc15f('0x43')][_0xc15f('0x7a')]){_0x1558f2[_0xc15f('0xad')]={'user':_0x9bd172[_0xc15f('0x43')][_0xc15f('0x75')],'pass':_0x9bd172[_0xc15f('0x43')][_0xc15f('0x78')]};}_0x1558f2['host']=_0x9bd172[_0xc15f('0x43')][_0xc15f('0x7b')];_0x1558f2[_0xc15f('0x7c')]=_0x9bd172['Smtp'][_0xc15f('0x7c')];_0x1558f2['secure']=_0x9bd172[_0xc15f('0x43')][_0xc15f('0xae')];}else{_0x1558f2[_0xc15f('0x7d')]=_0x9bd172[_0xc15f('0x43')][_0xc15f('0x7d')];_0x1558f2[_0xc15f('0xad')]={'user':_0x9bd172['Smtp'][_0xc15f('0x75')],'pass':_0x9bd172[_0xc15f('0x43')][_0xc15f('0x78')]};}return respondWithRpcPromise('SendMail',_0xc15f('0xaf'),{'account':_0x1558f2,'message':_0xd52234['body']});}else{throw new Error(_0xc15f('0xb0'));}}})[_0xc15f('0x24')](function(_0x1ecee8){if(_0x1ecee8){_0x5e302c=_0x1ecee8;if(_0x46011e['List']){if(_0x46011e['List'][_0xc15f('0xa3')][_0xc15f('0x52')]){return _0x46011e[_0xc15f('0xb1')][_0xc15f('0xa3')][0x0];}else{return db[_0xc15f('0x8c')][_0xc15f('0x6d')](_[_0xc15f('0x1c')](_0xd52234[_0xc15f('0x60')],{'firstName':_0xd52234[_0xc15f('0x60')]['to'],'email':_0xd52234[_0xc15f('0x60')]['to'],'phone':_0xd52234['body']['to'],'ListId':_0x46011e['ListId']}));}}else{throw new Error(_0xc15f('0xb0'));}}})[_0xc15f('0x24')](function(_0x36c68e){if(_0x36c68e){var _0x420d8={'UserId':_0xd52234['user']['id'],'ContactId':_0x36c68e['id'],'MailAccountId':_0x46011e['id'],'inReplyTo':_0x5e302c[_0xc15f('0xb2')],'to':_0xd52234[_0xc15f('0x60')][_0xc15f('0xa6')],'cc':_0xd52234['body']['cc'],'subject':_0xd52234[_0xc15f('0x60')][_0xc15f('0xb3')],'attach':_0xd52234[_0xc15f('0x60')][_0xc15f('0xb4')],'firstMsgDirection':'out','lastMsgAt':moment()[_0xc15f('0xa0')](_0xc15f('0xa1')),'lastMsgDirection':_0xc15f('0xb5'),'Messages':[_[_0xc15f('0x59')](_0xd52234['body'],{'messageId':_0x5e302c[_0xc15f('0xb2')],'sentAt':moment()[_0xc15f('0xa0')](_0xc15f('0xa1')),'read':!![],'MailAccountId':_0x46011e['id'],'UserId':_0xd52234[_0xc15f('0x75')]['id'],'ContactId':_0x36c68e['id']})]};if(_0xd52234[_0xc15f('0x60')]['Interaction']){_0x420d8=_[_0xc15f('0x59')](_0x420d8,_0xd52234['body']['Interaction']);}return db[_0xc15f('0x8a')]['create'](_0x420d8,{'include':[{'model':db[_0xc15f('0x9d')],'as':_0xc15f('0xb6')}]});}})['then'](respondWithResult(_0x71b87e,null))['catch'](handleError(_0x71b87e,null));};exports[_0xc15f('0xb7')]=function(_0x32075c,_0x592408,_0x2a52da){return db[_0xc15f('0x47')][_0xc15f('0x61')]({'where':{'id':_0x32075c[_0xc15f('0x64')]['id']},'include':[{'model':db['MailServerOut'],'as':_0xc15f('0x43'),'raw':!![]}]})['then'](handleEntityNotFound(_0x592408,null))[_0xc15f('0x24')](function(_0xef4ea8){if(_0xef4ea8&&_0xef4ea8[_0xc15f('0x43')]){var _0x3aea54={'id':_0xef4ea8['id'],'tls':{'rejectUnauthorized':![]}};if(_0xef4ea8['Smtp']['service']){_0x3aea54[_0xc15f('0x7d')]=_0xef4ea8[_0xc15f('0x43')][_0xc15f('0x7d')];}else{_0x3aea54[_0xc15f('0x7b')]=_0xef4ea8['Smtp'][_0xc15f('0x7b')];_0x3aea54['port']=_0xef4ea8['Smtp'][_0xc15f('0x7c')];_0x3aea54[_0xc15f('0xae')]=_0xef4ea8[_0xc15f('0x43')][_0xc15f('0xae')];}if(_0xef4ea8['Smtp']['authentication']){_0x3aea54[_0xc15f('0xad')]={'user':_0xef4ea8[_0xc15f('0x43')][_0xc15f('0x75')],'pass':_0xef4ea8[_0xc15f('0x43')][_0xc15f('0x78')]};}return respondWithRpcPromise('VerifySmtp',_0xc15f('0xb7'),{'account':_0x3aea54});}})[_0xc15f('0x24')](respondWithResult(_0x592408,null))[_0xc15f('0x2d')](handleError(_0x592408,null));};exports[_0xc15f('0x39')]=function(_0x4aa576,_0x16ee38){return db['MailAccount'][_0xc15f('0x61')]({'where':{'id':_0x4aa576['params']['id']}})[_0xc15f('0x24')](handleEntityNotFound(_0x16ee38,null))[_0xc15f('0x24')](function(_0x40cf83){if(_0x40cf83&&_0x40cf83[_0xc15f('0x7d')]){throw new db[(_0xc15f('0xb8'))]['ValidationError'](_0xc15f('0xb9'));}return _0x40cf83;})[_0xc15f('0x24')](removeEntity(_0x16ee38,null))['catch'](handleError(_0x16ee38,null));};exports[_0xc15f('0xba')]=function(_0x25379c,_0x33a25d,_0xfcf00b){return db['MailAccount'][_0xc15f('0x61')]({'where':{'id':_0x25379c['params']['id']}})[_0xc15f('0x24')](handleEntityNotFound(_0x33a25d,null))['then'](function(_0x460b07){if(_0x460b07){return _0x460b07[_0xc15f('0xba')](_0x25379c[_0xc15f('0x60')]['ids'],_[_0xc15f('0x8b')](_0x25379c['body'],[_0xc15f('0x6f'),'id'])||{})['spread'](function(_0xc1226e){for(var _0x2f4b37=0x0;_0x2f4b37<_0x25379c[_0xc15f('0x60')]['ids'][_0xc15f('0x52')];_0x2f4b37+=0x1){socket[_0xc15f('0xbb')](_0xc15f('0xbc'),{'UserId':Number(_0x25379c['body'][_0xc15f('0x6f')][_0x2f4b37]),'MailAccountId':Number(_0x25379c['params']['id'])});}return _0xc1226e;});}})[_0xc15f('0x24')](respondWithResult(_0x33a25d,null))[_0xc15f('0x2d')](handleError(_0x33a25d,null));};exports[_0xc15f('0xbd')]=function(_0x3fc5f3,_0x25376a,_0x195809){return db[_0xc15f('0x47')]['find']({'where':{'id':_0x3fc5f3[_0xc15f('0x64')]['id']}})[_0xc15f('0x24')](handleEntityNotFound(_0x25376a,null))['then'](function(_0x1d05f1){if(_0x1d05f1){return _0x1d05f1[_0xc15f('0xbd')](_0x3fc5f3[_0xc15f('0x4c')]['ids'])[_0xc15f('0x24')](function(){if(_[_0xc15f('0xbe')](_0x3fc5f3[_0xc15f('0x4c')][_0xc15f('0x6f')])){for(var _0x51ce10=0x0;_0x51ce10<_0x3fc5f3[_0xc15f('0x4c')][_0xc15f('0x6f')][_0xc15f('0x52')];_0x51ce10+=0x1){socket['emit'](_0xc15f('0xbf'),{'UserId':Number(_0x3fc5f3['query']['ids'][_0x51ce10]),'MailAccountId':Number(_0x3fc5f3['params']['id'])});}}else{socket['emit'](_0xc15f('0xbf'),{'UserId':Number(_0x3fc5f3['query'][_0xc15f('0x6f')]),'MailAccountId':Number(_0x3fc5f3[_0xc15f('0x64')]['id'])});}});}})[_0xc15f('0x24')](respondWithStatusCode(_0x25376a,null))['catch'](handleError(_0x25376a,null));};exports[_0xc15f('0xc0')]=function(_0x2217b7,_0x41ceec,_0x5a163e){var _0x2b6423={};var _0x21faac={};var _0x4cacf9;var _0x5873a0;return db[_0xc15f('0x47')][_0xc15f('0x67')]({'where':{'id':_0x2217b7[_0xc15f('0x64')]['id']}})['then'](handleEntityNotFound(_0x41ceec,null))[_0xc15f('0x24')](function(_0x201257){if(_0x201257){_0x4cacf9=_0x201257;_0x21faac[_0xc15f('0x4b')]=_['keys'](db[_0xc15f('0xc1')][_0xc15f('0x48')]);_0x21faac[_0xc15f('0x4c')]=_[_0xc15f('0x4d')](_0x2217b7[_0xc15f('0x4c')]);_0x21faac['filters']=_[_0xc15f('0x4f')](_0x21faac['model'],_0x21faac[_0xc15f('0x4c')]);_0x2b6423[_0xc15f('0x50')]=_[_0xc15f('0x4f')](_0x21faac['model'],qs['fields'](_0x2217b7[_0xc15f('0x4c')]['fields']));_0x2b6423[_0xc15f('0x50')]=_0x2b6423[_0xc15f('0x50')][_0xc15f('0x52')]?_0x2b6423[_0xc15f('0x50')]:_0x21faac[_0xc15f('0x4b')];_0x2b6423[_0xc15f('0x54')]=qs[_0xc15f('0x55')](_0x2217b7[_0xc15f('0x4c')][_0xc15f('0x55')]);_0x2b6423['where']=qs['filters'](_[_0xc15f('0x57')](_0x2217b7['query'],_0x21faac['filters']));if(_0x2217b7[_0xc15f('0x4c')][_0xc15f('0x58')]){_0x2b6423[_0xc15f('0x56')]=_[_0xc15f('0x59')](_0x2b6423[_0xc15f('0x56')],{'$or':_[_0xc15f('0x46')](_0x2b6423[_0xc15f('0x50')],function(_0x19175d){var _0x5f60d8={};_0x5f60d8[_0x19175d]={'$like':'%'+_0x2217b7['query'][_0xc15f('0x58')]+'%'};return _0x5f60d8;})});}_0x2b6423=_[_0xc15f('0x59')]({},_0x2b6423,_0x2217b7[_0xc15f('0x5f')]);return _0x4cacf9[_0xc15f('0xc0')](_0x2b6423);}})[_0xc15f('0x24')](function(_0x29bebe){if(_0x29bebe){_0x5873a0=_0x29bebe[_0xc15f('0x52')];if(!_0x2217b7[_0xc15f('0x4c')][_0xc15f('0x68')]('nolimit')){_0x2b6423[_0xc15f('0x34')]=qs[_0xc15f('0x34')](_0x2217b7[_0xc15f('0x4c')][_0xc15f('0x34')]);_0x2b6423[_0xc15f('0x31')]=qs[_0xc15f('0x31')](_0x2217b7[_0xc15f('0x4c')]['offset']);}return _0x4cacf9[_0xc15f('0xc0')](_0x2b6423);}})[_0xc15f('0x24')](function(_0x12d0d2){if(_0x12d0d2){return _0x12d0d2?{'count':_0x5873a0,'rows':_0x12d0d2}:null;}})[_0xc15f('0x24')](respondWithResult(_0x41ceec,null))[_0xc15f('0x2d')](handleError(_0x41ceec,null));};
\ No newline at end of file
+var _0x3ed9=['name','send','index','MailServerIn','Imap','MailServerOut','Smtp','Pause','mandatoryDispositionPause','map','MailAccount','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','length','find','body','describe','addDisposition','Disposition','create','getDispositions','findOne','params','rawAttributes','order','MailAccountId','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','hasOwnProperty','removeAnswers','email','ListId','isNil','active','description','cservice','cauthentication','user','password','pass','cpassword','authentication','host','port','cuser','get','role','UserProfileSection','MailAccounts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','addSmtp','setSmtp','addInteraction','omit','getInteractions','CmContact','Contact','User','fullname','Tag','color','tag','MailInteraction','addApplications','sequelize','transaction','MailApplication','bulkCreate','priority','getApplications','getMessages','MailMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','split','List','updatedAt','DESC','from','%s\x20<%s>','attachments','join','root','service','auth','secure','SendMail','sendMail','List\x20not\x20found','Contacts','defaults','messageId','subject','attach','out','Interaction','verifySmtp','Sequelize','ValidationError','addAgents','spread','emit','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','client','http','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','MailAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','sendStatus','end','status','json','offset','limit','count','Content-Range','apply','reject','save','update','destroy','UserProfileResource','stack'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x3ed9,0x14b));var _0x93ed=function(_0x5d61b4,_0x4f7b91){_0x5d61b4=_0x5d61b4-0x0;var _0x183fc5=_0x3ed9[_0x5d61b4];return _0x183fc5;};'use strict';var emlformat=require(_0x93ed('0x0'));var rimraf=require(_0x93ed('0x1'));var zipdir=require(_0x93ed('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x93ed('0x3'));var moment=require('moment');var BPromise=require(_0x93ed('0x4'));var Mustache=require(_0x93ed('0x5'));var util=require(_0x93ed('0x6'));var path=require('path');var sox=require(_0x93ed('0x7'));var csv=require(_0x93ed('0x8'));var ejs=require(_0x93ed('0x9'));var fs=require('fs');var fs_extra=require(_0x93ed('0xa'));var _=require('lodash');var squel=require(_0x93ed('0xb'));var crypto=require(_0x93ed('0xc'));var jsforce=require(_0x93ed('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x93ed('0x8'));var querystring=require('querystring');var Papa=require(_0x93ed('0xe'));var htmlToText=require('html-to-text');var juice=require('juice');var Redis=require(_0x93ed('0xf'));var authService=require(_0x93ed('0x10'));var qs=require(_0x93ed('0x11'));var as=require(_0x93ed('0x12'));var hardwareService=require(_0x93ed('0x13'));var logger=require(_0x93ed('0x14'))(_0x93ed('0x15'));var utils=require(_0x93ed('0x16'));var config=require(_0x93ed('0x17'));var licenseUtil=require(_0x93ed('0x18'));var db=require(_0x93ed('0x19'))['db'];config[_0x93ed('0x1a')]=_['defaults'](config['redis'],{'host':_0x93ed('0x1b'),'port':0x18eb});var socket=require(_0x93ed('0x1c'))(new Redis(config[_0x93ed('0x1a')]));require('./mailAccount.socket')[_0x93ed('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0x93ed('0x1e')][_0x93ed('0x1f')]({'port':0x232b});function respondWithRpcPromise(_0x42ad77,_0x385a1f,_0x4081fe,_0x523374){return new BPromise(function(_0x5f4d69,_0x2d9bdd){var _0x414bef=_0x523374||client;return _0x414bef[_0x93ed('0x20')](_0x42ad77,_0x4081fe)[_0x93ed('0x21')](function(_0x3539d4){logger[_0x93ed('0x22')](_0x93ed('0x23'),_0x385a1f,_0x93ed('0x24'));logger['debug'](_0x93ed('0x25'),_0x385a1f,_0x93ed('0x24'),JSON['stringify'](_0x3539d4));if(_0x3539d4[_0x93ed('0x26')]){if(_0x3539d4[_0x93ed('0x26')][_0x93ed('0x27')]===0x1f4){logger[_0x93ed('0x26')]('MailAccount,\x20%s,\x20%s',_0x385a1f,_0x3539d4[_0x93ed('0x26')][_0x93ed('0x28')]);return _0x2d9bdd(_0x3539d4[_0x93ed('0x26')][_0x93ed('0x28')]);}logger['error'](_0x93ed('0x23'),_0x385a1f,_0x3539d4[_0x93ed('0x26')][_0x93ed('0x28')]);return _0x5f4d69(_0x3539d4[_0x93ed('0x26')]['message']);}else{logger[_0x93ed('0x22')](_0x93ed('0x23'),_0x385a1f,_0x93ed('0x24'));_0x5f4d69(_0x3539d4['result'][_0x93ed('0x28')]);}})[_0x93ed('0x29')](function(_0x68c1cd){logger[_0x93ed('0x26')](_0x93ed('0x23'),_0x385a1f,_0x68c1cd);_0x2d9bdd(_0x68c1cd);});});}function respondWithStatusCode(_0x14f27e,_0x1d4d9d){_0x1d4d9d=_0x1d4d9d||0xcc;return function(_0x49ecb1){if(_0x49ecb1){return _0x14f27e[_0x93ed('0x2a')](_0x1d4d9d);}return _0x14f27e['status'](_0x1d4d9d)[_0x93ed('0x2b')]();};}function respondWithResult(_0x5577c9,_0x2668a9){_0x2668a9=_0x2668a9||0xc8;return function(_0x1e039a){if(_0x1e039a){return _0x5577c9[_0x93ed('0x2c')](_0x2668a9)[_0x93ed('0x2d')](_0x1e039a);}};}function respondWithFilteredResult(_0x3c2f6b,_0x173ee6){return function(_0x4b166f){if(_0x4b166f){var _0x1fb112=typeof _0x173ee6[_0x93ed('0x2e')]==='undefined'&&typeof _0x173ee6[_0x93ed('0x2f')]==='undefined';var _0x33a8d4=_0x4b166f[_0x93ed('0x30')];var _0x432f38=_0x1fb112?0x0:_0x173ee6['offset'];var _0x36ff54=_0x1fb112?_0x4b166f[_0x93ed('0x30')]:_0x173ee6[_0x93ed('0x2e')]+_0x173ee6[_0x93ed('0x2f')];var _0x165761;if(_0x36ff54>=_0x33a8d4){_0x36ff54=_0x33a8d4;_0x165761=0xc8;}else{_0x165761=0xce;}_0x3c2f6b['status'](_0x165761);return _0x3c2f6b['set'](_0x93ed('0x31'),_0x432f38+'-'+_0x36ff54+'/'+_0x33a8d4)[_0x93ed('0x2d')](_0x4b166f);}return null;};}function patchUpdates(_0x101874){return function(_0x363147){try{jsonpatch[_0x93ed('0x32')](_0x363147,_0x101874,!![]);}catch(_0x5c4dde){return BPromise[_0x93ed('0x33')](_0x5c4dde);}return _0x363147[_0x93ed('0x34')]();};}function saveUpdates(_0x334bf2,_0x54edc7){return function(_0x843617){if(_0x843617){return _0x843617[_0x93ed('0x35')](_0x334bf2)[_0x93ed('0x21')](function(_0x1d9cb3){return _0x1d9cb3;});}return null;};}function removeEntity(_0x3ef4e5,_0x28d675){return function(_0x128ed4){if(_0x128ed4){return _0x128ed4[_0x93ed('0x36')]()['then'](function(){var _0x3a269b=_0x128ed4['get']({'plain':!![]});var _0x1dc492='MailAccounts';return db[_0x93ed('0x37')][_0x93ed('0x36')]({'where':{'type':_0x1dc492,'resourceId':_0x3a269b['id']}})[_0x93ed('0x21')](function(){return _0x128ed4;});})[_0x93ed('0x21')](function(){_0x3ef4e5[_0x93ed('0x2c')](0xcc)[_0x93ed('0x2b')]();});}};}function handleEntityNotFound(_0x236cee,_0x1f4771){return function(_0x103ce4){if(!_0x103ce4){_0x236cee['sendStatus'](0x194);}return _0x103ce4;};}function handleError(_0x3f3c0e,_0x44206c){_0x44206c=_0x44206c||0x1f4;return function(_0x1d8b95){logger[_0x93ed('0x26')](_0x1d8b95[_0x93ed('0x38')]);if(_0x1d8b95[_0x93ed('0x39')]){delete _0x1d8b95[_0x93ed('0x39')];}_0x3f3c0e[_0x93ed('0x2c')](_0x44206c)[_0x93ed('0x3a')](_0x1d8b95);};}exports[_0x93ed('0x3b')]=function(_0x562453,_0x5e381d){var _0x2b99e2={'include':[{'model':db[_0x93ed('0x3c')],'as':_0x93ed('0x3d')},{'model':db[_0x93ed('0x3e')],'as':_0x93ed('0x3f')},{'model':db[_0x93ed('0x40')],'as':_0x93ed('0x41')}]},_0x5368c1={},_0x5299a5={'count':0x0,'rows':[]};var _0x6681d9=_[_0x93ed('0x42')](db[_0x93ed('0x43')]['rawAttributes'],function(_0x4b63c9){return{'name':_0x4b63c9[_0x93ed('0x44')],'type':_0x4b63c9[_0x93ed('0x45')][_0x93ed('0x46')]};});_0x5368c1[_0x93ed('0x47')]=_['map'](_0x6681d9,'name');_0x5368c1[_0x93ed('0x48')]=_[_0x93ed('0x49')](_0x562453[_0x93ed('0x48')]);_0x5368c1[_0x93ed('0x4a')]=_[_0x93ed('0x4b')](_0x5368c1[_0x93ed('0x47')],_0x5368c1['query']);_0x2b99e2[_0x93ed('0x4c')]=_[_0x93ed('0x4b')](_0x5368c1[_0x93ed('0x47')],qs[_0x93ed('0x4d')](_0x562453[_0x93ed('0x48')][_0x93ed('0x4d')]));_0x2b99e2[_0x93ed('0x4c')]=_0x2b99e2[_0x93ed('0x4c')]['length']?_0x2b99e2['attributes']:_0x5368c1[_0x93ed('0x47')];if(!_0x562453[_0x93ed('0x48')]['hasOwnProperty'](_0x93ed('0x4e'))){_0x2b99e2['limit']=qs[_0x93ed('0x2f')](_0x562453[_0x93ed('0x48')][_0x93ed('0x2f')]);_0x2b99e2[_0x93ed('0x2e')]=qs[_0x93ed('0x2e')](_0x562453[_0x93ed('0x48')][_0x93ed('0x2e')]);}_0x2b99e2['order']=qs[_0x93ed('0x4f')](_0x562453[_0x93ed('0x48')][_0x93ed('0x4f')]);_0x2b99e2['where']=qs[_0x93ed('0x4a')](_[_0x93ed('0x50')](_0x562453[_0x93ed('0x48')],_0x5368c1[_0x93ed('0x4a')]),_0x6681d9);if(_0x562453[_0x93ed('0x48')][_0x93ed('0x51')]){_0x2b99e2[_0x93ed('0x52')]=_[_0x93ed('0x53')](_0x2b99e2[_0x93ed('0x52')],{'$or':_[_0x93ed('0x42')](_0x6681d9,function(_0x417f09){if(_0x417f09[_0x93ed('0x45')]!==_0x93ed('0x54')){var _0x54cc84={};_0x54cc84[_0x417f09[_0x93ed('0x39')]]={'$like':'%'+_0x562453[_0x93ed('0x48')][_0x93ed('0x51')]+'%'};return _0x54cc84;}})});}_0x2b99e2=_[_0x93ed('0x53')]({},_0x2b99e2,_0x562453[_0x93ed('0x55')]);var _0x2b32a8={'where':_0x2b99e2[_0x93ed('0x52')]};return db['MailAccount'][_0x93ed('0x30')](_0x2b32a8)[_0x93ed('0x21')](function(_0x30f286){_0x5299a5['count']=_0x30f286;if(_0x562453[_0x93ed('0x48')][_0x93ed('0x56')]){_0x2b99e2[_0x93ed('0x57')]=[{'all':!![]}];}return db[_0x93ed('0x43')][_0x93ed('0x58')](_0x2b99e2);})['then'](function(_0x5c71d0){_0x5299a5['rows']=_0x5c71d0;return _0x5299a5;})[_0x93ed('0x21')](respondWithFilteredResult(_0x5e381d,_0x2b99e2))[_0x93ed('0x29')](handleError(_0x5e381d,null));};exports['show']=function(_0x30c3f0,_0x3b85bb){var _0x250d6b={'raw':![],'where':{'id':_0x30c3f0['params']['id']},'include':[{'model':db[_0x93ed('0x3c')],'as':_0x93ed('0x3d')},{'model':db[_0x93ed('0x3e')],'as':_0x93ed('0x3f')},{'model':db[_0x93ed('0x40')],'as':_0x93ed('0x41')}]},_0x3e32fc={};_0x3e32fc[_0x93ed('0x47')]=_[_0x93ed('0x49')](db[_0x93ed('0x43')]['rawAttributes']);_0x3e32fc[_0x93ed('0x48')]=_[_0x93ed('0x49')](_0x30c3f0['query']);_0x3e32fc[_0x93ed('0x4a')]=_['intersection'](_0x3e32fc[_0x93ed('0x47')],_0x3e32fc[_0x93ed('0x48')]);_0x250d6b[_0x93ed('0x4c')]=_[_0x93ed('0x4b')](_0x3e32fc[_0x93ed('0x47')],qs['fields'](_0x30c3f0['query'][_0x93ed('0x4d')]));_0x250d6b['attributes']=_0x250d6b[_0x93ed('0x4c')][_0x93ed('0x59')]?_0x250d6b[_0x93ed('0x4c')]:_0x3e32fc[_0x93ed('0x47')];if(_0x30c3f0[_0x93ed('0x48')]['includeAll']){_0x250d6b[_0x93ed('0x57')]=[{'all':!![]}];}_0x250d6b=_['merge']({},_0x250d6b,_0x30c3f0[_0x93ed('0x55')]);return db[_0x93ed('0x43')][_0x93ed('0x5a')](_0x250d6b)['then'](handleEntityNotFound(_0x3b85bb,null))['then'](respondWithResult(_0x3b85bb,null))[_0x93ed('0x29')](handleError(_0x3b85bb,null));};exports['update']=function(_0x2cdf26,_0x26ae58){if(_0x2cdf26[_0x93ed('0x5b')]['id']){delete _0x2cdf26[_0x93ed('0x5b')]['id'];}return db[_0x93ed('0x43')][_0x93ed('0x5a')]({'where':{'id':_0x2cdf26['params']['id']},'include':[{'model':db[_0x93ed('0x3c')],'as':'Imap'},{'model':db[_0x93ed('0x3e')],'as':'Smtp'},{'model':db[_0x93ed('0x40')],'as':_0x93ed('0x41')}]})[_0x93ed('0x21')](handleEntityNotFound(_0x26ae58,null))[_0x93ed('0x21')](saveUpdates(_0x2cdf26[_0x93ed('0x5b')],null))[_0x93ed('0x21')](function(_0xdd0933){if(_0xdd0933&&_0x2cdf26[_0x93ed('0x5b')][_0x93ed('0x3d')]){return db[_0x93ed('0x3c')][_0x93ed('0x35')](_0x2cdf26[_0x93ed('0x5b')][_0x93ed('0x3d')],{'where':{'MailAccountId':_0xdd0933['id']}})['then'](function(){return _0xdd0933;});}return _0xdd0933;})['then'](function(_0x58d3fc){if(_0x58d3fc&&_0x2cdf26['body'][_0x93ed('0x3f')]){return db[_0x93ed('0x3e')][_0x93ed('0x35')](_0x2cdf26[_0x93ed('0x5b')][_0x93ed('0x3f')],{'where':{'MailAccountId':_0x58d3fc['id']}})[_0x93ed('0x21')](function(){return _0x58d3fc;});}return _0x58d3fc;})[_0x93ed('0x21')](respondWithResult(_0x26ae58,null))[_0x93ed('0x29')](handleError(_0x26ae58,null));};exports[_0x93ed('0x5c')]=function(_0x15f7e1,_0x5e67f3){return db[_0x93ed('0x43')][_0x93ed('0x5c')]()[_0x93ed('0x21')](respondWithResult(_0x5e67f3,null))['catch'](handleError(_0x5e67f3,null));};exports[_0x93ed('0x5d')]=function(_0x350b19,_0x255c5d,_0x44dd83){if(_0x350b19[_0x93ed('0x5b')]['id']){delete _0x350b19['body']['id'];}return db[_0x93ed('0x43')][_0x93ed('0x5a')]({'where':{'id':_0x350b19['params']['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0x255c5d,null))[_0x93ed('0x21')](function(_0xe7d829){if(_0xe7d829){_0x350b19[_0x93ed('0x5b')]['MailAccountId']=_0xe7d829['id'];return db[_0x93ed('0x5e')][_0x93ed('0x5f')](_0x350b19[_0x93ed('0x5b')]);}})[_0x93ed('0x21')](respondWithResult(_0x255c5d,null))[_0x93ed('0x29')](handleError(_0x255c5d,null));};exports[_0x93ed('0x60')]=function(_0x171d02,_0x2b7988,_0x341c87){var _0x39dcd3={'raw':![],'where':{}};var _0x3310ee={};var _0xcfc615={'count':0x0,'rows':[]};return db[_0x93ed('0x43')][_0x93ed('0x61')]({'where':{'id':_0x171d02[_0x93ed('0x62')]['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0x2b7988,null))[_0x93ed('0x21')](function(_0x283646){if(_0x283646){_0x3310ee['model']=_[_0x93ed('0x49')](db['Disposition'][_0x93ed('0x63')]);_0x3310ee['query']=_[_0x93ed('0x49')](_0x171d02[_0x93ed('0x48')]);_0x3310ee[_0x93ed('0x4a')]=_[_0x93ed('0x4b')](_0x3310ee[_0x93ed('0x47')],_0x3310ee['query']);_0x39dcd3[_0x93ed('0x4c')]=_['intersection'](_0x3310ee['model'],qs[_0x93ed('0x4d')](_0x171d02[_0x93ed('0x48')][_0x93ed('0x4d')]));_0x39dcd3[_0x93ed('0x4c')]=_0x39dcd3[_0x93ed('0x4c')][_0x93ed('0x59')]?_0x39dcd3[_0x93ed('0x4c')]:_0x3310ee['model'];if(!_0x171d02[_0x93ed('0x48')]['hasOwnProperty']('nolimit')){_0x39dcd3[_0x93ed('0x2f')]=qs[_0x93ed('0x2f')](_0x171d02['query'][_0x93ed('0x2f')]);_0x39dcd3[_0x93ed('0x2e')]=qs[_0x93ed('0x2e')](_0x171d02[_0x93ed('0x48')]['offset']);}_0x39dcd3[_0x93ed('0x64')]=qs[_0x93ed('0x4f')](_0x171d02['query'][_0x93ed('0x4f')]);_0x39dcd3['where']=qs[_0x93ed('0x4a')](_[_0x93ed('0x50')](_0x171d02[_0x93ed('0x48')],_0x3310ee['filters']));_0x39dcd3[_0x93ed('0x52')][_0x93ed('0x65')]=_0x283646['id'];if(_0x171d02[_0x93ed('0x48')]['filter']){_0x39dcd3['where']=_[_0x93ed('0x53')](_0x39dcd3[_0x93ed('0x52')],{'$or':_['map'](_0x39dcd3[_0x93ed('0x4c')],function(_0x33a88a){var _0x2091dd={};_0x2091dd[_0x33a88a]={'$like':'%'+_0x171d02[_0x93ed('0x48')]['filter']+'%'};return _0x2091dd;})});}_0x39dcd3=_[_0x93ed('0x53')]({},_0x39dcd3,_0x171d02['options']);return db[_0x93ed('0x5e')]['count']({'where':_0x39dcd3['where']})[_0x93ed('0x21')](function(_0x3ca131){_0xcfc615[_0x93ed('0x30')]=_0x3ca131;if(_0x171d02[_0x93ed('0x48')][_0x93ed('0x56')]){_0x39dcd3[_0x93ed('0x57')]=[{'all':!![]}];}return db[_0x93ed('0x5e')][_0x93ed('0x58')](_0x39dcd3);})[_0x93ed('0x21')](function(_0x1d0d4c){_0xcfc615[_0x93ed('0x66')]=_0x1d0d4c;return _0xcfc615;});}})[_0x93ed('0x21')](respondWithFilteredResult(_0x2b7988,_0x39dcd3))[_0x93ed('0x29')](handleError(_0x2b7988,null));};exports[_0x93ed('0x67')]=function(_0x185e47,_0x6af3ad,_0x46d63c){return db[_0x93ed('0x43')][_0x93ed('0x5a')]({'where':{'id':_0x185e47['params']['id']}})['then'](handleEntityNotFound(_0x6af3ad,null))[_0x93ed('0x21')](function(_0x4a42ff){if(_0x4a42ff){return _0x4a42ff[_0x93ed('0x67')](_0x185e47[_0x93ed('0x48')][_0x93ed('0x68')]);}})['then'](respondWithStatusCode(_0x6af3ad,null))[_0x93ed('0x29')](handleError(_0x6af3ad,null));};exports[_0x93ed('0x69')]=function(_0x287511,_0x23bb47,_0x54051){if(_0x287511[_0x93ed('0x5b')]['id']){delete _0x287511[_0x93ed('0x5b')]['id'];}return db[_0x93ed('0x43')]['find']({'where':{'id':_0x287511[_0x93ed('0x62')]['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0x23bb47,null))[_0x93ed('0x21')](function(_0x539836){if(_0x539836){_0x287511['body'][_0x93ed('0x65')]=_0x539836['id'];return db[_0x93ed('0x6a')][_0x93ed('0x5f')](_0x287511[_0x93ed('0x5b')]);}})[_0x93ed('0x21')](respondWithResult(_0x23bb47,null))[_0x93ed('0x29')](handleError(_0x23bb47,null));};exports[_0x93ed('0x6b')]=function(_0x167aea,_0xb8359b,_0x4621d9){var _0x553a1c={'raw':![],'where':{}};var _0x67f6ae={};var _0x5e1c0b={'count':0x0,'rows':[]};return db[_0x93ed('0x43')]['findOne']({'where':{'id':_0x167aea[_0x93ed('0x62')]['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0xb8359b,null))[_0x93ed('0x21')](function(_0x141bcd){if(_0x141bcd){_0x67f6ae[_0x93ed('0x47')]=_['keys'](db[_0x93ed('0x6a')]['rawAttributes']);_0x67f6ae['query']=_[_0x93ed('0x49')](_0x167aea[_0x93ed('0x48')]);_0x67f6ae['filters']=_['intersection'](_0x67f6ae[_0x93ed('0x47')],_0x67f6ae[_0x93ed('0x48')]);_0x553a1c[_0x93ed('0x4c')]=_[_0x93ed('0x4b')](_0x67f6ae['model'],qs[_0x93ed('0x4d')](_0x167aea[_0x93ed('0x48')]['fields']));_0x553a1c['attributes']=_0x553a1c[_0x93ed('0x4c')]['length']?_0x553a1c[_0x93ed('0x4c')]:_0x67f6ae['model'];if(!_0x167aea['query'][_0x93ed('0x6c')](_0x93ed('0x4e'))){_0x553a1c[_0x93ed('0x2f')]=qs[_0x93ed('0x2f')](_0x167aea[_0x93ed('0x48')][_0x93ed('0x2f')]);_0x553a1c[_0x93ed('0x2e')]=qs['offset'](_0x167aea[_0x93ed('0x48')][_0x93ed('0x2e')]);}_0x553a1c['order']=qs['sort'](_0x167aea['query'][_0x93ed('0x4f')]);_0x553a1c['where']=qs[_0x93ed('0x4a')](_[_0x93ed('0x50')](_0x167aea[_0x93ed('0x48')],_0x67f6ae['filters']));_0x553a1c[_0x93ed('0x52')]['MailAccountId']=_0x141bcd['id'];if(_0x167aea[_0x93ed('0x48')][_0x93ed('0x51')]){_0x553a1c[_0x93ed('0x52')]=_['merge'](_0x553a1c['where'],{'$or':_[_0x93ed('0x42')](_0x553a1c[_0x93ed('0x4c')],function(_0x27ebec){var _0x21fd79={};_0x21fd79[_0x27ebec]={'$like':'%'+_0x167aea['query'][_0x93ed('0x51')]+'%'};return _0x21fd79;})});}_0x553a1c=_[_0x93ed('0x53')]({},_0x553a1c,_0x167aea[_0x93ed('0x55')]);return db[_0x93ed('0x6a')][_0x93ed('0x30')]({'where':_0x553a1c[_0x93ed('0x52')]})[_0x93ed('0x21')](function(_0x169c93){_0x5e1c0b[_0x93ed('0x30')]=_0x169c93;if(_0x167aea[_0x93ed('0x48')][_0x93ed('0x56')]){_0x553a1c[_0x93ed('0x57')]=[{'all':!![]}];}return db[_0x93ed('0x6a')][_0x93ed('0x58')](_0x553a1c);})[_0x93ed('0x21')](function(_0x12a674){_0x5e1c0b['rows']=_0x12a674;return _0x5e1c0b;});}})[_0x93ed('0x21')](respondWithFilteredResult(_0xb8359b,_0x553a1c))['catch'](handleError(_0xb8359b,null));};exports[_0x93ed('0x6d')]=function(_0x165832,_0x10fd3b,_0x56f1dd){return db[_0x93ed('0x43')][_0x93ed('0x5a')]({'where':{'id':_0x165832[_0x93ed('0x62')]['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0x10fd3b,null))[_0x93ed('0x21')](function(_0xbfea00){if(_0xbfea00){return _0xbfea00[_0x93ed('0x6d')](_0x165832[_0x93ed('0x48')]['ids']);}})[_0x93ed('0x21')](respondWithStatusCode(_0x10fd3b,null))[_0x93ed('0x29')](handleError(_0x10fd3b,null));};exports[_0x93ed('0x5f')]=function(_0x5d7bb7,_0x57b0af){var _0xb09fd8={'name':_0x5d7bb7[_0x93ed('0x5b')][_0x93ed('0x39')],'key':_0x5d7bb7['body'][_0x93ed('0x46')],'email':_0x5d7bb7[_0x93ed('0x5b')][_0x93ed('0x6e')],'ListId':_0x5d7bb7[_0x93ed('0x5b')][_0x93ed('0x6f')],'active':!_[_0x93ed('0x70')](_0x5d7bb7[_0x93ed('0x5b')]['active'])?_0x5d7bb7[_0x93ed('0x5b')][_0x93ed('0x71')]:!![],'description':_0x5d7bb7[_0x93ed('0x5b')][_0x93ed('0x72')]||null,'Imap':{},'Smtp':{}};if(_[_0x93ed('0x70')](_0x5d7bb7[_0x93ed('0x5b')][_0x93ed('0x73')])){if(_0x5d7bb7[_0x93ed('0x5b')][_0x93ed('0x74')]){_0xb09fd8['Imap'][_0x93ed('0x75')]=_0xb09fd8[_0x93ed('0x3f')][_0x93ed('0x75')]=_0x5d7bb7['body']['cuser'];_0xb09fd8[_0x93ed('0x3d')][_0x93ed('0x76')]=_0xb09fd8['Smtp'][_0x93ed('0x77')]=_0x5d7bb7[_0x93ed('0x5b')][_0x93ed('0x78')];}else{_0xb09fd8['Imap'][_0x93ed('0x79')]=_0xb09fd8[_0x93ed('0x3f')][_0x93ed('0x79')]=![];}_0xb09fd8[_0x93ed('0x3d')][_0x93ed('0x7a')]=_0x5d7bb7[_0x93ed('0x5b')][_0x93ed('0x3d')][_0x93ed('0x7a')];_0xb09fd8[_0x93ed('0x3d')][_0x93ed('0x7b')]=_0x5d7bb7[_0x93ed('0x5b')][_0x93ed('0x3d')][_0x93ed('0x7b')];_0xb09fd8['Smtp'][_0x93ed('0x7a')]=_0x5d7bb7[_0x93ed('0x5b')]['Smtp'][_0x93ed('0x7a')];_0xb09fd8[_0x93ed('0x3f')][_0x93ed('0x7b')]=_0x5d7bb7['body'][_0x93ed('0x3f')][_0x93ed('0x7b')];}else{_0xb09fd8[_0x93ed('0x3d')]['service']=_0xb09fd8[_0x93ed('0x3f')]['service']=_0x5d7bb7[_0x93ed('0x5b')]['cservice'];_0xb09fd8['Imap']['user']=_0xb09fd8[_0x93ed('0x3f')][_0x93ed('0x75')]=_0x5d7bb7[_0x93ed('0x5b')][_0x93ed('0x7c')];_0xb09fd8[_0x93ed('0x3d')][_0x93ed('0x76')]=_0xb09fd8[_0x93ed('0x3f')][_0x93ed('0x77')]=_0x5d7bb7['body']['cpassword'];}return db['MailAccount']['create'](_0xb09fd8,{'include':[{'model':db['MailServerOut'],'as':_0x93ed('0x3f')},{'model':db[_0x93ed('0x3c')],'as':_0x93ed('0x3d')}]})[_0x93ed('0x21')](function(_0x4b58a0){var _0x561c9e=_0x5d7bb7[_0x93ed('0x75')][_0x93ed('0x7d')]({'plain':!![]});if(!_0x561c9e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x561c9e[_0x93ed('0x7e')]===_0x93ed('0x75')){var _0x5e1dcf=_0x4b58a0[_0x93ed('0x7d')]({'plain':!![]});return db[_0x93ed('0x7f')][_0x93ed('0x5a')]({'where':{'name':_0x93ed('0x80'),'userProfileId':_0x561c9e[_0x93ed('0x81')]},'raw':!![]})[_0x93ed('0x21')](function(_0x36551e){if(_0x36551e&&_0x36551e[_0x93ed('0x82')]===0x0){return db['UserProfileResource']['create']({'name':_0x5e1dcf[_0x93ed('0x39')],'resourceId':_0x5e1dcf['id'],'type':_0x36551e[_0x93ed('0x39')],'sectionId':_0x36551e['id']},{})['then'](function(){return _0x4b58a0;});}else{return _0x4b58a0;}})['catch'](function(_0x27860d){logger[_0x93ed('0x26')](_0x93ed('0x83'),_0x27860d);throw _0x27860d;});}return _0x4b58a0;})[_0x93ed('0x21')](respondWithResult(_0x57b0af,0xc9))['catch'](handleError(_0x57b0af,null));};exports['getImap']=function(_0x571926,_0xa3fbb6,_0xd52170){return db[_0x93ed('0x43')][_0x93ed('0x61')]({'where':{'id':_0x571926[_0x93ed('0x62')]['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0xa3fbb6,null))[_0x93ed('0x21')](function(_0x3bc412){if(_0x3bc412){return _0x3bc412[_0x93ed('0x84')]();}return null;})[_0x93ed('0x21')](respondWithResult(_0xa3fbb6,null))['catch'](handleError(_0xa3fbb6,null));};exports[_0x93ed('0x85')]=function(_0x317a32,_0x107e77,_0x14a836){if(_0x317a32[_0x93ed('0x5b')]['id']){delete _0x317a32['body']['id'];}return db['MailAccount'][_0x93ed('0x5a')]({'where':{'id':_0x317a32[_0x93ed('0x62')]['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0x107e77,null))[_0x93ed('0x21')](function(_0x5ddf27){if(_0x5ddf27){_0x317a32['body']['MailAccountId']=_0x5ddf27['id'];return db['MailServerIn'][_0x93ed('0x5f')](_0x317a32['body']);}})['then'](respondWithResult(_0x107e77,null))[_0x93ed('0x29')](handleError(_0x107e77,null));};exports[_0x93ed('0x86')]=function(_0xe6bf57,_0x4149f8,_0x412898){return db[_0x93ed('0x43')]['findOne']({'where':{'id':_0xe6bf57[_0x93ed('0x62')]['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0x4149f8,null))[_0x93ed('0x21')](function(_0x5a8004){if(_0x5a8004){return _0x5a8004[_0x93ed('0x87')](null);}return null;})[_0x93ed('0x21')](respondWithStatusCode(_0x4149f8,null))[_0x93ed('0x29')](handleError(_0x4149f8,null));};exports[_0x93ed('0x88')]=function(_0x5c81ba,_0x4b75ef,_0x59e82d){return db[_0x93ed('0x43')][_0x93ed('0x61')]({'where':{'id':_0x5c81ba[_0x93ed('0x62')]['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0x4b75ef,null))[_0x93ed('0x21')](function(_0x578d11){if(_0x578d11){return _0x578d11[_0x93ed('0x88')]();}return null;})[_0x93ed('0x21')](respondWithResult(_0x4b75ef,null))[_0x93ed('0x29')](handleError(_0x4b75ef,null));};exports[_0x93ed('0x89')]=function(_0x30733b,_0xa4ec49,_0x465bb8){if(_0x30733b[_0x93ed('0x5b')]['id']){delete _0x30733b[_0x93ed('0x5b')]['id'];}return db[_0x93ed('0x43')][_0x93ed('0x5a')]({'where':{'id':_0x30733b[_0x93ed('0x62')]['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0xa4ec49,null))['then'](function(_0x55d498){if(_0x55d498){_0x30733b[_0x93ed('0x5b')][_0x93ed('0x65')]=_0x55d498['id'];return db[_0x93ed('0x3e')][_0x93ed('0x5f')](_0x30733b[_0x93ed('0x5b')]);}})[_0x93ed('0x21')](respondWithResult(_0xa4ec49,null))[_0x93ed('0x29')](handleError(_0xa4ec49,null));};exports['removeSmtp']=function(_0x4ec39a,_0x26b621,_0x1a6eba){return db[_0x93ed('0x43')][_0x93ed('0x61')]({'where':{'id':_0x4ec39a[_0x93ed('0x62')]['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0x26b621,null))[_0x93ed('0x21')](function(_0x46d855){if(_0x46d855){return _0x46d855[_0x93ed('0x8a')](null);}return null;})[_0x93ed('0x21')](respondWithStatusCode(_0x26b621,null))[_0x93ed('0x29')](handleError(_0x26b621,null));};exports[_0x93ed('0x8b')]=function(_0x3bcfb3,_0x1c9a5c,_0x4c35dc){return db['MailInteraction'][_0x93ed('0x5a')]({'where':{'id':_0x3bcfb3[_0x93ed('0x62')]['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0x1c9a5c,null))['then'](function(_0x6fcee9){if(_0x6fcee9){return _0x6fcee9[_0x93ed('0x8b')](_0x3bcfb3['body'][_0x93ed('0x68')],_[_0x93ed('0x8c')](_0x3bcfb3[_0x93ed('0x5b')],[_0x93ed('0x68'),'id'])||{});}})[_0x93ed('0x21')](respondWithResult(_0x1c9a5c,null))[_0x93ed('0x29')](handleError(_0x1c9a5c,null));};exports[_0x93ed('0x8d')]=function(_0x181d1a,_0x5a8ad7,_0x3c3d41){var _0x3c8759={'raw':![],'where':{}};var _0x1afe19={};var _0x274b9f={'count':0x0,'rows':[]};return db[_0x93ed('0x43')][_0x93ed('0x61')]({'where':{'id':_0x181d1a[_0x93ed('0x62')]['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0x5a8ad7,null))[_0x93ed('0x21')](function(_0x239ca5){if(_0x239ca5){_0x1afe19[_0x93ed('0x47')]=_[_0x93ed('0x49')](db['MailInteraction'][_0x93ed('0x63')]);_0x1afe19[_0x93ed('0x48')]=_[_0x93ed('0x49')](_0x181d1a[_0x93ed('0x48')]);_0x1afe19['filters']=_[_0x93ed('0x4b')](_0x1afe19[_0x93ed('0x47')],_0x1afe19[_0x93ed('0x48')]);_0x3c8759[_0x93ed('0x4c')]=_['intersection'](_0x1afe19[_0x93ed('0x47')],qs[_0x93ed('0x4d')](_0x181d1a[_0x93ed('0x48')][_0x93ed('0x4d')]));_0x3c8759[_0x93ed('0x4c')]=_0x3c8759['attributes'][_0x93ed('0x59')]?_0x3c8759[_0x93ed('0x4c')]:_0x1afe19['model'];if(!_0x181d1a[_0x93ed('0x48')]['hasOwnProperty'](_0x93ed('0x4e'))){_0x3c8759[_0x93ed('0x2f')]=qs[_0x93ed('0x2f')](_0x181d1a[_0x93ed('0x48')]['limit']);_0x3c8759[_0x93ed('0x2e')]=qs['offset'](_0x181d1a[_0x93ed('0x48')][_0x93ed('0x2e')]);}_0x3c8759['order']=qs['sort'](_0x181d1a[_0x93ed('0x48')][_0x93ed('0x4f')]);_0x3c8759[_0x93ed('0x52')]=qs[_0x93ed('0x4a')](_[_0x93ed('0x50')](_0x181d1a[_0x93ed('0x48')],_0x1afe19[_0x93ed('0x4a')]));_0x3c8759[_0x93ed('0x52')]['MailAccountId']=_0x239ca5['id'];if(_0x181d1a[_0x93ed('0x48')][_0x93ed('0x51')]){_0x3c8759['where']=_[_0x93ed('0x53')](_0x3c8759[_0x93ed('0x52')],{'$or':_['map'](_0x3c8759[_0x93ed('0x4c')],function(_0x471e78){var _0x3cb8bc={};_0x3cb8bc[_0x471e78]={'$like':'%'+_0x181d1a['query']['filter']+'%'};return _0x3cb8bc;})});}_0x3c8759=_[_0x93ed('0x53')]({},_0x3c8759,_0x181d1a[_0x93ed('0x55')]);return db['MailInteraction']['count']({'where':_0x3c8759[_0x93ed('0x52')]})[_0x93ed('0x21')](function(_0x3c6641){_0x274b9f[_0x93ed('0x30')]=_0x3c6641;if(_0x181d1a[_0x93ed('0x48')]['includeAll']){_0x3c8759[_0x93ed('0x57')]=[{'model':db[_0x93ed('0x8e')],'as':_0x93ed('0x8f'),'required':![]},{'model':db[_0x93ed('0x90')],'as':'Owner','attributes':['name',_0x93ed('0x91'),'internal'],'required':![]},{'model':db[_0x93ed('0x92')],'as':'Tags','attributes':['id',_0x93ed('0x39'),_0x93ed('0x93')],'where':_0x181d1a[_0x93ed('0x48')][_0x93ed('0x94')]?{'id':_0x181d1a[_0x93ed('0x48')][_0x93ed('0x94')]}:undefined,'required':_0x181d1a[_0x93ed('0x48')]['tag']?!![]:![]}];}return db[_0x93ed('0x95')][_0x93ed('0x58')](_0x3c8759);})[_0x93ed('0x21')](function(_0x2ccbd0){_0x274b9f['rows']=_0x2ccbd0;return _0x274b9f;});}})['then'](respondWithFilteredResult(_0x5a8ad7,_0x3c8759))[_0x93ed('0x29')](handleError(_0x5a8ad7,null));};exports[_0x93ed('0x96')]=function(_0x286c9f,_0x5669be,_0x13662b){return db['MailAccount'][_0x93ed('0x61')]({'where':{'id':_0x286c9f[_0x93ed('0x62')]['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0x5669be,null))[_0x93ed('0x21')](function(_0x40904c){if(_0x40904c){return db[_0x93ed('0x97')][_0x93ed('0x98')](function(_0x390965){return db[_0x93ed('0x99')][_0x93ed('0x36')]({'where':{'MailAccountId':_0x286c9f['params']['id']},'transaction':_0x390965})['then'](function(_0x399104){var _0x493338=_[_0x93ed('0x42')](_0x286c9f[_0x93ed('0x5b')],function(_0x407f4b){_0x407f4b['MailAccountId']=_0x286c9f['params']['id'];return _0x407f4b;});return db['MailApplication'][_0x93ed('0x9a')](_0x493338,{'transaction':_0x390965});});})['then'](function(){return db[_0x93ed('0x99')]['findAndCountAll']({'where':{'MailAccountId':_0x286c9f['params']['id']},'order':_0x93ed('0x9b')});});}})['then'](respondWithResult(_0x5669be,null))[_0x93ed('0x29')](handleError(_0x5669be,null));};exports['getApplications']=function(_0x150c09,_0x27b1d6,_0x15916a){var _0x41019e={};var _0x21d195={};var _0x5121f1;var _0x40be36;return db[_0x93ed('0x43')][_0x93ed('0x61')]({'where':{'id':_0x150c09[_0x93ed('0x62')]['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0x27b1d6,null))[_0x93ed('0x21')](function(_0x544b55){if(_0x544b55){_0x5121f1=_0x544b55;_0x21d195[_0x93ed('0x47')]=_['keys'](db['MailApplication']['rawAttributes']);_0x21d195['query']=_[_0x93ed('0x49')](_0x150c09[_0x93ed('0x48')]);_0x21d195[_0x93ed('0x4a')]=_[_0x93ed('0x4b')](_0x21d195[_0x93ed('0x47')],_0x21d195['query']);_0x41019e['attributes']=_[_0x93ed('0x4b')](_0x21d195['model'],qs[_0x93ed('0x4d')](_0x150c09[_0x93ed('0x48')][_0x93ed('0x4d')]));_0x41019e['attributes']=_0x41019e[_0x93ed('0x4c')][_0x93ed('0x59')]?_0x41019e[_0x93ed('0x4c')]:_0x21d195[_0x93ed('0x47')];_0x41019e[_0x93ed('0x64')]=qs[_0x93ed('0x4f')](_0x150c09['query'][_0x93ed('0x4f')]);_0x41019e[_0x93ed('0x52')]=qs[_0x93ed('0x4a')](_['pick'](_0x150c09[_0x93ed('0x48')],_0x21d195[_0x93ed('0x4a')]));if(_0x150c09[_0x93ed('0x48')][_0x93ed('0x51')]){_0x41019e['where']=_[_0x93ed('0x53')](_0x41019e['where'],{'$or':_[_0x93ed('0x42')](_0x41019e[_0x93ed('0x4c')],function(_0x28631a){var _0x455f2f={};_0x455f2f[_0x28631a]={'$like':'%'+_0x150c09[_0x93ed('0x48')][_0x93ed('0x51')]+'%'};return _0x455f2f;})});}_0x41019e=_[_0x93ed('0x53')]({},_0x41019e,_0x150c09[_0x93ed('0x55')]);return _0x5121f1[_0x93ed('0x9c')](_0x41019e);}})[_0x93ed('0x21')](function(_0x2b44f3){if(_0x2b44f3){_0x40be36=_0x2b44f3[_0x93ed('0x59')];if(!_0x150c09[_0x93ed('0x48')][_0x93ed('0x6c')](_0x93ed('0x4e'))){_0x41019e['limit']=qs['limit'](_0x150c09[_0x93ed('0x48')][_0x93ed('0x2f')]);_0x41019e[_0x93ed('0x2e')]=qs['offset'](_0x150c09[_0x93ed('0x48')][_0x93ed('0x2e')]);}return _0x5121f1[_0x93ed('0x9c')](_0x41019e);}})['then'](function(_0x150f8c){if(_0x150f8c){return _0x150f8c?{'count':_0x40be36,'rows':_0x150f8c}:null;}})[_0x93ed('0x21')](respondWithResult(_0x27b1d6,null))[_0x93ed('0x29')](handleError(_0x27b1d6,null));};exports[_0x93ed('0x9d')]=function(_0x375b82,_0x4a0bfa,_0x5e040b){var _0x5aa6e0={'raw':!![],'where':{}};var _0x5afe3e={};var _0x2b13ee={'count':0x0,'rows':[]};return db['MailAccount'][_0x93ed('0x61')]({'where':{'id':_0x375b82['params']['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0x4a0bfa,null))['then'](function(_0x147489){if(_0x147489){_0x5afe3e[_0x93ed('0x47')]=_[_0x93ed('0x49')](db[_0x93ed('0x9e')][_0x93ed('0x63')]);_0x5afe3e[_0x93ed('0x48')]=_[_0x93ed('0x49')](_0x375b82['query']);_0x5afe3e[_0x93ed('0x4a')]=_[_0x93ed('0x4b')](_0x5afe3e['model'],_0x5afe3e[_0x93ed('0x48')]);_0x5aa6e0[_0x93ed('0x4c')]=_[_0x93ed('0x4b')](_0x5afe3e['model'],qs[_0x93ed('0x4d')](_0x375b82[_0x93ed('0x48')][_0x93ed('0x4d')]));_0x5aa6e0['attributes']=_0x5aa6e0[_0x93ed('0x4c')][_0x93ed('0x59')]?_0x5aa6e0[_0x93ed('0x4c')]:_0x5afe3e[_0x93ed('0x47')];if(!_0x375b82[_0x93ed('0x48')][_0x93ed('0x6c')](_0x93ed('0x4e'))){_0x5aa6e0[_0x93ed('0x2f')]=qs['limit'](_0x375b82[_0x93ed('0x48')][_0x93ed('0x2f')]);_0x5aa6e0['offset']=qs[_0x93ed('0x2e')](_0x375b82['query'][_0x93ed('0x2e')]);}_0x5aa6e0[_0x93ed('0x64')]=qs['sort'](_0x375b82[_0x93ed('0x48')][_0x93ed('0x4f')]);_0x5aa6e0[_0x93ed('0x52')]=qs['filters'](_['pick'](_0x375b82[_0x93ed('0x48')],_0x5afe3e[_0x93ed('0x4a')]));_0x5aa6e0[_0x93ed('0x52')]['MailAccountId']=_0x147489['id'];if(_0x375b82['query'][_0x93ed('0x51')]){_0x5aa6e0[_0x93ed('0x52')]=_[_0x93ed('0x53')](_0x5aa6e0['where'],{'$or':_[_0x93ed('0x42')](_0x5aa6e0[_0x93ed('0x4c')],function(_0x206fff){var _0x350694={};_0x350694[_0x206fff]={'$like':'%'+_0x375b82[_0x93ed('0x48')][_0x93ed('0x51')]+'%'};return _0x350694;})});}if(_0x375b82['query'][_0x93ed('0x9f')]){var _0x595e61=_0x375b82[_0x93ed('0x48')]['$gte']['split'](',');var _0x329834={};_0x329834[_0x595e61[0x0]]={'$gte':moment(_0x595e61[0x1])[_0x93ed('0xa0')](_0x93ed('0xa1'))};_0x5aa6e0['where']=_['merge'](_0x5aa6e0[_0x93ed('0x52')],_0x329834);}_0x5aa6e0=_['merge']({},_0x5aa6e0,_0x375b82[_0x93ed('0x55')]);return db[_0x93ed('0x9e')][_0x93ed('0x30')]({'where':_0x5aa6e0[_0x93ed('0x52')]})[_0x93ed('0x21')](function(_0x328bed){_0x2b13ee['count']=_0x328bed;if(_0x375b82[_0x93ed('0x48')][_0x93ed('0x56')]){_0x5aa6e0[_0x93ed('0x57')]=[{'all':!![]}];}return db[_0x93ed('0x9e')][_0x93ed('0x58')](_0x5aa6e0);})[_0x93ed('0x21')](function(_0x195fd){if(_0x375b82[_0x93ed('0x48')][_0x93ed('0xa2')]==='true'){for(var _0x332715=0x0;_0x332715<_0x195fd[_0x93ed('0x59')];_0x332715++){_0x195fd[_0x332715][_0x93ed('0x5b')]=juice(_0x195fd[_0x332715][_0x93ed('0x5b')]);}}_0x2b13ee['rows']=_0x195fd;return _0x2b13ee;});}})[_0x93ed('0x21')](respondWithFilteredResult(_0x4a0bfa,_0x5aa6e0))[_0x93ed('0x29')](handleError(_0x4a0bfa,null));};exports[_0x93ed('0x3a')]=function(_0xb9fb3,_0x563e0c,_0x136cb7){var _0x22beb5,_0x3aff4b={},_0x79f0c3;if(_0xb9fb3[_0x93ed('0x5b')]['to']){_0x79f0c3=_0xb9fb3[_0x93ed('0x5b')]['to'][_0x93ed('0xa3')](',')[0x0];}return db['MailAccount'][_0x93ed('0x5a')]({'where':{'id':_0xb9fb3[_0x93ed('0x62')]['id']},'include':[{'model':db['CmList'],'as':_0x93ed('0xa4'),'include':[{'model':db['CmContact'],'as':'Contacts','where':{'email':_0x79f0c3},'limit':0x1,'order':[[_0x93ed('0xa5'),_0x93ed('0xa6')]]}]},{'model':db['MailServerOut'],'as':_0x93ed('0x3f'),'raw':!![]}]})[_0x93ed('0x21')](handleEntityNotFound(_0x563e0c,null))[_0x93ed('0x21')](function(_0x2190c7){if(_0x2190c7){_0x22beb5=_0x2190c7;if(_0x2190c7[_0x93ed('0x3f')]){if(_[_0x93ed('0x70')](_0xb9fb3[_0x93ed('0x5b')][_0x93ed('0xa7')])){_0xb9fb3[_0x93ed('0x5b')]['from']=util['format'](_0x93ed('0xa8'),_0x2190c7['name'],_0x2190c7[_0x93ed('0x6e')]||_0x2190c7[_0x93ed('0x3f')][_0x93ed('0x75')]);}if(_0xb9fb3['body'][_0x93ed('0xa9')]&&_0xb9fb3[_0x93ed('0x5b')][_0x93ed('0xa9')][_0x93ed('0x59')]){for(var _0xf01dca=0x0;_0xf01dca<_0xb9fb3[_0x93ed('0x5b')]['attachments'][_0x93ed('0x59')];_0xf01dca+=0x1){_0xb9fb3[_0x93ed('0x5b')]['attachments'][_0xf01dca]={'filename':_0xb9fb3['body'][_0x93ed('0xa9')][_0xf01dca][_0x93ed('0x39')],'path':path[_0x93ed('0xaa')](config[_0x93ed('0xab')],'server/files/attachments',_0xb9fb3['body'][_0x93ed('0xa9')][_0xf01dca]['basename'])};}}var _0x53b3c2={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x2190c7[_0x93ed('0x3f')][_0x93ed('0xac')])){if(_0x2190c7['Smtp'][_0x93ed('0x79')]){_0x53b3c2[_0x93ed('0xad')]={'user':_0x2190c7['Smtp']['user'],'pass':_0x2190c7[_0x93ed('0x3f')]['pass']};}_0x53b3c2[_0x93ed('0x7a')]=_0x2190c7[_0x93ed('0x3f')]['host'];_0x53b3c2['port']=_0x2190c7['Smtp'][_0x93ed('0x7b')];_0x53b3c2[_0x93ed('0xae')]=_0x2190c7['Smtp'][_0x93ed('0xae')];}else{_0x53b3c2[_0x93ed('0xac')]=_0x2190c7[_0x93ed('0x3f')][_0x93ed('0xac')];_0x53b3c2['auth']={'user':_0x2190c7[_0x93ed('0x3f')][_0x93ed('0x75')],'pass':_0x2190c7[_0x93ed('0x3f')][_0x93ed('0x77')]};}return respondWithRpcPromise(_0x93ed('0xaf'),_0x93ed('0xb0'),{'account':_0x53b3c2,'message':_0xb9fb3[_0x93ed('0x5b')]});}else{throw new Error(_0x93ed('0xb1'));}}})[_0x93ed('0x21')](function(_0x20ad24){if(_0x20ad24){_0x3aff4b=_0x20ad24;if(_0x22beb5[_0x93ed('0xa4')]){if(_0x22beb5['List'][_0x93ed('0xb2')]['length']){return _0x22beb5[_0x93ed('0xa4')]['Contacts'][0x0];}else{return db['CmContact'][_0x93ed('0x5f')](_[_0x93ed('0xb3')](_0xb9fb3[_0x93ed('0x5b')],{'firstName':_0xb9fb3[_0x93ed('0x5b')]['to'],'email':_0xb9fb3[_0x93ed('0x5b')]['to'],'phone':_0xb9fb3[_0x93ed('0x5b')]['to'],'ListId':_0x22beb5[_0x93ed('0x6f')]}));}}else{throw new Error(_0x93ed('0xb1'));}}})[_0x93ed('0x21')](function(_0x5eb315){if(_0x5eb315){var _0x523398={'UserId':_0xb9fb3[_0x93ed('0x75')]['id'],'ContactId':_0x5eb315['id'],'MailAccountId':_0x22beb5['id'],'inReplyTo':_0x3aff4b[_0x93ed('0xb4')],'to':_0xb9fb3[_0x93ed('0x5b')][_0x93ed('0xa7')],'cc':_0xb9fb3[_0x93ed('0x5b')]['cc'],'subject':_0xb9fb3[_0x93ed('0x5b')][_0x93ed('0xb5')],'attach':_0xb9fb3[_0x93ed('0x5b')][_0x93ed('0xb6')],'firstMsgDirection':_0x93ed('0xb7'),'lastMsgAt':moment()[_0x93ed('0xa0')](_0x93ed('0xa1')),'lastMsgDirection':_0x93ed('0xb7'),'Messages':[_[_0x93ed('0x53')](_0xb9fb3[_0x93ed('0x5b')],{'messageId':_0x3aff4b[_0x93ed('0xb4')],'sentAt':moment()[_0x93ed('0xa0')](_0x93ed('0xa1')),'read':!![],'MailAccountId':_0x22beb5['id'],'UserId':_0xb9fb3[_0x93ed('0x75')]['id'],'ContactId':_0x5eb315['id']})]};if(_0xb9fb3[_0x93ed('0x5b')][_0x93ed('0xb8')]){_0x523398=_[_0x93ed('0x53')](_0x523398,_0xb9fb3[_0x93ed('0x5b')]['Interaction']);}return db[_0x93ed('0x95')][_0x93ed('0x5f')](_0x523398,{'include':[{'model':db[_0x93ed('0x9e')],'as':'Messages'}]});}})['then'](respondWithResult(_0x563e0c,null))['catch'](handleError(_0x563e0c,null));};exports['verifySmtp']=function(_0x1c1e07,_0x56109a,_0x106abf){return db[_0x93ed('0x43')][_0x93ed('0x5a')]({'where':{'id':_0x1c1e07[_0x93ed('0x62')]['id']},'include':[{'model':db[_0x93ed('0x3e')],'as':_0x93ed('0x3f'),'raw':!![]}]})[_0x93ed('0x21')](handleEntityNotFound(_0x56109a,null))[_0x93ed('0x21')](function(_0x1eabbe){if(_0x1eabbe&&_0x1eabbe[_0x93ed('0x3f')]){var _0x10ccdf={'id':_0x1eabbe['id'],'tls':{'rejectUnauthorized':![]}};if(_0x1eabbe[_0x93ed('0x3f')][_0x93ed('0xac')]){_0x10ccdf['service']=_0x1eabbe[_0x93ed('0x3f')]['service'];}else{_0x10ccdf[_0x93ed('0x7a')]=_0x1eabbe[_0x93ed('0x3f')][_0x93ed('0x7a')];_0x10ccdf[_0x93ed('0x7b')]=_0x1eabbe[_0x93ed('0x3f')]['port'];_0x10ccdf[_0x93ed('0xae')]=_0x1eabbe[_0x93ed('0x3f')][_0x93ed('0xae')];}if(_0x1eabbe[_0x93ed('0x3f')]['authentication']){_0x10ccdf[_0x93ed('0xad')]={'user':_0x1eabbe['Smtp'][_0x93ed('0x75')],'pass':_0x1eabbe[_0x93ed('0x3f')][_0x93ed('0x77')]};}return respondWithRpcPromise('VerifySmtp',_0x93ed('0xb9'),{'account':_0x10ccdf});}})['then'](respondWithResult(_0x56109a,null))['catch'](handleError(_0x56109a,null));};exports['destroy']=function(_0xa4ddb,_0x1d7364){return db[_0x93ed('0x43')][_0x93ed('0x5a')]({'where':{'id':_0xa4ddb['params']['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0x1d7364,null))[_0x93ed('0x21')](function(_0x17136d){if(_0x17136d&&_0x17136d[_0x93ed('0xac')]){throw new db[(_0x93ed('0xba'))][(_0x93ed('0xbb'))]('You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account');}return _0x17136d;})[_0x93ed('0x21')](removeEntity(_0x1d7364,null))[_0x93ed('0x29')](handleError(_0x1d7364,null));};exports[_0x93ed('0xbc')]=function(_0x2aa041,_0x365faa,_0x135fb4){return db[_0x93ed('0x43')][_0x93ed('0x5a')]({'where':{'id':_0x2aa041[_0x93ed('0x62')]['id']}})['then'](handleEntityNotFound(_0x365faa,null))[_0x93ed('0x21')](function(_0x1d360a){if(_0x1d360a){return _0x1d360a['addAgents'](_0x2aa041[_0x93ed('0x5b')][_0x93ed('0x68')],_[_0x93ed('0x8c')](_0x2aa041[_0x93ed('0x5b')],['ids','id'])||{})[_0x93ed('0xbd')](function(_0x3d21d2){for(var _0x3210e0=0x0;_0x3210e0<_0x2aa041[_0x93ed('0x5b')]['ids'][_0x93ed('0x59')];_0x3210e0+=0x1){socket[_0x93ed('0xbe')]('userMailAccount:save',{'UserId':Number(_0x2aa041[_0x93ed('0x5b')][_0x93ed('0x68')][_0x3210e0]),'MailAccountId':Number(_0x2aa041[_0x93ed('0x62')]['id'])});}return _0x3d21d2;});}})[_0x93ed('0x21')](respondWithResult(_0x365faa,null))[_0x93ed('0x29')](handleError(_0x365faa,null));};exports[_0x93ed('0xbf')]=function(_0x432e08,_0x30055b,_0x34c39b){return db['MailAccount']['find']({'where':{'id':_0x432e08[_0x93ed('0x62')]['id']}})[_0x93ed('0x21')](handleEntityNotFound(_0x30055b,null))['then'](function(_0x4ee10e){if(_0x4ee10e){return _0x4ee10e[_0x93ed('0xbf')](_0x432e08[_0x93ed('0x48')][_0x93ed('0x68')])[_0x93ed('0x21')](function(){if(_[_0x93ed('0xc0')](_0x432e08[_0x93ed('0x48')][_0x93ed('0x68')])){for(var _0x10a128=0x0;_0x10a128<_0x432e08['query']['ids'][_0x93ed('0x59')];_0x10a128+=0x1){socket[_0x93ed('0xbe')]('userMailAccount:remove',{'UserId':Number(_0x432e08[_0x93ed('0x48')]['ids'][_0x10a128]),'MailAccountId':Number(_0x432e08['params']['id'])});}}else{socket[_0x93ed('0xbe')]('userMailAccount:remove',{'UserId':Number(_0x432e08[_0x93ed('0x48')][_0x93ed('0x68')]),'MailAccountId':Number(_0x432e08[_0x93ed('0x62')]['id'])});}});}})[_0x93ed('0x21')](respondWithStatusCode(_0x30055b,null))['catch'](handleError(_0x30055b,null));};exports[_0x93ed('0xc1')]=function(_0x3a8721,_0x2e168a,_0x374286){var _0x2294d8={};var _0x589d66={};var _0x2b78d5;var _0x12dce4;return db[_0x93ed('0x43')][_0x93ed('0x61')]({'where':{'id':_0x3a8721[_0x93ed('0x62')]['id']}})['then'](handleEntityNotFound(_0x2e168a,null))[_0x93ed('0x21')](function(_0x11baba){if(_0x11baba){_0x2b78d5=_0x11baba;_0x589d66[_0x93ed('0x47')]=_[_0x93ed('0x49')](db['User'][_0x93ed('0x63')]);_0x589d66[_0x93ed('0x48')]=_['keys'](_0x3a8721['query']);_0x589d66[_0x93ed('0x4a')]=_['intersection'](_0x589d66[_0x93ed('0x47')],_0x589d66['query']);_0x2294d8[_0x93ed('0x4c')]=_[_0x93ed('0x4b')](_0x589d66[_0x93ed('0x47')],qs[_0x93ed('0x4d')](_0x3a8721[_0x93ed('0x48')]['fields']));_0x2294d8[_0x93ed('0x4c')]=_0x2294d8[_0x93ed('0x4c')][_0x93ed('0x59')]?_0x2294d8[_0x93ed('0x4c')]:_0x589d66['model'];_0x2294d8['order']=qs[_0x93ed('0x4f')](_0x3a8721['query'][_0x93ed('0x4f')]);_0x2294d8[_0x93ed('0x52')]=qs[_0x93ed('0x4a')](_[_0x93ed('0x50')](_0x3a8721['query'],_0x589d66[_0x93ed('0x4a')]));if(_0x3a8721['query']['filter']){_0x2294d8[_0x93ed('0x52')]=_['merge'](_0x2294d8[_0x93ed('0x52')],{'$or':_[_0x93ed('0x42')](_0x2294d8[_0x93ed('0x4c')],function(_0x4a77cd){var _0x3e1833={};_0x3e1833[_0x4a77cd]={'$like':'%'+_0x3a8721['query'][_0x93ed('0x51')]+'%'};return _0x3e1833;})});}_0x2294d8=_[_0x93ed('0x53')]({},_0x2294d8,_0x3a8721[_0x93ed('0x55')]);return _0x2b78d5[_0x93ed('0xc1')](_0x2294d8);}})[_0x93ed('0x21')](function(_0x124916){if(_0x124916){_0x12dce4=_0x124916['length'];if(!_0x3a8721['query'][_0x93ed('0x6c')]('nolimit')){_0x2294d8[_0x93ed('0x2f')]=qs['limit'](_0x3a8721['query'][_0x93ed('0x2f')]);_0x2294d8[_0x93ed('0x2e')]=qs[_0x93ed('0x2e')](_0x3a8721['query'][_0x93ed('0x2e')]);}return _0x2b78d5[_0x93ed('0xc1')](_0x2294d8);}})['then'](function(_0x25cd71){if(_0x25cd71){return _0x25cd71?{'count':_0x12dce4,'rows':_0x25cd71}:null;}})[_0x93ed('0x21')](respondWithResult(_0x2e168a,null))[_0x93ed('0x29')](handleError(_0x2e168a,null));};
\ No newline at end of file
index 4d620e0..71db7e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3618=['../../mysqldb','MailAccount','save','update','remove','emit','hasOwnProperty','exports','events'];(function(_0x257642,_0x270a80){var _0x3d813b=function(_0x2a1c8a){while(--_0x2a1c8a){_0x257642['push'](_0x257642['shift']());}};_0x3d813b(++_0x270a80);}(_0x3618,0x10d));var _0x8361=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0x3618[_0x279d37];return _0x530173;};'use strict';var EventEmitter=require(_0x8361('0x0'));var MailAccount=require(_0x8361('0x1'))['db'][_0x8361('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8361('0x3'),'afterUpdate':_0x8361('0x4'),'afterDestroy':_0x8361('0x5')};function emitEvent(_0x4e5bb9){return function(_0x53bd78,_0x27ef3e,_0x322214){MailAccountEvents[_0x8361('0x6')](_0x4e5bb9+':'+_0x53bd78['id'],_0x53bd78);MailAccountEvents[_0x8361('0x6')](_0x4e5bb9,_0x53bd78);_0x322214(null);};}for(var e in events){if(events[_0x8361('0x7')](e)){var event=events[e];MailAccount['hook'](e,emitEvent(event));}}module[_0x8361('0x8')]=MailAccountEvents;
\ No newline at end of file
+var _0x3809=['emit','hasOwnProperty','hook','exports','../../mysqldb','MailAccount','setMaxListeners','update','remove'];(function(_0x553a87,_0x1d621f){var _0x12d1e6=function(_0x41ae48){while(--_0x41ae48){_0x553a87['push'](_0x553a87['shift']());}};_0x12d1e6(++_0x1d621f);}(_0x3809,0xca));var _0x9380=function(_0x21852a,_0xf337da){_0x21852a=_0x21852a-0x0;var _0x371b5e=_0x3809[_0x21852a];return _0x371b5e;};'use strict';var EventEmitter=require('events');var MailAccount=require(_0x9380('0x0'))['db'][_0x9380('0x1')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x9380('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9380('0x3'),'afterDestroy':_0x9380('0x4')};function emitEvent(_0x4f7bc9){return function(_0x543db6,_0x1b2648,_0x1e32bb){MailAccountEvents[_0x9380('0x5')](_0x4f7bc9+':'+_0x543db6['id'],_0x543db6);MailAccountEvents[_0x9380('0x5')](_0x4f7bc9,_0x543db6);_0x1e32bb(null);};}for(var e in events){if(events[_0x9380('0x6')](e)){var event=events[e];MailAccount[_0x9380('0x7')](e,emitEvent(event));}}module[_0x9380('0x8')]=MailAccountEvents;
\ No newline at end of file
index 2cfc169..3f32027 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1582=['util','../../config/logger','moment','rimraf','../../config/environment','./mailAccount.attributes','exports','define','MailAccount','mail_accounts','lodash'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x1582,0xfc));var _0x2158=function(_0x2e9d8e,_0x3a377e){_0x2e9d8e=_0x2e9d8e-0x0;var _0x4dfc9b=_0x1582[_0x2e9d8e];return _0x4dfc9b;};'use strict';var _=require(_0x2158('0x0'));var util=require(_0x2158('0x1'));var logger=require(_0x2158('0x2'))('api');var moment=require(_0x2158('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x2158('0x4'));var config=require(_0x2158('0x5'));var attributes=require(_0x2158('0x6'));module[_0x2158('0x7')]=function(_0x11d4b5,_0x43acd0){return _0x11d4b5[_0x2158('0x8')](_0x2158('0x9'),attributes,{'tableName':_0x2158('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a82=['./mailAccount.attributes','exports','define','MailAccount','mail_accounts','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x2f2d46,_0x389f36){var _0x151b03=function(_0x5d0c3b){while(--_0x5d0c3b){_0x2f2d46['push'](_0x2f2d46['shift']());}};_0x151b03(++_0x389f36);}(_0x7a82,0x119));var _0x27a8=function(_0x2c00cc,_0x4a9c35){_0x2c00cc=_0x2c00cc-0x0;var _0x5a72d2=_0x7a82[_0x2c00cc];return _0x5a72d2;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x27a8('0x0'))(_0x27a8('0x1'));var moment=require(_0x27a8('0x2'));var BPromise=require(_0x27a8('0x3'));var rp=require(_0x27a8('0x4'));var fs=require('fs');var path=require(_0x27a8('0x5'));var rimraf=require(_0x27a8('0x6'));var config=require('../../config/environment');var attributes=require(_0x27a8('0x7'));module[_0x27a8('0x8')]=function(_0x2aed69,_0xedc1fc){return _0x2aed69[_0x27a8('0x9')](_0x27a8('0xa'),attributes,{'tableName':_0x27a8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 965d1c8..d4b55f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc2a=['MailInteraction','Contact\x20not\x20found','update','YYYY-MM-DD\x20HH:mm:ss','interaction','created','MailMessage','attachments','originTo','originCc','bcc','ChatWebsiteId','originChannel','ChatOfflineMessageId','Attachment','Attachments','UserId','User','unshift','waitForTheAssignedAgent','Start','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','register','request','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','GetMailAccount','MailAccount','findAll','options','raw','where','attributes','include','map','model','then','ShowMailAccount','find','NotifyMailAccount','body','mail','difference','createdAt','updatedAt','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','Contacts','DESC','MailApplication','Applications','MailServerOut','Smtp','get','omit','asc','account','autoclose','applications','push','length','*,*,*,*','create','contact','messageId','attach','format','Messages','inReplyTo'];(function(_0x45ff73,_0x539b2e){var _0x33fef9=function(_0x3110ff){while(--_0x3110ff){_0x45ff73['push'](_0x45ff73['shift']());}};_0x33fef9(++_0x539b2e);}(_0xdc2a,0xd7));var _0xadc2=function(_0xf8c640,_0x390d1c){_0xf8c640=_0xf8c640-0x0;var _0x845ae0=_0xdc2a[_0xf8c640];return _0x845ae0;};'use strict';var _=require(_0xadc2('0x0'));var util=require(_0xadc2('0x1'));var moment=require('moment');var BPromise=require(_0xadc2('0x2'));var rs=require(_0xadc2('0x3'));var fs=require('fs');var Redis=require(_0xadc2('0x4'));var db=require(_0xadc2('0x5'))['db'];var utils=require(_0xadc2('0x6'));var logger=require('../../config/logger')(_0xadc2('0x7'));var config=require(_0xadc2('0x8'));var jayson=require(_0xadc2('0x9'));var client=jayson['client'][_0xadc2('0xa')]({'port':0x232c});config[_0xadc2('0xb')]=_[_0xadc2('0xc')](config[_0xadc2('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./mailAccount.socket')[_0xadc2('0xd')](socket);function respondWithRpcPromise(_0x4fa846,_0x2c24fb,_0x2cf91e){return new BPromise(function(_0x20c5ac,_0x1b0e04){return client[_0xadc2('0xe')](_0x4fa846,_0x2cf91e)['then'](function(_0x549800){logger['info'](_0xadc2('0xf'),_0x2c24fb,_0xadc2('0x10'));logger[_0xadc2('0x11')](_0xadc2('0x12'),_0x2c24fb,_0xadc2('0x10'),JSON[_0xadc2('0x13')](_0x549800));if(_0x549800[_0xadc2('0x14')]){if(_0x549800[_0xadc2('0x14')][_0xadc2('0x15')]===0x1f4){logger['error'](_0xadc2('0xf'),_0x2c24fb,_0x549800[_0xadc2('0x14')][_0xadc2('0x16')]);return _0x1b0e04(_0x549800[_0xadc2('0x14')][_0xadc2('0x16')]);}logger[_0xadc2('0x14')](_0xadc2('0xf'),_0x2c24fb,_0x549800[_0xadc2('0x14')][_0xadc2('0x16')]);return _0x20c5ac(_0x549800['error']['message']);}else{logger[_0xadc2('0x17')](_0xadc2('0xf'),_0x2c24fb,_0xadc2('0x10'));_0x20c5ac(_0x549800['result']['message']);}})[_0xadc2('0x18')](function(_0x5a41bd){logger[_0xadc2('0x14')](_0xadc2('0xf'),_0x2c24fb,_0x5a41bd);_0x1b0e04(_0x5a41bd);});});}exports[_0xadc2('0x19')]=function(_0x3e199f){var _0x471aad=this;return new Promise(function(_0x5ee897,_0xf2a625){return db[_0xadc2('0x1a')][_0xadc2('0x1b')]({'raw':_0x3e199f[_0xadc2('0x1c')]?_0x3e199f['options'][_0xadc2('0x1d')]===undefined?!![]:![]:!![],'where':_0x3e199f[_0xadc2('0x1c')]?_0x3e199f[_0xadc2('0x1c')][_0xadc2('0x1e')]||null:null,'attributes':_0x3e199f[_0xadc2('0x1c')]?_0x3e199f[_0xadc2('0x1c')][_0xadc2('0x1f')]||null:null,'limit':_0x3e199f[_0xadc2('0x1c')]?_0x3e199f[_0xadc2('0x1c')]['limit']||null:null,'include':_0x3e199f[_0xadc2('0x1c')]?_0x3e199f[_0xadc2('0x1c')][_0xadc2('0x20')]?_[_0xadc2('0x21')](_0x3e199f['options'][_0xadc2('0x20')],function(_0x3a52db){return{'model':db[_0x3a52db[_0xadc2('0x22')]],'as':_0x3a52db['as'],'attributes':_0x3a52db[_0xadc2('0x1f')],'include':_0x3a52db[_0xadc2('0x20')]?_[_0xadc2('0x21')](_0x3a52db[_0xadc2('0x20')],function(_0xc335cd){return{'model':db[_0xc335cd[_0xadc2('0x22')]],'as':_0xc335cd['as'],'attributes':_0xc335cd[_0xadc2('0x1f')],'include':_0xc335cd[_0xadc2('0x20')]?_[_0xadc2('0x21')](_0xc335cd['include'],function(_0x184bab){return{'model':db[_0x184bab[_0xadc2('0x22')]],'as':_0x184bab['as'],'attributes':_0x184bab[_0xadc2('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xadc2('0x23')](function(_0x178738){logger[_0xadc2('0x17')]('GetMailAccount',_0x3e199f);logger[_0xadc2('0x11')]('GetMailAccount',_0x3e199f,JSON[_0xadc2('0x13')](_0x178738));_0x5ee897(_0x178738);})[_0xadc2('0x18')](function(_0x8f9041){logger['error'](_0xadc2('0x19'),_0x8f9041[_0xadc2('0x16')],_0x3e199f);_0xf2a625(_0x471aad['error'](0x1f4,_0x8f9041['message']));});});};exports[_0xadc2('0x24')]=function(_0x7a9356){var _0x51cdc3=this;return new Promise(function(_0x267bd7,_0x34c601){return db[_0xadc2('0x1a')][_0xadc2('0x25')]({'raw':_0x7a9356[_0xadc2('0x1c')]?_0x7a9356[_0xadc2('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x7a9356[_0xadc2('0x1c')]?_0x7a9356[_0xadc2('0x1c')]['where']||null:null,'attributes':_0x7a9356[_0xadc2('0x1c')]?_0x7a9356[_0xadc2('0x1c')]['attributes']||null:null,'include':_0x7a9356[_0xadc2('0x1c')]?_0x7a9356[_0xadc2('0x1c')][_0xadc2('0x20')]?_[_0xadc2('0x21')](_0x7a9356[_0xadc2('0x1c')]['include'],function(_0x51d973){return{'model':db[_0x51d973[_0xadc2('0x22')]],'as':_0x51d973['as'],'attributes':_0x51d973[_0xadc2('0x1f')],'include':_0x51d973['include']?_['map'](_0x51d973[_0xadc2('0x20')],function(_0x1a0463){return{'model':db[_0x1a0463[_0xadc2('0x22')]],'as':_0x1a0463['as'],'attributes':_0x1a0463[_0xadc2('0x1f')],'include':_0x1a0463[_0xadc2('0x20')]?_['map'](_0x1a0463[_0xadc2('0x20')],function(_0x4c04c0){return{'model':db[_0x4c04c0[_0xadc2('0x22')]],'as':_0x4c04c0['as'],'attributes':_0x4c04c0[_0xadc2('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xadc2('0x23')](function(_0x1051dc){logger[_0xadc2('0x17')](_0xadc2('0x24'),_0x7a9356);logger[_0xadc2('0x11')](_0xadc2('0x24'),_0x7a9356,JSON[_0xadc2('0x13')](_0x1051dc));_0x267bd7(_0x1051dc);})['catch'](function(_0x4f788e){logger[_0xadc2('0x14')]('ShowMailAccount',_0x4f788e[_0xadc2('0x16')],_0x7a9356);_0x34c601(_0x51cdc3[_0xadc2('0x14')](0x1f4,_0x4f788e['message']));});});};exports[_0xadc2('0x26')]=function(_0x48fbf7){var _0x494877=this;return new Promise(function(_0x23a852,_0x50972a){var _0x18f1b4={'body':_0x48fbf7[_0xadc2('0x27')],'channel':_0xadc2('0x28')};var _0x22d49c=_[_0xadc2('0x29')](_['keys'](db['CmContact']['rawAttributes']),[_0xadc2('0x2a'),_0xadc2('0x2b'),'CompanyId',_0xadc2('0x2c')]);var _0x17db5f=![];if(_0x48fbf7[_0xadc2('0x27')]['id']){delete _0x48fbf7[_0xadc2('0x27')]['id'];}if(_[_0xadc2('0x2d')](_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x2e')])){return _0x50972a(_0x494877['error'](0x1f4,_0xadc2('0x2f')));}if(_['isNil'](_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x27')])||_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x27')]===''){return _0x50972a(_0x494877[_0xadc2('0x14')](0x1f4,_0xadc2('0x30')));}if(_['isNil'](_0x48fbf7['body'][_0xadc2('0x31')])){return _0x50972a(_0x494877[_0xadc2('0x14')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x22d49c));}if(!_[_0xadc2('0x32')](_0x22d49c,_0x48fbf7['body'][_0xadc2('0x31')])){return _0x50972a(_0x494877[_0xadc2('0x14')](0x1f4,_0xadc2('0x33')+_0x22d49c));}var _0xafbd0a={};_0xafbd0a[_0x48fbf7['body'][_0xadc2('0x31')]]=_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x2e')];return db[_0xadc2('0x1a')][_0xadc2('0x25')]({'where':{'id':_0x48fbf7['account']['id']},'include':[{'model':db[_0xadc2('0x34')],'as':_0xadc2('0x35'),'include':[{'model':db['CmContact'],'as':_0xadc2('0x36'),'where':_0xafbd0a,'limit':0x1,'order':[[_0xadc2('0x2b'),_0xadc2('0x37')]]}]},{'model':db[_0xadc2('0x38')],'as':_0xadc2('0x39')},{'model':db[_0xadc2('0x3a')],'as':_0xadc2('0x3b')}]})['then'](function(_0x4facc6){if(_0x4facc6&&_0x4facc6[_0xadc2('0x35')]){var _0x2ac5eb=_0x4facc6[_0xadc2('0x3c')]({'plain':!![]});_0x18f1b4['account']=_[_0xadc2('0x3d')](_0x2ac5eb,[_0xadc2('0x39'),_0xadc2('0x35')]);_0x18f1b4['applications']=_0x2ac5eb[_0xadc2('0x39')];_0x18f1b4['list']=_0x2ac5eb[_0xadc2('0x35')];_0x18f1b4['applications']=_['orderBy'](_0x18f1b4['applications'],['priority'],[_0xadc2('0x3e')]);if(_0x18f1b4[_0xadc2('0x3f')]&&_0x18f1b4[_0xadc2('0x3f')][_0xadc2('0x40')]){_0x18f1b4[_0xadc2('0x41')][_0xadc2('0x42')]({'id':0x0,'priority':_0x18f1b4[_0xadc2('0x41')][_0xadc2('0x43')]+0x1,'app':'close','appdata':_0xadc2('0x40'),'interval':_0xadc2('0x44')});}if(_0x18f1b4[_0xadc2('0x3f')][_0xadc2('0x39')]){delete _0x18f1b4['account'][_0xadc2('0x39')];}if(_0x18f1b4['account'][_0xadc2('0x35')]){delete _0x18f1b4[_0xadc2('0x3f')]['List'];}if(_0x2ac5eb[_0xadc2('0x35')]['Contacts'][_0xadc2('0x43')]){return _0x2ac5eb[_0xadc2('0x35')][_0xadc2('0x36')][0x0];}var _0x2b33eb=_[_0xadc2('0xc')](_0x48fbf7[_0xadc2('0x27')],{'firstName':_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x2e')],'ListId':_0x2ac5eb['ListId']});_0x2b33eb[_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x31')]]=_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x2e')];return db['CmContact'][_0xadc2('0x45')](_0x2b33eb);}else{throw new Error('List\x20not\x20found');}})[_0xadc2('0x23')](function(_0xa5a0a0){_0x18f1b4[_0xadc2('0x46')]=_0xa5a0a0;if(_0xa5a0a0){if(!_0x48fbf7['body'][_0xadc2('0x16')]['messageId']){_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x16')]['messageId']=rs['generate']()+'\x20'+_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x16')][_0xadc2('0x2e')];}var _0xcb499d={'ContactId':_0xa5a0a0['id'],'MailAccountId':_0x48fbf7[_0xadc2('0x3f')]['id'],'inReplyTo':_0x48fbf7['body'][_0xadc2('0x16')][_0xadc2('0x47')],'to':_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x16')]['from'],'cc':_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x16')]['cc'],'subject':_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x16')]['subject'],'attach':_0x48fbf7[_0xadc2('0x27')]['message'][_0xadc2('0x48')],'lastMsgAt':moment()[_0xadc2('0x49')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db['MailInteraction'][_0xadc2('0x25')]({'where':{'closed':![],'MailAccountId':_0x48fbf7[_0xadc2('0x3f')]['id']},'include':[{'model':db['MailMessage'],'as':_0xadc2('0x4a'),'attributes':['messageId'],'where':{'messageId':_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x16')][_0xadc2('0x4b')]}}]})[_0xadc2('0x23')](function(_0x5debe6){if(_0x5debe6){return[_0x5debe6,![]];}return db[_0xadc2('0x4c')]['create'](_0xcb499d)[_0xadc2('0x23')](function(_0x3ff533){return[_0x3ff533,!![]];});});}else{throw new Error(_0xadc2('0x4d'));}})['spread'](function(_0x3c5098,_0x6680ab){if(_0x3c5098){_0x17db5f=_0x6680ab;if(!_0x6680ab){return _0x3c5098[_0xadc2('0x4e')]({'inReplyTo':_0x48fbf7['body']['message'][_0xadc2('0x47')],'to':_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x16')][_0xadc2('0x2e')],'cc':_0x48fbf7['body']['message']['cc'],'subject':_0x48fbf7['body'][_0xadc2('0x16')]['subject'],'attach':_0x3c5098[_0xadc2('0x48')]?_0x3c5098[_0xadc2('0x48')]:_0x48fbf7['body'][_0xadc2('0x16')]['attach'],'substatus':null,'substatusAt':moment()[_0xadc2('0x49')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()['format'](_0xadc2('0x4f')),'lastMsgDirection':'in'});}else{return _0x3c5098;}}})['then'](function(_0x1ea1b0){_0x18f1b4[_0xadc2('0x50')]=_0x1ea1b0[_0xadc2('0x3c')]({'plain':!![]});_0x18f1b4['interaction'][_0xadc2('0x51')]=_0x17db5f;return db[_0xadc2('0x52')][_0xadc2('0x45')]({'body':_0x48fbf7['body']['body'],'MailAccountId':_0x48fbf7[_0xadc2('0x3f')]['id'],'MailInteractionId':_0x1ea1b0['id'],'direction':'in','ContactId':_0x18f1b4[_0xadc2('0x46')]['id'],'messageId':_0x48fbf7['body']['message'][_0xadc2('0x47')],'from':_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x16')][_0xadc2('0x2e')],'to':_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x16')]['to'],'cc':_0x48fbf7['body'][_0xadc2('0x16')]['cc'],'subject':_0x48fbf7['body'][_0xadc2('0x16')]['subject'],'attach':_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x16')][_0xadc2('0x48')],'Attachments':_0x48fbf7['body'][_0xadc2('0x16')][_0xadc2('0x53')],'originTo':_0x48fbf7['body'][_0xadc2('0x16')][_0xadc2('0x54')],'originCc':_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x16')][_0xadc2('0x55')],'bcc':_0x48fbf7['body'][_0xadc2('0x16')][_0xadc2('0x56')],'ChatWebsiteId':_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x16')][_0xadc2('0x57')]||null,'originChannel':_0x48fbf7[_0xadc2('0x27')][_0xadc2('0x16')][_0xadc2('0x58')]||'Email','ChatOfflineMessageId':_0x48fbf7['body'][_0xadc2('0x16')][_0xadc2('0x59')]||null},{'include':[{'model':db[_0xadc2('0x5a')],'as':_0xadc2('0x5b')}]});})[_0xadc2('0x23')](function(_0x4f723d){_0x18f1b4[_0xadc2('0x16')]=_0x4f723d;if(_0x18f1b4[_0xadc2('0x50')][_0xadc2('0x5c')]){return db[_0xadc2('0x5d')][_0xadc2('0x25')]({'attributes':['id','name'],'where':{'id':_0x18f1b4[_0xadc2('0x50')]['UserId']}})['then'](function(_0x1c92b1){if(_0x1c92b1){_0x18f1b4[_0xadc2('0x41')][_0xadc2('0x5e')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x1c92b1['name']+','+(_0x18f1b4[_0xadc2('0x3f')][_0xadc2('0x5f')]||0xa),'interval':_0xadc2('0x44')});}return respondWithRpcPromise(_0xadc2('0x60'),'startRouting',_0x18f1b4);});}return respondWithRpcPromise(_0xadc2('0x60'),'startRouting',_0x18f1b4);})['then'](function(_0x2243ae){_0x23a852(_0x2243ae);})[_0xadc2('0x18')](function(_0x3246ff){_0x50972a(_0x494877[_0xadc2('0x14')](0x1f4,_0x3246ff[_0xadc2('0x16')]));});});};
\ No newline at end of file
+var _0x7004=['created','attachments','originTo','originCc','originChannel','Email','ChatOfflineMessageId','Attachment','Attachments','User','name','unshift','agent','*,*,*,*','Start','startRouting','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','defaults','redis','localhost','socket.io-emitter','./mailAccount.socket','register','request','then','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','code','MailAccount,\x20%s,\x20%s','message','info','result','catch','GetMailAccount','MailAccount','findAll','options','where','attributes','include','map','model','stringify','ShowMailAccount','find','NotifyMailAccount','body','difference','keys','CmContact','rawAttributes','createdAt','CompanyId','ListId','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','account','CmList','Contacts','updatedAt','DESC','Applications','MailServerOut','List','get','list','applications','priority','asc','autoclose','close','length','create','List\x20not\x20found','contact','messageId','subject','attach','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Contact\x20not\x20found','spread','update','format','interaction'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7004,0x79));var _0x4700=function(_0x5517c0,_0x358609){_0x5517c0=_0x5517c0-0x0;var _0x33803b=_0x7004[_0x5517c0];return _0x33803b;};'use strict';var _=require(_0x4700('0x0'));var util=require(_0x4700('0x1'));var moment=require(_0x4700('0x2'));var BPromise=require(_0x4700('0x3'));var rs=require(_0x4700('0x4'));var fs=require('fs');var Redis=require(_0x4700('0x5'));var db=require(_0x4700('0x6'))['db'];var utils=require(_0x4700('0x7'));var logger=require(_0x4700('0x8'))(_0x4700('0x9'));var config=require(_0x4700('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x4700('0xb')]['http']({'port':0x232c});config['redis']=_[_0x4700('0xc')](config[_0x4700('0xd')],{'host':_0x4700('0xe'),'port':0x18eb});var socket=require(_0x4700('0xf'))(new Redis(config[_0x4700('0xd')]));require(_0x4700('0x10'))[_0x4700('0x11')](socket);function respondWithRpcPromise(_0x2f6ec7,_0x5b5335,_0x32a98e){return new BPromise(function(_0x23f88f,_0x7e732c){return client[_0x4700('0x12')](_0x2f6ec7,_0x32a98e)[_0x4700('0x13')](function(_0x436767){logger['info']('MailAccount,\x20%s,\x20%s',_0x5b5335,_0x4700('0x14'));logger[_0x4700('0x15')](_0x4700('0x16'),_0x5b5335,'request\x20sent',JSON['stringify'](_0x436767));if(_0x436767[_0x4700('0x17')]){if(_0x436767[_0x4700('0x17')][_0x4700('0x18')]===0x1f4){logger[_0x4700('0x17')](_0x4700('0x19'),_0x5b5335,_0x436767[_0x4700('0x17')][_0x4700('0x1a')]);return _0x7e732c(_0x436767['error'][_0x4700('0x1a')]);}logger['error']('MailAccount,\x20%s,\x20%s',_0x5b5335,_0x436767[_0x4700('0x17')][_0x4700('0x1a')]);return _0x23f88f(_0x436767[_0x4700('0x17')][_0x4700('0x1a')]);}else{logger[_0x4700('0x1b')](_0x4700('0x19'),_0x5b5335,'request\x20sent');_0x23f88f(_0x436767[_0x4700('0x1c')]['message']);}})[_0x4700('0x1d')](function(_0xefcb85){logger['error']('MailAccount,\x20%s,\x20%s',_0x5b5335,_0xefcb85);_0x7e732c(_0xefcb85);});});}exports[_0x4700('0x1e')]=function(_0x3607b1){var _0xad253a=this;return new Promise(function(_0x13201a,_0x1a3875){return db[_0x4700('0x1f')][_0x4700('0x20')]({'raw':_0x3607b1[_0x4700('0x21')]?_0x3607b1['options']['raw']===undefined?!![]:![]:!![],'where':_0x3607b1['options']?_0x3607b1[_0x4700('0x21')][_0x4700('0x22')]||null:null,'attributes':_0x3607b1[_0x4700('0x21')]?_0x3607b1[_0x4700('0x21')][_0x4700('0x23')]||null:null,'limit':_0x3607b1[_0x4700('0x21')]?_0x3607b1['options']['limit']||null:null,'include':_0x3607b1[_0x4700('0x21')]?_0x3607b1[_0x4700('0x21')][_0x4700('0x24')]?_[_0x4700('0x25')](_0x3607b1[_0x4700('0x21')][_0x4700('0x24')],function(_0x567619){return{'model':db[_0x567619['model']],'as':_0x567619['as'],'attributes':_0x567619[_0x4700('0x23')],'include':_0x567619[_0x4700('0x24')]?_[_0x4700('0x25')](_0x567619['include'],function(_0x10ccd6){return{'model':db[_0x10ccd6[_0x4700('0x26')]],'as':_0x10ccd6['as'],'attributes':_0x10ccd6[_0x4700('0x23')],'include':_0x10ccd6[_0x4700('0x24')]?_['map'](_0x10ccd6[_0x4700('0x24')],function(_0x2707a9){return{'model':db[_0x2707a9[_0x4700('0x26')]],'as':_0x2707a9['as'],'attributes':_0x2707a9[_0x4700('0x23')]};}):[]};}):[]};}):[]:[]})[_0x4700('0x13')](function(_0x510262){logger['info'](_0x4700('0x1e'),_0x3607b1);logger['debug'](_0x4700('0x1e'),_0x3607b1,JSON[_0x4700('0x27')](_0x510262));_0x13201a(_0x510262);})[_0x4700('0x1d')](function(_0x3235d7){logger['error'](_0x4700('0x1e'),_0x3235d7[_0x4700('0x1a')],_0x3607b1);_0x1a3875(_0xad253a['error'](0x1f4,_0x3235d7[_0x4700('0x1a')]));});});};exports[_0x4700('0x28')]=function(_0xd693e6){var _0x5103f1=this;return new Promise(function(_0x33ee18,_0x25a40f){return db[_0x4700('0x1f')][_0x4700('0x29')]({'raw':_0xd693e6[_0x4700('0x21')]?_0xd693e6[_0x4700('0x21')]['raw']===undefined?!![]:![]:!![],'where':_0xd693e6[_0x4700('0x21')]?_0xd693e6['options']['where']||null:null,'attributes':_0xd693e6[_0x4700('0x21')]?_0xd693e6[_0x4700('0x21')][_0x4700('0x23')]||null:null,'include':_0xd693e6[_0x4700('0x21')]?_0xd693e6[_0x4700('0x21')][_0x4700('0x24')]?_[_0x4700('0x25')](_0xd693e6[_0x4700('0x21')][_0x4700('0x24')],function(_0x560c39){return{'model':db[_0x560c39[_0x4700('0x26')]],'as':_0x560c39['as'],'attributes':_0x560c39[_0x4700('0x23')],'include':_0x560c39[_0x4700('0x24')]?_[_0x4700('0x25')](_0x560c39['include'],function(_0x2e5bc3){return{'model':db[_0x2e5bc3[_0x4700('0x26')]],'as':_0x2e5bc3['as'],'attributes':_0x2e5bc3['attributes'],'include':_0x2e5bc3['include']?_['map'](_0x2e5bc3[_0x4700('0x24')],function(_0x57e10a){return{'model':db[_0x57e10a[_0x4700('0x26')]],'as':_0x57e10a['as'],'attributes':_0x57e10a[_0x4700('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4a81b1){logger[_0x4700('0x1b')]('ShowMailAccount',_0xd693e6);logger['debug'](_0x4700('0x28'),_0xd693e6,JSON[_0x4700('0x27')](_0x4a81b1));_0x33ee18(_0x4a81b1);})[_0x4700('0x1d')](function(_0x1b63b8){logger[_0x4700('0x17')](_0x4700('0x28'),_0x1b63b8[_0x4700('0x1a')],_0xd693e6);_0x25a40f(_0x5103f1[_0x4700('0x17')](0x1f4,_0x1b63b8['message']));});});};exports[_0x4700('0x2a')]=function(_0x291779){var _0x44e4da=this;return new Promise(function(_0x5e733d,_0x545e87){var _0x497d03={'body':_0x291779[_0x4700('0x2b')],'channel':'mail'};var _0x53e0ab=_[_0x4700('0x2c')](_[_0x4700('0x2d')](db[_0x4700('0x2e')][_0x4700('0x2f')]),[_0x4700('0x30'),'updatedAt',_0x4700('0x31'),_0x4700('0x32')]);var _0x2cb978=![];if(_0x291779['body']['id']){delete _0x291779[_0x4700('0x2b')]['id'];}if(_['isNil'](_0x291779['body']['from'])){return _0x545e87(_0x44e4da[_0x4700('0x17')](0x1f4,_0x4700('0x33')));}if(_[_0x4700('0x34')](_0x291779[_0x4700('0x2b')][_0x4700('0x2b')])||_0x291779[_0x4700('0x2b')][_0x4700('0x2b')]===''){return _0x545e87(_0x44e4da[_0x4700('0x17')](0x1f4,_0x4700('0x35')));}if(_[_0x4700('0x34')](_0x291779[_0x4700('0x2b')]['mapKey'])){return _0x545e87(_0x44e4da[_0x4700('0x17')](0x1f4,_0x4700('0x36')+_0x53e0ab));}if(!_[_0x4700('0x37')](_0x53e0ab,_0x291779[_0x4700('0x2b')][_0x4700('0x38')])){return _0x545e87(_0x44e4da[_0x4700('0x17')](0x1f4,_0x4700('0x39')+_0x53e0ab));}var _0x5e7778={};_0x5e7778[_0x291779['body'][_0x4700('0x38')]]=_0x291779[_0x4700('0x2b')][_0x4700('0x3a')];return db['MailAccount'][_0x4700('0x29')]({'where':{'id':_0x291779[_0x4700('0x3b')]['id']},'include':[{'model':db[_0x4700('0x3c')],'as':'List','include':[{'model':db[_0x4700('0x2e')],'as':_0x4700('0x3d'),'where':_0x5e7778,'limit':0x1,'order':[[_0x4700('0x3e'),_0x4700('0x3f')]]}]},{'model':db['MailApplication'],'as':_0x4700('0x40')},{'model':db[_0x4700('0x41')],'as':'Smtp'}]})['then'](function(_0x750541){if(_0x750541&&_0x750541[_0x4700('0x42')]){var _0x1721fa=_0x750541[_0x4700('0x43')]({'plain':!![]});_0x497d03['account']=_['omit'](_0x1721fa,[_0x4700('0x40'),'List']);_0x497d03['applications']=_0x1721fa[_0x4700('0x40')];_0x497d03[_0x4700('0x44')]=_0x1721fa['List'];_0x497d03[_0x4700('0x45')]=_['orderBy'](_0x497d03[_0x4700('0x45')],[_0x4700('0x46')],[_0x4700('0x47')]);if(_0x497d03['account']&&_0x497d03[_0x4700('0x3b')][_0x4700('0x48')]){_0x497d03['applications']['push']({'id':0x0,'priority':_0x497d03[_0x4700('0x45')]['length']+0x1,'app':_0x4700('0x49'),'appdata':'autoclose','interval':'*,*,*,*'});}if(_0x497d03[_0x4700('0x3b')]['Applications']){delete _0x497d03['account']['Applications'];}if(_0x497d03[_0x4700('0x3b')]['List']){delete _0x497d03[_0x4700('0x3b')][_0x4700('0x42')];}if(_0x1721fa['List']['Contacts'][_0x4700('0x4a')]){return _0x1721fa['List'][_0x4700('0x3d')][0x0];}var _0x5b8fee=_[_0x4700('0xc')](_0x291779['body'],{'firstName':_0x291779[_0x4700('0x2b')][_0x4700('0x3a')],'ListId':_0x1721fa[_0x4700('0x32')]});_0x5b8fee[_0x291779[_0x4700('0x2b')][_0x4700('0x38')]]=_0x291779[_0x4700('0x2b')]['from'];return db['CmContact'][_0x4700('0x4b')](_0x5b8fee);}else{throw new Error(_0x4700('0x4c'));}})[_0x4700('0x13')](function(_0x8c24d4){_0x497d03[_0x4700('0x4d')]=_0x8c24d4;if(_0x8c24d4){if(!_0x291779['body'][_0x4700('0x1a')]['messageId']){_0x291779[_0x4700('0x2b')][_0x4700('0x1a')][_0x4700('0x4e')]=rs['generate']()+'\x20'+_0x291779[_0x4700('0x2b')][_0x4700('0x1a')]['from'];}var _0x39bf90={'ContactId':_0x8c24d4['id'],'MailAccountId':_0x291779['account']['id'],'inReplyTo':_0x291779[_0x4700('0x2b')][_0x4700('0x1a')][_0x4700('0x4e')],'to':_0x291779[_0x4700('0x2b')][_0x4700('0x1a')][_0x4700('0x3a')],'cc':_0x291779[_0x4700('0x2b')][_0x4700('0x1a')]['cc'],'subject':_0x291779[_0x4700('0x2b')][_0x4700('0x1a')][_0x4700('0x4f')],'attach':_0x291779[_0x4700('0x2b')][_0x4700('0x1a')][_0x4700('0x50')],'lastMsgAt':moment()['format'](_0x4700('0x51')),'lastMsgDirection':'in'};return db[_0x4700('0x52')][_0x4700('0x29')]({'where':{'closed':![],'MailAccountId':_0x291779[_0x4700('0x3b')]['id']},'include':[{'model':db[_0x4700('0x53')],'as':'Messages','attributes':[_0x4700('0x4e')],'where':{'messageId':_0x291779[_0x4700('0x2b')]['message']['inReplyTo']}}]})[_0x4700('0x13')](function(_0x226336){if(_0x226336){return[_0x226336,![]];}return db['MailInteraction'][_0x4700('0x4b')](_0x39bf90)[_0x4700('0x13')](function(_0x56dbf0){return[_0x56dbf0,!![]];});});}else{throw new Error(_0x4700('0x54'));}})[_0x4700('0x55')](function(_0x8c7435,_0x3fbf0d){if(_0x8c7435){_0x2cb978=_0x3fbf0d;if(!_0x3fbf0d){return _0x8c7435[_0x4700('0x56')]({'inReplyTo':_0x291779[_0x4700('0x2b')][_0x4700('0x1a')][_0x4700('0x4e')],'to':_0x291779[_0x4700('0x2b')][_0x4700('0x1a')][_0x4700('0x3a')],'cc':_0x291779[_0x4700('0x2b')][_0x4700('0x1a')]['cc'],'subject':_0x291779[_0x4700('0x2b')][_0x4700('0x1a')]['subject'],'attach':_0x8c7435['attach']?_0x8c7435[_0x4700('0x50')]:_0x291779[_0x4700('0x2b')]['message'][_0x4700('0x50')],'substatus':null,'substatusAt':moment()[_0x4700('0x57')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0x4700('0x57')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'});}else{return _0x8c7435;}}})['then'](function(_0x8d5343){_0x497d03[_0x4700('0x58')]=_0x8d5343['get']({'plain':!![]});_0x497d03[_0x4700('0x58')][_0x4700('0x59')]=_0x2cb978;return db[_0x4700('0x53')][_0x4700('0x4b')]({'body':_0x291779[_0x4700('0x2b')][_0x4700('0x2b')],'MailAccountId':_0x291779[_0x4700('0x3b')]['id'],'MailInteractionId':_0x8d5343['id'],'direction':'in','ContactId':_0x497d03['contact']['id'],'messageId':_0x291779[_0x4700('0x2b')][_0x4700('0x1a')]['messageId'],'from':_0x291779[_0x4700('0x2b')]['message'][_0x4700('0x3a')],'to':_0x291779[_0x4700('0x2b')][_0x4700('0x1a')]['to'],'cc':_0x291779['body']['message']['cc'],'subject':_0x291779['body'][_0x4700('0x1a')][_0x4700('0x4f')],'attach':_0x291779[_0x4700('0x2b')][_0x4700('0x1a')][_0x4700('0x50')],'Attachments':_0x291779['body'][_0x4700('0x1a')][_0x4700('0x5a')],'originTo':_0x291779[_0x4700('0x2b')][_0x4700('0x1a')][_0x4700('0x5b')],'originCc':_0x291779[_0x4700('0x2b')]['message'][_0x4700('0x5c')],'bcc':_0x291779[_0x4700('0x2b')]['message']['bcc'],'ChatWebsiteId':_0x291779[_0x4700('0x2b')][_0x4700('0x1a')]['ChatWebsiteId']||null,'originChannel':_0x291779['body'][_0x4700('0x1a')][_0x4700('0x5d')]||_0x4700('0x5e'),'ChatOfflineMessageId':_0x291779[_0x4700('0x2b')][_0x4700('0x1a')][_0x4700('0x5f')]||null},{'include':[{'model':db[_0x4700('0x60')],'as':_0x4700('0x61')}]});})[_0x4700('0x13')](function(_0x2be8d9){_0x497d03['message']=_0x2be8d9;if(_0x497d03[_0x4700('0x58')]['UserId']){return db[_0x4700('0x62')][_0x4700('0x29')]({'attributes':['id',_0x4700('0x63')],'where':{'id':_0x497d03[_0x4700('0x58')]['UserId']}})['then'](function(_0x339f14){if(_0x339f14){_0x497d03[_0x4700('0x45')][_0x4700('0x64')]({'id':0x0,'priority':0x0,'app':_0x4700('0x65'),'appdata':_0x339f14[_0x4700('0x63')]+','+(_0x497d03[_0x4700('0x3b')]['waitForTheAssignedAgent']||0xa),'interval':_0x4700('0x66')});}return respondWithRpcPromise(_0x4700('0x67'),_0x4700('0x68'),_0x497d03);});}return respondWithRpcPromise(_0x4700('0x67'),_0x4700('0x68'),_0x497d03);})[_0x4700('0x13')](function(_0x2ba831){_0x5e733d(_0x2ba831);})[_0x4700('0x1d')](function(_0x40bad3){_0x545e87(_0x44e4da[_0x4700('0x17')](0x1f4,_0x40bad3[_0x4700('0x1a')]));});});};
\ No newline at end of file
index 141af73..1ec335f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc932=['update','removeListener','register','mailAccount:','./mailAccount.events'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0xc932,0x18f));var _0x2c93=function(_0xca04ff,_0xcb449f){_0xca04ff=_0xca04ff-0x0;var _0x6b547=_0xc932[_0xca04ff];return _0x6b547;};'use strict';var MailAccountEvents=require(_0x2c93('0x0'));var events=['save','remove',_0x2c93('0x1')];function createListener(_0x20bab5,_0x4ffe16){return function(_0x22d149){_0x4ffe16['emit'](_0x20bab5,_0x22d149);};}function removeListener(_0x1687b1,_0x3e695a){return function(){MailAccountEvents[_0x2c93('0x2')](_0x1687b1,_0x3e695a);};}exports[_0x2c93('0x3')]=function(_0x527776){for(var _0x5ae1a3=0x0,_0x55a5c1=events['length'];_0x5ae1a3<_0x55a5c1;_0x5ae1a3++){var _0xe205e3=events[_0x5ae1a3];var _0x10a55b=createListener(_0x2c93('0x4')+_0xe205e3,_0x527776);MailAccountEvents['on'](_0xe205e3,_0x10a55b);}};
\ No newline at end of file
+var _0xa2a1=['update','emit','removeListener','register','length','mailAccount:','./mailAccount.events','remove'];(function(_0x215900,_0x126029){var _0x3edee6=function(_0x5d6040){while(--_0x5d6040){_0x215900['push'](_0x215900['shift']());}};_0x3edee6(++_0x126029);}(_0xa2a1,0xf6));var _0x1a2a=function(_0x419b75,_0x2e450d){_0x419b75=_0x419b75-0x0;var _0x5191a4=_0xa2a1[_0x419b75];return _0x5191a4;};'use strict';var MailAccountEvents=require(_0x1a2a('0x0'));var events=['save',_0x1a2a('0x1'),_0x1a2a('0x2')];function createListener(_0x566f1e,_0x7e5032){return function(_0x142f72){_0x7e5032[_0x1a2a('0x3')](_0x566f1e,_0x142f72);};}function removeListener(_0xd0b163,_0x39ca9b){return function(){MailAccountEvents[_0x1a2a('0x4')](_0xd0b163,_0x39ca9b);};}exports[_0x1a2a('0x5')]=function(_0x75cfdb){for(var _0xd7b1af=0x0,_0x64844=events[_0x1a2a('0x6')];_0xd7b1af<_0x64844;_0xd7b1af++){var _0x61da8=events[_0xd7b1af];var _0x377f5c=createListener(_0x1a2a('0x7')+_0x61da8,_0x75cfdb);MailAccountEvents['on'](_0x61da8,_0x377f5c);}};
\ No newline at end of file
index c20bc27..617b28e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae10=['../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','isAuthenticated','put','delete','exports','util','express','fs-extra'];(function(_0x3970d8,_0x4a5477){var _0x440e19=function(_0x469e3b){while(--_0x469e3b){_0x3970d8['push'](_0x3970d8['shift']());}};_0x440e19(++_0x4a5477);}(_0xae10,0x11b));var _0x0ae1=function(_0x530331,_0x325d9f){_0x530331=_0x530331-0x0;var _0x212ed2=_0xae10[_0x530331];return _0x212ed2;};'use strict';var multer=require('multer');var util=require(_0x0ae1('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0ae1('0x1'));var router=express['Router']();var fs_extra=require(_0x0ae1('0x2'));var auth=require(_0x0ae1('0x3'));var interaction=require(_0x0ae1('0x4'));var config=require(_0x0ae1('0x5'));var controller=require(_0x0ae1('0x6'));router[_0x0ae1('0x7')](_0x0ae1('0x8'),auth[_0x0ae1('0x9')](),controller['show']);router[_0x0ae1('0xa')](_0x0ae1('0x8'),auth[_0x0ae1('0x9')](),controller['update']);router[_0x0ae1('0xb')]('/:id',auth[_0x0ae1('0x9')](),controller['destroy']);module[_0x0ae1('0xc')]=router;
\ No newline at end of file
+var _0x5306=['isAuthenticated','show','update','delete','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./mailApplication.controller','get','/:id'];(function(_0x868b7c,_0xfa438b){var _0x21683c=function(_0x21bc66){while(--_0x21bc66){_0x868b7c['push'](_0x868b7c['shift']());}};_0x21683c(++_0xfa438b);}(_0x5306,0x9b));var _0x6530=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5306[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x6530('0x0'));var util=require('util');var path=require(_0x6530('0x1'));var timeout=require(_0x6530('0x2'));var express=require('express');var router=express[_0x6530('0x3')]();var fs_extra=require(_0x6530('0x4'));var auth=require(_0x6530('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x6530('0x6'));var controller=require(_0x6530('0x7'));router[_0x6530('0x8')](_0x6530('0x9'),auth[_0x6530('0xa')](),controller[_0x6530('0xb')]);router['put'](_0x6530('0x9'),auth[_0x6530('0xa')](),controller[_0x6530('0xc')]);router[_0x6530('0xd')](_0x6530('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0x6530('0xe')]=router;
\ No newline at end of file
index 7979d68..9005b05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1923=['STRING','*,*,*,*','exports','TEXT'];(function(_0x127a60,_0x37f33a){var _0xc1f6a3=function(_0x8ed035){while(--_0x8ed035){_0x127a60['push'](_0x127a60['shift']());}};_0xc1f6a3(++_0x37f33a);}(_0x1923,0x12e));var _0x3192=function(_0x218f79,_0x2bc65d){_0x218f79=_0x218f79-0x0;var _0x51fbf4=_0x1923[_0x218f79];return _0x51fbf4;};'use strict';var Sequelize=require('sequelize');module[_0x3192('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x3192('0x1')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x3192('0x2')],'defaultValue':_0x3192('0x3')}};
\ No newline at end of file
+var _0x059b=['exports','STRING','noop','TEXT'];(function(_0x2fea10,_0x5398c8){var _0x2b591c=function(_0x6c910d){while(--_0x6c910d){_0x2fea10['push'](_0x2fea10['shift']());}};_0x2b591c(++_0x5398c8);}(_0x059b,0x94));var _0xb059=function(_0x5c007f,_0x2a74bb){_0x5c007f=_0x5c007f-0x0;var _0x35da1b=_0x059b[_0x5c007f];return _0x35da1b;};'use strict';var Sequelize=require('sequelize');module[_0xb059('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xb059('0x1')],'allowNull':![],'defaultValue':_0xb059('0x2')},'appdata':{'type':Sequelize[_0xb059('0x3')]()},'description':{'type':Sequelize[_0xb059('0x1')]},'interval':{'type':Sequelize[_0xb059('0x1')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index c43af61..dd9bd5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['name','status','send','show','params','keys','MailApplication','rawAttributes','query','intersection','model','fields','attributes','length','includeAll','merge','options','find','then','catch','body','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','update','destroy','sendStatus'];(function(_0x50acd1,_0x5f19a7){var _0x19cd8f=function(_0x57f166){while(--_0x57f166){_0x50acd1['push'](_0x50acd1['shift']());}};_0x19cd8f(++_0x5f19a7);}(_0xb43b,0x1b2));var _0xbb43=function(_0x53c98d,_0x3f7f98){_0x53c98d=_0x53c98d-0x0;var _0x3390d9=_0xb43b[_0x53c98d];return _0x3390d9;};'use strict';var emlformat=require(_0xbb43('0x0'));var rimraf=require(_0xbb43('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbb43('0x2'));var rp=require(_0xbb43('0x3'));var moment=require(_0xbb43('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbb43('0x5'));var util=require(_0xbb43('0x6'));var path=require(_0xbb43('0x7'));var sox=require(_0xbb43('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb43('0x9'));var _=require('lodash');var squel=require(_0xbb43('0xa'));var crypto=require(_0xbb43('0xb'));var jsforce=require(_0xbb43('0xc'));var deskjs=require(_0xbb43('0xd'));var toCsv=require(_0xbb43('0xe'));var querystring=require('querystring');var Papa=require(_0xbb43('0xf'));var Redis=require(_0xbb43('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xbb43('0x11'));var as=require(_0xbb43('0x12'));var hardwareService=require(_0xbb43('0x13'));var logger=require(_0xbb43('0x14'))(_0xbb43('0x15'));var utils=require(_0xbb43('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xbb43('0x17'));var db=require(_0xbb43('0x18'))['db'];function respondWithStatusCode(_0x50e2c0,_0x578392){_0x578392=_0x578392||0xcc;return function(_0x41e7e5){if(_0x41e7e5){return _0x50e2c0['sendStatus'](_0x578392);}return _0x50e2c0['status'](_0x578392)[_0xbb43('0x19')]();};}function respondWithResult(_0x5a509f,_0x68d45d){_0x68d45d=_0x68d45d||0xc8;return function(_0x43021d){if(_0x43021d){return _0x5a509f['status'](_0x68d45d)['json'](_0x43021d);}};}function respondWithFilteredResult(_0x4d5bcf,_0x338120){return function(_0x2abce0){if(_0x2abce0){var _0x57bd1d=typeof _0x338120['offset']===_0xbb43('0x1a')&&typeof _0x338120['limit']==='undefined';var _0x2b0797=_0x2abce0[_0xbb43('0x1b')];var _0x2e3b43=_0x57bd1d?0x0:_0x338120['offset'];var _0x1c16d7=_0x57bd1d?_0x2abce0['count']:_0x338120[_0xbb43('0x1c')]+_0x338120[_0xbb43('0x1d')];var _0x4dfc54;if(_0x1c16d7>=_0x2b0797){_0x1c16d7=_0x2b0797;_0x4dfc54=0xc8;}else{_0x4dfc54=0xce;}_0x4d5bcf['status'](_0x4dfc54);return _0x4d5bcf[_0xbb43('0x1e')](_0xbb43('0x1f'),_0x2e3b43+'-'+_0x1c16d7+'/'+_0x2b0797)[_0xbb43('0x20')](_0x2abce0);}return null;};}function patchUpdates(_0x2bf2d4){return function(_0x5bcce7){try{jsonpatch[_0xbb43('0x21')](_0x5bcce7,_0x2bf2d4,!![]);}catch(_0x5f4416){return BPromise[_0xbb43('0x22')](_0x5f4416);}return _0x5bcce7['save']();};}function saveUpdates(_0x2f5e31,_0x565256){return function(_0x3f323e){if(_0x3f323e){return _0x3f323e[_0xbb43('0x23')](_0x2f5e31)['then'](function(_0x1d0768){return _0x1d0768;});}return null;};}function removeEntity(_0x4dfb7f,_0xf24e60){return function(_0x298ce2){if(_0x298ce2){return _0x298ce2[_0xbb43('0x24')]()['then'](function(){_0x4dfb7f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x269ca5,_0x32d7f0){return function(_0x5d8310){if(!_0x5d8310){_0x269ca5[_0xbb43('0x25')](0x194);}return _0x5d8310;};}function handleError(_0x2da653,_0x226827){_0x226827=_0x226827||0x1f4;return function(_0x3874fb){logger['error'](_0x3874fb['stack']);if(_0x3874fb[_0xbb43('0x26')]){delete _0x3874fb[_0xbb43('0x26')];}_0x2da653[_0xbb43('0x27')](_0x226827)[_0xbb43('0x28')](_0x3874fb);};}exports[_0xbb43('0x29')]=function(_0x40b04b,_0x21d386){var _0x473828={'raw':!![],'where':{'id':_0x40b04b[_0xbb43('0x2a')]['id']}},_0x539730={};_0x539730['model']=_[_0xbb43('0x2b')](db[_0xbb43('0x2c')][_0xbb43('0x2d')]);_0x539730[_0xbb43('0x2e')]=_['keys'](_0x40b04b[_0xbb43('0x2e')]);_0x539730['filters']=_['intersection'](_0x539730['model'],_0x539730[_0xbb43('0x2e')]);_0x473828['attributes']=_[_0xbb43('0x2f')](_0x539730[_0xbb43('0x30')],qs[_0xbb43('0x31')](_0x40b04b['query'][_0xbb43('0x31')]));_0x473828[_0xbb43('0x32')]=_0x473828[_0xbb43('0x32')][_0xbb43('0x33')]?_0x473828[_0xbb43('0x32')]:_0x539730[_0xbb43('0x30')];if(_0x40b04b[_0xbb43('0x2e')][_0xbb43('0x34')]){_0x473828['include']=[{'all':!![]}];}_0x473828=_[_0xbb43('0x35')]({},_0x473828,_0x40b04b[_0xbb43('0x36')]);return db[_0xbb43('0x2c')][_0xbb43('0x37')](_0x473828)[_0xbb43('0x38')](handleEntityNotFound(_0x21d386,null))[_0xbb43('0x38')](respondWithResult(_0x21d386,null))[_0xbb43('0x39')](handleError(_0x21d386,null));};exports[_0xbb43('0x23')]=function(_0x349a83,_0x57105c){if(_0x349a83[_0xbb43('0x3a')]['id']){delete _0x349a83[_0xbb43('0x3a')]['id'];}return db[_0xbb43('0x2c')][_0xbb43('0x37')]({'where':{'id':_0x349a83[_0xbb43('0x2a')]['id']}})[_0xbb43('0x38')](handleEntityNotFound(_0x57105c,null))['then'](saveUpdates(_0x349a83[_0xbb43('0x3a')],null))[_0xbb43('0x38')](respondWithResult(_0x57105c,null))['catch'](handleError(_0x57105c,null));};exports[_0xbb43('0x24')]=function(_0x2c9a7c,_0x11d384){return db['MailApplication']['find']({'where':{'id':_0x2c9a7c['params']['id']}})[_0xbb43('0x38')](handleEntityNotFound(_0x11d384,null))[_0xbb43('0x38')](removeEntity(_0x11d384,null))['catch'](handleError(_0x11d384,null));};
\ No newline at end of file
+var _0xda3f=['includeAll','include','merge','find','catch','body','MailApplication','destroy','rimraf','zip-dir','bluebird','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','end','stack','name','send','params','model','keys','query','filters','intersection','attributes','fields','length'];(function(_0x36816c,_0x5a0781){var _0x24576f=function(_0x577b2a){while(--_0x577b2a){_0x36816c['push'](_0x36816c['shift']());}};_0x24576f(++_0x5a0781);}(_0xda3f,0xec));var _0xfda3=function(_0x302e93,_0x2393d9){_0x302e93=_0x302e93-0x0;var _0x22c3fd=_0xda3f[_0x302e93];return _0x22c3fd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfda3('0x0'));var zipdir=require(_0xfda3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfda3('0x2'));var Mustache=require('mustache');var util=require(_0xfda3('0x3'));var path=require(_0xfda3('0x4'));var sox=require('sox');var csv=require(_0xfda3('0x5'));var ejs=require(_0xfda3('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfda3('0x7'));var crypto=require(_0xfda3('0x8'));var jsforce=require(_0xfda3('0x9'));var deskjs=require(_0xfda3('0xa'));var toCsv=require(_0xfda3('0x5'));var querystring=require(_0xfda3('0xb'));var Papa=require(_0xfda3('0xc'));var Redis=require(_0xfda3('0xd'));var authService=require(_0xfda3('0xe'));var qs=require(_0xfda3('0xf'));var as=require(_0xfda3('0x10'));var hardwareService=require(_0xfda3('0x11'));var logger=require('../../config/logger')(_0xfda3('0x12'));var utils=require(_0xfda3('0x13'));var config=require(_0xfda3('0x14'));var licenseUtil=require(_0xfda3('0x15'));var db=require(_0xfda3('0x16'))['db'];function respondWithStatusCode(_0x4b77ea,_0x583125){_0x583125=_0x583125||0xcc;return function(_0x5d7d5b){if(_0x5d7d5b){return _0x4b77ea[_0xfda3('0x17')](_0x583125);}return _0x4b77ea[_0xfda3('0x18')](_0x583125)['end']();};}function respondWithResult(_0x501588,_0x587e9b){_0x587e9b=_0x587e9b||0xc8;return function(_0x227d72){if(_0x227d72){return _0x501588[_0xfda3('0x18')](_0x587e9b)['json'](_0x227d72);}};}function respondWithFilteredResult(_0x57a229,_0x533365){return function(_0x80ea80){if(_0x80ea80){var _0x474707=typeof _0x533365[_0xfda3('0x19')]===_0xfda3('0x1a')&&typeof _0x533365[_0xfda3('0x1b')]===_0xfda3('0x1a');var _0x2aadcb=_0x80ea80[_0xfda3('0x1c')];var _0x4680bf=_0x474707?0x0:_0x533365[_0xfda3('0x19')];var _0x54a7c6=_0x474707?_0x80ea80[_0xfda3('0x1c')]:_0x533365[_0xfda3('0x19')]+_0x533365[_0xfda3('0x1b')];var _0x32855a;if(_0x54a7c6>=_0x2aadcb){_0x54a7c6=_0x2aadcb;_0x32855a=0xc8;}else{_0x32855a=0xce;}_0x57a229['status'](_0x32855a);return _0x57a229[_0xfda3('0x1d')](_0xfda3('0x1e'),_0x4680bf+'-'+_0x54a7c6+'/'+_0x2aadcb)[_0xfda3('0x1f')](_0x80ea80);}return null;};}function patchUpdates(_0x51e731){return function(_0x5ad52a){try{jsonpatch[_0xfda3('0x20')](_0x5ad52a,_0x51e731,!![]);}catch(_0x38d428){return BPromise[_0xfda3('0x21')](_0x38d428);}return _0x5ad52a['save']();};}function saveUpdates(_0x3cf5a9,_0xef2535){return function(_0x1e15a8){if(_0x1e15a8){return _0x1e15a8[_0xfda3('0x22')](_0x3cf5a9)[_0xfda3('0x23')](function(_0x2b84b7){return _0x2b84b7;});}return null;};}function removeEntity(_0x2677f6,_0xc6fb9a){return function(_0x16eaa6){if(_0x16eaa6){return _0x16eaa6['destroy']()[_0xfda3('0x23')](function(){_0x2677f6[_0xfda3('0x18')](0xcc)[_0xfda3('0x24')]();});}};}function handleEntityNotFound(_0x4ae9b9,_0x45a977){return function(_0x39e246){if(!_0x39e246){_0x4ae9b9[_0xfda3('0x17')](0x194);}return _0x39e246;};}function handleError(_0x38946d,_0x1cb831){_0x1cb831=_0x1cb831||0x1f4;return function(_0xad9f7b){logger['error'](_0xad9f7b[_0xfda3('0x25')]);if(_0xad9f7b[_0xfda3('0x26')]){delete _0xad9f7b[_0xfda3('0x26')];}_0x38946d[_0xfda3('0x18')](_0x1cb831)[_0xfda3('0x27')](_0xad9f7b);};}exports['show']=function(_0x3c1549,_0x4101b1){var _0x301509={'raw':!![],'where':{'id':_0x3c1549[_0xfda3('0x28')]['id']}},_0x474992={};_0x474992[_0xfda3('0x29')]=_[_0xfda3('0x2a')](db['MailApplication']['rawAttributes']);_0x474992[_0xfda3('0x2b')]=_['keys'](_0x3c1549['query']);_0x474992[_0xfda3('0x2c')]=_[_0xfda3('0x2d')](_0x474992[_0xfda3('0x29')],_0x474992[_0xfda3('0x2b')]);_0x301509[_0xfda3('0x2e')]=_[_0xfda3('0x2d')](_0x474992[_0xfda3('0x29')],qs[_0xfda3('0x2f')](_0x3c1549[_0xfda3('0x2b')]['fields']));_0x301509[_0xfda3('0x2e')]=_0x301509[_0xfda3('0x2e')][_0xfda3('0x30')]?_0x301509[_0xfda3('0x2e')]:_0x474992[_0xfda3('0x29')];if(_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x31')]){_0x301509[_0xfda3('0x32')]=[{'all':!![]}];}_0x301509=_[_0xfda3('0x33')]({},_0x301509,_0x3c1549['options']);return db['MailApplication'][_0xfda3('0x34')](_0x301509)[_0xfda3('0x23')](handleEntityNotFound(_0x4101b1,null))['then'](respondWithResult(_0x4101b1,null))[_0xfda3('0x35')](handleError(_0x4101b1,null));};exports[_0xfda3('0x22')]=function(_0x28ca96,_0x52ee98){if(_0x28ca96[_0xfda3('0x36')]['id']){delete _0x28ca96[_0xfda3('0x36')]['id'];}return db[_0xfda3('0x37')][_0xfda3('0x34')]({'where':{'id':_0x28ca96[_0xfda3('0x28')]['id']}})['then'](handleEntityNotFound(_0x52ee98,null))[_0xfda3('0x23')](saveUpdates(_0x28ca96[_0xfda3('0x36')],null))[_0xfda3('0x23')](respondWithResult(_0x52ee98,null))['catch'](handleError(_0x52ee98,null));};exports[_0xfda3('0x38')]=function(_0x4854b1,_0x2d9a3f){return db[_0xfda3('0x37')][_0xfda3('0x34')]({'where':{'id':_0x4854b1[_0xfda3('0x28')]['id']}})[_0xfda3('0x23')](handleEntityNotFound(_0x2d9a3f,null))[_0xfda3('0x23')](removeEntity(_0x2d9a3f,null))[_0xfda3('0x35')](handleError(_0x2d9a3f,null));};
\ No newline at end of file
index df78851..5556411 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad8d=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailApplication.attributes','exports','define','MailApplication','mail_applications','utf8mb4_unicode_ci','lodash'];(function(_0x5e4974,_0x272287){var _0x56720c=function(_0x2c51f9){while(--_0x2c51f9){_0x5e4974['push'](_0x5e4974['shift']());}};_0x56720c(++_0x272287);}(_0xad8d,0x1ef));var _0xdad8=function(_0x29228b,_0x4801be){_0x29228b=_0x29228b-0x0;var _0x2acdce=_0xad8d[_0x29228b];return _0x2acdce;};'use strict';var _=require(_0xdad8('0x0'));var util=require(_0xdad8('0x1'));var logger=require(_0xdad8('0x2'))(_0xdad8('0x3'));var moment=require(_0xdad8('0x4'));var BPromise=require(_0xdad8('0x5'));var rp=require(_0xdad8('0x6'));var fs=require('fs');var path=require(_0xdad8('0x7'));var rimraf=require(_0xdad8('0x8'));var config=require(_0xdad8('0x9'));var attributes=require(_0xdad8('0xa'));module[_0xdad8('0xb')]=function(_0x11fb39,_0x502728){return _0x11fb39[_0xdad8('0xc')](_0xdad8('0xd'),attributes,{'tableName':_0xdad8('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xdad8('0xf')});};
\ No newline at end of file
+var _0x54f4=['../../config/logger','api','request-promise','path','rimraf','../../config/environment','exports','MailApplication','mail_applications','utf8mb4_unicode_ci','lodash','util'];(function(_0x1c8c28,_0x3ee093){var _0x1f59b4=function(_0x29bcc0){while(--_0x29bcc0){_0x1c8c28['push'](_0x1c8c28['shift']());}};_0x1f59b4(++_0x3ee093);}(_0x54f4,0x17e));var _0x454f=function(_0x1e05b9,_0x1a7da9){_0x1e05b9=_0x1e05b9-0x0;var _0x52e282=_0x54f4[_0x1e05b9];return _0x52e282;};'use strict';var _=require(_0x454f('0x0'));var util=require(_0x454f('0x1'));var logger=require(_0x454f('0x2'))(_0x454f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x454f('0x4'));var fs=require('fs');var path=require(_0x454f('0x5'));var rimraf=require(_0x454f('0x6'));var config=require(_0x454f('0x7'));var attributes=require('./mailApplication.attributes');module[_0x454f('0x8')]=function(_0xd0f77d,_0x423398){return _0xd0f77d['define'](_0x454f('0x9'),attributes,{'tableName':_0x454f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x454f('0xb')});};
\ No newline at end of file
index 04268e6..3c02c3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e17=['ioredis','../../config/utils','../../config/logger','rpc','http','request','info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','MailApplication','update','body','options','raw','attributes','limit','then','UpdateMailApplication','catch','util','moment','bluebird','randomstring'];(function(_0x128b64,_0x2b53fa){var _0x488564=function(_0x21b54e){while(--_0x21b54e){_0x128b64['push'](_0x128b64['shift']());}};_0x488564(++_0x2b53fa);}(_0x7e17,0xaa));var _0x77e1=function(_0x3f4098,_0x3365b2){_0x3f4098=_0x3f4098-0x0;var _0x3d5d0c=_0x7e17[_0x3f4098];return _0x3d5d0c;};'use strict';var _=require('lodash');var util=require(_0x77e1('0x0'));var moment=require(_0x77e1('0x1'));var BPromise=require(_0x77e1('0x2'));var rs=require(_0x77e1('0x3'));var fs=require('fs');var Redis=require(_0x77e1('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x77e1('0x5'));var logger=require(_0x77e1('0x6'))(_0x77e1('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x77e1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5d79d1,_0x1e2fa2,_0x49505b){return new BPromise(function(_0x2dbb21,_0x2f6f3b){return client[_0x77e1('0x9')](_0x5d79d1,_0x49505b)['then'](function(_0x201c49){logger[_0x77e1('0xa')](_0x77e1('0xb'),_0x1e2fa2,_0x77e1('0xc'));logger[_0x77e1('0xd')](_0x77e1('0xe'),_0x1e2fa2,'request\x20sent',JSON[_0x77e1('0xf')](_0x201c49));if(_0x201c49[_0x77e1('0x10')]){if(_0x201c49[_0x77e1('0x10')][_0x77e1('0x11')]===0x1f4){logger[_0x77e1('0x10')](_0x77e1('0xb'),_0x1e2fa2,_0x201c49[_0x77e1('0x10')][_0x77e1('0x12')]);return _0x2f6f3b(_0x201c49['error'][_0x77e1('0x12')]);}logger['error']('MailApplication,\x20%s,\x20%s',_0x1e2fa2,_0x201c49[_0x77e1('0x10')][_0x77e1('0x12')]);return _0x2dbb21(_0x201c49[_0x77e1('0x10')][_0x77e1('0x12')]);}else{logger[_0x77e1('0xa')](_0x77e1('0xb'),_0x1e2fa2,_0x77e1('0xc'));_0x2dbb21(_0x201c49['result'][_0x77e1('0x12')]);}})['catch'](function(_0x4bbefe){logger[_0x77e1('0x10')]('MailApplication,\x20%s,\x20%s',_0x1e2fa2,_0x4bbefe);_0x2f6f3b(_0x4bbefe);});});}exports['UpdateMailApplication']=function(_0x3f5734){var _0x2c5f73=this;return new Promise(function(_0x392d32,_0x443d3d){return db[_0x77e1('0x13')][_0x77e1('0x14')](_0x3f5734[_0x77e1('0x15')],{'raw':_0x3f5734[_0x77e1('0x16')]?_0x3f5734[_0x77e1('0x16')][_0x77e1('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3f5734[_0x77e1('0x16')]?_0x3f5734['options']['where']||null:null,'attributes':_0x3f5734[_0x77e1('0x16')]?_0x3f5734[_0x77e1('0x16')][_0x77e1('0x18')]||null:null,'limit':_0x3f5734[_0x77e1('0x16')]?_0x3f5734[_0x77e1('0x16')][_0x77e1('0x19')]||null:null})[_0x77e1('0x1a')](function(_0x2d59da){logger[_0x77e1('0xa')](_0x77e1('0x1b'),_0x3f5734);logger[_0x77e1('0xd')](_0x77e1('0x1b'),_0x3f5734,JSON[_0x77e1('0xf')](_0x2d59da));_0x392d32(_0x2d59da);})[_0x77e1('0x1c')](function(_0x5be236){logger[_0x77e1('0x10')]('UpdateMailApplication',_0x5be236['message'],_0x3f5734);_0x443d3d(_0x2c5f73['error'](0x1f4,_0x5be236[_0x77e1('0x12')]));});});};
\ No newline at end of file
+var _0x1f7d=['message','result','catch','MailApplication','update','body','options','raw','where','attributes','limit','UpdateMailApplication','stringify','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','request','then','info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','error'];(function(_0x4c667f,_0x335204){var _0xe099b0=function(_0x2e5b46){while(--_0x2e5b46){_0x4c667f['push'](_0x4c667f['shift']());}};_0xe099b0(++_0x335204);}(_0x1f7d,0x9e));var _0xd1f7=function(_0x1b6280,_0x4a51dd){_0x1b6280=_0x1b6280-0x0;var _0x3b634b=_0x1f7d[_0x1b6280];return _0x3b634b;};'use strict';var _=require(_0xd1f7('0x0'));var util=require('util');var moment=require(_0xd1f7('0x1'));var BPromise=require('bluebird');var rs=require(_0xd1f7('0x2'));var fs=require('fs');var Redis=require(_0xd1f7('0x3'));var db=require(_0xd1f7('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd1f7('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd1f7('0x6'));var client=jayson[_0xd1f7('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x40c60c,_0x58f77a,_0x801a67){return new BPromise(function(_0x114730,_0x1bf4ac){return client[_0xd1f7('0x8')](_0x40c60c,_0x801a67)[_0xd1f7('0x9')](function(_0xfc2fa5){logger[_0xd1f7('0xa')](_0xd1f7('0xb'),_0x58f77a,_0xd1f7('0xc'));logger[_0xd1f7('0xd')](_0xd1f7('0xe'),_0x58f77a,_0xd1f7('0xc'),JSON['stringify'](_0xfc2fa5));if(_0xfc2fa5[_0xd1f7('0xf')]){if(_0xfc2fa5['error']['code']===0x1f4){logger[_0xd1f7('0xf')](_0xd1f7('0xb'),_0x58f77a,_0xfc2fa5[_0xd1f7('0xf')][_0xd1f7('0x10')]);return _0x1bf4ac(_0xfc2fa5[_0xd1f7('0xf')]['message']);}logger['error'](_0xd1f7('0xb'),_0x58f77a,_0xfc2fa5[_0xd1f7('0xf')][_0xd1f7('0x10')]);return _0x114730(_0xfc2fa5[_0xd1f7('0xf')][_0xd1f7('0x10')]);}else{logger[_0xd1f7('0xa')](_0xd1f7('0xb'),_0x58f77a,'request\x20sent');_0x114730(_0xfc2fa5[_0xd1f7('0x11')][_0xd1f7('0x10')]);}})[_0xd1f7('0x12')](function(_0x53e4fa){logger[_0xd1f7('0xf')](_0xd1f7('0xb'),_0x58f77a,_0x53e4fa);_0x1bf4ac(_0x53e4fa);});});}exports['UpdateMailApplication']=function(_0x322a69){var _0x44e12b=this;return new Promise(function(_0x42129d,_0x55ca5b){return db[_0xd1f7('0x13')][_0xd1f7('0x14')](_0x322a69[_0xd1f7('0x15')],{'raw':_0x322a69[_0xd1f7('0x16')]?_0x322a69[_0xd1f7('0x16')][_0xd1f7('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x322a69['options']?_0x322a69[_0xd1f7('0x16')][_0xd1f7('0x18')]||null:null,'attributes':_0x322a69[_0xd1f7('0x16')]?_0x322a69['options'][_0xd1f7('0x19')]||null:null,'limit':_0x322a69[_0xd1f7('0x16')]?_0x322a69[_0xd1f7('0x16')][_0xd1f7('0x1a')]||null:null})[_0xd1f7('0x9')](function(_0x26d411){logger[_0xd1f7('0xa')](_0xd1f7('0x1b'),_0x322a69);logger['debug'](_0xd1f7('0x1b'),_0x322a69,JSON[_0xd1f7('0x1c')](_0x26d411));_0x42129d(_0x26d411);})['catch'](function(_0x393b9c){logger[_0xd1f7('0xf')](_0xd1f7('0x1b'),_0x393b9c[_0xd1f7('0x10')],_0x322a69);_0x55ca5b(_0x44e12b[_0xd1f7('0xf')](0x1f4,_0x393b9c[_0xd1f7('0x10')]));});});};
\ No newline at end of file
index aefcf7f..1b47fe0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cc8=['/:id','show','/:id/messages','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','put','mailinteraction:update','update','delete','mailinteraction:destroy','destroy','removeTags','exports','express','Router','../../components/auth/service','./mailInteraction.controller','get','index','/describe','isAuthenticated','describe'];(function(_0x5375e6,_0x35ae3c){var _0x3b80a0=function(_0x1f4685){while(--_0x1f4685){_0x5375e6['push'](_0x5375e6['shift']());}};_0x3b80a0(++_0x35ae3c);}(_0x2cc8,0x1d7));var _0x82cc=function(_0x45b034,_0x3a57dd){_0x45b034=_0x45b034-0x0;var _0x509cb0=_0x2cc8[_0x45b034];return _0x509cb0;};'use strict';var express=require(_0x82cc('0x0'));var router=express[_0x82cc('0x1')]();var auth=require(_0x82cc('0x2'));var interaction=require('../../components/interaction/service');var controller=require(_0x82cc('0x3'));router[_0x82cc('0x4')]('/',auth['isAuthenticated'](),controller[_0x82cc('0x5')]);router['get'](_0x82cc('0x6'),auth[_0x82cc('0x7')](),controller[_0x82cc('0x8')]);router[_0x82cc('0x4')](_0x82cc('0x9'),auth['isAuthenticated'](),controller[_0x82cc('0xa')]);router[_0x82cc('0x4')](_0x82cc('0xb'),auth[_0x82cc('0x7')](),controller[_0x82cc('0xc')]);router[_0x82cc('0x4')](_0x82cc('0xd'),auth[_0x82cc('0x7')](),controller[_0x82cc('0xe')]);router[_0x82cc('0xf')]('/',auth[_0x82cc('0x7')](),controller['create']);router['post']('/:id/messages',auth[_0x82cc('0x7')](),controller[_0x82cc('0x10')]);router[_0x82cc('0xf')](_0x82cc('0x11'),auth['isAuthenticated'](),interaction[_0x82cc('0x12')](_0x82cc('0x13'),_0x82cc('0x14')),controller[_0x82cc('0x15')]);router[_0x82cc('0x16')](_0x82cc('0x9'),auth[_0x82cc('0x7')](),interaction[_0x82cc('0x12')]('mail',_0x82cc('0x17')),controller[_0x82cc('0x18')]);router[_0x82cc('0x19')](_0x82cc('0x9'),auth[_0x82cc('0x7')](),interaction[_0x82cc('0x12')](_0x82cc('0x13'),_0x82cc('0x1a')),controller[_0x82cc('0x1b')]);router[_0x82cc('0x19')](_0x82cc('0x11'),auth[_0x82cc('0x7')](),controller[_0x82cc('0x1c')]);module[_0x82cc('0x1d')]=router;
\ No newline at end of file
+var _0xf608=['mailinteraction:update','update','delete','destroy','removeTags','exports','express','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','index','/describe','isAuthenticated','describe','/:id','show','getMessages','/:id/download','post','create','/:id/messages','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','put'];(function(_0x3b6a84,_0x3286a1){var _0x5a1d99=function(_0x284930){while(--_0x284930){_0x3b6a84['push'](_0x3b6a84['shift']());}};_0x5a1d99(++_0x3286a1);}(_0xf608,0x10b));var _0x8f60=function(_0x99250c,_0x4603c0){_0x99250c=_0x99250c-0x0;var _0x3927d5=_0xf608[_0x99250c];return _0x3927d5;};'use strict';var express=require(_0x8f60('0x0'));var router=express[_0x8f60('0x1')]();var auth=require(_0x8f60('0x2'));var interaction=require(_0x8f60('0x3'));var controller=require(_0x8f60('0x4'));router[_0x8f60('0x5')]('/',auth['isAuthenticated'](),controller[_0x8f60('0x6')]);router[_0x8f60('0x5')](_0x8f60('0x7'),auth[_0x8f60('0x8')](),controller[_0x8f60('0x9')]);router['get'](_0x8f60('0xa'),auth[_0x8f60('0x8')](),controller[_0x8f60('0xb')]);router[_0x8f60('0x5')]('/:id/messages',auth[_0x8f60('0x8')](),controller[_0x8f60('0xc')]);router[_0x8f60('0x5')](_0x8f60('0xd'),auth['isAuthenticated'](),controller['download']);router[_0x8f60('0xe')]('/',auth[_0x8f60('0x8')](),controller[_0x8f60('0xf')]);router[_0x8f60('0xe')](_0x8f60('0x10'),auth['isAuthenticated'](),controller['addMessage']);router[_0x8f60('0xe')](_0x8f60('0x11'),auth['isAuthenticated'](),interaction[_0x8f60('0x12')](_0x8f60('0x13'),_0x8f60('0x14')),controller[_0x8f60('0x15')]);router[_0x8f60('0x16')](_0x8f60('0xa'),auth[_0x8f60('0x8')](),interaction[_0x8f60('0x12')](_0x8f60('0x13'),_0x8f60('0x17')),controller[_0x8f60('0x18')]);router[_0x8f60('0x19')]('/:id',auth[_0x8f60('0x8')](),interaction[_0x8f60('0x12')]('mail','mailinteraction:destroy'),controller[_0x8f60('0x1a')]);router[_0x8f60('0x19')]('/:id/tags',auth[_0x8f60('0x8')](),controller[_0x8f60('0x1b')]);module[_0x8f60('0x1c')]=router;
\ No newline at end of file
index fcf56b2..b56dc3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44f1=['out','sequelize','iconv','exports','BOOLEAN','DATE','STRING','long','TEXT','ENUM'];(function(_0x468b0f,_0x408566){var _0x3e74d9=function(_0x27a545){while(--_0x27a545){_0x468b0f['push'](_0x468b0f['shift']());}};_0x3e74d9(++_0x408566);}(_0x44f1,0x169));var _0x144f=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0x44f1[_0x13ea00];return _0x1f7347;};'use strict';var Sequelize=require(_0x144f('0x0'));var iconv=require(_0x144f('0x1'));module[_0x144f('0x2')]={'closed':{'type':Sequelize[_0x144f('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x144f('0x4')]},'disposition':{'type':Sequelize[_0x144f('0x5')]},'secondDisposition':{'type':Sequelize[_0x144f('0x5')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x144f('0x5')](0x1fe)},'to':{'type':Sequelize[_0x144f('0x5')]},'cc':{'type':Sequelize['TEXT'](_0x144f('0x6'))},'subject':{'type':Sequelize[_0x144f('0x7')]()},'attach':{'type':Sequelize[_0x144f('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x144f('0x4')]},'substatus':{'type':Sequelize[_0x144f('0x5')](0x3c)},'substatusAt':{'type':Sequelize[_0x144f('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x144f('0x8')]('in',_0x144f('0x9')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x144f('0x8')]('in',_0x144f('0x9')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x216e=['sequelize','exports','BOOLEAN','DATE','STRING','TEXT','long','ENUM','out'];(function(_0x1d19d1,_0x537f45){var _0x2df7a5=function(_0xe0a228){while(--_0xe0a228){_0x1d19d1['push'](_0x1d19d1['shift']());}};_0x2df7a5(++_0x537f45);}(_0x216e,0x15f));var _0xe216=function(_0x49ba8a,_0x4fa4c0){_0x49ba8a=_0x49ba8a-0x0;var _0x29fec4=_0x216e[_0x49ba8a];return _0x29fec4;};'use strict';var Sequelize=require(_0xe216('0x0'));var iconv=require('iconv');module[_0xe216('0x1')]={'closed':{'type':Sequelize[_0xe216('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xe216('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xe216('0x4')]},'thirdDisposition':{'type':Sequelize[_0xe216('0x4')]},'note':{'type':Sequelize[_0xe216('0x4')]},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize[_0xe216('0x4')]},'cc':{'type':Sequelize[_0xe216('0x5')](_0xe216('0x6'))},'subject':{'type':Sequelize[_0xe216('0x5')]()},'attach':{'type':Sequelize[_0xe216('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0xe216('0x3')]},'substatus':{'type':Sequelize[_0xe216('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0xe216('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xe216('0x7')]('in',_0xe216('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xe216('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xe216('0x7')]('in',_0xe216('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xe216('0x2')],'defaultValue':![]}};
\ No newline at end of file
index e27a662..2b04a8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','Setting','findOne','enableEmailPreview','show','params','rawAttributes','includeAll','include','merge','options','create','body','describe','addMessage','ids','omit','getMessages','nolimit','pick','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','rows','spread','emit','mailInteractionTags:save','removeTags','download','unix','join','server','tmp','root','files','attachments','transcript-%d-%s.zip','Attachment','Attachments','Messages','subject','get','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','build','message%d.eml','unlinkSync','eml-format','zip-dir','moment','bluebird','path','lodash','squel','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','error','stack','name','send','fullname','TagIds','Tags','split','forEach','push','MailMessage','out','-id','trimStart','plainBody','catch','index','map','MailInteraction','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','field','color','tools_tags','u.id','ui.MailInteractionId','from','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','select','mail_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','mail_accounts','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','expr','search','parseSearch','conditions','length','find','unreadMessages','value','having','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','some','compact','isEmpty','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','isEmail','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','SELECT','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','role','getMailAccounts','i.MailAccountId\x20IS\x20NULL','agent','toString','sequelize','keyBy','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.createdAt','i.updatedAt','i.closed','i.attach','i.lastMsgAt','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.ContactId','i.MailAccountId','Contact.firstName','c.email'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0xb10b,0x12a));var _0xbb10=function(_0x278679,_0x1eb219){_0x278679=_0x278679-0x0;var _0x4874aa=_0xb10b[_0x278679];return _0x4874aa;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var BPromise=require(_0xbb10('0x3'));var util=require('util');var path=require(_0xbb10('0x4'));var fs=require('fs');var _=require(_0xbb10('0x5'));var squel=require(_0xbb10('0x6'));var juice=require(_0xbb10('0x7'));var Redis=require(_0xbb10('0x8'));var qs=require(_0xbb10('0x9'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0xbb10('0xa'))(_0xbb10('0xb'));var config=require('../../config/environment');var db=require(_0xbb10('0xc'))['db'];config[_0xbb10('0xd')]=_[_0xbb10('0xe')](config[_0xbb10('0xd')],{'host':_0xbb10('0xf'),'port':0x18eb});var socket=require(_0xbb10('0x10'))(new Redis(config[_0xbb10('0xd')]));require(_0xbb10('0x11'))['register'](socket);function respondWithStatusCode(_0x4e47f8,_0x20bd61){_0x20bd61=_0x20bd61||0xcc;return function(_0x118a74){if(_0x118a74){return _0x4e47f8[_0xbb10('0x12')](_0x20bd61);}return _0x4e47f8['status'](_0x20bd61)[_0xbb10('0x13')]();};}function respondWithResult(_0x5be7e0,_0x44fb19){_0x44fb19=_0x44fb19||0xc8;return function(_0x916a32){if(_0x916a32){return _0x5be7e0[_0xbb10('0x14')](_0x44fb19)[_0xbb10('0x15')](_0x916a32);}};}function respondWithFilteredResult(_0x442548,_0x147230){return function(_0x58a612){if(_0x58a612){var _0x26e021=typeof _0x147230[_0xbb10('0x16')]===_0xbb10('0x17')&&typeof _0x147230[_0xbb10('0x18')]===_0xbb10('0x17');var _0x2f2ebf=_0x58a612[_0xbb10('0x19')];var _0x36b5e8=_0x26e021?0x0:_0x147230[_0xbb10('0x16')];var _0x2b184e=_0x26e021?_0x58a612['count']:_0x147230[_0xbb10('0x16')]+_0x147230[_0xbb10('0x18')];var _0x133ac2;if(_0x2b184e>=_0x2f2ebf){_0x2b184e=_0x2f2ebf;_0x133ac2=0xc8;}else{_0x133ac2=0xce;}_0x442548[_0xbb10('0x14')](_0x133ac2);return _0x442548[_0xbb10('0x1a')](_0xbb10('0x1b'),_0x36b5e8+'-'+_0x2b184e+'/'+_0x2f2ebf)[_0xbb10('0x15')](_0x58a612);}return null;};}function saveUpdates(_0x30efc6){return function(_0xbf2906){if(_0xbf2906){return _0xbf2906[_0xbb10('0x1c')](_0x30efc6)['then'](function(_0x5ff0cf){return _0x5ff0cf;});}return null;};}function removeEntity(_0x19f48d){return function(_0x388fab){if(_0x388fab){return _0x388fab[_0xbb10('0x1d')]()[_0xbb10('0x1e')](function(){_0x19f48d[_0xbb10('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x12f888){return function(_0x12ef77){if(!_0x12ef77){_0x12f888['sendStatus'](0x194);}return _0x12ef77;};}function handleError(_0x4c4b0d,_0x8e2b97){_0x8e2b97=_0x8e2b97||0x1f4;return function(_0x311abe){logger[_0xbb10('0x1f')](_0x311abe[_0xbb10('0x20')]);if(_0x311abe[_0xbb10('0x21')]){delete _0x311abe[_0xbb10('0x21')];}_0x4c4b0d[_0xbb10('0x14')](_0x8e2b97)[_0xbb10('0x22')](_0x311abe);};}function getInteractionUsers(_0x7f2377,_0x395404){return new BPromise(function(_0x3ba6cd,_0x26ad93){try{if(_0x395404[_0x7f2377['id']]){_0x7f2377['Users']=_['map'](_0x395404[_0x7f2377['id']],function(_0x4fb5e0){return{'id':_0x4fb5e0['id'],'fullname':_0x4fb5e0[_0xbb10('0x23')]};});}}catch(_0x3c5ae7){_0x26ad93(_0x3c5ae7);}_0x3ba6cd(_0x7f2377);});}function getInteractionTags(_0x2c89b9,_0x4e25ff){return new BPromise(function(_0x2fdde9,_0x24d586){try{if(_0x2c89b9[_0xbb10('0x24')]){_0x2c89b9[_0xbb10('0x25')]=[];_0x2c89b9[_0xbb10('0x24')][_0xbb10('0x26')](',')[_0xbb10('0x27')](function(_0x4aabb9){_0x2c89b9[_0xbb10('0x25')][_0xbb10('0x28')](_0x4e25ff[_0x4aabb9]);});}delete _0x2c89b9[_0xbb10('0x24')];}catch(_0x2e0249){_0x24d586(_0x2e0249);}_0x2fdde9(_0x2c89b9);});}function getLastMessageText(_0x1d30aa){return new BPromise(function(_0x2ff4c1,_0x5d5c80){return db[_0xbb10('0x29')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x1d30aa['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xbb10('0x2a')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0xbb10('0x2b'),'raw':!![]})[_0xbb10('0x1e')](function(_0x1b59f9){if(_0x1b59f9&&_0x1b59f9['plainBody']){_0x1d30aa['lastMsgText']=_[_0xbb10('0x2c')](_0x1b59f9[_0xbb10('0x2d')]);}_0x2ff4c1(_0x1d30aa);})['catch'](function(_0x359ad4){_0x5d5c80(_0x359ad4);});});}function updateMailInteraction(_0x37dde7,_0x2f653f,_0x1c0b57,_0x37a83f){return new BPromise(function(_0x138bc6,_0xf85197){return getInteractionUsers(_0x37dde7,_0x1c0b57)['then'](function(_0x25acb3){return getInteractionTags(_0x25acb3,_0x2f653f);})[_0xbb10('0x1e')](function(_0x441d15){if(_0x37a83f){_0x138bc6(getLastMessageText(_0x441d15));}else{_0x138bc6(_0x441d15);}})[_0xbb10('0x2e')](function(_0xfb2c5e){_0xf85197(_0xfb2c5e);});});}exports[_0xbb10('0x2f')]=function(_0x188cbd,_0x10202c){var _0x3c8d7d={},_0x56943c={},_0x2b5352={'count':0x0,'rows':[]};var _0x150107=_[_0xbb10('0x30')](db[_0xbb10('0x31')]['rawAttributes'],function(_0x111762){return{'name':_0x111762['fieldName'],'type':_0x111762['type'][_0xbb10('0x32')]};});_0x56943c[_0xbb10('0x33')]=_[_0xbb10('0x30')](_0x150107,_0xbb10('0x21'));_0x56943c[_0xbb10('0x34')]=_[_0xbb10('0x35')](_0x188cbd['query']);_0x56943c[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x56943c['model'],_0x56943c['query']);_0x3c8d7d['attributes']=_[_0xbb10('0x37')](_0x56943c[_0xbb10('0x33')],qs[_0xbb10('0x38')](_0x188cbd['query'][_0xbb10('0x38')]));_0x3c8d7d[_0xbb10('0x39')]=_0x3c8d7d[_0xbb10('0x39')]['length']?_0x3c8d7d[_0xbb10('0x39')]:_0x56943c[_0xbb10('0x33')];if(!_0x188cbd[_0xbb10('0x34')][_0xbb10('0x3a')]('nolimit')){_0x3c8d7d[_0xbb10('0x18')]=qs[_0xbb10('0x18')](_0x188cbd['query'][_0xbb10('0x18')]);_0x3c8d7d[_0xbb10('0x16')]=qs[_0xbb10('0x16')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x16')]);}_0x3c8d7d[_0xbb10('0x3b')]=qs['sort'](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x3c')]);_0x3c8d7d[_0xbb10('0x3d')]=qs[_0xbb10('0x36')](_['pick'](_0x188cbd[_0xbb10('0x34')],_0x56943c[_0xbb10('0x36')]),_0x150107);var _0x23dc18=[];var _0x403beb=squel['select']()[_0xbb10('0x3e')]('id')[_0xbb10('0x3e')]('name')['field'](_0xbb10('0x3f'))['from'](_0xbb10('0x40'));var _0x180933=squel['select']()[_0xbb10('0x3e')](_0xbb10('0x41'))[_0xbb10('0x3e')]('u.fullname')[_0xbb10('0x3e')](_0xbb10('0x42'))[_0xbb10('0x43')](_0xbb10('0x44'),'ui')[_0xbb10('0x45')](_0xbb10('0x46'),'u',_0xbb10('0x47'));var _0x3efa96=squel[_0xbb10('0x48')]()[_0xbb10('0x43')](_0xbb10('0x49'),'i')[_0xbb10('0x45')]('cm_contacts','c',_0xbb10('0x4a'))[_0xbb10('0x45')]('users','o',_0xbb10('0x4b'))[_0xbb10('0x45')](_0xbb10('0x4c'),'a',_0xbb10('0x4d'))[_0xbb10('0x45')](_0xbb10('0x4e'),'me',_0xbb10('0x4f'))['left_join']('mail_interaction_has_tags','it',_0xbb10('0x50'))[_0xbb10('0x45')](_0xbb10('0x40'),'t','t.id\x20=\x20it.TagId');var _0x5f0c12=squel[_0xbb10('0x51')]();var _0x34cf4e=[];var _0x1bd054=squel[_0xbb10('0x51')]();var _0x10159b;if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x52')]){_0x10159b=as[_0xbb10('0x53')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x52')]);var _0x550111=_0x10159b['sqlOperator'];for(var _0x412e13=0x0;_0x412e13<_0x10159b[_0xbb10('0x54')][_0xbb10('0x55')];_0x412e13++){var _0xb014b0=_0x10159b[_0xbb10('0x54')][_0x412e13];var _0x440f9e='i';var _0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),_0xb014b0[_0xbb10('0x3e')]]);if(!_0x358e7e){switch(_0xb014b0[_0xbb10('0x3e')]){case _0xbb10('0x57'):if(_0xb014b0[_0xbb10('0x58')]==0x1){_0x3efa96[_0xbb10('0x59')]('`'+_0xb014b0[_0xbb10('0x3e')]+'`\x20=\x200');}else{_0x3efa96[_0xbb10('0x59')]('`'+_0xb014b0['field']+_0xbb10('0x5a'));}break;case _0xbb10('0x5b'):if(_0xb014b0[_0xbb10('0x5c')]===_0xbb10('0x5d')){if(_0xb014b0[_0xbb10('0x58')][_0xbb10('0x26')]('\x20')[_0xbb10('0x55')]>0x1){_0x5f0c12[_0x550111](_0xbb10('0x5e'),qs[_0xbb10('0x5f')](_0xb014b0[_0xbb10('0x58')]),null);}else{var _0x44a056='%'+_0xb014b0[_0xbb10('0x58')]+'%';_0x5f0c12[_0x550111](_0xbb10('0x60'),_0x44a056,_0x44a056,_0x44a056);}}else{_0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),'ContactId']);_0xb014b0[_0xbb10('0x3e')]=_0xbb10('0x61');_0x155dc5=as[_0xbb10('0x62')](_0x440f9e,_0x358e7e[_0xbb10('0x63')],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5[_0xbb10('0x64')],_0x155dc5[_0xbb10('0x58')]['start'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x13')]);}break;case _0xbb10('0x65'):var _0x14fed3=_0xb014b0[_0xbb10('0x58')][_0xbb10('0x26')](',')[_0xbb10('0x30')](function(_0x12ec18){return Number(_0x12ec18);});_0x14fed3[_0xbb10('0x27')](function(_0x40c4fb){_0x1bd054['or'](_0xbb10('0x66'),'%,'+_0x40c4fb+',%');});_0x34cf4e=_[_0xbb10('0x67')](_0x34cf4e,_0x14fed3);break;case _0xbb10('0x68'):if(_0xb014b0['operator']==='$substring'){_0x5f0c12[_0x550111](_0xbb10('0x69'),'%'+_0xb014b0[_0xbb10('0x58')]+'%',null);}else{_0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),'UserId']);_0xb014b0['field']=_0xbb10('0x6a');_0x155dc5=as[_0xbb10('0x62')](_0x440f9e,_0x358e7e[_0xbb10('0x63')],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5[_0xbb10('0x64')],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x6b')],_0x155dc5[_0xbb10('0x58')]['end']);}break;case _0xbb10('0x2d'):_0x155dc5=as[_0xbb10('0x62')]('me',null,_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5['text'],_0x155dc5['value']['start'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x13')]);break;}}else{var _0x155dc5=as['buildExpression'](_0x440f9e,_0x358e7e['type'],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5['text'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x6b')],_0x155dc5[_0xbb10('0x58')]['end']);}}}else{var _0xa1bbd9=_(_0x188cbd[_0xbb10('0x34')])['keys']()['map'](function(_0x27d7b9){return _[_0xbb10('0x6c')](_0x150107,[_0xbb10('0x21'),_0x27d7b9])?_0x27d7b9:undefined;})[_0xbb10('0x6d')]()['value']();if(!_[_0xbb10('0x6e')](_0xa1bbd9)){_0xa1bbd9[_0xbb10('0x27')](function(_0xa7179d){if(_0xa7179d==='MailAccountId'){_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x6f'),[][_0xbb10('0x70')](_0x188cbd['query'][_0xa7179d]));}else if(_0xa7179d===_0xbb10('0x71')){var _0x31e85e=JSON[_0xbb10('0x72')](_0x188cbd[_0xbb10('0x34')][_0xa7179d])['$gte'];var _0x251417=JSON[_0xbb10('0x72')](_0x188cbd[_0xbb10('0x34')][_0xa7179d])[_0xbb10('0x73')];_0x3efa96['where'](_0xbb10('0x74'),_0x31e85e,_0x251417);}else{if(_0x188cbd[_0xbb10('0x34')][_0xa7179d]===_0xbb10('0x75')){_0x3efa96[_0xbb10('0x3d')]('i.'+_0xa7179d+_0xbb10('0x76'));}else{_0x3efa96[_0xbb10('0x3d')]('i.'+_0xa7179d+_0xbb10('0x77'),_0x188cbd['query'][_0xa7179d]);}}});}if(_0x188cbd['query']['read']){if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x78')]==0x1){_0x3efa96[_0xbb10('0x59')]('`unreadMessages`\x20=\x200');}else{_0x3efa96['having'](_0xbb10('0x79'));}}if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')]){_0x34cf4e=_[_0xbb10('0x7b')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')])?_0x188cbd['query'][_0xbb10('0x7a')]:new Array(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')]);_0x34cf4e[_0xbb10('0x27')](function(_0x2aaaa6){_0x1bd054['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2aaaa6+',%');});}if(_0x188cbd['query']['filter']){var _0x329da7=_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7c')][_0xbb10('0x7d')]('\x5c','\x5c\x5c')[_0xbb10('0x7d')](/'/g,'\x27\x27');if(qs[_0xbb10('0x7e')](_0x329da7)){_0x5f0c12['or']('i.id\x20LIKE\x20?',_0x329da7+'%');}else if(qs[_0xbb10('0x7f')](_0x329da7)){_0x5f0c12['or']('c.email\x20LIKE\x20?',_0x329da7+'%');}else{_0x5f0c12['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x329da7))['or'](_0xbb10('0x80'),qs[_0xbb10('0x5f')](_0x329da7));}}}_0x3efa96[_0xbb10('0x3d')](_0x5f0c12);_0x3efa96[_0xbb10('0x81')]('i.id');var _0x122d38={'type':db['Sequelize']['QueryTypes'][_0xbb10('0x82')],'raw':!![]};var _0xfe3db0=_0x3efa96[_0xbb10('0x83')]();_0xfe3db0[_0xbb10('0x3e')](_0xbb10('0x84'));_0xfe3db0['field'](_0xbb10('0x85'),_0xbb10('0x57'));if(_0x3c8d7d[_0xbb10('0x3b')]){_0x3c8d7d[_0xbb10('0x3b')][_0xbb10('0x27')](function(_0x27f42f){var _0x174395=_0x27f42f[0x0]==='contactName'?_0x27f42f[0x0]:'i.'+_0x27f42f[0x0];_0x3efa96[_0xbb10('0x3b')](_0x174395,_0x27f42f[0x1]===_0xbb10('0x86')?![]:!![]);});}if(!_[_0xbb10('0x6e')](_0x34cf4e)){_0x3efa96[_0xbb10('0x59')](_0x1bd054);_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x87'),_0x34cf4e);}BPromise[_0xbb10('0x88')]()[_0xbb10('0x1e')](function(){if(!_0x10159b){if(_0x188cbd['query'][_0xbb10('0x89')])return;_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x8a'));_0x3efa96['where']('i.MailAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x188cbd['user'][_0xbb10('0x8b')]!=='agent')return;return _0x188cbd['user'][_0xbb10('0x8c')]({'attributes':['id'],'raw':!![]})[_0xbb10('0x1e')](function(_0x33ff06){if(_[_0xbb10('0x6e')](_0x33ff06)){_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x8d'));_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x8d'));}else{_0xfe3db0[_0xbb10('0x3d')]('i.MailAccountId\x20IN\x20?',_[_0xbb10('0x30')](_0x33ff06,'id'));_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x6f'),_[_0xbb10('0x30')](_0x33ff06,'id'));}});})['then'](function(){if(_0x188cbd['user'][_0xbb10('0x8b')]===_0xbb10('0x8e')&&!_0x10159b&&!_0x188cbd[_0xbb10('0x34')][_0xbb10('0x89')])return[];return db['sequelize'][_0xbb10('0x34')](_0xfe3db0[_0xbb10('0x8f')](),_0x122d38);})[_0xbb10('0x1e')](function(_0xf7b3e1){_0x2b5352[_0xbb10('0x19')]=_0xf7b3e1['length'];if(_0x2b5352['count']===0x0)return[];return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x403beb[_0xbb10('0x8f')](),_0x122d38)['then'](function(_0x256b35){_0x23dc18=_[_0xbb10('0x91')](_0x256b35,'id');_0x122d38=_['merge'](_0x122d38,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x38')]){_0x3c8d7d[_0xbb10('0x39')]['forEach'](function(_0x32d5a5){_0x3efa96[_0xbb10('0x3e')]('i.'+_0x32d5a5);});}else{_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x85'),_0xbb10('0x57'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x92'),_0xbb10('0x93'));_0x3efa96[_0xbb10('0x3e')]('a.mandatoryDisposition',_0xbb10('0x94'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x95'),_0xbb10('0x96'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x84'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x97'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x98'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x99'));_0x3efa96['field']('i.closedAt');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9a'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9b'));_0x3efa96[_0xbb10('0x3e')]('i.lastMsgDirection');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9c'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9d'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9e'));_0x3efa96['field'](_0xbb10('0x9f'));_0x3efa96[_0xbb10('0x3e')]('i.substatus');_0x3efa96[_0xbb10('0x3e')]('i.to');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa0'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa1'));_0x3efa96[_0xbb10('0x3e')]('i.UserId');_0x3efa96[_0xbb10('0x3e')]('c.firstName',_0xbb10('0xa2'));_0x3efa96[_0xbb10('0x3e')]('c.lastName','Contact.lastName');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa3'),_0xbb10('0xa4'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa5'),_0xbb10('0xa6'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa7'),_0xbb10('0xa8'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa9'),'Contact.fax');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xaa'),_0xbb10('0xab'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xac'),_0xbb10('0xad'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xae'),_0xbb10('0x24'));}if(_0x3c8d7d[_0xbb10('0x18')])_0x3efa96[_0xbb10('0x18')](_0x3c8d7d[_0xbb10('0x18')]);if(_0x3c8d7d['offset'])_0x3efa96[_0xbb10('0x16')](_0x3c8d7d['offset']);return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x3efa96[_0xbb10('0x8f')](),_0x122d38);})[_0xbb10('0x1e')](function(_0x38d369){if(_0x38d369['length']>0x0)_0x180933[_0xbb10('0x3d')](_0xbb10('0xaf'),_[_0xbb10('0x30')](_0x38d369,'id'));return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x180933[_0xbb10('0x8f')](),_0x122d38)['then'](function(_0x4bd470){var _0x5cc9d7=_[_0xbb10('0xb0')](_0x4bd470,_0xbb10('0xb1'));var _0x57d5a1=[];return db[_0xbb10('0xb2')][_0xbb10('0xb3')]({'attributes':['enableEmailPreview'],'raw':!![]})[_0xbb10('0x1e')](function(_0xaede56){var _0x5642c3=_0xaede56[_0xbb10('0xb4')];_0x38d369['forEach'](function(_0x34cec7){_0x57d5a1[_0xbb10('0x28')](updateMailInteraction(_0x34cec7,_0x23dc18,_0x5cc9d7,_0x5642c3));});return BPromise['all'](_0x57d5a1);});});});})[_0xbb10('0x1e')](function(_0x28cc74){_0x2b5352['rows']=_0x28cc74;return _0x2b5352;})['then'](respondWithFilteredResult(_0x10202c,_0x3c8d7d))[_0xbb10('0x2e')](handleError(_0x10202c,null));};exports[_0xbb10('0xb5')]=function(_0x3e0e34,_0x3299bc){var _0x3ceb77={'raw':![],'where':{'id':_0x3e0e34[_0xbb10('0xb6')]['id']}},_0x4c3bdc={};_0x4c3bdc[_0xbb10('0x33')]=_[_0xbb10('0x35')](db['MailInteraction'][_0xbb10('0xb7')]);_0x4c3bdc[_0xbb10('0x34')]=_[_0xbb10('0x35')](_0x3e0e34[_0xbb10('0x34')]);_0x4c3bdc[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x4c3bdc[_0xbb10('0x33')],_0x4c3bdc[_0xbb10('0x34')]);_0x3ceb77[_0xbb10('0x39')]=_['intersection'](_0x4c3bdc['model'],qs[_0xbb10('0x38')](_0x3e0e34[_0xbb10('0x34')][_0xbb10('0x38')]));_0x3ceb77[_0xbb10('0x39')]=_0x3ceb77[_0xbb10('0x39')][_0xbb10('0x55')]?_0x3ceb77[_0xbb10('0x39')]:_0x4c3bdc[_0xbb10('0x33')];if(_0x3e0e34[_0xbb10('0x34')][_0xbb10('0xb8')]){_0x3ceb77[_0xbb10('0xb9')]=[{'all':!![]}];}_0x3ceb77=_[_0xbb10('0xba')]({},_0x3ceb77,_0x3e0e34[_0xbb10('0xbb')]);return db['MailInteraction'][_0xbb10('0x56')](_0x3ceb77)[_0xbb10('0x1e')](handleEntityNotFound(_0x3299bc,null))[_0xbb10('0x1e')](respondWithResult(_0x3299bc,null))[_0xbb10('0x2e')](handleError(_0x3299bc,null));};exports[_0xbb10('0xbc')]=function(_0xd9284e,_0x4258fc){return db[_0xbb10('0x31')][_0xbb10('0xbc')](_0xd9284e[_0xbb10('0xbd')],{})[_0xbb10('0x1e')](respondWithResult(_0x4258fc,0xc9))['catch'](handleError(_0x4258fc,null));};exports[_0xbb10('0x1c')]=function(_0x5e1ac5,_0x3faaca){if(_0x5e1ac5[_0xbb10('0xbd')]['id']){delete _0x5e1ac5[_0xbb10('0xbd')]['id'];}return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x5e1ac5[_0xbb10('0xb6')]['id']}})['then'](handleEntityNotFound(_0x3faaca,null))[_0xbb10('0x1e')](saveUpdates(_0x5e1ac5['body'],null))[_0xbb10('0x1e')](respondWithResult(_0x3faaca,null))[_0xbb10('0x2e')](handleError(_0x3faaca,null));};exports[_0xbb10('0x1d')]=function(_0x576bb6,_0x2b652c){return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x576bb6[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x2b652c,null))[_0xbb10('0x1e')](removeEntity(_0x2b652c,null))[_0xbb10('0x2e')](handleError(_0x2b652c,null));};exports[_0xbb10('0xbe')]=function(_0x589565,_0x3696b3){return db['MailInteraction'][_0xbb10('0xbe')]()[_0xbb10('0x1e')](respondWithResult(_0x3696b3,null))[_0xbb10('0x2e')](handleError(_0x3696b3,null));};exports[_0xbb10('0xbf')]=function(_0x44c229,_0x40271f){return db[_0xbb10('0x29')]['find']({'where':{'id':_0x44c229[_0xbb10('0xb6')]['id']}})['then'](handleEntityNotFound(_0x40271f,null))['then'](function(_0x1513e0){if(_0x1513e0){return _0x1513e0[_0xbb10('0xbf')](_0x44c229[_0xbb10('0xbd')][_0xbb10('0xc0')],_[_0xbb10('0xc1')](_0x44c229[_0xbb10('0xbd')],['ids','id'])||{});}})[_0xbb10('0x1e')](respondWithResult(_0x40271f,null))[_0xbb10('0x2e')](handleError(_0x40271f,null));};exports[_0xbb10('0xc2')]=function(_0xb1b7c8,_0x136520){var _0x28127c={'raw':![],'where':{}};var _0x528aff={};var _0xdfdc42={'count':0x0,'rows':[]};return db[_0xbb10('0x31')][_0xbb10('0xb3')]({'where':{'id':_0xb1b7c8[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x136520,null))[_0xbb10('0x1e')](function(_0x2764e1){if(_0x2764e1){_0x528aff['model']=_[_0xbb10('0x35')](db['MailMessage'][_0xbb10('0xb7')]);_0x528aff['query']=_['keys'](_0xb1b7c8[_0xbb10('0x34')]);_0x528aff[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x528aff[_0xbb10('0x33')],_0x528aff[_0xbb10('0x34')]);_0x28127c['attributes']=_[_0xbb10('0x37')](_0x528aff['model'],qs['fields'](_0xb1b7c8['query'][_0xbb10('0x38')]));_0x28127c[_0xbb10('0x39')]=_0x28127c[_0xbb10('0x39')][_0xbb10('0x55')]?_0x28127c[_0xbb10('0x39')]:_0x528aff['model'];if(!_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x3a')](_0xbb10('0xc3'))){_0x28127c[_0xbb10('0x18')]=qs[_0xbb10('0x18')](_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x18')]);_0x28127c['offset']=qs['offset'](_0xb1b7c8['query'][_0xbb10('0x16')]);}_0x28127c[_0xbb10('0x3b')]=qs[_0xbb10('0x3c')](_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x3c')]);_0x28127c[_0xbb10('0x3d')]=qs[_0xbb10('0x36')](_[_0xbb10('0xc4')](_0xb1b7c8[_0xbb10('0x34')],_0x528aff[_0xbb10('0x36')]));_0x28127c['where']['MailInteractionId']=_0x2764e1['id'];if(_0xb1b7c8['query'][_0xbb10('0x7c')]){_0x28127c[_0xbb10('0x3d')]=_[_0xbb10('0xba')](_0x28127c['where'],{'$or':_[_0xbb10('0x30')](_0x28127c[_0xbb10('0x39')],function(_0x2c638d){var _0x290280={};_0x290280[_0x2c638d]={'$like':'%'+_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x7c')]+'%'};return _0x290280;})});}if(_0xb1b7c8['query']['$gte']){var _0x356660=_0xb1b7c8['query'][_0xbb10('0xc5')][_0xbb10('0x26')](',');var _0x152ca9={};_0x152ca9[_0x356660[0x0]]={'$gte':moment(_0x356660[0x1])[_0xbb10('0xc6')](_0xbb10('0xc7'))};_0x28127c[_0xbb10('0x3d')]=_[_0xbb10('0xba')](_0x28127c[_0xbb10('0x3d')],_0x152ca9);}_0x28127c=_[_0xbb10('0xba')]({},_0x28127c,_0xb1b7c8[_0xbb10('0xbb')]);return db['MailMessage'][_0xbb10('0x19')]({'where':_0x28127c['where']})[_0xbb10('0x1e')](function(_0x5547fa){_0xdfdc42[_0xbb10('0x19')]=_0x5547fa;if(_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0xb8')]){_0x28127c[_0xbb10('0xb9')]=[{'all':!![]}];}return db['MailMessage'][_0xbb10('0xc8')](_0x28127c);})['then'](function(_0xfe1154){if(_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0xc9')]==='true'){for(var _0x298167=0x0;_0x298167<_0xfe1154[_0xbb10('0x55')];_0x298167++){_0xfe1154[_0x298167][_0xbb10('0xbd')]=juice(_0xfe1154[_0x298167][_0xbb10('0xbd')]);}}_0xdfdc42[_0xbb10('0xca')]=_0xfe1154;return _0xdfdc42;});}})[_0xbb10('0x1e')](respondWithFilteredResult(_0x136520,_0x28127c))['catch'](handleError(_0x136520,null));};exports['addTags']=function(_0x522a88,_0x26a752){return db['MailInteraction'][_0xbb10('0x56')]({'where':{'id':_0x522a88['params']['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x26a752,null))[_0xbb10('0x1e')](function(_0x385ad3){if(_0x385ad3){return _0x385ad3['setTags'](_0x522a88['body'][_0xbb10('0xc0')],_[_0xbb10('0xc1')](_0x522a88[_0xbb10('0xbd')],['ids','id'])||{})[_0xbb10('0xcb')](function(){return db[_0xbb10('0x65')][_0xbb10('0xc8')]({'attributes':['id','name','color'],'where':{'id':_0x522a88['body'][_0xbb10('0xc0')]}});})['then'](function(_0x3dfbcd){socket[_0xbb10('0xcc')](_0xbb10('0xcd'),{'id':Number(_0x522a88[_0xbb10('0xb6')]['id']),'tags':_0x3dfbcd||[]});return{'id':Number(_0x522a88[_0xbb10('0xb6')]['id']),'tags':_0x3dfbcd||[]};});}})[_0xbb10('0x1e')](respondWithResult(_0x26a752,null))[_0xbb10('0x2e')](handleError(_0x26a752,null));};exports[_0xbb10('0xce')]=function(_0x2746eb,_0x431792){return db[_0xbb10('0x31')]['find']({'where':{'id':_0x2746eb[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x431792,null))['then'](function(_0x14ef50){if(_0x14ef50){return _0x14ef50['removeTags'](_0x2746eb['query'][_0xbb10('0xc0')]);}})[_0xbb10('0x1e')](respondWithStatusCode(_0x431792,null))[_0xbb10('0x2e')](handleError(_0x431792,null));};exports[_0xbb10('0xcf')]=function(_0x99c4,_0x4ca4ce){var _0x161171=moment()[_0xbb10('0xd0')]()['toString']();var _0xa45726=path[_0xbb10('0xd1')](config['root'],_0xbb10('0xd2'),'files',_0xbb10('0xd3'));var _0x8e8049=path[_0xbb10('0xd1')](config[_0xbb10('0xd4')],_0xbb10('0xd2'),_0xbb10('0xd5'),_0xbb10('0xd6'));var _0x56f902=path[_0xbb10('0xd1')](_0xa45726,_0x161171);var _0x4720a1=util[_0xbb10('0xc6')](_0xbb10('0xd7'),_0x99c4[_0xbb10('0xb6')]['id'],_0x161171);var _0x1301e3=path['join'](_0xa45726,_0x4720a1);var _0x550301=[];if(_0x99c4['query'][_0xbb10('0xd6')]){_0x550301[_0xbb10('0x28')]({'model':db[_0xbb10('0xd8')],'as':_0xbb10('0xd9'),'raw':!![]});}var _0x57700b=[{'model':db[_0xbb10('0x29')],'as':_0xbb10('0xda'),'attributes':['id',_0xbb10('0xbd'),'from','to','cc','bcc',_0xbb10('0xdb'),'createdAt'],'where':{'secret':![]},'order':qs[_0xbb10('0x3c')]('id'),'include':_0x550301}];return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x99c4[_0xbb10('0xb6')]['id']},'include':_0x57700b})[_0xbb10('0x1e')](handleEntityNotFound(_0x4ca4ce,null))[_0xbb10('0x1e')](function(_0x1fe250){if(_0x1fe250&&_0x1fe250['Messages']){var _0x424371=_0x1fe250[_0xbb10('0xdc')]({'plain':!![]});fs['mkdirSync'](_0x56f902);return BPromise[_0xbb10('0xdd')](_0x424371[_0xbb10('0xda')],function(_0x32f261,_0x5b11a2){var _0x4b490a={'from':_0x32f261['from'],'to':_0x32f261['to'],'subject':_0x32f261[_0xbb10('0xdb')],'html':_0x32f261[_0xbb10('0xbd')],'headers':{'Date':moment(_0x32f261['createdAt'])[_0xbb10('0xc6')](_0xbb10('0xde'))},'attachments':[]};if(_0x32f261['cc']){_0x4b490a[_0xbb10('0xdf')]['Cc']=_0x32f261['cc'];}if(_0x32f261[_0xbb10('0xe0')]){_0x4b490a[_0xbb10('0xdf')][_0xbb10('0xe1')]=_0x32f261[_0xbb10('0xe0')];}return new BPromise(function(_0x48f0eb,_0x304603){if(_0x32f261['Attachments']){for(var _0x5a7c4e=0x0;_0x5a7c4e<_0x32f261['Attachments'][_0xbb10('0x55')];_0x5a7c4e++){var _0x572d73=_0x32f261['Attachments'][_0x5a7c4e];var _0x1f09f1=path['join'](_0x8e8049,_0x572d73[_0xbb10('0xe2')]);if(fs[_0xbb10('0xe3')](_0x1f09f1)){_0x4b490a[_0xbb10('0xd6')]['push']({'name':_0x572d73['name'],'contentType':_0x572d73[_0xbb10('0x63')],'data':fs['readFileSync'](_0x1f09f1)});}}}emlformat[_0xbb10('0xe4')](_0x4b490a,function(_0x211172,_0x589ecb){if(_0x211172)return _0x304603(_0x211172);fs['writeFileSync'](path[_0xbb10('0xd1')](_0x56f902,util[_0xbb10('0xc6')](_0xbb10('0xe5'),_0x5b11a2)),_0x589ecb);return _0x48f0eb(_0x589ecb);});});})['then'](function(){return new BPromise(function(_0x4f4aa8,_0x426a4f){zipdir(_0x56f902,{'saveTo':_0x1301e3},function(_0x22f153,_0x4d47cc){if(_0x22f153)return _0x426a4f(_0x22f153);return _0x4f4aa8(_0x4d47cc);});})[_0xbb10('0x1e')](function(){return new BPromise(function(_0x203e5a,_0xe88e90){rimraf(_0x56f902,function(_0x4845b5){if(_0x4845b5)_0xe88e90(_0x4845b5);return _0x203e5a();});});})[_0xbb10('0x1e')](function(){return _0x4ca4ce[_0xbb10('0xcf')](_0x1301e3,_0x4720a1,function(_0x166f4f){if(!_0x166f4f)fs[_0xbb10('0xe6')](_0x1301e3);});});});}else{return _0x4ca4ce[_0xbb10('0x12')](0xc8);}})[_0xbb10('0x2e')](handleError(_0x4ca4ce,null));};
\ No newline at end of file
+var _0x98a7=['ui.MailInteractionId','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','mail_accounts','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','mail_interaction_has_tags','it.MailInteractionId\x20=\x20i.id','expr','search','parseSearch','sqlOperator','conditions','find','value','`\x20=\x200','having','`\x20>\x200','Contact','operator','$substring','split','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','UserId','compact','MailAccountId','i.MailAccountId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','where','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','isEmail','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','t.id\x20IN\x20?','i.MailAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getMailAccounts','i.MailAccountId\x20IS\x20NULL','sequelize','toString','merge','fields','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.closed','i.closedAt','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.substatus','i.to','i.ContactId','i.MailAccountId','i.UserId','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.phone','Contact.phone','Contact.mobile','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','findOne','enableEmailPreview','all','rows','params','include','options','create','body','describe','addMessage','ids','getMessages','hasOwnProperty','pick','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','inlineCss','addTags','setTags','spread','emit','removeTags','unix','join','root','server','tmp','files','transcript-%d-%s.zip','attachments','Attachment','Attachments','bcc','Messages','get','subject','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','existsSync','readFileSync','build','writeFileSync','message%d.eml','download','eml-format','bluebird','path','lodash','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','html-entities','defaults','redis','localhost','socket.io-emitter','./mailInteraction.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','update','destroy','then','error','stack','name','send','Users','fullname','TagIds','Tags','forEach','push','MailMessage','out','plainBody','-id','lastMsgText','trimStart','catch','index','map','MailInteraction','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','length','nolimit','order','sort','select','field','color','from','tools_tags','u.fullname'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x98a7,0x18d));var _0x798a=function(_0x834c92,_0x3914a7){_0x834c92=_0x834c92-0x0;var _0x5c8e70=_0x98a7[_0x834c92];return _0x5c8e70;};'use strict';var emlformat=require(_0x798a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var moment=require('moment');var BPromise=require(_0x798a('0x1'));var util=require('util');var path=require(_0x798a('0x2'));var fs=require('fs');var _=require(_0x798a('0x3'));var squel=require('squel');var juice=require('juice');var Redis=require('ioredis');var qs=require(_0x798a('0x4'));var as=require(_0x798a('0x5'));var logger=require(_0x798a('0x6'))(_0x798a('0x7'));var config=require('../../config/environment');var db=require(_0x798a('0x8'))['db'];var htmlEntities=require(_0x798a('0x9'));config['redis']=_[_0x798a('0xa')](config[_0x798a('0xb')],{'host':_0x798a('0xc'),'port':0x18eb});var socket=require(_0x798a('0xd'))(new Redis(config['redis']));require(_0x798a('0xe'))[_0x798a('0xf')](socket);function respondWithStatusCode(_0x2587b6,_0xd7faa3){_0xd7faa3=_0xd7faa3||0xcc;return function(_0x4a53f4){if(_0x4a53f4){return _0x2587b6[_0x798a('0x10')](_0xd7faa3);}return _0x2587b6[_0x798a('0x11')](_0xd7faa3)[_0x798a('0x12')]();};}function respondWithResult(_0x5d5e0f,_0x18cef4){_0x18cef4=_0x18cef4||0xc8;return function(_0x80d1f8){if(_0x80d1f8){return _0x5d5e0f[_0x798a('0x11')](_0x18cef4)[_0x798a('0x13')](_0x80d1f8);}};}function respondWithFilteredResult(_0x1150a1,_0x75b8e5){return function(_0x3331a8){if(_0x3331a8){var _0x278f05=typeof _0x75b8e5[_0x798a('0x14')]==='undefined'&&typeof _0x75b8e5[_0x798a('0x15')]===_0x798a('0x16');var _0x5e1d70=_0x3331a8[_0x798a('0x17')];var _0x15f27d=_0x278f05?0x0:_0x75b8e5[_0x798a('0x14')];var _0x1e0433=_0x278f05?_0x3331a8[_0x798a('0x17')]:_0x75b8e5[_0x798a('0x14')]+_0x75b8e5[_0x798a('0x15')];var _0x521eb9;if(_0x1e0433>=_0x5e1d70){_0x1e0433=_0x5e1d70;_0x521eb9=0xc8;}else{_0x521eb9=0xce;}_0x1150a1[_0x798a('0x11')](_0x521eb9);return _0x1150a1['set'](_0x798a('0x18'),_0x15f27d+'-'+_0x1e0433+'/'+_0x5e1d70)[_0x798a('0x13')](_0x3331a8);}return null;};}function saveUpdates(_0x3ead52){return function(_0x25e7e4){if(_0x25e7e4){return _0x25e7e4[_0x798a('0x19')](_0x3ead52)['then'](function(_0x5d1d7b){return _0x5d1d7b;});}return null;};}function removeEntity(_0x385e03){return function(_0x35e53b){if(_0x35e53b){return _0x35e53b[_0x798a('0x1a')]()[_0x798a('0x1b')](function(){_0x385e03['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d977a){return function(_0x4dd6fd){if(!_0x4dd6fd){_0x2d977a[_0x798a('0x10')](0x194);}return _0x4dd6fd;};}function handleError(_0x3c887d,_0x1d5418){_0x1d5418=_0x1d5418||0x1f4;return function(_0x2139bc){logger[_0x798a('0x1c')](_0x2139bc[_0x798a('0x1d')]);if(_0x2139bc['name']){delete _0x2139bc[_0x798a('0x1e')];}_0x3c887d[_0x798a('0x11')](_0x1d5418)[_0x798a('0x1f')](_0x2139bc);};}function getInteractionUsers(_0x44e27f,_0x35cdcd){return new BPromise(function(_0x243a86,_0x3dac6e){try{if(_0x35cdcd[_0x44e27f['id']]){_0x44e27f[_0x798a('0x20')]=_['map'](_0x35cdcd[_0x44e27f['id']],function(_0x14d6a3){return{'id':_0x14d6a3['id'],'fullname':_0x14d6a3[_0x798a('0x21')]};});}}catch(_0x338a8b){_0x3dac6e(_0x338a8b);}_0x243a86(_0x44e27f);});}function getInteractionTags(_0x5147b5,_0x43b682){return new BPromise(function(_0x29d0ea,_0x31ef6b){try{if(_0x5147b5[_0x798a('0x22')]){_0x5147b5[_0x798a('0x23')]=[];_0x5147b5[_0x798a('0x22')]['split'](',')[_0x798a('0x24')](function(_0x45f9de){_0x5147b5[_0x798a('0x23')][_0x798a('0x25')](_0x43b682[_0x45f9de]);});}delete _0x5147b5[_0x798a('0x22')];}catch(_0x996a9d){_0x31ef6b(_0x996a9d);}_0x29d0ea(_0x5147b5);});}function getLastMessageText(_0x56a34e){return new BPromise(function(_0x531fa8,_0x1d4263){return db[_0x798a('0x26')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x56a34e['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x798a('0x27')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x798a('0x28')],'order':_0x798a('0x29'),'raw':!![]})[_0x798a('0x1b')](function(_0x102d70){if(_0x102d70&&_0x102d70[_0x798a('0x28')]){_0x56a34e[_0x798a('0x2a')]=_[_0x798a('0x2b')](_0x102d70[_0x798a('0x28')]);}_0x531fa8(_0x56a34e);})[_0x798a('0x2c')](function(_0x352ce5){_0x1d4263(_0x352ce5);});});}function updateMailInteraction(_0x495667,_0x23e502,_0x1325df,_0x33a5c2){return new BPromise(function(_0x117c0,_0x4b9c75){return getInteractionUsers(_0x495667,_0x1325df)[_0x798a('0x1b')](function(_0x44b171){return getInteractionTags(_0x44b171,_0x23e502);})['then'](function(_0x30299e){if(_0x33a5c2){_0x117c0(getLastMessageText(_0x30299e));}else{_0x117c0(_0x30299e);}})[_0x798a('0x2c')](function(_0x3904b2){_0x4b9c75(_0x3904b2);});});}exports[_0x798a('0x2d')]=function(_0x3c571e,_0x425f40){var _0x1cfd52={},_0x29547c={},_0x1b215b={'count':0x0,'rows':[]};var _0x588d02=_[_0x798a('0x2e')](db[_0x798a('0x2f')][_0x798a('0x30')],function(_0x30eb17){return{'name':_0x30eb17[_0x798a('0x31')],'type':_0x30eb17[_0x798a('0x32')]['key']};});_0x29547c['model']=_['map'](_0x588d02,_0x798a('0x1e'));_0x29547c[_0x798a('0x33')]=_[_0x798a('0x34')](_0x3c571e[_0x798a('0x33')]);_0x29547c[_0x798a('0x35')]=_[_0x798a('0x36')](_0x29547c[_0x798a('0x37')],_0x29547c[_0x798a('0x33')]);_0x1cfd52[_0x798a('0x38')]=_[_0x798a('0x36')](_0x29547c[_0x798a('0x37')],qs['fields'](_0x3c571e[_0x798a('0x33')]['fields']));_0x1cfd52[_0x798a('0x38')]=_0x1cfd52[_0x798a('0x38')][_0x798a('0x39')]?_0x1cfd52['attributes']:_0x29547c['model'];if(!_0x3c571e['query']['hasOwnProperty'](_0x798a('0x3a'))){_0x1cfd52['limit']=qs[_0x798a('0x15')](_0x3c571e[_0x798a('0x33')][_0x798a('0x15')]);_0x1cfd52[_0x798a('0x14')]=qs['offset'](_0x3c571e[_0x798a('0x33')][_0x798a('0x14')]);}_0x1cfd52[_0x798a('0x3b')]=qs[_0x798a('0x3c')](_0x3c571e[_0x798a('0x33')][_0x798a('0x3c')]);_0x1cfd52['where']=qs[_0x798a('0x35')](_['pick'](_0x3c571e[_0x798a('0x33')],_0x29547c[_0x798a('0x35')]),_0x588d02);var _0x2133b5=[];var _0x276c31=squel[_0x798a('0x3d')]()[_0x798a('0x3e')]('id')['field'](_0x798a('0x1e'))[_0x798a('0x3e')](_0x798a('0x3f'))[_0x798a('0x40')](_0x798a('0x41'));var _0x20f5c1=squel['select']()['field']('u.id')[_0x798a('0x3e')](_0x798a('0x42'))[_0x798a('0x3e')](_0x798a('0x43'))['from'](_0x798a('0x44'),'ui')[_0x798a('0x45')](_0x798a('0x46'),'u',_0x798a('0x47'));var _0x39738e=squel[_0x798a('0x3d')]()[_0x798a('0x40')]('mail_interactions','i')['left_join'](_0x798a('0x48'),'c',_0x798a('0x49'))[_0x798a('0x45')](_0x798a('0x46'),'o',_0x798a('0x4a'))['left_join'](_0x798a('0x4b'),'a',_0x798a('0x4c'))['left_join'](_0x798a('0x4d'),'me',_0x798a('0x4e'))['left_join'](_0x798a('0x4f'),'it',_0x798a('0x50'))[_0x798a('0x45')](_0x798a('0x41'),'t','t.id\x20=\x20it.TagId');var _0x594183=squel[_0x798a('0x51')]();var _0xffb280=[];var _0x5813e8=squel[_0x798a('0x51')]();var _0x5af2c7;if(_0x3c571e['query'][_0x798a('0x52')]){_0x5af2c7=as[_0x798a('0x53')](_0x3c571e[_0x798a('0x33')][_0x798a('0x52')]);var _0x1d4ae1=_0x5af2c7[_0x798a('0x54')];for(var _0x239756=0x0;_0x239756<_0x5af2c7[_0x798a('0x55')][_0x798a('0x39')];_0x239756++){var _0x1846f0=_0x5af2c7[_0x798a('0x55')][_0x239756];var _0x1216c6='i';var _0x564aa1=_[_0x798a('0x56')](_0x588d02,[_0x798a('0x1e'),_0x1846f0[_0x798a('0x3e')]]);if(!_0x564aa1){switch(_0x1846f0['field']){case'unreadMessages':if(_0x1846f0[_0x798a('0x57')]==0x1){_0x39738e['having']('`'+_0x1846f0[_0x798a('0x3e')]+_0x798a('0x58'));}else{_0x39738e[_0x798a('0x59')]('`'+_0x1846f0[_0x798a('0x3e')]+_0x798a('0x5a'));}break;case _0x798a('0x5b'):if(_0x1846f0[_0x798a('0x5c')]===_0x798a('0x5d')){if(_0x1846f0['value'][_0x798a('0x5e')]('\x20')[_0x798a('0x39')]>0x1){_0x594183[_0x1d4ae1]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x1846f0['value']),null);}else{var _0x2598c7='%'+_0x1846f0[_0x798a('0x57')]+'%';_0x594183[_0x1d4ae1](_0x798a('0x5f'),_0x2598c7,_0x2598c7,_0x2598c7);}}else{_0x564aa1=_[_0x798a('0x56')](_0x588d02,['name',_0x798a('0x60')]);_0x1846f0[_0x798a('0x3e')]=_0x798a('0x60');_0x13e9ff=as[_0x798a('0x61')](_0x1216c6,_0x564aa1['type'],_0x1846f0);_0x594183[_0x1d4ae1](_0x13e9ff[_0x798a('0x62')],_0x13e9ff[_0x798a('0x57')][_0x798a('0x63')],_0x13e9ff['value'][_0x798a('0x12')]);}break;case _0x798a('0x64'):var _0x4ee9a8=_0x1846f0[_0x798a('0x57')][_0x798a('0x5e')](',')[_0x798a('0x2e')](function(_0x15fac9){return Number(_0x15fac9);});_0x4ee9a8[_0x798a('0x24')](function(_0x5b337b){_0x5813e8['or'](_0x798a('0x65'),'%,'+_0x5b337b+',%');});_0xffb280=_[_0x798a('0x66')](_0xffb280,_0x4ee9a8);break;case'User':if(_0x1846f0[_0x798a('0x5c')]===_0x798a('0x5d')){_0x594183[_0x1d4ae1]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x1846f0[_0x798a('0x57')]+'%',null);}else{_0x564aa1=_[_0x798a('0x56')](_0x588d02,['name',_0x798a('0x67')]);_0x1846f0[_0x798a('0x3e')]=_0x798a('0x67');_0x13e9ff=as[_0x798a('0x61')](_0x1216c6,_0x564aa1['type'],_0x1846f0);_0x594183[_0x1d4ae1](_0x13e9ff['text'],_0x13e9ff[_0x798a('0x57')][_0x798a('0x63')],_0x13e9ff[_0x798a('0x57')][_0x798a('0x12')]);}break;case _0x798a('0x28'):_0x13e9ff=as[_0x798a('0x61')]('me',null,_0x1846f0);_0x594183[_0x1d4ae1](_0x13e9ff[_0x798a('0x62')],_0x13e9ff[_0x798a('0x57')][_0x798a('0x63')],_0x13e9ff['value'][_0x798a('0x12')]);break;}}else{var _0x13e9ff=as[_0x798a('0x61')](_0x1216c6,_0x564aa1['type'],_0x1846f0);_0x594183[_0x1d4ae1](_0x13e9ff[_0x798a('0x62')],_0x13e9ff[_0x798a('0x57')][_0x798a('0x63')],_0x13e9ff[_0x798a('0x57')][_0x798a('0x12')]);}}}else{var _0x441d2a=_(_0x3c571e[_0x798a('0x33')])[_0x798a('0x34')]()['map'](function(_0x55b77a){return _['some'](_0x588d02,[_0x798a('0x1e'),_0x55b77a])?_0x55b77a:undefined;})[_0x798a('0x68')]()[_0x798a('0x57')]();if(!_['isEmpty'](_0x441d2a)){_0x441d2a[_0x798a('0x24')](function(_0x2be0ac){if(_0x2be0ac===_0x798a('0x69')){_0x39738e['where'](_0x798a('0x6a'),[][_0x798a('0x6b')](_0x3c571e[_0x798a('0x33')][_0x2be0ac]));}else if(_0x2be0ac===_0x798a('0x6c')){var _0x5e1cec=JSON['parse'](_0x3c571e['query'][_0x2be0ac])[_0x798a('0x6d')];var _0x3628d1=JSON[_0x798a('0x6e')](_0x3c571e[_0x798a('0x33')][_0x2be0ac])[_0x798a('0x6f')];_0x39738e[_0x798a('0x70')](_0x798a('0x71'),_0x5e1cec,_0x3628d1);}else{if(_0x3c571e[_0x798a('0x33')][_0x2be0ac]===_0x798a('0x72')){_0x39738e[_0x798a('0x70')]('i.'+_0x2be0ac+_0x798a('0x73'));}else{_0x39738e[_0x798a('0x70')]('i.'+_0x2be0ac+_0x798a('0x74'),_0x3c571e[_0x798a('0x33')][_0x2be0ac]);}}});}if(_0x3c571e[_0x798a('0x33')][_0x798a('0x75')]){if(_0x3c571e[_0x798a('0x33')][_0x798a('0x75')]==0x1){_0x39738e[_0x798a('0x59')](_0x798a('0x76'));}else{_0x39738e['having'](_0x798a('0x77'));}}if(_0x3c571e[_0x798a('0x33')]['tag']){_0xffb280=_[_0x798a('0x78')](_0x3c571e[_0x798a('0x33')]['tag'])?_0x3c571e[_0x798a('0x33')][_0x798a('0x79')]:new Array(_0x3c571e[_0x798a('0x33')]['tag']);_0xffb280[_0x798a('0x24')](function(_0x2434a5){_0x5813e8['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2434a5+',%');});}if(_0x3c571e[_0x798a('0x33')][_0x798a('0x7a')]){var _0x175cd5=_0x3c571e[_0x798a('0x33')][_0x798a('0x7a')][_0x798a('0x7b')]('\x5c','\x5c\x5c')[_0x798a('0x7b')](/'/g,'\x27\x27');if(qs[_0x798a('0x7c')](_0x175cd5)){_0x594183['or'](_0x798a('0x7d'),_0x175cd5+'%');}else if(qs[_0x798a('0x7e')](_0x175cd5)){_0x594183['or']('c.email\x20LIKE\x20?',_0x175cd5+'%');}else{_0x594183['or'](_0x798a('0x7f'),qs[_0x798a('0x80')](_0x175cd5))['or'](_0x798a('0x81'),qs[_0x798a('0x80')](_0x175cd5));}}}_0x39738e[_0x798a('0x70')](_0x594183);_0x39738e[_0x798a('0x82')](_0x798a('0x83'));var _0x4e5bd5={'type':db[_0x798a('0x84')][_0x798a('0x85')][_0x798a('0x86')],'raw':!![]};var _0x26fc2b=_0x39738e[_0x798a('0x87')]();_0x26fc2b[_0x798a('0x3e')](_0x798a('0x83'));_0x26fc2b[_0x798a('0x3e')](_0x798a('0x88'),_0x798a('0x89'));if(_0x1cfd52['order']){_0x1cfd52[_0x798a('0x3b')][_0x798a('0x24')](function(_0x4d3862){var _0x31c374=_0x4d3862[0x0]==='contactName'?_0x4d3862[0x0]:'i.'+_0x4d3862[0x0];_0x39738e[_0x798a('0x3b')](_0x31c374,_0x4d3862[0x1]==='DESC'?![]:!![]);});}if(!_['isEmpty'](_0xffb280)){_0x39738e[_0x798a('0x59')](_0x5813e8);_0x26fc2b[_0x798a('0x70')](_0x798a('0x8a'),_0xffb280);}BPromise['resolve']()['then'](function(){if(!_0x5af2c7){if(_0x3c571e['query'][_0x798a('0x69')])return;_0x26fc2b[_0x798a('0x70')](_0x798a('0x8b'));_0x39738e[_0x798a('0x70')](_0x798a('0x8b'));return;}if(_0x3c571e['user'][_0x798a('0x8c')]!==_0x798a('0x8d'))return;return _0x3c571e[_0x798a('0x8e')][_0x798a('0x8f')]({'attributes':['id'],'raw':!![]})[_0x798a('0x1b')](function(_0x53a2b1){if(_['isEmpty'](_0x53a2b1)){_0x26fc2b[_0x798a('0x70')](_0x798a('0x90'));_0x39738e[_0x798a('0x70')](_0x798a('0x90'));}else{_0x26fc2b['where'](_0x798a('0x6a'),_[_0x798a('0x2e')](_0x53a2b1,'id'));_0x39738e[_0x798a('0x70')](_0x798a('0x6a'),_[_0x798a('0x2e')](_0x53a2b1,'id'));}});})[_0x798a('0x1b')](function(){if(_0x3c571e[_0x798a('0x8e')]['role']==='agent'&&!_0x5af2c7&&!_0x3c571e[_0x798a('0x33')][_0x798a('0x69')])return[];return db[_0x798a('0x91')][_0x798a('0x33')](_0x26fc2b['toString'](),_0x4e5bd5);})[_0x798a('0x1b')](function(_0x154fb7){_0x1b215b[_0x798a('0x17')]=_0x154fb7[_0x798a('0x39')];if(_0x1b215b[_0x798a('0x17')]===0x0)return[];return db[_0x798a('0x91')][_0x798a('0x33')](_0x276c31[_0x798a('0x92')](),_0x4e5bd5)[_0x798a('0x1b')](function(_0x1abb50){_0x2133b5=_['keyBy'](_0x1abb50,'id');_0x4e5bd5=_[_0x798a('0x93')](_0x4e5bd5,{'model':db[_0x798a('0x2f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3c571e[_0x798a('0x33')][_0x798a('0x94')]){_0x1cfd52[_0x798a('0x38')][_0x798a('0x24')](function(_0x5cbe22){_0x39738e[_0x798a('0x3e')]('i.'+_0x5cbe22);});}else{_0x39738e['field'](_0x798a('0x88'),_0x798a('0x89'));_0x39738e[_0x798a('0x3e')](_0x798a('0x95'),'Account.key');_0x39738e[_0x798a('0x3e')](_0x798a('0x96'),_0x798a('0x97'));_0x39738e[_0x798a('0x3e')](_0x798a('0x98'),_0x798a('0x99'));_0x39738e[_0x798a('0x3e')](_0x798a('0x83'));_0x39738e['field']('i.createdAt');_0x39738e[_0x798a('0x3e')]('i.updatedAt');_0x39738e['field'](_0x798a('0x9a'));_0x39738e[_0x798a('0x3e')](_0x798a('0x9b'));_0x39738e['field'](_0x798a('0x9c'));_0x39738e[_0x798a('0x3e')](_0x798a('0x9d'));_0x39738e[_0x798a('0x3e')](_0x798a('0x9e'));_0x39738e[_0x798a('0x3e')](_0x798a('0x9f'));_0x39738e[_0x798a('0x3e')](_0x798a('0xa0'));_0x39738e['field'](_0x798a('0xa1'));_0x39738e[_0x798a('0x3e')](_0x798a('0xa2'));_0x39738e[_0x798a('0x3e')](_0x798a('0xa3'));_0x39738e[_0x798a('0x3e')](_0x798a('0xa4'));_0x39738e['field'](_0x798a('0xa5'));_0x39738e[_0x798a('0x3e')](_0x798a('0xa6'));_0x39738e[_0x798a('0x3e')](_0x798a('0xa7'));_0x39738e[_0x798a('0x3e')](_0x798a('0xa8'),_0x798a('0xa9'));_0x39738e['field'](_0x798a('0xaa'),_0x798a('0xab'));_0x39738e[_0x798a('0x3e')]('c.email','Contact.email');_0x39738e[_0x798a('0x3e')](_0x798a('0xac'),_0x798a('0xad'));_0x39738e[_0x798a('0x3e')]('c.mobile',_0x798a('0xae'));_0x39738e['field']('c.fax','Contact.fax');_0x39738e[_0x798a('0x3e')](_0x798a('0xaf'),_0x798a('0xb0'));_0x39738e[_0x798a('0x3e')](_0x798a('0xb1'),'Owner.internal');_0x39738e['field'](_0x798a('0xb2'),'TagIds');}if(_0x1cfd52[_0x798a('0x15')])_0x39738e[_0x798a('0x15')](_0x1cfd52[_0x798a('0x15')]);if(_0x1cfd52[_0x798a('0x14')])_0x39738e[_0x798a('0x14')](_0x1cfd52[_0x798a('0x14')]);return db[_0x798a('0x91')]['query'](_0x39738e[_0x798a('0x92')](),_0x4e5bd5);})[_0x798a('0x1b')](function(_0x5d7b88){if(_0x5d7b88[_0x798a('0x39')]>0x0)_0x20f5c1['where'](_0x798a('0xb3'),_['map'](_0x5d7b88,'id'));return db[_0x798a('0x91')][_0x798a('0x33')](_0x20f5c1[_0x798a('0x92')](),_0x4e5bd5)[_0x798a('0x1b')](function(_0x5451de){var _0x2c31b6=_[_0x798a('0xb4')](_0x5451de,_0x798a('0xb5'));var _0xce6ae1=[];return db['Setting'][_0x798a('0xb6')]({'attributes':[_0x798a('0xb7')],'raw':!![]})[_0x798a('0x1b')](function(_0x11ef10){var _0x54888e=_0x11ef10['enableEmailPreview'];_0x5d7b88[_0x798a('0x24')](function(_0x5c2c78){_0xce6ae1[_0x798a('0x25')](updateMailInteraction(_0x5c2c78,_0x2133b5,_0x2c31b6,_0x54888e));});return BPromise[_0x798a('0xb8')](_0xce6ae1);});});});})[_0x798a('0x1b')](function(_0x167232){_0x1b215b[_0x798a('0xb9')]=_0x167232;return _0x1b215b;})[_0x798a('0x1b')](respondWithFilteredResult(_0x425f40,_0x1cfd52))[_0x798a('0x2c')](handleError(_0x425f40,null));};exports['show']=function(_0x1bdb3a,_0x348225){var _0x22e005={'raw':![],'where':{'id':_0x1bdb3a[_0x798a('0xba')]['id']}},_0x2d1b75={};_0x2d1b75[_0x798a('0x37')]=_['keys'](db[_0x798a('0x2f')]['rawAttributes']);_0x2d1b75[_0x798a('0x33')]=_[_0x798a('0x34')](_0x1bdb3a[_0x798a('0x33')]);_0x2d1b75[_0x798a('0x35')]=_[_0x798a('0x36')](_0x2d1b75[_0x798a('0x37')],_0x2d1b75['query']);_0x22e005[_0x798a('0x38')]=_[_0x798a('0x36')](_0x2d1b75[_0x798a('0x37')],qs[_0x798a('0x94')](_0x1bdb3a[_0x798a('0x33')][_0x798a('0x94')]));_0x22e005[_0x798a('0x38')]=_0x22e005[_0x798a('0x38')][_0x798a('0x39')]?_0x22e005['attributes']:_0x2d1b75[_0x798a('0x37')];if(_0x1bdb3a['query']['includeAll']){_0x22e005[_0x798a('0xbb')]=[{'all':!![]}];}_0x22e005=_[_0x798a('0x93')]({},_0x22e005,_0x1bdb3a[_0x798a('0xbc')]);return db[_0x798a('0x2f')][_0x798a('0x56')](_0x22e005)['then'](handleEntityNotFound(_0x348225,null))[_0x798a('0x1b')](respondWithResult(_0x348225,null))[_0x798a('0x2c')](handleError(_0x348225,null));};exports[_0x798a('0xbd')]=function(_0x4f8239,_0x526bed){return db[_0x798a('0x2f')][_0x798a('0xbd')](_0x4f8239['body'],{})[_0x798a('0x1b')](respondWithResult(_0x526bed,0xc9))[_0x798a('0x2c')](handleError(_0x526bed,null));};exports[_0x798a('0x19')]=function(_0x4f62da,_0x270739){if(_0x4f62da[_0x798a('0xbe')]['id']){delete _0x4f62da[_0x798a('0xbe')]['id'];}return db[_0x798a('0x2f')][_0x798a('0x56')]({'where':{'id':_0x4f62da['params']['id']}})['then'](handleEntityNotFound(_0x270739,null))['then'](saveUpdates(_0x4f62da['body'],null))['then'](respondWithResult(_0x270739,null))[_0x798a('0x2c')](handleError(_0x270739,null));};exports[_0x798a('0x1a')]=function(_0x25ff59,_0x3225ef){return db[_0x798a('0x2f')][_0x798a('0x56')]({'where':{'id':_0x25ff59[_0x798a('0xba')]['id']}})[_0x798a('0x1b')](handleEntityNotFound(_0x3225ef,null))['then'](removeEntity(_0x3225ef,null))[_0x798a('0x2c')](handleError(_0x3225ef,null));};exports[_0x798a('0xbf')]=function(_0x343ea3,_0x178acc){return db['MailInteraction'][_0x798a('0xbf')]()[_0x798a('0x1b')](respondWithResult(_0x178acc,null))['catch'](handleError(_0x178acc,null));};exports[_0x798a('0xc0')]=function(_0x1c9233,_0x4afefa){return db[_0x798a('0x26')][_0x798a('0x56')]({'where':{'id':_0x1c9233[_0x798a('0xba')]['id']}})[_0x798a('0x1b')](handleEntityNotFound(_0x4afefa,null))[_0x798a('0x1b')](function(_0x327229){if(_0x327229){return _0x327229[_0x798a('0xc0')](_0x1c9233[_0x798a('0xbe')]['ids'],_['omit'](_0x1c9233[_0x798a('0xbe')],[_0x798a('0xc1'),'id'])||{});}})[_0x798a('0x1b')](respondWithResult(_0x4afefa,null))[_0x798a('0x2c')](handleError(_0x4afefa,null));};exports[_0x798a('0xc2')]=function(_0x2839cb,_0x3d8ef0){var _0x48b60f={'raw':![],'where':{}};var _0x2e39b5={};var _0x4eadd9={'count':0x0,'rows':[]};return db[_0x798a('0x2f')][_0x798a('0xb6')]({'where':{'id':_0x2839cb[_0x798a('0xba')]['id']}})[_0x798a('0x1b')](handleEntityNotFound(_0x3d8ef0,null))['then'](function(_0x179257){if(_0x179257){_0x2e39b5[_0x798a('0x37')]=_[_0x798a('0x34')](db[_0x798a('0x26')]['rawAttributes']);_0x2e39b5[_0x798a('0x33')]=_[_0x798a('0x34')](_0x2839cb[_0x798a('0x33')]);_0x2e39b5[_0x798a('0x35')]=_[_0x798a('0x36')](_0x2e39b5['model'],_0x2e39b5[_0x798a('0x33')]);_0x48b60f[_0x798a('0x38')]=_[_0x798a('0x36')](_0x2e39b5['model'],qs[_0x798a('0x94')](_0x2839cb[_0x798a('0x33')]['fields']));_0x48b60f[_0x798a('0x38')]=_0x48b60f['attributes'][_0x798a('0x39')]?_0x48b60f[_0x798a('0x38')]:_0x2e39b5['model'];if(!_0x2839cb[_0x798a('0x33')][_0x798a('0xc3')]('nolimit')){_0x48b60f['limit']=qs[_0x798a('0x15')](_0x2839cb['query'][_0x798a('0x15')]);_0x48b60f[_0x798a('0x14')]=qs['offset'](_0x2839cb[_0x798a('0x33')][_0x798a('0x14')]);}_0x48b60f['order']=qs['sort'](_0x2839cb['query'][_0x798a('0x3c')]);_0x48b60f[_0x798a('0x70')]=qs[_0x798a('0x35')](_[_0x798a('0xc4')](_0x2839cb[_0x798a('0x33')],_0x2e39b5[_0x798a('0x35')]));_0x48b60f[_0x798a('0x70')][_0x798a('0xb5')]=_0x179257['id'];if(_0x2839cb[_0x798a('0x33')][_0x798a('0x7a')]){_0x48b60f[_0x798a('0x70')]=_[_0x798a('0x93')](_0x48b60f[_0x798a('0x70')],{'$or':_[_0x798a('0x2e')](_0x48b60f[_0x798a('0x38')],function(_0x4758ce){var _0x1756b7={};_0x1756b7[_0x4758ce]={'$like':'%'+_0x2839cb[_0x798a('0x33')][_0x798a('0x7a')]+'%'};return _0x1756b7;})});}if(_0x2839cb['query']['$gte']){var _0x10ed6a=_0x2839cb[_0x798a('0x33')][_0x798a('0x6d')][_0x798a('0x5e')](',');var _0x3c8001={};_0x3c8001[_0x10ed6a[0x0]]={'$gte':moment(_0x10ed6a[0x1])[_0x798a('0xc5')](_0x798a('0xc6'))};_0x48b60f[_0x798a('0x70')]=_['merge'](_0x48b60f[_0x798a('0x70')],_0x3c8001);}_0x48b60f=_[_0x798a('0x93')]({},_0x48b60f,_0x2839cb[_0x798a('0xbc')]);return db[_0x798a('0x26')][_0x798a('0x17')]({'where':_0x48b60f['where']})[_0x798a('0x1b')](function(_0x132a1e){_0x4eadd9[_0x798a('0x17')]=_0x132a1e;if(_0x2839cb[_0x798a('0x33')][_0x798a('0xc7')]){_0x48b60f[_0x798a('0xbb')]=[{'all':!![]}];}return db[_0x798a('0x26')][_0x798a('0xc8')](_0x48b60f);})[_0x798a('0x1b')](function(_0xffd00b){if(_0x2839cb[_0x798a('0x33')][_0x798a('0xc9')]==='true'){for(var _0x41eb70=0x0;_0x41eb70<_0xffd00b['length'];_0x41eb70++){_0xffd00b[_0x41eb70][_0x798a('0xbe')]=juice(_0xffd00b[_0x41eb70]['body']);}}_0x4eadd9[_0x798a('0xb9')]=_0xffd00b;return _0x4eadd9;});}})[_0x798a('0x1b')](respondWithFilteredResult(_0x3d8ef0,_0x48b60f))[_0x798a('0x2c')](handleError(_0x3d8ef0,null));};exports[_0x798a('0xca')]=function(_0x5c2029,_0x59bd07){return db[_0x798a('0x2f')]['find']({'where':{'id':_0x5c2029[_0x798a('0xba')]['id']}})[_0x798a('0x1b')](handleEntityNotFound(_0x59bd07,null))[_0x798a('0x1b')](function(_0x3431fe){if(_0x3431fe){return _0x3431fe[_0x798a('0xcb')](_0x5c2029['body'][_0x798a('0xc1')],_['omit'](_0x5c2029[_0x798a('0xbe')],[_0x798a('0xc1'),'id'])||{})[_0x798a('0xcc')](function(){return db['Tag'][_0x798a('0xc8')]({'attributes':['id',_0x798a('0x1e'),_0x798a('0x3f')],'where':{'id':_0x5c2029[_0x798a('0xbe')][_0x798a('0xc1')]}});})[_0x798a('0x1b')](function(_0x3a8801){socket[_0x798a('0xcd')]('mailInteractionTags:save',{'id':Number(_0x5c2029[_0x798a('0xba')]['id']),'tags':_0x3a8801||[]});return{'id':Number(_0x5c2029['params']['id']),'tags':_0x3a8801||[]};});}})[_0x798a('0x1b')](respondWithResult(_0x59bd07,null))[_0x798a('0x2c')](handleError(_0x59bd07,null));};exports[_0x798a('0xce')]=function(_0x2f0ea1,_0x133f0c){return db[_0x798a('0x2f')]['find']({'where':{'id':_0x2f0ea1[_0x798a('0xba')]['id']}})[_0x798a('0x1b')](handleEntityNotFound(_0x133f0c,null))[_0x798a('0x1b')](function(_0x5caf60){if(_0x5caf60){return _0x5caf60[_0x798a('0xce')](_0x2f0ea1[_0x798a('0x33')][_0x798a('0xc1')]);}})[_0x798a('0x1b')](respondWithStatusCode(_0x133f0c,null))[_0x798a('0x2c')](handleError(_0x133f0c,null));};exports['download']=function(_0x48f593,_0x321ba2){var _0xdd0e6=moment()[_0x798a('0xcf')]()[_0x798a('0x92')]();var _0x533529=path[_0x798a('0xd0')](config[_0x798a('0xd1')],_0x798a('0xd2'),'files',_0x798a('0xd3'));var _0x21c286=path[_0x798a('0xd0')](config[_0x798a('0xd1')],_0x798a('0xd2'),_0x798a('0xd4'),'attachments');var _0x1ef780=path[_0x798a('0xd0')](_0x533529,_0xdd0e6);var _0xd63761=util[_0x798a('0xc5')](_0x798a('0xd5'),_0x48f593[_0x798a('0xba')]['id'],_0xdd0e6);var _0x4d77a5=path[_0x798a('0xd0')](_0x533529,_0xd63761);var _0xa193fd=[];if(_0x48f593[_0x798a('0x33')][_0x798a('0xd6')]){_0xa193fd[_0x798a('0x25')]({'model':db[_0x798a('0xd7')],'as':_0x798a('0xd8'),'raw':!![]});}var _0x4ff8a3=[{'model':db['MailMessage'],'as':'Messages','attributes':['id',_0x798a('0xbe'),_0x798a('0x40'),'to','cc',_0x798a('0xd9'),'subject',_0x798a('0x6c')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0xa193fd}];return db['MailInteraction']['find']({'where':{'id':_0x48f593['params']['id']},'include':_0x4ff8a3})[_0x798a('0x1b')](handleEntityNotFound(_0x321ba2,null))[_0x798a('0x1b')](function(_0x33244c){if(_0x33244c&&_0x33244c[_0x798a('0xda')]){var _0x19affa=_0x33244c[_0x798a('0xdb')]({'plain':!![]});fs['mkdirSync'](_0x1ef780);return BPromise['each'](_0x19affa[_0x798a('0xda')],function(_0x5a42f8,_0x4653cc){var _0x4700da={'from':_0x5a42f8[_0x798a('0x40')],'to':_0x5a42f8['to'],'subject':_0x5a42f8[_0x798a('0xdc')],'html':htmlEntities[_0x798a('0xdd')](_0x5a42f8[_0x798a('0xbe')]),'headers':{'Date':moment(_0x5a42f8[_0x798a('0x6c')])['format'](_0x798a('0xde'))},'attachments':[]};if(_0x5a42f8['cc']){_0x4700da[_0x798a('0xdf')]['Cc']=_0x5a42f8['cc'];}if(_0x5a42f8['bcc']){_0x4700da['headers'][_0x798a('0xe0')]=_0x5a42f8[_0x798a('0xd9')];}return new BPromise(function(_0x81ace,_0x3c2a33){if(_0x5a42f8[_0x798a('0xd8')]){for(var _0x7d2141=0x0;_0x7d2141<_0x5a42f8['Attachments'][_0x798a('0x39')];_0x7d2141++){var _0x2a5a28=_0x5a42f8[_0x798a('0xd8')][_0x7d2141];var _0x2aac26=path[_0x798a('0xd0')](_0x21c286,_0x2a5a28[_0x798a('0xe1')]);if(fs[_0x798a('0xe2')](_0x2aac26)){_0x4700da[_0x798a('0xd6')]['push']({'name':_0x2a5a28[_0x798a('0x1e')],'contentType':_0x2a5a28['type'],'data':fs[_0x798a('0xe3')](_0x2aac26)});}}}emlformat[_0x798a('0xe4')](_0x4700da,function(_0x2c0fee,_0x56c2ff){if(_0x2c0fee)return _0x3c2a33(_0x2c0fee);fs[_0x798a('0xe5')](path[_0x798a('0xd0')](_0x1ef780,util[_0x798a('0xc5')](_0x798a('0xe6'),_0x4653cc)),_0x56c2ff);return _0x81ace(_0x56c2ff);});});})[_0x798a('0x1b')](function(){return new BPromise(function(_0x5ee9ec,_0x1b0962){zipdir(_0x1ef780,{'saveTo':_0x4d77a5},function(_0x535f25,_0x40c01a){if(_0x535f25)return _0x1b0962(_0x535f25);return _0x5ee9ec(_0x40c01a);});})[_0x798a('0x1b')](function(){return new BPromise(function(_0x502f8f,_0x226233){rimraf(_0x1ef780,function(_0x3f02e5){if(_0x3f02e5)_0x226233(_0x3f02e5);return _0x502f8f();});});})['then'](function(){return _0x321ba2[_0x798a('0xe7')](_0x4d77a5,_0xd63761,function(_0x36f203){if(!_0x36f203)fs['unlinkSync'](_0x4d77a5);});});});}else{return _0x321ba2[_0x798a('0x10')](0xc8);}})[_0x798a('0x2c')](handleError(_0x321ba2,null));};
\ No newline at end of file
index 103fc2a..641742f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x508f=['setDataValue','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','MailInteraction','save','update','remove','then'];(function(_0x45f84d,_0x31e790){var _0x5efe23=function(_0xde91a3){while(--_0xde91a3){_0x45f84d['push'](_0x45f84d['shift']());}};_0x5efe23(++_0x31e790);}(_0x508f,0x15e));var _0xf508=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x508f[_0x2641f9];return _0x585741;};'use strict';var EventEmitter=require(_0xf508('0x0'));var MailInteraction=require(_0xf508('0x1'))['db'][_0xf508('0x2')];var MailMessage=require(_0xf508('0x1'))['db']['MailMessage'];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf508('0x3'),'afterUpdate':_0xf508('0x4'),'afterDestroy':_0xf508('0x5')};function emitEvent(_0x1bd3d3){return function(_0x1b6d03,_0x1b3321,_0x1156da){_0x1b6d03['getUsers']({'attributes':['id'],'raw':!![]})[_0xf508('0x6')](function(_0x52677c){_0x1b6d03[_0xf508('0x7')]('Users',_0x52677c[_0xf508('0x8')](function(_0x229ac2){return{'id':_0x229ac2['id']};}));return MailMessage[_0xf508('0x9')]({'where':{'MailInteractionId':_0x1b6d03['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf508('0x6')](function(_0x30fd1f){_0x1b6d03[_0xf508('0x7')](_0xf508('0xa'),_0x30fd1f[_0xf508('0xb')]);MailInteractionEvents[_0xf508('0xc')](_0x1bd3d3+':'+_0x1b6d03['id'],_0x1b6d03);MailInteractionEvents[_0xf508('0xc')](_0x1bd3d3,_0x1b6d03);_0x1156da(null);})[_0xf508('0xd')](_0x1156da(null));};}for(var e in events){if(events[_0xf508('0xe')](e)){var event=events[e];MailInteraction[_0xf508('0xf')](e,emitEvent(event));}}module[_0xf508('0x10')]=MailInteractionEvents;
\ No newline at end of file
+var _0x6712=['setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','map','findAll','length','emit','hasOwnProperty','hook','exports','MailInteraction','../../mysqldb','MailMessage'];(function(_0x564d53,_0x31ac8a){var _0x1ba891=function(_0x51cad3){while(--_0x51cad3){_0x564d53['push'](_0x564d53['shift']());}};_0x1ba891(++_0x31ac8a);}(_0x6712,0xf9));var _0x2671=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x6712[_0x422905];return _0x33dc6c;};'use strict';var EventEmitter=require('events');var MailInteraction=require('../../mysqldb')['db'][_0x2671('0x0')];var MailMessage=require(_0x2671('0x1'))['db'][_0x2671('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x2671('0x3')](0x0);var events={'afterCreate':_0x2671('0x4'),'afterUpdate':_0x2671('0x5'),'afterDestroy':_0x2671('0x6')};function emitEvent(_0x4de8b9){return function(_0x3f7fe1,_0x5a6db3,_0x1b1899){_0x3f7fe1[_0x2671('0x7')]({'attributes':['id'],'raw':!![]})[_0x2671('0x8')](function(_0x29d8bc){_0x3f7fe1[_0x2671('0x9')](_0x2671('0xa'),_0x29d8bc[_0x2671('0xb')](function(_0x514c01){return{'id':_0x514c01['id']};}));return MailMessage[_0x2671('0xc')]({'where':{'MailInteractionId':_0x3f7fe1['id'],'direction':'in','read':![]},'raw':!![]});})[_0x2671('0x8')](function(_0x46edb0){_0x3f7fe1[_0x2671('0x9')]('unreadMessages',_0x46edb0[_0x2671('0xd')]);MailInteractionEvents[_0x2671('0xe')](_0x4de8b9+':'+_0x3f7fe1['id'],_0x3f7fe1);MailInteractionEvents['emit'](_0x4de8b9,_0x3f7fe1);_0x1b1899(null);})['catch'](_0x1b1899(null));};}for(var e in events){if(events[_0x2671('0xf')](e)){var event=events[e];MailInteraction[_0x2671('0x10')](e,emitEvent(event));}}module[_0x2671('0x11')]=MailInteractionEvents;
\ No newline at end of file
index f971e7f..791eda7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a60=['rimraf','../../config/environment','./mailInteraction.attributes','define','MailInteraction','mail_interactions','fti_mail_interactions','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','changed','substatus','substatusAt','models','get','update','then','catch','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x5a9bb8,_0x549f35){var _0x5f4e17=function(_0x37b51a){while(--_0x37b51a){_0x5a9bb8['push'](_0x5a9bb8['shift']());}};_0x5f4e17(++_0x549f35);}(_0x4a60,0x174));var _0x04a6=function(_0x15bb39,_0x42bd41){_0x15bb39=_0x15bb39-0x0;var _0x88fadc=_0x4a60[_0x15bb39];return _0x88fadc;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x04a6('0x0'))(_0x04a6('0x1'));var moment=require(_0x04a6('0x2'));var BPromise=require(_0x04a6('0x3'));var rp=require(_0x04a6('0x4'));var fs=require('fs');var path=require(_0x04a6('0x5'));var rimraf=require(_0x04a6('0x6'));var config=require(_0x04a6('0x7'));var attributes=require(_0x04a6('0x8'));module['exports']=function(_0x3a46a2,_0x4dde9f){return _0x3a46a2[_0x04a6('0x9')](_0x04a6('0xa'),attributes,{'tableName':_0x04a6('0xb'),'paranoid':![],'indexes':[{'name':_0x04a6('0xc'),'fields':['subject','to'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x3a2332,_0x45af7b,_0xa7d224){if(_0x3a2332['substatus']){_0x3a2332['substatusAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x3a2332[_0x04a6('0xd')]){_0x3a2332[_0x04a6('0xe')]=moment()[_0x04a6('0xf')](_0x04a6('0x10'));}_0xa7d224(null,_0x45af7b);},'beforeUpdate':function(_0x67725c,_0x418d37,_0x594865){if(_0x67725c[_0x04a6('0x11')](_0x04a6('0x12'))){_0x67725c['substatusAt']=_0x67725c[_0x04a6('0x12')]?moment()[_0x04a6('0xf')]('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x67725c['changed']('closed')){_0x67725c['closedAt']=moment()[_0x04a6('0xf')](_0x04a6('0x10'));_0x67725c['substatus']=null;_0x67725c[_0x04a6('0x13')]=null;}_0x594865(null,_0x67725c);},'afterUpdate':function(_0x5c5fca,_0x312a5d,_0x209218){var _0x14cb3e=_0x3a46a2[_0x04a6('0x14')];var _0x2e3afa=_0x5c5fca[_0x04a6('0x15')]({'plain':!![]});if(_0x2e3afa['closed']){return _0x14cb3e['MailMessage'][_0x04a6('0x16')]({'read':!![]},{'where':{'MailInteractionId':_0x2e3afa['id']}})[_0x04a6('0x17')](function(){_0x209218();})[_0x04a6('0x18')](function(_0x2fe42e){_0x209218(_0x2fe42e);});}else{_0x209218();}}},'charset':_0x04a6('0x19'),'collate':_0x04a6('0x1a')});};
\ No newline at end of file
+var _0xf94a=['request-promise','path','rimraf','../../config/environment','./mailInteraction.attributes','exports','define','MailInteraction','mail_interactions','fti_mail_interactions','FULLTEXT','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closedAt','changed','substatus','closed','models','MailMessage','then','catch','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird'];(function(_0x4cce65,_0x40021e){var _0x4d1b45=function(_0x54d290){while(--_0x54d290){_0x4cce65['push'](_0x4cce65['shift']());}};_0x4d1b45(++_0x40021e);}(_0xf94a,0x1e8));var _0xaf94=function(_0x459aeb,_0x2cfd81){_0x459aeb=_0x459aeb-0x0;var _0x4b1bcb=_0xf94a[_0x459aeb];return _0x4b1bcb;};'use strict';var _=require('lodash');var util=require(_0xaf94('0x0'));var logger=require(_0xaf94('0x1'))(_0xaf94('0x2'));var moment=require(_0xaf94('0x3'));var BPromise=require(_0xaf94('0x4'));var rp=require(_0xaf94('0x5'));var fs=require('fs');var path=require(_0xaf94('0x6'));var rimraf=require(_0xaf94('0x7'));var config=require(_0xaf94('0x8'));var attributes=require(_0xaf94('0x9'));module[_0xaf94('0xa')]=function(_0x4ccebc,_0x3896c1){return _0x4ccebc[_0xaf94('0xb')](_0xaf94('0xc'),attributes,{'tableName':_0xaf94('0xd'),'paranoid':![],'indexes':[{'name':_0xaf94('0xe'),'fields':['subject','to'],'type':_0xaf94('0xf')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x49b863,_0x316dec,_0x5f5bcf){if(_0x49b863['substatus']){_0x49b863[_0xaf94('0x10')]=moment()[_0xaf94('0x11')](_0xaf94('0x12'));}if(_0x49b863['closed']){_0x49b863[_0xaf94('0x13')]=moment()[_0xaf94('0x11')](_0xaf94('0x12'));}_0x5f5bcf(null,_0x316dec);},'beforeUpdate':function(_0xc275bb,_0x437074,_0x23aef4){if(_0xc275bb[_0xaf94('0x14')]('substatus')){_0xc275bb[_0xaf94('0x10')]=_0xc275bb[_0xaf94('0x15')]?moment()[_0xaf94('0x11')](_0xaf94('0x12')):null;}if(_0xc275bb[_0xaf94('0x14')](_0xaf94('0x16'))){_0xc275bb['closedAt']=moment()[_0xaf94('0x11')](_0xaf94('0x12'));_0xc275bb[_0xaf94('0x15')]=null;_0xc275bb[_0xaf94('0x10')]=null;}_0x23aef4(null,_0xc275bb);},'afterUpdate':function(_0xc425e5,_0x5c9438,_0x5425c7){var _0x2475f6=_0x4ccebc[_0xaf94('0x17')];var _0x3e794e=_0xc425e5['get']({'plain':!![]});if(_0x3e794e[_0xaf94('0x16')]){return _0x2475f6[_0xaf94('0x18')]['update']({'read':!![]},{'where':{'MailInteractionId':_0x3e794e['id']}})[_0xaf94('0x19')](function(){_0x5425c7();})[_0xaf94('0x1a')](function(_0x3a76d1){_0x5425c7(_0x3a76d1);});}else{_0x5425c7();}}},'charset':_0xaf94('0x1b'),'collate':_0xaf94('0x1c')});};
\ No newline at end of file
index b8687f3..9fe6739 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ea9=['body','ids','omit','spread','AddTags','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./mailInteraction.socket','register','request','then','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','update','options','raw','attributes','limit','info','UpdateMailInteraction','catch','MailInteraction','find'];(function(_0x814c4,_0xad4af){var _0x21d1dd=function(_0x512711){while(--_0x512711){_0x814c4['push'](_0x814c4['shift']());}};_0x21d1dd(++_0xad4af);}(_0x7ea9,0x10d));var _0x97ea=function(_0x544d38,_0x53381f){_0x544d38=_0x544d38-0x0;var _0x3322d7=_0x7ea9[_0x544d38];return _0x3322d7;};'use strict';var _=require('lodash');var util=require(_0x97ea('0x0'));var moment=require(_0x97ea('0x1'));var BPromise=require(_0x97ea('0x2'));var rs=require(_0x97ea('0x3'));var fs=require('fs');var Redis=require(_0x97ea('0x4'));var db=require(_0x97ea('0x5'))['db'];var utils=require(_0x97ea('0x6'));var logger=require(_0x97ea('0x7'))(_0x97ea('0x8'));var config=require('../../config/environment');var jayson=require(_0x97ea('0x9'));var client=jayson[_0x97ea('0xa')][_0x97ea('0xb')]({'port':0x232a});config['redis']=_[_0x97ea('0xc')](config[_0x97ea('0xd')],{'host':_0x97ea('0xe'),'port':0x18eb});var socket=require(_0x97ea('0xf'))(new Redis(config['redis']));require(_0x97ea('0x10'))[_0x97ea('0x11')](socket);function respondWithRpcPromise(_0x1af22a,_0xfc94bd,_0x16cd5b){return new BPromise(function(_0x46a05c,_0x4ab054){return client[_0x97ea('0x12')](_0x1af22a,_0x16cd5b)[_0x97ea('0x13')](function(_0x12c439){logger['info'](_0x97ea('0x14'),_0xfc94bd,_0x97ea('0x15'));logger[_0x97ea('0x16')](_0x97ea('0x17'),_0xfc94bd,'request\x20sent',JSON[_0x97ea('0x18')](_0x12c439));if(_0x12c439['error']){if(_0x12c439[_0x97ea('0x19')][_0x97ea('0x1a')]===0x1f4){logger[_0x97ea('0x19')](_0x97ea('0x14'),_0xfc94bd,_0x12c439['error']['message']);return _0x4ab054(_0x12c439[_0x97ea('0x19')][_0x97ea('0x1b')]);}logger['error']('MailInteraction,\x20%s,\x20%s',_0xfc94bd,_0x12c439[_0x97ea('0x19')][_0x97ea('0x1b')]);return _0x46a05c(_0x12c439[_0x97ea('0x19')][_0x97ea('0x1b')]);}else{logger['info'](_0x97ea('0x14'),_0xfc94bd,_0x97ea('0x15'));_0x46a05c(_0x12c439[_0x97ea('0x1c')]['message']);}})['catch'](function(_0x119379){logger[_0x97ea('0x19')](_0x97ea('0x14'),_0xfc94bd,_0x119379);_0x4ab054(_0x119379);});});}exports['UpdateMailInteraction']=function(_0x363cbb){var _0x12d20c=this;return new Promise(function(_0x31096a,_0x23ff3d){return db['MailInteraction'][_0x97ea('0x1d')](_0x363cbb['body'],{'raw':_0x363cbb[_0x97ea('0x1e')]?_0x363cbb[_0x97ea('0x1e')][_0x97ea('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x363cbb['options']?_0x363cbb[_0x97ea('0x1e')]['where']||null:null,'attributes':_0x363cbb['options']?_0x363cbb[_0x97ea('0x1e')][_0x97ea('0x20')]||null:null,'limit':_0x363cbb[_0x97ea('0x1e')]?_0x363cbb[_0x97ea('0x1e')][_0x97ea('0x21')]||null:null})[_0x97ea('0x13')](function(_0x59502a){logger[_0x97ea('0x22')](_0x97ea('0x23'),_0x363cbb);logger[_0x97ea('0x16')]('UpdateMailInteraction',_0x363cbb,JSON[_0x97ea('0x18')](_0x59502a));_0x31096a(_0x59502a);})[_0x97ea('0x24')](function(_0x55506d){logger[_0x97ea('0x19')](_0x97ea('0x23'),_0x55506d[_0x97ea('0x1b')],_0x363cbb);_0x23ff3d(_0x12d20c[_0x97ea('0x19')](0x1f4,_0x55506d[_0x97ea('0x1b')]));});});};exports['AddTagsToMailInteraction']=function(_0x1a1f44){return new Promise(function(_0xf212bb,_0x1e045c){return db[_0x97ea('0x25')][_0x97ea('0x26')]({'where':_0x1a1f44['options']?_0x1a1f44['options']['where']||null:null})['then'](function(_0x661454){if(_0x661454){return _0x661454['addTags'](_0x1a1f44[_0x97ea('0x27')][_0x97ea('0x28')],_[_0x97ea('0x29')](_0x1a1f44[_0x97ea('0x27')],[_0x97ea('0x28'),'id'])||{});}})[_0x97ea('0x2a')](function(_0x55c5c7){logger['info'](_0x97ea('0x2b'),_0x1a1f44);logger[_0x97ea('0x16')]('AddTags',_0x1a1f44,JSON[_0x97ea('0x18')](_0x55c5c7));_0xf212bb(_0x55c5c7);})['catch'](function(_0x36b2b6){logger['error'](_0x97ea('0x2b'),_0x36b2b6[_0x97ea('0x1b')],_0x1a1f44);_0x1e045c(_this[_0x97ea('0x19')](0x1f4,_0x36b2b6[_0x97ea('0x1b')]));});});};
\ No newline at end of file
+var _0x176c=['MailInteraction,\x20%s,\x20%s','request\x20sent','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','UpdateMailInteraction','MailInteraction','body','options','raw','attributes','limit','debug','catch','AddTagsToMailInteraction','find','addTags','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','register','request','then','info'];(function(_0x3de642,_0x42f25b){var _0x40fbed=function(_0x43aa12){while(--_0x43aa12){_0x3de642['push'](_0x3de642['shift']());}};_0x40fbed(++_0x42f25b);}(_0x176c,0x134));var _0xc176=function(_0x35b056,_0x4d3a13){_0x35b056=_0x35b056-0x0;var _0x3f3778=_0x176c[_0x35b056];return _0x3f3778;};'use strict';var _=require(_0xc176('0x0'));var util=require(_0xc176('0x1'));var moment=require(_0xc176('0x2'));var BPromise=require(_0xc176('0x3'));var rs=require(_0xc176('0x4'));var fs=require('fs');var Redis=require(_0xc176('0x5'));var db=require(_0xc176('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xc176('0x7'))(_0xc176('0x8'));var config=require('../../config/environment');var jayson=require(_0xc176('0x9'));var client=jayson[_0xc176('0xa')][_0xc176('0xb')]({'port':0x232a});config['redis']=_[_0xc176('0xc')](config[_0xc176('0xd')],{'host':_0xc176('0xe'),'port':0x18eb});var socket=require(_0xc176('0xf'))(new Redis(config[_0xc176('0xd')]));require('./mailInteraction.socket')[_0xc176('0x10')](socket);function respondWithRpcPromise(_0x1486c9,_0x2f95eb,_0x48186c){return new BPromise(function(_0x3e7997,_0x208607){return client[_0xc176('0x11')](_0x1486c9,_0x48186c)[_0xc176('0x12')](function(_0x420bf8){logger[_0xc176('0x13')](_0xc176('0x14'),_0x2f95eb,_0xc176('0x15'));logger['debug'](_0xc176('0x16'),_0x2f95eb,_0xc176('0x15'),JSON[_0xc176('0x17')](_0x420bf8));if(_0x420bf8[_0xc176('0x18')]){if(_0x420bf8[_0xc176('0x18')]['code']===0x1f4){logger[_0xc176('0x18')](_0xc176('0x14'),_0x2f95eb,_0x420bf8[_0xc176('0x18')]['message']);return _0x208607(_0x420bf8[_0xc176('0x18')]['message']);}logger[_0xc176('0x18')](_0xc176('0x14'),_0x2f95eb,_0x420bf8['error'][_0xc176('0x19')]);return _0x3e7997(_0x420bf8[_0xc176('0x18')][_0xc176('0x19')]);}else{logger[_0xc176('0x13')](_0xc176('0x14'),_0x2f95eb,_0xc176('0x15'));_0x3e7997(_0x420bf8['result'][_0xc176('0x19')]);}})['catch'](function(_0x20228b){logger[_0xc176('0x18')](_0xc176('0x14'),_0x2f95eb,_0x20228b);_0x208607(_0x20228b);});});}exports[_0xc176('0x1a')]=function(_0x261680){var _0x312c6c=this;return new Promise(function(_0x5526da,_0x4b2fc9){return db[_0xc176('0x1b')]['update'](_0x261680[_0xc176('0x1c')],{'raw':_0x261680['options']?_0x261680[_0xc176('0x1d')][_0xc176('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x261680[_0xc176('0x1d')]?_0x261680['options']['where']||null:null,'attributes':_0x261680[_0xc176('0x1d')]?_0x261680[_0xc176('0x1d')][_0xc176('0x1f')]||null:null,'limit':_0x261680[_0xc176('0x1d')]?_0x261680['options'][_0xc176('0x20')]||null:null})['then'](function(_0x1680d3){logger['info']('UpdateMailInteraction',_0x261680);logger[_0xc176('0x21')](_0xc176('0x1a'),_0x261680,JSON[_0xc176('0x17')](_0x1680d3));_0x5526da(_0x1680d3);})[_0xc176('0x22')](function(_0x42d210){logger[_0xc176('0x18')](_0xc176('0x1a'),_0x42d210[_0xc176('0x19')],_0x261680);_0x4b2fc9(_0x312c6c[_0xc176('0x18')](0x1f4,_0x42d210[_0xc176('0x19')]));});});};exports[_0xc176('0x23')]=function(_0x93f53c){return new Promise(function(_0x4628ad,_0x449d76){return db[_0xc176('0x1b')][_0xc176('0x24')]({'where':_0x93f53c[_0xc176('0x1d')]?_0x93f53c['options']['where']||null:null})[_0xc176('0x12')](function(_0x308eea){if(_0x308eea){return _0x308eea[_0xc176('0x25')](_0x93f53c[_0xc176('0x1c')][_0xc176('0x26')],_[_0xc176('0x27')](_0x93f53c[_0xc176('0x1c')],['ids','id'])||{});}})['spread'](function(_0x117777){logger[_0xc176('0x13')](_0xc176('0x28'),_0x93f53c);logger['debug'](_0xc176('0x28'),_0x93f53c,JSON[_0xc176('0x17')](_0x117777));_0x4628ad(_0x117777);})[_0xc176('0x22')](function(_0x2b4831){logger[_0xc176('0x18')](_0xc176('0x28'),_0x2b4831[_0xc176('0x19')],_0x93f53c);_0x449d76(_this[_0xc176('0x18')](0x1f4,_0x2b4831['message']));});});};
\ No newline at end of file
index 875cacd..ab37474 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd645=['register','length','./mailInteraction.events','save','update','removeListener'];(function(_0x10d670,_0x178996){var _0x20d6f8=function(_0x4a4b87){while(--_0x4a4b87){_0x10d670['push'](_0x10d670['shift']());}};_0x20d6f8(++_0x178996);}(_0xd645,0xda));var _0x5d64=function(_0x5a950c,_0x5c2cac){_0x5a950c=_0x5a950c-0x0;var _0x5b8d8c=_0xd645[_0x5a950c];return _0x5b8d8c;};'use strict';var MailInteractionEvents=require(_0x5d64('0x0'));var events=[_0x5d64('0x1'),'remove',_0x5d64('0x2')];function createListener(_0x2003d3,_0x4d4c28){return function(_0x34be96){_0x4d4c28['emit'](_0x2003d3,_0x34be96);};}function removeListener(_0x1aba5f,_0x2f7e79){return function(){MailInteractionEvents[_0x5d64('0x3')](_0x1aba5f,_0x2f7e79);};}exports[_0x5d64('0x4')]=function(_0x2d296d){for(var _0x44d2fa=0x0,_0x2ddd75=events[_0x5d64('0x5')];_0x44d2fa<_0x2ddd75;_0x44d2fa++){var _0x363443=events[_0x44d2fa];var _0x35a427=createListener('mailInteraction:'+_0x363443,_0x2d296d);MailInteractionEvents['on'](_0x363443,_0x35a427);}};
\ No newline at end of file
+var _0xba21=['save','remove','update','emit','length','mailInteraction:'];(function(_0x440c00,_0x338207){var _0x3cf473=function(_0x332e0a){while(--_0x332e0a){_0x440c00['push'](_0x440c00['shift']());}};_0x3cf473(++_0x338207);}(_0xba21,0x6c));var _0x1ba2=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xba21[_0x2c91e9];return _0x13f0ff;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=[_0x1ba2('0x0'),_0x1ba2('0x1'),_0x1ba2('0x2')];function createListener(_0x353a65,_0x39dc89){return function(_0x3ddc49){_0x39dc89[_0x1ba2('0x3')](_0x353a65,_0x3ddc49);};}function removeListener(_0x5389ee,_0x2f30f5){return function(){MailInteractionEvents['removeListener'](_0x5389ee,_0x2f30f5);};}exports['register']=function(_0x1dfad8){for(var _0x1c88b8=0x0,_0x121b93=events[_0x1ba2('0x4')];_0x1c88b8<_0x121b93;_0x1c88b8++){var _0x5963ca=events[_0x1c88b8];var _0x283ccc=createListener(_0x1ba2('0x5')+_0x5963ca,_0x1dfad8);MailInteractionEvents['on'](_0x5963ca,_0x283ccc);}};
\ No newline at end of file
index ccd297c..bdea33e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e70=['show','download','post','mail','mailmessage:create','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated','index','describe','/:id'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x4e70,0x69));var _0x04e7=function(_0x2f45ea,_0x15c656){_0x2f45ea=_0x2f45ea-0x0;var _0x485a84=_0x4e70[_0x2f45ea];return _0x485a84;};'use strict';var multer=require(_0x04e7('0x0'));var util=require(_0x04e7('0x1'));var path=require(_0x04e7('0x2'));var timeout=require(_0x04e7('0x3'));var express=require('express');var router=express[_0x04e7('0x4')]();var fs_extra=require(_0x04e7('0x5'));var auth=require(_0x04e7('0x6'));var interaction=require(_0x04e7('0x7'));var config=require(_0x04e7('0x8'));var controller=require(_0x04e7('0x9'));router[_0x04e7('0xa')]('/',auth[_0x04e7('0xb')](),controller[_0x04e7('0xc')]);router[_0x04e7('0xa')]('/describe',auth[_0x04e7('0xb')](),controller[_0x04e7('0xd')]);router[_0x04e7('0xa')](_0x04e7('0xe'),auth[_0x04e7('0xb')](),controller[_0x04e7('0xf')]);router[_0x04e7('0xa')]('/:id/download',auth['isAuthenticated'](),controller[_0x04e7('0x10')]);router[_0x04e7('0x11')]('/',auth[_0x04e7('0xb')](),interaction['tracked'](_0x04e7('0x12'),_0x04e7('0x13')),controller[_0x04e7('0x14')]);router[_0x04e7('0x15')]('/:id',auth[_0x04e7('0xb')](),controller[_0x04e7('0x16')]);router['put'](_0x04e7('0x17'),auth['isAuthenticated'](),controller[_0x04e7('0x18')]);router[_0x04e7('0x15')](_0x04e7('0x19'),auth[_0x04e7('0xb')](),controller[_0x04e7('0x1a')]);router[_0x04e7('0x1b')](_0x04e7('0xe'),auth[_0x04e7('0xb')](),controller[_0x04e7('0x1c')]);module[_0x04e7('0x1d')]=router;
\ No newline at end of file
+var _0x3d76=['put','update','/:id/accept','accept','/:id/reject','reject','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','download','post','mailmessage:create','create'];(function(_0x3c27ac,_0x50fc15){var _0x486045=function(_0x3f941a){while(--_0x3f941a){_0x3c27ac['push'](_0x3c27ac['shift']());}};_0x486045(++_0x50fc15);}(_0x3d76,0x13c));var _0x63d7=function(_0x485f53,_0x104081){_0x485f53=_0x485f53-0x0;var _0x480f1e=_0x3d76[_0x485f53];return _0x480f1e;};'use strict';var multer=require(_0x63d7('0x0'));var util=require(_0x63d7('0x1'));var path=require(_0x63d7('0x2'));var timeout=require(_0x63d7('0x3'));var express=require(_0x63d7('0x4'));var router=express[_0x63d7('0x5')]();var fs_extra=require(_0x63d7('0x6'));var auth=require(_0x63d7('0x7'));var interaction=require(_0x63d7('0x8'));var config=require(_0x63d7('0x9'));var controller=require('./mailMessage.controller');router[_0x63d7('0xa')]('/',auth[_0x63d7('0xb')](),controller[_0x63d7('0xc')]);router[_0x63d7('0xa')](_0x63d7('0xd'),auth[_0x63d7('0xb')](),controller['describe']);router[_0x63d7('0xa')](_0x63d7('0xe'),auth['isAuthenticated'](),controller[_0x63d7('0xf')]);router['get']('/:id/download',auth[_0x63d7('0xb')](),controller[_0x63d7('0x10')]);router[_0x63d7('0x11')]('/',auth[_0x63d7('0xb')](),interaction['tracked']('mail',_0x63d7('0x12')),controller[_0x63d7('0x13')]);router[_0x63d7('0x14')](_0x63d7('0xe'),auth[_0x63d7('0xb')](),controller[_0x63d7('0x15')]);router['put'](_0x63d7('0x16'),auth[_0x63d7('0xb')](),controller[_0x63d7('0x17')]);router[_0x63d7('0x14')](_0x63d7('0x18'),auth[_0x63d7('0xb')](),controller[_0x63d7('0x19')]);router['delete'](_0x63d7('0xe'),auth[_0x63d7('0xb')](),controller[_0x63d7('0x1a')]);module[_0x63d7('0x1b')]=router;
\ No newline at end of file
index f1a9505..74e94c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6af3=['Chat','sequelize','lodash','long','TEXT','medium','BOOLEAN','ENUM','out','STRING','DATE','INTEGER','Email'];(function(_0x4f11cb,_0x14e174){var _0x491488=function(_0x2904a9){while(--_0x2904a9){_0x4f11cb['push'](_0x4f11cb['shift']());}};_0x491488(++_0x14e174);}(_0x6af3,0x194));var _0x36af=function(_0x35367a,_0x578e2e){_0x35367a=_0x35367a-0x0;var _0x847153=_0x6af3[_0x35367a];return _0x847153;};'use strict';var Sequelize=require(_0x36af('0x0'));var _=require(_0x36af('0x1'));module['exports']={'body':{'type':Sequelize['TEXT'](_0x36af('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x36af('0x3')](_0x36af('0x4'))},'read':{'type':Sequelize[_0x36af('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0x36af('0x6')]('in',_0x36af('0x7')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x36af('0x8')](0x1fe)},'from':{'type':Sequelize[_0x36af('0x8')]},'to':{'type':Sequelize['TEXT'](_0x36af('0x2'))},'cc':{'type':Sequelize[_0x36af('0x3')](_0x36af('0x2'))},'bcc':{'type':Sequelize[_0x36af('0x3')](_0x36af('0x2'))},'subject':{'type':Sequelize[_0x36af('0x3')]},'sentAt':{'type':Sequelize[_0x36af('0x9')]},'attach':{'type':Sequelize[_0x36af('0xa')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x36af('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x36af('0x9')]},'originTo':{'type':Sequelize[_0x36af('0x3')]('long')},'originCc':{'type':Sequelize[_0x36af('0x3')]('long')},'originChannel':{'type':Sequelize[_0x36af('0x6')](_0x36af('0xb'),_0x36af('0xc')),'defaultValue':_0x36af('0xb'),'allowNull':![]}};
\ No newline at end of file
+var _0xe544=['lodash','exports','TEXT','long','medium','BOOLEAN','out','STRING','DATE','Chat','Email','sequelize'];(function(_0x31e8d8,_0x5ff388){var _0x4d222c=function(_0x435ada){while(--_0x435ada){_0x31e8d8['push'](_0x31e8d8['shift']());}};_0x4d222c(++_0x5ff388);}(_0xe544,0x17f));var _0x4e54=function(_0x438c55,_0x16462a){_0x438c55=_0x438c55-0x0;var _0x38698b=_0xe544[_0x438c55];return _0x38698b;};'use strict';var Sequelize=require(_0x4e54('0x0'));var _=require(_0x4e54('0x1'));module[_0x4e54('0x2')]={'body':{'type':Sequelize[_0x4e54('0x3')](_0x4e54('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x4e54('0x5'))},'read':{'type':Sequelize[_0x4e54('0x6')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x4e54('0x7')),'defaultValue':_0x4e54('0x7'),'allowNull':![]},'messageId':{'type':Sequelize[_0x4e54('0x8')](0x1fe)},'from':{'type':Sequelize[_0x4e54('0x8')]},'to':{'type':Sequelize['TEXT'](_0x4e54('0x4'))},'cc':{'type':Sequelize['TEXT']('long')},'bcc':{'type':Sequelize['TEXT'](_0x4e54('0x4'))},'subject':{'type':Sequelize[_0x4e54('0x3')]},'sentAt':{'type':Sequelize[_0x4e54('0x9')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'readAt':{'type':Sequelize[_0x4e54('0x9')]},'originTo':{'type':Sequelize[_0x4e54('0x3')](_0x4e54('0x4'))},'originCc':{'type':Sequelize[_0x4e54('0x3')](_0x4e54('0x4'))},'originChannel':{'type':Sequelize['ENUM']('Email',_0x4e54('0xa')),'defaultValue':_0x4e54('0xb'),'allowNull':![]}};
\ No newline at end of file
index 37ff0f0..ecf5716 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['../../config/logger','mail-interactions','../../config/environment','../../mysqldb','redis','localhost','./mailMessage.socket','register','jayson/promise','client','http','request','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','json','offset','undefined','limit','count','status','set','Content-Range','update','end','sendStatus','stack','name','send','index','MailMessage','rawAttributes','fieldName','key','model','map','keys','intersection','attributes','fields','query','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','then','includeAll','include','findAll','rows','catch','options','find','params','body','destroy','describe','create','direction','out','secret','split','MailAccount','findOne','List','CmContact','Contacts','updatedAt','MailServerOut','Smtp','isNil','service','host','port','secure','authentication','user','auth','attachments','join','basename','defaults','List\x20not\x20found','SendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','mail','readAt','UserId','get','MailInteraction','MailInteractionId','read1stAt','interaction','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','User','email','internal','interface','SIP/%s','channel','event','accept','fromString','EventManager','reject','agent','rejectMessage','rejectmessage','download','toString','root','server','files','tmp','message-%s.eml','from','bcc','subject','createdAt','Attachment','Attachments','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','push','build','eml-format','moment','bluebird','util','lodash','ioredis','html-to-text','../../components/parsers/qs','api'];(function(_0x36c041,_0x266f6b){var _0x37d15f=function(_0x62d917){while(--_0x62d917){_0x36c041['push'](_0x36c041['shift']());}};_0x37d15f(++_0x266f6b);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var emlformat=require(_0x7995('0x0'));var moment=require(_0x7995('0x1'));var BPromise=require(_0x7995('0x2'));var util=require(_0x7995('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x7995('0x4'));var Redis=require(_0x7995('0x5'));var htmlToText=require(_0x7995('0x6'));var qs=require(_0x7995('0x7'));var logger=require('../../config/logger')(_0x7995('0x8'));var interaction_log=require(_0x7995('0x9'))(_0x7995('0xa'));var config=require(_0x7995('0xb'));var db=require(_0x7995('0xc'))['db'];config[_0x7995('0xd')]=_['defaults'](config[_0x7995('0xd')],{'host':_0x7995('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7995('0xd')]));require(_0x7995('0xf'))[_0x7995('0x10')](socket);var jayson=require(_0x7995('0x11'));var client=jayson[_0x7995('0x12')][_0x7995('0x13')]({'port':0x232c});var client9003=jayson[_0x7995('0x12')]['http']({'port':0x232b});var client9002=jayson[_0x7995('0x12')][_0x7995('0x13')]({'port':0x232a});function respondWithRpcPromise(_0x581f22,_0xb0c872,_0x2cb37a,_0x19a27e){return new BPromise(function(_0x385f00,_0x281576){var _0x23999f=_0x19a27e||client;return _0x23999f[_0x7995('0x14')](_0x581f22,_0x2cb37a)['then'](function(_0x58f5ad){logger[_0x7995('0x15')](_0x7995('0x16'),_0xb0c872,_0x7995('0x17'));logger[_0x7995('0x18')](_0x7995('0x19'),_0xb0c872,_0x7995('0x17'),JSON[_0x7995('0x1a')](_0x58f5ad));if(_0x58f5ad[_0x7995('0x1b')]){if(_0x58f5ad['error'][_0x7995('0x1c')]===0x1f4){logger['error'](_0x7995('0x16'),_0xb0c872,_0x58f5ad[_0x7995('0x1b')][_0x7995('0x1d')]);return _0x281576(_0x58f5ad[_0x7995('0x1b')][_0x7995('0x1d')]);}logger[_0x7995('0x1b')]('MailMessage,\x20%s,\x20%s',_0xb0c872,_0x58f5ad['error'][_0x7995('0x1d')]);return _0x385f00(_0x58f5ad['error']['message']);}else{logger[_0x7995('0x15')](_0x7995('0x16'),_0xb0c872,'request\x20sent');_0x385f00(_0x58f5ad[_0x7995('0x1e')]['message']);}})['catch'](function(_0x3e4c54){logger[_0x7995('0x1b')](_0x7995('0x16'),_0xb0c872,_0x3e4c54);_0x281576(_0x3e4c54);});});}function respondWithResult(_0x1a8568,_0x460924){_0x460924=_0x460924||0xc8;return function(_0x1c278a){if(_0x1c278a){return _0x1a8568['status'](_0x460924)[_0x7995('0x1f')](_0x1c278a);}};}function respondWithFilteredResult(_0x46ee4b,_0x204507){return function(_0x285437){if(_0x285437){var _0x563799=typeof _0x204507[_0x7995('0x20')]===_0x7995('0x21')&&typeof _0x204507[_0x7995('0x22')]==='undefined';var _0x39df42=_0x285437[_0x7995('0x23')];var _0x401dc3=_0x563799?0x0:_0x204507[_0x7995('0x20')];var _0x3a3fcf=_0x563799?_0x285437[_0x7995('0x23')]:_0x204507['offset']+_0x204507[_0x7995('0x22')];var _0x5911c3;if(_0x3a3fcf>=_0x39df42){_0x3a3fcf=_0x39df42;_0x5911c3=0xc8;}else{_0x5911c3=0xce;}_0x46ee4b[_0x7995('0x24')](_0x5911c3);return _0x46ee4b[_0x7995('0x25')](_0x7995('0x26'),_0x401dc3+'-'+_0x3a3fcf+'/'+_0x39df42)[_0x7995('0x1f')](_0x285437);}return null;};}function saveUpdates(_0x11c1eb){return function(_0x4b6f99){if(_0x4b6f99){return _0x4b6f99[_0x7995('0x27')](_0x11c1eb)['then'](function(_0x456a28){return _0x456a28;});}return null;};}function removeEntity(_0x3250e0){return function(_0x4253e5){if(_0x4253e5){return _0x4253e5['destroy']()['then'](function(){_0x3250e0['status'](0xcc)[_0x7995('0x28')]();});}};}function handleEntityNotFound(_0xe6b0b3){return function(_0x327a81){if(!_0x327a81){_0xe6b0b3[_0x7995('0x29')](0x194);}return _0x327a81;};}function handleError(_0x2e3493,_0x1ca460){_0x1ca460=_0x1ca460||0x1f4;return function(_0x538841){logger['error'](_0x538841[_0x7995('0x2a')]);if(_0x538841['name']){delete _0x538841[_0x7995('0x2b')];}_0x2e3493[_0x7995('0x24')](_0x1ca460)[_0x7995('0x2c')](_0x538841);};}exports[_0x7995('0x2d')]=function(_0x1f7d27,_0x510841){var _0x44309d={},_0x33e24e={},_0x5dd802={'count':0x0,'rows':[]};var _0x48db25=_['map'](db[_0x7995('0x2e')][_0x7995('0x2f')],function(_0x4a176f){return{'name':_0x4a176f[_0x7995('0x30')],'type':_0x4a176f['type'][_0x7995('0x31')]};});_0x33e24e[_0x7995('0x32')]=_[_0x7995('0x33')](_0x48db25,'name');_0x33e24e['query']=_[_0x7995('0x34')](_0x1f7d27['query']);_0x33e24e['filters']=_[_0x7995('0x35')](_0x33e24e[_0x7995('0x32')],_0x33e24e['query']);_0x44309d[_0x7995('0x36')]=_[_0x7995('0x35')](_0x33e24e[_0x7995('0x32')],qs[_0x7995('0x37')](_0x1f7d27[_0x7995('0x38')]['fields']));_0x44309d[_0x7995('0x36')]=_0x44309d[_0x7995('0x36')][_0x7995('0x39')]?_0x44309d[_0x7995('0x36')]:_0x33e24e['model'];if(!_0x1f7d27[_0x7995('0x38')][_0x7995('0x3a')](_0x7995('0x3b'))){_0x44309d[_0x7995('0x22')]=qs[_0x7995('0x22')](_0x1f7d27[_0x7995('0x38')]['limit']);_0x44309d[_0x7995('0x20')]=qs[_0x7995('0x20')](_0x1f7d27[_0x7995('0x38')][_0x7995('0x20')]);}_0x44309d[_0x7995('0x3c')]=qs[_0x7995('0x3d')](_0x1f7d27[_0x7995('0x38')][_0x7995('0x3d')]);_0x44309d[_0x7995('0x3e')]=qs[_0x7995('0x3f')](_[_0x7995('0x40')](_0x1f7d27[_0x7995('0x38')],_0x33e24e[_0x7995('0x3f')]),_0x48db25);if(_0x1f7d27['query']['filter']){_0x44309d[_0x7995('0x3e')]=_[_0x7995('0x41')](_0x44309d['where'],{'$or':_['map'](_0x48db25,function(_0x3f8522){if(_0x3f8522['type']!=='VIRTUAL'){var _0x23da6b={};_0x23da6b[_0x3f8522[_0x7995('0x2b')]]={'$like':'%'+_0x1f7d27[_0x7995('0x38')]['filter']+'%'};return _0x23da6b;}})});}_0x44309d=_[_0x7995('0x41')]({},_0x44309d,_0x1f7d27['options']);var _0x3993b5={'where':_0x44309d['where']};return db['MailMessage'][_0x7995('0x23')](_0x3993b5)[_0x7995('0x42')](function(_0xc04e5){_0x5dd802[_0x7995('0x23')]=_0xc04e5;if(_0x1f7d27['query'][_0x7995('0x43')]){_0x44309d[_0x7995('0x44')]=[{'all':!![]}];}return db[_0x7995('0x2e')][_0x7995('0x45')](_0x44309d);})['then'](function(_0x5f28e7){_0x5dd802[_0x7995('0x46')]=_0x5f28e7;return _0x5dd802;})['then'](respondWithFilteredResult(_0x510841,_0x44309d))[_0x7995('0x47')](handleError(_0x510841,null));};exports['show']=function(_0x2f435e,_0x4c1127){var _0x1e795e={'raw':!![],'where':{'id':_0x2f435e['params']['id']}},_0x1b0373={};_0x1b0373[_0x7995('0x32')]=_[_0x7995('0x34')](db[_0x7995('0x2e')][_0x7995('0x2f')]);_0x1b0373['query']=_[_0x7995('0x34')](_0x2f435e[_0x7995('0x38')]);_0x1b0373[_0x7995('0x3f')]=_['intersection'](_0x1b0373[_0x7995('0x32')],_0x1b0373[_0x7995('0x38')]);_0x1e795e[_0x7995('0x36')]=_[_0x7995('0x35')](_0x1b0373[_0x7995('0x32')],qs['fields'](_0x2f435e[_0x7995('0x38')][_0x7995('0x37')]));_0x1e795e['attributes']=_0x1e795e[_0x7995('0x36')]['length']?_0x1e795e[_0x7995('0x36')]:_0x1b0373[_0x7995('0x32')];if(_0x2f435e[_0x7995('0x38')][_0x7995('0x43')]){_0x1e795e[_0x7995('0x44')]=[{'all':!![]}];}_0x1e795e=_[_0x7995('0x41')]({},_0x1e795e,_0x2f435e[_0x7995('0x48')]);return db['MailMessage'][_0x7995('0x49')](_0x1e795e)[_0x7995('0x42')](handleEntityNotFound(_0x4c1127,null))[_0x7995('0x42')](respondWithResult(_0x4c1127,null))['catch'](handleError(_0x4c1127,null));};exports[_0x7995('0x27')]=function(_0x1fe77e,_0x12d4b8){if(_0x1fe77e['body']['id']){delete _0x1fe77e['body']['id'];}return db['MailMessage'][_0x7995('0x49')]({'where':{'id':_0x1fe77e[_0x7995('0x4a')]['id']}})['then'](handleEntityNotFound(_0x12d4b8,null))[_0x7995('0x42')](saveUpdates(_0x1fe77e[_0x7995('0x4b')],null))[_0x7995('0x42')](respondWithResult(_0x12d4b8,null))[_0x7995('0x47')](handleError(_0x12d4b8,null));};exports[_0x7995('0x4c')]=function(_0x528c8e,_0x29ee32){return db['MailMessage'][_0x7995('0x49')]({'where':{'id':_0x528c8e[_0x7995('0x4a')]['id']}})[_0x7995('0x42')](handleEntityNotFound(_0x29ee32,null))['then'](removeEntity(_0x29ee32,null))['catch'](handleError(_0x29ee32,null));};exports['describe']=function(_0x563f8e,_0x2e13b0){return db[_0x7995('0x2e')][_0x7995('0x4d')]()[_0x7995('0x42')](respondWithResult(_0x2e13b0,null))[_0x7995('0x47')](handleError(_0x2e13b0,null));};exports[_0x7995('0x4e')]=function(_0x1f4270,_0xda6ce8){return db[_0x7995('0x2e')][_0x7995('0x4e')](_0x1f4270[_0x7995('0x4b')])[_0x7995('0x42')](function(_0x3da72b){if(_0x3da72b){if(_0x3da72b[_0x7995('0x4f')]===_0x7995('0x50')&&!_0x3da72b[_0x7995('0x51')]){var _0x447a2b,_0x223e08,_0x45e86e;if(_0x1f4270['body']['to']){_0x223e08=_0x1f4270[_0x7995('0x4b')]['to'][_0x7995('0x52')](',')[0x0];}return db[_0x7995('0x53')][_0x7995('0x54')]({'where':{'id':_0x3da72b['MailAccountId']},'include':[{'model':db['CmList'],'as':_0x7995('0x55'),'include':[{'model':db[_0x7995('0x56')],'as':_0x7995('0x57'),'where':{'email':_0x223e08},'limit':0x1,'order':[[_0x7995('0x58'),'DESC']]}]},{'model':db[_0x7995('0x59')],'as':_0x7995('0x5a'),'raw':!![]}]})[_0x7995('0x42')](function(_0x33c49c){_0x447a2b=_0x33c49c;if(_0x447a2b&&_0x447a2b['Smtp']){var _0x5e2d97={'tls':{'rejectUnauthorized':![]}};if(_[_0x7995('0x5b')](_0x447a2b[_0x7995('0x5a')][_0x7995('0x5c')])){_0x5e2d97[_0x7995('0x5d')]=_0x447a2b[_0x7995('0x5a')][_0x7995('0x5d')];_0x5e2d97[_0x7995('0x5e')]=_0x447a2b[_0x7995('0x5a')][_0x7995('0x5e')];_0x5e2d97['secure']=_0x447a2b[_0x7995('0x5a')][_0x7995('0x5f')];if(_0x447a2b[_0x7995('0x5a')][_0x7995('0x60')]){_0x5e2d97['auth']={'user':_0x447a2b['Smtp'][_0x7995('0x61')],'pass':_0x447a2b[_0x7995('0x5a')]['pass']};}}else{_0x5e2d97[_0x7995('0x5c')]=_0x447a2b[_0x7995('0x5a')][_0x7995('0x5c')];_0x5e2d97[_0x7995('0x62')]={'user':_0x447a2b[_0x7995('0x5a')]['user'],'pass':_0x447a2b[_0x7995('0x5a')]['pass']};_0x5e2d97[_0x7995('0x5f')]=_0x447a2b[_0x7995('0x5a')][_0x7995('0x5f')];}if(_0x1f4270[_0x7995('0x4b')][_0x7995('0x63')]&&_0x1f4270[_0x7995('0x4b')][_0x7995('0x63')][_0x7995('0x39')]){for(var _0x10f012=0x0;_0x10f012<_0x1f4270[_0x7995('0x4b')][_0x7995('0x63')][_0x7995('0x39')];_0x10f012+=0x1){_0x1f4270['body'][_0x7995('0x63')][_0x10f012]={'filename':_0x1f4270[_0x7995('0x4b')][_0x7995('0x63')][_0x10f012][_0x7995('0x2b')],'path':path[_0x7995('0x64')](config['root'],'server/files/attachments',_0x1f4270[_0x7995('0x4b')][_0x7995('0x63')][_0x10f012][_0x7995('0x65')])};}}_0x45e86e={'account':_0x5e2d97,'message':_0x1f4270[_0x7995('0x4b')]};return;}})['then'](function(){if(_0x447a2b[_0x7995('0x55')]){if(_0x447a2b['List']['Contacts'][_0x7995('0x39')]){return _0x447a2b[_0x7995('0x55')][_0x7995('0x57')][0x0];}else{return db[_0x7995('0x56')][_0x7995('0x4e')](_[_0x7995('0x66')](_0x1f4270[_0x7995('0x4b')],{'firstName':_0x1f4270[_0x7995('0x4b')]['to'],'email':_0x1f4270[_0x7995('0x4b')]['to'],'phone':_0x1f4270[_0x7995('0x4b')]['to'],'ListId':_0x447a2b['ListId']}));}}else{throw new Error(_0x7995('0x67'));}})[_0x7995('0x42')](function(){if(_0x45e86e){return respondWithRpcPromise(_0x7995('0x68'),'sendMail',_0x45e86e,client9003)[_0x7995('0x42')](function(_0x1d2f9d){return _0x3da72b[_0x7995('0x27')]({'read':!![],'messageId':_0x1d2f9d[_0x7995('0x69')],'sentAt':moment()[_0x7995('0x6a')](_0x7995('0x6b'))});})[_0x7995('0x47')](function(_0x3adfd2){logger[_0x7995('0x1b')]('%s',JSON[_0x7995('0x1a')](_0x3adfd2));return _0x3da72b;});}return _0x3da72b;});}return _0x3da72b;}})[_0x7995('0x42')](respondWithResult(_0xda6ce8,0xc9))['catch'](handleError(_0xda6ce8,null));};exports['accept']=function(_0xd07c1c,_0xfe1105){var _0x39ebb6={'agent':{},'channel':_0x7995('0x6c')};if(_0xd07c1c['body']['id']){delete _0xd07c1c[_0x7995('0x4b')]['id'];}_0xd07c1c[_0x7995('0x4b')]['read']=!![];_0xd07c1c['body'][_0x7995('0x6d')]=moment()[_0x7995('0x6a')]('YYYY-MM-DD\x20HH:mm:ss');_0xd07c1c[_0x7995('0x4b')]['UserId']=_0xd07c1c[_0x7995('0x4b')][_0x7995('0x6e')]||_0xd07c1c['user']['id'];_0x39ebb6['agent']['id']=_0xd07c1c[_0x7995('0x4b')]['UserId'];return db[_0x7995('0x2e')][_0x7995('0x49')]({'where':{'id':_0xd07c1c[_0x7995('0x4a')]['id'],'UserId':null}})[_0x7995('0x42')](handleEntityNotFound(_0xfe1105,null))[_0x7995('0x42')](saveUpdates(_0xd07c1c[_0x7995('0x4b')],null))[_0x7995('0x42')](function(_0x14cb17){if(_0x14cb17){_0x39ebb6[_0x7995('0x1d')]=_0x14cb17[_0x7995('0x6f')]({'plain':!![]});return db[_0x7995('0x70')][_0x7995('0x49')]({'where':{'id':_0x14cb17[_0x7995('0x71')]}});}return null;})[_0x7995('0x42')](handleEntityNotFound(_0xfe1105,null))[_0x7995('0x42')](function(_0x3773de){if(_0x3773de){return _0x3773de[_0x7995('0x27')]({'UserId':_0xd07c1c[_0x7995('0x4b')][_0x7995('0x6e')],'read1stAt':_[_0x7995('0x5b')](_0x3773de[_0x7995('0x72')])?moment()[_0x7995('0x6a')](_0x7995('0x6b')):undefined});}return null;})[_0x7995('0x42')](function(_0x260ef1){if(_0x260ef1){_0x39ebb6[_0x7995('0x73')]=_0x260ef1[_0x7995('0x6f')]({'plain':!![]});interaction_log[_0x7995('0x15')]('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xd07c1c[_0x7995('0x61')]['id'],_0xd07c1c[_0x7995('0x61')]['name'],_0xd07c1c['user'][_0x7995('0x74')],_0x39ebb6[_0x7995('0x73')]['id'],_0xd07c1c[_0x7995('0x4b')]?JSON[_0x7995('0x1a')](_0xd07c1c[_0x7995('0x4b')]):_0x7995('0x75'));return respondWithRpcPromise('AcceptMessage',_0x7995('0x76'),_0x39ebb6);}return null;})[_0x7995('0x42')](function(_0x3fea6a){var _0x77b03f=_0x7995('0x77')+_0x3fea6a[_0x7995('0x1d')][_0x7995('0x78')];return db[_0x7995('0x79')]['query'](_0x77b03f,{'type':db[_0x7995('0x7a')][_0x7995('0x7b')]['SELECT'],'raw':!![]})['then'](function(_0xd24c64){return _0xd24c64;});})[_0x7995('0x42')](function(_0x18e1a2){if(_0x18e1a2){_0x39ebb6[_0x7995('0x1d')][_0x7995('0x7c')]=_0x18e1a2[0x0];if(!_0xd07c1c['body'][_0x7995('0x6e')])return;return db[_0x7995('0x7d')]['find']({'where':{'id':_0xd07c1c[_0x7995('0x4b')][_0x7995('0x6e')],'role':'agent'},'attributes':['id',_0x7995('0x2b'),'fullname',_0x7995('0x7e'),_0x7995('0x7f')],'raw':!![]});}return null;})[_0x7995('0x42')](function(_0x428a1b){if(!_0x428a1b)return null;_0x39ebb6[_0x7995('0x1d')]['agent']=_0x428a1b;return _0x39ebb6;})[_0x7995('0x42')](function(_0x345080){if(_0x345080){if(_0xd07c1c[_0x7995('0x4b')]['manual']){_0x39ebb6[_0x7995('0x1d')][_0x7995('0x80')]=util[_0x7995('0x6a')](_0x7995('0x81'),_0xd07c1c['user'][_0x7995('0x2b')]);_0x39ebb6[_0x7995('0x1d')][_0x7995('0x82')]=_0x39ebb6['channel'];_0x39ebb6['message'][_0x7995('0x83')]=_0x7995('0x84');_0x39ebb6['message']['body']=htmlToText[_0x7995('0x85')](_0x39ebb6[_0x7995('0x1d')][_0x7995('0x4b')]);return respondWithRpcPromise(_0x7995('0x86'),_0x7995('0x86'),{'event':'acceptmessage','message':_0x39ebb6['message']},client9002)[_0x7995('0x42')](function(){return _0x39ebb6;});}return _0x39ebb6;}return null;})['then'](respondWithResult(_0xfe1105,null))['catch'](handleError(_0xfe1105,null));};exports[_0x7995('0x87')]=function(_0x3b731e,_0x3192b8){var _0x5eb360={'agent':{},'channel':_0x7995('0x6c')};if(_0x3b731e[_0x7995('0x4b')]['id']){delete _0x3b731e[_0x7995('0x4b')]['id'];}_0x3b731e[_0x7995('0x4b')][_0x7995('0x6e')]=_0x3b731e['body'][_0x7995('0x6e')]||_0x3b731e[_0x7995('0x61')]['id'];_0x5eb360[_0x7995('0x88')]['id']=_0x3b731e[_0x7995('0x4b')]['UserId'];return db[_0x7995('0x2e')][_0x7995('0x49')]({'where':{'id':_0x3b731e['params']['id'],'UserId':null}})[_0x7995('0x42')](handleEntityNotFound(_0x3192b8,null))[_0x7995('0x42')](function(_0x5b1528){if(_0x5b1528){_0x5eb360[_0x7995('0x1d')]=_0x5b1528['get']({'plain':!![]});return db[_0x7995('0x70')]['find']({'where':{'id':_0x5b1528[_0x7995('0x71')]}});}return null;})['then'](handleEntityNotFound(_0x3192b8,null))[_0x7995('0x42')](function(_0x20f48c){if(_0x20f48c){_0x5eb360['interaction']=_0x20f48c[_0x7995('0x6f')]({'plain':!![]});interaction_log['info']('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x3b731e[_0x7995('0x61')]['id'],_0x3b731e[_0x7995('0x61')][_0x7995('0x2b')],_0x3b731e[_0x7995('0x61')]['role'],_0x5eb360[_0x7995('0x73')]['id'],_0x3b731e[_0x7995('0x4b')]?JSON['stringify'](_0x3b731e['body']):_0x7995('0x75'));return respondWithRpcPromise('RejectMessage',_0x7995('0x89'),_0x5eb360);}return null;})[_0x7995('0x42')](function(_0xfb4479){var _0x5b42be='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xfb4479[_0x7995('0x1d')]['ContactId'];return db[_0x7995('0x79')][_0x7995('0x38')](_0x5b42be,{'type':db[_0x7995('0x7a')][_0x7995('0x7b')]['SELECT'],'raw':!![]})['then'](function(_0x50f880){return _0x50f880;});})[_0x7995('0x42')](function(_0x340a57){if(_0x340a57){_0x5eb360[_0x7995('0x1d')][_0x7995('0x7c')]=_0x340a57[0x0];if(!_0x3b731e[_0x7995('0x4b')][_0x7995('0x6e')])return;return db['User']['find']({'where':{'id':_0x3b731e[_0x7995('0x4b')]['UserId'],'role':'agent'},'attributes':['id',_0x7995('0x2b'),'fullname','email',_0x7995('0x7f')],'raw':!![]});}return null;})[_0x7995('0x42')](function(_0x3873f3){if(!_0x3873f3)return null;_0x5eb360['message'][_0x7995('0x88')]=_0x3873f3;return _0x5eb360;})[_0x7995('0x42')](function(_0x1c4d23){if(_0x1c4d23){_0x1c4d23[_0x7995('0x1d')][_0x7995('0x80')]=util[_0x7995('0x6a')](_0x7995('0x81'),_0x3b731e[_0x7995('0x61')][_0x7995('0x2b')]);_0x1c4d23['message'][_0x7995('0x82')]=_0x5eb360[_0x7995('0x82')];_0x1c4d23[_0x7995('0x1d')][_0x7995('0x83')]=_0x7995('0x87');_0x1c4d23['message'][_0x7995('0x4b')]=htmlToText[_0x7995('0x85')](_0x5eb360[_0x7995('0x1d')]['body']);respondWithRpcPromise('EventManager','EventManager',{'event':_0x7995('0x8a'),'message':_0x1c4d23[_0x7995('0x1d')]},client9002);return _0x5eb360;}return null;})[_0x7995('0x42')](respondWithResult(_0x3192b8,null))[_0x7995('0x47')](handleError(_0x3192b8,null));};exports[_0x7995('0x8b')]=function(_0x3ad47c,_0x4dd64a){var _0x46d263=moment()['unix']()[_0x7995('0x8c')]();var _0xa2baa9=path[_0x7995('0x64')](config[_0x7995('0x8d')],_0x7995('0x8e'),_0x7995('0x8f'),_0x7995('0x90'));var _0x24a0e6=path[_0x7995('0x64')](config[_0x7995('0x8d')],_0x7995('0x8e'),'files',_0x7995('0x63'));var _0x57f875=util[_0x7995('0x6a')](_0x7995('0x91'),_0x46d263);return db['MailMessage']['find']({'where':{'id':_0x3ad47c[_0x7995('0x4a')]['id']},'attributes':['id',_0x7995('0x4b'),_0x7995('0x92'),'to','cc',_0x7995('0x93'),_0x7995('0x94'),_0x7995('0x95')],'include':_0x3ad47c[_0x7995('0x38')][_0x7995('0x63')]?[{'model':db[_0x7995('0x96')],'as':_0x7995('0x97')}]:undefined})[_0x7995('0x42')](handleEntityNotFound(_0x4dd64a,null))[_0x7995('0x42')](function(_0x5eb2d9){if(_0x5eb2d9){var _0x5380e6=_0x5eb2d9;var _0x41b0d5={'from':_0x5380e6[_0x7995('0x92')],'to':_0x5380e6['to'],'subject':_0x5380e6[_0x7995('0x94')],'html':_0x5380e6[_0x7995('0x4b')],'headers':{'Date':moment(_0x5380e6[_0x7995('0x95')])['format'](_0x7995('0x98'))},'attachments':[]};if(_0x5eb2d9['cc']){_0x41b0d5[_0x7995('0x99')]['Cc']=_0x5eb2d9['cc'];}if(_0x5eb2d9['bcc']){_0x41b0d5[_0x7995('0x99')]['Bcc']=_0x5eb2d9[_0x7995('0x93')];}return new BPromise(function(_0x30cda5,_0x234a40){if(_0x5eb2d9['Attachments']){for(var _0x3501ac=0x0;_0x3501ac<_0x5eb2d9[_0x7995('0x97')][_0x7995('0x39')];_0x3501ac++){var _0x15ca94=_0x5eb2d9[_0x7995('0x97')][_0x3501ac];var _0x8a5aa8=path[_0x7995('0x64')](_0x24a0e6,_0x15ca94['basename']);if(fs['existsSync'](_0x8a5aa8)){_0x41b0d5['attachments'][_0x7995('0x9a')]({'name':_0x15ca94[_0x7995('0x2b')],'contentType':_0x15ca94['type'],'data':fs['readFileSync'](_0x8a5aa8)});}}}emlformat[_0x7995('0x9b')](_0x41b0d5,function(_0xe4389c,_0x48d4a7){if(_0xe4389c)return _0x234a40(_0xe4389c);fs['writeFileSync'](path['join'](_0xa2baa9,_0x57f875),_0x48d4a7);return _0x30cda5(_0x48d4a7);});});}})['then'](function(_0x1c4af5){if(_0x1c4af5){return _0x4dd64a[_0x7995('0x8b')](path[_0x7995('0x64')](_0xa2baa9,_0x57f875),_0x57f875,function(_0x421e44){if(!_0x421e44)fs['unlinkSync'](path[_0x7995('0x64')](_0xa2baa9,_0x57f875));});}})[_0x7995('0x47')](handleError(_0x4dd64a,null));};
\ No newline at end of file
+var _0xae80=['CmList','List','CmContact','Contacts','updatedAt','MailServerOut','Smtp','isNil','host','port','secure','authentication','auth','user','pass','service','attachments','root','basename','ContactId','defaults','List\x20not\x20found','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','mail','read','readAt','UserId','get','MailInteraction','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','QueryTypes','SELECT','contact','User','agent','fullname','email','manual','interface','SIP/%s','channel','motionChannel','event','accept','EventManager','acceptmessage','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','sequelize','Sequelize','reject','fromString','rejectmessage','download','unix','toString','join','tmp','files','message-%s.eml','bcc','subject','createdAt','Attachment','from','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','Attachments','existsSync','readFileSync','build','writeFileSync','unlinkSync','eml-format','bluebird','path','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','html-entities','./mailMessage.socket','register','jayson/promise','client','http','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','sendStatus','stack','name','index','map','MailMessage','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','show','params','rawAttributes','includeAll','include','options','find','body','describe','create','direction','out','split','MailAccount','findOne','MailAccountId'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0xae80,0x1a5));var _0x0ae8=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xae80[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x0ae8('0x0'));var moment=require('moment');var BPromise=require(_0x0ae8('0x1'));var util=require('util');var path=require(_0x0ae8('0x2'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x0ae8('0x3'));var htmlToText=require(_0x0ae8('0x4'));var qs=require(_0x0ae8('0x5'));var logger=require(_0x0ae8('0x6'))(_0x0ae8('0x7'));var interaction_log=require(_0x0ae8('0x6'))(_0x0ae8('0x8'));var config=require(_0x0ae8('0x9'));var db=require(_0x0ae8('0xa'))['db'];config[_0x0ae8('0xb')]=_['defaults'](config[_0x0ae8('0xb')],{'host':_0x0ae8('0xc'),'port':0x18eb});var socket=require(_0x0ae8('0xd'))(new Redis(config[_0x0ae8('0xb')]));var htmlEntities=require(_0x0ae8('0xe'));require(_0x0ae8('0xf'))[_0x0ae8('0x10')](socket);var jayson=require(_0x0ae8('0x11'));var client=jayson[_0x0ae8('0x12')][_0x0ae8('0x13')]({'port':0x232c});var client9003=jayson['client']['http']({'port':0x232b});var client9002=jayson[_0x0ae8('0x12')][_0x0ae8('0x13')]({'port':0x232a});function respondWithRpcPromise(_0x7649c8,_0x1c2583,_0x35a6d4,_0x1a7ace){return new BPromise(function(_0x25aa90,_0x1c9981){var _0xb7a718=_0x1a7ace||client;return _0xb7a718['request'](_0x7649c8,_0x35a6d4)['then'](function(_0x2af201){logger[_0x0ae8('0x14')](_0x0ae8('0x15'),_0x1c2583,_0x0ae8('0x16'));logger[_0x0ae8('0x17')](_0x0ae8('0x18'),_0x1c2583,_0x0ae8('0x16'),JSON[_0x0ae8('0x19')](_0x2af201));if(_0x2af201[_0x0ae8('0x1a')]){if(_0x2af201[_0x0ae8('0x1a')]['code']===0x1f4){logger[_0x0ae8('0x1a')](_0x0ae8('0x15'),_0x1c2583,_0x2af201[_0x0ae8('0x1a')][_0x0ae8('0x1b')]);return _0x1c9981(_0x2af201[_0x0ae8('0x1a')][_0x0ae8('0x1b')]);}logger[_0x0ae8('0x1a')](_0x0ae8('0x15'),_0x1c2583,_0x2af201[_0x0ae8('0x1a')]['message']);return _0x25aa90(_0x2af201[_0x0ae8('0x1a')]['message']);}else{logger[_0x0ae8('0x14')]('MailMessage,\x20%s,\x20%s',_0x1c2583,'request\x20sent');_0x25aa90(_0x2af201[_0x0ae8('0x1c')]['message']);}})[_0x0ae8('0x1d')](function(_0x54394d){logger[_0x0ae8('0x1a')](_0x0ae8('0x15'),_0x1c2583,_0x54394d);_0x1c9981(_0x54394d);});});}function respondWithResult(_0x24cd2c,_0x29c77e){_0x29c77e=_0x29c77e||0xc8;return function(_0x4f6bcb){if(_0x4f6bcb){return _0x24cd2c[_0x0ae8('0x1e')](_0x29c77e)[_0x0ae8('0x1f')](_0x4f6bcb);}};}function respondWithFilteredResult(_0x27fd6b,_0x1b60f3){return function(_0x469276){if(_0x469276){var _0x4981cb=typeof _0x1b60f3[_0x0ae8('0x20')]===_0x0ae8('0x21')&&typeof _0x1b60f3[_0x0ae8('0x22')]==='undefined';var _0xf206b4=_0x469276[_0x0ae8('0x23')];var _0x381385=_0x4981cb?0x0:_0x1b60f3[_0x0ae8('0x20')];var _0x3facac=_0x4981cb?_0x469276[_0x0ae8('0x23')]:_0x1b60f3[_0x0ae8('0x20')]+_0x1b60f3[_0x0ae8('0x22')];var _0x33b43e;if(_0x3facac>=_0xf206b4){_0x3facac=_0xf206b4;_0x33b43e=0xc8;}else{_0x33b43e=0xce;}_0x27fd6b['status'](_0x33b43e);return _0x27fd6b[_0x0ae8('0x24')](_0x0ae8('0x25'),_0x381385+'-'+_0x3facac+'/'+_0xf206b4)[_0x0ae8('0x1f')](_0x469276);}return null;};}function saveUpdates(_0x49cdfd){return function(_0x23d74e){if(_0x23d74e){return _0x23d74e[_0x0ae8('0x26')](_0x49cdfd)[_0x0ae8('0x27')](function(_0x11bb92){return _0x11bb92;});}return null;};}function removeEntity(_0x139670){return function(_0x1aceb1){if(_0x1aceb1){return _0x1aceb1[_0x0ae8('0x28')]()['then'](function(){_0x139670[_0x0ae8('0x1e')](0xcc)[_0x0ae8('0x29')]();});}};}function handleEntityNotFound(_0x372f1f){return function(_0x4ea257){if(!_0x4ea257){_0x372f1f[_0x0ae8('0x2a')](0x194);}return _0x4ea257;};}function handleError(_0x2a488e,_0xf681ee){_0xf681ee=_0xf681ee||0x1f4;return function(_0x5d8912){logger[_0x0ae8('0x1a')](_0x5d8912[_0x0ae8('0x2b')]);if(_0x5d8912[_0x0ae8('0x2c')]){delete _0x5d8912[_0x0ae8('0x2c')];}_0x2a488e['status'](_0xf681ee)['send'](_0x5d8912);};}exports[_0x0ae8('0x2d')]=function(_0x1fe42f,_0x22970f){var _0x120468={},_0x2c5e52={},_0x287338={'count':0x0,'rows':[]};var _0x230ce1=_[_0x0ae8('0x2e')](db[_0x0ae8('0x2f')]['rawAttributes'],function(_0x30738a){return{'name':_0x30738a[_0x0ae8('0x30')],'type':_0x30738a[_0x0ae8('0x31')][_0x0ae8('0x32')]};});_0x2c5e52[_0x0ae8('0x33')]=_[_0x0ae8('0x2e')](_0x230ce1,_0x0ae8('0x2c'));_0x2c5e52[_0x0ae8('0x34')]=_[_0x0ae8('0x35')](_0x1fe42f[_0x0ae8('0x34')]);_0x2c5e52[_0x0ae8('0x36')]=_['intersection'](_0x2c5e52[_0x0ae8('0x33')],_0x2c5e52[_0x0ae8('0x34')]);_0x120468[_0x0ae8('0x37')]=_[_0x0ae8('0x38')](_0x2c5e52[_0x0ae8('0x33')],qs[_0x0ae8('0x39')](_0x1fe42f[_0x0ae8('0x34')]['fields']));_0x120468['attributes']=_0x120468['attributes'][_0x0ae8('0x3a')]?_0x120468[_0x0ae8('0x37')]:_0x2c5e52[_0x0ae8('0x33')];if(!_0x1fe42f['query']['hasOwnProperty'](_0x0ae8('0x3b'))){_0x120468[_0x0ae8('0x22')]=qs[_0x0ae8('0x22')](_0x1fe42f[_0x0ae8('0x34')][_0x0ae8('0x22')]);_0x120468[_0x0ae8('0x20')]=qs[_0x0ae8('0x20')](_0x1fe42f['query']['offset']);}_0x120468[_0x0ae8('0x3c')]=qs[_0x0ae8('0x3d')](_0x1fe42f[_0x0ae8('0x34')][_0x0ae8('0x3d')]);_0x120468['where']=qs[_0x0ae8('0x36')](_[_0x0ae8('0x3e')](_0x1fe42f[_0x0ae8('0x34')],_0x2c5e52['filters']),_0x230ce1);if(_0x1fe42f[_0x0ae8('0x34')][_0x0ae8('0x3f')]){_0x120468[_0x0ae8('0x40')]=_[_0x0ae8('0x41')](_0x120468[_0x0ae8('0x40')],{'$or':_[_0x0ae8('0x2e')](_0x230ce1,function(_0x393d63){if(_0x393d63['type']!==_0x0ae8('0x42')){var _0x237468={};_0x237468[_0x393d63[_0x0ae8('0x2c')]]={'$like':'%'+_0x1fe42f[_0x0ae8('0x34')]['filter']+'%'};return _0x237468;}})});}_0x120468=_[_0x0ae8('0x41')]({},_0x120468,_0x1fe42f['options']);var _0x46e517={'where':_0x120468[_0x0ae8('0x40')]};return db['MailMessage'][_0x0ae8('0x23')](_0x46e517)['then'](function(_0x400671){_0x287338[_0x0ae8('0x23')]=_0x400671;if(_0x1fe42f[_0x0ae8('0x34')]['includeAll']){_0x120468['include']=[{'all':!![]}];}return db[_0x0ae8('0x2f')]['findAll'](_0x120468);})['then'](function(_0x3dab38){_0x287338['rows']=_0x3dab38;return _0x287338;})['then'](respondWithFilteredResult(_0x22970f,_0x120468))['catch'](handleError(_0x22970f,null));};exports[_0x0ae8('0x43')]=function(_0x56bd53,_0x43f6a0){var _0x2c77ba={'raw':!![],'where':{'id':_0x56bd53[_0x0ae8('0x44')]['id']}},_0x24a7a7={};_0x24a7a7[_0x0ae8('0x33')]=_['keys'](db[_0x0ae8('0x2f')][_0x0ae8('0x45')]);_0x24a7a7[_0x0ae8('0x34')]=_[_0x0ae8('0x35')](_0x56bd53['query']);_0x24a7a7[_0x0ae8('0x36')]=_['intersection'](_0x24a7a7[_0x0ae8('0x33')],_0x24a7a7[_0x0ae8('0x34')]);_0x2c77ba[_0x0ae8('0x37')]=_[_0x0ae8('0x38')](_0x24a7a7[_0x0ae8('0x33')],qs[_0x0ae8('0x39')](_0x56bd53['query'][_0x0ae8('0x39')]));_0x2c77ba[_0x0ae8('0x37')]=_0x2c77ba[_0x0ae8('0x37')][_0x0ae8('0x3a')]?_0x2c77ba[_0x0ae8('0x37')]:_0x24a7a7[_0x0ae8('0x33')];if(_0x56bd53[_0x0ae8('0x34')][_0x0ae8('0x46')]){_0x2c77ba[_0x0ae8('0x47')]=[{'all':!![]}];}_0x2c77ba=_[_0x0ae8('0x41')]({},_0x2c77ba,_0x56bd53[_0x0ae8('0x48')]);return db['MailMessage'][_0x0ae8('0x49')](_0x2c77ba)['then'](handleEntityNotFound(_0x43f6a0,null))[_0x0ae8('0x27')](respondWithResult(_0x43f6a0,null))['catch'](handleError(_0x43f6a0,null));};exports[_0x0ae8('0x26')]=function(_0xa15156,_0x3f95b8){if(_0xa15156[_0x0ae8('0x4a')]['id']){delete _0xa15156[_0x0ae8('0x4a')]['id'];}return db[_0x0ae8('0x2f')][_0x0ae8('0x49')]({'where':{'id':_0xa15156[_0x0ae8('0x44')]['id']}})[_0x0ae8('0x27')](handleEntityNotFound(_0x3f95b8,null))[_0x0ae8('0x27')](saveUpdates(_0xa15156[_0x0ae8('0x4a')],null))[_0x0ae8('0x27')](respondWithResult(_0x3f95b8,null))[_0x0ae8('0x1d')](handleError(_0x3f95b8,null));};exports[_0x0ae8('0x28')]=function(_0x151543,_0x193c01){return db[_0x0ae8('0x2f')][_0x0ae8('0x49')]({'where':{'id':_0x151543[_0x0ae8('0x44')]['id']}})[_0x0ae8('0x27')](handleEntityNotFound(_0x193c01,null))['then'](removeEntity(_0x193c01,null))[_0x0ae8('0x1d')](handleError(_0x193c01,null));};exports[_0x0ae8('0x4b')]=function(_0x101971,_0x3289d5){return db['MailMessage'][_0x0ae8('0x4b')]()[_0x0ae8('0x27')](respondWithResult(_0x3289d5,null))['catch'](handleError(_0x3289d5,null));};exports[_0x0ae8('0x4c')]=function(_0x264fa4,_0x1467ba){return db[_0x0ae8('0x2f')][_0x0ae8('0x4c')](_0x264fa4[_0x0ae8('0x4a')])[_0x0ae8('0x27')](function(_0xa89637){if(_0xa89637){if(_0xa89637[_0x0ae8('0x4d')]===_0x0ae8('0x4e')&&!_0xa89637['secret']){var _0x50a202,_0x5c4559,_0x1e0ccb;if(_0x264fa4[_0x0ae8('0x4a')]['to']){_0x5c4559=_0x264fa4[_0x0ae8('0x4a')]['to'][_0x0ae8('0x4f')](',')[0x0];}return db[_0x0ae8('0x50')][_0x0ae8('0x51')]({'where':{'id':_0xa89637[_0x0ae8('0x52')]},'include':[{'model':db[_0x0ae8('0x53')],'as':_0x0ae8('0x54'),'include':[{'model':db[_0x0ae8('0x55')],'as':_0x0ae8('0x56'),'where':{'email':_0x5c4559},'limit':0x1,'order':[[_0x0ae8('0x57'),'DESC']]}]},{'model':db[_0x0ae8('0x58')],'as':_0x0ae8('0x59'),'raw':!![]}]})[_0x0ae8('0x27')](function(_0xe97f66){_0x50a202=_0xe97f66;if(_0x50a202&&_0x50a202[_0x0ae8('0x59')]){var _0x3c0fb8={'tls':{'rejectUnauthorized':![]}};if(_[_0x0ae8('0x5a')](_0x50a202[_0x0ae8('0x59')]['service'])){_0x3c0fb8[_0x0ae8('0x5b')]=_0x50a202[_0x0ae8('0x59')][_0x0ae8('0x5b')];_0x3c0fb8['port']=_0x50a202[_0x0ae8('0x59')][_0x0ae8('0x5c')];_0x3c0fb8[_0x0ae8('0x5d')]=_0x50a202[_0x0ae8('0x59')]['secure'];if(_0x50a202[_0x0ae8('0x59')][_0x0ae8('0x5e')]){_0x3c0fb8[_0x0ae8('0x5f')]={'user':_0x50a202[_0x0ae8('0x59')][_0x0ae8('0x60')],'pass':_0x50a202[_0x0ae8('0x59')][_0x0ae8('0x61')]};}}else{_0x3c0fb8[_0x0ae8('0x62')]=_0x50a202[_0x0ae8('0x59')][_0x0ae8('0x62')];_0x3c0fb8[_0x0ae8('0x5f')]={'user':_0x50a202[_0x0ae8('0x59')]['user'],'pass':_0x50a202['Smtp'][_0x0ae8('0x61')]};_0x3c0fb8['secure']=_0x50a202[_0x0ae8('0x59')][_0x0ae8('0x5d')];}if(_0x264fa4[_0x0ae8('0x4a')]['attachments']&&_0x264fa4['body'][_0x0ae8('0x63')]['length']){for(var _0x413f4f=0x0;_0x413f4f<_0x264fa4[_0x0ae8('0x4a')][_0x0ae8('0x63')][_0x0ae8('0x3a')];_0x413f4f+=0x1){_0x264fa4[_0x0ae8('0x4a')]['attachments'][_0x413f4f]={'filename':_0x264fa4[_0x0ae8('0x4a')][_0x0ae8('0x63')][_0x413f4f][_0x0ae8('0x2c')],'path':path['join'](config[_0x0ae8('0x64')],'server/files/attachments',_0x264fa4[_0x0ae8('0x4a')][_0x0ae8('0x63')][_0x413f4f][_0x0ae8('0x65')])};}}_0x1e0ccb={'account':_0x3c0fb8,'message':_0x264fa4['body']};return;}})[_0x0ae8('0x27')](function(){if(_0x50a202[_0x0ae8('0x54')]){if(_0x50a202['List'][_0x0ae8('0x56')]['length']){_0x1e0ccb['message'][_0x0ae8('0x66')]=_0x50a202[_0x0ae8('0x54')]['Contacts'][0x0]['id'];return _0x50a202[_0x0ae8('0x54')][_0x0ae8('0x56')][0x0];}else{return db[_0x0ae8('0x55')][_0x0ae8('0x4c')](_[_0x0ae8('0x67')](_0x264fa4[_0x0ae8('0x4a')],{'firstName':_0x264fa4[_0x0ae8('0x4a')]['to'],'email':_0x264fa4[_0x0ae8('0x4a')]['to'],'phone':_0x264fa4[_0x0ae8('0x4a')]['to'],'ListId':_0x50a202['ListId']}))['then'](function(_0x4a9a06){_0x1e0ccb[_0x0ae8('0x1b')][_0x0ae8('0x66')]=_0x4a9a06['id'];return;});}}else{throw new Error(_0x0ae8('0x68'));}})[_0x0ae8('0x27')](function(){if(_0x1e0ccb){return respondWithRpcPromise('SendMail',_0x0ae8('0x69'),_0x1e0ccb,client9003)['then'](function(_0x2f6c28){return _0xa89637[_0x0ae8('0x26')]({'read':!![],'messageId':_0x2f6c28[_0x0ae8('0x6a')],'ContactId':_0x1e0ccb[_0x0ae8('0x1b')][_0x0ae8('0x66')],'sentAt':moment()[_0x0ae8('0x6b')](_0x0ae8('0x6c'))});})[_0x0ae8('0x1d')](function(_0xaae979){logger[_0x0ae8('0x1a')]('%s',JSON['stringify'](_0xaae979));return _0xa89637;});}return _0xa89637;});}return _0xa89637;}})[_0x0ae8('0x27')](respondWithResult(_0x1467ba,0xc9))['catch'](handleError(_0x1467ba,null));};exports['accept']=function(_0x4d88ea,_0x3cc849){var _0x545ab3={'agent':{},'channel':_0x0ae8('0x6d')};if(_0x4d88ea[_0x0ae8('0x4a')]['id']){delete _0x4d88ea['body']['id'];}_0x4d88ea[_0x0ae8('0x4a')][_0x0ae8('0x6e')]=!![];_0x4d88ea[_0x0ae8('0x4a')][_0x0ae8('0x6f')]=moment()[_0x0ae8('0x6b')](_0x0ae8('0x6c'));_0x4d88ea['body'][_0x0ae8('0x70')]=_0x4d88ea['body'][_0x0ae8('0x70')]||_0x4d88ea[_0x0ae8('0x60')]['id'];_0x545ab3['agent']['id']=_0x4d88ea[_0x0ae8('0x4a')][_0x0ae8('0x70')];return db['MailMessage'][_0x0ae8('0x49')]({'where':{'id':_0x4d88ea[_0x0ae8('0x44')]['id'],'UserId':null}})[_0x0ae8('0x27')](handleEntityNotFound(_0x3cc849,null))['then'](saveUpdates(_0x4d88ea[_0x0ae8('0x4a')],null))['then'](function(_0x3040f1){if(_0x3040f1){_0x545ab3[_0x0ae8('0x1b')]=_0x3040f1[_0x0ae8('0x71')]({'plain':!![]});return db[_0x0ae8('0x72')][_0x0ae8('0x49')]({'where':{'id':_0x3040f1['MailInteractionId']}});}return null;})[_0x0ae8('0x27')](handleEntityNotFound(_0x3cc849,null))[_0x0ae8('0x27')](function(_0x5057e9){if(_0x5057e9){return _0x5057e9[_0x0ae8('0x26')]({'UserId':_0x4d88ea['body'][_0x0ae8('0x70')],'read1stAt':_['isNil'](_0x5057e9[_0x0ae8('0x73')])?moment()[_0x0ae8('0x6b')](_0x0ae8('0x6c')):undefined});}return null;})[_0x0ae8('0x27')](function(_0x5b0d05){if(_0x5b0d05){_0x545ab3[_0x0ae8('0x74')]=_0x5b0d05[_0x0ae8('0x71')]({'plain':!![]});interaction_log['info'](_0x0ae8('0x75'),_0x4d88ea['user']['id'],_0x4d88ea[_0x0ae8('0x60')][_0x0ae8('0x2c')],_0x4d88ea[_0x0ae8('0x60')][_0x0ae8('0x76')],_0x545ab3[_0x0ae8('0x74')]['id'],_0x4d88ea[_0x0ae8('0x4a')]?JSON[_0x0ae8('0x19')](_0x4d88ea['body']):'null');return respondWithRpcPromise('AcceptMessage',_0x0ae8('0x77'),_0x545ab3);}return null;})[_0x0ae8('0x27')](function(_0x515313){var _0x2c00c2=_0x0ae8('0x78')+_0x515313[_0x0ae8('0x1b')][_0x0ae8('0x66')];return db['sequelize'][_0x0ae8('0x34')](_0x2c00c2,{'type':db['Sequelize'][_0x0ae8('0x79')][_0x0ae8('0x7a')],'raw':!![]})[_0x0ae8('0x27')](function(_0x2f7b97){return _0x2f7b97;});})[_0x0ae8('0x27')](function(_0x2d3c9e){if(_0x2d3c9e){_0x545ab3[_0x0ae8('0x1b')][_0x0ae8('0x7b')]=_0x2d3c9e[0x0];if(!_0x4d88ea[_0x0ae8('0x4a')][_0x0ae8('0x70')])return;return db[_0x0ae8('0x7c')][_0x0ae8('0x49')]({'where':{'id':_0x4d88ea[_0x0ae8('0x4a')][_0x0ae8('0x70')],'role':_0x0ae8('0x7d')},'attributes':['id','name',_0x0ae8('0x7e'),_0x0ae8('0x7f'),'internal'],'raw':!![]});}return null;})[_0x0ae8('0x27')](function(_0x450d88){if(!_0x450d88)return null;_0x545ab3['message'][_0x0ae8('0x7d')]=_0x450d88;return _0x545ab3;})[_0x0ae8('0x27')](function(_0x55b276){if(_0x55b276){if(_0x4d88ea[_0x0ae8('0x4a')][_0x0ae8('0x80')]){_0x545ab3['message'][_0x0ae8('0x81')]=util[_0x0ae8('0x6b')](_0x0ae8('0x82'),_0x4d88ea[_0x0ae8('0x60')][_0x0ae8('0x2c')]);_0x545ab3['message']['channel']=_0x545ab3[_0x0ae8('0x83')];_0x545ab3[_0x0ae8('0x1b')][_0x0ae8('0x84')]=_0x545ab3[_0x0ae8('0x83')];_0x545ab3[_0x0ae8('0x1b')][_0x0ae8('0x85')]=_0x0ae8('0x86');_0x545ab3[_0x0ae8('0x1b')][_0x0ae8('0x4a')]=htmlToText['fromString'](_0x545ab3[_0x0ae8('0x1b')][_0x0ae8('0x4a')]);return respondWithRpcPromise(_0x0ae8('0x87'),_0x0ae8('0x87'),{'event':_0x0ae8('0x88'),'message':_0x545ab3[_0x0ae8('0x1b')]},client9002)[_0x0ae8('0x27')](function(){return _0x545ab3;});}return _0x545ab3;}return null;})[_0x0ae8('0x27')](respondWithResult(_0x3cc849,null))['catch'](handleError(_0x3cc849,null));};exports['reject']=function(_0x364d1f,_0x2b6031){var _0x1284f2={'agent':{},'channel':_0x0ae8('0x6d')};if(_0x364d1f['body']['id']){delete _0x364d1f[_0x0ae8('0x4a')]['id'];}_0x364d1f[_0x0ae8('0x4a')]['UserId']=_0x364d1f[_0x0ae8('0x4a')][_0x0ae8('0x70')]||_0x364d1f[_0x0ae8('0x60')]['id'];_0x1284f2['agent']['id']=_0x364d1f[_0x0ae8('0x4a')][_0x0ae8('0x70')];return db[_0x0ae8('0x2f')][_0x0ae8('0x49')]({'where':{'id':_0x364d1f[_0x0ae8('0x44')]['id'],'UserId':null}})[_0x0ae8('0x27')](handleEntityNotFound(_0x2b6031,null))[_0x0ae8('0x27')](function(_0x491c9e){if(_0x491c9e){_0x1284f2['message']=_0x491c9e[_0x0ae8('0x71')]({'plain':!![]});return db[_0x0ae8('0x72')][_0x0ae8('0x49')]({'where':{'id':_0x491c9e['MailInteractionId']}});}return null;})[_0x0ae8('0x27')](handleEntityNotFound(_0x2b6031,null))['then'](function(_0x4d6d7d){if(_0x4d6d7d){_0x1284f2[_0x0ae8('0x74')]=_0x4d6d7d[_0x0ae8('0x71')]({'plain':!![]});interaction_log[_0x0ae8('0x14')](_0x0ae8('0x89'),_0x364d1f[_0x0ae8('0x60')]['id'],_0x364d1f['user']['name'],_0x364d1f[_0x0ae8('0x60')]['role'],_0x1284f2['interaction']['id'],_0x364d1f[_0x0ae8('0x4a')]?JSON[_0x0ae8('0x19')](_0x364d1f[_0x0ae8('0x4a')]):_0x0ae8('0x8a'));return respondWithRpcPromise(_0x0ae8('0x8b'),_0x0ae8('0x8c'),_0x1284f2);}return null;})[_0x0ae8('0x27')](function(_0x53f49b){var _0x5f49fe=_0x0ae8('0x78')+_0x53f49b['message'][_0x0ae8('0x66')];return db[_0x0ae8('0x8d')]['query'](_0x5f49fe,{'type':db[_0x0ae8('0x8e')][_0x0ae8('0x79')][_0x0ae8('0x7a')],'raw':!![]})[_0x0ae8('0x27')](function(_0x4d1f0d){return _0x4d1f0d;});})[_0x0ae8('0x27')](function(_0x215dfc){if(_0x215dfc){_0x1284f2['message'][_0x0ae8('0x7b')]=_0x215dfc[0x0];if(!_0x364d1f[_0x0ae8('0x4a')][_0x0ae8('0x70')])return;return db[_0x0ae8('0x7c')][_0x0ae8('0x49')]({'where':{'id':_0x364d1f[_0x0ae8('0x4a')]['UserId'],'role':_0x0ae8('0x7d')},'attributes':['id',_0x0ae8('0x2c'),_0x0ae8('0x7e'),'email','internal'],'raw':!![]});}return null;})[_0x0ae8('0x27')](function(_0x48908e){if(!_0x48908e)return null;_0x1284f2['message']['agent']=_0x48908e;return _0x1284f2;})[_0x0ae8('0x27')](function(_0x4882f5){if(_0x4882f5){_0x4882f5[_0x0ae8('0x1b')][_0x0ae8('0x81')]=util[_0x0ae8('0x6b')]('SIP/%s',_0x364d1f[_0x0ae8('0x60')][_0x0ae8('0x2c')]);_0x4882f5[_0x0ae8('0x1b')][_0x0ae8('0x83')]=_0x1284f2[_0x0ae8('0x83')];_0x4882f5[_0x0ae8('0x1b')]['motionChannel']=_0x1284f2['channel'];_0x4882f5[_0x0ae8('0x1b')][_0x0ae8('0x85')]=_0x0ae8('0x8f');_0x4882f5[_0x0ae8('0x1b')]['body']=htmlToText[_0x0ae8('0x90')](_0x1284f2[_0x0ae8('0x1b')][_0x0ae8('0x4a')]);respondWithRpcPromise(_0x0ae8('0x87'),'EventManager',{'event':_0x0ae8('0x91'),'message':_0x4882f5[_0x0ae8('0x1b')]},client9002);return _0x1284f2;}return null;})[_0x0ae8('0x27')](respondWithResult(_0x2b6031,null))[_0x0ae8('0x1d')](handleError(_0x2b6031,null));};exports[_0x0ae8('0x92')]=function(_0x45d353,_0x523944){var _0x5c8153=moment()[_0x0ae8('0x93')]()[_0x0ae8('0x94')]();var _0x9a05cc=path[_0x0ae8('0x95')](config[_0x0ae8('0x64')],'server','files',_0x0ae8('0x96'));var _0x3cf542=path['join'](config[_0x0ae8('0x64')],'server',_0x0ae8('0x97'),'attachments');var _0x2f32ce=util[_0x0ae8('0x6b')](_0x0ae8('0x98'),_0x5c8153);return db[_0x0ae8('0x2f')]['find']({'where':{'id':_0x45d353[_0x0ae8('0x44')]['id']},'attributes':['id',_0x0ae8('0x4a'),'from','to','cc',_0x0ae8('0x99'),_0x0ae8('0x9a'),_0x0ae8('0x9b')],'include':_0x45d353['query']['attachments']?[{'model':db[_0x0ae8('0x9c')],'as':'Attachments'}]:undefined})['then'](handleEntityNotFound(_0x523944,null))[_0x0ae8('0x27')](function(_0x37ca75){if(_0x37ca75){var _0x3b67f1=_0x37ca75;var _0x5befb2={'from':_0x3b67f1[_0x0ae8('0x9d')],'to':_0x3b67f1['to'],'subject':_0x3b67f1[_0x0ae8('0x9a')],'html':htmlEntities[_0x0ae8('0x9e')](_0x3b67f1[_0x0ae8('0x4a')]),'headers':{'Date':moment(_0x3b67f1['createdAt'])[_0x0ae8('0x6b')](_0x0ae8('0x9f'))},'attachments':[]};if(_0x37ca75['cc']){_0x5befb2[_0x0ae8('0xa0')]['Cc']=_0x37ca75['cc'];}if(_0x37ca75[_0x0ae8('0x99')]){_0x5befb2[_0x0ae8('0xa0')][_0x0ae8('0xa1')]=_0x37ca75[_0x0ae8('0x99')];}return new BPromise(function(_0x29517b,_0x2fcfde){if(_0x37ca75[_0x0ae8('0xa2')]){for(var _0x1c6811=0x0;_0x1c6811<_0x37ca75[_0x0ae8('0xa2')][_0x0ae8('0x3a')];_0x1c6811++){var _0xfcceb3=_0x37ca75[_0x0ae8('0xa2')][_0x1c6811];var _0x2675d2=path[_0x0ae8('0x95')](_0x3cf542,_0xfcceb3[_0x0ae8('0x65')]);if(fs[_0x0ae8('0xa3')](_0x2675d2)){_0x5befb2[_0x0ae8('0x63')]['push']({'name':_0xfcceb3[_0x0ae8('0x2c')],'contentType':_0xfcceb3[_0x0ae8('0x31')],'data':fs[_0x0ae8('0xa4')](_0x2675d2)});}}}emlformat[_0x0ae8('0xa5')](_0x5befb2,function(_0x2660e6,_0xda9451){if(_0x2660e6)return _0x2fcfde(_0x2660e6);fs[_0x0ae8('0xa6')](path[_0x0ae8('0x95')](_0x9a05cc,_0x2f32ce),_0xda9451);return _0x29517b(_0xda9451);});});}})[_0x0ae8('0x27')](function(_0xf9a7fb){if(_0xf9a7fb){return _0x523944['download'](path[_0x0ae8('0x95')](_0x9a05cc,_0x2f32ce),_0x2f32ce,function(_0x20b905){if(!_0x20b905)fs[_0x0ae8('0xa7')](path[_0x0ae8('0x95')](_0x9a05cc,_0x2f32ce));});}})[_0x0ae8('0x1d')](handleError(_0x523944,null));};
\ No newline at end of file
index 5e617bf..4006f4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e2f=['update','hasOwnProperty','hook','exports','../../mysqldb','save'];(function(_0x56dd3a,_0x4890c3){var _0x26755a=function(_0x376e34){while(--_0x376e34){_0x56dd3a['push'](_0x56dd3a['shift']());}};_0x26755a(++_0x4890c3);}(_0x5e2f,0x112));var _0xf5e2=function(_0xa355ee,_0x4b6360){_0xa355ee=_0xa355ee-0x0;var _0x44307e=_0x5e2f[_0xa355ee];return _0x44307e;};'use strict';var EventEmitter=require('events');var MailMessage=require(_0xf5e2('0x0'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf5e2('0x1'),'afterUpdate':_0xf5e2('0x2'),'afterDestroy':'remove'};function emitEvent(_0x12a27d){return function(_0x527a75,_0x328410,_0x1ff204){MailMessageEvents['emit'](_0x12a27d+':'+_0x527a75['id'],_0x527a75);MailMessageEvents['emit'](_0x12a27d,_0x527a75);_0x1ff204(null);};}for(var e in events){if(events[_0xf5e2('0x3')](e)){var event=events[e];MailMessage[_0xf5e2('0x4')](e,emitEvent(event));}}module[_0xf5e2('0x5')]=MailMessageEvents;
\ No newline at end of file
+var _0xb080=['events','MailMessage','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports'];(function(_0x2c69a1,_0x201903){var _0x24bb91=function(_0x3131ac){while(--_0x3131ac){_0x2c69a1['push'](_0x2c69a1['shift']());}};_0x24bb91(++_0x201903);}(_0xb080,0x156));var _0x0b08=function(_0x211eae,_0x4df7c4){_0x211eae=_0x211eae-0x0;var _0x4687da=_0xb080[_0x211eae];return _0x4687da;};'use strict';var EventEmitter=require(_0x0b08('0x0'));var MailMessage=require('../../mysqldb')['db'][_0x0b08('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x0b08('0x2')](0x0);var events={'afterCreate':_0x0b08('0x3'),'afterUpdate':_0x0b08('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2d7349){return function(_0x4c81a4,_0x411711,_0x154d5d){MailMessageEvents[_0x0b08('0x5')](_0x2d7349+':'+_0x4c81a4['id'],_0x4c81a4);MailMessageEvents[_0x0b08('0x5')](_0x2d7349,_0x4c81a4);_0x154d5d(null);};}for(var e in events){if(events[_0x0b08('0x6')](e)){var event=events[e];MailMessage[_0x0b08('0x7')](e,emitEvent(event));}}module[_0x0b08('0x8')]=MailMessageEvents;
\ No newline at end of file
index 10f9d12..d4f6509 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7399=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','html-to-text','path','rimraf','../../config/environment','./mailMessage.attributes','exports','define','messageId','fti_mail_messages','plainBody','subject','FULLTEXT','body','fromString','models','toLowerCase','direction','secret','isNil','findOne','MailInteractionId','update','createdAt','catch','error'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7399,0xe8));var _0x9739=function(_0xc07b1e,_0x41559a){_0xc07b1e=_0xc07b1e-0x0;var _0x38bf62=_0x7399[_0xc07b1e];return _0x38bf62;};'use strict';var _=require(_0x9739('0x0'));var util=require(_0x9739('0x1'));var logger=require(_0x9739('0x2'))(_0x9739('0x3'));var moment=require(_0x9739('0x4'));var BPromise=require(_0x9739('0x5'));var rp=require(_0x9739('0x6'));var htmlToText=require(_0x9739('0x7'));var fs=require('fs');var path=require(_0x9739('0x8'));var rimraf=require(_0x9739('0x9'));var config=require(_0x9739('0xa'));var attributes=require(_0x9739('0xb'));module[_0x9739('0xc')]=function(_0x12f889,_0x1bfaf7){return _0x12f889[_0x9739('0xd')]('MailMessage',attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':_0x9739('0xe'),'fields':[_0x9739('0xe')]},{'name':_0x9739('0xf'),'fields':[_0x9739('0x10'),_0x9739('0x11')],'type':_0x9739('0x12')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x186131,_0x3d46d2,_0x1ad9a8){if(_0x186131[_0x9739('0x13')]){_0x186131[_0x9739('0x10')]=htmlToText[_0x9739('0x14')](_0x186131[_0x9739('0x13')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x1ad9a8(null,_0x3d46d2);},'afterCreate':function(_0x4711f9,_0x36b135,_0x2c5249){var _0x296fed=_0x12f889[_0x9739('0x15')];var _0x47daa1=_0x4711f9['get']({'plain':!![]});if(_0x47daa1['direction'][_0x9739('0x16')]()==='in'||_0x47daa1[_0x9739('0x17')]['toLowerCase']()==='out'&&!_0x47daa1[_0x9739('0x18')]&&!_[_0x9739('0x19')](_0x47daa1['UserId'])){_0x296fed['MailInteraction'][_0x9739('0x1a')]({'where':{'id':_0x47daa1[_0x9739('0x1b')]}})['then'](function(_0xb4f4d6){if(_0xb4f4d6){_0xb4f4d6[_0x9739('0x1c')]({'lastMsgAt':_0x47daa1[_0x9739('0x1d')],'lastMsgDirection':_0x47daa1[_0x9739('0x17')][_0x9739('0x16')]()});}})[_0x9739('0x1e')](function(_0x404d7b){console[_0x9739('0x1f')](_0x404d7b);});}_0x2c5249();}},'charset':'utf8mb4','collate':_0x9739('0x20')});};
\ No newline at end of file
+var _0x15f3=['fromString','models','get','direction','toLowerCase','out','isNil','UserId','MailInteraction','findOne','then','update','createdAt','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','html-to-text','path','rimraf','../../config/environment','./mailMessage.attributes','exports','mail_messages','messageId','FULLTEXT','body','plainBody'];(function(_0x38616d,_0x22fbe5){var _0x505626=function(_0x5b3a5a){while(--_0x5b3a5a){_0x38616d['push'](_0x38616d['shift']());}};_0x505626(++_0x22fbe5);}(_0x15f3,0x139));var _0x315f=function(_0x57a781,_0x4120b5){_0x57a781=_0x57a781-0x0;var _0x1e9670=_0x15f3[_0x57a781];return _0x1e9670;};'use strict';var _=require(_0x315f('0x0'));var util=require(_0x315f('0x1'));var logger=require(_0x315f('0x2'))(_0x315f('0x3'));var moment=require(_0x315f('0x4'));var BPromise=require('bluebird');var rp=require(_0x315f('0x5'));var htmlToText=require(_0x315f('0x6'));var fs=require('fs');var path=require(_0x315f('0x7'));var rimraf=require(_0x315f('0x8'));var config=require(_0x315f('0x9'));var attributes=require(_0x315f('0xa'));module[_0x315f('0xb')]=function(_0x59b86f,_0x5171fa){return _0x59b86f['define']('MailMessage',attributes,{'tableName':_0x315f('0xc'),'paranoid':![],'indexes':[{'name':_0x315f('0xd'),'fields':[_0x315f('0xd')]},{'name':'fti_mail_messages','fields':['plainBody','subject'],'type':_0x315f('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x3cb567,_0x5f77f2,_0x3e0ad4){if(_0x3cb567[_0x315f('0xf')]){_0x3cb567[_0x315f('0x10')]=htmlToText[_0x315f('0x11')](_0x3cb567['body'],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x3e0ad4(null,_0x5f77f2);},'afterCreate':function(_0x3356f5,_0xf352dd,_0x1ab481){var _0x34fadf=_0x59b86f[_0x315f('0x12')];var _0xca2dae=_0x3356f5[_0x315f('0x13')]({'plain':!![]});if(_0xca2dae[_0x315f('0x14')]['toLowerCase']()==='in'||_0xca2dae['direction'][_0x315f('0x15')]()===_0x315f('0x16')&&!_0xca2dae['secret']&&!_[_0x315f('0x17')](_0xca2dae[_0x315f('0x18')])){_0x34fadf[_0x315f('0x19')][_0x315f('0x1a')]({'where':{'id':_0xca2dae['MailInteractionId']}})[_0x315f('0x1b')](function(_0x1b50a7){if(_0x1b50a7){_0x1b50a7[_0x315f('0x1c')]({'lastMsgAt':_0xca2dae[_0x315f('0x1d')],'lastMsgDirection':_0xca2dae[_0x315f('0x14')][_0x315f('0x15')]()});}})['catch'](function(_0x290d8c){console[_0x315f('0x1e')](_0x290d8c);});}_0x1ab481();}},'charset':_0x315f('0x1f'),'collate':_0x315f('0x20')});};
\ No newline at end of file
index 13644b5..e8b1bcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','MailMessage','create','options','raw','CreateMailMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x22b498,_0x1109b6){var _0x6b44cd=function(_0x4b646e){while(--_0x4b646e){_0x22b498['push'](_0x22b498['shift']());}};_0x6b44cd(++_0x1109b6);}(_0x5f2f,0x73));var _0xf5f2=function(_0x388509,_0x1a282f){_0x388509=_0x388509-0x0;var _0x31c874=_0x5f2f[_0x388509];return _0x31c874;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});config[_0xf5f2('0xc')]=_[_0xf5f2('0xd')](config['redis'],{'host':_0xf5f2('0xe'),'port':0x18eb});var socket=require(_0xf5f2('0xf'))(new Redis(config[_0xf5f2('0xc')]));require('./mailMessage.socket')[_0xf5f2('0x10')](socket);function respondWithRpcPromise(_0x15dd7c,_0x218ae3,_0x4e0e6b){return new BPromise(function(_0x977a59,_0x4ebbbe){return client['request'](_0x15dd7c,_0x4e0e6b)[_0xf5f2('0x11')](function(_0x151aba){logger['info'](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));logger[_0xf5f2('0x14')](_0xf5f2('0x15'),_0x218ae3,_0xf5f2('0x13'),JSON[_0xf5f2('0x16')](_0x151aba));if(_0x151aba['error']){if(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x18')]===0x1f4){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')]['message']);return _0x4ebbbe(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);return _0x977a59(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}else{logger[_0xf5f2('0x1a')](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));_0x977a59(_0x151aba[_0xf5f2('0x1b')][_0xf5f2('0x19')]);}})[_0xf5f2('0x1c')](function(_0x3cf5ea){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x3cf5ea);_0x4ebbbe(_0x3cf5ea);});});}exports['CreateMailMessage']=function(_0x34706d){var _0x47101e=this;return new Promise(function(_0x49dac2,_0x47acfc){return db[_0xf5f2('0x1d')][_0xf5f2('0x1e')](_0x34706d['body'],{'raw':_0x34706d[_0xf5f2('0x1f')]?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x20')]===undefined?!![]:![]:!![]})[_0xf5f2('0x11')](function(_0x36f1cb){logger['info'](_0xf5f2('0x21'),_0x34706d);logger[_0xf5f2('0x14')](_0xf5f2('0x21'),_0x34706d,JSON[_0xf5f2('0x16')](_0x36f1cb));_0x49dac2(_0x36f1cb);})[_0xf5f2('0x1c')](function(_0x5bdf4a){logger['error'](_0xf5f2('0x21'),_0x5bdf4a[_0xf5f2('0x19')],_0x34706d);_0x47acfc(_0x47101e[_0xf5f2('0x17')](0x1f4,_0x5bdf4a[_0xf5f2('0x19')]));});});};
\ No newline at end of file
+var _0x0598=['CreateMailMessage','lodash','util','bluebird','../../mysqldb','../../config/utils','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','register','then','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','MailMessage,\x20%s,\x20%s','message','info','result','catch','MailMessage','create','body','raw'];(function(_0x1b70e3,_0x3a15b1){var _0x1452ab=function(_0x692883){while(--_0x692883){_0x1b70e3['push'](_0x1b70e3['shift']());}};_0x1452ab(++_0x3a15b1);}(_0x0598,0x92));var _0x8059=function(_0xf18d2d,_0x4d9d2a){_0xf18d2d=_0xf18d2d-0x0;var _0x2c97b6=_0x0598[_0xf18d2d];return _0x2c97b6;};'use strict';var _=require(_0x8059('0x0'));var util=require(_0x8059('0x1'));var moment=require('moment');var BPromise=require(_0x8059('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8059('0x3'))['db'];var utils=require(_0x8059('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x8059('0x5'));var client=jayson[_0x8059('0x6')]['http']({'port':0x232a});config['redis']=_[_0x8059('0x7')](config[_0x8059('0x8')],{'host':_0x8059('0x9'),'port':0x18eb});var socket=require(_0x8059('0xa'))(new Redis(config['redis']));require('./mailMessage.socket')[_0x8059('0xb')](socket);function respondWithRpcPromise(_0x1bf5fd,_0x336f85,_0x5097d6){return new BPromise(function(_0x283b63,_0x52a60d){return client['request'](_0x1bf5fd,_0x5097d6)[_0x8059('0xc')](function(_0x4109a9){logger['info']('MailMessage,\x20%s,\x20%s',_0x336f85,'request\x20sent');logger[_0x8059('0xd')](_0x8059('0xe'),_0x336f85,_0x8059('0xf'),JSON[_0x8059('0x10')](_0x4109a9));if(_0x4109a9[_0x8059('0x11')]){if(_0x4109a9['error'][_0x8059('0x12')]===0x1f4){logger['error'](_0x8059('0x13'),_0x336f85,_0x4109a9['error'][_0x8059('0x14')]);return _0x52a60d(_0x4109a9[_0x8059('0x11')][_0x8059('0x14')]);}logger['error']('MailMessage,\x20%s,\x20%s',_0x336f85,_0x4109a9['error'][_0x8059('0x14')]);return _0x283b63(_0x4109a9[_0x8059('0x11')][_0x8059('0x14')]);}else{logger[_0x8059('0x15')](_0x8059('0x13'),_0x336f85,'request\x20sent');_0x283b63(_0x4109a9[_0x8059('0x16')][_0x8059('0x14')]);}})[_0x8059('0x17')](function(_0x1c4566){logger['error'](_0x8059('0x13'),_0x336f85,_0x1c4566);_0x52a60d(_0x1c4566);});});}exports['CreateMailMessage']=function(_0x113f42){var _0x493825=this;return new Promise(function(_0x1857c1,_0x56d794){return db[_0x8059('0x18')][_0x8059('0x19')](_0x113f42[_0x8059('0x1a')],{'raw':_0x113f42['options']?_0x113f42['options'][_0x8059('0x1b')]===undefined?!![]:![]:!![]})[_0x8059('0xc')](function(_0x32aeda){logger[_0x8059('0x15')]('CreateMailMessage',_0x113f42);logger[_0x8059('0xd')](_0x8059('0x1c'),_0x113f42,JSON[_0x8059('0x10')](_0x32aeda));_0x1857c1(_0x32aeda);})['catch'](function(_0xe9a72d){logger[_0x8059('0x11')](_0x8059('0x1c'),_0xe9a72d[_0x8059('0x14')],_0x113f42);_0x56d794(_0x493825['error'](0x1f4,_0xe9a72d[_0x8059('0x14')]));});});};
\ No newline at end of file
index 9246ccf..4b5a6a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3a6=['mailMessage:','emit','removeListener','register'];(function(_0x462ffa,_0x344b4f){var _0x2cd791=function(_0x8cc174){while(--_0x8cc174){_0x462ffa['push'](_0x462ffa['shift']());}};_0x2cd791(++_0x344b4f);}(_0xf3a6,0x1e9));var _0x6f3a=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xf3a6[_0x1caf6a];return _0x1bf493;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=['save','remove','update'];function createListener(_0x2df654,_0x30c738){return function(_0x873f30){_0x30c738[_0x6f3a('0x0')](_0x2df654,_0x873f30);};}function removeListener(_0xb74b5c,_0x3546df){return function(){MailMessageEvents[_0x6f3a('0x1')](_0xb74b5c,_0x3546df);};}exports[_0x6f3a('0x2')]=function(_0x3ce439){for(var _0x204a8e=0x0,_0x534121=events['length'];_0x204a8e<_0x534121;_0x204a8e++){var _0x521893=events[_0x204a8e];var _0x3d93df=createListener(_0x6f3a('0x3')+_0x521893,_0x3ce439);MailMessageEvents['on'](_0x521893,_0x3d93df);}};
\ No newline at end of file
+var _0xbdb8=['removeListener','register','length','mailMessage:','remove','update','emit'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0xbdb8,0x89));var _0x8bdb=function(_0x38a155,_0x2aa026){_0x38a155=_0x38a155-0x0;var _0x269403=_0xbdb8[_0x38a155];return _0x269403;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=['save',_0x8bdb('0x0'),_0x8bdb('0x1')];function createListener(_0x5a3905,_0x40f194){return function(_0xf896a4){_0x40f194[_0x8bdb('0x2')](_0x5a3905,_0xf896a4);};}function removeListener(_0x2fabbc,_0x5c6654){return function(){MailMessageEvents[_0x8bdb('0x3')](_0x2fabbc,_0x5c6654);};}exports[_0x8bdb('0x4')]=function(_0x1a7a82){for(var _0x40d1ad=0x0,_0x1e8d31=events[_0x8bdb('0x5')];_0x40d1ad<_0x1e8d31;_0x40d1ad++){var _0x18a084=events[_0x40d1ad];var _0x160429=createListener(_0x8bdb('0x6')+_0x18a084,_0x1a7a82);MailMessageEvents['on'](_0x18a084,_0x160429);}};
\ No newline at end of file
index edd8d8a..5ec46a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c65=['Router','../../components/auth/service','../../config/environment','get','isAuthenticated','describe','/:id','/:id/members','getTeams','/:id/users','getAgents','create','/:id/teams','addTeams','post','addAgents','update','destroy','delete','removeTeams','exports','util','connect-timeout','express'];(function(_0x3b7f27,_0x358280){var _0x46cbb9=function(_0x367adb){while(--_0x367adb){_0x3b7f27['push'](_0x3b7f27['shift']());}};_0x46cbb9(++_0x358280);}(_0x7c65,0x75));var _0x57c6=function(_0x470ea1,_0x5588f9){_0x470ea1=_0x470ea1-0x0;var _0x28a241=_0x7c65[_0x470ea1];return _0x28a241;};'use strict';var multer=require('multer');var util=require(_0x57c6('0x0'));var path=require('path');var timeout=require(_0x57c6('0x1'));var express=require(_0x57c6('0x2'));var router=express[_0x57c6('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x57c6('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x57c6('0x5'));var controller=require('./mailQueue.controller');router[_0x57c6('0x6')]('/',auth[_0x57c6('0x7')](),controller['index']);router[_0x57c6('0x6')]('/describe',auth[_0x57c6('0x7')](),controller[_0x57c6('0x8')]);router[_0x57c6('0x6')](_0x57c6('0x9'),auth[_0x57c6('0x7')](),controller['show']);router[_0x57c6('0x6')](_0x57c6('0xa'),auth[_0x57c6('0x7')](),controller['getMembers']);router[_0x57c6('0x6')]('/:id/teams',auth[_0x57c6('0x7')](),controller[_0x57c6('0xb')]);router['get'](_0x57c6('0xc'),auth[_0x57c6('0x7')](),controller[_0x57c6('0xd')]);router['post']('/',auth[_0x57c6('0x7')](),controller[_0x57c6('0xe')]);router['post'](_0x57c6('0xf'),auth[_0x57c6('0x7')](),controller[_0x57c6('0x10')]);router[_0x57c6('0x11')]('/:id/users',auth[_0x57c6('0x7')](),controller[_0x57c6('0x12')]);router['put'](_0x57c6('0x9'),auth[_0x57c6('0x7')](),controller[_0x57c6('0x13')]);router['delete'](_0x57c6('0x9'),auth['isAuthenticated'](),controller[_0x57c6('0x14')]);router[_0x57c6('0x15')](_0x57c6('0xf'),auth[_0x57c6('0x7')](),controller[_0x57c6('0x16')]);router[_0x57c6('0x15')](_0x57c6('0xc'),auth[_0x57c6('0x7')](),controller['removeAgents']);module[_0x57c6('0x17')]=router;
\ No newline at end of file
+var _0x37b8=['express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','create','post','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout'];(function(_0x42bafd,_0x3f0fe3){var _0x2ed705=function(_0x4311ea){while(--_0x4311ea){_0x42bafd['push'](_0x42bafd['shift']());}};_0x2ed705(++_0x3f0fe3);}(_0x37b8,0x13b));var _0x837b=function(_0x181fba,_0x3e23f4){_0x181fba=_0x181fba-0x0;var _0x509d8d=_0x37b8[_0x181fba];return _0x509d8d;};'use strict';var multer=require(_0x837b('0x0'));var util=require(_0x837b('0x1'));var path=require(_0x837b('0x2'));var timeout=require(_0x837b('0x3'));var express=require(_0x837b('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x837b('0x5'));var interaction=require(_0x837b('0x6'));var config=require(_0x837b('0x7'));var controller=require('./mailQueue.controller');router[_0x837b('0x8')]('/',auth[_0x837b('0x9')](),controller[_0x837b('0xa')]);router['get'](_0x837b('0xb'),auth['isAuthenticated'](),controller[_0x837b('0xc')]);router[_0x837b('0x8')](_0x837b('0xd'),auth[_0x837b('0x9')](),controller['show']);router[_0x837b('0x8')](_0x837b('0xe'),auth['isAuthenticated'](),controller[_0x837b('0xf')]);router[_0x837b('0x8')](_0x837b('0x10'),auth['isAuthenticated'](),controller['getTeams']);router[_0x837b('0x8')](_0x837b('0x11'),auth[_0x837b('0x9')](),controller[_0x837b('0x12')]);router['post']('/',auth[_0x837b('0x9')](),controller[_0x837b('0x13')]);router[_0x837b('0x14')](_0x837b('0x10'),auth['isAuthenticated'](),controller['addTeams']);router[_0x837b('0x14')]('/:id/users',auth[_0x837b('0x9')](),controller[_0x837b('0x15')]);router[_0x837b('0x16')](_0x837b('0xd'),auth[_0x837b('0x9')](),controller[_0x837b('0x17')]);router[_0x837b('0x18')](_0x837b('0xd'),auth[_0x837b('0x9')](),controller[_0x837b('0x19')]);router[_0x837b('0x18')]('/:id/teams',auth[_0x837b('0x9')](),controller[_0x837b('0x1a')]);router[_0x837b('0x18')](_0x837b('0x11'),auth[_0x837b('0x9')](),controller[_0x837b('0x1b')]);module[_0x837b('0x1c')]=router;
\ No newline at end of file
index d100650..d013342 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33a4=['ENUM','beepall','roundrobin','sequelize','exports','STRING','name','INTEGER'];(function(_0x59d3d8,_0x3a6b0d){var _0x20923a=function(_0x51f325){while(--_0x51f325){_0x59d3d8['push'](_0x59d3d8['shift']());}};_0x20923a(++_0x3a6b0d);}(_0x33a4,0x6b));var _0x433a=function(_0x59c65c,_0x5b4130){_0x59c65c=_0x59c65c-0x0;var _0x2e59eb=_0x33a4[_0x59c65c];return _0x2e59eb;};'use strict';var Sequelize=require(_0x433a('0x0'));module[_0x433a('0x1')]={'name':{'type':Sequelize[_0x433a('0x2')],'unique':_0x433a('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x433a('0x2')]},'timeout':{'type':Sequelize[_0x433a('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x433a('0x5')]('rrmemory',_0x433a('0x6'),_0x433a('0x7'))}};
\ No newline at end of file
+var _0xd15b=['STRING','INTEGER','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x4dd7c2,_0x5e86af){var _0x48ae97=function(_0x477727){while(--_0x477727){_0x4dd7c2['push'](_0x4dd7c2['shift']());}};_0x48ae97(++_0x5e86af);}(_0xd15b,0x140));var _0xbd15=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xd15b[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xbd15('0x0'));module[_0xbd15('0x1')]={'name':{'type':Sequelize[_0xbd15('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xbd15('0x2')]},'timeout':{'type':Sequelize[_0xbd15('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xbd15('0x4'),_0xbd15('0x5'),_0xbd15('0x6'))}};
\ No newline at end of file
index 3f2847f..4c4f092 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4b1=['ids','User','Agents','online','voicePause','interface','transaction','forEach','emit','userMailQueue:save','removeTeams','select','tq.TeamId','from','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','sequelize','toString','QueryTypes','every','TeamId','includes','all','union','compact','removeAgents','addAgents','omit','spread','isArray','userMailQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','get','UserProfileResource','destroy','error','stack','name','send','map','MailQueue','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','pick','filter','where','merge','VIRTUAL','options','includeAll','rows','catch','params','keys','rawAttributes','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','describe','getMembers','findOne','UserMailQueue','sort','MailQueueId','findAll','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','%s/%s','SIP','Team','getTeams','addTeams'];(function(_0x496fe4,_0x272d02){var _0x52729b=function(_0x581515){while(--_0x581515){_0x496fe4['push'](_0x496fe4['shift']());}};_0x52729b(++_0x272d02);}(_0xa4b1,0x133));var _0x1a4b=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa4b1[_0x3054be];return _0x3df150;};'use strict';var emlformat=require(_0x1a4b('0x0'));var rimraf=require(_0x1a4b('0x1'));var zipdir=require(_0x1a4b('0x2'));var jsonpatch=require(_0x1a4b('0x3'));var rp=require(_0x1a4b('0x4'));var moment=require('moment');var BPromise=require(_0x1a4b('0x5'));var Mustache=require(_0x1a4b('0x6'));var util=require('util');var path=require(_0x1a4b('0x7'));var sox=require(_0x1a4b('0x8'));var csv=require(_0x1a4b('0x9'));var ejs=require(_0x1a4b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1a4b('0xb'));var squel=require(_0x1a4b('0xc'));var crypto=require(_0x1a4b('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x1a4b('0xe'));var Papa=require('papaparse');var Redis=require(_0x1a4b('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x1a4b('0x10'));var hardwareService=require(_0x1a4b('0x11'));var logger=require('../../config/logger')(_0x1a4b('0x12'));var utils=require(_0x1a4b('0x13'));var config=require(_0x1a4b('0x14'));var licenseUtil=require(_0x1a4b('0x15'));var db=require(_0x1a4b('0x16'))['db'];config[_0x1a4b('0x17')]=_[_0x1a4b('0x18')](config[_0x1a4b('0x17')],{'host':_0x1a4b('0x19'),'port':0x18eb});var socket=require(_0x1a4b('0x1a'))(new Redis(config[_0x1a4b('0x17')]));require(_0x1a4b('0x1b'))[_0x1a4b('0x1c')](socket);function respondWithStatusCode(_0x3c14a6,_0x528416){_0x528416=_0x528416||0xcc;return function(_0x4d135c){if(_0x4d135c){return _0x3c14a6[_0x1a4b('0x1d')](_0x528416);}return _0x3c14a6['status'](_0x528416)[_0x1a4b('0x1e')]();};}function respondWithResult(_0x48bd3c,_0x15e19f){_0x15e19f=_0x15e19f||0xc8;return function(_0x3c6865){if(_0x3c6865){return _0x48bd3c[_0x1a4b('0x1f')](_0x15e19f)[_0x1a4b('0x20')](_0x3c6865);}};}function respondWithFilteredResult(_0x3a5df0,_0x14dd20){return function(_0x151026){if(_0x151026){var _0x29fd38=typeof _0x14dd20[_0x1a4b('0x21')]===_0x1a4b('0x22')&&typeof _0x14dd20[_0x1a4b('0x23')]===_0x1a4b('0x22');var _0x243fa7=_0x151026['count'];var _0x2dffb5=_0x29fd38?0x0:_0x14dd20[_0x1a4b('0x21')];var _0x1dca05=_0x29fd38?_0x151026[_0x1a4b('0x24')]:_0x14dd20[_0x1a4b('0x21')]+_0x14dd20[_0x1a4b('0x23')];var _0x5610e3;if(_0x1dca05>=_0x243fa7){_0x1dca05=_0x243fa7;_0x5610e3=0xc8;}else{_0x5610e3=0xce;}_0x3a5df0[_0x1a4b('0x1f')](_0x5610e3);return _0x3a5df0['set'](_0x1a4b('0x25'),_0x2dffb5+'-'+_0x1dca05+'/'+_0x243fa7)[_0x1a4b('0x20')](_0x151026);}return null;};}function patchUpdates(_0x2b6448){return function(_0xe8a3bc){try{jsonpatch[_0x1a4b('0x26')](_0xe8a3bc,_0x2b6448,!![]);}catch(_0x5a4569){return BPromise[_0x1a4b('0x27')](_0x5a4569);}return _0xe8a3bc['save']();};}function saveUpdates(_0x390155,_0x1164ea){return function(_0x2641e8){if(_0x2641e8){return _0x2641e8[_0x1a4b('0x28')](_0x390155)[_0x1a4b('0x29')](function(_0x213bbb){return _0x213bbb;});}return null;};}function removeEntity(_0x4df4eb,_0xd021cb){return function(_0x240dc9){if(_0x240dc9){return _0x240dc9['destroy']()[_0x1a4b('0x29')](function(){var _0x14f68e=_0x240dc9[_0x1a4b('0x2a')]({'plain':!![]});var _0x457000='MailQueues';return db[_0x1a4b('0x2b')][_0x1a4b('0x2c')]({'where':{'type':_0x457000,'resourceId':_0x14f68e['id']}})[_0x1a4b('0x29')](function(){return _0x240dc9;});})[_0x1a4b('0x29')](function(){_0x4df4eb['status'](0xcc)[_0x1a4b('0x1e')]();});}};}function handleEntityNotFound(_0xca4ba7,_0x392576){return function(_0x5d7754){if(!_0x5d7754){_0xca4ba7['sendStatus'](0x194);}return _0x5d7754;};}function handleError(_0x5c2d4a,_0x2544a5){_0x2544a5=_0x2544a5||0x1f4;return function(_0x257f74){logger[_0x1a4b('0x2d')](_0x257f74[_0x1a4b('0x2e')]);if(_0x257f74[_0x1a4b('0x2f')]){delete _0x257f74['name'];}_0x5c2d4a[_0x1a4b('0x1f')](_0x2544a5)[_0x1a4b('0x30')](_0x257f74);};}exports['index']=function(_0x1e9f87,_0x44fef0){var _0x26a5eb={},_0x51b035={},_0x1f06f5={'count':0x0,'rows':[]};var _0x1ae15c=_[_0x1a4b('0x31')](db[_0x1a4b('0x32')]['rawAttributes'],function(_0x5deb68){return{'name':_0x5deb68['fieldName'],'type':_0x5deb68['type'][_0x1a4b('0x33')]};});_0x51b035[_0x1a4b('0x34')]=_[_0x1a4b('0x31')](_0x1ae15c,_0x1a4b('0x2f'));_0x51b035[_0x1a4b('0x35')]=_['keys'](_0x1e9f87['query']);_0x51b035[_0x1a4b('0x36')]=_[_0x1a4b('0x37')](_0x51b035['model'],_0x51b035['query']);_0x26a5eb[_0x1a4b('0x38')]=_[_0x1a4b('0x37')](_0x51b035[_0x1a4b('0x34')],qs[_0x1a4b('0x39')](_0x1e9f87['query']['fields']));_0x26a5eb[_0x1a4b('0x38')]=_0x26a5eb['attributes']['length']?_0x26a5eb[_0x1a4b('0x38')]:_0x51b035['model'];if(!_0x1e9f87['query'][_0x1a4b('0x3a')](_0x1a4b('0x3b'))){_0x26a5eb[_0x1a4b('0x23')]=qs[_0x1a4b('0x23')](_0x1e9f87['query'][_0x1a4b('0x23')]);_0x26a5eb[_0x1a4b('0x21')]=qs[_0x1a4b('0x21')](_0x1e9f87[_0x1a4b('0x35')]['offset']);}_0x26a5eb['order']=qs['sort'](_0x1e9f87['query']['sort']);_0x26a5eb['where']=qs[_0x1a4b('0x36')](_[_0x1a4b('0x3c')](_0x1e9f87['query'],_0x51b035[_0x1a4b('0x36')]),_0x1ae15c);if(_0x1e9f87[_0x1a4b('0x35')][_0x1a4b('0x3d')]){_0x26a5eb[_0x1a4b('0x3e')]=_[_0x1a4b('0x3f')](_0x26a5eb[_0x1a4b('0x3e')],{'$or':_[_0x1a4b('0x31')](_0x1ae15c,function(_0x234432){if(_0x234432['type']!==_0x1a4b('0x40')){var _0x20ce6e={};_0x20ce6e[_0x234432[_0x1a4b('0x2f')]]={'$like':'%'+_0x1e9f87[_0x1a4b('0x35')][_0x1a4b('0x3d')]+'%'};return _0x20ce6e;}})});}_0x26a5eb=_[_0x1a4b('0x3f')]({},_0x26a5eb,_0x1e9f87[_0x1a4b('0x41')]);var _0x37c7f1={'where':_0x26a5eb['where']};return db[_0x1a4b('0x32')]['count'](_0x37c7f1)['then'](function(_0x422771){_0x1f06f5['count']=_0x422771;if(_0x1e9f87[_0x1a4b('0x35')][_0x1a4b('0x42')]){_0x26a5eb['include']=[{'all':!![]}];}return db[_0x1a4b('0x32')]['findAll'](_0x26a5eb);})[_0x1a4b('0x29')](function(_0x37036a){_0x1f06f5[_0x1a4b('0x43')]=_0x37036a;return _0x1f06f5;})[_0x1a4b('0x29')](respondWithFilteredResult(_0x44fef0,_0x26a5eb))[_0x1a4b('0x44')](handleError(_0x44fef0,null));};exports['show']=function(_0x106794,_0x3481e0){var _0x23f121={'raw':!![],'where':{'id':_0x106794[_0x1a4b('0x45')]['id']}},_0x3acffe={};_0x3acffe[_0x1a4b('0x34')]=_[_0x1a4b('0x46')](db['MailQueue'][_0x1a4b('0x47')]);_0x3acffe[_0x1a4b('0x35')]=_['keys'](_0x106794[_0x1a4b('0x35')]);_0x3acffe[_0x1a4b('0x36')]=_[_0x1a4b('0x37')](_0x3acffe['model'],_0x3acffe[_0x1a4b('0x35')]);_0x23f121[_0x1a4b('0x38')]=_[_0x1a4b('0x37')](_0x3acffe[_0x1a4b('0x34')],qs[_0x1a4b('0x39')](_0x106794[_0x1a4b('0x35')][_0x1a4b('0x39')]));_0x23f121['attributes']=_0x23f121[_0x1a4b('0x38')][_0x1a4b('0x48')]?_0x23f121['attributes']:_0x3acffe[_0x1a4b('0x34')];if(_0x106794[_0x1a4b('0x35')][_0x1a4b('0x42')]){_0x23f121['include']=[{'all':!![]}];}_0x23f121=_[_0x1a4b('0x3f')]({},_0x23f121,_0x106794[_0x1a4b('0x41')]);return db[_0x1a4b('0x32')][_0x1a4b('0x49')](_0x23f121)[_0x1a4b('0x29')](handleEntityNotFound(_0x3481e0,null))[_0x1a4b('0x29')](respondWithResult(_0x3481e0,null))[_0x1a4b('0x44')](handleError(_0x3481e0,null));};exports[_0x1a4b('0x4a')]=function(_0x55a84a,_0x3897f6){return db[_0x1a4b('0x32')][_0x1a4b('0x4a')](_0x55a84a[_0x1a4b('0x4b')],{})[_0x1a4b('0x29')](function(_0x4e34a4){var _0x2a597e=_0x55a84a[_0x1a4b('0x4c')]['get']({'plain':!![]});if(!_0x2a597e)throw new Error(_0x1a4b('0x4d'));if(_0x2a597e['role']===_0x1a4b('0x4c')){var _0x363d45=_0x4e34a4[_0x1a4b('0x2a')]({'plain':!![]});var _0xb2ae34='MailQueues';return db['UserProfileSection'][_0x1a4b('0x49')]({'where':{'name':_0xb2ae34,'userProfileId':_0x2a597e[_0x1a4b('0x4e')]},'raw':!![]})[_0x1a4b('0x29')](function(_0x3ce473){if(_0x3ce473&&_0x3ce473[_0x1a4b('0x4f')]===0x0){return db[_0x1a4b('0x2b')][_0x1a4b('0x4a')]({'name':_0x363d45[_0x1a4b('0x2f')],'resourceId':_0x363d45['id'],'type':_0x3ce473['name'],'sectionId':_0x3ce473['id']},{})[_0x1a4b('0x29')](function(){return _0x4e34a4;});}else{return _0x4e34a4;}})['catch'](function(_0x5622bd){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5622bd);throw _0x5622bd;});}return _0x4e34a4;})[_0x1a4b('0x29')](respondWithResult(_0x3897f6,0xc9))['catch'](handleError(_0x3897f6,null));};exports[_0x1a4b('0x28')]=function(_0x2d5ec7,_0x400c8a){if(_0x2d5ec7[_0x1a4b('0x4b')]['id']){delete _0x2d5ec7[_0x1a4b('0x4b')]['id'];}return db['MailQueue']['find']({'where':{'id':_0x2d5ec7['params']['id']}})[_0x1a4b('0x29')](handleEntityNotFound(_0x400c8a,null))['then'](saveUpdates(_0x2d5ec7[_0x1a4b('0x4b')],null))[_0x1a4b('0x29')](respondWithResult(_0x400c8a,null))[_0x1a4b('0x44')](handleError(_0x400c8a,null));};exports[_0x1a4b('0x2c')]=function(_0x3d0384,_0x184822){return db[_0x1a4b('0x32')][_0x1a4b('0x49')]({'where':{'id':_0x3d0384[_0x1a4b('0x45')]['id']}})['then'](handleEntityNotFound(_0x184822,null))[_0x1a4b('0x29')](removeEntity(_0x184822,null))[_0x1a4b('0x44')](handleError(_0x184822,null));};exports[_0x1a4b('0x50')]=function(_0x5ac518,_0x16a247){return db['MailQueue']['describe']()[_0x1a4b('0x29')](respondWithResult(_0x16a247,null))[_0x1a4b('0x44')](handleError(_0x16a247,null));};exports[_0x1a4b('0x51')]=function(_0x5d270a,_0x3d7a9d,_0x442e56){var _0x42862c={'raw':!![],'where':{}},_0x3476ae={},_0x1b975b;return db['MailQueue'][_0x1a4b('0x52')]({'where':{'id':_0x5d270a['params']['id']}})[_0x1a4b('0x29')](handleEntityNotFound(_0x3d7a9d,null))[_0x1a4b('0x29')](function(_0x28814f){if(_0x28814f){_0x1b975b=_0x28814f['get']({'plain':!![]});_0x3476ae[_0x1a4b('0x34')]=_[_0x1a4b('0x46')](db[_0x1a4b('0x53')]['rawAttributes']);_0x3476ae['query']=_['keys'](_0x5d270a['query']);_0x3476ae[_0x1a4b('0x36')]=_[_0x1a4b('0x37')](_0x3476ae[_0x1a4b('0x34')],_0x3476ae[_0x1a4b('0x35')]);_0x42862c['attributes']=_[_0x1a4b('0x37')](_0x3476ae[_0x1a4b('0x34')],qs['fields'](_0x5d270a[_0x1a4b('0x35')][_0x1a4b('0x39')]));_0x42862c[_0x1a4b('0x38')]=_0x42862c['attributes'][_0x1a4b('0x48')]?_0x42862c['attributes']:_0x3476ae[_0x1a4b('0x34')];if(!_0x5d270a[_0x1a4b('0x35')][_0x1a4b('0x3a')](_0x1a4b('0x3b'))){_0x42862c[_0x1a4b('0x23')]=qs[_0x1a4b('0x23')](_0x5d270a[_0x1a4b('0x35')]['limit']);_0x42862c[_0x1a4b('0x21')]=qs[_0x1a4b('0x21')](_0x5d270a[_0x1a4b('0x35')]['offset']);}_0x42862c['order']=qs[_0x1a4b('0x54')](_0x5d270a[_0x1a4b('0x35')][_0x1a4b('0x54')]);_0x42862c[_0x1a4b('0x3e')]=qs[_0x1a4b('0x36')](_['pick'](_0x5d270a['query'],_0x3476ae[_0x1a4b('0x36')]));_0x42862c['where'][_0x1a4b('0x55')]=_0x28814f['id'];if(_0x5d270a[_0x1a4b('0x35')][_0x1a4b('0x3d')]){_0x42862c[_0x1a4b('0x3e')]=_[_0x1a4b('0x3f')](_0x42862c[_0x1a4b('0x3e')],{'$or':_[_0x1a4b('0x31')](_0x42862c['attributes'],function(_0x176b3c){var _0x53e0b2={};_0x53e0b2[_0x176b3c]={'$like':'%'+_0x5d270a['query'][_0x1a4b('0x3d')]+'%'};return _0x53e0b2;})});}_0x42862c=_[_0x1a4b('0x3f')]({},_0x42862c,_0x5d270a['options']);return db['UserMailQueue'][_0x1a4b('0x56')](_0x42862c);}})['then'](function(_0x5ef704){if(_0x5ef704){return db['User'][_0x1a4b('0x57')]({'where':{'id':_['map'](_0x5ef704,_0x1a4b('0x58')),'role':_0x1a4b('0x59')},'attributes':['id','name',_0x1a4b('0x5a'),_0x1a4b('0x5b'),_0x1a4b('0x5c')]});}})[_0x1a4b('0x29')](function(_0x476b93){if(_0x476b93){return{'count':_0x476b93[_0x1a4b('0x24')],'rows':_[_0x1a4b('0x31')](_0x476b93['rows'],function(_0xe86d5d){return{'membername':_0xe86d5d[_0x1a4b('0x2f')],'UserId':_0xe86d5d['id'],'queue_name':_0x1b975b[_0x1a4b('0x2f')],'MailQueueId':_0x1b975b['id'],'interface':util['format'](_0x1a4b('0x5d'),_0x1a4b('0x5e'),_0xe86d5d[_0x1a4b('0x2f')]),'penalty':0x0,'paused':_0xe86d5d[_0x1a4b('0x5a')],'createdAt':_0xe86d5d[_0x1a4b('0x5c')],'updatedAt':_0xe86d5d[_0x1a4b('0x5b')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x1a4b('0x29')](respondWithFilteredResult(_0x3d7a9d,_0x42862c))['catch'](handleError(_0x3d7a9d,null));};exports['getTeams']=function(_0x2b7fa9,_0x3888ff,_0x4ed7a9){var _0x2d5100={};var _0x563456={};var _0x4341a3;var _0x47e787;return db[_0x1a4b('0x32')][_0x1a4b('0x52')]({'where':{'id':_0x2b7fa9['params']['id']}})['then'](handleEntityNotFound(_0x3888ff,null))['then'](function(_0x2e7daa){if(_0x2e7daa){_0x4341a3=_0x2e7daa;_0x563456[_0x1a4b('0x34')]=_[_0x1a4b('0x46')](db[_0x1a4b('0x5f')][_0x1a4b('0x47')]);_0x563456[_0x1a4b('0x35')]=_[_0x1a4b('0x46')](_0x2b7fa9['query']);_0x563456[_0x1a4b('0x36')]=_['intersection'](_0x563456[_0x1a4b('0x34')],_0x563456['query']);_0x2d5100['attributes']=_[_0x1a4b('0x37')](_0x563456[_0x1a4b('0x34')],qs[_0x1a4b('0x39')](_0x2b7fa9[_0x1a4b('0x35')]['fields']));_0x2d5100[_0x1a4b('0x38')]=_0x2d5100[_0x1a4b('0x38')][_0x1a4b('0x48')]?_0x2d5100['attributes']:_0x563456['model'];_0x2d5100['order']=qs[_0x1a4b('0x54')](_0x2b7fa9[_0x1a4b('0x35')]['sort']);_0x2d5100[_0x1a4b('0x3e')]=qs[_0x1a4b('0x36')](_[_0x1a4b('0x3c')](_0x2b7fa9[_0x1a4b('0x35')],_0x563456['filters']));if(_0x2b7fa9[_0x1a4b('0x35')]['filter']){_0x2d5100[_0x1a4b('0x3e')]=_[_0x1a4b('0x3f')](_0x2d5100[_0x1a4b('0x3e')],{'$or':_['map'](_0x2d5100[_0x1a4b('0x38')],function(_0x1eba43){var _0x3d7f6c={};_0x3d7f6c[_0x1eba43]={'$like':'%'+_0x2b7fa9[_0x1a4b('0x35')]['filter']+'%'};return _0x3d7f6c;})});}_0x2d5100=_[_0x1a4b('0x3f')]({},_0x2d5100,_0x2b7fa9[_0x1a4b('0x41')]);return _0x4341a3['getTeams'](_0x2d5100);}})[_0x1a4b('0x29')](function(_0xc0620b){if(_0xc0620b){_0x47e787=_0xc0620b[_0x1a4b('0x48')];if(!_0x2b7fa9['query'][_0x1a4b('0x3a')](_0x1a4b('0x3b'))){_0x2d5100['limit']=qs[_0x1a4b('0x23')](_0x2b7fa9['query']['limit']);_0x2d5100[_0x1a4b('0x21')]=qs[_0x1a4b('0x21')](_0x2b7fa9[_0x1a4b('0x35')][_0x1a4b('0x21')]);}return _0x4341a3[_0x1a4b('0x60')](_0x2d5100);}})[_0x1a4b('0x29')](function(_0x17ac45){if(_0x17ac45){return _0x17ac45?{'count':_0x47e787,'rows':_0x17ac45}:null;}})[_0x1a4b('0x29')](respondWithResult(_0x3888ff,null))[_0x1a4b('0x44')](handleError(_0x3888ff,null));};exports[_0x1a4b('0x61')]=function(_0x380732,_0x996c74,_0x26191d){var _0x213594=_0x380732[_0x1a4b('0x4b')][_0x1a4b('0x62')];return db['Team'][_0x1a4b('0x56')]({'where':{'id':_0x213594},'attributes':['id'],'include':[{'model':db[_0x1a4b('0x63')],'as':_0x1a4b('0x64'),'attributes':['id',_0x1a4b('0x2f'),_0x1a4b('0x65'),_0x1a4b('0x66'),_0x1a4b('0x67')],'raw':!![]}]})[_0x1a4b('0x29')](function(_0xbf4794){if(_0xbf4794){var _0x3341dc=_['flatMap'](_0xbf4794,function(_0xd84742){var _0x44fc6e=_0xd84742[_0x1a4b('0x2a')]({'plain':!![]});return _0x44fc6e[_0x1a4b('0x64')];});return db['MailQueue']['find']({'where':{'id':_0x380732[_0x1a4b('0x45')]['id']}})[_0x1a4b('0x29')](function(_0x4dbd80){return db['sequelize'][_0x1a4b('0x68')](function(_0x533638){return _0x4dbd80['addTeams'](_0x213594,{'transaction':_0x533638})[_0x1a4b('0x29')](function(){return BPromise['each'](_0x3341dc,function(_0x26bddb){return db['UserMailQueue']['findOrCreate']({'where':{'UserId':_0x26bddb['id'],'MailQueueId':_0x380732['params']['id']},'transaction':_0x533638});});})[_0x1a4b('0x29')](function(){_0x3341dc[_0x1a4b('0x69')](function(_0x23719b){socket[_0x1a4b('0x6a')](_0x1a4b('0x6b'),{'UserId':_0x23719b['id'],'MailQueueId':_0x4dbd80['id']});});});});});}})[_0x1a4b('0x29')](respondWithStatusCode(_0x996c74,null))['catch'](handleError(_0x996c74,null));};exports[_0x1a4b('0x6c')]=function(_0x4a4fd0,_0x50382d,_0x2b207c){return db['Team'][_0x1a4b('0x56')]({'where':{'id':_0x4a4fd0[_0x1a4b('0x35')][_0x1a4b('0x62')]},'attributes':['id'],'include':[{'model':db[_0x1a4b('0x63')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x1a4b('0x29')](handleEntityNotFound(_0x50382d,null))[_0x1a4b('0x29')](function(_0x4a950b){var _0x3a3507=_[_0x1a4b('0x31')](_0x4a950b,'id');var _0x148520=[];var _0xabe1ff=[];var _0x18bcd3=squel[_0x1a4b('0x6d')]();_0x18bcd3['field'](_0x1a4b('0x6e'))[_0x1a4b('0x6f')](_0x1a4b('0x70'),'tq')[_0x1a4b('0x71')](_0x1a4b('0x72'),'ut',_0x1a4b('0x73'))[_0x1a4b('0x3e')](_0x1a4b('0x74'),_0x4a4fd0['params']['id']);for(var _0x48e68c=0x0;_0x48e68c<_0x4a950b[_0x1a4b('0x48')];_0x48e68c+=0x1){let _0xa962bc=_0x4a950b[_0x48e68c];for(var _0xcb9008=0x0;_0xcb9008<_0xa962bc[_0x1a4b('0x64')][_0x1a4b('0x48')];_0xcb9008+=0x1){let _0x5c3ad5=_0xa962bc[_0x1a4b('0x64')][_0xcb9008];var _0x4a778d=_0x18bcd3[_0x1a4b('0x75')]();_0x4a778d[_0x1a4b('0x3e')](_0x1a4b('0x76'),_0x5c3ad5['id']);_0xabe1ff['push'](db[_0x1a4b('0x77')]['query'](_0x4a778d[_0x1a4b('0x78')](),{'type':db[_0x1a4b('0x77')][_0x1a4b('0x79')]['SELECT']})['then'](function(_0x5cd51c){if(_0x5cd51c[_0x1a4b('0x48')]===0x1){return _0x5c3ad5['id'];}else{var _0x134338=_[_0x1a4b('0x7a')](_['map'](_0x5cd51c,_0x1a4b('0x7b')),function(_0x1febb7){return _[_0x1a4b('0x7c')](_0x3a3507,_0x1febb7);});if(_0x134338){return _0x5c3ad5['id'];}}}));}}return BPromise[_0x1a4b('0x7d')](_0xabe1ff)['then'](function(_0x3ff961){_0x148520=_(_0x148520)[_0x1a4b('0x7e')](_0x3ff961)[_0x1a4b('0x7f')]()['value']();return db[_0x1a4b('0x32')]['find']({'where':{'id':_0x4a4fd0[_0x1a4b('0x45')]['id']}})['then'](function(_0x196185){return db[_0x1a4b('0x77')]['transaction'](function(_0x2b76ed){return _0x196185[_0x1a4b('0x6c')](_0x4a4fd0[_0x1a4b('0x35')][_0x1a4b('0x62')],{'transaction':_0x2b76ed})[_0x1a4b('0x29')](function(){if(!_['isEmpty'](_0x148520)){return _0x196185[_0x1a4b('0x80')](_0x148520,{'transaction':_0x2b76ed});}})[_0x1a4b('0x29')](function(){_0x148520[_0x1a4b('0x69')](function(_0x3eac65){socket[_0x1a4b('0x6a')]('userMailQueue:remove',{'UserId':_0x3eac65,'MailQueueId':_0x196185['id']});});});});});});})[_0x1a4b('0x29')](respondWithStatusCode(_0x50382d,null))[_0x1a4b('0x44')](handleError(_0x50382d,null));};exports['addAgents']=function(_0x15f253,_0x50907c,_0x16ccb7){return db['MailQueue'][_0x1a4b('0x49')]({'where':{'id':_0x15f253[_0x1a4b('0x45')]['id']}})['then'](handleEntityNotFound(_0x50907c,null))[_0x1a4b('0x29')](function(_0x39f8f3){if(_0x39f8f3){return _0x39f8f3[_0x1a4b('0x81')](_0x15f253[_0x1a4b('0x4b')][_0x1a4b('0x62')],_[_0x1a4b('0x82')](_0x15f253['body'],[_0x1a4b('0x62'),'id'])||{})[_0x1a4b('0x83')](function(_0x51d6b3){for(var _0x15939c=0x0;_0x15939c<_0x15f253['body'][_0x1a4b('0x62')][_0x1a4b('0x48')];_0x15939c+=0x1){socket[_0x1a4b('0x6a')](_0x1a4b('0x6b'),{'UserId':Number(_0x15f253[_0x1a4b('0x4b')][_0x1a4b('0x62')][_0x15939c]),'MailQueueId':Number(_0x15f253[_0x1a4b('0x45')]['id'])});}return _0x51d6b3;});}})[_0x1a4b('0x29')](respondWithResult(_0x50907c,null))[_0x1a4b('0x44')](handleError(_0x50907c,null));};exports['removeAgents']=function(_0x2060f5,_0x429feb,_0x22c66e){return db[_0x1a4b('0x32')]['find']({'where':{'id':_0x2060f5['params']['id']}})[_0x1a4b('0x29')](handleEntityNotFound(_0x429feb,null))[_0x1a4b('0x29')](function(_0x2e59d2){if(_0x2e59d2){return _0x2e59d2['removeAgents'](_0x2060f5[_0x1a4b('0x35')][_0x1a4b('0x62')])['then'](function(){if(_[_0x1a4b('0x84')](_0x2060f5[_0x1a4b('0x35')][_0x1a4b('0x62')])){for(var _0x1dcb8e=0x0;_0x1dcb8e<_0x2060f5[_0x1a4b('0x35')][_0x1a4b('0x62')][_0x1a4b('0x48')];_0x1dcb8e+=0x1){socket[_0x1a4b('0x6a')](_0x1a4b('0x85'),{'UserId':Number(_0x2060f5['query'][_0x1a4b('0x62')][_0x1dcb8e]),'MailQueueId':Number(_0x2060f5[_0x1a4b('0x45')]['id'])});}}else{socket[_0x1a4b('0x6a')]('userMailQueue:remove',{'UserId':Number(_0x2060f5[_0x1a4b('0x35')]['ids']),'MailQueueId':Number(_0x2060f5[_0x1a4b('0x45')]['id'])});}});}})[_0x1a4b('0x29')](respondWithStatusCode(_0x429feb,null))[_0x1a4b('0x44')](handleError(_0x429feb,null));};exports[_0x1a4b('0x86')]=function(_0x4dbf2f,_0x3d6e2b,_0x333b7e){var _0x492fb1={};var _0x4a0886={};var _0x2641f6;var _0x3d7328;return db[_0x1a4b('0x32')]['findOne']({'where':{'id':_0x4dbf2f['params']['id']}})[_0x1a4b('0x29')](handleEntityNotFound(_0x3d6e2b,null))[_0x1a4b('0x29')](function(_0xc7c59a){if(_0xc7c59a){_0x2641f6=_0xc7c59a;_0x4a0886['model']=_[_0x1a4b('0x46')](db['User'][_0x1a4b('0x47')]);_0x4a0886[_0x1a4b('0x35')]=_[_0x1a4b('0x46')](_0x4dbf2f[_0x1a4b('0x35')]);_0x4a0886[_0x1a4b('0x36')]=_[_0x1a4b('0x37')](_0x4a0886[_0x1a4b('0x34')],_0x4a0886['query']);_0x492fb1[_0x1a4b('0x38')]=_['intersection'](_0x4a0886[_0x1a4b('0x34')],qs[_0x1a4b('0x39')](_0x4dbf2f['query'][_0x1a4b('0x39')]));_0x492fb1[_0x1a4b('0x38')]=_0x492fb1[_0x1a4b('0x38')][_0x1a4b('0x48')]?_0x492fb1[_0x1a4b('0x38')]:_0x4a0886[_0x1a4b('0x34')];_0x492fb1['order']=qs[_0x1a4b('0x54')](_0x4dbf2f[_0x1a4b('0x35')][_0x1a4b('0x54')]);_0x492fb1[_0x1a4b('0x3e')]=qs[_0x1a4b('0x36')](_[_0x1a4b('0x3c')](_0x4dbf2f[_0x1a4b('0x35')],_0x4a0886[_0x1a4b('0x36')]));if(_0x4dbf2f[_0x1a4b('0x35')][_0x1a4b('0x3d')]){_0x492fb1['where']=_[_0x1a4b('0x3f')](_0x492fb1['where'],{'$or':_[_0x1a4b('0x31')](_0x492fb1[_0x1a4b('0x38')],function(_0x3ec6d3){var _0x387e5d={};_0x387e5d[_0x3ec6d3]={'$like':'%'+_0x4dbf2f[_0x1a4b('0x35')][_0x1a4b('0x3d')]+'%'};return _0x387e5d;})});}_0x492fb1=_[_0x1a4b('0x3f')]({},_0x492fb1,_0x4dbf2f['options']);return _0x2641f6[_0x1a4b('0x86')](_0x492fb1);}})['then'](function(_0x305fbb){if(_0x305fbb){_0x3d7328=_0x305fbb[_0x1a4b('0x48')];if(!_0x4dbf2f['query'][_0x1a4b('0x3a')](_0x1a4b('0x3b'))){_0x492fb1[_0x1a4b('0x23')]=qs['limit'](_0x4dbf2f[_0x1a4b('0x35')]['limit']);_0x492fb1[_0x1a4b('0x21')]=qs['offset'](_0x4dbf2f[_0x1a4b('0x35')]['offset']);}return _0x2641f6['getAgents'](_0x492fb1);}})[_0x1a4b('0x29')](function(_0x3a9f27){if(_0x3a9f27){return _0x3a9f27?{'count':_0x3d7328,'rows':_0x3a9f27}:null;}})[_0x1a4b('0x29')](respondWithResult(_0x3d6e2b,null))['catch'](handleError(_0x3d6e2b,null));};
\ No newline at end of file
+var _0x1b96=['merge','VIRTUAL','filter','options','MailQueue','includeAll','include','findAll','rows','params','find','catch','create','body','user','role','get','MailQueues','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','UserMailQueue','nolimit','MailQueueId','findAndCountAll','agent','mailPause','createdAt','%s/%s','SIP','updatedAt','findOne','Team','getTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','addTeams','each','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','User','tq.TeamId','from','team_has_mail_queues','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','userMailQueue:remove','spread','isArray','getAgents','eml-format','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./mailQueue.socket','status','json','offset','undefined','count','limit','Content-Range','apply','save','update','then','destroy','sendStatus','error','send','index','map','rawAttributes','type','key','model','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick'];(function(_0x59932e,_0x194aa2){var _0x2c19f9=function(_0x5d4b89){while(--_0x5d4b89){_0x59932e['push'](_0x59932e['shift']());}};_0x2c19f9(++_0x194aa2);}(_0x1b96,0x1e8));var _0x61b9=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x1b96[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require(_0x61b9('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x61b9('0x1'));var rp=require(_0x61b9('0x2'));var moment=require(_0x61b9('0x3'));var BPromise=require(_0x61b9('0x4'));var Mustache=require('mustache');var util=require(_0x61b9('0x5'));var path=require(_0x61b9('0x6'));var sox=require('sox');var csv=require(_0x61b9('0x7'));var ejs=require(_0x61b9('0x8'));var fs=require('fs');var fs_extra=require(_0x61b9('0x9'));var _=require(_0x61b9('0xa'));var squel=require(_0x61b9('0xb'));var crypto=require(_0x61b9('0xc'));var jsforce=require(_0x61b9('0xd'));var deskjs=require(_0x61b9('0xe'));var toCsv=require(_0x61b9('0x7'));var querystring=require(_0x61b9('0xf'));var Papa=require(_0x61b9('0x10'));var Redis=require(_0x61b9('0x11'));var authService=require(_0x61b9('0x12'));var qs=require(_0x61b9('0x13'));var as=require(_0x61b9('0x14'));var hardwareService=require(_0x61b9('0x15'));var logger=require(_0x61b9('0x16'))('api');var utils=require(_0x61b9('0x17'));var config=require(_0x61b9('0x18'));var licenseUtil=require(_0x61b9('0x19'));var db=require(_0x61b9('0x1a'))['db'];config[_0x61b9('0x1b')]=_['defaults'](config[_0x61b9('0x1b')],{'host':_0x61b9('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x61b9('0x1d'))['register'](socket);function respondWithStatusCode(_0x2dfa39,_0x481c8e){_0x481c8e=_0x481c8e||0xcc;return function(_0x14ecd9){if(_0x14ecd9){return _0x2dfa39['sendStatus'](_0x481c8e);}return _0x2dfa39['status'](_0x481c8e)['end']();};}function respondWithResult(_0x6da7e5,_0x5f02fb){_0x5f02fb=_0x5f02fb||0xc8;return function(_0x81ae6f){if(_0x81ae6f){return _0x6da7e5[_0x61b9('0x1e')](_0x5f02fb)[_0x61b9('0x1f')](_0x81ae6f);}};}function respondWithFilteredResult(_0x3a9b44,_0x43af55){return function(_0x490132){if(_0x490132){var _0x5e16c4=typeof _0x43af55[_0x61b9('0x20')]===_0x61b9('0x21')&&typeof _0x43af55['limit']===_0x61b9('0x21');var _0x599fd4=_0x490132['count'];var _0x9c979e=_0x5e16c4?0x0:_0x43af55[_0x61b9('0x20')];var _0xb21f1b=_0x5e16c4?_0x490132[_0x61b9('0x22')]:_0x43af55[_0x61b9('0x20')]+_0x43af55[_0x61b9('0x23')];var _0x2433c1;if(_0xb21f1b>=_0x599fd4){_0xb21f1b=_0x599fd4;_0x2433c1=0xc8;}else{_0x2433c1=0xce;}_0x3a9b44[_0x61b9('0x1e')](_0x2433c1);return _0x3a9b44['set'](_0x61b9('0x24'),_0x9c979e+'-'+_0xb21f1b+'/'+_0x599fd4)['json'](_0x490132);}return null;};}function patchUpdates(_0x1dd233){return function(_0x1472fd){try{jsonpatch[_0x61b9('0x25')](_0x1472fd,_0x1dd233,!![]);}catch(_0x1bb2a2){return BPromise['reject'](_0x1bb2a2);}return _0x1472fd[_0x61b9('0x26')]();};}function saveUpdates(_0x575722,_0x524dc3){return function(_0x19fe2c){if(_0x19fe2c){return _0x19fe2c[_0x61b9('0x27')](_0x575722)[_0x61b9('0x28')](function(_0x4fb84c){return _0x4fb84c;});}return null;};}function removeEntity(_0x377f8c,_0x42ddaa){return function(_0x2a7dd9){if(_0x2a7dd9){return _0x2a7dd9[_0x61b9('0x29')]()[_0x61b9('0x28')](function(){var _0x29ffd1=_0x2a7dd9['get']({'plain':!![]});var _0x2a6299='MailQueues';return db['UserProfileResource'][_0x61b9('0x29')]({'where':{'type':_0x2a6299,'resourceId':_0x29ffd1['id']}})[_0x61b9('0x28')](function(){return _0x2a7dd9;});})[_0x61b9('0x28')](function(){_0x377f8c[_0x61b9('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x479d1f,_0x3bd582){return function(_0x3fa4ef){if(!_0x3fa4ef){_0x479d1f[_0x61b9('0x2a')](0x194);}return _0x3fa4ef;};}function handleError(_0x5362e2,_0x5c5b54){_0x5c5b54=_0x5c5b54||0x1f4;return function(_0x5144aa){logger[_0x61b9('0x2b')](_0x5144aa['stack']);if(_0x5144aa['name']){delete _0x5144aa['name'];}_0x5362e2[_0x61b9('0x1e')](_0x5c5b54)[_0x61b9('0x2c')](_0x5144aa);};}exports[_0x61b9('0x2d')]=function(_0x57f962,_0x5c5ab1){var _0xb0f7e4={},_0x5525ee={},_0x259280={'count':0x0,'rows':[]};var _0x22f223=_[_0x61b9('0x2e')](db['MailQueue'][_0x61b9('0x2f')],function(_0x293efc){return{'name':_0x293efc['fieldName'],'type':_0x293efc[_0x61b9('0x30')][_0x61b9('0x31')]};});_0x5525ee[_0x61b9('0x32')]=_['map'](_0x22f223,_0x61b9('0x33'));_0x5525ee[_0x61b9('0x34')]=_[_0x61b9('0x35')](_0x57f962[_0x61b9('0x34')]);_0x5525ee[_0x61b9('0x36')]=_[_0x61b9('0x37')](_0x5525ee[_0x61b9('0x32')],_0x5525ee[_0x61b9('0x34')]);_0xb0f7e4['attributes']=_[_0x61b9('0x37')](_0x5525ee['model'],qs[_0x61b9('0x38')](_0x57f962[_0x61b9('0x34')][_0x61b9('0x38')]));_0xb0f7e4[_0x61b9('0x39')]=_0xb0f7e4[_0x61b9('0x39')][_0x61b9('0x3a')]?_0xb0f7e4['attributes']:_0x5525ee[_0x61b9('0x32')];if(!_0x57f962[_0x61b9('0x34')][_0x61b9('0x3b')]('nolimit')){_0xb0f7e4[_0x61b9('0x23')]=qs[_0x61b9('0x23')](_0x57f962['query']['limit']);_0xb0f7e4[_0x61b9('0x20')]=qs[_0x61b9('0x20')](_0x57f962[_0x61b9('0x34')]['offset']);}_0xb0f7e4[_0x61b9('0x3c')]=qs[_0x61b9('0x3d')](_0x57f962[_0x61b9('0x34')]['sort']);_0xb0f7e4[_0x61b9('0x3e')]=qs[_0x61b9('0x36')](_[_0x61b9('0x3f')](_0x57f962[_0x61b9('0x34')],_0x5525ee[_0x61b9('0x36')]),_0x22f223);if(_0x57f962[_0x61b9('0x34')]['filter']){_0xb0f7e4[_0x61b9('0x3e')]=_[_0x61b9('0x40')](_0xb0f7e4['where'],{'$or':_['map'](_0x22f223,function(_0x1a2f0a){if(_0x1a2f0a['type']!==_0x61b9('0x41')){var _0x9a8eb4={};_0x9a8eb4[_0x1a2f0a[_0x61b9('0x33')]]={'$like':'%'+_0x57f962[_0x61b9('0x34')][_0x61b9('0x42')]+'%'};return _0x9a8eb4;}})});}_0xb0f7e4=_['merge']({},_0xb0f7e4,_0x57f962[_0x61b9('0x43')]);var _0x198411={'where':_0xb0f7e4[_0x61b9('0x3e')]};return db[_0x61b9('0x44')][_0x61b9('0x22')](_0x198411)[_0x61b9('0x28')](function(_0x37048f){_0x259280[_0x61b9('0x22')]=_0x37048f;if(_0x57f962['query'][_0x61b9('0x45')]){_0xb0f7e4[_0x61b9('0x46')]=[{'all':!![]}];}return db[_0x61b9('0x44')][_0x61b9('0x47')](_0xb0f7e4);})[_0x61b9('0x28')](function(_0x3506fe){_0x259280[_0x61b9('0x48')]=_0x3506fe;return _0x259280;})['then'](respondWithFilteredResult(_0x5c5ab1,_0xb0f7e4))['catch'](handleError(_0x5c5ab1,null));};exports['show']=function(_0x3a7c7b,_0x59360b){var _0x3896a0={'raw':!![],'where':{'id':_0x3a7c7b[_0x61b9('0x49')]['id']}},_0x1b523c={};_0x1b523c[_0x61b9('0x32')]=_[_0x61b9('0x35')](db[_0x61b9('0x44')][_0x61b9('0x2f')]);_0x1b523c[_0x61b9('0x34')]=_[_0x61b9('0x35')](_0x3a7c7b[_0x61b9('0x34')]);_0x1b523c['filters']=_[_0x61b9('0x37')](_0x1b523c[_0x61b9('0x32')],_0x1b523c['query']);_0x3896a0[_0x61b9('0x39')]=_[_0x61b9('0x37')](_0x1b523c['model'],qs[_0x61b9('0x38')](_0x3a7c7b[_0x61b9('0x34')]['fields']));_0x3896a0['attributes']=_0x3896a0['attributes'][_0x61b9('0x3a')]?_0x3896a0[_0x61b9('0x39')]:_0x1b523c[_0x61b9('0x32')];if(_0x3a7c7b[_0x61b9('0x34')][_0x61b9('0x45')]){_0x3896a0[_0x61b9('0x46')]=[{'all':!![]}];}_0x3896a0=_[_0x61b9('0x40')]({},_0x3896a0,_0x3a7c7b['options']);return db[_0x61b9('0x44')][_0x61b9('0x4a')](_0x3896a0)[_0x61b9('0x28')](handleEntityNotFound(_0x59360b,null))[_0x61b9('0x28')](respondWithResult(_0x59360b,null))[_0x61b9('0x4b')](handleError(_0x59360b,null));};exports[_0x61b9('0x4c')]=function(_0x237255,_0x2d4213){return db[_0x61b9('0x44')][_0x61b9('0x4c')](_0x237255[_0x61b9('0x4d')],{})[_0x61b9('0x28')](function(_0x2b60c5){var _0x38ccec=_0x237255[_0x61b9('0x4e')]['get']({'plain':!![]});if(!_0x38ccec)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x38ccec[_0x61b9('0x4f')]===_0x61b9('0x4e')){var _0x3a5ad8=_0x2b60c5[_0x61b9('0x50')]({'plain':!![]});var _0x20e42b=_0x61b9('0x51');return db[_0x61b9('0x52')][_0x61b9('0x4a')]({'where':{'name':_0x20e42b,'userProfileId':_0x38ccec['userProfileId']},'raw':!![]})['then'](function(_0x14a052){if(_0x14a052&&_0x14a052[_0x61b9('0x53')]===0x0){return db['UserProfileResource'][_0x61b9('0x4c')]({'name':_0x3a5ad8['name'],'resourceId':_0x3a5ad8['id'],'type':_0x14a052[_0x61b9('0x33')],'sectionId':_0x14a052['id']},{})[_0x61b9('0x28')](function(){return _0x2b60c5;});}else{return _0x2b60c5;}})[_0x61b9('0x4b')](function(_0x383b39){logger['error'](_0x61b9('0x54'),_0x383b39);throw _0x383b39;});}return _0x2b60c5;})[_0x61b9('0x28')](respondWithResult(_0x2d4213,0xc9))[_0x61b9('0x4b')](handleError(_0x2d4213,null));};exports[_0x61b9('0x27')]=function(_0x26fe38,_0x4866a4){if(_0x26fe38[_0x61b9('0x4d')]['id']){delete _0x26fe38['body']['id'];}return db['MailQueue'][_0x61b9('0x4a')]({'where':{'id':_0x26fe38[_0x61b9('0x49')]['id']}})[_0x61b9('0x28')](handleEntityNotFound(_0x4866a4,null))[_0x61b9('0x28')](saveUpdates(_0x26fe38['body'],null))[_0x61b9('0x28')](respondWithResult(_0x4866a4,null))[_0x61b9('0x4b')](handleError(_0x4866a4,null));};exports[_0x61b9('0x29')]=function(_0x1553cf,_0x3e1593){return db[_0x61b9('0x44')][_0x61b9('0x4a')]({'where':{'id':_0x1553cf[_0x61b9('0x49')]['id']}})['then'](handleEntityNotFound(_0x3e1593,null))[_0x61b9('0x28')](removeEntity(_0x3e1593,null))[_0x61b9('0x4b')](handleError(_0x3e1593,null));};exports[_0x61b9('0x55')]=function(_0x1bf9ab,_0x4377e9){return db[_0x61b9('0x44')][_0x61b9('0x55')]()[_0x61b9('0x28')](respondWithResult(_0x4377e9,null))['catch'](handleError(_0x4377e9,null));};exports[_0x61b9('0x56')]=function(_0x2d8462,_0x4a9d49,_0x1e7bdb){var _0x378951={'raw':!![],'where':{}},_0x3c735e={},_0x135c95;return db['MailQueue']['findOne']({'where':{'id':_0x2d8462[_0x61b9('0x49')]['id']}})[_0x61b9('0x28')](handleEntityNotFound(_0x4a9d49,null))[_0x61b9('0x28')](function(_0xb8a1ba){if(_0xb8a1ba){_0x135c95=_0xb8a1ba[_0x61b9('0x50')]({'plain':!![]});_0x3c735e[_0x61b9('0x32')]=_['keys'](db[_0x61b9('0x57')][_0x61b9('0x2f')]);_0x3c735e[_0x61b9('0x34')]=_[_0x61b9('0x35')](_0x2d8462[_0x61b9('0x34')]);_0x3c735e[_0x61b9('0x36')]=_[_0x61b9('0x37')](_0x3c735e[_0x61b9('0x32')],_0x3c735e[_0x61b9('0x34')]);_0x378951[_0x61b9('0x39')]=_[_0x61b9('0x37')](_0x3c735e[_0x61b9('0x32')],qs[_0x61b9('0x38')](_0x2d8462['query']['fields']));_0x378951[_0x61b9('0x39')]=_0x378951[_0x61b9('0x39')]['length']?_0x378951[_0x61b9('0x39')]:_0x3c735e['model'];if(!_0x2d8462[_0x61b9('0x34')][_0x61b9('0x3b')](_0x61b9('0x58'))){_0x378951[_0x61b9('0x23')]=qs[_0x61b9('0x23')](_0x2d8462[_0x61b9('0x34')]['limit']);_0x378951[_0x61b9('0x20')]=qs['offset'](_0x2d8462[_0x61b9('0x34')]['offset']);}_0x378951['order']=qs[_0x61b9('0x3d')](_0x2d8462[_0x61b9('0x34')]['sort']);_0x378951['where']=qs[_0x61b9('0x36')](_['pick'](_0x2d8462['query'],_0x3c735e[_0x61b9('0x36')]));_0x378951[_0x61b9('0x3e')][_0x61b9('0x59')]=_0xb8a1ba['id'];if(_0x2d8462['query'][_0x61b9('0x42')]){_0x378951[_0x61b9('0x3e')]=_[_0x61b9('0x40')](_0x378951[_0x61b9('0x3e')],{'$or':_['map'](_0x378951[_0x61b9('0x39')],function(_0x5eb63b){var _0x46d446={};_0x46d446[_0x5eb63b]={'$like':'%'+_0x2d8462['query'][_0x61b9('0x42')]+'%'};return _0x46d446;})});}_0x378951=_[_0x61b9('0x40')]({},_0x378951,_0x2d8462[_0x61b9('0x43')]);return db[_0x61b9('0x57')][_0x61b9('0x47')](_0x378951);}})[_0x61b9('0x28')](function(_0x1d378a){if(_0x1d378a){return db['User'][_0x61b9('0x5a')]({'where':{'id':_['map'](_0x1d378a,'UserId'),'role':_0x61b9('0x5b')},'attributes':['id',_0x61b9('0x33'),_0x61b9('0x5c'),'updatedAt',_0x61b9('0x5d')]});}})['then'](function(_0x3a129b){if(_0x3a129b){return{'count':_0x3a129b[_0x61b9('0x22')],'rows':_[_0x61b9('0x2e')](_0x3a129b[_0x61b9('0x48')],function(_0x5e0340){return{'membername':_0x5e0340[_0x61b9('0x33')],'UserId':_0x5e0340['id'],'queue_name':_0x135c95[_0x61b9('0x33')],'MailQueueId':_0x135c95['id'],'interface':util['format'](_0x61b9('0x5e'),_0x61b9('0x5f'),_0x5e0340['name']),'penalty':0x0,'paused':_0x5e0340['mailPause'],'createdAt':_0x5e0340[_0x61b9('0x5d')],'updatedAt':_0x5e0340[_0x61b9('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x61b9('0x28')](respondWithFilteredResult(_0x4a9d49,_0x378951))[_0x61b9('0x4b')](handleError(_0x4a9d49,null));};exports['getTeams']=function(_0x4abf49,_0xf13a30,_0x30de46){var _0x15a183={};var _0x28a5b4={};var _0xaa6239;var _0x2d096c;return db[_0x61b9('0x44')][_0x61b9('0x61')]({'where':{'id':_0x4abf49[_0x61b9('0x49')]['id']}})['then'](handleEntityNotFound(_0xf13a30,null))[_0x61b9('0x28')](function(_0x439e19){if(_0x439e19){_0xaa6239=_0x439e19;_0x28a5b4['model']=_[_0x61b9('0x35')](db[_0x61b9('0x62')][_0x61b9('0x2f')]);_0x28a5b4['query']=_['keys'](_0x4abf49[_0x61b9('0x34')]);_0x28a5b4['filters']=_[_0x61b9('0x37')](_0x28a5b4[_0x61b9('0x32')],_0x28a5b4[_0x61b9('0x34')]);_0x15a183[_0x61b9('0x39')]=_['intersection'](_0x28a5b4[_0x61b9('0x32')],qs['fields'](_0x4abf49[_0x61b9('0x34')][_0x61b9('0x38')]));_0x15a183[_0x61b9('0x39')]=_0x15a183['attributes'][_0x61b9('0x3a')]?_0x15a183[_0x61b9('0x39')]:_0x28a5b4[_0x61b9('0x32')];_0x15a183[_0x61b9('0x3c')]=qs['sort'](_0x4abf49[_0x61b9('0x34')]['sort']);_0x15a183[_0x61b9('0x3e')]=qs[_0x61b9('0x36')](_[_0x61b9('0x3f')](_0x4abf49[_0x61b9('0x34')],_0x28a5b4[_0x61b9('0x36')]));if(_0x4abf49[_0x61b9('0x34')][_0x61b9('0x42')]){_0x15a183[_0x61b9('0x3e')]=_[_0x61b9('0x40')](_0x15a183[_0x61b9('0x3e')],{'$or':_['map'](_0x15a183[_0x61b9('0x39')],function(_0x16940d){var _0x28f867={};_0x28f867[_0x16940d]={'$like':'%'+_0x4abf49[_0x61b9('0x34')][_0x61b9('0x42')]+'%'};return _0x28f867;})});}_0x15a183=_[_0x61b9('0x40')]({},_0x15a183,_0x4abf49[_0x61b9('0x43')]);return _0xaa6239[_0x61b9('0x63')](_0x15a183);}})[_0x61b9('0x28')](function(_0x3b7d05){if(_0x3b7d05){_0x2d096c=_0x3b7d05['length'];if(!_0x4abf49[_0x61b9('0x34')]['hasOwnProperty'](_0x61b9('0x58'))){_0x15a183[_0x61b9('0x23')]=qs[_0x61b9('0x23')](_0x4abf49['query'][_0x61b9('0x23')]);_0x15a183[_0x61b9('0x20')]=qs[_0x61b9('0x20')](_0x4abf49[_0x61b9('0x34')]['offset']);}return _0xaa6239[_0x61b9('0x63')](_0x15a183);}})['then'](function(_0x48e481){if(_0x48e481){return _0x48e481?{'count':_0x2d096c,'rows':_0x48e481}:null;}})[_0x61b9('0x28')](respondWithResult(_0xf13a30,null))[_0x61b9('0x4b')](handleError(_0xf13a30,null));};exports['addTeams']=function(_0x464a8e,_0xd7ff88,_0x3cef9e){var _0x2fe250=_0x464a8e[_0x61b9('0x4d')][_0x61b9('0x64')];return db[_0x61b9('0x62')][_0x61b9('0x47')]({'where':{'id':_0x2fe250},'attributes':['id'],'include':[{'model':db['User'],'as':_0x61b9('0x65'),'attributes':['id',_0x61b9('0x33'),_0x61b9('0x66'),_0x61b9('0x67'),_0x61b9('0x68')],'raw':!![]}]})[_0x61b9('0x28')](function(_0x4ecf77){if(_0x4ecf77){var _0x5338a0=_[_0x61b9('0x69')](_0x4ecf77,function(_0x5036ca){var _0x4cdd93=_0x5036ca[_0x61b9('0x50')]({'plain':!![]});return _0x4cdd93['Agents'];});return db[_0x61b9('0x44')][_0x61b9('0x4a')]({'where':{'id':_0x464a8e[_0x61b9('0x49')]['id']}})[_0x61b9('0x28')](function(_0x55aa43){return db[_0x61b9('0x6a')][_0x61b9('0x6b')](function(_0x49062a){return _0x55aa43[_0x61b9('0x6c')](_0x2fe250,{'transaction':_0x49062a})[_0x61b9('0x28')](function(){return BPromise[_0x61b9('0x6d')](_0x5338a0,function(_0xb04abd){return db['UserMailQueue'][_0x61b9('0x6e')]({'where':{'UserId':_0xb04abd['id'],'MailQueueId':_0x464a8e[_0x61b9('0x49')]['id']},'transaction':_0x49062a});});})[_0x61b9('0x28')](function(){_0x5338a0[_0x61b9('0x6f')](function(_0x126329){socket[_0x61b9('0x70')](_0x61b9('0x71'),{'UserId':_0x126329['id'],'MailQueueId':_0x55aa43['id']});});});});});}})[_0x61b9('0x28')](respondWithStatusCode(_0xd7ff88,null))['catch'](handleError(_0xd7ff88,null));};exports[_0x61b9('0x72')]=function(_0x2d10f0,_0x187371,_0x58d3b1){return db['Team'][_0x61b9('0x47')]({'where':{'id':_0x2d10f0['query'][_0x61b9('0x64')]},'attributes':['id'],'include':[{'model':db[_0x61b9('0x73')],'as':_0x61b9('0x65'),'attributes':['id'],'raw':!![]}]})[_0x61b9('0x28')](handleEntityNotFound(_0x187371,null))[_0x61b9('0x28')](function(_0x3e9a0a){var _0x5016cd=_[_0x61b9('0x2e')](_0x3e9a0a,'id');var _0x54ceaf=[];var _0x15738c=[];var _0x21aaf7=squel['select']();_0x21aaf7['field'](_0x61b9('0x74'))[_0x61b9('0x75')](_0x61b9('0x76'),'tq')['join']('user_has_teams','ut',_0x61b9('0x77'))[_0x61b9('0x3e')](_0x61b9('0x78'),_0x2d10f0[_0x61b9('0x49')]['id']);for(var _0x1fa469=0x0;_0x1fa469<_0x3e9a0a[_0x61b9('0x3a')];_0x1fa469+=0x1){let _0x2913e7=_0x3e9a0a[_0x1fa469];for(var _0x4fa90b=0x0;_0x4fa90b<_0x2913e7['Agents']['length'];_0x4fa90b+=0x1){let _0x52a192=_0x2913e7[_0x61b9('0x65')][_0x4fa90b];var _0x50bb65=_0x21aaf7[_0x61b9('0x79')]();_0x50bb65[_0x61b9('0x3e')](_0x61b9('0x7a'),_0x52a192['id']);_0x15738c[_0x61b9('0x7b')](db[_0x61b9('0x6a')][_0x61b9('0x34')](_0x50bb65[_0x61b9('0x7c')](),{'type':db[_0x61b9('0x6a')][_0x61b9('0x7d')]['SELECT']})['then'](function(_0x349744){if(_0x349744['length']===0x1){return _0x52a192['id'];}else{var _0x5bc116=_['every'](_[_0x61b9('0x2e')](_0x349744,_0x61b9('0x7e')),function(_0x11303a){return _[_0x61b9('0x7f')](_0x5016cd,_0x11303a);});if(_0x5bc116){return _0x52a192['id'];}}}));}}return BPromise[_0x61b9('0x80')](_0x15738c)[_0x61b9('0x28')](function(_0x577ee9){_0x54ceaf=_(_0x54ceaf)[_0x61b9('0x81')](_0x577ee9)[_0x61b9('0x82')]()[_0x61b9('0x83')]();return db[_0x61b9('0x44')][_0x61b9('0x4a')]({'where':{'id':_0x2d10f0[_0x61b9('0x49')]['id']}})[_0x61b9('0x28')](function(_0x180bda){return db[_0x61b9('0x6a')][_0x61b9('0x6b')](function(_0x2bf970){return _0x180bda['removeTeams'](_0x2d10f0[_0x61b9('0x34')][_0x61b9('0x64')],{'transaction':_0x2bf970})[_0x61b9('0x28')](function(){if(!_[_0x61b9('0x84')](_0x54ceaf)){return _0x180bda[_0x61b9('0x85')](_0x54ceaf,{'transaction':_0x2bf970});}})[_0x61b9('0x28')](function(){_0x54ceaf[_0x61b9('0x6f')](function(_0x35adf6){socket[_0x61b9('0x70')](_0x61b9('0x86'),{'UserId':_0x35adf6,'MailQueueId':_0x180bda['id']});});});});});});})[_0x61b9('0x28')](respondWithStatusCode(_0x187371,null))[_0x61b9('0x4b')](handleError(_0x187371,null));};exports['addAgents']=function(_0x1d16bb,_0xa670f9,_0xa44fdb){return db[_0x61b9('0x44')][_0x61b9('0x4a')]({'where':{'id':_0x1d16bb[_0x61b9('0x49')]['id']}})[_0x61b9('0x28')](handleEntityNotFound(_0xa670f9,null))[_0x61b9('0x28')](function(_0x11baf2){if(_0x11baf2){return _0x11baf2['addAgents'](_0x1d16bb[_0x61b9('0x4d')][_0x61b9('0x64')],_['omit'](_0x1d16bb[_0x61b9('0x4d')],[_0x61b9('0x64'),'id'])||{})[_0x61b9('0x87')](function(_0x26bd26){for(var _0x65514a=0x0;_0x65514a<_0x1d16bb[_0x61b9('0x4d')]['ids'][_0x61b9('0x3a')];_0x65514a+=0x1){socket[_0x61b9('0x70')](_0x61b9('0x71'),{'UserId':Number(_0x1d16bb[_0x61b9('0x4d')][_0x61b9('0x64')][_0x65514a]),'MailQueueId':Number(_0x1d16bb[_0x61b9('0x49')]['id'])});}return _0x26bd26;});}})[_0x61b9('0x28')](respondWithResult(_0xa670f9,null))[_0x61b9('0x4b')](handleError(_0xa670f9,null));};exports[_0x61b9('0x85')]=function(_0x1a18f2,_0x2f97c1,_0x307eee){return db[_0x61b9('0x44')]['find']({'where':{'id':_0x1a18f2[_0x61b9('0x49')]['id']}})[_0x61b9('0x28')](handleEntityNotFound(_0x2f97c1,null))[_0x61b9('0x28')](function(_0x296d44){if(_0x296d44){return _0x296d44[_0x61b9('0x85')](_0x1a18f2[_0x61b9('0x34')][_0x61b9('0x64')])[_0x61b9('0x28')](function(){if(_[_0x61b9('0x88')](_0x1a18f2[_0x61b9('0x34')][_0x61b9('0x64')])){for(var _0x27f902=0x0;_0x27f902<_0x1a18f2[_0x61b9('0x34')][_0x61b9('0x64')][_0x61b9('0x3a')];_0x27f902+=0x1){socket[_0x61b9('0x70')](_0x61b9('0x86'),{'UserId':Number(_0x1a18f2[_0x61b9('0x34')][_0x61b9('0x64')][_0x27f902]),'MailQueueId':Number(_0x1a18f2['params']['id'])});}}else{socket[_0x61b9('0x70')](_0x61b9('0x86'),{'UserId':Number(_0x1a18f2[_0x61b9('0x34')][_0x61b9('0x64')]),'MailQueueId':Number(_0x1a18f2[_0x61b9('0x49')]['id'])});}});}})[_0x61b9('0x28')](respondWithStatusCode(_0x2f97c1,null))[_0x61b9('0x4b')](handleError(_0x2f97c1,null));};exports[_0x61b9('0x89')]=function(_0x34bc14,_0x37522c,_0x52e2e5){var _0x46a886={};var _0x571fa8={};var _0x2552c5;var _0x1b40e1;return db[_0x61b9('0x44')]['findOne']({'where':{'id':_0x34bc14['params']['id']}})[_0x61b9('0x28')](handleEntityNotFound(_0x37522c,null))[_0x61b9('0x28')](function(_0xe0ed3a){if(_0xe0ed3a){_0x2552c5=_0xe0ed3a;_0x571fa8[_0x61b9('0x32')]=_['keys'](db['User']['rawAttributes']);_0x571fa8['query']=_[_0x61b9('0x35')](_0x34bc14[_0x61b9('0x34')]);_0x571fa8['filters']=_[_0x61b9('0x37')](_0x571fa8[_0x61b9('0x32')],_0x571fa8[_0x61b9('0x34')]);_0x46a886['attributes']=_[_0x61b9('0x37')](_0x571fa8[_0x61b9('0x32')],qs['fields'](_0x34bc14['query'][_0x61b9('0x38')]));_0x46a886[_0x61b9('0x39')]=_0x46a886[_0x61b9('0x39')][_0x61b9('0x3a')]?_0x46a886[_0x61b9('0x39')]:_0x571fa8['model'];_0x46a886[_0x61b9('0x3c')]=qs[_0x61b9('0x3d')](_0x34bc14['query'][_0x61b9('0x3d')]);_0x46a886[_0x61b9('0x3e')]=qs[_0x61b9('0x36')](_[_0x61b9('0x3f')](_0x34bc14[_0x61b9('0x34')],_0x571fa8[_0x61b9('0x36')]));if(_0x34bc14['query']['filter']){_0x46a886[_0x61b9('0x3e')]=_['merge'](_0x46a886[_0x61b9('0x3e')],{'$or':_[_0x61b9('0x2e')](_0x46a886[_0x61b9('0x39')],function(_0x2bdfda){var _0xa934e4={};_0xa934e4[_0x2bdfda]={'$like':'%'+_0x34bc14[_0x61b9('0x34')][_0x61b9('0x42')]+'%'};return _0xa934e4;})});}_0x46a886=_[_0x61b9('0x40')]({},_0x46a886,_0x34bc14[_0x61b9('0x43')]);return _0x2552c5[_0x61b9('0x89')](_0x46a886);}})['then'](function(_0x133d36){if(_0x133d36){_0x1b40e1=_0x133d36['length'];if(!_0x34bc14['query'][_0x61b9('0x3b')](_0x61b9('0x58'))){_0x46a886[_0x61b9('0x23')]=qs[_0x61b9('0x23')](_0x34bc14[_0x61b9('0x34')][_0x61b9('0x23')]);_0x46a886[_0x61b9('0x20')]=qs[_0x61b9('0x20')](_0x34bc14[_0x61b9('0x34')][_0x61b9('0x20')]);}return _0x2552c5[_0x61b9('0x89')](_0x46a886);}})[_0x61b9('0x28')](function(_0x47db44){if(_0x47db44){return _0x47db44?{'count':_0x1b40e1,'rows':_0x47db44}:null;}})[_0x61b9('0x28')](respondWithResult(_0x37522c,null))[_0x61b9('0x4b')](handleError(_0x37522c,null));};
\ No newline at end of file
index 1400f2b..30e1ca9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f3b=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailQueue','setMaxListeners','remove'];(function(_0x43975d,_0x50527b){var _0x236b22=function(_0x42c334){while(--_0x42c334){_0x43975d['push'](_0x43975d['shift']());}};_0x236b22(++_0x50527b);}(_0x5f3b,0x109));var _0xb5f3=function(_0x478b91,_0x1f327d){_0x478b91=_0x478b91-0x0;var _0x51b490=_0x5f3b[_0x478b91];return _0x51b490;};'use strict';var EventEmitter=require(_0xb5f3('0x0'));var MailQueue=require(_0xb5f3('0x1'))['db'][_0xb5f3('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0xb5f3('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xb5f3('0x4')};function emitEvent(_0x153c95){return function(_0x37bba7,_0x48fe83,_0x4a967d){MailQueueEvents['emit'](_0x153c95+':'+_0x37bba7['id'],_0x37bba7);MailQueueEvents[_0xb5f3('0x5')](_0x153c95,_0x37bba7);_0x4a967d(null);};}for(var e in events){if(events[_0xb5f3('0x6')](e)){var event=events[e];MailQueue[_0xb5f3('0x7')](e,emitEvent(event));}}module[_0xb5f3('0x8')]=MailQueueEvents;
\ No newline at end of file
+var _0x100a=['emit','hasOwnProperty','exports','events','../../mysqldb','MailQueue','setMaxListeners','save','remove'];(function(_0x45ac80,_0x445db8){var _0x546b3e=function(_0x4cb074){while(--_0x4cb074){_0x45ac80['push'](_0x45ac80['shift']());}};_0x546b3e(++_0x445db8);}(_0x100a,0xae));var _0xa100=function(_0x407807,_0x231bd1){_0x407807=_0x407807-0x0;var _0x4696fe=_0x100a[_0x407807];return _0x4696fe;};'use strict';var EventEmitter=require(_0xa100('0x0'));var MailQueue=require(_0xa100('0x1'))['db'][_0xa100('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0xa100('0x3')](0x0);var events={'afterCreate':_0xa100('0x4'),'afterUpdate':'update','afterDestroy':_0xa100('0x5')};function emitEvent(_0x3c6b57){return function(_0x145d56,_0x195f55,_0xee9524){MailQueueEvents[_0xa100('0x6')](_0x3c6b57+':'+_0x145d56['id'],_0x145d56);MailQueueEvents[_0xa100('0x6')](_0x3c6b57,_0x145d56);_0xee9524(null);};}for(var e in events){if(events[_0xa100('0x7')](e)){var event=events[e];MailQueue['hook'](e,emitEvent(event));}}module[_0xa100('0x8')]=MailQueueEvents;
\ No newline at end of file
index d79ca9a..44252f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x741d=['lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./mailQueue.attributes','define','MailQueue','mail_queues'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x741d,0x9c));var _0xd741=function(_0x8f2ee8,_0xb1f7d4){_0x8f2ee8=_0x8f2ee8-0x0;var _0x470834=_0x741d[_0x8f2ee8];return _0x470834;};'use strict';var _=require(_0xd741('0x0'));var util=require('util');var logger=require(_0xd741('0x1'))(_0xd741('0x2'));var moment=require(_0xd741('0x3'));var BPromise=require(_0xd741('0x4'));var rp=require(_0xd741('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd741('0x6'));var config=require(_0xd741('0x7'));var attributes=require(_0xd741('0x8'));module['exports']=function(_0x34c02e,_0x4a0c79){return _0x34c02e[_0xd741('0x9')](_0xd741('0xa'),attributes,{'tableName':_0xd741('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x54da=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./mailQueue.attributes','exports','define','MailQueue','mail_queues','lodash','util'];(function(_0x3c18b7,_0x21cb07){var _0x3d38b3=function(_0x16b659){while(--_0x16b659){_0x3c18b7['push'](_0x3c18b7['shift']());}};_0x3d38b3(++_0x21cb07);}(_0x54da,0x186));var _0xa54d=function(_0x61c887,_0x5522c2){_0x61c887=_0x61c887-0x0;var _0x200c44=_0x54da[_0x61c887];return _0x200c44;};'use strict';var _=require(_0xa54d('0x0'));var util=require(_0xa54d('0x1'));var logger=require(_0xa54d('0x2'))(_0xa54d('0x3'));var moment=require(_0xa54d('0x4'));var BPromise=require(_0xa54d('0x5'));var rp=require(_0xa54d('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa54d('0x7'));var config=require(_0xa54d('0x8'));var attributes=require(_0xa54d('0x9'));module[_0xa54d('0xa')]=function(_0x336826,_0x5b4649){return _0x336826[_0xa54d('0xb')](_0xa54d('0xc'),attributes,{'tableName':_0xa54d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d5ee968..2d11bb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa12=['register','request','info','MailQueue,\x20%s,\x20%s','request\x20sent','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','MailQueue','findAll','options','raw','where','attributes','limit','map','model','include','then','GetMailQueue','debug','ShowMailQueue','find','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./mailQueue.socket'];(function(_0x48eac6,_0x364521){var _0x33383c=function(_0x2feea1){while(--_0x2feea1){_0x48eac6['push'](_0x48eac6['shift']());}};_0x33383c(++_0x364521);}(_0xaa12,0xec));var _0x2aa1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xaa12[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x2aa1('0x0'));var util=require('util');var moment=require(_0x2aa1('0x1'));var BPromise=require(_0x2aa1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2aa1('0x3'));var db=require(_0x2aa1('0x4'))['db'];var utils=require(_0x2aa1('0x5'));var logger=require(_0x2aa1('0x6'))(_0x2aa1('0x7'));var config=require(_0x2aa1('0x8'));var jayson=require(_0x2aa1('0x9'));var client=jayson[_0x2aa1('0xa')][_0x2aa1('0xb')]({'port':0x232a});config[_0x2aa1('0xc')]=_[_0x2aa1('0xd')](config[_0x2aa1('0xc')],{'host':_0x2aa1('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2aa1('0xc')]));require(_0x2aa1('0xf'))[_0x2aa1('0x10')](socket);function respondWithRpcPromise(_0x26d2f9,_0x44e0aa,_0xe4e40f){return new BPromise(function(_0x2d1c4e,_0x406a22){return client[_0x2aa1('0x11')](_0x26d2f9,_0xe4e40f)['then'](function(_0x5889f0){logger[_0x2aa1('0x12')](_0x2aa1('0x13'),_0x44e0aa,_0x2aa1('0x14'));logger['debug'](_0x2aa1('0x15'),_0x44e0aa,'request\x20sent',JSON[_0x2aa1('0x16')](_0x5889f0));if(_0x5889f0[_0x2aa1('0x17')]){if(_0x5889f0['error'][_0x2aa1('0x18')]===0x1f4){logger[_0x2aa1('0x17')](_0x2aa1('0x13'),_0x44e0aa,_0x5889f0[_0x2aa1('0x17')][_0x2aa1('0x19')]);return _0x406a22(_0x5889f0[_0x2aa1('0x17')][_0x2aa1('0x19')]);}logger[_0x2aa1('0x17')](_0x2aa1('0x13'),_0x44e0aa,_0x5889f0[_0x2aa1('0x17')][_0x2aa1('0x19')]);return _0x2d1c4e(_0x5889f0[_0x2aa1('0x17')][_0x2aa1('0x19')]);}else{logger[_0x2aa1('0x12')](_0x2aa1('0x13'),_0x44e0aa,_0x2aa1('0x14'));_0x2d1c4e(_0x5889f0['result'][_0x2aa1('0x19')]);}})[_0x2aa1('0x1a')](function(_0x1c8ef2){logger[_0x2aa1('0x17')](_0x2aa1('0x13'),_0x44e0aa,_0x1c8ef2);_0x406a22(_0x1c8ef2);});});}exports['GetMailQueue']=function(_0xd118f1){var _0xff0443=this;return new Promise(function(_0x4f1dc0,_0x1cb876){return db[_0x2aa1('0x1b')][_0x2aa1('0x1c')]({'raw':_0xd118f1[_0x2aa1('0x1d')]?_0xd118f1[_0x2aa1('0x1d')][_0x2aa1('0x1e')]===undefined?!![]:![]:!![],'where':_0xd118f1[_0x2aa1('0x1d')]?_0xd118f1[_0x2aa1('0x1d')][_0x2aa1('0x1f')]||null:null,'attributes':_0xd118f1['options']?_0xd118f1[_0x2aa1('0x1d')][_0x2aa1('0x20')]||null:null,'limit':_0xd118f1[_0x2aa1('0x1d')]?_0xd118f1[_0x2aa1('0x1d')][_0x2aa1('0x21')]||null:null,'include':_0xd118f1[_0x2aa1('0x1d')]?_0xd118f1[_0x2aa1('0x1d')]['include']?_[_0x2aa1('0x22')](_0xd118f1['options']['include'],function(_0x714620){return{'model':db[_0x714620[_0x2aa1('0x23')]],'as':_0x714620['as'],'attributes':_0x714620[_0x2aa1('0x20')],'include':_0x714620[_0x2aa1('0x24')]?_[_0x2aa1('0x22')](_0x714620[_0x2aa1('0x24')],function(_0x4d186b){return{'model':db[_0x4d186b[_0x2aa1('0x23')]],'as':_0x4d186b['as'],'attributes':_0x4d186b[_0x2aa1('0x20')],'include':_0x4d186b[_0x2aa1('0x24')]?_[_0x2aa1('0x22')](_0x4d186b[_0x2aa1('0x24')],function(_0x151365){return{'model':db[_0x151365[_0x2aa1('0x23')]],'as':_0x151365['as'],'attributes':_0x151365[_0x2aa1('0x20')]};}):[]};}):[]};}):[]:[]})[_0x2aa1('0x25')](function(_0x68e5c8){logger['info'](_0x2aa1('0x26'),_0xd118f1);logger[_0x2aa1('0x27')](_0x2aa1('0x26'),_0xd118f1,JSON[_0x2aa1('0x16')](_0x68e5c8));_0x4f1dc0(_0x68e5c8);})[_0x2aa1('0x1a')](function(_0xb5595c){logger[_0x2aa1('0x17')](_0x2aa1('0x26'),_0xb5595c['message'],_0xd118f1);_0x1cb876(_0xff0443[_0x2aa1('0x17')](0x1f4,_0xb5595c[_0x2aa1('0x19')]));});});};exports[_0x2aa1('0x28')]=function(_0x447d17){var _0x4e45f1=this;return new Promise(function(_0x4371df,_0x208205){return db[_0x2aa1('0x1b')][_0x2aa1('0x29')]({'raw':_0x447d17[_0x2aa1('0x1d')]?_0x447d17['options'][_0x2aa1('0x1e')]===undefined?!![]:![]:!![],'where':_0x447d17['options']?_0x447d17[_0x2aa1('0x1d')][_0x2aa1('0x1f')]||null:null,'attributes':_0x447d17[_0x2aa1('0x1d')]?_0x447d17[_0x2aa1('0x1d')]['attributes']||null:null,'include':_0x447d17[_0x2aa1('0x1d')]?_0x447d17[_0x2aa1('0x1d')][_0x2aa1('0x24')]?_[_0x2aa1('0x22')](_0x447d17[_0x2aa1('0x1d')]['include'],function(_0x55edcb){return{'model':db[_0x55edcb[_0x2aa1('0x23')]],'as':_0x55edcb['as'],'attributes':_0x55edcb[_0x2aa1('0x20')],'include':_0x55edcb[_0x2aa1('0x24')]?_[_0x2aa1('0x22')](_0x55edcb[_0x2aa1('0x24')],function(_0x598622){return{'model':db[_0x598622['model']],'as':_0x598622['as'],'attributes':_0x598622[_0x2aa1('0x20')],'include':_0x598622[_0x2aa1('0x24')]?_[_0x2aa1('0x22')](_0x598622['include'],function(_0x391986){return{'model':db[_0x391986[_0x2aa1('0x23')]],'as':_0x391986['as'],'attributes':_0x391986['attributes']};}):[]};}):[]};}):[]:[]})[_0x2aa1('0x25')](function(_0x2b1baf){logger['info']('ShowMailQueue',_0x447d17);logger[_0x2aa1('0x27')](_0x2aa1('0x28'),_0x447d17,JSON[_0x2aa1('0x16')](_0x2b1baf));_0x4371df(_0x2b1baf);})[_0x2aa1('0x1a')](function(_0x506c63){logger[_0x2aa1('0x17')](_0x2aa1('0x28'),_0x506c63[_0x2aa1('0x19')],_0x447d17);_0x208205(_0x4e45f1['error'](0x1f4,_0x506c63['message']));});});};
\ No newline at end of file
+var _0xbc02=['where','include','map','attributes','model','then','ShowMailQueue','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','request','MailQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','GetMailQueue','MailQueue','findAll','options','raw'];(function(_0x4ec395,_0x368efc){var _0x5aa8cc=function(_0x1ceffe){while(--_0x1ceffe){_0x4ec395['push'](_0x4ec395['shift']());}};_0x5aa8cc(++_0x368efc);}(_0xbc02,0x15d));var _0x2bc0=function(_0x117395,_0x555417){_0x117395=_0x117395-0x0;var _0x4fc350=_0xbc02[_0x117395];return _0x4fc350;};'use strict';var _=require(_0x2bc0('0x0'));var util=require(_0x2bc0('0x1'));var moment=require(_0x2bc0('0x2'));var BPromise=require(_0x2bc0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2bc0('0x4'));var logger=require(_0x2bc0('0x5'))(_0x2bc0('0x6'));var config=require(_0x2bc0('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2bc0('0x8')]['http']({'port':0x232a});config[_0x2bc0('0x9')]=_[_0x2bc0('0xa')](config[_0x2bc0('0x9')],{'host':_0x2bc0('0xb'),'port':0x18eb});var socket=require(_0x2bc0('0xc'))(new Redis(config['redis']));require(_0x2bc0('0xd'))[_0x2bc0('0xe')](socket);function respondWithRpcPromise(_0x1fd333,_0x21584f,_0x562252){return new BPromise(function(_0x5f14c6,_0x31e6e2){return client[_0x2bc0('0xf')](_0x1fd333,_0x562252)['then'](function(_0x385b1a){logger['info'](_0x2bc0('0x10'),_0x21584f,_0x2bc0('0x11'));logger[_0x2bc0('0x12')]('MailQueue,\x20%s,\x20%s,\x20%s',_0x21584f,_0x2bc0('0x11'),JSON[_0x2bc0('0x13')](_0x385b1a));if(_0x385b1a['error']){if(_0x385b1a[_0x2bc0('0x14')][_0x2bc0('0x15')]===0x1f4){logger[_0x2bc0('0x14')](_0x2bc0('0x10'),_0x21584f,_0x385b1a[_0x2bc0('0x14')]['message']);return _0x31e6e2(_0x385b1a[_0x2bc0('0x14')][_0x2bc0('0x16')]);}logger[_0x2bc0('0x14')](_0x2bc0('0x10'),_0x21584f,_0x385b1a[_0x2bc0('0x14')][_0x2bc0('0x16')]);return _0x5f14c6(_0x385b1a['error']['message']);}else{logger[_0x2bc0('0x17')](_0x2bc0('0x10'),_0x21584f,_0x2bc0('0x11'));_0x5f14c6(_0x385b1a[_0x2bc0('0x18')]['message']);}})[_0x2bc0('0x19')](function(_0x59bd9a){logger['error'](_0x2bc0('0x10'),_0x21584f,_0x59bd9a);_0x31e6e2(_0x59bd9a);});});}exports[_0x2bc0('0x1a')]=function(_0x268b0e){var _0x2cfcd7=this;return new Promise(function(_0x11d291,_0x38c93c){return db[_0x2bc0('0x1b')][_0x2bc0('0x1c')]({'raw':_0x268b0e[_0x2bc0('0x1d')]?_0x268b0e[_0x2bc0('0x1d')][_0x2bc0('0x1e')]===undefined?!![]:![]:!![],'where':_0x268b0e[_0x2bc0('0x1d')]?_0x268b0e[_0x2bc0('0x1d')][_0x2bc0('0x1f')]||null:null,'attributes':_0x268b0e['options']?_0x268b0e[_0x2bc0('0x1d')]['attributes']||null:null,'limit':_0x268b0e[_0x2bc0('0x1d')]?_0x268b0e[_0x2bc0('0x1d')]['limit']||null:null,'include':_0x268b0e[_0x2bc0('0x1d')]?_0x268b0e[_0x2bc0('0x1d')][_0x2bc0('0x20')]?_[_0x2bc0('0x21')](_0x268b0e[_0x2bc0('0x1d')][_0x2bc0('0x20')],function(_0x475a14){return{'model':db[_0x475a14['model']],'as':_0x475a14['as'],'attributes':_0x475a14[_0x2bc0('0x22')],'include':_0x475a14['include']?_['map'](_0x475a14['include'],function(_0x407bbf){return{'model':db[_0x407bbf['model']],'as':_0x407bbf['as'],'attributes':_0x407bbf[_0x2bc0('0x22')],'include':_0x407bbf['include']?_[_0x2bc0('0x21')](_0x407bbf[_0x2bc0('0x20')],function(_0x28a334){return{'model':db[_0x28a334[_0x2bc0('0x23')]],'as':_0x28a334['as'],'attributes':_0x28a334[_0x2bc0('0x22')]};}):[]};}):[]};}):[]:[]})[_0x2bc0('0x24')](function(_0x2157ca){logger['info'](_0x2bc0('0x1a'),_0x268b0e);logger['debug'](_0x2bc0('0x1a'),_0x268b0e,JSON[_0x2bc0('0x13')](_0x2157ca));_0x11d291(_0x2157ca);})['catch'](function(_0x2067e2){logger[_0x2bc0('0x14')](_0x2bc0('0x1a'),_0x2067e2['message'],_0x268b0e);_0x38c93c(_0x2cfcd7[_0x2bc0('0x14')](0x1f4,_0x2067e2[_0x2bc0('0x16')]));});});};exports[_0x2bc0('0x25')]=function(_0x4d2d13){var _0x4079f3=this;return new Promise(function(_0x45e886,_0x377734){return db[_0x2bc0('0x1b')]['find']({'raw':_0x4d2d13[_0x2bc0('0x1d')]?_0x4d2d13[_0x2bc0('0x1d')][_0x2bc0('0x1e')]===undefined?!![]:![]:!![],'where':_0x4d2d13['options']?_0x4d2d13['options'][_0x2bc0('0x1f')]||null:null,'attributes':_0x4d2d13[_0x2bc0('0x1d')]?_0x4d2d13[_0x2bc0('0x1d')][_0x2bc0('0x22')]||null:null,'include':_0x4d2d13[_0x2bc0('0x1d')]?_0x4d2d13[_0x2bc0('0x1d')][_0x2bc0('0x20')]?_[_0x2bc0('0x21')](_0x4d2d13[_0x2bc0('0x1d')][_0x2bc0('0x20')],function(_0x40dd81){return{'model':db[_0x40dd81['model']],'as':_0x40dd81['as'],'attributes':_0x40dd81['attributes'],'include':_0x40dd81[_0x2bc0('0x20')]?_[_0x2bc0('0x21')](_0x40dd81[_0x2bc0('0x20')],function(_0x4f0453){return{'model':db[_0x4f0453[_0x2bc0('0x23')]],'as':_0x4f0453['as'],'attributes':_0x4f0453[_0x2bc0('0x22')],'include':_0x4f0453[_0x2bc0('0x20')]?_[_0x2bc0('0x21')](_0x4f0453[_0x2bc0('0x20')],function(_0x1efc41){return{'model':db[_0x1efc41[_0x2bc0('0x23')]],'as':_0x1efc41['as'],'attributes':_0x1efc41[_0x2bc0('0x22')]};}):[]};}):[]};}):[]:[]})[_0x2bc0('0x24')](function(_0x4a9cc8){logger[_0x2bc0('0x17')](_0x2bc0('0x25'),_0x4d2d13);logger[_0x2bc0('0x12')]('ShowMailQueue',_0x4d2d13,JSON['stringify'](_0x4a9cc8));_0x45e886(_0x4a9cc8);})[_0x2bc0('0x19')](function(_0x35ed32){logger[_0x2bc0('0x14')](_0x2bc0('0x25'),_0x35ed32[_0x2bc0('0x16')],_0x4d2d13);_0x377734(_0x4079f3[_0x2bc0('0x14')](0x1f4,_0x35ed32[_0x2bc0('0x16')]));});});};
\ No newline at end of file
index 81df49f..a6f6382 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x987f=['mailQueue:','./mailQueue.events','remove','update','emit'];(function(_0x4a4922,_0x82cb8f){var _0x55a8c6=function(_0x59712e){while(--_0x59712e){_0x4a4922['push'](_0x4a4922['shift']());}};_0x55a8c6(++_0x82cb8f);}(_0x987f,0x169));var _0xf987=function(_0x5ac7d7,_0x109040){_0x5ac7d7=_0x5ac7d7-0x0;var _0x23955f=_0x987f[_0x5ac7d7];return _0x23955f;};'use strict';var MailQueueEvents=require(_0xf987('0x0'));var events=['save',_0xf987('0x1'),_0xf987('0x2')];function createListener(_0x5935e2,_0x58255e){return function(_0xd53e93){_0x58255e[_0xf987('0x3')](_0x5935e2,_0xd53e93);};}function removeListener(_0x56f695,_0x42835f){return function(){MailQueueEvents['removeListener'](_0x56f695,_0x42835f);};}exports['register']=function(_0x4765dd){for(var _0xc48d78=0x0,_0x45bfe6=events['length'];_0xc48d78<_0x45bfe6;_0xc48d78++){var _0x1ba4bd=events[_0xc48d78];var _0x2bc3d2=createListener(_0xf987('0x4')+_0x1ba4bd,_0x4765dd);MailQueueEvents['on'](_0x1ba4bd,_0x2bc3d2);}};
\ No newline at end of file
+var _0x0326=['removeListener','register','length','mailQueue:','./mailQueue.events','save','remove'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0326,0x115));var _0x6032=function(_0x18705c,_0x4bb8ad){_0x18705c=_0x18705c-0x0;var _0x19ad8d=_0x0326[_0x18705c];return _0x19ad8d;};'use strict';var MailQueueEvents=require(_0x6032('0x0'));var events=[_0x6032('0x1'),_0x6032('0x2'),'update'];function createListener(_0x4da7ec,_0x19f704){return function(_0x13e1d2){_0x19f704['emit'](_0x4da7ec,_0x13e1d2);};}function removeListener(_0x187869,_0x29f116){return function(){MailQueueEvents[_0x6032('0x3')](_0x187869,_0x29f116);};}exports[_0x6032('0x4')]=function(_0xefe798){for(var _0xf8769b=0x0,_0x13a919=events[_0x6032('0x5')];_0xf8769b<_0x13a919;_0xf8769b++){var _0x8ae1ff=events[_0xf8769b];var _0x3c94ee=createListener(_0x6032('0x6')+_0x8ae1ff,_0xefe798);MailQueueEvents['on'](_0x8ae1ff,_0x3c94ee);}};
\ No newline at end of file
index 31172dc..c8de2e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccae=['create','put','/:id','update','delete','destroy','util','path','../../components/auth/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','/describe','describe','show','post'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xccae,0x105));var _0xecca=function(_0x1589dd,_0x2b9d22){_0x1589dd=_0x1589dd-0x0;var _0x1bddd1=_0xccae[_0x1589dd];return _0x1bddd1;};'use strict';var multer=require('multer');var util=require(_0xecca('0x0'));var path=require(_0xecca('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xecca('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0xecca('0x3'));var controller=require(_0xecca('0x4'));router[_0xecca('0x5')]('/',auth[_0xecca('0x6')](),controller['index']);router[_0xecca('0x5')](_0xecca('0x7'),auth[_0xecca('0x6')](),controller[_0xecca('0x8')]);router[_0xecca('0x5')]('/:id',auth[_0xecca('0x6')](),controller[_0xecca('0x9')]);router[_0xecca('0xa')]('/',auth[_0xecca('0x6')](),controller[_0xecca('0xb')]);router[_0xecca('0xc')](_0xecca('0xd'),auth[_0xecca('0x6')](),controller[_0xecca('0xe')]);router[_0xecca('0xf')]('/:id',auth[_0xecca('0x6')](),controller[_0xecca('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x68eb=['/describe','show','post','create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','index'];(function(_0x12f036,_0x27e401){var _0xf0be1b=function(_0x4084c){while(--_0x4084c){_0x12f036['push'](_0x12f036['shift']());}};_0xf0be1b(++_0x27e401);}(_0x68eb,0x128));var _0xb68e=function(_0x5a7e78,_0x400b57){_0x5a7e78=_0x5a7e78-0x0;var _0xa8d4a1=_0x68eb[_0x5a7e78];return _0xa8d4a1;};'use strict';var multer=require('multer');var util=require(_0xb68e('0x0'));var path=require(_0xb68e('0x1'));var timeout=require(_0xb68e('0x2'));var express=require(_0xb68e('0x3'));var router=express[_0xb68e('0x4')]();var fs_extra=require(_0xb68e('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb68e('0x6'));var config=require(_0xb68e('0x7'));var controller=require(_0xb68e('0x8'));router[_0xb68e('0x9')]('/',auth[_0xb68e('0xa')](),controller[_0xb68e('0xb')]);router[_0xb68e('0x9')](_0xb68e('0xc'),auth[_0xb68e('0xa')](),controller['describe']);router[_0xb68e('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xb68e('0xd')]);router[_0xb68e('0xe')]('/',auth[_0xb68e('0xa')](),controller[_0xb68e('0xf')]);router[_0xb68e('0x10')](_0xb68e('0x11'),auth[_0xb68e('0xa')](),controller[_0xb68e('0x12')]);router[_0xb68e('0x13')](_0xb68e('0x11'),auth[_0xb68e('0xa')](),controller[_0xb68e('0x14')]);module[_0xb68e('0x15')]=router;
\ No newline at end of file
index 43d4957..7aed6f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa354=['STRING','DATE','sequelize','exports'];(function(_0x15ecbd,_0x1a19cd){var _0x272e98=function(_0x4f3f62){while(--_0x4f3f62){_0x15ecbd['push'](_0x15ecbd['shift']());}};_0x272e98(++_0x1a19cd);}(_0xa354,0x146));var _0x4a35=function(_0x5233b6,_0x380348){_0x5233b6=_0x5233b6-0x0;var _0x47300d=_0xa354[_0x5233b6];return _0x47300d;};'use strict';var moment=require('moment');var Sequelize=require(_0x4a35('0x0'));module[_0x4a35('0x1')]={'uniqueid':{'type':Sequelize[_0x4a35('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x4a35('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x4a35('0x3')]},'acceptAt':{'type':Sequelize[_0x4a35('0x3')]},'exitAt':{'type':Sequelize[_0x4a35('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6c09=['STRING','DATE','moment','sequelize','exports'];(function(_0x49efc1,_0x316f56){var _0x136215=function(_0x1502bd){while(--_0x1502bd){_0x49efc1['push'](_0x49efc1['shift']());}};_0x136215(++_0x316f56);}(_0x6c09,0x110));var _0x96c0=function(_0x38c7ca,_0x35241b){_0x38c7ca=_0x38c7ca-0x0;var _0x296fd3=_0x6c09[_0x38c7ca];return _0x296fd3;};'use strict';var moment=require(_0x96c0('0x0'));var Sequelize=require(_0x96c0('0x1'));module[_0x96c0('0x2')]={'uniqueid':{'type':Sequelize[_0x96c0('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x96c0('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x96c0('0x3')]}};
\ No newline at end of file
index 0c1bff0..c473035 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa456=['where','filters','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','params','keys','options','catch','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','sendStatus','status','end','undefined','count','offset','set','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','MailQueueReport','rawAttributes','fieldName','key','model','query','intersection','attributes','fields','length','nolimit','limit','order','sort'];(function(_0x2a0350,_0x249319){var _0x425220=function(_0x1d5f78){while(--_0x1d5f78){_0x2a0350['push'](_0x2a0350['shift']());}};_0x425220(++_0x249319);}(_0xa456,0x142));var _0x6a45=function(_0x47a349,_0x4699d9){_0x47a349=_0x47a349-0x0;var _0x18ab75=_0xa456[_0x47a349];return _0x18ab75;};'use strict';var emlformat=require(_0x6a45('0x0'));var rimraf=require(_0x6a45('0x1'));var zipdir=require(_0x6a45('0x2'));var jsonpatch=require(_0x6a45('0x3'));var rp=require('request-promise');var moment=require(_0x6a45('0x4'));var BPromise=require(_0x6a45('0x5'));var Mustache=require(_0x6a45('0x6'));var util=require('util');var path=require(_0x6a45('0x7'));var sox=require(_0x6a45('0x8'));var csv=require(_0x6a45('0x9'));var ejs=require(_0x6a45('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6a45('0xb'));var squel=require(_0x6a45('0xc'));var crypto=require(_0x6a45('0xd'));var jsforce=require(_0x6a45('0xe'));var deskjs=require(_0x6a45('0xf'));var toCsv=require('to-csv');var querystring=require(_0x6a45('0x10'));var Papa=require('papaparse');var Redis=require(_0x6a45('0x11'));var authService=require(_0x6a45('0x12'));var qs=require(_0x6a45('0x13'));var as=require(_0x6a45('0x14'));var hardwareService=require(_0x6a45('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x6a45('0x16'));var config=require(_0x6a45('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x511b92,_0x1aa4b4){_0x1aa4b4=_0x1aa4b4||0xcc;return function(_0x25a8b9){if(_0x25a8b9){return _0x511b92[_0x6a45('0x18')](_0x1aa4b4);}return _0x511b92[_0x6a45('0x19')](_0x1aa4b4)[_0x6a45('0x1a')]();};}function respondWithResult(_0x5a9f29,_0x563c3b){_0x563c3b=_0x563c3b||0xc8;return function(_0x3a5d94){if(_0x3a5d94){return _0x5a9f29[_0x6a45('0x19')](_0x563c3b)['json'](_0x3a5d94);}};}function respondWithFilteredResult(_0x2c20db,_0x171176){return function(_0x3fab82){if(_0x3fab82){var _0x13adc0=typeof _0x171176['offset']==='undefined'&&typeof _0x171176['limit']===_0x6a45('0x1b');var _0x391f81=_0x3fab82[_0x6a45('0x1c')];var _0x52a055=_0x13adc0?0x0:_0x171176[_0x6a45('0x1d')];var _0x102981=_0x13adc0?_0x3fab82[_0x6a45('0x1c')]:_0x171176['offset']+_0x171176['limit'];var _0x573453;if(_0x102981>=_0x391f81){_0x102981=_0x391f81;_0x573453=0xc8;}else{_0x573453=0xce;}_0x2c20db[_0x6a45('0x19')](_0x573453);return _0x2c20db[_0x6a45('0x1e')]('Content-Range',_0x52a055+'-'+_0x102981+'/'+_0x391f81)[_0x6a45('0x1f')](_0x3fab82);}return null;};}function patchUpdates(_0x1be485){return function(_0x4f7000){try{jsonpatch[_0x6a45('0x20')](_0x4f7000,_0x1be485,!![]);}catch(_0xdf10c6){return BPromise[_0x6a45('0x21')](_0xdf10c6);}return _0x4f7000[_0x6a45('0x22')]();};}function saveUpdates(_0x15ad0e,_0x487666){return function(_0x5d990e){if(_0x5d990e){return _0x5d990e[_0x6a45('0x23')](_0x15ad0e)[_0x6a45('0x24')](function(_0x11290c){return _0x11290c;});}return null;};}function removeEntity(_0x22373c,_0x25a380){return function(_0x3ad898){if(_0x3ad898){return _0x3ad898[_0x6a45('0x25')]()[_0x6a45('0x24')](function(){_0x22373c[_0x6a45('0x19')](0xcc)[_0x6a45('0x1a')]();});}};}function handleEntityNotFound(_0x1310d7,_0x46587a){return function(_0x5cd761){if(!_0x5cd761){_0x1310d7[_0x6a45('0x18')](0x194);}return _0x5cd761;};}function handleError(_0x5a0389,_0x1b83fa){_0x1b83fa=_0x1b83fa||0x1f4;return function(_0x25467d){logger[_0x6a45('0x26')](_0x25467d[_0x6a45('0x27')]);if(_0x25467d[_0x6a45('0x28')]){delete _0x25467d['name'];}_0x5a0389[_0x6a45('0x19')](_0x1b83fa)[_0x6a45('0x29')](_0x25467d);};}exports[_0x6a45('0x2a')]=function(_0x1ccff0,_0x8265d9){var _0x227b6f={},_0x3fac9b={},_0x313c13={'count':0x0,'rows':[]};var _0x54286d=_[_0x6a45('0x2b')](db[_0x6a45('0x2c')][_0x6a45('0x2d')],function(_0x201369){return{'name':_0x201369[_0x6a45('0x2e')],'type':_0x201369['type'][_0x6a45('0x2f')]};});_0x3fac9b[_0x6a45('0x30')]=_[_0x6a45('0x2b')](_0x54286d,_0x6a45('0x28'));_0x3fac9b['query']=_['keys'](_0x1ccff0[_0x6a45('0x31')]);_0x3fac9b['filters']=_[_0x6a45('0x32')](_0x3fac9b['model'],_0x3fac9b[_0x6a45('0x31')]);_0x227b6f[_0x6a45('0x33')]=_[_0x6a45('0x32')](_0x3fac9b[_0x6a45('0x30')],qs[_0x6a45('0x34')](_0x1ccff0[_0x6a45('0x31')][_0x6a45('0x34')]));_0x227b6f[_0x6a45('0x33')]=_0x227b6f[_0x6a45('0x33')][_0x6a45('0x35')]?_0x227b6f[_0x6a45('0x33')]:_0x3fac9b[_0x6a45('0x30')];if(!_0x1ccff0[_0x6a45('0x31')]['hasOwnProperty'](_0x6a45('0x36'))){_0x227b6f['limit']=qs[_0x6a45('0x37')](_0x1ccff0[_0x6a45('0x31')][_0x6a45('0x37')]);_0x227b6f[_0x6a45('0x1d')]=qs[_0x6a45('0x1d')](_0x1ccff0[_0x6a45('0x31')]['offset']);}_0x227b6f[_0x6a45('0x38')]=qs[_0x6a45('0x39')](_0x1ccff0[_0x6a45('0x31')][_0x6a45('0x39')]);_0x227b6f[_0x6a45('0x3a')]=qs[_0x6a45('0x3b')](_['pick'](_0x1ccff0[_0x6a45('0x31')],_0x3fac9b[_0x6a45('0x3b')]),_0x54286d);if(_0x1ccff0['query'][_0x6a45('0x3c')]){_0x227b6f[_0x6a45('0x3a')]=_[_0x6a45('0x3d')](_0x227b6f[_0x6a45('0x3a')],{'$or':_[_0x6a45('0x2b')](_0x54286d,function(_0x50ebe0){if(_0x50ebe0[_0x6a45('0x3e')]!==_0x6a45('0x3f')){var _0x205afd={};_0x205afd[_0x50ebe0[_0x6a45('0x28')]]={'$like':'%'+_0x1ccff0[_0x6a45('0x31')][_0x6a45('0x3c')]+'%'};return _0x205afd;}})});}_0x227b6f=_[_0x6a45('0x3d')]({},_0x227b6f,_0x1ccff0['options']);var _0x1c941a={'where':_0x227b6f['where']};return db[_0x6a45('0x2c')][_0x6a45('0x1c')](_0x1c941a)[_0x6a45('0x24')](function(_0x2715dc){_0x313c13['count']=_0x2715dc;if(_0x1ccff0['query'][_0x6a45('0x40')]){_0x227b6f[_0x6a45('0x41')]=[{'all':!![]}];}return db['MailQueueReport'][_0x6a45('0x42')](_0x227b6f);})[_0x6a45('0x24')](function(_0x3bd926){_0x313c13[_0x6a45('0x43')]=_0x3bd926;return _0x313c13;})['then'](respondWithFilteredResult(_0x8265d9,_0x227b6f))['catch'](handleError(_0x8265d9,null));};exports['show']=function(_0x5b9798,_0xe90201){var _0xb5d191={'raw':!![],'where':{'id':_0x5b9798[_0x6a45('0x44')]['id']}},_0x328d9f={};_0x328d9f[_0x6a45('0x30')]=_[_0x6a45('0x45')](db[_0x6a45('0x2c')][_0x6a45('0x2d')]);_0x328d9f['query']=_[_0x6a45('0x45')](_0x5b9798['query']);_0x328d9f['filters']=_[_0x6a45('0x32')](_0x328d9f[_0x6a45('0x30')],_0x328d9f['query']);_0xb5d191[_0x6a45('0x33')]=_['intersection'](_0x328d9f[_0x6a45('0x30')],qs[_0x6a45('0x34')](_0x5b9798[_0x6a45('0x31')][_0x6a45('0x34')]));_0xb5d191['attributes']=_0xb5d191[_0x6a45('0x33')][_0x6a45('0x35')]?_0xb5d191[_0x6a45('0x33')]:_0x328d9f[_0x6a45('0x30')];if(_0x5b9798[_0x6a45('0x31')]['includeAll']){_0xb5d191[_0x6a45('0x41')]=[{'all':!![]}];}_0xb5d191=_['merge']({},_0xb5d191,_0x5b9798[_0x6a45('0x46')]);return db[_0x6a45('0x2c')]['find'](_0xb5d191)[_0x6a45('0x24')](handleEntityNotFound(_0xe90201,null))[_0x6a45('0x24')](respondWithResult(_0xe90201,null))[_0x6a45('0x47')](handleError(_0xe90201,null));};exports[_0x6a45('0x48')]=function(_0x524296,_0x34bbb7){return db['MailQueueReport'][_0x6a45('0x48')](_0x524296['body'],{})[_0x6a45('0x24')](respondWithResult(_0x34bbb7,0xc9))[_0x6a45('0x47')](handleError(_0x34bbb7,null));};exports[_0x6a45('0x23')]=function(_0x2bf8d3,_0x5d9f52){if(_0x2bf8d3[_0x6a45('0x49')]['id']){delete _0x2bf8d3[_0x6a45('0x49')]['id'];}return db[_0x6a45('0x2c')][_0x6a45('0x4a')]({'where':{'id':_0x2bf8d3[_0x6a45('0x44')]['id']}})[_0x6a45('0x24')](handleEntityNotFound(_0x5d9f52,null))[_0x6a45('0x24')](saveUpdates(_0x2bf8d3[_0x6a45('0x49')],null))[_0x6a45('0x24')](respondWithResult(_0x5d9f52,null))[_0x6a45('0x47')](handleError(_0x5d9f52,null));};exports['destroy']=function(_0x3ea4a7,_0x8877c7){return db[_0x6a45('0x2c')][_0x6a45('0x4a')]({'where':{'id':_0x3ea4a7['params']['id']}})[_0x6a45('0x24')](handleEntityNotFound(_0x8877c7,null))[_0x6a45('0x24')](removeEntity(_0x8877c7,null))[_0x6a45('0x47')](handleError(_0x8877c7,null));};exports['describe']=function(_0x4e7967,_0x5a17b8){return db[_0x6a45('0x2c')][_0x6a45('0x4b')]()[_0x6a45('0x24')](respondWithResult(_0x5a17b8,null))[_0x6a45('0x47')](handleError(_0x5a17b8,null));};
\ No newline at end of file
+var _0xda2d=['send','index','map','MailQueueReport','rawAttributes','fieldName','type','model','filters','fields','query','attributes','length','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','include','findAll','rows','catch','params','keys','intersection','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','reject','save','update','then','destroy','error','name'];(function(_0x9e7ef5,_0x4f3a5f){var _0x3bc196=function(_0x40106c){while(--_0x40106c){_0x9e7ef5['push'](_0x9e7ef5['shift']());}};_0x3bc196(++_0x4f3a5f);}(_0xda2d,0x102));var _0xdda2=function(_0x347676,_0x4b1a32){_0x347676=_0x347676-0x0;var _0x3fa991=_0xda2d[_0x347676];return _0x3fa991;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdda2('0x0'));var zipdir=require(_0xdda2('0x1'));var jsonpatch=require(_0xdda2('0x2'));var rp=require(_0xdda2('0x3'));var moment=require(_0xdda2('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xdda2('0x5'));var sox=require(_0xdda2('0x6'));var csv=require(_0xdda2('0x7'));var ejs=require(_0xdda2('0x8'));var fs=require('fs');var fs_extra=require(_0xdda2('0x9'));var _=require(_0xdda2('0xa'));var squel=require(_0xdda2('0xb'));var crypto=require(_0xdda2('0xc'));var jsforce=require(_0xdda2('0xd'));var deskjs=require(_0xdda2('0xe'));var toCsv=require('to-csv');var querystring=require(_0xdda2('0xf'));var Papa=require(_0xdda2('0x10'));var Redis=require('ioredis');var authService=require(_0xdda2('0x11'));var qs=require(_0xdda2('0x12'));var as=require(_0xdda2('0x13'));var hardwareService=require(_0xdda2('0x14'));var logger=require(_0xdda2('0x15'))(_0xdda2('0x16'));var utils=require(_0xdda2('0x17'));var config=require(_0xdda2('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x56d25d,_0xa6446b){_0xa6446b=_0xa6446b||0xcc;return function(_0x320f73){if(_0x320f73){return _0x56d25d[_0xdda2('0x19')](_0xa6446b);}return _0x56d25d[_0xdda2('0x1a')](_0xa6446b)[_0xdda2('0x1b')]();};}function respondWithResult(_0x475222,_0x3490f1){_0x3490f1=_0x3490f1||0xc8;return function(_0x4df902){if(_0x4df902){return _0x475222[_0xdda2('0x1a')](_0x3490f1)['json'](_0x4df902);}};}function respondWithFilteredResult(_0xbef148,_0xb6b01e){return function(_0x3553d5){if(_0x3553d5){var _0x457764=typeof _0xb6b01e[_0xdda2('0x1c')]==='undefined'&&typeof _0xb6b01e['limit']===_0xdda2('0x1d');var _0x518c6d=_0x3553d5[_0xdda2('0x1e')];var _0x1a3b35=_0x457764?0x0:_0xb6b01e[_0xdda2('0x1c')];var _0x2b6ee8=_0x457764?_0x3553d5[_0xdda2('0x1e')]:_0xb6b01e[_0xdda2('0x1c')]+_0xb6b01e[_0xdda2('0x1f')];var _0x351151;if(_0x2b6ee8>=_0x518c6d){_0x2b6ee8=_0x518c6d;_0x351151=0xc8;}else{_0x351151=0xce;}_0xbef148[_0xdda2('0x1a')](_0x351151);return _0xbef148[_0xdda2('0x20')](_0xdda2('0x21'),_0x1a3b35+'-'+_0x2b6ee8+'/'+_0x518c6d)[_0xdda2('0x22')](_0x3553d5);}return null;};}function patchUpdates(_0x4eed30){return function(_0x41fe7d){try{jsonpatch['apply'](_0x41fe7d,_0x4eed30,!![]);}catch(_0xc4567c){return BPromise[_0xdda2('0x23')](_0xc4567c);}return _0x41fe7d[_0xdda2('0x24')]();};}function saveUpdates(_0x4c5226,_0x347ee6){return function(_0x5a9bb8){if(_0x5a9bb8){return _0x5a9bb8[_0xdda2('0x25')](_0x4c5226)[_0xdda2('0x26')](function(_0x4ac3eb){return _0x4ac3eb;});}return null;};}function removeEntity(_0x144f1e,_0xfda248){return function(_0x2528d7){if(_0x2528d7){return _0x2528d7[_0xdda2('0x27')]()[_0xdda2('0x26')](function(){_0x144f1e['status'](0xcc)[_0xdda2('0x1b')]();});}};}function handleEntityNotFound(_0x4be5ea,_0x2391a5){return function(_0x31d48b){if(!_0x31d48b){_0x4be5ea['sendStatus'](0x194);}return _0x31d48b;};}function handleError(_0x4e97dc,_0x28da54){_0x28da54=_0x28da54||0x1f4;return function(_0x4567e7){logger[_0xdda2('0x28')](_0x4567e7['stack']);if(_0x4567e7[_0xdda2('0x29')]){delete _0x4567e7[_0xdda2('0x29')];}_0x4e97dc[_0xdda2('0x1a')](_0x28da54)[_0xdda2('0x2a')](_0x4567e7);};}exports[_0xdda2('0x2b')]=function(_0x91b41a,_0x4bb8a4){var _0x24c37d={},_0x255bbc={},_0x53acb5={'count':0x0,'rows':[]};var _0x45e800=_[_0xdda2('0x2c')](db[_0xdda2('0x2d')][_0xdda2('0x2e')],function(_0x5540e5){return{'name':_0x5540e5[_0xdda2('0x2f')],'type':_0x5540e5[_0xdda2('0x30')]['key']};});_0x255bbc[_0xdda2('0x31')]=_['map'](_0x45e800,_0xdda2('0x29'));_0x255bbc['query']=_['keys'](_0x91b41a['query']);_0x255bbc[_0xdda2('0x32')]=_['intersection'](_0x255bbc[_0xdda2('0x31')],_0x255bbc['query']);_0x24c37d['attributes']=_['intersection'](_0x255bbc[_0xdda2('0x31')],qs[_0xdda2('0x33')](_0x91b41a[_0xdda2('0x34')][_0xdda2('0x33')]));_0x24c37d[_0xdda2('0x35')]=_0x24c37d[_0xdda2('0x35')][_0xdda2('0x36')]?_0x24c37d[_0xdda2('0x35')]:_0x255bbc[_0xdda2('0x31')];if(!_0x91b41a[_0xdda2('0x34')]['hasOwnProperty'](_0xdda2('0x37'))){_0x24c37d[_0xdda2('0x1f')]=qs[_0xdda2('0x1f')](_0x91b41a[_0xdda2('0x34')][_0xdda2('0x1f')]);_0x24c37d[_0xdda2('0x1c')]=qs[_0xdda2('0x1c')](_0x91b41a['query']['offset']);}_0x24c37d[_0xdda2('0x38')]=qs[_0xdda2('0x39')](_0x91b41a[_0xdda2('0x34')]['sort']);_0x24c37d['where']=qs[_0xdda2('0x32')](_[_0xdda2('0x3a')](_0x91b41a[_0xdda2('0x34')],_0x255bbc[_0xdda2('0x32')]),_0x45e800);if(_0x91b41a[_0xdda2('0x34')]['filter']){_0x24c37d[_0xdda2('0x3b')]=_[_0xdda2('0x3c')](_0x24c37d['where'],{'$or':_['map'](_0x45e800,function(_0x98bf47){if(_0x98bf47[_0xdda2('0x30')]!==_0xdda2('0x3d')){var _0x2708f4={};_0x2708f4[_0x98bf47[_0xdda2('0x29')]]={'$like':'%'+_0x91b41a['query'][_0xdda2('0x3e')]+'%'};return _0x2708f4;}})});}_0x24c37d=_[_0xdda2('0x3c')]({},_0x24c37d,_0x91b41a[_0xdda2('0x3f')]);var _0x1a7262={'where':_0x24c37d['where']};return db['MailQueueReport'][_0xdda2('0x1e')](_0x1a7262)[_0xdda2('0x26')](function(_0x7a25fe){_0x53acb5['count']=_0x7a25fe;if(_0x91b41a[_0xdda2('0x34')]['includeAll']){_0x24c37d[_0xdda2('0x40')]=[{'all':!![]}];}return db['MailQueueReport'][_0xdda2('0x41')](_0x24c37d);})[_0xdda2('0x26')](function(_0x1db762){_0x53acb5[_0xdda2('0x42')]=_0x1db762;return _0x53acb5;})['then'](respondWithFilteredResult(_0x4bb8a4,_0x24c37d))[_0xdda2('0x43')](handleError(_0x4bb8a4,null));};exports['show']=function(_0x392f70,_0x4d3b78){var _0x1d1678={'raw':!![],'where':{'id':_0x392f70[_0xdda2('0x44')]['id']}},_0x12589b={};_0x12589b[_0xdda2('0x31')]=_[_0xdda2('0x45')](db['MailQueueReport'][_0xdda2('0x2e')]);_0x12589b[_0xdda2('0x34')]=_['keys'](_0x392f70[_0xdda2('0x34')]);_0x12589b['filters']=_[_0xdda2('0x46')](_0x12589b[_0xdda2('0x31')],_0x12589b[_0xdda2('0x34')]);_0x1d1678[_0xdda2('0x35')]=_[_0xdda2('0x46')](_0x12589b[_0xdda2('0x31')],qs[_0xdda2('0x33')](_0x392f70[_0xdda2('0x34')][_0xdda2('0x33')]));_0x1d1678[_0xdda2('0x35')]=_0x1d1678[_0xdda2('0x35')][_0xdda2('0x36')]?_0x1d1678[_0xdda2('0x35')]:_0x12589b['model'];if(_0x392f70['query']['includeAll']){_0x1d1678[_0xdda2('0x40')]=[{'all':!![]}];}_0x1d1678=_[_0xdda2('0x3c')]({},_0x1d1678,_0x392f70['options']);return db[_0xdda2('0x2d')][_0xdda2('0x47')](_0x1d1678)[_0xdda2('0x26')](handleEntityNotFound(_0x4d3b78,null))['then'](respondWithResult(_0x4d3b78,null))[_0xdda2('0x43')](handleError(_0x4d3b78,null));};exports[_0xdda2('0x48')]=function(_0x4eada0,_0x5f0aa8){return db[_0xdda2('0x2d')]['create'](_0x4eada0[_0xdda2('0x49')],{})['then'](respondWithResult(_0x5f0aa8,0xc9))[_0xdda2('0x43')](handleError(_0x5f0aa8,null));};exports[_0xdda2('0x25')]=function(_0x50bd88,_0x585665){if(_0x50bd88[_0xdda2('0x49')]['id']){delete _0x50bd88[_0xdda2('0x49')]['id'];}return db[_0xdda2('0x2d')][_0xdda2('0x47')]({'where':{'id':_0x50bd88['params']['id']}})[_0xdda2('0x26')](handleEntityNotFound(_0x585665,null))[_0xdda2('0x26')](saveUpdates(_0x50bd88[_0xdda2('0x49')],null))[_0xdda2('0x26')](respondWithResult(_0x585665,null))[_0xdda2('0x43')](handleError(_0x585665,null));};exports['destroy']=function(_0x1a56cc,_0x40b610){return db['MailQueueReport'][_0xdda2('0x47')]({'where':{'id':_0x1a56cc[_0xdda2('0x44')]['id']}})[_0xdda2('0x26')](handleEntityNotFound(_0x40b610,null))[_0xdda2('0x26')](removeEntity(_0x40b610,null))[_0xdda2('0x43')](handleError(_0x40b610,null));};exports[_0xdda2('0x4a')]=function(_0x4b6519,_0x2c58c7){return db['MailQueueReport'][_0xdda2('0x4a')]()['then'](respondWithResult(_0x2c58c7,null))[_0xdda2('0x43')](handleError(_0x2c58c7,null));};
\ No newline at end of file
index 9f94b3e..ee8c282 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc97=['MailQueueReport','report_mail_queue','uniqueid','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./mailQueueReport.attributes'];(function(_0x52c60b,_0x2f23e0){var _0x2d4b3a=function(_0x13bc13){while(--_0x13bc13){_0x52c60b['push'](_0x52c60b['shift']());}};_0x2d4b3a(++_0x2f23e0);}(_0xcc97,0x1b3));var _0x7cc9=function(_0x1798b2,_0x5828aa){_0x1798b2=_0x1798b2-0x0;var _0x402125=_0xcc97[_0x1798b2];return _0x402125;};'use strict';var _=require(_0x7cc9('0x0'));var util=require(_0x7cc9('0x1'));var logger=require('../../config/logger')(_0x7cc9('0x2'));var moment=require(_0x7cc9('0x3'));var BPromise=require(_0x7cc9('0x4'));var rp=require(_0x7cc9('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7cc9('0x6'));var config=require(_0x7cc9('0x7'));var attributes=require(_0x7cc9('0x8'));module['exports']=function(_0x21e167,_0x1dd930){return _0x21e167['define'](_0x7cc9('0x9'),attributes,{'tableName':_0x7cc9('0xa'),'paranoid':![],'indexes':[{'name':_0x7cc9('0xb'),'fields':[_0x7cc9('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcded=['request-promise','path','rimraf','../../config/environment','./mailQueueReport.attributes','define','MailQueueReport','report_mail_queue','uniqueid','util','../../config/logger','moment','bluebird'];(function(_0x23e6bb,_0x5c2d69){var _0x1e3b4c=function(_0x1afc46){while(--_0x1afc46){_0x23e6bb['push'](_0x23e6bb['shift']());}};_0x1e3b4c(++_0x5c2d69);}(_0xcded,0x64));var _0xdcde=function(_0x3e3064,_0x3dd6f5){_0x3e3064=_0x3e3064-0x0;var _0x4547e1=_0xcded[_0x3e3064];return _0x4547e1;};'use strict';var _=require('lodash');var util=require(_0xdcde('0x0'));var logger=require(_0xdcde('0x1'))('api');var moment=require(_0xdcde('0x2'));var BPromise=require(_0xdcde('0x3'));var rp=require(_0xdcde('0x4'));var fs=require('fs');var path=require(_0xdcde('0x5'));var rimraf=require(_0xdcde('0x6'));var config=require(_0xdcde('0x7'));var attributes=require(_0xdcde('0x8'));module['exports']=function(_0x22b465,_0x1d7c54){return _0x22b465[_0xdcde('0x9')](_0xdcde('0xa'),attributes,{'tableName':_0xdcde('0xb'),'paranoid':![],'indexes':[{'name':_0xdcde('0xc'),'fields':[_0xdcde('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index b2049a2..fc59e82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','MailQueueReport,\x20%s,\x20%s','request\x20sent','MailQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','CreateMailQueueReport','body','options','raw','stringify','MailQueueReport','update','where','UpdateMailQueueReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x208ad6,_0x402d08){var _0x525261=function(_0x2542ec){while(--_0x2542ec){_0x208ad6['push'](_0x208ad6['shift']());}};_0x525261(++_0x402d08);}(_0x1261,0x144));var _0x1126=function(_0x35825e,_0x657421){_0x35825e=_0x35825e-0x0;var _0x4f4d90=_0x1261[_0x35825e];return _0x4f4d90;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('MailQueueReport,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}exports[_0x1126('0x15')]=function(_0x4a7b49){var _0x4d2b38=this;return new Promise(function(_0x22ae0b,_0x2b2487){return db['MailQueueReport']['create'](_0x4a7b49[_0x1126('0x16')],{'raw':_0x4a7b49['options']?_0x4a7b49[_0x1126('0x17')][_0x1126('0x18')]===undefined?!![]:![]:!![]})[_0x1126('0xc')](function(_0x54400a){logger[_0x1126('0xd')]('CreateMailQueueReport',_0x4a7b49);logger['debug'](_0x1126('0x15'),_0x4a7b49,JSON[_0x1126('0x19')](_0x54400a));_0x22ae0b(_0x54400a);})[_0x1126('0x14')](function(_0x36d254){logger['error'](_0x1126('0x15'),_0x36d254[_0x1126('0x13')],_0x4a7b49);_0x2b2487(_0x4d2b38['error'](0x1f4,_0x36d254[_0x1126('0x13')]));});});};exports['UpdateMailQueueReport']=function(_0x529dd9){var _0x4b57ab=this;return new Promise(function(_0x2199d9,_0x15bcc3){return db[_0x1126('0x1a')][_0x1126('0x1b')](_0x529dd9[_0x1126('0x16')],{'raw':_0x529dd9[_0x1126('0x17')]?_0x529dd9[_0x1126('0x17')][_0x1126('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x529dd9['options']?_0x529dd9[_0x1126('0x17')][_0x1126('0x1c')]||null:null,'attributes':_0x529dd9[_0x1126('0x17')]?_0x529dd9['options']['attributes']||null:null,'limit':_0x529dd9[_0x1126('0x17')]?_0x529dd9[_0x1126('0x17')]['limit']||null:null})[_0x1126('0xc')](function(_0x23d2bc){logger['info'](_0x1126('0x1d'),_0x529dd9);logger['debug'](_0x1126('0x1d'),_0x529dd9,JSON['stringify'](_0x23d2bc));_0x2199d9(_0x23d2bc);})[_0x1126('0x14')](function(_0x583ce6){logger[_0x1126('0x11')]('UpdateMailQueueReport',_0x583ce6['message'],_0x529dd9);_0x15bcc3(_0x4b57ab['error'](0x1f4,_0x583ce6[_0x1126('0x13')]));});});};
\ No newline at end of file
+var _0x326f=['error','code','message','result','catch','CreateMailQueueReport','MailQueueReport','options','raw','stringify','UpdateMailQueueReport','body','attributes','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0xf13c16,_0x253567){var _0x3b8cf5=function(_0x2ff352){while(--_0x2ff352){_0xf13c16['push'](_0xf13c16['shift']());}};_0x3b8cf5(++_0x253567);}(_0x326f,0xd1));var _0xf326=function(_0x605f5f,_0xf5098d){_0x605f5f=_0x605f5f-0x0;var _0x18abc2=_0x326f[_0x605f5f];return _0x18abc2;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf326('0x1'));var rs=require(_0xf326('0x2'));var fs=require('fs');var Redis=require(_0xf326('0x3'));var db=require(_0xf326('0x4'))['db'];var utils=require(_0xf326('0x5'));var logger=require(_0xf326('0x6'))(_0xf326('0x7'));var config=require(_0xf326('0x8'));var jayson=require(_0xf326('0x9'));var client=jayson[_0xf326('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){return client['request'](_0x3c254d,_0x165f95)['then'](function(_0x3bacf2){logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));logger[_0xf326('0xe')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x3851eb,_0xf326('0xd'),JSON['stringify'](_0x3bacf2));if(_0x3bacf2[_0xf326('0xf')]){if(_0x3bacf2['error'][_0xf326('0x10')]===0x1f4){logger['error'](_0xf326('0xc'),_0x3851eb,_0x3bacf2[_0xf326('0xf')]['message']);return _0x515bfa(_0x3bacf2[_0xf326('0xf')][_0xf326('0x11')]);}logger[_0xf326('0xf')](_0xf326('0xc'),_0x3851eb,_0x3bacf2['error'][_0xf326('0x11')]);return _0x1e7b8a(_0x3bacf2['error']['message']);}else{logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));_0x1e7b8a(_0x3bacf2[_0xf326('0x12')][_0xf326('0x11')]);}})[_0xf326('0x13')](function(_0x34128e){logger[_0xf326('0xf')]('MailQueueReport,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}exports[_0xf326('0x14')]=function(_0x453100){var _0x18bee3=this;return new Promise(function(_0x31ffb9,_0xcef2b5){return db[_0xf326('0x15')]['create'](_0x453100['body'],{'raw':_0x453100['options']?_0x453100[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x4cabce){logger[_0xf326('0xb')]('CreateMailQueueReport',_0x453100);logger['debug'](_0xf326('0x14'),_0x453100,JSON[_0xf326('0x18')](_0x4cabce));_0x31ffb9(_0x4cabce);})['catch'](function(_0x5aa184){logger[_0xf326('0xf')](_0xf326('0x14'),_0x5aa184['message'],_0x453100);_0xcef2b5(_0x18bee3[_0xf326('0xf')](0x1f4,_0x5aa184[_0xf326('0x11')]));});});};exports[_0xf326('0x19')]=function(_0x295752){var _0x17c157=this;return new Promise(function(_0x2049ec,_0x5ce532){return db['MailQueueReport']['update'](_0x295752[_0xf326('0x1a')],{'raw':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')]['where']||null:null,'attributes':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x1b')]||null:null,'limit':_0x295752['options']?_0x295752[_0xf326('0x16')]['limit']||null:null})['then'](function(_0x6a8e89){logger[_0xf326('0xb')](_0xf326('0x19'),_0x295752);logger['debug'](_0xf326('0x19'),_0x295752,JSON[_0xf326('0x18')](_0x6a8e89));_0x2049ec(_0x6a8e89);})['catch'](function(_0x225776){logger[_0xf326('0xf')](_0xf326('0x19'),_0x225776[_0xf326('0x11')],_0x295752);_0x5ce532(_0x17c157[_0xf326('0xf')](0x1f4,_0x225776[_0xf326('0x11')]));});});};
\ No newline at end of file
index 93b1bed..e1e3e8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x509367,_0x2bb637){var _0x4a1d5=function(_0x411ff){while(--_0x411ff){_0x509367['push'](_0x509367['shift']());}};_0x4a1d5(++_0x2bb637);}(_0xedd9,0xfc));var _0x9edd=function(_0x20d4e7,_0x5f29f7){_0x20d4e7=_0x20d4e7-0x0;var _0x125131=_0xedd9[_0x20d4e7];return _0x125131;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x32a2fc,_0x1be7d5){var _0x3574c5=function(_0xe2de9b){while(--_0xe2de9b){_0x32a2fc['push'](_0x32a2fc['shift']());}};_0x3574c5(++_0x1be7d5);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 0d2395a..c1b0701 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6599=['exports','STRING','BOOLEAN','INTEGER'];(function(_0xbc26fe,_0x5c97ef){var _0x58854e=function(_0x11bf4c){while(--_0x11bf4c){_0xbc26fe['push'](_0xbc26fe['shift']());}};_0x58854e(++_0x5c97ef);}(_0x6599,0xb0));var _0x9659=function(_0x500419,_0x549162){_0x500419=_0x500419-0x0;var _0x241c1a=_0x6599[_0x500419];return _0x241c1a;};'use strict';var Sequelize=require('sequelize');module[_0x9659('0x0')]={'description':{'type':Sequelize[_0x9659('0x1')]},'host':{'type':Sequelize[_0x9659('0x1')]},'authentication':{'type':Sequelize[_0x9659('0x2')],'defaultValue':!![]},'user':{'type':Sequelize[_0x9659('0x1')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x9659('0x3')]},'tls':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x9659('0x1')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0x9659('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x9659('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0x9659('0x1')]}};
\ No newline at end of file
+var _0x2504=['STRING','BOOLEAN','INTEGER','INBOX','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2504,0xee));var _0x4250=function(_0xc21f0,_0x5c4aab){_0xc21f0=_0xc21f0-0x0;var _0x1cd5eb=_0x2504[_0xc21f0];return _0x1cd5eb;};'use strict';var Sequelize=require(_0x4250('0x0'));module[_0x4250('0x1')]={'description':{'type':Sequelize[_0x4250('0x2')]},'host':{'type':Sequelize[_0x4250('0x2')]},'authentication':{'type':Sequelize[_0x4250('0x3')],'defaultValue':!![]},'user':{'type':Sequelize[_0x4250('0x2')]},'password':{'type':Sequelize[_0x4250('0x2')]},'port':{'type':Sequelize[_0x4250('0x4')]},'tls':{'type':Sequelize[_0x4250('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x4250('0x2')],'defaultValue':_0x4250('0x5')},'connTimeout':{'type':Sequelize[_0x4250('0x4')],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0x4250('0x2')]}};
\ No newline at end of file
index 6e9a8d7..cc8382a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00f7=['util','bluebird','request-promise','path','rimraf','./mailServerIn.attributes','MailServerIn','mail_servers_in'];(function(_0x151c38,_0x3d5723){var _0x18a987=function(_0x32eb6a){while(--_0x32eb6a){_0x151c38['push'](_0x151c38['shift']());}};_0x18a987(++_0x3d5723);}(_0x00f7,0x130));var _0x700f=function(_0x5aaf23,_0x1300f9){_0x5aaf23=_0x5aaf23-0x0;var _0x844f36=_0x00f7[_0x5aaf23];return _0x844f36;};'use strict';var _=require('lodash');var util=require(_0x700f('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x700f('0x1'));var rp=require(_0x700f('0x2'));var fs=require('fs');var path=require(_0x700f('0x3'));var rimraf=require(_0x700f('0x4'));var config=require('../../config/environment');var attributes=require(_0x700f('0x5'));module['exports']=function(_0x17a20b,_0x2cdeff){return _0x17a20b['define'](_0x700f('0x6'),attributes,{'tableName':_0x700f('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f35=['MailServerIn','mail_servers_in','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./mailServerIn.attributes','exports','define'];(function(_0x3c51d4,_0x36ba53){var _0x53c45f=function(_0x3d6683){while(--_0x3d6683){_0x3c51d4['push'](_0x3c51d4['shift']());}};_0x53c45f(++_0x36ba53);}(_0x8f35,0x15e));var _0x58f3=function(_0x20a558,_0x160e0e){_0x20a558=_0x20a558-0x0;var _0x53d3f7=_0x8f35[_0x20a558];return _0x53d3f7;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x58f3('0x0'))(_0x58f3('0x1'));var moment=require(_0x58f3('0x2'));var BPromise=require(_0x58f3('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x58f3('0x4'));var rimraf=require(_0x58f3('0x5'));var config=require(_0x58f3('0x6'));var attributes=require(_0x58f3('0x7'));module[_0x58f3('0x8')]=function(_0x88508b,_0x2290c9){return _0x88508b[_0x58f3('0x9')](_0x58f3('0xa'),attributes,{'tableName':_0x58f3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1c97744..602ff18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58b7=['where','limit','include','map','model','attributes','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailServerIn,\x20%s,\x20%s','debug','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetMailServerIn','MailServerIn','findAll','options','raw'];(function(_0x2bf141,_0x31eac7){var _0x48277b=function(_0x9fe560){while(--_0x9fe560){_0x2bf141['push'](_0x2bf141['shift']());}};_0x48277b(++_0x31eac7);}(_0x58b7,0x16e));var _0x758b=function(_0x5dac16,_0x5c84ac){_0x5dac16=_0x5dac16-0x0;var _0x564073=_0x58b7[_0x5dac16];return _0x564073;};'use strict';var _=require(_0x758b('0x0'));var util=require(_0x758b('0x1'));var moment=require(_0x758b('0x2'));var BPromise=require('bluebird');var rs=require(_0x758b('0x3'));var fs=require('fs');var Redis=require(_0x758b('0x4'));var db=require(_0x758b('0x5'))['db'];var utils=require(_0x758b('0x6'));var logger=require(_0x758b('0x7'))(_0x758b('0x8'));var config=require(_0x758b('0x9'));var jayson=require(_0x758b('0xa'));var client=jayson[_0x758b('0xb')][_0x758b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xe4e7ba,_0x7add86,_0x22cee4){return new BPromise(function(_0x463404,_0x272236){return client[_0x758b('0xd')](_0xe4e7ba,_0x22cee4)[_0x758b('0xe')](function(_0x376584){logger[_0x758b('0xf')](_0x758b('0x10'),_0x7add86,'request\x20sent');logger[_0x758b('0x11')](_0x758b('0x12'),_0x7add86,_0x758b('0x13'),JSON[_0x758b('0x14')](_0x376584));if(_0x376584[_0x758b('0x15')]){if(_0x376584[_0x758b('0x15')]['code']===0x1f4){logger[_0x758b('0x15')](_0x758b('0x10'),_0x7add86,_0x376584[_0x758b('0x15')][_0x758b('0x16')]);return _0x272236(_0x376584['error'][_0x758b('0x16')]);}logger[_0x758b('0x15')](_0x758b('0x10'),_0x7add86,_0x376584[_0x758b('0x15')][_0x758b('0x16')]);return _0x463404(_0x376584[_0x758b('0x15')]['message']);}else{logger[_0x758b('0xf')]('MailServerIn,\x20%s,\x20%s',_0x7add86,_0x758b('0x13'));_0x463404(_0x376584[_0x758b('0x17')]['message']);}})[_0x758b('0x18')](function(_0x189d58){logger[_0x758b('0x15')]('MailServerIn,\x20%s,\x20%s',_0x7add86,_0x189d58);_0x272236(_0x189d58);});});}exports[_0x758b('0x19')]=function(_0xe3210e){var _0x50fc7f=this;return new Promise(function(_0x165670,_0x1d7f16){return db[_0x758b('0x1a')][_0x758b('0x1b')]({'raw':_0xe3210e[_0x758b('0x1c')]?_0xe3210e[_0x758b('0x1c')][_0x758b('0x1d')]===undefined?!![]:![]:!![],'where':_0xe3210e[_0x758b('0x1c')]?_0xe3210e[_0x758b('0x1c')][_0x758b('0x1e')]||null:null,'attributes':_0xe3210e[_0x758b('0x1c')]?_0xe3210e[_0x758b('0x1c')]['attributes']||null:null,'limit':_0xe3210e[_0x758b('0x1c')]?_0xe3210e[_0x758b('0x1c')][_0x758b('0x1f')]||null:null,'include':_0xe3210e['options']?_0xe3210e[_0x758b('0x1c')][_0x758b('0x20')]?_[_0x758b('0x21')](_0xe3210e[_0x758b('0x1c')]['include'],function(_0x53c6ca){return{'model':db[_0x53c6ca[_0x758b('0x22')]],'as':_0x53c6ca['as'],'attributes':_0x53c6ca[_0x758b('0x23')],'include':_0x53c6ca[_0x758b('0x20')]?_[_0x758b('0x21')](_0x53c6ca[_0x758b('0x20')],function(_0x1fbb6f){return{'model':db[_0x1fbb6f[_0x758b('0x22')]],'as':_0x1fbb6f['as'],'attributes':_0x1fbb6f[_0x758b('0x23')],'include':_0x1fbb6f[_0x758b('0x20')]?_['map'](_0x1fbb6f[_0x758b('0x20')],function(_0x5a3a11){return{'model':db[_0x5a3a11[_0x758b('0x22')]],'as':_0x5a3a11['as'],'attributes':_0x5a3a11[_0x758b('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x404b00){logger['info']('GetMailServerIn',_0xe3210e);logger[_0x758b('0x11')](_0x758b('0x19'),_0xe3210e,JSON[_0x758b('0x14')](_0x404b00));_0x165670(_0x404b00);})['catch'](function(_0x293db5){logger['error'](_0x758b('0x19'),_0x293db5[_0x758b('0x16')],_0xe3210e);_0x1d7f16(_0x50fc7f[_0x758b('0x15')](0x1f4,_0x293db5[_0x758b('0x16')]));});});};
\ No newline at end of file
+var _0x8ad0=['debug','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','client','http','then','info','request\x20sent','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','MailServerIn,\x20%s,\x20%s','result','GetMailServerIn','MailServerIn','options','raw','attributes','limit','include','map','model'];(function(_0xc332a7,_0x50d44a){var _0x421eb9=function(_0x859c8){while(--_0x859c8){_0xc332a7['push'](_0xc332a7['shift']());}};_0x421eb9(++_0x50d44a);}(_0x8ad0,0xfa));var _0x08ad=function(_0xba5ae3,_0x2136c7){_0xba5ae3=_0xba5ae3-0x0;var _0xadc86a=_0x8ad0[_0xba5ae3];return _0xadc86a;};'use strict';var _=require(_0x08ad('0x0'));var util=require(_0x08ad('0x1'));var moment=require(_0x08ad('0x2'));var BPromise=require(_0x08ad('0x3'));var rs=require(_0x08ad('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x08ad('0x5'))['db'];var utils=require(_0x08ad('0x6'));var logger=require(_0x08ad('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x08ad('0x8')][_0x08ad('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x49c900,_0x5ca4f7,_0x337f42){return new BPromise(function(_0x376b72,_0x5c9d8d){return client['request'](_0x49c900,_0x337f42)[_0x08ad('0xa')](function(_0x121817){logger[_0x08ad('0xb')]('MailServerIn,\x20%s,\x20%s',_0x5ca4f7,_0x08ad('0xc'));logger['debug'](_0x08ad('0xd'),_0x5ca4f7,_0x08ad('0xc'),JSON[_0x08ad('0xe')](_0x121817));if(_0x121817[_0x08ad('0xf')]){if(_0x121817[_0x08ad('0xf')][_0x08ad('0x10')]===0x1f4){logger['error']('MailServerIn,\x20%s,\x20%s',_0x5ca4f7,_0x121817[_0x08ad('0xf')]['message']);return _0x5c9d8d(_0x121817[_0x08ad('0xf')][_0x08ad('0x11')]);}logger[_0x08ad('0xf')](_0x08ad('0x12'),_0x5ca4f7,_0x121817[_0x08ad('0xf')][_0x08ad('0x11')]);return _0x376b72(_0x121817['error'][_0x08ad('0x11')]);}else{logger['info'](_0x08ad('0x12'),_0x5ca4f7,_0x08ad('0xc'));_0x376b72(_0x121817[_0x08ad('0x13')][_0x08ad('0x11')]);}})['catch'](function(_0x5dc038){logger[_0x08ad('0xf')]('MailServerIn,\x20%s,\x20%s',_0x5ca4f7,_0x5dc038);_0x5c9d8d(_0x5dc038);});});}exports[_0x08ad('0x14')]=function(_0x70dedd){var _0x394cb9=this;return new Promise(function(_0x56ed72,_0x4b5294){return db[_0x08ad('0x15')]['findAll']({'raw':_0x70dedd['options']?_0x70dedd[_0x08ad('0x16')][_0x08ad('0x17')]===undefined?!![]:![]:!![],'where':_0x70dedd[_0x08ad('0x16')]?_0x70dedd[_0x08ad('0x16')]['where']||null:null,'attributes':_0x70dedd['options']?_0x70dedd[_0x08ad('0x16')][_0x08ad('0x18')]||null:null,'limit':_0x70dedd[_0x08ad('0x16')]?_0x70dedd['options'][_0x08ad('0x19')]||null:null,'include':_0x70dedd['options']?_0x70dedd[_0x08ad('0x16')][_0x08ad('0x1a')]?_[_0x08ad('0x1b')](_0x70dedd[_0x08ad('0x16')][_0x08ad('0x1a')],function(_0x51a9ba){return{'model':db[_0x51a9ba[_0x08ad('0x1c')]],'as':_0x51a9ba['as'],'attributes':_0x51a9ba[_0x08ad('0x18')],'include':_0x51a9ba[_0x08ad('0x1a')]?_['map'](_0x51a9ba[_0x08ad('0x1a')],function(_0x337196){return{'model':db[_0x337196[_0x08ad('0x1c')]],'as':_0x337196['as'],'attributes':_0x337196[_0x08ad('0x18')],'include':_0x337196['include']?_['map'](_0x337196[_0x08ad('0x1a')],function(_0x4dc4bf){return{'model':db[_0x4dc4bf[_0x08ad('0x1c')]],'as':_0x4dc4bf['as'],'attributes':_0x4dc4bf[_0x08ad('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x33d4cf){logger['info'](_0x08ad('0x14'),_0x70dedd);logger[_0x08ad('0x1d')](_0x08ad('0x14'),_0x70dedd,JSON[_0x08ad('0xe')](_0x33d4cf));_0x56ed72(_0x33d4cf);})[_0x08ad('0x1e')](function(_0x46da0c){logger['error'](_0x08ad('0x14'),_0x46da0c[_0x08ad('0x11')],_0x70dedd);_0x4b5294(_0x394cb9[_0x08ad('0xf')](0x1f4,_0x46da0c[_0x08ad('0x11')]));});});};
\ No newline at end of file
index dcab914..9760525 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x7a54,0x106));var _0x47a5=function(_0x1de207,_0x5b7520){_0x1de207=_0x1de207-0x0;var _0x4f2bf7=_0x7a54[_0x1de207];return _0x4f2bf7;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
+var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailServerOut.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
index a032deb..7ec8c6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbd8=['exports','STRING','BOOLEAN','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdbd8,0x1a3));var _0x8dbd=function(_0x2f613e,_0x4e668f){_0x2f613e=_0x2f613e-0x0;var _0x53df5c=_0xdbd8[_0x2f613e];return _0x53df5c;};'use strict';var Sequelize=require(_0x8dbd('0x0'));module[_0x8dbd('0x1')]={'description':{'type':Sequelize[_0x8dbd('0x2')]},'host':{'type':Sequelize['STRING']},'user':{'type':Sequelize[_0x8dbd('0x2')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize[_0x8dbd('0x3')],'defaultValue':![]},'service':{'type':Sequelize[_0x8dbd('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xe4f1=['INTEGER','BOOLEAN','sequelize','exports','STRING'];(function(_0xa143fb,_0x47a6db){var _0x35223c=function(_0x3842cc){while(--_0x3842cc){_0xa143fb['push'](_0xa143fb['shift']());}};_0x35223c(++_0x47a6db);}(_0xe4f1,0x1a6));var _0x1e4f=function(_0x3cdd12,_0x40cf03){_0x3cdd12=_0x3cdd12-0x0;var _0x3463b5=_0xe4f1[_0x3cdd12];return _0x3463b5;};'use strict';var Sequelize=require(_0x1e4f('0x0'));module[_0x1e4f('0x1')]={'description':{'type':Sequelize[_0x1e4f('0x2')]},'host':{'type':Sequelize['STRING']},'user':{'type':Sequelize[_0x1e4f('0x2')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x1e4f('0x3')]},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize[_0x1e4f('0x2')]},'authentication':{'type':Sequelize[_0x1e4f('0x4')],'defaultValue':!![]}};
\ No newline at end of file
index e69e533..aedb7c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eb4=['apply','save','destroy','then','sendStatus','error','stack','name','send','index','map','MailServerOut','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','where','pick','merge','VIRTUAL','options','include','findAll','catch','show','params','length','includeAll','find','create','body','update','rimraf','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range'];(function(_0x351b46,_0x26b265){var _0x1515df=function(_0x22896a){while(--_0x22896a){_0x351b46['push'](_0x351b46['shift']());}};_0x1515df(++_0x26b265);}(_0x7eb4,0xb9));var _0x47eb=function(_0xc697e7,_0x5bdfc6){_0xc697e7=_0xc697e7-0x0;var _0x49f94d=_0x7eb4[_0xc697e7];return _0x49f94d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x47eb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x47eb('0x1'));var moment=require(_0x47eb('0x2'));var BPromise=require(_0x47eb('0x3'));var Mustache=require(_0x47eb('0x4'));var util=require('util');var path=require(_0x47eb('0x5'));var sox=require(_0x47eb('0x6'));var csv=require(_0x47eb('0x7'));var ejs=require(_0x47eb('0x8'));var fs=require('fs');var fs_extra=require(_0x47eb('0x9'));var _=require(_0x47eb('0xa'));var squel=require(_0x47eb('0xb'));var crypto=require(_0x47eb('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47eb('0xd'));var toCsv=require(_0x47eb('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47eb('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x47eb('0xf'));var as=require(_0x47eb('0x10'));var hardwareService=require(_0x47eb('0x11'));var logger=require('../../config/logger')(_0x47eb('0x12'));var utils=require(_0x47eb('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x47eb('0x14'));var db=require(_0x47eb('0x15'))['db'];function respondWithStatusCode(_0x5a4201,_0x2d2418){_0x2d2418=_0x2d2418||0xcc;return function(_0x4a6c22){if(_0x4a6c22){return _0x5a4201['sendStatus'](_0x2d2418);}return _0x5a4201[_0x47eb('0x16')](_0x2d2418)[_0x47eb('0x17')]();};}function respondWithResult(_0x144ebd,_0x1cce6f){_0x1cce6f=_0x1cce6f||0xc8;return function(_0x2e8474){if(_0x2e8474){return _0x144ebd['status'](_0x1cce6f)[_0x47eb('0x18')](_0x2e8474);}};}function respondWithFilteredResult(_0x345ec8,_0x12a9aa){return function(_0x1d162f){if(_0x1d162f){var _0x315a6e=typeof _0x12a9aa[_0x47eb('0x19')]===_0x47eb('0x1a')&&typeof _0x12a9aa[_0x47eb('0x1b')]==='undefined';var _0xd2eee=_0x1d162f[_0x47eb('0x1c')];var _0x464722=_0x315a6e?0x0:_0x12a9aa[_0x47eb('0x19')];var _0x55c638=_0x315a6e?_0x1d162f[_0x47eb('0x1c')]:_0x12a9aa[_0x47eb('0x19')]+_0x12a9aa[_0x47eb('0x1b')];var _0x426c52;if(_0x55c638>=_0xd2eee){_0x55c638=_0xd2eee;_0x426c52=0xc8;}else{_0x426c52=0xce;}_0x345ec8[_0x47eb('0x16')](_0x426c52);return _0x345ec8[_0x47eb('0x1d')](_0x47eb('0x1e'),_0x464722+'-'+_0x55c638+'/'+_0xd2eee)[_0x47eb('0x18')](_0x1d162f);}return null;};}function patchUpdates(_0x3091e9){return function(_0x54ebe0){try{jsonpatch[_0x47eb('0x1f')](_0x54ebe0,_0x3091e9,!![]);}catch(_0x53383e){return BPromise['reject'](_0x53383e);}return _0x54ebe0[_0x47eb('0x20')]();};}function saveUpdates(_0x100862,_0x461edb){return function(_0x4f6931){if(_0x4f6931){return _0x4f6931['update'](_0x100862)['then'](function(_0x58cf9c){return _0x58cf9c;});}return null;};}function removeEntity(_0x34710a,_0xde1d17){return function(_0xa6715a){if(_0xa6715a){return _0xa6715a[_0x47eb('0x21')]()[_0x47eb('0x22')](function(){_0x34710a[_0x47eb('0x16')](0xcc)[_0x47eb('0x17')]();});}};}function handleEntityNotFound(_0x513edd,_0x43c1c6){return function(_0x42db2a){if(!_0x42db2a){_0x513edd[_0x47eb('0x23')](0x194);}return _0x42db2a;};}function handleError(_0x5aa054,_0x58e408){_0x58e408=_0x58e408||0x1f4;return function(_0x525773){logger[_0x47eb('0x24')](_0x525773[_0x47eb('0x25')]);if(_0x525773[_0x47eb('0x26')]){delete _0x525773[_0x47eb('0x26')];}_0x5aa054[_0x47eb('0x16')](_0x58e408)[_0x47eb('0x27')](_0x525773);};}exports[_0x47eb('0x28')]=function(_0x1a5acd,_0x3373d8){var _0x5b7d68={},_0x1b8b15={},_0xc89adf={'count':0x0,'rows':[]};var _0xa60f58=_[_0x47eb('0x29')](db[_0x47eb('0x2a')][_0x47eb('0x2b')],function(_0x45c950){return{'name':_0x45c950[_0x47eb('0x2c')],'type':_0x45c950[_0x47eb('0x2d')][_0x47eb('0x2e')]};});_0x1b8b15[_0x47eb('0x2f')]=_['map'](_0xa60f58,'name');_0x1b8b15[_0x47eb('0x30')]=_[_0x47eb('0x31')](_0x1a5acd['query']);_0x1b8b15[_0x47eb('0x32')]=_[_0x47eb('0x33')](_0x1b8b15['model'],_0x1b8b15[_0x47eb('0x30')]);_0x5b7d68[_0x47eb('0x34')]=_[_0x47eb('0x33')](_0x1b8b15['model'],qs[_0x47eb('0x35')](_0x1a5acd[_0x47eb('0x30')][_0x47eb('0x35')]));_0x5b7d68['attributes']=_0x5b7d68[_0x47eb('0x34')]['length']?_0x5b7d68[_0x47eb('0x34')]:_0x1b8b15[_0x47eb('0x2f')];if(!_0x1a5acd['query']['hasOwnProperty'](_0x47eb('0x36'))){_0x5b7d68[_0x47eb('0x1b')]=qs[_0x47eb('0x1b')](_0x1a5acd[_0x47eb('0x30')][_0x47eb('0x1b')]);_0x5b7d68[_0x47eb('0x19')]=qs['offset'](_0x1a5acd[_0x47eb('0x30')][_0x47eb('0x19')]);}_0x5b7d68['order']=qs[_0x47eb('0x37')](_0x1a5acd['query'][_0x47eb('0x37')]);_0x5b7d68[_0x47eb('0x38')]=qs[_0x47eb('0x32')](_[_0x47eb('0x39')](_0x1a5acd[_0x47eb('0x30')],_0x1b8b15[_0x47eb('0x32')]),_0xa60f58);if(_0x1a5acd['query']['filter']){_0x5b7d68['where']=_[_0x47eb('0x3a')](_0x5b7d68[_0x47eb('0x38')],{'$or':_[_0x47eb('0x29')](_0xa60f58,function(_0x36a134){if(_0x36a134[_0x47eb('0x2d')]!==_0x47eb('0x3b')){var _0xabb0cb={};_0xabb0cb[_0x36a134[_0x47eb('0x26')]]={'$like':'%'+_0x1a5acd[_0x47eb('0x30')]['filter']+'%'};return _0xabb0cb;}})});}_0x5b7d68=_[_0x47eb('0x3a')]({},_0x5b7d68,_0x1a5acd[_0x47eb('0x3c')]);var _0x14fc76={'where':_0x5b7d68[_0x47eb('0x38')]};return db['MailServerOut'][_0x47eb('0x1c')](_0x14fc76)['then'](function(_0x2c15b9){_0xc89adf[_0x47eb('0x1c')]=_0x2c15b9;if(_0x1a5acd[_0x47eb('0x30')]['includeAll']){_0x5b7d68[_0x47eb('0x3d')]=[{'all':!![]}];}return db[_0x47eb('0x2a')][_0x47eb('0x3e')](_0x5b7d68);})[_0x47eb('0x22')](function(_0x748db5){_0xc89adf['rows']=_0x748db5;return _0xc89adf;})[_0x47eb('0x22')](respondWithFilteredResult(_0x3373d8,_0x5b7d68))[_0x47eb('0x3f')](handleError(_0x3373d8,null));};exports[_0x47eb('0x40')]=function(_0x2e731e,_0x21e04c){var _0x1aa00e={'raw':!![],'where':{'id':_0x2e731e[_0x47eb('0x41')]['id']}},_0x272ccb={};_0x272ccb[_0x47eb('0x2f')]=_[_0x47eb('0x31')](db[_0x47eb('0x2a')][_0x47eb('0x2b')]);_0x272ccb[_0x47eb('0x30')]=_[_0x47eb('0x31')](_0x2e731e[_0x47eb('0x30')]);_0x272ccb[_0x47eb('0x32')]=_['intersection'](_0x272ccb[_0x47eb('0x2f')],_0x272ccb[_0x47eb('0x30')]);_0x1aa00e['attributes']=_[_0x47eb('0x33')](_0x272ccb[_0x47eb('0x2f')],qs[_0x47eb('0x35')](_0x2e731e['query'][_0x47eb('0x35')]));_0x1aa00e[_0x47eb('0x34')]=_0x1aa00e[_0x47eb('0x34')][_0x47eb('0x42')]?_0x1aa00e[_0x47eb('0x34')]:_0x272ccb[_0x47eb('0x2f')];if(_0x2e731e['query'][_0x47eb('0x43')]){_0x1aa00e[_0x47eb('0x3d')]=[{'all':!![]}];}_0x1aa00e=_[_0x47eb('0x3a')]({},_0x1aa00e,_0x2e731e[_0x47eb('0x3c')]);return db[_0x47eb('0x2a')][_0x47eb('0x44')](_0x1aa00e)[_0x47eb('0x22')](handleEntityNotFound(_0x21e04c,null))[_0x47eb('0x22')](respondWithResult(_0x21e04c,null))[_0x47eb('0x3f')](handleError(_0x21e04c,null));};exports['create']=function(_0x26bb82,_0x5e03e2){return db[_0x47eb('0x2a')][_0x47eb('0x45')](_0x26bb82[_0x47eb('0x46')],{})['then'](respondWithResult(_0x5e03e2,0xc9))['catch'](handleError(_0x5e03e2,null));};exports[_0x47eb('0x47')]=function(_0x43ee02,_0x1bf512){if(_0x43ee02[_0x47eb('0x46')]['id']){delete _0x43ee02[_0x47eb('0x46')]['id'];}return db[_0x47eb('0x2a')][_0x47eb('0x44')]({'where':{'id':_0x43ee02[_0x47eb('0x41')]['id']}})[_0x47eb('0x22')](handleEntityNotFound(_0x1bf512,null))[_0x47eb('0x22')](saveUpdates(_0x43ee02[_0x47eb('0x46')],null))[_0x47eb('0x22')](respondWithResult(_0x1bf512,null))['catch'](handleError(_0x1bf512,null));};exports[_0x47eb('0x21')]=function(_0x22ab27,_0x4a403c){return db[_0x47eb('0x2a')][_0x47eb('0x44')]({'where':{'id':_0x22ab27[_0x47eb('0x41')]['id']}})[_0x47eb('0x22')](handleEntityNotFound(_0x4a403c,null))['then'](removeEntity(_0x4a403c,null))[_0x47eb('0x3f')](handleError(_0x4a403c,null));};
\ No newline at end of file
+var _0x896a=['params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','error','name','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','include','rows','catch','show','MailServerOut','create','body','find','destroy'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x896a,0x12d));var _0xa896=function(_0x70a7f7,_0x1df73e){_0x70a7f7=_0x70a7f7-0x0;var _0x22ee2f=_0x896a[_0x70a7f7];return _0x22ee2f;};'use strict';var emlformat=require(_0xa896('0x0'));var rimraf=require(_0xa896('0x1'));var zipdir=require(_0xa896('0x2'));var jsonpatch=require(_0xa896('0x3'));var rp=require(_0xa896('0x4'));var moment=require(_0xa896('0x5'));var BPromise=require(_0xa896('0x6'));var Mustache=require(_0xa896('0x7'));var util=require('util');var path=require('path');var sox=require(_0xa896('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa896('0x9'));var _=require(_0xa896('0xa'));var squel=require(_0xa896('0xb'));var crypto=require(_0xa896('0xc'));var jsforce=require(_0xa896('0xd'));var deskjs=require(_0xa896('0xe'));var toCsv=require(_0xa896('0xf'));var querystring=require('querystring');var Papa=require(_0xa896('0x10'));var Redis=require(_0xa896('0x11'));var authService=require(_0xa896('0x12'));var qs=require(_0xa896('0x13'));var as=require(_0xa896('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa896('0x15'))(_0xa896('0x16'));var utils=require(_0xa896('0x17'));var config=require(_0xa896('0x18'));var licenseUtil=require(_0xa896('0x19'));var db=require(_0xa896('0x1a'))['db'];function respondWithStatusCode(_0x5064bf,_0x3ff478){_0x3ff478=_0x3ff478||0xcc;return function(_0x1db10e){if(_0x1db10e){return _0x5064bf[_0xa896('0x1b')](_0x3ff478);}return _0x5064bf[_0xa896('0x1c')](_0x3ff478)[_0xa896('0x1d')]();};}function respondWithResult(_0x2c4f61,_0x5bae08){_0x5bae08=_0x5bae08||0xc8;return function(_0x5ae005){if(_0x5ae005){return _0x2c4f61['status'](_0x5bae08)[_0xa896('0x1e')](_0x5ae005);}};}function respondWithFilteredResult(_0x45e5de,_0x32950b){return function(_0x4eb630){if(_0x4eb630){var _0xe4ce92=typeof _0x32950b[_0xa896('0x1f')]==='undefined'&&typeof _0x32950b['limit']===_0xa896('0x20');var _0x5d9e93=_0x4eb630['count'];var _0x14c662=_0xe4ce92?0x0:_0x32950b[_0xa896('0x1f')];var _0x214b21=_0xe4ce92?_0x4eb630[_0xa896('0x21')]:_0x32950b[_0xa896('0x1f')]+_0x32950b[_0xa896('0x22')];var _0x41e55d;if(_0x214b21>=_0x5d9e93){_0x214b21=_0x5d9e93;_0x41e55d=0xc8;}else{_0x41e55d=0xce;}_0x45e5de[_0xa896('0x1c')](_0x41e55d);return _0x45e5de[_0xa896('0x23')](_0xa896('0x24'),_0x14c662+'-'+_0x214b21+'/'+_0x5d9e93)['json'](_0x4eb630);}return null;};}function patchUpdates(_0x3b7d17){return function(_0x540b6b){try{jsonpatch[_0xa896('0x25')](_0x540b6b,_0x3b7d17,!![]);}catch(_0x1a241a){return BPromise[_0xa896('0x26')](_0x1a241a);}return _0x540b6b[_0xa896('0x27')]();};}function saveUpdates(_0x17ef64,_0x3f2d84){return function(_0x4a509e){if(_0x4a509e){return _0x4a509e[_0xa896('0x28')](_0x17ef64)[_0xa896('0x29')](function(_0x485237){return _0x485237;});}return null;};}function removeEntity(_0x494432,_0x1d0d3a){return function(_0x2defe1){if(_0x2defe1){return _0x2defe1['destroy']()[_0xa896('0x29')](function(){_0x494432[_0xa896('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x17e602,_0x3d2d5c){return function(_0x3074d0){if(!_0x3074d0){_0x17e602[_0xa896('0x1b')](0x194);}return _0x3074d0;};}function handleError(_0x38c2f4,_0x39ea86){_0x39ea86=_0x39ea86||0x1f4;return function(_0x5a2df9){logger[_0xa896('0x2a')](_0x5a2df9['stack']);if(_0x5a2df9[_0xa896('0x2b')]){delete _0x5a2df9[_0xa896('0x2b')];}_0x38c2f4[_0xa896('0x1c')](_0x39ea86)['send'](_0x5a2df9);};}exports['index']=function(_0x112da9,_0x4a9e95){var _0x260ce3={},_0x72a622={},_0x156cc9={'count':0x0,'rows':[]};var _0x5c93f1=_[_0xa896('0x2c')](db['MailServerOut'][_0xa896('0x2d')],function(_0x9da615){return{'name':_0x9da615[_0xa896('0x2e')],'type':_0x9da615[_0xa896('0x2f')][_0xa896('0x30')]};});_0x72a622[_0xa896('0x31')]=_[_0xa896('0x2c')](_0x5c93f1,'name');_0x72a622[_0xa896('0x32')]=_[_0xa896('0x33')](_0x112da9[_0xa896('0x32')]);_0x72a622[_0xa896('0x34')]=_[_0xa896('0x35')](_0x72a622[_0xa896('0x31')],_0x72a622[_0xa896('0x32')]);_0x260ce3[_0xa896('0x36')]=_[_0xa896('0x35')](_0x72a622['model'],qs[_0xa896('0x37')](_0x112da9[_0xa896('0x32')][_0xa896('0x37')]));_0x260ce3[_0xa896('0x36')]=_0x260ce3[_0xa896('0x36')][_0xa896('0x38')]?_0x260ce3['attributes']:_0x72a622['model'];if(!_0x112da9[_0xa896('0x32')][_0xa896('0x39')]('nolimit')){_0x260ce3['limit']=qs[_0xa896('0x22')](_0x112da9[_0xa896('0x32')][_0xa896('0x22')]);_0x260ce3[_0xa896('0x1f')]=qs[_0xa896('0x1f')](_0x112da9['query']['offset']);}_0x260ce3['order']=qs[_0xa896('0x3a')](_0x112da9['query'][_0xa896('0x3a')]);_0x260ce3[_0xa896('0x3b')]=qs['filters'](_[_0xa896('0x3c')](_0x112da9['query'],_0x72a622[_0xa896('0x34')]),_0x5c93f1);if(_0x112da9[_0xa896('0x32')][_0xa896('0x3d')]){_0x260ce3[_0xa896('0x3b')]=_[_0xa896('0x3e')](_0x260ce3['where'],{'$or':_['map'](_0x5c93f1,function(_0xa77881){if(_0xa77881[_0xa896('0x2f')]!=='VIRTUAL'){var _0x14c343={};_0x14c343[_0xa77881[_0xa896('0x2b')]]={'$like':'%'+_0x112da9[_0xa896('0x32')][_0xa896('0x3d')]+'%'};return _0x14c343;}})});}_0x260ce3=_[_0xa896('0x3e')]({},_0x260ce3,_0x112da9[_0xa896('0x3f')]);var _0x2aa7c5={'where':_0x260ce3[_0xa896('0x3b')]};return db['MailServerOut'][_0xa896('0x21')](_0x2aa7c5)[_0xa896('0x29')](function(_0x4fa8ab){_0x156cc9[_0xa896('0x21')]=_0x4fa8ab;if(_0x112da9['query'][_0xa896('0x40')]){_0x260ce3[_0xa896('0x41')]=[{'all':!![]}];}return db['MailServerOut']['findAll'](_0x260ce3);})[_0xa896('0x29')](function(_0x1d4453){_0x156cc9[_0xa896('0x42')]=_0x1d4453;return _0x156cc9;})[_0xa896('0x29')](respondWithFilteredResult(_0x4a9e95,_0x260ce3))[_0xa896('0x43')](handleError(_0x4a9e95,null));};exports[_0xa896('0x44')]=function(_0x5485ba,_0x1215a1){var _0x62596c={'raw':!![],'where':{'id':_0x5485ba['params']['id']}},_0x462eb2={};_0x462eb2[_0xa896('0x31')]=_['keys'](db[_0xa896('0x45')][_0xa896('0x2d')]);_0x462eb2['query']=_[_0xa896('0x33')](_0x5485ba[_0xa896('0x32')]);_0x462eb2[_0xa896('0x34')]=_[_0xa896('0x35')](_0x462eb2['model'],_0x462eb2[_0xa896('0x32')]);_0x62596c[_0xa896('0x36')]=_['intersection'](_0x462eb2[_0xa896('0x31')],qs['fields'](_0x5485ba[_0xa896('0x32')][_0xa896('0x37')]));_0x62596c['attributes']=_0x62596c['attributes'][_0xa896('0x38')]?_0x62596c[_0xa896('0x36')]:_0x462eb2[_0xa896('0x31')];if(_0x5485ba[_0xa896('0x32')][_0xa896('0x40')]){_0x62596c[_0xa896('0x41')]=[{'all':!![]}];}_0x62596c=_[_0xa896('0x3e')]({},_0x62596c,_0x5485ba[_0xa896('0x3f')]);return db[_0xa896('0x45')]['find'](_0x62596c)['then'](handleEntityNotFound(_0x1215a1,null))[_0xa896('0x29')](respondWithResult(_0x1215a1,null))[_0xa896('0x43')](handleError(_0x1215a1,null));};exports[_0xa896('0x46')]=function(_0x4b6062,_0x39bee4){return db[_0xa896('0x45')][_0xa896('0x46')](_0x4b6062['body'],{})[_0xa896('0x29')](respondWithResult(_0x39bee4,0xc9))[_0xa896('0x43')](handleError(_0x39bee4,null));};exports[_0xa896('0x28')]=function(_0xa89302,_0x3078bd){if(_0xa89302[_0xa896('0x47')]['id']){delete _0xa89302[_0xa896('0x47')]['id'];}return db['MailServerOut'][_0xa896('0x48')]({'where':{'id':_0xa89302['params']['id']}})[_0xa896('0x29')](handleEntityNotFound(_0x3078bd,null))[_0xa896('0x29')](saveUpdates(_0xa89302[_0xa896('0x47')],null))['then'](respondWithResult(_0x3078bd,null))[_0xa896('0x43')](handleError(_0x3078bd,null));};exports[_0xa896('0x49')]=function(_0x2f624b,_0xdb24aa){return db[_0xa896('0x45')][_0xa896('0x48')]({'where':{'id':_0x2f624b[_0xa896('0x4a')]['id']}})['then'](handleEntityNotFound(_0xdb24aa,null))[_0xa896('0x29')](removeEntity(_0xdb24aa,null))[_0xa896('0x43')](handleError(_0xdb24aa,null));};
\ No newline at end of file
index ea0860e..41e0d9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50dd=['define','MailServerOut','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x50dd,0x12e));var _0xd50d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x50dd[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0xd50d('0x0'));var logger=require(_0xd50d('0x1'))(_0xd50d('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xd50d('0x3'));var fs=require('fs');var path=require(_0xd50d('0x4'));var rimraf=require(_0xd50d('0x5'));var config=require(_0xd50d('0x6'));var attributes=require('./mailServerOut.attributes');module[_0xd50d('0x7')]=function(_0x164106,_0x22f0b5){return _0x164106[_0xd50d('0x8')](_0xd50d('0x9'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf4cf=['request-promise','path','./mailServerOut.attributes','exports','define','MailServerOut','mail_servers_out','lodash','../../config/logger','api','bluebird'];(function(_0x3ad03d,_0x4297f9){var _0x21bc83=function(_0x3a5d00){while(--_0x3a5d00){_0x3ad03d['push'](_0x3ad03d['shift']());}};_0x21bc83(++_0x4297f9);}(_0xf4cf,0x15c));var _0xff4c=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0xf4cf[_0x3d42d8];return _0x27fc41;};'use strict';var _=require(_0xff4c('0x0'));var util=require('util');var logger=require(_0xff4c('0x1'))(_0xff4c('0x2'));var moment=require('moment');var BPromise=require(_0xff4c('0x3'));var rp=require(_0xff4c('0x4'));var fs=require('fs');var path=require(_0xff4c('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xff4c('0x6'));module[_0xff4c('0x7')]=function(_0x11c543,_0x4807ee){return _0x11c543[_0xff4c('0x8')](_0xff4c('0x9'),attributes,{'tableName':_0xff4c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7bce596..3374707 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','MailServerOut,\x20%s,\x20%s','MailServerOut,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x3ddf7f,_0x4fda35){var _0x36189f=function(_0x2e13bd){while(--_0x2e13bd){_0x3ddf7f['push'](_0x3ddf7f['shift']());}};_0x36189f(++_0x4fda35);}(_0x2ef3,0xba));var _0x32ef=function(_0x5d9bea,_0x17635c){_0x5d9bea=_0x5d9bea-0x0;var _0x5963ea=_0x2ef3[_0x5d9bea];return _0x5963ea;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('MailServerOut,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('MailServerOut,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
+var _0x1261=['then','info','MailServerOut,\x20%s,\x20%s','request\x20sent','MailServerOut,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x46c417,_0x7e3330){var _0x3b9d64=function(_0x50b482){while(--_0x50b482){_0x46c417['push'](_0x46c417['shift']());}};_0x3b9d64(++_0x7e3330);}(_0x1261,0x144));var _0x1126=function(_0x33d4a2,_0x2baaf4){_0x33d4a2=_0x33d4a2-0x0;var _0x2c793f=_0x1261[_0x33d4a2];return _0x2c793f;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('MailServerOut,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}
\ No newline at end of file
index 65f4a51..11e1420 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30ce=['post','create','put','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','describe','/:id','show'];(function(_0x2d6fc9,_0x538fc1){var _0x54c602=function(_0x565074){while(--_0x565074){_0x2d6fc9['push'](_0x2d6fc9['shift']());}};_0x54c602(++_0x538fc1);}(_0x30ce,0x1ba));var _0xe30c=function(_0x29db36,_0x410ae9){_0x29db36=_0x29db36-0x0;var _0x234e87=_0x30ce[_0x29db36];return _0x234e87;};'use strict';var multer=require(_0xe30c('0x0'));var util=require('util');var path=require(_0xe30c('0x1'));var timeout=require('connect-timeout');var express=require(_0xe30c('0x2'));var router=express[_0xe30c('0x3')]();var fs_extra=require(_0xe30c('0x4'));var auth=require(_0xe30c('0x5'));var interaction=require(_0xe30c('0x6'));var config=require(_0xe30c('0x7'));var controller=require(_0xe30c('0x8'));router[_0xe30c('0x9')]('/',auth[_0xe30c('0xa')](),controller['index']);router['get']('/describe',auth[_0xe30c('0xa')](),controller[_0xe30c('0xb')]);router[_0xe30c('0x9')](_0xe30c('0xc'),auth[_0xe30c('0xa')](),controller[_0xe30c('0xd')]);router[_0xe30c('0xe')]('/',auth[_0xe30c('0xa')](),controller[_0xe30c('0xf')]);router[_0xe30c('0x10')](_0xe30c('0xc'),auth[_0xe30c('0xa')](),controller['update']);router['delete'](_0xe30c('0xc'),auth['isAuthenticated'](),controller[_0xe30c('0x11')]);module[_0xe30c('0x12')]=router;
\ No newline at end of file
+var _0xd277=['exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./mailSubstatus.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','put','update'];(function(_0x4ac6d7,_0x50471a){var _0x18d107=function(_0x59dc3b){while(--_0x59dc3b){_0x4ac6d7['push'](_0x4ac6d7['shift']());}};_0x18d107(++_0x50471a);}(_0xd277,0xb5));var _0x7d27=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xd277[_0x2641f9];return _0x585741;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x7d27('0x0'));var timeout=require(_0x7d27('0x1'));var express=require(_0x7d27('0x2'));var router=express[_0x7d27('0x3')]();var fs_extra=require(_0x7d27('0x4'));var auth=require(_0x7d27('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x7d27('0x6'));router['get']('/',auth[_0x7d27('0x7')](),controller[_0x7d27('0x8')]);router[_0x7d27('0x9')](_0x7d27('0xa'),auth[_0x7d27('0x7')](),controller[_0x7d27('0xb')]);router[_0x7d27('0x9')](_0x7d27('0xc'),auth[_0x7d27('0x7')](),controller[_0x7d27('0xd')]);router[_0x7d27('0xe')]('/',auth[_0x7d27('0x7')](),controller['create']);router[_0x7d27('0xf')](_0x7d27('0xc'),auth['isAuthenticated'](),controller[_0x7d27('0x10')]);router['delete'](_0x7d27('0xc'),auth[_0x7d27('0x7')](),controller['destroy']);module[_0x7d27('0x11')]=router;
\ No newline at end of file
index 24d9723..31e0b67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb934=['exports','STRING','sequelize'];(function(_0x55b9a8,_0x387593){var _0x37970f=function(_0x5d459c){while(--_0x5d459c){_0x55b9a8['push'](_0x55b9a8['shift']());}};_0x37970f(++_0x387593);}(_0xb934,0x92));var _0x4b93=function(_0x3a7634,_0x18f234){_0x3a7634=_0x3a7634-0x0;var _0x1c7ad5=_0xb934[_0x3a7634];return _0x1c7ad5;};'use strict';var Sequelize=require(_0x4b93('0x0'));module[_0x4b93('0x1')]={'name':{'type':Sequelize[_0x4b93('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x4b93('0x2')]}};
\ No newline at end of file
+var _0x4074=['sequelize','exports','STRING'];(function(_0x4f59e2,_0x165dc3){var _0x2892f4=function(_0x133eda){while(--_0x133eda){_0x4f59e2['push'](_0x4f59e2['shift']());}};_0x2892f4(++_0x165dc3);}(_0x4074,0xf0));var _0x4407=function(_0x195308,_0x1cce76){_0x195308=_0x195308-0x0;var _0x236e2e=_0x4074[_0x195308];return _0x236e2e;};'use strict';var Sequelize=require(_0x4407('0x0'));module[_0x4407('0x1')]={'name':{'type':Sequelize[_0x4407('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x4407('0x2')]}};
\ No newline at end of file
index 3034fa9..fac5533 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc37e=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','stack','name','send','map','MailSubstatus','rawAttributes','fieldName','type','query','model','attributes','fields','length','sort','filters','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','intersection','options','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','squel','desk.js','to-csv','querystring','papaparse','ioredis'];(function(_0x977c2e,_0x4aee82){var _0x3a20d5=function(_0x5b0528){while(--_0x5b0528){_0x977c2e['push'](_0x977c2e['shift']());}};_0x3a20d5(++_0x4aee82);}(_0xc37e,0x153));var _0xec37=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xc37e[_0x5d6456];return _0x4d66c1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xec37('0x0'));var zipdir=require(_0xec37('0x1'));var jsonpatch=require(_0xec37('0x2'));var rp=require(_0xec37('0x3'));var moment=require(_0xec37('0x4'));var BPromise=require(_0xec37('0x5'));var Mustache=require(_0xec37('0x6'));var util=require(_0xec37('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xec37('0x8'));var fs=require('fs');var fs_extra=require(_0xec37('0x9'));var _=require('lodash');var squel=require(_0xec37('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xec37('0xb'));var toCsv=require(_0xec37('0xc'));var querystring=require(_0xec37('0xd'));var Papa=require(_0xec37('0xe'));var Redis=require(_0xec37('0xf'));var authService=require(_0xec37('0x10'));var qs=require(_0xec37('0x11'));var as=require(_0xec37('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xec37('0x13'))(_0xec37('0x14'));var utils=require('../../config/utils');var config=require(_0xec37('0x15'));var licenseUtil=require(_0xec37('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x45937e,_0x406e6c){_0x406e6c=_0x406e6c||0xcc;return function(_0x48f090){if(_0x48f090){return _0x45937e['sendStatus'](_0x406e6c);}return _0x45937e['status'](_0x406e6c)[_0xec37('0x17')]();};}function respondWithResult(_0x4d7b58,_0x270b29){_0x270b29=_0x270b29||0xc8;return function(_0x53eb88){if(_0x53eb88){return _0x4d7b58[_0xec37('0x18')](_0x270b29)[_0xec37('0x19')](_0x53eb88);}};}function respondWithFilteredResult(_0x11c99d,_0xec49eb){return function(_0x55c8d9){if(_0x55c8d9){var _0x4955ba=typeof _0xec49eb[_0xec37('0x1a')]==='undefined'&&typeof _0xec49eb['limit']===_0xec37('0x1b');var _0x2b9d3f=_0x55c8d9['count'];var _0x272aa2=_0x4955ba?0x0:_0xec49eb['offset'];var _0x334006=_0x4955ba?_0x55c8d9[_0xec37('0x1c')]:_0xec49eb[_0xec37('0x1a')]+_0xec49eb[_0xec37('0x1d')];var _0x3d0f6e;if(_0x334006>=_0x2b9d3f){_0x334006=_0x2b9d3f;_0x3d0f6e=0xc8;}else{_0x3d0f6e=0xce;}_0x11c99d[_0xec37('0x18')](_0x3d0f6e);return _0x11c99d[_0xec37('0x1e')](_0xec37('0x1f'),_0x272aa2+'-'+_0x334006+'/'+_0x2b9d3f)[_0xec37('0x19')](_0x55c8d9);}return null;};}function patchUpdates(_0x98b854){return function(_0x241ef9){try{jsonpatch['apply'](_0x241ef9,_0x98b854,!![]);}catch(_0x1d9ad2){return BPromise[_0xec37('0x20')](_0x1d9ad2);}return _0x241ef9[_0xec37('0x21')]();};}function saveUpdates(_0x2d59a9,_0x405e00){return function(_0x52647d){if(_0x52647d){return _0x52647d[_0xec37('0x22')](_0x2d59a9)[_0xec37('0x23')](function(_0x21989c){return _0x21989c;});}return null;};}function removeEntity(_0x12d3cb,_0x3c552d){return function(_0x60abd9){if(_0x60abd9){return _0x60abd9[_0xec37('0x24')]()[_0xec37('0x23')](function(){_0x12d3cb[_0xec37('0x18')](0xcc)[_0xec37('0x17')]();});}};}function handleEntityNotFound(_0xd371c2,_0x2eecce){return function(_0x3d6293){if(!_0x3d6293){_0xd371c2['sendStatus'](0x194);}return _0x3d6293;};}function handleError(_0x1aa0e2,_0x2f57dc){_0x2f57dc=_0x2f57dc||0x1f4;return function(_0x22f898){logger['error'](_0x22f898[_0xec37('0x25')]);if(_0x22f898[_0xec37('0x26')]){delete _0x22f898[_0xec37('0x26')];}_0x1aa0e2[_0xec37('0x18')](_0x2f57dc)[_0xec37('0x27')](_0x22f898);};}exports['index']=function(_0x4b482f,_0x5d8db7){var _0x4b09d2={},_0x5a3f7b={},_0x559242={'count':0x0,'rows':[]};var _0x99b5fe=_[_0xec37('0x28')](db[_0xec37('0x29')][_0xec37('0x2a')],function(_0x4cdf05){return{'name':_0x4cdf05[_0xec37('0x2b')],'type':_0x4cdf05[_0xec37('0x2c')]['key']};});_0x5a3f7b['model']=_['map'](_0x99b5fe,_0xec37('0x26'));_0x5a3f7b[_0xec37('0x2d')]=_['keys'](_0x4b482f[_0xec37('0x2d')]);_0x5a3f7b['filters']=_['intersection'](_0x5a3f7b[_0xec37('0x2e')],_0x5a3f7b[_0xec37('0x2d')]);_0x4b09d2[_0xec37('0x2f')]=_['intersection'](_0x5a3f7b[_0xec37('0x2e')],qs['fields'](_0x4b482f[_0xec37('0x2d')][_0xec37('0x30')]));_0x4b09d2['attributes']=_0x4b09d2['attributes'][_0xec37('0x31')]?_0x4b09d2[_0xec37('0x2f')]:_0x5a3f7b['model'];if(!_0x4b482f[_0xec37('0x2d')]['hasOwnProperty']('nolimit')){_0x4b09d2['limit']=qs['limit'](_0x4b482f[_0xec37('0x2d')][_0xec37('0x1d')]);_0x4b09d2[_0xec37('0x1a')]=qs[_0xec37('0x1a')](_0x4b482f['query'][_0xec37('0x1a')]);}_0x4b09d2['order']=qs[_0xec37('0x32')](_0x4b482f[_0xec37('0x2d')]['sort']);_0x4b09d2['where']=qs[_0xec37('0x33')](_[_0xec37('0x34')](_0x4b482f[_0xec37('0x2d')],_0x5a3f7b['filters']),_0x99b5fe);if(_0x4b482f[_0xec37('0x2d')][_0xec37('0x35')]){_0x4b09d2[_0xec37('0x36')]=_[_0xec37('0x37')](_0x4b09d2[_0xec37('0x36')],{'$or':_[_0xec37('0x28')](_0x99b5fe,function(_0x5aa771){if(_0x5aa771[_0xec37('0x2c')]!==_0xec37('0x38')){var _0x1efdd3={};_0x1efdd3[_0x5aa771[_0xec37('0x26')]]={'$like':'%'+_0x4b482f[_0xec37('0x2d')][_0xec37('0x35')]+'%'};return _0x1efdd3;}})});}_0x4b09d2=_[_0xec37('0x37')]({},_0x4b09d2,_0x4b482f['options']);var _0x4fa823={'where':_0x4b09d2['where']};return db[_0xec37('0x29')][_0xec37('0x1c')](_0x4fa823)['then'](function(_0x4402fb){_0x559242['count']=_0x4402fb;if(_0x4b482f[_0xec37('0x2d')][_0xec37('0x39')]){_0x4b09d2[_0xec37('0x3a')]=[{'all':!![]}];}return db[_0xec37('0x29')][_0xec37('0x3b')](_0x4b09d2);})[_0xec37('0x23')](function(_0x120cd9){_0x559242[_0xec37('0x3c')]=_0x120cd9;return _0x559242;})['then'](respondWithFilteredResult(_0x5d8db7,_0x4b09d2))[_0xec37('0x3d')](handleError(_0x5d8db7,null));};exports[_0xec37('0x3e')]=function(_0x4aad4a,_0x3ca25f){var _0x574db5={'raw':!![],'where':{'id':_0x4aad4a[_0xec37('0x3f')]['id']}},_0x47e6a3={};_0x47e6a3[_0xec37('0x2e')]=_[_0xec37('0x40')](db[_0xec37('0x29')][_0xec37('0x2a')]);_0x47e6a3[_0xec37('0x2d')]=_[_0xec37('0x40')](_0x4aad4a[_0xec37('0x2d')]);_0x47e6a3[_0xec37('0x33')]=_[_0xec37('0x41')](_0x47e6a3[_0xec37('0x2e')],_0x47e6a3[_0xec37('0x2d')]);_0x574db5['attributes']=_[_0xec37('0x41')](_0x47e6a3[_0xec37('0x2e')],qs[_0xec37('0x30')](_0x4aad4a[_0xec37('0x2d')]['fields']));_0x574db5[_0xec37('0x2f')]=_0x574db5[_0xec37('0x2f')][_0xec37('0x31')]?_0x574db5[_0xec37('0x2f')]:_0x47e6a3[_0xec37('0x2e')];if(_0x4aad4a[_0xec37('0x2d')]['includeAll']){_0x574db5[_0xec37('0x3a')]=[{'all':!![]}];}_0x574db5=_[_0xec37('0x37')]({},_0x574db5,_0x4aad4a[_0xec37('0x42')]);return db['MailSubstatus'][_0xec37('0x43')](_0x574db5)['then'](handleEntityNotFound(_0x3ca25f,null))[_0xec37('0x23')](respondWithResult(_0x3ca25f,null))[_0xec37('0x3d')](handleError(_0x3ca25f,null));};exports[_0xec37('0x44')]=function(_0x4e65e0,_0x45fe09){return db[_0xec37('0x29')][_0xec37('0x44')](_0x4e65e0['body'],{})[_0xec37('0x23')](respondWithResult(_0x45fe09,0xc9))['catch'](handleError(_0x45fe09,null));};exports[_0xec37('0x22')]=function(_0x420a34,_0x38d54a){if(_0x420a34[_0xec37('0x45')]['id']){delete _0x420a34[_0xec37('0x45')]['id'];}return db[_0xec37('0x29')][_0xec37('0x43')]({'where':{'id':_0x420a34['params']['id']}})[_0xec37('0x23')](handleEntityNotFound(_0x38d54a,null))[_0xec37('0x23')](saveUpdates(_0x420a34['body'],null))['then'](respondWithResult(_0x38d54a,null))[_0xec37('0x3d')](handleError(_0x38d54a,null));};exports[_0xec37('0x24')]=function(_0x96b879,_0x1b73aa){return db[_0xec37('0x29')][_0xec37('0x43')]({'where':{'id':_0x96b879[_0xec37('0x3f')]['id']}})[_0xec37('0x23')](handleEntityNotFound(_0x1b73aa,null))['then'](removeEntity(_0x1b73aa,null))[_0xec37('0x3d')](handleError(_0x1b73aa,null));};exports['describe']=function(_0x1f565f,_0x321593){return db[_0xec37('0x29')][_0xec37('0x46')]()[_0xec37('0x23')](respondWithResult(_0x321593,null))['catch'](handleError(_0x321593,null));};
\ No newline at end of file
+var _0x7b9e=['save','then','stack','name','index','map','MailSubstatus','type','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','find','create','body','update','params','destroy','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','limit','Content-Range','apply'];(function(_0x28636a,_0x50445e){var _0x362fd2=function(_0x4ee5b0){while(--_0x4ee5b0){_0x28636a['push'](_0x28636a['shift']());}};_0x362fd2(++_0x50445e);}(_0x7b9e,0xb4));var _0xe7b9=function(_0x4cb174,_0x294535){_0x4cb174=_0x4cb174-0x0;var _0x206e9b=_0x7b9e[_0x4cb174];return _0x206e9b;};'use strict';var emlformat=require(_0xe7b9('0x0'));var rimraf=require(_0xe7b9('0x1'));var zipdir=require(_0xe7b9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe7b9('0x3'));var moment=require(_0xe7b9('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xe7b9('0x5'));var util=require(_0xe7b9('0x6'));var path=require(_0xe7b9('0x7'));var sox=require(_0xe7b9('0x8'));var csv=require(_0xe7b9('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe7b9('0xa'));var _=require(_0xe7b9('0xb'));var squel=require(_0xe7b9('0xc'));var crypto=require(_0xe7b9('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xe7b9('0xe'));var toCsv=require(_0xe7b9('0x9'));var querystring=require(_0xe7b9('0xf'));var Papa=require(_0xe7b9('0x10'));var Redis=require('ioredis');var authService=require(_0xe7b9('0x11'));var qs=require(_0xe7b9('0x12'));var as=require(_0xe7b9('0x13'));var hardwareService=require(_0xe7b9('0x14'));var logger=require(_0xe7b9('0x15'))(_0xe7b9('0x16'));var utils=require(_0xe7b9('0x17'));var config=require(_0xe7b9('0x18'));var licenseUtil=require(_0xe7b9('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2d797d,_0x58bca5){_0x58bca5=_0x58bca5||0xcc;return function(_0x455d23){if(_0x455d23){return _0x2d797d[_0xe7b9('0x1a')](_0x58bca5);}return _0x2d797d[_0xe7b9('0x1b')](_0x58bca5)[_0xe7b9('0x1c')]();};}function respondWithResult(_0x2b41bd,_0x558f57){_0x558f57=_0x558f57||0xc8;return function(_0x537676){if(_0x537676){return _0x2b41bd[_0xe7b9('0x1b')](_0x558f57)[_0xe7b9('0x1d')](_0x537676);}};}function respondWithFilteredResult(_0x58cb19,_0x537ca4){return function(_0x4db741){if(_0x4db741){var _0x21e6fc=typeof _0x537ca4['offset']===_0xe7b9('0x1e')&&typeof _0x537ca4['limit']==='undefined';var _0x3e6799=_0x4db741[_0xe7b9('0x1f')];var _0x30e90c=_0x21e6fc?0x0:_0x537ca4[_0xe7b9('0x20')];var _0x3bb683=_0x21e6fc?_0x4db741[_0xe7b9('0x1f')]:_0x537ca4['offset']+_0x537ca4[_0xe7b9('0x21')];var _0x186f7a;if(_0x3bb683>=_0x3e6799){_0x3bb683=_0x3e6799;_0x186f7a=0xc8;}else{_0x186f7a=0xce;}_0x58cb19[_0xe7b9('0x1b')](_0x186f7a);return _0x58cb19['set'](_0xe7b9('0x22'),_0x30e90c+'-'+_0x3bb683+'/'+_0x3e6799)[_0xe7b9('0x1d')](_0x4db741);}return null;};}function patchUpdates(_0x562c9a){return function(_0x5ef81e){try{jsonpatch[_0xe7b9('0x23')](_0x5ef81e,_0x562c9a,!![]);}catch(_0xf6bfc2){return BPromise['reject'](_0xf6bfc2);}return _0x5ef81e[_0xe7b9('0x24')]();};}function saveUpdates(_0x5a2912,_0x4edfba){return function(_0x563a82){if(_0x563a82){return _0x563a82['update'](_0x5a2912)[_0xe7b9('0x25')](function(_0x173a25){return _0x173a25;});}return null;};}function removeEntity(_0xcdaeb2,_0x2da1a){return function(_0x5424e9){if(_0x5424e9){return _0x5424e9['destroy']()[_0xe7b9('0x25')](function(){_0xcdaeb2['status'](0xcc)[_0xe7b9('0x1c')]();});}};}function handleEntityNotFound(_0x14a384,_0x52593e){return function(_0x1783b5){if(!_0x1783b5){_0x14a384['sendStatus'](0x194);}return _0x1783b5;};}function handleError(_0x5494c4,_0x126612){_0x126612=_0x126612||0x1f4;return function(_0xe9d94b){logger['error'](_0xe9d94b[_0xe7b9('0x26')]);if(_0xe9d94b[_0xe7b9('0x27')]){delete _0xe9d94b[_0xe7b9('0x27')];}_0x5494c4[_0xe7b9('0x1b')](_0x126612)['send'](_0xe9d94b);};}exports[_0xe7b9('0x28')]=function(_0x333d5e,_0x2ef9ff){var _0x1019e5={},_0x6a3eef={},_0x220331={'count':0x0,'rows':[]};var _0x39e18d=_[_0xe7b9('0x29')](db[_0xe7b9('0x2a')]['rawAttributes'],function(_0x419926){return{'name':_0x419926['fieldName'],'type':_0x419926[_0xe7b9('0x2b')]['key']};});_0x6a3eef[_0xe7b9('0x2c')]=_[_0xe7b9('0x29')](_0x39e18d,_0xe7b9('0x27'));_0x6a3eef[_0xe7b9('0x2d')]=_[_0xe7b9('0x2e')](_0x333d5e['query']);_0x6a3eef[_0xe7b9('0x2f')]=_[_0xe7b9('0x30')](_0x6a3eef['model'],_0x6a3eef['query']);_0x1019e5[_0xe7b9('0x31')]=_[_0xe7b9('0x30')](_0x6a3eef[_0xe7b9('0x2c')],qs[_0xe7b9('0x32')](_0x333d5e[_0xe7b9('0x2d')]['fields']));_0x1019e5[_0xe7b9('0x31')]=_0x1019e5['attributes'][_0xe7b9('0x33')]?_0x1019e5[_0xe7b9('0x31')]:_0x6a3eef[_0xe7b9('0x2c')];if(!_0x333d5e[_0xe7b9('0x2d')]['hasOwnProperty']('nolimit')){_0x1019e5['limit']=qs[_0xe7b9('0x21')](_0x333d5e[_0xe7b9('0x2d')][_0xe7b9('0x21')]);_0x1019e5[_0xe7b9('0x20')]=qs[_0xe7b9('0x20')](_0x333d5e[_0xe7b9('0x2d')][_0xe7b9('0x20')]);}_0x1019e5[_0xe7b9('0x34')]=qs['sort'](_0x333d5e[_0xe7b9('0x2d')][_0xe7b9('0x35')]);_0x1019e5[_0xe7b9('0x36')]=qs[_0xe7b9('0x2f')](_['pick'](_0x333d5e['query'],_0x6a3eef[_0xe7b9('0x2f')]),_0x39e18d);if(_0x333d5e[_0xe7b9('0x2d')]['filter']){_0x1019e5['where']=_[_0xe7b9('0x37')](_0x1019e5[_0xe7b9('0x36')],{'$or':_[_0xe7b9('0x29')](_0x39e18d,function(_0x4ae6c0){if(_0x4ae6c0[_0xe7b9('0x2b')]!==_0xe7b9('0x38')){var _0x176f95={};_0x176f95[_0x4ae6c0[_0xe7b9('0x27')]]={'$like':'%'+_0x333d5e[_0xe7b9('0x2d')][_0xe7b9('0x39')]+'%'};return _0x176f95;}})});}_0x1019e5=_['merge']({},_0x1019e5,_0x333d5e[_0xe7b9('0x3a')]);var _0x5e6cd8={'where':_0x1019e5[_0xe7b9('0x36')]};return db[_0xe7b9('0x2a')][_0xe7b9('0x1f')](_0x5e6cd8)[_0xe7b9('0x25')](function(_0x27ddc7){_0x220331['count']=_0x27ddc7;if(_0x333d5e['query'][_0xe7b9('0x3b')]){_0x1019e5[_0xe7b9('0x3c')]=[{'all':!![]}];}return db[_0xe7b9('0x2a')][_0xe7b9('0x3d')](_0x1019e5);})['then'](function(_0x547a6b){_0x220331[_0xe7b9('0x3e')]=_0x547a6b;return _0x220331;})[_0xe7b9('0x25')](respondWithFilteredResult(_0x2ef9ff,_0x1019e5))[_0xe7b9('0x3f')](handleError(_0x2ef9ff,null));};exports[_0xe7b9('0x40')]=function(_0x2346a8,_0x4965c9){var _0x1589b4={'raw':!![],'where':{'id':_0x2346a8['params']['id']}},_0x50ce6d={};_0x50ce6d[_0xe7b9('0x2c')]=_['keys'](db['MailSubstatus']['rawAttributes']);_0x50ce6d[_0xe7b9('0x2d')]=_[_0xe7b9('0x2e')](_0x2346a8[_0xe7b9('0x2d')]);_0x50ce6d[_0xe7b9('0x2f')]=_['intersection'](_0x50ce6d[_0xe7b9('0x2c')],_0x50ce6d[_0xe7b9('0x2d')]);_0x1589b4[_0xe7b9('0x31')]=_[_0xe7b9('0x30')](_0x50ce6d[_0xe7b9('0x2c')],qs[_0xe7b9('0x32')](_0x2346a8[_0xe7b9('0x2d')]['fields']));_0x1589b4[_0xe7b9('0x31')]=_0x1589b4[_0xe7b9('0x31')]['length']?_0x1589b4[_0xe7b9('0x31')]:_0x50ce6d[_0xe7b9('0x2c')];if(_0x2346a8[_0xe7b9('0x2d')][_0xe7b9('0x3b')]){_0x1589b4[_0xe7b9('0x3c')]=[{'all':!![]}];}_0x1589b4=_['merge']({},_0x1589b4,_0x2346a8[_0xe7b9('0x3a')]);return db[_0xe7b9('0x2a')][_0xe7b9('0x41')](_0x1589b4)[_0xe7b9('0x25')](handleEntityNotFound(_0x4965c9,null))[_0xe7b9('0x25')](respondWithResult(_0x4965c9,null))[_0xe7b9('0x3f')](handleError(_0x4965c9,null));};exports[_0xe7b9('0x42')]=function(_0x31dbdc,_0x5d8371){return db[_0xe7b9('0x2a')]['create'](_0x31dbdc[_0xe7b9('0x43')],{})['then'](respondWithResult(_0x5d8371,0xc9))[_0xe7b9('0x3f')](handleError(_0x5d8371,null));};exports[_0xe7b9('0x44')]=function(_0x261036,_0x582c68){if(_0x261036['body']['id']){delete _0x261036['body']['id'];}return db[_0xe7b9('0x2a')][_0xe7b9('0x41')]({'where':{'id':_0x261036[_0xe7b9('0x45')]['id']}})[_0xe7b9('0x25')](handleEntityNotFound(_0x582c68,null))['then'](saveUpdates(_0x261036[_0xe7b9('0x43')],null))[_0xe7b9('0x25')](respondWithResult(_0x582c68,null))[_0xe7b9('0x3f')](handleError(_0x582c68,null));};exports[_0xe7b9('0x46')]=function(_0x5579f0,_0x731b2b){return db['MailSubstatus'][_0xe7b9('0x41')]({'where':{'id':_0x5579f0[_0xe7b9('0x45')]['id']}})['then'](handleEntityNotFound(_0x731b2b,null))[_0xe7b9('0x25')](removeEntity(_0x731b2b,null))[_0xe7b9('0x3f')](handleError(_0x731b2b,null));};exports[_0xe7b9('0x47')]=function(_0x3a2232,_0x557497){return db['MailSubstatus'][_0xe7b9('0x47')]()[_0xe7b9('0x25')](respondWithResult(_0x557497,null))['catch'](handleError(_0x557497,null));};
\ No newline at end of file
index 9b6fe68..3d59970 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8009=['./mailSubstatus.attributes','exports','define','MailSubstatus','mail_substatuses','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x40031b,_0x2ace75){var _0x35f173=function(_0x5bb66d){while(--_0x5bb66d){_0x40031b['push'](_0x40031b['shift']());}};_0x35f173(++_0x2ace75);}(_0x8009,0x179));var _0x9800=function(_0x3b1015,_0x452b47){_0x3b1015=_0x3b1015-0x0;var _0x2968f7=_0x8009[_0x3b1015];return _0x2968f7;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9800('0x0'))('api');var moment=require(_0x9800('0x1'));var BPromise=require(_0x9800('0x2'));var rp=require(_0x9800('0x3'));var fs=require('fs');var path=require(_0x9800('0x4'));var rimraf=require(_0x9800('0x5'));var config=require(_0x9800('0x6'));var attributes=require(_0x9800('0x7'));module[_0x9800('0x8')]=function(_0x42e7e0,_0xfa073e){return _0x42e7e0[_0x9800('0x9')](_0x9800('0xa'),attributes,{'tableName':_0x9800('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x52e7=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailSubstatus.attributes','define','MailSubstatus','lodash','util','../../config/logger'];(function(_0x40042d,_0x3ce810){var _0x3889a1=function(_0x2fdcbb){while(--_0x2fdcbb){_0x40042d['push'](_0x40042d['shift']());}};_0x3889a1(++_0x3ce810);}(_0x52e7,0xed));var _0x752e=function(_0x5e909d,_0xcb0787){_0x5e909d=_0x5e909d-0x0;var _0x4cf7b5=_0x52e7[_0x5e909d];return _0x4cf7b5;};'use strict';var _=require(_0x752e('0x0'));var util=require(_0x752e('0x1'));var logger=require(_0x752e('0x2'))('api');var moment=require(_0x752e('0x3'));var BPromise=require(_0x752e('0x4'));var rp=require(_0x752e('0x5'));var fs=require('fs');var path=require(_0x752e('0x6'));var rimraf=require(_0x752e('0x7'));var config=require(_0x752e('0x8'));var attributes=require(_0x752e('0x9'));module['exports']=function(_0x15a3c4,_0x157b40){return _0x15a3c4[_0x752e('0xa')](_0x752e('0xb'),attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 68ac527..f7bdb45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf583=['info','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','request','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf583,0x1ca));var _0x3f58=function(_0x4b91c4,_0x23f35f){_0x4b91c4=_0x4b91c4-0x0;var _0x25cb80=_0xf583[_0x4b91c4];return _0x25cb80;};'use strict';var _=require('lodash');var util=require(_0x3f58('0x0'));var moment=require(_0x3f58('0x1'));var BPromise=require(_0x3f58('0x2'));var rs=require(_0x3f58('0x3'));var fs=require('fs');var Redis=require(_0x3f58('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3f58('0x5'));var logger=require(_0x3f58('0x6'))(_0x3f58('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x382103,_0x3097de,_0x2a977d){return new BPromise(function(_0xc1d023,_0x527cc4){return client[_0x3f58('0x8')](_0x382103,_0x2a977d)['then'](function(_0x30ab72){logger['info'](_0x3f58('0x9'),_0x3097de,_0x3f58('0xa'));logger[_0x3f58('0xb')](_0x3f58('0xc'),_0x3097de,'request\x20sent',JSON[_0x3f58('0xd')](_0x30ab72));if(_0x30ab72[_0x3f58('0xe')]){if(_0x30ab72[_0x3f58('0xe')][_0x3f58('0xf')]===0x1f4){logger[_0x3f58('0xe')]('MailSubstatus,\x20%s,\x20%s',_0x3097de,_0x30ab72[_0x3f58('0xe')][_0x3f58('0x10')]);return _0x527cc4(_0x30ab72['error'][_0x3f58('0x10')]);}logger[_0x3f58('0xe')](_0x3f58('0x9'),_0x3097de,_0x30ab72['error']['message']);return _0xc1d023(_0x30ab72[_0x3f58('0xe')][_0x3f58('0x10')]);}else{logger[_0x3f58('0x11')](_0x3f58('0x9'),_0x3097de,_0x3f58('0xa'));_0xc1d023(_0x30ab72['result'][_0x3f58('0x10')]);}})[_0x3f58('0x12')](function(_0x4df837){logger['error']('MailSubstatus,\x20%s,\x20%s',_0x3097de,_0x4df837);_0x527cc4(_0x4df837);});});}
\ No newline at end of file
+var _0xd4e8=['debug','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','MailSubstatus,\x20%s,\x20%s','request\x20sent'];(function(_0x2773d6,_0x3c9695){var _0x2c3815=function(_0x2f6fd4){while(--_0x2f6fd4){_0x2773d6['push'](_0x2773d6['shift']());}};_0x2c3815(++_0x3c9695);}(_0xd4e8,0x85));var _0x8d4e=function(_0x301b7a,_0x55fdd0){_0x301b7a=_0x301b7a-0x0;var _0x1e2fab=_0xd4e8[_0x301b7a];return _0x1e2fab;};'use strict';var _=require(_0x8d4e('0x0'));var util=require(_0x8d4e('0x1'));var moment=require('moment');var BPromise=require(_0x8d4e('0x2'));var rs=require(_0x8d4e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x8d4e('0x4'));var logger=require(_0x8d4e('0x5'))(_0x8d4e('0x6'));var config=require('../../config/environment');var jayson=require(_0x8d4e('0x7'));var client=jayson[_0x8d4e('0x8')][_0x8d4e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2a2da5,_0x4b31a1,_0x10f934){return new BPromise(function(_0x456655,_0x1d7d39){return client['request'](_0x2a2da5,_0x10f934)[_0x8d4e('0xa')](function(_0x1e485a){logger[_0x8d4e('0xb')](_0x8d4e('0xc'),_0x4b31a1,_0x8d4e('0xd'));logger[_0x8d4e('0xe')]('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x4b31a1,'request\x20sent',JSON[_0x8d4e('0xf')](_0x1e485a));if(_0x1e485a[_0x8d4e('0x10')]){if(_0x1e485a['error'][_0x8d4e('0x11')]===0x1f4){logger['error'](_0x8d4e('0xc'),_0x4b31a1,_0x1e485a[_0x8d4e('0x10')][_0x8d4e('0x12')]);return _0x1d7d39(_0x1e485a[_0x8d4e('0x10')][_0x8d4e('0x12')]);}logger[_0x8d4e('0x10')](_0x8d4e('0xc'),_0x4b31a1,_0x1e485a[_0x8d4e('0x10')][_0x8d4e('0x12')]);return _0x456655(_0x1e485a[_0x8d4e('0x10')][_0x8d4e('0x12')]);}else{logger[_0x8d4e('0xb')](_0x8d4e('0xc'),_0x4b31a1,_0x8d4e('0xd'));_0x456655(_0x1e485a[_0x8d4e('0x13')][_0x8d4e('0x12')]);}})[_0x8d4e('0x14')](function(_0x1ab355){logger[_0x8d4e('0x10')]('MailSubstatus,\x20%s,\x20%s',_0x4b31a1,_0x1ab355);_0x1d7d39(_0x1ab355);});});}
\ No newline at end of file
index 7f5877e..60e0e21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a2f=['./mailTransferReport.controller','get','isAuthenticated','index','describe','/:id','post','create','put','update','delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x55c73e,_0x40995a){var _0x15c4b1=function(_0x38f09a){while(--_0x38f09a){_0x55c73e['push'](_0x55c73e['shift']());}};_0x15c4b1(++_0x40995a);}(_0x5a2f,0x19d));var _0xf5a2=function(_0x33d4c5,_0x21b867){_0x33d4c5=_0x33d4c5-0x0;var _0x3ebdaf=_0x5a2f[_0x33d4c5];return _0x3ebdaf;};'use strict';var multer=require(_0xf5a2('0x0'));var util=require(_0xf5a2('0x1'));var path=require(_0xf5a2('0x2'));var timeout=require('connect-timeout');var express=require(_0xf5a2('0x3'));var router=express['Router']();var fs_extra=require(_0xf5a2('0x4'));var auth=require(_0xf5a2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xf5a2('0x6'));var controller=require(_0xf5a2('0x7'));router[_0xf5a2('0x8')]('/',auth[_0xf5a2('0x9')](),controller[_0xf5a2('0xa')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xf5a2('0xb')]);router[_0xf5a2('0x8')](_0xf5a2('0xc'),auth[_0xf5a2('0x9')](),controller['show']);router[_0xf5a2('0xd')]('/',auth[_0xf5a2('0x9')](),controller[_0xf5a2('0xe')]);router[_0xf5a2('0xf')]('/:id',auth[_0xf5a2('0x9')](),controller[_0xf5a2('0x10')]);router[_0xf5a2('0x11')](_0xf5a2('0xc'),auth[_0xf5a2('0x9')](),controller[_0xf5a2('0x12')]);module[_0xf5a2('0x13')]=router;
\ No newline at end of file
+var _0xc480=['isAuthenticated','describe','post','put','/:id','delete','destroy','multer','util','path','connect-timeout','express','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','index','/describe'];(function(_0x214266,_0x1f6f52){var _0x568f75=function(_0x541904){while(--_0x541904){_0x214266['push'](_0x214266['shift']());}};_0x568f75(++_0x1f6f52);}(_0xc480,0x139));var _0x0c48=function(_0x4cecbc,_0x514f25){_0x4cecbc=_0x4cecbc-0x0;var _0xba228b=_0xc480[_0x4cecbc];return _0xba228b;};'use strict';var multer=require(_0x0c48('0x0'));var util=require(_0x0c48('0x1'));var path=require(_0x0c48('0x2'));var timeout=require(_0x0c48('0x3'));var express=require(_0x0c48('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x0c48('0x5'));var config=require(_0x0c48('0x6'));var controller=require(_0x0c48('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x0c48('0x8')]);router['get'](_0x0c48('0x9'),auth[_0x0c48('0xa')](),controller[_0x0c48('0xb')]);router['get']('/:id',auth[_0x0c48('0xa')](),controller['show']);router[_0x0c48('0xc')]('/',auth[_0x0c48('0xa')](),controller['create']);router[_0x0c48('0xd')](_0x0c48('0xe'),auth[_0x0c48('0xa')](),controller['update']);router[_0x0c48('0xf')](_0x0c48('0xe'),auth['isAuthenticated'](),controller[_0x0c48('0x10')]);module['exports']=router;
\ No newline at end of file
index 1e31a3d..e7ac198 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['NOW','moment','sequelize','exports','ENUM','account','agent','queue','DATE'];(function(_0x6da6dd,_0x417da3){var _0x164320=function(_0x2b87d1){while(--_0x2b87d1){_0x6da6dd['push'](_0x6da6dd['shift']());}};_0x164320(++_0x417da3);}(_0xe706,0xa3));var _0x6e70=function(_0x5b4f98,_0x4e2213){_0x5b4f98=_0x5b4f98-0x0;var _0x1f5022=_0xe706[_0x5b4f98];return _0x1f5022;};'use strict';var moment=require(_0x6e70('0x0'));var Sequelize=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x6e70('0x3')](_0x6e70('0x4'),_0x6e70('0x5'),_0x6e70('0x6')),'allowNull':![],'defaultValue':_0x6e70('0x6')},'transferredAt':{'type':Sequelize[_0x6e70('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x6e70('0x8')]}};
\ No newline at end of file
+var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x543084,_0x4337f5){var _0x306a57=function(_0x2769ed){while(--_0x2769ed){_0x543084['push'](_0x543084['shift']());}};_0x306a57(++_0x4337f5);}(_0xb43b,0x1b2));var _0xbb43=function(_0x227d0e,_0x58221a){_0x227d0e=_0x227d0e-0x0;var _0x4e9774=_0xb43b[_0x227d0e];return _0x4e9774;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
index dc95ebe..7b159ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90aa=['intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','options','include','findAll','catch','show','rawAttributes','includeAll','find','create','update','body','params','describe','eml-format','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','limit','undefined','count','set','apply','reject','then','destroy','error','stack','name','send','map','MailTransferReport','fieldName','model','query','keys','filters'];(function(_0x1486e5,_0x39684f){var _0x29d89b=function(_0x4a0a80){while(--_0x4a0a80){_0x1486e5['push'](_0x1486e5['shift']());}};_0x29d89b(++_0x39684f);}(_0x90aa,0x1c4));var _0xa90a=function(_0x4742cf,_0x334f00){_0x4742cf=_0x4742cf-0x0;var _0x98f73f=_0x90aa[_0x4742cf];return _0x98f73f;};'use strict';var emlformat=require(_0xa90a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa90a('0x1'));var rp=require(_0xa90a('0x2'));var moment=require('moment');var BPromise=require(_0xa90a('0x3'));var Mustache=require(_0xa90a('0x4'));var util=require('util');var path=require(_0xa90a('0x5'));var sox=require(_0xa90a('0x6'));var csv=require(_0xa90a('0x7'));var ejs=require(_0xa90a('0x8'));var fs=require('fs');var fs_extra=require(_0xa90a('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa90a('0xa'));var toCsv=require(_0xa90a('0x7'));var querystring=require(_0xa90a('0xb'));var Papa=require('papaparse');var Redis=require(_0xa90a('0xc'));var authService=require(_0xa90a('0xd'));var qs=require(_0xa90a('0xe'));var as=require(_0xa90a('0xf'));var hardwareService=require(_0xa90a('0x10'));var logger=require(_0xa90a('0x11'))(_0xa90a('0x12'));var utils=require(_0xa90a('0x13'));var config=require(_0xa90a('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xa90a('0x15'))['db'];function respondWithStatusCode(_0x2f0083,_0x120f39){_0x120f39=_0x120f39||0xcc;return function(_0x431769){if(_0x431769){return _0x2f0083['sendStatus'](_0x120f39);}return _0x2f0083[_0xa90a('0x16')](_0x120f39)[_0xa90a('0x17')]();};}function respondWithResult(_0x4d554f,_0x24c15b){_0x24c15b=_0x24c15b||0xc8;return function(_0x5f29ca){if(_0x5f29ca){return _0x4d554f[_0xa90a('0x16')](_0x24c15b)[_0xa90a('0x18')](_0x5f29ca);}};}function respondWithFilteredResult(_0x4c42ed,_0x221f18){return function(_0x33e6dd){if(_0x33e6dd){var _0x3cd576=typeof _0x221f18[_0xa90a('0x19')]==='undefined'&&typeof _0x221f18[_0xa90a('0x1a')]===_0xa90a('0x1b');var _0xd18514=_0x33e6dd[_0xa90a('0x1c')];var _0x53c216=_0x3cd576?0x0:_0x221f18[_0xa90a('0x19')];var _0x58fa9c=_0x3cd576?_0x33e6dd[_0xa90a('0x1c')]:_0x221f18[_0xa90a('0x19')]+_0x221f18[_0xa90a('0x1a')];var _0x29f719;if(_0x58fa9c>=_0xd18514){_0x58fa9c=_0xd18514;_0x29f719=0xc8;}else{_0x29f719=0xce;}_0x4c42ed[_0xa90a('0x16')](_0x29f719);return _0x4c42ed[_0xa90a('0x1d')]('Content-Range',_0x53c216+'-'+_0x58fa9c+'/'+_0xd18514)[_0xa90a('0x18')](_0x33e6dd);}return null;};}function patchUpdates(_0x128bc5){return function(_0x3740db){try{jsonpatch[_0xa90a('0x1e')](_0x3740db,_0x128bc5,!![]);}catch(_0x1d42b5){return BPromise[_0xa90a('0x1f')](_0x1d42b5);}return _0x3740db['save']();};}function saveUpdates(_0x1b02d6,_0x203657){return function(_0x460c67){if(_0x460c67){return _0x460c67['update'](_0x1b02d6)[_0xa90a('0x20')](function(_0x468d40){return _0x468d40;});}return null;};}function removeEntity(_0x16b63a,_0x3c8686){return function(_0x34262f){if(_0x34262f){return _0x34262f[_0xa90a('0x21')]()['then'](function(){_0x16b63a[_0xa90a('0x16')](0xcc)[_0xa90a('0x17')]();});}};}function handleEntityNotFound(_0x24eb32,_0x41a162){return function(_0x25668b){if(!_0x25668b){_0x24eb32['sendStatus'](0x194);}return _0x25668b;};}function handleError(_0x12371f,_0x2a7b9c){_0x2a7b9c=_0x2a7b9c||0x1f4;return function(_0x3e6d81){logger[_0xa90a('0x22')](_0x3e6d81[_0xa90a('0x23')]);if(_0x3e6d81[_0xa90a('0x24')]){delete _0x3e6d81[_0xa90a('0x24')];}_0x12371f[_0xa90a('0x16')](_0x2a7b9c)[_0xa90a('0x25')](_0x3e6d81);};}exports['index']=function(_0x1546db,_0x3c72e1){var _0x5de419={},_0x26c9ce={},_0x2a60e2={'count':0x0,'rows':[]};var _0x49d03b=_[_0xa90a('0x26')](db[_0xa90a('0x27')]['rawAttributes'],function(_0x1563d0){return{'name':_0x1563d0[_0xa90a('0x28')],'type':_0x1563d0['type']['key']};});_0x26c9ce[_0xa90a('0x29')]=_[_0xa90a('0x26')](_0x49d03b,'name');_0x26c9ce[_0xa90a('0x2a')]=_[_0xa90a('0x2b')](_0x1546db[_0xa90a('0x2a')]);_0x26c9ce[_0xa90a('0x2c')]=_[_0xa90a('0x2d')](_0x26c9ce[_0xa90a('0x29')],_0x26c9ce[_0xa90a('0x2a')]);_0x5de419[_0xa90a('0x2e')]=_['intersection'](_0x26c9ce['model'],qs['fields'](_0x1546db['query'][_0xa90a('0x2f')]));_0x5de419[_0xa90a('0x2e')]=_0x5de419[_0xa90a('0x2e')][_0xa90a('0x30')]?_0x5de419[_0xa90a('0x2e')]:_0x26c9ce[_0xa90a('0x29')];if(!_0x1546db[_0xa90a('0x2a')][_0xa90a('0x31')](_0xa90a('0x32'))){_0x5de419[_0xa90a('0x1a')]=qs[_0xa90a('0x1a')](_0x1546db[_0xa90a('0x2a')][_0xa90a('0x1a')]);_0x5de419[_0xa90a('0x19')]=qs[_0xa90a('0x19')](_0x1546db['query']['offset']);}_0x5de419[_0xa90a('0x33')]=qs[_0xa90a('0x34')](_0x1546db[_0xa90a('0x2a')][_0xa90a('0x34')]);_0x5de419[_0xa90a('0x35')]=qs[_0xa90a('0x2c')](_[_0xa90a('0x36')](_0x1546db[_0xa90a('0x2a')],_0x26c9ce[_0xa90a('0x2c')]),_0x49d03b);if(_0x1546db[_0xa90a('0x2a')]['filter']){_0x5de419[_0xa90a('0x35')]=_[_0xa90a('0x37')](_0x5de419['where'],{'$or':_[_0xa90a('0x26')](_0x49d03b,function(_0x5c05bd){if(_0x5c05bd[_0xa90a('0x38')]!==_0xa90a('0x39')){var _0x205b37={};_0x205b37[_0x5c05bd[_0xa90a('0x24')]]={'$like':'%'+_0x1546db[_0xa90a('0x2a')]['filter']+'%'};return _0x205b37;}})});}_0x5de419=_['merge']({},_0x5de419,_0x1546db[_0xa90a('0x3a')]);var _0x1b5dd4={'where':_0x5de419[_0xa90a('0x35')]};return db[_0xa90a('0x27')]['count'](_0x1b5dd4)[_0xa90a('0x20')](function(_0x29c1c4){_0x2a60e2[_0xa90a('0x1c')]=_0x29c1c4;if(_0x1546db[_0xa90a('0x2a')]['includeAll']){_0x5de419[_0xa90a('0x3b')]=[{'all':!![]}];}return db[_0xa90a('0x27')][_0xa90a('0x3c')](_0x5de419);})[_0xa90a('0x20')](function(_0x5726ab){_0x2a60e2['rows']=_0x5726ab;return _0x2a60e2;})[_0xa90a('0x20')](respondWithFilteredResult(_0x3c72e1,_0x5de419))[_0xa90a('0x3d')](handleError(_0x3c72e1,null));};exports[_0xa90a('0x3e')]=function(_0x27df2d,_0x2044bb){var _0x8dec5b={'raw':!![],'where':{'id':_0x27df2d['params']['id']}},_0x4254ed={};_0x4254ed[_0xa90a('0x29')]=_[_0xa90a('0x2b')](db[_0xa90a('0x27')][_0xa90a('0x3f')]);_0x4254ed[_0xa90a('0x2a')]=_[_0xa90a('0x2b')](_0x27df2d[_0xa90a('0x2a')]);_0x4254ed[_0xa90a('0x2c')]=_[_0xa90a('0x2d')](_0x4254ed[_0xa90a('0x29')],_0x4254ed[_0xa90a('0x2a')]);_0x8dec5b['attributes']=_[_0xa90a('0x2d')](_0x4254ed[_0xa90a('0x29')],qs[_0xa90a('0x2f')](_0x27df2d[_0xa90a('0x2a')][_0xa90a('0x2f')]));_0x8dec5b['attributes']=_0x8dec5b[_0xa90a('0x2e')]['length']?_0x8dec5b[_0xa90a('0x2e')]:_0x4254ed['model'];if(_0x27df2d['query'][_0xa90a('0x40')]){_0x8dec5b['include']=[{'all':!![]}];}_0x8dec5b=_[_0xa90a('0x37')]({},_0x8dec5b,_0x27df2d[_0xa90a('0x3a')]);return db[_0xa90a('0x27')][_0xa90a('0x41')](_0x8dec5b)[_0xa90a('0x20')](handleEntityNotFound(_0x2044bb,null))[_0xa90a('0x20')](respondWithResult(_0x2044bb,null))[_0xa90a('0x3d')](handleError(_0x2044bb,null));};exports['create']=function(_0x4f032e,_0x56fc3f){return db['MailTransferReport'][_0xa90a('0x42')](_0x4f032e['body'],{})['then'](respondWithResult(_0x56fc3f,0xc9))[_0xa90a('0x3d')](handleError(_0x56fc3f,null));};exports[_0xa90a('0x43')]=function(_0x428f0c,_0x13bcbc){if(_0x428f0c['body']['id']){delete _0x428f0c[_0xa90a('0x44')]['id'];}return db[_0xa90a('0x27')][_0xa90a('0x41')]({'where':{'id':_0x428f0c[_0xa90a('0x45')]['id']}})['then'](handleEntityNotFound(_0x13bcbc,null))['then'](saveUpdates(_0x428f0c['body'],null))[_0xa90a('0x20')](respondWithResult(_0x13bcbc,null))['catch'](handleError(_0x13bcbc,null));};exports['destroy']=function(_0x165e01,_0xf2b191){return db['MailTransferReport'][_0xa90a('0x41')]({'where':{'id':_0x165e01[_0xa90a('0x45')]['id']}})[_0xa90a('0x20')](handleEntityNotFound(_0xf2b191,null))['then'](removeEntity(_0xf2b191,null))['catch'](handleError(_0xf2b191,null));};exports[_0xa90a('0x46')]=function(_0x48a3ec,_0x1c9bf0){return db[_0xa90a('0x27')][_0xa90a('0x46')]()[_0xa90a('0x20')](respondWithResult(_0x1c9bf0,null))[_0xa90a('0x3d')](handleError(_0x1c9bf0,null));};
\ No newline at end of file
+var _0x0d67=['hasOwnProperty','order','sort','where','pick','map','VIRTUAL','filter','options','MailTransferReport','includeAll','findAll','rows','catch','params','keys','include','merge','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length'];(function(_0x33c8c9,_0x5eacd3){var _0x1663d6=function(_0xef8d05){while(--_0xef8d05){_0x33c8c9['push'](_0x33c8c9['shift']());}};_0x1663d6(++_0x5eacd3);}(_0x0d67,0x1de));var _0x70d6=function(_0x847dc2,_0x29b434){_0x847dc2=_0x847dc2-0x0;var _0xbb8033=_0x0d67[_0x847dc2];return _0xbb8033;};'use strict';var emlformat=require(_0x70d6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x70d6('0x1'));var jsonpatch=require(_0x70d6('0x2'));var rp=require(_0x70d6('0x3'));var moment=require(_0x70d6('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x70d6('0x5'));var util=require('util');var path=require('path');var sox=require(_0x70d6('0x6'));var csv=require(_0x70d6('0x7'));var ejs=require(_0x70d6('0x8'));var fs=require('fs');var fs_extra=require(_0x70d6('0x9'));var _=require(_0x70d6('0xa'));var squel=require('squel');var crypto=require(_0x70d6('0xb'));var jsforce=require(_0x70d6('0xc'));var deskjs=require(_0x70d6('0xd'));var toCsv=require(_0x70d6('0x7'));var querystring=require(_0x70d6('0xe'));var Papa=require(_0x70d6('0xf'));var Redis=require(_0x70d6('0x10'));var authService=require(_0x70d6('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x70d6('0x12'));var hardwareService=require(_0x70d6('0x13'));var logger=require(_0x70d6('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x70d6('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x70d6('0x16'))['db'];function respondWithStatusCode(_0x4e9c06,_0x315e5c){_0x315e5c=_0x315e5c||0xcc;return function(_0x107911){if(_0x107911){return _0x4e9c06[_0x70d6('0x17')](_0x315e5c);}return _0x4e9c06[_0x70d6('0x18')](_0x315e5c)[_0x70d6('0x19')]();};}function respondWithResult(_0x588509,_0x5dca20){_0x5dca20=_0x5dca20||0xc8;return function(_0x4b72aa){if(_0x4b72aa){return _0x588509['status'](_0x5dca20)[_0x70d6('0x1a')](_0x4b72aa);}};}function respondWithFilteredResult(_0x334c69,_0x75a8a0){return function(_0x27ca0a){if(_0x27ca0a){var _0x399103=typeof _0x75a8a0[_0x70d6('0x1b')]===_0x70d6('0x1c')&&typeof _0x75a8a0[_0x70d6('0x1d')]===_0x70d6('0x1c');var _0x5ee72d=_0x27ca0a[_0x70d6('0x1e')];var _0x45768d=_0x399103?0x0:_0x75a8a0[_0x70d6('0x1b')];var _0x2f26eb=_0x399103?_0x27ca0a[_0x70d6('0x1e')]:_0x75a8a0['offset']+_0x75a8a0[_0x70d6('0x1d')];var _0x5dca03;if(_0x2f26eb>=_0x5ee72d){_0x2f26eb=_0x5ee72d;_0x5dca03=0xc8;}else{_0x5dca03=0xce;}_0x334c69['status'](_0x5dca03);return _0x334c69[_0x70d6('0x1f')](_0x70d6('0x20'),_0x45768d+'-'+_0x2f26eb+'/'+_0x5ee72d)[_0x70d6('0x1a')](_0x27ca0a);}return null;};}function patchUpdates(_0x587f98){return function(_0x336842){try{jsonpatch[_0x70d6('0x21')](_0x336842,_0x587f98,!![]);}catch(_0x2c4b73){return BPromise[_0x70d6('0x22')](_0x2c4b73);}return _0x336842[_0x70d6('0x23')]();};}function saveUpdates(_0x471706,_0x57ec96){return function(_0x524bd1){if(_0x524bd1){return _0x524bd1[_0x70d6('0x24')](_0x471706)[_0x70d6('0x25')](function(_0x585601){return _0x585601;});}return null;};}function removeEntity(_0x45f610,_0x2d2f8a){return function(_0x2611b9){if(_0x2611b9){return _0x2611b9[_0x70d6('0x26')]()[_0x70d6('0x25')](function(){_0x45f610[_0x70d6('0x18')](0xcc)[_0x70d6('0x19')]();});}};}function handleEntityNotFound(_0x374d97,_0x41e422){return function(_0x2e9eca){if(!_0x2e9eca){_0x374d97[_0x70d6('0x17')](0x194);}return _0x2e9eca;};}function handleError(_0x5565d0,_0x795a33){_0x795a33=_0x795a33||0x1f4;return function(_0x2d6678){logger['error'](_0x2d6678[_0x70d6('0x27')]);if(_0x2d6678['name']){delete _0x2d6678[_0x70d6('0x28')];}_0x5565d0[_0x70d6('0x18')](_0x795a33)[_0x70d6('0x29')](_0x2d6678);};}exports[_0x70d6('0x2a')]=function(_0xdc66e7,_0x475534){var _0x4f35be={},_0x31d3a5={},_0x5a34cc={'count':0x0,'rows':[]};var _0x20361a=_['map'](db['MailTransferReport'][_0x70d6('0x2b')],function(_0xeff975){return{'name':_0xeff975[_0x70d6('0x2c')],'type':_0xeff975[_0x70d6('0x2d')][_0x70d6('0x2e')]};});_0x31d3a5[_0x70d6('0x2f')]=_['map'](_0x20361a,_0x70d6('0x28'));_0x31d3a5[_0x70d6('0x30')]=_['keys'](_0xdc66e7[_0x70d6('0x30')]);_0x31d3a5[_0x70d6('0x31')]=_[_0x70d6('0x32')](_0x31d3a5[_0x70d6('0x2f')],_0x31d3a5[_0x70d6('0x30')]);_0x4f35be[_0x70d6('0x33')]=_['intersection'](_0x31d3a5[_0x70d6('0x2f')],qs[_0x70d6('0x34')](_0xdc66e7[_0x70d6('0x30')][_0x70d6('0x34')]));_0x4f35be[_0x70d6('0x33')]=_0x4f35be[_0x70d6('0x33')][_0x70d6('0x35')]?_0x4f35be[_0x70d6('0x33')]:_0x31d3a5[_0x70d6('0x2f')];if(!_0xdc66e7['query'][_0x70d6('0x36')]('nolimit')){_0x4f35be[_0x70d6('0x1d')]=qs[_0x70d6('0x1d')](_0xdc66e7['query'][_0x70d6('0x1d')]);_0x4f35be[_0x70d6('0x1b')]=qs[_0x70d6('0x1b')](_0xdc66e7[_0x70d6('0x30')][_0x70d6('0x1b')]);}_0x4f35be[_0x70d6('0x37')]=qs['sort'](_0xdc66e7[_0x70d6('0x30')][_0x70d6('0x38')]);_0x4f35be[_0x70d6('0x39')]=qs[_0x70d6('0x31')](_[_0x70d6('0x3a')](_0xdc66e7[_0x70d6('0x30')],_0x31d3a5[_0x70d6('0x31')]),_0x20361a);if(_0xdc66e7[_0x70d6('0x30')]['filter']){_0x4f35be['where']=_['merge'](_0x4f35be[_0x70d6('0x39')],{'$or':_[_0x70d6('0x3b')](_0x20361a,function(_0x13fcee){if(_0x13fcee[_0x70d6('0x2d')]!==_0x70d6('0x3c')){var _0x1ca132={};_0x1ca132[_0x13fcee[_0x70d6('0x28')]]={'$like':'%'+_0xdc66e7[_0x70d6('0x30')][_0x70d6('0x3d')]+'%'};return _0x1ca132;}})});}_0x4f35be=_['merge']({},_0x4f35be,_0xdc66e7[_0x70d6('0x3e')]);var _0x2e08df={'where':_0x4f35be[_0x70d6('0x39')]};return db[_0x70d6('0x3f')][_0x70d6('0x1e')](_0x2e08df)['then'](function(_0x43c1be){_0x5a34cc[_0x70d6('0x1e')]=_0x43c1be;if(_0xdc66e7[_0x70d6('0x30')][_0x70d6('0x40')]){_0x4f35be['include']=[{'all':!![]}];}return db['MailTransferReport'][_0x70d6('0x41')](_0x4f35be);})[_0x70d6('0x25')](function(_0x51644f){_0x5a34cc[_0x70d6('0x42')]=_0x51644f;return _0x5a34cc;})[_0x70d6('0x25')](respondWithFilteredResult(_0x475534,_0x4f35be))[_0x70d6('0x43')](handleError(_0x475534,null));};exports['show']=function(_0xc13969,_0x21b4eb){var _0x353cb2={'raw':!![],'where':{'id':_0xc13969[_0x70d6('0x44')]['id']}},_0x44f008={};_0x44f008['model']=_[_0x70d6('0x45')](db[_0x70d6('0x3f')][_0x70d6('0x2b')]);_0x44f008['query']=_[_0x70d6('0x45')](_0xc13969[_0x70d6('0x30')]);_0x44f008[_0x70d6('0x31')]=_[_0x70d6('0x32')](_0x44f008['model'],_0x44f008[_0x70d6('0x30')]);_0x353cb2[_0x70d6('0x33')]=_[_0x70d6('0x32')](_0x44f008[_0x70d6('0x2f')],qs[_0x70d6('0x34')](_0xc13969[_0x70d6('0x30')][_0x70d6('0x34')]));_0x353cb2[_0x70d6('0x33')]=_0x353cb2[_0x70d6('0x33')][_0x70d6('0x35')]?_0x353cb2[_0x70d6('0x33')]:_0x44f008[_0x70d6('0x2f')];if(_0xc13969[_0x70d6('0x30')][_0x70d6('0x40')]){_0x353cb2[_0x70d6('0x46')]=[{'all':!![]}];}_0x353cb2=_[_0x70d6('0x47')]({},_0x353cb2,_0xc13969[_0x70d6('0x3e')]);return db[_0x70d6('0x3f')][_0x70d6('0x48')](_0x353cb2)[_0x70d6('0x25')](handleEntityNotFound(_0x21b4eb,null))[_0x70d6('0x25')](respondWithResult(_0x21b4eb,null))['catch'](handleError(_0x21b4eb,null));};exports[_0x70d6('0x49')]=function(_0x1f17ac,_0x2082e8){return db[_0x70d6('0x3f')][_0x70d6('0x49')](_0x1f17ac[_0x70d6('0x4a')],{})[_0x70d6('0x25')](respondWithResult(_0x2082e8,0xc9))[_0x70d6('0x43')](handleError(_0x2082e8,null));};exports['update']=function(_0x36bbd5,_0x27589b){if(_0x36bbd5[_0x70d6('0x4a')]['id']){delete _0x36bbd5['body']['id'];}return db[_0x70d6('0x3f')][_0x70d6('0x48')]({'where':{'id':_0x36bbd5[_0x70d6('0x44')]['id']}})[_0x70d6('0x25')](handleEntityNotFound(_0x27589b,null))['then'](saveUpdates(_0x36bbd5[_0x70d6('0x4a')],null))[_0x70d6('0x25')](respondWithResult(_0x27589b,null))['catch'](handleError(_0x27589b,null));};exports[_0x70d6('0x26')]=function(_0x351415,_0x3141e0){return db['MailTransferReport'][_0x70d6('0x48')]({'where':{'id':_0x351415[_0x70d6('0x44')]['id']}})[_0x70d6('0x25')](handleEntityNotFound(_0x3141e0,null))['then'](removeEntity(_0x3141e0,null))[_0x70d6('0x43')](handleError(_0x3141e0,null));};exports[_0x70d6('0x4b')]=function(_0x2f3813,_0x3b2fe6){return db[_0x70d6('0x3f')][_0x70d6('0x4b')]()[_0x70d6('0x25')](respondWithResult(_0x3b2fe6,null))[_0x70d6('0x43')](handleError(_0x3b2fe6,null));};
\ No newline at end of file
index 28e3ab1..7f099f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72b1=['path','rimraf','./mailTransferReport.attributes','exports','MailTransferReport','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0x72b1,0x16e));var _0x172b=function(_0x7ecfd9,_0xaf4a06){_0x7ecfd9=_0x7ecfd9-0x0;var _0x159c16=_0x72b1[_0x7ecfd9];return _0x159c16;};'use strict';var _=require(_0x172b('0x0'));var util=require('util');var logger=require(_0x172b('0x1'))(_0x172b('0x2'));var moment=require(_0x172b('0x3'));var BPromise=require(_0x172b('0x4'));var rp=require(_0x172b('0x5'));var fs=require('fs');var path=require(_0x172b('0x6'));var rimraf=require(_0x172b('0x7'));var config=require('../../config/environment');var attributes=require(_0x172b('0x8'));module[_0x172b('0x9')]=function(_0x475fd6,_0x222624){return _0x475fd6['define'](_0x172b('0xa'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':_0x172b('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x320e=['request-promise','path','../../config/environment','./mailTransferReport.attributes','exports','define','report_mail_transfer','uniqueid','lodash','moment','bluebird'];(function(_0x5ad807,_0x19c02d){var _0x1e52bc=function(_0x17b054){while(--_0x17b054){_0x5ad807['push'](_0x5ad807['shift']());}};_0x1e52bc(++_0x19c02d);}(_0x320e,0x8c));var _0xe320=function(_0x2978e1,_0x26b3f5){_0x2978e1=_0x2978e1-0x0;var _0xca0ea8=_0x320e[_0x2978e1];return _0xca0ea8;};'use strict';var _=require(_0xe320('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xe320('0x1'));var BPromise=require(_0xe320('0x2'));var rp=require(_0xe320('0x3'));var fs=require('fs');var path=require(_0xe320('0x4'));var rimraf=require('rimraf');var config=require(_0xe320('0x5'));var attributes=require(_0xe320('0x6'));module[_0xe320('0x7')]=function(_0x3f4b14,_0x436712){return _0x3f4b14[_0xe320('0x8')]('MailTransferReport',attributes,{'tableName':_0xe320('0x9'),'paranoid':![],'indexes':[{'name':_0xe320('0xa'),'fields':[_0xe320('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 07c3017..4042314 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0b3=['then','request\x20sent','stringify','error','code','MailTransferReport,\x20%s,\x20%s','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http'];(function(_0x1a725f,_0x58ef5e){var _0x3f2816=function(_0x3907d9){while(--_0x3907d9){_0x1a725f['push'](_0x1a725f['shift']());}};_0x3f2816(++_0x58ef5e);}(_0xb0b3,0x7b));var _0x3b0b=function(_0x5f4ca0,_0x48b9f0){_0x5f4ca0=_0x5f4ca0-0x0;var _0x25ced4=_0xb0b3[_0x5f4ca0];return _0x25ced4;};'use strict';var _=require('lodash');var util=require(_0x3b0b('0x0'));var moment=require('moment');var BPromise=require(_0x3b0b('0x1'));var rs=require(_0x3b0b('0x2'));var fs=require('fs');var Redis=require(_0x3b0b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3b0b('0x4'));var logger=require(_0x3b0b('0x5'))(_0x3b0b('0x6'));var config=require('../../config/environment');var jayson=require(_0x3b0b('0x7'));var client=jayson[_0x3b0b('0x8')][_0x3b0b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5e96a2,_0x19e3c1,_0x46e722){return new BPromise(function(_0x3eafc7,_0x1a621e){return client['request'](_0x5e96a2,_0x46e722)[_0x3b0b('0xa')](function(_0x50efd2){logger['info']('MailTransferReport,\x20%s,\x20%s',_0x19e3c1,_0x3b0b('0xb'));logger['debug']('MailTransferReport,\x20%s,\x20%s,\x20%s',_0x19e3c1,_0x3b0b('0xb'),JSON[_0x3b0b('0xc')](_0x50efd2));if(_0x50efd2[_0x3b0b('0xd')]){if(_0x50efd2[_0x3b0b('0xd')][_0x3b0b('0xe')]===0x1f4){logger['error'](_0x3b0b('0xf'),_0x19e3c1,_0x50efd2[_0x3b0b('0xd')][_0x3b0b('0x10')]);return _0x1a621e(_0x50efd2['error'][_0x3b0b('0x10')]);}logger[_0x3b0b('0xd')]('MailTransferReport,\x20%s,\x20%s',_0x19e3c1,_0x50efd2[_0x3b0b('0xd')][_0x3b0b('0x10')]);return _0x3eafc7(_0x50efd2[_0x3b0b('0xd')]['message']);}else{logger['info']('MailTransferReport,\x20%s,\x20%s',_0x19e3c1,_0x3b0b('0xb'));_0x3eafc7(_0x50efd2[_0x3b0b('0x11')][_0x3b0b('0x10')]);}})[_0x3b0b('0x12')](function(_0x1cfe27){logger[_0x3b0b('0xd')](_0x3b0b('0xf'),_0x19e3c1,_0x1cfe27);_0x1a621e(_0x1cfe27);});});}
\ No newline at end of file
+var _0xd241=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x27c91d,_0x37c914){var _0xb9f8b1=function(_0x41232b){while(--_0x41232b){_0x27c91d['push'](_0x27c91d['shift']());}};_0xb9f8b1(++_0x37c914);}(_0xd241,0xac));var _0x1d24=function(_0x75205f,_0x65b7f3){_0x75205f=_0x75205f-0x0;var _0x492443=_0xd241[_0x75205f];return _0x492443;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x1d24('0x0'));var rs=require(_0x1d24('0x1'));var fs=require('fs');var Redis=require(_0x1d24('0x2'));var db=require(_0x1d24('0x3'))['db'];var utils=require(_0x1d24('0x4'));var logger=require(_0x1d24('0x5'))(_0x1d24('0x6'));var config=require(_0x1d24('0x7'));var jayson=require(_0x1d24('0x8'));var client=jayson[_0x1d24('0x9')][_0x1d24('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1e4bc1,_0x2784cb,_0x40b69e){return new BPromise(function(_0x389b69,_0x457df9){return client[_0x1d24('0xb')](_0x1e4bc1,_0x40b69e)['then'](function(_0x288911){logger[_0x1d24('0xc')](_0x1d24('0xd'),_0x2784cb,_0x1d24('0xe'));logger[_0x1d24('0xf')](_0x1d24('0x10'),_0x2784cb,_0x1d24('0xe'),JSON[_0x1d24('0x11')](_0x288911));if(_0x288911['error']){if(_0x288911[_0x1d24('0x12')][_0x1d24('0x13')]===0x1f4){logger[_0x1d24('0x12')]('MailTransferReport,\x20%s,\x20%s',_0x2784cb,_0x288911[_0x1d24('0x12')][_0x1d24('0x14')]);return _0x457df9(_0x288911[_0x1d24('0x12')][_0x1d24('0x14')]);}logger[_0x1d24('0x12')]('MailTransferReport,\x20%s,\x20%s',_0x2784cb,_0x288911[_0x1d24('0x12')]['message']);return _0x389b69(_0x288911[_0x1d24('0x12')][_0x1d24('0x14')]);}else{logger[_0x1d24('0xc')](_0x1d24('0xd'),_0x2784cb,_0x1d24('0xe'));_0x389b69(_0x288911['result'][_0x1d24('0x14')]);}})[_0x1d24('0x15')](function(_0x578eb7){logger['error'](_0x1d24('0xd'),_0x2784cb,_0x578eb7);_0x457df9(_0x578eb7);});});}
\ No newline at end of file
index 12f1bd9..8a17350 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x063d=['../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service'];(function(_0x18c47f,_0x56fef2){var _0x3671b1=function(_0x3c0644){while(--_0x3c0644){_0x18c47f['push'](_0x18c47f['shift']());}};_0x3671b1(++_0x56fef2);}(_0x063d,0xd5));var _0xd063=function(_0x5d49c8,_0x48fb7a){_0x5d49c8=_0x5d49c8-0x0;var _0x5d3e0a=_0x063d[_0x5d49c8];return _0x5d3e0a;};'use strict';var multer=require(_0xd063('0x0'));var util=require(_0xd063('0x1'));var path=require(_0xd063('0x2'));var timeout=require(_0xd063('0x3'));var express=require(_0xd063('0x4'));var router=express[_0xd063('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xd063('0x6'));var config=require(_0xd063('0x7'));var controller=require(_0xd063('0x8'));router[_0xd063('0x9')]('/',auth[_0xd063('0xa')](),controller[_0xd063('0xb')]);router[_0xd063('0x9')](_0xd063('0xc'),auth[_0xd063('0xa')](),controller[_0xd063('0xd')]);router[_0xd063('0x9')](_0xd063('0xe'),auth[_0xd063('0xa')](),controller[_0xd063('0xf')]);router[_0xd063('0x10')]('/',auth[_0xd063('0xa')](),controller['create']);router[_0xd063('0x11')](_0xd063('0xe'),auth[_0xd063('0xa')](),controller[_0xd063('0x12')]);router[_0xd063('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xd063('0x14')]);module[_0xd063('0x15')]=router;
\ No newline at end of file
+var _0xe609=['/:id','create','put','update','delete','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x305bf9,_0x127710){var _0x351307=function(_0x5c0cff){while(--_0x5c0cff){_0x305bf9['push'](_0x305bf9['shift']());}};_0x351307(++_0x127710);}(_0xe609,0x11e));var _0x9e60=function(_0x113dd1,_0x15aaa1){_0x113dd1=_0x113dd1-0x0;var _0x1605e0=_0xe609[_0x113dd1];return _0x1605e0;};'use strict';var multer=require('multer');var util=require(_0x9e60('0x0'));var path=require(_0x9e60('0x1'));var timeout=require(_0x9e60('0x2'));var express=require(_0x9e60('0x3'));var router=express[_0x9e60('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9e60('0x5'));var interaction=require(_0x9e60('0x6'));var config=require(_0x9e60('0x7'));var controller=require(_0x9e60('0x8'));router[_0x9e60('0x9')]('/',auth[_0x9e60('0xa')](),controller[_0x9e60('0xb')]);router[_0x9e60('0x9')](_0x9e60('0xc'),auth['isAuthenticated'](),controller[_0x9e60('0xd')]);router[_0x9e60('0x9')](_0x9e60('0xe'),auth[_0x9e60('0xa')](),controller['show']);router['post']('/',auth[_0x9e60('0xa')](),controller[_0x9e60('0xf')]);router[_0x9e60('0x10')](_0x9e60('0xe'),auth[_0x9e60('0xa')](),controller[_0x9e60('0x11')]);router[_0x9e60('0x12')]('/:id',auth[_0x9e60('0xa')](),controller['destroy']);module[_0x9e60('0x13')]=router;
\ No newline at end of file
index 65c93c7..4150d5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79d8=['seconds','setDataValue','exitAt','duration','talk:[start]','talk:[dial\x20string]','talk:[queue]','sequelize','moment','exports','STRING','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','getDataValue','diff'];(function(_0x379449,_0x3247b1){var _0xd168f7=function(_0x244310){while(--_0x244310){_0x379449['push'](_0x379449['shift']());}};_0xd168f7(++_0x3247b1);}(_0x79d8,0x67));var _0x879d=function(_0x29ce3e,_0x17c35a){_0x29ce3e=_0x29ce3e-0x0;var _0x2fadcc=_0x79d8[_0x29ce3e];return _0x2fadcc;};'use strict';var Sequelize=require(_0x879d('0x0'));var moment=require(_0x879d('0x1'));module[_0x879d('0x2')]={'channel':{'type':Sequelize[_0x879d('0x3')]},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x879d('0x3')]},'type':{'type':Sequelize[_0x879d('0x3')],'defaultValue':'DEFAULT\x20PAUSE','comment':_0x879d('0x4')},'duration':{'type':Sequelize[_0x879d('0x5')]},'enterAt':{'type':Sequelize[_0x879d('0x6')]},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x2d578e){var _0x46ed21=moment(_0x2d578e);var _0x142181=moment(this[_0x879d('0x7')]('enterAt'));var _0x257050=_0x46ed21[_0x879d('0x8')](_0x142181,_0x879d('0x9'));this[_0x879d('0xa')](_0x879d('0xb'),_0x2d578e);this['setDataValue'](_0x879d('0xc'),_0x257050||null);}},'data1':{'type':Sequelize['STRING'],'comment':'talk:[inbound,\x20outbound],\x20pause:[reason]'},'data2':{'type':Sequelize[_0x879d('0x3')],'comment':_0x879d('0xd')},'data3':{'type':Sequelize[_0x879d('0x3')],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0x879d('0x3')],'comment':_0x879d('0xe')},'data5':{'type':Sequelize['STRING'],'comment':_0x879d('0xf')},'role':{'type':Sequelize[_0x879d('0x3')]},'internal':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x879d('0x3')]}};
\ No newline at end of file
+var _0x1bca=['getDataValue','enterAt','diff','seconds','setDataValue','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[queue]','INTEGER','moment','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','DATE'];(function(_0x276468,_0x29685a){var _0x36dc3a=function(_0x291f0a){while(--_0x291f0a){_0x276468['push'](_0x276468['shift']());}};_0x36dc3a(++_0x29685a);}(_0x1bca,0xb6));var _0xa1bc=function(_0x177dc4,_0x50ccda){_0x177dc4=_0x177dc4-0x0;var _0x35e24c=_0x1bca[_0x177dc4];return _0x35e24c;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xa1bc('0x0'));module['exports']={'channel':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xa1bc('0x1')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xa1bc('0x1')],'defaultValue':_0xa1bc('0x2'),'comment':_0xa1bc('0x3')},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0xa1bc('0x4')]},'exitAt':{'type':Sequelize[_0xa1bc('0x4')],'set':function(_0x168b44){var _0x268ced=moment(_0x168b44);var _0x54bffb=moment(this[_0xa1bc('0x5')](_0xa1bc('0x6')));var _0xea5ec8=_0x268ced[_0xa1bc('0x7')](_0x54bffb,_0xa1bc('0x8'));this[_0xa1bc('0x9')](_0xa1bc('0xa'),_0x168b44);this['setDataValue'](_0xa1bc('0xb'),_0xea5ec8||null);}},'data1':{'type':Sequelize[_0xa1bc('0x1')],'comment':_0xa1bc('0xc')},'data2':{'type':Sequelize[_0xa1bc('0x1')],'comment':_0xa1bc('0xd')},'data3':{'type':Sequelize[_0xa1bc('0x1')],'comment':_0xa1bc('0xe')},'data4':{'type':Sequelize[_0xa1bc('0x1')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize['STRING'],'comment':_0xa1bc('0xf')},'role':{'type':Sequelize[_0xa1bc('0x1')]},'internal':{'type':Sequelize[_0xa1bc('0x10')]},'uniqueid':{'type':Sequelize[_0xa1bc('0x1')]}};
\ No newline at end of file
index 3b00547..ff06011 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['show','params','options','find','catch','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','end','json','undefined','limit','offset','count','status','set','Content-Range','apply','save','update','then','destroy','sendStatus','name','send','index','map','MemberReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows'];(function(_0x439bcd,_0x2db4fd){var _0x1afad4=function(_0xac338){while(--_0xac338){_0x439bcd['push'](_0x439bcd['shift']());}};_0x1afad4(++_0x2db4fd);}(_0x3e74,0x175));var _0x43e7=function(_0x3db7f3,_0x4ae466){_0x3db7f3=_0x3db7f3-0x0;var _0x320418=_0x3e74[_0x3db7f3];return _0x320418;};'use strict';var emlformat=require(_0x43e7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x43e7('0x1'));var jsonpatch=require(_0x43e7('0x2'));var rp=require(_0x43e7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x43e7('0x4'));var util=require('util');var path=require(_0x43e7('0x5'));var sox=require(_0x43e7('0x6'));var csv=require(_0x43e7('0x7'));var ejs=require(_0x43e7('0x8'));var fs=require('fs');var fs_extra=require(_0x43e7('0x9'));var _=require('lodash');var squel=require(_0x43e7('0xa'));var crypto=require(_0x43e7('0xb'));var jsforce=require(_0x43e7('0xc'));var deskjs=require(_0x43e7('0xd'));var toCsv=require(_0x43e7('0x7'));var querystring=require('querystring');var Papa=require(_0x43e7('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x43e7('0xf'));var as=require(_0x43e7('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x43e7('0x11'))('api');var utils=require(_0x43e7('0x12'));var config=require(_0x43e7('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x43e7('0x14'))['db'];function respondWithStatusCode(_0xc960ea,_0x2718d3){_0x2718d3=_0x2718d3||0xcc;return function(_0x3bb83f){if(_0x3bb83f){return _0xc960ea['sendStatus'](_0x2718d3);}return _0xc960ea['status'](_0x2718d3)[_0x43e7('0x15')]();};}function respondWithResult(_0x21fdd3,_0x44b0bd){_0x44b0bd=_0x44b0bd||0xc8;return function(_0x51b974){if(_0x51b974){return _0x21fdd3['status'](_0x44b0bd)[_0x43e7('0x16')](_0x51b974);}};}function respondWithFilteredResult(_0x14c146,_0x203378){return function(_0x328445){if(_0x328445){var _0x4de324=typeof _0x203378['offset']===_0x43e7('0x17')&&typeof _0x203378[_0x43e7('0x18')]===_0x43e7('0x17');var _0x5d346f=_0x328445['count'];var _0x446986=_0x4de324?0x0:_0x203378[_0x43e7('0x19')];var _0x9037d3=_0x4de324?_0x328445[_0x43e7('0x1a')]:_0x203378[_0x43e7('0x19')]+_0x203378[_0x43e7('0x18')];var _0x619236;if(_0x9037d3>=_0x5d346f){_0x9037d3=_0x5d346f;_0x619236=0xc8;}else{_0x619236=0xce;}_0x14c146[_0x43e7('0x1b')](_0x619236);return _0x14c146[_0x43e7('0x1c')](_0x43e7('0x1d'),_0x446986+'-'+_0x9037d3+'/'+_0x5d346f)[_0x43e7('0x16')](_0x328445);}return null;};}function patchUpdates(_0x177ee1){return function(_0x4b5d64){try{jsonpatch[_0x43e7('0x1e')](_0x4b5d64,_0x177ee1,!![]);}catch(_0x3c6625){return BPromise['reject'](_0x3c6625);}return _0x4b5d64[_0x43e7('0x1f')]();};}function saveUpdates(_0x3e281e,_0x3945bb){return function(_0x28aacc){if(_0x28aacc){return _0x28aacc[_0x43e7('0x20')](_0x3e281e)[_0x43e7('0x21')](function(_0x54a9e7){return _0x54a9e7;});}return null;};}function removeEntity(_0x454359,_0x4eea52){return function(_0x4c9df3){if(_0x4c9df3){return _0x4c9df3[_0x43e7('0x22')]()[_0x43e7('0x21')](function(){_0x454359['status'](0xcc)[_0x43e7('0x15')]();});}};}function handleEntityNotFound(_0x4ca5cf,_0x326dab){return function(_0x5c5e67){if(!_0x5c5e67){_0x4ca5cf[_0x43e7('0x23')](0x194);}return _0x5c5e67;};}function handleError(_0x1b5f50,_0x20888b){_0x20888b=_0x20888b||0x1f4;return function(_0x405f85){logger['error'](_0x405f85['stack']);if(_0x405f85[_0x43e7('0x24')]){delete _0x405f85['name'];}_0x1b5f50[_0x43e7('0x1b')](_0x20888b)[_0x43e7('0x25')](_0x405f85);};}exports[_0x43e7('0x26')]=function(_0xb1fc63,_0x5087d7){var _0x33a1a5={},_0x4690a6={},_0x45b675={'count':0x0,'rows':[]};var _0x50f9f5=_[_0x43e7('0x27')](db[_0x43e7('0x28')][_0x43e7('0x29')],function(_0x31b2a6){return{'name':_0x31b2a6[_0x43e7('0x2a')],'type':_0x31b2a6[_0x43e7('0x2b')][_0x43e7('0x2c')]};});_0x4690a6[_0x43e7('0x2d')]=_[_0x43e7('0x27')](_0x50f9f5,_0x43e7('0x24'));_0x4690a6['query']=_[_0x43e7('0x2e')](_0xb1fc63[_0x43e7('0x2f')]);_0x4690a6[_0x43e7('0x30')]=_[_0x43e7('0x31')](_0x4690a6[_0x43e7('0x2d')],_0x4690a6['query']);_0x33a1a5[_0x43e7('0x32')]=_[_0x43e7('0x31')](_0x4690a6[_0x43e7('0x2d')],qs[_0x43e7('0x33')](_0xb1fc63['query']['fields']));_0x33a1a5['attributes']=_0x33a1a5[_0x43e7('0x32')][_0x43e7('0x34')]?_0x33a1a5[_0x43e7('0x32')]:_0x4690a6[_0x43e7('0x2d')];if(!_0xb1fc63[_0x43e7('0x2f')][_0x43e7('0x35')]('nolimit')){_0x33a1a5['limit']=qs['limit'](_0xb1fc63['query']['limit']);_0x33a1a5['offset']=qs['offset'](_0xb1fc63[_0x43e7('0x2f')]['offset']);}_0x33a1a5[_0x43e7('0x36')]=qs[_0x43e7('0x37')](_0xb1fc63[_0x43e7('0x2f')][_0x43e7('0x37')]);_0x33a1a5[_0x43e7('0x38')]=qs[_0x43e7('0x30')](_[_0x43e7('0x39')](_0xb1fc63['query'],_0x4690a6['filters']),_0x50f9f5);if(_0xb1fc63['query'][_0x43e7('0x3a')]){_0x33a1a5[_0x43e7('0x38')]=_[_0x43e7('0x3b')](_0x33a1a5[_0x43e7('0x38')],{'$or':_[_0x43e7('0x27')](_0x50f9f5,function(_0x1ed538){if(_0x1ed538[_0x43e7('0x2b')]!==_0x43e7('0x3c')){var _0x55c798={};_0x55c798[_0x1ed538[_0x43e7('0x24')]]={'$like':'%'+_0xb1fc63[_0x43e7('0x2f')]['filter']+'%'};return _0x55c798;}})});}_0x33a1a5=_[_0x43e7('0x3b')]({},_0x33a1a5,_0xb1fc63['options']);var _0x44d8e4={'where':_0x33a1a5[_0x43e7('0x38')]};return db[_0x43e7('0x28')][_0x43e7('0x1a')](_0x44d8e4)[_0x43e7('0x21')](function(_0x234d8f){_0x45b675['count']=_0x234d8f;if(_0xb1fc63['query'][_0x43e7('0x3d')]){_0x33a1a5[_0x43e7('0x3e')]=[{'all':!![]}];}return db[_0x43e7('0x28')][_0x43e7('0x3f')](_0x33a1a5);})[_0x43e7('0x21')](function(_0x4a4a85){_0x45b675[_0x43e7('0x40')]=_0x4a4a85;return _0x45b675;})[_0x43e7('0x21')](respondWithFilteredResult(_0x5087d7,_0x33a1a5))['catch'](handleError(_0x5087d7,null));};exports[_0x43e7('0x41')]=function(_0x51a69c,_0x2ad8ef){var _0x504101={'raw':!![],'where':{'id':_0x51a69c[_0x43e7('0x42')]['id']}},_0x3d81ae={};_0x3d81ae[_0x43e7('0x2d')]=_[_0x43e7('0x2e')](db['MemberReport']['rawAttributes']);_0x3d81ae[_0x43e7('0x2f')]=_[_0x43e7('0x2e')](_0x51a69c[_0x43e7('0x2f')]);_0x3d81ae[_0x43e7('0x30')]=_['intersection'](_0x3d81ae['model'],_0x3d81ae['query']);_0x504101[_0x43e7('0x32')]=_['intersection'](_0x3d81ae[_0x43e7('0x2d')],qs['fields'](_0x51a69c['query'][_0x43e7('0x33')]));_0x504101['attributes']=_0x504101[_0x43e7('0x32')][_0x43e7('0x34')]?_0x504101[_0x43e7('0x32')]:_0x3d81ae[_0x43e7('0x2d')];if(_0x51a69c['query'][_0x43e7('0x3d')]){_0x504101[_0x43e7('0x3e')]=[{'all':!![]}];}_0x504101=_[_0x43e7('0x3b')]({},_0x504101,_0x51a69c[_0x43e7('0x43')]);return db[_0x43e7('0x28')][_0x43e7('0x44')](_0x504101)['then'](handleEntityNotFound(_0x2ad8ef,null))['then'](respondWithResult(_0x2ad8ef,null))[_0x43e7('0x45')](handleError(_0x2ad8ef,null));};exports[_0x43e7('0x46')]=function(_0x212841,_0x4c00a8){return db['MemberReport']['create'](_0x212841[_0x43e7('0x47')],{})[_0x43e7('0x21')](respondWithResult(_0x4c00a8,0xc9))['catch'](handleError(_0x4c00a8,null));};exports[_0x43e7('0x20')]=function(_0x47686e,_0x3c96fe){if(_0x47686e['body']['id']){delete _0x47686e['body']['id'];}return db['MemberReport']['find']({'where':{'id':_0x47686e[_0x43e7('0x42')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x3c96fe,null))['then'](saveUpdates(_0x47686e[_0x43e7('0x47')],null))[_0x43e7('0x21')](respondWithResult(_0x3c96fe,null))[_0x43e7('0x45')](handleError(_0x3c96fe,null));};exports[_0x43e7('0x22')]=function(_0x4a0ce5,_0x2718d5){return db['MemberReport']['find']({'where':{'id':_0x4a0ce5[_0x43e7('0x42')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x2718d5,null))[_0x43e7('0x21')](removeEntity(_0x2718d5,null))[_0x43e7('0x45')](handleError(_0x2718d5,null));};exports[_0x43e7('0x48')]=function(_0x2351cf,_0x1cd87c){return db[_0x43e7('0x28')][_0x43e7('0x48')]()[_0x43e7('0x21')](respondWithResult(_0x1cd87c,null))['catch'](handleError(_0x1cd87c,null));};
\ No newline at end of file
+var _0x9957=['util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','MemberReport','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x20e295,_0x308599){var _0x33ffbe=function(_0x2eeb46){while(--_0x2eeb46){_0x20e295['push'](_0x20e295['shift']());}};_0x33ffbe(++_0x308599);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['MemberReport']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['MemberReport'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['MemberReport'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x4ffc8a['params']['id']}})['then'](handleEntityNotFound(_0x19da63,null))['then'](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x4c')]=function(_0x4cf5db,_0x1cd85){return db[_0x7995('0x40')][_0x7995('0x4c')]()[_0x7995('0x26')](respondWithResult(_0x1cd85,null))[_0x7995('0x49')](handleError(_0x1cd85,null));};
\ No newline at end of file
index 6ae604e..4ab9f48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafd1=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./memberReport.attributes','exports','MemberReport','membername_interface','membername','interface'];(function(_0x28fbe3,_0x4ac6f8){var _0x45db6a=function(_0x296ecb){while(--_0x296ecb){_0x28fbe3['push'](_0x28fbe3['shift']());}};_0x45db6a(++_0x4ac6f8);}(_0xafd1,0x1c2));var _0x1afd=function(_0x28fbbf,_0x11f896){_0x28fbbf=_0x28fbbf-0x0;var _0x543af6=_0xafd1[_0x28fbbf];return _0x543af6;};'use strict';var _=require(_0x1afd('0x0'));var util=require(_0x1afd('0x1'));var logger=require(_0x1afd('0x2'))(_0x1afd('0x3'));var moment=require(_0x1afd('0x4'));var BPromise=require(_0x1afd('0x5'));var rp=require(_0x1afd('0x6'));var fs=require('fs');var path=require(_0x1afd('0x7'));var rimraf=require('rimraf');var config=require(_0x1afd('0x8'));var attributes=require(_0x1afd('0x9'));module[_0x1afd('0xa')]=function(_0x212313,_0x105f27){return _0x212313['define'](_0x1afd('0xb'),attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':_0x1afd('0xc'),'fields':[_0x1afd('0xd'),_0x1afd('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x74f7=['rimraf','../../config/environment','./memberReport.attributes','exports','define','report_member','membername_interface','membername','interface','../../config/logger','api','moment'];(function(_0x1b2ff7,_0x12a034){var _0x31656a=function(_0x1165a5){while(--_0x1165a5){_0x1b2ff7['push'](_0x1b2ff7['shift']());}};_0x31656a(++_0x12a034);}(_0x74f7,0xbd));var _0x774f=function(_0x15ccfe,_0xb6e509){_0x15ccfe=_0x15ccfe-0x0;var _0x538030=_0x74f7[_0x15ccfe];return _0x538030;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x774f('0x0'))(_0x774f('0x1'));var moment=require(_0x774f('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x774f('0x3'));var config=require(_0x774f('0x4'));var attributes=require(_0x774f('0x5'));module[_0x774f('0x6')]=function(_0x30b7b7,_0x2e4526){return _0x30b7b7[_0x774f('0x7')]('MemberReport',attributes,{'tableName':_0x774f('0x8'),'paranoid':![],'indexes':[{'name':_0x774f('0x9'),'fields':[_0x774f('0xa'),_0x774f('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index e194287..74fc090 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1228=['error','message','MemberReport,\x20%s,\x20%s','info','result','catch','GetMemberReport','findAll','options','where','attributes','limit','include','map','model','debug','CreateMemberReport','MemberReport','create','body','raw','update','UpdateMemberReport','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','then','MemberReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x12c66e,_0xea7b4){var _0x19481a=function(_0x5a77aa){while(--_0x5a77aa){_0x12c66e['push'](_0x12c66e['shift']());}};_0x19481a(++_0xea7b4);}(_0x1228,0x12f));var _0x8122=function(_0x3ea0b8,_0x236df3){_0x3ea0b8=_0x3ea0b8-0x0;var _0x19517c=_0x1228[_0x3ea0b8];return _0x19517c;};'use strict';var _=require(_0x8122('0x0'));var util=require('util');var moment=require(_0x8122('0x1'));var BPromise=require('bluebird');var rs=require(_0x8122('0x2'));var fs=require('fs');var Redis=require(_0x8122('0x3'));var db=require(_0x8122('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8122('0x5'))(_0x8122('0x6'));var config=require('../../config/environment');var jayson=require(_0x8122('0x7'));var client=jayson[_0x8122('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x21987a,_0x139c44,_0x517138){return new BPromise(function(_0x2cd672,_0x1c3d0f){return client['request'](_0x21987a,_0x517138)[_0x8122('0x9')](function(_0xc312b1){logger['info']('MemberReport,\x20%s,\x20%s',_0x139c44,'request\x20sent');logger['debug'](_0x8122('0xa'),_0x139c44,'request\x20sent',JSON[_0x8122('0xb')](_0xc312b1));if(_0xc312b1[_0x8122('0xc')]){if(_0xc312b1[_0x8122('0xc')]['code']===0x1f4){logger[_0x8122('0xc')]('MemberReport,\x20%s,\x20%s',_0x139c44,_0xc312b1[_0x8122('0xc')][_0x8122('0xd')]);return _0x1c3d0f(_0xc312b1[_0x8122('0xc')][_0x8122('0xd')]);}logger[_0x8122('0xc')](_0x8122('0xe'),_0x139c44,_0xc312b1[_0x8122('0xc')][_0x8122('0xd')]);return _0x2cd672(_0xc312b1[_0x8122('0xc')][_0x8122('0xd')]);}else{logger[_0x8122('0xf')](_0x8122('0xe'),_0x139c44,'request\x20sent');_0x2cd672(_0xc312b1[_0x8122('0x10')]['message']);}})[_0x8122('0x11')](function(_0x4c7460){logger[_0x8122('0xc')](_0x8122('0xe'),_0x139c44,_0x4c7460);_0x1c3d0f(_0x4c7460);});});}exports[_0x8122('0x12')]=function(_0x4bfb9e){var _0x4e932f=this;return new Promise(function(_0x4f7277,_0x5c93f6){return db['MemberReport'][_0x8122('0x13')]({'raw':_0x4bfb9e[_0x8122('0x14')]?_0x4bfb9e[_0x8122('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x4bfb9e['options']?_0x4bfb9e[_0x8122('0x14')][_0x8122('0x15')]||null:null,'attributes':_0x4bfb9e[_0x8122('0x14')]?_0x4bfb9e['options'][_0x8122('0x16')]||null:null,'limit':_0x4bfb9e[_0x8122('0x14')]?_0x4bfb9e[_0x8122('0x14')][_0x8122('0x17')]||null:null,'include':_0x4bfb9e[_0x8122('0x14')]?_0x4bfb9e[_0x8122('0x14')][_0x8122('0x18')]?_[_0x8122('0x19')](_0x4bfb9e['options'][_0x8122('0x18')],function(_0x5cfa77){return{'model':db[_0x5cfa77[_0x8122('0x1a')]],'as':_0x5cfa77['as'],'attributes':_0x5cfa77[_0x8122('0x16')],'include':_0x5cfa77[_0x8122('0x18')]?_[_0x8122('0x19')](_0x5cfa77[_0x8122('0x18')],function(_0x240a6d){return{'model':db[_0x240a6d[_0x8122('0x1a')]],'as':_0x240a6d['as'],'attributes':_0x240a6d[_0x8122('0x16')],'include':_0x240a6d[_0x8122('0x18')]?_['map'](_0x240a6d[_0x8122('0x18')],function(_0xa79602){return{'model':db[_0xa79602[_0x8122('0x1a')]],'as':_0xa79602['as'],'attributes':_0xa79602[_0x8122('0x16')]};}):[]};}):[]};}):[]:[]})[_0x8122('0x9')](function(_0x2eec0f){logger[_0x8122('0xf')](_0x8122('0x12'),_0x4bfb9e);logger[_0x8122('0x1b')](_0x8122('0x12'),_0x4bfb9e,JSON['stringify'](_0x2eec0f));_0x4f7277(_0x2eec0f);})['catch'](function(_0x2a0b63){logger[_0x8122('0xc')]('GetMemberReport',_0x2a0b63['message'],_0x4bfb9e);_0x5c93f6(_0x4e932f[_0x8122('0xc')](0x1f4,_0x2a0b63[_0x8122('0xd')]));});});};exports[_0x8122('0x1c')]=function(_0x552910){var _0x4c8339=this;return new Promise(function(_0x329c5c,_0x2e6ad6){return db[_0x8122('0x1d')][_0x8122('0x1e')](_0x552910[_0x8122('0x1f')],{'raw':_0x552910[_0x8122('0x14')]?_0x552910[_0x8122('0x14')][_0x8122('0x20')]===undefined?!![]:![]:!![]})[_0x8122('0x9')](function(_0x27252b){logger['info'](_0x8122('0x1c'),_0x552910);logger[_0x8122('0x1b')](_0x8122('0x1c'),_0x552910,JSON[_0x8122('0xb')](_0x27252b));_0x329c5c(_0x27252b);})[_0x8122('0x11')](function(_0x5aeb14){logger[_0x8122('0xc')](_0x8122('0x1c'),_0x5aeb14['message'],_0x552910);_0x2e6ad6(_0x4c8339['error'](0x1f4,_0x5aeb14[_0x8122('0xd')]));});});};exports['UpdateMemberReport']=function(_0x5362fe){var _0xf3dd36=this;return new Promise(function(_0x49e091,_0x48c9a4){return db[_0x8122('0x1d')][_0x8122('0x21')](_0x5362fe['body'],{'raw':_0x5362fe[_0x8122('0x14')]?_0x5362fe['options'][_0x8122('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5362fe['options']?_0x5362fe[_0x8122('0x14')][_0x8122('0x15')]||null:null,'attributes':_0x5362fe['options']?_0x5362fe['options']['attributes']||null:null,'limit':_0x5362fe[_0x8122('0x14')]?_0x5362fe[_0x8122('0x14')]['limit']||null:null})[_0x8122('0x9')](function(_0x37839d){logger[_0x8122('0xf')](_0x8122('0x22'),_0x5362fe);logger['debug'](_0x8122('0x22'),_0x5362fe,JSON[_0x8122('0xb')](_0x37839d));_0x49e091(_0x37839d);})[_0x8122('0x11')](function(_0x5ae637){logger[_0x8122('0xc')]('UpdateMemberReport',_0x5ae637[_0x8122('0xd')],_0x5362fe);_0x48c9a4(_0xf3dd36['error'](0x1f4,_0x5ae637[_0x8122('0xd')]));});});};
\ No newline at end of file
+var _0xfcbe=['info','MemberReport,\x20%s,\x20%s','MemberReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','MemberReport','findAll','options','raw','where','attributes','limit','include','map','model','GetMemberReport','debug','CreateMemberReport','UpdateMemberReport','update','body','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','http','request','then'];(function(_0xdc87cc,_0x62b83b){var _0x250503=function(_0x4bbad0){while(--_0x4bbad0){_0xdc87cc['push'](_0xdc87cc['shift']());}};_0x250503(++_0x62b83b);}(_0xfcbe,0x1b1));var _0xefcb=function(_0x3c4cb4,_0x1af471){_0x3c4cb4=_0x3c4cb4-0x0;var _0x7d1958=_0xfcbe[_0x3c4cb4];return _0x7d1958;};'use strict';var _=require('lodash');var util=require(_0xefcb('0x0'));var moment=require(_0xefcb('0x1'));var BPromise=require(_0xefcb('0x2'));var rs=require(_0xefcb('0x3'));var fs=require('fs');var Redis=require(_0xefcb('0x4'));var db=require(_0xefcb('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xefcb('0x6'))(_0xefcb('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xefcb('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4e15ab,_0x4bacb4,_0x4697fe){return new BPromise(function(_0x55cad2,_0x100aa1){return client[_0xefcb('0x9')](_0x4e15ab,_0x4697fe)[_0xefcb('0xa')](function(_0x5dc9cd){logger[_0xefcb('0xb')](_0xefcb('0xc'),_0x4bacb4,'request\x20sent');logger['debug'](_0xefcb('0xd'),_0x4bacb4,_0xefcb('0xe'),JSON[_0xefcb('0xf')](_0x5dc9cd));if(_0x5dc9cd[_0xefcb('0x10')]){if(_0x5dc9cd[_0xefcb('0x10')][_0xefcb('0x11')]===0x1f4){logger['error'](_0xefcb('0xc'),_0x4bacb4,_0x5dc9cd[_0xefcb('0x10')][_0xefcb('0x12')]);return _0x100aa1(_0x5dc9cd[_0xefcb('0x10')][_0xefcb('0x12')]);}logger['error']('MemberReport,\x20%s,\x20%s',_0x4bacb4,_0x5dc9cd[_0xefcb('0x10')][_0xefcb('0x12')]);return _0x55cad2(_0x5dc9cd['error'][_0xefcb('0x12')]);}else{logger['info'](_0xefcb('0xc'),_0x4bacb4,'request\x20sent');_0x55cad2(_0x5dc9cd[_0xefcb('0x13')][_0xefcb('0x12')]);}})[_0xefcb('0x14')](function(_0x187f0f){logger[_0xefcb('0x10')](_0xefcb('0xc'),_0x4bacb4,_0x187f0f);_0x100aa1(_0x187f0f);});});}exports['GetMemberReport']=function(_0x15fbec){var _0x8de41a=this;return new Promise(function(_0xe922c7,_0x4884be){return db[_0xefcb('0x15')][_0xefcb('0x16')]({'raw':_0x15fbec[_0xefcb('0x17')]?_0x15fbec['options'][_0xefcb('0x18')]===undefined?!![]:![]:!![],'where':_0x15fbec[_0xefcb('0x17')]?_0x15fbec['options'][_0xefcb('0x19')]||null:null,'attributes':_0x15fbec[_0xefcb('0x17')]?_0x15fbec[_0xefcb('0x17')][_0xefcb('0x1a')]||null:null,'limit':_0x15fbec[_0xefcb('0x17')]?_0x15fbec['options'][_0xefcb('0x1b')]||null:null,'include':_0x15fbec[_0xefcb('0x17')]?_0x15fbec[_0xefcb('0x17')][_0xefcb('0x1c')]?_[_0xefcb('0x1d')](_0x15fbec[_0xefcb('0x17')][_0xefcb('0x1c')],function(_0x2a74f6){return{'model':db[_0x2a74f6['model']],'as':_0x2a74f6['as'],'attributes':_0x2a74f6['attributes'],'include':_0x2a74f6['include']?_[_0xefcb('0x1d')](_0x2a74f6[_0xefcb('0x1c')],function(_0x457ff6){return{'model':db[_0x457ff6[_0xefcb('0x1e')]],'as':_0x457ff6['as'],'attributes':_0x457ff6[_0xefcb('0x1a')],'include':_0x457ff6[_0xefcb('0x1c')]?_[_0xefcb('0x1d')](_0x457ff6['include'],function(_0x3029d1){return{'model':db[_0x3029d1[_0xefcb('0x1e')]],'as':_0x3029d1['as'],'attributes':_0x3029d1[_0xefcb('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xefcb('0xa')](function(_0x18f4ef){logger[_0xefcb('0xb')](_0xefcb('0x1f'),_0x15fbec);logger[_0xefcb('0x20')](_0xefcb('0x1f'),_0x15fbec,JSON[_0xefcb('0xf')](_0x18f4ef));_0xe922c7(_0x18f4ef);})[_0xefcb('0x14')](function(_0x160782){logger[_0xefcb('0x10')](_0xefcb('0x1f'),_0x160782[_0xefcb('0x12')],_0x15fbec);_0x4884be(_0x8de41a['error'](0x1f4,_0x160782[_0xefcb('0x12')]));});});};exports[_0xefcb('0x21')]=function(_0x296427){var _0x232d45=this;return new Promise(function(_0x301daa,_0xc83f28){return db[_0xefcb('0x15')]['create'](_0x296427['body'],{'raw':_0x296427[_0xefcb('0x17')]?_0x296427[_0xefcb('0x17')]['raw']===undefined?!![]:![]:!![]})[_0xefcb('0xa')](function(_0x3b4f33){logger[_0xefcb('0xb')]('CreateMemberReport',_0x296427);logger[_0xefcb('0x20')](_0xefcb('0x21'),_0x296427,JSON[_0xefcb('0xf')](_0x3b4f33));_0x301daa(_0x3b4f33);})['catch'](function(_0x4fb22f){logger['error']('CreateMemberReport',_0x4fb22f[_0xefcb('0x12')],_0x296427);_0xc83f28(_0x232d45[_0xefcb('0x10')](0x1f4,_0x4fb22f[_0xefcb('0x12')]));});});};exports[_0xefcb('0x22')]=function(_0x2b1759){var _0x352db0=this;return new Promise(function(_0x32562b,_0x293176){return db[_0xefcb('0x15')][_0xefcb('0x23')](_0x2b1759[_0xefcb('0x24')],{'raw':_0x2b1759[_0xefcb('0x17')]?_0x2b1759[_0xefcb('0x17')][_0xefcb('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b1759[_0xefcb('0x17')]?_0x2b1759[_0xefcb('0x17')]['where']||null:null,'attributes':_0x2b1759[_0xefcb('0x17')]?_0x2b1759[_0xefcb('0x17')][_0xefcb('0x1a')]||null:null,'limit':_0x2b1759[_0xefcb('0x17')]?_0x2b1759['options'][_0xefcb('0x1b')]||null:null})['then'](function(_0x2ca1ee){logger[_0xefcb('0xb')](_0xefcb('0x22'),_0x2b1759);logger[_0xefcb('0x20')]('UpdateMemberReport',_0x2b1759,JSON[_0xefcb('0xf')](_0x2ca1ee));_0x32562b(_0x2ca1ee);})[_0xefcb('0x14')](function(_0x31e7c3){logger['error'](_0xefcb('0x22'),_0x31e7c3[_0xefcb('0x12')],_0x2b1759);_0x293176(_0x352db0[_0xefcb('0x10')](0x1f4,_0x31e7c3['message']));});});};
\ No newline at end of file
index eca2e12..0691d94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dcb=['fs-extra','../../components/auth/service','../../config/environment','./migration.controller','get','index','exports','multer','util','connect-timeout','express'];(function(_0x272e29,_0x3201ec){var _0x779cfd=function(_0x5e5c7f){while(--_0x5e5c7f){_0x272e29['push'](_0x272e29['shift']());}};_0x779cfd(++_0x3201ec);}(_0x9dcb,0x172));var _0xb9dc=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9dcb[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require(_0xb9dc('0x0'));var util=require(_0xb9dc('0x1'));var path=require('path');var timeout=require(_0xb9dc('0x2'));var express=require(_0xb9dc('0x3'));var router=express['Router']();var fs_extra=require(_0xb9dc('0x4'));var auth=require(_0xb9dc('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb9dc('0x6'));var controller=require(_0xb9dc('0x7'));router[_0xb9dc('0x8')]('/',controller[_0xb9dc('0x9')]);module[_0xb9dc('0xa')]=router;
\ No newline at end of file
+var _0x3dc1=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','path'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x3dc1,0x127));var _0x13dc=function(_0x41f4e7,_0x24a7bc){_0x41f4e7=_0x41f4e7-0x0;var _0x513885=_0x3dc1[_0x41f4e7];return _0x513885;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x13dc('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x13dc('0x1')]();var fs_extra=require(_0x13dc('0x2'));var auth=require(_0x13dc('0x3'));var interaction=require(_0x13dc('0x4'));var config=require(_0x13dc('0x5'));var controller=require('./migration.controller');router[_0x13dc('0x6')]('/',controller[_0x13dc('0x7')]);module['exports']=router;
\ No newline at end of file
index 1f6f256..eed91ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x726b=['sequelize','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x726b,0x111));var _0xb726=function(_0x563620,_0x243044){_0x563620=_0x563620-0x0;var _0x35c6d7=_0x726b[_0x563620];return _0x35c6d7;};'use strict';var Sequelize=require(_0xb726('0x0'));module[_0xb726('0x1')]={'version':{'type':Sequelize[_0xb726('0x2')],'unique':'version'}};
\ No newline at end of file
+var _0x3328=['exports','STRING','version'];(function(_0x387a10,_0x9c5520){var _0x1a1ae8=function(_0x207f0e){while(--_0x207f0e){_0x387a10['push'](_0x387a10['shift']());}};_0x1a1ae8(++_0x9c5520);}(_0x3328,0x10b));var _0x8332=function(_0x360484,_0x2d14e5){_0x360484=_0x360484-0x0;var _0x461a10=_0x3328[_0x360484];return _0x461a10;};'use strict';var Sequelize=require('sequelize');module[_0x8332('0x0')]={'version':{'type':Sequelize[_0x8332('0x1')],'unique':_0x8332('0x2')}};
\ No newline at end of file
index 4f33451..24dee16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4de=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','json','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','index','map','Migration','rawAttributes','fieldName','type','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','findAll','catch','eml-format','rimraf','zip-dir','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse'];(function(_0x1c9754,_0x23ca63){var _0x1f913a=function(_0x2a3e5f){while(--_0x2a3e5f){_0x1c9754['push'](_0x1c9754['shift']());}};_0x1f913a(++_0x23ca63);}(_0xc4de,0x17d));var _0xec4d=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0xc4de[_0x199572];return _0x13cfa3;};'use strict';var emlformat=require(_0xec4d('0x0'));var rimraf=require(_0xec4d('0x1'));var zipdir=require(_0xec4d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xec4d('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xec4d('0x4'));var util=require('util');var path=require(_0xec4d('0x5'));var sox=require(_0xec4d('0x6'));var csv=require(_0xec4d('0x7'));var ejs=require(_0xec4d('0x8'));var fs=require('fs');var fs_extra=require(_0xec4d('0x9'));var _=require(_0xec4d('0xa'));var squel=require('squel');var crypto=require(_0xec4d('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xec4d('0xc'));var toCsv=require(_0xec4d('0x7'));var querystring=require(_0xec4d('0xd'));var Papa=require(_0xec4d('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xec4d('0xf'));var as=require(_0xec4d('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xec4d('0x11'))(_0xec4d('0x12'));var utils=require(_0xec4d('0x13'));var config=require(_0xec4d('0x14'));var licenseUtil=require(_0xec4d('0x15'));var db=require(_0xec4d('0x16'))['db'];function respondWithStatusCode(_0x541597,_0x3f408e){_0x3f408e=_0x3f408e||0xcc;return function(_0x1040cc){if(_0x1040cc){return _0x541597['sendStatus'](_0x3f408e);}return _0x541597[_0xec4d('0x17')](_0x3f408e)[_0xec4d('0x18')]();};}function respondWithResult(_0x2a2454,_0x54416b){_0x54416b=_0x54416b||0xc8;return function(_0xd93c2f){if(_0xd93c2f){return _0x2a2454[_0xec4d('0x17')](_0x54416b)['json'](_0xd93c2f);}};}function respondWithFilteredResult(_0x19b16e,_0x4cfff1){return function(_0x39182c){if(_0x39182c){var _0xc28215=typeof _0x4cfff1[_0xec4d('0x19')]===_0xec4d('0x1a')&&typeof _0x4cfff1[_0xec4d('0x1b')]===_0xec4d('0x1a');var _0xe2965a=_0x39182c[_0xec4d('0x1c')];var _0x181c73=_0xc28215?0x0:_0x4cfff1['offset'];var _0x4c6944=_0xc28215?_0x39182c[_0xec4d('0x1c')]:_0x4cfff1[_0xec4d('0x19')]+_0x4cfff1[_0xec4d('0x1b')];var _0x4db66;if(_0x4c6944>=_0xe2965a){_0x4c6944=_0xe2965a;_0x4db66=0xc8;}else{_0x4db66=0xce;}_0x19b16e[_0xec4d('0x17')](_0x4db66);return _0x19b16e[_0xec4d('0x1d')]('Content-Range',_0x181c73+'-'+_0x4c6944+'/'+_0xe2965a)[_0xec4d('0x1e')](_0x39182c);}return null;};}function patchUpdates(_0x6da58d){return function(_0x318e2c){try{jsonpatch[_0xec4d('0x1f')](_0x318e2c,_0x6da58d,!![]);}catch(_0xe86381){return BPromise[_0xec4d('0x20')](_0xe86381);}return _0x318e2c['save']();};}function saveUpdates(_0x12d244,_0x149cbf){return function(_0x3e5831){if(_0x3e5831){return _0x3e5831[_0xec4d('0x21')](_0x12d244)[_0xec4d('0x22')](function(_0x18f4bc){return _0x18f4bc;});}return null;};}function removeEntity(_0x316e89,_0x494e40){return function(_0x48487b){if(_0x48487b){return _0x48487b[_0xec4d('0x23')]()[_0xec4d('0x22')](function(){_0x316e89[_0xec4d('0x17')](0xcc)[_0xec4d('0x18')]();});}};}function handleEntityNotFound(_0x19c233,_0x294bc6){return function(_0x49554f){if(!_0x49554f){_0x19c233[_0xec4d('0x24')](0x194);}return _0x49554f;};}function handleError(_0x2dbe99,_0x17541d){_0x17541d=_0x17541d||0x1f4;return function(_0xf6a7fb){logger[_0xec4d('0x25')](_0xf6a7fb[_0xec4d('0x26')]);if(_0xf6a7fb[_0xec4d('0x27')]){delete _0xf6a7fb[_0xec4d('0x27')];}_0x2dbe99[_0xec4d('0x17')](_0x17541d)[_0xec4d('0x28')](_0xf6a7fb);};}exports[_0xec4d('0x29')]=function(_0x266a57,_0x3a3b77){var _0x34cadf={},_0x45d3b8={},_0x270a38={'count':0x0,'rows':[]};var _0x3a510d=_[_0xec4d('0x2a')](db[_0xec4d('0x2b')][_0xec4d('0x2c')],function(_0x50ae19){return{'name':_0x50ae19[_0xec4d('0x2d')],'type':_0x50ae19[_0xec4d('0x2e')]['key']};});_0x45d3b8['model']=_['map'](_0x3a510d,_0xec4d('0x27'));_0x45d3b8[_0xec4d('0x2f')]=_[_0xec4d('0x30')](_0x266a57['query']);_0x45d3b8[_0xec4d('0x31')]=_[_0xec4d('0x32')](_0x45d3b8['model'],_0x45d3b8[_0xec4d('0x2f')]);_0x34cadf[_0xec4d('0x33')]=_['intersection'](_0x45d3b8[_0xec4d('0x34')],qs[_0xec4d('0x35')](_0x266a57[_0xec4d('0x2f')][_0xec4d('0x35')]));_0x34cadf[_0xec4d('0x33')]=_0x34cadf[_0xec4d('0x33')][_0xec4d('0x36')]?_0x34cadf[_0xec4d('0x33')]:_0x45d3b8[_0xec4d('0x34')];if(!_0x266a57[_0xec4d('0x2f')][_0xec4d('0x37')](_0xec4d('0x38'))){_0x34cadf[_0xec4d('0x1b')]=qs[_0xec4d('0x1b')](_0x266a57[_0xec4d('0x2f')][_0xec4d('0x1b')]);_0x34cadf['offset']=qs[_0xec4d('0x19')](_0x266a57[_0xec4d('0x2f')][_0xec4d('0x19')]);}_0x34cadf['order']=qs[_0xec4d('0x39')](_0x266a57['query']['sort']);_0x34cadf[_0xec4d('0x3a')]=qs[_0xec4d('0x31')](_[_0xec4d('0x3b')](_0x266a57[_0xec4d('0x2f')],_0x45d3b8[_0xec4d('0x31')]),_0x3a510d);if(_0x266a57[_0xec4d('0x2f')][_0xec4d('0x3c')]){_0x34cadf[_0xec4d('0x3a')]=_[_0xec4d('0x3d')](_0x34cadf[_0xec4d('0x3a')],{'$or':_[_0xec4d('0x2a')](_0x3a510d,function(_0x22bc79){if(_0x22bc79['type']!==_0xec4d('0x3e')){var _0x4bbdb0={};_0x4bbdb0[_0x22bc79[_0xec4d('0x27')]]={'$like':'%'+_0x266a57['query'][_0xec4d('0x3c')]+'%'};return _0x4bbdb0;}})});}_0x34cadf=_[_0xec4d('0x3d')]({},_0x34cadf,_0x266a57[_0xec4d('0x3f')]);var _0x4a9772={'where':_0x34cadf[_0xec4d('0x3a')]};return db[_0xec4d('0x2b')][_0xec4d('0x1c')](_0x4a9772)['then'](function(_0x860a1e){_0x270a38['count']=_0x860a1e;if(_0x266a57[_0xec4d('0x2f')]['includeAll']){_0x34cadf['include']=[{'all':!![]}];}return db[_0xec4d('0x2b')][_0xec4d('0x40')](_0x34cadf);})[_0xec4d('0x22')](function(_0x3cd0e9){_0x270a38['rows']=_0x3cd0e9;return _0x270a38;})['then'](respondWithFilteredResult(_0x3a3b77,_0x34cadf))[_0xec4d('0x41')](handleError(_0x3a3b77,null));};
\ No newline at end of file
+var _0x369e=['limit','count','Content-Range','apply','reject','save','then','stack','name','send','index','map','Migration','rawAttributes','key','model','query','keys','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','where','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset'];(function(_0x4b2c31,_0x127673){var _0x2fe00f=function(_0x130cef){while(--_0x130cef){_0x4b2c31['push'](_0x4b2c31['shift']());}};_0x2fe00f(++_0x127673);}(_0x369e,0x174));var _0xe369=function(_0xdaaaca,_0x1fd62d){_0xdaaaca=_0xdaaaca-0x0;var _0x54469d=_0x369e[_0xdaaaca];return _0x54469d;};'use strict';var emlformat=require(_0xe369('0x0'));var rimraf=require(_0xe369('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe369('0x2'));var rp=require(_0xe369('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe369('0x4'));var util=require(_0xe369('0x5'));var path=require(_0xe369('0x6'));var sox=require('sox');var csv=require(_0xe369('0x7'));var ejs=require(_0xe369('0x8'));var fs=require('fs');var fs_extra=require(_0xe369('0x9'));var _=require(_0xe369('0xa'));var squel=require(_0xe369('0xb'));var crypto=require(_0xe369('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe369('0xd'));var toCsv=require(_0xe369('0x7'));var querystring=require(_0xe369('0xe'));var Papa=require(_0xe369('0xf'));var Redis=require(_0xe369('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xe369('0x11'));var as=require(_0xe369('0x12'));var hardwareService=require(_0xe369('0x13'));var logger=require(_0xe369('0x14'))('api');var utils=require(_0xe369('0x15'));var config=require(_0xe369('0x16'));var licenseUtil=require(_0xe369('0x17'));var db=require(_0xe369('0x18'))['db'];function respondWithStatusCode(_0x230774,_0x2a6dea){_0x2a6dea=_0x2a6dea||0xcc;return function(_0x407189){if(_0x407189){return _0x230774[_0xe369('0x19')](_0x2a6dea);}return _0x230774[_0xe369('0x1a')](_0x2a6dea)[_0xe369('0x1b')]();};}function respondWithResult(_0xfee5b9,_0x2b8a6c){_0x2b8a6c=_0x2b8a6c||0xc8;return function(_0x90136c){if(_0x90136c){return _0xfee5b9['status'](_0x2b8a6c)[_0xe369('0x1c')](_0x90136c);}};}function respondWithFilteredResult(_0x1c9022,_0x2df048){return function(_0x448830){if(_0x448830){var _0x2ef0e9=typeof _0x2df048[_0xe369('0x1d')]==='undefined'&&typeof _0x2df048[_0xe369('0x1e')]==='undefined';var _0x1ee453=_0x448830[_0xe369('0x1f')];var _0x173671=_0x2ef0e9?0x0:_0x2df048['offset'];var _0x627f71=_0x2ef0e9?_0x448830[_0xe369('0x1f')]:_0x2df048['offset']+_0x2df048['limit'];var _0x304b37;if(_0x627f71>=_0x1ee453){_0x627f71=_0x1ee453;_0x304b37=0xc8;}else{_0x304b37=0xce;}_0x1c9022[_0xe369('0x1a')](_0x304b37);return _0x1c9022['set'](_0xe369('0x20'),_0x173671+'-'+_0x627f71+'/'+_0x1ee453)[_0xe369('0x1c')](_0x448830);}return null;};}function patchUpdates(_0x44e704){return function(_0x298e9b){try{jsonpatch[_0xe369('0x21')](_0x298e9b,_0x44e704,!![]);}catch(_0x3c7c5b){return BPromise[_0xe369('0x22')](_0x3c7c5b);}return _0x298e9b[_0xe369('0x23')]();};}function saveUpdates(_0x53c3c4,_0x45c546){return function(_0x28fed8){if(_0x28fed8){return _0x28fed8['update'](_0x53c3c4)[_0xe369('0x24')](function(_0x4c98e1){return _0x4c98e1;});}return null;};}function removeEntity(_0x37f548,_0x13e853){return function(_0x3d5cca){if(_0x3d5cca){return _0x3d5cca['destroy']()[_0xe369('0x24')](function(){_0x37f548[_0xe369('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x151ab0,_0xf413bc){return function(_0x142062){if(!_0x142062){_0x151ab0[_0xe369('0x19')](0x194);}return _0x142062;};}function handleError(_0x38b5bc,_0x21802f){_0x21802f=_0x21802f||0x1f4;return function(_0x453338){logger['error'](_0x453338[_0xe369('0x25')]);if(_0x453338['name']){delete _0x453338[_0xe369('0x26')];}_0x38b5bc[_0xe369('0x1a')](_0x21802f)[_0xe369('0x27')](_0x453338);};}exports[_0xe369('0x28')]=function(_0x42cc52,_0x386128){var _0xa1bbf5={},_0x157e48={},_0x4930ec={'count':0x0,'rows':[]};var _0x51d780=_[_0xe369('0x29')](db[_0xe369('0x2a')][_0xe369('0x2b')],function(_0x70dd2a){return{'name':_0x70dd2a['fieldName'],'type':_0x70dd2a['type'][_0xe369('0x2c')]};});_0x157e48[_0xe369('0x2d')]=_[_0xe369('0x29')](_0x51d780,_0xe369('0x26'));_0x157e48[_0xe369('0x2e')]=_[_0xe369('0x2f')](_0x42cc52[_0xe369('0x2e')]);_0x157e48['filters']=_['intersection'](_0x157e48['model'],_0x157e48['query']);_0xa1bbf5[_0xe369('0x30')]=_['intersection'](_0x157e48[_0xe369('0x2d')],qs[_0xe369('0x31')](_0x42cc52['query'][_0xe369('0x31')]));_0xa1bbf5[_0xe369('0x30')]=_0xa1bbf5[_0xe369('0x30')][_0xe369('0x32')]?_0xa1bbf5[_0xe369('0x30')]:_0x157e48[_0xe369('0x2d')];if(!_0x42cc52[_0xe369('0x2e')][_0xe369('0x33')](_0xe369('0x34'))){_0xa1bbf5['limit']=qs[_0xe369('0x1e')](_0x42cc52['query']['limit']);_0xa1bbf5[_0xe369('0x1d')]=qs[_0xe369('0x1d')](_0x42cc52['query'][_0xe369('0x1d')]);}_0xa1bbf5[_0xe369('0x35')]=qs[_0xe369('0x36')](_0x42cc52[_0xe369('0x2e')][_0xe369('0x36')]);_0xa1bbf5['where']=qs[_0xe369('0x37')](_[_0xe369('0x38')](_0x42cc52[_0xe369('0x2e')],_0x157e48[_0xe369('0x37')]),_0x51d780);if(_0x42cc52[_0xe369('0x2e')]['filter']){_0xa1bbf5[_0xe369('0x39')]=_['merge'](_0xa1bbf5[_0xe369('0x39')],{'$or':_[_0xe369('0x29')](_0x51d780,function(_0x55090f){if(_0x55090f[_0xe369('0x3a')]!==_0xe369('0x3b')){var _0x3acf29={};_0x3acf29[_0x55090f[_0xe369('0x26')]]={'$like':'%'+_0x42cc52[_0xe369('0x2e')]['filter']+'%'};return _0x3acf29;}})});}_0xa1bbf5=_[_0xe369('0x3c')]({},_0xa1bbf5,_0x42cc52[_0xe369('0x3d')]);var _0x3cdc94={'where':_0xa1bbf5[_0xe369('0x39')]};return db['Migration'][_0xe369('0x1f')](_0x3cdc94)[_0xe369('0x24')](function(_0x534026){_0x4930ec['count']=_0x534026;if(_0x42cc52[_0xe369('0x2e')][_0xe369('0x3e')]){_0xa1bbf5[_0xe369('0x3f')]=[{'all':!![]}];}return db[_0xe369('0x2a')][_0xe369('0x40')](_0xa1bbf5);})[_0xe369('0x24')](function(_0x14b2a9){_0x4930ec[_0xe369('0x41')]=_0x14b2a9;return _0x4930ec;})[_0xe369('0x24')](respondWithFilteredResult(_0x386128,_0xa1bbf5))[_0xe369('0x42')](handleError(_0x386128,null));};
\ No newline at end of file
index e26d0f5..fde97f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48a0=['./migration.attributes','exports','migrations','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0xff2a5a,_0x5719b4){var _0x4ceb33=function(_0x5a9586){while(--_0x5a9586){_0xff2a5a['push'](_0xff2a5a['shift']());}};_0x4ceb33(++_0x5719b4);}(_0x48a0,0x18f));var _0x048a=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x48a0[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x048a('0x0'));var util=require(_0x048a('0x1'));var logger=require(_0x048a('0x2'))(_0x048a('0x3'));var moment=require('moment');var BPromise=require(_0x048a('0x4'));var rp=require(_0x048a('0x5'));var fs=require('fs');var path=require(_0x048a('0x6'));var rimraf=require(_0x048a('0x7'));var config=require('../../config/environment');var attributes=require(_0x048a('0x8'));module[_0x048a('0x9')]=function(_0x58bc9f,_0x32c3f2){return _0x58bc9f['define']('Migration',attributes,{'tableName':_0x048a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3909=['define','Migration','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./migration.attributes','exports'];(function(_0xcfeff4,_0x3f2e19){var _0xb2fadc=function(_0x4cd013){while(--_0x4cd013){_0xcfeff4['push'](_0xcfeff4['shift']());}};_0xb2fadc(++_0x3f2e19);}(_0x3909,0x1e3));var _0x9390=function(_0x4433b,_0x1eded1){_0x4433b=_0x4433b-0x0;var _0xffc1da=_0x3909[_0x4433b];return _0xffc1da;};'use strict';var _=require(_0x9390('0x0'));var util=require('util');var logger=require(_0x9390('0x1'))(_0x9390('0x2'));var moment=require(_0x9390('0x3'));var BPromise=require(_0x9390('0x4'));var rp=require(_0x9390('0x5'));var fs=require('fs');var path=require(_0x9390('0x6'));var rimraf=require(_0x9390('0x7'));var config=require(_0x9390('0x8'));var attributes=require(_0x9390('0x9'));module[_0x9390('0xa')]=function(_0x585bf9,_0x3acae5){return _0x585bf9[_0x9390('0xb')](_0x9390('0xc'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 502e1e6..e3d1e38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4156=['util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','stringify','error','code','Migration,\x20%s,\x20%s','message','result','lodash'];(function(_0x3baacf,_0x1acbb0){var _0x2d871c=function(_0x52a85a){while(--_0x52a85a){_0x3baacf['push'](_0x3baacf['shift']());}};_0x2d871c(++_0x1acbb0);}(_0x4156,0xf1));var _0x6415=function(_0x3d8ddc,_0x4212d7){_0x3d8ddc=_0x3d8ddc-0x0;var _0xcea0b4=_0x4156[_0x3d8ddc];return _0xcea0b4;};'use strict';var _=require(_0x6415('0x0'));var util=require(_0x6415('0x1'));var moment=require(_0x6415('0x2'));var BPromise=require(_0x6415('0x3'));var rs=require(_0x6415('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6415('0x5'))['db'];var utils=require(_0x6415('0x6'));var logger=require(_0x6415('0x7'))(_0x6415('0x8'));var config=require(_0x6415('0x9'));var jayson=require(_0x6415('0xa'));var client=jayson[_0x6415('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x24cb0,_0x47ec13,_0x4045ec){return new BPromise(function(_0x266237,_0x5bc51b){return client[_0x6415('0xc')](_0x24cb0,_0x4045ec)[_0x6415('0xd')](function(_0x3383d2){logger[_0x6415('0xe')]('Migration,\x20%s,\x20%s',_0x47ec13,_0x6415('0xf'));logger['debug']('Migration,\x20%s,\x20%s,\x20%s',_0x47ec13,_0x6415('0xf'),JSON[_0x6415('0x10')](_0x3383d2));if(_0x3383d2[_0x6415('0x11')]){if(_0x3383d2[_0x6415('0x11')][_0x6415('0x12')]===0x1f4){logger[_0x6415('0x11')](_0x6415('0x13'),_0x47ec13,_0x3383d2['error']['message']);return _0x5bc51b(_0x3383d2[_0x6415('0x11')][_0x6415('0x14')]);}logger[_0x6415('0x11')](_0x6415('0x13'),_0x47ec13,_0x3383d2[_0x6415('0x11')]['message']);return _0x266237(_0x3383d2['error'][_0x6415('0x14')]);}else{logger[_0x6415('0xe')]('Migration,\x20%s,\x20%s',_0x47ec13,_0x6415('0xf'));_0x266237(_0x3383d2[_0x6415('0x15')]['message']);}})['catch'](function(_0x352a04){logger[_0x6415('0x11')](_0x6415('0x13'),_0x47ec13,_0x352a04);_0x5bc51b(_0x352a04);});});}
\ No newline at end of file
+var _0x3189=['../../config/environment','jayson/promise','http','then','info','Migration,\x20%s,\x20%s','Migration,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x2bbf5b,_0x225431){var _0x6cce2a=function(_0x5c57ec){while(--_0x5c57ec){_0x2bbf5b['push'](_0x2bbf5b['shift']());}};_0x6cce2a(++_0x225431);}(_0x3189,0xae));var _0x9318=function(_0x3da7a1,_0x151473){_0x3da7a1=_0x3da7a1-0x0;var _0x3b7290=_0x3189[_0x3da7a1];return _0x3b7290;};'use strict';var _=require(_0x9318('0x0'));var util=require(_0x9318('0x1'));var moment=require('moment');var BPromise=require(_0x9318('0x2'));var rs=require(_0x9318('0x3'));var fs=require('fs');var Redis=require(_0x9318('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9318('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x9318('0x6'));var jayson=require(_0x9318('0x7'));var client=jayson['client'][_0x9318('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4bb3c3,_0x4dbe95,_0x2f6831){return new BPromise(function(_0x324307,_0x1bfed6){return client['request'](_0x4bb3c3,_0x2f6831)[_0x9318('0x9')](function(_0x2e8d1c){logger[_0x9318('0xa')](_0x9318('0xb'),_0x4dbe95,'request\x20sent');logger['debug'](_0x9318('0xc'),_0x4dbe95,'request\x20sent',JSON[_0x9318('0xd')](_0x2e8d1c));if(_0x2e8d1c[_0x9318('0xe')]){if(_0x2e8d1c[_0x9318('0xe')]['code']===0x1f4){logger[_0x9318('0xe')]('Migration,\x20%s,\x20%s',_0x4dbe95,_0x2e8d1c['error'][_0x9318('0xf')]);return _0x1bfed6(_0x2e8d1c['error'][_0x9318('0xf')]);}logger[_0x9318('0xe')]('Migration,\x20%s,\x20%s',_0x4dbe95,_0x2e8d1c[_0x9318('0xe')][_0x9318('0xf')]);return _0x324307(_0x2e8d1c[_0x9318('0xe')]['message']);}else{logger['info'](_0x9318('0xb'),_0x4dbe95,_0x9318('0x10'));_0x324307(_0x2e8d1c['result'][_0x9318('0xf')]);}})[_0x9318('0x11')](function(_0x5e1238){logger[_0x9318('0xe')](_0x9318('0xb'),_0x4dbe95,_0x5e1238);_0x1bfed6(_0x5e1238);});});}
\ No newline at end of file
index 2c1f37d..4e4985e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9494=['put','update','destroy','multer','util','connect-timeout','express','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','post','create'];(function(_0x1e16e7,_0x11d381){var _0x1fcd7a=function(_0x544554){while(--_0x544554){_0x1e16e7['push'](_0x1e16e7['shift']());}};_0x1fcd7a(++_0x11d381);}(_0x9494,0x1a7));var _0x4949=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9494[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x4949('0x0'));var util=require(_0x4949('0x1'));var path=require('path');var timeout=require(_0x4949('0x2'));var express=require(_0x4949('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4949('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x4949('0x5'));var controller=require('./network.controller');router[_0x4949('0x6')]('/',auth[_0x4949('0x7')](),controller['index']);router['get'](_0x4949('0x8'),auth[_0x4949('0x7')](),controller[_0x4949('0x9')]);router[_0x4949('0xa')]('/',auth[_0x4949('0x7')](),controller[_0x4949('0xb')]);router[_0x4949('0xc')](_0x4949('0x8'),auth['isAuthenticated'](),controller[_0x4949('0xd')]);router['delete'](_0x4949('0x8'),auth[_0x4949('0x7')](),controller[_0x4949('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x559f=['update','delete','destroy','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','isAuthenticated','index','post','create','put','/:id'];(function(_0x4adcdb,_0x48beff){var _0x1dfe7f=function(_0x1882b5){while(--_0x1882b5){_0x4adcdb['push'](_0x4adcdb['shift']());}};_0x1dfe7f(++_0x48beff);}(_0x559f,0x102));var _0xf559=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x559f[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xf559('0x0'));var util=require('util');var path=require(_0xf559('0x1'));var timeout=require('connect-timeout');var express=require(_0xf559('0x2'));var router=express['Router']();var fs_extra=require(_0xf559('0x3'));var auth=require(_0xf559('0x4'));var interaction=require(_0xf559('0x5'));var config=require(_0xf559('0x6'));var controller=require(_0xf559('0x7'));router['get']('/',auth[_0xf559('0x8')](),controller[_0xf559('0x9')]);router['get']('/:id',auth[_0xf559('0x8')](),controller['show']);router[_0xf559('0xa')]('/',auth[_0xf559('0x8')](),controller[_0xf559('0xb')]);router[_0xf559('0xc')](_0xf559('0xd'),auth[_0xf559('0x8')](),controller[_0xf559('0xe')]);router[_0xf559('0xf')]('/:id',auth[_0xf559('0x8')](),controller[_0xf559('0x10')]);module['exports']=router;
\ No newline at end of file
index 3468746..fe0eba7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4525=['STRING','sequelize','localnet','stun','turn'];(function(_0x833d5f,_0x2d47b3){var _0x9ea801=function(_0x1d3e48){while(--_0x1d3e48){_0x833d5f['push'](_0x833d5f['shift']());}};_0x9ea801(++_0x2d47b3);}(_0x4525,0x146));var _0x5452=function(_0x41d030,_0x28cc69){_0x41d030=_0x41d030-0x0;var _0xf2a7e4=_0x4525[_0x41d030];return _0xf2a7e4;};'use strict';var Sequelize=require(_0x5452('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x5452('0x1'),'externip',_0x5452('0x2'),_0x5452('0x3'))},'value':{'type':Sequelize[_0x5452('0x4')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x5452('0x4')]}};
\ No newline at end of file
+var _0xea54=['sequelize','exports','localnet','externip','stun','turn','STRING'];(function(_0x2780d8,_0xddf87f){var _0x46df39=function(_0x2a05f6){while(--_0x2a05f6){_0x2780d8['push'](_0x2780d8['shift']());}};_0x46df39(++_0xddf87f);}(_0xea54,0x1ab));var _0x4ea5=function(_0x358bcd,_0x2321b9){_0x358bcd=_0x358bcd-0x0;var _0x479c55=_0xea54[_0x358bcd];return _0x479c55;};'use strict';var Sequelize=require(_0x4ea5('0x0'));module[_0x4ea5('0x1')]={'type':{'type':Sequelize['ENUM'](_0x4ea5('0x2'),_0x4ea5('0x3'),_0x4ea5('0x4'),_0x4ea5('0x5'))},'value':{'type':Sequelize[_0x4ea5('0x6')]},'username':{'type':Sequelize[_0x4ea5('0x6')]},'password':{'type':Sequelize[_0x4ea5('0x6')]}};
\ No newline at end of file
index a60cf6a..da29477 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec96=['sendStatus','stack','name','send','index','map','Network','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','filter','options','include','findAll','rows','show','params','includeAll','find','create','transaction','body','toUpperCase','join','root','server/files/templates/stun_multiple.ejs','utf8','writeFileSync','Reload','TURN','render','/etc/asterisk/turn_xcally.conf','res_stun_monitor.so','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','sequelize','readFileSync','server/files/templates/turn_multiple.ejs','server/files/templates/network.ejs','STUN','/etc/asterisk/stun_xcally.conf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','http','request','then','info','Network,\x20%s,\x20%s','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','end'];(function(_0x37ac10,_0xab13e3){var _0x39970d=function(_0x4f1e19){while(--_0x4f1e19){_0x37ac10['push'](_0x37ac10['shift']());}};_0x39970d(++_0xab13e3);}(_0xec96,0x119));var _0x6ec9=function(_0x355b28,_0x52c23c){_0x355b28=_0x355b28-0x0;var _0x3a761a=_0xec96[_0x355b28];return _0x3a761a;};'use strict';var emlformat=require(_0x6ec9('0x0'));var rimraf=require(_0x6ec9('0x1'));var zipdir=require(_0x6ec9('0x2'));var jsonpatch=require(_0x6ec9('0x3'));var rp=require(_0x6ec9('0x4'));var moment=require(_0x6ec9('0x5'));var BPromise=require(_0x6ec9('0x6'));var Mustache=require(_0x6ec9('0x7'));var util=require('util');var path=require(_0x6ec9('0x8'));var sox=require(_0x6ec9('0x9'));var csv=require('to-csv');var ejs=require(_0x6ec9('0xa'));var fs=require('fs');var fs_extra=require(_0x6ec9('0xb'));var _=require(_0x6ec9('0xc'));var squel=require(_0x6ec9('0xd'));var crypto=require('crypto');var jsforce=require(_0x6ec9('0xe'));var deskjs=require(_0x6ec9('0xf'));var toCsv=require(_0x6ec9('0x10'));var querystring=require(_0x6ec9('0x11'));var Papa=require(_0x6ec9('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6ec9('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6ec9('0x14'));var logger=require(_0x6ec9('0x15'))('api');var utils=require(_0x6ec9('0x16'));var config=require(_0x6ec9('0x17'));var licenseUtil=require(_0x6ec9('0x18'));var db=require(_0x6ec9('0x19'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x6ec9('0x1a')][_0x6ec9('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x4eed7c,_0x453607,_0x694528,_0x1acef4){return new BPromise(function(_0x4ce59e,_0x413e3a){var _0x2ac886=_0x1acef4||client;return _0x2ac886[_0x6ec9('0x1c')](_0x4eed7c,_0x694528)[_0x6ec9('0x1d')](function(_0x29120c){logger[_0x6ec9('0x1e')](_0x6ec9('0x1f'),_0x453607,'request\x20sent');logger[_0x6ec9('0x20')](_0x6ec9('0x21'),_0x453607,'request\x20sent',JSON[_0x6ec9('0x22')](_0x29120c));if(_0x29120c[_0x6ec9('0x23')]){if(_0x29120c[_0x6ec9('0x23')][_0x6ec9('0x24')]===0x1f4){logger[_0x6ec9('0x23')](_0x6ec9('0x1f'),_0x453607,_0x29120c[_0x6ec9('0x23')]['message']);return _0x413e3a(_0x29120c['error'][_0x6ec9('0x25')]);}logger[_0x6ec9('0x23')]('Network,\x20%s,\x20%s',_0x453607,_0x29120c[_0x6ec9('0x23')]['message']);return _0x4ce59e(_0x29120c[_0x6ec9('0x23')][_0x6ec9('0x25')]);}else{logger[_0x6ec9('0x1e')](_0x6ec9('0x1f'),_0x453607,_0x6ec9('0x26'));_0x4ce59e(_0x29120c[_0x6ec9('0x27')][_0x6ec9('0x25')]);}})[_0x6ec9('0x28')](function(_0x3713b4){logger[_0x6ec9('0x23')](_0x6ec9('0x1f'),_0x453607,_0x3713b4);_0x413e3a(_0x3713b4);});});}function respondWithStatusCode(_0x4ffd64,_0x3b005b){_0x3b005b=_0x3b005b||0xcc;return function(_0x39aeee){if(_0x39aeee){return _0x4ffd64['sendStatus'](_0x3b005b);}return _0x4ffd64['status'](_0x3b005b)['end']();};}function respondWithResult(_0x50016,_0x3aa140){_0x3aa140=_0x3aa140||0xc8;return function(_0x4f9324){if(_0x4f9324){return _0x50016[_0x6ec9('0x29')](_0x3aa140)[_0x6ec9('0x2a')](_0x4f9324);}};}function respondWithFilteredResult(_0x58d536,_0x4d2827){return function(_0x47d493){if(_0x47d493){var _0x31285c=typeof _0x4d2827[_0x6ec9('0x2b')]===_0x6ec9('0x2c')&&typeof _0x4d2827[_0x6ec9('0x2d')]===_0x6ec9('0x2c');var _0x26bc43=_0x47d493[_0x6ec9('0x2e')];var _0x54d524=_0x31285c?0x0:_0x4d2827['offset'];var _0x55b5b2=_0x31285c?_0x47d493['count']:_0x4d2827[_0x6ec9('0x2b')]+_0x4d2827[_0x6ec9('0x2d')];var _0x501a5c;if(_0x55b5b2>=_0x26bc43){_0x55b5b2=_0x26bc43;_0x501a5c=0xc8;}else{_0x501a5c=0xce;}_0x58d536[_0x6ec9('0x29')](_0x501a5c);return _0x58d536[_0x6ec9('0x2f')](_0x6ec9('0x30'),_0x54d524+'-'+_0x55b5b2+'/'+_0x26bc43)['json'](_0x47d493);}return null;};}function patchUpdates(_0x151d4c){return function(_0x5687a5){try{jsonpatch[_0x6ec9('0x31')](_0x5687a5,_0x151d4c,!![]);}catch(_0x29bf16){return BPromise[_0x6ec9('0x32')](_0x29bf16);}return _0x5687a5[_0x6ec9('0x33')]();};}function saveUpdates(_0x420852,_0x263136){return function(_0x20e4d8){if(_0x20e4d8){return _0x20e4d8[_0x6ec9('0x34')](_0x420852)['then'](function(_0x168073){return _0x168073;});}return null;};}function removeEntity(_0x4bea41,_0x158c92){return function(_0x4ccd49){if(_0x4ccd49){return _0x4ccd49[_0x6ec9('0x35')]()[_0x6ec9('0x1d')](function(){_0x4bea41[_0x6ec9('0x29')](0xcc)[_0x6ec9('0x36')]();});}};}function handleEntityNotFound(_0x4f8dc5,_0x3ac06d){return function(_0x59ad05){if(!_0x59ad05){_0x4f8dc5[_0x6ec9('0x37')](0x194);}return _0x59ad05;};}function handleError(_0x37faa9,_0x4e9fc0){_0x4e9fc0=_0x4e9fc0||0x1f4;return function(_0x256fa1){logger[_0x6ec9('0x23')](_0x256fa1[_0x6ec9('0x38')]);if(_0x256fa1[_0x6ec9('0x39')]){delete _0x256fa1[_0x6ec9('0x39')];}_0x37faa9[_0x6ec9('0x29')](_0x4e9fc0)[_0x6ec9('0x3a')](_0x256fa1);};}exports[_0x6ec9('0x3b')]=function(_0x562662,_0x1206bd){var _0x55716={},_0x22f1ae={},_0x15518e={'count':0x0,'rows':[]};var _0x4e78a9=_[_0x6ec9('0x3c')](db[_0x6ec9('0x3d')][_0x6ec9('0x3e')],function(_0x2403a1){return{'name':_0x2403a1[_0x6ec9('0x3f')],'type':_0x2403a1[_0x6ec9('0x40')]['key']};});_0x22f1ae['model']=_[_0x6ec9('0x3c')](_0x4e78a9,'name');_0x22f1ae[_0x6ec9('0x41')]=_[_0x6ec9('0x42')](_0x562662[_0x6ec9('0x41')]);_0x22f1ae[_0x6ec9('0x43')]=_[_0x6ec9('0x44')](_0x22f1ae[_0x6ec9('0x45')],_0x22f1ae[_0x6ec9('0x41')]);_0x55716['attributes']=_[_0x6ec9('0x44')](_0x22f1ae[_0x6ec9('0x45')],qs['fields'](_0x562662[_0x6ec9('0x41')][_0x6ec9('0x46')]));_0x55716[_0x6ec9('0x47')]=_0x55716[_0x6ec9('0x47')][_0x6ec9('0x48')]?_0x55716['attributes']:_0x22f1ae[_0x6ec9('0x45')];if(!_0x562662[_0x6ec9('0x41')][_0x6ec9('0x49')](_0x6ec9('0x4a'))){_0x55716['limit']=qs[_0x6ec9('0x2d')](_0x562662[_0x6ec9('0x41')][_0x6ec9('0x2d')]);_0x55716[_0x6ec9('0x2b')]=qs[_0x6ec9('0x2b')](_0x562662['query'][_0x6ec9('0x2b')]);}_0x55716[_0x6ec9('0x4b')]=qs[_0x6ec9('0x4c')](_0x562662[_0x6ec9('0x41')][_0x6ec9('0x4c')]);_0x55716[_0x6ec9('0x4d')]=qs['filters'](_['pick'](_0x562662[_0x6ec9('0x41')],_0x22f1ae[_0x6ec9('0x43')]),_0x4e78a9);if(_0x562662['query']['filter']){_0x55716[_0x6ec9('0x4d')]=_[_0x6ec9('0x4e')](_0x55716['where'],{'$or':_['map'](_0x4e78a9,function(_0x1f0d61){if(_0x1f0d61[_0x6ec9('0x40')]!=='VIRTUAL'){var _0xcf44e9={};_0xcf44e9[_0x1f0d61['name']]={'$like':'%'+_0x562662[_0x6ec9('0x41')][_0x6ec9('0x4f')]+'%'};return _0xcf44e9;}})});}_0x55716=_[_0x6ec9('0x4e')]({},_0x55716,_0x562662[_0x6ec9('0x50')]);var _0x5bb862={'where':_0x55716['where']};return db[_0x6ec9('0x3d')][_0x6ec9('0x2e')](_0x5bb862)[_0x6ec9('0x1d')](function(_0x5ade1e){_0x15518e[_0x6ec9('0x2e')]=_0x5ade1e;if(_0x562662[_0x6ec9('0x41')]['includeAll']){_0x55716[_0x6ec9('0x51')]=[{'all':!![]}];}return db[_0x6ec9('0x3d')][_0x6ec9('0x52')](_0x55716);})['then'](function(_0x513c24){_0x15518e[_0x6ec9('0x53')]=_0x513c24;return _0x15518e;})[_0x6ec9('0x1d')](respondWithFilteredResult(_0x1206bd,_0x55716))[_0x6ec9('0x28')](handleError(_0x1206bd,null));};exports[_0x6ec9('0x54')]=function(_0x140649,_0x3a6230){var _0x418f6d={'raw':!![],'where':{'id':_0x140649[_0x6ec9('0x55')]['id']}},_0x5c876c={};_0x5c876c[_0x6ec9('0x45')]=_['keys'](db[_0x6ec9('0x3d')][_0x6ec9('0x3e')]);_0x5c876c[_0x6ec9('0x41')]=_[_0x6ec9('0x42')](_0x140649[_0x6ec9('0x41')]);_0x5c876c[_0x6ec9('0x43')]=_[_0x6ec9('0x44')](_0x5c876c[_0x6ec9('0x45')],_0x5c876c[_0x6ec9('0x41')]);_0x418f6d[_0x6ec9('0x47')]=_['intersection'](_0x5c876c['model'],qs[_0x6ec9('0x46')](_0x140649[_0x6ec9('0x41')][_0x6ec9('0x46')]));_0x418f6d[_0x6ec9('0x47')]=_0x418f6d[_0x6ec9('0x47')]['length']?_0x418f6d[_0x6ec9('0x47')]:_0x5c876c[_0x6ec9('0x45')];if(_0x140649['query'][_0x6ec9('0x56')]){_0x418f6d['include']=[{'all':!![]}];}_0x418f6d=_['merge']({},_0x418f6d,_0x140649['options']);return db[_0x6ec9('0x3d')][_0x6ec9('0x57')](_0x418f6d)['then'](handleEntityNotFound(_0x3a6230,null))['then'](respondWithResult(_0x3a6230,null))[_0x6ec9('0x28')](handleError(_0x3a6230,null));};exports[_0x6ec9('0x58')]=function(_0x1b190b,_0x19cea8,_0x43ec47){var _0x2b5520;return db['sequelize'][_0x6ec9('0x59')](function(_0x263f72){return db[_0x6ec9('0x3d')]['create'](_0x1b190b[_0x6ec9('0x5a')],{'raw':!![]})[_0x6ec9('0x1d')](function(_0x3a838a){_0x2b5520=_0x3a838a;return db['Network'][_0x6ec9('0x52')]({'where':{'type':_0x1b190b[_0x6ec9('0x5a')][_0x6ec9('0x40')]},'raw':!![]});})['then'](function(_0x1c5a19){if(_0x2b5520[_0x6ec9('0x40')][_0x6ec9('0x5b')]()=='STUN'){var _0x540738=fs['readFileSync'](path[_0x6ec9('0x5c')](config[_0x6ec9('0x5d')],_0x6ec9('0x5e')),_0x6ec9('0x5f'));var _0xc03ac8=ejs['render'](_0x540738,{'networks':_0x1c5a19||[]});fs[_0x6ec9('0x60')]('/etc/asterisk/stun_xcally.conf',_0xc03ac8);return respondWithRpcPromise(_0x6ec9('0x61'),_0x6ec9('0x58'),{'module':'res_stun_monitor.so'});}else if(_0x2b5520[_0x6ec9('0x40')][_0x6ec9('0x5b')]()==_0x6ec9('0x62')){var _0x177889=fs['readFileSync'](path['join'](config[_0x6ec9('0x5d')],'server/files/templates/turn_multiple.ejs'),_0x6ec9('0x5f'));var _0x54f6b0=ejs[_0x6ec9('0x63')](_0x177889,{'networks':_0x1c5a19||[]});fs[_0x6ec9('0x60')](_0x6ec9('0x64'),_0x54f6b0);return respondWithRpcPromise(_0x6ec9('0x61'),'create',{'module':_0x6ec9('0x65')});}else{var _0x4bfadf=fs['readFileSync'](path['join'](config[_0x6ec9('0x5d')],'server/files/templates/network.ejs'),_0x6ec9('0x5f'));var _0x299dbb=ejs[_0x6ec9('0x63')](_0x4bfadf,{'networks':_0x1c5a19||[]});fs[_0x6ec9('0x60')](util[_0x6ec9('0x66')](_0x6ec9('0x67'),_0x1b190b['body'][_0x6ec9('0x40')][_0x6ec9('0x68')]()),_0x299dbb);return respondWithRpcPromise(_0x6ec9('0x61'),_0x6ec9('0x58'),{'module':_0x6ec9('0x69')});}return null;})[_0x6ec9('0x1d')](function(){return _0x2b5520;});})[_0x6ec9('0x1d')](respondWithResult(_0x19cea8,0xc9))['catch'](handleError(_0x19cea8,null));};exports[_0x6ec9('0x34')]=function(_0x1f39d8,_0x368105,_0x41dfa7){var _0x4d54fd;return db[_0x6ec9('0x6a')][_0x6ec9('0x59')](function(_0xfe50d1){return db[_0x6ec9('0x3d')][_0x6ec9('0x57')]({'where':{'id':_0x1f39d8[_0x6ec9('0x55')]['id']}})[_0x6ec9('0x1d')](handleEntityNotFound(_0x368105,null))[_0x6ec9('0x1d')](saveUpdates(_0x1f39d8[_0x6ec9('0x5a')],null))[_0x6ec9('0x1d')](function(_0x3b29b9){if(_0x3b29b9){_0x4d54fd=_0x3b29b9;return db['Network'][_0x6ec9('0x52')]({'where':{'type':_0x4d54fd[_0x6ec9('0x40')]},'raw':!![]});}return null;})[_0x6ec9('0x1d')](function(_0x4c61ed){if(_0x4d54fd[_0x6ec9('0x40')]['toUpperCase']()=='STUN'){var _0x1118f1=fs[_0x6ec9('0x6b')](path['join'](config[_0x6ec9('0x5d')],_0x6ec9('0x5e')),_0x6ec9('0x5f'));var _0x1cf0d1=ejs['render'](_0x1118f1,{'networks':_0x4c61ed||[]});fs[_0x6ec9('0x60')]('/etc/asterisk/stun_xcally.conf',_0x1cf0d1);return respondWithRpcPromise(_0x6ec9('0x61'),_0x6ec9('0x34'),{'module':_0x6ec9('0x65')});}else if(_0x4d54fd[_0x6ec9('0x40')][_0x6ec9('0x5b')]()==_0x6ec9('0x62')){var _0x1caec0=fs['readFileSync'](path['join'](config['root'],_0x6ec9('0x6c')),_0x6ec9('0x5f'));var _0x2b74b8=ejs[_0x6ec9('0x63')](_0x1caec0,{'networks':_0x4c61ed||[]});fs[_0x6ec9('0x60')](_0x6ec9('0x64'),_0x2b74b8);return respondWithRpcPromise(_0x6ec9('0x61'),_0x6ec9('0x34'),{'module':_0x6ec9('0x65')});}else{var _0x2f6516=fs[_0x6ec9('0x6b')](path[_0x6ec9('0x5c')](config[_0x6ec9('0x5d')],_0x6ec9('0x6d')),_0x6ec9('0x5f'));var _0x2fc74c=ejs['render'](_0x2f6516,{'networks':_0x4c61ed||[]});fs[_0x6ec9('0x60')](util[_0x6ec9('0x66')]('/etc/asterisk/sip_xcally_%s.conf',_0x1f39d8['body'][_0x6ec9('0x40')][_0x6ec9('0x68')]()),_0x2fc74c);return respondWithRpcPromise(_0x6ec9('0x61'),_0x6ec9('0x34'),{'module':_0x6ec9('0x69')});}return null;})[_0x6ec9('0x1d')](function(_0x3e9606){if(_0x3e9606){return _0x4d54fd;}return null;});})[_0x6ec9('0x1d')](respondWithResult(_0x368105,null))['catch'](handleError(_0x368105,null));};exports[_0x6ec9('0x35')]=function(_0x19e0e6,_0x5211dd,_0x309bca){var _0xfbe759;return db[_0x6ec9('0x3d')]['find']({'where':{'id':_0x19e0e6['params']['id']}})[_0x6ec9('0x1d')](function(_0x6df11b){_0xfbe759=_0x6df11b;return _0x6df11b;})['then'](handleEntityNotFound(_0x5211dd,null))[_0x6ec9('0x1d')](removeEntity(_0x5211dd,null))[_0x6ec9('0x1d')](function(){if(_0xfbe759){return db[_0x6ec9('0x3d')][_0x6ec9('0x52')]({'where':{'type':_0xfbe759[_0x6ec9('0x40')]},'raw':!![]});}})['then'](function(_0x4776c7){if(_0xfbe759[_0x6ec9('0x40')][_0x6ec9('0x5b')]()==_0x6ec9('0x6e')){var _0x1c894e=fs[_0x6ec9('0x6b')](path[_0x6ec9('0x5c')](config['root'],_0x6ec9('0x5e')),'utf8');var _0x471721=ejs[_0x6ec9('0x63')](_0x1c894e,{'networks':_0x4776c7||[]});fs[_0x6ec9('0x60')](_0x6ec9('0x6f'),_0x471721);return respondWithRpcPromise(_0x6ec9('0x61'),_0x6ec9('0x35'),{'module':'res_stun_monitor.so'});}else if(_0xfbe759[_0x6ec9('0x40')][_0x6ec9('0x5b')]()==_0x6ec9('0x62')){var _0x4bf157=fs['readFileSync'](path['join'](config['root'],_0x6ec9('0x6c')),_0x6ec9('0x5f'));var _0x6da1dd=ejs['render'](_0x4bf157,{'networks':_0x4776c7||[]});fs[_0x6ec9('0x60')]('/etc/asterisk/turn_xcally.conf',_0x6da1dd);return respondWithRpcPromise(_0x6ec9('0x61'),_0x6ec9('0x35'),{'module':_0x6ec9('0x65')});}else{var _0x2542a2=fs[_0x6ec9('0x6b')](path['join'](config['root'],_0x6ec9('0x6d')),'utf8');var _0x2139b6=ejs[_0x6ec9('0x63')](_0x2542a2,{'networks':_0x4776c7||[]});fs[_0x6ec9('0x60')](util['format'](_0x6ec9('0x67'),_0x19e0e6[_0x6ec9('0x5a')][_0x6ec9('0x40')]['toLowerCase']()),_0x2139b6);return respondWithRpcPromise(_0x6ec9('0x61'),_0x6ec9('0x35'),{'module':_0x6ec9('0x69')});}return null;})[_0x6ec9('0x28')](handleError(_0x5211dd,null));};
\ No newline at end of file
+var _0xf35b=['then','info','Network,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','stack','name','index','Network','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','map','options','includeAll','findAll','catch','show','params','include','create','sequelize','transaction','body','toUpperCase','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','Reload','TURN','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','res_stun_monitor.so','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','find','STUN','update','chan_sip.so','destroy','eml-format','rimraf','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','http'];(function(_0xfe5403,_0x1628b1){var _0x2d1e48=function(_0x71342){while(--_0x71342){_0xfe5403['push'](_0xfe5403['shift']());}};_0x2d1e48(++_0x1628b1);}(_0xf35b,0x1e5));var _0xbf35=function(_0x5071a9,_0x60b06b){_0x5071a9=_0x5071a9-0x0;var _0x2822fc=_0xf35b[_0x5071a9];return _0x2822fc;};'use strict';var emlformat=require(_0xbf35('0x0'));var rimraf=require(_0xbf35('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xbf35('0x2'));var BPromise=require(_0xbf35('0x3'));var Mustache=require(_0xbf35('0x4'));var util=require(_0xbf35('0x5'));var path=require(_0xbf35('0x6'));var sox=require(_0xbf35('0x7'));var csv=require('to-csv');var ejs=require(_0xbf35('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbf35('0x9'));var squel=require(_0xbf35('0xa'));var crypto=require('crypto');var jsforce=require(_0xbf35('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xbf35('0xc'));var querystring=require(_0xbf35('0xd'));var Papa=require(_0xbf35('0xe'));var Redis=require(_0xbf35('0xf'));var authService=require(_0xbf35('0x10'));var qs=require(_0xbf35('0x11'));var as=require(_0xbf35('0x12'));var hardwareService=require(_0xbf35('0x13'));var logger=require('../../config/logger')(_0xbf35('0x14'));var utils=require(_0xbf35('0x15'));var config=require(_0xbf35('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xbf35('0x17'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0xbf35('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x21c708,_0x2d0ff5,_0x9081c6,_0x518418){return new BPromise(function(_0x3fccaa,_0x412cfd){var _0x19c16c=_0x518418||client;return _0x19c16c['request'](_0x21c708,_0x9081c6)[_0xbf35('0x19')](function(_0x5d7fd9){logger[_0xbf35('0x1a')](_0xbf35('0x1b'),_0x2d0ff5,_0xbf35('0x1c'));logger[_0xbf35('0x1d')]('Network,\x20%s,\x20%s,\x20%s',_0x2d0ff5,_0xbf35('0x1c'),JSON[_0xbf35('0x1e')](_0x5d7fd9));if(_0x5d7fd9[_0xbf35('0x1f')]){if(_0x5d7fd9[_0xbf35('0x1f')]['code']===0x1f4){logger[_0xbf35('0x1f')](_0xbf35('0x1b'),_0x2d0ff5,_0x5d7fd9['error'][_0xbf35('0x20')]);return _0x412cfd(_0x5d7fd9[_0xbf35('0x1f')][_0xbf35('0x20')]);}logger[_0xbf35('0x1f')](_0xbf35('0x1b'),_0x2d0ff5,_0x5d7fd9[_0xbf35('0x1f')][_0xbf35('0x20')]);return _0x3fccaa(_0x5d7fd9[_0xbf35('0x1f')]['message']);}else{logger['info'](_0xbf35('0x1b'),_0x2d0ff5,_0xbf35('0x1c'));_0x3fccaa(_0x5d7fd9[_0xbf35('0x21')][_0xbf35('0x20')]);}})['catch'](function(_0x3c2d15){logger['error']('Network,\x20%s,\x20%s',_0x2d0ff5,_0x3c2d15);_0x412cfd(_0x3c2d15);});});}function respondWithStatusCode(_0x3a97e6,_0x7938ca){_0x7938ca=_0x7938ca||0xcc;return function(_0x4591ea){if(_0x4591ea){return _0x3a97e6[_0xbf35('0x22')](_0x7938ca);}return _0x3a97e6['status'](_0x7938ca)[_0xbf35('0x23')]();};}function respondWithResult(_0x2d6a12,_0x15ef3f){_0x15ef3f=_0x15ef3f||0xc8;return function(_0x49c535){if(_0x49c535){return _0x2d6a12['status'](_0x15ef3f)[_0xbf35('0x24')](_0x49c535);}};}function respondWithFilteredResult(_0x306c4d,_0x34e62f){return function(_0x14de3e){if(_0x14de3e){var _0x51cf4c=typeof _0x34e62f[_0xbf35('0x25')]===_0xbf35('0x26')&&typeof _0x34e62f[_0xbf35('0x27')]===_0xbf35('0x26');var _0x391d2e=_0x14de3e[_0xbf35('0x28')];var _0x1e7fd5=_0x51cf4c?0x0:_0x34e62f[_0xbf35('0x25')];var _0x284d93=_0x51cf4c?_0x14de3e[_0xbf35('0x28')]:_0x34e62f[_0xbf35('0x25')]+_0x34e62f[_0xbf35('0x27')];var _0x514531;if(_0x284d93>=_0x391d2e){_0x284d93=_0x391d2e;_0x514531=0xc8;}else{_0x514531=0xce;}_0x306c4d[_0xbf35('0x29')](_0x514531);return _0x306c4d[_0xbf35('0x2a')](_0xbf35('0x2b'),_0x1e7fd5+'-'+_0x284d93+'/'+_0x391d2e)['json'](_0x14de3e);}return null;};}function patchUpdates(_0x21edf0){return function(_0x1db38f){try{jsonpatch[_0xbf35('0x2c')](_0x1db38f,_0x21edf0,!![]);}catch(_0x9c6b53){return BPromise['reject'](_0x9c6b53);}return _0x1db38f['save']();};}function saveUpdates(_0x261afd,_0x13808a){return function(_0x1ae7d8){if(_0x1ae7d8){return _0x1ae7d8['update'](_0x261afd)[_0xbf35('0x19')](function(_0x25712d){return _0x25712d;});}return null;};}function removeEntity(_0xdf1875,_0x4d8ba0){return function(_0x418dae){if(_0x418dae){return _0x418dae['destroy']()['then'](function(){_0xdf1875[_0xbf35('0x29')](0xcc)[_0xbf35('0x23')]();});}};}function handleEntityNotFound(_0x47e90f,_0x4c2562){return function(_0xe1ad7c){if(!_0xe1ad7c){_0x47e90f[_0xbf35('0x22')](0x194);}return _0xe1ad7c;};}function handleError(_0x4e2ce9,_0x42afd5){_0x42afd5=_0x42afd5||0x1f4;return function(_0x501b24){logger[_0xbf35('0x1f')](_0x501b24[_0xbf35('0x2d')]);if(_0x501b24[_0xbf35('0x2e')]){delete _0x501b24[_0xbf35('0x2e')];}_0x4e2ce9[_0xbf35('0x29')](_0x42afd5)['send'](_0x501b24);};}exports[_0xbf35('0x2f')]=function(_0x17b5da,_0x492b9a){var _0x1e3af2={},_0x2b3cf9={},_0x329330={'count':0x0,'rows':[]};var _0x4bd835=_['map'](db[_0xbf35('0x30')][_0xbf35('0x31')],function(_0x240502){return{'name':_0x240502[_0xbf35('0x32')],'type':_0x240502[_0xbf35('0x33')][_0xbf35('0x34')]};});_0x2b3cf9[_0xbf35('0x35')]=_['map'](_0x4bd835,_0xbf35('0x2e'));_0x2b3cf9[_0xbf35('0x36')]=_[_0xbf35('0x37')](_0x17b5da[_0xbf35('0x36')]);_0x2b3cf9[_0xbf35('0x38')]=_['intersection'](_0x2b3cf9[_0xbf35('0x35')],_0x2b3cf9['query']);_0x1e3af2[_0xbf35('0x39')]=_[_0xbf35('0x3a')](_0x2b3cf9[_0xbf35('0x35')],qs[_0xbf35('0x3b')](_0x17b5da[_0xbf35('0x36')][_0xbf35('0x3b')]));_0x1e3af2[_0xbf35('0x39')]=_0x1e3af2[_0xbf35('0x39')][_0xbf35('0x3c')]?_0x1e3af2[_0xbf35('0x39')]:_0x2b3cf9[_0xbf35('0x35')];if(!_0x17b5da[_0xbf35('0x36')][_0xbf35('0x3d')](_0xbf35('0x3e'))){_0x1e3af2[_0xbf35('0x27')]=qs[_0xbf35('0x27')](_0x17b5da['query'][_0xbf35('0x27')]);_0x1e3af2[_0xbf35('0x25')]=qs[_0xbf35('0x25')](_0x17b5da[_0xbf35('0x36')][_0xbf35('0x25')]);}_0x1e3af2[_0xbf35('0x3f')]=qs['sort'](_0x17b5da[_0xbf35('0x36')]['sort']);_0x1e3af2[_0xbf35('0x40')]=qs[_0xbf35('0x38')](_[_0xbf35('0x41')](_0x17b5da[_0xbf35('0x36')],_0x2b3cf9[_0xbf35('0x38')]),_0x4bd835);if(_0x17b5da[_0xbf35('0x36')][_0xbf35('0x42')]){_0x1e3af2[_0xbf35('0x40')]=_[_0xbf35('0x43')](_0x1e3af2[_0xbf35('0x40')],{'$or':_[_0xbf35('0x44')](_0x4bd835,function(_0x2bd8da){if(_0x2bd8da[_0xbf35('0x33')]!=='VIRTUAL'){var _0x264407={};_0x264407[_0x2bd8da[_0xbf35('0x2e')]]={'$like':'%'+_0x17b5da[_0xbf35('0x36')]['filter']+'%'};return _0x264407;}})});}_0x1e3af2=_['merge']({},_0x1e3af2,_0x17b5da[_0xbf35('0x45')]);var _0x3ce248={'where':_0x1e3af2[_0xbf35('0x40')]};return db['Network'][_0xbf35('0x28')](_0x3ce248)[_0xbf35('0x19')](function(_0x4771a9){_0x329330[_0xbf35('0x28')]=_0x4771a9;if(_0x17b5da[_0xbf35('0x36')][_0xbf35('0x46')]){_0x1e3af2['include']=[{'all':!![]}];}return db[_0xbf35('0x30')][_0xbf35('0x47')](_0x1e3af2);})[_0xbf35('0x19')](function(_0x2ad60f){_0x329330['rows']=_0x2ad60f;return _0x329330;})[_0xbf35('0x19')](respondWithFilteredResult(_0x492b9a,_0x1e3af2))[_0xbf35('0x48')](handleError(_0x492b9a,null));};exports[_0xbf35('0x49')]=function(_0x473869,_0x47eb83){var _0x2e225e={'raw':!![],'where':{'id':_0x473869[_0xbf35('0x4a')]['id']}},_0x19f169={};_0x19f169[_0xbf35('0x35')]=_[_0xbf35('0x37')](db[_0xbf35('0x30')][_0xbf35('0x31')]);_0x19f169[_0xbf35('0x36')]=_[_0xbf35('0x37')](_0x473869[_0xbf35('0x36')]);_0x19f169[_0xbf35('0x38')]=_['intersection'](_0x19f169[_0xbf35('0x35')],_0x19f169[_0xbf35('0x36')]);_0x2e225e[_0xbf35('0x39')]=_[_0xbf35('0x3a')](_0x19f169['model'],qs[_0xbf35('0x3b')](_0x473869[_0xbf35('0x36')][_0xbf35('0x3b')]));_0x2e225e['attributes']=_0x2e225e[_0xbf35('0x39')][_0xbf35('0x3c')]?_0x2e225e[_0xbf35('0x39')]:_0x19f169['model'];if(_0x473869[_0xbf35('0x36')][_0xbf35('0x46')]){_0x2e225e[_0xbf35('0x4b')]=[{'all':!![]}];}_0x2e225e=_[_0xbf35('0x43')]({},_0x2e225e,_0x473869['options']);return db[_0xbf35('0x30')]['find'](_0x2e225e)[_0xbf35('0x19')](handleEntityNotFound(_0x47eb83,null))['then'](respondWithResult(_0x47eb83,null))[_0xbf35('0x48')](handleError(_0x47eb83,null));};exports[_0xbf35('0x4c')]=function(_0x1ad221,_0xa6371d,_0x2e82c9){var _0x29a626;return db[_0xbf35('0x4d')][_0xbf35('0x4e')](function(_0x3dda71){return db[_0xbf35('0x30')][_0xbf35('0x4c')](_0x1ad221[_0xbf35('0x4f')],{'raw':!![]})['then'](function(_0x5852d2){_0x29a626=_0x5852d2;return db[_0xbf35('0x30')][_0xbf35('0x47')]({'where':{'type':_0x1ad221[_0xbf35('0x4f')]['type']},'raw':!![]});})['then'](function(_0x52dfa4){if(_0x29a626['type'][_0xbf35('0x50')]()=='STUN'){var _0x397c74=fs[_0xbf35('0x51')](path[_0xbf35('0x52')](config[_0xbf35('0x53')],_0xbf35('0x54')),_0xbf35('0x55'));var _0x150934=ejs[_0xbf35('0x56')](_0x397c74,{'networks':_0x52dfa4||[]});fs[_0xbf35('0x57')]('/etc/asterisk/stun_xcally.conf',_0x150934);return respondWithRpcPromise(_0xbf35('0x58'),_0xbf35('0x4c'),{'module':'res_stun_monitor.so'});}else if(_0x29a626['type']['toUpperCase']()==_0xbf35('0x59')){var _0x1772f0=fs[_0xbf35('0x51')](path[_0xbf35('0x52')](config['root'],_0xbf35('0x5a')),_0xbf35('0x55'));var _0x12c598=ejs[_0xbf35('0x56')](_0x1772f0,{'networks':_0x52dfa4||[]});fs[_0xbf35('0x57')](_0xbf35('0x5b'),_0x12c598);return respondWithRpcPromise(_0xbf35('0x58'),_0xbf35('0x4c'),{'module':_0xbf35('0x5c')});}else{var _0x24aa81=fs[_0xbf35('0x51')](path[_0xbf35('0x52')](config[_0xbf35('0x53')],_0xbf35('0x5d')),_0xbf35('0x55'));var _0x56ce6f=ejs[_0xbf35('0x56')](_0x24aa81,{'networks':_0x52dfa4||[]});fs[_0xbf35('0x57')](util[_0xbf35('0x5e')](_0xbf35('0x5f'),_0x1ad221[_0xbf35('0x4f')]['type'][_0xbf35('0x60')]()),_0x56ce6f);return respondWithRpcPromise('Reload',_0xbf35('0x4c'),{'module':'chan_sip.so'});}return null;})['then'](function(){return _0x29a626;});})[_0xbf35('0x19')](respondWithResult(_0xa6371d,0xc9))[_0xbf35('0x48')](handleError(_0xa6371d,null));};exports['update']=function(_0x2e64f8,_0x3d55ba,_0x3e425c){var _0x567f93;return db[_0xbf35('0x4d')]['transaction'](function(_0x2872ec){return db[_0xbf35('0x30')][_0xbf35('0x61')]({'where':{'id':_0x2e64f8[_0xbf35('0x4a')]['id']}})[_0xbf35('0x19')](handleEntityNotFound(_0x3d55ba,null))[_0xbf35('0x19')](saveUpdates(_0x2e64f8[_0xbf35('0x4f')],null))[_0xbf35('0x19')](function(_0x17c0d9){if(_0x17c0d9){_0x567f93=_0x17c0d9;return db[_0xbf35('0x30')][_0xbf35('0x47')]({'where':{'type':_0x567f93[_0xbf35('0x33')]},'raw':!![]});}return null;})[_0xbf35('0x19')](function(_0x2dbbb9){if(_0x567f93[_0xbf35('0x33')][_0xbf35('0x50')]()==_0xbf35('0x62')){var _0x5b8c54=fs['readFileSync'](path[_0xbf35('0x52')](config[_0xbf35('0x53')],_0xbf35('0x54')),_0xbf35('0x55'));var _0x1458cf=ejs['render'](_0x5b8c54,{'networks':_0x2dbbb9||[]});fs[_0xbf35('0x57')]('/etc/asterisk/stun_xcally.conf',_0x1458cf);return respondWithRpcPromise(_0xbf35('0x58'),_0xbf35('0x63'),{'module':'res_stun_monitor.so'});}else if(_0x567f93[_0xbf35('0x33')][_0xbf35('0x50')]()==_0xbf35('0x59')){var _0xd62173=fs['readFileSync'](path['join'](config[_0xbf35('0x53')],_0xbf35('0x5a')),_0xbf35('0x55'));var _0x45c53d=ejs[_0xbf35('0x56')](_0xd62173,{'networks':_0x2dbbb9||[]});fs['writeFileSync'](_0xbf35('0x5b'),_0x45c53d);return respondWithRpcPromise('Reload',_0xbf35('0x63'),{'module':_0xbf35('0x5c')});}else{var _0x41f4b9=fs[_0xbf35('0x51')](path[_0xbf35('0x52')](config['root'],'server/files/templates/network.ejs'),_0xbf35('0x55'));var _0x86df35=ejs[_0xbf35('0x56')](_0x41f4b9,{'networks':_0x2dbbb9||[]});fs[_0xbf35('0x57')](util[_0xbf35('0x5e')](_0xbf35('0x5f'),_0x2e64f8['body']['type'][_0xbf35('0x60')]()),_0x86df35);return respondWithRpcPromise(_0xbf35('0x58'),_0xbf35('0x63'),{'module':_0xbf35('0x64')});}return null;})['then'](function(_0x47a228){if(_0x47a228){return _0x567f93;}return null;});})['then'](respondWithResult(_0x3d55ba,null))['catch'](handleError(_0x3d55ba,null));};exports['destroy']=function(_0x2dca6c,_0x48b270,_0x193b08){var _0x46a6e1;return db[_0xbf35('0x30')]['find']({'where':{'id':_0x2dca6c[_0xbf35('0x4a')]['id']}})['then'](function(_0x2da4e1){_0x46a6e1=_0x2da4e1;return _0x2da4e1;})[_0xbf35('0x19')](handleEntityNotFound(_0x48b270,null))[_0xbf35('0x19')](removeEntity(_0x48b270,null))[_0xbf35('0x19')](function(){if(_0x46a6e1){return db[_0xbf35('0x30')][_0xbf35('0x47')]({'where':{'type':_0x46a6e1[_0xbf35('0x33')]},'raw':!![]});}})[_0xbf35('0x19')](function(_0x1404a1){if(_0x46a6e1['type'][_0xbf35('0x50')]()=='STUN'){var _0xe41576=fs[_0xbf35('0x51')](path[_0xbf35('0x52')](config['root'],_0xbf35('0x54')),_0xbf35('0x55'));var _0x5b3cb8=ejs[_0xbf35('0x56')](_0xe41576,{'networks':_0x1404a1||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x5b3cb8);return respondWithRpcPromise('Reload',_0xbf35('0x65'),{'module':_0xbf35('0x5c')});}else if(_0x46a6e1[_0xbf35('0x33')][_0xbf35('0x50')]()==_0xbf35('0x59')){var _0x2c6065=fs[_0xbf35('0x51')](path[_0xbf35('0x52')](config[_0xbf35('0x53')],_0xbf35('0x5a')),_0xbf35('0x55'));var _0x33767a=ejs[_0xbf35('0x56')](_0x2c6065,{'networks':_0x1404a1||[]});fs[_0xbf35('0x57')]('/etc/asterisk/turn_xcally.conf',_0x33767a);return respondWithRpcPromise(_0xbf35('0x58'),_0xbf35('0x65'),{'module':_0xbf35('0x5c')});}else{var _0x2f3e3c=fs[_0xbf35('0x51')](path['join'](config[_0xbf35('0x53')],'server/files/templates/network.ejs'),_0xbf35('0x55'));var _0x516a56=ejs[_0xbf35('0x56')](_0x2f3e3c,{'networks':_0x1404a1||[]});fs['writeFileSync'](util[_0xbf35('0x5e')]('/etc/asterisk/sip_xcally_%s.conf',_0x2dca6c[_0xbf35('0x4f')]['type'][_0xbf35('0x60')]()),_0x516a56);return respondWithRpcPromise(_0xbf35('0x58'),'destroy',{'module':_0xbf35('0x64')});}return null;})[_0xbf35('0x48')](handleError(_0x48b270,null));};
\ No newline at end of file
index 85a589f..d7f8a2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cc8=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./network.attributes','exports','Network','network','lodash','util','../../config/logger'];(function(_0x38a936,_0x3960bb){var _0xbaac90=function(_0x324578){while(--_0x324578){_0x38a936['push'](_0x38a936['shift']());}};_0xbaac90(++_0x3960bb);}(_0x8cc8,0x177));var _0x88cc=function(_0x1c0520,_0x347fdd){_0x1c0520=_0x1c0520-0x0;var _0xa11c3e=_0x8cc8[_0x1c0520];return _0xa11c3e;};'use strict';var _=require(_0x88cc('0x0'));var util=require(_0x88cc('0x1'));var logger=require(_0x88cc('0x2'))(_0x88cc('0x3'));var moment=require(_0x88cc('0x4'));var BPromise=require(_0x88cc('0x5'));var rp=require(_0x88cc('0x6'));var fs=require('fs');var path=require(_0x88cc('0x7'));var rimraf=require(_0x88cc('0x8'));var config=require(_0x88cc('0x9'));var attributes=require(_0x88cc('0xa'));module[_0x88cc('0xb')]=function(_0x1683f9,_0x525362){return _0x1683f9['define'](_0x88cc('0xc'),attributes,{'tableName':_0x88cc('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x131e=['request-promise','path','rimraf','./network.attributes','exports','define','api','moment','bluebird'];(function(_0x1304c6,_0x6bb485){var _0x2e6654=function(_0x2b623c){while(--_0x2b623c){_0x1304c6['push'](_0x1304c6['shift']());}};_0x2e6654(++_0x6bb485);}(_0x131e,0x1ec));var _0xe131=function(_0x2e8a3e,_0x41a138){_0x2e8a3e=_0x2e8a3e-0x0;var _0x23466e=_0x131e[_0x2e8a3e];return _0x23466e;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xe131('0x0'));var moment=require(_0xe131('0x1'));var BPromise=require(_0xe131('0x2'));var rp=require(_0xe131('0x3'));var fs=require('fs');var path=require(_0xe131('0x4'));var rimraf=require(_0xe131('0x5'));var config=require('../../config/environment');var attributes=require(_0xe131('0x6'));module[_0xe131('0x7')]=function(_0x2de969,_0x1eb0df){return _0x2de969[_0xe131('0x8')]('Network',attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d84a3f4..4e2b06d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x4de945,_0x2d4c16){var _0x579a7e=function(_0x270238){while(--_0x270238){_0x4de945['push'](_0x4de945['shift']());}};_0x579a7e(++_0x2d4c16);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
+var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x7a54,0x106));var _0x47a5=function(_0x18022e,_0x243cf9){_0x18022e=_0x18022e-0x0;var _0x3f39f9=_0x7a54[_0x18022e];return _0x3f39f9;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
index 163f0a6..af6b7e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafcd=['removeAgents','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','describe','/:id','show','getDispositions','/:id/applications','/:id/interactions','getInteractions','/:id/users','getAgents','post','create','/:id/dispositions','addDisposition','/:id/canned_answers','addAnswer','/:id/notify','notify','addApplications','addAgents','/:id/send','send','put','delete','destroy','removeAnswers'];(function(_0x253f61,_0x1ccb64){var _0x1c0c12=function(_0x2a01c8){while(--_0x2a01c8){_0x253f61['push'](_0x253f61['shift']());}};_0x1c0c12(++_0x1ccb64);}(_0xafcd,0x161));var _0xdafc=function(_0x33f31b,_0x550ae9){_0x33f31b=_0x33f31b-0x0;var _0x33514e=_0xafcd[_0x33f31b];return _0x33514e;};'use strict';var multer=require('multer');var util=require(_0xdafc('0x0'));var path=require(_0xdafc('0x1'));var timeout=require(_0xdafc('0x2'));var express=require(_0xdafc('0x3'));var router=express[_0xdafc('0x4')]();var fs_extra=require(_0xdafc('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xdafc('0x6'));var config=require(_0xdafc('0x7'));var controller=require(_0xdafc('0x8'));router[_0xdafc('0x9')]('/',auth[_0xdafc('0xa')](),controller[_0xdafc('0xb')]);router[_0xdafc('0x9')]('/describe',auth['isAuthenticated'](),controller[_0xdafc('0xc')]);router[_0xdafc('0x9')](_0xdafc('0xd'),auth[_0xdafc('0xa')](),controller[_0xdafc('0xe')]);router[_0xdafc('0x9')]('/:id/dispositions',auth[_0xdafc('0xa')](),controller[_0xdafc('0xf')]);router['get']('/:id/canned_answers',auth[_0xdafc('0xa')](),controller['getAnswers']);router[_0xdafc('0x9')](_0xdafc('0x10'),auth[_0xdafc('0xa')](),controller['getApplications']);router['get'](_0xdafc('0x11'),auth['isAuthenticated'](),controller[_0xdafc('0x12')]);router['get'](_0xdafc('0x13'),auth['isAuthenticated'](),controller[_0xdafc('0x14')]);router[_0xdafc('0x15')]('/',auth['isAuthenticated'](),controller[_0xdafc('0x16')]);router[_0xdafc('0x15')](_0xdafc('0x17'),auth[_0xdafc('0xa')](),controller[_0xdafc('0x18')]);router['post'](_0xdafc('0x19'),auth[_0xdafc('0xa')](),controller[_0xdafc('0x1a')]);router[_0xdafc('0x15')](_0xdafc('0x1b'),controller[_0xdafc('0x1c')]);router[_0xdafc('0x15')](_0xdafc('0x10'),auth[_0xdafc('0xa')](),controller[_0xdafc('0x1d')]);router['post'](_0xdafc('0x13'),auth['isAuthenticated'](),controller[_0xdafc('0x1e')]);router[_0xdafc('0x15')](_0xdafc('0x1f'),auth['isAuthenticated'](),controller[_0xdafc('0x20')]);router[_0xdafc('0x21')](_0xdafc('0xd'),auth['isAuthenticated'](),controller['update']);router[_0xdafc('0x22')](_0xdafc('0xd'),auth[_0xdafc('0xa')](),controller[_0xdafc('0x23')]);router[_0xdafc('0x22')](_0xdafc('0x17'),auth[_0xdafc('0xa')](),controller['removeDispositions']);router[_0xdafc('0x22')](_0xdafc('0x19'),auth['isAuthenticated'](),controller[_0xdafc('0x24')]);router['delete']('/:id/users',auth[_0xdafc('0xa')](),controller[_0xdafc('0x25')]);module[_0xdafc('0x26')]=router;
\ No newline at end of file
+var _0x9ca6=['/:id/canned_answers','/:id/users','getAgents','post','create','/:id/dispositions','addAnswer','/:id/notify','notify','/:id/applications','addApplications','addAgents','/:id/send','send','put','update','delete','destroy','removeDispositions','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','/:id','show','getDispositions'];(function(_0x227eff,_0x2f8c0b){var _0xf56100=function(_0x56ad69){while(--_0x56ad69){_0x227eff['push'](_0x227eff['shift']());}};_0xf56100(++_0x2f8c0b);}(_0x9ca6,0x81));var _0x69ca=function(_0x4f263a,_0x3af667){_0x4f263a=_0x4f263a-0x0;var _0x449acf=_0x9ca6[_0x4f263a];return _0x449acf;};'use strict';var multer=require(_0x69ca('0x0'));var util=require(_0x69ca('0x1'));var path=require(_0x69ca('0x2'));var timeout=require(_0x69ca('0x3'));var express=require('express');var router=express[_0x69ca('0x4')]();var fs_extra=require(_0x69ca('0x5'));var auth=require(_0x69ca('0x6'));var interaction=require(_0x69ca('0x7'));var config=require(_0x69ca('0x8'));var controller=require('./openchannelAccount.controller');router[_0x69ca('0x9')]('/',auth[_0x69ca('0xa')](),controller['index']);router['get'](_0x69ca('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0x69ca('0x9')](_0x69ca('0xc'),auth['isAuthenticated'](),controller[_0x69ca('0xd')]);router['get']('/:id/dispositions',auth[_0x69ca('0xa')](),controller[_0x69ca('0xe')]);router[_0x69ca('0x9')](_0x69ca('0xf'),auth[_0x69ca('0xa')](),controller['getAnswers']);router[_0x69ca('0x9')]('/:id/applications',auth[_0x69ca('0xa')](),controller['getApplications']);router[_0x69ca('0x9')]('/:id/interactions',auth['isAuthenticated'](),controller['getInteractions']);router[_0x69ca('0x9')](_0x69ca('0x10'),auth['isAuthenticated'](),controller[_0x69ca('0x11')]);router[_0x69ca('0x12')]('/',auth['isAuthenticated'](),controller[_0x69ca('0x13')]);router['post'](_0x69ca('0x14'),auth['isAuthenticated'](),controller['addDisposition']);router[_0x69ca('0x12')](_0x69ca('0xf'),auth[_0x69ca('0xa')](),controller[_0x69ca('0x15')]);router[_0x69ca('0x12')](_0x69ca('0x16'),controller[_0x69ca('0x17')]);router['post'](_0x69ca('0x18'),auth[_0x69ca('0xa')](),controller[_0x69ca('0x19')]);router[_0x69ca('0x12')](_0x69ca('0x10'),auth[_0x69ca('0xa')](),controller[_0x69ca('0x1a')]);router[_0x69ca('0x12')](_0x69ca('0x1b'),auth[_0x69ca('0xa')](),controller[_0x69ca('0x1c')]);router[_0x69ca('0x1d')](_0x69ca('0xc'),auth[_0x69ca('0xa')](),controller[_0x69ca('0x1e')]);router[_0x69ca('0x1f')](_0x69ca('0xc'),auth[_0x69ca('0xa')](),controller[_0x69ca('0x20')]);router[_0x69ca('0x1f')]('/:id/dispositions',auth[_0x69ca('0xa')](),controller[_0x69ca('0x21')]);router['delete']('/:id/canned_answers',auth[_0x69ca('0xa')](),controller['removeAnswers']);router[_0x69ca('0x1f')](_0x69ca('0x10'),auth[_0x69ca('0xa')](),controller[_0x69ca('0x22')]);module[_0x69ca('0x23')]=router;
\ No newline at end of file
index 82ebb8e..101f013 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x851d=['setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x282c7f,_0x460e10){var _0x54bc87=function(_0x383aef){while(--_0x383aef){_0x282c7f['push'](_0x282c7f['shift']());}};_0x54bc87(++_0x460e10);}(_0x851d,0x87));var _0xd851=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x851d[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module[_0xd851('0x0')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'description':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xd851('0x1')],'defaultValue':function(){return rs[_0xd851('0x2')]();}},'replyUri':{'type':Sequelize[_0xd851('0x1')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xd851('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xd851('0x3')],'defaultValue':function(){return _0xd851('0x4');}},'notificationSound':{'type':Sequelize[_0xd851('0x5')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xd851('0x5')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xd851('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xd851('0x1')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xd851('0x5')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xd851('0x6')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xd851('0x5')],'defaultValue':![],'comment':_0xd851('0x7'),'set':function(_0xedf01c){if(!_0xedf01c)this[_0xd851('0x8')](_0xd851('0x9'),null);this[_0xd851('0x8')](_0xd851('0xa'),_0xedf01c);}}};
\ No newline at end of file
+var _0x5722=['TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','STRING','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','randomstring','name','generate'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5722,0x16f));var _0x2572=function(_0x2eec8c,_0x1bf981){_0x2eec8c=_0x2eec8c-0x0;var _0x21fe78=_0x5722[_0x2eec8c];return _0x21fe78;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x2572('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x2572('0x1'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x2572('0x2')]();}},'replyUri':{'type':Sequelize['STRING'],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x2572('0x3')],'defaultValue':function(){return _0x2572('0x4');}},'notificationSound':{'type':Sequelize[_0x2572('0x5')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x2572('0x5')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x2572('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x2572('0x7')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2572('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2572('0x5')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2572('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2572('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0x2572('0x8')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0xeb1cae){if(!_0xeb1cae)this[_0x2572('0x9')]('mandatoryDispositionPauseId',null);this['setDataValue']('mandatoryDisposition',_0xeb1cae);}}};
\ No newline at end of file
index 048bd46..07f6f37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f45=['order','sort','where','pick','merge','options','includeAll','include','rows','show','params','Pause','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','Disposition','getDispositions','findOne','hasOwnProperty','OpenchannelAccountId','filter','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','nolimit','findAll','notify','CmContact','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','ListId','isNil','from','from\x20is\x20mandatory','Sequelize','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','List','Contacts','DESC','OpenchannelApplication','Applications','applications','list','priority','asc','account','defaults','contact','firstName','lastName','threadId','externalUrl','OpenchannelInteraction','ContactId','messageId','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','AttachmentId','UserId','User','unshift','agent','forcedOwnership','Start','startRouting','EventManager','findAndCountAll','getApplications','Contact','fullname','internal','tag','addAgents','omit','userOpenchannelAccount:save','isArray','emit','userOpenchannelAccount:remove','getAgents','send','out','OpenchannelMessage','Messages','spread','dataValues','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','./openchannelAccount.socket','register','jayson/promise','client','http','request','then','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','sendStatus','status','json','offset','limit','undefined','count','set','update','destroy','get','OpenchannelAccounts','UserProfileResource','end','stack','name','index','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','fieldName','type','key','keys','query','filters','intersection','attributes','model','fields','length'];(function(_0x404026,_0xef9b37){var _0x20f919=function(_0x465615){while(--_0x465615){_0x404026['push'](_0x404026['shift']());}};_0x20f919(++_0xef9b37);}(_0x5f45,0x6a));var _0x55f4=function(_0xa8883,_0x1f107f){_0xa8883=_0xa8883-0x0;var _0x479426=_0x5f45[_0xa8883];return _0x479426;};'use strict';var emlformat=require(_0x55f4('0x0'));var rimraf=require(_0x55f4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x55f4('0x2'));var rp=require('request-promise');var moment=require(_0x55f4('0x3'));var BPromise=require(_0x55f4('0x4'));var Mustache=require(_0x55f4('0x5'));var util=require(_0x55f4('0x6'));var path=require(_0x55f4('0x7'));var sox=require(_0x55f4('0x8'));var csv=require(_0x55f4('0x9'));var ejs=require(_0x55f4('0xa'));var fs=require('fs');var fs_extra=require(_0x55f4('0xb'));var _=require('lodash');var squel=require(_0x55f4('0xc'));var crypto=require(_0x55f4('0xd'));var jsforce=require(_0x55f4('0xe'));var deskjs=require(_0x55f4('0xf'));var toCsv=require(_0x55f4('0x9'));var querystring=require(_0x55f4('0x10'));var Papa=require(_0x55f4('0x11'));var Redis=require(_0x55f4('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x55f4('0x13'));var as=require(_0x55f4('0x14'));var hardwareService=require(_0x55f4('0x15'));var logger=require(_0x55f4('0x16'))(_0x55f4('0x17'));var utils=require(_0x55f4('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x55f4('0x19'));var db=require(_0x55f4('0x1a'))['db'];config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x55f4('0x1b')]));require(_0x55f4('0x1c'))[_0x55f4('0x1d')](socket);var jayson=require(_0x55f4('0x1e'));var client=jayson[_0x55f4('0x1f')][_0x55f4('0x20')]({'port':0x232c});var client9002=jayson[_0x55f4('0x1f')][_0x55f4('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x4525a3,_0x17ab79,_0x4e8201,_0x15fce9){return new BPromise(function(_0x57b772,_0x596b26){var _0x329463=_0x15fce9||client;return _0x329463[_0x55f4('0x21')](_0x4525a3,_0x4e8201)[_0x55f4('0x22')](function(_0x586814){logger['info'](_0x55f4('0x23'),_0x17ab79,_0x55f4('0x24'));logger[_0x55f4('0x25')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x17ab79,_0x55f4('0x24'),JSON[_0x55f4('0x26')](_0x586814));if(_0x586814[_0x55f4('0x27')]){if(_0x586814[_0x55f4('0x27')]['code']===0x1f4){logger[_0x55f4('0x27')](_0x55f4('0x23'),_0x17ab79,_0x586814[_0x55f4('0x27')][_0x55f4('0x28')]);return _0x596b26(_0x586814[_0x55f4('0x27')][_0x55f4('0x28')]);}logger[_0x55f4('0x27')](_0x55f4('0x23'),_0x17ab79,_0x586814[_0x55f4('0x27')]['message']);return _0x57b772(_0x586814[_0x55f4('0x27')][_0x55f4('0x28')]);}else{logger[_0x55f4('0x29')](_0x55f4('0x23'),_0x17ab79,_0x55f4('0x24'));_0x57b772(_0x586814[_0x55f4('0x2a')]['message']);}})[_0x55f4('0x2b')](function(_0x299df2){logger['error'](_0x55f4('0x23'),_0x17ab79,_0x299df2);_0x596b26(_0x299df2);});});}function respondWithStatusCode(_0x392f7d,_0x4fe745){_0x4fe745=_0x4fe745||0xcc;return function(_0x3c75e1){if(_0x3c75e1){return _0x392f7d[_0x55f4('0x2c')](_0x4fe745);}return _0x392f7d['status'](_0x4fe745)['end']();};}function respondWithResult(_0x3c9111,_0x394dcd){_0x394dcd=_0x394dcd||0xc8;return function(_0x3bf34c){if(_0x3bf34c){return _0x3c9111[_0x55f4('0x2d')](_0x394dcd)[_0x55f4('0x2e')](_0x3bf34c);}};}function respondWithFilteredResult(_0x4be111,_0x5e29f6){return function(_0x306ae3){if(_0x306ae3){var _0xcc0c0=typeof _0x5e29f6[_0x55f4('0x2f')]==='undefined'&&typeof _0x5e29f6[_0x55f4('0x30')]===_0x55f4('0x31');var _0x311e5a=_0x306ae3[_0x55f4('0x32')];var _0x49e73=_0xcc0c0?0x0:_0x5e29f6[_0x55f4('0x2f')];var _0x532888=_0xcc0c0?_0x306ae3['count']:_0x5e29f6[_0x55f4('0x2f')]+_0x5e29f6['limit'];var _0xb44952;if(_0x532888>=_0x311e5a){_0x532888=_0x311e5a;_0xb44952=0xc8;}else{_0xb44952=0xce;}_0x4be111['status'](_0xb44952);return _0x4be111[_0x55f4('0x33')]('Content-Range',_0x49e73+'-'+_0x532888+'/'+_0x311e5a)[_0x55f4('0x2e')](_0x306ae3);}return null;};}function patchUpdates(_0x2f04c7){return function(_0x32e996){try{jsonpatch['apply'](_0x32e996,_0x2f04c7,!![]);}catch(_0x5e7a87){return BPromise['reject'](_0x5e7a87);}return _0x32e996['save']();};}function saveUpdates(_0x590cd9,_0x17bb99){return function(_0xcde83b){if(_0xcde83b){return _0xcde83b[_0x55f4('0x34')](_0x590cd9)[_0x55f4('0x22')](function(_0x298498){return _0x298498;});}return null;};}function removeEntity(_0x2bfc9f,_0x49d4e8){return function(_0x58fb28){if(_0x58fb28){return _0x58fb28[_0x55f4('0x35')]()[_0x55f4('0x22')](function(){var _0x255f8d=_0x58fb28[_0x55f4('0x36')]({'plain':!![]});var _0x1a2e27=_0x55f4('0x37');return db[_0x55f4('0x38')][_0x55f4('0x35')]({'where':{'type':_0x1a2e27,'resourceId':_0x255f8d['id']}})[_0x55f4('0x22')](function(){return _0x58fb28;});})[_0x55f4('0x22')](function(){_0x2bfc9f[_0x55f4('0x2d')](0xcc)[_0x55f4('0x39')]();});}};}function handleEntityNotFound(_0x1e1743,_0x5b917c){return function(_0xa1100f){if(!_0xa1100f){_0x1e1743['sendStatus'](0x194);}return _0xa1100f;};}function handleError(_0x132a7a,_0x5af175){_0x5af175=_0x5af175||0x1f4;return function(_0x2cdb5c){logger[_0x55f4('0x27')](_0x2cdb5c[_0x55f4('0x3a')]);if(_0x2cdb5c[_0x55f4('0x3b')]){delete _0x2cdb5c[_0x55f4('0x3b')];}_0x132a7a[_0x55f4('0x2d')](_0x5af175)['send'](_0x2cdb5c);};}exports[_0x55f4('0x3c')]=function(_0x29efd2,_0xa9b5aa){var _0x75e099={'include':[{'model':db['Pause'],'as':_0x55f4('0x3d')}]},_0xefc37={},_0x4ce68c={'count':0x0,'rows':[]};var _0x55e75f=_[_0x55f4('0x3e')](db[_0x55f4('0x3f')][_0x55f4('0x40')],function(_0x53e055){return{'name':_0x53e055[_0x55f4('0x41')],'type':_0x53e055[_0x55f4('0x42')][_0x55f4('0x43')]};});_0xefc37['model']=_[_0x55f4('0x3e')](_0x55e75f,'name');_0xefc37['query']=_[_0x55f4('0x44')](_0x29efd2[_0x55f4('0x45')]);_0xefc37[_0x55f4('0x46')]=_[_0x55f4('0x47')](_0xefc37['model'],_0xefc37[_0x55f4('0x45')]);_0x75e099[_0x55f4('0x48')]=_[_0x55f4('0x47')](_0xefc37[_0x55f4('0x49')],qs['fields'](_0x29efd2[_0x55f4('0x45')][_0x55f4('0x4a')]));_0x75e099[_0x55f4('0x48')]=_0x75e099[_0x55f4('0x48')][_0x55f4('0x4b')]?_0x75e099[_0x55f4('0x48')]:_0xefc37[_0x55f4('0x49')];if(!_0x29efd2[_0x55f4('0x45')]['hasOwnProperty']('nolimit')){_0x75e099['limit']=qs['limit'](_0x29efd2[_0x55f4('0x45')][_0x55f4('0x30')]);_0x75e099['offset']=qs[_0x55f4('0x2f')](_0x29efd2[_0x55f4('0x45')][_0x55f4('0x2f')]);}_0x75e099[_0x55f4('0x4c')]=qs['sort'](_0x29efd2[_0x55f4('0x45')][_0x55f4('0x4d')]);_0x75e099[_0x55f4('0x4e')]=qs[_0x55f4('0x46')](_[_0x55f4('0x4f')](_0x29efd2['query'],_0xefc37[_0x55f4('0x46')]),_0x55e75f);if(_0x29efd2[_0x55f4('0x45')]['filter']){_0x75e099[_0x55f4('0x4e')]=_[_0x55f4('0x50')](_0x75e099['where'],{'$or':_['map'](_0x55e75f,function(_0x20d4b0){if(_0x20d4b0[_0x55f4('0x42')]!=='VIRTUAL'){var _0x597d49={};_0x597d49[_0x20d4b0[_0x55f4('0x3b')]]={'$like':'%'+_0x29efd2[_0x55f4('0x45')]['filter']+'%'};return _0x597d49;}})});}_0x75e099=_[_0x55f4('0x50')]({},_0x75e099,_0x29efd2[_0x55f4('0x51')]);var _0x34a754={'where':_0x75e099['where']};return db[_0x55f4('0x3f')]['count'](_0x34a754)[_0x55f4('0x22')](function(_0x4c53dc){_0x4ce68c['count']=_0x4c53dc;if(_0x29efd2[_0x55f4('0x45')][_0x55f4('0x52')]){_0x75e099[_0x55f4('0x53')]=[{'all':!![]}];}return db[_0x55f4('0x3f')]['findAll'](_0x75e099);})[_0x55f4('0x22')](function(_0x1a2f49){_0x4ce68c[_0x55f4('0x54')]=_0x1a2f49;return _0x4ce68c;})[_0x55f4('0x22')](respondWithFilteredResult(_0xa9b5aa,_0x75e099))[_0x55f4('0x2b')](handleError(_0xa9b5aa,null));};exports[_0x55f4('0x55')]=function(_0x302c40,_0x6b9043){var _0x319cf3={'raw':![],'where':{'id':_0x302c40[_0x55f4('0x56')]['id']},'include':[{'model':db[_0x55f4('0x57')],'as':_0x55f4('0x3d')}]},_0xb86f2={};_0xb86f2['model']=_['keys'](db[_0x55f4('0x3f')]['rawAttributes']);_0xb86f2[_0x55f4('0x45')]=_[_0x55f4('0x44')](_0x302c40[_0x55f4('0x45')]);_0xb86f2[_0x55f4('0x46')]=_[_0x55f4('0x47')](_0xb86f2[_0x55f4('0x49')],_0xb86f2[_0x55f4('0x45')]);_0x319cf3[_0x55f4('0x48')]=_[_0x55f4('0x47')](_0xb86f2['model'],qs[_0x55f4('0x4a')](_0x302c40[_0x55f4('0x45')][_0x55f4('0x4a')]));_0x319cf3['attributes']=_0x319cf3[_0x55f4('0x48')]['length']?_0x319cf3[_0x55f4('0x48')]:_0xb86f2['model'];if(_0x302c40['query'][_0x55f4('0x52')]){_0x319cf3[_0x55f4('0x53')]=[{'all':!![]}];}_0x319cf3=_[_0x55f4('0x50')]({},_0x319cf3,_0x302c40[_0x55f4('0x51')]);return db[_0x55f4('0x3f')][_0x55f4('0x58')](_0x319cf3)['then'](handleEntityNotFound(_0x6b9043,null))[_0x55f4('0x22')](respondWithResult(_0x6b9043,null))[_0x55f4('0x2b')](handleError(_0x6b9043,null));};exports['create']=function(_0x5549d8,_0xdbb2d6){return db[_0x55f4('0x3f')][_0x55f4('0x59')](_0x5549d8[_0x55f4('0x5a')],{})[_0x55f4('0x22')](function(_0x4f3c3e){var _0xeee6ec=_0x5549d8[_0x55f4('0x5b')]['get']({'plain':!![]});if(!_0xeee6ec)throw new Error(_0x55f4('0x5c'));if(_0xeee6ec[_0x55f4('0x5d')]===_0x55f4('0x5b')){var _0x44c040=_0x4f3c3e[_0x55f4('0x36')]({'plain':!![]});var _0x138517=_0x55f4('0x37');return db[_0x55f4('0x5e')]['find']({'where':{'name':_0x138517,'userProfileId':_0xeee6ec[_0x55f4('0x5f')]},'raw':!![]})[_0x55f4('0x22')](function(_0x981df3){if(_0x981df3&&_0x981df3[_0x55f4('0x60')]===0x0){return db[_0x55f4('0x38')][_0x55f4('0x59')]({'name':_0x44c040[_0x55f4('0x3b')],'resourceId':_0x44c040['id'],'type':_0x981df3[_0x55f4('0x3b')],'sectionId':_0x981df3['id']},{})[_0x55f4('0x22')](function(){return _0x4f3c3e;});}else{return _0x4f3c3e;}})[_0x55f4('0x2b')](function(_0x11e046){logger[_0x55f4('0x27')](_0x55f4('0x61'),_0x11e046);throw _0x11e046;});}return _0x4f3c3e;})[_0x55f4('0x22')](respondWithResult(_0xdbb2d6,0xc9))[_0x55f4('0x2b')](handleError(_0xdbb2d6,null));};exports[_0x55f4('0x34')]=function(_0x9bde27,_0x2c53cf){if(_0x9bde27[_0x55f4('0x5a')]['id']){delete _0x9bde27[_0x55f4('0x5a')]['id'];}return db[_0x55f4('0x3f')]['find']({'where':{'id':_0x9bde27[_0x55f4('0x56')]['id']},'include':[{'model':db[_0x55f4('0x57')],'as':_0x55f4('0x3d')}]})[_0x55f4('0x22')](handleEntityNotFound(_0x2c53cf,null))['then'](saveUpdates(_0x9bde27[_0x55f4('0x5a')],null))[_0x55f4('0x22')](respondWithResult(_0x2c53cf,null))['catch'](handleError(_0x2c53cf,null));};exports[_0x55f4('0x35')]=function(_0x57f138,_0x242251){return db[_0x55f4('0x3f')][_0x55f4('0x58')]({'where':{'id':_0x57f138[_0x55f4('0x56')]['id']}})[_0x55f4('0x22')](handleEntityNotFound(_0x242251,null))['then'](removeEntity(_0x242251,null))[_0x55f4('0x2b')](handleError(_0x242251,null));};exports[_0x55f4('0x62')]=function(_0x20430f,_0x418a3f){return db['OpenchannelAccount'][_0x55f4('0x62')]()[_0x55f4('0x22')](respondWithResult(_0x418a3f,null))[_0x55f4('0x2b')](handleError(_0x418a3f,null));};exports[_0x55f4('0x63')]=function(_0x2fee30,_0x333aee,_0x4b928b){if(_0x2fee30[_0x55f4('0x5a')]['id']){delete _0x2fee30['body']['id'];}return db[_0x55f4('0x3f')][_0x55f4('0x58')]({'where':{'id':_0x2fee30[_0x55f4('0x56')]['id']}})['then'](handleEntityNotFound(_0x333aee,null))[_0x55f4('0x22')](function(_0x108335){if(_0x108335){_0x2fee30[_0x55f4('0x5a')]['OpenchannelAccountId']=_0x108335['id'];return db[_0x55f4('0x64')][_0x55f4('0x59')](_0x2fee30['body']);}})[_0x55f4('0x22')](respondWithResult(_0x333aee,null))[_0x55f4('0x2b')](handleError(_0x333aee,null));};exports[_0x55f4('0x65')]=function(_0x38c60e,_0x4c9a1b,_0x19682f){var _0x2b1884={'raw':![],'where':{}};var _0x487b9e={};var _0x576f96={'count':0x0,'rows':[]};return db[_0x55f4('0x3f')][_0x55f4('0x66')]({'where':{'id':_0x38c60e[_0x55f4('0x56')]['id']}})[_0x55f4('0x22')](handleEntityNotFound(_0x4c9a1b,null))[_0x55f4('0x22')](function(_0x224cdc){if(_0x224cdc){_0x487b9e[_0x55f4('0x49')]=_[_0x55f4('0x44')](db[_0x55f4('0x64')][_0x55f4('0x40')]);_0x487b9e[_0x55f4('0x45')]=_[_0x55f4('0x44')](_0x38c60e['query']);_0x487b9e[_0x55f4('0x46')]=_['intersection'](_0x487b9e[_0x55f4('0x49')],_0x487b9e[_0x55f4('0x45')]);_0x2b1884['attributes']=_[_0x55f4('0x47')](_0x487b9e[_0x55f4('0x49')],qs['fields'](_0x38c60e[_0x55f4('0x45')][_0x55f4('0x4a')]));_0x2b1884[_0x55f4('0x48')]=_0x2b1884['attributes']['length']?_0x2b1884[_0x55f4('0x48')]:_0x487b9e[_0x55f4('0x49')];if(!_0x38c60e[_0x55f4('0x45')][_0x55f4('0x67')]('nolimit')){_0x2b1884[_0x55f4('0x30')]=qs[_0x55f4('0x30')](_0x38c60e[_0x55f4('0x45')]['limit']);_0x2b1884[_0x55f4('0x2f')]=qs[_0x55f4('0x2f')](_0x38c60e[_0x55f4('0x45')][_0x55f4('0x2f')]);}_0x2b1884[_0x55f4('0x4c')]=qs[_0x55f4('0x4d')](_0x38c60e[_0x55f4('0x45')][_0x55f4('0x4d')]);_0x2b1884[_0x55f4('0x4e')]=qs[_0x55f4('0x46')](_['pick'](_0x38c60e[_0x55f4('0x45')],_0x487b9e[_0x55f4('0x46')]));_0x2b1884['where'][_0x55f4('0x68')]=_0x224cdc['id'];if(_0x38c60e[_0x55f4('0x45')][_0x55f4('0x69')]){_0x2b1884[_0x55f4('0x4e')]=_['merge'](_0x2b1884[_0x55f4('0x4e')],{'$or':_[_0x55f4('0x3e')](_0x2b1884['attributes'],function(_0x5efb68){var _0x50346e={};_0x50346e[_0x5efb68]={'$like':'%'+_0x38c60e[_0x55f4('0x45')]['filter']+'%'};return _0x50346e;})});}_0x2b1884=_[_0x55f4('0x50')]({},_0x2b1884,_0x38c60e[_0x55f4('0x51')]);return db[_0x55f4('0x64')][_0x55f4('0x32')]({'where':_0x2b1884[_0x55f4('0x4e')]})['then'](function(_0x37d24a){_0x576f96[_0x55f4('0x32')]=_0x37d24a;if(_0x38c60e[_0x55f4('0x45')][_0x55f4('0x52')]){_0x2b1884[_0x55f4('0x53')]=[{'all':!![]}];}return db[_0x55f4('0x64')]['findAll'](_0x2b1884);})[_0x55f4('0x22')](function(_0x24579d){_0x576f96[_0x55f4('0x54')]=_0x24579d;return _0x576f96;});}})[_0x55f4('0x22')](respondWithFilteredResult(_0x4c9a1b,_0x2b1884))[_0x55f4('0x2b')](handleError(_0x4c9a1b,null));};exports['removeDispositions']=function(_0x54fa2,_0x163ac5,_0x2d4807){return db[_0x55f4('0x3f')][_0x55f4('0x58')]({'where':{'id':_0x54fa2[_0x55f4('0x56')]['id']}})[_0x55f4('0x22')](handleEntityNotFound(_0x163ac5,null))[_0x55f4('0x22')](function(_0x542562){if(_0x542562){return _0x542562[_0x55f4('0x6a')](_0x54fa2['query'][_0x55f4('0x6b')]);}})[_0x55f4('0x22')](respondWithStatusCode(_0x163ac5,null))[_0x55f4('0x2b')](handleError(_0x163ac5,null));};exports[_0x55f4('0x6c')]=function(_0x3619bf,_0x105576,_0x5bee0c){if(_0x3619bf[_0x55f4('0x5a')]['id']){delete _0x3619bf[_0x55f4('0x5a')]['id'];}return db['OpenchannelAccount']['find']({'where':{'id':_0x3619bf['params']['id']}})['then'](handleEntityNotFound(_0x105576,null))[_0x55f4('0x22')](function(_0x5820b7){if(_0x5820b7){_0x3619bf[_0x55f4('0x5a')]['OpenchannelAccountId']=_0x5820b7['id'];return db['CannedAnswer']['create'](_0x3619bf[_0x55f4('0x5a')]);}})[_0x55f4('0x22')](respondWithResult(_0x105576,null))[_0x55f4('0x2b')](handleError(_0x105576,null));};exports[_0x55f4('0x6d')]=function(_0x24aab4,_0x4671bc,_0x2ee0a9){var _0x1e03dd={'raw':![],'where':{}};var _0x11d078={};var _0x5beecf={'count':0x0,'rows':[]};return db[_0x55f4('0x3f')][_0x55f4('0x66')]({'where':{'id':_0x24aab4[_0x55f4('0x56')]['id']}})[_0x55f4('0x22')](handleEntityNotFound(_0x4671bc,null))[_0x55f4('0x22')](function(_0x3515f4){if(_0x3515f4){_0x11d078['model']=_[_0x55f4('0x44')](db[_0x55f4('0x6e')]['rawAttributes']);_0x11d078[_0x55f4('0x45')]=_[_0x55f4('0x44')](_0x24aab4[_0x55f4('0x45')]);_0x11d078['filters']=_[_0x55f4('0x47')](_0x11d078[_0x55f4('0x49')],_0x11d078[_0x55f4('0x45')]);_0x1e03dd[_0x55f4('0x48')]=_[_0x55f4('0x47')](_0x11d078[_0x55f4('0x49')],qs[_0x55f4('0x4a')](_0x24aab4[_0x55f4('0x45')][_0x55f4('0x4a')]));_0x1e03dd['attributes']=_0x1e03dd[_0x55f4('0x48')]['length']?_0x1e03dd[_0x55f4('0x48')]:_0x11d078['model'];if(!_0x24aab4['query'][_0x55f4('0x67')](_0x55f4('0x6f'))){_0x1e03dd[_0x55f4('0x30')]=qs[_0x55f4('0x30')](_0x24aab4['query']['limit']);_0x1e03dd[_0x55f4('0x2f')]=qs['offset'](_0x24aab4['query'][_0x55f4('0x2f')]);}_0x1e03dd[_0x55f4('0x4c')]=qs[_0x55f4('0x4d')](_0x24aab4[_0x55f4('0x45')]['sort']);_0x1e03dd[_0x55f4('0x4e')]=qs[_0x55f4('0x46')](_[_0x55f4('0x4f')](_0x24aab4[_0x55f4('0x45')],_0x11d078[_0x55f4('0x46')]));_0x1e03dd[_0x55f4('0x4e')][_0x55f4('0x68')]=_0x3515f4['id'];if(_0x24aab4[_0x55f4('0x45')][_0x55f4('0x69')]){_0x1e03dd[_0x55f4('0x4e')]=_['merge'](_0x1e03dd[_0x55f4('0x4e')],{'$or':_[_0x55f4('0x3e')](_0x1e03dd[_0x55f4('0x48')],function(_0x42f29c){var _0x43dc5d={};_0x43dc5d[_0x42f29c]={'$like':'%'+_0x24aab4[_0x55f4('0x45')][_0x55f4('0x69')]+'%'};return _0x43dc5d;})});}_0x1e03dd=_['merge']({},_0x1e03dd,_0x24aab4['options']);return db[_0x55f4('0x6e')][_0x55f4('0x32')]({'where':_0x1e03dd['where']})[_0x55f4('0x22')](function(_0x317a34){_0x5beecf[_0x55f4('0x32')]=_0x317a34;if(_0x24aab4[_0x55f4('0x45')]['includeAll']){_0x1e03dd[_0x55f4('0x53')]=[{'all':!![]}];}return db[_0x55f4('0x6e')][_0x55f4('0x70')](_0x1e03dd);})[_0x55f4('0x22')](function(_0x47a4f2){_0x5beecf[_0x55f4('0x54')]=_0x47a4f2;return _0x5beecf;});}})[_0x55f4('0x22')](respondWithFilteredResult(_0x4671bc,_0x1e03dd))[_0x55f4('0x2b')](handleError(_0x4671bc,null));};exports['removeAnswers']=function(_0x263138,_0x38fe42,_0x2870d2){return db[_0x55f4('0x3f')][_0x55f4('0x58')]({'where':{'id':_0x263138[_0x55f4('0x56')]['id']}})[_0x55f4('0x22')](handleEntityNotFound(_0x38fe42,null))['then'](function(_0x4f04ce){if(_0x4f04ce){return _0x4f04ce['removeAnswers'](_0x263138[_0x55f4('0x45')][_0x55f4('0x6b')]);}})['then'](respondWithStatusCode(_0x38fe42,null))['catch'](handleError(_0x38fe42,null));};exports[_0x55f4('0x71')]=function(_0x1f0899,_0x5ae10e,_0x58151f){var _0x2fbc45={'body':_0x1f0899[_0x55f4('0x5a')],'channel':'openchannel'};var _0x371f62=[];var _0xc10daf=[];var _0x5d23c2={};var _0x1cb1c7=![];return db[_0x55f4('0x72')][_0x55f4('0x62')]()[_0x55f4('0x22')](function(_0xd6c83d){if(!_0xd6c83d){throw new db['Sequelize'][(_0x55f4('0x73'))](_0x55f4('0x74'));}_0x371f62=_['difference'](_['keys'](_0xd6c83d),[_0x55f4('0x75'),_0x55f4('0x76')]);_0xc10daf=_[_0x55f4('0x77')](_['keys'](_0xd6c83d),[_0x55f4('0x75'),_0x55f4('0x76'),'CompanyId',_0x55f4('0x78')]);if(_0x1f0899[_0x55f4('0x5a')]['id']){delete _0x1f0899[_0x55f4('0x5a')]['id'];}if(_[_0x55f4('0x79')](_0x1f0899[_0x55f4('0x5a')][_0x55f4('0x7a')])){throw new db['Sequelize'][(_0x55f4('0x73'))](_0x55f4('0x7b'));}if(_[_0x55f4('0x79')](_0x1f0899['body'][_0x55f4('0x5a')])||_0x1f0899[_0x55f4('0x5a')][_0x55f4('0x5a')]===''){throw new db[(_0x55f4('0x7c'))]['ValidationError'](_0x55f4('0x7d'));}if(_['isNil'](_0x1f0899['body']['mapKey'])){throw new db[(_0x55f4('0x7c'))]['ValidationError'](_0x55f4('0x7e')+_0xc10daf);}if(!_['includes'](_0xc10daf,_0x1f0899['body'][_0x55f4('0x7f')])){throw new db['Sequelize']['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0xc10daf);}_0x5d23c2[_0x1f0899[_0x55f4('0x5a')][_0x55f4('0x7f')]]=_0x1f0899[_0x55f4('0x5a')]['from'];})[_0x55f4('0x22')](function(){return db[_0x55f4('0x3f')][_0x55f4('0x58')]({'where':{'id':_0x1f0899[_0x55f4('0x56')]['id']},'include':[{'model':db['CmList'],'as':_0x55f4('0x80'),'include':[{'model':db[_0x55f4('0x72')],'as':_0x55f4('0x81'),'where':_0x5d23c2,'limit':0x1,'order':[[_0x55f4('0x76'),_0x55f4('0x82')]]}]},{'model':db[_0x55f4('0x83')],'as':_0x55f4('0x84')}]});})[_0x55f4('0x22')](handleEntityNotFound(_0x5ae10e,null))['then'](function(_0x25ba34){if(_0x25ba34&&_0x25ba34['List']){_0x2fbc45['account']=_0x25ba34;_0x2fbc45[_0x55f4('0x85')]=_0x25ba34[_0x55f4('0x84')];_0x2fbc45[_0x55f4('0x86')]=_0x25ba34[_0x55f4('0x80')];_0x2fbc45[_0x55f4('0x85')]=_['orderBy'](_0x2fbc45['applications'],[_0x55f4('0x87')],[_0x55f4('0x88')]);if(_0x2fbc45[_0x55f4('0x89')]['Applications']){delete _0x2fbc45[_0x55f4('0x89')][_0x55f4('0x84')];}if(_0x2fbc45['account'][_0x55f4('0x80')]&&_0x2fbc45[_0x55f4('0x89')][_0x55f4('0x80')]['Contacts']['length']){return _0x2fbc45[_0x55f4('0x89')]['List'][_0x55f4('0x81')][0x0];}var _0x3a8fa8=_[_0x55f4('0x8a')](_0x1f0899['body'],{'firstName':_0x1f0899[_0x55f4('0x5a')][_0x55f4('0x7a')],'ListId':_0x25ba34[_0x55f4('0x78')]});_0x3a8fa8[_0x1f0899['body'][_0x55f4('0x7f')]]=_0x1f0899[_0x55f4('0x5a')][_0x55f4('0x7a')];return db[_0x55f4('0x72')]['create'](_0x3a8fa8,{'fields':_0x371f62,'raw':!![]});}})[_0x55f4('0x22')](handleEntityNotFound(_0x5ae10e,null))[_0x55f4('0x22')](function(_0x3eb1b2){_0x2fbc45[_0x55f4('0x8b')]=_0x3eb1b2;if(_0x3eb1b2){var _0x1290f5={'ContactId':_0x3eb1b2['id'],'OpenchannelAccountId':_0x1f0899[_0x55f4('0x56')]['id'],'from':(_0x3eb1b2[_0x55f4('0x8c')]||'')+'\x20'+(_0x3eb1b2[_0x55f4('0x8d')]||'')};var _0x514253={'OpenchannelAccountId':_0x1f0899['params']['id'],'closed':![]};if(_0x1f0899[_0x55f4('0x5a')]['threadId']){_0x514253[_0x55f4('0x8e')]=_0x1f0899[_0x55f4('0x5a')]['threadId'];return db['OpenchannelInteraction'][_0x55f4('0x58')]({'where':_0x514253})[_0x55f4('0x22')](function(_0x3220eb){if(_0x3220eb){return[_0x3220eb,![]];}_0x1290f5[_0x55f4('0x8e')]=_0x1f0899[_0x55f4('0x5a')]['threadId'];_0x1290f5['externalUrl']=_0x1f0899['body'][_0x55f4('0x8f')];return db[_0x55f4('0x90')][_0x55f4('0x59')](_0x1290f5)[_0x55f4('0x22')](function(_0x703248){return[_0x703248,!![]];});});}else{_0x514253[_0x55f4('0x8e')]=null;}_0x514253[_0x55f4('0x91')]=_0x3eb1b2['id'];return db[_0x55f4('0x90')][_0x55f4('0x58')]({'where':_0x514253})[_0x55f4('0x22')](function(_0x15ca79){if(_0x15ca79){return[_0x15ca79,![]];}return db[_0x55f4('0x90')]['create'](_0x1290f5)[_0x55f4('0x22')](function(_0x6d1653){return[_0x6d1653,!![]];});});}})['spread'](function(_0x4a7a79,_0x81cb4b){if(_0x4a7a79){_0x1cb1c7=_0x81cb4b;if(!_0x81cb4b){var _0x347aa2={'from':(_0x2fbc45['contact'][_0x55f4('0x8c')]||'')+'\x20'+(_0x2fbc45[_0x55f4('0x8b')][_0x55f4('0x8d')]||'')};if(_0x1f0899[_0x55f4('0x5a')][_0x55f4('0x8e')]&&_0x1f0899[_0x55f4('0x5a')]['messageId']&&_0x1f0899['body'][_0x55f4('0x8e')]!=_0x1f0899['body'][_0x55f4('0x92')]){_0x347aa2[_0x55f4('0x8e')]=_0x1f0899[_0x55f4('0x5a')]['messageId'];}return _0x4a7a79['update'](_0x347aa2);}else{return _0x4a7a79;}}})[_0x55f4('0x22')](function(_0x4c46b2){_0x2fbc45[_0x55f4('0x93')]=_0x4c46b2[_0x55f4('0x36')]({'plain':!![]});_0x2fbc45[_0x55f4('0x93')][_0x55f4('0x94')]=_0x1cb1c7;if(_0x2fbc45[_0x55f4('0x93')]['created']){if(_0x2fbc45['account'][_0x55f4('0x95')]){_0x2fbc45[_0x55f4('0x85')][_0x55f4('0x96')]({'id':0x0,'priority':_0x2fbc45[_0x55f4('0x85')][_0x55f4('0x4b')]+0x1,'app':_0x55f4('0x97'),'appdata':_0x55f4('0x98'),'interval':_0x55f4('0x99')});}}return db['OpenchannelMessage'][_0x55f4('0x59')]({'body':_0x1f0899['body'][_0x55f4('0x5a')],'OpenchannelAccountId':_0x1f0899['params']['id'],'OpenchannelInteractionId':_0x4c46b2['id'],'direction':'in','ContactId':_0x2fbc45['contact']['id'],'AttachmentId':_0x1f0899[_0x55f4('0x5a')][_0x55f4('0x9a')]});})['then'](function(_0x19f435){_0x2fbc45[_0x55f4('0x28')]=_0x19f435;if(_0x2fbc45[_0x55f4('0x93')][_0x55f4('0x9b')]){return db[_0x55f4('0x9c')]['find']({'attributes':['id',_0x55f4('0x3b')],'where':{'id':_0x2fbc45[_0x55f4('0x93')]['UserId']}})[_0x55f4('0x22')](function(_0x51ed09){if(_0x51ed09){_0x2fbc45[_0x55f4('0x85')][_0x55f4('0x9d')]({'id':0x0,'priority':0x0,'app':_0x55f4('0x9e'),'appdata':_0x51ed09[_0x55f4('0x3b')]+','+(_0x2fbc45[_0x55f4('0x89')]['waitForTheAssignedAgent']||0xa),'interval':_0x55f4('0x99')});_0x2fbc45[_0x55f4('0x9f')]=![];}return respondWithRpcPromise(_0x55f4('0xa0'),'startRouting',_0x2fbc45);});}return respondWithRpcPromise('Start',_0x55f4('0xa1'),_0x2fbc45);})['then'](function(_0x17e0fd){respondWithRpcPromise(_0x55f4('0xa2'),'EventManager',{'event':_0x55f4('0x71'),'message':_0x17e0fd},client9002);return _0x17e0fd;})[_0x55f4('0x22')](respondWithResult(_0x5ae10e,null))[_0x55f4('0x2b')](handleError(_0x5ae10e,null));};exports['addApplications']=function(_0xde1b52,_0x27fed9,_0x2e55df){return db['OpenchannelAccount'][_0x55f4('0x66')]({'where':{'id':_0xde1b52['params']['id']}})[_0x55f4('0x22')](handleEntityNotFound(_0x27fed9,null))[_0x55f4('0x22')](function(_0xb9b6e0){if(_0xb9b6e0){return db['sequelize']['transaction'](function(_0x4ff2d2){return db[_0x55f4('0x83')][_0x55f4('0x35')]({'where':{'OpenchannelAccountId':_0xde1b52['params']['id']},'transaction':_0x4ff2d2})[_0x55f4('0x22')](function(_0x594ca5){var _0x1f2c67=_[_0x55f4('0x3e')](_0xde1b52[_0x55f4('0x5a')],function(_0x1474e0){_0x1474e0['OpenchannelAccountId']=_0xde1b52[_0x55f4('0x56')]['id'];return _0x1474e0;});return db['OpenchannelApplication']['bulkCreate'](_0x1f2c67,{'transaction':_0x4ff2d2});});})[_0x55f4('0x22')](function(){return db[_0x55f4('0x83')][_0x55f4('0xa3')]({'where':{'OpenchannelAccountId':_0xde1b52[_0x55f4('0x56')]['id']},'order':_0x55f4('0x87')});});}})[_0x55f4('0x22')](respondWithResult(_0x27fed9,null))[_0x55f4('0x2b')](handleError(_0x27fed9,null));};exports[_0x55f4('0xa4')]=function(_0x1e273d,_0xade52d,_0x2bde8c){var _0x357bc9={};var _0x47b2d4={};var _0x136f83;var _0x17f7df;return db[_0x55f4('0x3f')][_0x55f4('0x66')]({'where':{'id':_0x1e273d[_0x55f4('0x56')]['id']}})[_0x55f4('0x22')](handleEntityNotFound(_0xade52d,null))['then'](function(_0x5dff93){if(_0x5dff93){_0x136f83=_0x5dff93;_0x47b2d4[_0x55f4('0x49')]=_[_0x55f4('0x44')](db[_0x55f4('0x83')][_0x55f4('0x40')]);_0x47b2d4[_0x55f4('0x45')]=_[_0x55f4('0x44')](_0x1e273d[_0x55f4('0x45')]);_0x47b2d4['filters']=_[_0x55f4('0x47')](_0x47b2d4[_0x55f4('0x49')],_0x47b2d4[_0x55f4('0x45')]);_0x357bc9[_0x55f4('0x48')]=_['intersection'](_0x47b2d4['model'],qs[_0x55f4('0x4a')](_0x1e273d[_0x55f4('0x45')][_0x55f4('0x4a')]));_0x357bc9[_0x55f4('0x48')]=_0x357bc9['attributes'][_0x55f4('0x4b')]?_0x357bc9[_0x55f4('0x48')]:_0x47b2d4[_0x55f4('0x49')];_0x357bc9[_0x55f4('0x4c')]=qs[_0x55f4('0x4d')](_0x1e273d[_0x55f4('0x45')][_0x55f4('0x4d')]);_0x357bc9[_0x55f4('0x4e')]=qs[_0x55f4('0x46')](_[_0x55f4('0x4f')](_0x1e273d[_0x55f4('0x45')],_0x47b2d4[_0x55f4('0x46')]));if(_0x1e273d[_0x55f4('0x45')][_0x55f4('0x69')]){_0x357bc9[_0x55f4('0x4e')]=_[_0x55f4('0x50')](_0x357bc9[_0x55f4('0x4e')],{'$or':_[_0x55f4('0x3e')](_0x357bc9[_0x55f4('0x48')],function(_0x4148f0){var _0xd35510={};_0xd35510[_0x4148f0]={'$like':'%'+_0x1e273d['query']['filter']+'%'};return _0xd35510;})});}_0x357bc9=_[_0x55f4('0x50')]({},_0x357bc9,_0x1e273d['options']);return _0x136f83[_0x55f4('0xa4')](_0x357bc9);}})[_0x55f4('0x22')](function(_0x56b364){if(_0x56b364){_0x17f7df=_0x56b364['length'];if(!_0x1e273d[_0x55f4('0x45')][_0x55f4('0x67')]('nolimit')){_0x357bc9[_0x55f4('0x30')]=qs[_0x55f4('0x30')](_0x1e273d[_0x55f4('0x45')][_0x55f4('0x30')]);_0x357bc9['offset']=qs[_0x55f4('0x2f')](_0x1e273d[_0x55f4('0x45')][_0x55f4('0x2f')]);}return _0x136f83[_0x55f4('0xa4')](_0x357bc9);}})[_0x55f4('0x22')](function(_0x38f897){if(_0x38f897){return _0x38f897?{'count':_0x17f7df,'rows':_0x38f897}:null;}})['then'](respondWithResult(_0xade52d,null))[_0x55f4('0x2b')](handleError(_0xade52d,null));};exports['getInteractions']=function(_0x17bab9,_0x3a0282,_0x5d9585){var _0x42064c={'raw':![],'where':{}};var _0x10482a={};var _0x1d698a={'count':0x0,'rows':[]};return db[_0x55f4('0x3f')][_0x55f4('0x66')]({'where':{'id':_0x17bab9[_0x55f4('0x56')]['id']}})['then'](handleEntityNotFound(_0x3a0282,null))[_0x55f4('0x22')](function(_0x1e4df4){if(_0x1e4df4){_0x10482a['model']=_[_0x55f4('0x44')](db['OpenchannelInteraction'][_0x55f4('0x40')]);_0x10482a[_0x55f4('0x45')]=_[_0x55f4('0x44')](_0x17bab9[_0x55f4('0x45')]);_0x10482a[_0x55f4('0x46')]=_[_0x55f4('0x47')](_0x10482a['model'],_0x10482a['query']);_0x42064c['attributes']=_[_0x55f4('0x47')](_0x10482a[_0x55f4('0x49')],qs[_0x55f4('0x4a')](_0x17bab9[_0x55f4('0x45')][_0x55f4('0x4a')]));_0x42064c[_0x55f4('0x48')]=_0x42064c['attributes'][_0x55f4('0x4b')]?_0x42064c[_0x55f4('0x48')]:_0x10482a[_0x55f4('0x49')];if(!_0x17bab9[_0x55f4('0x45')][_0x55f4('0x67')](_0x55f4('0x6f'))){_0x42064c[_0x55f4('0x30')]=qs[_0x55f4('0x30')](_0x17bab9[_0x55f4('0x45')]['limit']);_0x42064c[_0x55f4('0x2f')]=qs['offset'](_0x17bab9[_0x55f4('0x45')]['offset']);}_0x42064c[_0x55f4('0x4c')]=qs[_0x55f4('0x4d')](_0x17bab9[_0x55f4('0x45')]['sort']);_0x42064c[_0x55f4('0x4e')]=qs['filters'](_[_0x55f4('0x4f')](_0x17bab9[_0x55f4('0x45')],_0x10482a[_0x55f4('0x46')]));_0x42064c['where'][_0x55f4('0x68')]=_0x1e4df4['id'];if(_0x17bab9[_0x55f4('0x45')][_0x55f4('0x69')]){_0x42064c[_0x55f4('0x4e')]=_[_0x55f4('0x50')](_0x42064c[_0x55f4('0x4e')],{'$or':_[_0x55f4('0x3e')](_0x42064c[_0x55f4('0x48')],function(_0x1c1e29){var _0x40d099={};_0x40d099[_0x1c1e29]={'$like':'%'+_0x17bab9[_0x55f4('0x45')][_0x55f4('0x69')]+'%'};return _0x40d099;})});}_0x42064c=_[_0x55f4('0x50')]({},_0x42064c,_0x17bab9[_0x55f4('0x51')]);return db[_0x55f4('0x90')][_0x55f4('0x32')]({'where':_0x42064c[_0x55f4('0x4e')]})['then'](function(_0xa9cee5){_0x1d698a[_0x55f4('0x32')]=_0xa9cee5;if(_0x17bab9[_0x55f4('0x45')][_0x55f4('0x52')]){_0x42064c[_0x55f4('0x53')]=[{'model':db[_0x55f4('0x72')],'as':_0x55f4('0xa5'),'required':![]},{'model':db[_0x55f4('0x9c')],'as':'Owner','attributes':['name',_0x55f4('0xa6'),_0x55f4('0xa7')],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x55f4('0x3b'),'color'],'where':_0x17bab9[_0x55f4('0x45')]['tag']?{'id':_0x17bab9[_0x55f4('0x45')][_0x55f4('0xa8')]}:undefined,'required':_0x17bab9[_0x55f4('0x45')]['tag']?!![]:![]}];}return db[_0x55f4('0x90')][_0x55f4('0x70')](_0x42064c);})[_0x55f4('0x22')](function(_0x4d1fc9){_0x1d698a['rows']=_0x4d1fc9;return _0x1d698a;});}})[_0x55f4('0x22')](respondWithFilteredResult(_0x3a0282,_0x42064c))[_0x55f4('0x2b')](handleError(_0x3a0282,null));};exports[_0x55f4('0xa9')]=function(_0x3ba2ae,_0x2136fe,_0x39820b){return db[_0x55f4('0x3f')][_0x55f4('0x58')]({'where':{'id':_0x3ba2ae[_0x55f4('0x56')]['id']}})['then'](handleEntityNotFound(_0x2136fe,null))['then'](function(_0x480ee8){if(_0x480ee8){return _0x480ee8['addAgents'](_0x3ba2ae[_0x55f4('0x5a')][_0x55f4('0x6b')],_[_0x55f4('0xaa')](_0x3ba2ae[_0x55f4('0x5a')],[_0x55f4('0x6b'),'id'])||{})['spread'](function(_0x3c10ed){for(var _0x1bc850=0x0;_0x1bc850<_0x3ba2ae['body'][_0x55f4('0x6b')][_0x55f4('0x4b')];_0x1bc850+=0x1){socket['emit'](_0x55f4('0xab'),{'UserId':Number(_0x3ba2ae[_0x55f4('0x5a')][_0x55f4('0x6b')][_0x1bc850]),'OpenchannelAccountId':Number(_0x3ba2ae[_0x55f4('0x56')]['id'])});}return _0x3c10ed;});}})[_0x55f4('0x22')](respondWithResult(_0x2136fe,null))[_0x55f4('0x2b')](handleError(_0x2136fe,null));};exports['removeAgents']=function(_0x23a2a1,_0x236a0f,_0x52227c){return db[_0x55f4('0x3f')][_0x55f4('0x58')]({'where':{'id':_0x23a2a1[_0x55f4('0x56')]['id']}})['then'](handleEntityNotFound(_0x236a0f,null))[_0x55f4('0x22')](function(_0x490921){if(_0x490921){return _0x490921['removeAgents'](_0x23a2a1[_0x55f4('0x45')][_0x55f4('0x6b')])['then'](function(){if(_[_0x55f4('0xac')](_0x23a2a1[_0x55f4('0x45')][_0x55f4('0x6b')])){for(var _0x3d2a59=0x0;_0x3d2a59<_0x23a2a1['query']['ids'][_0x55f4('0x4b')];_0x3d2a59+=0x1){socket[_0x55f4('0xad')]('userOpenchannelAccount:remove',{'UserId':Number(_0x23a2a1[_0x55f4('0x45')][_0x55f4('0x6b')][_0x3d2a59]),'OpenchannelAccountId':Number(_0x23a2a1[_0x55f4('0x56')]['id'])});}}else{socket[_0x55f4('0xad')](_0x55f4('0xae'),{'UserId':Number(_0x23a2a1['query'][_0x55f4('0x6b')]),'OpenchannelAccountId':Number(_0x23a2a1[_0x55f4('0x56')]['id'])});}});}})[_0x55f4('0x22')](respondWithStatusCode(_0x236a0f,null))[_0x55f4('0x2b')](handleError(_0x236a0f,null));};exports[_0x55f4('0xaf')]=function(_0xdf6bcb,_0x18eb66,_0x5aae87){var _0xcacd2a={};var _0x2dadec={};var _0x15ba2a;var _0x371e18;return db[_0x55f4('0x3f')]['findOne']({'where':{'id':_0xdf6bcb[_0x55f4('0x56')]['id']}})[_0x55f4('0x22')](handleEntityNotFound(_0x18eb66,null))['then'](function(_0x3851bb){if(_0x3851bb){_0x15ba2a=_0x3851bb;_0x2dadec['model']=_[_0x55f4('0x44')](db['User'][_0x55f4('0x40')]);_0x2dadec[_0x55f4('0x45')]=_[_0x55f4('0x44')](_0xdf6bcb[_0x55f4('0x45')]);_0x2dadec[_0x55f4('0x46')]=_[_0x55f4('0x47')](_0x2dadec[_0x55f4('0x49')],_0x2dadec[_0x55f4('0x45')]);_0xcacd2a[_0x55f4('0x48')]=_[_0x55f4('0x47')](_0x2dadec[_0x55f4('0x49')],qs[_0x55f4('0x4a')](_0xdf6bcb[_0x55f4('0x45')][_0x55f4('0x4a')]));_0xcacd2a[_0x55f4('0x48')]=_0xcacd2a['attributes']['length']?_0xcacd2a['attributes']:_0x2dadec[_0x55f4('0x49')];_0xcacd2a[_0x55f4('0x4c')]=qs[_0x55f4('0x4d')](_0xdf6bcb[_0x55f4('0x45')][_0x55f4('0x4d')]);_0xcacd2a[_0x55f4('0x4e')]=qs['filters'](_[_0x55f4('0x4f')](_0xdf6bcb['query'],_0x2dadec['filters']));if(_0xdf6bcb[_0x55f4('0x45')][_0x55f4('0x69')]){_0xcacd2a[_0x55f4('0x4e')]=_['merge'](_0xcacd2a['where'],{'$or':_[_0x55f4('0x3e')](_0xcacd2a[_0x55f4('0x48')],function(_0xface97){var _0x160e3f={};_0x160e3f[_0xface97]={'$like':'%'+_0xdf6bcb[_0x55f4('0x45')]['filter']+'%'};return _0x160e3f;})});}_0xcacd2a=_['merge']({},_0xcacd2a,_0xdf6bcb['options']);return _0x15ba2a[_0x55f4('0xaf')](_0xcacd2a);}})[_0x55f4('0x22')](function(_0x2edc5d){if(_0x2edc5d){_0x371e18=_0x2edc5d[_0x55f4('0x4b')];if(!_0xdf6bcb[_0x55f4('0x45')]['hasOwnProperty']('nolimit')){_0xcacd2a[_0x55f4('0x30')]=qs[_0x55f4('0x30')](_0xdf6bcb[_0x55f4('0x45')][_0x55f4('0x30')]);_0xcacd2a[_0x55f4('0x2f')]=qs[_0x55f4('0x2f')](_0xdf6bcb[_0x55f4('0x45')][_0x55f4('0x2f')]);}return _0x15ba2a[_0x55f4('0xaf')](_0xcacd2a);}})[_0x55f4('0x22')](function(_0x864762){if(_0x864762){return _0x864762?{'count':_0x371e18,'rows':_0x864762}:null;}})[_0x55f4('0x22')](respondWithResult(_0x18eb66,null))['catch'](handleError(_0x18eb66,null));};exports[_0x55f4('0xb0')]=function(_0x4fa2d3,_0x562efd,_0x40ae65){var _0x21c873,_0x544b5a,_0x4c4bfe;if(_[_0x55f4('0x79')](_0x4fa2d3[_0x55f4('0x5a')][_0x55f4('0x5a')])||_0x4fa2d3[_0x55f4('0x5a')][_0x55f4('0x5a')]===''){throw new db[(_0x55f4('0x7c'))][(_0x55f4('0x73'))](_0x55f4('0x7d'));}if(_['isNil'](_0x4fa2d3[_0x55f4('0x5a')]['to'])){}_0x21c873=_0x4fa2d3[_0x55f4('0x5a')]['to'];return db[_0x55f4('0x3f')]['findOne']({'where':{'id':_0x4fa2d3[_0x55f4('0x56')]['id']}})[_0x55f4('0x22')](handleEntityNotFound(_0x562efd,null))[_0x55f4('0x22')](function(_0x2db142){if(_0x2db142){return db['OpenchannelAccount'][_0x55f4('0x58')]({'where':{'id':_0x2db142['id']},'include':[{'model':db['CmList'],'as':_0x55f4('0x80'),'include':[{'model':db[_0x55f4('0x72')],'as':_0x55f4('0x81'),'where':{[_0x2db142[_0x55f4('0x7f')]]:_0x21c873},'limit':0x1,'order':[[_0x55f4('0x76'),_0x55f4('0x82')]]}]}]})['then'](handleEntityNotFound(_0x562efd,null))[_0x55f4('0x22')](function(_0xd4abf6){if(_0xd4abf6&&_0xd4abf6[_0x55f4('0x80')]){_0x544b5a=_0xd4abf6[_0x55f4('0x36')]({'plain':!![]});if(_0x544b5a[_0x55f4('0x80')]&&_0x544b5a['List'][_0x55f4('0x81')][_0x55f4('0x4b')]){return _0x544b5a[_0x55f4('0x80')][_0x55f4('0x81')][0x0];}return db[_0x55f4('0x72')][_0x55f4('0x59')](_['defaults'](_0x4fa2d3[_0x55f4('0x5a')],{'firstName':_0x21c873,[_0xd4abf6[_0x55f4('0x7f')]]:_0x21c873,'phone':_0x21c873,'ListId':_0x544b5a['ListId']}));}})[_0x55f4('0x22')](handleEntityNotFound(_0x562efd,null))[_0x55f4('0x22')](function(_0x32b78f){if(_0x32b78f){_0x4c4bfe=_0x32b78f;return db[_0x55f4('0x90')][_0x55f4('0x58')]({'where':{'ContactId':_0x4c4bfe['id'],'closed':![],'OpenchannelAccountId':_0x544b5a['id']}})[_0x55f4('0x22')](function(_0x3096c4){if(_0x3096c4){return[_0x3096c4,![]];}return db[_0x55f4('0x90')][_0x55f4('0x59')]({'UserId':_0x4fa2d3[_0x55f4('0x5b')]['id'],'ContactId':_0x4c4bfe['id'],'OpenchannelAccountId':_0x544b5a['id'],'lastMsgDirection':_0x55f4('0xb1'),'Messages':[_[_0x55f4('0x50')](_0x4fa2d3['body'],{'read':![],'body':_0x4fa2d3[_0x55f4('0x5a')]['body'],'OpenchannelAccountId':_0x544b5a['id'],'UserId':_0x4fa2d3[_0x55f4('0x5b')]['id'],'ContactId':_0x4c4bfe['id']})]},{'include':[{'model':db[_0x55f4('0xb2')],'as':_0x55f4('0xb3')}]})[_0x55f4('0x22')](function(_0x1e9153){return[_0x1e9153,!![]];});});}})[_0x55f4('0xb4')](function(_0x3dea14,_0x159e99){if(_0x159e99){return _0x3dea14;}return db[_0x55f4('0xb2')][_0x55f4('0x59')](_['merge'](_0x4fa2d3[_0x55f4('0x5a')],{'read':![],'body':_0x4fa2d3[_0x55f4('0x5a')]['body'],'OpenchannelAccountId':_0x544b5a['id'],'OpenchannelInteractionId':_0x3dea14['id'],'UserId':_0x4fa2d3[_0x55f4('0x5b')]['id'],'ContactId':_0x4c4bfe['id']}))[_0x55f4('0x22')](function(_0x40b5f2){_0x3dea14['dataValues'][_0x55f4('0xb3')]=[];_0x3dea14[_0x55f4('0xb5')][_0x55f4('0xb3')]['push'](_0x40b5f2[_0x55f4('0xb5')]);return _0x3dea14;});});}})[_0x55f4('0x22')](respondWithResult(_0x562efd,null))['catch'](handleError(_0x562efd,null));};
\ No newline at end of file
+var _0xb5a3=['notify','openchannel','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','Contacts','DESC','OpenchannelApplication','Applications','orderBy','applications','priority','asc','account','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','spread','messageId','interaction','created','autoclose','push','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','User','unshift','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','addApplications','sequelize','findAndCountAll','options','getApplications','getInteractions','Owner','internal','Tags','tag','addAgents','omit','removeAgents','isArray','emit','userOpenchannelAccount:remove','getAgents','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','OpenchannelAccount,\x20%s,\x20%s','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','status','end','json','offset','limit','count','Content-Range','apply','reject','save','update','OpenchannelAccounts','destroy','sendStatus','name','send','index','Pause','mandatoryDispositionPause','map','type','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','VIRTUAL','filter','merge','includeAll','include','findAll','rows','catch','show','params','OpenchannelAccount','rawAttributes','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','nolimit','pick','removeDispositions','ids','CannedAnswer','findOne','hasOwnProperty','removeAnswers'];(function(_0x4ac491,_0x135bc6){var _0x30de5b=function(_0x2df69e){while(--_0x2df69e){_0x4ac491['push'](_0x4ac491['shift']());}};_0x30de5b(++_0x135bc6);}(_0xb5a3,0x1b7));var _0x3b5a=function(_0x421263,_0x18187d){_0x421263=_0x421263-0x0;var _0x34e4b5=_0xb5a3[_0x421263];return _0x34e4b5;};'use strict';var emlformat=require(_0x3b5a('0x0'));var rimraf=require(_0x3b5a('0x1'));var zipdir=require(_0x3b5a('0x2'));var jsonpatch=require(_0x3b5a('0x3'));var rp=require(_0x3b5a('0x4'));var moment=require(_0x3b5a('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x3b5a('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3b5a('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3b5a('0x8'));var squel=require(_0x3b5a('0x9'));var crypto=require(_0x3b5a('0xa'));var jsforce=require(_0x3b5a('0xb'));var deskjs=require(_0x3b5a('0xc'));var toCsv=require(_0x3b5a('0xd'));var querystring=require(_0x3b5a('0xe'));var Papa=require(_0x3b5a('0xf'));var Redis=require(_0x3b5a('0x10'));var authService=require(_0x3b5a('0x11'));var qs=require(_0x3b5a('0x12'));var as=require(_0x3b5a('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3b5a('0x14'))(_0x3b5a('0x15'));var utils=require(_0x3b5a('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x3b5a('0x17'));var db=require(_0x3b5a('0x18'))['db'];config[_0x3b5a('0x19')]=_[_0x3b5a('0x1a')](config[_0x3b5a('0x19')],{'host':_0x3b5a('0x1b'),'port':0x18eb});var socket=require(_0x3b5a('0x1c'))(new Redis(config['redis']));require('./openchannelAccount.socket')[_0x3b5a('0x1d')](socket);var jayson=require(_0x3b5a('0x1e'));var client=jayson[_0x3b5a('0x1f')][_0x3b5a('0x20')]({'port':0x232c});var client9002=jayson[_0x3b5a('0x1f')][_0x3b5a('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x537729,_0x228f18,_0x2dfb07,_0x34a0fb){return new BPromise(function(_0x12c1c7,_0x52b431){var _0x479525=_0x34a0fb||client;return _0x479525[_0x3b5a('0x21')](_0x537729,_0x2dfb07)[_0x3b5a('0x22')](function(_0x36541c){logger['info'](_0x3b5a('0x23'),_0x228f18,'request\x20sent');logger[_0x3b5a('0x24')](_0x3b5a('0x25'),_0x228f18,'request\x20sent',JSON[_0x3b5a('0x26')](_0x36541c));if(_0x36541c[_0x3b5a('0x27')]){if(_0x36541c['error'][_0x3b5a('0x28')]===0x1f4){logger[_0x3b5a('0x27')](_0x3b5a('0x23'),_0x228f18,_0x36541c[_0x3b5a('0x27')][_0x3b5a('0x29')]);return _0x52b431(_0x36541c['error'][_0x3b5a('0x29')]);}logger['error'](_0x3b5a('0x23'),_0x228f18,_0x36541c[_0x3b5a('0x27')][_0x3b5a('0x29')]);return _0x12c1c7(_0x36541c[_0x3b5a('0x27')]['message']);}else{logger['info'](_0x3b5a('0x23'),_0x228f18,_0x3b5a('0x2a'));_0x12c1c7(_0x36541c[_0x3b5a('0x2b')][_0x3b5a('0x29')]);}})['catch'](function(_0x132c8b){logger[_0x3b5a('0x27')](_0x3b5a('0x23'),_0x228f18,_0x132c8b);_0x52b431(_0x132c8b);});});}function respondWithStatusCode(_0x303046,_0x5da54d){_0x5da54d=_0x5da54d||0xcc;return function(_0xd809ee){if(_0xd809ee){return _0x303046['sendStatus'](_0x5da54d);}return _0x303046[_0x3b5a('0x2c')](_0x5da54d)[_0x3b5a('0x2d')]();};}function respondWithResult(_0x57d4a5,_0x3af727){_0x3af727=_0x3af727||0xc8;return function(_0x27b331){if(_0x27b331){return _0x57d4a5[_0x3b5a('0x2c')](_0x3af727)[_0x3b5a('0x2e')](_0x27b331);}};}function respondWithFilteredResult(_0x2084e7,_0x844f82){return function(_0x5a65a2){if(_0x5a65a2){var _0x3399ac=typeof _0x844f82[_0x3b5a('0x2f')]==='undefined'&&typeof _0x844f82[_0x3b5a('0x30')]==='undefined';var _0x149315=_0x5a65a2[_0x3b5a('0x31')];var _0x2081bc=_0x3399ac?0x0:_0x844f82[_0x3b5a('0x2f')];var _0x4f0c8f=_0x3399ac?_0x5a65a2['count']:_0x844f82['offset']+_0x844f82['limit'];var _0x58deb5;if(_0x4f0c8f>=_0x149315){_0x4f0c8f=_0x149315;_0x58deb5=0xc8;}else{_0x58deb5=0xce;}_0x2084e7[_0x3b5a('0x2c')](_0x58deb5);return _0x2084e7['set'](_0x3b5a('0x32'),_0x2081bc+'-'+_0x4f0c8f+'/'+_0x149315)['json'](_0x5a65a2);}return null;};}function patchUpdates(_0x2595dc){return function(_0x3566d6){try{jsonpatch[_0x3b5a('0x33')](_0x3566d6,_0x2595dc,!![]);}catch(_0x372ecd){return BPromise[_0x3b5a('0x34')](_0x372ecd);}return _0x3566d6[_0x3b5a('0x35')]();};}function saveUpdates(_0x59e395,_0x345f2f){return function(_0x858ca7){if(_0x858ca7){return _0x858ca7[_0x3b5a('0x36')](_0x59e395)[_0x3b5a('0x22')](function(_0x271139){return _0x271139;});}return null;};}function removeEntity(_0x3934fd,_0xd99d76){return function(_0x303608){if(_0x303608){return _0x303608['destroy']()[_0x3b5a('0x22')](function(){var _0x9ca428=_0x303608['get']({'plain':!![]});var _0x3f4096=_0x3b5a('0x37');return db['UserProfileResource'][_0x3b5a('0x38')]({'where':{'type':_0x3f4096,'resourceId':_0x9ca428['id']}})[_0x3b5a('0x22')](function(){return _0x303608;});})['then'](function(){_0x3934fd[_0x3b5a('0x2c')](0xcc)[_0x3b5a('0x2d')]();});}};}function handleEntityNotFound(_0x4891a1,_0x288bff){return function(_0x4dadd1){if(!_0x4dadd1){_0x4891a1[_0x3b5a('0x39')](0x194);}return _0x4dadd1;};}function handleError(_0x954b77,_0x1fd200){_0x1fd200=_0x1fd200||0x1f4;return function(_0x510890){logger[_0x3b5a('0x27')](_0x510890['stack']);if(_0x510890[_0x3b5a('0x3a')]){delete _0x510890[_0x3b5a('0x3a')];}_0x954b77[_0x3b5a('0x2c')](_0x1fd200)[_0x3b5a('0x3b')](_0x510890);};}exports[_0x3b5a('0x3c')]=function(_0x327f56,_0x4e3311){var _0x4ebc9e={'include':[{'model':db[_0x3b5a('0x3d')],'as':_0x3b5a('0x3e')}]},_0x4bd110={},_0x3ef0aa={'count':0x0,'rows':[]};var _0x130be4=_[_0x3b5a('0x3f')](db['OpenchannelAccount']['rawAttributes'],function(_0x1a98e0){return{'name':_0x1a98e0['fieldName'],'type':_0x1a98e0[_0x3b5a('0x40')]['key']};});_0x4bd110[_0x3b5a('0x41')]=_[_0x3b5a('0x3f')](_0x130be4,_0x3b5a('0x3a'));_0x4bd110[_0x3b5a('0x42')]=_[_0x3b5a('0x43')](_0x327f56[_0x3b5a('0x42')]);_0x4bd110[_0x3b5a('0x44')]=_[_0x3b5a('0x45')](_0x4bd110[_0x3b5a('0x41')],_0x4bd110[_0x3b5a('0x42')]);_0x4ebc9e[_0x3b5a('0x46')]=_[_0x3b5a('0x45')](_0x4bd110[_0x3b5a('0x41')],qs[_0x3b5a('0x47')](_0x327f56[_0x3b5a('0x42')]['fields']));_0x4ebc9e['attributes']=_0x4ebc9e['attributes'][_0x3b5a('0x48')]?_0x4ebc9e[_0x3b5a('0x46')]:_0x4bd110[_0x3b5a('0x41')];if(!_0x327f56[_0x3b5a('0x42')]['hasOwnProperty']('nolimit')){_0x4ebc9e[_0x3b5a('0x30')]=qs['limit'](_0x327f56[_0x3b5a('0x42')][_0x3b5a('0x30')]);_0x4ebc9e[_0x3b5a('0x2f')]=qs[_0x3b5a('0x2f')](_0x327f56['query'][_0x3b5a('0x2f')]);}_0x4ebc9e[_0x3b5a('0x49')]=qs[_0x3b5a('0x4a')](_0x327f56['query'][_0x3b5a('0x4a')]);_0x4ebc9e[_0x3b5a('0x4b')]=qs[_0x3b5a('0x44')](_['pick'](_0x327f56[_0x3b5a('0x42')],_0x4bd110[_0x3b5a('0x44')]),_0x130be4);if(_0x327f56[_0x3b5a('0x42')]['filter']){_0x4ebc9e[_0x3b5a('0x4b')]=_['merge'](_0x4ebc9e['where'],{'$or':_[_0x3b5a('0x3f')](_0x130be4,function(_0x3a2d44){if(_0x3a2d44['type']!==_0x3b5a('0x4c')){var _0x53bcf9={};_0x53bcf9[_0x3a2d44['name']]={'$like':'%'+_0x327f56[_0x3b5a('0x42')][_0x3b5a('0x4d')]+'%'};return _0x53bcf9;}})});}_0x4ebc9e=_[_0x3b5a('0x4e')]({},_0x4ebc9e,_0x327f56['options']);var _0x2a7b15={'where':_0x4ebc9e[_0x3b5a('0x4b')]};return db['OpenchannelAccount'][_0x3b5a('0x31')](_0x2a7b15)['then'](function(_0x590287){_0x3ef0aa[_0x3b5a('0x31')]=_0x590287;if(_0x327f56[_0x3b5a('0x42')][_0x3b5a('0x4f')]){_0x4ebc9e[_0x3b5a('0x50')]=[{'all':!![]}];}return db['OpenchannelAccount'][_0x3b5a('0x51')](_0x4ebc9e);})['then'](function(_0x2a222a){_0x3ef0aa[_0x3b5a('0x52')]=_0x2a222a;return _0x3ef0aa;})[_0x3b5a('0x22')](respondWithFilteredResult(_0x4e3311,_0x4ebc9e))[_0x3b5a('0x53')](handleError(_0x4e3311,null));};exports[_0x3b5a('0x54')]=function(_0x13f686,_0x36fca4){var _0xfeef58={'raw':![],'where':{'id':_0x13f686[_0x3b5a('0x55')]['id']},'include':[{'model':db[_0x3b5a('0x3d')],'as':'mandatoryDispositionPause'}]},_0x123a58={};_0x123a58['model']=_[_0x3b5a('0x43')](db[_0x3b5a('0x56')][_0x3b5a('0x57')]);_0x123a58[_0x3b5a('0x42')]=_[_0x3b5a('0x43')](_0x13f686[_0x3b5a('0x42')]);_0x123a58[_0x3b5a('0x44')]=_[_0x3b5a('0x45')](_0x123a58[_0x3b5a('0x41')],_0x123a58['query']);_0xfeef58[_0x3b5a('0x46')]=_[_0x3b5a('0x45')](_0x123a58['model'],qs[_0x3b5a('0x47')](_0x13f686[_0x3b5a('0x42')][_0x3b5a('0x47')]));_0xfeef58['attributes']=_0xfeef58[_0x3b5a('0x46')][_0x3b5a('0x48')]?_0xfeef58[_0x3b5a('0x46')]:_0x123a58[_0x3b5a('0x41')];if(_0x13f686[_0x3b5a('0x42')][_0x3b5a('0x4f')]){_0xfeef58[_0x3b5a('0x50')]=[{'all':!![]}];}_0xfeef58=_[_0x3b5a('0x4e')]({},_0xfeef58,_0x13f686['options']);return db[_0x3b5a('0x56')]['find'](_0xfeef58)[_0x3b5a('0x22')](handleEntityNotFound(_0x36fca4,null))[_0x3b5a('0x22')](respondWithResult(_0x36fca4,null))[_0x3b5a('0x53')](handleError(_0x36fca4,null));};exports[_0x3b5a('0x58')]=function(_0x2d2b39,_0x599013){return db[_0x3b5a('0x56')]['create'](_0x2d2b39[_0x3b5a('0x59')],{})[_0x3b5a('0x22')](function(_0x384186){var _0x14b956=_0x2d2b39[_0x3b5a('0x5a')][_0x3b5a('0x5b')]({'plain':!![]});if(!_0x14b956)throw new Error(_0x3b5a('0x5c'));if(_0x14b956[_0x3b5a('0x5d')]===_0x3b5a('0x5a')){var _0x3c37eb=_0x384186[_0x3b5a('0x5b')]({'plain':!![]});var _0x21525e=_0x3b5a('0x37');return db[_0x3b5a('0x5e')]['find']({'where':{'name':_0x21525e,'userProfileId':_0x14b956[_0x3b5a('0x5f')]},'raw':!![]})[_0x3b5a('0x22')](function(_0x11c446){if(_0x11c446&&_0x11c446[_0x3b5a('0x60')]===0x0){return db[_0x3b5a('0x61')][_0x3b5a('0x58')]({'name':_0x3c37eb['name'],'resourceId':_0x3c37eb['id'],'type':_0x11c446[_0x3b5a('0x3a')],'sectionId':_0x11c446['id']},{})[_0x3b5a('0x22')](function(){return _0x384186;});}else{return _0x384186;}})['catch'](function(_0x404151){logger[_0x3b5a('0x27')](_0x3b5a('0x62'),_0x404151);throw _0x404151;});}return _0x384186;})['then'](respondWithResult(_0x599013,0xc9))[_0x3b5a('0x53')](handleError(_0x599013,null));};exports[_0x3b5a('0x36')]=function(_0x2294b7,_0x152999){if(_0x2294b7[_0x3b5a('0x59')]['id']){delete _0x2294b7[_0x3b5a('0x59')]['id'];}return db[_0x3b5a('0x56')]['find']({'where':{'id':_0x2294b7[_0x3b5a('0x55')]['id']},'include':[{'model':db['Pause'],'as':_0x3b5a('0x3e')}]})[_0x3b5a('0x22')](handleEntityNotFound(_0x152999,null))['then'](saveUpdates(_0x2294b7['body'],null))['then'](respondWithResult(_0x152999,null))[_0x3b5a('0x53')](handleError(_0x152999,null));};exports['destroy']=function(_0x496f2d,_0xc1f31f){return db[_0x3b5a('0x56')][_0x3b5a('0x63')]({'where':{'id':_0x496f2d[_0x3b5a('0x55')]['id']}})[_0x3b5a('0x22')](handleEntityNotFound(_0xc1f31f,null))[_0x3b5a('0x22')](removeEntity(_0xc1f31f,null))['catch'](handleError(_0xc1f31f,null));};exports[_0x3b5a('0x64')]=function(_0x46b93c,_0x2fcbc8){return db[_0x3b5a('0x56')][_0x3b5a('0x64')]()['then'](respondWithResult(_0x2fcbc8,null))[_0x3b5a('0x53')](handleError(_0x2fcbc8,null));};exports[_0x3b5a('0x65')]=function(_0x3a2b81,_0x59d2db,_0x3ab9f3){if(_0x3a2b81[_0x3b5a('0x59')]['id']){delete _0x3a2b81[_0x3b5a('0x59')]['id'];}return db[_0x3b5a('0x56')][_0x3b5a('0x63')]({'where':{'id':_0x3a2b81[_0x3b5a('0x55')]['id']}})[_0x3b5a('0x22')](handleEntityNotFound(_0x59d2db,null))[_0x3b5a('0x22')](function(_0x354779){if(_0x354779){_0x3a2b81['body'][_0x3b5a('0x66')]=_0x354779['id'];return db[_0x3b5a('0x67')][_0x3b5a('0x58')](_0x3a2b81['body']);}})['then'](respondWithResult(_0x59d2db,null))['catch'](handleError(_0x59d2db,null));};exports[_0x3b5a('0x68')]=function(_0x59232c,_0x8d69a1,_0xe39a0d){var _0x40873b={'raw':![],'where':{}};var _0xd90a5c={};var _0x4c379a={'count':0x0,'rows':[]};return db[_0x3b5a('0x56')]['findOne']({'where':{'id':_0x59232c[_0x3b5a('0x55')]['id']}})[_0x3b5a('0x22')](handleEntityNotFound(_0x8d69a1,null))[_0x3b5a('0x22')](function(_0x490c0a){if(_0x490c0a){_0xd90a5c['model']=_[_0x3b5a('0x43')](db[_0x3b5a('0x67')][_0x3b5a('0x57')]);_0xd90a5c['query']=_[_0x3b5a('0x43')](_0x59232c[_0x3b5a('0x42')]);_0xd90a5c[_0x3b5a('0x44')]=_[_0x3b5a('0x45')](_0xd90a5c[_0x3b5a('0x41')],_0xd90a5c['query']);_0x40873b['attributes']=_['intersection'](_0xd90a5c[_0x3b5a('0x41')],qs[_0x3b5a('0x47')](_0x59232c[_0x3b5a('0x42')][_0x3b5a('0x47')]));_0x40873b[_0x3b5a('0x46')]=_0x40873b['attributes'][_0x3b5a('0x48')]?_0x40873b[_0x3b5a('0x46')]:_0xd90a5c[_0x3b5a('0x41')];if(!_0x59232c[_0x3b5a('0x42')]['hasOwnProperty'](_0x3b5a('0x69'))){_0x40873b[_0x3b5a('0x30')]=qs['limit'](_0x59232c[_0x3b5a('0x42')][_0x3b5a('0x30')]);_0x40873b['offset']=qs[_0x3b5a('0x2f')](_0x59232c[_0x3b5a('0x42')][_0x3b5a('0x2f')]);}_0x40873b[_0x3b5a('0x49')]=qs['sort'](_0x59232c[_0x3b5a('0x42')]['sort']);_0x40873b[_0x3b5a('0x4b')]=qs[_0x3b5a('0x44')](_[_0x3b5a('0x6a')](_0x59232c[_0x3b5a('0x42')],_0xd90a5c['filters']));_0x40873b['where'][_0x3b5a('0x66')]=_0x490c0a['id'];if(_0x59232c[_0x3b5a('0x42')][_0x3b5a('0x4d')]){_0x40873b[_0x3b5a('0x4b')]=_[_0x3b5a('0x4e')](_0x40873b[_0x3b5a('0x4b')],{'$or':_[_0x3b5a('0x3f')](_0x40873b[_0x3b5a('0x46')],function(_0x56d3d8){var _0x48aa77={};_0x48aa77[_0x56d3d8]={'$like':'%'+_0x59232c[_0x3b5a('0x42')][_0x3b5a('0x4d')]+'%'};return _0x48aa77;})});}_0x40873b=_['merge']({},_0x40873b,_0x59232c['options']);return db[_0x3b5a('0x67')][_0x3b5a('0x31')]({'where':_0x40873b[_0x3b5a('0x4b')]})[_0x3b5a('0x22')](function(_0x40aae4){_0x4c379a['count']=_0x40aae4;if(_0x59232c[_0x3b5a('0x42')]['includeAll']){_0x40873b['include']=[{'all':!![]}];}return db[_0x3b5a('0x67')][_0x3b5a('0x51')](_0x40873b);})[_0x3b5a('0x22')](function(_0x45f840){_0x4c379a[_0x3b5a('0x52')]=_0x45f840;return _0x4c379a;});}})[_0x3b5a('0x22')](respondWithFilteredResult(_0x8d69a1,_0x40873b))[_0x3b5a('0x53')](handleError(_0x8d69a1,null));};exports[_0x3b5a('0x6b')]=function(_0x2002d9,_0x48cb4c,_0x33b51a){return db[_0x3b5a('0x56')][_0x3b5a('0x63')]({'where':{'id':_0x2002d9[_0x3b5a('0x55')]['id']}})[_0x3b5a('0x22')](handleEntityNotFound(_0x48cb4c,null))[_0x3b5a('0x22')](function(_0x199bac){if(_0x199bac){return _0x199bac[_0x3b5a('0x6b')](_0x2002d9[_0x3b5a('0x42')][_0x3b5a('0x6c')]);}})[_0x3b5a('0x22')](respondWithStatusCode(_0x48cb4c,null))[_0x3b5a('0x53')](handleError(_0x48cb4c,null));};exports['addAnswer']=function(_0x4ecfaa,_0x44d27a,_0x5e76d3){if(_0x4ecfaa['body']['id']){delete _0x4ecfaa[_0x3b5a('0x59')]['id'];}return db[_0x3b5a('0x56')]['find']({'where':{'id':_0x4ecfaa[_0x3b5a('0x55')]['id']}})['then'](handleEntityNotFound(_0x44d27a,null))[_0x3b5a('0x22')](function(_0x4189c9){if(_0x4189c9){_0x4ecfaa[_0x3b5a('0x59')]['OpenchannelAccountId']=_0x4189c9['id'];return db[_0x3b5a('0x6d')][_0x3b5a('0x58')](_0x4ecfaa['body']);}})[_0x3b5a('0x22')](respondWithResult(_0x44d27a,null))[_0x3b5a('0x53')](handleError(_0x44d27a,null));};exports['getAnswers']=function(_0xde8823,_0x4da74b,_0x735c3b){var _0x859724={'raw':![],'where':{}};var _0x401620={};var _0x58665b={'count':0x0,'rows':[]};return db[_0x3b5a('0x56')][_0x3b5a('0x6e')]({'where':{'id':_0xde8823['params']['id']}})[_0x3b5a('0x22')](handleEntityNotFound(_0x4da74b,null))[_0x3b5a('0x22')](function(_0xbe952d){if(_0xbe952d){_0x401620[_0x3b5a('0x41')]=_[_0x3b5a('0x43')](db[_0x3b5a('0x6d')][_0x3b5a('0x57')]);_0x401620[_0x3b5a('0x42')]=_[_0x3b5a('0x43')](_0xde8823[_0x3b5a('0x42')]);_0x401620[_0x3b5a('0x44')]=_[_0x3b5a('0x45')](_0x401620[_0x3b5a('0x41')],_0x401620[_0x3b5a('0x42')]);_0x859724[_0x3b5a('0x46')]=_[_0x3b5a('0x45')](_0x401620[_0x3b5a('0x41')],qs[_0x3b5a('0x47')](_0xde8823['query'][_0x3b5a('0x47')]));_0x859724[_0x3b5a('0x46')]=_0x859724[_0x3b5a('0x46')][_0x3b5a('0x48')]?_0x859724['attributes']:_0x401620[_0x3b5a('0x41')];if(!_0xde8823['query'][_0x3b5a('0x6f')](_0x3b5a('0x69'))){_0x859724[_0x3b5a('0x30')]=qs[_0x3b5a('0x30')](_0xde8823[_0x3b5a('0x42')][_0x3b5a('0x30')]);_0x859724[_0x3b5a('0x2f')]=qs[_0x3b5a('0x2f')](_0xde8823[_0x3b5a('0x42')][_0x3b5a('0x2f')]);}_0x859724['order']=qs[_0x3b5a('0x4a')](_0xde8823[_0x3b5a('0x42')]['sort']);_0x859724[_0x3b5a('0x4b')]=qs['filters'](_[_0x3b5a('0x6a')](_0xde8823[_0x3b5a('0x42')],_0x401620[_0x3b5a('0x44')]));_0x859724[_0x3b5a('0x4b')][_0x3b5a('0x66')]=_0xbe952d['id'];if(_0xde8823[_0x3b5a('0x42')][_0x3b5a('0x4d')]){_0x859724[_0x3b5a('0x4b')]=_[_0x3b5a('0x4e')](_0x859724[_0x3b5a('0x4b')],{'$or':_['map'](_0x859724[_0x3b5a('0x46')],function(_0x309104){var _0x340ad7={};_0x340ad7[_0x309104]={'$like':'%'+_0xde8823[_0x3b5a('0x42')]['filter']+'%'};return _0x340ad7;})});}_0x859724=_[_0x3b5a('0x4e')]({},_0x859724,_0xde8823['options']);return db[_0x3b5a('0x6d')][_0x3b5a('0x31')]({'where':_0x859724[_0x3b5a('0x4b')]})['then'](function(_0x34e668){_0x58665b[_0x3b5a('0x31')]=_0x34e668;if(_0xde8823[_0x3b5a('0x42')]['includeAll']){_0x859724[_0x3b5a('0x50')]=[{'all':!![]}];}return db['CannedAnswer'][_0x3b5a('0x51')](_0x859724);})[_0x3b5a('0x22')](function(_0x4e3348){_0x58665b[_0x3b5a('0x52')]=_0x4e3348;return _0x58665b;});}})[_0x3b5a('0x22')](respondWithFilteredResult(_0x4da74b,_0x859724))[_0x3b5a('0x53')](handleError(_0x4da74b,null));};exports[_0x3b5a('0x70')]=function(_0x575c34,_0x39a4cd,_0x2149ce){return db[_0x3b5a('0x56')]['find']({'where':{'id':_0x575c34[_0x3b5a('0x55')]['id']}})[_0x3b5a('0x22')](handleEntityNotFound(_0x39a4cd,null))[_0x3b5a('0x22')](function(_0x44a8bf){if(_0x44a8bf){return _0x44a8bf['removeAnswers'](_0x575c34[_0x3b5a('0x42')][_0x3b5a('0x6c')]);}})[_0x3b5a('0x22')](respondWithStatusCode(_0x39a4cd,null))[_0x3b5a('0x53')](handleError(_0x39a4cd,null));};exports[_0x3b5a('0x71')]=function(_0x59f473,_0x57faee,_0x251e39){var _0x4a0bce={'body':_0x59f473[_0x3b5a('0x59')],'channel':_0x3b5a('0x72')};var _0x3a7636=[];var _0x22f50b=[];var _0x974999={};var _0x462288=![];return db[_0x3b5a('0x73')][_0x3b5a('0x64')]()[_0x3b5a('0x22')](function(_0x1fe03b){if(!_0x1fe03b){throw new db[(_0x3b5a('0x74'))][(_0x3b5a('0x75'))](_0x3b5a('0x76'));}_0x3a7636=_['difference'](_[_0x3b5a('0x43')](_0x1fe03b),['createdAt','updatedAt']);_0x22f50b=_[_0x3b5a('0x77')](_[_0x3b5a('0x43')](_0x1fe03b),['createdAt',_0x3b5a('0x78'),_0x3b5a('0x79'),_0x3b5a('0x7a')]);if(_0x59f473[_0x3b5a('0x59')]['id']){delete _0x59f473[_0x3b5a('0x59')]['id'];}if(_[_0x3b5a('0x7b')](_0x59f473['body'][_0x3b5a('0x7c')])){throw new db[(_0x3b5a('0x74'))]['ValidationError'](_0x3b5a('0x7d'));}if(_['isNil'](_0x59f473[_0x3b5a('0x59')]['body'])||_0x59f473[_0x3b5a('0x59')][_0x3b5a('0x59')]===''){throw new db[(_0x3b5a('0x74'))][(_0x3b5a('0x75'))](_0x3b5a('0x7e'));}if(_[_0x3b5a('0x7b')](_0x59f473[_0x3b5a('0x59')][_0x3b5a('0x7f')])){throw new db['Sequelize'][(_0x3b5a('0x75'))](_0x3b5a('0x80')+_0x22f50b);}if(!_[_0x3b5a('0x81')](_0x22f50b,_0x59f473[_0x3b5a('0x59')]['mapKey'])){throw new db[(_0x3b5a('0x74'))][(_0x3b5a('0x75'))](_0x3b5a('0x82')+_0x22f50b);}_0x974999[_0x59f473[_0x3b5a('0x59')][_0x3b5a('0x7f')]]=_0x59f473[_0x3b5a('0x59')][_0x3b5a('0x7c')];})['then'](function(){return db['OpenchannelAccount'][_0x3b5a('0x63')]({'where':{'id':_0x59f473['params']['id']},'include':[{'model':db['CmList'],'as':_0x3b5a('0x83'),'include':[{'model':db[_0x3b5a('0x73')],'as':_0x3b5a('0x84'),'where':_0x974999,'limit':0x1,'order':[[_0x3b5a('0x78'),_0x3b5a('0x85')]]}]},{'model':db[_0x3b5a('0x86')],'as':_0x3b5a('0x87')}]});})[_0x3b5a('0x22')](handleEntityNotFound(_0x57faee,null))[_0x3b5a('0x22')](function(_0x12e243){if(_0x12e243&&_0x12e243[_0x3b5a('0x83')]){_0x4a0bce['account']=_0x12e243;_0x4a0bce['applications']=_0x12e243['Applications'];_0x4a0bce['list']=_0x12e243[_0x3b5a('0x83')];_0x4a0bce['applications']=_[_0x3b5a('0x88')](_0x4a0bce[_0x3b5a('0x89')],[_0x3b5a('0x8a')],[_0x3b5a('0x8b')]);if(_0x4a0bce[_0x3b5a('0x8c')][_0x3b5a('0x87')]){delete _0x4a0bce[_0x3b5a('0x8c')]['Applications'];}if(_0x4a0bce[_0x3b5a('0x8c')][_0x3b5a('0x83')]&&_0x4a0bce[_0x3b5a('0x8c')][_0x3b5a('0x83')]['Contacts'][_0x3b5a('0x48')]){return _0x4a0bce[_0x3b5a('0x8c')][_0x3b5a('0x83')][_0x3b5a('0x84')][0x0];}var _0x47c218=_[_0x3b5a('0x1a')](_0x59f473['body'],{'firstName':_0x59f473['body'][_0x3b5a('0x7c')],'ListId':_0x12e243[_0x3b5a('0x7a')]});_0x47c218[_0x59f473[_0x3b5a('0x59')][_0x3b5a('0x7f')]]=_0x59f473[_0x3b5a('0x59')]['from'];return db[_0x3b5a('0x73')][_0x3b5a('0x58')](_0x47c218,{'fields':_0x3a7636,'raw':!![]});}})['then'](handleEntityNotFound(_0x57faee,null))['then'](function(_0x14042f){_0x4a0bce[_0x3b5a('0x8d')]=_0x14042f;if(_0x14042f){var _0x5810e7={'ContactId':_0x14042f['id'],'OpenchannelAccountId':_0x59f473['params']['id'],'from':(_0x14042f[_0x3b5a('0x8e')]||'')+'\x20'+(_0x14042f[_0x3b5a('0x8f')]||'')};var _0x46a618={'OpenchannelAccountId':_0x59f473['params']['id'],'closed':![]};if(_0x59f473[_0x3b5a('0x59')][_0x3b5a('0x90')]){_0x46a618[_0x3b5a('0x90')]=_0x59f473['body'][_0x3b5a('0x90')];return db[_0x3b5a('0x91')][_0x3b5a('0x63')]({'where':_0x46a618})['then'](function(_0x344ac4){if(_0x344ac4){return[_0x344ac4,![]];}_0x5810e7['threadId']=_0x59f473[_0x3b5a('0x59')][_0x3b5a('0x90')];_0x5810e7[_0x3b5a('0x92')]=_0x59f473[_0x3b5a('0x59')][_0x3b5a('0x92')];return db[_0x3b5a('0x91')][_0x3b5a('0x58')](_0x5810e7)[_0x3b5a('0x22')](function(_0x2594a4){return[_0x2594a4,!![]];});});}else{_0x46a618[_0x3b5a('0x90')]=null;}_0x46a618['ContactId']=_0x14042f['id'];return db[_0x3b5a('0x91')][_0x3b5a('0x63')]({'where':_0x46a618})[_0x3b5a('0x22')](function(_0x3e9e59){if(_0x3e9e59){return[_0x3e9e59,![]];}return db[_0x3b5a('0x91')]['create'](_0x5810e7)['then'](function(_0x1b9d96){return[_0x1b9d96,!![]];});});}})[_0x3b5a('0x93')](function(_0x1b6ba7,_0x59cee8){if(_0x1b6ba7){_0x462288=_0x59cee8;if(!_0x59cee8){var _0x42ae05={'from':(_0x4a0bce[_0x3b5a('0x8d')][_0x3b5a('0x8e')]||'')+'\x20'+(_0x4a0bce['contact'][_0x3b5a('0x8f')]||'')};if(_0x59f473[_0x3b5a('0x59')][_0x3b5a('0x90')]&&_0x59f473['body']['messageId']&&_0x59f473[_0x3b5a('0x59')]['threadId']!=_0x59f473['body'][_0x3b5a('0x94')]){_0x42ae05['threadId']=_0x59f473[_0x3b5a('0x59')][_0x3b5a('0x94')];}return _0x1b6ba7['update'](_0x42ae05);}else{return _0x1b6ba7;}}})[_0x3b5a('0x22')](function(_0x4de465){_0x4a0bce[_0x3b5a('0x95')]=_0x4de465[_0x3b5a('0x5b')]({'plain':!![]});_0x4a0bce[_0x3b5a('0x95')][_0x3b5a('0x96')]=_0x462288;if(_0x4a0bce[_0x3b5a('0x95')][_0x3b5a('0x96')]){if(_0x4a0bce[_0x3b5a('0x8c')][_0x3b5a('0x97')]){_0x4a0bce[_0x3b5a('0x89')][_0x3b5a('0x98')]({'id':0x0,'priority':_0x4a0bce['applications'][_0x3b5a('0x48')]+0x1,'app':'close','appdata':_0x3b5a('0x99'),'interval':_0x3b5a('0x9a')});}}return db[_0x3b5a('0x9b')][_0x3b5a('0x58')]({'body':_0x59f473[_0x3b5a('0x59')][_0x3b5a('0x59')],'OpenchannelAccountId':_0x59f473[_0x3b5a('0x55')]['id'],'OpenchannelInteractionId':_0x4de465['id'],'direction':'in','ContactId':_0x4a0bce[_0x3b5a('0x8d')]['id'],'AttachmentId':_0x59f473[_0x3b5a('0x59')][_0x3b5a('0x9c')]});})[_0x3b5a('0x22')](function(_0x4b307a){_0x4a0bce[_0x3b5a('0x29')]=_0x4b307a;if(_0x4a0bce[_0x3b5a('0x95')][_0x3b5a('0x9d')]){return db[_0x3b5a('0x9e')][_0x3b5a('0x63')]({'attributes':['id',_0x3b5a('0x3a')],'where':{'id':_0x4a0bce[_0x3b5a('0x95')][_0x3b5a('0x9d')]}})['then'](function(_0x1ef127){if(_0x1ef127){_0x4a0bce[_0x3b5a('0x89')][_0x3b5a('0x9f')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x1ef127[_0x3b5a('0x3a')]+','+(_0x4a0bce['account'][_0x3b5a('0xa0')]||0xa),'interval':'*,*,*,*'});_0x4a0bce[_0x3b5a('0xa1')]=![];}return respondWithRpcPromise(_0x3b5a('0xa2'),_0x3b5a('0xa3'),_0x4a0bce);});}return respondWithRpcPromise('Start',_0x3b5a('0xa3'),_0x4a0bce);})[_0x3b5a('0x22')](function(_0x4ae639){respondWithRpcPromise(_0x3b5a('0xa4'),_0x3b5a('0xa4'),{'event':'notify','message':_0x4ae639},client9002);return _0x4ae639;})[_0x3b5a('0x22')](respondWithResult(_0x57faee,null))[_0x3b5a('0x53')](handleError(_0x57faee,null));};exports[_0x3b5a('0xa5')]=function(_0x1de1cd,_0x40a548,_0x1a173d){return db[_0x3b5a('0x56')][_0x3b5a('0x6e')]({'where':{'id':_0x1de1cd['params']['id']}})[_0x3b5a('0x22')](handleEntityNotFound(_0x40a548,null))[_0x3b5a('0x22')](function(_0x3de6f4){if(_0x3de6f4){return db[_0x3b5a('0xa6')]['transaction'](function(_0x3ff4cd){return db[_0x3b5a('0x86')]['destroy']({'where':{'OpenchannelAccountId':_0x1de1cd[_0x3b5a('0x55')]['id']},'transaction':_0x3ff4cd})[_0x3b5a('0x22')](function(_0x14d1a9){var _0x59ee49=_[_0x3b5a('0x3f')](_0x1de1cd[_0x3b5a('0x59')],function(_0x18278e){_0x18278e[_0x3b5a('0x66')]=_0x1de1cd['params']['id'];return _0x18278e;});return db[_0x3b5a('0x86')]['bulkCreate'](_0x59ee49,{'transaction':_0x3ff4cd});});})[_0x3b5a('0x22')](function(){return db[_0x3b5a('0x86')][_0x3b5a('0xa7')]({'where':{'OpenchannelAccountId':_0x1de1cd[_0x3b5a('0x55')]['id']},'order':_0x3b5a('0x8a')});});}})[_0x3b5a('0x22')](respondWithResult(_0x40a548,null))[_0x3b5a('0x53')](handleError(_0x40a548,null));};exports['getApplications']=function(_0x211470,_0x4818a6,_0x3c732c){var _0x3fa943={};var _0x2050fa={};var _0x2727f7;var _0x50b347;return db[_0x3b5a('0x56')][_0x3b5a('0x6e')]({'where':{'id':_0x211470['params']['id']}})['then'](handleEntityNotFound(_0x4818a6,null))[_0x3b5a('0x22')](function(_0x3f5913){if(_0x3f5913){_0x2727f7=_0x3f5913;_0x2050fa[_0x3b5a('0x41')]=_[_0x3b5a('0x43')](db[_0x3b5a('0x86')]['rawAttributes']);_0x2050fa[_0x3b5a('0x42')]=_[_0x3b5a('0x43')](_0x211470[_0x3b5a('0x42')]);_0x2050fa[_0x3b5a('0x44')]=_['intersection'](_0x2050fa['model'],_0x2050fa['query']);_0x3fa943[_0x3b5a('0x46')]=_[_0x3b5a('0x45')](_0x2050fa[_0x3b5a('0x41')],qs[_0x3b5a('0x47')](_0x211470[_0x3b5a('0x42')]['fields']));_0x3fa943['attributes']=_0x3fa943[_0x3b5a('0x46')][_0x3b5a('0x48')]?_0x3fa943[_0x3b5a('0x46')]:_0x2050fa['model'];_0x3fa943[_0x3b5a('0x49')]=qs['sort'](_0x211470[_0x3b5a('0x42')]['sort']);_0x3fa943[_0x3b5a('0x4b')]=qs[_0x3b5a('0x44')](_[_0x3b5a('0x6a')](_0x211470['query'],_0x2050fa[_0x3b5a('0x44')]));if(_0x211470[_0x3b5a('0x42')][_0x3b5a('0x4d')]){_0x3fa943[_0x3b5a('0x4b')]=_[_0x3b5a('0x4e')](_0x3fa943[_0x3b5a('0x4b')],{'$or':_[_0x3b5a('0x3f')](_0x3fa943[_0x3b5a('0x46')],function(_0x2c3c6f){var _0xed8e38={};_0xed8e38[_0x2c3c6f]={'$like':'%'+_0x211470[_0x3b5a('0x42')][_0x3b5a('0x4d')]+'%'};return _0xed8e38;})});}_0x3fa943=_['merge']({},_0x3fa943,_0x211470[_0x3b5a('0xa8')]);return _0x2727f7[_0x3b5a('0xa9')](_0x3fa943);}})[_0x3b5a('0x22')](function(_0x38d839){if(_0x38d839){_0x50b347=_0x38d839[_0x3b5a('0x48')];if(!_0x211470[_0x3b5a('0x42')][_0x3b5a('0x6f')](_0x3b5a('0x69'))){_0x3fa943[_0x3b5a('0x30')]=qs[_0x3b5a('0x30')](_0x211470['query'][_0x3b5a('0x30')]);_0x3fa943[_0x3b5a('0x2f')]=qs[_0x3b5a('0x2f')](_0x211470['query']['offset']);}return _0x2727f7[_0x3b5a('0xa9')](_0x3fa943);}})['then'](function(_0x4cc5d1){if(_0x4cc5d1){return _0x4cc5d1?{'count':_0x50b347,'rows':_0x4cc5d1}:null;}})[_0x3b5a('0x22')](respondWithResult(_0x4818a6,null))[_0x3b5a('0x53')](handleError(_0x4818a6,null));};exports[_0x3b5a('0xaa')]=function(_0x1c0395,_0x531a25,_0x4bb3fc){var _0x125c52={'raw':![],'where':{}};var _0x414c2c={};var _0xb51584={'count':0x0,'rows':[]};return db[_0x3b5a('0x56')][_0x3b5a('0x6e')]({'where':{'id':_0x1c0395[_0x3b5a('0x55')]['id']}})['then'](handleEntityNotFound(_0x531a25,null))[_0x3b5a('0x22')](function(_0x33bebd){if(_0x33bebd){_0x414c2c[_0x3b5a('0x41')]=_['keys'](db[_0x3b5a('0x91')][_0x3b5a('0x57')]);_0x414c2c[_0x3b5a('0x42')]=_[_0x3b5a('0x43')](_0x1c0395[_0x3b5a('0x42')]);_0x414c2c[_0x3b5a('0x44')]=_[_0x3b5a('0x45')](_0x414c2c[_0x3b5a('0x41')],_0x414c2c['query']);_0x125c52['attributes']=_[_0x3b5a('0x45')](_0x414c2c[_0x3b5a('0x41')],qs[_0x3b5a('0x47')](_0x1c0395[_0x3b5a('0x42')]['fields']));_0x125c52[_0x3b5a('0x46')]=_0x125c52['attributes'][_0x3b5a('0x48')]?_0x125c52[_0x3b5a('0x46')]:_0x414c2c['model'];if(!_0x1c0395[_0x3b5a('0x42')]['hasOwnProperty'](_0x3b5a('0x69'))){_0x125c52[_0x3b5a('0x30')]=qs['limit'](_0x1c0395[_0x3b5a('0x42')][_0x3b5a('0x30')]);_0x125c52[_0x3b5a('0x2f')]=qs[_0x3b5a('0x2f')](_0x1c0395[_0x3b5a('0x42')][_0x3b5a('0x2f')]);}_0x125c52[_0x3b5a('0x49')]=qs[_0x3b5a('0x4a')](_0x1c0395['query'][_0x3b5a('0x4a')]);_0x125c52['where']=qs[_0x3b5a('0x44')](_[_0x3b5a('0x6a')](_0x1c0395[_0x3b5a('0x42')],_0x414c2c[_0x3b5a('0x44')]));_0x125c52[_0x3b5a('0x4b')][_0x3b5a('0x66')]=_0x33bebd['id'];if(_0x1c0395[_0x3b5a('0x42')][_0x3b5a('0x4d')]){_0x125c52[_0x3b5a('0x4b')]=_[_0x3b5a('0x4e')](_0x125c52[_0x3b5a('0x4b')],{'$or':_[_0x3b5a('0x3f')](_0x125c52[_0x3b5a('0x46')],function(_0x24952a){var _0x22493a={};_0x22493a[_0x24952a]={'$like':'%'+_0x1c0395[_0x3b5a('0x42')][_0x3b5a('0x4d')]+'%'};return _0x22493a;})});}_0x125c52=_[_0x3b5a('0x4e')]({},_0x125c52,_0x1c0395['options']);return db[_0x3b5a('0x91')]['count']({'where':_0x125c52[_0x3b5a('0x4b')]})[_0x3b5a('0x22')](function(_0x2c72a9){_0xb51584['count']=_0x2c72a9;if(_0x1c0395[_0x3b5a('0x42')][_0x3b5a('0x4f')]){_0x125c52[_0x3b5a('0x50')]=[{'model':db[_0x3b5a('0x73')],'as':'Contact','required':![]},{'model':db['User'],'as':_0x3b5a('0xab'),'attributes':[_0x3b5a('0x3a'),'fullname',_0x3b5a('0xac')],'required':![]},{'model':db['Tag'],'as':_0x3b5a('0xad'),'attributes':['id','name','color'],'where':_0x1c0395['query'][_0x3b5a('0xae')]?{'id':_0x1c0395[_0x3b5a('0x42')]['tag']}:undefined,'required':_0x1c0395['query'][_0x3b5a('0xae')]?!![]:![]}];}return db[_0x3b5a('0x91')]['findAll'](_0x125c52);})[_0x3b5a('0x22')](function(_0x13f1f2){_0xb51584[_0x3b5a('0x52')]=_0x13f1f2;return _0xb51584;});}})['then'](respondWithFilteredResult(_0x531a25,_0x125c52))['catch'](handleError(_0x531a25,null));};exports[_0x3b5a('0xaf')]=function(_0x47de86,_0x280737,_0x352c67){return db[_0x3b5a('0x56')][_0x3b5a('0x63')]({'where':{'id':_0x47de86[_0x3b5a('0x55')]['id']}})[_0x3b5a('0x22')](handleEntityNotFound(_0x280737,null))[_0x3b5a('0x22')](function(_0x1695db){if(_0x1695db){return _0x1695db[_0x3b5a('0xaf')](_0x47de86['body'][_0x3b5a('0x6c')],_[_0x3b5a('0xb0')](_0x47de86[_0x3b5a('0x59')],[_0x3b5a('0x6c'),'id'])||{})[_0x3b5a('0x93')](function(_0x14ba7d){for(var _0x5b8681=0x0;_0x5b8681<_0x47de86[_0x3b5a('0x59')][_0x3b5a('0x6c')][_0x3b5a('0x48')];_0x5b8681+=0x1){socket['emit']('userOpenchannelAccount:save',{'UserId':Number(_0x47de86['body'][_0x3b5a('0x6c')][_0x5b8681]),'OpenchannelAccountId':Number(_0x47de86['params']['id'])});}return _0x14ba7d;});}})[_0x3b5a('0x22')](respondWithResult(_0x280737,null))[_0x3b5a('0x53')](handleError(_0x280737,null));};exports['removeAgents']=function(_0x246072,_0x3fc8ac,_0x2a95d7){return db[_0x3b5a('0x56')][_0x3b5a('0x63')]({'where':{'id':_0x246072[_0x3b5a('0x55')]['id']}})[_0x3b5a('0x22')](handleEntityNotFound(_0x3fc8ac,null))[_0x3b5a('0x22')](function(_0x3e285d){if(_0x3e285d){return _0x3e285d[_0x3b5a('0xb1')](_0x246072['query']['ids'])[_0x3b5a('0x22')](function(){if(_[_0x3b5a('0xb2')](_0x246072[_0x3b5a('0x42')][_0x3b5a('0x6c')])){for(var _0x32fede=0x0;_0x32fede<_0x246072[_0x3b5a('0x42')][_0x3b5a('0x6c')][_0x3b5a('0x48')];_0x32fede+=0x1){socket[_0x3b5a('0xb3')](_0x3b5a('0xb4'),{'UserId':Number(_0x246072[_0x3b5a('0x42')][_0x3b5a('0x6c')][_0x32fede]),'OpenchannelAccountId':Number(_0x246072['params']['id'])});}}else{socket['emit']('userOpenchannelAccount:remove',{'UserId':Number(_0x246072[_0x3b5a('0x42')][_0x3b5a('0x6c')]),'OpenchannelAccountId':Number(_0x246072[_0x3b5a('0x55')]['id'])});}});}})[_0x3b5a('0x22')](respondWithStatusCode(_0x3fc8ac,null))[_0x3b5a('0x53')](handleError(_0x3fc8ac,null));};exports[_0x3b5a('0xb5')]=function(_0xc4cdfe,_0x2ff393,_0x25091a){var _0xa4677={};var _0x2e0810={};var _0x4c26c6;var _0x5c8177;return db[_0x3b5a('0x56')]['findOne']({'where':{'id':_0xc4cdfe[_0x3b5a('0x55')]['id']}})[_0x3b5a('0x22')](handleEntityNotFound(_0x2ff393,null))[_0x3b5a('0x22')](function(_0x51d0fd){if(_0x51d0fd){_0x4c26c6=_0x51d0fd;_0x2e0810['model']=_[_0x3b5a('0x43')](db[_0x3b5a('0x9e')][_0x3b5a('0x57')]);_0x2e0810['query']=_[_0x3b5a('0x43')](_0xc4cdfe[_0x3b5a('0x42')]);_0x2e0810[_0x3b5a('0x44')]=_[_0x3b5a('0x45')](_0x2e0810['model'],_0x2e0810[_0x3b5a('0x42')]);_0xa4677[_0x3b5a('0x46')]=_[_0x3b5a('0x45')](_0x2e0810[_0x3b5a('0x41')],qs[_0x3b5a('0x47')](_0xc4cdfe['query'][_0x3b5a('0x47')]));_0xa4677[_0x3b5a('0x46')]=_0xa4677[_0x3b5a('0x46')][_0x3b5a('0x48')]?_0xa4677[_0x3b5a('0x46')]:_0x2e0810['model'];_0xa4677['order']=qs[_0x3b5a('0x4a')](_0xc4cdfe[_0x3b5a('0x42')][_0x3b5a('0x4a')]);_0xa4677[_0x3b5a('0x4b')]=qs[_0x3b5a('0x44')](_[_0x3b5a('0x6a')](_0xc4cdfe[_0x3b5a('0x42')],_0x2e0810[_0x3b5a('0x44')]));if(_0xc4cdfe[_0x3b5a('0x42')][_0x3b5a('0x4d')]){_0xa4677[_0x3b5a('0x4b')]=_[_0x3b5a('0x4e')](_0xa4677[_0x3b5a('0x4b')],{'$or':_[_0x3b5a('0x3f')](_0xa4677[_0x3b5a('0x46')],function(_0x1178d3){var _0x437e3b={};_0x437e3b[_0x1178d3]={'$like':'%'+_0xc4cdfe['query'][_0x3b5a('0x4d')]+'%'};return _0x437e3b;})});}_0xa4677=_['merge']({},_0xa4677,_0xc4cdfe['options']);return _0x4c26c6['getAgents'](_0xa4677);}})[_0x3b5a('0x22')](function(_0x451721){if(_0x451721){_0x5c8177=_0x451721[_0x3b5a('0x48')];if(!_0xc4cdfe[_0x3b5a('0x42')][_0x3b5a('0x6f')](_0x3b5a('0x69'))){_0xa4677[_0x3b5a('0x30')]=qs[_0x3b5a('0x30')](_0xc4cdfe[_0x3b5a('0x42')][_0x3b5a('0x30')]);_0xa4677[_0x3b5a('0x2f')]=qs['offset'](_0xc4cdfe[_0x3b5a('0x42')]['offset']);}return _0x4c26c6['getAgents'](_0xa4677);}})['then'](function(_0x4ff6c8){if(_0x4ff6c8){return _0x4ff6c8?{'count':_0x5c8177,'rows':_0x4ff6c8}:null;}})['then'](respondWithResult(_0x2ff393,null))[_0x3b5a('0x53')](handleError(_0x2ff393,null));};exports[_0x3b5a('0x3b')]=function(_0x10e0fb,_0x5f401f,_0x345eb9){var _0xbd832f,_0x325251,_0x53aa67;if(_[_0x3b5a('0x7b')](_0x10e0fb[_0x3b5a('0x59')]['body'])||_0x10e0fb[_0x3b5a('0x59')][_0x3b5a('0x59')]===''){throw new db['Sequelize'][(_0x3b5a('0x75'))](_0x3b5a('0x7e'));}if(_[_0x3b5a('0x7b')](_0x10e0fb[_0x3b5a('0x59')]['to'])){}_0xbd832f=_0x10e0fb['body']['to'];return db[_0x3b5a('0x56')]['findOne']({'where':{'id':_0x10e0fb[_0x3b5a('0x55')]['id']}})['then'](handleEntityNotFound(_0x5f401f,null))[_0x3b5a('0x22')](function(_0x9fa277){if(_0x9fa277){return db['OpenchannelAccount']['find']({'where':{'id':_0x9fa277['id']},'include':[{'model':db['CmList'],'as':_0x3b5a('0x83'),'include':[{'model':db[_0x3b5a('0x73')],'as':_0x3b5a('0x84'),'where':{[_0x9fa277[_0x3b5a('0x7f')]]:_0xbd832f},'limit':0x1,'order':[[_0x3b5a('0x78'),_0x3b5a('0x85')]]}]}]})[_0x3b5a('0x22')](handleEntityNotFound(_0x5f401f,null))[_0x3b5a('0x22')](function(_0x584ad2){if(_0x584ad2&&_0x584ad2['List']){_0x325251=_0x584ad2[_0x3b5a('0x5b')]({'plain':!![]});if(_0x325251[_0x3b5a('0x83')]&&_0x325251['List'][_0x3b5a('0x84')][_0x3b5a('0x48')]){return _0x325251[_0x3b5a('0x83')][_0x3b5a('0x84')][0x0];}return db[_0x3b5a('0x73')][_0x3b5a('0x58')](_['defaults'](_0x10e0fb[_0x3b5a('0x59')],{'firstName':_0xbd832f,[_0x584ad2['mapKey']]:_0xbd832f,'phone':_0xbd832f,'ListId':_0x325251[_0x3b5a('0x7a')]}));}})['then'](handleEntityNotFound(_0x5f401f,null))[_0x3b5a('0x22')](function(_0x1ff5bc){if(_0x1ff5bc){_0x53aa67=_0x1ff5bc;return db[_0x3b5a('0x91')]['find']({'where':{'ContactId':_0x53aa67['id'],'closed':![],'OpenchannelAccountId':_0x325251['id']}})['then'](function(_0x48fa65){if(_0x48fa65){return[_0x48fa65,![]];}return db[_0x3b5a('0x91')][_0x3b5a('0x58')]({'UserId':_0x10e0fb['user']['id'],'ContactId':_0x53aa67['id'],'OpenchannelAccountId':_0x325251['id'],'lastMsgDirection':'out','Messages':[_['merge'](_0x10e0fb[_0x3b5a('0x59')],{'read':![],'body':_0x10e0fb['body']['body'],'OpenchannelAccountId':_0x325251['id'],'UserId':_0x10e0fb[_0x3b5a('0x5a')]['id'],'ContactId':_0x53aa67['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0x3b5a('0xb6')}]})[_0x3b5a('0x22')](function(_0x345c44){return[_0x345c44,!![]];});});}})['spread'](function(_0x96253,_0x4b34ed){if(_0x4b34ed){return _0x96253;}return db[_0x3b5a('0x9b')][_0x3b5a('0x58')](_[_0x3b5a('0x4e')](_0x10e0fb[_0x3b5a('0x59')],{'read':![],'body':_0x10e0fb['body']['body'],'OpenchannelAccountId':_0x325251['id'],'OpenchannelInteractionId':_0x96253['id'],'UserId':_0x10e0fb[_0x3b5a('0x5a')]['id'],'ContactId':_0x53aa67['id']}))[_0x3b5a('0x22')](function(_0x1c0c85){_0x96253[_0x3b5a('0xb7')][_0x3b5a('0xb6')]=[];_0x96253[_0x3b5a('0xb7')][_0x3b5a('0xb6')][_0x3b5a('0x98')](_0x1c0c85[_0x3b5a('0xb7')]);return _0x96253;});});}})[_0x3b5a('0x22')](respondWithResult(_0x5f401f,null))[_0x3b5a('0x53')](handleError(_0x5f401f,null));};
\ No newline at end of file
index d924d05..5e75207 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e6c=['../../mysqldb','setMaxListeners','save','emit','hook','exports','events'];(function(_0x2f9471,_0x1eb1fb){var _0x5aa305=function(_0x146120){while(--_0x146120){_0x2f9471['push'](_0x2f9471['shift']());}};_0x5aa305(++_0x1eb1fb);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6e6c[_0x14add3];return _0x4a174f;};'use strict';var EventEmitter=require(_0xc6e6('0x0'));var OpenchannelAccount=require(_0xc6e6('0x1'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0xc6e6('0x2')](0x0);var events={'afterCreate':_0xc6e6('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x2e97f5){return function(_0x5a9e2b,_0x40b7e1,_0x4b13f0){OpenchannelAccountEvents[_0xc6e6('0x4')](_0x2e97f5+':'+_0x5a9e2b['id'],_0x5a9e2b);OpenchannelAccountEvents[_0xc6e6('0x4')](_0x2e97f5,_0x5a9e2b);_0x4b13f0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelAccount[_0xc6e6('0x5')](e,emitEvent(event));}}module[_0xc6e6('0x6')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0xbdb7=['save','update','remove','hasOwnProperty','hook','events','../../mysqldb','OpenchannelAccount','setMaxListeners'];(function(_0xe6d8b9,_0x5abddb){var _0x27a27b=function(_0x570651){while(--_0x570651){_0xe6d8b9['push'](_0xe6d8b9['shift']());}};_0x27a27b(++_0x5abddb);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x117821,_0xaa1933){_0x117821=_0x117821-0x0;var _0x4ae9ff=_0xbdb7[_0x117821];return _0x4ae9ff;};'use strict';var EventEmitter=require(_0x7bdb('0x0'));var OpenchannelAccount=require(_0x7bdb('0x1'))['db'][_0x7bdb('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x7bdb('0x3')](0x0);var events={'afterCreate':_0x7bdb('0x4'),'afterUpdate':_0x7bdb('0x5'),'afterDestroy':_0x7bdb('0x6')};function emitEvent(_0x2c7e07){return function(_0x46c068,_0x47aec5,_0x28542c){OpenchannelAccountEvents['emit'](_0x2c7e07+':'+_0x46c068['id'],_0x46c068);OpenchannelAccountEvents['emit'](_0x2c7e07,_0x46c068);_0x28542c(null);};}for(var e in events){if(events[_0x7bdb('0x7')](e)){var event=events[e];OpenchannelAccount[_0x7bdb('0x8')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
index 4e9ee98..50cfcf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../config/environment','./openchannelAccount.attributes','exports','define','OpenchannelAccount','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0xfeaca6,_0xd8181){var _0x5ec051=function(_0x14519e){while(--_0x14519e){_0xfeaca6['push'](_0xfeaca6['shift']());}};_0x5ec051(++_0xd8181);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./openchannelAccount.attributes','exports','define','OpenchannelAccount','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x2fe407,_0x26ec31){var _0x407202=function(_0x1733f8){while(--_0x1733f8){_0x2fe407['push'](_0x2fe407['shift']());}};_0x407202(++_0x26ec31);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0430c86..95cc71b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc29b=['rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x20aeca,_0x42b7cf){var _0x1ba365=function(_0x2c7ee6){while(--_0x2c7ee6){_0x20aeca['push'](_0x20aeca['shift']());}};_0x1ba365(++_0x42b7cf);}(_0xc29b,0x12d));var _0xbc29=function(_0x1bd54e,_0x31fd82){_0x1bd54e=_0x1bd54e-0x0;var _0x286879=_0xc29b[_0x1bd54e];return _0x286879;};'use strict';var _=require(_0xbc29('0x0'));var util=require(_0xbc29('0x1'));var moment=require(_0xbc29('0x2'));var BPromise=require('bluebird');var rs=require(_0xbc29('0x3'));var fs=require('fs');var Redis=require(_0xbc29('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbc29('0x5'));var logger=require(_0xbc29('0x6'))(_0xbc29('0x7'));var config=require(_0xbc29('0x8'));var jayson=require(_0xbc29('0x9'));var client=jayson[_0xbc29('0xa')][_0xbc29('0xb')]({'port':0x232a});config[_0xbc29('0xc')]=_[_0xbc29('0xd')](config[_0xbc29('0xc')],{'host':_0xbc29('0xe'),'port':0x18eb});var socket=require(_0xbc29('0xf'))(new Redis(config[_0xbc29('0xc')]));require(_0xbc29('0x10'))[_0xbc29('0x11')](socket);function respondWithRpcPromise(_0x36d1e3,_0x13a581,_0x2f591c){return new BPromise(function(_0x35ece9,_0x2710ad){return client['request'](_0x36d1e3,_0x2f591c)[_0xbc29('0x12')](function(_0x888953){logger[_0xbc29('0x13')](_0xbc29('0x14'),_0x13a581,_0xbc29('0x15'));logger[_0xbc29('0x16')](_0xbc29('0x17'),_0x13a581,'request\x20sent',JSON[_0xbc29('0x18')](_0x888953));if(_0x888953[_0xbc29('0x19')]){if(_0x888953[_0xbc29('0x19')]['code']===0x1f4){logger['error'](_0xbc29('0x14'),_0x13a581,_0x888953['error'][_0xbc29('0x1a')]);return _0x2710ad(_0x888953[_0xbc29('0x19')][_0xbc29('0x1a')]);}logger['error'](_0xbc29('0x14'),_0x13a581,_0x888953['error'][_0xbc29('0x1a')]);return _0x35ece9(_0x888953[_0xbc29('0x19')][_0xbc29('0x1a')]);}else{logger[_0xbc29('0x13')](_0xbc29('0x14'),_0x13a581,_0xbc29('0x15'));_0x35ece9(_0x888953['result'][_0xbc29('0x1a')]);}})[_0xbc29('0x1b')](function(_0x4eadbe){logger['error'](_0xbc29('0x14'),_0x13a581,_0x4eadbe);_0x2710ad(_0x4eadbe);});});}
\ No newline at end of file
+var _0x4522=['register','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','message','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket'];(function(_0x3f4d55,_0x21aca6){var _0x3e9d17=function(_0x4ec309){while(--_0x4ec309){_0x3f4d55['push'](_0x3f4d55['shift']());}};_0x3e9d17(++_0x21aca6);}(_0x4522,0x1a0));var _0x2452=function(_0x58998d,_0x154489){_0x58998d=_0x58998d-0x0;var _0xc1bc=_0x4522[_0x58998d];return _0xc1bc;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x2452('0x0'));var BPromise=require(_0x2452('0x1'));var rs=require(_0x2452('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2452('0x3'))['db'];var utils=require(_0x2452('0x4'));var logger=require(_0x2452('0x5'))(_0x2452('0x6'));var config=require(_0x2452('0x7'));var jayson=require(_0x2452('0x8'));var client=jayson[_0x2452('0x9')][_0x2452('0xa')]({'port':0x232a});config[_0x2452('0xb')]=_[_0x2452('0xc')](config[_0x2452('0xb')],{'host':_0x2452('0xd'),'port':0x18eb});var socket=require(_0x2452('0xe'))(new Redis(config[_0x2452('0xb')]));require(_0x2452('0xf'))[_0x2452('0x10')](socket);function respondWithRpcPromise(_0x5a38e0,_0x5dc630,_0x695088){return new BPromise(function(_0x5bf6cf,_0x4d665c){return client[_0x2452('0x11')](_0x5a38e0,_0x695088)[_0x2452('0x12')](function(_0x1086ef){logger[_0x2452('0x13')](_0x2452('0x14'),_0x5dc630,_0x2452('0x15'));logger[_0x2452('0x16')](_0x2452('0x17'),_0x5dc630,'request\x20sent',JSON['stringify'](_0x1086ef));if(_0x1086ef['error']){if(_0x1086ef[_0x2452('0x18')]['code']===0x1f4){logger[_0x2452('0x18')]('OpenchannelAccount,\x20%s,\x20%s',_0x5dc630,_0x1086ef[_0x2452('0x18')][_0x2452('0x19')]);return _0x4d665c(_0x1086ef['error'][_0x2452('0x19')]);}logger['error'](_0x2452('0x14'),_0x5dc630,_0x1086ef[_0x2452('0x18')][_0x2452('0x19')]);return _0x5bf6cf(_0x1086ef[_0x2452('0x18')]['message']);}else{logger[_0x2452('0x13')](_0x2452('0x14'),_0x5dc630,'request\x20sent');_0x5bf6cf(_0x1086ef['result'][_0x2452('0x19')]);}})[_0x2452('0x1a')](function(_0x377c12){logger['error'](_0x2452('0x14'),_0x5dc630,_0x377c12);_0x4d665c(_0x377c12);});});}
\ No newline at end of file
index 0839b35..4d776d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d5a=['openchannelAccount:','./openchannelAccount.events','save','remove','update','removeListener','register'];(function(_0x128ee7,_0xbfbe00){var _0x38450a=function(_0x570931){while(--_0x570931){_0x128ee7['push'](_0x128ee7['shift']());}};_0x38450a(++_0xbfbe00);}(_0x7d5a,0x17b));var _0xa7d5=function(_0x3c626a,_0xa3bc94){_0x3c626a=_0x3c626a-0x0;var _0x336d75=_0x7d5a[_0x3c626a];return _0x336d75;};'use strict';var OpenchannelAccountEvents=require(_0xa7d5('0x0'));var events=[_0xa7d5('0x1'),_0xa7d5('0x2'),_0xa7d5('0x3')];function createListener(_0x185fa0,_0x16d639){return function(_0x10df7a){_0x16d639['emit'](_0x185fa0,_0x10df7a);};}function removeListener(_0x5e41d3,_0x36059b){return function(){OpenchannelAccountEvents[_0xa7d5('0x4')](_0x5e41d3,_0x36059b);};}exports[_0xa7d5('0x5')]=function(_0x284432){for(var _0x1e6722=0x0,_0x80431a=events['length'];_0x1e6722<_0x80431a;_0x1e6722++){var _0x21ccfa=events[_0x1e6722];var _0xb5bcd2=createListener(_0xa7d5('0x6')+_0x21ccfa,_0x284432);OpenchannelAccountEvents['on'](_0x21ccfa,_0xb5bcd2);}};
\ No newline at end of file
+var _0x1cf3=['emit','removeListener','register','length','openchannelAccount:','./openchannelAccount.events','save','remove','update'];(function(_0x220b45,_0x4da80f){var _0x2e1a55=function(_0x250ccd){while(--_0x250ccd){_0x220b45['push'](_0x220b45['shift']());}};_0x2e1a55(++_0x4da80f);}(_0x1cf3,0x1be));var _0x31cf=function(_0x18ec99,_0x36601e){_0x18ec99=_0x18ec99-0x0;var _0x286847=_0x1cf3[_0x18ec99];return _0x286847;};'use strict';var OpenchannelAccountEvents=require(_0x31cf('0x0'));var events=[_0x31cf('0x1'),_0x31cf('0x2'),_0x31cf('0x3')];function createListener(_0x54dff7,_0x20aa57){return function(_0x5a2ae7){_0x20aa57[_0x31cf('0x4')](_0x54dff7,_0x5a2ae7);};}function removeListener(_0x442009,_0x44d64d){return function(){OpenchannelAccountEvents[_0x31cf('0x5')](_0x442009,_0x44d64d);};}exports[_0x31cf('0x6')]=function(_0x44dd04){for(var _0x2b7cd4=0x0,_0x1830b4=events[_0x31cf('0x7')];_0x2b7cd4<_0x1830b4;_0x2b7cd4++){var _0x6be80=events[_0x2b7cd4];var _0x3f7b2e=createListener(_0x31cf('0x8')+_0x6be80,_0x44dd04);OpenchannelAccountEvents['on'](_0x6be80,_0x3f7b2e);}};
\ No newline at end of file
index 83d2af0..142d978 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x492c=['fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelApplication.controller','get','isAuthenticated','/:id','post','create','put','delete','exports','path','connect-timeout'];(function(_0x128b26,_0x5b77f7){var _0x2b2d48=function(_0x1c9aa7){while(--_0x1c9aa7){_0x128b26['push'](_0x128b26['shift']());}};_0x2b2d48(++_0x5b77f7);}(_0x492c,0x1cc));var _0xc492=function(_0x156be7,_0x96808c){_0x156be7=_0x156be7-0x0;var _0x43ea73=_0x492c[_0x156be7];return _0x43ea73;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc492('0x0'));var timeout=require(_0xc492('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xc492('0x2'));var auth=require(_0xc492('0x3'));var interaction=require(_0xc492('0x4'));var config=require('../../config/environment');var controller=require(_0xc492('0x5'));router[_0xc492('0x6')]('/',auth[_0xc492('0x7')](),controller['index']);router[_0xc492('0x6')](_0xc492('0x8'),auth[_0xc492('0x7')](),controller['show']);router[_0xc492('0x9')]('/',auth[_0xc492('0x7')](),controller[_0xc492('0xa')]);router[_0xc492('0xb')](_0xc492('0x8'),auth['isAuthenticated'](),controller['update']);router[_0xc492('0xc')](_0xc492('0x8'),auth[_0xc492('0x7')](),controller['destroy']);module[_0xc492('0xd')]=router;
\ No newline at end of file
+var _0xbf55=['update','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','show','create','put'];(function(_0x5d4d78,_0x1977c7){var _0x4b3f18=function(_0x2e360e){while(--_0x2e360e){_0x5d4d78['push'](_0x5d4d78['shift']());}};_0x4b3f18(++_0x1977c7);}(_0xbf55,0x1d3));var _0x5bf5=function(_0x56806a,_0x4d414e){_0x56806a=_0x56806a-0x0;var _0x4eeb24=_0xbf55[_0x56806a];return _0x4eeb24;};'use strict';var multer=require(_0x5bf5('0x0'));var util=require(_0x5bf5('0x1'));var path=require('path');var timeout=require(_0x5bf5('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5bf5('0x3'));var auth=require(_0x5bf5('0x4'));var interaction=require(_0x5bf5('0x5'));var config=require(_0x5bf5('0x6'));var controller=require('./openchannelApplication.controller');router['get']('/',auth[_0x5bf5('0x7')](),controller[_0x5bf5('0x8')]);router['get'](_0x5bf5('0x9'),auth[_0x5bf5('0x7')](),controller[_0x5bf5('0xa')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5bf5('0xb')]);router[_0x5bf5('0xc')](_0x5bf5('0x9'),auth[_0x5bf5('0x7')](),controller[_0x5bf5('0xd')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x5bf5('0xe')]=router;
\ No newline at end of file
index 88ccd02..c4287cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9976=['INTEGER','noop','TEXT','STRING','*,*,*,*','exports'];(function(_0x204c33,_0x307c00){var _0x2adbd7=function(_0x23836c){while(--_0x23836c){_0x204c33['push'](_0x204c33['shift']());}};_0x2adbd7(++_0x307c00);}(_0x9976,0x113));var _0x6997=function(_0x3a1131,_0x1f4c0e){_0x3a1131=_0x3a1131-0x0;var _0x1bf96e=_0x9976[_0x3a1131];return _0x1bf96e;};'use strict';var Sequelize=require('sequelize');module[_0x6997('0x0')]={'priority':{'type':Sequelize[_0x6997('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x6997('0x2')},'appdata':{'type':Sequelize[_0x6997('0x3')]()},'description':{'type':Sequelize[_0x6997('0x4')]},'interval':{'type':Sequelize[_0x6997('0x4')],'defaultValue':_0x6997('0x5')}};
\ No newline at end of file
+var _0xd0ce=['STRING','noop','TEXT','*,*,*,*','exports','INTEGER'];(function(_0x48387e,_0x14587e){var _0x1c6d5a=function(_0x3945ca){while(--_0x3945ca){_0x48387e['push'](_0x48387e['shift']());}};_0x1c6d5a(++_0x14587e);}(_0xd0ce,0x166));var _0xed0c=function(_0x5806c3,_0x5105d8){_0x5806c3=_0x5806c3-0x0;var _0x48ac77=_0xd0ce[_0x5806c3];return _0x48ac77;};'use strict';var Sequelize=require('sequelize');module[_0xed0c('0x0')]={'priority':{'type':Sequelize[_0xed0c('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xed0c('0x2')],'allowNull':![],'defaultValue':_0xed0c('0x3')},'appdata':{'type':Sequelize[_0xed0c('0x4')]()},'description':{'type':Sequelize[_0xed0c('0x2')]},'interval':{'type':Sequelize[_0xed0c('0x2')],'defaultValue':_0xed0c('0x5')}};
\ No newline at end of file
index d54c488..6a9c229 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2d0=['stack','name','send','index','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','OpenchannelApplication','findAll','rows','catch','params','rawAttributes','fields','find','create','body','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then'];(function(_0x43ec4d,_0xb0a15c){var _0x3be6de=function(_0x7a8ed9){while(--_0x7a8ed9){_0x43ec4d['push'](_0x43ec4d['shift']());}};_0x3be6de(++_0xb0a15c);}(_0xe2d0,0x70));var _0x0e2d=function(_0x1c927c,_0x43ab6f){_0x1c927c=_0x1c927c-0x0;var _0x4f9c30=_0xe2d0[_0x1c927c];return _0x4f9c30;};'use strict';var emlformat=require(_0x0e2d('0x0'));var rimraf=require(_0x0e2d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0e2d('0x2'));var rp=require('request-promise');var moment=require(_0x0e2d('0x3'));var BPromise=require(_0x0e2d('0x4'));var Mustache=require(_0x0e2d('0x5'));var util=require(_0x0e2d('0x6'));var path=require(_0x0e2d('0x7'));var sox=require(_0x0e2d('0x8'));var csv=require(_0x0e2d('0x9'));var ejs=require(_0x0e2d('0xa'));var fs=require('fs');var fs_extra=require(_0x0e2d('0xb'));var _=require('lodash');var squel=require(_0x0e2d('0xc'));var crypto=require(_0x0e2d('0xd'));var jsforce=require(_0x0e2d('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x0e2d('0x9'));var querystring=require(_0x0e2d('0xf'));var Papa=require(_0x0e2d('0x10'));var Redis=require(_0x0e2d('0x11'));var authService=require(_0x0e2d('0x12'));var qs=require(_0x0e2d('0x13'));var as=require(_0x0e2d('0x14'));var hardwareService=require(_0x0e2d('0x15'));var logger=require(_0x0e2d('0x16'))('api');var utils=require(_0x0e2d('0x17'));var config=require(_0x0e2d('0x18'));var licenseUtil=require(_0x0e2d('0x19'));var db=require(_0x0e2d('0x1a'))['db'];function respondWithStatusCode(_0x1d7953,_0x310e2a){_0x310e2a=_0x310e2a||0xcc;return function(_0x18bbb7){if(_0x18bbb7){return _0x1d7953['sendStatus'](_0x310e2a);}return _0x1d7953[_0x0e2d('0x1b')](_0x310e2a)[_0x0e2d('0x1c')]();};}function respondWithResult(_0x5de1bb,_0x357d79){_0x357d79=_0x357d79||0xc8;return function(_0x5686c2){if(_0x5686c2){return _0x5de1bb[_0x0e2d('0x1b')](_0x357d79)[_0x0e2d('0x1d')](_0x5686c2);}};}function respondWithFilteredResult(_0x21e168,_0xdfef10){return function(_0x29089b){if(_0x29089b){var _0x5c60c9=typeof _0xdfef10[_0x0e2d('0x1e')]===_0x0e2d('0x1f')&&typeof _0xdfef10[_0x0e2d('0x20')]===_0x0e2d('0x1f');var _0x4bf60a=_0x29089b['count'];var _0x2c9d97=_0x5c60c9?0x0:_0xdfef10['offset'];var _0x4101ce=_0x5c60c9?_0x29089b[_0x0e2d('0x21')]:_0xdfef10[_0x0e2d('0x1e')]+_0xdfef10['limit'];var _0x3fbb35;if(_0x4101ce>=_0x4bf60a){_0x4101ce=_0x4bf60a;_0x3fbb35=0xc8;}else{_0x3fbb35=0xce;}_0x21e168['status'](_0x3fbb35);return _0x21e168[_0x0e2d('0x22')](_0x0e2d('0x23'),_0x2c9d97+'-'+_0x4101ce+'/'+_0x4bf60a)['json'](_0x29089b);}return null;};}function patchUpdates(_0xb5a983){return function(_0x1d7abe){try{jsonpatch[_0x0e2d('0x24')](_0x1d7abe,_0xb5a983,!![]);}catch(_0x2abcc4){return BPromise[_0x0e2d('0x25')](_0x2abcc4);}return _0x1d7abe['save']();};}function saveUpdates(_0x3e1954,_0xdfb1f6){return function(_0x43d58d){if(_0x43d58d){return _0x43d58d[_0x0e2d('0x26')](_0x3e1954)[_0x0e2d('0x27')](function(_0x34a16b){return _0x34a16b;});}return null;};}function removeEntity(_0x3fbb8b,_0x5e9017){return function(_0x4143de){if(_0x4143de){return _0x4143de['destroy']()[_0x0e2d('0x27')](function(){_0x3fbb8b[_0x0e2d('0x1b')](0xcc)[_0x0e2d('0x1c')]();});}};}function handleEntityNotFound(_0x5291d5,_0x1052c9){return function(_0x3f6bbe){if(!_0x3f6bbe){_0x5291d5['sendStatus'](0x194);}return _0x3f6bbe;};}function handleError(_0x171b95,_0x31406e){_0x31406e=_0x31406e||0x1f4;return function(_0x20d9b8){logger['error'](_0x20d9b8[_0x0e2d('0x28')]);if(_0x20d9b8[_0x0e2d('0x29')]){delete _0x20d9b8[_0x0e2d('0x29')];}_0x171b95[_0x0e2d('0x1b')](_0x31406e)[_0x0e2d('0x2a')](_0x20d9b8);};}exports[_0x0e2d('0x2b')]=function(_0x37c89d,_0x2f3eb8){var _0x51c2bf={},_0x1ac406={},_0x76b4a={'count':0x0,'rows':[]};var _0x46c2eb=_['map'](db['OpenchannelApplication']['rawAttributes'],function(_0x150463){return{'name':_0x150463[_0x0e2d('0x2c')],'type':_0x150463[_0x0e2d('0x2d')][_0x0e2d('0x2e')]};});_0x1ac406[_0x0e2d('0x2f')]=_[_0x0e2d('0x30')](_0x46c2eb,_0x0e2d('0x29'));_0x1ac406['query']=_[_0x0e2d('0x31')](_0x37c89d[_0x0e2d('0x32')]);_0x1ac406[_0x0e2d('0x33')]=_[_0x0e2d('0x34')](_0x1ac406[_0x0e2d('0x2f')],_0x1ac406[_0x0e2d('0x32')]);_0x51c2bf[_0x0e2d('0x35')]=_['intersection'](_0x1ac406[_0x0e2d('0x2f')],qs['fields'](_0x37c89d[_0x0e2d('0x32')]['fields']));_0x51c2bf[_0x0e2d('0x35')]=_0x51c2bf['attributes'][_0x0e2d('0x36')]?_0x51c2bf[_0x0e2d('0x35')]:_0x1ac406['model'];if(!_0x37c89d[_0x0e2d('0x32')][_0x0e2d('0x37')](_0x0e2d('0x38'))){_0x51c2bf[_0x0e2d('0x20')]=qs[_0x0e2d('0x20')](_0x37c89d['query'][_0x0e2d('0x20')]);_0x51c2bf[_0x0e2d('0x1e')]=qs['offset'](_0x37c89d[_0x0e2d('0x32')][_0x0e2d('0x1e')]);}_0x51c2bf['order']=qs[_0x0e2d('0x39')](_0x37c89d[_0x0e2d('0x32')][_0x0e2d('0x39')]);_0x51c2bf[_0x0e2d('0x3a')]=qs[_0x0e2d('0x33')](_[_0x0e2d('0x3b')](_0x37c89d[_0x0e2d('0x32')],_0x1ac406['filters']),_0x46c2eb);if(_0x37c89d['query']['filter']){_0x51c2bf[_0x0e2d('0x3a')]=_[_0x0e2d('0x3c')](_0x51c2bf[_0x0e2d('0x3a')],{'$or':_[_0x0e2d('0x30')](_0x46c2eb,function(_0xb0647a){if(_0xb0647a[_0x0e2d('0x2d')]!==_0x0e2d('0x3d')){var _0x23983a={};_0x23983a[_0xb0647a[_0x0e2d('0x29')]]={'$like':'%'+_0x37c89d[_0x0e2d('0x32')][_0x0e2d('0x3e')]+'%'};return _0x23983a;}})});}_0x51c2bf=_[_0x0e2d('0x3c')]({},_0x51c2bf,_0x37c89d[_0x0e2d('0x3f')]);var _0x5e0674={'where':_0x51c2bf[_0x0e2d('0x3a')]};return db['OpenchannelApplication'][_0x0e2d('0x21')](_0x5e0674)[_0x0e2d('0x27')](function(_0x38cf5d){_0x76b4a[_0x0e2d('0x21')]=_0x38cf5d;if(_0x37c89d[_0x0e2d('0x32')][_0x0e2d('0x40')]){_0x51c2bf[_0x0e2d('0x41')]=[{'all':!![]}];}return db[_0x0e2d('0x42')][_0x0e2d('0x43')](_0x51c2bf);})[_0x0e2d('0x27')](function(_0x16d2fd){_0x76b4a[_0x0e2d('0x44')]=_0x16d2fd;return _0x76b4a;})[_0x0e2d('0x27')](respondWithFilteredResult(_0x2f3eb8,_0x51c2bf))[_0x0e2d('0x45')](handleError(_0x2f3eb8,null));};exports['show']=function(_0x437309,_0x35aeaa){var _0x5cc004={'raw':!![],'where':{'id':_0x437309[_0x0e2d('0x46')]['id']}},_0x3feb95={};_0x3feb95['model']=_[_0x0e2d('0x31')](db['OpenchannelApplication'][_0x0e2d('0x47')]);_0x3feb95[_0x0e2d('0x32')]=_[_0x0e2d('0x31')](_0x437309[_0x0e2d('0x32')]);_0x3feb95['filters']=_['intersection'](_0x3feb95[_0x0e2d('0x2f')],_0x3feb95[_0x0e2d('0x32')]);_0x5cc004[_0x0e2d('0x35')]=_[_0x0e2d('0x34')](_0x3feb95[_0x0e2d('0x2f')],qs[_0x0e2d('0x48')](_0x437309[_0x0e2d('0x32')][_0x0e2d('0x48')]));_0x5cc004[_0x0e2d('0x35')]=_0x5cc004[_0x0e2d('0x35')][_0x0e2d('0x36')]?_0x5cc004['attributes']:_0x3feb95[_0x0e2d('0x2f')];if(_0x437309[_0x0e2d('0x32')][_0x0e2d('0x40')]){_0x5cc004[_0x0e2d('0x41')]=[{'all':!![]}];}_0x5cc004=_['merge']({},_0x5cc004,_0x437309[_0x0e2d('0x3f')]);return db['OpenchannelApplication'][_0x0e2d('0x49')](_0x5cc004)[_0x0e2d('0x27')](handleEntityNotFound(_0x35aeaa,null))[_0x0e2d('0x27')](respondWithResult(_0x35aeaa,null))[_0x0e2d('0x45')](handleError(_0x35aeaa,null));};exports['create']=function(_0x476f09,_0x4aca57){return db[_0x0e2d('0x42')][_0x0e2d('0x4a')](_0x476f09[_0x0e2d('0x4b')],{})[_0x0e2d('0x27')](respondWithResult(_0x4aca57,0xc9))[_0x0e2d('0x45')](handleError(_0x4aca57,null));};exports[_0x0e2d('0x26')]=function(_0x10c48f,_0x4382c8){if(_0x10c48f[_0x0e2d('0x4b')]['id']){delete _0x10c48f['body']['id'];}return db[_0x0e2d('0x42')][_0x0e2d('0x49')]({'where':{'id':_0x10c48f[_0x0e2d('0x46')]['id']}})['then'](handleEntityNotFound(_0x4382c8,null))['then'](saveUpdates(_0x10c48f[_0x0e2d('0x4b')],null))['then'](respondWithResult(_0x4382c8,null))[_0x0e2d('0x45')](handleError(_0x4382c8,null));};exports['destroy']=function(_0x2c9ea5,_0x2f7699){return db[_0x0e2d('0x42')][_0x0e2d('0x49')]({'where':{'id':_0x2c9ea5[_0x0e2d('0x46')]['id']}})['then'](handleEntityNotFound(_0x2f7699,null))[_0x0e2d('0x27')](removeEntity(_0x2f7699,null))[_0x0e2d('0x45')](handleError(_0x2f7699,null));};
\ No newline at end of file
+var _0x74aa=['attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','rows','catch','rawAttributes','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','Content-Range','save','update','then','destroy','sendStatus','stack','name','send','map','OpenchannelApplication','fieldName','type','key','model','query','keys','filters','intersection'];(function(_0x484f85,_0x55a49a){var _0x3e59d5=function(_0x2b077a){while(--_0x2b077a){_0x484f85['push'](_0x484f85['shift']());}};_0x3e59d5(++_0x55a49a);}(_0x74aa,0x17c));var _0xa74a=function(_0x36892b,_0xdb1d76){_0x36892b=_0x36892b-0x0;var _0x1c82c1=_0x74aa[_0x36892b];return _0x1c82c1;};'use strict';var emlformat=require(_0xa74a('0x0'));var rimraf=require(_0xa74a('0x1'));var zipdir=require(_0xa74a('0x2'));var jsonpatch=require(_0xa74a('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa74a('0x4'));var Mustache=require(_0xa74a('0x5'));var util=require('util');var path=require(_0xa74a('0x6'));var sox=require(_0xa74a('0x7'));var csv=require(_0xa74a('0x8'));var ejs=require(_0xa74a('0x9'));var fs=require('fs');var fs_extra=require(_0xa74a('0xa'));var _=require(_0xa74a('0xb'));var squel=require(_0xa74a('0xc'));var crypto=require(_0xa74a('0xd'));var jsforce=require(_0xa74a('0xe'));var deskjs=require(_0xa74a('0xf'));var toCsv=require(_0xa74a('0x8'));var querystring=require(_0xa74a('0x10'));var Papa=require(_0xa74a('0x11'));var Redis=require(_0xa74a('0x12'));var authService=require(_0xa74a('0x13'));var qs=require(_0xa74a('0x14'));var as=require(_0xa74a('0x15'));var hardwareService=require(_0xa74a('0x16'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa74a('0x17'));var db=require(_0xa74a('0x18'))['db'];function respondWithStatusCode(_0xdbea6,_0x22b2d9){_0x22b2d9=_0x22b2d9||0xcc;return function(_0x4ab023){if(_0x4ab023){return _0xdbea6['sendStatus'](_0x22b2d9);}return _0xdbea6[_0xa74a('0x19')](_0x22b2d9)[_0xa74a('0x1a')]();};}function respondWithResult(_0xc6984b,_0x19ad2d){_0x19ad2d=_0x19ad2d||0xc8;return function(_0x33ca82){if(_0x33ca82){return _0xc6984b[_0xa74a('0x19')](_0x19ad2d)[_0xa74a('0x1b')](_0x33ca82);}};}function respondWithFilteredResult(_0x1a7751,_0x3e27b3){return function(_0x5dcb83){if(_0x5dcb83){var _0x4f66ab=typeof _0x3e27b3['offset']===_0xa74a('0x1c')&&typeof _0x3e27b3[_0xa74a('0x1d')]===_0xa74a('0x1c');var _0x4ad248=_0x5dcb83[_0xa74a('0x1e')];var _0x485442=_0x4f66ab?0x0:_0x3e27b3[_0xa74a('0x1f')];var _0x37cbbe=_0x4f66ab?_0x5dcb83[_0xa74a('0x1e')]:_0x3e27b3[_0xa74a('0x1f')]+_0x3e27b3[_0xa74a('0x1d')];var _0x350587;if(_0x37cbbe>=_0x4ad248){_0x37cbbe=_0x4ad248;_0x350587=0xc8;}else{_0x350587=0xce;}_0x1a7751[_0xa74a('0x19')](_0x350587);return _0x1a7751[_0xa74a('0x20')](_0xa74a('0x21'),_0x485442+'-'+_0x37cbbe+'/'+_0x4ad248)['json'](_0x5dcb83);}return null;};}function patchUpdates(_0xd10854){return function(_0x15d82a){try{jsonpatch['apply'](_0x15d82a,_0xd10854,!![]);}catch(_0x234ca0){return BPromise['reject'](_0x234ca0);}return _0x15d82a[_0xa74a('0x22')]();};}function saveUpdates(_0x577318,_0x18bef0){return function(_0x5b6a62){if(_0x5b6a62){return _0x5b6a62[_0xa74a('0x23')](_0x577318)[_0xa74a('0x24')](function(_0x380a5b){return _0x380a5b;});}return null;};}function removeEntity(_0x26d4ae,_0x1adc15){return function(_0x509ee9){if(_0x509ee9){return _0x509ee9[_0xa74a('0x25')]()[_0xa74a('0x24')](function(){_0x26d4ae[_0xa74a('0x19')](0xcc)[_0xa74a('0x1a')]();});}};}function handleEntityNotFound(_0x352d52,_0x48d1f1){return function(_0x2f34f6){if(!_0x2f34f6){_0x352d52[_0xa74a('0x26')](0x194);}return _0x2f34f6;};}function handleError(_0x1ce64d,_0x252f16){_0x252f16=_0x252f16||0x1f4;return function(_0x1f1395){logger['error'](_0x1f1395[_0xa74a('0x27')]);if(_0x1f1395['name']){delete _0x1f1395[_0xa74a('0x28')];}_0x1ce64d[_0xa74a('0x19')](_0x252f16)[_0xa74a('0x29')](_0x1f1395);};}exports['index']=function(_0x16cb40,_0x2507d9){var _0x34b29e={},_0x256824={},_0x37c1b8={'count':0x0,'rows':[]};var _0x267544=_[_0xa74a('0x2a')](db[_0xa74a('0x2b')]['rawAttributes'],function(_0x3a05bd){return{'name':_0x3a05bd[_0xa74a('0x2c')],'type':_0x3a05bd[_0xa74a('0x2d')][_0xa74a('0x2e')]};});_0x256824[_0xa74a('0x2f')]=_[_0xa74a('0x2a')](_0x267544,_0xa74a('0x28'));_0x256824[_0xa74a('0x30')]=_[_0xa74a('0x31')](_0x16cb40[_0xa74a('0x30')]);_0x256824[_0xa74a('0x32')]=_[_0xa74a('0x33')](_0x256824[_0xa74a('0x2f')],_0x256824[_0xa74a('0x30')]);_0x34b29e[_0xa74a('0x34')]=_[_0xa74a('0x33')](_0x256824[_0xa74a('0x2f')],qs[_0xa74a('0x35')](_0x16cb40[_0xa74a('0x30')]['fields']));_0x34b29e[_0xa74a('0x34')]=_0x34b29e['attributes'][_0xa74a('0x36')]?_0x34b29e['attributes']:_0x256824[_0xa74a('0x2f')];if(!_0x16cb40['query'][_0xa74a('0x37')](_0xa74a('0x38'))){_0x34b29e[_0xa74a('0x1d')]=qs[_0xa74a('0x1d')](_0x16cb40[_0xa74a('0x30')][_0xa74a('0x1d')]);_0x34b29e['offset']=qs[_0xa74a('0x1f')](_0x16cb40[_0xa74a('0x30')]['offset']);}_0x34b29e[_0xa74a('0x39')]=qs[_0xa74a('0x3a')](_0x16cb40[_0xa74a('0x30')]['sort']);_0x34b29e[_0xa74a('0x3b')]=qs[_0xa74a('0x32')](_[_0xa74a('0x3c')](_0x16cb40['query'],_0x256824[_0xa74a('0x32')]),_0x267544);if(_0x16cb40['query'][_0xa74a('0x3d')]){_0x34b29e[_0xa74a('0x3b')]=_[_0xa74a('0x3e')](_0x34b29e['where'],{'$or':_[_0xa74a('0x2a')](_0x267544,function(_0xedb967){if(_0xedb967[_0xa74a('0x2d')]!=='VIRTUAL'){var _0x33b12b={};_0x33b12b[_0xedb967[_0xa74a('0x28')]]={'$like':'%'+_0x16cb40[_0xa74a('0x30')][_0xa74a('0x3d')]+'%'};return _0x33b12b;}})});}_0x34b29e=_['merge']({},_0x34b29e,_0x16cb40['options']);var _0x5d2155={'where':_0x34b29e[_0xa74a('0x3b')]};return db['OpenchannelApplication']['count'](_0x5d2155)[_0xa74a('0x24')](function(_0x5594df){_0x37c1b8['count']=_0x5594df;if(_0x16cb40['query'][_0xa74a('0x3f')]){_0x34b29e[_0xa74a('0x40')]=[{'all':!![]}];}return db[_0xa74a('0x2b')]['findAll'](_0x34b29e);})[_0xa74a('0x24')](function(_0x232271){_0x37c1b8[_0xa74a('0x41')]=_0x232271;return _0x37c1b8;})[_0xa74a('0x24')](respondWithFilteredResult(_0x2507d9,_0x34b29e))[_0xa74a('0x42')](handleError(_0x2507d9,null));};exports['show']=function(_0x204a3d,_0xac13cc){var _0x2d77ee={'raw':!![],'where':{'id':_0x204a3d['params']['id']}},_0x265e11={};_0x265e11[_0xa74a('0x2f')]=_[_0xa74a('0x31')](db[_0xa74a('0x2b')][_0xa74a('0x43')]);_0x265e11['query']=_['keys'](_0x204a3d[_0xa74a('0x30')]);_0x265e11['filters']=_['intersection'](_0x265e11[_0xa74a('0x2f')],_0x265e11[_0xa74a('0x30')]);_0x2d77ee['attributes']=_[_0xa74a('0x33')](_0x265e11['model'],qs[_0xa74a('0x35')](_0x204a3d[_0xa74a('0x30')]['fields']));_0x2d77ee[_0xa74a('0x34')]=_0x2d77ee[_0xa74a('0x34')][_0xa74a('0x36')]?_0x2d77ee[_0xa74a('0x34')]:_0x265e11[_0xa74a('0x2f')];if(_0x204a3d[_0xa74a('0x30')][_0xa74a('0x3f')]){_0x2d77ee[_0xa74a('0x40')]=[{'all':!![]}];}_0x2d77ee=_[_0xa74a('0x3e')]({},_0x2d77ee,_0x204a3d['options']);return db[_0xa74a('0x2b')][_0xa74a('0x44')](_0x2d77ee)[_0xa74a('0x24')](handleEntityNotFound(_0xac13cc,null))[_0xa74a('0x24')](respondWithResult(_0xac13cc,null))[_0xa74a('0x42')](handleError(_0xac13cc,null));};exports[_0xa74a('0x45')]=function(_0x4aebc1,_0x26575a){return db['OpenchannelApplication'][_0xa74a('0x45')](_0x4aebc1[_0xa74a('0x46')],{})['then'](respondWithResult(_0x26575a,0xc9))[_0xa74a('0x42')](handleError(_0x26575a,null));};exports[_0xa74a('0x23')]=function(_0xfdd4fd,_0x4d7678){if(_0xfdd4fd[_0xa74a('0x46')]['id']){delete _0xfdd4fd[_0xa74a('0x46')]['id'];}return db[_0xa74a('0x2b')]['find']({'where':{'id':_0xfdd4fd[_0xa74a('0x47')]['id']}})[_0xa74a('0x24')](handleEntityNotFound(_0x4d7678,null))[_0xa74a('0x24')](saveUpdates(_0xfdd4fd['body'],null))[_0xa74a('0x24')](respondWithResult(_0x4d7678,null))[_0xa74a('0x42')](handleError(_0x4d7678,null));};exports['destroy']=function(_0x21c041,_0x521a11){return db[_0xa74a('0x2b')][_0xa74a('0x44')]({'where':{'id':_0x21c041[_0xa74a('0x47')]['id']}})[_0xa74a('0x24')](handleEntityNotFound(_0x521a11,null))[_0xa74a('0x24')](removeEntity(_0x521a11,null))[_0xa74a('0x42')](handleError(_0x521a11,null));};
\ No newline at end of file
index 5bd56b5..e133af9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb4d=['rimraf','../../config/environment','./openchannelApplication.attributes','exports','define','OpenchannelApplication','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3f7b0b,_0x52956e){var _0xe1f6d7=function(_0x3a2d7c){while(--_0x3a2d7c){_0x3f7b0b['push'](_0x3f7b0b['shift']());}};_0xe1f6d7(++_0x52956e);}(_0xeb4d,0x108));var _0xdeb4=function(_0x48996d,_0x2ae378){_0x48996d=_0x48996d-0x0;var _0xb3393e=_0xeb4d[_0x48996d];return _0xb3393e;};'use strict';var _=require(_0xdeb4('0x0'));var util=require(_0xdeb4('0x1'));var logger=require(_0xdeb4('0x2'))(_0xdeb4('0x3'));var moment=require(_0xdeb4('0x4'));var BPromise=require(_0xdeb4('0x5'));var rp=require(_0xdeb4('0x6'));var fs=require('fs');var path=require(_0xdeb4('0x7'));var rimraf=require(_0xdeb4('0x8'));var config=require(_0xdeb4('0x9'));var attributes=require(_0xdeb4('0xa'));module[_0xdeb4('0xb')]=function(_0x221973,_0x5d7fa6){return _0x221973[_0xdeb4('0xc')](_0xdeb4('0xd'),attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xdeb4('0xe'),'collate':_0xdeb4('0xf')});};
\ No newline at end of file
+var _0x6593=['lodash','util','api','moment','bluebird','rimraf','exports','define','OpenchannelApplication','openchannel_applications','utf8mb4'];(function(_0x394867,_0x351ce1){var _0x2e3e6b=function(_0x173a7e){while(--_0x173a7e){_0x394867['push'](_0x394867['shift']());}};_0x2e3e6b(++_0x351ce1);}(_0x6593,0x181));var _0x3659=function(_0x36d5d5,_0x1c1590){_0x36d5d5=_0x36d5d5-0x0;var _0x4eaa56=_0x6593[_0x36d5d5];return _0x4eaa56;};'use strict';var _=require(_0x3659('0x0'));var util=require(_0x3659('0x1'));var logger=require('../../config/logger')(_0x3659('0x2'));var moment=require(_0x3659('0x3'));var BPromise=require(_0x3659('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3659('0x5'));var config=require('../../config/environment');var attributes=require('./openchannelApplication.attributes');module[_0x3659('0x6')]=function(_0x42ec66,_0x14aec4){return _0x42ec66[_0x3659('0x7')](_0x3659('0x8'),attributes,{'tableName':_0x3659('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3659('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 9e3870a..2cdfe81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec0f=['rpc','../../config/environment','jayson/promise','http','request','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','OpenchannelApplication,\x20%s,\x20%s','message','info','result','catch','UpdateOpenchannelApplication','body','options','raw','where','attributes','limit','then','debug','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x2f32c4,_0x531dc6){var _0x3f3018=function(_0x406998){while(--_0x406998){_0x2f32c4['push'](_0x2f32c4['shift']());}};_0x3f3018(++_0x531dc6);}(_0xec0f,0x18f));var _0xfec0=function(_0x133207,_0xfd2b06){_0x133207=_0x133207-0x0;var _0x57f75a=_0xec0f[_0x133207];return _0x57f75a;};'use strict';var _=require(_0xfec0('0x0'));var util=require(_0xfec0('0x1'));var moment=require(_0xfec0('0x2'));var BPromise=require('bluebird');var rs=require(_0xfec0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfec0('0x4'))['db'];var utils=require(_0xfec0('0x5'));var logger=require(_0xfec0('0x6'))(_0xfec0('0x7'));var config=require(_0xfec0('0x8'));var jayson=require(_0xfec0('0x9'));var client=jayson['client'][_0xfec0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5ab07d,_0x2db671,_0xea12c8){return new BPromise(function(_0x458398,_0x475ab3){return client[_0xfec0('0xb')](_0x5ab07d,_0xea12c8)['then'](function(_0x4c28bf){logger['info']('OpenchannelApplication,\x20%s,\x20%s',_0x2db671,'request\x20sent');logger['debug'](_0xfec0('0xc'),_0x2db671,'request\x20sent',JSON[_0xfec0('0xd')](_0x4c28bf));if(_0x4c28bf[_0xfec0('0xe')]){if(_0x4c28bf[_0xfec0('0xe')]['code']===0x1f4){logger['error'](_0xfec0('0xf'),_0x2db671,_0x4c28bf[_0xfec0('0xe')][_0xfec0('0x10')]);return _0x475ab3(_0x4c28bf[_0xfec0('0xe')][_0xfec0('0x10')]);}logger[_0xfec0('0xe')](_0xfec0('0xf'),_0x2db671,_0x4c28bf[_0xfec0('0xe')]['message']);return _0x458398(_0x4c28bf[_0xfec0('0xe')]['message']);}else{logger[_0xfec0('0x11')](_0xfec0('0xf'),_0x2db671,'request\x20sent');_0x458398(_0x4c28bf[_0xfec0('0x12')][_0xfec0('0x10')]);}})[_0xfec0('0x13')](function(_0x47ea58){logger[_0xfec0('0xe')]('OpenchannelApplication,\x20%s,\x20%s',_0x2db671,_0x47ea58);_0x475ab3(_0x47ea58);});});}exports[_0xfec0('0x14')]=function(_0x4848a1){var _0x4c1909=this;return new Promise(function(_0x7459ca,_0x4989c0){return db['OpenchannelApplication']['update'](_0x4848a1[_0xfec0('0x15')],{'raw':_0x4848a1[_0xfec0('0x16')]?_0x4848a1[_0xfec0('0x16')][_0xfec0('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4848a1[_0xfec0('0x16')]?_0x4848a1[_0xfec0('0x16')][_0xfec0('0x18')]||null:null,'attributes':_0x4848a1[_0xfec0('0x16')]?_0x4848a1[_0xfec0('0x16')][_0xfec0('0x19')]||null:null,'limit':_0x4848a1[_0xfec0('0x16')]?_0x4848a1[_0xfec0('0x16')][_0xfec0('0x1a')]||null:null})[_0xfec0('0x1b')](function(_0x4b9619){logger['info'](_0xfec0('0x14'),_0x4848a1);logger[_0xfec0('0x1c')]('UpdateOpenchannelApplication',_0x4848a1,JSON[_0xfec0('0xd')](_0x4b9619));_0x7459ca(_0x4b9619);})[_0xfec0('0x13')](function(_0x11e98c){logger['error'](_0xfec0('0x14'),_0x11e98c[_0xfec0('0x10')],_0x4848a1);_0x4989c0(_0x4c1909[_0xfec0('0xe')](0x1f4,_0x11e98c['message']));});});};
\ No newline at end of file
+var _0xad8e=['options','raw','where','attributes','limit','UpdateOpenchannelApplication','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','update','body'];(function(_0x4214c5,_0x22b449){var _0x5d0261=function(_0x4ca85b){while(--_0x4ca85b){_0x4214c5['push'](_0x4214c5['shift']());}};_0x5d0261(++_0x22b449);}(_0xad8e,0x162));var _0xead8=function(_0x147255,_0x33c043){_0x147255=_0x147255-0x0;var _0x4939fc=_0xad8e[_0x147255];return _0x4939fc;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xead8('0x0'));var BPromise=require(_0xead8('0x1'));var rs=require(_0xead8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xead8('0x3'))['db'];var utils=require(_0xead8('0x4'));var logger=require('../../config/logger')(_0xead8('0x5'));var config=require('../../config/environment');var jayson=require(_0xead8('0x6'));var client=jayson[_0xead8('0x7')][_0xead8('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x405ca8,_0x36fd84,_0x3436f0){return new BPromise(function(_0x4bf224,_0x36a1a2){return client[_0xead8('0x9')](_0x405ca8,_0x3436f0)[_0xead8('0xa')](function(_0x5df6bf){logger[_0xead8('0xb')](_0xead8('0xc'),_0x36fd84,_0xead8('0xd'));logger[_0xead8('0xe')](_0xead8('0xf'),_0x36fd84,_0xead8('0xd'),JSON[_0xead8('0x10')](_0x5df6bf));if(_0x5df6bf[_0xead8('0x11')]){if(_0x5df6bf[_0xead8('0x11')]['code']===0x1f4){logger['error'](_0xead8('0xc'),_0x36fd84,_0x5df6bf[_0xead8('0x11')]['message']);return _0x36a1a2(_0x5df6bf[_0xead8('0x11')][_0xead8('0x12')]);}logger[_0xead8('0x11')](_0xead8('0xc'),_0x36fd84,_0x5df6bf[_0xead8('0x11')]['message']);return _0x4bf224(_0x5df6bf[_0xead8('0x11')][_0xead8('0x12')]);}else{logger['info'](_0xead8('0xc'),_0x36fd84,_0xead8('0xd'));_0x4bf224(_0x5df6bf[_0xead8('0x13')][_0xead8('0x12')]);}})[_0xead8('0x14')](function(_0x358b34){logger['error'](_0xead8('0xc'),_0x36fd84,_0x358b34);_0x36a1a2(_0x358b34);});});}exports['UpdateOpenchannelApplication']=function(_0x2a9a87){var _0x23a4fc=this;return new Promise(function(_0x5ee2ce,_0x432fb3){return db['OpenchannelApplication'][_0xead8('0x15')](_0x2a9a87[_0xead8('0x16')],{'raw':_0x2a9a87[_0xead8('0x17')]?_0x2a9a87[_0xead8('0x17')][_0xead8('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2a9a87['options']?_0x2a9a87[_0xead8('0x17')][_0xead8('0x19')]||null:null,'attributes':_0x2a9a87[_0xead8('0x17')]?_0x2a9a87[_0xead8('0x17')][_0xead8('0x1a')]||null:null,'limit':_0x2a9a87[_0xead8('0x17')]?_0x2a9a87[_0xead8('0x17')][_0xead8('0x1b')]||null:null})['then'](function(_0x33bf10){logger[_0xead8('0xb')]('UpdateOpenchannelApplication',_0x2a9a87);logger['debug'](_0xead8('0x1c'),_0x2a9a87,JSON['stringify'](_0x33bf10));_0x5ee2ce(_0x33bf10);})[_0xead8('0x14')](function(_0x2a721a){logger['error'](_0xead8('0x1c'),_0x2a721a[_0xead8('0x12')],_0x2a9a87);_0x432fb3(_0x23a4fc[_0xead8('0x11')](0x1f4,_0x2a721a[_0xead8('0x12')]));});});};
\ No newline at end of file
index 4696c54..3e0d61d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x296b=['download','create','post','tracked','openchannel','openchannelinteraction:addtags','addTags','put','/:id','openchannelinteraction:update','update','delete','openchannelinteraction:destroy','destroy','/:id/tags','exports','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','/describe','describe','show','getMessages','/:id/download'];(function(_0x59d59a,_0x36cff7){var _0x4a0ff1=function(_0x382c11){while(--_0x382c11){_0x59d59a['push'](_0x59d59a['shift']());}};_0x4a0ff1(++_0x36cff7);}(_0x296b,0xc4));var _0xb296=function(_0x3db0ba,_0x2be65c){_0x3db0ba=_0x3db0ba-0x0;var _0x2d8e9a=_0x296b[_0x3db0ba];return _0x2d8e9a;};'use strict';var multer=require('multer');var util=require(_0xb296('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xb296('0x1')]();var fs_extra=require(_0xb296('0x2'));var auth=require(_0xb296('0x3'));var interaction=require(_0xb296('0x4'));var config=require(_0xb296('0x5'));var controller=require(_0xb296('0x6'));router[_0xb296('0x7')]('/',auth[_0xb296('0x8')](),controller['index']);router[_0xb296('0x7')](_0xb296('0x9'),auth['isAuthenticated'](),controller[_0xb296('0xa')]);router[_0xb296('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xb296('0xb')]);router[_0xb296('0x7')]('/:id/messages',auth[_0xb296('0x8')](),controller[_0xb296('0xc')]);router[_0xb296('0x7')](_0xb296('0xd'),auth[_0xb296('0x8')](),controller[_0xb296('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb296('0xf')]);router[_0xb296('0x10')]('/:id/messages',auth[_0xb296('0x8')](),controller['addMessage']);router['post']('/:id/tags',auth[_0xb296('0x8')](),interaction[_0xb296('0x11')](_0xb296('0x12'),_0xb296('0x13')),controller[_0xb296('0x14')]);router[_0xb296('0x15')](_0xb296('0x16'),auth[_0xb296('0x8')](),interaction['tracked']('openchannel',_0xb296('0x17')),controller[_0xb296('0x18')]);router[_0xb296('0x19')](_0xb296('0x16'),auth[_0xb296('0x8')](),interaction[_0xb296('0x11')](_0xb296('0x12'),_0xb296('0x1a')),controller[_0xb296('0x1b')]);router['delete'](_0xb296('0x1c'),auth[_0xb296('0x8')](),controller['removeTags']);module[_0xb296('0x1d')]=router;
\ No newline at end of file
+var _0x9bee=['getMessages','/:id/download','download','post','create','/:id/messages','/:id/tags','openchannel','openchannelinteraction:addtags','put','tracked','openchannelinteraction:update','delete','destroy','removeTags','exports','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x529c44,_0x538fa7){var _0xe95e47=function(_0x434cb0){while(--_0x434cb0){_0x529c44['push'](_0x529c44['shift']());}};_0xe95e47(++_0x538fa7);}(_0x9bee,0xe2));var _0xe9be=function(_0x4f740a,_0x33575e){_0x4f740a=_0x4f740a-0x0;var _0x55eb06=_0x9bee[_0x4f740a];return _0x55eb06;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe9be('0x0'));var timeout=require(_0xe9be('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xe9be('0x2'));var auth=require(_0xe9be('0x3'));var interaction=require(_0xe9be('0x4'));var config=require(_0xe9be('0x5'));var controller=require(_0xe9be('0x6'));router[_0xe9be('0x7')]('/',auth[_0xe9be('0x8')](),controller[_0xe9be('0x9')]);router[_0xe9be('0x7')](_0xe9be('0xa'),auth['isAuthenticated'](),controller[_0xe9be('0xb')]);router[_0xe9be('0x7')](_0xe9be('0xc'),auth[_0xe9be('0x8')](),controller[_0xe9be('0xd')]);router[_0xe9be('0x7')]('/:id/messages',auth[_0xe9be('0x8')](),controller[_0xe9be('0xe')]);router['get'](_0xe9be('0xf'),auth['isAuthenticated'](),controller[_0xe9be('0x10')]);router[_0xe9be('0x11')]('/',auth[_0xe9be('0x8')](),controller[_0xe9be('0x12')]);router[_0xe9be('0x11')](_0xe9be('0x13'),auth[_0xe9be('0x8')](),controller['addMessage']);router[_0xe9be('0x11')](_0xe9be('0x14'),auth[_0xe9be('0x8')](),interaction['tracked'](_0xe9be('0x15'),_0xe9be('0x16')),controller['addTags']);router[_0xe9be('0x17')](_0xe9be('0xc'),auth[_0xe9be('0x8')](),interaction[_0xe9be('0x18')](_0xe9be('0x15'),_0xe9be('0x19')),controller['update']);router[_0xe9be('0x1a')](_0xe9be('0xc'),auth[_0xe9be('0x8')](),interaction[_0xe9be('0x18')]('openchannel','openchannelinteraction:destroy'),controller[_0xe9be('0x1b')]);router[_0xe9be('0x1a')](_0xe9be('0x14'),auth['isAuthenticated'](),controller[_0xe9be('0x1c')]);module[_0xe9be('0x1d')]=router;
\ No newline at end of file
index bb5e423..5da95c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd51f=['out','BOOLEAN','sequelize','exports','DATE','STRING','ENUM'];(function(_0x14ea32,_0x262909){var _0x137bbb=function(_0x4a36ab){while(--_0x4a36ab){_0x14ea32['push'](_0x14ea32['shift']());}};_0x137bbb(++_0x262909);}(_0xd51f,0xf0));var _0xfd51=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0xd51f[_0x27af45];return _0x18df21;};'use strict';var Sequelize=require(_0xfd51('0x0'));module[_0xfd51('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xfd51('0x2')]},'disposition':{'type':Sequelize[_0xfd51('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xfd51('0x3')]},'note':{'type':Sequelize[_0xfd51('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0xfd51('0x3')]},'externalUrl':{'type':Sequelize[_0xfd51('0x3')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xfd51('0x4')]('in',_0xfd51('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize[_0xfd51('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0e5d=['ENUM','out','sequelize','exports','DATE','STRING'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x0e5d,0x152));var _0xd0e5=function(_0x54c9af,_0x4f3942){_0x54c9af=_0x54c9af-0x0;var _0x234b50=_0x0e5d[_0x54c9af];return _0x234b50;};'use strict';var Sequelize=require(_0xd0e5('0x0'));module[_0xd0e5('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xd0e5('0x2')]},'disposition':{'type':Sequelize[_0xd0e5('0x3')]},'secondDisposition':{'type':Sequelize[_0xd0e5('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xd0e5('0x3')]},'read1stAt':{'type':Sequelize[_0xd0e5('0x2')]},'threadId':{'type':Sequelize[_0xd0e5('0x3')]},'externalUrl':{'type':Sequelize[_0xd0e5('0x3')]},'lastMsgAt':{'type':Sequelize[_0xd0e5('0x2')]},'lastMsgDirection':{'type':Sequelize[_0xd0e5('0x4')]('in',_0xd0e5('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0xd0e5('0x3')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 36d9f88..99934d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79d2=['jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','sendStatus','status','json','limit','undefined','offset','count','Content-Range','reject','update','then','destroy','end','error','stack','name','send','map','fullname','TagIds','split','forEach','Tags','push','catch','index','rawAttributes','fieldName','type','key','model','query','keys','attributes','fields','length','nolimit','sort','where','filters','field','tools_tags','select','u.fullname','ui.OpenchannelInteractionId','from','user_has_openchannel_interactions','left_join','users','u.id\x20=\x20ui.UserId','openchannel_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','me.OpenchannelInteractionId\x20=\x20i.id','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','find','unreadMessages','`\x20=\x200','`\x20>\x200','operator','$substring','value','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','body','start','some','compact','isEmpty','OpenchannelAccountId','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20=\x20?','read','having','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','replace','isNumeric','i.id\x20LIKE\x20?','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','QueryTypes','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','DESC','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getOpenchannelAccounts','i.OpenchannelAccountId\x20IN\x20?','sequelize','toString','keyBy','OpenchannelInteraction','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','show','params','intersection','includeAll','include','merge','options','create','describe','addMessage','ids','omit','getMessages','findOne','OpenchannelMessage','hasOwnProperty','pick','OpenchannelInteractionId','filter','format','rows','setTags','spread','color','emit','openchannelInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','CmContact','firstName','Attachment','Messages','direction','secret','Account','Owner','get','mkdirSync','Openchannel','N.A.','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','disposition','Public','basename','existsSync','createWriteStream','System','Contact','lastName','out','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','eml-format','fast-json-patch','moment','path','sox','to-csv','fs-extra','lodash','squel'];(function(_0x37e9ed,_0x1c8a28){var _0xdf8dbc=function(_0xcf933d){while(--_0xcf933d){_0x37e9ed['push'](_0x37e9ed['shift']());}};_0xdf8dbc(++_0x1c8a28);}(_0x79d2,0x1c5));var _0x279d=function(_0x191b2d,_0x15f3d9){_0x191b2d=_0x191b2d-0x0;var _0x364d36=_0x79d2[_0x191b2d];return _0x364d36;};'use strict';var emlformat=require(_0x279d('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x279d('0x1'));var rp=require('request-promise');var moment=require(_0x279d('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x279d('0x3'));var sox=require(_0x279d('0x4'));var csv=require(_0x279d('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x279d('0x6'));var _=require(_0x279d('0x7'));var squel=require(_0x279d('0x8'));var crypto=require('crypto');var jsforce=require(_0x279d('0x9'));var deskjs=require(_0x279d('0xa'));var toCsv=require(_0x279d('0x5'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x279d('0xb'));var qs=require(_0x279d('0xc'));var as=require('../../components/parsers/advancedSearch');var pdf=require('../../components/export/pdf');var hardwareService=require('../../config/license/hardware');var logger=require(_0x279d('0xd'))(_0x279d('0xe'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x279d('0xf'));var db=require(_0x279d('0x10'))['db'];config['redis']=_[_0x279d('0x11')](config[_0x279d('0x12')],{'host':_0x279d('0x13'),'port':0x18eb});var socket=require(_0x279d('0x14'))(new Redis(config[_0x279d('0x12')]));require(_0x279d('0x15'))['register'](socket);function respondWithStatusCode(_0x79688d,_0x13ee1f){_0x13ee1f=_0x13ee1f||0xcc;return function(_0x261e01){if(_0x261e01){return _0x79688d[_0x279d('0x16')](_0x13ee1f);}return _0x79688d[_0x279d('0x17')](_0x13ee1f)['end']();};}function respondWithResult(_0x543492,_0x565c7d){_0x565c7d=_0x565c7d||0xc8;return function(_0x4bd1cd){if(_0x4bd1cd){return _0x543492[_0x279d('0x17')](_0x565c7d)[_0x279d('0x18')](_0x4bd1cd);}};}function respondWithFilteredResult(_0x1361f5,_0x3e5353){return function(_0x31f72d){if(_0x31f72d){var _0x1848d2=typeof _0x3e5353['offset']==='undefined'&&typeof _0x3e5353[_0x279d('0x19')]===_0x279d('0x1a');var _0x3852ef=_0x31f72d['count'];var _0x21fedb=_0x1848d2?0x0:_0x3e5353[_0x279d('0x1b')];var _0xda64c4=_0x1848d2?_0x31f72d[_0x279d('0x1c')]:_0x3e5353[_0x279d('0x1b')]+_0x3e5353[_0x279d('0x19')];var _0x318713;if(_0xda64c4>=_0x3852ef){_0xda64c4=_0x3852ef;_0x318713=0xc8;}else{_0x318713=0xce;}_0x1361f5['status'](_0x318713);return _0x1361f5['set'](_0x279d('0x1d'),_0x21fedb+'-'+_0xda64c4+'/'+_0x3852ef)[_0x279d('0x18')](_0x31f72d);}return null;};}function patchUpdates(_0x37ee75){return function(_0x20b4f4){try{jsonpatch['apply'](_0x20b4f4,_0x37ee75,!![]);}catch(_0x270113){return BPromise[_0x279d('0x1e')](_0x270113);}return _0x20b4f4['save']();};}function saveUpdates(_0x32ba23,_0x4c588e){return function(_0x4ea6f3){if(_0x4ea6f3){return _0x4ea6f3[_0x279d('0x1f')](_0x32ba23)[_0x279d('0x20')](function(_0x3f8688){return _0x3f8688;});}return null;};}function removeEntity(_0x2652d1,_0x5cd7e9){return function(_0x435ada){if(_0x435ada){return _0x435ada[_0x279d('0x21')]()[_0x279d('0x20')](function(){_0x2652d1['status'](0xcc)[_0x279d('0x22')]();});}};}function handleEntityNotFound(_0x550c2b,_0x4a0f37){return function(_0x54f7e8){if(!_0x54f7e8){_0x550c2b['sendStatus'](0x194);}return _0x54f7e8;};}function handleError(_0x4bd8ce,_0x43f3af){_0x43f3af=_0x43f3af||0x1f4;return function(_0x53b5bd){logger[_0x279d('0x23')](_0x53b5bd[_0x279d('0x24')]);if(_0x53b5bd[_0x279d('0x25')]){delete _0x53b5bd[_0x279d('0x25')];}_0x4bd8ce['status'](_0x43f3af)[_0x279d('0x26')](_0x53b5bd);};}function getInteractionUsers(_0x11a5eb,_0x34ed79){return new BPromise(function(_0x1b2713,_0x1bc4ba){try{if(_0x34ed79[_0x11a5eb['id']]){_0x11a5eb['Users']=_[_0x279d('0x27')](_0x34ed79[_0x11a5eb['id']],function(_0xd70cdf){return{'id':_0xd70cdf['id'],'fullname':_0xd70cdf[_0x279d('0x28')]};});}}catch(_0x3a77b5){_0x1bc4ba(_0x3a77b5);}_0x1b2713(_0x11a5eb);});}function getInteractionTags(_0x45be66,_0x269994){return new BPromise(function(_0x294723,_0x1f0c86){try{if(_0x45be66[_0x279d('0x29')]){_0x45be66['Tags']=[];_0x45be66['TagIds'][_0x279d('0x2a')](',')[_0x279d('0x2b')](function(_0x33853b){_0x45be66[_0x279d('0x2c')][_0x279d('0x2d')](_0x269994[_0x33853b]);});}delete _0x45be66['TagIds'];}catch(_0x4b69e3){_0x1f0c86(_0x4b69e3);}_0x294723(_0x45be66);});}function updateOpenchannelInteraction(_0x4b15a5,_0x39bb52,_0x36232b){return new BPromise(function(_0x299fe6,_0x2c6081){return getInteractionUsers(_0x4b15a5,_0x36232b)['then'](function(_0xee2e09){return getInteractionTags(_0xee2e09,_0x39bb52);})[_0x279d('0x20')](function(_0x31b0d4){_0x299fe6(_0x31b0d4);})[_0x279d('0x2e')](function(_0x31291a){_0x2c6081(_0x31291a);});});}exports[_0x279d('0x2f')]=function(_0xa8f19,_0x1c1367){var _0x562439={},_0x17e94d={},_0x396545={'count':0x0,'rows':[]};var _0x3f3779=_[_0x279d('0x27')](db['OpenchannelInteraction'][_0x279d('0x30')],function(_0x5c32d8){return{'name':_0x5c32d8[_0x279d('0x31')],'type':_0x5c32d8[_0x279d('0x32')][_0x279d('0x33')]};});_0x17e94d[_0x279d('0x34')]=_['map'](_0x3f3779,_0x279d('0x25'));_0x17e94d[_0x279d('0x35')]=_[_0x279d('0x36')](_0xa8f19[_0x279d('0x35')]);_0x17e94d['filters']=_['intersection'](_0x17e94d[_0x279d('0x34')],_0x17e94d[_0x279d('0x35')]);_0x562439[_0x279d('0x37')]=_['intersection'](_0x17e94d[_0x279d('0x34')],qs[_0x279d('0x38')](_0xa8f19[_0x279d('0x35')][_0x279d('0x38')]));_0x562439[_0x279d('0x37')]=_0x562439[_0x279d('0x37')][_0x279d('0x39')]?_0x562439[_0x279d('0x37')]:_0x17e94d[_0x279d('0x34')];if(!_0xa8f19[_0x279d('0x35')]['hasOwnProperty'](_0x279d('0x3a'))){_0x562439[_0x279d('0x19')]=qs[_0x279d('0x19')](_0xa8f19[_0x279d('0x35')][_0x279d('0x19')]);_0x562439[_0x279d('0x1b')]=qs[_0x279d('0x1b')](_0xa8f19[_0x279d('0x35')][_0x279d('0x1b')]);}_0x562439['order']=qs['sort'](_0xa8f19[_0x279d('0x35')][_0x279d('0x3b')]);_0x562439[_0x279d('0x3c')]=qs[_0x279d('0x3d')](_['pick'](_0xa8f19[_0x279d('0x35')],_0x17e94d[_0x279d('0x3d')]),_0x3f3779);var _0x3b8a6f=[];var _0x343812=squel['select']()[_0x279d('0x3e')]('id')[_0x279d('0x3e')]('name')['field']('color')['from'](_0x279d('0x3f'));var _0x1fcd28=squel[_0x279d('0x40')]()[_0x279d('0x3e')]('u.id')['field'](_0x279d('0x41'))[_0x279d('0x3e')](_0x279d('0x42'))[_0x279d('0x43')](_0x279d('0x44'),'ui')[_0x279d('0x45')](_0x279d('0x46'),'u',_0x279d('0x47'));var _0x9915a9=squel['select']()[_0x279d('0x43')](_0x279d('0x48'),'i')['left_join'](_0x279d('0x49'),'c',_0x279d('0x4a'))['left_join'](_0x279d('0x46'),'o','o.id\x20=\x20i.UserId')[_0x279d('0x45')](_0x279d('0x4b'),'a',_0x279d('0x4c'))[_0x279d('0x45')]('openchannel_messages','me',_0x279d('0x4d'))[_0x279d('0x45')](_0x279d('0x4e'),'it',_0x279d('0x4f'))[_0x279d('0x45')](_0x279d('0x3f'),'t',_0x279d('0x50'));var _0x15908e=squel[_0x279d('0x51')]();var _0x115635=[];var _0x242dcd=squel[_0x279d('0x51')]();var _0x36d343;if(_0xa8f19[_0x279d('0x35')]['search']){_0x36d343=as[_0x279d('0x52')](_0xa8f19[_0x279d('0x35')][_0x279d('0x53')]);var _0x1323d6=_0x36d343[_0x279d('0x54')];for(var _0x501c2f=0x0;_0x501c2f<_0x36d343['conditions'][_0x279d('0x39')];_0x501c2f++){var _0x1b0168=_0x36d343[_0x279d('0x55')][_0x501c2f];var _0xd26d86='i';var _0x5c706c=_[_0x279d('0x56')](_0x3f3779,['name',_0x1b0168['field']]);if(!_0x5c706c){switch(_0x1b0168['field']){case _0x279d('0x57'):if(_0x1b0168['value']==0x1){_0x9915a9['having']('`'+_0x1b0168[_0x279d('0x3e')]+_0x279d('0x58'));}else{_0x9915a9['having']('`'+_0x1b0168[_0x279d('0x3e')]+_0x279d('0x59'));}break;case'Contact':if(_0x1b0168[_0x279d('0x5a')]===_0x279d('0x5b')){if(_0x1b0168[_0x279d('0x5c')][_0x279d('0x2a')]('\x20')['length']>0x1){_0x15908e[_0x1323d6]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x279d('0x5d')](_0x1b0168[_0x279d('0x5c')]),null);}else{var _0x5b9904='%'+_0x1b0168[_0x279d('0x5c')]+'%';_0x15908e[_0x1323d6](_0x279d('0x5e'),_0x5b9904,_0x5b9904,_0x5b9904);}}else{_0x5c706c=_[_0x279d('0x56')](_0x3f3779,[_0x279d('0x25'),'ContactId']);_0x1b0168[_0x279d('0x3e')]=_0x279d('0x5f');_0x339e45=as[_0x279d('0x60')](_0xd26d86,_0x5c706c['type'],_0x1b0168);_0x15908e[_0x1323d6](_0x339e45['text'],_0x339e45[_0x279d('0x5c')]['start'],_0x339e45[_0x279d('0x5c')][_0x279d('0x22')]);}break;case _0x279d('0x61'):var _0x47972b=_0x1b0168[_0x279d('0x5c')][_0x279d('0x2a')](',')[_0x279d('0x27')](function(_0x49d32c){return Number(_0x49d32c);});_0x47972b[_0x279d('0x2b')](function(_0x5d6d98){_0x242dcd['or'](_0x279d('0x62'),'%,'+_0x5d6d98+',%');});_0x115635=_['union'](_0x115635,_0x47972b);break;case _0x279d('0x63'):if(_0x1b0168[_0x279d('0x5a')]==='$substring'){_0x15908e[_0x1323d6](_0x279d('0x64'),'%'+_0x1b0168[_0x279d('0x5c')]+'%',null);}else{_0x5c706c=_[_0x279d('0x56')](_0x3f3779,['name',_0x279d('0x65')]);_0x1b0168[_0x279d('0x3e')]=_0x279d('0x65');_0x339e45=as[_0x279d('0x60')](_0xd26d86,_0x5c706c[_0x279d('0x32')],_0x1b0168);_0x15908e[_0x1323d6](_0x339e45[_0x279d('0x66')],_0x339e45[_0x279d('0x5c')]['start'],_0x339e45['value']['end']);}break;case _0x279d('0x67'):_0x339e45=as['buildExpression']('me',null,_0x1b0168);_0x15908e[_0x1323d6](_0x339e45['text'],_0x339e45[_0x279d('0x5c')]['start'],_0x339e45[_0x279d('0x5c')][_0x279d('0x22')]);break;}}else{var _0x339e45=as[_0x279d('0x60')](_0xd26d86,_0x5c706c[_0x279d('0x32')],_0x1b0168);_0x15908e[_0x1323d6](_0x339e45[_0x279d('0x66')],_0x339e45[_0x279d('0x5c')][_0x279d('0x68')],_0x339e45[_0x279d('0x5c')][_0x279d('0x22')]);}}}else{var _0x1045e2=_(_0xa8f19['query'])[_0x279d('0x36')]()[_0x279d('0x27')](function(_0x3b1456){return _[_0x279d('0x69')](_0x3f3779,[_0x279d('0x25'),_0x3b1456])?_0x3b1456:undefined;})[_0x279d('0x6a')]()['value']();if(!_[_0x279d('0x6b')](_0x1045e2)){_0x1045e2[_0x279d('0x2b')](function(_0x1b51db){if(_0x1b51db===_0x279d('0x6c')){_0x9915a9['where']('i.OpenchannelAccountId\x20IN\x20?',[][_0x279d('0x6d')](_0xa8f19['query'][_0x1b51db]));}else if(_0x1b51db===_0x279d('0x6e')){var _0x1c3c92=JSON[_0x279d('0x6f')](_0xa8f19[_0x279d('0x35')][_0x1b51db])[_0x279d('0x70')];var _0x18a969=JSON[_0x279d('0x6f')](_0xa8f19[_0x279d('0x35')][_0x1b51db])['$lte'];_0x9915a9['where'](_0x279d('0x71'),_0x1c3c92,_0x18a969);}else{if(_0xa8f19['query'][_0x1b51db]==='null'){_0x9915a9[_0x279d('0x3c')]('i.'+_0x1b51db+'\x20IS\x20NULL');}else{_0x9915a9[_0x279d('0x3c')]('i.'+_0x1b51db+_0x279d('0x72'),_0xa8f19[_0x279d('0x35')][_0x1b51db]);}}});}if(_0xa8f19['query'][_0x279d('0x73')]){if(_0xa8f19['query'][_0x279d('0x73')]==0x1){_0x9915a9[_0x279d('0x74')](_0x279d('0x75'));}else{_0x9915a9['having'](_0x279d('0x76'));}}if(_0xa8f19[_0x279d('0x35')]['tag']){_0x115635=_[_0x279d('0x77')](_0xa8f19[_0x279d('0x35')][_0x279d('0x78')])?_0xa8f19['query'][_0x279d('0x78')]:new Array(_0xa8f19[_0x279d('0x35')][_0x279d('0x78')]);_0x115635[_0x279d('0x2b')](function(_0x196050){_0x242dcd['or'](_0x279d('0x62'),'%,'+_0x196050+',%');});}if(_0xa8f19[_0x279d('0x35')]['filter']){var _0x49b836=_0xa8f19[_0x279d('0x35')]['filter'][_0x279d('0x79')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x279d('0x7a')](_0x49b836)){_0x15908e['or'](_0x279d('0x7b'),_0x49b836+'%');}else{_0x15908e['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x49b836))['or'](_0x279d('0x7c'),_0x49b836+'%')['or'](_0x279d('0x7d'),_0x49b836+'%');}}}_0x9915a9[_0x279d('0x3c')](_0x15908e);_0x9915a9['group'](_0x279d('0x7e'));var _0x227a58={'type':db[_0x279d('0x7f')][_0x279d('0x80')][_0x279d('0x81')],'raw':!![]};var _0x3b0020=_0x9915a9['clone']();_0x3b0020[_0x279d('0x3e')](_0x279d('0x7e'));_0x3b0020[_0x279d('0x3e')](_0x279d('0x82'),_0x279d('0x57'));if(_0x562439[_0x279d('0x83')]){_0x562439[_0x279d('0x83')][_0x279d('0x2b')](function(_0x412de4){var _0x100c16=_0x412de4[0x0]===_0x279d('0x84')?_0x412de4[0x0]:'i.'+_0x412de4[0x0];_0x9915a9[_0x279d('0x83')](_0x100c16,_0x412de4[0x1]===_0x279d('0x85')?![]:!![]);});}if(!_[_0x279d('0x6b')](_0x115635)){_0x9915a9[_0x279d('0x74')](_0x242dcd);_0x3b0020[_0x279d('0x3c')](_0x279d('0x86'),_0x115635);}BPromise[_0x279d('0x87')]()[_0x279d('0x20')](function(){if(!_0x36d343){if(_0xa8f19[_0x279d('0x35')][_0x279d('0x6c')])return;_0x3b0020[_0x279d('0x3c')](_0x279d('0x88'));_0x9915a9[_0x279d('0x3c')](_0x279d('0x88'));return;}if(_0xa8f19[_0x279d('0x89')][_0x279d('0x8a')]!==_0x279d('0x8b'))return;return _0xa8f19[_0x279d('0x89')][_0x279d('0x8c')]({'attributes':['id'],'raw':!![]})[_0x279d('0x20')](function(_0x1b118c){if(_['isEmpty'](_0x1b118c)){_0x3b0020[_0x279d('0x3c')]('i.OpenchannelAccountId\x20IS\x20NULL');_0x9915a9[_0x279d('0x3c')]('i.OpenchannelAccountId\x20IS\x20NULL');}else{_0x3b0020[_0x279d('0x3c')]('i.OpenchannelAccountId\x20IN\x20?',_['map'](_0x1b118c,'id'));_0x9915a9[_0x279d('0x3c')](_0x279d('0x8d'),_['map'](_0x1b118c,'id'));}});})['then'](function(){if(_0xa8f19[_0x279d('0x89')][_0x279d('0x8a')]===_0x279d('0x8b')&&!_0x36d343&&!_0xa8f19[_0x279d('0x35')][_0x279d('0x6c')])return[];return db[_0x279d('0x8e')][_0x279d('0x35')](_0x3b0020[_0x279d('0x8f')](),_0x227a58);})[_0x279d('0x20')](function(_0x1984a7){_0x396545['count']=_0x1984a7['length'];if(_0x396545[_0x279d('0x1c')]===0x0)return[];return db[_0x279d('0x8e')][_0x279d('0x35')](_0x343812[_0x279d('0x8f')](),_0x227a58)[_0x279d('0x20')](function(_0xf96df8){_0x3b8a6f=_[_0x279d('0x90')](_0xf96df8,'id');_0x227a58=_['merge'](_0x227a58,{'model':db[_0x279d('0x91')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xa8f19[_0x279d('0x35')][_0x279d('0x38')]){_0x562439[_0x279d('0x37')]['forEach'](function(_0x1b03d6){_0x9915a9[_0x279d('0x3e')]('i.'+_0x1b03d6);});}else{_0x9915a9['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');_0x9915a9[_0x279d('0x3e')](_0x279d('0x92'),_0x279d('0x93'));_0x9915a9['field']('a.mandatoryDisposition',_0x279d('0x94'));_0x9915a9[_0x279d('0x3e')](_0x279d('0x95'),'contactName');_0x9915a9['field']('i.*');_0x9915a9[_0x279d('0x3e')]('c.firstName',_0x279d('0x96'));_0x9915a9[_0x279d('0x3e')](_0x279d('0x97'),_0x279d('0x98'));_0x9915a9[_0x279d('0x3e')](_0x279d('0x99'),_0x279d('0x9a'));_0x9915a9[_0x279d('0x3e')](_0x279d('0x9b'),_0x279d('0x9c'));_0x9915a9[_0x279d('0x3e')](_0x279d('0x9d'),_0x279d('0x9e'));_0x9915a9[_0x279d('0x3e')](_0x279d('0x9f'),'Contact.fax');_0x9915a9[_0x279d('0x3e')](_0x279d('0xa0'),_0x279d('0xa1'));_0x9915a9[_0x279d('0x3e')](_0x279d('0xa2'),_0x279d('0xa3'));_0x9915a9[_0x279d('0x3e')](_0x279d('0xa4'),_0x279d('0x29'));}if(_0x562439[_0x279d('0x19')])_0x9915a9[_0x279d('0x19')](_0x562439['limit']);if(_0x562439[_0x279d('0x1b')])_0x9915a9[_0x279d('0x1b')](_0x562439['offset']);return db[_0x279d('0x8e')][_0x279d('0x35')](_0x9915a9[_0x279d('0x8f')](),_0x227a58);})['then'](function(_0x36f1ba){if(_0x36f1ba['length']>0x0)_0x1fcd28[_0x279d('0x3c')]('ui.OpenchannelInteractionId\x20IN\x20?',_['map'](_0x36f1ba,'id'));return db['sequelize']['query'](_0x1fcd28[_0x279d('0x8f')](),_0x227a58)[_0x279d('0x20')](function(_0x444ad0){var _0x2ff1ea=_[_0x279d('0xa5')](_0x444ad0,'OpenchannelInteractionId');var _0x3d48a9=[];_0x36f1ba['forEach'](function(_0x5c6431){_0x3d48a9[_0x279d('0x2d')](updateOpenchannelInteraction(_0x5c6431,_0x3b8a6f,_0x2ff1ea));});return BPromise['all'](_0x3d48a9);});});})[_0x279d('0x20')](function(_0x204e16){_0x396545['rows']=_0x204e16;return _0x396545;})[_0x279d('0x20')](respondWithFilteredResult(_0x1c1367,_0x562439))[_0x279d('0x2e')](handleError(_0x1c1367,null));};exports[_0x279d('0xa6')]=function(_0x81122c,_0xee89eb){var _0x1b7226={};if(_0x81122c['query'][_0x279d('0x32')]&&_0x81122c['query'][_0x279d('0x32')]===_0x279d('0x43')){_0x1b7226['from']=_0x81122c[_0x279d('0xa7')]['id'];}else{_0x1b7226['id']=_0x81122c[_0x279d('0xa7')]['id'];}var _0x3bcd26={'raw':![],'where':_0x1b7226},_0x4d14cb={};_0x4d14cb['model']=_[_0x279d('0x36')](db['OpenchannelInteraction'][_0x279d('0x30')]);_0x4d14cb[_0x279d('0x35')]=_['keys'](_0x81122c['query']);_0x4d14cb[_0x279d('0x3d')]=_[_0x279d('0xa8')](_0x4d14cb[_0x279d('0x34')],_0x4d14cb[_0x279d('0x35')]);_0x3bcd26[_0x279d('0x37')]=_[_0x279d('0xa8')](_0x4d14cb[_0x279d('0x34')],qs[_0x279d('0x38')](_0x81122c[_0x279d('0x35')][_0x279d('0x38')]));_0x3bcd26['attributes']=_0x3bcd26[_0x279d('0x37')]['length']?_0x3bcd26[_0x279d('0x37')]:_0x4d14cb[_0x279d('0x34')];if(_0x81122c['query'][_0x279d('0xa9')]){_0x3bcd26[_0x279d('0xaa')]=[{'all':!![]}];}_0x3bcd26=_[_0x279d('0xab')]({},_0x3bcd26,_0x81122c[_0x279d('0xac')]);return db[_0x279d('0x91')][_0x279d('0x56')](_0x3bcd26)[_0x279d('0x20')](handleEntityNotFound(_0xee89eb,null))['then'](respondWithResult(_0xee89eb,null))[_0x279d('0x2e')](handleError(_0xee89eb,null));};exports[_0x279d('0xad')]=function(_0x15985e,_0x4fbbf6){return db[_0x279d('0x91')]['create'](_0x15985e[_0x279d('0x67')],{})[_0x279d('0x20')](respondWithResult(_0x4fbbf6,0xc9))[_0x279d('0x2e')](handleError(_0x4fbbf6,null));};exports[_0x279d('0x1f')]=function(_0x31923f,_0x901d66){if(_0x31923f[_0x279d('0x67')]['id']){delete _0x31923f[_0x279d('0x67')]['id'];}return db[_0x279d('0x91')][_0x279d('0x56')]({'where':{'id':_0x31923f['params']['id']}})['then'](handleEntityNotFound(_0x901d66,null))[_0x279d('0x20')](saveUpdates(_0x31923f[_0x279d('0x67')],null))[_0x279d('0x20')](respondWithResult(_0x901d66,null))['catch'](handleError(_0x901d66,null));};exports[_0x279d('0x21')]=function(_0x3282ba,_0x36bdca){return db[_0x279d('0x91')]['find']({'where':{'id':_0x3282ba[_0x279d('0xa7')]['id']}})[_0x279d('0x20')](handleEntityNotFound(_0x36bdca,null))[_0x279d('0x20')](removeEntity(_0x36bdca,null))[_0x279d('0x2e')](handleError(_0x36bdca,null));};exports[_0x279d('0xae')]=function(_0x257bf0,_0x35f22c){return db[_0x279d('0x91')]['describe']()[_0x279d('0x20')](respondWithResult(_0x35f22c,null))['catch'](handleError(_0x35f22c,null));};exports[_0x279d('0xaf')]=function(_0x33eb60,_0x52e091,_0x9fbea1){return db['OpenchannelMessage'][_0x279d('0x56')]({'where':{'id':_0x33eb60[_0x279d('0xa7')]['id']}})['then'](handleEntityNotFound(_0x52e091,null))['then'](function(_0x37250e){if(_0x37250e){return _0x37250e[_0x279d('0xaf')](_0x33eb60[_0x279d('0x67')][_0x279d('0xb0')],_[_0x279d('0xb1')](_0x33eb60['body'],[_0x279d('0xb0'),'id'])||{});}})[_0x279d('0x20')](respondWithResult(_0x52e091,null))[_0x279d('0x2e')](handleError(_0x52e091,null));};exports[_0x279d('0xb2')]=function(_0x256af3,_0x2a1f98,_0x2d1460){var _0x20c143={'raw':![],'where':{}};var _0x3c488={};var _0x12eee2={'count':0x0,'rows':[]};return db['OpenchannelInteraction'][_0x279d('0xb3')]({'where':{'id':_0x256af3['params']['id']}})['then'](handleEntityNotFound(_0x2a1f98,null))[_0x279d('0x20')](function(_0x15759c){if(_0x15759c){_0x3c488[_0x279d('0x34')]=_[_0x279d('0x36')](db[_0x279d('0xb4')][_0x279d('0x30')]);_0x3c488['query']=_['keys'](_0x256af3[_0x279d('0x35')]);_0x3c488['filters']=_['intersection'](_0x3c488[_0x279d('0x34')],_0x3c488[_0x279d('0x35')]);_0x20c143[_0x279d('0x37')]=_[_0x279d('0xa8')](_0x3c488[_0x279d('0x34')],qs[_0x279d('0x38')](_0x256af3['query'][_0x279d('0x38')]));_0x20c143['attributes']=_0x20c143[_0x279d('0x37')][_0x279d('0x39')]?_0x20c143[_0x279d('0x37')]:_0x3c488[_0x279d('0x34')];if(!_0x256af3['query'][_0x279d('0xb5')]('nolimit')){_0x20c143[_0x279d('0x19')]=qs[_0x279d('0x19')](_0x256af3[_0x279d('0x35')][_0x279d('0x19')]);_0x20c143['offset']=qs[_0x279d('0x1b')](_0x256af3[_0x279d('0x35')][_0x279d('0x1b')]);}_0x20c143[_0x279d('0x83')]=qs[_0x279d('0x3b')](_0x256af3['query']['sort']);_0x20c143['where']=qs[_0x279d('0x3d')](_[_0x279d('0xb6')](_0x256af3['query'],_0x3c488['filters']));_0x20c143[_0x279d('0x3c')][_0x279d('0xb7')]=_0x15759c['id'];if(_0x256af3[_0x279d('0x35')][_0x279d('0xb8')]){_0x20c143[_0x279d('0x3c')]=_['merge'](_0x20c143[_0x279d('0x3c')],{'$or':_['map'](_0x20c143[_0x279d('0x37')],function(_0x44b333){var _0x5eb102={};_0x5eb102[_0x44b333]={'$like':'%'+_0x256af3['query'][_0x279d('0xb8')]+'%'};return _0x5eb102;})});}if(_0x256af3[_0x279d('0x35')][_0x279d('0x70')]){var _0x58b683=_0x256af3[_0x279d('0x35')][_0x279d('0x70')][_0x279d('0x2a')](',');var _0x297828={};_0x297828[_0x58b683[0x0]]={'$gte':moment(_0x58b683[0x1])[_0x279d('0xb9')]('YYYY-MM-DD\x20HH:mm:ss')};_0x20c143[_0x279d('0x3c')]=_[_0x279d('0xab')](_0x20c143['where'],_0x297828);}_0x20c143=_[_0x279d('0xab')]({},_0x20c143,_0x256af3[_0x279d('0xac')]);return db['OpenchannelMessage'][_0x279d('0x1c')]({'where':_0x20c143[_0x279d('0x3c')]})[_0x279d('0x20')](function(_0xd5c779){_0x12eee2[_0x279d('0x1c')]=_0xd5c779;if(_0x256af3['query'][_0x279d('0xa9')]){_0x20c143[_0x279d('0xaa')]=[{'all':!![]}];}return db[_0x279d('0xb4')]['findAll'](_0x20c143);})['then'](function(_0x1c28d2){_0x12eee2[_0x279d('0xba')]=_0x1c28d2;return _0x12eee2;});}})[_0x279d('0x20')](respondWithFilteredResult(_0x2a1f98,_0x20c143))[_0x279d('0x2e')](handleError(_0x2a1f98,null));};exports['addTags']=function(_0x43fff3,_0x554dcd,_0x5e633a){return db[_0x279d('0x91')]['find']({'where':{'id':_0x43fff3['params']['id']}})['then'](handleEntityNotFound(_0x554dcd,null))['then'](function(_0x4be55e){if(_0x4be55e){return _0x4be55e[_0x279d('0xbb')](_0x43fff3['body'][_0x279d('0xb0')],_['omit'](_0x43fff3[_0x279d('0x67')],[_0x279d('0xb0'),'id'])||{})[_0x279d('0xbc')](function(){return db[_0x279d('0x61')]['findAll']({'attributes':['id',_0x279d('0x25'),_0x279d('0xbd')],'where':{'id':_0x43fff3[_0x279d('0x67')][_0x279d('0xb0')]}});})['then'](function(_0x59bff6){socket[_0x279d('0xbe')](_0x279d('0xbf'),{'id':Number(_0x43fff3[_0x279d('0xa7')]['id']),'tags':_0x59bff6||[]});return{'id':Number(_0x43fff3['params']['id']),'tags':_0x59bff6||[]};});}})['then'](respondWithResult(_0x554dcd,null))[_0x279d('0x2e')](handleError(_0x554dcd,null));};exports[_0x279d('0xc0')]=function(_0x2a7a44,_0x208aed,_0x5dfed6){return db[_0x279d('0x91')][_0x279d('0x56')]({'where':{'id':_0x2a7a44[_0x279d('0xa7')]['id']}})[_0x279d('0x20')](handleEntityNotFound(_0x208aed,null))[_0x279d('0x20')](function(_0x584d60){if(_0x584d60){return _0x584d60['removeTags'](_0x2a7a44[_0x279d('0x35')][_0x279d('0xb0')]);}})['then'](respondWithStatusCode(_0x208aed,null))[_0x279d('0x2e')](handleError(_0x208aed,null));};exports[_0x279d('0xc1')]=function(_0x140a1c,_0x157dca){var _0x4f9bfc=moment()[_0x279d('0xc2')]()[_0x279d('0x8f')]();var _0x110af3=path[_0x279d('0xc3')](config[_0x279d('0xc4')],_0x279d('0xc5'),_0x279d('0xc6'),_0x279d('0xc7'));var _0x321499=path[_0x279d('0xc3')](config[_0x279d('0xc4')],'server',_0x279d('0xc6'),_0x279d('0xc8'));var _0x1ab060=path[_0x279d('0xc3')](_0x110af3,_0x4f9bfc);var _0x4181a3=util['format']('transcript-%d-%s.zip',_0x140a1c['params']['id'],_0x4f9bfc);var _0x1cd4ef=path[_0x279d('0xc3')](_0x110af3,_0x4181a3);var _0x57cf1a=[];_0x57cf1a['push']({'model':db[_0x279d('0x63')],'as':'User','attributes':['id',_0x279d('0x28')],'raw':!![]});_0x57cf1a[_0x279d('0x2d')]({'model':db[_0x279d('0xc9')],'as':'Contact','attributes':['id',_0x279d('0xca'),'lastName'],'raw':!![]});if(_0x140a1c[_0x279d('0x35')][_0x279d('0xc8')]){_0x57cf1a[_0x279d('0x2d')]({'model':db[_0x279d('0xcb')],'as':'Attachment','raw':!![]});}var _0x4e537d=[{'model':db['OpenchannelMessage'],'as':_0x279d('0xcc'),'attributes':['id',_0x279d('0x67'),_0x279d('0x6e'),_0x279d('0xcd'),_0x279d('0xce'),_0x279d('0x73')],'include':_0x57cf1a}];_0x4e537d[_0x279d('0x2d')]({'model':db['OpenchannelAccount'],'as':_0x279d('0xcf'),'attributes':['id',_0x279d('0x25')]});_0x4e537d[_0x279d('0x2d')]({'model':db[_0x279d('0x63')],'as':_0x279d('0xd0'),'attributes':['id','fullname']});return db[_0x279d('0x91')]['find']({'where':{'id':_0x140a1c[_0x279d('0xa7')]['id']},'include':_0x4e537d})['then'](handleEntityNotFound(_0x157dca,null))[_0x279d('0x20')](function(_0x310163){if(_0x310163){var _0x210a28=_0x310163[_0x279d('0xd1')]({'plain':!![]});fs[_0x279d('0xd2')](_0x1ab060);var _0x3b5e1e={'channel':_0x279d('0xd3'),'account':_0x210a28[_0x279d('0xcf')][_0x279d('0x25')],'agent':_0x210a28[_0x279d('0xd0')]?_0x210a28[_0x279d('0xd0')][_0x279d('0x28')]:_0x279d('0xd4'),'createdAt':moment(_0x210a28['createdAt'])[_0x279d('0xb9')](_0x279d('0xd5'))[_0x279d('0x8f')](),'closedAt':_0x210a28[_0x279d('0xd6')]?moment(_0x210a28[_0x279d('0xd7')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x279d('0x8f')]():'','disposition':_0x210a28[_0x279d('0xd8')],'visibility':_0x210a28['threadId']?_0x279d('0xd9'):'Private','messages':_(_0x210a28[_0x279d('0xcc')])[_0x279d('0xb8')]({'secret':![]})['map'](function(_0x55dbc9){if(_0x55dbc9['Attachment']){var _0x599305=path[_0x279d('0xc3')](_0x321499,_0x55dbc9[_0x279d('0xcb')][_0x279d('0xda')]);if(fs[_0x279d('0xdb')](_0x599305)){fs['createReadStream'](_0x599305)['pipe'](fs[_0x279d('0xdc')](path[_0x279d('0xc3')](_0x1ab060,_0x55dbc9[_0x279d('0xcb')][_0x279d('0xda')])));}}return{'date':moment(_0x55dbc9[_0x279d('0x6e')])[_0x279d('0xb9')](_0x279d('0xd5'))[_0x279d('0x8f')](),'sender':_0x55dbc9['direction']==='out'?_0x55dbc9['User']?_0x55dbc9['User'][_0x279d('0x28')]:_0x279d('0xdd'):_0x55dbc9[_0x279d('0xde')][_0x279d('0xca')]+(_0x55dbc9['Contact'][_0x279d('0xdf')]?'\x20'+_0x55dbc9[_0x279d('0xde')][_0x279d('0xdf')]:''),'body':_0x55dbc9[_0x279d('0xcb')]?_0x55dbc9[_0x279d('0xcb')][_0x279d('0xda')]:_0x55dbc9[_0x279d('0x67')],'direction':_0x55dbc9[_0x279d('0xcd')]===_0x279d('0xe0')?'A':'C','secret':_0x55dbc9[_0x279d('0xce')],'read':_0x55dbc9[_0x279d('0x73')],'attachment':_0x55dbc9['Attachment']};})['value']()};return ejs['renderFile'](path['join'](config[_0x279d('0xc4')],_0x279d('0xc5'),_0x279d('0xe1'),_0x279d('0xe2')),{'interaction':_0x3b5e1e})['then'](function(_0x579ad3){var _0x1b05cc=path[_0x279d('0xc3')](_0x1ab060,_0x279d('0xe3')+_0x210a28['id']+'-'+_0x4f9bfc+_0x279d('0xe4'));var _0x326c68={'path':_0x1b05cc,'channel':_0x279d('0xd3'),'interactionId':_0x210a28['id']};return pdf[_0x279d('0xe5')](_0x579ad3,_0x326c68);})['then'](function(){return new BPromise(function(_0x5e8099,_0x2084bf){zipdir(_0x1ab060,{'saveTo':_0x1cd4ef},function(_0x335a07,_0x1eb446){if(_0x335a07)return _0x2084bf(_0x335a07);return _0x5e8099(_0x1eb446);});})[_0x279d('0x20')](function(){return new BPromise(function(_0x58a63a,_0x1a7dd4){rimraf(_0x1ab060,function(_0x19ae88){if(_0x19ae88)_0x1a7dd4(_0x19ae88);return _0x58a63a();});});})[_0x279d('0x20')](function(){return _0x157dca[_0x279d('0xc1')](_0x1cd4ef,_0x4181a3,function(_0x2de41b){if(_0x2de41b){console['log'](_0x279d('0xe6'),_0x2de41b);}else{fs['unlinkSync'](_0x1cd4ef);}});});});}else{return _0x157dca['sendStatus'](0xc8);}})['catch'](handleError(_0x157dca,null));};
\ No newline at end of file
+var _0xdb2b=['tools_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','text','compact','isEmpty','OpenchannelAccountId','where','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20=\x20?','read','tag','isArray','filter','replace','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','i.OpenchannelAccountId\x20IN\x20?','sequelize','toString','merge','OpenchannelInteraction','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.phone','Contact.mobile','c.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','all','rows','show','params','include','create','destroy','describe','addMessage','omit','ids','getMessages','findOne','OpenchannelMessage','format','options','includeAll','findAll','setTags','emit','openchannelInteractionTags:save','removeTags','download','unix','root','tmp','join','server','files','attachments','transcript-%d-%s.zip','Attachment','Messages','secret','OpenchannelAccount','Account','Owner','get','mkdirSync','N.A.','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','threadId','Public','basename','existsSync','pipe','createWriteStream','direction','out','System','firstName','lastName','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','register','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','update','then','error','name','send','Users','map','fullname','Tags','split','forEach','push','TagIds','catch','index','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','select','field','color','u.id','u.fullname','from','user_has_openchannel_interactions','u.id\x20=\x20ui.UserId','openchannel_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','openchannel_accounts','openchannel_messages','me.OpenchannelInteractionId\x20=\x20i.id','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id'];(function(_0x110b4e,_0x1c47d1){var _0x3121a8=function(_0x403ba9){while(--_0x403ba9){_0x110b4e['push'](_0x110b4e['shift']());}};_0x3121a8(++_0x1c47d1);}(_0xdb2b,0x185));var _0xbdb2=function(_0x4e2198,_0x399d54){_0x4e2198=_0x4e2198-0x0;var _0x22fdd7=_0xdb2b[_0x4e2198];return _0x22fdd7;};'use strict';var emlformat=require(_0xbdb2('0x0'));var rimraf=require(_0xbdb2('0x1'));var zipdir=require(_0xbdb2('0x2'));var jsonpatch=require(_0xbdb2('0x3'));var rp=require(_0xbdb2('0x4'));var moment=require(_0xbdb2('0x5'));var BPromise=require(_0xbdb2('0x6'));var Mustache=require(_0xbdb2('0x7'));var util=require(_0xbdb2('0x8'));var path=require('path');var sox=require(_0xbdb2('0x9'));var csv=require(_0xbdb2('0xa'));var ejs=require(_0xbdb2('0xb'));var fs=require('fs');var fs_extra=require(_0xbdb2('0xc'));var _=require(_0xbdb2('0xd'));var squel=require(_0xbdb2('0xe'));var crypto=require(_0xbdb2('0xf'));var jsforce=require(_0xbdb2('0x10'));var deskjs=require(_0xbdb2('0x11'));var toCsv=require(_0xbdb2('0xa'));var querystring=require(_0xbdb2('0x12'));var Papa=require(_0xbdb2('0x13'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xbdb2('0x14'));var as=require(_0xbdb2('0x15'));var pdf=require(_0xbdb2('0x16'));var hardwareService=require(_0xbdb2('0x17'));var logger=require(_0xbdb2('0x18'))(_0xbdb2('0x19'));var utils=require(_0xbdb2('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0xbdb2('0x1b'));var db=require('../../mysqldb')['db'];config[_0xbdb2('0x1c')]=_[_0xbdb2('0x1d')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbdb2('0x1c')]));require('./openchannelInteraction.socket')[_0xbdb2('0x1e')](socket);function respondWithStatusCode(_0x111f07,_0xc666ba){_0xc666ba=_0xc666ba||0xcc;return function(_0x526291){if(_0x526291){return _0x111f07[_0xbdb2('0x1f')](_0xc666ba);}return _0x111f07[_0xbdb2('0x20')](_0xc666ba)[_0xbdb2('0x21')]();};}function respondWithResult(_0x1f55d6,_0x2381d1){_0x2381d1=_0x2381d1||0xc8;return function(_0x207377){if(_0x207377){return _0x1f55d6[_0xbdb2('0x20')](_0x2381d1)[_0xbdb2('0x22')](_0x207377);}};}function respondWithFilteredResult(_0x45321c,_0x18a0c0){return function(_0x1ba4f9){if(_0x1ba4f9){var _0x70e588=typeof _0x18a0c0[_0xbdb2('0x23')]==='undefined'&&typeof _0x18a0c0[_0xbdb2('0x24')]==='undefined';var _0x39af65=_0x1ba4f9[_0xbdb2('0x25')];var _0x30d9bf=_0x70e588?0x0:_0x18a0c0[_0xbdb2('0x23')];var _0x38dbe7=_0x70e588?_0x1ba4f9['count']:_0x18a0c0[_0xbdb2('0x23')]+_0x18a0c0[_0xbdb2('0x24')];var _0x17b466;if(_0x38dbe7>=_0x39af65){_0x38dbe7=_0x39af65;_0x17b466=0xc8;}else{_0x17b466=0xce;}_0x45321c[_0xbdb2('0x20')](_0x17b466);return _0x45321c[_0xbdb2('0x26')](_0xbdb2('0x27'),_0x30d9bf+'-'+_0x38dbe7+'/'+_0x39af65)[_0xbdb2('0x22')](_0x1ba4f9);}return null;};}function patchUpdates(_0x10b0c4){return function(_0x4c2e76){try{jsonpatch[_0xbdb2('0x28')](_0x4c2e76,_0x10b0c4,!![]);}catch(_0x9c7a87){return BPromise[_0xbdb2('0x29')](_0x9c7a87);}return _0x4c2e76['save']();};}function saveUpdates(_0x823f89,_0x146b53){return function(_0x1987aa){if(_0x1987aa){return _0x1987aa[_0xbdb2('0x2a')](_0x823f89)[_0xbdb2('0x2b')](function(_0x55d5d2){return _0x55d5d2;});}return null;};}function removeEntity(_0x3305bd,_0x316e03){return function(_0x3c9848){if(_0x3c9848){return _0x3c9848['destroy']()[_0xbdb2('0x2b')](function(){_0x3305bd[_0xbdb2('0x20')](0xcc)[_0xbdb2('0x21')]();});}};}function handleEntityNotFound(_0x4c5f19,_0x2add91){return function(_0x1b8f60){if(!_0x1b8f60){_0x4c5f19[_0xbdb2('0x1f')](0x194);}return _0x1b8f60;};}function handleError(_0x121b6a,_0xab90a9){_0xab90a9=_0xab90a9||0x1f4;return function(_0x4bdf34){logger[_0xbdb2('0x2c')](_0x4bdf34['stack']);if(_0x4bdf34[_0xbdb2('0x2d')]){delete _0x4bdf34[_0xbdb2('0x2d')];}_0x121b6a[_0xbdb2('0x20')](_0xab90a9)[_0xbdb2('0x2e')](_0x4bdf34);};}function getInteractionUsers(_0x31637c,_0x2a366f){return new BPromise(function(_0x19553a,_0x249bed){try{if(_0x2a366f[_0x31637c['id']]){_0x31637c[_0xbdb2('0x2f')]=_[_0xbdb2('0x30')](_0x2a366f[_0x31637c['id']],function(_0x279d41){return{'id':_0x279d41['id'],'fullname':_0x279d41[_0xbdb2('0x31')]};});}}catch(_0x5c8ebc){_0x249bed(_0x5c8ebc);}_0x19553a(_0x31637c);});}function getInteractionTags(_0x380423,_0x581b34){return new BPromise(function(_0x178c36,_0x3f5be5){try{if(_0x380423['TagIds']){_0x380423[_0xbdb2('0x32')]=[];_0x380423['TagIds'][_0xbdb2('0x33')](',')[_0xbdb2('0x34')](function(_0x315a72){_0x380423[_0xbdb2('0x32')][_0xbdb2('0x35')](_0x581b34[_0x315a72]);});}delete _0x380423[_0xbdb2('0x36')];}catch(_0x66ad28){_0x3f5be5(_0x66ad28);}_0x178c36(_0x380423);});}function updateOpenchannelInteraction(_0x3ae4ac,_0x56057d,_0x265fe0){return new BPromise(function(_0x51a189,_0x243bcf){return getInteractionUsers(_0x3ae4ac,_0x265fe0)['then'](function(_0x157d93){return getInteractionTags(_0x157d93,_0x56057d);})[_0xbdb2('0x2b')](function(_0x2274a1){_0x51a189(_0x2274a1);})[_0xbdb2('0x37')](function(_0x426ae5){_0x243bcf(_0x426ae5);});});}exports[_0xbdb2('0x38')]=function(_0x3cebc0,_0x47e534){var _0x3ebf3e={},_0x2666dd={},_0x4b44f4={'count':0x0,'rows':[]};var _0x7ec35f=_[_0xbdb2('0x30')](db['OpenchannelInteraction'][_0xbdb2('0x39')],function(_0x48704f){return{'name':_0x48704f[_0xbdb2('0x3a')],'type':_0x48704f[_0xbdb2('0x3b')][_0xbdb2('0x3c')]};});_0x2666dd[_0xbdb2('0x3d')]=_[_0xbdb2('0x30')](_0x7ec35f,'name');_0x2666dd[_0xbdb2('0x3e')]=_[_0xbdb2('0x3f')](_0x3cebc0[_0xbdb2('0x3e')]);_0x2666dd[_0xbdb2('0x40')]=_[_0xbdb2('0x41')](_0x2666dd[_0xbdb2('0x3d')],_0x2666dd[_0xbdb2('0x3e')]);_0x3ebf3e[_0xbdb2('0x42')]=_[_0xbdb2('0x41')](_0x2666dd[_0xbdb2('0x3d')],qs[_0xbdb2('0x43')](_0x3cebc0['query']['fields']));_0x3ebf3e[_0xbdb2('0x42')]=_0x3ebf3e[_0xbdb2('0x42')][_0xbdb2('0x44')]?_0x3ebf3e[_0xbdb2('0x42')]:_0x2666dd[_0xbdb2('0x3d')];if(!_0x3cebc0[_0xbdb2('0x3e')][_0xbdb2('0x45')]('nolimit')){_0x3ebf3e[_0xbdb2('0x24')]=qs[_0xbdb2('0x24')](_0x3cebc0['query'][_0xbdb2('0x24')]);_0x3ebf3e[_0xbdb2('0x23')]=qs['offset'](_0x3cebc0['query'][_0xbdb2('0x23')]);}_0x3ebf3e[_0xbdb2('0x46')]=qs[_0xbdb2('0x47')](_0x3cebc0[_0xbdb2('0x3e')][_0xbdb2('0x47')]);_0x3ebf3e['where']=qs[_0xbdb2('0x40')](_[_0xbdb2('0x48')](_0x3cebc0[_0xbdb2('0x3e')],_0x2666dd[_0xbdb2('0x40')]),_0x7ec35f);var _0x183e71=[];var _0x26efa7=squel[_0xbdb2('0x49')]()[_0xbdb2('0x4a')]('id')[_0xbdb2('0x4a')](_0xbdb2('0x2d'))[_0xbdb2('0x4a')](_0xbdb2('0x4b'))['from']('tools_tags');var _0x151759=squel['select']()[_0xbdb2('0x4a')](_0xbdb2('0x4c'))[_0xbdb2('0x4a')](_0xbdb2('0x4d'))['field']('ui.OpenchannelInteractionId')[_0xbdb2('0x4e')](_0xbdb2('0x4f'),'ui')['left_join']('users','u',_0xbdb2('0x50'));var _0x25ea2c=squel[_0xbdb2('0x49')]()[_0xbdb2('0x4e')](_0xbdb2('0x51'),'i')[_0xbdb2('0x52')](_0xbdb2('0x53'),'c',_0xbdb2('0x54'))[_0xbdb2('0x52')]('users','o',_0xbdb2('0x55'))[_0xbdb2('0x52')](_0xbdb2('0x56'),'a','a.id\x20=\x20i.OpenchannelAccountId')[_0xbdb2('0x52')](_0xbdb2('0x57'),'me',_0xbdb2('0x58'))[_0xbdb2('0x52')](_0xbdb2('0x59'),'it',_0xbdb2('0x5a'))['left_join'](_0xbdb2('0x5b'),'t',_0xbdb2('0x5c'));var _0x3f5e48=squel[_0xbdb2('0x5d')]();var _0xc2ee2f=[];var _0x408d66=squel[_0xbdb2('0x5d')]();var _0x4be9d9;if(_0x3cebc0[_0xbdb2('0x3e')][_0xbdb2('0x5e')]){_0x4be9d9=as[_0xbdb2('0x5f')](_0x3cebc0[_0xbdb2('0x3e')][_0xbdb2('0x5e')]);var _0x4f8b88=_0x4be9d9[_0xbdb2('0x60')];for(var _0x2994e8=0x0;_0x2994e8<_0x4be9d9[_0xbdb2('0x61')][_0xbdb2('0x44')];_0x2994e8++){var _0xa9b3d1=_0x4be9d9['conditions'][_0x2994e8];var _0x1080cd='i';var _0x2a8199=_[_0xbdb2('0x62')](_0x7ec35f,[_0xbdb2('0x2d'),_0xa9b3d1[_0xbdb2('0x4a')]]);if(!_0x2a8199){switch(_0xa9b3d1[_0xbdb2('0x4a')]){case _0xbdb2('0x63'):if(_0xa9b3d1[_0xbdb2('0x64')]==0x1){_0x25ea2c[_0xbdb2('0x65')]('`'+_0xa9b3d1[_0xbdb2('0x4a')]+_0xbdb2('0x66'));}else{_0x25ea2c[_0xbdb2('0x65')]('`'+_0xa9b3d1['field']+_0xbdb2('0x67'));}break;case _0xbdb2('0x68'):if(_0xa9b3d1[_0xbdb2('0x69')]===_0xbdb2('0x6a')){if(_0xa9b3d1['value'][_0xbdb2('0x33')]('\x20')['length']>0x1){_0x3f5e48[_0x4f8b88](_0xbdb2('0x6b'),qs['getFullTextValue'](_0xa9b3d1['value']),null);}else{var _0x16885e='%'+_0xa9b3d1['value']+'%';_0x3f5e48[_0x4f8b88](_0xbdb2('0x6c'),_0x16885e,_0x16885e,_0x16885e);}}else{_0x2a8199=_[_0xbdb2('0x62')](_0x7ec35f,[_0xbdb2('0x2d'),_0xbdb2('0x6d')]);_0xa9b3d1[_0xbdb2('0x4a')]=_0xbdb2('0x6d');_0x5536e5=as[_0xbdb2('0x6e')](_0x1080cd,_0x2a8199[_0xbdb2('0x3b')],_0xa9b3d1);_0x3f5e48[_0x4f8b88](_0x5536e5['text'],_0x5536e5[_0xbdb2('0x64')][_0xbdb2('0x6f')],_0x5536e5[_0xbdb2('0x64')]['end']);}break;case _0xbdb2('0x70'):var _0x2dfb44=_0xa9b3d1[_0xbdb2('0x64')][_0xbdb2('0x33')](',')[_0xbdb2('0x30')](function(_0x3c9ffc){return Number(_0x3c9ffc);});_0x2dfb44[_0xbdb2('0x34')](function(_0x53efdd){_0x408d66['or'](_0xbdb2('0x71'),'%,'+_0x53efdd+',%');});_0xc2ee2f=_['union'](_0xc2ee2f,_0x2dfb44);break;case _0xbdb2('0x72'):if(_0xa9b3d1[_0xbdb2('0x69')]===_0xbdb2('0x6a')){_0x3f5e48[_0x4f8b88](_0xbdb2('0x73'),'%'+_0xa9b3d1[_0xbdb2('0x64')]+'%',null);}else{_0x2a8199=_[_0xbdb2('0x62')](_0x7ec35f,[_0xbdb2('0x2d'),'UserId']);_0xa9b3d1[_0xbdb2('0x4a')]=_0xbdb2('0x74');_0x5536e5=as[_0xbdb2('0x6e')](_0x1080cd,_0x2a8199[_0xbdb2('0x3b')],_0xa9b3d1);_0x3f5e48[_0x4f8b88](_0x5536e5['text'],_0x5536e5[_0xbdb2('0x64')][_0xbdb2('0x6f')],_0x5536e5['value'][_0xbdb2('0x21')]);}break;case _0xbdb2('0x75'):_0x5536e5=as[_0xbdb2('0x6e')]('me',null,_0xa9b3d1);_0x3f5e48[_0x4f8b88](_0x5536e5[_0xbdb2('0x76')],_0x5536e5[_0xbdb2('0x64')][_0xbdb2('0x6f')],_0x5536e5[_0xbdb2('0x64')][_0xbdb2('0x21')]);break;}}else{var _0x5536e5=as['buildExpression'](_0x1080cd,_0x2a8199[_0xbdb2('0x3b')],_0xa9b3d1);_0x3f5e48[_0x4f8b88](_0x5536e5['text'],_0x5536e5[_0xbdb2('0x64')][_0xbdb2('0x6f')],_0x5536e5[_0xbdb2('0x64')][_0xbdb2('0x21')]);}}}else{var _0x48a591=_(_0x3cebc0[_0xbdb2('0x3e')])[_0xbdb2('0x3f')]()[_0xbdb2('0x30')](function(_0x455d6a){return _['some'](_0x7ec35f,[_0xbdb2('0x2d'),_0x455d6a])?_0x455d6a:undefined;})[_0xbdb2('0x77')]()[_0xbdb2('0x64')]();if(!_[_0xbdb2('0x78')](_0x48a591)){_0x48a591['forEach'](function(_0x253d96){if(_0x253d96===_0xbdb2('0x79')){_0x25ea2c[_0xbdb2('0x7a')]('i.OpenchannelAccountId\x20IN\x20?',[][_0xbdb2('0x7b')](_0x3cebc0[_0xbdb2('0x3e')][_0x253d96]));}else if(_0x253d96===_0xbdb2('0x7c')){var _0x14f6e9=JSON[_0xbdb2('0x7d')](_0x3cebc0['query'][_0x253d96])[_0xbdb2('0x7e')];var _0x16774b=JSON[_0xbdb2('0x7d')](_0x3cebc0[_0xbdb2('0x3e')][_0x253d96])[_0xbdb2('0x7f')];_0x25ea2c[_0xbdb2('0x7a')](_0xbdb2('0x80'),_0x14f6e9,_0x16774b);}else{if(_0x3cebc0[_0xbdb2('0x3e')][_0x253d96]==='null'){_0x25ea2c['where']('i.'+_0x253d96+'\x20IS\x20NULL');}else{_0x25ea2c[_0xbdb2('0x7a')]('i.'+_0x253d96+_0xbdb2('0x81'),_0x3cebc0['query'][_0x253d96]);}}});}if(_0x3cebc0[_0xbdb2('0x3e')][_0xbdb2('0x82')]){if(_0x3cebc0['query'][_0xbdb2('0x82')]==0x1){_0x25ea2c[_0xbdb2('0x65')]('`unreadMessages`\x20=\x200');}else{_0x25ea2c[_0xbdb2('0x65')]('`unreadMessages`\x20>\x200');}}if(_0x3cebc0['query'][_0xbdb2('0x83')]){_0xc2ee2f=_[_0xbdb2('0x84')](_0x3cebc0[_0xbdb2('0x3e')][_0xbdb2('0x83')])?_0x3cebc0[_0xbdb2('0x3e')][_0xbdb2('0x83')]:new Array(_0x3cebc0[_0xbdb2('0x3e')][_0xbdb2('0x83')]);_0xc2ee2f['forEach'](function(_0x1f0e4c){_0x408d66['or'](_0xbdb2('0x71'),'%,'+_0x1f0e4c+',%');});}if(_0x3cebc0['query'][_0xbdb2('0x85')]){var _0x25134f=_0x3cebc0[_0xbdb2('0x3e')][_0xbdb2('0x85')][_0xbdb2('0x86')]('\x5c','\x5c\x5c')[_0xbdb2('0x86')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x25134f)){_0x3f5e48['or'](_0xbdb2('0x87'),_0x25134f+'%');}else{_0x3f5e48['or'](_0xbdb2('0x88'),qs[_0xbdb2('0x89')](_0x25134f))['or'](_0xbdb2('0x8a'),_0x25134f+'%')['or'](_0xbdb2('0x8b'),_0x25134f+'%');}}}_0x25ea2c['where'](_0x3f5e48);_0x25ea2c['group'](_0xbdb2('0x8c'));var _0x97b55a={'type':db[_0xbdb2('0x8d')]['QueryTypes'][_0xbdb2('0x8e')],'raw':!![]};var _0x2b5a96=_0x25ea2c['clone']();_0x2b5a96[_0xbdb2('0x4a')](_0xbdb2('0x8c'));_0x2b5a96[_0xbdb2('0x4a')](_0xbdb2('0x8f'),_0xbdb2('0x63'));if(_0x3ebf3e[_0xbdb2('0x46')]){_0x3ebf3e[_0xbdb2('0x46')][_0xbdb2('0x34')](function(_0x34a612){var _0x55c023=_0x34a612[0x0]===_0xbdb2('0x90')?_0x34a612[0x0]:'i.'+_0x34a612[0x0];_0x25ea2c[_0xbdb2('0x46')](_0x55c023,_0x34a612[0x1]===_0xbdb2('0x91')?![]:!![]);});}if(!_['isEmpty'](_0xc2ee2f)){_0x25ea2c['having'](_0x408d66);_0x2b5a96[_0xbdb2('0x7a')](_0xbdb2('0x92'),_0xc2ee2f);}BPromise[_0xbdb2('0x93')]()['then'](function(){if(!_0x4be9d9){if(_0x3cebc0[_0xbdb2('0x3e')]['OpenchannelAccountId'])return;_0x2b5a96[_0xbdb2('0x7a')](_0xbdb2('0x94'));_0x25ea2c[_0xbdb2('0x7a')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x3cebc0[_0xbdb2('0x95')][_0xbdb2('0x96')]!==_0xbdb2('0x97'))return;return _0x3cebc0[_0xbdb2('0x95')][_0xbdb2('0x98')]({'attributes':['id'],'raw':!![]})[_0xbdb2('0x2b')](function(_0xbc1907){if(_[_0xbdb2('0x78')](_0xbc1907)){_0x2b5a96[_0xbdb2('0x7a')](_0xbdb2('0x99'));_0x25ea2c[_0xbdb2('0x7a')](_0xbdb2('0x99'));}else{_0x2b5a96[_0xbdb2('0x7a')]('i.OpenchannelAccountId\x20IN\x20?',_['map'](_0xbc1907,'id'));_0x25ea2c['where'](_0xbdb2('0x9a'),_['map'](_0xbc1907,'id'));}});})[_0xbdb2('0x2b')](function(){if(_0x3cebc0[_0xbdb2('0x95')][_0xbdb2('0x96')]===_0xbdb2('0x97')&&!_0x4be9d9&&!_0x3cebc0[_0xbdb2('0x3e')][_0xbdb2('0x79')])return[];return db[_0xbdb2('0x9b')]['query'](_0x2b5a96['toString'](),_0x97b55a);})[_0xbdb2('0x2b')](function(_0x16344f){_0x4b44f4[_0xbdb2('0x25')]=_0x16344f[_0xbdb2('0x44')];if(_0x4b44f4[_0xbdb2('0x25')]===0x0)return[];return db[_0xbdb2('0x9b')][_0xbdb2('0x3e')](_0x26efa7[_0xbdb2('0x9c')](),_0x97b55a)[_0xbdb2('0x2b')](function(_0x593d08){_0x183e71=_['keyBy'](_0x593d08,'id');_0x97b55a=_[_0xbdb2('0x9d')](_0x97b55a,{'model':db[_0xbdb2('0x9e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3cebc0[_0xbdb2('0x3e')][_0xbdb2('0x43')]){_0x3ebf3e[_0xbdb2('0x42')][_0xbdb2('0x34')](function(_0x2f53ea){_0x25ea2c[_0xbdb2('0x4a')]('i.'+_0x2f53ea);});}else{_0x25ea2c[_0xbdb2('0x4a')](_0xbdb2('0x8f'),'unreadMessages');_0x25ea2c[_0xbdb2('0x4a')](_0xbdb2('0x9f'),_0xbdb2('0xa0'));_0x25ea2c[_0xbdb2('0x4a')]('a.mandatoryDisposition',_0xbdb2('0xa1'));_0x25ea2c[_0xbdb2('0x4a')](_0xbdb2('0xa2'),_0xbdb2('0x90'));_0x25ea2c[_0xbdb2('0x4a')](_0xbdb2('0xa3'));_0x25ea2c[_0xbdb2('0x4a')](_0xbdb2('0xa4'),_0xbdb2('0xa5'));_0x25ea2c[_0xbdb2('0x4a')](_0xbdb2('0xa6'),_0xbdb2('0xa7'));_0x25ea2c[_0xbdb2('0x4a')](_0xbdb2('0xa8'),'Contact.email');_0x25ea2c[_0xbdb2('0x4a')](_0xbdb2('0xa9'),_0xbdb2('0xaa'));_0x25ea2c[_0xbdb2('0x4a')]('c.mobile',_0xbdb2('0xab'));_0x25ea2c[_0xbdb2('0x4a')](_0xbdb2('0xac'),'Contact.fax');_0x25ea2c[_0xbdb2('0x4a')](_0xbdb2('0xad'),_0xbdb2('0xae'));_0x25ea2c[_0xbdb2('0x4a')]('o.internal',_0xbdb2('0xaf'));_0x25ea2c[_0xbdb2('0x4a')](_0xbdb2('0xb0'),'TagIds');}if(_0x3ebf3e[_0xbdb2('0x24')])_0x25ea2c[_0xbdb2('0x24')](_0x3ebf3e[_0xbdb2('0x24')]);if(_0x3ebf3e['offset'])_0x25ea2c['offset'](_0x3ebf3e[_0xbdb2('0x23')]);return db[_0xbdb2('0x9b')][_0xbdb2('0x3e')](_0x25ea2c[_0xbdb2('0x9c')](),_0x97b55a);})[_0xbdb2('0x2b')](function(_0x3269cf){if(_0x3269cf[_0xbdb2('0x44')]>0x0)_0x151759['where'](_0xbdb2('0xb1'),_[_0xbdb2('0x30')](_0x3269cf,'id'));return db['sequelize'][_0xbdb2('0x3e')](_0x151759['toString'](),_0x97b55a)[_0xbdb2('0x2b')](function(_0x374b62){var _0x9135a7=_[_0xbdb2('0xb2')](_0x374b62,_0xbdb2('0xb3'));var _0x21d7a7=[];_0x3269cf['forEach'](function(_0x1c7c6b){_0x21d7a7[_0xbdb2('0x35')](updateOpenchannelInteraction(_0x1c7c6b,_0x183e71,_0x9135a7));});return BPromise[_0xbdb2('0xb4')](_0x21d7a7);});});})[_0xbdb2('0x2b')](function(_0x3271a9){_0x4b44f4[_0xbdb2('0xb5')]=_0x3271a9;return _0x4b44f4;})[_0xbdb2('0x2b')](respondWithFilteredResult(_0x47e534,_0x3ebf3e))[_0xbdb2('0x37')](handleError(_0x47e534,null));};exports[_0xbdb2('0xb6')]=function(_0x476a0d,_0x1a3705){var _0x2dca04={};if(_0x476a0d[_0xbdb2('0x3e')][_0xbdb2('0x3b')]&&_0x476a0d[_0xbdb2('0x3e')][_0xbdb2('0x3b')]==='from'){_0x2dca04[_0xbdb2('0x4e')]=_0x476a0d[_0xbdb2('0xb7')]['id'];}else{_0x2dca04['id']=_0x476a0d[_0xbdb2('0xb7')]['id'];}var _0x530a30={'raw':![],'where':_0x2dca04},_0x68d530={};_0x68d530['model']=_[_0xbdb2('0x3f')](db[_0xbdb2('0x9e')]['rawAttributes']);_0x68d530[_0xbdb2('0x3e')]=_[_0xbdb2('0x3f')](_0x476a0d[_0xbdb2('0x3e')]);_0x68d530[_0xbdb2('0x40')]=_['intersection'](_0x68d530[_0xbdb2('0x3d')],_0x68d530[_0xbdb2('0x3e')]);_0x530a30[_0xbdb2('0x42')]=_['intersection'](_0x68d530[_0xbdb2('0x3d')],qs['fields'](_0x476a0d[_0xbdb2('0x3e')][_0xbdb2('0x43')]));_0x530a30['attributes']=_0x530a30[_0xbdb2('0x42')][_0xbdb2('0x44')]?_0x530a30[_0xbdb2('0x42')]:_0x68d530[_0xbdb2('0x3d')];if(_0x476a0d[_0xbdb2('0x3e')]['includeAll']){_0x530a30[_0xbdb2('0xb8')]=[{'all':!![]}];}_0x530a30=_[_0xbdb2('0x9d')]({},_0x530a30,_0x476a0d['options']);return db['OpenchannelInteraction'][_0xbdb2('0x62')](_0x530a30)[_0xbdb2('0x2b')](handleEntityNotFound(_0x1a3705,null))['then'](respondWithResult(_0x1a3705,null))['catch'](handleError(_0x1a3705,null));};exports[_0xbdb2('0xb9')]=function(_0x4d4326,_0x16e45e){return db[_0xbdb2('0x9e')]['create'](_0x4d4326[_0xbdb2('0x75')],{})[_0xbdb2('0x2b')](respondWithResult(_0x16e45e,0xc9))['catch'](handleError(_0x16e45e,null));};exports['update']=function(_0x28bc06,_0x512ba0){if(_0x28bc06[_0xbdb2('0x75')]['id']){delete _0x28bc06[_0xbdb2('0x75')]['id'];}return db['OpenchannelInteraction'][_0xbdb2('0x62')]({'where':{'id':_0x28bc06[_0xbdb2('0xb7')]['id']}})['then'](handleEntityNotFound(_0x512ba0,null))[_0xbdb2('0x2b')](saveUpdates(_0x28bc06[_0xbdb2('0x75')],null))[_0xbdb2('0x2b')](respondWithResult(_0x512ba0,null))[_0xbdb2('0x37')](handleError(_0x512ba0,null));};exports[_0xbdb2('0xba')]=function(_0x5e5f30,_0x59b115){return db['OpenchannelInteraction'][_0xbdb2('0x62')]({'where':{'id':_0x5e5f30['params']['id']}})[_0xbdb2('0x2b')](handleEntityNotFound(_0x59b115,null))['then'](removeEntity(_0x59b115,null))['catch'](handleError(_0x59b115,null));};exports[_0xbdb2('0xbb')]=function(_0x1dd0f2,_0x2e7a3c){return db['OpenchannelInteraction']['describe']()[_0xbdb2('0x2b')](respondWithResult(_0x2e7a3c,null))['catch'](handleError(_0x2e7a3c,null));};exports[_0xbdb2('0xbc')]=function(_0x5d6d2f,_0x145d19,_0x2d0b79){return db['OpenchannelMessage'][_0xbdb2('0x62')]({'where':{'id':_0x5d6d2f['params']['id']}})[_0xbdb2('0x2b')](handleEntityNotFound(_0x145d19,null))[_0xbdb2('0x2b')](function(_0x47e52e){if(_0x47e52e){return _0x47e52e[_0xbdb2('0xbc')](_0x5d6d2f[_0xbdb2('0x75')]['ids'],_[_0xbdb2('0xbd')](_0x5d6d2f[_0xbdb2('0x75')],[_0xbdb2('0xbe'),'id'])||{});}})[_0xbdb2('0x2b')](respondWithResult(_0x145d19,null))[_0xbdb2('0x37')](handleError(_0x145d19,null));};exports[_0xbdb2('0xbf')]=function(_0x1a6a2c,_0x391272,_0x40ac7c){var _0x164328={'raw':![],'where':{}};var _0x1125ab={};var _0x4c9d08={'count':0x0,'rows':[]};return db['OpenchannelInteraction'][_0xbdb2('0xc0')]({'where':{'id':_0x1a6a2c[_0xbdb2('0xb7')]['id']}})[_0xbdb2('0x2b')](handleEntityNotFound(_0x391272,null))['then'](function(_0x4bdbd1){if(_0x4bdbd1){_0x1125ab[_0xbdb2('0x3d')]=_[_0xbdb2('0x3f')](db[_0xbdb2('0xc1')]['rawAttributes']);_0x1125ab[_0xbdb2('0x3e')]=_[_0xbdb2('0x3f')](_0x1a6a2c['query']);_0x1125ab[_0xbdb2('0x40')]=_['intersection'](_0x1125ab[_0xbdb2('0x3d')],_0x1125ab[_0xbdb2('0x3e')]);_0x164328[_0xbdb2('0x42')]=_[_0xbdb2('0x41')](_0x1125ab[_0xbdb2('0x3d')],qs['fields'](_0x1a6a2c[_0xbdb2('0x3e')][_0xbdb2('0x43')]));_0x164328[_0xbdb2('0x42')]=_0x164328[_0xbdb2('0x42')][_0xbdb2('0x44')]?_0x164328[_0xbdb2('0x42')]:_0x1125ab[_0xbdb2('0x3d')];if(!_0x1a6a2c[_0xbdb2('0x3e')][_0xbdb2('0x45')]('nolimit')){_0x164328['limit']=qs[_0xbdb2('0x24')](_0x1a6a2c[_0xbdb2('0x3e')][_0xbdb2('0x24')]);_0x164328[_0xbdb2('0x23')]=qs['offset'](_0x1a6a2c[_0xbdb2('0x3e')][_0xbdb2('0x23')]);}_0x164328[_0xbdb2('0x46')]=qs['sort'](_0x1a6a2c[_0xbdb2('0x3e')][_0xbdb2('0x47')]);_0x164328['where']=qs['filters'](_[_0xbdb2('0x48')](_0x1a6a2c[_0xbdb2('0x3e')],_0x1125ab[_0xbdb2('0x40')]));_0x164328[_0xbdb2('0x7a')][_0xbdb2('0xb3')]=_0x4bdbd1['id'];if(_0x1a6a2c[_0xbdb2('0x3e')][_0xbdb2('0x85')]){_0x164328[_0xbdb2('0x7a')]=_[_0xbdb2('0x9d')](_0x164328['where'],{'$or':_['map'](_0x164328[_0xbdb2('0x42')],function(_0x288ddd){var _0xf5bfbb={};_0xf5bfbb[_0x288ddd]={'$like':'%'+_0x1a6a2c[_0xbdb2('0x3e')][_0xbdb2('0x85')]+'%'};return _0xf5bfbb;})});}if(_0x1a6a2c['query'][_0xbdb2('0x7e')]){var _0x2b1780=_0x1a6a2c[_0xbdb2('0x3e')][_0xbdb2('0x7e')]['split'](',');var _0x49cf52={};_0x49cf52[_0x2b1780[0x0]]={'$gte':moment(_0x2b1780[0x1])[_0xbdb2('0xc2')]('YYYY-MM-DD\x20HH:mm:ss')};_0x164328[_0xbdb2('0x7a')]=_[_0xbdb2('0x9d')](_0x164328['where'],_0x49cf52);}_0x164328=_[_0xbdb2('0x9d')]({},_0x164328,_0x1a6a2c[_0xbdb2('0xc3')]);return db[_0xbdb2('0xc1')][_0xbdb2('0x25')]({'where':_0x164328['where']})[_0xbdb2('0x2b')](function(_0x55b6dc){_0x4c9d08[_0xbdb2('0x25')]=_0x55b6dc;if(_0x1a6a2c[_0xbdb2('0x3e')][_0xbdb2('0xc4')]){_0x164328[_0xbdb2('0xb8')]=[{'all':!![]}];}return db[_0xbdb2('0xc1')][_0xbdb2('0xc5')](_0x164328);})[_0xbdb2('0x2b')](function(_0x2744a6){_0x4c9d08[_0xbdb2('0xb5')]=_0x2744a6;return _0x4c9d08;});}})[_0xbdb2('0x2b')](respondWithFilteredResult(_0x391272,_0x164328))[_0xbdb2('0x37')](handleError(_0x391272,null));};exports['addTags']=function(_0x4c2546,_0x541d6e,_0x24f686){return db[_0xbdb2('0x9e')]['find']({'where':{'id':_0x4c2546[_0xbdb2('0xb7')]['id']}})['then'](handleEntityNotFound(_0x541d6e,null))[_0xbdb2('0x2b')](function(_0x57db70){if(_0x57db70){return _0x57db70[_0xbdb2('0xc6')](_0x4c2546[_0xbdb2('0x75')][_0xbdb2('0xbe')],_[_0xbdb2('0xbd')](_0x4c2546[_0xbdb2('0x75')],[_0xbdb2('0xbe'),'id'])||{})['spread'](function(){return db[_0xbdb2('0x70')][_0xbdb2('0xc5')]({'attributes':['id','name',_0xbdb2('0x4b')],'where':{'id':_0x4c2546[_0xbdb2('0x75')][_0xbdb2('0xbe')]}});})[_0xbdb2('0x2b')](function(_0x412c31){socket[_0xbdb2('0xc7')](_0xbdb2('0xc8'),{'id':Number(_0x4c2546[_0xbdb2('0xb7')]['id']),'tags':_0x412c31||[]});return{'id':Number(_0x4c2546[_0xbdb2('0xb7')]['id']),'tags':_0x412c31||[]};});}})[_0xbdb2('0x2b')](respondWithResult(_0x541d6e,null))[_0xbdb2('0x37')](handleError(_0x541d6e,null));};exports[_0xbdb2('0xc9')]=function(_0x241c79,_0x310d22,_0xbc3889){return db['OpenchannelInteraction']['find']({'where':{'id':_0x241c79[_0xbdb2('0xb7')]['id']}})['then'](handleEntityNotFound(_0x310d22,null))[_0xbdb2('0x2b')](function(_0x4a2ec2){if(_0x4a2ec2){return _0x4a2ec2[_0xbdb2('0xc9')](_0x241c79[_0xbdb2('0x3e')][_0xbdb2('0xbe')]);}})[_0xbdb2('0x2b')](respondWithStatusCode(_0x310d22,null))['catch'](handleError(_0x310d22,null));};exports[_0xbdb2('0xca')]=function(_0x51b4d5,_0x529a4f){var _0x4b170e=moment()[_0xbdb2('0xcb')]()[_0xbdb2('0x9c')]();var _0x402915=path['join'](config[_0xbdb2('0xcc')],'server','files',_0xbdb2('0xcd'));var _0x37f2f5=path[_0xbdb2('0xce')](config[_0xbdb2('0xcc')],_0xbdb2('0xcf'),_0xbdb2('0xd0'),_0xbdb2('0xd1'));var _0x3c33ed=path[_0xbdb2('0xce')](_0x402915,_0x4b170e);var _0x13b4c7=util[_0xbdb2('0xc2')](_0xbdb2('0xd2'),_0x51b4d5[_0xbdb2('0xb7')]['id'],_0x4b170e);var _0x221e36=path[_0xbdb2('0xce')](_0x402915,_0x13b4c7);var _0x2f3dcf=[];_0x2f3dcf[_0xbdb2('0x35')]({'model':db['User'],'as':_0xbdb2('0x72'),'attributes':['id',_0xbdb2('0x31')],'raw':!![]});_0x2f3dcf[_0xbdb2('0x35')]({'model':db['CmContact'],'as':_0xbdb2('0x68'),'attributes':['id','firstName','lastName'],'raw':!![]});if(_0x51b4d5['query'][_0xbdb2('0xd1')]){_0x2f3dcf[_0xbdb2('0x35')]({'model':db[_0xbdb2('0xd3')],'as':_0xbdb2('0xd3'),'raw':!![]});}var _0x3b2f65=[{'model':db['OpenchannelMessage'],'as':_0xbdb2('0xd4'),'attributes':['id',_0xbdb2('0x75'),_0xbdb2('0x7c'),'direction',_0xbdb2('0xd5'),'read'],'include':_0x2f3dcf}];_0x3b2f65[_0xbdb2('0x35')]({'model':db[_0xbdb2('0xd6')],'as':_0xbdb2('0xd7'),'attributes':['id',_0xbdb2('0x2d')]});_0x3b2f65[_0xbdb2('0x35')]({'model':db['User'],'as':_0xbdb2('0xd8'),'attributes':['id',_0xbdb2('0x31')]});return db['OpenchannelInteraction']['find']({'where':{'id':_0x51b4d5[_0xbdb2('0xb7')]['id']},'include':_0x3b2f65})['then'](handleEntityNotFound(_0x529a4f,null))[_0xbdb2('0x2b')](function(_0x28f2f3){if(_0x28f2f3){var _0x4f4531=_0x28f2f3[_0xbdb2('0xd9')]({'plain':!![]});fs[_0xbdb2('0xda')](_0x3c33ed);var _0x1db092={'channel':'Openchannel','account':_0x4f4531[_0xbdb2('0xd7')][_0xbdb2('0x2d')],'agent':_0x4f4531[_0xbdb2('0xd8')]?_0x4f4531[_0xbdb2('0xd8')][_0xbdb2('0x31')]:_0xbdb2('0xdb'),'createdAt':moment(_0x4f4531[_0xbdb2('0x7c')])[_0xbdb2('0xc2')]('YYYY-MM-DD\x20HH:mm:ss')[_0xbdb2('0x9c')](),'closedAt':_0x4f4531[_0xbdb2('0xdc')]?moment(_0x4f4531[_0xbdb2('0xdd')])[_0xbdb2('0xc2')](_0xbdb2('0xde'))[_0xbdb2('0x9c')]():'','disposition':_0x4f4531['disposition'],'visibility':_0x4f4531[_0xbdb2('0xdf')]?_0xbdb2('0xe0'):'Private','messages':_(_0x4f4531[_0xbdb2('0xd4')])[_0xbdb2('0x85')]({'secret':![]})[_0xbdb2('0x30')](function(_0x181019){if(_0x181019[_0xbdb2('0xd3')]){var _0x36510e=path[_0xbdb2('0xce')](_0x37f2f5,_0x181019[_0xbdb2('0xd3')][_0xbdb2('0xe1')]);if(fs[_0xbdb2('0xe2')](_0x36510e)){fs['createReadStream'](_0x36510e)[_0xbdb2('0xe3')](fs[_0xbdb2('0xe4')](path['join'](_0x3c33ed,_0x181019['Attachment'][_0xbdb2('0xe1')])));}}return{'date':moment(_0x181019[_0xbdb2('0x7c')])[_0xbdb2('0xc2')](_0xbdb2('0xde'))['toString'](),'sender':_0x181019[_0xbdb2('0xe5')]===_0xbdb2('0xe6')?_0x181019[_0xbdb2('0x72')]?_0x181019[_0xbdb2('0x72')][_0xbdb2('0x31')]:_0xbdb2('0xe7'):_0x181019[_0xbdb2('0x68')][_0xbdb2('0xe8')]+(_0x181019[_0xbdb2('0x68')][_0xbdb2('0xe9')]?'\x20'+_0x181019[_0xbdb2('0x68')][_0xbdb2('0xe9')]:''),'body':_0x181019[_0xbdb2('0xd3')]?_0x181019['Attachment']['basename']:_0x181019[_0xbdb2('0x75')],'direction':_0x181019[_0xbdb2('0xe5')]===_0xbdb2('0xe6')?'A':'C','secret':_0x181019['secret'],'read':_0x181019[_0xbdb2('0x82')],'attachment':_0x181019[_0xbdb2('0xd3')]};})[_0xbdb2('0x64')]()};return ejs['renderFile'](path['join'](config[_0xbdb2('0xcc')],_0xbdb2('0xcf'),'views',_0xbdb2('0xea')),{'interaction':_0x1db092})[_0xbdb2('0x2b')](function(_0x4f85d7){var _0x4b27e6=path[_0xbdb2('0xce')](_0x3c33ed,_0xbdb2('0xeb')+_0x4f4531['id']+'-'+_0x4b170e+_0xbdb2('0xec'));var _0x262cc9={'path':_0x4b27e6,'channel':'Openchannel','interactionId':_0x4f4531['id']};return pdf[_0xbdb2('0xed')](_0x4f85d7,_0x262cc9);})[_0xbdb2('0x2b')](function(){return new BPromise(function(_0x54a6fc,_0x2fa5b2){zipdir(_0x3c33ed,{'saveTo':_0x221e36},function(_0x17c3da,_0x1eb82f){if(_0x17c3da)return _0x2fa5b2(_0x17c3da);return _0x54a6fc(_0x1eb82f);});})[_0xbdb2('0x2b')](function(){return new BPromise(function(_0x53b09c,_0x37eee9){rimraf(_0x3c33ed,function(_0x29cfac){if(_0x29cfac)_0x37eee9(_0x29cfac);return _0x53b09c();});});})[_0xbdb2('0x2b')](function(){return _0x529a4f[_0xbdb2('0xca')](_0x221e36,_0x13b4c7,function(_0x1288ba){if(_0x1288ba){console[_0xbdb2('0xee')](_0xbdb2('0xef'),_0x1288ba);}else{fs['unlinkSync'](_0x221e36);}});});});}else{return _0x529a4f[_0xbdb2('0x1f')](0xc8);}})['catch'](handleError(_0x529a4f,null));};
\ No newline at end of file
index 99bc635..5c1bc52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6068=['hook','exports','events','../../mysqldb','OpenchannelMessage','setMaxListeners','save','getUsers','map','findAll','then','length','emit','hasOwnProperty'];(function(_0x3d3a10,_0x4a47d8){var _0x29f92d=function(_0x2faeef){while(--_0x2faeef){_0x3d3a10['push'](_0x3d3a10['shift']());}};_0x29f92d(++_0x4a47d8);}(_0x6068,0x144));var _0x8606=function(_0x4b244d,_0x6fe6a3){_0x4b244d=_0x4b244d-0x0;var _0x7629ae=_0x6068[_0x4b244d];return _0x7629ae;};'use strict';var EventEmitter=require(_0x8606('0x0'));var OpenchannelInteraction=require(_0x8606('0x1'))['db']['OpenchannelInteraction'];var OpenchannelMessage=require(_0x8606('0x1'))['db'][_0x8606('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x8606('0x3')](0x0);var events={'afterCreate':_0x8606('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x8b0862){return function(_0x4bae69,_0x51e963,_0x26f47f){_0x4bae69[_0x8606('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x5070b3){_0x4bae69['setDataValue']('Users',_0x5070b3[_0x8606('0x6')](function(_0x45782c){return{'id':_0x45782c['id']};}));return OpenchannelMessage[_0x8606('0x7')]({'where':{'OpenchannelInteractionId':_0x4bae69['id'],'direction':'in','read':![]},'raw':!![]});})[_0x8606('0x8')](function(_0x184ae5){_0x4bae69['setDataValue']('unreadMessages',_0x184ae5[_0x8606('0x9')]);OpenchannelInteractionEvents[_0x8606('0xa')](_0x8b0862+':'+_0x4bae69['id'],_0x4bae69);OpenchannelInteractionEvents[_0x8606('0xa')](_0x8b0862,_0x4bae69);_0x26f47f(null);})['catch'](_0x26f47f(null));};}for(var e in events){if(events[_0x8606('0xb')](e)){var event=events[e];OpenchannelInteraction[_0x8606('0xc')](e,emitEvent(event));}}module[_0x8606('0xd')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x941f=['catch','hasOwnProperty','exports','events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','setMaxListeners','update','remove','getUsers','setDataValue','Users','map','findAll','then','unreadMessages','length','emit'];(function(_0x4d3f0a,_0x5a9fe7){var _0x42d5fc=function(_0x411a98){while(--_0x411a98){_0x4d3f0a['push'](_0x4d3f0a['shift']());}};_0x42d5fc(++_0x5a9fe7);}(_0x941f,0x133));var _0xf941=function(_0x47370e,_0x2056c5){_0x47370e=_0x47370e-0x0;var _0x43d229=_0x941f[_0x47370e];return _0x43d229;};'use strict';var EventEmitter=require(_0xf941('0x0'));var OpenchannelInteraction=require(_0xf941('0x1'))['db'][_0xf941('0x2')];var OpenchannelMessage=require('../../mysqldb')['db'][_0xf941('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xf941('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0xf941('0x5'),'afterDestroy':_0xf941('0x6')};function emitEvent(_0x4c02c9){return function(_0x5de7e6,_0x369a6e,_0x5f4a0c){_0x5de7e6[_0xf941('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x904ea2){_0x5de7e6[_0xf941('0x8')](_0xf941('0x9'),_0x904ea2[_0xf941('0xa')](function(_0x167794){return{'id':_0x167794['id']};}));return OpenchannelMessage[_0xf941('0xb')]({'where':{'OpenchannelInteractionId':_0x5de7e6['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf941('0xc')](function(_0x5537ae){_0x5de7e6['setDataValue'](_0xf941('0xd'),_0x5537ae[_0xf941('0xe')]);OpenchannelInteractionEvents[_0xf941('0xf')](_0x4c02c9+':'+_0x5de7e6['id'],_0x5de7e6);OpenchannelInteractionEvents[_0xf941('0xf')](_0x4c02c9,_0x5de7e6);_0x5f4a0c(null);})[_0xf941('0x10')](_0x5f4a0c(null));};}for(var e in events){if(events[_0xf941('0x11')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module[_0xf941('0x12')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 27b00e7..171e017 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7883=['changed','closed','closedAt','format','lodash','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','exports','define','OpenchannelInteraction','openchannel_interactions'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x7883,0x8b));var _0x3788=function(_0x4e556f,_0x2494d9){_0x4e556f=_0x4e556f-0x0;var _0x930c2c=_0x7883[_0x4e556f];return _0x930c2c;};'use strict';var _=require(_0x3788('0x0'));var util=require('util');var logger=require(_0x3788('0x1'))('api');var moment=require(_0x3788('0x2'));var BPromise=require('bluebird');var rp=require(_0x3788('0x3'));var fs=require('fs');var path=require(_0x3788('0x4'));var rimraf=require(_0x3788('0x5'));var config=require(_0x3788('0x6'));var attributes=require('./openchannelInteraction.attributes');module[_0x3788('0x7')]=function(_0x5997cf,_0x4f0238){return _0x5997cf[_0x3788('0x8')](_0x3788('0x9'),attributes,{'tableName':_0x3788('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x34272a,_0x3ac85d,_0x43351f){if(_0x34272a[_0x3788('0xb')](_0x3788('0xc'))){_0x34272a[_0x3788('0xd')]=moment()[_0x3788('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x43351f(null,_0x34272a);}}});};
\ No newline at end of file
+var _0xf3da=['closed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4_unicode_ci'];(function(_0x229199,_0xb15a58){var _0x305fdd=function(_0x5f1635){while(--_0x5f1635){_0x229199['push'](_0x229199['shift']());}};_0x305fdd(++_0xb15a58);}(_0xf3da,0x1ce));var _0xaf3d=function(_0x45fb8e,_0x143bee){_0x45fb8e=_0x45fb8e-0x0;var _0x8b475d=_0xf3da[_0x45fb8e];return _0x8b475d;};'use strict';var _=require(_0xaf3d('0x0'));var util=require(_0xaf3d('0x1'));var logger=require(_0xaf3d('0x2'))(_0xaf3d('0x3'));var moment=require(_0xaf3d('0x4'));var BPromise=require(_0xaf3d('0x5'));var rp=require(_0xaf3d('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaf3d('0x7'));var config=require('../../config/environment');var attributes=require(_0xaf3d('0x8'));module[_0xaf3d('0x9')]=function(_0x1f64a3,_0x1ad76c){return _0x1f64a3[_0xaf3d('0xa')](_0xaf3d('0xb'),attributes,{'tableName':_0xaf3d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xaf3d('0xd'),'hooks':{'beforeUpdate':function(_0x4a11ba,_0x5d6e2d,_0x2b7554){if(_0x4a11ba['changed'](_0xaf3d('0xe'))){_0x4a11ba['closedAt']=moment()[_0xaf3d('0xf')](_0xaf3d('0x10'));}_0x2b7554(null,_0x4a11ba);}}});};
\ No newline at end of file
index d61ff5f..7c36aeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe04a=['redis','socket.io-emitter','./openchannelInteraction.socket','register','request','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','attributes','limit','then','AddTagsToOpenchannelInteraction','find','addTags','ids','spread','AddTags','catch','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x345968,_0x262c97){var _0x536920=function(_0x311b83){while(--_0x311b83){_0x345968['push'](_0x345968['shift']());}};_0x536920(++_0x262c97);}(_0xe04a,0x1ce));var _0xae04=function(_0x30642e,_0x423b70){_0x30642e=_0x30642e-0x0;var _0x219e03=_0xe04a[_0x30642e];return _0x219e03;};'use strict';var _=require(_0xae04('0x0'));var util=require(_0xae04('0x1'));var moment=require(_0xae04('0x2'));var BPromise=require('bluebird');var rs=require(_0xae04('0x3'));var fs=require('fs');var Redis=require(_0xae04('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xae04('0x5'))(_0xae04('0x6'));var config=require(_0xae04('0x7'));var jayson=require(_0xae04('0x8'));var client=jayson[_0xae04('0x9')][_0xae04('0xa')]({'port':0x232a});config[_0xae04('0xb')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xae04('0xc'))(new Redis(config['redis']));require(_0xae04('0xd'))[_0xae04('0xe')](socket);function respondWithRpcPromise(_0x38e053,_0x3bd29b,_0x559e58){return new BPromise(function(_0x1e4465,_0x5a67e9){return client[_0xae04('0xf')](_0x38e053,_0x559e58)['then'](function(_0x52c0f){logger[_0xae04('0x10')](_0xae04('0x11'),_0x3bd29b,_0xae04('0x12'));logger[_0xae04('0x13')](_0xae04('0x14'),_0x3bd29b,_0xae04('0x12'),JSON[_0xae04('0x15')](_0x52c0f));if(_0x52c0f['error']){if(_0x52c0f[_0xae04('0x16')][_0xae04('0x17')]===0x1f4){logger[_0xae04('0x16')](_0xae04('0x11'),_0x3bd29b,_0x52c0f[_0xae04('0x16')][_0xae04('0x18')]);return _0x5a67e9(_0x52c0f[_0xae04('0x16')]['message']);}logger[_0xae04('0x16')](_0xae04('0x11'),_0x3bd29b,_0x52c0f[_0xae04('0x16')][_0xae04('0x18')]);return _0x1e4465(_0x52c0f[_0xae04('0x16')][_0xae04('0x18')]);}else{logger[_0xae04('0x10')](_0xae04('0x11'),_0x3bd29b,'request\x20sent');_0x1e4465(_0x52c0f[_0xae04('0x19')]['message']);}})['catch'](function(_0x196e5b){logger[_0xae04('0x16')]('OpenchannelInteraction,\x20%s,\x20%s',_0x3bd29b,_0x196e5b);_0x5a67e9(_0x196e5b);});});}exports[_0xae04('0x1a')]=function(_0x129096){var _0x46f4f6=this;return new Promise(function(_0x5c8208,_0x243a3a){return db[_0xae04('0x1b')][_0xae04('0x1c')](_0x129096[_0xae04('0x1d')],{'raw':_0x129096[_0xae04('0x1e')]?_0x129096['options'][_0xae04('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x129096[_0xae04('0x1e')]?_0x129096['options'][_0xae04('0x20')]||null:null,'attributes':_0x129096[_0xae04('0x1e')]?_0x129096[_0xae04('0x1e')][_0xae04('0x21')]||null:null,'limit':_0x129096[_0xae04('0x1e')]?_0x129096[_0xae04('0x1e')][_0xae04('0x22')]||null:null})[_0xae04('0x23')](function(_0x5a9cea){logger[_0xae04('0x10')](_0xae04('0x1a'),_0x129096);logger['debug'](_0xae04('0x1a'),_0x129096,JSON['stringify'](_0x5a9cea));_0x5c8208(_0x5a9cea);})['catch'](function(_0x5795a8){logger['error']('UpdateOpenchannelInteraction',_0x5795a8[_0xae04('0x18')],_0x129096);_0x243a3a(_0x46f4f6[_0xae04('0x16')](0x1f4,_0x5795a8['message']));});});};exports[_0xae04('0x24')]=function(_0x52ee18){return new Promise(function(_0x24f39b,_0x4b4f2d){return db[_0xae04('0x1b')][_0xae04('0x25')]({'where':_0x52ee18[_0xae04('0x1e')]?_0x52ee18[_0xae04('0x1e')]['where']||null:null})['then'](function(_0x271a03){if(_0x271a03){return _0x271a03[_0xae04('0x26')](_0x52ee18['body']['ids'],_['omit'](_0x52ee18[_0xae04('0x1d')],[_0xae04('0x27'),'id'])||{});}})[_0xae04('0x28')](function(_0x5c356b){logger[_0xae04('0x10')](_0xae04('0x29'),_0x52ee18);logger['debug']('AddTags',_0x52ee18,JSON['stringify'](_0x5c356b));_0x24f39b(_0x5c356b);})[_0xae04('0x2a')](function(_0x340bee){logger['error'](_0xae04('0x29'),_0x340bee[_0xae04('0x18')],_0x52ee18);_0x4b4f2d(_this['error'](0x1f4,_0x340bee[_0xae04('0x18')]));});});};
\ No newline at end of file
+var _0x2b44=['then','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','code','error','message','info','result','catch','OpenchannelInteraction','body','options','raw','attributes','UpdateOpenchannelInteraction','stringify','find','where','addTags','omit','spread','AddTags','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','request'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0x2b44,0xab));var _0x42b4=function(_0x500300,_0x487e94){_0x500300=_0x500300-0x0;var _0xdd039a=_0x2b44[_0x500300];return _0xdd039a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x42b4('0x0'));var BPromise=require(_0x42b4('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x42b4('0x2'));var logger=require(_0x42b4('0x3'))(_0x42b4('0x4'));var config=require(_0x42b4('0x5'));var jayson=require(_0x42b4('0x6'));var client=jayson['client'][_0x42b4('0x7')]({'port':0x232a});config[_0x42b4('0x8')]=_[_0x42b4('0x9')](config['redis'],{'host':_0x42b4('0xa'),'port':0x18eb});var socket=require(_0x42b4('0xb'))(new Redis(config[_0x42b4('0x8')]));require(_0x42b4('0xc'))['register'](socket);function respondWithRpcPromise(_0x5a6b7f,_0x1397ab,_0x267fae){return new BPromise(function(_0x1fb728,_0xa9c0b4){return client[_0x42b4('0xd')](_0x5a6b7f,_0x267fae)[_0x42b4('0xe')](function(_0x5796d1){logger['info'](_0x42b4('0xf'),_0x1397ab,_0x42b4('0x10'));logger[_0x42b4('0x11')]('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x1397ab,'request\x20sent',JSON['stringify'](_0x5796d1));if(_0x5796d1['error']){if(_0x5796d1['error'][_0x42b4('0x12')]===0x1f4){logger[_0x42b4('0x13')](_0x42b4('0xf'),_0x1397ab,_0x5796d1[_0x42b4('0x13')][_0x42b4('0x14')]);return _0xa9c0b4(_0x5796d1['error'][_0x42b4('0x14')]);}logger['error'](_0x42b4('0xf'),_0x1397ab,_0x5796d1[_0x42b4('0x13')][_0x42b4('0x14')]);return _0x1fb728(_0x5796d1[_0x42b4('0x13')]['message']);}else{logger[_0x42b4('0x15')](_0x42b4('0xf'),_0x1397ab,_0x42b4('0x10'));_0x1fb728(_0x5796d1[_0x42b4('0x16')][_0x42b4('0x14')]);}})[_0x42b4('0x17')](function(_0x42472b){logger[_0x42b4('0x13')](_0x42b4('0xf'),_0x1397ab,_0x42472b);_0xa9c0b4(_0x42472b);});});}exports['UpdateOpenchannelInteraction']=function(_0x36732c){var _0x3c20c3=this;return new Promise(function(_0x44e79e,_0x4f044f){return db[_0x42b4('0x18')]['update'](_0x36732c[_0x42b4('0x19')],{'raw':_0x36732c['options']?_0x36732c[_0x42b4('0x1a')][_0x42b4('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x36732c[_0x42b4('0x1a')]?_0x36732c[_0x42b4('0x1a')]['where']||null:null,'attributes':_0x36732c['options']?_0x36732c[_0x42b4('0x1a')][_0x42b4('0x1c')]||null:null,'limit':_0x36732c[_0x42b4('0x1a')]?_0x36732c[_0x42b4('0x1a')]['limit']||null:null})[_0x42b4('0xe')](function(_0x4498ba){logger[_0x42b4('0x15')]('UpdateOpenchannelInteraction',_0x36732c);logger[_0x42b4('0x11')](_0x42b4('0x1d'),_0x36732c,JSON[_0x42b4('0x1e')](_0x4498ba));_0x44e79e(_0x4498ba);})[_0x42b4('0x17')](function(_0x55a99b){logger['error']('UpdateOpenchannelInteraction',_0x55a99b[_0x42b4('0x14')],_0x36732c);_0x4f044f(_0x3c20c3['error'](0x1f4,_0x55a99b['message']));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x4eac0c){return new Promise(function(_0x2733d4,_0x278021){return db[_0x42b4('0x18')][_0x42b4('0x1f')]({'where':_0x4eac0c[_0x42b4('0x1a')]?_0x4eac0c[_0x42b4('0x1a')][_0x42b4('0x20')]||null:null})[_0x42b4('0xe')](function(_0x559924){if(_0x559924){return _0x559924[_0x42b4('0x21')](_0x4eac0c['body']['ids'],_[_0x42b4('0x22')](_0x4eac0c[_0x42b4('0x19')],['ids','id'])||{});}})[_0x42b4('0x23')](function(_0x363db1){logger[_0x42b4('0x15')](_0x42b4('0x24'),_0x4eac0c);logger[_0x42b4('0x11')](_0x42b4('0x24'),_0x4eac0c,JSON[_0x42b4('0x1e')](_0x363db1));_0x2733d4(_0x363db1);})[_0x42b4('0x17')](function(_0x3c9559){logger[_0x42b4('0x13')](_0x42b4('0x24'),_0x3c9559['message'],_0x4eac0c);_0x278021(_this[_0x42b4('0x13')](0x1f4,_0x3c9559[_0x42b4('0x14')]));});});};
\ No newline at end of file
index afd21b7..849a075 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ddb=['save','remove','update','register','length','openchannelInteraction:','./openchannelInteraction.events'];(function(_0x59b200,_0x239dda){var _0xd843cc=function(_0x1b5e24){while(--_0x1b5e24){_0x59b200['push'](_0x59b200['shift']());}};_0xd843cc(++_0x239dda);}(_0x9ddb,0x6f));var _0xb9dd=function(_0x3c68bd,_0x565d77){_0x3c68bd=_0x3c68bd-0x0;var _0x1d1cc9=_0x9ddb[_0x3c68bd];return _0x1d1cc9;};'use strict';var OpenchannelInteractionEvents=require(_0xb9dd('0x0'));var events=[_0xb9dd('0x1'),_0xb9dd('0x2'),_0xb9dd('0x3')];function createListener(_0x2d6678,_0x33181a){return function(_0x5c4950){_0x33181a['emit'](_0x2d6678,_0x5c4950);};}function removeListener(_0x45e3ca,_0x35c060){return function(){OpenchannelInteractionEvents['removeListener'](_0x45e3ca,_0x35c060);};}exports[_0xb9dd('0x4')]=function(_0x50b14a){for(var _0x48c60f=0x0,_0x2db559=events[_0xb9dd('0x5')];_0x48c60f<_0x2db559;_0x48c60f++){var _0x3e1aa8=events[_0x48c60f];var _0x298ca9=createListener(_0xb9dd('0x6')+_0x3e1aa8,_0x50b14a);OpenchannelInteractionEvents['on'](_0x3e1aa8,_0x298ca9);}};
\ No newline at end of file
+var _0x3f07=['length','openchannelInteraction:','./openchannelInteraction.events','save','remove','update','emit','removeListener','register'];(function(_0x226fbb,_0x33541d){var _0x27f2e1=function(_0x4a5466){while(--_0x4a5466){_0x226fbb['push'](_0x226fbb['shift']());}};_0x27f2e1(++_0x33541d);}(_0x3f07,0xe3));var _0x73f0=function(_0x4c644c,_0x1a5d4f){_0x4c644c=_0x4c644c-0x0;var _0x18b89e=_0x3f07[_0x4c644c];return _0x18b89e;};'use strict';var OpenchannelInteractionEvents=require(_0x73f0('0x0'));var events=[_0x73f0('0x1'),_0x73f0('0x2'),_0x73f0('0x3')];function createListener(_0x3b2fb8,_0x2cc876){return function(_0x539418){_0x2cc876[_0x73f0('0x4')](_0x3b2fb8,_0x539418);};}function removeListener(_0x3d9031,_0x6c8a3d){return function(){OpenchannelInteractionEvents[_0x73f0('0x5')](_0x3d9031,_0x6c8a3d);};}exports[_0x73f0('0x6')]=function(_0x4c8344){for(var _0xcc2962=0x0,_0x40ca0a=events[_0x73f0('0x7')];_0xcc2962<_0x40ca0a;_0xcc2962++){var _0x487b3c=events[_0xcc2962];var _0x5e96e2=createListener(_0x73f0('0x8')+_0x487b3c,_0x4c8344);OpenchannelInteractionEvents['on'](_0x487b3c,_0x5e96e2);}};
\ No newline at end of file
index f973715..ab63bca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['get','isAuthenticated','index','/describe','describe','/:id','post','tracked','openchannel','openchannelmessage:create','put','update','accept','/:id/reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelMessage.controller'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var controller=require(_0x3071('0x7'));router[_0x3071('0x8')]('/',auth[_0x3071('0x9')](),controller[_0x3071('0xa')]);router[_0x3071('0x8')](_0x3071('0xb'),auth[_0x3071('0x9')](),controller[_0x3071('0xc')]);router[_0x3071('0x8')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller['show']);router[_0x3071('0xe')]('/',auth[_0x3071('0x9')](),interaction[_0x3071('0xf')](_0x3071('0x10'),_0x3071('0x11')),controller['create']);router[_0x3071('0x12')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller[_0x3071('0x13')]);router[_0x3071('0x12')]('/:id/accept',auth['isAuthenticated'](),controller[_0x3071('0x14')]);router['put'](_0x3071('0x15'),auth[_0x3071('0x9')](),controller['reject']);router[_0x3071('0x16')]('/:id',auth[_0x3071('0x9')](),controller[_0x3071('0x17')]);module[_0x3071('0x18')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','tracked','openchannel','openchannelmessage:create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','util'];(function(_0x3d34fc,_0x19448a){var _0x35a98c=function(_0x34b179){while(--_0x34b179){_0x3d34fc['push'](_0x3d34fc['shift']());}};_0x35a98c(++_0x19448a);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./openchannelMessage.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),interaction[_0x0d8b('0xe')](_0x0d8b('0xf'),_0x0d8b('0x10')),controller['create']);router[_0x0d8b('0x11')]('/:id',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x12')]);router[_0x0d8b('0x11')](_0x0d8b('0x13'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x14')]);router[_0x0d8b('0x11')](_0x0d8b('0x15'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x16')]);router[_0x0d8b('0x17')](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x18')]);module['exports']=router;
\ No newline at end of file
index 2a37553..c8a9400 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['exports','TEXT','medium','BOOLEAN','out','DATE','STRING','sequelize'];(function(_0x4ab3fa,_0x9b28e8){var _0x322f00=function(_0x182bae){while(--_0x182bae){_0x4ab3fa['push'](_0x4ab3fa['shift']());}};_0x322f00(++_0x9b28e8);}(_0xac4a,0x13f));var _0xaac4=function(_0xcbc471,_0x3467fe){_0xcbc471=_0xcbc471-0x0;var _0x578884=_0xac4a[_0xcbc471];return _0x578884;};'use strict';var Sequelize=require(_0xaac4('0x0'));module[_0xaac4('0x1')]={'body':{'type':Sequelize[_0xaac4('0x2')](_0xaac4('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xaac4('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0xaac4('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0xaac4('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0xaac4('0x6')]},'providerName':{'type':Sequelize[_0xaac4('0x7')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x235b=['out','STRING','TEXT','sequelize','medium','BOOLEAN','ENUM'];(function(_0x575857,_0xe1e3d1){var _0x1cd571=function(_0x50e7ae){while(--_0x50e7ae){_0x575857['push'](_0x575857['shift']());}};_0x1cd571(++_0xe1e3d1);}(_0x235b,0x1ed));var _0xb235=function(_0x4618a7,_0x3e22f9){_0x4618a7=_0x4618a7-0x0;var _0x2b808e=_0x235b[_0x4618a7];return _0x2b808e;};'use strict';var Sequelize=require(_0xb235('0x0'));module['exports']={'body':{'type':Sequelize['TEXT'](_0xb235('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0xb235('0x2')],'defaultValue':![]},'secret':{'type':Sequelize[_0xb235('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0xb235('0x3')]('in',_0xb235('0x4')),'defaultValue':_0xb235('0x4'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0xb235('0x5')]},'providerResponse':{'type':Sequelize[_0xb235('0x6')]}};
\ No newline at end of file
index 855aae5..6ab1651 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5868=['[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','fullname','manual','SIP/%s','channel','EventManager','acceptmessage','openchannel-interactions','RejectMessage','rejectMessage','sequelize','User','internal','interface','event','rejectmessage','request-promise','bluebird','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','redis','defaults','./openchannelMessage.socket','client','request','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','status','end','json','limit','count','offset','set','apply','reject','save','update','destroy','sendStatus','stack','name','send','index','map','OpenchannelMessage','fieldName','type','key','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','rawAttributes','filters','create','body','find','params','describe','accept','openchannel','read','readAt','UserId','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','format','interaction'];(function(_0x4a9f56,_0x413774){var _0x28f249=function(_0x4029b7){while(--_0x4029b7){_0x4a9f56['push'](_0x4a9f56['shift']());}};_0x28f249(++_0x413774);}(_0x5868,0x91));var _0x8586=function(_0x50368b,_0x4ee4a8){_0x50368b=_0x50368b-0x0;var _0x357ce5=_0x5868[_0x50368b];return _0x357ce5;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8586('0x0'));var moment=require('moment');var BPromise=require(_0x8586('0x1'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x8586('0x2'));var ejs=require(_0x8586('0x3'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8586('0x4'));var squel=require(_0x8586('0x5'));var crypto=require(_0x8586('0x6'));var jsforce=require(_0x8586('0x7'));var deskjs=require(_0x8586('0x8'));var toCsv=require(_0x8586('0x2'));var querystring=require('querystring');var Papa=require(_0x8586('0x9'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x8586('0xa'));var as=require(_0x8586('0xb'));var hardwareService=require(_0x8586('0xc'));var logger=require(_0x8586('0xd'))(_0x8586('0xe'));var utils=require(_0x8586('0xf'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x8586('0x10')]=_[_0x8586('0x11')](config[_0x8586('0x10')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8586('0x10')]));require(_0x8586('0x12'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x8586('0x13')]['http']({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5cb005,_0x3d30e4,_0x34a766,_0x31470e){return new BPromise(function(_0x4c2550,_0x3a73bd){var _0x408666=_0x31470e||client;return _0x408666[_0x8586('0x14')](_0x5cb005,_0x34a766)[_0x8586('0x15')](function(_0x6104d6){logger[_0x8586('0x16')](_0x8586('0x17'),_0x3d30e4,_0x8586('0x18'));logger['debug']('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x3d30e4,_0x8586('0x18'),JSON[_0x8586('0x19')](_0x6104d6));if(_0x6104d6['error']){if(_0x6104d6[_0x8586('0x1a')][_0x8586('0x1b')]===0x1f4){logger['error'](_0x8586('0x17'),_0x3d30e4,_0x6104d6[_0x8586('0x1a')][_0x8586('0x1c')]);return _0x3a73bd(_0x6104d6[_0x8586('0x1a')][_0x8586('0x1c')]);}logger[_0x8586('0x1a')]('OpenchannelMessage,\x20%s,\x20%s',_0x3d30e4,_0x6104d6[_0x8586('0x1a')][_0x8586('0x1c')]);return _0x4c2550(_0x6104d6['error']['message']);}else{logger[_0x8586('0x16')](_0x8586('0x17'),_0x3d30e4,'request\x20sent');_0x4c2550(_0x6104d6[_0x8586('0x1d')][_0x8586('0x1c')]);}})[_0x8586('0x1e')](function(_0x494e20){logger[_0x8586('0x1a')]('OpenchannelMessage,\x20%s,\x20%s',_0x3d30e4,_0x494e20);_0x3a73bd(_0x494e20);});});}function respondWithStatusCode(_0x3e261c,_0x138a93){_0x138a93=_0x138a93||0xcc;return function(_0x314a4a){if(_0x314a4a){return _0x3e261c['sendStatus'](_0x138a93);}return _0x3e261c[_0x8586('0x1f')](_0x138a93)[_0x8586('0x20')]();};}function respondWithResult(_0x87ad37,_0x44ae2d){_0x44ae2d=_0x44ae2d||0xc8;return function(_0x178f14){if(_0x178f14){return _0x87ad37['status'](_0x44ae2d)[_0x8586('0x21')](_0x178f14);}};}function respondWithFilteredResult(_0x271dae,_0x55ec58){return function(_0x2a72c5){if(_0x2a72c5){var _0x27b33d=typeof _0x55ec58['offset']==='undefined'&&typeof _0x55ec58[_0x8586('0x22')]==='undefined';var _0x46adac=_0x2a72c5[_0x8586('0x23')];var _0x53b7a6=_0x27b33d?0x0:_0x55ec58[_0x8586('0x24')];var _0x1bfec9=_0x27b33d?_0x2a72c5['count']:_0x55ec58[_0x8586('0x24')]+_0x55ec58[_0x8586('0x22')];var _0x3551d0;if(_0x1bfec9>=_0x46adac){_0x1bfec9=_0x46adac;_0x3551d0=0xc8;}else{_0x3551d0=0xce;}_0x271dae[_0x8586('0x1f')](_0x3551d0);return _0x271dae[_0x8586('0x25')]('Content-Range',_0x53b7a6+'-'+_0x1bfec9+'/'+_0x46adac)['json'](_0x2a72c5);}return null;};}function patchUpdates(_0x55451a){return function(_0x1c4198){try{jsonpatch[_0x8586('0x26')](_0x1c4198,_0x55451a,!![]);}catch(_0x13dea6){return BPromise[_0x8586('0x27')](_0x13dea6);}return _0x1c4198[_0x8586('0x28')]();};}function saveUpdates(_0x1a354c,_0x43eebe){return function(_0x351855){if(_0x351855){return _0x351855[_0x8586('0x29')](_0x1a354c)[_0x8586('0x15')](function(_0x568187){return _0x568187;});}return null;};}function removeEntity(_0x17895b,_0x1d59d7){return function(_0x4000af){if(_0x4000af){return _0x4000af[_0x8586('0x2a')]()[_0x8586('0x15')](function(){_0x17895b[_0x8586('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4947bb,_0x28191e){return function(_0x52de96){if(!_0x52de96){_0x4947bb[_0x8586('0x2b')](0x194);}return _0x52de96;};}function handleError(_0x171764,_0x35eb09){_0x35eb09=_0x35eb09||0x1f4;return function(_0x2d9030){logger['error'](_0x2d9030[_0x8586('0x2c')]);if(_0x2d9030[_0x8586('0x2d')]){delete _0x2d9030['name'];}_0x171764[_0x8586('0x1f')](_0x35eb09)[_0x8586('0x2e')](_0x2d9030);};}exports[_0x8586('0x2f')]=function(_0x429d63,_0x27d0ea){var _0x48f6a9={},_0x348ef7={},_0x3476f2={'count':0x0,'rows':[]};var _0x33fec3=_[_0x8586('0x30')](db[_0x8586('0x31')]['rawAttributes'],function(_0x16a086){return{'name':_0x16a086[_0x8586('0x32')],'type':_0x16a086[_0x8586('0x33')][_0x8586('0x34')]};});_0x348ef7['model']=_[_0x8586('0x30')](_0x33fec3,'name');_0x348ef7[_0x8586('0x35')]=_[_0x8586('0x36')](_0x429d63['query']);_0x348ef7['filters']=_[_0x8586('0x37')](_0x348ef7[_0x8586('0x38')],_0x348ef7[_0x8586('0x35')]);_0x48f6a9['attributes']=_[_0x8586('0x37')](_0x348ef7['model'],qs[_0x8586('0x39')](_0x429d63[_0x8586('0x35')]['fields']));_0x48f6a9[_0x8586('0x3a')]=_0x48f6a9[_0x8586('0x3a')][_0x8586('0x3b')]?_0x48f6a9[_0x8586('0x3a')]:_0x348ef7[_0x8586('0x38')];if(!_0x429d63[_0x8586('0x35')][_0x8586('0x3c')](_0x8586('0x3d'))){_0x48f6a9['limit']=qs['limit'](_0x429d63[_0x8586('0x35')][_0x8586('0x22')]);_0x48f6a9[_0x8586('0x24')]=qs['offset'](_0x429d63[_0x8586('0x35')][_0x8586('0x24')]);}_0x48f6a9[_0x8586('0x3e')]=qs[_0x8586('0x3f')](_0x429d63['query'][_0x8586('0x3f')]);_0x48f6a9[_0x8586('0x40')]=qs['filters'](_[_0x8586('0x41')](_0x429d63['query'],_0x348ef7['filters']),_0x33fec3);if(_0x429d63['query'][_0x8586('0x42')]){_0x48f6a9[_0x8586('0x40')]=_[_0x8586('0x43')](_0x48f6a9[_0x8586('0x40')],{'$or':_[_0x8586('0x30')](_0x33fec3,function(_0x12c3d8){if(_0x12c3d8['type']!=='VIRTUAL'){var _0x43a548={};_0x43a548[_0x12c3d8[_0x8586('0x2d')]]={'$like':'%'+_0x429d63['query'][_0x8586('0x42')]+'%'};return _0x43a548;}})});}_0x48f6a9=_['merge']({},_0x48f6a9,_0x429d63[_0x8586('0x44')]);var _0x1da633={'where':_0x48f6a9[_0x8586('0x40')]};return db[_0x8586('0x31')]['count'](_0x1da633)[_0x8586('0x15')](function(_0x3e7f1b){_0x3476f2[_0x8586('0x23')]=_0x3e7f1b;if(_0x429d63[_0x8586('0x35')][_0x8586('0x45')]){_0x48f6a9[_0x8586('0x46')]=[{'all':!![]}];}return db[_0x8586('0x31')][_0x8586('0x47')](_0x48f6a9);})[_0x8586('0x15')](function(_0x3b8c9e){_0x3476f2[_0x8586('0x48')]=_0x3b8c9e;return _0x3476f2;})[_0x8586('0x15')](respondWithFilteredResult(_0x27d0ea,_0x48f6a9))[_0x8586('0x1e')](handleError(_0x27d0ea,null));};exports[_0x8586('0x49')]=function(_0x371974,_0x1401de){var _0x20b029={'raw':!![],'where':{'id':_0x371974['params']['id']}},_0x5dd040={};_0x5dd040[_0x8586('0x38')]=_['keys'](db[_0x8586('0x31')][_0x8586('0x4a')]);_0x5dd040[_0x8586('0x35')]=_[_0x8586('0x36')](_0x371974[_0x8586('0x35')]);_0x5dd040[_0x8586('0x4b')]=_[_0x8586('0x37')](_0x5dd040[_0x8586('0x38')],_0x5dd040[_0x8586('0x35')]);_0x20b029['attributes']=_['intersection'](_0x5dd040[_0x8586('0x38')],qs[_0x8586('0x39')](_0x371974[_0x8586('0x35')][_0x8586('0x39')]));_0x20b029[_0x8586('0x3a')]=_0x20b029[_0x8586('0x3a')][_0x8586('0x3b')]?_0x20b029[_0x8586('0x3a')]:_0x5dd040[_0x8586('0x38')];if(_0x371974[_0x8586('0x35')][_0x8586('0x45')]){_0x20b029['include']=[{'all':!![]}];}_0x20b029=_['merge']({},_0x20b029,_0x371974[_0x8586('0x44')]);return db[_0x8586('0x31')]['find'](_0x20b029)[_0x8586('0x15')](handleEntityNotFound(_0x1401de,null))['then'](respondWithResult(_0x1401de,null))[_0x8586('0x1e')](handleError(_0x1401de,null));};exports[_0x8586('0x4c')]=function(_0x4a80f1,_0x82e9d5){return db['OpenchannelMessage']['create'](_0x4a80f1[_0x8586('0x4d')],{})[_0x8586('0x15')](respondWithResult(_0x82e9d5,0xc9))['catch'](handleError(_0x82e9d5,null));};exports[_0x8586('0x29')]=function(_0x3c3819,_0x40ae83){if(_0x3c3819['body']['id']){delete _0x3c3819[_0x8586('0x4d')]['id'];}return db[_0x8586('0x31')][_0x8586('0x4e')]({'where':{'id':_0x3c3819[_0x8586('0x4f')]['id']}})['then'](handleEntityNotFound(_0x40ae83,null))['then'](saveUpdates(_0x3c3819['body'],null))['then'](respondWithResult(_0x40ae83,null))[_0x8586('0x1e')](handleError(_0x40ae83,null));};exports['destroy']=function(_0x5b4b2b,_0x144dfc){return db[_0x8586('0x31')][_0x8586('0x4e')]({'where':{'id':_0x5b4b2b['params']['id']}})[_0x8586('0x15')](handleEntityNotFound(_0x144dfc,null))[_0x8586('0x15')](removeEntity(_0x144dfc,null))['catch'](handleError(_0x144dfc,null));};exports[_0x8586('0x50')]=function(_0x2edb1d,_0x505a3f){return db[_0x8586('0x31')][_0x8586('0x50')]()['then'](respondWithResult(_0x505a3f,null))['catch'](handleError(_0x505a3f,null));};var interaction_log=require(_0x8586('0xd'))('openchannel-interactions');exports[_0x8586('0x51')]=function(_0x2ac86b,_0x42c22e,_0x4acac2){var _0x482def={'agent':{},'channel':_0x8586('0x52')};if(_0x2ac86b[_0x8586('0x4d')]['id']){delete _0x2ac86b[_0x8586('0x4d')]['id'];}_0x2ac86b['body'][_0x8586('0x53')]=!![];_0x2ac86b[_0x8586('0x4d')][_0x8586('0x54')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x2ac86b['body'][_0x8586('0x55')]=_0x2ac86b[_0x8586('0x4d')][_0x8586('0x55')]||_0x2ac86b['user']['id'];_0x482def[_0x8586('0x56')]['id']=_0x2ac86b['body']['UserId'];return db['OpenchannelMessage'][_0x8586('0x4e')]({'where':{'id':_0x2ac86b[_0x8586('0x4f')]['id'],'UserId':null}})[_0x8586('0x15')](handleEntityNotFound(_0x42c22e,null))[_0x8586('0x15')](saveUpdates(_0x2ac86b[_0x8586('0x4d')],null))['then'](function(_0x1d6b89){if(_0x1d6b89){_0x482def['message']=_0x1d6b89[_0x8586('0x57')]({'plain':!![]});return db[_0x8586('0x58')][_0x8586('0x4e')]({'where':{'id':_0x1d6b89[_0x8586('0x59')]}});}return null;})[_0x8586('0x15')](handleEntityNotFound(_0x42c22e,null))['then'](function(_0x15afcf){if(_0x15afcf){return _0x15afcf['update']({'UserId':_0x2ac86b['body'][_0x8586('0x55')],'read1stAt':_[_0x8586('0x5a')](_0x15afcf['read1stAt'])?moment()[_0x8586('0x5b')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x8586('0x15')](function(_0x2f39a2){if(_0x2f39a2){_0x482def[_0x8586('0x5c')]=_0x2f39a2[_0x8586('0x57')]({'plain':!![]});interaction_log[_0x8586('0x16')](_0x8586('0x5d'),_0x2ac86b[_0x8586('0x5e')]['id'],_0x2ac86b[_0x8586('0x5e')][_0x8586('0x2d')],_0x2ac86b['user'][_0x8586('0x5f')],_0x482def[_0x8586('0x5c')]['id'],_0x2ac86b[_0x8586('0x4d')]?JSON[_0x8586('0x19')](_0x2ac86b[_0x8586('0x4d')]):_0x8586('0x60'));return respondWithRpcPromise(_0x8586('0x61'),'acceptMessage',_0x482def);}return null;})['then'](function(_0x47184d){var _0x2cb1b3=_0x8586('0x62')+_0x47184d['message'][_0x8586('0x63')];return db['sequelize']['query'](_0x2cb1b3,{'type':db[_0x8586('0x64')][_0x8586('0x65')][_0x8586('0x66')],'raw':!![]})[_0x8586('0x15')](function(_0xaeff66){return _0xaeff66;});})[_0x8586('0x15')](function(_0x3beb26){if(_0x3beb26){_0x482def[_0x8586('0x1c')][_0x8586('0x67')]=_0x3beb26[0x0];if(!_0x2ac86b[_0x8586('0x4d')][_0x8586('0x55')])return;return db['User'][_0x8586('0x4e')]({'where':{'id':_0x2ac86b[_0x8586('0x4d')][_0x8586('0x55')],'role':_0x8586('0x56')},'attributes':['id',_0x8586('0x2d'),_0x8586('0x68'),'email','internal'],'raw':!![]});}return null;})[_0x8586('0x15')](function(_0x3b2985){if(!_0x3b2985)return null;_0x482def['message']['agent']=_0x3b2985;return _0x482def;})[_0x8586('0x15')](function(_0x21aa19){if(_0x21aa19){if(_0x2ac86b[_0x8586('0x4d')][_0x8586('0x69')]){_0x482def[_0x8586('0x1c')]['interface']=util[_0x8586('0x5b')](_0x8586('0x6a'),_0x2ac86b[_0x8586('0x5e')][_0x8586('0x2d')]);_0x482def[_0x8586('0x1c')][_0x8586('0x6b')]=_0x482def['channel'];_0x482def[_0x8586('0x1c')]['event']=_0x8586('0x51');return respondWithRpcPromise(_0x8586('0x6c'),'EventManager',{'event':_0x8586('0x6d'),'message':_0x482def[_0x8586('0x1c')]},client9002)['then'](function(){return _0x482def;});}return _0x482def;}return null;})[_0x8586('0x15')](respondWithResult(_0x42c22e,null))[_0x8586('0x1e')](handleError(_0x42c22e,null));};var interaction_log=require(_0x8586('0xd'))(_0x8586('0x6e'));exports['reject']=function(_0x571be2,_0x4abcdb,_0x5ecb52){var _0x323ddc={'agent':{},'channel':_0x8586('0x52')};if(_0x571be2[_0x8586('0x4d')]['id']){delete _0x571be2[_0x8586('0x4d')]['id'];}_0x571be2[_0x8586('0x4d')][_0x8586('0x55')]=_0x571be2[_0x8586('0x4d')][_0x8586('0x55')]||_0x571be2[_0x8586('0x5e')]['id'];_0x323ddc['agent']['id']=_0x571be2[_0x8586('0x4d')][_0x8586('0x55')];return db[_0x8586('0x31')][_0x8586('0x4e')]({'where':{'id':_0x571be2['params']['id'],'UserId':null}})[_0x8586('0x15')](handleEntityNotFound(_0x4abcdb,null))[_0x8586('0x15')](function(_0x4e3de4){if(_0x4e3de4){_0x323ddc['message']=_0x4e3de4[_0x8586('0x57')]({'plain':!![]});return db[_0x8586('0x58')]['find']({'where':{'id':_0x4e3de4[_0x8586('0x59')]}});}return null;})['then'](handleEntityNotFound(_0x4abcdb,null))[_0x8586('0x15')](function(_0x27f99c){if(_0x27f99c){_0x323ddc[_0x8586('0x5c')]=_0x27f99c['get']({'plain':!![]});interaction_log[_0x8586('0x16')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x571be2[_0x8586('0x5e')]['id'],_0x571be2[_0x8586('0x5e')][_0x8586('0x2d')],_0x571be2['user']['role'],_0x323ddc[_0x8586('0x5c')]['id'],_0x571be2[_0x8586('0x4d')]?JSON[_0x8586('0x19')](_0x571be2[_0x8586('0x4d')]):_0x8586('0x60'));return respondWithRpcPromise(_0x8586('0x6f'),_0x8586('0x70'),_0x323ddc);}return null;})[_0x8586('0x15')](function(_0x4b53c4){var _0x1d680c=_0x8586('0x62')+_0x4b53c4['message']['ContactId'];return db[_0x8586('0x71')]['query'](_0x1d680c,{'type':db[_0x8586('0x64')][_0x8586('0x65')][_0x8586('0x66')],'raw':!![]})[_0x8586('0x15')](function(_0x55b2be){return _0x55b2be;});})[_0x8586('0x15')](function(_0x2129e6){if(_0x2129e6){_0x323ddc[_0x8586('0x1c')][_0x8586('0x67')]=_0x2129e6[0x0];if(!_0x571be2[_0x8586('0x4d')]['UserId'])return;return db[_0x8586('0x72')][_0x8586('0x4e')]({'where':{'id':_0x571be2[_0x8586('0x4d')]['UserId'],'role':_0x8586('0x56')},'attributes':['id',_0x8586('0x2d'),'fullname','email',_0x8586('0x73')],'raw':!![]});}return null;})[_0x8586('0x15')](function(_0x1ce0e8){if(!_0x1ce0e8)return null;_0x323ddc[_0x8586('0x1c')][_0x8586('0x56')]=_0x1ce0e8;return _0x323ddc;})[_0x8586('0x15')](function(_0x963900){if(_0x963900){_0x963900['message'][_0x8586('0x74')]=util['format'](_0x8586('0x6a'),_0x571be2[_0x8586('0x5e')]['name']);_0x963900[_0x8586('0x1c')][_0x8586('0x6b')]=_0x323ddc['channel'];_0x963900[_0x8586('0x1c')][_0x8586('0x75')]=_0x8586('0x27');respondWithRpcPromise(_0x8586('0x6c'),_0x8586('0x6c'),{'event':_0x8586('0x76'),'message':_0x963900[_0x8586('0x1c')]},client9002);return _0x323ddc;}return null;})[_0x8586('0x15')](respondWithResult(_0x4abcdb,null))[_0x8586('0x1e')](handleError(_0x4abcdb,null));};
\ No newline at end of file
+var _0x5659=['bluebird','util','path','sox','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','client','http','request','then','info','OpenchannelMessage,\x20%s,\x20%s','debug','stringify','error','code','message','result','catch','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','reject','save','update','name','index','OpenchannelMessage','rawAttributes','fieldName','key','model','map','keys','query','filters','intersection','attributes','fields','length','nolimit','order','pick','where','merge','filter','options','include','findAll','rows','show','params','includeAll','find','create','body','destroy','describe','accept','openchannel','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','interaction','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','User','agent','fullname','email','manual','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','../../config/logger','get','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','interface','rimraf','fast-json-patch','moment'];(function(_0x5207c5,_0x27f6b6){var _0x577aa4=function(_0x5cef54){while(--_0x5cef54){_0x5207c5['push'](_0x5207c5['shift']());}};_0x577aa4(++_0x27f6b6);}(_0x5659,0x168));var _0x9565=function(_0x270b8c,_0x43bf26){_0x270b8c=_0x270b8c-0x0;var _0x5a76df=_0x5659[_0x270b8c];return _0x5a76df;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9565('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9565('0x1'));var rp=require('request-promise');var moment=require(_0x9565('0x2'));var BPromise=require(_0x9565('0x3'));var Mustache=require('mustache');var util=require(_0x9565('0x4'));var path=require(_0x9565('0x5'));var sox=require(_0x9565('0x6'));var csv=require('to-csv');var ejs=require(_0x9565('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9565('0x8'));var squel=require(_0x9565('0x9'));var crypto=require(_0x9565('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x9565('0xb'));var toCsv=require(_0x9565('0xc'));var querystring=require(_0x9565('0xd'));var Papa=require('papaparse');var Redis=require(_0x9565('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x9565('0xf'));var as=require(_0x9565('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9565('0x11'));var utils=require(_0x9565('0x12'));var config=require(_0x9565('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x9565('0x14')]=_[_0x9565('0x15')](config[_0x9565('0x14')],{'host':_0x9565('0x16'),'port':0x18eb});var socket=require(_0x9565('0x17'))(new Redis(config[_0x9565('0x14')]));require(_0x9565('0x18'))[_0x9565('0x19')](socket);var jayson=require('jayson/promise');var client=jayson[_0x9565('0x1a')][_0x9565('0x1b')]({'port':0x232c});var client9002=jayson[_0x9565('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5df679,_0x10873e,_0x1fc58f,_0x4e31fa){return new BPromise(function(_0x4cb792,_0x20e258){var _0x21ab20=_0x4e31fa||client;return _0x21ab20[_0x9565('0x1c')](_0x5df679,_0x1fc58f)[_0x9565('0x1d')](function(_0x1a7fb9){logger[_0x9565('0x1e')](_0x9565('0x1f'),_0x10873e,'request\x20sent');logger[_0x9565('0x20')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x10873e,'request\x20sent',JSON[_0x9565('0x21')](_0x1a7fb9));if(_0x1a7fb9[_0x9565('0x22')]){if(_0x1a7fb9[_0x9565('0x22')][_0x9565('0x23')]===0x1f4){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x10873e,_0x1a7fb9['error'][_0x9565('0x24')]);return _0x20e258(_0x1a7fb9['error']['message']);}logger['error'](_0x9565('0x1f'),_0x10873e,_0x1a7fb9[_0x9565('0x22')][_0x9565('0x24')]);return _0x4cb792(_0x1a7fb9[_0x9565('0x22')][_0x9565('0x24')]);}else{logger[_0x9565('0x1e')]('OpenchannelMessage,\x20%s,\x20%s',_0x10873e,'request\x20sent');_0x4cb792(_0x1a7fb9[_0x9565('0x25')]['message']);}})[_0x9565('0x26')](function(_0x1785b0){logger['error'](_0x9565('0x1f'),_0x10873e,_0x1785b0);_0x20e258(_0x1785b0);});});}function respondWithStatusCode(_0x4cb651,_0x1066f2){_0x1066f2=_0x1066f2||0xcc;return function(_0x15460a){if(_0x15460a){return _0x4cb651[_0x9565('0x27')](_0x1066f2);}return _0x4cb651[_0x9565('0x28')](_0x1066f2)['end']();};}function respondWithResult(_0x4dbd26,_0x1183e2){_0x1183e2=_0x1183e2||0xc8;return function(_0x980fe8){if(_0x980fe8){return _0x4dbd26[_0x9565('0x28')](_0x1183e2)['json'](_0x980fe8);}};}function respondWithFilteredResult(_0x2d1bac,_0x362e4c){return function(_0x6dd38c){if(_0x6dd38c){var _0x496d2d=typeof _0x362e4c['offset']===_0x9565('0x29')&&typeof _0x362e4c[_0x9565('0x2a')]===_0x9565('0x29');var _0x5dd9cd=_0x6dd38c[_0x9565('0x2b')];var _0x22618a=_0x496d2d?0x0:_0x362e4c[_0x9565('0x2c')];var _0x548b3d=_0x496d2d?_0x6dd38c[_0x9565('0x2b')]:_0x362e4c['offset']+_0x362e4c[_0x9565('0x2a')];var _0x9f5cd9;if(_0x548b3d>=_0x5dd9cd){_0x548b3d=_0x5dd9cd;_0x9f5cd9=0xc8;}else{_0x9f5cd9=0xce;}_0x2d1bac[_0x9565('0x28')](_0x9f5cd9);return _0x2d1bac[_0x9565('0x2d')](_0x9565('0x2e'),_0x22618a+'-'+_0x548b3d+'/'+_0x5dd9cd)[_0x9565('0x2f')](_0x6dd38c);}return null;};}function patchUpdates(_0x9f750d){return function(_0x2ae1ad){try{jsonpatch['apply'](_0x2ae1ad,_0x9f750d,!![]);}catch(_0x1e4c62){return BPromise[_0x9565('0x30')](_0x1e4c62);}return _0x2ae1ad[_0x9565('0x31')]();};}function saveUpdates(_0x25fc0a,_0x53a642){return function(_0x57fdc7){if(_0x57fdc7){return _0x57fdc7[_0x9565('0x32')](_0x25fc0a)['then'](function(_0x553f76){return _0x553f76;});}return null;};}function removeEntity(_0x3a398c,_0x194818){return function(_0x397fc3){if(_0x397fc3){return _0x397fc3['destroy']()[_0x9565('0x1d')](function(){_0x3a398c[_0x9565('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa5275f,_0x3041a8){return function(_0x43b7b4){if(!_0x43b7b4){_0xa5275f['sendStatus'](0x194);}return _0x43b7b4;};}function handleError(_0x5f2c44,_0x13d14f){_0x13d14f=_0x13d14f||0x1f4;return function(_0x147213){logger['error'](_0x147213['stack']);if(_0x147213[_0x9565('0x33')]){delete _0x147213['name'];}_0x5f2c44[_0x9565('0x28')](_0x13d14f)['send'](_0x147213);};}exports[_0x9565('0x34')]=function(_0x1b9332,_0x24d529){var _0xe2bc77={},_0x57f60b={},_0x4f04f4={'count':0x0,'rows':[]};var _0x43f113=_['map'](db[_0x9565('0x35')][_0x9565('0x36')],function(_0x5e248a){return{'name':_0x5e248a[_0x9565('0x37')],'type':_0x5e248a['type'][_0x9565('0x38')]};});_0x57f60b[_0x9565('0x39')]=_[_0x9565('0x3a')](_0x43f113,_0x9565('0x33'));_0x57f60b['query']=_[_0x9565('0x3b')](_0x1b9332[_0x9565('0x3c')]);_0x57f60b[_0x9565('0x3d')]=_[_0x9565('0x3e')](_0x57f60b['model'],_0x57f60b[_0x9565('0x3c')]);_0xe2bc77[_0x9565('0x3f')]=_[_0x9565('0x3e')](_0x57f60b[_0x9565('0x39')],qs[_0x9565('0x40')](_0x1b9332['query']['fields']));_0xe2bc77['attributes']=_0xe2bc77[_0x9565('0x3f')][_0x9565('0x41')]?_0xe2bc77[_0x9565('0x3f')]:_0x57f60b['model'];if(!_0x1b9332[_0x9565('0x3c')]['hasOwnProperty'](_0x9565('0x42'))){_0xe2bc77[_0x9565('0x2a')]=qs[_0x9565('0x2a')](_0x1b9332['query']['limit']);_0xe2bc77[_0x9565('0x2c')]=qs['offset'](_0x1b9332[_0x9565('0x3c')]['offset']);}_0xe2bc77[_0x9565('0x43')]=qs['sort'](_0x1b9332[_0x9565('0x3c')]['sort']);_0xe2bc77['where']=qs[_0x9565('0x3d')](_[_0x9565('0x44')](_0x1b9332[_0x9565('0x3c')],_0x57f60b[_0x9565('0x3d')]),_0x43f113);if(_0x1b9332[_0x9565('0x3c')]['filter']){_0xe2bc77[_0x9565('0x45')]=_[_0x9565('0x46')](_0xe2bc77[_0x9565('0x45')],{'$or':_[_0x9565('0x3a')](_0x43f113,function(_0x4b758a){if(_0x4b758a['type']!=='VIRTUAL'){var _0x12b15e={};_0x12b15e[_0x4b758a['name']]={'$like':'%'+_0x1b9332[_0x9565('0x3c')][_0x9565('0x47')]+'%'};return _0x12b15e;}})});}_0xe2bc77=_[_0x9565('0x46')]({},_0xe2bc77,_0x1b9332[_0x9565('0x48')]);var _0x297465={'where':_0xe2bc77['where']};return db['OpenchannelMessage']['count'](_0x297465)[_0x9565('0x1d')](function(_0x1c9a47){_0x4f04f4[_0x9565('0x2b')]=_0x1c9a47;if(_0x1b9332[_0x9565('0x3c')]['includeAll']){_0xe2bc77[_0x9565('0x49')]=[{'all':!![]}];}return db[_0x9565('0x35')][_0x9565('0x4a')](_0xe2bc77);})[_0x9565('0x1d')](function(_0xefae82){_0x4f04f4[_0x9565('0x4b')]=_0xefae82;return _0x4f04f4;})[_0x9565('0x1d')](respondWithFilteredResult(_0x24d529,_0xe2bc77))[_0x9565('0x26')](handleError(_0x24d529,null));};exports[_0x9565('0x4c')]=function(_0x3e444f,_0x596258){var _0x3cda6d={'raw':!![],'where':{'id':_0x3e444f[_0x9565('0x4d')]['id']}},_0x4e9cd3={};_0x4e9cd3[_0x9565('0x39')]=_[_0x9565('0x3b')](db[_0x9565('0x35')][_0x9565('0x36')]);_0x4e9cd3['query']=_['keys'](_0x3e444f[_0x9565('0x3c')]);_0x4e9cd3[_0x9565('0x3d')]=_[_0x9565('0x3e')](_0x4e9cd3[_0x9565('0x39')],_0x4e9cd3[_0x9565('0x3c')]);_0x3cda6d['attributes']=_[_0x9565('0x3e')](_0x4e9cd3[_0x9565('0x39')],qs[_0x9565('0x40')](_0x3e444f[_0x9565('0x3c')][_0x9565('0x40')]));_0x3cda6d[_0x9565('0x3f')]=_0x3cda6d[_0x9565('0x3f')][_0x9565('0x41')]?_0x3cda6d['attributes']:_0x4e9cd3[_0x9565('0x39')];if(_0x3e444f['query'][_0x9565('0x4e')]){_0x3cda6d['include']=[{'all':!![]}];}_0x3cda6d=_[_0x9565('0x46')]({},_0x3cda6d,_0x3e444f['options']);return db[_0x9565('0x35')][_0x9565('0x4f')](_0x3cda6d)['then'](handleEntityNotFound(_0x596258,null))[_0x9565('0x1d')](respondWithResult(_0x596258,null))['catch'](handleError(_0x596258,null));};exports[_0x9565('0x50')]=function(_0x12e890,_0x2787a9){return db['OpenchannelMessage'][_0x9565('0x50')](_0x12e890[_0x9565('0x51')],{})[_0x9565('0x1d')](respondWithResult(_0x2787a9,0xc9))['catch'](handleError(_0x2787a9,null));};exports['update']=function(_0x1fd1ed,_0x3278c6){if(_0x1fd1ed['body']['id']){delete _0x1fd1ed[_0x9565('0x51')]['id'];}return db[_0x9565('0x35')]['find']({'where':{'id':_0x1fd1ed[_0x9565('0x4d')]['id']}})[_0x9565('0x1d')](handleEntityNotFound(_0x3278c6,null))[_0x9565('0x1d')](saveUpdates(_0x1fd1ed[_0x9565('0x51')],null))[_0x9565('0x1d')](respondWithResult(_0x3278c6,null))[_0x9565('0x26')](handleError(_0x3278c6,null));};exports[_0x9565('0x52')]=function(_0x13e32b,_0x54f320){return db['OpenchannelMessage'][_0x9565('0x4f')]({'where':{'id':_0x13e32b[_0x9565('0x4d')]['id']}})['then'](handleEntityNotFound(_0x54f320,null))['then'](removeEntity(_0x54f320,null))['catch'](handleError(_0x54f320,null));};exports[_0x9565('0x53')]=function(_0x4deb12,_0x57913a){return db[_0x9565('0x35')][_0x9565('0x53')]()[_0x9565('0x1d')](respondWithResult(_0x57913a,null))[_0x9565('0x26')](handleError(_0x57913a,null));};var interaction_log=require('../../config/logger')('openchannel-interactions');exports[_0x9565('0x54')]=function(_0x74babf,_0x280986,_0x3d2d47){var _0x377521={'agent':{},'channel':_0x9565('0x55')};if(_0x74babf[_0x9565('0x51')]['id']){delete _0x74babf[_0x9565('0x51')]['id'];}_0x74babf['body']['read']=!![];_0x74babf[_0x9565('0x51')][_0x9565('0x56')]=moment()[_0x9565('0x57')](_0x9565('0x58'));_0x74babf[_0x9565('0x51')][_0x9565('0x59')]=_0x74babf[_0x9565('0x51')][_0x9565('0x59')]||_0x74babf[_0x9565('0x5a')]['id'];_0x377521['agent']['id']=_0x74babf[_0x9565('0x51')][_0x9565('0x59')];return db['OpenchannelMessage'][_0x9565('0x4f')]({'where':{'id':_0x74babf[_0x9565('0x4d')]['id'],'UserId':null}})[_0x9565('0x1d')](handleEntityNotFound(_0x280986,null))[_0x9565('0x1d')](saveUpdates(_0x74babf[_0x9565('0x51')],null))[_0x9565('0x1d')](function(_0x4e2025){if(_0x4e2025){_0x377521[_0x9565('0x24')]=_0x4e2025['get']({'plain':!![]});return db[_0x9565('0x5b')][_0x9565('0x4f')]({'where':{'id':_0x4e2025[_0x9565('0x5c')]}});}return null;})['then'](handleEntityNotFound(_0x280986,null))['then'](function(_0x5b3f81){if(_0x5b3f81){return _0x5b3f81[_0x9565('0x32')]({'UserId':_0x74babf[_0x9565('0x51')][_0x9565('0x59')],'read1stAt':_[_0x9565('0x5d')](_0x5b3f81[_0x9565('0x5e')])?moment()[_0x9565('0x57')](_0x9565('0x58')):undefined});}return null;})[_0x9565('0x1d')](function(_0x4ec50c){if(_0x4ec50c){_0x377521[_0x9565('0x5f')]=_0x4ec50c['get']({'plain':!![]});interaction_log[_0x9565('0x1e')]('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x74babf[_0x9565('0x5a')]['id'],_0x74babf[_0x9565('0x5a')][_0x9565('0x33')],_0x74babf[_0x9565('0x5a')][_0x9565('0x60')],_0x377521['interaction']['id'],_0x74babf['body']?JSON[_0x9565('0x21')](_0x74babf[_0x9565('0x51')]):_0x9565('0x61'));return respondWithRpcPromise(_0x9565('0x62'),'acceptMessage',_0x377521);}return null;})[_0x9565('0x1d')](function(_0x26d806){var _0x159e2e=_0x9565('0x63')+_0x26d806[_0x9565('0x24')][_0x9565('0x64')];return db[_0x9565('0x65')]['query'](_0x159e2e,{'type':db[_0x9565('0x66')][_0x9565('0x67')][_0x9565('0x68')],'raw':!![]})[_0x9565('0x1d')](function(_0x453f52){return _0x453f52;});})[_0x9565('0x1d')](function(_0x26af80){if(_0x26af80){_0x377521[_0x9565('0x24')]['contact']=_0x26af80[0x0];if(!_0x74babf[_0x9565('0x51')][_0x9565('0x59')])return;return db[_0x9565('0x69')][_0x9565('0x4f')]({'where':{'id':_0x74babf[_0x9565('0x51')][_0x9565('0x59')],'role':_0x9565('0x6a')},'attributes':['id',_0x9565('0x33'),_0x9565('0x6b'),_0x9565('0x6c'),'internal'],'raw':!![]});}return null;})[_0x9565('0x1d')](function(_0x1bdc93){if(!_0x1bdc93)return null;_0x377521[_0x9565('0x24')][_0x9565('0x6a')]=_0x1bdc93;return _0x377521;})[_0x9565('0x1d')](function(_0x51e842){if(_0x51e842){if(_0x74babf[_0x9565('0x51')][_0x9565('0x6d')]){_0x377521[_0x9565('0x24')]['interface']=util[_0x9565('0x57')](_0x9565('0x6e'),_0x74babf[_0x9565('0x5a')][_0x9565('0x33')]);_0x377521[_0x9565('0x24')][_0x9565('0x6f')]=_0x377521['channel'];_0x377521[_0x9565('0x24')][_0x9565('0x70')]=_0x377521['channel'];_0x377521[_0x9565('0x24')][_0x9565('0x71')]=_0x9565('0x54');return respondWithRpcPromise(_0x9565('0x72'),_0x9565('0x72'),{'event':_0x9565('0x73'),'message':_0x377521['message']},client9002)[_0x9565('0x1d')](function(){return _0x377521;});}return _0x377521;}return null;})['then'](respondWithResult(_0x280986,null))[_0x9565('0x26')](handleError(_0x280986,null));};var interaction_log=require(_0x9565('0x74'))('openchannel-interactions');exports[_0x9565('0x30')]=function(_0x24ecab,_0x51a01d,_0xb74be3){var _0x55aa47={'agent':{},'channel':_0x9565('0x55')};if(_0x24ecab[_0x9565('0x51')]['id']){delete _0x24ecab[_0x9565('0x51')]['id'];}_0x24ecab[_0x9565('0x51')]['UserId']=_0x24ecab[_0x9565('0x51')][_0x9565('0x59')]||_0x24ecab[_0x9565('0x5a')]['id'];_0x55aa47[_0x9565('0x6a')]['id']=_0x24ecab[_0x9565('0x51')][_0x9565('0x59')];return db['OpenchannelMessage'][_0x9565('0x4f')]({'where':{'id':_0x24ecab[_0x9565('0x4d')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x51a01d,null))[_0x9565('0x1d')](function(_0xf3ad11){if(_0xf3ad11){_0x55aa47[_0x9565('0x24')]=_0xf3ad11[_0x9565('0x75')]({'plain':!![]});return db[_0x9565('0x5b')][_0x9565('0x4f')]({'where':{'id':_0xf3ad11['OpenchannelInteractionId']}});}return null;})[_0x9565('0x1d')](handleEntityNotFound(_0x51a01d,null))[_0x9565('0x1d')](function(_0x58f883){if(_0x58f883){_0x55aa47['interaction']=_0x58f883['get']({'plain':!![]});interaction_log['info'](_0x9565('0x76'),_0x24ecab['user']['id'],_0x24ecab[_0x9565('0x5a')][_0x9565('0x33')],_0x24ecab['user'][_0x9565('0x60')],_0x55aa47['interaction']['id'],_0x24ecab[_0x9565('0x51')]?JSON['stringify'](_0x24ecab[_0x9565('0x51')]):_0x9565('0x61'));return respondWithRpcPromise('RejectMessage',_0x9565('0x77'),_0x55aa47);}return null;})[_0x9565('0x1d')](function(_0x560a02){var _0xaeb392=_0x9565('0x63')+_0x560a02[_0x9565('0x24')][_0x9565('0x64')];return db['sequelize']['query'](_0xaeb392,{'type':db[_0x9565('0x66')][_0x9565('0x67')][_0x9565('0x68')],'raw':!![]})[_0x9565('0x1d')](function(_0x48ad80){return _0x48ad80;});})[_0x9565('0x1d')](function(_0xa0588f){if(_0xa0588f){_0x55aa47[_0x9565('0x24')]['contact']=_0xa0588f[0x0];if(!_0x24ecab[_0x9565('0x51')][_0x9565('0x59')])return;return db[_0x9565('0x69')][_0x9565('0x4f')]({'where':{'id':_0x24ecab[_0x9565('0x51')]['UserId'],'role':_0x9565('0x6a')},'attributes':['id',_0x9565('0x33'),_0x9565('0x6b'),_0x9565('0x6c'),'internal'],'raw':!![]});}return null;})[_0x9565('0x1d')](function(_0x20b388){if(!_0x20b388)return null;_0x55aa47[_0x9565('0x24')]['agent']=_0x20b388;return _0x55aa47;})['then'](function(_0x596312){if(_0x596312){_0x596312[_0x9565('0x24')][_0x9565('0x78')]=util[_0x9565('0x57')](_0x9565('0x6e'),_0x24ecab[_0x9565('0x5a')][_0x9565('0x33')]);_0x596312['message'][_0x9565('0x6f')]=_0x55aa47['channel'];_0x596312[_0x9565('0x24')][_0x9565('0x70')]=_0x55aa47[_0x9565('0x6f')];_0x596312['message'][_0x9565('0x71')]=_0x9565('0x30');respondWithRpcPromise(_0x9565('0x72'),_0x9565('0x72'),{'event':'rejectmessage','message':_0x596312[_0x9565('0x24')]},client9002);return _0x55aa47;}return null;})[_0x9565('0x1d')](respondWithResult(_0x51a01d,null))[_0x9565('0x26')](handleError(_0x51a01d,null));};
\ No newline at end of file
index acecbc7..99bec0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf8a=['OpenchannelMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xcf8a,0xda));var _0xacf8=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xcf8a[_0x4a9fb1];return _0x348672;};'use strict';var EventEmitter=require(_0xacf8('0x0'));var OpenchannelMessage=require(_0xacf8('0x1'))['db'][_0xacf8('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xacf8('0x3')](0x0);var events={'afterCreate':_0xacf8('0x4'),'afterUpdate':_0xacf8('0x5'),'afterDestroy':_0xacf8('0x6')};function emitEvent(_0x58bf84){return function(_0x19d0f4,_0xa6c29a,_0x5a07d8){OpenchannelMessageEvents[_0xacf8('0x7')](_0x58bf84+':'+_0x19d0f4['id'],_0x19d0f4);OpenchannelMessageEvents[_0xacf8('0x7')](_0x58bf84,_0x19d0f4);_0x5a07d8(null);};}for(var e in events){if(events[_0xacf8('0x8')](e)){var event=events[e];OpenchannelMessage[_0xacf8('0x9')](e,emitEvent(event));}}module['exports']=OpenchannelMessageEvents;
\ No newline at end of file
+var _0xcba1=['OpenchannelMessage','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x1859ce,_0x750805){var _0x1e1c62=function(_0x2c9027){while(--_0x2c9027){_0x1859ce['push'](_0x1859ce['shift']());}};_0x1e1c62(++_0x750805);}(_0xcba1,0x1d4));var _0x1cba=function(_0x548503,_0x1aa00c){_0x548503=_0x548503-0x0;var _0xf8f05f=_0xcba1[_0x548503];return _0xf8f05f;};'use strict';var EventEmitter=require(_0x1cba('0x0'));var OpenchannelMessage=require(_0x1cba('0x1'))['db'][_0x1cba('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x1cba('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x1cba('0x4'),'afterDestroy':_0x1cba('0x5')};function emitEvent(_0x1f3901){return function(_0x1c78e6,_0x2a2d70,_0x1349d6){OpenchannelMessageEvents[_0x1cba('0x6')](_0x1f3901+':'+_0x1c78e6['id'],_0x1c78e6);OpenchannelMessageEvents[_0x1cba('0x6')](_0x1f3901,_0x1c78e6);_0x1349d6(null);};}for(var e in events){if(events[_0x1cba('0x7')](e)){var event=events[e];OpenchannelMessage[_0x1cba('0x8')](e,emitEvent(event));}}module[_0x1cba('0x9')]=OpenchannelMessageEvents;
\ No newline at end of file
index 7147211..b9c18c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955f=['openchannel_messages','body','FULLTEXT','models','get','toLowerCase','direction','secret','UserId','findOne','OpenchannelInteractionId','then','update','createdAt','catch','CmContact','describe','OpenchannelAccount','find','OpenchannelAccountId','Interactions','Contact','keys','replyUri','OpenchannelMessage,\x20%s,\x20%s','format','Forwarding\x20message\x20%d\x20to\x20%s','Interaction','omit','POST','method','GET','info','afterCreate','Message\x20%d\x20forwarded\x20to\x20%s','threadId','OpenchannelInteraction','error','inspect','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','../../config/environment','exports','OpenchannelMessage'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x955f,0x1eb));var _0xf955=function(_0x327451,_0x3e591d){_0x327451=_0x327451-0x0;var _0x1e411e=_0x955f[_0x327451];return _0x1e411e;};'use strict';var _=require(_0xf955('0x0'));var util=require(_0xf955('0x1'));var logger=require(_0xf955('0x2'))(_0xf955('0x3'));var moment=require(_0xf955('0x4'));var BPromise=require('bluebird');var rp=require(_0xf955('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf955('0x6'));var attributes=require('./openchannelMessage.attributes');module[_0xf955('0x7')]=function(_0x2caff2,_0x3fdac2){return _0x2caff2['define'](_0xf955('0x8'),attributes,{'tableName':_0xf955('0x9'),'paranoid':![],'indexes':[{'name':'fti_openchannel_messages','fields':[_0xf955('0xa')],'type':_0xf955('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x168ffb,_0x38b190,_0x134c1b){var _0x421e4a=_0x2caff2[_0xf955('0xc')];var _0x4d213a=_0x168ffb[_0xf955('0xd')]({'plain':!![]});if(_0x4d213a['direction'][_0xf955('0xe')]()==='in'||_0x4d213a[_0xf955('0xf')][_0xf955('0xe')]()==='out'&&!_0x4d213a[_0xf955('0x10')]&&!_['isNil'](_0x4d213a[_0xf955('0x11')])){_0x421e4a['OpenchannelInteraction'][_0xf955('0x12')]({'where':{'id':_0x4d213a[_0xf955('0x13')]}})[_0xf955('0x14')](function(_0x109bc5){if(_0x109bc5){_0x109bc5[_0xf955('0x15')]({'lastMsgAt':_0x4d213a[_0xf955('0x16')],'lastMsgDirection':_0x4d213a[_0xf955('0xf')][_0xf955('0xe')]()});}})[_0xf955('0x17')](function(_0x24e75c){console['error'](_0x24e75c);});}if(_0x4d213a[_0xf955('0xf')]==='out'&&!_0x4d213a[_0xf955('0x10')]){var _0x3a814f;_0x421e4a[_0xf955('0x18')][_0xf955('0x19')]()['then'](function(_0x5ac6cb){return _0x421e4a[_0xf955('0x1a')][_0xf955('0x1b')]({'where':{'id':_0x4d213a[_0xf955('0x1c')]},'include':[{'model':_0x421e4a['OpenchannelInteraction'],'as':_0xf955('0x1d'),'where':{'id':_0x4d213a[_0xf955('0x13')]},'limit':0x1,'include':[{'model':_0x421e4a[_0xf955('0x18')],'as':_0xf955('0x1e'),'attributes':_[_0xf955('0x1f')](_0x5ac6cb)}]}]});})['then'](function(_0x17d86a){_0x3a814f=_0x17d86a[_0xf955('0xd')]({'plain':!![]});if(_0x3a814f&&_0x3a814f[_0xf955('0x20')]){logger['info'](_0xf955('0x21'),'afterCreate',util[_0xf955('0x22')](_0xf955('0x23'),_0x4d213a['id'],_0x3a814f[_0xf955('0x20')]));if(_0x3a814f[_0xf955('0x1d')]&&_0x3a814f[_0xf955('0x1d')]['length']){_0x4d213a[_0xf955('0x24')]=_[_0xf955('0x25')](_0x3a814f[_0xf955('0x1d')][0x0],_0xf955('0x1e'));_0x4d213a[_0xf955('0x1e')]=_0x3a814f[_0xf955('0x1d')][0x0][_0xf955('0x1e')];}var _0x38b190={'method':_0xf955('0x26'),'uri':encodeURI(_0x3a814f[_0xf955('0x20')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x38b190[_0xf955('0x27')]){case _0xf955('0x28'):_0x38b190['qs']=_0x4d213a;break;case _0xf955('0x26'):_0x38b190[_0xf955('0xa')]=_0x4d213a;break;}return rp(_0x38b190)[_0xf955('0x14')](function(_0x51f3ab){logger[_0xf955('0x29')](_0xf955('0x21'),_0xf955('0x2a'),util[_0xf955('0x22')](_0xf955('0x2b'),_0x4d213a['id'],_0x3a814f[_0xf955('0x20')]));if(_0x51f3ab['body'][_0xf955('0x2c')]&&_0x51f3ab[_0xf955('0xa')]['threadId']!=_0x4d213a[_0xf955('0x24')][_0xf955('0x2c')]){return _0x421e4a[_0xf955('0x2d')][_0xf955('0x15')]({'threadId':_0x51f3ab['body'][_0xf955('0x2c')]},{'logging':!![],'where':{'id':_0x4d213a['Interaction']['id']}});}else{return;}})[_0xf955('0x14')](function(){return _0x168ffb[_0xf955('0x15')]({'read':!![]});})[_0xf955('0x17')](function(_0x4069fe){logger[_0xf955('0x2e')](_0xf955('0x21'),_0xf955('0x2a'),util[_0xf955('0x2f')](_0x4069fe,{'showHidden':![],'depth':null}));_0x134c1b();});}else{_0x134c1b();}})['finally'](function(){_0x134c1b();});}else{_0x134c1b();}}},'charset':_0xf955('0x30'),'collate':_0xf955('0x31')});};
\ No newline at end of file
+var _0x9354=['threadId','inspect','finally','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','FULLTEXT','models','get','direction','secret','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','createdAt','toLowerCase','catch','error','CmContact','describe','find','OpenchannelAccountId','Interactions','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','length','Interaction','Contact','POST','method','GET','body'];(function(_0x35b962,_0x48db68){var _0x268a17=function(_0x3e834d){while(--_0x3e834d){_0x35b962['push'](_0x35b962['shift']());}};_0x268a17(++_0x48db68);}(_0x9354,0x96));var _0x4935=function(_0x4d770d,_0x5af4ce){_0x4d770d=_0x4d770d-0x0;var _0x11dc7a=_0x9354[_0x4d770d];return _0x11dc7a;};'use strict';var _=require('lodash');var util=require(_0x4935('0x0'));var logger=require(_0x4935('0x1'))('api');var moment=require(_0x4935('0x2'));var BPromise=require(_0x4935('0x3'));var rp=require(_0x4935('0x4'));var fs=require('fs');var path=require(_0x4935('0x5'));var rimraf=require('rimraf');var config=require(_0x4935('0x6'));var attributes=require(_0x4935('0x7'));module[_0x4935('0x8')]=function(_0x2d518a,_0x263864){return _0x2d518a[_0x4935('0x9')](_0x4935('0xa'),attributes,{'tableName':_0x4935('0xb'),'paranoid':![],'indexes':[{'name':_0x4935('0xc'),'fields':['body'],'type':_0x4935('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x47a44f,_0x2aac9a,_0x38de96){var _0xd5b117=_0x2d518a[_0x4935('0xe')];var _0x261462=_0x47a44f[_0x4935('0xf')]({'plain':!![]});if(_0x261462['direction']['toLowerCase']()==='in'||_0x261462[_0x4935('0x10')]['toLowerCase']()==='out'&&!_0x261462[_0x4935('0x11')]&&!_[_0x4935('0x12')](_0x261462[_0x4935('0x13')])){_0xd5b117[_0x4935('0x14')][_0x4935('0x15')]({'where':{'id':_0x261462[_0x4935('0x16')]}})[_0x4935('0x17')](function(_0x3a7c30){if(_0x3a7c30){_0x3a7c30[_0x4935('0x18')]({'lastMsgAt':_0x261462[_0x4935('0x19')],'lastMsgDirection':_0x261462[_0x4935('0x10')][_0x4935('0x1a')]()});}})[_0x4935('0x1b')](function(_0x3652c4){console[_0x4935('0x1c')](_0x3652c4);});}if(_0x261462[_0x4935('0x10')]==='out'&&!_0x261462[_0x4935('0x11')]){var _0x46526a;_0xd5b117[_0x4935('0x1d')][_0x4935('0x1e')]()[_0x4935('0x17')](function(_0x429ef3){return _0xd5b117['OpenchannelAccount'][_0x4935('0x1f')]({'where':{'id':_0x261462[_0x4935('0x20')]},'include':[{'model':_0xd5b117['OpenchannelInteraction'],'as':_0x4935('0x21'),'where':{'id':_0x261462[_0x4935('0x16')]},'limit':0x1,'include':[{'model':_0xd5b117[_0x4935('0x1d')],'as':'Contact','attributes':_['keys'](_0x429ef3)}]}]});})[_0x4935('0x17')](function(_0x6b849f){_0x46526a=_0x6b849f[_0x4935('0xf')]({'plain':!![]});if(_0x46526a&&_0x46526a[_0x4935('0x22')]){logger[_0x4935('0x23')](_0x4935('0x24'),_0x4935('0x25'),util[_0x4935('0x26')]('Forwarding\x20message\x20%d\x20to\x20%s',_0x261462['id'],_0x46526a[_0x4935('0x22')]));if(_0x46526a[_0x4935('0x21')]&&_0x46526a[_0x4935('0x21')][_0x4935('0x27')]){_0x261462[_0x4935('0x28')]=_['omit'](_0x46526a['Interactions'][0x0],_0x4935('0x29'));_0x261462[_0x4935('0x29')]=_0x46526a[_0x4935('0x21')][0x0][_0x4935('0x29')];}var _0x2aac9a={'method':_0x4935('0x2a'),'uri':encodeURI(_0x46526a[_0x4935('0x22')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x2aac9a[_0x4935('0x2b')]){case _0x4935('0x2c'):_0x2aac9a['qs']=_0x261462;break;case _0x4935('0x2a'):_0x2aac9a[_0x4935('0x2d')]=_0x261462;break;}return rp(_0x2aac9a)[_0x4935('0x17')](function(_0x2c47ab){logger[_0x4935('0x23')](_0x4935('0x24'),'afterCreate',util['format']('Message\x20%d\x20forwarded\x20to\x20%s',_0x261462['id'],_0x46526a[_0x4935('0x22')]));if(_0x2c47ab[_0x4935('0x2d')]['threadId']&&_0x2c47ab[_0x4935('0x2d')][_0x4935('0x2e')]!=_0x261462[_0x4935('0x28')][_0x4935('0x2e')]){return _0xd5b117[_0x4935('0x14')][_0x4935('0x18')]({'threadId':_0x2c47ab[_0x4935('0x2d')][_0x4935('0x2e')]},{'logging':!![],'where':{'id':_0x261462['Interaction']['id']}});}else{return;}})[_0x4935('0x17')](function(){return _0x47a44f[_0x4935('0x18')]({'read':!![]});})['catch'](function(_0x48a289){logger[_0x4935('0x1c')]('OpenchannelMessage,\x20%s,\x20%s',_0x4935('0x25'),util[_0x4935('0x2f')](_0x48a289,{'showHidden':![],'depth':null}));_0x38de96();});}else{_0x38de96();}})[_0x4935('0x30')](function(){_0x38de96();});}else{_0x38de96();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 176bc30..b2484dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','OpenchannelMessage','create','options','raw','CreateOpenchannelMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5506fb,_0x57dcc6){var _0x1324a9=function(_0x35a2b7){while(--_0x35a2b7){_0x5506fb['push'](_0x5506fb['shift']());}};_0x1324a9(++_0x57dcc6);}(_0x5f2f,0x73));var _0xf5f2=function(_0x42c9a8,_0x269ad8){_0x42c9a8=_0x42c9a8-0x0;var _0xd8d52e=_0x5f2f[_0x42c9a8];return _0xd8d52e;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});config[_0xf5f2('0xc')]=_[_0xf5f2('0xd')](config['redis'],{'host':_0xf5f2('0xe'),'port':0x18eb});var socket=require(_0xf5f2('0xf'))(new Redis(config[_0xf5f2('0xc')]));require('./openchannelMessage.socket')[_0xf5f2('0x10')](socket);function respondWithRpcPromise(_0x15dd7c,_0x218ae3,_0x4e0e6b){return new BPromise(function(_0x977a59,_0x4ebbbe){return client['request'](_0x15dd7c,_0x4e0e6b)[_0xf5f2('0x11')](function(_0x151aba){logger['info'](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));logger[_0xf5f2('0x14')](_0xf5f2('0x15'),_0x218ae3,_0xf5f2('0x13'),JSON[_0xf5f2('0x16')](_0x151aba));if(_0x151aba['error']){if(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x18')]===0x1f4){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')]['message']);return _0x4ebbbe(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);return _0x977a59(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}else{logger[_0xf5f2('0x1a')](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));_0x977a59(_0x151aba[_0xf5f2('0x1b')][_0xf5f2('0x19')]);}})[_0xf5f2('0x1c')](function(_0x3cf5ea){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x3cf5ea);_0x4ebbbe(_0x3cf5ea);});});}exports['CreateOpenchannelMessage']=function(_0x34706d){var _0x47101e=this;return new Promise(function(_0x49dac2,_0x47acfc){return db[_0xf5f2('0x1d')][_0xf5f2('0x1e')](_0x34706d['body'],{'raw':_0x34706d[_0xf5f2('0x1f')]?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x20')]===undefined?!![]:![]:!![]})[_0xf5f2('0x11')](function(_0x36f1cb){logger['info'](_0xf5f2('0x21'),_0x34706d);logger[_0xf5f2('0x14')](_0xf5f2('0x21'),_0x34706d,JSON[_0xf5f2('0x16')](_0x36f1cb));_0x49dac2(_0x36f1cb);})[_0xf5f2('0x1c')](function(_0x5bdf4a){logger['error'](_0xf5f2('0x21'),_0x5bdf4a[_0xf5f2('0x19')],_0x34706d);_0x47acfc(_0x47101e[_0xf5f2('0x17')](0x1f4,_0x5bdf4a[_0xf5f2('0x19')]));});});};
\ No newline at end of file
+var _0xdb28=['then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateOpenchannelMessage','OpenchannelMessage','create','body','options','raw','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','request'];(function(_0x288536,_0x369b51){var _0x525e94=function(_0x2fe9db){while(--_0x2fe9db){_0x288536['push'](_0x288536['shift']());}};_0x525e94(++_0x369b51);}(_0xdb28,0x106));var _0x8db2=function(_0x46d36a,_0x426394){_0x46d36a=_0x46d36a-0x0;var _0x4dbf10=_0xdb28[_0x46d36a];return _0x4dbf10;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});config['redis']=_[_0x8db2('0xb')](config[_0x8db2('0xc')],{'host':_0x8db2('0xd'),'port':0x18eb});var socket=require(_0x8db2('0xe'))(new Redis(config[_0x8db2('0xc')]));require(_0x8db2('0xf'))[_0x8db2('0x10')](socket);function respondWithRpcPromise(_0x4ba340,_0x30dc90,_0x476216){return new BPromise(function(_0x1f62af,_0x57015f){return client[_0x8db2('0x11')](_0x4ba340,_0x476216)[_0x8db2('0x12')](function(_0x576475){logger[_0x8db2('0x13')](_0x8db2('0x14'),_0x30dc90,_0x8db2('0x15'));logger[_0x8db2('0x16')](_0x8db2('0x17'),_0x30dc90,'request\x20sent',JSON['stringify'](_0x576475));if(_0x576475[_0x8db2('0x18')]){if(_0x576475[_0x8db2('0x18')][_0x8db2('0x19')]===0x1f4){logger[_0x8db2('0x18')](_0x8db2('0x14'),_0x30dc90,_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);return _0x57015f(_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);}logger[_0x8db2('0x18')]('OpenchannelMessage,\x20%s,\x20%s',_0x30dc90,_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);return _0x1f62af(_0x576475['error'][_0x8db2('0x1a')]);}else{logger[_0x8db2('0x13')](_0x8db2('0x14'),_0x30dc90,_0x8db2('0x15'));_0x1f62af(_0x576475[_0x8db2('0x1b')][_0x8db2('0x1a')]);}})['catch'](function(_0x5df464){logger[_0x8db2('0x18')](_0x8db2('0x14'),_0x30dc90,_0x5df464);_0x57015f(_0x5df464);});});}exports[_0x8db2('0x1c')]=function(_0x1b64e4){var _0x58562e=this;return new Promise(function(_0x431d60,_0x36a9ff){return db[_0x8db2('0x1d')][_0x8db2('0x1e')](_0x1b64e4[_0x8db2('0x1f')],{'raw':_0x1b64e4['options']?_0x1b64e4[_0x8db2('0x20')][_0x8db2('0x21')]===undefined?!![]:![]:!![]})[_0x8db2('0x12')](function(_0x125be2){logger[_0x8db2('0x13')](_0x8db2('0x1c'),_0x1b64e4);logger[_0x8db2('0x16')]('CreateOpenchannelMessage',_0x1b64e4,JSON[_0x8db2('0x22')](_0x125be2));_0x431d60(_0x125be2);})['catch'](function(_0x5725f0){logger['error']('CreateOpenchannelMessage',_0x5725f0[_0x8db2('0x1a')],_0x1b64e4);_0x36a9ff(_0x58562e[_0x8db2('0x18')](0x1f4,_0x5725f0[_0x8db2('0x1a')]));});});};
\ No newline at end of file
index d326cc6..0a94b5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a0b=['removeListener','length','openchannelMessage:','./openchannelMessage.events','save','remove','update'];(function(_0x4bfb1e,_0x78af6e){var _0x49001b=function(_0x40b6fd){while(--_0x40b6fd){_0x4bfb1e['push'](_0x4bfb1e['shift']());}};_0x49001b(++_0x78af6e);}(_0x3a0b,0x7a));var _0xb3a0=function(_0xb65e77,_0x238c3d){_0xb65e77=_0xb65e77-0x0;var _0x38134b=_0x3a0b[_0xb65e77];return _0x38134b;};'use strict';var OpenchannelMessageEvents=require(_0xb3a0('0x0'));var events=[_0xb3a0('0x1'),_0xb3a0('0x2'),_0xb3a0('0x3')];function createListener(_0x1c5234,_0x5c8735){return function(_0x48484a){_0x5c8735['emit'](_0x1c5234,_0x48484a);};}function removeListener(_0x52e5f5,_0x43ba7b){return function(){OpenchannelMessageEvents[_0xb3a0('0x4')](_0x52e5f5,_0x43ba7b);};}exports['register']=function(_0x3e3354){for(var _0x1fdbb1=0x0,_0x2755e7=events[_0xb3a0('0x5')];_0x1fdbb1<_0x2755e7;_0x1fdbb1++){var _0x195dcd=events[_0x1fdbb1];var _0x46f8f3=createListener(_0xb3a0('0x6')+_0x195dcd,_0x3e3354);OpenchannelMessageEvents['on'](_0x195dcd,_0x46f8f3);}};
\ No newline at end of file
+var _0x395d=['openchannelMessage:','./openchannelMessage.events','save','remove','update','register','length'];(function(_0x109279,_0x4b82e9){var _0x1df343=function(_0x3d7a03){while(--_0x3d7a03){_0x109279['push'](_0x109279['shift']());}};_0x1df343(++_0x4b82e9);}(_0x395d,0x166));var _0xd395=function(_0xecff3e,_0x4088b2){_0xecff3e=_0xecff3e-0x0;var _0xe2264c=_0x395d[_0xecff3e];return _0xe2264c;};'use strict';var OpenchannelMessageEvents=require(_0xd395('0x0'));var events=[_0xd395('0x1'),_0xd395('0x2'),_0xd395('0x3')];function createListener(_0x350f6f,_0x501645){return function(_0x4cc9bc){_0x501645['emit'](_0x350f6f,_0x4cc9bc);};}function removeListener(_0x20829f,_0x47fee9){return function(){OpenchannelMessageEvents['removeListener'](_0x20829f,_0x47fee9);};}exports[_0xd395('0x4')]=function(_0xcfa7bb){for(var _0x91170b=0x0,_0x151489=events[_0xd395('0x5')];_0x91170b<_0x151489;_0x91170b++){var _0x1d4bce=events[_0x91170b];var _0x3d9ba4=createListener(_0xd395('0x6')+_0x1d4bce,_0xcfa7bb);OpenchannelMessageEvents['on'](_0x1d4bce,_0x3d9ba4);}};
\ No newline at end of file
index 0267c2b..a3409c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6eae=['util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','put','update','delete','removeAgents','exports'];(function(_0x255165,_0x118aff){var _0x195f25=function(_0x357ce2){while(--_0x357ce2){_0x255165['push'](_0x255165['shift']());}};_0x195f25(++_0x118aff);}(_0x6eae,0x1e0));var _0xe6ea=function(_0x4cf6d6,_0x4a8b2e){_0x4cf6d6=_0x4cf6d6-0x0;var _0x5bbe8f=_0x6eae[_0x4cf6d6];return _0x5bbe8f;};'use strict';var multer=require('multer');var util=require(_0xe6ea('0x0'));var path=require(_0xe6ea('0x1'));var timeout=require(_0xe6ea('0x2'));var express=require(_0xe6ea('0x3'));var router=express[_0xe6ea('0x4')]();var fs_extra=require(_0xe6ea('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe6ea('0x6'));var config=require(_0xe6ea('0x7'));var controller=require(_0xe6ea('0x8'));router[_0xe6ea('0x9')]('/',auth[_0xe6ea('0xa')](),controller[_0xe6ea('0xb')]);router[_0xe6ea('0x9')](_0xe6ea('0xc'),auth[_0xe6ea('0xa')](),controller[_0xe6ea('0xd')]);router[_0xe6ea('0x9')](_0xe6ea('0xe'),auth[_0xe6ea('0xa')](),controller[_0xe6ea('0xf')]);router[_0xe6ea('0x9')](_0xe6ea('0x10'),auth[_0xe6ea('0xa')](),controller[_0xe6ea('0x11')]);router[_0xe6ea('0x9')](_0xe6ea('0x12'),auth['isAuthenticated'](),controller[_0xe6ea('0x13')]);router[_0xe6ea('0x9')](_0xe6ea('0x14'),auth[_0xe6ea('0xa')](),controller[_0xe6ea('0x15')]);router[_0xe6ea('0x16')]('/',auth[_0xe6ea('0xa')](),controller[_0xe6ea('0x17')]);router[_0xe6ea('0x16')](_0xe6ea('0x12'),auth[_0xe6ea('0xa')](),controller[_0xe6ea('0x18')]);router[_0xe6ea('0x16')](_0xe6ea('0x14'),auth['isAuthenticated'](),controller['addAgents']);router[_0xe6ea('0x19')](_0xe6ea('0xe'),auth[_0xe6ea('0xa')](),controller[_0xe6ea('0x1a')]);router[_0xe6ea('0x1b')](_0xe6ea('0xe'),auth[_0xe6ea('0xa')](),controller['destroy']);router[_0xe6ea('0x1b')](_0xe6ea('0x12'),auth[_0xe6ea('0xa')](),controller['removeTeams']);router[_0xe6ea('0x1b')](_0xe6ea('0x14'),auth['isAuthenticated'](),controller[_0xe6ea('0x1c')]);module[_0xe6ea('0x1d')]=router;
\ No newline at end of file
+var _0x4c8a=['getTeams','getAgents','post','create','addTeams','/:id/users','addAgents','update','delete','destroy','removeTeams','removeAgents','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/describe','describe','/:id','getMembers','/:id/teams'];(function(_0x51de4a,_0x27b464){var _0xe790f4=function(_0x418a3d){while(--_0x418a3d){_0x51de4a['push'](_0x51de4a['shift']());}};_0xe790f4(++_0x27b464);}(_0x4c8a,0x187));var _0xa4c8=function(_0x13e4ac,_0x2e238b){_0x13e4ac=_0x13e4ac-0x0;var _0x311b8c=_0x4c8a[_0x13e4ac];return _0x311b8c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xa4c8('0x0'));var timeout=require(_0xa4c8('0x1'));var express=require(_0xa4c8('0x2'));var router=express[_0xa4c8('0x3')]();var fs_extra=require(_0xa4c8('0x4'));var auth=require(_0xa4c8('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./openchannelQueue.controller');router[_0xa4c8('0x6')]('/',auth[_0xa4c8('0x7')](),controller[_0xa4c8('0x8')]);router[_0xa4c8('0x6')](_0xa4c8('0x9'),auth['isAuthenticated'](),controller[_0xa4c8('0xa')]);router['get'](_0xa4c8('0xb'),auth[_0xa4c8('0x7')](),controller['show']);router[_0xa4c8('0x6')]('/:id/members',auth['isAuthenticated'](),controller[_0xa4c8('0xc')]);router['get'](_0xa4c8('0xd'),auth[_0xa4c8('0x7')](),controller[_0xa4c8('0xe')]);router[_0xa4c8('0x6')]('/:id/users',auth['isAuthenticated'](),controller[_0xa4c8('0xf')]);router[_0xa4c8('0x10')]('/',auth[_0xa4c8('0x7')](),controller[_0xa4c8('0x11')]);router['post']('/:id/teams',auth[_0xa4c8('0x7')](),controller[_0xa4c8('0x12')]);router[_0xa4c8('0x10')](_0xa4c8('0x13'),auth[_0xa4c8('0x7')](),controller[_0xa4c8('0x14')]);router['put'](_0xa4c8('0xb'),auth[_0xa4c8('0x7')](),controller[_0xa4c8('0x15')]);router[_0xa4c8('0x16')](_0xa4c8('0xb'),auth[_0xa4c8('0x7')](),controller[_0xa4c8('0x17')]);router[_0xa4c8('0x16')](_0xa4c8('0xd'),auth[_0xa4c8('0x7')](),controller[_0xa4c8('0x18')]);router[_0xa4c8('0x16')](_0xa4c8('0x13'),auth[_0xa4c8('0x7')](),controller[_0xa4c8('0x19')]);module[_0xa4c8('0x1a')]=router;
\ No newline at end of file
index 5efd9f8..efa80cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2cf=['roundrobin','sequelize','exports','STRING','INTEGER','rrmemory','beepall'];(function(_0x163e4e,_0x44cc89){var _0x4d825c=function(_0x121a24){while(--_0x121a24){_0x163e4e['push'](_0x163e4e['shift']());}};_0x4d825c(++_0x44cc89);}(_0xb2cf,0x7f));var _0xfb2c=function(_0x3d7816,_0x287e9c){_0x3d7816=_0x3d7816-0x0;var _0x1547b0=_0xb2cf[_0x3d7816];return _0x1547b0;};'use strict';var Sequelize=require(_0xfb2c('0x0'));module[_0xfb2c('0x1')]={'name':{'type':Sequelize[_0xfb2c('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xfb2c('0x2')]},'timeout':{'type':Sequelize[_0xfb2c('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xfb2c('0x4'),_0xfb2c('0x5'),_0xfb2c('0x6'))}};
\ No newline at end of file
+var _0x90f2=['beepall','roundrobin','exports','name','INTEGER','ENUM','rrmemory'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x90f2,0x1f3));var _0x290f=function(_0x1bd7eb,_0x3c3167){_0x1bd7eb=_0x1bd7eb-0x0;var _0x205e39=_0x90f2[_0x1bd7eb];return _0x205e39;};'use strict';var Sequelize=require('sequelize');module[_0x290f('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x290f('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x290f('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x290f('0x3')](_0x290f('0x4'),_0x290f('0x5'),_0x290f('0x6'))}};
\ No newline at end of file
index 778d376..a2b2fc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7e2=['sequelize','transaction','addTeams','each','forEach','emit','removeTeams','select','tq.TeamId','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','every','TeamId','all','compact','isEmpty','removeAgents','userOpenchannelQueue:remove','addAgents','spread','userOpenchannelQueue:save','isArray','getAgents','zip-dir','fast-json-patch','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','register','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','get','OpenchannelQueues','then','name','send','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','OpenchannelQueue','includeAll','include','findAll','rows','catch','show','params','rawAttributes','length','merge','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserOpenchannelQueue','User','findAndCountAll','UserId','agent','openchannelPause','updatedAt','createdAt','format','SIP','getTeams','Team','ids','Agents','interface','flatMap'];(function(_0x3d4768,_0x5a378f){var _0x4984d4=function(_0x586905){while(--_0x586905){_0x3d4768['push'](_0x3d4768['shift']());}};_0x4984d4(++_0x5a378f);}(_0xc7e2,0x129));var _0x2c7e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc7e2[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2c7e('0x0'));var jsonpatch=require(_0x2c7e('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2c7e('0x2'));var Mustache=require('mustache');var util=require(_0x2c7e('0x3'));var path=require(_0x2c7e('0x4'));var sox=require('sox');var csv=require(_0x2c7e('0x5'));var ejs=require(_0x2c7e('0x6'));var fs=require('fs');var fs_extra=require(_0x2c7e('0x7'));var _=require(_0x2c7e('0x8'));var squel=require(_0x2c7e('0x9'));var crypto=require('crypto');var jsforce=require(_0x2c7e('0xa'));var deskjs=require(_0x2c7e('0xb'));var toCsv=require('to-csv');var querystring=require(_0x2c7e('0xc'));var Papa=require(_0x2c7e('0xd'));var Redis=require(_0x2c7e('0xe'));var authService=require(_0x2c7e('0xf'));var qs=require(_0x2c7e('0x10'));var as=require(_0x2c7e('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2c7e('0x12'))(_0x2c7e('0x13'));var utils=require('../../config/utils');var config=require(_0x2c7e('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x2c7e('0x15'))['db'];config[_0x2c7e('0x16')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x2c7e('0x17'))(new Redis(config[_0x2c7e('0x16')]));require('./openchannelQueue.socket')[_0x2c7e('0x18')](socket);function respondWithStatusCode(_0x53fe48,_0x57fc83){_0x57fc83=_0x57fc83||0xcc;return function(_0x58557d){if(_0x58557d){return _0x53fe48['sendStatus'](_0x57fc83);}return _0x53fe48[_0x2c7e('0x19')](_0x57fc83)[_0x2c7e('0x1a')]();};}function respondWithResult(_0x3607e4,_0x547c26){_0x547c26=_0x547c26||0xc8;return function(_0x3b1f5c){if(_0x3b1f5c){return _0x3607e4[_0x2c7e('0x19')](_0x547c26)[_0x2c7e('0x1b')](_0x3b1f5c);}};}function respondWithFilteredResult(_0x2b8c59,_0x16ca37){return function(_0x268db1){if(_0x268db1){var _0x25f2d1=typeof _0x16ca37[_0x2c7e('0x1c')]===_0x2c7e('0x1d')&&typeof _0x16ca37[_0x2c7e('0x1e')]==='undefined';var _0xb7192d=_0x268db1[_0x2c7e('0x1f')];var _0x3d77eb=_0x25f2d1?0x0:_0x16ca37[_0x2c7e('0x1c')];var _0x48f030=_0x25f2d1?_0x268db1[_0x2c7e('0x1f')]:_0x16ca37[_0x2c7e('0x1c')]+_0x16ca37[_0x2c7e('0x1e')];var _0xa302b;if(_0x48f030>=_0xb7192d){_0x48f030=_0xb7192d;_0xa302b=0xc8;}else{_0xa302b=0xce;}_0x2b8c59[_0x2c7e('0x19')](_0xa302b);return _0x2b8c59[_0x2c7e('0x20')](_0x2c7e('0x21'),_0x3d77eb+'-'+_0x48f030+'/'+_0xb7192d)[_0x2c7e('0x1b')](_0x268db1);}return null;};}function patchUpdates(_0x402afb){return function(_0x13a9e2){try{jsonpatch[_0x2c7e('0x22')](_0x13a9e2,_0x402afb,!![]);}catch(_0xac11b9){return BPromise['reject'](_0xac11b9);}return _0x13a9e2[_0x2c7e('0x23')]();};}function saveUpdates(_0x15bbfe,_0x26b2db){return function(_0x2d0f36){if(_0x2d0f36){return _0x2d0f36[_0x2c7e('0x24')](_0x15bbfe)['then'](function(_0x169554){return _0x169554;});}return null;};}function removeEntity(_0x10918c,_0x2ba44d){return function(_0x22f0a0){if(_0x22f0a0){return _0x22f0a0[_0x2c7e('0x25')]()['then'](function(){var _0xad8a52=_0x22f0a0[_0x2c7e('0x26')]({'plain':!![]});var _0x1e6585=_0x2c7e('0x27');return db['UserProfileResource'][_0x2c7e('0x25')]({'where':{'type':_0x1e6585,'resourceId':_0xad8a52['id']}})[_0x2c7e('0x28')](function(){return _0x22f0a0;});})[_0x2c7e('0x28')](function(){_0x10918c[_0x2c7e('0x19')](0xcc)[_0x2c7e('0x1a')]();});}};}function handleEntityNotFound(_0x30bd71,_0x41d388){return function(_0x2b96a4){if(!_0x2b96a4){_0x30bd71['sendStatus'](0x194);}return _0x2b96a4;};}function handleError(_0x17ada6,_0x2fcfe3){_0x2fcfe3=_0x2fcfe3||0x1f4;return function(_0x327259){logger['error'](_0x327259['stack']);if(_0x327259['name']){delete _0x327259[_0x2c7e('0x29')];}_0x17ada6['status'](_0x2fcfe3)[_0x2c7e('0x2a')](_0x327259);};}exports[_0x2c7e('0x2b')]=function(_0x5e688a,_0xa8f27a){var _0x30f472={},_0x4d4c9b={},_0x11e39e={'count':0x0,'rows':[]};var _0x239f24=_[_0x2c7e('0x2c')](db['OpenchannelQueue']['rawAttributes'],function(_0xf01614){return{'name':_0xf01614[_0x2c7e('0x2d')],'type':_0xf01614[_0x2c7e('0x2e')][_0x2c7e('0x2f')]};});_0x4d4c9b[_0x2c7e('0x30')]=_[_0x2c7e('0x2c')](_0x239f24,_0x2c7e('0x29'));_0x4d4c9b[_0x2c7e('0x31')]=_[_0x2c7e('0x32')](_0x5e688a[_0x2c7e('0x31')]);_0x4d4c9b[_0x2c7e('0x33')]=_[_0x2c7e('0x34')](_0x4d4c9b[_0x2c7e('0x30')],_0x4d4c9b['query']);_0x30f472[_0x2c7e('0x35')]=_['intersection'](_0x4d4c9b[_0x2c7e('0x30')],qs[_0x2c7e('0x36')](_0x5e688a[_0x2c7e('0x31')][_0x2c7e('0x36')]));_0x30f472[_0x2c7e('0x35')]=_0x30f472[_0x2c7e('0x35')]['length']?_0x30f472[_0x2c7e('0x35')]:_0x4d4c9b['model'];if(!_0x5e688a['query'][_0x2c7e('0x37')](_0x2c7e('0x38'))){_0x30f472[_0x2c7e('0x1e')]=qs[_0x2c7e('0x1e')](_0x5e688a[_0x2c7e('0x31')]['limit']);_0x30f472[_0x2c7e('0x1c')]=qs['offset'](_0x5e688a['query'][_0x2c7e('0x1c')]);}_0x30f472[_0x2c7e('0x39')]=qs['sort'](_0x5e688a[_0x2c7e('0x31')][_0x2c7e('0x3a')]);_0x30f472[_0x2c7e('0x3b')]=qs[_0x2c7e('0x33')](_[_0x2c7e('0x3c')](_0x5e688a['query'],_0x4d4c9b[_0x2c7e('0x33')]),_0x239f24);if(_0x5e688a[_0x2c7e('0x31')][_0x2c7e('0x3d')]){_0x30f472[_0x2c7e('0x3b')]=_['merge'](_0x30f472[_0x2c7e('0x3b')],{'$or':_[_0x2c7e('0x2c')](_0x239f24,function(_0x48dd4c){if(_0x48dd4c[_0x2c7e('0x2e')]!==_0x2c7e('0x3e')){var _0x466595={};_0x466595[_0x48dd4c[_0x2c7e('0x29')]]={'$like':'%'+_0x5e688a[_0x2c7e('0x31')][_0x2c7e('0x3d')]+'%'};return _0x466595;}})});}_0x30f472=_['merge']({},_0x30f472,_0x5e688a[_0x2c7e('0x3f')]);var _0x5c86d7={'where':_0x30f472[_0x2c7e('0x3b')]};return db[_0x2c7e('0x40')][_0x2c7e('0x1f')](_0x5c86d7)[_0x2c7e('0x28')](function(_0x19375e){_0x11e39e[_0x2c7e('0x1f')]=_0x19375e;if(_0x5e688a[_0x2c7e('0x31')][_0x2c7e('0x41')]){_0x30f472[_0x2c7e('0x42')]=[{'all':!![]}];}return db['OpenchannelQueue'][_0x2c7e('0x43')](_0x30f472);})[_0x2c7e('0x28')](function(_0x320424){_0x11e39e[_0x2c7e('0x44')]=_0x320424;return _0x11e39e;})[_0x2c7e('0x28')](respondWithFilteredResult(_0xa8f27a,_0x30f472))[_0x2c7e('0x45')](handleError(_0xa8f27a,null));};exports[_0x2c7e('0x46')]=function(_0x38d011,_0x25124a){var _0x3f697f={'raw':!![],'where':{'id':_0x38d011[_0x2c7e('0x47')]['id']}},_0x1a88da={};_0x1a88da[_0x2c7e('0x30')]=_['keys'](db[_0x2c7e('0x40')][_0x2c7e('0x48')]);_0x1a88da[_0x2c7e('0x31')]=_['keys'](_0x38d011[_0x2c7e('0x31')]);_0x1a88da[_0x2c7e('0x33')]=_[_0x2c7e('0x34')](_0x1a88da[_0x2c7e('0x30')],_0x1a88da[_0x2c7e('0x31')]);_0x3f697f[_0x2c7e('0x35')]=_[_0x2c7e('0x34')](_0x1a88da['model'],qs['fields'](_0x38d011[_0x2c7e('0x31')]['fields']));_0x3f697f['attributes']=_0x3f697f[_0x2c7e('0x35')][_0x2c7e('0x49')]?_0x3f697f[_0x2c7e('0x35')]:_0x1a88da[_0x2c7e('0x30')];if(_0x38d011[_0x2c7e('0x31')][_0x2c7e('0x41')]){_0x3f697f[_0x2c7e('0x42')]=[{'all':!![]}];}_0x3f697f=_[_0x2c7e('0x4a')]({},_0x3f697f,_0x38d011[_0x2c7e('0x3f')]);return db[_0x2c7e('0x40')][_0x2c7e('0x4b')](_0x3f697f)[_0x2c7e('0x28')](handleEntityNotFound(_0x25124a,null))[_0x2c7e('0x28')](respondWithResult(_0x25124a,null))['catch'](handleError(_0x25124a,null));};exports['create']=function(_0x286c07,_0x31afef){return db[_0x2c7e('0x40')][_0x2c7e('0x4c')](_0x286c07[_0x2c7e('0x4d')],{})[_0x2c7e('0x28')](function(_0x50b71c){var _0x3fff08=_0x286c07[_0x2c7e('0x4e')]['get']({'plain':!![]});if(!_0x3fff08)throw new Error(_0x2c7e('0x4f'));if(_0x3fff08[_0x2c7e('0x50')]===_0x2c7e('0x4e')){var _0x1da0d6=_0x50b71c[_0x2c7e('0x26')]({'plain':!![]});var _0x1e4833='OpenchannelQueues';return db[_0x2c7e('0x51')][_0x2c7e('0x4b')]({'where':{'name':_0x1e4833,'userProfileId':_0x3fff08[_0x2c7e('0x52')]},'raw':!![]})[_0x2c7e('0x28')](function(_0x43a06c){if(_0x43a06c&&_0x43a06c['autoAssociation']===0x0){return db[_0x2c7e('0x53')]['create']({'name':_0x1da0d6['name'],'resourceId':_0x1da0d6['id'],'type':_0x43a06c[_0x2c7e('0x29')],'sectionId':_0x43a06c['id']},{})[_0x2c7e('0x28')](function(){return _0x50b71c;});}else{return _0x50b71c;}})[_0x2c7e('0x45')](function(_0x5eef0c){logger[_0x2c7e('0x54')](_0x2c7e('0x55'),_0x5eef0c);throw _0x5eef0c;});}return _0x50b71c;})[_0x2c7e('0x28')](respondWithResult(_0x31afef,0xc9))['catch'](handleError(_0x31afef,null));};exports[_0x2c7e('0x24')]=function(_0x4f9236,_0x217b66){if(_0x4f9236[_0x2c7e('0x4d')]['id']){delete _0x4f9236[_0x2c7e('0x4d')]['id'];}return db[_0x2c7e('0x40')][_0x2c7e('0x4b')]({'where':{'id':_0x4f9236['params']['id']}})[_0x2c7e('0x28')](handleEntityNotFound(_0x217b66,null))[_0x2c7e('0x28')](saveUpdates(_0x4f9236[_0x2c7e('0x4d')],null))[_0x2c7e('0x28')](respondWithResult(_0x217b66,null))['catch'](handleError(_0x217b66,null));};exports[_0x2c7e('0x25')]=function(_0x21abb5,_0x1f576d){return db['OpenchannelQueue'][_0x2c7e('0x4b')]({'where':{'id':_0x21abb5['params']['id']}})['then'](handleEntityNotFound(_0x1f576d,null))[_0x2c7e('0x28')](removeEntity(_0x1f576d,null))[_0x2c7e('0x45')](handleError(_0x1f576d,null));};exports[_0x2c7e('0x56')]=function(_0x1d2bc0,_0x2896ac){return db[_0x2c7e('0x40')]['describe']()[_0x2c7e('0x28')](respondWithResult(_0x2896ac,null))['catch'](handleError(_0x2896ac,null));};exports[_0x2c7e('0x57')]=function(_0x222fd2,_0x3ca454,_0x575c4a){var _0x3964a3={'raw':!![],'where':{}},_0x5f0619={},_0x5209bd;return db[_0x2c7e('0x40')][_0x2c7e('0x58')]({'where':{'id':_0x222fd2['params']['id']}})[_0x2c7e('0x28')](handleEntityNotFound(_0x3ca454,null))[_0x2c7e('0x28')](function(_0x479920){if(_0x479920){_0x5209bd=_0x479920['get']({'plain':!![]});_0x5f0619[_0x2c7e('0x30')]=_[_0x2c7e('0x32')](db['UserOpenchannelQueue'][_0x2c7e('0x48')]);_0x5f0619[_0x2c7e('0x31')]=_[_0x2c7e('0x32')](_0x222fd2[_0x2c7e('0x31')]);_0x5f0619[_0x2c7e('0x33')]=_['intersection'](_0x5f0619['model'],_0x5f0619[_0x2c7e('0x31')]);_0x3964a3[_0x2c7e('0x35')]=_[_0x2c7e('0x34')](_0x5f0619[_0x2c7e('0x30')],qs['fields'](_0x222fd2[_0x2c7e('0x31')]['fields']));_0x3964a3[_0x2c7e('0x35')]=_0x3964a3[_0x2c7e('0x35')][_0x2c7e('0x49')]?_0x3964a3[_0x2c7e('0x35')]:_0x5f0619[_0x2c7e('0x30')];if(!_0x222fd2['query'][_0x2c7e('0x37')](_0x2c7e('0x38'))){_0x3964a3[_0x2c7e('0x1e')]=qs[_0x2c7e('0x1e')](_0x222fd2[_0x2c7e('0x31')][_0x2c7e('0x1e')]);_0x3964a3[_0x2c7e('0x1c')]=qs[_0x2c7e('0x1c')](_0x222fd2[_0x2c7e('0x31')]['offset']);}_0x3964a3[_0x2c7e('0x39')]=qs[_0x2c7e('0x3a')](_0x222fd2[_0x2c7e('0x31')][_0x2c7e('0x3a')]);_0x3964a3[_0x2c7e('0x3b')]=qs[_0x2c7e('0x33')](_[_0x2c7e('0x3c')](_0x222fd2[_0x2c7e('0x31')],_0x5f0619[_0x2c7e('0x33')]));_0x3964a3[_0x2c7e('0x3b')]['OpenchannelQueueId']=_0x479920['id'];if(_0x222fd2[_0x2c7e('0x31')][_0x2c7e('0x3d')]){_0x3964a3[_0x2c7e('0x3b')]=_['merge'](_0x3964a3[_0x2c7e('0x3b')],{'$or':_[_0x2c7e('0x2c')](_0x3964a3[_0x2c7e('0x35')],function(_0x11ba38){var _0x1f7afa={};_0x1f7afa[_0x11ba38]={'$like':'%'+_0x222fd2[_0x2c7e('0x31')][_0x2c7e('0x3d')]+'%'};return _0x1f7afa;})});}_0x3964a3=_[_0x2c7e('0x4a')]({},_0x3964a3,_0x222fd2[_0x2c7e('0x3f')]);return db[_0x2c7e('0x59')]['findAll'](_0x3964a3);}})['then'](function(_0x3a39f0){if(_0x3a39f0){return db[_0x2c7e('0x5a')][_0x2c7e('0x5b')]({'where':{'id':_['map'](_0x3a39f0,_0x2c7e('0x5c')),'role':_0x2c7e('0x5d')},'attributes':['id',_0x2c7e('0x29'),_0x2c7e('0x5e'),_0x2c7e('0x5f'),_0x2c7e('0x60')]});}})[_0x2c7e('0x28')](function(_0x574520){if(_0x574520){return{'count':_0x574520[_0x2c7e('0x1f')],'rows':_[_0x2c7e('0x2c')](_0x574520[_0x2c7e('0x44')],function(_0x1eeb97){return{'membername':_0x1eeb97[_0x2c7e('0x29')],'UserId':_0x1eeb97['id'],'queue_name':_0x5209bd[_0x2c7e('0x29')],'OpenchannelQueueId':_0x5209bd['id'],'interface':util[_0x2c7e('0x61')]('%s/%s',_0x2c7e('0x62'),_0x1eeb97[_0x2c7e('0x29')]),'penalty':0x0,'paused':_0x1eeb97[_0x2c7e('0x5e')],'createdAt':_0x1eeb97[_0x2c7e('0x60')],'updatedAt':_0x1eeb97['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x2c7e('0x28')](respondWithFilteredResult(_0x3ca454,_0x3964a3))[_0x2c7e('0x45')](handleError(_0x3ca454,null));};exports[_0x2c7e('0x63')]=function(_0x283d83,_0x4ab217,_0x23ac2d){var _0x4bb294={};var _0x1d5855={};var _0x16bcd7;var _0x530705;return db[_0x2c7e('0x40')]['findOne']({'where':{'id':_0x283d83[_0x2c7e('0x47')]['id']}})[_0x2c7e('0x28')](handleEntityNotFound(_0x4ab217,null))['then'](function(_0x19e383){if(_0x19e383){_0x16bcd7=_0x19e383;_0x1d5855[_0x2c7e('0x30')]=_[_0x2c7e('0x32')](db[_0x2c7e('0x64')][_0x2c7e('0x48')]);_0x1d5855[_0x2c7e('0x31')]=_[_0x2c7e('0x32')](_0x283d83[_0x2c7e('0x31')]);_0x1d5855[_0x2c7e('0x33')]=_[_0x2c7e('0x34')](_0x1d5855[_0x2c7e('0x30')],_0x1d5855[_0x2c7e('0x31')]);_0x4bb294['attributes']=_[_0x2c7e('0x34')](_0x1d5855['model'],qs[_0x2c7e('0x36')](_0x283d83['query'][_0x2c7e('0x36')]));_0x4bb294[_0x2c7e('0x35')]=_0x4bb294['attributes'][_0x2c7e('0x49')]?_0x4bb294['attributes']:_0x1d5855[_0x2c7e('0x30')];_0x4bb294['order']=qs['sort'](_0x283d83['query'][_0x2c7e('0x3a')]);_0x4bb294[_0x2c7e('0x3b')]=qs['filters'](_['pick'](_0x283d83[_0x2c7e('0x31')],_0x1d5855['filters']));if(_0x283d83[_0x2c7e('0x31')][_0x2c7e('0x3d')]){_0x4bb294[_0x2c7e('0x3b')]=_['merge'](_0x4bb294['where'],{'$or':_[_0x2c7e('0x2c')](_0x4bb294[_0x2c7e('0x35')],function(_0x78a16c){var _0x211d46={};_0x211d46[_0x78a16c]={'$like':'%'+_0x283d83['query'][_0x2c7e('0x3d')]+'%'};return _0x211d46;})});}_0x4bb294=_[_0x2c7e('0x4a')]({},_0x4bb294,_0x283d83[_0x2c7e('0x3f')]);return _0x16bcd7['getTeams'](_0x4bb294);}})['then'](function(_0x241378){if(_0x241378){_0x530705=_0x241378[_0x2c7e('0x49')];if(!_0x283d83[_0x2c7e('0x31')]['hasOwnProperty'](_0x2c7e('0x38'))){_0x4bb294['limit']=qs[_0x2c7e('0x1e')](_0x283d83[_0x2c7e('0x31')][_0x2c7e('0x1e')]);_0x4bb294[_0x2c7e('0x1c')]=qs[_0x2c7e('0x1c')](_0x283d83[_0x2c7e('0x31')][_0x2c7e('0x1c')]);}return _0x16bcd7[_0x2c7e('0x63')](_0x4bb294);}})[_0x2c7e('0x28')](function(_0x31c614){if(_0x31c614){return _0x31c614?{'count':_0x530705,'rows':_0x31c614}:null;}})[_0x2c7e('0x28')](respondWithResult(_0x4ab217,null))[_0x2c7e('0x45')](handleError(_0x4ab217,null));};exports['addTeams']=function(_0x5bb257,_0x564965,_0x5e7921){var _0x1fdd50=_0x5bb257[_0x2c7e('0x4d')][_0x2c7e('0x65')];return db['Team'][_0x2c7e('0x43')]({'where':{'id':_0x1fdd50},'attributes':['id'],'include':[{'model':db[_0x2c7e('0x5a')],'as':_0x2c7e('0x66'),'attributes':['id','name','online','voicePause',_0x2c7e('0x67')],'raw':!![]}]})['then'](function(_0x2fa253){if(_0x2fa253){var _0x3ba34e=_[_0x2c7e('0x68')](_0x2fa253,function(_0xd5f5bf){var _0x51133b=_0xd5f5bf['get']({'plain':!![]});return _0x51133b[_0x2c7e('0x66')];});return db[_0x2c7e('0x40')][_0x2c7e('0x4b')]({'where':{'id':_0x5bb257['params']['id']}})[_0x2c7e('0x28')](function(_0x4213d1){return db[_0x2c7e('0x69')][_0x2c7e('0x6a')](function(_0xa2420b){return _0x4213d1[_0x2c7e('0x6b')](_0x1fdd50,{'transaction':_0xa2420b})['then'](function(){return BPromise[_0x2c7e('0x6c')](_0x3ba34e,function(_0x234b82){return db[_0x2c7e('0x59')]['findOrCreate']({'where':{'UserId':_0x234b82['id'],'OpenchannelQueueId':_0x5bb257[_0x2c7e('0x47')]['id']},'transaction':_0xa2420b});});})['then'](function(){_0x3ba34e[_0x2c7e('0x6d')](function(_0x26bb3e){socket[_0x2c7e('0x6e')]('userOpenchannelQueue:save',{'UserId':_0x26bb3e['id'],'OpenchannelQueueId':_0x4213d1['id']});});});});});}})['then'](respondWithStatusCode(_0x564965,null))[_0x2c7e('0x45')](handleError(_0x564965,null));};exports[_0x2c7e('0x6f')]=function(_0x15356,_0x25b195,_0x561e52){return db[_0x2c7e('0x64')][_0x2c7e('0x43')]({'where':{'id':_0x15356['query'][_0x2c7e('0x65')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x2c7e('0x66'),'attributes':['id'],'raw':!![]}]})[_0x2c7e('0x28')](handleEntityNotFound(_0x25b195,null))[_0x2c7e('0x28')](function(_0x1002fb){var _0x193128=_[_0x2c7e('0x2c')](_0x1002fb,'id');var _0x2bc8e9=[];var _0xb5cf42=[];var _0x33d29a=squel[_0x2c7e('0x70')]();_0x33d29a['field'](_0x2c7e('0x71'))['from'](_0x2c7e('0x72'),'tq')[_0x2c7e('0x73')](_0x2c7e('0x74'),'ut',_0x2c7e('0x75'))[_0x2c7e('0x3b')](_0x2c7e('0x76'),_0x15356[_0x2c7e('0x47')]['id']);for(var _0x50644d=0x0;_0x50644d<_0x1002fb[_0x2c7e('0x49')];_0x50644d+=0x1){let _0x3b610d=_0x1002fb[_0x50644d];for(var _0x1f3f5a=0x0;_0x1f3f5a<_0x3b610d[_0x2c7e('0x66')][_0x2c7e('0x49')];_0x1f3f5a+=0x1){let _0x336237=_0x3b610d[_0x2c7e('0x66')][_0x1f3f5a];var _0x59bf21=_0x33d29a[_0x2c7e('0x77')]();_0x59bf21[_0x2c7e('0x3b')](_0x2c7e('0x78'),_0x336237['id']);_0xb5cf42['push'](db['sequelize'][_0x2c7e('0x31')](_0x59bf21[_0x2c7e('0x79')](),{'type':db[_0x2c7e('0x69')]['QueryTypes']['SELECT']})[_0x2c7e('0x28')](function(_0x432b08){if(_0x432b08[_0x2c7e('0x49')]===0x1){return _0x336237['id'];}else{var _0x32a9fd=_[_0x2c7e('0x7a')](_[_0x2c7e('0x2c')](_0x432b08,_0x2c7e('0x7b')),function(_0x3c21fb){return _['includes'](_0x193128,_0x3c21fb);});if(_0x32a9fd){return _0x336237['id'];}}}));}}return BPromise[_0x2c7e('0x7c')](_0xb5cf42)[_0x2c7e('0x28')](function(_0x4dc5b8){_0x2bc8e9=_(_0x2bc8e9)['union'](_0x4dc5b8)[_0x2c7e('0x7d')]()['value']();return db[_0x2c7e('0x40')][_0x2c7e('0x4b')]({'where':{'id':_0x15356[_0x2c7e('0x47')]['id']}})['then'](function(_0x599773){return db['sequelize'][_0x2c7e('0x6a')](function(_0x1361e1){return _0x599773[_0x2c7e('0x6f')](_0x15356['query']['ids'],{'transaction':_0x1361e1})[_0x2c7e('0x28')](function(){if(!_[_0x2c7e('0x7e')](_0x2bc8e9)){return _0x599773[_0x2c7e('0x7f')](_0x2bc8e9,{'transaction':_0x1361e1});}})[_0x2c7e('0x28')](function(){_0x2bc8e9[_0x2c7e('0x6d')](function(_0x2ad764){socket[_0x2c7e('0x6e')](_0x2c7e('0x80'),{'UserId':_0x2ad764,'OpenchannelQueueId':_0x599773['id']});});});});});});})[_0x2c7e('0x28')](respondWithStatusCode(_0x25b195,null))[_0x2c7e('0x45')](handleError(_0x25b195,null));};exports['addAgents']=function(_0x44a694,_0x4f4600,_0x3f29ee){return db['OpenchannelQueue']['find']({'where':{'id':_0x44a694['params']['id']}})['then'](handleEntityNotFound(_0x4f4600,null))[_0x2c7e('0x28')](function(_0x4e8adf){if(_0x4e8adf){return _0x4e8adf[_0x2c7e('0x81')](_0x44a694[_0x2c7e('0x4d')][_0x2c7e('0x65')],_['omit'](_0x44a694['body'],[_0x2c7e('0x65'),'id'])||{})[_0x2c7e('0x82')](function(_0x56615a){for(var _0x1bfa9e=0x0;_0x1bfa9e<_0x44a694[_0x2c7e('0x4d')][_0x2c7e('0x65')][_0x2c7e('0x49')];_0x1bfa9e+=0x1){socket[_0x2c7e('0x6e')](_0x2c7e('0x83'),{'UserId':Number(_0x44a694[_0x2c7e('0x4d')][_0x2c7e('0x65')][_0x1bfa9e]),'OpenchannelQueueId':Number(_0x44a694[_0x2c7e('0x47')]['id'])});}return _0x56615a;});}})[_0x2c7e('0x28')](respondWithResult(_0x4f4600,null))[_0x2c7e('0x45')](handleError(_0x4f4600,null));};exports[_0x2c7e('0x7f')]=function(_0x3d6125,_0x4efd5d,_0x4faa31){return db['OpenchannelQueue'][_0x2c7e('0x4b')]({'where':{'id':_0x3d6125[_0x2c7e('0x47')]['id']}})[_0x2c7e('0x28')](handleEntityNotFound(_0x4efd5d,null))[_0x2c7e('0x28')](function(_0xa473b7){if(_0xa473b7){return _0xa473b7[_0x2c7e('0x7f')](_0x3d6125['query'][_0x2c7e('0x65')])[_0x2c7e('0x28')](function(){if(_[_0x2c7e('0x84')](_0x3d6125[_0x2c7e('0x31')][_0x2c7e('0x65')])){for(var _0x33ed1e=0x0;_0x33ed1e<_0x3d6125['query']['ids'][_0x2c7e('0x49')];_0x33ed1e+=0x1){socket[_0x2c7e('0x6e')](_0x2c7e('0x80'),{'UserId':Number(_0x3d6125[_0x2c7e('0x31')][_0x2c7e('0x65')][_0x33ed1e]),'OpenchannelQueueId':Number(_0x3d6125['params']['id'])});}}else{socket['emit']('userOpenchannelQueue:remove',{'UserId':Number(_0x3d6125['query'][_0x2c7e('0x65')]),'OpenchannelQueueId':Number(_0x3d6125['params']['id'])});}});}})['then'](respondWithStatusCode(_0x4efd5d,null))['catch'](handleError(_0x4efd5d,null));};exports[_0x2c7e('0x85')]=function(_0x577cd2,_0x123dfe,_0x4d4ab2){var _0x45b7e5={};var _0x229cdf={};var _0x31f2ef;var _0x413e7c;return db['OpenchannelQueue'][_0x2c7e('0x58')]({'where':{'id':_0x577cd2[_0x2c7e('0x47')]['id']}})[_0x2c7e('0x28')](handleEntityNotFound(_0x123dfe,null))[_0x2c7e('0x28')](function(_0xa84b35){if(_0xa84b35){_0x31f2ef=_0xa84b35;_0x229cdf['model']=_[_0x2c7e('0x32')](db[_0x2c7e('0x5a')][_0x2c7e('0x48')]);_0x229cdf[_0x2c7e('0x31')]=_[_0x2c7e('0x32')](_0x577cd2[_0x2c7e('0x31')]);_0x229cdf[_0x2c7e('0x33')]=_[_0x2c7e('0x34')](_0x229cdf[_0x2c7e('0x30')],_0x229cdf[_0x2c7e('0x31')]);_0x45b7e5[_0x2c7e('0x35')]=_['intersection'](_0x229cdf[_0x2c7e('0x30')],qs['fields'](_0x577cd2[_0x2c7e('0x31')][_0x2c7e('0x36')]));_0x45b7e5[_0x2c7e('0x35')]=_0x45b7e5[_0x2c7e('0x35')][_0x2c7e('0x49')]?_0x45b7e5[_0x2c7e('0x35')]:_0x229cdf[_0x2c7e('0x30')];_0x45b7e5[_0x2c7e('0x39')]=qs[_0x2c7e('0x3a')](_0x577cd2['query']['sort']);_0x45b7e5['where']=qs['filters'](_[_0x2c7e('0x3c')](_0x577cd2['query'],_0x229cdf[_0x2c7e('0x33')]));if(_0x577cd2['query'][_0x2c7e('0x3d')]){_0x45b7e5[_0x2c7e('0x3b')]=_['merge'](_0x45b7e5[_0x2c7e('0x3b')],{'$or':_[_0x2c7e('0x2c')](_0x45b7e5[_0x2c7e('0x35')],function(_0x214e23){var _0x2ba8b2={};_0x2ba8b2[_0x214e23]={'$like':'%'+_0x577cd2['query'][_0x2c7e('0x3d')]+'%'};return _0x2ba8b2;})});}_0x45b7e5=_[_0x2c7e('0x4a')]({},_0x45b7e5,_0x577cd2[_0x2c7e('0x3f')]);return _0x31f2ef['getAgents'](_0x45b7e5);}})['then'](function(_0x4fe3cb){if(_0x4fe3cb){_0x413e7c=_0x4fe3cb[_0x2c7e('0x49')];if(!_0x577cd2[_0x2c7e('0x31')][_0x2c7e('0x37')](_0x2c7e('0x38'))){_0x45b7e5[_0x2c7e('0x1e')]=qs[_0x2c7e('0x1e')](_0x577cd2['query'][_0x2c7e('0x1e')]);_0x45b7e5[_0x2c7e('0x1c')]=qs[_0x2c7e('0x1c')](_0x577cd2['query'][_0x2c7e('0x1c')]);}return _0x31f2ef[_0x2c7e('0x85')](_0x45b7e5);}})[_0x2c7e('0x28')](function(_0x1f6696){if(_0x1f6696){return _0x1f6696?{'count':_0x413e7c,'rows':_0x1f6696}:null;}})['then'](respondWithResult(_0x123dfe,null))[_0x2c7e('0x45')](handleError(_0x123dfe,null));};
\ No newline at end of file
+var _0xcd5c=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','OpenchannelQueues','UserProfileResource','error','name','send','index','map','OpenchannelQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','catch','params','includeAll','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','describe','getMembers','findOne','UserOpenchannelQueue','OpenchannelQueueId','findAndCountAll','UserId','agent','openchannelPause','rows','%s/%s','SIP','createdAt','updatedAt','getTeams','Team','addTeams','User','Agents','voicePause','interface','sequelize','transaction','each','forEach','userOpenchannelQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_openchannel_queues','join','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','SELECT','every','TeamId','includes','union','compact','value','isEmpty','removeAgents','emit','userOpenchannelQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0x533c43,_0x221177){var _0x4b8293=function(_0x1b7cf0){while(--_0x1b7cf0){_0x533c43['push'](_0x533c43['shift']());}};_0x4b8293(++_0x221177);}(_0xcd5c,0x19a));var _0xccd5=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xcd5c[_0x4565bf];return _0x5610ba;};'use strict';var emlformat=require(_0xccd5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xccd5('0x1'));var jsonpatch=require(_0xccd5('0x2'));var rp=require('request-promise');var moment=require(_0xccd5('0x3'));var BPromise=require(_0xccd5('0x4'));var Mustache=require(_0xccd5('0x5'));var util=require(_0xccd5('0x6'));var path=require(_0xccd5('0x7'));var sox=require(_0xccd5('0x8'));var csv=require(_0xccd5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xccd5('0xa'));var _=require(_0xccd5('0xb'));var squel=require('squel');var crypto=require(_0xccd5('0xc'));var jsforce=require(_0xccd5('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xccd5('0x9'));var querystring=require(_0xccd5('0xe'));var Papa=require(_0xccd5('0xf'));var Redis=require(_0xccd5('0x10'));var authService=require(_0xccd5('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xccd5('0x12'));var hardwareService=require(_0xccd5('0x13'));var logger=require(_0xccd5('0x14'))(_0xccd5('0x15'));var utils=require(_0xccd5('0x16'));var config=require(_0xccd5('0x17'));var licenseUtil=require(_0xccd5('0x18'));var db=require(_0xccd5('0x19'))['db'];config[_0xccd5('0x1a')]=_[_0xccd5('0x1b')](config[_0xccd5('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0xccd5('0x1c'))(new Redis(config[_0xccd5('0x1a')]));require('./openchannelQueue.socket')[_0xccd5('0x1d')](socket);function respondWithStatusCode(_0xfb60ee,_0x5405fe){_0x5405fe=_0x5405fe||0xcc;return function(_0x59e09f){if(_0x59e09f){return _0xfb60ee[_0xccd5('0x1e')](_0x5405fe);}return _0xfb60ee[_0xccd5('0x1f')](_0x5405fe)[_0xccd5('0x20')]();};}function respondWithResult(_0x15e839,_0x53f463){_0x53f463=_0x53f463||0xc8;return function(_0xda73d1){if(_0xda73d1){return _0x15e839['status'](_0x53f463)[_0xccd5('0x21')](_0xda73d1);}};}function respondWithFilteredResult(_0x2b8ead,_0x41e36c){return function(_0x59680d){if(_0x59680d){var _0x1f1b92=typeof _0x41e36c[_0xccd5('0x22')]===_0xccd5('0x23')&&typeof _0x41e36c[_0xccd5('0x24')]===_0xccd5('0x23');var _0x6e1897=_0x59680d[_0xccd5('0x25')];var _0x2c22ad=_0x1f1b92?0x0:_0x41e36c[_0xccd5('0x22')];var _0x4b82fe=_0x1f1b92?_0x59680d['count']:_0x41e36c[_0xccd5('0x22')]+_0x41e36c['limit'];var _0x2fc767;if(_0x4b82fe>=_0x6e1897){_0x4b82fe=_0x6e1897;_0x2fc767=0xc8;}else{_0x2fc767=0xce;}_0x2b8ead[_0xccd5('0x1f')](_0x2fc767);return _0x2b8ead['set'](_0xccd5('0x26'),_0x2c22ad+'-'+_0x4b82fe+'/'+_0x6e1897)[_0xccd5('0x21')](_0x59680d);}return null;};}function patchUpdates(_0x681b13){return function(_0xe117d6){try{jsonpatch[_0xccd5('0x27')](_0xe117d6,_0x681b13,!![]);}catch(_0x251d64){return BPromise[_0xccd5('0x28')](_0x251d64);}return _0xe117d6[_0xccd5('0x29')]();};}function saveUpdates(_0x2b6a21,_0x2fb1bc){return function(_0x596fc9){if(_0x596fc9){return _0x596fc9[_0xccd5('0x2a')](_0x2b6a21)[_0xccd5('0x2b')](function(_0x138ef2){return _0x138ef2;});}return null;};}function removeEntity(_0x2e4c27,_0x262690){return function(_0x21c42f){if(_0x21c42f){return _0x21c42f[_0xccd5('0x2c')]()[_0xccd5('0x2b')](function(){var _0x5ab096=_0x21c42f['get']({'plain':!![]});var _0xd22fe8=_0xccd5('0x2d');return db[_0xccd5('0x2e')][_0xccd5('0x2c')]({'where':{'type':_0xd22fe8,'resourceId':_0x5ab096['id']}})[_0xccd5('0x2b')](function(){return _0x21c42f;});})[_0xccd5('0x2b')](function(){_0x2e4c27['status'](0xcc)[_0xccd5('0x20')]();});}};}function handleEntityNotFound(_0x242975,_0x123067){return function(_0x52f5b2){if(!_0x52f5b2){_0x242975[_0xccd5('0x1e')](0x194);}return _0x52f5b2;};}function handleError(_0x2714a9,_0x189dd3){_0x189dd3=_0x189dd3||0x1f4;return function(_0x53ce3c){logger[_0xccd5('0x2f')](_0x53ce3c['stack']);if(_0x53ce3c['name']){delete _0x53ce3c[_0xccd5('0x30')];}_0x2714a9[_0xccd5('0x1f')](_0x189dd3)[_0xccd5('0x31')](_0x53ce3c);};}exports[_0xccd5('0x32')]=function(_0x10cea9,_0x28a7e0){var _0x4c2612={},_0x45e227={},_0x4d1e3c={'count':0x0,'rows':[]};var _0x42c43d=_[_0xccd5('0x33')](db[_0xccd5('0x34')][_0xccd5('0x35')],function(_0x36cacc){return{'name':_0x36cacc[_0xccd5('0x36')],'type':_0x36cacc[_0xccd5('0x37')][_0xccd5('0x38')]};});_0x45e227[_0xccd5('0x39')]=_[_0xccd5('0x33')](_0x42c43d,_0xccd5('0x30'));_0x45e227[_0xccd5('0x3a')]=_[_0xccd5('0x3b')](_0x10cea9[_0xccd5('0x3a')]);_0x45e227[_0xccd5('0x3c')]=_[_0xccd5('0x3d')](_0x45e227[_0xccd5('0x39')],_0x45e227['query']);_0x4c2612[_0xccd5('0x3e')]=_['intersection'](_0x45e227['model'],qs[_0xccd5('0x3f')](_0x10cea9[_0xccd5('0x3a')]['fields']));_0x4c2612[_0xccd5('0x3e')]=_0x4c2612[_0xccd5('0x3e')][_0xccd5('0x40')]?_0x4c2612['attributes']:_0x45e227[_0xccd5('0x39')];if(!_0x10cea9[_0xccd5('0x3a')][_0xccd5('0x41')](_0xccd5('0x42'))){_0x4c2612[_0xccd5('0x24')]=qs['limit'](_0x10cea9[_0xccd5('0x3a')][_0xccd5('0x24')]);_0x4c2612['offset']=qs[_0xccd5('0x22')](_0x10cea9[_0xccd5('0x3a')][_0xccd5('0x22')]);}_0x4c2612[_0xccd5('0x43')]=qs[_0xccd5('0x44')](_0x10cea9['query'][_0xccd5('0x44')]);_0x4c2612[_0xccd5('0x45')]=qs[_0xccd5('0x3c')](_[_0xccd5('0x46')](_0x10cea9[_0xccd5('0x3a')],_0x45e227['filters']),_0x42c43d);if(_0x10cea9[_0xccd5('0x3a')][_0xccd5('0x47')]){_0x4c2612['where']=_['merge'](_0x4c2612[_0xccd5('0x45')],{'$or':_[_0xccd5('0x33')](_0x42c43d,function(_0x1a0951){if(_0x1a0951[_0xccd5('0x37')]!==_0xccd5('0x48')){var _0xb74ee7={};_0xb74ee7[_0x1a0951[_0xccd5('0x30')]]={'$like':'%'+_0x10cea9[_0xccd5('0x3a')][_0xccd5('0x47')]+'%'};return _0xb74ee7;}})});}_0x4c2612=_[_0xccd5('0x49')]({},_0x4c2612,_0x10cea9[_0xccd5('0x4a')]);var _0x4dca71={'where':_0x4c2612[_0xccd5('0x45')]};return db[_0xccd5('0x34')][_0xccd5('0x25')](_0x4dca71)[_0xccd5('0x2b')](function(_0x2d2476){_0x4d1e3c[_0xccd5('0x25')]=_0x2d2476;if(_0x10cea9[_0xccd5('0x3a')]['includeAll']){_0x4c2612[_0xccd5('0x4b')]=[{'all':!![]}];}return db[_0xccd5('0x34')][_0xccd5('0x4c')](_0x4c2612);})[_0xccd5('0x2b')](function(_0x141aa0){_0x4d1e3c['rows']=_0x141aa0;return _0x4d1e3c;})['then'](respondWithFilteredResult(_0x28a7e0,_0x4c2612))[_0xccd5('0x4d')](handleError(_0x28a7e0,null));};exports['show']=function(_0x2ef0a1,_0xa15abb){var _0x549da0={'raw':!![],'where':{'id':_0x2ef0a1[_0xccd5('0x4e')]['id']}},_0x89df5d={};_0x89df5d['model']=_['keys'](db[_0xccd5('0x34')][_0xccd5('0x35')]);_0x89df5d[_0xccd5('0x3a')]=_[_0xccd5('0x3b')](_0x2ef0a1['query']);_0x89df5d[_0xccd5('0x3c')]=_[_0xccd5('0x3d')](_0x89df5d['model'],_0x89df5d[_0xccd5('0x3a')]);_0x549da0['attributes']=_[_0xccd5('0x3d')](_0x89df5d['model'],qs[_0xccd5('0x3f')](_0x2ef0a1[_0xccd5('0x3a')][_0xccd5('0x3f')]));_0x549da0[_0xccd5('0x3e')]=_0x549da0[_0xccd5('0x3e')][_0xccd5('0x40')]?_0x549da0[_0xccd5('0x3e')]:_0x89df5d[_0xccd5('0x39')];if(_0x2ef0a1[_0xccd5('0x3a')][_0xccd5('0x4f')]){_0x549da0['include']=[{'all':!![]}];}_0x549da0=_['merge']({},_0x549da0,_0x2ef0a1[_0xccd5('0x4a')]);return db[_0xccd5('0x34')][_0xccd5('0x50')](_0x549da0)[_0xccd5('0x2b')](handleEntityNotFound(_0xa15abb,null))[_0xccd5('0x2b')](respondWithResult(_0xa15abb,null))[_0xccd5('0x4d')](handleError(_0xa15abb,null));};exports[_0xccd5('0x51')]=function(_0x462d18,_0x2908e8){return db[_0xccd5('0x34')][_0xccd5('0x51')](_0x462d18[_0xccd5('0x52')],{})[_0xccd5('0x2b')](function(_0x1935b6){var _0xd3f947=_0x462d18[_0xccd5('0x53')][_0xccd5('0x54')]({'plain':!![]});if(!_0xd3f947)throw new Error(_0xccd5('0x55'));if(_0xd3f947[_0xccd5('0x56')]===_0xccd5('0x53')){var _0x1ea938=_0x1935b6[_0xccd5('0x54')]({'plain':!![]});var _0x52e21c=_0xccd5('0x2d');return db['UserProfileSection'][_0xccd5('0x50')]({'where':{'name':_0x52e21c,'userProfileId':_0xd3f947['userProfileId']},'raw':!![]})[_0xccd5('0x2b')](function(_0x3c9c23){if(_0x3c9c23&&_0x3c9c23[_0xccd5('0x57')]===0x0){return db[_0xccd5('0x2e')][_0xccd5('0x51')]({'name':_0x1ea938['name'],'resourceId':_0x1ea938['id'],'type':_0x3c9c23[_0xccd5('0x30')],'sectionId':_0x3c9c23['id']},{})['then'](function(){return _0x1935b6;});}else{return _0x1935b6;}})['catch'](function(_0x2529fc){logger[_0xccd5('0x2f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2529fc);throw _0x2529fc;});}return _0x1935b6;})['then'](respondWithResult(_0x2908e8,0xc9))[_0xccd5('0x4d')](handleError(_0x2908e8,null));};exports['update']=function(_0x555952,_0x190f48){if(_0x555952[_0xccd5('0x52')]['id']){delete _0x555952[_0xccd5('0x52')]['id'];}return db[_0xccd5('0x34')][_0xccd5('0x50')]({'where':{'id':_0x555952['params']['id']}})[_0xccd5('0x2b')](handleEntityNotFound(_0x190f48,null))[_0xccd5('0x2b')](saveUpdates(_0x555952[_0xccd5('0x52')],null))[_0xccd5('0x2b')](respondWithResult(_0x190f48,null))[_0xccd5('0x4d')](handleError(_0x190f48,null));};exports['destroy']=function(_0x21b9ac,_0x46bf89){return db[_0xccd5('0x34')][_0xccd5('0x50')]({'where':{'id':_0x21b9ac[_0xccd5('0x4e')]['id']}})[_0xccd5('0x2b')](handleEntityNotFound(_0x46bf89,null))[_0xccd5('0x2b')](removeEntity(_0x46bf89,null))['catch'](handleError(_0x46bf89,null));};exports[_0xccd5('0x58')]=function(_0x35ce9f,_0x56f1b6){return db['OpenchannelQueue'][_0xccd5('0x58')]()[_0xccd5('0x2b')](respondWithResult(_0x56f1b6,null))[_0xccd5('0x4d')](handleError(_0x56f1b6,null));};exports[_0xccd5('0x59')]=function(_0x2eedc4,_0x47f75f,_0x477089){var _0x1a84ee={'raw':!![],'where':{}},_0x2809da={},_0x4f3228;return db[_0xccd5('0x34')][_0xccd5('0x5a')]({'where':{'id':_0x2eedc4[_0xccd5('0x4e')]['id']}})[_0xccd5('0x2b')](handleEntityNotFound(_0x47f75f,null))[_0xccd5('0x2b')](function(_0x1dffc9){if(_0x1dffc9){_0x4f3228=_0x1dffc9[_0xccd5('0x54')]({'plain':!![]});_0x2809da[_0xccd5('0x39')]=_[_0xccd5('0x3b')](db[_0xccd5('0x5b')]['rawAttributes']);_0x2809da[_0xccd5('0x3a')]=_[_0xccd5('0x3b')](_0x2eedc4[_0xccd5('0x3a')]);_0x2809da['filters']=_[_0xccd5('0x3d')](_0x2809da[_0xccd5('0x39')],_0x2809da[_0xccd5('0x3a')]);_0x1a84ee['attributes']=_[_0xccd5('0x3d')](_0x2809da[_0xccd5('0x39')],qs['fields'](_0x2eedc4[_0xccd5('0x3a')]['fields']));_0x1a84ee[_0xccd5('0x3e')]=_0x1a84ee[_0xccd5('0x3e')][_0xccd5('0x40')]?_0x1a84ee[_0xccd5('0x3e')]:_0x2809da[_0xccd5('0x39')];if(!_0x2eedc4[_0xccd5('0x3a')][_0xccd5('0x41')](_0xccd5('0x42'))){_0x1a84ee[_0xccd5('0x24')]=qs[_0xccd5('0x24')](_0x2eedc4[_0xccd5('0x3a')][_0xccd5('0x24')]);_0x1a84ee[_0xccd5('0x22')]=qs['offset'](_0x2eedc4['query'][_0xccd5('0x22')]);}_0x1a84ee[_0xccd5('0x43')]=qs[_0xccd5('0x44')](_0x2eedc4['query']['sort']);_0x1a84ee[_0xccd5('0x45')]=qs[_0xccd5('0x3c')](_['pick'](_0x2eedc4[_0xccd5('0x3a')],_0x2809da[_0xccd5('0x3c')]));_0x1a84ee['where'][_0xccd5('0x5c')]=_0x1dffc9['id'];if(_0x2eedc4[_0xccd5('0x3a')][_0xccd5('0x47')]){_0x1a84ee[_0xccd5('0x45')]=_[_0xccd5('0x49')](_0x1a84ee[_0xccd5('0x45')],{'$or':_[_0xccd5('0x33')](_0x1a84ee[_0xccd5('0x3e')],function(_0x5eadad){var _0x1fe318={};_0x1fe318[_0x5eadad]={'$like':'%'+_0x2eedc4[_0xccd5('0x3a')][_0xccd5('0x47')]+'%'};return _0x1fe318;})});}_0x1a84ee=_[_0xccd5('0x49')]({},_0x1a84ee,_0x2eedc4[_0xccd5('0x4a')]);return db[_0xccd5('0x5b')]['findAll'](_0x1a84ee);}})[_0xccd5('0x2b')](function(_0x2d8b93){if(_0x2d8b93){return db['User'][_0xccd5('0x5d')]({'where':{'id':_[_0xccd5('0x33')](_0x2d8b93,_0xccd5('0x5e')),'role':_0xccd5('0x5f')},'attributes':['id',_0xccd5('0x30'),_0xccd5('0x60'),'updatedAt','createdAt']});}})[_0xccd5('0x2b')](function(_0x5e15c3){if(_0x5e15c3){return{'count':_0x5e15c3[_0xccd5('0x25')],'rows':_[_0xccd5('0x33')](_0x5e15c3[_0xccd5('0x61')],function(_0x175708){return{'membername':_0x175708[_0xccd5('0x30')],'UserId':_0x175708['id'],'queue_name':_0x4f3228[_0xccd5('0x30')],'OpenchannelQueueId':_0x4f3228['id'],'interface':util['format'](_0xccd5('0x62'),_0xccd5('0x63'),_0x175708[_0xccd5('0x30')]),'penalty':0x0,'paused':_0x175708['openchannelPause'],'createdAt':_0x175708[_0xccd5('0x64')],'updatedAt':_0x175708[_0xccd5('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xccd5('0x2b')](respondWithFilteredResult(_0x47f75f,_0x1a84ee))['catch'](handleError(_0x47f75f,null));};exports[_0xccd5('0x66')]=function(_0x550643,_0x3441d7,_0x470c20){var _0x423b5e={};var _0x3d1195={};var _0x46888a;var _0x243f52;return db[_0xccd5('0x34')][_0xccd5('0x5a')]({'where':{'id':_0x550643[_0xccd5('0x4e')]['id']}})[_0xccd5('0x2b')](handleEntityNotFound(_0x3441d7,null))['then'](function(_0x44ed8c){if(_0x44ed8c){_0x46888a=_0x44ed8c;_0x3d1195['model']=_[_0xccd5('0x3b')](db[_0xccd5('0x67')][_0xccd5('0x35')]);_0x3d1195[_0xccd5('0x3a')]=_[_0xccd5('0x3b')](_0x550643[_0xccd5('0x3a')]);_0x3d1195[_0xccd5('0x3c')]=_[_0xccd5('0x3d')](_0x3d1195[_0xccd5('0x39')],_0x3d1195[_0xccd5('0x3a')]);_0x423b5e[_0xccd5('0x3e')]=_['intersection'](_0x3d1195['model'],qs[_0xccd5('0x3f')](_0x550643['query'][_0xccd5('0x3f')]));_0x423b5e[_0xccd5('0x3e')]=_0x423b5e['attributes'][_0xccd5('0x40')]?_0x423b5e[_0xccd5('0x3e')]:_0x3d1195[_0xccd5('0x39')];_0x423b5e['order']=qs[_0xccd5('0x44')](_0x550643[_0xccd5('0x3a')]['sort']);_0x423b5e[_0xccd5('0x45')]=qs[_0xccd5('0x3c')](_[_0xccd5('0x46')](_0x550643[_0xccd5('0x3a')],_0x3d1195[_0xccd5('0x3c')]));if(_0x550643[_0xccd5('0x3a')][_0xccd5('0x47')]){_0x423b5e[_0xccd5('0x45')]=_[_0xccd5('0x49')](_0x423b5e[_0xccd5('0x45')],{'$or':_[_0xccd5('0x33')](_0x423b5e[_0xccd5('0x3e')],function(_0x40a342){var _0x4f04c1={};_0x4f04c1[_0x40a342]={'$like':'%'+_0x550643[_0xccd5('0x3a')]['filter']+'%'};return _0x4f04c1;})});}_0x423b5e=_['merge']({},_0x423b5e,_0x550643['options']);return _0x46888a[_0xccd5('0x66')](_0x423b5e);}})[_0xccd5('0x2b')](function(_0x27ed91){if(_0x27ed91){_0x243f52=_0x27ed91[_0xccd5('0x40')];if(!_0x550643[_0xccd5('0x3a')][_0xccd5('0x41')](_0xccd5('0x42'))){_0x423b5e[_0xccd5('0x24')]=qs[_0xccd5('0x24')](_0x550643['query'][_0xccd5('0x24')]);_0x423b5e['offset']=qs['offset'](_0x550643['query'][_0xccd5('0x22')]);}return _0x46888a[_0xccd5('0x66')](_0x423b5e);}})[_0xccd5('0x2b')](function(_0xaa13c1){if(_0xaa13c1){return _0xaa13c1?{'count':_0x243f52,'rows':_0xaa13c1}:null;}})[_0xccd5('0x2b')](respondWithResult(_0x3441d7,null))[_0xccd5('0x4d')](handleError(_0x3441d7,null));};exports[_0xccd5('0x68')]=function(_0x3b4a5b,_0x1a0b66,_0x12d9e5){var _0x4623ca=_0x3b4a5b[_0xccd5('0x52')]['ids'];return db[_0xccd5('0x67')][_0xccd5('0x4c')]({'where':{'id':_0x4623ca},'attributes':['id'],'include':[{'model':db[_0xccd5('0x69')],'as':_0xccd5('0x6a'),'attributes':['id',_0xccd5('0x30'),'online',_0xccd5('0x6b'),_0xccd5('0x6c')],'raw':!![]}]})[_0xccd5('0x2b')](function(_0x4a2941){if(_0x4a2941){var _0x4c4ab8=_['flatMap'](_0x4a2941,function(_0xe8964a){var _0x6e0156=_0xe8964a[_0xccd5('0x54')]({'plain':!![]});return _0x6e0156['Agents'];});return db[_0xccd5('0x34')]['find']({'where':{'id':_0x3b4a5b[_0xccd5('0x4e')]['id']}})[_0xccd5('0x2b')](function(_0x26b046){return db[_0xccd5('0x6d')][_0xccd5('0x6e')](function(_0x23b070){return _0x26b046[_0xccd5('0x68')](_0x4623ca,{'transaction':_0x23b070})[_0xccd5('0x2b')](function(){return BPromise[_0xccd5('0x6f')](_0x4c4ab8,function(_0x3a270a){return db['UserOpenchannelQueue']['findOrCreate']({'where':{'UserId':_0x3a270a['id'],'OpenchannelQueueId':_0x3b4a5b[_0xccd5('0x4e')]['id']},'transaction':_0x23b070});});})[_0xccd5('0x2b')](function(){_0x4c4ab8[_0xccd5('0x70')](function(_0x184a3d){socket['emit'](_0xccd5('0x71'),{'UserId':_0x184a3d['id'],'OpenchannelQueueId':_0x26b046['id']});});});});});}})[_0xccd5('0x2b')](respondWithStatusCode(_0x1a0b66,null))['catch'](handleError(_0x1a0b66,null));};exports[_0xccd5('0x72')]=function(_0x2cd188,_0x5d73ee,_0x32e3fc){return db['Team'][_0xccd5('0x4c')]({'where':{'id':_0x2cd188[_0xccd5('0x3a')][_0xccd5('0x73')]},'attributes':['id'],'include':[{'model':db[_0xccd5('0x69')],'as':_0xccd5('0x6a'),'attributes':['id'],'raw':!![]}]})[_0xccd5('0x2b')](handleEntityNotFound(_0x5d73ee,null))[_0xccd5('0x2b')](function(_0x493741){var _0x324f9d=_[_0xccd5('0x33')](_0x493741,'id');var _0x38df9a=[];var _0x4a67f7=[];var _0x450ca3=squel[_0xccd5('0x74')]();_0x450ca3[_0xccd5('0x75')](_0xccd5('0x76'))[_0xccd5('0x77')](_0xccd5('0x78'),'tq')[_0xccd5('0x79')]('user_has_teams','ut',_0xccd5('0x7a'))[_0xccd5('0x45')]('OpenchannelQueueId\x20=\x20?',_0x2cd188[_0xccd5('0x4e')]['id']);for(var _0x52bcc0=0x0;_0x52bcc0<_0x493741['length'];_0x52bcc0+=0x1){let _0x4292c0=_0x493741[_0x52bcc0];for(var _0x18036d=0x0;_0x18036d<_0x4292c0[_0xccd5('0x6a')][_0xccd5('0x40')];_0x18036d+=0x1){let _0x22f0d6=_0x4292c0[_0xccd5('0x6a')][_0x18036d];var _0x4e810a=_0x450ca3[_0xccd5('0x7b')]();_0x4e810a[_0xccd5('0x45')](_0xccd5('0x7c'),_0x22f0d6['id']);_0x4a67f7[_0xccd5('0x7d')](db[_0xccd5('0x6d')][_0xccd5('0x3a')](_0x4e810a[_0xccd5('0x7e')](),{'type':db[_0xccd5('0x6d')]['QueryTypes'][_0xccd5('0x7f')]})[_0xccd5('0x2b')](function(_0x3e2765){if(_0x3e2765[_0xccd5('0x40')]===0x1){return _0x22f0d6['id'];}else{var _0x49c6dc=_[_0xccd5('0x80')](_[_0xccd5('0x33')](_0x3e2765,_0xccd5('0x81')),function(_0x3557bf){return _[_0xccd5('0x82')](_0x324f9d,_0x3557bf);});if(_0x49c6dc){return _0x22f0d6['id'];}}}));}}return BPromise['all'](_0x4a67f7)[_0xccd5('0x2b')](function(_0x6bea2){_0x38df9a=_(_0x38df9a)[_0xccd5('0x83')](_0x6bea2)[_0xccd5('0x84')]()[_0xccd5('0x85')]();return db[_0xccd5('0x34')][_0xccd5('0x50')]({'where':{'id':_0x2cd188[_0xccd5('0x4e')]['id']}})[_0xccd5('0x2b')](function(_0x56349d){return db['sequelize'][_0xccd5('0x6e')](function(_0x9941b9){return _0x56349d[_0xccd5('0x72')](_0x2cd188['query'][_0xccd5('0x73')],{'transaction':_0x9941b9})['then'](function(){if(!_[_0xccd5('0x86')](_0x38df9a)){return _0x56349d[_0xccd5('0x87')](_0x38df9a,{'transaction':_0x9941b9});}})[_0xccd5('0x2b')](function(){_0x38df9a[_0xccd5('0x70')](function(_0x435e28){socket[_0xccd5('0x88')](_0xccd5('0x89'),{'UserId':_0x435e28,'OpenchannelQueueId':_0x56349d['id']});});});});});});})[_0xccd5('0x2b')](respondWithStatusCode(_0x5d73ee,null))['catch'](handleError(_0x5d73ee,null));};exports[_0xccd5('0x8a')]=function(_0x1aee08,_0x3cb5cc,_0x4fb500){return db[_0xccd5('0x34')][_0xccd5('0x50')]({'where':{'id':_0x1aee08[_0xccd5('0x4e')]['id']}})[_0xccd5('0x2b')](handleEntityNotFound(_0x3cb5cc,null))[_0xccd5('0x2b')](function(_0x579900){if(_0x579900){return _0x579900['addAgents'](_0x1aee08[_0xccd5('0x52')][_0xccd5('0x73')],_[_0xccd5('0x8b')](_0x1aee08['body'],[_0xccd5('0x73'),'id'])||{})[_0xccd5('0x8c')](function(_0x1083f2){for(var _0x142e22=0x0;_0x142e22<_0x1aee08[_0xccd5('0x52')]['ids'][_0xccd5('0x40')];_0x142e22+=0x1){socket[_0xccd5('0x88')]('userOpenchannelQueue:save',{'UserId':Number(_0x1aee08['body'][_0xccd5('0x73')][_0x142e22]),'OpenchannelQueueId':Number(_0x1aee08[_0xccd5('0x4e')]['id'])});}return _0x1083f2;});}})['then'](respondWithResult(_0x3cb5cc,null))[_0xccd5('0x4d')](handleError(_0x3cb5cc,null));};exports[_0xccd5('0x87')]=function(_0x2cf6f6,_0x56cfaa,_0x4996b7){return db[_0xccd5('0x34')][_0xccd5('0x50')]({'where':{'id':_0x2cf6f6[_0xccd5('0x4e')]['id']}})[_0xccd5('0x2b')](handleEntityNotFound(_0x56cfaa,null))['then'](function(_0x21f775){if(_0x21f775){return _0x21f775[_0xccd5('0x87')](_0x2cf6f6[_0xccd5('0x3a')][_0xccd5('0x73')])[_0xccd5('0x2b')](function(){if(_[_0xccd5('0x8d')](_0x2cf6f6[_0xccd5('0x3a')][_0xccd5('0x73')])){for(var _0x5189d2=0x0;_0x5189d2<_0x2cf6f6[_0xccd5('0x3a')][_0xccd5('0x73')][_0xccd5('0x40')];_0x5189d2+=0x1){socket[_0xccd5('0x88')](_0xccd5('0x89'),{'UserId':Number(_0x2cf6f6[_0xccd5('0x3a')]['ids'][_0x5189d2]),'OpenchannelQueueId':Number(_0x2cf6f6['params']['id'])});}}else{socket['emit'](_0xccd5('0x89'),{'UserId':Number(_0x2cf6f6[_0xccd5('0x3a')][_0xccd5('0x73')]),'OpenchannelQueueId':Number(_0x2cf6f6[_0xccd5('0x4e')]['id'])});}});}})['then'](respondWithStatusCode(_0x56cfaa,null))['catch'](handleError(_0x56cfaa,null));};exports[_0xccd5('0x8e')]=function(_0x3202f8,_0x5f1ca9,_0x3e4589){var _0x559c62={};var _0x11088b={};var _0x40598b;var _0xcb4f45;return db[_0xccd5('0x34')]['findOne']({'where':{'id':_0x3202f8['params']['id']}})[_0xccd5('0x2b')](handleEntityNotFound(_0x5f1ca9,null))[_0xccd5('0x2b')](function(_0x22a26b){if(_0x22a26b){_0x40598b=_0x22a26b;_0x11088b['model']=_['keys'](db[_0xccd5('0x69')][_0xccd5('0x35')]);_0x11088b[_0xccd5('0x3a')]=_[_0xccd5('0x3b')](_0x3202f8[_0xccd5('0x3a')]);_0x11088b[_0xccd5('0x3c')]=_[_0xccd5('0x3d')](_0x11088b[_0xccd5('0x39')],_0x11088b[_0xccd5('0x3a')]);_0x559c62['attributes']=_[_0xccd5('0x3d')](_0x11088b[_0xccd5('0x39')],qs[_0xccd5('0x3f')](_0x3202f8[_0xccd5('0x3a')][_0xccd5('0x3f')]));_0x559c62['attributes']=_0x559c62[_0xccd5('0x3e')][_0xccd5('0x40')]?_0x559c62[_0xccd5('0x3e')]:_0x11088b[_0xccd5('0x39')];_0x559c62[_0xccd5('0x43')]=qs[_0xccd5('0x44')](_0x3202f8['query']['sort']);_0x559c62[_0xccd5('0x45')]=qs[_0xccd5('0x3c')](_[_0xccd5('0x46')](_0x3202f8[_0xccd5('0x3a')],_0x11088b[_0xccd5('0x3c')]));if(_0x3202f8[_0xccd5('0x3a')][_0xccd5('0x47')]){_0x559c62['where']=_['merge'](_0x559c62[_0xccd5('0x45')],{'$or':_['map'](_0x559c62[_0xccd5('0x3e')],function(_0x20135b){var _0x548a={};_0x548a[_0x20135b]={'$like':'%'+_0x3202f8[_0xccd5('0x3a')][_0xccd5('0x47')]+'%'};return _0x548a;})});}_0x559c62=_[_0xccd5('0x49')]({},_0x559c62,_0x3202f8['options']);return _0x40598b[_0xccd5('0x8e')](_0x559c62);}})[_0xccd5('0x2b')](function(_0x1b93d7){if(_0x1b93d7){_0xcb4f45=_0x1b93d7[_0xccd5('0x40')];if(!_0x3202f8['query']['hasOwnProperty'](_0xccd5('0x42'))){_0x559c62['limit']=qs['limit'](_0x3202f8[_0xccd5('0x3a')]['limit']);_0x559c62[_0xccd5('0x22')]=qs[_0xccd5('0x22')](_0x3202f8['query'][_0xccd5('0x22')]);}return _0x40598b[_0xccd5('0x8e')](_0x559c62);}})[_0xccd5('0x2b')](function(_0x182775){if(_0x182775){return _0x182775?{'count':_0xcb4f45,'rows':_0x182775}:null;}})[_0xccd5('0x2b')](respondWithResult(_0x5f1ca9,null))['catch'](handleError(_0x5f1ca9,null));};
\ No newline at end of file
index 4ee988d..9d613ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fd3=['save','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','OpenchannelQueue','setMaxListeners'];(function(_0x51edca,_0x18ad70){var _0x2b77ec=function(_0x55a549){while(--_0x55a549){_0x51edca['push'](_0x51edca['shift']());}};_0x2b77ec(++_0x18ad70);}(_0x2fd3,0x1c9));var _0x32fd=function(_0x2c5ca5,_0xdb109b){_0x2c5ca5=_0x2c5ca5-0x0;var _0x511dbf=_0x2fd3[_0x2c5ca5];return _0x511dbf;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0x32fd('0x0'))['db'][_0x32fd('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x32fd('0x2')](0x0);var events={'afterCreate':_0x32fd('0x3'),'afterUpdate':_0x32fd('0x4'),'afterDestroy':_0x32fd('0x5')};function emitEvent(_0x2a5bca){return function(_0xbd0bc3,_0x31b731,_0x35d0ce){OpenchannelQueueEvents[_0x32fd('0x6')](_0x2a5bca+':'+_0xbd0bc3['id'],_0xbd0bc3);OpenchannelQueueEvents[_0x32fd('0x6')](_0x2a5bca,_0xbd0bc3);_0x35d0ce(null);};}for(var e in events){if(events[_0x32fd('0x7')](e)){var event=events[e];OpenchannelQueue[_0x32fd('0x8')](e,emitEvent(event));}}module[_0x32fd('0x9')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0xbb25=['update','remove','emit','hook','exports','setMaxListeners','save'];(function(_0x56fab8,_0x268a25){var _0x3bb7e6=function(_0x3df1f8){while(--_0x3df1f8){_0x56fab8['push'](_0x56fab8['shift']());}};_0x3bb7e6(++_0x268a25);}(_0xbb25,0x1a9));var _0x5bb2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbb25[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require('../../mysqldb')['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x5bb2('0x0')](0x0);var events={'afterCreate':_0x5bb2('0x1'),'afterUpdate':_0x5bb2('0x2'),'afterDestroy':_0x5bb2('0x3')};function emitEvent(_0x1c7e59){return function(_0x3c34f7,_0x2d1ca4,_0x32c062){OpenchannelQueueEvents[_0x5bb2('0x4')](_0x1c7e59+':'+_0x3c34f7['id'],_0x3c34f7);OpenchannelQueueEvents[_0x5bb2('0x4')](_0x1c7e59,_0x3c34f7);_0x32c062(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue[_0x5bb2('0x5')](e,emitEvent(event));}}module[_0x5bb2('0x6')]=OpenchannelQueueEvents;
\ No newline at end of file
index 9f5cb07..612a364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3348=['bluebird','path','rimraf','exports','OpenchannelQueue','lodash','util','api','moment'];(function(_0x1917ae,_0x1b74a6){var _0x998edd=function(_0x13fe81){while(--_0x13fe81){_0x1917ae['push'](_0x1917ae['shift']());}};_0x998edd(++_0x1b74a6);}(_0x3348,0x1d9));var _0x8334=function(_0x44bb1b,_0x529dd3){_0x44bb1b=_0x44bb1b-0x0;var _0x43fc3a=_0x3348[_0x44bb1b];return _0x43fc3a;};'use strict';var _=require(_0x8334('0x0'));var util=require(_0x8334('0x1'));var logger=require('../../config/logger')(_0x8334('0x2'));var moment=require(_0x8334('0x3'));var BPromise=require(_0x8334('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8334('0x5'));var rimraf=require(_0x8334('0x6'));var config=require('../../config/environment');var attributes=require('./openchannelQueue.attributes');module[_0x8334('0x7')]=function(_0x41f1d8,_0xc5a580){return _0x41f1d8['define'](_0x8334('0x8'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1cc1=['./openchannelQueue.attributes','exports','define','OpenchannelQueue','openchannel_queues','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1cc1,0x91));var _0x11cc=function(_0x4ad2d6,_0x28a268){_0x4ad2d6=_0x4ad2d6-0x0;var _0x4914fb=_0x1cc1[_0x4ad2d6];return _0x4914fb;};'use strict';var _=require(_0x11cc('0x0'));var util=require('util');var logger=require(_0x11cc('0x1'))(_0x11cc('0x2'));var moment=require(_0x11cc('0x3'));var BPromise=require(_0x11cc('0x4'));var rp=require(_0x11cc('0x5'));var fs=require('fs');var path=require(_0x11cc('0x6'));var rimraf=require(_0x11cc('0x7'));var config=require(_0x11cc('0x8'));var attributes=require(_0x11cc('0x9'));module[_0x11cc('0xa')]=function(_0x5981b4,_0x5e58a0){return _0x5981b4[_0x11cc('0xb')](_0x11cc('0xc'),attributes,{'tableName':_0x11cc('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1d247fd..8a92d1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe668=['code','message','result','catch','OpenchannelQueue','findAll','options','raw','where','attributes','limit','map','include','model','GetOpenchannelQueue','ShowOpenchannelQueue','find','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x27845e,_0x2d79b){var _0x1e4508=function(_0x145983){while(--_0x145983){_0x27845e['push'](_0x27845e['shift']());}};_0x1e4508(++_0x2d79b);}(_0xe668,0x1e5));var _0x8e66=function(_0x1e896c,_0x3f9948){_0x1e896c=_0x1e896c-0x0;var _0xd149d9=_0xe668[_0x1e896c];return _0xd149d9;};'use strict';var _=require('lodash');var util=require(_0x8e66('0x0'));var moment=require('moment');var BPromise=require(_0x8e66('0x1'));var rs=require(_0x8e66('0x2'));var fs=require('fs');var Redis=require(_0x8e66('0x3'));var db=require(_0x8e66('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8e66('0x5'))('rpc');var config=require(_0x8e66('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x8e66('0x7')]['http']({'port':0x232a});config[_0x8e66('0x8')]=_[_0x8e66('0x9')](config[_0x8e66('0x8')],{'host':_0x8e66('0xa'),'port':0x18eb});var socket=require(_0x8e66('0xb'))(new Redis(config[_0x8e66('0x8')]));require(_0x8e66('0xc'))[_0x8e66('0xd')](socket);function respondWithRpcPromise(_0x31195c,_0x50ab26,_0xaa754e){return new BPromise(function(_0x587274,_0x3cb24e){return client['request'](_0x31195c,_0xaa754e)[_0x8e66('0xe')](function(_0x223341){logger[_0x8e66('0xf')](_0x8e66('0x10'),_0x50ab26,_0x8e66('0x11'));logger[_0x8e66('0x12')](_0x8e66('0x13'),_0x50ab26,_0x8e66('0x11'),JSON[_0x8e66('0x14')](_0x223341));if(_0x223341[_0x8e66('0x15')]){if(_0x223341[_0x8e66('0x15')][_0x8e66('0x16')]===0x1f4){logger[_0x8e66('0x15')](_0x8e66('0x10'),_0x50ab26,_0x223341[_0x8e66('0x15')][_0x8e66('0x17')]);return _0x3cb24e(_0x223341['error'][_0x8e66('0x17')]);}logger['error'](_0x8e66('0x10'),_0x50ab26,_0x223341[_0x8e66('0x15')][_0x8e66('0x17')]);return _0x587274(_0x223341[_0x8e66('0x15')][_0x8e66('0x17')]);}else{logger[_0x8e66('0xf')](_0x8e66('0x10'),_0x50ab26,_0x8e66('0x11'));_0x587274(_0x223341[_0x8e66('0x18')]['message']);}})[_0x8e66('0x19')](function(_0x3d5f74){logger[_0x8e66('0x15')]('OpenchannelQueue,\x20%s,\x20%s',_0x50ab26,_0x3d5f74);_0x3cb24e(_0x3d5f74);});});}exports['GetOpenchannelQueue']=function(_0x48b612){var _0xf6885c=this;return new Promise(function(_0x3403f8,_0x593f99){return db[_0x8e66('0x1a')][_0x8e66('0x1b')]({'raw':_0x48b612['options']?_0x48b612[_0x8e66('0x1c')][_0x8e66('0x1d')]===undefined?!![]:![]:!![],'where':_0x48b612[_0x8e66('0x1c')]?_0x48b612[_0x8e66('0x1c')][_0x8e66('0x1e')]||null:null,'attributes':_0x48b612['options']?_0x48b612['options'][_0x8e66('0x1f')]||null:null,'limit':_0x48b612[_0x8e66('0x1c')]?_0x48b612[_0x8e66('0x1c')][_0x8e66('0x20')]||null:null,'include':_0x48b612[_0x8e66('0x1c')]?_0x48b612[_0x8e66('0x1c')]['include']?_[_0x8e66('0x21')](_0x48b612[_0x8e66('0x1c')][_0x8e66('0x22')],function(_0x34c1bc){return{'model':db[_0x34c1bc[_0x8e66('0x23')]],'as':_0x34c1bc['as'],'attributes':_0x34c1bc['attributes'],'include':_0x34c1bc['include']?_['map'](_0x34c1bc[_0x8e66('0x22')],function(_0x4754ae){return{'model':db[_0x4754ae[_0x8e66('0x23')]],'as':_0x4754ae['as'],'attributes':_0x4754ae[_0x8e66('0x1f')],'include':_0x4754ae['include']?_['map'](_0x4754ae['include'],function(_0x28a3a8){return{'model':db[_0x28a3a8['model']],'as':_0x28a3a8['as'],'attributes':_0x28a3a8[_0x8e66('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xe16894){logger[_0x8e66('0xf')](_0x8e66('0x24'),_0x48b612);logger[_0x8e66('0x12')](_0x8e66('0x24'),_0x48b612,JSON[_0x8e66('0x14')](_0xe16894));_0x3403f8(_0xe16894);})[_0x8e66('0x19')](function(_0x3fc0d7){logger[_0x8e66('0x15')](_0x8e66('0x24'),_0x3fc0d7[_0x8e66('0x17')],_0x48b612);_0x593f99(_0xf6885c[_0x8e66('0x15')](0x1f4,_0x3fc0d7[_0x8e66('0x17')]));});});};exports[_0x8e66('0x25')]=function(_0x441139){var _0x101d1f=this;return new Promise(function(_0x1d16aa,_0x46f79e){return db[_0x8e66('0x1a')][_0x8e66('0x26')]({'raw':_0x441139[_0x8e66('0x1c')]?_0x441139[_0x8e66('0x1c')][_0x8e66('0x1d')]===undefined?!![]:![]:!![],'where':_0x441139[_0x8e66('0x1c')]?_0x441139[_0x8e66('0x1c')][_0x8e66('0x1e')]||null:null,'attributes':_0x441139[_0x8e66('0x1c')]?_0x441139['options'][_0x8e66('0x1f')]||null:null,'include':_0x441139[_0x8e66('0x1c')]?_0x441139['options'][_0x8e66('0x22')]?_['map'](_0x441139[_0x8e66('0x1c')][_0x8e66('0x22')],function(_0x54aef1){return{'model':db[_0x54aef1['model']],'as':_0x54aef1['as'],'attributes':_0x54aef1[_0x8e66('0x1f')],'include':_0x54aef1['include']?_[_0x8e66('0x21')](_0x54aef1[_0x8e66('0x22')],function(_0x1dbc47){return{'model':db[_0x1dbc47[_0x8e66('0x23')]],'as':_0x1dbc47['as'],'attributes':_0x1dbc47['attributes'],'include':_0x1dbc47[_0x8e66('0x22')]?_[_0x8e66('0x21')](_0x1dbc47[_0x8e66('0x22')],function(_0x387e72){return{'model':db[_0x387e72[_0x8e66('0x23')]],'as':_0x387e72['as'],'attributes':_0x387e72[_0x8e66('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x8e66('0xe')](function(_0x36692d){logger[_0x8e66('0xf')](_0x8e66('0x25'),_0x441139);logger[_0x8e66('0x12')](_0x8e66('0x25'),_0x441139,JSON[_0x8e66('0x14')](_0x36692d));_0x1d16aa(_0x36692d);})[_0x8e66('0x19')](function(_0x1db020){logger[_0x8e66('0x15')](_0x8e66('0x25'),_0x1db020[_0x8e66('0x17')],_0x441139);_0x46f79e(_0x101d1f['error'](0x1f4,_0x1db020[_0x8e66('0x17')]));});});};
\ No newline at end of file
+var _0xf56d=['result','catch','GetOpenchannelQueue','findAll','options','raw','where','attributes','limit','include','map','model','debug','stringify','ShowOpenchannelQueue','OpenchannelQueue','find','then','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','./openchannelQueue.socket','register','request','OpenchannelQueue,\x20%s,\x20%s','OpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message','info'];(function(_0x8f2a95,_0x4aef84){var _0x225224=function(_0x2c31f5){while(--_0x2c31f5){_0x8f2a95['push'](_0x8f2a95['shift']());}};_0x225224(++_0x4aef84);}(_0xf56d,0x12a));var _0xdf56=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf56d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xdf56('0x0'));var util=require(_0xdf56('0x1'));var moment=require(_0xdf56('0x2'));var BPromise=require(_0xdf56('0x3'));var rs=require(_0xdf56('0x4'));var fs=require('fs');var Redis=require(_0xdf56('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xdf56('0x6'))(_0xdf56('0x7'));var config=require(_0xdf56('0x8'));var jayson=require(_0xdf56('0x9'));var client=jayson[_0xdf56('0xa')]['http']({'port':0x232a});config[_0xdf56('0xb')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdf56('0xb')]));require(_0xdf56('0xc'))[_0xdf56('0xd')](socket);function respondWithRpcPromise(_0x2659fb,_0x197a64,_0x42188c){return new BPromise(function(_0x25a23b,_0x47e319){return client[_0xdf56('0xe')](_0x2659fb,_0x42188c)['then'](function(_0x26db68){logger['info'](_0xdf56('0xf'),_0x197a64,'request\x20sent');logger['debug'](_0xdf56('0x10'),_0x197a64,_0xdf56('0x11'),JSON['stringify'](_0x26db68));if(_0x26db68['error']){if(_0x26db68['error'][_0xdf56('0x12')]===0x1f4){logger[_0xdf56('0x13')](_0xdf56('0xf'),_0x197a64,_0x26db68[_0xdf56('0x13')][_0xdf56('0x14')]);return _0x47e319(_0x26db68[_0xdf56('0x13')][_0xdf56('0x14')]);}logger[_0xdf56('0x13')]('OpenchannelQueue,\x20%s,\x20%s',_0x197a64,_0x26db68['error']['message']);return _0x25a23b(_0x26db68[_0xdf56('0x13')]['message']);}else{logger[_0xdf56('0x15')](_0xdf56('0xf'),_0x197a64,_0xdf56('0x11'));_0x25a23b(_0x26db68[_0xdf56('0x16')][_0xdf56('0x14')]);}})[_0xdf56('0x17')](function(_0x64849d){logger[_0xdf56('0x13')](_0xdf56('0xf'),_0x197a64,_0x64849d);_0x47e319(_0x64849d);});});}exports[_0xdf56('0x18')]=function(_0x44f78e){var _0x41fba8=this;return new Promise(function(_0x4a120f,_0xc26ea0){return db['OpenchannelQueue'][_0xdf56('0x19')]({'raw':_0x44f78e['options']?_0x44f78e[_0xdf56('0x1a')][_0xdf56('0x1b')]===undefined?!![]:![]:!![],'where':_0x44f78e['options']?_0x44f78e[_0xdf56('0x1a')][_0xdf56('0x1c')]||null:null,'attributes':_0x44f78e[_0xdf56('0x1a')]?_0x44f78e[_0xdf56('0x1a')][_0xdf56('0x1d')]||null:null,'limit':_0x44f78e[_0xdf56('0x1a')]?_0x44f78e[_0xdf56('0x1a')][_0xdf56('0x1e')]||null:null,'include':_0x44f78e[_0xdf56('0x1a')]?_0x44f78e[_0xdf56('0x1a')][_0xdf56('0x1f')]?_['map'](_0x44f78e[_0xdf56('0x1a')][_0xdf56('0x1f')],function(_0x268472){return{'model':db[_0x268472['model']],'as':_0x268472['as'],'attributes':_0x268472[_0xdf56('0x1d')],'include':_0x268472[_0xdf56('0x1f')]?_[_0xdf56('0x20')](_0x268472['include'],function(_0x3d7c29){return{'model':db[_0x3d7c29['model']],'as':_0x3d7c29['as'],'attributes':_0x3d7c29['attributes'],'include':_0x3d7c29[_0xdf56('0x1f')]?_[_0xdf56('0x20')](_0x3d7c29['include'],function(_0x2ccbd0){return{'model':db[_0x2ccbd0[_0xdf56('0x21')]],'as':_0x2ccbd0['as'],'attributes':_0x2ccbd0['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x100df7){logger[_0xdf56('0x15')](_0xdf56('0x18'),_0x44f78e);logger[_0xdf56('0x22')](_0xdf56('0x18'),_0x44f78e,JSON[_0xdf56('0x23')](_0x100df7));_0x4a120f(_0x100df7);})[_0xdf56('0x17')](function(_0x490c3e){logger[_0xdf56('0x13')](_0xdf56('0x18'),_0x490c3e[_0xdf56('0x14')],_0x44f78e);_0xc26ea0(_0x41fba8['error'](0x1f4,_0x490c3e['message']));});});};exports[_0xdf56('0x24')]=function(_0x4bcd5a){var _0x200878=this;return new Promise(function(_0x189118,_0x451402){return db[_0xdf56('0x25')][_0xdf56('0x26')]({'raw':_0x4bcd5a['options']?_0x4bcd5a[_0xdf56('0x1a')][_0xdf56('0x1b')]===undefined?!![]:![]:!![],'where':_0x4bcd5a['options']?_0x4bcd5a['options'][_0xdf56('0x1c')]||null:null,'attributes':_0x4bcd5a[_0xdf56('0x1a')]?_0x4bcd5a['options']['attributes']||null:null,'include':_0x4bcd5a[_0xdf56('0x1a')]?_0x4bcd5a['options'][_0xdf56('0x1f')]?_[_0xdf56('0x20')](_0x4bcd5a[_0xdf56('0x1a')][_0xdf56('0x1f')],function(_0x37636e){return{'model':db[_0x37636e[_0xdf56('0x21')]],'as':_0x37636e['as'],'attributes':_0x37636e[_0xdf56('0x1d')],'include':_0x37636e[_0xdf56('0x1f')]?_[_0xdf56('0x20')](_0x37636e[_0xdf56('0x1f')],function(_0x4bcd2e){return{'model':db[_0x4bcd2e[_0xdf56('0x21')]],'as':_0x4bcd2e['as'],'attributes':_0x4bcd2e[_0xdf56('0x1d')],'include':_0x4bcd2e[_0xdf56('0x1f')]?_[_0xdf56('0x20')](_0x4bcd2e[_0xdf56('0x1f')],function(_0x225233){return{'model':db[_0x225233[_0xdf56('0x21')]],'as':_0x225233['as'],'attributes':_0x225233[_0xdf56('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xdf56('0x27')](function(_0x3450bc){logger[_0xdf56('0x15')]('ShowOpenchannelQueue',_0x4bcd5a);logger['debug']('ShowOpenchannelQueue',_0x4bcd5a,JSON[_0xdf56('0x23')](_0x3450bc));_0x189118(_0x3450bc);})[_0xdf56('0x17')](function(_0x4daac8){logger[_0xdf56('0x13')]('ShowOpenchannelQueue',_0x4daac8[_0xdf56('0x14')],_0x4bcd5a);_0x451402(_0x200878[_0xdf56('0x13')](0x1f4,_0x4daac8['message']));});});};
\ No newline at end of file
index 8f88cc5..f406ba1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5238=['emit','register','length','openchannelQueue:','./openchannelQueue.events'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0x5238,0x68));var _0x8523=function(_0x359622,_0x19d86b){_0x359622=_0x359622-0x0;var _0x48059f=_0x5238[_0x359622];return _0x48059f;};'use strict';var OpenchannelQueueEvents=require(_0x8523('0x0'));var events=['save','remove','update'];function createListener(_0x19d3b2,_0x357c3a){return function(_0x3b8f40){_0x357c3a[_0x8523('0x1')](_0x19d3b2,_0x3b8f40);};}function removeListener(_0x16329a,_0x398552){return function(){OpenchannelQueueEvents['removeListener'](_0x16329a,_0x398552);};}exports[_0x8523('0x2')]=function(_0x34236d){for(var _0x320b92=0x0,_0x56c493=events[_0x8523('0x3')];_0x320b92<_0x56c493;_0x320b92++){var _0x31434c=events[_0x320b92];var _0x510203=createListener(_0x8523('0x4')+_0x31434c,_0x34236d);OpenchannelQueueEvents['on'](_0x31434c,_0x510203);}};
\ No newline at end of file
+var _0xb8e0=['remove','removeListener','register','length','openchannelQueue:','./openchannelQueue.events','save'];(function(_0x59c009,_0x31e068){var _0x41ba4b=function(_0x45fe77){while(--_0x45fe77){_0x59c009['push'](_0x59c009['shift']());}};_0x41ba4b(++_0x31e068);}(_0xb8e0,0x155));var _0x0b8e=function(_0x650e11,_0x284f86){_0x650e11=_0x650e11-0x0;var _0x1a9b47=_0xb8e0[_0x650e11];return _0x1a9b47;};'use strict';var OpenchannelQueueEvents=require(_0x0b8e('0x0'));var events=[_0x0b8e('0x1'),_0x0b8e('0x2'),'update'];function createListener(_0x5a2118,_0x31b869){return function(_0x4b345b){_0x31b869['emit'](_0x5a2118,_0x4b345b);};}function removeListener(_0x3398e1,_0x50d533){return function(){OpenchannelQueueEvents[_0x0b8e('0x3')](_0x3398e1,_0x50d533);};}exports[_0x0b8e('0x4')]=function(_0xdf0ee9){for(var _0x1f2383=0x0,_0x56f5a7=events[_0x0b8e('0x5')];_0x1f2383<_0x56f5a7;_0x1f2383++){var _0x4063c1=events[_0x1f2383];var _0x1e374d=createListener(_0x0b8e('0x6')+_0x4063c1,_0xdf0ee9);OpenchannelQueueEvents['on'](_0x4063c1,_0x1e374d);}};
\ No newline at end of file
index b158a5c..314397e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf899=['show','post','create','put','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x155b49,_0x541af2){var _0x213bf3=function(_0x464d9a){while(--_0x464d9a){_0x155b49['push'](_0x155b49['shift']());}};_0x213bf3(++_0x541af2);}(_0xf899,0x1d3));var _0x9f89=function(_0xb8a63f,_0x52fa0f){_0xb8a63f=_0xb8a63f-0x0;var _0x2dff69=_0xf899[_0xb8a63f];return _0x2dff69;};'use strict';var multer=require(_0x9f89('0x0'));var util=require(_0x9f89('0x1'));var path=require('path');var timeout=require(_0x9f89('0x2'));var express=require(_0x9f89('0x3'));var router=express[_0x9f89('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9f89('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x9f89('0x6'));router[_0x9f89('0x7')]('/',auth[_0x9f89('0x8')](),controller[_0x9f89('0x9')]);router[_0x9f89('0x7')](_0x9f89('0xa'),auth[_0x9f89('0x8')](),controller[_0x9f89('0xb')]);router[_0x9f89('0x7')](_0x9f89('0xc'),auth[_0x9f89('0x8')](),controller[_0x9f89('0xd')]);router[_0x9f89('0xe')]('/',auth[_0x9f89('0x8')](),controller[_0x9f89('0xf')]);router[_0x9f89('0x10')](_0x9f89('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x9f89('0x11')](_0x9f89('0xc'),auth['isAuthenticated'](),controller[_0x9f89('0x12')]);module[_0x9f89('0x13')]=router;
\ No newline at end of file
+var _0xb8c5=['../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','destroy','exports','multer','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x364cba,_0x19c43b){var _0x1e6de2=function(_0x11731b){while(--_0x11731b){_0x364cba['push'](_0x364cba['shift']());}};_0x1e6de2(++_0x19c43b);}(_0xb8c5,0xc3));var _0x5b8c=function(_0x1846b8,_0x5e9fd2){_0x1846b8=_0x1846b8-0x0;var _0x5d29ea=_0xb8c5[_0x1846b8];return _0x5d29ea;};'use strict';var multer=require(_0x5b8c('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5b8c('0x1'));var express=require(_0x5b8c('0x2'));var router=express['Router']();var fs_extra=require(_0x5b8c('0x3'));var auth=require(_0x5b8c('0x4'));var interaction=require(_0x5b8c('0x5'));var config=require(_0x5b8c('0x6'));var controller=require(_0x5b8c('0x7'));router[_0x5b8c('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x5b8c('0x9'),auth[_0x5b8c('0xa')](),controller[_0x5b8c('0xb')]);router[_0x5b8c('0x8')](_0x5b8c('0xc'),auth[_0x5b8c('0xa')](),controller[_0x5b8c('0xd')]);router[_0x5b8c('0xe')]('/',auth[_0x5b8c('0xa')](),controller[_0x5b8c('0xf')]);router[_0x5b8c('0x10')](_0x5b8c('0xc'),auth[_0x5b8c('0xa')](),controller[_0x5b8c('0x11')]);router['delete']('/:id',auth[_0x5b8c('0xa')](),controller[_0x5b8c('0x12')]);module[_0x5b8c('0x13')]=router;
\ No newline at end of file
index 6529222..089d317 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8255=['sequelize','exports','STRING','DATE','moment'];(function(_0x4b97d1,_0xe709a1){var _0x122d22=function(_0x5532cd){while(--_0x5532cd){_0x4b97d1['push'](_0x4b97d1['shift']());}};_0x122d22(++_0xe709a1);}(_0x8255,0x176));var _0x5825=function(_0x220b34,_0x15dfa){_0x220b34=_0x220b34-0x0;var _0x2821b6=_0x8255[_0x220b34];return _0x2821b6;};'use strict';var moment=require(_0x5825('0x0'));var Sequelize=require(_0x5825('0x1'));module[_0x5825('0x2')]={'uniqueid':{'type':Sequelize[_0x5825('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x5825('0x3')]},'joinAt':{'type':Sequelize[_0x5825('0x4')]},'leaveAt':{'type':Sequelize[_0x5825('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf6e4=['DATE','STRING','moment','sequelize','exports'];(function(_0x1b745b,_0x3e2d40){var _0x120a9d=function(_0x882a6c){while(--_0x882a6c){_0x1b745b['push'](_0x1b745b['shift']());}};_0x120a9d(++_0x3e2d40);}(_0xf6e4,0x129));var _0x4f6e=function(_0x352aaf,_0x138f08){_0x352aaf=_0x352aaf-0x0;var _0x3c4f73=_0xf6e4[_0x352aaf];return _0x3c4f73;};'use strict';var moment=require(_0x4f6e('0x0'));var Sequelize=require(_0x4f6e('0x1'));module[_0x4f6e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x4f6e('0x3')]},'leaveAt':{'type':Sequelize[_0x4f6e('0x3')]},'acceptAt':{'type':Sequelize[_0x4f6e('0x3')]},'exitAt':{'type':Sequelize[_0x4f6e('0x3')]},'reason':{'type':Sequelize[_0x4f6e('0x4')]}};
\ No newline at end of file
index 73cfe9f..e80a215 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94a0=['mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','to-csv','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','sendStatus','error','stack','name','send','index','OpenchannelQueueReport','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','find','catch','create','body','destroy','params','describe','rimraf','fast-json-patch','request-promise','moment'];(function(_0x5f19ef,_0x484f8f){var _0x57bdbf=function(_0x1554e3){while(--_0x1554e3){_0x5f19ef['push'](_0x5f19ef['shift']());}};_0x57bdbf(++_0x484f8f);}(_0x94a0,0x1b2));var _0x094a=function(_0x22d72b,_0x112e6d){_0x22d72b=_0x22d72b-0x0;var _0x35f65f=_0x94a0[_0x22d72b];return _0x35f65f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x094a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x094a('0x1'));var rp=require(_0x094a('0x2'));var moment=require(_0x094a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x094a('0x4'));var util=require(_0x094a('0x5'));var path=require('path');var sox=require(_0x094a('0x6'));var csv=require('to-csv');var ejs=require(_0x094a('0x7'));var fs=require('fs');var fs_extra=require(_0x094a('0x8'));var _=require(_0x094a('0x9'));var squel=require(_0x094a('0xa'));var crypto=require(_0x094a('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x094a('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x094a('0xd'));var authService=require(_0x094a('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x094a('0xf'));var hardwareService=require(_0x094a('0x10'));var logger=require(_0x094a('0x11'))(_0x094a('0x12'));var utils=require(_0x094a('0x13'));var config=require(_0x094a('0x14'));var licenseUtil=require(_0x094a('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x26a109,_0x33c045){_0x33c045=_0x33c045||0xcc;return function(_0x5d82d0){if(_0x5d82d0){return _0x26a109['sendStatus'](_0x33c045);}return _0x26a109[_0x094a('0x16')](_0x33c045)[_0x094a('0x17')]();};}function respondWithResult(_0x35f5f2,_0x5ce24a){_0x5ce24a=_0x5ce24a||0xc8;return function(_0x3aa89c){if(_0x3aa89c){return _0x35f5f2['status'](_0x5ce24a)[_0x094a('0x18')](_0x3aa89c);}};}function respondWithFilteredResult(_0xf06636,_0x2b3a1b){return function(_0x633793){if(_0x633793){var _0x43274d=typeof _0x2b3a1b[_0x094a('0x19')]===_0x094a('0x1a')&&typeof _0x2b3a1b[_0x094a('0x1b')]===_0x094a('0x1a');var _0x1202c3=_0x633793[_0x094a('0x1c')];var _0x4ebc46=_0x43274d?0x0:_0x2b3a1b[_0x094a('0x19')];var _0x4ccffd=_0x43274d?_0x633793[_0x094a('0x1c')]:_0x2b3a1b[_0x094a('0x19')]+_0x2b3a1b[_0x094a('0x1b')];var _0x41ce09;if(_0x4ccffd>=_0x1202c3){_0x4ccffd=_0x1202c3;_0x41ce09=0xc8;}else{_0x41ce09=0xce;}_0xf06636[_0x094a('0x16')](_0x41ce09);return _0xf06636[_0x094a('0x1d')](_0x094a('0x1e'),_0x4ebc46+'-'+_0x4ccffd+'/'+_0x1202c3)[_0x094a('0x18')](_0x633793);}return null;};}function patchUpdates(_0x13b4ad){return function(_0x1db448){try{jsonpatch[_0x094a('0x1f')](_0x1db448,_0x13b4ad,!![]);}catch(_0x2334de){return BPromise[_0x094a('0x20')](_0x2334de);}return _0x1db448['save']();};}function saveUpdates(_0x48e531,_0x346efb){return function(_0x3940fc){if(_0x3940fc){return _0x3940fc[_0x094a('0x21')](_0x48e531)[_0x094a('0x22')](function(_0x1337e7){return _0x1337e7;});}return null;};}function removeEntity(_0x38d2a5,_0x433d4b){return function(_0x377927){if(_0x377927){return _0x377927['destroy']()[_0x094a('0x22')](function(){_0x38d2a5[_0x094a('0x16')](0xcc)[_0x094a('0x17')]();});}};}function handleEntityNotFound(_0x119be3,_0x2aec60){return function(_0x105b4f){if(!_0x105b4f){_0x119be3[_0x094a('0x23')](0x194);}return _0x105b4f;};}function handleError(_0xbc588b,_0x51056d){_0x51056d=_0x51056d||0x1f4;return function(_0x2ea170){logger[_0x094a('0x24')](_0x2ea170[_0x094a('0x25')]);if(_0x2ea170[_0x094a('0x26')]){delete _0x2ea170[_0x094a('0x26')];}_0xbc588b['status'](_0x51056d)[_0x094a('0x27')](_0x2ea170);};}exports[_0x094a('0x28')]=function(_0x556cd9,_0x24ebad){var _0x26e79f={},_0x1b695f={},_0x45e29d={'count':0x0,'rows':[]};var _0x1324ee=_['map'](db[_0x094a('0x29')]['rawAttributes'],function(_0x2cf524){return{'name':_0x2cf524[_0x094a('0x2a')],'type':_0x2cf524[_0x094a('0x2b')][_0x094a('0x2c')]};});_0x1b695f['model']=_['map'](_0x1324ee,_0x094a('0x26'));_0x1b695f[_0x094a('0x2d')]=_[_0x094a('0x2e')](_0x556cd9[_0x094a('0x2d')]);_0x1b695f['filters']=_[_0x094a('0x2f')](_0x1b695f[_0x094a('0x30')],_0x1b695f[_0x094a('0x2d')]);_0x26e79f[_0x094a('0x31')]=_['intersection'](_0x1b695f['model'],qs['fields'](_0x556cd9['query'][_0x094a('0x32')]));_0x26e79f[_0x094a('0x31')]=_0x26e79f['attributes'][_0x094a('0x33')]?_0x26e79f[_0x094a('0x31')]:_0x1b695f['model'];if(!_0x556cd9[_0x094a('0x2d')][_0x094a('0x34')](_0x094a('0x35'))){_0x26e79f[_0x094a('0x1b')]=qs[_0x094a('0x1b')](_0x556cd9['query'][_0x094a('0x1b')]);_0x26e79f[_0x094a('0x19')]=qs[_0x094a('0x19')](_0x556cd9['query'][_0x094a('0x19')]);}_0x26e79f['order']=qs[_0x094a('0x36')](_0x556cd9['query'][_0x094a('0x36')]);_0x26e79f[_0x094a('0x37')]=qs[_0x094a('0x38')](_[_0x094a('0x39')](_0x556cd9['query'],_0x1b695f[_0x094a('0x38')]),_0x1324ee);if(_0x556cd9[_0x094a('0x2d')][_0x094a('0x3a')]){_0x26e79f[_0x094a('0x37')]=_[_0x094a('0x3b')](_0x26e79f[_0x094a('0x37')],{'$or':_[_0x094a('0x3c')](_0x1324ee,function(_0x290e8d){if(_0x290e8d[_0x094a('0x2b')]!==_0x094a('0x3d')){var _0x2d0beb={};_0x2d0beb[_0x290e8d[_0x094a('0x26')]]={'$like':'%'+_0x556cd9['query'][_0x094a('0x3a')]+'%'};return _0x2d0beb;}})});}_0x26e79f=_[_0x094a('0x3b')]({},_0x26e79f,_0x556cd9[_0x094a('0x3e')]);var _0x1df82a={'where':_0x26e79f['where']};return db[_0x094a('0x29')][_0x094a('0x1c')](_0x1df82a)[_0x094a('0x22')](function(_0x1ce885){_0x45e29d[_0x094a('0x1c')]=_0x1ce885;if(_0x556cd9[_0x094a('0x2d')][_0x094a('0x3f')]){_0x26e79f[_0x094a('0x40')]=[{'all':!![]}];}return db[_0x094a('0x29')][_0x094a('0x41')](_0x26e79f);})['then'](function(_0x7a8a3e){_0x45e29d['rows']=_0x7a8a3e;return _0x45e29d;})[_0x094a('0x22')](respondWithFilteredResult(_0x24ebad,_0x26e79f))['catch'](handleError(_0x24ebad,null));};exports['show']=function(_0x9b176f,_0x3e17f7){var _0x54be9b={'raw':!![],'where':{'id':_0x9b176f['params']['id']}},_0x1c49a3={};_0x1c49a3[_0x094a('0x30')]=_['keys'](db[_0x094a('0x29')]['rawAttributes']);_0x1c49a3[_0x094a('0x2d')]=_[_0x094a('0x2e')](_0x9b176f[_0x094a('0x2d')]);_0x1c49a3[_0x094a('0x38')]=_[_0x094a('0x2f')](_0x1c49a3[_0x094a('0x30')],_0x1c49a3[_0x094a('0x2d')]);_0x54be9b[_0x094a('0x31')]=_['intersection'](_0x1c49a3[_0x094a('0x30')],qs[_0x094a('0x32')](_0x9b176f[_0x094a('0x2d')][_0x094a('0x32')]));_0x54be9b[_0x094a('0x31')]=_0x54be9b[_0x094a('0x31')][_0x094a('0x33')]?_0x54be9b[_0x094a('0x31')]:_0x1c49a3['model'];if(_0x9b176f[_0x094a('0x2d')][_0x094a('0x3f')]){_0x54be9b[_0x094a('0x40')]=[{'all':!![]}];}_0x54be9b=_[_0x094a('0x3b')]({},_0x54be9b,_0x9b176f[_0x094a('0x3e')]);return db[_0x094a('0x29')][_0x094a('0x42')](_0x54be9b)[_0x094a('0x22')](handleEntityNotFound(_0x3e17f7,null))['then'](respondWithResult(_0x3e17f7,null))[_0x094a('0x43')](handleError(_0x3e17f7,null));};exports[_0x094a('0x44')]=function(_0x43aeed,_0x248c3c){return db[_0x094a('0x29')]['create'](_0x43aeed[_0x094a('0x45')],{})[_0x094a('0x22')](respondWithResult(_0x248c3c,0xc9))[_0x094a('0x43')](handleError(_0x248c3c,null));};exports[_0x094a('0x21')]=function(_0x19b97e,_0x56aa7c){if(_0x19b97e[_0x094a('0x45')]['id']){delete _0x19b97e[_0x094a('0x45')]['id'];}return db[_0x094a('0x29')][_0x094a('0x42')]({'where':{'id':_0x19b97e['params']['id']}})[_0x094a('0x22')](handleEntityNotFound(_0x56aa7c,null))[_0x094a('0x22')](saveUpdates(_0x19b97e[_0x094a('0x45')],null))[_0x094a('0x22')](respondWithResult(_0x56aa7c,null))[_0x094a('0x43')](handleError(_0x56aa7c,null));};exports[_0x094a('0x46')]=function(_0x3beedf,_0x8a5710){return db['OpenchannelQueueReport'][_0x094a('0x42')]({'where':{'id':_0x3beedf[_0x094a('0x47')]['id']}})[_0x094a('0x22')](handleEntityNotFound(_0x8a5710,null))['then'](removeEntity(_0x8a5710,null))['catch'](handleError(_0x8a5710,null));};exports[_0x094a('0x48')]=function(_0x5db9ea,_0x3b5281){return db[_0x094a('0x29')]['describe']()[_0x094a('0x22')](respondWithResult(_0x3b5281,null))[_0x094a('0x43')](handleError(_0x3b5281,null));};
\ No newline at end of file
+var _0x7e1b=['name','send','index','map','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','OpenchannelQueueReport','includeAll','include','findAll','catch','show','rawAttributes','find','create','body','params','describe','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack'];(function(_0x3bf17b,_0x244873){var _0xe08416=function(_0x27b8dc){while(--_0x27b8dc){_0x3bf17b['push'](_0x3bf17b['shift']());}};_0xe08416(++_0x244873);}(_0x7e1b,0x19b));var _0xb7e1=function(_0x87b0ff,_0x314389){_0x87b0ff=_0x87b0ff-0x0;var _0x3bc0b2=_0x7e1b[_0x87b0ff];return _0x3bc0b2;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xb7e1('0x0'));var jsonpatch=require(_0xb7e1('0x1'));var rp=require(_0xb7e1('0x2'));var moment=require(_0xb7e1('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb7e1('0x4'));var util=require(_0xb7e1('0x5'));var path=require('path');var sox=require(_0xb7e1('0x6'));var csv=require('to-csv');var ejs=require(_0xb7e1('0x7'));var fs=require('fs');var fs_extra=require(_0xb7e1('0x8'));var _=require(_0xb7e1('0x9'));var squel=require(_0xb7e1('0xa'));var crypto=require('crypto');var jsforce=require(_0xb7e1('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xb7e1('0xc'));var querystring=require(_0xb7e1('0xd'));var Papa=require(_0xb7e1('0xe'));var Redis=require('ioredis');var authService=require(_0xb7e1('0xf'));var qs=require(_0xb7e1('0x10'));var as=require(_0xb7e1('0x11'));var hardwareService=require(_0xb7e1('0x12'));var logger=require(_0xb7e1('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xb7e1('0x14'));var licenseUtil=require(_0xb7e1('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x8fd3d9,_0x1b5d76){_0x1b5d76=_0x1b5d76||0xcc;return function(_0x122a6a){if(_0x122a6a){return _0x8fd3d9['sendStatus'](_0x1b5d76);}return _0x8fd3d9[_0xb7e1('0x16')](_0x1b5d76)[_0xb7e1('0x17')]();};}function respondWithResult(_0x2c1ea1,_0x1908cb){_0x1908cb=_0x1908cb||0xc8;return function(_0x5bdb87){if(_0x5bdb87){return _0x2c1ea1['status'](_0x1908cb)[_0xb7e1('0x18')](_0x5bdb87);}};}function respondWithFilteredResult(_0x4ee740,_0x48f59c){return function(_0x43515c){if(_0x43515c){var _0x33b41f=typeof _0x48f59c['offset']===_0xb7e1('0x19')&&typeof _0x48f59c[_0xb7e1('0x1a')]==='undefined';var _0x3cebf2=_0x43515c['count'];var _0x4cea3d=_0x33b41f?0x0:_0x48f59c['offset'];var _0x468556=_0x33b41f?_0x43515c[_0xb7e1('0x1b')]:_0x48f59c[_0xb7e1('0x1c')]+_0x48f59c[_0xb7e1('0x1a')];var _0x14f211;if(_0x468556>=_0x3cebf2){_0x468556=_0x3cebf2;_0x14f211=0xc8;}else{_0x14f211=0xce;}_0x4ee740['status'](_0x14f211);return _0x4ee740[_0xb7e1('0x1d')](_0xb7e1('0x1e'),_0x4cea3d+'-'+_0x468556+'/'+_0x3cebf2)[_0xb7e1('0x18')](_0x43515c);}return null;};}function patchUpdates(_0x36eba7){return function(_0x5b134a){try{jsonpatch[_0xb7e1('0x1f')](_0x5b134a,_0x36eba7,!![]);}catch(_0x1abb61){return BPromise[_0xb7e1('0x20')](_0x1abb61);}return _0x5b134a[_0xb7e1('0x21')]();};}function saveUpdates(_0x4b652d,_0x4cd898){return function(_0xbfb9f2){if(_0xbfb9f2){return _0xbfb9f2['update'](_0x4b652d)[_0xb7e1('0x22')](function(_0x578c56){return _0x578c56;});}return null;};}function removeEntity(_0x2a84ba,_0x2f1ae8){return function(_0x4741c0){if(_0x4741c0){return _0x4741c0[_0xb7e1('0x23')]()[_0xb7e1('0x22')](function(){_0x2a84ba[_0xb7e1('0x16')](0xcc)[_0xb7e1('0x17')]();});}};}function handleEntityNotFound(_0x527e46,_0xf53ab){return function(_0x1492c7){if(!_0x1492c7){_0x527e46[_0xb7e1('0x24')](0x194);}return _0x1492c7;};}function handleError(_0x42540d,_0x2250d8){_0x2250d8=_0x2250d8||0x1f4;return function(_0x4a68cf){logger[_0xb7e1('0x25')](_0x4a68cf[_0xb7e1('0x26')]);if(_0x4a68cf[_0xb7e1('0x27')]){delete _0x4a68cf['name'];}_0x42540d[_0xb7e1('0x16')](_0x2250d8)[_0xb7e1('0x28')](_0x4a68cf);};}exports[_0xb7e1('0x29')]=function(_0x295811,_0x43dc28){var _0x3f1f27={},_0x25b437={},_0x239844={'count':0x0,'rows':[]};var _0x1179d6=_[_0xb7e1('0x2a')](db['OpenchannelQueueReport']['rawAttributes'],function(_0x6b011){return{'name':_0x6b011[_0xb7e1('0x2b')],'type':_0x6b011[_0xb7e1('0x2c')][_0xb7e1('0x2d')]};});_0x25b437['model']=_[_0xb7e1('0x2a')](_0x1179d6,'name');_0x25b437[_0xb7e1('0x2e')]=_[_0xb7e1('0x2f')](_0x295811['query']);_0x25b437[_0xb7e1('0x30')]=_[_0xb7e1('0x31')](_0x25b437[_0xb7e1('0x32')],_0x25b437[_0xb7e1('0x2e')]);_0x3f1f27[_0xb7e1('0x33')]=_['intersection'](_0x25b437[_0xb7e1('0x32')],qs[_0xb7e1('0x34')](_0x295811[_0xb7e1('0x2e')][_0xb7e1('0x34')]));_0x3f1f27['attributes']=_0x3f1f27['attributes'][_0xb7e1('0x35')]?_0x3f1f27[_0xb7e1('0x33')]:_0x25b437[_0xb7e1('0x32')];if(!_0x295811[_0xb7e1('0x2e')][_0xb7e1('0x36')](_0xb7e1('0x37'))){_0x3f1f27[_0xb7e1('0x1a')]=qs[_0xb7e1('0x1a')](_0x295811[_0xb7e1('0x2e')][_0xb7e1('0x1a')]);_0x3f1f27[_0xb7e1('0x1c')]=qs[_0xb7e1('0x1c')](_0x295811[_0xb7e1('0x2e')][_0xb7e1('0x1c')]);}_0x3f1f27['order']=qs[_0xb7e1('0x38')](_0x295811[_0xb7e1('0x2e')][_0xb7e1('0x38')]);_0x3f1f27[_0xb7e1('0x39')]=qs[_0xb7e1('0x30')](_[_0xb7e1('0x3a')](_0x295811[_0xb7e1('0x2e')],_0x25b437['filters']),_0x1179d6);if(_0x295811[_0xb7e1('0x2e')][_0xb7e1('0x3b')]){_0x3f1f27[_0xb7e1('0x39')]=_[_0xb7e1('0x3c')](_0x3f1f27[_0xb7e1('0x39')],{'$or':_[_0xb7e1('0x2a')](_0x1179d6,function(_0x2e14ac){if(_0x2e14ac[_0xb7e1('0x2c')]!==_0xb7e1('0x3d')){var _0x253dc8={};_0x253dc8[_0x2e14ac['name']]={'$like':'%'+_0x295811[_0xb7e1('0x2e')][_0xb7e1('0x3b')]+'%'};return _0x253dc8;}})});}_0x3f1f27=_[_0xb7e1('0x3c')]({},_0x3f1f27,_0x295811[_0xb7e1('0x3e')]);var _0x39f2dd={'where':_0x3f1f27[_0xb7e1('0x39')]};return db[_0xb7e1('0x3f')][_0xb7e1('0x1b')](_0x39f2dd)[_0xb7e1('0x22')](function(_0x4009f6){_0x239844[_0xb7e1('0x1b')]=_0x4009f6;if(_0x295811[_0xb7e1('0x2e')][_0xb7e1('0x40')]){_0x3f1f27[_0xb7e1('0x41')]=[{'all':!![]}];}return db[_0xb7e1('0x3f')][_0xb7e1('0x42')](_0x3f1f27);})['then'](function(_0x54877c){_0x239844['rows']=_0x54877c;return _0x239844;})[_0xb7e1('0x22')](respondWithFilteredResult(_0x43dc28,_0x3f1f27))[_0xb7e1('0x43')](handleError(_0x43dc28,null));};exports[_0xb7e1('0x44')]=function(_0x123b51,_0x3e0acf){var _0x3c7583={'raw':!![],'where':{'id':_0x123b51['params']['id']}},_0x2fc047={};_0x2fc047[_0xb7e1('0x32')]=_[_0xb7e1('0x2f')](db[_0xb7e1('0x3f')][_0xb7e1('0x45')]);_0x2fc047[_0xb7e1('0x2e')]=_[_0xb7e1('0x2f')](_0x123b51[_0xb7e1('0x2e')]);_0x2fc047[_0xb7e1('0x30')]=_['intersection'](_0x2fc047[_0xb7e1('0x32')],_0x2fc047[_0xb7e1('0x2e')]);_0x3c7583[_0xb7e1('0x33')]=_['intersection'](_0x2fc047['model'],qs['fields'](_0x123b51[_0xb7e1('0x2e')]['fields']));_0x3c7583[_0xb7e1('0x33')]=_0x3c7583[_0xb7e1('0x33')][_0xb7e1('0x35')]?_0x3c7583['attributes']:_0x2fc047[_0xb7e1('0x32')];if(_0x123b51[_0xb7e1('0x2e')][_0xb7e1('0x40')]){_0x3c7583[_0xb7e1('0x41')]=[{'all':!![]}];}_0x3c7583=_[_0xb7e1('0x3c')]({},_0x3c7583,_0x123b51[_0xb7e1('0x3e')]);return db['OpenchannelQueueReport'][_0xb7e1('0x46')](_0x3c7583)[_0xb7e1('0x22')](handleEntityNotFound(_0x3e0acf,null))[_0xb7e1('0x22')](respondWithResult(_0x3e0acf,null))[_0xb7e1('0x43')](handleError(_0x3e0acf,null));};exports[_0xb7e1('0x47')]=function(_0x3b81a5,_0x1d200e){return db[_0xb7e1('0x3f')][_0xb7e1('0x47')](_0x3b81a5[_0xb7e1('0x48')],{})['then'](respondWithResult(_0x1d200e,0xc9))[_0xb7e1('0x43')](handleError(_0x1d200e,null));};exports['update']=function(_0x2e9893,_0x11c419){if(_0x2e9893[_0xb7e1('0x48')]['id']){delete _0x2e9893[_0xb7e1('0x48')]['id'];}return db[_0xb7e1('0x3f')][_0xb7e1('0x46')]({'where':{'id':_0x2e9893[_0xb7e1('0x49')]['id']}})[_0xb7e1('0x22')](handleEntityNotFound(_0x11c419,null))[_0xb7e1('0x22')](saveUpdates(_0x2e9893['body'],null))[_0xb7e1('0x22')](respondWithResult(_0x11c419,null))[_0xb7e1('0x43')](handleError(_0x11c419,null));};exports[_0xb7e1('0x23')]=function(_0x130d03,_0x17e209){return db['OpenchannelQueueReport'][_0xb7e1('0x46')]({'where':{'id':_0x130d03[_0xb7e1('0x49')]['id']}})[_0xb7e1('0x22')](handleEntityNotFound(_0x17e209,null))[_0xb7e1('0x22')](removeEntity(_0x17e209,null))['catch'](handleError(_0x17e209,null));};exports[_0xb7e1('0x4a')]=function(_0x54fb0,_0x92023c){return db['OpenchannelQueueReport'][_0xb7e1('0x4a')]()['then'](respondWithResult(_0x92023c,null))[_0xb7e1('0x43')](handleError(_0x92023c,null));};
\ No newline at end of file
index cba99bd..eba78b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['util','api','moment','bluebird','request-promise','path','../../config/environment','./openchannelQueueReport.attributes','exports','define','report_openchannel_queue','uniqueid','lodash'];(function(_0x3eebe0,_0x7c52eb){var _0x409153=function(_0x4fda36){while(--_0x4fda36){_0x3eebe0['push'](_0x3eebe0['shift']());}};_0x409153(++_0x7c52eb);}(_0x5fc3,0xa8));var _0x35fc=function(_0x15cbce,_0xda8402){_0x15cbce=_0x15cbce-0x0;var _0x257f29=_0x5fc3[_0x15cbce];return _0x257f29;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));module[_0x35fc('0x9')]=function(_0x5b85ad,_0x5754be){return _0x5b85ad[_0x35fc('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[{'name':_0x35fc('0xc'),'fields':[_0x35fc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','uniqueid','lodash','util'];(function(_0x174ef5,_0x256e8e){var _0x1cc379=function(_0x3eafcf){while(--_0x3eafcf){_0x174ef5['push'](_0x174ef5['shift']());}};_0x1cc379(++_0x256e8e);}(_0x814b,0x1a2));var _0xb814=function(_0x1d291d,_0x17314a){_0x1d291d=_0x1d291d-0x0;var _0x44cc4e=_0x814b[_0x1d291d];return _0x44cc4e;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'report_openchannel_queue','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index d1bf36e..c071ace 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7894=['request\x20sent','stringify','error','message','CreateOpenchannelQueueReport','OpenchannelQueueReport','body','options','raw','then','catch','update','where','attributes','limit','UpdateOpenchannelQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','OpenchannelQueueReport,\x20%s,\x20%s','debug'];(function(_0xb3db79,_0x221433){var _0x44af87=function(_0x384561){while(--_0x384561){_0xb3db79['push'](_0xb3db79['shift']());}};_0x44af87(++_0x221433);}(_0x7894,0x170));var _0x4789=function(_0xee6171,_0x5994d1){_0xee6171=_0xee6171-0x0;var _0xb13a9e=_0x7894[_0xee6171];return _0xb13a9e;};'use strict';var _=require(_0x4789('0x0'));var util=require(_0x4789('0x1'));var moment=require(_0x4789('0x2'));var BPromise=require(_0x4789('0x3'));var rs=require(_0x4789('0x4'));var fs=require('fs');var Redis=require(_0x4789('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x4789('0x6'));var logger=require(_0x4789('0x7'))('rpc');var config=require(_0x4789('0x8'));var jayson=require(_0x4789('0x9'));var client=jayson[_0x4789('0xa')][_0x4789('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x114a90,_0x298902,_0x13b7f6){return new BPromise(function(_0x5a45ae,_0x49d256){return client[_0x4789('0xc')](_0x114a90,_0x13b7f6)['then'](function(_0x2e8038){logger[_0x4789('0xd')](_0x4789('0xe'),_0x298902,'request\x20sent');logger[_0x4789('0xf')]('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0x298902,_0x4789('0x10'),JSON[_0x4789('0x11')](_0x2e8038));if(_0x2e8038[_0x4789('0x12')]){if(_0x2e8038['error']['code']===0x1f4){logger[_0x4789('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x298902,_0x2e8038[_0x4789('0x12')]['message']);return _0x49d256(_0x2e8038[_0x4789('0x12')][_0x4789('0x13')]);}logger['error'](_0x4789('0xe'),_0x298902,_0x2e8038['error'][_0x4789('0x13')]);return _0x5a45ae(_0x2e8038[_0x4789('0x12')][_0x4789('0x13')]);}else{logger['info'](_0x4789('0xe'),_0x298902,_0x4789('0x10'));_0x5a45ae(_0x2e8038['result'][_0x4789('0x13')]);}})['catch'](function(_0x118f97){logger[_0x4789('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x298902,_0x118f97);_0x49d256(_0x118f97);});});}exports[_0x4789('0x14')]=function(_0x5af7b3){var _0x2f1511=this;return new Promise(function(_0x56d799,_0x19dc59){return db[_0x4789('0x15')]['create'](_0x5af7b3[_0x4789('0x16')],{'raw':_0x5af7b3[_0x4789('0x17')]?_0x5af7b3[_0x4789('0x17')][_0x4789('0x18')]===undefined?!![]:![]:!![]})[_0x4789('0x19')](function(_0x3a707d){logger[_0x4789('0xd')](_0x4789('0x14'),_0x5af7b3);logger[_0x4789('0xf')](_0x4789('0x14'),_0x5af7b3,JSON[_0x4789('0x11')](_0x3a707d));_0x56d799(_0x3a707d);})[_0x4789('0x1a')](function(_0x4f7ceb){logger[_0x4789('0x12')](_0x4789('0x14'),_0x4f7ceb['message'],_0x5af7b3);_0x19dc59(_0x2f1511[_0x4789('0x12')](0x1f4,_0x4f7ceb[_0x4789('0x13')]));});});};exports['UpdateOpenchannelQueueReport']=function(_0xff56dd){var _0x1ca6ca=this;return new Promise(function(_0x54d9c1,_0xd8601e){return db['OpenchannelQueueReport'][_0x4789('0x1b')](_0xff56dd[_0x4789('0x16')],{'raw':_0xff56dd[_0x4789('0x17')]?_0xff56dd[_0x4789('0x17')][_0x4789('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xff56dd[_0x4789('0x17')]?_0xff56dd[_0x4789('0x17')][_0x4789('0x1c')]||null:null,'attributes':_0xff56dd[_0x4789('0x17')]?_0xff56dd[_0x4789('0x17')][_0x4789('0x1d')]||null:null,'limit':_0xff56dd[_0x4789('0x17')]?_0xff56dd[_0x4789('0x17')][_0x4789('0x1e')]||null:null})[_0x4789('0x19')](function(_0x3095a1){logger[_0x4789('0xd')](_0x4789('0x1f'),_0xff56dd);logger['debug']('UpdateOpenchannelQueueReport',_0xff56dd,JSON[_0x4789('0x11')](_0x3095a1));_0x54d9c1(_0x3095a1);})['catch'](function(_0x490ea3){logger['error'](_0x4789('0x1f'),_0x490ea3[_0x4789('0x13')],_0xff56dd);_0xd8601e(_0x1ca6ca[_0x4789('0x12')](0x1f4,_0x490ea3[_0x4789('0x13')]));});});};
\ No newline at end of file
+var _0xa32b=['OpenchannelQueueReport','create','body','CreateOpenchannelQueueReport','stringify','options','raw','where','attributes','limit','UpdateOpenchannelQueueReport','lodash','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','debug','request\x20sent','error','OpenchannelQueueReport,\x20%s,\x20%s','message','info','result','catch'];(function(_0x4f6f7c,_0x4f49f3){var _0x56a60f=function(_0x5e4563){while(--_0x5e4563){_0x4f6f7c['push'](_0x4f6f7c['shift']());}};_0x56a60f(++_0x4f49f3);}(_0xa32b,0x68));var _0xba32=function(_0x4f431d,_0xd51a3b){_0x4f431d=_0x4f431d-0x0;var _0x4f31e1=_0xa32b[_0x4f431d];return _0x4f31e1;};'use strict';var _=require(_0xba32('0x0'));var util=require('util');var moment=require(_0xba32('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xba32('0x2'));var db=require(_0xba32('0x3'))['db'];var utils=require(_0xba32('0x4'));var logger=require('../../config/logger')(_0xba32('0x5'));var config=require(_0xba32('0x6'));var jayson=require(_0xba32('0x7'));var client=jayson[_0xba32('0x8')][_0xba32('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5c5a59,_0x1b1332,_0x4edbc6){return new BPromise(function(_0xcdcc5b,_0x13395b){return client[_0xba32('0xa')](_0x5c5a59,_0x4edbc6)[_0xba32('0xb')](function(_0x5d8f64){logger['info']('OpenchannelQueueReport,\x20%s,\x20%s',_0x1b1332,'request\x20sent');logger[_0xba32('0xc')]('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0x1b1332,_0xba32('0xd'),JSON['stringify'](_0x5d8f64));if(_0x5d8f64[_0xba32('0xe')]){if(_0x5d8f64['error']['code']===0x1f4){logger[_0xba32('0xe')](_0xba32('0xf'),_0x1b1332,_0x5d8f64[_0xba32('0xe')][_0xba32('0x10')]);return _0x13395b(_0x5d8f64[_0xba32('0xe')]['message']);}logger[_0xba32('0xe')](_0xba32('0xf'),_0x1b1332,_0x5d8f64[_0xba32('0xe')][_0xba32('0x10')]);return _0xcdcc5b(_0x5d8f64[_0xba32('0xe')][_0xba32('0x10')]);}else{logger[_0xba32('0x11')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x1b1332,_0xba32('0xd'));_0xcdcc5b(_0x5d8f64[_0xba32('0x12')][_0xba32('0x10')]);}})[_0xba32('0x13')](function(_0x310dee){logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0x1b1332,_0x310dee);_0x13395b(_0x310dee);});});}exports['CreateOpenchannelQueueReport']=function(_0x5c3fe6){var _0x234db9=this;return new Promise(function(_0x1ae3ea,_0x42803d){return db[_0xba32('0x14')][_0xba32('0x15')](_0x5c3fe6[_0xba32('0x16')],{'raw':_0x5c3fe6['options']?_0x5c3fe6['options']['raw']===undefined?!![]:![]:!![]})[_0xba32('0xb')](function(_0x51c43a){logger[_0xba32('0x11')](_0xba32('0x17'),_0x5c3fe6);logger[_0xba32('0xc')](_0xba32('0x17'),_0x5c3fe6,JSON[_0xba32('0x18')](_0x51c43a));_0x1ae3ea(_0x51c43a);})[_0xba32('0x13')](function(_0xdfa807){logger['error'](_0xba32('0x17'),_0xdfa807[_0xba32('0x10')],_0x5c3fe6);_0x42803d(_0x234db9[_0xba32('0xe')](0x1f4,_0xdfa807[_0xba32('0x10')]));});});};exports['UpdateOpenchannelQueueReport']=function(_0x4b03a5){var _0x2f3318=this;return new Promise(function(_0x3a8f30,_0x4cfd59){return db[_0xba32('0x14')]['update'](_0x4b03a5[_0xba32('0x16')],{'raw':_0x4b03a5[_0xba32('0x19')]?_0x4b03a5[_0xba32('0x19')][_0xba32('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b03a5[_0xba32('0x19')]?_0x4b03a5[_0xba32('0x19')][_0xba32('0x1b')]||null:null,'attributes':_0x4b03a5['options']?_0x4b03a5[_0xba32('0x19')][_0xba32('0x1c')]||null:null,'limit':_0x4b03a5[_0xba32('0x19')]?_0x4b03a5[_0xba32('0x19')][_0xba32('0x1d')]||null:null})[_0xba32('0xb')](function(_0x27bc6f){logger[_0xba32('0x11')](_0xba32('0x1e'),_0x4b03a5);logger['debug'](_0xba32('0x1e'),_0x4b03a5,JSON[_0xba32('0x18')](_0x27bc6f));_0x3a8f30(_0x27bc6f);})[_0xba32('0x13')](function(_0x2a466e){logger[_0xba32('0xe')]('UpdateOpenchannelQueueReport',_0x2a466e[_0xba32('0x10')],_0x4b03a5);_0x4cfd59(_0x2f3318['error'](0x1f4,_0x2a466e[_0xba32('0x10')]));});});};
\ No newline at end of file
index 3348765..2f033a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0168=['put','/:id','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','get','index','isAuthenticated','describe','show','post','create'];(function(_0x2bf11a,_0x5b1b13){var _0x49ed23=function(_0xd0825b){while(--_0xd0825b){_0x2bf11a['push'](_0x2bf11a['shift']());}};_0x49ed23(++_0x5b1b13);}(_0x0168,0xb1));var _0x8016=function(_0x5b8b0d,_0x58f554){_0x5b8b0d=_0x5b8b0d-0x0;var _0x18c961=_0x0168[_0x5b8b0d];return _0x18c961;};'use strict';var multer=require('multer');var util=require(_0x8016('0x0'));var path=require(_0x8016('0x1'));var timeout=require('connect-timeout');var express=require(_0x8016('0x2'));var router=express[_0x8016('0x3')]();var fs_extra=require(_0x8016('0x4'));var auth=require(_0x8016('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./openchannelTransferReport.controller');router[_0x8016('0x6')]('/',auth['isAuthenticated'](),controller[_0x8016('0x7')]);router['get']('/describe',auth[_0x8016('0x8')](),controller[_0x8016('0x9')]);router[_0x8016('0x6')]('/:id',auth[_0x8016('0x8')](),controller[_0x8016('0xa')]);router[_0x8016('0xb')]('/',auth[_0x8016('0x8')](),controller[_0x8016('0xc')]);router[_0x8016('0xd')](_0x8016('0xe'),auth['isAuthenticated'](),controller[_0x8016('0xf')]);router[_0x8016('0x10')]('/:id',auth[_0x8016('0x8')](),controller[_0x8016('0x11')]);module[_0x8016('0x12')]=router;
\ No newline at end of file
+var _0xaadc=['multer','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','index','describe','/:id','show','create','put','delete','exports'];(function(_0x7d2886,_0xdf4bfd){var _0x6f31a1=function(_0x3db146){while(--_0x3db146){_0x7d2886['push'](_0x7d2886['shift']());}};_0x6f31a1(++_0xdf4bfd);}(_0xaadc,0xc6));var _0xcaad=function(_0x6e82ab,_0x5d8ab3){_0x6e82ab=_0x6e82ab-0x0;var _0x4725fc=_0xaadc[_0x6e82ab];return _0x4725fc;};'use strict';var multer=require(_0xcaad('0x0'));var util=require(_0xcaad('0x1'));var path=require(_0xcaad('0x2'));var timeout=require(_0xcaad('0x3'));var express=require('express');var router=express[_0xcaad('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xcaad('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xcaad('0x6'));var controller=require(_0xcaad('0x7'));router[_0xcaad('0x8')]('/',auth[_0xcaad('0x9')](),controller[_0xcaad('0xa')]);router[_0xcaad('0x8')]('/describe',auth['isAuthenticated'](),controller[_0xcaad('0xb')]);router[_0xcaad('0x8')](_0xcaad('0xc'),auth['isAuthenticated'](),controller[_0xcaad('0xd')]);router['post']('/',auth[_0xcaad('0x9')](),controller[_0xcaad('0xe')]);router[_0xcaad('0xf')](_0xcaad('0xc'),auth[_0xcaad('0x9')](),controller['update']);router[_0xcaad('0x10')](_0xcaad('0xc'),auth[_0xcaad('0x9')](),controller['destroy']);module[_0xcaad('0x11')]=router;
\ No newline at end of file
index 9a3a639..46400bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['moment','sequelize','exports','ENUM','agent','queue','DATE','NOW'];(function(_0x160e58,_0x95e86){var _0x14b3d1=function(_0x34aa83){while(--_0x34aa83){_0x160e58['push'](_0x160e58['shift']());}};_0x14b3d1(++_0x95e86);}(_0x00bb,0x1d8));var _0xb00b=function(_0x23e7c1,_0x35110c){_0x23e7c1=_0x23e7c1-0x0;var _0x1add43=_0x00bb[_0x23e7c1];return _0x1add43;};'use strict';var moment=require(_0xb00b('0x0'));var Sequelize=require(_0xb00b('0x1'));module[_0xb00b('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb00b('0x3')]('account',_0xb00b('0x4'),_0xb00b('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize[_0xb00b('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xb00b('0x7')]}};
\ No newline at end of file
+var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0xe1c314,_0x4782dd){var _0x3e119d=function(_0x10e62f){while(--_0x10e62f){_0xe1c314['push'](_0xe1c314['shift']());}};_0x3e119d(++_0x4782dd);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3bfdde,_0x306be4){_0x3bfdde=_0x3bfdde-0x0;var _0x3f752a=_0xcb91[_0x3bfdde];return _0x3f752a;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
index 502a11c..6b46217 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x915e=['map','OpenchannelTransferReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','then','include','findAll','catch','show','params','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','destroy','error','name','send','index'];(function(_0x2468c3,_0x29433d){var _0x2f49fd=function(_0x38f166){while(--_0x38f166){_0x2468c3['push'](_0x2468c3['shift']());}};_0x2f49fd(++_0x29433d);}(_0x915e,0x6b));var _0xe915=function(_0x1fb5da,_0x5aadbd){_0x1fb5da=_0x1fb5da-0x0;var _0x43b79c=_0x915e[_0x1fb5da];return _0x43b79c;};'use strict';var emlformat=require(_0xe915('0x0'));var rimraf=require(_0xe915('0x1'));var zipdir=require(_0xe915('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe915('0x3'));var moment=require(_0xe915('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xe915('0x5'));var util=require('util');var path=require(_0xe915('0x6'));var sox=require(_0xe915('0x7'));var csv=require(_0xe915('0x8'));var ejs=require(_0xe915('0x9'));var fs=require('fs');var fs_extra=require(_0xe915('0xa'));var _=require(_0xe915('0xb'));var squel=require(_0xe915('0xc'));var crypto=require(_0xe915('0xd'));var jsforce=require(_0xe915('0xe'));var deskjs=require(_0xe915('0xf'));var toCsv=require(_0xe915('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe915('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xe915('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe915('0x12'))(_0xe915('0x13'));var utils=require(_0xe915('0x14'));var config=require(_0xe915('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xe915('0x16'))['db'];function respondWithStatusCode(_0x4a7b1c,_0x4f9316){_0x4f9316=_0x4f9316||0xcc;return function(_0x21bbd5){if(_0x21bbd5){return _0x4a7b1c[_0xe915('0x17')](_0x4f9316);}return _0x4a7b1c[_0xe915('0x18')](_0x4f9316)[_0xe915('0x19')]();};}function respondWithResult(_0x1b6ec1,_0x45f6d8){_0x45f6d8=_0x45f6d8||0xc8;return function(_0x988ac1){if(_0x988ac1){return _0x1b6ec1['status'](_0x45f6d8)['json'](_0x988ac1);}};}function respondWithFilteredResult(_0x19b434,_0x131e20){return function(_0x41b5ba){if(_0x41b5ba){var _0x5b6689=typeof _0x131e20[_0xe915('0x1a')]===_0xe915('0x1b')&&typeof _0x131e20[_0xe915('0x1c')]==='undefined';var _0x10d740=_0x41b5ba['count'];var _0x562c72=_0x5b6689?0x0:_0x131e20['offset'];var _0x4d22ac=_0x5b6689?_0x41b5ba[_0xe915('0x1d')]:_0x131e20[_0xe915('0x1a')]+_0x131e20[_0xe915('0x1c')];var _0x1eadc7;if(_0x4d22ac>=_0x10d740){_0x4d22ac=_0x10d740;_0x1eadc7=0xc8;}else{_0x1eadc7=0xce;}_0x19b434[_0xe915('0x18')](_0x1eadc7);return _0x19b434[_0xe915('0x1e')](_0xe915('0x1f'),_0x562c72+'-'+_0x4d22ac+'/'+_0x10d740)[_0xe915('0x20')](_0x41b5ba);}return null;};}function patchUpdates(_0x367e5b){return function(_0x1cb168){try{jsonpatch['apply'](_0x1cb168,_0x367e5b,!![]);}catch(_0x25b7ea){return BPromise[_0xe915('0x21')](_0x25b7ea);}return _0x1cb168[_0xe915('0x22')]();};}function saveUpdates(_0x11d821,_0x2e04d5){return function(_0x59fb4e){if(_0x59fb4e){return _0x59fb4e[_0xe915('0x23')](_0x11d821)['then'](function(_0x111462){return _0x111462;});}return null;};}function removeEntity(_0x32d220,_0x483f60){return function(_0x2a3eaa){if(_0x2a3eaa){return _0x2a3eaa[_0xe915('0x24')]()['then'](function(){_0x32d220[_0xe915('0x18')](0xcc)[_0xe915('0x19')]();});}};}function handleEntityNotFound(_0x168ad7,_0x268393){return function(_0x88e327){if(!_0x88e327){_0x168ad7[_0xe915('0x17')](0x194);}return _0x88e327;};}function handleError(_0x4187eb,_0x50482a){_0x50482a=_0x50482a||0x1f4;return function(_0x5c429a){logger[_0xe915('0x25')](_0x5c429a['stack']);if(_0x5c429a[_0xe915('0x26')]){delete _0x5c429a['name'];}_0x4187eb['status'](_0x50482a)[_0xe915('0x27')](_0x5c429a);};}exports[_0xe915('0x28')]=function(_0x4adbd5,_0x239b8e){var _0x2fb0b4={},_0x4c0f51={},_0x16a9f3={'count':0x0,'rows':[]};var _0x5415ea=_[_0xe915('0x29')](db[_0xe915('0x2a')][_0xe915('0x2b')],function(_0x415fa3){return{'name':_0x415fa3[_0xe915('0x2c')],'type':_0x415fa3[_0xe915('0x2d')][_0xe915('0x2e')]};});_0x4c0f51[_0xe915('0x2f')]=_[_0xe915('0x29')](_0x5415ea,'name');_0x4c0f51['query']=_[_0xe915('0x30')](_0x4adbd5[_0xe915('0x31')]);_0x4c0f51[_0xe915('0x32')]=_[_0xe915('0x33')](_0x4c0f51[_0xe915('0x2f')],_0x4c0f51[_0xe915('0x31')]);_0x2fb0b4[_0xe915('0x34')]=_[_0xe915('0x33')](_0x4c0f51[_0xe915('0x2f')],qs[_0xe915('0x35')](_0x4adbd5[_0xe915('0x31')][_0xe915('0x35')]));_0x2fb0b4[_0xe915('0x34')]=_0x2fb0b4[_0xe915('0x34')][_0xe915('0x36')]?_0x2fb0b4[_0xe915('0x34')]:_0x4c0f51['model'];if(!_0x4adbd5['query'][_0xe915('0x37')](_0xe915('0x38'))){_0x2fb0b4['limit']=qs[_0xe915('0x1c')](_0x4adbd5[_0xe915('0x31')][_0xe915('0x1c')]);_0x2fb0b4[_0xe915('0x1a')]=qs['offset'](_0x4adbd5['query'][_0xe915('0x1a')]);}_0x2fb0b4['order']=qs[_0xe915('0x39')](_0x4adbd5[_0xe915('0x31')][_0xe915('0x39')]);_0x2fb0b4[_0xe915('0x3a')]=qs[_0xe915('0x32')](_[_0xe915('0x3b')](_0x4adbd5[_0xe915('0x31')],_0x4c0f51[_0xe915('0x32')]),_0x5415ea);if(_0x4adbd5[_0xe915('0x31')]['filter']){_0x2fb0b4[_0xe915('0x3a')]=_[_0xe915('0x3c')](_0x2fb0b4[_0xe915('0x3a')],{'$or':_['map'](_0x5415ea,function(_0x503c1f){if(_0x503c1f[_0xe915('0x2d')]!==_0xe915('0x3d')){var _0x7d4772={};_0x7d4772[_0x503c1f[_0xe915('0x26')]]={'$like':'%'+_0x4adbd5[_0xe915('0x31')][_0xe915('0x3e')]+'%'};return _0x7d4772;}})});}_0x2fb0b4=_[_0xe915('0x3c')]({},_0x2fb0b4,_0x4adbd5[_0xe915('0x3f')]);var _0x4477b7={'where':_0x2fb0b4['where']};return db[_0xe915('0x2a')][_0xe915('0x1d')](_0x4477b7)[_0xe915('0x40')](function(_0x4eab51){_0x16a9f3['count']=_0x4eab51;if(_0x4adbd5[_0xe915('0x31')]['includeAll']){_0x2fb0b4[_0xe915('0x41')]=[{'all':!![]}];}return db[_0xe915('0x2a')][_0xe915('0x42')](_0x2fb0b4);})[_0xe915('0x40')](function(_0x55c50e){_0x16a9f3['rows']=_0x55c50e;return _0x16a9f3;})[_0xe915('0x40')](respondWithFilteredResult(_0x239b8e,_0x2fb0b4))[_0xe915('0x43')](handleError(_0x239b8e,null));};exports[_0xe915('0x44')]=function(_0x5833a6,_0x329860){var _0x4d828a={'raw':!![],'where':{'id':_0x5833a6[_0xe915('0x45')]['id']}},_0x3c0c7f={};_0x3c0c7f[_0xe915('0x2f')]=_[_0xe915('0x30')](db['OpenchannelTransferReport'][_0xe915('0x2b')]);_0x3c0c7f['query']=_[_0xe915('0x30')](_0x5833a6[_0xe915('0x31')]);_0x3c0c7f[_0xe915('0x32')]=_['intersection'](_0x3c0c7f[_0xe915('0x2f')],_0x3c0c7f[_0xe915('0x31')]);_0x4d828a['attributes']=_[_0xe915('0x33')](_0x3c0c7f[_0xe915('0x2f')],qs['fields'](_0x5833a6['query'][_0xe915('0x35')]));_0x4d828a[_0xe915('0x34')]=_0x4d828a[_0xe915('0x34')]['length']?_0x4d828a[_0xe915('0x34')]:_0x3c0c7f[_0xe915('0x2f')];if(_0x5833a6[_0xe915('0x31')]['includeAll']){_0x4d828a[_0xe915('0x41')]=[{'all':!![]}];}_0x4d828a=_['merge']({},_0x4d828a,_0x5833a6[_0xe915('0x3f')]);return db[_0xe915('0x2a')][_0xe915('0x46')](_0x4d828a)[_0xe915('0x40')](handleEntityNotFound(_0x329860,null))[_0xe915('0x40')](respondWithResult(_0x329860,null))[_0xe915('0x43')](handleError(_0x329860,null));};exports[_0xe915('0x47')]=function(_0x4fec35,_0x5c1be6){return db[_0xe915('0x2a')]['create'](_0x4fec35[_0xe915('0x48')],{})[_0xe915('0x40')](respondWithResult(_0x5c1be6,0xc9))[_0xe915('0x43')](handleError(_0x5c1be6,null));};exports['update']=function(_0x40fc0d,_0x414303){if(_0x40fc0d[_0xe915('0x48')]['id']){delete _0x40fc0d[_0xe915('0x48')]['id'];}return db[_0xe915('0x2a')]['find']({'where':{'id':_0x40fc0d[_0xe915('0x45')]['id']}})[_0xe915('0x40')](handleEntityNotFound(_0x414303,null))[_0xe915('0x40')](saveUpdates(_0x40fc0d['body'],null))[_0xe915('0x40')](respondWithResult(_0x414303,null))[_0xe915('0x43')](handleError(_0x414303,null));};exports[_0xe915('0x24')]=function(_0xaf62de,_0x2422e3){return db[_0xe915('0x2a')]['find']({'where':{'id':_0xaf62de[_0xe915('0x45')]['id']}})[_0xe915('0x40')](handleEntityNotFound(_0x2422e3,null))[_0xe915('0x40')](removeEntity(_0x2422e3,null))[_0xe915('0x43')](handleError(_0x2422e3,null));};exports[_0xe915('0x49')]=function(_0x4efdb2,_0x4cd343){return db[_0xe915('0x2a')][_0xe915('0x49')]()[_0xe915('0x40')](respondWithResult(_0x4cd343,null))['catch'](handleError(_0x4cd343,null));};
\ No newline at end of file
+var _0x998c=['merge','where','VIRTUAL','include','findAll','catch','show','params','keys','includeAll','options','find','create','body','eml-format','rimraf','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','map','OpenchannelTransferReport','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter'];(function(_0x3e885e,_0xc3876d){var _0x36f906=function(_0x30d9b1){while(--_0x30d9b1){_0x3e885e['push'](_0x3e885e['shift']());}};_0x36f906(++_0xc3876d);}(_0x998c,0xe9));var _0xc998=function(_0x4aea3a,_0x3839f9){_0x4aea3a=_0x4aea3a-0x0;var _0x5a349e=_0x998c[_0x4aea3a];return _0x5a349e;};'use strict';var emlformat=require(_0xc998('0x0'));var rimraf=require(_0xc998('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc998('0x2'));var rp=require('request-promise');var moment=require(_0xc998('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xc998('0x4'));var util=require(_0xc998('0x5'));var path=require(_0xc998('0x6'));var sox=require(_0xc998('0x7'));var csv=require(_0xc998('0x8'));var ejs=require(_0xc998('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc998('0xa'));var crypto=require(_0xc998('0xb'));var jsforce=require(_0xc998('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xc998('0x8'));var querystring=require(_0xc998('0xd'));var Papa=require(_0xc998('0xe'));var Redis=require(_0xc998('0xf'));var authService=require(_0xc998('0x10'));var qs=require(_0xc998('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc998('0x12'));var logger=require(_0xc998('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xc998('0x14'));var licenseUtil=require(_0xc998('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x185a46,_0x31b4ec){_0x31b4ec=_0x31b4ec||0xcc;return function(_0x3e6bbf){if(_0x3e6bbf){return _0x185a46[_0xc998('0x16')](_0x31b4ec);}return _0x185a46[_0xc998('0x17')](_0x31b4ec)[_0xc998('0x18')]();};}function respondWithResult(_0x212ce4,_0xbc3b77){_0xbc3b77=_0xbc3b77||0xc8;return function(_0x236e26){if(_0x236e26){return _0x212ce4[_0xc998('0x17')](_0xbc3b77)[_0xc998('0x19')](_0x236e26);}};}function respondWithFilteredResult(_0x56c27c,_0x1f7ad6){return function(_0x537e81){if(_0x537e81){var _0x270bf1=typeof _0x1f7ad6[_0xc998('0x1a')]===_0xc998('0x1b')&&typeof _0x1f7ad6[_0xc998('0x1c')]==='undefined';var _0x2c2336=_0x537e81[_0xc998('0x1d')];var _0x2d5eea=_0x270bf1?0x0:_0x1f7ad6[_0xc998('0x1a')];var _0x5ad997=_0x270bf1?_0x537e81[_0xc998('0x1d')]:_0x1f7ad6[_0xc998('0x1a')]+_0x1f7ad6[_0xc998('0x1c')];var _0x3ee57f;if(_0x5ad997>=_0x2c2336){_0x5ad997=_0x2c2336;_0x3ee57f=0xc8;}else{_0x3ee57f=0xce;}_0x56c27c[_0xc998('0x17')](_0x3ee57f);return _0x56c27c[_0xc998('0x1e')](_0xc998('0x1f'),_0x2d5eea+'-'+_0x5ad997+'/'+_0x2c2336)['json'](_0x537e81);}return null;};}function patchUpdates(_0x467ca9){return function(_0x22e237){try{jsonpatch[_0xc998('0x20')](_0x22e237,_0x467ca9,!![]);}catch(_0x118937){return BPromise[_0xc998('0x21')](_0x118937);}return _0x22e237[_0xc998('0x22')]();};}function saveUpdates(_0x274a02,_0x4ad379){return function(_0x244d51){if(_0x244d51){return _0x244d51[_0xc998('0x23')](_0x274a02)['then'](function(_0x265c3f){return _0x265c3f;});}return null;};}function removeEntity(_0x563dc0,_0x2aeac0){return function(_0xd50d1b){if(_0xd50d1b){return _0xd50d1b[_0xc998('0x24')]()[_0xc998('0x25')](function(){_0x563dc0[_0xc998('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x342f93,_0x29bf56){return function(_0x3c642e){if(!_0x3c642e){_0x342f93[_0xc998('0x16')](0x194);}return _0x3c642e;};}function handleError(_0x998e6,_0x2660e8){_0x2660e8=_0x2660e8||0x1f4;return function(_0x422422){logger[_0xc998('0x26')](_0x422422[_0xc998('0x27')]);if(_0x422422[_0xc998('0x28')]){delete _0x422422['name'];}_0x998e6[_0xc998('0x17')](_0x2660e8)[_0xc998('0x29')](_0x422422);};}exports['index']=function(_0x25839c,_0x56a8fb){var _0x2b9fab={},_0x28c352={},_0x3fb61b={'count':0x0,'rows':[]};var _0xb941ff=_[_0xc998('0x2a')](db[_0xc998('0x2b')][_0xc998('0x2c')],function(_0x19237f){return{'name':_0x19237f['fieldName'],'type':_0x19237f[_0xc998('0x2d')][_0xc998('0x2e')]};});_0x28c352[_0xc998('0x2f')]=_['map'](_0xb941ff,_0xc998('0x28'));_0x28c352[_0xc998('0x30')]=_['keys'](_0x25839c['query']);_0x28c352[_0xc998('0x31')]=_[_0xc998('0x32')](_0x28c352[_0xc998('0x2f')],_0x28c352[_0xc998('0x30')]);_0x2b9fab['attributes']=_[_0xc998('0x32')](_0x28c352[_0xc998('0x2f')],qs[_0xc998('0x33')](_0x25839c[_0xc998('0x30')]['fields']));_0x2b9fab[_0xc998('0x34')]=_0x2b9fab[_0xc998('0x34')][_0xc998('0x35')]?_0x2b9fab['attributes']:_0x28c352[_0xc998('0x2f')];if(!_0x25839c[_0xc998('0x30')][_0xc998('0x36')](_0xc998('0x37'))){_0x2b9fab['limit']=qs[_0xc998('0x1c')](_0x25839c[_0xc998('0x30')][_0xc998('0x1c')]);_0x2b9fab[_0xc998('0x1a')]=qs[_0xc998('0x1a')](_0x25839c['query'][_0xc998('0x1a')]);}_0x2b9fab[_0xc998('0x38')]=qs[_0xc998('0x39')](_0x25839c['query'][_0xc998('0x39')]);_0x2b9fab['where']=qs[_0xc998('0x31')](_['pick'](_0x25839c[_0xc998('0x30')],_0x28c352[_0xc998('0x31')]),_0xb941ff);if(_0x25839c['query'][_0xc998('0x3a')]){_0x2b9fab['where']=_[_0xc998('0x3b')](_0x2b9fab[_0xc998('0x3c')],{'$or':_[_0xc998('0x2a')](_0xb941ff,function(_0x195949){if(_0x195949[_0xc998('0x2d')]!==_0xc998('0x3d')){var _0x956cd={};_0x956cd[_0x195949[_0xc998('0x28')]]={'$like':'%'+_0x25839c['query'][_0xc998('0x3a')]+'%'};return _0x956cd;}})});}_0x2b9fab=_[_0xc998('0x3b')]({},_0x2b9fab,_0x25839c['options']);var _0x4f50fa={'where':_0x2b9fab[_0xc998('0x3c')]};return db['OpenchannelTransferReport'][_0xc998('0x1d')](_0x4f50fa)[_0xc998('0x25')](function(_0x3080fe){_0x3fb61b[_0xc998('0x1d')]=_0x3080fe;if(_0x25839c[_0xc998('0x30')]['includeAll']){_0x2b9fab[_0xc998('0x3e')]=[{'all':!![]}];}return db['OpenchannelTransferReport'][_0xc998('0x3f')](_0x2b9fab);})['then'](function(_0x51776c){_0x3fb61b['rows']=_0x51776c;return _0x3fb61b;})[_0xc998('0x25')](respondWithFilteredResult(_0x56a8fb,_0x2b9fab))[_0xc998('0x40')](handleError(_0x56a8fb,null));};exports[_0xc998('0x41')]=function(_0xb46a31,_0x563a3f){var _0xc9a0e7={'raw':!![],'where':{'id':_0xb46a31[_0xc998('0x42')]['id']}},_0xa646f9={};_0xa646f9[_0xc998('0x2f')]=_[_0xc998('0x43')](db[_0xc998('0x2b')][_0xc998('0x2c')]);_0xa646f9[_0xc998('0x30')]=_[_0xc998('0x43')](_0xb46a31[_0xc998('0x30')]);_0xa646f9[_0xc998('0x31')]=_[_0xc998('0x32')](_0xa646f9[_0xc998('0x2f')],_0xa646f9['query']);_0xc9a0e7[_0xc998('0x34')]=_[_0xc998('0x32')](_0xa646f9[_0xc998('0x2f')],qs['fields'](_0xb46a31[_0xc998('0x30')][_0xc998('0x33')]));_0xc9a0e7[_0xc998('0x34')]=_0xc9a0e7[_0xc998('0x34')][_0xc998('0x35')]?_0xc9a0e7[_0xc998('0x34')]:_0xa646f9[_0xc998('0x2f')];if(_0xb46a31[_0xc998('0x30')][_0xc998('0x44')]){_0xc9a0e7['include']=[{'all':!![]}];}_0xc9a0e7=_['merge']({},_0xc9a0e7,_0xb46a31[_0xc998('0x45')]);return db['OpenchannelTransferReport'][_0xc998('0x46')](_0xc9a0e7)[_0xc998('0x25')](handleEntityNotFound(_0x563a3f,null))['then'](respondWithResult(_0x563a3f,null))[_0xc998('0x40')](handleError(_0x563a3f,null));};exports[_0xc998('0x47')]=function(_0x1f26f1,_0x29f58f){return db[_0xc998('0x2b')]['create'](_0x1f26f1[_0xc998('0x48')],{})['then'](respondWithResult(_0x29f58f,0xc9))[_0xc998('0x40')](handleError(_0x29f58f,null));};exports['update']=function(_0x34fa92,_0x257917){if(_0x34fa92[_0xc998('0x48')]['id']){delete _0x34fa92['body']['id'];}return db[_0xc998('0x2b')][_0xc998('0x46')]({'where':{'id':_0x34fa92[_0xc998('0x42')]['id']}})['then'](handleEntityNotFound(_0x257917,null))[_0xc998('0x25')](saveUpdates(_0x34fa92['body'],null))[_0xc998('0x25')](respondWithResult(_0x257917,null))[_0xc998('0x40')](handleError(_0x257917,null));};exports[_0xc998('0x24')]=function(_0x36bc26,_0x59030b){return db[_0xc998('0x2b')][_0xc998('0x46')]({'where':{'id':_0x36bc26[_0xc998('0x42')]['id']}})[_0xc998('0x25')](handleEntityNotFound(_0x59030b,null))[_0xc998('0x25')](removeEntity(_0x59030b,null))['catch'](handleError(_0x59030b,null));};exports['describe']=function(_0x138a4a,_0x54dcfd){return db[_0xc998('0x2b')]['describe']()[_0xc998('0x25')](respondWithResult(_0x54dcfd,null))[_0xc998('0x40')](handleError(_0x54dcfd,null));};
\ No newline at end of file
index 6bf8d8b..f8b0f9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd483=['moment','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','lodash','../../config/logger','api'];(function(_0x48ad97,_0x588ecf){var _0x40f742=function(_0x48c0b9){while(--_0x48c0b9){_0x48ad97['push'](_0x48ad97['shift']());}};_0x40f742(++_0x588ecf);}(_0xd483,0x15b));var _0x3d48=function(_0x38bb34,_0xd63c40){_0x38bb34=_0x38bb34-0x0;var _0x1a6669=_0xd483[_0x38bb34];return _0x1a6669;};'use strict';var _=require(_0x3d48('0x0'));var util=require('util');var logger=require(_0x3d48('0x1'))(_0x3d48('0x2'));var moment=require(_0x3d48('0x3'));var BPromise=require('bluebird');var rp=require(_0x3d48('0x4'));var fs=require('fs');var path=require(_0x3d48('0x5'));var rimraf=require(_0x3d48('0x6'));var config=require(_0x3d48('0x7'));var attributes=require(_0x3d48('0x8'));module[_0x3d48('0x9')]=function(_0x2b7a72,_0x6b0585){return _0x2b7a72[_0x3d48('0xa')](_0x3d48('0xb'),attributes,{'tableName':_0x3d48('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x3d48('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2f75=['path','../../config/environment','./openchannelTransferReport.attributes','exports','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','lodash','util','bluebird','request-promise'];(function(_0x3a06ec,_0x53b99d){var _0x4c0d0a=function(_0x4efea0){while(--_0x4efea0){_0x3a06ec['push'](_0x3a06ec['shift']());}};_0x4c0d0a(++_0x53b99d);}(_0x2f75,0x96));var _0x52f7=function(_0xfa9798,_0x1c6a9b){_0xfa9798=_0xfa9798-0x0;var _0x3d0d09=_0x2f75[_0xfa9798];return _0x3d0d09;};'use strict';var _=require(_0x52f7('0x0'));var util=require(_0x52f7('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x52f7('0x2'));var rp=require(_0x52f7('0x3'));var fs=require('fs');var path=require(_0x52f7('0x4'));var rimraf=require('rimraf');var config=require(_0x52f7('0x5'));var attributes=require(_0x52f7('0x6'));module[_0x52f7('0x7')]=function(_0x1891bb,_0xfb8401){return _0x1891bb['define'](_0x52f7('0x8'),attributes,{'tableName':_0x52f7('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x52f7('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 1720005..2db4611 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78d3=['../../config/environment','jayson/promise','client','http','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x41ac7b,_0xb5d860){var _0x20bed9=function(_0x265d93){while(--_0x265d93){_0x41ac7b['push'](_0x41ac7b['shift']());}};_0x20bed9(++_0xb5d860);}(_0x78d3,0x73));var _0x378d=function(_0x4c04ce,_0x1a7063){_0x4c04ce=_0x4c04ce-0x0;var _0xe4aa88=_0x78d3[_0x4c04ce];return _0xe4aa88;};'use strict';var _=require(_0x378d('0x0'));var util=require(_0x378d('0x1'));var moment=require(_0x378d('0x2'));var BPromise=require(_0x378d('0x3'));var rs=require(_0x378d('0x4'));var fs=require('fs');var Redis=require(_0x378d('0x5'));var db=require(_0x378d('0x6'))['db'];var utils=require(_0x378d('0x7'));var logger=require(_0x378d('0x8'))(_0x378d('0x9'));var config=require(_0x378d('0xa'));var jayson=require(_0x378d('0xb'));var client=jayson[_0x378d('0xc')][_0x378d('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x47a99f,_0x4fef30,_0x1c880e){return new BPromise(function(_0x4b3ef5,_0x14112d){return client[_0x378d('0xe')](_0x47a99f,_0x1c880e)[_0x378d('0xf')](function(_0x4698d9){logger[_0x378d('0x10')](_0x378d('0x11'),_0x4fef30,'request\x20sent');logger[_0x378d('0x12')](_0x378d('0x13'),_0x4fef30,_0x378d('0x14'),JSON['stringify'](_0x4698d9));if(_0x4698d9[_0x378d('0x15')]){if(_0x4698d9['error']['code']===0x1f4){logger[_0x378d('0x15')](_0x378d('0x11'),_0x4fef30,_0x4698d9['error'][_0x378d('0x16')]);return _0x14112d(_0x4698d9[_0x378d('0x15')][_0x378d('0x16')]);}logger['error'](_0x378d('0x11'),_0x4fef30,_0x4698d9['error'][_0x378d('0x16')]);return _0x4b3ef5(_0x4698d9[_0x378d('0x15')][_0x378d('0x16')]);}else{logger[_0x378d('0x10')](_0x378d('0x11'),_0x4fef30,'request\x20sent');_0x4b3ef5(_0x4698d9[_0x378d('0x17')]['message']);}})[_0x378d('0x18')](function(_0x1602f9){logger[_0x378d('0x15')](_0x378d('0x11'),_0x4fef30,_0x1602f9);_0x14112d(_0x1602f9);});});}
\ No newline at end of file
+var _0x4ce6=['http','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','client'];(function(_0x4d748e,_0xc2f2b2){var _0x19c2fe=function(_0x2ec0a0){while(--_0x2ec0a0){_0x4d748e['push'](_0x4d748e['shift']());}};_0x19c2fe(++_0xc2f2b2);}(_0x4ce6,0x108));var _0x64ce=function(_0x4bacb6,_0x2b299d){_0x4bacb6=_0x4bacb6-0x0;var _0x58c029=_0x4ce6[_0x4bacb6];return _0x58c029;};'use strict';var _=require(_0x64ce('0x0'));var util=require('util');var moment=require(_0x64ce('0x1'));var BPromise=require(_0x64ce('0x2'));var rs=require(_0x64ce('0x3'));var fs=require('fs');var Redis=require(_0x64ce('0x4'));var db=require(_0x64ce('0x5'))['db'];var utils=require(_0x64ce('0x6'));var logger=require('../../config/logger')(_0x64ce('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x64ce('0x8')][_0x64ce('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5b8f2d,_0x538b74,_0x3c279f){return new BPromise(function(_0x134230,_0x1b253e){return client[_0x64ce('0xa')](_0x5b8f2d,_0x3c279f)[_0x64ce('0xb')](function(_0x135482){logger[_0x64ce('0xc')](_0x64ce('0xd'),_0x538b74,_0x64ce('0xe'));logger['debug'](_0x64ce('0xf'),_0x538b74,_0x64ce('0xe'),JSON[_0x64ce('0x10')](_0x135482));if(_0x135482[_0x64ce('0x11')]){if(_0x135482[_0x64ce('0x11')][_0x64ce('0x12')]===0x1f4){logger[_0x64ce('0x11')](_0x64ce('0xd'),_0x538b74,_0x135482['error'][_0x64ce('0x13')]);return _0x1b253e(_0x135482['error']['message']);}logger[_0x64ce('0x11')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x538b74,_0x135482[_0x64ce('0x11')][_0x64ce('0x13')]);return _0x134230(_0x135482[_0x64ce('0x11')][_0x64ce('0x13')]);}else{logger[_0x64ce('0xc')](_0x64ce('0xd'),_0x538b74,_0x64ce('0xe'));_0x134230(_0x135482[_0x64ce('0x14')][_0x64ce('0x13')]);}})['catch'](function(_0x4b49be){logger['error'](_0x64ce('0xd'),_0x538b74,_0x4b49be);_0x1b253e(_0x4b49be);});});}
\ No newline at end of file
index 7472cbf..f8e7b7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x826b=['put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./pause.controller','isAuthenticated','/:id','show','post','create'];(function(_0x2b7eb6,_0x14436f){var _0x74e4ec=function(_0x4dca5c){while(--_0x4dca5c){_0x2b7eb6['push'](_0x2b7eb6['shift']());}};_0x74e4ec(++_0x14436f);}(_0x826b,0xdc));var _0xb826=function(_0x356a12,_0x434032){_0x356a12=_0x356a12-0x0;var _0x41b03f=_0x826b[_0x356a12];return _0x41b03f;};'use strict';var multer=require(_0xb826('0x0'));var util=require(_0xb826('0x1'));var path=require(_0xb826('0x2'));var timeout=require(_0xb826('0x3'));var express=require(_0xb826('0x4'));var router=express[_0xb826('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb826('0x6'));var interaction=require(_0xb826('0x7'));var config=require('../../config/environment');var controller=require(_0xb826('0x8'));router['get']('/',auth[_0xb826('0x9')](),controller['index']);router['get'](_0xb826('0xa'),auth['isAuthenticated'](),controller[_0xb826('0xb')]);router[_0xb826('0xc')]('/',auth['isAuthenticated'](),controller[_0xb826('0xd')]);router[_0xb826('0xe')](_0xb826('0xa'),auth[_0xb826('0x9')](),controller[_0xb826('0xf')]);router['delete'](_0xb826('0xa'),auth[_0xb826('0x9')](),controller[_0xb826('0x10')]);module[_0xb826('0x11')]=router;
\ No newline at end of file
+var _0x422f=['create','/:id','delete','destroy','exports','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index','show','post'];(function(_0x5d289a,_0xb8f6f4){var _0x4ab117=function(_0x4257a9){while(--_0x4257a9){_0x5d289a['push'](_0x5d289a['shift']());}};_0x4ab117(++_0xb8f6f4);}(_0x422f,0x1c7));var _0xf422=function(_0x67da84,_0x15ed41){_0x67da84=_0x67da84-0x0;var _0x2726fd=_0x422f[_0x67da84];return _0x2726fd;};'use strict';var multer=require('multer');var util=require(_0xf422('0x0'));var path=require('path');var timeout=require(_0xf422('0x1'));var express=require(_0xf422('0x2'));var router=express['Router']();var fs_extra=require(_0xf422('0x3'));var auth=require(_0xf422('0x4'));var interaction=require(_0xf422('0x5'));var config=require(_0xf422('0x6'));var controller=require(_0xf422('0x7'));router[_0xf422('0x8')]('/',auth[_0xf422('0x9')](),controller[_0xf422('0xa')]);router[_0xf422('0x8')]('/:id',auth[_0xf422('0x9')](),controller[_0xf422('0xb')]);router[_0xf422('0xc')]('/',auth[_0xf422('0x9')](),controller[_0xf422('0xd')]);router['put'](_0xf422('0xe'),auth['isAuthenticated'](),controller['update']);router[_0xf422('0xf')](_0xf422('0xe'),auth[_0xf422('0x9')](),controller[_0xf422('0x10')]);module[_0xf422('0x11')]=router;
\ No newline at end of file
index c99f584..d4a7c30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3dc=['sequelize','exports','STRING'];(function(_0x4d5c8d,_0x28e475){var _0x42e93b=function(_0x108a05){while(--_0x108a05){_0x4d5c8d['push'](_0x4d5c8d['shift']());}};_0x42e93b(++_0x28e475);}(_0xf3dc,0x78));var _0xcf3d=function(_0x5a2299,_0x3e2922){_0x5a2299=_0x5a2299-0x0;var _0xedff0f=_0xf3dc[_0x5a2299];return _0xedff0f;};'use strict';var Sequelize=require(_0xcf3d('0x0'));module[_0xcf3d('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xcf3d('0x2')]}};
\ No newline at end of file
+var _0xf788=['STRING','name','sequelize','exports'];(function(_0x173113,_0x316a7c){var _0x3bea89=function(_0xd33ac1){while(--_0xd33ac1){_0x173113['push'](_0x173113['shift']());}};_0x3bea89(++_0x316a7c);}(_0xf788,0x192));var _0x8f78=function(_0x59c301,_0x359c50){_0x59c301=_0x59c301-0x0;var _0x3866b9=_0xf788[_0x59c301];return _0x3866b9;};'use strict';var Sequelize=require(_0x8f78('0x0'));module[_0x8f78('0x1')]={'name':{'type':Sequelize[_0x8f78('0x2')],'unique':_0x8f78('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x8f78('0x2')]}};
\ No newline at end of file
index 77ed4c4..f748896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e54=['fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','then','destroy','get','Pauses','UserProfileResource','error','stack','name','send','index','map','Pause','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','length','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs'];(function(_0x168382,_0x3353b2){var _0xfff9be=function(_0x3c85f5){while(--_0x3c85f5){_0x168382['push'](_0x168382['shift']());}};_0xfff9be(++_0x3353b2);}(_0x0e54,0x1a8));var _0x40e5=function(_0x2f494d,_0x121424){_0x2f494d=_0x2f494d-0x0;var _0x158ec4=_0x0e54[_0x2f494d];return _0x158ec4;};'use strict';var emlformat=require(_0x40e5('0x0'));var rimraf=require(_0x40e5('0x1'));var zipdir=require(_0x40e5('0x2'));var jsonpatch=require(_0x40e5('0x3'));var rp=require(_0x40e5('0x4'));var moment=require(_0x40e5('0x5'));var BPromise=require(_0x40e5('0x6'));var Mustache=require(_0x40e5('0x7'));var util=require(_0x40e5('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x40e5('0x9'));var ejs=require(_0x40e5('0xa'));var fs=require('fs');var fs_extra=require(_0x40e5('0xb'));var _=require(_0x40e5('0xc'));var squel=require(_0x40e5('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x40e5('0xe'));var toCsv=require('to-csv');var querystring=require(_0x40e5('0xf'));var Papa=require(_0x40e5('0x10'));var Redis=require(_0x40e5('0x11'));var authService=require(_0x40e5('0x12'));var qs=require(_0x40e5('0x13'));var as=require(_0x40e5('0x14'));var hardwareService=require(_0x40e5('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x40e5('0x16'));var config=require(_0x40e5('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x40e5('0x18'))['db'];function respondWithStatusCode(_0x504731,_0x30e170){_0x30e170=_0x30e170||0xcc;return function(_0x2ad8b2){if(_0x2ad8b2){return _0x504731[_0x40e5('0x19')](_0x30e170);}return _0x504731['status'](_0x30e170)[_0x40e5('0x1a')]();};}function respondWithResult(_0x14cae7,_0x406ba7){_0x406ba7=_0x406ba7||0xc8;return function(_0x3255c4){if(_0x3255c4){return _0x14cae7[_0x40e5('0x1b')](_0x406ba7)['json'](_0x3255c4);}};}function respondWithFilteredResult(_0xd2d674,_0x221548){return function(_0x26c899){if(_0x26c899){var _0x59d199=typeof _0x221548[_0x40e5('0x1c')]===_0x40e5('0x1d')&&typeof _0x221548[_0x40e5('0x1e')]===_0x40e5('0x1d');var _0x53f9ee=_0x26c899[_0x40e5('0x1f')];var _0x202715=_0x59d199?0x0:_0x221548[_0x40e5('0x1c')];var _0x3a6244=_0x59d199?_0x26c899[_0x40e5('0x1f')]:_0x221548[_0x40e5('0x1c')]+_0x221548[_0x40e5('0x1e')];var _0x17bf5d;if(_0x3a6244>=_0x53f9ee){_0x3a6244=_0x53f9ee;_0x17bf5d=0xc8;}else{_0x17bf5d=0xce;}_0xd2d674[_0x40e5('0x1b')](_0x17bf5d);return _0xd2d674[_0x40e5('0x20')](_0x40e5('0x21'),_0x202715+'-'+_0x3a6244+'/'+_0x53f9ee)[_0x40e5('0x22')](_0x26c899);}return null;};}function patchUpdates(_0x272b82){return function(_0x334793){try{jsonpatch[_0x40e5('0x23')](_0x334793,_0x272b82,!![]);}catch(_0x37f463){return BPromise['reject'](_0x37f463);}return _0x334793[_0x40e5('0x24')]();};}function saveUpdates(_0x1bc2c6,_0x137304){return function(_0x159f9d){if(_0x159f9d){return _0x159f9d['update'](_0x1bc2c6)[_0x40e5('0x25')](function(_0x58b378){return _0x58b378;});}return null;};}function removeEntity(_0x4ea53f,_0x31b2f0){return function(_0x85f2ea){if(_0x85f2ea){return _0x85f2ea[_0x40e5('0x26')]()[_0x40e5('0x25')](function(){var _0x10abdc=_0x85f2ea[_0x40e5('0x27')]({'plain':!![]});var _0x3225f7=_0x40e5('0x28');return db[_0x40e5('0x29')][_0x40e5('0x26')]({'where':{'type':_0x3225f7,'resourceId':_0x10abdc['id']}})[_0x40e5('0x25')](function(){return _0x85f2ea;});})['then'](function(){_0x4ea53f[_0x40e5('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3dad6f,_0x3c1b94){return function(_0x406511){if(!_0x406511){_0x3dad6f[_0x40e5('0x19')](0x194);}return _0x406511;};}function handleError(_0x57adf7,_0x18f869){_0x18f869=_0x18f869||0x1f4;return function(_0x4b67b7){logger[_0x40e5('0x2a')](_0x4b67b7[_0x40e5('0x2b')]);if(_0x4b67b7[_0x40e5('0x2c')]){delete _0x4b67b7[_0x40e5('0x2c')];}_0x57adf7[_0x40e5('0x1b')](_0x18f869)[_0x40e5('0x2d')](_0x4b67b7);};}exports[_0x40e5('0x2e')]=function(_0x369374,_0x16de67){var _0x4d2a0c={},_0x214ec2={},_0x1dfae7={'count':0x0,'rows':[]};var _0x326450=_[_0x40e5('0x2f')](db[_0x40e5('0x30')][_0x40e5('0x31')],function(_0x47f7c4){return{'name':_0x47f7c4[_0x40e5('0x32')],'type':_0x47f7c4[_0x40e5('0x33')]['key']};});_0x214ec2[_0x40e5('0x34')]=_[_0x40e5('0x2f')](_0x326450,_0x40e5('0x2c'));_0x214ec2['query']=_[_0x40e5('0x35')](_0x369374[_0x40e5('0x36')]);_0x214ec2[_0x40e5('0x37')]=_[_0x40e5('0x38')](_0x214ec2[_0x40e5('0x34')],_0x214ec2['query']);_0x4d2a0c[_0x40e5('0x39')]=_['intersection'](_0x214ec2[_0x40e5('0x34')],qs[_0x40e5('0x3a')](_0x369374[_0x40e5('0x36')][_0x40e5('0x3a')]));_0x4d2a0c[_0x40e5('0x39')]=_0x4d2a0c[_0x40e5('0x39')]['length']?_0x4d2a0c[_0x40e5('0x39')]:_0x214ec2['model'];if(!_0x369374[_0x40e5('0x36')][_0x40e5('0x3b')](_0x40e5('0x3c'))){_0x4d2a0c[_0x40e5('0x1e')]=qs['limit'](_0x369374[_0x40e5('0x36')][_0x40e5('0x1e')]);_0x4d2a0c[_0x40e5('0x1c')]=qs[_0x40e5('0x1c')](_0x369374[_0x40e5('0x36')][_0x40e5('0x1c')]);}_0x4d2a0c[_0x40e5('0x3d')]=qs[_0x40e5('0x3e')](_0x369374[_0x40e5('0x36')]['sort']);_0x4d2a0c[_0x40e5('0x3f')]=qs[_0x40e5('0x37')](_[_0x40e5('0x40')](_0x369374['query'],_0x214ec2[_0x40e5('0x37')]),_0x326450);if(_0x369374[_0x40e5('0x36')][_0x40e5('0x41')]){_0x4d2a0c['where']=_[_0x40e5('0x42')](_0x4d2a0c['where'],{'$or':_['map'](_0x326450,function(_0x16b066){if(_0x16b066[_0x40e5('0x33')]!==_0x40e5('0x43')){var _0x4828b8={};_0x4828b8[_0x16b066[_0x40e5('0x2c')]]={'$like':'%'+_0x369374[_0x40e5('0x36')][_0x40e5('0x41')]+'%'};return _0x4828b8;}})});}_0x4d2a0c=_[_0x40e5('0x42')]({},_0x4d2a0c,_0x369374[_0x40e5('0x44')]);var _0x5a7515={'where':_0x4d2a0c['where']};return db[_0x40e5('0x30')][_0x40e5('0x1f')](_0x5a7515)['then'](function(_0x2db3ca){_0x1dfae7['count']=_0x2db3ca;if(_0x369374['query'][_0x40e5('0x45')]){_0x4d2a0c['include']=[{'all':!![]}];}return db[_0x40e5('0x30')][_0x40e5('0x46')](_0x4d2a0c);})[_0x40e5('0x25')](function(_0x27ebf2){_0x1dfae7[_0x40e5('0x47')]=_0x27ebf2;return _0x1dfae7;})[_0x40e5('0x25')](respondWithFilteredResult(_0x16de67,_0x4d2a0c))[_0x40e5('0x48')](handleError(_0x16de67,null));};exports[_0x40e5('0x49')]=function(_0x5272c8,_0x49aec6){var _0x3c8d07={'raw':!![],'where':{'id':_0x5272c8[_0x40e5('0x4a')]['id']}},_0x57672e={};_0x57672e[_0x40e5('0x34')]=_[_0x40e5('0x35')](db[_0x40e5('0x30')][_0x40e5('0x31')]);_0x57672e['query']=_[_0x40e5('0x35')](_0x5272c8['query']);_0x57672e['filters']=_[_0x40e5('0x38')](_0x57672e[_0x40e5('0x34')],_0x57672e[_0x40e5('0x36')]);_0x3c8d07['attributes']=_[_0x40e5('0x38')](_0x57672e['model'],qs[_0x40e5('0x3a')](_0x5272c8[_0x40e5('0x36')]['fields']));_0x3c8d07[_0x40e5('0x39')]=_0x3c8d07[_0x40e5('0x39')][_0x40e5('0x4b')]?_0x3c8d07['attributes']:_0x57672e[_0x40e5('0x34')];if(_0x5272c8['query'][_0x40e5('0x45')]){_0x3c8d07[_0x40e5('0x4c')]=[{'all':!![]}];}_0x3c8d07=_['merge']({},_0x3c8d07,_0x5272c8['options']);return db[_0x40e5('0x30')][_0x40e5('0x4d')](_0x3c8d07)[_0x40e5('0x25')](handleEntityNotFound(_0x49aec6,null))[_0x40e5('0x25')](respondWithResult(_0x49aec6,null))[_0x40e5('0x48')](handleError(_0x49aec6,null));};exports[_0x40e5('0x4e')]=function(_0x273d0f,_0x5ab7ee){return db['Pause']['create'](_0x273d0f[_0x40e5('0x4f')],{})[_0x40e5('0x25')](function(_0x4539d3){var _0x242988=_0x273d0f[_0x40e5('0x50')]['get']({'plain':!![]});if(!_0x242988)throw new Error(_0x40e5('0x51'));if(_0x242988[_0x40e5('0x52')]===_0x40e5('0x50')){var _0x68cb76=_0x4539d3['get']({'plain':!![]});var _0x538167=_0x40e5('0x28');return db[_0x40e5('0x53')]['find']({'where':{'name':_0x538167,'userProfileId':_0x242988[_0x40e5('0x54')]},'raw':!![]})[_0x40e5('0x25')](function(_0x5c7b59){if(_0x5c7b59&&_0x5c7b59[_0x40e5('0x55')]===0x0){return db[_0x40e5('0x29')][_0x40e5('0x4e')]({'name':_0x68cb76[_0x40e5('0x2c')],'resourceId':_0x68cb76['id'],'type':_0x5c7b59[_0x40e5('0x2c')],'sectionId':_0x5c7b59['id']},{})[_0x40e5('0x25')](function(){return _0x4539d3;});}else{return _0x4539d3;}})[_0x40e5('0x48')](function(_0x492ea1){logger[_0x40e5('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x492ea1);throw _0x492ea1;});}return _0x4539d3;})[_0x40e5('0x25')](respondWithResult(_0x5ab7ee,0xc9))[_0x40e5('0x48')](handleError(_0x5ab7ee,null));};exports[_0x40e5('0x56')]=function(_0x490863,_0x7286ff){if(_0x490863['body']['id']){delete _0x490863[_0x40e5('0x4f')]['id'];}return db[_0x40e5('0x30')][_0x40e5('0x4d')]({'where':{'id':_0x490863[_0x40e5('0x4a')]['id']}})[_0x40e5('0x25')](handleEntityNotFound(_0x7286ff,null))[_0x40e5('0x25')](saveUpdates(_0x490863[_0x40e5('0x4f')],null))[_0x40e5('0x25')](respondWithResult(_0x7286ff,null))[_0x40e5('0x48')](handleError(_0x7286ff,null));};exports[_0x40e5('0x26')]=function(_0xc91e91,_0x5ef0eb){return db[_0x40e5('0x30')][_0x40e5('0x4d')]({'where':{'id':_0xc91e91[_0x40e5('0x4a')]['id']}})[_0x40e5('0x25')](handleEntityNotFound(_0x5ef0eb,null))[_0x40e5('0x25')](removeEntity(_0x5ef0eb,null))[_0x40e5('0x48')](handleError(_0x5ef0eb,null));};
\ No newline at end of file
+var _0x97fe=['Content-Range','reject','save','update','then','destroy','get','Pauses','error','name','send','index','map','Pause','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','rows','show','params','keys','include','find','catch','create','body','user','role','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x34d61d,_0x28e5d7){var _0x570bf7=function(_0xb60f30){while(--_0xb60f30){_0x34d61d['push'](_0x34d61d['shift']());}};_0x570bf7(++_0x28e5d7);}(_0x97fe,0x119));var _0xe97f=function(_0x2f78ff,_0x4daafe){_0x2f78ff=_0x2f78ff-0x0;var _0x5793c6=_0x97fe[_0x2f78ff];return _0x5793c6;};'use strict';var emlformat=require(_0xe97f('0x0'));var rimraf=require(_0xe97f('0x1'));var zipdir=require(_0xe97f('0x2'));var jsonpatch=require(_0xe97f('0x3'));var rp=require(_0xe97f('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe97f('0x5'));var path=require(_0xe97f('0x6'));var sox=require(_0xe97f('0x7'));var csv=require(_0xe97f('0x8'));var ejs=require(_0xe97f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe97f('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe97f('0xb'));var toCsv=require(_0xe97f('0x8'));var querystring=require(_0xe97f('0xc'));var Papa=require(_0xe97f('0xd'));var Redis=require(_0xe97f('0xe'));var authService=require(_0xe97f('0xf'));var qs=require(_0xe97f('0x10'));var as=require(_0xe97f('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe97f('0x12'))(_0xe97f('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe97f('0x14'));var db=require(_0xe97f('0x15'))['db'];function respondWithStatusCode(_0x48146b,_0x182e34){_0x182e34=_0x182e34||0xcc;return function(_0x34781f){if(_0x34781f){return _0x48146b[_0xe97f('0x16')](_0x182e34);}return _0x48146b[_0xe97f('0x17')](_0x182e34)[_0xe97f('0x18')]();};}function respondWithResult(_0x349bbd,_0x24ec0e){_0x24ec0e=_0x24ec0e||0xc8;return function(_0x27f118){if(_0x27f118){return _0x349bbd[_0xe97f('0x17')](_0x24ec0e)[_0xe97f('0x19')](_0x27f118);}};}function respondWithFilteredResult(_0x59be2d,_0x359c8e){return function(_0x4a19f8){if(_0x4a19f8){var _0x3a7f11=typeof _0x359c8e[_0xe97f('0x1a')]===_0xe97f('0x1b')&&typeof _0x359c8e[_0xe97f('0x1c')]===_0xe97f('0x1b');var _0x59344d=_0x4a19f8['count'];var _0x2e83d0=_0x3a7f11?0x0:_0x359c8e[_0xe97f('0x1a')];var _0x3657cc=_0x3a7f11?_0x4a19f8[_0xe97f('0x1d')]:_0x359c8e[_0xe97f('0x1a')]+_0x359c8e['limit'];var _0x445abe;if(_0x3657cc>=_0x59344d){_0x3657cc=_0x59344d;_0x445abe=0xc8;}else{_0x445abe=0xce;}_0x59be2d[_0xe97f('0x17')](_0x445abe);return _0x59be2d[_0xe97f('0x1e')](_0xe97f('0x1f'),_0x2e83d0+'-'+_0x3657cc+'/'+_0x59344d)['json'](_0x4a19f8);}return null;};}function patchUpdates(_0x1f71b0){return function(_0x1a0a6a){try{jsonpatch['apply'](_0x1a0a6a,_0x1f71b0,!![]);}catch(_0x309848){return BPromise[_0xe97f('0x20')](_0x309848);}return _0x1a0a6a[_0xe97f('0x21')]();};}function saveUpdates(_0x84c18c,_0x30bf6d){return function(_0x36c9fd){if(_0x36c9fd){return _0x36c9fd[_0xe97f('0x22')](_0x84c18c)[_0xe97f('0x23')](function(_0x3e479f){return _0x3e479f;});}return null;};}function removeEntity(_0x541f99,_0x5f4459){return function(_0x5357b2){if(_0x5357b2){return _0x5357b2[_0xe97f('0x24')]()[_0xe97f('0x23')](function(){var _0x185519=_0x5357b2[_0xe97f('0x25')]({'plain':!![]});var _0x22eef6=_0xe97f('0x26');return db['UserProfileResource']['destroy']({'where':{'type':_0x22eef6,'resourceId':_0x185519['id']}})['then'](function(){return _0x5357b2;});})['then'](function(){_0x541f99[_0xe97f('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c7a1f,_0x19483f){return function(_0x326f37){if(!_0x326f37){_0x5c7a1f['sendStatus'](0x194);}return _0x326f37;};}function handleError(_0x517fda,_0x21ca82){_0x21ca82=_0x21ca82||0x1f4;return function(_0x35bee3){logger[_0xe97f('0x27')](_0x35bee3['stack']);if(_0x35bee3[_0xe97f('0x28')]){delete _0x35bee3[_0xe97f('0x28')];}_0x517fda['status'](_0x21ca82)[_0xe97f('0x29')](_0x35bee3);};}exports[_0xe97f('0x2a')]=function(_0x27f051,_0x3748ff){var _0x20d172={},_0x1a3c90={},_0x12cdc2={'count':0x0,'rows':[]};var _0x47b28b=_[_0xe97f('0x2b')](db[_0xe97f('0x2c')][_0xe97f('0x2d')],function(_0x20eac2){return{'name':_0x20eac2[_0xe97f('0x2e')],'type':_0x20eac2[_0xe97f('0x2f')]['key']};});_0x1a3c90[_0xe97f('0x30')]=_['map'](_0x47b28b,_0xe97f('0x28'));_0x1a3c90[_0xe97f('0x31')]=_['keys'](_0x27f051[_0xe97f('0x31')]);_0x1a3c90[_0xe97f('0x32')]=_[_0xe97f('0x33')](_0x1a3c90[_0xe97f('0x30')],_0x1a3c90[_0xe97f('0x31')]);_0x20d172[_0xe97f('0x34')]=_[_0xe97f('0x33')](_0x1a3c90[_0xe97f('0x30')],qs[_0xe97f('0x35')](_0x27f051['query']['fields']));_0x20d172[_0xe97f('0x34')]=_0x20d172[_0xe97f('0x34')][_0xe97f('0x36')]?_0x20d172[_0xe97f('0x34')]:_0x1a3c90[_0xe97f('0x30')];if(!_0x27f051[_0xe97f('0x31')][_0xe97f('0x37')](_0xe97f('0x38'))){_0x20d172[_0xe97f('0x1c')]=qs[_0xe97f('0x1c')](_0x27f051[_0xe97f('0x31')]['limit']);_0x20d172[_0xe97f('0x1a')]=qs[_0xe97f('0x1a')](_0x27f051[_0xe97f('0x31')][_0xe97f('0x1a')]);}_0x20d172['order']=qs[_0xe97f('0x39')](_0x27f051[_0xe97f('0x31')][_0xe97f('0x39')]);_0x20d172[_0xe97f('0x3a')]=qs[_0xe97f('0x32')](_['pick'](_0x27f051[_0xe97f('0x31')],_0x1a3c90[_0xe97f('0x32')]),_0x47b28b);if(_0x27f051[_0xe97f('0x31')][_0xe97f('0x3b')]){_0x20d172[_0xe97f('0x3a')]=_[_0xe97f('0x3c')](_0x20d172['where'],{'$or':_[_0xe97f('0x2b')](_0x47b28b,function(_0x5428c){if(_0x5428c[_0xe97f('0x2f')]!==_0xe97f('0x3d')){var _0x369c44={};_0x369c44[_0x5428c['name']]={'$like':'%'+_0x27f051[_0xe97f('0x31')][_0xe97f('0x3b')]+'%'};return _0x369c44;}})});}_0x20d172=_['merge']({},_0x20d172,_0x27f051[_0xe97f('0x3e')]);var _0x11d3d0={'where':_0x20d172['where']};return db[_0xe97f('0x2c')][_0xe97f('0x1d')](_0x11d3d0)[_0xe97f('0x23')](function(_0x3eecbe){_0x12cdc2[_0xe97f('0x1d')]=_0x3eecbe;if(_0x27f051[_0xe97f('0x31')][_0xe97f('0x3f')]){_0x20d172['include']=[{'all':!![]}];}return db[_0xe97f('0x2c')]['findAll'](_0x20d172);})[_0xe97f('0x23')](function(_0x5cb413){_0x12cdc2[_0xe97f('0x40')]=_0x5cb413;return _0x12cdc2;})[_0xe97f('0x23')](respondWithFilteredResult(_0x3748ff,_0x20d172))['catch'](handleError(_0x3748ff,null));};exports[_0xe97f('0x41')]=function(_0x1dfe2f,_0x4a73d9){var _0x10da71={'raw':!![],'where':{'id':_0x1dfe2f[_0xe97f('0x42')]['id']}},_0x49b583={};_0x49b583[_0xe97f('0x30')]=_['keys'](db['Pause']['rawAttributes']);_0x49b583[_0xe97f('0x31')]=_[_0xe97f('0x43')](_0x1dfe2f[_0xe97f('0x31')]);_0x49b583[_0xe97f('0x32')]=_[_0xe97f('0x33')](_0x49b583[_0xe97f('0x30')],_0x49b583['query']);_0x10da71[_0xe97f('0x34')]=_['intersection'](_0x49b583[_0xe97f('0x30')],qs[_0xe97f('0x35')](_0x1dfe2f[_0xe97f('0x31')][_0xe97f('0x35')]));_0x10da71[_0xe97f('0x34')]=_0x10da71[_0xe97f('0x34')]['length']?_0x10da71[_0xe97f('0x34')]:_0x49b583[_0xe97f('0x30')];if(_0x1dfe2f['query'][_0xe97f('0x3f')]){_0x10da71[_0xe97f('0x44')]=[{'all':!![]}];}_0x10da71=_[_0xe97f('0x3c')]({},_0x10da71,_0x1dfe2f[_0xe97f('0x3e')]);return db[_0xe97f('0x2c')][_0xe97f('0x45')](_0x10da71)[_0xe97f('0x23')](handleEntityNotFound(_0x4a73d9,null))['then'](respondWithResult(_0x4a73d9,null))[_0xe97f('0x46')](handleError(_0x4a73d9,null));};exports[_0xe97f('0x47')]=function(_0x35cc31,_0x25f6b1){return db[_0xe97f('0x2c')][_0xe97f('0x47')](_0x35cc31[_0xe97f('0x48')],{})['then'](function(_0x3b73be){var _0x2696bb=_0x35cc31[_0xe97f('0x49')][_0xe97f('0x25')]({'plain':!![]});if(!_0x2696bb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2696bb[_0xe97f('0x4a')]===_0xe97f('0x49')){var _0x44a4e4=_0x3b73be[_0xe97f('0x25')]({'plain':!![]});var _0x44cc83=_0xe97f('0x26');return db[_0xe97f('0x4b')][_0xe97f('0x45')]({'where':{'name':_0x44cc83,'userProfileId':_0x2696bb['userProfileId']},'raw':!![]})[_0xe97f('0x23')](function(_0x3a7e4e){if(_0x3a7e4e&&_0x3a7e4e['autoAssociation']===0x0){return db[_0xe97f('0x4c')][_0xe97f('0x47')]({'name':_0x44a4e4[_0xe97f('0x28')],'resourceId':_0x44a4e4['id'],'type':_0x3a7e4e[_0xe97f('0x28')],'sectionId':_0x3a7e4e['id']},{})[_0xe97f('0x23')](function(){return _0x3b73be;});}else{return _0x3b73be;}})[_0xe97f('0x46')](function(_0x414960){logger['error'](_0xe97f('0x4d'),_0x414960);throw _0x414960;});}return _0x3b73be;})['then'](respondWithResult(_0x25f6b1,0xc9))['catch'](handleError(_0x25f6b1,null));};exports[_0xe97f('0x22')]=function(_0x5c04b9,_0x4f2c32){if(_0x5c04b9[_0xe97f('0x48')]['id']){delete _0x5c04b9[_0xe97f('0x48')]['id'];}return db['Pause'][_0xe97f('0x45')]({'where':{'id':_0x5c04b9[_0xe97f('0x42')]['id']}})[_0xe97f('0x23')](handleEntityNotFound(_0x4f2c32,null))[_0xe97f('0x23')](saveUpdates(_0x5c04b9[_0xe97f('0x48')],null))[_0xe97f('0x23')](respondWithResult(_0x4f2c32,null))[_0xe97f('0x46')](handleError(_0x4f2c32,null));};exports[_0xe97f('0x24')]=function(_0x5c90a1,_0x15eb3e){return db['Pause'][_0xe97f('0x45')]({'where':{'id':_0x5c90a1[_0xe97f('0x42')]['id']}})['then'](handleEntityNotFound(_0x15eb3e,null))[_0xe97f('0x23')](removeEntity(_0x15eb3e,null))[_0xe97f('0x46')](handleError(_0x15eb3e,null));};
\ No newline at end of file
index f3864be..80fc7b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['bluebird','path','../../config/environment','./pause.attributes','define','Pause','lodash','util','../../config/logger','api','moment'];(function(_0x1b0279,_0x11b1e7){var _0x5da1d5=function(_0x36bce9){while(--_0x36bce9){_0x1b0279['push'](_0x1b0279['shift']());}};_0x5da1d5(++_0x11b1e7);}(_0x53ec,0x192));var _0xc53e=function(_0x5c1ddc,_0x587040){_0x5c1ddc=_0x5c1ddc-0x0;var _0x542a11=_0x53ec[_0x5c1ddc];return _0x542a11;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var logger=require(_0xc53e('0x2'))(_0xc53e('0x3'));var moment=require(_0xc53e('0x4'));var BPromise=require(_0xc53e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc53e('0x6'));var rimraf=require('rimraf');var config=require(_0xc53e('0x7'));var attributes=require(_0xc53e('0x8'));module['exports']=function(_0x2f1414,_0x4f989b){return _0x2f1414[_0xc53e('0x9')](_0xc53e('0xa'),attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9957=['exports','define','Pause','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./pause.attributes'];(function(_0x1a9204,_0x1c9e00){var _0x17ca68=function(_0x1f4399){while(--_0x1f4399){_0x1a9204['push'](_0x1a9204['shift']());}};_0x17ca68(++_0x1c9e00);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4d6a24a..a5578aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x20d60b,_0x3a772b){var _0x488dcd=function(_0x2fc77a){while(--_0x2fc77a){_0x20d60b['push'](_0x20d60b['shift']());}};_0x488dcd(++_0x3a772b);}(_0x7a54,0x106));var _0x47a5=function(_0x2160e8,_0x30c17d){_0x2160e8=_0x2160e8-0x0;var _0x5609d0=_0x7a54[_0x2160e8];return _0x5609d0;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x11993a,_0xfe1301){var _0x5efe35=function(_0x566c48){while(--_0x566c48){_0x11993a['push'](_0x11993a['shift']());}};_0x5efe35(++_0xfe1301);}(_0xb10b,0x12a));var _0xbb10=function(_0x32a254,_0x14e1d0){_0x32a254=_0x32a254-0x0;var _0x799afb=_0xb10b[_0x32a254];return _0x799afb;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
index 43d6204..4d66d2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe13a=['./plugin.controller','get','isAuthenticated','index','webhookGet','/:id','show','/:id/download','download','join','root','server/files/plugins','originalname','extname','now','single','upload','post','/webhook','webhookPost','put','update','delete','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x374cb0,_0x492d08){var _0x4ef5f4=function(_0x2d6c47){while(--_0x2d6c47){_0x374cb0['push'](_0x374cb0['shift']());}};_0x4ef5f4(++_0x492d08);}(_0xe13a,0x178));var _0xae13=function(_0x31a261,_0xf86b2c){_0x31a261=_0x31a261-0x0;var _0x25866f=_0xe13a[_0x31a261];return _0x25866f;};'use strict';var multer=require('multer');var util=require(_0xae13('0x0'));var path=require(_0xae13('0x1'));var timeout=require(_0xae13('0x2'));var express=require(_0xae13('0x3'));var router=express['Router']();var fs_extra=require(_0xae13('0x4'));var auth=require(_0xae13('0x5'));var interaction=require(_0xae13('0x6'));var config=require(_0xae13('0x7'));var controller=require(_0xae13('0x8'));router[_0xae13('0x9')]('/',auth[_0xae13('0xa')](),controller[_0xae13('0xb')]);router[_0xae13('0x9')]('/webhook',controller[_0xae13('0xc')]);router[_0xae13('0x9')](_0xae13('0xd'),auth[_0xae13('0xa')](),controller[_0xae13('0xe')]);router[_0xae13('0x9')](_0xae13('0xf'),auth[_0xae13('0xa')](),controller[_0xae13('0x10')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x404b0e,_0x83de98,_0x3d6a85){_0x3d6a85(null,path[_0xae13('0x11')](config[_0xae13('0x12')],_0xae13('0x13')));},'filename':function(_0x1505c5,_0x4dd599,_0x42d869){_0x4dd599[_0xae13('0x14')]=_0x4dd599['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x42d869(null,util['format']('%s-%s%s',path['basename'](_0x4dd599[_0xae13('0x14')],path[_0xae13('0x15')](_0x4dd599[_0xae13('0x14')])),Date[_0xae13('0x16')](),path[_0xae13('0x15')](_0x4dd599[_0xae13('0x14')])));}})});router['post']('/',upload[_0xae13('0x17')]('file'),controller[_0xae13('0x18')]);router[_0xae13('0x19')](_0xae13('0x1a'),controller[_0xae13('0x1b')]);router[_0xae13('0x1c')](_0xae13('0xd'),auth[_0xae13('0xa')](),controller[_0xae13('0x1d')]);router[_0xae13('0x1e')]('/:id',auth[_0xae13('0xa')](),controller['delete']);module[_0xae13('0x1f')]=router;
\ No newline at end of file
+var _0x54ef=['show','/:id/download','download','diskStorage','join','root','originalname','replace','format','basename','extname','post','upload','webhookPost','put','/:id','update','delete','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','index','get','/webhook','isAuthenticated'];(function(_0x409fb8,_0x5ab3d3){var _0x278270=function(_0x58849c){while(--_0x58849c){_0x409fb8['push'](_0x409fb8['shift']());}};_0x278270(++_0x5ab3d3);}(_0x54ef,0x112));var _0xf54e=function(_0x1d48c1,_0x165061){_0x1d48c1=_0x1d48c1-0x0;var _0x3aa734=_0x54ef[_0x1d48c1];return _0x3aa734;};'use strict';var multer=require(_0xf54e('0x0'));var util=require(_0xf54e('0x1'));var path=require(_0xf54e('0x2'));var timeout=require('connect-timeout');var express=require(_0xf54e('0x3'));var router=express[_0xf54e('0x4')]();var fs_extra=require(_0xf54e('0x5'));var auth=require(_0xf54e('0x6'));var interaction=require(_0xf54e('0x7'));var config=require(_0xf54e('0x8'));var controller=require(_0xf54e('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xf54e('0xa')]);router[_0xf54e('0xb')](_0xf54e('0xc'),controller['webhookGet']);router[_0xf54e('0xb')]('/:id',auth[_0xf54e('0xd')](),controller[_0xf54e('0xe')]);router['get'](_0xf54e('0xf'),auth[_0xf54e('0xd')](),controller[_0xf54e('0x10')]);var upload=multer({'storage':multer[_0xf54e('0x11')]({'destination':function(_0x5f232a,_0x558502,_0xc939ab){_0xc939ab(null,path[_0xf54e('0x12')](config[_0xf54e('0x13')],'server/files/plugins'));},'filename':function(_0x358c88,_0x4b0ee1,_0x4bd828){_0x4b0ee1[_0xf54e('0x14')]=_0x4b0ee1[_0xf54e('0x14')][_0xf54e('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4bd828(null,util[_0xf54e('0x16')]('%s-%s%s',path[_0xf54e('0x17')](_0x4b0ee1[_0xf54e('0x14')],path[_0xf54e('0x18')](_0x4b0ee1[_0xf54e('0x14')])),Date['now'](),path[_0xf54e('0x18')](_0x4b0ee1[_0xf54e('0x14')])));}})});router[_0xf54e('0x19')]('/',upload['single']('file'),controller[_0xf54e('0x1a')]);router[_0xf54e('0x19')](_0xf54e('0xc'),controller[_0xf54e('0x1b')]);router[_0xf54e('0x1c')](_0xf54e('0x1d'),auth[_0xf54e('0xd')](),controller[_0xf54e('0x1e')]);router[_0xf54e('0x1f')](_0xf54e('0x1d'),auth[_0xf54e('0xd')](),controller['delete']);module['exports']=router;
\ No newline at end of file
index c29f01e..0a0a3ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2880=['Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','exports','STRING','ENUM','html','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always'];(function(_0xaaef26,_0x2c7bf5){var _0x4a7e48=function(_0x329bac){while(--_0x329bac){_0xaaef26['push'](_0xaaef26['shift']());}};_0x4a7e48(++_0x2c7bf5);}(_0x2880,0x139));var _0x0288=function(_0x36f7b7,_0x5445ba){_0x36f7b7=_0x36f7b7-0x0;var _0x15a1b3=_0x2880[_0x36f7b7];return _0x15a1b3;};'use strict';var Sequelize=require('sequelize');module[_0x0288('0x0')]={'name':{'type':Sequelize[_0x0288('0x1')]},'type':{'type':Sequelize[_0x0288('0x2')](_0x0288('0x3'),'script')},'description':{'type':Sequelize[_0x0288('0x4')]},'version':{'type':Sequelize[_0x0288('0x4')]},'path':{'type':Sequelize[_0x0288('0x1')],'comment':_0x0288('0x5')},'active':{'type':Sequelize[_0x0288('0x6')],'defaultValue':0x0,'comment':_0x0288('0x7')},'sidebar':{'type':Sequelize[_0x0288('0x2')](_0x0288('0x8'),_0x0288('0x9'),_0x0288('0xa'),'never'),'defaultValue':_0x0288('0xa'),'comment':_0x0288('0xb')},'icon':{'type':Sequelize[_0x0288('0x1')]},'adminUrl':{'type':Sequelize[_0x0288('0x1')]},'agentUrl':{'type':Sequelize[_0x0288('0x1')]},'scriptName':{'type':Sequelize[_0x0288('0x1')]},'scriptPath':{'type':Sequelize[_0x0288('0x1')]}};
\ No newline at end of file
+var _0xb9b7=['Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','html','TEXT','STRING','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN'];(function(_0x1c0ca2,_0x244058){var _0x5c37df=function(_0x5ad4b0){while(--_0x5ad4b0){_0x1c0ca2['push'](_0x1c0ca2['shift']());}};_0x5c37df(++_0x244058);}(_0xb9b7,0xd1));var _0x7b9b=function(_0x1848f1,_0xfe1192){_0x1848f1=_0x1848f1-0x0;var _0xfca5bb=_0xb9b7[_0x1848f1];return _0xfca5bb;};'use strict';var Sequelize=require(_0x7b9b('0x0'));module[_0x7b9b('0x1')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0x7b9b('0x2'),'script')},'description':{'type':Sequelize[_0x7b9b('0x3')]},'version':{'type':Sequelize[_0x7b9b('0x3')]},'path':{'type':Sequelize[_0x7b9b('0x4')],'comment':_0x7b9b('0x5')},'active':{'type':Sequelize[_0x7b9b('0x6')],'defaultValue':0x0,'comment':_0x7b9b('0x7')},'sidebar':{'type':Sequelize['ENUM'](_0x7b9b('0x8'),_0x7b9b('0x9'),'always','never'),'defaultValue':_0x7b9b('0xa'),'comment':_0x7b9b('0xb')},'icon':{'type':Sequelize['STRING']},'adminUrl':{'type':Sequelize[_0x7b9b('0x4')]},'agentUrl':{'type':Sequelize[_0x7b9b('0x4')]},'scriptName':{'type':Sequelize[_0x7b9b('0x4')]},'scriptPath':{'type':Sequelize[_0x7b9b('0x4')]}};
\ No newline at end of file
index 34fe570..7652e8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9328=['archiver','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','update','then','destroy','get','Plugins','UserProfileResource','error','stack','name','send','map','Plugin','rawAttributes','fieldName','type','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','rows','catch','show','include','find','download','root','server/files/plugins','format','%s.zip','basename','path','createWriteStream','zip','warning','code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','join','dirname','node_modules/**/*','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','readdirSync','Invalid\x20plugin\x20structure','lstatSync','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','Invalid\x20manifest:\x20parameters\x20missing','views','Invalid\x20manifest:\x20views\x20missing','parameters','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','html','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','create','role','body','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','params','delete','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','headers','content-length','content-type','statusCode','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','method','%s%s','eml-format','rimraf','fast-json-patch','mustache','util','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','extract-zip'];(function(_0x246cbd,_0x2f8504){var _0x2f7232=function(_0x135a07){while(--_0x135a07){_0x246cbd['push'](_0x246cbd['shift']());}};_0x2f7232(++_0x2f8504);}(_0x9328,0x99));var _0x8932=function(_0x56171e,_0x6c5a1e){_0x56171e=_0x56171e-0x0;var _0x1238b7=_0x9328[_0x56171e];return _0x1238b7;};'use strict';var emlformat=require(_0x8932('0x0'));var rimraf=require(_0x8932('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8932('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8932('0x3'));var util=require(_0x8932('0x4'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8932('0x5'));var fs=require('fs');var fs_extra=require(_0x8932('0x6'));var _=require(_0x8932('0x7'));var squel=require(_0x8932('0x8'));var crypto=require(_0x8932('0x9'));var jsforce=require(_0x8932('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x8932('0xb'));var querystring=require(_0x8932('0xc'));var Papa=require(_0x8932('0xd'));var extract=require(_0x8932('0xe'));var rimraf=require('rimraf');var archiver=require(_0x8932('0xf'));var Redis=require(_0x8932('0x10'));var authService=require(_0x8932('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x8932('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8932('0x13'));var utils=require(_0x8932('0x14'));var config=require(_0x8932('0x15'));var licenseUtil=require(_0x8932('0x16'));var db=require(_0x8932('0x17'))['db'];config['redis']=_[_0x8932('0x18')](config[_0x8932('0x19')],{'host':_0x8932('0x1a'),'port':0x18eb});var socket=require(_0x8932('0x1b'))(new Redis(config['redis']));require(_0x8932('0x1c'))[_0x8932('0x1d')](socket);function respondWithStatusCode(_0x2205e4,_0x26b56b){_0x26b56b=_0x26b56b||0xcc;return function(_0x526f67){if(_0x526f67){return _0x2205e4[_0x8932('0x1e')](_0x26b56b);}return _0x2205e4[_0x8932('0x1f')](_0x26b56b)[_0x8932('0x20')]();};}function respondWithResult(_0x293d3c,_0x26f565){_0x26f565=_0x26f565||0xc8;return function(_0x5e0933){if(_0x5e0933){return _0x293d3c[_0x8932('0x1f')](_0x26f565)[_0x8932('0x21')](_0x5e0933);}};}function respondWithFilteredResult(_0x865035,_0x3be119){return function(_0x10506d){if(_0x10506d){var _0x540d28=typeof _0x3be119[_0x8932('0x22')]===_0x8932('0x23')&&typeof _0x3be119['limit']===_0x8932('0x23');var _0xacd8ce=_0x10506d['count'];var _0x21e7cb=_0x540d28?0x0:_0x3be119[_0x8932('0x22')];var _0x462508=_0x540d28?_0x10506d[_0x8932('0x24')]:_0x3be119[_0x8932('0x22')]+_0x3be119[_0x8932('0x25')];var _0x3bb9ea;if(_0x462508>=_0xacd8ce){_0x462508=_0xacd8ce;_0x3bb9ea=0xc8;}else{_0x3bb9ea=0xce;}_0x865035[_0x8932('0x1f')](_0x3bb9ea);return _0x865035[_0x8932('0x26')]('Content-Range',_0x21e7cb+'-'+_0x462508+'/'+_0xacd8ce)[_0x8932('0x21')](_0x10506d);}return null;};}function patchUpdates(_0x2eb330){return function(_0x305593){try{jsonpatch[_0x8932('0x27')](_0x305593,_0x2eb330,!![]);}catch(_0x2639fd){return BPromise[_0x8932('0x28')](_0x2639fd);}return _0x305593['save']();};}function saveUpdates(_0x14be07,_0x1ffa57){return function(_0x2f5cdc){if(_0x2f5cdc){return _0x2f5cdc[_0x8932('0x29')](_0x14be07)[_0x8932('0x2a')](function(_0x579eb6){return _0x579eb6;});}return null;};}function removeEntity(_0x49399a,_0x1aaddc){return function(_0xd8a833){if(_0xd8a833){return _0xd8a833[_0x8932('0x2b')]()[_0x8932('0x2a')](function(){var _0x320f23=_0xd8a833[_0x8932('0x2c')]({'plain':!![]});var _0x394b3d=_0x8932('0x2d');return db[_0x8932('0x2e')]['destroy']({'where':{'type':_0x394b3d,'resourceId':_0x320f23['id']}})[_0x8932('0x2a')](function(){return _0xd8a833;});})['then'](function(){_0x49399a[_0x8932('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x37e892,_0x205a3e){return function(_0x412789){if(!_0x412789){_0x37e892[_0x8932('0x1e')](0x194);}return _0x412789;};}function handleError(_0x22e7be,_0x3ca162){_0x3ca162=_0x3ca162||0x1f4;return function(_0x5f560e){logger[_0x8932('0x2f')](_0x5f560e[_0x8932('0x30')]);if(_0x5f560e[_0x8932('0x31')]){delete _0x5f560e[_0x8932('0x31')];}_0x22e7be[_0x8932('0x1f')](_0x3ca162)[_0x8932('0x32')](_0x5f560e);};}exports['index']=function(_0x5d7b29,_0xbac954){var _0x3d3a24={},_0x2ac46a={},_0x2ef748={'count':0x0,'rows':[]};var _0x43cfab=_[_0x8932('0x33')](db[_0x8932('0x34')][_0x8932('0x35')],function(_0x32b6bc){return{'name':_0x32b6bc[_0x8932('0x36')],'type':_0x32b6bc[_0x8932('0x37')]['key']};});_0x2ac46a[_0x8932('0x38')]=_['map'](_0x43cfab,_0x8932('0x31'));_0x2ac46a['query']=_[_0x8932('0x39')](_0x5d7b29['query']);_0x2ac46a[_0x8932('0x3a')]=_[_0x8932('0x3b')](_0x2ac46a[_0x8932('0x38')],_0x2ac46a[_0x8932('0x3c')]);_0x3d3a24[_0x8932('0x3d')]=_[_0x8932('0x3b')](_0x2ac46a[_0x8932('0x38')],qs[_0x8932('0x3e')](_0x5d7b29[_0x8932('0x3c')][_0x8932('0x3e')]));_0x3d3a24['attributes']=_0x3d3a24[_0x8932('0x3d')][_0x8932('0x3f')]?_0x3d3a24[_0x8932('0x3d')]:_0x2ac46a[_0x8932('0x38')];if(!_0x5d7b29[_0x8932('0x3c')][_0x8932('0x40')]('nolimit')){_0x3d3a24[_0x8932('0x25')]=qs[_0x8932('0x25')](_0x5d7b29[_0x8932('0x3c')][_0x8932('0x25')]);_0x3d3a24[_0x8932('0x22')]=qs[_0x8932('0x22')](_0x5d7b29['query']['offset']);}_0x3d3a24[_0x8932('0x41')]=qs[_0x8932('0x42')](_0x5d7b29[_0x8932('0x3c')]['sort']);_0x3d3a24[_0x8932('0x43')]=qs[_0x8932('0x3a')](_[_0x8932('0x44')](_0x5d7b29['query'],_0x2ac46a[_0x8932('0x3a')]),_0x43cfab);if(_0x5d7b29['query'][_0x8932('0x45')]){_0x3d3a24[_0x8932('0x43')]=_[_0x8932('0x46')](_0x3d3a24['where'],{'$or':_[_0x8932('0x33')](_0x43cfab,function(_0x384dd1){if(_0x384dd1[_0x8932('0x37')]!=='VIRTUAL'){var _0x5b1e77={};_0x5b1e77[_0x384dd1['name']]={'$like':'%'+_0x5d7b29[_0x8932('0x3c')][_0x8932('0x45')]+'%'};return _0x5b1e77;}})});}_0x3d3a24=_['merge']({},_0x3d3a24,_0x5d7b29[_0x8932('0x47')]);var _0x405f0b={'where':_0x3d3a24[_0x8932('0x43')]};return db[_0x8932('0x34')][_0x8932('0x24')](_0x405f0b)[_0x8932('0x2a')](function(_0x56eacf){_0x2ef748[_0x8932('0x24')]=_0x56eacf;if(_0x5d7b29[_0x8932('0x3c')][_0x8932('0x48')]){_0x3d3a24['include']=[{'all':!![]}];}return db[_0x8932('0x34')]['findAll'](_0x3d3a24);})[_0x8932('0x2a')](function(_0x239528){_0x2ef748[_0x8932('0x49')]=_0x239528;return _0x2ef748;})['then'](respondWithFilteredResult(_0xbac954,_0x3d3a24))[_0x8932('0x4a')](handleError(_0xbac954,null));};exports[_0x8932('0x4b')]=function(_0x11c585,_0xb7c305){var _0x14ccf2={'raw':!![],'where':{'id':_0x11c585['params']['id']}},_0x2dbcf7={};_0x2dbcf7['model']=_[_0x8932('0x39')](db[_0x8932('0x34')]['rawAttributes']);_0x2dbcf7[_0x8932('0x3c')]=_[_0x8932('0x39')](_0x11c585['query']);_0x2dbcf7[_0x8932('0x3a')]=_['intersection'](_0x2dbcf7[_0x8932('0x38')],_0x2dbcf7['query']);_0x14ccf2[_0x8932('0x3d')]=_['intersection'](_0x2dbcf7[_0x8932('0x38')],qs['fields'](_0x11c585['query'][_0x8932('0x3e')]));_0x14ccf2[_0x8932('0x3d')]=_0x14ccf2[_0x8932('0x3d')][_0x8932('0x3f')]?_0x14ccf2[_0x8932('0x3d')]:_0x2dbcf7[_0x8932('0x38')];if(_0x11c585[_0x8932('0x3c')][_0x8932('0x48')]){_0x14ccf2[_0x8932('0x4c')]=[{'all':!![]}];}_0x14ccf2=_[_0x8932('0x46')]({},_0x14ccf2,_0x11c585['options']);return db[_0x8932('0x34')][_0x8932('0x4d')](_0x14ccf2)[_0x8932('0x2a')](handleEntityNotFound(_0xb7c305,null))['then'](respondWithResult(_0xb7c305,null))[_0x8932('0x4a')](handleError(_0xb7c305,null));};exports[_0x8932('0x4e')]=function(_0x51b370,_0x308681,_0x2f7832){return db[_0x8932('0x34')]['find']({'where':{'id':_0x51b370['params']['id']},'attributes':[_0x8932('0x31'),'path'],'raw':!![]})['then'](handleEntityNotFound(_0x308681,null))[_0x8932('0x2a')](function(_0x316cc6){if(_0x316cc6){var _0x303113=path['join'](config[_0x8932('0x4f')],_0x8932('0x50'),util[_0x8932('0x51')](_0x8932('0x52'),path[_0x8932('0x53')](_0x316cc6[_0x8932('0x54')])));var _0x510a5c=fs[_0x8932('0x55')](_0x303113);var _0x571426=archiver(_0x8932('0x56'),{'zlib':{'level':0x9}});_0x571426['on'](_0x8932('0x57'),function(_0x481812){if(_0x481812[_0x8932('0x58')]===_0x8932('0x59')){logger[_0x8932('0x2f')](_0x481812);}else{throw new db[(_0x8932('0x5a'))][(_0x8932('0x5b'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x571426['on'](_0x8932('0x2f'),function(_0x421dde){throw new db[(_0x8932('0x5a'))][(_0x8932('0x5b'))](_0x8932('0x5c'));});_0x571426[_0x8932('0x5d')](_0x510a5c);_0x571426[_0x8932('0x5e')]('**/*',{'cwd':path[_0x8932('0x5f')](config[_0x8932('0x4f')],_0x8932('0x50'),path[_0x8932('0x60')](_0x316cc6['path'])),'ignore':[path['join'](path[_0x8932('0x53')](_0x316cc6[_0x8932('0x54')]),_0x8932('0x61')),path[_0x8932('0x5f')](path[_0x8932('0x53')](_0x316cc6[_0x8932('0x54')]),_0x8932('0x62'))],'nodir':!![]})[_0x8932('0x63')]();_0x510a5c['on'](_0x8932('0x64'),function(){if(!fs[_0x8932('0x65')](_0x303113)){throw new db[(_0x8932('0x5a'))][(_0x8932('0x5b'))](_0x8932('0x66'));}return _0x308681[_0x8932('0x4e')](_0x303113,util[_0x8932('0x51')]('%s.zip',path[_0x8932('0x53')](_0x316cc6['path'])),function(_0x42b94a){if(_0x42b94a){throw new db[(_0x8932('0x5a'))][(_0x8932('0x5b'))](_0x8932('0x67'));}fs[_0x8932('0x68')](_0x303113);logger[_0x8932('0x69')](_0x8932('0x6a'));logger[_0x8932('0x69')](_0x8932('0x6b'));});});}return null;})[_0x8932('0x4a')](handleError(_0x308681,null));};exports['upload']=function(_0x2dd697,_0x259180,_0x45df26){var _0x1746e2=path[_0x8932('0x53')](_0x2dd697[_0x8932('0x6c')][_0x8932('0x6d')],path[_0x8932('0x6e')](_0x2dd697[_0x8932('0x6c')][_0x8932('0x6d')]));var _0x4b4675=path[_0x8932('0x5f')](config[_0x8932('0x4f')],'server/files/plugins',_0x2dd697[_0x8932('0x6c')][_0x8932('0x6d')]);var _0x2b211a=path[_0x8932('0x5f')](config[_0x8932('0x4f')],_0x8932('0x50'),_0x1746e2);logger[_0x8932('0x69')](_0x8932('0x6f'),_0x4b4675);logger['info']('Plugin\x20upload\x20destination:\x20%s',_0x2b211a);try{fs['chmodSync'](_0x4b4675,parseInt('0777',0x8));extract(_0x4b4675,{'dir':_0x2b211a},function(_0x492bad){if(_0x492bad){logger[_0x8932('0x2f')](_0x492bad);handleError(_0x492bad,!![]);};var _0x518291=fs[_0x8932('0x70')](_0x2b211a);if(_0x518291[_0x8932('0x3f')]>0x1){removeReferences(_0x4b4675,_0x2b211a);logger['error']('Invalid\x20plugin\x20structure');return _0x45df26(new Error(_0x8932('0x71')));}var _0x21c4b1=fs[_0x8932('0x72')](path[_0x8932('0x5f')](_0x2b211a,_0x518291[0x0]));if(_0x21c4b1['isFile']()){removeReferences(_0x4b4675,_0x2b211a);logger[_0x8932('0x2f')]('Invalid\x20plugin\x20structure');return _0x45df26(new Error(_0x8932('0x71')));}if(_0x21c4b1['isDirectory']()){var _0x494d5b=fs[_0x8932('0x70')](path[_0x8932('0x5f')](_0x2b211a,_0x518291[0x0]));if(_0x494d5b[_0x8932('0x3f')]===0x0){removeReferences(_0x4b4675,_0x2b211a);logger[_0x8932('0x2f')](_0x8932('0x71'));return _0x45df26(new Error('Invalid\x20plugin\x20structure'));}var _0x3a930e=_0x494d5b[_0x8932('0x73')](function(_0x35c83e){return _0x35c83e===_0x8932('0x74');});if(!_0x3a930e){return _0x45df26(new Error(_0x8932('0x75')));}var _0xded85c=fs[_0x8932('0x76')](path[_0x8932('0x5f')](_0x2b211a,_0x518291[0x0],'manifest.json'));var _0x4d42d=JSON[_0x8932('0x77')](_0xded85c);if(_0x8932('0x23')==typeof _0x4d42d[_0x8932('0x31')]){return _0x45df26(new Error('Invalid\x20manifest:\x20name\x20missing'));}if('undefined'==typeof _0x4d42d['type']){return _0x45df26(new Error(_0x8932('0x78')));}if(_0x8932('0x23')==typeof _0x4d42d[_0x8932('0x79')]){return _0x45df26(new Error(_0x8932('0x7a')));}if('undefined'==typeof _0x4d42d['parameters']){return _0x45df26(new Error(_0x8932('0x7b')));}if(_0x4d42d['type']==='html'){if(_0x8932('0x23')==typeof _0x4d42d['parameters'][_0x8932('0x7c')]){return _0x45df26(new Error(_0x8932('0x7d')));}if('undefined'==typeof _0x4d42d[_0x8932('0x7e')]['views'][_0x8932('0x7f')]&&_0x8932('0x23')==typeof _0x4d42d['parameters'][_0x8932('0x7c')][_0x8932('0x80')]){return _0x45df26(new Error(_0x8932('0x81')));}}else if(_0x4d42d[_0x8932('0x37')]===_0x8932('0x82')){if('undefined'==typeof _0x4d42d['parameters'][_0x8932('0x83')]){return _0x45df26(new Error('Invalid\x20manifest:\x20script\x20name\x20missing'));}if('undefined'==typeof _0x4d42d[_0x8932('0x7e')][_0x8932('0x84')]){return _0x45df26(new Error(_0x8932('0x85')));}}else{return _0x45df26(new Error(_0x8932('0x86')));}var _0x58dba9=_0x4d42d[_0x8932('0x31')];var _0x43791b=_0x4d42d[_0x8932('0x87')];var _0x4cc1fd=_0x4d42d[_0x8932('0x37')];var _0x4fc9a3=_0x4d42d[_0x8932('0x88')]?_0x4d42d[_0x8932('0x88')]:_0x8932('0x89');var _0x2ba567=_0x4d42d['icon']?_0x4d42d[_0x8932('0x8a')]:_0x8932('0x8b');var _0x49e8ae='';var _0x3d16f1='';var _0x2147d5='';var _0x91efa6='';var _0x45c6c0=_0x4d42d['version'];if(_0x4cc1fd===_0x8932('0x8c')){if(_0x8932('0x23')!=typeof _0x4d42d[_0x8932('0x7e')]['views']['admin']){var _0x361d26=_0x4d42d['parameters'][_0x8932('0x7c')][_0x8932('0x7f')];if(!/^(f|ht)tps?:\/\//i[_0x8932('0x8d')](_0x361d26)){_0x49e8ae=path[_0x8932('0x5f')](_0x8932('0x8e'),_0x1746e2,_0x518291[0x0],_0x361d26);}else{_0x49e8ae=_0x361d26;}}else{logger[_0x8932('0x69')](_0x8932('0x8f'));}if(_0x8932('0x23')!=typeof _0x4d42d[_0x8932('0x7e')]['views'][_0x8932('0x80')]){var _0x4ef8f4=_0x4d42d[_0x8932('0x7e')][_0x8932('0x7c')][_0x8932('0x80')];if(!/^(f|ht)tps?:\/\//i[_0x8932('0x8d')](_0x4ef8f4)){_0x3d16f1=path['join'](_0x8932('0x8e'),_0x1746e2,_0x518291[0x0],_0x4ef8f4);}else{_0x3d16f1=_0x4ef8f4;}}else{logger[_0x8932('0x69')]('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x4cc1fd===_0x8932('0x82')){_0x2147d5=_0x4d42d['parameters'][_0x8932('0x83')];_0x91efa6=_0x4d42d[_0x8932('0x7e')][_0x8932('0x84')];if(_0x8932('0x23')!=typeof _0x4d42d[_0x8932('0x7e')][_0x8932('0x7c')]){if('undefined'!=typeof _0x4d42d[_0x8932('0x7e')]['views'][_0x8932('0x7f')]){var _0x361d26=_0x4d42d['parameters'][_0x8932('0x7c')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0x8932('0x8d')](_0x361d26)){_0x49e8ae=path[_0x8932('0x5f')](_0x8932('0x8e'),_0x1746e2,_0x518291[0x0],_0x361d26);}else{_0x49e8ae=_0x361d26;}}if('undefined'!=typeof _0x4d42d[_0x8932('0x7e')]['views'][_0x8932('0x80')]){var _0x4ef8f4=_0x4d42d[_0x8932('0x7e')][_0x8932('0x7c')][_0x8932('0x80')];if(!/^(f|ht)tps?:\/\//i[_0x8932('0x8d')](_0x4ef8f4)){_0x3d16f1=path[_0x8932('0x5f')]('plugins',_0x1746e2,_0x518291[0x0],_0x4ef8f4);}else{_0x3d16f1=_0x4ef8f4;}}}}var _0xd693d7={'name':_0x58dba9,'description':_0x43791b,'path':path['join'](_0x1746e2,_0x518291[0x0]),'type':_0x4cc1fd,'sidebar':_0x4fc9a3,'icon':_0x2ba567,'adminUrl':_0x49e8ae,'agentUrl':_0x3d16f1,'scriptName':_0x2147d5,'scriptPath':_0x91efa6,'version':_0x45c6c0};removeReferences(_0x4b4675,null);return db[_0x8932('0x34')][_0x8932('0x90')](_0xd693d7)['then'](function(_0x472286){var _0x46e605={'role':_0x2dd697['body'][_0x8932('0x91')],'userProfileId':_0x2dd697[_0x8932('0x92')]['userProfileId']};if(!_0x46e605)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x46e605[_0x8932('0x91')]===_0x8932('0x93')){var _0x273a1f=_0x472286[_0x8932('0x2c')]({'plain':!![]});return db[_0x8932('0x94')][_0x8932('0x4d')]({'where':{'name':'Plugins','userProfileId':_0x46e605[_0x8932('0x95')]},'raw':!![]})[_0x8932('0x2a')](function(_0x4fe3f5){if(_0x4fe3f5&&_0x4fe3f5['autoAssociation']===0x0){return db[_0x8932('0x2e')][_0x8932('0x90')]({'name':_0x273a1f['name'],'resourceId':_0x273a1f['id'],'type':_0x4fe3f5[_0x8932('0x31')],'sectionId':_0x4fe3f5['id']},{})[_0x8932('0x2a')](function(){return _0x472286;});}else{return _0x472286;}})['catch'](function(_0x24f74a){logger[_0x8932('0x2f')](_0x8932('0x96'),_0x24f74a);throw _0x24f74a;});}return _0x472286;})[_0x8932('0x2a')](respondWithResult(_0x259180,null))['catch'](handleError(_0x259180,null));}});}catch(_0x15b6a9){_0x259180[_0x8932('0x1f')](0x1f4)['send'](_0x15b6a9);}};function removeReferences(_0x2a2bbe,_0x493d27){try{if(_0x2a2bbe){fs[_0x8932('0x68')](_0x2a2bbe);logger['info'](_0x8932('0x97'));}if(_0x493d27){rimraf(_0x493d27,function(){});logger[_0x8932('0x69')](_0x8932('0x98'));}}catch(_0x37939d){logger[_0x8932('0x2f')](_0x37939d);}}exports[_0x8932('0x29')]=function(_0x14206a,_0x4a82c2,_0x25c785){return db['Plugin'][_0x8932('0x4d')]({'where':{'id':_0x14206a[_0x8932('0x99')]['id']}})['then'](handleEntityNotFound(_0x4a82c2,null))[_0x8932('0x2a')](saveUpdates(_0x14206a[_0x8932('0x92')],null))[_0x8932('0x2a')](respondWithResult(_0x4a82c2,null))[_0x8932('0x4a')](handleError(_0x4a82c2,null));};exports[_0x8932('0x9a')]=function(_0x413fef,_0x5bdf51,_0x13ce42){return db[_0x8932('0x34')]['find']({'where':{'id':_0x413fef['params']['id']}})[_0x8932('0x2a')](function(_0x452001){if(_0x452001){return _0x452001[_0x8932('0x2b')]();}})[_0x8932('0x2a')](function(_0x3bf7a6){rimraf(path[_0x8932('0x5f')](config['root'],'server/files/plugins',path[_0x8932('0x60')](_0x3bf7a6[_0x8932('0x54')])),function(){});return _0x3bf7a6;})['then'](handleEntityNotFound(_0x5bdf51,null))['then'](respondWithStatusCode(_0x5bdf51,null))[_0x8932('0x4a')](handleError(_0x5bdf51,null));};exports['webhookGet']=function(_0x57b685,_0x1b04f1,_0xd06346){return BPromise['resolve']()[_0x8932('0x2a')](function(){if(!_0x57b685[_0x8932('0x3c')][_0x8932('0x54')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x57b685[_0x8932('0x3c')][_0x8932('0x9b')]){throw new Error(_0x8932('0x9c'));}var _0x1948bc=_0x57b685[_0x8932('0x3c')][_0x8932('0x9d')]?_0x57b685['query']['hostname']+':'+_0x57b685[_0x8932('0x3c')][_0x8932('0x9b')]:_0x8932('0x9e')+_0x57b685['query'][_0x8932('0x9b')];var _0x16412d=_0x57b685['query']['json']?_0x57b685['query'][_0x8932('0x21')]:!![];var _0x4d2aa9=_0x57b685[_0x8932('0x3c')]['encoding']?_0x57b685[_0x8932('0x3c')][_0x8932('0x9f')]:null;var _0x300bc0={'method':_0x57b685['method'],'uri':util[_0x8932('0x51')]('%s%s',_0x1948bc,_0x57b685[_0x8932('0x3c')][_0x8932('0x54')]),'json':_0x16412d,'resolveWithFullResponse':!![],'encoding':_0x4d2aa9,'qs':_0x57b685[_0x8932('0x3c')]};if(_0x57b685['headers']){_0x300bc0['headers']=_0x57b685[_0x8932('0xa0')];if(_0x300bc0[_0x8932('0xa0')]['content-length']){delete _0x300bc0['headers'][_0x8932('0xa1')];}}if(_0x300bc0[_0x8932('0xa0')][_0x8932('0xa2')]){delete _0x300bc0[_0x8932('0xa0')][_0x8932('0xa2')];}return rp(_0x300bc0);})[_0x8932('0x2a')](function(_0x389594){if(_0x389594){_0x1b04f1[_0x8932('0x26')](_0x389594['headers']);logger['info'](_0x389594['body']);if(_['endsWith'](_0x57b685['query'][_0x8932('0x54')],'download')&&_0x389594['statusCode']==0x1f4){return _0x1b04f1[_0x8932('0x1e')](_0x389594[_0x8932('0xa3')]);}else{return _0x1b04f1[_0x8932('0x1f')](_0x389594[_0x8932('0xa3')])[_0x8932('0x32')](_0x389594[_0x8932('0x92')]);}}else{return _0x1b04f1[_0x8932('0x1e')](0xc8);}})['catch'](handleError(_0x1b04f1,null));};exports['webhookPost']=function(_0x2e987f,_0x17e444,_0x18326e){return BPromise[_0x8932('0xa4')]()[_0x8932('0x2a')](function(){if(!_0x2e987f[_0x8932('0x3c')][_0x8932('0x54')]){throw new Error(_0x8932('0xa5'));}if(!_0x2e987f[_0x8932('0x3c')]['port']){throw new Error(_0x8932('0x9c'));}var _0x5a4213=_0x2e987f[_0x8932('0x3c')][_0x8932('0x9d')]?_0x2e987f[_0x8932('0x3c')][_0x8932('0x9d')]+':'+_0x2e987f[_0x8932('0x3c')][_0x8932('0x9b')]:'http://localhost:'+_0x2e987f['query'][_0x8932('0x9b')];var _0x39af37=_0x2e987f[_0x8932('0x3c')]['json']?_0x2e987f['query'][_0x8932('0x21')]:!![];var _0x4f0d13=_0x2e987f[_0x8932('0x3c')][_0x8932('0x9f')]?_0x2e987f['query'][_0x8932('0x9f')]:null;var _0x150f83={'method':_0x2e987f[_0x8932('0xa6')],'uri':util[_0x8932('0x51')](_0x8932('0xa7'),_0x5a4213,_0x2e987f[_0x8932('0x3c')]['path']),'json':_0x39af37,'resolveWithFullResponse':!![],'encoding':_0x4f0d13,'body':_0x2e987f['body']};if(_0x2e987f[_0x8932('0xa0')]){_0x150f83['headers']=_0x2e987f['headers'];if(_0x150f83[_0x8932('0xa0')][_0x8932('0xa1')]){delete _0x150f83[_0x8932('0xa0')][_0x8932('0xa1')];}}if(_0x150f83[_0x8932('0xa0')]['content-type']){delete _0x150f83['headers'][_0x8932('0xa2')];}return rp(_0x150f83);})[_0x8932('0x2a')](function(_0x2c8248){if(_0x2c8248){_0x17e444[_0x8932('0x26')](_0x2c8248[_0x8932('0xa0')]);logger[_0x8932('0x69')](_0x2c8248[_0x8932('0x92')]);return _0x17e444[_0x8932('0x1f')](_0x2c8248[_0x8932('0xa3')])[_0x8932('0x32')](_0x2c8248['body']);}else{return _0x17e444[_0x8932('0x1e')](0xc8);}})[_0x8932('0x4a')](handleError(_0x17e444,null));};
\ No newline at end of file
+var _0x741b=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../mysqldb','redis','defaults','localhost','./plugin.socket','register','sendStatus','end','offset','limit','undefined','status','Content-Range','json','reject','save','destroy','get','Plugins','UserProfileResource','then','error','stack','name','send','index','map','Plugin','fieldName','type','query','keys','filters','model','attributes','intersection','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','findAll','catch','show','params','rawAttributes','fields','find','download','join','root','server/files/plugins','basename','createWriteStream','zip','warning','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','Plugin\x20not\x20found','format','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','extname','file','filename','Plugin\x20upload\x20filepath:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','parameters','Invalid\x20manifest:\x20parameters\x20missing','Invalid\x20manifest:\x20views\x20missing','views','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','description','sidebar','always','icon','icon-apps','version','html','admin','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','scriptName','create','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Zip\x20archive\x20removed','delete','dirname','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified','port','http://localhost:','encoding','method','headers','content-length','content-type','endsWith','statusCode','hostname','%s%s','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','extract-zip','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x78fb86,_0x49fbe5){var _0x3b881a=function(_0x440d40){while(--_0x440d40){_0x78fb86['push'](_0x78fb86['shift']());}};_0x3b881a(++_0x49fbe5);}(_0x741b,0x92));var _0xb741=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x741b[_0x110c3d];return _0x226d67;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb741('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb741('0x1'));var moment=require('moment');var BPromise=require(_0xb741('0x2'));var Mustache=require(_0xb741('0x3'));var util=require(_0xb741('0x4'));var path=require(_0xb741('0x5'));var sox=require(_0xb741('0x6'));var csv=require(_0xb741('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb741('0x8'));var _=require(_0xb741('0x9'));var squel=require(_0xb741('0xa'));var crypto=require(_0xb741('0xb'));var jsforce=require(_0xb741('0xc'));var deskjs=require(_0xb741('0xd'));var toCsv=require(_0xb741('0x7'));var querystring=require(_0xb741('0xe'));var Papa=require(_0xb741('0xf'));var extract=require(_0xb741('0x10'));var rimraf=require(_0xb741('0x0'));var archiver=require('archiver');var Redis=require(_0xb741('0x11'));var authService=require(_0xb741('0x12'));var qs=require(_0xb741('0x13'));var as=require(_0xb741('0x14'));var hardwareService=require(_0xb741('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xb741('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb741('0x17'))['db'];config[_0xb741('0x18')]=_[_0xb741('0x19')](config[_0xb741('0x18')],{'host':_0xb741('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xb741('0x1b'))[_0xb741('0x1c')](socket);function respondWithStatusCode(_0x3b927f,_0x11c095){_0x11c095=_0x11c095||0xcc;return function(_0x1d68a2){if(_0x1d68a2){return _0x3b927f[_0xb741('0x1d')](_0x11c095);}return _0x3b927f['status'](_0x11c095)[_0xb741('0x1e')]();};}function respondWithResult(_0x5630df,_0x3af594){_0x3af594=_0x3af594||0xc8;return function(_0x43c809){if(_0x43c809){return _0x5630df['status'](_0x3af594)['json'](_0x43c809);}};}function respondWithFilteredResult(_0x7fc5e3,_0x5b1517){return function(_0x130682){if(_0x130682){var _0x550b7a=typeof _0x5b1517[_0xb741('0x1f')]==='undefined'&&typeof _0x5b1517[_0xb741('0x20')]===_0xb741('0x21');var _0x14b03c=_0x130682['count'];var _0x415b5f=_0x550b7a?0x0:_0x5b1517[_0xb741('0x1f')];var _0x3ca12a=_0x550b7a?_0x130682['count']:_0x5b1517['offset']+_0x5b1517[_0xb741('0x20')];var _0x45e638;if(_0x3ca12a>=_0x14b03c){_0x3ca12a=_0x14b03c;_0x45e638=0xc8;}else{_0x45e638=0xce;}_0x7fc5e3[_0xb741('0x22')](_0x45e638);return _0x7fc5e3['set'](_0xb741('0x23'),_0x415b5f+'-'+_0x3ca12a+'/'+_0x14b03c)[_0xb741('0x24')](_0x130682);}return null;};}function patchUpdates(_0x26aac2){return function(_0x597ef0){try{jsonpatch['apply'](_0x597ef0,_0x26aac2,!![]);}catch(_0x27fed1){return BPromise[_0xb741('0x25')](_0x27fed1);}return _0x597ef0[_0xb741('0x26')]();};}function saveUpdates(_0x3f2836,_0x576669){return function(_0xcdcb68){if(_0xcdcb68){return _0xcdcb68['update'](_0x3f2836)['then'](function(_0x2f7099){return _0x2f7099;});}return null;};}function removeEntity(_0x5aba23,_0x19f2dd){return function(_0x14f109){if(_0x14f109){return _0x14f109[_0xb741('0x27')]()['then'](function(){var _0x25f5a9=_0x14f109[_0xb741('0x28')]({'plain':!![]});var _0xf9ee5c=_0xb741('0x29');return db[_0xb741('0x2a')][_0xb741('0x27')]({'where':{'type':_0xf9ee5c,'resourceId':_0x25f5a9['id']}})[_0xb741('0x2b')](function(){return _0x14f109;});})['then'](function(){_0x5aba23[_0xb741('0x22')](0xcc)[_0xb741('0x1e')]();});}};}function handleEntityNotFound(_0x2ba084,_0x19013d){return function(_0x221324){if(!_0x221324){_0x2ba084['sendStatus'](0x194);}return _0x221324;};}function handleError(_0x4685f6,_0x23c2b0){_0x23c2b0=_0x23c2b0||0x1f4;return function(_0x3e79f3){logger[_0xb741('0x2c')](_0x3e79f3[_0xb741('0x2d')]);if(_0x3e79f3[_0xb741('0x2e')]){delete _0x3e79f3[_0xb741('0x2e')];}_0x4685f6['status'](_0x23c2b0)[_0xb741('0x2f')](_0x3e79f3);};}exports[_0xb741('0x30')]=function(_0x427e7f,_0x3e59b2){var _0x498b82={},_0x312e55={},_0x197f01={'count':0x0,'rows':[]};var _0x1580da=_[_0xb741('0x31')](db[_0xb741('0x32')]['rawAttributes'],function(_0x2c5b3f){return{'name':_0x2c5b3f[_0xb741('0x33')],'type':_0x2c5b3f[_0xb741('0x34')]['key']};});_0x312e55['model']=_[_0xb741('0x31')](_0x1580da,_0xb741('0x2e'));_0x312e55[_0xb741('0x35')]=_[_0xb741('0x36')](_0x427e7f[_0xb741('0x35')]);_0x312e55[_0xb741('0x37')]=_['intersection'](_0x312e55[_0xb741('0x38')],_0x312e55['query']);_0x498b82[_0xb741('0x39')]=_[_0xb741('0x3a')](_0x312e55[_0xb741('0x38')],qs['fields'](_0x427e7f[_0xb741('0x35')]['fields']));_0x498b82['attributes']=_0x498b82[_0xb741('0x39')][_0xb741('0x3b')]?_0x498b82[_0xb741('0x39')]:_0x312e55[_0xb741('0x38')];if(!_0x427e7f['query'][_0xb741('0x3c')](_0xb741('0x3d'))){_0x498b82['limit']=qs[_0xb741('0x20')](_0x427e7f['query'][_0xb741('0x20')]);_0x498b82[_0xb741('0x1f')]=qs[_0xb741('0x1f')](_0x427e7f[_0xb741('0x35')]['offset']);}_0x498b82[_0xb741('0x3e')]=qs[_0xb741('0x3f')](_0x427e7f[_0xb741('0x35')][_0xb741('0x3f')]);_0x498b82[_0xb741('0x40')]=qs[_0xb741('0x37')](_[_0xb741('0x41')](_0x427e7f[_0xb741('0x35')],_0x312e55[_0xb741('0x37')]),_0x1580da);if(_0x427e7f[_0xb741('0x35')][_0xb741('0x42')]){_0x498b82[_0xb741('0x40')]=_[_0xb741('0x43')](_0x498b82[_0xb741('0x40')],{'$or':_['map'](_0x1580da,function(_0x4ea369){if(_0x4ea369[_0xb741('0x34')]!==_0xb741('0x44')){var _0x1f4ce5={};_0x1f4ce5[_0x4ea369[_0xb741('0x2e')]]={'$like':'%'+_0x427e7f[_0xb741('0x35')][_0xb741('0x42')]+'%'};return _0x1f4ce5;}})});}_0x498b82=_[_0xb741('0x43')]({},_0x498b82,_0x427e7f[_0xb741('0x45')]);var _0x292eec={'where':_0x498b82[_0xb741('0x40')]};return db[_0xb741('0x32')][_0xb741('0x46')](_0x292eec)[_0xb741('0x2b')](function(_0x431e53){_0x197f01['count']=_0x431e53;if(_0x427e7f[_0xb741('0x35')][_0xb741('0x47')]){_0x498b82['include']=[{'all':!![]}];}return db['Plugin'][_0xb741('0x48')](_0x498b82);})[_0xb741('0x2b')](function(_0x2f7adc){_0x197f01['rows']=_0x2f7adc;return _0x197f01;})['then'](respondWithFilteredResult(_0x3e59b2,_0x498b82))[_0xb741('0x49')](handleError(_0x3e59b2,null));};exports[_0xb741('0x4a')]=function(_0x1ef5d7,_0x27a2f7){var _0x2bea7f={'raw':!![],'where':{'id':_0x1ef5d7[_0xb741('0x4b')]['id']}},_0x2ab763={};_0x2ab763[_0xb741('0x38')]=_[_0xb741('0x36')](db[_0xb741('0x32')][_0xb741('0x4c')]);_0x2ab763[_0xb741('0x35')]=_[_0xb741('0x36')](_0x1ef5d7[_0xb741('0x35')]);_0x2ab763[_0xb741('0x37')]=_['intersection'](_0x2ab763['model'],_0x2ab763['query']);_0x2bea7f[_0xb741('0x39')]=_['intersection'](_0x2ab763['model'],qs[_0xb741('0x4d')](_0x1ef5d7['query'][_0xb741('0x4d')]));_0x2bea7f[_0xb741('0x39')]=_0x2bea7f[_0xb741('0x39')][_0xb741('0x3b')]?_0x2bea7f['attributes']:_0x2ab763[_0xb741('0x38')];if(_0x1ef5d7[_0xb741('0x35')][_0xb741('0x47')]){_0x2bea7f['include']=[{'all':!![]}];}_0x2bea7f=_[_0xb741('0x43')]({},_0x2bea7f,_0x1ef5d7['options']);return db['Plugin'][_0xb741('0x4e')](_0x2bea7f)[_0xb741('0x2b')](handleEntityNotFound(_0x27a2f7,null))['then'](respondWithResult(_0x27a2f7,null))[_0xb741('0x49')](handleError(_0x27a2f7,null));};exports[_0xb741('0x4f')]=function(_0x1a8355,_0x4bb117,_0x146ca0){return db[_0xb741('0x32')][_0xb741('0x4e')]({'where':{'id':_0x1a8355[_0xb741('0x4b')]['id']},'attributes':[_0xb741('0x2e'),_0xb741('0x5')],'raw':!![]})[_0xb741('0x2b')](handleEntityNotFound(_0x4bb117,null))[_0xb741('0x2b')](function(_0x1fd66f){if(_0x1fd66f){var _0xc6ee34=path[_0xb741('0x50')](config[_0xb741('0x51')],_0xb741('0x52'),util['format']('%s.zip',path[_0xb741('0x53')](_0x1fd66f['path'])));var _0x568edd=fs[_0xb741('0x54')](_0xc6ee34);var _0x21aa27=archiver(_0xb741('0x55'),{'zlib':{'level':0x9}});_0x21aa27['on'](_0xb741('0x56'),function(_0x26738a){if(_0x26738a['code']==='ENOENT'){logger[_0xb741('0x2c')](_0x26738a);}else{throw new db[(_0xb741('0x57'))][(_0xb741('0x58'))](_0xb741('0x59'));}});_0x21aa27['on'](_0xb741('0x2c'),function(_0x112ac9){throw new db[(_0xb741('0x57'))][(_0xb741('0x58'))](_0xb741('0x59'));});_0x21aa27[_0xb741('0x5a')](_0x568edd);_0x21aa27[_0xb741('0x5b')](_0xb741('0x5c'),{'cwd':path[_0xb741('0x50')](config['root'],_0xb741('0x52'),path['dirname'](_0x1fd66f[_0xb741('0x5')])),'ignore':[path[_0xb741('0x50')](path[_0xb741('0x53')](_0x1fd66f[_0xb741('0x5')]),'node_modules/**/*'),path['join'](path['basename'](_0x1fd66f['path']),'attachments/**/*')],'nodir':!![]})['finalize']();_0x568edd['on']('close',function(){if(!fs['existsSync'](_0xc6ee34)){throw new db[(_0xb741('0x57'))][(_0xb741('0x58'))](_0xb741('0x5d'));}return _0x4bb117[_0xb741('0x4f')](_0xc6ee34,util[_0xb741('0x5e')]('%s.zip',path[_0xb741('0x53')](_0x1fd66f[_0xb741('0x5')])),function(_0x3cac74){if(_0x3cac74){throw new db[(_0xb741('0x57'))][(_0xb741('0x58'))]('Error\x20while\x20downloading\x20the\x20plugin');}fs[_0xb741('0x5f')](_0xc6ee34);logger[_0xb741('0x60')](_0xb741('0x61'));logger[_0xb741('0x60')](_0xb741('0x62'));});});}return null;})[_0xb741('0x49')](handleError(_0x4bb117,null));};exports[_0xb741('0x63')]=function(_0x4d1594,_0x1b8d12,_0x3793c3){var _0x235a02=path[_0xb741('0x53')](_0x4d1594['file']['filename'],path[_0xb741('0x64')](_0x4d1594[_0xb741('0x65')][_0xb741('0x66')]));var _0x32aa2f=path[_0xb741('0x50')](config[_0xb741('0x51')],_0xb741('0x52'),_0x4d1594[_0xb741('0x65')][_0xb741('0x66')]);var _0x80904c=path[_0xb741('0x50')](config[_0xb741('0x51')],_0xb741('0x52'),_0x235a02);logger[_0xb741('0x60')](_0xb741('0x67'),_0x32aa2f);logger['info']('Plugin\x20upload\x20destination:\x20%s',_0x80904c);try{fs[_0xb741('0x68')](_0x32aa2f,parseInt(_0xb741('0x69'),0x8));extract(_0x32aa2f,{'dir':_0x80904c},function(_0x52689a){if(_0x52689a){logger[_0xb741('0x2c')](_0x52689a);handleError(_0x52689a,!![]);};var _0x53854e=fs[_0xb741('0x6a')](_0x80904c);if(_0x53854e['length']>0x1){removeReferences(_0x32aa2f,_0x80904c);logger[_0xb741('0x2c')](_0xb741('0x6b'));return _0x3793c3(new Error('Invalid\x20plugin\x20structure'));}var _0x4a2e19=fs[_0xb741('0x6c')](path['join'](_0x80904c,_0x53854e[0x0]));if(_0x4a2e19[_0xb741('0x6d')]()){removeReferences(_0x32aa2f,_0x80904c);logger[_0xb741('0x2c')](_0xb741('0x6b'));return _0x3793c3(new Error(_0xb741('0x6b')));}if(_0x4a2e19[_0xb741('0x6e')]()){var _0x5d9595=fs['readdirSync'](path[_0xb741('0x50')](_0x80904c,_0x53854e[0x0]));if(_0x5d9595[_0xb741('0x3b')]===0x0){removeReferences(_0x32aa2f,_0x80904c);logger['error']('Invalid\x20plugin\x20structure');return _0x3793c3(new Error(_0xb741('0x6b')));}var _0x588cd7=_0x5d9595['some'](function(_0xdd6cf5){return _0xdd6cf5===_0xb741('0x6f');});if(!_0x588cd7){return _0x3793c3(new Error(_0xb741('0x70')));}var _0x55c605=fs[_0xb741('0x71')](path[_0xb741('0x50')](_0x80904c,_0x53854e[0x0],_0xb741('0x6f')));var _0x181f73=JSON[_0xb741('0x72')](_0x55c605);if(_0xb741('0x21')==typeof _0x181f73['name']){return _0x3793c3(new Error(_0xb741('0x73')));}if(_0xb741('0x21')==typeof _0x181f73[_0xb741('0x34')]){return _0x3793c3(new Error(_0xb741('0x74')));}if('undefined'==typeof _0x181f73['version']){return _0x3793c3(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if('undefined'==typeof _0x181f73[_0xb741('0x75')]){return _0x3793c3(new Error(_0xb741('0x76')));}if(_0x181f73[_0xb741('0x34')]==='html'){if(_0xb741('0x21')==typeof _0x181f73[_0xb741('0x75')]['views']){return _0x3793c3(new Error(_0xb741('0x77')));}if(_0xb741('0x21')==typeof _0x181f73[_0xb741('0x75')][_0xb741('0x78')]['admin']&&'undefined'==typeof _0x181f73[_0xb741('0x75')][_0xb741('0x78')][_0xb741('0x79')]){return _0x3793c3(new Error(_0xb741('0x7a')));}}else if(_0x181f73[_0xb741('0x34')]===_0xb741('0x7b')){if('undefined'==typeof _0x181f73[_0xb741('0x75')]['scriptName']){return _0x3793c3(new Error(_0xb741('0x7c')));}if(_0xb741('0x21')==typeof _0x181f73['parameters'][_0xb741('0x7d')]){return _0x3793c3(new Error(_0xb741('0x7e')));}}else{return _0x3793c3(new Error('Invalid\x20manifest:\x20invalid\x20type'));}var _0x17d513=_0x181f73[_0xb741('0x2e')];var _0x2d68a6=_0x181f73[_0xb741('0x7f')];var _0x58fdc2=_0x181f73['type'];var _0x2134ba=_0x181f73[_0xb741('0x80')]?_0x181f73[_0xb741('0x80')]:_0xb741('0x81');var _0x8470c3=_0x181f73['icon']?_0x181f73[_0xb741('0x82')]:_0xb741('0x83');var _0x163ff9='';var _0x2fcb67='';var _0x16bfe3='';var _0x5f31df='';var _0x559e7b=_0x181f73[_0xb741('0x84')];if(_0x58fdc2===_0xb741('0x85')){if(_0xb741('0x21')!=typeof _0x181f73[_0xb741('0x75')]['views'][_0xb741('0x86')]){var _0x369cef=_0x181f73[_0xb741('0x75')][_0xb741('0x78')][_0xb741('0x86')];if(!/^(f|ht)tps?:\/\//i[_0xb741('0x87')](_0x369cef)){_0x163ff9=path['join'](_0xb741('0x88'),_0x235a02,_0x53854e[0x0],_0x369cef);}else{_0x163ff9=_0x369cef;}}else{logger[_0xb741('0x60')](_0xb741('0x89'));}if(_0xb741('0x21')!=typeof _0x181f73['parameters'][_0xb741('0x78')]['agent']){var _0x5f1071=_0x181f73[_0xb741('0x75')]['views'][_0xb741('0x79')];if(!/^(f|ht)tps?:\/\//i['test'](_0x5f1071)){_0x2fcb67=path['join'](_0xb741('0x88'),_0x235a02,_0x53854e[0x0],_0x5f1071);}else{_0x2fcb67=_0x5f1071;}}else{logger['info'](_0xb741('0x8a'));}}else if(_0x58fdc2==='script'){_0x16bfe3=_0x181f73[_0xb741('0x75')][_0xb741('0x8b')];_0x5f31df=_0x181f73[_0xb741('0x75')][_0xb741('0x7d')];if(_0xb741('0x21')!=typeof _0x181f73[_0xb741('0x75')][_0xb741('0x78')]){if(_0xb741('0x21')!=typeof _0x181f73[_0xb741('0x75')]['views'][_0xb741('0x86')]){var _0x369cef=_0x181f73[_0xb741('0x75')][_0xb741('0x78')][_0xb741('0x86')];if(!/^(f|ht)tps?:\/\//i['test'](_0x369cef)){_0x163ff9=path['join'](_0xb741('0x88'),_0x235a02,_0x53854e[0x0],_0x369cef);}else{_0x163ff9=_0x369cef;}}if(_0xb741('0x21')!=typeof _0x181f73[_0xb741('0x75')][_0xb741('0x78')][_0xb741('0x79')]){var _0x5f1071=_0x181f73[_0xb741('0x75')][_0xb741('0x78')]['agent'];if(!/^(f|ht)tps?:\/\//i['test'](_0x5f1071)){_0x2fcb67=path[_0xb741('0x50')](_0xb741('0x88'),_0x235a02,_0x53854e[0x0],_0x5f1071);}else{_0x2fcb67=_0x5f1071;}}}}var _0x4dc397={'name':_0x17d513,'description':_0x2d68a6,'path':path[_0xb741('0x50')](_0x235a02,_0x53854e[0x0]),'type':_0x58fdc2,'sidebar':_0x2134ba,'icon':_0x8470c3,'adminUrl':_0x163ff9,'agentUrl':_0x2fcb67,'scriptName':_0x16bfe3,'scriptPath':_0x5f31df,'version':_0x559e7b};removeReferences(_0x32aa2f,null);return db[_0xb741('0x32')][_0xb741('0x8c')](_0x4dc397)[_0xb741('0x2b')](function(_0x476455){var _0x14a144={'role':_0x4d1594[_0xb741('0x8d')]['role'],'userProfileId':_0x4d1594[_0xb741('0x8d')][_0xb741('0x8e')]};if(!_0x14a144)throw new Error(_0xb741('0x8f'));if(_0x14a144[_0xb741('0x90')]===_0xb741('0x91')){var _0x419ee5=_0x476455[_0xb741('0x28')]({'plain':!![]});return db[_0xb741('0x92')][_0xb741('0x4e')]({'where':{'name':_0xb741('0x29'),'userProfileId':_0x14a144[_0xb741('0x8e')]},'raw':!![]})[_0xb741('0x2b')](function(_0x28548b){if(_0x28548b&&_0x28548b[_0xb741('0x93')]===0x0){return db['UserProfileResource'][_0xb741('0x8c')]({'name':_0x419ee5[_0xb741('0x2e')],'resourceId':_0x419ee5['id'],'type':_0x28548b['name'],'sectionId':_0x28548b['id']},{})[_0xb741('0x2b')](function(){return _0x476455;});}else{return _0x476455;}})[_0xb741('0x49')](function(_0x5db815){logger[_0xb741('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5db815);throw _0x5db815;});}return _0x476455;})[_0xb741('0x2b')](respondWithResult(_0x1b8d12,null))[_0xb741('0x49')](handleError(_0x1b8d12,null));}});}catch(_0x443f10){_0x1b8d12[_0xb741('0x22')](0x1f4)[_0xb741('0x2f')](_0x443f10);}};function removeReferences(_0xa6ce26,_0x331c98){try{if(_0xa6ce26){fs['unlinkSync'](_0xa6ce26);logger['info'](_0xb741('0x94'));}if(_0x331c98){rimraf(_0x331c98,function(){});logger[_0xb741('0x60')]('Extracted\x20folder\x20removed');}}catch(_0x54b401){logger[_0xb741('0x2c')](_0x54b401);}}exports['update']=function(_0xd6b361,_0x299671,_0x38baec){return db['Plugin']['find']({'where':{'id':_0xd6b361[_0xb741('0x4b')]['id']}})[_0xb741('0x2b')](handleEntityNotFound(_0x299671,null))[_0xb741('0x2b')](saveUpdates(_0xd6b361['body'],null))['then'](respondWithResult(_0x299671,null))[_0xb741('0x49')](handleError(_0x299671,null));};exports[_0xb741('0x95')]=function(_0x2b0140,_0x2b0548,_0x5873fb){return db[_0xb741('0x32')][_0xb741('0x4e')]({'where':{'id':_0x2b0140[_0xb741('0x4b')]['id']}})[_0xb741('0x2b')](function(_0x449b63){if(_0x449b63){return _0x449b63[_0xb741('0x27')]();}})[_0xb741('0x2b')](function(_0x1ff576){rimraf(path[_0xb741('0x50')](config[_0xb741('0x51')],_0xb741('0x52'),path[_0xb741('0x96')](_0x1ff576[_0xb741('0x5')])),function(){});return _0x1ff576;})['then'](handleEntityNotFound(_0x2b0548,null))[_0xb741('0x2b')](respondWithStatusCode(_0x2b0548,null))['catch'](handleError(_0x2b0548,null));};exports[_0xb741('0x97')]=function(_0x5576c1,_0x4fbd8c,_0x2f41c0){return BPromise[_0xb741('0x98')]()[_0xb741('0x2b')](function(){if(!_0x5576c1[_0xb741('0x35')][_0xb741('0x5')]){throw new Error(_0xb741('0x99'));}if(!_0x5576c1['query']['port']){throw new Error(_0xb741('0x9a'));}var _0x2dce78=_0x5576c1[_0xb741('0x35')]['hostname']?_0x5576c1['query']['hostname']+':'+_0x5576c1[_0xb741('0x35')][_0xb741('0x9b')]:_0xb741('0x9c')+_0x5576c1[_0xb741('0x35')][_0xb741('0x9b')];var _0x51d9c5=_0x5576c1[_0xb741('0x35')]['json']?_0x5576c1[_0xb741('0x35')]['json']:!![];var _0x3e7f13=_0x5576c1[_0xb741('0x35')]['encoding']?_0x5576c1['query'][_0xb741('0x9d')]:null;var _0x27cbd4={'method':_0x5576c1[_0xb741('0x9e')],'uri':util[_0xb741('0x5e')]('%s%s',_0x2dce78,_0x5576c1[_0xb741('0x35')][_0xb741('0x5')]),'json':_0x51d9c5,'resolveWithFullResponse':!![],'encoding':_0x3e7f13,'qs':_0x5576c1[_0xb741('0x35')]};if(_0x5576c1[_0xb741('0x9f')]){_0x27cbd4[_0xb741('0x9f')]=_0x5576c1['headers'];if(_0x27cbd4[_0xb741('0x9f')]['content-length']){delete _0x27cbd4[_0xb741('0x9f')][_0xb741('0xa0')];}}if(_0x27cbd4[_0xb741('0x9f')][_0xb741('0xa1')]){delete _0x27cbd4[_0xb741('0x9f')][_0xb741('0xa1')];}return rp(_0x27cbd4);})[_0xb741('0x2b')](function(_0x4f1986){if(_0x4f1986){_0x4fbd8c['set'](_0x4f1986['headers']);logger['info'](_0x4f1986['body']);if(_[_0xb741('0xa2')](_0x5576c1[_0xb741('0x35')][_0xb741('0x5')],_0xb741('0x4f'))&&_0x4f1986[_0xb741('0xa3')]==0x1f4){return _0x4fbd8c[_0xb741('0x1d')](_0x4f1986[_0xb741('0xa3')]);}else{return _0x4fbd8c[_0xb741('0x22')](_0x4f1986['statusCode'])[_0xb741('0x2f')](_0x4f1986[_0xb741('0x8d')]);}}else{return _0x4fbd8c[_0xb741('0x1d')](0xc8);}})['catch'](handleError(_0x4fbd8c,null));};exports['webhookPost']=function(_0x170f51,_0x32ce99,_0x2d9f7c){return BPromise['resolve']()[_0xb741('0x2b')](function(){if(!_0x170f51[_0xb741('0x35')]['path']){throw new Error(_0xb741('0x99'));}if(!_0x170f51['query'][_0xb741('0x9b')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x2b5e19=_0x170f51[_0xb741('0x35')][_0xb741('0xa4')]?_0x170f51[_0xb741('0x35')][_0xb741('0xa4')]+':'+_0x170f51[_0xb741('0x35')][_0xb741('0x9b')]:_0xb741('0x9c')+_0x170f51[_0xb741('0x35')][_0xb741('0x9b')];var _0x4a5026=_0x170f51[_0xb741('0x35')][_0xb741('0x24')]?_0x170f51[_0xb741('0x35')][_0xb741('0x24')]:!![];var _0x2bd8f0=_0x170f51[_0xb741('0x35')][_0xb741('0x9d')]?_0x170f51[_0xb741('0x35')][_0xb741('0x9d')]:null;var _0x3e481f={'method':_0x170f51[_0xb741('0x9e')],'uri':util[_0xb741('0x5e')](_0xb741('0xa5'),_0x2b5e19,_0x170f51[_0xb741('0x35')][_0xb741('0x5')]),'json':_0x4a5026,'resolveWithFullResponse':!![],'encoding':_0x2bd8f0,'body':_0x170f51[_0xb741('0x8d')]};if(_0x170f51[_0xb741('0x9f')]){_0x3e481f[_0xb741('0x9f')]=_0x170f51[_0xb741('0x9f')];if(_0x3e481f[_0xb741('0x9f')]['content-length']){delete _0x3e481f[_0xb741('0x9f')]['content-length'];}}if(_0x3e481f[_0xb741('0x9f')][_0xb741('0xa1')]){delete _0x3e481f[_0xb741('0x9f')][_0xb741('0xa1')];}return rp(_0x3e481f);})[_0xb741('0x2b')](function(_0x147f22){if(_0x147f22){_0x32ce99['set'](_0x147f22[_0xb741('0x9f')]);logger['info'](_0x147f22[_0xb741('0x8d')]);return _0x32ce99['status'](_0x147f22['statusCode'])[_0xb741('0x2f')](_0x147f22[_0xb741('0x8d')]);}else{return _0x32ce99[_0xb741('0x1d')](0xc8);}})['catch'](handleError(_0x32ce99,null));};
\ No newline at end of file
index 191fdf3..b06ad8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5078=['Plugin','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x722360,_0x217e4f){var _0x39590f=function(_0x1aa9f8){while(--_0x1aa9f8){_0x722360['push'](_0x722360['shift']());}};_0x39590f(++_0x217e4f);}(_0x5078,0x148));var _0x8507=function(_0x562d84,_0x1759c2){_0x562d84=_0x562d84-0x0;var _0x28b33d=_0x5078[_0x562d84];return _0x28b33d;};'use strict';var EventEmitter=require(_0x8507('0x0'));var Plugin=require(_0x8507('0x1'))['db'][_0x8507('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x8507('0x3')](0x0);var events={'afterCreate':_0x8507('0x4'),'afterUpdate':_0x8507('0x5'),'afterDestroy':_0x8507('0x6')};function emitEvent(_0x20608d){return function(_0x1a4930,_0x239a82,_0x2aa379){PluginEvents[_0x8507('0x7')](_0x20608d+':'+_0x1a4930['id'],_0x1a4930);PluginEvents[_0x8507('0x7')](_0x20608d,_0x1a4930);_0x2aa379(null);};}for(var e in events){if(events[_0x8507('0x8')](e)){var event=events[e];Plugin[_0x8507('0x9')](e,emitEvent(event));}}module[_0x8507('0xa')]=PluginEvents;
\ No newline at end of file
+var _0xdcf6=['setMaxListeners','save','update','remove','emit','hasOwnProperty','../../mysqldb','Plugin'];(function(_0x221c85,_0x2d9a71){var _0x2ae68c=function(_0x28f675){while(--_0x28f675){_0x221c85['push'](_0x221c85['shift']());}};_0x2ae68c(++_0x2d9a71);}(_0xdcf6,0x1b6));var _0x6dcf=function(_0x22dd2b,_0x3b116a){_0x22dd2b=_0x22dd2b-0x0;var _0x2c816c=_0xdcf6[_0x22dd2b];return _0x2c816c;};'use strict';var EventEmitter=require('events');var Plugin=require(_0x6dcf('0x0'))['db'][_0x6dcf('0x1')];var PluginEvents=new EventEmitter();PluginEvents[_0x6dcf('0x2')](0x0);var events={'afterCreate':_0x6dcf('0x3'),'afterUpdate':_0x6dcf('0x4'),'afterDestroy':_0x6dcf('0x5')};function emitEvent(_0x1320a5){return function(_0x513bcb,_0x69f442,_0x19eeff){PluginEvents['emit'](_0x1320a5+':'+_0x513bcb['id'],_0x513bcb);PluginEvents[_0x6dcf('0x6')](_0x1320a5,_0x513bcb);_0x19eeff(null);};}for(var e in events){if(events[_0x6dcf('0x7')](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
index 6959a92..3fdfd63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a28=['util','../../config/logger','api','moment','bluebird','path','./plugin.attributes','exports','define','Plugin','plugins','lodash'];(function(_0x54ee16,_0x487483){var _0x1866e6=function(_0x12a2ac){while(--_0x12a2ac){_0x54ee16['push'](_0x54ee16['shift']());}};_0x1866e6(++_0x487483);}(_0x9a28,0x1bb));var _0x89a2=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0x9a28[_0x16d10f];return _0x50c823;};'use strict';var _=require(_0x89a2('0x0'));var util=require(_0x89a2('0x1'));var logger=require(_0x89a2('0x2'))(_0x89a2('0x3'));var moment=require(_0x89a2('0x4'));var BPromise=require(_0x89a2('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x89a2('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x89a2('0x7'));module[_0x89a2('0x8')]=function(_0x53e189,_0x5eb650){return _0x53e189[_0x89a2('0x9')](_0x89a2('0xa'),attributes,{'tableName':_0x89a2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xed66=['exports','define','Plugin','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./plugin.attributes'];(function(_0x5c601b,_0x1295cb){var _0x37696f=function(_0x2e8b16){while(--_0x2e8b16){_0x5c601b['push'](_0x5c601b['shift']());}};_0x37696f(++_0x1295cb);}(_0xed66,0xff));var _0x6ed6=function(_0x2a0755,_0xdf6bac){_0x2a0755=_0x2a0755-0x0;var _0x3eaf4f=_0xed66[_0x2a0755];return _0x3eaf4f;};'use strict';var _=require(_0x6ed6('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x6ed6('0x1'));var moment=require(_0x6ed6('0x2'));var BPromise=require(_0x6ed6('0x3'));var rp=require(_0x6ed6('0x4'));var fs=require('fs');var path=require(_0x6ed6('0x5'));var rimraf=require(_0x6ed6('0x6'));var config=require(_0x6ed6('0x7'));var attributes=require(_0x6ed6('0x8'));module[_0x6ed6('0x9')]=function(_0x1dd5f3,_0x120bc3){return _0x1dd5f3[_0x6ed6('0xa')](_0x6ed6('0xb'),attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5fc0495..439974b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfa4=['../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./plugin.socket','register','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','CreatePlugin','Plugin','create','body','options','then','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x24a570,_0x42cf42){var _0x489f67=function(_0xa0bdf3){while(--_0xa0bdf3){_0x24a570['push'](_0x24a570['shift']());}};_0x489f67(++_0x42cf42);}(_0xdfa4,0x190));var _0x4dfa=function(_0x4e12ea,_0x2336aa){_0x4e12ea=_0x4e12ea-0x0;var _0x22d943=_0xdfa4[_0x4e12ea];return _0x22d943;};'use strict';var _=require(_0x4dfa('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x4dfa('0x1'));var rs=require(_0x4dfa('0x2'));var fs=require('fs');var Redis=require(_0x4dfa('0x3'));var db=require(_0x4dfa('0x4'))['db'];var utils=require(_0x4dfa('0x5'));var logger=require(_0x4dfa('0x6'))(_0x4dfa('0x7'));var config=require(_0x4dfa('0x8'));var jayson=require(_0x4dfa('0x9'));var client=jayson[_0x4dfa('0xa')][_0x4dfa('0xb')]({'port':0x232a});config[_0x4dfa('0xc')]=_[_0x4dfa('0xd')](config[_0x4dfa('0xc')],{'host':_0x4dfa('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4dfa('0xc')]));require(_0x4dfa('0xf'))[_0x4dfa('0x10')](socket);function respondWithRpcPromise(_0x4ac406,_0x4debc7,_0x8db19e){return new BPromise(function(_0x5be76b,_0x3dacf4){return client['request'](_0x4ac406,_0x8db19e)['then'](function(_0x504eb9){logger[_0x4dfa('0x11')](_0x4dfa('0x12'),_0x4debc7,_0x4dfa('0x13'));logger[_0x4dfa('0x14')](_0x4dfa('0x15'),_0x4debc7,_0x4dfa('0x13'),JSON[_0x4dfa('0x16')](_0x504eb9));if(_0x504eb9['error']){if(_0x504eb9['error'][_0x4dfa('0x17')]===0x1f4){logger[_0x4dfa('0x18')](_0x4dfa('0x12'),_0x4debc7,_0x504eb9[_0x4dfa('0x18')][_0x4dfa('0x19')]);return _0x3dacf4(_0x504eb9['error'][_0x4dfa('0x19')]);}logger['error']('Plugin,\x20%s,\x20%s',_0x4debc7,_0x504eb9[_0x4dfa('0x18')][_0x4dfa('0x19')]);return _0x5be76b(_0x504eb9[_0x4dfa('0x18')]['message']);}else{logger[_0x4dfa('0x11')](_0x4dfa('0x12'),_0x4debc7,'request\x20sent');_0x5be76b(_0x504eb9[_0x4dfa('0x1a')][_0x4dfa('0x19')]);}})[_0x4dfa('0x1b')](function(_0x5d972d){logger[_0x4dfa('0x18')](_0x4dfa('0x12'),_0x4debc7,_0x5d972d);_0x3dacf4(_0x5d972d);});});}exports[_0x4dfa('0x1c')]=function(_0x18abd8){var _0xece438=this;return new Promise(function(_0xa91641,_0x3737ed){return db[_0x4dfa('0x1d')][_0x4dfa('0x1e')](_0x18abd8[_0x4dfa('0x1f')],{'raw':_0x18abd8[_0x4dfa('0x20')]?_0x18abd8[_0x4dfa('0x20')]['raw']===undefined?!![]:![]:!![]})[_0x4dfa('0x21')](function(_0x4719e4){logger[_0x4dfa('0x11')](_0x4dfa('0x1c'),_0x18abd8);logger[_0x4dfa('0x14')](_0x4dfa('0x1c'),_0x18abd8,JSON['stringify'](_0x4719e4));_0xa91641(_0x4719e4);})[_0x4dfa('0x1b')](function(_0x39b70d){logger['error'](_0x4dfa('0x1c'),_0x39b70d[_0x4dfa('0x19')],_0x18abd8);_0x3737ed(_0xece438[_0x4dfa('0x18')](0x1f4,_0x39b70d['message']));});});};
\ No newline at end of file
+var _0x77e2=['raw','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','request','then','request\x20sent','debug','stringify','error','Plugin,\x20%s,\x20%s','message','info','result','CreatePlugin','Plugin','body'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x77e2,0x176));var _0x277e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x77e2[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x277e('0x0'));var util=require(_0x277e('0x1'));var moment=require('moment');var BPromise=require(_0x277e('0x2'));var rs=require(_0x277e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x277e('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x277e('0x5'))(_0x277e('0x6'));var config=require('../../config/environment');var jayson=require(_0x277e('0x7'));var client=jayson[_0x277e('0x8')][_0x277e('0x9')]({'port':0x232a});config[_0x277e('0xa')]=_[_0x277e('0xb')](config['redis'],{'host':_0x277e('0xc'),'port':0x18eb});var socket=require(_0x277e('0xd'))(new Redis(config[_0x277e('0xa')]));require(_0x277e('0xe'))[_0x277e('0xf')](socket);function respondWithRpcPromise(_0x12e980,_0x57cc57,_0x8bdd6b){return new BPromise(function(_0x129fb1,_0x3a6932){return client[_0x277e('0x10')](_0x12e980,_0x8bdd6b)[_0x277e('0x11')](function(_0x16b173){logger['info']('Plugin,\x20%s,\x20%s',_0x57cc57,_0x277e('0x12'));logger[_0x277e('0x13')]('Plugin,\x20%s,\x20%s,\x20%s',_0x57cc57,_0x277e('0x12'),JSON[_0x277e('0x14')](_0x16b173));if(_0x16b173[_0x277e('0x15')]){if(_0x16b173[_0x277e('0x15')]['code']===0x1f4){logger[_0x277e('0x15')](_0x277e('0x16'),_0x57cc57,_0x16b173[_0x277e('0x15')][_0x277e('0x17')]);return _0x3a6932(_0x16b173[_0x277e('0x15')][_0x277e('0x17')]);}logger[_0x277e('0x15')](_0x277e('0x16'),_0x57cc57,_0x16b173['error'][_0x277e('0x17')]);return _0x129fb1(_0x16b173[_0x277e('0x15')]['message']);}else{logger[_0x277e('0x18')]('Plugin,\x20%s,\x20%s',_0x57cc57,_0x277e('0x12'));_0x129fb1(_0x16b173[_0x277e('0x19')][_0x277e('0x17')]);}})['catch'](function(_0x1f0217){logger['error'](_0x277e('0x16'),_0x57cc57,_0x1f0217);_0x3a6932(_0x1f0217);});});}exports[_0x277e('0x1a')]=function(_0x51489c){var _0xc71dfe=this;return new Promise(function(_0x3bd60b,_0x37d634){return db[_0x277e('0x1b')]['create'](_0x51489c[_0x277e('0x1c')],{'raw':_0x51489c['options']?_0x51489c['options'][_0x277e('0x1d')]===undefined?!![]:![]:!![]})[_0x277e('0x11')](function(_0x10dfae){logger[_0x277e('0x18')](_0x277e('0x1a'),_0x51489c);logger[_0x277e('0x13')](_0x277e('0x1a'),_0x51489c,JSON[_0x277e('0x14')](_0x10dfae));_0x3bd60b(_0x10dfae);})[_0x277e('0x1e')](function(_0x99f3b){logger[_0x277e('0x15')](_0x277e('0x1a'),_0x99f3b['message'],_0x51489c);_0x37d634(_0xc71dfe[_0x277e('0x15')](0x1f4,_0x99f3b[_0x277e('0x17')]));});});};
\ No newline at end of file
index 9b4999c..9256b31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8ca=['register','length','./plugin.events','save','update','removeListener'];(function(_0x55855c,_0x151e65){var _0x551f70=function(_0x1ed38f){while(--_0x1ed38f){_0x55855c['push'](_0x55855c['shift']());}};_0x551f70(++_0x151e65);}(_0xf8ca,0x6e));var _0xaf8c=function(_0x22f8ab,_0x15d8ff){_0x22f8ab=_0x22f8ab-0x0;var _0x2a70e5=_0xf8ca[_0x22f8ab];return _0x2a70e5;};'use strict';var PluginEvents=require(_0xaf8c('0x0'));var events=[_0xaf8c('0x1'),'remove',_0xaf8c('0x2')];function createListener(_0x44445f,_0xced6bb){return function(_0x309259){_0xced6bb['emit'](_0x44445f,_0x309259);};}function removeListener(_0x11148f,_0x3eb465){return function(){PluginEvents[_0xaf8c('0x3')](_0x11148f,_0x3eb465);};}exports[_0xaf8c('0x4')]=function(_0x5437e4){for(var _0x49480a=0x0,_0x50f2e1=events[_0xaf8c('0x5')];_0x49480a<_0x50f2e1;_0x49480a++){var _0x240ed3=events[_0x49480a];var _0xbe862e=createListener('plugin:'+_0x240ed3,_0x5437e4);PluginEvents['on'](_0x240ed3,_0xbe862e);}};
\ No newline at end of file
+var _0x34d6=['removeListener','register','length','plugin:','./plugin.events','save','remove','update','emit'];(function(_0x3f2f19,_0x2ea0c4){var _0x18f929=function(_0x358d09){while(--_0x358d09){_0x3f2f19['push'](_0x3f2f19['shift']());}};_0x18f929(++_0x2ea0c4);}(_0x34d6,0x9d));var _0x634d=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x34d6[_0x46698a];return _0x356db0;};'use strict';var PluginEvents=require(_0x634d('0x0'));var events=[_0x634d('0x1'),_0x634d('0x2'),_0x634d('0x3')];function createListener(_0x1bcc74,_0x534e5c){return function(_0x75a1bc){_0x534e5c[_0x634d('0x4')](_0x1bcc74,_0x75a1bc);};}function removeListener(_0x352072,_0x2cc8ec){return function(){PluginEvents[_0x634d('0x5')](_0x352072,_0x2cc8ec);};}exports[_0x634d('0x6')]=function(_0x2bc5ec){for(var _0x20b831=0x0,_0x38faa8=events[_0x634d('0x7')];_0x20b831<_0x38faa8;_0x20b831++){var _0x254c5e=events[_0x20b831];var _0x24a81d=createListener(_0x634d('0x8')+_0x254c5e,_0x2bc5ec);PluginEvents['on'](_0x254c5e,_0x24a81d);}};
\ No newline at end of file
index 56d1abd..ebd2964 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['create','put','delete','destroy','exports','express','Router','../../components/auth/service','isAuthenticated','get','/:id','show','post'];(function(_0x5f7685,_0x13d446){var _0x345715=function(_0x163778){while(--_0x163778){_0x5f7685['push'](_0x5f7685['shift']());}};_0x345715(++_0x13d446);}(_0xa9e0,0x123));var _0x0a9e=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0xa9e0[_0x40ac5e];return _0x2839d6;};'use strict';var express=require(_0x0a9e('0x0'));var router=express[_0x0a9e('0x1')]();var auth=require(_0x0a9e('0x2'));var controller=require('./pm2.controller');router['get']('/',auth[_0x0a9e('0x3')](),controller['index']);router[_0x0a9e('0x4')](_0x0a9e('0x5'),auth[_0x0a9e('0x3')](),controller[_0x0a9e('0x6')]);router[_0x0a9e('0x7')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x8')]);router[_0x0a9e('0x9')](_0x0a9e('0x5'),auth['isAuthenticated'](),controller['update']);router[_0x0a9e('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);module[_0x0a9e('0xc')]=router;
\ No newline at end of file
+var _0xa9e0=['create','put','delete','destroy','exports','express','Router','../../components/auth/service','isAuthenticated','get','/:id','show','post'];(function(_0x35ac48,_0x24d60b){var _0x3dcfd7=function(_0x217089){while(--_0x217089){_0x35ac48['push'](_0x35ac48['shift']());}};_0x3dcfd7(++_0x24d60b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'use strict';var express=require(_0x0a9e('0x0'));var router=express[_0x0a9e('0x1')]();var auth=require(_0x0a9e('0x2'));var controller=require('./pm2.controller');router['get']('/',auth[_0x0a9e('0x3')](),controller['index']);router[_0x0a9e('0x4')](_0x0a9e('0x5'),auth[_0x0a9e('0x3')](),controller[_0x0a9e('0x6')]);router[_0x0a9e('0x7')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x8')]);router[_0x0a9e('0x9')](_0x0a9e('0x5'),auth['isAuthenticated'](),controller['update']);router[_0x0a9e('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);module[_0x0a9e('0xc')]=router;
\ No newline at end of file
index 1fc97db..28ca973 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x878f=['dirname','start','dump','restart','stop','hasOwnProperty','params','send','destroy','delete','Unknown\x20id','../../config/pm2','../../config/logger','api','path','child_process','exec','bluebird','sendStatus','status','name','info','index','then','express','motion2','length','catch','show','describe','create','body','script','../../files/plugins','cwd','chdir'];(function(_0x2d6ddd,_0x3d54c2){var _0x1fc242=function(_0x5b71fc){while(--_0x5b71fc){_0x2d6ddd['push'](_0x2d6ddd['shift']());}};_0x1fc242(++_0x3d54c2);}(_0x878f,0x173));var _0xf878=function(_0x31f268,_0x37caef){_0x31f268=_0x31f268-0x0;var _0x3fd137=_0x878f[_0x31f268];return _0x3fd137;};'use strict';var _=require('lodash');var pm2=require(_0xf878('0x0'));var logger=require(_0xf878('0x1'))(_0xf878('0x2'));var path=require(_0xf878('0x3'));var exec=require(_0xf878('0x4'))[_0xf878('0x5')];var BPromise=require(_0xf878('0x6'));function handleEntityNotFound(_0x45a37b,_0x240b48){return function(_0xcf1927){if(!_0xcf1927){_0x45a37b[_0xf878('0x7')](0x194);;}return _0xcf1927;};}function respondWithResult(_0x4bc9aa,_0x4ac8d8){_0x4ac8d8=_0x4ac8d8||0xc8;return function(_0x3c5f5c){if(_0x3c5f5c){return _0x4bc9aa[_0xf878('0x8')](_0x4ac8d8)['json'](_0x3c5f5c);}return null;};}function handleError(_0x52851e,_0x530767){_0x530767=_0x530767||0x1f4;return function(_0x3329df){logger['error'](_0x3329df['stack']);if(_0x3329df[_0xf878('0x9')]){delete _0x3329df[_0xf878('0x9')];}_0x52851e[_0xf878('0x8')](_0x530767)['send'](_0x3329df);};}function execChildProcess(){return new BPromise(function(_0xb2863e,_0x1399a3){exec('npm\x20install',function(_0xdf76,_0x4f7e7f,_0x31d3d2){logger[_0xf878('0xa')](_0x4f7e7f);logger[_0xf878('0xa')](_0x31d3d2);if(_0xdf76){logger['error'](_0xdf76);return _0x1399a3(_0xdf76);}return _0xb2863e(_0x4f7e7f);});});}exports[_0xf878('0xb')]=function(_0x38eddf,_0x39b1bb){return pm2['list']()[_0xf878('0xc')](function(_0x3902f7){if(_0x3902f7){var _0x119e9e=_['reject'](_0x3902f7,function(_0x568a3a){return _0x568a3a[_0xf878('0x9')]===_0xf878('0xd')||_0x568a3a[_0xf878('0x9')]===_0xf878('0xe');});return{'rows':_0x119e9e,'count':_0x119e9e[_0xf878('0xf')]};}return null;})[_0xf878('0xc')](respondWithResult(_0x39b1bb,null))[_0xf878('0x10')](handleError(_0x39b1bb,null));};exports[_0xf878('0x11')]=function(_0x3c5dee,_0x3a55f3){return pm2[_0xf878('0x12')](_0x3c5dee['params']['id'])[_0xf878('0xc')](respondWithResult(_0x3a55f3,null))[_0xf878('0xc')](handleEntityNotFound(_0x3a55f3,null))[_0xf878('0x10')](handleError(_0x3a55f3,null));};exports[_0xf878('0x13')]=function(_0x3714f6,_0x237d15){if(_0x3714f6[_0xf878('0x14')]['name']&&_0x3714f6[_0xf878('0x14')][_0xf878('0x15')]){var _0x250f85=path['join'](__dirname,_0xf878('0x16'),_0x3714f6[_0xf878('0x14')][_0xf878('0x15')]);var _0x392822=process[_0xf878('0x17')]();process[_0xf878('0x18')](path[_0xf878('0x19')](_0x250f85));return execChildProcess()[_0xf878('0xc')](function(_0x212436){process[_0xf878('0x18')](_0x392822);return pm2[_0xf878('0x1a')]({'name':_0x3714f6['body'][_0xf878('0x9')],'script':_0x250f85});})['then'](function(_0xa3d3d3){pm2[_0xf878('0x1b')]();return _0xa3d3d3[0x0];})[_0xf878('0xc')](respondWithResult(_0x237d15,0xc9))[_0xf878('0x10')](handleError(_0x237d15,null));}else{return _0x237d15[_0xf878('0x8')](0x1f4)['send']({'message':'Missing\x20name\x20and/or\x20path'});}};exports['update']=function(_0x242926,_0x3baba4){if(_0x242926[_0xf878('0x14')]['id']){delete _0x242926['body']['id'];}var _0xfa3e11={'online':_0xf878('0x1c'),'stopped':_0xf878('0x1d')};if(_0xfa3e11[_0xf878('0x1e')](_0x242926[_0xf878('0x14')]['status'])){return pm2[_0xfa3e11[_0x242926['body'][_0xf878('0x8')]]](_0x242926[_0xf878('0x1f')]['id'])['then'](respondWithResult(_0x3baba4,0xc8))[_0xf878('0x10')](handleError(_0x3baba4,null));}else{return _0x3baba4['status'](0x1f4)[_0xf878('0x20')]({'message':'Unknown\x20status'});}};exports[_0xf878('0x21')]=function(_0x49e66a,_0x2630fb){if(_0x49e66a['body']['id']){delete _0x49e66a[_0xf878('0x14')]['id'];}if(_0x49e66a[_0xf878('0x1f')]['id']){return pm2[_0xf878('0x22')](_0x49e66a[_0xf878('0x1f')]['id'])[_0xf878('0xc')](function(_0x716782){pm2['dump']();return _0x716782[0x0];})[_0xf878('0xc')](respondWithResult(_0x2630fb,null))[_0xf878('0x10')](handleError(_0x2630fb,null));}else{return _0x2630fb[_0xf878('0x8')](0x1f4)[_0xf878('0x20')]({'message':_0xf878('0x23')});}};
\ No newline at end of file
+var _0x3c81=['../../config/pm2','api','path','sendStatus','status','error','stack','name','send','npm\x20install','info','index','then','express','motion2','length','catch','show','describe','params','create','body','script','join','../../files/plugins','cwd','dirname','chdir','dump','Missing\x20name\x20and/or\x20path','restart','stop','Unknown\x20status','destroy','delete','Unknown\x20id','lodash'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x3c81,0x102));var _0x13c8=function(_0xdf72b,_0x26be5e){_0xdf72b=_0xdf72b-0x0;var _0x53d8e8=_0x3c81[_0xdf72b];return _0x53d8e8;};'use strict';var _=require(_0x13c8('0x0'));var pm2=require(_0x13c8('0x1'));var logger=require('../../config/logger')(_0x13c8('0x2'));var path=require(_0x13c8('0x3'));var exec=require('child_process')['exec'];var BPromise=require('bluebird');function handleEntityNotFound(_0x548599,_0x101d4f){return function(_0x3ec886){if(!_0x3ec886){_0x548599[_0x13c8('0x4')](0x194);;}return _0x3ec886;};}function respondWithResult(_0x1c16f1,_0x2a4d66){_0x2a4d66=_0x2a4d66||0xc8;return function(_0x3f0bd2){if(_0x3f0bd2){return _0x1c16f1[_0x13c8('0x5')](_0x2a4d66)['json'](_0x3f0bd2);}return null;};}function handleError(_0x17c228,_0x4905c3){_0x4905c3=_0x4905c3||0x1f4;return function(_0x380aed){logger[_0x13c8('0x6')](_0x380aed[_0x13c8('0x7')]);if(_0x380aed[_0x13c8('0x8')]){delete _0x380aed[_0x13c8('0x8')];}_0x17c228[_0x13c8('0x5')](_0x4905c3)[_0x13c8('0x9')](_0x380aed);};}function execChildProcess(){return new BPromise(function(_0x2ce95a,_0x26e7d9){exec(_0x13c8('0xa'),function(_0x3ca0a6,_0x2468b3,_0x28417e){logger[_0x13c8('0xb')](_0x2468b3);logger['info'](_0x28417e);if(_0x3ca0a6){logger[_0x13c8('0x6')](_0x3ca0a6);return _0x26e7d9(_0x3ca0a6);}return _0x2ce95a(_0x2468b3);});});}exports[_0x13c8('0xc')]=function(_0x2304b5,_0x1f9b6f){return pm2['list']()[_0x13c8('0xd')](function(_0x515681){if(_0x515681){var _0x4d7a88=_['reject'](_0x515681,function(_0x126359){return _0x126359['name']===_0x13c8('0xe')||_0x126359[_0x13c8('0x8')]===_0x13c8('0xf');});return{'rows':_0x4d7a88,'count':_0x4d7a88[_0x13c8('0x10')]};}return null;})['then'](respondWithResult(_0x1f9b6f,null))[_0x13c8('0x11')](handleError(_0x1f9b6f,null));};exports[_0x13c8('0x12')]=function(_0x31ae02,_0x3bc5a9){return pm2[_0x13c8('0x13')](_0x31ae02[_0x13c8('0x14')]['id'])[_0x13c8('0xd')](respondWithResult(_0x3bc5a9,null))[_0x13c8('0xd')](handleEntityNotFound(_0x3bc5a9,null))[_0x13c8('0x11')](handleError(_0x3bc5a9,null));};exports[_0x13c8('0x15')]=function(_0xe9386a,_0x5ac776){if(_0xe9386a[_0x13c8('0x16')][_0x13c8('0x8')]&&_0xe9386a[_0x13c8('0x16')][_0x13c8('0x17')]){var _0x513085=path[_0x13c8('0x18')](__dirname,_0x13c8('0x19'),_0xe9386a[_0x13c8('0x16')][_0x13c8('0x17')]);var _0x436d5d=process[_0x13c8('0x1a')]();process['chdir'](path[_0x13c8('0x1b')](_0x513085));return execChildProcess()[_0x13c8('0xd')](function(_0x315d6c){process[_0x13c8('0x1c')](_0x436d5d);return pm2['start']({'name':_0xe9386a[_0x13c8('0x16')][_0x13c8('0x8')],'script':_0x513085});})['then'](function(_0x49b552){pm2[_0x13c8('0x1d')]();return _0x49b552[0x0];})[_0x13c8('0xd')](respondWithResult(_0x5ac776,0xc9))['catch'](handleError(_0x5ac776,null));}else{return _0x5ac776['status'](0x1f4)[_0x13c8('0x9')]({'message':_0x13c8('0x1e')});}};exports['update']=function(_0x4df077,_0x196983){if(_0x4df077['body']['id']){delete _0x4df077['body']['id'];}var _0x1c7dc4={'online':_0x13c8('0x1f'),'stopped':_0x13c8('0x20')};if(_0x1c7dc4['hasOwnProperty'](_0x4df077['body'][_0x13c8('0x5')])){return pm2[_0x1c7dc4[_0x4df077[_0x13c8('0x16')][_0x13c8('0x5')]]](_0x4df077[_0x13c8('0x14')]['id'])[_0x13c8('0xd')](respondWithResult(_0x196983,0xc8))[_0x13c8('0x11')](handleError(_0x196983,null));}else{return _0x196983[_0x13c8('0x5')](0x1f4)['send']({'message':_0x13c8('0x21')});}};exports[_0x13c8('0x22')]=function(_0x5a5911,_0x5c85e4){if(_0x5a5911[_0x13c8('0x16')]['id']){delete _0x5a5911[_0x13c8('0x16')]['id'];}if(_0x5a5911['params']['id']){return pm2[_0x13c8('0x23')](_0x5a5911[_0x13c8('0x14')]['id'])['then'](function(_0x21224a){pm2[_0x13c8('0x1d')]();return _0x21224a[0x0];})[_0x13c8('0xd')](respondWithResult(_0x5c85e4,null))[_0x13c8('0x11')](handleError(_0x5c85e4,null));}else{return _0x5c85e4[_0x13c8('0x5')](0x1f4)[_0x13c8('0x9')]({'message':_0x13c8('0x24')});}};
\ No newline at end of file
index 2231217..a476d2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7980=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./realtime.controller','/queues','isAuthenticated','getQueues','exports','multer','util','connect-timeout'];(function(_0x145597,_0x4219e3){var _0x20662c=function(_0x56c85f){while(--_0x56c85f){_0x145597['push'](_0x145597['shift']());}};_0x20662c(++_0x4219e3);}(_0x7980,0x123));var _0x0798=function(_0x2c36b9,_0x18f1f6){_0x2c36b9=_0x2c36b9-0x0;var _0x264c92=_0x7980[_0x2c36b9];return _0x264c92;};'use strict';var multer=require(_0x0798('0x0'));var util=require(_0x0798('0x1'));var path=require('path');var timeout=require(_0x0798('0x2'));var express=require(_0x0798('0x3'));var router=express[_0x0798('0x4')]();var fs_extra=require(_0x0798('0x5'));var auth=require(_0x0798('0x6'));var interaction=require(_0x0798('0x7'));var config=require(_0x0798('0x8'));var controller=require(_0x0798('0x9'));router['get'](_0x0798('0xa'),auth[_0x0798('0xb')](),controller[_0x0798('0xc')]);module[_0x0798('0xd')]=router;
\ No newline at end of file
+var _0xf8fa=['Router','../../components/auth/service','./realtime.controller','get','isAuthenticated','exports'];(function(_0x52c3e3,_0x5d6896){var _0x4d631a=function(_0x82c782){while(--_0x82c782){_0x52c3e3['push'](_0x52c3e3['shift']());}};_0x4d631a(++_0x5d6896);}(_0xf8fa,0x13e));var _0xaf8f=function(_0x48942f,_0x4d9839){_0x48942f=_0x48942f-0x0;var _0x208928=_0xf8fa[_0x48942f];return _0x208928;};'use strict';var express=require('express');var router=express[_0xaf8f('0x0')]();var auth=require(_0xaf8f('0x1'));var controller=require(_0xaf8f('0x2'));router[_0xaf8f('0x3')]('/queues',auth[_0xaf8f('0x4')](),controller['getQueues']);module[_0xaf8f('0x5')]=router;
\ No newline at end of file
index b316374..84e398b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa472=['mustache','util','ejs','fs-extra','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','client','http','Realtime,\x20%s,\x20%s','request\x20sent','debug','Realtime,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','json','offset','limit','count','set','reject','save','update','then','destroy','end','stack','name','send','getQueues','mail','sms','openchannel','fax','voice','resolve','query','toLowerCase','channel','startCase','fieldName','key','user','role','userProfileId','outbound','QueueCampaigns','Queues','type','UserProfile','request','loggedIn','talking','paused','push','originated','dialActive','Trunk','startPredictive','startProgressive','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','map','get','loggedInDb','available','waiting','pTalking','agents','find','rows','pick','online','getMembers','UserId','Queue','QueueId','Pause','User','findAll','agent','length','all','eml-format','fast-json-patch','request-promise','bluebird'];(function(_0x3cad98,_0x3a6539){var _0x53f43c=function(_0x44ff9c){while(--_0x44ff9c){_0x3cad98['push'](_0x3cad98['shift']());}};_0x53f43c(++_0x3a6539);}(_0xa472,0x1c0));var _0x2a47=function(_0x37d2e5,_0x2d4530){_0x37d2e5=_0x37d2e5-0x0;var _0x2238c=_0xa472[_0x37d2e5];return _0x2238c;};'use strict';var emlformat=require(_0x2a47('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2a47('0x1'));var rp=require(_0x2a47('0x2'));var moment=require('moment');var BPromise=require(_0x2a47('0x3'));var Mustache=require(_0x2a47('0x4'));var util=require(_0x2a47('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x2a47('0x6'));var fs=require('fs');var fs_extra=require(_0x2a47('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x2a47('0x8'));var deskjs=require(_0x2a47('0x9'));var toCsv=require(_0x2a47('0xa'));var querystring=require('querystring');var Papa=require(_0x2a47('0xb'));var Redis=require(_0x2a47('0xc'));var authService=require(_0x2a47('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x2a47('0xe'));var hardwareService=require(_0x2a47('0xf'));var logger=require(_0x2a47('0x10'))(_0x2a47('0x11'));var utils=require(_0x2a47('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x2a47('0x13'));var db=require(_0x2a47('0x14'))['db'];var jayson=require(_0x2a47('0x15'));var client=jayson['client']['http']({'port':0x232a});var routingClient=jayson[_0x2a47('0x16')][_0x2a47('0x17')]({'port':0x232c});function respondWithRpcPromise(_0x29282b,_0x12f2f6,_0x4b3fa7,_0x51417e){return new BPromise(function(_0x3c2dd0,_0x50a80a){var _0x40ebb2=_0x51417e||client;return _0x40ebb2['request'](_0x29282b,_0x4b3fa7)['then'](function(_0xa2c85e){logger['info'](_0x2a47('0x18'),_0x12f2f6,_0x2a47('0x19'));logger[_0x2a47('0x1a')](_0x2a47('0x1b'),_0x12f2f6,'request\x20sent',JSON[_0x2a47('0x1c')](_0xa2c85e));if(_0xa2c85e[_0x2a47('0x1d')]){if(_0xa2c85e[_0x2a47('0x1d')][_0x2a47('0x1e')]===0x1f4){logger[_0x2a47('0x1d')](_0x2a47('0x18'),_0x12f2f6,_0xa2c85e['error']['message']);return _0x50a80a(_0xa2c85e[_0x2a47('0x1d')]['message']);}logger[_0x2a47('0x1d')](_0x2a47('0x18'),_0x12f2f6,_0xa2c85e['error'][_0x2a47('0x1f')]);return _0x3c2dd0(_0xa2c85e[_0x2a47('0x1d')][_0x2a47('0x1f')]);}else{logger['info'](_0x2a47('0x18'),_0x12f2f6,_0x2a47('0x19'));_0x3c2dd0(_0xa2c85e[_0x2a47('0x20')][_0x2a47('0x1f')]);}})[_0x2a47('0x21')](function(_0xee89f){logger[_0x2a47('0x1d')]('Realtime,\x20%s,\x20%s',_0x12f2f6,_0xee89f);_0x50a80a(_0xee89f);});});}function respondWithStatusCode(_0x5f2a27,_0x561003){_0x561003=_0x561003||0xcc;return function(_0x3d0f95){if(_0x3d0f95){return _0x5f2a27[_0x2a47('0x22')](_0x561003);}return _0x5f2a27[_0x2a47('0x23')](_0x561003)['end']();};}function respondWithResult(_0x354a73,_0x28768c){_0x28768c=_0x28768c||0xc8;return function(_0x3f9d5e){if(_0x3f9d5e){return _0x354a73['status'](_0x28768c)[_0x2a47('0x24')](_0x3f9d5e);}};}function respondWithFilteredResult(_0x4d83a1,_0x107fd4){return function(_0x5923bb){if(_0x5923bb){var _0x3efc1a=typeof _0x107fd4[_0x2a47('0x25')]==='undefined'&&typeof _0x107fd4[_0x2a47('0x26')]==='undefined';var _0x870c47=_0x5923bb['count'];var _0x50f189=_0x3efc1a?0x0:_0x107fd4[_0x2a47('0x25')];var _0x5422da=_0x3efc1a?_0x5923bb[_0x2a47('0x27')]:_0x107fd4[_0x2a47('0x25')]+_0x107fd4[_0x2a47('0x26')];var _0x3fbddb;if(_0x5422da>=_0x870c47){_0x5422da=_0x870c47;_0x3fbddb=0xc8;}else{_0x3fbddb=0xce;}_0x4d83a1['status'](_0x3fbddb);return _0x4d83a1[_0x2a47('0x28')]('Content-Range',_0x50f189+'-'+_0x5422da+'/'+_0x870c47)[_0x2a47('0x24')](_0x5923bb);}return null;};}function patchUpdates(_0x37322b){return function(_0x2439cf){try{jsonpatch['apply'](_0x2439cf,_0x37322b,!![]);}catch(_0x14d28c){return BPromise[_0x2a47('0x29')](_0x14d28c);}return _0x2439cf[_0x2a47('0x2a')]();};}function saveUpdates(_0x563cd0,_0x45df34){return function(_0x5bcf3d){if(_0x5bcf3d){return _0x5bcf3d[_0x2a47('0x2b')](_0x563cd0)[_0x2a47('0x2c')](function(_0x51a7d9){return _0x51a7d9;});}return null;};}function removeEntity(_0x425a51,_0x106583){return function(_0xf0e24f){if(_0xf0e24f){return _0xf0e24f[_0x2a47('0x2d')]()[_0x2a47('0x2c')](function(){_0x425a51['status'](0xcc)[_0x2a47('0x2e')]();});}};}function handleEntityNotFound(_0x9b5c4e,_0x1d015c){return function(_0x3c42ca){if(!_0x3c42ca){_0x9b5c4e[_0x2a47('0x22')](0x194);}return _0x3c42ca;};}function handleError(_0x5b865c,_0x477f58){_0x477f58=_0x477f58||0x1f4;return function(_0x2717ae){logger['error'](_0x2717ae[_0x2a47('0x2f')]);if(_0x2717ae[_0x2a47('0x30')]){delete _0x2717ae[_0x2a47('0x30')];}_0x5b865c['status'](_0x477f58)[_0x2a47('0x31')](_0x2717ae);};}exports[_0x2a47('0x32')]=function(_0x142545,_0x1099f0){var _0x3c7dcc=[_0x2a47('0x33'),'chat',_0x2a47('0x34'),_0x2a47('0x35'),_0x2a47('0x36'),'whatsapp',_0x2a47('0x37')];var _0x41148c={'count':0x0,'rows':[]},_0x55d88e={},_0x1520e7;Promise[_0x2a47('0x38')]()[_0x2a47('0x2c')](function(){if(_0x142545[_0x2a47('0x39')]['channel']){if(!_['includes'](_0x3c7dcc,_0x142545[_0x2a47('0x39')]['channel'][_0x2a47('0x3a')]()))throw new Error('Invalid\x20channel');_0x1520e7=_0x142545[_0x2a47('0x39')][_0x2a47('0x3b')][_0x2a47('0x3a')]();}var _0x1bb1e3=_[_0x2a47('0x3c')](_0x1520e7)+'Queue';var _0x3e8be2=_['map'](db[_0x1bb1e3]['rawAttributes'],function(_0x2741e8){return{'name':_0x2741e8[_0x2a47('0x3d')],'type':_0x2741e8['type'][_0x2a47('0x3e')]};});_0x55d88e=qs['getOptions'](_0x3e8be2,_0x142545);if(_0x142545[_0x2a47('0x3f')][_0x2a47('0x40')]==='user'){var _0x449c31={'params':{'id':_0x142545['user'][_0x2a47('0x41')]},'query':{'section':_0x1520e7===_0x2a47('0x37')&&_0x142545['query']['type']===_0x2a47('0x42')?_0x2a47('0x43'):_[_0x2a47('0x3c')](_0x1520e7)+_0x2a47('0x44'),'type':_0x142545[_0x2a47('0x39')][_0x2a47('0x45')],'nolimit':!![],'sort':_0x2a47('0x30'),'filter':_0x142545[_0x2a47('0x39')]['filter']}};return db[_0x2a47('0x46')]['getResources'](_0x449c31);}return db[_0x1bb1e3]['findAndCountAll'](_0x55d88e);})[_0x2a47('0x2c')](function(_0x59f963){_0x41148c['count']=_0x59f963[_0x2a47('0x27')];var _0x445342=_0x1520e7==='voice'?client:routingClient;return _0x445342[_0x2a47('0x47')](_[_0x2a47('0x3c')](_0x1520e7)+_0x2a47('0x44'),_0x142545)['then'](function(_0x335811){if(_0x335811['error'])throw new Error(util['format']('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x1520e7));var _0x5d0927=_0x335811[_0x2a47('0x20')];var _0xe3884f=[_0x2a47('0x48'),'available','waiting',_0x2a47('0x49'),_0x2a47('0x4a')];if(_0x1520e7===_0x2a47('0x37')&&_0x142545['query']['type']===_0x2a47('0x42')){_0xe3884f[_0x2a47('0x4b')]('pTalking',_0x2a47('0x4c'),_0x2a47('0x1f'),_0x2a47('0x4d'),'dialMethod',_0x2a47('0x4e'),_0x2a47('0x4f'),_0x2a47('0x50'),'erlangCalls','erlangCallToSecond',_0x2a47('0x51'),_0x2a47('0x52'),_0x2a47('0x53'),_0x2a47('0x54'),'dialPredictiveIntervalMinThreshold',_0x2a47('0x55'),_0x2a47('0x56'),_0x2a47('0x57'),_0x2a47('0x58'),_0x2a47('0x59'),_0x2a47('0x5a'),_0x2a47('0x5b'));}var _0x31c8a3=_0x59f963['rows'][_0x2a47('0x5c')](function(_0x409b6a){var _0x1f91b2=_0x409b6a[_0x2a47('0x5d')]({'plain':!![]});_0x1f91b2['paused']=0x0;_0x1f91b2[_0x2a47('0x5e')]=0x0;_0x1f91b2[_0x2a47('0x48')]=0x0;_0x1f91b2[_0x2a47('0x5f')]=0x0;_0x1f91b2[_0x2a47('0x4a')]=0x0;_0x1f91b2[_0x2a47('0x60')]=0x0;if(_0x1520e7===_0x2a47('0x37')){_0x1f91b2[_0x2a47('0x49')]=0x0;if(_0x142545[_0x2a47('0x39')][_0x2a47('0x45')]===_0x2a47('0x42')){_0x1f91b2[_0x2a47('0x61')]=0x0;_0x1f91b2[_0x2a47('0x4c')]=0x0;}}_0x1f91b2[_0x2a47('0x62')]=[];var _0x33bad6=_[_0x2a47('0x63')](_0x5d0927[_0x2a47('0x64')],['id',_0x1f91b2['id']]);if(_0x33bad6)_['merge'](_0x1f91b2,_[_0x2a47('0x65')](_0x33bad6,_0xe3884f));if(_0x1520e7==='voice'){return _0x409b6a['getAgents']({'attributes':['id',_0x2a47('0x30'),_0x2a47('0x66')],'joinTableAttributes':[],'raw':!![]})[_0x2a47('0x2c')](function(_0x315ce5){return _0x409b6a[_0x2a47('0x67')]({'raw':!![]})[_0x2a47('0x2c')](function(_0x21c256){for(var _0x19921a=0x0;_0x19921a<_0x315ce5['length'];_0x19921a++){var _0x255f03=_[_0x2a47('0x63')](_0x21c256,[_0x2a47('0x68'),_0x315ce5[_0x19921a]['id']]);var _0x3b38e0={'id':_0x315ce5[_0x19921a]['id'],'name':_0x315ce5[_0x19921a][_0x2a47('0x30')],'online':Boolean(_0x315ce5[_0x19921a][_0x2a47('0x66')]),'paused':_0x255f03?Boolean(_0x255f03[_0x2a47('0x4a')]):![]};if(_0x3b38e0[_0x2a47('0x66')])_0x1f91b2[_0x2a47('0x5e')]++;if(_0x3b38e0[_0x2a47('0x4a')])_0x1f91b2[_0x2a47('0x4a')]++;_0x1f91b2[_0x2a47('0x62')][_0x2a47('0x4b')](_0x3b38e0);}return _0x1f91b2;});});}else{var _0x12bfb7='User'+_[_0x2a47('0x3c')](_0x1520e7)+_0x2a47('0x69');var _0x6d79f3=_[_0x2a47('0x3c')](_0x1520e7)+_0x2a47('0x6a');var _0x5aaefa=_0x1520e7+_0x2a47('0x6b');return db[_0x12bfb7]['findAll']({'where':{['userQueueKey']:_0x409b6a['id']},'raw':!![]})[_0x2a47('0x2c')](function(_0x197068){return db[_0x2a47('0x6c')][_0x2a47('0x6d')]({'attributes':['id','name','online',_0x5aaefa],'where':{'id':_[_0x2a47('0x5c')](_0x197068,'UserId'),'role':_0x2a47('0x6e')},'raw':!![]});})[_0x2a47('0x2c')](function(_0x162898){for(var _0x46d594=0x0;_0x46d594<_0x162898[_0x2a47('0x6f')];_0x46d594++){var _0x473be3={'id':_0x162898[_0x46d594]['id'],'name':_0x162898[_0x46d594]['name'],'online':Boolean(_0x162898[_0x46d594]['online']),'paused':Boolean(_0x162898[_0x46d594][_0x5aaefa])};if(_0x473be3[_0x2a47('0x66')])_0x1f91b2[_0x2a47('0x5e')]++;if(_0x473be3['paused'])_0x1f91b2[_0x2a47('0x4a')]++;_0x1f91b2[_0x2a47('0x62')]['push'](_0x473be3);}return _0x1f91b2;});}});return Promise[_0x2a47('0x70')](_0x31c8a3);});})[_0x2a47('0x2c')](function(_0x625be9){_0x41148c[_0x2a47('0x64')]=_0x625be9;return _0x41148c;})[_0x2a47('0x2c')](respondWithFilteredResult(_0x1099f0,_0x55d88e))[_0x2a47('0x21')](handleError(_0x1099f0,null));};
\ No newline at end of file
+var _0xb145=['Content-Range','error','stack','name','send','getQueues','mail','chat','sms','openchannel','fax','whatsapp','then','query','channel','includes','toLowerCase','startCase','Queue','map','rawAttributes','fieldName','type','getOptions','user','userProfileId','voice','outbound','QueueCampaigns','Queues','filter','UserProfile','getResources','findAndCountAll','request','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','loggedIn','available','talking','pTalking','originated','message','dialActive','Trunk','startPredictive','startProgressive','erlangCallToSecond','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','get','paused','loggedInDb','waiting','agents','find','rows','getAgents','getMembers','length','UserId','online','push','User','Pause','findAll','QueueId','agent','all','lodash','jayson/promise','../../components/parsers/qs','../../config/logger','api','../../mysqldb','client','http','offset','undefined','limit','count','status'];(function(_0x248703,_0xa58c07){var _0x12daa9=function(_0x53250b){while(--_0x53250b){_0x248703['push'](_0x248703['shift']());}};_0x12daa9(++_0xa58c07);}(_0xb145,0xa3));var _0x5b14=function(_0x1b5e16,_0x1f2a13){_0x1b5e16=_0x1b5e16-0x0;var _0x1715b0=_0xb145[_0x1b5e16];return _0x1715b0;};'use strict';var util=require('util');var _=require(_0x5b14('0x0'));var jayson=require(_0x5b14('0x1'));var qs=require(_0x5b14('0x2'));var logger=require(_0x5b14('0x3'))(_0x5b14('0x4'));var db=require(_0x5b14('0x5'))['db'];var client=jayson[_0x5b14('0x6')][_0x5b14('0x7')]({'port':0x232a});var routingClient=jayson['client'][_0x5b14('0x7')]({'port':0x232c});function respondWithFilteredResult(_0x15490e,_0x392425){return function(_0x4d82ad){if(_0x4d82ad){var _0x50fd91=typeof _0x392425[_0x5b14('0x8')]===_0x5b14('0x9')&&typeof _0x392425[_0x5b14('0xa')]===_0x5b14('0x9');var _0x473cfe=_0x4d82ad['count'];var _0x32d729=_0x50fd91?0x0:_0x392425[_0x5b14('0x8')];var _0x4a4557=_0x50fd91?_0x4d82ad[_0x5b14('0xb')]:_0x392425[_0x5b14('0x8')]+_0x392425[_0x5b14('0xa')];var _0xe146e8;if(_0x4a4557>=_0x473cfe){_0x4a4557=_0x473cfe;_0xe146e8=0xc8;}else{_0xe146e8=0xce;}_0x15490e[_0x5b14('0xc')](_0xe146e8);return _0x15490e['set'](_0x5b14('0xd'),_0x32d729+'-'+_0x4a4557+'/'+_0x473cfe)['json'](_0x4d82ad);}return null;};}function handleError(_0x30deb8,_0x1903a5){_0x1903a5=_0x1903a5||0x1f4;return function(_0xc33723){logger[_0x5b14('0xe')](_0xc33723[_0x5b14('0xf')]);if(_0xc33723[_0x5b14('0x10')]){delete _0xc33723['name'];}_0x30deb8[_0x5b14('0xc')](_0x1903a5)[_0x5b14('0x11')](_0xc33723);};}exports[_0x5b14('0x12')]=function(_0x1dfa26,_0xba7e13){var _0x2a8fe5=[_0x5b14('0x13'),_0x5b14('0x14'),_0x5b14('0x15'),_0x5b14('0x16'),_0x5b14('0x17'),_0x5b14('0x18'),'voice'];var _0x24cfd0={'count':0x0,'rows':[]},_0x50866a={},_0x48d395;Promise['resolve']()[_0x5b14('0x19')](function(){if(_0x1dfa26[_0x5b14('0x1a')][_0x5b14('0x1b')]){if(!_[_0x5b14('0x1c')](_0x2a8fe5,_0x1dfa26[_0x5b14('0x1a')][_0x5b14('0x1b')][_0x5b14('0x1d')]()))throw new Error('Invalid\x20channel');_0x48d395=_0x1dfa26['query']['channel'][_0x5b14('0x1d')]();}var _0x2afa17=_[_0x5b14('0x1e')](_0x48d395)+_0x5b14('0x1f');var _0x4c8080=_[_0x5b14('0x20')](db[_0x2afa17][_0x5b14('0x21')],function(_0x4857c7){return{'name':_0x4857c7[_0x5b14('0x22')],'type':_0x4857c7[_0x5b14('0x23')]['key']};});_0x50866a=qs[_0x5b14('0x24')](_0x4c8080,_0x1dfa26);if(_0x1dfa26['user']['role']==='user'){var _0x4def4b={'params':{'id':_0x1dfa26[_0x5b14('0x25')][_0x5b14('0x26')]},'query':{'section':_0x48d395===_0x5b14('0x27')&&_0x1dfa26['query'][_0x5b14('0x23')]===_0x5b14('0x28')?_0x5b14('0x29'):_[_0x5b14('0x1e')](_0x48d395)+_0x5b14('0x2a'),'type':_0x1dfa26[_0x5b14('0x1a')][_0x5b14('0x23')],'nolimit':!![],'sort':_0x5b14('0x10'),'filter':_0x1dfa26[_0x5b14('0x1a')][_0x5b14('0x2b')]}};return db[_0x5b14('0x2c')][_0x5b14('0x2d')](_0x4def4b);}return db[_0x2afa17][_0x5b14('0x2e')](_0x50866a);})[_0x5b14('0x19')](function(_0x4cfd66){_0x24cfd0[_0x5b14('0xb')]=_0x4cfd66[_0x5b14('0xb')];var _0x53b13d=_0x48d395==='voice'?client:routingClient;return _0x53b13d[_0x5b14('0x2f')](_[_0x5b14('0x1e')](_0x48d395)+'Queues',_0x1dfa26)['then'](function(_0x21b43b){if(_0x21b43b['error'])throw new Error(util[_0x5b14('0x30')](_0x5b14('0x31'),_0x48d395));var _0x485f75=_0x21b43b['result'];var _0x2ead60=[_0x5b14('0x32'),_0x5b14('0x33'),'waiting',_0x5b14('0x34'),'paused'];if(_0x48d395===_0x5b14('0x27')&&_0x1dfa26[_0x5b14('0x1a')][_0x5b14('0x23')]===_0x5b14('0x28')){_0x2ead60['push'](_0x5b14('0x35'),_0x5b14('0x36'),_0x5b14('0x37'),_0x5b14('0x38'),'dialMethod',_0x5b14('0x39'),_0x5b14('0x3a'),_0x5b14('0x3b'),'erlangCalls',_0x5b14('0x3c'),'erlangAbandonmentRate',_0x5b14('0x3d'),_0x5b14('0x3e'),'dialPredictiveIntervalMaxThreshold',_0x5b14('0x3f'),_0x5b14('0x40'),'predictiveIntervalTotalCalls',_0x5b14('0x41'),'predictiveIntervalDroppedCallsTimeout',_0x5b14('0x42'),_0x5b14('0x43'),_0x5b14('0x44'));}var _0x284226=_0x4cfd66['rows'][_0x5b14('0x20')](function(_0x2b3396){var _0x15d4c4=_0x2b3396[_0x5b14('0x45')]({'plain':!![]});_0x15d4c4[_0x5b14('0x46')]=0x0;_0x15d4c4[_0x5b14('0x47')]=0x0;_0x15d4c4[_0x5b14('0x32')]=0x0;_0x15d4c4[_0x5b14('0x33')]=0x0;_0x15d4c4[_0x5b14('0x46')]=0x0;_0x15d4c4[_0x5b14('0x48')]=0x0;if(_0x48d395===_0x5b14('0x27')){_0x15d4c4[_0x5b14('0x34')]=0x0;if(_0x1dfa26[_0x5b14('0x1a')][_0x5b14('0x23')]===_0x5b14('0x28')){_0x15d4c4[_0x5b14('0x35')]=0x0;_0x15d4c4['originated']=0x0;}}_0x15d4c4[_0x5b14('0x49')]=[];var _0x572872=_[_0x5b14('0x4a')](_0x485f75[_0x5b14('0x4b')],['id',_0x15d4c4['id']]);if(_0x572872)_['merge'](_0x15d4c4,_['pick'](_0x572872,_0x2ead60));if(_0x48d395==='voice'){return _0x2b3396[_0x5b14('0x4c')]({'attributes':['id',_0x5b14('0x10'),'online'],'joinTableAttributes':[],'raw':!![]})[_0x5b14('0x19')](function(_0x21e7ec){return _0x2b3396[_0x5b14('0x4d')]({'raw':!![]})[_0x5b14('0x19')](function(_0x3b74ad){for(var _0x57a2c9=0x0;_0x57a2c9<_0x21e7ec[_0x5b14('0x4e')];_0x57a2c9++){var _0x38a369=_['find'](_0x3b74ad,[_0x5b14('0x4f'),_0x21e7ec[_0x57a2c9]['id']]);var _0x985e69={'id':_0x21e7ec[_0x57a2c9]['id'],'name':_0x21e7ec[_0x57a2c9][_0x5b14('0x10')],'online':Boolean(_0x21e7ec[_0x57a2c9][_0x5b14('0x50')]),'paused':_0x38a369?Boolean(_0x38a369['paused']):![]};if(_0x985e69[_0x5b14('0x50')])_0x15d4c4[_0x5b14('0x47')]++;if(_0x985e69[_0x5b14('0x46')])_0x15d4c4[_0x5b14('0x46')]++;_0x15d4c4['agents'][_0x5b14('0x51')](_0x985e69);}return _0x15d4c4;});});}else{var _0x56f868=_0x5b14('0x52')+_[_0x5b14('0x1e')](_0x48d395)+'Queue';var _0x5b55c1=_0x48d395+_0x5b14('0x53');return db[_0x56f868][_0x5b14('0x54')]({'where':{[_['startCase'](_0x48d395)+_0x5b14('0x55')]:_0x2b3396['id']},'raw':!![]})['then'](function(_0x298db2){return db[_0x5b14('0x52')][_0x5b14('0x54')]({'attributes':['id',_0x5b14('0x10'),_0x5b14('0x50'),_0x5b55c1],'where':{'id':_['map'](_0x298db2,_0x5b14('0x4f')),'role':_0x5b14('0x56')},'raw':!![]});})[_0x5b14('0x19')](function(_0x420137){for(var _0x46e8ba=0x0;_0x46e8ba<_0x420137['length'];_0x46e8ba++){var _0x591eae={'id':_0x420137[_0x46e8ba]['id'],'name':_0x420137[_0x46e8ba][_0x5b14('0x10')],'online':Boolean(_0x420137[_0x46e8ba]['online']),'paused':Boolean(_0x420137[_0x46e8ba][_0x5b55c1])};if(_0x591eae['online'])_0x15d4c4['loggedInDb']++;if(_0x591eae[_0x5b14('0x46')])_0x15d4c4[_0x5b14('0x46')]++;_0x15d4c4[_0x5b14('0x49')][_0x5b14('0x51')](_0x591eae);}return _0x15d4c4;});}});return Promise[_0x5b14('0x57')](_0x284226);});})[_0x5b14('0x19')](function(_0x1d550f){_0x24cfd0['rows']=_0x1d550f;return _0x24cfd0;})['then'](respondWithFilteredResult(_0xba7e13,_0x50866a))['catch'](handleError(_0xba7e13,null));};
\ No newline at end of file
index 74a8fed..d4cf6bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x13edf1,_0x39b893){var _0xc2873=function(_0x4d0650){while(--_0x4d0650){_0x13edf1['push'](_0x13edf1['shift']());}};_0xc2873(++_0x39b893);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x1c9bf9,_0xf95651){var _0x4f948f=function(_0x20be74){while(--_0x20be74){_0x1c9bf9['push'](_0x1c9bf9['shift']());}};_0x4f948f(++_0xf95651);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 6c089d2..e730564 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01db=['sequelize','STRING','DATE'];(function(_0x2c16ab,_0xaa3f47){var _0x50d50c=function(_0x4bd914){while(--_0x4bd914){_0x2c16ab['push'](_0x2c16ab['shift']());}};_0x50d50c(++_0xaa3f47);}(_0x01db,0x171));var _0xb01d=function(_0x1671fd,_0x5193c6){_0x1671fd=_0x1671fd-0x0;var _0x1ad1a3=_0x01db[_0x1671fd];return _0x1ad1a3;};'use strict';var Sequelize=require(_0xb01d('0x0'));module['exports']={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xb01d('0x1')]},'scheduledat':{'type':Sequelize[_0xb01d('0x2')]},'uniqueid':{'type':Sequelize[_0xb01d('0x1')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0xb01d('0x2')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xb01d('0x1')]},'membername':{'type':Sequelize[_0xb01d('0x1')]}};
\ No newline at end of file
+var _0x87f1=['exports','INTEGER','STRING','DATE'];(function(_0x8fe9ad,_0x3f39e7){var _0x566d80=function(_0x18f4f0){while(--_0x18f4f0){_0x8fe9ad['push'](_0x8fe9ad['shift']());}};_0x566d80(++_0x3f39e7);}(_0x87f1,0x170));var _0x187f=function(_0x4466cf,_0x228291){_0x4466cf=_0x4466cf-0x0;var _0x38f607=_0x87f1[_0x4466cf];return _0x38f607;};'use strict';var Sequelize=require('sequelize');module[_0x187f('0x0')]={'state':{'type':Sequelize[_0x187f('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x187f('0x2')]},'scheduledat':{'type':Sequelize[_0x187f('0x3')]},'uniqueid':{'type':Sequelize[_0x187f('0x2')]},'starttime':{'type':Sequelize[_0x187f('0x3')]},'responsetime':{'type':Sequelize[_0x187f('0x3')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x187f('0x2')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x187f('0x2')]}};
\ No newline at end of file
index 0ea5b44..388458e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95f7=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./reportAgentPreview.attributes','define','ReportAgentPreview','report_agent_preview','lodash'];(function(_0x12a554,_0x3d7ef8){var _0x244ba0=function(_0x5eb5ff){while(--_0x5eb5ff){_0x12a554['push'](_0x12a554['shift']());}};_0x244ba0(++_0x3d7ef8);}(_0x95f7,0x14f));var _0x795f=function(_0x5dd5c4,_0x44917e){_0x5dd5c4=_0x5dd5c4-0x0;var _0xc18f49=_0x95f7[_0x5dd5c4];return _0xc18f49;};'use strict';var _=require(_0x795f('0x0'));var util=require('util');var logger=require(_0x795f('0x1'))(_0x795f('0x2'));var moment=require(_0x795f('0x3'));var BPromise=require(_0x795f('0x4'));var rp=require(_0x795f('0x5'));var fs=require('fs');var path=require(_0x795f('0x6'));var rimraf=require('rimraf');var config=require(_0x795f('0x7'));var attributes=require(_0x795f('0x8'));module['exports']=function(_0x27173d,_0x3e0bb8){return _0x27173d[_0x795f('0x9')](_0x795f('0xa'),attributes,{'tableName':_0x795f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x390c=['define','ReportAgentPreview','report_agent_preview','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./reportAgentPreview.attributes','exports'];(function(_0x4109de,_0x2c9204){var _0x4c9084=function(_0x165380){while(--_0x165380){_0x4109de['push'](_0x4109de['shift']());}};_0x4c9084(++_0x2c9204);}(_0x390c,0x1c5));var _0xc390=function(_0x29e3b0,_0x55a379){_0x29e3b0=_0x29e3b0-0x0;var _0x58236a=_0x390c[_0x29e3b0];return _0x58236a;};'use strict';var _=require(_0xc390('0x0'));var util=require(_0xc390('0x1'));var logger=require(_0xc390('0x2'))(_0xc390('0x3'));var moment=require(_0xc390('0x4'));var BPromise=require(_0xc390('0x5'));var rp=require(_0xc390('0x6'));var fs=require('fs');var path=require(_0xc390('0x7'));var rimraf=require(_0xc390('0x8'));var config=require(_0xc390('0x9'));var attributes=require(_0xc390('0xa'));module[_0xc390('0xb')]=function(_0x50efaa,_0x269416){return _0x50efaa[_0xc390('0xc')](_0xc390('0xd'),attributes,{'tableName':_0xc390('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5053306..9436b90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4aca=['jayson/promise','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateReportAgentPreview','ReportAgentPreview','raw','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x115ee9,_0x5d915f){var _0x1bc6c3=function(_0x23e7d2){while(--_0x23e7d2){_0x115ee9['push'](_0x115ee9['shift']());}};_0x1bc6c3(++_0x5d915f);}(_0x4aca,0x1dd));var _0xa4ac=function(_0x46f4ae,_0x358251){_0x46f4ae=_0x46f4ae-0x0;var _0x2ac4dc=_0x4aca[_0x46f4ae];return _0x2ac4dc;};'use strict';var _=require('lodash');var util=require(_0xa4ac('0x0'));var moment=require('moment');var BPromise=require(_0xa4ac('0x1'));var rs=require(_0xa4ac('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa4ac('0x3'))['db'];var utils=require(_0xa4ac('0x4'));var logger=require(_0xa4ac('0x5'))('rpc');var config=require(_0xa4ac('0x6'));var jayson=require(_0xa4ac('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x26ca6f,_0xb8ed61,_0x1b5380){return new BPromise(function(_0x3797b0,_0x40f045){return client['request'](_0x26ca6f,_0x1b5380)[_0xa4ac('0x8')](function(_0x22e01d){logger[_0xa4ac('0x9')](_0xa4ac('0xa'),_0xb8ed61,_0xa4ac('0xb'));logger[_0xa4ac('0xc')]('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0xb8ed61,_0xa4ac('0xb'),JSON[_0xa4ac('0xd')](_0x22e01d));if(_0x22e01d[_0xa4ac('0xe')]){if(_0x22e01d['error'][_0xa4ac('0xf')]===0x1f4){logger['error']('ReportAgentPreview,\x20%s,\x20%s',_0xb8ed61,_0x22e01d[_0xa4ac('0xe')][_0xa4ac('0x10')]);return _0x40f045(_0x22e01d['error'][_0xa4ac('0x10')]);}logger['error'](_0xa4ac('0xa'),_0xb8ed61,_0x22e01d[_0xa4ac('0xe')][_0xa4ac('0x10')]);return _0x3797b0(_0x22e01d['error'][_0xa4ac('0x10')]);}else{logger['info'](_0xa4ac('0xa'),_0xb8ed61,_0xa4ac('0xb'));_0x3797b0(_0x22e01d[_0xa4ac('0x11')]['message']);}})[_0xa4ac('0x12')](function(_0x410906){logger[_0xa4ac('0xe')](_0xa4ac('0xa'),_0xb8ed61,_0x410906);_0x40f045(_0x410906);});});}exports[_0xa4ac('0x13')]=function(_0x386c91){var _0x1a540b=this;return new Promise(function(_0x3fe71a,_0x47d15a){return db[_0xa4ac('0x14')]['create'](_0x386c91['body'],{'raw':_0x386c91['options']?_0x386c91['options'][_0xa4ac('0x15')]===undefined?!![]:![]:!![]})[_0xa4ac('0x8')](function(_0x5e878d){logger[_0xa4ac('0x9')](_0xa4ac('0x13'),_0x386c91);logger[_0xa4ac('0xc')](_0xa4ac('0x13'),_0x386c91,JSON['stringify'](_0x5e878d));_0x3fe71a(_0x5e878d);})[_0xa4ac('0x12')](function(_0x43e744){logger[_0xa4ac('0xe')](_0xa4ac('0x13'),_0x43e744[_0xa4ac('0x10')],_0x386c91);_0x47d15a(_0x1a540b[_0xa4ac('0xe')](0x1f4,_0x43e744[_0xa4ac('0x10')]));});});};
\ No newline at end of file
+var _0x2d05=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','ReportAgentPreview,\x20%s,\x20%s','message','result','CreateReportAgentPreview','ReportAgentPreview','create','body','raw','catch','lodash','util','moment','bluebird'];(function(_0x359c44,_0x262c1a){var _0x30ad47=function(_0xa2e86d){while(--_0xa2e86d){_0x359c44['push'](_0x359c44['shift']());}};_0x30ad47(++_0x262c1a);}(_0x2d05,0xdc));var _0x52d0=function(_0x52e1db,_0x5835f2){_0x52e1db=_0x52e1db-0x0;var _0x3bad22=_0x2d05[_0x52e1db];return _0x3bad22;};'use strict';var _=require(_0x52d0('0x0'));var util=require(_0x52d0('0x1'));var moment=require(_0x52d0('0x2'));var BPromise=require(_0x52d0('0x3'));var rs=require(_0x52d0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x52d0('0x5'))['db'];var utils=require(_0x52d0('0x6'));var logger=require(_0x52d0('0x7'))(_0x52d0('0x8'));var config=require(_0x52d0('0x9'));var jayson=require(_0x52d0('0xa'));var client=jayson[_0x52d0('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x160df9,_0x3e1513,_0x29b96b){return new BPromise(function(_0x358cf5,_0x349870){return client['request'](_0x160df9,_0x29b96b)[_0x52d0('0xc')](function(_0x511f64){logger[_0x52d0('0xd')]('ReportAgentPreview,\x20%s,\x20%s',_0x3e1513,'request\x20sent');logger[_0x52d0('0xe')](_0x52d0('0xf'),_0x3e1513,_0x52d0('0x10'),JSON[_0x52d0('0x11')](_0x511f64));if(_0x511f64[_0x52d0('0x12')]){if(_0x511f64[_0x52d0('0x12')]['code']===0x1f4){logger[_0x52d0('0x12')](_0x52d0('0x13'),_0x3e1513,_0x511f64[_0x52d0('0x12')][_0x52d0('0x14')]);return _0x349870(_0x511f64[_0x52d0('0x12')]['message']);}logger[_0x52d0('0x12')](_0x52d0('0x13'),_0x3e1513,_0x511f64[_0x52d0('0x12')][_0x52d0('0x14')]);return _0x358cf5(_0x511f64[_0x52d0('0x12')]['message']);}else{logger[_0x52d0('0xd')]('ReportAgentPreview,\x20%s,\x20%s',_0x3e1513,_0x52d0('0x10'));_0x358cf5(_0x511f64[_0x52d0('0x15')][_0x52d0('0x14')]);}})['catch'](function(_0x550130){logger[_0x52d0('0x12')](_0x52d0('0x13'),_0x3e1513,_0x550130);_0x349870(_0x550130);});});}exports[_0x52d0('0x16')]=function(_0xfd8362){var _0x2b0cc9=this;return new Promise(function(_0x6e82e0,_0x2fc556){return db[_0x52d0('0x17')][_0x52d0('0x18')](_0xfd8362[_0x52d0('0x19')],{'raw':_0xfd8362['options']?_0xfd8362['options'][_0x52d0('0x1a')]===undefined?!![]:![]:!![]})[_0x52d0('0xc')](function(_0x218ea1){logger['info'](_0x52d0('0x16'),_0xfd8362);logger[_0x52d0('0xe')]('CreateReportAgentPreview',_0xfd8362,JSON[_0x52d0('0x11')](_0x218ea1));_0x6e82e0(_0x218ea1);})[_0x52d0('0x1b')](function(_0x1a166c){logger[_0x52d0('0x12')](_0x52d0('0x16'),_0x1a166c[_0x52d0('0x14')],_0xfd8362);_0x2fc556(_0x2b0cc9[_0x52d0('0x12')](0x1f4,_0x1a166c[_0x52d0('0x14')]));});});};
\ No newline at end of file
index e674114..94610ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac03=['/whatsapp/queues/:id','agentNotify','exports','multer','util','path','express','Router','../../components/auth/service','./rpc.controller','get','/voice/channels','isAuthenticated','voiceChannels','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceQueues','/chat/queues','chatQueues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','/voice/queues/preview/:id','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','showVoiceQueues','/outbound/channels','outboundChannels','/agents','agents','put','/agents/:id/capacity','/telephones','telephones','/trunks','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues'];(function(_0x38b0ab,_0x2b7d14){var _0x51c38d=function(_0x5290cf){while(--_0x5290cf){_0x38b0ab['push'](_0x38b0ab['shift']());}};_0x51c38d(++_0x2b7d14);}(_0xac03,0x143));var _0x3ac0=function(_0x753873,_0x2fe366){_0x753873=_0x753873-0x0;var _0x2d8a98=_0xac03[_0x753873];return _0x2d8a98;};'use strict';var multer=require(_0x3ac0('0x0'));var util=require(_0x3ac0('0x1'));var path=require(_0x3ac0('0x2'));var express=require(_0x3ac0('0x3'));var router=express[_0x3ac0('0x4')]();var auth=require(_0x3ac0('0x5'));var controller=require(_0x3ac0('0x6'));router[_0x3ac0('0x7')](_0x3ac0('0x8'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0xa')]);router[_0x3ac0('0x7')](_0x3ac0('0xb'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0xc')]);router[_0x3ac0('0x7')](_0x3ac0('0xd'),auth[_0x3ac0('0x9')](),controller['voiceChannelStopMixMonitor']);router[_0x3ac0('0x7')]('/voice/queues',auth[_0x3ac0('0x9')](),controller[_0x3ac0('0xe')]);router['get'](_0x3ac0('0xf'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x10')]);router[_0x3ac0('0x7')]('/mail/queues',auth['isAuthenticated'](),controller[_0x3ac0('0x11')]);router[_0x3ac0('0x7')](_0x3ac0('0x12'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x13')]);router[_0x3ac0('0x7')](_0x3ac0('0x14'),auth[_0x3ac0('0x9')](),controller['openchannelQueues']);router[_0x3ac0('0x7')](_0x3ac0('0x15'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x16')]);router[_0x3ac0('0x7')](_0x3ac0('0x17'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x18')]);router[_0x3ac0('0x7')](_0x3ac0('0x19'),auth[_0x3ac0('0x9')](),controller['faxQueues']);router[_0x3ac0('0x7')](_0x3ac0('0x1a'),auth[_0x3ac0('0x9')](),controller['voiceQueuesPreview']);router['get'](_0x3ac0('0x1b'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x1c')]);router[_0x3ac0('0x7')](_0x3ac0('0x1d'),auth[_0x3ac0('0x9')](),controller['voiceQueuesChannel']);router['get']('/voice/queues/channels/:uniqueid/hangup',auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x1e')]);router['get'](_0x3ac0('0x1f'),auth['isAuthenticated'](),controller[_0x3ac0('0x20')]);router['get']('/voice/queues/:id',auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x21')]);router['put']('/voice/queues/:id',auth[_0x3ac0('0x9')](),controller['updateVoiceQueue']);router[_0x3ac0('0x7')]('/outbound',auth[_0x3ac0('0x9')](),controller['outbound']);router[_0x3ac0('0x7')](_0x3ac0('0x22'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x23')]);router[_0x3ac0('0x7')](_0x3ac0('0x24'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x25')]);router[_0x3ac0('0x26')](_0x3ac0('0x27'),auth[_0x3ac0('0x9')](),controller['agentCapacity']);router[_0x3ac0('0x7')](_0x3ac0('0x28'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x29')]);router[_0x3ac0('0x7')](_0x3ac0('0x2a'),auth[_0x3ac0('0x9')](),controller['trunks']);router[_0x3ac0('0x7')]('/campaigns',auth[_0x3ac0('0x9')](),controller['campaigns']);router[_0x3ac0('0x7')](_0x3ac0('0x2b'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x2c')]);router['get'](_0x3ac0('0x2d'),auth['isAuthenticated'](),controller[_0x3ac0('0x2e')]);router[_0x3ac0('0x7')](_0x3ac0('0x2f'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x30')]);router[_0x3ac0('0x7')]('/openchannel/queues/waitinginteractions',auth[_0x3ac0('0x9')](),controller['openchannelQueuesWaitingInteractions']);router['get'](_0x3ac0('0x31'),auth['isAuthenticated'](),controller[_0x3ac0('0x32')]);router[_0x3ac0('0x7')]('/sms/queues/waitinginteractions',auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x33')]);router['get'](_0x3ac0('0x34'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x35')]);router[_0x3ac0('0x7')](_0x3ac0('0x36'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x37')]);router[_0x3ac0('0x38')]('/mail/queues/:id/notify',auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x39')](_0x3ac0('0x3a')));router[_0x3ac0('0x7')](_0x3ac0('0x3b'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x3c')]);router[_0x3ac0('0x38')](_0x3ac0('0x3d'),auth[_0x3ac0('0x9')](),controller['queueNotify'](_0x3ac0('0x3e')));router[_0x3ac0('0x7')](_0x3ac0('0x3f'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x40')]);router[_0x3ac0('0x38')]('/fax/queues/:id/notify',auth[_0x3ac0('0x9')](),controller['queueNotify'](_0x3ac0('0x41')));router['get'](_0x3ac0('0x42'),auth['isAuthenticated'](),controller[_0x3ac0('0x43')]);router['post'](_0x3ac0('0x44'),auth['isAuthenticated'](),controller['queueNotify'](_0x3ac0('0x45')));router[_0x3ac0('0x7')]('/openchannel/queues/:id',auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x46')]);router[_0x3ac0('0x38')](_0x3ac0('0x47'),auth[_0x3ac0('0x9')](),controller['queueNotify'](_0x3ac0('0x48')));router[_0x3ac0('0x38')](_0x3ac0('0x49'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x39')](_0x3ac0('0x4a')));router['get'](_0x3ac0('0x4b'),auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x4c')]);router[_0x3ac0('0x7')](_0x3ac0('0x4d'),auth['isAuthenticated'](),controller['showWhatsappQueues']);router[_0x3ac0('0x38')]('/agents/:id/notify',auth[_0x3ac0('0x9')](),controller[_0x3ac0('0x4e')]);module[_0x3ac0('0x4f')]=router;
\ No newline at end of file
+var _0x63ad=['/mail/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelRedirect','showVoiceQueues','put','/voice/queues/:id','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones','/trunks','trunks','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','post','queueNotify','mail','/mail/queues/:id','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','/whatsapp/queues/:id','showWhatsappQueues','agentNotify','exports','multer','path','Router','../../components/auth/service','./rpc.controller','get','isAuthenticated','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','voiceQueues','/chat/queues','chatQueues'];(function(_0x2faddb,_0xc18b78){var _0x273c05=function(_0x1a3785){while(--_0x1a3785){_0x2faddb['push'](_0x2faddb['shift']());}};_0x273c05(++_0xc18b78);}(_0x63ad,0xe5));var _0xd63a=function(_0x3665a1,_0x1c7e4a){_0x3665a1=_0x3665a1-0x0;var _0x131e49=_0x63ad[_0x3665a1];return _0x131e49;};'use strict';var multer=require(_0xd63a('0x0'));var util=require('util');var path=require(_0xd63a('0x1'));var express=require('express');var router=express[_0xd63a('0x2')]();var auth=require(_0xd63a('0x3'));var controller=require(_0xd63a('0x4'));router[_0xd63a('0x5')]('/voice/channels',auth[_0xd63a('0x6')](),controller['voiceChannels']);router[_0xd63a('0x5')](_0xd63a('0x7'),auth['isAuthenticated'](),controller[_0xd63a('0x8')]);router['get'](_0xd63a('0x9'),auth[_0xd63a('0x6')](),controller[_0xd63a('0xa')]);router[_0xd63a('0x5')]('/voice/queues',auth['isAuthenticated'](),controller[_0xd63a('0xb')]);router[_0xd63a('0x5')](_0xd63a('0xc'),auth[_0xd63a('0x6')](),controller[_0xd63a('0xd')]);router[_0xd63a('0x5')](_0xd63a('0xe'),auth['isAuthenticated'](),controller[_0xd63a('0xf')]);router[_0xd63a('0x5')](_0xd63a('0x10'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x11')]);router[_0xd63a('0x5')](_0xd63a('0x12'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x13')]);router[_0xd63a('0x5')](_0xd63a('0x14'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x15')]);router[_0xd63a('0x5')](_0xd63a('0x16'),auth[_0xd63a('0x6')](),controller['whatsappQueues']);router[_0xd63a('0x5')]('/fax/queues',auth[_0xd63a('0x6')](),controller[_0xd63a('0x17')]);router[_0xd63a('0x5')](_0xd63a('0x18'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x19')]);router[_0xd63a('0x5')](_0xd63a('0x1a'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x1b')]);router[_0xd63a('0x5')](_0xd63a('0x1c'),auth[_0xd63a('0x6')](),controller['voiceQueuesChannel']);router['get'](_0xd63a('0x1d'),auth[_0xd63a('0x6')](),controller['voiceQueuesChannelHangup']);router['get']('/voice/queues/channels/:uniqueid/redirect/:exten',auth['isAuthenticated'](),controller[_0xd63a('0x1e')]);router['get']('/voice/queues/:id',auth['isAuthenticated'](),controller[_0xd63a('0x1f')]);router[_0xd63a('0x20')](_0xd63a('0x21'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x22')]);router[_0xd63a('0x5')](_0xd63a('0x23'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x24')]);router[_0xd63a('0x5')](_0xd63a('0x25'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x26')]);router['get'](_0xd63a('0x27'),auth['isAuthenticated'](),controller[_0xd63a('0x28')]);router[_0xd63a('0x20')](_0xd63a('0x29'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x2a')]);router[_0xd63a('0x5')](_0xd63a('0x2b'),auth[_0xd63a('0x6')](),controller['telephones']);router[_0xd63a('0x5')](_0xd63a('0x2c'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x2d')]);router[_0xd63a('0x5')]('/campaigns',auth[_0xd63a('0x6')](),controller[_0xd63a('0x2e')]);router[_0xd63a('0x5')](_0xd63a('0x2f'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x30')]);router[_0xd63a('0x5')](_0xd63a('0x31'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x32')]);router[_0xd63a('0x5')]('/mail/queues/waitinginteractions',auth[_0xd63a('0x6')](),controller[_0xd63a('0x33')]);router[_0xd63a('0x5')](_0xd63a('0x34'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x35')]);router['get'](_0xd63a('0x36'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x37')]);router['get'](_0xd63a('0x38'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x39')]);router[_0xd63a('0x5')]('/whatsapp/queues/waitinginteractions',auth[_0xd63a('0x6')](),controller['whatsappQueuesWaitingInteractions']);router[_0xd63a('0x5')]('/fax/queues/waitinginteractions',auth['isAuthenticated'](),controller[_0xd63a('0x3a')]);router[_0xd63a('0x3b')]('/mail/queues/:id/notify',auth[_0xd63a('0x6')](),controller[_0xd63a('0x3c')](_0xd63a('0x3d')));router[_0xd63a('0x5')](_0xd63a('0x3e'),auth[_0xd63a('0x6')](),controller['showMailQueues']);router[_0xd63a('0x3b')](_0xd63a('0x3f'),auth[_0xd63a('0x6')](),controller['queueNotify'](_0xd63a('0x40')));router[_0xd63a('0x5')](_0xd63a('0x41'),auth['isAuthenticated'](),controller[_0xd63a('0x42')]);router[_0xd63a('0x3b')]('/fax/queues/:id/notify',auth[_0xd63a('0x6')](),controller['queueNotify'](_0xd63a('0x43')));router[_0xd63a('0x5')](_0xd63a('0x44'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x45')]);router[_0xd63a('0x3b')](_0xd63a('0x46'),auth[_0xd63a('0x6')](),controller['queueNotify'](_0xd63a('0x47')));router[_0xd63a('0x5')]('/openchannel/queues/:id',auth[_0xd63a('0x6')](),controller['showOpenchannelQueues']);router[_0xd63a('0x3b')](_0xd63a('0x48'),auth['isAuthenticated'](),controller[_0xd63a('0x3c')](_0xd63a('0x49')));router[_0xd63a('0x3b')](_0xd63a('0x4a'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x3c')](_0xd63a('0x4b')));router[_0xd63a('0x5')](_0xd63a('0x4c'),auth[_0xd63a('0x6')](),controller['showSmsQueues']);router[_0xd63a('0x5')](_0xd63a('0x4d'),auth[_0xd63a('0x6')](),controller[_0xd63a('0x4e')]);router[_0xd63a('0x3b')]('/agents/:id/notify',auth['isAuthenticated'](),controller[_0xd63a('0x4f')]);module[_0xd63a('0x50')]=router;
\ No newline at end of file
index 004f2c6..c2143eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2eb2=['map','value','indexOf','filter','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','capitalize','chat','Website','Queue','\x20Queue\x20not\x20found','Message','findOne','messageId','Interaction','Account','update','queue','MessageId','From','QueueId','TransferReport','create','queueTransferTimeout','*,*,*,*','channel','InteractionId','Start','agentTransferTimeout','moment','lodash','util','../../mysqldb','../../config/logger','api','client','http','request','then','error','message','result','status','json','stack','name','isNil','find','rows','voiceChannels','VoiceChannels','query','catch','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','params','voiceQueues','VoiceQueues','showVoiceQueues','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','Agents','agentCapacity','interaction','user','hasOwnProperty','MemberReport','findAll','INTERACTION','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','findOrCreate','format','SIP/%s','interface','agent','internal','telephones','Telephones','trunks','Trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','OpenchannelQueues','showOpenchannelQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','showFaxQueues','FaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','type'];(function(_0x1395ad,_0x166eb3){var _0x2bc438=function(_0x3fb270){while(--_0x3fb270){_0x1395ad['push'](_0x1395ad['shift']());}};_0x2bc438(++_0x166eb3);}(_0x2eb2,0x19f));var _0x22eb=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x2eb2[_0x1e7b16];return _0x37fadc;};'use strict';var BPromise=require('bluebird');var moment=require(_0x22eb('0x0'));var _=require(_0x22eb('0x1'));var util=require(_0x22eb('0x2'));var db=require(_0x22eb('0x3'))['db'];var logger=require(_0x22eb('0x4'))(_0x22eb('0x5'));var jayson=require('jayson/promise');var amiClient=jayson[_0x22eb('0x6')]['http']({'port':0x232a});var mailClient=jayson['client'][_0x22eb('0x7')]({'port':0x232b});var routingClient=jayson[_0x22eb('0x6')][_0x22eb('0x7')]({'port':0x232c});function respondWithRpcPromise(_0x2a9850,_0x4539d0,_0x396806){return new BPromise(function(_0x33ddef,_0x3375d6){var _0x419601=_0x396806?_0x396806:amiClient;return _0x419601[_0x22eb('0x8')](_0x2a9850,_0x4539d0)[_0x22eb('0x9')](function(_0x3008e0){if(_0x3008e0['error']){if(_0x3008e0[_0x22eb('0xa')]['code']===0x1f4){return _0x3375d6(_0x3008e0['error'][_0x22eb('0xb')]);}return _0x33ddef(_0x3008e0['error'][_0x22eb('0xb')]);}else{_0x33ddef(_0x3008e0[_0x22eb('0xc')]);}})['catch'](function(_0x5068ea){_0x3375d6(_0x5068ea);});});}function respondWithResult(_0x1f286c,_0x189f05){_0x189f05=_0x189f05||0xc8;return function(_0x128d43){if(_0x128d43){return _0x1f286c[_0x22eb('0xd')](_0x189f05)[_0x22eb('0xe')](_0x128d43);}return _0x1f286c['sendStatus'](0x194);};}function handleError(_0x350ade,_0x53f14e){_0x53f14e=_0x53f14e||0x1f4;return function(_0x1f5089){logger['error'](_0x1f5089[_0x22eb('0xf')]);if(_0x1f5089[_0x22eb('0x10')]){delete _0x1f5089['name'];}_0x350ade['status'](_0x53f14e)['send'](_0x1f5089);};}function findById(_0x2ed8a7){return function(_0x5245fe){if(!_['isNil'](_0x2ed8a7)&&!_[_0x22eb('0x11')](_0x5245fe)&&!_['isNil'](_0x5245fe['rows'])){return _[_0x22eb('0x12')](_0x5245fe[_0x22eb('0x13')],function(_0x385bcb){return _0x385bcb['id']==_0x2ed8a7;});}return null;};}exports[_0x22eb('0x14')]=function(_0x3b0940,_0x4bc0a2){return respondWithRpcPromise(_0x22eb('0x15'),_0x3b0940[_0x22eb('0x16')])[_0x22eb('0x9')](respondWithResult(_0x4bc0a2,null))[_0x22eb('0x17')](handleError(_0x4bc0a2,null));};exports[_0x22eb('0x18')]=function(_0x517313,_0x2eb115){return respondWithRpcPromise(_0x22eb('0x19'),_[_0x22eb('0x1a')](_0x517313['query'],_0x517313['params']))[_0x22eb('0x9')](respondWithResult(_0x2eb115,null))[_0x22eb('0x17')](handleError(_0x2eb115,null));};exports[_0x22eb('0x1b')]=function(_0x44639a,_0x2d95f0){return respondWithRpcPromise(_0x22eb('0x1c'),_[_0x22eb('0x1a')](_0x44639a['query'],_0x44639a[_0x22eb('0x1d')]))[_0x22eb('0x9')](respondWithResult(_0x2d95f0,null))[_0x22eb('0x17')](handleError(_0x2d95f0,null));};exports[_0x22eb('0x1e')]=function(_0x420d4f,_0x4da252){return respondWithRpcPromise(_0x22eb('0x1f'),_0x420d4f[_0x22eb('0x16')])[_0x22eb('0x9')](respondWithResult(_0x4da252,null))['catch'](handleError(_0x4da252,null));};exports[_0x22eb('0x20')]=function(_0x259847,_0x4b409a){return respondWithRpcPromise(_0x22eb('0x1f'),_0x259847[_0x22eb('0x16')])[_0x22eb('0x9')](findById(_0x259847[_0x22eb('0x1d')]['id']))[_0x22eb('0x9')](respondWithResult(_0x4b409a,null))['catch'](handleError(_0x4b409a,null));};exports['updateVoiceQueue']=function(_0x2a950e,_0x25e5bc){return respondWithRpcPromise(_0x22eb('0x21'),_[_0x22eb('0x1a')](_0x2a950e[_0x22eb('0x22')],_0x2a950e[_0x22eb('0x1d')]))[_0x22eb('0x9')](respondWithResult(_0x25e5bc,null))[_0x22eb('0x17')](handleError(_0x25e5bc,null));};exports[_0x22eb('0x23')]=function(_0x39cec1,_0x24e9dc){return respondWithRpcPromise(_0x22eb('0x24'),_['merge'](_0x39cec1[_0x22eb('0x16')],_0x39cec1['params']))[_0x22eb('0x9')](respondWithResult(_0x24e9dc,null))[_0x22eb('0x17')](handleError(_0x24e9dc,null));};exports[_0x22eb('0x25')]=function(_0x11199f,_0x351ed8){return respondWithRpcPromise(_0x22eb('0x26'),_0x11199f[_0x22eb('0x16')])[_0x22eb('0x9')](respondWithResult(_0x351ed8,null))[_0x22eb('0x17')](handleError(_0x351ed8,null));};exports[_0x22eb('0x27')]=function(_0x509bb7,_0x49259f){return respondWithRpcPromise(_0x22eb('0x28'),_['merge'](_0x509bb7['query'],_0x509bb7[_0x22eb('0x1d')]))[_0x22eb('0x9')](respondWithResult(_0x49259f,null))[_0x22eb('0x17')](handleError(_0x49259f,null));};exports[_0x22eb('0x29')]=function(_0x45c53e,_0x332e9a){return respondWithRpcPromise(_0x22eb('0x2a'),_[_0x22eb('0x1a')](_0x45c53e[_0x22eb('0x16')],_0x45c53e[_0x22eb('0x1d')]))['then'](respondWithResult(_0x332e9a,null))[_0x22eb('0x17')](handleError(_0x332e9a,null));};exports['voiceQueuesChannelRedirect']=function(_0x5c43e7,_0x35a264){return respondWithRpcPromise(_0x22eb('0x2b'),_['merge'](_0x5c43e7[_0x22eb('0x16')],_0x5c43e7[_0x22eb('0x1d')]))[_0x22eb('0x9')](respondWithResult(_0x35a264,null))[_0x22eb('0x17')](handleError(_0x35a264,null));};exports[_0x22eb('0x2c')]=function(_0x574555,_0x25f140){return respondWithRpcPromise(_0x22eb('0x2d'),_0x574555['query'])[_0x22eb('0x9')](respondWithResult(_0x25f140,null))[_0x22eb('0x17')](handleError(_0x25f140,null));};exports[_0x22eb('0x2e')]=function(_0x2cc77c,_0x9353f1){return respondWithRpcPromise('OutboundChannels',_0x2cc77c['query'])[_0x22eb('0x9')](respondWithResult(_0x9353f1,null))[_0x22eb('0x17')](handleError(_0x9353f1,null));};exports['agents']=function(_0x595d76,_0x2e2a0c){var _0x46c6a1;return respondWithRpcPromise('Agents',_0x595d76[_0x22eb('0x16')])[_0x22eb('0x9')](function(_0x382163){_0x46c6a1=_0x382163;return respondWithRpcPromise(_0x22eb('0x2f'),_0x595d76[_0x22eb('0x16')],routingClient);})[_0x22eb('0x9')](function(_0x513b65){return _[_0x22eb('0x1a')]({},_0x513b65,_0x46c6a1);})[_0x22eb('0x9')](respondWithResult(_0x2e2a0c,null))['catch'](handleError(_0x2e2a0c,null));};exports[_0x22eb('0x30')]=function(_0x44d39f,_0x204092){if(_0x44d39f[_0x22eb('0x22')]&&_0x44d39f[_0x22eb('0x22')][_0x22eb('0x31')]&&_0x44d39f[_0x22eb('0x32')]&&_0x44d39f[_0x22eb('0x32')][_0x22eb('0x10')]){for(var _0x82ace8 in _0x44d39f[_0x22eb('0x22')][_0x22eb('0x31')]){if(_0x44d39f[_0x22eb('0x22')][_0x22eb('0x31')][_0x22eb('0x33')](_0x82ace8)){db[_0x22eb('0x34')][_0x22eb('0x35')]({'where':{'channel':_0x82ace8,'membername':_0x44d39f[_0x22eb('0x32')]['name'],'type':_0x22eb('0x36'),'exitAt':null,'uniqueid':_0x44d39f[_0x22eb('0x22')]['interaction'][_0x82ace8]&&_0x44d39f[_0x22eb('0x22')][_0x22eb('0x31')][_0x82ace8]['length']?{'$notIn':_0x44d39f['body']['interaction'][_0x82ace8]}:{'$ne':null}}})[_0x22eb('0x9')](function(_0x1efc65){var _0x4e4c6d=moment()['format'](_0x22eb('0x37'));for(var _0x43f771=0x0,_0x326b24=_0x1efc65[_0x22eb('0x38')];_0x43f771<_0x326b24;_0x43f771+=0x1){_0x1efc65[_0x43f771][_0x22eb('0x39')]({'exitAt':_0x4e4c6d});}});for(var _0x3b30a3=0x0;_0x3b30a3<_0x44d39f[_0x22eb('0x22')][_0x22eb('0x31')][_0x82ace8]['length'];_0x3b30a3+=0x1){db['MemberReport'][_0x22eb('0x3a')]({'where':{'channel':_0x82ace8,'membername':_0x44d39f['user'][_0x22eb('0x10')],'type':'INTERACTION','uniqueid':_0x44d39f[_0x22eb('0x22')]['interaction'][_0x82ace8][_0x3b30a3],'exitAt':null},'defaults':{'channel':_0x82ace8,'membername':_0x44d39f['user']['name'],'interface':_['isNil'](_0x44d39f[_0x22eb('0x32')]['interface'])?util[_0x22eb('0x3b')](_0x22eb('0x3c'),_0x44d39f['user'][_0x22eb('0x10')]):_0x44d39f['user'][_0x22eb('0x3d')],'type':_0x22eb('0x36'),'enterAt':moment()[_0x22eb('0x3b')](_0x22eb('0x37')),'role':_0x22eb('0x3e'),'internal':_0x44d39f[_0x22eb('0x32')][_0x22eb('0x3f')],'uniqueid':_0x44d39f[_0x22eb('0x22')][_0x22eb('0x31')][_0x82ace8][_0x3b30a3]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x44d39f[_0x22eb('0x1d')]['id'],'capacity':_0x44d39f[_0x22eb('0x22')]['capacity']},routingClient)[_0x22eb('0x9')](respondWithResult(_0x204092,null))[_0x22eb('0x17')](handleError(_0x204092,null));};exports[_0x22eb('0x40')]=function(_0x31216f,_0x4fee5c){return respondWithRpcPromise(_0x22eb('0x41'),_0x31216f[_0x22eb('0x16')])[_0x22eb('0x9')](respondWithResult(_0x4fee5c,null))[_0x22eb('0x17')](handleError(_0x4fee5c,null));};exports[_0x22eb('0x42')]=function(_0x10393b,_0x5effca){return respondWithRpcPromise(_0x22eb('0x43'),_0x10393b['query'])[_0x22eb('0x9')](respondWithResult(_0x5effca,null))['catch'](handleError(_0x5effca,null));};exports[_0x22eb('0x44')]=function(_0x254b53,_0x4028ef){return respondWithRpcPromise(_0x22eb('0x45'),_0x254b53[_0x22eb('0x16')])['then'](respondWithResult(_0x4028ef,null))['catch'](handleError(_0x4028ef,null));};exports[_0x22eb('0x46')]=function(_0x8e3864,_0x490110){return respondWithRpcPromise(_0x22eb('0x47'),_0x8e3864[_0x22eb('0x16')],routingClient)[_0x22eb('0x9')](respondWithResult(_0x490110,null))[_0x22eb('0x17')](handleError(_0x490110,null));};exports[_0x22eb('0x48')]=function(_0x27756b,_0x3a8588){return respondWithRpcPromise(_0x22eb('0x47'),_0x27756b[_0x22eb('0x16')],routingClient)[_0x22eb('0x9')](findById(_0x27756b[_0x22eb('0x1d')]['id']))['then'](respondWithResult(_0x3a8588,null))[_0x22eb('0x17')](handleError(_0x3a8588,null));};exports[_0x22eb('0x49')]=function(_0x3764d4,_0x2562a1){return respondWithRpcPromise(_0x22eb('0x4a'),_0x3764d4[_0x22eb('0x16')],routingClient)[_0x22eb('0x9')](respondWithResult(_0x2562a1,null))[_0x22eb('0x17')](handleError(_0x2562a1,null));};exports[_0x22eb('0x4b')]=function(_0x9f8465,_0x3e9ab5){return respondWithRpcPromise(_0x22eb('0x4a'),_0x9f8465[_0x22eb('0x16')],routingClient)[_0x22eb('0x9')](findById(_0x9f8465['params']['id']))['then'](respondWithResult(_0x3e9ab5,null))[_0x22eb('0x17')](handleError(_0x3e9ab5,null));};exports[_0x22eb('0x4c')]=function(_0x165e79,_0x38c02f){return respondWithRpcPromise(_0x22eb('0x4d'),_0x165e79['query'],mailClient)[_0x22eb('0x9')](respondWithResult(_0x38c02f,null))[_0x22eb('0x17')](handleError(_0x38c02f,null));};exports['openchannelQueues']=function(_0x485408,_0x341a1c){return respondWithRpcPromise(_0x22eb('0x4e'),_0x485408[_0x22eb('0x16')],routingClient)[_0x22eb('0x9')](respondWithResult(_0x341a1c,null))[_0x22eb('0x17')](handleError(_0x341a1c,null));};exports[_0x22eb('0x4f')]=function(_0x16099e,_0x22104f){return respondWithRpcPromise(_0x22eb('0x4e'),_0x16099e[_0x22eb('0x16')],routingClient)[_0x22eb('0x9')](findById(_0x16099e[_0x22eb('0x1d')]['id']))[_0x22eb('0x9')](respondWithResult(_0x22104f,null))[_0x22eb('0x17')](handleError(_0x22104f,null));};exports['smsQueues']=function(_0x29dd8b,_0x46ba3b){return respondWithRpcPromise(_0x22eb('0x50'),_0x29dd8b['query'],routingClient)[_0x22eb('0x9')](respondWithResult(_0x46ba3b,null))['catch'](handleError(_0x46ba3b,null));};exports[_0x22eb('0x51')]=function(_0x5347b4,_0x1919d0){return respondWithRpcPromise(_0x22eb('0x50'),_0x5347b4['query'],routingClient)[_0x22eb('0x9')](findById(_0x5347b4[_0x22eb('0x1d')]['id']))['then'](respondWithResult(_0x1919d0,null))['catch'](handleError(_0x1919d0,null));};exports[_0x22eb('0x52')]=function(_0x3073b1,_0x1984f0){return respondWithRpcPromise(_0x22eb('0x53'),_0x3073b1[_0x22eb('0x16')],routingClient)[_0x22eb('0x9')](respondWithResult(_0x1984f0,null))['catch'](handleError(_0x1984f0,null));};exports[_0x22eb('0x54')]=function(_0x5d035b,_0x5f4ea3){return respondWithRpcPromise(_0x22eb('0x53'),_0x5d035b[_0x22eb('0x16')],routingClient)[_0x22eb('0x9')](findById(_0x5d035b[_0x22eb('0x1d')]['id']))[_0x22eb('0x9')](respondWithResult(_0x5f4ea3,null))[_0x22eb('0x17')](handleError(_0x5f4ea3,null));};exports[_0x22eb('0x55')]=function(_0x109f7f,_0x50d914){return respondWithRpcPromise('FaxQueues',_0x109f7f[_0x22eb('0x16')],routingClient)[_0x22eb('0x9')](respondWithResult(_0x50d914,null))['catch'](handleError(_0x50d914,null));};exports[_0x22eb('0x56')]=function(_0x3f7405,_0x25f1b2){return respondWithRpcPromise(_0x22eb('0x57'),_0x3f7405[_0x22eb('0x16')],routingClient)[_0x22eb('0x9')](findById(_0x3f7405['params']['id']))[_0x22eb('0x9')](respondWithResult(_0x25f1b2,null))[_0x22eb('0x17')](handleError(_0x25f1b2,null));};exports[_0x22eb('0x58')]=function(_0x5e46b0,_0x4fcc2c){return respondWithRpcPromise(_0x22eb('0x59'),_0x5e46b0[_0x22eb('0x16')])[_0x22eb('0x9')](respondWithResult(_0x4fcc2c,null))['catch'](handleError(_0x4fcc2c,null));};exports[_0x22eb('0x5a')]=function(_0x4b6cf3,_0x1a305d){return respondWithRpcPromise(_0x22eb('0x5b'),_0x4b6cf3[_0x22eb('0x16')],routingClient)[_0x22eb('0x9')](respondWithResult(_0x1a305d,null))['catch'](handleError(_0x1a305d,null));};exports[_0x22eb('0x5c')]=function(_0x2e35b0,_0x304492){return respondWithRpcPromise(_0x22eb('0x5d'),_0x2e35b0[_0x22eb('0x16')],routingClient)[_0x22eb('0x9')](respondWithResult(_0x304492,null))[_0x22eb('0x17')](handleError(_0x304492,null));};exports[_0x22eb('0x5e')]=function(_0x47865e,_0x1c5b0b){return respondWithRpcPromise(_0x22eb('0x5f'),_0x47865e['query'],routingClient)[_0x22eb('0x9')](respondWithResult(_0x1c5b0b,null))[_0x22eb('0x17')](handleError(_0x1c5b0b,null));};exports['openchannelQueuesIdWaitingInteractions']=function(_0x5cc383,_0x51d9f4){return respondWithRpcPromise(_0x22eb('0x5f'),_0x5cc383[_0x22eb('0x16')],routingClient)['then'](function(_0x10726f){if(_0x5cc383[_0x22eb('0x16')][_0x22eb('0x60')]!==undefined){var _0x41c50e=_(_0x10726f[_0x22eb('0x13')])['filter']([_0x5cc383['query'][_0x22eb('0x60')],_0x5cc383[_0x22eb('0x1d')]['id']])[_0x22eb('0x61')]('queue_id')['uniq']()[_0x22eb('0x62')]();return _0x10726f['rows']['filter'](function(_0x3568bc){return _0x41c50e[_0x22eb('0x63')](_0x3568bc['queue_id'])>-0x1;});}else{return _0x10726f['rows'][_0x22eb('0x64')](function(_0x2dd41a){return _0x2dd41a['queue_id']===parseInt(_0x5cc383[_0x22eb('0x1d')]['id']);});}})[_0x22eb('0x9')](respondWithResult(_0x51d9f4,null))[_0x22eb('0x17')](handleError(_0x51d9f4,null));};exports['smsQueuesWaitingInteractions']=function(_0x464f4f,_0x26fb52){return respondWithRpcPromise(_0x22eb('0x65'),_0x464f4f[_0x22eb('0x16')],routingClient)[_0x22eb('0x9')](respondWithResult(_0x26fb52,null))['catch'](handleError(_0x26fb52,null));};exports[_0x22eb('0x66')]=function(_0x2ecc24,_0x3f429b){return respondWithRpcPromise('WhatsappQueuesWaitingInteractions',_0x2ecc24['query'],routingClient)[_0x22eb('0x9')](respondWithResult(_0x3f429b,null))[_0x22eb('0x17')](handleError(_0x3f429b,null));};exports[_0x22eb('0x67')]=function(_0x557c03,_0x215472){return respondWithRpcPromise(_0x22eb('0x68'),_0x557c03[_0x22eb('0x16')],routingClient)['then'](respondWithResult(_0x215472,null))[_0x22eb('0x17')](handleError(_0x215472,null));};exports['queueNotify']=function(_0x532a59){return function(_0x222616,_0x1e541f){var _0x1057f2,_0x49f362;var _0x3fc402=_[_0x22eb('0x69')](_0x532a59);var _0x2d422b=_0x532a59===_0x22eb('0x6a')?_0x22eb('0x6b'):'Account';return db[_0x3fc402+_0x22eb('0x6c')]['findOne']({'raw':!![],'where':{'id':_0x222616[_0x22eb('0x1d')]['id']}})[_0x22eb('0x9')](function(_0x37d7c6){if(_['isNil'](_0x37d7c6)){throw new Error(_0x3fc402+_0x22eb('0x6d'));}_0x1057f2=_0x37d7c6;return db[_0x3fc402+_0x22eb('0x6e')][_0x22eb('0x6f')]({'where':{'id':_0x222616[_0x22eb('0x22')][_0x22eb('0x70')]},'include':[{'model':db[_0x3fc402+_0x22eb('0x71')],'as':_0x22eb('0x71')},{'model':db[_0x3fc402+_0x2d422b],'as':_0x22eb('0x72')}]});})[_0x22eb('0x9')](function(_0x42d6fa){if(_[_0x22eb('0x11')](_0x42d6fa)){throw new Error(_0x3fc402+'\x20Message\x20not\x20found');}_0x49f362=_0x42d6fa;return _0x42d6fa[_0x22eb('0x73')]({'read':0x0,'readAt':null,'UserId':null});})[_0x22eb('0x9')](function(){var _0x40999d={'uniqueid':_0x532a59+'.'+_0x49f362['id']+'.'+_0x49f362[_0x22eb('0x71')]['id'],'FromUserId':_0x222616['user']['id'],'type':_0x22eb('0x74')};_0x40999d[_0x3fc402+_0x22eb('0x75')]=_0x49f362['id'];_0x40999d[_0x3fc402+'InteractionId']=_0x49f362[_0x22eb('0x71')]['id'];_0x40999d[_0x22eb('0x76')+_0x3fc402+_0x2d422b+'Id']=_0x49f362[_0x22eb('0x72')]['id'];_0x40999d['To'+_0x3fc402+_0x22eb('0x77')]=_0x1057f2['id'];return db[_0x3fc402+_0x22eb('0x78')][_0x22eb('0x79')](_0x40999d);})[_0x22eb('0x9')](function(){return respondWithRpcPromise('Start',{'channel':_0x532a59,'interaction':_0x49f362[_0x22eb('0x71')],'message':_0x49f362,'account':_0x49f362[_0x22eb('0x72')],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x1057f2['name']+','+(_0x49f362[_0x22eb('0x72')][_0x22eb('0x7a')]||0x12c),'interval':_0x22eb('0x7b')}]},routingClient);})[_0x22eb('0x9')](respondWithResult(_0x1e541f,null))[_0x22eb('0x17')](handleError(_0x1e541f,null));};};exports['agentNotify']=function(_0x4e6fa6,_0x41fa99){var _0x18abf4,_0x5cf5e5;if(_[_0x22eb('0x11')](_0x4e6fa6[_0x22eb('0x22')][_0x22eb('0x7c')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x448fea=_0x4e6fa6[_0x22eb('0x22')][_0x22eb('0x7c')];var _0x402c2c=_[_0x22eb('0x69')](_0x448fea);var _0x195f58=_0x448fea===_0x22eb('0x6a')?_0x22eb('0x6b'):'Account';return db['User']['findOne']({'raw':!![],'where':{'id':_0x4e6fa6[_0x22eb('0x1d')]['id'],'role':'agent'}})['then'](function(_0x4170a5){if(_[_0x22eb('0x11')](_0x4170a5)){throw new Error('Agent\x20not\x20found');}_0x18abf4=_0x4170a5;return db[_0x402c2c+_0x22eb('0x6e')][_0x22eb('0x6f')]({'where':{'id':_0x4e6fa6[_0x22eb('0x22')][_0x22eb('0x70')]},'include':[{'model':db[_0x402c2c+'Interaction'],'as':_0x22eb('0x71')},{'model':db[_0x402c2c+_0x195f58],'as':_0x22eb('0x72')}]});})[_0x22eb('0x9')](function(_0x536f29){if(_['isNil'](_0x536f29)){throw new Error(_0x402c2c+'\x20Message\x20not\x20found');}_0x5cf5e5=_0x536f29;return _0x536f29[_0x22eb('0x73')]({'read':0x0,'readAt':null,'UserId':null});})[_0x22eb('0x9')](function(){var _0x48fa11={'uniqueid':_0x448fea+'.'+_0x5cf5e5['id']+'.'+_0x5cf5e5['Interaction']['id'],'FromUserId':_0x4e6fa6[_0x22eb('0x32')]['id'],'type':'queue','ToUserId':_0x18abf4['id']};_0x48fa11[_0x402c2c+'MessageId']=_0x5cf5e5['id'];_0x48fa11[_0x402c2c+_0x22eb('0x7d')]=_0x5cf5e5[_0x22eb('0x71')]['id'];_0x48fa11['From'+_0x402c2c+_0x195f58+'Id']=_0x5cf5e5['Account']['id'];return db[_0x402c2c+_0x22eb('0x78')][_0x22eb('0x79')](_0x48fa11);})[_0x22eb('0x9')](function(){return respondWithRpcPromise(_0x22eb('0x7e'),{'channel':_0x448fea,'interaction':_0x5cf5e5[_0x22eb('0x71')],'message':_0x5cf5e5,'account':_0x5cf5e5['Account'],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x18abf4[_0x22eb('0x10')]+','+(_0x5cf5e5[_0x22eb('0x72')][_0x22eb('0x7f')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0x22eb('0x9')](respondWithResult(_0x41fa99,null))['catch'](handleError(_0x41fa99,null));};
\ No newline at end of file
+var _0x425d=['http','request','then','error','code','message','result','catch','status','sendStatus','stack','name','isNil','rows','find','query','merge','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','VoiceQueuesChannelRedirect','outboundChannels','agents','Agents','agentCapacity','body','interaction','user','MemberReport','length','format','updateAttributes','findOrCreate','INTERACTION','interface','YYYY-MM-DD\x20HH:mm:ss','agent','internal','AgentCapacity','capacity','Telephones','trunks','campaigns','Campaigns','ChatQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','showOpenchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','OpenchannelQueuesWaitingInteractions','filter','map','queue_id','uniq','indexOf','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','findOne','Message','messageId','Interaction','\x20Message\x20not\x20found','MessageId','InteractionId','From','QueueId','TransferReport','Start','queue','queueTransferTimeout','*,*,*,*','agentNotify','Channel\x20field\x20is\x20mandatory','channel','User','update','agentTransferTimeout','bluebird','lodash','util','../../mysqldb','../../config/logger','api','jayson/promise','client'];(function(_0x4a7668,_0x34e332){var _0x28195a=function(_0x124d1c){while(--_0x124d1c){_0x4a7668['push'](_0x4a7668['shift']());}};_0x28195a(++_0x34e332);}(_0x425d,0x1e0));var _0xd425=function(_0xedea6a,_0x23fa84){_0xedea6a=_0xedea6a-0x0;var _0x3bc2f8=_0x425d[_0xedea6a];return _0x3bc2f8;};'use strict';var BPromise=require(_0xd425('0x0'));var moment=require('moment');var _=require(_0xd425('0x1'));var util=require(_0xd425('0x2'));var db=require(_0xd425('0x3'))['db'];var logger=require(_0xd425('0x4'))(_0xd425('0x5'));var jayson=require(_0xd425('0x6'));var amiClient=jayson[_0xd425('0x7')]['http']({'port':0x232a});var mailClient=jayson[_0xd425('0x7')][_0xd425('0x8')]({'port':0x232b});var routingClient=jayson[_0xd425('0x7')][_0xd425('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x1d97d9,_0x1d2ed0,_0x50b061){return new BPromise(function(_0xb6ba8e,_0x374c3d){var _0x262b02=_0x50b061?_0x50b061:amiClient;return _0x262b02[_0xd425('0x9')](_0x1d97d9,_0x1d2ed0)[_0xd425('0xa')](function(_0x2beb20){if(_0x2beb20[_0xd425('0xb')]){if(_0x2beb20[_0xd425('0xb')][_0xd425('0xc')]===0x1f4){return _0x374c3d(_0x2beb20[_0xd425('0xb')][_0xd425('0xd')]);}return _0xb6ba8e(_0x2beb20[_0xd425('0xb')][_0xd425('0xd')]);}else{_0xb6ba8e(_0x2beb20[_0xd425('0xe')]);}})[_0xd425('0xf')](function(_0x2385a5){_0x374c3d(_0x2385a5);});});}function respondWithResult(_0x9bb611,_0x3cacf7){_0x3cacf7=_0x3cacf7||0xc8;return function(_0x3b5de8){if(_0x3b5de8){return _0x9bb611[_0xd425('0x10')](_0x3cacf7)['json'](_0x3b5de8);}return _0x9bb611[_0xd425('0x11')](0x194);};}function handleError(_0x17a498,_0x336dc3){_0x336dc3=_0x336dc3||0x1f4;return function(_0x5d3d60){logger[_0xd425('0xb')](_0x5d3d60[_0xd425('0x12')]);if(_0x5d3d60[_0xd425('0x13')]){delete _0x5d3d60[_0xd425('0x13')];}_0x17a498[_0xd425('0x10')](_0x336dc3)['send'](_0x5d3d60);};}function findById(_0x278626){return function(_0x471267){if(!_[_0xd425('0x14')](_0x278626)&&!_[_0xd425('0x14')](_0x471267)&&!_['isNil'](_0x471267[_0xd425('0x15')])){return _[_0xd425('0x16')](_0x471267[_0xd425('0x15')],function(_0x1155bc){return _0x1155bc['id']==_0x278626;});}return null;};}exports['voiceChannels']=function(_0x58a0c1,_0x5debc3){return respondWithRpcPromise('VoiceChannels',_0x58a0c1[_0xd425('0x17')])[_0xd425('0xa')](respondWithResult(_0x5debc3,null))[_0xd425('0xf')](handleError(_0x5debc3,null));};exports['voiceChannelMixMonitor']=function(_0x355af0,_0x7e982e){return respondWithRpcPromise('VoiceChannelMixMonitor',_[_0xd425('0x18')](_0x355af0[_0xd425('0x17')],_0x355af0[_0xd425('0x19')]))[_0xd425('0xa')](respondWithResult(_0x7e982e,null))[_0xd425('0xf')](handleError(_0x7e982e,null));};exports[_0xd425('0x1a')]=function(_0x2480a0,_0x3500bb){return respondWithRpcPromise(_0xd425('0x1b'),_[_0xd425('0x18')](_0x2480a0[_0xd425('0x17')],_0x2480a0[_0xd425('0x19')]))['then'](respondWithResult(_0x3500bb,null))[_0xd425('0xf')](handleError(_0x3500bb,null));};exports[_0xd425('0x1c')]=function(_0x398985,_0x1908a5){return respondWithRpcPromise(_0xd425('0x1d'),_0x398985[_0xd425('0x17')])[_0xd425('0xa')](respondWithResult(_0x1908a5,null))['catch'](handleError(_0x1908a5,null));};exports[_0xd425('0x1e')]=function(_0x177de2,_0x1d8861){return respondWithRpcPromise('VoiceQueues',_0x177de2[_0xd425('0x17')])[_0xd425('0xa')](findById(_0x177de2[_0xd425('0x19')]['id']))[_0xd425('0xa')](respondWithResult(_0x1d8861,null))[_0xd425('0xf')](handleError(_0x1d8861,null));};exports[_0xd425('0x1f')]=function(_0x2fd17a,_0x37b63c){return respondWithRpcPromise(_0xd425('0x20'),_[_0xd425('0x18')](_0x2fd17a['body'],_0x2fd17a[_0xd425('0x19')]))[_0xd425('0xa')](respondWithResult(_0x37b63c,null))[_0xd425('0xf')](handleError(_0x37b63c,null));};exports[_0xd425('0x21')]=function(_0x3275b1,_0x1abf33){return respondWithRpcPromise(_0xd425('0x22'),_[_0xd425('0x18')](_0x3275b1[_0xd425('0x17')],_0x3275b1[_0xd425('0x19')]))[_0xd425('0xa')](respondWithResult(_0x1abf33,null))['catch'](handleError(_0x1abf33,null));};exports[_0xd425('0x23')]=function(_0x2a2a9b,_0x3120a4){return respondWithRpcPromise(_0xd425('0x24'),_0x2a2a9b[_0xd425('0x17')])['then'](respondWithResult(_0x3120a4,null))[_0xd425('0xf')](handleError(_0x3120a4,null));};exports[_0xd425('0x25')]=function(_0x4cfcd1,_0x574962){return respondWithRpcPromise('VoiceQueuesChannel',_[_0xd425('0x18')](_0x4cfcd1[_0xd425('0x17')],_0x4cfcd1[_0xd425('0x19')]))[_0xd425('0xa')](respondWithResult(_0x574962,null))['catch'](handleError(_0x574962,null));};exports[_0xd425('0x26')]=function(_0x1d4414,_0x30a9dc){return respondWithRpcPromise(_0xd425('0x27'),_[_0xd425('0x18')](_0x1d4414[_0xd425('0x17')],_0x1d4414[_0xd425('0x19')]))['then'](respondWithResult(_0x30a9dc,null))[_0xd425('0xf')](handleError(_0x30a9dc,null));};exports['voiceQueuesChannelRedirect']=function(_0x22df81,_0x29cca9){return respondWithRpcPromise(_0xd425('0x28'),_['merge'](_0x22df81[_0xd425('0x17')],_0x22df81[_0xd425('0x19')]))[_0xd425('0xa')](respondWithResult(_0x29cca9,null))[_0xd425('0xf')](handleError(_0x29cca9,null));};exports['outbound']=function(_0x1d38fa,_0x3cf540){return respondWithRpcPromise('Outbound',_0x1d38fa['query'])['then'](respondWithResult(_0x3cf540,null))[_0xd425('0xf')](handleError(_0x3cf540,null));};exports[_0xd425('0x29')]=function(_0x1f30c1,_0x588688){return respondWithRpcPromise('OutboundChannels',_0x1f30c1['query'])[_0xd425('0xa')](respondWithResult(_0x588688,null))[_0xd425('0xf')](handleError(_0x588688,null));};exports[_0xd425('0x2a')]=function(_0x1d5017,_0xa9fd7c){var _0x14f3be;return respondWithRpcPromise(_0xd425('0x2b'),_0x1d5017['query'])[_0xd425('0xa')](function(_0x3c88a8){_0x14f3be=_0x3c88a8;return respondWithRpcPromise(_0xd425('0x2b'),_0x1d5017['query'],routingClient);})[_0xd425('0xa')](function(_0x2dffc7){return _[_0xd425('0x18')]({},_0x2dffc7,_0x14f3be);})['then'](respondWithResult(_0xa9fd7c,null))[_0xd425('0xf')](handleError(_0xa9fd7c,null));};exports[_0xd425('0x2c')]=function(_0x1c5ba6,_0x2d7a2f){if(_0x1c5ba6['body']&&_0x1c5ba6[_0xd425('0x2d')][_0xd425('0x2e')]&&_0x1c5ba6[_0xd425('0x2f')]&&_0x1c5ba6[_0xd425('0x2f')][_0xd425('0x13')]){for(var _0x2f6bf7 in _0x1c5ba6[_0xd425('0x2d')]['interaction']){if(_0x1c5ba6[_0xd425('0x2d')][_0xd425('0x2e')]['hasOwnProperty'](_0x2f6bf7)){db[_0xd425('0x30')]['findAll']({'where':{'channel':_0x2f6bf7,'membername':_0x1c5ba6['user'][_0xd425('0x13')],'type':'INTERACTION','exitAt':null,'uniqueid':_0x1c5ba6[_0xd425('0x2d')]['interaction'][_0x2f6bf7]&&_0x1c5ba6[_0xd425('0x2d')][_0xd425('0x2e')][_0x2f6bf7][_0xd425('0x31')]?{'$notIn':_0x1c5ba6[_0xd425('0x2d')][_0xd425('0x2e')][_0x2f6bf7]}:{'$ne':null}}})['then'](function(_0x2e4b21){var _0x5f3cfd=moment()[_0xd425('0x32')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x78ed9b=0x0,_0x16f61c=_0x2e4b21[_0xd425('0x31')];_0x78ed9b<_0x16f61c;_0x78ed9b+=0x1){_0x2e4b21[_0x78ed9b][_0xd425('0x33')]({'exitAt':_0x5f3cfd});}});for(var _0x624543=0x0;_0x624543<_0x1c5ba6['body'][_0xd425('0x2e')][_0x2f6bf7][_0xd425('0x31')];_0x624543+=0x1){db[_0xd425('0x30')][_0xd425('0x34')]({'where':{'channel':_0x2f6bf7,'membername':_0x1c5ba6[_0xd425('0x2f')]['name'],'type':_0xd425('0x35'),'uniqueid':_0x1c5ba6[_0xd425('0x2d')][_0xd425('0x2e')][_0x2f6bf7][_0x624543],'exitAt':null},'defaults':{'channel':_0x2f6bf7,'membername':_0x1c5ba6[_0xd425('0x2f')][_0xd425('0x13')],'interface':_[_0xd425('0x14')](_0x1c5ba6['user'][_0xd425('0x36')])?util[_0xd425('0x32')]('SIP/%s',_0x1c5ba6[_0xd425('0x2f')][_0xd425('0x13')]):_0x1c5ba6[_0xd425('0x2f')][_0xd425('0x36')],'type':'INTERACTION','enterAt':moment()[_0xd425('0x32')](_0xd425('0x37')),'role':_0xd425('0x38'),'internal':_0x1c5ba6[_0xd425('0x2f')][_0xd425('0x39')],'uniqueid':_0x1c5ba6['body']['interaction'][_0x2f6bf7][_0x624543]}});}}}}return respondWithRpcPromise(_0xd425('0x3a'),{'id':_0x1c5ba6['params']['id'],'capacity':_0x1c5ba6[_0xd425('0x2d')][_0xd425('0x3b')]},routingClient)['then'](respondWithResult(_0x2d7a2f,null))[_0xd425('0xf')](handleError(_0x2d7a2f,null));};exports['telephones']=function(_0x48d5b8,_0x39f588){return respondWithRpcPromise(_0xd425('0x3c'),_0x48d5b8[_0xd425('0x17')])[_0xd425('0xa')](respondWithResult(_0x39f588,null))[_0xd425('0xf')](handleError(_0x39f588,null));};exports[_0xd425('0x3d')]=function(_0xeb3586,_0x4118fe){return respondWithRpcPromise('Trunks',_0xeb3586[_0xd425('0x17')])[_0xd425('0xa')](respondWithResult(_0x4118fe,null))[_0xd425('0xf')](handleError(_0x4118fe,null));};exports[_0xd425('0x3e')]=function(_0x7b1080,_0x1c80c2){return respondWithRpcPromise(_0xd425('0x3f'),_0x7b1080[_0xd425('0x17')])['then'](respondWithResult(_0x1c80c2,null))['catch'](handleError(_0x1c80c2,null));};exports['chatQueues']=function(_0x145e76,_0x2c5d01){return respondWithRpcPromise(_0xd425('0x40'),_0x145e76[_0xd425('0x17')],routingClient)['then'](respondWithResult(_0x2c5d01,null))['catch'](handleError(_0x2c5d01,null));};exports['showChatQueues']=function(_0x5e1294,_0x254b8b){return respondWithRpcPromise(_0xd425('0x40'),_0x5e1294['query'],routingClient)[_0xd425('0xa')](findById(_0x5e1294[_0xd425('0x19')]['id']))[_0xd425('0xa')](respondWithResult(_0x254b8b,null))['catch'](handleError(_0x254b8b,null));};exports['mailQueues']=function(_0x599cb5,_0x49d75e){return respondWithRpcPromise('MailQueues',_0x599cb5['query'],routingClient)[_0xd425('0xa')](respondWithResult(_0x49d75e,null))[_0xd425('0xf')](handleError(_0x49d75e,null));};exports[_0xd425('0x41')]=function(_0x5b2323,_0x3395d8){return respondWithRpcPromise('MailQueues',_0x5b2323[_0xd425('0x17')],routingClient)[_0xd425('0xa')](findById(_0x5b2323[_0xd425('0x19')]['id']))[_0xd425('0xa')](respondWithResult(_0x3395d8,null))[_0xd425('0xf')](handleError(_0x3395d8,null));};exports[_0xd425('0x42')]=function(_0xa21f7c,_0x3ca6a6){return respondWithRpcPromise(_0xd425('0x43'),_0xa21f7c['query'],mailClient)[_0xd425('0xa')](respondWithResult(_0x3ca6a6,null))[_0xd425('0xf')](handleError(_0x3ca6a6,null));};exports[_0xd425('0x44')]=function(_0xf22906,_0x5c4df8){return respondWithRpcPromise('OpenchannelQueues',_0xf22906[_0xd425('0x17')],routingClient)[_0xd425('0xa')](respondWithResult(_0x5c4df8,null))[_0xd425('0xf')](handleError(_0x5c4df8,null));};exports[_0xd425('0x45')]=function(_0x464ed1,_0x2e0f00){return respondWithRpcPromise(_0xd425('0x46'),_0x464ed1[_0xd425('0x17')],routingClient)[_0xd425('0xa')](findById(_0x464ed1[_0xd425('0x19')]['id']))[_0xd425('0xa')](respondWithResult(_0x2e0f00,null))[_0xd425('0xf')](handleError(_0x2e0f00,null));};exports[_0xd425('0x47')]=function(_0x28979e,_0x5e72db){return respondWithRpcPromise(_0xd425('0x48'),_0x28979e[_0xd425('0x17')],routingClient)[_0xd425('0xa')](respondWithResult(_0x5e72db,null))['catch'](handleError(_0x5e72db,null));};exports['showSmsQueues']=function(_0x5ade1a,_0x403cb3){return respondWithRpcPromise(_0xd425('0x48'),_0x5ade1a[_0xd425('0x17')],routingClient)['then'](findById(_0x5ade1a[_0xd425('0x19')]['id']))['then'](respondWithResult(_0x403cb3,null))[_0xd425('0xf')](handleError(_0x403cb3,null));};exports[_0xd425('0x49')]=function(_0x21d26e,_0x5113fc){return respondWithRpcPromise(_0xd425('0x4a'),_0x21d26e[_0xd425('0x17')],routingClient)[_0xd425('0xa')](respondWithResult(_0x5113fc,null))[_0xd425('0xf')](handleError(_0x5113fc,null));};exports[_0xd425('0x4b')]=function(_0x43b1a9,_0x38a762){return respondWithRpcPromise(_0xd425('0x4a'),_0x43b1a9[_0xd425('0x17')],routingClient)[_0xd425('0xa')](findById(_0x43b1a9[_0xd425('0x19')]['id']))[_0xd425('0xa')](respondWithResult(_0x38a762,null))[_0xd425('0xf')](handleError(_0x38a762,null));};exports[_0xd425('0x4c')]=function(_0x445f98,_0x443126){return respondWithRpcPromise(_0xd425('0x4d'),_0x445f98[_0xd425('0x17')],routingClient)['then'](respondWithResult(_0x443126,null))['catch'](handleError(_0x443126,null));};exports[_0xd425('0x4e')]=function(_0x5c333a,_0x135048){return respondWithRpcPromise(_0xd425('0x4d'),_0x5c333a[_0xd425('0x17')],routingClient)[_0xd425('0xa')](findById(_0x5c333a['params']['id']))[_0xd425('0xa')](respondWithResult(_0x135048,null))[_0xd425('0xf')](handleError(_0x135048,null));};exports[_0xd425('0x4f')]=function(_0x689332,_0x2536bd){return respondWithRpcPromise(_0xd425('0x50'),_0x689332['query'])['then'](respondWithResult(_0x2536bd,null))[_0xd425('0xf')](handleError(_0x2536bd,null));};exports[_0xd425('0x51')]=function(_0x5e76f5,_0x174081){return respondWithRpcPromise('ChatQueuesWaitingInteractions',_0x5e76f5[_0xd425('0x17')],routingClient)[_0xd425('0xa')](respondWithResult(_0x174081,null))[_0xd425('0xf')](handleError(_0x174081,null));};exports[_0xd425('0x52')]=function(_0x376134,_0x2514fa){return respondWithRpcPromise(_0xd425('0x53'),_0x376134['query'],routingClient)[_0xd425('0xa')](respondWithResult(_0x2514fa,null))[_0xd425('0xf')](handleError(_0x2514fa,null));};exports[_0xd425('0x54')]=function(_0x233efa,_0xfcba08){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x233efa[_0xd425('0x17')],routingClient)[_0xd425('0xa')](respondWithResult(_0xfcba08,null))['catch'](handleError(_0xfcba08,null));};exports[_0xd425('0x55')]=function(_0x4599b0,_0x48bed3){return respondWithRpcPromise(_0xd425('0x56'),_0x4599b0[_0xd425('0x17')],routingClient)[_0xd425('0xa')](function(_0xd923bb){if(_0x4599b0[_0xd425('0x17')]['type']!==undefined){var _0x454cce=_(_0xd923bb['rows'])[_0xd425('0x57')]([_0x4599b0[_0xd425('0x17')]['type'],_0x4599b0[_0xd425('0x19')]['id']])[_0xd425('0x58')](_0xd425('0x59'))[_0xd425('0x5a')]()['value']();return _0xd923bb['rows'][_0xd425('0x57')](function(_0x2312c1){return _0x454cce[_0xd425('0x5b')](_0x2312c1['queue_id'])>-0x1;});}else{return _0xd923bb[_0xd425('0x15')][_0xd425('0x57')](function(_0x5b932c){return _0x5b932c[_0xd425('0x59')]===parseInt(_0x4599b0['params']['id']);});}})[_0xd425('0xa')](respondWithResult(_0x48bed3,null))[_0xd425('0xf')](handleError(_0x48bed3,null));};exports[_0xd425('0x5c')]=function(_0x2493e7,_0x5750dc){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x2493e7[_0xd425('0x17')],routingClient)[_0xd425('0xa')](respondWithResult(_0x5750dc,null))['catch'](handleError(_0x5750dc,null));};exports[_0xd425('0x5d')]=function(_0x389099,_0x51c9ad){return respondWithRpcPromise(_0xd425('0x5e'),_0x389099[_0xd425('0x17')],routingClient)[_0xd425('0xa')](respondWithResult(_0x51c9ad,null))[_0xd425('0xf')](handleError(_0x51c9ad,null));};exports[_0xd425('0x5f')]=function(_0xf251e6,_0x302066){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0xf251e6['query'],routingClient)[_0xd425('0xa')](respondWithResult(_0x302066,null))['catch'](handleError(_0x302066,null));};exports[_0xd425('0x60')]=function(_0x236030){return function(_0x58cad5,_0x244789){var _0x1c1c77,_0x5dac05;var _0x592c40=_[_0xd425('0x61')](_0x236030);var _0x242ed8=_0x236030===_0xd425('0x62')?_0xd425('0x63'):_0xd425('0x64');return db[_0x592c40+_0xd425('0x65')][_0xd425('0x66')]({'raw':!![],'where':{'id':_0x58cad5[_0xd425('0x19')]['id']}})['then'](function(_0x2cff42){if(_[_0xd425('0x14')](_0x2cff42)){throw new Error(_0x592c40+'\x20Queue\x20not\x20found');}_0x1c1c77=_0x2cff42;return db[_0x592c40+_0xd425('0x67')][_0xd425('0x66')]({'where':{'id':_0x58cad5[_0xd425('0x2d')][_0xd425('0x68')]},'include':[{'model':db[_0x592c40+_0xd425('0x69')],'as':_0xd425('0x69')},{'model':db[_0x592c40+_0x242ed8],'as':_0xd425('0x64')}]});})[_0xd425('0xa')](function(_0x334062){if(_[_0xd425('0x14')](_0x334062)){throw new Error(_0x592c40+_0xd425('0x6a'));}_0x5dac05=_0x334062;return _0x334062['update']({'read':0x0,'readAt':null,'UserId':null});})[_0xd425('0xa')](function(){var _0x498e81={'uniqueid':_0x236030+'.'+_0x5dac05['id']+'.'+_0x5dac05['Interaction']['id'],'FromUserId':_0x58cad5[_0xd425('0x2f')]['id'],'type':'queue'};_0x498e81[_0x592c40+_0xd425('0x6b')]=_0x5dac05['id'];_0x498e81[_0x592c40+_0xd425('0x6c')]=_0x5dac05[_0xd425('0x69')]['id'];_0x498e81[_0xd425('0x6d')+_0x592c40+_0x242ed8+'Id']=_0x5dac05[_0xd425('0x64')]['id'];_0x498e81['To'+_0x592c40+_0xd425('0x6e')]=_0x1c1c77['id'];return db[_0x592c40+_0xd425('0x6f')]['create'](_0x498e81);})[_0xd425('0xa')](function(){return respondWithRpcPromise(_0xd425('0x70'),{'channel':_0x236030,'interaction':_0x5dac05[_0xd425('0x69')],'message':_0x5dac05,'account':_0x5dac05[_0xd425('0x64')],'applications':[{'id':0x0,'priority':0x1,'app':_0xd425('0x71'),'appdata':_0x1c1c77['name']+','+(_0x5dac05[_0xd425('0x64')][_0xd425('0x72')]||0x12c),'interval':_0xd425('0x73')}]},routingClient);})[_0xd425('0xa')](respondWithResult(_0x244789,null))[_0xd425('0xf')](handleError(_0x244789,null));};};exports[_0xd425('0x74')]=function(_0x409612,_0x4147eb){var _0x433e5d,_0x334226;if(_[_0xd425('0x14')](_0x409612[_0xd425('0x2d')]['channel'])){throw new Error(_0xd425('0x75'));}var _0x5d8a47=_0x409612[_0xd425('0x2d')][_0xd425('0x76')];var _0x1c03d6=_[_0xd425('0x61')](_0x5d8a47);var _0xf06395=_0x5d8a47==='chat'?_0xd425('0x63'):_0xd425('0x64');return db[_0xd425('0x77')][_0xd425('0x66')]({'raw':!![],'where':{'id':_0x409612[_0xd425('0x19')]['id'],'role':_0xd425('0x38')}})[_0xd425('0xa')](function(_0x568a83){if(_[_0xd425('0x14')](_0x568a83)){throw new Error('Agent\x20not\x20found');}_0x433e5d=_0x568a83;return db[_0x1c03d6+_0xd425('0x67')][_0xd425('0x66')]({'where':{'id':_0x409612['body'][_0xd425('0x68')]},'include':[{'model':db[_0x1c03d6+_0xd425('0x69')],'as':'Interaction'},{'model':db[_0x1c03d6+_0xf06395],'as':_0xd425('0x64')}]});})[_0xd425('0xa')](function(_0xca2955){if(_[_0xd425('0x14')](_0xca2955)){throw new Error(_0x1c03d6+_0xd425('0x6a'));}_0x334226=_0xca2955;return _0xca2955[_0xd425('0x78')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x3f1a48={'uniqueid':_0x5d8a47+'.'+_0x334226['id']+'.'+_0x334226['Interaction']['id'],'FromUserId':_0x409612[_0xd425('0x2f')]['id'],'type':'queue','ToUserId':_0x433e5d['id']};_0x3f1a48[_0x1c03d6+_0xd425('0x6b')]=_0x334226['id'];_0x3f1a48[_0x1c03d6+_0xd425('0x6c')]=_0x334226[_0xd425('0x69')]['id'];_0x3f1a48[_0xd425('0x6d')+_0x1c03d6+_0xf06395+'Id']=_0x334226['Account']['id'];return db[_0x1c03d6+'TransferReport']['create'](_0x3f1a48);})['then'](function(){return respondWithRpcPromise(_0xd425('0x70'),{'channel':_0x5d8a47,'interaction':_0x334226['Interaction'],'message':_0x334226,'account':_0x334226[_0xd425('0x64')],'applications':[{'id':0x0,'priority':0x1,'app':_0xd425('0x38'),'appdata':_0x433e5d[_0xd425('0x13')]+','+(_0x334226[_0xd425('0x64')][_0xd425('0x79')]||0x12c),'interval':_0xd425('0x73')}]},routingClient);})['then'](respondWithResult(_0x4147eb,null))[_0xd425('0xf')](handleError(_0x4147eb,null));};
\ No newline at end of file
index d9b0482..fdaa355 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b3=['/:id/run','run','put','update','delete','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get','/:id','isAuthenticated','show'];(function(_0x4f32de,_0x5bd4a){var _0x149821=function(_0x205885){while(--_0x205885){_0x4f32de['push'](_0x4f32de['shift']());}};_0x149821(++_0x5bd4a);}(_0x90b3,0x123));var _0x390b=function(_0x55fa69,_0x4b1325){_0x55fa69=_0x55fa69-0x0;var _0x11c103=_0x90b3[_0x55fa69];return _0x11c103;};'use strict';var multer=require('multer');var util=require(_0x390b('0x0'));var path=require(_0x390b('0x1'));var timeout=require(_0x390b('0x2'));var express=require('express');var router=express[_0x390b('0x3')]();var fs_extra=require(_0x390b('0x4'));var auth=require(_0x390b('0x5'));var interaction=require(_0x390b('0x6'));var config=require(_0x390b('0x7'));var controller=require(_0x390b('0x8'));router[_0x390b('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x390b('0xa'),auth[_0x390b('0xb')](),controller[_0x390b('0xc')]);router['get'](_0x390b('0xd'),auth[_0x390b('0xb')](),controller[_0x390b('0xe')]);router['post']('/',auth[_0x390b('0xb')](),controller['create']);router[_0x390b('0xf')](_0x390b('0xa'),auth['isAuthenticated'](),controller[_0x390b('0x10')]);router[_0x390b('0x11')](_0x390b('0xa'),auth[_0x390b('0xb')](),controller['destroy']);module[_0x390b('0x12')]=router;
\ No newline at end of file
+var _0x3927=['isAuthenticated','/:id/run','run','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','./schedule.controller','get','index','/:id'];(function(_0x35c2f2,_0x147522){var _0x5625e2=function(_0x335b64){while(--_0x335b64){_0x35c2f2['push'](_0x35c2f2['shift']());}};_0x5625e2(++_0x147522);}(_0x3927,0xaa));var _0x7392=function(_0x29f590,_0x36d62e){_0x29f590=_0x29f590-0x0;var _0xb47040=_0x3927[_0x29f590];return _0xb47040;};'use strict';var multer=require(_0x7392('0x0'));var util=require('util');var path=require(_0x7392('0x1'));var timeout=require(_0x7392('0x2'));var express=require(_0x7392('0x3'));var router=express[_0x7392('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7392('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x7392('0x6'));router[_0x7392('0x7')]('/',auth['isAuthenticated'](),controller[_0x7392('0x8')]);router['get'](_0x7392('0x9'),auth[_0x7392('0xa')](),controller['show']);router[_0x7392('0x7')](_0x7392('0xb'),auth[_0x7392('0xa')](),controller[_0x7392('0xc')]);router[_0x7392('0xd')]('/',auth[_0x7392('0xa')](),controller[_0x7392('0xe')]);router[_0x7392('0xf')](_0x7392('0x9'),auth[_0x7392('0xa')](),controller[_0x7392('0x10')]);router[_0x7392('0x11')](_0x7392('0x9'),auth[_0x7392('0xa')](),controller[_0x7392('0x12')]);module[_0x7392('0x13')]=router;
\ No newline at end of file
index a3da7bd..fdbab90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd810=['BOOLEAN','0\x200\x20*\x20*\x20*','DATE','ENUM','years','quarters','months','days','hours','minutes','csv','pdf','xlsx','custom','default','TEXT','exports','STRING'];(function(_0x57e964,_0x45a5d8){var _0x2614ad=function(_0x236230){while(--_0x236230){_0x57e964['push'](_0x57e964['shift']());}};_0x2614ad(++_0x45a5d8);}(_0xd810,0x1d2));var _0x0d81=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0xd810[_0x16d10f];return _0x50c823;};'use strict';var Sequelize=require('sequelize');module[_0x0d81('0x0')]={'name':{'type':Sequelize[_0x0d81('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x0d81('0x1')]},'active':{'type':Sequelize[_0x0d81('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x0d81('0x1')],'allowNull':![],'defaultValue':_0x0d81('0x3')},'startAt':{'type':Sequelize[_0x0d81('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0x0d81('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x0d81('0x5')](_0x0d81('0x6'),_0x0d81('0x7'),_0x0d81('0x8'),'weeks',_0x0d81('0x9'),_0x0d81('0xa'),_0x0d81('0xb')),'allowNull':![],'defaultValue':_0x0d81('0x9')},'output':{'type':Sequelize[_0x0d81('0x5')](_0x0d81('0xc'),_0x0d81('0xd'),_0x0d81('0xe')),'allowNull':![],'defaultValue':_0x0d81('0xc')},'type':{'type':Sequelize[_0x0d81('0x5')](_0x0d81('0xf'),_0x0d81('0x10')),'allowNull':![],'defaultValue':_0x0d81('0xf')},'sendMail':{'type':Sequelize[_0x0d81('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x0d81('0x1')]},'cc':{'type':Sequelize[_0x0d81('0x11')]},'bcc':{'type':Sequelize[_0x0d81('0x11')]},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xce51=['months','weeks','days','hours','ENUM','csv','custom','default','TEXT','sequelize','exports','STRING','BOOLEAN','DATE','INTEGER','quarters'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0xce51,0x99));var _0x1ce5=function(_0x548627,_0x4ec392){_0x548627=_0x548627-0x0;var _0x844a84=_0xce51[_0x548627];return _0x844a84;};'use strict';var Sequelize=require(_0x1ce5('0x0'));module[_0x1ce5('0x1')]={'name':{'type':Sequelize[_0x1ce5('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x1ce5('0x2')]},'active':{'type':Sequelize[_0x1ce5('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'0\x200\x20*\x20*\x20*'},'startAt':{'type':Sequelize['DATE'],'allowNull':![]},'endAt':{'type':Sequelize[_0x1ce5('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x1ce5('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM']('years',_0x1ce5('0x6'),_0x1ce5('0x7'),_0x1ce5('0x8'),_0x1ce5('0x9'),_0x1ce5('0xa'),'minutes'),'allowNull':![],'defaultValue':_0x1ce5('0x9')},'output':{'type':Sequelize[_0x1ce5('0xb')](_0x1ce5('0xc'),'pdf','xlsx'),'allowNull':![],'defaultValue':_0x1ce5('0xc')},'type':{'type':Sequelize[_0x1ce5('0xb')](_0x1ce5('0xd'),_0x1ce5('0xe')),'allowNull':![],'defaultValue':_0x1ce5('0xd')},'sendMail':{'type':Sequelize[_0x1ce5('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x1ce5('0x2')]},'cc':{'type':Sequelize[_0x1ce5('0xf')]},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize[_0x1ce5('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index cbb3399..3ab3b83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d0d=['send','map','Schedule','rawAttributes','fieldName','type','key','keys','query','filters','model','intersection','fields','length','hasOwnProperty','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','catch','params','attributes','includeAll','include','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','Scheduler','UserProfileSection','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','run','../../config/schedule','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','count','offset','apply','reject','save','destroy','then','stack','name'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8d0d,0xd6));var _0xd8d0=function(_0x3482e9,_0x5a7673){_0x3482e9=_0x3482e9-0x0;var _0x48070e=_0x8d0d[_0x3482e9];return _0x48070e;};'use strict';var emlformat=require(_0xd8d0('0x0'));var rimraf=require(_0xd8d0('0x1'));var zipdir=require(_0xd8d0('0x2'));var jsonpatch=require(_0xd8d0('0x3'));var rp=require(_0xd8d0('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xd8d0('0x5'));var util=require(_0xd8d0('0x6'));var path=require(_0xd8d0('0x7'));var sox=require(_0xd8d0('0x8'));var csv=require(_0xd8d0('0x9'));var ejs=require(_0xd8d0('0xa'));var fs=require('fs');var fs_extra=require(_0xd8d0('0xb'));var _=require(_0xd8d0('0xc'));var squel=require('squel');var crypto=require(_0xd8d0('0xd'));var jsforce=require(_0xd8d0('0xe'));var deskjs=require(_0xd8d0('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd8d0('0x10'));var Papa=require('papaparse');var Redis=require(_0xd8d0('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd8d0('0x12'));var logger=require(_0xd8d0('0x13'))(_0xd8d0('0x14'));var utils=require('../../config/utils');var config=require(_0xd8d0('0x15'));var licenseUtil=require(_0xd8d0('0x16'));var db=require(_0xd8d0('0x17'))['db'];function respondWithStatusCode(_0x4c4cef,_0x53aed2){_0x53aed2=_0x53aed2||0xcc;return function(_0x4cb039){if(_0x4cb039){return _0x4c4cef[_0xd8d0('0x18')](_0x53aed2);}return _0x4c4cef['status'](_0x53aed2)[_0xd8d0('0x19')]();};}function respondWithResult(_0x15b2c3,_0x556b20){_0x556b20=_0x556b20||0xc8;return function(_0x2767f8){if(_0x2767f8){return _0x15b2c3[_0xd8d0('0x1a')](_0x556b20)[_0xd8d0('0x1b')](_0x2767f8);}};}function respondWithFilteredResult(_0x20bd82,_0x5f0868){return function(_0x507ba2){if(_0x507ba2){var _0x301810=typeof _0x5f0868['offset']==='undefined'&&typeof _0x5f0868['limit']===_0xd8d0('0x1c');var _0x328eb7=_0x507ba2[_0xd8d0('0x1d')];var _0x2203df=_0x301810?0x0:_0x5f0868[_0xd8d0('0x1e')];var _0x113374=_0x301810?_0x507ba2[_0xd8d0('0x1d')]:_0x5f0868[_0xd8d0('0x1e')]+_0x5f0868['limit'];var _0x3611ae;if(_0x113374>=_0x328eb7){_0x113374=_0x328eb7;_0x3611ae=0xc8;}else{_0x3611ae=0xce;}_0x20bd82[_0xd8d0('0x1a')](_0x3611ae);return _0x20bd82['set']('Content-Range',_0x2203df+'-'+_0x113374+'/'+_0x328eb7)[_0xd8d0('0x1b')](_0x507ba2);}return null;};}function patchUpdates(_0x8458b9){return function(_0x4449a5){try{jsonpatch[_0xd8d0('0x1f')](_0x4449a5,_0x8458b9,!![]);}catch(_0x1a0df3){return BPromise[_0xd8d0('0x20')](_0x1a0df3);}return _0x4449a5[_0xd8d0('0x21')]();};}function saveUpdates(_0x2ad9ce,_0x2de406){return function(_0x3cf74a){if(_0x3cf74a){return _0x3cf74a['update'](_0x2ad9ce)['then'](function(_0x347ef2){return _0x347ef2;});}return null;};}function removeEntity(_0x26bd01,_0x495dd0){return function(_0x67b32a){if(_0x67b32a){return _0x67b32a[_0xd8d0('0x22')]()['then'](function(){var _0x5b60ee=_0x67b32a['get']({'plain':!![]});var _0x14e724='Scheduler';return db['UserProfileResource'][_0xd8d0('0x22')]({'where':{'type':_0x14e724,'resourceId':_0x5b60ee['id']}})['then'](function(){return _0x67b32a;});})[_0xd8d0('0x23')](function(){_0x26bd01[_0xd8d0('0x1a')](0xcc)[_0xd8d0('0x19')]();});}};}function handleEntityNotFound(_0x2ac678,_0x2243ee){return function(_0xbceee7){if(!_0xbceee7){_0x2ac678['sendStatus'](0x194);}return _0xbceee7;};}function handleError(_0x2c29b3,_0x182658){_0x182658=_0x182658||0x1f4;return function(_0x1f0f79){logger['error'](_0x1f0f79[_0xd8d0('0x24')]);if(_0x1f0f79[_0xd8d0('0x25')]){delete _0x1f0f79[_0xd8d0('0x25')];}_0x2c29b3[_0xd8d0('0x1a')](_0x182658)[_0xd8d0('0x26')](_0x1f0f79);};}exports['index']=function(_0x2774c2,_0x1a723f){var _0x564384={},_0x52a5ca={},_0x591b16={'count':0x0,'rows':[]};var _0x53cd72=_[_0xd8d0('0x27')](db[_0xd8d0('0x28')][_0xd8d0('0x29')],function(_0x4f1da7){return{'name':_0x4f1da7[_0xd8d0('0x2a')],'type':_0x4f1da7[_0xd8d0('0x2b')][_0xd8d0('0x2c')]};});_0x52a5ca['model']=_[_0xd8d0('0x27')](_0x53cd72,'name');_0x52a5ca['query']=_[_0xd8d0('0x2d')](_0x2774c2[_0xd8d0('0x2e')]);_0x52a5ca[_0xd8d0('0x2f')]=_['intersection'](_0x52a5ca[_0xd8d0('0x30')],_0x52a5ca['query']);_0x564384['attributes']=_[_0xd8d0('0x31')](_0x52a5ca[_0xd8d0('0x30')],qs[_0xd8d0('0x32')](_0x2774c2['query']['fields']));_0x564384['attributes']=_0x564384['attributes'][_0xd8d0('0x33')]?_0x564384['attributes']:_0x52a5ca[_0xd8d0('0x30')];if(!_0x2774c2[_0xd8d0('0x2e')][_0xd8d0('0x34')]('nolimit')){_0x564384[_0xd8d0('0x35')]=qs[_0xd8d0('0x35')](_0x2774c2['query']['limit']);_0x564384[_0xd8d0('0x1e')]=qs[_0xd8d0('0x1e')](_0x2774c2['query']['offset']);}_0x564384[_0xd8d0('0x36')]=qs[_0xd8d0('0x37')](_0x2774c2[_0xd8d0('0x2e')][_0xd8d0('0x37')]);_0x564384[_0xd8d0('0x38')]=qs['filters'](_[_0xd8d0('0x39')](_0x2774c2[_0xd8d0('0x2e')],_0x52a5ca[_0xd8d0('0x2f')]),_0x53cd72);if(_0x2774c2[_0xd8d0('0x2e')][_0xd8d0('0x3a')]){_0x564384[_0xd8d0('0x38')]=_[_0xd8d0('0x3b')](_0x564384[_0xd8d0('0x38')],{'$or':_[_0xd8d0('0x27')](_0x53cd72,function(_0x4b4f27){if(_0x4b4f27[_0xd8d0('0x2b')]!==_0xd8d0('0x3c')){var _0x150db3={};_0x150db3[_0x4b4f27['name']]={'$like':'%'+_0x2774c2[_0xd8d0('0x2e')][_0xd8d0('0x3a')]+'%'};return _0x150db3;}})});}_0x564384=_[_0xd8d0('0x3b')]({},_0x564384,_0x2774c2[_0xd8d0('0x3d')]);var _0x1e8a5f={'where':_0x564384[_0xd8d0('0x38')]};return db[_0xd8d0('0x28')][_0xd8d0('0x1d')](_0x1e8a5f)[_0xd8d0('0x23')](function(_0x1b52b5){_0x591b16[_0xd8d0('0x1d')]=_0x1b52b5;if(_0x2774c2[_0xd8d0('0x2e')]['includeAll']){_0x564384['include']=[{'all':!![]}];}return db['Schedule'][_0xd8d0('0x3e')](_0x564384);})[_0xd8d0('0x23')](function(_0x3376d0){_0x591b16[_0xd8d0('0x3f')]=_0x3376d0;return _0x591b16;})['then'](respondWithFilteredResult(_0x1a723f,_0x564384))[_0xd8d0('0x40')](handleError(_0x1a723f,null));};exports['show']=function(_0x1198ac,_0x4f2db9){var _0x529689={'raw':![],'where':{'id':_0x1198ac[_0xd8d0('0x41')]['id']}},_0x1f23de={};_0x1f23de['model']=_[_0xd8d0('0x2d')](db['Schedule'][_0xd8d0('0x29')]);_0x1f23de[_0xd8d0('0x2e')]=_[_0xd8d0('0x2d')](_0x1198ac[_0xd8d0('0x2e')]);_0x1f23de[_0xd8d0('0x2f')]=_[_0xd8d0('0x31')](_0x1f23de[_0xd8d0('0x30')],_0x1f23de[_0xd8d0('0x2e')]);_0x529689['attributes']=_[_0xd8d0('0x31')](_0x1f23de[_0xd8d0('0x30')],qs[_0xd8d0('0x32')](_0x1198ac[_0xd8d0('0x2e')]['fields']));_0x529689['attributes']=_0x529689[_0xd8d0('0x42')]['length']?_0x529689['attributes']:_0x1f23de[_0xd8d0('0x30')];if(_0x1198ac[_0xd8d0('0x2e')][_0xd8d0('0x43')]){_0x529689[_0xd8d0('0x44')]=[{'all':!![]}];}_0x529689=_[_0xd8d0('0x3b')]({},_0x529689,_0x1198ac[_0xd8d0('0x3d')]);return db[_0xd8d0('0x28')][_0xd8d0('0x45')](_0x529689)['then'](handleEntityNotFound(_0x4f2db9,null))[_0xd8d0('0x23')](respondWithResult(_0x4f2db9,null))[_0xd8d0('0x40')](handleError(_0x4f2db9,null));};exports[_0xd8d0('0x46')]=function(_0x3a5257,_0x5b0c6b){return db[_0xd8d0('0x28')]['create'](_0x3a5257['body'],{})[_0xd8d0('0x23')](function(_0x5e3ad5){var _0x3ad35d=_0x3a5257[_0xd8d0('0x47')][_0xd8d0('0x48')]({'plain':!![]});if(!_0x3ad35d)throw new Error(_0xd8d0('0x49'));if(_0x3ad35d['role']===_0xd8d0('0x47')){var _0x2ec9ca=_0x5e3ad5[_0xd8d0('0x48')]({'plain':!![]});var _0x4072d5=_0xd8d0('0x4a');return db[_0xd8d0('0x4b')][_0xd8d0('0x45')]({'where':{'name':_0x4072d5,'userProfileId':_0x3ad35d['userProfileId']},'raw':!![]})[_0xd8d0('0x23')](function(_0x102ca3){if(_0x102ca3&&_0x102ca3[_0xd8d0('0x4c')]===0x0){return db[_0xd8d0('0x4d')][_0xd8d0('0x46')]({'name':_0x2ec9ca[_0xd8d0('0x25')],'resourceId':_0x2ec9ca['id'],'type':_0x102ca3['name'],'sectionId':_0x102ca3['id']},{})[_0xd8d0('0x23')](function(){return _0x5e3ad5;});}else{return _0x5e3ad5;}})[_0xd8d0('0x40')](function(_0x337f37){logger[_0xd8d0('0x4e')](_0xd8d0('0x4f'),_0x337f37);throw _0x337f37;});}return _0x5e3ad5;})[_0xd8d0('0x23')](respondWithResult(_0x5b0c6b,0xc9))[_0xd8d0('0x40')](handleError(_0x5b0c6b,null));};exports[_0xd8d0('0x50')]=function(_0x5e22a2,_0x4708c3){if(_0x5e22a2['body']['id']){delete _0x5e22a2[_0xd8d0('0x51')]['id'];}return db[_0xd8d0('0x28')][_0xd8d0('0x45')]({'where':{'id':_0x5e22a2[_0xd8d0('0x41')]['id']}})['then'](handleEntityNotFound(_0x4708c3,null))[_0xd8d0('0x23')](saveUpdates(_0x5e22a2['body'],null))[_0xd8d0('0x23')](respondWithResult(_0x4708c3,null))[_0xd8d0('0x40')](handleError(_0x4708c3,null));};exports[_0xd8d0('0x22')]=function(_0xa1b7cd,_0x4c34c8){return db[_0xd8d0('0x28')][_0xd8d0('0x45')]({'where':{'id':_0xa1b7cd['params']['id']}})[_0xd8d0('0x23')](handleEntityNotFound(_0x4c34c8,null))[_0xd8d0('0x23')](removeEntity(_0x4c34c8,null))[_0xd8d0('0x40')](handleError(_0x4c34c8,null));};exports[_0xd8d0('0x52')]=function(_0x2edc46,_0x401588,_0x3a4117){var _0x3116b2=require(_0xd8d0('0x53'));return db[_0xd8d0('0x28')][_0xd8d0('0x45')]({'where':{'id':_0x2edc46['params']['id']},'raw':!![]})[_0xd8d0('0x23')](handleEntityNotFound(_0x401588,null))['then'](function(){_0x3116b2[_0xd8d0('0x52')](_0x2edc46[_0xd8d0('0x41')]['id']);})[_0xd8d0('0x23')](respondWithStatusCode(_0x401588,null))['catch'](handleError(_0x401588,null));};
\ No newline at end of file
+var _0x4143=['UserProfileResource','sendStatus','stack','name','send','index','map','Schedule','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','order','sort','where','pick','merge','type','filter','options','includeAll','include','findAll','rows','show','params','keys','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','catch','error','run','../../config/schedule','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','json','limit','undefined','count','offset','status','Content-Range','apply','reject','save','update','destroy','then','Scheduler'];(function(_0x1b5287,_0x40f4e1){var _0x34ceae=function(_0x16028d){while(--_0x16028d){_0x1b5287['push'](_0x1b5287['shift']());}};_0x34ceae(++_0x40f4e1);}(_0x4143,0x136));var _0x3414=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x4143[_0x6c993a];return _0x27f547;};'use strict';var emlformat=require(_0x3414('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3414('0x1'));var jsonpatch=require(_0x3414('0x2'));var rp=require(_0x3414('0x3'));var moment=require(_0x3414('0x4'));var BPromise=require(_0x3414('0x5'));var Mustache=require(_0x3414('0x6'));var util=require(_0x3414('0x7'));var path=require(_0x3414('0x8'));var sox=require(_0x3414('0x9'));var csv=require(_0x3414('0xa'));var ejs=require(_0x3414('0xb'));var fs=require('fs');var fs_extra=require(_0x3414('0xc'));var _=require(_0x3414('0xd'));var squel=require(_0x3414('0xe'));var crypto=require(_0x3414('0xf'));var jsforce=require(_0x3414('0x10'));var deskjs=require(_0x3414('0x11'));var toCsv=require(_0x3414('0xa'));var querystring=require(_0x3414('0x12'));var Papa=require(_0x3414('0x13'));var Redis=require(_0x3414('0x14'));var authService=require(_0x3414('0x15'));var qs=require(_0x3414('0x16'));var as=require(_0x3414('0x17'));var hardwareService=require(_0x3414('0x18'));var logger=require(_0x3414('0x19'))(_0x3414('0x1a'));var utils=require(_0x3414('0x1b'));var config=require(_0x3414('0x1c'));var licenseUtil=require(_0x3414('0x1d'));var db=require(_0x3414('0x1e'))['db'];function respondWithStatusCode(_0xd75905,_0x87c1af){_0x87c1af=_0x87c1af||0xcc;return function(_0x1da17a){if(_0x1da17a){return _0xd75905['sendStatus'](_0x87c1af);}return _0xd75905['status'](_0x87c1af)[_0x3414('0x1f')]();};}function respondWithResult(_0x5cca83,_0x91cdbf){_0x91cdbf=_0x91cdbf||0xc8;return function(_0x13a2e4){if(_0x13a2e4){return _0x5cca83['status'](_0x91cdbf)[_0x3414('0x20')](_0x13a2e4);}};}function respondWithFilteredResult(_0x594349,_0x2a82d9){return function(_0x3d7553){if(_0x3d7553){var _0x105dee=typeof _0x2a82d9['offset']==='undefined'&&typeof _0x2a82d9[_0x3414('0x21')]===_0x3414('0x22');var _0x1b4877=_0x3d7553[_0x3414('0x23')];var _0x1a6086=_0x105dee?0x0:_0x2a82d9[_0x3414('0x24')];var _0x3af877=_0x105dee?_0x3d7553['count']:_0x2a82d9[_0x3414('0x24')]+_0x2a82d9[_0x3414('0x21')];var _0x47e14d;if(_0x3af877>=_0x1b4877){_0x3af877=_0x1b4877;_0x47e14d=0xc8;}else{_0x47e14d=0xce;}_0x594349[_0x3414('0x25')](_0x47e14d);return _0x594349['set'](_0x3414('0x26'),_0x1a6086+'-'+_0x3af877+'/'+_0x1b4877)[_0x3414('0x20')](_0x3d7553);}return null;};}function patchUpdates(_0x85d853){return function(_0x506d89){try{jsonpatch[_0x3414('0x27')](_0x506d89,_0x85d853,!![]);}catch(_0x2c3898){return BPromise[_0x3414('0x28')](_0x2c3898);}return _0x506d89[_0x3414('0x29')]();};}function saveUpdates(_0x4a565b,_0x44a9e4){return function(_0x12d106){if(_0x12d106){return _0x12d106[_0x3414('0x2a')](_0x4a565b)['then'](function(_0x228639){return _0x228639;});}return null;};}function removeEntity(_0x425941,_0x531484){return function(_0x4c8755){if(_0x4c8755){return _0x4c8755[_0x3414('0x2b')]()[_0x3414('0x2c')](function(){var _0x28e246=_0x4c8755['get']({'plain':!![]});var _0x3d8623=_0x3414('0x2d');return db[_0x3414('0x2e')][_0x3414('0x2b')]({'where':{'type':_0x3d8623,'resourceId':_0x28e246['id']}})[_0x3414('0x2c')](function(){return _0x4c8755;});})[_0x3414('0x2c')](function(){_0x425941[_0x3414('0x25')](0xcc)[_0x3414('0x1f')]();});}};}function handleEntityNotFound(_0x8b8708,_0x335b5c){return function(_0x12e3ae){if(!_0x12e3ae){_0x8b8708[_0x3414('0x2f')](0x194);}return _0x12e3ae;};}function handleError(_0xe0c339,_0x2b2a58){_0x2b2a58=_0x2b2a58||0x1f4;return function(_0x62b757){logger['error'](_0x62b757[_0x3414('0x30')]);if(_0x62b757[_0x3414('0x31')]){delete _0x62b757['name'];}_0xe0c339[_0x3414('0x25')](_0x2b2a58)[_0x3414('0x32')](_0x62b757);};}exports[_0x3414('0x33')]=function(_0x14182d,_0x5b6a4e){var _0x598def={},_0x2224de={},_0x364857={'count':0x0,'rows':[]};var _0x2ac73b=_[_0x3414('0x34')](db[_0x3414('0x35')][_0x3414('0x36')],function(_0x5d08c4){return{'name':_0x5d08c4['fieldName'],'type':_0x5d08c4['type'][_0x3414('0x37')]};});_0x2224de[_0x3414('0x38')]=_['map'](_0x2ac73b,_0x3414('0x31'));_0x2224de['query']=_['keys'](_0x14182d[_0x3414('0x39')]);_0x2224de[_0x3414('0x3a')]=_[_0x3414('0x3b')](_0x2224de[_0x3414('0x38')],_0x2224de[_0x3414('0x39')]);_0x598def[_0x3414('0x3c')]=_['intersection'](_0x2224de[_0x3414('0x38')],qs['fields'](_0x14182d[_0x3414('0x39')][_0x3414('0x3d')]));_0x598def[_0x3414('0x3c')]=_0x598def[_0x3414('0x3c')][_0x3414('0x3e')]?_0x598def[_0x3414('0x3c')]:_0x2224de[_0x3414('0x38')];if(!_0x14182d[_0x3414('0x39')]['hasOwnProperty']('nolimit')){_0x598def[_0x3414('0x21')]=qs[_0x3414('0x21')](_0x14182d[_0x3414('0x39')]['limit']);_0x598def[_0x3414('0x24')]=qs[_0x3414('0x24')](_0x14182d[_0x3414('0x39')][_0x3414('0x24')]);}_0x598def[_0x3414('0x3f')]=qs[_0x3414('0x40')](_0x14182d[_0x3414('0x39')][_0x3414('0x40')]);_0x598def[_0x3414('0x41')]=qs[_0x3414('0x3a')](_[_0x3414('0x42')](_0x14182d[_0x3414('0x39')],_0x2224de[_0x3414('0x3a')]),_0x2ac73b);if(_0x14182d[_0x3414('0x39')]['filter']){_0x598def[_0x3414('0x41')]=_[_0x3414('0x43')](_0x598def['where'],{'$or':_['map'](_0x2ac73b,function(_0x594405){if(_0x594405[_0x3414('0x44')]!=='VIRTUAL'){var _0x5810b0={};_0x5810b0[_0x594405['name']]={'$like':'%'+_0x14182d[_0x3414('0x39')][_0x3414('0x45')]+'%'};return _0x5810b0;}})});}_0x598def=_[_0x3414('0x43')]({},_0x598def,_0x14182d[_0x3414('0x46')]);var _0x51c815={'where':_0x598def[_0x3414('0x41')]};return db[_0x3414('0x35')]['count'](_0x51c815)[_0x3414('0x2c')](function(_0xcbd2d8){_0x364857[_0x3414('0x23')]=_0xcbd2d8;if(_0x14182d[_0x3414('0x39')][_0x3414('0x47')]){_0x598def[_0x3414('0x48')]=[{'all':!![]}];}return db[_0x3414('0x35')][_0x3414('0x49')](_0x598def);})['then'](function(_0x406af0){_0x364857[_0x3414('0x4a')]=_0x406af0;return _0x364857;})[_0x3414('0x2c')](respondWithFilteredResult(_0x5b6a4e,_0x598def))['catch'](handleError(_0x5b6a4e,null));};exports[_0x3414('0x4b')]=function(_0x5eb3fe,_0x59fd21){var _0xdbd656={'raw':![],'where':{'id':_0x5eb3fe[_0x3414('0x4c')]['id']}},_0x2a32c9={};_0x2a32c9[_0x3414('0x38')]=_[_0x3414('0x4d')](db[_0x3414('0x35')][_0x3414('0x36')]);_0x2a32c9['query']=_[_0x3414('0x4d')](_0x5eb3fe[_0x3414('0x39')]);_0x2a32c9[_0x3414('0x3a')]=_[_0x3414('0x3b')](_0x2a32c9['model'],_0x2a32c9[_0x3414('0x39')]);_0xdbd656[_0x3414('0x3c')]=_['intersection'](_0x2a32c9[_0x3414('0x38')],qs[_0x3414('0x3d')](_0x5eb3fe[_0x3414('0x39')]['fields']));_0xdbd656['attributes']=_0xdbd656[_0x3414('0x3c')][_0x3414('0x3e')]?_0xdbd656['attributes']:_0x2a32c9['model'];if(_0x5eb3fe[_0x3414('0x39')][_0x3414('0x47')]){_0xdbd656['include']=[{'all':!![]}];}_0xdbd656=_[_0x3414('0x43')]({},_0xdbd656,_0x5eb3fe['options']);return db['Schedule'][_0x3414('0x4e')](_0xdbd656)[_0x3414('0x2c')](handleEntityNotFound(_0x59fd21,null))[_0x3414('0x2c')](respondWithResult(_0x59fd21,null))['catch'](handleError(_0x59fd21,null));};exports[_0x3414('0x4f')]=function(_0x4c0644,_0x1dc655){return db[_0x3414('0x35')][_0x3414('0x4f')](_0x4c0644[_0x3414('0x50')],{})[_0x3414('0x2c')](function(_0x5af2ae){var _0x215227=_0x4c0644[_0x3414('0x51')][_0x3414('0x52')]({'plain':!![]});if(!_0x215227)throw new Error(_0x3414('0x53'));if(_0x215227['role']===_0x3414('0x51')){var _0x4c388a=_0x5af2ae['get']({'plain':!![]});var _0x31f474=_0x3414('0x2d');return db['UserProfileSection'][_0x3414('0x4e')]({'where':{'name':_0x31f474,'userProfileId':_0x215227['userProfileId']},'raw':!![]})[_0x3414('0x2c')](function(_0x33f85e){if(_0x33f85e&&_0x33f85e[_0x3414('0x54')]===0x0){return db[_0x3414('0x2e')][_0x3414('0x4f')]({'name':_0x4c388a[_0x3414('0x31')],'resourceId':_0x4c388a['id'],'type':_0x33f85e['name'],'sectionId':_0x33f85e['id']},{})[_0x3414('0x2c')](function(){return _0x5af2ae;});}else{return _0x5af2ae;}})[_0x3414('0x55')](function(_0x37055f){logger[_0x3414('0x56')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x37055f);throw _0x37055f;});}return _0x5af2ae;})[_0x3414('0x2c')](respondWithResult(_0x1dc655,0xc9))[_0x3414('0x55')](handleError(_0x1dc655,null));};exports[_0x3414('0x2a')]=function(_0x1bf7fc,_0x5333b7){if(_0x1bf7fc[_0x3414('0x50')]['id']){delete _0x1bf7fc['body']['id'];}return db['Schedule'][_0x3414('0x4e')]({'where':{'id':_0x1bf7fc[_0x3414('0x4c')]['id']}})[_0x3414('0x2c')](handleEntityNotFound(_0x5333b7,null))['then'](saveUpdates(_0x1bf7fc['body'],null))[_0x3414('0x2c')](respondWithResult(_0x5333b7,null))[_0x3414('0x55')](handleError(_0x5333b7,null));};exports[_0x3414('0x2b')]=function(_0x71401,_0x2d55f5){return db[_0x3414('0x35')][_0x3414('0x4e')]({'where':{'id':_0x71401[_0x3414('0x4c')]['id']}})[_0x3414('0x2c')](handleEntityNotFound(_0x2d55f5,null))['then'](removeEntity(_0x2d55f5,null))[_0x3414('0x55')](handleError(_0x2d55f5,null));};exports[_0x3414('0x57')]=function(_0x5c24b2,_0x5360a4,_0x1cbfed){var _0x38f779=require(_0x3414('0x58'));return db[_0x3414('0x35')][_0x3414('0x4e')]({'where':{'id':_0x5c24b2[_0x3414('0x4c')]['id']},'raw':!![]})[_0x3414('0x2c')](handleEntityNotFound(_0x5360a4,null))[_0x3414('0x2c')](function(){_0x38f779[_0x3414('0x57')](_0x5c24b2['params']['id']);})[_0x3414('0x2c')](respondWithStatusCode(_0x5360a4,null))[_0x3414('0x55')](handleError(_0x5360a4,null));};
\ No newline at end of file
index 758ad27..d55d91e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa33d=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./schedule.attributes','define','Schedule','tools_schedules','util','api'];(function(_0x577069,_0xa1a378){var _0x5c22f2=function(_0xbb41f1){while(--_0xbb41f1){_0x577069['push'](_0x577069['shift']());}};_0x5c22f2(++_0xa1a378);}(_0xa33d,0x76));var _0xda33=function(_0x4b388a,_0x1b2e61){_0x4b388a=_0x4b388a-0x0;var _0x3cd33b=_0xa33d[_0x4b388a];return _0x3cd33b;};'use strict';var _=require('lodash');var util=require(_0xda33('0x0'));var logger=require('../../config/logger')(_0xda33('0x1'));var moment=require(_0xda33('0x2'));var BPromise=require(_0xda33('0x3'));var rp=require(_0xda33('0x4'));var fs=require('fs');var path=require(_0xda33('0x5'));var rimraf=require(_0xda33('0x6'));var config=require(_0xda33('0x7'));var attributes=require(_0xda33('0x8'));module['exports']=function(_0x4c4ef9,_0x1a9546){return _0x4c4ef9[_0xda33('0x9')](_0xda33('0xa'),attributes,{'tableName':_0xda33('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7e34=['api','moment','bluebird','request-promise','exports','Schedule','tools_schedules','lodash','util','../../config/logger'];(function(_0x1da527,_0x2dc953){var _0x40fc7c=function(_0x9949f5){while(--_0x9949f5){_0x1da527['push'](_0x1da527['shift']());}};_0x40fc7c(++_0x2dc953);}(_0x7e34,0x1ab));var _0x47e3=function(_0x682b2f,_0x4c62bf){_0x682b2f=_0x682b2f-0x0;var _0x4c5317=_0x7e34[_0x682b2f];return _0x4c5317;};'use strict';var _=require(_0x47e3('0x0'));var util=require(_0x47e3('0x1'));var logger=require(_0x47e3('0x2'))(_0x47e3('0x3'));var moment=require(_0x47e3('0x4'));var BPromise=require(_0x47e3('0x5'));var rp=require(_0x47e3('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./schedule.attributes');module[_0x47e3('0x7')]=function(_0x20757a,_0x5bdef7){return _0x20757a['define'](_0x47e3('0x8'),attributes,{'tableName':_0x47e3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d30b892..c8b8916 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a2f=['Schedule,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x48f958,_0x5a188e){var _0x4dfe07=function(_0x2603d5){while(--_0x2603d5){_0x48f958['push'](_0x48f958['shift']());}};_0x4dfe07(++_0x5a188e);}(_0x3a2f,0xb2));var _0xf3a2=function(_0x3ae746,_0x5e78c7){_0x3ae746=_0x3ae746-0x0;var _0x199530=_0x3a2f[_0x3ae746];return _0x199530;};'use strict';var _=require(_0xf3a2('0x0'));var util=require(_0xf3a2('0x1'));var moment=require(_0xf3a2('0x2'));var BPromise=require(_0xf3a2('0x3'));var rs=require(_0xf3a2('0x4'));var fs=require('fs');var Redis=require(_0xf3a2('0x5'));var db=require(_0xf3a2('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xf3a2('0x7'))(_0xf3a2('0x8'));var config=require(_0xf3a2('0x9'));var jayson=require(_0xf3a2('0xa'));var client=jayson[_0xf3a2('0xb')][_0xf3a2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x588c61,_0x22c2d4,_0x2d64d3){return new BPromise(function(_0x5b5ed2,_0x1e5e58){return client[_0xf3a2('0xd')](_0x588c61,_0x2d64d3)[_0xf3a2('0xe')](function(_0x343c94){logger[_0xf3a2('0xf')]('Schedule,\x20%s,\x20%s',_0x22c2d4,_0xf3a2('0x10'));logger[_0xf3a2('0x11')](_0xf3a2('0x12'),_0x22c2d4,_0xf3a2('0x10'),JSON[_0xf3a2('0x13')](_0x343c94));if(_0x343c94['error']){if(_0x343c94[_0xf3a2('0x14')][_0xf3a2('0x15')]===0x1f4){logger[_0xf3a2('0x14')](_0xf3a2('0x16'),_0x22c2d4,_0x343c94[_0xf3a2('0x14')][_0xf3a2('0x17')]);return _0x1e5e58(_0x343c94[_0xf3a2('0x14')][_0xf3a2('0x17')]);}logger[_0xf3a2('0x14')](_0xf3a2('0x16'),_0x22c2d4,_0x343c94[_0xf3a2('0x14')][_0xf3a2('0x17')]);return _0x5b5ed2(_0x343c94[_0xf3a2('0x14')][_0xf3a2('0x17')]);}else{logger[_0xf3a2('0xf')](_0xf3a2('0x16'),_0x22c2d4,'request\x20sent');_0x5b5ed2(_0x343c94[_0xf3a2('0x18')][_0xf3a2('0x17')]);}})['catch'](function(_0xd78981){logger[_0xf3a2('0x14')](_0xf3a2('0x16'),_0x22c2d4,_0xd78981);_0x1e5e58(_0xd78981);});});}
\ No newline at end of file
+var _0xbd3c=['Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Schedule,\x20%s,\x20%s','info','util','moment','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','then','request\x20sent','debug'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xbd3c,0x1cf));var _0xcbd3=function(_0x37ddc8,_0x21c1f0){_0x37ddc8=_0x37ddc8-0x0;var _0x1993b3=_0xbd3c[_0x37ddc8];return _0x1993b3;};'use strict';var _=require('lodash');var util=require(_0xcbd3('0x0'));var moment=require(_0xcbd3('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcbd3('0x2'));var db=require(_0xcbd3('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xcbd3('0x4'));var config=require(_0xcbd3('0x5'));var jayson=require(_0xcbd3('0x6'));var client=jayson['client'][_0xcbd3('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xd7115a,_0x5cd2d9,_0x33c053){return new BPromise(function(_0x1cb73f,_0x48e85e){return client[_0xcbd3('0x8')](_0xd7115a,_0x33c053)[_0xcbd3('0x9')](function(_0x3cc276){logger['info']('Schedule,\x20%s,\x20%s',_0x5cd2d9,_0xcbd3('0xa'));logger[_0xcbd3('0xb')](_0xcbd3('0xc'),_0x5cd2d9,_0xcbd3('0xa'),JSON[_0xcbd3('0xd')](_0x3cc276));if(_0x3cc276[_0xcbd3('0xe')]){if(_0x3cc276['error'][_0xcbd3('0xf')]===0x1f4){logger[_0xcbd3('0xe')]('Schedule,\x20%s,\x20%s',_0x5cd2d9,_0x3cc276[_0xcbd3('0xe')][_0xcbd3('0x10')]);return _0x48e85e(_0x3cc276['error'][_0xcbd3('0x10')]);}logger['error'](_0xcbd3('0x11'),_0x5cd2d9,_0x3cc276[_0xcbd3('0xe')][_0xcbd3('0x10')]);return _0x1cb73f(_0x3cc276[_0xcbd3('0xe')][_0xcbd3('0x10')]);}else{logger[_0xcbd3('0x12')](_0xcbd3('0x11'),_0x5cd2d9,_0xcbd3('0xa'));_0x1cb73f(_0x3cc276['result'][_0xcbd3('0x10')]);}})['catch'](function(_0x4fd8ca){logger[_0xcbd3('0xe')](_0xcbd3('0x11'),_0x5cd2d9,_0x4fd8ca);_0x48e85e(_0x4fd8ca);});});}
\ No newline at end of file
index 03f6def..c31aca6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d3c=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','index','isAuthenticated','get','/:id','show','create','destroy','exports'];(function(_0x23c02b,_0x411b4d){var _0x25efc5=function(_0x50e9e4){while(--_0x50e9e4){_0x23c02b['push'](_0x23c02b['shift']());}};_0x25efc5(++_0x411b4d);}(_0x7d3c,0xa0));var _0xc7d3=function(_0x5bb998,_0x2da2b1){_0x5bb998=_0x5bb998-0x0;var _0x5bc21a=_0x7d3c[_0x5bb998];return _0x5bc21a;};'use strict';var multer=require(_0xc7d3('0x0'));var util=require('util');var path=require(_0xc7d3('0x1'));var timeout=require(_0xc7d3('0x2'));var express=require(_0xc7d3('0x3'));var router=express[_0xc7d3('0x4')]();var fs_extra=require(_0xc7d3('0x5'));var auth=require(_0xc7d3('0x6'));var interaction=require(_0xc7d3('0x7'));var config=require('../../config/environment');var controller=require('./screenRecording.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xc7d3('0x8')]);router['get']('/describe',auth[_0xc7d3('0x9')](),controller['describe']);router[_0xc7d3('0xa')](_0xc7d3('0xb'),auth[_0xc7d3('0x9')](),controller[_0xc7d3('0xc')]);router[_0xc7d3('0xa')]('/:id/download',auth[_0xc7d3('0x9')](),controller['download']);router['post']('/',auth['isAuthenticated'](),controller[_0xc7d3('0xd')]);router['put'](_0xc7d3('0xb'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0xc7d3('0x9')](),controller[_0xc7d3('0xe')]);module[_0xc7d3('0xf')]=router;
\ No newline at end of file
+var _0x7df3=['../../config/environment','./screenRecording.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','post','create','put','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x3da9b1,_0x7db7b8){var _0x4c7061=function(_0x23da67){while(--_0x23da67){_0x3da9b1['push'](_0x3da9b1['shift']());}};_0x4c7061(++_0x7db7b8);}(_0x7df3,0x160));var _0x37df=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x7df3[_0x3ab9ee];return _0x82ee88;};'use strict';var multer=require(_0x37df('0x0'));var util=require(_0x37df('0x1'));var path=require(_0x37df('0x2'));var timeout=require(_0x37df('0x3'));var express=require(_0x37df('0x4'));var router=express[_0x37df('0x5')]();var fs_extra=require(_0x37df('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x37df('0x7'));var config=require(_0x37df('0x8'));var controller=require(_0x37df('0x9'));router[_0x37df('0xa')]('/',auth[_0x37df('0xb')](),controller[_0x37df('0xc')]);router[_0x37df('0xa')](_0x37df('0xd'),auth[_0x37df('0xb')](),controller[_0x37df('0xe')]);router[_0x37df('0xa')](_0x37df('0xf'),auth[_0x37df('0xb')](),controller[_0x37df('0x10')]);router[_0x37df('0xa')](_0x37df('0x11'),auth['isAuthenticated'](),controller[_0x37df('0x12')]);router[_0x37df('0x13')]('/',auth['isAuthenticated'](),controller[_0x37df('0x14')]);router[_0x37df('0x15')](_0x37df('0xf'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x37df('0xf'),auth[_0x37df('0xb')](),controller[_0x37df('0x16')]);module[_0x37df('0x17')]=router;
\ No newline at end of file
index 22d03c0..f62c7dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6257=['INTEGER','subtract','startedAt','DATE','closedAt','format','MM-DD-YYYY\x20HH:mm','toString','createdAt','sequelize','path','VIRTUAL','getDataValue','value','extname','STRING','setDataValue'];(function(_0x46f6d8,_0x2c8754){var _0x32455c=function(_0x129b93){while(--_0x129b93){_0x46f6d8['push'](_0x46f6d8['shift']());}};_0x32455c(++_0x2c8754);}(_0x6257,0x1d4));var _0x7625=function(_0x5e1328,_0x577b3f){_0x5e1328=_0x5e1328-0x0;var _0x2c5ab9=_0x6257[_0x5e1328];return _0x2c5ab9;};'use strict';var Sequelize=require(_0x7625('0x0'));var moment=require('moment');var path=require(_0x7625('0x1'));var config=require('../../config/environment');module['exports']={'format':{'type':Sequelize[_0x7625('0x2')],'get':function(){return this[_0x7625('0x3')](_0x7625('0x4'))?path[_0x7625('0x5')](this[_0x7625('0x3')](_0x7625('0x4'))):undefined;}},'interactionid':{'type':Sequelize[_0x7625('0x6')]},'channel':{'type':Sequelize[_0x7625('0x6')]},'value':{'type':Sequelize[_0x7625('0x6')],'set':function(_0x427050){var _0x5cf7a8=_0x427050['replace'](/\\/g,'/');this[_0x7625('0x7')](_0x7625('0x4'),_0x5cf7a8);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x7625('0x8')],'set':function(_0x2a2625){this[_0x7625('0x7')]('startedAt',moment()[_0x7625('0x9')](_0x2a2625,'ms'));this[_0x7625('0x7')]('closedAt',moment());this[_0x7625('0x7')]('duration',_0x2a2625);}},'startedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this['getDataValue'](_0x7625('0xa')))['format']('MM-DD-YYYY\x20HH:mm')['toString']();}},'closedAt':{'type':Sequelize[_0x7625('0xb')],'get':function(){return moment(this[_0x7625('0x3')](_0x7625('0xc')))[_0x7625('0xd')](_0x7625('0xe'))[_0x7625('0xf')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this['getDataValue'](_0x7625('0x10')))['format'](_0x7625('0xe'))[_0x7625('0xf')]();}},'updatedAt':{'type':Sequelize[_0x7625('0xb')],'get':function(){return moment(this['getDataValue']('updatedAt'))[_0x7625('0xd')](_0x7625('0xe'))[_0x7625('0xf')]();}}};
\ No newline at end of file
+var _0x29b6=['subtract','closedAt','duration','DATE','MM-DD-YYYY\x20HH:mm','toString','format','createdAt','sequelize','moment','path','../../config/environment','exports','VIRTUAL','getDataValue','value','extname','STRING','replace','INTEGER','setDataValue','startedAt'];(function(_0x5a8cd0,_0x3a8d61){var _0xa01cf8=function(_0x650012){while(--_0x650012){_0x5a8cd0['push'](_0x5a8cd0['shift']());}};_0xa01cf8(++_0x3a8d61);}(_0x29b6,0x17e));var _0x629b=function(_0x12ddd1,_0x57c077){_0x12ddd1=_0x12ddd1-0x0;var _0x21ecc8=_0x29b6[_0x12ddd1];return _0x21ecc8;};'use strict';var Sequelize=require(_0x629b('0x0'));var moment=require(_0x629b('0x1'));var path=require(_0x629b('0x2'));var config=require(_0x629b('0x3'));module[_0x629b('0x4')]={'format':{'type':Sequelize[_0x629b('0x5')],'get':function(){return this[_0x629b('0x6')](_0x629b('0x7'))?path[_0x629b('0x8')](this[_0x629b('0x6')]('value')):undefined;}},'interactionid':{'type':Sequelize[_0x629b('0x9')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0x629b('0x9')],'set':function(_0x4acc5a){var _0x26e439=_0x4acc5a[_0x629b('0xa')](/\\/g,'/');this['setDataValue'](_0x629b('0x7'),_0x26e439);}},'rating':{'type':Sequelize[_0x629b('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize['INTEGER'],'set':function(_0x28c152){this[_0x629b('0xc')](_0x629b('0xd'),moment()[_0x629b('0xe')](_0x28c152,'ms'));this[_0x629b('0xc')](_0x629b('0xf'),moment());this[_0x629b('0xc')](_0x629b('0x10'),_0x28c152);}},'startedAt':{'type':Sequelize[_0x629b('0x11')],'get':function(){return moment(this[_0x629b('0x6')]('startedAt'))['format'](_0x629b('0x12'))[_0x629b('0x13')]();}},'closedAt':{'type':Sequelize[_0x629b('0x11')],'get':function(){return moment(this['getDataValue'](_0x629b('0xf')))[_0x629b('0x14')](_0x629b('0x12'))[_0x629b('0x13')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x629b('0x6')](_0x629b('0x15')))[_0x629b('0x14')](_0x629b('0x12'))[_0x629b('0x13')]();}},'updatedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x629b('0x6')]('updatedAt'))[_0x629b('0x14')](_0x629b('0x12'))[_0x629b('0x13')]();}}};
\ No newline at end of file
index 7259df1..1bc34a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbf5=['papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/license/util','sendStatus','status','json','offset','undefined','count','set','Content-Range','save','update','then','destroy','end','error','stack','name','send','index','map','ScreenRecording','rawAttributes','fieldName','type','key','model','format','query','keys','intersection','fields','attributes','length','nolimit','limit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','duration','createdAt','closedAt','value','describe','download','uniqueid','join','root','server/files/screen_recordings','decryptFile','secrets','recording','existsSync','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0xdbf5,0x18c));var _0x5dbf=function(_0x2e6552,_0x45ade9){_0x2e6552=_0x2e6552-0x0;var _0x370c3a=_0xdbf5[_0x2e6552];return _0x370c3a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5dbf('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5dbf('0x1'));var moment=require(_0x5dbf('0x2'));var BPromise=require(_0x5dbf('0x3'));var Mustache=require(_0x5dbf('0x4'));var util=require(_0x5dbf('0x5'));var path=require(_0x5dbf('0x6'));var sox=require(_0x5dbf('0x7'));var csv=require(_0x5dbf('0x8'));var ejs=require(_0x5dbf('0x9'));var fs=require('fs');var fs_extra=require(_0x5dbf('0xa'));var _=require(_0x5dbf('0xb'));var squel=require(_0x5dbf('0xc'));var crypto=require(_0x5dbf('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x5dbf('0xe'));var toCsv=require('to-csv');var querystring=require(_0x5dbf('0xf'));var Papa=require(_0x5dbf('0x10'));var Redis=require(_0x5dbf('0x11'));var authService=require(_0x5dbf('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5dbf('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5dbf('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5dbf('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x182cec,_0x2bb7ed){_0x2bb7ed=_0x2bb7ed||0xcc;return function(_0x1453a9){if(_0x1453a9){return _0x182cec[_0x5dbf('0x16')](_0x2bb7ed);}return _0x182cec[_0x5dbf('0x17')](_0x2bb7ed)['end']();};}function respondWithResult(_0x4803ca,_0x2b4e1c){_0x2b4e1c=_0x2b4e1c||0xc8;return function(_0x3480c8){if(_0x3480c8){return _0x4803ca['status'](_0x2b4e1c)[_0x5dbf('0x18')](_0x3480c8);}};}function respondWithFilteredResult(_0x248e3c,_0x23f763){return function(_0x2dfa44){if(_0x2dfa44){var _0x181816=typeof _0x23f763[_0x5dbf('0x19')]===_0x5dbf('0x1a')&&typeof _0x23f763['limit']==='undefined';var _0x16dc82=_0x2dfa44[_0x5dbf('0x1b')];var _0x39c7aa=_0x181816?0x0:_0x23f763[_0x5dbf('0x19')];var _0x20c2b0=_0x181816?_0x2dfa44['count']:_0x23f763[_0x5dbf('0x19')]+_0x23f763['limit'];var _0x565efa;if(_0x20c2b0>=_0x16dc82){_0x20c2b0=_0x16dc82;_0x565efa=0xc8;}else{_0x565efa=0xce;}_0x248e3c['status'](_0x565efa);return _0x248e3c[_0x5dbf('0x1c')](_0x5dbf('0x1d'),_0x39c7aa+'-'+_0x20c2b0+'/'+_0x16dc82)[_0x5dbf('0x18')](_0x2dfa44);}return null;};}function patchUpdates(_0x2ab57c){return function(_0x1e3cce){try{jsonpatch['apply'](_0x1e3cce,_0x2ab57c,!![]);}catch(_0x2764ea){return BPromise['reject'](_0x2764ea);}return _0x1e3cce[_0x5dbf('0x1e')]();};}function saveUpdates(_0x11cc67,_0x14d133){return function(_0x43a612){if(_0x43a612){return _0x43a612[_0x5dbf('0x1f')](_0x11cc67)[_0x5dbf('0x20')](function(_0x58085e){return _0x58085e;});}return null;};}function removeEntity(_0x4027c3,_0x3e3a2d){return function(_0x2d3e1b){if(_0x2d3e1b){return _0x2d3e1b[_0x5dbf('0x21')]()[_0x5dbf('0x20')](function(){_0x4027c3[_0x5dbf('0x17')](0xcc)[_0x5dbf('0x22')]();});}};}function handleEntityNotFound(_0x20ab1b,_0x42f13b){return function(_0x15a790){if(!_0x15a790){_0x20ab1b[_0x5dbf('0x16')](0x194);}return _0x15a790;};}function handleError(_0x232c77,_0x3f9e60){_0x3f9e60=_0x3f9e60||0x1f4;return function(_0x407741){logger[_0x5dbf('0x23')](_0x407741[_0x5dbf('0x24')]);if(_0x407741[_0x5dbf('0x25')]){delete _0x407741[_0x5dbf('0x25')];}_0x232c77[_0x5dbf('0x17')](_0x3f9e60)[_0x5dbf('0x26')](_0x407741);};}exports[_0x5dbf('0x27')]=function(_0x471027,_0x21cd00){var _0x5768b7={},_0x2f71eb={},_0x24dc99={'count':0x0,'rows':[]};var _0xc4748=_[_0x5dbf('0x28')](db[_0x5dbf('0x29')][_0x5dbf('0x2a')],function(_0x2a65c5){return{'name':_0x2a65c5[_0x5dbf('0x2b')],'type':_0x2a65c5[_0x5dbf('0x2c')][_0x5dbf('0x2d')]};});_0x2f71eb[_0x5dbf('0x2e')]=_['differenceBy'](_['map'](_0xc4748,_0x5dbf('0x25')),[_0x5dbf('0x2f')]);_0x2f71eb[_0x5dbf('0x30')]=_[_0x5dbf('0x31')](_0x471027[_0x5dbf('0x30')]);_0x2f71eb['filters']=_['intersection'](_0x2f71eb[_0x5dbf('0x2e')],_0x2f71eb[_0x5dbf('0x30')]);_0x5768b7['attributes']=_[_0x5dbf('0x32')](_0x2f71eb[_0x5dbf('0x2e')],qs[_0x5dbf('0x33')](_0x471027[_0x5dbf('0x30')][_0x5dbf('0x33')]));_0x5768b7['attributes']=_0x5768b7[_0x5dbf('0x34')][_0x5dbf('0x35')]?_0x5768b7[_0x5dbf('0x34')]:_0x2f71eb[_0x5dbf('0x2e')];if(!_0x471027[_0x5dbf('0x30')]['hasOwnProperty'](_0x5dbf('0x36'))){_0x5768b7[_0x5dbf('0x37')]=qs[_0x5dbf('0x37')](_0x471027[_0x5dbf('0x30')]['limit']);_0x5768b7[_0x5dbf('0x19')]=qs[_0x5dbf('0x19')](_0x471027[_0x5dbf('0x30')][_0x5dbf('0x19')]);}_0x5768b7[_0x5dbf('0x38')]=qs[_0x5dbf('0x39')](_0x471027[_0x5dbf('0x30')][_0x5dbf('0x39')]);_0x5768b7[_0x5dbf('0x3a')]=qs[_0x5dbf('0x3b')](_[_0x5dbf('0x3c')](_0x471027['query'],_0x2f71eb[_0x5dbf('0x3b')]),_0xc4748);if(_0x471027[_0x5dbf('0x30')][_0x5dbf('0x3d')]){_0x5768b7['where']=_[_0x5dbf('0x3e')](_0x5768b7[_0x5dbf('0x3a')],{'$or':_[_0x5dbf('0x28')](_0xc4748,function(_0x5b3738){if(_0x5b3738[_0x5dbf('0x2c')]!==_0x5dbf('0x3f')){var _0x9bd4c0={};_0x9bd4c0[_0x5b3738['name']]={'$like':'%'+_0x471027[_0x5dbf('0x30')][_0x5dbf('0x3d')]+'%'};return _0x9bd4c0;}})});}_0x5768b7=_[_0x5dbf('0x3e')]({},_0x5768b7,_0x471027[_0x5dbf('0x40')]);var _0x10537d={'where':_0x5768b7[_0x5dbf('0x3a')]};return db[_0x5dbf('0x29')][_0x5dbf('0x1b')](_0x10537d)['then'](function(_0x5be96b){_0x24dc99['count']=_0x5be96b;if(_0x471027['query'][_0x5dbf('0x41')]){_0x5768b7[_0x5dbf('0x42')]=[{'all':!![]}];}return db['ScreenRecording'][_0x5dbf('0x43')](_0x5768b7);})[_0x5dbf('0x20')](function(_0x5a60e8){_0x24dc99[_0x5dbf('0x44')]=_0x5a60e8;return _0x24dc99;})[_0x5dbf('0x20')](respondWithFilteredResult(_0x21cd00,_0x5768b7))[_0x5dbf('0x45')](handleError(_0x21cd00,null));};exports[_0x5dbf('0x46')]=function(_0x21ae10,_0x7c390d){var _0x2745df={'raw':![],'where':{'id':_0x21ae10[_0x5dbf('0x47')]['id']}},_0x1c020a={};_0x1c020a[_0x5dbf('0x2e')]=_['keys'](db[_0x5dbf('0x29')][_0x5dbf('0x2a')]);_0x1c020a[_0x5dbf('0x30')]=_['keys'](_0x21ae10[_0x5dbf('0x30')]);_0x1c020a[_0x5dbf('0x3b')]=_[_0x5dbf('0x32')](_0x1c020a[_0x5dbf('0x2e')],_0x1c020a['query']);_0x2745df[_0x5dbf('0x34')]=_['intersection'](_0x1c020a[_0x5dbf('0x2e')],qs[_0x5dbf('0x33')](_0x21ae10[_0x5dbf('0x30')][_0x5dbf('0x33')]));_0x2745df['attributes']=_0x2745df['attributes'][_0x5dbf('0x35')]?_0x2745df[_0x5dbf('0x34')]:_0x1c020a[_0x5dbf('0x2e')];if(_0x21ae10['query'][_0x5dbf('0x41')]){_0x2745df['include']=[{'all':!![]}];}_0x2745df=_['merge']({},_0x2745df,_0x21ae10['options']);return db['ScreenRecording'][_0x5dbf('0x48')](_0x2745df)[_0x5dbf('0x20')](handleEntityNotFound(_0x7c390d,null))['then'](respondWithResult(_0x7c390d,null))[_0x5dbf('0x45')](handleError(_0x7c390d,null));};exports[_0x5dbf('0x49')]=function(_0x4b6f30,_0x366102){return db[_0x5dbf('0x29')]['create'](_0x4b6f30[_0x5dbf('0x4a')],{})['then'](respondWithResult(_0x366102,0xc9))['catch'](handleError(_0x366102,null));};exports[_0x5dbf('0x1f')]=function(_0x2a3d30,_0x17a1c0){if(_0x2a3d30['body']['id']){delete _0x2a3d30['body']['id'];}delete _0x2a3d30[_0x5dbf('0x4a')][_0x5dbf('0x4b')];delete _0x2a3d30[_0x5dbf('0x4a')][_0x5dbf('0x4c')];delete _0x2a3d30[_0x5dbf('0x4a')][_0x5dbf('0x4d')];delete _0x2a3d30[_0x5dbf('0x4a')][_0x5dbf('0x4e')];return db['ScreenRecording'][_0x5dbf('0x48')]({'where':{'id':_0x2a3d30[_0x5dbf('0x47')]['id']}})[_0x5dbf('0x20')](handleEntityNotFound(_0x17a1c0,null))[_0x5dbf('0x20')](saveUpdates(_0x2a3d30[_0x5dbf('0x4a')],null))[_0x5dbf('0x20')](respondWithResult(_0x17a1c0,null))[_0x5dbf('0x45')](handleError(_0x17a1c0,null));};exports['describe']=function(_0x1b0b13,_0x54f401){return db[_0x5dbf('0x29')][_0x5dbf('0x4f')]()[_0x5dbf('0x20')](respondWithResult(_0x54f401,null))[_0x5dbf('0x45')](handleError(_0x54f401,null));};exports[_0x5dbf('0x50')]=function(_0x1f165d,_0x353d0f,_0x48403a){var _0x5c3c0d=require('../../components/encryptor');var _0x1e1876=![];var _0xfdacc7={};if(_0x1f165d[_0x5dbf('0x30')]['type']&&_0x1f165d['query'][_0x5dbf('0x2c')]===_0x5dbf('0x51')){_0xfdacc7[_0x5dbf('0x51')]=_0x1f165d['params']['id'];}else{_0xfdacc7['id']=_0x1f165d[_0x5dbf('0x47')]['id'];}return db['ScreenRecording'][_0x5dbf('0x48')]({'where':_0xfdacc7,'attributes':['id',_0x5dbf('0x4e')],'raw':!![]})[_0x5dbf('0x20')](handleEntityNotFound(_0x353d0f,null))['then'](function(_0x55fd51){if(_0x55fd51){var _0x1b316d=path[_0x5dbf('0x52')](config[_0x5dbf('0x53')],_0x5dbf('0x54'),_0x55fd51['value']);var _0xfcc43c=util[_0x5dbf('0x2f')]('%s.cypher',_0x1b316d);if(fs['existsSync'](_0xfcc43c)){_0x1e1876=!![];return _0x5c3c0d[_0x5dbf('0x55')](_0xfcc43c,_0x1b316d,config[_0x5dbf('0x56')][_0x5dbf('0x57')])[_0x5dbf('0x20')](function(){return _0x55fd51;});}return _0x55fd51;}})[_0x5dbf('0x20')](function(_0x4711d5){if(_0x4711d5){var _0x50a029=path[_0x5dbf('0x52')](config['root'],'server/files/screen_recordings',_0x4711d5['value']);if(!fs[_0x5dbf('0x58')](_0x50a029)){throw new db['Sequelize'][(_0x5dbf('0x59'))](_0x5dbf('0x5a'));}if(_0x4711d5[_0x5dbf('0x5b')]){return _0x353d0f[_0x5dbf('0x50')](_0x50a029,_0x4711d5[_0x5dbf('0x5b')]+path[_0x5dbf('0x5c')](_0x50a029),function(){if(_0x1e1876){fs[_0x5dbf('0x5d')](_0x50a029);}});}else{return _0x353d0f[_0x5dbf('0x50')](_0x50a029,function(_0x2c84d6){if(_0x1e1876){fs[_0x5dbf('0x5d')](_0x50a029);}});}}})[_0x5dbf('0x45')](function(_0x2ca889){if(_0x2ca889[_0x5dbf('0x5e')]===_0x5dbf('0x5a')){_0x353d0f[_0x5dbf('0x17')](0x194)['send'](_0x5dbf('0x5f'));}else{return handleError(_0x353d0f,null);}});};exports['destroy']=function(_0xb0a9bf,_0xfc5817){return db[_0x5dbf('0x29')][_0x5dbf('0x48')]({'where':{'id':_0xb0a9bf['params']['id']}})[_0x5dbf('0x20')](function(_0x1ade34){if(_[_0x5dbf('0x60')](_0x1ade34)){throw new ReferenceError(_0x5dbf('0x61'));}return _0x1ade34;})[_0x5dbf('0x20')](function(_0x40982f){var _0x52efd7=path[_0x5dbf('0x52')](config[_0x5dbf('0x53')],_0x5dbf('0x54'),_0x40982f[_0x5dbf('0x4e')]);logger[_0x5dbf('0x62')](_0x5dbf('0x63'),_0x52efd7);if(!_[_0x5dbf('0x60')](_0x40982f[_0x5dbf('0x4e')])&&fs[_0x5dbf('0x58')](_0x52efd7)){logger[_0x5dbf('0x62')](_0x5dbf('0x64')+_0x52efd7+_0x5dbf('0x65'));fs['unlinkSync'](_0x52efd7);}_0x52efd7=_0x52efd7+'.cypher';if(!_[_0x5dbf('0x60')](_0x40982f[_0x5dbf('0x4e')])&&fs[_0x5dbf('0x58')](_0x52efd7)){logger[_0x5dbf('0x62')](_0x5dbf('0x64')+_0x52efd7+_0x5dbf('0x65'));fs[_0x5dbf('0x66')](_0x52efd7);}return _0x40982f;})[_0x5dbf('0x20')](function(_0x3a4001){if(!_0x3a4001)throw new InternalError();return _0x3a4001['destroy']();})['then'](function(){_0xfc5817['status'](0xcc)['end']();})[_0x5dbf('0x45')](handleError(_0xfc5817,null));};
\ No newline at end of file
+var _0xac31=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','ScreenRecording','rawAttributes','type','key','model','differenceBy','format','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','options','then','includeAll','findAll','rows','catch','params','find','create','body','createdAt','closedAt','value','describe','download','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','%s.cypher','existsSync','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher'];(function(_0x2300f2,_0x315c5f){var _0x6bd508=function(_0x2fa0f6){while(--_0x2fa0f6){_0x2300f2['push'](_0x2300f2['shift']());}};_0x6bd508(++_0x315c5f);}(_0xac31,0xca));var _0x1ac3=function(_0x49ecb0,_0x3152d4){_0x49ecb0=_0x49ecb0-0x0;var _0xd956a=_0xac31[_0x49ecb0];return _0xd956a;};'use strict';var emlformat=require(_0x1ac3('0x0'));var rimraf=require(_0x1ac3('0x1'));var zipdir=require(_0x1ac3('0x2'));var jsonpatch=require(_0x1ac3('0x3'));var rp=require(_0x1ac3('0x4'));var moment=require(_0x1ac3('0x5'));var BPromise=require(_0x1ac3('0x6'));var Mustache=require('mustache');var util=require(_0x1ac3('0x7'));var path=require(_0x1ac3('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x1ac3('0x9'));var fs=require('fs');var fs_extra=require(_0x1ac3('0xa'));var _=require(_0x1ac3('0xb'));var squel=require(_0x1ac3('0xc'));var crypto=require(_0x1ac3('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1ac3('0xe'));var toCsv=require('to-csv');var querystring=require(_0x1ac3('0xf'));var Papa=require(_0x1ac3('0x10'));var Redis=require(_0x1ac3('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x1ac3('0x12'));var as=require(_0x1ac3('0x13'));var hardwareService=require(_0x1ac3('0x14'));var logger=require(_0x1ac3('0x15'))(_0x1ac3('0x16'));var utils=require(_0x1ac3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x1ac3('0x18'));var db=require(_0x1ac3('0x19'))['db'];function respondWithStatusCode(_0x2eeabf,_0x2338b9){_0x2338b9=_0x2338b9||0xcc;return function(_0x50d3b6){if(_0x50d3b6){return _0x2eeabf[_0x1ac3('0x1a')](_0x2338b9);}return _0x2eeabf[_0x1ac3('0x1b')](_0x2338b9)[_0x1ac3('0x1c')]();};}function respondWithResult(_0x2def9f,_0x53cc35){_0x53cc35=_0x53cc35||0xc8;return function(_0x24bb5e){if(_0x24bb5e){return _0x2def9f[_0x1ac3('0x1b')](_0x53cc35)['json'](_0x24bb5e);}};}function respondWithFilteredResult(_0x29a7b3,_0x1f9641){return function(_0x38b52a){if(_0x38b52a){var _0x51f1e4=typeof _0x1f9641[_0x1ac3('0x1d')]===_0x1ac3('0x1e')&&typeof _0x1f9641[_0x1ac3('0x1f')]==='undefined';var _0x195683=_0x38b52a['count'];var _0x291616=_0x51f1e4?0x0:_0x1f9641[_0x1ac3('0x1d')];var _0x20091d=_0x51f1e4?_0x38b52a[_0x1ac3('0x20')]:_0x1f9641[_0x1ac3('0x1d')]+_0x1f9641['limit'];var _0x136e73;if(_0x20091d>=_0x195683){_0x20091d=_0x195683;_0x136e73=0xc8;}else{_0x136e73=0xce;}_0x29a7b3[_0x1ac3('0x1b')](_0x136e73);return _0x29a7b3[_0x1ac3('0x21')](_0x1ac3('0x22'),_0x291616+'-'+_0x20091d+'/'+_0x195683)['json'](_0x38b52a);}return null;};}function patchUpdates(_0x48d18a){return function(_0x2879d8){try{jsonpatch[_0x1ac3('0x23')](_0x2879d8,_0x48d18a,!![]);}catch(_0x14070b){return BPromise[_0x1ac3('0x24')](_0x14070b);}return _0x2879d8[_0x1ac3('0x25')]();};}function saveUpdates(_0x319988,_0x23b767){return function(_0x10912a){if(_0x10912a){return _0x10912a[_0x1ac3('0x26')](_0x319988)['then'](function(_0x1e277f){return _0x1e277f;});}return null;};}function removeEntity(_0x231b7f,_0x4b19f2){return function(_0x2b5182){if(_0x2b5182){return _0x2b5182[_0x1ac3('0x27')]()['then'](function(){_0x231b7f[_0x1ac3('0x1b')](0xcc)[_0x1ac3('0x1c')]();});}};}function handleEntityNotFound(_0x145486,_0x2dfdb7){return function(_0x10db3d){if(!_0x10db3d){_0x145486['sendStatus'](0x194);}return _0x10db3d;};}function handleError(_0x5a2ab2,_0x503a64){_0x503a64=_0x503a64||0x1f4;return function(_0x528807){logger['error'](_0x528807[_0x1ac3('0x28')]);if(_0x528807['name']){delete _0x528807[_0x1ac3('0x29')];}_0x5a2ab2[_0x1ac3('0x1b')](_0x503a64)[_0x1ac3('0x2a')](_0x528807);};}exports[_0x1ac3('0x2b')]=function(_0x4b3d3c,_0x61441d){var _0x541da0={},_0x2ddd73={},_0x4000b0={'count':0x0,'rows':[]};var _0x440aed=_[_0x1ac3('0x2c')](db[_0x1ac3('0x2d')][_0x1ac3('0x2e')],function(_0x9c17c2){return{'name':_0x9c17c2['fieldName'],'type':_0x9c17c2[_0x1ac3('0x2f')][_0x1ac3('0x30')]};});_0x2ddd73[_0x1ac3('0x31')]=_[_0x1ac3('0x32')](_['map'](_0x440aed,_0x1ac3('0x29')),[_0x1ac3('0x33')]);_0x2ddd73[_0x1ac3('0x34')]=_[_0x1ac3('0x35')](_0x4b3d3c[_0x1ac3('0x34')]);_0x2ddd73['filters']=_[_0x1ac3('0x36')](_0x2ddd73[_0x1ac3('0x31')],_0x2ddd73[_0x1ac3('0x34')]);_0x541da0[_0x1ac3('0x37')]=_[_0x1ac3('0x36')](_0x2ddd73[_0x1ac3('0x31')],qs['fields'](_0x4b3d3c[_0x1ac3('0x34')][_0x1ac3('0x38')]));_0x541da0[_0x1ac3('0x37')]=_0x541da0[_0x1ac3('0x37')]['length']?_0x541da0[_0x1ac3('0x37')]:_0x2ddd73[_0x1ac3('0x31')];if(!_0x4b3d3c[_0x1ac3('0x34')][_0x1ac3('0x39')](_0x1ac3('0x3a'))){_0x541da0[_0x1ac3('0x1f')]=qs[_0x1ac3('0x1f')](_0x4b3d3c[_0x1ac3('0x34')][_0x1ac3('0x1f')]);_0x541da0['offset']=qs[_0x1ac3('0x1d')](_0x4b3d3c[_0x1ac3('0x34')]['offset']);}_0x541da0[_0x1ac3('0x3b')]=qs[_0x1ac3('0x3c')](_0x4b3d3c[_0x1ac3('0x34')][_0x1ac3('0x3c')]);_0x541da0[_0x1ac3('0x3d')]=qs[_0x1ac3('0x3e')](_[_0x1ac3('0x3f')](_0x4b3d3c[_0x1ac3('0x34')],_0x2ddd73['filters']),_0x440aed);if(_0x4b3d3c[_0x1ac3('0x34')]['filter']){_0x541da0[_0x1ac3('0x3d')]=_[_0x1ac3('0x40')](_0x541da0[_0x1ac3('0x3d')],{'$or':_[_0x1ac3('0x2c')](_0x440aed,function(_0x3141ae){if(_0x3141ae[_0x1ac3('0x2f')]!=='VIRTUAL'){var _0x3b5c1c={};_0x3b5c1c[_0x3141ae[_0x1ac3('0x29')]]={'$like':'%'+_0x4b3d3c[_0x1ac3('0x34')]['filter']+'%'};return _0x3b5c1c;}})});}_0x541da0=_[_0x1ac3('0x40')]({},_0x541da0,_0x4b3d3c[_0x1ac3('0x41')]);var _0x5cec6b={'where':_0x541da0[_0x1ac3('0x3d')]};return db[_0x1ac3('0x2d')][_0x1ac3('0x20')](_0x5cec6b)[_0x1ac3('0x42')](function(_0x466a45){_0x4000b0[_0x1ac3('0x20')]=_0x466a45;if(_0x4b3d3c[_0x1ac3('0x34')][_0x1ac3('0x43')]){_0x541da0['include']=[{'all':!![]}];}return db[_0x1ac3('0x2d')][_0x1ac3('0x44')](_0x541da0);})[_0x1ac3('0x42')](function(_0x254a77){_0x4000b0[_0x1ac3('0x45')]=_0x254a77;return _0x4000b0;})[_0x1ac3('0x42')](respondWithFilteredResult(_0x61441d,_0x541da0))[_0x1ac3('0x46')](handleError(_0x61441d,null));};exports['show']=function(_0x4edc4d,_0x2c2099){var _0x3f60ca={'raw':![],'where':{'id':_0x4edc4d[_0x1ac3('0x47')]['id']}},_0x4972d1={};_0x4972d1[_0x1ac3('0x31')]=_['keys'](db[_0x1ac3('0x2d')]['rawAttributes']);_0x4972d1[_0x1ac3('0x34')]=_[_0x1ac3('0x35')](_0x4edc4d[_0x1ac3('0x34')]);_0x4972d1[_0x1ac3('0x3e')]=_['intersection'](_0x4972d1[_0x1ac3('0x31')],_0x4972d1[_0x1ac3('0x34')]);_0x3f60ca[_0x1ac3('0x37')]=_[_0x1ac3('0x36')](_0x4972d1[_0x1ac3('0x31')],qs['fields'](_0x4edc4d[_0x1ac3('0x34')][_0x1ac3('0x38')]));_0x3f60ca[_0x1ac3('0x37')]=_0x3f60ca[_0x1ac3('0x37')]['length']?_0x3f60ca[_0x1ac3('0x37')]:_0x4972d1[_0x1ac3('0x31')];if(_0x4edc4d[_0x1ac3('0x34')][_0x1ac3('0x43')]){_0x3f60ca['include']=[{'all':!![]}];}_0x3f60ca=_[_0x1ac3('0x40')]({},_0x3f60ca,_0x4edc4d[_0x1ac3('0x41')]);return db[_0x1ac3('0x2d')][_0x1ac3('0x48')](_0x3f60ca)['then'](handleEntityNotFound(_0x2c2099,null))[_0x1ac3('0x42')](respondWithResult(_0x2c2099,null))['catch'](handleError(_0x2c2099,null));};exports[_0x1ac3('0x49')]=function(_0x10bcaf,_0x2e3347){return db[_0x1ac3('0x2d')][_0x1ac3('0x49')](_0x10bcaf[_0x1ac3('0x4a')],{})[_0x1ac3('0x42')](respondWithResult(_0x2e3347,0xc9))['catch'](handleError(_0x2e3347,null));};exports['update']=function(_0xe8f33c,_0x249c2d){if(_0xe8f33c[_0x1ac3('0x4a')]['id']){delete _0xe8f33c['body']['id'];}delete _0xe8f33c['body']['duration'];delete _0xe8f33c[_0x1ac3('0x4a')][_0x1ac3('0x4b')];delete _0xe8f33c['body'][_0x1ac3('0x4c')];delete _0xe8f33c[_0x1ac3('0x4a')][_0x1ac3('0x4d')];return db[_0x1ac3('0x2d')]['find']({'where':{'id':_0xe8f33c['params']['id']}})[_0x1ac3('0x42')](handleEntityNotFound(_0x249c2d,null))[_0x1ac3('0x42')](saveUpdates(_0xe8f33c['body'],null))[_0x1ac3('0x42')](respondWithResult(_0x249c2d,null))['catch'](handleError(_0x249c2d,null));};exports['describe']=function(_0x2d628d,_0x220dd0){return db['ScreenRecording'][_0x1ac3('0x4e')]()['then'](respondWithResult(_0x220dd0,null))[_0x1ac3('0x46')](handleError(_0x220dd0,null));};exports[_0x1ac3('0x4f')]=function(_0x3586b9,_0x3a0320,_0x34ad43){var _0x40e9c7=require(_0x1ac3('0x50'));var _0x331374=![];var _0xeb7e49={};if(_0x3586b9[_0x1ac3('0x34')][_0x1ac3('0x2f')]&&_0x3586b9['query']['type']===_0x1ac3('0x51')){_0xeb7e49[_0x1ac3('0x51')]=_0x3586b9[_0x1ac3('0x47')]['id'];}else{_0xeb7e49['id']=_0x3586b9[_0x1ac3('0x47')]['id'];}return db[_0x1ac3('0x2d')][_0x1ac3('0x48')]({'where':_0xeb7e49,'attributes':['id',_0x1ac3('0x4d')],'raw':!![]})[_0x1ac3('0x42')](handleEntityNotFound(_0x3a0320,null))[_0x1ac3('0x42')](function(_0x3149f6){if(_0x3149f6){var _0x541bba=path[_0x1ac3('0x52')](config[_0x1ac3('0x53')],_0x1ac3('0x54'),_0x3149f6[_0x1ac3('0x4d')]);var _0x20c195=util['format'](_0x1ac3('0x55'),_0x541bba);if(fs[_0x1ac3('0x56')](_0x20c195)){_0x331374=!![];return _0x40e9c7['decryptFile'](_0x20c195,_0x541bba,config['secrets']['recording'])[_0x1ac3('0x42')](function(){return _0x3149f6;});}return _0x3149f6;}})[_0x1ac3('0x42')](function(_0x2a1f66){if(_0x2a1f66){var _0x5ad546=path[_0x1ac3('0x52')](config['root'],'server/files/screen_recordings',_0x2a1f66['value']);if(!fs['existsSync'](_0x5ad546)){throw new db[(_0x1ac3('0x57'))][(_0x1ac3('0x58'))](_0x1ac3('0x59'));}if(_0x2a1f66[_0x1ac3('0x5a')]){return _0x3a0320[_0x1ac3('0x4f')](_0x5ad546,_0x2a1f66['filename']+path[_0x1ac3('0x5b')](_0x5ad546),function(){if(_0x331374){fs[_0x1ac3('0x5c')](_0x5ad546);}});}else{return _0x3a0320['download'](_0x5ad546,function(_0x2bcb4b){if(_0x331374){fs[_0x1ac3('0x5c')](_0x5ad546);}});}}})[_0x1ac3('0x46')](function(_0x2e79b2){if(_0x2e79b2[_0x1ac3('0x5d')]==='ScreenRecording\x20not\x20found'){_0x3a0320[_0x1ac3('0x1b')](0x194)[_0x1ac3('0x2a')](_0x1ac3('0x5e'));}else{return handleError(_0x3a0320,null);}});};exports[_0x1ac3('0x27')]=function(_0x4cfa04,_0x19407a){return db[_0x1ac3('0x2d')][_0x1ac3('0x48')]({'where':{'id':_0x4cfa04[_0x1ac3('0x47')]['id']}})[_0x1ac3('0x42')](function(_0x1ac283){if(_['isNil'](_0x1ac283)){throw new ReferenceError('Entity\x20not\x20found');}return _0x1ac283;})['then'](function(_0x582fe2){var _0x3b930b=path['join'](config[_0x1ac3('0x53')],_0x1ac3('0x54'),_0x582fe2[_0x1ac3('0x4d')]);logger[_0x1ac3('0x5f')](_0x1ac3('0x60'),_0x3b930b);if(!_[_0x1ac3('0x61')](_0x582fe2['value'])&&fs[_0x1ac3('0x56')](_0x3b930b)){logger[_0x1ac3('0x5f')](_0x1ac3('0x62')+_0x3b930b+_0x1ac3('0x63'));fs['unlinkSync'](_0x3b930b);}_0x3b930b=_0x3b930b+_0x1ac3('0x64');if(!_[_0x1ac3('0x61')](_0x582fe2[_0x1ac3('0x4d')])&&fs[_0x1ac3('0x56')](_0x3b930b)){logger[_0x1ac3('0x5f')]('File:\x20\x22'+_0x3b930b+_0x1ac3('0x63'));fs['unlinkSync'](_0x3b930b);}return _0x582fe2;})['then'](function(_0x402507){if(!_0x402507)throw new InternalError();return _0x402507[_0x1ac3('0x27')]();})[_0x1ac3('0x42')](function(){_0x19407a[_0x1ac3('0x1b')](0xcc)[_0x1ac3('0x1c')]();})[_0x1ac3('0x46')](handleError(_0x19407a,null));};
\ No newline at end of file
index a6e776d..dbf1445 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8da=['../../config/environment','./screenRecording.attributes','screen_recordings','interactionid','lodash','util','api','bluebird','path','rimraf'];(function(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0xa8da,0x14e));var _0xaa8d=function(_0x5cf944,_0x2910da){_0x5cf944=_0x5cf944-0x0;var _0x35d292=_0xa8da[_0x5cf944];return _0x35d292;};'use strict';var _=require(_0xaa8d('0x0'));var util=require(_0xaa8d('0x1'));var logger=require('../../config/logger')(_0xaa8d('0x2'));var moment=require('moment');var BPromise=require(_0xaa8d('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xaa8d('0x4'));var rimraf=require(_0xaa8d('0x5'));var config=require(_0xaa8d('0x6'));var attributes=require(_0xaa8d('0x7'));module['exports']=function(_0x523788,_0xd22aec){return _0x523788['define']('ScreenRecording',attributes,{'tableName':_0xaa8d('0x8'),'paranoid':![],'indexes':[{'name':_0xaa8d('0x9'),'fields':['interactionid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x880f=['ScreenRecording','screen_recordings','interactionid','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./screenRecording.attributes','exports','define'];(function(_0x3d391b,_0x139db6){var _0x34adb6=function(_0x464b1e){while(--_0x464b1e){_0x3d391b['push'](_0x3d391b['shift']());}};_0x34adb6(++_0x139db6);}(_0x880f,0x1ed));var _0xf880=function(_0x25bd3a,_0xa4eda2){_0x25bd3a=_0x25bd3a-0x0;var _0x50e640=_0x880f[_0x25bd3a];return _0x50e640;};'use strict';var _=require(_0xf880('0x0'));var util=require(_0xf880('0x1'));var logger=require(_0xf880('0x2'))(_0xf880('0x3'));var moment=require(_0xf880('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf880('0x5'));var rimraf=require(_0xf880('0x6'));var config=require(_0xf880('0x7'));var attributes=require(_0xf880('0x8'));module[_0xf880('0x9')]=function(_0x5c6151,_0x8b6543){return _0x5c6151[_0xf880('0xa')](_0xf880('0xb'),attributes,{'tableName':_0xf880('0xc'),'paranoid':![],'indexes':[{'name':'interactionid','fields':[_0xf880('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 288f686..4d2c656 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8041=['http','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x2fbe40,_0xde4bdb){var _0x5b25f7=function(_0x3c8856){while(--_0x3c8856){_0x2fbe40['push'](_0x2fbe40['shift']());}};_0x5b25f7(++_0xde4bdb);}(_0x8041,0x14c));var _0x1804=function(_0x392def,_0xc13f99){_0x392def=_0x392def-0x0;var _0x325ceb=_0x8041[_0x392def];return _0x325ceb;};'use strict';var _=require(_0x1804('0x0'));var util=require(_0x1804('0x1'));var moment=require(_0x1804('0x2'));var BPromise=require('bluebird');var rs=require(_0x1804('0x3'));var fs=require('fs');var Redis=require(_0x1804('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1804('0x5'));var logger=require(_0x1804('0x6'))('rpc');var config=require(_0x1804('0x7'));var jayson=require(_0x1804('0x8'));var client=jayson[_0x1804('0x9')][_0x1804('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x12d695,_0x582ce8,_0x57206e){return new BPromise(function(_0x32a96c,_0x4c49b9){return client['request'](_0x12d695,_0x57206e)['then'](function(_0x529333){logger['info'](_0x1804('0xb'),_0x582ce8,_0x1804('0xc'));logger[_0x1804('0xd')](_0x1804('0xe'),_0x582ce8,'request\x20sent',JSON[_0x1804('0xf')](_0x529333));if(_0x529333['error']){if(_0x529333[_0x1804('0x10')]['code']===0x1f4){logger[_0x1804('0x10')](_0x1804('0xb'),_0x582ce8,_0x529333[_0x1804('0x10')]['message']);return _0x4c49b9(_0x529333['error'][_0x1804('0x11')]);}logger['error'](_0x1804('0xb'),_0x582ce8,_0x529333[_0x1804('0x10')][_0x1804('0x11')]);return _0x32a96c(_0x529333['error'][_0x1804('0x11')]);}else{logger['info'](_0x1804('0xb'),_0x582ce8,_0x1804('0xc'));_0x32a96c(_0x529333[_0x1804('0x12')][_0x1804('0x11')]);}})['catch'](function(_0x254a5d){logger[_0x1804('0x10')](_0x1804('0xb'),_0x582ce8,_0x254a5d);_0x4c49b9(_0x254a5d);});});}
\ No newline at end of file
+var _0xd773=['../../config/logger','rpc','../../config/environment','jayson/promise','request','then','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x243f44,_0x240033){var _0x4531e9=function(_0x488dce){while(--_0x488dce){_0x243f44['push'](_0x243f44['shift']());}};_0x4531e9(++_0x240033);}(_0xd773,0x158));var _0x3d77=function(_0x57d18a,_0x4511f2){_0x57d18a=_0x57d18a-0x0;var _0x190149=_0xd773[_0x57d18a];return _0x190149;};'use strict';var _=require(_0x3d77('0x0'));var util=require(_0x3d77('0x1'));var moment=require(_0x3d77('0x2'));var BPromise=require(_0x3d77('0x3'));var rs=require(_0x3d77('0x4'));var fs=require('fs');var Redis=require(_0x3d77('0x5'));var db=require(_0x3d77('0x6'))['db'];var utils=require(_0x3d77('0x7'));var logger=require(_0x3d77('0x8'))(_0x3d77('0x9'));var config=require(_0x3d77('0xa'));var jayson=require(_0x3d77('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xabc98a,_0x57fdf1,_0x32f93e){return new BPromise(function(_0x4e2c7c,_0x74b603){return client[_0x3d77('0xc')](_0xabc98a,_0x32f93e)[_0x3d77('0xd')](function(_0x2e83a7){logger['info'](_0x3d77('0xe'),_0x57fdf1,_0x3d77('0xf'));logger[_0x3d77('0x10')]('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x57fdf1,'request\x20sent',JSON[_0x3d77('0x11')](_0x2e83a7));if(_0x2e83a7[_0x3d77('0x12')]){if(_0x2e83a7[_0x3d77('0x12')][_0x3d77('0x13')]===0x1f4){logger[_0x3d77('0x12')](_0x3d77('0xe'),_0x57fdf1,_0x2e83a7[_0x3d77('0x12')]['message']);return _0x74b603(_0x2e83a7['error']['message']);}logger[_0x3d77('0x12')](_0x3d77('0xe'),_0x57fdf1,_0x2e83a7['error'][_0x3d77('0x14')]);return _0x4e2c7c(_0x2e83a7[_0x3d77('0x12')][_0x3d77('0x14')]);}else{logger[_0x3d77('0x15')](_0x3d77('0xe'),_0x57fdf1,_0x3d77('0xf'));_0x4e2c7c(_0x2e83a7['result'][_0x3d77('0x14')]);}})['catch'](function(_0x2b454b){logger[_0x3d77('0x12')](_0x3d77('0xe'),_0x57fdf1,_0x2b454b);_0x74b603(_0x2b454b);});});}
\ No newline at end of file
index 6cebd91..60642bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x487e=['extname','originalname','post','single','file','addLogo','%s%s','logologin','preferred','/:id/preferred','addPreferred','favicon','addFavicon','put','update','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','/now','getDate','/:id','/:id/logo','getLogoLogin','/:id/gdpr','gdpr','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','format','logo'];(function(_0x1f7201,_0x141b79){var _0x289fd2=function(_0x20ce23){while(--_0x20ce23){_0x1f7201['push'](_0x1f7201['shift']());}};_0x289fd2(++_0x141b79);}(_0x487e,0x118));var _0xe487=function(_0x13450c,_0xa59532){_0x13450c=_0x13450c-0x0;var _0x358d31=_0x487e[_0x13450c];return _0x358d31;};'use strict';var multer=require(_0xe487('0x0'));var util=require(_0xe487('0x1'));var path=require(_0xe487('0x2'));var timeout=require(_0xe487('0x3'));var express=require('express');var router=express[_0xe487('0x4')]();var fs_extra=require(_0xe487('0x5'));var auth=require(_0xe487('0x6'));var interaction=require(_0xe487('0x7'));var config=require(_0xe487('0x8'));var controller=require(_0xe487('0x9'));router[_0xe487('0xa')]('/',auth[_0xe487('0xb')](),controller['index']);router[_0xe487('0xa')](_0xe487('0xc'),controller[_0xe487('0xd')]);router['get'](_0xe487('0xe'),controller['show']);router[_0xe487('0xa')](_0xe487('0xf'),controller['getLogo']);router[_0xe487('0xa')]('/:id/logo_login',controller[_0xe487('0x10')]);router[_0xe487('0xa')](_0xe487('0x11'),controller[_0xe487('0x12')]);router[_0xe487('0xa')]('/:id/preferred',controller[_0xe487('0x13')]);router[_0xe487('0xa')](_0xe487('0x14'),controller[_0xe487('0x15')]);var upload=multer({'storage':multer[_0xe487('0x16')]({'destination':function(_0x2a9e11,_0xf697c,_0xd62c92){_0xd62c92(null,path[_0xe487('0x17')](config[_0xe487('0x18')],_0xe487('0x19')));},'filename':function(_0x1786f7,_0x122ae9,_0x270676){_0x270676(null,util[_0xe487('0x1a')]('%s%s',_0xe487('0x1b'),path[_0xe487('0x1c')](_0x122ae9[_0xe487('0x1d')])));}})});router[_0xe487('0x1e')](_0xe487('0xf'),upload[_0xe487('0x1f')](_0xe487('0x20')),controller[_0xe487('0x21')]);var upload=multer({'storage':multer[_0xe487('0x16')]({'destination':function(_0x1e16ae,_0x4eca42,_0x2c9fec){_0x2c9fec(null,path[_0xe487('0x17')](config[_0xe487('0x18')],_0xe487('0x19')));},'filename':function(_0x3eff58,_0xe09e19,_0x466b56){_0x466b56(null,util[_0xe487('0x1a')](_0xe487('0x22'),_0xe487('0x23'),path['extname'](_0xe09e19['originalname'])));}})});router[_0xe487('0x1e')]('/:id/logo_login',upload[_0xe487('0x1f')](_0xe487('0x20')),controller['addLogoLogin']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xd67b18,_0x4d6f7c,_0x2c4852){_0x2c4852(null,path[_0xe487('0x17')](config['root'],_0xe487('0x19')));},'filename':function(_0x5cfbf3,_0x24abec,_0x785fac){_0x785fac(null,util[_0xe487('0x1a')](_0xe487('0x22'),_0xe487('0x24'),path[_0xe487('0x1c')](_0x24abec[_0xe487('0x1d')])));}})});router[_0xe487('0x1e')](_0xe487('0x25'),upload[_0xe487('0x1f')]('file'),controller[_0xe487('0x26')]);var upload=multer({'storage':multer[_0xe487('0x16')]({'destination':function(_0x94c119,_0xc5aae0,_0x377191){_0x377191(null,path[_0xe487('0x17')](config[_0xe487('0x18')],_0xe487('0x19')));},'filename':function(_0x1259f5,_0x3b86d9,_0x4c0f2c){_0x4c0f2c(null,util['format']('%s%s',_0xe487('0x27'),path[_0xe487('0x1c')](_0x3b86d9[_0xe487('0x1d')])));}})});router['post']('/:id/favicon',upload[_0xe487('0x1f')](_0xe487('0x20')),controller[_0xe487('0x28')]);router[_0xe487('0x29')](_0xe487('0xe'),auth[_0xe487('0xb')](),controller[_0xe487('0x2a')]);module[_0xe487('0x2b')]=router;
\ No newline at end of file
+var _0x5919=['diskStorage','root','server/files/images/logos/','format','%s%s','logo','extname','originalname','post','/:id/logo','single','file','addLogo','join','logologin','addLogoLogin','addPreferred','favicon','addFavicon','update','exports','multer','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','/now','getDate','/:id','show','/:id/logo_login','getLogoLogin','gdpr','/:id/preferred','getPreferred','/:id/favicon'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0x5919,0x15d));var _0x9591=function(_0x4c677c,_0x31c8e9){_0x4c677c=_0x4c677c-0x0;var _0x4f5d0c=_0x5919[_0x4c677c];return _0x4f5d0c;};'use strict';var multer=require(_0x9591('0x0'));var util=require(_0x9591('0x1'));var path=require('path');var timeout=require(_0x9591('0x2'));var express=require(_0x9591('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9591('0x4'));var interaction=require(_0x9591('0x5'));var config=require(_0x9591('0x6'));var controller=require(_0x9591('0x7'));router[_0x9591('0x8')]('/',auth[_0x9591('0x9')](),controller['index']);router[_0x9591('0x8')](_0x9591('0xa'),controller[_0x9591('0xb')]);router['get'](_0x9591('0xc'),controller[_0x9591('0xd')]);router['get']('/:id/logo',controller['getLogo']);router[_0x9591('0x8')](_0x9591('0xe'),controller[_0x9591('0xf')]);router['get']('/:id/gdpr',controller[_0x9591('0x10')]);router[_0x9591('0x8')](_0x9591('0x11'),controller[_0x9591('0x12')]);router[_0x9591('0x8')](_0x9591('0x13'),controller['getFavicon']);var upload=multer({'storage':multer[_0x9591('0x14')]({'destination':function(_0x4c3a62,_0x59fae9,_0x5517d7){_0x5517d7(null,path['join'](config[_0x9591('0x15')],_0x9591('0x16')));},'filename':function(_0x42f6c6,_0x14d65d,_0x404ae6){_0x404ae6(null,util[_0x9591('0x17')](_0x9591('0x18'),_0x9591('0x19'),path[_0x9591('0x1a')](_0x14d65d[_0x9591('0x1b')])));}})});router[_0x9591('0x1c')](_0x9591('0x1d'),upload[_0x9591('0x1e')](_0x9591('0x1f')),controller[_0x9591('0x20')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x2ad440,_0x23c199,_0x5d1173){_0x5d1173(null,path[_0x9591('0x21')](config['root'],'server/files/images/logos/'));},'filename':function(_0x21d975,_0x4caa13,_0x1e83e6){_0x1e83e6(null,util['format'](_0x9591('0x18'),_0x9591('0x22'),path[_0x9591('0x1a')](_0x4caa13['originalname'])));}})});router[_0x9591('0x1c')](_0x9591('0xe'),upload[_0x9591('0x1e')]('file'),controller[_0x9591('0x23')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4e4b8c,_0x1216c9,_0x126671){_0x126671(null,path[_0x9591('0x21')](config[_0x9591('0x15')],_0x9591('0x16')));},'filename':function(_0xaa1ed1,_0x57def9,_0x605661){_0x605661(null,util[_0x9591('0x17')](_0x9591('0x18'),'preferred',path['extname'](_0x57def9[_0x9591('0x1b')])));}})});router[_0x9591('0x1c')](_0x9591('0x11'),upload[_0x9591('0x1e')](_0x9591('0x1f')),controller[_0x9591('0x24')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x49ac73,_0x11592b,_0xfbb60){_0xfbb60(null,path['join'](config[_0x9591('0x15')],_0x9591('0x16')));},'filename':function(_0x1c1c4a,_0x2b7bbf,_0x360c6f){_0x360c6f(null,util['format'](_0x9591('0x18'),_0x9591('0x25'),path[_0x9591('0x1a')](_0x2b7bbf[_0x9591('0x1b')])));}})});router[_0x9591('0x1c')](_0x9591('0x13'),upload[_0x9591('0x1e')](_0x9591('0x1f')),controller[_0x9591('0x26')]);router['put'](_0x9591('0xc'),auth[_0x9591('0x9')](),controller[_0x9591('0x27')]);module[_0x9591('0x28')]=router;
\ No newline at end of file
index d6f1832..b9d778e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','alternate'];(function(_0x5a3e0b,_0xd07358){var _0x2b58b8=function(_0x26f351){while(--_0x26f351){_0x5a3e0b['push'](_0x5a3e0b['shift']());}};_0x2b58b8(++_0xd07358);}(_0x7a54,0x106));var _0x47a5=function(_0x24b94,_0x2a351f){_0x24b94=_0x24b94-0x0;var _0x27cd97=_0x7a54[_0x24b94];return _0x27cd97;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'min_internal':{'type':Sequelize[_0x47a5('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x47a5('0x2')](0xb),'unique':_0x47a5('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x47a5('0x4')],'defaultValue':_0x47a5('0x5')},'logo':{'type':Sequelize[_0x47a5('0x4')]},'defaultLogo':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x47a5('0x4')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x47a5('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x47a5('0x4')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'split':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x47a5('0x4')],'defaultValue':_0x47a5('0x7')},'chatTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x47a5('0x4')]},'defaultPreferred':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x47a5('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x47a5('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x47a5('0x2')]},'transcribeRegion':{'type':Sequelize[_0x47a5('0x4')]},'sentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x47a5('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize[_0x47a5('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize['INTEGER'](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7a54=['UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','alternate'];(function(_0x3584,_0x274422){var _0x1a71f8=function(_0x14212a){while(--_0x14212a){_0x3584['push'](_0x3584['shift']());}};_0x1a71f8(++_0x274422);}(_0x7a54,0x106));var _0x47a5=function(_0x40a7e7,_0x53dc31){_0x40a7e7=_0x40a7e7-0x0;var _0x28ca60=_0x7a54[_0x40a7e7];return _0x28ca60;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'min_internal':{'type':Sequelize[_0x47a5('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x47a5('0x2')](0xb),'unique':_0x47a5('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x47a5('0x4')],'defaultValue':_0x47a5('0x5')},'logo':{'type':Sequelize[_0x47a5('0x4')]},'defaultLogo':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x47a5('0x4')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x47a5('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x47a5('0x4')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'split':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x47a5('0x4')],'defaultValue':_0x47a5('0x7')},'chatTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x47a5('0x4')]},'defaultPreferred':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x47a5('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x47a5('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x47a5('0x2')]},'transcribeRegion':{'type':Sequelize[_0x47a5('0x4')]},'sentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x47a5('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize[_0x47a5('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize['INTEGER'](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]}};
\ No newline at end of file
index 611eee3..567ece2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c5b=['include','rows','show','keys','find','body','params','addLogo','file','filename','getLogo','server/files/images/logos','getLicense','logo','loginLogo','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','join','root','toLower','default','upperFirst','custom','default_logo.svg','\x20not\x20found','download','getLogoLogin','default_loginLogo.svg','Sequelize','gdpr','securePassword','addPreferred','default_preferred.png','ValidationError','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','request','then','info','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','sendStatus','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','status','stack','name','send','index','map','Setting','rawAttributes','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','filter','options','includeAll'];(function(_0x156cd1,_0x389185){var _0x108e4f=function(_0x4961aa){while(--_0x4961aa){_0x156cd1['push'](_0x156cd1['shift']());}};_0x108e4f(++_0x389185);}(_0x9c5b,0x127));var _0xb9c5=function(_0x217d4,_0x388eeb){_0x217d4=_0x217d4-0x0;var _0x515be2=_0x9c5b[_0x217d4];return _0x515be2;};'use strict';var emlformat=require(_0xb9c5('0x0'));var rimraf=require(_0xb9c5('0x1'));var zipdir=require(_0xb9c5('0x2'));var jsonpatch=require(_0xb9c5('0x3'));var rp=require(_0xb9c5('0x4'));var moment=require('moment');var BPromise=require(_0xb9c5('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xb9c5('0x6'));var sox=require(_0xb9c5('0x7'));var csv=require('to-csv');var ejs=require(_0xb9c5('0x8'));var fs=require('fs');var fs_extra=require(_0xb9c5('0x9'));var _=require(_0xb9c5('0xa'));var squel=require(_0xb9c5('0xb'));var crypto=require(_0xb9c5('0xc'));var jsforce=require(_0xb9c5('0xd'));var deskjs=require(_0xb9c5('0xe'));var toCsv=require(_0xb9c5('0xf'));var querystring=require(_0xb9c5('0x10'));var Papa=require('papaparse');var Redis=require(_0xb9c5('0x11'));var authService=require(_0xb9c5('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xb9c5('0x13'));var hardwareService=require(_0xb9c5('0x14'));var logger=require(_0xb9c5('0x15'))('api');var utils=require(_0xb9c5('0x16'));var config=require(_0xb9c5('0x17'));var licenseUtil=require(_0xb9c5('0x18'));var db=require(_0xb9c5('0x19'))['db'];var jayson=require(_0xb9c5('0x1a'));var client=jayson[_0xb9c5('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0x54c31f,_0x1130f1,_0x4f0e16,_0x5d1ece){return new BPromise(function(_0x3eabaa,_0x32445e){var _0x48bafc=_0x5d1ece||client;return _0x48bafc[_0xb9c5('0x1c')](_0x54c31f,_0x4f0e16)[_0xb9c5('0x1d')](function(_0xf8613c){logger[_0xb9c5('0x1e')](_0xb9c5('0x1f'),_0x1130f1,'request\x20sent');logger[_0xb9c5('0x20')](_0xb9c5('0x21'),_0x1130f1,_0xb9c5('0x22'),JSON[_0xb9c5('0x23')](_0xf8613c));if(_0xf8613c[_0xb9c5('0x24')]){if(_0xf8613c[_0xb9c5('0x24')]['code']===0x1f4){logger[_0xb9c5('0x24')](_0xb9c5('0x1f'),_0x1130f1,_0xf8613c[_0xb9c5('0x24')]['message']);return _0x32445e(_0xf8613c['error']['message']);}logger[_0xb9c5('0x24')](_0xb9c5('0x1f'),_0x1130f1,_0xf8613c[_0xb9c5('0x24')][_0xb9c5('0x25')]);return _0x3eabaa(_0xf8613c[_0xb9c5('0x24')][_0xb9c5('0x25')]);}else{logger['info'](_0xb9c5('0x1f'),_0x1130f1,_0xb9c5('0x22'));_0x3eabaa(_0xf8613c[_0xb9c5('0x26')][_0xb9c5('0x25')]);}})[_0xb9c5('0x27')](function(_0x36d9d9){logger[_0xb9c5('0x24')](_0xb9c5('0x1f'),_0x1130f1,_0x36d9d9);_0x32445e(_0x36d9d9);});});}function respondWithStatusCode(_0x183f64,_0x4ee3b9){_0x4ee3b9=_0x4ee3b9||0xcc;return function(_0xcbef1){if(_0xcbef1){return _0x183f64[_0xb9c5('0x28')](_0x4ee3b9);}return _0x183f64['status'](_0x4ee3b9)['end']();};}function respondWithResult(_0x54cec3,_0xd1bac8){_0xd1bac8=_0xd1bac8||0xc8;return function(_0x46e057){if(_0x46e057){return _0x54cec3['status'](_0xd1bac8)[_0xb9c5('0x29')](_0x46e057);}};}function respondWithFilteredResult(_0x44906b,_0x5dba8){return function(_0x325e22){if(_0x325e22){var _0x20fa50=typeof _0x5dba8[_0xb9c5('0x2a')]===_0xb9c5('0x2b')&&typeof _0x5dba8[_0xb9c5('0x2c')]==='undefined';var _0x1a10de=_0x325e22[_0xb9c5('0x2d')];var _0x390f0f=_0x20fa50?0x0:_0x5dba8[_0xb9c5('0x2a')];var _0x1d20c0=_0x20fa50?_0x325e22[_0xb9c5('0x2d')]:_0x5dba8[_0xb9c5('0x2a')]+_0x5dba8['limit'];var _0x37a0a3;if(_0x1d20c0>=_0x1a10de){_0x1d20c0=_0x1a10de;_0x37a0a3=0xc8;}else{_0x37a0a3=0xce;}_0x44906b['status'](_0x37a0a3);return _0x44906b[_0xb9c5('0x2e')](_0xb9c5('0x2f'),_0x390f0f+'-'+_0x1d20c0+'/'+_0x1a10de)[_0xb9c5('0x29')](_0x325e22);}return null;};}function patchUpdates(_0x4ea206){return function(_0x4781f3){try{jsonpatch[_0xb9c5('0x30')](_0x4781f3,_0x4ea206,!![]);}catch(_0x51c0a2){return BPromise[_0xb9c5('0x31')](_0x51c0a2);}return _0x4781f3['save']();};}function saveUpdates(_0x54161b,_0x2d4555){return function(_0x676054){if(_0x676054){return _0x676054[_0xb9c5('0x32')](_0x54161b)[_0xb9c5('0x1d')](function(_0x42309e){return _0x42309e;});}return null;};}function removeEntity(_0x4b0fe0,_0x2b92bc){return function(_0x1b579e){if(_0x1b579e){return _0x1b579e[_0xb9c5('0x33')]()['then'](function(){_0x4b0fe0[_0xb9c5('0x34')](0xcc)['end']();});}};}function handleEntityNotFound(_0x10aef4,_0x50c74d){return function(_0x1dea5d){if(!_0x1dea5d){_0x10aef4['sendStatus'](0x194);}return _0x1dea5d;};}function handleError(_0x59b71d,_0x51f8e3){_0x51f8e3=_0x51f8e3||0x1f4;return function(_0x191572){logger[_0xb9c5('0x24')](_0x191572[_0xb9c5('0x35')]);if(_0x191572[_0xb9c5('0x36')]){delete _0x191572[_0xb9c5('0x36')];}_0x59b71d['status'](_0x51f8e3)[_0xb9c5('0x37')](_0x191572);};}exports[_0xb9c5('0x38')]=function(_0x4467a4,_0x1eeadf){var _0x3af351={},_0x29cc35={},_0x58fa32={'count':0x0,'rows':[]};var _0x566801=_[_0xb9c5('0x39')](db[_0xb9c5('0x3a')][_0xb9c5('0x3b')],function(_0x395944){return{'name':_0x395944['fieldName'],'type':_0x395944['type'][_0xb9c5('0x3c')]};});_0x29cc35[_0xb9c5('0x3d')]=_[_0xb9c5('0x39')](_0x566801,_0xb9c5('0x36'));_0x29cc35[_0xb9c5('0x3e')]=_['keys'](_0x4467a4[_0xb9c5('0x3e')]);_0x29cc35[_0xb9c5('0x3f')]=_['intersection'](_0x29cc35[_0xb9c5('0x3d')],_0x29cc35[_0xb9c5('0x3e')]);_0x3af351[_0xb9c5('0x40')]=_[_0xb9c5('0x41')](_0x29cc35[_0xb9c5('0x3d')],qs[_0xb9c5('0x42')](_0x4467a4[_0xb9c5('0x3e')]['fields']));_0x3af351[_0xb9c5('0x40')]=_0x3af351['attributes'][_0xb9c5('0x43')]?_0x3af351[_0xb9c5('0x40')]:_0x29cc35[_0xb9c5('0x3d')];if(!_0x4467a4['query'][_0xb9c5('0x44')](_0xb9c5('0x45'))){_0x3af351[_0xb9c5('0x2c')]=qs[_0xb9c5('0x2c')](_0x4467a4[_0xb9c5('0x3e')]['limit']);_0x3af351[_0xb9c5('0x2a')]=qs[_0xb9c5('0x2a')](_0x4467a4[_0xb9c5('0x3e')][_0xb9c5('0x2a')]);}_0x3af351[_0xb9c5('0x46')]=qs[_0xb9c5('0x47')](_0x4467a4[_0xb9c5('0x3e')][_0xb9c5('0x47')]);_0x3af351['where']=qs[_0xb9c5('0x3f')](_['pick'](_0x4467a4[_0xb9c5('0x3e')],_0x29cc35[_0xb9c5('0x3f')]),_0x566801);if(_0x4467a4[_0xb9c5('0x3e')]['filter']){_0x3af351[_0xb9c5('0x48')]=_[_0xb9c5('0x49')](_0x3af351[_0xb9c5('0x48')],{'$or':_[_0xb9c5('0x39')](_0x566801,function(_0x275e8c){if(_0x275e8c['type']!=='VIRTUAL'){var _0x5a229f={};_0x5a229f[_0x275e8c['name']]={'$like':'%'+_0x4467a4[_0xb9c5('0x3e')][_0xb9c5('0x4a')]+'%'};return _0x5a229f;}})});}_0x3af351=_[_0xb9c5('0x49')]({},_0x3af351,_0x4467a4[_0xb9c5('0x4b')]);var _0x2382eb={'where':_0x3af351[_0xb9c5('0x48')]};return db['Setting']['count'](_0x2382eb)[_0xb9c5('0x1d')](function(_0x4a0171){_0x58fa32['count']=_0x4a0171;if(_0x4467a4[_0xb9c5('0x3e')][_0xb9c5('0x4c')]){_0x3af351[_0xb9c5('0x4d')]=[{'all':!![]}];}return db[_0xb9c5('0x3a')]['findAll'](_0x3af351);})[_0xb9c5('0x1d')](function(_0x244d39){_0x58fa32[_0xb9c5('0x4e')]=_0x244d39;return _0x58fa32;})[_0xb9c5('0x1d')](respondWithFilteredResult(_0x1eeadf,_0x3af351))[_0xb9c5('0x27')](handleError(_0x1eeadf,null));};exports[_0xb9c5('0x4f')]=function(_0x328681,_0x4b1706){var _0xe8c9de={'raw':![],'where':{'id':_0x328681['params']['id']}},_0x391a56={};_0x391a56['model']=_[_0xb9c5('0x50')](db[_0xb9c5('0x3a')][_0xb9c5('0x3b')]);_0x391a56['query']=_[_0xb9c5('0x50')](_0x328681[_0xb9c5('0x3e')]);_0x391a56[_0xb9c5('0x3f')]=_['intersection'](_0x391a56[_0xb9c5('0x3d')],_0x391a56[_0xb9c5('0x3e')]);_0xe8c9de[_0xb9c5('0x40')]=_[_0xb9c5('0x41')](_0x391a56['model'],qs[_0xb9c5('0x42')](_0x328681[_0xb9c5('0x3e')]['fields']));_0xe8c9de[_0xb9c5('0x40')]=_0xe8c9de['attributes'][_0xb9c5('0x43')]?_0xe8c9de[_0xb9c5('0x40')]:_0x391a56[_0xb9c5('0x3d')];if(_0x328681[_0xb9c5('0x3e')][_0xb9c5('0x4c')]){_0xe8c9de[_0xb9c5('0x4d')]=[{'all':!![]}];}_0xe8c9de=_[_0xb9c5('0x49')]({},_0xe8c9de,_0x328681['options']);return db[_0xb9c5('0x3a')][_0xb9c5('0x51')](_0xe8c9de)[_0xb9c5('0x1d')](handleEntityNotFound(_0x4b1706,null))[_0xb9c5('0x1d')](respondWithResult(_0x4b1706,null))[_0xb9c5('0x27')](handleError(_0x4b1706,null));};exports[_0xb9c5('0x32')]=function(_0x3f2e0d,_0x3e4618){if(_0x3f2e0d[_0xb9c5('0x52')]['id']){delete _0x3f2e0d['body']['id'];}return db['Setting']['find']({'where':{'id':_0x3f2e0d[_0xb9c5('0x53')]['id']}})[_0xb9c5('0x1d')](handleEntityNotFound(_0x3e4618,null))[_0xb9c5('0x1d')](saveUpdates(_0x3f2e0d[_0xb9c5('0x52')],null))[_0xb9c5('0x1d')](respondWithResult(_0x3e4618,null))[_0xb9c5('0x27')](handleError(_0x3e4618,null));};exports[_0xb9c5('0x54')]=function(_0x2814ee,_0x210626,_0x34d35){if(_0x2814ee[_0xb9c5('0x55')]&&_0x2814ee[_0xb9c5('0x55')][_0xb9c5('0x56')]){_0x2814ee[_0xb9c5('0x52')]['logo']=_0x2814ee[_0xb9c5('0x55')]['filename'];}return db['Setting']['find']({'where':{'id':_0x2814ee[_0xb9c5('0x53')]['id']}})[_0xb9c5('0x1d')](handleEntityNotFound(_0x210626,null))['then'](saveUpdates(_0x2814ee[_0xb9c5('0x52')],null))[_0xb9c5('0x1d')](respondWithResult(_0x210626,null))[_0xb9c5('0x27')](handleError(_0x210626,null));};exports['addLogoLogin']=function(_0x36fff4,_0x32fdae,_0x2b0e6c){if(_0x36fff4['file']&&_0x36fff4[_0xb9c5('0x55')][_0xb9c5('0x56')]){_0x36fff4[_0xb9c5('0x52')]['loginLogo']=_0x36fff4['file'][_0xb9c5('0x56')];}return db[_0xb9c5('0x3a')]['find']({'where':{'id':_0x36fff4['params']['id']}})[_0xb9c5('0x1d')](handleEntityNotFound(_0x32fdae,null))['then'](saveUpdates(_0x36fff4[_0xb9c5('0x52')],null))[_0xb9c5('0x1d')](respondWithResult(_0x32fdae,null))[_0xb9c5('0x27')](handleError(_0x32fdae,null));};var utilLicense=require(_0xb9c5('0x18'));exports[_0xb9c5('0x57')]=function(_0xed350f,_0x2a8aa1,_0x59ceef){var _0x20b9de=_0xb9c5('0x58');var _0x132122={'custom':![]};return utilLicense[_0xb9c5('0x59')]()['then'](function(_0x2522ea){if(_0x2522ea){_0x132122=_0x2522ea;}return db[_0xb9c5('0x3a')]['find']({'where':{'id':_0xed350f[_0xb9c5('0x53')]['id']},'attributes':[_0xb9c5('0x5a'),_0xb9c5('0x5b'),_0xb9c5('0x5c'),_0xb9c5('0x5d'),_0xb9c5('0x5e'),_0xb9c5('0x5f'),_0xb9c5('0x60'),_0xb9c5('0x61')],'raw':!![]});})[_0xb9c5('0x1d')](handleEntityNotFound(_0x2a8aa1,null))['then'](function(_0x58c436){if(_0x58c436){var _0x13c604=_0x58c436[_0xb9c5('0x5a')]&&fs[_0xb9c5('0x62')](path[_0xb9c5('0x63')](config[_0xb9c5('0x64')],_0x20b9de,_['toLower'](_0x58c436[_0xb9c5('0x5a')])))?path[_0xb9c5('0x63')](config[_0xb9c5('0x64')],_0x20b9de,_['toLower'](_0x58c436[_0xb9c5('0x5a')])):path[_0xb9c5('0x63')](config[_0xb9c5('0x64')],_0x20b9de,_[_0xb9c5('0x65')]('default_logo.svg'));var _0x2cac75=_0xb9c5('0x66')+_[_0xb9c5('0x67')](_0xb9c5('0x5a'));if(_0x58c436[_0x2cac75]||!_0x132122[_0xb9c5('0x68')]){_0x13c604=path[_0xb9c5('0x63')](config[_0xb9c5('0x64')],_0x20b9de,_['toLower'](_0xb9c5('0x69')));}if(!fs[_0xb9c5('0x62')](_0x13c604)){throw new db['Sequelize']['ValidationError'](_[_0xb9c5('0x67')]('logo')+_0xb9c5('0x6a'));}return _0x2a8aa1[_0xb9c5('0x6b')](_0x13c604);}})[_0xb9c5('0x27')](handleError(_0x2a8aa1,null));};var utilLicense=require(_0xb9c5('0x18'));exports[_0xb9c5('0x6c')]=function(_0x425662,_0x29a138,_0x5108f8){var _0x50273e='server/files/images/logos';var _0x26d49d={'custom':![]};return utilLicense[_0xb9c5('0x59')]()[_0xb9c5('0x1d')](function(_0x90aee0){if(_0x90aee0){_0x26d49d=_0x90aee0;}return db[_0xb9c5('0x3a')]['find']({'where':{'id':_0x425662[_0xb9c5('0x53')]['id']},'attributes':['logo',_0xb9c5('0x5b'),_0xb9c5('0x5c'),_0xb9c5('0x5d'),_0xb9c5('0x5e'),'defaultLoginLogo',_0xb9c5('0x60'),_0xb9c5('0x61')],'raw':!![]});})['then'](handleEntityNotFound(_0x29a138,null))[_0xb9c5('0x1d')](function(_0x5a91f6){if(_0x5a91f6){var _0x367bd5=_0x5a91f6[_0xb9c5('0x5b')]&&fs[_0xb9c5('0x62')](path['join'](config[_0xb9c5('0x64')],_0x50273e,_[_0xb9c5('0x65')](_0x5a91f6['loginLogo'])))?path[_0xb9c5('0x63')](config[_0xb9c5('0x64')],_0x50273e,_[_0xb9c5('0x65')](_0x5a91f6[_0xb9c5('0x5b')])):path[_0xb9c5('0x63')](config[_0xb9c5('0x64')],_0x50273e,_[_0xb9c5('0x65')]('default_loginLogo.svg'));var _0x1d8f0c=_0xb9c5('0x66')+_[_0xb9c5('0x67')](_0xb9c5('0x5b'));if(_0x5a91f6[_0x1d8f0c]||!_0x26d49d['custom']){_0x367bd5=path[_0xb9c5('0x63')](config[_0xb9c5('0x64')],_0x50273e,_[_0xb9c5('0x65')](_0xb9c5('0x6d')));}if(!fs['existsSync'](_0x367bd5)){throw new db[(_0xb9c5('0x6e'))]['ValidationError'](_[_0xb9c5('0x67')](_0xb9c5('0x5b'))+_0xb9c5('0x6a'));}return _0x29a138['download'](_0x367bd5);}})[_0xb9c5('0x27')](handleError(_0x29a138,null));};exports[_0xb9c5('0x6f')]=function(_0x11f8b9,_0x4d3121){return db[_0xb9c5('0x3a')][_0xb9c5('0x51')]({'where':{'id':_0x11f8b9['params']['id']},'attributes':[_0xb9c5('0x70')]})[_0xb9c5('0x1d')](respondWithResult(_0x4d3121,null))[_0xb9c5('0x27')](handleError(_0x4d3121,null));};exports[_0xb9c5('0x71')]=function(_0x1be9eb,_0x543126,_0x39b4c5){if(_0x1be9eb['file']&&_0x1be9eb[_0xb9c5('0x55')][_0xb9c5('0x56')]){_0x1be9eb['body'][_0xb9c5('0x5c')]=_0x1be9eb[_0xb9c5('0x55')][_0xb9c5('0x56')];}return db[_0xb9c5('0x3a')][_0xb9c5('0x51')]({'where':{'id':_0x1be9eb[_0xb9c5('0x53')]['id']}})[_0xb9c5('0x1d')](handleEntityNotFound(_0x543126,null))[_0xb9c5('0x1d')](saveUpdates(_0x1be9eb['body'],null))[_0xb9c5('0x1d')](respondWithResult(_0x543126,null))[_0xb9c5('0x27')](handleError(_0x543126,null));};var utilLicense=require('../../config/license/util');exports['getPreferred']=function(_0x43f0e5,_0x5c794d,_0x5348bd){var _0x31cbc6=_0xb9c5('0x58');var _0x5e9538={'custom':![]};return utilLicense[_0xb9c5('0x59')]()[_0xb9c5('0x1d')](function(_0x6a2c80){if(_0x6a2c80){_0x5e9538=_0x6a2c80;}return db['Setting']['find']({'where':{'id':_0x43f0e5[_0xb9c5('0x53')]['id']},'attributes':[_0xb9c5('0x5a'),'loginLogo',_0xb9c5('0x5c'),_0xb9c5('0x5d'),_0xb9c5('0x5e'),_0xb9c5('0x5f'),_0xb9c5('0x60'),'defaultFavicon'],'raw':!![]});})[_0xb9c5('0x1d')](handleEntityNotFound(_0x5c794d,null))['then'](function(_0x456fcf){if(_0x456fcf){var _0x55493f=_0x456fcf[_0xb9c5('0x5c')]&&fs[_0xb9c5('0x62')](path[_0xb9c5('0x63')](config[_0xb9c5('0x64')],_0x31cbc6,_[_0xb9c5('0x65')](_0x456fcf['preferred'])))?path['join'](config[_0xb9c5('0x64')],_0x31cbc6,_[_0xb9c5('0x65')](_0x456fcf[_0xb9c5('0x5c')])):path[_0xb9c5('0x63')](config['root'],_0x31cbc6,_[_0xb9c5('0x65')](_0xb9c5('0x72')));var _0x4577f2=_0xb9c5('0x66')+_[_0xb9c5('0x67')]('preferred');if(_0x456fcf[_0x4577f2]||!_0x5e9538['custom']||!_0x5e9538[_0xb9c5('0x5c')]){_0x55493f=path['join'](config[_0xb9c5('0x64')],_0x31cbc6,_[_0xb9c5('0x65')](_0xb9c5('0x72')));}if(!fs[_0xb9c5('0x62')](_0x55493f)){throw new db[(_0xb9c5('0x6e'))][(_0xb9c5('0x73'))](_[_0xb9c5('0x67')](_0xb9c5('0x5c'))+'\x20not\x20found');}return _0x5c794d[_0xb9c5('0x6b')](_0x55493f);}})[_0xb9c5('0x27')](handleError(_0x5c794d,null));};exports[_0xb9c5('0x74')]=function(_0x12ca22,_0x413cb4,_0x202050){if(_0x12ca22['file']&&_0x12ca22[_0xb9c5('0x55')][_0xb9c5('0x56')]){_0x12ca22[_0xb9c5('0x52')][_0xb9c5('0x5d')]=_0x12ca22['file'][_0xb9c5('0x56')];}return db[_0xb9c5('0x3a')][_0xb9c5('0x51')]({'where':{'id':_0x12ca22[_0xb9c5('0x53')]['id']}})[_0xb9c5('0x1d')](handleEntityNotFound(_0x413cb4,null))[_0xb9c5('0x1d')](saveUpdates(_0x12ca22[_0xb9c5('0x52')],null))[_0xb9c5('0x1d')](respondWithResult(_0x413cb4,null))[_0xb9c5('0x27')](handleError(_0x413cb4,null));};var utilLicense=require('../../config/license/util');exports[_0xb9c5('0x75')]=function(_0x49eedf,_0x588075,_0x27563f){var _0x1d9c1d='server/files/images/logos';var _0x187cc1={'custom':![]};return utilLicense[_0xb9c5('0x59')]()['then'](function(_0x530dfb){if(_0x530dfb){_0x187cc1=_0x530dfb;}return db[_0xb9c5('0x3a')][_0xb9c5('0x51')]({'where':{'id':_0x49eedf[_0xb9c5('0x53')]['id']},'attributes':[_0xb9c5('0x5a'),_0xb9c5('0x5b'),'preferred',_0xb9c5('0x5d'),'defaultLogo','defaultLoginLogo','defaultPreferred',_0xb9c5('0x61')],'raw':!![]});})[_0xb9c5('0x1d')](handleEntityNotFound(_0x588075,null))['then'](function(_0x2993a){if(_0x2993a){var _0x1a3a7d=_0x2993a[_0xb9c5('0x5d')]&&fs[_0xb9c5('0x62')](path[_0xb9c5('0x63')](config[_0xb9c5('0x64')],_0x1d9c1d,_[_0xb9c5('0x65')](_0x2993a[_0xb9c5('0x5d')])))?path[_0xb9c5('0x63')](config[_0xb9c5('0x64')],_0x1d9c1d,_[_0xb9c5('0x65')](_0x2993a[_0xb9c5('0x5d')])):path[_0xb9c5('0x63')](config['root'],_0x1d9c1d,_[_0xb9c5('0x65')](_0xb9c5('0x76')));var _0x30e708=_0xb9c5('0x66')+_['upperFirst'](_0xb9c5('0x5d'));if(_0x2993a[_0x30e708]||!_0x187cc1[_0xb9c5('0x68')]){_0x1a3a7d=path[_0xb9c5('0x63')](config[_0xb9c5('0x64')],_0x1d9c1d,_['toLower'](_0xb9c5('0x76')));}if(!fs[_0xb9c5('0x62')](_0x1a3a7d)){throw new db[(_0xb9c5('0x6e'))][(_0xb9c5('0x73'))](_[_0xb9c5('0x67')](_0xb9c5('0x5d'))+'\x20not\x20found');}return _0x588075[_0xb9c5('0x6b')](_0x1a3a7d);}})[_0xb9c5('0x27')](handleError(_0x588075,null));};exports[_0xb9c5('0x77')]=function(_0x2fdd9d,_0x466957){var _0x2b01de={'offset':moment()[_0xb9c5('0x78')]()};_0x2b01de[_0xb9c5('0x79')]=moment()['utcOffset'](_0x2b01de['offset'])[_0xb9c5('0x7a')](_0xb9c5('0x7b'));return _0x466957[_0xb9c5('0x34')](0xc8)[_0xb9c5('0x37')](_0x2b01de);};
\ No newline at end of file
+var _0xa181=['existsSync','ValidationError','\x20not\x20found','getLogoLogin','server/files/images/logos','defaultLoginLogo','default_loginLogo.svg','Sequelize','gdpr','securePassword','addPreferred','default_preferred.png','download','addFavicon','getFavicon','default_favicon.ico','now','utcOffset','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','jayson/promise','client','request','Setting,\x20%s,\x20%s','debug','request\x20sent','error','code','message','info','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','destroy','then','stack','send','index','Setting','rawAttributes','fieldName','type','key','model','map','name','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','find','update','body','addLogo','file','logo','filename','loginLogo','getLogo','getLicense','preferred','favicon','defaultLogo','defaultPreferred','defaultFavicon','join','toLower','root','default','upperFirst','custom','default_logo.svg'];(function(_0x27deca,_0x3543c5){var _0x1cb791=function(_0x330ca3){while(--_0x330ca3){_0x27deca['push'](_0x27deca['shift']());}};_0x1cb791(++_0x3543c5);}(_0xa181,0x10a));var _0x1a18=function(_0x2bad9c,_0xeb4ba){_0x2bad9c=_0x2bad9c-0x0;var _0xa6564f=_0xa181[_0x2bad9c];return _0xa6564f;};'use strict';var emlformat=require(_0x1a18('0x0'));var rimraf=require(_0x1a18('0x1'));var zipdir=require(_0x1a18('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1a18('0x3'));var moment=require(_0x1a18('0x4'));var BPromise=require(_0x1a18('0x5'));var Mustache=require(_0x1a18('0x6'));var util=require(_0x1a18('0x7'));var path=require(_0x1a18('0x8'));var sox=require('sox');var csv=require(_0x1a18('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1a18('0xa'));var _=require(_0x1a18('0xb'));var squel=require(_0x1a18('0xc'));var crypto=require(_0x1a18('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1a18('0xe'));var toCsv=require(_0x1a18('0x9'));var querystring=require(_0x1a18('0xf'));var Papa=require('papaparse');var Redis=require(_0x1a18('0x10'));var authService=require(_0x1a18('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x1a18('0x12'));var hardwareService=require(_0x1a18('0x13'));var logger=require(_0x1a18('0x14'))(_0x1a18('0x15'));var utils=require(_0x1a18('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x1a18('0x17'));var db=require('../../mysqldb')['db'];var jayson=require(_0x1a18('0x18'));var client=jayson[_0x1a18('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x12c34d,_0x4ea0eb,_0x1b3de2,_0x15f465){return new BPromise(function(_0x55f592,_0x1ad393){var _0x3b1b44=_0x15f465||client;return _0x3b1b44[_0x1a18('0x1a')](_0x12c34d,_0x1b3de2)['then'](function(_0x2785f6){logger['info'](_0x1a18('0x1b'),_0x4ea0eb,'request\x20sent');logger[_0x1a18('0x1c')]('Setting,\x20%s,\x20%s,\x20%s',_0x4ea0eb,_0x1a18('0x1d'),JSON['stringify'](_0x2785f6));if(_0x2785f6[_0x1a18('0x1e')]){if(_0x2785f6[_0x1a18('0x1e')][_0x1a18('0x1f')]===0x1f4){logger[_0x1a18('0x1e')]('Setting,\x20%s,\x20%s',_0x4ea0eb,_0x2785f6['error']['message']);return _0x1ad393(_0x2785f6[_0x1a18('0x1e')][_0x1a18('0x20')]);}logger[_0x1a18('0x1e')](_0x1a18('0x1b'),_0x4ea0eb,_0x2785f6[_0x1a18('0x1e')][_0x1a18('0x20')]);return _0x55f592(_0x2785f6['error'][_0x1a18('0x20')]);}else{logger[_0x1a18('0x21')](_0x1a18('0x1b'),_0x4ea0eb,_0x1a18('0x1d'));_0x55f592(_0x2785f6[_0x1a18('0x22')][_0x1a18('0x20')]);}})[_0x1a18('0x23')](function(_0x24f2c7){logger[_0x1a18('0x1e')](_0x1a18('0x1b'),_0x4ea0eb,_0x24f2c7);_0x1ad393(_0x24f2c7);});});}function respondWithStatusCode(_0xb4a0b8,_0x3fc2c5){_0x3fc2c5=_0x3fc2c5||0xcc;return function(_0x2ac2d7){if(_0x2ac2d7){return _0xb4a0b8[_0x1a18('0x24')](_0x3fc2c5);}return _0xb4a0b8[_0x1a18('0x25')](_0x3fc2c5)[_0x1a18('0x26')]();};}function respondWithResult(_0x1252cb,_0x5ea7b0){_0x5ea7b0=_0x5ea7b0||0xc8;return function(_0x8cebc6){if(_0x8cebc6){return _0x1252cb[_0x1a18('0x25')](_0x5ea7b0)[_0x1a18('0x27')](_0x8cebc6);}};}function respondWithFilteredResult(_0x397539,_0x3953dd){return function(_0x1a1d9b){if(_0x1a1d9b){var _0x486294=typeof _0x3953dd[_0x1a18('0x28')]===_0x1a18('0x29')&&typeof _0x3953dd[_0x1a18('0x2a')]===_0x1a18('0x29');var _0x54f60e=_0x1a1d9b[_0x1a18('0x2b')];var _0x4699ab=_0x486294?0x0:_0x3953dd[_0x1a18('0x28')];var _0x17776b=_0x486294?_0x1a1d9b[_0x1a18('0x2b')]:_0x3953dd[_0x1a18('0x28')]+_0x3953dd[_0x1a18('0x2a')];var _0x1b31d6;if(_0x17776b>=_0x54f60e){_0x17776b=_0x54f60e;_0x1b31d6=0xc8;}else{_0x1b31d6=0xce;}_0x397539[_0x1a18('0x25')](_0x1b31d6);return _0x397539[_0x1a18('0x2c')](_0x1a18('0x2d'),_0x4699ab+'-'+_0x17776b+'/'+_0x54f60e)[_0x1a18('0x27')](_0x1a1d9b);}return null;};}function patchUpdates(_0xdb1c94){return function(_0x111ddd){try{jsonpatch[_0x1a18('0x2e')](_0x111ddd,_0xdb1c94,!![]);}catch(_0x54b624){return BPromise[_0x1a18('0x2f')](_0x54b624);}return _0x111ddd['save']();};}function saveUpdates(_0xfa6bea,_0xbef09d){return function(_0x50e3f3){if(_0x50e3f3){return _0x50e3f3['update'](_0xfa6bea)['then'](function(_0x263797){return _0x263797;});}return null;};}function removeEntity(_0x509d5,_0x32bad1){return function(_0x24b537){if(_0x24b537){return _0x24b537[_0x1a18('0x30')]()[_0x1a18('0x31')](function(){_0x509d5[_0x1a18('0x25')](0xcc)[_0x1a18('0x26')]();});}};}function handleEntityNotFound(_0x16f3f3,_0x10b70a){return function(_0x51b7c9){if(!_0x51b7c9){_0x16f3f3['sendStatus'](0x194);}return _0x51b7c9;};}function handleError(_0xeb0b1f,_0x144fbe){_0x144fbe=_0x144fbe||0x1f4;return function(_0xaf21f){logger[_0x1a18('0x1e')](_0xaf21f[_0x1a18('0x32')]);if(_0xaf21f['name']){delete _0xaf21f['name'];}_0xeb0b1f[_0x1a18('0x25')](_0x144fbe)[_0x1a18('0x33')](_0xaf21f);};}exports[_0x1a18('0x34')]=function(_0x32742c,_0x53f4aa){var _0x21c6d2={},_0x40c1b5={},_0x553ee6={'count':0x0,'rows':[]};var _0x164522=_['map'](db[_0x1a18('0x35')][_0x1a18('0x36')],function(_0x4364bd){return{'name':_0x4364bd[_0x1a18('0x37')],'type':_0x4364bd[_0x1a18('0x38')][_0x1a18('0x39')]};});_0x40c1b5[_0x1a18('0x3a')]=_[_0x1a18('0x3b')](_0x164522,_0x1a18('0x3c'));_0x40c1b5[_0x1a18('0x3d')]=_[_0x1a18('0x3e')](_0x32742c[_0x1a18('0x3d')]);_0x40c1b5[_0x1a18('0x3f')]=_[_0x1a18('0x40')](_0x40c1b5[_0x1a18('0x3a')],_0x40c1b5['query']);_0x21c6d2['attributes']=_['intersection'](_0x40c1b5[_0x1a18('0x3a')],qs[_0x1a18('0x41')](_0x32742c['query']['fields']));_0x21c6d2[_0x1a18('0x42')]=_0x21c6d2[_0x1a18('0x42')][_0x1a18('0x43')]?_0x21c6d2['attributes']:_0x40c1b5[_0x1a18('0x3a')];if(!_0x32742c[_0x1a18('0x3d')]['hasOwnProperty'](_0x1a18('0x44'))){_0x21c6d2['limit']=qs[_0x1a18('0x2a')](_0x32742c[_0x1a18('0x3d')][_0x1a18('0x2a')]);_0x21c6d2[_0x1a18('0x28')]=qs[_0x1a18('0x28')](_0x32742c[_0x1a18('0x3d')][_0x1a18('0x28')]);}_0x21c6d2['order']=qs[_0x1a18('0x45')](_0x32742c[_0x1a18('0x3d')][_0x1a18('0x45')]);_0x21c6d2[_0x1a18('0x46')]=qs[_0x1a18('0x3f')](_[_0x1a18('0x47')](_0x32742c['query'],_0x40c1b5[_0x1a18('0x3f')]),_0x164522);if(_0x32742c['query'][_0x1a18('0x48')]){_0x21c6d2['where']=_[_0x1a18('0x49')](_0x21c6d2[_0x1a18('0x46')],{'$or':_[_0x1a18('0x3b')](_0x164522,function(_0x438049){if(_0x438049[_0x1a18('0x38')]!=='VIRTUAL'){var _0x1a5643={};_0x1a5643[_0x438049[_0x1a18('0x3c')]]={'$like':'%'+_0x32742c[_0x1a18('0x3d')]['filter']+'%'};return _0x1a5643;}})});}_0x21c6d2=_[_0x1a18('0x49')]({},_0x21c6d2,_0x32742c[_0x1a18('0x4a')]);var _0x34941e={'where':_0x21c6d2[_0x1a18('0x46')]};return db['Setting']['count'](_0x34941e)['then'](function(_0x4b5892){_0x553ee6[_0x1a18('0x2b')]=_0x4b5892;if(_0x32742c[_0x1a18('0x3d')][_0x1a18('0x4b')]){_0x21c6d2[_0x1a18('0x4c')]=[{'all':!![]}];}return db[_0x1a18('0x35')][_0x1a18('0x4d')](_0x21c6d2);})[_0x1a18('0x31')](function(_0x45ea4b){_0x553ee6[_0x1a18('0x4e')]=_0x45ea4b;return _0x553ee6;})[_0x1a18('0x31')](respondWithFilteredResult(_0x53f4aa,_0x21c6d2))[_0x1a18('0x23')](handleError(_0x53f4aa,null));};exports[_0x1a18('0x4f')]=function(_0x2832bb,_0x1a0859){var _0x340660={'raw':![],'where':{'id':_0x2832bb[_0x1a18('0x50')]['id']}},_0x5434e8={};_0x5434e8[_0x1a18('0x3a')]=_[_0x1a18('0x3e')](db['Setting'][_0x1a18('0x36')]);_0x5434e8['query']=_[_0x1a18('0x3e')](_0x2832bb[_0x1a18('0x3d')]);_0x5434e8[_0x1a18('0x3f')]=_[_0x1a18('0x40')](_0x5434e8[_0x1a18('0x3a')],_0x5434e8[_0x1a18('0x3d')]);_0x340660[_0x1a18('0x42')]=_['intersection'](_0x5434e8[_0x1a18('0x3a')],qs[_0x1a18('0x41')](_0x2832bb[_0x1a18('0x3d')]['fields']));_0x340660[_0x1a18('0x42')]=_0x340660[_0x1a18('0x42')][_0x1a18('0x43')]?_0x340660['attributes']:_0x5434e8[_0x1a18('0x3a')];if(_0x2832bb[_0x1a18('0x3d')][_0x1a18('0x4b')]){_0x340660[_0x1a18('0x4c')]=[{'all':!![]}];}_0x340660=_['merge']({},_0x340660,_0x2832bb[_0x1a18('0x4a')]);return db[_0x1a18('0x35')][_0x1a18('0x51')](_0x340660)[_0x1a18('0x31')](handleEntityNotFound(_0x1a0859,null))['then'](respondWithResult(_0x1a0859,null))[_0x1a18('0x23')](handleError(_0x1a0859,null));};exports[_0x1a18('0x52')]=function(_0x4a4db1,_0x907ff7){if(_0x4a4db1['body']['id']){delete _0x4a4db1['body']['id'];}return db[_0x1a18('0x35')][_0x1a18('0x51')]({'where':{'id':_0x4a4db1[_0x1a18('0x50')]['id']}})['then'](handleEntityNotFound(_0x907ff7,null))[_0x1a18('0x31')](saveUpdates(_0x4a4db1[_0x1a18('0x53')],null))['then'](respondWithResult(_0x907ff7,null))[_0x1a18('0x23')](handleError(_0x907ff7,null));};exports[_0x1a18('0x54')]=function(_0x3382d6,_0x5e961d,_0x22b857){if(_0x3382d6[_0x1a18('0x55')]&&_0x3382d6[_0x1a18('0x55')]['filename']){_0x3382d6[_0x1a18('0x53')][_0x1a18('0x56')]=_0x3382d6[_0x1a18('0x55')][_0x1a18('0x57')];}return db[_0x1a18('0x35')][_0x1a18('0x51')]({'where':{'id':_0x3382d6['params']['id']}})['then'](handleEntityNotFound(_0x5e961d,null))['then'](saveUpdates(_0x3382d6[_0x1a18('0x53')],null))['then'](respondWithResult(_0x5e961d,null))[_0x1a18('0x23')](handleError(_0x5e961d,null));};exports['addLogoLogin']=function(_0x249d5b,_0x6df303,_0xfd9aa8){if(_0x249d5b['file']&&_0x249d5b[_0x1a18('0x55')][_0x1a18('0x57')]){_0x249d5b['body'][_0x1a18('0x58')]=_0x249d5b['file'][_0x1a18('0x57')];}return db[_0x1a18('0x35')][_0x1a18('0x51')]({'where':{'id':_0x249d5b[_0x1a18('0x50')]['id']}})[_0x1a18('0x31')](handleEntityNotFound(_0x6df303,null))[_0x1a18('0x31')](saveUpdates(_0x249d5b[_0x1a18('0x53')],null))['then'](respondWithResult(_0x6df303,null))['catch'](handleError(_0x6df303,null));};var utilLicense=require(_0x1a18('0x17'));exports[_0x1a18('0x59')]=function(_0x448c5c,_0x251abd,_0x51460f){var _0x2842b5='server/files/images/logos';var _0x3b446c={'custom':![]};return utilLicense[_0x1a18('0x5a')]()['then'](function(_0x388266){if(_0x388266){_0x3b446c=_0x388266;}return db[_0x1a18('0x35')][_0x1a18('0x51')]({'where':{'id':_0x448c5c[_0x1a18('0x50')]['id']},'attributes':[_0x1a18('0x56'),_0x1a18('0x58'),_0x1a18('0x5b'),_0x1a18('0x5c'),_0x1a18('0x5d'),'defaultLoginLogo',_0x1a18('0x5e'),_0x1a18('0x5f')],'raw':!![]});})['then'](handleEntityNotFound(_0x251abd,null))[_0x1a18('0x31')](function(_0x4ee33b){if(_0x4ee33b){var _0x134094=_0x4ee33b[_0x1a18('0x56')]&&fs['existsSync'](path[_0x1a18('0x60')](config['root'],_0x2842b5,_[_0x1a18('0x61')](_0x4ee33b[_0x1a18('0x56')])))?path[_0x1a18('0x60')](config['root'],_0x2842b5,_[_0x1a18('0x61')](_0x4ee33b[_0x1a18('0x56')])):path[_0x1a18('0x60')](config[_0x1a18('0x62')],_0x2842b5,_[_0x1a18('0x61')]('default_logo.svg'));var _0x55a86c=_0x1a18('0x63')+_[_0x1a18('0x64')]('logo');if(_0x4ee33b[_0x55a86c]||!_0x3b446c[_0x1a18('0x65')]){_0x134094=path['join'](config[_0x1a18('0x62')],_0x2842b5,_['toLower'](_0x1a18('0x66')));}if(!fs[_0x1a18('0x67')](_0x134094)){throw new db['Sequelize'][(_0x1a18('0x68'))](_[_0x1a18('0x64')](_0x1a18('0x56'))+_0x1a18('0x69'));}return _0x251abd['download'](_0x134094);}})['catch'](handleError(_0x251abd,null));};var utilLicense=require('../../config/license/util');exports[_0x1a18('0x6a')]=function(_0x3b41a7,_0x3c0eec,_0x3ff56e){var _0x45ae21=_0x1a18('0x6b');var _0x1e9eb0={'custom':![]};return utilLicense['getLicense']()['then'](function(_0x246546){if(_0x246546){_0x1e9eb0=_0x246546;}return db[_0x1a18('0x35')][_0x1a18('0x51')]({'where':{'id':_0x3b41a7[_0x1a18('0x50')]['id']},'attributes':[_0x1a18('0x56'),_0x1a18('0x58'),'preferred',_0x1a18('0x5c'),'defaultLogo',_0x1a18('0x6c'),'defaultPreferred',_0x1a18('0x5f')],'raw':!![]});})['then'](handleEntityNotFound(_0x3c0eec,null))['then'](function(_0x2c1747){if(_0x2c1747){var _0x4152e1=_0x2c1747[_0x1a18('0x58')]&&fs[_0x1a18('0x67')](path[_0x1a18('0x60')](config[_0x1a18('0x62')],_0x45ae21,_['toLower'](_0x2c1747[_0x1a18('0x58')])))?path[_0x1a18('0x60')](config[_0x1a18('0x62')],_0x45ae21,_['toLower'](_0x2c1747['loginLogo'])):path[_0x1a18('0x60')](config[_0x1a18('0x62')],_0x45ae21,_[_0x1a18('0x61')](_0x1a18('0x6d')));var _0x217472=_0x1a18('0x63')+_[_0x1a18('0x64')]('loginLogo');if(_0x2c1747[_0x217472]||!_0x1e9eb0[_0x1a18('0x65')]){_0x4152e1=path[_0x1a18('0x60')](config[_0x1a18('0x62')],_0x45ae21,_[_0x1a18('0x61')](_0x1a18('0x6d')));}if(!fs[_0x1a18('0x67')](_0x4152e1)){throw new db[(_0x1a18('0x6e'))][(_0x1a18('0x68'))](_[_0x1a18('0x64')](_0x1a18('0x58'))+_0x1a18('0x69'));}return _0x3c0eec['download'](_0x4152e1);}})['catch'](handleError(_0x3c0eec,null));};exports[_0x1a18('0x6f')]=function(_0x195a68,_0x5d84c1){return db['Setting'][_0x1a18('0x51')]({'where':{'id':_0x195a68[_0x1a18('0x50')]['id']},'attributes':[_0x1a18('0x70')]})[_0x1a18('0x31')](respondWithResult(_0x5d84c1,null))[_0x1a18('0x23')](handleError(_0x5d84c1,null));};exports[_0x1a18('0x71')]=function(_0x56afee,_0x2f41aa,_0x4823eb){if(_0x56afee[_0x1a18('0x55')]&&_0x56afee[_0x1a18('0x55')][_0x1a18('0x57')]){_0x56afee[_0x1a18('0x53')][_0x1a18('0x5b')]=_0x56afee[_0x1a18('0x55')][_0x1a18('0x57')];}return db[_0x1a18('0x35')][_0x1a18('0x51')]({'where':{'id':_0x56afee[_0x1a18('0x50')]['id']}})['then'](handleEntityNotFound(_0x2f41aa,null))[_0x1a18('0x31')](saveUpdates(_0x56afee[_0x1a18('0x53')],null))[_0x1a18('0x31')](respondWithResult(_0x2f41aa,null))[_0x1a18('0x23')](handleError(_0x2f41aa,null));};var utilLicense=require(_0x1a18('0x17'));exports['getPreferred']=function(_0x108f3a,_0x30fbfa,_0xe59fa5){var _0x447652=_0x1a18('0x6b');var _0x37f0df={'custom':![]};return utilLicense['getLicense']()[_0x1a18('0x31')](function(_0x10034f){if(_0x10034f){_0x37f0df=_0x10034f;}return db['Setting'][_0x1a18('0x51')]({'where':{'id':_0x108f3a[_0x1a18('0x50')]['id']},'attributes':[_0x1a18('0x56'),'loginLogo',_0x1a18('0x5b'),_0x1a18('0x5c'),_0x1a18('0x5d'),_0x1a18('0x6c'),_0x1a18('0x5e'),'defaultFavicon'],'raw':!![]});})[_0x1a18('0x31')](handleEntityNotFound(_0x30fbfa,null))[_0x1a18('0x31')](function(_0x39a48e){if(_0x39a48e){var _0xd61041=_0x39a48e[_0x1a18('0x5b')]&&fs[_0x1a18('0x67')](path[_0x1a18('0x60')](config[_0x1a18('0x62')],_0x447652,_[_0x1a18('0x61')](_0x39a48e['preferred'])))?path[_0x1a18('0x60')](config[_0x1a18('0x62')],_0x447652,_['toLower'](_0x39a48e[_0x1a18('0x5b')])):path[_0x1a18('0x60')](config[_0x1a18('0x62')],_0x447652,_['toLower'](_0x1a18('0x72')));var _0x10e4a3=_0x1a18('0x63')+_[_0x1a18('0x64')](_0x1a18('0x5b'));if(_0x39a48e[_0x10e4a3]||!_0x37f0df[_0x1a18('0x65')]||!_0x37f0df[_0x1a18('0x5b')]){_0xd61041=path['join'](config['root'],_0x447652,_[_0x1a18('0x61')](_0x1a18('0x72')));}if(!fs[_0x1a18('0x67')](_0xd61041)){throw new db[(_0x1a18('0x6e'))][(_0x1a18('0x68'))](_[_0x1a18('0x64')](_0x1a18('0x5b'))+_0x1a18('0x69'));}return _0x30fbfa[_0x1a18('0x73')](_0xd61041);}})[_0x1a18('0x23')](handleError(_0x30fbfa,null));};exports[_0x1a18('0x74')]=function(_0x587e3c,_0x7a4d72,_0xc5a0af){if(_0x587e3c['file']&&_0x587e3c[_0x1a18('0x55')][_0x1a18('0x57')]){_0x587e3c[_0x1a18('0x53')][_0x1a18('0x5c')]=_0x587e3c[_0x1a18('0x55')]['filename'];}return db[_0x1a18('0x35')][_0x1a18('0x51')]({'where':{'id':_0x587e3c[_0x1a18('0x50')]['id']}})[_0x1a18('0x31')](handleEntityNotFound(_0x7a4d72,null))[_0x1a18('0x31')](saveUpdates(_0x587e3c['body'],null))[_0x1a18('0x31')](respondWithResult(_0x7a4d72,null))['catch'](handleError(_0x7a4d72,null));};var utilLicense=require(_0x1a18('0x17'));exports[_0x1a18('0x75')]=function(_0xe59f4d,_0x16f98a,_0x2411d2){var _0x17e9a7=_0x1a18('0x6b');var _0x14a95e={'custom':![]};return utilLicense[_0x1a18('0x5a')]()[_0x1a18('0x31')](function(_0xd8e76){if(_0xd8e76){_0x14a95e=_0xd8e76;}return db['Setting']['find']({'where':{'id':_0xe59f4d[_0x1a18('0x50')]['id']},'attributes':[_0x1a18('0x56'),_0x1a18('0x58'),_0x1a18('0x5b'),_0x1a18('0x5c'),_0x1a18('0x5d'),_0x1a18('0x6c'),_0x1a18('0x5e'),_0x1a18('0x5f')],'raw':!![]});})[_0x1a18('0x31')](handleEntityNotFound(_0x16f98a,null))['then'](function(_0x5e21e5){if(_0x5e21e5){var _0x419e80=_0x5e21e5[_0x1a18('0x5c')]&&fs[_0x1a18('0x67')](path[_0x1a18('0x60')](config[_0x1a18('0x62')],_0x17e9a7,_[_0x1a18('0x61')](_0x5e21e5['favicon'])))?path[_0x1a18('0x60')](config[_0x1a18('0x62')],_0x17e9a7,_[_0x1a18('0x61')](_0x5e21e5[_0x1a18('0x5c')])):path[_0x1a18('0x60')](config[_0x1a18('0x62')],_0x17e9a7,_[_0x1a18('0x61')](_0x1a18('0x76')));var _0x4302eb=_0x1a18('0x63')+_[_0x1a18('0x64')](_0x1a18('0x5c'));if(_0x5e21e5[_0x4302eb]||!_0x14a95e['custom']){_0x419e80=path[_0x1a18('0x60')](config[_0x1a18('0x62')],_0x17e9a7,_[_0x1a18('0x61')](_0x1a18('0x76')));}if(!fs[_0x1a18('0x67')](_0x419e80)){throw new db[(_0x1a18('0x6e'))][(_0x1a18('0x68'))](_[_0x1a18('0x64')]('favicon')+_0x1a18('0x69'));}return _0x16f98a[_0x1a18('0x73')](_0x419e80);}})[_0x1a18('0x23')](handleError(_0x16f98a,null));};exports['getDate']=function(_0x12d0d7,_0x402131){var _0x2a1f1e={'offset':moment()['utcOffset']()};_0x2a1f1e[_0x1a18('0x77')]=moment()[_0x1a18('0x78')](_0x2a1f1e[_0x1a18('0x28')])[_0x1a18('0x79')](_0x1a18('0x7a'));return _0x402131[_0x1a18('0x25')](0xc8)['send'](_0x2a1f1e);};
\ No newline at end of file
index 1f09371..5608bdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['settings','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports','Setting'];(function(_0x53a5dc,_0x3bfa74){var _0xac4815=function(_0x5e7d1b){while(--_0x5e7d1b){_0x53a5dc['push'](_0x53a5dc['shift']());}};_0xac4815(++_0x3bfa74);}(_0x34e8,0x12c));var _0x834e=function(_0x2b8f11,_0x1f44db){_0x2b8f11=_0x2b8f11-0x0;var _0xef1604=_0x34e8[_0x2b8f11];return _0xef1604;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x34e8=['settings','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports','Setting'];(function(_0x4da15b,_0x62081){var _0x8165f4=function(_0x5cdb79){while(--_0x5cdb79){_0x4da15b['push'](_0x4da15b['shift']());}};_0x8165f4(++_0x62081);}(_0x34e8,0x12c));var _0x834e=function(_0x10b188,_0x11ed8b){_0x10b188=_0x10b188-0x0;var _0x227cd0=_0x34e8[_0x10b188];return _0x227cd0;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b0c1f73..fbc71d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x136e=['result','catch','ShowSetting','Setting','find','options','raw','where','attributes','map','include','model','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','code','error','message'];(function(_0x2fa264,_0x536e07){var _0x309976=function(_0x152b69){while(--_0x152b69){_0x2fa264['push'](_0x2fa264['shift']());}};_0x309976(++_0x536e07);}(_0x136e,0x90));var _0xe136=function(_0x217af8,_0x22ba48){_0x217af8=_0x217af8-0x0;var _0x511414=_0x136e[_0x217af8];return _0x511414;};'use strict';var _=require(_0xe136('0x0'));var util=require(_0xe136('0x1'));var moment=require(_0xe136('0x2'));var BPromise=require('bluebird');var rs=require(_0xe136('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe136('0x4'))['db'];var utils=require(_0xe136('0x5'));var logger=require(_0xe136('0x6'))('rpc');var config=require(_0xe136('0x7'));var jayson=require(_0xe136('0x8'));var client=jayson[_0xe136('0x9')][_0xe136('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x12afc6,_0x174445,_0xa7b449){return new BPromise(function(_0x4901ea,_0x3bba94){return client['request'](_0x12afc6,_0xa7b449)[_0xe136('0xb')](function(_0x1cf178){logger[_0xe136('0xc')](_0xe136('0xd'),_0x174445,_0xe136('0xe'));logger[_0xe136('0xf')](_0xe136('0x10'),_0x174445,_0xe136('0xe'),JSON[_0xe136('0x11')](_0x1cf178));if(_0x1cf178['error']){if(_0x1cf178['error'][_0xe136('0x12')]===0x1f4){logger[_0xe136('0x13')](_0xe136('0xd'),_0x174445,_0x1cf178[_0xe136('0x13')]['message']);return _0x3bba94(_0x1cf178[_0xe136('0x13')][_0xe136('0x14')]);}logger[_0xe136('0x13')]('Setting,\x20%s,\x20%s',_0x174445,_0x1cf178[_0xe136('0x13')]['message']);return _0x4901ea(_0x1cf178[_0xe136('0x13')][_0xe136('0x14')]);}else{logger['info'](_0xe136('0xd'),_0x174445,_0xe136('0xe'));_0x4901ea(_0x1cf178[_0xe136('0x15')][_0xe136('0x14')]);}})[_0xe136('0x16')](function(_0x2e5f08){logger[_0xe136('0x13')]('Setting,\x20%s,\x20%s',_0x174445,_0x2e5f08);_0x3bba94(_0x2e5f08);});});}exports[_0xe136('0x17')]=function(_0x2686d0){var _0x2268d1=this;return new Promise(function(_0x37d767,_0x41df1a){return db[_0xe136('0x18')][_0xe136('0x19')]({'raw':_0x2686d0[_0xe136('0x1a')]?_0x2686d0['options'][_0xe136('0x1b')]===undefined?!![]:![]:!![],'where':_0x2686d0[_0xe136('0x1a')]?_0x2686d0[_0xe136('0x1a')][_0xe136('0x1c')]||null:null,'attributes':_0x2686d0['options']?_0x2686d0[_0xe136('0x1a')][_0xe136('0x1d')]||null:null,'include':_0x2686d0[_0xe136('0x1a')]?_0x2686d0[_0xe136('0x1a')]['include']?_[_0xe136('0x1e')](_0x2686d0['options'][_0xe136('0x1f')],function(_0x5f00fc){return{'model':db[_0x5f00fc[_0xe136('0x20')]],'as':_0x5f00fc['as'],'attributes':_0x5f00fc[_0xe136('0x1d')],'include':_0x5f00fc[_0xe136('0x1f')]?_[_0xe136('0x1e')](_0x5f00fc[_0xe136('0x1f')],function(_0x34a5c2){return{'model':db[_0x34a5c2[_0xe136('0x20')]],'as':_0x34a5c2['as'],'attributes':_0x34a5c2[_0xe136('0x1d')],'include':_0x34a5c2[_0xe136('0x1f')]?_[_0xe136('0x1e')](_0x34a5c2[_0xe136('0x1f')],function(_0x5ac96a){return{'model':db[_0x5ac96a[_0xe136('0x20')]],'as':_0x5ac96a['as'],'attributes':_0x5ac96a['attributes']};}):[]};}):[]};}):[]:[]})[_0xe136('0xb')](function(_0x368367){logger[_0xe136('0xc')](_0xe136('0x17'),_0x2686d0);logger[_0xe136('0xf')](_0xe136('0x17'),_0x2686d0,JSON[_0xe136('0x11')](_0x368367));_0x37d767(_0x368367);})[_0xe136('0x16')](function(_0x2d181d){logger[_0xe136('0x13')](_0xe136('0x17'),_0x2d181d[_0xe136('0x14')],_0x2686d0);_0x41df1a(_0x2268d1[_0xe136('0x13')](0x1f4,_0x2d181d['message']));});});};
\ No newline at end of file
+var _0x6286=['Setting','raw','options','include','map','model','attributes','ShowSetting','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','Setting,\x20%s,\x20%s','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch'];(function(_0x403c20,_0x4a7b99){var _0x2b271a=function(_0x106ecb){while(--_0x106ecb){_0x403c20['push'](_0x403c20['shift']());}};_0x2b271a(++_0x4a7b99);}(_0x6286,0xda));var _0x6628=function(_0x2d057e,_0x4130fc){_0x2d057e=_0x2d057e-0x0;var _0x4fed62=_0x6286[_0x2d057e];return _0x4fed62;};'use strict';var _=require(_0x6628('0x0'));var util=require(_0x6628('0x1'));var moment=require(_0x6628('0x2'));var BPromise=require('bluebird');var rs=require(_0x6628('0x3'));var fs=require('fs');var Redis=require(_0x6628('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6628('0x5'));var logger=require(_0x6628('0x6'))(_0x6628('0x7'));var config=require(_0x6628('0x8'));var jayson=require(_0x6628('0x9'));var client=jayson[_0x6628('0xa')][_0x6628('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4ba21d,_0x5e36ed,_0x2bd6ab){return new BPromise(function(_0x5ed2a6,_0x3d30bd){return client[_0x6628('0xc')](_0x4ba21d,_0x2bd6ab)['then'](function(_0x50a1a5){logger['info'](_0x6628('0xd'),_0x5e36ed,'request\x20sent');logger['debug'](_0x6628('0xe'),_0x5e36ed,_0x6628('0xf'),JSON[_0x6628('0x10')](_0x50a1a5));if(_0x50a1a5[_0x6628('0x11')]){if(_0x50a1a5[_0x6628('0x11')]['code']===0x1f4){logger[_0x6628('0x11')](_0x6628('0xd'),_0x5e36ed,_0x50a1a5['error'][_0x6628('0x12')]);return _0x3d30bd(_0x50a1a5['error'][_0x6628('0x12')]);}logger[_0x6628('0x11')](_0x6628('0xd'),_0x5e36ed,_0x50a1a5[_0x6628('0x11')][_0x6628('0x12')]);return _0x5ed2a6(_0x50a1a5[_0x6628('0x11')][_0x6628('0x12')]);}else{logger[_0x6628('0x13')](_0x6628('0xd'),_0x5e36ed,'request\x20sent');_0x5ed2a6(_0x50a1a5[_0x6628('0x14')]['message']);}})[_0x6628('0x15')](function(_0x1b62db){logger[_0x6628('0x11')](_0x6628('0xd'),_0x5e36ed,_0x1b62db);_0x3d30bd(_0x1b62db);});});}exports['ShowSetting']=function(_0x14f081){var _0x42be24=this;return new Promise(function(_0x5b9f91,_0x4e605a){return db[_0x6628('0x16')]['find']({'raw':_0x14f081['options']?_0x14f081['options'][_0x6628('0x17')]===undefined?!![]:![]:!![],'where':_0x14f081['options']?_0x14f081['options']['where']||null:null,'attributes':_0x14f081[_0x6628('0x18')]?_0x14f081['options']['attributes']||null:null,'include':_0x14f081[_0x6628('0x18')]?_0x14f081['options'][_0x6628('0x19')]?_[_0x6628('0x1a')](_0x14f081[_0x6628('0x18')][_0x6628('0x19')],function(_0x1b9d87){return{'model':db[_0x1b9d87[_0x6628('0x1b')]],'as':_0x1b9d87['as'],'attributes':_0x1b9d87[_0x6628('0x1c')],'include':_0x1b9d87[_0x6628('0x19')]?_[_0x6628('0x1a')](_0x1b9d87[_0x6628('0x19')],function(_0x523fd7){return{'model':db[_0x523fd7[_0x6628('0x1b')]],'as':_0x523fd7['as'],'attributes':_0x523fd7['attributes'],'include':_0x523fd7[_0x6628('0x19')]?_[_0x6628('0x1a')](_0x523fd7['include'],function(_0x3a599f){return{'model':db[_0x3a599f[_0x6628('0x1b')]],'as':_0x3a599f['as'],'attributes':_0x3a599f['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3b5c7f){logger[_0x6628('0x13')](_0x6628('0x1d'),_0x14f081);logger['debug'](_0x6628('0x1d'),_0x14f081,JSON[_0x6628('0x10')](_0x3b5c7f));_0x5b9f91(_0x3b5c7f);})[_0x6628('0x15')](function(_0x587243){logger[_0x6628('0x11')](_0x6628('0x1d'),_0x587243[_0x6628('0x12')],_0x14f081);_0x4e605a(_0x42be24[_0x6628('0x11')](0x1f4,_0x587243['message']));});});};
\ No newline at end of file
index 571e5dd..f6b8621 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['/:id/users','getAgents','create','post','addAnswer','/:id/notify','notify','/:id/send','send','status','addAgents','put','update','delete','/:id','destroy','removeDispositions','removeAnswers','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status'];(function(_0x53f1c7,_0x4b046a){var _0x13f023=function(_0x113063){while(--_0x113063){_0x53f1c7['push'](_0x53f1c7['shift']());}};_0x13f023(++_0x4b046a);}(_0xabce,0x103));var _0xeabc=function(_0x34021d,_0x753aa6){_0x34021d=_0x34021d-0x0;var _0x16597b=_0xabce[_0x34021d];return _0x16597b;};'use strict';var multer=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var path=require(_0xeabc('0x2'));var timeout=require(_0xeabc('0x3'));var express=require(_0xeabc('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xeabc('0x5'));var interaction=require(_0xeabc('0x6'));var config=require(_0xeabc('0x7'));var controller=require('./smsAccount.controller');router['get']('/',auth[_0xeabc('0x8')](),controller['index']);router[_0xeabc('0x9')]('/describe',auth[_0xeabc('0x8')](),controller[_0xeabc('0xa')]);router[_0xeabc('0x9')]('/:id',auth[_0xeabc('0x8')](),controller[_0xeabc('0xb')]);router[_0xeabc('0x9')](_0xeabc('0xc'),auth[_0xeabc('0x8')](),controller[_0xeabc('0xd')]);router[_0xeabc('0x9')](_0xeabc('0xe'),auth[_0xeabc('0x8')](),controller[_0xeabc('0xf')]);router[_0xeabc('0x9')](_0xeabc('0x10'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x11')]);router[_0xeabc('0x9')](_0xeabc('0x12'),auth['isAuthenticated'](),controller[_0xeabc('0x13')]);router[_0xeabc('0x9')](_0xeabc('0x14'),controller['statusGet']);router['get'](_0xeabc('0x15'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x16')]);router['post']('/',auth[_0xeabc('0x8')](),controller[_0xeabc('0x17')]);router['post']('/:id/dispositions',auth[_0xeabc('0x8')](),controller['addDisposition']);router[_0xeabc('0x18')](_0xeabc('0xe'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x19')]);router[_0xeabc('0x18')](_0xeabc('0x1a'),controller[_0xeabc('0x1b')]);router[_0xeabc('0x18')]('/:id/applications',auth[_0xeabc('0x8')](),controller['addApplications']);router[_0xeabc('0x18')](_0xeabc('0x1c'),auth['isAuthenticated'](),controller[_0xeabc('0x1d')]);router[_0xeabc('0x18')](_0xeabc('0x14'),controller[_0xeabc('0x1e')]);router[_0xeabc('0x18')]('/:id/users',auth[_0xeabc('0x8')](),controller[_0xeabc('0x1f')]);router[_0xeabc('0x20')]('/:id',auth[_0xeabc('0x8')](),controller[_0xeabc('0x21')]);router[_0xeabc('0x22')](_0xeabc('0x23'),auth['isAuthenticated'](),controller[_0xeabc('0x24')]);router['delete'](_0xeabc('0xc'),auth['isAuthenticated'](),controller[_0xeabc('0x25')]);router[_0xeabc('0x22')](_0xeabc('0xe'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x26')]);router[_0xeabc('0x22')](_0xeabc('0x15'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xeabc('0x27')]=router;
\ No newline at end of file
+var _0x326f=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','/describe','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','getInteractions','/:id/status','getAgents','post','create','addDisposition','addAnswer','/:id/notify','notify','addApplications','send','status','addAgents','put','update','delete','/:id','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer'];(function(_0x30099e,_0x1ee4b2){var _0x474f63=function(_0x26f35a){while(--_0x26f35a){_0x30099e['push'](_0x30099e['shift']());}};_0x474f63(++_0x1ee4b2);}(_0x326f,0xd1));var _0xf326=function(_0x4e4bc7,_0x340187){_0x4e4bc7=_0x4e4bc7-0x0;var _0x2bd1f1=_0x326f[_0x4e4bc7];return _0x2bd1f1;};'use strict';var multer=require(_0xf326('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xf326('0x1'));var express=require(_0xf326('0x2'));var router=express[_0xf326('0x3')]();var fs_extra=require(_0xf326('0x4'));var auth=require(_0xf326('0x5'));var interaction=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var controller=require(_0xf326('0x8'));router[_0xf326('0x9')]('/',auth[_0xf326('0xa')](),controller['index']);router[_0xf326('0x9')](_0xf326('0xb'),auth[_0xf326('0xa')](),controller[_0xf326('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xf326('0xd')]);router[_0xf326('0x9')](_0xf326('0xe'),auth[_0xf326('0xa')](),controller[_0xf326('0xf')]);router['get'](_0xf326('0x10'),auth['isAuthenticated'](),controller[_0xf326('0x11')]);router['get'](_0xf326('0x12'),auth['isAuthenticated'](),controller[_0xf326('0x13')]);router[_0xf326('0x9')]('/:id/interactions',auth[_0xf326('0xa')](),controller[_0xf326('0x14')]);router[_0xf326('0x9')](_0xf326('0x15'),controller['statusGet']);router[_0xf326('0x9')]('/:id/users',auth['isAuthenticated'](),controller[_0xf326('0x16')]);router[_0xf326('0x17')]('/',auth[_0xf326('0xa')](),controller[_0xf326('0x18')]);router[_0xf326('0x17')](_0xf326('0xe'),auth[_0xf326('0xa')](),controller[_0xf326('0x19')]);router['post'](_0xf326('0x10'),auth[_0xf326('0xa')](),controller[_0xf326('0x1a')]);router[_0xf326('0x17')](_0xf326('0x1b'),controller[_0xf326('0x1c')]);router['post']('/:id/applications',auth['isAuthenticated'](),controller[_0xf326('0x1d')]);router[_0xf326('0x17')]('/:id/send',auth['isAuthenticated'](),controller[_0xf326('0x1e')]);router['post']('/:id/status',controller[_0xf326('0x1f')]);router[_0xf326('0x17')]('/:id/users',auth['isAuthenticated'](),controller[_0xf326('0x20')]);router[_0xf326('0x21')]('/:id',auth[_0xf326('0xa')](),controller[_0xf326('0x22')]);router[_0xf326('0x23')](_0xf326('0x24'),auth[_0xf326('0xa')](),controller[_0xf326('0x25')]);router['delete']('/:id/dispositions',auth['isAuthenticated'](),controller[_0xf326('0x26')]);router[_0xf326('0x23')](_0xf326('0x10'),auth[_0xf326('0xa')](),controller[_0xf326('0x27')]);router[_0xf326('0x23')]('/:id/users',auth[_0xf326('0xa')](),controller[_0xf326('0x28')]);module[_0xf326('0x29')]=router;
\ No newline at end of file
index 17eb26c..006354a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd444=['TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','randomstring','exports','STRING','generate','ENUM','twilio','skebby','plivo','clickatell','bandwidth','infobip','intelepeer'];(function(_0x3bce39,_0x3edeff){var _0x424c8f=function(_0x2d31ea){while(--_0x2d31ea){_0x3bce39['push'](_0x3bce39['shift']());}};_0x424c8f(++_0x3edeff);}(_0xd444,0x126));var _0x4d44=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xd444[_0x5c3c0b];return _0x52ecd2;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x4d44('0x0'));module[_0x4d44('0x1')]={'name':{'type':Sequelize[_0x4d44('0x2')],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0x4d44('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x4d44('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x4d44('0x2')],'defaultValue':function(){return rs[_0x4d44('0x3')]();}},'phone':{'type':Sequelize[_0x4d44('0x2')]},'type':{'type':Sequelize[_0x4d44('0x4')](_0x4d44('0x5'),_0x4d44('0x6'),'connectel','clicksend',_0x4d44('0x7'),_0x4d44('0x8'),_0x4d44('0x9'),'csc',_0x4d44('0xa'),_0x4d44('0xb'))},'accountSid':{'type':Sequelize[_0x4d44('0x2')]},'authId':{'type':Sequelize[_0x4d44('0x2')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0x4d44('0x4')]('SI','TI','GP')},'username':{'type':Sequelize[_0x4d44('0x2')]},'password':{'type':Sequelize[_0x4d44('0x2')]},'apiKey':{'type':Sequelize[_0x4d44('0x2')]},'applicationId':{'type':Sequelize['STRING']},'accountId':{'type':Sequelize[_0x4d44('0x2')]},'senderString':{'type':Sequelize[_0x4d44('0x2')]},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x4d44('0x2')]},'notificationTemplate':{'type':Sequelize[_0x4d44('0xc')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x4d44('0xd')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x4d44('0xd')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4d44('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x4d44('0xd')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x4d44('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x4d44('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4d44('0xe')],'comment':_0x4d44('0xf')},'mandatoryDisposition':{'type':Sequelize[_0x4d44('0xd')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1b5a80){if(!_0x1b5a80)this[_0x4d44('0x10')](_0x4d44('0x11'),null);this[_0x4d44('0x10')]('mandatoryDisposition',_0x1b5a80);}}};
\ No newline at end of file
+var _0xa0ca=['STRING','generate','ENUM','twilio','skebby','plivo','csc','infobip','intelepeer','BOOLEAN','TEXT','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','randomstring','name'];(function(_0x2cd8dd,_0x58a457){var _0x29724d=function(_0xbe8ebd){while(--_0xbe8ebd){_0x2cd8dd['push'](_0x2cd8dd['shift']());}};_0x29724d(++_0x58a457);}(_0xa0ca,0x1c5));var _0xaa0c=function(_0x5aa6c3,_0x13cc75){_0x5aa6c3=_0x5aa6c3-0x0;var _0x46f469=_0xa0ca[_0x5aa6c3];return _0x46f469;};'use strict';var Sequelize=require(_0xaa0c('0x0'));var rs=require(_0xaa0c('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xaa0c('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0xaa0c('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0xaa0c('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0xaa0c('0x3')],'defaultValue':function(){return rs[_0xaa0c('0x4')]();}},'phone':{'type':Sequelize[_0xaa0c('0x3')]},'type':{'type':Sequelize[_0xaa0c('0x5')](_0xaa0c('0x6'),_0xaa0c('0x7'),'connectel','clicksend',_0xaa0c('0x8'),'clickatell','bandwidth',_0xaa0c('0x9'),_0xaa0c('0xa'),_0xaa0c('0xb'))},'accountSid':{'type':Sequelize[_0xaa0c('0x3')]},'authId':{'type':Sequelize[_0xaa0c('0x3')]},'authToken':{'type':Sequelize[_0xaa0c('0x3')]},'smsMethod':{'type':Sequelize[_0xaa0c('0x5')]('SI','TI','GP')},'username':{'type':Sequelize[_0xaa0c('0x3')]},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize[_0xaa0c('0x3')]},'applicationId':{'type':Sequelize[_0xaa0c('0x3')]},'accountId':{'type':Sequelize[_0xaa0c('0x3')]},'senderString':{'type':Sequelize[_0xaa0c('0x3')]},'deliveryReport':{'type':Sequelize[_0xaa0c('0xc')],'defaultValue':![]},'description':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0xaa0c('0xd')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xaa0c('0xc')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xaa0c('0xc')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xaa0c('0xc')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xaa0c('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xaa0c('0xc')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xaa0c('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xaa0c('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xaa0c('0xe')],'comment':_0xaa0c('0xf')},'mandatoryDisposition':{'type':Sequelize[_0xaa0c('0xc')],'defaultValue':![],'comment':_0xaa0c('0x10'),'set':function(_0x100610){if(!_0x100610)this[_0xaa0c('0x11')]('mandatoryDispositionPauseId',null);this[_0xaa0c('0x11')](_0xaa0c('0x12'),_0x100610);}}};
\ No newline at end of file
index 49eab3b..95e7f08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb27f=['catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','get','SmsAccounts','UserProfileResource','destroy','name','send','rawAttributes','fieldName','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','type','VIRTUAL','options','SmsAccount','include','findAll','rows','show','params','Pause','mandatoryDispositionPause','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','getDispositions','findOne','Disposition','nolimit','SmsAccountId','map','includeAll','removeDispositions','addAnswer','CannedAnswer','getAnswers','ids','notify','SmsApplication','Applications','applications','orderBy','priority','asc','account','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','mobile','twilio','from','From','Body','messageId','skebby','sender','text','clicksend','message_id','plivo','MessageUUID','infobip','results','originatingAddress','segmentedMessage','fromNumber','replyMessageId','bandwidth','refid','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','ListId','DESC','list','omit','Contacts','contact','SmsInteraction','spread','interaction','autoclose','unmanaged','*,*,*,*','SmsMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','entity\x20found','set','Content-Type','text/xml','addApplications','sequelize','transaction','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','tag','List','defaults','Messages','dataValues','push','inspect','skebby_dispatch_id','connectel','statusInt','requestid','status_code','groupName','DELIVERED','clickatell','intelepeer','redif','error_code','DELIVERED_TO_GATEWAY','message-delivered','DELIVRD','ACCEPTD','message-id','state','csc','addAgents','emit','removeAgents','isArray','userSmsAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','redis','./smsAccount.socket','register','jayson/promise','client','http','then','request\x20sent','debug','stringify','error','code','SmsAccount,\x20%s,\x20%s','message','info'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0xb27f,0xb8));var _0xfb27=function(_0x19bfd4,_0x372ced){_0x19bfd4=_0x19bfd4-0x0;var _0x49f73a=_0xb27f[_0x19bfd4];return _0x49f73a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfb27('0x0'));var zipdir=require(_0xfb27('0x1'));var jsonpatch=require(_0xfb27('0x2'));var rp=require('request-promise');var moment=require(_0xfb27('0x3'));var BPromise=require(_0xfb27('0x4'));var Mustache=require(_0xfb27('0x5'));var util=require(_0xfb27('0x6'));var path=require(_0xfb27('0x7'));var sox=require(_0xfb27('0x8'));var csv=require(_0xfb27('0x9'));var ejs=require(_0xfb27('0xa'));var fs=require('fs');var fs_extra=require(_0xfb27('0xb'));var _=require(_0xfb27('0xc'));var squel=require(_0xfb27('0xd'));var crypto=require('crypto');var jsforce=require(_0xfb27('0xe'));var deskjs=require(_0xfb27('0xf'));var toCsv=require(_0xfb27('0x9'));var querystring=require(_0xfb27('0x10'));var Papa=require(_0xfb27('0x11'));var Redis=require(_0xfb27('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xfb27('0x13'));var as=require(_0xfb27('0x14'));var hardwareService=require(_0xfb27('0x15'));var logger=require('../../config/logger')(_0xfb27('0x16'));var utils=require('../../config/utils');var config=require(_0xfb27('0x17'));var licenseUtil=require(_0xfb27('0x18'));var db=require('../../mysqldb')['db'];config[_0xfb27('0x19')]=_['defaults'](config[_0xfb27('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfb27('0x19')]));require(_0xfb27('0x1a'))[_0xfb27('0x1b')](socket);var jayson=require(_0xfb27('0x1c'));var client=jayson[_0xfb27('0x1d')][_0xfb27('0x1e')]({'port':0x232c});function respondWithRpcPromise(_0x31a4bf,_0x577811,_0x4b4628,_0x53df2d){return new BPromise(function(_0x494795,_0x56f355){var _0x5471de=_0x53df2d||client;return _0x5471de['request'](_0x31a4bf,_0x4b4628)[_0xfb27('0x1f')](function(_0x5b60c1){logger['info']('SmsAccount,\x20%s,\x20%s',_0x577811,_0xfb27('0x20'));logger[_0xfb27('0x21')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x577811,'request\x20sent',JSON[_0xfb27('0x22')](_0x5b60c1));if(_0x5b60c1[_0xfb27('0x23')]){if(_0x5b60c1[_0xfb27('0x23')][_0xfb27('0x24')]===0x1f4){logger['error'](_0xfb27('0x25'),_0x577811,_0x5b60c1[_0xfb27('0x23')][_0xfb27('0x26')]);return _0x56f355(_0x5b60c1[_0xfb27('0x23')][_0xfb27('0x26')]);}logger['error'](_0xfb27('0x25'),_0x577811,_0x5b60c1[_0xfb27('0x23')][_0xfb27('0x26')]);return _0x494795(_0x5b60c1['error']['message']);}else{logger[_0xfb27('0x27')](_0xfb27('0x25'),_0x577811,_0xfb27('0x20'));_0x494795(_0x5b60c1['result']['message']);}})[_0xfb27('0x28')](function(_0xe9f775){logger[_0xfb27('0x23')](_0xfb27('0x25'),_0x577811,_0xe9f775);_0x56f355(_0xe9f775);});});}function respondWithStatusCode(_0x248949,_0x40f632){_0x40f632=_0x40f632||0xcc;return function(_0x53f2c8){if(_0x53f2c8){return _0x248949[_0xfb27('0x29')](_0x40f632);}return _0x248949[_0xfb27('0x2a')](_0x40f632)[_0xfb27('0x2b')]();};}function respondWithResult(_0x557b17,_0x2d889b){_0x2d889b=_0x2d889b||0xc8;return function(_0x309a9b){if(_0x309a9b){return _0x557b17[_0xfb27('0x2a')](_0x2d889b)[_0xfb27('0x2c')](_0x309a9b);}};}function respondWithFilteredResult(_0x1121b7,_0x50858f){return function(_0x4ea3cd){if(_0x4ea3cd){var _0x444219=typeof _0x50858f[_0xfb27('0x2d')]===_0xfb27('0x2e')&&typeof _0x50858f[_0xfb27('0x2f')]==='undefined';var _0x3dbb04=_0x4ea3cd[_0xfb27('0x30')];var _0x3c7c3a=_0x444219?0x0:_0x50858f[_0xfb27('0x2d')];var _0x824b7b=_0x444219?_0x4ea3cd[_0xfb27('0x30')]:_0x50858f[_0xfb27('0x2d')]+_0x50858f[_0xfb27('0x2f')];var _0x568920;if(_0x824b7b>=_0x3dbb04){_0x824b7b=_0x3dbb04;_0x568920=0xc8;}else{_0x568920=0xce;}_0x1121b7[_0xfb27('0x2a')](_0x568920);return _0x1121b7['set'](_0xfb27('0x31'),_0x3c7c3a+'-'+_0x824b7b+'/'+_0x3dbb04)[_0xfb27('0x2c')](_0x4ea3cd);}return null;};}function patchUpdates(_0x6a9677){return function(_0x58f917){try{jsonpatch[_0xfb27('0x32')](_0x58f917,_0x6a9677,!![]);}catch(_0x1602e4){return BPromise[_0xfb27('0x33')](_0x1602e4);}return _0x58f917['save']();};}function saveUpdates(_0x529f7c,_0x471596){return function(_0x350802){if(_0x350802){return _0x350802[_0xfb27('0x34')](_0x529f7c)[_0xfb27('0x1f')](function(_0xa62a26){return _0xa62a26;});}return null;};}function removeEntity(_0x398615,_0x5366d4){return function(_0x22d24d){if(_0x22d24d){return _0x22d24d['destroy']()[_0xfb27('0x1f')](function(){var _0x4e273f=_0x22d24d[_0xfb27('0x35')]({'plain':!![]});var _0x5ee545=_0xfb27('0x36');return db[_0xfb27('0x37')][_0xfb27('0x38')]({'where':{'type':_0x5ee545,'resourceId':_0x4e273f['id']}})['then'](function(){return _0x22d24d;});})[_0xfb27('0x1f')](function(){_0x398615['status'](0xcc)[_0xfb27('0x2b')]();});}};}function handleEntityNotFound(_0x31e208,_0x3e57e6){return function(_0x18e655){if(!_0x18e655){_0x31e208[_0xfb27('0x29')](0x194);}return _0x18e655;};}function handleError(_0x1d16ce,_0x1eed25){_0x1eed25=_0x1eed25||0x1f4;return function(_0x5c442c){logger['error'](_0x5c442c['stack']);if(_0x5c442c[_0xfb27('0x39')]){delete _0x5c442c[_0xfb27('0x39')];}_0x1d16ce[_0xfb27('0x2a')](_0x1eed25)[_0xfb27('0x3a')](_0x5c442c);};}exports['index']=function(_0x12ffda,_0x470ead){var _0x477446={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x4cb3b5={},_0x1f80c1={'count':0x0,'rows':[]};var _0x288294=_['map'](db['SmsAccount'][_0xfb27('0x3b')],function(_0x1885ad){return{'name':_0x1885ad[_0xfb27('0x3c')],'type':_0x1885ad['type'][_0xfb27('0x3d')]};});_0x4cb3b5['model']=_['map'](_0x288294,'name');_0x4cb3b5['query']=_[_0xfb27('0x3e')](_0x12ffda[_0xfb27('0x3f')]);_0x4cb3b5[_0xfb27('0x40')]=_[_0xfb27('0x41')](_0x4cb3b5[_0xfb27('0x42')],_0x4cb3b5[_0xfb27('0x3f')]);_0x477446[_0xfb27('0x43')]=_[_0xfb27('0x41')](_0x4cb3b5[_0xfb27('0x42')],qs['fields'](_0x12ffda['query'][_0xfb27('0x44')]));_0x477446[_0xfb27('0x43')]=_0x477446['attributes'][_0xfb27('0x45')]?_0x477446[_0xfb27('0x43')]:_0x4cb3b5['model'];if(!_0x12ffda[_0xfb27('0x3f')][_0xfb27('0x46')]('nolimit')){_0x477446['limit']=qs[_0xfb27('0x2f')](_0x12ffda[_0xfb27('0x3f')]['limit']);_0x477446[_0xfb27('0x2d')]=qs[_0xfb27('0x2d')](_0x12ffda[_0xfb27('0x3f')]['offset']);}_0x477446[_0xfb27('0x47')]=qs[_0xfb27('0x48')](_0x12ffda[_0xfb27('0x3f')][_0xfb27('0x48')]);_0x477446['where']=qs[_0xfb27('0x40')](_[_0xfb27('0x49')](_0x12ffda['query'],_0x4cb3b5[_0xfb27('0x40')]),_0x288294);if(_0x12ffda[_0xfb27('0x3f')][_0xfb27('0x4a')]){_0x477446[_0xfb27('0x4b')]=_[_0xfb27('0x4c')](_0x477446[_0xfb27('0x4b')],{'$or':_['map'](_0x288294,function(_0x4ccd87){if(_0x4ccd87[_0xfb27('0x4d')]!==_0xfb27('0x4e')){var _0x252b26={};_0x252b26[_0x4ccd87[_0xfb27('0x39')]]={'$like':'%'+_0x12ffda[_0xfb27('0x3f')]['filter']+'%'};return _0x252b26;}})});}_0x477446=_['merge']({},_0x477446,_0x12ffda[_0xfb27('0x4f')]);var _0x210ad4={'where':_0x477446[_0xfb27('0x4b')]};return db[_0xfb27('0x50')][_0xfb27('0x30')](_0x210ad4)[_0xfb27('0x1f')](function(_0x38698e){_0x1f80c1['count']=_0x38698e;if(_0x12ffda['query']['includeAll']){_0x477446[_0xfb27('0x51')]=[{'all':!![]}];}return db[_0xfb27('0x50')][_0xfb27('0x52')](_0x477446);})[_0xfb27('0x1f')](function(_0x3b5453){_0x1f80c1[_0xfb27('0x53')]=_0x3b5453;return _0x1f80c1;})[_0xfb27('0x1f')](respondWithFilteredResult(_0x470ead,_0x477446))[_0xfb27('0x28')](handleError(_0x470ead,null));};exports[_0xfb27('0x54')]=function(_0xa9697d,_0xddaf1d){var _0x1f5124={'raw':![],'where':{'id':_0xa9697d[_0xfb27('0x55')]['id']},'include':[{'model':db[_0xfb27('0x56')],'as':_0xfb27('0x57')}]},_0x18e919={};_0x18e919['model']=_[_0xfb27('0x3e')](db[_0xfb27('0x50')][_0xfb27('0x3b')]);_0x18e919[_0xfb27('0x3f')]=_[_0xfb27('0x3e')](_0xa9697d[_0xfb27('0x3f')]);_0x18e919['filters']=_[_0xfb27('0x41')](_0x18e919[_0xfb27('0x42')],_0x18e919[_0xfb27('0x3f')]);_0x1f5124[_0xfb27('0x43')]=_['intersection'](_0x18e919[_0xfb27('0x42')],qs['fields'](_0xa9697d['query'][_0xfb27('0x44')]));_0x1f5124['attributes']=_0x1f5124[_0xfb27('0x43')][_0xfb27('0x45')]?_0x1f5124['attributes']:_0x18e919['model'];if(_0xa9697d[_0xfb27('0x3f')]['includeAll']){_0x1f5124[_0xfb27('0x51')]=[{'all':!![]}];}_0x1f5124=_[_0xfb27('0x4c')]({},_0x1f5124,_0xa9697d[_0xfb27('0x4f')]);return db[_0xfb27('0x50')][_0xfb27('0x58')](_0x1f5124)[_0xfb27('0x1f')](handleEntityNotFound(_0xddaf1d,null))[_0xfb27('0x1f')](respondWithResult(_0xddaf1d,null))['catch'](handleError(_0xddaf1d,null));};exports[_0xfb27('0x59')]=function(_0x163b25,_0x2666b2){return db[_0xfb27('0x50')][_0xfb27('0x59')](_0x163b25[_0xfb27('0x5a')],{})[_0xfb27('0x1f')](function(_0x5abaca){var _0x21708c=_0x163b25[_0xfb27('0x5b')][_0xfb27('0x35')]({'plain':!![]});if(!_0x21708c)throw new Error(_0xfb27('0x5c'));if(_0x21708c[_0xfb27('0x5d')]===_0xfb27('0x5b')){var _0x52e2f4=_0x5abaca['get']({'plain':!![]});var _0x2b6091='SmsAccounts';return db['UserProfileSection'][_0xfb27('0x58')]({'where':{'name':_0x2b6091,'userProfileId':_0x21708c[_0xfb27('0x5e')]},'raw':!![]})['then'](function(_0x1be7b0){if(_0x1be7b0&&_0x1be7b0['autoAssociation']===0x0){return db[_0xfb27('0x37')][_0xfb27('0x59')]({'name':_0x52e2f4['name'],'resourceId':_0x52e2f4['id'],'type':_0x1be7b0['name'],'sectionId':_0x1be7b0['id']},{})['then'](function(){return _0x5abaca;});}else{return _0x5abaca;}})[_0xfb27('0x28')](function(_0x1ff5f0){logger['error'](_0xfb27('0x5f'),_0x1ff5f0);throw _0x1ff5f0;});}return _0x5abaca;})[_0xfb27('0x1f')](respondWithResult(_0x2666b2,0xc9))['catch'](handleError(_0x2666b2,null));};exports[_0xfb27('0x34')]=function(_0x5daf7d,_0x31dda7){if(_0x5daf7d[_0xfb27('0x5a')]['id']){delete _0x5daf7d[_0xfb27('0x5a')]['id'];}return db[_0xfb27('0x50')][_0xfb27('0x58')]({'where':{'id':_0x5daf7d[_0xfb27('0x55')]['id']},'include':[{'model':db[_0xfb27('0x56')],'as':_0xfb27('0x57')}]})[_0xfb27('0x1f')](handleEntityNotFound(_0x31dda7,null))[_0xfb27('0x1f')](saveUpdates(_0x5daf7d[_0xfb27('0x5a')],null))[_0xfb27('0x1f')](respondWithResult(_0x31dda7,null))['catch'](handleError(_0x31dda7,null));};exports[_0xfb27('0x38')]=function(_0x4fbe60,_0x1281fc){return db['SmsAccount'][_0xfb27('0x58')]({'where':{'id':_0x4fbe60[_0xfb27('0x55')]['id']}})['then'](handleEntityNotFound(_0x1281fc,null))[_0xfb27('0x1f')](removeEntity(_0x1281fc,null))[_0xfb27('0x28')](handleError(_0x1281fc,null));};exports[_0xfb27('0x60')]=function(_0x47f647,_0x59576d){return db['SmsAccount'][_0xfb27('0x60')]()[_0xfb27('0x1f')](respondWithResult(_0x59576d,null))['catch'](handleError(_0x59576d,null));};exports[_0xfb27('0x61')]=function(_0x5e1e1b,_0x2decca,_0x53741e){if(_0x5e1e1b[_0xfb27('0x5a')]['id']){delete _0x5e1e1b[_0xfb27('0x5a')]['id'];}return db[_0xfb27('0x50')][_0xfb27('0x58')]({'where':{'id':_0x5e1e1b[_0xfb27('0x55')]['id']}})[_0xfb27('0x1f')](handleEntityNotFound(_0x2decca,null))[_0xfb27('0x1f')](function(_0x55ba14){if(_0x55ba14){_0x5e1e1b[_0xfb27('0x5a')]['SmsAccountId']=_0x55ba14['id'];return db['Disposition']['create'](_0x5e1e1b['body']);}})[_0xfb27('0x1f')](respondWithResult(_0x2decca,null))[_0xfb27('0x28')](handleError(_0x2decca,null));};exports[_0xfb27('0x62')]=function(_0x39bffe,_0x1b821d,_0x544029){var _0x2886cc={'raw':![],'where':{}};var _0x354fdc={};var _0x13d492={'count':0x0,'rows':[]};return db[_0xfb27('0x50')][_0xfb27('0x63')]({'where':{'id':_0x39bffe['params']['id']}})[_0xfb27('0x1f')](handleEntityNotFound(_0x1b821d,null))[_0xfb27('0x1f')](function(_0x43aec0){if(_0x43aec0){_0x354fdc['model']=_[_0xfb27('0x3e')](db[_0xfb27('0x64')][_0xfb27('0x3b')]);_0x354fdc[_0xfb27('0x3f')]=_[_0xfb27('0x3e')](_0x39bffe[_0xfb27('0x3f')]);_0x354fdc[_0xfb27('0x40')]=_[_0xfb27('0x41')](_0x354fdc[_0xfb27('0x42')],_0x354fdc[_0xfb27('0x3f')]);_0x2886cc[_0xfb27('0x43')]=_[_0xfb27('0x41')](_0x354fdc[_0xfb27('0x42')],qs[_0xfb27('0x44')](_0x39bffe[_0xfb27('0x3f')][_0xfb27('0x44')]));_0x2886cc['attributes']=_0x2886cc[_0xfb27('0x43')][_0xfb27('0x45')]?_0x2886cc[_0xfb27('0x43')]:_0x354fdc[_0xfb27('0x42')];if(!_0x39bffe['query'][_0xfb27('0x46')](_0xfb27('0x65'))){_0x2886cc[_0xfb27('0x2f')]=qs['limit'](_0x39bffe[_0xfb27('0x3f')]['limit']);_0x2886cc['offset']=qs['offset'](_0x39bffe['query'][_0xfb27('0x2d')]);}_0x2886cc['order']=qs['sort'](_0x39bffe[_0xfb27('0x3f')][_0xfb27('0x48')]);_0x2886cc[_0xfb27('0x4b')]=qs[_0xfb27('0x40')](_[_0xfb27('0x49')](_0x39bffe[_0xfb27('0x3f')],_0x354fdc[_0xfb27('0x40')]));_0x2886cc['where'][_0xfb27('0x66')]=_0x43aec0['id'];if(_0x39bffe['query']['filter']){_0x2886cc['where']=_[_0xfb27('0x4c')](_0x2886cc[_0xfb27('0x4b')],{'$or':_[_0xfb27('0x67')](_0x2886cc[_0xfb27('0x43')],function(_0xe28b72){var _0x5ee1d3={};_0x5ee1d3[_0xe28b72]={'$like':'%'+_0x39bffe['query']['filter']+'%'};return _0x5ee1d3;})});}_0x2886cc=_[_0xfb27('0x4c')]({},_0x2886cc,_0x39bffe['options']);return db['Disposition'][_0xfb27('0x30')]({'where':_0x2886cc[_0xfb27('0x4b')]})[_0xfb27('0x1f')](function(_0x582189){_0x13d492['count']=_0x582189;if(_0x39bffe[_0xfb27('0x3f')][_0xfb27('0x68')]){_0x2886cc[_0xfb27('0x51')]=[{'all':!![]}];}return db[_0xfb27('0x64')][_0xfb27('0x52')](_0x2886cc);})['then'](function(_0x3094b6){_0x13d492[_0xfb27('0x53')]=_0x3094b6;return _0x13d492;});}})[_0xfb27('0x1f')](respondWithFilteredResult(_0x1b821d,_0x2886cc))[_0xfb27('0x28')](handleError(_0x1b821d,null));};exports[_0xfb27('0x69')]=function(_0x308143,_0x3193a1,_0x1ab036){return db[_0xfb27('0x50')][_0xfb27('0x58')]({'where':{'id':_0x308143[_0xfb27('0x55')]['id']}})[_0xfb27('0x1f')](handleEntityNotFound(_0x3193a1,null))[_0xfb27('0x1f')](function(_0x5755cf){if(_0x5755cf){return _0x5755cf[_0xfb27('0x69')](_0x308143[_0xfb27('0x3f')]['ids']);}})['then'](respondWithStatusCode(_0x3193a1,null))[_0xfb27('0x28')](handleError(_0x3193a1,null));};exports[_0xfb27('0x6a')]=function(_0x2c936d,_0x13c0c8,_0x41d04f){if(_0x2c936d['body']['id']){delete _0x2c936d[_0xfb27('0x5a')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0x2c936d[_0xfb27('0x55')]['id']}})[_0xfb27('0x1f')](handleEntityNotFound(_0x13c0c8,null))[_0xfb27('0x1f')](function(_0x175a3f){if(_0x175a3f){_0x2c936d['body'][_0xfb27('0x66')]=_0x175a3f['id'];return db[_0xfb27('0x6b')][_0xfb27('0x59')](_0x2c936d[_0xfb27('0x5a')]);}})[_0xfb27('0x1f')](respondWithResult(_0x13c0c8,null))[_0xfb27('0x28')](handleError(_0x13c0c8,null));};exports[_0xfb27('0x6c')]=function(_0x151845,_0x20c6a2,_0x5a260d){var _0x505871={'raw':![],'where':{}};var _0x4e798e={};var _0x3619a7={'count':0x0,'rows':[]};return db[_0xfb27('0x50')][_0xfb27('0x63')]({'where':{'id':_0x151845[_0xfb27('0x55')]['id']}})[_0xfb27('0x1f')](handleEntityNotFound(_0x20c6a2,null))[_0xfb27('0x1f')](function(_0x315378){if(_0x315378){_0x4e798e[_0xfb27('0x42')]=_[_0xfb27('0x3e')](db[_0xfb27('0x6b')][_0xfb27('0x3b')]);_0x4e798e[_0xfb27('0x3f')]=_[_0xfb27('0x3e')](_0x151845[_0xfb27('0x3f')]);_0x4e798e[_0xfb27('0x40')]=_[_0xfb27('0x41')](_0x4e798e[_0xfb27('0x42')],_0x4e798e[_0xfb27('0x3f')]);_0x505871[_0xfb27('0x43')]=_[_0xfb27('0x41')](_0x4e798e[_0xfb27('0x42')],qs['fields'](_0x151845[_0xfb27('0x3f')]['fields']));_0x505871['attributes']=_0x505871['attributes']['length']?_0x505871['attributes']:_0x4e798e['model'];if(!_0x151845[_0xfb27('0x3f')][_0xfb27('0x46')](_0xfb27('0x65'))){_0x505871[_0xfb27('0x2f')]=qs['limit'](_0x151845[_0xfb27('0x3f')][_0xfb27('0x2f')]);_0x505871[_0xfb27('0x2d')]=qs[_0xfb27('0x2d')](_0x151845[_0xfb27('0x3f')][_0xfb27('0x2d')]);}_0x505871[_0xfb27('0x47')]=qs[_0xfb27('0x48')](_0x151845[_0xfb27('0x3f')][_0xfb27('0x48')]);_0x505871[_0xfb27('0x4b')]=qs['filters'](_['pick'](_0x151845[_0xfb27('0x3f')],_0x4e798e[_0xfb27('0x40')]));_0x505871[_0xfb27('0x4b')][_0xfb27('0x66')]=_0x315378['id'];if(_0x151845[_0xfb27('0x3f')]['filter']){_0x505871[_0xfb27('0x4b')]=_['merge'](_0x505871[_0xfb27('0x4b')],{'$or':_[_0xfb27('0x67')](_0x505871[_0xfb27('0x43')],function(_0x333f1e){var _0x1195ea={};_0x1195ea[_0x333f1e]={'$like':'%'+_0x151845['query'][_0xfb27('0x4a')]+'%'};return _0x1195ea;})});}_0x505871=_[_0xfb27('0x4c')]({},_0x505871,_0x151845[_0xfb27('0x4f')]);return db['CannedAnswer'][_0xfb27('0x30')]({'where':_0x505871[_0xfb27('0x4b')]})['then'](function(_0x4565d7){_0x3619a7[_0xfb27('0x30')]=_0x4565d7;if(_0x151845['query'][_0xfb27('0x68')]){_0x505871[_0xfb27('0x51')]=[{'all':!![]}];}return db[_0xfb27('0x6b')][_0xfb27('0x52')](_0x505871);})['then'](function(_0x18c17b){_0x3619a7[_0xfb27('0x53')]=_0x18c17b;return _0x3619a7;});}})[_0xfb27('0x1f')](respondWithFilteredResult(_0x20c6a2,_0x505871))[_0xfb27('0x28')](handleError(_0x20c6a2,null));};exports['removeAnswers']=function(_0x54b19c,_0x2f29d0,_0x31849c){return db[_0xfb27('0x50')][_0xfb27('0x58')]({'where':{'id':_0x54b19c[_0xfb27('0x55')]['id']}})[_0xfb27('0x1f')](handleEntityNotFound(_0x2f29d0,null))[_0xfb27('0x1f')](function(_0x590373){if(_0x590373){return _0x590373['removeAnswers'](_0x54b19c[_0xfb27('0x3f')][_0xfb27('0x6d')]);}})[_0xfb27('0x1f')](respondWithStatusCode(_0x2f29d0,null))[_0xfb27('0x28')](handleError(_0x2f29d0,null));};exports[_0xfb27('0x6e')]=function(_0x5f2f59,_0x1fc500,_0x356d82){var _0x1b5537={'channel':'sms'};var _0x16f1d5=[];var _0x3440a0=[];var _0x3d9646={};return db[_0xfb27('0x50')][_0xfb27('0x58')]({'where':{'id':_0x5f2f59[_0xfb27('0x55')]['id']},'include':[{'model':db[_0xfb27('0x6f')],'as':_0xfb27('0x70')}]})['then'](handleEntityNotFound(_0x1fc500,null))[_0xfb27('0x1f')](function(_0xed198e){_0x1b5537['account']=_0xed198e;_0x1b5537[_0xfb27('0x71')]=_[_0xfb27('0x72')](_0xed198e['Applications'],[_0xfb27('0x73')],[_0xfb27('0x74')]);if(_0x1b5537[_0xfb27('0x75')][_0xfb27('0x70')]){delete _0x1b5537['account'][_0xfb27('0x70')];}return db[_0xfb27('0x76')]['describe']();})['then'](function(_0x5e54a2){if(!_0x5e54a2){throw new db[(_0xfb27('0x77'))][(_0xfb27('0x78'))](_0xfb27('0x79'));}_0x16f1d5=_[_0xfb27('0x7a')](_[_0xfb27('0x3e')](_0x5e54a2),[_0xfb27('0x7b'),_0xfb27('0x7c')]);_0x3440a0=_[_0xfb27('0x7a')](_[_0xfb27('0x3e')](_0x5e54a2),[_0xfb27('0x7b'),'updatedAt','CompanyId','ListId']);_0x1b5537[_0xfb27('0x5a')]={'mapKey':_0xfb27('0x7d')};if(_0x1b5537[_0xfb27('0x75')]['type']){switch(_0x1b5537['account'][_0xfb27('0x4d')]){case _0xfb27('0x7e'):_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x7f')]=_0x5f2f59['body'][_0xfb27('0x80')];_0x1b5537['body'][_0xfb27('0x5a')]=_0x5f2f59[_0xfb27('0x5a')][_0xfb27('0x81')];_0x1b5537['body'][_0xfb27('0x82')]=_0x5f2f59[_0xfb27('0x5a')]['MessageSid'];break;case _0xfb27('0x83'):_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x7f')]='+'+_0x5f2f59[_0xfb27('0x5a')][_0xfb27('0x84')];_0x1b5537['body'][_0xfb27('0x5a')]=_0x5f2f59['body'][_0xfb27('0x85')];break;case'connectel':_0x1b5537[_0xfb27('0x5a')]['from']=_0x5f2f59[_0xfb27('0x5a')][_0xfb27('0x7f')];_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x5a')]=_0x5f2f59[_0xfb27('0x5a')]['message'];break;case _0xfb27('0x86'):_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x7f')]=_0x5f2f59[_0xfb27('0x5a')][_0xfb27('0x7f')];_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x5a')]=_0x5f2f59[_0xfb27('0x5a')][_0xfb27('0x5a')];_0x1b5537['body'][_0xfb27('0x82')]=_0x5f2f59['body'][_0xfb27('0x87')];break;case _0xfb27('0x88'):_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x7f')]=_0x5f2f59[_0xfb27('0x5a')][_0xfb27('0x80')];_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x5a')]=_0x5f2f59[_0xfb27('0x5a')]['Text'];_0x1b5537[_0xfb27('0x5a')]['messageId']=_0x5f2f59[_0xfb27('0x5a')][_0xfb27('0x89')];break;case _0xfb27('0x8a'):_0x1b5537[_0xfb27('0x5a')]['from']='+'+_0x5f2f59['body'][_0xfb27('0x8b')][0x0][_0xfb27('0x7f')];_0x1b5537[_0xfb27('0x5a')]['body']=_0x5f2f59[_0xfb27('0x5a')][_0xfb27('0x8b')][0x0][_0xfb27('0x85')];_0x1b5537[_0xfb27('0x5a')]['messageId']=_0x5f2f59[_0xfb27('0x5a')][_0xfb27('0x8b')][0x0][_0xfb27('0x82')];break;case'csc':_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x7f')]=_0x5f2f59[_0xfb27('0x5a')][_0xfb27('0x8c')];_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x5a')]=_0x5f2f59[_0xfb27('0x5a')][_0xfb27('0x8d')][_0xfb27('0x26')];break;case'clickatell':_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x7f')]=_0x5f2f59[_0xfb27('0x5a')][_0xfb27('0x8e')];_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x5a')]=_0x5f2f59[_0xfb27('0x5a')][_0xfb27('0x85')];_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x82')]=_0x5f2f59[_0xfb27('0x5a')][_0xfb27('0x8f')];break;case _0xfb27('0x90'):_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x82')]=_0x5f2f59[_0xfb27('0x5a')][0x0][_0xfb27('0x26')]['id'];_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x7f')]=_0x5f2f59[_0xfb27('0x5a')][0x0][_0xfb27('0x26')][_0xfb27('0x7f')];_0x1b5537[_0xfb27('0x5a')]['body']=_0x5f2f59[_0xfb27('0x5a')][0x0]['message']['text'];break;case'intelepeer':_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x7f')]=_0x5f2f59[_0xfb27('0x5a')][_0xfb27('0x7f')];_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x5a')]=_0x5f2f59[_0xfb27('0x5a')][_0xfb27('0x26')];_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x82')]=_0x5f2f59[_0xfb27('0x5a')][_0xfb27('0x91')];break;}}if(_0x1b5537[_0xfb27('0x5a')]['id']){delete _0x1b5537[_0xfb27('0x5a')]['id'];}if(_[_0xfb27('0x92')](_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x7f')])){throw new db[(_0xfb27('0x77'))][(_0xfb27('0x78'))]('from\x20is\x20mandatory');}if(_[_0xfb27('0x92')](_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x5a')])||_0x1b5537['body']['body']===''){throw new db[(_0xfb27('0x77'))][(_0xfb27('0x78'))](_0xfb27('0x93'));}if(_[_0xfb27('0x92')](_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x94')])){throw new db[(_0xfb27('0x77'))][(_0xfb27('0x78'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x3440a0);}if(!_[_0xfb27('0x95')](_0x3440a0,_0x1b5537[_0xfb27('0x5a')]['mapKey'])){throw new db[(_0xfb27('0x77'))][(_0xfb27('0x78'))](_0xfb27('0x96')+_0x3440a0);}_0x3d9646[_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x94')]]=_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x7f')];return db[_0xfb27('0x97')]['find']({'where':{'id':_0x1b5537[_0xfb27('0x75')][_0xfb27('0x98')]},'include':[{'model':db[_0xfb27('0x76')],'as':'Contacts','where':_0x3d9646,'limit':0x1,'order':[['updatedAt',_0xfb27('0x99')]]}]});})[_0xfb27('0x1f')](handleEntityNotFound(_0x1fc500,null))[_0xfb27('0x1f')](function(_0x52f952){if(_0x52f952){_0x1b5537[_0xfb27('0x9a')]=_[_0xfb27('0x9b')](_0x52f952,[_0xfb27('0x9c')]);if(_0x52f952['Contacts'][_0xfb27('0x45')]){return _0x52f952['Contacts'][0x0];}var _0x3b4a1d=_['defaults'](_0x1b5537[_0xfb27('0x5a')],{'firstName':_0x1b5537['body'][_0xfb27('0x7f')],'ListId':_0x52f952['id']});_0x3b4a1d[_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x94')]]=_0x1b5537[_0xfb27('0x5a')]['from'];return db[_0xfb27('0x76')][_0xfb27('0x59')](_0x3b4a1d,{'fields':_0x16f1d5,'raw':!![]});}})['then'](handleEntityNotFound(_0x1fc500,null))[_0xfb27('0x1f')](function(_0x2b6750){if(_0x2b6750){_0x1b5537[_0xfb27('0x9d')]=_0x2b6750;var _0x5612b4={'ContactId':_0x2b6750['id'],'phone':_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x7f')],'SmsAccountId':_0x5f2f59['params']['id']};var _0x48fa70={'ContactId':_0x2b6750['id'],'SmsAccountId':_0x5f2f59[_0xfb27('0x55')]['id'],'closed':![]};return db[_0xfb27('0x9e')][_0xfb27('0x58')]({'where':_0x48fa70})[_0xfb27('0x1f')](function(_0x3c9a7b){if(_0x3c9a7b){return[_0x3c9a7b,![]];}return db[_0xfb27('0x9e')][_0xfb27('0x59')](_0x5612b4)[_0xfb27('0x1f')](function(_0x4b0b3b){return[_0x4b0b3b,!![]];});});}})[_0xfb27('0x9f')](function(_0x411a5c,_0x49eb36){_0x1b5537[_0xfb27('0xa0')]=_0x411a5c['get']({'plain':!![]});_0x1b5537[_0xfb27('0xa0')]['created']=![];if(_0x49eb36){if(_0x1b5537[_0xfb27('0x75')][_0xfb27('0xa1')]){_0x1b5537[_0xfb27('0x71')]['push']({'id':0x0,'priority':_0x1b5537['applications']['length']+0x1,'app':'close','appdata':_0xfb27('0xa2'),'interval':_0xfb27('0xa3')});}_0x1b5537['interaction']['created']=!![];}return db[_0xfb27('0xa4')][_0xfb27('0x59')]({'phone':_0x1b5537['body']['from'],'messageId':_0x1b5537['body'][_0xfb27('0x82')],'body':_0x1b5537[_0xfb27('0x5a')][_0xfb27('0x5a')],'SmsAccountId':_0x5f2f59[_0xfb27('0x55')]['id'],'SmsInteractionId':_0x411a5c['id'],'direction':'in','ContactId':_0x411a5c['ContactId'],'AttachmentId':_0x1b5537[_0xfb27('0x5a')][_0xfb27('0xa5')]});})[_0xfb27('0x1f')](function(_0x3b2db5){_0x1b5537[_0xfb27('0x26')]=_0x3b2db5;if(_0x1b5537[_0xfb27('0xa0')][_0xfb27('0xa6')]){return db[_0xfb27('0xa7')][_0xfb27('0x58')]({'attributes':['id','name'],'where':{'id':_0x1b5537[_0xfb27('0xa0')][_0xfb27('0xa6')]}})[_0xfb27('0x1f')](function(_0x6b9d87){if(_0x6b9d87){_0x1b5537[_0xfb27('0x71')][_0xfb27('0xa8')]({'id':0x0,'priority':0x0,'app':_0xfb27('0xa9'),'appdata':_0x6b9d87[_0xfb27('0x39')]+','+(_0x1b5537[_0xfb27('0x75')][_0xfb27('0xaa')]||0xa),'interval':_0xfb27('0xa3')});}return respondWithRpcPromise(_0xfb27('0xab'),_0xfb27('0xac'),_0x1b5537);});}return respondWithRpcPromise('Start',_0xfb27('0xac'),_0x1b5537);})[_0xfb27('0x1f')](function(_0x49b965){if(_0x49b965){var _0x395462=0xc8;var _0x573b76=_0xfb27('0xad');logger[_0xfb27('0x27')](_0xfb27('0xae'),_0x573b76,_0x395462,'entity\x20found');logger[_0xfb27('0x21')](_0xfb27('0xaf'),_0x573b76,_0x395462,_0xfb27('0xb0'),JSON[_0xfb27('0x22')](_0x49b965));if(_0x1b5537[_0xfb27('0x75')][_0xfb27('0x4d')]===_0xfb27('0x7e')){return _0x1fc500[_0xfb27('0x2a')](_0x395462)[_0xfb27('0xb1')](_0xfb27('0xb2'),_0xfb27('0xb3'))[_0xfb27('0x3a')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x1fc500[_0xfb27('0x2a')](_0x395462)[_0xfb27('0x2c')](_0x49b965);}}})[_0xfb27('0x28')](handleError(_0x1fc500,null));};exports[_0xfb27('0xb4')]=function(_0x5bcdce,_0x490373,_0x3450e9){return db[_0xfb27('0x50')][_0xfb27('0x63')]({'where':{'id':_0x5bcdce['params']['id']}})[_0xfb27('0x1f')](handleEntityNotFound(_0x490373,null))[_0xfb27('0x1f')](function(_0x3ab895){if(_0x3ab895){return db[_0xfb27('0xb5')][_0xfb27('0xb6')](function(_0x20e3c6){return db[_0xfb27('0x6f')]['destroy']({'where':{'SmsAccountId':_0x5bcdce[_0xfb27('0x55')]['id']},'transaction':_0x20e3c6})[_0xfb27('0x1f')](function(_0x327d80){var _0xe2a8c7=_[_0xfb27('0x67')](_0x5bcdce[_0xfb27('0x5a')],function(_0x4a5dbb){_0x4a5dbb[_0xfb27('0x66')]=_0x5bcdce[_0xfb27('0x55')]['id'];return _0x4a5dbb;});return db[_0xfb27('0x6f')][_0xfb27('0xb7')](_0xe2a8c7,{'transaction':_0x20e3c6});});})[_0xfb27('0x1f')](function(){return db[_0xfb27('0x6f')][_0xfb27('0xb8')]({'where':{'SmsAccountId':_0x5bcdce[_0xfb27('0x55')]['id']},'order':_0xfb27('0x73')});});}})[_0xfb27('0x1f')](respondWithResult(_0x490373,null))['catch'](handleError(_0x490373,null));};exports[_0xfb27('0xb9')]=function(_0x2caab2,_0x4f5322,_0x13cf29){var _0x5957e5={};var _0x3dea87={};var _0x3d9d9c;var _0x3e0f71;return db[_0xfb27('0x50')]['findOne']({'where':{'id':_0x2caab2[_0xfb27('0x55')]['id']}})[_0xfb27('0x1f')](handleEntityNotFound(_0x4f5322,null))[_0xfb27('0x1f')](function(_0x5c96ac){if(_0x5c96ac){_0x3d9d9c=_0x5c96ac;_0x3dea87['model']=_['keys'](db[_0xfb27('0x6f')][_0xfb27('0x3b')]);_0x3dea87[_0xfb27('0x3f')]=_[_0xfb27('0x3e')](_0x2caab2[_0xfb27('0x3f')]);_0x3dea87[_0xfb27('0x40')]=_['intersection'](_0x3dea87[_0xfb27('0x42')],_0x3dea87[_0xfb27('0x3f')]);_0x5957e5[_0xfb27('0x43')]=_['intersection'](_0x3dea87[_0xfb27('0x42')],qs[_0xfb27('0x44')](_0x2caab2[_0xfb27('0x3f')][_0xfb27('0x44')]));_0x5957e5[_0xfb27('0x43')]=_0x5957e5[_0xfb27('0x43')][_0xfb27('0x45')]?_0x5957e5[_0xfb27('0x43')]:_0x3dea87[_0xfb27('0x42')];_0x5957e5[_0xfb27('0x47')]=qs[_0xfb27('0x48')](_0x2caab2['query'][_0xfb27('0x48')]);_0x5957e5[_0xfb27('0x4b')]=qs[_0xfb27('0x40')](_[_0xfb27('0x49')](_0x2caab2[_0xfb27('0x3f')],_0x3dea87[_0xfb27('0x40')]));if(_0x2caab2[_0xfb27('0x3f')][_0xfb27('0x4a')]){_0x5957e5['where']=_[_0xfb27('0x4c')](_0x5957e5[_0xfb27('0x4b')],{'$or':_['map'](_0x5957e5[_0xfb27('0x43')],function(_0x40839f){var _0xdae827={};_0xdae827[_0x40839f]={'$like':'%'+_0x2caab2[_0xfb27('0x3f')][_0xfb27('0x4a')]+'%'};return _0xdae827;})});}_0x5957e5=_[_0xfb27('0x4c')]({},_0x5957e5,_0x2caab2['options']);return _0x3d9d9c[_0xfb27('0xb9')](_0x5957e5);}})[_0xfb27('0x1f')](function(_0x316e39){if(_0x316e39){_0x3e0f71=_0x316e39[_0xfb27('0x45')];if(!_0x2caab2[_0xfb27('0x3f')][_0xfb27('0x46')](_0xfb27('0x65'))){_0x5957e5[_0xfb27('0x2f')]=qs[_0xfb27('0x2f')](_0x2caab2[_0xfb27('0x3f')][_0xfb27('0x2f')]);_0x5957e5['offset']=qs['offset'](_0x2caab2[_0xfb27('0x3f')]['offset']);}return _0x3d9d9c[_0xfb27('0xb9')](_0x5957e5);}})[_0xfb27('0x1f')](function(_0x3abb31){if(_0x3abb31){return _0x3abb31?{'count':_0x3e0f71,'rows':_0x3abb31}:null;}})[_0xfb27('0x1f')](respondWithResult(_0x4f5322,null))[_0xfb27('0x28')](handleError(_0x4f5322,null));};exports[_0xfb27('0xba')]=function(_0xf58ff9,_0x1b5753,_0x45a99c){var _0x468dc6={'raw':![],'where':{}};var _0x3e85d={};var _0x164138={'count':0x0,'rows':[]};return db['SmsAccount'][_0xfb27('0x63')]({'where':{'id':_0xf58ff9[_0xfb27('0x55')]['id']}})['then'](handleEntityNotFound(_0x1b5753,null))[_0xfb27('0x1f')](function(_0x4b8354){if(_0x4b8354){_0x3e85d[_0xfb27('0x42')]=_[_0xfb27('0x3e')](db[_0xfb27('0x9e')][_0xfb27('0x3b')]);_0x3e85d[_0xfb27('0x3f')]=_['keys'](_0xf58ff9['query']);_0x3e85d[_0xfb27('0x40')]=_[_0xfb27('0x41')](_0x3e85d[_0xfb27('0x42')],_0x3e85d[_0xfb27('0x3f')]);_0x468dc6[_0xfb27('0x43')]=_[_0xfb27('0x41')](_0x3e85d[_0xfb27('0x42')],qs[_0xfb27('0x44')](_0xf58ff9['query'][_0xfb27('0x44')]));_0x468dc6['attributes']=_0x468dc6[_0xfb27('0x43')][_0xfb27('0x45')]?_0x468dc6['attributes']:_0x3e85d[_0xfb27('0x42')];if(!_0xf58ff9[_0xfb27('0x3f')]['hasOwnProperty']('nolimit')){_0x468dc6[_0xfb27('0x2f')]=qs[_0xfb27('0x2f')](_0xf58ff9[_0xfb27('0x3f')]['limit']);_0x468dc6[_0xfb27('0x2d')]=qs[_0xfb27('0x2d')](_0xf58ff9[_0xfb27('0x3f')][_0xfb27('0x2d')]);}_0x468dc6['order']=qs[_0xfb27('0x48')](_0xf58ff9[_0xfb27('0x3f')]['sort']);_0x468dc6[_0xfb27('0x4b')]=qs['filters'](_[_0xfb27('0x49')](_0xf58ff9['query'],_0x3e85d[_0xfb27('0x40')]));_0x468dc6[_0xfb27('0x4b')]['SmsAccountId']=_0x4b8354['id'];if(_0xf58ff9['query'][_0xfb27('0x4a')]){_0x468dc6[_0xfb27('0x4b')]=_[_0xfb27('0x4c')](_0x468dc6[_0xfb27('0x4b')],{'$or':_[_0xfb27('0x67')](_0x468dc6['attributes'],function(_0x46402b){var _0x525655={};_0x525655[_0x46402b]={'$like':'%'+_0xf58ff9['query'][_0xfb27('0x4a')]+'%'};return _0x525655;})});}_0x468dc6=_[_0xfb27('0x4c')]({},_0x468dc6,_0xf58ff9[_0xfb27('0x4f')]);return db[_0xfb27('0x9e')][_0xfb27('0x30')]({'where':_0x468dc6[_0xfb27('0x4b')]})['then'](function(_0xaa477b){_0x164138[_0xfb27('0x30')]=_0xaa477b;if(_0xf58ff9[_0xfb27('0x3f')][_0xfb27('0x68')]){_0x468dc6['include']=[{'model':db['CmContact'],'as':_0xfb27('0xbb'),'required':![]},{'model':db['User'],'as':_0xfb27('0xbc'),'attributes':[_0xfb27('0x39'),_0xfb27('0xbd'),_0xfb27('0xbe')],'required':![]},{'model':db[_0xfb27('0xbf')],'as':_0xfb27('0xc0'),'attributes':['id','name','color'],'where':_0xf58ff9[_0xfb27('0x3f')][_0xfb27('0xc1')]?{'id':_0xf58ff9[_0xfb27('0x3f')][_0xfb27('0xc1')]}:undefined,'required':_0xf58ff9[_0xfb27('0x3f')][_0xfb27('0xc1')]?!![]:![]}];}return db[_0xfb27('0x9e')][_0xfb27('0x52')](_0x468dc6);})['then'](function(_0x1cf768){_0x164138[_0xfb27('0x53')]=_0x1cf768;return _0x164138;});}})[_0xfb27('0x1f')](respondWithFilteredResult(_0x1b5753,_0x468dc6))[_0xfb27('0x28')](handleError(_0x1b5753,null));};exports[_0xfb27('0x3a')]=function(_0x5395e9,_0xd38ab8,_0x586a05){var _0x196ccd,_0x5b0bb8,_0xd173c4;if(_[_0xfb27('0x92')](_0x5395e9[_0xfb27('0x5a')]['body'])||_0x5395e9[_0xfb27('0x5a')][_0xfb27('0x5a')]===''){throw new db[(_0xfb27('0x77'))][(_0xfb27('0x78'))](_0xfb27('0x93'));}if(_[_0xfb27('0x92')](_0x5395e9[_0xfb27('0x5a')]['to'])){throw new db[(_0xfb27('0x77'))][(_0xfb27('0x78'))]('to\x20is\x20mandatory');}_0x196ccd=_0x5395e9[_0xfb27('0x5a')]['to'];return db[_0xfb27('0x50')][_0xfb27('0x58')]({'where':{'id':_0x5395e9[_0xfb27('0x55')]['id']},'include':[{'model':db[_0xfb27('0x97')],'as':_0xfb27('0xc2'),'include':[{'model':db[_0xfb27('0x76')],'as':_0xfb27('0x9c'),'where':{'mobile':_0x196ccd},'limit':0x1,'order':[['updatedAt',_0xfb27('0x99')]]}]}]})[_0xfb27('0x1f')](handleEntityNotFound(_0xd38ab8,null))[_0xfb27('0x1f')](function(_0x5d4e6d){if(_0x5d4e6d&&_0x5d4e6d[_0xfb27('0xc2')]){_0x5b0bb8=_0x5d4e6d[_0xfb27('0x35')]({'plain':!![]});if(_0x5b0bb8['List']&&_0x5b0bb8['List'][_0xfb27('0x9c')][_0xfb27('0x45')]){return _0x5b0bb8[_0xfb27('0xc2')]['Contacts'][0x0];}return db[_0xfb27('0x76')]['create'](_[_0xfb27('0xc3')](_0x5395e9['body'],{'firstName':_0x196ccd,'mobile':_0x196ccd,'phone':_0x196ccd,'ListId':_0x5b0bb8[_0xfb27('0x98')]}));}})[_0xfb27('0x1f')](handleEntityNotFound(_0xd38ab8,null))[_0xfb27('0x1f')](function(_0x29aaa4){if(_0x29aaa4){_0xd173c4=_0x29aaa4;return db[_0xfb27('0x9e')][_0xfb27('0x58')]({'where':{'ContactId':_0xd173c4['id'],'closed':![],'SmsAccountId':_0x5b0bb8['id']}})['then'](function(_0x321c2f){if(_0x321c2f){return[_0x321c2f,![]];}return db[_0xfb27('0x9e')][_0xfb27('0x59')]({'UserId':_0x5395e9[_0xfb27('0x5b')]['id'],'ContactId':_0xd173c4['id'],'SmsAccountId':_0x5b0bb8['id'],'phone':_0x196ccd,'firstMsgDirection':'out','Messages':[_[_0xfb27('0x4c')](_0x5395e9[_0xfb27('0x5a')],{'read':![],'body':_0x5395e9[_0xfb27('0x5a')][_0xfb27('0x5a')],'phone':_0x196ccd,'SmsAccountId':_0x5b0bb8['id'],'UserId':_0x5395e9[_0xfb27('0x5b')]['id'],'ContactId':_0xd173c4['id']})]},{'include':[{'model':db['SmsMessage'],'as':_0xfb27('0xc4')}]})[_0xfb27('0x1f')](function(_0x2edeaf){return[_0x2edeaf,!![]];});});}})[_0xfb27('0x9f')](function(_0x3823a1,_0x29ab48){if(_0x29ab48){return _0x3823a1;}return db[_0xfb27('0xa4')][_0xfb27('0x59')](_[_0xfb27('0x4c')](_0x5395e9[_0xfb27('0x5a')],{'read':![],'body':_0x5395e9[_0xfb27('0x5a')][_0xfb27('0x5a')],'phone':_0x196ccd,'SmsAccountId':_0x5b0bb8['id'],'SmsInteractionId':_0x3823a1['id'],'UserId':_0x5395e9[_0xfb27('0x5b')]['id'],'ContactId':_0xd173c4['id']}))[_0xfb27('0x1f')](function(_0x3ffe20){_0x3823a1[_0xfb27('0xc5')][_0xfb27('0xc4')]=[];_0x3823a1[_0xfb27('0xc5')][_0xfb27('0xc4')][_0xfb27('0xc6')](_0x3ffe20[_0xfb27('0xc5')]);return _0x3823a1;});})[_0xfb27('0x1f')](respondWithResult(_0xd38ab8,null))[_0xfb27('0x28')](handleError(_0xd38ab8,null));};exports[_0xfb27('0x2a')]=function(_0x36c6d8,_0x41d800,_0x180791){if(_0x36c6d8['body']['id']){delete _0x36c6d8['body']['id'];}var _0x5b7893,_0x550b77,_0x27aa02;return db[_0xfb27('0x50')][_0xfb27('0x58')]({'where':{'id':_0x36c6d8['params']['id']}})[_0xfb27('0x1f')](handleEntityNotFound(_0x41d800,null))['then'](function(_0x3192cb){if(_0x3192cb){_0x27aa02=_0x3192cb;logger[_0xfb27('0x21')](_0xfb27('0xae'),_0xfb27('0x2a'),'received\x20delivery\x20report\x20from',_0x3192cb[_0xfb27('0x4d')],util[_0xfb27('0xc7')](_0x36c6d8['body'],{'showHidden':![],'depth':null}));switch(_0x3192cb['type']){case _0xfb27('0x83'):if(_0x36c6d8['body']['skebby_dispatch_id']&&_0x36c6d8[_0xfb27('0x5a')]['status']){_0x550b77=_0x36c6d8[_0xfb27('0x5a')][_0xfb27('0x2a')];return db['SmsMessage'][_0xfb27('0x58')]({'where':{'messageId':_0x36c6d8['body'][_0xfb27('0xc8')]}});}break;case _0xfb27('0xc9'):if(_0x36c6d8[_0xfb27('0x5a')]['requestid']&&_0x36c6d8[_0xfb27('0x5a')][_0xfb27('0xca')]){_0x550b77=_0x36c6d8[_0xfb27('0x5a')]['statusInt'];return db[_0xfb27('0xa4')][_0xfb27('0x58')]({'where':{'messageId':_0x36c6d8[_0xfb27('0x5a')][_0xfb27('0xcb')]}});}break;case _0xfb27('0x86'):if(_0x36c6d8[_0xfb27('0x5a')][_0xfb27('0x87')]&&_0x36c6d8[_0xfb27('0x5a')][_0xfb27('0xcc')]){_0x550b77=_0x36c6d8[_0xfb27('0x5a')]['status_code'];return db[_0xfb27('0xa4')][_0xfb27('0x58')]({'where':{'messageId':_0x36c6d8['body'][_0xfb27('0x87')]}});}break;case'infobip':var _0x99cd1d=_0x36c6d8[_0xfb27('0x5a')][_0xfb27('0x8b')][0x0];if(_0x99cd1d['messageId']&&_0x99cd1d[_0xfb27('0x2a')][_0xfb27('0xcd')]===_0xfb27('0xce')){_0x550b77=_0x99cd1d[_0xfb27('0x2a')][_0xfb27('0xcd')];return db[_0xfb27('0xa4')][_0xfb27('0x58')]({'where':{'messageId':_0x99cd1d[_0xfb27('0x82')]}});}break;case _0xfb27('0xcf'):if(_0x36c6d8[_0xfb27('0x5a')][_0xfb27('0x82')]&&_0x36c6d8['body'][_0xfb27('0x2a')]){_0x550b77=_0x36c6d8['body'][_0xfb27('0x2a')];return db[_0xfb27('0xa4')][_0xfb27('0x58')]({'where':{'messageId':_0x36c6d8[_0xfb27('0x5a')][_0xfb27('0x82')]}});}break;case _0xfb27('0x90'):if(_0x36c6d8['body'][0x0][_0xfb27('0x26')]['id']){_0x550b77=_0x36c6d8[_0xfb27('0x5a')][0x0][_0xfb27('0x4d')];return db[_0xfb27('0xa4')]['find']({'where':{'messageId':_0x36c6d8[_0xfb27('0x5a')][0x0][_0xfb27('0x26')]['id']}});}break;case _0xfb27('0xd0'):if(_0x36c6d8[_0xfb27('0x5a')][_0xfb27('0xd1')]&&_0x36c6d8[_0xfb27('0x5a')]['status']){_0x550b77=_0x36c6d8[_0xfb27('0x5a')][_0xfb27('0x2a')];return db[_0xfb27('0xa4')][_0xfb27('0x58')]({'where':{'messageId':_0x36c6d8[_0xfb27('0x5a')][_0xfb27('0xd1')]}});}break;}}})[_0xfb27('0x1f')](handleEntityNotFound(_0x41d800,null))[_0xfb27('0x1f')](function(_0x11c8e7){if(_0x11c8e7){_0x5b7893=_0x11c8e7;switch(_0x27aa02[_0xfb27('0x4d')]){case _0xfb27('0x83'):if(_0x550b77===_0xfb27('0xce')){return _0x5b7893[_0xfb27('0x34')]({'read':!![]});}else{logger[_0xfb27('0x23')](_0xfb27('0xae'),_0xfb27('0x2a'),'skebby',util[_0xfb27('0xc7')](_0x36c6d8[_0xfb27('0x5a')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x550b77==='1'){return _0x5b7893['update']({'read':!![]});}else{logger[_0xfb27('0x23')](_0xfb27('0xae'),'status',_0xfb27('0x83'),util[_0xfb27('0xc7')](_0x36c6d8['body'],{'showHidden':![],'depth':null}));}break;case _0xfb27('0x86'):if(!_0x36c6d8[_0xfb27('0x5a')][_0xfb27('0xd2')]&&_0x550b77>=0xc8&&_0x550b77<=0xce){return _0x5b7893[_0xfb27('0x34')]({'read':!![]});}else{logger['error'](_0xfb27('0xae'),_0xfb27('0x2a'),_0xfb27('0x86'),util[_0xfb27('0xc7')](_0x36c6d8[_0xfb27('0x5a')],{'showHidden':![],'depth':null}));}break;case _0xfb27('0x8a'):var _0x234e8a=_0x36c6d8['body'][_0xfb27('0x8b')][0x0];if(_0x234e8a[_0xfb27('0x2a')]['groupName']===_0xfb27('0xce')){return _0x5b7893[_0xfb27('0x34')]({'read':!![]});}else{logger[_0xfb27('0x23')](_0xfb27('0xae'),_0xfb27('0x2a'),_0xfb27('0x8a'),util[_0xfb27('0xc7')](_0x36c6d8[_0xfb27('0x5a')],{'showHidden':![],'depth':null}));}break;case _0xfb27('0xcf'):if(_0x550b77==_0xfb27('0xd3')||_0x550b77=='RECEIVED_BY_RECIPIENT'){return _0x5b7893[_0xfb27('0x34')]({'read':!![]});}else{logger[_0xfb27('0x23')](_0xfb27('0xae'),'status',_0xfb27('0xcf'),util[_0xfb27('0xc7')](_0x36c6d8[_0xfb27('0x5a')],{'showHidden':![],'depth':null}));}break;case _0xfb27('0x90'):if(_0x550b77==_0xfb27('0xd4')){return _0x5b7893[_0xfb27('0x34')]({'read':!![]});}else{logger['error'](_0xfb27('0xae'),_0xfb27('0x2a'),_0xfb27('0x90'),util[_0xfb27('0xc7')](_0x36c6d8['body'],{'showHidden':![],'depth':null}));}break;case _0xfb27('0xd0'):if(_0x550b77===_0xfb27('0xd5')||_0x550b77===_0xfb27('0xd6')){return _0x5b7893[_0xfb27('0x34')]({'read':!![]});}else{logger[_0xfb27('0x23')](_0xfb27('0xae'),_0xfb27('0x2a'),_0xfb27('0xd0'),util[_0xfb27('0xc7')](_0x36c6d8[_0xfb27('0x5a')],{'showHidden':![],'depth':null}));}break;}return _0x5b7893;}})[_0xfb27('0x1f')](respondWithResult(_0x41d800,null))[_0xfb27('0x28')](handleError(_0x41d800,null));};exports['statusGet']=function(_0x17ed6b,_0x5af54b,_0x57181f){var _0x112cef,_0x63d050,_0x570f07;return db['SmsAccount']['find']({'where':{'id':_0x17ed6b[_0xfb27('0x55')]['id']}})['then'](handleEntityNotFound(_0x5af54b,null))['then'](function(_0x35ecf3){if(_0x35ecf3){_0x570f07=_0x35ecf3;logger[_0xfb27('0x21')](_0xfb27('0xae'),_0xfb27('0x2a'),'received\x20delivery\x20report\x20from',_0x35ecf3['type'],util[_0xfb27('0xc7')](_0x17ed6b[_0xfb27('0x3f')],{'showHidden':![],'depth':null}));switch(_0x35ecf3[_0xfb27('0x4d')]){case'csc':if(_0x17ed6b[_0xfb27('0x3f')][_0xfb27('0xd7')]&&_0x17ed6b[_0xfb27('0x3f')][_0xfb27('0xd8')]){_0x63d050=_0x17ed6b[_0xfb27('0x3f')]['state'];return db[_0xfb27('0xa4')][_0xfb27('0x58')]({'where':{'messageId':_0x17ed6b[_0xfb27('0x3f')][_0xfb27('0xd7')]}});}break;}}})['then'](handleEntityNotFound(_0x5af54b,null))[_0xfb27('0x1f')](function(_0x2908c0){if(_0x2908c0){_0x112cef=_0x2908c0;switch(_0x570f07['type']){case _0xfb27('0xd9'):if(_0x63d050==='2'||_0x63d050==='6'){return _0x112cef[_0xfb27('0x34')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xfb27('0x2a'),_0xfb27('0xd9'),util['inspect'](_0x17ed6b[_0xfb27('0x3f')],{'showHidden':![],'depth':null}));};break;}return _0x112cef;}})[_0xfb27('0x1f')](respondWithResult(_0x5af54b,null))['catch'](handleError(_0x5af54b,null));};exports[_0xfb27('0xda')]=function(_0x4acf09,_0x91a805,_0x4475ef){return db[_0xfb27('0x50')][_0xfb27('0x58')]({'where':{'id':_0x4acf09[_0xfb27('0x55')]['id']}})[_0xfb27('0x1f')](handleEntityNotFound(_0x91a805,null))[_0xfb27('0x1f')](function(_0x572dad){if(_0x572dad){return _0x572dad[_0xfb27('0xda')](_0x4acf09[_0xfb27('0x5a')][_0xfb27('0x6d')],_[_0xfb27('0x9b')](_0x4acf09['body'],[_0xfb27('0x6d'),'id'])||{})[_0xfb27('0x9f')](function(_0xf124c6){for(var _0x38792a=0x0;_0x38792a<_0x4acf09[_0xfb27('0x5a')][_0xfb27('0x6d')][_0xfb27('0x45')];_0x38792a+=0x1){socket[_0xfb27('0xdb')]('userSmsAccount:save',{'UserId':Number(_0x4acf09[_0xfb27('0x5a')]['ids'][_0x38792a]),'SmsAccountId':Number(_0x4acf09[_0xfb27('0x55')]['id'])});}return _0xf124c6;});}})[_0xfb27('0x1f')](respondWithResult(_0x91a805,null))['catch'](handleError(_0x91a805,null));};exports[_0xfb27('0xdc')]=function(_0x5d44fe,_0x2cd953,_0x3e59c2){return db['SmsAccount'][_0xfb27('0x58')]({'where':{'id':_0x5d44fe[_0xfb27('0x55')]['id']}})[_0xfb27('0x1f')](handleEntityNotFound(_0x2cd953,null))['then'](function(_0x25bf93){if(_0x25bf93){return _0x25bf93[_0xfb27('0xdc')](_0x5d44fe['query'][_0xfb27('0x6d')])[_0xfb27('0x1f')](function(){if(_[_0xfb27('0xdd')](_0x5d44fe[_0xfb27('0x3f')][_0xfb27('0x6d')])){for(var _0xe0a773=0x0;_0xe0a773<_0x5d44fe['query'][_0xfb27('0x6d')][_0xfb27('0x45')];_0xe0a773+=0x1){socket['emit']('userSmsAccount:remove',{'UserId':Number(_0x5d44fe['query']['ids'][_0xe0a773]),'SmsAccountId':Number(_0x5d44fe[_0xfb27('0x55')]['id'])});}}else{socket['emit'](_0xfb27('0xde'),{'UserId':Number(_0x5d44fe['query'][_0xfb27('0x6d')]),'SmsAccountId':Number(_0x5d44fe['params']['id'])});}});}})['then'](respondWithStatusCode(_0x2cd953,null))[_0xfb27('0x28')](handleError(_0x2cd953,null));};exports[_0xfb27('0xdf')]=function(_0x981f1c,_0x1cefc7,_0x1f3781){var _0x509f0d={};var _0x5812b5={};var _0xa2e0df;var _0x114887;return db[_0xfb27('0x50')][_0xfb27('0x63')]({'where':{'id':_0x981f1c[_0xfb27('0x55')]['id']}})[_0xfb27('0x1f')](handleEntityNotFound(_0x1cefc7,null))[_0xfb27('0x1f')](function(_0x139f1e){if(_0x139f1e){_0xa2e0df=_0x139f1e;_0x5812b5[_0xfb27('0x42')]=_[_0xfb27('0x3e')](db[_0xfb27('0xa7')]['rawAttributes']);_0x5812b5[_0xfb27('0x3f')]=_[_0xfb27('0x3e')](_0x981f1c['query']);_0x5812b5[_0xfb27('0x40')]=_[_0xfb27('0x41')](_0x5812b5[_0xfb27('0x42')],_0x5812b5[_0xfb27('0x3f')]);_0x509f0d[_0xfb27('0x43')]=_['intersection'](_0x5812b5[_0xfb27('0x42')],qs[_0xfb27('0x44')](_0x981f1c[_0xfb27('0x3f')][_0xfb27('0x44')]));_0x509f0d[_0xfb27('0x43')]=_0x509f0d[_0xfb27('0x43')][_0xfb27('0x45')]?_0x509f0d[_0xfb27('0x43')]:_0x5812b5[_0xfb27('0x42')];_0x509f0d[_0xfb27('0x47')]=qs[_0xfb27('0x48')](_0x981f1c[_0xfb27('0x3f')]['sort']);_0x509f0d['where']=qs['filters'](_[_0xfb27('0x49')](_0x981f1c['query'],_0x5812b5[_0xfb27('0x40')]));if(_0x981f1c['query'][_0xfb27('0x4a')]){_0x509f0d[_0xfb27('0x4b')]=_[_0xfb27('0x4c')](_0x509f0d[_0xfb27('0x4b')],{'$or':_[_0xfb27('0x67')](_0x509f0d[_0xfb27('0x43')],function(_0x18cf01){var _0x3a7efc={};_0x3a7efc[_0x18cf01]={'$like':'%'+_0x981f1c[_0xfb27('0x3f')]['filter']+'%'};return _0x3a7efc;})});}_0x509f0d=_['merge']({},_0x509f0d,_0x981f1c[_0xfb27('0x4f')]);return _0xa2e0df[_0xfb27('0xdf')](_0x509f0d);}})[_0xfb27('0x1f')](function(_0x35f6fd){if(_0x35f6fd){_0x114887=_0x35f6fd[_0xfb27('0x45')];if(!_0x981f1c[_0xfb27('0x3f')][_0xfb27('0x46')]('nolimit')){_0x509f0d[_0xfb27('0x2f')]=qs[_0xfb27('0x2f')](_0x981f1c['query'][_0xfb27('0x2f')]);_0x509f0d[_0xfb27('0x2d')]=qs[_0xfb27('0x2d')](_0x981f1c[_0xfb27('0x3f')][_0xfb27('0x2d')]);}return _0xa2e0df[_0xfb27('0xdf')](_0x509f0d);}})[_0xfb27('0x1f')](function(_0x46f614){if(_0x46f614){return _0x46f614?{'count':_0x114887,'rows':_0x46f614}:null;}})['then'](respondWithResult(_0x1cefc7,null))[_0xfb27('0x28')](handleError(_0x1cefc7,null));};
\ No newline at end of file
+var _0x535b=['SmsMessage','ContactId','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','twilio','Content-Type','text/xml','addApplications','sequelize','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','fullname','internal','Tag','Tags','color','tag','send','to\x20is\x20mandatory','CmList','List','DESC','user','out','Messages','dataValues','received\x20delivery\x20report\x20from','skebby','skebby_dispatch_id','requestid','status_code','groupName','redif','DELIVERED','inspect','DELIVERED_TO_GATEWAY','message-delivered','message-id','state','addAgents','userSmsAccount:save','removeAgents','emit','userSmsAccount:remove','getAgents','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','jsforce','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','then','info','SmsAccount,\x20%s,\x20%s','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','update','get','SmsAccounts','UserProfileResource','destroy','stack','name','index','Pause','map','SmsAccount','type','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','pick','where','merge','VIRTUAL','includeAll','include','rows','catch','show','mandatoryDispositionPause','rawAttributes','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','sort','filter','options','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findAll','removeAnswers','notify','sms','SmsApplication','Applications','account','applications','orderBy','priority','asc','CmContact','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','From','Body','messageId','MessageSid','from','sender','connectel','clicksend','message_id','plivo','Text','MessageUUID','infobip','results','text','csc','originatingAddress','clickatell','fromNumber','replyMessageId','bandwidth','intelepeer','refid','Sequelize','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','Contacts','list','omit','contact','SmsInteraction','spread','interaction','autoclose','push','close','unmanaged','*,*,*,*'];(function(_0x343d53,_0x494df3){var _0x879ce3=function(_0x3eba79){while(--_0x3eba79){_0x343d53['push'](_0x343d53['shift']());}};_0x879ce3(++_0x494df3);}(_0x535b,0x11a));var _0xb535=function(_0xe33900,_0x577284){_0xe33900=_0xe33900-0x0;var _0x4f7b3f=_0x535b[_0xe33900];return _0x4f7b3f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb535('0x0'));var zipdir=require(_0xb535('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb535('0x2'));var moment=require(_0xb535('0x3'));var BPromise=require(_0xb535('0x4'));var Mustache=require(_0xb535('0x5'));var util=require(_0xb535('0x6'));var path=require(_0xb535('0x7'));var sox=require('sox');var csv=require(_0xb535('0x8'));var ejs=require(_0xb535('0x9'));var fs=require('fs');var fs_extra=require(_0xb535('0xa'));var _=require('lodash');var squel=require(_0xb535('0xb'));var crypto=require('crypto');var jsforce=require(_0xb535('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xb535('0x8'));var querystring=require('querystring');var Papa=require(_0xb535('0xd'));var Redis=require(_0xb535('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xb535('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb535('0x10'))(_0xb535('0x11'));var utils=require(_0xb535('0x12'));var config=require(_0xb535('0x13'));var licenseUtil=require(_0xb535('0x14'));var db=require('../../mysqldb')['db'];config[_0xb535('0x15')]=_[_0xb535('0x16')](config['redis'],{'host':_0xb535('0x17'),'port':0x18eb});var socket=require(_0xb535('0x18'))(new Redis(config['redis']));require(_0xb535('0x19'))['register'](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232c});function respondWithRpcPromise(_0xb28ed4,_0x7fc78d,_0x4381fa,_0x4e26d2){return new BPromise(function(_0x3122af,_0x492257){var _0x2644ba=_0x4e26d2||client;return _0x2644ba['request'](_0xb28ed4,_0x4381fa)[_0xb535('0x1a')](function(_0x203cc1){logger[_0xb535('0x1b')](_0xb535('0x1c'),_0x7fc78d,'request\x20sent');logger[_0xb535('0x1d')](_0xb535('0x1e'),_0x7fc78d,'request\x20sent',JSON[_0xb535('0x1f')](_0x203cc1));if(_0x203cc1[_0xb535('0x20')]){if(_0x203cc1['error'][_0xb535('0x21')]===0x1f4){logger[_0xb535('0x20')](_0xb535('0x1c'),_0x7fc78d,_0x203cc1['error'][_0xb535('0x22')]);return _0x492257(_0x203cc1['error']['message']);}logger['error'](_0xb535('0x1c'),_0x7fc78d,_0x203cc1[_0xb535('0x20')][_0xb535('0x22')]);return _0x3122af(_0x203cc1['error']['message']);}else{logger[_0xb535('0x1b')](_0xb535('0x1c'),_0x7fc78d,_0xb535('0x23'));_0x3122af(_0x203cc1[_0xb535('0x24')][_0xb535('0x22')]);}})['catch'](function(_0x354a0a){logger[_0xb535('0x20')](_0xb535('0x1c'),_0x7fc78d,_0x354a0a);_0x492257(_0x354a0a);});});}function respondWithStatusCode(_0xfb6874,_0x53b4d7){_0x53b4d7=_0x53b4d7||0xcc;return function(_0x199009){if(_0x199009){return _0xfb6874[_0xb535('0x25')](_0x53b4d7);}return _0xfb6874[_0xb535('0x26')](_0x53b4d7)[_0xb535('0x27')]();};}function respondWithResult(_0x1dfa4e,_0x42f276){_0x42f276=_0x42f276||0xc8;return function(_0x443ce9){if(_0x443ce9){return _0x1dfa4e[_0xb535('0x26')](_0x42f276)['json'](_0x443ce9);}};}function respondWithFilteredResult(_0x5672ff,_0x56763b){return function(_0x5da264){if(_0x5da264){var _0x2980d4=typeof _0x56763b[_0xb535('0x28')]===_0xb535('0x29')&&typeof _0x56763b[_0xb535('0x2a')]===_0xb535('0x29');var _0x1b6a8f=_0x5da264['count'];var _0x1e71ea=_0x2980d4?0x0:_0x56763b['offset'];var _0x56fe33=_0x2980d4?_0x5da264[_0xb535('0x2b')]:_0x56763b[_0xb535('0x28')]+_0x56763b[_0xb535('0x2a')];var _0x4173b0;if(_0x56fe33>=_0x1b6a8f){_0x56fe33=_0x1b6a8f;_0x4173b0=0xc8;}else{_0x4173b0=0xce;}_0x5672ff['status'](_0x4173b0);return _0x5672ff['set'](_0xb535('0x2c'),_0x1e71ea+'-'+_0x56fe33+'/'+_0x1b6a8f)[_0xb535('0x2d')](_0x5da264);}return null;};}function patchUpdates(_0x5d8145){return function(_0x3f44b3){try{jsonpatch[_0xb535('0x2e')](_0x3f44b3,_0x5d8145,!![]);}catch(_0x2b3ccb){return BPromise[_0xb535('0x2f')](_0x2b3ccb);}return _0x3f44b3['save']();};}function saveUpdates(_0xcb2951,_0x167d9e){return function(_0x947d8c){if(_0x947d8c){return _0x947d8c[_0xb535('0x30')](_0xcb2951)[_0xb535('0x1a')](function(_0x1e5ab0){return _0x1e5ab0;});}return null;};}function removeEntity(_0x219f47,_0x4e38e5){return function(_0x342ab8){if(_0x342ab8){return _0x342ab8['destroy']()[_0xb535('0x1a')](function(){var _0x58c20d=_0x342ab8[_0xb535('0x31')]({'plain':!![]});var _0x49f3b8=_0xb535('0x32');return db[_0xb535('0x33')][_0xb535('0x34')]({'where':{'type':_0x49f3b8,'resourceId':_0x58c20d['id']}})[_0xb535('0x1a')](function(){return _0x342ab8;});})[_0xb535('0x1a')](function(){_0x219f47['status'](0xcc)[_0xb535('0x27')]();});}};}function handleEntityNotFound(_0x3b3eb1,_0x3e9f3f){return function(_0x3f4f08){if(!_0x3f4f08){_0x3b3eb1['sendStatus'](0x194);}return _0x3f4f08;};}function handleError(_0x2adfca,_0x46602f){_0x46602f=_0x46602f||0x1f4;return function(_0x2079bf){logger[_0xb535('0x20')](_0x2079bf[_0xb535('0x35')]);if(_0x2079bf[_0xb535('0x36')]){delete _0x2079bf[_0xb535('0x36')];}_0x2adfca[_0xb535('0x26')](_0x46602f)['send'](_0x2079bf);};}exports[_0xb535('0x37')]=function(_0x4d8a7e,_0x4b82bb){var _0x8d35d3={'include':[{'model':db[_0xb535('0x38')],'as':'mandatoryDispositionPause'}]},_0x24f1b2={},_0x4007e1={'count':0x0,'rows':[]};var _0x291444=_[_0xb535('0x39')](db[_0xb535('0x3a')]['rawAttributes'],function(_0x3c11fc){return{'name':_0x3c11fc['fieldName'],'type':_0x3c11fc[_0xb535('0x3b')]['key']};});_0x24f1b2['model']=_[_0xb535('0x39')](_0x291444,'name');_0x24f1b2[_0xb535('0x3c')]=_[_0xb535('0x3d')](_0x4d8a7e['query']);_0x24f1b2[_0xb535('0x3e')]=_[_0xb535('0x3f')](_0x24f1b2[_0xb535('0x40')],_0x24f1b2[_0xb535('0x3c')]);_0x8d35d3['attributes']=_[_0xb535('0x3f')](_0x24f1b2['model'],qs[_0xb535('0x41')](_0x4d8a7e['query'][_0xb535('0x41')]));_0x8d35d3['attributes']=_0x8d35d3[_0xb535('0x42')][_0xb535('0x43')]?_0x8d35d3['attributes']:_0x24f1b2[_0xb535('0x40')];if(!_0x4d8a7e[_0xb535('0x3c')][_0xb535('0x44')](_0xb535('0x45'))){_0x8d35d3[_0xb535('0x2a')]=qs[_0xb535('0x2a')](_0x4d8a7e['query'][_0xb535('0x2a')]);_0x8d35d3[_0xb535('0x28')]=qs['offset'](_0x4d8a7e[_0xb535('0x3c')][_0xb535('0x28')]);}_0x8d35d3[_0xb535('0x46')]=qs['sort'](_0x4d8a7e[_0xb535('0x3c')]['sort']);_0x8d35d3['where']=qs['filters'](_[_0xb535('0x47')](_0x4d8a7e[_0xb535('0x3c')],_0x24f1b2[_0xb535('0x3e')]),_0x291444);if(_0x4d8a7e[_0xb535('0x3c')]['filter']){_0x8d35d3[_0xb535('0x48')]=_[_0xb535('0x49')](_0x8d35d3[_0xb535('0x48')],{'$or':_[_0xb535('0x39')](_0x291444,function(_0x179d04){if(_0x179d04[_0xb535('0x3b')]!==_0xb535('0x4a')){var _0x29c5e6={};_0x29c5e6[_0x179d04[_0xb535('0x36')]]={'$like':'%'+_0x4d8a7e['query']['filter']+'%'};return _0x29c5e6;}})});}_0x8d35d3=_[_0xb535('0x49')]({},_0x8d35d3,_0x4d8a7e['options']);var _0x140e1b={'where':_0x8d35d3['where']};return db[_0xb535('0x3a')]['count'](_0x140e1b)['then'](function(_0x5e2283){_0x4007e1[_0xb535('0x2b')]=_0x5e2283;if(_0x4d8a7e[_0xb535('0x3c')][_0xb535('0x4b')]){_0x8d35d3[_0xb535('0x4c')]=[{'all':!![]}];}return db[_0xb535('0x3a')]['findAll'](_0x8d35d3);})['then'](function(_0x5cd3d1){_0x4007e1[_0xb535('0x4d')]=_0x5cd3d1;return _0x4007e1;})['then'](respondWithFilteredResult(_0x4b82bb,_0x8d35d3))[_0xb535('0x4e')](handleError(_0x4b82bb,null));};exports[_0xb535('0x4f')]=function(_0x4d98f5,_0x4a6b2d){var _0x35b460={'raw':![],'where':{'id':_0x4d98f5['params']['id']},'include':[{'model':db[_0xb535('0x38')],'as':_0xb535('0x50')}]},_0x156e33={};_0x156e33[_0xb535('0x40')]=_[_0xb535('0x3d')](db['SmsAccount'][_0xb535('0x51')]);_0x156e33['query']=_[_0xb535('0x3d')](_0x4d98f5['query']);_0x156e33['filters']=_['intersection'](_0x156e33[_0xb535('0x40')],_0x156e33[_0xb535('0x3c')]);_0x35b460[_0xb535('0x42')]=_[_0xb535('0x3f')](_0x156e33[_0xb535('0x40')],qs[_0xb535('0x41')](_0x4d98f5[_0xb535('0x3c')][_0xb535('0x41')]));_0x35b460[_0xb535('0x42')]=_0x35b460[_0xb535('0x42')][_0xb535('0x43')]?_0x35b460[_0xb535('0x42')]:_0x156e33[_0xb535('0x40')];if(_0x4d98f5[_0xb535('0x3c')][_0xb535('0x4b')]){_0x35b460[_0xb535('0x4c')]=[{'all':!![]}];}_0x35b460=_[_0xb535('0x49')]({},_0x35b460,_0x4d98f5['options']);return db[_0xb535('0x3a')][_0xb535('0x52')](_0x35b460)['then'](handleEntityNotFound(_0x4a6b2d,null))[_0xb535('0x1a')](respondWithResult(_0x4a6b2d,null))['catch'](handleError(_0x4a6b2d,null));};exports[_0xb535('0x53')]=function(_0x824602,_0x49213d){return db[_0xb535('0x3a')][_0xb535('0x53')](_0x824602[_0xb535('0x54')],{})[_0xb535('0x1a')](function(_0x995eb3){var _0x65cfaa=_0x824602['user']['get']({'plain':!![]});if(!_0x65cfaa)throw new Error(_0xb535('0x55'));if(_0x65cfaa[_0xb535('0x56')]==='user'){var _0x4d65fc=_0x995eb3['get']({'plain':!![]});var _0x55aa16='SmsAccounts';return db[_0xb535('0x57')][_0xb535('0x52')]({'where':{'name':_0x55aa16,'userProfileId':_0x65cfaa[_0xb535('0x58')]},'raw':!![]})[_0xb535('0x1a')](function(_0x19d514){if(_0x19d514&&_0x19d514[_0xb535('0x59')]===0x0){return db[_0xb535('0x33')][_0xb535('0x53')]({'name':_0x4d65fc[_0xb535('0x36')],'resourceId':_0x4d65fc['id'],'type':_0x19d514[_0xb535('0x36')],'sectionId':_0x19d514['id']},{})[_0xb535('0x1a')](function(){return _0x995eb3;});}else{return _0x995eb3;}})['catch'](function(_0x307170){logger[_0xb535('0x20')](_0xb535('0x5a'),_0x307170);throw _0x307170;});}return _0x995eb3;})[_0xb535('0x1a')](respondWithResult(_0x49213d,0xc9))['catch'](handleError(_0x49213d,null));};exports[_0xb535('0x30')]=function(_0x1f6b27,_0x480029){if(_0x1f6b27[_0xb535('0x54')]['id']){delete _0x1f6b27[_0xb535('0x54')]['id'];}return db[_0xb535('0x3a')][_0xb535('0x52')]({'where':{'id':_0x1f6b27[_0xb535('0x5b')]['id']},'include':[{'model':db[_0xb535('0x38')],'as':_0xb535('0x50')}]})['then'](handleEntityNotFound(_0x480029,null))[_0xb535('0x1a')](saveUpdates(_0x1f6b27[_0xb535('0x54')],null))[_0xb535('0x1a')](respondWithResult(_0x480029,null))[_0xb535('0x4e')](handleError(_0x480029,null));};exports[_0xb535('0x34')]=function(_0x2a77c4,_0x15a541){return db['SmsAccount'][_0xb535('0x52')]({'where':{'id':_0x2a77c4[_0xb535('0x5b')]['id']}})[_0xb535('0x1a')](handleEntityNotFound(_0x15a541,null))[_0xb535('0x1a')](removeEntity(_0x15a541,null))[_0xb535('0x4e')](handleError(_0x15a541,null));};exports[_0xb535('0x5c')]=function(_0x2fbe5d,_0x39d62e){return db['SmsAccount'][_0xb535('0x5c')]()[_0xb535('0x1a')](respondWithResult(_0x39d62e,null))[_0xb535('0x4e')](handleError(_0x39d62e,null));};exports[_0xb535('0x5d')]=function(_0x529dcf,_0x3f808c,_0x480807){if(_0x529dcf[_0xb535('0x54')]['id']){delete _0x529dcf[_0xb535('0x54')]['id'];}return db[_0xb535('0x3a')][_0xb535('0x52')]({'where':{'id':_0x529dcf['params']['id']}})[_0xb535('0x1a')](handleEntityNotFound(_0x3f808c,null))[_0xb535('0x1a')](function(_0xa7065){if(_0xa7065){_0x529dcf[_0xb535('0x54')][_0xb535('0x5e')]=_0xa7065['id'];return db[_0xb535('0x5f')][_0xb535('0x53')](_0x529dcf[_0xb535('0x54')]);}})[_0xb535('0x1a')](respondWithResult(_0x3f808c,null))[_0xb535('0x4e')](handleError(_0x3f808c,null));};exports[_0xb535('0x60')]=function(_0x3b4d3d,_0x3c48a4,_0x577417){var _0x1985e2={'raw':![],'where':{}};var _0x52146a={};var _0x282ecd={'count':0x0,'rows':[]};return db['SmsAccount'][_0xb535('0x61')]({'where':{'id':_0x3b4d3d[_0xb535('0x5b')]['id']}})[_0xb535('0x1a')](handleEntityNotFound(_0x3c48a4,null))['then'](function(_0x1c3798){if(_0x1c3798){_0x52146a['model']=_['keys'](db[_0xb535('0x5f')][_0xb535('0x51')]);_0x52146a[_0xb535('0x3c')]=_[_0xb535('0x3d')](_0x3b4d3d[_0xb535('0x3c')]);_0x52146a[_0xb535('0x3e')]=_[_0xb535('0x3f')](_0x52146a[_0xb535('0x40')],_0x52146a[_0xb535('0x3c')]);_0x1985e2[_0xb535('0x42')]=_[_0xb535('0x3f')](_0x52146a[_0xb535('0x40')],qs['fields'](_0x3b4d3d[_0xb535('0x3c')]['fields']));_0x1985e2[_0xb535('0x42')]=_0x1985e2[_0xb535('0x42')][_0xb535('0x43')]?_0x1985e2['attributes']:_0x52146a['model'];if(!_0x3b4d3d[_0xb535('0x3c')][_0xb535('0x44')](_0xb535('0x45'))){_0x1985e2['limit']=qs[_0xb535('0x2a')](_0x3b4d3d[_0xb535('0x3c')][_0xb535('0x2a')]);_0x1985e2['offset']=qs[_0xb535('0x28')](_0x3b4d3d['query']['offset']);}_0x1985e2['order']=qs[_0xb535('0x62')](_0x3b4d3d[_0xb535('0x3c')][_0xb535('0x62')]);_0x1985e2[_0xb535('0x48')]=qs[_0xb535('0x3e')](_[_0xb535('0x47')](_0x3b4d3d[_0xb535('0x3c')],_0x52146a['filters']));_0x1985e2[_0xb535('0x48')][_0xb535('0x5e')]=_0x1c3798['id'];if(_0x3b4d3d[_0xb535('0x3c')][_0xb535('0x63')]){_0x1985e2['where']=_['merge'](_0x1985e2['where'],{'$or':_[_0xb535('0x39')](_0x1985e2[_0xb535('0x42')],function(_0x205b1a){var _0x4112ff={};_0x4112ff[_0x205b1a]={'$like':'%'+_0x3b4d3d[_0xb535('0x3c')]['filter']+'%'};return _0x4112ff;})});}_0x1985e2=_[_0xb535('0x49')]({},_0x1985e2,_0x3b4d3d[_0xb535('0x64')]);return db[_0xb535('0x5f')]['count']({'where':_0x1985e2['where']})[_0xb535('0x1a')](function(_0x45e817){_0x282ecd[_0xb535('0x2b')]=_0x45e817;if(_0x3b4d3d[_0xb535('0x3c')][_0xb535('0x4b')]){_0x1985e2[_0xb535('0x4c')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x1985e2);})[_0xb535('0x1a')](function(_0x5c63db){_0x282ecd[_0xb535('0x4d')]=_0x5c63db;return _0x282ecd;});}})[_0xb535('0x1a')](respondWithFilteredResult(_0x3c48a4,_0x1985e2))[_0xb535('0x4e')](handleError(_0x3c48a4,null));};exports['removeDispositions']=function(_0x17f82c,_0x7a324d,_0x4530e6){return db[_0xb535('0x3a')][_0xb535('0x52')]({'where':{'id':_0x17f82c['params']['id']}})[_0xb535('0x1a')](handleEntityNotFound(_0x7a324d,null))[_0xb535('0x1a')](function(_0x6e1d11){if(_0x6e1d11){return _0x6e1d11[_0xb535('0x65')](_0x17f82c['query'][_0xb535('0x66')]);}})['then'](respondWithStatusCode(_0x7a324d,null))[_0xb535('0x4e')](handleError(_0x7a324d,null));};exports[_0xb535('0x67')]=function(_0x5d8970,_0xa66ca4,_0x594776){if(_0x5d8970[_0xb535('0x54')]['id']){delete _0x5d8970[_0xb535('0x54')]['id'];}return db[_0xb535('0x3a')][_0xb535('0x52')]({'where':{'id':_0x5d8970[_0xb535('0x5b')]['id']}})[_0xb535('0x1a')](handleEntityNotFound(_0xa66ca4,null))['then'](function(_0x488c74){if(_0x488c74){_0x5d8970[_0xb535('0x54')]['SmsAccountId']=_0x488c74['id'];return db[_0xb535('0x68')][_0xb535('0x53')](_0x5d8970['body']);}})['then'](respondWithResult(_0xa66ca4,null))[_0xb535('0x4e')](handleError(_0xa66ca4,null));};exports[_0xb535('0x69')]=function(_0x56beca,_0x38d8e1,_0x5c836f){var _0x3a2eb3={'raw':![],'where':{}};var _0x39ba82={};var _0x356714={'count':0x0,'rows':[]};return db[_0xb535('0x3a')][_0xb535('0x61')]({'where':{'id':_0x56beca[_0xb535('0x5b')]['id']}})[_0xb535('0x1a')](handleEntityNotFound(_0x38d8e1,null))['then'](function(_0x1d226b){if(_0x1d226b){_0x39ba82[_0xb535('0x40')]=_['keys'](db[_0xb535('0x68')][_0xb535('0x51')]);_0x39ba82[_0xb535('0x3c')]=_[_0xb535('0x3d')](_0x56beca[_0xb535('0x3c')]);_0x39ba82[_0xb535('0x3e')]=_[_0xb535('0x3f')](_0x39ba82[_0xb535('0x40')],_0x39ba82[_0xb535('0x3c')]);_0x3a2eb3[_0xb535('0x42')]=_[_0xb535('0x3f')](_0x39ba82[_0xb535('0x40')],qs[_0xb535('0x41')](_0x56beca[_0xb535('0x3c')][_0xb535('0x41')]));_0x3a2eb3[_0xb535('0x42')]=_0x3a2eb3[_0xb535('0x42')][_0xb535('0x43')]?_0x3a2eb3[_0xb535('0x42')]:_0x39ba82[_0xb535('0x40')];if(!_0x56beca['query']['hasOwnProperty'](_0xb535('0x45'))){_0x3a2eb3[_0xb535('0x2a')]=qs[_0xb535('0x2a')](_0x56beca['query']['limit']);_0x3a2eb3['offset']=qs['offset'](_0x56beca['query']['offset']);}_0x3a2eb3[_0xb535('0x46')]=qs['sort'](_0x56beca[_0xb535('0x3c')][_0xb535('0x62')]);_0x3a2eb3[_0xb535('0x48')]=qs[_0xb535('0x3e')](_[_0xb535('0x47')](_0x56beca[_0xb535('0x3c')],_0x39ba82[_0xb535('0x3e')]));_0x3a2eb3[_0xb535('0x48')][_0xb535('0x5e')]=_0x1d226b['id'];if(_0x56beca[_0xb535('0x3c')][_0xb535('0x63')]){_0x3a2eb3[_0xb535('0x48')]=_[_0xb535('0x49')](_0x3a2eb3[_0xb535('0x48')],{'$or':_[_0xb535('0x39')](_0x3a2eb3['attributes'],function(_0x3eb91a){var _0x4cfd28={};_0x4cfd28[_0x3eb91a]={'$like':'%'+_0x56beca[_0xb535('0x3c')]['filter']+'%'};return _0x4cfd28;})});}_0x3a2eb3=_[_0xb535('0x49')]({},_0x3a2eb3,_0x56beca[_0xb535('0x64')]);return db[_0xb535('0x68')]['count']({'where':_0x3a2eb3['where']})['then'](function(_0x1c7aa7){_0x356714['count']=_0x1c7aa7;if(_0x56beca['query'][_0xb535('0x4b')]){_0x3a2eb3[_0xb535('0x4c')]=[{'all':!![]}];}return db[_0xb535('0x68')][_0xb535('0x6a')](_0x3a2eb3);})['then'](function(_0xee5829){_0x356714[_0xb535('0x4d')]=_0xee5829;return _0x356714;});}})[_0xb535('0x1a')](respondWithFilteredResult(_0x38d8e1,_0x3a2eb3))[_0xb535('0x4e')](handleError(_0x38d8e1,null));};exports[_0xb535('0x6b')]=function(_0x3c5e73,_0x372a2a,_0x531a01){return db[_0xb535('0x3a')][_0xb535('0x52')]({'where':{'id':_0x3c5e73[_0xb535('0x5b')]['id']}})[_0xb535('0x1a')](handleEntityNotFound(_0x372a2a,null))[_0xb535('0x1a')](function(_0x1c0993){if(_0x1c0993){return _0x1c0993[_0xb535('0x6b')](_0x3c5e73[_0xb535('0x3c')]['ids']);}})[_0xb535('0x1a')](respondWithStatusCode(_0x372a2a,null))['catch'](handleError(_0x372a2a,null));};exports[_0xb535('0x6c')]=function(_0x3a7772,_0x56f2a8,_0x3228ce){var _0x50bbad={'channel':_0xb535('0x6d')};var _0x548cd3=[];var _0x2db7e5=[];var _0xbc1db4={};return db[_0xb535('0x3a')][_0xb535('0x52')]({'where':{'id':_0x3a7772[_0xb535('0x5b')]['id']},'include':[{'model':db[_0xb535('0x6e')],'as':_0xb535('0x6f')}]})[_0xb535('0x1a')](handleEntityNotFound(_0x56f2a8,null))[_0xb535('0x1a')](function(_0x4dd110){_0x50bbad[_0xb535('0x70')]=_0x4dd110;_0x50bbad[_0xb535('0x71')]=_[_0xb535('0x72')](_0x4dd110[_0xb535('0x6f')],[_0xb535('0x73')],[_0xb535('0x74')]);if(_0x50bbad[_0xb535('0x70')]['Applications']){delete _0x50bbad[_0xb535('0x70')][_0xb535('0x6f')];}return db[_0xb535('0x75')][_0xb535('0x5c')]();})['then'](function(_0x576129){if(!_0x576129){throw new db['Sequelize'][(_0xb535('0x76'))](_0xb535('0x77'));}_0x548cd3=_[_0xb535('0x78')](_[_0xb535('0x3d')](_0x576129),[_0xb535('0x79'),_0xb535('0x7a')]);_0x2db7e5=_[_0xb535('0x78')](_[_0xb535('0x3d')](_0x576129),[_0xb535('0x79'),_0xb535('0x7a'),_0xb535('0x7b'),_0xb535('0x7c')]);_0x50bbad['body']={'mapKey':_0xb535('0x7d')};if(_0x50bbad[_0xb535('0x70')][_0xb535('0x3b')]){switch(_0x50bbad[_0xb535('0x70')]['type']){case'twilio':_0x50bbad[_0xb535('0x54')]['from']=_0x3a7772[_0xb535('0x54')][_0xb535('0x7e')];_0x50bbad[_0xb535('0x54')][_0xb535('0x54')]=_0x3a7772['body'][_0xb535('0x7f')];_0x50bbad[_0xb535('0x54')][_0xb535('0x80')]=_0x3a7772[_0xb535('0x54')][_0xb535('0x81')];break;case'skebby':_0x50bbad[_0xb535('0x54')][_0xb535('0x82')]='+'+_0x3a7772['body'][_0xb535('0x83')];_0x50bbad[_0xb535('0x54')][_0xb535('0x54')]=_0x3a7772[_0xb535('0x54')]['text'];break;case _0xb535('0x84'):_0x50bbad[_0xb535('0x54')]['from']=_0x3a7772[_0xb535('0x54')]['from'];_0x50bbad[_0xb535('0x54')]['body']=_0x3a7772[_0xb535('0x54')][_0xb535('0x22')];break;case _0xb535('0x85'):_0x50bbad['body'][_0xb535('0x82')]=_0x3a7772[_0xb535('0x54')]['from'];_0x50bbad[_0xb535('0x54')]['body']=_0x3a7772[_0xb535('0x54')][_0xb535('0x54')];_0x50bbad['body'][_0xb535('0x80')]=_0x3a7772[_0xb535('0x54')][_0xb535('0x86')];break;case _0xb535('0x87'):_0x50bbad[_0xb535('0x54')]['from']=_0x3a7772[_0xb535('0x54')][_0xb535('0x7e')];_0x50bbad[_0xb535('0x54')]['body']=_0x3a7772[_0xb535('0x54')][_0xb535('0x88')];_0x50bbad['body'][_0xb535('0x80')]=_0x3a7772['body'][_0xb535('0x89')];break;case _0xb535('0x8a'):_0x50bbad['body'][_0xb535('0x82')]='+'+_0x3a7772['body'][_0xb535('0x8b')][0x0]['from'];_0x50bbad[_0xb535('0x54')][_0xb535('0x54')]=_0x3a7772[_0xb535('0x54')][_0xb535('0x8b')][0x0][_0xb535('0x8c')];_0x50bbad['body'][_0xb535('0x80')]=_0x3a7772[_0xb535('0x54')][_0xb535('0x8b')][0x0][_0xb535('0x80')];break;case _0xb535('0x8d'):_0x50bbad['body'][_0xb535('0x82')]=_0x3a7772[_0xb535('0x54')][_0xb535('0x8e')];_0x50bbad['body']['body']=_0x3a7772[_0xb535('0x54')]['segmentedMessage'][_0xb535('0x22')];break;case _0xb535('0x8f'):_0x50bbad[_0xb535('0x54')][_0xb535('0x82')]=_0x3a7772[_0xb535('0x54')][_0xb535('0x90')];_0x50bbad[_0xb535('0x54')]['body']=_0x3a7772[_0xb535('0x54')][_0xb535('0x8c')];_0x50bbad[_0xb535('0x54')][_0xb535('0x80')]=_0x3a7772[_0xb535('0x54')][_0xb535('0x91')];break;case _0xb535('0x92'):_0x50bbad[_0xb535('0x54')][_0xb535('0x80')]=_0x3a7772[_0xb535('0x54')][0x0][_0xb535('0x22')]['id'];_0x50bbad['body']['from']=_0x3a7772[_0xb535('0x54')][0x0]['message'][_0xb535('0x82')];_0x50bbad[_0xb535('0x54')][_0xb535('0x54')]=_0x3a7772[_0xb535('0x54')][0x0][_0xb535('0x22')][_0xb535('0x8c')];break;case _0xb535('0x93'):_0x50bbad['body'][_0xb535('0x82')]=_0x3a7772['body'][_0xb535('0x82')];_0x50bbad[_0xb535('0x54')]['body']=_0x3a7772[_0xb535('0x54')]['message'];_0x50bbad['body'][_0xb535('0x80')]=_0x3a7772[_0xb535('0x54')][_0xb535('0x94')];break;}}if(_0x50bbad[_0xb535('0x54')]['id']){delete _0x50bbad[_0xb535('0x54')]['id'];}if(_['isNil'](_0x50bbad[_0xb535('0x54')][_0xb535('0x82')])){throw new db[(_0xb535('0x95'))][(_0xb535('0x76'))]('from\x20is\x20mandatory');}if(_[_0xb535('0x96')](_0x50bbad[_0xb535('0x54')][_0xb535('0x54')])||_0x50bbad[_0xb535('0x54')][_0xb535('0x54')]===''){throw new db[(_0xb535('0x95'))]['ValidationError'](_0xb535('0x97'));}if(_[_0xb535('0x96')](_0x50bbad[_0xb535('0x54')][_0xb535('0x98')])){throw new db['Sequelize']['ValidationError'](_0xb535('0x99')+_0x2db7e5);}if(!_[_0xb535('0x9a')](_0x2db7e5,_0x50bbad[_0xb535('0x54')]['mapKey'])){throw new db[(_0xb535('0x95'))]['ValidationError'](_0xb535('0x9b')+_0x2db7e5);}_0xbc1db4[_0x50bbad['body'][_0xb535('0x98')]]=_0x50bbad['body'][_0xb535('0x82')];return db['CmList'][_0xb535('0x52')]({'where':{'id':_0x50bbad[_0xb535('0x70')][_0xb535('0x7c')]},'include':[{'model':db[_0xb535('0x75')],'as':_0xb535('0x9c'),'where':_0xbc1db4,'limit':0x1,'order':[['updatedAt','DESC']]}]});})['then'](handleEntityNotFound(_0x56f2a8,null))[_0xb535('0x1a')](function(_0x353731){if(_0x353731){_0x50bbad[_0xb535('0x9d')]=_[_0xb535('0x9e')](_0x353731,[_0xb535('0x9c')]);if(_0x353731[_0xb535('0x9c')][_0xb535('0x43')]){return _0x353731[_0xb535('0x9c')][0x0];}var _0x69e995=_[_0xb535('0x16')](_0x50bbad[_0xb535('0x54')],{'firstName':_0x50bbad[_0xb535('0x54')][_0xb535('0x82')],'ListId':_0x353731['id']});_0x69e995[_0x50bbad['body'][_0xb535('0x98')]]=_0x50bbad[_0xb535('0x54')][_0xb535('0x82')];return db[_0xb535('0x75')]['create'](_0x69e995,{'fields':_0x548cd3,'raw':!![]});}})[_0xb535('0x1a')](handleEntityNotFound(_0x56f2a8,null))[_0xb535('0x1a')](function(_0xf566e9){if(_0xf566e9){_0x50bbad[_0xb535('0x9f')]=_0xf566e9;var _0x5acbf2={'ContactId':_0xf566e9['id'],'phone':_0x50bbad[_0xb535('0x54')][_0xb535('0x82')],'SmsAccountId':_0x3a7772[_0xb535('0x5b')]['id']};var _0x2d7c29={'ContactId':_0xf566e9['id'],'SmsAccountId':_0x3a7772['params']['id'],'closed':![]};return db['SmsInteraction'][_0xb535('0x52')]({'where':_0x2d7c29})[_0xb535('0x1a')](function(_0x23d439){if(_0x23d439){return[_0x23d439,![]];}return db[_0xb535('0xa0')][_0xb535('0x53')](_0x5acbf2)['then'](function(_0x5dcc36){return[_0x5dcc36,!![]];});});}})[_0xb535('0xa1')](function(_0x13819f,_0x5b2ebe){_0x50bbad['interaction']=_0x13819f['get']({'plain':!![]});_0x50bbad[_0xb535('0xa2')]['created']=![];if(_0x5b2ebe){if(_0x50bbad[_0xb535('0x70')][_0xb535('0xa3')]){_0x50bbad[_0xb535('0x71')][_0xb535('0xa4')]({'id':0x0,'priority':_0x50bbad[_0xb535('0x71')][_0xb535('0x43')]+0x1,'app':_0xb535('0xa5'),'appdata':_0xb535('0xa6'),'interval':_0xb535('0xa7')});}_0x50bbad[_0xb535('0xa2')]['created']=!![];}return db[_0xb535('0xa8')][_0xb535('0x53')]({'phone':_0x50bbad[_0xb535('0x54')]['from'],'messageId':_0x50bbad[_0xb535('0x54')][_0xb535('0x80')],'body':_0x50bbad[_0xb535('0x54')][_0xb535('0x54')],'SmsAccountId':_0x3a7772[_0xb535('0x5b')]['id'],'SmsInteractionId':_0x13819f['id'],'direction':'in','ContactId':_0x13819f[_0xb535('0xa9')],'AttachmentId':_0x50bbad[_0xb535('0x54')][_0xb535('0xaa')]});})['then'](function(_0x340da4){_0x50bbad['message']=_0x340da4;if(_0x50bbad[_0xb535('0xa2')][_0xb535('0xab')]){return db[_0xb535('0xac')][_0xb535('0x52')]({'attributes':['id',_0xb535('0x36')],'where':{'id':_0x50bbad[_0xb535('0xa2')]['UserId']}})['then'](function(_0x449bfe){if(_0x449bfe){_0x50bbad[_0xb535('0x71')][_0xb535('0xad')]({'id':0x0,'priority':0x0,'app':_0xb535('0xae'),'appdata':_0x449bfe[_0xb535('0x36')]+','+(_0x50bbad['account'][_0xb535('0xaf')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xb535('0xb0'),_0xb535('0xb1'),_0x50bbad);});}return respondWithRpcPromise(_0xb535('0xb0'),_0xb535('0xb1'),_0x50bbad);})[_0xb535('0x1a')](function(_0x568700){if(_0x568700){var _0x2f2aa0=0xc8;var _0xa6df73=_0xb535('0xb2');logger[_0xb535('0x1b')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xa6df73,_0x2f2aa0,_0xb535('0xb3'));logger['debug'](_0xb535('0xb4'),_0xa6df73,_0x2f2aa0,_0xb535('0xb3'),JSON[_0xb535('0x1f')](_0x568700));if(_0x50bbad[_0xb535('0x70')]['type']===_0xb535('0xb5')){return _0x56f2a8[_0xb535('0x26')](_0x2f2aa0)['set'](_0xb535('0xb6'),_0xb535('0xb7'))['send']('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x56f2a8[_0xb535('0x26')](_0x2f2aa0)[_0xb535('0x2d')](_0x568700);}}})[_0xb535('0x4e')](handleError(_0x56f2a8,null));};exports[_0xb535('0xb8')]=function(_0x263838,_0x3ef3a3,_0x2dbeb5){return db[_0xb535('0x3a')][_0xb535('0x61')]({'where':{'id':_0x263838[_0xb535('0x5b')]['id']}})['then'](handleEntityNotFound(_0x3ef3a3,null))['then'](function(_0xee7e4c){if(_0xee7e4c){return db[_0xb535('0xb9')]['transaction'](function(_0x16d5f9){return db[_0xb535('0x6e')][_0xb535('0x34')]({'where':{'SmsAccountId':_0x263838['params']['id']},'transaction':_0x16d5f9})['then'](function(_0x35df45){var _0x40a025=_[_0xb535('0x39')](_0x263838[_0xb535('0x54')],function(_0x32e69a){_0x32e69a['SmsAccountId']=_0x263838['params']['id'];return _0x32e69a;});return db[_0xb535('0x6e')][_0xb535('0xba')](_0x40a025,{'transaction':_0x16d5f9});});})[_0xb535('0x1a')](function(){return db[_0xb535('0x6e')][_0xb535('0xbb')]({'where':{'SmsAccountId':_0x263838[_0xb535('0x5b')]['id']},'order':_0xb535('0x73')});});}})[_0xb535('0x1a')](respondWithResult(_0x3ef3a3,null))[_0xb535('0x4e')](handleError(_0x3ef3a3,null));};exports[_0xb535('0xbc')]=function(_0x45ca87,_0x351104,_0x451b1c){var _0x49e692={};var _0x5c58e7={};var _0x524363;var _0x29e2f9;return db[_0xb535('0x3a')][_0xb535('0x61')]({'where':{'id':_0x45ca87[_0xb535('0x5b')]['id']}})[_0xb535('0x1a')](handleEntityNotFound(_0x351104,null))[_0xb535('0x1a')](function(_0x4d7907){if(_0x4d7907){_0x524363=_0x4d7907;_0x5c58e7[_0xb535('0x40')]=_[_0xb535('0x3d')](db['SmsApplication'][_0xb535('0x51')]);_0x5c58e7[_0xb535('0x3c')]=_[_0xb535('0x3d')](_0x45ca87[_0xb535('0x3c')]);_0x5c58e7[_0xb535('0x3e')]=_['intersection'](_0x5c58e7['model'],_0x5c58e7[_0xb535('0x3c')]);_0x49e692[_0xb535('0x42')]=_[_0xb535('0x3f')](_0x5c58e7[_0xb535('0x40')],qs[_0xb535('0x41')](_0x45ca87['query']['fields']));_0x49e692[_0xb535('0x42')]=_0x49e692['attributes'][_0xb535('0x43')]?_0x49e692[_0xb535('0x42')]:_0x5c58e7[_0xb535('0x40')];_0x49e692['order']=qs[_0xb535('0x62')](_0x45ca87[_0xb535('0x3c')][_0xb535('0x62')]);_0x49e692[_0xb535('0x48')]=qs['filters'](_[_0xb535('0x47')](_0x45ca87[_0xb535('0x3c')],_0x5c58e7[_0xb535('0x3e')]));if(_0x45ca87[_0xb535('0x3c')][_0xb535('0x63')]){_0x49e692['where']=_[_0xb535('0x49')](_0x49e692[_0xb535('0x48')],{'$or':_[_0xb535('0x39')](_0x49e692['attributes'],function(_0x33e4f3){var _0x4e1ac2={};_0x4e1ac2[_0x33e4f3]={'$like':'%'+_0x45ca87[_0xb535('0x3c')][_0xb535('0x63')]+'%'};return _0x4e1ac2;})});}_0x49e692=_[_0xb535('0x49')]({},_0x49e692,_0x45ca87[_0xb535('0x64')]);return _0x524363[_0xb535('0xbc')](_0x49e692);}})[_0xb535('0x1a')](function(_0x75a6c5){if(_0x75a6c5){_0x29e2f9=_0x75a6c5[_0xb535('0x43')];if(!_0x45ca87[_0xb535('0x3c')]['hasOwnProperty'](_0xb535('0x45'))){_0x49e692[_0xb535('0x2a')]=qs[_0xb535('0x2a')](_0x45ca87[_0xb535('0x3c')]['limit']);_0x49e692['offset']=qs['offset'](_0x45ca87[_0xb535('0x3c')][_0xb535('0x28')]);}return _0x524363[_0xb535('0xbc')](_0x49e692);}})[_0xb535('0x1a')](function(_0x26cb97){if(_0x26cb97){return _0x26cb97?{'count':_0x29e2f9,'rows':_0x26cb97}:null;}})['then'](respondWithResult(_0x351104,null))[_0xb535('0x4e')](handleError(_0x351104,null));};exports[_0xb535('0xbd')]=function(_0x567412,_0x403747,_0x512201){var _0x304131={'raw':![],'where':{}};var _0x160c97={};var _0x14861d={'count':0x0,'rows':[]};return db[_0xb535('0x3a')]['findOne']({'where':{'id':_0x567412[_0xb535('0x5b')]['id']}})[_0xb535('0x1a')](handleEntityNotFound(_0x403747,null))[_0xb535('0x1a')](function(_0x1c227a){if(_0x1c227a){_0x160c97['model']=_[_0xb535('0x3d')](db['SmsInteraction']['rawAttributes']);_0x160c97[_0xb535('0x3c')]=_[_0xb535('0x3d')](_0x567412[_0xb535('0x3c')]);_0x160c97[_0xb535('0x3e')]=_[_0xb535('0x3f')](_0x160c97['model'],_0x160c97[_0xb535('0x3c')]);_0x304131['attributes']=_['intersection'](_0x160c97[_0xb535('0x40')],qs['fields'](_0x567412[_0xb535('0x3c')][_0xb535('0x41')]));_0x304131[_0xb535('0x42')]=_0x304131[_0xb535('0x42')]['length']?_0x304131[_0xb535('0x42')]:_0x160c97[_0xb535('0x40')];if(!_0x567412[_0xb535('0x3c')][_0xb535('0x44')](_0xb535('0x45'))){_0x304131['limit']=qs[_0xb535('0x2a')](_0x567412[_0xb535('0x3c')][_0xb535('0x2a')]);_0x304131[_0xb535('0x28')]=qs['offset'](_0x567412['query'][_0xb535('0x28')]);}_0x304131['order']=qs[_0xb535('0x62')](_0x567412[_0xb535('0x3c')][_0xb535('0x62')]);_0x304131[_0xb535('0x48')]=qs['filters'](_[_0xb535('0x47')](_0x567412['query'],_0x160c97['filters']));_0x304131[_0xb535('0x48')][_0xb535('0x5e')]=_0x1c227a['id'];if(_0x567412['query'][_0xb535('0x63')]){_0x304131[_0xb535('0x48')]=_['merge'](_0x304131[_0xb535('0x48')],{'$or':_[_0xb535('0x39')](_0x304131['attributes'],function(_0xc468fa){var _0x58c1d5={};_0x58c1d5[_0xc468fa]={'$like':'%'+_0x567412['query']['filter']+'%'};return _0x58c1d5;})});}_0x304131=_[_0xb535('0x49')]({},_0x304131,_0x567412[_0xb535('0x64')]);return db['SmsInteraction'][_0xb535('0x2b')]({'where':_0x304131[_0xb535('0x48')]})[_0xb535('0x1a')](function(_0x13a190){_0x14861d['count']=_0x13a190;if(_0x567412[_0xb535('0x3c')]['includeAll']){_0x304131[_0xb535('0x4c')]=[{'model':db[_0xb535('0x75')],'as':_0xb535('0xbe'),'required':![]},{'model':db[_0xb535('0xac')],'as':'Owner','attributes':[_0xb535('0x36'),_0xb535('0xbf'),_0xb535('0xc0')],'required':![]},{'model':db[_0xb535('0xc1')],'as':_0xb535('0xc2'),'attributes':['id',_0xb535('0x36'),_0xb535('0xc3')],'where':_0x567412['query'][_0xb535('0xc4')]?{'id':_0x567412['query'][_0xb535('0xc4')]}:undefined,'required':_0x567412[_0xb535('0x3c')][_0xb535('0xc4')]?!![]:![]}];}return db[_0xb535('0xa0')][_0xb535('0x6a')](_0x304131);})[_0xb535('0x1a')](function(_0x5c7756){_0x14861d[_0xb535('0x4d')]=_0x5c7756;return _0x14861d;});}})[_0xb535('0x1a')](respondWithFilteredResult(_0x403747,_0x304131))[_0xb535('0x4e')](handleError(_0x403747,null));};exports[_0xb535('0xc5')]=function(_0x10d1ef,_0x2831bc,_0x1bd432){var _0x3226b6,_0x4ea927,_0x35f141;if(_[_0xb535('0x96')](_0x10d1ef[_0xb535('0x54')][_0xb535('0x54')])||_0x10d1ef[_0xb535('0x54')]['body']===''){throw new db['Sequelize']['ValidationError'](_0xb535('0x97'));}if(_[_0xb535('0x96')](_0x10d1ef['body']['to'])){throw new db['Sequelize'][(_0xb535('0x76'))](_0xb535('0xc6'));}_0x3226b6=_0x10d1ef[_0xb535('0x54')]['to'];return db[_0xb535('0x3a')][_0xb535('0x52')]({'where':{'id':_0x10d1ef['params']['id']},'include':[{'model':db[_0xb535('0xc7')],'as':_0xb535('0xc8'),'include':[{'model':db['CmContact'],'as':_0xb535('0x9c'),'where':{'mobile':_0x3226b6},'limit':0x1,'order':[[_0xb535('0x7a'),_0xb535('0xc9')]]}]}]})[_0xb535('0x1a')](handleEntityNotFound(_0x2831bc,null))['then'](function(_0x5d1c77){if(_0x5d1c77&&_0x5d1c77[_0xb535('0xc8')]){_0x4ea927=_0x5d1c77[_0xb535('0x31')]({'plain':!![]});if(_0x4ea927['List']&&_0x4ea927[_0xb535('0xc8')]['Contacts'][_0xb535('0x43')]){return _0x4ea927['List']['Contacts'][0x0];}return db[_0xb535('0x75')][_0xb535('0x53')](_[_0xb535('0x16')](_0x10d1ef[_0xb535('0x54')],{'firstName':_0x3226b6,'mobile':_0x3226b6,'phone':_0x3226b6,'ListId':_0x4ea927[_0xb535('0x7c')]}));}})['then'](handleEntityNotFound(_0x2831bc,null))[_0xb535('0x1a')](function(_0x4d813d){if(_0x4d813d){_0x35f141=_0x4d813d;return db[_0xb535('0xa0')][_0xb535('0x52')]({'where':{'ContactId':_0x35f141['id'],'closed':![],'SmsAccountId':_0x4ea927['id']}})[_0xb535('0x1a')](function(_0x5199d6){if(_0x5199d6){return[_0x5199d6,![]];}return db[_0xb535('0xa0')][_0xb535('0x53')]({'UserId':_0x10d1ef[_0xb535('0xca')]['id'],'ContactId':_0x35f141['id'],'SmsAccountId':_0x4ea927['id'],'phone':_0x3226b6,'firstMsgDirection':_0xb535('0xcb'),'Messages':[_[_0xb535('0x49')](_0x10d1ef[_0xb535('0x54')],{'read':![],'body':_0x10d1ef[_0xb535('0x54')][_0xb535('0x54')],'phone':_0x3226b6,'SmsAccountId':_0x4ea927['id'],'UserId':_0x10d1ef[_0xb535('0xca')]['id'],'ContactId':_0x35f141['id']})]},{'include':[{'model':db[_0xb535('0xa8')],'as':_0xb535('0xcc')}]})[_0xb535('0x1a')](function(_0x22a23a){return[_0x22a23a,!![]];});});}})[_0xb535('0xa1')](function(_0x498ede,_0x1fd40b){if(_0x1fd40b){return _0x498ede;}return db[_0xb535('0xa8')]['create'](_['merge'](_0x10d1ef[_0xb535('0x54')],{'read':![],'body':_0x10d1ef[_0xb535('0x54')]['body'],'phone':_0x3226b6,'SmsAccountId':_0x4ea927['id'],'SmsInteractionId':_0x498ede['id'],'UserId':_0x10d1ef[_0xb535('0xca')]['id'],'ContactId':_0x35f141['id']}))[_0xb535('0x1a')](function(_0x23d5dd){_0x498ede[_0xb535('0xcd')][_0xb535('0xcc')]=[];_0x498ede['dataValues'][_0xb535('0xcc')]['push'](_0x23d5dd['dataValues']);return _0x498ede;});})['then'](respondWithResult(_0x2831bc,null))[_0xb535('0x4e')](handleError(_0x2831bc,null));};exports[_0xb535('0x26')]=function(_0x4e7255,_0x1d8e5f,_0x13deab){if(_0x4e7255[_0xb535('0x54')]['id']){delete _0x4e7255['body']['id'];}var _0xa01cd4,_0x14be30,_0x5abbd7;return db[_0xb535('0x3a')][_0xb535('0x52')]({'where':{'id':_0x4e7255[_0xb535('0x5b')]['id']}})[_0xb535('0x1a')](handleEntityNotFound(_0x1d8e5f,null))[_0xb535('0x1a')](function(_0x266e25){if(_0x266e25){_0x5abbd7=_0x266e25;logger[_0xb535('0x1d')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xb535('0x26'),_0xb535('0xce'),_0x266e25['type'],util['inspect'](_0x4e7255['body'],{'showHidden':![],'depth':null}));switch(_0x266e25[_0xb535('0x3b')]){case _0xb535('0xcf'):if(_0x4e7255[_0xb535('0x54')][_0xb535('0xd0')]&&_0x4e7255[_0xb535('0x54')][_0xb535('0x26')]){_0x14be30=_0x4e7255[_0xb535('0x54')][_0xb535('0x26')];return db[_0xb535('0xa8')][_0xb535('0x52')]({'where':{'messageId':_0x4e7255[_0xb535('0x54')][_0xb535('0xd0')]}});}break;case _0xb535('0x84'):if(_0x4e7255[_0xb535('0x54')][_0xb535('0xd1')]&&_0x4e7255[_0xb535('0x54')]['statusInt']){_0x14be30=_0x4e7255[_0xb535('0x54')]['statusInt'];return db['SmsMessage'][_0xb535('0x52')]({'where':{'messageId':_0x4e7255['body']['requestid']}});}break;case _0xb535('0x85'):if(_0x4e7255[_0xb535('0x54')]['message_id']&&_0x4e7255[_0xb535('0x54')][_0xb535('0xd2')]){_0x14be30=_0x4e7255['body'][_0xb535('0xd2')];return db[_0xb535('0xa8')][_0xb535('0x52')]({'where':{'messageId':_0x4e7255[_0xb535('0x54')][_0xb535('0x86')]}});}break;case _0xb535('0x8a'):var _0x5f516d=_0x4e7255[_0xb535('0x54')][_0xb535('0x8b')][0x0];if(_0x5f516d['messageId']&&_0x5f516d['status'][_0xb535('0xd3')]==='DELIVERED'){_0x14be30=_0x5f516d[_0xb535('0x26')][_0xb535('0xd3')];return db['SmsMessage']['find']({'where':{'messageId':_0x5f516d[_0xb535('0x80')]}});}break;case _0xb535('0x8f'):if(_0x4e7255[_0xb535('0x54')]['messageId']&&_0x4e7255[_0xb535('0x54')][_0xb535('0x26')]){_0x14be30=_0x4e7255[_0xb535('0x54')][_0xb535('0x26')];return db[_0xb535('0xa8')][_0xb535('0x52')]({'where':{'messageId':_0x4e7255['body']['messageId']}});}break;case _0xb535('0x92'):if(_0x4e7255[_0xb535('0x54')][0x0][_0xb535('0x22')]['id']){_0x14be30=_0x4e7255[_0xb535('0x54')][0x0][_0xb535('0x3b')];return db[_0xb535('0xa8')][_0xb535('0x52')]({'where':{'messageId':_0x4e7255[_0xb535('0x54')][0x0][_0xb535('0x22')]['id']}});}break;case _0xb535('0x93'):if(_0x4e7255[_0xb535('0x54')][_0xb535('0xd4')]&&_0x4e7255[_0xb535('0x54')][_0xb535('0x26')]){_0x14be30=_0x4e7255['body'][_0xb535('0x26')];return db[_0xb535('0xa8')]['find']({'where':{'messageId':_0x4e7255[_0xb535('0x54')][_0xb535('0xd4')]}});}break;}}})[_0xb535('0x1a')](handleEntityNotFound(_0x1d8e5f,null))[_0xb535('0x1a')](function(_0x4f7975){if(_0x4f7975){_0xa01cd4=_0x4f7975;switch(_0x5abbd7[_0xb535('0x3b')]){case _0xb535('0xcf'):if(_0x14be30===_0xb535('0xd5')){return _0xa01cd4['update']({'read':!![]});}else{logger[_0xb535('0x20')](_0xb535('0x1e'),'status',_0xb535('0xcf'),util[_0xb535('0xd6')](_0x4e7255[_0xb535('0x54')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x14be30==='1'){return _0xa01cd4['update']({'read':!![]});}else{logger[_0xb535('0x20')](_0xb535('0x1e'),_0xb535('0x26'),'skebby',util[_0xb535('0xd6')](_0x4e7255[_0xb535('0x54')],{'showHidden':![],'depth':null}));}break;case'clicksend':if(!_0x4e7255[_0xb535('0x54')]['error_code']&&_0x14be30>=0xc8&&_0x14be30<=0xce){return _0xa01cd4[_0xb535('0x30')]({'read':!![]});}else{logger['error'](_0xb535('0x1e'),_0xb535('0x26'),_0xb535('0x85'),util[_0xb535('0xd6')](_0x4e7255[_0xb535('0x54')],{'showHidden':![],'depth':null}));}break;case _0xb535('0x8a'):var _0x482291=_0x4e7255[_0xb535('0x54')][_0xb535('0x8b')][0x0];if(_0x482291['status'][_0xb535('0xd3')]==='DELIVERED'){return _0xa01cd4[_0xb535('0x30')]({'read':!![]});}else{logger[_0xb535('0x20')](_0xb535('0x1e'),'status',_0xb535('0x8a'),util[_0xb535('0xd6')](_0x4e7255[_0xb535('0x54')],{'showHidden':![],'depth':null}));}break;case _0xb535('0x8f'):if(_0x14be30==_0xb535('0xd7')||_0x14be30=='RECEIVED_BY_RECIPIENT'){return _0xa01cd4[_0xb535('0x30')]({'read':!![]});}else{logger[_0xb535('0x20')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xb535('0x26'),_0xb535('0x8f'),util[_0xb535('0xd6')](_0x4e7255[_0xb535('0x54')],{'showHidden':![],'depth':null}));}break;case _0xb535('0x92'):if(_0x14be30==_0xb535('0xd8')){return _0xa01cd4[_0xb535('0x30')]({'read':!![]});}else{logger['error'](_0xb535('0x1e'),_0xb535('0x26'),_0xb535('0x92'),util[_0xb535('0xd6')](_0x4e7255[_0xb535('0x54')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x14be30==='DELIVRD'||_0x14be30==='ACCEPTD'){return _0xa01cd4[_0xb535('0x30')]({'read':!![]});}else{logger['error'](_0xb535('0x1e'),_0xb535('0x26'),_0xb535('0x93'),util[_0xb535('0xd6')](_0x4e7255[_0xb535('0x54')],{'showHidden':![],'depth':null}));}break;}return _0xa01cd4;}})[_0xb535('0x1a')](respondWithResult(_0x1d8e5f,null))[_0xb535('0x4e')](handleError(_0x1d8e5f,null));};exports['statusGet']=function(_0x5092d8,_0x2f308a,_0x18ef1f){var _0x19bffc,_0x256dd7,_0x4889fa;return db['SmsAccount']['find']({'where':{'id':_0x5092d8[_0xb535('0x5b')]['id']}})[_0xb535('0x1a')](handleEntityNotFound(_0x2f308a,null))[_0xb535('0x1a')](function(_0x149c90){if(_0x149c90){_0x4889fa=_0x149c90;logger[_0xb535('0x1d')](_0xb535('0x1e'),'status',_0xb535('0xce'),_0x149c90['type'],util[_0xb535('0xd6')](_0x5092d8[_0xb535('0x3c')],{'showHidden':![],'depth':null}));switch(_0x149c90[_0xb535('0x3b')]){case _0xb535('0x8d'):if(_0x5092d8[_0xb535('0x3c')][_0xb535('0xd9')]&&_0x5092d8[_0xb535('0x3c')]['state']){_0x256dd7=_0x5092d8['query'][_0xb535('0xda')];return db[_0xb535('0xa8')]['find']({'where':{'messageId':_0x5092d8[_0xb535('0x3c')]['message-id']}});}break;}}})[_0xb535('0x1a')](handleEntityNotFound(_0x2f308a,null))['then'](function(_0x3eb45f){if(_0x3eb45f){_0x19bffc=_0x3eb45f;switch(_0x4889fa['type']){case _0xb535('0x8d'):if(_0x256dd7==='2'||_0x256dd7==='6'){return _0x19bffc['update']({'read':!![]});}else{logger[_0xb535('0x20')](_0xb535('0x1e'),_0xb535('0x26'),_0xb535('0x8d'),util[_0xb535('0xd6')](_0x5092d8['query'],{'showHidden':![],'depth':null}));};break;}return _0x19bffc;}})['then'](respondWithResult(_0x2f308a,null))[_0xb535('0x4e')](handleError(_0x2f308a,null));};exports[_0xb535('0xdb')]=function(_0x4e7077,_0x153346,_0x616c60){return db[_0xb535('0x3a')][_0xb535('0x52')]({'where':{'id':_0x4e7077[_0xb535('0x5b')]['id']}})['then'](handleEntityNotFound(_0x153346,null))[_0xb535('0x1a')](function(_0x2d0170){if(_0x2d0170){return _0x2d0170[_0xb535('0xdb')](_0x4e7077[_0xb535('0x54')]['ids'],_[_0xb535('0x9e')](_0x4e7077[_0xb535('0x54')],[_0xb535('0x66'),'id'])||{})[_0xb535('0xa1')](function(_0x1cec89){for(var _0x1aad9c=0x0;_0x1aad9c<_0x4e7077[_0xb535('0x54')][_0xb535('0x66')]['length'];_0x1aad9c+=0x1){socket['emit'](_0xb535('0xdc'),{'UserId':Number(_0x4e7077[_0xb535('0x54')][_0xb535('0x66')][_0x1aad9c]),'SmsAccountId':Number(_0x4e7077[_0xb535('0x5b')]['id'])});}return _0x1cec89;});}})[_0xb535('0x1a')](respondWithResult(_0x153346,null))[_0xb535('0x4e')](handleError(_0x153346,null));};exports[_0xb535('0xdd')]=function(_0x57d4ff,_0x4a4f0e,_0x5d9341){return db[_0xb535('0x3a')][_0xb535('0x52')]({'where':{'id':_0x57d4ff[_0xb535('0x5b')]['id']}})[_0xb535('0x1a')](handleEntityNotFound(_0x4a4f0e,null))[_0xb535('0x1a')](function(_0x5cb8f1){if(_0x5cb8f1){return _0x5cb8f1[_0xb535('0xdd')](_0x57d4ff['query']['ids'])[_0xb535('0x1a')](function(){if(_['isArray'](_0x57d4ff[_0xb535('0x3c')][_0xb535('0x66')])){for(var _0x2068fb=0x0;_0x2068fb<_0x57d4ff[_0xb535('0x3c')][_0xb535('0x66')][_0xb535('0x43')];_0x2068fb+=0x1){socket[_0xb535('0xde')](_0xb535('0xdf'),{'UserId':Number(_0x57d4ff[_0xb535('0x3c')]['ids'][_0x2068fb]),'SmsAccountId':Number(_0x57d4ff[_0xb535('0x5b')]['id'])});}}else{socket[_0xb535('0xde')](_0xb535('0xdf'),{'UserId':Number(_0x57d4ff[_0xb535('0x3c')][_0xb535('0x66')]),'SmsAccountId':Number(_0x57d4ff[_0xb535('0x5b')]['id'])});}});}})[_0xb535('0x1a')](respondWithStatusCode(_0x4a4f0e,null))['catch'](handleError(_0x4a4f0e,null));};exports['getAgents']=function(_0x213b21,_0x57b9c0,_0x530955){var _0x406dcf={};var _0x46cda1={};var _0x2cce79;var _0x3f36f2;return db['SmsAccount'][_0xb535('0x61')]({'where':{'id':_0x213b21['params']['id']}})[_0xb535('0x1a')](handleEntityNotFound(_0x57b9c0,null))[_0xb535('0x1a')](function(_0x402a4e){if(_0x402a4e){_0x2cce79=_0x402a4e;_0x46cda1[_0xb535('0x40')]=_['keys'](db[_0xb535('0xac')][_0xb535('0x51')]);_0x46cda1[_0xb535('0x3c')]=_[_0xb535('0x3d')](_0x213b21[_0xb535('0x3c')]);_0x46cda1['filters']=_['intersection'](_0x46cda1[_0xb535('0x40')],_0x46cda1[_0xb535('0x3c')]);_0x406dcf[_0xb535('0x42')]=_[_0xb535('0x3f')](_0x46cda1[_0xb535('0x40')],qs[_0xb535('0x41')](_0x213b21[_0xb535('0x3c')][_0xb535('0x41')]));_0x406dcf[_0xb535('0x42')]=_0x406dcf[_0xb535('0x42')][_0xb535('0x43')]?_0x406dcf[_0xb535('0x42')]:_0x46cda1[_0xb535('0x40')];_0x406dcf[_0xb535('0x46')]=qs[_0xb535('0x62')](_0x213b21[_0xb535('0x3c')][_0xb535('0x62')]);_0x406dcf[_0xb535('0x48')]=qs[_0xb535('0x3e')](_['pick'](_0x213b21[_0xb535('0x3c')],_0x46cda1[_0xb535('0x3e')]));if(_0x213b21[_0xb535('0x3c')][_0xb535('0x63')]){_0x406dcf[_0xb535('0x48')]=_['merge'](_0x406dcf[_0xb535('0x48')],{'$or':_[_0xb535('0x39')](_0x406dcf[_0xb535('0x42')],function(_0x4a8e72){var _0x9e5d={};_0x9e5d[_0x4a8e72]={'$like':'%'+_0x213b21[_0xb535('0x3c')]['filter']+'%'};return _0x9e5d;})});}_0x406dcf=_[_0xb535('0x49')]({},_0x406dcf,_0x213b21[_0xb535('0x64')]);return _0x2cce79[_0xb535('0xe0')](_0x406dcf);}})[_0xb535('0x1a')](function(_0x30b59c){if(_0x30b59c){_0x3f36f2=_0x30b59c[_0xb535('0x43')];if(!_0x213b21[_0xb535('0x3c')][_0xb535('0x44')](_0xb535('0x45'))){_0x406dcf['limit']=qs[_0xb535('0x2a')](_0x213b21[_0xb535('0x3c')][_0xb535('0x2a')]);_0x406dcf['offset']=qs[_0xb535('0x28')](_0x213b21[_0xb535('0x3c')]['offset']);}return _0x2cce79[_0xb535('0xe0')](_0x406dcf);}})[_0xb535('0x1a')](function(_0x56ec3f){if(_0x56ec3f){return _0x56ec3f?{'count':_0x3f36f2,'rows':_0x56ec3f}:null;}})['then'](respondWithResult(_0x57b9c0,null))[_0xb535('0x4e')](handleError(_0x57b9c0,null));};
\ No newline at end of file
index 76acc27..18a5f2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x377c=['../../mysqldb','setMaxListeners','update','remove','emit','hasOwnProperty','exports'];(function(_0x43463e,_0x270579){var _0x1ae452=function(_0x47fb70){while(--_0x47fb70){_0x43463e['push'](_0x43463e['shift']());}};_0x1ae452(++_0x270579);}(_0x377c,0x10a));var _0xc377=function(_0x12b002,_0x43b9a7){_0x12b002=_0x12b002-0x0;var _0x4acf7d=_0x377c[_0x12b002];return _0x4acf7d;};'use strict';var EventEmitter=require('events');var SmsAccount=require(_0xc377('0x0'))['db']['SmsAccount'];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xc377('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xc377('0x2'),'afterDestroy':_0xc377('0x3')};function emitEvent(_0x228bf6){return function(_0x592e75,_0x5c3f25,_0x481ff6){SmsAccountEvents[_0xc377('0x4')](_0x228bf6+':'+_0x592e75['id'],_0x592e75);SmsAccountEvents[_0xc377('0x4')](_0x228bf6,_0x592e75);_0x481ff6(null);};}for(var e in events){if(events[_0xc377('0x5')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0xc377('0x6')]=SmsAccountEvents;
\ No newline at end of file
+var _0x3f59=['update','emit','exports','../../mysqldb','SmsAccount','setMaxListeners','save'];(function(_0x4c4a38,_0x104574){var _0x49e59e=function(_0x585ec4){while(--_0x585ec4){_0x4c4a38['push'](_0x4c4a38['shift']());}};_0x49e59e(++_0x104574);}(_0x3f59,0xc7));var _0x93f5=function(_0x5a96ef,_0x1a6a41){_0x5a96ef=_0x5a96ef-0x0;var _0x1159ca=_0x3f59[_0x5a96ef];return _0x1159ca;};'use strict';var EventEmitter=require('events');var SmsAccount=require(_0x93f5('0x0'))['db'][_0x93f5('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x93f5('0x2')](0x0);var events={'afterCreate':_0x93f5('0x3'),'afterUpdate':_0x93f5('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2c0945){return function(_0x2bfcc4,_0x5b98e8,_0x5449f2){SmsAccountEvents[_0x93f5('0x5')](_0x2c0945+':'+_0x2bfcc4['id'],_0x2bfcc4);SmsAccountEvents[_0x93f5('0x5')](_0x2c0945,_0x2bfcc4);_0x5449f2(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0x93f5('0x6')]=SmsAccountEvents;
\ No newline at end of file
index 3c3672f..0cdf296 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x682d=['sms_accounts','lodash','util','../../config/logger','bluebird','path','rimraf','./smsAccount.attributes'];(function(_0x1151fa,_0x2784a7){var _0x49da2b=function(_0x2d33ca){while(--_0x2d33ca){_0x1151fa['push'](_0x1151fa['shift']());}};_0x49da2b(++_0x2784a7);}(_0x682d,0x141));var _0xd682=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x682d[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xd682('0x0'));var util=require(_0xd682('0x1'));var logger=require(_0xd682('0x2'))('api');var moment=require('moment');var BPromise=require(_0xd682('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd682('0x4'));var rimraf=require(_0xd682('0x5'));var config=require('../../config/environment');var attributes=require(_0xd682('0x6'));module['exports']=function(_0x8ad1f3,_0x5f54ea){return _0x8ad1f3['define']('SmsAccount',attributes,{'tableName':_0xd682('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x97ba=['util','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','SmsAccount','sms_accounts','lodash'];(function(_0x33c0e0,_0x20de85){var _0x3f4f3a=function(_0x54f124){while(--_0x54f124){_0x33c0e0['push'](_0x33c0e0['shift']());}};_0x3f4f3a(++_0x20de85);}(_0x97ba,0x1d3));var _0xa97b=function(_0x380052,_0x68f9a8){_0x380052=_0x380052-0x0;var _0x38ba3b=_0x97ba[_0x380052];return _0x38ba3b;};'use strict';var _=require(_0xa97b('0x0'));var util=require(_0xa97b('0x1'));var logger=require('../../config/logger')(_0xa97b('0x2'));var moment=require(_0xa97b('0x3'));var BPromise=require('bluebird');var rp=require(_0xa97b('0x4'));var fs=require('fs');var path=require(_0xa97b('0x5'));var rimraf=require(_0xa97b('0x6'));var config=require(_0xa97b('0x7'));var attributes=require('./smsAccount.attributes');module[_0xa97b('0x8')]=function(_0x28028c,_0x48c3fc){return _0x28028c[_0xa97b('0x9')](_0xa97b('0xa'),attributes,{'tableName':_0xa97b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8f62100..704a027 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51f2=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','./smsAccount.socket','register','request','then','SmsAccount,\x20%s,\x20%s','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','ShowSmsAccount','find','options','raw','where','attributes','include','map','model','debug','lodash','moment'];(function(_0x2ec020,_0xfa2e53){var _0x346823=function(_0x42bb2a){while(--_0x42bb2a){_0x2ec020['push'](_0x2ec020['shift']());}};_0x346823(++_0xfa2e53);}(_0x51f2,0xbc));var _0x251f=function(_0x3e91a5,_0x594bfb){_0x3e91a5=_0x3e91a5-0x0;var _0x1548cf=_0x51f2[_0x3e91a5];return _0x1548cf;};'use strict';var _=require(_0x251f('0x0'));var util=require('util');var moment=require(_0x251f('0x1'));var BPromise=require(_0x251f('0x2'));var rs=require(_0x251f('0x3'));var fs=require('fs');var Redis=require(_0x251f('0x4'));var db=require(_0x251f('0x5'))['db'];var utils=require(_0x251f('0x6'));var logger=require(_0x251f('0x7'))(_0x251f('0x8'));var config=require(_0x251f('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x251f('0xa')][_0x251f('0xb')]({'port':0x232a});config[_0x251f('0xc')]=_['defaults'](config[_0x251f('0xc')],{'host':_0x251f('0xd'),'port':0x18eb});var socket=require(_0x251f('0xe'))(new Redis(config[_0x251f('0xc')]));require(_0x251f('0xf'))[_0x251f('0x10')](socket);function respondWithRpcPromise(_0x1f36e2,_0xad5a00,_0x382341){return new BPromise(function(_0x2ad904,_0x260848){return client[_0x251f('0x11')](_0x1f36e2,_0x382341)[_0x251f('0x12')](function(_0x455cd5){logger['info'](_0x251f('0x13'),_0xad5a00,'request\x20sent');logger['debug'](_0x251f('0x14'),_0xad5a00,'request\x20sent',JSON[_0x251f('0x15')](_0x455cd5));if(_0x455cd5[_0x251f('0x16')]){if(_0x455cd5[_0x251f('0x16')][_0x251f('0x17')]===0x1f4){logger[_0x251f('0x16')]('SmsAccount,\x20%s,\x20%s',_0xad5a00,_0x455cd5[_0x251f('0x16')][_0x251f('0x18')]);return _0x260848(_0x455cd5[_0x251f('0x16')][_0x251f('0x18')]);}logger[_0x251f('0x16')](_0x251f('0x13'),_0xad5a00,_0x455cd5[_0x251f('0x16')][_0x251f('0x18')]);return _0x2ad904(_0x455cd5[_0x251f('0x16')][_0x251f('0x18')]);}else{logger[_0x251f('0x19')](_0x251f('0x13'),_0xad5a00,'request\x20sent');_0x2ad904(_0x455cd5[_0x251f('0x1a')][_0x251f('0x18')]);}})[_0x251f('0x1b')](function(_0x4a8f41){logger['error'](_0x251f('0x13'),_0xad5a00,_0x4a8f41);_0x260848(_0x4a8f41);});});}exports[_0x251f('0x1c')]=function(_0x4f5906){var _0x122f3b=this;return new Promise(function(_0x2847de,_0x19de65){return db['SmsAccount'][_0x251f('0x1d')]({'raw':_0x4f5906[_0x251f('0x1e')]?_0x4f5906[_0x251f('0x1e')][_0x251f('0x1f')]===undefined?!![]:![]:!![],'where':_0x4f5906[_0x251f('0x1e')]?_0x4f5906[_0x251f('0x1e')][_0x251f('0x20')]||null:null,'attributes':_0x4f5906[_0x251f('0x1e')]?_0x4f5906['options'][_0x251f('0x21')]||null:null,'include':_0x4f5906['options']?_0x4f5906['options'][_0x251f('0x22')]?_[_0x251f('0x23')](_0x4f5906[_0x251f('0x1e')][_0x251f('0x22')],function(_0xe4d58f){return{'model':db[_0xe4d58f['model']],'as':_0xe4d58f['as'],'attributes':_0xe4d58f['attributes'],'include':_0xe4d58f[_0x251f('0x22')]?_[_0x251f('0x23')](_0xe4d58f['include'],function(_0x1f682d){return{'model':db[_0x1f682d[_0x251f('0x24')]],'as':_0x1f682d['as'],'attributes':_0x1f682d[_0x251f('0x21')],'include':_0x1f682d[_0x251f('0x22')]?_[_0x251f('0x23')](_0x1f682d[_0x251f('0x22')],function(_0x593802){return{'model':db[_0x593802[_0x251f('0x24')]],'as':_0x593802['as'],'attributes':_0x593802[_0x251f('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1ce875){logger[_0x251f('0x19')](_0x251f('0x1c'),_0x4f5906);logger[_0x251f('0x25')]('ShowSmsAccount',_0x4f5906,JSON['stringify'](_0x1ce875));_0x2847de(_0x1ce875);})[_0x251f('0x1b')](function(_0x564f77){logger[_0x251f('0x16')]('ShowSmsAccount',_0x564f77[_0x251f('0x18')],_0x4f5906);_0x19de65(_0x122f3b[_0x251f('0x16')](0x1f4,_0x564f77[_0x251f('0x18')]));});});};
\ No newline at end of file
+var _0x19ed=['http','redis','localhost','socket.io-emitter','./smsAccount.socket','request','then','info','SmsAccount,\x20%s,\x20%s','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','SmsAccount','find','options','where','attributes','include','model','map','debug','ShowSmsAccount','lodash','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client'];(function(_0x1443eb,_0x203408){var _0x2b8810=function(_0x48bc4e){while(--_0x48bc4e){_0x1443eb['push'](_0x1443eb['shift']());}};_0x2b8810(++_0x203408);}(_0x19ed,0x121));var _0xd19e=function(_0x5bf665,_0x3113cb){_0x5bf665=_0x5bf665-0x0;var _0x2215a6=_0x19ed[_0x5bf665];return _0x2215a6;};'use strict';var _=require(_0xd19e('0x0'));var util=require('util');var moment=require(_0xd19e('0x1'));var BPromise=require('bluebird');var rs=require(_0xd19e('0x2'));var fs=require('fs');var Redis=require(_0xd19e('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xd19e('0x4'))(_0xd19e('0x5'));var config=require(_0xd19e('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xd19e('0x7')][_0xd19e('0x8')]({'port':0x232a});config[_0xd19e('0x9')]=_['defaults'](config['redis'],{'host':_0xd19e('0xa'),'port':0x18eb});var socket=require(_0xd19e('0xb'))(new Redis(config[_0xd19e('0x9')]));require(_0xd19e('0xc'))['register'](socket);function respondWithRpcPromise(_0x5412aa,_0x44e8b5,_0x2b4535){return new BPromise(function(_0x435c75,_0x4ad75a){return client[_0xd19e('0xd')](_0x5412aa,_0x2b4535)[_0xd19e('0xe')](function(_0x2f12b2){logger[_0xd19e('0xf')](_0xd19e('0x10'),_0x44e8b5,'request\x20sent');logger['debug'](_0xd19e('0x11'),_0x44e8b5,_0xd19e('0x12'),JSON[_0xd19e('0x13')](_0x2f12b2));if(_0x2f12b2[_0xd19e('0x14')]){if(_0x2f12b2['error']['code']===0x1f4){logger[_0xd19e('0x14')]('SmsAccount,\x20%s,\x20%s',_0x44e8b5,_0x2f12b2[_0xd19e('0x14')]['message']);return _0x4ad75a(_0x2f12b2['error'][_0xd19e('0x15')]);}logger[_0xd19e('0x14')](_0xd19e('0x10'),_0x44e8b5,_0x2f12b2[_0xd19e('0x14')]['message']);return _0x435c75(_0x2f12b2[_0xd19e('0x14')][_0xd19e('0x15')]);}else{logger[_0xd19e('0xf')](_0xd19e('0x10'),_0x44e8b5,'request\x20sent');_0x435c75(_0x2f12b2['result'][_0xd19e('0x15')]);}})[_0xd19e('0x16')](function(_0x55c2a4){logger[_0xd19e('0x14')](_0xd19e('0x10'),_0x44e8b5,_0x55c2a4);_0x4ad75a(_0x55c2a4);});});}exports['ShowSmsAccount']=function(_0x3973f6){var _0x495a32=this;return new Promise(function(_0x256a6c,_0x4f29fd){return db[_0xd19e('0x17')][_0xd19e('0x18')]({'raw':_0x3973f6[_0xd19e('0x19')]?_0x3973f6[_0xd19e('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x3973f6[_0xd19e('0x19')]?_0x3973f6[_0xd19e('0x19')][_0xd19e('0x1a')]||null:null,'attributes':_0x3973f6['options']?_0x3973f6[_0xd19e('0x19')][_0xd19e('0x1b')]||null:null,'include':_0x3973f6[_0xd19e('0x19')]?_0x3973f6[_0xd19e('0x19')][_0xd19e('0x1c')]?_['map'](_0x3973f6[_0xd19e('0x19')][_0xd19e('0x1c')],function(_0x2601f8){return{'model':db[_0x2601f8[_0xd19e('0x1d')]],'as':_0x2601f8['as'],'attributes':_0x2601f8[_0xd19e('0x1b')],'include':_0x2601f8[_0xd19e('0x1c')]?_[_0xd19e('0x1e')](_0x2601f8[_0xd19e('0x1c')],function(_0x132830){return{'model':db[_0x132830['model']],'as':_0x132830['as'],'attributes':_0x132830[_0xd19e('0x1b')],'include':_0x132830[_0xd19e('0x1c')]?_[_0xd19e('0x1e')](_0x132830['include'],function(_0x5b4744){return{'model':db[_0x5b4744['model']],'as':_0x5b4744['as'],'attributes':_0x5b4744[_0xd19e('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xd19e('0xe')](function(_0x4cb1c5){logger[_0xd19e('0xf')]('ShowSmsAccount',_0x3973f6);logger[_0xd19e('0x1f')](_0xd19e('0x20'),_0x3973f6,JSON['stringify'](_0x4cb1c5));_0x256a6c(_0x4cb1c5);})['catch'](function(_0x4bdfd0){logger[_0xd19e('0x14')](_0xd19e('0x20'),_0x4bdfd0[_0xd19e('0x15')],_0x3973f6);_0x4f29fd(_0x495a32[_0xd19e('0x14')](0x1f4,_0x4bdfd0[_0xd19e('0x15')]));});});};
\ No newline at end of file
index 2bbc6af..93b1628 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xa9e0[_0xc6be3a];return _0x56a310;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index b931a66..15d2a03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['path','connect-timeout','express','../../components/auth/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','exports','multer'];(function(_0x12363c,_0x464c7b){var _0x2ab2c2=function(_0x40e03f){while(--_0x40e03f){_0x12363c['push'](_0x12363c['shift']());}};_0x2ab2c2(++_0x464c7b);}(_0x3e74,0x175));var _0x43e7=function(_0x1937eb,_0x1a0b44){_0x1937eb=_0x1937eb-0x0;var _0x4c4f4b=_0x3e74[_0x1937eb];return _0x4c4f4b;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0xc')]('/',auth[_0x43e7('0x8')](),controller['create']);router[_0x43e7('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x43e7('0xe')]);router[_0x43e7('0xf')]('/:id',auth[_0x43e7('0x8')](),controller['destroy']);module[_0x43e7('0x10')]=router;
\ No newline at end of file
+var _0x008c=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','post','put','/:id'];(function(_0x14e7c9,_0x1c1c60){var _0x5386e6=function(_0x4769d3){while(--_0x4769d3){_0x14e7c9['push'](_0x14e7c9['shift']());}};_0x5386e6(++_0x1c1c60);}(_0x008c,0x188));var _0xc008=function(_0x47f7f5,_0xa5caf){_0x47f7f5=_0x47f7f5-0x0;var _0x52fe6b=_0x008c[_0x47f7f5];return _0x52fe6b;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/:id',auth[_0xc008('0xb')](),controller['show']);router[_0xc008('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc008('0xe')](_0xc008('0xf'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xc008('0xf'),auth[_0xc008('0xb')](),controller['destroy']);module[_0xc008('0x10')]=router;
\ No newline at end of file
index fb0ec9c..24bb0ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bed=['STRING','sequelize','INTEGER','noop'];(function(_0x138293,_0x197e7f){var _0x34c4a2=function(_0x20192b){while(--_0x20192b){_0x138293['push'](_0x138293['shift']());}};_0x34c4a2(++_0x197e7f);}(_0x7bed,0xad));var _0xd7be=function(_0x2c341b,_0x4e3cba){_0x2c341b=_0x2c341b-0x0;var _0x39b548=_0x7bed[_0x2c341b];return _0x39b548;};'use strict';var Sequelize=require(_0xd7be('0x0'));module['exports']={'priority':{'type':Sequelize[_0xd7be('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xd7be('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xd7be('0x3')]},'interval':{'type':Sequelize[_0xd7be('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x2455=['*,*,*,*','sequelize','exports','INTEGER','STRING','noop'];(function(_0x200f51,_0x2fc5bf){var _0x1797fb=function(_0x4f2fe8){while(--_0x4f2fe8){_0x200f51['push'](_0x200f51['shift']());}};_0x1797fb(++_0x2fc5bf);}(_0x2455,0xd3));var _0x5245=function(_0x2beeb9,_0x415c85){_0x2beeb9=_0x2beeb9-0x0;var _0x3f7f25=_0x2455[_0x2beeb9];return _0x3f7f25;};'use strict';var Sequelize=require(_0x5245('0x0'));module[_0x5245('0x1')]={'priority':{'type':Sequelize[_0x5245('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x5245('0x3')],'allowNull':![],'defaultValue':_0x5245('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x5245('0x5')}};
\ No newline at end of file
index aebe0c7..8806dd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00f1=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','count','set','Content-Range','apply','reject','save','then','destroy','error','name','send','index','SmsApplication','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','pick','map','filter','merge','includeAll','include','findAll','rows','catch','show','params','options','create','body','find'];(function(_0x44e6b0,_0x44e42c){var _0x5a734d=function(_0x1fe5c3){while(--_0x1fe5c3){_0x44e6b0['push'](_0x44e6b0['shift']());}};_0x5a734d(++_0x44e42c);}(_0x00f1,0x8c));var _0x100f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x00f1[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x100f('0x0'));var rimraf=require(_0x100f('0x1'));var zipdir=require(_0x100f('0x2'));var jsonpatch=require(_0x100f('0x3'));var rp=require('request-promise');var moment=require(_0x100f('0x4'));var BPromise=require(_0x100f('0x5'));var Mustache=require('mustache');var util=require(_0x100f('0x6'));var path=require(_0x100f('0x7'));var sox=require('sox');var csv=require(_0x100f('0x8'));var ejs=require(_0x100f('0x9'));var fs=require('fs');var fs_extra=require(_0x100f('0xa'));var _=require(_0x100f('0xb'));var squel=require(_0x100f('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x100f('0xd'));var toCsv=require(_0x100f('0x8'));var querystring=require(_0x100f('0xe'));var Papa=require(_0x100f('0xf'));var Redis=require(_0x100f('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x100f('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x100f('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x100f('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x100f('0x14'))['db'];function respondWithStatusCode(_0x3a129e,_0x57ff64){_0x57ff64=_0x57ff64||0xcc;return function(_0x10f72b){if(_0x10f72b){return _0x3a129e[_0x100f('0x15')](_0x57ff64);}return _0x3a129e[_0x100f('0x16')](_0x57ff64)[_0x100f('0x17')]();};}function respondWithResult(_0x534acf,_0x2c0042){_0x2c0042=_0x2c0042||0xc8;return function(_0xec04e3){if(_0xec04e3){return _0x534acf[_0x100f('0x16')](_0x2c0042)[_0x100f('0x18')](_0xec04e3);}};}function respondWithFilteredResult(_0x217116,_0x91f093){return function(_0x15ac04){if(_0x15ac04){var _0x545bc3=typeof _0x91f093[_0x100f('0x19')]==='undefined'&&typeof _0x91f093['limit']==='undefined';var _0xc1df41=_0x15ac04[_0x100f('0x1a')];var _0x431e7f=_0x545bc3?0x0:_0x91f093[_0x100f('0x19')];var _0x109256=_0x545bc3?_0x15ac04[_0x100f('0x1a')]:_0x91f093[_0x100f('0x19')]+_0x91f093['limit'];var _0x23bc67;if(_0x109256>=_0xc1df41){_0x109256=_0xc1df41;_0x23bc67=0xc8;}else{_0x23bc67=0xce;}_0x217116[_0x100f('0x16')](_0x23bc67);return _0x217116[_0x100f('0x1b')](_0x100f('0x1c'),_0x431e7f+'-'+_0x109256+'/'+_0xc1df41)[_0x100f('0x18')](_0x15ac04);}return null;};}function patchUpdates(_0x7b3e26){return function(_0x2527b1){try{jsonpatch[_0x100f('0x1d')](_0x2527b1,_0x7b3e26,!![]);}catch(_0x25c3cc){return BPromise[_0x100f('0x1e')](_0x25c3cc);}return _0x2527b1[_0x100f('0x1f')]();};}function saveUpdates(_0x1da7cf,_0x3d6284){return function(_0xd8bf89){if(_0xd8bf89){return _0xd8bf89['update'](_0x1da7cf)[_0x100f('0x20')](function(_0x4e6901){return _0x4e6901;});}return null;};}function removeEntity(_0x1bb33b,_0x156cc0){return function(_0x5d0e6b){if(_0x5d0e6b){return _0x5d0e6b[_0x100f('0x21')]()[_0x100f('0x20')](function(){_0x1bb33b['status'](0xcc)[_0x100f('0x17')]();});}};}function handleEntityNotFound(_0x37fb90,_0x9428d4){return function(_0x30a515){if(!_0x30a515){_0x37fb90[_0x100f('0x15')](0x194);}return _0x30a515;};}function handleError(_0x266ebf,_0x1c47be){_0x1c47be=_0x1c47be||0x1f4;return function(_0x110d21){logger[_0x100f('0x22')](_0x110d21['stack']);if(_0x110d21[_0x100f('0x23')]){delete _0x110d21[_0x100f('0x23')];}_0x266ebf[_0x100f('0x16')](_0x1c47be)[_0x100f('0x24')](_0x110d21);};}exports[_0x100f('0x25')]=function(_0x7040a8,_0x17b1fc){var _0x2dee22={},_0x729340={},_0x275f00={'count':0x0,'rows':[]};var _0x572a88=_['map'](db[_0x100f('0x26')][_0x100f('0x27')],function(_0x5d651c){return{'name':_0x5d651c[_0x100f('0x28')],'type':_0x5d651c[_0x100f('0x29')]['key']};});_0x729340[_0x100f('0x2a')]=_['map'](_0x572a88,_0x100f('0x23'));_0x729340['query']=_[_0x100f('0x2b')](_0x7040a8[_0x100f('0x2c')]);_0x729340[_0x100f('0x2d')]=_[_0x100f('0x2e')](_0x729340[_0x100f('0x2a')],_0x729340[_0x100f('0x2c')]);_0x2dee22[_0x100f('0x2f')]=_[_0x100f('0x2e')](_0x729340[_0x100f('0x2a')],qs[_0x100f('0x30')](_0x7040a8[_0x100f('0x2c')][_0x100f('0x30')]));_0x2dee22[_0x100f('0x2f')]=_0x2dee22[_0x100f('0x2f')][_0x100f('0x31')]?_0x2dee22[_0x100f('0x2f')]:_0x729340['model'];if(!_0x7040a8[_0x100f('0x2c')][_0x100f('0x32')](_0x100f('0x33'))){_0x2dee22[_0x100f('0x34')]=qs[_0x100f('0x34')](_0x7040a8[_0x100f('0x2c')][_0x100f('0x34')]);_0x2dee22[_0x100f('0x19')]=qs[_0x100f('0x19')](_0x7040a8['query'][_0x100f('0x19')]);}_0x2dee22['order']=qs[_0x100f('0x35')](_0x7040a8[_0x100f('0x2c')][_0x100f('0x35')]);_0x2dee22[_0x100f('0x36')]=qs[_0x100f('0x2d')](_[_0x100f('0x37')](_0x7040a8[_0x100f('0x2c')],_0x729340['filters']),_0x572a88);if(_0x7040a8['query']['filter']){_0x2dee22[_0x100f('0x36')]=_['merge'](_0x2dee22[_0x100f('0x36')],{'$or':_[_0x100f('0x38')](_0x572a88,function(_0x46b982){if(_0x46b982[_0x100f('0x29')]!=='VIRTUAL'){var _0x351cec={};_0x351cec[_0x46b982[_0x100f('0x23')]]={'$like':'%'+_0x7040a8[_0x100f('0x2c')][_0x100f('0x39')]+'%'};return _0x351cec;}})});}_0x2dee22=_[_0x100f('0x3a')]({},_0x2dee22,_0x7040a8['options']);var _0x493f3d={'where':_0x2dee22[_0x100f('0x36')]};return db[_0x100f('0x26')][_0x100f('0x1a')](_0x493f3d)[_0x100f('0x20')](function(_0x3dae67){_0x275f00[_0x100f('0x1a')]=_0x3dae67;if(_0x7040a8[_0x100f('0x2c')][_0x100f('0x3b')]){_0x2dee22[_0x100f('0x3c')]=[{'all':!![]}];}return db[_0x100f('0x26')][_0x100f('0x3d')](_0x2dee22);})[_0x100f('0x20')](function(_0x1c13ed){_0x275f00[_0x100f('0x3e')]=_0x1c13ed;return _0x275f00;})[_0x100f('0x20')](respondWithFilteredResult(_0x17b1fc,_0x2dee22))[_0x100f('0x3f')](handleError(_0x17b1fc,null));};exports[_0x100f('0x40')]=function(_0x12d22d,_0x1fb387){var _0x3e48c7={'raw':!![],'where':{'id':_0x12d22d[_0x100f('0x41')]['id']}},_0x169675={};_0x169675[_0x100f('0x2a')]=_[_0x100f('0x2b')](db[_0x100f('0x26')]['rawAttributes']);_0x169675[_0x100f('0x2c')]=_[_0x100f('0x2b')](_0x12d22d[_0x100f('0x2c')]);_0x169675[_0x100f('0x2d')]=_['intersection'](_0x169675['model'],_0x169675['query']);_0x3e48c7['attributes']=_[_0x100f('0x2e')](_0x169675[_0x100f('0x2a')],qs[_0x100f('0x30')](_0x12d22d[_0x100f('0x2c')][_0x100f('0x30')]));_0x3e48c7[_0x100f('0x2f')]=_0x3e48c7['attributes'][_0x100f('0x31')]?_0x3e48c7['attributes']:_0x169675['model'];if(_0x12d22d['query'][_0x100f('0x3b')]){_0x3e48c7['include']=[{'all':!![]}];}_0x3e48c7=_[_0x100f('0x3a')]({},_0x3e48c7,_0x12d22d[_0x100f('0x42')]);return db[_0x100f('0x26')]['find'](_0x3e48c7)[_0x100f('0x20')](handleEntityNotFound(_0x1fb387,null))['then'](respondWithResult(_0x1fb387,null))[_0x100f('0x3f')](handleError(_0x1fb387,null));};exports[_0x100f('0x43')]=function(_0xd45b64,_0x47a2b3){return db[_0x100f('0x26')][_0x100f('0x43')](_0xd45b64[_0x100f('0x44')],{})[_0x100f('0x20')](respondWithResult(_0x47a2b3,0xc9))[_0x100f('0x3f')](handleError(_0x47a2b3,null));};exports['update']=function(_0x233e9c,_0x13a700){if(_0x233e9c['body']['id']){delete _0x233e9c[_0x100f('0x44')]['id'];}return db[_0x100f('0x26')][_0x100f('0x45')]({'where':{'id':_0x233e9c[_0x100f('0x41')]['id']}})['then'](handleEntityNotFound(_0x13a700,null))[_0x100f('0x20')](saveUpdates(_0x233e9c[_0x100f('0x44')],null))[_0x100f('0x20')](respondWithResult(_0x13a700,null))[_0x100f('0x3f')](handleError(_0x13a700,null));};exports[_0x100f('0x21')]=function(_0x62b722,_0x5ef091){return db[_0x100f('0x26')][_0x100f('0x45')]({'where':{'id':_0x62b722[_0x100f('0x41')]['id']}})[_0x100f('0x20')](handleEntityNotFound(_0x5ef091,null))[_0x100f('0x20')](removeEntity(_0x5ef091,null))[_0x100f('0x3f')](handleError(_0x5ef091,null));};
\ No newline at end of file
+var _0x7ef8=['model','map','query','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','name','index','SmsApplication','rawAttributes','fieldName','type'];(function(_0x3fbb91,_0x5ec106){var _0x3eb213=function(_0x118b9f){while(--_0x118b9f){_0x3fbb91['push'](_0x3fbb91['shift']());}};_0x3eb213(++_0x5ec106);}(_0x7ef8,0x13c));var _0x87ef=function(_0x67cfa6,_0x528438){_0x67cfa6=_0x67cfa6-0x0;var _0x529112=_0x7ef8[_0x67cfa6];return _0x529112;};'use strict';var emlformat=require(_0x87ef('0x0'));var rimraf=require(_0x87ef('0x1'));var zipdir=require(_0x87ef('0x2'));var jsonpatch=require(_0x87ef('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x87ef('0x4'));var path=require('path');var sox=require(_0x87ef('0x5'));var csv=require(_0x87ef('0x6'));var ejs=require(_0x87ef('0x7'));var fs=require('fs');var fs_extra=require(_0x87ef('0x8'));var _=require(_0x87ef('0x9'));var squel=require(_0x87ef('0xa'));var crypto=require(_0x87ef('0xb'));var jsforce=require(_0x87ef('0xc'));var deskjs=require(_0x87ef('0xd'));var toCsv=require(_0x87ef('0x6'));var querystring=require('querystring');var Papa=require(_0x87ef('0xe'));var Redis=require('ioredis');var authService=require(_0x87ef('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x87ef('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x87ef('0x11'))(_0x87ef('0x12'));var utils=require(_0x87ef('0x13'));var config=require(_0x87ef('0x14'));var licenseUtil=require(_0x87ef('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x12e951,_0x7667e0){_0x7667e0=_0x7667e0||0xcc;return function(_0x1a97ad){if(_0x1a97ad){return _0x12e951['sendStatus'](_0x7667e0);}return _0x12e951['status'](_0x7667e0)[_0x87ef('0x16')]();};}function respondWithResult(_0xa33b33,_0x538f26){_0x538f26=_0x538f26||0xc8;return function(_0x34e061){if(_0x34e061){return _0xa33b33[_0x87ef('0x17')](_0x538f26)['json'](_0x34e061);}};}function respondWithFilteredResult(_0x386252,_0x1b8c88){return function(_0x3da5fb){if(_0x3da5fb){var _0x6bac31=typeof _0x1b8c88[_0x87ef('0x18')]===_0x87ef('0x19')&&typeof _0x1b8c88[_0x87ef('0x1a')]===_0x87ef('0x19');var _0x5d2896=_0x3da5fb[_0x87ef('0x1b')];var _0x337b83=_0x6bac31?0x0:_0x1b8c88[_0x87ef('0x18')];var _0x298c34=_0x6bac31?_0x3da5fb[_0x87ef('0x1b')]:_0x1b8c88[_0x87ef('0x18')]+_0x1b8c88[_0x87ef('0x1a')];var _0x2b9969;if(_0x298c34>=_0x5d2896){_0x298c34=_0x5d2896;_0x2b9969=0xc8;}else{_0x2b9969=0xce;}_0x386252['status'](_0x2b9969);return _0x386252[_0x87ef('0x1c')](_0x87ef('0x1d'),_0x337b83+'-'+_0x298c34+'/'+_0x5d2896)[_0x87ef('0x1e')](_0x3da5fb);}return null;};}function patchUpdates(_0x188996){return function(_0x4acdfb){try{jsonpatch[_0x87ef('0x1f')](_0x4acdfb,_0x188996,!![]);}catch(_0x1d8eb0){return BPromise[_0x87ef('0x20')](_0x1d8eb0);}return _0x4acdfb[_0x87ef('0x21')]();};}function saveUpdates(_0x3ed173,_0x98b148){return function(_0x1dad16){if(_0x1dad16){return _0x1dad16[_0x87ef('0x22')](_0x3ed173)[_0x87ef('0x23')](function(_0x332d8e){return _0x332d8e;});}return null;};}function removeEntity(_0x301e4c,_0x18313b){return function(_0x2f6e47){if(_0x2f6e47){return _0x2f6e47[_0x87ef('0x24')]()[_0x87ef('0x23')](function(){_0x301e4c[_0x87ef('0x17')](0xcc)[_0x87ef('0x16')]();});}};}function handleEntityNotFound(_0x1b68e9,_0x284804){return function(_0x314680){if(!_0x314680){_0x1b68e9[_0x87ef('0x25')](0x194);}return _0x314680;};}function handleError(_0x32d0bf,_0xf6c9e5){_0xf6c9e5=_0xf6c9e5||0x1f4;return function(_0x2a49ff){logger['error'](_0x2a49ff['stack']);if(_0x2a49ff['name']){delete _0x2a49ff[_0x87ef('0x26')];}_0x32d0bf['status'](_0xf6c9e5)['send'](_0x2a49ff);};}exports[_0x87ef('0x27')]=function(_0x5b4829,_0x3704c3){var _0x1c089a={},_0x9f447c={},_0x5d48ad={'count':0x0,'rows':[]};var _0x5a2842=_['map'](db[_0x87ef('0x28')][_0x87ef('0x29')],function(_0x3bae5c){return{'name':_0x3bae5c[_0x87ef('0x2a')],'type':_0x3bae5c[_0x87ef('0x2b')]['key']};});_0x9f447c[_0x87ef('0x2c')]=_[_0x87ef('0x2d')](_0x5a2842,'name');_0x9f447c['query']=_['keys'](_0x5b4829[_0x87ef('0x2e')]);_0x9f447c['filters']=_[_0x87ef('0x2f')](_0x9f447c['model'],_0x9f447c[_0x87ef('0x2e')]);_0x1c089a['attributes']=_['intersection'](_0x9f447c[_0x87ef('0x2c')],qs[_0x87ef('0x30')](_0x5b4829[_0x87ef('0x2e')][_0x87ef('0x30')]));_0x1c089a[_0x87ef('0x31')]=_0x1c089a[_0x87ef('0x31')][_0x87ef('0x32')]?_0x1c089a[_0x87ef('0x31')]:_0x9f447c[_0x87ef('0x2c')];if(!_0x5b4829['query'][_0x87ef('0x33')]('nolimit')){_0x1c089a[_0x87ef('0x1a')]=qs['limit'](_0x5b4829[_0x87ef('0x2e')]['limit']);_0x1c089a[_0x87ef('0x18')]=qs[_0x87ef('0x18')](_0x5b4829[_0x87ef('0x2e')][_0x87ef('0x18')]);}_0x1c089a[_0x87ef('0x34')]=qs[_0x87ef('0x35')](_0x5b4829[_0x87ef('0x2e')][_0x87ef('0x35')]);_0x1c089a[_0x87ef('0x36')]=qs['filters'](_[_0x87ef('0x37')](_0x5b4829[_0x87ef('0x2e')],_0x9f447c[_0x87ef('0x38')]),_0x5a2842);if(_0x5b4829['query'][_0x87ef('0x39')]){_0x1c089a[_0x87ef('0x36')]=_[_0x87ef('0x3a')](_0x1c089a['where'],{'$or':_[_0x87ef('0x2d')](_0x5a2842,function(_0x928ebc){if(_0x928ebc[_0x87ef('0x2b')]!==_0x87ef('0x3b')){var _0x4085e1={};_0x4085e1[_0x928ebc[_0x87ef('0x26')]]={'$like':'%'+_0x5b4829[_0x87ef('0x2e')][_0x87ef('0x39')]+'%'};return _0x4085e1;}})});}_0x1c089a=_[_0x87ef('0x3a')]({},_0x1c089a,_0x5b4829[_0x87ef('0x3c')]);var _0x425534={'where':_0x1c089a[_0x87ef('0x36')]};return db[_0x87ef('0x28')][_0x87ef('0x1b')](_0x425534)[_0x87ef('0x23')](function(_0x4b9ddc){_0x5d48ad['count']=_0x4b9ddc;if(_0x5b4829['query'][_0x87ef('0x3d')]){_0x1c089a[_0x87ef('0x3e')]=[{'all':!![]}];}return db[_0x87ef('0x28')][_0x87ef('0x3f')](_0x1c089a);})[_0x87ef('0x23')](function(_0x175a2a){_0x5d48ad[_0x87ef('0x40')]=_0x175a2a;return _0x5d48ad;})['then'](respondWithFilteredResult(_0x3704c3,_0x1c089a))[_0x87ef('0x41')](handleError(_0x3704c3,null));};exports[_0x87ef('0x42')]=function(_0x3f81b6,_0x49042d){var _0x544bde={'raw':!![],'where':{'id':_0x3f81b6[_0x87ef('0x43')]['id']}},_0x377042={};_0x377042[_0x87ef('0x2c')]=_[_0x87ef('0x44')](db[_0x87ef('0x28')][_0x87ef('0x29')]);_0x377042['query']=_[_0x87ef('0x44')](_0x3f81b6[_0x87ef('0x2e')]);_0x377042['filters']=_[_0x87ef('0x2f')](_0x377042[_0x87ef('0x2c')],_0x377042[_0x87ef('0x2e')]);_0x544bde[_0x87ef('0x31')]=_[_0x87ef('0x2f')](_0x377042[_0x87ef('0x2c')],qs[_0x87ef('0x30')](_0x3f81b6[_0x87ef('0x2e')][_0x87ef('0x30')]));_0x544bde[_0x87ef('0x31')]=_0x544bde[_0x87ef('0x31')]['length']?_0x544bde[_0x87ef('0x31')]:_0x377042[_0x87ef('0x2c')];if(_0x3f81b6['query'][_0x87ef('0x3d')]){_0x544bde[_0x87ef('0x3e')]=[{'all':!![]}];}_0x544bde=_[_0x87ef('0x3a')]({},_0x544bde,_0x3f81b6['options']);return db[_0x87ef('0x28')][_0x87ef('0x45')](_0x544bde)[_0x87ef('0x23')](handleEntityNotFound(_0x49042d,null))['then'](respondWithResult(_0x49042d,null))[_0x87ef('0x41')](handleError(_0x49042d,null));};exports[_0x87ef('0x46')]=function(_0x232c23,_0x5d88f3){return db[_0x87ef('0x28')][_0x87ef('0x46')](_0x232c23[_0x87ef('0x47')],{})['then'](respondWithResult(_0x5d88f3,0xc9))[_0x87ef('0x41')](handleError(_0x5d88f3,null));};exports['update']=function(_0x521cd8,_0x22b374){if(_0x521cd8['body']['id']){delete _0x521cd8[_0x87ef('0x47')]['id'];}return db['SmsApplication'][_0x87ef('0x45')]({'where':{'id':_0x521cd8[_0x87ef('0x43')]['id']}})[_0x87ef('0x23')](handleEntityNotFound(_0x22b374,null))[_0x87ef('0x23')](saveUpdates(_0x521cd8['body'],null))[_0x87ef('0x23')](respondWithResult(_0x22b374,null))[_0x87ef('0x41')](handleError(_0x22b374,null));};exports['destroy']=function(_0x3eb215,_0x2f56c){return db['SmsApplication']['find']({'where':{'id':_0x3eb215[_0x87ef('0x43')]['id']}})[_0x87ef('0x23')](handleEntityNotFound(_0x2f56c,null))[_0x87ef('0x23')](removeEntity(_0x2f56c,null))[_0x87ef('0x41')](handleError(_0x2f56c,null));};
\ No newline at end of file
index a6353d9..3be951e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x993c=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./smsApplication.attributes','exports','define','SmsApplication','sms_applications'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x993c,0x97));var _0xc993=function(_0x1826b6,_0x2a0cf0){_0x1826b6=_0x1826b6-0x0;var _0x578c34=_0x993c[_0x1826b6];return _0x578c34;};'use strict';var _=require(_0xc993('0x0'));var util=require(_0xc993('0x1'));var logger=require(_0xc993('0x2'))(_0xc993('0x3'));var moment=require('moment');var BPromise=require(_0xc993('0x4'));var rp=require(_0xc993('0x5'));var fs=require('fs');var path=require(_0xc993('0x6'));var rimraf=require(_0xc993('0x7'));var config=require(_0xc993('0x8'));var attributes=require(_0xc993('0x9'));module[_0xc993('0xa')]=function(_0x6d5eb,_0x3ef79b){return _0x6d5eb[_0xc993('0xb')](_0xc993('0xc'),attributes,{'tableName':_0xc993('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xc993('0xe')});};
\ No newline at end of file
+var _0xd0f7=['request-promise','path','rimraf','../../config/environment','./smsApplication.attributes','exports','define','SmsApplication','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment'];(function(_0x4eb6c8,_0x5fb345){var _0x2595ad=function(_0x202e2b){while(--_0x202e2b){_0x4eb6c8['push'](_0x4eb6c8['shift']());}};_0x2595ad(++_0x5fb345);}(_0xd0f7,0x19f));var _0x7d0f=function(_0x4e2940,_0x951b3e){_0x4e2940=_0x4e2940-0x0;var _0xfc6098=_0xd0f7[_0x4e2940];return _0xfc6098;};'use strict';var _=require(_0x7d0f('0x0'));var util=require(_0x7d0f('0x1'));var logger=require(_0x7d0f('0x2'))(_0x7d0f('0x3'));var moment=require(_0x7d0f('0x4'));var BPromise=require('bluebird');var rp=require(_0x7d0f('0x5'));var fs=require('fs');var path=require(_0x7d0f('0x6'));var rimraf=require(_0x7d0f('0x7'));var config=require(_0x7d0f('0x8'));var attributes=require(_0x7d0f('0x9'));module[_0x7d0f('0xa')]=function(_0x27a8a6,_0xbbc916){return _0x27a8a6[_0x7d0f('0xb')](_0x7d0f('0xc'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7d0f('0xd'),'collate':_0x7d0f('0xe')});};
\ No newline at end of file
index c428623..603f8df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d0c=['../../config/environment','http','request','then','info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x106245,_0xb86bf6){var _0x4c1289=function(_0x4b38ef){while(--_0x4b38ef){_0x106245['push'](_0x106245['shift']());}};_0x4c1289(++_0xb86bf6);}(_0x6d0c,0x8c));var _0xc6d0=function(_0x318f6e,_0x8a41fb){_0x318f6e=_0x318f6e-0x0;var _0x567aff=_0x6d0c[_0x318f6e];return _0x567aff;};'use strict';var _=require(_0xc6d0('0x0'));var util=require(_0xc6d0('0x1'));var moment=require(_0xc6d0('0x2'));var BPromise=require(_0xc6d0('0x3'));var rs=require(_0xc6d0('0x4'));var fs=require('fs');var Redis=require(_0xc6d0('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc6d0('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xc6d0('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xc6d0('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x40ba33,_0xf1bb4f,_0x39e8be){return new BPromise(function(_0xbd2213,_0x1cf577){return client[_0xc6d0('0x9')](_0x40ba33,_0x39e8be)[_0xc6d0('0xa')](function(_0x1452b5){logger[_0xc6d0('0xb')](_0xc6d0('0xc'),_0xf1bb4f,_0xc6d0('0xd'));logger[_0xc6d0('0xe')](_0xc6d0('0xf'),_0xf1bb4f,_0xc6d0('0xd'),JSON[_0xc6d0('0x10')](_0x1452b5));if(_0x1452b5[_0xc6d0('0x11')]){if(_0x1452b5[_0xc6d0('0x11')][_0xc6d0('0x12')]===0x1f4){logger['error']('SmsApplication,\x20%s,\x20%s',_0xf1bb4f,_0x1452b5[_0xc6d0('0x11')][_0xc6d0('0x13')]);return _0x1cf577(_0x1452b5['error'][_0xc6d0('0x13')]);}logger[_0xc6d0('0x11')](_0xc6d0('0xc'),_0xf1bb4f,_0x1452b5['error']['message']);return _0xbd2213(_0x1452b5[_0xc6d0('0x11')][_0xc6d0('0x13')]);}else{logger[_0xc6d0('0xb')]('SmsApplication,\x20%s,\x20%s',_0xf1bb4f,_0xc6d0('0xd'));_0xbd2213(_0x1452b5['result'][_0xc6d0('0x13')]);}})[_0xc6d0('0x14')](function(_0x34ea2f){logger[_0xc6d0('0x11')](_0xc6d0('0xc'),_0xf1bb4f,_0x34ea2f);_0x1cf577(_0x34ea2f);});});}
\ No newline at end of file
+var _0xc5b3=['client','request','then','info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x2a8c21,_0x163576){var _0x5f3061=function(_0x4dc8eb){while(--_0x4dc8eb){_0x2a8c21['push'](_0x2a8c21['shift']());}};_0x5f3061(++_0x163576);}(_0xc5b3,0x1ee));var _0x3c5b=function(_0x126fb9,_0x122c59){_0x126fb9=_0x126fb9-0x0;var _0xc8a3b1=_0xc5b3[_0x126fb9];return _0xc8a3b1;};'use strict';var _=require(_0x3c5b('0x0'));var util=require(_0x3c5b('0x1'));var moment=require(_0x3c5b('0x2'));var BPromise=require(_0x3c5b('0x3'));var rs=require(_0x3c5b('0x4'));var fs=require('fs');var Redis=require(_0x3c5b('0x5'));var db=require(_0x3c5b('0x6'))['db'];var utils=require(_0x3c5b('0x7'));var logger=require('../../config/logger')(_0x3c5b('0x8'));var config=require(_0x3c5b('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3c5b('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x7a363e,_0x4730e9,_0x894f97){return new BPromise(function(_0xae86a0,_0x32586d){return client[_0x3c5b('0xb')](_0x7a363e,_0x894f97)[_0x3c5b('0xc')](function(_0x5f5df9){logger[_0x3c5b('0xd')](_0x3c5b('0xe'),_0x4730e9,_0x3c5b('0xf'));logger[_0x3c5b('0x10')](_0x3c5b('0x11'),_0x4730e9,'request\x20sent',JSON[_0x3c5b('0x12')](_0x5f5df9));if(_0x5f5df9[_0x3c5b('0x13')]){if(_0x5f5df9[_0x3c5b('0x13')][_0x3c5b('0x14')]===0x1f4){logger[_0x3c5b('0x13')](_0x3c5b('0xe'),_0x4730e9,_0x5f5df9[_0x3c5b('0x13')]['message']);return _0x32586d(_0x5f5df9[_0x3c5b('0x13')][_0x3c5b('0x15')]);}logger[_0x3c5b('0x13')](_0x3c5b('0xe'),_0x4730e9,_0x5f5df9['error'][_0x3c5b('0x15')]);return _0xae86a0(_0x5f5df9['error'][_0x3c5b('0x15')]);}else{logger[_0x3c5b('0xd')]('SmsApplication,\x20%s,\x20%s',_0x4730e9,_0x3c5b('0xf'));_0xae86a0(_0x5f5df9[_0x3c5b('0x16')]['message']);}})[_0x3c5b('0x17')](function(_0x1cbe52){logger[_0x3c5b('0x13')]('SmsApplication,\x20%s,\x20%s',_0x4730e9,_0x1cbe52);_0x32586d(_0x1cbe52);});});}
\ No newline at end of file
index fdfa439..b32be06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb03e=['exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','smsinteraction:update','update','delete','smsinteraction:destroy','destroy','removeTags'];(function(_0x41a5a0,_0x3bee12){var _0x2190f8=function(_0x3019e1){while(--_0x3019e1){_0x41a5a0['push'](_0x41a5a0['shift']());}};_0x2190f8(++_0x3bee12);}(_0xb03e,0x1eb));var _0xeb03=function(_0x4a233d,_0x27cd07){_0x4a233d=_0x4a233d-0x0;var _0x3371cd=_0xb03e[_0x4a233d];return _0x3371cd;};'use strict';var multer=require('multer');var util=require(_0xeb03('0x0'));var path=require(_0xeb03('0x1'));var timeout=require(_0xeb03('0x2'));var express=require(_0xeb03('0x3'));var router=express[_0xeb03('0x4')]();var fs_extra=require(_0xeb03('0x5'));var auth=require(_0xeb03('0x6'));var interaction=require(_0xeb03('0x7'));var config=require(_0xeb03('0x8'));var controller=require(_0xeb03('0x9'));router[_0xeb03('0xa')]('/',auth[_0xeb03('0xb')](),controller['index']);router[_0xeb03('0xa')](_0xeb03('0xc'),auth[_0xeb03('0xb')](),controller[_0xeb03('0xd')]);router[_0xeb03('0xa')](_0xeb03('0xe'),auth['isAuthenticated'](),controller[_0xeb03('0xf')]);router[_0xeb03('0xa')](_0xeb03('0x10'),auth['isAuthenticated'](),controller[_0xeb03('0x11')]);router['get'](_0xeb03('0x12'),auth[_0xeb03('0xb')](),controller[_0xeb03('0x13')]);router[_0xeb03('0x14')]('/',auth[_0xeb03('0xb')](),controller[_0xeb03('0x15')]);router[_0xeb03('0x14')](_0xeb03('0x10'),auth[_0xeb03('0xb')](),controller[_0xeb03('0x16')]);router[_0xeb03('0x14')](_0xeb03('0x17'),auth['isAuthenticated'](),interaction[_0xeb03('0x18')](_0xeb03('0x19'),_0xeb03('0x1a')),controller[_0xeb03('0x1b')]);router['put'](_0xeb03('0xe'),auth[_0xeb03('0xb')](),interaction[_0xeb03('0x18')]('sms',_0xeb03('0x1c')),controller[_0xeb03('0x1d')]);router[_0xeb03('0x1e')](_0xeb03('0xe'),auth[_0xeb03('0xb')](),interaction[_0xeb03('0x18')](_0xeb03('0x19'),_0xeb03('0x1f')),controller[_0xeb03('0x20')]);router[_0xeb03('0x1e')](_0xeb03('0x17'),auth[_0xeb03('0xb')](),controller[_0xeb03('0x21')]);module[_0xeb03('0x22')]=router;
\ No newline at end of file
+var _0xb10b=['smsinteraction:addtags','addTags','put','update','delete','smsinteraction:destroy','destroy','/:id/tags','removeTags','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','index','isAuthenticated','describe','/:id','show','/:id/messages','/:id/download','post','create','addMessage','tracked','sms'];(function(_0x2ed952,_0x161cd0){var _0x4b0c53=function(_0x5651dc){while(--_0x5651dc){_0x2ed952['push'](_0x2ed952['shift']());}};_0x4b0c53(++_0x161cd0);}(_0xb10b,0x12a));var _0xbb10=function(_0x21bfab,_0x2fee48){_0x21bfab=_0x21bfab-0x0;var _0x4db318=_0xb10b[_0x21bfab];return _0x4db318;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/describe',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0x9')](_0xbb10('0xf'),auth['isAuthenticated'](),controller['getMessages']);router[_0xbb10('0x9')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['download']);router[_0xbb10('0x11')]('/',auth['isAuthenticated'](),controller[_0xbb10('0x12')]);router[_0xbb10('0x11')](_0xbb10('0xf'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x13')]);router[_0xbb10('0x11')]('/:id/tags',auth[_0xbb10('0xb')](),interaction[_0xbb10('0x14')](_0xbb10('0x15'),_0xbb10('0x16')),controller[_0xbb10('0x17')]);router[_0xbb10('0x18')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),interaction[_0xbb10('0x14')](_0xbb10('0x15'),'smsinteraction:update'),controller[_0xbb10('0x19')]);router[_0xbb10('0x1a')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),interaction[_0xbb10('0x14')](_0xbb10('0x15'),_0xbb10('0x1b')),controller[_0xbb10('0x1c')]);router[_0xbb10('0x1a')](_0xbb10('0x1d'),auth['isAuthenticated'](),controller[_0xbb10('0x1e')]);module[_0xbb10('0x1f')]=router;
\ No newline at end of file
index fd49e95..46b6648 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf842=['out','DATE','sequelize','moment','exports','BOOLEAN','STRING','ENUM'];(function(_0x4ce685,_0x1ce061){var _0x5e84c5=function(_0x8f9e2){while(--_0x8f9e2){_0x4ce685['push'](_0x4ce685['shift']());}};_0x5e84c5(++_0x1ce061);}(_0xf842,0x172));var _0x2f84=function(_0x2d34d6,_0x397ff9){_0x2d34d6=_0x2d34d6-0x0;var _0x1d3d12=_0xf842[_0x2d34d6];return _0x1d3d12;};'use strict';var Sequelize=require(_0x2f84('0x0'));var moment=require(_0x2f84('0x1'));module[_0x2f84('0x2')]={'closed':{'type':Sequelize[_0x2f84('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x2f84('0x4')]},'secondDisposition':{'type':Sequelize[_0x2f84('0x4')]},'thirdDisposition':{'type':Sequelize[_0x2f84('0x4')]},'note':{'type':Sequelize[_0x2f84('0x4')]},'phone':{'type':Sequelize[_0x2f84('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x2f84('0x5')]('in',_0x2f84('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x2f84('0x7')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x2f84('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x2f84('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xa786=['DATE','STRING','ENUM','out','exports','BOOLEAN'];(function(_0x5bfecd,_0x5d8ba2){var _0x378f9d=function(_0x469e77){while(--_0x469e77){_0x5bfecd['push'](_0x5bfecd['shift']());}};_0x378f9d(++_0x5d8ba2);}(_0xa786,0x1d2));var _0x6a78=function(_0x211b04,_0x108956){_0x211b04=_0x211b04-0x0;var _0x2c9678=_0xa786[_0x211b04];return _0x2c9678;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x6a78('0x0')]={'closed':{'type':Sequelize[_0x6a78('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x6a78('0x2')]},'disposition':{'type':Sequelize[_0x6a78('0x3')]},'secondDisposition':{'type':Sequelize[_0x6a78('0x3')]},'thirdDisposition':{'type':Sequelize[_0x6a78('0x3')]},'note':{'type':Sequelize[_0x6a78('0x3')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x6a78('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x6a78('0x4')]('in',_0x6a78('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x6a78('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x6a78('0x4')]('in',_0x6a78('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x6a78('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 29659f1..b4fbead 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc32=['ui.SmsInteractionId','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','sms_accounts','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','having','`\x20>\x200','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','value','ContactId','text','Tag','union','User','UserId','buildExpression','start','body','keys','some','compact','isEmpty','SmsAccountId','i.SmsAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','QueryTypes','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','DESC','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','role','user','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','agent','sequelize','toString','merge','a.key','Account.key','Account.mandatoryDisposition','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','c.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','groupBy','push','all','rows','catch','includeAll','include','create','params','destroy','describe','addMessage','SmsMessage','ids','omit','getMessages','findOne','format','YYYY-MM-DD\x20HH:mm:ss','options','findAll','addTags','setTags','spread','emit','smsInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','CmContact','Contact','firstName','Messages','direction','secret','Account','Owner','fullname','get','Sms','N.A.','closed','closedAt','disposition','lastName','out','renderFile','views','transcript-','createPdfFromHTML','log','err','unlinkSync','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./smsInteraction.socket','register','sendStatus','status','end','json','limit','undefined','count','save','update','error','stack','name','map','Tags','TagIds','split','forEach','then','index','SmsInteraction','fieldName','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','offset','sort','where','pick','select','field','color','tools_tags','u.id','u.fullname'];(function(_0x4c4f21,_0x10e296){var _0x1b0a89=function(_0x2d04ba){while(--_0x2d04ba){_0x4c4f21['push'](_0x4c4f21['shift']());}};_0x1b0a89(++_0x10e296);}(_0xfc32,0x17a));var _0x2fc3=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0xfc32[_0x11005e];return _0x29338f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2fc3('0x0'));var rp=require(_0x2fc3('0x1'));var moment=require('moment');var BPromise=require(_0x2fc3('0x2'));var Mustache=require(_0x2fc3('0x3'));var util=require(_0x2fc3('0x4'));var path=require(_0x2fc3('0x5'));var sox=require(_0x2fc3('0x6'));var csv=require(_0x2fc3('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2fc3('0x8'));var squel=require(_0x2fc3('0x9'));var crypto=require(_0x2fc3('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2fc3('0x7'));var querystring=require(_0x2fc3('0xb'));var Papa=require(_0x2fc3('0xc'));var Redis=require('ioredis');var authService=require(_0x2fc3('0xd'));var qs=require(_0x2fc3('0xe'));var as=require('../../components/parsers/advancedSearch');var pdf=require('../../components/export/pdf');var hardwareService=require(_0x2fc3('0xf'));var logger=require(_0x2fc3('0x10'))('api');var utils=require(_0x2fc3('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x2fc3('0x12'));var db=require(_0x2fc3('0x13'))['db'];config[_0x2fc3('0x14')]=_[_0x2fc3('0x15')](config[_0x2fc3('0x14')],{'host':_0x2fc3('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2fc3('0x14')]));require(_0x2fc3('0x17'))[_0x2fc3('0x18')](socket);function respondWithStatusCode(_0xc8d710,_0x3670e9){_0x3670e9=_0x3670e9||0xcc;return function(_0x2b3c55){if(_0x2b3c55){return _0xc8d710[_0x2fc3('0x19')](_0x3670e9);}return _0xc8d710[_0x2fc3('0x1a')](_0x3670e9)[_0x2fc3('0x1b')]();};}function respondWithResult(_0x51563c,_0x3091eb){_0x3091eb=_0x3091eb||0xc8;return function(_0x3a41df){if(_0x3a41df){return _0x51563c[_0x2fc3('0x1a')](_0x3091eb)[_0x2fc3('0x1c')](_0x3a41df);}};}function respondWithFilteredResult(_0x2dacb3,_0x237f96){return function(_0x2ad243){if(_0x2ad243){var _0x28b335=typeof _0x237f96['offset']==='undefined'&&typeof _0x237f96[_0x2fc3('0x1d')]===_0x2fc3('0x1e');var _0x1bba96=_0x2ad243[_0x2fc3('0x1f')];var _0x11eac3=_0x28b335?0x0:_0x237f96['offset'];var _0x5bf12b=_0x28b335?_0x2ad243[_0x2fc3('0x1f')]:_0x237f96['offset']+_0x237f96[_0x2fc3('0x1d')];var _0x18d30a;if(_0x5bf12b>=_0x1bba96){_0x5bf12b=_0x1bba96;_0x18d30a=0xc8;}else{_0x18d30a=0xce;}_0x2dacb3['status'](_0x18d30a);return _0x2dacb3['set']('Content-Range',_0x11eac3+'-'+_0x5bf12b+'/'+_0x1bba96)[_0x2fc3('0x1c')](_0x2ad243);}return null;};}function patchUpdates(_0x4ec36d){return function(_0x3458b9){try{jsonpatch['apply'](_0x3458b9,_0x4ec36d,!![]);}catch(_0x48f8d5){return BPromise['reject'](_0x48f8d5);}return _0x3458b9[_0x2fc3('0x20')]();};}function saveUpdates(_0x2d7a71,_0x3979be){return function(_0xdb4ab3){if(_0xdb4ab3){return _0xdb4ab3[_0x2fc3('0x21')](_0x2d7a71)['then'](function(_0xb37c8e){return _0xb37c8e;});}return null;};}function removeEntity(_0x484f68,_0x212302){return function(_0x34c71c){if(_0x34c71c){return _0x34c71c['destroy']()['then'](function(){_0x484f68[_0x2fc3('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x59f88b,_0x180ef4){return function(_0x24129c){if(!_0x24129c){_0x59f88b['sendStatus'](0x194);}return _0x24129c;};}function handleError(_0x132c09,_0x9deb8){_0x9deb8=_0x9deb8||0x1f4;return function(_0x529b5e){logger[_0x2fc3('0x22')](_0x529b5e[_0x2fc3('0x23')]);if(_0x529b5e[_0x2fc3('0x24')]){delete _0x529b5e[_0x2fc3('0x24')];}_0x132c09['status'](_0x9deb8)['send'](_0x529b5e);};}function getInteractionUsers(_0x499522,_0x2fb79d){return new BPromise(function(_0x4f52ae,_0x33fdf6){try{if(_0x2fb79d[_0x499522['id']]){_0x499522['Users']=_[_0x2fc3('0x25')](_0x2fb79d[_0x499522['id']],function(_0x5c8898){return{'id':_0x5c8898['id'],'fullname':_0x5c8898['fullname']};});}}catch(_0x18c97b){_0x33fdf6(_0x18c97b);}_0x4f52ae(_0x499522);});}function getInteractionTags(_0x44e384,_0x337604){return new BPromise(function(_0x5d4965,_0x202ec4){try{if(_0x44e384['TagIds']){_0x44e384[_0x2fc3('0x26')]=[];_0x44e384[_0x2fc3('0x27')][_0x2fc3('0x28')](',')[_0x2fc3('0x29')](function(_0x130ddf){_0x44e384[_0x2fc3('0x26')]['push'](_0x337604[_0x130ddf]);});}delete _0x44e384[_0x2fc3('0x27')];}catch(_0x464828){_0x202ec4(_0x464828);}_0x5d4965(_0x44e384);});}function updateSmsInteraction(_0x7319ca,_0x2e8317,_0x1847f1){return new BPromise(function(_0x1ec9e2,_0xd038bc){return getInteractionUsers(_0x7319ca,_0x1847f1)[_0x2fc3('0x2a')](function(_0x1be036){return getInteractionTags(_0x1be036,_0x2e8317);})[_0x2fc3('0x2a')](function(_0x153abc){_0x1ec9e2(_0x153abc);})['catch'](function(_0x5af7bb){_0xd038bc(_0x5af7bb);});});}exports[_0x2fc3('0x2b')]=function(_0xf78558,_0x4b1195){var _0x15e929={},_0x243ca5={},_0x36ef22={'count':0x0,'rows':[]};var _0x316718=_[_0x2fc3('0x25')](db[_0x2fc3('0x2c')]['rawAttributes'],function(_0x390247){return{'name':_0x390247[_0x2fc3('0x2d')],'type':_0x390247[_0x2fc3('0x2e')]['key']};});_0x243ca5[_0x2fc3('0x2f')]=_[_0x2fc3('0x25')](_0x316718,_0x2fc3('0x24'));_0x243ca5[_0x2fc3('0x30')]=_['keys'](_0xf78558[_0x2fc3('0x30')]);_0x243ca5[_0x2fc3('0x31')]=_[_0x2fc3('0x32')](_0x243ca5[_0x2fc3('0x2f')],_0x243ca5[_0x2fc3('0x30')]);_0x15e929['attributes']=_['intersection'](_0x243ca5[_0x2fc3('0x2f')],qs[_0x2fc3('0x33')](_0xf78558['query']['fields']));_0x15e929['attributes']=_0x15e929[_0x2fc3('0x34')][_0x2fc3('0x35')]?_0x15e929[_0x2fc3('0x34')]:_0x243ca5[_0x2fc3('0x2f')];if(!_0xf78558[_0x2fc3('0x30')][_0x2fc3('0x36')](_0x2fc3('0x37'))){_0x15e929['limit']=qs[_0x2fc3('0x1d')](_0xf78558[_0x2fc3('0x30')][_0x2fc3('0x1d')]);_0x15e929[_0x2fc3('0x38')]=qs['offset'](_0xf78558[_0x2fc3('0x30')][_0x2fc3('0x38')]);}_0x15e929['order']=qs['sort'](_0xf78558['query'][_0x2fc3('0x39')]);_0x15e929[_0x2fc3('0x3a')]=qs[_0x2fc3('0x31')](_[_0x2fc3('0x3b')](_0xf78558[_0x2fc3('0x30')],_0x243ca5[_0x2fc3('0x31')]),_0x316718);var _0xd6c383=[];var _0x1b932b=squel[_0x2fc3('0x3c')]()[_0x2fc3('0x3d')]('id')[_0x2fc3('0x3d')](_0x2fc3('0x24'))['field'](_0x2fc3('0x3e'))['from'](_0x2fc3('0x3f'));var _0x128b52=squel[_0x2fc3('0x3c')]()['field'](_0x2fc3('0x40'))[_0x2fc3('0x3d')](_0x2fc3('0x41'))['field'](_0x2fc3('0x42'))['from'](_0x2fc3('0x43'),'ui')[_0x2fc3('0x44')](_0x2fc3('0x45'),'u',_0x2fc3('0x46'));var _0x14d4a3=squel[_0x2fc3('0x3c')]()['from']('sms_interactions','i')[_0x2fc3('0x44')](_0x2fc3('0x47'),'c',_0x2fc3('0x48'))[_0x2fc3('0x44')]('users','o',_0x2fc3('0x49'))[_0x2fc3('0x44')](_0x2fc3('0x4a'),'a',_0x2fc3('0x4b'))[_0x2fc3('0x44')](_0x2fc3('0x4c'),'me',_0x2fc3('0x4d'))['left_join'](_0x2fc3('0x4e'),'it',_0x2fc3('0x4f'))[_0x2fc3('0x44')](_0x2fc3('0x3f'),'t',_0x2fc3('0x50'));var _0x409d71=squel[_0x2fc3('0x51')]();var _0x499933=[];var _0xc84df1=squel[_0x2fc3('0x51')]();var _0x517cd7;if(_0xf78558[_0x2fc3('0x30')][_0x2fc3('0x52')]){_0x517cd7=as[_0x2fc3('0x53')](_0xf78558[_0x2fc3('0x30')][_0x2fc3('0x52')]);var _0x140aba=_0x517cd7[_0x2fc3('0x54')];for(var _0x52c93d=0x0;_0x52c93d<_0x517cd7[_0x2fc3('0x55')][_0x2fc3('0x35')];_0x52c93d++){var _0x39a50b=_0x517cd7['conditions'][_0x52c93d];var _0x28cacd='i';var _0x3038a4=_[_0x2fc3('0x56')](_0x316718,[_0x2fc3('0x24'),_0x39a50b[_0x2fc3('0x3d')]]);if(!_0x3038a4){switch(_0x39a50b['field']){case _0x2fc3('0x57'):if(_0x39a50b['value']==0x1){_0x14d4a3[_0x2fc3('0x58')]('`'+_0x39a50b[_0x2fc3('0x3d')]+'`\x20=\x200');}else{_0x14d4a3[_0x2fc3('0x58')]('`'+_0x39a50b[_0x2fc3('0x3d')]+_0x2fc3('0x59'));}break;case'Contact':if(_0x39a50b['operator']===_0x2fc3('0x5a')){if(_0x39a50b['value'][_0x2fc3('0x28')]('\x20')[_0x2fc3('0x35')]>0x1){_0x409d71[_0x140aba](_0x2fc3('0x5b'),qs[_0x2fc3('0x5c')](_0x39a50b[_0x2fc3('0x5d')]),null);}else{var _0x541d08='%'+_0x39a50b[_0x2fc3('0x5d')]+'%';_0x409d71[_0x140aba]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x541d08,_0x541d08,_0x541d08);}}else{_0x3038a4=_[_0x2fc3('0x56')](_0x316718,['name','ContactId']);_0x39a50b['field']=_0x2fc3('0x5e');_0x24bdd9=as['buildExpression'](_0x28cacd,_0x3038a4[_0x2fc3('0x2e')],_0x39a50b);_0x409d71[_0x140aba](_0x24bdd9[_0x2fc3('0x5f')],_0x24bdd9[_0x2fc3('0x5d')]['start'],_0x24bdd9[_0x2fc3('0x5d')]['end']);}break;case _0x2fc3('0x60'):var _0x555afe=_0x39a50b[_0x2fc3('0x5d')][_0x2fc3('0x28')](',')['map'](function(_0x9516c2){return Number(_0x9516c2);});_0x555afe[_0x2fc3('0x29')](function(_0x5a78dd){_0xc84df1['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x5a78dd+',%');});_0x499933=_[_0x2fc3('0x61')](_0x499933,_0x555afe);break;case _0x2fc3('0x62'):if(_0x39a50b['operator']===_0x2fc3('0x5a')){_0x409d71[_0x140aba]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x39a50b[_0x2fc3('0x5d')]+'%',null);}else{_0x3038a4=_[_0x2fc3('0x56')](_0x316718,[_0x2fc3('0x24'),'UserId']);_0x39a50b[_0x2fc3('0x3d')]=_0x2fc3('0x63');_0x24bdd9=as[_0x2fc3('0x64')](_0x28cacd,_0x3038a4[_0x2fc3('0x2e')],_0x39a50b);_0x409d71[_0x140aba](_0x24bdd9[_0x2fc3('0x5f')],_0x24bdd9['value'][_0x2fc3('0x65')],_0x24bdd9[_0x2fc3('0x5d')]['end']);}break;case _0x2fc3('0x66'):_0x24bdd9=as[_0x2fc3('0x64')]('me',null,_0x39a50b);_0x409d71[_0x140aba](_0x24bdd9[_0x2fc3('0x5f')],_0x24bdd9[_0x2fc3('0x5d')]['start'],_0x24bdd9[_0x2fc3('0x5d')]['end']);break;}}else{var _0x24bdd9=as[_0x2fc3('0x64')](_0x28cacd,_0x3038a4[_0x2fc3('0x2e')],_0x39a50b);_0x409d71[_0x140aba](_0x24bdd9['text'],_0x24bdd9['value'][_0x2fc3('0x65')],_0x24bdd9[_0x2fc3('0x5d')][_0x2fc3('0x1b')]);}}}else{var _0x3671f0=_(_0xf78558[_0x2fc3('0x30')])[_0x2fc3('0x67')]()[_0x2fc3('0x25')](function(_0x11dc34){return _[_0x2fc3('0x68')](_0x316718,['name',_0x11dc34])?_0x11dc34:undefined;})[_0x2fc3('0x69')]()[_0x2fc3('0x5d')]();if(!_[_0x2fc3('0x6a')](_0x3671f0)){_0x3671f0[_0x2fc3('0x29')](function(_0x467c70){if(_0x467c70===_0x2fc3('0x6b')){_0x14d4a3[_0x2fc3('0x3a')](_0x2fc3('0x6c'),[][_0x2fc3('0x6d')](_0xf78558['query'][_0x467c70]));}else if(_0x467c70===_0x2fc3('0x6e')){var _0xef03f9=JSON[_0x2fc3('0x6f')](_0xf78558[_0x2fc3('0x30')][_0x467c70])[_0x2fc3('0x70')];var _0x4851da=JSON[_0x2fc3('0x6f')](_0xf78558[_0x2fc3('0x30')][_0x467c70])[_0x2fc3('0x71')];_0x14d4a3['where'](_0x2fc3('0x72'),_0xef03f9,_0x4851da);}else{if(_0xf78558[_0x2fc3('0x30')][_0x467c70]===_0x2fc3('0x73')){_0x14d4a3[_0x2fc3('0x3a')]('i.'+_0x467c70+_0x2fc3('0x74'));}else{_0x14d4a3['where']('i.'+_0x467c70+_0x2fc3('0x75'),_0xf78558[_0x2fc3('0x30')][_0x467c70]);}}});}if(_0xf78558[_0x2fc3('0x30')][_0x2fc3('0x76')]){if(_0xf78558['query']['read']==0x1){_0x14d4a3[_0x2fc3('0x58')]('`unreadMessages`\x20=\x200');}else{_0x14d4a3['having'](_0x2fc3('0x77'));}}if(_0xf78558[_0x2fc3('0x30')][_0x2fc3('0x78')]){_0x499933=_['isArray'](_0xf78558[_0x2fc3('0x30')][_0x2fc3('0x78')])?_0xf78558[_0x2fc3('0x30')][_0x2fc3('0x78')]:new Array(_0xf78558[_0x2fc3('0x30')]['tag']);_0x499933[_0x2fc3('0x29')](function(_0x4d3bac){_0xc84df1['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x4d3bac+',%');});}if(_0xf78558[_0x2fc3('0x30')][_0x2fc3('0x79')]){var _0x4280b8=_0xf78558[_0x2fc3('0x30')]['filter'][_0x2fc3('0x7a')]('\x5c','\x5c\x5c')[_0x2fc3('0x7a')](/'/g,'\x27\x27');if(qs[_0x2fc3('0x7b')](_0x4280b8)){_0x409d71['or'](_0x2fc3('0x7c'),_0x4280b8+'%')['or']('i.phone\x20LIKE\x20?',_0x4280b8+'%');}else{_0x409d71['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x4280b8))['or'](_0x2fc3('0x7d'),_0x4280b8+'%');}}}_0x14d4a3[_0x2fc3('0x3a')](_0x409d71);_0x14d4a3['group'](_0x2fc3('0x7e'));var _0x67a64f={'type':db[_0x2fc3('0x7f')][_0x2fc3('0x80')][_0x2fc3('0x81')],'raw':!![]};var _0x5e8f08=_0x14d4a3['clone']();_0x5e8f08['field'](_0x2fc3('0x7e'));_0x5e8f08[_0x2fc3('0x3d')](_0x2fc3('0x82'),_0x2fc3('0x57'));if(_0x15e929[_0x2fc3('0x83')]){_0x15e929['order'][_0x2fc3('0x29')](function(_0x67df4b){var _0x11b20a=_0x67df4b[0x0]===_0x2fc3('0x84')?_0x67df4b[0x0]:'i.'+_0x67df4b[0x0];_0x14d4a3[_0x2fc3('0x83')](_0x11b20a,_0x67df4b[0x1]===_0x2fc3('0x85')?![]:!![]);});}if(!_[_0x2fc3('0x6a')](_0x499933)){_0x14d4a3['having'](_0xc84df1);_0x5e8f08[_0x2fc3('0x3a')](_0x2fc3('0x86'),_0x499933);}BPromise[_0x2fc3('0x87')]()[_0x2fc3('0x2a')](function(){if(!_0x517cd7){if(_0xf78558[_0x2fc3('0x30')][_0x2fc3('0x6b')])return;_0x5e8f08[_0x2fc3('0x3a')]('i.SmsAccountId\x20IS\x20NOT\x20NULL');_0x14d4a3[_0x2fc3('0x3a')](_0x2fc3('0x88'));return;}if(_0xf78558['user'][_0x2fc3('0x89')]!=='agent')return;return _0xf78558[_0x2fc3('0x8a')][_0x2fc3('0x8b')]({'attributes':['id'],'raw':!![]})[_0x2fc3('0x2a')](function(_0x1ac8d9){if(_[_0x2fc3('0x6a')](_0x1ac8d9)){_0x5e8f08['where'](_0x2fc3('0x8c'));_0x14d4a3['where']('i.SmsAccountId\x20IS\x20NULL');}else{_0x5e8f08[_0x2fc3('0x3a')](_0x2fc3('0x6c'),_[_0x2fc3('0x25')](_0x1ac8d9,'id'));_0x14d4a3['where']('i.SmsAccountId\x20IN\x20?',_[_0x2fc3('0x25')](_0x1ac8d9,'id'));}});})['then'](function(){if(_0xf78558[_0x2fc3('0x8a')]['role']===_0x2fc3('0x8d')&&!_0x517cd7&&!_0xf78558[_0x2fc3('0x30')][_0x2fc3('0x6b')])return[];return db[_0x2fc3('0x8e')][_0x2fc3('0x30')](_0x5e8f08[_0x2fc3('0x8f')](),_0x67a64f);})[_0x2fc3('0x2a')](function(_0x19adcd){_0x36ef22[_0x2fc3('0x1f')]=_0x19adcd[_0x2fc3('0x35')];if(_0x36ef22[_0x2fc3('0x1f')]===0x0)return[];return db[_0x2fc3('0x8e')]['query'](_0x1b932b[_0x2fc3('0x8f')](),_0x67a64f)[_0x2fc3('0x2a')](function(_0x574341){_0xd6c383=_['keyBy'](_0x574341,'id');_0x67a64f=_[_0x2fc3('0x90')](_0x67a64f,{'model':db[_0x2fc3('0x2c')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xf78558['query'][_0x2fc3('0x33')]){_0x15e929[_0x2fc3('0x34')][_0x2fc3('0x29')](function(_0x16578c){_0x14d4a3[_0x2fc3('0x3d')]('i.'+_0x16578c);});}else{_0x14d4a3[_0x2fc3('0x3d')](_0x2fc3('0x82'),'unreadMessages');_0x14d4a3[_0x2fc3('0x3d')](_0x2fc3('0x91'),_0x2fc3('0x92'));_0x14d4a3[_0x2fc3('0x3d')]('a.mandatoryDisposition',_0x2fc3('0x93'));_0x14d4a3[_0x2fc3('0x3d')]('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0x2fc3('0x84'));_0x14d4a3[_0x2fc3('0x3d')](_0x2fc3('0x94'));_0x14d4a3[_0x2fc3('0x3d')](_0x2fc3('0x95'),'Contact.firstName');_0x14d4a3[_0x2fc3('0x3d')](_0x2fc3('0x96'),_0x2fc3('0x97'));_0x14d4a3[_0x2fc3('0x3d')](_0x2fc3('0x98'),_0x2fc3('0x99'));_0x14d4a3[_0x2fc3('0x3d')](_0x2fc3('0x9a'),_0x2fc3('0x9b'));_0x14d4a3[_0x2fc3('0x3d')](_0x2fc3('0x9c'),'Contact.mobile');_0x14d4a3[_0x2fc3('0x3d')](_0x2fc3('0x9d'),'Contact.fax');_0x14d4a3['field'](_0x2fc3('0x9e'),_0x2fc3('0x9f'));_0x14d4a3['field'](_0x2fc3('0xa0'),'Owner.internal');_0x14d4a3[_0x2fc3('0x3d')](_0x2fc3('0xa1'),'TagIds');}if(_0x15e929[_0x2fc3('0x1d')])_0x14d4a3[_0x2fc3('0x1d')](_0x15e929['limit']);if(_0x15e929[_0x2fc3('0x38')])_0x14d4a3[_0x2fc3('0x38')](_0x15e929[_0x2fc3('0x38')]);return db[_0x2fc3('0x8e')][_0x2fc3('0x30')](_0x14d4a3[_0x2fc3('0x8f')](),_0x67a64f);})[_0x2fc3('0x2a')](function(_0x1031f4){if(_0x1031f4[_0x2fc3('0x35')]>0x0)_0x128b52[_0x2fc3('0x3a')](_0x2fc3('0xa2'),_[_0x2fc3('0x25')](_0x1031f4,'id'));return db[_0x2fc3('0x8e')][_0x2fc3('0x30')](_0x128b52[_0x2fc3('0x8f')](),_0x67a64f)['then'](function(_0x233ccf){var _0x4b5368=_[_0x2fc3('0xa3')](_0x233ccf,'SmsInteractionId');var _0x17a5f0=[];_0x1031f4['forEach'](function(_0x131047){_0x17a5f0[_0x2fc3('0xa4')](updateSmsInteraction(_0x131047,_0xd6c383,_0x4b5368));});return BPromise[_0x2fc3('0xa5')](_0x17a5f0);});});})[_0x2fc3('0x2a')](function(_0x2ef79c){_0x36ef22[_0x2fc3('0xa6')]=_0x2ef79c;return _0x36ef22;})[_0x2fc3('0x2a')](respondWithFilteredResult(_0x4b1195,_0x15e929))[_0x2fc3('0xa7')](handleError(_0x4b1195,null));};exports['show']=function(_0x1947d1,_0x3dc36f){var _0x538d7f={'raw':![],'where':{'id':_0x1947d1['params']['id']}},_0x518c18={};_0x518c18['model']=_[_0x2fc3('0x67')](db[_0x2fc3('0x2c')]['rawAttributes']);_0x518c18['query']=_[_0x2fc3('0x67')](_0x1947d1[_0x2fc3('0x30')]);_0x518c18[_0x2fc3('0x31')]=_[_0x2fc3('0x32')](_0x518c18[_0x2fc3('0x2f')],_0x518c18[_0x2fc3('0x30')]);_0x538d7f['attributes']=_[_0x2fc3('0x32')](_0x518c18['model'],qs[_0x2fc3('0x33')](_0x1947d1[_0x2fc3('0x30')][_0x2fc3('0x33')]));_0x538d7f[_0x2fc3('0x34')]=_0x538d7f[_0x2fc3('0x34')]['length']?_0x538d7f['attributes']:_0x518c18[_0x2fc3('0x2f')];if(_0x1947d1[_0x2fc3('0x30')][_0x2fc3('0xa8')]){_0x538d7f[_0x2fc3('0xa9')]=[{'all':!![]}];}_0x538d7f=_[_0x2fc3('0x90')]({},_0x538d7f,_0x1947d1['options']);return db['SmsInteraction'][_0x2fc3('0x56')](_0x538d7f)[_0x2fc3('0x2a')](handleEntityNotFound(_0x3dc36f,null))[_0x2fc3('0x2a')](respondWithResult(_0x3dc36f,null))[_0x2fc3('0xa7')](handleError(_0x3dc36f,null));};exports[_0x2fc3('0xaa')]=function(_0x3934ce,_0x1e7445){return db[_0x2fc3('0x2c')][_0x2fc3('0xaa')](_0x3934ce['body'],{})[_0x2fc3('0x2a')](respondWithResult(_0x1e7445,0xc9))['catch'](handleError(_0x1e7445,null));};exports[_0x2fc3('0x21')]=function(_0x2a1ea2,_0x48df4f){if(_0x2a1ea2[_0x2fc3('0x66')]['id']){delete _0x2a1ea2[_0x2fc3('0x66')]['id'];}return db[_0x2fc3('0x2c')][_0x2fc3('0x56')]({'where':{'id':_0x2a1ea2[_0x2fc3('0xab')]['id']}})['then'](handleEntityNotFound(_0x48df4f,null))[_0x2fc3('0x2a')](saveUpdates(_0x2a1ea2[_0x2fc3('0x66')],null))['then'](respondWithResult(_0x48df4f,null))[_0x2fc3('0xa7')](handleError(_0x48df4f,null));};exports[_0x2fc3('0xac')]=function(_0x39f2c3,_0x5cecb1){return db['SmsInteraction'][_0x2fc3('0x56')]({'where':{'id':_0x39f2c3[_0x2fc3('0xab')]['id']}})[_0x2fc3('0x2a')](handleEntityNotFound(_0x5cecb1,null))[_0x2fc3('0x2a')](removeEntity(_0x5cecb1,null))[_0x2fc3('0xa7')](handleError(_0x5cecb1,null));};exports[_0x2fc3('0xad')]=function(_0x594642,_0xc7a9aa){return db[_0x2fc3('0x2c')][_0x2fc3('0xad')]()['then'](respondWithResult(_0xc7a9aa,null))['catch'](handleError(_0xc7a9aa,null));};exports[_0x2fc3('0xae')]=function(_0x24e52c,_0x29939b,_0x446f02){return db[_0x2fc3('0xaf')][_0x2fc3('0x56')]({'where':{'id':_0x24e52c[_0x2fc3('0xab')]['id']}})[_0x2fc3('0x2a')](handleEntityNotFound(_0x29939b,null))['then'](function(_0x5d8bba){if(_0x5d8bba){return _0x5d8bba[_0x2fc3('0xae')](_0x24e52c['body'][_0x2fc3('0xb0')],_[_0x2fc3('0xb1')](_0x24e52c['body'],[_0x2fc3('0xb0'),'id'])||{});}})[_0x2fc3('0x2a')](respondWithResult(_0x29939b,null))['catch'](handleError(_0x29939b,null));};exports[_0x2fc3('0xb2')]=function(_0xb2d40f,_0x30cf81,_0x4f7b0e){var _0x3aff4e={'raw':![],'where':{}};var _0x522825={};var _0xec82e2={'count':0x0,'rows':[]};return db[_0x2fc3('0x2c')][_0x2fc3('0xb3')]({'where':{'id':_0xb2d40f[_0x2fc3('0xab')]['id']}})[_0x2fc3('0x2a')](handleEntityNotFound(_0x30cf81,null))[_0x2fc3('0x2a')](function(_0x398840){if(_0x398840){_0x522825[_0x2fc3('0x2f')]=_[_0x2fc3('0x67')](db[_0x2fc3('0xaf')]['rawAttributes']);_0x522825['query']=_['keys'](_0xb2d40f['query']);_0x522825[_0x2fc3('0x31')]=_[_0x2fc3('0x32')](_0x522825[_0x2fc3('0x2f')],_0x522825[_0x2fc3('0x30')]);_0x3aff4e['attributes']=_['intersection'](_0x522825[_0x2fc3('0x2f')],qs[_0x2fc3('0x33')](_0xb2d40f[_0x2fc3('0x30')][_0x2fc3('0x33')]));_0x3aff4e['attributes']=_0x3aff4e[_0x2fc3('0x34')][_0x2fc3('0x35')]?_0x3aff4e[_0x2fc3('0x34')]:_0x522825[_0x2fc3('0x2f')];if(!_0xb2d40f['query'][_0x2fc3('0x36')]('nolimit')){_0x3aff4e['limit']=qs['limit'](_0xb2d40f[_0x2fc3('0x30')][_0x2fc3('0x1d')]);_0x3aff4e['offset']=qs[_0x2fc3('0x38')](_0xb2d40f[_0x2fc3('0x30')]['offset']);}_0x3aff4e[_0x2fc3('0x83')]=qs[_0x2fc3('0x39')](_0xb2d40f[_0x2fc3('0x30')][_0x2fc3('0x39')]);_0x3aff4e[_0x2fc3('0x3a')]=qs[_0x2fc3('0x31')](_[_0x2fc3('0x3b')](_0xb2d40f[_0x2fc3('0x30')],_0x522825[_0x2fc3('0x31')]));_0x3aff4e['where']['SmsInteractionId']=_0x398840['id'];if(_0xb2d40f[_0x2fc3('0x30')][_0x2fc3('0x79')]){_0x3aff4e[_0x2fc3('0x3a')]=_[_0x2fc3('0x90')](_0x3aff4e[_0x2fc3('0x3a')],{'$or':_['map'](_0x3aff4e[_0x2fc3('0x34')],function(_0x4ca0d3){var _0x1ef57a={};_0x1ef57a[_0x4ca0d3]={'$like':'%'+_0xb2d40f[_0x2fc3('0x30')]['filter']+'%'};return _0x1ef57a;})});}if(_0xb2d40f[_0x2fc3('0x30')][_0x2fc3('0x70')]){var _0x383659=_0xb2d40f[_0x2fc3('0x30')]['$gte'][_0x2fc3('0x28')](',');var _0xd6cabc={};_0xd6cabc[_0x383659[0x0]]={'$gte':moment(_0x383659[0x1])[_0x2fc3('0xb4')](_0x2fc3('0xb5'))};_0x3aff4e[_0x2fc3('0x3a')]=_[_0x2fc3('0x90')](_0x3aff4e[_0x2fc3('0x3a')],_0xd6cabc);}_0x3aff4e=_['merge']({},_0x3aff4e,_0xb2d40f[_0x2fc3('0xb6')]);return db['SmsMessage']['count']({'where':_0x3aff4e[_0x2fc3('0x3a')]})[_0x2fc3('0x2a')](function(_0x30607b){_0xec82e2[_0x2fc3('0x1f')]=_0x30607b;if(_0xb2d40f['query'][_0x2fc3('0xa8')]){_0x3aff4e[_0x2fc3('0xa9')]=[{'all':!![]}];}return db[_0x2fc3('0xaf')][_0x2fc3('0xb7')](_0x3aff4e);})[_0x2fc3('0x2a')](function(_0x18821f){_0xec82e2[_0x2fc3('0xa6')]=_0x18821f;return _0xec82e2;});}})[_0x2fc3('0x2a')](respondWithFilteredResult(_0x30cf81,_0x3aff4e))[_0x2fc3('0xa7')](handleError(_0x30cf81,null));};exports[_0x2fc3('0xb8')]=function(_0x5891a4,_0x155dd9,_0xfed744){return db[_0x2fc3('0x2c')][_0x2fc3('0x56')]({'where':{'id':_0x5891a4[_0x2fc3('0xab')]['id']}})[_0x2fc3('0x2a')](handleEntityNotFound(_0x155dd9,null))[_0x2fc3('0x2a')](function(_0x134e8e){if(_0x134e8e){return _0x134e8e[_0x2fc3('0xb9')](_0x5891a4[_0x2fc3('0x66')][_0x2fc3('0xb0')],_[_0x2fc3('0xb1')](_0x5891a4[_0x2fc3('0x66')],[_0x2fc3('0xb0'),'id'])||{})[_0x2fc3('0xba')](function(){return db[_0x2fc3('0x60')][_0x2fc3('0xb7')]({'attributes':['id','name',_0x2fc3('0x3e')],'where':{'id':_0x5891a4[_0x2fc3('0x66')][_0x2fc3('0xb0')]}});})['then'](function(_0x2c8a33){socket[_0x2fc3('0xbb')](_0x2fc3('0xbc'),{'id':Number(_0x5891a4[_0x2fc3('0xab')]['id']),'tags':_0x2c8a33||[]});return{'id':Number(_0x5891a4['params']['id']),'tags':_0x2c8a33||[]};});}})[_0x2fc3('0x2a')](respondWithResult(_0x155dd9,null))[_0x2fc3('0xa7')](handleError(_0x155dd9,null));};exports[_0x2fc3('0xbd')]=function(_0x2f7bab,_0x28a412,_0x4689d1){return db['SmsInteraction']['find']({'where':{'id':_0x2f7bab[_0x2fc3('0xab')]['id']}})[_0x2fc3('0x2a')](handleEntityNotFound(_0x28a412,null))['then'](function(_0x2992a6){if(_0x2992a6){return _0x2992a6[_0x2fc3('0xbd')](_0x2f7bab[_0x2fc3('0x30')][_0x2fc3('0xb0')]);}})[_0x2fc3('0x2a')](respondWithStatusCode(_0x28a412,null))['catch'](handleError(_0x28a412,null));};exports[_0x2fc3('0xbe')]=function(_0x5f4234,_0x5ada47){var _0x5bc5f9=moment()[_0x2fc3('0xbf')]()[_0x2fc3('0x8f')]();var _0x3a797f=path[_0x2fc3('0xc0')](config[_0x2fc3('0xc1')],_0x2fc3('0xc2'),_0x2fc3('0xc3'),_0x2fc3('0xc4'));var _0x1beabf=path[_0x2fc3('0xc0')](config[_0x2fc3('0xc1')],_0x2fc3('0xc2'),_0x2fc3('0xc3'),_0x2fc3('0xc5'));var _0x3deb92=path[_0x2fc3('0xc0')](_0x3a797f,_0x5bc5f9);var _0x9ff1bd=util[_0x2fc3('0xb4')]('transcript-%d-%s.zip',_0x5f4234[_0x2fc3('0xab')]['id'],_0x5bc5f9);var _0x4122a2=path[_0x2fc3('0xc0')](_0x3a797f,_0x9ff1bd);var _0x115ae6=[];_0x115ae6[_0x2fc3('0xa4')]({'model':db['User'],'as':_0x2fc3('0x62'),'attributes':['id','fullname'],'raw':!![]});_0x115ae6[_0x2fc3('0xa4')]({'model':db[_0x2fc3('0xc6')],'as':_0x2fc3('0xc7'),'attributes':['id',_0x2fc3('0xc8'),'lastName'],'raw':!![]});var _0x3d5a27=[{'model':db['SmsMessage'],'as':_0x2fc3('0xc9'),'attributes':['id','body',_0x2fc3('0x6e'),_0x2fc3('0xca'),_0x2fc3('0xcb'),_0x2fc3('0x76')],'include':_0x115ae6}];_0x3d5a27[_0x2fc3('0xa4')]({'model':db['SmsAccount'],'as':_0x2fc3('0xcc'),'attributes':['id',_0x2fc3('0x24')]});_0x3d5a27[_0x2fc3('0xa4')]({'model':db[_0x2fc3('0x62')],'as':_0x2fc3('0xcd'),'attributes':['id',_0x2fc3('0xce')]});return db[_0x2fc3('0x2c')][_0x2fc3('0x56')]({'where':{'id':_0x5f4234[_0x2fc3('0xab')]['id']},'include':_0x3d5a27})[_0x2fc3('0x2a')](handleEntityNotFound(_0x5ada47,null))[_0x2fc3('0x2a')](function(_0x1d7e58){if(_0x1d7e58){var _0x38b0ce=_0x1d7e58[_0x2fc3('0xcf')]({'plain':!![]});fs['mkdirSync'](_0x3deb92);var _0x35e094={'channel':_0x2fc3('0xd0'),'account':_0x38b0ce[_0x2fc3('0xcc')]['name'],'agent':_0x38b0ce[_0x2fc3('0xcd')]?_0x38b0ce[_0x2fc3('0xcd')][_0x2fc3('0xce')]:_0x2fc3('0xd1'),'createdAt':moment(_0x38b0ce[_0x2fc3('0x6e')])[_0x2fc3('0xb4')]('YYYY-MM-DD\x20HH:mm:ss')[_0x2fc3('0x8f')](),'closedAt':_0x38b0ce[_0x2fc3('0xd2')]?moment(_0x38b0ce[_0x2fc3('0xd3')])[_0x2fc3('0xb4')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x38b0ce[_0x2fc3('0xd4')],'messages':_(_0x38b0ce['Messages'])[_0x2fc3('0x79')]({'secret':![]})[_0x2fc3('0x25')](function(_0x13c4c4){return{'date':moment(_0x13c4c4[_0x2fc3('0x6e')])[_0x2fc3('0xb4')](_0x2fc3('0xb5'))[_0x2fc3('0x8f')](),'sender':_0x13c4c4[_0x2fc3('0xca')]==='out'?_0x13c4c4[_0x2fc3('0x62')]?_0x13c4c4[_0x2fc3('0x62')][_0x2fc3('0xce')]:'System':_0x13c4c4['Contact']['firstName']+(_0x13c4c4['Contact'][_0x2fc3('0xd5')]?'\x20'+_0x13c4c4['Contact']['lastName']:''),'body':_0x13c4c4[_0x2fc3('0x66')],'direction':_0x13c4c4['direction']===_0x2fc3('0xd6')?'A':'C','secret':_0x13c4c4[_0x2fc3('0xcb')],'read':_0x13c4c4[_0x2fc3('0x76')]};})['value']()};return ejs[_0x2fc3('0xd7')](path['join'](config[_0x2fc3('0xc1')],'server',_0x2fc3('0xd8'),'downloadInteraction.ejs'),{'interaction':_0x35e094})[_0x2fc3('0x2a')](function(_0xa0e327){var _0x550168=path[_0x2fc3('0xc0')](_0x3deb92,_0x2fc3('0xd9')+_0x38b0ce['id']+'-'+_0x5bc5f9+'.pdf');var _0x48182a={'path':_0x550168,'channel':_0x2fc3('0xd0'),'interactionId':_0x38b0ce['id']};return pdf[_0x2fc3('0xda')](_0xa0e327,_0x48182a);})[_0x2fc3('0x2a')](function(){return new BPromise(function(_0x165ff9,_0x24de01){zipdir(_0x3deb92,{'saveTo':_0x4122a2},function(_0x582d52,_0x109107){if(_0x582d52)return _0x24de01(_0x582d52);return _0x165ff9(_0x109107);});})[_0x2fc3('0x2a')](function(){return new BPromise(function(_0x2998c9,_0x37f070){rimraf(_0x3deb92,function(_0x4529e5){if(_0x4529e5)_0x37f070(_0x4529e5);return _0x2998c9();});});})[_0x2fc3('0x2a')](function(){return _0x5ada47[_0x2fc3('0xbe')](_0x4122a2,_0x9ff1bd,function(_0x1eff63){if(_0x1eff63){console[_0x2fc3('0xdb')](_0x2fc3('0xdc'),_0x1eff63);}else{fs[_0x2fc3('0xdd')](_0x4122a2);}});});});}else{return _0x5ada47['sendStatus'](0xc8);}})[_0x2fc3('0xa7')](handleError(_0x5ada47,null));};
\ No newline at end of file
+var _0x9ef9=['fields','length','order','sort','pick','field','color','from','select','u.id','u.fullname','ui.SmsInteractionId','left_join','u.id\x20=\x20ui.UserId','sms_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','value','having','`\x20=\x200','`\x20>\x200','Contact','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','union','User','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','body','some','compact','isEmpty','SmsAccountId','i.SmsAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','null','\x20IS\x20NULL','where','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','sequelize','toString','merge','SmsInteraction','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','c.firstName','Contact.firstName','c.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','groupBy','all','rows','show','params','keys','includeAll','include','options','create','describe','addMessage','SmsMessage','getMessages','findOne','hasOwnProperty','nolimit','SmsInteractionId','format','addTags','ids','omit','spread','findAll','emit','smsInteractionTags:save','removeTags','download','unix','join','files','tmp','root','firstName','direction','secret','SmsAccount','Account','Owner','get','Sms','N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','disposition','Messages','out','System','lastName','renderFile','views','downloadInteraction.ejs','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','destroy','error','stack','name','Users','map','fullname','TagIds','forEach','Tags','push','catch','index','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes'];(function(_0x224041,_0x3843aa){var _0x11195f=function(_0x513341){while(--_0x513341){_0x224041['push'](_0x224041['shift']());}};_0x11195f(++_0x3843aa);}(_0x9ef9,0x190));var _0x99ef=function(_0x3adc73,_0x2f442a){_0x3adc73=_0x3adc73-0x0;var _0x1c1001=_0x9ef9[_0x3adc73];return _0x1c1001;};'use strict';var emlformat=require(_0x99ef('0x0'));var rimraf=require(_0x99ef('0x1'));var zipdir=require(_0x99ef('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x99ef('0x3'));var moment=require(_0x99ef('0x4'));var BPromise=require(_0x99ef('0x5'));var Mustache=require(_0x99ef('0x6'));var util=require(_0x99ef('0x7'));var path=require(_0x99ef('0x8'));var sox=require(_0x99ef('0x9'));var csv=require(_0x99ef('0xa'));var ejs=require(_0x99ef('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x99ef('0xc'));var squel=require(_0x99ef('0xd'));var crypto=require(_0x99ef('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x99ef('0xf'));var toCsv=require(_0x99ef('0xa'));var querystring=require(_0x99ef('0x10'));var Papa=require('papaparse');var Redis=require(_0x99ef('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x99ef('0x12'));var as=require(_0x99ef('0x13'));var pdf=require(_0x99ef('0x14'));var hardwareService=require(_0x99ef('0x15'));var logger=require(_0x99ef('0x16'))(_0x99ef('0x17'));var utils=require(_0x99ef('0x18'));var config=require(_0x99ef('0x19'));var licenseUtil=require(_0x99ef('0x1a'));var db=require(_0x99ef('0x1b'))['db'];config[_0x99ef('0x1c')]=_['defaults'](config[_0x99ef('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x99ef('0x1d'))(new Redis(config[_0x99ef('0x1c')]));require('./smsInteraction.socket')[_0x99ef('0x1e')](socket);function respondWithStatusCode(_0x501fec,_0x516c95){_0x516c95=_0x516c95||0xcc;return function(_0x4beb70){if(_0x4beb70){return _0x501fec[_0x99ef('0x1f')](_0x516c95);}return _0x501fec[_0x99ef('0x20')](_0x516c95)[_0x99ef('0x21')]();};}function respondWithResult(_0x38ee67,_0x59cb19){_0x59cb19=_0x59cb19||0xc8;return function(_0x3ea13c){if(_0x3ea13c){return _0x38ee67[_0x99ef('0x20')](_0x59cb19)[_0x99ef('0x22')](_0x3ea13c);}};}function respondWithFilteredResult(_0x3f76e2,_0x11d8ab){return function(_0x4aa9e6){if(_0x4aa9e6){var _0x4337c8=typeof _0x11d8ab[_0x99ef('0x23')]===_0x99ef('0x24')&&typeof _0x11d8ab[_0x99ef('0x25')]===_0x99ef('0x24');var _0x230dda=_0x4aa9e6[_0x99ef('0x26')];var _0x11c5b7=_0x4337c8?0x0:_0x11d8ab[_0x99ef('0x23')];var _0x386e07=_0x4337c8?_0x4aa9e6[_0x99ef('0x26')]:_0x11d8ab[_0x99ef('0x23')]+_0x11d8ab[_0x99ef('0x25')];var _0x55ee7c;if(_0x386e07>=_0x230dda){_0x386e07=_0x230dda;_0x55ee7c=0xc8;}else{_0x55ee7c=0xce;}_0x3f76e2[_0x99ef('0x20')](_0x55ee7c);return _0x3f76e2[_0x99ef('0x27')](_0x99ef('0x28'),_0x11c5b7+'-'+_0x386e07+'/'+_0x230dda)[_0x99ef('0x22')](_0x4aa9e6);}return null;};}function patchUpdates(_0x2edf3b){return function(_0x4fe4d7){try{jsonpatch['apply'](_0x4fe4d7,_0x2edf3b,!![]);}catch(_0x2afa39){return BPromise[_0x99ef('0x29')](_0x2afa39);}return _0x4fe4d7['save']();};}function saveUpdates(_0x236d01,_0x100b13){return function(_0x1c41db){if(_0x1c41db){return _0x1c41db[_0x99ef('0x2a')](_0x236d01)[_0x99ef('0x2b')](function(_0x45d91a){return _0x45d91a;});}return null;};}function removeEntity(_0x121e0c,_0x183750){return function(_0x34f04e){if(_0x34f04e){return _0x34f04e[_0x99ef('0x2c')]()[_0x99ef('0x2b')](function(){_0x121e0c[_0x99ef('0x20')](0xcc)[_0x99ef('0x21')]();});}};}function handleEntityNotFound(_0x30778b,_0x2b1423){return function(_0x29f8cc){if(!_0x29f8cc){_0x30778b[_0x99ef('0x1f')](0x194);}return _0x29f8cc;};}function handleError(_0x1d2a27,_0x5c6b12){_0x5c6b12=_0x5c6b12||0x1f4;return function(_0x31b9fb){logger[_0x99ef('0x2d')](_0x31b9fb[_0x99ef('0x2e')]);if(_0x31b9fb[_0x99ef('0x2f')]){delete _0x31b9fb[_0x99ef('0x2f')];}_0x1d2a27['status'](_0x5c6b12)['send'](_0x31b9fb);};}function getInteractionUsers(_0x3fb370,_0x4c1d73){return new BPromise(function(_0x4667ba,_0x5652e7){try{if(_0x4c1d73[_0x3fb370['id']]){_0x3fb370[_0x99ef('0x30')]=_[_0x99ef('0x31')](_0x4c1d73[_0x3fb370['id']],function(_0xf364a8){return{'id':_0xf364a8['id'],'fullname':_0xf364a8[_0x99ef('0x32')]};});}}catch(_0x18fac9){_0x5652e7(_0x18fac9);}_0x4667ba(_0x3fb370);});}function getInteractionTags(_0x54211a,_0x4c133d){return new BPromise(function(_0x469c4e,_0x5a5429){try{if(_0x54211a[_0x99ef('0x33')]){_0x54211a['Tags']=[];_0x54211a['TagIds']['split'](',')[_0x99ef('0x34')](function(_0xefec8c){_0x54211a[_0x99ef('0x35')][_0x99ef('0x36')](_0x4c133d[_0xefec8c]);});}delete _0x54211a[_0x99ef('0x33')];}catch(_0x5b0abb){_0x5a5429(_0x5b0abb);}_0x469c4e(_0x54211a);});}function updateSmsInteraction(_0x1b4dc4,_0x3091ec,_0x3fc99b){return new BPromise(function(_0x508c8d,_0x7c24d9){return getInteractionUsers(_0x1b4dc4,_0x3fc99b)[_0x99ef('0x2b')](function(_0x3c7b77){return getInteractionTags(_0x3c7b77,_0x3091ec);})[_0x99ef('0x2b')](function(_0x561fd4){_0x508c8d(_0x561fd4);})[_0x99ef('0x37')](function(_0x343646){_0x7c24d9(_0x343646);});});}exports[_0x99ef('0x38')]=function(_0x1941b6,_0x372363){var _0x6dff27={},_0xe11956={},_0xa0d1e3={'count':0x0,'rows':[]};var _0xe8396b=_[_0x99ef('0x31')](db['SmsInteraction'][_0x99ef('0x39')],function(_0x227b0e){return{'name':_0x227b0e[_0x99ef('0x3a')],'type':_0x227b0e[_0x99ef('0x3b')][_0x99ef('0x3c')]};});_0xe11956[_0x99ef('0x3d')]=_[_0x99ef('0x31')](_0xe8396b,'name');_0xe11956[_0x99ef('0x3e')]=_['keys'](_0x1941b6[_0x99ef('0x3e')]);_0xe11956[_0x99ef('0x3f')]=_[_0x99ef('0x40')](_0xe11956['model'],_0xe11956['query']);_0x6dff27[_0x99ef('0x41')]=_['intersection'](_0xe11956[_0x99ef('0x3d')],qs[_0x99ef('0x42')](_0x1941b6[_0x99ef('0x3e')][_0x99ef('0x42')]));_0x6dff27[_0x99ef('0x41')]=_0x6dff27[_0x99ef('0x41')][_0x99ef('0x43')]?_0x6dff27['attributes']:_0xe11956[_0x99ef('0x3d')];if(!_0x1941b6[_0x99ef('0x3e')]['hasOwnProperty']('nolimit')){_0x6dff27['limit']=qs[_0x99ef('0x25')](_0x1941b6[_0x99ef('0x3e')][_0x99ef('0x25')]);_0x6dff27[_0x99ef('0x23')]=qs[_0x99ef('0x23')](_0x1941b6[_0x99ef('0x3e')][_0x99ef('0x23')]);}_0x6dff27[_0x99ef('0x44')]=qs[_0x99ef('0x45')](_0x1941b6[_0x99ef('0x3e')][_0x99ef('0x45')]);_0x6dff27['where']=qs[_0x99ef('0x3f')](_[_0x99ef('0x46')](_0x1941b6[_0x99ef('0x3e')],_0xe11956[_0x99ef('0x3f')]),_0xe8396b);var _0x1ffa41=[];var _0x388f9d=squel['select']()[_0x99ef('0x47')]('id')[_0x99ef('0x47')](_0x99ef('0x2f'))[_0x99ef('0x47')](_0x99ef('0x48'))[_0x99ef('0x49')]('tools_tags');var _0x1431bc=squel[_0x99ef('0x4a')]()[_0x99ef('0x47')](_0x99ef('0x4b'))['field'](_0x99ef('0x4c'))[_0x99ef('0x47')](_0x99ef('0x4d'))[_0x99ef('0x49')]('user_has_sms_interactions','ui')[_0x99ef('0x4e')]('users','u',_0x99ef('0x4f'));var _0x597647=squel['select']()[_0x99ef('0x49')](_0x99ef('0x50'),'i')[_0x99ef('0x4e')](_0x99ef('0x51'),'c',_0x99ef('0x52'))[_0x99ef('0x4e')](_0x99ef('0x53'),'o',_0x99ef('0x54'))[_0x99ef('0x4e')]('sms_accounts','a',_0x99ef('0x55'))[_0x99ef('0x4e')](_0x99ef('0x56'),'me',_0x99ef('0x57'))[_0x99ef('0x4e')](_0x99ef('0x58'),'it','it.SmsInteractionId\x20=\x20i.id')['left_join']('tools_tags','t',_0x99ef('0x59'));var _0x2801f4=squel[_0x99ef('0x5a')]();var _0x4f5387=[];var _0x107dd3=squel['expr']();var _0x4b531d;if(_0x1941b6[_0x99ef('0x3e')][_0x99ef('0x5b')]){_0x4b531d=as[_0x99ef('0x5c')](_0x1941b6[_0x99ef('0x3e')]['search']);var _0x3361a2=_0x4b531d[_0x99ef('0x5d')];for(var _0x85e3a=0x0;_0x85e3a<_0x4b531d[_0x99ef('0x5e')][_0x99ef('0x43')];_0x85e3a++){var _0x5e1d57=_0x4b531d[_0x99ef('0x5e')][_0x85e3a];var _0x358c71='i';var _0x44f3bd=_[_0x99ef('0x5f')](_0xe8396b,[_0x99ef('0x2f'),_0x5e1d57[_0x99ef('0x47')]]);if(!_0x44f3bd){switch(_0x5e1d57[_0x99ef('0x47')]){case'unreadMessages':if(_0x5e1d57[_0x99ef('0x60')]==0x1){_0x597647[_0x99ef('0x61')]('`'+_0x5e1d57[_0x99ef('0x47')]+_0x99ef('0x62'));}else{_0x597647['having']('`'+_0x5e1d57[_0x99ef('0x47')]+_0x99ef('0x63'));}break;case _0x99ef('0x64'):if(_0x5e1d57['operator']==='$substring'){if(_0x5e1d57[_0x99ef('0x60')][_0x99ef('0x65')]('\x20')[_0x99ef('0x43')]>0x1){_0x2801f4[_0x3361a2](_0x99ef('0x66'),qs[_0x99ef('0x67')](_0x5e1d57[_0x99ef('0x60')]),null);}else{var _0x3f8409='%'+_0x5e1d57[_0x99ef('0x60')]+'%';_0x2801f4[_0x3361a2](_0x99ef('0x68'),_0x3f8409,_0x3f8409,_0x3f8409);}}else{_0x44f3bd=_[_0x99ef('0x5f')](_0xe8396b,[_0x99ef('0x2f'),_0x99ef('0x69')]);_0x5e1d57[_0x99ef('0x47')]=_0x99ef('0x69');_0x312510=as[_0x99ef('0x6a')](_0x358c71,_0x44f3bd['type'],_0x5e1d57);_0x2801f4[_0x3361a2](_0x312510[_0x99ef('0x6b')],_0x312510['value'][_0x99ef('0x6c')],_0x312510[_0x99ef('0x60')]['end']);}break;case _0x99ef('0x6d'):var _0x1363f8=_0x5e1d57[_0x99ef('0x60')][_0x99ef('0x65')](',')[_0x99ef('0x31')](function(_0x2e3d80){return Number(_0x2e3d80);});_0x1363f8[_0x99ef('0x34')](function(_0x43bc96){_0x107dd3['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x43bc96+',%');});_0x4f5387=_[_0x99ef('0x6e')](_0x4f5387,_0x1363f8);break;case _0x99ef('0x6f'):if(_0x5e1d57['operator']===_0x99ef('0x70')){_0x2801f4[_0x3361a2](_0x99ef('0x71'),'%'+_0x5e1d57['value']+'%',null);}else{_0x44f3bd=_[_0x99ef('0x5f')](_0xe8396b,['name','UserId']);_0x5e1d57[_0x99ef('0x47')]='UserId';_0x312510=as[_0x99ef('0x6a')](_0x358c71,_0x44f3bd[_0x99ef('0x3b')],_0x5e1d57);_0x2801f4[_0x3361a2](_0x312510['text'],_0x312510[_0x99ef('0x60')][_0x99ef('0x6c')],_0x312510[_0x99ef('0x60')][_0x99ef('0x21')]);}break;case _0x99ef('0x72'):_0x312510=as['buildExpression']('me',null,_0x5e1d57);_0x2801f4[_0x3361a2](_0x312510[_0x99ef('0x6b')],_0x312510[_0x99ef('0x60')][_0x99ef('0x6c')],_0x312510[_0x99ef('0x60')][_0x99ef('0x21')]);break;}}else{var _0x312510=as[_0x99ef('0x6a')](_0x358c71,_0x44f3bd[_0x99ef('0x3b')],_0x5e1d57);_0x2801f4[_0x3361a2](_0x312510[_0x99ef('0x6b')],_0x312510[_0x99ef('0x60')][_0x99ef('0x6c')],_0x312510[_0x99ef('0x60')][_0x99ef('0x21')]);}}}else{var _0x3794f2=_(_0x1941b6[_0x99ef('0x3e')])['keys']()[_0x99ef('0x31')](function(_0x490a38){return _[_0x99ef('0x73')](_0xe8396b,[_0x99ef('0x2f'),_0x490a38])?_0x490a38:undefined;})[_0x99ef('0x74')]()[_0x99ef('0x60')]();if(!_[_0x99ef('0x75')](_0x3794f2)){_0x3794f2[_0x99ef('0x34')](function(_0x4b07e4){if(_0x4b07e4===_0x99ef('0x76')){_0x597647['where'](_0x99ef('0x77'),[][_0x99ef('0x78')](_0x1941b6['query'][_0x4b07e4]));}else if(_0x4b07e4===_0x99ef('0x79')){var _0x923c3e=JSON[_0x99ef('0x7a')](_0x1941b6[_0x99ef('0x3e')][_0x4b07e4])[_0x99ef('0x7b')];var _0x25dcf9=JSON[_0x99ef('0x7a')](_0x1941b6[_0x99ef('0x3e')][_0x4b07e4])[_0x99ef('0x7c')];_0x597647['where']('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x923c3e,_0x25dcf9);}else{if(_0x1941b6[_0x99ef('0x3e')][_0x4b07e4]===_0x99ef('0x7d')){_0x597647['where']('i.'+_0x4b07e4+_0x99ef('0x7e'));}else{_0x597647[_0x99ef('0x7f')]('i.'+_0x4b07e4+'\x20=\x20?',_0x1941b6['query'][_0x4b07e4]);}}});}if(_0x1941b6['query'][_0x99ef('0x80')]){if(_0x1941b6['query']['read']==0x1){_0x597647[_0x99ef('0x61')](_0x99ef('0x81'));}else{_0x597647[_0x99ef('0x61')](_0x99ef('0x82'));}}if(_0x1941b6[_0x99ef('0x3e')]['tag']){_0x4f5387=_['isArray'](_0x1941b6[_0x99ef('0x3e')]['tag'])?_0x1941b6[_0x99ef('0x3e')][_0x99ef('0x83')]:new Array(_0x1941b6[_0x99ef('0x3e')][_0x99ef('0x83')]);_0x4f5387[_0x99ef('0x34')](function(_0x25092d){_0x107dd3['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x25092d+',%');});}if(_0x1941b6[_0x99ef('0x3e')][_0x99ef('0x84')]){var _0x2a1712=_0x1941b6[_0x99ef('0x3e')][_0x99ef('0x84')][_0x99ef('0x85')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x99ef('0x86')](_0x2a1712)){_0x2801f4['or'](_0x99ef('0x87'),_0x2a1712+'%')['or'](_0x99ef('0x88'),_0x2a1712+'%');}else{_0x2801f4['or'](_0x99ef('0x89'),qs[_0x99ef('0x67')](_0x2a1712))['or'](_0x99ef('0x8a'),_0x2a1712+'%');}}}_0x597647[_0x99ef('0x7f')](_0x2801f4);_0x597647[_0x99ef('0x8b')](_0x99ef('0x8c'));var _0x5c3e56={'type':db[_0x99ef('0x8d')]['QueryTypes'][_0x99ef('0x8e')],'raw':!![]};var _0xd50133=_0x597647[_0x99ef('0x8f')]();_0xd50133[_0x99ef('0x47')](_0x99ef('0x8c'));_0xd50133['field'](_0x99ef('0x90'),_0x99ef('0x91'));if(_0x6dff27['order']){_0x6dff27[_0x99ef('0x44')]['forEach'](function(_0x546206){var _0x38095c=_0x546206[0x0]===_0x99ef('0x92')?_0x546206[0x0]:'i.'+_0x546206[0x0];_0x597647[_0x99ef('0x44')](_0x38095c,_0x546206[0x1]===_0x99ef('0x93')?![]:!![]);});}if(!_['isEmpty'](_0x4f5387)){_0x597647['having'](_0x107dd3);_0xd50133[_0x99ef('0x7f')](_0x99ef('0x94'),_0x4f5387);}BPromise[_0x99ef('0x95')]()[_0x99ef('0x2b')](function(){if(!_0x4b531d){if(_0x1941b6[_0x99ef('0x3e')][_0x99ef('0x76')])return;_0xd50133[_0x99ef('0x7f')](_0x99ef('0x96'));_0x597647['where'](_0x99ef('0x96'));return;}if(_0x1941b6[_0x99ef('0x97')][_0x99ef('0x98')]!==_0x99ef('0x99'))return;return _0x1941b6[_0x99ef('0x97')][_0x99ef('0x9a')]({'attributes':['id'],'raw':!![]})['then'](function(_0x5a8e67){if(_[_0x99ef('0x75')](_0x5a8e67)){_0xd50133[_0x99ef('0x7f')](_0x99ef('0x9b'));_0x597647[_0x99ef('0x7f')]('i.SmsAccountId\x20IS\x20NULL');}else{_0xd50133['where']('i.SmsAccountId\x20IN\x20?',_[_0x99ef('0x31')](_0x5a8e67,'id'));_0x597647['where'](_0x99ef('0x77'),_[_0x99ef('0x31')](_0x5a8e67,'id'));}});})[_0x99ef('0x2b')](function(){if(_0x1941b6[_0x99ef('0x97')][_0x99ef('0x98')]===_0x99ef('0x99')&&!_0x4b531d&&!_0x1941b6['query']['SmsAccountId'])return[];return db[_0x99ef('0x9c')][_0x99ef('0x3e')](_0xd50133[_0x99ef('0x9d')](),_0x5c3e56);})['then'](function(_0x2bc2da){_0xa0d1e3[_0x99ef('0x26')]=_0x2bc2da[_0x99ef('0x43')];if(_0xa0d1e3[_0x99ef('0x26')]===0x0)return[];return db['sequelize'][_0x99ef('0x3e')](_0x388f9d[_0x99ef('0x9d')](),_0x5c3e56)[_0x99ef('0x2b')](function(_0x1d3011){_0x1ffa41=_['keyBy'](_0x1d3011,'id');_0x5c3e56=_[_0x99ef('0x9e')](_0x5c3e56,{'model':db[_0x99ef('0x9f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1941b6[_0x99ef('0x3e')]['fields']){_0x6dff27['attributes'][_0x99ef('0x34')](function(_0xcb7ce5){_0x597647[_0x99ef('0x47')]('i.'+_0xcb7ce5);});}else{_0x597647[_0x99ef('0x47')](_0x99ef('0x90'),_0x99ef('0x91'));_0x597647[_0x99ef('0x47')](_0x99ef('0xa0'),_0x99ef('0xa1'));_0x597647['field'](_0x99ef('0xa2'),_0x99ef('0xa3'));_0x597647[_0x99ef('0x47')]('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0x99ef('0x92'));_0x597647['field']('i.*');_0x597647[_0x99ef('0x47')](_0x99ef('0xa4'),_0x99ef('0xa5'));_0x597647[_0x99ef('0x47')](_0x99ef('0xa6'),'Contact.lastName');_0x597647['field']('c.email',_0x99ef('0xa7'));_0x597647[_0x99ef('0x47')](_0x99ef('0xa8'),_0x99ef('0xa9'));_0x597647[_0x99ef('0x47')](_0x99ef('0xaa'),'Contact.mobile');_0x597647[_0x99ef('0x47')]('c.fax',_0x99ef('0xab'));_0x597647[_0x99ef('0x47')](_0x99ef('0xac'),_0x99ef('0xad'));_0x597647[_0x99ef('0x47')]('o.internal',_0x99ef('0xae'));_0x597647[_0x99ef('0x47')](_0x99ef('0xaf'),_0x99ef('0x33'));}if(_0x6dff27['limit'])_0x597647[_0x99ef('0x25')](_0x6dff27[_0x99ef('0x25')]);if(_0x6dff27[_0x99ef('0x23')])_0x597647[_0x99ef('0x23')](_0x6dff27[_0x99ef('0x23')]);return db[_0x99ef('0x9c')][_0x99ef('0x3e')](_0x597647[_0x99ef('0x9d')](),_0x5c3e56);})[_0x99ef('0x2b')](function(_0x4aeaa8){if(_0x4aeaa8[_0x99ef('0x43')]>0x0)_0x1431bc[_0x99ef('0x7f')](_0x99ef('0xb0'),_[_0x99ef('0x31')](_0x4aeaa8,'id'));return db[_0x99ef('0x9c')][_0x99ef('0x3e')](_0x1431bc[_0x99ef('0x9d')](),_0x5c3e56)[_0x99ef('0x2b')](function(_0x2ec9df){var _0x204664=_[_0x99ef('0xb1')](_0x2ec9df,'SmsInteractionId');var _0x395c89=[];_0x4aeaa8[_0x99ef('0x34')](function(_0xb8ba6f){_0x395c89[_0x99ef('0x36')](updateSmsInteraction(_0xb8ba6f,_0x1ffa41,_0x204664));});return BPromise[_0x99ef('0xb2')](_0x395c89);});});})[_0x99ef('0x2b')](function(_0x316840){_0xa0d1e3[_0x99ef('0xb3')]=_0x316840;return _0xa0d1e3;})[_0x99ef('0x2b')](respondWithFilteredResult(_0x372363,_0x6dff27))[_0x99ef('0x37')](handleError(_0x372363,null));};exports[_0x99ef('0xb4')]=function(_0x575bdc,_0x1e1df7){var _0x16bd65={'raw':![],'where':{'id':_0x575bdc[_0x99ef('0xb5')]['id']}},_0x4dc184={};_0x4dc184[_0x99ef('0x3d')]=_[_0x99ef('0xb6')](db[_0x99ef('0x9f')][_0x99ef('0x39')]);_0x4dc184[_0x99ef('0x3e')]=_[_0x99ef('0xb6')](_0x575bdc[_0x99ef('0x3e')]);_0x4dc184[_0x99ef('0x3f')]=_['intersection'](_0x4dc184['model'],_0x4dc184[_0x99ef('0x3e')]);_0x16bd65['attributes']=_[_0x99ef('0x40')](_0x4dc184[_0x99ef('0x3d')],qs['fields'](_0x575bdc[_0x99ef('0x3e')][_0x99ef('0x42')]));_0x16bd65[_0x99ef('0x41')]=_0x16bd65['attributes'][_0x99ef('0x43')]?_0x16bd65[_0x99ef('0x41')]:_0x4dc184[_0x99ef('0x3d')];if(_0x575bdc[_0x99ef('0x3e')][_0x99ef('0xb7')]){_0x16bd65[_0x99ef('0xb8')]=[{'all':!![]}];}_0x16bd65=_[_0x99ef('0x9e')]({},_0x16bd65,_0x575bdc[_0x99ef('0xb9')]);return db['SmsInteraction']['find'](_0x16bd65)[_0x99ef('0x2b')](handleEntityNotFound(_0x1e1df7,null))[_0x99ef('0x2b')](respondWithResult(_0x1e1df7,null))['catch'](handleError(_0x1e1df7,null));};exports[_0x99ef('0xba')]=function(_0x3b5478,_0xfb7108){return db[_0x99ef('0x9f')][_0x99ef('0xba')](_0x3b5478[_0x99ef('0x72')],{})['then'](respondWithResult(_0xfb7108,0xc9))[_0x99ef('0x37')](handleError(_0xfb7108,null));};exports[_0x99ef('0x2a')]=function(_0x36d860,_0x25f160){if(_0x36d860[_0x99ef('0x72')]['id']){delete _0x36d860[_0x99ef('0x72')]['id'];}return db[_0x99ef('0x9f')]['find']({'where':{'id':_0x36d860['params']['id']}})['then'](handleEntityNotFound(_0x25f160,null))['then'](saveUpdates(_0x36d860[_0x99ef('0x72')],null))['then'](respondWithResult(_0x25f160,null))[_0x99ef('0x37')](handleError(_0x25f160,null));};exports[_0x99ef('0x2c')]=function(_0x6af4a6,_0x42d43b){return db[_0x99ef('0x9f')][_0x99ef('0x5f')]({'where':{'id':_0x6af4a6[_0x99ef('0xb5')]['id']}})[_0x99ef('0x2b')](handleEntityNotFound(_0x42d43b,null))[_0x99ef('0x2b')](removeEntity(_0x42d43b,null))[_0x99ef('0x37')](handleError(_0x42d43b,null));};exports[_0x99ef('0xbb')]=function(_0x1a578f,_0x8f2463){return db[_0x99ef('0x9f')][_0x99ef('0xbb')]()[_0x99ef('0x2b')](respondWithResult(_0x8f2463,null))[_0x99ef('0x37')](handleError(_0x8f2463,null));};exports[_0x99ef('0xbc')]=function(_0x3c070d,_0x17a0ca,_0x33170d){return db[_0x99ef('0xbd')]['find']({'where':{'id':_0x3c070d['params']['id']}})['then'](handleEntityNotFound(_0x17a0ca,null))['then'](function(_0x19061f){if(_0x19061f){return _0x19061f[_0x99ef('0xbc')](_0x3c070d[_0x99ef('0x72')]['ids'],_['omit'](_0x3c070d[_0x99ef('0x72')],['ids','id'])||{});}})['then'](respondWithResult(_0x17a0ca,null))[_0x99ef('0x37')](handleError(_0x17a0ca,null));};exports[_0x99ef('0xbe')]=function(_0x2f6a6b,_0x5097fc,_0x48177f){var _0x3693eb={'raw':![],'where':{}};var _0x2692cf={};var _0x409717={'count':0x0,'rows':[]};return db['SmsInteraction'][_0x99ef('0xbf')]({'where':{'id':_0x2f6a6b[_0x99ef('0xb5')]['id']}})[_0x99ef('0x2b')](handleEntityNotFound(_0x5097fc,null))['then'](function(_0x19419d){if(_0x19419d){_0x2692cf['model']=_[_0x99ef('0xb6')](db[_0x99ef('0xbd')][_0x99ef('0x39')]);_0x2692cf[_0x99ef('0x3e')]=_[_0x99ef('0xb6')](_0x2f6a6b['query']);_0x2692cf[_0x99ef('0x3f')]=_[_0x99ef('0x40')](_0x2692cf[_0x99ef('0x3d')],_0x2692cf[_0x99ef('0x3e')]);_0x3693eb[_0x99ef('0x41')]=_[_0x99ef('0x40')](_0x2692cf[_0x99ef('0x3d')],qs[_0x99ef('0x42')](_0x2f6a6b['query'][_0x99ef('0x42')]));_0x3693eb[_0x99ef('0x41')]=_0x3693eb[_0x99ef('0x41')][_0x99ef('0x43')]?_0x3693eb[_0x99ef('0x41')]:_0x2692cf[_0x99ef('0x3d')];if(!_0x2f6a6b[_0x99ef('0x3e')][_0x99ef('0xc0')](_0x99ef('0xc1'))){_0x3693eb[_0x99ef('0x25')]=qs[_0x99ef('0x25')](_0x2f6a6b[_0x99ef('0x3e')][_0x99ef('0x25')]);_0x3693eb[_0x99ef('0x23')]=qs[_0x99ef('0x23')](_0x2f6a6b[_0x99ef('0x3e')][_0x99ef('0x23')]);}_0x3693eb[_0x99ef('0x44')]=qs[_0x99ef('0x45')](_0x2f6a6b[_0x99ef('0x3e')][_0x99ef('0x45')]);_0x3693eb[_0x99ef('0x7f')]=qs[_0x99ef('0x3f')](_[_0x99ef('0x46')](_0x2f6a6b[_0x99ef('0x3e')],_0x2692cf[_0x99ef('0x3f')]));_0x3693eb['where'][_0x99ef('0xc2')]=_0x19419d['id'];if(_0x2f6a6b[_0x99ef('0x3e')][_0x99ef('0x84')]){_0x3693eb['where']=_[_0x99ef('0x9e')](_0x3693eb[_0x99ef('0x7f')],{'$or':_[_0x99ef('0x31')](_0x3693eb[_0x99ef('0x41')],function(_0x1152ee){var _0x225197={};_0x225197[_0x1152ee]={'$like':'%'+_0x2f6a6b['query'][_0x99ef('0x84')]+'%'};return _0x225197;})});}if(_0x2f6a6b[_0x99ef('0x3e')]['$gte']){var _0x4adab5=_0x2f6a6b[_0x99ef('0x3e')][_0x99ef('0x7b')][_0x99ef('0x65')](',');var _0x42e4f6={};_0x42e4f6[_0x4adab5[0x0]]={'$gte':moment(_0x4adab5[0x1])[_0x99ef('0xc3')]('YYYY-MM-DD\x20HH:mm:ss')};_0x3693eb['where']=_[_0x99ef('0x9e')](_0x3693eb[_0x99ef('0x7f')],_0x42e4f6);}_0x3693eb=_[_0x99ef('0x9e')]({},_0x3693eb,_0x2f6a6b[_0x99ef('0xb9')]);return db[_0x99ef('0xbd')]['count']({'where':_0x3693eb['where']})[_0x99ef('0x2b')](function(_0x297741){_0x409717[_0x99ef('0x26')]=_0x297741;if(_0x2f6a6b[_0x99ef('0x3e')][_0x99ef('0xb7')]){_0x3693eb[_0x99ef('0xb8')]=[{'all':!![]}];}return db[_0x99ef('0xbd')]['findAll'](_0x3693eb);})[_0x99ef('0x2b')](function(_0x18006c){_0x409717[_0x99ef('0xb3')]=_0x18006c;return _0x409717;});}})[_0x99ef('0x2b')](respondWithFilteredResult(_0x5097fc,_0x3693eb))[_0x99ef('0x37')](handleError(_0x5097fc,null));};exports[_0x99ef('0xc4')]=function(_0x8f236a,_0x543d20,_0x39ceca){return db[_0x99ef('0x9f')][_0x99ef('0x5f')]({'where':{'id':_0x8f236a[_0x99ef('0xb5')]['id']}})['then'](handleEntityNotFound(_0x543d20,null))[_0x99ef('0x2b')](function(_0x962431){if(_0x962431){return _0x962431['setTags'](_0x8f236a[_0x99ef('0x72')][_0x99ef('0xc5')],_[_0x99ef('0xc6')](_0x8f236a[_0x99ef('0x72')],['ids','id'])||{})[_0x99ef('0xc7')](function(){return db[_0x99ef('0x6d')][_0x99ef('0xc8')]({'attributes':['id',_0x99ef('0x2f'),'color'],'where':{'id':_0x8f236a['body']['ids']}});})[_0x99ef('0x2b')](function(_0xe97691){socket[_0x99ef('0xc9')](_0x99ef('0xca'),{'id':Number(_0x8f236a[_0x99ef('0xb5')]['id']),'tags':_0xe97691||[]});return{'id':Number(_0x8f236a[_0x99ef('0xb5')]['id']),'tags':_0xe97691||[]};});}})[_0x99ef('0x2b')](respondWithResult(_0x543d20,null))[_0x99ef('0x37')](handleError(_0x543d20,null));};exports[_0x99ef('0xcb')]=function(_0x3fc8b3,_0x40002f,_0x48c6fc){return db['SmsInteraction'][_0x99ef('0x5f')]({'where':{'id':_0x3fc8b3[_0x99ef('0xb5')]['id']}})['then'](handleEntityNotFound(_0x40002f,null))[_0x99ef('0x2b')](function(_0x5f50e0){if(_0x5f50e0){return _0x5f50e0['removeTags'](_0x3fc8b3[_0x99ef('0x3e')][_0x99ef('0xc5')]);}})[_0x99ef('0x2b')](respondWithStatusCode(_0x40002f,null))['catch'](handleError(_0x40002f,null));};exports[_0x99ef('0xcc')]=function(_0x410c84,_0x52c11a){var _0x243421=moment()[_0x99ef('0xcd')]()[_0x99ef('0x9d')]();var _0x344ef3=path[_0x99ef('0xce')](config['root'],'server',_0x99ef('0xcf'),_0x99ef('0xd0'));var _0x3b2090=path[_0x99ef('0xce')](config[_0x99ef('0xd1')],'server',_0x99ef('0xcf'),'attachments');var _0x246f5e=path[_0x99ef('0xce')](_0x344ef3,_0x243421);var _0x2354fb=util[_0x99ef('0xc3')]('transcript-%d-%s.zip',_0x410c84['params']['id'],_0x243421);var _0x3cfeed=path[_0x99ef('0xce')](_0x344ef3,_0x2354fb);var _0x122c92=[];_0x122c92[_0x99ef('0x36')]({'model':db[_0x99ef('0x6f')],'as':_0x99ef('0x6f'),'attributes':['id',_0x99ef('0x32')],'raw':!![]});_0x122c92[_0x99ef('0x36')]({'model':db['CmContact'],'as':_0x99ef('0x64'),'attributes':['id',_0x99ef('0xd2'),'lastName'],'raw':!![]});var _0x356739=[{'model':db[_0x99ef('0xbd')],'as':'Messages','attributes':['id',_0x99ef('0x72'),_0x99ef('0x79'),_0x99ef('0xd3'),_0x99ef('0xd4'),_0x99ef('0x80')],'include':_0x122c92}];_0x356739[_0x99ef('0x36')]({'model':db[_0x99ef('0xd5')],'as':_0x99ef('0xd6'),'attributes':['id',_0x99ef('0x2f')]});_0x356739[_0x99ef('0x36')]({'model':db[_0x99ef('0x6f')],'as':_0x99ef('0xd7'),'attributes':['id',_0x99ef('0x32')]});return db[_0x99ef('0x9f')][_0x99ef('0x5f')]({'where':{'id':_0x410c84[_0x99ef('0xb5')]['id']},'include':_0x356739})[_0x99ef('0x2b')](handleEntityNotFound(_0x52c11a,null))[_0x99ef('0x2b')](function(_0x16a427){if(_0x16a427){var _0x4344f3=_0x16a427[_0x99ef('0xd8')]({'plain':!![]});fs['mkdirSync'](_0x246f5e);var _0x306f9a={'channel':_0x99ef('0xd9'),'account':_0x4344f3[_0x99ef('0xd6')][_0x99ef('0x2f')],'agent':_0x4344f3[_0x99ef('0xd7')]?_0x4344f3[_0x99ef('0xd7')][_0x99ef('0x32')]:_0x99ef('0xda'),'createdAt':moment(_0x4344f3[_0x99ef('0x79')])[_0x99ef('0xc3')](_0x99ef('0xdb'))[_0x99ef('0x9d')](),'closedAt':_0x4344f3['closed']?moment(_0x4344f3[_0x99ef('0xdc')])['format'](_0x99ef('0xdb'))[_0x99ef('0x9d')]():'','disposition':_0x4344f3[_0x99ef('0xdd')],'messages':_(_0x4344f3[_0x99ef('0xde')])[_0x99ef('0x84')]({'secret':![]})['map'](function(_0x5845d4){return{'date':moment(_0x5845d4['createdAt'])[_0x99ef('0xc3')]('YYYY-MM-DD\x20HH:mm:ss')[_0x99ef('0x9d')](),'sender':_0x5845d4[_0x99ef('0xd3')]===_0x99ef('0xdf')?_0x5845d4[_0x99ef('0x6f')]?_0x5845d4['User'][_0x99ef('0x32')]:_0x99ef('0xe0'):_0x5845d4['Contact'][_0x99ef('0xd2')]+(_0x5845d4['Contact'][_0x99ef('0xe1')]?'\x20'+_0x5845d4[_0x99ef('0x64')][_0x99ef('0xe1')]:''),'body':_0x5845d4['body'],'direction':_0x5845d4[_0x99ef('0xd3')]==='out'?'A':'C','secret':_0x5845d4[_0x99ef('0xd4')],'read':_0x5845d4['read']};})[_0x99ef('0x60')]()};return ejs[_0x99ef('0xe2')](path[_0x99ef('0xce')](config[_0x99ef('0xd1')],'server',_0x99ef('0xe3'),_0x99ef('0xe4')),{'interaction':_0x306f9a})[_0x99ef('0x2b')](function(_0x271f12){var _0xb2ef0d=path[_0x99ef('0xce')](_0x246f5e,'transcript-'+_0x4344f3['id']+'-'+_0x243421+'.pdf');var _0x4556c3={'path':_0xb2ef0d,'channel':_0x99ef('0xd9'),'interactionId':_0x4344f3['id']};return pdf[_0x99ef('0xe5')](_0x271f12,_0x4556c3);})['then'](function(){return new BPromise(function(_0x437c8f,_0x35380a){zipdir(_0x246f5e,{'saveTo':_0x3cfeed},function(_0x45e5d9,_0x1369b4){if(_0x45e5d9)return _0x35380a(_0x45e5d9);return _0x437c8f(_0x1369b4);});})['then'](function(){return new BPromise(function(_0x1c0a95,_0x2e8c35){rimraf(_0x246f5e,function(_0x377a6d){if(_0x377a6d)_0x2e8c35(_0x377a6d);return _0x1c0a95();});});})['then'](function(){return _0x52c11a[_0x99ef('0xcc')](_0x3cfeed,_0x2354fb,function(_0x21afc3){if(_0x21afc3){console[_0x99ef('0xe6')](_0x99ef('0xe7'),_0x21afc3);}else{fs[_0x99ef('0xe8')](_0x3cfeed);}});});});}else{return _0x52c11a[_0x99ef('0x1f')](0xc8);}})[_0x99ef('0x37')](handleError(_0x52c11a,null));};
\ No newline at end of file
index e050ea7..81ec5d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32b6=['exports','events','../../mysqldb','SmsMessage','update','remove','getUsers','then','setDataValue','map','findAll','length','emit','catch','hasOwnProperty','hook'];(function(_0x54464f,_0x55a93d){var _0x5085b4=function(_0x56f998){while(--_0x56f998){_0x54464f['push'](_0x54464f['shift']());}};_0x5085b4(++_0x55a93d);}(_0x32b6,0x1d1));var _0x632b=function(_0x5eb73e,_0x578679){_0x5eb73e=_0x5eb73e-0x0;var _0x14cd1e=_0x32b6[_0x5eb73e];return _0x14cd1e;};'use strict';var EventEmitter=require(_0x632b('0x0'));var SmsInteraction=require(_0x632b('0x1'))['db']['SmsInteraction'];var SmsMessage=require(_0x632b('0x1'))['db'][_0x632b('0x2')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x632b('0x3'),'afterDestroy':_0x632b('0x4')};function emitEvent(_0x3ba3a7){return function(_0x3a0e0e,_0x1adfe6,_0x122768){_0x3a0e0e[_0x632b('0x5')]({'attributes':['id'],'raw':!![]})[_0x632b('0x6')](function(_0x3bbf43){_0x3a0e0e[_0x632b('0x7')]('Users',_0x3bbf43[_0x632b('0x8')](function(_0x173270){return{'id':_0x173270['id']};}));return SmsMessage[_0x632b('0x9')]({'where':{'SmsInteractionId':_0x3a0e0e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x632b('0x6')](function(_0x4961b1){_0x3a0e0e['setDataValue']('unreadMessages',_0x4961b1[_0x632b('0xa')]);SmsInteractionEvents['emit'](_0x3ba3a7+':'+_0x3a0e0e['id'],_0x3a0e0e);SmsInteractionEvents[_0x632b('0xb')](_0x3ba3a7,_0x3a0e0e);_0x122768(null);})[_0x632b('0xc')](_0x122768(null));};}for(var e in events){if(events[_0x632b('0xd')](e)){var event=events[e];SmsInteraction[_0x632b('0xe')](e,emitEvent(event));}}module[_0x632b('0xf')]=SmsInteractionEvents;
\ No newline at end of file
+var _0xed3c=['unreadMessages','length','emit','catch','hasOwnProperty','exports','events','../../mysqldb','SmsInteraction','setMaxListeners','save','update','getUsers','Users','then','setDataValue'];(function(_0x3cfb22,_0x160bee){var _0x3979ad=function(_0x1a7180){while(--_0x1a7180){_0x3cfb22['push'](_0x3cfb22['shift']());}};_0x3979ad(++_0x160bee);}(_0xed3c,0x1a6));var _0xced3=function(_0x414ff1,_0xf0462b){_0x414ff1=_0x414ff1-0x0;var _0x29c53f=_0xed3c[_0x414ff1];return _0x29c53f;};'use strict';var EventEmitter=require(_0xced3('0x0'));var SmsInteraction=require(_0xced3('0x1'))['db'][_0xced3('0x2')];var SmsMessage=require(_0xced3('0x1'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xced3('0x3')](0x0);var events={'afterCreate':_0xced3('0x4'),'afterUpdate':_0xced3('0x5'),'afterDestroy':'remove'};function emitEvent(_0x51e500){return function(_0x3d3aa0,_0x1ada18,_0x2f92f8){_0x3d3aa0[_0xced3('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x510164){_0x3d3aa0['setDataValue'](_0xced3('0x7'),_0x510164['map'](function(_0x5bc7a7){return{'id':_0x5bc7a7['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x3d3aa0['id'],'direction':'in','read':![]},'raw':!![]});})[_0xced3('0x8')](function(_0x321c42){_0x3d3aa0[_0xced3('0x9')](_0xced3('0xa'),_0x321c42[_0xced3('0xb')]);SmsInteractionEvents['emit'](_0x51e500+':'+_0x3d3aa0['id'],_0x3d3aa0);SmsInteractionEvents[_0xced3('0xc')](_0x51e500,_0x3d3aa0);_0x2f92f8(null);})[_0xced3('0xd')](_0x2f92f8(null));};}for(var e in events){if(events[_0xced3('0xe')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0xced3('0xf')]=SmsInteractionEvents;
\ No newline at end of file
index 094853b..153276a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb939=['request-promise','path','rimraf','../../config/environment','./smsInteraction.attributes','exports','define','SmsInteraction','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0xa4e24,_0x174458){var _0x98f23a=function(_0xdc012d){while(--_0xdc012d){_0xa4e24['push'](_0xa4e24['shift']());}};_0x98f23a(++_0x174458);}(_0xb939,0x6a));var _0x9b93=function(_0xd473be,_0x1ec762){_0xd473be=_0xd473be-0x0;var _0x106077=_0xb939[_0xd473be];return _0x106077;};'use strict';var _=require(_0x9b93('0x0'));var util=require(_0x9b93('0x1'));var logger=require(_0x9b93('0x2'))(_0x9b93('0x3'));var moment=require(_0x9b93('0x4'));var BPromise=require(_0x9b93('0x5'));var rp=require(_0x9b93('0x6'));var fs=require('fs');var path=require(_0x9b93('0x7'));var rimraf=require(_0x9b93('0x8'));var config=require(_0x9b93('0x9'));var attributes=require(_0x9b93('0xa'));module[_0x9b93('0xb')]=function(_0x228b03,_0x16ebbd){return _0x228b03[_0x9b93('0xc')](_0x9b93('0xd'),attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3de1c2,_0x176874,_0x457aeb){if(_0x3de1c2['changed']('closed')){_0x3de1c2['closedAt']=moment()[_0x9b93('0xe')](_0x9b93('0xf'));}_0x457aeb(null,_0x3de1c2);}}});};
\ No newline at end of file
+var _0x6c7f=['sms_interactions','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','api','request-promise','rimraf','../../config/environment','./smsInteraction.attributes','exports','define'];(function(_0x2f9181,_0x5466ec){var _0x5c7831=function(_0x46b17a){while(--_0x46b17a){_0x2f9181['push'](_0x2f9181['shift']());}};_0x5c7831(++_0x5466ec);}(_0x6c7f,0xac));var _0xf6c7=function(_0x163c3d,_0x106caa){_0x163c3d=_0x163c3d-0x0;var _0x48ecb0=_0x6c7f[_0x163c3d];return _0x48ecb0;};'use strict';var _=require(_0xf6c7('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf6c7('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xf6c7('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf6c7('0x3'));var config=require(_0xf6c7('0x4'));var attributes=require(_0xf6c7('0x5'));module[_0xf6c7('0x6')]=function(_0x271c2e,_0x304baf){return _0x271c2e[_0xf6c7('0x7')]('SmsInteraction',attributes,{'tableName':_0xf6c7('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x372360,_0x3792c7,_0x4e4241){if(_0x372360['changed'](_0xf6c7('0x9'))){_0x372360[_0xf6c7('0xa')]=moment()['format'](_0xf6c7('0xb'));}_0x4e4241(null,_0x372360);}}});};
\ No newline at end of file
index edc7b6a..39319ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12c7=['error','code','message','info','result','catch','UpdateSmsInteraction','SmsInteraction','body','options','raw','where','attributes','AddTagsToSmsInteraction','find','addTags','ids','spread','AddTags','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','request','then','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0x12c7,0x172));var _0x712c=function(_0x1810ac,_0x4e262f){_0x1810ac=_0x1810ac-0x0;var _0x26295c=_0x12c7[_0x1810ac];return _0x26295c;};'use strict';var _=require('lodash');var util=require(_0x712c('0x0'));var moment=require(_0x712c('0x1'));var BPromise=require(_0x712c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x712c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x712c('0x4'))(_0x712c('0x5'));var config=require(_0x712c('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x712c('0x7')]['http']({'port':0x232a});config[_0x712c('0x8')]=_[_0x712c('0x9')](config[_0x712c('0x8')],{'host':_0x712c('0xa'),'port':0x18eb});var socket=require(_0x712c('0xb'))(new Redis(config[_0x712c('0x8')]));require(_0x712c('0xc'))['register'](socket);function respondWithRpcPromise(_0xcfabbf,_0x1aba8b,_0x5bafc1){return new BPromise(function(_0x506666,_0x39bb19){return client[_0x712c('0xd')](_0xcfabbf,_0x5bafc1)[_0x712c('0xe')](function(_0x1d52ce){logger['info'](_0x712c('0xf'),_0x1aba8b,_0x712c('0x10'));logger[_0x712c('0x11')](_0x712c('0x12'),_0x1aba8b,_0x712c('0x10'),JSON[_0x712c('0x13')](_0x1d52ce));if(_0x1d52ce[_0x712c('0x14')]){if(_0x1d52ce[_0x712c('0x14')][_0x712c('0x15')]===0x1f4){logger[_0x712c('0x14')](_0x712c('0xf'),_0x1aba8b,_0x1d52ce[_0x712c('0x14')][_0x712c('0x16')]);return _0x39bb19(_0x1d52ce['error'][_0x712c('0x16')]);}logger['error'](_0x712c('0xf'),_0x1aba8b,_0x1d52ce['error']['message']);return _0x506666(_0x1d52ce[_0x712c('0x14')][_0x712c('0x16')]);}else{logger[_0x712c('0x17')](_0x712c('0xf'),_0x1aba8b,_0x712c('0x10'));_0x506666(_0x1d52ce[_0x712c('0x18')]['message']);}})[_0x712c('0x19')](function(_0x22004f){logger[_0x712c('0x14')]('SmsInteraction,\x20%s,\x20%s',_0x1aba8b,_0x22004f);_0x39bb19(_0x22004f);});});}exports[_0x712c('0x1a')]=function(_0x1a5906){var _0x5d5712=this;return new Promise(function(_0x187f5a,_0x29a9ec){return db[_0x712c('0x1b')]['update'](_0x1a5906[_0x712c('0x1c')],{'raw':_0x1a5906[_0x712c('0x1d')]?_0x1a5906[_0x712c('0x1d')][_0x712c('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1a5906['options']?_0x1a5906[_0x712c('0x1d')][_0x712c('0x1f')]||null:null,'attributes':_0x1a5906['options']?_0x1a5906[_0x712c('0x1d')][_0x712c('0x20')]||null:null,'limit':_0x1a5906[_0x712c('0x1d')]?_0x1a5906[_0x712c('0x1d')]['limit']||null:null})[_0x712c('0xe')](function(_0x53cbfa){logger[_0x712c('0x17')]('UpdateSmsInteraction',_0x1a5906);logger['debug']('UpdateSmsInteraction',_0x1a5906,JSON[_0x712c('0x13')](_0x53cbfa));_0x187f5a(_0x53cbfa);})[_0x712c('0x19')](function(_0x15414f){logger[_0x712c('0x14')]('UpdateSmsInteraction',_0x15414f[_0x712c('0x16')],_0x1a5906);_0x29a9ec(_0x5d5712[_0x712c('0x14')](0x1f4,_0x15414f[_0x712c('0x16')]));});});};exports[_0x712c('0x21')]=function(_0x301e42){return new Promise(function(_0x1e5ec9,_0x459337){return db['SmsInteraction'][_0x712c('0x22')]({'where':_0x301e42[_0x712c('0x1d')]?_0x301e42[_0x712c('0x1d')][_0x712c('0x1f')]||null:null})['then'](function(_0x56130b){if(_0x56130b){return _0x56130b[_0x712c('0x23')](_0x301e42[_0x712c('0x1c')][_0x712c('0x24')],_['omit'](_0x301e42[_0x712c('0x1c')],[_0x712c('0x24'),'id'])||{});}})[_0x712c('0x25')](function(_0x307928){logger[_0x712c('0x17')]('AddTags',_0x301e42);logger[_0x712c('0x11')](_0x712c('0x26'),_0x301e42,JSON[_0x712c('0x13')](_0x307928));_0x1e5ec9(_0x307928);})[_0x712c('0x19')](function(_0xf54fa8){logger[_0x712c('0x14')](_0x712c('0x26'),_0xf54fa8[_0x712c('0x16')],_0x301e42);_0x459337(_this[_0x712c('0x14')](0x1f4,_0xf54fa8['message']));});});};
\ No newline at end of file
+var _0xa597=['../../config/utils','rpc','jayson/promise','redis','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateSmsInteraction','SmsInteraction','update','options','raw','where','attributes','limit','AddTagsToSmsInteraction','find','ids','omit','body','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x286bfb,_0x46ac3c){var _0x52b683=function(_0x3e7fb1){while(--_0x3e7fb1){_0x286bfb['push'](_0x286bfb['shift']());}};_0x52b683(++_0x46ac3c);}(_0xa597,0x150));var _0x7a59=function(_0x1418a5,_0x19c106){_0x1418a5=_0x1418a5-0x0;var _0x22c849=_0xa597[_0x1418a5];return _0x22c849;};'use strict';var _=require(_0x7a59('0x0'));var util=require(_0x7a59('0x1'));var moment=require(_0x7a59('0x2'));var BPromise=require(_0x7a59('0x3'));var rs=require(_0x7a59('0x4'));var fs=require('fs');var Redis=require(_0x7a59('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x7a59('0x6'));var logger=require('../../config/logger')(_0x7a59('0x7'));var config=require('../../config/environment');var jayson=require(_0x7a59('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x7a59('0x9')]=_['defaults'](config[_0x7a59('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7a59('0x9')]));require('./smsInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x3f1530,_0x1dd666,_0xcd73f2){return new BPromise(function(_0x687a34,_0xb79fde){return client[_0x7a59('0xa')](_0x3f1530,_0xcd73f2)[_0x7a59('0xb')](function(_0x5cd7a9){logger[_0x7a59('0xc')](_0x7a59('0xd'),_0x1dd666,_0x7a59('0xe'));logger[_0x7a59('0xf')](_0x7a59('0x10'),_0x1dd666,_0x7a59('0xe'),JSON[_0x7a59('0x11')](_0x5cd7a9));if(_0x5cd7a9[_0x7a59('0x12')]){if(_0x5cd7a9[_0x7a59('0x12')][_0x7a59('0x13')]===0x1f4){logger[_0x7a59('0x12')](_0x7a59('0xd'),_0x1dd666,_0x5cd7a9[_0x7a59('0x12')][_0x7a59('0x14')]);return _0xb79fde(_0x5cd7a9[_0x7a59('0x12')]['message']);}logger['error']('SmsInteraction,\x20%s,\x20%s',_0x1dd666,_0x5cd7a9[_0x7a59('0x12')]['message']);return _0x687a34(_0x5cd7a9[_0x7a59('0x12')][_0x7a59('0x14')]);}else{logger[_0x7a59('0xc')](_0x7a59('0xd'),_0x1dd666,'request\x20sent');_0x687a34(_0x5cd7a9[_0x7a59('0x15')]['message']);}})[_0x7a59('0x16')](function(_0x318a41){logger[_0x7a59('0x12')]('SmsInteraction,\x20%s,\x20%s',_0x1dd666,_0x318a41);_0xb79fde(_0x318a41);});});}exports[_0x7a59('0x17')]=function(_0x581524){var _0x2b659f=this;return new Promise(function(_0x10be04,_0x5ca224){return db[_0x7a59('0x18')][_0x7a59('0x19')](_0x581524['body'],{'raw':_0x581524['options']?_0x581524[_0x7a59('0x1a')][_0x7a59('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x581524[_0x7a59('0x1a')]?_0x581524['options'][_0x7a59('0x1c')]||null:null,'attributes':_0x581524[_0x7a59('0x1a')]?_0x581524[_0x7a59('0x1a')][_0x7a59('0x1d')]||null:null,'limit':_0x581524[_0x7a59('0x1a')]?_0x581524[_0x7a59('0x1a')][_0x7a59('0x1e')]||null:null})[_0x7a59('0xb')](function(_0x362670){logger[_0x7a59('0xc')](_0x7a59('0x17'),_0x581524);logger[_0x7a59('0xf')](_0x7a59('0x17'),_0x581524,JSON[_0x7a59('0x11')](_0x362670));_0x10be04(_0x362670);})[_0x7a59('0x16')](function(_0x12c6e1){logger[_0x7a59('0x12')](_0x7a59('0x17'),_0x12c6e1['message'],_0x581524);_0x5ca224(_0x2b659f[_0x7a59('0x12')](0x1f4,_0x12c6e1[_0x7a59('0x14')]));});});};exports[_0x7a59('0x1f')]=function(_0x32fb3a){return new Promise(function(_0x108839,_0x5f4409){return db['SmsInteraction'][_0x7a59('0x20')]({'where':_0x32fb3a[_0x7a59('0x1a')]?_0x32fb3a['options'][_0x7a59('0x1c')]||null:null})[_0x7a59('0xb')](function(_0x3841be){if(_0x3841be){return _0x3841be['addTags'](_0x32fb3a['body'][_0x7a59('0x21')],_[_0x7a59('0x22')](_0x32fb3a[_0x7a59('0x23')],[_0x7a59('0x21'),'id'])||{});}})[_0x7a59('0x24')](function(_0x4b563b){logger[_0x7a59('0xc')](_0x7a59('0x25'),_0x32fb3a);logger[_0x7a59('0xf')](_0x7a59('0x25'),_0x32fb3a,JSON[_0x7a59('0x11')](_0x4b563b));_0x108839(_0x4b563b);})[_0x7a59('0x16')](function(_0x19e2db){logger['error'](_0x7a59('0x25'),_0x19e2db[_0x7a59('0x14')],_0x32fb3a);_0x5f4409(_this[_0x7a59('0x12')](0x1f4,_0x19e2db['message']));});});};
\ No newline at end of file
index 6328051..37a29bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x062c=['remove','update','register','length','smsInteraction:','./smsInteraction.events','save'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x062c,0x163));var _0xc062=function(_0x19abce,_0x150f8b){_0x19abce=_0x19abce-0x0;var _0x124012=_0x062c[_0x19abce];return _0x124012;};'use strict';var SmsInteractionEvents=require(_0xc062('0x0'));var events=[_0xc062('0x1'),_0xc062('0x2'),_0xc062('0x3')];function createListener(_0xb3810d,_0x41a523){return function(_0x1ae64d){_0x41a523['emit'](_0xb3810d,_0x1ae64d);};}function removeListener(_0x24bf75,_0x273242){return function(){SmsInteractionEvents['removeListener'](_0x24bf75,_0x273242);};}exports[_0xc062('0x4')]=function(_0x3ed865){for(var _0x2fe044=0x0,_0x58e2c9=events[_0xc062('0x5')];_0x2fe044<_0x58e2c9;_0x2fe044++){var _0x2faee8=events[_0x2fe044];var _0x47f9a3=createListener(_0xc062('0x6')+_0x2faee8,_0x3ed865);SmsInteractionEvents['on'](_0x2faee8,_0x47f9a3);}};
\ No newline at end of file
+var _0x8e6b=['remove','register','length','smsInteraction:','./smsInteraction.events','save'];(function(_0x5d7698,_0x4ee6a5){var _0x2100e8=function(_0x46715d){while(--_0x46715d){_0x5d7698['push'](_0x5d7698['shift']());}};_0x2100e8(++_0x4ee6a5);}(_0x8e6b,0x178));var _0xb8e6=function(_0x1487b4,_0x5cdf82){_0x1487b4=_0x1487b4-0x0;var _0x332c4e=_0x8e6b[_0x1487b4];return _0x332c4e;};'use strict';var SmsInteractionEvents=require(_0xb8e6('0x0'));var events=[_0xb8e6('0x1'),_0xb8e6('0x2'),'update'];function createListener(_0x3d1a94,_0x4957b2){return function(_0x429f4a){_0x4957b2['emit'](_0x3d1a94,_0x429f4a);};}function removeListener(_0x177f64,_0x1b360d){return function(){SmsInteractionEvents['removeListener'](_0x177f64,_0x1b360d);};}exports[_0xb8e6('0x3')]=function(_0x386976){for(var _0x10b4ea=0x0,_0x491891=events[_0xb8e6('0x4')];_0x10b4ea<_0x491891;_0x10b4ea++){var _0x3db5cf=events[_0x10b4ea];var _0xca7b6c=createListener(_0xb8e6('0x5')+_0x3db5cf,_0x386976);SmsInteractionEvents['on'](_0x3db5cf,_0xca7b6c);}};
\ No newline at end of file
index 8b3e449..a127435 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2f2=['get','isAuthenticated','index','describe','/:id','show','post','tracked','/:id/status','status','put','update','/:id/accept','accept','/:id/reject','reject','delete','multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x106c82,_0x42f95f){var _0x11ac0d=function(_0x4eab37){while(--_0x4eab37){_0x106c82['push'](_0x106c82['shift']());}};_0x11ac0d(++_0x42f95f);}(_0xc2f2,0xb9));var _0x2c2f=function(_0x52085a,_0x3717ca){_0x52085a=_0x52085a-0x0;var _0x5afc1a=_0xc2f2[_0x52085a];return _0x5afc1a;};'use strict';var multer=require(_0x2c2f('0x0'));var util=require('util');var path=require(_0x2c2f('0x1'));var timeout=require(_0x2c2f('0x2'));var express=require(_0x2c2f('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x2c2f('0x4'));var interaction=require(_0x2c2f('0x5'));var config=require(_0x2c2f('0x6'));var controller=require('./smsMessage.controller');router[_0x2c2f('0x7')]('/',auth[_0x2c2f('0x8')](),controller[_0x2c2f('0x9')]);router['get']('/describe',auth[_0x2c2f('0x8')](),controller[_0x2c2f('0xa')]);router['get'](_0x2c2f('0xb'),auth[_0x2c2f('0x8')](),controller[_0x2c2f('0xc')]);router[_0x2c2f('0xd')]('/',auth[_0x2c2f('0x8')](),interaction[_0x2c2f('0xe')]('sms','smsmessage:create'),controller['create']);router['post'](_0x2c2f('0xf'),controller[_0x2c2f('0x10')]);router[_0x2c2f('0x11')](_0x2c2f('0xb'),auth[_0x2c2f('0x8')](),controller[_0x2c2f('0x12')]);router['put'](_0x2c2f('0x13'),auth[_0x2c2f('0x8')](),controller[_0x2c2f('0x14')]);router[_0x2c2f('0x11')](_0x2c2f('0x15'),auth[_0x2c2f('0x8')](),controller[_0x2c2f('0x16')]);router[_0x2c2f('0x17')](_0x2c2f('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x99cd=['tracked','sms','smsmessage:create','create','/:id/status','status','put','update','/:id/accept','/:id/reject','reject','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','index','/describe','/:id','isAuthenticated','show','post'];(function(_0x228f1f,_0x16aa12){var _0x199fe3=function(_0xaa4433){while(--_0xaa4433){_0x228f1f['push'](_0x228f1f['shift']());}};_0x199fe3(++_0x16aa12);}(_0x99cd,0x1df));var _0xd99c=function(_0xba1d54,_0x28f642){_0xba1d54=_0xba1d54-0x0;var _0x3ebb11=_0x99cd[_0xba1d54];return _0x3ebb11;};'use strict';var multer=require(_0xd99c('0x0'));var util=require('util');var path=require(_0xd99c('0x1'));var timeout=require(_0xd99c('0x2'));var express=require(_0xd99c('0x3'));var router=express[_0xd99c('0x4')]();var fs_extra=require(_0xd99c('0x5'));var auth=require(_0xd99c('0x6'));var interaction=require(_0xd99c('0x7'));var config=require(_0xd99c('0x8'));var controller=require(_0xd99c('0x9'));router[_0xd99c('0xa')]('/',auth['isAuthenticated'](),controller[_0xd99c('0xb')]);router['get'](_0xd99c('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0xd99c('0xa')](_0xd99c('0xd'),auth[_0xd99c('0xe')](),controller[_0xd99c('0xf')]);router[_0xd99c('0x10')]('/',auth[_0xd99c('0xe')](),interaction[_0xd99c('0x11')](_0xd99c('0x12'),_0xd99c('0x13')),controller[_0xd99c('0x14')]);router[_0xd99c('0x10')](_0xd99c('0x15'),controller[_0xd99c('0x16')]);router[_0xd99c('0x17')]('/:id',auth[_0xd99c('0xe')](),controller[_0xd99c('0x18')]);router[_0xd99c('0x17')](_0xd99c('0x19'),auth[_0xd99c('0xe')](),controller['accept']);router[_0xd99c('0x17')](_0xd99c('0x1a'),auth[_0xd99c('0xe')](),controller[_0xd99c('0x1b')]);router[_0xd99c('0x1c')]('/:id',auth[_0xd99c('0xe')](),controller[_0xd99c('0x1d')]);module[_0xd99c('0x1e')]=router;
\ No newline at end of file
index d5fe2bb..c1fdfa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ede=['BOOLEAN','ENUM','out','STRING','TEXT','exports','medium'];(function(_0x4b4b4e,_0x341f0c){var _0xf1a943=function(_0x36fb59){while(--_0x36fb59){_0x4b4b4e['push'](_0x4b4b4e['shift']());}};_0xf1a943(++_0x341f0c);}(_0x6ede,0x140));var _0xe6ed=function(_0x2d4661,_0x2da65c){_0x2d4661=_0x2d4661-0x0;var _0x42ed1e=_0x6ede[_0x2d4661];return _0x42ed1e;};'use strict';var Sequelize=require('sequelize');module[_0xe6ed('0x0')]={'body':{'type':Sequelize['TEXT'](_0xe6ed('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0xe6ed('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0xe6ed('0x3')]('in',_0xe6ed('0x4')),'defaultValue':_0xe6ed('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0xe6ed('0x5')](0xbe)},'phone':{'type':Sequelize[_0xe6ed('0x5')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0xe6ed('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xe6ed('0x5')]},'providerResponse':{'type':Sequelize[_0xe6ed('0x6')]}};
\ No newline at end of file
+var _0x8363=['TEXT','sequelize','exports','medium','BOOLEAN','ENUM','out','STRING','DATE'];(function(_0x3de14a,_0x59d798){var _0x3301b2=function(_0x404301){while(--_0x404301){_0x3de14a['push'](_0x3de14a['shift']());}};_0x3301b2(++_0x59d798);}(_0x8363,0x1f0));var _0x3836=function(_0x43cadb,_0x1e5ec2){_0x43cadb=_0x43cadb-0x0;var _0x5dbf3e=_0x8363[_0x43cadb];return _0x5dbf3e;};'use strict';var Sequelize=require(_0x3836('0x0'));module[_0x3836('0x1')]={'body':{'type':Sequelize['TEXT'](_0x3836('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x3836('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x3836('0x4')]('in',_0x3836('0x5')),'defaultValue':_0x3836('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x3836('0x6')](0xbe)},'phone':{'type':Sequelize[_0x3836('0x6')]},'readAt':{'type':Sequelize[_0x3836('0x7')]},'secret':{'type':Sequelize[_0x3836('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x3836('0x6')]},'providerResponse':{'type':Sequelize[_0x3836('0x8')]}};
\ No newline at end of file
index 69436b0..a359db3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd39c=['role','RejectMessage','rejectMessage','ContactId','email','rejectmessage','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','plivo','MessageUUID','indexOf','sent','delivered','Status','SmsAccount,\x20%s,\x20%s,\x20%s','plivio','infobip','groupName','DELIVERED','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','redis','./smsMessage.socket','client','http','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','stack','name','send','map','SmsMessage','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','merge','VIRTUAL','filter','include','findAll','keys','includeAll','options','body','find','params','destroy','describe','sms-interactions','accept','sms','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','SmsInteraction','SmsInteractionId','isNil','read1stAt','format','interaction','get','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','User','fullname','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s'];(function(_0x2aaead,_0x5dd654){var _0x1b92a1=function(_0x237ae9){while(--_0x237ae9){_0x2aaead['push'](_0x2aaead['shift']());}};_0x1b92a1(++_0x5dd654);}(_0xd39c,0x136));var _0xcd39=function(_0x4cc647,_0x2e85cd){_0x4cc647=_0x4cc647-0x0;var _0x134bc1=_0xd39c[_0x4cc647];return _0x134bc1;};'use strict';var emlformat=require(_0xcd39('0x0'));var rimraf=require(_0xcd39('0x1'));var zipdir=require(_0xcd39('0x2'));var jsonpatch=require(_0xcd39('0x3'));var rp=require('request-promise');var moment=require(_0xcd39('0x4'));var BPromise=require(_0xcd39('0x5'));var Mustache=require(_0xcd39('0x6'));var util=require('util');var path=require('path');var sox=require(_0xcd39('0x7'));var csv=require(_0xcd39('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcd39('0x9'));var _=require(_0xcd39('0xa'));var squel=require(_0xcd39('0xb'));var crypto=require(_0xcd39('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xcd39('0xd'));var toCsv=require(_0xcd39('0x8'));var querystring=require(_0xcd39('0xe'));var Papa=require(_0xcd39('0xf'));var Redis=require(_0xcd39('0x10'));var authService=require(_0xcd39('0x11'));var qs=require(_0xcd39('0x12'));var as=require(_0xcd39('0x13'));var hardwareService=require(_0xcd39('0x14'));var logger=require(_0xcd39('0x15'))(_0xcd39('0x16'));var utils=require('../../config/utils');var config=require(_0xcd39('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xcd39('0x18')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xcd39('0x19'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0xcd39('0x1a')]['http']({'port':0x232c});var client9002=jayson[_0xcd39('0x1a')][_0xcd39('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x3eaa25,_0x35781e,_0x4ae694,_0x462985){return new BPromise(function(_0xb5cbfd,_0x4833e5){var _0x2f65b0=_0x462985||client;return _0x2f65b0['request'](_0x3eaa25,_0x4ae694)[_0xcd39('0x1c')](function(_0x384caf){logger[_0xcd39('0x1d')](_0xcd39('0x1e'),_0x35781e,_0xcd39('0x1f'));logger[_0xcd39('0x20')](_0xcd39('0x21'),_0x35781e,_0xcd39('0x1f'),JSON[_0xcd39('0x22')](_0x384caf));if(_0x384caf[_0xcd39('0x23')]){if(_0x384caf[_0xcd39('0x23')][_0xcd39('0x24')]===0x1f4){logger[_0xcd39('0x23')](_0xcd39('0x1e'),_0x35781e,_0x384caf[_0xcd39('0x23')]['message']);return _0x4833e5(_0x384caf[_0xcd39('0x23')][_0xcd39('0x25')]);}logger['error'](_0xcd39('0x1e'),_0x35781e,_0x384caf[_0xcd39('0x23')][_0xcd39('0x25')]);return _0xb5cbfd(_0x384caf['error']['message']);}else{logger[_0xcd39('0x1d')](_0xcd39('0x1e'),_0x35781e,_0xcd39('0x1f'));_0xb5cbfd(_0x384caf['result'][_0xcd39('0x25')]);}})[_0xcd39('0x26')](function(_0x4b7113){logger[_0xcd39('0x23')](_0xcd39('0x1e'),_0x35781e,_0x4b7113);_0x4833e5(_0x4b7113);});});}function respondWithStatusCode(_0x3da0ce,_0x25045b){_0x25045b=_0x25045b||0xcc;return function(_0x11a6ce){if(_0x11a6ce){return _0x3da0ce[_0xcd39('0x27')](_0x25045b);}return _0x3da0ce[_0xcd39('0x28')](_0x25045b)[_0xcd39('0x29')]();};}function respondWithResult(_0x4ede89,_0x4a5f97){_0x4a5f97=_0x4a5f97||0xc8;return function(_0x79a072){if(_0x79a072){return _0x4ede89['status'](_0x4a5f97)[_0xcd39('0x2a')](_0x79a072);}};}function respondWithFilteredResult(_0x595262,_0xb9fa38){return function(_0x44e9b3){if(_0x44e9b3){var _0x5182bf=typeof _0xb9fa38[_0xcd39('0x2b')]===_0xcd39('0x2c')&&typeof _0xb9fa38[_0xcd39('0x2d')]===_0xcd39('0x2c');var _0x395116=_0x44e9b3[_0xcd39('0x2e')];var _0x13c12c=_0x5182bf?0x0:_0xb9fa38['offset'];var _0xa80888=_0x5182bf?_0x44e9b3['count']:_0xb9fa38[_0xcd39('0x2b')]+_0xb9fa38[_0xcd39('0x2d')];var _0x540dd8;if(_0xa80888>=_0x395116){_0xa80888=_0x395116;_0x540dd8=0xc8;}else{_0x540dd8=0xce;}_0x595262[_0xcd39('0x28')](_0x540dd8);return _0x595262[_0xcd39('0x2f')](_0xcd39('0x30'),_0x13c12c+'-'+_0xa80888+'/'+_0x395116)[_0xcd39('0x2a')](_0x44e9b3);}return null;};}function patchUpdates(_0x32260b){return function(_0x48f92f){try{jsonpatch[_0xcd39('0x31')](_0x48f92f,_0x32260b,!![]);}catch(_0x3a4b9a){return BPromise['reject'](_0x3a4b9a);}return _0x48f92f[_0xcd39('0x32')]();};}function saveUpdates(_0x596473,_0x26646b){return function(_0xd032fb){if(_0xd032fb){return _0xd032fb[_0xcd39('0x33')](_0x596473)[_0xcd39('0x1c')](function(_0x40293f){return _0x40293f;});}return null;};}function removeEntity(_0x12a5f1,_0x1f5fc2){return function(_0x46397f){if(_0x46397f){return _0x46397f['destroy']()[_0xcd39('0x1c')](function(){_0x12a5f1[_0xcd39('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41c1d7,_0x4e444d){return function(_0x16d88b){if(!_0x16d88b){_0x41c1d7[_0xcd39('0x27')](0x194);}return _0x16d88b;};}function handleError(_0x1359d8,_0x5d0f31){_0x5d0f31=_0x5d0f31||0x1f4;return function(_0x19b26b){logger[_0xcd39('0x23')](_0x19b26b[_0xcd39('0x34')]);if(_0x19b26b[_0xcd39('0x35')]){delete _0x19b26b[_0xcd39('0x35')];}_0x1359d8[_0xcd39('0x28')](_0x5d0f31)[_0xcd39('0x36')](_0x19b26b);};}exports['index']=function(_0x12c3e6,_0x3f8a0f){var _0x23c9e6={},_0x35cb33={},_0x9f71f6={'count':0x0,'rows':[]};var _0x44bc04=_[_0xcd39('0x37')](db[_0xcd39('0x38')][_0xcd39('0x39')],function(_0x26dbe6){return{'name':_0x26dbe6[_0xcd39('0x3a')],'type':_0x26dbe6[_0xcd39('0x3b')][_0xcd39('0x3c')]};});_0x35cb33[_0xcd39('0x3d')]=_[_0xcd39('0x37')](_0x44bc04,'name');_0x35cb33[_0xcd39('0x3e')]=_['keys'](_0x12c3e6[_0xcd39('0x3e')]);_0x35cb33['filters']=_[_0xcd39('0x3f')](_0x35cb33[_0xcd39('0x3d')],_0x35cb33[_0xcd39('0x3e')]);_0x23c9e6[_0xcd39('0x40')]=_[_0xcd39('0x3f')](_0x35cb33[_0xcd39('0x3d')],qs[_0xcd39('0x41')](_0x12c3e6[_0xcd39('0x3e')]['fields']));_0x23c9e6['attributes']=_0x23c9e6[_0xcd39('0x40')]['length']?_0x23c9e6[_0xcd39('0x40')]:_0x35cb33[_0xcd39('0x3d')];if(!_0x12c3e6['query'][_0xcd39('0x42')](_0xcd39('0x43'))){_0x23c9e6[_0xcd39('0x2d')]=qs[_0xcd39('0x2d')](_0x12c3e6[_0xcd39('0x3e')][_0xcd39('0x2d')]);_0x23c9e6['offset']=qs[_0xcd39('0x2b')](_0x12c3e6[_0xcd39('0x3e')]['offset']);}_0x23c9e6['order']=qs['sort'](_0x12c3e6[_0xcd39('0x3e')][_0xcd39('0x44')]);_0x23c9e6[_0xcd39('0x45')]=qs[_0xcd39('0x46')](_['pick'](_0x12c3e6[_0xcd39('0x3e')],_0x35cb33[_0xcd39('0x46')]),_0x44bc04);if(_0x12c3e6[_0xcd39('0x3e')]['filter']){_0x23c9e6[_0xcd39('0x45')]=_[_0xcd39('0x47')](_0x23c9e6[_0xcd39('0x45')],{'$or':_[_0xcd39('0x37')](_0x44bc04,function(_0xd0fb58){if(_0xd0fb58[_0xcd39('0x3b')]!==_0xcd39('0x48')){var _0x104c70={};_0x104c70[_0xd0fb58[_0xcd39('0x35')]]={'$like':'%'+_0x12c3e6[_0xcd39('0x3e')][_0xcd39('0x49')]+'%'};return _0x104c70;}})});}_0x23c9e6=_[_0xcd39('0x47')]({},_0x23c9e6,_0x12c3e6['options']);var _0x7b8d56={'where':_0x23c9e6[_0xcd39('0x45')]};return db['SmsMessage'][_0xcd39('0x2e')](_0x7b8d56)[_0xcd39('0x1c')](function(_0x2a80b6){_0x9f71f6[_0xcd39('0x2e')]=_0x2a80b6;if(_0x12c3e6['query']['includeAll']){_0x23c9e6[_0xcd39('0x4a')]=[{'all':!![]}];}return db['SmsMessage'][_0xcd39('0x4b')](_0x23c9e6);})[_0xcd39('0x1c')](function(_0x3895a8){_0x9f71f6['rows']=_0x3895a8;return _0x9f71f6;})['then'](respondWithFilteredResult(_0x3f8a0f,_0x23c9e6))[_0xcd39('0x26')](handleError(_0x3f8a0f,null));};exports['show']=function(_0x283eed,_0x25b784){var _0x11cafa={'raw':!![],'where':{'id':_0x283eed['params']['id']}},_0x230192={};_0x230192[_0xcd39('0x3d')]=_[_0xcd39('0x4c')](db[_0xcd39('0x38')]['rawAttributes']);_0x230192[_0xcd39('0x3e')]=_[_0xcd39('0x4c')](_0x283eed[_0xcd39('0x3e')]);_0x230192[_0xcd39('0x46')]=_['intersection'](_0x230192[_0xcd39('0x3d')],_0x230192[_0xcd39('0x3e')]);_0x11cafa[_0xcd39('0x40')]=_[_0xcd39('0x3f')](_0x230192['model'],qs[_0xcd39('0x41')](_0x283eed[_0xcd39('0x3e')][_0xcd39('0x41')]));_0x11cafa[_0xcd39('0x40')]=_0x11cafa[_0xcd39('0x40')]['length']?_0x11cafa['attributes']:_0x230192['model'];if(_0x283eed['query'][_0xcd39('0x4d')]){_0x11cafa[_0xcd39('0x4a')]=[{'all':!![]}];}_0x11cafa=_['merge']({},_0x11cafa,_0x283eed[_0xcd39('0x4e')]);return db[_0xcd39('0x38')]['find'](_0x11cafa)[_0xcd39('0x1c')](handleEntityNotFound(_0x25b784,null))[_0xcd39('0x1c')](respondWithResult(_0x25b784,null))[_0xcd39('0x26')](handleError(_0x25b784,null));};exports['create']=function(_0x4cfa46,_0x97eb81){return db['SmsMessage']['create'](_0x4cfa46['body'],{})[_0xcd39('0x1c')](respondWithResult(_0x97eb81,0xc9))[_0xcd39('0x26')](handleError(_0x97eb81,null));};exports[_0xcd39('0x33')]=function(_0x1eddf4,_0x411bf8){if(_0x1eddf4[_0xcd39('0x4f')]['id']){delete _0x1eddf4['body']['id'];}return db[_0xcd39('0x38')][_0xcd39('0x50')]({'where':{'id':_0x1eddf4[_0xcd39('0x51')]['id']}})[_0xcd39('0x1c')](handleEntityNotFound(_0x411bf8,null))['then'](saveUpdates(_0x1eddf4[_0xcd39('0x4f')],null))[_0xcd39('0x1c')](respondWithResult(_0x411bf8,null))['catch'](handleError(_0x411bf8,null));};exports[_0xcd39('0x52')]=function(_0x321d71,_0x3dd7cb){return db[_0xcd39('0x38')][_0xcd39('0x50')]({'where':{'id':_0x321d71[_0xcd39('0x51')]['id']}})[_0xcd39('0x1c')](handleEntityNotFound(_0x3dd7cb,null))['then'](removeEntity(_0x3dd7cb,null))[_0xcd39('0x26')](handleError(_0x3dd7cb,null));};exports[_0xcd39('0x53')]=function(_0x4dbbc4,_0x147043){return db[_0xcd39('0x38')][_0xcd39('0x53')]()[_0xcd39('0x1c')](respondWithResult(_0x147043,null))[_0xcd39('0x26')](handleError(_0x147043,null));};var interaction_log=require(_0xcd39('0x15'))(_0xcd39('0x54'));exports[_0xcd39('0x55')]=function(_0x114388,_0x5b71aa,_0x1820b2){var _0x3e2f6a={'agent':{},'channel':_0xcd39('0x56')};if(_0x114388[_0xcd39('0x4f')]['id']){delete _0x114388[_0xcd39('0x4f')]['id'];}_0x114388[_0xcd39('0x4f')][_0xcd39('0x57')]=!![];_0x114388[_0xcd39('0x4f')][_0xcd39('0x58')]=moment()['format'](_0xcd39('0x59'));_0x114388[_0xcd39('0x4f')][_0xcd39('0x5a')]=_0x114388[_0xcd39('0x4f')][_0xcd39('0x5a')]||_0x114388[_0xcd39('0x5b')]['id'];_0x3e2f6a[_0xcd39('0x5c')]['id']=_0x114388['body'][_0xcd39('0x5a')];return db[_0xcd39('0x38')][_0xcd39('0x50')]({'where':{'id':_0x114388[_0xcd39('0x51')]['id'],'UserId':null}})[_0xcd39('0x1c')](handleEntityNotFound(_0x5b71aa,null))[_0xcd39('0x1c')](saveUpdates(_0x114388[_0xcd39('0x4f')],null))['then'](function(_0xd929f9){if(_0xd929f9){_0x3e2f6a[_0xcd39('0x25')]=_0xd929f9['get']({'plain':!![]});return db[_0xcd39('0x5d')][_0xcd39('0x50')]({'where':{'id':_0xd929f9[_0xcd39('0x5e')]}});}return null;})['then'](handleEntityNotFound(_0x5b71aa,null))[_0xcd39('0x1c')](function(_0x216cfd){if(_0x216cfd){return _0x216cfd['update']({'UserId':_0x114388['body']['UserId'],'read1stAt':_[_0xcd39('0x5f')](_0x216cfd[_0xcd39('0x60')])?moment()[_0xcd39('0x61')](_0xcd39('0x59')):undefined});}return null;})['then'](function(_0x27b57b){if(_0x27b57b){_0x3e2f6a[_0xcd39('0x62')]=_0x27b57b[_0xcd39('0x63')]({'plain':!![]});interaction_log['info']('[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x114388['user']['id'],_0x114388[_0xcd39('0x5b')][_0xcd39('0x35')],_0x114388['user']['role'],_0x3e2f6a[_0xcd39('0x62')]['id'],_0x114388[_0xcd39('0x4f')]?JSON['stringify'](_0x114388[_0xcd39('0x4f')]):_0xcd39('0x64'));return respondWithRpcPromise(_0xcd39('0x65'),_0xcd39('0x66'),_0x3e2f6a);}return null;})[_0xcd39('0x1c')](function(_0x4abfe7){var _0x143646=_0xcd39('0x67')+_0x4abfe7[_0xcd39('0x25')]['ContactId'];return db[_0xcd39('0x68')][_0xcd39('0x3e')](_0x143646,{'type':db[_0xcd39('0x69')][_0xcd39('0x6a')][_0xcd39('0x6b')],'raw':!![]})[_0xcd39('0x1c')](function(_0x2ffb71){return _0x2ffb71;});})['then'](function(_0x9c35ad){if(_0x9c35ad){_0x3e2f6a[_0xcd39('0x25')]['contact']=_0x9c35ad[0x0];if(!_0x114388[_0xcd39('0x4f')]['UserId'])return;return db[_0xcd39('0x6c')]['find']({'where':{'id':_0x114388[_0xcd39('0x4f')][_0xcd39('0x5a')],'role':'agent'},'attributes':['id','name',_0xcd39('0x6d'),'email',_0xcd39('0x6e')],'raw':!![]});}return null;})[_0xcd39('0x1c')](function(_0x58cfe0){if(!_0x58cfe0)return null;_0x3e2f6a[_0xcd39('0x25')][_0xcd39('0x5c')]=_0x58cfe0;return _0x3e2f6a;})[_0xcd39('0x1c')](function(_0x49827d){if(_0x49827d){if(_0x114388[_0xcd39('0x4f')][_0xcd39('0x6f')]){_0x3e2f6a['message'][_0xcd39('0x70')]=util['format'](_0xcd39('0x71'),_0x114388[_0xcd39('0x5b')][_0xcd39('0x35')]);_0x3e2f6a[_0xcd39('0x25')]['channel']=_0x3e2f6a[_0xcd39('0x72')];_0x3e2f6a[_0xcd39('0x25')][_0xcd39('0x73')]='accept';return respondWithRpcPromise(_0xcd39('0x74'),'EventManager',{'event':_0xcd39('0x75'),'message':_0x3e2f6a[_0xcd39('0x25')]},client9002)[_0xcd39('0x1c')](function(){return _0x3e2f6a;});}return _0x3e2f6a;}return null;})[_0xcd39('0x1c')](respondWithResult(_0x5b71aa,null))[_0xcd39('0x26')](handleError(_0x5b71aa,null));};var interaction_log=require(_0xcd39('0x15'))(_0xcd39('0x54'));exports['reject']=function(_0xd90071,_0x4e83e6,_0x480b9f){var _0x4c43eb={'agent':{},'channel':_0xcd39('0x56')};if(_0xd90071[_0xcd39('0x4f')]['id']){delete _0xd90071['body']['id'];}_0xd90071[_0xcd39('0x4f')]['UserId']=_0xd90071['body'][_0xcd39('0x5a')]||_0xd90071[_0xcd39('0x5b')]['id'];_0x4c43eb[_0xcd39('0x5c')]['id']=_0xd90071['body'][_0xcd39('0x5a')];return db[_0xcd39('0x38')][_0xcd39('0x50')]({'where':{'id':_0xd90071[_0xcd39('0x51')]['id'],'UserId':null}})[_0xcd39('0x1c')](handleEntityNotFound(_0x4e83e6,null))[_0xcd39('0x1c')](function(_0x3f24a0){if(_0x3f24a0){_0x4c43eb[_0xcd39('0x25')]=_0x3f24a0['get']({'plain':!![]});return db[_0xcd39('0x5d')][_0xcd39('0x50')]({'where':{'id':_0x3f24a0[_0xcd39('0x5e')]}});}return null;})[_0xcd39('0x1c')](handleEntityNotFound(_0x4e83e6,null))[_0xcd39('0x1c')](function(_0x4c72a3){if(_0x4c72a3){_0x4c43eb[_0xcd39('0x62')]=_0x4c72a3['get']({'plain':!![]});interaction_log[_0xcd39('0x1d')](_0xcd39('0x76'),_0xd90071[_0xcd39('0x5b')]['id'],_0xd90071[_0xcd39('0x5b')][_0xcd39('0x35')],_0xd90071[_0xcd39('0x5b')][_0xcd39('0x77')],_0x4c43eb[_0xcd39('0x62')]['id'],_0xd90071['body']?JSON[_0xcd39('0x22')](_0xd90071['body']):_0xcd39('0x64'));return respondWithRpcPromise(_0xcd39('0x78'),_0xcd39('0x79'),_0x4c43eb);}return null;})[_0xcd39('0x1c')](function(_0x2841a0){var _0x2c7212='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2841a0[_0xcd39('0x25')][_0xcd39('0x7a')];return db['sequelize'][_0xcd39('0x3e')](_0x2c7212,{'type':db[_0xcd39('0x69')]['QueryTypes'][_0xcd39('0x6b')],'raw':!![]})[_0xcd39('0x1c')](function(_0x22234b){return _0x22234b;});})[_0xcd39('0x1c')](function(_0x3ad707){if(_0x3ad707){_0x4c43eb[_0xcd39('0x25')]['contact']=_0x3ad707[0x0];if(!_0xd90071[_0xcd39('0x4f')]['UserId'])return;return db['User'][_0xcd39('0x50')]({'where':{'id':_0xd90071['body'][_0xcd39('0x5a')],'role':_0xcd39('0x5c')},'attributes':['id',_0xcd39('0x35'),_0xcd39('0x6d'),_0xcd39('0x7b'),_0xcd39('0x6e')],'raw':!![]});}return null;})[_0xcd39('0x1c')](function(_0x51b331){if(!_0x51b331)return null;_0x4c43eb[_0xcd39('0x25')][_0xcd39('0x5c')]=_0x51b331;return _0x4c43eb;})[_0xcd39('0x1c')](function(_0x39426d){if(_0x39426d){_0x39426d[_0xcd39('0x25')][_0xcd39('0x70')]=util[_0xcd39('0x61')](_0xcd39('0x71'),_0xd90071[_0xcd39('0x5b')][_0xcd39('0x35')]);_0x39426d[_0xcd39('0x25')]['channel']=_0x4c43eb['channel'];_0x39426d[_0xcd39('0x25')][_0xcd39('0x73')]='reject';respondWithRpcPromise('EventManager',_0xcd39('0x74'),{'event':_0xcd39('0x7c'),'message':_0x39426d[_0xcd39('0x25')]},client9002);return _0x4c43eb;}return null;})['then'](respondWithResult(_0x4e83e6,null))['catch'](handleError(_0x4e83e6,null));};exports['status']=function(_0x54cd15,_0x39cb57,_0x567f40){if(_0x54cd15[_0xcd39('0x4f')]['id']){delete _0x54cd15[_0xcd39('0x4f')]['id'];}var _0x459b0d;return db[_0xcd39('0x38')][_0xcd39('0x50')]({'where':{'id':_0x54cd15[_0xcd39('0x51')]['id']}})[_0xcd39('0x1c')](handleEntityNotFound(_0x39cb57,null))[_0xcd39('0x1c')](function(_0x45f92a){if(_0x45f92a){_0x459b0d=_0x45f92a;return db[_0xcd39('0x7d')]['find']({'where':{'id':_0x45f92a[_0xcd39('0x7e')]}});}})[_0xcd39('0x1c')](handleEntityNotFound(_0x39cb57,null))[_0xcd39('0x1c')](function(_0x25b5e5){if(_0x25b5e5){logger[_0xcd39('0x20')](_0xcd39('0x21'),_0xcd39('0x28'),_0xcd39('0x7f'),_0x25b5e5[_0xcd39('0x3b')],util[_0xcd39('0x80')](_0x54cd15[_0xcd39('0x4f')],{'showHidden':![],'depth':null}));switch(_0x25b5e5[_0xcd39('0x3b')]){case _0xcd39('0x81'):if(_0x54cd15[_0xcd39('0x4f')][_0xcd39('0x82')]&&_0x54cd15[_0xcd39('0x4f')][_0xcd39('0x82')]===_0x459b0d[_0xcd39('0x83')]){return _0x459b0d['update']({'read':!![]});}else{logger[_0xcd39('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xcd39('0x28'),_0xcd39('0x81'),util[_0xcd39('0x80')](_0x54cd15[_0xcd39('0x4f')],{'showHidden':![],'depth':null}));}break;case _0xcd39('0x84'):if(_0x54cd15[_0xcd39('0x4f')]['MessageUUID']&&_0x54cd15[_0xcd39('0x4f')][_0xcd39('0x85')]===_0x459b0d['messageId']&&_[_0xcd39('0x86')]([_0xcd39('0x87'),_0xcd39('0x88')],_0x54cd15[_0xcd39('0x4f')][_0xcd39('0x89')])>=0x0){return _0x459b0d[_0xcd39('0x33')]({'read':!![]});}else{logger[_0xcd39('0x23')](_0xcd39('0x8a'),_0xcd39('0x28'),_0xcd39('0x8b'),util[_0xcd39('0x80')](_0x54cd15[_0xcd39('0x4f')],{'showHidden':![],'depth':null}));}break;case _0xcd39('0x8c'):var _0x314f80=_0x54cd15[_0xcd39('0x4f')]['results'][0x0];if(_0x314f80[_0xcd39('0x28')][_0xcd39('0x8d')]===_0xcd39('0x8e')){return _0x459b0d[_0xcd39('0x33')]({'read':!![]});}else{logger['error'](_0xcd39('0x8a'),_0xcd39('0x28'),'infobip',util[_0xcd39('0x80')](_0x54cd15[_0xcd39('0x4f')],{'showHidden':![],'depth':null}));}break;}return _0x459b0d;}})[_0xcd39('0x1c')](respondWithResult(_0x39cb57,null))['catch'](handleError(_0x39cb57,null));};
\ No newline at end of file
+var _0xddd1=['rejectmessage','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','sent','delivered','Status','plivio','infobip','results','groupName','DELIVERED','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./smsMessage.socket','jayson/promise','client','http','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','apply','reject','save','stack','name','send','index','map','SmsMessage','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','create','body','update','destroy','describe','sms-interactions','accept','sms','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','SmsInteraction','SmsInteractionId','isNil','read1stAt','format','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage'];(function(_0x36c91c,_0x440b65){var _0x19321e=function(_0x484fdb){while(--_0x484fdb){_0x36c91c['push'](_0x36c91c['shift']());}};_0x19321e(++_0x440b65);}(_0xddd1,0xab));var _0x1ddd=function(_0xc43011,_0x20d053){_0xc43011=_0xc43011-0x0;var _0x1d2b97=_0xddd1[_0xc43011];return _0x1d2b97;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1ddd('0x0'));var zipdir=require(_0x1ddd('0x1'));var jsonpatch=require(_0x1ddd('0x2'));var rp=require(_0x1ddd('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1ddd('0x4'));var util=require(_0x1ddd('0x5'));var path=require('path');var sox=require(_0x1ddd('0x6'));var csv=require(_0x1ddd('0x7'));var ejs=require(_0x1ddd('0x8'));var fs=require('fs');var fs_extra=require(_0x1ddd('0x9'));var _=require(_0x1ddd('0xa'));var squel=require(_0x1ddd('0xb'));var crypto=require(_0x1ddd('0xc'));var jsforce=require(_0x1ddd('0xd'));var deskjs=require(_0x1ddd('0xe'));var toCsv=require(_0x1ddd('0x7'));var querystring=require('querystring');var Papa=require(_0x1ddd('0xf'));var Redis=require('ioredis');var authService=require(_0x1ddd('0x10'));var qs=require(_0x1ddd('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1ddd('0x12'))('api');var utils=require(_0x1ddd('0x13'));var config=require(_0x1ddd('0x14'));var licenseUtil=require(_0x1ddd('0x15'));var db=require(_0x1ddd('0x16'))['db'];config['redis']=_['defaults'](config[_0x1ddd('0x17')],{'host':_0x1ddd('0x18'),'port':0x18eb});var socket=require(_0x1ddd('0x19'))(new Redis(config[_0x1ddd('0x17')]));require(_0x1ddd('0x1a'))['register'](socket);var jayson=require(_0x1ddd('0x1b'));var client=jayson[_0x1ddd('0x1c')]['http']({'port':0x232c});var client9002=jayson[_0x1ddd('0x1c')][_0x1ddd('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x58210d,_0x1cc392,_0x3718e0,_0x5d0578){return new BPromise(function(_0x74eebe,_0x33f50c){var _0x325ff6=_0x5d0578||client;return _0x325ff6[_0x1ddd('0x1e')](_0x58210d,_0x3718e0)[_0x1ddd('0x1f')](function(_0x14b090){logger[_0x1ddd('0x20')](_0x1ddd('0x21'),_0x1cc392,_0x1ddd('0x22'));logger[_0x1ddd('0x23')](_0x1ddd('0x24'),_0x1cc392,'request\x20sent',JSON[_0x1ddd('0x25')](_0x14b090));if(_0x14b090[_0x1ddd('0x26')]){if(_0x14b090['error'][_0x1ddd('0x27')]===0x1f4){logger[_0x1ddd('0x26')](_0x1ddd('0x21'),_0x1cc392,_0x14b090[_0x1ddd('0x26')][_0x1ddd('0x28')]);return _0x33f50c(_0x14b090['error']['message']);}logger[_0x1ddd('0x26')](_0x1ddd('0x21'),_0x1cc392,_0x14b090['error'][_0x1ddd('0x28')]);return _0x74eebe(_0x14b090[_0x1ddd('0x26')][_0x1ddd('0x28')]);}else{logger[_0x1ddd('0x20')](_0x1ddd('0x21'),_0x1cc392,_0x1ddd('0x22'));_0x74eebe(_0x14b090[_0x1ddd('0x29')][_0x1ddd('0x28')]);}})[_0x1ddd('0x2a')](function(_0x29516e){logger[_0x1ddd('0x26')](_0x1ddd('0x21'),_0x1cc392,_0x29516e);_0x33f50c(_0x29516e);});});}function respondWithStatusCode(_0x57eb17,_0x4d2c86){_0x4d2c86=_0x4d2c86||0xcc;return function(_0xda2a9c){if(_0xda2a9c){return _0x57eb17[_0x1ddd('0x2b')](_0x4d2c86);}return _0x57eb17['status'](_0x4d2c86)[_0x1ddd('0x2c')]();};}function respondWithResult(_0x21f98f,_0x12afaf){_0x12afaf=_0x12afaf||0xc8;return function(_0x182cd0){if(_0x182cd0){return _0x21f98f[_0x1ddd('0x2d')](_0x12afaf)['json'](_0x182cd0);}};}function respondWithFilteredResult(_0x435623,_0x2b7a2a){return function(_0x4acadd){if(_0x4acadd){var _0x854dca=typeof _0x2b7a2a['offset']===_0x1ddd('0x2e')&&typeof _0x2b7a2a[_0x1ddd('0x2f')]===_0x1ddd('0x2e');var _0x1953a2=_0x4acadd[_0x1ddd('0x30')];var _0x295c01=_0x854dca?0x0:_0x2b7a2a[_0x1ddd('0x31')];var _0x14e5f8=_0x854dca?_0x4acadd[_0x1ddd('0x30')]:_0x2b7a2a[_0x1ddd('0x31')]+_0x2b7a2a[_0x1ddd('0x2f')];var _0x4d5b42;if(_0x14e5f8>=_0x1953a2){_0x14e5f8=_0x1953a2;_0x4d5b42=0xc8;}else{_0x4d5b42=0xce;}_0x435623['status'](_0x4d5b42);return _0x435623[_0x1ddd('0x32')](_0x1ddd('0x33'),_0x295c01+'-'+_0x14e5f8+'/'+_0x1953a2)['json'](_0x4acadd);}return null;};}function patchUpdates(_0xe01585){return function(_0x29cf28){try{jsonpatch[_0x1ddd('0x34')](_0x29cf28,_0xe01585,!![]);}catch(_0x351663){return BPromise[_0x1ddd('0x35')](_0x351663);}return _0x29cf28[_0x1ddd('0x36')]();};}function saveUpdates(_0x811a93,_0x331187){return function(_0x548510){if(_0x548510){return _0x548510['update'](_0x811a93)[_0x1ddd('0x1f')](function(_0x3ceabb){return _0x3ceabb;});}return null;};}function removeEntity(_0x12d1c2,_0x4c90ed){return function(_0x452e02){if(_0x452e02){return _0x452e02['destroy']()[_0x1ddd('0x1f')](function(){_0x12d1c2[_0x1ddd('0x2d')](0xcc)[_0x1ddd('0x2c')]();});}};}function handleEntityNotFound(_0x59ca1f,_0x2af3e3){return function(_0x5a7bb7){if(!_0x5a7bb7){_0x59ca1f[_0x1ddd('0x2b')](0x194);}return _0x5a7bb7;};}function handleError(_0x1fbc10,_0x4ad03d){_0x4ad03d=_0x4ad03d||0x1f4;return function(_0x2614e1){logger['error'](_0x2614e1[_0x1ddd('0x37')]);if(_0x2614e1['name']){delete _0x2614e1[_0x1ddd('0x38')];}_0x1fbc10['status'](_0x4ad03d)[_0x1ddd('0x39')](_0x2614e1);};}exports[_0x1ddd('0x3a')]=function(_0x11d522,_0x5f0b32){var _0x59fbff={},_0x7d677f={},_0x329012={'count':0x0,'rows':[]};var _0x37d3cb=_[_0x1ddd('0x3b')](db[_0x1ddd('0x3c')]['rawAttributes'],function(_0x5af80a){return{'name':_0x5af80a[_0x1ddd('0x3d')],'type':_0x5af80a[_0x1ddd('0x3e')][_0x1ddd('0x3f')]};});_0x7d677f[_0x1ddd('0x40')]=_[_0x1ddd('0x3b')](_0x37d3cb,_0x1ddd('0x38'));_0x7d677f[_0x1ddd('0x41')]=_[_0x1ddd('0x42')](_0x11d522[_0x1ddd('0x41')]);_0x7d677f[_0x1ddd('0x43')]=_[_0x1ddd('0x44')](_0x7d677f[_0x1ddd('0x40')],_0x7d677f['query']);_0x59fbff['attributes']=_['intersection'](_0x7d677f['model'],qs[_0x1ddd('0x45')](_0x11d522[_0x1ddd('0x41')]['fields']));_0x59fbff[_0x1ddd('0x46')]=_0x59fbff[_0x1ddd('0x46')][_0x1ddd('0x47')]?_0x59fbff[_0x1ddd('0x46')]:_0x7d677f[_0x1ddd('0x40')];if(!_0x11d522['query']['hasOwnProperty'](_0x1ddd('0x48'))){_0x59fbff[_0x1ddd('0x2f')]=qs[_0x1ddd('0x2f')](_0x11d522[_0x1ddd('0x41')][_0x1ddd('0x2f')]);_0x59fbff['offset']=qs[_0x1ddd('0x31')](_0x11d522[_0x1ddd('0x41')][_0x1ddd('0x31')]);}_0x59fbff['order']=qs[_0x1ddd('0x49')](_0x11d522['query'][_0x1ddd('0x49')]);_0x59fbff[_0x1ddd('0x4a')]=qs[_0x1ddd('0x43')](_[_0x1ddd('0x4b')](_0x11d522['query'],_0x7d677f[_0x1ddd('0x43')]),_0x37d3cb);if(_0x11d522[_0x1ddd('0x41')][_0x1ddd('0x4c')]){_0x59fbff[_0x1ddd('0x4a')]=_['merge'](_0x59fbff['where'],{'$or':_[_0x1ddd('0x3b')](_0x37d3cb,function(_0x3657d2){if(_0x3657d2[_0x1ddd('0x3e')]!==_0x1ddd('0x4d')){var _0x3d16e3={};_0x3d16e3[_0x3657d2[_0x1ddd('0x38')]]={'$like':'%'+_0x11d522[_0x1ddd('0x41')][_0x1ddd('0x4c')]+'%'};return _0x3d16e3;}})});}_0x59fbff=_[_0x1ddd('0x4e')]({},_0x59fbff,_0x11d522[_0x1ddd('0x4f')]);var _0x47f122={'where':_0x59fbff[_0x1ddd('0x4a')]};return db['SmsMessage'][_0x1ddd('0x30')](_0x47f122)[_0x1ddd('0x1f')](function(_0x5eb388){_0x329012[_0x1ddd('0x30')]=_0x5eb388;if(_0x11d522[_0x1ddd('0x41')][_0x1ddd('0x50')]){_0x59fbff[_0x1ddd('0x51')]=[{'all':!![]}];}return db['SmsMessage'][_0x1ddd('0x52')](_0x59fbff);})[_0x1ddd('0x1f')](function(_0x52d02e){_0x329012[_0x1ddd('0x53')]=_0x52d02e;return _0x329012;})['then'](respondWithFilteredResult(_0x5f0b32,_0x59fbff))[_0x1ddd('0x2a')](handleError(_0x5f0b32,null));};exports[_0x1ddd('0x54')]=function(_0x312834,_0x27083c){var _0x911758={'raw':!![],'where':{'id':_0x312834[_0x1ddd('0x55')]['id']}},_0x481a51={};_0x481a51[_0x1ddd('0x40')]=_[_0x1ddd('0x42')](db[_0x1ddd('0x3c')][_0x1ddd('0x56')]);_0x481a51[_0x1ddd('0x41')]=_[_0x1ddd('0x42')](_0x312834['query']);_0x481a51['filters']=_[_0x1ddd('0x44')](_0x481a51[_0x1ddd('0x40')],_0x481a51[_0x1ddd('0x41')]);_0x911758['attributes']=_[_0x1ddd('0x44')](_0x481a51[_0x1ddd('0x40')],qs['fields'](_0x312834[_0x1ddd('0x41')]['fields']));_0x911758[_0x1ddd('0x46')]=_0x911758[_0x1ddd('0x46')]['length']?_0x911758[_0x1ddd('0x46')]:_0x481a51[_0x1ddd('0x40')];if(_0x312834[_0x1ddd('0x41')][_0x1ddd('0x50')]){_0x911758[_0x1ddd('0x51')]=[{'all':!![]}];}_0x911758=_[_0x1ddd('0x4e')]({},_0x911758,_0x312834['options']);return db[_0x1ddd('0x3c')][_0x1ddd('0x57')](_0x911758)[_0x1ddd('0x1f')](handleEntityNotFound(_0x27083c,null))['then'](respondWithResult(_0x27083c,null))['catch'](handleError(_0x27083c,null));};exports[_0x1ddd('0x58')]=function(_0xd766a7,_0x344cbb){return db[_0x1ddd('0x3c')][_0x1ddd('0x58')](_0xd766a7[_0x1ddd('0x59')],{})[_0x1ddd('0x1f')](respondWithResult(_0x344cbb,0xc9))[_0x1ddd('0x2a')](handleError(_0x344cbb,null));};exports[_0x1ddd('0x5a')]=function(_0x13c31f,_0x2d2755){if(_0x13c31f[_0x1ddd('0x59')]['id']){delete _0x13c31f[_0x1ddd('0x59')]['id'];}return db[_0x1ddd('0x3c')]['find']({'where':{'id':_0x13c31f[_0x1ddd('0x55')]['id']}})[_0x1ddd('0x1f')](handleEntityNotFound(_0x2d2755,null))['then'](saveUpdates(_0x13c31f[_0x1ddd('0x59')],null))['then'](respondWithResult(_0x2d2755,null))[_0x1ddd('0x2a')](handleError(_0x2d2755,null));};exports[_0x1ddd('0x5b')]=function(_0x441145,_0x3e2298){return db[_0x1ddd('0x3c')][_0x1ddd('0x57')]({'where':{'id':_0x441145[_0x1ddd('0x55')]['id']}})['then'](handleEntityNotFound(_0x3e2298,null))[_0x1ddd('0x1f')](removeEntity(_0x3e2298,null))['catch'](handleError(_0x3e2298,null));};exports['describe']=function(_0xf2c600,_0x5c8fc4){return db['SmsMessage'][_0x1ddd('0x5c')]()[_0x1ddd('0x1f')](respondWithResult(_0x5c8fc4,null))['catch'](handleError(_0x5c8fc4,null));};var interaction_log=require('../../config/logger')(_0x1ddd('0x5d'));exports[_0x1ddd('0x5e')]=function(_0x335de4,_0x2dbb93,_0x139e30){var _0xd1777f={'agent':{},'channel':_0x1ddd('0x5f')};if(_0x335de4['body']['id']){delete _0x335de4[_0x1ddd('0x59')]['id'];}_0x335de4[_0x1ddd('0x59')][_0x1ddd('0x60')]=!![];_0x335de4[_0x1ddd('0x59')][_0x1ddd('0x61')]=moment()['format'](_0x1ddd('0x62'));_0x335de4[_0x1ddd('0x59')]['UserId']=_0x335de4[_0x1ddd('0x59')][_0x1ddd('0x63')]||_0x335de4['user']['id'];_0xd1777f[_0x1ddd('0x64')]['id']=_0x335de4['body']['UserId'];return db['SmsMessage'][_0x1ddd('0x57')]({'where':{'id':_0x335de4['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2dbb93,null))[_0x1ddd('0x1f')](saveUpdates(_0x335de4[_0x1ddd('0x59')],null))[_0x1ddd('0x1f')](function(_0x488909){if(_0x488909){_0xd1777f[_0x1ddd('0x28')]=_0x488909[_0x1ddd('0x65')]({'plain':!![]});return db[_0x1ddd('0x66')][_0x1ddd('0x57')]({'where':{'id':_0x488909[_0x1ddd('0x67')]}});}return null;})[_0x1ddd('0x1f')](handleEntityNotFound(_0x2dbb93,null))['then'](function(_0x2664eb){if(_0x2664eb){return _0x2664eb[_0x1ddd('0x5a')]({'UserId':_0x335de4[_0x1ddd('0x59')][_0x1ddd('0x63')],'read1stAt':_[_0x1ddd('0x68')](_0x2664eb[_0x1ddd('0x69')])?moment()[_0x1ddd('0x6a')](_0x1ddd('0x62')):undefined});}return null;})[_0x1ddd('0x1f')](function(_0x20fe93){if(_0x20fe93){_0xd1777f[_0x1ddd('0x6b')]=_0x20fe93['get']({'plain':!![]});interaction_log[_0x1ddd('0x20')](_0x1ddd('0x6c'),_0x335de4[_0x1ddd('0x6d')]['id'],_0x335de4[_0x1ddd('0x6d')]['name'],_0x335de4[_0x1ddd('0x6d')][_0x1ddd('0x6e')],_0xd1777f[_0x1ddd('0x6b')]['id'],_0x335de4['body']?JSON['stringify'](_0x335de4['body']):'null');return respondWithRpcPromise('AcceptMessage',_0x1ddd('0x6f'),_0xd1777f);}return null;})['then'](function(_0x397fbc){var _0x30e54e=_0x1ddd('0x70')+_0x397fbc[_0x1ddd('0x28')][_0x1ddd('0x71')];return db[_0x1ddd('0x72')][_0x1ddd('0x41')](_0x30e54e,{'type':db[_0x1ddd('0x73')][_0x1ddd('0x74')]['SELECT'],'raw':!![]})[_0x1ddd('0x1f')](function(_0x14300a){return _0x14300a;});})[_0x1ddd('0x1f')](function(_0x26c13f){if(_0x26c13f){_0xd1777f['message'][_0x1ddd('0x75')]=_0x26c13f[0x0];if(!_0x335de4[_0x1ddd('0x59')]['UserId'])return;return db[_0x1ddd('0x76')][_0x1ddd('0x57')]({'where':{'id':_0x335de4[_0x1ddd('0x59')]['UserId'],'role':_0x1ddd('0x64')},'attributes':['id','name',_0x1ddd('0x77'),_0x1ddd('0x78'),_0x1ddd('0x79')],'raw':!![]});}return null;})[_0x1ddd('0x1f')](function(_0x581126){if(!_0x581126)return null;_0xd1777f[_0x1ddd('0x28')][_0x1ddd('0x64')]=_0x581126;return _0xd1777f;})[_0x1ddd('0x1f')](function(_0x137d10){if(_0x137d10){if(_0x335de4[_0x1ddd('0x59')][_0x1ddd('0x7a')]){_0xd1777f[_0x1ddd('0x28')][_0x1ddd('0x7b')]=util['format'](_0x1ddd('0x7c'),_0x335de4[_0x1ddd('0x6d')][_0x1ddd('0x38')]);_0xd1777f[_0x1ddd('0x28')][_0x1ddd('0x7d')]=_0xd1777f[_0x1ddd('0x7d')];_0xd1777f[_0x1ddd('0x28')][_0x1ddd('0x7e')]=_0xd1777f['channel'];_0xd1777f[_0x1ddd('0x28')][_0x1ddd('0x7f')]=_0x1ddd('0x5e');return respondWithRpcPromise(_0x1ddd('0x80'),_0x1ddd('0x80'),{'event':'acceptmessage','message':_0xd1777f['message']},client9002)[_0x1ddd('0x1f')](function(){return _0xd1777f;});}return _0xd1777f;}return null;})[_0x1ddd('0x1f')](respondWithResult(_0x2dbb93,null))[_0x1ddd('0x2a')](handleError(_0x2dbb93,null));};var interaction_log=require(_0x1ddd('0x12'))(_0x1ddd('0x5d'));exports[_0x1ddd('0x35')]=function(_0x2d4fd2,_0x5e96d6,_0x138308){var _0x45b19e={'agent':{},'channel':_0x1ddd('0x5f')};if(_0x2d4fd2[_0x1ddd('0x59')]['id']){delete _0x2d4fd2[_0x1ddd('0x59')]['id'];}_0x2d4fd2[_0x1ddd('0x59')][_0x1ddd('0x63')]=_0x2d4fd2[_0x1ddd('0x59')]['UserId']||_0x2d4fd2[_0x1ddd('0x6d')]['id'];_0x45b19e[_0x1ddd('0x64')]['id']=_0x2d4fd2[_0x1ddd('0x59')]['UserId'];return db[_0x1ddd('0x3c')][_0x1ddd('0x57')]({'where':{'id':_0x2d4fd2[_0x1ddd('0x55')]['id'],'UserId':null}})[_0x1ddd('0x1f')](handleEntityNotFound(_0x5e96d6,null))[_0x1ddd('0x1f')](function(_0x169810){if(_0x169810){_0x45b19e[_0x1ddd('0x28')]=_0x169810['get']({'plain':!![]});return db[_0x1ddd('0x66')][_0x1ddd('0x57')]({'where':{'id':_0x169810[_0x1ddd('0x67')]}});}return null;})['then'](handleEntityNotFound(_0x5e96d6,null))[_0x1ddd('0x1f')](function(_0x3c2740){if(_0x3c2740){_0x45b19e[_0x1ddd('0x6b')]=_0x3c2740['get']({'plain':!![]});interaction_log[_0x1ddd('0x20')](_0x1ddd('0x81'),_0x2d4fd2['user']['id'],_0x2d4fd2[_0x1ddd('0x6d')]['name'],_0x2d4fd2[_0x1ddd('0x6d')][_0x1ddd('0x6e')],_0x45b19e[_0x1ddd('0x6b')]['id'],_0x2d4fd2[_0x1ddd('0x59')]?JSON[_0x1ddd('0x25')](_0x2d4fd2[_0x1ddd('0x59')]):_0x1ddd('0x82'));return respondWithRpcPromise(_0x1ddd('0x83'),_0x1ddd('0x84'),_0x45b19e);}return null;})[_0x1ddd('0x1f')](function(_0x2870ef){var _0xe22d7d=_0x1ddd('0x70')+_0x2870ef['message']['ContactId'];return db[_0x1ddd('0x72')][_0x1ddd('0x41')](_0xe22d7d,{'type':db[_0x1ddd('0x73')][_0x1ddd('0x74')]['SELECT'],'raw':!![]})[_0x1ddd('0x1f')](function(_0x242416){return _0x242416;});})[_0x1ddd('0x1f')](function(_0x3fedd3){if(_0x3fedd3){_0x45b19e[_0x1ddd('0x28')][_0x1ddd('0x75')]=_0x3fedd3[0x0];if(!_0x2d4fd2['body'][_0x1ddd('0x63')])return;return db[_0x1ddd('0x76')][_0x1ddd('0x57')]({'where':{'id':_0x2d4fd2[_0x1ddd('0x59')][_0x1ddd('0x63')],'role':_0x1ddd('0x64')},'attributes':['id','name',_0x1ddd('0x77'),_0x1ddd('0x78'),_0x1ddd('0x79')],'raw':!![]});}return null;})[_0x1ddd('0x1f')](function(_0x579465){if(!_0x579465)return null;_0x45b19e[_0x1ddd('0x28')][_0x1ddd('0x64')]=_0x579465;return _0x45b19e;})[_0x1ddd('0x1f')](function(_0x28f1ef){if(_0x28f1ef){_0x28f1ef[_0x1ddd('0x28')][_0x1ddd('0x7b')]=util[_0x1ddd('0x6a')]('SIP/%s',_0x2d4fd2[_0x1ddd('0x6d')][_0x1ddd('0x38')]);_0x28f1ef['message'][_0x1ddd('0x7d')]=_0x45b19e['channel'];_0x28f1ef[_0x1ddd('0x28')][_0x1ddd('0x7e')]=_0x45b19e[_0x1ddd('0x7d')];_0x28f1ef[_0x1ddd('0x28')]['event']=_0x1ddd('0x35');respondWithRpcPromise(_0x1ddd('0x80'),_0x1ddd('0x80'),{'event':_0x1ddd('0x85'),'message':_0x28f1ef['message']},client9002);return _0x45b19e;}return null;})[_0x1ddd('0x1f')](respondWithResult(_0x5e96d6,null))[_0x1ddd('0x2a')](handleError(_0x5e96d6,null));};exports['status']=function(_0x3f24fd,_0x559525,_0x59fe2e){if(_0x3f24fd[_0x1ddd('0x59')]['id']){delete _0x3f24fd[_0x1ddd('0x59')]['id'];}var _0x423d45;return db[_0x1ddd('0x3c')][_0x1ddd('0x57')]({'where':{'id':_0x3f24fd['params']['id']}})[_0x1ddd('0x1f')](handleEntityNotFound(_0x559525,null))['then'](function(_0x2be84){if(_0x2be84){_0x423d45=_0x2be84;return db[_0x1ddd('0x86')][_0x1ddd('0x57')]({'where':{'id':_0x2be84[_0x1ddd('0x87')]}});}})['then'](handleEntityNotFound(_0x559525,null))[_0x1ddd('0x1f')](function(_0x47daeb){if(_0x47daeb){logger['debug']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1ddd('0x2d'),_0x1ddd('0x88'),_0x47daeb[_0x1ddd('0x3e')],util[_0x1ddd('0x89')](_0x3f24fd['body'],{'showHidden':![],'depth':null}));switch(_0x47daeb['type']){case _0x1ddd('0x8a'):if(_0x3f24fd[_0x1ddd('0x59')][_0x1ddd('0x8b')]&&_0x3f24fd[_0x1ddd('0x59')][_0x1ddd('0x8b')]===_0x423d45[_0x1ddd('0x8c')]){return _0x423d45[_0x1ddd('0x5a')]({'read':!![]});}else{logger[_0x1ddd('0x26')](_0x1ddd('0x8d'),_0x1ddd('0x2d'),'twilio',util[_0x1ddd('0x89')](_0x3f24fd['body'],{'showHidden':![],'depth':null}));}break;case _0x1ddd('0x8e'):if(_0x3f24fd[_0x1ddd('0x59')][_0x1ddd('0x8f')]&&_0x3f24fd[_0x1ddd('0x59')][_0x1ddd('0x8f')]===_0x423d45['messageId']&&_['indexOf']([_0x1ddd('0x90'),_0x1ddd('0x91')],_0x3f24fd[_0x1ddd('0x59')][_0x1ddd('0x92')])>=0x0){return _0x423d45['update']({'read':!![]});}else{logger[_0x1ddd('0x26')](_0x1ddd('0x8d'),_0x1ddd('0x2d'),_0x1ddd('0x93'),util[_0x1ddd('0x89')](_0x3f24fd[_0x1ddd('0x59')],{'showHidden':![],'depth':null}));}break;case _0x1ddd('0x94'):var _0x16a9d5=_0x3f24fd[_0x1ddd('0x59')][_0x1ddd('0x95')][0x0];if(_0x16a9d5[_0x1ddd('0x2d')][_0x1ddd('0x96')]===_0x1ddd('0x97')){return _0x423d45[_0x1ddd('0x5a')]({'read':!![]});}else{logger['error'](_0x1ddd('0x8d'),_0x1ddd('0x2d'),_0x1ddd('0x94'),util[_0x1ddd('0x89')](_0x3f24fd[_0x1ddd('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x423d45;}})[_0x1ddd('0x1f')](respondWithResult(_0x559525,null))[_0x1ddd('0x2a')](handleError(_0x559525,null));};
\ No newline at end of file
index 0ff78fc..49eec79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa77a=['save','update','remove','emit','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0x16bb4c,_0x495cf6){var _0x5b817e=function(_0x5d18c2){while(--_0x5d18c2){_0x16bb4c['push'](_0x16bb4c['shift']());}};_0x5b817e(++_0x495cf6);}(_0xa77a,0xf9));var _0xaa77=function(_0x291f8b,_0x3b5591){_0x291f8b=_0x291f8b-0x0;var _0x275171=_0xa77a[_0x291f8b];return _0x275171;};'use strict';var EventEmitter=require(_0xaa77('0x0'));var SmsMessage=require(_0xaa77('0x1'))['db']['SmsMessage'];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xaa77('0x2')](0x0);var events={'afterCreate':_0xaa77('0x3'),'afterUpdate':_0xaa77('0x4'),'afterDestroy':_0xaa77('0x5')};function emitEvent(_0x1208f7){return function(_0x528c73,_0x29f4b3,_0x50c70b){SmsMessageEvents[_0xaa77('0x6')](_0x1208f7+':'+_0x528c73['id'],_0x528c73);SmsMessageEvents[_0xaa77('0x6')](_0x1208f7,_0x528c73);_0x50c70b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage[_0xaa77('0x7')](e,emitEvent(event));}}module[_0xaa77('0x8')]=SmsMessageEvents;
\ No newline at end of file
+var _0x0300=['hook','exports','events','../../mysqldb','SmsMessage','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x0300,0x188));var _0x0030=function(_0x2933d0,_0x33b0da){_0x2933d0=_0x2933d0-0x0;var _0x24e21c=_0x0300[_0x2933d0];return _0x24e21c;};'use strict';var EventEmitter=require(_0x0030('0x0'));var SmsMessage=require(_0x0030('0x1'))['db'][_0x0030('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x0030('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0030('0x4'),'afterDestroy':_0x0030('0x5')};function emitEvent(_0x46152e){return function(_0x171c90,_0x4d3141,_0x544b09){SmsMessageEvents[_0x0030('0x6')](_0x46152e+':'+_0x171c90['id'],_0x171c90);SmsMessageEvents['emit'](_0x46152e,_0x171c90);_0x544b09(null);};}for(var e in events){if(events[_0x0030('0x7')](e)){var event=events[e];SmsMessage[_0x0030('0x8')](e,emitEvent(event));}}module[_0x0030('0x9')]=SmsMessageEvents;
\ No newline at end of file
index e410416..0dd05ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc524=['secret','isNil','findOne','then','createdAt','catch','error','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','create','/status?token=','token','sid','update','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','login?username=','&password=','GET','split','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','connectel','requestid','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','http_code','data','queued_count','clickSend','Missing\x20parameters:\x20username,\x20password','authId','senderString','remote','/api/sms/messages/','base64','message_uuid','plivo','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','login','text','timestamp','keys','length','md5','hex','signature=','/external/get/send.php?','Missing\x20parameters:\x20apiKey','uuid','UTF-8','clickatell','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','intelepeer','code','message','Bearer\x20','status','refid','Token\x20not\x20received','utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','messageId','body','FULLTEXT','models','get','direction','toLowerCase','out'];(function(_0x30014e,_0x555f27){var _0x1e3be1=function(_0x36b923){while(--_0x36b923){_0x30014e['push'](_0x30014e['shift']());}};_0x1e3be1(++_0x555f27);}(_0xc524,0x1bf));var _0x4c52=function(_0x4129ce,_0x5f5a5e){_0x4129ce=_0x4129ce-0x0;var _0x1956a8=_0xc524[_0x4129ce];return _0x1956a8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4c52('0x0'))(_0x4c52('0x1'));var moment=require(_0x4c52('0x2'));var BPromise=require(_0x4c52('0x3'));var rp=require(_0x4c52('0x4'));var fs=require('fs');var path=require(_0x4c52('0x5'));var rimraf=require(_0x4c52('0x6'));var config=require('../../config/environment');var attributes=require('./smsMessage.attributes');module[_0x4c52('0x7')]=function(_0xdaf126,_0x72d0ec){return _0xdaf126[_0x4c52('0x8')]('SmsMessage',attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':_0x4c52('0x9'),'fields':[_0x4c52('0x9')]},{'name':'fti_sms_messages','fields':[_0x4c52('0xa')],'type':_0x4c52('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5c3a2e,_0x367358,_0x276301){var _0x16f6dc=_0xdaf126[_0x4c52('0xc')];var _0x1dbc9b=_0x5c3a2e[_0x4c52('0xd')]({'plain':!![]});if(_0x1dbc9b[_0x4c52('0xe')][_0x4c52('0xf')]()==='in'||_0x1dbc9b[_0x4c52('0xe')]['toLowerCase']()===_0x4c52('0x10')&&!_0x1dbc9b[_0x4c52('0x11')]&&!_[_0x4c52('0x12')](_0x1dbc9b['UserId'])){_0x16f6dc['SmsInteraction'][_0x4c52('0x13')]({'where':{'id':_0x1dbc9b['SmsInteractionId']}})[_0x4c52('0x14')](function(_0x2c8e3b){if(_0x2c8e3b){_0x2c8e3b['update']({'lastMsgAt':_0x1dbc9b[_0x4c52('0x15')],'lastMsgDirection':_0x1dbc9b[_0x4c52('0xe')][_0x4c52('0xf')]()});}})[_0x4c52('0x16')](function(_0x1b8481){console[_0x4c52('0x17')](_0x1b8481);});}if(_0x1dbc9b[_0x4c52('0xe')]===_0x4c52('0x10')&&!_0x1dbc9b[_0x4c52('0x11')]){var _0x43b8c8;_0x16f6dc[_0x4c52('0x18')][_0x4c52('0x19')]({'where':{'id':_0x1dbc9b[_0x4c52('0x1a')]},'raw':!![]})[_0x4c52('0x14')](function(_0x146c35){_0x43b8c8=_0x146c35;if(_0x43b8c8&&_0x43b8c8[_0x4c52('0x1b')]){switch(_0x43b8c8['type']){case _0x4c52('0x1c'):var _0x1c7f7e=require(_0x4c52('0x1c'));if(_0x43b8c8[_0x4c52('0x1d')]&&_0x43b8c8[_0x4c52('0x1e')]&&_0x43b8c8[_0x4c52('0x1f')]){var _0x161ce4=new _0x1c7f7e(_0x43b8c8[_0x4c52('0x1d')],_0x43b8c8[_0x4c52('0x1e')]);_0x161ce4[_0x4c52('0x20')][_0x4c52('0x21')]({'body':_0x1dbc9b[_0x4c52('0xa')],'to':_0x1dbc9b[_0x4c52('0x1f')],'from':_0x43b8c8[_0x4c52('0x1f')],'statusCallback':_0x43b8c8['remote']+'/api/sms/messages/'+_0x1dbc9b['id']+_0x4c52('0x22')+_0x43b8c8[_0x4c52('0x23')]})[_0x4c52('0x14')](function(_0x5e3f3){if(_0x5e3f3[_0x4c52('0x24')]){return _0x5c3a2e[_0x4c52('0x25')]({'messageId':_0x5e3f3['sid']});}})[_0x4c52('0x16')](function(_0x19e4b9){logger['error'](_0x4c52('0x26'),_0x4c52('0x27'),'twilio',util[_0x4c52('0x28')](_0x19e4b9,{'showHidden':![],'depth':null}));});}else{logger[_0x4c52('0x17')](_0x4c52('0x26'),'afterCreate',_0x4c52('0x1c'),_0x4c52('0x29'));}break;case _0x4c52('0x2a'):var _0x24169e=_0x4c52('0x2b');if(_0x43b8c8[_0x4c52('0x2c')]&&_0x43b8c8[_0x4c52('0x2d')]){var _0x2b7d53={'recipient':[_0x1dbc9b[_0x4c52('0x1f')]],'message':_0x1dbc9b[_0x4c52('0xa')],'message_type':_0x43b8c8['smsMethod']};if(_0x43b8c8[_0x4c52('0x2e')]&&_0x43b8c8[_0x4c52('0x2e')]!=='SI'){_0x2b7d53[_0x4c52('0x2f')]=_0x43b8c8['phone'];}var _0x4d4274={'url':_0x24169e+_0x4c52('0x30')+_0x43b8c8[_0x4c52('0x2c')]+_0x4c52('0x31')+_0x43b8c8[_0x4c52('0x2d')],'method':_0x4c52('0x32')};rp(_0x4d4274)[_0x4c52('0x14')](function(_0x4fc8cc){var _0x56d994=_0x4fc8cc[_0x4c52('0x33')](';');var _0x15c0e6={'user_key':_0x56d994[0x0],'session_key':_0x56d994[0x1]};_0x4d4274={'url':_0x24169e+_0x4c52('0x34'),'method':_0x4c52('0x35'),'headers':{'user_key':_0x15c0e6[_0x4c52('0x36')],'Session_key':_0x15c0e6[_0x4c52('0x37')]},'json':!![],'body':_0x2b7d53};return rp(_0x4d4274);})[_0x4c52('0x14')](function(_0x20b970){if(_0x20b970[_0x4c52('0x38')]>=0x1){var _0x46a3c7={'messageId':_0x20b970[_0x4c52('0x39')]};if(_0x43b8c8['smsMethod']!=='GP'||!_0x43b8c8[_0x4c52('0x3a')]){_0x46a3c7[_0x4c52('0x3b')]=!![];}return _0x5c3a2e[_0x4c52('0x25')](_0x46a3c7);}else{return logger[_0x4c52('0x17')](_0x4c52('0x26'),_0x4c52('0x27'),'skebby',util['inspect'](_0x20b970,{'showHidden':![],'depth':null}));}})[_0x4c52('0x16')](function(_0x42c0b5){return logger[_0x4c52('0x17')](_0x4c52('0x26'),_0x4c52('0x27'),_0x4c52('0x2a'),util['inspect'](_0x42c0b5,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x4c52('0x26'),_0x4c52('0x27'),'skebby','Missing\x20parameters:\x20username,\x20password');}break;case _0x4c52('0x3c'):if(_0x43b8c8[_0x4c52('0x1e')]){var _0x502bfa={'recipient':_0x1dbc9b[_0x4c52('0x1f')],'message':_0x1dbc9b[_0x4c52('0xa')],'sender':_0x43b8c8['senderString']||_0x43b8c8[_0x4c52('0x1f')],'authorization':_0x43b8c8[_0x4c52('0x1e')]};var _0x367358={'method':_0x4c52('0x35'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x502bfa,'json':!![]};rp(_0x367358)['then'](function(_0x1d969e){var _0x529e4c={'messageId':_0x1d969e[_0x4c52('0x3d')]};if(!_0x43b8c8[_0x4c52('0x3a')]){_0x529e4c[_0x4c52('0x3b')]=!![];}return _0x5c3a2e['update'](_0x529e4c);})[_0x4c52('0x16')](function(_0x3bea36){logger[_0x4c52('0x17')](_0x4c52('0x26'),_0x4c52('0x27'),'connectel',util['inspect'](_0x3bea36,{'showHidden':![],'depth':null}));});}else{logger[_0x4c52('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x4c52('0x27'),_0x4c52('0x3c'),_0x4c52('0x3e'));}break;case _0x4c52('0x3f'):if(_0x43b8c8['username']&&_0x43b8c8[_0x4c52('0x2d')]){var _0x502bfa={'messages':[{'source':_0x4c52('0x40'),'to':_0x1dbc9b[_0x4c52('0x1f')],'body':_0x1dbc9b['body'],'from':_0x43b8c8['senderString']||_0x43b8c8[_0x4c52('0x1f')]}]};var _0xe77b89=util[_0x4c52('0x41')](_0x4c52('0x42'),_0x43b8c8[_0x4c52('0x2c')],_0x43b8c8[_0x4c52('0x2d')]);var _0x367358={'method':_0x4c52('0x35'),'uri':_0x4c52('0x43'),'body':_0x502bfa,'headers':{'Authorization':util[_0x4c52('0x41')](_0x4c52('0x44'),new Buffer(_0xe77b89)[_0x4c52('0x45')]('base64'))},'json':!![]};rp(_0x367358)[_0x4c52('0x14')](function(_0x48f12a){if(_0x48f12a['http_code']>=0xc8&&_0x48f12a[_0x4c52('0x46')]<=0xce){if(_0x48f12a['data']&&_0x48f12a[_0x4c52('0x47')][_0x4c52('0x48')]>0x0){var _0x3fa6a6=_['head'](_0x48f12a[_0x4c52('0x47')][_0x4c52('0x20')]);var _0x580233={'messageId':_0x3fa6a6['message_id']};if(!_0x43b8c8[_0x4c52('0x3a')]){_0x580233[_0x4c52('0x3b')]=!![];}return _0x5c3a2e[_0x4c52('0x25')](_0x580233);}else{logger[_0x4c52('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x4c52('0x49'),util[_0x4c52('0x28')](_0x48f12a,{'showHidden':![],'depth':null}));}}else{logger[_0x4c52('0x17')](_0x4c52('0x26'),_0x4c52('0x27'),_0x4c52('0x49'),util[_0x4c52('0x28')](_0x48f12a,{'showHidden':![],'depth':null}));}})['catch'](function(_0x10f9e1){logger[_0x4c52('0x17')](_0x4c52('0x26'),'afterCreate',_0x4c52('0x49'),util[_0x4c52('0x28')](_0x10f9e1,{'showHidden':![],'depth':null}));});}else{logger[_0x4c52('0x17')](_0x4c52('0x26'),'afterCreate',_0x4c52('0x49'),_0x4c52('0x4a'));}break;case'plivo':if(_0x43b8c8[_0x4c52('0x4b')]&&_0x43b8c8[_0x4c52('0x1e')]){var _0x502bfa={'dst':_0x1dbc9b[_0x4c52('0x1f')],'text':_0x1dbc9b[_0x4c52('0xa')],'src':_0x43b8c8[_0x4c52('0x4c')]||_0x43b8c8[_0x4c52('0x1f')],'url':_0x43b8c8[_0x4c52('0x4d')]+_0x4c52('0x4e')+_0x1dbc9b['id']+_0x4c52('0x22')+_0x43b8c8[_0x4c52('0x23')]};var _0xe77b89=util[_0x4c52('0x41')]('%s:%s',_0x43b8c8[_0x4c52('0x4b')],_0x43b8c8[_0x4c52('0x1e')]);var _0x367358={'method':_0x4c52('0x35'),'uri':util['format']('https://api.plivo.com/v1/Account/%s/Message/',_0x43b8c8[_0x4c52('0x4b')]),'body':_0x502bfa,'headers':{'Authorization':util['format'](_0x4c52('0x44'),new Buffer(_0xe77b89)['toString'](_0x4c52('0x4f')))},'json':!![]};rp(_0x367358)[_0x4c52('0x14')](function(_0x2b9930){var _0x14bfce={'messageId':_0x2b9930[_0x4c52('0x50')][0x0]};return _0x5c3a2e['update'](_0x14bfce);})[_0x4c52('0x16')](function(_0x510e4c){logger['error'](_0x4c52('0x26'),_0x4c52('0x27'),_0x4c52('0x51'),util['inspect'](_0x510e4c,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x4c52('0x26'),_0x4c52('0x27'),'plivo','Missing\x20parameters:\x20authId,\x20authToken');}break;case _0x4c52('0x52'):if(_0x43b8c8[_0x4c52('0x2c')]&&_0x43b8c8['password']){if(_0x43b8c8[_0x4c52('0x53')]){var _0x41d3db={'method':_0x4c52('0x35'),'uri':_0x43b8c8['baseUrl']+_0x4c52('0x54'),'body':{'username':_0x43b8c8[_0x4c52('0x2c')],'password':_0x43b8c8[_0x4c52('0x2d')]},'json':!![]};return rp(_0x41d3db)[_0x4c52('0x14')](function(_0x355bbb){var _0x3ad33e={'method':'POST','uri':_0x43b8c8[_0x4c52('0x53')]+_0x4c52('0x55'),'body':{'messages':[{'from':_0x43b8c8[_0x4c52('0x1f')],'destinations':[{'to':_0x1dbc9b['phone']}],'text':_0x1dbc9b[_0x4c52('0xa')],'notifyUrl':_0x43b8c8[_0x4c52('0x4d')]+_0x4c52('0x4e')+_0x1dbc9b['id']+_0x4c52('0x22')+_0x43b8c8[_0x4c52('0x23')],'notifyContentType':_0x4c52('0x56'),'callbackData':_0x43b8c8[_0x4c52('0x1f')]+';'+_0x1dbc9b['body']}]},'headers':{'Authorization':_0x4c52('0x57')+_0x355bbb['token']},'json':!![]};return rp(_0x3ad33e)['then'](function(_0x5f44ab){if(_0x5f44ab[_0x4c52('0x20')]){var _0x3d6154={'messageId':_0x5f44ab[_0x4c52('0x20')][0x0][_0x4c52('0x9')]};if(!_0x43b8c8[_0x4c52('0x3a')]){_0x3d6154[_0x4c52('0x3b')]=!![];}return _0x5c3a2e[_0x4c52('0x25')](_0x3d6154);}else{return logger[_0x4c52('0x17')](_0x4c52('0x26'),'afterCreate',_0x4c52('0x52'),util[_0x4c52('0x28')](_0x5f44ab,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x335191){return logger[_0x4c52('0x17')](_0x4c52('0x26'),_0x4c52('0x27'),'infobip',util[_0x4c52('0x28')](_0x335191,{'showHidden':![],'depth':null}));});}else{logger[_0x4c52('0x17')](_0x4c52('0x26'),'afterCreate',_0x4c52('0x52'),_0x4c52('0x58'));}}else{logger[_0x4c52('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x4c52('0x27'),'infobip',_0x4c52('0x4a'));}break;case _0x4c52('0x59'):var _0x33c040=require(_0x4c52('0x5a'));if(_0x43b8c8[_0x4c52('0x5b')]){var _0x58325b={};_0x58325b[_0x4c52('0x5c')]=_0x43b8c8[_0x4c52('0x2c')];_0x58325b[_0x4c52('0x1f')]=_0x1dbc9b[_0x4c52('0x1f')];_0x58325b['sender']=_0x43b8c8[_0x4c52('0x1f')];_0x58325b[_0x4c52('0x5d')]=_0x1dbc9b[_0x4c52('0xa')];_0x58325b[_0x4c52('0x5e')]=+new Date();var _0x3850f6='';var _0x26aa4b='';var _0x3bfbac=Object[_0x4c52('0x5f')](_0x58325b);_0x3bfbac['sort']();for(var _0x3b2b12=0x0;_0x3b2b12<_0x3bfbac[_0x4c52('0x60')];_0x3b2b12++){if(_0x3850f6!=''){_0x3850f6+='&';}_0x3850f6+=_0x3bfbac[_0x3b2b12]+'='+encodeURIComponent(_0x58325b[_0x3bfbac[_0x3b2b12]]);_0x26aa4b+=_0x58325b[_0x3bfbac[_0x3b2b12]];}_0x26aa4b+=_0x43b8c8[_0x4c52('0x5b')];_0x26aa4b=_0x33c040['createHash'](_0x4c52('0x61'))[_0x4c52('0x25')](_0x26aa4b)['digest'](_0x4c52('0x62'));if(_0x3850f6!==''){_0x3850f6+='&';}_0x3850f6+=_0x4c52('0x63')+_0x26aa4b;var _0x4d4274={'method':_0x4c52('0x32'),'uri':_0x43b8c8[_0x4c52('0x53')]+_0x4c52('0x64')+_0x3850f6,'json':!![]};return rp(_0x4d4274)[_0x4c52('0x14')](function(_0x1c4924){var _0x4c5166=Object[_0x4c52('0x5f')](_0x1c4924);if(_0x1c4924[_0x4c5166[0x0]][_0x4c52('0x17')]&&parseInt(_0x1c4924[_0x4c5166[0x0]]['error'])===0x0){var _0x1ef104={'messageId':_0x1c4924[_0x4c5166[0x0]]['id_sms']};if(!_0x43b8c8[_0x4c52('0x3a')]){_0x1ef104[_0x4c52('0x3b')]=!![];}return _0x5c3a2e[_0x4c52('0x25')](_0x1ef104);}else{return logger[_0x4c52('0x17')](_0x4c52('0x26'),_0x4c52('0x27'),_0x4c52('0x59'),util[_0x4c52('0x28')](_0x1c4924[_0x4c52('0x17')],{'showHidden':![],'depth':null}));}})[_0x4c52('0x16')](function(_0x46b423){return logger[_0x4c52('0x17')](_0x4c52('0x26'),_0x4c52('0x27'),_0x4c52('0x59'),util[_0x4c52('0x28')](_0x46b423,{'showHidden':![],'depth':null}));});}else{logger[_0x4c52('0x17')](_0x4c52('0x26'),_0x4c52('0x27'),_0x4c52('0x59'),_0x4c52('0x65'));}break;case'clickatell':if(_0x43b8c8[_0x4c52('0x5b')]){var _0x2cb3b0={'method':_0x4c52('0x35'),'uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x43b8c8['apiKey']},'body':{'content':_0x1dbc9b[_0x4c52('0xa')],'to':[_0x1dbc9b[_0x4c52('0x1f')]],'from':_0x43b8c8[_0x4c52('0x1f')],'binary':![],'clientMessageId':_0x4c52('0x66'),'charset':_0x4c52('0x67')},'json':!![]};rp(_0x2cb3b0)['then'](function(_0x98ef20){if(!_0x98ef20[_0x4c52('0x17')]){var _0x260696={'messageId':_0x98ef20[_0x4c52('0x20')][0x0]['apiMessageId']};if(!_0x43b8c8[_0x4c52('0x3a')]){_0x260696[_0x4c52('0x3b')]=!![];}return _0x5c3a2e['update'](_0x260696);}else{return logger[_0x4c52('0x17')](_0x4c52('0x26'),_0x4c52('0x27'),_0x4c52('0x68'),util[_0x4c52('0x28')](_0x98ef20[_0x4c52('0x17')],{'showHidden':![],'depth':null}));}})[_0x4c52('0x16')](function(_0x3fc35f){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x4c52('0x27'),_0x4c52('0x68'),util['inspect'](_0x3fc35f,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x4c52('0x26'),_0x4c52('0x27'),_0x4c52('0x68'),_0x4c52('0x65'));}break;case _0x4c52('0x69'):if(_0x43b8c8[_0x4c52('0x2c')]&&_0x43b8c8[_0x4c52('0x2d')]){var _0xe77b89=util[_0x4c52('0x41')](_0x4c52('0x42'),_0x43b8c8[_0x4c52('0x2c')],_0x43b8c8['password']);var _0x367358={'method':_0x4c52('0x35'),'uri':_0x4c52('0x6a')+_0x43b8c8[_0x4c52('0x6b')]+'/messages','body':{'to':[_0x1dbc9b[_0x4c52('0x1f')]],'text':_0x1dbc9b['body'],'from':_0x43b8c8[_0x4c52('0x1f')],'applicationId':_0x43b8c8['applicationId']},'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(_0xe77b89)[_0x4c52('0x45')](_0x4c52('0x4f')))},'json':!![]};rp(_0x367358)['then'](function(_0x3f44bf){if(_0x3f44bf['id']){var _0x1ccc34={'messageId':_0x3f44bf['id']};return _0x5c3a2e['update'](_0x1ccc34);}else{logger['error'](_0x4c52('0x26'),_0x4c52('0x27'),'bandwidth',util['inspect'](_0x3f44bf,{'showHidden':![],'depth':null}));}})[_0x4c52('0x16')](function(_0x59b28c){logger['error'](_0x4c52('0x26'),_0x4c52('0x27'),_0x4c52('0x69'),util[_0x4c52('0x28')](_0x59b28c,{'showHidden':![],'depth':null}));});}else{logger[_0x4c52('0x17')](_0x4c52('0x26'),_0x4c52('0x27'),_0x4c52('0x69'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x4c52('0x6c'):if(_0x43b8c8[_0x4c52('0x5b')]){var _0x3e4d1d={};var _0x4d4274={'method':'POST','uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':'Bearer\x20'+_0x43b8c8[_0x4c52('0x5b')],'Content-Type':_0x4c52('0x56')},'body':{'from':_0x43b8c8[_0x4c52('0x1f')],'to':_0x1dbc9b[_0x4c52('0x1f')],'text':_0x1dbc9b['body']},'json':!![]};return rp(_0x4d4274)['then'](function(_0x5b77da){if(_0x5b77da[_0x4c52('0x6d')]==0xca){_0x3e4d1d[_0x4c52('0x6e')]=_0x5b77da;var _0x53b2e2={'method':'POST','uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0x4c52('0x6f')+_0x43b8c8[_0x4c52('0x5b')],'Content-Type':_0x4c52('0x56')},'body':{'refid':_0x3e4d1d[_0x4c52('0x6e')]['refid']},'json':!![]};return rp(_0x53b2e2)[_0x4c52('0x14')](function(_0x29dda8){_0x3e4d1d[_0x4c52('0x70')]=_0x29dda8;var _0x3e90f8={'messageId':_0x3e4d1d[_0x4c52('0x6e')][_0x4c52('0x71')],'read':!![]};return _0x5c3a2e[_0x4c52('0x25')](_0x3e90f8);});}else{return logger[_0x4c52('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x4c52('0x6c'),util[_0x4c52('0x28')](_0x5b77da,{'showHidden':![],'depth':null}));}})[_0x4c52('0x16')](function(_0x2b7e0a){return logger['error'](_0x4c52('0x26'),'afterCreate',_0x4c52('0x6c'),util['inspect'](_0x2b7e0a,{'showHidden':![],'depth':null}));});}else{return logger[_0x4c52('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x4c52('0x6c'),_0x4c52('0x72'));}break;}}})['finally'](function(){_0x276301();});}else{_0x276301();}}},'charset':'utf8mb4','collate':_0x4c52('0x73')});};
\ No newline at end of file
+var _0xe0c0=['clickSend','plivo','authId','/api/sms/messages/','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','infobip','Missing\x20parameters:\x20base_url','csc','apiKey','login','timestamp','keys','sort','length','createHash','digest','hex','signature=','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','%s:%s','accountId','applicationId','bandwidth','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','message','refid','status','Token\x20not\x20received','finally','utf8mb4','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define','SmsMessage','sms_messages','messageId','models','get','direction','toLowerCase','out','UserId','SmsInteraction','findOne','SmsInteractionId','then','createdAt','error','secret','SmsAccount','find','SmsAccountId','twilio','accountSid','authToken','phone','create','body','remote','/status?token=','token','sid','update','catch','afterCreate','SmsMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','&password=','GET','sms','total_sent','deliveryReport','read','inspect','Missing\x20parameters:\x20username,\x20password','connectel','senderString','POST','requestid','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','https://rest.clicksend.com/v3/sms/send','format','Basic\x20%s','toString','base64','http_code','data','queued_count','head','messages'];(function(_0x110782,_0x3a0236){var _0x20d9d1=function(_0x479ecb){while(--_0x479ecb){_0x110782['push'](_0x110782['shift']());}};_0x20d9d1(++_0x3a0236);}(_0xe0c0,0xa7));var _0x0e0c=function(_0xbbe81a,_0x57f637){_0xbbe81a=_0xbbe81a-0x0;var _0x35b49b=_0xe0c0[_0xbbe81a];return _0x35b49b;};'use strict';var _=require(_0x0e0c('0x0'));var util=require('util');var logger=require(_0x0e0c('0x1'))(_0x0e0c('0x2'));var moment=require(_0x0e0c('0x3'));var BPromise=require(_0x0e0c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0e0c('0x5'));var rimraf=require(_0x0e0c('0x6'));var config=require(_0x0e0c('0x7'));var attributes=require('./smsMessage.attributes');module[_0x0e0c('0x8')]=function(_0x2856d7,_0x4a094c){return _0x2856d7[_0x0e0c('0x9')](_0x0e0c('0xa'),attributes,{'tableName':_0x0e0c('0xb'),'paranoid':![],'indexes':[{'name':_0x0e0c('0xc'),'fields':[_0x0e0c('0xc')]},{'name':'fti_sms_messages','fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2bd09c,_0x5b347b,_0xb2aa1d){var _0xe4469=_0x2856d7[_0x0e0c('0xd')];var _0x112929=_0x2bd09c[_0x0e0c('0xe')]({'plain':!![]});if(_0x112929[_0x0e0c('0xf')][_0x0e0c('0x10')]()==='in'||_0x112929[_0x0e0c('0xf')]['toLowerCase']()===_0x0e0c('0x11')&&!_0x112929['secret']&&!_['isNil'](_0x112929[_0x0e0c('0x12')])){_0xe4469[_0x0e0c('0x13')][_0x0e0c('0x14')]({'where':{'id':_0x112929[_0x0e0c('0x15')]}})[_0x0e0c('0x16')](function(_0x19f315){if(_0x19f315){_0x19f315['update']({'lastMsgAt':_0x112929[_0x0e0c('0x17')],'lastMsgDirection':_0x112929[_0x0e0c('0xf')][_0x0e0c('0x10')]()});}})['catch'](function(_0x368ba0){console[_0x0e0c('0x18')](_0x368ba0);});}if(_0x112929[_0x0e0c('0xf')]===_0x0e0c('0x11')&&!_0x112929[_0x0e0c('0x19')]){var _0x2b0cb6;_0xe4469[_0x0e0c('0x1a')][_0x0e0c('0x1b')]({'where':{'id':_0x112929[_0x0e0c('0x1c')]},'raw':!![]})['then'](function(_0x3c6c5a){_0x2b0cb6=_0x3c6c5a;if(_0x2b0cb6&&_0x2b0cb6['type']){switch(_0x2b0cb6['type']){case'twilio':var _0x3743fb=require(_0x0e0c('0x1d'));if(_0x2b0cb6[_0x0e0c('0x1e')]&&_0x2b0cb6[_0x0e0c('0x1f')]&&_0x2b0cb6[_0x0e0c('0x20')]){var _0x3cc1cc=new _0x3743fb(_0x2b0cb6['accountSid'],_0x2b0cb6[_0x0e0c('0x1f')]);_0x3cc1cc['messages'][_0x0e0c('0x21')]({'body':_0x112929[_0x0e0c('0x22')],'to':_0x112929[_0x0e0c('0x20')],'from':_0x2b0cb6[_0x0e0c('0x20')],'statusCallback':_0x2b0cb6[_0x0e0c('0x23')]+'/api/sms/messages/'+_0x112929['id']+_0x0e0c('0x24')+_0x2b0cb6[_0x0e0c('0x25')]})[_0x0e0c('0x16')](function(_0x29ff87){if(_0x29ff87[_0x0e0c('0x26')]){return _0x2bd09c[_0x0e0c('0x27')]({'messageId':_0x29ff87[_0x0e0c('0x26')]});}})[_0x0e0c('0x28')](function(_0x426bf1){logger[_0x0e0c('0x18')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x0e0c('0x29'),_0x0e0c('0x1d'),util['inspect'](_0x426bf1,{'showHidden':![],'depth':null}));});}else{logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),'afterCreate',_0x0e0c('0x1d'),_0x0e0c('0x2b'));}break;case _0x0e0c('0x2c'):var _0x135db1=_0x0e0c('0x2d');if(_0x2b0cb6[_0x0e0c('0x2e')]&&_0x2b0cb6[_0x0e0c('0x2f')]){var _0x2d1444={'recipient':[_0x112929[_0x0e0c('0x20')]],'message':_0x112929[_0x0e0c('0x22')],'message_type':_0x2b0cb6[_0x0e0c('0x30')]};if(_0x2b0cb6[_0x0e0c('0x30')]&&_0x2b0cb6[_0x0e0c('0x30')]!=='SI'){_0x2d1444[_0x0e0c('0x31')]=_0x2b0cb6[_0x0e0c('0x20')];}var _0x4c7262={'url':_0x135db1+'login?username='+_0x2b0cb6[_0x0e0c('0x2e')]+_0x0e0c('0x32')+_0x2b0cb6[_0x0e0c('0x2f')],'method':_0x0e0c('0x33')};rp(_0x4c7262)[_0x0e0c('0x16')](function(_0x55f78d){var _0x2736df=_0x55f78d['split'](';');var _0x32fb11={'user_key':_0x2736df[0x0],'session_key':_0x2736df[0x1]};_0x4c7262={'url':_0x135db1+_0x0e0c('0x34'),'method':'POST','headers':{'user_key':_0x32fb11['user_key'],'Session_key':_0x32fb11['session_key']},'json':!![],'body':_0x2d1444};return rp(_0x4c7262);})['then'](function(_0x1c83f7){if(_0x1c83f7[_0x0e0c('0x35')]>=0x1){var _0x404845={'messageId':_0x1c83f7['internal_order_id']};if(_0x2b0cb6['smsMethod']!=='GP'||!_0x2b0cb6[_0x0e0c('0x36')]){_0x404845[_0x0e0c('0x37')]=!![];}return _0x2bd09c['update'](_0x404845);}else{return logger['error'](_0x0e0c('0x2a'),'afterCreate',_0x0e0c('0x2c'),util[_0x0e0c('0x38')](_0x1c83f7,{'showHidden':![],'depth':null}));}})[_0x0e0c('0x28')](function(_0x11e4e7){return logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),_0x0e0c('0x29'),'skebby',util[_0x0e0c('0x38')](_0x11e4e7,{'showHidden':![],'depth':null}));});}else{logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),_0x0e0c('0x29'),_0x0e0c('0x2c'),_0x0e0c('0x39'));}break;case _0x0e0c('0x3a'):if(_0x2b0cb6[_0x0e0c('0x1f')]){var _0x125dc9={'recipient':_0x112929['phone'],'message':_0x112929[_0x0e0c('0x22')],'sender':_0x2b0cb6[_0x0e0c('0x3b')]||_0x2b0cb6[_0x0e0c('0x20')],'authorization':_0x2b0cb6[_0x0e0c('0x1f')]};var _0x5b347b={'method':_0x0e0c('0x3c'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x125dc9,'json':!![]};rp(_0x5b347b)['then'](function(_0x31fa4e){var _0x8ea711={'messageId':_0x31fa4e[_0x0e0c('0x3d')]};if(!_0x2b0cb6[_0x0e0c('0x36')]){_0x8ea711[_0x0e0c('0x37')]=!![];}return _0x2bd09c[_0x0e0c('0x27')](_0x8ea711);})[_0x0e0c('0x28')](function(_0x29e9f9){logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),'afterCreate',_0x0e0c('0x3a'),util[_0x0e0c('0x38')](_0x29e9f9,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x0e0c('0x2a'),_0x0e0c('0x29'),_0x0e0c('0x3a'),_0x0e0c('0x3e'));}break;case _0x0e0c('0x3f'):if(_0x2b0cb6[_0x0e0c('0x2e')]&&_0x2b0cb6['password']){var _0x125dc9={'messages':[{'source':_0x0e0c('0x40'),'to':_0x112929[_0x0e0c('0x20')],'body':_0x112929[_0x0e0c('0x22')],'from':_0x2b0cb6[_0x0e0c('0x3b')]||_0x2b0cb6[_0x0e0c('0x20')]}]};var _0x28ca85=util['format']('%s:%s',_0x2b0cb6[_0x0e0c('0x2e')],_0x2b0cb6['password']);var _0x5b347b={'method':'POST','uri':_0x0e0c('0x41'),'body':_0x125dc9,'headers':{'Authorization':util[_0x0e0c('0x42')](_0x0e0c('0x43'),new Buffer(_0x28ca85)[_0x0e0c('0x44')](_0x0e0c('0x45')))},'json':!![]};rp(_0x5b347b)[_0x0e0c('0x16')](function(_0x7bcc2b){if(_0x7bcc2b[_0x0e0c('0x46')]>=0xc8&&_0x7bcc2b[_0x0e0c('0x46')]<=0xce){if(_0x7bcc2b[_0x0e0c('0x47')]&&_0x7bcc2b[_0x0e0c('0x47')][_0x0e0c('0x48')]>0x0){var _0x495c5f=_[_0x0e0c('0x49')](_0x7bcc2b[_0x0e0c('0x47')][_0x0e0c('0x4a')]);var _0x1c2ca5={'messageId':_0x495c5f['message_id']};if(!_0x2b0cb6[_0x0e0c('0x36')]){_0x1c2ca5[_0x0e0c('0x37')]=!![];}return _0x2bd09c[_0x0e0c('0x27')](_0x1c2ca5);}else{logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),_0x0e0c('0x29'),_0x0e0c('0x4b'),util[_0x0e0c('0x38')](_0x7bcc2b,{'showHidden':![],'depth':null}));}}else{logger[_0x0e0c('0x18')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x0e0c('0x29'),_0x0e0c('0x4b'),util['inspect'](_0x7bcc2b,{'showHidden':![],'depth':null}));}})['catch'](function(_0x30d9d2){logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),'afterCreate',_0x0e0c('0x4b'),util[_0x0e0c('0x38')](_0x30d9d2,{'showHidden':![],'depth':null}));});}else{logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),'afterCreate','clickSend',_0x0e0c('0x39'));}break;case _0x0e0c('0x4c'):if(_0x2b0cb6[_0x0e0c('0x4d')]&&_0x2b0cb6[_0x0e0c('0x1f')]){var _0x125dc9={'dst':_0x112929['phone'],'text':_0x112929['body'],'src':_0x2b0cb6[_0x0e0c('0x3b')]||_0x2b0cb6['phone'],'url':_0x2b0cb6[_0x0e0c('0x23')]+_0x0e0c('0x4e')+_0x112929['id']+_0x0e0c('0x24')+_0x2b0cb6[_0x0e0c('0x25')]};var _0x28ca85=util[_0x0e0c('0x42')]('%s:%s',_0x2b0cb6[_0x0e0c('0x4d')],_0x2b0cb6[_0x0e0c('0x1f')]);var _0x5b347b={'method':_0x0e0c('0x3c'),'uri':util[_0x0e0c('0x42')](_0x0e0c('0x4f'),_0x2b0cb6['authId']),'body':_0x125dc9,'headers':{'Authorization':util['format'](_0x0e0c('0x43'),new Buffer(_0x28ca85)[_0x0e0c('0x44')](_0x0e0c('0x45')))},'json':!![]};rp(_0x5b347b)[_0x0e0c('0x16')](function(_0x56aae1){var _0x169ce7={'messageId':_0x56aae1[_0x0e0c('0x50')][0x0]};return _0x2bd09c['update'](_0x169ce7);})['catch'](function(_0x3be9d0){logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),'afterCreate',_0x0e0c('0x4c'),util[_0x0e0c('0x38')](_0x3be9d0,{'showHidden':![],'depth':null}));});}else{logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),_0x0e0c('0x29'),_0x0e0c('0x4c'),_0x0e0c('0x51'));}break;case'infobip':if(_0x2b0cb6['username']&&_0x2b0cb6[_0x0e0c('0x2f')]){if(_0x2b0cb6[_0x0e0c('0x52')]){var _0x5c7f3f={'method':'POST','uri':_0x2b0cb6[_0x0e0c('0x52')]+_0x0e0c('0x53'),'body':{'username':_0x2b0cb6[_0x0e0c('0x2e')],'password':_0x2b0cb6['password']},'json':!![]};return rp(_0x5c7f3f)[_0x0e0c('0x16')](function(_0x46edaf){var _0x3073dc={'method':'POST','uri':_0x2b0cb6['baseUrl']+_0x0e0c('0x54'),'body':{'messages':[{'from':_0x2b0cb6['phone'],'destinations':[{'to':_0x112929[_0x0e0c('0x20')]}],'text':_0x112929[_0x0e0c('0x22')],'notifyUrl':_0x2b0cb6[_0x0e0c('0x23')]+_0x0e0c('0x4e')+_0x112929['id']+'/status?token='+_0x2b0cb6[_0x0e0c('0x25')],'notifyContentType':_0x0e0c('0x55'),'callbackData':_0x2b0cb6[_0x0e0c('0x20')]+';'+_0x112929['body']}]},'headers':{'Authorization':_0x0e0c('0x56')+_0x46edaf[_0x0e0c('0x25')]},'json':!![]};return rp(_0x3073dc)[_0x0e0c('0x16')](function(_0x3c3996){if(_0x3c3996[_0x0e0c('0x4a')]){var _0x449aeb={'messageId':_0x3c3996['messages'][0x0][_0x0e0c('0xc')]};if(!_0x2b0cb6[_0x0e0c('0x36')]){_0x449aeb['read']=!![];}return _0x2bd09c[_0x0e0c('0x27')](_0x449aeb);}else{return logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),'afterCreate',_0x0e0c('0x57'),util[_0x0e0c('0x38')](_0x3c3996,{'showHidden':![],'depth':null}));}});})[_0x0e0c('0x28')](function(_0x35aa81){return logger['error'](_0x0e0c('0x2a'),'afterCreate',_0x0e0c('0x57'),util[_0x0e0c('0x38')](_0x35aa81,{'showHidden':![],'depth':null}));});}else{logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),_0x0e0c('0x29'),_0x0e0c('0x57'),_0x0e0c('0x58'));}}else{logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),'afterCreate',_0x0e0c('0x57'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x0e0c('0x59'):var _0x4321d5=require('crypto');if(_0x2b0cb6[_0x0e0c('0x5a')]){var _0x4f5e04={};_0x4f5e04[_0x0e0c('0x5b')]=_0x2b0cb6[_0x0e0c('0x2e')];_0x4f5e04[_0x0e0c('0x20')]=_0x112929[_0x0e0c('0x20')];_0x4f5e04[_0x0e0c('0x31')]=_0x2b0cb6['phone'];_0x4f5e04['text']=_0x112929[_0x0e0c('0x22')];_0x4f5e04[_0x0e0c('0x5c')]=+new Date();var _0x1a4ea0='';var _0x1a3ef1='';var _0x4aebf3=Object[_0x0e0c('0x5d')](_0x4f5e04);_0x4aebf3[_0x0e0c('0x5e')]();for(var _0x35e832=0x0;_0x35e832<_0x4aebf3[_0x0e0c('0x5f')];_0x35e832++){if(_0x1a4ea0!=''){_0x1a4ea0+='&';}_0x1a4ea0+=_0x4aebf3[_0x35e832]+'='+encodeURIComponent(_0x4f5e04[_0x4aebf3[_0x35e832]]);_0x1a3ef1+=_0x4f5e04[_0x4aebf3[_0x35e832]];}_0x1a3ef1+=_0x2b0cb6[_0x0e0c('0x5a')];_0x1a3ef1=_0x4321d5[_0x0e0c('0x60')]('md5')[_0x0e0c('0x27')](_0x1a3ef1)[_0x0e0c('0x61')](_0x0e0c('0x62'));if(_0x1a4ea0!==''){_0x1a4ea0+='&';}_0x1a4ea0+=_0x0e0c('0x63')+_0x1a3ef1;var _0x4c7262={'method':'GET','uri':_0x2b0cb6[_0x0e0c('0x52')]+_0x0e0c('0x64')+_0x1a4ea0,'json':!![]};return rp(_0x4c7262)['then'](function(_0x4c9398){var _0x463f0a=Object['keys'](_0x4c9398);if(_0x4c9398[_0x463f0a[0x0]]['error']&&parseInt(_0x4c9398[_0x463f0a[0x0]][_0x0e0c('0x18')])===0x0){var _0xc759e1={'messageId':_0x4c9398[_0x463f0a[0x0]][_0x0e0c('0x65')]};if(!_0x2b0cb6[_0x0e0c('0x36')]){_0xc759e1[_0x0e0c('0x37')]=!![];}return _0x2bd09c['update'](_0xc759e1);}else{return logger['error'](_0x0e0c('0x2a'),_0x0e0c('0x29'),_0x0e0c('0x59'),util['inspect'](_0x4c9398[_0x0e0c('0x18')],{'showHidden':![],'depth':null}));}})[_0x0e0c('0x28')](function(_0x10e8b0){return logger['error'](_0x0e0c('0x2a'),_0x0e0c('0x29'),_0x0e0c('0x59'),util[_0x0e0c('0x38')](_0x10e8b0,{'showHidden':![],'depth':null}));});}else{logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),_0x0e0c('0x29'),_0x0e0c('0x59'),_0x0e0c('0x66'));}break;case _0x0e0c('0x67'):if(_0x2b0cb6[_0x0e0c('0x5a')]){var _0x41a941={'method':'POST','uri':_0x0e0c('0x68'),'headers':{'Authorization':_0x2b0cb6['apiKey']},'body':{'content':_0x112929['body'],'to':[_0x112929[_0x0e0c('0x20')]],'from':_0x2b0cb6['phone'],'binary':![],'clientMessageId':_0x0e0c('0x69'),'charset':_0x0e0c('0x6a')},'json':!![]};rp(_0x41a941)['then'](function(_0x4c04fc){if(!_0x4c04fc['error']){var _0x404457={'messageId':_0x4c04fc[_0x0e0c('0x4a')][0x0][_0x0e0c('0x6b')]};if(!_0x2b0cb6[_0x0e0c('0x36')]){_0x404457['read']=!![];}return _0x2bd09c[_0x0e0c('0x27')](_0x404457);}else{return logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),_0x0e0c('0x29'),_0x0e0c('0x67'),util[_0x0e0c('0x38')](_0x4c04fc[_0x0e0c('0x18')],{'showHidden':![],'depth':null}));}})[_0x0e0c('0x28')](function(_0x3b796b){return logger['error'](_0x0e0c('0x2a'),_0x0e0c('0x29'),_0x0e0c('0x67'),util['inspect'](_0x3b796b,{'showHidden':![],'depth':null}));});}else{logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),_0x0e0c('0x29'),_0x0e0c('0x67'),_0x0e0c('0x66'));}break;case'bandwidth':if(_0x2b0cb6[_0x0e0c('0x2e')]&&_0x2b0cb6['password']){var _0x28ca85=util[_0x0e0c('0x42')](_0x0e0c('0x6c'),_0x2b0cb6[_0x0e0c('0x2e')],_0x2b0cb6[_0x0e0c('0x2f')]);var _0x5b347b={'method':_0x0e0c('0x3c'),'uri':'https://messaging.bandwidth.com/api/v2/users/'+_0x2b0cb6[_0x0e0c('0x6d')]+'/messages','body':{'to':[_0x112929[_0x0e0c('0x20')]],'text':_0x112929[_0x0e0c('0x22')],'from':_0x2b0cb6[_0x0e0c('0x20')],'applicationId':_0x2b0cb6[_0x0e0c('0x6e')]},'headers':{'Authorization':util[_0x0e0c('0x42')](_0x0e0c('0x43'),new Buffer(_0x28ca85)[_0x0e0c('0x44')]('base64'))},'json':!![]};rp(_0x5b347b)[_0x0e0c('0x16')](function(_0x2119a7){if(_0x2119a7['id']){var _0x186d82={'messageId':_0x2119a7['id']};return _0x2bd09c[_0x0e0c('0x27')](_0x186d82);}else{logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),_0x0e0c('0x29'),_0x0e0c('0x6f'),util[_0x0e0c('0x38')](_0x2119a7,{'showHidden':![],'depth':null}));}})[_0x0e0c('0x28')](function(_0x25a55a){logger[_0x0e0c('0x18')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x0e0c('0x29'),'bandwidth',util[_0x0e0c('0x38')](_0x25a55a,{'showHidden':![],'depth':null}));});}else{logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),_0x0e0c('0x29'),'bandwidth',_0x0e0c('0x39'));}break;case _0x0e0c('0x70'):if(_0x2b0cb6[_0x0e0c('0x5a')]){var _0x5104cf={};var _0x4c7262={'method':_0x0e0c('0x3c'),'uri':_0x0e0c('0x71'),'headers':{'Authorization':_0x0e0c('0x72')+_0x2b0cb6[_0x0e0c('0x5a')],'Content-Type':_0x0e0c('0x55')},'body':{'from':_0x2b0cb6[_0x0e0c('0x20')],'to':_0x112929[_0x0e0c('0x20')],'text':_0x112929[_0x0e0c('0x22')]},'json':!![]};return rp(_0x4c7262)['then'](function(_0x319cc5){if(_0x319cc5['code']==0xca){_0x5104cf[_0x0e0c('0x73')]=_0x319cc5;var _0x31727d={'method':_0x0e0c('0x3c'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0x0e0c('0x72')+_0x2b0cb6[_0x0e0c('0x5a')],'Content-Type':'application/json'},'body':{'refid':_0x5104cf['message'][_0x0e0c('0x74')]},'json':!![]};return rp(_0x31727d)[_0x0e0c('0x16')](function(_0x35cc4b){_0x5104cf[_0x0e0c('0x75')]=_0x35cc4b;var _0x3bb0d9={'messageId':_0x5104cf[_0x0e0c('0x73')]['refid'],'read':!![]};return _0x2bd09c['update'](_0x3bb0d9);});}else{return logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),_0x0e0c('0x29'),_0x0e0c('0x70'),util[_0x0e0c('0x38')](_0x319cc5,{'showHidden':![],'depth':null}));}})['catch'](function(_0x232d9f){return logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),_0x0e0c('0x29'),_0x0e0c('0x70'),util['inspect'](_0x232d9f,{'showHidden':![],'depth':null}));});}else{return logger[_0x0e0c('0x18')](_0x0e0c('0x2a'),'afterCreate',_0x0e0c('0x70'),_0x0e0c('0x76'));}break;}}})[_0x0e0c('0x77')](function(){_0xb2aa1d();});}else{_0xb2aa1d();}}},'charset':_0x0e0c('0x78'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 8b73aad..c8a82bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0f7=['jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','request','then','info','SmsMessage,\x20%s,\x20%s','debug','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateSmsMessage','create','body','options','raw','lodash','util','ioredis','../../mysqldb','rpc'];(function(_0x4b0b48,_0x4d8de7){var _0x212adc=function(_0x4ccc5a){while(--_0x4ccc5a){_0x4b0b48['push'](_0x4b0b48['shift']());}};_0x212adc(++_0x4d8de7);}(_0xf0f7,0x15b));var _0x7f0f=function(_0x5ab72a,_0x43f96b){_0x5ab72a=_0x5ab72a-0x0;var _0x14683e=_0xf0f7[_0x5ab72a];return _0x14683e;};'use strict';var _=require(_0x7f0f('0x0'));var util=require(_0x7f0f('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7f0f('0x2'));var db=require(_0x7f0f('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7f0f('0x4'));var config=require('../../config/environment');var jayson=require(_0x7f0f('0x5'));var client=jayson[_0x7f0f('0x6')][_0x7f0f('0x7')]({'port':0x232a});config[_0x7f0f('0x8')]=_[_0x7f0f('0x9')](config[_0x7f0f('0x8')],{'host':_0x7f0f('0xa'),'port':0x18eb});var socket=require(_0x7f0f('0xb'))(new Redis(config[_0x7f0f('0x8')]));require(_0x7f0f('0xc'))[_0x7f0f('0xd')](socket);function respondWithRpcPromise(_0x3c455a,_0x687d11,_0x2cd042){return new BPromise(function(_0x3186d4,_0x5cd7f1){return client[_0x7f0f('0xe')](_0x3c455a,_0x2cd042)[_0x7f0f('0xf')](function(_0x10d05f){logger[_0x7f0f('0x10')](_0x7f0f('0x11'),_0x687d11,'request\x20sent');logger[_0x7f0f('0x12')](_0x7f0f('0x13'),_0x687d11,_0x7f0f('0x14'),JSON[_0x7f0f('0x15')](_0x10d05f));if(_0x10d05f[_0x7f0f('0x16')]){if(_0x10d05f[_0x7f0f('0x16')][_0x7f0f('0x17')]===0x1f4){logger[_0x7f0f('0x16')](_0x7f0f('0x11'),_0x687d11,_0x10d05f[_0x7f0f('0x16')]['message']);return _0x5cd7f1(_0x10d05f['error'][_0x7f0f('0x18')]);}logger[_0x7f0f('0x16')]('SmsMessage,\x20%s,\x20%s',_0x687d11,_0x10d05f[_0x7f0f('0x16')][_0x7f0f('0x18')]);return _0x3186d4(_0x10d05f[_0x7f0f('0x16')][_0x7f0f('0x18')]);}else{logger[_0x7f0f('0x10')]('SmsMessage,\x20%s,\x20%s',_0x687d11,'request\x20sent');_0x3186d4(_0x10d05f[_0x7f0f('0x19')][_0x7f0f('0x18')]);}})[_0x7f0f('0x1a')](function(_0x189512){logger[_0x7f0f('0x16')](_0x7f0f('0x11'),_0x687d11,_0x189512);_0x5cd7f1(_0x189512);});});}exports[_0x7f0f('0x1b')]=function(_0x42d902){var _0x108e7c=this;return new Promise(function(_0x454f72,_0x3e9ef9){return db['SmsMessage'][_0x7f0f('0x1c')](_0x42d902[_0x7f0f('0x1d')],{'raw':_0x42d902[_0x7f0f('0x1e')]?_0x42d902['options'][_0x7f0f('0x1f')]===undefined?!![]:![]:!![]})[_0x7f0f('0xf')](function(_0x43f956){logger['info'](_0x7f0f('0x1b'),_0x42d902);logger[_0x7f0f('0x12')](_0x7f0f('0x1b'),_0x42d902,JSON[_0x7f0f('0x15')](_0x43f956));_0x454f72(_0x43f956);})[_0x7f0f('0x1a')](function(_0x4c5f87){logger['error'](_0x7f0f('0x1b'),_0x4c5f87[_0x7f0f('0x18')],_0x42d902);_0x3e9ef9(_0x108e7c[_0x7f0f('0x16')](0x1f4,_0x4c5f87[_0x7f0f('0x18')]));});});};
\ No newline at end of file
+var _0xe885=['../../mysqldb','../../config/logger','rpc','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','CreateSmsMessage','SmsMessage','body','options','raw','catch','util','moment','bluebird','randomstring','ioredis'];(function(_0x3c7549,_0x1451d5){var _0x2b3b39=function(_0xb1617){while(--_0xb1617){_0x3c7549['push'](_0x3c7549['shift']());}};_0x2b3b39(++_0x1451d5);}(_0xe885,0x7f));var _0x5e88=function(_0x147337,_0x15c571){_0x147337=_0x147337-0x0;var _0x46ef60=_0xe885[_0x147337];return _0x46ef60;};'use strict';var _=require('lodash');var util=require(_0x5e88('0x0'));var moment=require(_0x5e88('0x1'));var BPromise=require(_0x5e88('0x2'));var rs=require(_0x5e88('0x3'));var fs=require('fs');var Redis=require(_0x5e88('0x4'));var db=require(_0x5e88('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x5e88('0x6'))(_0x5e88('0x7'));var config=require('../../config/environment');var jayson=require(_0x5e88('0x8'));var client=jayson['client'][_0x5e88('0x9')]({'port':0x232a});config[_0x5e88('0xa')]=_[_0x5e88('0xb')](config[_0x5e88('0xa')],{'host':_0x5e88('0xc'),'port':0x18eb});var socket=require(_0x5e88('0xd'))(new Redis(config[_0x5e88('0xa')]));require(_0x5e88('0xe'))[_0x5e88('0xf')](socket);function respondWithRpcPromise(_0x2167b6,_0x444156,_0x1faa0a){return new BPromise(function(_0xd9e6d7,_0x42d856){return client[_0x5e88('0x10')](_0x2167b6,_0x1faa0a)[_0x5e88('0x11')](function(_0x2655af){logger[_0x5e88('0x12')](_0x5e88('0x13'),_0x444156,_0x5e88('0x14'));logger[_0x5e88('0x15')](_0x5e88('0x16'),_0x444156,_0x5e88('0x14'),JSON[_0x5e88('0x17')](_0x2655af));if(_0x2655af['error']){if(_0x2655af['error'][_0x5e88('0x18')]===0x1f4){logger[_0x5e88('0x19')](_0x5e88('0x13'),_0x444156,_0x2655af[_0x5e88('0x19')]['message']);return _0x42d856(_0x2655af[_0x5e88('0x19')][_0x5e88('0x1a')]);}logger['error']('SmsMessage,\x20%s,\x20%s',_0x444156,_0x2655af[_0x5e88('0x19')][_0x5e88('0x1a')]);return _0xd9e6d7(_0x2655af[_0x5e88('0x19')]['message']);}else{logger[_0x5e88('0x12')](_0x5e88('0x13'),_0x444156,'request\x20sent');_0xd9e6d7(_0x2655af['result'][_0x5e88('0x1a')]);}})['catch'](function(_0x5ae4cd){logger['error'](_0x5e88('0x13'),_0x444156,_0x5ae4cd);_0x42d856(_0x5ae4cd);});});}exports[_0x5e88('0x1b')]=function(_0x76ea1d){var _0x1d0aa2=this;return new Promise(function(_0x3c9c67,_0x57dfab){return db[_0x5e88('0x1c')]['create'](_0x76ea1d[_0x5e88('0x1d')],{'raw':_0x76ea1d[_0x5e88('0x1e')]?_0x76ea1d['options'][_0x5e88('0x1f')]===undefined?!![]:![]:!![]})['then'](function(_0x54fe8d){logger[_0x5e88('0x12')](_0x5e88('0x1b'),_0x76ea1d);logger[_0x5e88('0x15')](_0x5e88('0x1b'),_0x76ea1d,JSON[_0x5e88('0x17')](_0x54fe8d));_0x3c9c67(_0x54fe8d);})[_0x5e88('0x20')](function(_0x35384a){logger[_0x5e88('0x19')](_0x5e88('0x1b'),_0x35384a[_0x5e88('0x1a')],_0x76ea1d);_0x57dfab(_0x1d0aa2[_0x5e88('0x19')](0x1f4,_0x35384a['message']));});});};
\ No newline at end of file
index 39be4e3..a89ee0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c34=['register','smsMessage:','./smsMessage.events','remove','emit','removeListener'];(function(_0x2d463e,_0x51d118){var _0x5de216=function(_0x2e3cf2){while(--_0x2e3cf2){_0x2d463e['push'](_0x2d463e['shift']());}};_0x5de216(++_0x51d118);}(_0x0c34,0x1dc));var _0x40c3=function(_0x557859,_0x3f36e4){_0x557859=_0x557859-0x0;var _0x34dc1b=_0x0c34[_0x557859];return _0x34dc1b;};'use strict';var SmsMessageEvents=require(_0x40c3('0x0'));var events=['save',_0x40c3('0x1'),'update'];function createListener(_0x53dd85,_0x5ed202){return function(_0x2c9700){_0x5ed202[_0x40c3('0x2')](_0x53dd85,_0x2c9700);};}function removeListener(_0x48147c,_0x5f4179){return function(){SmsMessageEvents[_0x40c3('0x3')](_0x48147c,_0x5f4179);};}exports[_0x40c3('0x4')]=function(_0x39e9b8){for(var _0x410464=0x0,_0x495b0c=events['length'];_0x410464<_0x495b0c;_0x410464++){var _0x2e205e=events[_0x410464];var _0x601935=createListener(_0x40c3('0x5')+_0x2e205e,_0x39e9b8);SmsMessageEvents['on'](_0x2e205e,_0x601935);}};
\ No newline at end of file
+var _0xd303=['remove','update','emit','removeListener','register','length','smsMessage:','./smsMessage.events'];(function(_0x7e2eb0,_0x17cd58){var _0xd92de4=function(_0x5d005b){while(--_0x5d005b){_0x7e2eb0['push'](_0x7e2eb0['shift']());}};_0xd92de4(++_0x17cd58);}(_0xd303,0x1c7));var _0x3d30=function(_0x2f74e1,_0x923ce7){_0x2f74e1=_0x2f74e1-0x0;var _0x100e21=_0xd303[_0x2f74e1];return _0x100e21;};'use strict';var SmsMessageEvents=require(_0x3d30('0x0'));var events=['save',_0x3d30('0x1'),_0x3d30('0x2')];function createListener(_0x3d8612,_0x3c0744){return function(_0x58b62a){_0x3c0744[_0x3d30('0x3')](_0x3d8612,_0x58b62a);};}function removeListener(_0x31b78a,_0x5b01d2){return function(){SmsMessageEvents[_0x3d30('0x4')](_0x31b78a,_0x5b01d2);};}exports[_0x3d30('0x5')]=function(_0x4f7712){for(var _0x4c6f0e=0x0,_0x51bd81=events[_0x3d30('0x6')];_0x4c6f0e<_0x51bd81;_0x4c6f0e++){var _0x1f9eaa=events[_0x4c6f0e];var _0x429ad3=createListener(_0x3d30('0x7')+_0x1f9eaa,_0x4f7712);SmsMessageEvents['on'](_0x1f9eaa,_0x429ad3);}};
\ No newline at end of file
index 94c06c7..4272b8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92ef=['multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./smsQueue.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','getAgents','post','create','addTeams','/:id/users','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x92ef,0x1a4));var _0xf92e=function(_0x5b211e,_0xd7a8c7){_0x5b211e=_0x5b211e-0x0;var _0x221ce1=_0x92ef[_0x5b211e];return _0x221ce1;};'use strict';var multer=require(_0xf92e('0x0'));var util=require('util');var path=require(_0xf92e('0x1'));var timeout=require(_0xf92e('0x2'));var express=require(_0xf92e('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf92e('0x4'));var interaction=require(_0xf92e('0x5'));var config=require('../../config/environment');var controller=require(_0xf92e('0x6'));router[_0xf92e('0x7')]('/',auth[_0xf92e('0x8')](),controller['index']);router[_0xf92e('0x7')](_0xf92e('0x9'),auth[_0xf92e('0x8')](),controller[_0xf92e('0xa')]);router[_0xf92e('0x7')](_0xf92e('0xb'),auth[_0xf92e('0x8')](),controller[_0xf92e('0xc')]);router[_0xf92e('0x7')](_0xf92e('0xd'),auth[_0xf92e('0x8')](),controller[_0xf92e('0xe')]);router[_0xf92e('0x7')](_0xf92e('0xf'),auth['isAuthenticated'](),controller[_0xf92e('0x10')]);router[_0xf92e('0x7')]('/:id/users',auth[_0xf92e('0x8')](),controller[_0xf92e('0x11')]);router[_0xf92e('0x12')]('/',auth[_0xf92e('0x8')](),controller[_0xf92e('0x13')]);router[_0xf92e('0x12')](_0xf92e('0xf'),auth[_0xf92e('0x8')](),controller[_0xf92e('0x14')]);router['post'](_0xf92e('0x15'),auth[_0xf92e('0x8')](),controller[_0xf92e('0x16')]);router[_0xf92e('0x17')](_0xf92e('0xb'),auth[_0xf92e('0x8')](),controller[_0xf92e('0x18')]);router[_0xf92e('0x19')](_0xf92e('0xb'),auth[_0xf92e('0x8')](),controller[_0xf92e('0x1a')]);router[_0xf92e('0x19')]('/:id/teams',auth[_0xf92e('0x8')](),controller[_0xf92e('0x1b')]);router['delete'](_0xf92e('0x15'),auth[_0xf92e('0x8')](),controller[_0xf92e('0x1c')]);module[_0xf92e('0x1d')]=router;
\ No newline at end of file
+var _0x8ddc=['destroy','removeTeams','removeAgents','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','getAgents','post','addTeams','/:id/users','addAgents','put','update','delete'];(function(_0x17b77c,_0xe8898b){var _0x52b316=function(_0x278ee2){while(--_0x278ee2){_0x17b77c['push'](_0x17b77c['shift']());}};_0x52b316(++_0xe8898b);}(_0x8ddc,0x139));var _0xc8dd=function(_0x128bef,_0xc7a0af){_0x128bef=_0x128bef-0x0;var _0x1ba862=_0x8ddc[_0x128bef];return _0x1ba862;};'use strict';var multer=require(_0xc8dd('0x0'));var util=require(_0xc8dd('0x1'));var path=require(_0xc8dd('0x2'));var timeout=require('connect-timeout');var express=require(_0xc8dd('0x3'));var router=express[_0xc8dd('0x4')]();var fs_extra=require(_0xc8dd('0x5'));var auth=require(_0xc8dd('0x6'));var interaction=require(_0xc8dd('0x7'));var config=require(_0xc8dd('0x8'));var controller=require('./smsQueue.controller');router[_0xc8dd('0x9')]('/',auth['isAuthenticated'](),controller[_0xc8dd('0xa')]);router[_0xc8dd('0x9')](_0xc8dd('0xb'),auth[_0xc8dd('0xc')](),controller[_0xc8dd('0xd')]);router[_0xc8dd('0x9')](_0xc8dd('0xe'),auth[_0xc8dd('0xc')](),controller[_0xc8dd('0xf')]);router[_0xc8dd('0x9')](_0xc8dd('0x10'),auth['isAuthenticated'](),controller[_0xc8dd('0x11')]);router['get'](_0xc8dd('0x12'),auth[_0xc8dd('0xc')](),controller[_0xc8dd('0x13')]);router[_0xc8dd('0x9')]('/:id/users',auth[_0xc8dd('0xc')](),controller[_0xc8dd('0x14')]);router[_0xc8dd('0x15')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc8dd('0x15')](_0xc8dd('0x12'),auth[_0xc8dd('0xc')](),controller[_0xc8dd('0x16')]);router[_0xc8dd('0x15')](_0xc8dd('0x17'),auth['isAuthenticated'](),controller[_0xc8dd('0x18')]);router[_0xc8dd('0x19')](_0xc8dd('0xe'),auth[_0xc8dd('0xc')](),controller[_0xc8dd('0x1a')]);router[_0xc8dd('0x1b')]('/:id',auth[_0xc8dd('0xc')](),controller[_0xc8dd('0x1c')]);router['delete']('/:id/teams',auth[_0xc8dd('0xc')](),controller[_0xc8dd('0x1d')]);router[_0xc8dd('0x1b')]('/:id/users',auth[_0xc8dd('0xc')](),controller[_0xc8dd('0x1e')]);module['exports']=router;
\ No newline at end of file
index e1450af..b0ae3ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77ef=['name','ENUM','rrmemory','beepall','roundrobin','STRING'];(function(_0x550aa5,_0x58d76d){var _0x5984=function(_0x8f2b3b){while(--_0x8f2b3b){_0x550aa5['push'](_0x550aa5['shift']());}};_0x5984(++_0x58d76d);}(_0x77ef,0xfb));var _0xf77e=function(_0x524d90,_0x441c74){_0x524d90=_0x524d90-0x0;var _0x378ecb=_0x77ef[_0x524d90];return _0x378ecb;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xf77e('0x0')],'unique':_0xf77e('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xf77e('0x2')](_0xf77e('0x3'),_0xf77e('0x4'),_0xf77e('0x5'))}};
\ No newline at end of file
+var _0xbd37=['exports','STRING','ENUM','rrmemory','beepall','roundrobin'];(function(_0x223666,_0x273b68){var _0x1069d6=function(_0x4385a6){while(--_0x4385a6){_0x223666['push'](_0x223666['shift']());}};_0x1069d6(++_0x273b68);}(_0xbd37,0x114));var _0x7bd3=function(_0x5b9883,_0x130e65){_0x5b9883=_0x5b9883-0x0;var _0x22e623=_0xbd37[_0x5b9883];return _0x22e623;};'use strict';var Sequelize=require('sequelize');module[_0x7bd3('0x0')]={'name':{'type':Sequelize[_0x7bd3('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x7bd3('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x7bd3('0x2')](_0x7bd3('0x3'),_0x7bd3('0x4'),_0x7bd3('0x5'))}};
\ No newline at end of file
index e17a4b6..65da6d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3914=['length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','params','keys','rawAttributes','filters','include','find','create','body','user','role','SmsQueues','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','SmsQueueId','User','findAndCountAll','UserId','agent','smsPause','createdAt','%s/%s','SIP','updatedAt','getTeams','findOne','addTeams','Team','online','voicePause','interface','flatMap','Agents','sequelize','transaction','each','UserSmsQueue','findOrCreate','emit','userSmsQueue:save','removeTeams','ids','select','tq.TeamId','from','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','QueryTypes','every','TeamId','all','union','compact','value','isEmpty','removeAgents','forEach','userSmsQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','error','stack','name','send','index','SmsQueue','fieldName','type','key','model','map','query','intersection','attributes','fields'];(function(_0xab6a2b,_0x403a6b){var _0x33edba=function(_0x533c32){while(--_0x533c32){_0xab6a2b['push'](_0xab6a2b['shift']());}};_0x33edba(++_0x403a6b);}(_0x3914,0xeb));var _0x4391=function(_0x45161c,_0x5494fc){_0x45161c=_0x45161c-0x0;var _0x186581=_0x3914[_0x45161c];return _0x186581;};'use strict';var emlformat=require(_0x4391('0x0'));var rimraf=require(_0x4391('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4391('0x2'));var rp=require(_0x4391('0x3'));var moment=require('moment');var BPromise=require(_0x4391('0x4'));var Mustache=require(_0x4391('0x5'));var util=require(_0x4391('0x6'));var path=require('path');var sox=require(_0x4391('0x7'));var csv=require(_0x4391('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4391('0x9'));var _=require('lodash');var squel=require(_0x4391('0xa'));var crypto=require('crypto');var jsforce=require(_0x4391('0xb'));var deskjs=require(_0x4391('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4391('0xd'));var Redis=require(_0x4391('0xe'));var authService=require(_0x4391('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x4391('0x10'));var hardwareService=require(_0x4391('0x11'));var logger=require(_0x4391('0x12'))(_0x4391('0x13'));var utils=require('../../config/utils');var config=require(_0x4391('0x14'));var licenseUtil=require(_0x4391('0x15'));var db=require(_0x4391('0x16'))['db'];config[_0x4391('0x17')]=_[_0x4391('0x18')](config[_0x4391('0x17')],{'host':_0x4391('0x19'),'port':0x18eb});var socket=require(_0x4391('0x1a'))(new Redis(config['redis']));require(_0x4391('0x1b'))[_0x4391('0x1c')](socket);function respondWithStatusCode(_0x3f82fb,_0x2c0020){_0x2c0020=_0x2c0020||0xcc;return function(_0x536e5d){if(_0x536e5d){return _0x3f82fb[_0x4391('0x1d')](_0x2c0020);}return _0x3f82fb['status'](_0x2c0020)[_0x4391('0x1e')]();};}function respondWithResult(_0x3a1b80,_0x3e4585){_0x3e4585=_0x3e4585||0xc8;return function(_0x1c2038){if(_0x1c2038){return _0x3a1b80[_0x4391('0x1f')](_0x3e4585)[_0x4391('0x20')](_0x1c2038);}};}function respondWithFilteredResult(_0x2b5117,_0x19924d){return function(_0x58a311){if(_0x58a311){var _0x4cfa6b=typeof _0x19924d[_0x4391('0x21')]==='undefined'&&typeof _0x19924d[_0x4391('0x22')]===_0x4391('0x23');var _0xa9c97f=_0x58a311[_0x4391('0x24')];var _0x3b7709=_0x4cfa6b?0x0:_0x19924d['offset'];var _0x5f1337=_0x4cfa6b?_0x58a311[_0x4391('0x24')]:_0x19924d[_0x4391('0x21')]+_0x19924d[_0x4391('0x22')];var _0x5570a8;if(_0x5f1337>=_0xa9c97f){_0x5f1337=_0xa9c97f;_0x5570a8=0xc8;}else{_0x5570a8=0xce;}_0x2b5117[_0x4391('0x1f')](_0x5570a8);return _0x2b5117[_0x4391('0x25')](_0x4391('0x26'),_0x3b7709+'-'+_0x5f1337+'/'+_0xa9c97f)[_0x4391('0x20')](_0x58a311);}return null;};}function patchUpdates(_0x505d2c){return function(_0x105ef8){try{jsonpatch[_0x4391('0x27')](_0x105ef8,_0x505d2c,!![]);}catch(_0x3c4c9b){return BPromise[_0x4391('0x28')](_0x3c4c9b);}return _0x105ef8[_0x4391('0x29')]();};}function saveUpdates(_0x40ff34,_0x55759a){return function(_0x474666){if(_0x474666){return _0x474666[_0x4391('0x2a')](_0x40ff34)[_0x4391('0x2b')](function(_0x333ca6){return _0x333ca6;});}return null;};}function removeEntity(_0x540339,_0x4b0c28){return function(_0x11c859){if(_0x11c859){return _0x11c859[_0x4391('0x2c')]()[_0x4391('0x2b')](function(){var _0x197408=_0x11c859[_0x4391('0x2d')]({'plain':!![]});var _0x53363c='SmsQueues';return db['UserProfileResource']['destroy']({'where':{'type':_0x53363c,'resourceId':_0x197408['id']}})[_0x4391('0x2b')](function(){return _0x11c859;});})[_0x4391('0x2b')](function(){_0x540339[_0x4391('0x1f')](0xcc)[_0x4391('0x1e')]();});}};}function handleEntityNotFound(_0x49aa36,_0x34059f){return function(_0x32ed74){if(!_0x32ed74){_0x49aa36[_0x4391('0x1d')](0x194);}return _0x32ed74;};}function handleError(_0x1ac51d,_0x74036e){_0x74036e=_0x74036e||0x1f4;return function(_0x47b39a){logger[_0x4391('0x2e')](_0x47b39a[_0x4391('0x2f')]);if(_0x47b39a[_0x4391('0x30')]){delete _0x47b39a[_0x4391('0x30')];}_0x1ac51d[_0x4391('0x1f')](_0x74036e)[_0x4391('0x31')](_0x47b39a);};}exports[_0x4391('0x32')]=function(_0x1b4f0d,_0x1e3f42){var _0x8851cb={},_0x295d1b={},_0x4dad76={'count':0x0,'rows':[]};var _0x46db4c=_['map'](db[_0x4391('0x33')]['rawAttributes'],function(_0x49b0ce){return{'name':_0x49b0ce[_0x4391('0x34')],'type':_0x49b0ce[_0x4391('0x35')][_0x4391('0x36')]};});_0x295d1b[_0x4391('0x37')]=_[_0x4391('0x38')](_0x46db4c,_0x4391('0x30'));_0x295d1b[_0x4391('0x39')]=_['keys'](_0x1b4f0d[_0x4391('0x39')]);_0x295d1b['filters']=_[_0x4391('0x3a')](_0x295d1b['model'],_0x295d1b[_0x4391('0x39')]);_0x8851cb[_0x4391('0x3b')]=_[_0x4391('0x3a')](_0x295d1b[_0x4391('0x37')],qs[_0x4391('0x3c')](_0x1b4f0d[_0x4391('0x39')][_0x4391('0x3c')]));_0x8851cb[_0x4391('0x3b')]=_0x8851cb[_0x4391('0x3b')][_0x4391('0x3d')]?_0x8851cb[_0x4391('0x3b')]:_0x295d1b[_0x4391('0x37')];if(!_0x1b4f0d[_0x4391('0x39')][_0x4391('0x3e')](_0x4391('0x3f'))){_0x8851cb[_0x4391('0x22')]=qs[_0x4391('0x22')](_0x1b4f0d[_0x4391('0x39')]['limit']);_0x8851cb['offset']=qs[_0x4391('0x21')](_0x1b4f0d[_0x4391('0x39')][_0x4391('0x21')]);}_0x8851cb[_0x4391('0x40')]=qs[_0x4391('0x41')](_0x1b4f0d[_0x4391('0x39')][_0x4391('0x41')]);_0x8851cb[_0x4391('0x42')]=qs['filters'](_[_0x4391('0x43')](_0x1b4f0d['query'],_0x295d1b['filters']),_0x46db4c);if(_0x1b4f0d['query']['filter']){_0x8851cb[_0x4391('0x42')]=_[_0x4391('0x44')](_0x8851cb[_0x4391('0x42')],{'$or':_[_0x4391('0x38')](_0x46db4c,function(_0x5edfbd){if(_0x5edfbd['type']!==_0x4391('0x45')){var _0x57feea={};_0x57feea[_0x5edfbd[_0x4391('0x30')]]={'$like':'%'+_0x1b4f0d[_0x4391('0x39')][_0x4391('0x46')]+'%'};return _0x57feea;}})});}_0x8851cb=_[_0x4391('0x44')]({},_0x8851cb,_0x1b4f0d[_0x4391('0x47')]);var _0x25ad60={'where':_0x8851cb['where']};return db[_0x4391('0x33')][_0x4391('0x24')](_0x25ad60)[_0x4391('0x2b')](function(_0x13f5f4){_0x4dad76[_0x4391('0x24')]=_0x13f5f4;if(_0x1b4f0d[_0x4391('0x39')][_0x4391('0x48')]){_0x8851cb['include']=[{'all':!![]}];}return db[_0x4391('0x33')][_0x4391('0x49')](_0x8851cb);})[_0x4391('0x2b')](function(_0x254593){_0x4dad76[_0x4391('0x4a')]=_0x254593;return _0x4dad76;})[_0x4391('0x2b')](respondWithFilteredResult(_0x1e3f42,_0x8851cb))[_0x4391('0x4b')](handleError(_0x1e3f42,null));};exports['show']=function(_0x316c1b,_0x56c07e){var _0x308a49={'raw':!![],'where':{'id':_0x316c1b[_0x4391('0x4c')]['id']}},_0x46a3c4={};_0x46a3c4[_0x4391('0x37')]=_[_0x4391('0x4d')](db[_0x4391('0x33')][_0x4391('0x4e')]);_0x46a3c4[_0x4391('0x39')]=_[_0x4391('0x4d')](_0x316c1b[_0x4391('0x39')]);_0x46a3c4[_0x4391('0x4f')]=_[_0x4391('0x3a')](_0x46a3c4[_0x4391('0x37')],_0x46a3c4['query']);_0x308a49['attributes']=_[_0x4391('0x3a')](_0x46a3c4[_0x4391('0x37')],qs[_0x4391('0x3c')](_0x316c1b[_0x4391('0x39')][_0x4391('0x3c')]));_0x308a49[_0x4391('0x3b')]=_0x308a49['attributes'][_0x4391('0x3d')]?_0x308a49['attributes']:_0x46a3c4[_0x4391('0x37')];if(_0x316c1b['query'][_0x4391('0x48')]){_0x308a49[_0x4391('0x50')]=[{'all':!![]}];}_0x308a49=_[_0x4391('0x44')]({},_0x308a49,_0x316c1b[_0x4391('0x47')]);return db[_0x4391('0x33')][_0x4391('0x51')](_0x308a49)['then'](handleEntityNotFound(_0x56c07e,null))[_0x4391('0x2b')](respondWithResult(_0x56c07e,null))[_0x4391('0x4b')](handleError(_0x56c07e,null));};exports[_0x4391('0x52')]=function(_0xf2c6e0,_0x29470e){return db[_0x4391('0x33')][_0x4391('0x52')](_0xf2c6e0[_0x4391('0x53')],{})[_0x4391('0x2b')](function(_0x294498){var _0x38872d=_0xf2c6e0[_0x4391('0x54')][_0x4391('0x2d')]({'plain':!![]});if(!_0x38872d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x38872d[_0x4391('0x55')]===_0x4391('0x54')){var _0x29fe68=_0x294498['get']({'plain':!![]});var _0x156614=_0x4391('0x56');return db[_0x4391('0x57')]['find']({'where':{'name':_0x156614,'userProfileId':_0x38872d[_0x4391('0x58')]},'raw':!![]})[_0x4391('0x2b')](function(_0x59b3f1){if(_0x59b3f1&&_0x59b3f1[_0x4391('0x59')]===0x0){return db[_0x4391('0x5a')][_0x4391('0x52')]({'name':_0x29fe68[_0x4391('0x30')],'resourceId':_0x29fe68['id'],'type':_0x59b3f1[_0x4391('0x30')],'sectionId':_0x59b3f1['id']},{})[_0x4391('0x2b')](function(){return _0x294498;});}else{return _0x294498;}})[_0x4391('0x4b')](function(_0x56caa3){logger[_0x4391('0x2e')](_0x4391('0x5b'),_0x56caa3);throw _0x56caa3;});}return _0x294498;})[_0x4391('0x2b')](respondWithResult(_0x29470e,0xc9))[_0x4391('0x4b')](handleError(_0x29470e,null));};exports[_0x4391('0x2a')]=function(_0x49e48d,_0x4658b0){if(_0x49e48d[_0x4391('0x53')]['id']){delete _0x49e48d[_0x4391('0x53')]['id'];}return db[_0x4391('0x33')][_0x4391('0x51')]({'where':{'id':_0x49e48d[_0x4391('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4658b0,null))[_0x4391('0x2b')](saveUpdates(_0x49e48d['body'],null))[_0x4391('0x2b')](respondWithResult(_0x4658b0,null))[_0x4391('0x4b')](handleError(_0x4658b0,null));};exports['destroy']=function(_0xc0676d,_0x2c0432){return db[_0x4391('0x33')][_0x4391('0x51')]({'where':{'id':_0xc0676d[_0x4391('0x4c')]['id']}})[_0x4391('0x2b')](handleEntityNotFound(_0x2c0432,null))[_0x4391('0x2b')](removeEntity(_0x2c0432,null))[_0x4391('0x4b')](handleError(_0x2c0432,null));};exports['describe']=function(_0x35b91f,_0x4439fa){return db[_0x4391('0x33')][_0x4391('0x5c')]()[_0x4391('0x2b')](respondWithResult(_0x4439fa,null))[_0x4391('0x4b')](handleError(_0x4439fa,null));};exports[_0x4391('0x5d')]=function(_0x4f49e8,_0x39f1ba,_0x3a1586){var _0x2c13dd={'raw':!![],'where':{}},_0x2df7bf={},_0x349125;return db[_0x4391('0x33')]['findOne']({'where':{'id':_0x4f49e8[_0x4391('0x4c')]['id']}})[_0x4391('0x2b')](handleEntityNotFound(_0x39f1ba,null))[_0x4391('0x2b')](function(_0x3fc690){if(_0x3fc690){_0x349125=_0x3fc690[_0x4391('0x2d')]({'plain':!![]});_0x2df7bf[_0x4391('0x37')]=_[_0x4391('0x4d')](db['UserSmsQueue'][_0x4391('0x4e')]);_0x2df7bf[_0x4391('0x39')]=_[_0x4391('0x4d')](_0x4f49e8[_0x4391('0x39')]);_0x2df7bf[_0x4391('0x4f')]=_[_0x4391('0x3a')](_0x2df7bf[_0x4391('0x37')],_0x2df7bf[_0x4391('0x39')]);_0x2c13dd[_0x4391('0x3b')]=_[_0x4391('0x3a')](_0x2df7bf[_0x4391('0x37')],qs[_0x4391('0x3c')](_0x4f49e8[_0x4391('0x39')][_0x4391('0x3c')]));_0x2c13dd[_0x4391('0x3b')]=_0x2c13dd['attributes'][_0x4391('0x3d')]?_0x2c13dd[_0x4391('0x3b')]:_0x2df7bf[_0x4391('0x37')];if(!_0x4f49e8[_0x4391('0x39')]['hasOwnProperty']('nolimit')){_0x2c13dd[_0x4391('0x22')]=qs[_0x4391('0x22')](_0x4f49e8[_0x4391('0x39')][_0x4391('0x22')]);_0x2c13dd['offset']=qs[_0x4391('0x21')](_0x4f49e8[_0x4391('0x39')][_0x4391('0x21')]);}_0x2c13dd['order']=qs[_0x4391('0x41')](_0x4f49e8[_0x4391('0x39')][_0x4391('0x41')]);_0x2c13dd[_0x4391('0x42')]=qs['filters'](_[_0x4391('0x43')](_0x4f49e8[_0x4391('0x39')],_0x2df7bf[_0x4391('0x4f')]));_0x2c13dd[_0x4391('0x42')][_0x4391('0x5e')]=_0x3fc690['id'];if(_0x4f49e8[_0x4391('0x39')]['filter']){_0x2c13dd[_0x4391('0x42')]=_[_0x4391('0x44')](_0x2c13dd['where'],{'$or':_['map'](_0x2c13dd['attributes'],function(_0x2b317f){var _0x90686b={};_0x90686b[_0x2b317f]={'$like':'%'+_0x4f49e8[_0x4391('0x39')][_0x4391('0x46')]+'%'};return _0x90686b;})});}_0x2c13dd=_['merge']({},_0x2c13dd,_0x4f49e8[_0x4391('0x47')]);return db['UserSmsQueue'][_0x4391('0x49')](_0x2c13dd);}})['then'](function(_0x6155c){if(_0x6155c){return db[_0x4391('0x5f')][_0x4391('0x60')]({'where':{'id':_[_0x4391('0x38')](_0x6155c,_0x4391('0x61')),'role':_0x4391('0x62')},'attributes':['id',_0x4391('0x30'),_0x4391('0x63'),'updatedAt',_0x4391('0x64')]});}})[_0x4391('0x2b')](function(_0xebf2a4){if(_0xebf2a4){return{'count':_0xebf2a4[_0x4391('0x24')],'rows':_['map'](_0xebf2a4['rows'],function(_0x30dda6){return{'membername':_0x30dda6[_0x4391('0x30')],'UserId':_0x30dda6['id'],'queue_name':_0x349125[_0x4391('0x30')],'SmsQueueId':_0x349125['id'],'interface':util['format'](_0x4391('0x65'),_0x4391('0x66'),_0x30dda6[_0x4391('0x30')]),'penalty':0x0,'paused':_0x30dda6[_0x4391('0x63')],'createdAt':_0x30dda6[_0x4391('0x64')],'updatedAt':_0x30dda6[_0x4391('0x67')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x4391('0x2b')](respondWithFilteredResult(_0x39f1ba,_0x2c13dd))[_0x4391('0x4b')](handleError(_0x39f1ba,null));};exports[_0x4391('0x68')]=function(_0xb99aa8,_0x121bcf,_0x53080c){var _0x662359={};var _0x39be42={};var _0x207851;var _0x27b1c6;return db[_0x4391('0x33')][_0x4391('0x69')]({'where':{'id':_0xb99aa8[_0x4391('0x4c')]['id']}})[_0x4391('0x2b')](handleEntityNotFound(_0x121bcf,null))[_0x4391('0x2b')](function(_0x1b64a8){if(_0x1b64a8){_0x207851=_0x1b64a8;_0x39be42[_0x4391('0x37')]=_['keys'](db['Team'][_0x4391('0x4e')]);_0x39be42[_0x4391('0x39')]=_[_0x4391('0x4d')](_0xb99aa8[_0x4391('0x39')]);_0x39be42['filters']=_[_0x4391('0x3a')](_0x39be42[_0x4391('0x37')],_0x39be42['query']);_0x662359[_0x4391('0x3b')]=_['intersection'](_0x39be42['model'],qs[_0x4391('0x3c')](_0xb99aa8[_0x4391('0x39')][_0x4391('0x3c')]));_0x662359[_0x4391('0x3b')]=_0x662359[_0x4391('0x3b')][_0x4391('0x3d')]?_0x662359['attributes']:_0x39be42[_0x4391('0x37')];_0x662359[_0x4391('0x40')]=qs[_0x4391('0x41')](_0xb99aa8[_0x4391('0x39')][_0x4391('0x41')]);_0x662359[_0x4391('0x42')]=qs[_0x4391('0x4f')](_[_0x4391('0x43')](_0xb99aa8[_0x4391('0x39')],_0x39be42[_0x4391('0x4f')]));if(_0xb99aa8[_0x4391('0x39')][_0x4391('0x46')]){_0x662359[_0x4391('0x42')]=_[_0x4391('0x44')](_0x662359[_0x4391('0x42')],{'$or':_[_0x4391('0x38')](_0x662359[_0x4391('0x3b')],function(_0xd29b3d){var _0xfcfdd9={};_0xfcfdd9[_0xd29b3d]={'$like':'%'+_0xb99aa8[_0x4391('0x39')]['filter']+'%'};return _0xfcfdd9;})});}_0x662359=_[_0x4391('0x44')]({},_0x662359,_0xb99aa8['options']);return _0x207851[_0x4391('0x68')](_0x662359);}})[_0x4391('0x2b')](function(_0x2bbf13){if(_0x2bbf13){_0x27b1c6=_0x2bbf13[_0x4391('0x3d')];if(!_0xb99aa8[_0x4391('0x39')][_0x4391('0x3e')]('nolimit')){_0x662359[_0x4391('0x22')]=qs[_0x4391('0x22')](_0xb99aa8[_0x4391('0x39')][_0x4391('0x22')]);_0x662359['offset']=qs[_0x4391('0x21')](_0xb99aa8[_0x4391('0x39')][_0x4391('0x21')]);}return _0x207851[_0x4391('0x68')](_0x662359);}})[_0x4391('0x2b')](function(_0x248c12){if(_0x248c12){return _0x248c12?{'count':_0x27b1c6,'rows':_0x248c12}:null;}})[_0x4391('0x2b')](respondWithResult(_0x121bcf,null))[_0x4391('0x4b')](handleError(_0x121bcf,null));};exports[_0x4391('0x6a')]=function(_0x8e6aa3,_0x44d313,_0x5596de){var _0x5a0f79=_0x8e6aa3[_0x4391('0x53')]['ids'];return db[_0x4391('0x6b')][_0x4391('0x49')]({'where':{'id':_0x5a0f79},'attributes':['id'],'include':[{'model':db[_0x4391('0x5f')],'as':'Agents','attributes':['id',_0x4391('0x30'),_0x4391('0x6c'),_0x4391('0x6d'),_0x4391('0x6e')],'raw':!![]}]})[_0x4391('0x2b')](function(_0x3fcf06){if(_0x3fcf06){var _0x563d9d=_[_0x4391('0x6f')](_0x3fcf06,function(_0x14de0e){var _0x20f334=_0x14de0e[_0x4391('0x2d')]({'plain':!![]});return _0x20f334[_0x4391('0x70')];});return db['SmsQueue'][_0x4391('0x51')]({'where':{'id':_0x8e6aa3['params']['id']}})['then'](function(_0x50bca9){return db[_0x4391('0x71')][_0x4391('0x72')](function(_0x4a6c22){return _0x50bca9['addTeams'](_0x5a0f79,{'transaction':_0x4a6c22})[_0x4391('0x2b')](function(){return BPromise[_0x4391('0x73')](_0x563d9d,function(_0x1326e1){return db[_0x4391('0x74')][_0x4391('0x75')]({'where':{'UserId':_0x1326e1['id'],'SmsQueueId':_0x8e6aa3[_0x4391('0x4c')]['id']},'transaction':_0x4a6c22});});})['then'](function(){_0x563d9d['forEach'](function(_0x2b758a){socket[_0x4391('0x76')](_0x4391('0x77'),{'UserId':_0x2b758a['id'],'SmsQueueId':_0x50bca9['id']});});});});});}})[_0x4391('0x2b')](respondWithStatusCode(_0x44d313,null))[_0x4391('0x4b')](handleError(_0x44d313,null));};exports[_0x4391('0x78')]=function(_0x3cf8e1,_0x3f11ac,_0x54d5b1){return db[_0x4391('0x6b')][_0x4391('0x49')]({'where':{'id':_0x3cf8e1[_0x4391('0x39')][_0x4391('0x79')]},'attributes':['id'],'include':[{'model':db[_0x4391('0x5f')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x3f11ac,null))[_0x4391('0x2b')](function(_0x329949){var _0x4f6a96=_[_0x4391('0x38')](_0x329949,'id');var _0x486dd2=[];var _0x41d7a0=[];var _0x1ecb18=squel[_0x4391('0x7a')]();_0x1ecb18['field'](_0x4391('0x7b'))[_0x4391('0x7c')](_0x4391('0x7d'),'tq')[_0x4391('0x7e')](_0x4391('0x7f'),'ut',_0x4391('0x80'))[_0x4391('0x42')](_0x4391('0x81'),_0x3cf8e1[_0x4391('0x4c')]['id']);for(var _0x79c3ce=0x0;_0x79c3ce<_0x329949[_0x4391('0x3d')];_0x79c3ce+=0x1){let _0x5aa2bb=_0x329949[_0x79c3ce];for(var _0xdc285c=0x0;_0xdc285c<_0x5aa2bb[_0x4391('0x70')][_0x4391('0x3d')];_0xdc285c+=0x1){let _0x5bfcb5=_0x5aa2bb[_0x4391('0x70')][_0xdc285c];var _0x5561d2=_0x1ecb18[_0x4391('0x82')]();_0x5561d2['where'](_0x4391('0x83'),_0x5bfcb5['id']);_0x41d7a0['push'](db[_0x4391('0x71')][_0x4391('0x39')](_0x5561d2['toString'](),{'type':db[_0x4391('0x71')][_0x4391('0x84')]['SELECT']})['then'](function(_0x1273b8){if(_0x1273b8[_0x4391('0x3d')]===0x1){return _0x5bfcb5['id'];}else{var _0xf4d70e=_[_0x4391('0x85')](_[_0x4391('0x38')](_0x1273b8,_0x4391('0x86')),function(_0x445dc0){return _['includes'](_0x4f6a96,_0x445dc0);});if(_0xf4d70e){return _0x5bfcb5['id'];}}}));}}return BPromise[_0x4391('0x87')](_0x41d7a0)[_0x4391('0x2b')](function(_0x378260){_0x486dd2=_(_0x486dd2)[_0x4391('0x88')](_0x378260)[_0x4391('0x89')]()[_0x4391('0x8a')]();return db[_0x4391('0x33')][_0x4391('0x51')]({'where':{'id':_0x3cf8e1[_0x4391('0x4c')]['id']}})[_0x4391('0x2b')](function(_0x1e91e7){return db[_0x4391('0x71')]['transaction'](function(_0x49074a){return _0x1e91e7['removeTeams'](_0x3cf8e1['query'][_0x4391('0x79')],{'transaction':_0x49074a})[_0x4391('0x2b')](function(){if(!_[_0x4391('0x8b')](_0x486dd2)){return _0x1e91e7[_0x4391('0x8c')](_0x486dd2,{'transaction':_0x49074a});}})['then'](function(){_0x486dd2[_0x4391('0x8d')](function(_0x17568e){socket[_0x4391('0x76')](_0x4391('0x8e'),{'UserId':_0x17568e,'SmsQueueId':_0x1e91e7['id']});});});});});});})[_0x4391('0x2b')](respondWithStatusCode(_0x3f11ac,null))[_0x4391('0x4b')](handleError(_0x3f11ac,null));};exports[_0x4391('0x8f')]=function(_0x57ac44,_0x22ebc1,_0x3c4a18){return db[_0x4391('0x33')][_0x4391('0x51')]({'where':{'id':_0x57ac44[_0x4391('0x4c')]['id']}})['then'](handleEntityNotFound(_0x22ebc1,null))[_0x4391('0x2b')](function(_0x1674bf){if(_0x1674bf){return _0x1674bf[_0x4391('0x8f')](_0x57ac44[_0x4391('0x53')]['ids'],_[_0x4391('0x90')](_0x57ac44[_0x4391('0x53')],[_0x4391('0x79'),'id'])||{})[_0x4391('0x91')](function(_0x7c5599){for(var _0x228de4=0x0;_0x228de4<_0x57ac44[_0x4391('0x53')][_0x4391('0x79')]['length'];_0x228de4+=0x1){socket[_0x4391('0x76')](_0x4391('0x77'),{'UserId':Number(_0x57ac44[_0x4391('0x53')][_0x4391('0x79')][_0x228de4]),'SmsQueueId':Number(_0x57ac44[_0x4391('0x4c')]['id'])});}return _0x7c5599;});}})['then'](respondWithResult(_0x22ebc1,null))[_0x4391('0x4b')](handleError(_0x22ebc1,null));};exports[_0x4391('0x8c')]=function(_0x2507b1,_0xa8f389,_0x2d5910){return db[_0x4391('0x33')][_0x4391('0x51')]({'where':{'id':_0x2507b1['params']['id']}})['then'](handleEntityNotFound(_0xa8f389,null))[_0x4391('0x2b')](function(_0x3eb223){if(_0x3eb223){return _0x3eb223[_0x4391('0x8c')](_0x2507b1[_0x4391('0x39')][_0x4391('0x79')])[_0x4391('0x2b')](function(){if(_[_0x4391('0x92')](_0x2507b1[_0x4391('0x39')][_0x4391('0x79')])){for(var _0x51e6a5=0x0;_0x51e6a5<_0x2507b1[_0x4391('0x39')]['ids']['length'];_0x51e6a5+=0x1){socket[_0x4391('0x76')]('userSmsQueue:remove',{'UserId':Number(_0x2507b1[_0x4391('0x39')][_0x4391('0x79')][_0x51e6a5]),'SmsQueueId':Number(_0x2507b1[_0x4391('0x4c')]['id'])});}}else{socket[_0x4391('0x76')](_0x4391('0x8e'),{'UserId':Number(_0x2507b1[_0x4391('0x39')][_0x4391('0x79')]),'SmsQueueId':Number(_0x2507b1[_0x4391('0x4c')]['id'])});}});}})[_0x4391('0x2b')](respondWithStatusCode(_0xa8f389,null))[_0x4391('0x4b')](handleError(_0xa8f389,null));};exports[_0x4391('0x93')]=function(_0x125a0f,_0x481310,_0x2bb9fb){var _0x5a1be6={};var _0x4da6a3={};var _0xbf80cf;var _0x1a010e;return db[_0x4391('0x33')]['findOne']({'where':{'id':_0x125a0f[_0x4391('0x4c')]['id']}})['then'](handleEntityNotFound(_0x481310,null))[_0x4391('0x2b')](function(_0x5804ec){if(_0x5804ec){_0xbf80cf=_0x5804ec;_0x4da6a3['model']=_[_0x4391('0x4d')](db[_0x4391('0x5f')][_0x4391('0x4e')]);_0x4da6a3[_0x4391('0x39')]=_[_0x4391('0x4d')](_0x125a0f[_0x4391('0x39')]);_0x4da6a3[_0x4391('0x4f')]=_[_0x4391('0x3a')](_0x4da6a3[_0x4391('0x37')],_0x4da6a3[_0x4391('0x39')]);_0x5a1be6[_0x4391('0x3b')]=_['intersection'](_0x4da6a3[_0x4391('0x37')],qs[_0x4391('0x3c')](_0x125a0f[_0x4391('0x39')]['fields']));_0x5a1be6[_0x4391('0x3b')]=_0x5a1be6['attributes'][_0x4391('0x3d')]?_0x5a1be6['attributes']:_0x4da6a3[_0x4391('0x37')];_0x5a1be6[_0x4391('0x40')]=qs[_0x4391('0x41')](_0x125a0f[_0x4391('0x39')][_0x4391('0x41')]);_0x5a1be6['where']=qs[_0x4391('0x4f')](_[_0x4391('0x43')](_0x125a0f[_0x4391('0x39')],_0x4da6a3[_0x4391('0x4f')]));if(_0x125a0f[_0x4391('0x39')][_0x4391('0x46')]){_0x5a1be6['where']=_[_0x4391('0x44')](_0x5a1be6[_0x4391('0x42')],{'$or':_[_0x4391('0x38')](_0x5a1be6[_0x4391('0x3b')],function(_0x168355){var _0x225a2b={};_0x225a2b[_0x168355]={'$like':'%'+_0x125a0f['query'][_0x4391('0x46')]+'%'};return _0x225a2b;})});}_0x5a1be6=_[_0x4391('0x44')]({},_0x5a1be6,_0x125a0f['options']);return _0xbf80cf[_0x4391('0x93')](_0x5a1be6);}})['then'](function(_0x36d008){if(_0x36d008){_0x1a010e=_0x36d008[_0x4391('0x3d')];if(!_0x125a0f[_0x4391('0x39')][_0x4391('0x3e')]('nolimit')){_0x5a1be6['limit']=qs[_0x4391('0x22')](_0x125a0f[_0x4391('0x39')]['limit']);_0x5a1be6['offset']=qs[_0x4391('0x21')](_0x125a0f['query'][_0x4391('0x21')]);}return _0xbf80cf[_0x4391('0x93')](_0x5a1be6);}})['then'](function(_0x126ebd){if(_0x126ebd){return _0x126ebd?{'count':_0x1a010e,'rows':_0x126ebd}:null;}})[_0x4391('0x2b')](respondWithResult(_0x481310,null))[_0x4391('0x4b')](handleError(_0x481310,null));};
\ No newline at end of file
+var _0xeb85=['where','pick','filter','merge','includeAll','include','findAll','catch','show','params','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','UserSmsQueue','findAndCountAll','UserId','agent','smsPause','updatedAt','rows','SIP','findOne','getTeams','addTeams','ids','Agents','online','voicePause','interface','sequelize','each','findOrCreate','forEach','emit','userSmsQueue:save','removeTeams','Team','User','select','field','tq.TeamId','from','team_has_sms_queues','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','transaction','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','spread','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./smsQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','get','SmsQueues','destroy','error','stack','name','send','index','map','SmsQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x13fdef,_0x4028bc){var _0x7a7625=function(_0x1f5e8d){while(--_0x1f5e8d){_0x13fdef['push'](_0x13fdef['shift']());}};_0x7a7625(++_0x4028bc);}(_0xeb85,0x167));var _0x5eb8=function(_0x23233c,_0x18e579){_0x23233c=_0x23233c-0x0;var _0x4377ea=_0xeb85[_0x23233c];return _0x4377ea;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5eb8('0x0'));var zipdir=require(_0x5eb8('0x1'));var jsonpatch=require(_0x5eb8('0x2'));var rp=require(_0x5eb8('0x3'));var moment=require(_0x5eb8('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5eb8('0x5'));var util=require(_0x5eb8('0x6'));var path=require('path');var sox=require(_0x5eb8('0x7'));var csv=require(_0x5eb8('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5eb8('0x9'));var _=require(_0x5eb8('0xa'));var squel=require(_0x5eb8('0xb'));var crypto=require('crypto');var jsforce=require(_0x5eb8('0xc'));var deskjs=require(_0x5eb8('0xd'));var toCsv=require(_0x5eb8('0x8'));var querystring=require(_0x5eb8('0xe'));var Papa=require(_0x5eb8('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5eb8('0x10'));var logger=require(_0x5eb8('0x11'))(_0x5eb8('0x12'));var utils=require(_0x5eb8('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x5eb8('0x14'));var db=require(_0x5eb8('0x15'))['db'];config[_0x5eb8('0x16')]=_[_0x5eb8('0x17')](config['redis'],{'host':_0x5eb8('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5eb8('0x16')]));require(_0x5eb8('0x19'))[_0x5eb8('0x1a')](socket);function respondWithStatusCode(_0x539e36,_0x58ebdc){_0x58ebdc=_0x58ebdc||0xcc;return function(_0x52a86e){if(_0x52a86e){return _0x539e36[_0x5eb8('0x1b')](_0x58ebdc);}return _0x539e36[_0x5eb8('0x1c')](_0x58ebdc)[_0x5eb8('0x1d')]();};}function respondWithResult(_0x4a6556,_0xf8ee94){_0xf8ee94=_0xf8ee94||0xc8;return function(_0x164432){if(_0x164432){return _0x4a6556[_0x5eb8('0x1c')](_0xf8ee94)[_0x5eb8('0x1e')](_0x164432);}};}function respondWithFilteredResult(_0x4ce450,_0x5045cf){return function(_0x405c7c){if(_0x405c7c){var _0x3e9395=typeof _0x5045cf[_0x5eb8('0x1f')]===_0x5eb8('0x20')&&typeof _0x5045cf[_0x5eb8('0x21')]==='undefined';var _0x249623=_0x405c7c[_0x5eb8('0x22')];var _0x303ed5=_0x3e9395?0x0:_0x5045cf[_0x5eb8('0x1f')];var _0x1aefec=_0x3e9395?_0x405c7c[_0x5eb8('0x22')]:_0x5045cf['offset']+_0x5045cf[_0x5eb8('0x21')];var _0x2c99cd;if(_0x1aefec>=_0x249623){_0x1aefec=_0x249623;_0x2c99cd=0xc8;}else{_0x2c99cd=0xce;}_0x4ce450[_0x5eb8('0x1c')](_0x2c99cd);return _0x4ce450[_0x5eb8('0x23')](_0x5eb8('0x24'),_0x303ed5+'-'+_0x1aefec+'/'+_0x249623)[_0x5eb8('0x1e')](_0x405c7c);}return null;};}function patchUpdates(_0x18c9d7){return function(_0x84cb94){try{jsonpatch[_0x5eb8('0x25')](_0x84cb94,_0x18c9d7,!![]);}catch(_0x5b32d6){return BPromise['reject'](_0x5b32d6);}return _0x84cb94[_0x5eb8('0x26')]();};}function saveUpdates(_0x2bf908,_0x2b0904){return function(_0x74350f){if(_0x74350f){return _0x74350f[_0x5eb8('0x27')](_0x2bf908)[_0x5eb8('0x28')](function(_0x32b9e6){return _0x32b9e6;});}return null;};}function removeEntity(_0x3835ee,_0x39875a){return function(_0x340023){if(_0x340023){return _0x340023['destroy']()[_0x5eb8('0x28')](function(){var _0x58b5a8=_0x340023[_0x5eb8('0x29')]({'plain':!![]});var _0x1a1af4=_0x5eb8('0x2a');return db['UserProfileResource'][_0x5eb8('0x2b')]({'where':{'type':_0x1a1af4,'resourceId':_0x58b5a8['id']}})[_0x5eb8('0x28')](function(){return _0x340023;});})[_0x5eb8('0x28')](function(){_0x3835ee[_0x5eb8('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x28da76,_0x15cc50){return function(_0x1e2239){if(!_0x1e2239){_0x28da76['sendStatus'](0x194);}return _0x1e2239;};}function handleError(_0x55a6bb,_0x1eb013){_0x1eb013=_0x1eb013||0x1f4;return function(_0x1ebd5a){logger[_0x5eb8('0x2c')](_0x1ebd5a[_0x5eb8('0x2d')]);if(_0x1ebd5a[_0x5eb8('0x2e')]){delete _0x1ebd5a[_0x5eb8('0x2e')];}_0x55a6bb[_0x5eb8('0x1c')](_0x1eb013)[_0x5eb8('0x2f')](_0x1ebd5a);};}exports[_0x5eb8('0x30')]=function(_0x579b06,_0x42c7d8){var _0x4bac59={},_0x5e8d70={},_0x43bcfa={'count':0x0,'rows':[]};var _0xf30449=_[_0x5eb8('0x31')](db[_0x5eb8('0x32')][_0x5eb8('0x33')],function(_0x2d4278){return{'name':_0x2d4278[_0x5eb8('0x34')],'type':_0x2d4278[_0x5eb8('0x35')][_0x5eb8('0x36')]};});_0x5e8d70[_0x5eb8('0x37')]=_[_0x5eb8('0x31')](_0xf30449,_0x5eb8('0x2e'));_0x5e8d70[_0x5eb8('0x38')]=_[_0x5eb8('0x39')](_0x579b06[_0x5eb8('0x38')]);_0x5e8d70[_0x5eb8('0x3a')]=_[_0x5eb8('0x3b')](_0x5e8d70['model'],_0x5e8d70[_0x5eb8('0x38')]);_0x4bac59[_0x5eb8('0x3c')]=_['intersection'](_0x5e8d70[_0x5eb8('0x37')],qs[_0x5eb8('0x3d')](_0x579b06[_0x5eb8('0x38')][_0x5eb8('0x3d')]));_0x4bac59['attributes']=_0x4bac59[_0x5eb8('0x3c')][_0x5eb8('0x3e')]?_0x4bac59[_0x5eb8('0x3c')]:_0x5e8d70[_0x5eb8('0x37')];if(!_0x579b06['query'][_0x5eb8('0x3f')](_0x5eb8('0x40'))){_0x4bac59[_0x5eb8('0x21')]=qs[_0x5eb8('0x21')](_0x579b06[_0x5eb8('0x38')][_0x5eb8('0x21')]);_0x4bac59['offset']=qs[_0x5eb8('0x1f')](_0x579b06[_0x5eb8('0x38')][_0x5eb8('0x1f')]);}_0x4bac59[_0x5eb8('0x41')]=qs[_0x5eb8('0x42')](_0x579b06[_0x5eb8('0x38')]['sort']);_0x4bac59[_0x5eb8('0x43')]=qs['filters'](_[_0x5eb8('0x44')](_0x579b06[_0x5eb8('0x38')],_0x5e8d70[_0x5eb8('0x3a')]),_0xf30449);if(_0x579b06[_0x5eb8('0x38')][_0x5eb8('0x45')]){_0x4bac59[_0x5eb8('0x43')]=_[_0x5eb8('0x46')](_0x4bac59[_0x5eb8('0x43')],{'$or':_[_0x5eb8('0x31')](_0xf30449,function(_0x521688){if(_0x521688[_0x5eb8('0x35')]!=='VIRTUAL'){var _0x5228f4={};_0x5228f4[_0x521688['name']]={'$like':'%'+_0x579b06[_0x5eb8('0x38')][_0x5eb8('0x45')]+'%'};return _0x5228f4;}})});}_0x4bac59=_[_0x5eb8('0x46')]({},_0x4bac59,_0x579b06['options']);var _0x2ee898={'where':_0x4bac59[_0x5eb8('0x43')]};return db[_0x5eb8('0x32')]['count'](_0x2ee898)[_0x5eb8('0x28')](function(_0x36575d){_0x43bcfa['count']=_0x36575d;if(_0x579b06[_0x5eb8('0x38')][_0x5eb8('0x47')]){_0x4bac59[_0x5eb8('0x48')]=[{'all':!![]}];}return db[_0x5eb8('0x32')][_0x5eb8('0x49')](_0x4bac59);})[_0x5eb8('0x28')](function(_0x1c821a){_0x43bcfa['rows']=_0x1c821a;return _0x43bcfa;})['then'](respondWithFilteredResult(_0x42c7d8,_0x4bac59))[_0x5eb8('0x4a')](handleError(_0x42c7d8,null));};exports[_0x5eb8('0x4b')]=function(_0x3505d2,_0x562778){var _0x33b92a={'raw':!![],'where':{'id':_0x3505d2[_0x5eb8('0x4c')]['id']}},_0x3d5a9c={};_0x3d5a9c[_0x5eb8('0x37')]=_['keys'](db[_0x5eb8('0x32')][_0x5eb8('0x33')]);_0x3d5a9c[_0x5eb8('0x38')]=_['keys'](_0x3505d2['query']);_0x3d5a9c[_0x5eb8('0x3a')]=_[_0x5eb8('0x3b')](_0x3d5a9c['model'],_0x3d5a9c[_0x5eb8('0x38')]);_0x33b92a[_0x5eb8('0x3c')]=_[_0x5eb8('0x3b')](_0x3d5a9c['model'],qs[_0x5eb8('0x3d')](_0x3505d2[_0x5eb8('0x38')][_0x5eb8('0x3d')]));_0x33b92a[_0x5eb8('0x3c')]=_0x33b92a[_0x5eb8('0x3c')][_0x5eb8('0x3e')]?_0x33b92a[_0x5eb8('0x3c')]:_0x3d5a9c[_0x5eb8('0x37')];if(_0x3505d2['query'][_0x5eb8('0x47')]){_0x33b92a[_0x5eb8('0x48')]=[{'all':!![]}];}_0x33b92a=_[_0x5eb8('0x46')]({},_0x33b92a,_0x3505d2[_0x5eb8('0x4d')]);return db[_0x5eb8('0x32')][_0x5eb8('0x4e')](_0x33b92a)['then'](handleEntityNotFound(_0x562778,null))['then'](respondWithResult(_0x562778,null))[_0x5eb8('0x4a')](handleError(_0x562778,null));};exports[_0x5eb8('0x4f')]=function(_0x4d992b,_0xeb83d7){return db[_0x5eb8('0x32')]['create'](_0x4d992b[_0x5eb8('0x50')],{})[_0x5eb8('0x28')](function(_0x503d30){var _0xfc7f31=_0x4d992b[_0x5eb8('0x51')][_0x5eb8('0x29')]({'plain':!![]});if(!_0xfc7f31)throw new Error(_0x5eb8('0x52'));if(_0xfc7f31[_0x5eb8('0x53')]===_0x5eb8('0x51')){var _0x5acbd6=_0x503d30['get']({'plain':!![]});var _0x50fe0c=_0x5eb8('0x2a');return db[_0x5eb8('0x54')][_0x5eb8('0x4e')]({'where':{'name':_0x50fe0c,'userProfileId':_0xfc7f31[_0x5eb8('0x55')]},'raw':!![]})[_0x5eb8('0x28')](function(_0x322c81){if(_0x322c81&&_0x322c81[_0x5eb8('0x56')]===0x0){return db[_0x5eb8('0x57')][_0x5eb8('0x4f')]({'name':_0x5acbd6[_0x5eb8('0x2e')],'resourceId':_0x5acbd6['id'],'type':_0x322c81[_0x5eb8('0x2e')],'sectionId':_0x322c81['id']},{})[_0x5eb8('0x28')](function(){return _0x503d30;});}else{return _0x503d30;}})[_0x5eb8('0x4a')](function(_0x560ec2){logger[_0x5eb8('0x2c')](_0x5eb8('0x58'),_0x560ec2);throw _0x560ec2;});}return _0x503d30;})[_0x5eb8('0x28')](respondWithResult(_0xeb83d7,0xc9))[_0x5eb8('0x4a')](handleError(_0xeb83d7,null));};exports['update']=function(_0x598de1,_0x1ba1a1){if(_0x598de1['body']['id']){delete _0x598de1['body']['id'];}return db['SmsQueue'][_0x5eb8('0x4e')]({'where':{'id':_0x598de1[_0x5eb8('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1ba1a1,null))[_0x5eb8('0x28')](saveUpdates(_0x598de1['body'],null))[_0x5eb8('0x28')](respondWithResult(_0x1ba1a1,null))[_0x5eb8('0x4a')](handleError(_0x1ba1a1,null));};exports[_0x5eb8('0x2b')]=function(_0x8ca893,_0x3615ef){return db[_0x5eb8('0x32')]['find']({'where':{'id':_0x8ca893[_0x5eb8('0x4c')]['id']}})[_0x5eb8('0x28')](handleEntityNotFound(_0x3615ef,null))[_0x5eb8('0x28')](removeEntity(_0x3615ef,null))[_0x5eb8('0x4a')](handleError(_0x3615ef,null));};exports[_0x5eb8('0x59')]=function(_0x15e725,_0xa5ff14){return db[_0x5eb8('0x32')]['describe']()[_0x5eb8('0x28')](respondWithResult(_0xa5ff14,null))['catch'](handleError(_0xa5ff14,null));};exports[_0x5eb8('0x5a')]=function(_0x328b10,_0x76bda5,_0x27b4a1){var _0x25003e={'raw':!![],'where':{}},_0x4948d1={},_0x48522b;return db[_0x5eb8('0x32')]['findOne']({'where':{'id':_0x328b10[_0x5eb8('0x4c')]['id']}})[_0x5eb8('0x28')](handleEntityNotFound(_0x76bda5,null))[_0x5eb8('0x28')](function(_0x14aa4c){if(_0x14aa4c){_0x48522b=_0x14aa4c[_0x5eb8('0x29')]({'plain':!![]});_0x4948d1['model']=_[_0x5eb8('0x39')](db['UserSmsQueue']['rawAttributes']);_0x4948d1[_0x5eb8('0x38')]=_[_0x5eb8('0x39')](_0x328b10['query']);_0x4948d1[_0x5eb8('0x3a')]=_[_0x5eb8('0x3b')](_0x4948d1['model'],_0x4948d1[_0x5eb8('0x38')]);_0x25003e[_0x5eb8('0x3c')]=_[_0x5eb8('0x3b')](_0x4948d1[_0x5eb8('0x37')],qs[_0x5eb8('0x3d')](_0x328b10[_0x5eb8('0x38')]['fields']));_0x25003e[_0x5eb8('0x3c')]=_0x25003e[_0x5eb8('0x3c')]['length']?_0x25003e[_0x5eb8('0x3c')]:_0x4948d1[_0x5eb8('0x37')];if(!_0x328b10[_0x5eb8('0x38')][_0x5eb8('0x3f')](_0x5eb8('0x40'))){_0x25003e[_0x5eb8('0x21')]=qs[_0x5eb8('0x21')](_0x328b10['query'][_0x5eb8('0x21')]);_0x25003e[_0x5eb8('0x1f')]=qs[_0x5eb8('0x1f')](_0x328b10[_0x5eb8('0x38')]['offset']);}_0x25003e[_0x5eb8('0x41')]=qs[_0x5eb8('0x42')](_0x328b10['query'][_0x5eb8('0x42')]);_0x25003e[_0x5eb8('0x43')]=qs[_0x5eb8('0x3a')](_[_0x5eb8('0x44')](_0x328b10['query'],_0x4948d1['filters']));_0x25003e[_0x5eb8('0x43')]['SmsQueueId']=_0x14aa4c['id'];if(_0x328b10[_0x5eb8('0x38')][_0x5eb8('0x45')]){_0x25003e[_0x5eb8('0x43')]=_[_0x5eb8('0x46')](_0x25003e[_0x5eb8('0x43')],{'$or':_[_0x5eb8('0x31')](_0x25003e[_0x5eb8('0x3c')],function(_0x285759){var _0x4d4e8d={};_0x4d4e8d[_0x285759]={'$like':'%'+_0x328b10[_0x5eb8('0x38')][_0x5eb8('0x45')]+'%'};return _0x4d4e8d;})});}_0x25003e=_['merge']({},_0x25003e,_0x328b10['options']);return db[_0x5eb8('0x5b')][_0x5eb8('0x49')](_0x25003e);}})[_0x5eb8('0x28')](function(_0x12f7f9){if(_0x12f7f9){return db['User'][_0x5eb8('0x5c')]({'where':{'id':_[_0x5eb8('0x31')](_0x12f7f9,_0x5eb8('0x5d')),'role':_0x5eb8('0x5e')},'attributes':['id',_0x5eb8('0x2e'),_0x5eb8('0x5f'),_0x5eb8('0x60'),'createdAt']});}})[_0x5eb8('0x28')](function(_0x2b2043){if(_0x2b2043){return{'count':_0x2b2043[_0x5eb8('0x22')],'rows':_[_0x5eb8('0x31')](_0x2b2043[_0x5eb8('0x61')],function(_0x81b7f1){return{'membername':_0x81b7f1['name'],'UserId':_0x81b7f1['id'],'queue_name':_0x48522b['name'],'SmsQueueId':_0x48522b['id'],'interface':util['format']('%s/%s',_0x5eb8('0x62'),_0x81b7f1['name']),'penalty':0x0,'paused':_0x81b7f1[_0x5eb8('0x5f')],'createdAt':_0x81b7f1['createdAt'],'updatedAt':_0x81b7f1[_0x5eb8('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x76bda5,_0x25003e))['catch'](handleError(_0x76bda5,null));};exports['getTeams']=function(_0x4fff7a,_0x18ba19,_0x39d591){var _0x285068={};var _0x40fd22={};var _0xf66430;var _0x461d5f;return db[_0x5eb8('0x32')][_0x5eb8('0x63')]({'where':{'id':_0x4fff7a[_0x5eb8('0x4c')]['id']}})['then'](handleEntityNotFound(_0x18ba19,null))[_0x5eb8('0x28')](function(_0x32623c){if(_0x32623c){_0xf66430=_0x32623c;_0x40fd22[_0x5eb8('0x37')]=_[_0x5eb8('0x39')](db['Team']['rawAttributes']);_0x40fd22[_0x5eb8('0x38')]=_[_0x5eb8('0x39')](_0x4fff7a[_0x5eb8('0x38')]);_0x40fd22[_0x5eb8('0x3a')]=_[_0x5eb8('0x3b')](_0x40fd22[_0x5eb8('0x37')],_0x40fd22['query']);_0x285068[_0x5eb8('0x3c')]=_[_0x5eb8('0x3b')](_0x40fd22[_0x5eb8('0x37')],qs['fields'](_0x4fff7a[_0x5eb8('0x38')][_0x5eb8('0x3d')]));_0x285068[_0x5eb8('0x3c')]=_0x285068['attributes'][_0x5eb8('0x3e')]?_0x285068[_0x5eb8('0x3c')]:_0x40fd22[_0x5eb8('0x37')];_0x285068[_0x5eb8('0x41')]=qs['sort'](_0x4fff7a['query'][_0x5eb8('0x42')]);_0x285068[_0x5eb8('0x43')]=qs[_0x5eb8('0x3a')](_[_0x5eb8('0x44')](_0x4fff7a[_0x5eb8('0x38')],_0x40fd22[_0x5eb8('0x3a')]));if(_0x4fff7a[_0x5eb8('0x38')][_0x5eb8('0x45')]){_0x285068[_0x5eb8('0x43')]=_[_0x5eb8('0x46')](_0x285068[_0x5eb8('0x43')],{'$or':_[_0x5eb8('0x31')](_0x285068['attributes'],function(_0x396aac){var _0x1ef969={};_0x1ef969[_0x396aac]={'$like':'%'+_0x4fff7a[_0x5eb8('0x38')]['filter']+'%'};return _0x1ef969;})});}_0x285068=_[_0x5eb8('0x46')]({},_0x285068,_0x4fff7a[_0x5eb8('0x4d')]);return _0xf66430[_0x5eb8('0x64')](_0x285068);}})[_0x5eb8('0x28')](function(_0x581738){if(_0x581738){_0x461d5f=_0x581738['length'];if(!_0x4fff7a[_0x5eb8('0x38')]['hasOwnProperty'](_0x5eb8('0x40'))){_0x285068['limit']=qs[_0x5eb8('0x21')](_0x4fff7a[_0x5eb8('0x38')]['limit']);_0x285068[_0x5eb8('0x1f')]=qs[_0x5eb8('0x1f')](_0x4fff7a['query'][_0x5eb8('0x1f')]);}return _0xf66430['getTeams'](_0x285068);}})['then'](function(_0x4613c9){if(_0x4613c9){return _0x4613c9?{'count':_0x461d5f,'rows':_0x4613c9}:null;}})[_0x5eb8('0x28')](respondWithResult(_0x18ba19,null))[_0x5eb8('0x4a')](handleError(_0x18ba19,null));};exports[_0x5eb8('0x65')]=function(_0x3fa258,_0x567c4f,_0x8fc924){var _0x577b2b=_0x3fa258[_0x5eb8('0x50')][_0x5eb8('0x66')];return db['Team']['findAll']({'where':{'id':_0x577b2b},'attributes':['id'],'include':[{'model':db['User'],'as':_0x5eb8('0x67'),'attributes':['id',_0x5eb8('0x2e'),_0x5eb8('0x68'),_0x5eb8('0x69'),_0x5eb8('0x6a')],'raw':!![]}]})[_0x5eb8('0x28')](function(_0x467357){if(_0x467357){var _0x5a0ef2=_['flatMap'](_0x467357,function(_0x342418){var _0x267a47=_0x342418[_0x5eb8('0x29')]({'plain':!![]});return _0x267a47[_0x5eb8('0x67')];});return db[_0x5eb8('0x32')][_0x5eb8('0x4e')]({'where':{'id':_0x3fa258[_0x5eb8('0x4c')]['id']}})[_0x5eb8('0x28')](function(_0x188263){return db[_0x5eb8('0x6b')]['transaction'](function(_0x387185){return _0x188263['addTeams'](_0x577b2b,{'transaction':_0x387185})['then'](function(){return BPromise[_0x5eb8('0x6c')](_0x5a0ef2,function(_0x3e0261){return db[_0x5eb8('0x5b')][_0x5eb8('0x6d')]({'where':{'UserId':_0x3e0261['id'],'SmsQueueId':_0x3fa258['params']['id']},'transaction':_0x387185});});})[_0x5eb8('0x28')](function(){_0x5a0ef2[_0x5eb8('0x6e')](function(_0x268a44){socket[_0x5eb8('0x6f')](_0x5eb8('0x70'),{'UserId':_0x268a44['id'],'SmsQueueId':_0x188263['id']});});});});});}})[_0x5eb8('0x28')](respondWithStatusCode(_0x567c4f,null))['catch'](handleError(_0x567c4f,null));};exports[_0x5eb8('0x71')]=function(_0x295eea,_0x3d73e9,_0x534765){return db[_0x5eb8('0x72')][_0x5eb8('0x49')]({'where':{'id':_0x295eea[_0x5eb8('0x38')]['ids']},'attributes':['id'],'include':[{'model':db[_0x5eb8('0x73')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x3d73e9,null))[_0x5eb8('0x28')](function(_0x51515f){var _0x6947ea=_[_0x5eb8('0x31')](_0x51515f,'id');var _0x3acc73=[];var _0x584180=[];var _0x2787ba=squel[_0x5eb8('0x74')]();_0x2787ba[_0x5eb8('0x75')](_0x5eb8('0x76'))[_0x5eb8('0x77')](_0x5eb8('0x78'),'tq')['join']('user_has_teams','ut',_0x5eb8('0x79'))[_0x5eb8('0x43')]('SmsQueueId\x20=\x20?',_0x295eea[_0x5eb8('0x4c')]['id']);for(var _0x4c466a=0x0;_0x4c466a<_0x51515f[_0x5eb8('0x3e')];_0x4c466a+=0x1){let _0x3f949a=_0x51515f[_0x4c466a];for(var _0x37b201=0x0;_0x37b201<_0x3f949a[_0x5eb8('0x67')][_0x5eb8('0x3e')];_0x37b201+=0x1){let _0x3354f2=_0x3f949a[_0x5eb8('0x67')][_0x37b201];var _0xd2a9be=_0x2787ba[_0x5eb8('0x7a')]();_0xd2a9be['where'](_0x5eb8('0x7b'),_0x3354f2['id']);_0x584180[_0x5eb8('0x7c')](db[_0x5eb8('0x6b')][_0x5eb8('0x38')](_0xd2a9be['toString'](),{'type':db[_0x5eb8('0x6b')][_0x5eb8('0x7d')][_0x5eb8('0x7e')]})['then'](function(_0x552266){if(_0x552266['length']===0x1){return _0x3354f2['id'];}else{var _0x96094f=_[_0x5eb8('0x7f')](_['map'](_0x552266,_0x5eb8('0x80')),function(_0x158f11){return _[_0x5eb8('0x81')](_0x6947ea,_0x158f11);});if(_0x96094f){return _0x3354f2['id'];}}}));}}return BPromise[_0x5eb8('0x82')](_0x584180)[_0x5eb8('0x28')](function(_0x34a2ce){_0x3acc73=_(_0x3acc73)[_0x5eb8('0x83')](_0x34a2ce)[_0x5eb8('0x84')]()[_0x5eb8('0x85')]();return db['SmsQueue'][_0x5eb8('0x4e')]({'where':{'id':_0x295eea['params']['id']}})[_0x5eb8('0x28')](function(_0x576a63){return db[_0x5eb8('0x6b')][_0x5eb8('0x86')](function(_0xb5299d){return _0x576a63['removeTeams'](_0x295eea[_0x5eb8('0x38')]['ids'],{'transaction':_0xb5299d})['then'](function(){if(!_[_0x5eb8('0x87')](_0x3acc73)){return _0x576a63[_0x5eb8('0x88')](_0x3acc73,{'transaction':_0xb5299d});}})[_0x5eb8('0x28')](function(){_0x3acc73[_0x5eb8('0x6e')](function(_0x49c697){socket[_0x5eb8('0x6f')](_0x5eb8('0x89'),{'UserId':_0x49c697,'SmsQueueId':_0x576a63['id']});});});});});});})[_0x5eb8('0x28')](respondWithStatusCode(_0x3d73e9,null))[_0x5eb8('0x4a')](handleError(_0x3d73e9,null));};exports['addAgents']=function(_0x32f88a,_0x55943c,_0x13bc16){return db[_0x5eb8('0x32')][_0x5eb8('0x4e')]({'where':{'id':_0x32f88a[_0x5eb8('0x4c')]['id']}})[_0x5eb8('0x28')](handleEntityNotFound(_0x55943c,null))[_0x5eb8('0x28')](function(_0xedbbb5){if(_0xedbbb5){return _0xedbbb5[_0x5eb8('0x8a')](_0x32f88a['body'][_0x5eb8('0x66')],_[_0x5eb8('0x8b')](_0x32f88a[_0x5eb8('0x50')],[_0x5eb8('0x66'),'id'])||{})[_0x5eb8('0x8c')](function(_0x3e9c31){for(var _0x568404=0x0;_0x568404<_0x32f88a[_0x5eb8('0x50')][_0x5eb8('0x66')]['length'];_0x568404+=0x1){socket[_0x5eb8('0x6f')](_0x5eb8('0x70'),{'UserId':Number(_0x32f88a['body'][_0x5eb8('0x66')][_0x568404]),'SmsQueueId':Number(_0x32f88a['params']['id'])});}return _0x3e9c31;});}})[_0x5eb8('0x28')](respondWithResult(_0x55943c,null))['catch'](handleError(_0x55943c,null));};exports['removeAgents']=function(_0x4fe95f,_0x4ad163,_0x10b157){return db[_0x5eb8('0x32')][_0x5eb8('0x4e')]({'where':{'id':_0x4fe95f[_0x5eb8('0x4c')]['id']}})[_0x5eb8('0x28')](handleEntityNotFound(_0x4ad163,null))['then'](function(_0x36d462){if(_0x36d462){return _0x36d462[_0x5eb8('0x88')](_0x4fe95f[_0x5eb8('0x38')][_0x5eb8('0x66')])[_0x5eb8('0x28')](function(){if(_['isArray'](_0x4fe95f[_0x5eb8('0x38')][_0x5eb8('0x66')])){for(var _0x34b79b=0x0;_0x34b79b<_0x4fe95f['query']['ids'][_0x5eb8('0x3e')];_0x34b79b+=0x1){socket['emit'](_0x5eb8('0x89'),{'UserId':Number(_0x4fe95f['query']['ids'][_0x34b79b]),'SmsQueueId':Number(_0x4fe95f[_0x5eb8('0x4c')]['id'])});}}else{socket['emit']('userSmsQueue:remove',{'UserId':Number(_0x4fe95f[_0x5eb8('0x38')][_0x5eb8('0x66')]),'SmsQueueId':Number(_0x4fe95f['params']['id'])});}});}})[_0x5eb8('0x28')](respondWithStatusCode(_0x4ad163,null))['catch'](handleError(_0x4ad163,null));};exports['getAgents']=function(_0x3856c8,_0x4f8172,_0x522149){var _0x3db894={};var _0x2cdc31={};var _0x2cc02d;var _0x4c6c9a;return db[_0x5eb8('0x32')]['findOne']({'where':{'id':_0x3856c8[_0x5eb8('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4f8172,null))[_0x5eb8('0x28')](function(_0x13c61f){if(_0x13c61f){_0x2cc02d=_0x13c61f;_0x2cdc31[_0x5eb8('0x37')]=_['keys'](db[_0x5eb8('0x73')][_0x5eb8('0x33')]);_0x2cdc31[_0x5eb8('0x38')]=_[_0x5eb8('0x39')](_0x3856c8[_0x5eb8('0x38')]);_0x2cdc31['filters']=_[_0x5eb8('0x3b')](_0x2cdc31['model'],_0x2cdc31[_0x5eb8('0x38')]);_0x3db894[_0x5eb8('0x3c')]=_[_0x5eb8('0x3b')](_0x2cdc31[_0x5eb8('0x37')],qs['fields'](_0x3856c8[_0x5eb8('0x38')][_0x5eb8('0x3d')]));_0x3db894[_0x5eb8('0x3c')]=_0x3db894[_0x5eb8('0x3c')]['length']?_0x3db894[_0x5eb8('0x3c')]:_0x2cdc31[_0x5eb8('0x37')];_0x3db894[_0x5eb8('0x41')]=qs[_0x5eb8('0x42')](_0x3856c8[_0x5eb8('0x38')][_0x5eb8('0x42')]);_0x3db894[_0x5eb8('0x43')]=qs['filters'](_[_0x5eb8('0x44')](_0x3856c8['query'],_0x2cdc31[_0x5eb8('0x3a')]));if(_0x3856c8[_0x5eb8('0x38')][_0x5eb8('0x45')]){_0x3db894[_0x5eb8('0x43')]=_[_0x5eb8('0x46')](_0x3db894[_0x5eb8('0x43')],{'$or':_['map'](_0x3db894[_0x5eb8('0x3c')],function(_0x1740a9){var _0x59060e={};_0x59060e[_0x1740a9]={'$like':'%'+_0x3856c8[_0x5eb8('0x38')][_0x5eb8('0x45')]+'%'};return _0x59060e;})});}_0x3db894=_[_0x5eb8('0x46')]({},_0x3db894,_0x3856c8[_0x5eb8('0x4d')]);return _0x2cc02d[_0x5eb8('0x8d')](_0x3db894);}})['then'](function(_0x4098bb){if(_0x4098bb){_0x4c6c9a=_0x4098bb[_0x5eb8('0x3e')];if(!_0x3856c8[_0x5eb8('0x38')]['hasOwnProperty'](_0x5eb8('0x40'))){_0x3db894[_0x5eb8('0x21')]=qs['limit'](_0x3856c8[_0x5eb8('0x38')][_0x5eb8('0x21')]);_0x3db894[_0x5eb8('0x1f')]=qs[_0x5eb8('0x1f')](_0x3856c8[_0x5eb8('0x38')][_0x5eb8('0x1f')]);}return _0x2cc02d['getAgents'](_0x3db894);}})['then'](function(_0x5eea0a){if(_0x5eea0a){return _0x5eea0a?{'count':_0x4c6c9a,'rows':_0x5eea0a}:null;}})[_0x5eb8('0x28')](respondWithResult(_0x4f8172,null))[_0x5eb8('0x4a')](handleError(_0x4f8172,null));};
\ No newline at end of file
index 7f77fe1..4ef086c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcc0=['events','SmsQueue','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x58547b,_0x4b89c2){var _0x1d3fd2=function(_0x4ac500){while(--_0x4ac500){_0x58547b['push'](_0x58547b['shift']());}};_0x1d3fd2(++_0x4b89c2);}(_0xbcc0,0x1b9));var _0x0bcc=function(_0x49b03d,_0x33e415){_0x49b03d=_0x49b03d-0x0;var _0x4e149f=_0xbcc0[_0x49b03d];return _0x4e149f;};'use strict';var EventEmitter=require(_0x0bcc('0x0'));var SmsQueue=require('../../mysqldb')['db'][_0x0bcc('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x0bcc('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0bcc('0x3'),'afterDestroy':_0x0bcc('0x4')};function emitEvent(_0x1b52fe){return function(_0x23a192,_0x304ea1,_0x2d948c){SmsQueueEvents[_0x0bcc('0x5')](_0x1b52fe+':'+_0x23a192['id'],_0x23a192);SmsQueueEvents[_0x0bcc('0x5')](_0x1b52fe,_0x23a192);_0x2d948c(null);};}for(var e in events){if(events[_0x0bcc('0x6')](e)){var event=events[e];SmsQueue[_0x0bcc('0x7')](e,emitEvent(event));}}module[_0x0bcc('0x8')]=SmsQueueEvents;
\ No newline at end of file
+var _0x9626=['remove','emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','save'];(function(_0x2642cb,_0x4b917f){var _0xe6e41=function(_0x281676){while(--_0x281676){_0x2642cb['push'](_0x2642cb['shift']());}};_0xe6e41(++_0x4b917f);}(_0x9626,0xa4));var _0x6962=function(_0xc68900,_0x25e303){_0xc68900=_0xc68900-0x0;var _0x8cd1f3=_0x9626[_0xc68900];return _0x8cd1f3;};'use strict';var EventEmitter=require(_0x6962('0x0'));var SmsQueue=require(_0x6962('0x1'))['db']['SmsQueue'];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x6962('0x2')](0x0);var events={'afterCreate':_0x6962('0x3'),'afterUpdate':'update','afterDestroy':_0x6962('0x4')};function emitEvent(_0x40604c){return function(_0x53c20d,_0x3caad1,_0x1c435d){SmsQueueEvents[_0x6962('0x5')](_0x40604c+':'+_0x53c20d['id'],_0x53c20d);SmsQueueEvents[_0x6962('0x5')](_0x40604c,_0x53c20d);_0x1c435d(null);};}for(var e in events){if(events[_0x6962('0x6')](e)){var event=events[e];SmsQueue[_0x6962('0x7')](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
index 0987697..28b4bef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff03=['sms_queues','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SmsQueue'];(function(_0x201a63,_0x527120){var _0x3b89ea=function(_0x5460fb){while(--_0x5460fb){_0x201a63['push'](_0x201a63['shift']());}};_0x3b89ea(++_0x527120);}(_0xff03,0x1ed));var _0x3ff0=function(_0x10b6cf,_0xd0e8b2){_0x10b6cf=_0x10b6cf-0x0;var _0x30a5ca=_0xff03[_0x10b6cf];return _0x30a5ca;};'use strict';var _=require('lodash');var util=require(_0x3ff0('0x0'));var logger=require('../../config/logger')(_0x3ff0('0x1'));var moment=require(_0x3ff0('0x2'));var BPromise=require(_0x3ff0('0x3'));var rp=require(_0x3ff0('0x4'));var fs=require('fs');var path=require(_0x3ff0('0x5'));var rimraf=require(_0x3ff0('0x6'));var config=require(_0x3ff0('0x7'));var attributes=require('./smsQueue.attributes');module[_0x3ff0('0x8')]=function(_0x560498,_0x3c335d){return _0x560498[_0x3ff0('0x9')](_0x3ff0('0xa'),attributes,{'tableName':_0x3ff0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x30b2=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./smsQueue.attributes','exports','define','sms_queues'];(function(_0x16771d,_0x224c60){var _0x386f11=function(_0x3d7a87){while(--_0x3d7a87){_0x16771d['push'](_0x16771d['shift']());}};_0x386f11(++_0x224c60);}(_0x30b2,0x138));var _0x230b=function(_0x2082c8,_0x418511){_0x2082c8=_0x2082c8-0x0;var _0x251ae4=_0x30b2[_0x2082c8];return _0x251ae4;};'use strict';var _=require(_0x230b('0x0'));var util=require(_0x230b('0x1'));var logger=require(_0x230b('0x2'))(_0x230b('0x3'));var moment=require(_0x230b('0x4'));var BPromise=require(_0x230b('0x5'));var rp=require(_0x230b('0x6'));var fs=require('fs');var path=require(_0x230b('0x7'));var rimraf=require(_0x230b('0x8'));var config=require('../../config/environment');var attributes=require(_0x230b('0x9'));module[_0x230b('0xa')]=function(_0x1ac1b2,_0x47dd55){return _0x1ac1b2[_0x230b('0xb')]('SmsQueue',attributes,{'tableName':_0x230b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 601e09a..d80362b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x184c=['register','request','then','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','GetSmsQueue','SmsQueue','findAll','options','attributes','include','map','model','ShowSmsQueue','find','raw','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','defaults','redis','localhost','./smsQueue.socket'];(function(_0x51e79c,_0x51485e){var _0x2467be=function(_0xbf70f0){while(--_0xbf70f0){_0x51e79c['push'](_0x51e79c['shift']());}};_0x2467be(++_0x51485e);}(_0x184c,0x18a));var _0xc184=function(_0xdf3152,_0x4c79c8){_0xdf3152=_0xdf3152-0x0;var _0x260419=_0x184c[_0xdf3152];return _0x260419;};'use strict';var _=require(_0xc184('0x0'));var util=require(_0xc184('0x1'));var moment=require(_0xc184('0x2'));var BPromise=require(_0xc184('0x3'));var rs=require(_0xc184('0x4'));var fs=require('fs');var Redis=require(_0xc184('0x5'));var db=require(_0xc184('0x6'))['db'];var utils=require(_0xc184('0x7'));var logger=require('../../config/logger')(_0xc184('0x8'));var config=require('../../config/environment');var jayson=require(_0xc184('0x9'));var client=jayson[_0xc184('0xa')][_0xc184('0xb')]({'port':0x232a});config['redis']=_[_0xc184('0xc')](config[_0xc184('0xd')],{'host':_0xc184('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc184('0xd')]));require(_0xc184('0xf'))[_0xc184('0x10')](socket);function respondWithRpcPromise(_0x4aa108,_0x6e8b07,_0x7035de){return new BPromise(function(_0x4e9618,_0x20ba1c){return client[_0xc184('0x11')](_0x4aa108,_0x7035de)[_0xc184('0x12')](function(_0xc88cab){logger['info'](_0xc184('0x13'),_0x6e8b07,_0xc184('0x14'));logger[_0xc184('0x15')](_0xc184('0x16'),_0x6e8b07,_0xc184('0x14'),JSON[_0xc184('0x17')](_0xc88cab));if(_0xc88cab[_0xc184('0x18')]){if(_0xc88cab[_0xc184('0x18')][_0xc184('0x19')]===0x1f4){logger[_0xc184('0x18')](_0xc184('0x13'),_0x6e8b07,_0xc88cab[_0xc184('0x18')][_0xc184('0x1a')]);return _0x20ba1c(_0xc88cab['error'][_0xc184('0x1a')]);}logger[_0xc184('0x18')](_0xc184('0x13'),_0x6e8b07,_0xc88cab[_0xc184('0x18')][_0xc184('0x1a')]);return _0x4e9618(_0xc88cab[_0xc184('0x18')][_0xc184('0x1a')]);}else{logger[_0xc184('0x1b')]('SmsQueue,\x20%s,\x20%s',_0x6e8b07,_0xc184('0x14'));_0x4e9618(_0xc88cab[_0xc184('0x1c')][_0xc184('0x1a')]);}})['catch'](function(_0x978776){logger[_0xc184('0x18')](_0xc184('0x13'),_0x6e8b07,_0x978776);_0x20ba1c(_0x978776);});});}exports[_0xc184('0x1d')]=function(_0x11b5dc){var _0x2908ce=this;return new Promise(function(_0x30145e,_0x5671bb){return db[_0xc184('0x1e')][_0xc184('0x1f')]({'raw':_0x11b5dc[_0xc184('0x20')]?_0x11b5dc[_0xc184('0x20')]['raw']===undefined?!![]:![]:!![],'where':_0x11b5dc[_0xc184('0x20')]?_0x11b5dc[_0xc184('0x20')]['where']||null:null,'attributes':_0x11b5dc[_0xc184('0x20')]?_0x11b5dc['options'][_0xc184('0x21')]||null:null,'limit':_0x11b5dc[_0xc184('0x20')]?_0x11b5dc[_0xc184('0x20')]['limit']||null:null,'include':_0x11b5dc[_0xc184('0x20')]?_0x11b5dc[_0xc184('0x20')][_0xc184('0x22')]?_[_0xc184('0x23')](_0x11b5dc[_0xc184('0x20')][_0xc184('0x22')],function(_0x1025e4){return{'model':db[_0x1025e4[_0xc184('0x24')]],'as':_0x1025e4['as'],'attributes':_0x1025e4[_0xc184('0x21')],'include':_0x1025e4[_0xc184('0x22')]?_['map'](_0x1025e4[_0xc184('0x22')],function(_0x267697){return{'model':db[_0x267697[_0xc184('0x24')]],'as':_0x267697['as'],'attributes':_0x267697[_0xc184('0x21')],'include':_0x267697['include']?_['map'](_0x267697['include'],function(_0x5b0424){return{'model':db[_0x5b0424[_0xc184('0x24')]],'as':_0x5b0424['as'],'attributes':_0x5b0424[_0xc184('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b53c6){logger[_0xc184('0x1b')](_0xc184('0x1d'),_0x11b5dc);logger['debug'](_0xc184('0x1d'),_0x11b5dc,JSON[_0xc184('0x17')](_0x4b53c6));_0x30145e(_0x4b53c6);})['catch'](function(_0x1780ba){logger[_0xc184('0x18')](_0xc184('0x1d'),_0x1780ba[_0xc184('0x1a')],_0x11b5dc);_0x5671bb(_0x2908ce[_0xc184('0x18')](0x1f4,_0x1780ba['message']));});});};exports[_0xc184('0x25')]=function(_0x1920da){var _0x14f6ed=this;return new Promise(function(_0x136f0d,_0x3d1b1d){return db[_0xc184('0x1e')][_0xc184('0x26')]({'raw':_0x1920da[_0xc184('0x20')]?_0x1920da[_0xc184('0x20')][_0xc184('0x27')]===undefined?!![]:![]:!![],'where':_0x1920da['options']?_0x1920da[_0xc184('0x20')][_0xc184('0x28')]||null:null,'attributes':_0x1920da[_0xc184('0x20')]?_0x1920da['options'][_0xc184('0x21')]||null:null,'include':_0x1920da['options']?_0x1920da[_0xc184('0x20')][_0xc184('0x22')]?_[_0xc184('0x23')](_0x1920da['options']['include'],function(_0x2fdf65){return{'model':db[_0x2fdf65['model']],'as':_0x2fdf65['as'],'attributes':_0x2fdf65[_0xc184('0x21')],'include':_0x2fdf65[_0xc184('0x22')]?_[_0xc184('0x23')](_0x2fdf65[_0xc184('0x22')],function(_0x1b42a5){return{'model':db[_0x1b42a5[_0xc184('0x24')]],'as':_0x1b42a5['as'],'attributes':_0x1b42a5[_0xc184('0x21')],'include':_0x1b42a5[_0xc184('0x22')]?_[_0xc184('0x23')](_0x1b42a5[_0xc184('0x22')],function(_0x1c7bc3){return{'model':db[_0x1c7bc3[_0xc184('0x24')]],'as':_0x1c7bc3['as'],'attributes':_0x1c7bc3[_0xc184('0x21')]};}):[]};}):[]};}):[]:[]})[_0xc184('0x12')](function(_0x2fae79){logger[_0xc184('0x1b')](_0xc184('0x25'),_0x1920da);logger[_0xc184('0x15')]('ShowSmsQueue',_0x1920da,JSON[_0xc184('0x17')](_0x2fae79));_0x136f0d(_0x2fae79);})['catch'](function(_0x3f5669){logger['error'](_0xc184('0x25'),_0x3f5669['message'],_0x1920da);_0x3d1b1d(_0x14f6ed[_0xc184('0x18')](0x1f4,_0x3f5669['message']));});});};
\ No newline at end of file
+var _0x5987=['client','http','redis','register','request','then','info','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','error','code','SmsQueue,\x20%s,\x20%s','message','result','catch','GetSmsQueue','SmsQueue','findAll','options','where','include','map','model','attributes','stringify','find','raw','ShowSmsQueue','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x5154f3,_0x4a3a29){var _0x1bea1b=function(_0x9536ae){while(--_0x9536ae){_0x5154f3['push'](_0x5154f3['shift']());}};_0x1bea1b(++_0x4a3a29);}(_0x5987,0x101));var _0x7598=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x5987[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0x7598('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x7598('0x1'));var rs=require(_0x7598('0x2'));var fs=require('fs');var Redis=require(_0x7598('0x3'));var db=require(_0x7598('0x4'))['db'];var utils=require(_0x7598('0x5'));var logger=require(_0x7598('0x6'))(_0x7598('0x7'));var config=require(_0x7598('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x7598('0x9')][_0x7598('0xa')]({'port':0x232a});config[_0x7598('0xb')]=_['defaults'](config[_0x7598('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./smsQueue.socket')[_0x7598('0xc')](socket);function respondWithRpcPromise(_0x3e7390,_0xd7087,_0x1c0b78){return new BPromise(function(_0xa0e36c,_0x22098c){return client[_0x7598('0xd')](_0x3e7390,_0x1c0b78)[_0x7598('0xe')](function(_0x2ceced){logger[_0x7598('0xf')]('SmsQueue,\x20%s,\x20%s',_0xd7087,_0x7598('0x10'));logger[_0x7598('0x11')](_0x7598('0x12'),_0xd7087,_0x7598('0x10'),JSON['stringify'](_0x2ceced));if(_0x2ceced['error']){if(_0x2ceced[_0x7598('0x13')][_0x7598('0x14')]===0x1f4){logger[_0x7598('0x13')]('SmsQueue,\x20%s,\x20%s',_0xd7087,_0x2ceced['error']['message']);return _0x22098c(_0x2ceced[_0x7598('0x13')]['message']);}logger[_0x7598('0x13')](_0x7598('0x15'),_0xd7087,_0x2ceced[_0x7598('0x13')][_0x7598('0x16')]);return _0xa0e36c(_0x2ceced[_0x7598('0x13')]['message']);}else{logger[_0x7598('0xf')](_0x7598('0x15'),_0xd7087,_0x7598('0x10'));_0xa0e36c(_0x2ceced[_0x7598('0x17')][_0x7598('0x16')]);}})[_0x7598('0x18')](function(_0x1e51a1){logger[_0x7598('0x13')](_0x7598('0x15'),_0xd7087,_0x1e51a1);_0x22098c(_0x1e51a1);});});}exports[_0x7598('0x19')]=function(_0x36a57e){var _0x309578=this;return new Promise(function(_0x4564fd,_0x7d3c0b){return db[_0x7598('0x1a')][_0x7598('0x1b')]({'raw':_0x36a57e[_0x7598('0x1c')]?_0x36a57e['options']['raw']===undefined?!![]:![]:!![],'where':_0x36a57e[_0x7598('0x1c')]?_0x36a57e[_0x7598('0x1c')][_0x7598('0x1d')]||null:null,'attributes':_0x36a57e[_0x7598('0x1c')]?_0x36a57e[_0x7598('0x1c')]['attributes']||null:null,'limit':_0x36a57e[_0x7598('0x1c')]?_0x36a57e[_0x7598('0x1c')]['limit']||null:null,'include':_0x36a57e['options']?_0x36a57e['options'][_0x7598('0x1e')]?_[_0x7598('0x1f')](_0x36a57e[_0x7598('0x1c')][_0x7598('0x1e')],function(_0x38d3b7){return{'model':db[_0x38d3b7[_0x7598('0x20')]],'as':_0x38d3b7['as'],'attributes':_0x38d3b7[_0x7598('0x21')],'include':_0x38d3b7[_0x7598('0x1e')]?_[_0x7598('0x1f')](_0x38d3b7[_0x7598('0x1e')],function(_0x45de6c){return{'model':db[_0x45de6c['model']],'as':_0x45de6c['as'],'attributes':_0x45de6c[_0x7598('0x21')],'include':_0x45de6c[_0x7598('0x1e')]?_[_0x7598('0x1f')](_0x45de6c[_0x7598('0x1e')],function(_0xf88b2a){return{'model':db[_0xf88b2a[_0x7598('0x20')]],'as':_0xf88b2a['as'],'attributes':_0xf88b2a[_0x7598('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x65e3e3){logger[_0x7598('0xf')](_0x7598('0x19'),_0x36a57e);logger['debug'](_0x7598('0x19'),_0x36a57e,JSON[_0x7598('0x22')](_0x65e3e3));_0x4564fd(_0x65e3e3);})['catch'](function(_0x2d8fd1){logger[_0x7598('0x13')](_0x7598('0x19'),_0x2d8fd1['message'],_0x36a57e);_0x7d3c0b(_0x309578[_0x7598('0x13')](0x1f4,_0x2d8fd1['message']));});});};exports['ShowSmsQueue']=function(_0x4031b4){var _0x543c8e=this;return new Promise(function(_0x1d1c70,_0x507bed){return db['SmsQueue'][_0x7598('0x23')]({'raw':_0x4031b4['options']?_0x4031b4[_0x7598('0x1c')][_0x7598('0x24')]===undefined?!![]:![]:!![],'where':_0x4031b4[_0x7598('0x1c')]?_0x4031b4['options'][_0x7598('0x1d')]||null:null,'attributes':_0x4031b4[_0x7598('0x1c')]?_0x4031b4['options'][_0x7598('0x21')]||null:null,'include':_0x4031b4[_0x7598('0x1c')]?_0x4031b4[_0x7598('0x1c')][_0x7598('0x1e')]?_[_0x7598('0x1f')](_0x4031b4['options'][_0x7598('0x1e')],function(_0xe5c56a){return{'model':db[_0xe5c56a[_0x7598('0x20')]],'as':_0xe5c56a['as'],'attributes':_0xe5c56a[_0x7598('0x21')],'include':_0xe5c56a[_0x7598('0x1e')]?_[_0x7598('0x1f')](_0xe5c56a[_0x7598('0x1e')],function(_0xe856dc){return{'model':db[_0xe856dc[_0x7598('0x20')]],'as':_0xe856dc['as'],'attributes':_0xe856dc[_0x7598('0x21')],'include':_0xe856dc[_0x7598('0x1e')]?_[_0x7598('0x1f')](_0xe856dc[_0x7598('0x1e')],function(_0x4809cb){return{'model':db[_0x4809cb[_0x7598('0x20')]],'as':_0x4809cb['as'],'attributes':_0x4809cb['attributes']};}):[]};}):[]};}):[]:[]})[_0x7598('0xe')](function(_0x161aa9){logger[_0x7598('0xf')](_0x7598('0x25'),_0x4031b4);logger[_0x7598('0x11')](_0x7598('0x25'),_0x4031b4,JSON[_0x7598('0x22')](_0x161aa9));_0x1d1c70(_0x161aa9);})[_0x7598('0x18')](function(_0x396717){logger[_0x7598('0x13')]('ShowSmsQueue',_0x396717['message'],_0x4031b4);_0x507bed(_0x543c8e[_0x7598('0x13')](0x1f4,_0x396717['message']));});});};
\ No newline at end of file
index 8818291..8493abc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5c7=['register','length','smsQueue:','save','remove','update','emit','removeListener'];(function(_0x5c72ee,_0x5a8bf8){var _0x231876=function(_0x955276){while(--_0x955276){_0x5c72ee['push'](_0x5c72ee['shift']());}};_0x231876(++_0x5a8bf8);}(_0xb5c7,0x1f3));var _0x7b5c=function(_0x5e0cfb,_0x52dd69){_0x5e0cfb=_0x5e0cfb-0x0;var _0x46c3e5=_0xb5c7[_0x5e0cfb];return _0x46c3e5;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=[_0x7b5c('0x0'),_0x7b5c('0x1'),_0x7b5c('0x2')];function createListener(_0x3a8335,_0x57b533){return function(_0x20befa){_0x57b533[_0x7b5c('0x3')](_0x3a8335,_0x20befa);};}function removeListener(_0x2bb571,_0x566b77){return function(){SmsQueueEvents[_0x7b5c('0x4')](_0x2bb571,_0x566b77);};}exports[_0x7b5c('0x5')]=function(_0x1c7119){for(var _0x32f8e4=0x0,_0x4c637e=events[_0x7b5c('0x6')];_0x32f8e4<_0x4c637e;_0x32f8e4++){var _0x542ccd=events[_0x32f8e4];var _0x15be33=createListener(_0x7b5c('0x7')+_0x542ccd,_0x1c7119);SmsQueueEvents['on'](_0x542ccd,_0x15be33);}};
\ No newline at end of file
+var _0x8253=['save','remove','update','emit','removeListener','smsQueue:','./smsQueue.events'];(function(_0x1fa7c1,_0x1f8148){var _0x5b3135=function(_0xf9f927){while(--_0xf9f927){_0x1fa7c1['push'](_0x1fa7c1['shift']());}};_0x5b3135(++_0x1f8148);}(_0x8253,0x8b));var _0x3825=function(_0x44e4a1,_0x3d053a){_0x44e4a1=_0x44e4a1-0x0;var _0x546ad3=_0x8253[_0x44e4a1];return _0x546ad3;};'use strict';var SmsQueueEvents=require(_0x3825('0x0'));var events=[_0x3825('0x1'),_0x3825('0x2'),_0x3825('0x3')];function createListener(_0x30b601,_0x4c3d9c){return function(_0x1d335c){_0x4c3d9c[_0x3825('0x4')](_0x30b601,_0x1d335c);};}function removeListener(_0x1dfdad,_0x31e1c6){return function(){SmsQueueEvents[_0x3825('0x5')](_0x1dfdad,_0x31e1c6);};}exports['register']=function(_0x3ecca6){for(var _0x18aee6=0x0,_0x5e2ce6=events['length'];_0x18aee6<_0x5e2ce6;_0x18aee6++){var _0x18b33f=events[_0x18aee6];var _0x465ce7=createListener(_0x3825('0x6')+_0x18b33f,_0x3ecca6);SmsQueueEvents['on'](_0x18b33f,_0x465ce7);}};
\ No newline at end of file
index bd9a7da..6dd1656 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd694=['update','delete','destroy','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./smsQueueReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','create','put'];(function(_0x405022,_0x2377a8){var _0x3b29e7=function(_0xb927b5){while(--_0xb927b5){_0x405022['push'](_0x405022['shift']());}};_0x3b29e7(++_0x2377a8);}(_0xd694,0x11b));var _0x4d69=function(_0x5a0358,_0x10f0ce){_0x5a0358=_0x5a0358-0x0;var _0x5e5391=_0xd694[_0x5a0358];return _0x5e5391;};'use strict';var multer=require(_0x4d69('0x0'));var util=require('util');var path=require(_0x4d69('0x1'));var timeout=require(_0x4d69('0x2'));var express=require(_0x4d69('0x3'));var router=express[_0x4d69('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4d69('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4d69('0x6'));var controller=require(_0x4d69('0x7'));router['get']('/',auth[_0x4d69('0x8')](),controller[_0x4d69('0x9')]);router[_0x4d69('0xa')](_0x4d69('0xb'),auth['isAuthenticated'](),controller[_0x4d69('0xc')]);router['get'](_0x4d69('0xd'),auth[_0x4d69('0x8')](),controller[_0x4d69('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x4d69('0xf')]);router[_0x4d69('0x10')](_0x4d69('0xd'),auth[_0x4d69('0x8')](),controller[_0x4d69('0x11')]);router[_0x4d69('0x12')](_0x4d69('0xd'),auth[_0x4d69('0x8')](),controller[_0x4d69('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xd072=['path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','/describe','describe','/:id','post','create','put','update','delete','destroy','exports','multer','util'];(function(_0x4e7cc3,_0x47ff4){var _0x42e46d=function(_0x43bd6e){while(--_0x43bd6e){_0x4e7cc3['push'](_0x4e7cc3['shift']());}};_0x42e46d(++_0x47ff4);}(_0xd072,0x132));var _0x2d07=function(_0x331344,_0x4fa17c){_0x331344=_0x331344-0x0;var _0x5f0f8e=_0xd072[_0x331344];return _0x5f0f8e;};'use strict';var multer=require(_0x2d07('0x0'));var util=require(_0x2d07('0x1'));var path=require(_0x2d07('0x2'));var timeout=require(_0x2d07('0x3'));var express=require(_0x2d07('0x4'));var router=express[_0x2d07('0x5')]();var fs_extra=require(_0x2d07('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x2d07('0x7'));var config=require(_0x2d07('0x8'));var controller=require(_0x2d07('0x9'));router[_0x2d07('0xa')]('/',auth[_0x2d07('0xb')](),controller['index']);router[_0x2d07('0xa')](_0x2d07('0xc'),auth[_0x2d07('0xb')](),controller[_0x2d07('0xd')]);router[_0x2d07('0xa')](_0x2d07('0xe'),auth[_0x2d07('0xb')](),controller['show']);router[_0x2d07('0xf')]('/',auth[_0x2d07('0xb')](),controller[_0x2d07('0x10')]);router[_0x2d07('0x11')](_0x2d07('0xe'),auth[_0x2d07('0xb')](),controller[_0x2d07('0x12')]);router[_0x2d07('0x13')](_0x2d07('0xe'),auth[_0x2d07('0xb')](),controller[_0x2d07('0x14')]);module[_0x2d07('0x15')]=router;
\ No newline at end of file
index 469e402..ba998ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd737=['STRING','moment','sequelize','exports','DATE'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd737,0xdd));var _0x7d73=function(_0x355adc,_0xac51ab){_0x355adc=_0x355adc-0x0;var _0x4df04f=_0xd737[_0x355adc];return _0x4df04f;};'use strict';var moment=require(_0x7d73('0x0'));var Sequelize=require(_0x7d73('0x1'));module[_0x7d73('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x7d73('0x3')]},'leaveAt':{'type':Sequelize[_0x7d73('0x3')]},'acceptAt':{'type':Sequelize[_0x7d73('0x3')]},'exitAt':{'type':Sequelize[_0x7d73('0x3')]},'reason':{'type':Sequelize[_0x7d73('0x4')]}};
\ No newline at end of file
+var _0xd765=['sequelize','exports','STRING','DATE','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd765,0x167));var _0x5d76=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd765[_0x122ef9];return _0x42fba0;};'use strict';var moment=require(_0x5d76('0x0'));var Sequelize=require(_0x5d76('0x1'));module[_0x5d76('0x2')]={'uniqueid':{'type':Sequelize[_0x5d76('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x5d76('0x4')]},'leaveAt':{'type':Sequelize[_0x5d76('0x4')]},'acceptAt':{'type':Sequelize[_0x5d76('0x4')]},'exitAt':{'type':Sequelize[_0x5d76('0x4')]},'reason':{'type':Sequelize[_0x5d76('0x3')]}};
\ No newline at end of file
index 200fd4e..05bb303 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dc2=['sort','where','filter','VIRTUAL','catch','show','params','keys','includeAll','include','merge','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','limit','count','Content-Range','json','reject','save','update','destroy','then','end','stack','name','send','index','map','SmsQueueReport','rawAttributes','fieldName','key','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order'];(function(_0x3ab281,_0x4c06d9){var _0x3b4133=function(_0x221014){while(--_0x221014){_0x3ab281['push'](_0x3ab281['shift']());}};_0x3b4133(++_0x4c06d9);}(_0x1dc2,0x182));var _0x21dc=function(_0x16109f,_0x155f4a){_0x16109f=_0x16109f-0x0;var _0xc77d03=_0x1dc2[_0x16109f];return _0xc77d03;};'use strict';var emlformat=require(_0x21dc('0x0'));var rimraf=require(_0x21dc('0x1'));var zipdir=require(_0x21dc('0x2'));var jsonpatch=require(_0x21dc('0x3'));var rp=require(_0x21dc('0x4'));var moment=require(_0x21dc('0x5'));var BPromise=require(_0x21dc('0x6'));var Mustache=require(_0x21dc('0x7'));var util=require('util');var path=require(_0x21dc('0x8'));var sox=require(_0x21dc('0x9'));var csv=require(_0x21dc('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x21dc('0xb'));var _=require(_0x21dc('0xc'));var squel=require(_0x21dc('0xd'));var crypto=require(_0x21dc('0xe'));var jsforce=require(_0x21dc('0xf'));var deskjs=require(_0x21dc('0x10'));var toCsv=require('to-csv');var querystring=require(_0x21dc('0x11'));var Papa=require(_0x21dc('0x12'));var Redis=require(_0x21dc('0x13'));var authService=require(_0x21dc('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x21dc('0x15'))(_0x21dc('0x16'));var utils=require('../../config/utils');var config=require(_0x21dc('0x17'));var licenseUtil=require(_0x21dc('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x41998e,_0x4e1bed){_0x4e1bed=_0x4e1bed||0xcc;return function(_0x2d0e2e){if(_0x2d0e2e){return _0x41998e[_0x21dc('0x19')](_0x4e1bed);}return _0x41998e[_0x21dc('0x1a')](_0x4e1bed)['end']();};}function respondWithResult(_0x101ac4,_0x228599){_0x228599=_0x228599||0xc8;return function(_0x55c591){if(_0x55c591){return _0x101ac4['status'](_0x228599)['json'](_0x55c591);}};}function respondWithFilteredResult(_0x6fc599,_0x55096f){return function(_0x2fcf2e){if(_0x2fcf2e){var _0x37267c=typeof _0x55096f[_0x21dc('0x1b')]===_0x21dc('0x1c')&&typeof _0x55096f[_0x21dc('0x1d')]===_0x21dc('0x1c');var _0x1b4f02=_0x2fcf2e[_0x21dc('0x1e')];var _0x50da3c=_0x37267c?0x0:_0x55096f[_0x21dc('0x1b')];var _0x3c885f=_0x37267c?_0x2fcf2e[_0x21dc('0x1e')]:_0x55096f[_0x21dc('0x1b')]+_0x55096f[_0x21dc('0x1d')];var _0x1c5d33;if(_0x3c885f>=_0x1b4f02){_0x3c885f=_0x1b4f02;_0x1c5d33=0xc8;}else{_0x1c5d33=0xce;}_0x6fc599[_0x21dc('0x1a')](_0x1c5d33);return _0x6fc599['set'](_0x21dc('0x1f'),_0x50da3c+'-'+_0x3c885f+'/'+_0x1b4f02)[_0x21dc('0x20')](_0x2fcf2e);}return null;};}function patchUpdates(_0x44982b){return function(_0x1b4cf7){try{jsonpatch['apply'](_0x1b4cf7,_0x44982b,!![]);}catch(_0x50b710){return BPromise[_0x21dc('0x21')](_0x50b710);}return _0x1b4cf7[_0x21dc('0x22')]();};}function saveUpdates(_0x37bac2,_0x49fa1b){return function(_0x5ac66b){if(_0x5ac66b){return _0x5ac66b[_0x21dc('0x23')](_0x37bac2)['then'](function(_0x2b2322){return _0x2b2322;});}return null;};}function removeEntity(_0x401e7b,_0x31498f){return function(_0x350cf2){if(_0x350cf2){return _0x350cf2[_0x21dc('0x24')]()[_0x21dc('0x25')](function(){_0x401e7b[_0x21dc('0x1a')](0xcc)[_0x21dc('0x26')]();});}};}function handleEntityNotFound(_0x18fc07,_0x5a9584){return function(_0x167e5a){if(!_0x167e5a){_0x18fc07[_0x21dc('0x19')](0x194);}return _0x167e5a;};}function handleError(_0x129b71,_0x32679a){_0x32679a=_0x32679a||0x1f4;return function(_0x57560f){logger['error'](_0x57560f[_0x21dc('0x27')]);if(_0x57560f['name']){delete _0x57560f[_0x21dc('0x28')];}_0x129b71[_0x21dc('0x1a')](_0x32679a)[_0x21dc('0x29')](_0x57560f);};}exports[_0x21dc('0x2a')]=function(_0x389b5b,_0x24dc7b){var _0x4f73d9={},_0x532d51={},_0xfa62cc={'count':0x0,'rows':[]};var _0x219f54=_[_0x21dc('0x2b')](db[_0x21dc('0x2c')][_0x21dc('0x2d')],function(_0x4bf41a){return{'name':_0x4bf41a[_0x21dc('0x2e')],'type':_0x4bf41a['type'][_0x21dc('0x2f')]};});_0x532d51['model']=_[_0x21dc('0x2b')](_0x219f54,_0x21dc('0x28'));_0x532d51[_0x21dc('0x30')]=_['keys'](_0x389b5b[_0x21dc('0x30')]);_0x532d51[_0x21dc('0x31')]=_['intersection'](_0x532d51[_0x21dc('0x32')],_0x532d51[_0x21dc('0x30')]);_0x4f73d9[_0x21dc('0x33')]=_[_0x21dc('0x34')](_0x532d51[_0x21dc('0x32')],qs['fields'](_0x389b5b['query'][_0x21dc('0x35')]));_0x4f73d9['attributes']=_0x4f73d9[_0x21dc('0x33')][_0x21dc('0x36')]?_0x4f73d9['attributes']:_0x532d51[_0x21dc('0x32')];if(!_0x389b5b[_0x21dc('0x30')][_0x21dc('0x37')](_0x21dc('0x38'))){_0x4f73d9[_0x21dc('0x1d')]=qs[_0x21dc('0x1d')](_0x389b5b['query'][_0x21dc('0x1d')]);_0x4f73d9[_0x21dc('0x1b')]=qs[_0x21dc('0x1b')](_0x389b5b[_0x21dc('0x30')][_0x21dc('0x1b')]);}_0x4f73d9[_0x21dc('0x39')]=qs['sort'](_0x389b5b['query'][_0x21dc('0x3a')]);_0x4f73d9[_0x21dc('0x3b')]=qs['filters'](_['pick'](_0x389b5b[_0x21dc('0x30')],_0x532d51[_0x21dc('0x31')]),_0x219f54);if(_0x389b5b[_0x21dc('0x30')][_0x21dc('0x3c')]){_0x4f73d9[_0x21dc('0x3b')]=_['merge'](_0x4f73d9[_0x21dc('0x3b')],{'$or':_[_0x21dc('0x2b')](_0x219f54,function(_0x105688){if(_0x105688['type']!==_0x21dc('0x3d')){var _0x511dd4={};_0x511dd4[_0x105688['name']]={'$like':'%'+_0x389b5b[_0x21dc('0x30')][_0x21dc('0x3c')]+'%'};return _0x511dd4;}})});}_0x4f73d9=_['merge']({},_0x4f73d9,_0x389b5b['options']);var _0x349fb0={'where':_0x4f73d9[_0x21dc('0x3b')]};return db[_0x21dc('0x2c')][_0x21dc('0x1e')](_0x349fb0)[_0x21dc('0x25')](function(_0x16c287){_0xfa62cc[_0x21dc('0x1e')]=_0x16c287;if(_0x389b5b[_0x21dc('0x30')]['includeAll']){_0x4f73d9['include']=[{'all':!![]}];}return db[_0x21dc('0x2c')]['findAll'](_0x4f73d9);})['then'](function(_0x45fb26){_0xfa62cc['rows']=_0x45fb26;return _0xfa62cc;})[_0x21dc('0x25')](respondWithFilteredResult(_0x24dc7b,_0x4f73d9))[_0x21dc('0x3e')](handleError(_0x24dc7b,null));};exports[_0x21dc('0x3f')]=function(_0x4d85a7,_0x18bb4f){var _0x520ccb={'raw':!![],'where':{'id':_0x4d85a7[_0x21dc('0x40')]['id']}},_0x2ed4a9={};_0x2ed4a9[_0x21dc('0x32')]=_[_0x21dc('0x41')](db['SmsQueueReport']['rawAttributes']);_0x2ed4a9[_0x21dc('0x30')]=_['keys'](_0x4d85a7[_0x21dc('0x30')]);_0x2ed4a9['filters']=_[_0x21dc('0x34')](_0x2ed4a9[_0x21dc('0x32')],_0x2ed4a9['query']);_0x520ccb[_0x21dc('0x33')]=_['intersection'](_0x2ed4a9[_0x21dc('0x32')],qs[_0x21dc('0x35')](_0x4d85a7['query'][_0x21dc('0x35')]));_0x520ccb['attributes']=_0x520ccb[_0x21dc('0x33')][_0x21dc('0x36')]?_0x520ccb['attributes']:_0x2ed4a9[_0x21dc('0x32')];if(_0x4d85a7[_0x21dc('0x30')][_0x21dc('0x42')]){_0x520ccb[_0x21dc('0x43')]=[{'all':!![]}];}_0x520ccb=_[_0x21dc('0x44')]({},_0x520ccb,_0x4d85a7[_0x21dc('0x45')]);return db['SmsQueueReport'][_0x21dc('0x46')](_0x520ccb)[_0x21dc('0x25')](handleEntityNotFound(_0x18bb4f,null))[_0x21dc('0x25')](respondWithResult(_0x18bb4f,null))[_0x21dc('0x3e')](handleError(_0x18bb4f,null));};exports[_0x21dc('0x47')]=function(_0x408907,_0x4b060a){return db['SmsQueueReport']['create'](_0x408907[_0x21dc('0x48')],{})[_0x21dc('0x25')](respondWithResult(_0x4b060a,0xc9))[_0x21dc('0x3e')](handleError(_0x4b060a,null));};exports[_0x21dc('0x23')]=function(_0x1d565b,_0x4f6644){if(_0x1d565b[_0x21dc('0x48')]['id']){delete _0x1d565b[_0x21dc('0x48')]['id'];}return db[_0x21dc('0x2c')]['find']({'where':{'id':_0x1d565b['params']['id']}})['then'](handleEntityNotFound(_0x4f6644,null))[_0x21dc('0x25')](saveUpdates(_0x1d565b[_0x21dc('0x48')],null))[_0x21dc('0x25')](respondWithResult(_0x4f6644,null))[_0x21dc('0x3e')](handleError(_0x4f6644,null));};exports['destroy']=function(_0x3e2f05,_0xbd9144){return db[_0x21dc('0x2c')]['find']({'where':{'id':_0x3e2f05[_0x21dc('0x40')]['id']}})[_0x21dc('0x25')](handleEntityNotFound(_0xbd9144,null))[_0x21dc('0x25')](removeEntity(_0xbd9144,null))[_0x21dc('0x3e')](handleError(_0xbd9144,null));};exports[_0x21dc('0x49')]=function(_0x1fb39c,_0x163e46){return db['SmsQueueReport'][_0x21dc('0x49')]()[_0x21dc('0x25')](respondWithResult(_0x163e46,null))['catch'](handleError(_0x163e46,null));};
\ No newline at end of file
+var _0x4db9=['desk.js','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','error','name','send','map','SmsQueueReport','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','update','body','destroy','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce'];(function(_0x2ffd5d,_0x3384b2){var _0x2d7d6e=function(_0x175cbd){while(--_0x175cbd){_0x2ffd5d['push'](_0x2ffd5d['shift']());}};_0x2d7d6e(++_0x3384b2);}(_0x4db9,0x11e));var _0x94db=function(_0xab9f3d,_0xb336fa){_0xab9f3d=_0xab9f3d-0x0;var _0x5283bf=_0x4db9[_0xab9f3d];return _0x5283bf;};'use strict';var emlformat=require(_0x94db('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x94db('0x1'));var jsonpatch=require(_0x94db('0x2'));var rp=require('request-promise');var moment=require(_0x94db('0x3'));var BPromise=require(_0x94db('0x4'));var Mustache=require('mustache');var util=require(_0x94db('0x5'));var path=require(_0x94db('0x6'));var sox=require(_0x94db('0x7'));var csv=require(_0x94db('0x8'));var ejs=require(_0x94db('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x94db('0xa'));var squel=require(_0x94db('0xb'));var crypto=require(_0x94db('0xc'));var jsforce=require(_0x94db('0xd'));var deskjs=require(_0x94db('0xe'));var toCsv=require(_0x94db('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x94db('0xf'));var authService=require(_0x94db('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x94db('0x11'));var logger=require(_0x94db('0x12'))(_0x94db('0x13'));var utils=require(_0x94db('0x14'));var config=require(_0x94db('0x15'));var licenseUtil=require(_0x94db('0x16'));var db=require(_0x94db('0x17'))['db'];function respondWithStatusCode(_0x4b35c1,_0x22f904){_0x22f904=_0x22f904||0xcc;return function(_0x20c739){if(_0x20c739){return _0x4b35c1[_0x94db('0x18')](_0x22f904);}return _0x4b35c1[_0x94db('0x19')](_0x22f904)[_0x94db('0x1a')]();};}function respondWithResult(_0x1528cf,_0x595869){_0x595869=_0x595869||0xc8;return function(_0x2ad379){if(_0x2ad379){return _0x1528cf[_0x94db('0x19')](_0x595869)['json'](_0x2ad379);}};}function respondWithFilteredResult(_0x55812f,_0x10f3c7){return function(_0x364cb9){if(_0x364cb9){var _0xda873=typeof _0x10f3c7[_0x94db('0x1b')]===_0x94db('0x1c')&&typeof _0x10f3c7[_0x94db('0x1d')]===_0x94db('0x1c');var _0x344a19=_0x364cb9['count'];var _0x305e10=_0xda873?0x0:_0x10f3c7[_0x94db('0x1b')];var _0x6574ec=_0xda873?_0x364cb9[_0x94db('0x1e')]:_0x10f3c7[_0x94db('0x1b')]+_0x10f3c7[_0x94db('0x1d')];var _0x2a7f5d;if(_0x6574ec>=_0x344a19){_0x6574ec=_0x344a19;_0x2a7f5d=0xc8;}else{_0x2a7f5d=0xce;}_0x55812f[_0x94db('0x19')](_0x2a7f5d);return _0x55812f[_0x94db('0x1f')](_0x94db('0x20'),_0x305e10+'-'+_0x6574ec+'/'+_0x344a19)[_0x94db('0x21')](_0x364cb9);}return null;};}function patchUpdates(_0x4cafe9){return function(_0x15bc7a){try{jsonpatch[_0x94db('0x22')](_0x15bc7a,_0x4cafe9,!![]);}catch(_0x44e8ed){return BPromise[_0x94db('0x23')](_0x44e8ed);}return _0x15bc7a[_0x94db('0x24')]();};}function saveUpdates(_0x2ffb6d,_0x24a5fd){return function(_0x2c7d40){if(_0x2c7d40){return _0x2c7d40['update'](_0x2ffb6d)['then'](function(_0x43c40a){return _0x43c40a;});}return null;};}function removeEntity(_0x5e6e3a,_0x1cc5df){return function(_0x59920c){if(_0x59920c){return _0x59920c['destroy']()[_0x94db('0x25')](function(){_0x5e6e3a[_0x94db('0x19')](0xcc)[_0x94db('0x1a')]();});}};}function handleEntityNotFound(_0x280e62,_0x476253){return function(_0x2c46c6){if(!_0x2c46c6){_0x280e62[_0x94db('0x18')](0x194);}return _0x2c46c6;};}function handleError(_0x147fdd,_0x9962bf){_0x9962bf=_0x9962bf||0x1f4;return function(_0x57b1eb){logger[_0x94db('0x26')](_0x57b1eb['stack']);if(_0x57b1eb['name']){delete _0x57b1eb[_0x94db('0x27')];}_0x147fdd[_0x94db('0x19')](_0x9962bf)[_0x94db('0x28')](_0x57b1eb);};}exports['index']=function(_0x41b164,_0x42b89d){var _0x21f3b4={},_0x4a99c8={},_0x38ee8e={'count':0x0,'rows':[]};var _0x435161=_[_0x94db('0x29')](db[_0x94db('0x2a')][_0x94db('0x2b')],function(_0x5bb879){return{'name':_0x5bb879[_0x94db('0x2c')],'type':_0x5bb879['type'][_0x94db('0x2d')]};});_0x4a99c8[_0x94db('0x2e')]=_['map'](_0x435161,_0x94db('0x27'));_0x4a99c8['query']=_[_0x94db('0x2f')](_0x41b164[_0x94db('0x30')]);_0x4a99c8[_0x94db('0x31')]=_[_0x94db('0x32')](_0x4a99c8[_0x94db('0x2e')],_0x4a99c8['query']);_0x21f3b4[_0x94db('0x33')]=_[_0x94db('0x32')](_0x4a99c8[_0x94db('0x2e')],qs[_0x94db('0x34')](_0x41b164[_0x94db('0x30')][_0x94db('0x34')]));_0x21f3b4[_0x94db('0x33')]=_0x21f3b4[_0x94db('0x33')][_0x94db('0x35')]?_0x21f3b4[_0x94db('0x33')]:_0x4a99c8[_0x94db('0x2e')];if(!_0x41b164[_0x94db('0x30')][_0x94db('0x36')](_0x94db('0x37'))){_0x21f3b4['limit']=qs[_0x94db('0x1d')](_0x41b164['query'][_0x94db('0x1d')]);_0x21f3b4[_0x94db('0x1b')]=qs[_0x94db('0x1b')](_0x41b164['query']['offset']);}_0x21f3b4['order']=qs[_0x94db('0x38')](_0x41b164['query'][_0x94db('0x38')]);_0x21f3b4[_0x94db('0x39')]=qs[_0x94db('0x31')](_['pick'](_0x41b164[_0x94db('0x30')],_0x4a99c8['filters']),_0x435161);if(_0x41b164[_0x94db('0x30')][_0x94db('0x3a')]){_0x21f3b4[_0x94db('0x39')]=_[_0x94db('0x3b')](_0x21f3b4[_0x94db('0x39')],{'$or':_[_0x94db('0x29')](_0x435161,function(_0x300ecd){if(_0x300ecd[_0x94db('0x3c')]!==_0x94db('0x3d')){var _0x5b9aaf={};_0x5b9aaf[_0x300ecd[_0x94db('0x27')]]={'$like':'%'+_0x41b164['query'][_0x94db('0x3a')]+'%'};return _0x5b9aaf;}})});}_0x21f3b4=_[_0x94db('0x3b')]({},_0x21f3b4,_0x41b164[_0x94db('0x3e')]);var _0x4dad32={'where':_0x21f3b4['where']};return db[_0x94db('0x2a')]['count'](_0x4dad32)[_0x94db('0x25')](function(_0x11a020){_0x38ee8e[_0x94db('0x1e')]=_0x11a020;if(_0x41b164[_0x94db('0x30')][_0x94db('0x3f')]){_0x21f3b4[_0x94db('0x40')]=[{'all':!![]}];}return db['SmsQueueReport'][_0x94db('0x41')](_0x21f3b4);})[_0x94db('0x25')](function(_0x1ad54e){_0x38ee8e['rows']=_0x1ad54e;return _0x38ee8e;})[_0x94db('0x25')](respondWithFilteredResult(_0x42b89d,_0x21f3b4))[_0x94db('0x42')](handleError(_0x42b89d,null));};exports[_0x94db('0x43')]=function(_0x240683,_0x12ac50){var _0x1753ba={'raw':!![],'where':{'id':_0x240683[_0x94db('0x44')]['id']}},_0x217a53={};_0x217a53['model']=_[_0x94db('0x2f')](db[_0x94db('0x2a')][_0x94db('0x2b')]);_0x217a53[_0x94db('0x30')]=_[_0x94db('0x2f')](_0x240683['query']);_0x217a53[_0x94db('0x31')]=_[_0x94db('0x32')](_0x217a53[_0x94db('0x2e')],_0x217a53['query']);_0x1753ba['attributes']=_[_0x94db('0x32')](_0x217a53[_0x94db('0x2e')],qs[_0x94db('0x34')](_0x240683[_0x94db('0x30')]['fields']));_0x1753ba['attributes']=_0x1753ba[_0x94db('0x33')][_0x94db('0x35')]?_0x1753ba[_0x94db('0x33')]:_0x217a53[_0x94db('0x2e')];if(_0x240683[_0x94db('0x30')][_0x94db('0x3f')]){_0x1753ba[_0x94db('0x40')]=[{'all':!![]}];}_0x1753ba=_['merge']({},_0x1753ba,_0x240683[_0x94db('0x3e')]);return db[_0x94db('0x2a')][_0x94db('0x45')](_0x1753ba)[_0x94db('0x25')](handleEntityNotFound(_0x12ac50,null))[_0x94db('0x25')](respondWithResult(_0x12ac50,null))[_0x94db('0x42')](handleError(_0x12ac50,null));};exports['create']=function(_0x414c40,_0xc06757){return db[_0x94db('0x2a')][_0x94db('0x46')](_0x414c40['body'],{})[_0x94db('0x25')](respondWithResult(_0xc06757,0xc9))[_0x94db('0x42')](handleError(_0xc06757,null));};exports[_0x94db('0x47')]=function(_0x15ef5b,_0x5e430f){if(_0x15ef5b[_0x94db('0x48')]['id']){delete _0x15ef5b['body']['id'];}return db[_0x94db('0x2a')][_0x94db('0x45')]({'where':{'id':_0x15ef5b[_0x94db('0x44')]['id']}})[_0x94db('0x25')](handleEntityNotFound(_0x5e430f,null))[_0x94db('0x25')](saveUpdates(_0x15ef5b[_0x94db('0x48')],null))[_0x94db('0x25')](respondWithResult(_0x5e430f,null))[_0x94db('0x42')](handleError(_0x5e430f,null));};exports[_0x94db('0x49')]=function(_0x4067e5,_0x3caf84){return db[_0x94db('0x2a')][_0x94db('0x45')]({'where':{'id':_0x4067e5[_0x94db('0x44')]['id']}})['then'](handleEntityNotFound(_0x3caf84,null))[_0x94db('0x25')](removeEntity(_0x3caf84,null))[_0x94db('0x42')](handleError(_0x3caf84,null));};exports['describe']=function(_0xbecab0,_0x283bce){return db['SmsQueueReport'][_0x94db('0x4a')]()['then'](respondWithResult(_0x283bce,null))[_0x94db('0x42')](handleError(_0x283bce,null));};
\ No newline at end of file
index 3565546..fb5a901 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','define','SmsQueueReport','uniqueid','lodash'];(function(_0x3123d7,_0x20d651){var _0x5ec935=function(_0x563ee3){while(--_0x563ee3){_0x3123d7['push'](_0x3123d7['shift']());}};_0x5ec935(++_0x20d651);}(_0xb7e7,0x121));var _0x7b7e=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xb7e7[_0x1da04e];return _0xdd8c41;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));module['exports']=function(_0x53ed64,_0x333fa4){return _0x53ed64[_0x7b7e('0x7')](_0x7b7e('0x8'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','exports','define','SmsQueueReport','report_sms_queue','uniqueid'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var moment=require(_0x3071('0x2'));var BPromise=require(_0x3071('0x3'));var rp=require(_0x3071('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var attributes=require(_0x3071('0x7'));module[_0x3071('0x8')]=function(_0xabd7b6,_0x41cf76){return _0xabd7b6[_0x3071('0x9')](_0x3071('0xa'),attributes,{'tableName':_0x3071('0xb'),'paranoid':![],'indexes':[{'name':_0x3071('0xc'),'fields':[_0x3071('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index e3c9cfa..2f96b73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e07=['moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSmsQueueReport','SmsQueueReport','create','options','raw','UpdateSmsQueueReport','update','body','where','limit','lodash','util'];(function(_0x4374d2,_0x9133db){var _0xbd521=function(_0x3cdb9f){while(--_0x3cdb9f){_0x4374d2['push'](_0x4374d2['shift']());}};_0xbd521(++_0x9133db);}(_0x0e07,0x15e));var _0x70e0=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x0e07[_0x1d1779];return _0x2377e9;};'use strict';var _=require(_0x70e0('0x0'));var util=require(_0x70e0('0x1'));var moment=require(_0x70e0('0x2'));var BPromise=require(_0x70e0('0x3'));var rs=require(_0x70e0('0x4'));var fs=require('fs');var Redis=require(_0x70e0('0x5'));var db=require(_0x70e0('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x70e0('0x7'));var config=require(_0x70e0('0x8'));var jayson=require(_0x70e0('0x9'));var client=jayson[_0x70e0('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4fd4b3,_0xa22722,_0x498be1){return new BPromise(function(_0x232d3b,_0x4f9bd0){return client['request'](_0x4fd4b3,_0x498be1)[_0x70e0('0xb')](function(_0x5a82ac){logger[_0x70e0('0xc')](_0x70e0('0xd'),_0xa22722,_0x70e0('0xe'));logger[_0x70e0('0xf')](_0x70e0('0x10'),_0xa22722,_0x70e0('0xe'),JSON[_0x70e0('0x11')](_0x5a82ac));if(_0x5a82ac[_0x70e0('0x12')]){if(_0x5a82ac[_0x70e0('0x12')]['code']===0x1f4){logger[_0x70e0('0x12')](_0x70e0('0xd'),_0xa22722,_0x5a82ac[_0x70e0('0x12')][_0x70e0('0x13')]);return _0x4f9bd0(_0x5a82ac[_0x70e0('0x12')][_0x70e0('0x13')]);}logger[_0x70e0('0x12')](_0x70e0('0xd'),_0xa22722,_0x5a82ac[_0x70e0('0x12')][_0x70e0('0x13')]);return _0x232d3b(_0x5a82ac['error']['message']);}else{logger[_0x70e0('0xc')]('SmsQueueReport,\x20%s,\x20%s',_0xa22722,_0x70e0('0xe'));_0x232d3b(_0x5a82ac[_0x70e0('0x14')]['message']);}})[_0x70e0('0x15')](function(_0x1cab60){logger[_0x70e0('0x12')]('SmsQueueReport,\x20%s,\x20%s',_0xa22722,_0x1cab60);_0x4f9bd0(_0x1cab60);});});}exports[_0x70e0('0x16')]=function(_0x45b0c5){var _0x3b62b1=this;return new Promise(function(_0x5a68a5,_0x36bab6){return db[_0x70e0('0x17')][_0x70e0('0x18')](_0x45b0c5['body'],{'raw':_0x45b0c5[_0x70e0('0x19')]?_0x45b0c5[_0x70e0('0x19')][_0x70e0('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x707ca5){logger[_0x70e0('0xc')](_0x70e0('0x16'),_0x45b0c5);logger['debug'](_0x70e0('0x16'),_0x45b0c5,JSON[_0x70e0('0x11')](_0x707ca5));_0x5a68a5(_0x707ca5);})[_0x70e0('0x15')](function(_0x333384){logger['error']('CreateSmsQueueReport',_0x333384[_0x70e0('0x13')],_0x45b0c5);_0x36bab6(_0x3b62b1[_0x70e0('0x12')](0x1f4,_0x333384[_0x70e0('0x13')]));});});};exports[_0x70e0('0x1b')]=function(_0x2bc1c3){var _0x47b0bb=this;return new Promise(function(_0x57732e,_0x20f8ea){return db['SmsQueueReport'][_0x70e0('0x1c')](_0x2bc1c3[_0x70e0('0x1d')],{'raw':_0x2bc1c3['options']?_0x2bc1c3[_0x70e0('0x19')][_0x70e0('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2bc1c3['options']?_0x2bc1c3[_0x70e0('0x19')][_0x70e0('0x1e')]||null:null,'attributes':_0x2bc1c3['options']?_0x2bc1c3['options']['attributes']||null:null,'limit':_0x2bc1c3['options']?_0x2bc1c3['options'][_0x70e0('0x1f')]||null:null})[_0x70e0('0xb')](function(_0xba71ab){logger['info'](_0x70e0('0x1b'),_0x2bc1c3);logger[_0x70e0('0xf')](_0x70e0('0x1b'),_0x2bc1c3,JSON['stringify'](_0xba71ab));_0x57732e(_0xba71ab);})[_0x70e0('0x15')](function(_0x49ea6a){logger[_0x70e0('0x12')](_0x70e0('0x1b'),_0x49ea6a[_0x70e0('0x13')],_0x2bc1c3);_0x20f8ea(_0x47b0bb[_0x70e0('0x12')](0x1f4,_0x49ea6a[_0x70e0('0x13')]));});});};
\ No newline at end of file
+var _0x2506=['rpc','client','http','then','info','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsQueueReport,\x20%s,\x20%s','message','result','catch','CreateSmsQueueReport','SmsQueueReport','create','body','options','raw','UpdateSmsQueueReport','update','limit','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x2506,0x16d));var _0x6250=function(_0x1f6ffe,_0x4a31ee){_0x1f6ffe=_0x1f6ffe-0x0;var _0x153b4c=_0x2506[_0x1f6ffe];return _0x153b4c;};'use strict';var _=require(_0x6250('0x0'));var util=require(_0x6250('0x1'));var moment=require(_0x6250('0x2'));var BPromise=require('bluebird');var rs=require(_0x6250('0x3'));var fs=require('fs');var Redis=require(_0x6250('0x4'));var db=require(_0x6250('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6250('0x6'))(_0x6250('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6250('0x8')][_0x6250('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x25d45e,_0x2108da,_0x2d70df){return new BPromise(function(_0x5cd38a,_0x3c54fc){return client['request'](_0x25d45e,_0x2d70df)[_0x6250('0xa')](function(_0x5ed2fe){logger[_0x6250('0xb')]('SmsQueueReport,\x20%s,\x20%s',_0x2108da,_0x6250('0xc'));logger[_0x6250('0xd')](_0x6250('0xe'),_0x2108da,_0x6250('0xc'),JSON[_0x6250('0xf')](_0x5ed2fe));if(_0x5ed2fe[_0x6250('0x10')]){if(_0x5ed2fe[_0x6250('0x10')][_0x6250('0x11')]===0x1f4){logger[_0x6250('0x10')](_0x6250('0x12'),_0x2108da,_0x5ed2fe[_0x6250('0x10')][_0x6250('0x13')]);return _0x3c54fc(_0x5ed2fe[_0x6250('0x10')][_0x6250('0x13')]);}logger['error']('SmsQueueReport,\x20%s,\x20%s',_0x2108da,_0x5ed2fe[_0x6250('0x10')][_0x6250('0x13')]);return _0x5cd38a(_0x5ed2fe[_0x6250('0x10')][_0x6250('0x13')]);}else{logger['info'](_0x6250('0x12'),_0x2108da,'request\x20sent');_0x5cd38a(_0x5ed2fe[_0x6250('0x14')][_0x6250('0x13')]);}})[_0x6250('0x15')](function(_0x3b5efd){logger['error'](_0x6250('0x12'),_0x2108da,_0x3b5efd);_0x3c54fc(_0x3b5efd);});});}exports[_0x6250('0x16')]=function(_0x494c0b){var _0x3aedf7=this;return new Promise(function(_0x66de8f,_0x5d570d){return db[_0x6250('0x17')][_0x6250('0x18')](_0x494c0b[_0x6250('0x19')],{'raw':_0x494c0b[_0x6250('0x1a')]?_0x494c0b[_0x6250('0x1a')][_0x6250('0x1b')]===undefined?!![]:![]:!![]})[_0x6250('0xa')](function(_0x341656){logger[_0x6250('0xb')](_0x6250('0x16'),_0x494c0b);logger['debug'](_0x6250('0x16'),_0x494c0b,JSON['stringify'](_0x341656));_0x66de8f(_0x341656);})[_0x6250('0x15')](function(_0x1c3906){logger[_0x6250('0x10')](_0x6250('0x16'),_0x1c3906['message'],_0x494c0b);_0x5d570d(_0x3aedf7[_0x6250('0x10')](0x1f4,_0x1c3906['message']));});});};exports[_0x6250('0x1c')]=function(_0x35b9d0){var _0x53d025=this;return new Promise(function(_0x597c0b,_0x367857){return db[_0x6250('0x17')][_0x6250('0x1d')](_0x35b9d0['body'],{'raw':_0x35b9d0[_0x6250('0x1a')]?_0x35b9d0['options'][_0x6250('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x35b9d0[_0x6250('0x1a')]?_0x35b9d0['options']['where']||null:null,'attributes':_0x35b9d0[_0x6250('0x1a')]?_0x35b9d0['options']['attributes']||null:null,'limit':_0x35b9d0['options']?_0x35b9d0[_0x6250('0x1a')][_0x6250('0x1e')]||null:null})[_0x6250('0xa')](function(_0x3d9f2e){logger[_0x6250('0xb')](_0x6250('0x1c'),_0x35b9d0);logger[_0x6250('0xd')](_0x6250('0x1c'),_0x35b9d0,JSON[_0x6250('0xf')](_0x3d9f2e));_0x597c0b(_0x3d9f2e);})['catch'](function(_0x4dfc37){logger[_0x6250('0x10')](_0x6250('0x1c'),_0x4dfc37[_0x6250('0x13')],_0x35b9d0);_0x367857(_0x53d025[_0x6250('0x10')](0x1f4,_0x4dfc37[_0x6250('0x13')]));});});};
\ No newline at end of file
index ed1cda6..df430fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c17=['Router','fs-extra','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get','index','/describe','isAuthenticated','describe','show','post','create','put','/:id','delete','destroy','multer','path','express'];(function(_0x3725cd,_0x193297){var _0x2d0482=function(_0x4dee7a){while(--_0x4dee7a){_0x3725cd['push'](_0x3725cd['shift']());}};_0x2d0482(++_0x193297);}(_0x3c17,0x1a1));var _0x73c1=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0x3c17[_0x3635ce];return _0x97ecd0;};'use strict';var multer=require(_0x73c1('0x0'));var util=require('util');var path=require(_0x73c1('0x1'));var timeout=require('connect-timeout');var express=require(_0x73c1('0x2'));var router=express[_0x73c1('0x3')]();var fs_extra=require(_0x73c1('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x73c1('0x5'));var config=require(_0x73c1('0x6'));var controller=require(_0x73c1('0x7'));router[_0x73c1('0x8')]('/',auth['isAuthenticated'](),controller[_0x73c1('0x9')]);router['get'](_0x73c1('0xa'),auth[_0x73c1('0xb')](),controller[_0x73c1('0xc')]);router['get']('/:id',auth[_0x73c1('0xb')](),controller[_0x73c1('0xd')]);router[_0x73c1('0xe')]('/',auth[_0x73c1('0xb')](),controller[_0x73c1('0xf')]);router[_0x73c1('0x10')](_0x73c1('0x11'),auth['isAuthenticated'](),controller['update']);router[_0x73c1('0x12')](_0x73c1('0x11'),auth[_0x73c1('0xb')](),controller[_0x73c1('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x7da7=['Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','describe','/:id','post','create','update','delete','destroy','exports','multer','util','path'];(function(_0x353204,_0x3ea389){var _0x53b2a6=function(_0x217298){while(--_0x217298){_0x353204['push'](_0x353204['shift']());}};_0x53b2a6(++_0x3ea389);}(_0x7da7,0x10d));var _0x77da=function(_0x1034ee,_0x12998c){_0x1034ee=_0x1034ee-0x0;var _0x2922af=_0x7da7[_0x1034ee];return _0x2922af;};'use strict';var multer=require(_0x77da('0x0'));var util=require(_0x77da('0x1'));var path=require(_0x77da('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x77da('0x3')]();var fs_extra=require(_0x77da('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x77da('0x5'));var config=require(_0x77da('0x6'));var controller=require('./smsTransferReport.controller');router[_0x77da('0x7')]('/',auth[_0x77da('0x8')](),controller['index']);router[_0x77da('0x7')]('/describe',auth[_0x77da('0x8')](),controller[_0x77da('0x9')]);router[_0x77da('0x7')](_0x77da('0xa'),auth[_0x77da('0x8')](),controller['show']);router[_0x77da('0xb')]('/',auth[_0x77da('0x8')](),controller[_0x77da('0xc')]);router['put'](_0x77da('0xa'),auth[_0x77da('0x8')](),controller[_0x77da('0xd')]);router[_0x77da('0xe')]('/:id',auth[_0x77da('0x8')](),controller[_0x77da('0xf')]);module[_0x77da('0x10')]=router;
\ No newline at end of file
index 704396f..926216c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['ENUM','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x3e6188,_0xd8d390){var _0x47bfe6=function(_0x317c58){while(--_0x317c58){_0x3e6188['push'](_0x3e6188['shift']());}};_0x47bfe6(++_0xd8d390);}(_0x008c,0x188));var _0xc008=function(_0x24e747,_0x2d5368){_0x24e747=_0x24e747-0x0;var _0x2e2f66=_0x008c[_0x24e747];return _0x2e2f66;};'use strict';var moment=require(_0xc008('0x0'));var Sequelize=require(_0xc008('0x1'));module[_0xc008('0x2')]={'uniqueid':{'type':Sequelize[_0xc008('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xc008('0x4')]('account',_0xc008('0x5'),_0xc008('0x6')),'allowNull':![],'defaultValue':_0xc008('0x6')},'transferredAt':{'type':Sequelize[_0xc008('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xc008('0x8')]}};
\ No newline at end of file
+var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x7d3a29,_0x5c399a){var _0x85521e=function(_0x59d065){while(--_0x59d065){_0x7d3a29['push'](_0x7d3a29['shift']());}};_0x85521e(++_0x5c399a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'use strict';var moment=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x0a9e('0x3'),'agent',_0x0a9e('0x4')),'allowNull':![],'defaultValue':_0x0a9e('0x4')},'transferredAt':{'type':Sequelize[_0x0a9e('0x5')],'allowNull':![],'defaultValue':Sequelize[_0x0a9e('0x6')]}};
\ No newline at end of file
index 66d3d0f..99437bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9eb=['Content-Range','json','apply','update','destroy','error','stack','name','send','map','SmsTransferReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','count','then','include','rows','catch','show','params','length','includeAll','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','set'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xc9eb,0xff));var _0xbc9e=function(_0x30b871,_0x7054bd){_0x30b871=_0x30b871-0x0;var _0x46444d=_0xc9eb[_0x30b871];return _0x46444d;};'use strict';var emlformat=require(_0xbc9e('0x0'));var rimraf=require(_0xbc9e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbc9e('0x2'));var rp=require(_0xbc9e('0x3'));var moment=require('moment');var BPromise=require(_0xbc9e('0x4'));var Mustache=require(_0xbc9e('0x5'));var util=require('util');var path=require(_0xbc9e('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xbc9e('0x7'));var deskjs=require(_0xbc9e('0x8'));var toCsv=require('to-csv');var querystring=require(_0xbc9e('0x9'));var Papa=require(_0xbc9e('0xa'));var Redis=require(_0xbc9e('0xb'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xbc9e('0xc'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbc9e('0xd'))(_0xbc9e('0xe'));var utils=require(_0xbc9e('0xf'));var config=require(_0xbc9e('0x10'));var licenseUtil=require(_0xbc9e('0x11'));var db=require(_0xbc9e('0x12'))['db'];function respondWithStatusCode(_0x559b61,_0x2fbea1){_0x2fbea1=_0x2fbea1||0xcc;return function(_0x240822){if(_0x240822){return _0x559b61[_0xbc9e('0x13')](_0x2fbea1);}return _0x559b61[_0xbc9e('0x14')](_0x2fbea1)['end']();};}function respondWithResult(_0x1a6ef8,_0x31403e){_0x31403e=_0x31403e||0xc8;return function(_0x31f150){if(_0x31f150){return _0x1a6ef8[_0xbc9e('0x14')](_0x31403e)['json'](_0x31f150);}};}function respondWithFilteredResult(_0x1eb5e9,_0x256e9b){return function(_0x1ba813){if(_0x1ba813){var _0xafcd93=typeof _0x256e9b[_0xbc9e('0x15')]===_0xbc9e('0x16')&&typeof _0x256e9b[_0xbc9e('0x17')]==='undefined';var _0x9e321a=_0x1ba813['count'];var _0xc055e1=_0xafcd93?0x0:_0x256e9b['offset'];var _0x1bded4=_0xafcd93?_0x1ba813['count']:_0x256e9b[_0xbc9e('0x15')]+_0x256e9b[_0xbc9e('0x17')];var _0x2c58df;if(_0x1bded4>=_0x9e321a){_0x1bded4=_0x9e321a;_0x2c58df=0xc8;}else{_0x2c58df=0xce;}_0x1eb5e9[_0xbc9e('0x14')](_0x2c58df);return _0x1eb5e9[_0xbc9e('0x18')](_0xbc9e('0x19'),_0xc055e1+'-'+_0x1bded4+'/'+_0x9e321a)[_0xbc9e('0x1a')](_0x1ba813);}return null;};}function patchUpdates(_0x594f19){return function(_0x2dd6a5){try{jsonpatch[_0xbc9e('0x1b')](_0x2dd6a5,_0x594f19,!![]);}catch(_0x4fac73){return BPromise['reject'](_0x4fac73);}return _0x2dd6a5['save']();};}function saveUpdates(_0xa9067a,_0x5a85e5){return function(_0x6b898b){if(_0x6b898b){return _0x6b898b[_0xbc9e('0x1c')](_0xa9067a)['then'](function(_0x1e840a){return _0x1e840a;});}return null;};}function removeEntity(_0x137eab,_0x4944fe){return function(_0x54e131){if(_0x54e131){return _0x54e131[_0xbc9e('0x1d')]()['then'](function(){_0x137eab[_0xbc9e('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd2c3b7,_0x1c6f72){return function(_0x2b7d49){if(!_0x2b7d49){_0xd2c3b7[_0xbc9e('0x13')](0x194);}return _0x2b7d49;};}function handleError(_0x48dfb1,_0x5c3370){_0x5c3370=_0x5c3370||0x1f4;return function(_0x16ec4f){logger[_0xbc9e('0x1e')](_0x16ec4f[_0xbc9e('0x1f')]);if(_0x16ec4f[_0xbc9e('0x20')]){delete _0x16ec4f[_0xbc9e('0x20')];}_0x48dfb1[_0xbc9e('0x14')](_0x5c3370)[_0xbc9e('0x21')](_0x16ec4f);};}exports['index']=function(_0x2586c8,_0xd3732a){var _0x53e0b9={},_0x3c09a7={},_0x4898dc={'count':0x0,'rows':[]};var _0x3f421f=_[_0xbc9e('0x22')](db[_0xbc9e('0x23')][_0xbc9e('0x24')],function(_0x25b6d4){return{'name':_0x25b6d4[_0xbc9e('0x25')],'type':_0x25b6d4[_0xbc9e('0x26')][_0xbc9e('0x27')]};});_0x3c09a7['model']=_[_0xbc9e('0x22')](_0x3f421f,'name');_0x3c09a7[_0xbc9e('0x28')]=_[_0xbc9e('0x29')](_0x2586c8[_0xbc9e('0x28')]);_0x3c09a7[_0xbc9e('0x2a')]=_[_0xbc9e('0x2b')](_0x3c09a7['model'],_0x3c09a7[_0xbc9e('0x28')]);_0x53e0b9[_0xbc9e('0x2c')]=_['intersection'](_0x3c09a7[_0xbc9e('0x2d')],qs[_0xbc9e('0x2e')](_0x2586c8[_0xbc9e('0x28')][_0xbc9e('0x2e')]));_0x53e0b9[_0xbc9e('0x2c')]=_0x53e0b9[_0xbc9e('0x2c')]['length']?_0x53e0b9['attributes']:_0x3c09a7[_0xbc9e('0x2d')];if(!_0x2586c8[_0xbc9e('0x28')][_0xbc9e('0x2f')](_0xbc9e('0x30'))){_0x53e0b9[_0xbc9e('0x17')]=qs['limit'](_0x2586c8[_0xbc9e('0x28')]['limit']);_0x53e0b9[_0xbc9e('0x15')]=qs[_0xbc9e('0x15')](_0x2586c8[_0xbc9e('0x28')]['offset']);}_0x53e0b9[_0xbc9e('0x31')]=qs[_0xbc9e('0x32')](_0x2586c8[_0xbc9e('0x28')][_0xbc9e('0x32')]);_0x53e0b9['where']=qs['filters'](_[_0xbc9e('0x33')](_0x2586c8[_0xbc9e('0x28')],_0x3c09a7[_0xbc9e('0x2a')]),_0x3f421f);if(_0x2586c8['query'][_0xbc9e('0x34')]){_0x53e0b9[_0xbc9e('0x35')]=_['merge'](_0x53e0b9['where'],{'$or':_['map'](_0x3f421f,function(_0x41698f){if(_0x41698f[_0xbc9e('0x26')]!==_0xbc9e('0x36')){var _0x31378a={};_0x31378a[_0x41698f[_0xbc9e('0x20')]]={'$like':'%'+_0x2586c8[_0xbc9e('0x28')][_0xbc9e('0x34')]+'%'};return _0x31378a;}})});}_0x53e0b9=_[_0xbc9e('0x37')]({},_0x53e0b9,_0x2586c8[_0xbc9e('0x38')]);var _0x2cdda9={'where':_0x53e0b9[_0xbc9e('0x35')]};return db[_0xbc9e('0x23')][_0xbc9e('0x39')](_0x2cdda9)[_0xbc9e('0x3a')](function(_0x5b31a9){_0x4898dc[_0xbc9e('0x39')]=_0x5b31a9;if(_0x2586c8['query']['includeAll']){_0x53e0b9[_0xbc9e('0x3b')]=[{'all':!![]}];}return db[_0xbc9e('0x23')]['findAll'](_0x53e0b9);})[_0xbc9e('0x3a')](function(_0x23355b){_0x4898dc[_0xbc9e('0x3c')]=_0x23355b;return _0x4898dc;})['then'](respondWithFilteredResult(_0xd3732a,_0x53e0b9))[_0xbc9e('0x3d')](handleError(_0xd3732a,null));};exports[_0xbc9e('0x3e')]=function(_0x2aedc,_0x1f6761){var _0x5169f0={'raw':!![],'where':{'id':_0x2aedc[_0xbc9e('0x3f')]['id']}},_0x33f517={};_0x33f517[_0xbc9e('0x2d')]=_[_0xbc9e('0x29')](db['SmsTransferReport'][_0xbc9e('0x24')]);_0x33f517[_0xbc9e('0x28')]=_['keys'](_0x2aedc[_0xbc9e('0x28')]);_0x33f517[_0xbc9e('0x2a')]=_[_0xbc9e('0x2b')](_0x33f517['model'],_0x33f517['query']);_0x5169f0[_0xbc9e('0x2c')]=_[_0xbc9e('0x2b')](_0x33f517[_0xbc9e('0x2d')],qs['fields'](_0x2aedc[_0xbc9e('0x28')][_0xbc9e('0x2e')]));_0x5169f0['attributes']=_0x5169f0[_0xbc9e('0x2c')][_0xbc9e('0x40')]?_0x5169f0[_0xbc9e('0x2c')]:_0x33f517[_0xbc9e('0x2d')];if(_0x2aedc['query'][_0xbc9e('0x41')]){_0x5169f0[_0xbc9e('0x3b')]=[{'all':!![]}];}_0x5169f0=_[_0xbc9e('0x37')]({},_0x5169f0,_0x2aedc[_0xbc9e('0x38')]);return db[_0xbc9e('0x23')][_0xbc9e('0x42')](_0x5169f0)['then'](handleEntityNotFound(_0x1f6761,null))[_0xbc9e('0x3a')](respondWithResult(_0x1f6761,null))[_0xbc9e('0x3d')](handleError(_0x1f6761,null));};exports[_0xbc9e('0x43')]=function(_0xb0ec5c,_0x53f48c){return db['SmsTransferReport']['create'](_0xb0ec5c[_0xbc9e('0x44')],{})[_0xbc9e('0x3a')](respondWithResult(_0x53f48c,0xc9))[_0xbc9e('0x3d')](handleError(_0x53f48c,null));};exports[_0xbc9e('0x1c')]=function(_0x8d8c38,_0x2686de){if(_0x8d8c38[_0xbc9e('0x44')]['id']){delete _0x8d8c38[_0xbc9e('0x44')]['id'];}return db['SmsTransferReport'][_0xbc9e('0x42')]({'where':{'id':_0x8d8c38[_0xbc9e('0x3f')]['id']}})[_0xbc9e('0x3a')](handleEntityNotFound(_0x2686de,null))[_0xbc9e('0x3a')](saveUpdates(_0x8d8c38[_0xbc9e('0x44')],null))[_0xbc9e('0x3a')](respondWithResult(_0x2686de,null))[_0xbc9e('0x3d')](handleError(_0x2686de,null));};exports['destroy']=function(_0x569dce,_0x6e0d42){return db[_0xbc9e('0x23')][_0xbc9e('0x42')]({'where':{'id':_0x569dce['params']['id']}})[_0xbc9e('0x3a')](handleEntityNotFound(_0x6e0d42,null))[_0xbc9e('0x3a')](removeEntity(_0x6e0d42,null))['catch'](handleError(_0x6e0d42,null));};exports[_0xbc9e('0x45')]=function(_0x15f737,_0x9bfb93){return db[_0xbc9e('0x23')]['describe']()[_0xbc9e('0x3a')](respondWithResult(_0x9bfb93,null))[_0xbc9e('0x3d')](handleError(_0x9bfb93,null));};
\ No newline at end of file
+var _0x4c24=['order','sort','where','filters','filter','merge','VIRTUAL','options','SmsTransferReport','includeAll','include','rows','catch','params','rawAttributes','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','offset','count','Content-Range','json','apply','save','update','then','destroy','stack','name','send','index','map','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x24e9c4,_0x27b579){var _0x50b07e=function(_0x4fc2e2){while(--_0x4fc2e2){_0x24e9c4['push'](_0x24e9c4['shift']());}};_0x50b07e(++_0x27b579);}(_0x4c24,0xf4));var _0x44c2=function(_0x270a7a,_0x34a82e){_0x270a7a=_0x270a7a-0x0;var _0x4f17d4=_0x4c24[_0x270a7a];return _0x4f17d4;};'use strict';var emlformat=require(_0x44c2('0x0'));var rimraf=require(_0x44c2('0x1'));var zipdir=require(_0x44c2('0x2'));var jsonpatch=require(_0x44c2('0x3'));var rp=require(_0x44c2('0x4'));var moment=require(_0x44c2('0x5'));var BPromise=require(_0x44c2('0x6'));var Mustache=require(_0x44c2('0x7'));var util=require('util');var path=require(_0x44c2('0x8'));var sox=require(_0x44c2('0x9'));var csv=require('to-csv');var ejs=require(_0x44c2('0xa'));var fs=require('fs');var fs_extra=require(_0x44c2('0xb'));var _=require('lodash');var squel=require(_0x44c2('0xc'));var crypto=require(_0x44c2('0xd'));var jsforce=require(_0x44c2('0xe'));var deskjs=require(_0x44c2('0xf'));var toCsv=require(_0x44c2('0x10'));var querystring=require(_0x44c2('0x11'));var Papa=require(_0x44c2('0x12'));var Redis=require('ioredis');var authService=require(_0x44c2('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x44c2('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x44c2('0x15'))(_0x44c2('0x16'));var utils=require(_0x44c2('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x44c2('0x18'));var db=require(_0x44c2('0x19'))['db'];function respondWithStatusCode(_0x3ddb30,_0x444aa3){_0x444aa3=_0x444aa3||0xcc;return function(_0x24c881){if(_0x24c881){return _0x3ddb30[_0x44c2('0x1a')](_0x444aa3);}return _0x3ddb30[_0x44c2('0x1b')](_0x444aa3)[_0x44c2('0x1c')]();};}function respondWithResult(_0x5b1dea,_0x2b3110){_0x2b3110=_0x2b3110||0xc8;return function(_0x4c659c){if(_0x4c659c){return _0x5b1dea['status'](_0x2b3110)['json'](_0x4c659c);}};}function respondWithFilteredResult(_0x2ad93f,_0x4748b5){return function(_0x5ae28f){if(_0x5ae28f){var _0x288f75=typeof _0x4748b5['offset']===_0x44c2('0x1d')&&typeof _0x4748b5[_0x44c2('0x1e')]==='undefined';var _0x496955=_0x5ae28f['count'];var _0x5d1489=_0x288f75?0x0:_0x4748b5[_0x44c2('0x1f')];var _0x34c681=_0x288f75?_0x5ae28f[_0x44c2('0x20')]:_0x4748b5[_0x44c2('0x1f')]+_0x4748b5[_0x44c2('0x1e')];var _0x128455;if(_0x34c681>=_0x496955){_0x34c681=_0x496955;_0x128455=0xc8;}else{_0x128455=0xce;}_0x2ad93f[_0x44c2('0x1b')](_0x128455);return _0x2ad93f['set'](_0x44c2('0x21'),_0x5d1489+'-'+_0x34c681+'/'+_0x496955)[_0x44c2('0x22')](_0x5ae28f);}return null;};}function patchUpdates(_0x567335){return function(_0x251cd6){try{jsonpatch[_0x44c2('0x23')](_0x251cd6,_0x567335,!![]);}catch(_0x3ff572){return BPromise['reject'](_0x3ff572);}return _0x251cd6[_0x44c2('0x24')]();};}function saveUpdates(_0x3578ac,_0x394ec0){return function(_0x875199){if(_0x875199){return _0x875199[_0x44c2('0x25')](_0x3578ac)[_0x44c2('0x26')](function(_0x35f921){return _0x35f921;});}return null;};}function removeEntity(_0xa80dea,_0xbce0d5){return function(_0x2d98f4){if(_0x2d98f4){return _0x2d98f4[_0x44c2('0x27')]()[_0x44c2('0x26')](function(){_0xa80dea[_0x44c2('0x1b')](0xcc)[_0x44c2('0x1c')]();});}};}function handleEntityNotFound(_0x56d799,_0x3a1158){return function(_0x5aef49){if(!_0x5aef49){_0x56d799['sendStatus'](0x194);}return _0x5aef49;};}function handleError(_0x22f531,_0x4a8cef){_0x4a8cef=_0x4a8cef||0x1f4;return function(_0x3b4738){logger['error'](_0x3b4738[_0x44c2('0x28')]);if(_0x3b4738['name']){delete _0x3b4738[_0x44c2('0x29')];}_0x22f531[_0x44c2('0x1b')](_0x4a8cef)[_0x44c2('0x2a')](_0x3b4738);};}exports[_0x44c2('0x2b')]=function(_0x34ec9f,_0x32199f){var _0x1cb938={},_0x25dd8e={},_0x327b81={'count':0x0,'rows':[]};var _0x24f192=_[_0x44c2('0x2c')](db['SmsTransferReport']['rawAttributes'],function(_0x3c0c52){return{'name':_0x3c0c52[_0x44c2('0x2d')],'type':_0x3c0c52[_0x44c2('0x2e')]['key']};});_0x25dd8e[_0x44c2('0x2f')]=_[_0x44c2('0x2c')](_0x24f192,_0x44c2('0x29'));_0x25dd8e[_0x44c2('0x30')]=_[_0x44c2('0x31')](_0x34ec9f[_0x44c2('0x30')]);_0x25dd8e['filters']=_[_0x44c2('0x32')](_0x25dd8e[_0x44c2('0x2f')],_0x25dd8e[_0x44c2('0x30')]);_0x1cb938[_0x44c2('0x33')]=_[_0x44c2('0x32')](_0x25dd8e['model'],qs[_0x44c2('0x34')](_0x34ec9f['query']['fields']));_0x1cb938[_0x44c2('0x33')]=_0x1cb938[_0x44c2('0x33')][_0x44c2('0x35')]?_0x1cb938[_0x44c2('0x33')]:_0x25dd8e[_0x44c2('0x2f')];if(!_0x34ec9f['query'][_0x44c2('0x36')](_0x44c2('0x37'))){_0x1cb938[_0x44c2('0x1e')]=qs['limit'](_0x34ec9f[_0x44c2('0x30')][_0x44c2('0x1e')]);_0x1cb938[_0x44c2('0x1f')]=qs[_0x44c2('0x1f')](_0x34ec9f['query'][_0x44c2('0x1f')]);}_0x1cb938[_0x44c2('0x38')]=qs[_0x44c2('0x39')](_0x34ec9f[_0x44c2('0x30')][_0x44c2('0x39')]);_0x1cb938[_0x44c2('0x3a')]=qs[_0x44c2('0x3b')](_['pick'](_0x34ec9f[_0x44c2('0x30')],_0x25dd8e['filters']),_0x24f192);if(_0x34ec9f[_0x44c2('0x30')][_0x44c2('0x3c')]){_0x1cb938[_0x44c2('0x3a')]=_[_0x44c2('0x3d')](_0x1cb938['where'],{'$or':_['map'](_0x24f192,function(_0x306cd2){if(_0x306cd2[_0x44c2('0x2e')]!==_0x44c2('0x3e')){var _0x2f6329={};_0x2f6329[_0x306cd2[_0x44c2('0x29')]]={'$like':'%'+_0x34ec9f[_0x44c2('0x30')][_0x44c2('0x3c')]+'%'};return _0x2f6329;}})});}_0x1cb938=_[_0x44c2('0x3d')]({},_0x1cb938,_0x34ec9f[_0x44c2('0x3f')]);var _0x2573ef={'where':_0x1cb938[_0x44c2('0x3a')]};return db[_0x44c2('0x40')][_0x44c2('0x20')](_0x2573ef)[_0x44c2('0x26')](function(_0x34579c){_0x327b81[_0x44c2('0x20')]=_0x34579c;if(_0x34ec9f[_0x44c2('0x30')][_0x44c2('0x41')]){_0x1cb938[_0x44c2('0x42')]=[{'all':!![]}];}return db[_0x44c2('0x40')]['findAll'](_0x1cb938);})[_0x44c2('0x26')](function(_0x5cd61e){_0x327b81[_0x44c2('0x43')]=_0x5cd61e;return _0x327b81;})[_0x44c2('0x26')](respondWithFilteredResult(_0x32199f,_0x1cb938))[_0x44c2('0x44')](handleError(_0x32199f,null));};exports['show']=function(_0x2058b0,_0x268538){var _0x196e52={'raw':!![],'where':{'id':_0x2058b0[_0x44c2('0x45')]['id']}},_0x4ed1d={};_0x4ed1d['model']=_[_0x44c2('0x31')](db[_0x44c2('0x40')][_0x44c2('0x46')]);_0x4ed1d[_0x44c2('0x30')]=_[_0x44c2('0x31')](_0x2058b0[_0x44c2('0x30')]);_0x4ed1d[_0x44c2('0x3b')]=_['intersection'](_0x4ed1d[_0x44c2('0x2f')],_0x4ed1d[_0x44c2('0x30')]);_0x196e52['attributes']=_['intersection'](_0x4ed1d[_0x44c2('0x2f')],qs['fields'](_0x2058b0[_0x44c2('0x30')][_0x44c2('0x34')]));_0x196e52[_0x44c2('0x33')]=_0x196e52[_0x44c2('0x33')][_0x44c2('0x35')]?_0x196e52[_0x44c2('0x33')]:_0x4ed1d[_0x44c2('0x2f')];if(_0x2058b0[_0x44c2('0x30')]['includeAll']){_0x196e52['include']=[{'all':!![]}];}_0x196e52=_[_0x44c2('0x3d')]({},_0x196e52,_0x2058b0[_0x44c2('0x3f')]);return db['SmsTransferReport'][_0x44c2('0x47')](_0x196e52)[_0x44c2('0x26')](handleEntityNotFound(_0x268538,null))[_0x44c2('0x26')](respondWithResult(_0x268538,null))[_0x44c2('0x44')](handleError(_0x268538,null));};exports[_0x44c2('0x48')]=function(_0x2ae627,_0x3adedb){return db[_0x44c2('0x40')][_0x44c2('0x48')](_0x2ae627['body'],{})['then'](respondWithResult(_0x3adedb,0xc9))[_0x44c2('0x44')](handleError(_0x3adedb,null));};exports['update']=function(_0x591444,_0x26e843){if(_0x591444[_0x44c2('0x49')]['id']){delete _0x591444[_0x44c2('0x49')]['id'];}return db[_0x44c2('0x40')]['find']({'where':{'id':_0x591444[_0x44c2('0x45')]['id']}})[_0x44c2('0x26')](handleEntityNotFound(_0x26e843,null))[_0x44c2('0x26')](saveUpdates(_0x591444[_0x44c2('0x49')],null))[_0x44c2('0x26')](respondWithResult(_0x26e843,null))[_0x44c2('0x44')](handleError(_0x26e843,null));};exports[_0x44c2('0x27')]=function(_0x37f890,_0x1fb4cc){return db[_0x44c2('0x40')][_0x44c2('0x47')]({'where':{'id':_0x37f890[_0x44c2('0x45')]['id']}})[_0x44c2('0x26')](handleEntityNotFound(_0x1fb4cc,null))[_0x44c2('0x26')](removeEntity(_0x1fb4cc,null))[_0x44c2('0x44')](handleError(_0x1fb4cc,null));};exports[_0x44c2('0x4a')]=function(_0x1cd20d,_0x43f5b0){return db[_0x44c2('0x40')][_0x44c2('0x4a')]()[_0x44c2('0x26')](respondWithResult(_0x43f5b0,null))['catch'](handleError(_0x43f5b0,null));};
\ No newline at end of file
index 3324d53..82e1c1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfb8=['uniqueid','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','exports','define','SmsTransferReport','report_sms_transfer'];(function(_0x503950,_0x5022eb){var _0x1657a9=function(_0x4c1e8f){while(--_0x4c1e8f){_0x503950['push'](_0x503950['shift']());}};_0x1657a9(++_0x5022eb);}(_0xbfb8,0x194));var _0x8bfb=function(_0x155024,_0x39a25e){_0x155024=_0x155024-0x0;var _0xda27b4=_0xbfb8[_0x155024];return _0xda27b4;};'use strict';var _=require(_0x8bfb('0x0'));var util=require(_0x8bfb('0x1'));var logger=require(_0x8bfb('0x2'))(_0x8bfb('0x3'));var moment=require(_0x8bfb('0x4'));var BPromise=require(_0x8bfb('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8bfb('0x6'));var rimraf=require(_0x8bfb('0x7'));var config=require('../../config/environment');var attributes=require('./smsTransferReport.attributes');module[_0x8bfb('0x8')]=function(_0x539ff2,_0x4bf6c2){return _0x539ff2[_0x8bfb('0x9')](_0x8bfb('0xa'),attributes,{'tableName':_0x8bfb('0xb'),'paranoid':![],'indexes':[{'name':_0x8bfb('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8d4d=['define','report_sms_transfer','uniqueid','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./smsTransferReport.attributes','exports'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x8d4d,0x177));var _0xd8d4=function(_0x165390,_0x2afe29){_0x165390=_0x165390-0x0;var _0x4925e2=_0x8d4d[_0x165390];return _0x4925e2;};'use strict';var _=require('lodash');var util=require(_0xd8d4('0x0'));var logger=require('../../config/logger')(_0xd8d4('0x1'));var moment=require('moment');var BPromise=require(_0xd8d4('0x2'));var rp=require(_0xd8d4('0x3'));var fs=require('fs');var path=require(_0xd8d4('0x4'));var rimraf=require(_0xd8d4('0x5'));var config=require(_0xd8d4('0x6'));var attributes=require(_0xd8d4('0x7'));module[_0xd8d4('0x8')]=function(_0x228bb3,_0x38f792){return _0x228bb3[_0xd8d4('0x9')]('SmsTransferReport',attributes,{'tableName':_0xd8d4('0xa'),'paranoid':![],'indexes':[{'name':_0xd8d4('0xb'),'fields':[_0xd8d4('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index e98eaa8..e0a5235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4403=['../../config/utils','../../config/logger','../../config/environment','http','request','then','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','bluebird','ioredis','../../mysqldb'];(function(_0x486d1f,_0x27623c){var _0x22f36d=function(_0x355001){while(--_0x355001){_0x486d1f['push'](_0x486d1f['shift']());}};_0x22f36d(++_0x27623c);}(_0x4403,0x179));var _0x3440=function(_0x3bc7ca,_0x6a7edc){_0x3bc7ca=_0x3bc7ca-0x0;var _0x4f4b80=_0x4403[_0x3bc7ca];return _0x4f4b80;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x3440('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3440('0x1'));var db=require(_0x3440('0x2'))['db'];var utils=require(_0x3440('0x3'));var logger=require(_0x3440('0x4'))('rpc');var config=require(_0x3440('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3440('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x3121bd,_0x338e48,_0x4abc5a){return new BPromise(function(_0x33a070,_0x59d581){return client[_0x3440('0x7')](_0x3121bd,_0x4abc5a)[_0x3440('0x8')](function(_0x4559cd){logger['info'](_0x3440('0x9'),_0x338e48,_0x3440('0xa'));logger[_0x3440('0xb')](_0x3440('0xc'),_0x338e48,_0x3440('0xa'),JSON[_0x3440('0xd')](_0x4559cd));if(_0x4559cd[_0x3440('0xe')]){if(_0x4559cd['error'][_0x3440('0xf')]===0x1f4){logger[_0x3440('0xe')](_0x3440('0x9'),_0x338e48,_0x4559cd['error'][_0x3440('0x10')]);return _0x59d581(_0x4559cd[_0x3440('0xe')][_0x3440('0x10')]);}logger[_0x3440('0xe')](_0x3440('0x9'),_0x338e48,_0x4559cd['error'][_0x3440('0x10')]);return _0x33a070(_0x4559cd['error'][_0x3440('0x10')]);}else{logger[_0x3440('0x11')](_0x3440('0x9'),_0x338e48,_0x3440('0xa'));_0x33a070(_0x4559cd[_0x3440('0x12')][_0x3440('0x10')]);}})[_0x3440('0x13')](function(_0xb66a69){logger['error'](_0x3440('0x9'),_0x338e48,_0xb66a69);_0x59d581(_0xb66a69);});});}
\ No newline at end of file
+var _0x0f89=['info','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','SmsTransferReport,\x20%s,\x20%s','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then'];(function(_0xafceaf,_0x5c65ad){var _0x3684e4=function(_0x1aaf86){while(--_0x1aaf86){_0xafceaf['push'](_0xafceaf['shift']());}};_0x3684e4(++_0x5c65ad);}(_0x0f89,0x111));var _0x90f8=function(_0x5c076c,_0x589a3b){_0x5c076c=_0x5c076c-0x0;var _0x26ff7a=_0x0f89[_0x5c076c];return _0x26ff7a;};'use strict';var _=require(_0x90f8('0x0'));var util=require(_0x90f8('0x1'));var moment=require(_0x90f8('0x2'));var BPromise=require('bluebird');var rs=require(_0x90f8('0x3'));var fs=require('fs');var Redis=require(_0x90f8('0x4'));var db=require(_0x90f8('0x5'))['db'];var utils=require(_0x90f8('0x6'));var logger=require('../../config/logger')(_0x90f8('0x7'));var config=require(_0x90f8('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x90f8('0x9')][_0x90f8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4457fb,_0x192b06,_0x240086){return new BPromise(function(_0x4424d1,_0x6dabde){return client[_0x90f8('0xb')](_0x4457fb,_0x240086)[_0x90f8('0xc')](function(_0x3cebe0){logger[_0x90f8('0xd')]('SmsTransferReport,\x20%s,\x20%s',_0x192b06,'request\x20sent');logger[_0x90f8('0xe')](_0x90f8('0xf'),_0x192b06,_0x90f8('0x10'),JSON[_0x90f8('0x11')](_0x3cebe0));if(_0x3cebe0[_0x90f8('0x12')]){if(_0x3cebe0[_0x90f8('0x12')]['code']===0x1f4){logger[_0x90f8('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0x192b06,_0x3cebe0['error'][_0x90f8('0x13')]);return _0x6dabde(_0x3cebe0[_0x90f8('0x12')]['message']);}logger[_0x90f8('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0x192b06,_0x3cebe0[_0x90f8('0x12')][_0x90f8('0x13')]);return _0x4424d1(_0x3cebe0[_0x90f8('0x12')][_0x90f8('0x13')]);}else{logger['info'](_0x90f8('0x14'),_0x192b06,_0x90f8('0x10'));_0x4424d1(_0x3cebe0[_0x90f8('0x15')][_0x90f8('0x13')]);}})['catch'](function(_0x2fa060){logger[_0x90f8('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0x192b06,_0x2fa060);_0x6dabde(_0x2fa060);});});}
\ No newline at end of file
index 7bdefb7..f71b21d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb444=['path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./sound.controller','isAuthenticated','index','get','/:id','show','/:id/download','download','diskStorage','join','root','server/files/sounds/original/','replace','basename','originalname','extname','now','create','put','update','delete','exports','util'];(function(_0x2ac63d,_0x3242cb){var _0x4240c9=function(_0x201d5c){while(--_0x201d5c){_0x2ac63d['push'](_0x2ac63d['shift']());}};_0x4240c9(++_0x3242cb);}(_0xb444,0xca));var _0x4b44=function(_0x3a3a4f,_0x594bef){_0x3a3a4f=_0x3a3a4f-0x0;var _0x212e69=_0xb444[_0x3a3a4f];return _0x212e69;};'use strict';var multer=require('multer');var util=require(_0x4b44('0x0'));var path=require(_0x4b44('0x1'));var timeout=require(_0x4b44('0x2'));var express=require(_0x4b44('0x3'));var router=express[_0x4b44('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4b44('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4b44('0x6'));var controller=require(_0x4b44('0x7'));router['get']('/',auth[_0x4b44('0x8')](),controller[_0x4b44('0x9')]);router[_0x4b44('0xa')](_0x4b44('0xb'),auth[_0x4b44('0x8')](),controller[_0x4b44('0xc')]);router['get'](_0x4b44('0xd'),auth[_0x4b44('0x8')](),controller[_0x4b44('0xe')]);var upload=multer({'storage':multer[_0x4b44('0xf')]({'destination':function(_0x25349a,_0x4e0f9e,_0xfad3ff){_0xfad3ff(null,path[_0x4b44('0x10')](config[_0x4b44('0x11')],_0x4b44('0x12')));},'filename':function(_0x1a0f55,_0x35afc0,_0x232a4d){_0x35afc0['originalname']=_0x35afc0['originalname'][_0x4b44('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x232a4d(null,util['format']('%s-%s%s',path[_0x4b44('0x14')](_0x35afc0[_0x4b44('0x15')],path[_0x4b44('0x16')](_0x35afc0[_0x4b44('0x15')])),Date[_0x4b44('0x17')](),path[_0x4b44('0x16')](_0x35afc0[_0x4b44('0x15')])));}})});router['post']('/',upload['single']('file'),controller[_0x4b44('0x18')]);router[_0x4b44('0x19')](_0x4b44('0xb'),auth[_0x4b44('0x8')](),controller[_0x4b44('0x1a')]);router['delete'](_0x4b44('0xb'),auth['isAuthenticated'](),controller[_0x4b44('0x1b')]);module[_0x4b44('0x1c')]=router;
\ No newline at end of file
+var _0x2b99=['/:id/download','download','diskStorage','join','root','server/files/sounds/original/','originalname','replace','format','%s-%s%s','basename','now','post','single','file','create','put','delete','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment','./sound.controller','isAuthenticated','index','get','/:id','show'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x2b99,0x1b3));var _0x92b9=function(_0x5d4607,_0x6b5e7b){_0x5d4607=_0x5d4607-0x0;var _0x5e4a86=_0x2b99[_0x5d4607];return _0x5e4a86;};'use strict';var multer=require(_0x92b9('0x0'));var util=require(_0x92b9('0x1'));var path=require(_0x92b9('0x2'));var timeout=require('connect-timeout');var express=require(_0x92b9('0x3'));var router=express['Router']();var fs_extra=require(_0x92b9('0x4'));var auth=require(_0x92b9('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x92b9('0x6'));var controller=require(_0x92b9('0x7'));router['get']('/',auth[_0x92b9('0x8')](),controller[_0x92b9('0x9')]);router[_0x92b9('0xa')](_0x92b9('0xb'),auth[_0x92b9('0x8')](),controller[_0x92b9('0xc')]);router['get'](_0x92b9('0xd'),auth[_0x92b9('0x8')](),controller[_0x92b9('0xe')]);var upload=multer({'storage':multer[_0x92b9('0xf')]({'destination':function(_0x57a8a0,_0x148d7b,_0x3adeb4){_0x3adeb4(null,path[_0x92b9('0x10')](config[_0x92b9('0x11')],_0x92b9('0x12')));},'filename':function(_0x14dde6,_0x1941a9,_0x3fd8c1){_0x1941a9[_0x92b9('0x13')]=_0x1941a9[_0x92b9('0x13')][_0x92b9('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3fd8c1(null,util[_0x92b9('0x15')](_0x92b9('0x16'),path[_0x92b9('0x17')](_0x1941a9[_0x92b9('0x13')],path['extname'](_0x1941a9[_0x92b9('0x13')])),Date[_0x92b9('0x18')](),path['extname'](_0x1941a9['originalname'])));}})});router[_0x92b9('0x19')]('/',upload[_0x92b9('0x1a')](_0x92b9('0x1b')),controller[_0x92b9('0x1c')]);router[_0x92b9('0x1d')](_0x92b9('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x92b9('0x1e')](_0x92b9('0xb'),auth[_0x92b9('0x8')](),controller[_0x92b9('0x1e')]);module[_0x92b9('0x1f')]=router;
\ No newline at end of file
index 4773f91..87e9294 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb34b=['STRING','FLOAT','BIGINT','INTEGER','sequelize'];(function(_0x4e8e68,_0x52a7b8){var _0x3c1398=function(_0x315eb8){while(--_0x315eb8){_0x4e8e68['push'](_0x4e8e68['shift']());}};_0x3c1398(++_0x52a7b8);}(_0xb34b,0x158));var _0xbb34=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0xb34b[_0x413feb];return _0x40ee88;};'use strict';var Sequelize=require(_0xbb34('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb34('0x1')],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize[_0xbb34('0x1')]},'display_name':{'type':Sequelize[_0xbb34('0x1')],'defaultValue':''},'description':{'type':Sequelize[_0xbb34('0x1')]},'original_format':{'type':Sequelize[_0xbb34('0x1')]},'original_duration':{'type':Sequelize[_0xbb34('0x2')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize[_0xbb34('0x3')]},'original_sampleRate':{'type':Sequelize[_0xbb34('0x4')]},'converted_format':{'type':Sequelize[_0xbb34('0x1')]},'converted_duration':{'type':Sequelize[_0xbb34('0x2')]},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize[_0xbb34('0x3')]},'converted_sampleRate':{'type':Sequelize[_0xbb34('0x4')]}};
\ No newline at end of file
+var _0x80b3=['STRING','name','FLOAT','BIGINT','INTEGER','sequelize','exports'];(function(_0x31690a,_0x4214a7){var _0x37f5cd=function(_0x273ce4){while(--_0x273ce4){_0x31690a['push'](_0x31690a['shift']());}};_0x37f5cd(++_0x4214a7);}(_0x80b3,0x98));var _0x380b=function(_0x563201,_0x61d1f5){_0x563201=_0x563201-0x0;var _0x4295fc=_0x80b3[_0x563201];return _0x4295fc;};'use strict';var Sequelize=require(_0x380b('0x0'));module[_0x380b('0x1')]={'name':{'type':Sequelize[_0x380b('0x2')],'unique':_0x380b('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0x380b('0x2')]},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize[_0x380b('0x2')]},'original_format':{'type':Sequelize[_0x380b('0x2')]},'original_duration':{'type':Sequelize[_0x380b('0x4')]},'original_sampleCount':{'type':Sequelize[_0x380b('0x5')]},'original_channelCount':{'type':Sequelize[_0x380b('0x6')]},'original_bitRate':{'type':Sequelize[_0x380b('0x5')]},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize[_0x380b('0x4')]},'converted_sampleCount':{'type':Sequelize[_0x380b('0x5')]},'converted_channelCount':{'type':Sequelize[_0x380b('0x6')]},'converted_bitRate':{'type':Sequelize[_0x380b('0x5')]},'converted_sampleRate':{'type':Sequelize[_0x380b('0x6')]}};
\ No newline at end of file
index 877d584..699d252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe215=['ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','Sounds','error','name','send','index','map','Sound','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','params','find','download','save_name','converted_format','join','root','server/files/sounds/converted','ValidationError','Sound\x20not\x20found','format','%s.%s','create','file','originalname','extname','basename','filename','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','unlinkSync','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','end','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','description','original_format','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe215,0xe5));var _0x5e21=function(_0x27f81a,_0x30a30a){_0x27f81a=_0x27f81a-0x0;var _0x343bf8=_0xe215[_0x27f81a];return _0x343bf8;};'use strict';var emlformat=require(_0x5e21('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5e21('0x1'));var jsonpatch=require(_0x5e21('0x2'));var rp=require(_0x5e21('0x3'));var moment=require(_0x5e21('0x4'));var BPromise=require(_0x5e21('0x5'));var Mustache=require('mustache');var util=require(_0x5e21('0x6'));var path=require(_0x5e21('0x7'));var sox=require(_0x5e21('0x8'));var csv=require('to-csv');var ejs=require(_0x5e21('0x9'));var fs=require('fs');var fs_extra=require(_0x5e21('0xa'));var _=require(_0x5e21('0xb'));var squel=require('squel');var crypto=require(_0x5e21('0xc'));var jsforce=require(_0x5e21('0xd'));var deskjs=require(_0x5e21('0xe'));var toCsv=require(_0x5e21('0xf'));var querystring=require(_0x5e21('0x10'));var Papa=require(_0x5e21('0x11'));var Redis=require('ioredis');var authService=require(_0x5e21('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5e21('0x13'));var hardwareService=require(_0x5e21('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x5e21('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x5e21('0x16'));var db=require(_0x5e21('0x17'))['db'];function respondWithStatusCode(_0xa2f39,_0x9ffe20){_0x9ffe20=_0x9ffe20||0xcc;return function(_0x5210ff){if(_0x5210ff){return _0xa2f39[_0x5e21('0x18')](_0x9ffe20);}return _0xa2f39[_0x5e21('0x19')](_0x9ffe20)['end']();};}function respondWithResult(_0x45592f,_0x41b434){_0x41b434=_0x41b434||0xc8;return function(_0x1e4665){if(_0x1e4665){return _0x45592f[_0x5e21('0x19')](_0x41b434)[_0x5e21('0x1a')](_0x1e4665);}};}function respondWithFilteredResult(_0x37132f,_0x2a4760){return function(_0x4dd2a0){if(_0x4dd2a0){var _0x6712bd=typeof _0x2a4760[_0x5e21('0x1b')]===_0x5e21('0x1c')&&typeof _0x2a4760[_0x5e21('0x1d')]==='undefined';var _0x181dce=_0x4dd2a0['count'];var _0x322710=_0x6712bd?0x0:_0x2a4760[_0x5e21('0x1b')];var _0xe8155c=_0x6712bd?_0x4dd2a0[_0x5e21('0x1e')]:_0x2a4760['offset']+_0x2a4760[_0x5e21('0x1d')];var _0x3abfd3;if(_0xe8155c>=_0x181dce){_0xe8155c=_0x181dce;_0x3abfd3=0xc8;}else{_0x3abfd3=0xce;}_0x37132f[_0x5e21('0x19')](_0x3abfd3);return _0x37132f[_0x5e21('0x1f')](_0x5e21('0x20'),_0x322710+'-'+_0xe8155c+'/'+_0x181dce)[_0x5e21('0x1a')](_0x4dd2a0);}return null;};}function patchUpdates(_0x217625){return function(_0xdc1288){try{jsonpatch[_0x5e21('0x21')](_0xdc1288,_0x217625,!![]);}catch(_0x54c99a){return BPromise[_0x5e21('0x22')](_0x54c99a);}return _0xdc1288['save']();};}function saveUpdates(_0x1cecfe,_0x227f4d){return function(_0x4cc879){if(_0x4cc879){return _0x4cc879[_0x5e21('0x23')](_0x1cecfe)[_0x5e21('0x24')](function(_0x1e30f2){return _0x1e30f2;});}return null;};}function removeEntity(_0x579079,_0x149892){return function(_0xd9b1a2){if(_0xd9b1a2){return _0xd9b1a2[_0x5e21('0x25')]()[_0x5e21('0x24')](function(){var _0x299f19=_0xd9b1a2['get']({'plain':!![]});var _0x2898ef=_0x5e21('0x26');return db['UserProfileResource']['destroy']({'where':{'type':_0x2898ef,'resourceId':_0x299f19['id']}})['then'](function(){return _0xd9b1a2;});})['then'](function(){_0x579079[_0x5e21('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5dea25,_0x338bab){return function(_0x25eada){if(!_0x25eada){_0x5dea25['sendStatus'](0x194);}return _0x25eada;};}function handleError(_0x1f4f60,_0x141667){_0x141667=_0x141667||0x1f4;return function(_0x2a25b6){logger[_0x5e21('0x27')](_0x2a25b6['stack']);if(_0x2a25b6[_0x5e21('0x28')]){delete _0x2a25b6['name'];}_0x1f4f60[_0x5e21('0x19')](_0x141667)[_0x5e21('0x29')](_0x2a25b6);};}exports[_0x5e21('0x2a')]=function(_0x4c2601,_0x45b69e){var _0x31c8c7={},_0x49b39d={},_0x531cbf={'count':0x0,'rows':[]};var _0x3dd4ef=_[_0x5e21('0x2b')](db[_0x5e21('0x2c')][_0x5e21('0x2d')],function(_0x27cf07){return{'name':_0x27cf07[_0x5e21('0x2e')],'type':_0x27cf07[_0x5e21('0x2f')][_0x5e21('0x30')]};});_0x49b39d[_0x5e21('0x31')]=_[_0x5e21('0x2b')](_0x3dd4ef,'name');_0x49b39d[_0x5e21('0x32')]=_[_0x5e21('0x33')](_0x4c2601['query']);_0x49b39d[_0x5e21('0x34')]=_['intersection'](_0x49b39d[_0x5e21('0x31')],_0x49b39d[_0x5e21('0x32')]);_0x31c8c7['attributes']=_[_0x5e21('0x35')](_0x49b39d[_0x5e21('0x31')],qs[_0x5e21('0x36')](_0x4c2601[_0x5e21('0x32')][_0x5e21('0x36')]));_0x31c8c7['attributes']=_0x31c8c7[_0x5e21('0x37')][_0x5e21('0x38')]?_0x31c8c7[_0x5e21('0x37')]:_0x49b39d['model'];if(!_0x4c2601[_0x5e21('0x32')][_0x5e21('0x39')]('nolimit')){_0x31c8c7['limit']=qs['limit'](_0x4c2601['query'][_0x5e21('0x1d')]);_0x31c8c7[_0x5e21('0x1b')]=qs['offset'](_0x4c2601['query']['offset']);}_0x31c8c7[_0x5e21('0x3a')]=qs[_0x5e21('0x3b')](_0x4c2601[_0x5e21('0x32')][_0x5e21('0x3b')]);_0x31c8c7[_0x5e21('0x3c')]=qs['filters'](_[_0x5e21('0x3d')](_0x4c2601[_0x5e21('0x32')],_0x49b39d[_0x5e21('0x34')]),_0x3dd4ef);if(_0x4c2601['query'][_0x5e21('0x3e')]){_0x31c8c7[_0x5e21('0x3c')]=_['merge'](_0x31c8c7[_0x5e21('0x3c')],{'$or':_[_0x5e21('0x2b')](_0x3dd4ef,function(_0x34b099){if(_0x34b099[_0x5e21('0x2f')]!==_0x5e21('0x3f')){var _0x423b90={};_0x423b90[_0x34b099['name']]={'$like':'%'+_0x4c2601[_0x5e21('0x32')][_0x5e21('0x3e')]+'%'};return _0x423b90;}})});}_0x31c8c7=_[_0x5e21('0x40')]({},_0x31c8c7,_0x4c2601[_0x5e21('0x41')]);var _0x1510f6={'where':_0x31c8c7[_0x5e21('0x3c')]};return db[_0x5e21('0x2c')][_0x5e21('0x1e')](_0x1510f6)[_0x5e21('0x24')](function(_0x31732b){_0x531cbf[_0x5e21('0x1e')]=_0x31732b;if(_0x4c2601[_0x5e21('0x32')][_0x5e21('0x42')]){_0x31c8c7[_0x5e21('0x43')]=[{'all':!![]}];}return db[_0x5e21('0x2c')]['findAll'](_0x31c8c7);})[_0x5e21('0x24')](function(_0x158d81){_0x531cbf[_0x5e21('0x44')]=_0x158d81;return _0x531cbf;})[_0x5e21('0x24')](respondWithFilteredResult(_0x45b69e,_0x31c8c7))[_0x5e21('0x45')](handleError(_0x45b69e,null));};exports['show']=function(_0x3c3c0c,_0x30c205){var _0x2959fa={'raw':!![],'where':{'id':_0x3c3c0c[_0x5e21('0x46')]['id']}},_0x3ce7b5={};_0x3ce7b5[_0x5e21('0x31')]=_[_0x5e21('0x33')](db[_0x5e21('0x2c')][_0x5e21('0x2d')]);_0x3ce7b5[_0x5e21('0x32')]=_['keys'](_0x3c3c0c['query']);_0x3ce7b5[_0x5e21('0x34')]=_['intersection'](_0x3ce7b5['model'],_0x3ce7b5[_0x5e21('0x32')]);_0x2959fa[_0x5e21('0x37')]=_[_0x5e21('0x35')](_0x3ce7b5['model'],qs['fields'](_0x3c3c0c[_0x5e21('0x32')][_0x5e21('0x36')]));_0x2959fa[_0x5e21('0x37')]=_0x2959fa[_0x5e21('0x37')]['length']?_0x2959fa[_0x5e21('0x37')]:_0x3ce7b5['model'];if(_0x3c3c0c['query'][_0x5e21('0x42')]){_0x2959fa[_0x5e21('0x43')]=[{'all':!![]}];}_0x2959fa=_[_0x5e21('0x40')]({},_0x2959fa,_0x3c3c0c[_0x5e21('0x41')]);return db[_0x5e21('0x2c')][_0x5e21('0x47')](_0x2959fa)[_0x5e21('0x24')](handleEntityNotFound(_0x30c205,null))[_0x5e21('0x24')](respondWithResult(_0x30c205,null))[_0x5e21('0x45')](handleError(_0x30c205,null));};exports[_0x5e21('0x48')]=function(_0x383cc3,_0xdefe71,_0x2859a9){return db[_0x5e21('0x2c')][_0x5e21('0x47')]({'where':{'id':_0x383cc3['params']['id']},'attributes':[_0x5e21('0x28'),_0x5e21('0x49'),_0x5e21('0x4a')],'raw':!![]})['then'](handleEntityNotFound(_0xdefe71,null))[_0x5e21('0x24')](function(_0x10854e){if(_0x10854e){if(!fs['existsSync'](path[_0x5e21('0x4b')](config[_0x5e21('0x4c')],_0x5e21('0x4d'),_0x10854e['save_name']+'.'+_0x10854e[_0x5e21('0x4a')]))){throw new db['Sequelize'][(_0x5e21('0x4e'))](_0x5e21('0x4f'));}return _0xdefe71[_0x5e21('0x48')](path['join'](config[_0x5e21('0x4c')],_0x5e21('0x4d'),util[_0x5e21('0x50')](_0x5e21('0x51'),_0x10854e[_0x5e21('0x49')],_0x10854e[_0x5e21('0x4a')])),util[_0x5e21('0x50')]('%s.%s',_0x10854e['name'],_0x10854e[_0x5e21('0x4a')]));}return null;})[_0x5e21('0x45')](handleError(_0xdefe71,null));};exports[_0x5e21('0x52')]=function(_0x295f2,_0x1bafa7,_0x563c04){var _0x44f5cb={'name':path['basename'](_0x295f2[_0x5e21('0x53')][_0x5e21('0x54')],path[_0x5e21('0x55')](_0x295f2['file']['originalname'])),'save_name':path[_0x5e21('0x56')](_0x295f2[_0x5e21('0x53')][_0x5e21('0x57')],path['extname'](_0x295f2[_0x5e21('0x53')][_0x5e21('0x57')])),'original_format':path[_0x5e21('0x55')](_0x295f2[_0x5e21('0x53')][_0x5e21('0x54')])['substring'](0x1),'converted_format':'wav'};var _0x212106=path['join'](config[_0x5e21('0x4c')],_0x5e21('0x58'),_0x295f2['file'][_0x5e21('0x57')]);var _0xfb08af=path[_0x5e21('0x4b')](config[_0x5e21('0x4c')],'server/files/sounds/converted',util[_0x5e21('0x50')](_0x5e21('0x51'),path['basename'](_0x295f2[_0x5e21('0x53')][_0x5e21('0x57')],path[_0x5e21('0x55')](_0x295f2['file'][_0x5e21('0x57')])),_0x44f5cb['converted_format']));logger[_0x5e21('0x59')](_0x5e21('0x5a'),_0x212106);logger[_0x5e21('0x59')](_0x5e21('0x5b'),_0xfb08af);try{fs[_0x5e21('0x5c')](_0x212106,parseInt('0777',0x8));var _0x1c98dc=sox['transcode'](_0x212106,_0xfb08af,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1c98dc['on'](_0x5e21('0x27'),function(_0x167e13){fs[_0x5e21('0x5d')](_0x212106);_0x1bafa7[_0x5e21('0x19')](0x1f4)['send'](_0x167e13);});_0x1c98dc['on']('src',function(_0x5d8a22){_0x44f5cb[_0x5e21('0x5e')]=isNaN(_0x5d8a22[_0x5e21('0x5f')])?null:_0x5d8a22[_0x5e21('0x5f')]*0x3e8;_0x44f5cb[_0x5e21('0x60')]=isNaN(_0x5d8a22[_0x5e21('0x61')])?null:_0x5d8a22[_0x5e21('0x61')];_0x44f5cb[_0x5e21('0x62')]=isNaN(_0x5d8a22[_0x5e21('0x63')])?null:_0x5d8a22[_0x5e21('0x63')];_0x44f5cb['original_bitRate']=isNaN(_0x5d8a22[_0x5e21('0x64')])?null:_0x5d8a22[_0x5e21('0x64')];_0x44f5cb[_0x5e21('0x65')]=isNaN(_0x5d8a22[_0x5e21('0x66')])?null:_0x5d8a22[_0x5e21('0x66')];});_0x1c98dc['on'](_0x5e21('0x67'),function(_0x9e901d){_0x44f5cb[_0x5e21('0x68')]=isNaN(_0x9e901d['duration'])?null:_0x9e901d[_0x5e21('0x5f')]*0x3e8;_0x44f5cb[_0x5e21('0x69')]=isNaN(_0x9e901d[_0x5e21('0x61')])?null:_0x9e901d[_0x5e21('0x61')];_0x44f5cb['converted_channelCount']=isNaN(_0x9e901d[_0x5e21('0x63')])?null:_0x9e901d[_0x5e21('0x63')];_0x44f5cb['converted_bitRate']=isNaN(_0x9e901d['bitRate'])?null:_0x9e901d[_0x5e21('0x64')];_0x44f5cb['converted_sampleRate']=isNaN(_0x9e901d['sampleRate'])?null:_0x9e901d[_0x5e21('0x66')];});_0x1c98dc['on'](_0x5e21('0x6a'),function(){fs['chmodSync'](_0xfb08af,parseInt('0777',0x8));return db[_0x5e21('0x2c')][_0x5e21('0x52')](_0x44f5cb)[_0x5e21('0x24')](function(_0x3e2fcc){var _0x5f31ba={'role':_0x295f2['body']['role'],'userProfileId':_0x295f2[_0x5e21('0x6b')][_0x5e21('0x6c')]};if(!_0x5f31ba)throw new Error(_0x5e21('0x6d'));if(_0x5f31ba[_0x5e21('0x6e')]===_0x5e21('0x6f')){var _0x1dc0c4=_0x3e2fcc[_0x5e21('0x70')]({'plain':!![]});return db[_0x5e21('0x71')][_0x5e21('0x47')]({'where':{'name':_0x5e21('0x26'),'userProfileId':_0x5f31ba['userProfileId']},'raw':!![]})['then'](function(_0x277d6d){if(_0x277d6d&&_0x277d6d[_0x5e21('0x72')]===0x0){return db[_0x5e21('0x73')][_0x5e21('0x52')]({'name':_0x1dc0c4[_0x5e21('0x28')],'resourceId':_0x1dc0c4['id'],'type':_0x277d6d['name'],'sectionId':_0x277d6d['id']},{})['then'](function(){return _0x3e2fcc;});}else{return _0x3e2fcc;}})['catch'](function(_0x329cfd){logger[_0x5e21('0x27')](_0x5e21('0x74'),_0x329cfd);throw _0x329cfd;});}return _0x3e2fcc;})[_0x5e21('0x24')](respondWithResult(_0x1bafa7,null))[_0x5e21('0x45')](handleError(_0x1bafa7,null));});_0x1c98dc['start']();}catch(_0x4f2189){_0x1bafa7['status'](0x1f4)[_0x5e21('0x29')](_0x4f2189);}};exports['update']=function(_0x42c7b5,_0x222c06,_0x44f286){return db[_0x5e21('0x2c')][_0x5e21('0x47')]({'where':{'id':_0x42c7b5['params']['id']}})[_0x5e21('0x24')](handleEntityNotFound(_0x222c06,null))[_0x5e21('0x24')](saveUpdates(_['pick'](_0x42c7b5[_0x5e21('0x6b')],[_0x5e21('0x28'),_0x5e21('0x75')]),null))['then'](respondWithResult(_0x222c06,null))['catch'](handleError(_0x222c06,null));};exports['delete']=function(_0x3afcf7,_0x5186d6,_0xd2d931){return db[_0x5e21('0x2c')][_0x5e21('0x47')]({'where':{'id':_0x3afcf7['params']['id']}})[_0x5e21('0x24')](function(_0x1b0b9e){if(_0x1b0b9e){return _0x1b0b9e[_0x5e21('0x25')]();}})[_0x5e21('0x24')](function(_0x52663f){var _0x19bd94=path[_0x5e21('0x4b')](config[_0x5e21('0x4c')],'server/files/sounds/original',util['format'](_0x5e21('0x51'),_0x52663f[_0x5e21('0x49')],_0x52663f[_0x5e21('0x76')]));var _0x3a592f=path[_0x5e21('0x4b')](config['root'],_0x5e21('0x4d'),util[_0x5e21('0x50')](_0x5e21('0x51'),_0x52663f[_0x5e21('0x49')],_0x52663f[_0x5e21('0x4a')]));fs[_0x5e21('0x5d')](_0x19bd94);fs['unlinkSync'](_0x3a592f);return _0x52663f;})[_0x5e21('0x24')](function(_0x50fda8){if(_0x50fda8){return _0x5186d6['status'](0xcc)[_0x5e21('0x6a')]();}})['then'](handleEntityNotFound(_0x5186d6,null))[_0x5e21('0x45')](handleError(_0x5186d6,null));};
\ No newline at end of file
+var _0x25a2=['UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','send','delete','original_format','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','json','offset','undefined','count','limit','status','set','Content-Range','apply','reject','update','then','destroy','Sounds','end','error','stack','name','index','map','Sound','fieldName','type','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','includeAll','include','rows','show','params','rawAttributes','options','find','catch','save_name','join','server/files/sounds/converted','converted_format','Sequelize','ValidationError','Sound\x20not\x20found','root','format','%s.%s','create','basename','originalname','extname','file','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','chmodSync','transcode','src','original_duration','duration','original_sampleCount','sampleCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','0777','body','role','userProfileId','user','get','UserProfileSection'];(function(_0x4bfb8b,_0x10b39f){var _0x48f13c=function(_0x346d11){while(--_0x346d11){_0x4bfb8b['push'](_0x4bfb8b['shift']());}};_0x48f13c(++_0x10b39f);}(_0x25a2,0x105));var _0x225a=function(_0x5d7ea4,_0xf5787f){_0x5d7ea4=_0x5d7ea4-0x0;var _0x1e6b2c=_0x25a2[_0x5d7ea4];return _0x1e6b2c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x225a('0x0'));var zipdir=require(_0x225a('0x1'));var jsonpatch=require(_0x225a('0x2'));var rp=require(_0x225a('0x3'));var moment=require(_0x225a('0x4'));var BPromise=require(_0x225a('0x5'));var Mustache=require(_0x225a('0x6'));var util=require(_0x225a('0x7'));var path=require(_0x225a('0x8'));var sox=require(_0x225a('0x9'));var csv=require(_0x225a('0xa'));var ejs=require(_0x225a('0xb'));var fs=require('fs');var fs_extra=require(_0x225a('0xc'));var _=require(_0x225a('0xd'));var squel=require(_0x225a('0xe'));var crypto=require('crypto');var jsforce=require(_0x225a('0xf'));var deskjs=require(_0x225a('0x10'));var toCsv=require(_0x225a('0xa'));var querystring=require(_0x225a('0x11'));var Papa=require(_0x225a('0x12'));var Redis=require(_0x225a('0x13'));var authService=require(_0x225a('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x225a('0x15'));var utils=require(_0x225a('0x16'));var config=require(_0x225a('0x17'));var licenseUtil=require(_0x225a('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x28eabf,_0x4b4343){_0x4b4343=_0x4b4343||0xcc;return function(_0x5ff000){if(_0x5ff000){return _0x28eabf[_0x225a('0x19')](_0x4b4343);}return _0x28eabf['status'](_0x4b4343)['end']();};}function respondWithResult(_0x2dd298,_0x1203cd){_0x1203cd=_0x1203cd||0xc8;return function(_0x59f2dd){if(_0x59f2dd){return _0x2dd298['status'](_0x1203cd)[_0x225a('0x1a')](_0x59f2dd);}};}function respondWithFilteredResult(_0x36da36,_0x2290a9){return function(_0x16696c){if(_0x16696c){var _0x22548d=typeof _0x2290a9[_0x225a('0x1b')]===_0x225a('0x1c')&&typeof _0x2290a9['limit']===_0x225a('0x1c');var _0x357c9d=_0x16696c[_0x225a('0x1d')];var _0x566b6c=_0x22548d?0x0:_0x2290a9[_0x225a('0x1b')];var _0x36873b=_0x22548d?_0x16696c[_0x225a('0x1d')]:_0x2290a9[_0x225a('0x1b')]+_0x2290a9[_0x225a('0x1e')];var _0x3ee685;if(_0x36873b>=_0x357c9d){_0x36873b=_0x357c9d;_0x3ee685=0xc8;}else{_0x3ee685=0xce;}_0x36da36[_0x225a('0x1f')](_0x3ee685);return _0x36da36[_0x225a('0x20')](_0x225a('0x21'),_0x566b6c+'-'+_0x36873b+'/'+_0x357c9d)['json'](_0x16696c);}return null;};}function patchUpdates(_0x9e6a08){return function(_0x2a3488){try{jsonpatch[_0x225a('0x22')](_0x2a3488,_0x9e6a08,!![]);}catch(_0x4f7a40){return BPromise[_0x225a('0x23')](_0x4f7a40);}return _0x2a3488['save']();};}function saveUpdates(_0x168561,_0x12c16c){return function(_0x4d1874){if(_0x4d1874){return _0x4d1874[_0x225a('0x24')](_0x168561)[_0x225a('0x25')](function(_0x2585a0){return _0x2585a0;});}return null;};}function removeEntity(_0x2610c0,_0x216321){return function(_0x12db90){if(_0x12db90){return _0x12db90[_0x225a('0x26')]()[_0x225a('0x25')](function(){var _0x5f5220=_0x12db90['get']({'plain':!![]});var _0x11261c=_0x225a('0x27');return db['UserProfileResource'][_0x225a('0x26')]({'where':{'type':_0x11261c,'resourceId':_0x5f5220['id']}})[_0x225a('0x25')](function(){return _0x12db90;});})[_0x225a('0x25')](function(){_0x2610c0[_0x225a('0x1f')](0xcc)[_0x225a('0x28')]();});}};}function handleEntityNotFound(_0x2e04f0,_0x179171){return function(_0x1d96fd){if(!_0x1d96fd){_0x2e04f0['sendStatus'](0x194);}return _0x1d96fd;};}function handleError(_0x2fd328,_0x3bd337){_0x3bd337=_0x3bd337||0x1f4;return function(_0xe6bdfb){logger[_0x225a('0x29')](_0xe6bdfb[_0x225a('0x2a')]);if(_0xe6bdfb[_0x225a('0x2b')]){delete _0xe6bdfb[_0x225a('0x2b')];}_0x2fd328['status'](_0x3bd337)['send'](_0xe6bdfb);};}exports[_0x225a('0x2c')]=function(_0x4c4803,_0x36618b){var _0x5920f2={},_0x496aa9={},_0x19a019={'count':0x0,'rows':[]};var _0x44eb0c=_[_0x225a('0x2d')](db[_0x225a('0x2e')]['rawAttributes'],function(_0x1cbde6){return{'name':_0x1cbde6[_0x225a('0x2f')],'type':_0x1cbde6[_0x225a('0x30')]['key']};});_0x496aa9[_0x225a('0x31')]=_[_0x225a('0x2d')](_0x44eb0c,_0x225a('0x2b'));_0x496aa9['query']=_[_0x225a('0x32')](_0x4c4803[_0x225a('0x33')]);_0x496aa9['filters']=_[_0x225a('0x34')](_0x496aa9['model'],_0x496aa9[_0x225a('0x33')]);_0x5920f2[_0x225a('0x35')]=_[_0x225a('0x34')](_0x496aa9[_0x225a('0x31')],qs['fields'](_0x4c4803[_0x225a('0x33')][_0x225a('0x36')]));_0x5920f2[_0x225a('0x35')]=_0x5920f2[_0x225a('0x35')][_0x225a('0x37')]?_0x5920f2[_0x225a('0x35')]:_0x496aa9[_0x225a('0x31')];if(!_0x4c4803[_0x225a('0x33')][_0x225a('0x38')](_0x225a('0x39'))){_0x5920f2['limit']=qs['limit'](_0x4c4803[_0x225a('0x33')]['limit']);_0x5920f2[_0x225a('0x1b')]=qs[_0x225a('0x1b')](_0x4c4803[_0x225a('0x33')][_0x225a('0x1b')]);}_0x5920f2[_0x225a('0x3a')]=qs[_0x225a('0x3b')](_0x4c4803[_0x225a('0x33')][_0x225a('0x3b')]);_0x5920f2['where']=qs[_0x225a('0x3c')](_[_0x225a('0x3d')](_0x4c4803[_0x225a('0x33')],_0x496aa9[_0x225a('0x3c')]),_0x44eb0c);if(_0x4c4803[_0x225a('0x33')][_0x225a('0x3e')]){_0x5920f2[_0x225a('0x3f')]=_[_0x225a('0x40')](_0x5920f2[_0x225a('0x3f')],{'$or':_[_0x225a('0x2d')](_0x44eb0c,function(_0x42db68){if(_0x42db68['type']!==_0x225a('0x41')){var _0x236f74={};_0x236f74[_0x42db68[_0x225a('0x2b')]]={'$like':'%'+_0x4c4803[_0x225a('0x33')][_0x225a('0x3e')]+'%'};return _0x236f74;}})});}_0x5920f2=_[_0x225a('0x40')]({},_0x5920f2,_0x4c4803['options']);var _0x4886d2={'where':_0x5920f2['where']};return db[_0x225a('0x2e')][_0x225a('0x1d')](_0x4886d2)[_0x225a('0x25')](function(_0x739818){_0x19a019[_0x225a('0x1d')]=_0x739818;if(_0x4c4803['query'][_0x225a('0x42')]){_0x5920f2[_0x225a('0x43')]=[{'all':!![]}];}return db[_0x225a('0x2e')]['findAll'](_0x5920f2);})[_0x225a('0x25')](function(_0xc40084){_0x19a019[_0x225a('0x44')]=_0xc40084;return _0x19a019;})[_0x225a('0x25')](respondWithFilteredResult(_0x36618b,_0x5920f2))['catch'](handleError(_0x36618b,null));};exports[_0x225a('0x45')]=function(_0x4b9f38,_0x179892){var _0x22ccf5={'raw':!![],'where':{'id':_0x4b9f38[_0x225a('0x46')]['id']}},_0x540114={};_0x540114[_0x225a('0x31')]=_[_0x225a('0x32')](db['Sound'][_0x225a('0x47')]);_0x540114[_0x225a('0x33')]=_[_0x225a('0x32')](_0x4b9f38[_0x225a('0x33')]);_0x540114['filters']=_[_0x225a('0x34')](_0x540114[_0x225a('0x31')],_0x540114[_0x225a('0x33')]);_0x22ccf5['attributes']=_[_0x225a('0x34')](_0x540114[_0x225a('0x31')],qs[_0x225a('0x36')](_0x4b9f38[_0x225a('0x33')][_0x225a('0x36')]));_0x22ccf5[_0x225a('0x35')]=_0x22ccf5[_0x225a('0x35')][_0x225a('0x37')]?_0x22ccf5[_0x225a('0x35')]:_0x540114[_0x225a('0x31')];if(_0x4b9f38[_0x225a('0x33')][_0x225a('0x42')]){_0x22ccf5[_0x225a('0x43')]=[{'all':!![]}];}_0x22ccf5=_[_0x225a('0x40')]({},_0x22ccf5,_0x4b9f38[_0x225a('0x48')]);return db['Sound'][_0x225a('0x49')](_0x22ccf5)['then'](handleEntityNotFound(_0x179892,null))['then'](respondWithResult(_0x179892,null))[_0x225a('0x4a')](handleError(_0x179892,null));};exports['download']=function(_0x4ed542,_0x4ac611,_0x175991){return db[_0x225a('0x2e')][_0x225a('0x49')]({'where':{'id':_0x4ed542[_0x225a('0x46')]['id']},'attributes':[_0x225a('0x2b'),_0x225a('0x4b'),'converted_format'],'raw':!![]})[_0x225a('0x25')](handleEntityNotFound(_0x4ac611,null))[_0x225a('0x25')](function(_0x382212){if(_0x382212){if(!fs['existsSync'](path[_0x225a('0x4c')](config['root'],_0x225a('0x4d'),_0x382212['save_name']+'.'+_0x382212[_0x225a('0x4e')]))){throw new db[(_0x225a('0x4f'))][(_0x225a('0x50'))](_0x225a('0x51'));}return _0x4ac611['download'](path[_0x225a('0x4c')](config[_0x225a('0x52')],_0x225a('0x4d'),util[_0x225a('0x53')](_0x225a('0x54'),_0x382212[_0x225a('0x4b')],_0x382212[_0x225a('0x4e')])),util[_0x225a('0x53')](_0x225a('0x54'),_0x382212[_0x225a('0x2b')],_0x382212['converted_format']));}return null;})[_0x225a('0x4a')](handleError(_0x4ac611,null));};exports[_0x225a('0x55')]=function(_0x4a63da,_0x1f87b8,_0x4704b2){var _0x2e54c0={'name':path[_0x225a('0x56')](_0x4a63da['file'][_0x225a('0x57')],path[_0x225a('0x58')](_0x4a63da[_0x225a('0x59')][_0x225a('0x57')])),'save_name':path['basename'](_0x4a63da[_0x225a('0x59')]['filename'],path[_0x225a('0x58')](_0x4a63da['file'][_0x225a('0x5a')])),'original_format':path[_0x225a('0x58')](_0x4a63da[_0x225a('0x59')][_0x225a('0x57')])[_0x225a('0x5b')](0x1),'converted_format':_0x225a('0x5c')};var _0x3adb24=path['join'](config[_0x225a('0x52')],_0x225a('0x5d'),_0x4a63da['file']['filename']);var _0x1679e4=path[_0x225a('0x4c')](config[_0x225a('0x52')],_0x225a('0x4d'),util['format'](_0x225a('0x54'),path['basename'](_0x4a63da[_0x225a('0x59')]['filename'],path[_0x225a('0x58')](_0x4a63da['file'][_0x225a('0x5a')])),_0x2e54c0['converted_format']));logger[_0x225a('0x5e')](_0x225a('0x5f'),_0x3adb24);logger[_0x225a('0x5e')]('Sound\x20upload\x20destination:\x20%s',_0x1679e4);try{fs[_0x225a('0x60')](_0x3adb24,parseInt('0777',0x8));var _0x2c1c20=sox[_0x225a('0x61')](_0x3adb24,_0x1679e4,{'sampleRate':0x1f40,'format':_0x225a('0x5c'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2c1c20['on'](_0x225a('0x29'),function(_0x1d07b3){fs['unlinkSync'](_0x3adb24);_0x1f87b8[_0x225a('0x1f')](0x1f4)['send'](_0x1d07b3);});_0x2c1c20['on'](_0x225a('0x62'),function(_0x5548d8){_0x2e54c0[_0x225a('0x63')]=isNaN(_0x5548d8[_0x225a('0x64')])?null:_0x5548d8['duration']*0x3e8;_0x2e54c0[_0x225a('0x65')]=isNaN(_0x5548d8[_0x225a('0x66')])?null:_0x5548d8[_0x225a('0x66')];_0x2e54c0['original_channelCount']=isNaN(_0x5548d8[_0x225a('0x67')])?null:_0x5548d8[_0x225a('0x67')];_0x2e54c0[_0x225a('0x68')]=isNaN(_0x5548d8['bitRate'])?null:_0x5548d8[_0x225a('0x69')];_0x2e54c0[_0x225a('0x6a')]=isNaN(_0x5548d8[_0x225a('0x6b')])?null:_0x5548d8[_0x225a('0x6b')];});_0x2c1c20['on'](_0x225a('0x6c'),function(_0x11242a){_0x2e54c0['converted_duration']=isNaN(_0x11242a['duration'])?null:_0x11242a[_0x225a('0x64')]*0x3e8;_0x2e54c0[_0x225a('0x6d')]=isNaN(_0x11242a[_0x225a('0x66')])?null:_0x11242a['sampleCount'];_0x2e54c0[_0x225a('0x6e')]=isNaN(_0x11242a[_0x225a('0x67')])?null:_0x11242a[_0x225a('0x67')];_0x2e54c0[_0x225a('0x6f')]=isNaN(_0x11242a[_0x225a('0x69')])?null:_0x11242a['bitRate'];_0x2e54c0[_0x225a('0x70')]=isNaN(_0x11242a['sampleRate'])?null:_0x11242a[_0x225a('0x6b')];});_0x2c1c20['on'](_0x225a('0x28'),function(){fs[_0x225a('0x60')](_0x1679e4,parseInt(_0x225a('0x71'),0x8));return db[_0x225a('0x2e')][_0x225a('0x55')](_0x2e54c0)['then'](function(_0x34209b){var _0x12776e={'role':_0x4a63da[_0x225a('0x72')][_0x225a('0x73')],'userProfileId':_0x4a63da[_0x225a('0x72')][_0x225a('0x74')]};if(!_0x12776e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x12776e[_0x225a('0x73')]===_0x225a('0x75')){var _0x239a45=_0x34209b[_0x225a('0x76')]({'plain':!![]});return db[_0x225a('0x77')][_0x225a('0x49')]({'where':{'name':'Sounds','userProfileId':_0x12776e[_0x225a('0x74')]},'raw':!![]})[_0x225a('0x25')](function(_0x30148f){if(_0x30148f&&_0x30148f['autoAssociation']===0x0){return db[_0x225a('0x78')][_0x225a('0x55')]({'name':_0x239a45[_0x225a('0x2b')],'resourceId':_0x239a45['id'],'type':_0x30148f[_0x225a('0x2b')],'sectionId':_0x30148f['id']},{})[_0x225a('0x25')](function(){return _0x34209b;});}else{return _0x34209b;}})[_0x225a('0x4a')](function(_0x550e8d){logger[_0x225a('0x29')](_0x225a('0x79'),_0x550e8d);throw _0x550e8d;});}return _0x34209b;})[_0x225a('0x25')](respondWithResult(_0x1f87b8,null))[_0x225a('0x4a')](handleError(_0x1f87b8,null));});_0x2c1c20[_0x225a('0x7a')]();}catch(_0x59d5c4){_0x1f87b8[_0x225a('0x1f')](0x1f4)[_0x225a('0x7b')](_0x59d5c4);}};exports['update']=function(_0x346770,_0x5a8ed2,_0xee78cd){return db[_0x225a('0x2e')]['find']({'where':{'id':_0x346770[_0x225a('0x46')]['id']}})[_0x225a('0x25')](handleEntityNotFound(_0x5a8ed2,null))['then'](saveUpdates(_[_0x225a('0x3d')](_0x346770['body'],[_0x225a('0x2b'),'description']),null))['then'](respondWithResult(_0x5a8ed2,null))['catch'](handleError(_0x5a8ed2,null));};exports[_0x225a('0x7c')]=function(_0x464601,_0x33d8a2,_0x2bd5d3){return db['Sound']['find']({'where':{'id':_0x464601[_0x225a('0x46')]['id']}})[_0x225a('0x25')](function(_0xf76da5){if(_0xf76da5){return _0xf76da5[_0x225a('0x26')]();}})[_0x225a('0x25')](function(_0x7a10f7){var _0x2f603b=path[_0x225a('0x4c')](config[_0x225a('0x52')],_0x225a('0x5d'),util[_0x225a('0x53')](_0x225a('0x54'),_0x7a10f7['save_name'],_0x7a10f7[_0x225a('0x7d')]));var _0x234146=path['join'](config[_0x225a('0x52')],'server/files/sounds/converted',util[_0x225a('0x53')](_0x225a('0x54'),_0x7a10f7[_0x225a('0x4b')],_0x7a10f7['converted_format']));fs[_0x225a('0x7e')](_0x2f603b);fs[_0x225a('0x7e')](_0x234146);return _0x7a10f7;})['then'](function(_0xb0dfbd){if(_0xb0dfbd){return _0x33d8a2[_0x225a('0x1f')](0xcc)[_0x225a('0x28')]();}})['then'](handleEntityNotFound(_0x33d8a2,null))[_0x225a('0x4a')](handleError(_0x33d8a2,null));};
\ No newline at end of file
index cc4220d..b9b637f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe717=['lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./sound.attributes','exports','define','Sound'];(function(_0x601de1,_0x4c5f20){var _0x3a46fd=function(_0x75a7a1){while(--_0x75a7a1){_0x601de1['push'](_0x601de1['shift']());}};_0x3a46fd(++_0x4c5f20);}(_0xe717,0x198));var _0x7e71=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe717[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7e71('0x0'));var util=require('util');var logger=require(_0x7e71('0x1'))(_0x7e71('0x2'));var moment=require('moment');var BPromise=require(_0x7e71('0x3'));var rp=require(_0x7e71('0x4'));var fs=require('fs');var path=require(_0x7e71('0x5'));var rimraf=require(_0x7e71('0x6'));var config=require(_0x7e71('0x7'));var attributes=require(_0x7e71('0x8'));module[_0x7e71('0x9')]=function(_0x15c2a0,_0x9fb48){return _0x15c2a0[_0x7e71('0xa')](_0x7e71('0xb'),attributes,{'tableName':'tools_sounds','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9e17=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./sound.attributes','exports','Sound','tools_sounds'];(function(_0x35b7d4,_0x5a5c43){var _0x4e8cee=function(_0x66859c){while(--_0x66859c){_0x35b7d4['push'](_0x35b7d4['shift']());}};_0x4e8cee(++_0x5a5c43);}(_0x9e17,0x114));var _0x79e1=function(_0x42ce25,_0x7f11aa){_0x42ce25=_0x42ce25-0x0;var _0x14b4cd=_0x9e17[_0x42ce25];return _0x14b4cd;};'use strict';var _=require(_0x79e1('0x0'));var util=require(_0x79e1('0x1'));var logger=require(_0x79e1('0x2'))('api');var moment=require(_0x79e1('0x3'));var BPromise=require(_0x79e1('0x4'));var rp=require(_0x79e1('0x5'));var fs=require('fs');var path=require(_0x79e1('0x6'));var rimraf=require(_0x79e1('0x7'));var config=require('../../config/environment');var attributes=require(_0x79e1('0x8'));module[_0x79e1('0x9')]=function(_0xd4cad6,_0x286268){return _0xd4cad6['define'](_0x79e1('0xa'),attributes,{'tableName':_0x79e1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 202e158..be72691 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c9a=['then','Sound,\x20%s,\x20%s','request\x20sent','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Sound','options','where','attributes','include','map','model','info','debug','ShowSound','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request'];(function(_0x7a9452,_0xba8a16){var _0x3d5c38=function(_0x520303){while(--_0x520303){_0x7a9452['push'](_0x7a9452['shift']());}};_0x3d5c38(++_0xba8a16);}(_0x3c9a,0x187));var _0xa3c9=function(_0x5dd7bb,_0x49c4ac){_0x5dd7bb=_0x5dd7bb-0x0;var _0x1d5b1c=_0x3c9a[_0x5dd7bb];return _0x1d5b1c;};'use strict';var _=require(_0xa3c9('0x0'));var util=require(_0xa3c9('0x1'));var moment=require(_0xa3c9('0x2'));var BPromise=require('bluebird');var rs=require(_0xa3c9('0x3'));var fs=require('fs');var Redis=require(_0xa3c9('0x4'));var db=require(_0xa3c9('0x5'))['db'];var utils=require(_0xa3c9('0x6'));var logger=require(_0xa3c9('0x7'))('rpc');var config=require(_0xa3c9('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xa3c9('0x9')][_0xa3c9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x146110,_0x2175a3,_0x2ca342){return new BPromise(function(_0xb39ec6,_0x37c706){return client[_0xa3c9('0xb')](_0x146110,_0x2ca342)[_0xa3c9('0xc')](function(_0x559964){logger['info'](_0xa3c9('0xd'),_0x2175a3,_0xa3c9('0xe'));logger['debug'](_0xa3c9('0xf'),_0x2175a3,_0xa3c9('0xe'),JSON[_0xa3c9('0x10')](_0x559964));if(_0x559964[_0xa3c9('0x11')]){if(_0x559964['error'][_0xa3c9('0x12')]===0x1f4){logger[_0xa3c9('0x11')]('Sound,\x20%s,\x20%s',_0x2175a3,_0x559964[_0xa3c9('0x11')][_0xa3c9('0x13')]);return _0x37c706(_0x559964[_0xa3c9('0x11')][_0xa3c9('0x13')]);}logger['error'](_0xa3c9('0xd'),_0x2175a3,_0x559964[_0xa3c9('0x11')][_0xa3c9('0x13')]);return _0xb39ec6(_0x559964[_0xa3c9('0x11')][_0xa3c9('0x13')]);}else{logger['info'](_0xa3c9('0xd'),_0x2175a3,_0xa3c9('0xe'));_0xb39ec6(_0x559964['result'][_0xa3c9('0x13')]);}})['catch'](function(_0x1dbc37){logger['error'](_0xa3c9('0xd'),_0x2175a3,_0x1dbc37);_0x37c706(_0x1dbc37);});});}exports['ShowSound']=function(_0x2eba6c){var _0x30c2f9=this;return new Promise(function(_0x2bdabb,_0xd666c6){return db[_0xa3c9('0x14')]['find']({'raw':_0x2eba6c['options']?_0x2eba6c[_0xa3c9('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x2eba6c[_0xa3c9('0x15')]?_0x2eba6c['options'][_0xa3c9('0x16')]||null:null,'attributes':_0x2eba6c[_0xa3c9('0x15')]?_0x2eba6c[_0xa3c9('0x15')][_0xa3c9('0x17')]||null:null,'include':_0x2eba6c[_0xa3c9('0x15')]?_0x2eba6c[_0xa3c9('0x15')][_0xa3c9('0x18')]?_[_0xa3c9('0x19')](_0x2eba6c[_0xa3c9('0x15')][_0xa3c9('0x18')],function(_0x5f120c){return{'model':db[_0x5f120c[_0xa3c9('0x1a')]],'as':_0x5f120c['as'],'attributes':_0x5f120c[_0xa3c9('0x17')],'include':_0x5f120c[_0xa3c9('0x18')]?_['map'](_0x5f120c['include'],function(_0x3659e8){return{'model':db[_0x3659e8['model']],'as':_0x3659e8['as'],'attributes':_0x3659e8[_0xa3c9('0x17')],'include':_0x3659e8['include']?_[_0xa3c9('0x19')](_0x3659e8[_0xa3c9('0x18')],function(_0x2e9285){return{'model':db[_0x2e9285[_0xa3c9('0x1a')]],'as':_0x2e9285['as'],'attributes':_0x2e9285[_0xa3c9('0x17')]};}):[]};}):[]};}):[]:[]})[_0xa3c9('0xc')](function(_0x7e1ab){logger[_0xa3c9('0x1b')]('ShowSound',_0x2eba6c);logger[_0xa3c9('0x1c')](_0xa3c9('0x1d'),_0x2eba6c,JSON[_0xa3c9('0x10')](_0x7e1ab));_0x2bdabb(_0x7e1ab);})[_0xa3c9('0x1e')](function(_0x52129c){logger['error']('ShowSound',_0x52129c['message'],_0x2eba6c);_0xd666c6(_0x30c2f9[_0xa3c9('0x11')](0x1f4,_0x52129c[_0xa3c9('0x13')]));});});};
\ No newline at end of file
+var _0x2eff=['error','code','message','catch','ShowSound','Sound','find','options','raw','attributes','map','include','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify'];(function(_0xf71f7,_0x4171ac){var _0x4a01e6=function(_0x44fb58){while(--_0x44fb58){_0xf71f7['push'](_0xf71f7['shift']());}};_0x4a01e6(++_0x4171ac);}(_0x2eff,0x199));var _0xf2ef=function(_0x222c9f,_0x515cd0){_0x222c9f=_0x222c9f-0x0;var _0x3e74b5=_0x2eff[_0x222c9f];return _0x3e74b5;};'use strict';var _=require(_0xf2ef('0x0'));var util=require(_0xf2ef('0x1'));var moment=require(_0xf2ef('0x2'));var BPromise=require(_0xf2ef('0x3'));var rs=require(_0xf2ef('0x4'));var fs=require('fs');var Redis=require(_0xf2ef('0x5'));var db=require(_0xf2ef('0x6'))['db'];var utils=require(_0xf2ef('0x7'));var logger=require(_0xf2ef('0x8'))(_0xf2ef('0x9'));var config=require(_0xf2ef('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xf2ef('0xb')][_0xf2ef('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xa14fe3,_0x40dc82,_0x1ea0cb){return new BPromise(function(_0x4ff9c4,_0x2290f5){return client['request'](_0xa14fe3,_0x1ea0cb)[_0xf2ef('0xd')](function(_0x2ae59d){logger[_0xf2ef('0xe')](_0xf2ef('0xf'),_0x40dc82,_0xf2ef('0x10'));logger[_0xf2ef('0x11')](_0xf2ef('0x12'),_0x40dc82,_0xf2ef('0x10'),JSON[_0xf2ef('0x13')](_0x2ae59d));if(_0x2ae59d[_0xf2ef('0x14')]){if(_0x2ae59d[_0xf2ef('0x14')][_0xf2ef('0x15')]===0x1f4){logger[_0xf2ef('0x14')](_0xf2ef('0xf'),_0x40dc82,_0x2ae59d[_0xf2ef('0x14')][_0xf2ef('0x16')]);return _0x2290f5(_0x2ae59d[_0xf2ef('0x14')][_0xf2ef('0x16')]);}logger['error'](_0xf2ef('0xf'),_0x40dc82,_0x2ae59d[_0xf2ef('0x14')][_0xf2ef('0x16')]);return _0x4ff9c4(_0x2ae59d['error'][_0xf2ef('0x16')]);}else{logger[_0xf2ef('0xe')](_0xf2ef('0xf'),_0x40dc82,_0xf2ef('0x10'));_0x4ff9c4(_0x2ae59d['result'][_0xf2ef('0x16')]);}})[_0xf2ef('0x17')](function(_0x2d763f){logger[_0xf2ef('0x14')](_0xf2ef('0xf'),_0x40dc82,_0x2d763f);_0x2290f5(_0x2d763f);});});}exports[_0xf2ef('0x18')]=function(_0x398056){var _0x4860c7=this;return new Promise(function(_0x1bb538,_0x13d18b){return db[_0xf2ef('0x19')][_0xf2ef('0x1a')]({'raw':_0x398056[_0xf2ef('0x1b')]?_0x398056[_0xf2ef('0x1b')][_0xf2ef('0x1c')]===undefined?!![]:![]:!![],'where':_0x398056[_0xf2ef('0x1b')]?_0x398056[_0xf2ef('0x1b')]['where']||null:null,'attributes':_0x398056[_0xf2ef('0x1b')]?_0x398056['options'][_0xf2ef('0x1d')]||null:null,'include':_0x398056[_0xf2ef('0x1b')]?_0x398056[_0xf2ef('0x1b')]['include']?_[_0xf2ef('0x1e')](_0x398056[_0xf2ef('0x1b')][_0xf2ef('0x1f')],function(_0x4b9575){return{'model':db[_0x4b9575['model']],'as':_0x4b9575['as'],'attributes':_0x4b9575[_0xf2ef('0x1d')],'include':_0x4b9575[_0xf2ef('0x1f')]?_[_0xf2ef('0x1e')](_0x4b9575[_0xf2ef('0x1f')],function(_0x4ed7d7){return{'model':db[_0x4ed7d7['model']],'as':_0x4ed7d7['as'],'attributes':_0x4ed7d7[_0xf2ef('0x1d')],'include':_0x4ed7d7[_0xf2ef('0x1f')]?_[_0xf2ef('0x1e')](_0x4ed7d7[_0xf2ef('0x1f')],function(_0x5ead90){return{'model':db[_0x5ead90[_0xf2ef('0x20')]],'as':_0x5ead90['as'],'attributes':_0x5ead90['attributes']};}):[]};}):[]};}):[]:[]})[_0xf2ef('0xd')](function(_0x49c0f7){logger[_0xf2ef('0xe')](_0xf2ef('0x18'),_0x398056);logger[_0xf2ef('0x11')](_0xf2ef('0x18'),_0x398056,JSON[_0xf2ef('0x13')](_0x49c0f7));_0x1bb538(_0x49c0f7);})[_0xf2ef('0x17')](function(_0x217aaa){logger['error'](_0xf2ef('0x18'),_0x217aaa[_0xf2ef('0x16')],_0x398056);_0x13d18b(_0x4860c7['error'](0x1f4,_0x217aaa[_0xf2ef('0x16')]));});});};
\ No newline at end of file
index 2c7b818..e6cff3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','index','get','/:id','show','post','isAuthenticated','create','put','delete','destroy'];(function(_0x202933,_0x42ecc6){var _0x2cad88=function(_0xf5e6b9){while(--_0xf5e6b9){_0x202933['push'](_0x202933['shift']());}};_0x2cad88(++_0x42ecc6);}(_0xb7e7,0x121));var _0x7b7e=function(_0x186376,_0x5d988a){_0x186376=_0x186376-0x0;var _0x2dbdd9=_0xb7e7[_0x186376];return _0x2dbdd9;};'use strict';var multer=require(_0x7b7e('0x0'));var util=require('util');var path=require(_0x7b7e('0x1'));var timeout=require('connect-timeout');var express=require(_0x7b7e('0x2'));var router=express['Router']();var fs_extra=require(_0x7b7e('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var controller=require(_0x7b7e('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7b7e('0x7')]);router[_0x7b7e('0x8')](_0x7b7e('0x9'),auth['isAuthenticated'](),controller[_0x7b7e('0xa')]);router[_0x7b7e('0xb')]('/',auth[_0x7b7e('0xc')](),controller[_0x7b7e('0xd')]);router[_0x7b7e('0xe')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller['update']);router[_0x7b7e('0xf')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x10')]);module[_0x7b7e('0x11')]=router;
\ No newline at end of file
+var _0xb7e7=['exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','index','get','/:id','show','post','isAuthenticated','create','put','delete','destroy'];(function(_0x34ef2c,_0xe60ba0){var _0x5cfa7c=function(_0x77904c){while(--_0x77904c){_0x34ef2c['push'](_0x34ef2c['shift']());}};_0x5cfa7c(++_0xe60ba0);}(_0xb7e7,0x121));var _0x7b7e=function(_0x341e0f,_0x4a09d0){_0x341e0f=_0x341e0f-0x0;var _0x59555a=_0xb7e7[_0x341e0f];return _0x59555a;};'use strict';var multer=require(_0x7b7e('0x0'));var util=require('util');var path=require(_0x7b7e('0x1'));var timeout=require('connect-timeout');var express=require(_0x7b7e('0x2'));var router=express['Router']();var fs_extra=require(_0x7b7e('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var controller=require(_0x7b7e('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7b7e('0x7')]);router[_0x7b7e('0x8')](_0x7b7e('0x9'),auth['isAuthenticated'](),controller[_0x7b7e('0xa')]);router[_0x7b7e('0xb')]('/',auth[_0x7b7e('0xc')](),controller[_0x7b7e('0xd')]);router[_0x7b7e('0xe')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller['update']);router[_0x7b7e('0xf')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x10')]);module[_0x7b7e('0x11')]=router;
\ No newline at end of file
index 235dea4..dc4fcfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1688=['ENUM','sequelize','exports','STRING','TEXT','medium'];(function(_0x18beb7,_0x142463){var _0x15f7c4=function(_0x94e022){while(--_0x94e022){_0x18beb7['push'](_0x18beb7['shift']());}};_0x15f7c4(++_0x142463);}(_0x1688,0xeb));var _0x8168=function(_0xe05e5d,_0x38f53d){_0xe05e5d=_0xe05e5d-0x0;var _0x42ab34=_0x1688[_0xe05e5d];return _0x42ab34;};'use strict';var Sequelize=require(_0x8168('0x0'));module[_0x8168('0x1')]={'uniqueid':{'type':Sequelize[_0x8168('0x2')]},'body':{'type':Sequelize[_0x8168('0x3')](_0x8168('0x4')),'allowNull':![]},'direction':{'type':Sequelize[_0x8168('0x5')]('in','out'),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize[_0x8168('0x2')]},'providerResponse':{'type':Sequelize[_0x8168('0x3')]}};
\ No newline at end of file
+var _0xf525=['ENUM','out','TEXT','sequelize','exports','STRING','medium'];(function(_0x5776b2,_0x3d1b62){var _0x25dbc0=function(_0x398237){while(--_0x398237){_0x5776b2['push'](_0x5776b2['shift']());}};_0x25dbc0(++_0x3d1b62);}(_0xf525,0x1a7));var _0x5f52=function(_0x2a45ca,_0x2a9f2c){_0x2a45ca=_0x2a45ca-0x0;var _0x315d62=_0xf525[_0x2a45ca];return _0x315d62;};'use strict';var Sequelize=require(_0x5f52('0x0'));module[_0x5f52('0x1')]={'uniqueid':{'type':Sequelize[_0x5f52('0x2')]},'body':{'type':Sequelize['TEXT'](_0x5f52('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0x5f52('0x4')]('in',_0x5f52('0x5')),'defaultValue':_0x5f52('0x5'),'allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x5f52('0x6')]}};
\ No newline at end of file
index 7f20fde..149b9c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55af=['fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','show','params','length','includeAll','find','catch','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','end','stack','name','send','index','SquareMessage','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','intersection'];(function(_0x3c8e9a,_0x384306){var _0x2d4c57=function(_0x43d408){while(--_0x43d408){_0x3c8e9a['push'](_0x3c8e9a['shift']());}};_0x2d4c57(++_0x384306);}(_0x55af,0x1ab));var _0xf55a=function(_0x25d771,_0x287d91){_0x25d771=_0x25d771-0x0;var _0x1e7072=_0x55af[_0x25d771];return _0x1e7072;};'use strict';var emlformat=require(_0xf55a('0x0'));var rimraf=require(_0xf55a('0x1'));var zipdir=require(_0xf55a('0x2'));var jsonpatch=require(_0xf55a('0x3'));var rp=require(_0xf55a('0x4'));var moment=require(_0xf55a('0x5'));var BPromise=require(_0xf55a('0x6'));var Mustache=require(_0xf55a('0x7'));var util=require(_0xf55a('0x8'));var path=require(_0xf55a('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf55a('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf55a('0xb'));var squel=require(_0xf55a('0xc'));var crypto=require(_0xf55a('0xd'));var jsforce=require(_0xf55a('0xe'));var deskjs=require(_0xf55a('0xf'));var toCsv=require(_0xf55a('0x10'));var querystring=require(_0xf55a('0x11'));var Papa=require(_0xf55a('0x12'));var Redis=require(_0xf55a('0x13'));var authService=require(_0xf55a('0x14'));var qs=require(_0xf55a('0x15'));var as=require(_0xf55a('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf55a('0x17'))('api');var utils=require(_0xf55a('0x18'));var config=require(_0xf55a('0x19'));var licenseUtil=require(_0xf55a('0x1a'));var db=require(_0xf55a('0x1b'))['db'];function respondWithStatusCode(_0x5a7f19,_0x3c9a59){_0x3c9a59=_0x3c9a59||0xcc;return function(_0x257fdd){if(_0x257fdd){return _0x5a7f19[_0xf55a('0x1c')](_0x3c9a59);}return _0x5a7f19[_0xf55a('0x1d')](_0x3c9a59)['end']();};}function respondWithResult(_0x26822d,_0x3bf3dd){_0x3bf3dd=_0x3bf3dd||0xc8;return function(_0xe174c6){if(_0xe174c6){return _0x26822d[_0xf55a('0x1d')](_0x3bf3dd)[_0xf55a('0x1e')](_0xe174c6);}};}function respondWithFilteredResult(_0x5264b9,_0x1ecf0b){return function(_0x290565){if(_0x290565){var _0x26b223=typeof _0x1ecf0b[_0xf55a('0x1f')]===_0xf55a('0x20')&&typeof _0x1ecf0b[_0xf55a('0x21')]===_0xf55a('0x20');var _0xb10d4c=_0x290565[_0xf55a('0x22')];var _0x1e6149=_0x26b223?0x0:_0x1ecf0b[_0xf55a('0x1f')];var _0x53fbf1=_0x26b223?_0x290565[_0xf55a('0x22')]:_0x1ecf0b['offset']+_0x1ecf0b[_0xf55a('0x21')];var _0xa6152;if(_0x53fbf1>=_0xb10d4c){_0x53fbf1=_0xb10d4c;_0xa6152=0xc8;}else{_0xa6152=0xce;}_0x5264b9[_0xf55a('0x1d')](_0xa6152);return _0x5264b9[_0xf55a('0x23')](_0xf55a('0x24'),_0x1e6149+'-'+_0x53fbf1+'/'+_0xb10d4c)['json'](_0x290565);}return null;};}function patchUpdates(_0x25a8d4){return function(_0x3bc0c6){try{jsonpatch[_0xf55a('0x25')](_0x3bc0c6,_0x25a8d4,!![]);}catch(_0x4f508f){return BPromise[_0xf55a('0x26')](_0x4f508f);}return _0x3bc0c6[_0xf55a('0x27')]();};}function saveUpdates(_0x976b44,_0x4df2ee){return function(_0x4b89bc){if(_0x4b89bc){return _0x4b89bc[_0xf55a('0x28')](_0x976b44)[_0xf55a('0x29')](function(_0x414c30){return _0x414c30;});}return null;};}function removeEntity(_0x14634a,_0x398ac8){return function(_0x4f75bc){if(_0x4f75bc){return _0x4f75bc['destroy']()['then'](function(){_0x14634a[_0xf55a('0x1d')](0xcc)[_0xf55a('0x2a')]();});}};}function handleEntityNotFound(_0x4f5921,_0x1ccd3e){return function(_0x21dda3){if(!_0x21dda3){_0x4f5921[_0xf55a('0x1c')](0x194);}return _0x21dda3;};}function handleError(_0x137019,_0xbd5e89){_0xbd5e89=_0xbd5e89||0x1f4;return function(_0xd1e343){logger['error'](_0xd1e343[_0xf55a('0x2b')]);if(_0xd1e343[_0xf55a('0x2c')]){delete _0xd1e343[_0xf55a('0x2c')];}_0x137019[_0xf55a('0x1d')](_0xbd5e89)[_0xf55a('0x2d')](_0xd1e343);};}exports[_0xf55a('0x2e')]=function(_0x4660db,_0x1c504a){var _0x54fc4f={},_0x2a632a={},_0x1e93ed={'count':0x0,'rows':[]};var _0x51d42e=_['map'](db[_0xf55a('0x2f')][_0xf55a('0x30')],function(_0x2c50db){return{'name':_0x2c50db[_0xf55a('0x31')],'type':_0x2c50db[_0xf55a('0x32')][_0xf55a('0x33')]};});_0x2a632a[_0xf55a('0x34')]=_[_0xf55a('0x35')](_0x51d42e,_0xf55a('0x2c'));_0x2a632a[_0xf55a('0x36')]=_[_0xf55a('0x37')](_0x4660db[_0xf55a('0x36')]);_0x2a632a[_0xf55a('0x38')]=_['intersection'](_0x2a632a[_0xf55a('0x34')],_0x2a632a[_0xf55a('0x36')]);_0x54fc4f[_0xf55a('0x39')]=_[_0xf55a('0x3a')](_0x2a632a[_0xf55a('0x34')],qs['fields'](_0x4660db[_0xf55a('0x36')][_0xf55a('0x3b')]));_0x54fc4f[_0xf55a('0x39')]=_0x54fc4f[_0xf55a('0x39')]['length']?_0x54fc4f[_0xf55a('0x39')]:_0x2a632a[_0xf55a('0x34')];if(!_0x4660db[_0xf55a('0x36')]['hasOwnProperty'](_0xf55a('0x3c'))){_0x54fc4f[_0xf55a('0x21')]=qs[_0xf55a('0x21')](_0x4660db[_0xf55a('0x36')][_0xf55a('0x21')]);_0x54fc4f[_0xf55a('0x1f')]=qs[_0xf55a('0x1f')](_0x4660db['query'][_0xf55a('0x1f')]);}_0x54fc4f[_0xf55a('0x3d')]=qs[_0xf55a('0x3e')](_0x4660db[_0xf55a('0x36')][_0xf55a('0x3e')]);_0x54fc4f[_0xf55a('0x3f')]=qs['filters'](_[_0xf55a('0x40')](_0x4660db[_0xf55a('0x36')],_0x2a632a['filters']),_0x51d42e);if(_0x4660db[_0xf55a('0x36')][_0xf55a('0x41')]){_0x54fc4f[_0xf55a('0x3f')]=_[_0xf55a('0x42')](_0x54fc4f[_0xf55a('0x3f')],{'$or':_[_0xf55a('0x35')](_0x51d42e,function(_0x4c65d6){if(_0x4c65d6[_0xf55a('0x32')]!==_0xf55a('0x43')){var _0x48e361={};_0x48e361[_0x4c65d6['name']]={'$like':'%'+_0x4660db[_0xf55a('0x36')][_0xf55a('0x41')]+'%'};return _0x48e361;}})});}_0x54fc4f=_[_0xf55a('0x42')]({},_0x54fc4f,_0x4660db[_0xf55a('0x44')]);var _0x1ee00b={'where':_0x54fc4f['where']};return db[_0xf55a('0x2f')][_0xf55a('0x22')](_0x1ee00b)['then'](function(_0xae046){_0x1e93ed[_0xf55a('0x22')]=_0xae046;if(_0x4660db[_0xf55a('0x36')]['includeAll']){_0x54fc4f[_0xf55a('0x45')]=[{'all':!![]}];}return db['SquareMessage'][_0xf55a('0x46')](_0x54fc4f);})[_0xf55a('0x29')](function(_0x16e6b8){_0x1e93ed[_0xf55a('0x47')]=_0x16e6b8;return _0x1e93ed;})[_0xf55a('0x29')](respondWithFilteredResult(_0x1c504a,_0x54fc4f))['catch'](handleError(_0x1c504a,null));};exports[_0xf55a('0x48')]=function(_0x52c354,_0x35759f){var _0x38dab7={'raw':!![],'where':{'id':_0x52c354[_0xf55a('0x49')]['id']}},_0x13dfe8={};_0x13dfe8[_0xf55a('0x34')]=_[_0xf55a('0x37')](db[_0xf55a('0x2f')]['rawAttributes']);_0x13dfe8[_0xf55a('0x36')]=_['keys'](_0x52c354[_0xf55a('0x36')]);_0x13dfe8[_0xf55a('0x38')]=_[_0xf55a('0x3a')](_0x13dfe8[_0xf55a('0x34')],_0x13dfe8[_0xf55a('0x36')]);_0x38dab7[_0xf55a('0x39')]=_[_0xf55a('0x3a')](_0x13dfe8['model'],qs[_0xf55a('0x3b')](_0x52c354['query'][_0xf55a('0x3b')]));_0x38dab7['attributes']=_0x38dab7['attributes'][_0xf55a('0x4a')]?_0x38dab7[_0xf55a('0x39')]:_0x13dfe8[_0xf55a('0x34')];if(_0x52c354[_0xf55a('0x36')][_0xf55a('0x4b')]){_0x38dab7[_0xf55a('0x45')]=[{'all':!![]}];}_0x38dab7=_[_0xf55a('0x42')]({},_0x38dab7,_0x52c354['options']);return db[_0xf55a('0x2f')][_0xf55a('0x4c')](_0x38dab7)[_0xf55a('0x29')](handleEntityNotFound(_0x35759f,null))[_0xf55a('0x29')](respondWithResult(_0x35759f,null))[_0xf55a('0x4d')](handleError(_0x35759f,null));};exports[_0xf55a('0x4e')]=function(_0x2f6fa3,_0x2b75e9){return db[_0xf55a('0x2f')]['create'](_0x2f6fa3[_0xf55a('0x4f')],{})[_0xf55a('0x29')](respondWithResult(_0x2b75e9,0xc9))['catch'](handleError(_0x2b75e9,null));};exports['update']=function(_0x4ccaf9,_0x17f2df){if(_0x4ccaf9[_0xf55a('0x4f')]['id']){delete _0x4ccaf9[_0xf55a('0x4f')]['id'];}return db[_0xf55a('0x2f')]['find']({'where':{'id':_0x4ccaf9[_0xf55a('0x49')]['id']}})[_0xf55a('0x29')](handleEntityNotFound(_0x17f2df,null))[_0xf55a('0x29')](saveUpdates(_0x4ccaf9['body'],null))[_0xf55a('0x29')](respondWithResult(_0x17f2df,null))[_0xf55a('0x4d')](handleError(_0x17f2df,null));};exports[_0xf55a('0x50')]=function(_0x259bb4,_0x3669b0){return db['SquareMessage'][_0xf55a('0x4c')]({'where':{'id':_0x259bb4[_0xf55a('0x49')]['id']}})[_0xf55a('0x29')](handleEntityNotFound(_0x3669b0,null))[_0xf55a('0x29')](removeEntity(_0x3669b0,null))[_0xf55a('0x4d')](handleError(_0x3669b0,null));};
\ No newline at end of file
+var _0xfd58=['then','destroy','end','error','stack','name','send','index','map','SquareMessage','rawAttributes','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','rows','show','params','catch','create','body','find','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','apply','reject'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xfd58,0xb3));var _0x8fd5=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xfd58[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x8fd5('0x0'));var rimraf=require(_0x8fd5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8fd5('0x2'));var rp=require(_0x8fd5('0x3'));var moment=require('moment');var BPromise=require(_0x8fd5('0x4'));var Mustache=require(_0x8fd5('0x5'));var util=require(_0x8fd5('0x6'));var path=require(_0x8fd5('0x7'));var sox=require('sox');var csv=require(_0x8fd5('0x8'));var ejs=require(_0x8fd5('0x9'));var fs=require('fs');var fs_extra=require(_0x8fd5('0xa'));var _=require('lodash');var squel=require(_0x8fd5('0xb'));var crypto=require(_0x8fd5('0xc'));var jsforce=require(_0x8fd5('0xd'));var deskjs=require(_0x8fd5('0xe'));var toCsv=require(_0x8fd5('0x8'));var querystring=require('querystring');var Papa=require(_0x8fd5('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x8fd5('0x10'));var as=require(_0x8fd5('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8fd5('0x12'))(_0x8fd5('0x13'));var utils=require('../../config/utils');var config=require(_0x8fd5('0x14'));var licenseUtil=require(_0x8fd5('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x34de34,_0x24abac){_0x24abac=_0x24abac||0xcc;return function(_0x3ff8ea){if(_0x3ff8ea){return _0x34de34[_0x8fd5('0x16')](_0x24abac);}return _0x34de34['status'](_0x24abac)['end']();};}function respondWithResult(_0x4815ab,_0x3ee6bb){_0x3ee6bb=_0x3ee6bb||0xc8;return function(_0x1c60c5){if(_0x1c60c5){return _0x4815ab[_0x8fd5('0x17')](_0x3ee6bb)[_0x8fd5('0x18')](_0x1c60c5);}};}function respondWithFilteredResult(_0x44ab56,_0x4b0a7f){return function(_0x92ae7c){if(_0x92ae7c){var _0x3aa9e6=typeof _0x4b0a7f[_0x8fd5('0x19')]===_0x8fd5('0x1a')&&typeof _0x4b0a7f['limit']===_0x8fd5('0x1a');var _0x11b081=_0x92ae7c[_0x8fd5('0x1b')];var _0x4ab4ec=_0x3aa9e6?0x0:_0x4b0a7f['offset'];var _0x5daea6=_0x3aa9e6?_0x92ae7c[_0x8fd5('0x1b')]:_0x4b0a7f[_0x8fd5('0x19')]+_0x4b0a7f[_0x8fd5('0x1c')];var _0x46b728;if(_0x5daea6>=_0x11b081){_0x5daea6=_0x11b081;_0x46b728=0xc8;}else{_0x46b728=0xce;}_0x44ab56[_0x8fd5('0x17')](_0x46b728);return _0x44ab56['set']('Content-Range',_0x4ab4ec+'-'+_0x5daea6+'/'+_0x11b081)[_0x8fd5('0x18')](_0x92ae7c);}return null;};}function patchUpdates(_0x4980fa){return function(_0xaee3a7){try{jsonpatch[_0x8fd5('0x1d')](_0xaee3a7,_0x4980fa,!![]);}catch(_0x43f4ba){return BPromise[_0x8fd5('0x1e')](_0x43f4ba);}return _0xaee3a7['save']();};}function saveUpdates(_0x507689,_0x583293){return function(_0x36385c){if(_0x36385c){return _0x36385c['update'](_0x507689)[_0x8fd5('0x1f')](function(_0x40f729){return _0x40f729;});}return null;};}function removeEntity(_0x2a7c46,_0x6b7da9){return function(_0x5cf12e){if(_0x5cf12e){return _0x5cf12e[_0x8fd5('0x20')]()[_0x8fd5('0x1f')](function(){_0x2a7c46[_0x8fd5('0x17')](0xcc)[_0x8fd5('0x21')]();});}};}function handleEntityNotFound(_0xef4623,_0x4ff30d){return function(_0x51da7e){if(!_0x51da7e){_0xef4623[_0x8fd5('0x16')](0x194);}return _0x51da7e;};}function handleError(_0x1f496d,_0x5b7d8c){_0x5b7d8c=_0x5b7d8c||0x1f4;return function(_0x5dd206){logger[_0x8fd5('0x22')](_0x5dd206[_0x8fd5('0x23')]);if(_0x5dd206['name']){delete _0x5dd206[_0x8fd5('0x24')];}_0x1f496d[_0x8fd5('0x17')](_0x5b7d8c)[_0x8fd5('0x25')](_0x5dd206);};}exports[_0x8fd5('0x26')]=function(_0x4cf930,_0x4676a3){var _0xf68ef5={},_0x4906f1={},_0x429bac={'count':0x0,'rows':[]};var _0x1f71a3=_[_0x8fd5('0x27')](db[_0x8fd5('0x28')][_0x8fd5('0x29')],function(_0x104ef6){return{'name':_0x104ef6['fieldName'],'type':_0x104ef6[_0x8fd5('0x2a')][_0x8fd5('0x2b')]};});_0x4906f1[_0x8fd5('0x2c')]=_['map'](_0x1f71a3,_0x8fd5('0x24'));_0x4906f1[_0x8fd5('0x2d')]=_[_0x8fd5('0x2e')](_0x4cf930[_0x8fd5('0x2d')]);_0x4906f1['filters']=_['intersection'](_0x4906f1['model'],_0x4906f1['query']);_0xf68ef5[_0x8fd5('0x2f')]=_[_0x8fd5('0x30')](_0x4906f1[_0x8fd5('0x2c')],qs[_0x8fd5('0x31')](_0x4cf930['query'][_0x8fd5('0x31')]));_0xf68ef5[_0x8fd5('0x2f')]=_0xf68ef5[_0x8fd5('0x2f')][_0x8fd5('0x32')]?_0xf68ef5[_0x8fd5('0x2f')]:_0x4906f1['model'];if(!_0x4cf930[_0x8fd5('0x2d')][_0x8fd5('0x33')](_0x8fd5('0x34'))){_0xf68ef5[_0x8fd5('0x1c')]=qs[_0x8fd5('0x1c')](_0x4cf930[_0x8fd5('0x2d')][_0x8fd5('0x1c')]);_0xf68ef5[_0x8fd5('0x19')]=qs[_0x8fd5('0x19')](_0x4cf930[_0x8fd5('0x2d')]['offset']);}_0xf68ef5[_0x8fd5('0x35')]=qs['sort'](_0x4cf930[_0x8fd5('0x2d')][_0x8fd5('0x36')]);_0xf68ef5[_0x8fd5('0x37')]=qs[_0x8fd5('0x38')](_[_0x8fd5('0x39')](_0x4cf930[_0x8fd5('0x2d')],_0x4906f1['filters']),_0x1f71a3);if(_0x4cf930[_0x8fd5('0x2d')][_0x8fd5('0x3a')]){_0xf68ef5['where']=_['merge'](_0xf68ef5['where'],{'$or':_[_0x8fd5('0x27')](_0x1f71a3,function(_0x48b9e7){if(_0x48b9e7['type']!=='VIRTUAL'){var _0x10b925={};_0x10b925[_0x48b9e7[_0x8fd5('0x24')]]={'$like':'%'+_0x4cf930['query'][_0x8fd5('0x3a')]+'%'};return _0x10b925;}})});}_0xf68ef5=_[_0x8fd5('0x3b')]({},_0xf68ef5,_0x4cf930[_0x8fd5('0x3c')]);var _0x579438={'where':_0xf68ef5[_0x8fd5('0x37')]};return db[_0x8fd5('0x28')][_0x8fd5('0x1b')](_0x579438)[_0x8fd5('0x1f')](function(_0x40762f){_0x429bac[_0x8fd5('0x1b')]=_0x40762f;if(_0x4cf930[_0x8fd5('0x2d')][_0x8fd5('0x3d')]){_0xf68ef5[_0x8fd5('0x3e')]=[{'all':!![]}];}return db[_0x8fd5('0x28')]['findAll'](_0xf68ef5);})[_0x8fd5('0x1f')](function(_0x2f1096){_0x429bac[_0x8fd5('0x3f')]=_0x2f1096;return _0x429bac;})['then'](respondWithFilteredResult(_0x4676a3,_0xf68ef5))['catch'](handleError(_0x4676a3,null));};exports[_0x8fd5('0x40')]=function(_0x423987,_0x19af40){var _0x199db5={'raw':!![],'where':{'id':_0x423987[_0x8fd5('0x41')]['id']}},_0x4e87ab={};_0x4e87ab['model']=_[_0x8fd5('0x2e')](db[_0x8fd5('0x28')]['rawAttributes']);_0x4e87ab[_0x8fd5('0x2d')]=_[_0x8fd5('0x2e')](_0x423987[_0x8fd5('0x2d')]);_0x4e87ab['filters']=_[_0x8fd5('0x30')](_0x4e87ab[_0x8fd5('0x2c')],_0x4e87ab['query']);_0x199db5[_0x8fd5('0x2f')]=_[_0x8fd5('0x30')](_0x4e87ab['model'],qs['fields'](_0x423987[_0x8fd5('0x2d')][_0x8fd5('0x31')]));_0x199db5[_0x8fd5('0x2f')]=_0x199db5['attributes'][_0x8fd5('0x32')]?_0x199db5[_0x8fd5('0x2f')]:_0x4e87ab['model'];if(_0x423987['query'][_0x8fd5('0x3d')]){_0x199db5[_0x8fd5('0x3e')]=[{'all':!![]}];}_0x199db5=_[_0x8fd5('0x3b')]({},_0x199db5,_0x423987[_0x8fd5('0x3c')]);return db[_0x8fd5('0x28')]['find'](_0x199db5)['then'](handleEntityNotFound(_0x19af40,null))[_0x8fd5('0x1f')](respondWithResult(_0x19af40,null))[_0x8fd5('0x42')](handleError(_0x19af40,null));};exports[_0x8fd5('0x43')]=function(_0xe3106e,_0xf4a5de){return db[_0x8fd5('0x28')][_0x8fd5('0x43')](_0xe3106e['body'],{})[_0x8fd5('0x1f')](respondWithResult(_0xf4a5de,0xc9))[_0x8fd5('0x42')](handleError(_0xf4a5de,null));};exports['update']=function(_0x1c2183,_0x45a28a){if(_0x1c2183['body']['id']){delete _0x1c2183[_0x8fd5('0x44')]['id'];}return db[_0x8fd5('0x28')][_0x8fd5('0x45')]({'where':{'id':_0x1c2183[_0x8fd5('0x41')]['id']}})[_0x8fd5('0x1f')](handleEntityNotFound(_0x45a28a,null))[_0x8fd5('0x1f')](saveUpdates(_0x1c2183[_0x8fd5('0x44')],null))['then'](respondWithResult(_0x45a28a,null))[_0x8fd5('0x42')](handleError(_0x45a28a,null));};exports['destroy']=function(_0x20b4b2,_0x2178c3){return db[_0x8fd5('0x28')][_0x8fd5('0x45')]({'where':{'id':_0x20b4b2['params']['id']}})[_0x8fd5('0x1f')](handleEntityNotFound(_0x2178c3,null))['then'](removeEntity(_0x2178c3,null))[_0x8fd5('0x42')](handleError(_0x2178c3,null));};
\ No newline at end of file
index d057313..4627e86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbf0=['api','bluebird','request-promise','path','rimraf','exports','define','SquareMessage','square_messages','util'];(function(_0x5448a2,_0x2b48d2){var _0x2ecc64=function(_0x29262a){while(--_0x29262a){_0x5448a2['push'](_0x5448a2['shift']());}};_0x2ecc64(++_0x2b48d2);}(_0xfbf0,0x6d));var _0x0fbf=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0xfbf0[_0x21549c];return _0x426cbd;};'use strict';var _=require('lodash');var util=require(_0x0fbf('0x0'));var logger=require('../../config/logger')(_0x0fbf('0x1'));var moment=require('moment');var BPromise=require(_0x0fbf('0x2'));var rp=require(_0x0fbf('0x3'));var fs=require('fs');var path=require(_0x0fbf('0x4'));var rimraf=require(_0x0fbf('0x5'));var config=require('../../config/environment');var attributes=require('./squareMessage.attributes');module[_0x0fbf('0x6')]=function(_0x15d1ea,_0xdfdf8c){return _0x15d1ea[_0x0fbf('0x7')](_0x0fbf('0x8'),attributes,{'tableName':_0x0fbf('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x31b9=['./squareMessage.attributes','exports','define','SquareMessage','square_messages','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x30ef50,_0x27b81c){var _0x546f47=function(_0xa882fb){while(--_0xa882fb){_0x30ef50['push'](_0x30ef50['shift']());}};_0x546f47(++_0x27b81c);}(_0x31b9,0x9f));var _0x931b=function(_0x4c0563,_0x7d06d){_0x4c0563=_0x4c0563-0x0;var _0x4868c9=_0x31b9[_0x4c0563];return _0x4868c9;};'use strict';var _=require(_0x931b('0x0'));var util=require(_0x931b('0x1'));var logger=require(_0x931b('0x2'))('api');var moment=require(_0x931b('0x3'));var BPromise=require(_0x931b('0x4'));var rp=require(_0x931b('0x5'));var fs=require('fs');var path=require(_0x931b('0x6'));var rimraf=require(_0x931b('0x7'));var config=require(_0x931b('0x8'));var attributes=require(_0x931b('0x9'));module[_0x931b('0xa')]=function(_0x274dfb,_0x2679f6){return _0x274dfb[_0x931b('0xb')](_0x931b('0xc'),attributes,{'tableName':_0x931b('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7f6d09b..9301287 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb6=['client','http','request','info','SquareMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateSquareMessage','create','options','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise'];(function(_0x230bf9,_0x4bfdeb){var _0x292b54=function(_0x40b38d){while(--_0x40b38d){_0x230bf9['push'](_0x230bf9['shift']());}};_0x292b54(++_0x4bfdeb);}(_0x0bb6,0xb0));var _0x60bb=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x0bb6[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x60bb('0x0'));var util=require('util');var moment=require(_0x60bb('0x1'));var BPromise=require(_0x60bb('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x60bb('0x3'));var db=require(_0x60bb('0x4'))['db'];var utils=require(_0x60bb('0x5'));var logger=require(_0x60bb('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x60bb('0x7'));var client=jayson[_0x60bb('0x8')][_0x60bb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2a4032,_0x291c5c,_0x17389f){return new BPromise(function(_0x385a93,_0x5ec16a){return client[_0x60bb('0xa')](_0x2a4032,_0x17389f)['then'](function(_0x50720e){logger[_0x60bb('0xb')](_0x60bb('0xc'),_0x291c5c,_0x60bb('0xd'));logger['debug']('SquareMessage,\x20%s,\x20%s,\x20%s',_0x291c5c,_0x60bb('0xd'),JSON[_0x60bb('0xe')](_0x50720e));if(_0x50720e[_0x60bb('0xf')]){if(_0x50720e[_0x60bb('0xf')][_0x60bb('0x10')]===0x1f4){logger['error']('SquareMessage,\x20%s,\x20%s',_0x291c5c,_0x50720e[_0x60bb('0xf')][_0x60bb('0x11')]);return _0x5ec16a(_0x50720e[_0x60bb('0xf')]['message']);}logger[_0x60bb('0xf')](_0x60bb('0xc'),_0x291c5c,_0x50720e[_0x60bb('0xf')][_0x60bb('0x11')]);return _0x385a93(_0x50720e[_0x60bb('0xf')][_0x60bb('0x11')]);}else{logger[_0x60bb('0xb')]('SquareMessage,\x20%s,\x20%s',_0x291c5c,_0x60bb('0xd'));_0x385a93(_0x50720e[_0x60bb('0x12')][_0x60bb('0x11')]);}})[_0x60bb('0x13')](function(_0x27f46b){logger[_0x60bb('0xf')](_0x60bb('0xc'),_0x291c5c,_0x27f46b);_0x5ec16a(_0x27f46b);});});}exports[_0x60bb('0x14')]=function(_0x1d028f){var _0x1402ea=this;return new Promise(function(_0x2844a8,_0x37779b){return db['SquareMessage'][_0x60bb('0x15')](_0x1d028f['body'],{'raw':_0x1d028f[_0x60bb('0x16')]?_0x1d028f[_0x60bb('0x16')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1ad28f){logger[_0x60bb('0xb')](_0x60bb('0x14'),_0x1d028f);logger['debug'](_0x60bb('0x14'),_0x1d028f,JSON[_0x60bb('0xe')](_0x1ad28f));_0x2844a8(_0x1ad28f);})[_0x60bb('0x13')](function(_0x2f2c88){logger['error']('CreateSquareMessage',_0x2f2c88['message'],_0x1d028f);_0x37779b(_0x1402ea[_0x60bb('0xf')](0x1f4,_0x2f2c88[_0x60bb('0x11')]));});});};
\ No newline at end of file
+var _0x6470=['then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSquareMessage','SquareMessage','create','body','options','raw','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','request'];(function(_0x221332,_0x5c0307){var _0x281621=function(_0xd004fa){while(--_0xd004fa){_0x221332['push'](_0x221332['shift']());}};_0x281621(++_0x5c0307);}(_0x6470,0x160));var _0x0647=function(_0x5dbe19,_0x133311){_0x5dbe19=_0x5dbe19-0x0;var _0x2be568=_0x6470[_0x5dbe19];return _0x2be568;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0647('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0647('0x1'));var db=require(_0x0647('0x2'))['db'];var utils=require(_0x0647('0x3'));var logger=require('../../config/logger')(_0x0647('0x4'));var config=require(_0x0647('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x0647('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1d7785,_0x36ca18,_0x12e310){return new BPromise(function(_0x34b6aa,_0x53baad){return client[_0x0647('0x7')](_0x1d7785,_0x12e310)[_0x0647('0x8')](function(_0x4ab8cf){logger[_0x0647('0x9')](_0x0647('0xa'),_0x36ca18,_0x0647('0xb'));logger['debug'](_0x0647('0xc'),_0x36ca18,_0x0647('0xb'),JSON[_0x0647('0xd')](_0x4ab8cf));if(_0x4ab8cf[_0x0647('0xe')]){if(_0x4ab8cf['error']['code']===0x1f4){logger[_0x0647('0xe')](_0x0647('0xa'),_0x36ca18,_0x4ab8cf[_0x0647('0xe')][_0x0647('0xf')]);return _0x53baad(_0x4ab8cf['error'][_0x0647('0xf')]);}logger[_0x0647('0xe')]('SquareMessage,\x20%s,\x20%s',_0x36ca18,_0x4ab8cf[_0x0647('0xe')]['message']);return _0x34b6aa(_0x4ab8cf['error'][_0x0647('0xf')]);}else{logger[_0x0647('0x9')](_0x0647('0xa'),_0x36ca18,_0x0647('0xb'));_0x34b6aa(_0x4ab8cf[_0x0647('0x10')]['message']);}})[_0x0647('0x11')](function(_0x2b4c21){logger[_0x0647('0xe')](_0x0647('0xa'),_0x36ca18,_0x2b4c21);_0x53baad(_0x2b4c21);});});}exports[_0x0647('0x12')]=function(_0x2ae6d0){var _0x1153d8=this;return new Promise(function(_0x112b84,_0x292929){return db[_0x0647('0x13')][_0x0647('0x14')](_0x2ae6d0[_0x0647('0x15')],{'raw':_0x2ae6d0[_0x0647('0x16')]?_0x2ae6d0[_0x0647('0x16')][_0x0647('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x1d5655){logger['info'](_0x0647('0x12'),_0x2ae6d0);logger['debug'](_0x0647('0x12'),_0x2ae6d0,JSON['stringify'](_0x1d5655));_0x112b84(_0x1d5655);})[_0x0647('0x11')](function(_0x3420a1){logger['error'](_0x0647('0x12'),_0x3420a1['message'],_0x2ae6d0);_0x292929(_0x1153d8[_0x0647('0xe')](0x1f4,_0x3420a1['message']));});});};
\ No newline at end of file
index 3497adc..633a88d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4302=['connect-timeout','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','show','/:id/test','test','post','put','update','delete','exports','util','path'];(function(_0xf6136b,_0x3ca229){var _0xa3a2ba=function(_0xc281c4){while(--_0xc281c4){_0xf6136b['push'](_0xf6136b['shift']());}};_0xa3a2ba(++_0x3ca229);}(_0x4302,0x1ae));var _0x2430=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x4302[_0x4154a6];return _0x3b2786;};'use strict';var multer=require('multer');var util=require(_0x2430('0x0'));var path=require(_0x2430('0x1'));var timeout=require(_0x2430('0x2'));var express=require(_0x2430('0x3'));var router=express[_0x2430('0x4')]();var fs_extra=require(_0x2430('0x5'));var auth=require(_0x2430('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./squareOdbc.controller');router[_0x2430('0x7')]('/',auth[_0x2430('0x8')](),controller[_0x2430('0x9')]);router[_0x2430('0x7')]('/:id',auth[_0x2430('0x8')](),controller[_0x2430('0xa')]);router[_0x2430('0x7')](_0x2430('0xb'),auth['isAuthenticated'](),timeout('15s'),controller[_0x2430('0xc')]);router[_0x2430('0xd')]('/',auth[_0x2430('0x8')](),controller['create']);router[_0x2430('0xe')]('/:id',auth[_0x2430('0x8')](),controller[_0x2430('0xf')]);router[_0x2430('0x10')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x2430('0x11')]=router;
\ No newline at end of file
+var _0x7ad1=['./squareOdbc.controller','get','isAuthenticated','index','/:id','show','/:id/test','15s','test','post','put','update','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3e96f9,_0x4b7069){var _0x5d4f7a=function(_0x139310){while(--_0x139310){_0x3e96f9['push'](_0x3e96f9['shift']());}};_0x5d4f7a(++_0x4b7069);}(_0x7ad1,0x142));var _0x17ad=function(_0x1dd9ca,_0xf4959){_0x1dd9ca=_0x1dd9ca-0x0;var _0x332ea2=_0x7ad1[_0x1dd9ca];return _0x332ea2;};'use strict';var multer=require(_0x17ad('0x0'));var util=require('util');var path=require(_0x17ad('0x1'));var timeout=require(_0x17ad('0x2'));var express=require(_0x17ad('0x3'));var router=express[_0x17ad('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x17ad('0x5'));var interaction=require(_0x17ad('0x6'));var config=require(_0x17ad('0x7'));var controller=require(_0x17ad('0x8'));router[_0x17ad('0x9')]('/',auth[_0x17ad('0xa')](),controller[_0x17ad('0xb')]);router[_0x17ad('0x9')](_0x17ad('0xc'),auth[_0x17ad('0xa')](),controller[_0x17ad('0xd')]);router['get'](_0x17ad('0xe'),auth['isAuthenticated'](),timeout(_0x17ad('0xf')),controller[_0x17ad('0x10')]);router[_0x17ad('0x11')]('/',auth[_0x17ad('0xa')](),controller['create']);router[_0x17ad('0x12')](_0x17ad('0xc'),auth[_0x17ad('0xa')](),controller[_0x17ad('0x13')]);router['delete'](_0x17ad('0xc'),auth['isAuthenticated'](),controller[_0x17ad('0x14')]);module[_0x17ad('0x15')]=router;
\ No newline at end of file
index 4b69cf3..14385d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3c7=['STRING','sequelize','exports'];(function(_0x54a9b9,_0x31352f){var _0x2a34ef=function(_0x50f592){while(--_0x50f592){_0x54a9b9['push'](_0x54a9b9['shift']());}};_0x2a34ef(++_0x31352f);}(_0xa3c7,0x64));var _0x7a3c=function(_0x19e1f6,_0x52d013){_0x19e1f6=_0x19e1f6-0x0;var _0x4b9242=_0xa3c7[_0x19e1f6];return _0x4b9242;};'use strict';var Sequelize=require(_0x7a3c('0x0'));module[_0x7a3c('0x1')]={'name':{'type':Sequelize[_0x7a3c('0x2')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7a3c('0x2')]}};
\ No newline at end of file
+var _0x70b6=['exports','STRING','name','sequelize'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0x70b6,0x107));var _0x670b=function(_0x1849a3,_0x2603f4){_0x1849a3=_0x1849a3-0x0;var _0x374c65=_0x70b6[_0x1849a3];return _0x374c65;};'use strict';var Sequelize=require(_0x670b('0x0'));module[_0x670b('0x1')]={'name':{'type':Sequelize[_0x670b('0x2')],'unique':_0x670b('0x3'),'allowNull':![]},'dsn':{'type':Sequelize[_0x670b('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index cce9c57..cbb931f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d46=['sox','to-csv','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','error','stack','name','send','index','SquareOdbc','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','findAll','rows','catch','show','params','create','body','user','role','ODBC','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','odbc','openSync','closeSync','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x2d46,0x1a7));var _0x62d4=function(_0x4dc63b,_0x2aef11){_0x4dc63b=_0x4dc63b-0x0;var _0x7c4a=_0x2d46[_0x4dc63b];return _0x7c4a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x62d4('0x0'));var zipdir=require(_0x62d4('0x1'));var jsonpatch=require(_0x62d4('0x2'));var rp=require('request-promise');var moment=require(_0x62d4('0x3'));var BPromise=require(_0x62d4('0x4'));var Mustache=require('mustache');var util=require(_0x62d4('0x5'));var path=require(_0x62d4('0x6'));var sox=require(_0x62d4('0x7'));var csv=require(_0x62d4('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x62d4('0x9'));var _=require(_0x62d4('0xa'));var squel=require('squel');var crypto=require(_0x62d4('0xb'));var jsforce=require(_0x62d4('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x62d4('0x8'));var querystring=require(_0x62d4('0xd'));var Papa=require(_0x62d4('0xe'));var Redis=require(_0x62d4('0xf'));var authService=require(_0x62d4('0x10'));var qs=require(_0x62d4('0x11'));var as=require(_0x62d4('0x12'));var hardwareService=require(_0x62d4('0x13'));var logger=require(_0x62d4('0x14'))(_0x62d4('0x15'));var utils=require(_0x62d4('0x16'));var config=require(_0x62d4('0x17'));var licenseUtil=require(_0x62d4('0x18'));var db=require(_0x62d4('0x19'))['db'];function respondWithStatusCode(_0xb75493,_0x259b40){_0x259b40=_0x259b40||0xcc;return function(_0x5125ec){if(_0x5125ec){return _0xb75493['sendStatus'](_0x259b40);}return _0xb75493[_0x62d4('0x1a')](_0x259b40)[_0x62d4('0x1b')]();};}function respondWithResult(_0x1b7580,_0x902abc){_0x902abc=_0x902abc||0xc8;return function(_0x3f7169){if(_0x3f7169){return _0x1b7580[_0x62d4('0x1a')](_0x902abc)[_0x62d4('0x1c')](_0x3f7169);}};}function respondWithFilteredResult(_0x12db57,_0x1b1a57){return function(_0x212059){if(_0x212059){var _0x1c41d8=typeof _0x1b1a57[_0x62d4('0x1d')]===_0x62d4('0x1e')&&typeof _0x1b1a57[_0x62d4('0x1f')]===_0x62d4('0x1e');var _0x20f38a=_0x212059[_0x62d4('0x20')];var _0x4f7cb7=_0x1c41d8?0x0:_0x1b1a57[_0x62d4('0x1d')];var _0x2277e2=_0x1c41d8?_0x212059['count']:_0x1b1a57[_0x62d4('0x1d')]+_0x1b1a57['limit'];var _0x3c0710;if(_0x2277e2>=_0x20f38a){_0x2277e2=_0x20f38a;_0x3c0710=0xc8;}else{_0x3c0710=0xce;}_0x12db57[_0x62d4('0x1a')](_0x3c0710);return _0x12db57[_0x62d4('0x21')](_0x62d4('0x22'),_0x4f7cb7+'-'+_0x2277e2+'/'+_0x20f38a)[_0x62d4('0x1c')](_0x212059);}return null;};}function patchUpdates(_0x17886b){return function(_0x26e895){try{jsonpatch[_0x62d4('0x23')](_0x26e895,_0x17886b,!![]);}catch(_0x83fbb6){return BPromise['reject'](_0x83fbb6);}return _0x26e895[_0x62d4('0x24')]();};}function saveUpdates(_0x474ad1,_0x842dbd){return function(_0x4fe128){if(_0x4fe128){return _0x4fe128[_0x62d4('0x25')](_0x474ad1)[_0x62d4('0x26')](function(_0x574dbc){return _0x574dbc;});}return null;};}function removeEntity(_0x4ac309,_0x29828a){return function(_0x163ae8){if(_0x163ae8){return _0x163ae8[_0x62d4('0x27')]()[_0x62d4('0x26')](function(){var _0x149187=_0x163ae8[_0x62d4('0x28')]({'plain':!![]});var _0xc9c90b='ODBC';return db['UserProfileResource'][_0x62d4('0x27')]({'where':{'type':_0xc9c90b,'resourceId':_0x149187['id']}})['then'](function(){return _0x163ae8;});})[_0x62d4('0x26')](function(){_0x4ac309[_0x62d4('0x1a')](0xcc)[_0x62d4('0x1b')]();});}};}function handleEntityNotFound(_0x5aa7b8,_0x55562b){return function(_0x2b29bc){if(!_0x2b29bc){_0x5aa7b8['sendStatus'](0x194);}return _0x2b29bc;};}function handleError(_0x509459,_0xa8338c){_0xa8338c=_0xa8338c||0x1f4;return function(_0x246157){logger[_0x62d4('0x29')](_0x246157[_0x62d4('0x2a')]);if(_0x246157[_0x62d4('0x2b')]){delete _0x246157[_0x62d4('0x2b')];}_0x509459['status'](_0xa8338c)[_0x62d4('0x2c')](_0x246157);};}exports[_0x62d4('0x2d')]=function(_0x4dd31b,_0x3e01cc){var _0x18de6e={},_0xf2d451={},_0x3048f6={'count':0x0,'rows':[]};var _0x329b08=_['map'](db[_0x62d4('0x2e')][_0x62d4('0x2f')],function(_0x289e2d){return{'name':_0x289e2d[_0x62d4('0x30')],'type':_0x289e2d[_0x62d4('0x31')][_0x62d4('0x32')]};});_0xf2d451[_0x62d4('0x33')]=_[_0x62d4('0x34')](_0x329b08,_0x62d4('0x2b'));_0xf2d451[_0x62d4('0x35')]=_[_0x62d4('0x36')](_0x4dd31b[_0x62d4('0x35')]);_0xf2d451['filters']=_[_0x62d4('0x37')](_0xf2d451['model'],_0xf2d451[_0x62d4('0x35')]);_0x18de6e[_0x62d4('0x38')]=_[_0x62d4('0x37')](_0xf2d451[_0x62d4('0x33')],qs['fields'](_0x4dd31b[_0x62d4('0x35')][_0x62d4('0x39')]));_0x18de6e[_0x62d4('0x38')]=_0x18de6e[_0x62d4('0x38')][_0x62d4('0x3a')]?_0x18de6e[_0x62d4('0x38')]:_0xf2d451[_0x62d4('0x33')];if(!_0x4dd31b['query']['hasOwnProperty'](_0x62d4('0x3b'))){_0x18de6e[_0x62d4('0x1f')]=qs[_0x62d4('0x1f')](_0x4dd31b[_0x62d4('0x35')][_0x62d4('0x1f')]);_0x18de6e[_0x62d4('0x1d')]=qs[_0x62d4('0x1d')](_0x4dd31b[_0x62d4('0x35')][_0x62d4('0x1d')]);}_0x18de6e[_0x62d4('0x3c')]=qs[_0x62d4('0x3d')](_0x4dd31b[_0x62d4('0x35')][_0x62d4('0x3d')]);_0x18de6e[_0x62d4('0x3e')]=qs[_0x62d4('0x3f')](_[_0x62d4('0x40')](_0x4dd31b['query'],_0xf2d451[_0x62d4('0x3f')]),_0x329b08);if(_0x4dd31b[_0x62d4('0x35')][_0x62d4('0x41')]){_0x18de6e[_0x62d4('0x3e')]=_[_0x62d4('0x42')](_0x18de6e['where'],{'$or':_[_0x62d4('0x34')](_0x329b08,function(_0x153bd8){if(_0x153bd8[_0x62d4('0x31')]!=='VIRTUAL'){var _0x372dcb={};_0x372dcb[_0x153bd8[_0x62d4('0x2b')]]={'$like':'%'+_0x4dd31b[_0x62d4('0x35')]['filter']+'%'};return _0x372dcb;}})});}_0x18de6e=_[_0x62d4('0x42')]({},_0x18de6e,_0x4dd31b[_0x62d4('0x43')]);var _0x480f3b={'where':_0x18de6e['where']};return db[_0x62d4('0x2e')]['count'](_0x480f3b)[_0x62d4('0x26')](function(_0x2087dd){_0x3048f6['count']=_0x2087dd;if(_0x4dd31b['query'][_0x62d4('0x44')]){_0x18de6e['include']=[{'all':!![]}];}return db[_0x62d4('0x2e')][_0x62d4('0x45')](_0x18de6e);})['then'](function(_0x51fda5){_0x3048f6[_0x62d4('0x46')]=_0x51fda5;return _0x3048f6;})[_0x62d4('0x26')](respondWithFilteredResult(_0x3e01cc,_0x18de6e))[_0x62d4('0x47')](handleError(_0x3e01cc,null));};exports[_0x62d4('0x48')]=function(_0x2d65ab,_0x433fdb){var _0x394851={'raw':!![],'where':{'id':_0x2d65ab[_0x62d4('0x49')]['id']}},_0x5a9f2d={};_0x5a9f2d[_0x62d4('0x33')]=_[_0x62d4('0x36')](db[_0x62d4('0x2e')][_0x62d4('0x2f')]);_0x5a9f2d[_0x62d4('0x35')]=_['keys'](_0x2d65ab['query']);_0x5a9f2d[_0x62d4('0x3f')]=_[_0x62d4('0x37')](_0x5a9f2d['model'],_0x5a9f2d['query']);_0x394851[_0x62d4('0x38')]=_[_0x62d4('0x37')](_0x5a9f2d['model'],qs['fields'](_0x2d65ab[_0x62d4('0x35')][_0x62d4('0x39')]));_0x394851[_0x62d4('0x38')]=_0x394851[_0x62d4('0x38')]['length']?_0x394851[_0x62d4('0x38')]:_0x5a9f2d['model'];if(_0x2d65ab[_0x62d4('0x35')]['includeAll']){_0x394851['include']=[{'all':!![]}];}_0x394851=_['merge']({},_0x394851,_0x2d65ab['options']);return db[_0x62d4('0x2e')]['find'](_0x394851)['then'](handleEntityNotFound(_0x433fdb,null))[_0x62d4('0x26')](respondWithResult(_0x433fdb,null))[_0x62d4('0x47')](handleError(_0x433fdb,null));};exports[_0x62d4('0x4a')]=function(_0x1265b0,_0x5ae6a3){return db['SquareOdbc'][_0x62d4('0x4a')](_0x1265b0[_0x62d4('0x4b')],{})['then'](function(_0x8bf338){var _0x54bb5e=_0x1265b0[_0x62d4('0x4c')][_0x62d4('0x28')]({'plain':!![]});if(!_0x54bb5e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x54bb5e[_0x62d4('0x4d')]===_0x62d4('0x4c')){var _0x341bf4=_0x8bf338['get']({'plain':!![]});var _0x222d4a=_0x62d4('0x4e');return db[_0x62d4('0x4f')][_0x62d4('0x50')]({'where':{'name':_0x222d4a,'userProfileId':_0x54bb5e['userProfileId']},'raw':!![]})[_0x62d4('0x26')](function(_0x373ca5){if(_0x373ca5&&_0x373ca5[_0x62d4('0x51')]===0x0){return db['UserProfileResource'][_0x62d4('0x4a')]({'name':_0x341bf4[_0x62d4('0x2b')],'resourceId':_0x341bf4['id'],'type':_0x373ca5[_0x62d4('0x2b')],'sectionId':_0x373ca5['id']},{})[_0x62d4('0x26')](function(){return _0x8bf338;});}else{return _0x8bf338;}})['catch'](function(_0x2031f0){logger[_0x62d4('0x29')](_0x62d4('0x52'),_0x2031f0);throw _0x2031f0;});}return _0x8bf338;})[_0x62d4('0x26')](respondWithResult(_0x5ae6a3,0xc9))['catch'](handleError(_0x5ae6a3,null));};exports[_0x62d4('0x25')]=function(_0x5a1c37,_0xfef0c2){if(_0x5a1c37[_0x62d4('0x4b')]['id']){delete _0x5a1c37['body']['id'];}return db[_0x62d4('0x2e')][_0x62d4('0x50')]({'where':{'id':_0x5a1c37[_0x62d4('0x49')]['id']}})[_0x62d4('0x26')](handleEntityNotFound(_0xfef0c2,null))['then'](saveUpdates(_0x5a1c37[_0x62d4('0x4b')],null))[_0x62d4('0x26')](respondWithResult(_0xfef0c2,null))[_0x62d4('0x47')](handleError(_0xfef0c2,null));};exports[_0x62d4('0x27')]=function(_0xb38bab,_0x1038ed){return db['SquareOdbc'][_0x62d4('0x50')]({'where':{'id':_0xb38bab['params']['id']}})[_0x62d4('0x26')](handleEntityNotFound(_0x1038ed,null))[_0x62d4('0x26')](removeEntity(_0x1038ed,null))[_0x62d4('0x47')](handleError(_0x1038ed,null));};exports['test']=function(_0x5ef050,_0x4e72c9,_0x15d0ed){var _0x118cf1;return db[_0x62d4('0x2e')]['find']({'where':{'id':_0x5ef050[_0x62d4('0x49')]['id']},'attributes':['id','dsn']})[_0x62d4('0x26')](handleEntityNotFound(_0x4e72c9,null))['then'](function(_0x2264da){if(_0x2264da){var _0x7267e1=require(_0x62d4('0x53'))();_0x7267e1[_0x62d4('0x54')](_0x2264da['dsn']);_0x7267e1[_0x62d4('0x55')]();return _0x2264da;}})[_0x62d4('0x26')](respondWithResult(_0x4e72c9,null))[_0x62d4('0x47')](handleError(_0x4e72c9,null));};
\ No newline at end of file
+var _0x56bc=['keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','filter','merge','where','VIRTUAL','options','SquareOdbc','includeAll','include','rows','catch','find','create','body','user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','test','dsn','odbc','openSync','eml-format','rimraf','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','destroy','then','get','ODBC','UserProfileResource','error','name','send','index','map','rawAttributes','fieldName','type','model','query'];(function(_0x1e381c,_0x47b5b9){var _0x9b5ea9=function(_0x6d2be5){while(--_0x6d2be5){_0x1e381c['push'](_0x1e381c['shift']());}};_0x9b5ea9(++_0x47b5b9);}(_0x56bc,0x1ba));var _0xc56b=function(_0x266147,_0x2bbb62){_0x266147=_0x266147-0x0;var _0x681881=_0x56bc[_0x266147];return _0x681881;};'use strict';var emlformat=require(_0xc56b('0x0'));var rimraf=require(_0xc56b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc56b('0x2'));var rp=require(_0xc56b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc56b('0x4'));var path=require(_0xc56b('0x5'));var sox=require(_0xc56b('0x6'));var csv=require(_0xc56b('0x7'));var ejs=require(_0xc56b('0x8'));var fs=require('fs');var fs_extra=require(_0xc56b('0x9'));var _=require(_0xc56b('0xa'));var squel=require(_0xc56b('0xb'));var crypto=require('crypto');var jsforce=require(_0xc56b('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc56b('0xd'));var Papa=require(_0xc56b('0xe'));var Redis=require(_0xc56b('0xf'));var authService=require(_0xc56b('0x10'));var qs=require(_0xc56b('0x11'));var as=require(_0xc56b('0x12'));var hardwareService=require(_0xc56b('0x13'));var logger=require(_0xc56b('0x14'))(_0xc56b('0x15'));var utils=require(_0xc56b('0x16'));var config=require(_0xc56b('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x559dac,_0x57e39f){_0x57e39f=_0x57e39f||0xcc;return function(_0x1651f0){if(_0x1651f0){return _0x559dac[_0xc56b('0x18')](_0x57e39f);}return _0x559dac['status'](_0x57e39f)[_0xc56b('0x19')]();};}function respondWithResult(_0x1e06d6,_0x51fb57){_0x51fb57=_0x51fb57||0xc8;return function(_0xa950b0){if(_0xa950b0){return _0x1e06d6[_0xc56b('0x1a')](_0x51fb57)['json'](_0xa950b0);}};}function respondWithFilteredResult(_0xb281d6,_0x49f09a){return function(_0x4de915){if(_0x4de915){var _0x41fc93=typeof _0x49f09a[_0xc56b('0x1b')]===_0xc56b('0x1c')&&typeof _0x49f09a[_0xc56b('0x1d')]===_0xc56b('0x1c');var _0x566014=_0x4de915[_0xc56b('0x1e')];var _0x3e4a44=_0x41fc93?0x0:_0x49f09a[_0xc56b('0x1b')];var _0x1f515b=_0x41fc93?_0x4de915[_0xc56b('0x1e')]:_0x49f09a[_0xc56b('0x1b')]+_0x49f09a[_0xc56b('0x1d')];var _0x4d3e4b;if(_0x1f515b>=_0x566014){_0x1f515b=_0x566014;_0x4d3e4b=0xc8;}else{_0x4d3e4b=0xce;}_0xb281d6[_0xc56b('0x1a')](_0x4d3e4b);return _0xb281d6[_0xc56b('0x1f')](_0xc56b('0x20'),_0x3e4a44+'-'+_0x1f515b+'/'+_0x566014)[_0xc56b('0x21')](_0x4de915);}return null;};}function patchUpdates(_0x135b86){return function(_0x27ba48){try{jsonpatch['apply'](_0x27ba48,_0x135b86,!![]);}catch(_0x5b0f33){return BPromise[_0xc56b('0x22')](_0x5b0f33);}return _0x27ba48['save']();};}function saveUpdates(_0x5679e4,_0x16dbd4){return function(_0x1258b4){if(_0x1258b4){return _0x1258b4['update'](_0x5679e4)['then'](function(_0x244672){return _0x244672;});}return null;};}function removeEntity(_0x7c726a,_0x4d1c42){return function(_0x37e357){if(_0x37e357){return _0x37e357[_0xc56b('0x23')]()[_0xc56b('0x24')](function(){var _0xefa384=_0x37e357[_0xc56b('0x25')]({'plain':!![]});var _0x19111d=_0xc56b('0x26');return db[_0xc56b('0x27')][_0xc56b('0x23')]({'where':{'type':_0x19111d,'resourceId':_0xefa384['id']}})[_0xc56b('0x24')](function(){return _0x37e357;});})['then'](function(){_0x7c726a[_0xc56b('0x1a')](0xcc)[_0xc56b('0x19')]();});}};}function handleEntityNotFound(_0x27a3bb,_0x11f168){return function(_0x451e0b){if(!_0x451e0b){_0x27a3bb[_0xc56b('0x18')](0x194);}return _0x451e0b;};}function handleError(_0x5e486f,_0x1daee1){_0x1daee1=_0x1daee1||0x1f4;return function(_0x2b3263){logger[_0xc56b('0x28')](_0x2b3263['stack']);if(_0x2b3263['name']){delete _0x2b3263[_0xc56b('0x29')];}_0x5e486f[_0xc56b('0x1a')](_0x1daee1)[_0xc56b('0x2a')](_0x2b3263);};}exports[_0xc56b('0x2b')]=function(_0x18cf3f,_0x209a11){var _0x28e0c0={},_0x10b94d={},_0x5c2634={'count':0x0,'rows':[]};var _0x32fb8c=_[_0xc56b('0x2c')](db['SquareOdbc'][_0xc56b('0x2d')],function(_0x48ea58){return{'name':_0x48ea58[_0xc56b('0x2e')],'type':_0x48ea58[_0xc56b('0x2f')]['key']};});_0x10b94d[_0xc56b('0x30')]=_[_0xc56b('0x2c')](_0x32fb8c,'name');_0x10b94d[_0xc56b('0x31')]=_[_0xc56b('0x32')](_0x18cf3f['query']);_0x10b94d[_0xc56b('0x33')]=_[_0xc56b('0x34')](_0x10b94d[_0xc56b('0x30')],_0x10b94d[_0xc56b('0x31')]);_0x28e0c0['attributes']=_['intersection'](_0x10b94d[_0xc56b('0x30')],qs[_0xc56b('0x35')](_0x18cf3f['query']['fields']));_0x28e0c0['attributes']=_0x28e0c0[_0xc56b('0x36')][_0xc56b('0x37')]?_0x28e0c0['attributes']:_0x10b94d[_0xc56b('0x30')];if(!_0x18cf3f[_0xc56b('0x31')][_0xc56b('0x38')](_0xc56b('0x39'))){_0x28e0c0[_0xc56b('0x1d')]=qs[_0xc56b('0x1d')](_0x18cf3f[_0xc56b('0x31')][_0xc56b('0x1d')]);_0x28e0c0[_0xc56b('0x1b')]=qs[_0xc56b('0x1b')](_0x18cf3f[_0xc56b('0x31')][_0xc56b('0x1b')]);}_0x28e0c0['order']=qs[_0xc56b('0x3a')](_0x18cf3f[_0xc56b('0x31')][_0xc56b('0x3a')]);_0x28e0c0['where']=qs[_0xc56b('0x33')](_['pick'](_0x18cf3f['query'],_0x10b94d['filters']),_0x32fb8c);if(_0x18cf3f[_0xc56b('0x31')][_0xc56b('0x3b')]){_0x28e0c0['where']=_[_0xc56b('0x3c')](_0x28e0c0[_0xc56b('0x3d')],{'$or':_[_0xc56b('0x2c')](_0x32fb8c,function(_0x7b38ff){if(_0x7b38ff[_0xc56b('0x2f')]!==_0xc56b('0x3e')){var _0x3c3998={};_0x3c3998[_0x7b38ff[_0xc56b('0x29')]]={'$like':'%'+_0x18cf3f[_0xc56b('0x31')][_0xc56b('0x3b')]+'%'};return _0x3c3998;}})});}_0x28e0c0=_['merge']({},_0x28e0c0,_0x18cf3f[_0xc56b('0x3f')]);var _0x25e32b={'where':_0x28e0c0['where']};return db[_0xc56b('0x40')][_0xc56b('0x1e')](_0x25e32b)[_0xc56b('0x24')](function(_0x1d7d27){_0x5c2634[_0xc56b('0x1e')]=_0x1d7d27;if(_0x18cf3f['query'][_0xc56b('0x41')]){_0x28e0c0[_0xc56b('0x42')]=[{'all':!![]}];}return db[_0xc56b('0x40')]['findAll'](_0x28e0c0);})['then'](function(_0x5956b9){_0x5c2634[_0xc56b('0x43')]=_0x5956b9;return _0x5c2634;})['then'](respondWithFilteredResult(_0x209a11,_0x28e0c0))[_0xc56b('0x44')](handleError(_0x209a11,null));};exports['show']=function(_0x3f4f78,_0x358535){var _0x37ea10={'raw':!![],'where':{'id':_0x3f4f78['params']['id']}},_0x209ef9={};_0x209ef9[_0xc56b('0x30')]=_[_0xc56b('0x32')](db['SquareOdbc'][_0xc56b('0x2d')]);_0x209ef9['query']=_['keys'](_0x3f4f78[_0xc56b('0x31')]);_0x209ef9[_0xc56b('0x33')]=_[_0xc56b('0x34')](_0x209ef9[_0xc56b('0x30')],_0x209ef9['query']);_0x37ea10[_0xc56b('0x36')]=_[_0xc56b('0x34')](_0x209ef9[_0xc56b('0x30')],qs[_0xc56b('0x35')](_0x3f4f78[_0xc56b('0x31')][_0xc56b('0x35')]));_0x37ea10[_0xc56b('0x36')]=_0x37ea10[_0xc56b('0x36')][_0xc56b('0x37')]?_0x37ea10['attributes']:_0x209ef9[_0xc56b('0x30')];if(_0x3f4f78[_0xc56b('0x31')][_0xc56b('0x41')]){_0x37ea10[_0xc56b('0x42')]=[{'all':!![]}];}_0x37ea10=_[_0xc56b('0x3c')]({},_0x37ea10,_0x3f4f78[_0xc56b('0x3f')]);return db['SquareOdbc'][_0xc56b('0x45')](_0x37ea10)[_0xc56b('0x24')](handleEntityNotFound(_0x358535,null))[_0xc56b('0x24')](respondWithResult(_0x358535,null))['catch'](handleError(_0x358535,null));};exports['create']=function(_0xb1bb5c,_0x19a587){return db[_0xc56b('0x40')][_0xc56b('0x46')](_0xb1bb5c[_0xc56b('0x47')],{})[_0xc56b('0x24')](function(_0x53d692){var _0x303341=_0xb1bb5c[_0xc56b('0x48')][_0xc56b('0x25')]({'plain':!![]});if(!_0x303341)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x303341[_0xc56b('0x49')]===_0xc56b('0x48')){var _0x4f6acf=_0x53d692[_0xc56b('0x25')]({'plain':!![]});var _0x477665=_0xc56b('0x26');return db[_0xc56b('0x4a')][_0xc56b('0x45')]({'where':{'name':_0x477665,'userProfileId':_0x303341['userProfileId']},'raw':!![]})[_0xc56b('0x24')](function(_0x1c0276){if(_0x1c0276&&_0x1c0276[_0xc56b('0x4b')]===0x0){return db[_0xc56b('0x27')]['create']({'name':_0x4f6acf['name'],'resourceId':_0x4f6acf['id'],'type':_0x1c0276[_0xc56b('0x29')],'sectionId':_0x1c0276['id']},{})[_0xc56b('0x24')](function(){return _0x53d692;});}else{return _0x53d692;}})[_0xc56b('0x44')](function(_0x37755c){logger[_0xc56b('0x28')](_0xc56b('0x4c'),_0x37755c);throw _0x37755c;});}return _0x53d692;})[_0xc56b('0x24')](respondWithResult(_0x19a587,0xc9))['catch'](handleError(_0x19a587,null));};exports['update']=function(_0x2855ce,_0x52366d){if(_0x2855ce[_0xc56b('0x47')]['id']){delete _0x2855ce[_0xc56b('0x47')]['id'];}return db[_0xc56b('0x40')][_0xc56b('0x45')]({'where':{'id':_0x2855ce[_0xc56b('0x4d')]['id']}})[_0xc56b('0x24')](handleEntityNotFound(_0x52366d,null))[_0xc56b('0x24')](saveUpdates(_0x2855ce['body'],null))[_0xc56b('0x24')](respondWithResult(_0x52366d,null))[_0xc56b('0x44')](handleError(_0x52366d,null));};exports[_0xc56b('0x23')]=function(_0x5aa9ca,_0x4b2b55){return db[_0xc56b('0x40')][_0xc56b('0x45')]({'where':{'id':_0x5aa9ca[_0xc56b('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4b2b55,null))[_0xc56b('0x24')](removeEntity(_0x4b2b55,null))[_0xc56b('0x44')](handleError(_0x4b2b55,null));};exports[_0xc56b('0x4e')]=function(_0x1fd668,_0x1ea627,_0x425b4c){var _0x5d1075;return db[_0xc56b('0x40')]['find']({'where':{'id':_0x1fd668[_0xc56b('0x4d')]['id']},'attributes':['id',_0xc56b('0x4f')]})[_0xc56b('0x24')](handleEntityNotFound(_0x1ea627,null))[_0xc56b('0x24')](function(_0x15e725){if(_0x15e725){var _0x5cae10=require(_0xc56b('0x50'))();_0x5cae10[_0xc56b('0x51')](_0x15e725[_0xc56b('0x4f')]);_0x5cae10['closeSync']();return _0x15e725;}})[_0xc56b('0x24')](respondWithResult(_0x1ea627,null))[_0xc56b('0x44')](handleError(_0x1ea627,null));};
\ No newline at end of file
index f1c437f..f3e3e40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x306a=['./squareOdbc.attributes','exports','define','SquareOdbc','square_odbc','lodash','../../config/logger','api','bluebird','path','rimraf','../../config/environment'];(function(_0x3d2f68,_0x48f637){var _0x1e6690=function(_0x14b36){while(--_0x14b36){_0x3d2f68['push'](_0x3d2f68['shift']());}};_0x1e6690(++_0x48f637);}(_0x306a,0xd1));var _0xa306=function(_0x3f97a7,_0x4732e9){_0x3f97a7=_0x3f97a7-0x0;var _0x4cead3=_0x306a[_0x3f97a7];return _0x4cead3;};'use strict';var _=require(_0xa306('0x0'));var util=require('util');var logger=require(_0xa306('0x1'))(_0xa306('0x2'));var moment=require('moment');var BPromise=require(_0xa306('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa306('0x4'));var rimraf=require(_0xa306('0x5'));var config=require(_0xa306('0x6'));var attributes=require(_0xa306('0x7'));module[_0xa306('0x8')]=function(_0x59a10a,_0x1476d4){return _0x59a10a[_0xa306('0x9')](_0xa306('0xa'),attributes,{'tableName':_0xa306('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x931d=['./squareOdbc.attributes','exports','define','SquareOdbc','square_odbc','lodash','api','moment','bluebird','request-promise','path'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x931d,0x1bd));var _0xd931=function(_0x5f25f7,_0x5ae75f){_0x5f25f7=_0x5f25f7-0x0;var _0x30b621=_0x931d[_0x5f25f7];return _0x30b621;};'use strict';var _=require(_0xd931('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xd931('0x1'));var moment=require(_0xd931('0x2'));var BPromise=require(_0xd931('0x3'));var rp=require(_0xd931('0x4'));var fs=require('fs');var path=require(_0xd931('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd931('0x6'));module[_0xd931('0x7')]=function(_0xef29d1,_0x3e2323){return _0xef29d1[_0xd931('0x8')](_0xd931('0x9'),attributes,{'tableName':_0xd931('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0a39543..8e594ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2db=['message','result','catch','ShowSquareOdbc','SquareOdbc','find','options','where','attributes','include','model','info','stringify','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','SquareOdbc,\x20%s,\x20%s','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0x46082a,_0x2bf919){var _0x5399af=function(_0x2f493e){while(--_0x2f493e){_0x46082a['push'](_0x46082a['shift']());}};_0x5399af(++_0x2bf919);}(_0xd2db,0x115));var _0xbd2d=function(_0x5a9e0a,_0x44a043){_0x5a9e0a=_0x5a9e0a-0x0;var _0x9feb02=_0xd2db[_0x5a9e0a];return _0x9feb02;};'use strict';var _=require(_0xbd2d('0x0'));var util=require(_0xbd2d('0x1'));var moment=require(_0xbd2d('0x2'));var BPromise=require(_0xbd2d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbd2d('0x4'))['db'];var utils=require(_0xbd2d('0x5'));var logger=require(_0xbd2d('0x6'))(_0xbd2d('0x7'));var config=require(_0xbd2d('0x8'));var jayson=require(_0xbd2d('0x9'));var client=jayson[_0xbd2d('0xa')][_0xbd2d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4baac5,_0x26f2c1,_0x5248b3){return new BPromise(function(_0x13705c,_0x42db88){return client[_0xbd2d('0xc')](_0x4baac5,_0x5248b3)[_0xbd2d('0xd')](function(_0x256cd6){logger['info'](_0xbd2d('0xe'),_0x26f2c1,'request\x20sent');logger[_0xbd2d('0xf')](_0xbd2d('0x10'),_0x26f2c1,_0xbd2d('0x11'),JSON['stringify'](_0x256cd6));if(_0x256cd6[_0xbd2d('0x12')]){if(_0x256cd6[_0xbd2d('0x12')][_0xbd2d('0x13')]===0x1f4){logger[_0xbd2d('0x12')]('SquareOdbc,\x20%s,\x20%s',_0x26f2c1,_0x256cd6[_0xbd2d('0x12')][_0xbd2d('0x14')]);return _0x42db88(_0x256cd6[_0xbd2d('0x12')][_0xbd2d('0x14')]);}logger[_0xbd2d('0x12')]('SquareOdbc,\x20%s,\x20%s',_0x26f2c1,_0x256cd6[_0xbd2d('0x12')][_0xbd2d('0x14')]);return _0x13705c(_0x256cd6[_0xbd2d('0x12')][_0xbd2d('0x14')]);}else{logger['info'](_0xbd2d('0xe'),_0x26f2c1,_0xbd2d('0x11'));_0x13705c(_0x256cd6[_0xbd2d('0x15')][_0xbd2d('0x14')]);}})[_0xbd2d('0x16')](function(_0x48c79f){logger[_0xbd2d('0x12')](_0xbd2d('0xe'),_0x26f2c1,_0x48c79f);_0x42db88(_0x48c79f);});});}exports[_0xbd2d('0x17')]=function(_0x3badb4){var _0xdc993=this;return new Promise(function(_0x5c938e,_0x3439f3){return db[_0xbd2d('0x18')][_0xbd2d('0x19')]({'raw':_0x3badb4[_0xbd2d('0x1a')]?_0x3badb4['options']['raw']===undefined?!![]:![]:!![],'where':_0x3badb4['options']?_0x3badb4['options'][_0xbd2d('0x1b')]||null:null,'attributes':_0x3badb4['options']?_0x3badb4[_0xbd2d('0x1a')][_0xbd2d('0x1c')]||null:null,'include':_0x3badb4[_0xbd2d('0x1a')]?_0x3badb4[_0xbd2d('0x1a')][_0xbd2d('0x1d')]?_['map'](_0x3badb4['options'][_0xbd2d('0x1d')],function(_0x5a89f1){return{'model':db[_0x5a89f1[_0xbd2d('0x1e')]],'as':_0x5a89f1['as'],'attributes':_0x5a89f1[_0xbd2d('0x1c')],'include':_0x5a89f1['include']?_['map'](_0x5a89f1[_0xbd2d('0x1d')],function(_0x256aad){return{'model':db[_0x256aad[_0xbd2d('0x1e')]],'as':_0x256aad['as'],'attributes':_0x256aad['attributes'],'include':_0x256aad[_0xbd2d('0x1d')]?_['map'](_0x256aad['include'],function(_0x6be24e){return{'model':db[_0x6be24e[_0xbd2d('0x1e')]],'as':_0x6be24e['as'],'attributes':_0x6be24e[_0xbd2d('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5f2435){logger[_0xbd2d('0x1f')](_0xbd2d('0x17'),_0x3badb4);logger[_0xbd2d('0xf')](_0xbd2d('0x17'),_0x3badb4,JSON[_0xbd2d('0x20')](_0x5f2435));_0x5c938e(_0x5f2435);})['catch'](function(_0x2fcfa6){logger[_0xbd2d('0x12')](_0xbd2d('0x17'),_0x2fcfa6[_0xbd2d('0x14')],_0x3badb4);_0x3439f3(_0xdc993[_0xbd2d('0x12')](0x1f4,_0x2fcfa6[_0xbd2d('0x14')]));});});};
\ No newline at end of file
+var _0xc500=['request','then','info','SquareOdbc,\x20%s,\x20%s','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ShowSquareOdbc','SquareOdbc','options','attributes','include','map','model','stringify','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x4e4519,_0x392ae){var _0x340044=function(_0x11721f){while(--_0x11721f){_0x4e4519['push'](_0x4e4519['shift']());}};_0x340044(++_0x392ae);}(_0xc500,0xfb));var _0x0c50=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc500[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x0c50('0x0'));var util=require('util');var moment=require(_0x0c50('0x1'));var BPromise=require(_0x0c50('0x2'));var rs=require(_0x0c50('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0c50('0x4'))['db'];var utils=require(_0x0c50('0x5'));var logger=require(_0x0c50('0x6'))('rpc');var config=require(_0x0c50('0x7'));var jayson=require(_0x0c50('0x8'));var client=jayson[_0x0c50('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4d8d5f,_0x2ed35a,_0x5a8bda){return new BPromise(function(_0x574854,_0x37413e){return client[_0x0c50('0xa')](_0x4d8d5f,_0x5a8bda)[_0x0c50('0xb')](function(_0x2d28ba){logger[_0x0c50('0xc')](_0x0c50('0xd'),_0x2ed35a,'request\x20sent');logger[_0x0c50('0xe')](_0x0c50('0xf'),_0x2ed35a,'request\x20sent',JSON['stringify'](_0x2d28ba));if(_0x2d28ba[_0x0c50('0x10')]){if(_0x2d28ba[_0x0c50('0x10')][_0x0c50('0x11')]===0x1f4){logger[_0x0c50('0x10')](_0x0c50('0xd'),_0x2ed35a,_0x2d28ba[_0x0c50('0x10')][_0x0c50('0x12')]);return _0x37413e(_0x2d28ba[_0x0c50('0x10')][_0x0c50('0x12')]);}logger[_0x0c50('0x10')](_0x0c50('0xd'),_0x2ed35a,_0x2d28ba['error']['message']);return _0x574854(_0x2d28ba[_0x0c50('0x10')][_0x0c50('0x12')]);}else{logger[_0x0c50('0xc')](_0x0c50('0xd'),_0x2ed35a,'request\x20sent');_0x574854(_0x2d28ba[_0x0c50('0x13')][_0x0c50('0x12')]);}})[_0x0c50('0x14')](function(_0x3bb2e6){logger[_0x0c50('0x10')](_0x0c50('0xd'),_0x2ed35a,_0x3bb2e6);_0x37413e(_0x3bb2e6);});});}exports[_0x0c50('0x15')]=function(_0x564fd4){var _0x1ba2b6=this;return new Promise(function(_0x33da92,_0x38b62e){return db[_0x0c50('0x16')]['find']({'raw':_0x564fd4[_0x0c50('0x17')]?_0x564fd4[_0x0c50('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x564fd4[_0x0c50('0x17')]?_0x564fd4['options']['where']||null:null,'attributes':_0x564fd4['options']?_0x564fd4[_0x0c50('0x17')][_0x0c50('0x18')]||null:null,'include':_0x564fd4[_0x0c50('0x17')]?_0x564fd4[_0x0c50('0x17')][_0x0c50('0x19')]?_[_0x0c50('0x1a')](_0x564fd4[_0x0c50('0x17')][_0x0c50('0x19')],function(_0x113175){return{'model':db[_0x113175[_0x0c50('0x1b')]],'as':_0x113175['as'],'attributes':_0x113175[_0x0c50('0x18')],'include':_0x113175[_0x0c50('0x19')]?_[_0x0c50('0x1a')](_0x113175[_0x0c50('0x19')],function(_0xa3a45e){return{'model':db[_0xa3a45e[_0x0c50('0x1b')]],'as':_0xa3a45e['as'],'attributes':_0xa3a45e[_0x0c50('0x18')],'include':_0xa3a45e[_0x0c50('0x19')]?_[_0x0c50('0x1a')](_0xa3a45e[_0x0c50('0x19')],function(_0x1d478b){return{'model':db[_0x1d478b[_0x0c50('0x1b')]],'as':_0x1d478b['as'],'attributes':_0x1d478b['attributes']};}):[]};}):[]};}):[]:[]})[_0x0c50('0xb')](function(_0x504300){logger['info'](_0x0c50('0x15'),_0x564fd4);logger[_0x0c50('0xe')](_0x0c50('0x15'),_0x564fd4,JSON[_0x0c50('0x1c')](_0x504300));_0x33da92(_0x504300);})[_0x0c50('0x14')](function(_0x492005){logger[_0x0c50('0x10')](_0x0c50('0x15'),_0x492005[_0x0c50('0x12')],_0x564fd4);_0x38b62e(_0x1ba2b6[_0x0c50('0x10')](0x1f4,_0x492005[_0x0c50('0x12')]));});});};
\ No newline at end of file
index 445c53c..db04782 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b12=['../../components/auth/service','../../config/environment','isAuthenticated','/:id','show','get','/:id/users','getUsers','post','create','addUsers','put','update','delete','destroy','exports','multer','util','path','express','fs-extra'];(function(_0x102ff9,_0x907658){var _0x24fa97=function(_0x3622ff){while(--_0x3622ff){_0x102ff9['push'](_0x102ff9['shift']());}};_0x24fa97(++_0x907658);}(_0x5b12,0xa3));var _0x25b1=function(_0x127685,_0x30a406){_0x127685=_0x127685-0x0;var _0x19e2a3=_0x5b12[_0x127685];return _0x19e2a3;};'use strict';var multer=require(_0x25b1('0x0'));var util=require(_0x25b1('0x1'));var path=require(_0x25b1('0x2'));var timeout=require('connect-timeout');var express=require(_0x25b1('0x3'));var router=express['Router']();var fs_extra=require(_0x25b1('0x4'));var auth=require(_0x25b1('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x25b1('0x6'));var controller=require('./squareProject.controller');router['get']('/',auth[_0x25b1('0x7')](),controller['index']);router['get'](_0x25b1('0x8'),auth[_0x25b1('0x7')](),controller[_0x25b1('0x9')]);router[_0x25b1('0xa')](_0x25b1('0xb'),auth[_0x25b1('0x7')](),controller[_0x25b1('0xc')]);router[_0x25b1('0xd')]('/',auth['isAuthenticated'](),controller[_0x25b1('0xe')]);router[_0x25b1('0xd')](_0x25b1('0xb'),auth[_0x25b1('0x7')](),controller[_0x25b1('0xf')]);router[_0x25b1('0x10')](_0x25b1('0x8'),auth[_0x25b1('0x7')](),controller[_0x25b1('0x11')]);router[_0x25b1('0x12')](_0x25b1('0x8'),auth[_0x25b1('0x7')](),controller[_0x25b1('0x13')]);router[_0x25b1('0x12')](_0x25b1('0xb'),auth[_0x25b1('0x7')](),controller['removeUsers']);module[_0x25b1('0x14')]=router;
\ No newline at end of file
+var _0x061a=['express','Router','fs-extra','../../components/auth/service','../../config/environment','./squareProject.controller','isAuthenticated','index','get','/:id','/:id/users','post','addUsers','put','update','destroy','delete','removeUsers','exports','multer','util','path','connect-timeout'];(function(_0x3a07c1,_0x34d57f){var _0x2bbe15=function(_0x5a02fb){while(--_0x5a02fb){_0x3a07c1['push'](_0x3a07c1['shift']());}};_0x2bbe15(++_0x34d57f);}(_0x061a,0x13e));var _0xa061=function(_0x2843b4,_0x7f8887){_0x2843b4=_0x2843b4-0x0;var _0x2bbc06=_0x061a[_0x2843b4];return _0x2bbc06;};'use strict';var multer=require(_0xa061('0x0'));var util=require(_0xa061('0x1'));var path=require(_0xa061('0x2'));var timeout=require(_0xa061('0x3'));var express=require(_0xa061('0x4'));var router=express[_0xa061('0x5')]();var fs_extra=require(_0xa061('0x6'));var auth=require(_0xa061('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xa061('0x8'));var controller=require(_0xa061('0x9'));router['get']('/',auth[_0xa061('0xa')](),controller[_0xa061('0xb')]);router[_0xa061('0xc')](_0xa061('0xd'),auth[_0xa061('0xa')](),controller['show']);router[_0xa061('0xc')](_0xa061('0xe'),auth[_0xa061('0xa')](),controller['getUsers']);router['post']('/',auth[_0xa061('0xa')](),controller['create']);router[_0xa061('0xf')](_0xa061('0xe'),auth[_0xa061('0xa')](),controller[_0xa061('0x10')]);router[_0xa061('0x11')](_0xa061('0xd'),auth[_0xa061('0xa')](),controller[_0xa061('0x12')]);router['delete']('/:id',auth[_0xa061('0xa')](),controller[_0xa061('0x13')]);router[_0xa061('0x14')]('/:id/users',auth[_0xa061('0xa')](),controller[_0xa061('0x15')]);module[_0xa061('0x16')]=router;
\ No newline at end of file
index c84ba29..6558863 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ec5=['production','DATE','exports','name','STRING','TEXT','long','getDataValue','preproduction','toString','utf8','BLOB'];(function(_0x142197,_0x81286c){var _0x2cc6a2=function(_0xf5f3ac){while(--_0xf5f3ac){_0x142197['push'](_0x142197['shift']());}};_0x2cc6a2(++_0x81286c);}(_0x3ec5,0x176));var _0x53ec=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x3ec5[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require('sequelize');module[_0x53ec('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x53ec('0x1'),'allowNull':![]},'description':{'type':Sequelize[_0x53ec('0x2')]},'notes':{'type':Sequelize[_0x53ec('0x3')]},'preproduction':{'type':Sequelize['BLOB'](_0x53ec('0x4')),'get':function(){if(this[_0x53ec('0x5')](_0x53ec('0x6'))){return this['getDataValue'](_0x53ec('0x6'))[_0x53ec('0x7')](_0x53ec('0x8'));}}},'production':{'type':Sequelize[_0x53ec('0x9')](_0x53ec('0x4')),'get':function(){if(this[_0x53ec('0x5')](_0x53ec('0xa'))){return this['getDataValue'](_0x53ec('0xa'))[_0x53ec('0x7')]('utf8');}}},'savedAt':{'type':Sequelize[_0x53ec('0xb')]},'publishedAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0x675b=['utf8','production','DATE','sequelize','exports','STRING','name','TEXT','BLOB','long','getDataValue','preproduction','toString'];(function(_0x652015,_0x366c58){var _0x1cea51=function(_0x2b0f8b){while(--_0x2b0f8b){_0x652015['push'](_0x652015['shift']());}};_0x1cea51(++_0x366c58);}(_0x675b,0x13b));var _0xb675=function(_0x3eb6b8,_0x2b7af2){_0x3eb6b8=_0x3eb6b8-0x0;var _0x4b4bb9=_0x675b[_0x3eb6b8];return _0x4b4bb9;};'use strict';var Sequelize=require(_0xb675('0x0'));module[_0xb675('0x1')]={'name':{'type':Sequelize[_0xb675('0x2')],'unique':_0xb675('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0xb675('0x2')]},'notes':{'type':Sequelize[_0xb675('0x4')]},'preproduction':{'type':Sequelize[_0xb675('0x5')](_0xb675('0x6')),'get':function(){if(this[_0xb675('0x7')](_0xb675('0x8'))){return this[_0xb675('0x7')](_0xb675('0x8'))[_0xb675('0x9')](_0xb675('0xa'));}}},'production':{'type':Sequelize[_0xb675('0x5')](_0xb675('0x6')),'get':function(){if(this[_0xb675('0x7')](_0xb675('0xb'))){return this[_0xb675('0x7')]('production')['toString'](_0xb675('0xa'));}}},'savedAt':{'type':Sequelize[_0xb675('0xc')]},'publishedAt':{'type':Sequelize[_0xb675('0xc')]}};
\ No newline at end of file
index 4a312e0..02f6437 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d7f=['addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','findOne','length','order','getUsers','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','squel','crypto','jsforce','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','socket.io-emitter','./squareProject.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','get','error','stack','name','send','map','SquareProject','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','show','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','UserProfileResource','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','destroy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2d7f,0xd3));var _0xf2d7=function(_0x40afdc,_0x1d140a){_0x40afdc=_0x40afdc-0x0;var _0x3662ac=_0x2d7f[_0x40afdc];return _0x3662ac;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf2d7('0x0'));var zipdir=require(_0xf2d7('0x1'));var jsonpatch=require(_0xf2d7('0x2'));var rp=require(_0xf2d7('0x3'));var moment=require(_0xf2d7('0x4'));var BPromise=require(_0xf2d7('0x5'));var Mustache=require(_0xf2d7('0x6'));var util=require(_0xf2d7('0x7'));var path=require(_0xf2d7('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf2d7('0x9'));var fs=require('fs');var fs_extra=require(_0xf2d7('0xa'));var _=require('lodash');var squel=require(_0xf2d7('0xb'));var crypto=require(_0xf2d7('0xc'));var jsforce=require(_0xf2d7('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf2d7('0xe'));var querystring=require(_0xf2d7('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xf2d7('0x10'));var qs=require(_0xf2d7('0x11'));var as=require(_0xf2d7('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf2d7('0x13'))(_0xf2d7('0x14'));var utils=require(_0xf2d7('0x15'));var config=require(_0xf2d7('0x16'));var licenseUtil=require(_0xf2d7('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xf2d7('0x18')](config[_0xf2d7('0x19')],{'host':_0xf2d7('0x1a'),'port':0x18eb});var socket=require(_0xf2d7('0x1b'))(new Redis(config[_0xf2d7('0x19')]));require(_0xf2d7('0x1c'))[_0xf2d7('0x1d')](socket);function respondWithStatusCode(_0x18033b,_0xe97cf5){_0xe97cf5=_0xe97cf5||0xcc;return function(_0x165831){if(_0x165831){return _0x18033b[_0xf2d7('0x1e')](_0xe97cf5);}return _0x18033b[_0xf2d7('0x1f')](_0xe97cf5)[_0xf2d7('0x20')]();};}function respondWithResult(_0x1baab2,_0x4f0375){_0x4f0375=_0x4f0375||0xc8;return function(_0x169197){if(_0x169197){return _0x1baab2['status'](_0x4f0375)[_0xf2d7('0x21')](_0x169197);}};}function respondWithFilteredResult(_0x41123f,_0x509f98){return function(_0x1b1fa9){if(_0x1b1fa9){var _0x573278=typeof _0x509f98['offset']===_0xf2d7('0x22')&&typeof _0x509f98[_0xf2d7('0x23')]===_0xf2d7('0x22');var _0x3d1ebe=_0x1b1fa9[_0xf2d7('0x24')];var _0x4de444=_0x573278?0x0:_0x509f98[_0xf2d7('0x25')];var _0x554378=_0x573278?_0x1b1fa9[_0xf2d7('0x24')]:_0x509f98[_0xf2d7('0x25')]+_0x509f98[_0xf2d7('0x23')];var _0x1f1510;if(_0x554378>=_0x3d1ebe){_0x554378=_0x3d1ebe;_0x1f1510=0xc8;}else{_0x1f1510=0xce;}_0x41123f[_0xf2d7('0x1f')](_0x1f1510);return _0x41123f[_0xf2d7('0x26')](_0xf2d7('0x27'),_0x4de444+'-'+_0x554378+'/'+_0x3d1ebe)[_0xf2d7('0x21')](_0x1b1fa9);}return null;};}function patchUpdates(_0xea0680){return function(_0x585bfa){try{jsonpatch[_0xf2d7('0x28')](_0x585bfa,_0xea0680,!![]);}catch(_0x24f266){return BPromise[_0xf2d7('0x29')](_0x24f266);}return _0x585bfa[_0xf2d7('0x2a')]();};}function saveUpdates(_0x26c767,_0x154111){return function(_0x33435e){if(_0x33435e){return _0x33435e[_0xf2d7('0x2b')](_0x26c767)['then'](function(_0x527c82){return _0x527c82;});}return null;};}function removeEntity(_0x5c0406,_0x40ddef){return function(_0x5eea68){if(_0x5eea68){return _0x5eea68['destroy']()[_0xf2d7('0x2c')](function(){var _0x513f1e=_0x5eea68[_0xf2d7('0x2d')]({'plain':!![]});var _0x4e4921='SquareProjects';return db['UserProfileResource']['destroy']({'where':{'type':_0x4e4921,'resourceId':_0x513f1e['id']}})[_0xf2d7('0x2c')](function(){return _0x5eea68;});})[_0xf2d7('0x2c')](function(){_0x5c0406[_0xf2d7('0x1f')](0xcc)[_0xf2d7('0x20')]();});}};}function handleEntityNotFound(_0x3f898e,_0x115d56){return function(_0x256440){if(!_0x256440){_0x3f898e['sendStatus'](0x194);}return _0x256440;};}function handleError(_0x56491b,_0x4f3689){_0x4f3689=_0x4f3689||0x1f4;return function(_0x429563){logger[_0xf2d7('0x2e')](_0x429563[_0xf2d7('0x2f')]);if(_0x429563[_0xf2d7('0x30')]){delete _0x429563[_0xf2d7('0x30')];}_0x56491b[_0xf2d7('0x1f')](_0x4f3689)[_0xf2d7('0x31')](_0x429563);};}exports['index']=function(_0x4cb5db,_0x1bae7c){var _0x56a743={},_0x1e79a3={},_0x5b6527={'count':0x0,'rows':[]};var _0x1868de=_[_0xf2d7('0x32')](db[_0xf2d7('0x33')][_0xf2d7('0x34')],function(_0x199196){return{'name':_0x199196[_0xf2d7('0x35')],'type':_0x199196[_0xf2d7('0x36')][_0xf2d7('0x37')]};});_0x1e79a3[_0xf2d7('0x38')]=_[_0xf2d7('0x32')](_0x1868de,_0xf2d7('0x30'));_0x1e79a3[_0xf2d7('0x39')]=_[_0xf2d7('0x3a')](_0x4cb5db[_0xf2d7('0x39')]);_0x1e79a3[_0xf2d7('0x3b')]=_['intersection'](_0x1e79a3[_0xf2d7('0x38')],_0x1e79a3['query']);_0x56a743['attributes']=_[_0xf2d7('0x3c')](_0x1e79a3[_0xf2d7('0x38')],qs[_0xf2d7('0x3d')](_0x4cb5db['query'][_0xf2d7('0x3d')]));_0x56a743[_0xf2d7('0x3e')]=_0x56a743[_0xf2d7('0x3e')]['length']?_0x56a743[_0xf2d7('0x3e')]:_0x1e79a3[_0xf2d7('0x38')];if(!_0x4cb5db[_0xf2d7('0x39')][_0xf2d7('0x3f')](_0xf2d7('0x40'))){_0x56a743[_0xf2d7('0x23')]=qs[_0xf2d7('0x23')](_0x4cb5db[_0xf2d7('0x39')][_0xf2d7('0x23')]);_0x56a743[_0xf2d7('0x25')]=qs['offset'](_0x4cb5db[_0xf2d7('0x39')][_0xf2d7('0x25')]);}_0x56a743['order']=qs[_0xf2d7('0x41')](_0x4cb5db['query'][_0xf2d7('0x41')]);_0x56a743[_0xf2d7('0x42')]=qs[_0xf2d7('0x3b')](_[_0xf2d7('0x43')](_0x4cb5db[_0xf2d7('0x39')],_0x1e79a3[_0xf2d7('0x3b')]),_0x1868de);if(_0x4cb5db[_0xf2d7('0x39')][_0xf2d7('0x44')]){_0x56a743[_0xf2d7('0x42')]=_[_0xf2d7('0x45')](_0x56a743[_0xf2d7('0x42')],{'$or':_['map'](_0x1868de,function(_0x28b13e){if(_0x28b13e[_0xf2d7('0x36')]!==_0xf2d7('0x46')){var _0x4621e5={};_0x4621e5[_0x28b13e[_0xf2d7('0x30')]]={'$like':'%'+_0x4cb5db[_0xf2d7('0x39')]['filter']+'%'};return _0x4621e5;}})});}_0x56a743=_[_0xf2d7('0x45')]({},_0x56a743,_0x4cb5db[_0xf2d7('0x47')]);var _0x25237d={'where':_0x56a743[_0xf2d7('0x42')]};return db[_0xf2d7('0x33')][_0xf2d7('0x24')](_0x25237d)[_0xf2d7('0x2c')](function(_0xff6c0a){_0x5b6527[_0xf2d7('0x24')]=_0xff6c0a;if(_0x4cb5db['query']['includeAll']){_0x56a743[_0xf2d7('0x48')]=[{'all':!![]}];}return db['SquareProject']['findAll'](_0x56a743);})[_0xf2d7('0x2c')](function(_0x3bee9a){_0x5b6527[_0xf2d7('0x49')]=_0x3bee9a;return _0x5b6527;})[_0xf2d7('0x2c')](respondWithFilteredResult(_0x1bae7c,_0x56a743))['catch'](handleError(_0x1bae7c,null));};exports[_0xf2d7('0x4a')]=function(_0x3011fd,_0x17d267){var _0x18880f={'raw':![],'where':{'id':_0x3011fd['params']['id']}},_0x1095fd={};_0x1095fd[_0xf2d7('0x38')]=_[_0xf2d7('0x3a')](db['SquareProject'][_0xf2d7('0x34')]);_0x1095fd[_0xf2d7('0x39')]=_[_0xf2d7('0x3a')](_0x3011fd['query']);_0x1095fd['filters']=_['intersection'](_0x1095fd[_0xf2d7('0x38')],_0x1095fd[_0xf2d7('0x39')]);_0x18880f[_0xf2d7('0x3e')]=_[_0xf2d7('0x3c')](_0x1095fd[_0xf2d7('0x38')],qs[_0xf2d7('0x3d')](_0x3011fd['query'][_0xf2d7('0x3d')]));_0x18880f['attributes']=_0x18880f['attributes']['length']?_0x18880f[_0xf2d7('0x3e')]:_0x1095fd[_0xf2d7('0x38')];if(_0x3011fd[_0xf2d7('0x39')][_0xf2d7('0x4b')]){_0x18880f['include']=[{'all':!![]}];}_0x18880f=_[_0xf2d7('0x45')]({},_0x18880f,_0x3011fd[_0xf2d7('0x47')]);return db[_0xf2d7('0x33')]['find'](_0x18880f)[_0xf2d7('0x2c')](handleEntityNotFound(_0x17d267,null))['then'](respondWithResult(_0x17d267,null))['catch'](handleError(_0x17d267,null));};exports['create']=function(_0x5f5470,_0x56d552){return db[_0xf2d7('0x33')][_0xf2d7('0x4c')](_0x5f5470[_0xf2d7('0x4d')],{})[_0xf2d7('0x2c')](function(_0x8c175){var _0x4b6841=_0x5f5470[_0xf2d7('0x4e')][_0xf2d7('0x2d')]({'plain':!![]});if(!_0x4b6841)throw new Error(_0xf2d7('0x4f'));if(_0x4b6841[_0xf2d7('0x50')]===_0xf2d7('0x4e')){var _0xf7d398=_0x8c175[_0xf2d7('0x2d')]({'plain':!![]});var _0x576a80='SquareProjects';return db[_0xf2d7('0x51')][_0xf2d7('0x52')]({'where':{'name':_0x576a80,'userProfileId':_0x4b6841[_0xf2d7('0x53')]},'raw':!![]})['then'](function(_0x7e0904){if(_0x7e0904&&_0x7e0904['autoAssociation']===0x0){return db[_0xf2d7('0x54')][_0xf2d7('0x4c')]({'name':_0xf7d398[_0xf2d7('0x30')],'resourceId':_0xf7d398['id'],'type':_0x7e0904[_0xf2d7('0x30')],'sectionId':_0x7e0904['id']},{})[_0xf2d7('0x2c')](function(){return _0x8c175;});}else{return _0x8c175;}})[_0xf2d7('0x55')](function(_0x239416){logger[_0xf2d7('0x2e')](_0xf2d7('0x56'),_0x239416);throw _0x239416;});}return _0x8c175;})[_0xf2d7('0x2c')](respondWithResult(_0x56d552,0xc9))[_0xf2d7('0x55')](handleError(_0x56d552,null));};exports[_0xf2d7('0x2b')]=function(_0x5d47dc,_0x17bb06){if(_0x5d47dc['body']['id']){delete _0x5d47dc[_0xf2d7('0x4d')]['id'];}return db[_0xf2d7('0x33')][_0xf2d7('0x52')]({'where':{'id':_0x5d47dc[_0xf2d7('0x57')]['id']}})['then'](handleEntityNotFound(_0x17bb06,null))[_0xf2d7('0x2c')](saveUpdates(_0x5d47dc['body'],null))[_0xf2d7('0x2c')](respondWithResult(_0x17bb06,null))[_0xf2d7('0x55')](handleError(_0x17bb06,null));};exports[_0xf2d7('0x58')]=function(_0x4df3a1,_0x4fefe2){return db[_0xf2d7('0x33')][_0xf2d7('0x52')]({'where':{'id':_0x4df3a1[_0xf2d7('0x57')]['id']}})['then'](handleEntityNotFound(_0x4fefe2,null))[_0xf2d7('0x2c')](removeEntity(_0x4fefe2,null))['catch'](handleError(_0x4fefe2,null));};exports[_0xf2d7('0x59')]=function(_0x3b2fb0,_0x8ffed6,_0x583274){return db['SquareProject'][_0xf2d7('0x52')]({'where':{'id':_0x3b2fb0['params']['id']}})[_0xf2d7('0x2c')](handleEntityNotFound(_0x8ffed6,null))[_0xf2d7('0x2c')](function(_0x49ddbe){if(_0x49ddbe){return _0x49ddbe['addUsers'](_0x3b2fb0[_0xf2d7('0x4d')][_0xf2d7('0x5a')],_[_0xf2d7('0x5b')](_0x3b2fb0[_0xf2d7('0x4d')],[_0xf2d7('0x5a'),'id'])||{});}})[_0xf2d7('0x2c')](respondWithResult(_0x8ffed6,null))[_0xf2d7('0x55')](handleError(_0x8ffed6,null));};exports[_0xf2d7('0x5c')]=function(_0x15828f,_0x179b29,_0x32b880){return db['SquareProject']['find']({'where':{'id':_0x15828f[_0xf2d7('0x57')]['id']}})['then'](handleEntityNotFound(_0x179b29,null))[_0xf2d7('0x2c')](function(_0x45c19b){if(_0x45c19b){return _0x45c19b[_0xf2d7('0x5c')](_0x15828f[_0xf2d7('0x39')]['ids'])[_0xf2d7('0x2c')](function(){if(_[_0xf2d7('0x5d')](_0x15828f[_0xf2d7('0x39')][_0xf2d7('0x5a')])){for(var _0x509a62=0x0;_0x509a62<_0x15828f['query'][_0xf2d7('0x5a')]['length'];_0x509a62+=0x1){socket[_0xf2d7('0x5e')](_0xf2d7('0x5f'),{'UserId':Number(_0x15828f['query'][_0xf2d7('0x5a')][_0x509a62]),'SquareProjectId':Number(_0x15828f[_0xf2d7('0x57')]['id'])});}}else{socket['emit'](_0xf2d7('0x5f'),{'UserId':Number(_0x15828f[_0xf2d7('0x39')]['ids']),'SquareProjectId':Number(_0x15828f[_0xf2d7('0x57')]['id'])});}});}})[_0xf2d7('0x2c')](respondWithStatusCode(_0x179b29,null))[_0xf2d7('0x55')](handleError(_0x179b29,null));};exports['getUsers']=function(_0x44e5ca,_0x33f028,_0x2a629c){var _0x45705b={};var _0x342c03={};var _0x35dc0b;var _0x243767;return db[_0xf2d7('0x33')][_0xf2d7('0x60')]({'where':{'id':_0x44e5ca[_0xf2d7('0x57')]['id']}})['then'](handleEntityNotFound(_0x33f028,null))[_0xf2d7('0x2c')](function(_0x12662b){if(_0x12662b){_0x35dc0b=_0x12662b;_0x342c03[_0xf2d7('0x38')]=_[_0xf2d7('0x3a')](db['User'][_0xf2d7('0x34')]);_0x342c03['query']=_[_0xf2d7('0x3a')](_0x44e5ca[_0xf2d7('0x39')]);_0x342c03['filters']=_['intersection'](_0x342c03[_0xf2d7('0x38')],_0x342c03['query']);_0x45705b[_0xf2d7('0x3e')]=_[_0xf2d7('0x3c')](_0x342c03[_0xf2d7('0x38')],qs[_0xf2d7('0x3d')](_0x44e5ca[_0xf2d7('0x39')][_0xf2d7('0x3d')]));_0x45705b[_0xf2d7('0x3e')]=_0x45705b[_0xf2d7('0x3e')][_0xf2d7('0x61')]?_0x45705b[_0xf2d7('0x3e')]:_0x342c03[_0xf2d7('0x38')];_0x45705b[_0xf2d7('0x62')]=qs[_0xf2d7('0x41')](_0x44e5ca[_0xf2d7('0x39')][_0xf2d7('0x41')]);_0x45705b[_0xf2d7('0x42')]=qs[_0xf2d7('0x3b')](_[_0xf2d7('0x43')](_0x44e5ca['query'],_0x342c03[_0xf2d7('0x3b')]));if(_0x44e5ca[_0xf2d7('0x39')][_0xf2d7('0x44')]){_0x45705b['where']=_[_0xf2d7('0x45')](_0x45705b[_0xf2d7('0x42')],{'$or':_[_0xf2d7('0x32')](_0x45705b[_0xf2d7('0x3e')],function(_0x4ee58a){var _0x5ada61={};_0x5ada61[_0x4ee58a]={'$like':'%'+_0x44e5ca['query']['filter']+'%'};return _0x5ada61;})});}_0x45705b=_[_0xf2d7('0x45')]({},_0x45705b,_0x44e5ca[_0xf2d7('0x47')]);return _0x35dc0b[_0xf2d7('0x63')](_0x45705b);}})[_0xf2d7('0x2c')](function(_0x35cf48){if(_0x35cf48){_0x243767=_0x35cf48[_0xf2d7('0x61')];if(!_0x44e5ca[_0xf2d7('0x39')][_0xf2d7('0x3f')](_0xf2d7('0x40'))){_0x45705b[_0xf2d7('0x23')]=qs[_0xf2d7('0x23')](_0x44e5ca[_0xf2d7('0x39')][_0xf2d7('0x23')]);_0x45705b[_0xf2d7('0x25')]=qs['offset'](_0x44e5ca[_0xf2d7('0x39')][_0xf2d7('0x25')]);}return _0x35dc0b[_0xf2d7('0x63')](_0x45705b);}})[_0xf2d7('0x2c')](function(_0x5e53d1){if(_0x5e53d1){return _0x5e53d1?{'count':_0x243767,'rows':_0x5e53d1}:null;}})[_0xf2d7('0x2c')](respondWithResult(_0x33f028,null))[_0xf2d7('0x55')](handleError(_0x33f028,null));};
\ No newline at end of file
+var _0x991b=['role','SquareProjects','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','getUsers','findOne','User','hasOwnProperty','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./squareProject.socket','register','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','update','then','get','UserProfileResource','destroy','end','error','name','send','index','map','SquareProject','rawAttributes','fieldName','type','model','query','attributes','intersection','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','rows','catch','show','params','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x3f7146,_0x824eba){var _0x316350=function(_0x57d1c5){while(--_0x57d1c5){_0x3f7146['push'](_0x3f7146['shift']());}};_0x316350(++_0x824eba);}(_0x991b,0x19d));var _0xb991=function(_0x2ba170,_0x10b923){_0x2ba170=_0x2ba170-0x0;var _0x452594=_0x991b[_0x2ba170];return _0x452594;};'use strict';var emlformat=require(_0xb991('0x0'));var rimraf=require(_0xb991('0x1'));var zipdir=require(_0xb991('0x2'));var jsonpatch=require(_0xb991('0x3'));var rp=require('request-promise');var moment=require(_0xb991('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb991('0x5'));var util=require(_0xb991('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb991('0x7'));var _=require('lodash');var squel=require(_0xb991('0x8'));var crypto=require(_0xb991('0x9'));var jsforce=require(_0xb991('0xa'));var deskjs=require(_0xb991('0xb'));var toCsv=require(_0xb991('0xc'));var querystring=require(_0xb991('0xd'));var Papa=require(_0xb991('0xe'));var Redis=require(_0xb991('0xf'));var authService=require(_0xb991('0x10'));var qs=require(_0xb991('0x11'));var as=require(_0xb991('0x12'));var hardwareService=require(_0xb991('0x13'));var logger=require(_0xb991('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xb991('0x15'));var licenseUtil=require(_0xb991('0x16'));var db=require(_0xb991('0x17'))['db'];config['redis']=_['defaults'](config[_0xb991('0x18')],{'host':_0xb991('0x19'),'port':0x18eb});var socket=require(_0xb991('0x1a'))(new Redis(config[_0xb991('0x18')]));require(_0xb991('0x1b'))[_0xb991('0x1c')](socket);function respondWithStatusCode(_0x53baa8,_0x5e7798){_0x5e7798=_0x5e7798||0xcc;return function(_0x5773ed){if(_0x5773ed){return _0x53baa8[_0xb991('0x1d')](_0x5e7798);}return _0x53baa8['status'](_0x5e7798)['end']();};}function respondWithResult(_0x4dd452,_0x3c40ab){_0x3c40ab=_0x3c40ab||0xc8;return function(_0x446d01){if(_0x446d01){return _0x4dd452[_0xb991('0x1e')](_0x3c40ab)['json'](_0x446d01);}};}function respondWithFilteredResult(_0x382625,_0x9c741c){return function(_0x4629df){if(_0x4629df){var _0x245df0=typeof _0x9c741c['offset']===_0xb991('0x1f')&&typeof _0x9c741c[_0xb991('0x20')]===_0xb991('0x1f');var _0x282083=_0x4629df[_0xb991('0x21')];var _0x3e9ab4=_0x245df0?0x0:_0x9c741c[_0xb991('0x22')];var _0x28f724=_0x245df0?_0x4629df[_0xb991('0x21')]:_0x9c741c[_0xb991('0x22')]+_0x9c741c[_0xb991('0x20')];var _0x40e2cb;if(_0x28f724>=_0x282083){_0x28f724=_0x282083;_0x40e2cb=0xc8;}else{_0x40e2cb=0xce;}_0x382625[_0xb991('0x1e')](_0x40e2cb);return _0x382625[_0xb991('0x23')](_0xb991('0x24'),_0x3e9ab4+'-'+_0x28f724+'/'+_0x282083)[_0xb991('0x25')](_0x4629df);}return null;};}function patchUpdates(_0x41ed00){return function(_0x184611){try{jsonpatch[_0xb991('0x26')](_0x184611,_0x41ed00,!![]);}catch(_0x2fc2b1){return BPromise[_0xb991('0x27')](_0x2fc2b1);}return _0x184611['save']();};}function saveUpdates(_0x4504b4,_0x49b85d){return function(_0x23a4a5){if(_0x23a4a5){return _0x23a4a5[_0xb991('0x28')](_0x4504b4)[_0xb991('0x29')](function(_0x40c0dc){return _0x40c0dc;});}return null;};}function removeEntity(_0x1c4178,_0xd86256){return function(_0x569748){if(_0x569748){return _0x569748['destroy']()['then'](function(){var _0x5b6d20=_0x569748[_0xb991('0x2a')]({'plain':!![]});var _0x46eed4='SquareProjects';return db[_0xb991('0x2b')][_0xb991('0x2c')]({'where':{'type':_0x46eed4,'resourceId':_0x5b6d20['id']}})[_0xb991('0x29')](function(){return _0x569748;});})['then'](function(){_0x1c4178['status'](0xcc)[_0xb991('0x2d')]();});}};}function handleEntityNotFound(_0x3e8899,_0x29ff46){return function(_0x239d24){if(!_0x239d24){_0x3e8899['sendStatus'](0x194);}return _0x239d24;};}function handleError(_0x28d510,_0x3f6944){_0x3f6944=_0x3f6944||0x1f4;return function(_0x164fe3){logger[_0xb991('0x2e')](_0x164fe3['stack']);if(_0x164fe3['name']){delete _0x164fe3[_0xb991('0x2f')];}_0x28d510[_0xb991('0x1e')](_0x3f6944)[_0xb991('0x30')](_0x164fe3);};}exports[_0xb991('0x31')]=function(_0x35a11d,_0x112a66){var _0x465c06={},_0x49f231={},_0x5ee269={'count':0x0,'rows':[]};var _0x8569f=_[_0xb991('0x32')](db[_0xb991('0x33')][_0xb991('0x34')],function(_0x3498fd){return{'name':_0x3498fd[_0xb991('0x35')],'type':_0x3498fd[_0xb991('0x36')]['key']};});_0x49f231[_0xb991('0x37')]=_['map'](_0x8569f,_0xb991('0x2f'));_0x49f231[_0xb991('0x38')]=_['keys'](_0x35a11d[_0xb991('0x38')]);_0x49f231['filters']=_['intersection'](_0x49f231[_0xb991('0x37')],_0x49f231[_0xb991('0x38')]);_0x465c06[_0xb991('0x39')]=_[_0xb991('0x3a')](_0x49f231[_0xb991('0x37')],qs['fields'](_0x35a11d['query'][_0xb991('0x3b')]));_0x465c06[_0xb991('0x39')]=_0x465c06[_0xb991('0x39')][_0xb991('0x3c')]?_0x465c06[_0xb991('0x39')]:_0x49f231[_0xb991('0x37')];if(!_0x35a11d[_0xb991('0x38')]['hasOwnProperty'](_0xb991('0x3d'))){_0x465c06[_0xb991('0x20')]=qs[_0xb991('0x20')](_0x35a11d[_0xb991('0x38')][_0xb991('0x20')]);_0x465c06[_0xb991('0x22')]=qs[_0xb991('0x22')](_0x35a11d['query'][_0xb991('0x22')]);}_0x465c06[_0xb991('0x3e')]=qs['sort'](_0x35a11d[_0xb991('0x38')][_0xb991('0x3f')]);_0x465c06[_0xb991('0x40')]=qs[_0xb991('0x41')](_[_0xb991('0x42')](_0x35a11d[_0xb991('0x38')],_0x49f231['filters']),_0x8569f);if(_0x35a11d[_0xb991('0x38')][_0xb991('0x43')]){_0x465c06[_0xb991('0x40')]=_[_0xb991('0x44')](_0x465c06[_0xb991('0x40')],{'$or':_[_0xb991('0x32')](_0x8569f,function(_0x2eba77){if(_0x2eba77[_0xb991('0x36')]!==_0xb991('0x45')){var _0x159c88={};_0x159c88[_0x2eba77['name']]={'$like':'%'+_0x35a11d[_0xb991('0x38')][_0xb991('0x43')]+'%'};return _0x159c88;}})});}_0x465c06=_[_0xb991('0x44')]({},_0x465c06,_0x35a11d[_0xb991('0x46')]);var _0x43920b={'where':_0x465c06['where']};return db[_0xb991('0x33')][_0xb991('0x21')](_0x43920b)[_0xb991('0x29')](function(_0x52c476){_0x5ee269[_0xb991('0x21')]=_0x52c476;if(_0x35a11d[_0xb991('0x38')]['includeAll']){_0x465c06[_0xb991('0x47')]=[{'all':!![]}];}return db[_0xb991('0x33')]['findAll'](_0x465c06);})[_0xb991('0x29')](function(_0x25f47a){_0x5ee269[_0xb991('0x48')]=_0x25f47a;return _0x5ee269;})[_0xb991('0x29')](respondWithFilteredResult(_0x112a66,_0x465c06))[_0xb991('0x49')](handleError(_0x112a66,null));};exports[_0xb991('0x4a')]=function(_0x4cccc4,_0x53f9d9){var _0xbc0421={'raw':![],'where':{'id':_0x4cccc4[_0xb991('0x4b')]['id']}},_0x4965e3={};_0x4965e3[_0xb991('0x37')]=_[_0xb991('0x4c')](db['SquareProject'][_0xb991('0x34')]);_0x4965e3[_0xb991('0x38')]=_[_0xb991('0x4c')](_0x4cccc4[_0xb991('0x38')]);_0x4965e3[_0xb991('0x41')]=_['intersection'](_0x4965e3[_0xb991('0x37')],_0x4965e3['query']);_0xbc0421['attributes']=_[_0xb991('0x3a')](_0x4965e3[_0xb991('0x37')],qs[_0xb991('0x3b')](_0x4cccc4[_0xb991('0x38')]['fields']));_0xbc0421[_0xb991('0x39')]=_0xbc0421[_0xb991('0x39')][_0xb991('0x3c')]?_0xbc0421['attributes']:_0x4965e3[_0xb991('0x37')];if(_0x4cccc4[_0xb991('0x38')]['includeAll']){_0xbc0421[_0xb991('0x47')]=[{'all':!![]}];}_0xbc0421=_[_0xb991('0x44')]({},_0xbc0421,_0x4cccc4[_0xb991('0x46')]);return db['SquareProject'][_0xb991('0x4d')](_0xbc0421)[_0xb991('0x29')](handleEntityNotFound(_0x53f9d9,null))['then'](respondWithResult(_0x53f9d9,null))[_0xb991('0x49')](handleError(_0x53f9d9,null));};exports[_0xb991('0x4e')]=function(_0x40f12a,_0x2c0729){return db[_0xb991('0x33')][_0xb991('0x4e')](_0x40f12a[_0xb991('0x4f')],{})['then'](function(_0x124446){var _0x4c376f=_0x40f12a[_0xb991('0x50')]['get']({'plain':!![]});if(!_0x4c376f)throw new Error(_0xb991('0x51'));if(_0x4c376f[_0xb991('0x52')]===_0xb991('0x50')){var _0x1c5f88=_0x124446[_0xb991('0x2a')]({'plain':!![]});var _0x285d31=_0xb991('0x53');return db[_0xb991('0x54')]['find']({'where':{'name':_0x285d31,'userProfileId':_0x4c376f[_0xb991('0x55')]},'raw':!![]})['then'](function(_0x5d8f4f){if(_0x5d8f4f&&_0x5d8f4f[_0xb991('0x56')]===0x0){return db[_0xb991('0x2b')][_0xb991('0x4e')]({'name':_0x1c5f88[_0xb991('0x2f')],'resourceId':_0x1c5f88['id'],'type':_0x5d8f4f['name'],'sectionId':_0x5d8f4f['id']},{})[_0xb991('0x29')](function(){return _0x124446;});}else{return _0x124446;}})[_0xb991('0x49')](function(_0x42f811){logger[_0xb991('0x2e')](_0xb991('0x57'),_0x42f811);throw _0x42f811;});}return _0x124446;})['then'](respondWithResult(_0x2c0729,0xc9))['catch'](handleError(_0x2c0729,null));};exports[_0xb991('0x28')]=function(_0x8734f6,_0x24c3ef){if(_0x8734f6[_0xb991('0x4f')]['id']){delete _0x8734f6[_0xb991('0x4f')]['id'];}return db['SquareProject'][_0xb991('0x4d')]({'where':{'id':_0x8734f6[_0xb991('0x4b')]['id']}})['then'](handleEntityNotFound(_0x24c3ef,null))[_0xb991('0x29')](saveUpdates(_0x8734f6['body'],null))['then'](respondWithResult(_0x24c3ef,null))['catch'](handleError(_0x24c3ef,null));};exports[_0xb991('0x2c')]=function(_0x4afadd,_0x4b8324){return db[_0xb991('0x33')][_0xb991('0x4d')]({'where':{'id':_0x4afadd[_0xb991('0x4b')]['id']}})[_0xb991('0x29')](handleEntityNotFound(_0x4b8324,null))[_0xb991('0x29')](removeEntity(_0x4b8324,null))[_0xb991('0x49')](handleError(_0x4b8324,null));};exports[_0xb991('0x58')]=function(_0x32dcbe,_0x173471,_0x362f00){return db[_0xb991('0x33')]['find']({'where':{'id':_0x32dcbe[_0xb991('0x4b')]['id']}})['then'](handleEntityNotFound(_0x173471,null))[_0xb991('0x29')](function(_0x254c88){if(_0x254c88){return _0x254c88[_0xb991('0x58')](_0x32dcbe[_0xb991('0x4f')][_0xb991('0x59')],_[_0xb991('0x5a')](_0x32dcbe[_0xb991('0x4f')],[_0xb991('0x59'),'id'])||{});}})[_0xb991('0x29')](respondWithResult(_0x173471,null))[_0xb991('0x49')](handleError(_0x173471,null));};exports[_0xb991('0x5b')]=function(_0xce60d7,_0x2874f8,_0x2b763f){return db['SquareProject'][_0xb991('0x4d')]({'where':{'id':_0xce60d7[_0xb991('0x4b')]['id']}})[_0xb991('0x29')](handleEntityNotFound(_0x2874f8,null))['then'](function(_0x5a8687){if(_0x5a8687){return _0x5a8687[_0xb991('0x5b')](_0xce60d7[_0xb991('0x38')][_0xb991('0x59')])[_0xb991('0x29')](function(){if(_[_0xb991('0x5c')](_0xce60d7[_0xb991('0x38')][_0xb991('0x59')])){for(var _0xc106e4=0x0;_0xc106e4<_0xce60d7[_0xb991('0x38')][_0xb991('0x59')][_0xb991('0x3c')];_0xc106e4+=0x1){socket[_0xb991('0x5d')]('userSquareProject:remove',{'UserId':Number(_0xce60d7[_0xb991('0x38')][_0xb991('0x59')][_0xc106e4]),'SquareProjectId':Number(_0xce60d7[_0xb991('0x4b')]['id'])});}}else{socket[_0xb991('0x5d')](_0xb991('0x5e'),{'UserId':Number(_0xce60d7[_0xb991('0x38')]['ids']),'SquareProjectId':Number(_0xce60d7[_0xb991('0x4b')]['id'])});}});}})[_0xb991('0x29')](respondWithStatusCode(_0x2874f8,null))[_0xb991('0x49')](handleError(_0x2874f8,null));};exports[_0xb991('0x5f')]=function(_0x28d162,_0x4db841,_0x2c675f){var _0x108035={};var _0x2d3d5f={};var _0x4eacef;var _0x35957a;return db[_0xb991('0x33')][_0xb991('0x60')]({'where':{'id':_0x28d162[_0xb991('0x4b')]['id']}})['then'](handleEntityNotFound(_0x4db841,null))[_0xb991('0x29')](function(_0x1547e8){if(_0x1547e8){_0x4eacef=_0x1547e8;_0x2d3d5f[_0xb991('0x37')]=_['keys'](db[_0xb991('0x61')]['rawAttributes']);_0x2d3d5f[_0xb991('0x38')]=_[_0xb991('0x4c')](_0x28d162[_0xb991('0x38')]);_0x2d3d5f['filters']=_[_0xb991('0x3a')](_0x2d3d5f['model'],_0x2d3d5f[_0xb991('0x38')]);_0x108035[_0xb991('0x39')]=_[_0xb991('0x3a')](_0x2d3d5f['model'],qs[_0xb991('0x3b')](_0x28d162[_0xb991('0x38')][_0xb991('0x3b')]));_0x108035[_0xb991('0x39')]=_0x108035[_0xb991('0x39')]['length']?_0x108035[_0xb991('0x39')]:_0x2d3d5f[_0xb991('0x37')];_0x108035[_0xb991('0x3e')]=qs[_0xb991('0x3f')](_0x28d162[_0xb991('0x38')][_0xb991('0x3f')]);_0x108035[_0xb991('0x40')]=qs[_0xb991('0x41')](_[_0xb991('0x42')](_0x28d162[_0xb991('0x38')],_0x2d3d5f['filters']));if(_0x28d162['query'][_0xb991('0x43')]){_0x108035[_0xb991('0x40')]=_['merge'](_0x108035[_0xb991('0x40')],{'$or':_[_0xb991('0x32')](_0x108035['attributes'],function(_0x2cd7f7){var _0x39410f={};_0x39410f[_0x2cd7f7]={'$like':'%'+_0x28d162[_0xb991('0x38')]['filter']+'%'};return _0x39410f;})});}_0x108035=_['merge']({},_0x108035,_0x28d162[_0xb991('0x46')]);return _0x4eacef[_0xb991('0x5f')](_0x108035);}})[_0xb991('0x29')](function(_0x3e1c86){if(_0x3e1c86){_0x35957a=_0x3e1c86[_0xb991('0x3c')];if(!_0x28d162['query'][_0xb991('0x62')]('nolimit')){_0x108035['limit']=qs['limit'](_0x28d162[_0xb991('0x38')][_0xb991('0x20')]);_0x108035[_0xb991('0x22')]=qs['offset'](_0x28d162['query'][_0xb991('0x22')]);}return _0x4eacef[_0xb991('0x5f')](_0x108035);}})[_0xb991('0x29')](function(_0x42c643){if(_0x42c643){return _0x42c643?{'count':_0x35957a,'rows':_0x42c643}:null;}})[_0xb991('0x29')](respondWithResult(_0x4db841,null))[_0xb991('0x49')](handleError(_0x4db841,null));};
\ No newline at end of file
index fc0c62d..d60a122 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaccd=['hasOwnProperty','hook','exports','events','save','update','remove','emit'];(function(_0x14ea2e,_0x1bf218){var _0x558569=function(_0x4fe517){while(--_0x4fe517){_0x14ea2e['push'](_0x14ea2e['shift']());}};_0x558569(++_0x1bf218);}(_0xaccd,0x13b));var _0xdacc=function(_0x2fd5f1,_0x4091da){_0x2fd5f1=_0x2fd5f1-0x0;var _0x50b49e=_0xaccd[_0x2fd5f1];return _0x50b49e;};'use strict';var EventEmitter=require(_0xdacc('0x0'));var SquareProject=require('../../mysqldb')['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xdacc('0x1'),'afterUpdate':_0xdacc('0x2'),'afterDestroy':_0xdacc('0x3')};function emitEvent(_0x568a8c){return function(_0x1e70ea,_0x83f0fd,_0x58e167){SquareProjectEvents[_0xdacc('0x4')](_0x568a8c+':'+_0x1e70ea['id'],_0x1e70ea);SquareProjectEvents['emit'](_0x568a8c,_0x1e70ea);_0x58e167(null);};}for(var e in events){if(events[_0xdacc('0x5')](e)){var event=events[e];SquareProject[_0xdacc('0x6')](e,emitEvent(event));}}module[_0xdacc('0x7')]=SquareProjectEvents;
\ No newline at end of file
+var _0xf3fe=['hasOwnProperty','exports','events','SquareProject','save','update','remove','emit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf3fe,0x15a));var _0xef3f=function(_0x2f54e8,_0x160806){_0x2f54e8=_0x2f54e8-0x0;var _0x52df8a=_0xf3fe[_0x2f54e8];return _0x52df8a;};'use strict';var EventEmitter=require(_0xef3f('0x0'));var SquareProject=require('../../mysqldb')['db'][_0xef3f('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xef3f('0x2'),'afterUpdate':_0xef3f('0x3'),'afterDestroy':_0xef3f('0x4')};function emitEvent(_0x5e6cfe){return function(_0x2f7be8,_0x198f4c,_0x2445ff){SquareProjectEvents[_0xef3f('0x5')](_0x5e6cfe+':'+_0x2f7be8['id'],_0x2f7be8);SquareProjectEvents[_0xef3f('0x5')](_0x5e6cfe,_0x2f7be8);_0x2445ff(null);};}for(var e in events){if(events[_0xef3f('0x6')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0xef3f('0x7')]=SquareProjectEvents;
\ No newline at end of file
index 289bb29..fa3c0c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc91=['YYYY-MM-DD\x20HH:mm:ss','publishedAt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareProject.attributes','exports','define','SquareProject','square_projects','preproduction','format'];(function(_0x464ee6,_0x424fab){var _0x2ce4c3=function(_0x5c25aa){while(--_0x5c25aa){_0x464ee6['push'](_0x464ee6['shift']());}};_0x2ce4c3(++_0x424fab);}(_0xbc91,0x1dd));var _0x1bc9=function(_0x30b5ef,_0x53a436){_0x30b5ef=_0x30b5ef-0x0;var _0x15325d=_0xbc91[_0x30b5ef];return _0x15325d;};'use strict';var _=require(_0x1bc9('0x0'));var util=require(_0x1bc9('0x1'));var logger=require(_0x1bc9('0x2'))(_0x1bc9('0x3'));var moment=require(_0x1bc9('0x4'));var BPromise=require(_0x1bc9('0x5'));var rp=require(_0x1bc9('0x6'));var fs=require('fs');var path=require(_0x1bc9('0x7'));var rimraf=require(_0x1bc9('0x8'));var config=require(_0x1bc9('0x9'));var attributes=require(_0x1bc9('0xa'));module[_0x1bc9('0xb')]=function(_0x4eacf2,_0x3f7013){return _0x4eacf2[_0x1bc9('0xc')](_0x1bc9('0xd'),attributes,{'tableName':_0x1bc9('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5f0130,_0x25bfa0,_0x58c105){if(_0x5f0130['changed'](_0x1bc9('0xf'))){_0x5f0130['savedAt']=moment()[_0x1bc9('0x10')](_0x1bc9('0x11'));}if(_0x5f0130['changed']('production')){_0x5f0130[_0x1bc9('0x12')]=moment()[_0x1bc9('0x10')](_0x1bc9('0x11'));}_0x58c105(null,_0x5f0130);}}});};
\ No newline at end of file
+var _0x2440=['moment','bluebird','path','rimraf','../../config/environment','./squareProject.attributes','exports','define','square_projects','preproduction','savedAt','changed','production','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api'];(function(_0x5bce8d,_0x2abba3){var _0x48639c=function(_0x5e769e){while(--_0x5e769e){_0x5bce8d['push'](_0x5bce8d['shift']());}};_0x48639c(++_0x2abba3);}(_0x2440,0x1d7));var _0x0244=function(_0x13402e,_0x82cfdf){_0x13402e=_0x13402e-0x0;var _0x5e8909=_0x2440[_0x13402e];return _0x5e8909;};'use strict';var _=require(_0x0244('0x0'));var util=require(_0x0244('0x1'));var logger=require(_0x0244('0x2'))(_0x0244('0x3'));var moment=require(_0x0244('0x4'));var BPromise=require(_0x0244('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0244('0x6'));var rimraf=require(_0x0244('0x7'));var config=require(_0x0244('0x8'));var attributes=require(_0x0244('0x9'));module[_0x0244('0xa')]=function(_0x488af1,_0x1987a2){return _0x488af1[_0x0244('0xb')]('SquareProject',attributes,{'tableName':_0x0244('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x17a19e,_0x557c3,_0x4aaaa2){if(_0x17a19e['changed'](_0x0244('0xd'))){_0x17a19e[_0x0244('0xe')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x17a19e[_0x0244('0xf')](_0x0244('0x10'))){_0x17a19e['publishedAt']=moment()[_0x0244('0x11')](_0x0244('0x12'));}_0x4aaaa2(null,_0x17a19e);}}});};
\ No newline at end of file
index 48f94f9..0b5f0eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56ee=['result','catch','ShowSquareProject','SquareProject','find','raw','options','attributes','include','map','model','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','socket.io-emitter','redis','register','request','then','info','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x323d87,_0x4ef3f9){var _0x5e8f74=function(_0x185735){while(--_0x185735){_0x323d87['push'](_0x323d87['shift']());}};_0x5e8f74(++_0x4ef3f9);}(_0x56ee,0x1ad));var _0xe56e=function(_0x1ca29f,_0x318ac5){_0x1ca29f=_0x1ca29f-0x0;var _0x576c3b=_0x56ee[_0x1ca29f];return _0x576c3b;};'use strict';var _=require(_0xe56e('0x0'));var util=require(_0xe56e('0x1'));var moment=require(_0xe56e('0x2'));var BPromise=require(_0xe56e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe56e('0x4'));var db=require(_0xe56e('0x5'))['db'];var utils=require(_0xe56e('0x6'));var logger=require(_0xe56e('0x7'))(_0xe56e('0x8'));var config=require(_0xe56e('0x9'));var jayson=require(_0xe56e('0xa'));var client=jayson[_0xe56e('0xb')][_0xe56e('0xc')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xe56e('0xd'))(new Redis(config[_0xe56e('0xe')]));require('./squareProject.socket')[_0xe56e('0xf')](socket);function respondWithRpcPromise(_0x32b212,_0x138bcd,_0x3a45c8){return new BPromise(function(_0x33e425,_0x16c326){return client[_0xe56e('0x10')](_0x32b212,_0x3a45c8)[_0xe56e('0x11')](function(_0x2870dc){logger[_0xe56e('0x12')](_0xe56e('0x13'),_0x138bcd,_0xe56e('0x14'));logger[_0xe56e('0x15')](_0xe56e('0x16'),_0x138bcd,'request\x20sent',JSON[_0xe56e('0x17')](_0x2870dc));if(_0x2870dc[_0xe56e('0x18')]){if(_0x2870dc['error'][_0xe56e('0x19')]===0x1f4){logger[_0xe56e('0x18')]('SquareProject,\x20%s,\x20%s',_0x138bcd,_0x2870dc['error'][_0xe56e('0x1a')]);return _0x16c326(_0x2870dc[_0xe56e('0x18')][_0xe56e('0x1a')]);}logger[_0xe56e('0x18')](_0xe56e('0x13'),_0x138bcd,_0x2870dc[_0xe56e('0x18')]['message']);return _0x33e425(_0x2870dc[_0xe56e('0x18')][_0xe56e('0x1a')]);}else{logger[_0xe56e('0x12')]('SquareProject,\x20%s,\x20%s',_0x138bcd,'request\x20sent');_0x33e425(_0x2870dc[_0xe56e('0x1b')][_0xe56e('0x1a')]);}})[_0xe56e('0x1c')](function(_0x5b7cda){logger['error'](_0xe56e('0x13'),_0x138bcd,_0x5b7cda);_0x16c326(_0x5b7cda);});});}exports[_0xe56e('0x1d')]=function(_0x15869f){var _0x5762c0=this;return new Promise(function(_0x300020,_0x4ac4c9){return db[_0xe56e('0x1e')][_0xe56e('0x1f')]({'raw':_0x15869f['options']?_0x15869f['options'][_0xe56e('0x20')]===undefined?!![]:![]:!![],'where':_0x15869f[_0xe56e('0x21')]?_0x15869f['options']['where']||null:null,'attributes':_0x15869f['options']?_0x15869f[_0xe56e('0x21')][_0xe56e('0x22')]||null:null,'include':_0x15869f[_0xe56e('0x21')]?_0x15869f[_0xe56e('0x21')][_0xe56e('0x23')]?_[_0xe56e('0x24')](_0x15869f[_0xe56e('0x21')][_0xe56e('0x23')],function(_0x1b2bf1){return{'model':db[_0x1b2bf1[_0xe56e('0x25')]],'as':_0x1b2bf1['as'],'attributes':_0x1b2bf1[_0xe56e('0x22')],'include':_0x1b2bf1[_0xe56e('0x23')]?_[_0xe56e('0x24')](_0x1b2bf1[_0xe56e('0x23')],function(_0x2c1253){return{'model':db[_0x2c1253[_0xe56e('0x25')]],'as':_0x2c1253['as'],'attributes':_0x2c1253['attributes'],'include':_0x2c1253[_0xe56e('0x23')]?_[_0xe56e('0x24')](_0x2c1253[_0xe56e('0x23')],function(_0xc8d939){return{'model':db[_0xc8d939[_0xe56e('0x25')]],'as':_0xc8d939['as'],'attributes':_0xc8d939[_0xe56e('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xf772ab){logger[_0xe56e('0x12')](_0xe56e('0x1d'),_0x15869f);logger[_0xe56e('0x15')](_0xe56e('0x1d'),_0x15869f,JSON[_0xe56e('0x17')](_0xf772ab));_0x300020(_0xf772ab);})[_0xe56e('0x1c')](function(_0x230df1){logger['error']('ShowSquareProject',_0x230df1[_0xe56e('0x1a')],_0x15869f);_0x4ac4c9(_0x5762c0[_0xe56e('0x18')](0x1f4,_0x230df1[_0xe56e('0x1a')]));});});};
\ No newline at end of file
+var _0xcd4c=['attributes','include','map','model','ShowSquareProject','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','defaults','localhost','socket.io-emitter','redis','./squareProject.socket','register','then','info','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','SquareProject','find','options'];(function(_0x5e2e42,_0x19fb86){var _0x47da5e=function(_0x52ed38){while(--_0x52ed38){_0x5e2e42['push'](_0x5e2e42['shift']());}};_0x47da5e(++_0x19fb86);}(_0xcd4c,0x1b5));var _0xccd4=function(_0x496ab3,_0x431141){_0x496ab3=_0x496ab3-0x0;var _0x4f7188=_0xcd4c[_0x496ab3];return _0x4f7188;};'use strict';var _=require(_0xccd4('0x0'));var util=require(_0xccd4('0x1'));var moment=require(_0xccd4('0x2'));var BPromise=require('bluebird');var rs=require(_0xccd4('0x3'));var fs=require('fs');var Redis=require(_0xccd4('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xccd4('0x5'));var logger=require(_0xccd4('0x6'))(_0xccd4('0x7'));var config=require('../../config/environment');var jayson=require(_0xccd4('0x8'));var client=jayson['client'][_0xccd4('0x9')]({'port':0x232a});config['redis']=_[_0xccd4('0xa')](config['redis'],{'host':_0xccd4('0xb'),'port':0x18eb});var socket=require(_0xccd4('0xc'))(new Redis(config[_0xccd4('0xd')]));require(_0xccd4('0xe'))[_0xccd4('0xf')](socket);function respondWithRpcPromise(_0x17a6a7,_0x394a21,_0x460aee){return new BPromise(function(_0x97fe0b,_0x1fab9f){return client['request'](_0x17a6a7,_0x460aee)[_0xccd4('0x10')](function(_0x26180e){logger[_0xccd4('0x11')](_0xccd4('0x12'),_0x394a21,_0xccd4('0x13'));logger[_0xccd4('0x14')](_0xccd4('0x15'),_0x394a21,_0xccd4('0x13'),JSON[_0xccd4('0x16')](_0x26180e));if(_0x26180e[_0xccd4('0x17')]){if(_0x26180e['error'][_0xccd4('0x18')]===0x1f4){logger[_0xccd4('0x17')](_0xccd4('0x12'),_0x394a21,_0x26180e[_0xccd4('0x17')][_0xccd4('0x19')]);return _0x1fab9f(_0x26180e[_0xccd4('0x17')][_0xccd4('0x19')]);}logger['error'](_0xccd4('0x12'),_0x394a21,_0x26180e[_0xccd4('0x17')]['message']);return _0x97fe0b(_0x26180e[_0xccd4('0x17')]['message']);}else{logger[_0xccd4('0x11')](_0xccd4('0x12'),_0x394a21,_0xccd4('0x13'));_0x97fe0b(_0x26180e[_0xccd4('0x1a')][_0xccd4('0x19')]);}})[_0xccd4('0x1b')](function(_0xd208cb){logger['error']('SquareProject,\x20%s,\x20%s',_0x394a21,_0xd208cb);_0x1fab9f(_0xd208cb);});});}exports['ShowSquareProject']=function(_0xa4b970){var _0x26e4d4=this;return new Promise(function(_0x243d5c,_0x172df7){return db[_0xccd4('0x1c')][_0xccd4('0x1d')]({'raw':_0xa4b970['options']?_0xa4b970[_0xccd4('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0xa4b970[_0xccd4('0x1e')]?_0xa4b970[_0xccd4('0x1e')]['where']||null:null,'attributes':_0xa4b970[_0xccd4('0x1e')]?_0xa4b970[_0xccd4('0x1e')][_0xccd4('0x1f')]||null:null,'include':_0xa4b970['options']?_0xa4b970['options'][_0xccd4('0x20')]?_[_0xccd4('0x21')](_0xa4b970[_0xccd4('0x1e')][_0xccd4('0x20')],function(_0x1022eb){return{'model':db[_0x1022eb[_0xccd4('0x22')]],'as':_0x1022eb['as'],'attributes':_0x1022eb[_0xccd4('0x1f')],'include':_0x1022eb['include']?_[_0xccd4('0x21')](_0x1022eb[_0xccd4('0x20')],function(_0x1971fc){return{'model':db[_0x1971fc['model']],'as':_0x1971fc['as'],'attributes':_0x1971fc[_0xccd4('0x1f')],'include':_0x1971fc[_0xccd4('0x20')]?_[_0xccd4('0x21')](_0x1971fc['include'],function(_0x66c3db){return{'model':db[_0x66c3db[_0xccd4('0x22')]],'as':_0x66c3db['as'],'attributes':_0x66c3db[_0xccd4('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xccd4('0x10')](function(_0x386839){logger[_0xccd4('0x11')](_0xccd4('0x23'),_0xa4b970);logger[_0xccd4('0x14')](_0xccd4('0x23'),_0xa4b970,JSON['stringify'](_0x386839));_0x243d5c(_0x386839);})[_0xccd4('0x1b')](function(_0x26f3ea){logger[_0xccd4('0x17')](_0xccd4('0x23'),_0x26f3ea[_0xccd4('0x19')],_0xa4b970);_0x172df7(_0x26e4d4[_0xccd4('0x17')](0x1f4,_0x26f3ea['message']));});});};
\ No newline at end of file
index b1e2cd9..c80db33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cd3=['length','squareProject:','save','update','emit','removeListener','register'];(function(_0x22d828,_0x546b7b){var _0x4f9b4d=function(_0x487f21){while(--_0x487f21){_0x22d828['push'](_0x22d828['shift']());}};_0x4f9b4d(++_0x546b7b);}(_0x6cd3,0xe2));var _0x36cd=function(_0x2085f3,_0x50105b){_0x2085f3=_0x2085f3-0x0;var _0x384e3c=_0x6cd3[_0x2085f3];return _0x384e3c;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=[_0x36cd('0x0'),'remove',_0x36cd('0x1')];function createListener(_0x32b2ce,_0x5c0549){return function(_0x1d966b){_0x5c0549[_0x36cd('0x2')](_0x32b2ce,_0x1d966b);};}function removeListener(_0x5cb794,_0x2f3376){return function(){SquareProjectEvents[_0x36cd('0x3')](_0x5cb794,_0x2f3376);};}exports[_0x36cd('0x4')]=function(_0x2f97af){for(var _0x11929e=0x0,_0x35b2c9=events[_0x36cd('0x5')];_0x11929e<_0x35b2c9;_0x11929e++){var _0x14613e=events[_0x11929e];var _0x1eca79=createListener(_0x36cd('0x6')+_0x14613e,_0x2f97af);SquareProjectEvents['on'](_0x14613e,_0x1eca79);}};
\ No newline at end of file
+var _0x374d=['save','remove','update','removeListener','register','length','squareProject:','./squareProject.events'];(function(_0x3ab50d,_0x502795){var _0xf87ddd=function(_0x353a9e){while(--_0x353a9e){_0x3ab50d['push'](_0x3ab50d['shift']());}};_0xf87ddd(++_0x502795);}(_0x374d,0xaf));var _0xd374=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0x374d[_0x4709c0];return _0x13348b;};'use strict';var SquareProjectEvents=require(_0xd374('0x0'));var events=[_0xd374('0x1'),_0xd374('0x2'),_0xd374('0x3')];function createListener(_0x344fd7,_0x7ae08f){return function(_0x53c270){_0x7ae08f['emit'](_0x344fd7,_0x53c270);};}function removeListener(_0x433648,_0x481657){return function(){SquareProjectEvents[_0xd374('0x4')](_0x433648,_0x481657);};}exports[_0xd374('0x5')]=function(_0x1a11bc){for(var _0x2a138f=0x0,_0x135101=events[_0xd374('0x6')];_0x2a138f<_0x135101;_0x2a138f++){var _0x42d69c=events[_0x2a138f];var _0x20a2d4=createListener(_0xd374('0x7')+_0x42d69c,_0x1a11bc);SquareProjectEvents['on'](_0x42d69c,_0x20a2d4);}};
\ No newline at end of file
index 8e9da50..beef888 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','./squareRecording.controller','get','isAuthenticated','index','/:id','/:id/download','download','create','put','delete'];(function(_0x3bfd57,_0xbfbbe8){var _0x1b2594=function(_0x4744af){while(--_0x4744af){_0x3bfd57['push'](_0x3bfd57['shift']());}};_0x1b2594(++_0xbfbbe8);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xc4aa[_0x5d6456];return _0x4d66c1;};'use strict';var multer=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var path=require(_0xac4a('0x2'));var timeout=require(_0xac4a('0x3'));var express=require(_0xac4a('0x4'));var router=express[_0xac4a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xac4a('0x6'));var controller=require(_0xac4a('0x7'));router[_0xac4a('0x8')]('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xa')]);router[_0xac4a('0x8')](_0xac4a('0xb'),auth[_0xac4a('0x9')](),controller['show']);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xd')]);router['post']('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xe')]);router[_0xac4a('0xf')]('/:id',auth[_0xac4a('0x9')](),controller['update']);router[_0xac4a('0x10')]('/:id',auth[_0xac4a('0x9')](),controller[_0xac4a('0x11')]);module[_0xac4a('0x12')]=router;
\ No newline at end of file
+var _0x326f=['multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','/:id','show','download','post','create','put','delete','exports'];(function(_0x191abf,_0x5b3220){var _0x4aa0f3=function(_0x2ce263){while(--_0x2ce263){_0x191abf['push'](_0x191abf['shift']());}};_0x4aa0f3(++_0x5b3220);}(_0x326f,0xd1));var _0xf326=function(_0x16071d,_0x5e0152){_0x16071d=_0x16071d-0x0;var _0x2ee2ac=_0x326f[_0x16071d];return _0x2ee2ac;};'use strict';var multer=require(_0xf326('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xf326('0x1'));var express=require(_0xf326('0x2'));var router=express[_0xf326('0x3')]();var fs_extra=require(_0xf326('0x4'));var auth=require(_0xf326('0x5'));var interaction=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var controller=require(_0xf326('0x8'));router[_0xf326('0x9')]('/',auth[_0xf326('0xa')](),controller['index']);router[_0xf326('0x9')](_0xf326('0xb'),auth[_0xf326('0xa')](),controller[_0xf326('0xc')]);router['get']('/:id/download',auth['isAuthenticated'](),controller[_0xf326('0xd')]);router[_0xf326('0xe')]('/',auth[_0xf326('0xa')](),controller[_0xf326('0xf')]);router[_0xf326('0x10')]('/:id',auth[_0xf326('0xa')](),controller['update']);router[_0xf326('0x11')]('/:id',auth[_0xf326('0xa')](),controller['destroy']);module[_0xf326('0x12')]=router;
\ No newline at end of file
index cd814d1..aaed4f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['sequelize','exports','STRING','VIRTUAL','getDataValue','savePath','substring','lastIndexOf'];(function(_0x351b46,_0x26b265){var _0x1515df=function(_0x22896a){while(--_0x22896a){_0x351b46['push'](_0x351b46['shift']());}};_0x1515df(++_0x26b265);}(_0x5fc3,0xa8));var _0x35fc=function(_0x40dd56,_0x726ca5){_0x40dd56=_0x40dd56-0x0;var _0x4f850f=_0x5fc3[_0x40dd56];return _0x4f850f;};'use strict';var Sequelize=require(_0x35fc('0x0'));module[_0x35fc('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x35fc('0x2')]},'calleridname':{'type':Sequelize[_0x35fc('0x2')]},'context':{'type':Sequelize[_0x35fc('0x2')]},'extension':{'type':Sequelize[_0x35fc('0x2')]},'priority':{'type':Sequelize[_0x35fc('0x2')]},'accountcode':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0x35fc('0x2')]},'projectName':{'type':Sequelize[_0x35fc('0x2')]},'saveName':{'type':Sequelize[_0x35fc('0x2')]},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x35fc('0x3')],'get':function(){var _0x508b32='';var _0x16e153=this[_0x35fc('0x4')](_0x35fc('0x5'));if(_0x16e153){_0x508b32=_0x16e153[_0x35fc('0x6')](_0x16e153[_0x35fc('0x7')]('.'));}return _0x508b32;}}};
\ No newline at end of file
+var _0x81bd=['STRING','VIRTUAL','getDataValue','substring','lastIndexOf','sequelize','exports'];(function(_0x26852c,_0x40f763){var _0x3356e4=function(_0x3c86ea){while(--_0x3c86ea){_0x26852c['push'](_0x26852c['shift']());}};_0x3356e4(++_0x40f763);}(_0x81bd,0x7c));var _0xd81b=function(_0x578b6c,_0x2838aa){_0x578b6c=_0x578b6c-0x0;var _0x24a715=_0x81bd[_0x578b6c];return _0x24a715;};'use strict';var Sequelize=require(_0xd81b('0x0'));module[_0xd81b('0x1')]={'uniqueid':{'type':Sequelize[_0xd81b('0x2')]},'callerid':{'type':Sequelize[_0xd81b('0x2')]},'calleridname':{'type':Sequelize[_0xd81b('0x2')]},'context':{'type':Sequelize[_0xd81b('0x2')]},'extension':{'type':Sequelize[_0xd81b('0x2')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xd81b('0x2')]},'dnid':{'type':Sequelize[_0xd81b('0x2')]},'projectName':{'type':Sequelize[_0xd81b('0x2')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0xd81b('0x2')]},'savePath':{'type':Sequelize[_0xd81b('0x2')]},'format':{'type':Sequelize[_0xd81b('0x3')],'get':function(){var _0x562084='';var _0x5e14e8=this[_0xd81b('0x4')]('savePath');if(_0x5e14e8){_0x562084=_0x5e14e8[_0xd81b('0x5')](_0x5e14e8[_0xd81b('0x6')]('.'));}return _0x562084;}}};
\ No newline at end of file
index def7d46..1b9fb55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96a5=['undefined','count','limit','status','set','Content-Range','apply','save','update','destroy','error','name','send','SquareRecording','rawAttributes','map','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','type','options','then','includeAll','findAll','catch','show','params','length','include','find','create','body','download','../../components/encryptor','uniqueid','savePath','format','%s.cypher','existsSync','decryptFile','secrets','recording','ValidationError','filename','SquareRecording\x20not\x20found','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','sendStatus','end','json','offset'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x96a5,0x149));var _0x596a=function(_0x28191a,_0x374ff5){_0x28191a=_0x28191a-0x0;var _0x3402ee=_0x96a5[_0x28191a];return _0x3402ee;};'use strict';var emlformat=require(_0x596a('0x0'));var rimraf=require(_0x596a('0x1'));var zipdir=require(_0x596a('0x2'));var jsonpatch=require(_0x596a('0x3'));var rp=require(_0x596a('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x596a('0x5'));var util=require(_0x596a('0x6'));var path=require(_0x596a('0x7'));var sox=require('sox');var csv=require(_0x596a('0x8'));var ejs=require(_0x596a('0x9'));var fs=require('fs');var fs_extra=require(_0x596a('0xa'));var _=require(_0x596a('0xb'));var squel=require(_0x596a('0xc'));var crypto=require('crypto');var jsforce=require(_0x596a('0xd'));var deskjs=require(_0x596a('0xe'));var toCsv=require(_0x596a('0x8'));var querystring=require(_0x596a('0xf'));var Papa=require(_0x596a('0x10'));var Redis=require('ioredis');var authService=require(_0x596a('0x11'));var qs=require(_0x596a('0x12'));var as=require(_0x596a('0x13'));var hardwareService=require(_0x596a('0x14'));var logger=require(_0x596a('0x15'))('api');var utils=require(_0x596a('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xbc7f7b,_0x33a26e){_0x33a26e=_0x33a26e||0xcc;return function(_0x4bf7d3){if(_0x4bf7d3){return _0xbc7f7b[_0x596a('0x17')](_0x33a26e);}return _0xbc7f7b['status'](_0x33a26e)[_0x596a('0x18')]();};}function respondWithResult(_0x6bdf26,_0x1d14a0){_0x1d14a0=_0x1d14a0||0xc8;return function(_0x612eab){if(_0x612eab){return _0x6bdf26['status'](_0x1d14a0)[_0x596a('0x19')](_0x612eab);}};}function respondWithFilteredResult(_0x536b78,_0x34d4b3){return function(_0x47a1d9){if(_0x47a1d9){var _0x5078b8=typeof _0x34d4b3[_0x596a('0x1a')]===_0x596a('0x1b')&&typeof _0x34d4b3['limit']===_0x596a('0x1b');var _0x535e23=_0x47a1d9[_0x596a('0x1c')];var _0x5bddf4=_0x5078b8?0x0:_0x34d4b3['offset'];var _0x486488=_0x5078b8?_0x47a1d9[_0x596a('0x1c')]:_0x34d4b3['offset']+_0x34d4b3[_0x596a('0x1d')];var _0x13c576;if(_0x486488>=_0x535e23){_0x486488=_0x535e23;_0x13c576=0xc8;}else{_0x13c576=0xce;}_0x536b78[_0x596a('0x1e')](_0x13c576);return _0x536b78[_0x596a('0x1f')](_0x596a('0x20'),_0x5bddf4+'-'+_0x486488+'/'+_0x535e23)['json'](_0x47a1d9);}return null;};}function patchUpdates(_0x4d4361){return function(_0x14d308){try{jsonpatch[_0x596a('0x21')](_0x14d308,_0x4d4361,!![]);}catch(_0x25f7e7){return BPromise['reject'](_0x25f7e7);}return _0x14d308[_0x596a('0x22')]();};}function saveUpdates(_0x51aaff,_0x375a3d){return function(_0x555ca9){if(_0x555ca9){return _0x555ca9[_0x596a('0x23')](_0x51aaff)['then'](function(_0x1b3ac3){return _0x1b3ac3;});}return null;};}function removeEntity(_0x1ebfeb,_0x2fd6c9){return function(_0x47084c){if(_0x47084c){return _0x47084c[_0x596a('0x24')]()['then'](function(){_0x1ebfeb[_0x596a('0x1e')](0xcc)[_0x596a('0x18')]();});}};}function handleEntityNotFound(_0x110446,_0x2bb30a){return function(_0x11c632){if(!_0x11c632){_0x110446[_0x596a('0x17')](0x194);}return _0x11c632;};}function handleError(_0x20a252,_0x2ad10d){_0x2ad10d=_0x2ad10d||0x1f4;return function(_0x300105){logger[_0x596a('0x25')](_0x300105['stack']);if(_0x300105['name']){delete _0x300105[_0x596a('0x26')];}_0x20a252[_0x596a('0x1e')](_0x2ad10d)[_0x596a('0x27')](_0x300105);};}exports['index']=function(_0xe66580,_0x2ed87f){var _0x27bc1f={},_0x4c24f3={},_0x3af520={'count':0x0,'rows':[]};var _0x5d1f57=_['map'](db[_0x596a('0x28')][_0x596a('0x29')],function(_0x3f088c){return{'name':_0x3f088c['fieldName'],'type':_0x3f088c['type']['key']};});_0x4c24f3['model']=_[_0x596a('0x2a')](_0x5d1f57,_0x596a('0x26'));_0x4c24f3[_0x596a('0x2b')]=_[_0x596a('0x2c')](_0xe66580[_0x596a('0x2b')]);_0x4c24f3[_0x596a('0x2d')]=_[_0x596a('0x2e')](_0x4c24f3[_0x596a('0x2f')],_0x4c24f3[_0x596a('0x2b')]);_0x27bc1f[_0x596a('0x30')]=_[_0x596a('0x2e')](_0x4c24f3['model'],qs['fields'](_0xe66580[_0x596a('0x2b')][_0x596a('0x31')]));_0x27bc1f['attributes']=_0x27bc1f[_0x596a('0x30')]['length']?_0x27bc1f[_0x596a('0x30')]:_0x4c24f3[_0x596a('0x2f')];if(!_0xe66580[_0x596a('0x2b')][_0x596a('0x32')]('nolimit')){_0x27bc1f[_0x596a('0x1d')]=qs[_0x596a('0x1d')](_0xe66580[_0x596a('0x2b')][_0x596a('0x1d')]);_0x27bc1f[_0x596a('0x1a')]=qs['offset'](_0xe66580[_0x596a('0x2b')][_0x596a('0x1a')]);}_0x27bc1f[_0x596a('0x33')]=qs[_0x596a('0x34')](_0xe66580['query'][_0x596a('0x34')]);_0x27bc1f[_0x596a('0x35')]=qs[_0x596a('0x2d')](_[_0x596a('0x36')](_0xe66580['query'],_0x4c24f3['filters']),_0x5d1f57);if(_0xe66580[_0x596a('0x2b')][_0x596a('0x37')]){_0x27bc1f[_0x596a('0x35')]=_[_0x596a('0x38')](_0x27bc1f['where'],{'$or':_[_0x596a('0x2a')](_0x5d1f57,function(_0x56a8a3){if(_0x56a8a3[_0x596a('0x39')]!=='VIRTUAL'){var _0x4959d2={};_0x4959d2[_0x56a8a3['name']]={'$like':'%'+_0xe66580['query'][_0x596a('0x37')]+'%'};return _0x4959d2;}})});}_0x27bc1f=_[_0x596a('0x38')]({},_0x27bc1f,_0xe66580[_0x596a('0x3a')]);var _0x431076={'where':_0x27bc1f[_0x596a('0x35')]};return db['SquareRecording'][_0x596a('0x1c')](_0x431076)[_0x596a('0x3b')](function(_0xc74231){_0x3af520[_0x596a('0x1c')]=_0xc74231;if(_0xe66580[_0x596a('0x2b')][_0x596a('0x3c')]){_0x27bc1f['include']=[{'all':!![]}];}return db['SquareRecording'][_0x596a('0x3d')](_0x27bc1f);})[_0x596a('0x3b')](function(_0x4867c9){_0x3af520['rows']=_0x4867c9;return _0x3af520;})['then'](respondWithFilteredResult(_0x2ed87f,_0x27bc1f))[_0x596a('0x3e')](handleError(_0x2ed87f,null));};exports[_0x596a('0x3f')]=function(_0x1e56e8,_0x23dcbd){var _0x17fa28={'raw':!![],'where':{'id':_0x1e56e8[_0x596a('0x40')]['id']}},_0x1caf16={};_0x1caf16['model']=_[_0x596a('0x2c')](db[_0x596a('0x28')]['rawAttributes']);_0x1caf16[_0x596a('0x2b')]=_[_0x596a('0x2c')](_0x1e56e8[_0x596a('0x2b')]);_0x1caf16[_0x596a('0x2d')]=_[_0x596a('0x2e')](_0x1caf16[_0x596a('0x2f')],_0x1caf16[_0x596a('0x2b')]);_0x17fa28[_0x596a('0x30')]=_[_0x596a('0x2e')](_0x1caf16[_0x596a('0x2f')],qs[_0x596a('0x31')](_0x1e56e8[_0x596a('0x2b')][_0x596a('0x31')]));_0x17fa28[_0x596a('0x30')]=_0x17fa28[_0x596a('0x30')][_0x596a('0x41')]?_0x17fa28[_0x596a('0x30')]:_0x1caf16['model'];if(_0x1e56e8[_0x596a('0x2b')][_0x596a('0x3c')]){_0x17fa28[_0x596a('0x42')]=[{'all':!![]}];}_0x17fa28=_[_0x596a('0x38')]({},_0x17fa28,_0x1e56e8[_0x596a('0x3a')]);return db['SquareRecording'][_0x596a('0x43')](_0x17fa28)['then'](handleEntityNotFound(_0x23dcbd,null))[_0x596a('0x3b')](respondWithResult(_0x23dcbd,null))[_0x596a('0x3e')](handleError(_0x23dcbd,null));};exports[_0x596a('0x44')]=function(_0x3fd600,_0x21605d){return db[_0x596a('0x28')][_0x596a('0x44')](_0x3fd600['body'],{})[_0x596a('0x3b')](respondWithResult(_0x21605d,0xc9))['catch'](handleError(_0x21605d,null));};exports['update']=function(_0x144a72,_0x1a145b){if(_0x144a72[_0x596a('0x45')]['id']){delete _0x144a72[_0x596a('0x45')]['id'];}return db[_0x596a('0x28')][_0x596a('0x43')]({'where':{'id':_0x144a72[_0x596a('0x40')]['id']}})[_0x596a('0x3b')](handleEntityNotFound(_0x1a145b,null))[_0x596a('0x3b')](saveUpdates(_0x144a72[_0x596a('0x45')],null))[_0x596a('0x3b')](respondWithResult(_0x1a145b,null))[_0x596a('0x3e')](handleError(_0x1a145b,null));};exports[_0x596a('0x46')]=function(_0x436ace,_0x11a9ae,_0x27e249){var _0xec7c88=require(_0x596a('0x47'));var _0x5e8d47=![];var _0x30b490={};if(_0x436ace['query'][_0x596a('0x39')]&&_0x436ace['query'][_0x596a('0x39')]===_0x596a('0x48')){_0x30b490[_0x596a('0x48')]=_0x436ace[_0x596a('0x40')]['id'];}else{_0x30b490['id']=_0x436ace[_0x596a('0x40')]['id'];}return db[_0x596a('0x28')][_0x596a('0x43')]({'where':_0x30b490,'attributes':['id',_0x596a('0x49'),'filename'],'raw':!![]})[_0x596a('0x3b')](handleEntityNotFound(_0x11a9ae,null))[_0x596a('0x3b')](function(_0x58b840){if(_0x58b840){var _0x1aec9a=_0x58b840[_0x596a('0x49')];var _0x14410a=util[_0x596a('0x4a')](_0x596a('0x4b'),_0x1aec9a);if(fs[_0x596a('0x4c')](_0x14410a)){_0x5e8d47=!![];return _0xec7c88[_0x596a('0x4d')](_0x14410a,_0x1aec9a,config[_0x596a('0x4e')][_0x596a('0x4f')])[_0x596a('0x3b')](function(){return _0x58b840;});}return _0x58b840;}})[_0x596a('0x3b')](function(_0x49f7d9){if(_0x49f7d9){var _0x1056eb=_0x49f7d9[_0x596a('0x49')];if(!fs['existsSync'](_0x1056eb)){throw new db['Sequelize'][(_0x596a('0x50'))]('SquareRecording\x20not\x20found');}if(_0x49f7d9[_0x596a('0x51')]){return _0x11a9ae[_0x596a('0x46')](_0x1056eb,_0x49f7d9[_0x596a('0x51')]+path['extname'](_0x1056eb),function(){if(_0x5e8d47){fs['unlink'](_0x1056eb);}});}else{return _0x11a9ae[_0x596a('0x46')](_0x1056eb,function(_0x485359){if(_0x5e8d47){fs['unlink'](_0x1056eb);}});}}})[_0x596a('0x3e')](function(_0x2dda62){if(_0x2dda62['message']===_0x596a('0x52')){_0x11a9ae[_0x596a('0x1e')](0x194)[_0x596a('0x27')]('Not\x20found');}else{return handleError(_0x11a9ae,null);}});};exports[_0x596a('0x24')]=function(_0x2cd2f6,_0x55187d){return db[_0x596a('0x28')][_0x596a('0x43')]({'where':{'id':_0x2cd2f6['params']['id']}})['then'](function(_0x2a5384){if(_[_0x596a('0x53')](_0x2a5384)){throw new ReferenceError('Entity\x20not\x20found');}return _0x2a5384;})['then'](function(_0x2448bc){var _0x4eb158=_0x2448bc[_0x596a('0x49')];logger[_0x596a('0x54')]('cancellazione\x20fisica\x20documento\x20%s',_0x4eb158);if(!_[_0x596a('0x53')](_0x2448bc[_0x596a('0x49')])&&fs[_0x596a('0x4c')](_0x4eb158)){logger[_0x596a('0x54')](_0x596a('0x55')+_0x4eb158+_0x596a('0x56'));fs['unlinkSync'](_0x4eb158);}_0x4eb158=_0x4eb158+_0x596a('0x57');if(!_[_0x596a('0x53')](_0x2448bc['savePath'])&&fs[_0x596a('0x4c')](_0x4eb158)){logger[_0x596a('0x54')](_0x596a('0x55')+_0x4eb158+_0x596a('0x56'));fs[_0x596a('0x58')](_0x4eb158);}return _0x2448bc;})['then'](function(_0x24968c){if(!_0x24968c)throw new InternalError();return _0x24968c['destroy']();})['then'](function(){_0x55187d[_0x596a('0x1e')](0xcc)[_0x596a('0x18')]();})[_0x596a('0x3e')](handleError(_0x55187d,null));};
\ No newline at end of file
+var _0x5c4f=['rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','map','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','SquareRecording','includeAll','findAll','rows','catch','show','create','body','find','params','download','../../components/encryptor','uniqueid','filename','savePath','%s.cypher','existsSync','decryptFile','Sequelize','ValidationError','SquareRecording\x20not\x20found','unlink','message','send','Not\x20found','destroy','isNil','info','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','File:\x20\x22','end','eml-format'];(function(_0x9f48b1,_0x37780e){var _0x2036b3=function(_0xfdc040){while(--_0xfdc040){_0x9f48b1['push'](_0x9f48b1['shift']());}};_0x2036b3(++_0x37780e);}(_0x5c4f,0x122));var _0xf5c4=function(_0x207b17,_0x3de950){_0x207b17=_0x207b17-0x0;var _0x91e4d8=_0x5c4f[_0x207b17];return _0x91e4d8;};'use strict';var emlformat=require(_0xf5c4('0x0'));var rimraf=require(_0xf5c4('0x1'));var zipdir=require(_0xf5c4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf5c4('0x3'));var moment=require(_0xf5c4('0x4'));var BPromise=require(_0xf5c4('0x5'));var Mustache=require('mustache');var util=require(_0xf5c4('0x6'));var path=require(_0xf5c4('0x7'));var sox=require(_0xf5c4('0x8'));var csv=require(_0xf5c4('0x9'));var ejs=require(_0xf5c4('0xa'));var fs=require('fs');var fs_extra=require(_0xf5c4('0xb'));var _=require(_0xf5c4('0xc'));var squel=require(_0xf5c4('0xd'));var crypto=require(_0xf5c4('0xe'));var jsforce=require(_0xf5c4('0xf'));var deskjs=require(_0xf5c4('0x10'));var toCsv=require('to-csv');var querystring=require(_0xf5c4('0x11'));var Papa=require('papaparse');var Redis=require(_0xf5c4('0x12'));var authService=require(_0xf5c4('0x13'));var qs=require(_0xf5c4('0x14'));var as=require(_0xf5c4('0x15'));var hardwareService=require(_0xf5c4('0x16'));var logger=require(_0xf5c4('0x17'))('api');var utils=require('../../config/utils');var config=require(_0xf5c4('0x18'));var licenseUtil=require(_0xf5c4('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x585695,_0x3c2a8c){_0x3c2a8c=_0x3c2a8c||0xcc;return function(_0x4a9e41){if(_0x4a9e41){return _0x585695[_0xf5c4('0x1a')](_0x3c2a8c);}return _0x585695[_0xf5c4('0x1b')](_0x3c2a8c)['end']();};}function respondWithResult(_0x5926b5,_0x121fc0){_0x121fc0=_0x121fc0||0xc8;return function(_0x8a4e42){if(_0x8a4e42){return _0x5926b5[_0xf5c4('0x1b')](_0x121fc0)[_0xf5c4('0x1c')](_0x8a4e42);}};}function respondWithFilteredResult(_0xecab39,_0x1943a6){return function(_0x7004fa){if(_0x7004fa){var _0x47b480=typeof _0x1943a6[_0xf5c4('0x1d')]===_0xf5c4('0x1e')&&typeof _0x1943a6[_0xf5c4('0x1f')]===_0xf5c4('0x1e');var _0xd4fb73=_0x7004fa[_0xf5c4('0x20')];var _0x4dfabb=_0x47b480?0x0:_0x1943a6[_0xf5c4('0x1d')];var _0x3feb23=_0x47b480?_0x7004fa[_0xf5c4('0x20')]:_0x1943a6['offset']+_0x1943a6[_0xf5c4('0x1f')];var _0x3ee2c0;if(_0x3feb23>=_0xd4fb73){_0x3feb23=_0xd4fb73;_0x3ee2c0=0xc8;}else{_0x3ee2c0=0xce;}_0xecab39['status'](_0x3ee2c0);return _0xecab39[_0xf5c4('0x21')](_0xf5c4('0x22'),_0x4dfabb+'-'+_0x3feb23+'/'+_0xd4fb73)['json'](_0x7004fa);}return null;};}function patchUpdates(_0x323df8){return function(_0xaf76e9){try{jsonpatch[_0xf5c4('0x23')](_0xaf76e9,_0x323df8,!![]);}catch(_0x4aa5e6){return BPromise[_0xf5c4('0x24')](_0x4aa5e6);}return _0xaf76e9[_0xf5c4('0x25')]();};}function saveUpdates(_0x4d6813,_0x4e3389){return function(_0x402466){if(_0x402466){return _0x402466[_0xf5c4('0x26')](_0x4d6813)[_0xf5c4('0x27')](function(_0x51d608){return _0x51d608;});}return null;};}function removeEntity(_0x2659e7,_0x26693a){return function(_0x4a1bc9){if(_0x4a1bc9){return _0x4a1bc9['destroy']()['then'](function(){_0x2659e7[_0xf5c4('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ac359,_0x3e1dd4){return function(_0x412924){if(!_0x412924){_0x2ac359[_0xf5c4('0x1a')](0x194);}return _0x412924;};}function handleError(_0x532177,_0x315690){_0x315690=_0x315690||0x1f4;return function(_0x346da0){logger[_0xf5c4('0x28')](_0x346da0[_0xf5c4('0x29')]);if(_0x346da0[_0xf5c4('0x2a')]){delete _0x346da0[_0xf5c4('0x2a')];}_0x532177[_0xf5c4('0x1b')](_0x315690)['send'](_0x346da0);};}exports['index']=function(_0x4c9448,_0x28fc67){var _0xc78915={},_0x11fd0b={},_0x111f02={'count':0x0,'rows':[]};var _0x3fec89=_[_0xf5c4('0x2b')](db['SquareRecording'][_0xf5c4('0x2c')],function(_0x282cb5){return{'name':_0x282cb5[_0xf5c4('0x2d')],'type':_0x282cb5[_0xf5c4('0x2e')]['key']};});_0x11fd0b['model']=_['map'](_0x3fec89,_0xf5c4('0x2a'));_0x11fd0b[_0xf5c4('0x2f')]=_[_0xf5c4('0x30')](_0x4c9448[_0xf5c4('0x2f')]);_0x11fd0b[_0xf5c4('0x31')]=_[_0xf5c4('0x32')](_0x11fd0b[_0xf5c4('0x33')],_0x11fd0b[_0xf5c4('0x2f')]);_0xc78915[_0xf5c4('0x34')]=_['intersection'](_0x11fd0b['model'],qs[_0xf5c4('0x35')](_0x4c9448[_0xf5c4('0x2f')]['fields']));_0xc78915[_0xf5c4('0x34')]=_0xc78915[_0xf5c4('0x34')][_0xf5c4('0x36')]?_0xc78915[_0xf5c4('0x34')]:_0x11fd0b['model'];if(!_0x4c9448[_0xf5c4('0x2f')][_0xf5c4('0x37')](_0xf5c4('0x38'))){_0xc78915[_0xf5c4('0x1f')]=qs[_0xf5c4('0x1f')](_0x4c9448[_0xf5c4('0x2f')][_0xf5c4('0x1f')]);_0xc78915['offset']=qs[_0xf5c4('0x1d')](_0x4c9448['query'][_0xf5c4('0x1d')]);}_0xc78915[_0xf5c4('0x39')]=qs[_0xf5c4('0x3a')](_0x4c9448[_0xf5c4('0x2f')][_0xf5c4('0x3a')]);_0xc78915[_0xf5c4('0x3b')]=qs[_0xf5c4('0x31')](_[_0xf5c4('0x3c')](_0x4c9448[_0xf5c4('0x2f')],_0x11fd0b[_0xf5c4('0x31')]),_0x3fec89);if(_0x4c9448[_0xf5c4('0x2f')][_0xf5c4('0x3d')]){_0xc78915[_0xf5c4('0x3b')]=_['merge'](_0xc78915[_0xf5c4('0x3b')],{'$or':_['map'](_0x3fec89,function(_0x2dfabf){if(_0x2dfabf[_0xf5c4('0x2e')]!=='VIRTUAL'){var _0x2e67fa={};_0x2e67fa[_0x2dfabf[_0xf5c4('0x2a')]]={'$like':'%'+_0x4c9448['query']['filter']+'%'};return _0x2e67fa;}})});}_0xc78915=_[_0xf5c4('0x3e')]({},_0xc78915,_0x4c9448[_0xf5c4('0x3f')]);var _0xcec6e4={'where':_0xc78915['where']};return db[_0xf5c4('0x40')][_0xf5c4('0x20')](_0xcec6e4)[_0xf5c4('0x27')](function(_0x8a1ff5){_0x111f02[_0xf5c4('0x20')]=_0x8a1ff5;if(_0x4c9448[_0xf5c4('0x2f')][_0xf5c4('0x41')]){_0xc78915['include']=[{'all':!![]}];}return db[_0xf5c4('0x40')][_0xf5c4('0x42')](_0xc78915);})['then'](function(_0x2d6cbf){_0x111f02[_0xf5c4('0x43')]=_0x2d6cbf;return _0x111f02;})[_0xf5c4('0x27')](respondWithFilteredResult(_0x28fc67,_0xc78915))[_0xf5c4('0x44')](handleError(_0x28fc67,null));};exports[_0xf5c4('0x45')]=function(_0x3af7e5,_0x40619e){var _0x337ae6={'raw':!![],'where':{'id':_0x3af7e5['params']['id']}},_0x49a639={};_0x49a639[_0xf5c4('0x33')]=_[_0xf5c4('0x30')](db['SquareRecording'][_0xf5c4('0x2c')]);_0x49a639[_0xf5c4('0x2f')]=_[_0xf5c4('0x30')](_0x3af7e5[_0xf5c4('0x2f')]);_0x49a639[_0xf5c4('0x31')]=_[_0xf5c4('0x32')](_0x49a639[_0xf5c4('0x33')],_0x49a639['query']);_0x337ae6['attributes']=_[_0xf5c4('0x32')](_0x49a639[_0xf5c4('0x33')],qs[_0xf5c4('0x35')](_0x3af7e5[_0xf5c4('0x2f')]['fields']));_0x337ae6['attributes']=_0x337ae6[_0xf5c4('0x34')][_0xf5c4('0x36')]?_0x337ae6[_0xf5c4('0x34')]:_0x49a639['model'];if(_0x3af7e5['query'][_0xf5c4('0x41')]){_0x337ae6['include']=[{'all':!![]}];}_0x337ae6=_[_0xf5c4('0x3e')]({},_0x337ae6,_0x3af7e5['options']);return db[_0xf5c4('0x40')]['find'](_0x337ae6)[_0xf5c4('0x27')](handleEntityNotFound(_0x40619e,null))[_0xf5c4('0x27')](respondWithResult(_0x40619e,null))[_0xf5c4('0x44')](handleError(_0x40619e,null));};exports[_0xf5c4('0x46')]=function(_0x1ea81b,_0x2f641a){return db[_0xf5c4('0x40')][_0xf5c4('0x46')](_0x1ea81b['body'],{})[_0xf5c4('0x27')](respondWithResult(_0x2f641a,0xc9))['catch'](handleError(_0x2f641a,null));};exports[_0xf5c4('0x26')]=function(_0x5c701e,_0x565354){if(_0x5c701e['body']['id']){delete _0x5c701e[_0xf5c4('0x47')]['id'];}return db[_0xf5c4('0x40')][_0xf5c4('0x48')]({'where':{'id':_0x5c701e[_0xf5c4('0x49')]['id']}})['then'](handleEntityNotFound(_0x565354,null))['then'](saveUpdates(_0x5c701e[_0xf5c4('0x47')],null))[_0xf5c4('0x27')](respondWithResult(_0x565354,null))[_0xf5c4('0x44')](handleError(_0x565354,null));};exports[_0xf5c4('0x4a')]=function(_0x3e3e5f,_0x9685c3,_0x27c6f7){var _0x6d9d27=require(_0xf5c4('0x4b'));var _0x4c0c2f=![];var _0xf22bbc={};if(_0x3e3e5f['query']['type']&&_0x3e3e5f['query']['type']===_0xf5c4('0x4c')){_0xf22bbc[_0xf5c4('0x4c')]=_0x3e3e5f['params']['id'];}else{_0xf22bbc['id']=_0x3e3e5f[_0xf5c4('0x49')]['id'];}return db[_0xf5c4('0x40')][_0xf5c4('0x48')]({'where':_0xf22bbc,'attributes':['id','savePath',_0xf5c4('0x4d')],'raw':!![]})[_0xf5c4('0x27')](handleEntityNotFound(_0x9685c3,null))[_0xf5c4('0x27')](function(_0x513f93){if(_0x513f93){var _0x3b7a44=_0x513f93[_0xf5c4('0x4e')];var _0x4b8e88=util['format'](_0xf5c4('0x4f'),_0x3b7a44);if(fs[_0xf5c4('0x50')](_0x4b8e88)){_0x4c0c2f=!![];return _0x6d9d27[_0xf5c4('0x51')](_0x4b8e88,_0x3b7a44,config['secrets']['recording'])[_0xf5c4('0x27')](function(){return _0x513f93;});}return _0x513f93;}})[_0xf5c4('0x27')](function(_0x250773){if(_0x250773){var _0x4361ca=_0x250773[_0xf5c4('0x4e')];if(!fs[_0xf5c4('0x50')](_0x4361ca)){throw new db[(_0xf5c4('0x52'))][(_0xf5c4('0x53'))](_0xf5c4('0x54'));}if(_0x250773[_0xf5c4('0x4d')]){return _0x9685c3[_0xf5c4('0x4a')](_0x4361ca,_0x250773['filename']+path['extname'](_0x4361ca),function(){if(_0x4c0c2f){fs[_0xf5c4('0x55')](_0x4361ca);}});}else{return _0x9685c3['download'](_0x4361ca,function(_0x21ee22){if(_0x4c0c2f){fs['unlink'](_0x4361ca);}});}}})[_0xf5c4('0x44')](function(_0x3d98a9){if(_0x3d98a9[_0xf5c4('0x56')]==='SquareRecording\x20not\x20found'){_0x9685c3[_0xf5c4('0x1b')](0x194)[_0xf5c4('0x57')](_0xf5c4('0x58'));}else{return handleError(_0x9685c3,null);}});};exports[_0xf5c4('0x59')]=function(_0x3b5725,_0x40cf7e){return db['SquareRecording'][_0xf5c4('0x48')]({'where':{'id':_0x3b5725[_0xf5c4('0x49')]['id']}})[_0xf5c4('0x27')](function(_0x50769b){if(_[_0xf5c4('0x5a')](_0x50769b)){throw new ReferenceError('Entity\x20not\x20found');}return _0x50769b;})[_0xf5c4('0x27')](function(_0x2dc875){var _0x46c529=_0x2dc875[_0xf5c4('0x4e')];logger[_0xf5c4('0x5b')]('cancellazione\x20fisica\x20documento\x20%s',_0x46c529);if(!_['isNil'](_0x2dc875['savePath'])&&fs[_0xf5c4('0x50')](_0x46c529)){logger[_0xf5c4('0x5b')]('File:\x20\x22'+_0x46c529+_0xf5c4('0x5c'));fs[_0xf5c4('0x5d')](_0x46c529);}_0x46c529=_0x46c529+_0xf5c4('0x5e');if(!_[_0xf5c4('0x5a')](_0x2dc875[_0xf5c4('0x4e')])&&fs['existsSync'](_0x46c529)){logger[_0xf5c4('0x5b')](_0xf5c4('0x5f')+_0x46c529+_0xf5c4('0x5c'));fs[_0xf5c4('0x5d')](_0x46c529);}return _0x2dc875;})[_0xf5c4('0x27')](function(_0x408808){if(!_0x408808)throw new InternalError();return _0x408808[_0xf5c4('0x59')]();})[_0xf5c4('0x27')](function(){_0x40cf7e['status'](0xcc)[_0xf5c4('0x60')]();})[_0xf5c4('0x44')](handleError(_0x40cf7e,null));};
\ No newline at end of file
index 5dc9d94..d0d13b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd663=['api','moment','bluebird','request-promise','path','../../config/environment','define','lodash','util'];(function(_0x3e7e96,_0x5683ca){var _0x13f6f0=function(_0x320767){while(--_0x320767){_0x3e7e96['push'](_0x3e7e96['shift']());}};_0x13f6f0(++_0x5683ca);}(_0xd663,0x1ed));var _0x3d66=function(_0x3bd1a0,_0x5e577b){_0x3bd1a0=_0x3bd1a0-0x0;var _0x349bdd=_0xd663[_0x3bd1a0];return _0x349bdd;};'use strict';var _=require(_0x3d66('0x0'));var util=require(_0x3d66('0x1'));var logger=require('../../config/logger')(_0x3d66('0x2'));var moment=require(_0x3d66('0x3'));var BPromise=require(_0x3d66('0x4'));var rp=require(_0x3d66('0x5'));var fs=require('fs');var path=require(_0x3d66('0x6'));var rimraf=require('rimraf');var config=require(_0x3d66('0x7'));var attributes=require('./squareRecording.attributes');module['exports']=function(_0x5b7bf3,_0x4f2b7a){return _0x5b7bf3[_0x3d66('0x8')]('SquareRecording',attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c63=['lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./squareRecording.attributes','exports','square_recordings'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x1c63,0xdc));var _0x31c6=function(_0x3a37a3,_0x3a74e6){_0x3a37a3=_0x3a37a3-0x0;var _0x19434d=_0x1c63[_0x3a37a3];return _0x19434d;};'use strict';var _=require(_0x31c6('0x0'));var util=require(_0x31c6('0x1'));var logger=require(_0x31c6('0x2'))(_0x31c6('0x3'));var moment=require('moment');var BPromise=require(_0x31c6('0x4'));var rp=require(_0x31c6('0x5'));var fs=require('fs');var path=require(_0x31c6('0x6'));var rimraf=require('rimraf');var config=require(_0x31c6('0x7'));var attributes=require(_0x31c6('0x8'));module[_0x31c6('0x9')]=function(_0x1f4994,_0xfd3cf3){return _0x1f4994['define']('SquareRecording',attributes,{'tableName':_0x31c6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fe0856d..71be158 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4a4=['SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','SquareRecording','create','options','raw','CreateSquareRecording','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2d6b0f,_0x32e0a0){var _0x211d9d=function(_0x1fd473){while(--_0x1fd473){_0x2d6b0f['push'](_0x2d6b0f['shift']());}};_0x211d9d(++_0x32e0a0);}(_0xa4a4,0x6b));var _0x4a4a=function(_0x5d0c1e,_0x132dd6){_0x5d0c1e=_0x5d0c1e-0x0;var _0x3ad7b0=_0xa4a4[_0x5d0c1e];return _0x3ad7b0;};'use strict';var _=require(_0x4a4a('0x0'));var util=require(_0x4a4a('0x1'));var moment=require(_0x4a4a('0x2'));var BPromise=require('bluebird');var rs=require(_0x4a4a('0x3'));var fs=require('fs');var Redis=require(_0x4a4a('0x4'));var db=require(_0x4a4a('0x5'))['db'];var utils=require(_0x4a4a('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x4a4a('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x40c7de,_0x151d1b,_0x2b36d4){return new BPromise(function(_0x5c502c,_0x491e55){return client['request'](_0x40c7de,_0x2b36d4)[_0x4a4a('0x8')](function(_0x2d5b4d){logger[_0x4a4a('0x9')](_0x4a4a('0xa'),_0x151d1b,_0x4a4a('0xb'));logger[_0x4a4a('0xc')](_0x4a4a('0xd'),_0x151d1b,_0x4a4a('0xb'),JSON[_0x4a4a('0xe')](_0x2d5b4d));if(_0x2d5b4d[_0x4a4a('0xf')]){if(_0x2d5b4d[_0x4a4a('0xf')]['code']===0x1f4){logger[_0x4a4a('0xf')](_0x4a4a('0xa'),_0x151d1b,_0x2d5b4d['error'][_0x4a4a('0x10')]);return _0x491e55(_0x2d5b4d[_0x4a4a('0xf')]['message']);}logger[_0x4a4a('0xf')](_0x4a4a('0xa'),_0x151d1b,_0x2d5b4d['error'][_0x4a4a('0x10')]);return _0x5c502c(_0x2d5b4d[_0x4a4a('0xf')][_0x4a4a('0x10')]);}else{logger[_0x4a4a('0x9')](_0x4a4a('0xa'),_0x151d1b,_0x4a4a('0xb'));_0x5c502c(_0x2d5b4d[_0x4a4a('0x11')]['message']);}})[_0x4a4a('0x12')](function(_0x775c3a){logger['error']('SquareRecording,\x20%s,\x20%s',_0x151d1b,_0x775c3a);_0x491e55(_0x775c3a);});});}exports['CreateSquareRecording']=function(_0x2d1cb0){var _0x139406=this;return new Promise(function(_0x4a084d,_0x963edf){return db[_0x4a4a('0x13')][_0x4a4a('0x14')](_0x2d1cb0['body'],{'raw':_0x2d1cb0[_0x4a4a('0x15')]?_0x2d1cb0[_0x4a4a('0x15')][_0x4a4a('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x5b95c5){logger[_0x4a4a('0x9')](_0x4a4a('0x17'),_0x2d1cb0);logger[_0x4a4a('0xc')](_0x4a4a('0x17'),_0x2d1cb0,JSON[_0x4a4a('0xe')](_0x5b95c5));_0x4a084d(_0x5b95c5);})[_0x4a4a('0x12')](function(_0x4b1151){logger['error'](_0x4a4a('0x17'),_0x4b1151[_0x4a4a('0x10')],_0x2d1cb0);_0x963edf(_0x139406[_0x4a4a('0xf')](0x1f4,_0x4b1151[_0x4a4a('0x10')]));});});};
\ No newline at end of file
+var _0xabdb=['create','body','options','stringify','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareRecording,\x20%s,\x20%s','debug','SquareRecording,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','CreateSquareRecording','SquareRecording'];(function(_0x18e715,_0x1039b4){var _0x4b834c=function(_0x1b6473){while(--_0x1b6473){_0x18e715['push'](_0x18e715['shift']());}};_0x4b834c(++_0x1039b4);}(_0xabdb,0x95));var _0xbabd=function(_0x5179b4,_0x1cd27b){_0x5179b4=_0x5179b4-0x0;var _0x4281d8=_0xabdb[_0x5179b4];return _0x4281d8;};'use strict';var _=require(_0xbabd('0x0'));var util=require(_0xbabd('0x1'));var moment=require(_0xbabd('0x2'));var BPromise=require(_0xbabd('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbabd('0x4'))['db'];var utils=require(_0xbabd('0x5'));var logger=require(_0xbabd('0x6'))(_0xbabd('0x7'));var config=require(_0xbabd('0x8'));var jayson=require(_0xbabd('0x9'));var client=jayson[_0xbabd('0xa')][_0xbabd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1c963c,_0x2da188,_0x2df99f){return new BPromise(function(_0x4afa4f,_0x3c1808){return client[_0xbabd('0xc')](_0x1c963c,_0x2df99f)[_0xbabd('0xd')](function(_0x3c6d7f){logger[_0xbabd('0xe')](_0xbabd('0xf'),_0x2da188,'request\x20sent');logger[_0xbabd('0x10')](_0xbabd('0x11'),_0x2da188,_0xbabd('0x12'),JSON['stringify'](_0x3c6d7f));if(_0x3c6d7f[_0xbabd('0x13')]){if(_0x3c6d7f[_0xbabd('0x13')]['code']===0x1f4){logger[_0xbabd('0x13')](_0xbabd('0xf'),_0x2da188,_0x3c6d7f[_0xbabd('0x13')][_0xbabd('0x14')]);return _0x3c1808(_0x3c6d7f['error']['message']);}logger['error'](_0xbabd('0xf'),_0x2da188,_0x3c6d7f[_0xbabd('0x13')]['message']);return _0x4afa4f(_0x3c6d7f[_0xbabd('0x13')][_0xbabd('0x14')]);}else{logger[_0xbabd('0xe')](_0xbabd('0xf'),_0x2da188,_0xbabd('0x12'));_0x4afa4f(_0x3c6d7f[_0xbabd('0x15')]['message']);}})[_0xbabd('0x16')](function(_0x2a8d22){logger[_0xbabd('0x13')]('SquareRecording,\x20%s,\x20%s',_0x2da188,_0x2a8d22);_0x3c1808(_0x2a8d22);});});}exports[_0xbabd('0x17')]=function(_0x2bc533){var _0x1a16a9=this;return new Promise(function(_0x220386,_0x43fd81){return db[_0xbabd('0x18')][_0xbabd('0x19')](_0x2bc533[_0xbabd('0x1a')],{'raw':_0x2bc533[_0xbabd('0x1b')]?_0x2bc533[_0xbabd('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0xbabd('0xd')](function(_0x14d72a){logger[_0xbabd('0xe')](_0xbabd('0x17'),_0x2bc533);logger[_0xbabd('0x10')](_0xbabd('0x17'),_0x2bc533,JSON[_0xbabd('0x1c')](_0x14d72a));_0x220386(_0x14d72a);})[_0xbabd('0x16')](function(_0x5030c3){logger[_0xbabd('0x13')]('CreateSquareRecording',_0x5030c3['message'],_0x2bc533);_0x43fd81(_0x1a16a9[_0xbabd('0x13')](0x1f4,_0x5030c3[_0xbabd('0x14')]));});});};
\ No newline at end of file
index f07c5ff..fd67679 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','create','put','update'];(function(_0x1d2cf2,_0x4f6aad){var _0xe5f313=function(_0xd42d92){while(--_0xd42d92){_0x1d2cf2['push'](_0x1d2cf2['shift']());}};_0xe5f313(++_0x4f6aad);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./squareReport.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','index','/describe','show','post'];(function(_0x25701b,_0x2a6976){var _0x3a8a2c=function(_0x1a5e78){while(--_0x1a5e78){_0x25701b['push'](_0x25701b['shift']());}};_0x3a8a2c(++_0x2a6976);}(_0xa9e0,0x123));var _0x0a9e=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa9e0[_0x433a86];return _0x23000c;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
index 59d313f..9f57c96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba2f=['STRING','sequelize','exports'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xba2f,0x151));var _0xfba2=function(_0xf0bc07,_0x510ebf){_0xf0bc07=_0xf0bc07-0x0;var _0x1c50c2=_0xba2f[_0xf0bc07];return _0x1c50c2;};'use strict';var Sequelize=require(_0xfba2('0x0'));module[_0xfba2('0x1')]={'network':{'type':Sequelize[_0xfba2('0x2')]},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xfba2('0x2')]},'type':{'type':Sequelize[_0xfba2('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize[_0xfba2('0x2')]},'callerid':{'type':Sequelize[_0xfba2('0x2')]},'calleridname':{'type':Sequelize[_0xfba2('0x2')]},'callingpres':{'type':Sequelize[_0xfba2('0x2')]},'callingani2':{'type':Sequelize[_0xfba2('0x2')]},'callington':{'type':Sequelize[_0xfba2('0x2')]},'callingtns':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0xfba2('0x2')]},'rdnis':{'type':Sequelize[_0xfba2('0x2')]},'context':{'type':Sequelize[_0xfba2('0x2')]},'extension':{'type':Sequelize[_0xfba2('0x2')]},'priority':{'type':Sequelize[_0xfba2('0x2')]},'enhanced':{'type':Sequelize[_0xfba2('0x2')]},'accountcode':{'type':Sequelize['STRING']},'threadid':{'type':Sequelize[_0xfba2('0x2')]},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xef45=['STRING','DATE','BOOLEAN','sequelize','exports'];(function(_0x1ae5ab,_0xc5d441){var _0x1ce001=function(_0x5ef96d){while(--_0x5ef96d){_0x1ae5ab['push'](_0x1ae5ab['shift']());}};_0x1ce001(++_0xc5d441);}(_0xef45,0x1c0));var _0x5ef4=function(_0x467d68,_0x341927){_0x467d68=_0x467d68-0x0;var _0x7f7396=_0xef45[_0x467d68];return _0x7f7396;};'use strict';var Sequelize=require(_0x5ef4('0x0'));module[_0x5ef4('0x1')]={'network':{'type':Sequelize[_0x5ef4('0x2')]},'network_script':{'type':Sequelize[_0x5ef4('0x2')]},'request':{'type':Sequelize[_0x5ef4('0x2')]},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x5ef4('0x2')]},'type':{'type':Sequelize[_0x5ef4('0x2')]},'uniqueid':{'type':Sequelize[_0x5ef4('0x2')]},'version':{'type':Sequelize[_0x5ef4('0x2')]},'callerid':{'type':Sequelize[_0x5ef4('0x2')]},'calleridname':{'type':Sequelize[_0x5ef4('0x2')]},'callingpres':{'type':Sequelize[_0x5ef4('0x2')]},'callingani2':{'type':Sequelize[_0x5ef4('0x2')]},'callington':{'type':Sequelize[_0x5ef4('0x2')]},'callingtns':{'type':Sequelize[_0x5ef4('0x2')]},'dnid':{'type':Sequelize[_0x5ef4('0x2')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x5ef4('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x5ef4('0x2')]},'enhanced':{'type':Sequelize[_0x5ef4('0x2')]},'accountcode':{'type':Sequelize[_0x5ef4('0x2')]},'threadid':{'type':Sequelize[_0x5ef4('0x2')]},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x5ef4('0x3')]},'bot':{'type':Sequelize[_0x5ef4('0x4')],'defaultValue':![]}};
\ No newline at end of file
index fc097a4..7ff7678 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf77=['../../mysqldb','end','status','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','sendStatus','error','stack','send','index','map','rawAttributes','key','model','name','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','merge','VIRTUAL','filter','SquareReport','includeAll','findAll','rows','catch','include','options','find','create','body','destroy','params','describe','eml-format','zip-dir','moment','bluebird','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util'];(function(_0x2eef1d,_0x34ac7d){var _0x2e46b4=function(_0x413165){while(--_0x413165){_0x2eef1d['push'](_0x2eef1d['shift']());}};_0x2e46b4(++_0x34ac7d);}(_0xbf77,0x1ef));var _0x7bf7=function(_0x4a747d,_0x3b747f){_0x4a747d=_0x4a747d-0x0;var _0x3a5b5c=_0xbf77[_0x4a747d];return _0x3a5b5c;};'use strict';var emlformat=require(_0x7bf7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7bf7('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7bf7('0x2'));var BPromise=require(_0x7bf7('0x3'));var Mustache=require('mustache');var util=require(_0x7bf7('0x4'));var path=require(_0x7bf7('0x5'));var sox=require('sox');var csv=require(_0x7bf7('0x6'));var ejs=require(_0x7bf7('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x7bf7('0x8'));var crypto=require(_0x7bf7('0x9'));var jsforce=require(_0x7bf7('0xa'));var deskjs=require(_0x7bf7('0xb'));var toCsv=require('to-csv');var querystring=require(_0x7bf7('0xc'));var Papa=require(_0x7bf7('0xd'));var Redis=require(_0x7bf7('0xe'));var authService=require(_0x7bf7('0xf'));var qs=require(_0x7bf7('0x10'));var as=require(_0x7bf7('0x11'));var hardwareService=require(_0x7bf7('0x12'));var logger=require(_0x7bf7('0x13'))(_0x7bf7('0x14'));var utils=require(_0x7bf7('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x7bf7('0x16'));var db=require(_0x7bf7('0x17'))['db'];function respondWithStatusCode(_0x4a7d8c,_0x20511f){_0x20511f=_0x20511f||0xcc;return function(_0x260de2){if(_0x260de2){return _0x4a7d8c['sendStatus'](_0x20511f);}return _0x4a7d8c['status'](_0x20511f)[_0x7bf7('0x18')]();};}function respondWithResult(_0x4ae90f,_0x5dd327){_0x5dd327=_0x5dd327||0xc8;return function(_0x4f6352){if(_0x4f6352){return _0x4ae90f[_0x7bf7('0x19')](_0x5dd327)['json'](_0x4f6352);}};}function respondWithFilteredResult(_0x43623b,_0x34e697){return function(_0x2061c4){if(_0x2061c4){var _0x59fd0d=typeof _0x34e697['offset']==='undefined'&&typeof _0x34e697[_0x7bf7('0x1a')]===_0x7bf7('0x1b');var _0x1b2aca=_0x2061c4[_0x7bf7('0x1c')];var _0x56f683=_0x59fd0d?0x0:_0x34e697[_0x7bf7('0x1d')];var _0x5e7f58=_0x59fd0d?_0x2061c4[_0x7bf7('0x1c')]:_0x34e697[_0x7bf7('0x1d')]+_0x34e697[_0x7bf7('0x1a')];var _0xbbc12e;if(_0x5e7f58>=_0x1b2aca){_0x5e7f58=_0x1b2aca;_0xbbc12e=0xc8;}else{_0xbbc12e=0xce;}_0x43623b[_0x7bf7('0x19')](_0xbbc12e);return _0x43623b[_0x7bf7('0x1e')](_0x7bf7('0x1f'),_0x56f683+'-'+_0x5e7f58+'/'+_0x1b2aca)['json'](_0x2061c4);}return null;};}function patchUpdates(_0x14b817){return function(_0x28d9f2){try{jsonpatch[_0x7bf7('0x20')](_0x28d9f2,_0x14b817,!![]);}catch(_0x1af99a){return BPromise[_0x7bf7('0x21')](_0x1af99a);}return _0x28d9f2[_0x7bf7('0x22')]();};}function saveUpdates(_0x588b48,_0xd2141f){return function(_0x3d3eff){if(_0x3d3eff){return _0x3d3eff[_0x7bf7('0x23')](_0x588b48)[_0x7bf7('0x24')](function(_0x3fd4d8){return _0x3fd4d8;});}return null;};}function removeEntity(_0x41eb3e,_0x28a1a5){return function(_0x24877a){if(_0x24877a){return _0x24877a['destroy']()['then'](function(){_0x41eb3e[_0x7bf7('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1809c2,_0x1f4109){return function(_0x14ae67){if(!_0x14ae67){_0x1809c2[_0x7bf7('0x25')](0x194);}return _0x14ae67;};}function handleError(_0x11935e,_0x65a3be){_0x65a3be=_0x65a3be||0x1f4;return function(_0x2c2642){logger[_0x7bf7('0x26')](_0x2c2642[_0x7bf7('0x27')]);if(_0x2c2642['name']){delete _0x2c2642['name'];}_0x11935e['status'](_0x65a3be)[_0x7bf7('0x28')](_0x2c2642);};}exports[_0x7bf7('0x29')]=function(_0x2b7e75,_0x5783bc){var _0x336299={},_0x542991={},_0x2f4cc6={'count':0x0,'rows':[]};var _0x5f1fad=_[_0x7bf7('0x2a')](db['SquareReport'][_0x7bf7('0x2b')],function(_0x17e4b6){return{'name':_0x17e4b6['fieldName'],'type':_0x17e4b6['type'][_0x7bf7('0x2c')]};});_0x542991[_0x7bf7('0x2d')]=_[_0x7bf7('0x2a')](_0x5f1fad,_0x7bf7('0x2e'));_0x542991[_0x7bf7('0x2f')]=_[_0x7bf7('0x30')](_0x2b7e75[_0x7bf7('0x2f')]);_0x542991['filters']=_[_0x7bf7('0x31')](_0x542991['model'],_0x542991[_0x7bf7('0x2f')]);_0x336299[_0x7bf7('0x32')]=_['intersection'](_0x542991[_0x7bf7('0x2d')],qs[_0x7bf7('0x33')](_0x2b7e75[_0x7bf7('0x2f')][_0x7bf7('0x33')]));_0x336299['attributes']=_0x336299[_0x7bf7('0x32')][_0x7bf7('0x34')]?_0x336299[_0x7bf7('0x32')]:_0x542991['model'];if(!_0x2b7e75[_0x7bf7('0x2f')][_0x7bf7('0x35')](_0x7bf7('0x36'))){_0x336299[_0x7bf7('0x1a')]=qs[_0x7bf7('0x1a')](_0x2b7e75['query'][_0x7bf7('0x1a')]);_0x336299[_0x7bf7('0x1d')]=qs[_0x7bf7('0x1d')](_0x2b7e75[_0x7bf7('0x2f')]['offset']);}_0x336299['order']=qs[_0x7bf7('0x37')](_0x2b7e75[_0x7bf7('0x2f')][_0x7bf7('0x37')]);_0x336299[_0x7bf7('0x38')]=qs[_0x7bf7('0x39')](_['pick'](_0x2b7e75[_0x7bf7('0x2f')],_0x542991[_0x7bf7('0x39')]),_0x5f1fad);if(_0x2b7e75[_0x7bf7('0x2f')]['filter']){_0x336299[_0x7bf7('0x38')]=_[_0x7bf7('0x3a')](_0x336299[_0x7bf7('0x38')],{'$or':_[_0x7bf7('0x2a')](_0x5f1fad,function(_0x413b32){if(_0x413b32['type']!==_0x7bf7('0x3b')){var _0x17a9c0={};_0x17a9c0[_0x413b32[_0x7bf7('0x2e')]]={'$like':'%'+_0x2b7e75['query'][_0x7bf7('0x3c')]+'%'};return _0x17a9c0;}})});}_0x336299=_[_0x7bf7('0x3a')]({},_0x336299,_0x2b7e75['options']);var _0x170ed3={'where':_0x336299['where']};return db[_0x7bf7('0x3d')][_0x7bf7('0x1c')](_0x170ed3)[_0x7bf7('0x24')](function(_0x39c7d3){_0x2f4cc6[_0x7bf7('0x1c')]=_0x39c7d3;if(_0x2b7e75['query'][_0x7bf7('0x3e')]){_0x336299['include']=[{'all':!![]}];}return db[_0x7bf7('0x3d')][_0x7bf7('0x3f')](_0x336299);})[_0x7bf7('0x24')](function(_0x112d77){_0x2f4cc6[_0x7bf7('0x40')]=_0x112d77;return _0x2f4cc6;})[_0x7bf7('0x24')](respondWithFilteredResult(_0x5783bc,_0x336299))[_0x7bf7('0x41')](handleError(_0x5783bc,null));};exports['show']=function(_0x16ac40,_0x3ca013){var _0x3c5ade={'raw':!![],'where':{'id':_0x16ac40['params']['id']}},_0x5daae4={};_0x5daae4['model']=_[_0x7bf7('0x30')](db[_0x7bf7('0x3d')]['rawAttributes']);_0x5daae4['query']=_['keys'](_0x16ac40[_0x7bf7('0x2f')]);_0x5daae4[_0x7bf7('0x39')]=_[_0x7bf7('0x31')](_0x5daae4['model'],_0x5daae4[_0x7bf7('0x2f')]);_0x3c5ade['attributes']=_['intersection'](_0x5daae4[_0x7bf7('0x2d')],qs[_0x7bf7('0x33')](_0x16ac40['query'][_0x7bf7('0x33')]));_0x3c5ade[_0x7bf7('0x32')]=_0x3c5ade[_0x7bf7('0x32')]['length']?_0x3c5ade[_0x7bf7('0x32')]:_0x5daae4[_0x7bf7('0x2d')];if(_0x16ac40['query']['includeAll']){_0x3c5ade[_0x7bf7('0x42')]=[{'all':!![]}];}_0x3c5ade=_[_0x7bf7('0x3a')]({},_0x3c5ade,_0x16ac40[_0x7bf7('0x43')]);return db[_0x7bf7('0x3d')][_0x7bf7('0x44')](_0x3c5ade)['then'](handleEntityNotFound(_0x3ca013,null))['then'](respondWithResult(_0x3ca013,null))[_0x7bf7('0x41')](handleError(_0x3ca013,null));};exports[_0x7bf7('0x45')]=function(_0x31cccc,_0x4af225){return db[_0x7bf7('0x3d')]['create'](_0x31cccc[_0x7bf7('0x46')],{})['then'](respondWithResult(_0x4af225,0xc9))[_0x7bf7('0x41')](handleError(_0x4af225,null));};exports['update']=function(_0x4a2ef1,_0x51587e){if(_0x4a2ef1[_0x7bf7('0x46')]['id']){delete _0x4a2ef1[_0x7bf7('0x46')]['id'];}return db[_0x7bf7('0x3d')][_0x7bf7('0x44')]({'where':{'id':_0x4a2ef1['params']['id']}})[_0x7bf7('0x24')](handleEntityNotFound(_0x51587e,null))[_0x7bf7('0x24')](saveUpdates(_0x4a2ef1['body'],null))['then'](respondWithResult(_0x51587e,null))['catch'](handleError(_0x51587e,null));};exports[_0x7bf7('0x47')]=function(_0x1f9ff0,_0x2576f0){return db[_0x7bf7('0x3d')][_0x7bf7('0x44')]({'where':{'id':_0x1f9ff0[_0x7bf7('0x48')]['id']}})[_0x7bf7('0x24')](handleEntityNotFound(_0x2576f0,null))['then'](removeEntity(_0x2576f0,null))[_0x7bf7('0x41')](handleError(_0x2576f0,null));};exports[_0x7bf7('0x49')]=function(_0x1812f2,_0x1b1cb9){return db[_0x7bf7('0x3d')]['describe']()[_0x7bf7('0x24')](respondWithResult(_0x1b1cb9,null))['catch'](handleError(_0x1b1cb9,null));};
\ No newline at end of file
+var _0xdc61=['moment','bluebird','mustache','util','path','sox','to-csv','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','undefined','limit','count','offset','set','apply','reject','update','then','destroy','sendStatus','error','stack','name','index','map','SquareReport','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','nolimit','sort','where','pick','filter','options','includeAll','findAll','rows','catch','show','params','keys','include','merge','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x4cba56,_0x5b2c44){var _0x3cc9f3=function(_0x5bb80a){while(--_0x5bb80a){_0x4cba56['push'](_0x4cba56['shift']());}};_0x3cc9f3(++_0x5b2c44);}(_0xdc61,0x8e));var _0x1dc6=function(_0x5c311f,_0x373a4c){_0x5c311f=_0x5c311f-0x0;var _0x834550=_0xdc61[_0x5c311f];return _0x834550;};'use strict';var emlformat=require(_0x1dc6('0x0'));var rimraf=require(_0x1dc6('0x1'));var zipdir=require(_0x1dc6('0x2'));var jsonpatch=require(_0x1dc6('0x3'));var rp=require('request-promise');var moment=require(_0x1dc6('0x4'));var BPromise=require(_0x1dc6('0x5'));var Mustache=require(_0x1dc6('0x6'));var util=require(_0x1dc6('0x7'));var path=require(_0x1dc6('0x8'));var sox=require(_0x1dc6('0x9'));var csv=require(_0x1dc6('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1dc6('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1dc6('0xc'));var deskjs=require(_0x1dc6('0xd'));var toCsv=require(_0x1dc6('0xa'));var querystring=require(_0x1dc6('0xe'));var Papa=require(_0x1dc6('0xf'));var Redis=require('ioredis');var authService=require(_0x1dc6('0x10'));var qs=require(_0x1dc6('0x11'));var as=require(_0x1dc6('0x12'));var hardwareService=require(_0x1dc6('0x13'));var logger=require(_0x1dc6('0x14'))(_0x1dc6('0x15'));var utils=require(_0x1dc6('0x16'));var config=require(_0x1dc6('0x17'));var licenseUtil=require(_0x1dc6('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1107e6,_0x5085b8){_0x5085b8=_0x5085b8||0xcc;return function(_0x1cea3c){if(_0x1cea3c){return _0x1107e6['sendStatus'](_0x5085b8);}return _0x1107e6[_0x1dc6('0x19')](_0x5085b8)[_0x1dc6('0x1a')]();};}function respondWithResult(_0x339b01,_0xde8463){_0xde8463=_0xde8463||0xc8;return function(_0x112605){if(_0x112605){return _0x339b01[_0x1dc6('0x19')](_0xde8463)[_0x1dc6('0x1b')](_0x112605);}};}function respondWithFilteredResult(_0xcb351e,_0x1a6202){return function(_0x2998b7){if(_0x2998b7){var _0x1aafe1=typeof _0x1a6202['offset']===_0x1dc6('0x1c')&&typeof _0x1a6202[_0x1dc6('0x1d')]===_0x1dc6('0x1c');var _0x34e96d=_0x2998b7[_0x1dc6('0x1e')];var _0x5c1222=_0x1aafe1?0x0:_0x1a6202[_0x1dc6('0x1f')];var _0x129b63=_0x1aafe1?_0x2998b7[_0x1dc6('0x1e')]:_0x1a6202[_0x1dc6('0x1f')]+_0x1a6202[_0x1dc6('0x1d')];var _0x5100c1;if(_0x129b63>=_0x34e96d){_0x129b63=_0x34e96d;_0x5100c1=0xc8;}else{_0x5100c1=0xce;}_0xcb351e[_0x1dc6('0x19')](_0x5100c1);return _0xcb351e[_0x1dc6('0x20')]('Content-Range',_0x5c1222+'-'+_0x129b63+'/'+_0x34e96d)['json'](_0x2998b7);}return null;};}function patchUpdates(_0x530dfe){return function(_0x1c4372){try{jsonpatch[_0x1dc6('0x21')](_0x1c4372,_0x530dfe,!![]);}catch(_0x3e0efc){return BPromise[_0x1dc6('0x22')](_0x3e0efc);}return _0x1c4372['save']();};}function saveUpdates(_0x12ee1f,_0x85f85d){return function(_0xc1155d){if(_0xc1155d){return _0xc1155d[_0x1dc6('0x23')](_0x12ee1f)[_0x1dc6('0x24')](function(_0x3b4683){return _0x3b4683;});}return null;};}function removeEntity(_0x11afd7,_0x1160be){return function(_0x4bb16f){if(_0x4bb16f){return _0x4bb16f[_0x1dc6('0x25')]()[_0x1dc6('0x24')](function(){_0x11afd7[_0x1dc6('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e1d01,_0x19f682){return function(_0x22da71){if(!_0x22da71){_0x3e1d01[_0x1dc6('0x26')](0x194);}return _0x22da71;};}function handleError(_0x427ca8,_0x481da1){_0x481da1=_0x481da1||0x1f4;return function(_0x51d276){logger[_0x1dc6('0x27')](_0x51d276[_0x1dc6('0x28')]);if(_0x51d276[_0x1dc6('0x29')]){delete _0x51d276[_0x1dc6('0x29')];}_0x427ca8[_0x1dc6('0x19')](_0x481da1)['send'](_0x51d276);};}exports[_0x1dc6('0x2a')]=function(_0x25df07,_0x590dbc){var _0x34c7f3={},_0x5af959={},_0x3e4b01={'count':0x0,'rows':[]};var _0x360291=_[_0x1dc6('0x2b')](db[_0x1dc6('0x2c')][_0x1dc6('0x2d')],function(_0x14afcc){return{'name':_0x14afcc['fieldName'],'type':_0x14afcc[_0x1dc6('0x2e')][_0x1dc6('0x2f')]};});_0x5af959[_0x1dc6('0x30')]=_[_0x1dc6('0x2b')](_0x360291,_0x1dc6('0x29'));_0x5af959[_0x1dc6('0x31')]=_['keys'](_0x25df07[_0x1dc6('0x31')]);_0x5af959[_0x1dc6('0x32')]=_[_0x1dc6('0x33')](_0x5af959['model'],_0x5af959[_0x1dc6('0x31')]);_0x34c7f3['attributes']=_[_0x1dc6('0x33')](_0x5af959[_0x1dc6('0x30')],qs['fields'](_0x25df07['query'][_0x1dc6('0x34')]));_0x34c7f3[_0x1dc6('0x35')]=_0x34c7f3[_0x1dc6('0x35')]['length']?_0x34c7f3[_0x1dc6('0x35')]:_0x5af959[_0x1dc6('0x30')];if(!_0x25df07['query']['hasOwnProperty'](_0x1dc6('0x36'))){_0x34c7f3['limit']=qs['limit'](_0x25df07[_0x1dc6('0x31')][_0x1dc6('0x1d')]);_0x34c7f3[_0x1dc6('0x1f')]=qs[_0x1dc6('0x1f')](_0x25df07[_0x1dc6('0x31')]['offset']);}_0x34c7f3['order']=qs[_0x1dc6('0x37')](_0x25df07[_0x1dc6('0x31')][_0x1dc6('0x37')]);_0x34c7f3[_0x1dc6('0x38')]=qs['filters'](_[_0x1dc6('0x39')](_0x25df07['query'],_0x5af959[_0x1dc6('0x32')]),_0x360291);if(_0x25df07['query'][_0x1dc6('0x3a')]){_0x34c7f3[_0x1dc6('0x38')]=_['merge'](_0x34c7f3[_0x1dc6('0x38')],{'$or':_[_0x1dc6('0x2b')](_0x360291,function(_0x475c09){if(_0x475c09[_0x1dc6('0x2e')]!=='VIRTUAL'){var _0x183f12={};_0x183f12[_0x475c09[_0x1dc6('0x29')]]={'$like':'%'+_0x25df07['query'][_0x1dc6('0x3a')]+'%'};return _0x183f12;}})});}_0x34c7f3=_['merge']({},_0x34c7f3,_0x25df07[_0x1dc6('0x3b')]);var _0x2ca0fb={'where':_0x34c7f3[_0x1dc6('0x38')]};return db[_0x1dc6('0x2c')][_0x1dc6('0x1e')](_0x2ca0fb)[_0x1dc6('0x24')](function(_0x546186){_0x3e4b01['count']=_0x546186;if(_0x25df07['query'][_0x1dc6('0x3c')]){_0x34c7f3['include']=[{'all':!![]}];}return db[_0x1dc6('0x2c')][_0x1dc6('0x3d')](_0x34c7f3);})[_0x1dc6('0x24')](function(_0x327cfd){_0x3e4b01[_0x1dc6('0x3e')]=_0x327cfd;return _0x3e4b01;})[_0x1dc6('0x24')](respondWithFilteredResult(_0x590dbc,_0x34c7f3))[_0x1dc6('0x3f')](handleError(_0x590dbc,null));};exports[_0x1dc6('0x40')]=function(_0x18861b,_0x457fb5){var _0x1ef9ed={'raw':!![],'where':{'id':_0x18861b[_0x1dc6('0x41')]['id']}},_0x7b533c={};_0x7b533c['model']=_[_0x1dc6('0x42')](db[_0x1dc6('0x2c')][_0x1dc6('0x2d')]);_0x7b533c['query']=_[_0x1dc6('0x42')](_0x18861b[_0x1dc6('0x31')]);_0x7b533c[_0x1dc6('0x32')]=_[_0x1dc6('0x33')](_0x7b533c['model'],_0x7b533c[_0x1dc6('0x31')]);_0x1ef9ed[_0x1dc6('0x35')]=_[_0x1dc6('0x33')](_0x7b533c[_0x1dc6('0x30')],qs[_0x1dc6('0x34')](_0x18861b['query'][_0x1dc6('0x34')]));_0x1ef9ed[_0x1dc6('0x35')]=_0x1ef9ed[_0x1dc6('0x35')]['length']?_0x1ef9ed['attributes']:_0x7b533c['model'];if(_0x18861b[_0x1dc6('0x31')][_0x1dc6('0x3c')]){_0x1ef9ed[_0x1dc6('0x43')]=[{'all':!![]}];}_0x1ef9ed=_[_0x1dc6('0x44')]({},_0x1ef9ed,_0x18861b[_0x1dc6('0x3b')]);return db[_0x1dc6('0x2c')]['find'](_0x1ef9ed)[_0x1dc6('0x24')](handleEntityNotFound(_0x457fb5,null))[_0x1dc6('0x24')](respondWithResult(_0x457fb5,null))[_0x1dc6('0x3f')](handleError(_0x457fb5,null));};exports[_0x1dc6('0x45')]=function(_0x562f00,_0x1adaa9){return db[_0x1dc6('0x2c')][_0x1dc6('0x45')](_0x562f00['body'],{})['then'](respondWithResult(_0x1adaa9,0xc9))[_0x1dc6('0x3f')](handleError(_0x1adaa9,null));};exports[_0x1dc6('0x23')]=function(_0x925a57,_0x28fb94){if(_0x925a57[_0x1dc6('0x46')]['id']){delete _0x925a57[_0x1dc6('0x46')]['id'];}return db[_0x1dc6('0x2c')][_0x1dc6('0x47')]({'where':{'id':_0x925a57['params']['id']}})[_0x1dc6('0x24')](handleEntityNotFound(_0x28fb94,null))['then'](saveUpdates(_0x925a57[_0x1dc6('0x46')],null))[_0x1dc6('0x24')](respondWithResult(_0x28fb94,null))['catch'](handleError(_0x28fb94,null));};exports['destroy']=function(_0xfc9b00,_0x25a445){return db['SquareReport']['find']({'where':{'id':_0xfc9b00[_0x1dc6('0x41')]['id']}})[_0x1dc6('0x24')](handleEntityNotFound(_0x25a445,null))['then'](removeEntity(_0x25a445,null))[_0x1dc6('0x3f')](handleError(_0x25a445,null));};exports[_0x1dc6('0x48')]=function(_0x256cae,_0x3896f9){return db[_0x1dc6('0x2c')][_0x1dc6('0x48')]()[_0x1dc6('0x24')](respondWithResult(_0x3896f9,null))[_0x1dc6('0x3f')](handleError(_0x3896f9,null));};
\ No newline at end of file
index 6c78230..5c543a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x913f=['./squareReport.attributes','exports','define','uid_pname','uniqueid','project_name','leaveAt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0x913f,0x1b7));var _0xf913=function(_0x3ef1ad,_0x26152b){_0x3ef1ad=_0x3ef1ad-0x0;var _0x965f19=_0x913f[_0x3ef1ad];return _0x965f19;};'use strict';var _=require(_0xf913('0x0'));var util=require(_0xf913('0x1'));var logger=require(_0xf913('0x2'))(_0xf913('0x3'));var moment=require(_0xf913('0x4'));var BPromise=require(_0xf913('0x5'));var rp=require(_0xf913('0x6'));var fs=require('fs');var path=require(_0xf913('0x7'));var rimraf=require('rimraf');var config=require(_0xf913('0x8'));var attributes=require(_0xf913('0x9'));module[_0xf913('0xa')]=function(_0x1e25d4,_0x4e8d33){return _0x1e25d4[_0xf913('0xb')]('SquareReport',attributes,{'tableName':'report_square','paranoid':![],'indexes':[{'name':_0xf913('0xc'),'fields':[_0xf913('0xd'),_0xf913('0xe')]},{'name':_0xf913('0xf'),'fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcbda=['moment','bluebird','../../config/environment','./squareReport.attributes','exports','define','SquareReport','report_square','uid_pname','uniqueid','project_name','leaveAt','lodash','util'];(function(_0x1d8119,_0xc98f17){var _0x3e30f6=function(_0x2c7f3e){while(--_0x2c7f3e){_0x1d8119['push'](_0x1d8119['shift']());}};_0x3e30f6(++_0xc98f17);}(_0xcbda,0x8a));var _0xacbd=function(_0x3fe048,_0x166d1a){_0x3fe048=_0x3fe048-0x0;var _0x126c40=_0xcbda[_0x3fe048];return _0x126c40;};'use strict';var _=require(_0xacbd('0x0'));var util=require(_0xacbd('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xacbd('0x2'));var BPromise=require(_0xacbd('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xacbd('0x4'));var attributes=require(_0xacbd('0x5'));module[_0xacbd('0x6')]=function(_0x3a9f58,_0x1e81be){return _0x3a9f58[_0xacbd('0x7')](_0xacbd('0x8'),attributes,{'tableName':_0xacbd('0x9'),'paranoid':![],'indexes':[{'name':_0xacbd('0xa'),'fields':[_0xacbd('0xb'),_0xacbd('0xc')]},{'name':_0xacbd('0xd'),'fields':[_0xacbd('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 26da6f3..0aaf99e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x705d=['../../config/environment','client','request','then','info','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SquareReport,\x20%s,\x20%s','result','catch','CreateSquareReport','SquareReport','body','options','UpdateSquareReport','update','raw','attributes','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc'];(function(_0x168127,_0x59cea1){var _0x4c99ad=function(_0x4ab3f2){while(--_0x4ab3f2){_0x168127['push'](_0x168127['shift']());}};_0x4c99ad(++_0x59cea1);}(_0x705d,0xcb));var _0xd705=function(_0x3f7836,_0x238cec){_0x3f7836=_0x3f7836-0x0;var _0x101912=_0x705d[_0x3f7836];return _0x101912;};'use strict';var _=require(_0xd705('0x0'));var util=require(_0xd705('0x1'));var moment=require(_0xd705('0x2'));var BPromise=require(_0xd705('0x3'));var rs=require(_0xd705('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xd705('0x5'))(_0xd705('0x6'));var config=require(_0xd705('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xd705('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x514179,_0x59740c,_0x11f813){return new BPromise(function(_0x394c49,_0x354ef5){return client[_0xd705('0x9')](_0x514179,_0x11f813)[_0xd705('0xa')](function(_0x150fbe){logger[_0xd705('0xb')]('SquareReport,\x20%s,\x20%s',_0x59740c,_0xd705('0xc'));logger[_0xd705('0xd')](_0xd705('0xe'),_0x59740c,'request\x20sent',JSON[_0xd705('0xf')](_0x150fbe));if(_0x150fbe[_0xd705('0x10')]){if(_0x150fbe[_0xd705('0x10')][_0xd705('0x11')]===0x1f4){logger[_0xd705('0x10')]('SquareReport,\x20%s,\x20%s',_0x59740c,_0x150fbe[_0xd705('0x10')][_0xd705('0x12')]);return _0x354ef5(_0x150fbe[_0xd705('0x10')]['message']);}logger['error'](_0xd705('0x13'),_0x59740c,_0x150fbe[_0xd705('0x10')][_0xd705('0x12')]);return _0x394c49(_0x150fbe['error']['message']);}else{logger[_0xd705('0xb')]('SquareReport,\x20%s,\x20%s',_0x59740c,'request\x20sent');_0x394c49(_0x150fbe[_0xd705('0x14')][_0xd705('0x12')]);}})[_0xd705('0x15')](function(_0x136f01){logger[_0xd705('0x10')](_0xd705('0x13'),_0x59740c,_0x136f01);_0x354ef5(_0x136f01);});});}exports[_0xd705('0x16')]=function(_0xb25b1f){var _0x3639c3=this;return new Promise(function(_0x1a2b77,_0x171e8e){return db[_0xd705('0x17')]['create'](_0xb25b1f[_0xd705('0x18')],{'raw':_0xb25b1f[_0xd705('0x19')]?_0xb25b1f[_0xd705('0x19')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x5df8ca){logger['info'](_0xd705('0x16'),_0xb25b1f);logger[_0xd705('0xd')](_0xd705('0x16'),_0xb25b1f,JSON[_0xd705('0xf')](_0x5df8ca));_0x1a2b77(_0x5df8ca);})[_0xd705('0x15')](function(_0x4be88f){logger[_0xd705('0x10')](_0xd705('0x16'),_0x4be88f['message'],_0xb25b1f);_0x171e8e(_0x3639c3[_0xd705('0x10')](0x1f4,_0x4be88f['message']));});});};exports[_0xd705('0x1a')]=function(_0x26456b){var _0x158d6d=this;return new Promise(function(_0x24ea63,_0x21092f){return db['SquareReport'][_0xd705('0x1b')](_0x26456b[_0xd705('0x18')],{'raw':_0x26456b[_0xd705('0x19')]?_0x26456b[_0xd705('0x19')][_0xd705('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x26456b['options']?_0x26456b['options']['where']||null:null,'attributes':_0x26456b[_0xd705('0x19')]?_0x26456b[_0xd705('0x19')][_0xd705('0x1d')]||null:null,'limit':_0x26456b[_0xd705('0x19')]?_0x26456b[_0xd705('0x19')]['limit']||null:null})[_0xd705('0xa')](function(_0x15c6b9){logger['info'](_0xd705('0x1a'),_0x26456b);logger[_0xd705('0xd')]('UpdateSquareReport',_0x26456b,JSON['stringify'](_0x15c6b9));_0x24ea63(_0x15c6b9);})[_0xd705('0x15')](function(_0x54ed46){logger[_0xd705('0x10')](_0xd705('0x1a'),_0x54ed46[_0xd705('0x12')],_0x26456b);_0x21092f(_0x158d6d[_0xd705('0x10')](0x1f4,_0x54ed46['message']));});});};
\ No newline at end of file
+var _0xaa2b=['UpdateSquareReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','client','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateSquareReport','SquareReport','create','options','update','body','raw','where','attributes','limit'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xaa2b,0x7d));var _0xbaa2=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xaa2b[_0x2641f9];return _0x585741;};'use strict';var _=require('lodash');var util=require(_0xbaa2('0x0'));var moment=require(_0xbaa2('0x1'));var BPromise=require(_0xbaa2('0x2'));var rs=require(_0xbaa2('0x3'));var fs=require('fs');var Redis=require(_0xbaa2('0x4'));var db=require(_0xbaa2('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xbaa2('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbaa2('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ffe72,_0x3ab322,_0x3d7f8a){return new BPromise(function(_0x164688,_0x4e37d8){return client[_0xbaa2('0x8')](_0x2ffe72,_0x3d7f8a)[_0xbaa2('0x9')](function(_0x7db5ed){logger[_0xbaa2('0xa')](_0xbaa2('0xb'),_0x3ab322,_0xbaa2('0xc'));logger[_0xbaa2('0xd')](_0xbaa2('0xe'),_0x3ab322,_0xbaa2('0xc'),JSON[_0xbaa2('0xf')](_0x7db5ed));if(_0x7db5ed[_0xbaa2('0x10')]){if(_0x7db5ed['error'][_0xbaa2('0x11')]===0x1f4){logger[_0xbaa2('0x10')]('SquareReport,\x20%s,\x20%s',_0x3ab322,_0x7db5ed[_0xbaa2('0x10')]['message']);return _0x4e37d8(_0x7db5ed[_0xbaa2('0x10')][_0xbaa2('0x12')]);}logger[_0xbaa2('0x10')]('SquareReport,\x20%s,\x20%s',_0x3ab322,_0x7db5ed[_0xbaa2('0x10')][_0xbaa2('0x12')]);return _0x164688(_0x7db5ed[_0xbaa2('0x10')][_0xbaa2('0x12')]);}else{logger['info']('SquareReport,\x20%s,\x20%s',_0x3ab322,_0xbaa2('0xc'));_0x164688(_0x7db5ed['result'][_0xbaa2('0x12')]);}})[_0xbaa2('0x13')](function(_0x4af66f){logger[_0xbaa2('0x10')](_0xbaa2('0xb'),_0x3ab322,_0x4af66f);_0x4e37d8(_0x4af66f);});});}exports[_0xbaa2('0x14')]=function(_0x5dd63f){var _0x691a43=this;return new Promise(function(_0x548849,_0x145052){return db[_0xbaa2('0x15')][_0xbaa2('0x16')](_0x5dd63f['body'],{'raw':_0x5dd63f[_0xbaa2('0x17')]?_0x5dd63f['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x5d0bee){logger[_0xbaa2('0xa')]('CreateSquareReport',_0x5dd63f);logger[_0xbaa2('0xd')](_0xbaa2('0x14'),_0x5dd63f,JSON[_0xbaa2('0xf')](_0x5d0bee));_0x548849(_0x5d0bee);})[_0xbaa2('0x13')](function(_0x478ee1){logger['error']('CreateSquareReport',_0x478ee1[_0xbaa2('0x12')],_0x5dd63f);_0x145052(_0x691a43[_0xbaa2('0x10')](0x1f4,_0x478ee1['message']));});});};exports['UpdateSquareReport']=function(_0x5616e0){var _0x3a86cf=this;return new Promise(function(_0x212aa3,_0x134e67){return db['SquareReport'][_0xbaa2('0x18')](_0x5616e0[_0xbaa2('0x19')],{'raw':_0x5616e0[_0xbaa2('0x17')]?_0x5616e0['options'][_0xbaa2('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5616e0[_0xbaa2('0x17')]?_0x5616e0[_0xbaa2('0x17')][_0xbaa2('0x1b')]||null:null,'attributes':_0x5616e0['options']?_0x5616e0[_0xbaa2('0x17')][_0xbaa2('0x1c')]||null:null,'limit':_0x5616e0['options']?_0x5616e0[_0xbaa2('0x17')][_0xbaa2('0x1d')]||null:null})[_0xbaa2('0x9')](function(_0x3f0d87){logger[_0xbaa2('0xa')]('UpdateSquareReport',_0x5616e0);logger[_0xbaa2('0xd')]('UpdateSquareReport',_0x5616e0,JSON[_0xbaa2('0xf')](_0x3f0d87));_0x212aa3(_0x3f0d87);})[_0xbaa2('0x13')](function(_0x43f6de){logger[_0xbaa2('0x10')](_0xbaa2('0x1e'),_0x43f6de[_0xbaa2('0x12')],_0x5616e0);_0x134e67(_0x3a86cf['error'](0x1f4,_0x43f6de[_0xbaa2('0x12')]));});});};
\ No newline at end of file
index 995512f..ffa9415 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8461=['show','post','put','update','delete','destroy','util','path','express','Router','fs-extra','../../components/interaction/service','get','index','/describe','isAuthenticated','/:id'];(function(_0x399b34,_0x30d7e0){var _0xd355a7=function(_0x515fe8){while(--_0x515fe8){_0x399b34['push'](_0x399b34['shift']());}};_0xd355a7(++_0x30d7e0);}(_0x8461,0x149));var _0x1846=function(_0x57220c,_0x5b5efd){_0x57220c=_0x57220c-0x0;var _0x372396=_0x8461[_0x57220c];return _0x372396;};'use strict';var multer=require('multer');var util=require(_0x1846('0x0'));var path=require(_0x1846('0x1'));var timeout=require('connect-timeout');var express=require(_0x1846('0x2'));var router=express[_0x1846('0x3')]();var fs_extra=require(_0x1846('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1846('0x5'));var config=require('../../config/environment');var controller=require('./squareReportDetail.controller');router[_0x1846('0x6')]('/',auth['isAuthenticated'](),controller[_0x1846('0x7')]);router['get'](_0x1846('0x8'),auth[_0x1846('0x9')](),controller['describe']);router['get'](_0x1846('0xa'),auth[_0x1846('0x9')](),controller[_0x1846('0xb')]);router[_0x1846('0xc')]('/',auth[_0x1846('0x9')](),controller['create']);router[_0x1846('0xd')](_0x1846('0xa'),auth[_0x1846('0x9')](),controller[_0x1846('0xe')]);router[_0x1846('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x1846('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x8614=['../../components/interaction/service','../../config/environment','./squareReportDetail.controller','isAuthenticated','index','get','/describe','describe','show','post','create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x2798b4,_0xc8a075){var _0x506eba=function(_0x5bfaa2){while(--_0x5bfaa2){_0x2798b4['push'](_0x2798b4['shift']());}};_0x506eba(++_0xc8a075);}(_0x8614,0x69));var _0x4861=function(_0x10a038,_0x5f20a7){_0x10a038=_0x10a038-0x0;var _0x2b6bcb=_0x8614[_0x10a038];return _0x2b6bcb;};'use strict';var multer=require('multer');var util=require(_0x4861('0x0'));var path=require(_0x4861('0x1'));var timeout=require(_0x4861('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x4861('0x3'));var auth=require(_0x4861('0x4'));var interaction=require(_0x4861('0x5'));var config=require(_0x4861('0x6'));var controller=require(_0x4861('0x7'));router['get']('/',auth[_0x4861('0x8')](),controller[_0x4861('0x9')]);router[_0x4861('0xa')](_0x4861('0xb'),auth['isAuthenticated'](),controller[_0x4861('0xc')]);router[_0x4861('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x4861('0xd')]);router[_0x4861('0xe')]('/',auth['isAuthenticated'](),controller[_0x4861('0xf')]);router[_0x4861('0x10')](_0x4861('0x11'),auth['isAuthenticated'](),controller[_0x4861('0x12')]);router[_0x4861('0x13')](_0x4861('0x11'),auth['isAuthenticated'](),controller[_0x4861('0x14')]);module[_0x4861('0x15')]=router;
\ No newline at end of file
index 2bed336..5419263 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ef9=['sequelize','exports','STRING','TEXT'];(function(_0x11885e,_0x36293c){var _0x3886f7=function(_0x39c2c5){while(--_0x39c2c5){_0x11885e['push'](_0x11885e['shift']());}};_0x3886f7(++_0x36293c);}(_0x7ef9,0x1b8));var _0x97ef=function(_0x303ae9,_0x3118fd){_0x303ae9=_0x303ae9-0x0;var _0x504681=_0x7ef9[_0x303ae9];return _0x504681;};'use strict';var Sequelize=require(_0x97ef('0x0'));module[_0x97ef('0x1')]={'uniqueid':{'type':Sequelize[_0x97ef('0x2')]},'node':{'type':Sequelize[_0x97ef('0x2')]},'application':{'type':Sequelize[_0x97ef('0x2')]},'data':{'type':Sequelize[_0x97ef('0x3')]},'project_name':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x97ef('0x2')]}};
\ No newline at end of file
+var _0xf07c=['STRING','TEXT','exports'];(function(_0x2e6c3b,_0x513b37){var _0x46f4bd=function(_0x2b0388){while(--_0x2b0388){_0x2e6c3b['push'](_0x2e6c3b['shift']());}};_0x46f4bd(++_0x513b37);}(_0xf07c,0x134));var _0xcf07=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0xf07c[_0x45d3f0];return _0x314b79;};'use strict';var Sequelize=require('sequelize');module[_0xcf07('0x0')]={'uniqueid':{'type':Sequelize[_0xcf07('0x1')]},'node':{'type':Sequelize[_0xcf07('0x1')]},'application':{'type':Sequelize[_0xcf07('0x1')]},'data':{'type':Sequelize[_0xcf07('0x2')]},'project_name':{'type':Sequelize[_0xcf07('0x1')]},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f7f5ab8..2d00691 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb52b=['create','body','destroy','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','sendStatus','error','stack','name','send','map','SquareDetailsReport','rawAttributes','fieldName','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','findAll','catch','show','params','keys','includeAll','include'];(function(_0x192c9f,_0x4e8bda){var _0x6d3873=function(_0x4cd019){while(--_0x4cd019){_0x192c9f['push'](_0x192c9f['shift']());}};_0x6d3873(++_0x4e8bda);}(_0xb52b,0xe6));var _0xbb52=function(_0x435f7b,_0x5743a9){_0x435f7b=_0x435f7b-0x0;var _0x58d2b1=_0xb52b[_0x435f7b];return _0x58d2b1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbb52('0x0'));var zipdir=require(_0xbb52('0x1'));var jsonpatch=require(_0xbb52('0x2'));var rp=require(_0xbb52('0x3'));var moment=require(_0xbb52('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbb52('0x5'));var path=require(_0xbb52('0x6'));var sox=require(_0xbb52('0x7'));var csv=require(_0xbb52('0x8'));var ejs=require(_0xbb52('0x9'));var fs=require('fs');var fs_extra=require(_0xbb52('0xa'));var _=require(_0xbb52('0xb'));var squel=require(_0xbb52('0xc'));var crypto=require(_0xbb52('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xbb52('0xe'));var toCsv=require(_0xbb52('0x8'));var querystring=require(_0xbb52('0xf'));var Papa=require('papaparse');var Redis=require(_0xbb52('0x10'));var authService=require(_0xbb52('0x11'));var qs=require(_0xbb52('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbb52('0x13'));var logger=require(_0xbb52('0x14'))(_0xbb52('0x15'));var utils=require('../../config/utils');var config=require(_0xbb52('0x16'));var licenseUtil=require(_0xbb52('0x17'));var db=require(_0xbb52('0x18'))['db'];function respondWithStatusCode(_0x73862c,_0x330ad9){_0x330ad9=_0x330ad9||0xcc;return function(_0x2d128c){if(_0x2d128c){return _0x73862c['sendStatus'](_0x330ad9);}return _0x73862c[_0xbb52('0x19')](_0x330ad9)[_0xbb52('0x1a')]();};}function respondWithResult(_0x315588,_0x3ac439){_0x3ac439=_0x3ac439||0xc8;return function(_0x5c1772){if(_0x5c1772){return _0x315588['status'](_0x3ac439)[_0xbb52('0x1b')](_0x5c1772);}};}function respondWithFilteredResult(_0x4dde1a,_0x386e99){return function(_0x5b4ea1){if(_0x5b4ea1){var _0xf561c6=typeof _0x386e99['offset']===_0xbb52('0x1c')&&typeof _0x386e99[_0xbb52('0x1d')]==='undefined';var _0x178358=_0x5b4ea1[_0xbb52('0x1e')];var _0x1ec63b=_0xf561c6?0x0:_0x386e99['offset'];var _0x2db11e=_0xf561c6?_0x5b4ea1['count']:_0x386e99[_0xbb52('0x1f')]+_0x386e99[_0xbb52('0x1d')];var _0x2129fe;if(_0x2db11e>=_0x178358){_0x2db11e=_0x178358;_0x2129fe=0xc8;}else{_0x2129fe=0xce;}_0x4dde1a[_0xbb52('0x19')](_0x2129fe);return _0x4dde1a[_0xbb52('0x20')](_0xbb52('0x21'),_0x1ec63b+'-'+_0x2db11e+'/'+_0x178358)[_0xbb52('0x1b')](_0x5b4ea1);}return null;};}function patchUpdates(_0x26d37f){return function(_0x24aaa6){try{jsonpatch[_0xbb52('0x22')](_0x24aaa6,_0x26d37f,!![]);}catch(_0x34fe97){return BPromise[_0xbb52('0x23')](_0x34fe97);}return _0x24aaa6[_0xbb52('0x24')]();};}function saveUpdates(_0x5dc204,_0x503b26){return function(_0x3fc29f){if(_0x3fc29f){return _0x3fc29f[_0xbb52('0x25')](_0x5dc204)[_0xbb52('0x26')](function(_0x1db43e){return _0x1db43e;});}return null;};}function removeEntity(_0x181775,_0x3cf1f1){return function(_0xf938bf){if(_0xf938bf){return _0xf938bf['destroy']()[_0xbb52('0x26')](function(){_0x181775[_0xbb52('0x19')](0xcc)[_0xbb52('0x1a')]();});}};}function handleEntityNotFound(_0x22c3e6,_0xbc87ab){return function(_0xe5a16){if(!_0xe5a16){_0x22c3e6[_0xbb52('0x27')](0x194);}return _0xe5a16;};}function handleError(_0x2dfa64,_0x4f8d54){_0x4f8d54=_0x4f8d54||0x1f4;return function(_0x3fa3ea){logger[_0xbb52('0x28')](_0x3fa3ea[_0xbb52('0x29')]);if(_0x3fa3ea[_0xbb52('0x2a')]){delete _0x3fa3ea[_0xbb52('0x2a')];}_0x2dfa64[_0xbb52('0x19')](_0x4f8d54)[_0xbb52('0x2b')](_0x3fa3ea);};}exports['index']=function(_0x43d7d1,_0x2285fd){var _0x262cb2={},_0x599529={},_0x4c3d71={'count':0x0,'rows':[]};var _0x38d362=_[_0xbb52('0x2c')](db[_0xbb52('0x2d')][_0xbb52('0x2e')],function(_0x2d29b4){return{'name':_0x2d29b4[_0xbb52('0x2f')],'type':_0x2d29b4['type'][_0xbb52('0x30')]};});_0x599529[_0xbb52('0x31')]=_[_0xbb52('0x2c')](_0x38d362,_0xbb52('0x2a'));_0x599529[_0xbb52('0x32')]=_['keys'](_0x43d7d1[_0xbb52('0x32')]);_0x599529['filters']=_[_0xbb52('0x33')](_0x599529[_0xbb52('0x31')],_0x599529[_0xbb52('0x32')]);_0x262cb2['attributes']=_['intersection'](_0x599529[_0xbb52('0x31')],qs[_0xbb52('0x34')](_0x43d7d1[_0xbb52('0x32')][_0xbb52('0x34')]));_0x262cb2[_0xbb52('0x35')]=_0x262cb2[_0xbb52('0x35')][_0xbb52('0x36')]?_0x262cb2[_0xbb52('0x35')]:_0x599529[_0xbb52('0x31')];if(!_0x43d7d1[_0xbb52('0x32')][_0xbb52('0x37')](_0xbb52('0x38'))){_0x262cb2['limit']=qs[_0xbb52('0x1d')](_0x43d7d1[_0xbb52('0x32')][_0xbb52('0x1d')]);_0x262cb2[_0xbb52('0x1f')]=qs[_0xbb52('0x1f')](_0x43d7d1['query']['offset']);}_0x262cb2['order']=qs['sort'](_0x43d7d1[_0xbb52('0x32')][_0xbb52('0x39')]);_0x262cb2[_0xbb52('0x3a')]=qs[_0xbb52('0x3b')](_[_0xbb52('0x3c')](_0x43d7d1[_0xbb52('0x32')],_0x599529['filters']),_0x38d362);if(_0x43d7d1[_0xbb52('0x32')][_0xbb52('0x3d')]){_0x262cb2[_0xbb52('0x3a')]=_[_0xbb52('0x3e')](_0x262cb2[_0xbb52('0x3a')],{'$or':_['map'](_0x38d362,function(_0x4768d5){if(_0x4768d5['type']!=='VIRTUAL'){var _0x2fdf26={};_0x2fdf26[_0x4768d5['name']]={'$like':'%'+_0x43d7d1[_0xbb52('0x32')][_0xbb52('0x3d')]+'%'};return _0x2fdf26;}})});}_0x262cb2=_['merge']({},_0x262cb2,_0x43d7d1['options']);var _0x3cf103={'where':_0x262cb2[_0xbb52('0x3a')]};return db[_0xbb52('0x2d')][_0xbb52('0x1e')](_0x3cf103)['then'](function(_0x244163){_0x4c3d71[_0xbb52('0x1e')]=_0x244163;if(_0x43d7d1[_0xbb52('0x32')]['includeAll']){_0x262cb2['include']=[{'all':!![]}];}return db[_0xbb52('0x2d')][_0xbb52('0x3f')](_0x262cb2);})[_0xbb52('0x26')](function(_0x1c1348){_0x4c3d71['rows']=_0x1c1348;return _0x4c3d71;})[_0xbb52('0x26')](respondWithFilteredResult(_0x2285fd,_0x262cb2))[_0xbb52('0x40')](handleError(_0x2285fd,null));};exports[_0xbb52('0x41')]=function(_0x1c1063,_0x165f68){var _0x9268cb={'raw':!![],'where':{'id':_0x1c1063[_0xbb52('0x42')]['id']}},_0x422474={};_0x422474['model']=_[_0xbb52('0x43')](db[_0xbb52('0x2d')][_0xbb52('0x2e')]);_0x422474[_0xbb52('0x32')]=_[_0xbb52('0x43')](_0x1c1063[_0xbb52('0x32')]);_0x422474['filters']=_[_0xbb52('0x33')](_0x422474['model'],_0x422474[_0xbb52('0x32')]);_0x9268cb[_0xbb52('0x35')]=_['intersection'](_0x422474[_0xbb52('0x31')],qs[_0xbb52('0x34')](_0x1c1063[_0xbb52('0x32')]['fields']));_0x9268cb[_0xbb52('0x35')]=_0x9268cb[_0xbb52('0x35')]['length']?_0x9268cb[_0xbb52('0x35')]:_0x422474['model'];if(_0x1c1063['query'][_0xbb52('0x44')]){_0x9268cb[_0xbb52('0x45')]=[{'all':!![]}];}_0x9268cb=_['merge']({},_0x9268cb,_0x1c1063['options']);return db[_0xbb52('0x2d')]['find'](_0x9268cb)['then'](handleEntityNotFound(_0x165f68,null))[_0xbb52('0x26')](respondWithResult(_0x165f68,null))['catch'](handleError(_0x165f68,null));};exports[_0xbb52('0x46')]=function(_0x526aea,_0x88fb29){return db[_0xbb52('0x2d')][_0xbb52('0x46')](_0x526aea['body'],{})['then'](respondWithResult(_0x88fb29,0xc9))[_0xbb52('0x40')](handleError(_0x88fb29,null));};exports[_0xbb52('0x25')]=function(_0x43812d,_0x203aa3){if(_0x43812d['body']['id']){delete _0x43812d[_0xbb52('0x47')]['id'];}return db['SquareDetailsReport']['find']({'where':{'id':_0x43812d['params']['id']}})[_0xbb52('0x26')](handleEntityNotFound(_0x203aa3,null))[_0xbb52('0x26')](saveUpdates(_0x43812d[_0xbb52('0x47')],null))['then'](respondWithResult(_0x203aa3,null))['catch'](handleError(_0x203aa3,null));};exports[_0xbb52('0x48')]=function(_0x4029c5,_0x2c14db){return db['SquareDetailsReport'][_0xbb52('0x49')]({'where':{'id':_0x4029c5[_0xbb52('0x42')]['id']}})[_0xbb52('0x26')](handleEntityNotFound(_0x2c14db,null))[_0xbb52('0x26')](removeEntity(_0x2c14db,null))[_0xbb52('0x40')](handleError(_0x2c14db,null));};exports['describe']=function(_0x52efd3,_0x1cd308){return db['SquareDetailsReport'][_0xbb52('0x4a')]()['then'](respondWithResult(_0x1cd308,null))['catch'](handleError(_0x1cd308,null));};
\ No newline at end of file
+var _0xf1ec=['sort','where','pick','filter','merge','VIRTUAL','SquareDetailsReport','findAll','catch','params','include','find','create','body','describe','rimraf','zip-dir','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','destroy','then','error','name','send','index','rawAttributes','fieldName','type','model','map','keys','query','filters','intersection','fields','attributes','length','nolimit','order'];(function(_0x34c1ea,_0x5e3a54){var _0x3dcca5=function(_0x375eb3){while(--_0x375eb3){_0x34c1ea['push'](_0x34c1ea['shift']());}};_0x3dcca5(++_0x5e3a54);}(_0xf1ec,0xdb));var _0xcf1e=function(_0x436e3b,_0xd10c80){_0x436e3b=_0x436e3b-0x0;var _0x120851=_0xf1ec[_0x436e3b];return _0x120851;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcf1e('0x0'));var zipdir=require(_0xcf1e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcf1e('0x2'));var moment=require(_0xcf1e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xcf1e('0x4'));var util=require(_0xcf1e('0x5'));var path=require('path');var sox=require(_0xcf1e('0x6'));var csv=require(_0xcf1e('0x7'));var ejs=require(_0xcf1e('0x8'));var fs=require('fs');var fs_extra=require(_0xcf1e('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xcf1e('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xcf1e('0xb'));var toCsv=require(_0xcf1e('0x7'));var querystring=require('querystring');var Papa=require(_0xcf1e('0xc'));var Redis=require(_0xcf1e('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xcf1e('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcf1e('0xf'));var logger=require('../../config/logger')(_0xcf1e('0x10'));var utils=require(_0xcf1e('0x11'));var config=require(_0xcf1e('0x12'));var licenseUtil=require(_0xcf1e('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3e8abd,_0x23438e){_0x23438e=_0x23438e||0xcc;return function(_0x211f0f){if(_0x211f0f){return _0x3e8abd[_0xcf1e('0x14')](_0x23438e);}return _0x3e8abd[_0xcf1e('0x15')](_0x23438e)[_0xcf1e('0x16')]();};}function respondWithResult(_0x3be3ae,_0x54a036){_0x54a036=_0x54a036||0xc8;return function(_0x516472){if(_0x516472){return _0x3be3ae['status'](_0x54a036)[_0xcf1e('0x17')](_0x516472);}};}function respondWithFilteredResult(_0x30e87a,_0xc55572){return function(_0xeb29f0){if(_0xeb29f0){var _0x3b3397=typeof _0xc55572[_0xcf1e('0x18')]==='undefined'&&typeof _0xc55572[_0xcf1e('0x19')]===_0xcf1e('0x1a');var _0x29f92d=_0xeb29f0[_0xcf1e('0x1b')];var _0x5f1033=_0x3b3397?0x0:_0xc55572['offset'];var _0x440dca=_0x3b3397?_0xeb29f0[_0xcf1e('0x1b')]:_0xc55572[_0xcf1e('0x18')]+_0xc55572[_0xcf1e('0x19')];var _0x567ecf;if(_0x440dca>=_0x29f92d){_0x440dca=_0x29f92d;_0x567ecf=0xc8;}else{_0x567ecf=0xce;}_0x30e87a[_0xcf1e('0x15')](_0x567ecf);return _0x30e87a[_0xcf1e('0x1c')]('Content-Range',_0x5f1033+'-'+_0x440dca+'/'+_0x29f92d)[_0xcf1e('0x17')](_0xeb29f0);}return null;};}function patchUpdates(_0x413b84){return function(_0x4e5db1){try{jsonpatch[_0xcf1e('0x1d')](_0x4e5db1,_0x413b84,!![]);}catch(_0x182bf8){return BPromise[_0xcf1e('0x1e')](_0x182bf8);}return _0x4e5db1[_0xcf1e('0x1f')]();};}function saveUpdates(_0x2e4a9a,_0x1e2ded){return function(_0xa3a8ac){if(_0xa3a8ac){return _0xa3a8ac[_0xcf1e('0x20')](_0x2e4a9a)['then'](function(_0x2a2efe){return _0x2a2efe;});}return null;};}function removeEntity(_0x5530b9,_0x2485f2){return function(_0x309762){if(_0x309762){return _0x309762[_0xcf1e('0x21')]()[_0xcf1e('0x22')](function(){_0x5530b9[_0xcf1e('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4fb5b2,_0x5b5f92){return function(_0x480846){if(!_0x480846){_0x4fb5b2[_0xcf1e('0x14')](0x194);}return _0x480846;};}function handleError(_0x244811,_0x2dc1bd){_0x2dc1bd=_0x2dc1bd||0x1f4;return function(_0x2c7576){logger[_0xcf1e('0x23')](_0x2c7576['stack']);if(_0x2c7576[_0xcf1e('0x24')]){delete _0x2c7576[_0xcf1e('0x24')];}_0x244811[_0xcf1e('0x15')](_0x2dc1bd)[_0xcf1e('0x25')](_0x2c7576);};}exports[_0xcf1e('0x26')]=function(_0x265610,_0x234276){var _0x520618={},_0x178fd7={},_0x463a31={'count':0x0,'rows':[]};var _0x284b30=_['map'](db['SquareDetailsReport'][_0xcf1e('0x27')],function(_0x409f44){return{'name':_0x409f44[_0xcf1e('0x28')],'type':_0x409f44[_0xcf1e('0x29')]['key']};});_0x178fd7[_0xcf1e('0x2a')]=_[_0xcf1e('0x2b')](_0x284b30,_0xcf1e('0x24'));_0x178fd7['query']=_[_0xcf1e('0x2c')](_0x265610[_0xcf1e('0x2d')]);_0x178fd7[_0xcf1e('0x2e')]=_[_0xcf1e('0x2f')](_0x178fd7[_0xcf1e('0x2a')],_0x178fd7[_0xcf1e('0x2d')]);_0x520618['attributes']=_[_0xcf1e('0x2f')](_0x178fd7['model'],qs[_0xcf1e('0x30')](_0x265610[_0xcf1e('0x2d')]['fields']));_0x520618[_0xcf1e('0x31')]=_0x520618['attributes'][_0xcf1e('0x32')]?_0x520618['attributes']:_0x178fd7[_0xcf1e('0x2a')];if(!_0x265610['query']['hasOwnProperty'](_0xcf1e('0x33'))){_0x520618[_0xcf1e('0x19')]=qs[_0xcf1e('0x19')](_0x265610[_0xcf1e('0x2d')][_0xcf1e('0x19')]);_0x520618[_0xcf1e('0x18')]=qs['offset'](_0x265610[_0xcf1e('0x2d')][_0xcf1e('0x18')]);}_0x520618[_0xcf1e('0x34')]=qs[_0xcf1e('0x35')](_0x265610['query'][_0xcf1e('0x35')]);_0x520618[_0xcf1e('0x36')]=qs['filters'](_[_0xcf1e('0x37')](_0x265610[_0xcf1e('0x2d')],_0x178fd7[_0xcf1e('0x2e')]),_0x284b30);if(_0x265610[_0xcf1e('0x2d')][_0xcf1e('0x38')]){_0x520618[_0xcf1e('0x36')]=_[_0xcf1e('0x39')](_0x520618['where'],{'$or':_[_0xcf1e('0x2b')](_0x284b30,function(_0xc3e1ff){if(_0xc3e1ff[_0xcf1e('0x29')]!==_0xcf1e('0x3a')){var _0x58bd2c={};_0x58bd2c[_0xc3e1ff[_0xcf1e('0x24')]]={'$like':'%'+_0x265610['query'][_0xcf1e('0x38')]+'%'};return _0x58bd2c;}})});}_0x520618=_[_0xcf1e('0x39')]({},_0x520618,_0x265610['options']);var _0x3ff83c={'where':_0x520618[_0xcf1e('0x36')]};return db[_0xcf1e('0x3b')][_0xcf1e('0x1b')](_0x3ff83c)[_0xcf1e('0x22')](function(_0x28e4c0){_0x463a31['count']=_0x28e4c0;if(_0x265610[_0xcf1e('0x2d')]['includeAll']){_0x520618['include']=[{'all':!![]}];}return db[_0xcf1e('0x3b')][_0xcf1e('0x3c')](_0x520618);})[_0xcf1e('0x22')](function(_0x4504dd){_0x463a31['rows']=_0x4504dd;return _0x463a31;})[_0xcf1e('0x22')](respondWithFilteredResult(_0x234276,_0x520618))[_0xcf1e('0x3d')](handleError(_0x234276,null));};exports['show']=function(_0x3f297e,_0x20b78e){var _0x317ede={'raw':!![],'where':{'id':_0x3f297e[_0xcf1e('0x3e')]['id']}},_0x120b36={};_0x120b36[_0xcf1e('0x2a')]=_[_0xcf1e('0x2c')](db[_0xcf1e('0x3b')]['rawAttributes']);_0x120b36[_0xcf1e('0x2d')]=_[_0xcf1e('0x2c')](_0x3f297e[_0xcf1e('0x2d')]);_0x120b36[_0xcf1e('0x2e')]=_[_0xcf1e('0x2f')](_0x120b36['model'],_0x120b36[_0xcf1e('0x2d')]);_0x317ede[_0xcf1e('0x31')]=_[_0xcf1e('0x2f')](_0x120b36[_0xcf1e('0x2a')],qs[_0xcf1e('0x30')](_0x3f297e[_0xcf1e('0x2d')][_0xcf1e('0x30')]));_0x317ede['attributes']=_0x317ede[_0xcf1e('0x31')][_0xcf1e('0x32')]?_0x317ede['attributes']:_0x120b36[_0xcf1e('0x2a')];if(_0x3f297e['query']['includeAll']){_0x317ede[_0xcf1e('0x3f')]=[{'all':!![]}];}_0x317ede=_[_0xcf1e('0x39')]({},_0x317ede,_0x3f297e['options']);return db[_0xcf1e('0x3b')][_0xcf1e('0x40')](_0x317ede)[_0xcf1e('0x22')](handleEntityNotFound(_0x20b78e,null))[_0xcf1e('0x22')](respondWithResult(_0x20b78e,null))[_0xcf1e('0x3d')](handleError(_0x20b78e,null));};exports['create']=function(_0x2454dd,_0x2093a8){return db['SquareDetailsReport'][_0xcf1e('0x41')](_0x2454dd['body'],{})[_0xcf1e('0x22')](respondWithResult(_0x2093a8,0xc9))[_0xcf1e('0x3d')](handleError(_0x2093a8,null));};exports[_0xcf1e('0x20')]=function(_0x36427b,_0x775032){if(_0x36427b[_0xcf1e('0x42')]['id']){delete _0x36427b[_0xcf1e('0x42')]['id'];}return db[_0xcf1e('0x3b')][_0xcf1e('0x40')]({'where':{'id':_0x36427b[_0xcf1e('0x3e')]['id']}})[_0xcf1e('0x22')](handleEntityNotFound(_0x775032,null))[_0xcf1e('0x22')](saveUpdates(_0x36427b['body'],null))[_0xcf1e('0x22')](respondWithResult(_0x775032,null))[_0xcf1e('0x3d')](handleError(_0x775032,null));};exports[_0xcf1e('0x21')]=function(_0x57e7af,_0x2df6fc){return db[_0xcf1e('0x3b')][_0xcf1e('0x40')]({'where':{'id':_0x57e7af[_0xcf1e('0x3e')]['id']}})[_0xcf1e('0x22')](handleEntityNotFound(_0x2df6fc,null))[_0xcf1e('0x22')](removeEntity(_0x2df6fc,null))['catch'](handleError(_0x2df6fc,null));};exports[_0xcf1e('0x43')]=function(_0x53c198,_0x45e532){return db[_0xcf1e('0x3b')][_0xcf1e('0x43')]()['then'](respondWithResult(_0x45e532,null))[_0xcf1e('0x3d')](handleError(_0x45e532,null));};
\ No newline at end of file
index 75ddc3b..9adba50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ccf=['rimraf','./squareReportDetail.attributes','exports','define','report_square_details','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x2a64e2,_0x21d1fd){var _0x2a6c2a=function(_0x3a8850){while(--_0x3a8850){_0x2a64e2['push'](_0x2a64e2['shift']());}};_0x2a6c2a(++_0x21d1fd);}(_0x8ccf,0x191));var _0xf8cc=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x8ccf[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0xf8cc('0x0'));var util=require(_0xf8cc('0x1'));var logger=require(_0xf8cc('0x2'))(_0xf8cc('0x3'));var moment=require(_0xf8cc('0x4'));var BPromise=require(_0xf8cc('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xf8cc('0x6'));var config=require('../../config/environment');var attributes=require(_0xf8cc('0x7'));module[_0xf8cc('0x8')]=function(_0x156ade,_0x142205){return _0x156ade[_0xf8cc('0x9')]('SquareDetailsReport',attributes,{'tableName':_0xf8cc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5a5a=['SquareDetailsReport','report_square_details','lodash','util','../../config/logger','api','bluebird','request-promise','path','./squareReportDetail.attributes','exports','define'];(function(_0x5cd208,_0x284257){var _0x3784f2=function(_0x8d581a){while(--_0x8d581a){_0x5cd208['push'](_0x5cd208['shift']());}};_0x3784f2(++_0x284257);}(_0x5a5a,0xf2));var _0xa5a5=function(_0xfe0ba,_0x5aaae8){_0xfe0ba=_0xfe0ba-0x0;var _0x1368e0=_0x5a5a[_0xfe0ba];return _0x1368e0;};'use strict';var _=require(_0xa5a5('0x0'));var util=require(_0xa5a5('0x1'));var logger=require(_0xa5a5('0x2'))(_0xa5a5('0x3'));var moment=require('moment');var BPromise=require(_0xa5a5('0x4'));var rp=require(_0xa5a5('0x5'));var fs=require('fs');var path=require(_0xa5a5('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xa5a5('0x7'));module[_0xa5a5('0x8')]=function(_0xc94bd7,_0x13e467){return _0xc94bd7[_0xa5a5('0x9')](_0xa5a5('0xa'),attributes,{'tableName':_0xa5a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 988f2e9..b026315 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4213=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','request\x20sent','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SquareDetailsReport,\x20%s,\x20%s','info','result','catch','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','then','debug','lodash'];(function(_0x30f381,_0x62c6ed){var _0x3610ca=function(_0x311d2f){while(--_0x311d2f){_0x30f381['push'](_0x30f381['shift']());}};_0x3610ca(++_0x62c6ed);}(_0x4213,0x77));var _0x3421=function(_0x5a5b3f,_0x18a336){_0x5a5b3f=_0x5a5b3f-0x0;var _0x1a4b89=_0x4213[_0x5a5b3f];return _0x1a4b89;};'use strict';var _=require(_0x3421('0x0'));var util=require(_0x3421('0x1'));var moment=require(_0x3421('0x2'));var BPromise=require(_0x3421('0x3'));var rs=require(_0x3421('0x4'));var fs=require('fs');var Redis=require(_0x3421('0x5'));var db=require(_0x3421('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x3421('0x7'))('rpc');var config=require(_0x3421('0x8'));var jayson=require(_0x3421('0x9'));var client=jayson[_0x3421('0xa')][_0x3421('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5469d8,_0x50e464,_0x1b152f){return new BPromise(function(_0x130625,_0x1cf6a0){return client[_0x3421('0xc')](_0x5469d8,_0x1b152f)['then'](function(_0x1f20cf){logger['info']('SquareDetailsReport,\x20%s,\x20%s',_0x50e464,_0x3421('0xd'));logger['debug'](_0x3421('0xe'),_0x50e464,_0x3421('0xd'),JSON[_0x3421('0xf')](_0x1f20cf));if(_0x1f20cf[_0x3421('0x10')]){if(_0x1f20cf[_0x3421('0x10')][_0x3421('0x11')]===0x1f4){logger[_0x3421('0x10')]('SquareDetailsReport,\x20%s,\x20%s',_0x50e464,_0x1f20cf[_0x3421('0x10')][_0x3421('0x12')]);return _0x1cf6a0(_0x1f20cf[_0x3421('0x10')][_0x3421('0x12')]);}logger[_0x3421('0x10')](_0x3421('0x13'),_0x50e464,_0x1f20cf[_0x3421('0x10')]['message']);return _0x130625(_0x1f20cf[_0x3421('0x10')]['message']);}else{logger[_0x3421('0x14')](_0x3421('0x13'),_0x50e464,'request\x20sent');_0x130625(_0x1f20cf[_0x3421('0x15')]['message']);}})[_0x3421('0x16')](function(_0x23694b){logger['error'](_0x3421('0x13'),_0x50e464,_0x23694b);_0x1cf6a0(_0x23694b);});});}exports[_0x3421('0x17')]=function(_0x130d3c){var _0x104cc5=this;return new Promise(function(_0x18acc1,_0x200fdd){return db[_0x3421('0x18')][_0x3421('0x19')](_0x130d3c[_0x3421('0x1a')],{'raw':_0x130d3c[_0x3421('0x1b')]?_0x130d3c[_0x3421('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0x3421('0x1c')](function(_0x4b59a5){logger['info']('CreateSquareDetailsReport',_0x130d3c);logger[_0x3421('0x1d')](_0x3421('0x17'),_0x130d3c,JSON[_0x3421('0xf')](_0x4b59a5));_0x18acc1(_0x4b59a5);})[_0x3421('0x16')](function(_0x132e8e){logger[_0x3421('0x10')](_0x3421('0x17'),_0x132e8e[_0x3421('0x12')],_0x130d3c);_0x200fdd(_0x104cc5[_0x3421('0x10')](0x1f4,_0x132e8e[_0x3421('0x12')]));});});};
\ No newline at end of file
+var _0x282b=['../../config/environment','jayson/promise','client','http','then','info','SquareDetailsReport,\x20%s,\x20%s','SquareDetailsReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','CreateSquareDetailsReport','create','body','options','raw','debug','lodash','util','moment','bluebird','randomstring','../../config/utils','rpc'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x282b,0xec));var _0xb282=function(_0x561a66,_0x23f00c){_0x561a66=_0x561a66-0x0;var _0x5e7e91=_0x282b[_0x561a66];return _0x5e7e91;};'use strict';var _=require(_0xb282('0x0'));var util=require(_0xb282('0x1'));var moment=require(_0xb282('0x2'));var BPromise=require(_0xb282('0x3'));var rs=require(_0xb282('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb282('0x5'));var logger=require('../../config/logger')(_0xb282('0x6'));var config=require(_0xb282('0x7'));var jayson=require(_0xb282('0x8'));var client=jayson[_0xb282('0x9')][_0xb282('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x33635f,_0x4f0410,_0x4a0d28){return new BPromise(function(_0x17fba1,_0x436eaa){return client['request'](_0x33635f,_0x4a0d28)[_0xb282('0xb')](function(_0x20f517){logger[_0xb282('0xc')](_0xb282('0xd'),_0x4f0410,'request\x20sent');logger['debug'](_0xb282('0xe'),_0x4f0410,_0xb282('0xf'),JSON[_0xb282('0x10')](_0x20f517));if(_0x20f517[_0xb282('0x11')]){if(_0x20f517[_0xb282('0x11')]['code']===0x1f4){logger['error'](_0xb282('0xd'),_0x4f0410,_0x20f517[_0xb282('0x11')][_0xb282('0x12')]);return _0x436eaa(_0x20f517[_0xb282('0x11')][_0xb282('0x12')]);}logger['error'](_0xb282('0xd'),_0x4f0410,_0x20f517['error'][_0xb282('0x12')]);return _0x17fba1(_0x20f517[_0xb282('0x11')]['message']);}else{logger['info']('SquareDetailsReport,\x20%s,\x20%s',_0x4f0410,_0xb282('0xf'));_0x17fba1(_0x20f517[_0xb282('0x13')][_0xb282('0x12')]);}})[_0xb282('0x14')](function(_0x438a05){logger['error'](_0xb282('0xd'),_0x4f0410,_0x438a05);_0x436eaa(_0x438a05);});});}exports[_0xb282('0x15')]=function(_0xca5f12){var _0x45b070=this;return new Promise(function(_0x3f8a3f,_0x492d20){return db['SquareDetailsReport'][_0xb282('0x16')](_0xca5f12[_0xb282('0x17')],{'raw':_0xca5f12['options']?_0xca5f12[_0xb282('0x18')][_0xb282('0x19')]===undefined?!![]:![]:!![]})[_0xb282('0xb')](function(_0x438dbe){logger[_0xb282('0xc')]('CreateSquareDetailsReport',_0xca5f12);logger[_0xb282('0x1a')](_0xb282('0x15'),_0xca5f12,JSON[_0xb282('0x10')](_0x438dbe));_0x3f8a3f(_0x438dbe);})['catch'](function(_0x437d66){logger[_0xb282('0x11')](_0xb282('0x15'),_0x437d66[_0xb282('0x12')],_0xca5f12);_0x492d20(_0x45b070[_0xb282('0x11')](0x1f4,_0x437d66['message']));});});};
\ No newline at end of file
index f9c9513..e717ca0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc27=['isAuthenticated','/process/:pid/kill','killProcess','exports','express','Router','./system.controller','get'];(function(_0xea8947,_0x1b573d){var _0x2455e9=function(_0x18771e){while(--_0x18771e){_0xea8947['push'](_0xea8947['shift']());}};_0x2455e9(++_0x1b573d);}(_0xfc27,0x1b4));var _0x7fc2=function(_0x47fafa,_0x5e2ece){_0x47fafa=_0x47fafa-0x0;var _0x3ae415=_0xfc27[_0x47fafa];return _0x3ae415;};'use strict';var express=require(_0x7fc2('0x0'));var router=express[_0x7fc2('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0x7fc2('0x2'));router[_0x7fc2('0x3')]('/',auth[_0x7fc2('0x4')](),controller['index']);router[_0x7fc2('0x3')](_0x7fc2('0x5'),auth[_0x7fc2('0x4')](),controller[_0x7fc2('0x6')]);module[_0x7fc2('0x7')]=router;
\ No newline at end of file
+var _0x33f4=['killProcess','exports','Router','../../components/auth/service','./system.controller','get','isAuthenticated','index','/process/:pid/kill'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0x33f4,0x16a));var _0x433f=function(_0x532d73,_0x58eaf8){_0x532d73=_0x532d73-0x0;var _0x8724ef=_0x33f4[_0x532d73];return _0x8724ef;};'use strict';var express=require('express');var router=express[_0x433f('0x0')]();var auth=require(_0x433f('0x1'));var controller=require(_0x433f('0x2'));router[_0x433f('0x3')]('/',auth[_0x433f('0x4')](),controller[_0x433f('0x5')]);router[_0x433f('0x3')](_0x433f('0x6'),auth[_0x433f('0x4')](),controller[_0x433f('0x7')]);module[_0x433f('0x8')]=router;
\ No newline at end of file
index eaa035b..98f746e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dbb=['getAllData','then','json','catch','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','split','length','indexOf','kill','systeminformation','child_process','exec','../../config/logger','api','util','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','send','index'];(function(_0x42b902,_0x3c49fd){var _0x2d9d68=function(_0x2175bf){while(--_0x2175bf){_0x42b902['push'](_0x42b902['shift']());}};_0x2d9d68(++_0x3c49fd);}(_0x8dbb,0x1ea));var _0xb8db=function(_0x108d11,_0x3537f1){_0x108d11=_0x108d11-0x0;var _0x5854e5=_0x8dbb[_0x108d11];return _0x5854e5;};'use strict';var info=require(_0xb8db('0x0'));var exec=require(_0xb8db('0x1'))[_0xb8db('0x2')];var logger=require(_0xb8db('0x3'))(_0xb8db('0x4'));var util=require(_0xb8db('0x5'));var BPromise=require('bluebird');var _=require(_0xb8db('0x6'));function handleError(_0x3be6d7,_0x10b4f1,_0x5c981a){_0x10b4f1=_0x10b4f1||0x1f4;return function(_0xae0881){logger[_0xb8db('0x7')](_0xb8db('0x8'),_0x5c981a,_0x10b4f1,util[_0xb8db('0x9')](_0xae0881,{'showHidden':![],'depth':null}));delete _0xae0881[_0xb8db('0xa')];_0x3be6d7[_0xb8db('0xb')](_0x10b4f1)[_0xb8db('0xc')](_0xae0881);};}exports[_0xb8db('0xd')]=function(_0x1f40de,_0xb68a64){return info[_0xb8db('0xe')]()[_0xb8db('0xf')](function(_0x3b7bfd){return _0xb68a64[_0xb8db('0xb')](0xc8)[_0xb8db('0x10')](_0x3b7bfd);})[_0xb8db('0x11')](function(_0x689717){return _0xb68a64[_0xb8db('0xb')](0x1f4)[_0xb8db('0x10')](_0x689717);});};exports[_0xb8db('0x12')]=function(_0x14d992,_0x1a8e6f){var _0x9d2c2=[_0xb8db('0x13')];return new BPromise(function(_0x5781ab,_0x35d18c){return exec(util[_0xb8db('0x14')](_0xb8db('0x15'),_0x14d992[_0xb8db('0x16')][_0xb8db('0x17')]),function(_0x3bc1cd,_0x183dec,_0xfeda79){if(_0x3bc1cd){return _0x35d18c(_0x3bc1cd);}return _0x5781ab(_0x183dec);});})['then'](function(_0x1ecb69){var _0xdce12e=![];var _0x2ecd09=_0x1ecb69[_0xb8db('0x18')](/\n/);for(var _0x3e7af3=0x0,_0x28711b=_0x9d2c2[_0xb8db('0x19')];_0x3e7af3<_0x28711b,_0xdce12e===![];_0x3e7af3+=0x1){if(_0x1ecb69[_0xb8db('0x1a')](_0x9d2c2[_0x3e7af3])>=0x0){_0xdce12e=!![];}}if(!_0xdce12e){throw new Error(util[_0xb8db('0x14')]('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x14d992[_0xb8db('0x16')][_0xb8db('0x17')]));}process[_0xb8db('0x1b')](_0x14d992[_0xb8db('0x16')]['pid'],'SIGINT');return _0x1a8e6f['status'](0xc8)[_0xb8db('0x10')]({'message':util[_0xb8db('0x14')]('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x14d992['params'][_0xb8db('0x17')])});})[_0xb8db('0x11')](handleError(_0x1a8e6f,null,'killProcess'));};
\ No newline at end of file
+var _0xe6af=['name','status','send','index','json','catch','components/import/cm','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','then','split','length','indexOf','format','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','killProcess','child_process','exec','../../config/logger','api','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s'];(function(_0xa1d965,_0x42897a){var _0x22d09a=function(_0x1cef09){while(--_0x1cef09){_0xa1d965['push'](_0xa1d965['shift']());}};_0x22d09a(++_0x42897a);}(_0xe6af,0x10f));var _0xfe6a=function(_0x53b3fb,_0x1bc6bf){_0x53b3fb=_0x53b3fb-0x0;var _0x22a2a7=_0xe6af[_0x53b3fb];return _0x22a2a7;};'use strict';var info=require('systeminformation');var exec=require(_0xfe6a('0x0'))[_0xfe6a('0x1')];var logger=require(_0xfe6a('0x2'))(_0xfe6a('0x3'));var util=require(_0xfe6a('0x4'));var BPromise=require(_0xfe6a('0x5'));var _=require(_0xfe6a('0x6'));function handleError(_0x1e3823,_0x435c92,_0x3a9192){_0x435c92=_0x435c92||0x1f4;return function(_0xc923a5){logger[_0xfe6a('0x7')](_0xfe6a('0x8'),_0x3a9192,_0x435c92,util['inspect'](_0xc923a5,{'showHidden':![],'depth':null}));delete _0xc923a5[_0xfe6a('0x9')];_0x1e3823[_0xfe6a('0xa')](_0x435c92)[_0xfe6a('0xb')](_0xc923a5);};}exports[_0xfe6a('0xc')]=function(_0x1162d8,_0x9c5412){return info['getAllData']()['then'](function(_0x2b69e8){return _0x9c5412[_0xfe6a('0xa')](0xc8)[_0xfe6a('0xd')](_0x2b69e8);})[_0xfe6a('0xe')](function(_0x26f9dc){return _0x9c5412[_0xfe6a('0xa')](0x1f4)[_0xfe6a('0xd')](_0x26f9dc);});};exports['killProcess']=function(_0x3a43cb,_0x95efd5){var _0x48b44e=[_0xfe6a('0xf')];return new BPromise(function(_0x3fcefb,_0xa4a64){return exec(util['format'](_0xfe6a('0x10'),_0x3a43cb[_0xfe6a('0x11')][_0xfe6a('0x12')]),function(_0x28c5b5,_0x3f298e,_0x8e24a5){if(_0x28c5b5){return _0xa4a64(_0x28c5b5);}return _0x3fcefb(_0x3f298e);});})[_0xfe6a('0x13')](function(_0x59ed0c){var _0x275f51=![];var _0x5c4679=_0x59ed0c[_0xfe6a('0x14')](/\n/);for(var _0x409e03=0x0,_0x53cd6a=_0x48b44e[_0xfe6a('0x15')];_0x409e03<_0x53cd6a,_0x275f51===![];_0x409e03+=0x1){if(_0x59ed0c[_0xfe6a('0x16')](_0x48b44e[_0x409e03])>=0x0){_0x275f51=!![];}}if(!_0x275f51){throw new Error(util[_0xfe6a('0x17')]('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x3a43cb['params'][_0xfe6a('0x12')]));}process[_0xfe6a('0x18')](_0x3a43cb['params'][_0xfe6a('0x12')],_0xfe6a('0x19'));return _0x95efd5[_0xfe6a('0xa')](0xc8)['json']({'message':util[_0xfe6a('0x17')](_0xfe6a('0x1a'),_0x3a43cb['params'][_0xfe6a('0x12')])});})['catch'](handleError(_0x95efd5,null,_0xfe6a('0x1b')));};
\ No newline at end of file
index e127691..8f454c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1241=['../../config/environment','./tag.controller','isAuthenticated','index','get','/:id','put','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x568039,_0x570f8e){var _0x1595fc=function(_0x50ac8f){while(--_0x50ac8f){_0x568039['push'](_0x568039['shift']());}};_0x1595fc(++_0x570f8e);}(_0x1241,0xb4));var _0x1124=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1241[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x1124('0x0'));var util=require('util');var path=require(_0x1124('0x1'));var timeout=require(_0x1124('0x2'));var express=require(_0x1124('0x3'));var router=express[_0x1124('0x4')]();var fs_extra=require(_0x1124('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x1124('0x6'));var config=require(_0x1124('0x7'));var controller=require(_0x1124('0x8'));router['get']('/',auth[_0x1124('0x9')](),controller[_0x1124('0xa')]);router[_0x1124('0xb')](_0x1124('0xc'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x1124('0x9')](),controller['create']);router[_0x1124('0xd')](_0x1124('0xc'),auth[_0x1124('0x9')](),controller[_0x1124('0xe')]);router[_0x1124('0xf')](_0x1124('0xc'),auth['isAuthenticated'](),controller[_0x1124('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x1267=['isAuthenticated','index','get','/:id','show','put','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./tag.controller'];(function(_0x1c29e0,_0x259088){var _0x52394d=function(_0x4abf3b){while(--_0x4abf3b){_0x1c29e0['push'](_0x1c29e0['shift']());}};_0x52394d(++_0x259088);}(_0x1267,0xb5));var _0x7126=function(_0x235be6,_0x439367){_0x235be6=_0x235be6-0x0;var _0x46762f=_0x1267[_0x235be6];return _0x46762f;};'use strict';var multer=require(_0x7126('0x0'));var util=require(_0x7126('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x7126('0x2'));var router=express[_0x7126('0x3')]();var fs_extra=require(_0x7126('0x4'));var auth=require(_0x7126('0x5'));var interaction=require(_0x7126('0x6'));var config=require(_0x7126('0x7'));var controller=require(_0x7126('0x8'));router['get']('/',auth[_0x7126('0x9')](),controller[_0x7126('0xa')]);router[_0x7126('0xb')](_0x7126('0xc'),auth['isAuthenticated'](),controller[_0x7126('0xd')]);router['post']('/',auth[_0x7126('0x9')](),controller['create']);router[_0x7126('0xe')](_0x7126('0xc'),auth[_0x7126('0x9')](),controller[_0x7126('0xf')]);router[_0x7126('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x7126('0x11')]);module[_0x7126('0x12')]=router;
\ No newline at end of file
index 9c59081..519679e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ca7=['exports','#0091EA','STRING','sequelize'];(function(_0x23710a,_0x2a5257){var _0xb876d9=function(_0x65f41c){while(--_0x65f41c){_0x23710a['push'](_0x23710a['shift']());}};_0xb876d9(++_0x2a5257);}(_0x1ca7,0x157));var _0x71ca=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x1ca7[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require(_0x71ca('0x0'));module[_0x71ca('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize['STRING'],'defaultValue':_0x71ca('0x2')},'description':{'type':Sequelize[_0x71ca('0x3')]}};
\ No newline at end of file
+var _0x6584=['STRING','name','#0091EA','sequelize','exports'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0x6584,0x175));var _0x4658=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0x6584[_0x134c2e];return _0x2825db;};'use strict';var Sequelize=require(_0x4658('0x0'));module[_0x4658('0x1')]={'name':{'type':Sequelize[_0x4658('0x2')],'unique':_0x4658('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize['STRING'],'defaultValue':_0x4658('0x4')},'description':{'type':Sequelize[_0x4658('0x2')]}};
\ No newline at end of file
index 92b8438..9f1f45d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x073e=['save','update','then','destroy','stack','name','send','index','Tag','fieldName','type','map','keys','query','filters','model','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','rawAttributes','includeAll','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Tags','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','count','limit','set','Content-Range','apply','reject'];(function(_0xa61fd8,_0x4aefb0){var _0x173a85=function(_0x234ee7){while(--_0x234ee7){_0xa61fd8['push'](_0xa61fd8['shift']());}};_0x173a85(++_0x4aefb0);}(_0x073e,0x181));var _0xe073=function(_0x5a97b8,_0x5a7945){_0x5a97b8=_0x5a97b8-0x0;var _0x54b165=_0x073e[_0x5a97b8];return _0x54b165;};'use strict';var emlformat=require(_0xe073('0x0'));var rimraf=require(_0xe073('0x1'));var zipdir=require(_0xe073('0x2'));var jsonpatch=require(_0xe073('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe073('0x4'));var util=require(_0xe073('0x5'));var path=require(_0xe073('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe073('0x7'));var _=require(_0xe073('0x8'));var squel=require(_0xe073('0x9'));var crypto=require(_0xe073('0xa'));var jsforce=require(_0xe073('0xb'));var deskjs=require(_0xe073('0xc'));var toCsv=require('to-csv');var querystring=require(_0xe073('0xd'));var Papa=require(_0xe073('0xe'));var Redis=require(_0xe073('0xf'));var authService=require(_0xe073('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xe073('0x11'));var hardwareService=require(_0xe073('0x12'));var logger=require(_0xe073('0x13'))(_0xe073('0x14'));var utils=require(_0xe073('0x15'));var config=require(_0xe073('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe073('0x17'))['db'];function respondWithStatusCode(_0x56e3f5,_0x3dedf7){_0x3dedf7=_0x3dedf7||0xcc;return function(_0x5d2f2f){if(_0x5d2f2f){return _0x56e3f5[_0xe073('0x18')](_0x3dedf7);}return _0x56e3f5['status'](_0x3dedf7)[_0xe073('0x19')]();};}function respondWithResult(_0x27d34,_0x47828d){_0x47828d=_0x47828d||0xc8;return function(_0x2ce92d){if(_0x2ce92d){return _0x27d34[_0xe073('0x1a')](_0x47828d)[_0xe073('0x1b')](_0x2ce92d);}};}function respondWithFilteredResult(_0x2f4b36,_0xfb28f5){return function(_0x208f2e){if(_0x208f2e){var _0x26f3d3=typeof _0xfb28f5[_0xe073('0x1c')]==='undefined'&&typeof _0xfb28f5['limit']==='undefined';var _0x4c578c=_0x208f2e[_0xe073('0x1d')];var _0x10486c=_0x26f3d3?0x0:_0xfb28f5[_0xe073('0x1c')];var _0x4f9c8e=_0x26f3d3?_0x208f2e[_0xe073('0x1d')]:_0xfb28f5[_0xe073('0x1c')]+_0xfb28f5[_0xe073('0x1e')];var _0x54c10e;if(_0x4f9c8e>=_0x4c578c){_0x4f9c8e=_0x4c578c;_0x54c10e=0xc8;}else{_0x54c10e=0xce;}_0x2f4b36[_0xe073('0x1a')](_0x54c10e);return _0x2f4b36[_0xe073('0x1f')](_0xe073('0x20'),_0x10486c+'-'+_0x4f9c8e+'/'+_0x4c578c)[_0xe073('0x1b')](_0x208f2e);}return null;};}function patchUpdates(_0x43668e){return function(_0x17dd4b){try{jsonpatch[_0xe073('0x21')](_0x17dd4b,_0x43668e,!![]);}catch(_0x1d7a13){return BPromise[_0xe073('0x22')](_0x1d7a13);}return _0x17dd4b[_0xe073('0x23')]();};}function saveUpdates(_0x5143fa,_0x4405fd){return function(_0x21f9c2){if(_0x21f9c2){return _0x21f9c2[_0xe073('0x24')](_0x5143fa)[_0xe073('0x25')](function(_0x39bcb4){return _0x39bcb4;});}return null;};}function removeEntity(_0x275aa8,_0x504c26){return function(_0x4c76ef){if(_0x4c76ef){return _0x4c76ef[_0xe073('0x26')]()['then'](function(){var _0x5e3b16=_0x4c76ef['get']({'plain':!![]});var _0x5c4137='Tags';return db['UserProfileResource'][_0xe073('0x26')]({'where':{'type':_0x5c4137,'resourceId':_0x5e3b16['id']}})[_0xe073('0x25')](function(){return _0x4c76ef;});})['then'](function(){_0x275aa8[_0xe073('0x1a')](0xcc)[_0xe073('0x19')]();});}};}function handleEntityNotFound(_0x436c34,_0x5a5b2b){return function(_0x10f5ba){if(!_0x10f5ba){_0x436c34['sendStatus'](0x194);}return _0x10f5ba;};}function handleError(_0x255d91,_0x2e5fac){_0x2e5fac=_0x2e5fac||0x1f4;return function(_0x599972){logger['error'](_0x599972[_0xe073('0x27')]);if(_0x599972[_0xe073('0x28')]){delete _0x599972[_0xe073('0x28')];}_0x255d91[_0xe073('0x1a')](_0x2e5fac)[_0xe073('0x29')](_0x599972);};}exports[_0xe073('0x2a')]=function(_0x4f60dd,_0x2a206a){var _0x5c04fe={},_0x1baa0a={},_0x1cdcb0={'count':0x0,'rows':[]};var _0x4a6884=_['map'](db[_0xe073('0x2b')]['rawAttributes'],function(_0x3f6564){return{'name':_0x3f6564[_0xe073('0x2c')],'type':_0x3f6564[_0xe073('0x2d')]['key']};});_0x1baa0a['model']=_[_0xe073('0x2e')](_0x4a6884,_0xe073('0x28'));_0x1baa0a['query']=_[_0xe073('0x2f')](_0x4f60dd[_0xe073('0x30')]);_0x1baa0a[_0xe073('0x31')]=_['intersection'](_0x1baa0a[_0xe073('0x32')],_0x1baa0a['query']);_0x5c04fe['attributes']=_[_0xe073('0x33')](_0x1baa0a[_0xe073('0x32')],qs[_0xe073('0x34')](_0x4f60dd['query'][_0xe073('0x34')]));_0x5c04fe[_0xe073('0x35')]=_0x5c04fe[_0xe073('0x35')]['length']?_0x5c04fe[_0xe073('0x35')]:_0x1baa0a[_0xe073('0x32')];if(!_0x4f60dd[_0xe073('0x30')][_0xe073('0x36')](_0xe073('0x37'))){_0x5c04fe[_0xe073('0x1e')]=qs['limit'](_0x4f60dd[_0xe073('0x30')][_0xe073('0x1e')]);_0x5c04fe[_0xe073('0x1c')]=qs['offset'](_0x4f60dd[_0xe073('0x30')][_0xe073('0x1c')]);}_0x5c04fe[_0xe073('0x38')]=qs[_0xe073('0x39')](_0x4f60dd[_0xe073('0x30')]['sort']);_0x5c04fe[_0xe073('0x3a')]=qs['filters'](_[_0xe073('0x3b')](_0x4f60dd[_0xe073('0x30')],_0x1baa0a[_0xe073('0x31')]),_0x4a6884);if(_0x4f60dd[_0xe073('0x30')][_0xe073('0x3c')]){_0x5c04fe[_0xe073('0x3a')]=_[_0xe073('0x3d')](_0x5c04fe[_0xe073('0x3a')],{'$or':_[_0xe073('0x2e')](_0x4a6884,function(_0x3d29e5){if(_0x3d29e5[_0xe073('0x2d')]!==_0xe073('0x3e')){var _0x16be1a={};_0x16be1a[_0x3d29e5['name']]={'$like':'%'+_0x4f60dd[_0xe073('0x30')]['filter']+'%'};return _0x16be1a;}})});}_0x5c04fe=_[_0xe073('0x3d')]({},_0x5c04fe,_0x4f60dd[_0xe073('0x3f')]);var _0x5a4e19={'where':_0x5c04fe[_0xe073('0x3a')]};return db['Tag'][_0xe073('0x1d')](_0x5a4e19)[_0xe073('0x25')](function(_0x93852a){_0x1cdcb0[_0xe073('0x1d')]=_0x93852a;if(_0x4f60dd[_0xe073('0x30')]['includeAll']){_0x5c04fe[_0xe073('0x40')]=[{'all':!![]}];}return db['Tag'][_0xe073('0x41')](_0x5c04fe);})[_0xe073('0x25')](function(_0x125d1f){_0x1cdcb0[_0xe073('0x42')]=_0x125d1f;return _0x1cdcb0;})[_0xe073('0x25')](respondWithFilteredResult(_0x2a206a,_0x5c04fe))[_0xe073('0x43')](handleError(_0x2a206a,null));};exports[_0xe073('0x44')]=function(_0x2f4939,_0x1b50c5){var _0x2d3ffe={'raw':!![],'where':{'id':_0x2f4939['params']['id']}},_0x2c312b={};_0x2c312b['model']=_[_0xe073('0x2f')](db[_0xe073('0x2b')][_0xe073('0x45')]);_0x2c312b[_0xe073('0x30')]=_[_0xe073('0x2f')](_0x2f4939['query']);_0x2c312b[_0xe073('0x31')]=_[_0xe073('0x33')](_0x2c312b[_0xe073('0x32')],_0x2c312b[_0xe073('0x30')]);_0x2d3ffe[_0xe073('0x35')]=_['intersection'](_0x2c312b[_0xe073('0x32')],qs['fields'](_0x2f4939['query'][_0xe073('0x34')]));_0x2d3ffe[_0xe073('0x35')]=_0x2d3ffe['attributes']['length']?_0x2d3ffe[_0xe073('0x35')]:_0x2c312b[_0xe073('0x32')];if(_0x2f4939[_0xe073('0x30')][_0xe073('0x46')]){_0x2d3ffe[_0xe073('0x40')]=[{'all':!![]}];}_0x2d3ffe=_[_0xe073('0x3d')]({},_0x2d3ffe,_0x2f4939[_0xe073('0x3f')]);return db['Tag'][_0xe073('0x47')](_0x2d3ffe)['then'](handleEntityNotFound(_0x1b50c5,null))[_0xe073('0x25')](respondWithResult(_0x1b50c5,null))[_0xe073('0x43')](handleError(_0x1b50c5,null));};exports[_0xe073('0x48')]=function(_0x4e1f1d,_0x4d5bcd){return db[_0xe073('0x2b')][_0xe073('0x48')](_0x4e1f1d[_0xe073('0x49')],{})['then'](function(_0x151035){var _0x338557=_0x4e1f1d[_0xe073('0x4a')][_0xe073('0x4b')]({'plain':!![]});if(!_0x338557)throw new Error(_0xe073('0x4c'));if(_0x338557[_0xe073('0x4d')]===_0xe073('0x4a')){var _0x307541=_0x151035[_0xe073('0x4b')]({'plain':!![]});var _0x5626d4=_0xe073('0x4e');return db['UserProfileSection'][_0xe073('0x47')]({'where':{'name':_0x5626d4,'userProfileId':_0x338557['userProfileId']},'raw':!![]})[_0xe073('0x25')](function(_0x202687){if(_0x202687&&_0x202687[_0xe073('0x4f')]===0x0){return db[_0xe073('0x50')]['create']({'name':_0x307541[_0xe073('0x28')],'resourceId':_0x307541['id'],'type':_0x202687[_0xe073('0x28')],'sectionId':_0x202687['id']},{})[_0xe073('0x25')](function(){return _0x151035;});}else{return _0x151035;}})['catch'](function(_0x5503c2){logger[_0xe073('0x51')](_0xe073('0x52'),_0x5503c2);throw _0x5503c2;});}return _0x151035;})[_0xe073('0x25')](respondWithResult(_0x4d5bcd,0xc9))[_0xe073('0x43')](handleError(_0x4d5bcd,null));};exports[_0xe073('0x24')]=function(_0x5212d5,_0x197c42){if(_0x5212d5[_0xe073('0x49')]['id']){delete _0x5212d5[_0xe073('0x49')]['id'];}return db[_0xe073('0x2b')][_0xe073('0x47')]({'where':{'id':_0x5212d5[_0xe073('0x53')]['id']}})[_0xe073('0x25')](handleEntityNotFound(_0x197c42,null))[_0xe073('0x25')](saveUpdates(_0x5212d5[_0xe073('0x49')],null))[_0xe073('0x25')](respondWithResult(_0x197c42,null))['catch'](handleError(_0x197c42,null));};exports[_0xe073('0x26')]=function(_0x582007,_0x5825eb){return db[_0xe073('0x2b')][_0xe073('0x47')]({'where':{'id':_0x582007[_0xe073('0x53')]['id']}})['then'](handleEntityNotFound(_0x5825eb,null))[_0xe073('0x25')](removeEntity(_0x5825eb,null))[_0xe073('0x43')](handleError(_0x5825eb,null));};
\ No newline at end of file
+var _0xb903=['Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','update','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','crypto','jsforce','desk.js','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','offset','undefined','count','limit','set','json','apply','reject','save','then','destroy','get','Tags','UserProfileResource','sendStatus','error','name','send','index','map','Tag','rawAttributes','type','key','model','query','filters','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','intersection','length','find','create','body','user'];(function(_0x1b8e60,_0x21b885){var _0x363363=function(_0x5987c7){while(--_0x5987c7){_0x1b8e60['push'](_0x1b8e60['shift']());}};_0x363363(++_0x21b885);}(_0xb903,0x185));var _0x3b90=function(_0x95ad4,_0x55101c){_0x95ad4=_0x95ad4-0x0;var _0x2d4bdb=_0xb903[_0x95ad4];return _0x2d4bdb;};'use strict';var emlformat=require(_0x3b90('0x0'));var rimraf=require(_0x3b90('0x1'));var zipdir=require(_0x3b90('0x2'));var jsonpatch=require(_0x3b90('0x3'));var rp=require('request-promise');var moment=require(_0x3b90('0x4'));var BPromise=require(_0x3b90('0x5'));var Mustache=require(_0x3b90('0x6'));var util=require(_0x3b90('0x7'));var path=require(_0x3b90('0x8'));var sox=require(_0x3b90('0x9'));var csv=require(_0x3b90('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3b90('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x3b90('0xc'));var jsforce=require(_0x3b90('0xd'));var deskjs=require(_0x3b90('0xe'));var toCsv=require(_0x3b90('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3b90('0xf'));var logger=require(_0x3b90('0x10'))('api');var utils=require(_0x3b90('0x11'));var config=require(_0x3b90('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x3b90('0x13'))['db'];function respondWithStatusCode(_0x174c0d,_0x43c08c){_0x43c08c=_0x43c08c||0xcc;return function(_0x4badcb){if(_0x4badcb){return _0x174c0d['sendStatus'](_0x43c08c);}return _0x174c0d[_0x3b90('0x14')](_0x43c08c)['end']();};}function respondWithResult(_0x492d39,_0x3a0a55){_0x3a0a55=_0x3a0a55||0xc8;return function(_0x2c72fb){if(_0x2c72fb){return _0x492d39['status'](_0x3a0a55)['json'](_0x2c72fb);}};}function respondWithFilteredResult(_0x3725b9,_0x1b6349){return function(_0x381a9e){if(_0x381a9e){var _0x1af265=typeof _0x1b6349[_0x3b90('0x15')]==='undefined'&&typeof _0x1b6349['limit']===_0x3b90('0x16');var _0x5420dc=_0x381a9e['count'];var _0x269488=_0x1af265?0x0:_0x1b6349[_0x3b90('0x15')];var _0x11ad7d=_0x1af265?_0x381a9e[_0x3b90('0x17')]:_0x1b6349['offset']+_0x1b6349[_0x3b90('0x18')];var _0x5d140f;if(_0x11ad7d>=_0x5420dc){_0x11ad7d=_0x5420dc;_0x5d140f=0xc8;}else{_0x5d140f=0xce;}_0x3725b9[_0x3b90('0x14')](_0x5d140f);return _0x3725b9[_0x3b90('0x19')]('Content-Range',_0x269488+'-'+_0x11ad7d+'/'+_0x5420dc)[_0x3b90('0x1a')](_0x381a9e);}return null;};}function patchUpdates(_0x12e1cf){return function(_0x3642c0){try{jsonpatch[_0x3b90('0x1b')](_0x3642c0,_0x12e1cf,!![]);}catch(_0xc74d57){return BPromise[_0x3b90('0x1c')](_0xc74d57);}return _0x3642c0[_0x3b90('0x1d')]();};}function saveUpdates(_0x2f4270,_0xa98414){return function(_0x3e5bb8){if(_0x3e5bb8){return _0x3e5bb8['update'](_0x2f4270)[_0x3b90('0x1e')](function(_0x36b93e){return _0x36b93e;});}return null;};}function removeEntity(_0x175b42,_0x7faee){return function(_0x1227ed){if(_0x1227ed){return _0x1227ed[_0x3b90('0x1f')]()['then'](function(){var _0x4b308c=_0x1227ed[_0x3b90('0x20')]({'plain':!![]});var _0x29d472=_0x3b90('0x21');return db[_0x3b90('0x22')]['destroy']({'where':{'type':_0x29d472,'resourceId':_0x4b308c['id']}})[_0x3b90('0x1e')](function(){return _0x1227ed;});})[_0x3b90('0x1e')](function(){_0x175b42[_0x3b90('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x14752c,_0x138d79){return function(_0x17ec7f){if(!_0x17ec7f){_0x14752c[_0x3b90('0x23')](0x194);}return _0x17ec7f;};}function handleError(_0x153d7c,_0x7adf75){_0x7adf75=_0x7adf75||0x1f4;return function(_0x4b4d33){logger[_0x3b90('0x24')](_0x4b4d33['stack']);if(_0x4b4d33[_0x3b90('0x25')]){delete _0x4b4d33[_0x3b90('0x25')];}_0x153d7c[_0x3b90('0x14')](_0x7adf75)[_0x3b90('0x26')](_0x4b4d33);};}exports[_0x3b90('0x27')]=function(_0x6704f,_0x290283){var _0x2430ec={},_0x500ceb={},_0x4d1f31={'count':0x0,'rows':[]};var _0x43bd4f=_[_0x3b90('0x28')](db[_0x3b90('0x29')][_0x3b90('0x2a')],function(_0x522ede){return{'name':_0x522ede['fieldName'],'type':_0x522ede[_0x3b90('0x2b')][_0x3b90('0x2c')]};});_0x500ceb[_0x3b90('0x2d')]=_['map'](_0x43bd4f,_0x3b90('0x25'));_0x500ceb['query']=_['keys'](_0x6704f[_0x3b90('0x2e')]);_0x500ceb[_0x3b90('0x2f')]=_['intersection'](_0x500ceb[_0x3b90('0x2d')],_0x500ceb[_0x3b90('0x2e')]);_0x2430ec[_0x3b90('0x30')]=_['intersection'](_0x500ceb['model'],qs[_0x3b90('0x31')](_0x6704f[_0x3b90('0x2e')][_0x3b90('0x31')]));_0x2430ec[_0x3b90('0x30')]=_0x2430ec['attributes']['length']?_0x2430ec[_0x3b90('0x30')]:_0x500ceb[_0x3b90('0x2d')];if(!_0x6704f['query']['hasOwnProperty'](_0x3b90('0x32'))){_0x2430ec[_0x3b90('0x18')]=qs[_0x3b90('0x18')](_0x6704f[_0x3b90('0x2e')]['limit']);_0x2430ec[_0x3b90('0x15')]=qs['offset'](_0x6704f[_0x3b90('0x2e')][_0x3b90('0x15')]);}_0x2430ec[_0x3b90('0x33')]=qs[_0x3b90('0x34')](_0x6704f[_0x3b90('0x2e')][_0x3b90('0x34')]);_0x2430ec[_0x3b90('0x35')]=qs['filters'](_[_0x3b90('0x36')](_0x6704f[_0x3b90('0x2e')],_0x500ceb[_0x3b90('0x2f')]),_0x43bd4f);if(_0x6704f[_0x3b90('0x2e')][_0x3b90('0x37')]){_0x2430ec[_0x3b90('0x35')]=_[_0x3b90('0x38')](_0x2430ec[_0x3b90('0x35')],{'$or':_[_0x3b90('0x28')](_0x43bd4f,function(_0x5063b9){if(_0x5063b9[_0x3b90('0x2b')]!==_0x3b90('0x39')){var _0x40ce3a={};_0x40ce3a[_0x5063b9[_0x3b90('0x25')]]={'$like':'%'+_0x6704f[_0x3b90('0x2e')][_0x3b90('0x37')]+'%'};return _0x40ce3a;}})});}_0x2430ec=_[_0x3b90('0x38')]({},_0x2430ec,_0x6704f[_0x3b90('0x3a')]);var _0x30ff62={'where':_0x2430ec[_0x3b90('0x35')]};return db[_0x3b90('0x29')][_0x3b90('0x17')](_0x30ff62)[_0x3b90('0x1e')](function(_0x11285e){_0x4d1f31[_0x3b90('0x17')]=_0x11285e;if(_0x6704f[_0x3b90('0x2e')][_0x3b90('0x3b')]){_0x2430ec[_0x3b90('0x3c')]=[{'all':!![]}];}return db[_0x3b90('0x29')][_0x3b90('0x3d')](_0x2430ec);})[_0x3b90('0x1e')](function(_0x4d1157){_0x4d1f31[_0x3b90('0x3e')]=_0x4d1157;return _0x4d1f31;})[_0x3b90('0x1e')](respondWithFilteredResult(_0x290283,_0x2430ec))[_0x3b90('0x3f')](handleError(_0x290283,null));};exports[_0x3b90('0x40')]=function(_0x5a48a9,_0x36bc29){var _0x47e450={'raw':!![],'where':{'id':_0x5a48a9[_0x3b90('0x41')]['id']}},_0x564907={};_0x564907[_0x3b90('0x2d')]=_['keys'](db[_0x3b90('0x29')][_0x3b90('0x2a')]);_0x564907[_0x3b90('0x2e')]=_[_0x3b90('0x42')](_0x5a48a9[_0x3b90('0x2e')]);_0x564907[_0x3b90('0x2f')]=_[_0x3b90('0x43')](_0x564907[_0x3b90('0x2d')],_0x564907[_0x3b90('0x2e')]);_0x47e450['attributes']=_[_0x3b90('0x43')](_0x564907[_0x3b90('0x2d')],qs['fields'](_0x5a48a9[_0x3b90('0x2e')][_0x3b90('0x31')]));_0x47e450[_0x3b90('0x30')]=_0x47e450[_0x3b90('0x30')][_0x3b90('0x44')]?_0x47e450['attributes']:_0x564907['model'];if(_0x5a48a9[_0x3b90('0x2e')]['includeAll']){_0x47e450[_0x3b90('0x3c')]=[{'all':!![]}];}_0x47e450=_[_0x3b90('0x38')]({},_0x47e450,_0x5a48a9[_0x3b90('0x3a')]);return db[_0x3b90('0x29')][_0x3b90('0x45')](_0x47e450)['then'](handleEntityNotFound(_0x36bc29,null))['then'](respondWithResult(_0x36bc29,null))[_0x3b90('0x3f')](handleError(_0x36bc29,null));};exports[_0x3b90('0x46')]=function(_0x9e2ee5,_0x5d7333){return db[_0x3b90('0x29')][_0x3b90('0x46')](_0x9e2ee5[_0x3b90('0x47')],{})[_0x3b90('0x1e')](function(_0x41e951){var _0x226354=_0x9e2ee5[_0x3b90('0x48')][_0x3b90('0x20')]({'plain':!![]});if(!_0x226354)throw new Error(_0x3b90('0x49'));if(_0x226354['role']===_0x3b90('0x48')){var _0x407784=_0x41e951[_0x3b90('0x20')]({'plain':!![]});var _0x4b90ab=_0x3b90('0x21');return db['UserProfileSection'][_0x3b90('0x45')]({'where':{'name':_0x4b90ab,'userProfileId':_0x226354[_0x3b90('0x4a')]},'raw':!![]})[_0x3b90('0x1e')](function(_0x56f95d){if(_0x56f95d&&_0x56f95d[_0x3b90('0x4b')]===0x0){return db[_0x3b90('0x22')]['create']({'name':_0x407784['name'],'resourceId':_0x407784['id'],'type':_0x56f95d[_0x3b90('0x25')],'sectionId':_0x56f95d['id']},{})[_0x3b90('0x1e')](function(){return _0x41e951;});}else{return _0x41e951;}})[_0x3b90('0x3f')](function(_0x3f46cf){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3f46cf);throw _0x3f46cf;});}return _0x41e951;})[_0x3b90('0x1e')](respondWithResult(_0x5d7333,0xc9))[_0x3b90('0x3f')](handleError(_0x5d7333,null));};exports[_0x3b90('0x4c')]=function(_0x92f420,_0x15fe10){if(_0x92f420[_0x3b90('0x47')]['id']){delete _0x92f420[_0x3b90('0x47')]['id'];}return db[_0x3b90('0x29')][_0x3b90('0x45')]({'where':{'id':_0x92f420['params']['id']}})[_0x3b90('0x1e')](handleEntityNotFound(_0x15fe10,null))[_0x3b90('0x1e')](saveUpdates(_0x92f420['body'],null))[_0x3b90('0x1e')](respondWithResult(_0x15fe10,null))[_0x3b90('0x3f')](handleError(_0x15fe10,null));};exports['destroy']=function(_0x3677d1,_0x16c30f){return db[_0x3b90('0x29')][_0x3b90('0x45')]({'where':{'id':_0x3677d1[_0x3b90('0x41')]['id']}})[_0x3b90('0x1e')](handleEntityNotFound(_0x16c30f,null))[_0x3b90('0x1e')](removeEntity(_0x16c30f,null))['catch'](handleError(_0x16c30f,null));};
\ No newline at end of file
index 1d8e8aa..7dd25b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa554=['lodash','util','../../config/logger','api','request-promise','rimraf','./tag.attributes','exports','define','Tag'];(function(_0xe6bbe2,_0x4eeae3){var _0x1414f3=function(_0x3aef68){while(--_0x3aef68){_0xe6bbe2['push'](_0xe6bbe2['shift']());}};_0x1414f3(++_0x4eeae3);}(_0xa554,0x104));var _0x4a55=function(_0x6b5a3a,_0x5128b2){_0x6b5a3a=_0x6b5a3a-0x0;var _0x215b88=_0xa554[_0x6b5a3a];return _0x215b88;};'use strict';var _=require(_0x4a55('0x0'));var util=require(_0x4a55('0x1'));var logger=require(_0x4a55('0x2'))(_0x4a55('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4a55('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4a55('0x5'));var config=require('../../config/environment');var attributes=require(_0x4a55('0x6'));module[_0x4a55('0x7')]=function(_0xc99a95,_0x194953){return _0xc99a95[_0x4a55('0x8')](_0x4a55('0x9'),attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xed47=['lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./tag.attributes','exports','define','Tag'];(function(_0x5e7a3e,_0x3a54af){var _0x264f8d=function(_0x1e4b1a){while(--_0x1e4b1a){_0x5e7a3e['push'](_0x5e7a3e['shift']());}};_0x264f8d(++_0x3a54af);}(_0xed47,0x15c));var _0x7ed4=function(_0x9f021c,_0x59b485){_0x9f021c=_0x9f021c-0x0;var _0x3f6ca8=_0xed47[_0x9f021c];return _0x3f6ca8;};'use strict';var _=require(_0x7ed4('0x0'));var util=require(_0x7ed4('0x1'));var logger=require('../../config/logger')(_0x7ed4('0x2'));var moment=require(_0x7ed4('0x3'));var BPromise=require(_0x7ed4('0x4'));var rp=require(_0x7ed4('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7ed4('0x6'));var config=require(_0x7ed4('0x7'));var attributes=require(_0x7ed4('0x8'));module[_0x7ed4('0x9')]=function(_0x554739,_0x4d3494){return _0x554739[_0x7ed4('0xa')](_0x7ed4('0xb'),attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 755d125..b69dfd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e5=['jayson/promise','client','http','request','info','request\x20sent','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','Tag,\x20%s,\x20%s','message','result','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x1ca9eb,_0x99a10b){var _0x2e284e=function(_0x1196a4){while(--_0x1196a4){_0x1ca9eb['push'](_0x1ca9eb['shift']());}};_0x2e284e(++_0x99a10b);}(_0x34e5,0x172));var _0x534e=function(_0x323eeb,_0x23aee3){_0x323eeb=_0x323eeb-0x0;var _0x3b446d=_0x34e5[_0x323eeb];return _0x3b446d;};'use strict';var _=require('lodash');var util=require(_0x534e('0x0'));var moment=require('moment');var BPromise=require(_0x534e('0x1'));var rs=require(_0x534e('0x2'));var fs=require('fs');var Redis=require(_0x534e('0x3'));var db=require(_0x534e('0x4'))['db'];var utils=require(_0x534e('0x5'));var logger=require('../../config/logger')(_0x534e('0x6'));var config=require(_0x534e('0x7'));var jayson=require(_0x534e('0x8'));var client=jayson[_0x534e('0x9')][_0x534e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2d0370,_0x2760e7,_0x5620d4){return new BPromise(function(_0x24d562,_0x929597){return client[_0x534e('0xb')](_0x2d0370,_0x5620d4)['then'](function(_0x59fcff){logger[_0x534e('0xc')]('Tag,\x20%s,\x20%s',_0x2760e7,_0x534e('0xd'));logger['debug'](_0x534e('0xe'),_0x2760e7,_0x534e('0xd'),JSON[_0x534e('0xf')](_0x59fcff));if(_0x59fcff['error']){if(_0x59fcff[_0x534e('0x10')][_0x534e('0x11')]===0x1f4){logger[_0x534e('0x10')](_0x534e('0x12'),_0x2760e7,_0x59fcff[_0x534e('0x10')]['message']);return _0x929597(_0x59fcff[_0x534e('0x10')][_0x534e('0x13')]);}logger[_0x534e('0x10')](_0x534e('0x12'),_0x2760e7,_0x59fcff[_0x534e('0x10')][_0x534e('0x13')]);return _0x24d562(_0x59fcff[_0x534e('0x10')][_0x534e('0x13')]);}else{logger[_0x534e('0xc')]('Tag,\x20%s,\x20%s',_0x2760e7,_0x534e('0xd'));_0x24d562(_0x59fcff[_0x534e('0x14')]['message']);}})['catch'](function(_0x2de9d0){logger[_0x534e('0x10')](_0x534e('0x12'),_0x2760e7,_0x2de9d0);_0x929597(_0x2de9d0);});});}
\ No newline at end of file
+var _0xc874=['bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','Tag,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','moment'];(function(_0x5711a4,_0x46c59c){var _0x461ab3=function(_0x197fff){while(--_0x197fff){_0x5711a4['push'](_0x5711a4['shift']());}};_0x461ab3(++_0x46c59c);}(_0xc874,0x154));var _0x4c87=function(_0x56740a,_0x568894){_0x56740a=_0x56740a-0x0;var _0x257144=_0xc874[_0x56740a];return _0x257144;};'use strict';var _=require(_0x4c87('0x0'));var util=require('util');var moment=require(_0x4c87('0x1'));var BPromise=require(_0x4c87('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4c87('0x3'))['db'];var utils=require(_0x4c87('0x4'));var logger=require(_0x4c87('0x5'))('rpc');var config=require(_0x4c87('0x6'));var jayson=require(_0x4c87('0x7'));var client=jayson['client'][_0x4c87('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3dafe0,_0x30c939,_0xdc4a29){return new BPromise(function(_0x116649,_0x5b7720){return client[_0x4c87('0x9')](_0x3dafe0,_0xdc4a29)['then'](function(_0x384268){logger[_0x4c87('0xa')](_0x4c87('0xb'),_0x30c939,_0x4c87('0xc'));logger[_0x4c87('0xd')]('Tag,\x20%s,\x20%s,\x20%s',_0x30c939,_0x4c87('0xc'),JSON[_0x4c87('0xe')](_0x384268));if(_0x384268['error']){if(_0x384268[_0x4c87('0xf')][_0x4c87('0x10')]===0x1f4){logger[_0x4c87('0xf')](_0x4c87('0xb'),_0x30c939,_0x384268[_0x4c87('0xf')]['message']);return _0x5b7720(_0x384268['error']['message']);}logger[_0x4c87('0xf')](_0x4c87('0xb'),_0x30c939,_0x384268[_0x4c87('0xf')][_0x4c87('0x11')]);return _0x116649(_0x384268[_0x4c87('0xf')][_0x4c87('0x11')]);}else{logger[_0x4c87('0xa')](_0x4c87('0xb'),_0x30c939,'request\x20sent');_0x116649(_0x384268[_0x4c87('0x12')][_0x4c87('0x11')]);}})['catch'](function(_0x575de5){logger[_0x4c87('0xf')](_0x4c87('0xb'),_0x30c939,_0x575de5);_0x5b7720(_0x575de5);});});}
\ No newline at end of file
index 78c894a..c7d52ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
index f903f88..a41d038 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['STRING','name'];(function(_0x489a4d,_0x586c60){var _0x3f476a=function(_0x55cca2){while(--_0x55cca2){_0x489a4d['push'](_0x489a4d['shift']());}};_0x3f476a(++_0x586c60);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3071('0x0')],'allowNull':![],'unique':_0x3071('0x1')},'description':{'type':Sequelize[_0x3071('0x0')]}};
\ No newline at end of file
+var _0x757a=['exports','STRING'];(function(_0x1999fd,_0x362f26){var _0x27eb08=function(_0xd7d05e){while(--_0xd7d05e){_0x1999fd['push'](_0x1999fd['shift']());}};_0x27eb08(++_0x362f26);}(_0x757a,0xde));var _0xa757=function(_0x24fbec,_0x4df377){_0x24fbec=_0x24fbec-0x0;var _0x38c043=_0x757a[_0x24fbec];return _0x38c043;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 895ad21..32b0762 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x758a=['index','Team','fieldName','key','map','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','userProfileId','autoAssociation','UserProfileResource','body','getQueues','findOne','channel','isValidChannel','Sequelize','ValidationError','Unknown\x20channel','toLowerCase','Queue','rawAttributes','capitalize','add','Queues','ids','removeQueues','remove','addAgents','Voice','Chat','Sms','Openchannel','Whatsapp','sequelize','transaction','through','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','voicePause','interface','isNil','format','all','spread','removeAgents','Mail','Fax','parse','Queue:remove','UserVoiceQueueRt','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','end','status','offset','undefined','limit','count','set','Content-Range','json','save','update','destroy','then','get','sendStatus','error','stack','name','send'];(function(_0x1b4017,_0x58a788){var _0x210a43=function(_0x3e0fe0){while(--_0x3e0fe0){_0x1b4017['push'](_0x1b4017['shift']());}};_0x210a43(++_0x58a788);}(_0x758a,0x1d1));var _0xa758=function(_0x331fcd,_0x5a1421){_0x331fcd=_0x331fcd-0x0;var _0x155b5d=_0x758a[_0x331fcd];return _0x155b5d;};'use strict';var emlformat=require(_0xa758('0x0'));var rimraf=require(_0xa758('0x1'));var zipdir=require(_0xa758('0x2'));var jsonpatch=require(_0xa758('0x3'));var rp=require(_0xa758('0x4'));var moment=require(_0xa758('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xa758('0x6'));var sox=require('sox');var csv=require(_0xa758('0x7'));var ejs=require(_0xa758('0x8'));var fs=require('fs');var fs_extra=require(_0xa758('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xa758('0xa'));var jsforce=require(_0xa758('0xb'));var deskjs=require(_0xa758('0xc'));var toCsv=require(_0xa758('0x7'));var querystring=require(_0xa758('0xd'));var Papa=require(_0xa758('0xe'));var Redis=require('ioredis');var authService=require(_0xa758('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa758('0x10'));var logger=require(_0xa758('0x11'))('api');var utils=require(_0xa758('0x12'));var config=require(_0xa758('0x13'));var licenseUtil=require(_0xa758('0x14'));var db=require(_0xa758('0x15'))['db'];config[_0xa758('0x16')]=_[_0xa758('0x17')](config[_0xa758('0x16')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa758('0x16')]));require('./team.socket')['register'](socket);function respondWithStatusCode(_0x465ced,_0x3134d9){_0x3134d9=_0x3134d9||0xcc;return function(_0x34ea5f){if(_0x34ea5f){return _0x465ced['sendStatus'](_0x3134d9);}return _0x465ced['status'](_0x3134d9)[_0xa758('0x18')]();};}function respondWithResult(_0x5dad5a,_0x2a37c4){_0x2a37c4=_0x2a37c4||0xc8;return function(_0x50cfba){if(_0x50cfba){return _0x5dad5a[_0xa758('0x19')](_0x2a37c4)['json'](_0x50cfba);}};}function respondWithFilteredResult(_0x1f6ea0,_0x4704a1){return function(_0x2757fd){if(_0x2757fd){var _0x32d4ec=typeof _0x4704a1[_0xa758('0x1a')]===_0xa758('0x1b')&&typeof _0x4704a1[_0xa758('0x1c')]==='undefined';var _0x220f28=_0x2757fd['count'];var _0x21a823=_0x32d4ec?0x0:_0x4704a1[_0xa758('0x1a')];var _0xc5bd4f=_0x32d4ec?_0x2757fd[_0xa758('0x1d')]:_0x4704a1['offset']+_0x4704a1[_0xa758('0x1c')];var _0x4d741b;if(_0xc5bd4f>=_0x220f28){_0xc5bd4f=_0x220f28;_0x4d741b=0xc8;}else{_0x4d741b=0xce;}_0x1f6ea0['status'](_0x4d741b);return _0x1f6ea0[_0xa758('0x1e')](_0xa758('0x1f'),_0x21a823+'-'+_0xc5bd4f+'/'+_0x220f28)[_0xa758('0x20')](_0x2757fd);}return null;};}function patchUpdates(_0x49bcae){return function(_0x2f9b68){try{jsonpatch['apply'](_0x2f9b68,_0x49bcae,!![]);}catch(_0x1d0a64){return BPromise['reject'](_0x1d0a64);}return _0x2f9b68[_0xa758('0x21')]();};}function saveUpdates(_0x49b993,_0x3cf203){return function(_0x4e2d98){if(_0x4e2d98){return _0x4e2d98[_0xa758('0x22')](_0x49b993)['then'](function(_0x1c7651){return _0x1c7651;});}return null;};}function removeEntity(_0x1c3338,_0x3f4e91){return function(_0xd9dd6d){if(_0xd9dd6d){return _0xd9dd6d[_0xa758('0x23')]()[_0xa758('0x24')](function(){var _0x2d9eb4=_0xd9dd6d[_0xa758('0x25')]({'plain':!![]});var _0x5eda50='Teams';return db['UserProfileResource']['destroy']({'where':{'type':_0x5eda50,'resourceId':_0x2d9eb4['id']}})[_0xa758('0x24')](function(){return _0xd9dd6d;});})[_0xa758('0x24')](function(){_0x1c3338['status'](0xcc)[_0xa758('0x18')]();});}};}function handleEntityNotFound(_0x2a432f,_0x32f5ac){return function(_0x2bad36){if(!_0x2bad36){_0x2a432f[_0xa758('0x26')](0x194);}return _0x2bad36;};}function handleError(_0x14d56b,_0xbbe228){_0xbbe228=_0xbbe228||0x1f4;return function(_0x55aa36){logger[_0xa758('0x27')](_0x55aa36[_0xa758('0x28')]);if(_0x55aa36['name']){delete _0x55aa36[_0xa758('0x29')];}_0x14d56b[_0xa758('0x19')](_0xbbe228)[_0xa758('0x2a')](_0x55aa36);};}exports[_0xa758('0x2b')]=function(_0x33fd1f,_0x50625c){var _0x367c76={},_0x1ea22a={},_0x483f60={'count':0x0,'rows':[]};var _0x4a6167=_['map'](db[_0xa758('0x2c')]['rawAttributes'],function(_0x1c29e4){return{'name':_0x1c29e4[_0xa758('0x2d')],'type':_0x1c29e4['type'][_0xa758('0x2e')]};});_0x1ea22a['model']=_[_0xa758('0x2f')](_0x4a6167,_0xa758('0x29'));_0x1ea22a[_0xa758('0x30')]=_['keys'](_0x33fd1f[_0xa758('0x30')]);_0x1ea22a[_0xa758('0x31')]=_[_0xa758('0x32')](_0x1ea22a[_0xa758('0x33')],_0x1ea22a[_0xa758('0x30')]);_0x367c76[_0xa758('0x34')]=_[_0xa758('0x32')](_0x1ea22a[_0xa758('0x33')],qs[_0xa758('0x35')](_0x33fd1f[_0xa758('0x30')][_0xa758('0x35')]));_0x367c76['attributes']=_0x367c76['attributes']['length']?_0x367c76[_0xa758('0x34')]:_0x1ea22a[_0xa758('0x33')];if(!_0x33fd1f['query'][_0xa758('0x36')](_0xa758('0x37'))){_0x367c76[_0xa758('0x1c')]=qs[_0xa758('0x1c')](_0x33fd1f['query']['limit']);_0x367c76[_0xa758('0x1a')]=qs['offset'](_0x33fd1f[_0xa758('0x30')][_0xa758('0x1a')]);}_0x367c76[_0xa758('0x38')]=qs['sort'](_0x33fd1f[_0xa758('0x30')][_0xa758('0x39')]);_0x367c76[_0xa758('0x3a')]=qs[_0xa758('0x31')](_[_0xa758('0x3b')](_0x33fd1f[_0xa758('0x30')],_0x1ea22a[_0xa758('0x31')]),_0x4a6167);if(_0x33fd1f[_0xa758('0x30')][_0xa758('0x3c')]){_0x367c76['where']=_[_0xa758('0x3d')](_0x367c76['where'],{'$or':_[_0xa758('0x2f')](_0x4a6167,function(_0xc7f2e6){if(_0xc7f2e6[_0xa758('0x3e')]!==_0xa758('0x3f')){var _0x5abe2e={};_0x5abe2e[_0xc7f2e6[_0xa758('0x29')]]={'$like':'%'+_0x33fd1f[_0xa758('0x30')][_0xa758('0x3c')]+'%'};return _0x5abe2e;}})});}_0x367c76=_[_0xa758('0x3d')]({},_0x367c76,_0x33fd1f[_0xa758('0x40')]);var _0x5871ed={'where':_0x367c76[_0xa758('0x3a')]};return db[_0xa758('0x2c')][_0xa758('0x1d')](_0x5871ed)[_0xa758('0x24')](function(_0x6d2494){_0x483f60[_0xa758('0x1d')]=_0x6d2494;if(_0x33fd1f[_0xa758('0x30')][_0xa758('0x41')]){_0x367c76['include']=[{'all':!![]}];}return db[_0xa758('0x2c')][_0xa758('0x42')](_0x367c76);})[_0xa758('0x24')](function(_0x3107c9){_0x483f60[_0xa758('0x43')]=_0x3107c9;return _0x483f60;})[_0xa758('0x24')](respondWithFilteredResult(_0x50625c,_0x367c76))[_0xa758('0x44')](handleError(_0x50625c,null));};exports[_0xa758('0x45')]=function(_0x2d5b52,_0x5db0f4){var _0x5a4bfb={'raw':![],'where':{'id':_0x2d5b52[_0xa758('0x46')]['id']}},_0x382841={};_0x382841[_0xa758('0x33')]=_[_0xa758('0x47')](db[_0xa758('0x2c')]['rawAttributes']);_0x382841[_0xa758('0x30')]=_[_0xa758('0x47')](_0x2d5b52[_0xa758('0x30')]);_0x382841[_0xa758('0x31')]=_[_0xa758('0x32')](_0x382841['model'],_0x382841[_0xa758('0x30')]);_0x5a4bfb[_0xa758('0x34')]=_['intersection'](_0x382841[_0xa758('0x33')],qs['fields'](_0x2d5b52[_0xa758('0x30')][_0xa758('0x35')]));_0x5a4bfb[_0xa758('0x34')]=_0x5a4bfb['attributes'][_0xa758('0x48')]?_0x5a4bfb[_0xa758('0x34')]:_0x382841[_0xa758('0x33')];if(_0x2d5b52[_0xa758('0x30')][_0xa758('0x41')]){_0x5a4bfb['include']=[{'all':!![]}];}_0x5a4bfb=_[_0xa758('0x3d')]({},_0x5a4bfb,_0x2d5b52[_0xa758('0x40')]);return db['Team'][_0xa758('0x49')](_0x5a4bfb)[_0xa758('0x24')](handleEntityNotFound(_0x5db0f4,null))[_0xa758('0x24')](respondWithResult(_0x5db0f4,null))[_0xa758('0x44')](handleError(_0x5db0f4,null));};exports[_0xa758('0x4a')]=function(_0x5408da,_0x2d1262){return db[_0xa758('0x2c')]['create'](_0x5408da['body'],{})[_0xa758('0x24')](function(_0x31c508){var _0x5210e0=_0x5408da[_0xa758('0x4b')]['get']({'plain':!![]});if(!_0x5210e0)throw new Error(_0xa758('0x4c'));if(_0x5210e0[_0xa758('0x4d')]===_0xa758('0x4b')){var _0x2c5535=_0x31c508['get']({'plain':!![]});var _0x3b3ff5=_0xa758('0x4e');return db['UserProfileSection'][_0xa758('0x49')]({'where':{'name':_0x3b3ff5,'userProfileId':_0x5210e0[_0xa758('0x4f')]},'raw':!![]})['then'](function(_0x1c2642){if(_0x1c2642&&_0x1c2642[_0xa758('0x50')]===0x0){return db[_0xa758('0x51')][_0xa758('0x4a')]({'name':_0x2c5535[_0xa758('0x29')],'resourceId':_0x2c5535['id'],'type':_0x1c2642[_0xa758('0x29')],'sectionId':_0x1c2642['id']},{})[_0xa758('0x24')](function(){return _0x31c508;});}else{return _0x31c508;}})[_0xa758('0x44')](function(_0xf387be){logger[_0xa758('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xf387be);throw _0xf387be;});}return _0x31c508;})[_0xa758('0x24')](respondWithResult(_0x2d1262,0xc9))[_0xa758('0x44')](handleError(_0x2d1262,null));};exports[_0xa758('0x22')]=function(_0x422637,_0x5145a9){if(_0x422637['body']['id']){delete _0x422637[_0xa758('0x52')]['id'];}return db[_0xa758('0x2c')]['find']({'where':{'id':_0x422637['params']['id']}})['then'](handleEntityNotFound(_0x5145a9,null))['then'](saveUpdates(_0x422637[_0xa758('0x52')],null))[_0xa758('0x24')](respondWithResult(_0x5145a9,null))['catch'](handleError(_0x5145a9,null));};exports[_0xa758('0x23')]=function(_0x491811,_0x1b46f4){return db[_0xa758('0x2c')][_0xa758('0x49')]({'where':{'id':_0x491811[_0xa758('0x46')]['id']}})[_0xa758('0x24')](handleEntityNotFound(_0x1b46f4,null))['then'](removeEntity(_0x1b46f4,null))[_0xa758('0x44')](handleError(_0x1b46f4,null));};exports[_0xa758('0x53')]=function(_0x56a0e5,_0x5181d9,_0x26ff69){return db[_0xa758('0x2c')][_0xa758('0x54')]({'where':{'id':_0x56a0e5[_0xa758('0x46')]['id']}})['then'](handleEntityNotFound(_0x5181d9,null))[_0xa758('0x24')](function(_0x492c22){if(!_0x56a0e5[_0xa758('0x30')][_0xa758('0x55')]||!utils[_0xa758('0x56')](_0x56a0e5[_0xa758('0x30')][_0xa758('0x55')])){throw new db[(_0xa758('0x57'))][(_0xa758('0x58'))](_0xa758('0x59'));}var _0x569c20={};var _0x215fc0={};_0x215fc0['model']=_[_0xa758('0x47')](db[_['capitalize'](_0x56a0e5['query'][_0xa758('0x55')][_0xa758('0x5a')]())+_0xa758('0x5b')][_0xa758('0x5c')]);_0x215fc0['query']=_[_0xa758('0x47')](_0x56a0e5['query']);_0x215fc0[_0xa758('0x31')]=_[_0xa758('0x32')](_0x215fc0[_0xa758('0x33')],_0x215fc0[_0xa758('0x30')]);_0x569c20[_0xa758('0x34')]=_[_0xa758('0x32')](_0x215fc0[_0xa758('0x33')],qs[_0xa758('0x35')](_0x56a0e5[_0xa758('0x30')][_0xa758('0x35')]));_0x569c20[_0xa758('0x34')]=_0x569c20[_0xa758('0x34')][_0xa758('0x48')]?_0x569c20[_0xa758('0x34')]:_0x215fc0['model'];_0x569c20[_0xa758('0x1c')]=qs[_0xa758('0x1c')](_0x56a0e5[_0xa758('0x30')]['limit']);_0x569c20['offset']=qs[_0xa758('0x1a')](_0x56a0e5[_0xa758('0x30')][_0xa758('0x1a')]);_0x569c20[_0xa758('0x38')]=qs[_0xa758('0x39')](_0x56a0e5['query']['sort']);_0x569c20[_0xa758('0x3a')]=qs[_0xa758('0x31')](_[_0xa758('0x3b')](_0x56a0e5['query'],_0x215fc0['filters']));_0x569c20=_[_0xa758('0x3d')]({},_0x569c20,_0x56a0e5[_0xa758('0x40')]);return _0x492c22[_0xa758('0x25')+_[_0xa758('0x5d')](_0x56a0e5[_0xa758('0x30')][_0xa758('0x55')]['toLowerCase']())+'Queues'](_0x569c20);})[_0xa758('0x24')](respondWithResult(_0x5181d9,null))[_0xa758('0x44')](handleError(_0x5181d9,null));};exports['addQueues']=function(_0x5856c2,_0x5ad613,_0x29c2d1){return db[_0xa758('0x2c')][_0xa758('0x54')]({'where':{'id':_0x5856c2['params']['id']}})['then'](function(_0x5d89cb){if(_0x5d89cb){if(!_0x5856c2[_0xa758('0x52')][_0xa758('0x55')]||!utils['isValidChannel'](_0x5856c2[_0xa758('0x52')][_0xa758('0x55')])){throw new db['Sequelize'][(_0xa758('0x58'))](_0xa758('0x59'));}return _0x5d89cb[_0xa758('0x5e')+_[_0xa758('0x5d')](_0x5856c2['body'][_0xa758('0x55')]['toLowerCase']())+_0xa758('0x5f')](_0x5856c2[_0xa758('0x52')][_0xa758('0x60')]);}return null;})[_0xa758('0x24')](handleEntityNotFound(_0x5ad613,null))['then'](respondWithStatusCode(_0x5ad613,null))['catch'](handleError(_0x5ad613,null));};exports[_0xa758('0x61')]=function(_0x1651cd,_0x53c554,_0xcbc48e){return db[_0xa758('0x2c')]['findOne']({'where':{'id':_0x1651cd[_0xa758('0x46')]['id']}})['then'](function(_0x52c014){if(_0x52c014){if(!_0x1651cd[_0xa758('0x30')][_0xa758('0x55')]||!utils['isValidChannel'](_0x1651cd[_0xa758('0x30')][_0xa758('0x55')])){throw new db['Sequelize'][(_0xa758('0x58'))](_0xa758('0x59'));}return _0x52c014[_0xa758('0x62')+_[_0xa758('0x5d')](_0x1651cd[_0xa758('0x30')]['channel'][_0xa758('0x5a')]())+_0xa758('0x5f')](_0x1651cd['query'][_0xa758('0x60')]);}return null;})['then'](handleEntityNotFound(_0x53c554,null))[_0xa758('0x24')](respondWithStatusCode(_0x53c554,null))[_0xa758('0x44')](handleError(_0x53c554,null));};exports[_0xa758('0x63')]=function(_0x3ef3ea,_0x53f743){return db[_0xa758('0x2c')]['find']({'where':{'id':_0x3ef3ea[_0xa758('0x46')]['id']}})[_0xa758('0x24')](handleEntityNotFound(_0x53f743,null))[_0xa758('0x24')](function(_0x257324){if(_0x257324){var _0x3db0d9=[_0xa758('0x64'),_0xa758('0x65'),'Mail',_0xa758('0x66'),'Fax',_0xa758('0x67'),_0xa758('0x68')];return db[_0xa758('0x69')][_0xa758('0x6a')](function(_0x4802ce){var _0xdb943e=_['map'](_0x3db0d9,function(_0xde5b59){var _0x156aa0={'attributes':['id',_0xa758('0x29')]};if(_0xde5b59===_0xa758('0x64')){_0x156aa0[_0xa758('0x6b')]={'attributes':[_0xa758('0x6c')]};}return _0x257324[_0xa758('0x25')+_0xde5b59+_0xa758('0x5f')](_0x156aa0)[_0xa758('0x24')](function(_0xef4dee){var _0x2f7442=_[_0xa758('0x2f')](_0xef4dee,function(_0x466994){var _0x23dab7=_['map'](_0x3ef3ea[_0xa758('0x52')][_0xa758('0x60')],function(_0x4046cf){var _0x14468b={'where':{'UserId':_0x4046cf,[_0xde5b59+_0xa758('0x6d')]:_0x466994['id']},'transaction':_0x4802ce};if(_0xde5b59===_0xa758('0x64')){_0x14468b[_0xa758('0x17')]={'penalty':_0x466994[_0xa758('0x6e')][_0xa758('0x6c')]};}return db[_0xa758('0x6f')+_0xde5b59+_0xa758('0x5b')][_0xa758('0x70')](_0x14468b)[_0xa758('0x24')](function(){socket[_0xa758('0x71')](_0xa758('0x4b')+_0xde5b59+'Queue:save',{'UserId':_0x4046cf,[_0xde5b59+'QueueId']:_0x466994['id']});if(_0xde5b59!==_0xa758('0x64'))return;return db[_0xa758('0x6f')]['findAll']({'where':{'id':_0x3ef3ea['body'][_0xa758('0x60')],'online':0x1},'attributes':['id',_0xa758('0x29'),'online',_0xa758('0x72'),_0xa758('0x73')],'raw':!![]})[_0xa758('0x24')](function(_0x25fc59){var _0x559d09=_[_0xa758('0x2f')](_0x25fc59,function(_0x3d91b1){return db['UserVoiceQueueRt']['upsert']({'membername':_0x3d91b1[_0xa758('0x29')],'UserId':_0x3d91b1['id'],'queue_name':_0x466994['name'],'VoiceQueueId':_0x466994['id'],'interface':_[_0xa758('0x74')](_0x3d91b1[_0xa758('0x73')])?util[_0xa758('0x75')]('SIP/%s',_0x3d91b1[_0xa758('0x29')]):_0x3d91b1[_0xa758('0x73')],'paused':_0x3d91b1['voicePause']||![],'penalty':_0x466994['TeamVoiceQueue'][_0xa758('0x6c')]},{'transaction':_0x4802ce});});return Promise[_0xa758('0x76')](_0x559d09);});});});return Promise[_0xa758('0x76')](_0x23dab7);});return Promise[_0xa758('0x76')](_0x2f7442);});});return Promise[_0xa758('0x76')](_0xdb943e)[_0xa758('0x24')](function(){return _0x257324[_0xa758('0x63')](_0x3ef3ea['body'][_0xa758('0x60')],{'transaction':_0x4802ce})[_0xa758('0x77')](function(_0x5d7040){return _0x5d7040;});});});}})['then'](respondWithResult(_0x53f743,null))[_0xa758('0x44')](handleError(_0x53f743,null));};exports[_0xa758('0x78')]=function(_0x593b71,_0x3d7309){return db[_0xa758('0x2c')][_0xa758('0x49')]({'where':{'id':_0x593b71[_0xa758('0x46')]['id']}})[_0xa758('0x24')](handleEntityNotFound(_0x3d7309,null))[_0xa758('0x24')](function(_0x47f4ca){if(_0x47f4ca){var _0x427d01=['Voice',_0xa758('0x65'),_0xa758('0x79'),_0xa758('0x66'),_0xa758('0x7a'),_0xa758('0x67'),_0xa758('0x68')];return db[_0xa758('0x69')]['transaction'](function(_0x125308){var _0x5da091=_[_0xa758('0x2f')](_0x427d01,function(_0x3c323e){var _0x58b75b={'attributes':['id',_0xa758('0x29')]};return _0x47f4ca[_0xa758('0x25')+_0x3c323e+_0xa758('0x5f')](_0x58b75b)['then'](function(_0x345f02){var _0x4eed34=_['map'](_0x345f02,function(_0x16260f){return _0x16260f[_0xa758('0x78')](_0x593b71[_0xa758('0x30')][_0xa758('0x60')],{'transaction':_0x125308})[_0xa758('0x24')](function(){var _0x628d36=JSON[_0xa758('0x7b')]('['+_0x593b71[_0xa758('0x30')][_0xa758('0x60')]+']');var _0x486ff8=_['map'](_0x628d36,function(_0x232425){socket[_0xa758('0x71')](_0xa758('0x4b')+_0x3c323e+_0xa758('0x7c'),{'UserId':Number(_0x232425),[_0x3c323e+_0xa758('0x6d')]:_0x16260f['id']});if(_0x3c323e!==_0xa758('0x64'))return;return db[_0xa758('0x7d')][_0xa758('0x23')]({'where':{'VoiceQueueId':_0x16260f['id'],'UserId':_0x232425},'transaction':_0x125308});});return Promise['all'](_0x486ff8);});});return Promise[_0xa758('0x76')](_0x4eed34);});});return Promise[_0xa758('0x76')](_0x5da091)[_0xa758('0x24')](function(){return _0x47f4ca['removeAgents'](_0x593b71[_0xa758('0x30')][_0xa758('0x60')],{'transaction':_0x125308});});});}})[_0xa758('0x24')](respondWithStatusCode(_0x3d7309,null))['catch'](handleError(_0x3d7309,null));};exports[_0xa758('0x7e')]=function(_0x2d5172,_0x58a988,_0x1adcc9){var _0x37e83a={};var _0x4f94b0={};var _0x20308e;var _0x3b4f41;return db[_0xa758('0x2c')][_0xa758('0x54')]({'where':{'id':_0x2d5172[_0xa758('0x46')]['id']}})[_0xa758('0x24')](handleEntityNotFound(_0x58a988,null))[_0xa758('0x24')](function(_0x5d34d0){if(_0x5d34d0){_0x20308e=_0x5d34d0;_0x4f94b0['model']=_[_0xa758('0x47')](db['User'][_0xa758('0x5c')]);_0x4f94b0['query']=_[_0xa758('0x47')](_0x2d5172[_0xa758('0x30')]);_0x4f94b0[_0xa758('0x31')]=_['intersection'](_0x4f94b0[_0xa758('0x33')],_0x4f94b0[_0xa758('0x30')]);_0x37e83a[_0xa758('0x34')]=_[_0xa758('0x32')](_0x4f94b0['model'],qs[_0xa758('0x35')](_0x2d5172[_0xa758('0x30')][_0xa758('0x35')]));_0x37e83a[_0xa758('0x34')]=_0x37e83a[_0xa758('0x34')][_0xa758('0x48')]?_0x37e83a[_0xa758('0x34')]:_0x4f94b0[_0xa758('0x33')];_0x37e83a[_0xa758('0x38')]=qs['sort'](_0x2d5172['query'][_0xa758('0x39')]);_0x37e83a[_0xa758('0x3a')]=qs[_0xa758('0x31')](_[_0xa758('0x3b')](_0x2d5172[_0xa758('0x30')],_0x4f94b0[_0xa758('0x31')]));if(_0x2d5172['query'][_0xa758('0x3c')]){_0x37e83a[_0xa758('0x3a')]=_[_0xa758('0x3d')](_0x37e83a[_0xa758('0x3a')],{'$or':_[_0xa758('0x2f')](_0x37e83a[_0xa758('0x34')],function(_0xd1fd40){var _0x2aed64={};_0x2aed64[_0xd1fd40]={'$like':'%'+_0x2d5172[_0xa758('0x30')][_0xa758('0x3c')]+'%'};return _0x2aed64;})});}_0x37e83a=_[_0xa758('0x3d')]({},_0x37e83a,_0x2d5172[_0xa758('0x40')]);return _0x20308e[_0xa758('0x7e')](_0x37e83a);}})[_0xa758('0x24')](function(_0x2bce4b){if(_0x2bce4b){_0x3b4f41=_0x2bce4b[_0xa758('0x48')];if(!_0x2d5172[_0xa758('0x30')][_0xa758('0x36')](_0xa758('0x37'))){_0x37e83a[_0xa758('0x1c')]=qs[_0xa758('0x1c')](_0x2d5172[_0xa758('0x30')][_0xa758('0x1c')]);_0x37e83a[_0xa758('0x1a')]=qs[_0xa758('0x1a')](_0x2d5172[_0xa758('0x30')][_0xa758('0x1a')]);}return _0x20308e[_0xa758('0x7e')](_0x37e83a);}})[_0xa758('0x24')](function(_0x2ab3f4){if(_0x2ab3f4){return _0x2ab3f4?{'count':_0x3b4f41,'rows':_0x2ab3f4}:null;}})[_0xa758('0x24')](respondWithResult(_0x58a988,null))[_0xa758('0x44')](handleError(_0x58a988,null));};
\ No newline at end of file
+var _0x4ee2=['remove','addAgents','isArray','Voice','Chat','Mail','Sms','Fax','Openchannel','Whatsapp','through','penalty','TeamVoiceQueue','User','Queue','emit','Queue:save','QueueId','online','upsert','isNil','interface','format','SIP/%s','all','spread','removeAgents','Queue:remove','getAgents','nolimit','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./team.socket','register','status','offset','limit','undefined','count','json','apply','reject','save','update','sendStatus','error','stack','name','index','map','Team','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','includeAll','findAll','then','rows','params','options','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','Teams','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','sequelize','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','QueryTypes','SELECT','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','Sequelize','VoiceQueueId','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','findOne','channel','toLowerCase','rawAttributes','pick','capitalize','Queues','addQueues','isValidChannel','ValidationError','Unknown\x20channel','add','ids','removeQueues'];(function(_0x128450,_0x5869ba){var _0x4d80ed=function(_0x4a2da3){while(--_0x4a2da3){_0x128450['push'](_0x128450['shift']());}};_0x4d80ed(++_0x5869ba);}(_0x4ee2,0xb6));var _0x24ee=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x4ee2[_0x178e48];return _0x440d7e;};'use strict';var emlformat=require(_0x24ee('0x0'));var rimraf=require(_0x24ee('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x24ee('0x2'));var rp=require(_0x24ee('0x3'));var moment=require(_0x24ee('0x4'));var BPromise=require(_0x24ee('0x5'));var Mustache=require(_0x24ee('0x6'));var util=require(_0x24ee('0x7'));var path=require(_0x24ee('0x8'));var sox=require(_0x24ee('0x9'));var csv=require(_0x24ee('0xa'));var ejs=require(_0x24ee('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x24ee('0xc'));var crypto=require(_0x24ee('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x24ee('0xa'));var querystring=require(_0x24ee('0xe'));var Papa=require(_0x24ee('0xf'));var Redis=require('ioredis');var authService=require(_0x24ee('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x24ee('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x24ee('0x12'))('api');var utils=require(_0x24ee('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x24ee('0x14'));var db=require('../../mysqldb')['db'];config[_0x24ee('0x15')]=_[_0x24ee('0x16')](config[_0x24ee('0x15')],{'host':_0x24ee('0x17'),'port':0x18eb});var socket=require(_0x24ee('0x18'))(new Redis(config[_0x24ee('0x15')]));require(_0x24ee('0x19'))[_0x24ee('0x1a')](socket);function respondWithStatusCode(_0x5220f6,_0x45e5e1){_0x45e5e1=_0x45e5e1||0xcc;return function(_0x35a187){if(_0x35a187){return _0x5220f6['sendStatus'](_0x45e5e1);}return _0x5220f6[_0x24ee('0x1b')](_0x45e5e1)['end']();};}function respondWithResult(_0x32c41f,_0x219fb7){_0x219fb7=_0x219fb7||0xc8;return function(_0x1c33d2){if(_0x1c33d2){return _0x32c41f[_0x24ee('0x1b')](_0x219fb7)['json'](_0x1c33d2);}};}function respondWithFilteredResult(_0x4e1d96,_0x4a0c90){return function(_0x14da49){if(_0x14da49){var _0x4ca647=typeof _0x4a0c90[_0x24ee('0x1c')]==='undefined'&&typeof _0x4a0c90[_0x24ee('0x1d')]===_0x24ee('0x1e');var _0x42a2f0=_0x14da49[_0x24ee('0x1f')];var _0x23c4f0=_0x4ca647?0x0:_0x4a0c90['offset'];var _0x6d52d0=_0x4ca647?_0x14da49[_0x24ee('0x1f')]:_0x4a0c90[_0x24ee('0x1c')]+_0x4a0c90[_0x24ee('0x1d')];var _0x10ab99;if(_0x6d52d0>=_0x42a2f0){_0x6d52d0=_0x42a2f0;_0x10ab99=0xc8;}else{_0x10ab99=0xce;}_0x4e1d96[_0x24ee('0x1b')](_0x10ab99);return _0x4e1d96['set']('Content-Range',_0x23c4f0+'-'+_0x6d52d0+'/'+_0x42a2f0)[_0x24ee('0x20')](_0x14da49);}return null;};}function patchUpdates(_0x47da1f){return function(_0x283871){try{jsonpatch[_0x24ee('0x21')](_0x283871,_0x47da1f,!![]);}catch(_0x147130){return BPromise[_0x24ee('0x22')](_0x147130);}return _0x283871[_0x24ee('0x23')]();};}function saveUpdates(_0x477c50,_0x4e7299){return function(_0x72bc52){if(_0x72bc52){return _0x72bc52[_0x24ee('0x24')](_0x477c50)['then'](function(_0x8dc0dc){return _0x8dc0dc;});}return null;};}function handleEntityNotFound(_0x5037e4,_0x4c45d3){return function(_0x4648ea){if(!_0x4648ea){_0x5037e4[_0x24ee('0x25')](0x194);}return _0x4648ea;};}function handleError(_0x539fd8,_0x466bb3){_0x466bb3=_0x466bb3||0x1f4;return function(_0x32bacb){logger[_0x24ee('0x26')](_0x32bacb[_0x24ee('0x27')]);if(_0x32bacb[_0x24ee('0x28')]){delete _0x32bacb[_0x24ee('0x28')];}_0x539fd8[_0x24ee('0x1b')](_0x466bb3)['send'](_0x32bacb);};}exports[_0x24ee('0x29')]=function(_0xb46721,_0x73e275){var _0xd4f91a={},_0x4e1adb={},_0x372822={'count':0x0,'rows':[]};var _0x39afb7=_[_0x24ee('0x2a')](db[_0x24ee('0x2b')]['rawAttributes'],function(_0x1981e7){return{'name':_0x1981e7[_0x24ee('0x2c')],'type':_0x1981e7[_0x24ee('0x2d')][_0x24ee('0x2e')]};});_0x4e1adb['model']=_[_0x24ee('0x2a')](_0x39afb7,_0x24ee('0x28'));_0x4e1adb[_0x24ee('0x2f')]=_[_0x24ee('0x30')](_0xb46721[_0x24ee('0x2f')]);_0x4e1adb[_0x24ee('0x31')]=_[_0x24ee('0x32')](_0x4e1adb[_0x24ee('0x33')],_0x4e1adb['query']);_0xd4f91a[_0x24ee('0x34')]=_[_0x24ee('0x32')](_0x4e1adb[_0x24ee('0x33')],qs[_0x24ee('0x35')](_0xb46721[_0x24ee('0x2f')][_0x24ee('0x35')]));_0xd4f91a[_0x24ee('0x34')]=_0xd4f91a[_0x24ee('0x34')][_0x24ee('0x36')]?_0xd4f91a[_0x24ee('0x34')]:_0x4e1adb[_0x24ee('0x33')];if(!_0xb46721['query'][_0x24ee('0x37')]('nolimit')){_0xd4f91a['limit']=qs[_0x24ee('0x1d')](_0xb46721[_0x24ee('0x2f')][_0x24ee('0x1d')]);_0xd4f91a[_0x24ee('0x1c')]=qs[_0x24ee('0x1c')](_0xb46721[_0x24ee('0x2f')][_0x24ee('0x1c')]);}_0xd4f91a[_0x24ee('0x38')]=qs[_0x24ee('0x39')](_0xb46721['query'][_0x24ee('0x39')]);_0xd4f91a[_0x24ee('0x3a')]=qs['filters'](_['pick'](_0xb46721[_0x24ee('0x2f')],_0x4e1adb[_0x24ee('0x31')]),_0x39afb7);if(_0xb46721[_0x24ee('0x2f')][_0x24ee('0x3b')]){_0xd4f91a['where']=_[_0x24ee('0x3c')](_0xd4f91a[_0x24ee('0x3a')],{'$or':_[_0x24ee('0x2a')](_0x39afb7,function(_0x10506a){if(_0x10506a[_0x24ee('0x2d')]!=='VIRTUAL'){var _0x19b68e={};_0x19b68e[_0x10506a[_0x24ee('0x28')]]={'$like':'%'+_0xb46721[_0x24ee('0x2f')][_0x24ee('0x3b')]+'%'};return _0x19b68e;}})});}_0xd4f91a=_[_0x24ee('0x3c')]({},_0xd4f91a,_0xb46721['options']);var _0x2f5775={'where':_0xd4f91a[_0x24ee('0x3a')]};return db[_0x24ee('0x2b')]['count'](_0x2f5775)['then'](function(_0x39e353){_0x372822[_0x24ee('0x1f')]=_0x39e353;if(_0xb46721[_0x24ee('0x2f')][_0x24ee('0x3d')]){_0xd4f91a['include']=[{'all':!![]}];}return db[_0x24ee('0x2b')][_0x24ee('0x3e')](_0xd4f91a);})[_0x24ee('0x3f')](function(_0x3b6d54){_0x372822[_0x24ee('0x40')]=_0x3b6d54;return _0x372822;})[_0x24ee('0x3f')](respondWithFilteredResult(_0x73e275,_0xd4f91a))['catch'](handleError(_0x73e275,null));};exports['show']=function(_0x10b411,_0x310c69){var _0x3435ea={'raw':![],'where':{'id':_0x10b411[_0x24ee('0x41')]['id']}},_0x51b10f={};_0x51b10f['model']=_[_0x24ee('0x30')](db[_0x24ee('0x2b')]['rawAttributes']);_0x51b10f['query']=_[_0x24ee('0x30')](_0x10b411[_0x24ee('0x2f')]);_0x51b10f[_0x24ee('0x31')]=_['intersection'](_0x51b10f[_0x24ee('0x33')],_0x51b10f['query']);_0x3435ea[_0x24ee('0x34')]=_[_0x24ee('0x32')](_0x51b10f['model'],qs[_0x24ee('0x35')](_0x10b411[_0x24ee('0x2f')]['fields']));_0x3435ea['attributes']=_0x3435ea[_0x24ee('0x34')][_0x24ee('0x36')]?_0x3435ea[_0x24ee('0x34')]:_0x51b10f[_0x24ee('0x33')];if(_0x10b411[_0x24ee('0x2f')][_0x24ee('0x3d')]){_0x3435ea['include']=[{'all':!![]}];}_0x3435ea=_[_0x24ee('0x3c')]({},_0x3435ea,_0x10b411[_0x24ee('0x42')]);return db[_0x24ee('0x2b')][_0x24ee('0x43')](_0x3435ea)['then'](handleEntityNotFound(_0x310c69,null))[_0x24ee('0x3f')](respondWithResult(_0x310c69,null))['catch'](handleError(_0x310c69,null));};exports[_0x24ee('0x44')]=function(_0x57274a,_0x2e19d8){return db[_0x24ee('0x2b')][_0x24ee('0x44')](_0x57274a[_0x24ee('0x45')],{})[_0x24ee('0x3f')](function(_0x20913d){var _0x16ffac=_0x57274a['user'][_0x24ee('0x46')]({'plain':!![]});if(!_0x16ffac)throw new Error(_0x24ee('0x47'));if(_0x16ffac['role']===_0x24ee('0x48')){var _0x533c88=_0x20913d[_0x24ee('0x46')]({'plain':!![]});var _0x256e6e=_0x24ee('0x49');return db[_0x24ee('0x4a')]['find']({'where':{'name':_0x256e6e,'userProfileId':_0x16ffac[_0x24ee('0x4b')]},'raw':!![]})[_0x24ee('0x3f')](function(_0x49d310){if(_0x49d310&&_0x49d310[_0x24ee('0x4c')]===0x0){return db[_0x24ee('0x4d')][_0x24ee('0x44')]({'name':_0x533c88['name'],'resourceId':_0x533c88['id'],'type':_0x49d310['name'],'sectionId':_0x49d310['id']},{})[_0x24ee('0x3f')](function(){return _0x20913d;});}else{return _0x20913d;}})[_0x24ee('0x4e')](function(_0x4e3f8b){logger['error'](_0x24ee('0x4f'),_0x4e3f8b);throw _0x4e3f8b;});}return _0x20913d;})[_0x24ee('0x3f')](respondWithResult(_0x2e19d8,0xc9))[_0x24ee('0x4e')](handleError(_0x2e19d8,null));};exports[_0x24ee('0x24')]=function(_0x1eaab1,_0x6dc9c6){if(_0x1eaab1[_0x24ee('0x45')]['id']){delete _0x1eaab1[_0x24ee('0x45')]['id'];}return db[_0x24ee('0x2b')][_0x24ee('0x43')]({'where':{'id':_0x1eaab1[_0x24ee('0x41')]['id']}})[_0x24ee('0x3f')](handleEntityNotFound(_0x6dc9c6,null))[_0x24ee('0x3f')](saveUpdates(_0x1eaab1[_0x24ee('0x45')],null))['then'](respondWithResult(_0x6dc9c6,null))[_0x24ee('0x4e')](handleError(_0x6dc9c6,null));};exports[_0x24ee('0x50')]=function(_0x1a0ff0,_0x5a6958){var _0x59bf8b=_0x1a0ff0['params']['id'];var _0xb62326=[];return db[_0x24ee('0x51')][_0x24ee('0x52')](function(_0x3d0f5c){var _0x3b5270=_0x24ee('0x53')+_0x59bf8b;return db['sequelize'][_0x24ee('0x2f')](_0x3b5270,{'type':db['Sequelize'][_0x24ee('0x54')][_0x24ee('0x55')],'raw':!![],'transaction':_0x3d0f5c})[_0x24ee('0x3f')](function(_0x1ca23d){_0xb62326=_[_0x24ee('0x2a')](_0x1ca23d,function(_0x422d56){return Number(_0x422d56[_0x24ee('0x56')]);});})[_0x24ee('0x3f')](function(){var _0x4cfc19=_0x24ee('0x57')+_0x59bf8b;return db[_0x24ee('0x51')][_0x24ee('0x2f')](_0x4cfc19,{'type':db[_0x24ee('0x58')]['QueryTypes'][_0x24ee('0x55')],'raw':!![],'transaction':_0x3d0f5c});})[_0x24ee('0x3f')](function(_0x2892f3){var _0x34b1be=_[_0x24ee('0x2a')](_0x2892f3,function(_0x44d3a2){return Number(_0x44d3a2[_0x24ee('0x59')]);});return db['UserVoiceQueue'][_0x24ee('0x50')]({'where':{'UserId':{'$in':_0xb62326},'VoiceQueueId':{'$in':_0x34b1be}},'transaction':_0x3d0f5c});})[_0x24ee('0x3f')](function(){var _0x2aff6d=_0x24ee('0x5a')+_0x59bf8b;return db[_0x24ee('0x51')]['query'](_0x2aff6d,{'type':db[_0x24ee('0x58')][_0x24ee('0x54')]['SELECT'],'raw':!![],'transaction':_0x3d0f5c});})['then'](function(_0x45db59){var _0x46b339=_[_0x24ee('0x2a')](_0x45db59,function(_0x53eae2){return Number(_0x53eae2[_0x24ee('0x5b')]);});return db[_0x24ee('0x5c')][_0x24ee('0x50')]({'where':{'UserId':{'$in':_0xb62326},'MailQueueId':{'$in':_0x46b339}},'transaction':_0x3d0f5c});})[_0x24ee('0x3f')](function(){var _0x1dca81=_0x24ee('0x5d')+_0x59bf8b;return db['sequelize']['query'](_0x1dca81,{'type':db[_0x24ee('0x58')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x3d0f5c});})[_0x24ee('0x3f')](function(_0x5ab22e){var _0x1021c9=_[_0x24ee('0x2a')](_0x5ab22e,function(_0x59498f){return Number(_0x59498f['SmsQueueId']);});return db[_0x24ee('0x5e')][_0x24ee('0x50')]({'where':{'UserId':{'$in':_0xb62326},'SmsQueueId':{'$in':_0x1021c9}},'transaction':_0x3d0f5c});})[_0x24ee('0x3f')](function(){var _0x4a161e=_0x24ee('0x5f')+_0x59bf8b;return db[_0x24ee('0x51')][_0x24ee('0x2f')](_0x4a161e,{'type':db['Sequelize'][_0x24ee('0x54')][_0x24ee('0x55')],'raw':!![],'transaction':_0x3d0f5c});})[_0x24ee('0x3f')](function(_0x3a0087){var _0x413adb=_['map'](_0x3a0087,function(_0x864f03){return Number(_0x864f03['ChatQueueId']);});return db[_0x24ee('0x60')][_0x24ee('0x50')]({'where':{'UserId':{'$in':_0xb62326},'ChatQueueId':{'$in':_0x413adb}},'transaction':_0x3d0f5c});})['then'](function(){var _0x2ccd01=_0x24ee('0x61')+_0x59bf8b;return db[_0x24ee('0x51')]['query'](_0x2ccd01,{'type':db[_0x24ee('0x58')][_0x24ee('0x54')][_0x24ee('0x55')],'raw':!![],'transaction':_0x3d0f5c});})['then'](function(_0x539f76){var _0xca3d6=_[_0x24ee('0x2a')](_0x539f76,function(_0x1ed317){return Number(_0x1ed317[_0x24ee('0x62')]);});return db[_0x24ee('0x63')]['destroy']({'where':{'UserId':{'$in':_0xb62326},'FaxQueueId':{'$in':_0xca3d6}},'transaction':_0x3d0f5c});})[_0x24ee('0x3f')](function(){var _0x46d6bc='SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20'+_0x59bf8b;return db[_0x24ee('0x51')]['query'](_0x46d6bc,{'type':db['Sequelize']['QueryTypes'][_0x24ee('0x55')],'raw':!![],'transaction':_0x3d0f5c});})[_0x24ee('0x3f')](function(_0x59fce3){var _0x1073e0=_[_0x24ee('0x2a')](_0x59fce3,function(_0x2e331d){return Number(_0x2e331d[_0x24ee('0x64')]);});return db[_0x24ee('0x65')]['destroy']({'where':{'UserId':{'$in':_0xb62326},'OpenchannelQueueId':{'$in':_0x1073e0}},'transaction':_0x3d0f5c});})[_0x24ee('0x3f')](function(){var _0x574dfc=_0x24ee('0x66')+_0x59bf8b;return db['sequelize']['query'](_0x574dfc,{'type':db[_0x24ee('0x58')][_0x24ee('0x54')][_0x24ee('0x55')],'raw':!![],'transaction':_0x3d0f5c});})[_0x24ee('0x3f')](function(_0x3b8219){var _0x564098=_[_0x24ee('0x2a')](_0x3b8219,function(_0x1a36df){return Number(_0x1a36df[_0x24ee('0x67')]);});return db[_0x24ee('0x68')][_0x24ee('0x50')]({'where':{'UserId':{'$in':_0xb62326},'WhatsappQueueId':{'$in':_0x564098}},'transaction':_0x3d0f5c});})[_0x24ee('0x3f')](function(){return db[_0x24ee('0x69')][_0x24ee('0x43')]({'where':{'TeamId':_0x59bf8b}});})[_0x24ee('0x3f')](function(_0x282650){if(_0x282650===null){return;}return db[_0x24ee('0x6a')][_0x24ee('0x50')]({'where':{'UserId':{'$in':_0xb62326},'VoicePrefixId':_0x282650[_0x24ee('0x6b')]},'transaction':_0x3d0f5c});})[_0x24ee('0x3f')](function(){return db['Team']['destroy']({'where':{'id':_0x59bf8b},'cascade':!![],'transaction':_0x3d0f5c});})['then'](function(_0x21e7d5){if(_0x21e7d5===0x0){_0x5a6958[_0x24ee('0x25')](0x194);}else{return db[_0x24ee('0x4d')]['destroy']({'where':{'type':_0x24ee('0x49'),'resourceId':_0x59bf8b},'cascade':!![],'transaction':_0x3d0f5c})[_0x24ee('0x3f')](function(){_0x5a6958[_0x24ee('0x1b')](0xcc)['end']();});}})[_0x24ee('0x4e')](function(_0x320b43){_0x5a6958['status'](0x1f4)['send'](_0x320b43);});});};exports['getQueues']=function(_0x9fc332,_0x295803,_0x3577ac){return db[_0x24ee('0x2b')][_0x24ee('0x6c')]({'where':{'id':_0x9fc332[_0x24ee('0x41')]['id']}})['then'](handleEntityNotFound(_0x295803,null))[_0x24ee('0x3f')](function(_0x531a8c){if(!_0x9fc332[_0x24ee('0x2f')]['channel']||!utils['isValidChannel'](_0x9fc332[_0x24ee('0x2f')][_0x24ee('0x6d')])){throw new db[(_0x24ee('0x58'))]['ValidationError']('Unknown\x20channel');}var _0x3cc9b9={};var _0x237985={};_0x237985['model']=_[_0x24ee('0x30')](db[_['capitalize'](_0x9fc332[_0x24ee('0x2f')][_0x24ee('0x6d')][_0x24ee('0x6e')]())+'Queue'][_0x24ee('0x6f')]);_0x237985['query']=_['keys'](_0x9fc332[_0x24ee('0x2f')]);_0x237985[_0x24ee('0x31')]=_[_0x24ee('0x32')](_0x237985[_0x24ee('0x33')],_0x237985[_0x24ee('0x2f')]);_0x3cc9b9['attributes']=_[_0x24ee('0x32')](_0x237985['model'],qs['fields'](_0x9fc332[_0x24ee('0x2f')][_0x24ee('0x35')]));_0x3cc9b9[_0x24ee('0x34')]=_0x3cc9b9[_0x24ee('0x34')][_0x24ee('0x36')]?_0x3cc9b9['attributes']:_0x237985[_0x24ee('0x33')];_0x3cc9b9['limit']=qs[_0x24ee('0x1d')](_0x9fc332[_0x24ee('0x2f')]['limit']);_0x3cc9b9[_0x24ee('0x1c')]=qs['offset'](_0x9fc332[_0x24ee('0x2f')][_0x24ee('0x1c')]);_0x3cc9b9[_0x24ee('0x38')]=qs[_0x24ee('0x39')](_0x9fc332['query']['sort']);_0x3cc9b9[_0x24ee('0x3a')]=qs[_0x24ee('0x31')](_[_0x24ee('0x70')](_0x9fc332[_0x24ee('0x2f')],_0x237985[_0x24ee('0x31')]));_0x3cc9b9=_[_0x24ee('0x3c')]({},_0x3cc9b9,_0x9fc332[_0x24ee('0x42')]);return _0x531a8c['get'+_[_0x24ee('0x71')](_0x9fc332[_0x24ee('0x2f')]['channel']['toLowerCase']())+_0x24ee('0x72')](_0x3cc9b9);})[_0x24ee('0x3f')](respondWithResult(_0x295803,null))['catch'](handleError(_0x295803,null));};exports[_0x24ee('0x73')]=function(_0x4d9c4e,_0x2e38d1,_0x4f971c){return db['Team'][_0x24ee('0x6c')]({'where':{'id':_0x4d9c4e['params']['id']}})[_0x24ee('0x3f')](function(_0x39f06d){if(_0x39f06d){if(!_0x4d9c4e[_0x24ee('0x45')]['channel']||!utils[_0x24ee('0x74')](_0x4d9c4e[_0x24ee('0x45')][_0x24ee('0x6d')])){throw new db[(_0x24ee('0x58'))][(_0x24ee('0x75'))](_0x24ee('0x76'));}return _0x39f06d[_0x24ee('0x77')+_['capitalize'](_0x4d9c4e[_0x24ee('0x45')][_0x24ee('0x6d')][_0x24ee('0x6e')]())+_0x24ee('0x72')](_0x4d9c4e['body'][_0x24ee('0x78')]);}return null;})['then'](handleEntityNotFound(_0x2e38d1,null))[_0x24ee('0x3f')](respondWithStatusCode(_0x2e38d1,null))['catch'](handleError(_0x2e38d1,null));};exports[_0x24ee('0x79')]=function(_0x5e558b,_0x40d417,_0x14202f){return db['Team'][_0x24ee('0x6c')]({'where':{'id':_0x5e558b[_0x24ee('0x41')]['id']}})[_0x24ee('0x3f')](function(_0x469543){if(_0x469543){if(!_0x5e558b[_0x24ee('0x2f')][_0x24ee('0x6d')]||!utils[_0x24ee('0x74')](_0x5e558b[_0x24ee('0x2f')]['channel'])){throw new db[(_0x24ee('0x58'))][(_0x24ee('0x75'))](_0x24ee('0x76'));}return _0x469543[_0x24ee('0x7a')+_[_0x24ee('0x71')](_0x5e558b[_0x24ee('0x2f')][_0x24ee('0x6d')]['toLowerCase']())+'Queues'](_0x5e558b[_0x24ee('0x2f')][_0x24ee('0x78')]);}return null;})['then'](handleEntityNotFound(_0x40d417,null))[_0x24ee('0x3f')](respondWithStatusCode(_0x40d417,null))[_0x24ee('0x4e')](handleError(_0x40d417,null));};exports[_0x24ee('0x7b')]=function(_0x5e254c,_0x7c7ddd){var _0x1736a1=_[_0x24ee('0x7c')](_0x5e254c[_0x24ee('0x45')][_0x24ee('0x78')])?_0x5e254c['body'][_0x24ee('0x78')]:[_0x5e254c['body'][_0x24ee('0x78')]];var _0x4b513b=_0x5e254c[_0x24ee('0x41')]['id'];return db[_0x24ee('0x2b')][_0x24ee('0x43')]({'where':{'id':_0x4b513b}})[_0x24ee('0x3f')](handleEntityNotFound(_0x7c7ddd,null))['then'](function(_0x4c8f2e){if(_0x4c8f2e){var _0x3c4a13=[_0x24ee('0x7d'),_0x24ee('0x7e'),_0x24ee('0x7f'),_0x24ee('0x80'),_0x24ee('0x81'),_0x24ee('0x82'),_0x24ee('0x83')];return db[_0x24ee('0x51')][_0x24ee('0x52')](function(_0x3c95c0){var _0x2517c0=_[_0x24ee('0x2a')](_0x3c4a13,function(_0x14e63a){var _0x1b29f2={'attributes':['id',_0x24ee('0x28')]};if(_0x14e63a==='Voice'){_0x1b29f2[_0x24ee('0x84')]={'attributes':[_0x24ee('0x85')]};}return _0x4c8f2e[_0x24ee('0x46')+_0x14e63a+_0x24ee('0x72')](_0x1b29f2)[_0x24ee('0x3f')](function(_0x3f3837){var _0x2048ba=_[_0x24ee('0x2a')](_0x3f3837,function(_0xbe8d54){var _0x1f9ad1=_[_0x24ee('0x2a')](_0x1736a1,function(_0x363f00){var _0x2deb22={'where':{'UserId':_0x363f00,[_0x14e63a+'QueueId']:_0xbe8d54['id']},'transaction':_0x3c95c0};if(_0x14e63a===_0x24ee('0x7d')){_0x2deb22['defaults']={'penalty':_0xbe8d54[_0x24ee('0x86')][_0x24ee('0x85')]};}return db[_0x24ee('0x87')+_0x14e63a+_0x24ee('0x88')]['findOrCreate'](_0x2deb22)['then'](function(){socket[_0x24ee('0x89')](_0x24ee('0x48')+_0x14e63a+_0x24ee('0x8a'),{'UserId':_0x363f00,[_0x14e63a+_0x24ee('0x8b')]:_0xbe8d54['id']});if(_0x14e63a!==_0x24ee('0x7d')){return;}return db['User'][_0x24ee('0x3e')]({'where':{'id':_0x1736a1,'online':0x1},'attributes':['id',_0x24ee('0x28'),_0x24ee('0x8c'),'voicePause','interface'],'raw':!![]})[_0x24ee('0x3f')](function(_0x2e0f86){var _0x2250b7=_[_0x24ee('0x2a')](_0x2e0f86,function(_0x594234){return db['UserVoiceQueueRt'][_0x24ee('0x8d')]({'membername':_0x594234[_0x24ee('0x28')],'UserId':_0x594234['id'],'queue_name':_0xbe8d54['name'],'VoiceQueueId':_0xbe8d54['id'],'interface':_[_0x24ee('0x8e')](_0x594234[_0x24ee('0x8f')])?util[_0x24ee('0x90')](_0x24ee('0x91'),_0x594234[_0x24ee('0x28')]):_0x594234['interface'],'paused':_0x594234['voicePause']||![],'penalty':_0xbe8d54['TeamVoiceQueue'][_0x24ee('0x85')]},{'transaction':_0x3c95c0});});return Promise[_0x24ee('0x92')](_0x2250b7);});});});return Promise[_0x24ee('0x92')](_0x1f9ad1);});return Promise[_0x24ee('0x92')](_0x2048ba);})[_0x24ee('0x3f')](function(){return db['TeamVoicePrefix'][_0x24ee('0x6c')]({'where':{'teamId':_0x4b513b}})[_0x24ee('0x3f')](function(_0x4ae1e3){if(_0x4ae1e3){var _0x21d1f2=_['map'](_0x1736a1,function(_0x5cd894){db[_0x24ee('0x6a')][_0x24ee('0x8d')]({'UserId':_0x5cd894,'VoicePrefixId':_0x4ae1e3[_0x24ee('0x6b')]});});return Promise[_0x24ee('0x92')](_0x21d1f2);}});});});return Promise[_0x24ee('0x92')](_0x2517c0)[_0x24ee('0x3f')](function(){return _0x4c8f2e[_0x24ee('0x7b')](_0x1736a1,{'transaction':_0x3c95c0})[_0x24ee('0x93')](function(_0x6f0a50){return _0x6f0a50;});});});}})[_0x24ee('0x3f')](respondWithResult(_0x7c7ddd,null))['catch'](handleError(_0x7c7ddd,null));};exports[_0x24ee('0x94')]=function(_0x4f7891,_0x57d3a2){var _0x2d8d2d=_[_0x24ee('0x7c')](_0x4f7891[_0x24ee('0x2f')][_0x24ee('0x78')])?_0x4f7891[_0x24ee('0x2f')][_0x24ee('0x78')]:[_0x4f7891[_0x24ee('0x2f')][_0x24ee('0x78')]];var _0x21e996=_0x4f7891[_0x24ee('0x41')]['id'];return db[_0x24ee('0x2b')][_0x24ee('0x43')]({'where':{'id':_0x21e996}})[_0x24ee('0x3f')](handleEntityNotFound(_0x57d3a2,null))[_0x24ee('0x3f')](function(_0x2f2a1c){if(_0x2f2a1c){var _0x257ae6=['Voice','Chat',_0x24ee('0x7f'),_0x24ee('0x80'),_0x24ee('0x81'),'Openchannel',_0x24ee('0x83')];return db[_0x24ee('0x51')][_0x24ee('0x52')](function(_0x2fb5f2){var _0xf353e9=_[_0x24ee('0x2a')](_0x257ae6,function(_0xaf345d){var _0x2d1cb8={'attributes':['id',_0x24ee('0x28')]};return _0x2f2a1c[_0x24ee('0x46')+_0xaf345d+_0x24ee('0x72')](_0x2d1cb8)['then'](function(_0x4f2bfb){var _0x884dda=_['map'](_0x4f2bfb,function(_0x3c2c9d){return _0x3c2c9d[_0x24ee('0x94')](_0x2d8d2d,{'transaction':_0x2fb5f2})[_0x24ee('0x3f')](function(){var _0x945583=_[_0x24ee('0x2a')](_0x2d8d2d,function(_0x18b79c){socket['emit'](_0x24ee('0x48')+_0xaf345d+_0x24ee('0x95'),{'UserId':Number(_0x18b79c),[_0xaf345d+_0x24ee('0x8b')]:_0x3c2c9d['id']});if(_0xaf345d!==_0x24ee('0x7d')){return;}return db['UserVoiceQueueRt'][_0x24ee('0x50')]({'where':{'VoiceQueueId':_0x3c2c9d['id'],'UserId':_0x18b79c},'transaction':_0x2fb5f2});});return Promise[_0x24ee('0x92')](_0x945583);});});return Promise[_0x24ee('0x92')](_0x884dda);});});return Promise[_0x24ee('0x92')](_0xf353e9)[_0x24ee('0x3f')](function(){return _0x2f2a1c[_0x24ee('0x94')](_0x2d8d2d,{'transaction':_0x2fb5f2});})[_0x24ee('0x3f')](function(){return db[_0x24ee('0x69')][_0x24ee('0x6c')]({'where':{'teamId':_0x21e996}})[_0x24ee('0x3f')](function(_0xa901b4){if(_0xa901b4){var _0x5ac366=_[_0x24ee('0x2a')](_0x2d8d2d,function(_0x5ca8b0){db[_0x24ee('0x6a')][_0x24ee('0x50')]({'where':{'UserId':_0x5ca8b0,'VoicePrefixId':_0xa901b4['VoicePrefixId']}});});return Promise[_0x24ee('0x92')](_0x5ac366);}});});});}})[_0x24ee('0x3f')](respondWithStatusCode(_0x57d3a2,null))[_0x24ee('0x4e')](handleError(_0x57d3a2,null));};exports[_0x24ee('0x96')]=function(_0x229217,_0x1c5c51,_0x5ad13b){var _0x29ff4e={};var _0x273a5d={};var _0xa478fa;var _0x4d942e;return db[_0x24ee('0x2b')][_0x24ee('0x6c')]({'where':{'id':_0x229217[_0x24ee('0x41')]['id']}})[_0x24ee('0x3f')](handleEntityNotFound(_0x1c5c51,null))[_0x24ee('0x3f')](function(_0x4bc2b8){if(_0x4bc2b8){_0xa478fa=_0x4bc2b8;_0x273a5d[_0x24ee('0x33')]=_[_0x24ee('0x30')](db[_0x24ee('0x87')][_0x24ee('0x6f')]);_0x273a5d['query']=_[_0x24ee('0x30')](_0x229217[_0x24ee('0x2f')]);_0x273a5d[_0x24ee('0x31')]=_[_0x24ee('0x32')](_0x273a5d[_0x24ee('0x33')],_0x273a5d[_0x24ee('0x2f')]);_0x29ff4e[_0x24ee('0x34')]=_[_0x24ee('0x32')](_0x273a5d['model'],qs[_0x24ee('0x35')](_0x229217['query'][_0x24ee('0x35')]));_0x29ff4e[_0x24ee('0x34')]=_0x29ff4e[_0x24ee('0x34')]['length']?_0x29ff4e['attributes']:_0x273a5d[_0x24ee('0x33')];_0x29ff4e[_0x24ee('0x38')]=qs[_0x24ee('0x39')](_0x229217[_0x24ee('0x2f')][_0x24ee('0x39')]);_0x29ff4e[_0x24ee('0x3a')]=qs['filters'](_['pick'](_0x229217['query'],_0x273a5d[_0x24ee('0x31')]));if(_0x229217[_0x24ee('0x2f')][_0x24ee('0x3b')]){_0x29ff4e['where']=_[_0x24ee('0x3c')](_0x29ff4e[_0x24ee('0x3a')],{'$or':_[_0x24ee('0x2a')](_0x29ff4e[_0x24ee('0x34')],function(_0x16b919){var _0x3b1659={};_0x3b1659[_0x16b919]={'$like':'%'+_0x229217[_0x24ee('0x2f')][_0x24ee('0x3b')]+'%'};return _0x3b1659;})});}_0x29ff4e=_[_0x24ee('0x3c')]({},_0x29ff4e,_0x229217[_0x24ee('0x42')]);return _0xa478fa['getAgents'](_0x29ff4e);}})[_0x24ee('0x3f')](function(_0x5a4360){if(_0x5a4360){_0x4d942e=_0x5a4360[_0x24ee('0x36')];if(!_0x229217[_0x24ee('0x2f')][_0x24ee('0x37')](_0x24ee('0x97'))){_0x29ff4e[_0x24ee('0x1d')]=qs[_0x24ee('0x1d')](_0x229217[_0x24ee('0x2f')][_0x24ee('0x1d')]);_0x29ff4e[_0x24ee('0x1c')]=qs[_0x24ee('0x1c')](_0x229217['query']['offset']);}return _0xa478fa[_0x24ee('0x96')](_0x29ff4e);}})[_0x24ee('0x3f')](function(_0x4981b8){if(_0x4981b8){return _0x4981b8?{'count':_0x4d942e,'rows':_0x4981b8}:null;}})['then'](respondWithResult(_0x1c5c51,null))[_0x24ee('0x4e')](handleError(_0x1c5c51,null));};
\ No newline at end of file
index 3a1ba5b..b54d17a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0615=['exports','Team','setMaxListeners','remove','emit'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x0615,0x150));var _0x5061=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x0615[_0x501510];return _0x1e6ee5;};'use strict';var EventEmitter=require('events');var Team=require('../../mysqldb')['db'][_0x5061('0x0')];var TeamEvents=new EventEmitter();TeamEvents[_0x5061('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x5061('0x2')};function emitEvent(_0x4e2e45){return function(_0x81b87a,_0x43c017,_0x4019a9){TeamEvents[_0x5061('0x3')](_0x4e2e45+':'+_0x81b87a['id'],_0x81b87a);TeamEvents[_0x5061('0x3')](_0x4e2e45,_0x81b87a);_0x4019a9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module[_0x5061('0x4')]=TeamEvents;
\ No newline at end of file
+var _0x8790=['../../mysqldb','Team','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x3dc17a,_0x2f8fe0){var _0x132f34=function(_0x5b0394){while(--_0x5b0394){_0x3dc17a['push'](_0x3dc17a['shift']());}};_0x132f34(++_0x2f8fe0);}(_0x8790,0x1e9));var _0x0879=function(_0x2935d5,_0xf09a92){_0x2935d5=_0x2935d5-0x0;var _0x1f764f=_0x8790[_0x2935d5];return _0x1f764f;};'use strict';var EventEmitter=require(_0x0879('0x0'));var Team=require(_0x0879('0x1'))['db'][_0x0879('0x2')];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0879('0x3'),'afterUpdate':_0x0879('0x4'),'afterDestroy':_0x0879('0x5')};function emitEvent(_0x539059){return function(_0x21dea2,_0x364cf9,_0x2f475c){TeamEvents[_0x0879('0x6')](_0x539059+':'+_0x21dea2['id'],_0x21dea2);TeamEvents[_0x0879('0x6')](_0x539059,_0x21dea2);_0x2f475c(null);};}for(var e in events){if(events[_0x0879('0x7')](e)){var event=events[e];Team[_0x0879('0x8')](e,emitEvent(event));}}module[_0x0879('0x9')]=TeamEvents;
\ No newline at end of file
index 746158e..4607ba9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7033=['path','rimraf','../../config/environment','./team.attributes','exports','define','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x4ab78d,_0x3c0907){var _0x2087a2=function(_0x54a082){while(--_0x54a082){_0x4ab78d['push'](_0x4ab78d['shift']());}};_0x2087a2(++_0x3c0907);}(_0x7033,0x19e));var _0x3703=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x7033[_0x199572];return _0x13cfa3;};'use strict';var _=require(_0x3703('0x0'));var util=require(_0x3703('0x1'));var logger=require(_0x3703('0x2'))(_0x3703('0x3'));var moment=require('moment');var BPromise=require(_0x3703('0x4'));var rp=require(_0x3703('0x5'));var fs=require('fs');var path=require(_0x3703('0x6'));var rimraf=require(_0x3703('0x7'));var config=require(_0x3703('0x8'));var attributes=require(_0x3703('0x9'));module[_0x3703('0xa')]=function(_0x283af9,_0x1170b6){return _0x283af9[_0x3703('0xb')]('Team',attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbe15=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./team.attributes','exports','Team','teams','lodash','util'];(function(_0x34e9d6,_0x3889cf){var _0x47f6b3=function(_0x131d0c){while(--_0x131d0c){_0x34e9d6['push'](_0x34e9d6['shift']());}};_0x47f6b3(++_0x3889cf);}(_0xbe15,0x184));var _0x5be1=function(_0x53b859,_0x47451d){_0x53b859=_0x53b859-0x0;var _0x2b6c7f=_0xbe15[_0x53b859];return _0x2b6c7f;};'use strict';var _=require(_0x5be1('0x0'));var util=require(_0x5be1('0x1'));var logger=require(_0x5be1('0x2'))(_0x5be1('0x3'));var moment=require(_0x5be1('0x4'));var BPromise=require('bluebird');var rp=require(_0x5be1('0x5'));var fs=require('fs');var path=require(_0x5be1('0x6'));var rimraf=require(_0x5be1('0x7'));var config=require(_0x5be1('0x8'));var attributes=require(_0x5be1('0x9'));module[_0x5be1('0xa')]=function(_0x1392ac,_0x39c684){return _0x1392ac['define'](_0x5be1('0xb'),attributes,{'tableName':_0x5be1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7a8ce28..13efcde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6725=['result','lodash','util','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./team.socket','request','then','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','message','info'];(function(_0x1207cf,_0x559791){var _0x4d19fc=function(_0x4ca653){while(--_0x4ca653){_0x1207cf['push'](_0x1207cf['shift']());}};_0x4d19fc(++_0x559791);}(_0x6725,0x1b6));var _0x5672=function(_0x2c616b,_0x49926d){_0x2c616b=_0x2c616b-0x0;var _0x53b6be=_0x6725[_0x2c616b];return _0x53b6be;};'use strict';var _=require(_0x5672('0x0'));var util=require(_0x5672('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5672('0x2'));var db=require(_0x5672('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x5672('0x4'))('rpc');var config=require(_0x5672('0x5'));var jayson=require(_0x5672('0x6'));var client=jayson['client']['http']({'port':0x232a});config[_0x5672('0x7')]=_[_0x5672('0x8')](config[_0x5672('0x7')],{'host':_0x5672('0x9'),'port':0x18eb});var socket=require(_0x5672('0xa'))(new Redis(config[_0x5672('0x7')]));require(_0x5672('0xb'))['register'](socket);function respondWithRpcPromise(_0x409def,_0x454047,_0x251372){return new BPromise(function(_0xf95b10,_0x1e6d26){return client[_0x5672('0xc')](_0x409def,_0x251372)[_0x5672('0xd')](function(_0x2fe84a){logger['info'](_0x5672('0xe'),_0x454047,_0x5672('0xf'));logger[_0x5672('0x10')](_0x5672('0x11'),_0x454047,_0x5672('0xf'),JSON[_0x5672('0x12')](_0x2fe84a));if(_0x2fe84a[_0x5672('0x13')]){if(_0x2fe84a['error']['code']===0x1f4){logger[_0x5672('0x13')](_0x5672('0xe'),_0x454047,_0x2fe84a['error'][_0x5672('0x14')]);return _0x1e6d26(_0x2fe84a[_0x5672('0x13')][_0x5672('0x14')]);}logger['error']('Team,\x20%s,\x20%s',_0x454047,_0x2fe84a[_0x5672('0x13')][_0x5672('0x14')]);return _0xf95b10(_0x2fe84a['error'][_0x5672('0x14')]);}else{logger[_0x5672('0x15')](_0x5672('0xe'),_0x454047,_0x5672('0xf'));_0xf95b10(_0x2fe84a[_0x5672('0x16')][_0x5672('0x14')]);}})['catch'](function(_0x18fa20){logger[_0x5672('0x13')](_0x5672('0xe'),_0x454047,_0x18fa20);_0x1e6d26(_0x18fa20);});});}
\ No newline at end of file
+var _0xe701=['error','code','message','Team,\x20%s,\x20%s','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','defaults','redis','localhost','./team.socket','then','info','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x41a3fc,_0x33f042){var _0x104742=function(_0x580903){while(--_0x580903){_0x41a3fc['push'](_0x41a3fc['shift']());}};_0x104742(++_0x33f042);}(_0xe701,0x12e));var _0x1e70=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xe701[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x1e70('0x0'));var util=require(_0x1e70('0x1'));var moment=require(_0x1e70('0x2'));var BPromise=require(_0x1e70('0x3'));var rs=require(_0x1e70('0x4'));var fs=require('fs');var Redis=require(_0x1e70('0x5'));var db=require(_0x1e70('0x6'))['db'];var utils=require(_0x1e70('0x7'));var logger=require('../../config/logger')(_0x1e70('0x8'));var config=require(_0x1e70('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x1e70('0xa')][_0x1e70('0xb')]({'port':0x232a});config['redis']=_[_0x1e70('0xc')](config[_0x1e70('0xd')],{'host':_0x1e70('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1e70('0xd')]));require(_0x1e70('0xf'))['register'](socket);function respondWithRpcPromise(_0x2fe227,_0x3f8f20,_0x2e14e3){return new BPromise(function(_0x30cd14,_0x251917){return client['request'](_0x2fe227,_0x2e14e3)[_0x1e70('0x10')](function(_0x4b3213){logger[_0x1e70('0x11')]('Team,\x20%s,\x20%s',_0x3f8f20,_0x1e70('0x12'));logger[_0x1e70('0x13')](_0x1e70('0x14'),_0x3f8f20,_0x1e70('0x12'),JSON[_0x1e70('0x15')](_0x4b3213));if(_0x4b3213[_0x1e70('0x16')]){if(_0x4b3213[_0x1e70('0x16')][_0x1e70('0x17')]===0x1f4){logger['error']('Team,\x20%s,\x20%s',_0x3f8f20,_0x4b3213['error'][_0x1e70('0x18')]);return _0x251917(_0x4b3213[_0x1e70('0x16')][_0x1e70('0x18')]);}logger[_0x1e70('0x16')](_0x1e70('0x19'),_0x3f8f20,_0x4b3213[_0x1e70('0x16')][_0x1e70('0x18')]);return _0x30cd14(_0x4b3213[_0x1e70('0x16')][_0x1e70('0x18')]);}else{logger[_0x1e70('0x11')](_0x1e70('0x19'),_0x3f8f20,_0x1e70('0x12'));_0x30cd14(_0x4b3213[_0x1e70('0x1a')][_0x1e70('0x18')]);}})['catch'](function(_0x3b4a8f){logger[_0x1e70('0x16')](_0x1e70('0x19'),_0x3f8f20,_0x3b4a8f);_0x251917(_0x3b4a8f);});});}
\ No newline at end of file
index 570d640..de4f92a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbde=['team:','./team.events','remove','update','removeListener'];(function(_0x30784e,_0x44bd49){var _0x38893c=function(_0x349ef1){while(--_0x349ef1){_0x30784e['push'](_0x30784e['shift']());}};_0x38893c(++_0x44bd49);}(_0xcbde,0x141));var _0xecbd=function(_0x1d8f7a,_0x4a43ae){_0x1d8f7a=_0x1d8f7a-0x0;var _0x513b75=_0xcbde[_0x1d8f7a];return _0x513b75;};'use strict';var TeamEvents=require(_0xecbd('0x0'));var events=['save',_0xecbd('0x1'),_0xecbd('0x2')];function createListener(_0x2716db,_0x456f7f){return function(_0x1a4c26){_0x456f7f['emit'](_0x2716db,_0x1a4c26);};}function removeListener(_0x4ba743,_0x12470a){return function(){TeamEvents[_0xecbd('0x3')](_0x4ba743,_0x12470a);};}exports['register']=function(_0x25b899){for(var _0x27a04d=0x0,_0x545ca6=events['length'];_0x27a04d<_0x545ca6;_0x27a04d++){var _0x2947a0=events[_0x27a04d];var _0x3e9e7a=createListener(_0xecbd('0x4')+_0x2947a0,_0x25b899);TeamEvents['on'](_0x2947a0,_0x3e9e7a);}};
\ No newline at end of file
+var _0xb8c3=['emit','removeListener','register','./team.events','save','remove','update'];(function(_0xe40956,_0x301d5d){var _0xc5a198=function(_0x41e32e){while(--_0x41e32e){_0xe40956['push'](_0xe40956['shift']());}};_0xc5a198(++_0x301d5d);}(_0xb8c3,0x9d));var _0x3b8c=function(_0x26a9ea,_0x10ecba){_0x26a9ea=_0x26a9ea-0x0;var _0x3bc99d=_0xb8c3[_0x26a9ea];return _0x3bc99d;};'use strict';var TeamEvents=require(_0x3b8c('0x0'));var events=[_0x3b8c('0x1'),_0x3b8c('0x2'),_0x3b8c('0x3')];function createListener(_0x47b036,_0x22987e){return function(_0x46f99b){_0x22987e[_0x3b8c('0x4')](_0x47b036,_0x46f99b);};}function removeListener(_0x654ae9,_0x37b19f){return function(){TeamEvents[_0x3b8c('0x5')](_0x654ae9,_0x37b19f);};}exports[_0x3b8c('0x6')]=function(_0x5f1cae){for(var _0x5cec52=0x0,_0x48f946=events['length'];_0x5cec52<_0x48f946;_0x5cec52++){var _0x503953=events[_0x5cec52];var _0x58c96f=createListener('team:'+_0x503953,_0x5f1cae);TeamEvents['on'](_0x503953,_0x58c96f);}};
\ No newline at end of file
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3509=['../../config/environment','define','lodash','util','../../config/logger','moment','request-promise','path','rimraf'];(function(_0x3e898b,_0x1cd2d4){var _0x251759=function(_0x8d2c0){while(--_0x8d2c0){_0x3e898b['push'](_0x3e898b['shift']());}};_0x251759(++_0x1cd2d4);}(_0x3509,0x197));var _0x9350=function(_0x1702e1,_0x3a8949){_0x1702e1=_0x1702e1-0x0;var _0x2bdc8c=_0x3509[_0x1702e1];return _0x2bdc8c;};'use strict';var _=require(_0x9350('0x0'));var util=require(_0x9350('0x1'));var logger=require(_0x9350('0x2'))('api');var moment=require(_0x9350('0x3'));var BPromise=require('bluebird');var rp=require(_0x9350('0x4'));var fs=require('fs');var path=require(_0x9350('0x5'));var rimraf=require(_0x9350('0x6'));var config=require(_0x9350('0x7'));;module['exports']=function(_0x5781f8,_0x372fe5){return _0x5781f8[_0x9350('0x8')]('Realtime',[],{});};
\ No newline at end of file
+var _0x8d53=['sequelize','exports','INTEGER'];(function(_0x1d5238,_0x20fe86){var _0xa508fb=function(_0xfac435){while(--_0xfac435){_0x1d5238['push'](_0x1d5238['shift']());}};_0xa508fb(++_0x20fe86);}(_0x8d53,0x1c2));var _0x38d5=function(_0x343f8b,_0x2af219){_0x343f8b=_0x343f8b-0x0;var _0x174c2b=_0x8d53[_0x343f8b];return _0x174c2b;};'use strict';var Sequelize=require(_0x38d5('0x0'));module[_0x38d5('0x1')]={'TeamId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x38d5('0x2')]}};
\ No newline at end of file
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3509=['../../config/environment','define','lodash','util','../../config/logger','moment','request-promise','path','rimraf'];(function(_0x3e898b,_0x1cd2d4){var _0x251759=function(_0x8d2c0){while(--_0x8d2c0){_0x3e898b['push'](_0x3e898b['shift']());}};_0x251759(++_0x1cd2d4);}(_0x3509,0x197));var _0x9350=function(_0x1702e1,_0x3a8949){_0x1702e1=_0x1702e1-0x0;var _0x2bdc8c=_0x3509[_0x1702e1];return _0x2bdc8c;};'use strict';var _=require(_0x9350('0x0'));var util=require(_0x9350('0x1'));var logger=require(_0x9350('0x2'))('api');var moment=require(_0x9350('0x3'));var BPromise=require('bluebird');var rp=require(_0x9350('0x4'));var fs=require('fs');var path=require(_0x9350('0x5'));var rimraf=require(_0x9350('0x6'));var config=require(_0x9350('0x7'));;module['exports']=function(_0x5781f8,_0x372fe5){return _0x5781f8[_0x9350('0x8')]('Realtime',[],{});};
\ No newline at end of file
+var _0x0ffc=['./teamVoicePrefix.attributes','exports','define','team_has_voice_prefixes','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x29210d,_0x45648b){var _0x4a66e6=function(_0x1ec623){while(--_0x1ec623){_0x29210d['push'](_0x29210d['shift']());}};_0x4a66e6(++_0x45648b);}(_0x0ffc,0x9e));var _0xc0ff=function(_0x5e64f6,_0x45b5eb){_0x5e64f6=_0x5e64f6-0x0;var _0x19f3af=_0x0ffc[_0x5e64f6];return _0x19f3af;};'use strict';var _=require('lodash');var util=require(_0xc0ff('0x0'));var logger=require(_0xc0ff('0x1'))('api');var moment=require(_0xc0ff('0x2'));var BPromise=require('bluebird');var rp=require(_0xc0ff('0x3'));var fs=require('fs');var path=require(_0xc0ff('0x4'));var rimraf=require(_0xc0ff('0x5'));var config=require(_0xc0ff('0x6'));var attributes=require(_0xc0ff('0x7'));module[_0xc0ff('0x8')]=function(_0x2fe7a2,_0x1b69a1){return _0x2fe7a2[_0xc0ff('0x9')]('TeamVoicePrefix',attributes,{'tableName':_0xc0ff('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 64cc378..e1123af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x59e8aa,_0x39f0fa){var _0x46cd4e=function(_0x1a4e08){while(--_0x1a4e08){_0x59e8aa['push'](_0x59e8aa['shift']());}};_0x46cd4e(++_0x39f0fa);}(_0xedd9,0xfc));var _0x9edd=function(_0x1a0e25,_0x4d3c1f){_0x1a0e25=_0x1a0e25-0x0;var _0x33d1e4=_0xedd9[_0x1a0e25];return _0x33d1e4;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x3a64b5,_0x132d09){var _0x37a301=function(_0x242865){while(--_0x242865){_0x3a64b5['push'](_0x3a64b5['shift']());}};_0x37a301(++_0x132d09);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xc8db6b,_0x320abd){_0xc8db6b=_0xc8db6b-0x0;var _0x12cb81=_0xcb91[_0xc8db6b];return _0x12cb81;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
index 7802b55..bfac2e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bc3=['sequelize'];(function(_0xc48f85,_0x2417fa){var _0x32aa2a=function(_0x37247b){while(--_0x37247b){_0xc48f85['push'](_0xc48f85['shift']());}};_0x32aa2a(++_0x2417fa);}(_0x4bc3,0x130));var _0x34bc=function(_0x82129b,_0x484ae9){_0x82129b=_0x82129b-0x0;var _0x2ae5dc=_0x4bc3[_0x82129b];return _0x2ae5dc;};'use strict';var Sequelize=require(_0x34bc('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xed81=['exports','sequelize'];(function(_0x2f7b2f,_0x931033){var _0x1b39da=function(_0x5e2dc6){while(--_0x5e2dc6){_0x2f7b2f['push'](_0x2f7b2f['shift']());}};_0x1b39da(++_0x931033);}(_0xed81,0x9d));var _0x1ed8=function(_0x387b58,_0xd07131){_0x387b58=_0x387b58-0x0;var _0x1ac029=_0xed81[_0x387b58];return _0x1ac029;};'use strict';var Sequelize=require(_0x1ed8('0x0'));module[_0x1ed8('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 830c4a8..ad8821e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7846=['exports','define','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./teamVoiceQueue.attributes'];(function(_0x30a31e,_0x31f766){var _0x170879=function(_0x313ee7){while(--_0x313ee7){_0x30a31e['push'](_0x30a31e['shift']());}};_0x170879(++_0x31f766);}(_0x7846,0xf4));var _0x6784=function(_0x2336ea,_0x46e872){_0x2336ea=_0x2336ea-0x0;var _0x216bf9=_0x7846[_0x2336ea];return _0x216bf9;};'use strict';var _=require('lodash');var util=require(_0x6784('0x0'));var logger=require(_0x6784('0x1'))(_0x6784('0x2'));var moment=require(_0x6784('0x3'));var BPromise=require(_0x6784('0x4'));var rp=require(_0x6784('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6784('0x6'));var config=require(_0x6784('0x7'));var attributes=require(_0x6784('0x8'));module[_0x6784('0x9')]=function(_0x327e26,_0x409fe1){return _0x327e26[_0x6784('0xa')]('TeamVoiceQueue',attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e5c=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes','define','TeamVoiceQueue','team_has_voice_queues','lodash','util'];(function(_0x298510,_0x21b06b){var _0x51f279=function(_0x853669){while(--_0x853669){_0x298510['push'](_0x298510['shift']());}};_0x51f279(++_0x21b06b);}(_0x3e5c,0x9a));var _0xc3e5=function(_0xec5163,_0x510528){_0xec5163=_0xec5163-0x0;var _0x708f79=_0x3e5c[_0xec5163];return _0x708f79;};'use strict';var _=require(_0xc3e5('0x0'));var util=require(_0xc3e5('0x1'));var logger=require(_0xc3e5('0x2'))(_0xc3e5('0x3'));var moment=require('moment');var BPromise=require(_0xc3e5('0x4'));var rp=require(_0xc3e5('0x5'));var fs=require('fs');var path=require(_0xc3e5('0x6'));var rimraf=require(_0xc3e5('0x7'));var config=require(_0xc3e5('0x8'));var attributes=require(_0xc3e5('0x9'));module['exports']=function(_0xf61ec2,_0xdf5a06){return _0xf61ec2[_0xc3e5('0xa')](_0xc3e5('0xb'),attributes,{'tableName':_0xc3e5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 14ad40a..4ea853f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ead=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','bluebird','randomstring'];(function(_0x24e731,_0x3e34bf){var _0x388eaa=function(_0xa77471){while(--_0xa77471){_0x24e731['push'](_0x24e731['shift']());}};_0x388eaa(++_0x3e34bf);}(_0x8ead,0x108));var _0xd8ea=function(_0x51ba4f,_0x45b667){_0x51ba4f=_0x51ba4f-0x0;var _0x444412=_0x8ead[_0x51ba4f];return _0x444412;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xd8ea('0x0'));var rs=require(_0xd8ea('0x1'));var fs=require('fs');var Redis=require(_0xd8ea('0x2'));var db=require(_0xd8ea('0x3'))['db'];var utils=require(_0xd8ea('0x4'));var logger=require(_0xd8ea('0x5'))('rpc');var config=require(_0xd8ea('0x6'));var jayson=require(_0xd8ea('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x264dfc,_0x230f98,_0x4d9ec7){return new BPromise(function(_0x1f1d80,_0x3879c8){return client[_0xd8ea('0x8')](_0x264dfc,_0x4d9ec7)[_0xd8ea('0x9')](function(_0x25a711){logger[_0xd8ea('0xa')](_0xd8ea('0xb'),_0x230f98,_0xd8ea('0xc'));logger[_0xd8ea('0xd')](_0xd8ea('0xe'),_0x230f98,_0xd8ea('0xc'),JSON[_0xd8ea('0xf')](_0x25a711));if(_0x25a711[_0xd8ea('0x10')]){if(_0x25a711['error'][_0xd8ea('0x11')]===0x1f4){logger['error'](_0xd8ea('0xb'),_0x230f98,_0x25a711['error'][_0xd8ea('0x12')]);return _0x3879c8(_0x25a711[_0xd8ea('0x10')][_0xd8ea('0x12')]);}logger[_0xd8ea('0x10')](_0xd8ea('0xb'),_0x230f98,_0x25a711[_0xd8ea('0x10')][_0xd8ea('0x12')]);return _0x1f1d80(_0x25a711[_0xd8ea('0x10')][_0xd8ea('0x12')]);}else{logger[_0xd8ea('0xa')]('TeamVoiceQueue,\x20%s,\x20%s',_0x230f98,_0xd8ea('0xc'));_0x1f1d80(_0x25a711['result']['message']);}})['catch'](function(_0x490fcd){logger[_0xd8ea('0x10')](_0xd8ea('0xb'),_0x230f98,_0x490fcd);_0x3879c8(_0x490fcd);});});}
\ No newline at end of file
+var _0x520e=['../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x3968c9,_0x346c1b){var _0x790570=function(_0x569dab){while(--_0x569dab){_0x3968c9['push'](_0x3968c9['shift']());}};_0x790570(++_0x346c1b);}(_0x520e,0x90));var _0xe520=function(_0x400b43,_0x55da4e){_0x400b43=_0x400b43-0x0;var _0x3c330f=_0x520e[_0x400b43];return _0x3c330f;};'use strict';var _=require(_0xe520('0x0'));var util=require(_0xe520('0x1'));var moment=require(_0xe520('0x2'));var BPromise=require(_0xe520('0x3'));var rs=require(_0xe520('0x4'));var fs=require('fs');var Redis=require(_0xe520('0x5'));var db=require(_0xe520('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xe520('0x7'))(_0xe520('0x8'));var config=require('../../config/environment');var jayson=require(_0xe520('0x9'));var client=jayson[_0xe520('0xa')][_0xe520('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1da5df,_0x4657e9,_0x2e8eb6){return new BPromise(function(_0x552eeb,_0x38d5d6){return client[_0xe520('0xc')](_0x1da5df,_0x2e8eb6)[_0xe520('0xd')](function(_0x1b4d5c){logger[_0xe520('0xe')](_0xe520('0xf'),_0x4657e9,_0xe520('0x10'));logger[_0xe520('0x11')](_0xe520('0x12'),_0x4657e9,_0xe520('0x10'),JSON[_0xe520('0x13')](_0x1b4d5c));if(_0x1b4d5c[_0xe520('0x14')]){if(_0x1b4d5c[_0xe520('0x14')][_0xe520('0x15')]===0x1f4){logger[_0xe520('0x14')](_0xe520('0xf'),_0x4657e9,_0x1b4d5c['error']['message']);return _0x38d5d6(_0x1b4d5c[_0xe520('0x14')]['message']);}logger[_0xe520('0x14')](_0xe520('0xf'),_0x4657e9,_0x1b4d5c['error'][_0xe520('0x16')]);return _0x552eeb(_0x1b4d5c[_0xe520('0x14')][_0xe520('0x16')]);}else{logger[_0xe520('0xe')](_0xe520('0xf'),_0x4657e9,_0xe520('0x10'));_0x552eeb(_0x1b4d5c[_0xe520('0x17')][_0xe520('0x16')]);}})[_0xe520('0x18')](function(_0x4e0c99){logger[_0xe520('0x14')]('TeamVoiceQueue,\x20%s,\x20%s',_0x4657e9,_0x4e0c99);_0x38d5d6(_0x4e0c99);});});}
\ No newline at end of file
index aa2e8d0..f1b11dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77a9=['multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./template.controller','get','isAuthenticated','index','show','create','put','/:id','update','delete','destroy'];(function(_0x2dda2c,_0x28103b){var _0x456af9=function(_0x5e91a5){while(--_0x5e91a5){_0x2dda2c['push'](_0x2dda2c['shift']());}};_0x456af9(++_0x28103b);}(_0x77a9,0x19e));var _0x977a=function(_0x49715b,_0x13faa9){_0x49715b=_0x49715b-0x0;var _0x3cdd3d=_0x77a9[_0x49715b];return _0x3cdd3d;};'use strict';var multer=require(_0x977a('0x0'));var util=require('util');var path=require(_0x977a('0x1'));var timeout=require('connect-timeout');var express=require(_0x977a('0x2'));var router=express[_0x977a('0x3')]();var fs_extra=require(_0x977a('0x4'));var auth=require(_0x977a('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x977a('0x6'));var controller=require(_0x977a('0x7'));router[_0x977a('0x8')]('/',auth[_0x977a('0x9')](),controller[_0x977a('0xa')]);router['get']('/:id',auth[_0x977a('0x9')](),controller[_0x977a('0xb')]);router['post']('/',auth[_0x977a('0x9')](),controller[_0x977a('0xc')]);router[_0x977a('0xd')](_0x977a('0xe'),auth[_0x977a('0x9')](),controller[_0x977a('0xf')]);router[_0x977a('0x10')](_0x977a('0xe'),auth[_0x977a('0x9')](),controller[_0x977a('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x26b2=['show','post','put','/:id','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','get','isAuthenticated'];(function(_0x3d5101,_0x5bd663){var _0x2c1aad=function(_0x55f301){while(--_0x55f301){_0x3d5101['push'](_0x3d5101['shift']());}};_0x2c1aad(++_0x5bd663);}(_0x26b2,0xc5));var _0x226b=function(_0x4161fe,_0x1a1303){_0x4161fe=_0x4161fe-0x0;var _0x125fa3=_0x26b2[_0x4161fe];return _0x125fa3;};'use strict';var multer=require(_0x226b('0x0'));var util=require(_0x226b('0x1'));var path=require(_0x226b('0x2'));var timeout=require('connect-timeout');var express=require(_0x226b('0x3'));var router=express[_0x226b('0x4')]();var fs_extra=require(_0x226b('0x5'));var auth=require(_0x226b('0x6'));var interaction=require(_0x226b('0x7'));var config=require(_0x226b('0x8'));var controller=require(_0x226b('0x9'));router[_0x226b('0xa')]('/',auth[_0x226b('0xb')](),controller['index']);router[_0x226b('0xa')]('/:id',auth[_0x226b('0xb')](),controller[_0x226b('0xc')]);router[_0x226b('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x226b('0xe')](_0x226b('0xf'),auth[_0x226b('0xb')](),controller[_0x226b('0x10')]);router[_0x226b('0x11')](_0x226b('0xf'),auth['isAuthenticated'](),controller[_0x226b('0x12')]);module['exports']=router;
\ No newline at end of file
index 7a63a47..ad0e8a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa233=['exports','STRING','sequelize'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0xa233,0x1ca));var _0x3a23=function(_0x585fd1,_0x12b5c7){_0x585fd1=_0x585fd1-0x0;var _0x4a6c23=_0xa233[_0x585fd1];return _0x4a6c23;};'use strict';var Sequelize=require(_0x3a23('0x0'));module[_0x3a23('0x1')]={'name':{'type':Sequelize[_0x3a23('0x2')]},'description':{'type':Sequelize[_0x3a23('0x2')]},'html':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xebad=['sequelize','exports','STRING'];(function(_0x26b308,_0x397dfc){var _0x59478d=function(_0x20b4c4){while(--_0x20b4c4){_0x26b308['push'](_0x26b308['shift']());}};_0x59478d(++_0x397dfc);}(_0xebad,0x120));var _0xdeba=function(_0x7b83cb,_0x1cbe12){_0x7b83cb=_0x7b83cb-0x0;var _0x2af679=_0xebad[_0x7b83cb];return _0x2af679;};'use strict';var Sequelize=require(_0xdeba('0x0'));module[_0xdeba('0x1')]={'name':{'type':Sequelize[_0xdeba('0x2')]},'description':{'type':Sequelize[_0xdeba('0x2')]},'html':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 912b1da..ba7bc08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3291=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','Templates','UserProfileResource','destroy','error','stack','name','index','map','Template','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','findAll','rows','show','params','include','find','catch','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils'];(function(_0x4b3323,_0x1c55ba){var _0x551c5c=function(_0x4f1745){while(--_0x4f1745){_0x4b3323['push'](_0x4b3323['shift']());}};_0x551c5c(++_0x1c55ba);}(_0x3291,0x97));var _0x1329=function(_0x4b7bac,_0x198991){_0x4b7bac=_0x4b7bac-0x0;var _0x15f85c=_0x3291[_0x4b7bac];return _0x15f85c;};'use strict';var emlformat=require(_0x1329('0x0'));var rimraf=require(_0x1329('0x1'));var zipdir=require(_0x1329('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1329('0x3'));var moment=require(_0x1329('0x4'));var BPromise=require(_0x1329('0x5'));var Mustache=require(_0x1329('0x6'));var util=require(_0x1329('0x7'));var path=require('path');var sox=require(_0x1329('0x8'));var csv=require(_0x1329('0x9'));var ejs=require(_0x1329('0xa'));var fs=require('fs');var fs_extra=require(_0x1329('0xb'));var _=require(_0x1329('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1329('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x1329('0x9'));var querystring=require(_0x1329('0xe'));var Papa=require(_0x1329('0xf'));var Redis=require(_0x1329('0x10'));var authService=require(_0x1329('0x11'));var qs=require(_0x1329('0x12'));var as=require(_0x1329('0x13'));var hardwareService=require(_0x1329('0x14'));var logger=require('../../config/logger')(_0x1329('0x15'));var utils=require(_0x1329('0x16'));var config=require(_0x1329('0x17'));var licenseUtil=require(_0x1329('0x18'));var db=require(_0x1329('0x19'))['db'];function respondWithStatusCode(_0xa03ae7,_0x120935){_0x120935=_0x120935||0xcc;return function(_0x579a97){if(_0x579a97){return _0xa03ae7[_0x1329('0x1a')](_0x120935);}return _0xa03ae7[_0x1329('0x1b')](_0x120935)[_0x1329('0x1c')]();};}function respondWithResult(_0x232405,_0x3eefa7){_0x3eefa7=_0x3eefa7||0xc8;return function(_0x260d06){if(_0x260d06){return _0x232405['status'](_0x3eefa7)['json'](_0x260d06);}};}function respondWithFilteredResult(_0xf90c1f,_0x1805ac){return function(_0x4dca71){if(_0x4dca71){var _0x39b321=typeof _0x1805ac[_0x1329('0x1d')]===_0x1329('0x1e')&&typeof _0x1805ac[_0x1329('0x1f')]===_0x1329('0x1e');var _0x2d4b24=_0x4dca71[_0x1329('0x20')];var _0x4328d2=_0x39b321?0x0:_0x1805ac['offset'];var _0x3bbecc=_0x39b321?_0x4dca71[_0x1329('0x20')]:_0x1805ac['offset']+_0x1805ac[_0x1329('0x1f')];var _0x1f644f;if(_0x3bbecc>=_0x2d4b24){_0x3bbecc=_0x2d4b24;_0x1f644f=0xc8;}else{_0x1f644f=0xce;}_0xf90c1f[_0x1329('0x1b')](_0x1f644f);return _0xf90c1f[_0x1329('0x21')](_0x1329('0x22'),_0x4328d2+'-'+_0x3bbecc+'/'+_0x2d4b24)['json'](_0x4dca71);}return null;};}function patchUpdates(_0x214a7d){return function(_0x960dfe){try{jsonpatch[_0x1329('0x23')](_0x960dfe,_0x214a7d,!![]);}catch(_0x369394){return BPromise[_0x1329('0x24')](_0x369394);}return _0x960dfe[_0x1329('0x25')]();};}function saveUpdates(_0xde9c34,_0xdb8c7b){return function(_0x3c60f6){if(_0x3c60f6){return _0x3c60f6[_0x1329('0x26')](_0xde9c34)[_0x1329('0x27')](function(_0x5bd2a8){return _0x5bd2a8;});}return null;};}function removeEntity(_0x136c71,_0xb51676){return function(_0x10883c){if(_0x10883c){return _0x10883c['destroy']()[_0x1329('0x27')](function(){var _0x27f74a=_0x10883c['get']({'plain':!![]});var _0x119522=_0x1329('0x28');return db[_0x1329('0x29')][_0x1329('0x2a')]({'where':{'type':_0x119522,'resourceId':_0x27f74a['id']}})[_0x1329('0x27')](function(){return _0x10883c;});})[_0x1329('0x27')](function(){_0x136c71[_0x1329('0x1b')](0xcc)[_0x1329('0x1c')]();});}};}function handleEntityNotFound(_0x50e992,_0x8e7f26){return function(_0x2ae2d1){if(!_0x2ae2d1){_0x50e992[_0x1329('0x1a')](0x194);}return _0x2ae2d1;};}function handleError(_0xbccf65,_0x5f1e2a){_0x5f1e2a=_0x5f1e2a||0x1f4;return function(_0x5e18c3){logger[_0x1329('0x2b')](_0x5e18c3[_0x1329('0x2c')]);if(_0x5e18c3['name']){delete _0x5e18c3[_0x1329('0x2d')];}_0xbccf65[_0x1329('0x1b')](_0x5f1e2a)['send'](_0x5e18c3);};}exports[_0x1329('0x2e')]=function(_0x242a38,_0x14718a){var _0x5b33d9={},_0x441367={},_0x48e595={'count':0x0,'rows':[]};var _0x3a365b=_[_0x1329('0x2f')](db[_0x1329('0x30')][_0x1329('0x31')],function(_0x12b657){return{'name':_0x12b657[_0x1329('0x32')],'type':_0x12b657[_0x1329('0x33')][_0x1329('0x34')]};});_0x441367[_0x1329('0x35')]=_['map'](_0x3a365b,_0x1329('0x2d'));_0x441367[_0x1329('0x36')]=_[_0x1329('0x37')](_0x242a38['query']);_0x441367['filters']=_[_0x1329('0x38')](_0x441367[_0x1329('0x35')],_0x441367[_0x1329('0x36')]);_0x5b33d9[_0x1329('0x39')]=_[_0x1329('0x38')](_0x441367[_0x1329('0x35')],qs[_0x1329('0x3a')](_0x242a38[_0x1329('0x36')][_0x1329('0x3a')]));_0x5b33d9[_0x1329('0x39')]=_0x5b33d9[_0x1329('0x39')][_0x1329('0x3b')]?_0x5b33d9[_0x1329('0x39')]:_0x441367['model'];if(!_0x242a38['query'][_0x1329('0x3c')](_0x1329('0x3d'))){_0x5b33d9['limit']=qs[_0x1329('0x1f')](_0x242a38['query'][_0x1329('0x1f')]);_0x5b33d9[_0x1329('0x1d')]=qs['offset'](_0x242a38[_0x1329('0x36')][_0x1329('0x1d')]);}_0x5b33d9[_0x1329('0x3e')]=qs[_0x1329('0x3f')](_0x242a38[_0x1329('0x36')][_0x1329('0x3f')]);_0x5b33d9[_0x1329('0x40')]=qs['filters'](_[_0x1329('0x41')](_0x242a38[_0x1329('0x36')],_0x441367[_0x1329('0x42')]),_0x3a365b);if(_0x242a38[_0x1329('0x36')][_0x1329('0x43')]){_0x5b33d9[_0x1329('0x40')]=_[_0x1329('0x44')](_0x5b33d9[_0x1329('0x40')],{'$or':_[_0x1329('0x2f')](_0x3a365b,function(_0x4f1434){if(_0x4f1434[_0x1329('0x33')]!==_0x1329('0x45')){var _0x5599ba={};_0x5599ba[_0x4f1434[_0x1329('0x2d')]]={'$like':'%'+_0x242a38[_0x1329('0x36')][_0x1329('0x43')]+'%'};return _0x5599ba;}})});}_0x5b33d9=_['merge']({},_0x5b33d9,_0x242a38[_0x1329('0x46')]);var _0x26bdd2={'where':_0x5b33d9['where']};return db[_0x1329('0x30')][_0x1329('0x20')](_0x26bdd2)[_0x1329('0x27')](function(_0x294bd8){_0x48e595[_0x1329('0x20')]=_0x294bd8;if(_0x242a38['query']['includeAll']){_0x5b33d9['include']=[{'all':!![]}];}return db[_0x1329('0x30')][_0x1329('0x47')](_0x5b33d9);})['then'](function(_0x35241f){_0x48e595[_0x1329('0x48')]=_0x35241f;return _0x48e595;})[_0x1329('0x27')](respondWithFilteredResult(_0x14718a,_0x5b33d9))['catch'](handleError(_0x14718a,null));};exports[_0x1329('0x49')]=function(_0x2adfb9,_0x1dbc4a){var _0x31688a={'raw':!![],'where':{'id':_0x2adfb9[_0x1329('0x4a')]['id']}},_0x588e31={};_0x588e31[_0x1329('0x35')]=_[_0x1329('0x37')](db[_0x1329('0x30')]['rawAttributes']);_0x588e31['query']=_[_0x1329('0x37')](_0x2adfb9[_0x1329('0x36')]);_0x588e31['filters']=_['intersection'](_0x588e31[_0x1329('0x35')],_0x588e31[_0x1329('0x36')]);_0x31688a['attributes']=_[_0x1329('0x38')](_0x588e31['model'],qs[_0x1329('0x3a')](_0x2adfb9[_0x1329('0x36')][_0x1329('0x3a')]));_0x31688a[_0x1329('0x39')]=_0x31688a[_0x1329('0x39')][_0x1329('0x3b')]?_0x31688a[_0x1329('0x39')]:_0x588e31[_0x1329('0x35')];if(_0x2adfb9[_0x1329('0x36')]['includeAll']){_0x31688a[_0x1329('0x4b')]=[{'all':!![]}];}_0x31688a=_[_0x1329('0x44')]({},_0x31688a,_0x2adfb9[_0x1329('0x46')]);return db[_0x1329('0x30')][_0x1329('0x4c')](_0x31688a)[_0x1329('0x27')](handleEntityNotFound(_0x1dbc4a,null))[_0x1329('0x27')](respondWithResult(_0x1dbc4a,null))[_0x1329('0x4d')](handleError(_0x1dbc4a,null));};exports['create']=function(_0x6148f6,_0x2e9729){return db[_0x1329('0x30')][_0x1329('0x4e')](_0x6148f6['body'],{})[_0x1329('0x27')](function(_0xe2e65c){var _0x5ce000=_0x6148f6['user'][_0x1329('0x4f')]({'plain':!![]});if(!_0x5ce000)throw new Error(_0x1329('0x50'));if(_0x5ce000[_0x1329('0x51')]==='user'){var _0x3326d0=_0xe2e65c[_0x1329('0x4f')]({'plain':!![]});var _0x402c89=_0x1329('0x28');return db[_0x1329('0x52')][_0x1329('0x4c')]({'where':{'name':_0x402c89,'userProfileId':_0x5ce000[_0x1329('0x53')]},'raw':!![]})['then'](function(_0x55ab5f){if(_0x55ab5f&&_0x55ab5f[_0x1329('0x54')]===0x0){return db[_0x1329('0x29')][_0x1329('0x4e')]({'name':_0x3326d0[_0x1329('0x2d')],'resourceId':_0x3326d0['id'],'type':_0x55ab5f[_0x1329('0x2d')],'sectionId':_0x55ab5f['id']},{})['then'](function(){return _0xe2e65c;});}else{return _0xe2e65c;}})[_0x1329('0x4d')](function(_0x428644){logger[_0x1329('0x2b')](_0x1329('0x55'),_0x428644);throw _0x428644;});}return _0xe2e65c;})['then'](respondWithResult(_0x2e9729,0xc9))[_0x1329('0x4d')](handleError(_0x2e9729,null));};exports['update']=function(_0x4b1257,_0x3792b3){if(_0x4b1257[_0x1329('0x56')]['id']){delete _0x4b1257[_0x1329('0x56')]['id'];}return db[_0x1329('0x30')][_0x1329('0x4c')]({'where':{'id':_0x4b1257[_0x1329('0x4a')]['id']}})[_0x1329('0x27')](handleEntityNotFound(_0x3792b3,null))['then'](saveUpdates(_0x4b1257['body'],null))['then'](respondWithResult(_0x3792b3,null))[_0x1329('0x4d')](handleError(_0x3792b3,null));};exports['destroy']=function(_0x5967b5,_0x26355a){return db['Template'][_0x1329('0x4c')]({'where':{'id':_0x5967b5[_0x1329('0x4a')]['id']}})['then'](handleEntityNotFound(_0x26355a,null))['then'](removeEntity(_0x26355a,null))[_0x1329('0x4d')](handleError(_0x26355a,null));};
\ No newline at end of file
+var _0x798b=['user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','get','Templates','UserProfileResource','sendStatus','error','stack','name','index','map','Template','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','options','find','create'];(function(_0x58d10d,_0x56e900){var _0x3d027f=function(_0x342f5a){while(--_0x342f5a){_0x58d10d['push'](_0x58d10d['shift']());}};_0x3d027f(++_0x56e900);}(_0x798b,0x164));var _0xb798=function(_0x1e2d7c,_0x194a36){_0x1e2d7c=_0x1e2d7c-0x0;var _0x510f9=_0x798b[_0x1e2d7c];return _0x510f9;};'use strict';var emlformat=require(_0xb798('0x0'));var rimraf=require(_0xb798('0x1'));var zipdir=require(_0xb798('0x2'));var jsonpatch=require(_0xb798('0x3'));var rp=require(_0xb798('0x4'));var moment=require(_0xb798('0x5'));var BPromise=require(_0xb798('0x6'));var Mustache=require('mustache');var util=require(_0xb798('0x7'));var path=require(_0xb798('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xb798('0x9'));var fs=require('fs');var fs_extra=require(_0xb798('0xa'));var _=require(_0xb798('0xb'));var squel=require(_0xb798('0xc'));var crypto=require('crypto');var jsforce=require(_0xb798('0xd'));var deskjs=require(_0xb798('0xe'));var toCsv=require(_0xb798('0xf'));var querystring=require(_0xb798('0x10'));var Papa=require(_0xb798('0x11'));var Redis=require(_0xb798('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xb798('0x13'));var as=require(_0xb798('0x14'));var hardwareService=require(_0xb798('0x15'));var logger=require(_0xb798('0x16'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb798('0x17'));var db=require(_0xb798('0x18'))['db'];function respondWithStatusCode(_0x9c731c,_0x3045d6){_0x3045d6=_0x3045d6||0xcc;return function(_0x14b751){if(_0x14b751){return _0x9c731c['sendStatus'](_0x3045d6);}return _0x9c731c[_0xb798('0x19')](_0x3045d6)[_0xb798('0x1a')]();};}function respondWithResult(_0x9bc6db,_0x5d09af){_0x5d09af=_0x5d09af||0xc8;return function(_0x1cbac8){if(_0x1cbac8){return _0x9bc6db[_0xb798('0x19')](_0x5d09af)[_0xb798('0x1b')](_0x1cbac8);}};}function respondWithFilteredResult(_0x164850,_0x15e61f){return function(_0x1e2225){if(_0x1e2225){var _0x28aa27=typeof _0x15e61f[_0xb798('0x1c')]==='undefined'&&typeof _0x15e61f[_0xb798('0x1d')]===_0xb798('0x1e');var _0x4c843c=_0x1e2225[_0xb798('0x1f')];var _0x4c4cb1=_0x28aa27?0x0:_0x15e61f[_0xb798('0x1c')];var _0xc69f21=_0x28aa27?_0x1e2225[_0xb798('0x1f')]:_0x15e61f['offset']+_0x15e61f[_0xb798('0x1d')];var _0x3e6924;if(_0xc69f21>=_0x4c843c){_0xc69f21=_0x4c843c;_0x3e6924=0xc8;}else{_0x3e6924=0xce;}_0x164850['status'](_0x3e6924);return _0x164850[_0xb798('0x20')](_0xb798('0x21'),_0x4c4cb1+'-'+_0xc69f21+'/'+_0x4c843c)['json'](_0x1e2225);}return null;};}function patchUpdates(_0x1b075e){return function(_0x1b268e){try{jsonpatch[_0xb798('0x22')](_0x1b268e,_0x1b075e,!![]);}catch(_0x4a533a){return BPromise[_0xb798('0x23')](_0x4a533a);}return _0x1b268e[_0xb798('0x24')]();};}function saveUpdates(_0x4135d6,_0x36d125){return function(_0x1fb6eb){if(_0x1fb6eb){return _0x1fb6eb['update'](_0x4135d6)[_0xb798('0x25')](function(_0x503606){return _0x503606;});}return null;};}function removeEntity(_0x3578f0,_0x5bde74){return function(_0x9a589c){if(_0x9a589c){return _0x9a589c[_0xb798('0x26')]()[_0xb798('0x25')](function(){var _0x59b474=_0x9a589c[_0xb798('0x27')]({'plain':!![]});var _0x46625c=_0xb798('0x28');return db[_0xb798('0x29')][_0xb798('0x26')]({'where':{'type':_0x46625c,'resourceId':_0x59b474['id']}})[_0xb798('0x25')](function(){return _0x9a589c;});})[_0xb798('0x25')](function(){_0x3578f0[_0xb798('0x19')](0xcc)[_0xb798('0x1a')]();});}};}function handleEntityNotFound(_0x42b095,_0x246c12){return function(_0x5cbb47){if(!_0x5cbb47){_0x42b095[_0xb798('0x2a')](0x194);}return _0x5cbb47;};}function handleError(_0x174e7b,_0x4f80ae){_0x4f80ae=_0x4f80ae||0x1f4;return function(_0x3e45d8){logger[_0xb798('0x2b')](_0x3e45d8[_0xb798('0x2c')]);if(_0x3e45d8[_0xb798('0x2d')]){delete _0x3e45d8[_0xb798('0x2d')];}_0x174e7b[_0xb798('0x19')](_0x4f80ae)['send'](_0x3e45d8);};}exports[_0xb798('0x2e')]=function(_0x2e59c5,_0x13fb9c){var _0x4c6257={},_0x105b37={},_0x558eaa={'count':0x0,'rows':[]};var _0x5a8b6f=_[_0xb798('0x2f')](db[_0xb798('0x30')][_0xb798('0x31')],function(_0x39d5c7){return{'name':_0x39d5c7['fieldName'],'type':_0x39d5c7['type'][_0xb798('0x32')]};});_0x105b37[_0xb798('0x33')]=_[_0xb798('0x2f')](_0x5a8b6f,'name');_0x105b37[_0xb798('0x34')]=_[_0xb798('0x35')](_0x2e59c5[_0xb798('0x34')]);_0x105b37[_0xb798('0x36')]=_[_0xb798('0x37')](_0x105b37[_0xb798('0x33')],_0x105b37[_0xb798('0x34')]);_0x4c6257[_0xb798('0x38')]=_[_0xb798('0x37')](_0x105b37[_0xb798('0x33')],qs[_0xb798('0x39')](_0x2e59c5[_0xb798('0x34')]['fields']));_0x4c6257[_0xb798('0x38')]=_0x4c6257[_0xb798('0x38')][_0xb798('0x3a')]?_0x4c6257[_0xb798('0x38')]:_0x105b37[_0xb798('0x33')];if(!_0x2e59c5[_0xb798('0x34')][_0xb798('0x3b')](_0xb798('0x3c'))){_0x4c6257[_0xb798('0x1d')]=qs[_0xb798('0x1d')](_0x2e59c5[_0xb798('0x34')][_0xb798('0x1d')]);_0x4c6257[_0xb798('0x1c')]=qs[_0xb798('0x1c')](_0x2e59c5[_0xb798('0x34')][_0xb798('0x1c')]);}_0x4c6257[_0xb798('0x3d')]=qs[_0xb798('0x3e')](_0x2e59c5[_0xb798('0x34')][_0xb798('0x3e')]);_0x4c6257[_0xb798('0x3f')]=qs[_0xb798('0x36')](_[_0xb798('0x40')](_0x2e59c5[_0xb798('0x34')],_0x105b37[_0xb798('0x36')]),_0x5a8b6f);if(_0x2e59c5[_0xb798('0x34')]['filter']){_0x4c6257[_0xb798('0x3f')]=_[_0xb798('0x41')](_0x4c6257[_0xb798('0x3f')],{'$or':_[_0xb798('0x2f')](_0x5a8b6f,function(_0x91c829){if(_0x91c829[_0xb798('0x42')]!==_0xb798('0x43')){var _0x522173={};_0x522173[_0x91c829[_0xb798('0x2d')]]={'$like':'%'+_0x2e59c5[_0xb798('0x34')][_0xb798('0x44')]+'%'};return _0x522173;}})});}_0x4c6257=_[_0xb798('0x41')]({},_0x4c6257,_0x2e59c5['options']);var _0x3b5113={'where':_0x4c6257[_0xb798('0x3f')]};return db[_0xb798('0x30')][_0xb798('0x1f')](_0x3b5113)[_0xb798('0x25')](function(_0x5bda14){_0x558eaa[_0xb798('0x1f')]=_0x5bda14;if(_0x2e59c5[_0xb798('0x34')][_0xb798('0x45')]){_0x4c6257[_0xb798('0x46')]=[{'all':!![]}];}return db[_0xb798('0x30')][_0xb798('0x47')](_0x4c6257);})['then'](function(_0x23ca6c){_0x558eaa[_0xb798('0x48')]=_0x23ca6c;return _0x558eaa;})[_0xb798('0x25')](respondWithFilteredResult(_0x13fb9c,_0x4c6257))[_0xb798('0x49')](handleError(_0x13fb9c,null));};exports[_0xb798('0x4a')]=function(_0x2f3fba,_0x351ff7){var _0x142032={'raw':!![],'where':{'id':_0x2f3fba[_0xb798('0x4b')]['id']}},_0x4d1858={};_0x4d1858['model']=_[_0xb798('0x35')](db[_0xb798('0x30')][_0xb798('0x31')]);_0x4d1858[_0xb798('0x34')]=_[_0xb798('0x35')](_0x2f3fba['query']);_0x4d1858[_0xb798('0x36')]=_['intersection'](_0x4d1858[_0xb798('0x33')],_0x4d1858[_0xb798('0x34')]);_0x142032[_0xb798('0x38')]=_[_0xb798('0x37')](_0x4d1858[_0xb798('0x33')],qs[_0xb798('0x39')](_0x2f3fba[_0xb798('0x34')][_0xb798('0x39')]));_0x142032['attributes']=_0x142032[_0xb798('0x38')][_0xb798('0x3a')]?_0x142032[_0xb798('0x38')]:_0x4d1858[_0xb798('0x33')];if(_0x2f3fba[_0xb798('0x34')]['includeAll']){_0x142032['include']=[{'all':!![]}];}_0x142032=_[_0xb798('0x41')]({},_0x142032,_0x2f3fba[_0xb798('0x4c')]);return db['Template'][_0xb798('0x4d')](_0x142032)['then'](handleEntityNotFound(_0x351ff7,null))[_0xb798('0x25')](respondWithResult(_0x351ff7,null))[_0xb798('0x49')](handleError(_0x351ff7,null));};exports[_0xb798('0x4e')]=function(_0x249585,_0x26fdde){return db[_0xb798('0x30')][_0xb798('0x4e')](_0x249585['body'],{})[_0xb798('0x25')](function(_0x35c386){var _0x4de3e5=_0x249585[_0xb798('0x4f')][_0xb798('0x27')]({'plain':!![]});if(!_0x4de3e5)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4de3e5[_0xb798('0x50')]==='user'){var _0x1b743c=_0x35c386['get']({'plain':!![]});var _0x23d338=_0xb798('0x28');return db[_0xb798('0x51')]['find']({'where':{'name':_0x23d338,'userProfileId':_0x4de3e5[_0xb798('0x52')]},'raw':!![]})[_0xb798('0x25')](function(_0xb1b49d){if(_0xb1b49d&&_0xb1b49d[_0xb798('0x53')]===0x0){return db[_0xb798('0x29')][_0xb798('0x4e')]({'name':_0x1b743c[_0xb798('0x2d')],'resourceId':_0x1b743c['id'],'type':_0xb1b49d[_0xb798('0x2d')],'sectionId':_0xb1b49d['id']},{})[_0xb798('0x25')](function(){return _0x35c386;});}else{return _0x35c386;}})[_0xb798('0x49')](function(_0x4c47e5){logger[_0xb798('0x2b')](_0xb798('0x54'),_0x4c47e5);throw _0x4c47e5;});}return _0x35c386;})[_0xb798('0x25')](respondWithResult(_0x26fdde,0xc9))['catch'](handleError(_0x26fdde,null));};exports[_0xb798('0x55')]=function(_0xf59f8d,_0x563e40){if(_0xf59f8d['body']['id']){delete _0xf59f8d[_0xb798('0x56')]['id'];}return db[_0xb798('0x30')][_0xb798('0x4d')]({'where':{'id':_0xf59f8d['params']['id']}})['then'](handleEntityNotFound(_0x563e40,null))[_0xb798('0x25')](saveUpdates(_0xf59f8d[_0xb798('0x56')],null))['then'](respondWithResult(_0x563e40,null))[_0xb798('0x49')](handleError(_0x563e40,null));};exports[_0xb798('0x26')]=function(_0x20fcaf,_0x2a1b6c){return db[_0xb798('0x30')][_0xb798('0x4d')]({'where':{'id':_0x20fcaf['params']['id']}})['then'](handleEntityNotFound(_0x2a1b6c,null))['then'](removeEntity(_0x2a1b6c,null))[_0xb798('0x49')](handleError(_0x2a1b6c,null));};
\ No newline at end of file
index dfffeb0..fdaa728 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44f1=['rimraf','../../config/environment','./template.attributes','exports','define','tools_templates','lodash','util','bluebird','request-promise','path'];(function(_0x411c34,_0x1007a8){var _0x274b83=function(_0x27a61b){while(--_0x27a61b){_0x411c34['push'](_0x411c34['shift']());}};_0x274b83(++_0x1007a8);}(_0x44f1,0x1df));var _0x144f=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x44f1[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x144f('0x0'));var util=require(_0x144f('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x144f('0x2'));var rp=require(_0x144f('0x3'));var fs=require('fs');var path=require(_0x144f('0x4'));var rimraf=require(_0x144f('0x5'));var config=require(_0x144f('0x6'));var attributes=require(_0x144f('0x7'));module[_0x144f('0x8')]=function(_0x15017d,_0x193d9f){return _0x15017d[_0x144f('0x9')]('Template',attributes,{'tableName':_0x144f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0733=['tools_templates','util','api','moment','bluebird','request-promise','path','rimraf','./template.attributes','Template'];(function(_0xd4488a,_0x598bb6){var _0x50614c=function(_0xb76d22){while(--_0xb76d22){_0xd4488a['push'](_0xd4488a['shift']());}};_0x50614c(++_0x598bb6);}(_0x0733,0x169));var _0x3073=function(_0x534075,_0x2ad830){_0x534075=_0x534075-0x0;var _0x43f83c=_0x0733[_0x534075];return _0x43f83c;};'use strict';var _=require('lodash');var util=require(_0x3073('0x0'));var logger=require('../../config/logger')(_0x3073('0x1'));var moment=require(_0x3073('0x2'));var BPromise=require(_0x3073('0x3'));var rp=require(_0x3073('0x4'));var fs=require('fs');var path=require(_0x3073('0x5'));var rimraf=require(_0x3073('0x6'));var config=require('../../config/environment');var attributes=require(_0x3073('0x7'));module['exports']=function(_0x165692,_0x1e8a04){return _0x165692['define'](_0x3073('0x8'),attributes,{'tableName':_0x3073('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9659883..68137b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaa2=['http','request','then','info','request\x20sent','debug','error','code','Template,\x20%s,\x20%s','message','catch','GetTemplate','findAll','raw','options','where','attributes','limit','include','map','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xeaa2,0x115));var _0x2eaa=function(_0x4d2552,_0x560684){_0x4d2552=_0x4d2552-0x0;var _0x56761b=_0xeaa2[_0x4d2552];return _0x56761b;};'use strict';var _=require(_0x2eaa('0x0'));var util=require(_0x2eaa('0x1'));var moment=require(_0x2eaa('0x2'));var BPromise=require(_0x2eaa('0x3'));var rs=require(_0x2eaa('0x4'));var fs=require('fs');var Redis=require(_0x2eaa('0x5'));var db=require(_0x2eaa('0x6'))['db'];var utils=require(_0x2eaa('0x7'));var logger=require(_0x2eaa('0x8'))(_0x2eaa('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2eaa('0xa')][_0x2eaa('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x438f18,_0x334f5c,_0x44e787){return new BPromise(function(_0x276303,_0x2af64b){return client[_0x2eaa('0xc')](_0x438f18,_0x44e787)[_0x2eaa('0xd')](function(_0x27cd78){logger[_0x2eaa('0xe')]('Template,\x20%s,\x20%s',_0x334f5c,_0x2eaa('0xf'));logger[_0x2eaa('0x10')]('Template,\x20%s,\x20%s,\x20%s',_0x334f5c,_0x2eaa('0xf'),JSON['stringify'](_0x27cd78));if(_0x27cd78[_0x2eaa('0x11')]){if(_0x27cd78[_0x2eaa('0x11')][_0x2eaa('0x12')]===0x1f4){logger['error'](_0x2eaa('0x13'),_0x334f5c,_0x27cd78[_0x2eaa('0x11')][_0x2eaa('0x14')]);return _0x2af64b(_0x27cd78[_0x2eaa('0x11')][_0x2eaa('0x14')]);}logger[_0x2eaa('0x11')](_0x2eaa('0x13'),_0x334f5c,_0x27cd78[_0x2eaa('0x11')][_0x2eaa('0x14')]);return _0x276303(_0x27cd78[_0x2eaa('0x11')][_0x2eaa('0x14')]);}else{logger[_0x2eaa('0xe')](_0x2eaa('0x13'),_0x334f5c,_0x2eaa('0xf'));_0x276303(_0x27cd78['result'][_0x2eaa('0x14')]);}})[_0x2eaa('0x15')](function(_0x475b2f){logger[_0x2eaa('0x11')](_0x2eaa('0x13'),_0x334f5c,_0x475b2f);_0x2af64b(_0x475b2f);});});}exports[_0x2eaa('0x16')]=function(_0x145865){var _0x58eb77=this;return new Promise(function(_0x2f3bce,_0x331e52){return db['Template'][_0x2eaa('0x17')]({'raw':_0x145865['options']?_0x145865['options'][_0x2eaa('0x18')]===undefined?!![]:![]:!![],'where':_0x145865[_0x2eaa('0x19')]?_0x145865['options'][_0x2eaa('0x1a')]||null:null,'attributes':_0x145865['options']?_0x145865[_0x2eaa('0x19')][_0x2eaa('0x1b')]||null:null,'limit':_0x145865[_0x2eaa('0x19')]?_0x145865['options'][_0x2eaa('0x1c')]||null:null,'include':_0x145865[_0x2eaa('0x19')]?_0x145865[_0x2eaa('0x19')][_0x2eaa('0x1d')]?_[_0x2eaa('0x1e')](_0x145865[_0x2eaa('0x19')][_0x2eaa('0x1d')],function(_0x71754d){return{'model':db[_0x71754d[_0x2eaa('0x1f')]],'as':_0x71754d['as'],'attributes':_0x71754d[_0x2eaa('0x1b')],'include':_0x71754d[_0x2eaa('0x1d')]?_[_0x2eaa('0x1e')](_0x71754d[_0x2eaa('0x1d')],function(_0x16f61c){return{'model':db[_0x16f61c[_0x2eaa('0x1f')]],'as':_0x16f61c['as'],'attributes':_0x16f61c[_0x2eaa('0x1b')],'include':_0x16f61c[_0x2eaa('0x1d')]?_[_0x2eaa('0x1e')](_0x16f61c[_0x2eaa('0x1d')],function(_0x253fce){return{'model':db[_0x253fce[_0x2eaa('0x1f')]],'as':_0x253fce['as'],'attributes':_0x253fce['attributes']};}):[]};}):[]};}):[]:[]})[_0x2eaa('0xd')](function(_0x37c668){logger[_0x2eaa('0xe')](_0x2eaa('0x16'),_0x145865);logger[_0x2eaa('0x10')](_0x2eaa('0x16'),_0x145865,JSON['stringify'](_0x37c668));_0x2f3bce(_0x37c668);})['catch'](function(_0x4fa05e){logger[_0x2eaa('0x11')](_0x2eaa('0x16'),_0x4fa05e['message'],_0x145865);_0x331e52(_0x58eb77['error'](0x1f4,_0x4fa05e[_0x2eaa('0x14')]));});});};
\ No newline at end of file
+var _0x5083=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetTemplate','Template','findAll','options','raw','attributes','limit','include','model','map','catch','util','moment'];(function(_0x257280,_0x11073a){var _0x20a396=function(_0xc2c312){while(--_0xc2c312){_0x257280['push'](_0x257280['shift']());}};_0x20a396(++_0x11073a);}(_0x5083,0x11e));var _0x3508=function(_0x2bcc72,_0x580cde){_0x2bcc72=_0x2bcc72-0x0;var _0x39cd72=_0x5083[_0x2bcc72];return _0x39cd72;};'use strict';var _=require('lodash');var util=require(_0x3508('0x0'));var moment=require(_0x3508('0x1'));var BPromise=require(_0x3508('0x2'));var rs=require(_0x3508('0x3'));var fs=require('fs');var Redis=require(_0x3508('0x4'));var db=require(_0x3508('0x5'))['db'];var utils=require(_0x3508('0x6'));var logger=require(_0x3508('0x7'))('rpc');var config=require(_0x3508('0x8'));var jayson=require(_0x3508('0x9'));var client=jayson[_0x3508('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3dd23a,_0x58e5ff,_0x37a323){return new BPromise(function(_0x249734,_0x52c9ed){return client['request'](_0x3dd23a,_0x37a323)[_0x3508('0xb')](function(_0x581369){logger['info'](_0x3508('0xc'),_0x58e5ff,_0x3508('0xd'));logger[_0x3508('0xe')](_0x3508('0xf'),_0x58e5ff,'request\x20sent',JSON[_0x3508('0x10')](_0x581369));if(_0x581369[_0x3508('0x11')]){if(_0x581369[_0x3508('0x11')][_0x3508('0x12')]===0x1f4){logger[_0x3508('0x11')](_0x3508('0xc'),_0x58e5ff,_0x581369[_0x3508('0x11')][_0x3508('0x13')]);return _0x52c9ed(_0x581369[_0x3508('0x11')][_0x3508('0x13')]);}logger[_0x3508('0x11')](_0x3508('0xc'),_0x58e5ff,_0x581369[_0x3508('0x11')][_0x3508('0x13')]);return _0x249734(_0x581369[_0x3508('0x11')][_0x3508('0x13')]);}else{logger['info'](_0x3508('0xc'),_0x58e5ff,_0x3508('0xd'));_0x249734(_0x581369[_0x3508('0x14')]['message']);}})['catch'](function(_0x229056){logger[_0x3508('0x11')](_0x3508('0xc'),_0x58e5ff,_0x229056);_0x52c9ed(_0x229056);});});}exports[_0x3508('0x15')]=function(_0x2645cf){var _0x22b828=this;return new Promise(function(_0x3ba624,_0x2f0229){return db[_0x3508('0x16')][_0x3508('0x17')]({'raw':_0x2645cf[_0x3508('0x18')]?_0x2645cf[_0x3508('0x18')][_0x3508('0x19')]===undefined?!![]:![]:!![],'where':_0x2645cf[_0x3508('0x18')]?_0x2645cf[_0x3508('0x18')]['where']||null:null,'attributes':_0x2645cf[_0x3508('0x18')]?_0x2645cf[_0x3508('0x18')][_0x3508('0x1a')]||null:null,'limit':_0x2645cf['options']?_0x2645cf[_0x3508('0x18')][_0x3508('0x1b')]||null:null,'include':_0x2645cf['options']?_0x2645cf[_0x3508('0x18')][_0x3508('0x1c')]?_['map'](_0x2645cf[_0x3508('0x18')][_0x3508('0x1c')],function(_0x4705d4){return{'model':db[_0x4705d4[_0x3508('0x1d')]],'as':_0x4705d4['as'],'attributes':_0x4705d4[_0x3508('0x1a')],'include':_0x4705d4[_0x3508('0x1c')]?_[_0x3508('0x1e')](_0x4705d4[_0x3508('0x1c')],function(_0x4bfd64){return{'model':db[_0x4bfd64['model']],'as':_0x4bfd64['as'],'attributes':_0x4bfd64[_0x3508('0x1a')],'include':_0x4bfd64[_0x3508('0x1c')]?_[_0x3508('0x1e')](_0x4bfd64['include'],function(_0x21e398){return{'model':db[_0x21e398[_0x3508('0x1d')]],'as':_0x21e398['as'],'attributes':_0x21e398[_0x3508('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x35ab7e){logger['info'](_0x3508('0x15'),_0x2645cf);logger['debug'](_0x3508('0x15'),_0x2645cf,JSON[_0x3508('0x10')](_0x35ab7e));_0x3ba624(_0x35ab7e);})[_0x3508('0x1f')](function(_0x14e1cf){logger[_0x3508('0x11')](_0x3508('0x15'),_0x14e1cf[_0x3508('0x13')],_0x2645cf);_0x2f0229(_0x22b828[_0x3508('0x11')](0x1f4,_0x14e1cf[_0x3508('0x13')]));});});};
\ No newline at end of file
index a6a545b..94c722d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e9a=['delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trigger.controller','get','isAuthenticated','index','/:id','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','create','addAnyCondition','put','update'];(function(_0x1684e2,_0x276757){var _0x138352=function(_0x4e836d){while(--_0x4e836d){_0x1684e2['push'](_0x1684e2['shift']());}};_0x138352(++_0x276757);}(_0x5e9a,0x72));var _0xa5e9=function(_0xa71b0f,_0x1249ce){_0xa71b0f=_0xa71b0f-0x0;var _0x334336=_0x5e9a[_0xa71b0f];return _0x334336;};'use strict';var multer=require('multer');var util=require(_0xa5e9('0x0'));var path=require(_0xa5e9('0x1'));var timeout=require(_0xa5e9('0x2'));var express=require(_0xa5e9('0x3'));var router=express[_0xa5e9('0x4')]();var fs_extra=require(_0xa5e9('0x5'));var auth=require(_0xa5e9('0x6'));var interaction=require(_0xa5e9('0x7'));var config=require(_0xa5e9('0x8'));var controller=require(_0xa5e9('0x9'));router[_0xa5e9('0xa')]('/',auth[_0xa5e9('0xb')](),controller[_0xa5e9('0xc')]);router[_0xa5e9('0xa')](_0xa5e9('0xd'),auth[_0xa5e9('0xb')](),controller[_0xa5e9('0xe')]);router[_0xa5e9('0xa')](_0xa5e9('0xf'),auth[_0xa5e9('0xb')](),controller[_0xa5e9('0x10')]);router[_0xa5e9('0xa')](_0xa5e9('0x11'),auth[_0xa5e9('0xb')](),controller[_0xa5e9('0x12')]);router['get'](_0xa5e9('0x13'),auth[_0xa5e9('0xb')](),controller[_0xa5e9('0x14')]);router[_0xa5e9('0x15')]('/',auth[_0xa5e9('0xb')](),controller[_0xa5e9('0x16')]);router[_0xa5e9('0x15')]('/:id/all_conditions',auth['isAuthenticated'](),controller['addAllCondition']);router['post']('/:id/any_conditions',auth[_0xa5e9('0xb')](),controller[_0xa5e9('0x17')]);router['post']('/:id/actions',auth['isAuthenticated'](),controller['addAction']);router[_0xa5e9('0x18')](_0xa5e9('0xd'),auth[_0xa5e9('0xb')](),controller[_0xa5e9('0x19')]);router[_0xa5e9('0x1a')](_0xa5e9('0xd'),auth[_0xa5e9('0xb')](),controller['destroy']);module[_0xa5e9('0x1b')]=router;
\ No newline at end of file
+var _0x1690=['multer','path','express','../../components/auth/service','../../config/environment','./trigger.controller','isAuthenticated','index','get','/:id','show','getAnyConditions','post','create','/:id/all_conditions','/:id/any_conditions','addAnyCondition','put','delete','destroy'];(function(_0xd050c6,_0x58ffb4){var _0x7278a=function(_0x16d03e){while(--_0x16d03e){_0xd050c6['push'](_0xd050c6['shift']());}};_0x7278a(++_0x58ffb4);}(_0x1690,0x1e0));var _0x0169=function(_0x9d5eef,_0x3669d2){_0x9d5eef=_0x9d5eef-0x0;var _0x2bbecc=_0x1690[_0x9d5eef];return _0x2bbecc;};'use strict';var multer=require(_0x0169('0x0'));var util=require('util');var path=require(_0x0169('0x1'));var timeout=require('connect-timeout');var express=require(_0x0169('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0169('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x0169('0x4'));var controller=require(_0x0169('0x5'));router['get']('/',auth[_0x0169('0x6')](),controller[_0x0169('0x7')]);router[_0x0169('0x8')](_0x0169('0x9'),auth[_0x0169('0x6')](),controller[_0x0169('0xa')]);router[_0x0169('0x8')]('/:id/all_conditions',auth['isAuthenticated'](),controller['getAllConditions']);router[_0x0169('0x8')]('/:id/any_conditions',auth[_0x0169('0x6')](),controller[_0x0169('0xb')]);router[_0x0169('0x8')]('/:id/actions',auth[_0x0169('0x6')](),controller['getActions']);router[_0x0169('0xc')]('/',auth['isAuthenticated'](),controller[_0x0169('0xd')]);router[_0x0169('0xc')](_0x0169('0xe'),auth[_0x0169('0x6')](),controller['addAllCondition']);router['post'](_0x0169('0xf'),auth[_0x0169('0x6')](),controller[_0x0169('0x10')]);router[_0x0169('0xc')]('/:id/actions',auth[_0x0169('0x6')](),controller['addAction']);router[_0x0169('0x11')](_0x0169('0x9'),auth[_0x0169('0x6')](),controller['update']);router[_0x0169('0x12')](_0x0169('0x9'),auth['isAuthenticated'](),controller[_0x0169('0x13')]);module['exports']=router;
\ No newline at end of file
index bcde67c..1e3145d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27d2=['exports','STRING','sequelize'];(function(_0x4b38ae,_0x2b9a48){var _0x47807a=function(_0x1080a5){while(--_0x1080a5){_0x4b38ae['push'](_0x4b38ae['shift']());}};_0x47807a(++_0x2b9a48);}(_0x27d2,0x19a));var _0x227d=function(_0x317724,_0x1705ef){_0x317724=_0x317724-0x0;var _0x148a12=_0x27d2[_0x317724];return _0x148a12;};'use strict';var Sequelize=require(_0x227d('0x0'));module[_0x227d('0x1')]={'name':{'type':Sequelize[_0x227d('0x2')]},'channel':{'type':Sequelize[_0x227d('0x2')]},'description':{'type':Sequelize[_0x227d('0x2')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x5c44=['exports','STRING','BOOLEAN'];(function(_0x43521e,_0x518aad){var _0x1584ad=function(_0x479495){while(--_0x479495){_0x43521e['push'](_0x43521e['shift']());}};_0x1584ad(++_0x518aad);}(_0x5c44,0x10b));var _0x45c4=function(_0x5adc03,_0x4640d5){_0x5adc03=_0x5adc03-0x0;var _0x3d1947=_0x5c44[_0x5adc03];return _0x3d1947;};'use strict';var Sequelize=require('sequelize');module[_0x45c4('0x0')]={'name':{'type':Sequelize[_0x45c4('0x1')]},'channel':{'type':Sequelize[_0x45c4('0x1')]},'description':{'type':Sequelize[_0x45c4('0x1')]},'status':{'type':Sequelize[_0x45c4('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 47f9690..9e794f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3a3=['mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','get','UserProfileResource','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','limit','order','sort','filter','merge','where','VIRTUAL','options','Trigger','includeAll','findAll','rows','catch','show','params','include','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Triggers','UserProfileSection','userProfileId','autoAssociation','find','addAllCondition','create','TriggerAnyId','Condition','getAllConditions','pick','hasOwnProperty','nolimit','getAnyConditions','findOne','Action','getActions','eml-format','rimraf','zip-dir','request-promise','moment'];(function(_0xd98799,_0x16e594){var _0x1a737b=function(_0xa8228a){while(--_0xa8228a){_0xd98799['push'](_0xd98799['shift']());}};_0x1a737b(++_0x16e594);}(_0xe3a3,0x118));var _0x3e3a=function(_0x594ff0,_0x51ebc4){_0x594ff0=_0x594ff0-0x0;var _0x4985d8=_0xe3a3[_0x594ff0];return _0x4985d8;};'use strict';var emlformat=require(_0x3e3a('0x0'));var rimraf=require(_0x3e3a('0x1'));var zipdir=require(_0x3e3a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3e3a('0x3'));var moment=require(_0x3e3a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3e3a('0x5'));var util=require(_0x3e3a('0x6'));var path=require('path');var sox=require(_0x3e3a('0x7'));var csv=require(_0x3e3a('0x8'));var ejs=require(_0x3e3a('0x9'));var fs=require('fs');var fs_extra=require(_0x3e3a('0xa'));var _=require(_0x3e3a('0xb'));var squel=require(_0x3e3a('0xc'));var crypto=require(_0x3e3a('0xd'));var jsforce=require(_0x3e3a('0xe'));var deskjs=require(_0x3e3a('0xf'));var toCsv=require(_0x3e3a('0x8'));var querystring=require('querystring');var Papa=require(_0x3e3a('0x10'));var Redis=require(_0x3e3a('0x11'));var authService=require(_0x3e3a('0x12'));var qs=require(_0x3e3a('0x13'));var as=require(_0x3e3a('0x14'));var hardwareService=require(_0x3e3a('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x3e3a('0x16'));var config=require(_0x3e3a('0x17'));var licenseUtil=require(_0x3e3a('0x18'));var db=require(_0x3e3a('0x19'))['db'];function respondWithStatusCode(_0x2a1793,_0x54733f){_0x54733f=_0x54733f||0xcc;return function(_0x423447){if(_0x423447){return _0x2a1793['sendStatus'](_0x54733f);}return _0x2a1793[_0x3e3a('0x1a')](_0x54733f)[_0x3e3a('0x1b')]();};}function respondWithResult(_0x5f523e,_0x3aa132){_0x3aa132=_0x3aa132||0xc8;return function(_0x3cae81){if(_0x3cae81){return _0x5f523e['status'](_0x3aa132)[_0x3e3a('0x1c')](_0x3cae81);}};}function respondWithFilteredResult(_0x42d136,_0x2e9cdf){return function(_0x20d529){if(_0x20d529){var _0x386c58=typeof _0x2e9cdf[_0x3e3a('0x1d')]===_0x3e3a('0x1e')&&typeof _0x2e9cdf['limit']===_0x3e3a('0x1e');var _0x16be71=_0x20d529[_0x3e3a('0x1f')];var _0x1d0553=_0x386c58?0x0:_0x2e9cdf[_0x3e3a('0x1d')];var _0x113a3c=_0x386c58?_0x20d529[_0x3e3a('0x1f')]:_0x2e9cdf[_0x3e3a('0x1d')]+_0x2e9cdf['limit'];var _0x26e23d;if(_0x113a3c>=_0x16be71){_0x113a3c=_0x16be71;_0x26e23d=0xc8;}else{_0x26e23d=0xce;}_0x42d136[_0x3e3a('0x1a')](_0x26e23d);return _0x42d136[_0x3e3a('0x20')](_0x3e3a('0x21'),_0x1d0553+'-'+_0x113a3c+'/'+_0x16be71)[_0x3e3a('0x1c')](_0x20d529);}return null;};}function patchUpdates(_0xb7cdfc){return function(_0x3e2837){try{jsonpatch[_0x3e3a('0x22')](_0x3e2837,_0xb7cdfc,!![]);}catch(_0x3f7362){return BPromise[_0x3e3a('0x23')](_0x3f7362);}return _0x3e2837[_0x3e3a('0x24')]();};}function saveUpdates(_0x5b0a3e,_0x549f2a){return function(_0x573c55){if(_0x573c55){return _0x573c55[_0x3e3a('0x25')](_0x5b0a3e)['then'](function(_0x3f2360){return _0x3f2360;});}return null;};}function removeEntity(_0x4bd333,_0x580bf1){return function(_0x3c1e0e){if(_0x3c1e0e){return _0x3c1e0e[_0x3e3a('0x26')]()[_0x3e3a('0x27')](function(){var _0x2e0b60=_0x3c1e0e[_0x3e3a('0x28')]({'plain':!![]});var _0x8571ae='Triggers';return db[_0x3e3a('0x29')][_0x3e3a('0x26')]({'where':{'type':_0x8571ae,'resourceId':_0x2e0b60['id']}})[_0x3e3a('0x27')](function(){return _0x3c1e0e;});})[_0x3e3a('0x27')](function(){_0x4bd333[_0x3e3a('0x1a')](0xcc)[_0x3e3a('0x1b')]();});}};}function handleEntityNotFound(_0x3e28d2,_0x2065ce){return function(_0x556b5f){if(!_0x556b5f){_0x3e28d2[_0x3e3a('0x2a')](0x194);}return _0x556b5f;};}function handleError(_0xb04105,_0xe2fde4){_0xe2fde4=_0xe2fde4||0x1f4;return function(_0x4a1ff7){logger[_0x3e3a('0x2b')](_0x4a1ff7[_0x3e3a('0x2c')]);if(_0x4a1ff7[_0x3e3a('0x2d')]){delete _0x4a1ff7[_0x3e3a('0x2d')];}_0xb04105[_0x3e3a('0x1a')](_0xe2fde4)['send'](_0x4a1ff7);};}exports[_0x3e3a('0x2e')]=function(_0x382b31,_0x4b2dea){var _0x3392a7={},_0x2603ca={},_0x381b5d={'count':0x0,'rows':[]};var _0x3aa8f6=_[_0x3e3a('0x2f')](db['Trigger'][_0x3e3a('0x30')],function(_0x4b0ae4){return{'name':_0x4b0ae4[_0x3e3a('0x31')],'type':_0x4b0ae4['type'][_0x3e3a('0x32')]};});_0x2603ca[_0x3e3a('0x33')]=_[_0x3e3a('0x2f')](_0x3aa8f6,_0x3e3a('0x2d'));_0x2603ca[_0x3e3a('0x34')]=_[_0x3e3a('0x35')](_0x382b31[_0x3e3a('0x34')]);_0x2603ca[_0x3e3a('0x36')]=_[_0x3e3a('0x37')](_0x2603ca['model'],_0x2603ca[_0x3e3a('0x34')]);_0x3392a7[_0x3e3a('0x38')]=_[_0x3e3a('0x37')](_0x2603ca['model'],qs['fields'](_0x382b31['query'][_0x3e3a('0x39')]));_0x3392a7['attributes']=_0x3392a7[_0x3e3a('0x38')][_0x3e3a('0x3a')]?_0x3392a7[_0x3e3a('0x38')]:_0x2603ca['model'];if(!_0x382b31[_0x3e3a('0x34')]['hasOwnProperty']('nolimit')){_0x3392a7[_0x3e3a('0x3b')]=qs[_0x3e3a('0x3b')](_0x382b31[_0x3e3a('0x34')][_0x3e3a('0x3b')]);_0x3392a7[_0x3e3a('0x1d')]=qs[_0x3e3a('0x1d')](_0x382b31[_0x3e3a('0x34')][_0x3e3a('0x1d')]);}_0x3392a7[_0x3e3a('0x3c')]=qs['sort'](_0x382b31[_0x3e3a('0x34')][_0x3e3a('0x3d')]);_0x3392a7['where']=qs[_0x3e3a('0x36')](_['pick'](_0x382b31['query'],_0x2603ca[_0x3e3a('0x36')]),_0x3aa8f6);if(_0x382b31[_0x3e3a('0x34')][_0x3e3a('0x3e')]){_0x3392a7['where']=_[_0x3e3a('0x3f')](_0x3392a7[_0x3e3a('0x40')],{'$or':_[_0x3e3a('0x2f')](_0x3aa8f6,function(_0x55e88d){if(_0x55e88d['type']!==_0x3e3a('0x41')){var _0x2f8c5a={};_0x2f8c5a[_0x55e88d['name']]={'$like':'%'+_0x382b31['query'][_0x3e3a('0x3e')]+'%'};return _0x2f8c5a;}})});}_0x3392a7=_[_0x3e3a('0x3f')]({},_0x3392a7,_0x382b31[_0x3e3a('0x42')]);var _0x3d3c59={'where':_0x3392a7[_0x3e3a('0x40')]};return db[_0x3e3a('0x43')]['count'](_0x3d3c59)[_0x3e3a('0x27')](function(_0x361890){_0x381b5d[_0x3e3a('0x1f')]=_0x361890;if(_0x382b31[_0x3e3a('0x34')][_0x3e3a('0x44')]){_0x3392a7['include']=[{'all':!![]}];}return db['Trigger'][_0x3e3a('0x45')](_0x3392a7);})[_0x3e3a('0x27')](function(_0x494bad){_0x381b5d[_0x3e3a('0x46')]=_0x494bad;return _0x381b5d;})[_0x3e3a('0x27')](respondWithFilteredResult(_0x4b2dea,_0x3392a7))[_0x3e3a('0x47')](handleError(_0x4b2dea,null));};exports[_0x3e3a('0x48')]=function(_0x166325,_0x5badb3){var _0x3a5e6d={'raw':![],'where':{'id':_0x166325[_0x3e3a('0x49')]['id']}},_0x42e602={};_0x42e602[_0x3e3a('0x33')]=_[_0x3e3a('0x35')](db[_0x3e3a('0x43')][_0x3e3a('0x30')]);_0x42e602[_0x3e3a('0x34')]=_[_0x3e3a('0x35')](_0x166325[_0x3e3a('0x34')]);_0x42e602[_0x3e3a('0x36')]=_[_0x3e3a('0x37')](_0x42e602['model'],_0x42e602[_0x3e3a('0x34')]);_0x3a5e6d['attributes']=_['intersection'](_0x42e602[_0x3e3a('0x33')],qs[_0x3e3a('0x39')](_0x166325['query'][_0x3e3a('0x39')]));_0x3a5e6d[_0x3e3a('0x38')]=_0x3a5e6d[_0x3e3a('0x38')][_0x3e3a('0x3a')]?_0x3a5e6d[_0x3e3a('0x38')]:_0x42e602[_0x3e3a('0x33')];if(_0x166325['query'][_0x3e3a('0x44')]){_0x3a5e6d[_0x3e3a('0x4a')]=[{'all':!![]}];}_0x3a5e6d=_[_0x3e3a('0x3f')]({},_0x3a5e6d,_0x166325[_0x3e3a('0x42')]);return db[_0x3e3a('0x43')]['find'](_0x3a5e6d)[_0x3e3a('0x27')](handleEntityNotFound(_0x5badb3,null))[_0x3e3a('0x27')](respondWithResult(_0x5badb3,null))[_0x3e3a('0x47')](handleError(_0x5badb3,null));};exports['create']=function(_0x4d99c9,_0x5f22f3){return db['Trigger']['create'](_0x4d99c9[_0x3e3a('0x4b')],{})[_0x3e3a('0x27')](function(_0x30e1ec){var _0x38b774=_0x4d99c9['user'][_0x3e3a('0x28')]({'plain':!![]});if(!_0x38b774)throw new Error(_0x3e3a('0x4c'));if(_0x38b774[_0x3e3a('0x4d')]==='user'){var _0x2a389e=_0x30e1ec[_0x3e3a('0x28')]({'plain':!![]});var _0x53897f=_0x3e3a('0x4e');return db[_0x3e3a('0x4f')]['find']({'where':{'name':_0x53897f,'userProfileId':_0x38b774[_0x3e3a('0x50')]},'raw':!![]})['then'](function(_0xddef79){if(_0xddef79&&_0xddef79[_0x3e3a('0x51')]===0x0){return db[_0x3e3a('0x29')]['create']({'name':_0x2a389e[_0x3e3a('0x2d')],'resourceId':_0x2a389e['id'],'type':_0xddef79[_0x3e3a('0x2d')],'sectionId':_0xddef79['id']},{})['then'](function(){return _0x30e1ec;});}else{return _0x30e1ec;}})[_0x3e3a('0x47')](function(_0x3b3b3e){logger[_0x3e3a('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3b3b3e);throw _0x3b3b3e;});}return _0x30e1ec;})[_0x3e3a('0x27')](respondWithResult(_0x5f22f3,0xc9))['catch'](handleError(_0x5f22f3,null));};exports[_0x3e3a('0x25')]=function(_0x43ee34,_0x47875c){if(_0x43ee34[_0x3e3a('0x4b')]['id']){delete _0x43ee34[_0x3e3a('0x4b')]['id'];}return db['Trigger']['find']({'where':{'id':_0x43ee34[_0x3e3a('0x49')]['id']}})[_0x3e3a('0x27')](handleEntityNotFound(_0x47875c,null))[_0x3e3a('0x27')](saveUpdates(_0x43ee34[_0x3e3a('0x4b')],null))[_0x3e3a('0x27')](respondWithResult(_0x47875c,null))[_0x3e3a('0x47')](handleError(_0x47875c,null));};exports[_0x3e3a('0x26')]=function(_0x3daa3e,_0x322df8){return db[_0x3e3a('0x43')][_0x3e3a('0x52')]({'where':{'id':_0x3daa3e[_0x3e3a('0x49')]['id']}})['then'](handleEntityNotFound(_0x322df8,null))[_0x3e3a('0x27')](removeEntity(_0x322df8,null))['catch'](handleError(_0x322df8,null));};exports[_0x3e3a('0x53')]=function(_0x364437,_0xd6412b,_0x5e32e9){if(_0x364437[_0x3e3a('0x4b')]['id']){delete _0x364437[_0x3e3a('0x4b')]['id'];}return db[_0x3e3a('0x43')][_0x3e3a('0x52')]({'where':{'id':_0x364437[_0x3e3a('0x49')]['id']}})[_0x3e3a('0x27')](handleEntityNotFound(_0xd6412b,null))[_0x3e3a('0x27')](function(_0x3eb7c4){if(_0x3eb7c4){_0x364437[_0x3e3a('0x4b')]['TriggerAllId']=_0x3eb7c4['id'];return db['Condition'][_0x3e3a('0x54')](_0x364437[_0x3e3a('0x4b')]);}})[_0x3e3a('0x27')](respondWithResult(_0xd6412b,null))[_0x3e3a('0x47')](handleError(_0xd6412b,null));};exports['addAnyCondition']=function(_0x22c495,_0x546e55,_0x1aeb02){if(_0x22c495[_0x3e3a('0x4b')]['id']){delete _0x22c495[_0x3e3a('0x4b')]['id'];}return db[_0x3e3a('0x43')]['find']({'where':{'id':_0x22c495[_0x3e3a('0x49')]['id']}})[_0x3e3a('0x27')](handleEntityNotFound(_0x546e55,null))[_0x3e3a('0x27')](function(_0x17e460){if(_0x17e460){_0x22c495[_0x3e3a('0x4b')][_0x3e3a('0x55')]=_0x17e460['id'];return db[_0x3e3a('0x56')][_0x3e3a('0x54')](_0x22c495[_0x3e3a('0x4b')]);}})[_0x3e3a('0x27')](respondWithResult(_0x546e55,null))[_0x3e3a('0x47')](handleError(_0x546e55,null));};exports[_0x3e3a('0x57')]=function(_0x3a8c19,_0x18000a,_0x3b5e0e){var _0x38d37b={};var _0x5acf94={};var _0x209124;var _0x122a11;return db['Trigger']['findOne']({'where':{'id':_0x3a8c19[_0x3e3a('0x49')]['id']}})[_0x3e3a('0x27')](handleEntityNotFound(_0x18000a,null))[_0x3e3a('0x27')](function(_0x1c29b8){if(_0x1c29b8){_0x209124=_0x1c29b8;_0x5acf94[_0x3e3a('0x33')]=_[_0x3e3a('0x35')](db[_0x3e3a('0x56')][_0x3e3a('0x30')]);_0x5acf94['query']=_[_0x3e3a('0x35')](_0x3a8c19[_0x3e3a('0x34')]);_0x5acf94['filters']=_[_0x3e3a('0x37')](_0x5acf94[_0x3e3a('0x33')],_0x5acf94[_0x3e3a('0x34')]);_0x38d37b['attributes']=_[_0x3e3a('0x37')](_0x5acf94[_0x3e3a('0x33')],qs[_0x3e3a('0x39')](_0x3a8c19[_0x3e3a('0x34')][_0x3e3a('0x39')]));_0x38d37b[_0x3e3a('0x38')]=_0x38d37b[_0x3e3a('0x38')]['length']?_0x38d37b[_0x3e3a('0x38')]:_0x5acf94['model'];_0x38d37b['order']=qs[_0x3e3a('0x3d')](_0x3a8c19[_0x3e3a('0x34')][_0x3e3a('0x3d')]);_0x38d37b[_0x3e3a('0x40')]=qs[_0x3e3a('0x36')](_[_0x3e3a('0x58')](_0x3a8c19[_0x3e3a('0x34')],_0x5acf94[_0x3e3a('0x36')]));if(_0x3a8c19[_0x3e3a('0x34')][_0x3e3a('0x3e')]){_0x38d37b[_0x3e3a('0x40')]=_['merge'](_0x38d37b[_0x3e3a('0x40')],{'$or':_[_0x3e3a('0x2f')](_0x38d37b['attributes'],function(_0x4d4b86){var _0x22aaa1={};_0x22aaa1[_0x4d4b86]={'$like':'%'+_0x3a8c19[_0x3e3a('0x34')][_0x3e3a('0x3e')]+'%'};return _0x22aaa1;})});}_0x38d37b=_[_0x3e3a('0x3f')]({},_0x38d37b,_0x3a8c19['options']);return _0x209124[_0x3e3a('0x57')](_0x38d37b);}})[_0x3e3a('0x27')](function(_0x51aff8){if(_0x51aff8){_0x122a11=_0x51aff8[_0x3e3a('0x3a')];if(!_0x3a8c19[_0x3e3a('0x34')][_0x3e3a('0x59')](_0x3e3a('0x5a'))){_0x38d37b[_0x3e3a('0x3b')]=qs[_0x3e3a('0x3b')](_0x3a8c19[_0x3e3a('0x34')][_0x3e3a('0x3b')]);_0x38d37b[_0x3e3a('0x1d')]=qs['offset'](_0x3a8c19['query']['offset']);}return _0x209124[_0x3e3a('0x57')](_0x38d37b);}})[_0x3e3a('0x27')](function(_0x3a41e4){if(_0x3a41e4){return _0x3a41e4?{'count':_0x122a11,'rows':_0x3a41e4}:null;}})['then'](respondWithResult(_0x18000a,null))[_0x3e3a('0x47')](handleError(_0x18000a,null));};exports[_0x3e3a('0x5b')]=function(_0x38594d,_0x395e82,_0xfbb078){var _0x1ede5d={};var _0x20240e={};var _0x1442fd;var _0x356bbb;return db[_0x3e3a('0x43')][_0x3e3a('0x5c')]({'where':{'id':_0x38594d[_0x3e3a('0x49')]['id']}})[_0x3e3a('0x27')](handleEntityNotFound(_0x395e82,null))['then'](function(_0x264d35){if(_0x264d35){_0x1442fd=_0x264d35;_0x20240e[_0x3e3a('0x33')]=_[_0x3e3a('0x35')](db[_0x3e3a('0x56')][_0x3e3a('0x30')]);_0x20240e[_0x3e3a('0x34')]=_[_0x3e3a('0x35')](_0x38594d['query']);_0x20240e['filters']=_[_0x3e3a('0x37')](_0x20240e['model'],_0x20240e[_0x3e3a('0x34')]);_0x1ede5d[_0x3e3a('0x38')]=_['intersection'](_0x20240e[_0x3e3a('0x33')],qs['fields'](_0x38594d[_0x3e3a('0x34')]['fields']));_0x1ede5d[_0x3e3a('0x38')]=_0x1ede5d['attributes'][_0x3e3a('0x3a')]?_0x1ede5d['attributes']:_0x20240e[_0x3e3a('0x33')];_0x1ede5d[_0x3e3a('0x3c')]=qs['sort'](_0x38594d[_0x3e3a('0x34')]['sort']);_0x1ede5d[_0x3e3a('0x40')]=qs['filters'](_[_0x3e3a('0x58')](_0x38594d[_0x3e3a('0x34')],_0x20240e[_0x3e3a('0x36')]));if(_0x38594d[_0x3e3a('0x34')][_0x3e3a('0x3e')]){_0x1ede5d[_0x3e3a('0x40')]=_[_0x3e3a('0x3f')](_0x1ede5d[_0x3e3a('0x40')],{'$or':_[_0x3e3a('0x2f')](_0x1ede5d[_0x3e3a('0x38')],function(_0x5f1e3c){var _0x200fd2={};_0x200fd2[_0x5f1e3c]={'$like':'%'+_0x38594d[_0x3e3a('0x34')][_0x3e3a('0x3e')]+'%'};return _0x200fd2;})});}_0x1ede5d=_[_0x3e3a('0x3f')]({},_0x1ede5d,_0x38594d[_0x3e3a('0x42')]);return _0x1442fd[_0x3e3a('0x5b')](_0x1ede5d);}})['then'](function(_0x333d43){if(_0x333d43){_0x356bbb=_0x333d43[_0x3e3a('0x3a')];if(!_0x38594d[_0x3e3a('0x34')][_0x3e3a('0x59')](_0x3e3a('0x5a'))){_0x1ede5d[_0x3e3a('0x3b')]=qs[_0x3e3a('0x3b')](_0x38594d[_0x3e3a('0x34')][_0x3e3a('0x3b')]);_0x1ede5d[_0x3e3a('0x1d')]=qs[_0x3e3a('0x1d')](_0x38594d[_0x3e3a('0x34')][_0x3e3a('0x1d')]);}return _0x1442fd['getAnyConditions'](_0x1ede5d);}})[_0x3e3a('0x27')](function(_0x4c52b5){if(_0x4c52b5){return _0x4c52b5?{'count':_0x356bbb,'rows':_0x4c52b5}:null;}})[_0x3e3a('0x27')](respondWithResult(_0x395e82,null))[_0x3e3a('0x47')](handleError(_0x395e82,null));};exports['addAction']=function(_0x259202,_0x5298aa,_0x415be5){if(_0x259202[_0x3e3a('0x4b')]['id']){delete _0x259202['body']['id'];}return db[_0x3e3a('0x43')][_0x3e3a('0x52')]({'where':{'id':_0x259202['params']['id']}})['then'](handleEntityNotFound(_0x5298aa,null))[_0x3e3a('0x27')](function(_0x2dfd7e){if(_0x2dfd7e){_0x259202[_0x3e3a('0x4b')]['TriggerId']=_0x2dfd7e['id'];return db[_0x3e3a('0x5d')][_0x3e3a('0x54')](_0x259202[_0x3e3a('0x4b')]);}})[_0x3e3a('0x27')](respondWithResult(_0x5298aa,null))[_0x3e3a('0x47')](handleError(_0x5298aa,null));};exports[_0x3e3a('0x5e')]=function(_0x1fe63f,_0x415d32,_0x224883){var _0x5d53e7={};var _0x5cae4d={};var _0xee209;var _0xba89b9;return db[_0x3e3a('0x43')]['findOne']({'where':{'id':_0x1fe63f[_0x3e3a('0x49')]['id']}})[_0x3e3a('0x27')](handleEntityNotFound(_0x415d32,null))['then'](function(_0x507dd1){if(_0x507dd1){_0xee209=_0x507dd1;_0x5cae4d[_0x3e3a('0x33')]=_[_0x3e3a('0x35')](db[_0x3e3a('0x5d')][_0x3e3a('0x30')]);_0x5cae4d[_0x3e3a('0x34')]=_[_0x3e3a('0x35')](_0x1fe63f['query']);_0x5cae4d[_0x3e3a('0x36')]=_[_0x3e3a('0x37')](_0x5cae4d['model'],_0x5cae4d[_0x3e3a('0x34')]);_0x5d53e7[_0x3e3a('0x38')]=_['intersection'](_0x5cae4d[_0x3e3a('0x33')],qs[_0x3e3a('0x39')](_0x1fe63f[_0x3e3a('0x34')][_0x3e3a('0x39')]));_0x5d53e7['attributes']=_0x5d53e7[_0x3e3a('0x38')][_0x3e3a('0x3a')]?_0x5d53e7[_0x3e3a('0x38')]:_0x5cae4d['model'];_0x5d53e7[_0x3e3a('0x3c')]=qs[_0x3e3a('0x3d')](_0x1fe63f[_0x3e3a('0x34')][_0x3e3a('0x3d')]);_0x5d53e7[_0x3e3a('0x40')]=qs[_0x3e3a('0x36')](_['pick'](_0x1fe63f[_0x3e3a('0x34')],_0x5cae4d[_0x3e3a('0x36')]));if(_0x1fe63f[_0x3e3a('0x34')][_0x3e3a('0x3e')]){_0x5d53e7[_0x3e3a('0x40')]=_['merge'](_0x5d53e7[_0x3e3a('0x40')],{'$or':_[_0x3e3a('0x2f')](_0x5d53e7['attributes'],function(_0x1367be){var _0x64544c={};_0x64544c[_0x1367be]={'$like':'%'+_0x1fe63f[_0x3e3a('0x34')][_0x3e3a('0x3e')]+'%'};return _0x64544c;})});}_0x5d53e7=_[_0x3e3a('0x3f')]({},_0x5d53e7,_0x1fe63f[_0x3e3a('0x42')]);return _0xee209[_0x3e3a('0x5e')](_0x5d53e7);}})[_0x3e3a('0x27')](function(_0x77b43){if(_0x77b43){_0xba89b9=_0x77b43[_0x3e3a('0x3a')];if(!_0x1fe63f['query'][_0x3e3a('0x59')](_0x3e3a('0x5a'))){_0x5d53e7[_0x3e3a('0x3b')]=qs[_0x3e3a('0x3b')](_0x1fe63f['query'][_0x3e3a('0x3b')]);_0x5d53e7[_0x3e3a('0x1d')]=qs[_0x3e3a('0x1d')](_0x1fe63f[_0x3e3a('0x34')][_0x3e3a('0x1d')]);}return _0xee209[_0x3e3a('0x5e')](_0x5d53e7);}})['then'](function(_0x29782b){if(_0x29782b){return _0x29782b?{'count':_0xba89b9,'rows':_0x29782b}:null;}})[_0x3e3a('0x27')](respondWithResult(_0x415d32,null))[_0x3e3a('0x47')](handleError(_0x415d32,null));};
\ No newline at end of file
+var _0x0a80=['limit','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','Trigger','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','length','hasOwnProperty','offset','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','fields','find','create','body','user','Triggers','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','Condition','addAnyCondition','getAllConditions','findOne','getAnyConditions','TriggerId','Action','getActions','nolimit','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','count'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0a80,0x99));var _0x00a8=function(_0x346064,_0x25d321){_0x346064=_0x346064-0x0;var _0x20c40d=_0x0a80[_0x346064];return _0x20c40d;};'use strict';var emlformat=require(_0x00a8('0x0'));var rimraf=require(_0x00a8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x00a8('0x2'));var rp=require(_0x00a8('0x3'));var moment=require(_0x00a8('0x4'));var BPromise=require(_0x00a8('0x5'));var Mustache=require(_0x00a8('0x6'));var util=require(_0x00a8('0x7'));var path=require(_0x00a8('0x8'));var sox=require(_0x00a8('0x9'));var csv=require(_0x00a8('0xa'));var ejs=require(_0x00a8('0xb'));var fs=require('fs');var fs_extra=require(_0x00a8('0xc'));var _=require(_0x00a8('0xd'));var squel=require('squel');var crypto=require(_0x00a8('0xe'));var jsforce=require(_0x00a8('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x00a8('0xa'));var querystring=require('querystring');var Papa=require(_0x00a8('0x10'));var Redis=require(_0x00a8('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x00a8('0x12'));var hardwareService=require(_0x00a8('0x13'));var logger=require('../../config/logger')(_0x00a8('0x14'));var utils=require(_0x00a8('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x00a8('0x16'))['db'];function respondWithStatusCode(_0x473e54,_0x4843d6){_0x4843d6=_0x4843d6||0xcc;return function(_0x266676){if(_0x266676){return _0x473e54[_0x00a8('0x17')](_0x4843d6);}return _0x473e54[_0x00a8('0x18')](_0x4843d6)[_0x00a8('0x19')]();};}function respondWithResult(_0x128a4f,_0x1a52d2){_0x1a52d2=_0x1a52d2||0xc8;return function(_0x57bb60){if(_0x57bb60){return _0x128a4f[_0x00a8('0x18')](_0x1a52d2)[_0x00a8('0x1a')](_0x57bb60);}};}function respondWithFilteredResult(_0x3c24e1,_0x5934bf){return function(_0x18ab09){if(_0x18ab09){var _0x43cde7=typeof _0x5934bf['offset']===_0x00a8('0x1b')&&typeof _0x5934bf['limit']===_0x00a8('0x1b');var _0x36119f=_0x18ab09[_0x00a8('0x1c')];var _0x40e341=_0x43cde7?0x0:_0x5934bf['offset'];var _0x4353ce=_0x43cde7?_0x18ab09['count']:_0x5934bf['offset']+_0x5934bf[_0x00a8('0x1d')];var _0x292683;if(_0x4353ce>=_0x36119f){_0x4353ce=_0x36119f;_0x292683=0xc8;}else{_0x292683=0xce;}_0x3c24e1[_0x00a8('0x18')](_0x292683);return _0x3c24e1[_0x00a8('0x1e')](_0x00a8('0x1f'),_0x40e341+'-'+_0x4353ce+'/'+_0x36119f)[_0x00a8('0x1a')](_0x18ab09);}return null;};}function patchUpdates(_0x5e5d98){return function(_0x401c0f){try{jsonpatch[_0x00a8('0x20')](_0x401c0f,_0x5e5d98,!![]);}catch(_0x379ed5){return BPromise[_0x00a8('0x21')](_0x379ed5);}return _0x401c0f[_0x00a8('0x22')]();};}function saveUpdates(_0x22607b,_0x33e570){return function(_0x3a2111){if(_0x3a2111){return _0x3a2111[_0x00a8('0x23')](_0x22607b)[_0x00a8('0x24')](function(_0x39c294){return _0x39c294;});}return null;};}function removeEntity(_0x1f8199,_0x20f2e4){return function(_0x2bb3ae){if(_0x2bb3ae){return _0x2bb3ae[_0x00a8('0x25')]()[_0x00a8('0x24')](function(){var _0x4f43cc=_0x2bb3ae[_0x00a8('0x26')]({'plain':!![]});var _0x2704d3='Triggers';return db[_0x00a8('0x27')][_0x00a8('0x25')]({'where':{'type':_0x2704d3,'resourceId':_0x4f43cc['id']}})[_0x00a8('0x24')](function(){return _0x2bb3ae;});})['then'](function(){_0x1f8199[_0x00a8('0x18')](0xcc)[_0x00a8('0x19')]();});}};}function handleEntityNotFound(_0x2bc54d,_0xd90b3b){return function(_0xb23a38){if(!_0xb23a38){_0x2bc54d[_0x00a8('0x17')](0x194);}return _0xb23a38;};}function handleError(_0x8f787b,_0x1ead07){_0x1ead07=_0x1ead07||0x1f4;return function(_0x175a06){logger[_0x00a8('0x28')](_0x175a06[_0x00a8('0x29')]);if(_0x175a06[_0x00a8('0x2a')]){delete _0x175a06[_0x00a8('0x2a')];}_0x8f787b[_0x00a8('0x18')](_0x1ead07)[_0x00a8('0x2b')](_0x175a06);};}exports[_0x00a8('0x2c')]=function(_0x4092a6,_0x1c1799){var _0xc2ef3f={},_0xd5be7b={},_0xb50f03={'count':0x0,'rows':[]};var _0x18422c=_[_0x00a8('0x2d')](db[_0x00a8('0x2e')][_0x00a8('0x2f')],function(_0xc17a3c){return{'name':_0xc17a3c['fieldName'],'type':_0xc17a3c[_0x00a8('0x30')][_0x00a8('0x31')]};});_0xd5be7b[_0x00a8('0x32')]=_[_0x00a8('0x2d')](_0x18422c,_0x00a8('0x2a'));_0xd5be7b['query']=_[_0x00a8('0x33')](_0x4092a6[_0x00a8('0x34')]);_0xd5be7b[_0x00a8('0x35')]=_[_0x00a8('0x36')](_0xd5be7b[_0x00a8('0x32')],_0xd5be7b['query']);_0xc2ef3f[_0x00a8('0x37')]=_[_0x00a8('0x36')](_0xd5be7b[_0x00a8('0x32')],qs['fields'](_0x4092a6[_0x00a8('0x34')]['fields']));_0xc2ef3f['attributes']=_0xc2ef3f['attributes'][_0x00a8('0x38')]?_0xc2ef3f[_0x00a8('0x37')]:_0xd5be7b['model'];if(!_0x4092a6['query'][_0x00a8('0x39')]('nolimit')){_0xc2ef3f['limit']=qs[_0x00a8('0x1d')](_0x4092a6[_0x00a8('0x34')][_0x00a8('0x1d')]);_0xc2ef3f['offset']=qs['offset'](_0x4092a6[_0x00a8('0x34')][_0x00a8('0x3a')]);}_0xc2ef3f[_0x00a8('0x3b')]=qs[_0x00a8('0x3c')](_0x4092a6[_0x00a8('0x34')]['sort']);_0xc2ef3f[_0x00a8('0x3d')]=qs[_0x00a8('0x35')](_[_0x00a8('0x3e')](_0x4092a6[_0x00a8('0x34')],_0xd5be7b[_0x00a8('0x35')]),_0x18422c);if(_0x4092a6['query'][_0x00a8('0x3f')]){_0xc2ef3f[_0x00a8('0x3d')]=_[_0x00a8('0x40')](_0xc2ef3f[_0x00a8('0x3d')],{'$or':_[_0x00a8('0x2d')](_0x18422c,function(_0x3c94c7){if(_0x3c94c7[_0x00a8('0x30')]!==_0x00a8('0x41')){var _0x382e38={};_0x382e38[_0x3c94c7['name']]={'$like':'%'+_0x4092a6['query'][_0x00a8('0x3f')]+'%'};return _0x382e38;}})});}_0xc2ef3f=_[_0x00a8('0x40')]({},_0xc2ef3f,_0x4092a6[_0x00a8('0x42')]);var _0x247cb9={'where':_0xc2ef3f[_0x00a8('0x3d')]};return db[_0x00a8('0x2e')][_0x00a8('0x1c')](_0x247cb9)[_0x00a8('0x24')](function(_0x251507){_0xb50f03[_0x00a8('0x1c')]=_0x251507;if(_0x4092a6[_0x00a8('0x34')][_0x00a8('0x43')]){_0xc2ef3f[_0x00a8('0x44')]=[{'all':!![]}];}return db[_0x00a8('0x2e')][_0x00a8('0x45')](_0xc2ef3f);})[_0x00a8('0x24')](function(_0x432d2d){_0xb50f03[_0x00a8('0x46')]=_0x432d2d;return _0xb50f03;})[_0x00a8('0x24')](respondWithFilteredResult(_0x1c1799,_0xc2ef3f))[_0x00a8('0x47')](handleError(_0x1c1799,null));};exports['show']=function(_0x4af160,_0x3a38ea){var _0x47cde6={'raw':![],'where':{'id':_0x4af160[_0x00a8('0x48')]['id']}},_0x3b401c={};_0x3b401c['model']=_[_0x00a8('0x33')](db[_0x00a8('0x2e')][_0x00a8('0x2f')]);_0x3b401c[_0x00a8('0x34')]=_[_0x00a8('0x33')](_0x4af160['query']);_0x3b401c[_0x00a8('0x35')]=_['intersection'](_0x3b401c[_0x00a8('0x32')],_0x3b401c[_0x00a8('0x34')]);_0x47cde6['attributes']=_[_0x00a8('0x36')](_0x3b401c[_0x00a8('0x32')],qs[_0x00a8('0x49')](_0x4af160[_0x00a8('0x34')][_0x00a8('0x49')]));_0x47cde6[_0x00a8('0x37')]=_0x47cde6[_0x00a8('0x37')]['length']?_0x47cde6[_0x00a8('0x37')]:_0x3b401c[_0x00a8('0x32')];if(_0x4af160[_0x00a8('0x34')][_0x00a8('0x43')]){_0x47cde6[_0x00a8('0x44')]=[{'all':!![]}];}_0x47cde6=_[_0x00a8('0x40')]({},_0x47cde6,_0x4af160['options']);return db[_0x00a8('0x2e')][_0x00a8('0x4a')](_0x47cde6)[_0x00a8('0x24')](handleEntityNotFound(_0x3a38ea,null))[_0x00a8('0x24')](respondWithResult(_0x3a38ea,null))[_0x00a8('0x47')](handleError(_0x3a38ea,null));};exports[_0x00a8('0x4b')]=function(_0xa491d2,_0x44d31a){return db[_0x00a8('0x2e')][_0x00a8('0x4b')](_0xa491d2[_0x00a8('0x4c')],{})[_0x00a8('0x24')](function(_0x26183d){var _0x2a461f=_0xa491d2[_0x00a8('0x4d')][_0x00a8('0x26')]({'plain':!![]});if(!_0x2a461f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2a461f['role']==='user'){var _0x23404a=_0x26183d[_0x00a8('0x26')]({'plain':!![]});var _0x19ae28=_0x00a8('0x4e');return db['UserProfileSection'][_0x00a8('0x4a')]({'where':{'name':_0x19ae28,'userProfileId':_0x2a461f['userProfileId']},'raw':!![]})[_0x00a8('0x24')](function(_0x54c65d){if(_0x54c65d&&_0x54c65d['autoAssociation']===0x0){return db[_0x00a8('0x27')][_0x00a8('0x4b')]({'name':_0x23404a[_0x00a8('0x2a')],'resourceId':_0x23404a['id'],'type':_0x54c65d[_0x00a8('0x2a')],'sectionId':_0x54c65d['id']},{})['then'](function(){return _0x26183d;});}else{return _0x26183d;}})[_0x00a8('0x47')](function(_0x17f7fd){logger[_0x00a8('0x28')](_0x00a8('0x4f'),_0x17f7fd);throw _0x17f7fd;});}return _0x26183d;})['then'](respondWithResult(_0x44d31a,0xc9))[_0x00a8('0x47')](handleError(_0x44d31a,null));};exports[_0x00a8('0x23')]=function(_0x2bb5a3,_0x5d9ae5){if(_0x2bb5a3[_0x00a8('0x4c')]['id']){delete _0x2bb5a3[_0x00a8('0x4c')]['id'];}return db[_0x00a8('0x2e')]['find']({'where':{'id':_0x2bb5a3[_0x00a8('0x48')]['id']}})[_0x00a8('0x24')](handleEntityNotFound(_0x5d9ae5,null))[_0x00a8('0x24')](saveUpdates(_0x2bb5a3['body'],null))[_0x00a8('0x24')](respondWithResult(_0x5d9ae5,null))['catch'](handleError(_0x5d9ae5,null));};exports['destroy']=function(_0xe3ee22,_0x3441c3){return db[_0x00a8('0x2e')]['find']({'where':{'id':_0xe3ee22[_0x00a8('0x48')]['id']}})[_0x00a8('0x24')](handleEntityNotFound(_0x3441c3,null))[_0x00a8('0x24')](removeEntity(_0x3441c3,null))['catch'](handleError(_0x3441c3,null));};exports[_0x00a8('0x50')]=function(_0x2207a9,_0x1c2d6b,_0x273264){if(_0x2207a9[_0x00a8('0x4c')]['id']){delete _0x2207a9[_0x00a8('0x4c')]['id'];}return db[_0x00a8('0x2e')]['find']({'where':{'id':_0x2207a9[_0x00a8('0x48')]['id']}})[_0x00a8('0x24')](handleEntityNotFound(_0x1c2d6b,null))[_0x00a8('0x24')](function(_0x14f7c7){if(_0x14f7c7){_0x2207a9[_0x00a8('0x4c')][_0x00a8('0x51')]=_0x14f7c7['id'];return db[_0x00a8('0x52')][_0x00a8('0x4b')](_0x2207a9[_0x00a8('0x4c')]);}})['then'](respondWithResult(_0x1c2d6b,null))['catch'](handleError(_0x1c2d6b,null));};exports[_0x00a8('0x53')]=function(_0x2ccae9,_0x4b983a,_0x762d99){if(_0x2ccae9[_0x00a8('0x4c')]['id']){delete _0x2ccae9[_0x00a8('0x4c')]['id'];}return db[_0x00a8('0x2e')][_0x00a8('0x4a')]({'where':{'id':_0x2ccae9['params']['id']}})[_0x00a8('0x24')](handleEntityNotFound(_0x4b983a,null))[_0x00a8('0x24')](function(_0x2e364f){if(_0x2e364f){_0x2ccae9[_0x00a8('0x4c')]['TriggerAnyId']=_0x2e364f['id'];return db[_0x00a8('0x52')][_0x00a8('0x4b')](_0x2ccae9[_0x00a8('0x4c')]);}})[_0x00a8('0x24')](respondWithResult(_0x4b983a,null))[_0x00a8('0x47')](handleError(_0x4b983a,null));};exports[_0x00a8('0x54')]=function(_0x4c9185,_0x281d33,_0x2d5ed6){var _0x4ebde3={};var _0x4374b3={};var _0x58d3ae;var _0x12764b;return db['Trigger'][_0x00a8('0x55')]({'where':{'id':_0x4c9185[_0x00a8('0x48')]['id']}})[_0x00a8('0x24')](handleEntityNotFound(_0x281d33,null))[_0x00a8('0x24')](function(_0x5af72c){if(_0x5af72c){_0x58d3ae=_0x5af72c;_0x4374b3[_0x00a8('0x32')]=_[_0x00a8('0x33')](db[_0x00a8('0x52')][_0x00a8('0x2f')]);_0x4374b3[_0x00a8('0x34')]=_[_0x00a8('0x33')](_0x4c9185[_0x00a8('0x34')]);_0x4374b3[_0x00a8('0x35')]=_['intersection'](_0x4374b3['model'],_0x4374b3['query']);_0x4ebde3[_0x00a8('0x37')]=_[_0x00a8('0x36')](_0x4374b3[_0x00a8('0x32')],qs['fields'](_0x4c9185[_0x00a8('0x34')]['fields']));_0x4ebde3[_0x00a8('0x37')]=_0x4ebde3[_0x00a8('0x37')]['length']?_0x4ebde3[_0x00a8('0x37')]:_0x4374b3[_0x00a8('0x32')];_0x4ebde3[_0x00a8('0x3b')]=qs[_0x00a8('0x3c')](_0x4c9185[_0x00a8('0x34')][_0x00a8('0x3c')]);_0x4ebde3['where']=qs['filters'](_['pick'](_0x4c9185[_0x00a8('0x34')],_0x4374b3[_0x00a8('0x35')]));if(_0x4c9185[_0x00a8('0x34')][_0x00a8('0x3f')]){_0x4ebde3['where']=_[_0x00a8('0x40')](_0x4ebde3[_0x00a8('0x3d')],{'$or':_['map'](_0x4ebde3[_0x00a8('0x37')],function(_0x1c979f){var _0x62dcf={};_0x62dcf[_0x1c979f]={'$like':'%'+_0x4c9185[_0x00a8('0x34')][_0x00a8('0x3f')]+'%'};return _0x62dcf;})});}_0x4ebde3=_['merge']({},_0x4ebde3,_0x4c9185[_0x00a8('0x42')]);return _0x58d3ae['getAllConditions'](_0x4ebde3);}})[_0x00a8('0x24')](function(_0x20572d){if(_0x20572d){_0x12764b=_0x20572d[_0x00a8('0x38')];if(!_0x4c9185['query'][_0x00a8('0x39')]('nolimit')){_0x4ebde3[_0x00a8('0x1d')]=qs['limit'](_0x4c9185[_0x00a8('0x34')][_0x00a8('0x1d')]);_0x4ebde3[_0x00a8('0x3a')]=qs[_0x00a8('0x3a')](_0x4c9185[_0x00a8('0x34')][_0x00a8('0x3a')]);}return _0x58d3ae[_0x00a8('0x54')](_0x4ebde3);}})[_0x00a8('0x24')](function(_0x20e990){if(_0x20e990){return _0x20e990?{'count':_0x12764b,'rows':_0x20e990}:null;}})[_0x00a8('0x24')](respondWithResult(_0x281d33,null))[_0x00a8('0x47')](handleError(_0x281d33,null));};exports[_0x00a8('0x56')]=function(_0x1ee68f,_0x409a08,_0x4fa754){var _0x1c60b2={};var _0x3139f7={};var _0x4c56ed;var _0x10f979;return db[_0x00a8('0x2e')]['findOne']({'where':{'id':_0x1ee68f[_0x00a8('0x48')]['id']}})['then'](handleEntityNotFound(_0x409a08,null))[_0x00a8('0x24')](function(_0x45de1d){if(_0x45de1d){_0x4c56ed=_0x45de1d;_0x3139f7[_0x00a8('0x32')]=_[_0x00a8('0x33')](db[_0x00a8('0x52')]['rawAttributes']);_0x3139f7[_0x00a8('0x34')]=_[_0x00a8('0x33')](_0x1ee68f[_0x00a8('0x34')]);_0x3139f7[_0x00a8('0x35')]=_[_0x00a8('0x36')](_0x3139f7[_0x00a8('0x32')],_0x3139f7[_0x00a8('0x34')]);_0x1c60b2[_0x00a8('0x37')]=_[_0x00a8('0x36')](_0x3139f7[_0x00a8('0x32')],qs['fields'](_0x1ee68f[_0x00a8('0x34')]['fields']));_0x1c60b2[_0x00a8('0x37')]=_0x1c60b2[_0x00a8('0x37')][_0x00a8('0x38')]?_0x1c60b2[_0x00a8('0x37')]:_0x3139f7['model'];_0x1c60b2[_0x00a8('0x3b')]=qs[_0x00a8('0x3c')](_0x1ee68f['query'][_0x00a8('0x3c')]);_0x1c60b2[_0x00a8('0x3d')]=qs['filters'](_[_0x00a8('0x3e')](_0x1ee68f['query'],_0x3139f7[_0x00a8('0x35')]));if(_0x1ee68f[_0x00a8('0x34')][_0x00a8('0x3f')]){_0x1c60b2[_0x00a8('0x3d')]=_[_0x00a8('0x40')](_0x1c60b2[_0x00a8('0x3d')],{'$or':_['map'](_0x1c60b2[_0x00a8('0x37')],function(_0x1b5ab0){var _0x417992={};_0x417992[_0x1b5ab0]={'$like':'%'+_0x1ee68f['query'][_0x00a8('0x3f')]+'%'};return _0x417992;})});}_0x1c60b2=_[_0x00a8('0x40')]({},_0x1c60b2,_0x1ee68f['options']);return _0x4c56ed[_0x00a8('0x56')](_0x1c60b2);}})[_0x00a8('0x24')](function(_0x4049f8){if(_0x4049f8){_0x10f979=_0x4049f8[_0x00a8('0x38')];if(!_0x1ee68f[_0x00a8('0x34')][_0x00a8('0x39')]('nolimit')){_0x1c60b2[_0x00a8('0x1d')]=qs['limit'](_0x1ee68f['query'][_0x00a8('0x1d')]);_0x1c60b2[_0x00a8('0x3a')]=qs[_0x00a8('0x3a')](_0x1ee68f['query'][_0x00a8('0x3a')]);}return _0x4c56ed[_0x00a8('0x56')](_0x1c60b2);}})[_0x00a8('0x24')](function(_0x20a4b6){if(_0x20a4b6){return _0x20a4b6?{'count':_0x10f979,'rows':_0x20a4b6}:null;}})['then'](respondWithResult(_0x409a08,null))['catch'](handleError(_0x409a08,null));};exports['addAction']=function(_0x182cdf,_0x5d0a3a,_0x5d1a71){if(_0x182cdf[_0x00a8('0x4c')]['id']){delete _0x182cdf['body']['id'];}return db[_0x00a8('0x2e')][_0x00a8('0x4a')]({'where':{'id':_0x182cdf['params']['id']}})['then'](handleEntityNotFound(_0x5d0a3a,null))[_0x00a8('0x24')](function(_0x5edcb5){if(_0x5edcb5){_0x182cdf[_0x00a8('0x4c')][_0x00a8('0x57')]=_0x5edcb5['id'];return db[_0x00a8('0x58')][_0x00a8('0x4b')](_0x182cdf[_0x00a8('0x4c')]);}})['then'](respondWithResult(_0x5d0a3a,null))['catch'](handleError(_0x5d0a3a,null));};exports[_0x00a8('0x59')]=function(_0x280186,_0x3d5e9e,_0x551840){var _0x4d24b8={};var _0x23c11a={};var _0x5c00e8;var _0x44b9c0;return db[_0x00a8('0x2e')][_0x00a8('0x55')]({'where':{'id':_0x280186[_0x00a8('0x48')]['id']}})[_0x00a8('0x24')](handleEntityNotFound(_0x3d5e9e,null))['then'](function(_0x11b28c){if(_0x11b28c){_0x5c00e8=_0x11b28c;_0x23c11a[_0x00a8('0x32')]=_[_0x00a8('0x33')](db[_0x00a8('0x58')][_0x00a8('0x2f')]);_0x23c11a[_0x00a8('0x34')]=_[_0x00a8('0x33')](_0x280186[_0x00a8('0x34')]);_0x23c11a[_0x00a8('0x35')]=_[_0x00a8('0x36')](_0x23c11a[_0x00a8('0x32')],_0x23c11a['query']);_0x4d24b8[_0x00a8('0x37')]=_[_0x00a8('0x36')](_0x23c11a['model'],qs[_0x00a8('0x49')](_0x280186[_0x00a8('0x34')][_0x00a8('0x49')]));_0x4d24b8['attributes']=_0x4d24b8['attributes'][_0x00a8('0x38')]?_0x4d24b8[_0x00a8('0x37')]:_0x23c11a[_0x00a8('0x32')];_0x4d24b8[_0x00a8('0x3b')]=qs[_0x00a8('0x3c')](_0x280186['query'][_0x00a8('0x3c')]);_0x4d24b8['where']=qs[_0x00a8('0x35')](_[_0x00a8('0x3e')](_0x280186['query'],_0x23c11a[_0x00a8('0x35')]));if(_0x280186[_0x00a8('0x34')][_0x00a8('0x3f')]){_0x4d24b8[_0x00a8('0x3d')]=_[_0x00a8('0x40')](_0x4d24b8[_0x00a8('0x3d')],{'$or':_[_0x00a8('0x2d')](_0x4d24b8[_0x00a8('0x37')],function(_0x18b184){var _0x14d5f8={};_0x14d5f8[_0x18b184]={'$like':'%'+_0x280186['query'][_0x00a8('0x3f')]+'%'};return _0x14d5f8;})});}_0x4d24b8=_[_0x00a8('0x40')]({},_0x4d24b8,_0x280186[_0x00a8('0x42')]);return _0x5c00e8[_0x00a8('0x59')](_0x4d24b8);}})[_0x00a8('0x24')](function(_0x7a8fcb){if(_0x7a8fcb){_0x44b9c0=_0x7a8fcb['length'];if(!_0x280186[_0x00a8('0x34')][_0x00a8('0x39')](_0x00a8('0x5a'))){_0x4d24b8['limit']=qs[_0x00a8('0x1d')](_0x280186[_0x00a8('0x34')][_0x00a8('0x1d')]);_0x4d24b8[_0x00a8('0x3a')]=qs['offset'](_0x280186[_0x00a8('0x34')][_0x00a8('0x3a')]);}return _0x5c00e8[_0x00a8('0x59')](_0x4d24b8);}})['then'](function(_0x9d4e11){if(_0x9d4e11){return _0x9d4e11?{'count':_0x44b9c0,'rows':_0x9d4e11}:null;}})['then'](respondWithResult(_0x3d5e9e,null))['catch'](handleError(_0x3d5e9e,null));};
\ No newline at end of file
index a86c7f9..9aab240 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ef3=['path','rimraf','./trigger.attributes','exports','define','Trigger','lodash','util','api','moment','bluebird'];(function(_0x13a453,_0x524429){var _0x440792=function(_0x4e2f4f){while(--_0x4e2f4f){_0x13a453['push'](_0x13a453['shift']());}};_0x440792(++_0x524429);}(_0x1ef3,0x69));var _0x31ef=function(_0x47c85e,_0x21d10d){_0x47c85e=_0x47c85e-0x0;var _0xc0b996=_0x1ef3[_0x47c85e];return _0xc0b996;};'use strict';var _=require(_0x31ef('0x0'));var util=require(_0x31ef('0x1'));var logger=require('../../config/logger')(_0x31ef('0x2'));var moment=require(_0x31ef('0x3'));var BPromise=require(_0x31ef('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x31ef('0x5'));var rimraf=require(_0x31ef('0x6'));var config=require('../../config/environment');var attributes=require(_0x31ef('0x7'));module[_0x31ef('0x8')]=function(_0x81db4,_0x454b60){return _0x81db4[_0x31ef('0x9')](_0x31ef('0xa'),attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6ddd=['exports','Trigger','tools_triggers','../../config/logger','api','moment','bluebird','path','../../config/environment'];(function(_0x1ba501,_0x4bd458){var _0x326d9b=function(_0x505af0){while(--_0x505af0){_0x1ba501['push'](_0x1ba501['shift']());}};_0x326d9b(++_0x4bd458);}(_0x6ddd,0xae));var _0xd6dd=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x6ddd[_0x1facfa];return _0x9ec701;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd6dd('0x0'))(_0xd6dd('0x1'));var moment=require(_0xd6dd('0x2'));var BPromise=require(_0xd6dd('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd6dd('0x4'));var rimraf=require('rimraf');var config=require(_0xd6dd('0x5'));var attributes=require('./trigger.attributes');module[_0xd6dd('0x6')]=function(_0x27439a,_0x47005f){return _0x27439a['define'](_0xd6dd('0x7'),attributes,{'tableName':_0xd6dd('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ea262bb..088c304 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2ce=['attributes','limit','map','include','model','GetTrigger','ShowTrigger','find','lodash','util','moment','bluebird','randomstring','../../mysqldb','jayson/promise','client','http','request','then','info','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','Trigger','findAll','options','raw','where'];(function(_0x11a220,_0x4e470a){var _0x20d8fe=function(_0xbedfd){while(--_0xbedfd){_0x11a220['push'](_0x11a220['shift']());}};_0x20d8fe(++_0x4e470a);}(_0xc2ce,0x118));var _0xec2c=function(_0x545b71,_0x4f44eb){_0x545b71=_0x545b71-0x0;var _0x26e587=_0xc2ce[_0x545b71];return _0x26e587;};'use strict';var _=require(_0xec2c('0x0'));var util=require(_0xec2c('0x1'));var moment=require(_0xec2c('0x2'));var BPromise=require(_0xec2c('0x3'));var rs=require(_0xec2c('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xec2c('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xec2c('0x6'));var client=jayson[_0xec2c('0x7')][_0xec2c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x35e619,_0x3e1197,_0x3d498c){return new BPromise(function(_0x478e66,_0x26166a){return client[_0xec2c('0x9')](_0x35e619,_0x3d498c)[_0xec2c('0xa')](function(_0x2ce78b){logger[_0xec2c('0xb')](_0xec2c('0xc'),_0x3e1197,_0xec2c('0xd'));logger[_0xec2c('0xe')](_0xec2c('0xf'),_0x3e1197,_0xec2c('0xd'),JSON[_0xec2c('0x10')](_0x2ce78b));if(_0x2ce78b[_0xec2c('0x11')]){if(_0x2ce78b[_0xec2c('0x11')]['code']===0x1f4){logger[_0xec2c('0x11')](_0xec2c('0xc'),_0x3e1197,_0x2ce78b['error']['message']);return _0x26166a(_0x2ce78b[_0xec2c('0x11')][_0xec2c('0x12')]);}logger[_0xec2c('0x11')](_0xec2c('0xc'),_0x3e1197,_0x2ce78b['error']['message']);return _0x478e66(_0x2ce78b[_0xec2c('0x11')]['message']);}else{logger[_0xec2c('0xb')](_0xec2c('0xc'),_0x3e1197,'request\x20sent');_0x478e66(_0x2ce78b[_0xec2c('0x13')][_0xec2c('0x12')]);}})[_0xec2c('0x14')](function(_0x51a1cc){logger[_0xec2c('0x11')]('Trigger,\x20%s,\x20%s',_0x3e1197,_0x51a1cc);_0x26166a(_0x51a1cc);});});}exports['GetTrigger']=function(_0x5cfa5e){var _0x1efb8b=this;return new Promise(function(_0x5acc48,_0x22bf3b){return db[_0xec2c('0x15')][_0xec2c('0x16')]({'raw':_0x5cfa5e[_0xec2c('0x17')]?_0x5cfa5e[_0xec2c('0x17')][_0xec2c('0x18')]===undefined?!![]:![]:!![],'where':_0x5cfa5e[_0xec2c('0x17')]?_0x5cfa5e[_0xec2c('0x17')][_0xec2c('0x19')]||null:null,'attributes':_0x5cfa5e[_0xec2c('0x17')]?_0x5cfa5e[_0xec2c('0x17')][_0xec2c('0x1a')]||null:null,'limit':_0x5cfa5e['options']?_0x5cfa5e[_0xec2c('0x17')][_0xec2c('0x1b')]||null:null,'include':_0x5cfa5e[_0xec2c('0x17')]?_0x5cfa5e['options']['include']?_[_0xec2c('0x1c')](_0x5cfa5e[_0xec2c('0x17')][_0xec2c('0x1d')],function(_0x4264f1){return{'model':db[_0x4264f1[_0xec2c('0x1e')]],'as':_0x4264f1['as'],'attributes':_0x4264f1[_0xec2c('0x1a')],'include':_0x4264f1[_0xec2c('0x1d')]?_['map'](_0x4264f1[_0xec2c('0x1d')],function(_0x1b39ab){return{'model':db[_0x1b39ab[_0xec2c('0x1e')]],'as':_0x1b39ab['as'],'attributes':_0x1b39ab[_0xec2c('0x1a')],'include':_0x1b39ab[_0xec2c('0x1d')]?_[_0xec2c('0x1c')](_0x1b39ab[_0xec2c('0x1d')],function(_0x284ed0){return{'model':db[_0x284ed0[_0xec2c('0x1e')]],'as':_0x284ed0['as'],'attributes':_0x284ed0[_0xec2c('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xec2c('0xa')](function(_0x29273a){logger[_0xec2c('0xb')](_0xec2c('0x1f'),_0x5cfa5e);logger[_0xec2c('0xe')](_0xec2c('0x1f'),_0x5cfa5e,JSON[_0xec2c('0x10')](_0x29273a));_0x5acc48(_0x29273a);})[_0xec2c('0x14')](function(_0x1516de){logger[_0xec2c('0x11')](_0xec2c('0x1f'),_0x1516de[_0xec2c('0x12')],_0x5cfa5e);_0x22bf3b(_0x1efb8b[_0xec2c('0x11')](0x1f4,_0x1516de[_0xec2c('0x12')]));});});};exports[_0xec2c('0x20')]=function(_0x43a2f1){var _0x1e2393=this;return new Promise(function(_0x2151d2,_0x809012){return db['Trigger'][_0xec2c('0x21')]({'raw':_0x43a2f1[_0xec2c('0x17')]?_0x43a2f1[_0xec2c('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x43a2f1[_0xec2c('0x17')]?_0x43a2f1[_0xec2c('0x17')][_0xec2c('0x19')]||null:null,'attributes':_0x43a2f1[_0xec2c('0x17')]?_0x43a2f1['options'][_0xec2c('0x1a')]||null:null,'include':_0x43a2f1[_0xec2c('0x17')]?_0x43a2f1[_0xec2c('0x17')][_0xec2c('0x1d')]?_[_0xec2c('0x1c')](_0x43a2f1['options'][_0xec2c('0x1d')],function(_0x1fb2a0){return{'model':db[_0x1fb2a0['model']],'as':_0x1fb2a0['as'],'attributes':_0x1fb2a0['attributes'],'include':_0x1fb2a0[_0xec2c('0x1d')]?_[_0xec2c('0x1c')](_0x1fb2a0[_0xec2c('0x1d')],function(_0x373a8e){return{'model':db[_0x373a8e[_0xec2c('0x1e')]],'as':_0x373a8e['as'],'attributes':_0x373a8e[_0xec2c('0x1a')],'include':_0x373a8e['include']?_[_0xec2c('0x1c')](_0x373a8e[_0xec2c('0x1d')],function(_0x1762f7){return{'model':db[_0x1762f7['model']],'as':_0x1762f7['as'],'attributes':_0x1762f7['attributes']};}):[]};}):[]};}):[]:[]})[_0xec2c('0xa')](function(_0x528e18){logger[_0xec2c('0xb')](_0xec2c('0x20'),_0x43a2f1);logger[_0xec2c('0xe')]('ShowTrigger',_0x43a2f1,JSON[_0xec2c('0x10')](_0x528e18));_0x2151d2(_0x528e18);})[_0xec2c('0x14')](function(_0x5bed15){logger[_0xec2c('0x11')]('ShowTrigger',_0x5bed15[_0xec2c('0x12')],_0x43a2f1);_0x809012(_0x1e2393[_0xec2c('0x11')](0x1f4,_0x5bed15['message']));});});};
\ No newline at end of file
+var _0xced7=['bluebird','randomstring','../../mysqldb','../../config/logger','rpc','client','http','then','Trigger,\x20%s,\x20%s','request\x20sent','Trigger,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','Trigger','findAll','options','where','limit','include','map','model','attributes','debug','GetTrigger','ShowTrigger','find','raw','lodash','util','moment'];(function(_0x5d4876,_0x11e6b0){var _0x6927ac=function(_0x2e9a3a){while(--_0x2e9a3a){_0x5d4876['push'](_0x5d4876['shift']());}};_0x6927ac(++_0x11e6b0);}(_0xced7,0xf2));var _0x7ced=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xced7[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7ced('0x0'));var util=require(_0x7ced('0x1'));var moment=require(_0x7ced('0x2'));var BPromise=require(_0x7ced('0x3'));var rs=require(_0x7ced('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7ced('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7ced('0x6'))(_0x7ced('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x7ced('0x8')][_0x7ced('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x48594d,_0x1f63ec,_0x3cea89){return new BPromise(function(_0x5c591e,_0x30689b){return client['request'](_0x48594d,_0x3cea89)[_0x7ced('0xa')](function(_0x1092c2){logger['info'](_0x7ced('0xb'),_0x1f63ec,_0x7ced('0xc'));logger['debug'](_0x7ced('0xd'),_0x1f63ec,_0x7ced('0xc'),JSON[_0x7ced('0xe')](_0x1092c2));if(_0x1092c2['error']){if(_0x1092c2['error'][_0x7ced('0xf')]===0x1f4){logger[_0x7ced('0x10')]('Trigger,\x20%s,\x20%s',_0x1f63ec,_0x1092c2[_0x7ced('0x10')]['message']);return _0x30689b(_0x1092c2['error']['message']);}logger[_0x7ced('0x10')]('Trigger,\x20%s,\x20%s',_0x1f63ec,_0x1092c2[_0x7ced('0x10')][_0x7ced('0x11')]);return _0x5c591e(_0x1092c2[_0x7ced('0x10')][_0x7ced('0x11')]);}else{logger[_0x7ced('0x12')](_0x7ced('0xb'),_0x1f63ec,_0x7ced('0xc'));_0x5c591e(_0x1092c2[_0x7ced('0x13')][_0x7ced('0x11')]);}})[_0x7ced('0x14')](function(_0x314584){logger[_0x7ced('0x10')](_0x7ced('0xb'),_0x1f63ec,_0x314584);_0x30689b(_0x314584);});});}exports['GetTrigger']=function(_0x3ee432){var _0x9b1cec=this;return new Promise(function(_0x38949d,_0x47069c){return db[_0x7ced('0x15')][_0x7ced('0x16')]({'raw':_0x3ee432['options']?_0x3ee432['options']['raw']===undefined?!![]:![]:!![],'where':_0x3ee432[_0x7ced('0x17')]?_0x3ee432[_0x7ced('0x17')][_0x7ced('0x18')]||null:null,'attributes':_0x3ee432[_0x7ced('0x17')]?_0x3ee432[_0x7ced('0x17')]['attributes']||null:null,'limit':_0x3ee432[_0x7ced('0x17')]?_0x3ee432[_0x7ced('0x17')][_0x7ced('0x19')]||null:null,'include':_0x3ee432[_0x7ced('0x17')]?_0x3ee432[_0x7ced('0x17')][_0x7ced('0x1a')]?_[_0x7ced('0x1b')](_0x3ee432[_0x7ced('0x17')][_0x7ced('0x1a')],function(_0x1adc14){return{'model':db[_0x1adc14[_0x7ced('0x1c')]],'as':_0x1adc14['as'],'attributes':_0x1adc14['attributes'],'include':_0x1adc14['include']?_[_0x7ced('0x1b')](_0x1adc14[_0x7ced('0x1a')],function(_0x1b1e67){return{'model':db[_0x1b1e67[_0x7ced('0x1c')]],'as':_0x1b1e67['as'],'attributes':_0x1b1e67[_0x7ced('0x1d')],'include':_0x1b1e67[_0x7ced('0x1a')]?_[_0x7ced('0x1b')](_0x1b1e67[_0x7ced('0x1a')],function(_0x5756ca){return{'model':db[_0x5756ca[_0x7ced('0x1c')]],'as':_0x5756ca['as'],'attributes':_0x5756ca['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5957d8){logger[_0x7ced('0x12')]('GetTrigger',_0x3ee432);logger[_0x7ced('0x1e')](_0x7ced('0x1f'),_0x3ee432,JSON[_0x7ced('0xe')](_0x5957d8));_0x38949d(_0x5957d8);})['catch'](function(_0x2213b6){logger[_0x7ced('0x10')](_0x7ced('0x1f'),_0x2213b6['message'],_0x3ee432);_0x47069c(_0x9b1cec['error'](0x1f4,_0x2213b6[_0x7ced('0x11')]));});});};exports[_0x7ced('0x20')]=function(_0x3c3b01){var _0x10e6ef=this;return new Promise(function(_0x2166c8,_0x56cc6a){return db[_0x7ced('0x15')][_0x7ced('0x21')]({'raw':_0x3c3b01[_0x7ced('0x17')]?_0x3c3b01['options'][_0x7ced('0x22')]===undefined?!![]:![]:!![],'where':_0x3c3b01['options']?_0x3c3b01[_0x7ced('0x17')][_0x7ced('0x18')]||null:null,'attributes':_0x3c3b01[_0x7ced('0x17')]?_0x3c3b01['options']['attributes']||null:null,'include':_0x3c3b01[_0x7ced('0x17')]?_0x3c3b01['options'][_0x7ced('0x1a')]?_[_0x7ced('0x1b')](_0x3c3b01['options'][_0x7ced('0x1a')],function(_0x1b8934){return{'model':db[_0x1b8934[_0x7ced('0x1c')]],'as':_0x1b8934['as'],'attributes':_0x1b8934['attributes'],'include':_0x1b8934[_0x7ced('0x1a')]?_['map'](_0x1b8934[_0x7ced('0x1a')],function(_0x379d76){return{'model':db[_0x379d76[_0x7ced('0x1c')]],'as':_0x379d76['as'],'attributes':_0x379d76[_0x7ced('0x1d')],'include':_0x379d76[_0x7ced('0x1a')]?_[_0x7ced('0x1b')](_0x379d76[_0x7ced('0x1a')],function(_0x2df367){return{'model':db[_0x2df367[_0x7ced('0x1c')]],'as':_0x2df367['as'],'attributes':_0x2df367[_0x7ced('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x7ced('0xa')](function(_0x4d67c2){logger['info']('ShowTrigger',_0x3c3b01);logger['debug']('ShowTrigger',_0x3c3b01,JSON[_0x7ced('0xe')](_0x4d67c2));_0x2166c8(_0x4d67c2);})[_0x7ced('0x14')](function(_0x9beb83){logger['error'](_0x7ced('0x20'),_0x9beb83['message'],_0x3c3b01);_0x56cc6a(_0x10e6ef[_0x7ced('0x10')](0x1f4,_0x9beb83['message']));});});};
\ No newline at end of file
index 680151a..1d97d33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1cf=['clone','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./trunk.controller','get','isAuthenticated','index','/:id','show','post','/:id/clone'];(function(_0x67fc81,_0x7d41ae){var _0x9f0dfb=function(_0xc0739a){while(--_0xc0739a){_0x67fc81['push'](_0x67fc81['shift']());}};_0x9f0dfb(++_0x7d41ae);}(_0xf1cf,0xa1));var _0xff1c=function(_0x565374,_0x395149){_0x565374=_0x565374-0x0;var _0x31cd93=_0xf1cf[_0x565374];return _0x31cd93;};'use strict';var multer=require(_0xff1c('0x0'));var util=require(_0xff1c('0x1'));var path=require(_0xff1c('0x2'));var timeout=require(_0xff1c('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xff1c('0x4'));var auth=require(_0xff1c('0x5'));var interaction=require(_0xff1c('0x6'));var config=require('../../config/environment');var controller=require(_0xff1c('0x7'));router[_0xff1c('0x8')]('/',auth[_0xff1c('0x9')](),controller[_0xff1c('0xa')]);router[_0xff1c('0x8')](_0xff1c('0xb'),auth[_0xff1c('0x9')](),controller[_0xff1c('0xc')]);router[_0xff1c('0xd')](_0xff1c('0xe'),auth[_0xff1c('0x9')](),controller[_0xff1c('0xf')]);router['post']('/',auth[_0xff1c('0x9')](),controller[_0xff1c('0x10')]);router[_0xff1c('0x11')](_0xff1c('0xb'),auth[_0xff1c('0x9')](),controller[_0xff1c('0x12')]);router[_0xff1c('0x13')](_0xff1c('0xb'),auth[_0xff1c('0x9')](),controller[_0xff1c('0x14')]);module[_0xff1c('0x15')]=router;
\ No newline at end of file
+var _0xcaf6=['../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/clone','clone','post','create','put','update','destroy','exports','multer','path','connect-timeout','express','Router'];(function(_0xecd3f7,_0x2db2eb){var _0x26d3d9=function(_0x471c37){while(--_0x471c37){_0xecd3f7['push'](_0xecd3f7['shift']());}};_0x26d3d9(++_0x2db2eb);}(_0xcaf6,0x87));var _0x6caf=function(_0x133e8d,_0x4648f1){_0x133e8d=_0x133e8d-0x0;var _0x10ce55=_0xcaf6[_0x133e8d];return _0x10ce55;};'use strict';var multer=require(_0x6caf('0x0'));var util=require('util');var path=require(_0x6caf('0x1'));var timeout=require(_0x6caf('0x2'));var express=require(_0x6caf('0x3'));var router=express[_0x6caf('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x6caf('0x5'));var config=require(_0x6caf('0x6'));var controller=require('./trunk.controller');router['get']('/',auth[_0x6caf('0x7')](),controller[_0x6caf('0x8')]);router[_0x6caf('0x9')](_0x6caf('0xa'),auth[_0x6caf('0x7')](),controller[_0x6caf('0xb')]);router['post'](_0x6caf('0xc'),auth[_0x6caf('0x7')](),controller[_0x6caf('0xd')]);router[_0x6caf('0xe')]('/',auth[_0x6caf('0x7')](),controller[_0x6caf('0xf')]);router[_0x6caf('0x10')](_0x6caf('0xa'),auth['isAuthenticated'](),controller[_0x6caf('0x11')]);router['delete'](_0x6caf('0xa'),auth['isAuthenticated'](),controller[_0x6caf('0x12')]);module[_0x6caf('0x13')]=router;
\ No newline at end of file
index d0ece53..be03b0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4ec=['shortinfo','inband','auto','outgoing','force_rport,comedia','nat','ulaw;alaw;gsm','allow','yes','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','\x22\x22\x20<>','always','accept','refuse','uac','uas','pai','certificate','active','passive','BOOLEAN','sequelize','STRING','name','ENUM','friend','user','peer','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','udp','setDataValue','transport','join','getDataValue','split'];(function(_0x5af90e,_0x4222f1){var _0x28f746=function(_0x5ad5b6){while(--_0x5ad5b6){_0x5af90e['push'](_0x5af90e['shift']());}};_0x28f746(++_0x4222f1);}(_0xf4ec,0x1db));var _0xcf4e=function(_0x40529b,_0x5a44c8){_0x40529b=_0x40529b-0x0;var _0x5bfd85=_0xf4ec[_0x40529b];return _0x5bfd85;};'use strict';var Sequelize=require(_0xcf4e('0x0'));module['exports']={'name':{'type':Sequelize[_0xcf4e('0x1')],'allowNull':![],'unique':_0xcf4e('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xcf4e('0x3')](_0xcf4e('0x4'),_0xcf4e('0x5'),_0xcf4e('0x6')),'allowNull':![],'defaultValue':_0xcf4e('0x4')},'context':{'type':Sequelize[_0xcf4e('0x1')],'allowNull':![],'defaultValue':_0xcf4e('0x7')},'callingpres':{'type':Sequelize['ENUM'](_0xcf4e('0x8'),_0xcf4e('0x9'),_0xcf4e('0xa'),_0xcf4e('0xb'),_0xcf4e('0xc'),'PROHIB_PASSED_SCREEN',_0xcf4e('0xd'),'PROHIB')},'deny':{'type':Sequelize[_0xcf4e('0x1')]},'permit':{'type':Sequelize[_0xcf4e('0x1')]},'secret':{'type':Sequelize[_0xcf4e('0x1')]},'md5secret':{'type':Sequelize[_0xcf4e('0x1')]},'remotesecret':{'type':Sequelize['STRING']},'transport':{'type':Sequelize[_0xcf4e('0x1')],'defaultValue':_0xcf4e('0xe'),'set':function(_0x1c2db7){this[_0xcf4e('0xf')](_0xcf4e('0x10'),_0x1c2db7?_0x1c2db7[_0xcf4e('0x11')](','):null);},'get':function(){return this[_0xcf4e('0x12')](_0xcf4e('0x10'))?this[_0xcf4e('0x12')]('transport')[_0xcf4e('0x13')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize['ENUM']('rfc2833','info',_0xcf4e('0x14'),_0xcf4e('0x15'),_0xcf4e('0x16')),'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0xcf4e('0x3')]('yes','no','nonat','update',_0xcf4e('0x17')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xcf4e('0x3')]('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xcf4e('0x1')]},'directmediadeny':{'type':Sequelize[_0xcf4e('0x1')]},'nat':{'type':Sequelize['STRING'],'defaultValue':_0xcf4e('0x18'),'set':function(_0x148197){this[_0xcf4e('0xf')](_0xcf4e('0x19'),_0x148197?_0x148197[_0xcf4e('0x11')](','):null);},'get':function(){return this[_0xcf4e('0x12')]('nat')?this[_0xcf4e('0x12')](_0xcf4e('0x19'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0xcf4e('0x1')]},'namedpickupgroup':{'type':Sequelize[_0xcf4e('0x1')]},'language':{'type':Sequelize[_0xcf4e('0x1')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING'],'allowNull':!![]},'disallow':{'type':Sequelize[_0xcf4e('0x1')],'defaultValue':'all'},'allow':{'type':Sequelize[_0xcf4e('0x1')],'allowNull':![],'defaultValue':_0xcf4e('0x1a'),'set':function(_0x1c2dfb){this['setDataValue'](_0xcf4e('0x1b'),_0x1c2dfb?_0x1c2dfb[_0xcf4e('0x11')](';'):_0xcf4e('0x1a'));},'get':function(){return this['getDataValue'](_0xcf4e('0x1b'))?this[_0xcf4e('0x12')]('allow')[_0xcf4e('0x13')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize[_0xcf4e('0x3')](_0xcf4e('0x1c'),'no')},'insecure':{'type':Sequelize[_0xcf4e('0x1')],'defaultValue':_0xcf4e('0x1d'),'set':function(_0x3fc454){this[_0xcf4e('0xf')](_0xcf4e('0x1e'),_0x3fc454?_0x3fc454[_0xcf4e('0x11')](','):null);},'get':function(){return this['getDataValue'](_0xcf4e('0x1e'))?this[_0xcf4e('0x12')](_0xcf4e('0x1e'))[_0xcf4e('0x13')](','):null;},'comment':_0xcf4e('0x1f')},'trustrpid':{'type':Sequelize[_0xcf4e('0x3')]('yes','no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xcf4e('0x3')](_0xcf4e('0x1c'),'no',_0xcf4e('0x20'))},'promiscredir':{'type':Sequelize['ENUM']('yes','no')},'useclientcode':{'type':Sequelize[_0xcf4e('0x3')]('yes','no')},'accountcode':{'type':Sequelize[_0xcf4e('0x21')](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xcf4e('0x1')],'defaultValue':_0xcf4e('0x22')},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0xcf4e('0x21')](0xb)},'allowoverlap':{'type':Sequelize[_0xcf4e('0x3')]('yes','no')},'allowsubscribe':{'type':Sequelize[_0xcf4e('0x3')](_0xcf4e('0x1c'),'no')},'allowtransfer':{'type':Sequelize[_0xcf4e('0x3')](_0xcf4e('0x1c'),'no')},'ignoresdpversion':{'type':Sequelize[_0xcf4e('0x3')](_0xcf4e('0x1c'),'no')},'subscribecontext':{'type':Sequelize[_0xcf4e('0x1')]},'template':{'type':Sequelize[_0xcf4e('0x1')]},'videosupport':{'type':Sequelize['ENUM']('yes','no',_0xcf4e('0x23')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xcf4e('0x21')](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0xcf4e('0x1c'),'no')},'mailbox':{'type':Sequelize[_0xcf4e('0x1')]},'session_timers':{'type':Sequelize[_0xcf4e('0x3')](_0xcf4e('0x24'),_0xcf4e('0x25'),'originate')},'session_expires':{'type':Sequelize[_0xcf4e('0x21')](0xb)},'session_minse':{'type':Sequelize[_0xcf4e('0x21')](0xb)},'session_refresher':{'type':Sequelize[_0xcf4e('0x3')](_0xcf4e('0x26'),_0xcf4e('0x27')),'defaultValue':_0xcf4e('0x27')},'t38pt_usertpsource':{'type':Sequelize[_0xcf4e('0x1')]},'regexten':{'type':Sequelize[_0xcf4e('0x1')]},'fromdomain':{'type':Sequelize[_0xcf4e('0x1')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize[_0xcf4e('0x3')]('yes','no'),'defaultValue':_0xcf4e('0x1c')},'keepalive':{'type':Sequelize[_0xcf4e('0x21')](0xb)},'defaultip':{'type':Sequelize['STRING']},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0xcf4e('0x21')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xcf4e('0x21')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xcf4e('0x21')](0xb)},'sendrpid':{'type':Sequelize['ENUM'](_0xcf4e('0x1c'),'no',_0xcf4e('0x28')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING']},'callbackextension':{'type':Sequelize[_0xcf4e('0x1')]},'timert1':{'type':Sequelize[_0xcf4e('0x21')](0xb)},'timerb':{'type':Sequelize[_0xcf4e('0x21')](0xb)},'qualifyfreq':{'type':Sequelize[_0xcf4e('0x21')](0xb)},'contactpermit':{'type':Sequelize[_0xcf4e('0x1')]},'contactdeny':{'type':Sequelize[_0xcf4e('0x1')]},'contactacl':{'type':Sequelize[_0xcf4e('0x1')]},'unsolicited_mailbox':{'type':Sequelize[_0xcf4e('0x1')]},'use_q850_reason':{'type':Sequelize[_0xcf4e('0x1')]},'maxforwards':{'type':Sequelize[_0xcf4e('0x21')](0xb)},'encryption':{'type':Sequelize[_0xcf4e('0x3')]('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0xcf4e('0x1c'),'no')},'force_avp':{'type':Sequelize[_0xcf4e('0x3')](_0xcf4e('0x1c'),'no')},'icesupport':{'type':Sequelize['ENUM'](_0xcf4e('0x1c'),'no')},'dtlsenable':{'type':Sequelize[_0xcf4e('0x3')](_0xcf4e('0x1c'),'no')},'dtlsverify':{'type':Sequelize[_0xcf4e('0x3')](_0xcf4e('0x1c'),'no','fingerprint',_0xcf4e('0x29'))},'dtlsrekey':{'type':Sequelize[_0xcf4e('0x21')](0xb)},'dtlscertfile':{'type':Sequelize[_0xcf4e('0x1')]},'dtlsprivatekey':{'type':Sequelize[_0xcf4e('0x1')]},'dtlscipher':{'type':Sequelize[_0xcf4e('0x1')]},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize[_0xcf4e('0x1')]},'dtlssetup':{'type':Sequelize[_0xcf4e('0x3')](_0xcf4e('0x2a'),_0xcf4e('0x2b'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize[_0xcf4e('0x1')]},'call_limit':{'type':Sequelize[_0xcf4e('0x21')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM'](_0xcf4e('0x1c'),'no')},'subscribemwi':{'type':Sequelize['ENUM'](_0xcf4e('0x1c'),'no')},'vmexten':{'type':Sequelize[_0xcf4e('0x1')]},'mohinterpret':{'type':Sequelize[_0xcf4e('0x1')]},'mohsuggest':{'type':Sequelize[_0xcf4e('0x1')]},'parkinglot':{'type':Sequelize[_0xcf4e('0x1')]},'description':{'type':Sequelize[_0xcf4e('0x1')]},'host':{'type':Sequelize[_0xcf4e('0x1')],'defaultValue':'dynamic'},'canreinvite':{'type':Sequelize[_0xcf4e('0x3')]('yes','no','nonat','update','update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize[_0xcf4e('0x1')]},'otherFields':{'type':Sequelize[_0xcf4e('0x1')]},'active':{'type':Sequelize[_0xcf4e('0x2c')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xcf4e('0x1')],'defaultValue':'no'}};
\ No newline at end of file
+var _0x8210=['STRING','friend','peer','from-voip-provider','ENUM','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','join','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','shortinfo','inband','auto','yes','nonat','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','setDataValue','allow','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','\x22\x22\x20<>','always','accept','refuse','uac','uas','fingerprint','certificate','active','actpass','dynamic','update,nonat','BOOLEAN','sequelize','exports'];(function(_0x41e393,_0x35417e){var _0x27db09=function(_0x7fbc64){while(--_0x7fbc64){_0x41e393['push'](_0x41e393['shift']());}};_0x27db09(++_0x35417e);}(_0x8210,0xfd));var _0x0821=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x8210[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require(_0x0821('0x0'));module[_0x0821('0x1')]={'name':{'type':Sequelize[_0x0821('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x0821('0x3'),'user',_0x0821('0x4')),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x0821('0x5')},'callingpres':{'type':Sequelize[_0x0821('0x6')](_0x0821('0x7'),_0x0821('0x8'),_0x0821('0x9'),'ALLOWED',_0x0821('0xa'),_0x0821('0xb'),_0x0821('0xc'),_0x0821('0xd'))},'deny':{'type':Sequelize[_0x0821('0x2')]},'permit':{'type':Sequelize[_0x0821('0x2')]},'secret':{'type':Sequelize[_0x0821('0x2')]},'md5secret':{'type':Sequelize[_0x0821('0x2')]},'remotesecret':{'type':Sequelize[_0x0821('0x2')]},'transport':{'type':Sequelize['STRING'],'defaultValue':_0x0821('0xe'),'set':function(_0x54c28f){this['setDataValue'](_0x0821('0xf'),_0x54c28f?_0x54c28f[_0x0821('0x10')](','):null);},'get':function(){return this[_0x0821('0x11')](_0x0821('0xf'))?this['getDataValue'](_0x0821('0xf'))[_0x0821('0x12')](','):null;},'comment':_0x0821('0x13')},'dtmfmode':{'type':Sequelize[_0x0821('0x6')](_0x0821('0x14'),'info',_0x0821('0x15'),_0x0821('0x16'),_0x0821('0x17')),'defaultValue':_0x0821('0x14')},'directmedia':{'type':Sequelize[_0x0821('0x6')](_0x0821('0x18'),'no',_0x0821('0x19'),'update',_0x0821('0x1a')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x0821('0x6')](_0x0821('0x18'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x0821('0x2')]},'directmediadeny':{'type':Sequelize['STRING']},'nat':{'type':Sequelize['STRING'],'defaultValue':_0x0821('0x1b'),'set':function(_0x3bfd1b){this['setDataValue'](_0x0821('0x1c'),_0x3bfd1b?_0x3bfd1b['join'](','):null);},'get':function(){return this[_0x0821('0x11')]('nat')?this[_0x0821('0x11')](_0x0821('0x1c'))[_0x0821('0x12')](','):null;},'comment':_0x0821('0x1d')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x0821('0x2')]},'pickupgroup':{'type':Sequelize[_0x0821('0x2')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0821('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x0821('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0x0821('0x1e')},'allow':{'type':Sequelize[_0x0821('0x2')],'allowNull':![],'defaultValue':_0x0821('0x1f'),'set':function(_0x2c7336){this[_0x0821('0x20')]('allow',_0x2c7336?_0x2c7336[_0x0821('0x10')](';'):_0x0821('0x1f'));},'get':function(){return this[_0x0821('0x11')](_0x0821('0x21'))?this[_0x0821('0x11')]('allow')[_0x0821('0x12')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize[_0x0821('0x6')](_0x0821('0x18'),'no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':'port,invite','set':function(_0x451413){this['setDataValue']('insecure',_0x451413?_0x451413[_0x0821('0x10')](','):null);},'get':function(){return this['getDataValue'](_0x0821('0x22'))?this[_0x0821('0x11')]('insecure')[_0x0821('0x12')](','):null;},'comment':_0x0821('0x23')},'trustrpid':{'type':Sequelize[_0x0821('0x6')](_0x0821('0x18'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0x0821('0x18'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x0821('0x6')](_0x0821('0x18'),'no',_0x0821('0x24'))},'promiscredir':{'type':Sequelize[_0x0821('0x6')]('yes','no')},'useclientcode':{'type':Sequelize['ENUM'](_0x0821('0x18'),'no')},'accountcode':{'type':Sequelize[_0x0821('0x25')](0xb)},'setvar':{'type':Sequelize[_0x0821('0x2')]},'callerid':{'type':Sequelize[_0x0821('0x2')],'defaultValue':_0x0821('0x26')},'amaflags':{'type':Sequelize[_0x0821('0x2')]},'callcounter':{'type':Sequelize[_0x0821('0x6')](_0x0821('0x18'),'no'),'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x0821('0x25')](0xb)},'allowoverlap':{'type':Sequelize[_0x0821('0x6')](_0x0821('0x18'),'no')},'allowsubscribe':{'type':Sequelize['ENUM'](_0x0821('0x18'),'no')},'allowtransfer':{'type':Sequelize[_0x0821('0x6')](_0x0821('0x18'),'no')},'ignoresdpversion':{'type':Sequelize['ENUM']('yes','no')},'subscribecontext':{'type':Sequelize[_0x0821('0x2')]},'template':{'type':Sequelize[_0x0821('0x2')]},'videosupport':{'type':Sequelize[_0x0821('0x6')](_0x0821('0x18'),'no',_0x0821('0x27')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x0821('0x25')](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x0821('0x18'),'no')},'mailbox':{'type':Sequelize[_0x0821('0x2')]},'session_timers':{'type':Sequelize['ENUM'](_0x0821('0x28'),_0x0821('0x29'),'originate')},'session_expires':{'type':Sequelize[_0x0821('0x25')](0xb)},'session_minse':{'type':Sequelize[_0x0821('0x25')](0xb)},'session_refresher':{'type':Sequelize[_0x0821('0x6')](_0x0821('0x2a'),_0x0821('0x2b')),'defaultValue':_0x0821('0x2b')},'t38pt_usertpsource':{'type':Sequelize[_0x0821('0x2')]},'regexten':{'type':Sequelize[_0x0821('0x2')]},'fromdomain':{'type':Sequelize[_0x0821('0x2')]},'fromuser':{'type':Sequelize[_0x0821('0x2')]},'port':{'type':Sequelize[_0x0821('0x25')](0x5)},'qualify':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x0821('0x18')},'keepalive':{'type':Sequelize[_0x0821('0x25')](0xb)},'defaultip':{'type':Sequelize['STRING']},'defaultuser':{'type':Sequelize[_0x0821('0x2')]},'rtptimeout':{'type':Sequelize[_0x0821('0x25')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x0821('0x25')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x0821('0x25')](0xb)},'sendrpid':{'type':Sequelize[_0x0821('0x6')](_0x0821('0x18'),'no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING']},'callbackextension':{'type':Sequelize[_0x0821('0x2')]},'timert1':{'type':Sequelize[_0x0821('0x25')](0xb)},'timerb':{'type':Sequelize[_0x0821('0x25')](0xb)},'qualifyfreq':{'type':Sequelize[_0x0821('0x25')](0xb)},'contactpermit':{'type':Sequelize[_0x0821('0x2')]},'contactdeny':{'type':Sequelize[_0x0821('0x2')]},'contactacl':{'type':Sequelize[_0x0821('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0x0821('0x2')]},'use_q850_reason':{'type':Sequelize[_0x0821('0x2')]},'maxforwards':{'type':Sequelize[_0x0821('0x25')](0xb)},'encryption':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x0821('0x6')](_0x0821('0x18'),'no')},'force_avp':{'type':Sequelize['ENUM'](_0x0821('0x18'),'no')},'icesupport':{'type':Sequelize[_0x0821('0x6')]('yes','no')},'dtlsenable':{'type':Sequelize[_0x0821('0x6')]('yes','no')},'dtlsverify':{'type':Sequelize[_0x0821('0x6')]('yes','no',_0x0821('0x2c'),_0x0821('0x2d'))},'dtlsrekey':{'type':Sequelize[_0x0821('0x25')](0xb)},'dtlscertfile':{'type':Sequelize[_0x0821('0x2')]},'dtlsprivatekey':{'type':Sequelize[_0x0821('0x2')]},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize[_0x0821('0x2')]},'dtlscapath':{'type':Sequelize[_0x0821('0x2')]},'dtlssetup':{'type':Sequelize[_0x0821('0x6')](_0x0821('0x2e'),'passive',_0x0821('0x2f')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x0821('0x2')]},'usereqphone':{'type':Sequelize[_0x0821('0x6')](_0x0821('0x18'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x0821('0x2')]},'recordofffeature':{'type':Sequelize['STRING']},'call_limit':{'type':Sequelize[_0x0821('0x25')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x0821('0x6')](_0x0821('0x18'),'no')},'subscribemwi':{'type':Sequelize['ENUM'](_0x0821('0x18'),'no')},'vmexten':{'type':Sequelize[_0x0821('0x2')]},'mohinterpret':{'type':Sequelize[_0x0821('0x2')]},'mohsuggest':{'type':Sequelize[_0x0821('0x2')]},'parkinglot':{'type':Sequelize[_0x0821('0x2')]},'description':{'type':Sequelize[_0x0821('0x2')]},'host':{'type':Sequelize[_0x0821('0x2')],'defaultValue':_0x0821('0x30')},'canreinvite':{'type':Sequelize['ENUM']('yes','no','nonat','update',_0x0821('0x31')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0x0821('0x2')]},'active':{'type':Sequelize[_0x0821('0x32')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
index 8a7cfbe..499c0d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['clone','includeAll','merge','get','omit','createdAt','updatedAt','body','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','findAll','readFileSync','join','root','server/files/templates/trunk.ejs','utf8','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','Trunk,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','update','destroy','Trunks','stack','name','send','map','Trunk','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','type','filter','options','include','rows','show','params','find'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];var jayson=require(_0x7995('0x1b'));var client=jayson[_0x7995('0x1c')][_0x7995('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x23999f,_0x2bbe7a,_0x4cc004,_0x58f5ad){return new BPromise(function(_0x2b4e94,_0x2233dd){var _0x24b5bb=_0x58f5ad||client;return _0x24b5bb[_0x7995('0x1e')](_0x23999f,_0x4cc004)[_0x7995('0x1f')](function(_0x1a5310){logger[_0x7995('0x20')](_0x7995('0x21'),_0x2bbe7a,'request\x20sent');logger[_0x7995('0x22')]('Trunk,\x20%s,\x20%s,\x20%s',_0x2bbe7a,_0x7995('0x23'),JSON[_0x7995('0x24')](_0x1a5310));if(_0x1a5310[_0x7995('0x25')]){if(_0x1a5310[_0x7995('0x25')][_0x7995('0x26')]===0x1f4){logger[_0x7995('0x25')]('Trunk,\x20%s,\x20%s',_0x2bbe7a,_0x1a5310['error'][_0x7995('0x27')]);return _0x2233dd(_0x1a5310['error']['message']);}logger[_0x7995('0x25')](_0x7995('0x21'),_0x2bbe7a,_0x1a5310['error'][_0x7995('0x27')]);return _0x2b4e94(_0x1a5310['error']['message']);}else{logger[_0x7995('0x20')](_0x7995('0x21'),_0x2bbe7a,_0x7995('0x23'));_0x2b4e94(_0x1a5310[_0x7995('0x28')][_0x7995('0x27')]);}})[_0x7995('0x29')](function(_0x5d40ae){logger[_0x7995('0x25')](_0x7995('0x21'),_0x2bbe7a,_0x5d40ae);_0x2233dd(_0x5d40ae);});});}function respondWithStatusCode(_0x204507,_0x285437){_0x285437=_0x285437||0xcc;return function(_0x563799){if(_0x563799){return _0x204507[_0x7995('0x2a')](_0x285437);}return _0x204507[_0x7995('0x2b')](_0x285437)[_0x7995('0x2c')]();};}function respondWithResult(_0x59405a,_0x39df42){_0x39df42=_0x39df42||0xc8;return function(_0x34e70c){if(_0x34e70c){return _0x59405a[_0x7995('0x2b')](_0x39df42)[_0x7995('0x2d')](_0x34e70c);}};}function respondWithFilteredResult(_0x3a3fcf,_0x2a307e){return function(_0x56691a){if(_0x56691a){var _0x47625f=typeof _0x2a307e['offset']===_0x7995('0x2e')&&typeof _0x2a307e[_0x7995('0x2f')]===_0x7995('0x2e');var _0x132a42=_0x56691a[_0x7995('0x30')];var _0x4b6f99=_0x47625f?0x0:_0x2a307e[_0x7995('0x31')];var _0x514445=_0x47625f?_0x56691a[_0x7995('0x30')]:_0x2a307e[_0x7995('0x31')]+_0x2a307e[_0x7995('0x2f')];var _0x574574;if(_0x514445>=_0x132a42){_0x514445=_0x132a42;_0x574574=0xc8;}else{_0x574574=0xce;}_0x3a3fcf['status'](_0x574574);return _0x3a3fcf['set'](_0x7995('0x32'),_0x4b6f99+'-'+_0x514445+'/'+_0x132a42)[_0x7995('0x2d')](_0x56691a);}return null;};}function patchUpdates(_0x327a81){return function(_0x2b874d){try{jsonpatch[_0x7995('0x33')](_0x2b874d,_0x327a81,!![]);}catch(_0x1ca460){return BPromise['reject'](_0x1ca460);}return _0x2b874d['save']();};}function saveUpdates(_0xfa8f15,_0x5524af){return function(_0x553671){if(_0x553671){return _0x553671[_0x7995('0x34')](_0xfa8f15)[_0x7995('0x1f')](function(_0x1e9fa4){return _0x1e9fa4;});}return null;};}function removeEntity(_0x1f7d27,_0x510841){return function(_0x44309d){if(_0x44309d){return _0x44309d[_0x7995('0x35')]()['then'](function(){var _0x48db25=_0x44309d['get']({'plain':!![]});var _0x45bc5e=_0x7995('0x36');return db['UserProfileResource'][_0x7995('0x35')]({'where':{'type':_0x45bc5e,'resourceId':_0x48db25['id']}})['then'](function(){return _0x44309d;});})[_0x7995('0x1f')](function(){_0x1f7d27[_0x7995('0x2b')](0xcc)[_0x7995('0x2c')]();});}};}function handleEntityNotFound(_0x5014d2,_0x52d76d){return function(_0x36d057){if(!_0x36d057){_0x5014d2['sendStatus'](0x194);}return _0x36d057;};}function handleError(_0x5d2428,_0x3e99cd){_0x3e99cd=_0x3e99cd||0x1f4;return function(_0xe328b1){logger['error'](_0xe328b1[_0x7995('0x37')]);if(_0xe328b1[_0x7995('0x38')]){delete _0xe328b1[_0x7995('0x38')];}_0x5d2428[_0x7995('0x2b')](_0x3e99cd)[_0x7995('0x39')](_0xe328b1);};}exports['index']=function(_0x2d4285,_0x242713){var _0xf612e6={},_0x1d60b8={},_0x4b1541={'count':0x0,'rows':[]};var _0x2be2c0=_[_0x7995('0x3a')](db[_0x7995('0x3b')][_0x7995('0x3c')],function(_0x1f5bee){return{'name':_0x1f5bee[_0x7995('0x3d')],'type':_0x1f5bee['type'][_0x7995('0x3e')]};});_0x1d60b8[_0x7995('0x3f')]=_[_0x7995('0x3a')](_0x2be2c0,_0x7995('0x38'));_0x1d60b8[_0x7995('0x40')]=_[_0x7995('0x41')](_0x2d4285[_0x7995('0x40')]);_0x1d60b8[_0x7995('0x42')]=_[_0x7995('0x43')](_0x1d60b8[_0x7995('0x3f')],_0x1d60b8[_0x7995('0x40')]);_0xf612e6[_0x7995('0x44')]=_[_0x7995('0x43')](_0x1d60b8['model'],qs['fields'](_0x2d4285[_0x7995('0x40')][_0x7995('0x45')]));_0xf612e6['attributes']=_0xf612e6['attributes'][_0x7995('0x46')]?_0xf612e6['attributes']:_0x1d60b8['model'];if(!_0x2d4285[_0x7995('0x40')][_0x7995('0x47')](_0x7995('0x48'))){_0xf612e6['limit']=qs[_0x7995('0x2f')](_0x2d4285['query'][_0x7995('0x2f')]);_0xf612e6['offset']=qs['offset'](_0x2d4285[_0x7995('0x40')][_0x7995('0x31')]);}_0xf612e6[_0x7995('0x49')]=qs[_0x7995('0x4a')](_0x2d4285['query'][_0x7995('0x4a')]);_0xf612e6[_0x7995('0x4b')]=qs[_0x7995('0x42')](_[_0x7995('0x4c')](_0x2d4285['query'],_0x1d60b8['filters']),_0x2be2c0);if(_0x2d4285[_0x7995('0x40')]['filter']){_0xf612e6[_0x7995('0x4b')]=_['merge'](_0xf612e6[_0x7995('0x4b')],{'$or':_['map'](_0x2be2c0,function(_0x1e795e){if(_0x1e795e[_0x7995('0x4d')]!=='VIRTUAL'){var _0x3e9e62={};_0x3e9e62[_0x1e795e[_0x7995('0x38')]]={'$like':'%'+_0x2d4285[_0x7995('0x40')][_0x7995('0x4e')]+'%'};return _0x3e9e62;}})});}_0xf612e6=_['merge']({},_0xf612e6,_0x2d4285[_0x7995('0x4f')]);var _0x3e787d={'where':_0xf612e6[_0x7995('0x4b')]};return db['Trunk'][_0x7995('0x30')](_0x3e787d)[_0x7995('0x1f')](function(_0x511567){_0x4b1541[_0x7995('0x30')]=_0x511567;if(_0x2d4285[_0x7995('0x40')]['includeAll']){_0xf612e6[_0x7995('0x50')]=[{'all':!![]}];}return db[_0x7995('0x3b')]['findAll'](_0xf612e6);})[_0x7995('0x1f')](function(_0x5843ba){_0x4b1541[_0x7995('0x51')]=_0x5843ba;return _0x4b1541;})[_0x7995('0x1f')](respondWithFilteredResult(_0x242713,_0xf612e6))[_0x7995('0x29')](handleError(_0x242713,null));};exports[_0x7995('0x52')]=function(_0xddf537,_0x14b537){var _0x1579b9={'raw':![],'where':{'id':_0xddf537[_0x7995('0x53')]['id']}},_0x4d46bc={};_0x4d46bc[_0x7995('0x3f')]=_[_0x7995('0x41')](db['Trunk'][_0x7995('0x3c')]);_0x4d46bc[_0x7995('0x40')]=_[_0x7995('0x41')](_0xddf537['query']);_0x4d46bc['filters']=_['intersection'](_0x4d46bc[_0x7995('0x3f')],_0x4d46bc[_0x7995('0x40')]);_0x1579b9['attributes']=_[_0x7995('0x43')](_0x4d46bc[_0x7995('0x3f')],qs[_0x7995('0x45')](_0xddf537[_0x7995('0x40')][_0x7995('0x45')]));_0x1579b9['attributes']=_0x1579b9[_0x7995('0x44')]['length']?_0x1579b9[_0x7995('0x44')]:_0x4d46bc[_0x7995('0x3f')];if(_0xddf537[_0x7995('0x40')]['includeAll']){_0x1579b9['include']=[{'all':!![]}];}_0x1579b9=_['merge']({},_0x1579b9,_0xddf537['options']);return db[_0x7995('0x3b')][_0x7995('0x54')](_0x1579b9)[_0x7995('0x1f')](handleEntityNotFound(_0x14b537,null))[_0x7995('0x1f')](respondWithResult(_0x14b537,null))[_0x7995('0x29')](handleError(_0x14b537,null));};exports[_0x7995('0x55')]=function(_0x1f4270,_0xda6ce8){var _0x328671={'where':{'id':_0x1f4270[_0x7995('0x53')]['id']}},_0x17ecd3={};_0x17ecd3[_0x7995('0x3f')]=_[_0x7995('0x41')](db[_0x7995('0x3b')][_0x7995('0x3c')]);_0x328671[_0x7995('0x44')]=_[_0x7995('0x43')](_0x17ecd3[_0x7995('0x3f')],qs[_0x7995('0x45')](_0x1f4270['query'][_0x7995('0x45')]));_0x328671[_0x7995('0x44')]=_0x328671[_0x7995('0x44')][_0x7995('0x46')]?_0x328671['attributes']:_0x17ecd3['model'];if(_0x1f4270[_0x7995('0x40')][_0x7995('0x56')]){_0x328671[_0x7995('0x50')]=[{'all':!![]}];}_0x328671=_[_0x7995('0x57')]({},_0x328671,_0x1f4270['options']);return db[_0x7995('0x3b')][_0x7995('0x54')](_0x328671)[_0x7995('0x1f')](handleEntityNotFound(_0xda6ce8,null))[_0x7995('0x1f')](function(_0x502d43){if(_0x502d43){var _0x5e2d97=_0x502d43[_0x7995('0x58')]({'plain':!![]});_0x5e2d97=qs[_0x7995('0x59')](_0x5e2d97,['id',_0x7995('0x5a'),_0x7995('0x5b')]);_0x1f4270[_0x7995('0x5c')]=_[_0x7995('0x59')](_0x1f4270[_0x7995('0x5c')],['id',_0x7995('0x5a'),_0x7995('0x5b')]);return db['Trunk'][_0x7995('0x5d')](_[_0x7995('0x57')](_0x5e2d97,_0x1f4270[_0x7995('0x5c')]),{'include':_0x1f4270[_0x7995('0x40')]['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x3053fd){var _0xebb5c8=_0x1f4270['user'][_0x7995('0x58')]({'plain':!![]});if(!_0xebb5c8)throw new Error(_0x7995('0x5e'));if(_0xebb5c8[_0x7995('0x5f')]===_0x7995('0x60')){var _0x32cb04=_0x3053fd['get']({'plain':!![]});var _0x457d09='Trunks';return db[_0x7995('0x61')][_0x7995('0x54')]({'where':{'name':_0x457d09,'userProfileId':_0xebb5c8[_0x7995('0x62')]},'raw':!![]})[_0x7995('0x1f')](function(_0x4388c1){if(_0x4388c1&&_0x4388c1[_0x7995('0x63')]===0x0){return db[_0x7995('0x64')][_0x7995('0x5d')]({'name':_0x32cb04[_0x7995('0x38')],'resourceId':_0x32cb04['id'],'type':_0x4388c1[_0x7995('0x38')],'sectionId':_0x4388c1['id']},{})[_0x7995('0x1f')](function(){return _0x3053fd;});}else{return _0x3053fd;}})[_0x7995('0x29')](function(_0x56eb85){logger[_0x7995('0x25')](_0x7995('0x65'),_0x56eb85);throw _0x56eb85;});}return _0x3053fd;});}})[_0x7995('0x1f')](respondWithResult(_0xda6ce8,0xc9))[_0x7995('0x29')](handleError(_0xda6ce8,null));};exports[_0x7995('0x5d')]=function(_0x54a2e0,_0x4b54f2,_0x268fde){var _0x87e38d;return db[_0x7995('0x3b')][_0x7995('0x5d')](_0x54a2e0['body'],{'raw':!![]})[_0x7995('0x1f')](function(_0x50a12e){_0x87e38d=_0x50a12e;return db['Trunk'][_0x7995('0x66')]({'raw':!![]});})[_0x7995('0x1f')](function(_0x3f0a71){var _0x44bf2b=fs[_0x7995('0x67')](path[_0x7995('0x68')](config[_0x7995('0x69')],_0x7995('0x6a')),_0x7995('0x6b'));var _0x2466df=fs['readFileSync'](path[_0x7995('0x68')](config[_0x7995('0x69')],_0x7995('0x6c')),'utf8');var _0x1fe1cb=ejs[_0x7995('0x6d')](_0x44bf2b,{'trunks':_0x3f0a71||[]});fs[_0x7995('0x6e')](_0x7995('0x6f'),_0x1fe1cb);if(_0x87e38d[_0x7995('0x70')]){var _0x51ab1e=ejs[_0x7995('0x6d')](_0x2466df,{'trunks':_0x3f0a71||[]});fs[_0x7995('0x6e')](_0x7995('0x71'),_0x51ab1e);}})[_0x7995('0x1f')](function(){return respondWithRpcPromise(_0x7995('0x72'),'create',{'module':'chan_sip.so'});})[_0x7995('0x1f')](function(){var _0xfe1105=_0x54a2e0[_0x7995('0x60')][_0x7995('0x58')]({'plain':!![]});if(!_0xfe1105)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xfe1105[_0x7995('0x5f')]===_0x7995('0x60')){var _0x54b955=_0x87e38d['get']({'plain':!![]});return db[_0x7995('0x61')][_0x7995('0x54')]({'where':{'name':'Trunks','userProfileId':_0xfe1105[_0x7995('0x62')]},'raw':!![]})['then'](function(_0x3758f9){if(_0x3758f9&&_0x3758f9[_0x7995('0x63')]===0x0){return db['UserProfileResource']['create']({'name':_0x54b955[_0x7995('0x38')],'resourceId':_0x54b955['id'],'type':_0x3758f9['name'],'sectionId':_0x3758f9['id']},{})[_0x7995('0x1f')](function(){return _0x87e38d;});}else{return _0x87e38d;}})[_0x7995('0x29')](function(_0x3dd197){logger[_0x7995('0x25')](_0x7995('0x65'),_0x3dd197);throw _0x3dd197;});}return _0x87e38d;})[_0x7995('0x1f')](respondWithResult(_0x4b54f2,0xc9))[_0x7995('0x29')](handleError(_0x4b54f2,null));};exports[_0x7995('0x34')]=function(_0x29e0ee,_0x117317,_0x1ab590){var _0x16108c;return db[_0x7995('0x3b')][_0x7995('0x54')]({'where':{'id':_0x29e0ee[_0x7995('0x53')]['id']}})[_0x7995('0x1f')](handleEntityNotFound(_0x117317,null))[_0x7995('0x1f')](saveUpdates(_0x29e0ee[_0x7995('0x5c')],null))[_0x7995('0x1f')](function(_0xa2fc8e){if(_0xa2fc8e){_0x16108c=_0xa2fc8e;return db[_0x7995('0x3b')][_0x7995('0x66')]({'raw':!![]});}})[_0x7995('0x1f')](function(_0x280fbb){if(_0x280fbb){var _0x260ef1=fs[_0x7995('0x67')](path[_0x7995('0x68')](config[_0x7995('0x69')],'server/files/templates/trunk.ejs'),_0x7995('0x6b'));var _0x10f4ca=fs['readFileSync'](path['join'](config[_0x7995('0x69')],_0x7995('0x6c')),_0x7995('0x6b'));var _0x38acda=ejs[_0x7995('0x6d')](_0x260ef1,{'trunks':_0x280fbb||[]});fs[_0x7995('0x6e')]('/etc/asterisk/sip_xcally_trunks.conf',_0x38acda);var _0x2f8a2d=ejs[_0x7995('0x6d')](_0x10f4ca,{'trunks':_0x280fbb||[]});fs[_0x7995('0x6e')](_0x7995('0x71'),_0x2f8a2d);return respondWithRpcPromise(_0x7995('0x72'),_0x7995('0x34'),{'module':_0x7995('0x73')});}return null;})[_0x7995('0x1f')](function(_0x560095){if(_0x560095){return _0x16108c;}})[_0x7995('0x1f')](respondWithResult(_0x117317,null))[_0x7995('0x29')](handleError(_0x117317,null));};exports['destroy']=function(_0x479271,_0xd24c64,_0xf8c2ed){var _0x18e1a2;return db[_0x7995('0x3b')][_0x7995('0x54')]({'where':{'id':_0x479271['params']['id']}})[_0x7995('0x1f')](handleEntityNotFound(_0xd24c64,null))[_0x7995('0x1f')](removeEntity(_0xd24c64,null))['then'](function(){return db[_0x7995('0x3b')][_0x7995('0x66')]({'raw':!![]});})['then'](function(_0x1535a3){var _0x4a5bc5=fs[_0x7995('0x67')](path[_0x7995('0x68')](config[_0x7995('0x69')],_0x7995('0x6a')),_0x7995('0x6b'));var _0x5d16da=fs[_0x7995('0x67')](path[_0x7995('0x68')](config[_0x7995('0x69')],'server/files/templates/registry.ejs'),_0x7995('0x6b'));var _0x3f3434=ejs[_0x7995('0x6d')](_0x4a5bc5,{'trunks':_0x1535a3});var _0x308a26=ejs['render'](_0x5d16da,{'trunks':_0x1535a3});fs[_0x7995('0x6e')](_0x7995('0x6f'),_0x3f3434);fs[_0x7995('0x6e')]('/etc/asterisk/sip_xcally_registers.conf',_0x308a26);return respondWithRpcPromise('Reload',_0x7995('0x35'),{'module':_0x7995('0x73')});})['catch'](handleError(_0xd24c64,null));};
\ No newline at end of file
+var _0xf2ca=['omit','createdAt','body','updatedAt','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','root','server/files/templates/trunk.ejs','utf8','render','writeFileSync','registry','/etc/asterisk/sip_xcally_registers.conf','Unable\x20to\x20retrieve\x20the\x20current\x20user','server/files/templates/registry.ejs','/etc/asterisk/sip_xcally_trunks.conf','Reload','chan_sip.so','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','end','json','offset','limit','count','set','Content-Range','apply','save','update','destroy','get','Trunks','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','show','params','Trunk','find','clone'];(function(_0x1449f5,_0x30f1b6){var _0x58c280=function(_0x2edb45){while(--_0x2edb45){_0x1449f5['push'](_0x1449f5['shift']());}};_0x58c280(++_0x30f1b6);}(_0xf2ca,0x16a));var _0xaf2c=function(_0x5f42f1,_0x956be5){_0x5f42f1=_0x5f42f1-0x0;var _0x5534ee=_0xf2ca[_0x5f42f1];return _0x5534ee;};'use strict';var emlformat=require(_0xaf2c('0x0'));var rimraf=require(_0xaf2c('0x1'));var zipdir=require(_0xaf2c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xaf2c('0x3'));var moment=require(_0xaf2c('0x4'));var BPromise=require(_0xaf2c('0x5'));var Mustache=require(_0xaf2c('0x6'));var util=require(_0xaf2c('0x7'));var path=require(_0xaf2c('0x8'));var sox=require('sox');var csv=require(_0xaf2c('0x9'));var ejs=require(_0xaf2c('0xa'));var fs=require('fs');var fs_extra=require(_0xaf2c('0xb'));var _=require(_0xaf2c('0xc'));var squel=require('squel');var crypto=require(_0xaf2c('0xd'));var jsforce=require(_0xaf2c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xaf2c('0x9'));var querystring=require('querystring');var Papa=require(_0xaf2c('0xf'));var Redis=require('ioredis');var authService=require(_0xaf2c('0x10'));var qs=require(_0xaf2c('0x11'));var as=require(_0xaf2c('0x12'));var hardwareService=require(_0xaf2c('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xaf2c('0x14'));var config=require(_0xaf2c('0x15'));var licenseUtil=require(_0xaf2c('0x16'));var db=require(_0xaf2c('0x17'))['db'];var jayson=require(_0xaf2c('0x18'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x15ccb4,_0x8eaf9b,_0x935959,_0x18a8a5){return new BPromise(function(_0x293ca6,_0x152c73){var _0x214f47=_0x18a8a5||client;return _0x214f47[_0xaf2c('0x19')](_0x15ccb4,_0x935959)[_0xaf2c('0x1a')](function(_0x1d0633){logger[_0xaf2c('0x1b')](_0xaf2c('0x1c'),_0x8eaf9b,_0xaf2c('0x1d'));logger[_0xaf2c('0x1e')](_0xaf2c('0x1f'),_0x8eaf9b,'request\x20sent',JSON[_0xaf2c('0x20')](_0x1d0633));if(_0x1d0633['error']){if(_0x1d0633[_0xaf2c('0x21')][_0xaf2c('0x22')]===0x1f4){logger[_0xaf2c('0x21')]('Trunk,\x20%s,\x20%s',_0x8eaf9b,_0x1d0633[_0xaf2c('0x21')][_0xaf2c('0x23')]);return _0x152c73(_0x1d0633[_0xaf2c('0x21')][_0xaf2c('0x23')]);}logger[_0xaf2c('0x21')](_0xaf2c('0x1c'),_0x8eaf9b,_0x1d0633['error'][_0xaf2c('0x23')]);return _0x293ca6(_0x1d0633[_0xaf2c('0x21')][_0xaf2c('0x23')]);}else{logger[_0xaf2c('0x1b')](_0xaf2c('0x1c'),_0x8eaf9b,'request\x20sent');_0x293ca6(_0x1d0633[_0xaf2c('0x24')][_0xaf2c('0x23')]);}})[_0xaf2c('0x25')](function(_0x4be6ed){logger['error'](_0xaf2c('0x1c'),_0x8eaf9b,_0x4be6ed);_0x152c73(_0x4be6ed);});});}function respondWithStatusCode(_0x303546,_0x1cafad){_0x1cafad=_0x1cafad||0xcc;return function(_0x99f78d){if(_0x99f78d){return _0x303546['sendStatus'](_0x1cafad);}return _0x303546[_0xaf2c('0x26')](_0x1cafad)[_0xaf2c('0x27')]();};}function respondWithResult(_0x3a0145,_0x3c1ae6){_0x3c1ae6=_0x3c1ae6||0xc8;return function(_0xe929b5){if(_0xe929b5){return _0x3a0145[_0xaf2c('0x26')](_0x3c1ae6)[_0xaf2c('0x28')](_0xe929b5);}};}function respondWithFilteredResult(_0x4a8dd8,_0x29f8b0){return function(_0x2051be){if(_0x2051be){var _0x36f37c=typeof _0x29f8b0[_0xaf2c('0x29')]==='undefined'&&typeof _0x29f8b0[_0xaf2c('0x2a')]==='undefined';var _0x38db1b=_0x2051be[_0xaf2c('0x2b')];var _0x15466b=_0x36f37c?0x0:_0x29f8b0['offset'];var _0x2747bb=_0x36f37c?_0x2051be[_0xaf2c('0x2b')]:_0x29f8b0[_0xaf2c('0x29')]+_0x29f8b0['limit'];var _0xe18ba7;if(_0x2747bb>=_0x38db1b){_0x2747bb=_0x38db1b;_0xe18ba7=0xc8;}else{_0xe18ba7=0xce;}_0x4a8dd8[_0xaf2c('0x26')](_0xe18ba7);return _0x4a8dd8[_0xaf2c('0x2c')](_0xaf2c('0x2d'),_0x15466b+'-'+_0x2747bb+'/'+_0x38db1b)['json'](_0x2051be);}return null;};}function patchUpdates(_0x3da072){return function(_0x4072ff){try{jsonpatch[_0xaf2c('0x2e')](_0x4072ff,_0x3da072,!![]);}catch(_0x51a49c){return BPromise['reject'](_0x51a49c);}return _0x4072ff[_0xaf2c('0x2f')]();};}function saveUpdates(_0x4c9b4f,_0x39c0ed){return function(_0x5e7247){if(_0x5e7247){return _0x5e7247[_0xaf2c('0x30')](_0x4c9b4f)[_0xaf2c('0x1a')](function(_0x4ffbb9){return _0x4ffbb9;});}return null;};}function removeEntity(_0x1408e3,_0x5403f8){return function(_0x54db57){if(_0x54db57){return _0x54db57[_0xaf2c('0x31')]()[_0xaf2c('0x1a')](function(){var _0x211a69=_0x54db57[_0xaf2c('0x32')]({'plain':!![]});var _0x2d6ed7=_0xaf2c('0x33');return db['UserProfileResource'][_0xaf2c('0x31')]({'where':{'type':_0x2d6ed7,'resourceId':_0x211a69['id']}})['then'](function(){return _0x54db57;});})[_0xaf2c('0x1a')](function(){_0x1408e3['status'](0xcc)[_0xaf2c('0x27')]();});}};}function handleEntityNotFound(_0x59f686,_0x2f3d16){return function(_0x4e877e){if(!_0x4e877e){_0x59f686[_0xaf2c('0x34')](0x194);}return _0x4e877e;};}function handleError(_0x4b9c6b,_0x30fd87){_0x30fd87=_0x30fd87||0x1f4;return function(_0x356402){logger[_0xaf2c('0x21')](_0x356402[_0xaf2c('0x35')]);if(_0x356402[_0xaf2c('0x36')]){delete _0x356402['name'];}_0x4b9c6b['status'](_0x30fd87)[_0xaf2c('0x37')](_0x356402);};}exports[_0xaf2c('0x38')]=function(_0x409700,_0xa44813){var _0x4eeecf={},_0x316238={},_0x573db3={'count':0x0,'rows':[]};var _0xa1248e=_[_0xaf2c('0x39')](db['Trunk'][_0xaf2c('0x3a')],function(_0x24668d){return{'name':_0x24668d[_0xaf2c('0x3b')],'type':_0x24668d[_0xaf2c('0x3c')][_0xaf2c('0x3d')]};});_0x316238[_0xaf2c('0x3e')]=_[_0xaf2c('0x39')](_0xa1248e,_0xaf2c('0x36'));_0x316238[_0xaf2c('0x3f')]=_[_0xaf2c('0x40')](_0x409700[_0xaf2c('0x3f')]);_0x316238[_0xaf2c('0x41')]=_[_0xaf2c('0x42')](_0x316238['model'],_0x316238['query']);_0x4eeecf['attributes']=_[_0xaf2c('0x42')](_0x316238[_0xaf2c('0x3e')],qs[_0xaf2c('0x43')](_0x409700[_0xaf2c('0x3f')][_0xaf2c('0x43')]));_0x4eeecf[_0xaf2c('0x44')]=_0x4eeecf['attributes'][_0xaf2c('0x45')]?_0x4eeecf[_0xaf2c('0x44')]:_0x316238[_0xaf2c('0x3e')];if(!_0x409700['query']['hasOwnProperty'](_0xaf2c('0x46'))){_0x4eeecf['limit']=qs[_0xaf2c('0x2a')](_0x409700[_0xaf2c('0x3f')][_0xaf2c('0x2a')]);_0x4eeecf[_0xaf2c('0x29')]=qs['offset'](_0x409700[_0xaf2c('0x3f')]['offset']);}_0x4eeecf[_0xaf2c('0x47')]=qs[_0xaf2c('0x48')](_0x409700['query'][_0xaf2c('0x48')]);_0x4eeecf['where']=qs[_0xaf2c('0x41')](_[_0xaf2c('0x49')](_0x409700[_0xaf2c('0x3f')],_0x316238[_0xaf2c('0x41')]),_0xa1248e);if(_0x409700[_0xaf2c('0x3f')][_0xaf2c('0x4a')]){_0x4eeecf[_0xaf2c('0x4b')]=_[_0xaf2c('0x4c')](_0x4eeecf[_0xaf2c('0x4b')],{'$or':_['map'](_0xa1248e,function(_0x51d751){if(_0x51d751[_0xaf2c('0x3c')]!=='VIRTUAL'){var _0x4ad36e={};_0x4ad36e[_0x51d751['name']]={'$like':'%'+_0x409700[_0xaf2c('0x3f')][_0xaf2c('0x4a')]+'%'};return _0x4ad36e;}})});}_0x4eeecf=_[_0xaf2c('0x4c')]({},_0x4eeecf,_0x409700[_0xaf2c('0x4d')]);var _0x599b2d={'where':_0x4eeecf[_0xaf2c('0x4b')]};return db['Trunk'][_0xaf2c('0x2b')](_0x599b2d)['then'](function(_0x166c26){_0x573db3[_0xaf2c('0x2b')]=_0x166c26;if(_0x409700[_0xaf2c('0x3f')][_0xaf2c('0x4e')]){_0x4eeecf[_0xaf2c('0x4f')]=[{'all':!![]}];}return db['Trunk'][_0xaf2c('0x50')](_0x4eeecf);})[_0xaf2c('0x1a')](function(_0x4b3ca4){_0x573db3['rows']=_0x4b3ca4;return _0x573db3;})[_0xaf2c('0x1a')](respondWithFilteredResult(_0xa44813,_0x4eeecf))['catch'](handleError(_0xa44813,null));};exports[_0xaf2c('0x51')]=function(_0x23642b,_0x17b9ec){var _0x315b9f={'raw':![],'where':{'id':_0x23642b[_0xaf2c('0x52')]['id']}},_0x367112={};_0x367112[_0xaf2c('0x3e')]=_[_0xaf2c('0x40')](db[_0xaf2c('0x53')][_0xaf2c('0x3a')]);_0x367112[_0xaf2c('0x3f')]=_['keys'](_0x23642b[_0xaf2c('0x3f')]);_0x367112[_0xaf2c('0x41')]=_['intersection'](_0x367112['model'],_0x367112['query']);_0x315b9f[_0xaf2c('0x44')]=_[_0xaf2c('0x42')](_0x367112['model'],qs[_0xaf2c('0x43')](_0x23642b[_0xaf2c('0x3f')][_0xaf2c('0x43')]));_0x315b9f[_0xaf2c('0x44')]=_0x315b9f[_0xaf2c('0x44')][_0xaf2c('0x45')]?_0x315b9f[_0xaf2c('0x44')]:_0x367112['model'];if(_0x23642b[_0xaf2c('0x3f')][_0xaf2c('0x4e')]){_0x315b9f['include']=[{'all':!![]}];}_0x315b9f=_[_0xaf2c('0x4c')]({},_0x315b9f,_0x23642b[_0xaf2c('0x4d')]);return db[_0xaf2c('0x53')][_0xaf2c('0x54')](_0x315b9f)[_0xaf2c('0x1a')](handleEntityNotFound(_0x17b9ec,null))[_0xaf2c('0x1a')](respondWithResult(_0x17b9ec,null))[_0xaf2c('0x25')](handleError(_0x17b9ec,null));};exports[_0xaf2c('0x55')]=function(_0x19b82d,_0x300254){var _0x133678={'where':{'id':_0x19b82d[_0xaf2c('0x52')]['id']}},_0x10a270={};_0x10a270[_0xaf2c('0x3e')]=_[_0xaf2c('0x40')](db[_0xaf2c('0x53')][_0xaf2c('0x3a')]);_0x133678[_0xaf2c('0x44')]=_[_0xaf2c('0x42')](_0x10a270[_0xaf2c('0x3e')],qs['fields'](_0x19b82d[_0xaf2c('0x3f')][_0xaf2c('0x43')]));_0x133678[_0xaf2c('0x44')]=_0x133678['attributes'][_0xaf2c('0x45')]?_0x133678['attributes']:_0x10a270[_0xaf2c('0x3e')];if(_0x19b82d[_0xaf2c('0x3f')][_0xaf2c('0x4e')]){_0x133678[_0xaf2c('0x4f')]=[{'all':!![]}];}_0x133678=_[_0xaf2c('0x4c')]({},_0x133678,_0x19b82d[_0xaf2c('0x4d')]);return db[_0xaf2c('0x53')][_0xaf2c('0x54')](_0x133678)[_0xaf2c('0x1a')](handleEntityNotFound(_0x300254,null))['then'](function(_0x41d08b){if(_0x41d08b){var _0x400dcd=_0x41d08b[_0xaf2c('0x32')]({'plain':!![]});_0x400dcd=qs[_0xaf2c('0x56')](_0x400dcd,['id',_0xaf2c('0x57'),'updatedAt']);_0x19b82d[_0xaf2c('0x58')]=_[_0xaf2c('0x56')](_0x19b82d['body'],['id',_0xaf2c('0x57'),_0xaf2c('0x59')]);return db['Trunk']['create'](_[_0xaf2c('0x4c')](_0x400dcd,_0x19b82d[_0xaf2c('0x58')]),{'include':_0x19b82d[_0xaf2c('0x3f')][_0xaf2c('0x4e')]?[{'all':!![]}]:undefined})['then'](function(_0x36b6f0){var _0x3f48f1=_0x19b82d['user'][_0xaf2c('0x32')]({'plain':!![]});if(!_0x3f48f1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3f48f1[_0xaf2c('0x5a')]===_0xaf2c('0x5b')){var _0x16e9f4=_0x36b6f0[_0xaf2c('0x32')]({'plain':!![]});var _0x1a297e=_0xaf2c('0x33');return db[_0xaf2c('0x5c')][_0xaf2c('0x54')]({'where':{'name':_0x1a297e,'userProfileId':_0x3f48f1[_0xaf2c('0x5d')]},'raw':!![]})[_0xaf2c('0x1a')](function(_0x53ba41){if(_0x53ba41&&_0x53ba41[_0xaf2c('0x5e')]===0x0){return db[_0xaf2c('0x5f')][_0xaf2c('0x60')]({'name':_0x16e9f4[_0xaf2c('0x36')],'resourceId':_0x16e9f4['id'],'type':_0x53ba41[_0xaf2c('0x36')],'sectionId':_0x53ba41['id']},{})['then'](function(){return _0x36b6f0;});}else{return _0x36b6f0;}})[_0xaf2c('0x25')](function(_0x28b09f){logger[_0xaf2c('0x21')](_0xaf2c('0x61'),_0x28b09f);throw _0x28b09f;});}return _0x36b6f0;});}})[_0xaf2c('0x1a')](respondWithResult(_0x300254,0xc9))['catch'](handleError(_0x300254,null));};exports['create']=function(_0x1166c9,_0x1ead61,_0x5849f8){var _0xf96361;return db[_0xaf2c('0x53')][_0xaf2c('0x60')](_0x1166c9['body'],{'raw':!![]})[_0xaf2c('0x1a')](function(_0x2bd845){_0xf96361=_0x2bd845;return db[_0xaf2c('0x53')][_0xaf2c('0x50')]({'raw':!![]});})['then'](function(_0x32d552){var _0x26129c=fs[_0xaf2c('0x62')](path[_0xaf2c('0x63')](config[_0xaf2c('0x64')],_0xaf2c('0x65')),_0xaf2c('0x66'));var _0x2767c7=fs[_0xaf2c('0x62')](path[_0xaf2c('0x63')](config[_0xaf2c('0x64')],'server/files/templates/registry.ejs'),_0xaf2c('0x66'));var _0x5d965c=ejs[_0xaf2c('0x67')](_0x26129c,{'trunks':_0x32d552||[]});fs[_0xaf2c('0x68')]('/etc/asterisk/sip_xcally_trunks.conf',_0x5d965c);if(_0xf96361[_0xaf2c('0x69')]){var _0x5a95ac=ejs['render'](_0x2767c7,{'trunks':_0x32d552||[]});fs[_0xaf2c('0x68')](_0xaf2c('0x6a'),_0x5a95ac);}})[_0xaf2c('0x1a')](function(){return respondWithRpcPromise('Reload','create',{'module':'chan_sip.so'});})[_0xaf2c('0x1a')](function(){var _0x3e972c=_0x1166c9['user'][_0xaf2c('0x32')]({'plain':!![]});if(!_0x3e972c)throw new Error(_0xaf2c('0x6b'));if(_0x3e972c[_0xaf2c('0x5a')]===_0xaf2c('0x5b')){var _0x6e1837=_0xf96361[_0xaf2c('0x32')]({'plain':!![]});return db['UserProfileSection'][_0xaf2c('0x54')]({'where':{'name':_0xaf2c('0x33'),'userProfileId':_0x3e972c[_0xaf2c('0x5d')]},'raw':!![]})['then'](function(_0xc9dd21){if(_0xc9dd21&&_0xc9dd21[_0xaf2c('0x5e')]===0x0){return db[_0xaf2c('0x5f')]['create']({'name':_0x6e1837[_0xaf2c('0x36')],'resourceId':_0x6e1837['id'],'type':_0xc9dd21[_0xaf2c('0x36')],'sectionId':_0xc9dd21['id']},{})[_0xaf2c('0x1a')](function(){return _0xf96361;});}else{return _0xf96361;}})[_0xaf2c('0x25')](function(_0x491160){logger[_0xaf2c('0x21')](_0xaf2c('0x61'),_0x491160);throw _0x491160;});}return _0xf96361;})[_0xaf2c('0x1a')](respondWithResult(_0x1ead61,0xc9))['catch'](handleError(_0x1ead61,null));};exports['update']=function(_0x427ece,_0x1b7dc1,_0x5571eb){var _0x3675d9;return db[_0xaf2c('0x53')]['find']({'where':{'id':_0x427ece[_0xaf2c('0x52')]['id']}})[_0xaf2c('0x1a')](handleEntityNotFound(_0x1b7dc1,null))[_0xaf2c('0x1a')](saveUpdates(_0x427ece[_0xaf2c('0x58')],null))[_0xaf2c('0x1a')](function(_0x4af252){if(_0x4af252){_0x3675d9=_0x4af252;return db['Trunk'][_0xaf2c('0x50')]({'raw':!![]});}})[_0xaf2c('0x1a')](function(_0x55b568){if(_0x55b568){var _0x4f378e=fs[_0xaf2c('0x62')](path[_0xaf2c('0x63')](config[_0xaf2c('0x64')],_0xaf2c('0x65')),_0xaf2c('0x66'));var _0x4b9fdc=fs[_0xaf2c('0x62')](path[_0xaf2c('0x63')](config[_0xaf2c('0x64')],_0xaf2c('0x6c')),_0xaf2c('0x66'));var _0x41c707=ejs['render'](_0x4f378e,{'trunks':_0x55b568||[]});fs[_0xaf2c('0x68')](_0xaf2c('0x6d'),_0x41c707);var _0x483774=ejs['render'](_0x4b9fdc,{'trunks':_0x55b568||[]});fs['writeFileSync'](_0xaf2c('0x6a'),_0x483774);return respondWithRpcPromise(_0xaf2c('0x6e'),_0xaf2c('0x30'),{'module':_0xaf2c('0x6f')});}return null;})['then'](function(_0x19fbd5){if(_0x19fbd5){return _0x3675d9;}})[_0xaf2c('0x1a')](respondWithResult(_0x1b7dc1,null))[_0xaf2c('0x25')](handleError(_0x1b7dc1,null));};exports[_0xaf2c('0x31')]=function(_0x4ddf95,_0x1e8fc0,_0x23aeac){var _0x41590;return db[_0xaf2c('0x53')][_0xaf2c('0x54')]({'where':{'id':_0x4ddf95['params']['id']}})[_0xaf2c('0x1a')](handleEntityNotFound(_0x1e8fc0,null))[_0xaf2c('0x1a')](removeEntity(_0x1e8fc0,null))['then'](function(){return db['Trunk'][_0xaf2c('0x50')]({'raw':!![]});})[_0xaf2c('0x1a')](function(_0x5bce65){var _0x1e6a12=fs[_0xaf2c('0x62')](path[_0xaf2c('0x63')](config[_0xaf2c('0x64')],_0xaf2c('0x65')),_0xaf2c('0x66'));var _0x2a3cb4=fs[_0xaf2c('0x62')](path['join'](config[_0xaf2c('0x64')],'server/files/templates/registry.ejs'),_0xaf2c('0x66'));var _0x7724cc=ejs['render'](_0x1e6a12,{'trunks':_0x5bce65});var _0x4a9ea8=ejs[_0xaf2c('0x67')](_0x2a3cb4,{'trunks':_0x5bce65});fs[_0xaf2c('0x68')](_0xaf2c('0x6d'),_0x7724cc);fs['writeFileSync'](_0xaf2c('0x6a'),_0x4a9ea8);return respondWithRpcPromise(_0xaf2c('0x6e'),_0xaf2c('0x31'),{'module':'chan_sip.so'});})['catch'](handleError(_0x1e8fc0,null));};
\ No newline at end of file
index 09262a1..9073afd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eec=['moment','bluebird','request-promise','path','rimraf','../../config/environment','Trunk','tools_trunks','lodash','../../config/logger','api'];(function(_0x5c8834,_0x42c46e){var _0x1fb693=function(_0x4c75ad){while(--_0x4c75ad){_0x5c8834['push'](_0x5c8834['shift']());}};_0x1fb693(++_0x42c46e);}(_0x7eec,0x168));var _0xc7ee=function(_0x41e159,_0x151525){_0x41e159=_0x41e159-0x0;var _0x593617=_0x7eec[_0x41e159];return _0x593617;};'use strict';var _=require(_0xc7ee('0x0'));var util=require('util');var logger=require(_0xc7ee('0x1'))(_0xc7ee('0x2'));var moment=require(_0xc7ee('0x3'));var BPromise=require(_0xc7ee('0x4'));var rp=require(_0xc7ee('0x5'));var fs=require('fs');var path=require(_0xc7ee('0x6'));var rimraf=require(_0xc7ee('0x7'));var config=require(_0xc7ee('0x8'));var attributes=require('./trunk.attributes');module['exports']=function(_0x109a87,_0x1e88a9){return _0x109a87['define'](_0xc7ee('0x9'),attributes,{'tableName':_0xc7ee('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3434=['Trunk','tools_trunks','lodash','../../config/logger','api','moment','request-promise','./trunk.attributes'];(function(_0x20efe6,_0x2d6285){var _0x2680c2=function(_0x1c969b){while(--_0x1c969b){_0x20efe6['push'](_0x20efe6['shift']());}};_0x2680c2(++_0x2d6285);}(_0x3434,0x72));var _0x4343=function(_0xf027dd,_0x3f4da3){_0xf027dd=_0xf027dd-0x0;var _0x1937af=_0x3434[_0xf027dd];return _0x1937af;};'use strict';var _=require(_0x4343('0x0'));var util=require('util');var logger=require(_0x4343('0x1'))(_0x4343('0x2'));var moment=require(_0x4343('0x3'));var BPromise=require('bluebird');var rp=require(_0x4343('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4343('0x5'));module['exports']=function(_0x3b06d3,_0x13b2fd){return _0x3b06d3['define'](_0x4343('0x6'),attributes,{'tableName':_0x4343('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4166d14..5841522 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90df=['where','attributes','limit','include','map','model','debug','find','ShowTrunk','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Trunk,\x20%s,\x20%s','message','result','catch','GetTrunk','Trunk','findAll','options','raw'];(function(_0x145c35,_0x4c6cee){var _0x147e0f=function(_0x475658){while(--_0x475658){_0x145c35['push'](_0x145c35['shift']());}};_0x147e0f(++_0x4c6cee);}(_0x90df,0x144));var _0xf90d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x90df[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf90d('0x0'));var util=require('util');var moment=require(_0xf90d('0x1'));var BPromise=require('bluebird');var rs=require(_0xf90d('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf90d('0x3'))['db'];var utils=require(_0xf90d('0x4'));var logger=require(_0xf90d('0x5'))(_0xf90d('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xf90d('0x7')][_0xf90d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3c166f,_0xdbf38d,_0x50f71f){return new BPromise(function(_0x4eddbe,_0x13486b){return client[_0xf90d('0x9')](_0x3c166f,_0x50f71f)[_0xf90d('0xa')](function(_0x1054ec){logger[_0xf90d('0xb')]('Trunk,\x20%s,\x20%s',_0xdbf38d,'request\x20sent');logger['debug'](_0xf90d('0xc'),_0xdbf38d,_0xf90d('0xd'),JSON[_0xf90d('0xe')](_0x1054ec));if(_0x1054ec[_0xf90d('0xf')]){if(_0x1054ec['error'][_0xf90d('0x10')]===0x1f4){logger[_0xf90d('0xf')](_0xf90d('0x11'),_0xdbf38d,_0x1054ec[_0xf90d('0xf')]['message']);return _0x13486b(_0x1054ec['error'][_0xf90d('0x12')]);}logger[_0xf90d('0xf')]('Trunk,\x20%s,\x20%s',_0xdbf38d,_0x1054ec['error'][_0xf90d('0x12')]);return _0x4eddbe(_0x1054ec[_0xf90d('0xf')][_0xf90d('0x12')]);}else{logger['info'](_0xf90d('0x11'),_0xdbf38d,_0xf90d('0xd'));_0x4eddbe(_0x1054ec[_0xf90d('0x13')][_0xf90d('0x12')]);}})[_0xf90d('0x14')](function(_0x6f02e4){logger[_0xf90d('0xf')](_0xf90d('0x11'),_0xdbf38d,_0x6f02e4);_0x13486b(_0x6f02e4);});});}exports[_0xf90d('0x15')]=function(_0x3d53c1){var _0x4fc823=this;return new Promise(function(_0x25e21c,_0x4651df){return db[_0xf90d('0x16')][_0xf90d('0x17')]({'raw':_0x3d53c1['options']?_0x3d53c1[_0xf90d('0x18')][_0xf90d('0x19')]===undefined?!![]:![]:!![],'where':_0x3d53c1['options']?_0x3d53c1[_0xf90d('0x18')][_0xf90d('0x1a')]||null:null,'attributes':_0x3d53c1[_0xf90d('0x18')]?_0x3d53c1['options'][_0xf90d('0x1b')]||null:null,'limit':_0x3d53c1[_0xf90d('0x18')]?_0x3d53c1['options'][_0xf90d('0x1c')]||null:null,'include':_0x3d53c1[_0xf90d('0x18')]?_0x3d53c1['options'][_0xf90d('0x1d')]?_[_0xf90d('0x1e')](_0x3d53c1[_0xf90d('0x18')][_0xf90d('0x1d')],function(_0x47576a){return{'model':db[_0x47576a['model']],'as':_0x47576a['as'],'attributes':_0x47576a[_0xf90d('0x1b')],'include':_0x47576a[_0xf90d('0x1d')]?_[_0xf90d('0x1e')](_0x47576a['include'],function(_0x37bd16){return{'model':db[_0x37bd16['model']],'as':_0x37bd16['as'],'attributes':_0x37bd16[_0xf90d('0x1b')],'include':_0x37bd16[_0xf90d('0x1d')]?_[_0xf90d('0x1e')](_0x37bd16[_0xf90d('0x1d')],function(_0x56545a){return{'model':db[_0x56545a[_0xf90d('0x1f')]],'as':_0x56545a['as'],'attributes':_0x56545a[_0xf90d('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2671a3){logger['info'](_0xf90d('0x15'),_0x3d53c1);logger[_0xf90d('0x20')](_0xf90d('0x15'),_0x3d53c1,JSON['stringify'](_0x2671a3));_0x25e21c(_0x2671a3);})[_0xf90d('0x14')](function(_0x57395f){logger[_0xf90d('0xf')](_0xf90d('0x15'),_0x57395f[_0xf90d('0x12')],_0x3d53c1);_0x4651df(_0x4fc823[_0xf90d('0xf')](0x1f4,_0x57395f[_0xf90d('0x12')]));});});};exports['ShowTrunk']=function(_0x4016fe){var _0x73fd9a=this;return new Promise(function(_0x23419b,_0x4b9dc6){return db[_0xf90d('0x16')][_0xf90d('0x21')]({'raw':_0x4016fe[_0xf90d('0x18')]?_0x4016fe[_0xf90d('0x18')][_0xf90d('0x19')]===undefined?!![]:![]:!![],'where':_0x4016fe[_0xf90d('0x18')]?_0x4016fe['options'][_0xf90d('0x1a')]||null:null,'attributes':_0x4016fe[_0xf90d('0x18')]?_0x4016fe[_0xf90d('0x18')][_0xf90d('0x1b')]||null:null,'include':_0x4016fe[_0xf90d('0x18')]?_0x4016fe[_0xf90d('0x18')][_0xf90d('0x1d')]?_[_0xf90d('0x1e')](_0x4016fe[_0xf90d('0x18')]['include'],function(_0x4d4b63){return{'model':db[_0x4d4b63[_0xf90d('0x1f')]],'as':_0x4d4b63['as'],'attributes':_0x4d4b63['attributes'],'include':_0x4d4b63[_0xf90d('0x1d')]?_[_0xf90d('0x1e')](_0x4d4b63[_0xf90d('0x1d')],function(_0x49c27b){return{'model':db[_0x49c27b[_0xf90d('0x1f')]],'as':_0x49c27b['as'],'attributes':_0x49c27b[_0xf90d('0x1b')],'include':_0x49c27b[_0xf90d('0x1d')]?_[_0xf90d('0x1e')](_0x49c27b[_0xf90d('0x1d')],function(_0x4920c9){return{'model':db[_0x4920c9['model']],'as':_0x4920c9['as'],'attributes':_0x4920c9[_0xf90d('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xf90d('0xa')](function(_0xfef713){logger[_0xf90d('0xb')](_0xf90d('0x22'),_0x4016fe);logger[_0xf90d('0x20')](_0xf90d('0x22'),_0x4016fe,JSON[_0xf90d('0xe')](_0xfef713));_0x23419b(_0xfef713);})[_0xf90d('0x14')](function(_0xdd9c90){logger[_0xf90d('0xf')]('ShowTrunk',_0xdd9c90[_0xf90d('0x12')],_0x4016fe);_0x4b9dc6(_0x73fd9a[_0xf90d('0xf')](0x1f4,_0xdd9c90[_0xf90d('0x12')]));});});};
\ No newline at end of file
+var _0x129c=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','GetTrunk','Trunk','findAll','options','raw','where','attributes','include','map','model','catch','ShowTrunk','find','bluebird','ioredis','../../mysqldb'];(function(_0x3396bc,_0x5285ac){var _0x58ccff=function(_0x440e89){while(--_0x440e89){_0x3396bc['push'](_0x3396bc['shift']());}};_0x58ccff(++_0x5285ac);}(_0x129c,0x1ec));var _0xc129=function(_0x200def,_0x18f294){_0x200def=_0x200def-0x0;var _0x1f2514=_0x129c[_0x200def];return _0x1f2514;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xc129('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc129('0x1'));var db=require(_0xc129('0x2'))['db'];var utils=require(_0xc129('0x3'));var logger=require(_0xc129('0x4'))(_0xc129('0x5'));var config=require(_0xc129('0x6'));var jayson=require(_0xc129('0x7'));var client=jayson[_0xc129('0x8')][_0xc129('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4fb11c,_0x22ad5b,_0x2007ae){return new BPromise(function(_0x40bd94,_0x123000){return client[_0xc129('0xa')](_0x4fb11c,_0x2007ae)[_0xc129('0xb')](function(_0x4f16b5){logger[_0xc129('0xc')](_0xc129('0xd'),_0x22ad5b,_0xc129('0xe'));logger[_0xc129('0xf')]('Trunk,\x20%s,\x20%s,\x20%s',_0x22ad5b,_0xc129('0xe'),JSON[_0xc129('0x10')](_0x4f16b5));if(_0x4f16b5['error']){if(_0x4f16b5[_0xc129('0x11')][_0xc129('0x12')]===0x1f4){logger['error']('Trunk,\x20%s,\x20%s',_0x22ad5b,_0x4f16b5[_0xc129('0x11')][_0xc129('0x13')]);return _0x123000(_0x4f16b5[_0xc129('0x11')][_0xc129('0x13')]);}logger['error'](_0xc129('0xd'),_0x22ad5b,_0x4f16b5[_0xc129('0x11')]['message']);return _0x40bd94(_0x4f16b5[_0xc129('0x11')][_0xc129('0x13')]);}else{logger['info'](_0xc129('0xd'),_0x22ad5b,'request\x20sent');_0x40bd94(_0x4f16b5['result'][_0xc129('0x13')]);}})['catch'](function(_0xc48000){logger[_0xc129('0x11')](_0xc129('0xd'),_0x22ad5b,_0xc48000);_0x123000(_0xc48000);});});}exports[_0xc129('0x14')]=function(_0xc2efc0){var _0x471955=this;return new Promise(function(_0x32a51e,_0x6fba61){return db[_0xc129('0x15')][_0xc129('0x16')]({'raw':_0xc2efc0[_0xc129('0x17')]?_0xc2efc0['options'][_0xc129('0x18')]===undefined?!![]:![]:!![],'where':_0xc2efc0['options']?_0xc2efc0[_0xc129('0x17')][_0xc129('0x19')]||null:null,'attributes':_0xc2efc0['options']?_0xc2efc0['options'][_0xc129('0x1a')]||null:null,'limit':_0xc2efc0[_0xc129('0x17')]?_0xc2efc0[_0xc129('0x17')]['limit']||null:null,'include':_0xc2efc0[_0xc129('0x17')]?_0xc2efc0['options'][_0xc129('0x1b')]?_[_0xc129('0x1c')](_0xc2efc0[_0xc129('0x17')]['include'],function(_0xd94554){return{'model':db[_0xd94554[_0xc129('0x1d')]],'as':_0xd94554['as'],'attributes':_0xd94554[_0xc129('0x1a')],'include':_0xd94554[_0xc129('0x1b')]?_['map'](_0xd94554['include'],function(_0x112430){return{'model':db[_0x112430[_0xc129('0x1d')]],'as':_0x112430['as'],'attributes':_0x112430[_0xc129('0x1a')],'include':_0x112430[_0xc129('0x1b')]?_[_0xc129('0x1c')](_0x112430[_0xc129('0x1b')],function(_0x12b489){return{'model':db[_0x12b489[_0xc129('0x1d')]],'as':_0x12b489['as'],'attributes':_0x12b489[_0xc129('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x743804){logger[_0xc129('0xc')](_0xc129('0x14'),_0xc2efc0);logger[_0xc129('0xf')]('GetTrunk',_0xc2efc0,JSON[_0xc129('0x10')](_0x743804));_0x32a51e(_0x743804);})[_0xc129('0x1e')](function(_0x240034){logger[_0xc129('0x11')](_0xc129('0x14'),_0x240034[_0xc129('0x13')],_0xc2efc0);_0x6fba61(_0x471955[_0xc129('0x11')](0x1f4,_0x240034[_0xc129('0x13')]));});});};exports[_0xc129('0x1f')]=function(_0x1366cc){var _0x327096=this;return new Promise(function(_0xe8c3d5,_0x3f959e){return db[_0xc129('0x15')][_0xc129('0x20')]({'raw':_0x1366cc[_0xc129('0x17')]?_0x1366cc[_0xc129('0x17')][_0xc129('0x18')]===undefined?!![]:![]:!![],'where':_0x1366cc[_0xc129('0x17')]?_0x1366cc['options'][_0xc129('0x19')]||null:null,'attributes':_0x1366cc[_0xc129('0x17')]?_0x1366cc[_0xc129('0x17')][_0xc129('0x1a')]||null:null,'include':_0x1366cc[_0xc129('0x17')]?_0x1366cc[_0xc129('0x17')][_0xc129('0x1b')]?_[_0xc129('0x1c')](_0x1366cc['options'][_0xc129('0x1b')],function(_0x3856da){return{'model':db[_0x3856da[_0xc129('0x1d')]],'as':_0x3856da['as'],'attributes':_0x3856da[_0xc129('0x1a')],'include':_0x3856da[_0xc129('0x1b')]?_[_0xc129('0x1c')](_0x3856da[_0xc129('0x1b')],function(_0x2c1ff9){return{'model':db[_0x2c1ff9[_0xc129('0x1d')]],'as':_0x2c1ff9['as'],'attributes':_0x2c1ff9['attributes'],'include':_0x2c1ff9[_0xc129('0x1b')]?_[_0xc129('0x1c')](_0x2c1ff9[_0xc129('0x1b')],function(_0x283649){return{'model':db[_0x283649['model']],'as':_0x283649['as'],'attributes':_0x283649['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x51992c){logger[_0xc129('0xc')](_0xc129('0x1f'),_0x1366cc);logger[_0xc129('0xf')](_0xc129('0x1f'),_0x1366cc,JSON[_0xc129('0x10')](_0x51992c));_0xe8c3d5(_0x51992c);})[_0xc129('0x1e')](function(_0x1185d7){logger['error']('ShowTrunk',_0x1185d7[_0xc129('0x13')],_0x1366cc);_0x3f959e(_0x327096['error'](0x1f4,_0x1185d7[_0xc129('0x13')]));});});};
\ No newline at end of file
index 22a5eb7..31adabf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x196f=['/:id/sms_accounts','addSmsAccounts','put','/:id','/:id/password','changePassword','delete','destroy','removeChatInteractions','/:id/mail_interactions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','/:id/openchannel_interactions','removeOpenchannelInteractions','removeWhatsappInteractions','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./user.controller','get','index','isAuthenticated','describe','/whoami','whoami','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','getContacts','/:id/queues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','/:id/recordings','getRecordings','getScreenRecordings','/:id/chat/interactions','/:id/openchannel/interactions','getOpenchannelInteractions','getMailInteractions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','getTeams','/:id/lists','/:id/agents','getAgents','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','getApiKey','post','/:id/contacts','addContacts','create','bulkCreate','addQueues','diskStorage','join','server/files/images/','format','originalname','single','file','addAvatar','/:id/login','login','/:id/logout','logout','/:id/pause','/:id/unpause','unpause','/:id/teams','addTeams','/:id/chat_interactions','addChatInteractions','addMailInteractions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addOpenchannelAccounts'];(function(_0x58b603,_0x450f6d){var _0xf76126=function(_0x5688da){while(--_0x5688da){_0x58b603['push'](_0x58b603['shift']());}};_0xf76126(++_0x450f6d);}(_0x196f,0x85));var _0xf196=function(_0x4acd3f,_0xef201e){_0x4acd3f=_0x4acd3f-0x0;var _0x5dd3ab=_0x196f[_0x4acd3f];return _0x5dd3ab;};'use strict';var multer=require(_0xf196('0x0'));var util=require(_0xf196('0x1'));var path=require(_0xf196('0x2'));var timeout=require(_0xf196('0x3'));var express=require(_0xf196('0x4'));var router=express[_0xf196('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xf196('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xf196('0x7'));var controller=require(_0xf196('0x8'));router[_0xf196('0x9')]('/',auth['isAuthenticated'](),controller[_0xf196('0xa')]);router['get']('/describe',auth[_0xf196('0xb')](),controller[_0xf196('0xc')]);router[_0xf196('0x9')](_0xf196('0xd'),auth[_0xf196('0xb')](),controller[_0xf196('0xe')]);router['get']('/presence',auth[_0xf196('0xb')](),controller['getPresence']);router[_0xf196('0x9')]('/:id',auth[_0xf196('0xb')](),controller['show']);router['get'](_0xf196('0xf'),controller[_0xf196('0x10')]);router[_0xf196('0x9')](_0xf196('0x11'),auth[_0xf196('0xb')](),controller[_0xf196('0x12')]);router[_0xf196('0x9')]('/:id/contacts',auth[_0xf196('0xb')](),controller[_0xf196('0x13')]);router[_0xf196('0x9')](_0xf196('0x14'),auth['isAuthenticated'](),controller['getQueues']);router['get'](_0xf196('0x15'),auth[_0xf196('0xb')](),controller[_0xf196('0x16')]);router[_0xf196('0x9')](_0xf196('0x17'),auth['isAuthenticated'](),controller['getGroups']);router['get'](_0xf196('0x18'),auth[_0xf196('0xb')](),controller[_0xf196('0x19')]);router[_0xf196('0x9')]('/:id/screen_recordings',auth[_0xf196('0xb')](),controller[_0xf196('0x1a')]);router[_0xf196('0x9')](_0xf196('0x1b'),auth['isAuthenticated'](),controller['getChatInteractions']);router['get'](_0xf196('0x1c'),auth[_0xf196('0xb')](),controller[_0xf196('0x1d')]);router[_0xf196('0x9')]('/:id/mail/interactions',auth['isAuthenticated'](),controller[_0xf196('0x1e')]);router[_0xf196('0x9')]('/:id/sms/interactions',auth[_0xf196('0xb')](),controller['getSmsInteractions']);router[_0xf196('0x9')]('/:id/fax/interactions',auth[_0xf196('0xb')](),controller[_0xf196('0x1f')]);router[_0xf196('0x9')](_0xf196('0x20'),auth[_0xf196('0xb')](),controller[_0xf196('0x21')]);router[_0xf196('0x9')]('/:id/teams',auth['isAuthenticated'](),controller[_0xf196('0x22')]);router['get'](_0xf196('0x23'),auth['isAuthenticated'](),controller['getLists']);router[_0xf196('0x9')](_0xf196('0x24'),auth['isAuthenticated'](),controller[_0xf196('0x25')]);router[_0xf196('0x9')]('/:id/prefixes',auth['isAuthenticated'](),controller['getVoicePrefixes']);router[_0xf196('0x9')](_0xf196('0x26'),auth['isAuthenticated'](),controller[_0xf196('0x27')]);router[_0xf196('0x9')](_0xf196('0x28'),auth[_0xf196('0xb')](),controller[_0xf196('0x29')]);router[_0xf196('0x9')](_0xf196('0x2a'),auth['isAuthenticated'](),controller[_0xf196('0x2b')]);router['get']('/:id/sms_accounts',auth[_0xf196('0xb')](),controller['getSmsAccounts']);router['get'](_0xf196('0x2c'),auth['isAuthenticated'](),controller[_0xf196('0x2d')]);router[_0xf196('0x9')](_0xf196('0x2e'),auth[_0xf196('0xb')](),controller[_0xf196('0x2f')]);router['get'](_0xf196('0x30'),auth[_0xf196('0xb')](),controller[_0xf196('0x31')]);router['get'](_0xf196('0x32'),auth[_0xf196('0xb')](),controller[_0xf196('0x33')]);router[_0xf196('0x9')](_0xf196('0x34'),auth['isAuthenticated'](),controller[_0xf196('0x35')]);router[_0xf196('0x36')](_0xf196('0x37'),auth[_0xf196('0xb')](),controller[_0xf196('0x38')]);router[_0xf196('0x36')]('/',auth[_0xf196('0xb')](),controller[_0xf196('0x39')]);router[_0xf196('0x36')]('/create_many',auth[_0xf196('0xb')](),controller[_0xf196('0x3a')]);router[_0xf196('0x36')](_0xf196('0x14'),auth[_0xf196('0xb')](),controller[_0xf196('0x3b')]);var upload=multer({'storage':multer[_0xf196('0x3c')]({'destination':function(_0x4725c5,_0x5db39b,_0x5e7c8f){_0x5e7c8f(null,path[_0xf196('0x3d')](config['root'],_0xf196('0x3e')));},'filename':function(_0x34b7ef,_0x24dd04,_0x497169){_0x497169(null,util[_0xf196('0x3f')]('%s-%s',Date['now'](),_0x24dd04[_0xf196('0x40')]));}})});router[_0xf196('0x36')]('/:id/avatar',upload[_0xf196('0x41')](_0xf196('0x42')),controller[_0xf196('0x43')]);router[_0xf196('0x36')](_0xf196('0x44'),auth[_0xf196('0xb')](),controller[_0xf196('0x45')]);router[_0xf196('0x36')](_0xf196('0x46'),auth[_0xf196('0xb')](),controller[_0xf196('0x47')]);router[_0xf196('0x36')](_0xf196('0x48'),auth[_0xf196('0xb')](),controller['pause']);router[_0xf196('0x36')](_0xf196('0x49'),auth[_0xf196('0xb')](),controller[_0xf196('0x4a')]);router[_0xf196('0x36')](_0xf196('0x4b'),auth[_0xf196('0xb')](),controller[_0xf196('0x4c')]);router[_0xf196('0x36')](_0xf196('0x4d'),auth['isAuthenticated'](),controller[_0xf196('0x4e')]);router[_0xf196('0x36')]('/:id/mail_interactions',auth[_0xf196('0xb')](),controller[_0xf196('0x4f')]);router[_0xf196('0x36')]('/:id/fax_interactions',auth['isAuthenticated'](),controller[_0xf196('0x50')]);router[_0xf196('0x36')](_0xf196('0x51'),auth[_0xf196('0xb')](),controller[_0xf196('0x52')]);router[_0xf196('0x36')]('/:id/openchannel_interactions',auth['isAuthenticated'](),controller[_0xf196('0x53')]);router[_0xf196('0x36')](_0xf196('0x54'),auth[_0xf196('0xb')](),controller[_0xf196('0x55')]);router[_0xf196('0x36')](_0xf196('0x26'),auth[_0xf196('0xb')](),controller['addFaxAccounts']);router['post'](_0xf196('0x28'),auth[_0xf196('0xb')](),controller['addMailAccounts']);router[_0xf196('0x36')](_0xf196('0x2a'),auth[_0xf196('0xb')](),controller[_0xf196('0x56')]);router[_0xf196('0x36')](_0xf196('0x57'),auth[_0xf196('0xb')](),controller[_0xf196('0x58')]);router[_0xf196('0x36')]('/:id/chat_websites',auth[_0xf196('0xb')](),controller['addChatWebsites']);router['post'](_0xf196('0x2e'),auth[_0xf196('0xb')](),controller['addWhatsappAccounts']);router[_0xf196('0x36')](_0xf196('0x30'),auth['isAuthenticated'](),controller['addSquareProjects']);router[_0xf196('0x36')](_0xf196('0x34'),auth['isAuthenticated'](),controller['createApiKey']);router[_0xf196('0x59')](_0xf196('0x5a'),auth[_0xf196('0xb')](),controller['update']);router[_0xf196('0x59')](_0xf196('0x5b'),auth[_0xf196('0xb')](),controller[_0xf196('0x5c')]);router[_0xf196('0x5d')](_0xf196('0x14'),auth[_0xf196('0xb')](),controller['removeQueues']);router[_0xf196('0x5d')](_0xf196('0x4b'),auth[_0xf196('0xb')](),controller['removeTeams']);router[_0xf196('0x5d')](_0xf196('0x5a'),auth[_0xf196('0xb')](),controller[_0xf196('0x5e')]);router[_0xf196('0x5d')](_0xf196('0x4d'),auth[_0xf196('0xb')](),controller[_0xf196('0x5f')]);router[_0xf196('0x5d')](_0xf196('0x60'),auth[_0xf196('0xb')](),controller[_0xf196('0x61')]);router['delete']('/:id/fax_interactions',auth[_0xf196('0xb')](),controller[_0xf196('0x62')]);router[_0xf196('0x5d')](_0xf196('0x51'),auth['isAuthenticated'](),controller[_0xf196('0x63')]);router['delete'](_0xf196('0x64'),auth[_0xf196('0xb')](),controller[_0xf196('0x65')]);router[_0xf196('0x5d')](_0xf196('0x54'),auth[_0xf196('0xb')](),controller[_0xf196('0x66')]);router[_0xf196('0x5d')](_0xf196('0x26'),auth[_0xf196('0xb')](),controller['removeFaxAccounts']);router[_0xf196('0x5d')]('/:id/mail_accounts',auth['isAuthenticated'](),controller[_0xf196('0x67')]);router['delete']('/:id/openchannel_accounts',auth[_0xf196('0xb')](),controller[_0xf196('0x68')]);router[_0xf196('0x5d')](_0xf196('0x57'),auth[_0xf196('0xb')](),controller[_0xf196('0x69')]);router[_0xf196('0x5d')](_0xf196('0x2c'),auth[_0xf196('0xb')](),controller[_0xf196('0x6a')]);router[_0xf196('0x5d')](_0xf196('0x2e'),auth[_0xf196('0xb')](),controller[_0xf196('0x6b')]);router[_0xf196('0x5d')]('/:id/square_projects',auth[_0xf196('0xb')](),controller[_0xf196('0x6c')]);router[_0xf196('0x5d')](_0xf196('0x34'),auth[_0xf196('0xb')](),controller['removeApiKey']);module[_0xf196('0x6d')]=router;
\ No newline at end of file
+var _0xf119=['/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','addSquareProjects','createApiKey','put','/:id','update','/:id/password','changePassword','delete','destroy','removeChatInteractions','removeMailInteractions','removeFaxInteractions','/:id/sms_interactions','removeSmsInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','/:id/square_projects','removeSquareProjects','removeApiKey','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','get','index','/describe','describe','/whoami','isAuthenticated','whoami','/presence','show','/:id/avatar','getOpenTabs','getContacts','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','getOpenchannelInteractions','getMailInteractions','/:id/sms/interactions','/:id/fax/interactions','getFaxInteractions','getWhatsappInteractions','getTeams','/:id/lists','getLists','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','/:id/mail_accounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getSquareProjects','getScheduledCalls','/:id/api_key','getApiKey','post','/:id/contacts','addContacts','create','bulkCreate','/:id/queues','addQueues','diskStorage','root','%s-%s','now','originalname','single','file','/:id/login','login','/:id/logout','logout','/:id/pause','/:id/unpause','unpause','/:id/teams','addTeams','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','addSmsInteractions'];(function(_0x313101,_0x2671fc){var _0x22d7ed=function(_0x4a50dc){while(--_0x4a50dc){_0x313101['push'](_0x313101['shift']());}};_0x22d7ed(++_0x2671fc);}(_0xf119,0x98));var _0x9f11=function(_0x537013,_0x3627c0){_0x537013=_0x537013-0x0;var _0x58eb1e=_0xf119[_0x537013];return _0x58eb1e;};'use strict';var multer=require('multer');var util=require(_0x9f11('0x0'));var path=require(_0x9f11('0x1'));var timeout=require(_0x9f11('0x2'));var express=require(_0x9f11('0x3'));var router=express[_0x9f11('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9f11('0x5'));var interaction=require(_0x9f11('0x6'));var config=require(_0x9f11('0x7'));var controller=require(_0x9f11('0x8'));router[_0x9f11('0x9')]('/',auth['isAuthenticated'](),controller[_0x9f11('0xa')]);router[_0x9f11('0x9')](_0x9f11('0xb'),auth['isAuthenticated'](),controller[_0x9f11('0xc')]);router['get'](_0x9f11('0xd'),auth[_0x9f11('0xe')](),controller[_0x9f11('0xf')]);router['get'](_0x9f11('0x10'),auth[_0x9f11('0xe')](),controller['getPresence']);router[_0x9f11('0x9')]('/:id',auth[_0x9f11('0xe')](),controller[_0x9f11('0x11')]);router[_0x9f11('0x9')](_0x9f11('0x12'),controller['getAvatar']);router[_0x9f11('0x9')]('/:id/open_tabs',auth['isAuthenticated'](),controller[_0x9f11('0x13')]);router['get']('/:id/contacts',auth[_0x9f11('0xe')](),controller[_0x9f11('0x14')]);router[_0x9f11('0x9')]('/:id/queues',auth[_0x9f11('0xe')](),controller['getQueues']);router[_0x9f11('0x9')](_0x9f11('0x15'),auth['isAuthenticated'](),controller[_0x9f11('0x16')]);router['get'](_0x9f11('0x17'),auth[_0x9f11('0xe')](),controller['getGroups']);router[_0x9f11('0x9')](_0x9f11('0x18'),auth['isAuthenticated'](),controller[_0x9f11('0x19')]);router[_0x9f11('0x9')](_0x9f11('0x1a'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x1b')]);router['get'](_0x9f11('0x1c'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x1d')]);router[_0x9f11('0x9')]('/:id/openchannel/interactions',auth[_0x9f11('0xe')](),controller[_0x9f11('0x1e')]);router['get']('/:id/mail/interactions',auth[_0x9f11('0xe')](),controller[_0x9f11('0x1f')]);router[_0x9f11('0x9')](_0x9f11('0x20'),auth['isAuthenticated'](),controller['getSmsInteractions']);router[_0x9f11('0x9')](_0x9f11('0x21'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x22')]);router[_0x9f11('0x9')]('/:id/whatsapp/interactions',auth[_0x9f11('0xe')](),controller[_0x9f11('0x23')]);router[_0x9f11('0x9')]('/:id/teams',auth['isAuthenticated'](),controller[_0x9f11('0x24')]);router[_0x9f11('0x9')](_0x9f11('0x25'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x26')]);router[_0x9f11('0x9')]('/:id/agents',auth[_0x9f11('0xe')](),controller[_0x9f11('0x27')]);router['get'](_0x9f11('0x28'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x29')]);router['get'](_0x9f11('0x2a'),auth[_0x9f11('0xe')](),controller['getFaxAccounts']);router['get'](_0x9f11('0x2b'),auth['isAuthenticated'](),controller['getMailAccounts']);router[_0x9f11('0x9')](_0x9f11('0x2c'),auth['isAuthenticated'](),controller[_0x9f11('0x2d')]);router[_0x9f11('0x9')](_0x9f11('0x2e'),auth[_0x9f11('0xe')](),controller['getSmsAccounts']);router['get'](_0x9f11('0x2f'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x30')]);router[_0x9f11('0x9')](_0x9f11('0x31'),auth[_0x9f11('0xe')](),controller['getWhatsappAccounts']);router[_0x9f11('0x9')]('/:id/square_projects',auth['isAuthenticated'](),controller[_0x9f11('0x32')]);router[_0x9f11('0x9')]('/:id/scheduled_calls',auth['isAuthenticated'](),controller[_0x9f11('0x33')]);router[_0x9f11('0x9')](_0x9f11('0x34'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x35')]);router[_0x9f11('0x36')](_0x9f11('0x37'),auth['isAuthenticated'](),controller[_0x9f11('0x38')]);router[_0x9f11('0x36')]('/',auth[_0x9f11('0xe')](),controller[_0x9f11('0x39')]);router[_0x9f11('0x36')]('/create_many',auth[_0x9f11('0xe')](),controller[_0x9f11('0x3a')]);router['post'](_0x9f11('0x3b'),auth['isAuthenticated'](),controller[_0x9f11('0x3c')]);var upload=multer({'storage':multer[_0x9f11('0x3d')]({'destination':function(_0x28644f,_0xc39306,_0x493fcc){_0x493fcc(null,path['join'](config[_0x9f11('0x3e')],'server/files/images/'));},'filename':function(_0x14350c,_0x32e5fe,_0x5735cf){_0x5735cf(null,util['format'](_0x9f11('0x3f'),Date[_0x9f11('0x40')](),_0x32e5fe[_0x9f11('0x41')]));}})});router[_0x9f11('0x36')](_0x9f11('0x12'),upload[_0x9f11('0x42')](_0x9f11('0x43')),controller['addAvatar']);router[_0x9f11('0x36')](_0x9f11('0x44'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x45')]);router[_0x9f11('0x36')](_0x9f11('0x46'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x47')]);router['post'](_0x9f11('0x48'),auth[_0x9f11('0xe')](),controller['pause']);router[_0x9f11('0x36')](_0x9f11('0x49'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x4a')]);router[_0x9f11('0x36')](_0x9f11('0x4b'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x4c')]);router[_0x9f11('0x36')](_0x9f11('0x4d'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x4e')]);router[_0x9f11('0x36')](_0x9f11('0x4f'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x50')]);router[_0x9f11('0x36')](_0x9f11('0x51'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x52')]);router[_0x9f11('0x36')]('/:id/sms_interactions',auth[_0x9f11('0xe')](),controller[_0x9f11('0x53')]);router[_0x9f11('0x36')](_0x9f11('0x54'),auth['isAuthenticated'](),controller[_0x9f11('0x55')]);router[_0x9f11('0x36')](_0x9f11('0x56'),auth[_0x9f11('0xe')](),controller['addWhatsappInteractions']);router[_0x9f11('0x36')](_0x9f11('0x2a'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x57')]);router['post'](_0x9f11('0x2b'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x58')]);router[_0x9f11('0x36')]('/:id/openchannel_accounts',auth[_0x9f11('0xe')](),controller[_0x9f11('0x59')]);router['post'](_0x9f11('0x2e'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x5a')]);router[_0x9f11('0x36')]('/:id/chat_websites',auth[_0x9f11('0xe')](),controller[_0x9f11('0x5b')]);router[_0x9f11('0x36')]('/:id/whatsapp_accounts',auth[_0x9f11('0xe')](),controller[_0x9f11('0x5c')]);router[_0x9f11('0x36')]('/:id/square_projects',auth[_0x9f11('0xe')](),controller[_0x9f11('0x5d')]);router['post'](_0x9f11('0x34'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x5e')]);router[_0x9f11('0x5f')](_0x9f11('0x60'),auth['isAuthenticated'](),controller[_0x9f11('0x61')]);router[_0x9f11('0x5f')](_0x9f11('0x62'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x63')]);router['delete'](_0x9f11('0x3b'),auth[_0x9f11('0xe')](),controller['removeQueues']);router[_0x9f11('0x64')]('/:id/teams',auth[_0x9f11('0xe')](),controller['removeTeams']);router['delete'](_0x9f11('0x60'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x65')]);router[_0x9f11('0x64')](_0x9f11('0x4d'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x66')]);router[_0x9f11('0x64')](_0x9f11('0x4f'),auth['isAuthenticated'](),controller[_0x9f11('0x67')]);router[_0x9f11('0x64')]('/:id/fax_interactions',auth[_0x9f11('0xe')](),controller[_0x9f11('0x68')]);router['delete'](_0x9f11('0x69'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x6a')]);router[_0x9f11('0x64')](_0x9f11('0x54'),auth[_0x9f11('0xe')](),controller['removeOpenchannelInteractions']);router[_0x9f11('0x64')]('/:id/whatsapp_interactions',auth[_0x9f11('0xe')](),controller[_0x9f11('0x6b')]);router[_0x9f11('0x64')](_0x9f11('0x2a'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x6c')]);router[_0x9f11('0x64')](_0x9f11('0x2b'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x6d')]);router[_0x9f11('0x64')](_0x9f11('0x2c'),auth['isAuthenticated'](),controller[_0x9f11('0x6e')]);router[_0x9f11('0x64')](_0x9f11('0x2e'),auth['isAuthenticated'](),controller[_0x9f11('0x6f')]);router[_0x9f11('0x64')](_0x9f11('0x2f'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x70')]);router[_0x9f11('0x64')](_0x9f11('0x31'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x71')]);router[_0x9f11('0x64')](_0x9f11('0x72'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x73')]);router['delete'](_0x9f11('0x34'),auth[_0x9f11('0xe')](),controller[_0x9f11('0x74')]);module[_0x9f11('0x75')]=router;
\ No newline at end of file
index a376f6e..6ce744f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb422=['PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','join','split','shortinfo','inband','yes','nonat','update','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','fingerprint','certificate','passive','update,nonat','TEXT','showWebBar','get','isArray','encryption','avpf','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','rtcp_mux','permissions','VIRTUAL','string','true','screenrecording','blocked','blockedAt','lodash','name','setDataValue','The\x20name\x20of\x20the\x20user','STRING','fullname','callerid','getDataValue','email','toLowerCase','admin','user','agent','telephone','local','INTEGER','internal','accountcode','format','\x22%s\x22\x20<%s>','DATE','BOOLEAN','dynamic','peer','friend','ENUM','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','PROHIB_NOT_SCREENED'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xb422,0x85));var _0x2b42=function(_0x38ecda,_0x3b551e){_0x38ecda=_0x38ecda-0x0;var _0x3fa8f3=_0xb422[_0x38ecda];return _0x3fa8f3;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');var util=require('util');var _=require(_0x2b42('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x2b42('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x5a42d2){this[_0x2b42('0x2')]('name',_0x5a42d2);this[_0x2b42('0x2')]('defaultuser',_0x5a42d2);},'comment':_0x2b42('0x3')},'fullname':{'type':Sequelize[_0x2b42('0x4')],'allowNull':![],'set':function(_0x750c2){this['setDataValue'](_0x2b42('0x5'),_0x750c2);this[_0x2b42('0x2')](_0x2b42('0x6'),util['format']('\x22%s\x22\x20<%s>',_0x750c2,this[_0x2b42('0x7')]('internal')));}},'alias':{'type':Sequelize[_0x2b42('0x4')]},'email':{'type':Sequelize[_0x2b42('0x4')],'allowNull':![],'unique':_0x2b42('0x8'),'validate':{'isEmail':!![]},'set':function(_0x1ec844){if(_0x1ec844){this['setDataValue'](_0x2b42('0x8'),_0x1ec844[_0x2b42('0x9')]());}}},'role':{'type':Sequelize['ENUM'](_0x2b42('0xa'),_0x2b42('0xb'),_0x2b42('0xc'),_0x2b42('0xd')),'allowNull':![]},'password':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0x2b42('0xe')},'internal':{'type':Sequelize[_0x2b42('0xf')](0xb),'allowNull':![],'unique':'internal','set':function(_0x232c58){this[_0x2b42('0x2')](_0x2b42('0x10'),_0x232c58);this[_0x2b42('0x2')](_0x2b42('0x11'),_0x232c58);this[_0x2b42('0x2')](_0x2b42('0x6'),util[_0x2b42('0x12')](_0x2b42('0x13'),this[_0x2b42('0x7')]('fullname'),_0x232c58));}},'salt':{'type':Sequelize[_0x2b42('0x4')]},'phone':{'type':Sequelize[_0x2b42('0x4')]},'mobile':{'type':Sequelize[_0x2b42('0x4')]},'address':{'type':Sequelize[_0x2b42('0x4')]},'zipcode':{'type':Sequelize[_0x2b42('0x4')]},'userpic':{'type':Sequelize[_0x2b42('0x4')]},'city':{'type':Sequelize[_0x2b42('0x4')]},'country':{'type':Sequelize[_0x2b42('0x4')]},'online':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x2b42('0x14')]},'voicePause':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![]},'chatPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0x2b42('0x14')]},'chatCapacity':{'type':Sequelize[_0x2b42('0xf')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x2b42('0xf')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x2b42('0xf')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x2b42('0xf')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x2b42('0xf')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x2b42('0xf')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x2b42('0xf')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x2b42('0xf')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![]},'description':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'host':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![],'defaultValue':_0x2b42('0x16')},'ipaddr':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'port':{'type':Sequelize[_0x2b42('0xf')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x2b42('0xf')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x2b42('0xf')](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM']('friend',_0x2b42('0xb'),_0x2b42('0x17')),'allowNull':!![],'defaultValue':_0x2b42('0x18')},'context':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![],'defaultValue':'from-sip'},'callingpres':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x1a'),_0x2b42('0x1b'),'ALLOWED_FAILED_SCREEN','ALLOWED',_0x2b42('0x1c'),_0x2b42('0x1d'),_0x2b42('0x1e'),_0x2b42('0x1f')),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'secret':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'remotesecret':{'type':Sequelize['STRING'],'allowNull':!![]},'transport':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![],'defaultValue':_0x2b42('0x20'),'set':function(_0x3e029d){this[_0x2b42('0x2')](_0x2b42('0x21'),_0x3e029d?_0x3e029d[_0x2b42('0x22')](','):null);},'get':function(){return this[_0x2b42('0x7')](_0x2b42('0x21'))?this[_0x2b42('0x7')](_0x2b42('0x21'))[_0x2b42('0x23')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x2b42('0x19')]('rfc2833','info',_0x2b42('0x24'),_0x2b42('0x25'),'auto'),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize['ENUM'](_0x2b42('0x26'),'no',_0x2b42('0x27'),_0x2b42('0x28'),'outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x26'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize['STRING'],'allowNull':!![]},'nat':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![],'defaultValue':_0x2b42('0x29'),'set':function(_0x18bc1e){this['setDataValue'](_0x2b42('0x2a'),_0x18bc1e?_0x18bc1e[_0x2b42('0x22')](','):null);},'get':function(){return this[_0x2b42('0x7')](_0x2b42('0x2a'))?this[_0x2b42('0x7')]('nat')[_0x2b42('0x23')](','):null;},'comment':_0x2b42('0x2b')},'callgroup':{'type':Sequelize[_0x2b42('0x4')]},'namedcallgroup':{'type':Sequelize[_0x2b42('0x4')]},'pickupgroup':{'type':Sequelize[_0x2b42('0x4')]},'namedpickupgroup':{'type':Sequelize[_0x2b42('0x4')]},'language':{'type':Sequelize[_0x2b42('0x4')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x2b42('0x4')]},'disallow':{'type':Sequelize[_0x2b42('0x4')],'allowNull':![],'defaultValue':_0x2b42('0x2c')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x17b9b1){this[_0x2b42('0x2')](_0x2b42('0x2d'),_0x17b9b1?_0x17b9b1[_0x2b42('0x22')](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0x2b42('0x7')](_0x2b42('0x2d'))?this[_0x2b42('0x7')](_0x2b42('0x2d'))[_0x2b42('0x23')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0x2b42('0x19')]('yes','no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![],'set':function(_0x262243){this['setDataValue']('insecure',_0x262243?_0x262243[_0x2b42('0x22')](','):null);},'get':function(){return this[_0x2b42('0x7')]('insecure')?this['getDataValue'](_0x2b42('0x2e'))[_0x2b42('0x23')](','):null;},'comment':_0x2b42('0x2f')},'trustrpid':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x26'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x2b42('0x19')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x26'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x26'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x26'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x2b42('0xf')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![],'defaultValue':_0x2b42('0x30')},'amaflags':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x26'),'no'),'allowNull':!![],'defaultValue':_0x2b42('0x26')},'busylevel':{'type':Sequelize[_0x2b42('0xf')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x26'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x2b42('0x26'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x26'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'template':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x2b42('0x19')]('yes','no',_0x2b42('0x31')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x2b42('0xf')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x2b42('0x26'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x32'),_0x2b42('0x33'),_0x2b42('0x34')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x2b42('0xf')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x2b42('0xf')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x35'),'uas'),'allowNull':!![],'defaultValue':_0x2b42('0x36')},'t38pt_usertpsource':{'type':Sequelize['STRING'],'allowNull':!![]},'regexten':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0x2b42('0x26'),'no'),'allowNull':!![],'defaultValue':_0x2b42('0x26')},'keepalive':{'type':Sequelize[_0x2b42('0xf')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x2b42('0xf')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x2b42('0xf')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x26'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING'],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x2b42('0xf')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x2b42('0xf')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x2b42('0xf')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'contactdeny':{'type':Sequelize['STRING'],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x2b42('0xf')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x26'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x26'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x2b42('0x19')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x26'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x26'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize['ENUM']('yes','no',_0x2b42('0x37'),_0x2b42('0x38')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x2b42('0xf')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x2b42('0x19')]('active',_0x2b42('0x39'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x26'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING'],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x26'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize['ENUM'](_0x2b42('0x26'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x2b42('0x19')]('yes','no',_0x2b42('0x27'),'update',_0x2b42('0x3a')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize[_0x2b42('0x14')]},'passwordResetAt':{'type':Sequelize[_0x2b42('0x14')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x2b42('0x3b')]},'showWebBar':{'type':Sequelize[_0x2b42('0xf')],'defaultValue':0x0,'set':function(_0x4ba90e){this[_0x2b42('0x2')](_0x2b42('0x3c'),_0x4ba90e);var _0x2a1850=this[_0x2b42('0x3d')]({'plain':!![]});switch(_0x4ba90e){case 0x0:case 0x1:var _0x571ade=_0x2a1850[_0x2b42('0x21')]?_[_0x2b42('0x3e')](_0x2a1850[_0x2b42('0x21')])?_0x2a1850[_0x2b42('0x21')]['join']():_0x2a1850[_0x2b42('0x21')]:_0x2b42('0x20');if(_0x571ade==='wss'){_0x571ade=_0x2b42('0x20');}this[_0x2b42('0x2')](_0x2b42('0x21'),_0x571ade);this[_0x2b42('0x2')](_0x2b42('0x3f'),'no');this[_0x2b42('0x2')](_0x2b42('0x40'),null);this['setDataValue'](_0x2b42('0x41'),null);this[_0x2b42('0x2')](_0x2b42('0x42'),null);this[_0x2b42('0x2')](_0x2b42('0x43'),null);this[_0x2b42('0x2')](_0x2b42('0x44'),null);this[_0x2b42('0x2')](_0x2b42('0x45'),null);this['setDataValue'](_0x2b42('0x46'),null);this[_0x2b42('0x2')]('dtlsprivatekey',null);this['setDataValue']('rtcp_mux','no');break;case 0x2:this[_0x2b42('0x2')](_0x2b42('0x21'),'wss');this[_0x2b42('0x2')](_0x2b42('0x3f'),_0x2b42('0x26'));this[_0x2b42('0x2')](_0x2b42('0x40'),_0x2b42('0x26'));this[_0x2b42('0x2')](_0x2b42('0x41'),_0x2b42('0x26'));this[_0x2b42('0x2')](_0x2b42('0x42'),_0x2b42('0x26'));this[_0x2b42('0x2')](_0x2b42('0x43'),_0x2b42('0x26'));this[_0x2b42('0x2')](_0x2b42('0x44'),'no');this[_0x2b42('0x2')](_0x2b42('0x45'),'actpass');this['setDataValue'](_0x2b42('0x46'),_0x2a1850[_0x2b42('0x46')]||_0x2b42('0x47'));this[_0x2b42('0x2')](_0x2b42('0x48'),_0x2a1850[_0x2b42('0x48')]||'/etc/pki/tls/private/motion.key');this[_0x2b42('0x2')](_0x2b42('0x49'),_0x2b42('0x26'));break;default:}}},'permissions':{'type':Sequelize[_0x2b42('0x3b')],'set':function(_0xb7cd9){this[_0x2b42('0x2')](_0x2b42('0x4a'),_0xb7cd9?_0xb7cd9['join'](','):[]);},'get':function(){return this[_0x2b42('0x7')](_0x2b42('0x4a'))?_['map'](this['getDataValue'](_0x2b42('0x4a'))[_0x2b42('0x23')](','),function(_0x18eb8b){return parseInt(_0x18eb8b,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize[_0x2b42('0x4')]},'phoneBarUnconditional':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x2b42('0xf')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x2b42('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x2b42('0xf')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x2b42('0x19')](_0x2b42('0x26'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x2b42('0x4')]},'phoneBarEnableJaws':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x2b42('0x4b')],'get':function(){return this[_0x2b42('0x7')]('phoneBarEnableScreenRecordingByAgent')?this['getDataValue']('phoneBarEnableScreenRecordingByAgent'):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![]},'interface':{'type':Sequelize[_0x2b42('0x4')],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize['STRING'],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x2b42('0x4')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![],'set':function(_0x727f78){if(typeof _0x727f78===_0x2b42('0x4c')){var _0x585b40=_0x727f78==='1'?!![]:_0x727f78==='0'?![]:_0x727f78===_0x2b42('0x4d')?!![]:_0x727f78==='false'?![]:![];this['setDataValue'](_0x2b42('0x4e'),_0x585b40);}else{this[_0x2b42('0x2')](_0x2b42('0x4e'),_0x727f78);}}},'blocked':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![],'set':function(_0x1d61cc){this[_0x2b42('0x2')](_0x2b42('0x4f'),_0x1d61cc);if(_0x1d61cc===!![]){this['setDataValue'](_0x2b42('0x50'),moment());this[_0x2b42('0x2')]('loginAttempts',0x0);}else{this['setDataValue'](_0x2b42('0x50'),null);}}},'blockedAt':{'type':Sequelize[_0x2b42('0x14')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x2b42('0xf')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x2b42('0x15')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x6075=['passive','actpass','showWebBar','get','isArray','wss','encryption','force_avp','icesupport','dtlsenable','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','avpf','dtlsverify','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','TEXT','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','screenrecording','blocked','blockedAt','loginAttempts','UNSIGNED','moment','util','lodash','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','internal','toLowerCase','ENUM','admin','agent','telephone','local','INTEGER','accountcode','BOOLEAN','DATE','DEFAULT\x20PAUSE','dynamic','friend','user','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','nonat','update','outgoing','yes','force_rport,comedia','join','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','insecure','\x22\x22\x20<>','accept','refuse','originate','uac','uas','fingerprint','certificate','active'];(function(_0x4bd587,_0x16348d){var _0x27ffbd=function(_0x200a77){while(--_0x200a77){_0x4bd587['push'](_0x4bd587['shift']());}};_0x27ffbd(++_0x16348d);}(_0x6075,0x191));var _0x5607=function(_0x487b75,_0x1f17b8){_0x487b75=_0x487b75-0x0;var _0x48e0ae=_0x6075[_0x487b75];return _0x48e0ae;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x5607('0x0'));var util=require(_0x5607('0x1'));var _=require(_0x5607('0x2'));module[_0x5607('0x3')]={'name':{'type':Sequelize[_0x5607('0x4')],'allowNull':![],'unique':_0x5607('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0xf96316){this[_0x5607('0x6')](_0x5607('0x5'),_0xf96316);this['setDataValue'](_0x5607('0x7'),_0xf96316);},'comment':_0x5607('0x8')},'fullname':{'type':Sequelize[_0x5607('0x4')],'allowNull':![],'set':function(_0x5ab18d){this['setDataValue'](_0x5607('0x9'),_0x5ab18d);this[_0x5607('0x6')](_0x5607('0xa'),util[_0x5607('0xb')](_0x5607('0xc'),_0x5ab18d,this['getDataValue'](_0x5607('0xd'))));}},'alias':{'type':Sequelize[_0x5607('0x4')]},'email':{'type':Sequelize[_0x5607('0x4')],'allowNull':![],'unique':'email','validate':{'isEmail':!![]},'set':function(_0x6e62a0){if(_0x6e62a0){this['setDataValue']('email',_0x6e62a0[_0x5607('0xe')]());}}},'role':{'type':Sequelize[_0x5607('0xf')](_0x5607('0x10'),'user',_0x5607('0x11'),_0x5607('0x12')),'allowNull':![]},'password':{'type':Sequelize[_0x5607('0x4')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x5607('0x4')],'defaultValue':_0x5607('0x13')},'internal':{'type':Sequelize[_0x5607('0x14')](0xb),'allowNull':![],'unique':_0x5607('0xd'),'set':function(_0x1c8cbc){this[_0x5607('0x6')]('internal',_0x1c8cbc);this[_0x5607('0x6')](_0x5607('0x15'),_0x1c8cbc);this[_0x5607('0x6')]('callerid',util['format'](_0x5607('0xc'),this['getDataValue'](_0x5607('0x9')),_0x1c8cbc));}},'salt':{'type':Sequelize[_0x5607('0x4')]},'phone':{'type':Sequelize[_0x5607('0x4')]},'mobile':{'type':Sequelize[_0x5607('0x4')]},'address':{'type':Sequelize[_0x5607('0x4')]},'zipcode':{'type':Sequelize[_0x5607('0x4')]},'userpic':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x5607('0x4')]},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x5607('0x17')]},'voicePause':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'chatPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x5607('0x4')],'defaultValue':_0x5607('0x18')},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize[_0x5607('0x14')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x5607('0x14')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x5607('0x14')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x5607('0x14')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x5607('0x16')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x5607('0x14')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x5607('0x14')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x5607('0x14')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'description':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x5607('0x19')},'ipaddr':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'port':{'type':Sequelize[_0x5607('0x14')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x5607('0x14')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x5607('0x14')](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM'](_0x5607('0x1a'),_0x5607('0x1b'),'peer'),'allowNull':!![],'defaultValue':'friend'},'context':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![],'defaultValue':_0x5607('0x1c')},'callingpres':{'type':Sequelize[_0x5607('0xf')](_0x5607('0x1d'),_0x5607('0x1e'),'ALLOWED_FAILED_SCREEN',_0x5607('0x1f'),'PROHIB_NOT_SCREENED',_0x5607('0x20'),_0x5607('0x21'),_0x5607('0x22')),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'secret':{'type':Sequelize['STRING'],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'transport':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![],'defaultValue':_0x5607('0x23'),'set':function(_0x31afed){this['setDataValue'](_0x5607('0x24'),_0x31afed?_0x31afed['join'](','):null);},'get':function(){return this[_0x5607('0x25')](_0x5607('0x24'))?this['getDataValue'](_0x5607('0x24'))[_0x5607('0x26')](','):null;},'comment':_0x5607('0x27')},'dtmfmode':{'type':Sequelize['ENUM'](_0x5607('0x28'),_0x5607('0x29'),_0x5607('0x2a'),_0x5607('0x2b'),'auto'),'allowNull':!![],'defaultValue':_0x5607('0x28')},'directmedia':{'type':Sequelize[_0x5607('0xf')]('yes','no',_0x5607('0x2c'),_0x5607('0x2d'),_0x5607('0x2e')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0x5607('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'nat':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![],'defaultValue':_0x5607('0x30'),'set':function(_0x4b56bb){this['setDataValue']('nat',_0x4b56bb?_0x4b56bb[_0x5607('0x31')](','):null);},'get':function(){return this[_0x5607('0x25')](_0x5607('0x32'))?this[_0x5607('0x25')](_0x5607('0x32'))[_0x5607('0x26')](','):null;},'comment':_0x5607('0x33')},'callgroup':{'type':Sequelize[_0x5607('0x4')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0x5607('0x4')]},'namedpickupgroup':{'type':Sequelize[_0x5607('0x4')]},'language':{'type':Sequelize[_0x5607('0x4')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x5607('0x4')]},'disallow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x5607('0x34')},'allow':{'type':Sequelize[_0x5607('0x4')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x4a5cef){this[_0x5607('0x6')](_0x5607('0x35'),_0x4a5cef?_0x4a5cef[_0x5607('0x31')](';'):'ulaw;alaw;gsm');},'get':function(){return this['getDataValue']('allow')?this[_0x5607('0x25')](_0x5607('0x35'))[_0x5607('0x26')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0x5607('0xf')](_0x5607('0x2f'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![],'set':function(_0xe59e51){this[_0x5607('0x6')](_0x5607('0x36'),_0xe59e51?_0xe59e51[_0x5607('0x31')](','):null);},'get':function(){return this['getDataValue']('insecure')?this[_0x5607('0x25')](_0x5607('0x36'))[_0x5607('0x26')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x5607('0xf')](_0x5607('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0x5607('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x5607('0xf')]('yes','no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x5607('0xf')](_0x5607('0x2f'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x5607('0xf')]('yes','no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x5607('0x14')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x5607('0x37')},'amaflags':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize['ENUM'](_0x5607('0x2f'),'no'),'allowNull':!![],'defaultValue':_0x5607('0x2f')},'busylevel':{'type':Sequelize[_0x5607('0x14')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM'](_0x5607('0x2f'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x5607('0xf')](_0x5607('0x2f'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x5607('0xf')](_0x5607('0x2f'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize['ENUM'](_0x5607('0x2f'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'template':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x5607('0xf')](_0x5607('0x2f'),'no','always'),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x5607('0x14')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x5607('0x2f'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x5607('0xf')](_0x5607('0x38'),_0x5607('0x39'),_0x5607('0x3a')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize['ENUM'](_0x5607('0x3b'),_0x5607('0x3c')),'allowNull':!![],'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x5607('0xf')](_0x5607('0x2f'),'no'),'allowNull':!![],'defaultValue':_0x5607('0x2f')},'keepalive':{'type':Sequelize[_0x5607('0x14')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x5607('0x14')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x5607('0x14')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x5607('0x14')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x5607('0xf')](_0x5607('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'timert1':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x5607('0x14')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x5607('0x14')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x5607('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x5607('0xf')](_0x5607('0x2f'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x5607('0xf')](_0x5607('0x2f'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize['ENUM'](_0x5607('0x2f'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize['ENUM'](_0x5607('0x2f'),'no',_0x5607('0x3d'),_0x5607('0x3e')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x5607('0x14')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'dtlscafile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize['ENUM'](_0x5607('0x3f'),_0x5607('0x40'),_0x5607('0x41')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x5607('0xf')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x5607('0x14')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x5607('0xf')]('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x5607('0xf')](_0x5607('0x2f'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize['STRING'],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x5607('0xf')](_0x5607('0x2f'),'no',_0x5607('0x2c'),'update','update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize[_0x5607('0x17')]},'passwordResetAt':{'type':Sequelize['DATE'],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x50ed1e){this[_0x5607('0x6')](_0x5607('0x42'),_0x50ed1e);var _0x9534b0=this[_0x5607('0x43')]({'plain':!![]});switch(_0x50ed1e){case 0x0:case 0x1:var _0x2fc1a5=_0x9534b0[_0x5607('0x24')]?_[_0x5607('0x44')](_0x9534b0['transport'])?_0x9534b0[_0x5607('0x24')][_0x5607('0x31')]():_0x9534b0[_0x5607('0x24')]:'udp';if(_0x2fc1a5===_0x5607('0x45')){_0x2fc1a5=_0x5607('0x23');}this['setDataValue'](_0x5607('0x24'),_0x2fc1a5);this['setDataValue'](_0x5607('0x46'),'no');this[_0x5607('0x6')]('avpf',null);this[_0x5607('0x6')](_0x5607('0x47'),null);this[_0x5607('0x6')](_0x5607('0x48'),null);this[_0x5607('0x6')](_0x5607('0x49'),null);this[_0x5607('0x6')]('dtlsverify',null);this['setDataValue'](_0x5607('0x4a'),null);this[_0x5607('0x6')](_0x5607('0x4b'),null);this[_0x5607('0x6')](_0x5607('0x4c'),null);this[_0x5607('0x6')](_0x5607('0x4d'),'no');break;case 0x2:this[_0x5607('0x6')](_0x5607('0x24'),_0x5607('0x45'));this['setDataValue'](_0x5607('0x46'),'yes');this[_0x5607('0x6')](_0x5607('0x4e'),_0x5607('0x2f'));this['setDataValue']('force_avp',_0x5607('0x2f'));this['setDataValue']('icesupport','yes');this['setDataValue'](_0x5607('0x49'),_0x5607('0x2f'));this[_0x5607('0x6')](_0x5607('0x4f'),'no');this[_0x5607('0x6')](_0x5607('0x4a'),_0x5607('0x41'));this['setDataValue'](_0x5607('0x4b'),_0x9534b0[_0x5607('0x4b')]||_0x5607('0x50'));this[_0x5607('0x6')](_0x5607('0x4c'),_0x9534b0['dtlsprivatekey']||_0x5607('0x51'));this[_0x5607('0x6')](_0x5607('0x4d'),'yes');break;default:}}},'permissions':{'type':Sequelize[_0x5607('0x52')],'set':function(_0x370775){this[_0x5607('0x6')]('permissions',_0x370775?_0x370775[_0x5607('0x31')](','):[]);},'get':function(){return this[_0x5607('0x25')](_0x5607('0x53'))?_[_0x5607('0x54')](this['getDataValue'](_0x5607('0x53'))[_0x5607('0x26')](','),function(_0x268956){return parseInt(_0x268956,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x5607('0x4')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x5607('0x4')]},'phoneBarBusyNumber':{'type':Sequelize[_0x5607('0x4')]},'phoneBarUnconditional':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x5607('0x16')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x5607('0x14')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x5607('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x5607('0x14')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x5607('0xf')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x5607('0x16')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x5607('0x4')]},'phoneBarEnableJaws':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x5607('0x55')],'get':function(){return this[_0x5607('0x25')](_0x5607('0x56'))?this[_0x5607('0x25')]('phoneBarEnableScreenRecordingByAgent'):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize['STRING'],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x5607('0x4')],'allowNull':!![]},'screenrecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x5e9b53){if(typeof _0x5e9b53===_0x5607('0x57')){var _0x11128b=_0x5e9b53==='1'?!![]:_0x5e9b53==='0'?![]:_0x5e9b53==='true'?!![]:_0x5e9b53==='false'?![]:![];this[_0x5607('0x6')]('screenrecording',_0x11128b);}else{this['setDataValue'](_0x5607('0x58'),_0x5e9b53);}}},'blocked':{'type':Sequelize[_0x5607('0x16')],'defaultValue':![],'set':function(_0x2c3926){this['setDataValue'](_0x5607('0x59'),_0x2c3926);if(_0x2c3926===!![]){this['setDataValue'](_0x5607('0x5a'),moment());this[_0x5607('0x6')](_0x5607('0x5b'),0x0);}else{this[_0x5607('0x6')](_0x5607('0x5a'),null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x5607('0x14')],'defaultValue':0x0},'disabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x5607('0x16')],'defaultValue':!![]},'wssPort':{'type':Sequelize['INTEGER'](0x5)[_0x5607('0x5c')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x5607('0x16')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x5607('0x16')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x5607('0x16')],'defaultValue':!![]}};
\ No newline at end of file
index ee2c66f..88925f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25c2=['Queue:remove','addAvatar','userpic','file','filename','join','root','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','MailOpenTabs','MAIL','SmsOpenTabs','SMS','getContacts','keys','CmContact','order','sort','hasOwnProperty','CmList','List','tag','nolimit','getQueues','pick','Queue','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','getScreenRecordings','ScreenRecording','UserId','getChatInteractions','getOpenchannelInteractions','getMailInteractions','MailInteraction','SmsInteraction','getSmsInteractions','getFaxInteractions','getWhatsappInteractions','login','phone','mobile','intrf','headers','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','PAUSE','concat','LOGININPAUSE','isMiddleware','resolve','logout','pause','QueuePause','updateAttributes','unpause','chatPause','faxPause','openchannelPause','smsPause','whatsapppause','pauseType','lastPauseAt','manual','%s%s','getTeams','Team','addTeams','setDataValue','Chat','Mail','getSmsQueues','getWhatsappQueues','Whatsapp','getFaxQueues','getOpenchannelQueues','flatten','transaction','addAgent','getDataValue','upsert','Queue:save','removeTeams','Voice','getChatQueues','Fax','Openchannel','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','isArray','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','getFaxAccounts','addFaxAccounts','removeFaxAccounts','MailAccount','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','$and','$or','$gt','$gte','$lt','$eq','$not','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','firstName','lastName','dialActive','getApiKey','retrieveApiKey','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','removeApiKey','apiKeyNonce','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','isEmpty','teams','queues','inbound','lower','col','asc','desc','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','client','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','toUpperCase','field','ui.','user_has_','toString','OpenTabs','moment','util','path','squel','jayson/promise','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','socket.io-emitter','./user.socket','defaults','redis','localhost','http','request','then','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','end','json','offset','undefined','limit','count','status','update','get','role','admin','Users','user','Agents','agent','Telephones','telephone','filter','ignore','value','includes','destroy','stack','name','send','index','User','rawAttributes','fieldName','type','key','salt','getOptions','where','query','include','attributes','push','rows','openTabs','length','sms','dataValues','fax','mail','whatsapp','all','show','params','model','differenceBy','password','filters','intersection','fields','includeAll','merge','options','true','chat','openchannel','body','describe','addContacts','find','ids','omit','securePassword','validatePasswordPattern','max','isNil','internal','min_internal','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','sequelize','QueryTypes','SELECT','from','voicemail','VoiceMail','fullname','email','permissions','101','102','103','110','104','105','107','108','109','100','114','115','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','checkUserLimits','settingsEnabled','userProfileId','UserProfileSection','UserProfileResource','create','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','each','findAll','map','autoAssociation','compact','changePassword','oldPassword','newPassword','Sequelize','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','ValidationError','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','validatePasswordHistory','addQueues','channel','online','loginInPause','voicePause','interface','isValidChannel','add','capitalize','toLowerCase','Queues','penalty','spread','QueueId','emit','VoiceQueue','voice','format','SIP/%s','UserVoiceQueueRt','removeQueues','Unknown\x20channel'];(function(_0x125962,_0x4c2031){var _0x469c08=function(_0x1bee57){while(--_0x1bee57){_0x125962['push'](_0x125962['shift']());}};_0x469c08(++_0x4c2031);}(_0x25c2,0xdd));var _0x225c=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x25c2[_0xa464c9];return _0x3d73c4;};'use strict';var moment=require(_0x225c('0x0'));var BPromise=require('bluebird');var util=require(_0x225c('0x1'));var path=require(_0x225c('0x2'));var fs=require('fs');var _=require('lodash');var squel=require(_0x225c('0x3'));var jayson=require(_0x225c('0x4'));var Redis=require('ioredis');var authService=require(_0x225c('0x5'));var qs=require(_0x225c('0x6'));var logger=require('../../config/logger')(_0x225c('0x7'));var utils=require(_0x225c('0x8'));var config=require(_0x225c('0x9'));var licenseUtil=require(_0x225c('0xa'));var db=require(_0x225c('0xb'))['db'];var socket=require(_0x225c('0xc'))(new Redis(config['redis']));require(_0x225c('0xd'))['register'](socket);config['redis']=_[_0x225c('0xe')](config[_0x225c('0xf')],{'host':_0x225c('0x10'),'port':0x18eb});var client=jayson['client'][_0x225c('0x11')]({'port':0x232a});var values;function respondWithRpcPromise(_0x16a7c6,_0x411257,_0x3fe9db,_0x561dfe){return new BPromise(function(_0x1585eb,_0x1249c3){var _0x56e165=_0x561dfe||client;return _0x56e165[_0x225c('0x12')](_0x16a7c6,_0x3fe9db)[_0x225c('0x13')](function(_0x18ab23){logger['info'](_0x225c('0x14'),_0x411257,_0x225c('0x15'));logger[_0x225c('0x16')](_0x225c('0x17'),_0x411257,_0x225c('0x15'),JSON[_0x225c('0x18')](_0x18ab23));if(_0x18ab23[_0x225c('0x19')]){if(_0x18ab23[_0x225c('0x19')]['code']===0x1f4){logger['error'](_0x225c('0x14'),_0x411257,_0x18ab23[_0x225c('0x19')][_0x225c('0x1a')]);return _0x1249c3(_0x18ab23[_0x225c('0x19')]['message']);}logger[_0x225c('0x19')](_0x225c('0x14'),_0x411257,_0x18ab23[_0x225c('0x19')][_0x225c('0x1a')]);return _0x1585eb(_0x18ab23['error']['message']);}else{logger['info'](_0x225c('0x14'),_0x411257,_0x225c('0x15'));_0x1585eb(_0x18ab23[_0x225c('0x1b')][_0x225c('0x1a')]);}})[_0x225c('0x1c')](function(_0x1cc652){logger['error'](_0x225c('0x14'),_0x411257,_0x1cc652);_0x1249c3(_0x1cc652);});});}function respondWithStatusCode(_0x236963,_0x33c38f){_0x33c38f=_0x33c38f||0xcc;return function(_0x43f115){if(_0x43f115){return _0x236963[_0x225c('0x1d')](_0x33c38f);}return _0x236963['status'](_0x33c38f)[_0x225c('0x1e')]();};}function respondWithResult(_0x369e41,_0x3aef73){_0x3aef73=_0x3aef73||0xc8;return function(_0x4effd6){if(_0x4effd6){return _0x369e41['status'](_0x3aef73)[_0x225c('0x1f')](_0x4effd6);}};}function respondWithFilteredResult(_0x4abf2c,_0x355523){return function(_0x327e78){if(_0x327e78){var _0x439de1=typeof _0x355523[_0x225c('0x20')]===_0x225c('0x21')&&typeof _0x355523[_0x225c('0x22')]==='undefined';var _0x4af59c=_0x327e78[_0x225c('0x23')];var _0xfd91e1=_0x439de1?0x0:_0x355523['offset'];var _0x57c18e=_0x439de1?_0x327e78['count']:_0x355523[_0x225c('0x20')]+_0x355523['limit'];var _0x5aa346;if(_0x57c18e>=_0x4af59c){_0x57c18e=_0x4af59c;_0x5aa346=0xc8;}else{_0x5aa346=0xce;}_0x4abf2c[_0x225c('0x24')](_0x5aa346);return _0x4abf2c['set']('Content-Range',_0xfd91e1+'-'+_0x57c18e+'/'+_0x4af59c)['json'](_0x327e78);}return null;};}function saveUpdates(_0x46b13f){return function(_0x52cdc1){if(_0x52cdc1){return _0x52cdc1[_0x225c('0x25')](_0x46b13f)[_0x225c('0x13')](function(_0x45973d){return _0x45973d;});}return null;};}function removeEntity(_0x592c0e){return function(_0x49eb05){if(_0x49eb05){return _0x49eb05['destroy']()[_0x225c('0x13')](function(){var _0x75cc09=_0x49eb05[_0x225c('0x26')]({'plain':!![]});if(_0x75cc09[_0x225c('0x27')]===_0x225c('0x28'))return;var _0x1033a2=[{'name':_0x225c('0x29'),'value':_0x225c('0x2a'),'ignore':!![]},{'name':_0x225c('0x2b'),'value':_0x225c('0x2c'),'ignore':![]},{'name':_0x225c('0x2d'),'value':_0x225c('0x2e'),'ignore':![]}];var _0x23578f=_(_0x1033a2)[_0x225c('0x2f')](_0x225c('0x30'))['map']('value')[_0x225c('0x31')]();if(_[_0x225c('0x32')](_0x23578f,_0x75cc09['role'])){return;}var _0x46009d=_['find'](_0x1033a2,[_0x225c('0x31'),_0x75cc09[_0x225c('0x27')]])['name'];return db['UserProfileResource'][_0x225c('0x33')]({'where':{'type':_0x46009d,'resourceId':_0x75cc09['id']}})[_0x225c('0x13')](function(){return _0x49eb05;});})[_0x225c('0x13')](function(){_0x592c0e[_0x225c('0x24')](0xcc)[_0x225c('0x1e')]();});}};}function handleEntityNotFound(_0x14f539){return function(_0x3c992e){if(!_0x3c992e){_0x14f539[_0x225c('0x1d')](0x194);}return _0x3c992e;};}function handleError(_0x51b8d6,_0x25c9e0){_0x25c9e0=_0x25c9e0||0x1f4;return function(_0x2b5cd5){logger['error'](_0x2b5cd5[_0x225c('0x34')]);if(_0x2b5cd5[_0x225c('0x35')]){delete _0x2b5cd5[_0x225c('0x35')];}_0x51b8d6[_0x225c('0x24')](_0x25c9e0)[_0x225c('0x36')](_0x2b5cd5);};}exports[_0x225c('0x37')]=function(_0x5aa197,_0x1bbdc8){var _0x1029ff={},_0x5b30b1={'count':0x0,'rows':[]};var _0x30d642=_(db[_0x225c('0x38')][_0x225c('0x39')])['map'](function(_0x46c896){return{'name':_0x46c896[_0x225c('0x3a')],'type':_0x46c896[_0x225c('0x3b')][_0x225c('0x3c')]};})[_0x225c('0x2f')](function(_0x289459){return!_[_0x225c('0x32')](['password',_0x225c('0x3d')],_0x289459[_0x225c('0x35')]);})[_0x225c('0x31')]();_0x1029ff=qs[_0x225c('0x3e')](_0x30d642,_0x5aa197);var _0x49de92={'where':_0x1029ff[_0x225c('0x3f')]};return db['User'][_0x225c('0x23')](_0x49de92)[_0x225c('0x13')](function(_0x268654){_0x5b30b1[_0x225c('0x23')]=_0x268654;if(_0x5aa197[_0x225c('0x40')]['includeAll']){_0x1029ff[_0x225c('0x41')]=[{'all':!![]}];}if(!_[_0x225c('0x32')](_0x1029ff[_0x225c('0x42')],'id')){_0x1029ff[_0x225c('0x42')][_0x225c('0x43')]('id');}return db[_0x225c('0x38')]['findAll'](_0x1029ff);})[_0x225c('0x13')](function(_0x35f3b1){_0x5b30b1[_0x225c('0x44')]=_0x35f3b1;if(_0x5aa197[_0x225c('0x40')][_0x225c('0x45')]==='true'){var _0x5b326c=[];for(var _0x1847a6=0x0;_0x1847a6<_0x5b30b1[_0x225c('0x44')][_0x225c('0x46')];_0x1847a6++){_0x5b326c['push'](get_open_tabs('chat',_0x5b30b1['rows'][_0x1847a6]['dataValues']));_0x5b326c[_0x225c('0x43')](get_open_tabs(_0x225c('0x47'),_0x5b30b1['rows'][_0x1847a6][_0x225c('0x48')]));_0x5b326c[_0x225c('0x43')](get_open_tabs(_0x225c('0x49'),_0x5b30b1['rows'][_0x1847a6]['dataValues']));_0x5b326c[_0x225c('0x43')](get_open_tabs(_0x225c('0x4a'),_0x5b30b1[_0x225c('0x44')][_0x1847a6][_0x225c('0x48')]));_0x5b326c['push'](get_open_tabs('openchannel',_0x5b30b1['rows'][_0x1847a6][_0x225c('0x48')]));_0x5b326c[_0x225c('0x43')](get_open_tabs(_0x225c('0x4b'),_0x5b30b1['rows'][_0x1847a6][_0x225c('0x48')]));}return BPromise[_0x225c('0x4c')](_0x5b326c)[_0x225c('0x13')](function(_0x52ab21){return _0x5b30b1;});}else{return _0x5b30b1;}})[_0x225c('0x13')](respondWithFilteredResult(_0x1bbdc8,_0x1029ff))[_0x225c('0x1c')](handleError(_0x1bbdc8,null));};exports[_0x225c('0x4d')]=function(_0x3b4ba4,_0x178546){var _0x5e6017={'raw':![],'where':{'id':_0x3b4ba4[_0x225c('0x4e')]['id']}},_0x4ea41d={};_0x4ea41d[_0x225c('0x4f')]=_[_0x225c('0x50')](_['keys'](db['User'][_0x225c('0x39')]),[_0x225c('0x51'),_0x225c('0x3d')]);_0x4ea41d[_0x225c('0x40')]=_['keys'](_0x3b4ba4[_0x225c('0x40')]);_0x4ea41d[_0x225c('0x52')]=_[_0x225c('0x53')](_0x4ea41d[_0x225c('0x4f')],_0x4ea41d['query']);_0x5e6017[_0x225c('0x42')]=_[_0x225c('0x53')](_0x4ea41d['model'],qs['fields'](_0x3b4ba4[_0x225c('0x40')][_0x225c('0x54')]));_0x5e6017['attributes']=_0x5e6017[_0x225c('0x42')][_0x225c('0x46')]?_0x5e6017['attributes']:_0x4ea41d['model'];if(_0x3b4ba4[_0x225c('0x40')][_0x225c('0x55')]){_0x5e6017[_0x225c('0x41')]=[{'all':!![]}];}_0x5e6017=_[_0x225c('0x56')]({},_0x5e6017,_0x3b4ba4[_0x225c('0x57')]);if(!_['includes'](_0x5e6017[_0x225c('0x42')],'id')){_0x5e6017['attributes'][_0x225c('0x43')]('id');}return db[_0x225c('0x38')]['find'](_0x5e6017)[_0x225c('0x13')](handleEntityNotFound(_0x178546,null))[_0x225c('0x13')](function(_0x24dc93){var _0x4c0b16=[];values=_0x24dc93;if(_0x3b4ba4[_0x225c('0x40')][_0x225c('0x45')]===_0x225c('0x58')){_0x4c0b16[_0x225c('0x43')](get_open_tabs(_0x225c('0x59'),_0x24dc93[_0x225c('0x48')]));_0x4c0b16[_0x225c('0x43')](get_open_tabs('sms',_0x24dc93[_0x225c('0x48')]));_0x4c0b16[_0x225c('0x43')](get_open_tabs(_0x225c('0x5a'),_0x24dc93[_0x225c('0x48')]));_0x4c0b16['push'](get_open_tabs('whatsapp',_0x24dc93[_0x225c('0x48')]));_0x4c0b16[_0x225c('0x43')](get_open_tabs(_0x225c('0x49'),_0x24dc93[_0x225c('0x48')]));_0x4c0b16[_0x225c('0x43')](get_open_tabs(_0x225c('0x4a'),_0x24dc93[_0x225c('0x48')]));return BPromise['all'](_0x4c0b16);}else{return values;}})[_0x225c('0x13')](function(_0x2a5fb8){return values;})['then'](respondWithResult(_0x178546,null))[_0x225c('0x1c')](handleError(_0x178546,null));};exports['update']=function(_0x512f7d,_0x47a9b7){if(_0x512f7d[_0x225c('0x5b')]['id']){delete _0x512f7d['body']['id'];}delete _0x512f7d['body'][_0x225c('0x27')];return db[_0x225c('0x38')]['find']({'where':{'id':_0x512f7d[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x47a9b7,null))[_0x225c('0x13')](saveUpdates(_0x512f7d['body'],null))[_0x225c('0x13')](respondWithResult(_0x47a9b7,null))[_0x225c('0x1c')](handleError(_0x47a9b7,null));};exports['describe']=function(_0x777aa0,_0x342315){return db[_0x225c('0x38')][_0x225c('0x5c')]()['then'](respondWithResult(_0x342315,null))[_0x225c('0x1c')](handleError(_0x342315,null));};exports[_0x225c('0x5d')]=function(_0x3cbed6,_0x53a31b){return db['User'][_0x225c('0x5e')]({'where':{'id':_0x3cbed6[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x53a31b,null))[_0x225c('0x13')](function(_0x2ee88c){if(_0x2ee88c){return _0x2ee88c['addContacts'](_0x3cbed6[_0x225c('0x5b')][_0x225c('0x5f')],_[_0x225c('0x60')](_0x3cbed6[_0x225c('0x5b')],[_0x225c('0x5f'),'id'])||{});}})['then'](respondWithResult(_0x53a31b,null))['catch'](handleError(_0x53a31b,null));};function validateUser(_0x2a0065){return new BPromise(function(_0x1d5822,_0xa301e9){if(_0x2a0065['internal'])return _0x1d5822(_0x2a0065);return db['Setting']['findById'](0x1)[_0x225c('0x13')](function(_0x356f12){if(_0x356f12[_0x225c('0x61')])authService[_0x225c('0x62')](_0x2a0065[_0x225c('0x51')]);db[_0x225c('0x38')][_0x225c('0x63')]('internal')[_0x225c('0x13')](function(_0x151404){if(_[_0x225c('0x64')](_0x151404)){_0x2a0065[_0x225c('0x65')]=_0x356f12[_0x225c('0x66')]||0x1;return;}if(_['isNil'](_0x356f12['min_internal'])||_0x356f12['min_internal']===_0x151404){_0x2a0065[_0x225c('0x65')]=_0x151404+0x1;return;}if(_0x356f12[_0x225c('0x66')]>_0x151404){_0x2a0065[_0x225c('0x65')]=_0x356f12[_0x225c('0x66')];return;}return db['sequelize'][_0x225c('0x40')](_0x225c('0x67'),{'type':db[_0x225c('0x68')][_0x225c('0x69')][_0x225c('0x6a')]})[_0x225c('0x13')](function(_0x41613f){if(_0x41613f&&_0x41613f[_0x225c('0x46')]){for(var _0x5c13a0=0x0,_0x146086=_0x41613f[_0x225c('0x46')];_0x5c13a0<_0x146086&&_[_0x225c('0x64')](_0x2a0065[_0x225c('0x65')]);_0x5c13a0++){if(_0x356f12['min_internal']<=_0x41613f[_0x5c13a0][_0x225c('0x6b')]){_0x2a0065[_0x225c('0x65')]=_0x41613f[_0x5c13a0][_0x225c('0x6b')];}else if(_0x356f12[_0x225c('0x66')]>_0x41613f[_0x5c13a0][_0x225c('0x6b')]&&_0x356f12[_0x225c('0x66')]<=_0x41613f[_0x5c13a0]['to']){_0x2a0065[_0x225c('0x65')]=_0x356f12[_0x225c('0x66')];}}}if(_[_0x225c('0x64')](_0x2a0065['internal'])){_0x2a0065['internal']=_0x151404+0x1;}return _0x1d5822(_0x2a0065);});});})['catch'](function(_0x3b1500){_0xa301e9(_0x3b1500);});});}function updateUser(_0x3a853b){return new BPromise(function(_0x571379,_0x1c7744){try{if(_0x3a853b[_0x225c('0x6c')]){_0x3a853b['mailbox']=_0x3a853b['internal'];_0x3a853b[_0x225c('0x6d')]={'mailbox':_0x3a853b[_0x225c('0x65')],'password':_0x3a853b[_0x225c('0x51')],'fullname':_0x3a853b[_0x225c('0x6e')],'email':_0x3a853b[_0x225c('0x6f')]};}if(_0x3a853b[_0x225c('0x27')]===_0x225c('0x2c')){if(!_0x3a853b[_0x225c('0x70')])_0x3a853b[_0x225c('0x70')]=[_0x225c('0x71'),_0x225c('0x72'),_0x225c('0x73'),'113',_0x225c('0x74'),_0x225c('0x75'),_0x225c('0x76'),'106',_0x225c('0x77'),_0x225c('0x78'),_0x225c('0x79'),_0x225c('0x7a'),'111',_0x225c('0x7b'),_0x225c('0x7c')];}_0x571379(_0x3a853b);}catch(_0x9edfb7){_0x1c7744(_0x9edfb7);}});}exports['create']=function(_0x404173,_0x4038fd){if(_0x404173[_0x225c('0x2a')][_0x225c('0x27')]===_0x225c('0x2c'))throw new Error(_0x225c('0x7d'));if(_0x404173[_0x225c('0x5b')][_0x225c('0x27')]===_0x225c('0x2a')&&_0x404173['user'][_0x225c('0x27')]!==_0x225c('0x28')){throw new Error(_0x225c('0x7e'));}if(_0x404173[_0x225c('0x5b')][_0x225c('0x27')]===_0x225c('0x28')&&_0x404173['user'][_0x225c('0x27')]!==_0x225c('0x28')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator');}return licenseUtil[_0x225c('0x7f')]([_0x404173[_0x225c('0x5b')]])[_0x225c('0x13')](function(){return validateUser(_0x404173[_0x225c('0x5b')]);})[_0x225c('0x13')](function(_0x3a5817){return updateUser(_0x3a5817)[_0x225c('0x13')](function(_0x1b1a85){if(_0x1b1a85[_0x225c('0x27')]==='admin'){_0x1b1a85[_0x225c('0x80')]=_0x404173['user']['settingsEnabled'];delete _0x1b1a85[_0x225c('0x81')];}return _0x1b1a85;});})['then'](function(_0x14debb){return db[_0x225c('0x38')]['create'](_0x14debb,{'include':[{'model':db[_0x225c('0x6d')],'as':_0x225c('0x6d')}]});})[_0x225c('0x13')](function(_0x1f6844){if(_0x404173[_0x225c('0x5b')][_0x225c('0x27')]==='user')return _0x1f6844;if(_0x404173['user'][_0x225c('0x27')]!==_0x225c('0x2a'))return _0x1f6844;return db[_0x225c('0x82')][_0x225c('0x5e')]({'where':{'name':_0x1f6844['role']===_0x225c('0x2c')?'Agents':_0x225c('0x2d'),'userProfileId':_0x404173['user'][_0x225c('0x81')]},'raw':!![]})[_0x225c('0x13')](function(_0x1c51b3){if(!_0x1c51b3||_0x1c51b3['autoAssociation']!=0x0)return _0x1f6844;return db[_0x225c('0x83')][_0x225c('0x84')]({'name':_0x1f6844['name'],'resourceId':_0x1f6844['id'],'type':_0x1c51b3[_0x225c('0x35')],'sectionId':_0x1c51b3['id']},{})['then'](function(){return _0x1f6844;});})[_0x225c('0x1c')](function(_0x29a4b){logger[_0x225c('0x19')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x29a4b);throw _0x29a4b;});})[_0x225c('0x13')](respondWithResult(_0x4038fd,0xc9))[_0x225c('0x1c')](handleError(_0x4038fd,null));};exports[_0x225c('0x85')]=function(_0x4260bd,_0x1be6fe){var _0x2fd55b=_0x4260bd[_0x225c('0x5b')];var _0x3fb5f2=[];if(_0x4260bd[_0x225c('0x2a')]['role']===_0x225c('0x2c'))throw new Error(_0x225c('0x7d'));if(_[_0x225c('0x86')](_0x2fd55b,[_0x225c('0x27'),_0x225c('0x2a')])&&_0x4260bd[_0x225c('0x2a')][_0x225c('0x27')]!=='admin'){throw new Error(_0x225c('0x7e'));}if(_['some'](_0x2fd55b,[_0x225c('0x27'),_0x225c('0x28')])&&_0x4260bd['user'][_0x225c('0x27')]!==_0x225c('0x28')){throw new Error(_0x225c('0x87'));}return licenseUtil[_0x225c('0x7f')](_0x2fd55b)[_0x225c('0x13')](function(){return validateUser(_0x2fd55b[0x0]);})[_0x225c('0x13')](function(){for(var _0x36d181=0x1;_0x36d181<_0x2fd55b[_0x225c('0x46')];_0x36d181++){var _0x398dbd=_0x2fd55b[_0x36d181-0x1]['internal'];if(!_0x2fd55b[_0x36d181]['internal'])_0x2fd55b[_0x36d181]['internal']=_0x398dbd+0x1;_0x3fb5f2[_0x225c('0x43')](validateUser(_0x2fd55b[_0x36d181]));}return BPromise[_0x225c('0x4c')](_0x3fb5f2);})['then'](function(){_0x3fb5f2=[];for(var _0x5d0d78=0x0;_0x5d0d78<_0x2fd55b[_0x225c('0x46')];_0x5d0d78++){_0x3fb5f2[_0x225c('0x43')](updateUser(_0x2fd55b[_0x5d0d78]));}return BPromise['all'](_0x3fb5f2);})[_0x225c('0x13')](function(){return BPromise[_0x225c('0x88')](_0x2fd55b,function(_0x37befa){return db['User'][_0x225c('0x84')](_0x37befa,{'include':[{'model':db['VoiceMail'],'as':_0x225c('0x6d')}]})[_0x225c('0x13')](function(_0x2511f3){_0x37befa['id']=_0x2511f3['id'];return _0x37befa;});});})[_0x225c('0x13')](function(_0x42ccca){if(_0x4260bd['body'][_0x225c('0x27')]==='user')return _0x42ccca;if(_0x4260bd['user']['role']!==_0x225c('0x2a'))return _0x42ccca;var _0x564f77=_[_0x225c('0x86')](_0x42ccca,function(_0x56fed4){return _0x56fed4[_0x225c('0x27')]===_0x225c('0x2c')||_0x56fed4[_0x225c('0x27')]===_0x225c('0x2e');});if(!_0x564f77)return _0x42ccca;return db[_0x225c('0x82')][_0x225c('0x89')]({'where':{'name':{'$or':[_0x225c('0x2b'),'Telephones']},'userProfileId':_0x4260bd[_0x225c('0x2a')][_0x225c('0x81')]},'raw':!![]})[_0x225c('0x13')](function(_0x51f918){if(_['isEmpty'](_0x51f918)||!_['some'](_0x51f918,['autoAssociation',0x0]))return _0x42ccca;_0x3fb5f2=[];var _0x5ec58d=_(_0x51f918)[_0x225c('0x8a')](function(_0x4bd32c){if(_0x4bd32c[_0x225c('0x8b')]===0x1)return;return _0x4bd32c['name']===_0x225c('0x2b')?_0x225c('0x2c'):_0x225c('0x2e');})[_0x225c('0x8c')]()[_0x225c('0x31')]();for(var _0x287f8e=0x0;_0x287f8e<_0x42ccca['length'];_0x287f8e++){if(!_['includes'](_0x5ec58d,_0x42ccca[_0x287f8e][_0x225c('0x27')]))return;var _0x31e024=_0x42ccca[_0x287f8e][_0x225c('0x27')]===_0x225c('0x2c')?_0x225c('0x2b'):_0x225c('0x2d');_0x3fb5f2[_0x225c('0x43')](db[_0x225c('0x83')][_0x225c('0x84')]({'name':_0x42ccca[_0x287f8e][_0x225c('0x35')],'resourceId':_0x42ccca[_0x287f8e]['id'],'type':_0x31e024,'sectionId':_[_0x225c('0x5e')](_0x51f918,['name',_0x31e024])['id']},{}));}return BPromise[_0x225c('0x4c')](_0x3fb5f2);});})[_0x225c('0x13')](respondWithResult(_0x1be6fe,0xc9))[_0x225c('0x1c')](handleError(_0x1be6fe,null));};exports[_0x225c('0x8d')]=function(_0x41a300,_0x598d3f){if(_0x41a300[_0x225c('0x5b')]['id']){delete _0x41a300[_0x225c('0x5b')]['id'];}return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x41a300[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](function(_0x571d11){if(!_0x571d11)return null;if(_0x571d11['id']===_0x41a300['user']['id']){if(!_0x41a300['body'][_0x225c('0x8e')]||!_0x41a300[_0x225c('0x5b')][_0x225c('0x8f')]){throw new db[(_0x225c('0x90'))]['ValidationError'](_0x225c('0x91'));}if(!_0x571d11['authenticate'](_0x41a300['body'][_0x225c('0x8e')])){throw new db[(_0x225c('0x90'))][(_0x225c('0x92'))](_0x225c('0x93'));}if(_0x41a300['body'][_0x225c('0x8e')]===_0x41a300[_0x225c('0x5b')][_0x225c('0x8f')]){throw new db['Sequelize'][(_0x225c('0x92'))](_0x225c('0x94'));}}else if(_0x41a300['user'][_0x225c('0x27')]===_0x225c('0x28')){if(!_0x41a300[_0x225c('0x5b')]['newPassword']){throw new db[(_0x225c('0x90'))][(_0x225c('0x92'))](_0x225c('0x95'));}}else if(_0x41a300[_0x225c('0x2a')][_0x225c('0x27')]===_0x225c('0x2a')){if(!_0x41a300[_0x225c('0x5b')][_0x225c('0x8f')]){throw new db[(_0x225c('0x90'))][(_0x225c('0x92'))](_0x225c('0x95'));}if(_0x571d11['role']!==_0x225c('0x2c')){throw new db[(_0x225c('0x90'))][(_0x225c('0x92'))]('Unauthorized');}}else{throw new db[(_0x225c('0x90'))][(_0x225c('0x92'))](_0x225c('0x7d'));}return _0x571d11;})[_0x225c('0x13')](handleEntityNotFound(_0x598d3f,null))['then'](function(_0x530d3c){return db['Setting'][_0x225c('0x96')]({'attributes':['id','securePassword',_0x225c('0x97'),_0x225c('0x98')]})[_0x225c('0x13')](function(_0x31604c){if(_0x31604c[_0x225c('0x61')])authService[_0x225c('0x62')](_0x41a300[_0x225c('0x5b')][_0x225c('0x8f')]);if(!_0x31604c[_0x225c('0x97')]||!_0x530d3c[_0x225c('0x99')])return _0x530d3c;authService[_0x225c('0x9a')](_0x41a300['body'][_0x225c('0x8f')],_0x530d3c[_0x225c('0x99')],_0x31604c['passwordHistoryLimit']);return _0x530d3c;})['then'](saveUpdates({'password':_0x41a300[_0x225c('0x5b')][_0x225c('0x8f')],'passwordResetAt':_0x41a300[_0x225c('0x2a')]['id']==_0x41a300[_0x225c('0x4e')]['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x41a300[_0x225c('0x5b')][_0x225c('0x8f')],_0x530d3c[_0x225c('0x99')])},null));})[_0x225c('0x13')](respondWithResult(_0x598d3f,null))[_0x225c('0x1c')](handleError(_0x598d3f,null));};exports[_0x225c('0x9b')]=function(_0x45d936,_0x21986e){var _0x1ededd=_0x45d936[_0x225c('0x5b')][_0x225c('0x9c')];return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x45d936['params']['id']},'attributes':['id',_0x225c('0x35'),_0x225c('0x27'),_0x225c('0x9d'),_0x225c('0x9e'),_0x225c('0x9f'),_0x225c('0xa0')]})['then'](handleEntityNotFound(_0x21986e,null))['then'](function(_0x34fb17){if(_0x34fb17){if(!utils[_0x225c('0xa1')](_0x1ededd)){throw new db[(_0x225c('0x90'))][(_0x225c('0x92'))]('Unknown\x20channel');}return _0x34fb17[_0x225c('0xa2')+_[_0x225c('0xa3')](_0x1ededd[_0x225c('0xa4')]())+_0x225c('0xa5')](_0x45d936[_0x225c('0x5b')]['ids'],{'penalty':_0x45d936['body'][_0x225c('0xa6')]||0x0})[_0x225c('0xa7')](function(_0x2986c2){for(var _0x16401a=0x0;_0x16401a<_0x45d936[_0x225c('0x5b')][_0x225c('0x5f')]['length'];_0x16401a+=0x1){var _0x167a9c={'UserId':Number(_0x45d936[_0x225c('0x4e')]['id'])};_0x167a9c[_[_0x225c('0xa3')](_0x1ededd['toLowerCase']())+_0x225c('0xa8')]=Number(_0x45d936['body']['ids'][_0x16401a]);socket[_0x225c('0xa9')]('user'+_[_0x225c('0xa3')](_0x1ededd[_0x225c('0xa4')]())+'Queue:save',_0x167a9c);}return _0x2986c2;})['then'](function(){if(_0x1ededd==='voice'){return db[_0x225c('0xaa')]['findAll']({'where':{'id':_0x45d936['body'][_0x225c('0x5f')]||[]},'raw':!![],'attributes':['id',_0x225c('0x35')]});}})[_0x225c('0x13')](function(_0x4ab994){var _0x5518bd=_0x34fb17[_0x225c('0x26')]({'plain':!![]});var _0x3ebd08=[];if(_0x1ededd===_0x225c('0xab')&&_0x5518bd[_0x225c('0x27')]===_0x225c('0x2c')&&_0x5518bd[_0x225c('0x9d')]){for(var _0x83a388=0x0;_0x83a388<_0x4ab994[_0x225c('0x46')];_0x83a388+=0x1){_0x3ebd08[_0x225c('0x43')]({'membername':_0x5518bd[_0x225c('0x35')],'UserId':_0x5518bd['id'],'queue_name':_0x4ab994[_0x83a388][_0x225c('0x35')],'VoiceQueueId':_0x4ab994[_0x83a388]['id'],'interface':_[_0x225c('0x64')](_0x5518bd[_0x225c('0xa0')])?util[_0x225c('0xac')](_0x225c('0xad'),_0x5518bd[_0x225c('0x35')]):_0x5518bd['interface'],'paused':_0x5518bd['voicePause']||![],'penalty':_0x45d936[_0x225c('0x5b')][_0x225c('0xa6')]||0x0});}return BPromise['each'](_0x3ebd08,function(_0xd55517){return db[_0x225c('0xae')]['upsert'](_0xd55517);});}return _0x34fb17;});}})[_0x225c('0x13')](respondWithStatusCode(_0x21986e,null))['catch'](handleError(_0x21986e,null));};exports[_0x225c('0xaf')]=function(_0x478b8f,_0x31a901){var _0x4214b2;return db['User'][_0x225c('0x5e')]({'where':{'id':_0x478b8f['params']['id']},'attributes':['id',_0x225c('0x35'),_0x225c('0x27')]})[_0x225c('0x13')](handleEntityNotFound(_0x31a901,null))[_0x225c('0x13')](function(_0x3462b5){if(_0x3462b5){_0x4214b2=_0x3462b5;if(!_0x478b8f[_0x225c('0x40')]['channel']||!utils[_0x225c('0xa1')](_0x478b8f[_0x225c('0x40')][_0x225c('0x9c')])){throw new db[(_0x225c('0x90'))][(_0x225c('0x92'))](_0x225c('0xb0'));}return _0x3462b5['remove'+_[_0x225c('0xa3')](_0x478b8f[_0x225c('0x40')][_0x225c('0x9c')][_0x225c('0xa4')]())+_0x225c('0xa5')](_0x478b8f[_0x225c('0x40')][_0x225c('0x5f')]);}})[_0x225c('0x13')](function(_0x473281){if(_['isArray'](_0x478b8f[_0x225c('0x40')][_0x225c('0x5f')])){for(var _0x1b57c6=0x0;_0x1b57c6<_0x478b8f['query'][_0x225c('0x5f')][_0x225c('0x46')];_0x1b57c6+=0x1){var _0x3fb0df={'UserId':Number(_0x478b8f[_0x225c('0x4e')]['id'])};_0x3fb0df[_['capitalize'](_0x478b8f['query'][_0x225c('0x9c')][_0x225c('0xa4')]())+_0x225c('0xa8')]=Number(_0x478b8f[_0x225c('0x40')][_0x225c('0x5f')][_0x1b57c6]);socket[_0x225c('0xa9')](_0x225c('0x2a')+_[_0x225c('0xa3')](_0x478b8f[_0x225c('0x40')][_0x225c('0x9c')][_0x225c('0xa4')]())+_0x225c('0xb1'),_0x3fb0df);}}else{var _0x3fb0df={'UserId':Number(_0x478b8f[_0x225c('0x4e')]['id'])};_0x3fb0df[_['capitalize'](_0x478b8f[_0x225c('0x40')]['channel'][_0x225c('0xa4')]())+_0x225c('0xa8')]=Number(_0x478b8f[_0x225c('0x40')]['ids']);socket[_0x225c('0xa9')](_0x225c('0x2a')+_['capitalize'](_0x478b8f['query'][_0x225c('0x9c')][_0x225c('0xa4')]())+_0x225c('0xb1'),_0x3fb0df);}return _0x473281;})[_0x225c('0x13')](function(){if(_0x478b8f[_0x225c('0x40')][_0x225c('0x9c')]===_0x225c('0xab')){return db[_0x225c('0xae')][_0x225c('0x33')]({'where':{'UserId':_0x478b8f[_0x225c('0x4e')]['id'],'VoiceQueueId':_0x478b8f['query']['ids']},'individualHooks':!![]})['then'](function(){return _0x4214b2;});}return _0x4214b2;})[_0x225c('0x13')](respondWithStatusCode(_0x31a901,null))['catch'](handleError(_0x31a901,null));};exports[_0x225c('0xb2')]=function(_0x238c50,_0x507a7a){_0x238c50[_0x225c('0x5b')][_0x225c('0xb3')]=_0x238c50[_0x225c('0xb4')][_0x225c('0xb5')];return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x238c50[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x507a7a,null))[_0x225c('0x13')](saveUpdates(_0x238c50[_0x225c('0x5b')],null))['then'](respondWithResult(_0x507a7a,null))[_0x225c('0x1c')](handleError(_0x507a7a,null));};exports['getAvatar']=function(_0x2d873a,_0x498040){var _0x36054e=path[_0x225c('0xb6')](config[_0x225c('0xb7')],_0x225c('0xb8'));return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x2d873a[_0x225c('0x4e')]['id']},'attributes':['id',_0x225c('0xb3')],'raw':!![]})[_0x225c('0x13')](handleEntityNotFound(_0x498040,null))[_0x225c('0x13')](function(_0x5265c7){if(_0x5265c7){if(_[_0x225c('0x64')](_0x5265c7[_0x225c('0xb3')])){return _0x498040[_0x225c('0xb9')](_0x36054e);}else{if(!fs[_0x225c('0xba')](path[_0x225c('0xb6')](config[_0x225c('0xb7')],_0x225c('0xbb'),_0x5265c7[_0x225c('0xb3')]))){return _0x498040[_0x225c('0xb9')](_0x36054e);}return _0x498040['download'](path[_0x225c('0xb6')](config[_0x225c('0xb7')],'server/files/images/',_0x5265c7[_0x225c('0xb3')]));}}})[_0x225c('0x1c')](handleError(_0x498040,null));};exports[_0x225c('0xbc')]=function(_0x393aba,_0x2c2297){return db['User'][_0x225c('0x5e')]({'where':{'id':_0x393aba[_0x225c('0x4e')]['id']},'attributes':['id']})[_0x225c('0x13')](handleEntityNotFound(_0x2c2297,null))['then'](function(_0x42eafc){var _0xb118c3=[];values=_0x42eafc[_0x225c('0x48')];_0xb118c3['push'](get_open_tabs(_0x225c('0x59'),_0x42eafc[_0x225c('0x48')]));_0xb118c3['push'](get_open_tabs('sms',_0x42eafc[_0x225c('0x48')]));_0xb118c3[_0x225c('0x43')](get_open_tabs(_0x225c('0x5a'),_0x42eafc[_0x225c('0x48')]));_0xb118c3[_0x225c('0x43')](get_open_tabs('whatsapp',_0x42eafc[_0x225c('0x48')]));_0xb118c3['push'](get_open_tabs('fax',_0x42eafc[_0x225c('0x48')]));_0xb118c3[_0x225c('0x43')](get_open_tabs(_0x225c('0x4a'),_0x42eafc['dataValues']));return BPromise['all'](_0xb118c3);})[_0x225c('0x13')](function(_0xcd48ba){var _0x356e17=[];if(_0xcd48ba){for(var _0x5b4e73=0x0;_0x5b4e73<values[_0x225c('0xbd')][_0x225c('0x46')];_0x5b4e73++){var _0x466a36=values['ChatOpenTabs'][_0x5b4e73];_0x356e17[_0x225c('0x43')]({'channel':_0x225c('0xbe'),'id':_0x466a36['id'],'createdAt':_0x466a36[_0x225c('0xbf')]});}for(var _0x5b4e73=0x0;_0x5b4e73<values[_0x225c('0xc0')][_0x225c('0x46')];_0x5b4e73++){var _0x466a36=values[_0x225c('0xc0')][_0x5b4e73];_0x356e17[_0x225c('0x43')]({'channel':_0x225c('0xc1'),'id':_0x466a36['id'],'createdAt':_0x466a36[_0x225c('0xbf')]});}for(var _0x5b4e73=0x0;_0x5b4e73<values[_0x225c('0xc2')][_0x225c('0x46')];_0x5b4e73++){var _0x466a36=values[_0x225c('0xc2')][_0x5b4e73];_0x356e17['push']({'channel':'OPENCHANNEL','id':_0x466a36['id'],'createdAt':_0x466a36['createdAt']});}for(var _0x5b4e73=0x0;_0x5b4e73<values[_0x225c('0xc3')][_0x225c('0x46')];_0x5b4e73++){var _0x466a36=values[_0x225c('0xc3')][_0x5b4e73];_0x356e17[_0x225c('0x43')]({'channel':_0x225c('0xc4'),'id':_0x466a36['id'],'createdAt':_0x466a36['createdAt']});}for(var _0x5b4e73=0x0;_0x5b4e73<values[_0x225c('0xc5')][_0x225c('0x46')];_0x5b4e73++){var _0x466a36=values[_0x225c('0xc5')][_0x5b4e73];_0x356e17[_0x225c('0x43')]({'channel':_0x225c('0xc6'),'id':_0x466a36['id'],'createdAt':_0x466a36[_0x225c('0xbf')]});}for(var _0x5b4e73=0x0;_0x5b4e73<values['WhatsappOpenTabs']['length'];_0x5b4e73++){var _0x466a36=values['WhatsappOpenTabs'][_0x5b4e73];_0x356e17[_0x225c('0x43')]({'channel':'WHATSAPP','id':_0x466a36['id'],'createdAt':_0x466a36[_0x225c('0xbf')]});}var _0xa26f4a={'count':_0x356e17['length'],'rows':_0x356e17};return _0xa26f4a;}else return null;})[_0x225c('0x13')](respondWithResult(_0x2c2297,null))[_0x225c('0x1c')](handleError(_0x2c2297,null));};exports[_0x225c('0xc7')]=function(_0x3b2e1d,_0x4b4af8){var _0x556c0a={};var _0x17f840={};var _0x5d098a;var _0x368f57;return db[_0x225c('0x38')]['findOne']({'where':{'id':_0x3b2e1d[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x4b4af8,null))['then'](function(_0x1dab12){if(_0x1dab12){_0x5d098a=_0x1dab12;_0x17f840['model']=_[_0x225c('0xc8')](db[_0x225c('0xc9')][_0x225c('0x39')]);_0x17f840[_0x225c('0x40')]=_[_0x225c('0xc8')](_0x3b2e1d['query']);_0x17f840[_0x225c('0x52')]=_[_0x225c('0x53')](_0x17f840[_0x225c('0x4f')],_0x17f840[_0x225c('0x40')]);_0x556c0a['attributes']=_[_0x225c('0x53')](_0x17f840[_0x225c('0x4f')],qs[_0x225c('0x54')](_0x3b2e1d['query'][_0x225c('0x54')]));_0x556c0a[_0x225c('0x42')]=_0x556c0a[_0x225c('0x42')]['length']?_0x556c0a[_0x225c('0x42')]:_0x17f840[_0x225c('0x4f')];_0x556c0a[_0x225c('0xca')]=qs[_0x225c('0xcb')](_0x3b2e1d[_0x225c('0x40')]['sort']);_0x556c0a['where']=qs[_0x225c('0x52')](_['pick'](_0x3b2e1d['query'],_0x17f840[_0x225c('0x52')]));if(_0x3b2e1d[_0x225c('0x40')][_0x225c('0x2f')]){_0x556c0a[_0x225c('0x3f')]=_['merge'](_0x556c0a['where'],{'$or':_[_0x225c('0x8a')](_0x556c0a[_0x225c('0x42')],function(_0x1a95f4){var _0x3a4714={};_0x3a4714[_0x1a95f4]={'$like':'%'+_0x3b2e1d[_0x225c('0x40')][_0x225c('0x2f')]+'%'};return _0x3a4714;})});}_0x556c0a=_[_0x225c('0x56')]({},_0x556c0a,_0x3b2e1d[_0x225c('0x57')]);return _0x5d098a['getContacts'](_0x556c0a);}})['then'](function(_0x4e8302){if(_0x4e8302){_0x368f57=_0x4e8302[_0x225c('0x46')];if(_0x3b2e1d['query'][_0x225c('0xcc')](_0x225c('0x55'))){_0x556c0a[_0x225c('0x41')]=[{'model':db[_0x225c('0xcd')],'as':_0x225c('0xce'),'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x225c('0x35'),'color'],'where':_0x3b2e1d['query']['tag']?{'id':_0x3b2e1d[_0x225c('0x40')][_0x225c('0xcf')]}:undefined,'required':_0x3b2e1d['query'][_0x225c('0xcf')]?!![]:![]}];}if(!_0x3b2e1d[_0x225c('0x40')][_0x225c('0xcc')](_0x225c('0xd0'))){_0x556c0a[_0x225c('0x22')]=qs['limit'](_0x3b2e1d[_0x225c('0x40')][_0x225c('0x22')]);_0x556c0a[_0x225c('0x20')]=qs[_0x225c('0x20')](_0x3b2e1d['query'][_0x225c('0x20')]);}return _0x5d098a[_0x225c('0xc7')](_0x556c0a);}})[_0x225c('0x13')](function(_0x4bfd6a){if(_0x4bfd6a){return _0x4bfd6a?{'count':_0x368f57,'rows':_0x4bfd6a}:null;}})[_0x225c('0x13')](respondWithResult(_0x4b4af8,null))[_0x225c('0x1c')](handleError(_0x4b4af8,null));};exports[_0x225c('0xd1')]=function(_0x538c95,_0x5e88d3){var _0x24fdf4;var _0x3c9f57;var _0x4f09b8={};var _0x4a7879;return db[_0x225c('0x38')][_0x225c('0x96')]({'where':{'id':_0x538c95[_0x225c('0x4e')]['id']},'attributes':['id',_0x225c('0x35'),_0x225c('0x27')]})[_0x225c('0x13')](handleEntityNotFound(_0x5e88d3,null))[_0x225c('0x13')](function(_0x57610e){if(!utils[_0x225c('0xa1')](_0x538c95[_0x225c('0x40')][_0x225c('0x9c')])){throw new db['Sequelize'][(_0x225c('0x92'))](_0x225c('0xb0'));}_0x24fdf4=_0x57610e;var _0x11a902={};_0x11a902[_0x225c('0x4f')]=_[_0x225c('0xc8')](db[_['capitalize'](_0x538c95[_0x225c('0x40')]['channel'])+'Queue'][_0x225c('0x39')]);_0x11a902[_0x225c('0x40')]=_['keys'](_0x538c95[_0x225c('0x40')]);_0x11a902[_0x225c('0x52')]=_[_0x225c('0x53')](_0x11a902['model'],_0x11a902[_0x225c('0x40')]);_0x4f09b8[_0x225c('0x42')]=_[_0x225c('0x53')](_0x11a902[_0x225c('0x4f')],qs[_0x225c('0x54')](_0x538c95['query'][_0x225c('0x54')]));_0x4f09b8['attributes']=_0x4f09b8['attributes'][_0x225c('0x46')]?_0x4f09b8[_0x225c('0x42')]:_0x11a902[_0x225c('0x4f')];_0x4f09b8['order']=qs[_0x225c('0xcb')](_0x538c95[_0x225c('0x40')][_0x225c('0xcb')]);_0x4f09b8[_0x225c('0x3f')]=qs['filters'](_[_0x225c('0xd2')](_0x538c95[_0x225c('0x40')],_0x11a902[_0x225c('0x52')]));if(_0x538c95[_0x225c('0x40')][_0x225c('0x2f')]){_0x4f09b8['where']=_[_0x225c('0x56')](_0x4f09b8[_0x225c('0x3f')],{'$or':_[_0x225c('0x8a')](_0x4f09b8[_0x225c('0x42')],function(_0x303513){var _0x11fcaf={};_0x11fcaf[_0x303513]={'$like':'%'+_0x538c95[_0x225c('0x40')][_0x225c('0x2f')]+'%'};return _0x11fcaf;})});}_0x4f09b8=_[_0x225c('0x56')]({},_0x4f09b8,_0x538c95[_0x225c('0x57')]);switch(_0x24fdf4[_0x225c('0x27')]){case _0x225c('0x28'):return db[_[_0x225c('0xa3')](_0x538c95['query'][_0x225c('0x9c')])+_0x225c('0xd3')]['findAll'](_0x4f09b8);case _0x225c('0x2a'):case _0x225c('0x2c'):return _0x24fdf4[_0x225c('0x26')+_['capitalize'](_0x538c95['query']['channel'])+'Queues'](_0x4f09b8);default:throw new db['Sequelize'][(_0x225c('0x92'))]('Unknown\x20role');}})[_0x225c('0x13')](function(_0x3de02a){_0x4a7879=_0x3de02a[_0x225c('0x46')];if(!_0x538c95['query']['hasOwnProperty'](_0x225c('0xd0'))){_0x4f09b8[_0x225c('0x22')]=qs['limit'](_0x538c95[_0x225c('0x40')][_0x225c('0x22')]);_0x4f09b8[_0x225c('0x20')]=qs['offset'](_0x538c95['query'][_0x225c('0x20')]);}switch(_0x24fdf4['role']){case _0x225c('0x28'):return db[_['capitalize'](_0x538c95['query']['channel'])+_0x225c('0xd3')][_0x225c('0x89')](_0x4f09b8);case _0x225c('0x2a'):case _0x225c('0x2c'):return _0x24fdf4['get'+_['capitalize'](_0x538c95['query'][_0x225c('0x9c')])+_0x225c('0xa5')](_0x4f09b8);}})[_0x225c('0x13')](function(_0x83468f){return{'count':_0x4a7879,'rows':_0x83468f};})[_0x225c('0x13')](respondWithResult(_0x5e88d3,null))[_0x225c('0x1c')](handleError(_0x5e88d3,null));};exports[_0x225c('0xd4')]=function(_0x395e70,_0x4bc0c6){var _0x4facfd={};var _0x3c9b28={};var _0x251ee8;var _0x58e9d3;return db[_0x225c('0x38')][_0x225c('0x96')]({'where':{'id':_0x395e70['params']['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x4bc0c6,null))[_0x225c('0x13')](function(_0x25974b){if(_0x25974b){_0x251ee8=_0x25974b;_0x3c9b28[_0x225c('0x4f')]=_[_0x225c('0xc8')](db[_0x225c('0xae')][_0x225c('0x39')]);_0x3c9b28[_0x225c('0x40')]=_['keys'](_0x395e70['query']);_0x3c9b28[_0x225c('0x52')]=_['intersection'](_0x3c9b28[_0x225c('0x4f')],_0x3c9b28[_0x225c('0x40')]);_0x4facfd[_0x225c('0x42')]=_[_0x225c('0x53')](_0x3c9b28[_0x225c('0x4f')],qs[_0x225c('0x54')](_0x395e70[_0x225c('0x40')]['fields']));_0x4facfd[_0x225c('0x42')]=_0x4facfd[_0x225c('0x42')][_0x225c('0x46')]?_0x4facfd['attributes']:_0x3c9b28['model'];_0x4facfd[_0x225c('0xca')]=qs['sort'](_0x395e70['query'][_0x225c('0xcb')]);_0x4facfd[_0x225c('0x3f')]=qs[_0x225c('0x52')](_['pick'](_0x395e70['query'],_0x3c9b28[_0x225c('0x52')]));if(_0x395e70[_0x225c('0x40')][_0x225c('0x2f')]){_0x4facfd[_0x225c('0x3f')]=_[_0x225c('0x56')](_0x4facfd['where'],{'$or':_['map'](_0x4facfd[_0x225c('0x42')],function(_0x6fb86e){var _0xbdee7a={};_0xbdee7a[_0x6fb86e]={'$like':'%'+_0x395e70[_0x225c('0x40')][_0x225c('0x2f')]+'%'};return _0xbdee7a;})});}_0x4facfd=_[_0x225c('0x56')]({},_0x4facfd,_0x395e70[_0x225c('0x57')]);return _0x251ee8[_0x225c('0xd4')](_0x4facfd);}})[_0x225c('0x13')](function(_0x15edbb){if(_0x15edbb){_0x58e9d3=_0x15edbb[_0x225c('0x46')];if(!_0x395e70[_0x225c('0x40')][_0x225c('0xcc')]('nolimit')){_0x4facfd[_0x225c('0x22')]=qs['limit'](_0x395e70[_0x225c('0x40')][_0x225c('0x22')]);_0x4facfd[_0x225c('0x20')]=qs[_0x225c('0x20')](_0x395e70[_0x225c('0x40')][_0x225c('0x20')]);}return _0x251ee8[_0x225c('0xd4')](_0x4facfd);}})['then'](function(_0x218b9b){if(_0x218b9b){return _0x218b9b?{'count':_0x58e9d3,'rows':_0x218b9b}:null;}})[_0x225c('0x13')](respondWithResult(_0x4bc0c6,null))['catch'](handleError(_0x4bc0c6,null));};exports[_0x225c('0xd5')]=function(_0x3df86d,_0x14e5cd){var _0x4c5aed={};var _0x4e143b={};var _0x3a86ed;var _0x509d05;return db[_0x225c('0x38')][_0x225c('0x96')]({'where':{'id':_0x3df86d[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x14e5cd,null))[_0x225c('0x13')](function(_0x82b787){if(_0x82b787){_0x3a86ed=_0x82b787;_0x4e143b[_0x225c('0x4f')]=_[_0x225c('0xc8')](db[_0x225c('0xd6')][_0x225c('0x39')]);_0x4e143b[_0x225c('0x40')]=_[_0x225c('0xc8')](_0x3df86d[_0x225c('0x40')]);_0x4e143b[_0x225c('0x52')]=_[_0x225c('0x53')](_0x4e143b[_0x225c('0x4f')],_0x4e143b['query']);_0x4c5aed['attributes']=_[_0x225c('0x53')](_0x4e143b[_0x225c('0x4f')],qs[_0x225c('0x54')](_0x3df86d[_0x225c('0x40')]['fields']));_0x4c5aed[_0x225c('0x42')]=_0x4c5aed[_0x225c('0x42')][_0x225c('0x46')]?_0x4c5aed[_0x225c('0x42')]:_0x4e143b[_0x225c('0x4f')];_0x4c5aed[_0x225c('0xca')]=qs['sort'](_0x3df86d[_0x225c('0x40')][_0x225c('0xcb')]);_0x4c5aed[_0x225c('0x3f')]=qs[_0x225c('0x52')](_[_0x225c('0xd2')](_0x3df86d[_0x225c('0x40')],_0x4e143b[_0x225c('0x52')]));if(_0x3df86d['query'][_0x225c('0x2f')]){_0x4c5aed['where']=_['merge'](_0x4c5aed['where'],{'$or':_[_0x225c('0x8a')](_0x4c5aed[_0x225c('0x42')],function(_0x50a2e0){var _0x1ac66f={};_0x1ac66f[_0x50a2e0]={'$like':'%'+_0x3df86d[_0x225c('0x40')][_0x225c('0x2f')]+'%'};return _0x1ac66f;})});}_0x4c5aed=_[_0x225c('0x56')]({},_0x4c5aed,_0x3df86d[_0x225c('0x57')]);return _0x3a86ed[_0x225c('0xd5')](_0x4c5aed);}})[_0x225c('0x13')](function(_0x3e4fa3){if(_0x3e4fa3){_0x509d05=_0x3e4fa3[_0x225c('0x46')];if(!_0x3df86d[_0x225c('0x40')][_0x225c('0xcc')](_0x225c('0xd0'))){_0x4c5aed[_0x225c('0x22')]=qs[_0x225c('0x22')](_0x3df86d[_0x225c('0x40')][_0x225c('0x22')]);_0x4c5aed['offset']=qs[_0x225c('0x20')](_0x3df86d[_0x225c('0x40')][_0x225c('0x20')]);}return _0x3a86ed[_0x225c('0xd5')](_0x4c5aed);}})['then'](function(_0x2cf010){if(_0x2cf010){return _0x2cf010?{'count':_0x509d05,'rows':_0x2cf010}:null;}})[_0x225c('0x13')](respondWithResult(_0x14e5cd,null))['catch'](handleError(_0x14e5cd,null));};exports[_0x225c('0xd7')]=function(_0x239454,_0x174e0c){var _0x1af682={'raw':!![],'where':{}};var _0x3a83bb={};var _0x1ecb38={'count':0x0,'rows':[]};return db['User']['findOne']({'where':{'id':_0x239454[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x174e0c,null))[_0x225c('0x13')](function(_0x899702){if(_0x899702){_0x3a83bb[_0x225c('0x4f')]=_[_0x225c('0xc8')](db[_0x225c('0xd8')][_0x225c('0x39')]);_0x3a83bb[_0x225c('0x40')]=_[_0x225c('0xc8')](_0x239454[_0x225c('0x40')]);_0x3a83bb[_0x225c('0x52')]=_['intersection'](_0x3a83bb[_0x225c('0x4f')],_0x3a83bb[_0x225c('0x40')]);_0x1af682[_0x225c('0x42')]=_[_0x225c('0x53')](_0x3a83bb[_0x225c('0x4f')],qs['fields'](_0x239454[_0x225c('0x40')][_0x225c('0x54')]));_0x1af682[_0x225c('0x42')]=_0x1af682['attributes']['length']?_0x1af682[_0x225c('0x42')]:_0x3a83bb[_0x225c('0x4f')];if(!_0x239454[_0x225c('0x40')][_0x225c('0xcc')](_0x225c('0xd0'))){_0x1af682['limit']=qs['limit'](_0x239454[_0x225c('0x40')][_0x225c('0x22')]);_0x1af682[_0x225c('0x20')]=qs[_0x225c('0x20')](_0x239454[_0x225c('0x40')][_0x225c('0x20')]);}_0x1af682['order']=qs[_0x225c('0xcb')](_0x239454[_0x225c('0x40')]['sort']);_0x1af682[_0x225c('0x3f')]=qs[_0x225c('0x52')](_[_0x225c('0xd2')](_0x239454[_0x225c('0x40')],_0x3a83bb['filters']));_0x1af682[_0x225c('0x3f')]['UserId']=_0x899702['id'];if(_0x239454['query'][_0x225c('0x2f')]){_0x1af682[_0x225c('0x3f')]=_[_0x225c('0x56')](_0x1af682[_0x225c('0x3f')],{'$or':_[_0x225c('0x8a')](_0x1af682[_0x225c('0x42')],function(_0x593cea){var _0x4e00b6={};_0x4e00b6[_0x593cea]={'$like':'%'+_0x239454['query'][_0x225c('0x2f')]+'%'};return _0x4e00b6;})});}_0x1af682=_[_0x225c('0x56')]({},_0x1af682,_0x239454[_0x225c('0x57')]);return db[_0x225c('0xd8')][_0x225c('0x23')]({'where':_0x1af682[_0x225c('0x3f')]})[_0x225c('0x13')](function(_0x48237d){_0x1ecb38[_0x225c('0x23')]=_0x48237d;if(_0x239454[_0x225c('0x40')]['includeAll']){_0x1af682[_0x225c('0x41')]=[{'all':!![]}];}return db[_0x225c('0xd8')][_0x225c('0x89')](_0x1af682);})[_0x225c('0x13')](function(_0x46939e){_0x1ecb38['rows']=_0x46939e;return _0x1ecb38;});}})[_0x225c('0x13')](respondWithFilteredResult(_0x174e0c,_0x1af682))[_0x225c('0x1c')](handleError(_0x174e0c,null));};exports[_0x225c('0xd9')]=function(_0x20b480,_0xde9221){var _0x3cf4cd={'raw':!![],'where':{}};var _0x177762={};var _0x462e6c={'count':0x0,'rows':[]};return db[_0x225c('0x38')][_0x225c('0x96')]({'where':{'id':_0x20b480[_0x225c('0x4e')]['id']}})['then'](handleEntityNotFound(_0xde9221,null))[_0x225c('0x13')](function(_0xda5576){if(_0xda5576){_0x177762[_0x225c('0x4f')]=_['keys'](db[_0x225c('0xda')][_0x225c('0x39')]);_0x177762[_0x225c('0x40')]=_[_0x225c('0xc8')](_0x20b480[_0x225c('0x40')]);_0x177762['filters']=_['intersection'](_0x177762[_0x225c('0x4f')],_0x177762[_0x225c('0x40')]);_0x3cf4cd[_0x225c('0x42')]=_['intersection'](_0x177762[_0x225c('0x4f')],qs[_0x225c('0x54')](_0x20b480['query'][_0x225c('0x54')]));_0x3cf4cd[_0x225c('0x42')]=_0x3cf4cd[_0x225c('0x42')][_0x225c('0x46')]?_0x3cf4cd[_0x225c('0x42')]:_0x177762[_0x225c('0x4f')];if(!_0x20b480['query'][_0x225c('0xcc')](_0x225c('0xd0'))){_0x3cf4cd['limit']=qs['limit'](_0x20b480['query'][_0x225c('0x22')]);_0x3cf4cd[_0x225c('0x20')]=qs[_0x225c('0x20')](_0x20b480[_0x225c('0x40')][_0x225c('0x20')]);}_0x3cf4cd[_0x225c('0xca')]=qs[_0x225c('0xcb')](_0x20b480[_0x225c('0x40')][_0x225c('0xcb')]);_0x3cf4cd[_0x225c('0x3f')]=qs[_0x225c('0x52')](_['pick'](_0x20b480[_0x225c('0x40')],_0x177762['filters']));_0x3cf4cd[_0x225c('0x3f')][_0x225c('0xdb')]=_0xda5576['id'];if(_0x20b480[_0x225c('0x40')][_0x225c('0x2f')]){_0x3cf4cd[_0x225c('0x3f')]=_[_0x225c('0x56')](_0x3cf4cd['where'],{'$or':_[_0x225c('0x8a')](_0x3cf4cd[_0x225c('0x42')],function(_0x83b36a){var _0x364733={};_0x364733[_0x83b36a]={'$like':'%'+_0x20b480['query'][_0x225c('0x2f')]+'%'};return _0x364733;})});}_0x3cf4cd=_[_0x225c('0x56')]({},_0x3cf4cd,_0x20b480[_0x225c('0x57')]);return db[_0x225c('0xda')]['count']({'where':_0x3cf4cd[_0x225c('0x3f')]})[_0x225c('0x13')](function(_0x457216){_0x462e6c['count']=_0x457216;if(_0x20b480[_0x225c('0x40')][_0x225c('0x55')]){_0x3cf4cd[_0x225c('0x41')]=[{'all':!![]}];}return db[_0x225c('0xda')]['findAll'](_0x3cf4cd);})['then'](function(_0x197520){_0x462e6c[_0x225c('0x44')]=_0x197520;return _0x462e6c;});}})[_0x225c('0x13')](respondWithFilteredResult(_0xde9221,_0x3cf4cd))[_0x225c('0x1c')](handleError(_0xde9221,null));};exports[_0x225c('0xdc')]=function(_0xbd283,_0x372a65){var _0xa8b1b={};var _0x10e63={};var _0x1a8677;var _0x4c73b5;return db[_0x225c('0x38')][_0x225c('0x96')]({'where':{'id':_0xbd283[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x372a65,null))['then'](function(_0x4c4595){if(_0x4c4595){_0x1a8677=_0x4c4595;_0x10e63[_0x225c('0x4f')]=_[_0x225c('0xc8')](db['ChatInteraction'][_0x225c('0x39')]);_0x10e63['query']=_['keys'](_0xbd283[_0x225c('0x40')]);_0x10e63[_0x225c('0x52')]=_[_0x225c('0x53')](_0x10e63[_0x225c('0x4f')],_0x10e63[_0x225c('0x40')]);_0xa8b1b[_0x225c('0x42')]=_['intersection'](_0x10e63[_0x225c('0x4f')],qs['fields'](_0xbd283[_0x225c('0x40')][_0x225c('0x54')]));_0xa8b1b['attributes']=_0xa8b1b[_0x225c('0x42')][_0x225c('0x46')]?_0xa8b1b[_0x225c('0x42')]:_0x10e63['model'];_0xa8b1b[_0x225c('0xca')]=qs[_0x225c('0xcb')](_0xbd283['query'][_0x225c('0xcb')]);_0xa8b1b[_0x225c('0x3f')]=qs['filters'](_[_0x225c('0xd2')](_0xbd283['query'],_0x10e63[_0x225c('0x52')]));if(_0xbd283['query'][_0x225c('0x2f')]){_0xa8b1b[_0x225c('0x3f')]=_['merge'](_0xa8b1b[_0x225c('0x3f')],{'$or':_['map'](_0xa8b1b[_0x225c('0x42')],function(_0x4ebcd3){var _0x5cac82={};_0x5cac82[_0x4ebcd3]={'$like':'%'+_0xbd283[_0x225c('0x40')]['filter']+'%'};return _0x5cac82;})});}_0xa8b1b=_['merge']({},_0xa8b1b,_0xbd283[_0x225c('0x57')]);return _0x1a8677[_0x225c('0xdc')](_0xa8b1b);}})[_0x225c('0x13')](function(_0x145d56){if(_0x145d56){_0x4c73b5=_0x145d56[_0x225c('0x46')];if(!_0xbd283[_0x225c('0x40')][_0x225c('0xcc')](_0x225c('0xd0'))){_0xa8b1b[_0x225c('0x22')]=qs['limit'](_0xbd283[_0x225c('0x40')][_0x225c('0x22')]);_0xa8b1b[_0x225c('0x20')]=qs[_0x225c('0x20')](_0xbd283[_0x225c('0x40')][_0x225c('0x20')]);}return _0x1a8677[_0x225c('0xdc')](_0xa8b1b);}})[_0x225c('0x13')](function(_0x51e663){if(_0x51e663){return _0x51e663?{'count':_0x4c73b5,'rows':_0x51e663}:null;}})[_0x225c('0x13')](respondWithResult(_0x372a65,null))[_0x225c('0x1c')](handleError(_0x372a65,null));};exports[_0x225c('0xdd')]=function(_0x222ced,_0x17df2d){var _0x5a86b2={};var _0x3f609c={};var _0x33c2bc;var _0x27d759;return db['User'][_0x225c('0x96')]({'where':{'id':_0x222ced[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x17df2d,null))[_0x225c('0x13')](function(_0x3dfe79){if(_0x3dfe79){_0x33c2bc=_0x3dfe79;_0x3f609c[_0x225c('0x4f')]=_[_0x225c('0xc8')](db['OpenchannelInteraction'][_0x225c('0x39')]);_0x3f609c[_0x225c('0x40')]=_[_0x225c('0xc8')](_0x222ced['query']);_0x3f609c[_0x225c('0x52')]=_[_0x225c('0x53')](_0x3f609c[_0x225c('0x4f')],_0x3f609c[_0x225c('0x40')]);_0x5a86b2['attributes']=_['intersection'](_0x3f609c['model'],qs[_0x225c('0x54')](_0x222ced[_0x225c('0x40')]['fields']));_0x5a86b2[_0x225c('0x42')]=_0x5a86b2['attributes'][_0x225c('0x46')]?_0x5a86b2[_0x225c('0x42')]:_0x3f609c[_0x225c('0x4f')];_0x5a86b2[_0x225c('0xca')]=qs[_0x225c('0xcb')](_0x222ced[_0x225c('0x40')][_0x225c('0xcb')]);_0x5a86b2['where']=qs[_0x225c('0x52')](_[_0x225c('0xd2')](_0x222ced[_0x225c('0x40')],_0x3f609c[_0x225c('0x52')]));if(_0x222ced[_0x225c('0x40')][_0x225c('0x2f')]){_0x5a86b2['where']=_[_0x225c('0x56')](_0x5a86b2[_0x225c('0x3f')],{'$or':_['map'](_0x5a86b2[_0x225c('0x42')],function(_0x468c2a){var _0x4d7b80={};_0x4d7b80[_0x468c2a]={'$like':'%'+_0x222ced[_0x225c('0x40')][_0x225c('0x2f')]+'%'};return _0x4d7b80;})});}_0x5a86b2=_[_0x225c('0x56')]({},_0x5a86b2,_0x222ced[_0x225c('0x57')]);return _0x33c2bc[_0x225c('0xdd')](_0x5a86b2);}})['then'](function(_0x23c8aa){if(_0x23c8aa){_0x27d759=_0x23c8aa[_0x225c('0x46')];if(!_0x222ced['query'][_0x225c('0xcc')](_0x225c('0xd0'))){_0x5a86b2[_0x225c('0x22')]=qs[_0x225c('0x22')](_0x222ced['query'][_0x225c('0x22')]);_0x5a86b2[_0x225c('0x20')]=qs[_0x225c('0x20')](_0x222ced[_0x225c('0x40')][_0x225c('0x20')]);}return _0x33c2bc['getOpenchannelInteractions'](_0x5a86b2);}})['then'](function(_0x121be7){if(_0x121be7){return _0x121be7?{'count':_0x27d759,'rows':_0x121be7}:null;}})['then'](respondWithResult(_0x17df2d,null))[_0x225c('0x1c')](handleError(_0x17df2d,null));};exports[_0x225c('0xde')]=function(_0x22e50f,_0x2f0b42){var _0x3933bf={'raw':!![],'where':{}};var _0x52147c={};var _0x10fc44={'count':0x0,'rows':[]};return db[_0x225c('0x38')][_0x225c('0x96')]({'where':{'id':_0x22e50f[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x2f0b42,null))[_0x225c('0x13')](function(_0x21214b){if(_0x21214b){_0x52147c[_0x225c('0x4f')]=_['keys'](db['MailInteraction'][_0x225c('0x39')]);_0x52147c['query']=_['keys'](_0x22e50f[_0x225c('0x40')]);_0x52147c[_0x225c('0x52')]=_[_0x225c('0x53')](_0x52147c[_0x225c('0x4f')],_0x52147c[_0x225c('0x40')]);_0x3933bf['attributes']=_[_0x225c('0x53')](_0x52147c[_0x225c('0x4f')],qs[_0x225c('0x54')](_0x22e50f[_0x225c('0x40')][_0x225c('0x54')]));_0x3933bf[_0x225c('0x42')]=_0x3933bf[_0x225c('0x42')][_0x225c('0x46')]?_0x3933bf['attributes']:_0x52147c[_0x225c('0x4f')];if(!_0x22e50f['query'][_0x225c('0xcc')]('nolimit')){_0x3933bf[_0x225c('0x22')]=qs['limit'](_0x22e50f[_0x225c('0x40')][_0x225c('0x22')]);_0x3933bf[_0x225c('0x20')]=qs[_0x225c('0x20')](_0x22e50f[_0x225c('0x40')][_0x225c('0x20')]);}_0x3933bf[_0x225c('0xca')]=qs[_0x225c('0xcb')](_0x22e50f['query'][_0x225c('0xcb')]);_0x3933bf[_0x225c('0x3f')]=qs['filters'](_[_0x225c('0xd2')](_0x22e50f['query'],_0x52147c[_0x225c('0x52')]));_0x3933bf[_0x225c('0x3f')]['UserId']=_0x21214b['id'];if(_0x22e50f['query'][_0x225c('0x2f')]){_0x3933bf[_0x225c('0x3f')]=_[_0x225c('0x56')](_0x3933bf[_0x225c('0x3f')],{'$or':_['map'](_0x3933bf[_0x225c('0x42')],function(_0x561260){var _0x4e804b={};_0x4e804b[_0x561260]={'$like':'%'+_0x22e50f[_0x225c('0x40')][_0x225c('0x2f')]+'%'};return _0x4e804b;})});}_0x3933bf=_['merge']({},_0x3933bf,_0x22e50f[_0x225c('0x57')]);return db['MailInteraction'][_0x225c('0x23')]({'where':_0x3933bf[_0x225c('0x3f')]})[_0x225c('0x13')](function(_0x3449a8){_0x10fc44[_0x225c('0x23')]=_0x3449a8;if(_0x22e50f[_0x225c('0x40')][_0x225c('0x55')]){_0x3933bf['include']=[{'all':!![]}];}return db[_0x225c('0xdf')][_0x225c('0x89')](_0x3933bf);})[_0x225c('0x13')](function(_0x3fdbff){_0x10fc44[_0x225c('0x44')]=_0x3fdbff;return _0x10fc44;});}})[_0x225c('0x13')](respondWithFilteredResult(_0x2f0b42,_0x3933bf))[_0x225c('0x1c')](handleError(_0x2f0b42,null));};exports['getSmsInteractions']=function(_0x12315d,_0xbbfd35){var _0x2c931c={};var _0x545906={};var _0x1078e3;var _0x5f0db7;return db[_0x225c('0x38')][_0x225c('0x96')]({'where':{'id':_0x12315d['params']['id']}})[_0x225c('0x13')](handleEntityNotFound(_0xbbfd35,null))[_0x225c('0x13')](function(_0x4bbc87){if(_0x4bbc87){_0x1078e3=_0x4bbc87;_0x545906[_0x225c('0x4f')]=_[_0x225c('0xc8')](db[_0x225c('0xe0')][_0x225c('0x39')]);_0x545906[_0x225c('0x40')]=_[_0x225c('0xc8')](_0x12315d[_0x225c('0x40')]);_0x545906['filters']=_['intersection'](_0x545906[_0x225c('0x4f')],_0x545906[_0x225c('0x40')]);_0x2c931c['attributes']=_[_0x225c('0x53')](_0x545906[_0x225c('0x4f')],qs[_0x225c('0x54')](_0x12315d[_0x225c('0x40')][_0x225c('0x54')]));_0x2c931c[_0x225c('0x42')]=_0x2c931c[_0x225c('0x42')][_0x225c('0x46')]?_0x2c931c[_0x225c('0x42')]:_0x545906[_0x225c('0x4f')];_0x2c931c[_0x225c('0xca')]=qs[_0x225c('0xcb')](_0x12315d[_0x225c('0x40')][_0x225c('0xcb')]);_0x2c931c[_0x225c('0x3f')]=qs[_0x225c('0x52')](_[_0x225c('0xd2')](_0x12315d['query'],_0x545906[_0x225c('0x52')]));if(_0x12315d[_0x225c('0x40')][_0x225c('0x2f')]){_0x2c931c[_0x225c('0x3f')]=_[_0x225c('0x56')](_0x2c931c[_0x225c('0x3f')],{'$or':_['map'](_0x2c931c[_0x225c('0x42')],function(_0x4dcebf){var _0x4b3b5c={};_0x4b3b5c[_0x4dcebf]={'$like':'%'+_0x12315d[_0x225c('0x40')][_0x225c('0x2f')]+'%'};return _0x4b3b5c;})});}_0x2c931c=_[_0x225c('0x56')]({},_0x2c931c,_0x12315d[_0x225c('0x57')]);return _0x1078e3[_0x225c('0xe1')](_0x2c931c);}})[_0x225c('0x13')](function(_0x56351e){if(_0x56351e){_0x5f0db7=_0x56351e[_0x225c('0x46')];if(!_0x12315d[_0x225c('0x40')]['hasOwnProperty'](_0x225c('0xd0'))){_0x2c931c[_0x225c('0x22')]=qs[_0x225c('0x22')](_0x12315d[_0x225c('0x40')][_0x225c('0x22')]);_0x2c931c[_0x225c('0x20')]=qs[_0x225c('0x20')](_0x12315d[_0x225c('0x40')][_0x225c('0x20')]);}return _0x1078e3[_0x225c('0xe1')](_0x2c931c);}})[_0x225c('0x13')](function(_0x34e068){if(_0x34e068){return _0x34e068?{'count':_0x5f0db7,'rows':_0x34e068}:null;}})['then'](respondWithResult(_0xbbfd35,null))[_0x225c('0x1c')](handleError(_0xbbfd35,null));};exports[_0x225c('0xe2')]=function(_0xb70931,_0x161c0b){var _0x28ee16={};var _0x1542f6={};var _0x412b0f;var _0x1c1de0;return db[_0x225c('0x38')][_0x225c('0x96')]({'where':{'id':_0xb70931[_0x225c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x161c0b,null))[_0x225c('0x13')](function(_0x11beda){if(_0x11beda){_0x412b0f=_0x11beda;_0x1542f6[_0x225c('0x4f')]=_['keys'](db['FaxInteraction'][_0x225c('0x39')]);_0x1542f6['query']=_['keys'](_0xb70931[_0x225c('0x40')]);_0x1542f6[_0x225c('0x52')]=_['intersection'](_0x1542f6['model'],_0x1542f6[_0x225c('0x40')]);_0x28ee16[_0x225c('0x42')]=_[_0x225c('0x53')](_0x1542f6[_0x225c('0x4f')],qs[_0x225c('0x54')](_0xb70931[_0x225c('0x40')]['fields']));_0x28ee16[_0x225c('0x42')]=_0x28ee16[_0x225c('0x42')][_0x225c('0x46')]?_0x28ee16['attributes']:_0x1542f6[_0x225c('0x4f')];_0x28ee16[_0x225c('0xca')]=qs[_0x225c('0xcb')](_0xb70931[_0x225c('0x40')][_0x225c('0xcb')]);_0x28ee16[_0x225c('0x3f')]=qs['filters'](_['pick'](_0xb70931[_0x225c('0x40')],_0x1542f6[_0x225c('0x52')]));if(_0xb70931[_0x225c('0x40')][_0x225c('0x2f')]){_0x28ee16[_0x225c('0x3f')]=_['merge'](_0x28ee16[_0x225c('0x3f')],{'$or':_[_0x225c('0x8a')](_0x28ee16[_0x225c('0x42')],function(_0xd35a13){var _0x18a3e5={};_0x18a3e5[_0xd35a13]={'$like':'%'+_0xb70931[_0x225c('0x40')][_0x225c('0x2f')]+'%'};return _0x18a3e5;})});}_0x28ee16=_[_0x225c('0x56')]({},_0x28ee16,_0xb70931[_0x225c('0x57')]);return _0x412b0f[_0x225c('0xe2')](_0x28ee16);}})[_0x225c('0x13')](function(_0x304b19){if(_0x304b19){_0x1c1de0=_0x304b19['length'];if(!_0xb70931[_0x225c('0x40')]['hasOwnProperty'](_0x225c('0xd0'))){_0x28ee16['limit']=qs[_0x225c('0x22')](_0xb70931[_0x225c('0x40')][_0x225c('0x22')]);_0x28ee16[_0x225c('0x20')]=qs[_0x225c('0x20')](_0xb70931[_0x225c('0x40')][_0x225c('0x20')]);}return _0x412b0f[_0x225c('0xe2')](_0x28ee16);}})[_0x225c('0x13')](function(_0x168d74){if(_0x168d74){return _0x168d74?{'count':_0x1c1de0,'rows':_0x168d74}:null;}})['then'](respondWithResult(_0x161c0b,null))[_0x225c('0x1c')](handleError(_0x161c0b,null));};exports[_0x225c('0xe3')]=function(_0xb7db43,_0x5375b7){var _0x17202c={};var _0x57d337={};var _0x216bbb;var _0xc91d2e;return db[_0x225c('0x38')][_0x225c('0x96')]({'where':{'id':_0xb7db43['params']['id']}})['then'](handleEntityNotFound(_0x5375b7,null))[_0x225c('0x13')](function(_0xcd8388){if(_0xcd8388){_0x216bbb=_0xcd8388;_0x57d337[_0x225c('0x4f')]=_[_0x225c('0xc8')](db['WhatsappInteraction'][_0x225c('0x39')]);_0x57d337['query']=_[_0x225c('0xc8')](_0xb7db43[_0x225c('0x40')]);_0x57d337[_0x225c('0x52')]=_[_0x225c('0x53')](_0x57d337['model'],_0x57d337[_0x225c('0x40')]);_0x17202c[_0x225c('0x42')]=_[_0x225c('0x53')](_0x57d337[_0x225c('0x4f')],qs['fields'](_0xb7db43[_0x225c('0x40')][_0x225c('0x54')]));_0x17202c[_0x225c('0x42')]=_0x17202c[_0x225c('0x42')][_0x225c('0x46')]?_0x17202c[_0x225c('0x42')]:_0x57d337[_0x225c('0x4f')];_0x17202c[_0x225c('0xca')]=qs[_0x225c('0xcb')](_0xb7db43['query'][_0x225c('0xcb')]);_0x17202c[_0x225c('0x3f')]=qs['filters'](_[_0x225c('0xd2')](_0xb7db43[_0x225c('0x40')],_0x57d337['filters']));if(_0xb7db43['query'][_0x225c('0x2f')]){_0x17202c[_0x225c('0x3f')]=_[_0x225c('0x56')](_0x17202c[_0x225c('0x3f')],{'$or':_[_0x225c('0x8a')](_0x17202c[_0x225c('0x42')],function(_0x556c77){var _0x20561f={};_0x20561f[_0x556c77]={'$like':'%'+_0xb7db43['query'][_0x225c('0x2f')]+'%'};return _0x20561f;})});}_0x17202c=_[_0x225c('0x56')]({},_0x17202c,_0xb7db43[_0x225c('0x57')]);return _0x216bbb[_0x225c('0xe3')](_0x17202c);}})[_0x225c('0x13')](function(_0x3026e5){if(_0x3026e5){_0xc91d2e=_0x3026e5[_0x225c('0x46')];if(!_0xb7db43[_0x225c('0x40')][_0x225c('0xcc')](_0x225c('0xd0'))){_0x17202c[_0x225c('0x22')]=qs[_0x225c('0x22')](_0xb7db43[_0x225c('0x40')][_0x225c('0x22')]);_0x17202c['offset']=qs[_0x225c('0x20')](_0xb7db43[_0x225c('0x40')][_0x225c('0x20')]);}return _0x216bbb[_0x225c('0xe3')](_0x17202c);}})[_0x225c('0x13')](function(_0xaa2849){if(_0xaa2849){return _0xaa2849?{'count':_0xc91d2e,'rows':_0xaa2849}:null;}})[_0x225c('0x13')](respondWithResult(_0x5375b7,null))[_0x225c('0x1c')](handleError(_0x5375b7,null));};exports[_0x225c('0xe4')]=function(_0x4d42d9,_0x390f08,_0x4a700f){var _0x45600f;var _0x2118bf;var _0x55551e;var _0x45d7d4=!_[_0x225c('0x64')](_0x4d42d9[_0x225c('0x4e')]['id'])?_0x4d42d9[_0x225c('0x4e')]['id']:!_['isNil'](_0x4d42d9[_0x225c('0x2a')]['id'])?_0x4d42d9['user']['id']:null;return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x45d7d4,'role':{'$or':[_0x225c('0x28'),_0x225c('0x2a'),_0x225c('0x2c')]}},'attributes':['id',_0x225c('0x35'),_0x225c('0xe5'),_0x225c('0xe6'),_0x225c('0x27'),_0x225c('0x65'),_0x225c('0x9e')]})[_0x225c('0x13')](function(_0x125ce4){if(_0x125ce4){if(_0x125ce4[_0x225c('0x27')]===_0x225c('0x2c')){_0x45600f=_0x125ce4;if(_0x4d42d9[_0x225c('0x5b')][_0x225c('0xa0')]){_0x55551e=util[_0x225c('0xac')]('LOCAL/%s@from-sip/n',_0x45600f[_0x4d42d9[_0x225c('0x5b')]['interface']]);}else if(_0x4d42d9['body'][_0x225c('0xe7')]){_0x55551e=util[_0x225c('0xac')](_0x225c('0xad'),_0x4d42d9[_0x225c('0x5b')][_0x225c('0xe7')]);}else{_0x55551e=util['format'](_0x225c('0xad'),_0x45600f['name']);}socket['to'](util[_0x225c('0xac')]('user:%s',_0x45600f['name']))[_0x225c('0xa9')]('user:forcelogout',{'user':{'id':_0x45600f['id'],'name':_0x45600f[_0x225c('0x35')]},'ip':_0x4d42d9[_0x225c('0xe8')][_0x225c('0xe9')]||_0x4d42d9[_0x225c('0xea')][_0x225c('0xeb')]||_0x4d42d9[_0x225c('0xec')][_0x225c('0xeb')]||_0x4d42d9[_0x225c('0xea')][_0x225c('0xec')]['remoteAddress']});return db[_0x225c('0xae')][_0x225c('0x33')]({'where':{'membername':_0x45600f[_0x225c('0x35')]},'individualHooks':!![]});}}else{throw new db[(_0x225c('0x90'))][(_0x225c('0x92'))](_0x225c('0xed'));}})['then'](function(){if(_0x45600f){return _0x45600f[_0x225c('0xee')]({'raw':!![]});}})[_0x225c('0x13')](function(_0x53ee51){if(_0x45600f){var _0x2cbafa=[];if(_0x53ee51){_0x2118bf=_0x53ee51;if(_0x2118bf[_0x225c('0x46')]){for(var _0x444ce7=0x0;_0x444ce7<_0x2118bf['length'];_0x444ce7++){_0x2cbafa['push']({'membername':_0x45600f['name'],'UserId':_0x45600f['id'],'queue_name':_0x2118bf[_0x444ce7]['name'],'VoiceQueueId':_0x2118bf[_0x444ce7]['id'],'interface':_0x55551e,'paused':_0x45600f[_0x225c('0x9e')]||![],'penalty':_0x2118bf[_0x444ce7]['UserVoiceQueue.penalty']||0x0});}return BPromise[_0x225c('0x88')](_0x2cbafa,function(_0xbe0f95){return db[_0x225c('0xae')]['upsert'](_0xbe0f95);});}}}})['then'](function(){if(_0x45600f){return db[_0x225c('0xef')]['findAll']({'where':{'membername':_0x45600f[_0x225c('0x35')],'exitAt':null}});}})['then'](function(_0x4639e0){if(_0x45600f){var _0x1063d5=[];_0x4639e0[_0x225c('0xf0')](function(_0x1aaba4){_0x1063d5[_0x225c('0x43')](_0x1aaba4[_0x225c('0x25')]({'exitAt':moment()['format'](_0x225c('0xf1'))}));});return BPromise['all'](_0x1063d5);}})[_0x225c('0x13')](function(){if(_0x45600f){var _0x30dab7=[];var _0x12575e=[];var _0x48e18b=utils[_0x225c('0xf2')]();var _0x3fa1c8={'membername':_0x45600f[_0x225c('0x35')],'interface':_0x55551e,'enterAt':moment()['format'](_0x225c('0xf1')),'role':_0x45600f[_0x225c('0x27')],'internal':_0x45600f[_0x225c('0x65')]};_0x48e18b[_0x225c('0xf0')](function(_0x414b2c){_0x30dab7[_0x225c('0x43')](_[_0x225c('0x56')]({'channel':_0x414b2c,'type':_0x225c('0xf3'),'data1':_0x4d42d9[_0x225c('0x5b')][_0x225c('0xf4')],'data2':_0x55551e},_0x3fa1c8));if(_0x45600f['loginInPause']){_0x12575e[_0x225c('0x43')](_[_0x225c('0x56')]({'channel':_0x414b2c,'type':_0x225c('0xf5'),'data1':'LOGININPAUSE'},_0x3fa1c8));}});return db[_0x225c('0xef')]['bulkCreate'](_0x30dab7[_0x225c('0xf6')](_0x12575e),{'individualHooks':!![]});}})[_0x225c('0x13')](function(){if(_0x45600f){return _0x45600f[_0x225c('0x25')]({'online':!![],'lastLoginAt':moment()[_0x225c('0xac')](_0x225c('0xf1')),'voicePause':_0x45600f['loginInPause']||![],'mailPause':_0x45600f[_0x225c('0x9e')]||![],'chatPause':_0x45600f[_0x225c('0x9e')]||![],'faxPause':_0x45600f[_0x225c('0x9e')]||![],'smsPause':_0x45600f['loginInPause']||![],'openchannelPause':_0x45600f['loginInPause']||![],'whatsappPause':_0x45600f[_0x225c('0x9e')]||![],'pauseType':_0x45600f[_0x225c('0x9e')]?_0x225c('0xf7'):null,'interface':_0x55551e,'lastPauseAt':moment()[_0x225c('0xac')](_0x225c('0xf1'))});}})[_0x225c('0x13')](function(_0x30c36a){if(_0x4d42d9[_0x225c('0xf8')]){return _0x4a700f();}else{return BPromise[_0x225c('0xf9')](_0x30c36a)[_0x225c('0x13')](respondWithResult(_0x390f08,null));}})[_0x225c('0x1c')](handleError(_0x390f08,null));};exports[_0x225c('0xfa')]=function(_0x200cd0,_0x496557){var _0x17710d;return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x200cd0['params']['id'],'role':_0x225c('0x2c')},'attributes':['id',_0x225c('0x35'),_0x225c('0x27')]})[_0x225c('0x13')](handleEntityNotFound(_0x496557,null))[_0x225c('0x13')](function(_0x33197c){if(_0x33197c){_0x17710d=_0x33197c;return db[_0x225c('0xae')][_0x225c('0x33')]({'where':{'membername':_0x17710d[_0x225c('0x35')]},'individualHooks':!![]});}})[_0x225c('0x13')](function(){return db[_0x225c('0xef')][_0x225c('0x89')]({'where':{'membername':_0x17710d['name'],'exitAt':null}});})['then'](function(_0x52ed03){var _0x1b6043=[];_0x52ed03[_0x225c('0xf0')](function(_0x2490fa){_0x1b6043[_0x225c('0x43')](_0x2490fa[_0x225c('0x25')]({'exitAt':moment()[_0x225c('0xac')](_0x225c('0xf1'))}));});return BPromise[_0x225c('0x4c')](_0x1b6043);})[_0x225c('0x13')](function(){return _0x17710d[_0x225c('0x25')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x225c('0x13')](respondWithResult(_0x496557,null))['catch'](handleError(_0x496557,null));};exports[_0x225c('0xfb')]=function(_0x226803,_0x4a5408){var _0x518928;return db[_0x225c('0xae')][_0x225c('0x25')]({'paused':0x1},{'where':{'UserId':_0x226803[_0x225c('0x4e')]['id']},'individualHooks':!![]})[_0x225c('0x13')](function(){return db[_0x225c('0x38')]['find']({'where':{'id':_0x226803[_0x225c('0x4e')]['id'],'role':_0x225c('0x2c')},'attributes':['id',_0x225c('0x35'),_0x225c('0x27'),'internal',_0x225c('0xa0')]});})[_0x225c('0x13')](handleEntityNotFound(_0x4a5408,null))[_0x225c('0x13')](function(_0x17d949){if(_0x17d949){_0x518928=_0x17d949;return respondWithRpcPromise(_0x225c('0xfc'),'pause',{'id':_0x518928['id'],'name':_0x518928[_0x225c('0x35')],'pause':!![]});}})[_0x225c('0x13')](function(){if(_0x518928){return db[_0x225c('0xef')][_0x225c('0x89')]({'where':{'membername':_0x518928[_0x225c('0x35')],'type':_0x225c('0xf5'),'exitAt':null}});}})[_0x225c('0x13')](function(_0x5ec54f){if(_0x5ec54f[_0x225c('0x46')]){var _0x31113e=moment()['format'](_0x225c('0xf1'));for(var _0x29ffbf=0x0,_0x1bb699=_0x5ec54f[_0x225c('0x46')];_0x29ffbf<_0x1bb699;_0x29ffbf++){_0x5ec54f[_0x29ffbf][_0x225c('0xfd')]({'exitAt':_0x31113e});}}})[_0x225c('0x13')](function(){var _0x20577e=[];var _0x256a9b=utils['getChannels']();_0x256a9b[_0x225c('0xf0')](function(_0x581064){_0x20577e[_0x225c('0x43')]({'channel':_0x581064,'membername':_0x518928['name'],'interface':_['isNil'](_0x518928['interface'])?util['format'](_0x225c('0xad'),_0x518928[_0x225c('0x35')]):_0x518928[_0x225c('0xa0')],'type':_0x225c('0xf5'),'enterAt':moment()[_0x225c('0xac')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x226803[_0x225c('0x5b')][_0x225c('0x3b')]||'DEFAULT\x20PAUSE','role':_0x518928[_0x225c('0x27')],'internal':_0x518928['internal']});});return db[_0x225c('0xef')][_0x225c('0x85')](_0x20577e,{'individualHooks':!![]});})[_0x225c('0x13')](function(){return _0x518928[_0x225c('0x25')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x226803[_0x225c('0x5b')]['type']||'DEFAULT\x20PAUSE','lastPauseAt':moment()['format'](_0x225c('0xf1'))});})[_0x225c('0x13')](respondWithResult(_0x4a5408,null))['catch'](handleError(_0x4a5408,null));};exports[_0x225c('0xfe')]=function(_0x5d9e74,_0x22ab16){var _0x517ab6;return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x5d9e74[_0x225c('0x4e')]['id']},'attributes':['id',_0x225c('0x35'),_0x225c('0x27'),_0x225c('0x9f'),'mailPause',_0x225c('0xff'),_0x225c('0x100'),_0x225c('0x101'),_0x225c('0x102'),_0x225c('0x103'),_0x225c('0x104'),_0x225c('0x105')]})[_0x225c('0x13')](handleEntityNotFound(_0x22ab16,null))[_0x225c('0x13')](function(_0x375192){if(_0x375192){_0x517ab6=_0x375192;if(_0x5d9e74[_0x225c('0x5b')][_0x225c('0x9c')]&&!utils[_0x225c('0xa1')](_0x5d9e74['body'][_0x225c('0x9c')])){throw new db[(_0x225c('0x90'))][(_0x225c('0x92'))](_0x225c('0xb0'));}switch(_0x5d9e74[_0x225c('0x5b')]['channel']){case _0x225c('0xab'):return respondWithRpcPromise(_0x225c('0xfc'),_0x225c('0xfe'),{'id':_0x517ab6['id'],'name':_0x517ab6[_0x225c('0x35')],'pause':![]})[_0x225c('0x13')](function(){return db[_0x225c('0xae')]['update']({'paused':0x0},{'where':{'UserId':_0x517ab6['id']},'individualHooks':!![]});})[_0x225c('0x13')](function(){return db[_0x225c('0xef')][_0x225c('0x5e')]({'where':{'channel':_0x5d9e74[_0x225c('0x5b')]['channel'],'membername':_0x517ab6[_0x225c('0x35')],'type':_0x225c('0xf5'),'exitAt':null}});})[_0x225c('0x13')](function(_0x8f441b){if(_0x8f441b){return _0x8f441b['update']({'exitAt':moment()[_0x225c('0xac')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0x225c('0x13')](function(){return _0x517ab6[_0x225c('0x25')]({'voicePause':![]});});case _0x225c('0x4a'):case _0x225c('0x59'):case _0x225c('0x49'):case _0x225c('0x47'):case _0x225c('0x4b'):case _0x225c('0x5a'):return db[_0x225c('0xef')][_0x225c('0x5e')]({'where':{'channel':_0x5d9e74['body']['channel'],'membername':_0x517ab6[_0x225c('0x35')],'type':'PAUSE','exitAt':null}})[_0x225c('0x13')](function(_0x7aa1cd){if(_0x7aa1cd){return _0x7aa1cd['update']({'exitAt':moment()['format'](_0x225c('0xf1')),'data2':_0x225c('0x106')},{'individualHooks':!![]});}return null;})[_0x225c('0x13')](function(){var _0x540028={};_['set'](_0x540028,util[_0x225c('0xac')](_0x225c('0x107'),_0x5d9e74[_0x225c('0x5b')][_0x225c('0x9c')],'Pause'),![]);return _0x517ab6[_0x225c('0x25')](_0x540028);});default:return respondWithRpcPromise(_0x225c('0xfc'),_0x225c('0xfe'),{'id':_0x517ab6['id'],'name':_0x517ab6['name'],'pause':![]})[_0x225c('0x13')](function(){return db[_0x225c('0xae')][_0x225c('0x25')]({'paused':0x0},{'where':{'UserId':_0x517ab6['id']}});})[_0x225c('0x13')](function(){return db[_0x225c('0xef')][_0x225c('0x89')]({'where':{'membername':_0x517ab6[_0x225c('0x35')],'type':'PAUSE','exitAt':null}});})[_0x225c('0x13')](function(_0x2138ec){var _0x2c15be=[];_0x2138ec[_0x225c('0xf0')](function(_0x2f2045){_0x2c15be[_0x225c('0x43')](_0x2f2045[_0x225c('0x25')]({'exitAt':moment()[_0x225c('0xac')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':'manual'}));});return BPromise['all'](_0x2c15be);})['then'](function(){return _0x517ab6[_0x225c('0x25')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})['then'](respondWithResult(_0x22ab16,null))[_0x225c('0x1c')](handleError(_0x22ab16,null));};exports[_0x225c('0x108')]=function(_0x5166c8,_0x403943){var _0x5bf18c={};var _0x3fd4e7={};var _0x515ad3;var _0x298bf1;return db[_0x225c('0x38')]['findOne']({'where':{'id':_0x5166c8[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x403943,null))['then'](function(_0x4f412a){if(_0x4f412a){_0x515ad3=_0x4f412a;_0x3fd4e7[_0x225c('0x4f')]=_['keys'](db[_0x225c('0x109')][_0x225c('0x39')]);_0x3fd4e7[_0x225c('0x40')]=_['keys'](_0x5166c8[_0x225c('0x40')]);_0x3fd4e7[_0x225c('0x52')]=_[_0x225c('0x53')](_0x3fd4e7[_0x225c('0x4f')],_0x3fd4e7[_0x225c('0x40')]);_0x5bf18c[_0x225c('0x42')]=_[_0x225c('0x53')](_0x3fd4e7[_0x225c('0x4f')],qs[_0x225c('0x54')](_0x5166c8[_0x225c('0x40')]['fields']));_0x5bf18c[_0x225c('0x42')]=_0x5bf18c['attributes'][_0x225c('0x46')]?_0x5bf18c['attributes']:_0x3fd4e7[_0x225c('0x4f')];_0x5bf18c[_0x225c('0xca')]=qs['sort'](_0x5166c8['query'][_0x225c('0xcb')]);_0x5bf18c['where']=qs[_0x225c('0x52')](_[_0x225c('0xd2')](_0x5166c8[_0x225c('0x40')],_0x3fd4e7[_0x225c('0x52')]));if(_0x5166c8[_0x225c('0x40')][_0x225c('0x2f')]){_0x5bf18c[_0x225c('0x3f')]=_[_0x225c('0x56')](_0x5bf18c[_0x225c('0x3f')],{'$or':_[_0x225c('0x8a')](_0x5bf18c[_0x225c('0x42')],function(_0x4ba452){var _0x305cb1={};_0x305cb1[_0x4ba452]={'$like':'%'+_0x5166c8[_0x225c('0x40')]['filter']+'%'};return _0x305cb1;})});}_0x5bf18c=_['merge']({},_0x5bf18c,_0x5166c8[_0x225c('0x57')]);return _0x515ad3[_0x225c('0x108')](_0x5bf18c);}})['then'](function(_0x3bd820){if(_0x3bd820){_0x298bf1=_0x3bd820[_0x225c('0x46')];if(!_0x5166c8[_0x225c('0x40')][_0x225c('0xcc')]('nolimit')){_0x5bf18c[_0x225c('0x22')]=qs[_0x225c('0x22')](_0x5166c8[_0x225c('0x40')][_0x225c('0x22')]);_0x5bf18c['offset']=qs[_0x225c('0x20')](_0x5166c8[_0x225c('0x40')][_0x225c('0x20')]);}return _0x515ad3[_0x225c('0x108')](_0x5bf18c);}})[_0x225c('0x13')](function(_0x28dea8){if(_0x28dea8){return _0x28dea8?{'count':_0x298bf1,'rows':_0x28dea8}:null;}})[_0x225c('0x13')](respondWithResult(_0x403943,null))[_0x225c('0x1c')](handleError(_0x403943,null));};exports[_0x225c('0x10a')]=function(_0x17832b,_0x2dd32c){return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x17832b[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x2dd32c,null))[_0x225c('0x13')](function(_0x42e9ce){if(_0x42e9ce){var _0x3a855f=_0x42e9ce['get']({'plain':!![]});return _0x42e9ce[_0x225c('0x10a')](_0x17832b[_0x225c('0x5b')][_0x225c('0x5f')],_[_0x225c('0x60')](_0x17832b[_0x225c('0x5b')],[_0x225c('0x5f'),'id'])||{})[_0x225c('0x13')](function(){for(var _0x345b3c=0x0;_0x345b3c<_0x17832b[_0x225c('0x5b')][_0x225c('0x5f')][_0x225c('0x46')];_0x345b3c++){var _0x4dd776=[];db[_0x225c('0x109')]['findOne']({'where':{'id':_0x17832b['body'][_0x225c('0x5f')][_0x345b3c]}})[_0x225c('0x13')](function(_0x2290cd){_0x4dd776[_0x225c('0x43')](_0x2290cd[_0x225c('0xee')]()[_0x225c('0x13')](function(_0x503afd){for(var _0x2c8d8f=0x0;_0x2c8d8f<_0x503afd[_0x225c('0x46')];_0x2c8d8f++){_0x503afd[_0x2c8d8f][_0x225c('0x10b')](_0x225c('0x9c'),'Voice');}return _0x503afd;}));_0x4dd776[_0x225c('0x43')](_0x2290cd['getChatQueues']()['then'](function(_0x2464a7){for(var _0x15a229=0x0;_0x15a229<_0x2464a7[_0x225c('0x46')];_0x15a229++){_0x2464a7[_0x15a229][_0x225c('0x10b')]('channel',_0x225c('0x10c'));}return _0x2464a7;}));_0x4dd776[_0x225c('0x43')](_0x2290cd['getMailQueues']()['then'](function(_0x281557){for(var _0x1a4ba9=0x0;_0x1a4ba9<_0x281557['length'];_0x1a4ba9++){_0x281557[_0x1a4ba9][_0x225c('0x10b')](_0x225c('0x9c'),_0x225c('0x10d'));}return _0x281557;}));_0x4dd776[_0x225c('0x43')](_0x2290cd[_0x225c('0x10e')]()['then'](function(_0x14abb4){for(var _0x7a51d3=0x0;_0x7a51d3<_0x14abb4[_0x225c('0x46')];_0x7a51d3++){_0x14abb4[_0x7a51d3]['setDataValue'](_0x225c('0x9c'),'Sms');}return _0x14abb4;}));_0x4dd776[_0x225c('0x43')](_0x2290cd[_0x225c('0x10f')]()['then'](function(_0x30eff3){for(var _0xe0a45=0x0;_0xe0a45<_0x30eff3[_0x225c('0x46')];_0xe0a45++){_0x30eff3[_0xe0a45][_0x225c('0x10b')]('channel',_0x225c('0x110'));}return _0x30eff3;}));_0x4dd776['push'](_0x2290cd[_0x225c('0x111')]()[_0x225c('0x13')](function(_0x272a49){for(var _0x3f3769=0x0;_0x3f3769<_0x272a49['length'];_0x3f3769++){_0x272a49[_0x3f3769][_0x225c('0x10b')](_0x225c('0x9c'),'Fax');}return _0x272a49;}));_0x4dd776[_0x225c('0x43')](_0x2290cd[_0x225c('0x112')]()[_0x225c('0x13')](function(_0x293825){for(var _0x4f28b7=0x0;_0x4f28b7<_0x293825[_0x225c('0x46')];_0x4f28b7++){_0x293825[_0x4f28b7]['setDataValue'](_0x225c('0x9c'),'Openchannel');}return _0x293825;}));return BPromise[_0x225c('0x4c')](_0x4dd776);})['then'](function(_0x27bc5){var _0x351d76=_[_0x225c('0x113')](_0x27bc5);_0x4dd776=[];return db[_0x225c('0x68')][_0x225c('0x114')](function(_0x8d91f4){for(var _0x4a0fc8=0x0;_0x4a0fc8<_0x351d76[_0x225c('0x46')];_0x4a0fc8++){_0x4dd776[_0x225c('0x43')](_0x351d76[_0x4a0fc8][_0x225c('0x115')](_0x3a855f['id']),{'transaction':_0x8d91f4});}return BPromise[_0x225c('0x4c')](_0x4dd776)[_0x225c('0x13')](function(){if(_0x3a855f[_0x225c('0x9d')]){return BPromise[_0x225c('0x88')](_['filter'](_0x351d76,function(_0x2e7382){return _0x2e7382[_0x225c('0x116')](_0x225c('0x9c'))==='Voice';}),function(_0x145845){return db[_0x225c('0xae')][_0x225c('0x117')]({'membername':_0x3a855f[_0x225c('0x35')],'UserId':_0x3a855f['id'],'queue_name':_0x145845[_0x225c('0x35')],'VoiceQueueId':_0x145845['id'],'interface':_[_0x225c('0x64')](_0x3a855f['interface'])?util[_0x225c('0xac')](_0x225c('0xad'),_0x3a855f[_0x225c('0x35')]):_0x3a855f[_0x225c('0xa0')],'paused':_0x3a855f['voicePause']||![],'penalty':_0x3a855f['penalty']},{'transaction':_0x8d91f4});});}else{return;}})['then'](function(){for(var _0xff89ff=0x0;_0xff89ff<_0x351d76[_0x225c('0x46')];_0xff89ff++){var _0xccfdd8=_0x351d76[_0xff89ff]['getDataValue'](_0x225c('0x9c'));var _0x255dc2=_0xccfdd8+_0x225c('0xa8');socket['emit'](_0x225c('0x2a')+_0xccfdd8+_0x225c('0x118'),{'UserId':_0x3a855f['id'],['queueField']:_0x351d76[_0xff89ff]['id']});}});});});}});}})[_0x225c('0x13')](respondWithStatusCode(_0x2dd32c,null))[_0x225c('0x1c')](handleError(_0x2dd32c,null));};exports[_0x225c('0x119')]=function(_0xdab162,_0x2d222f){return db[_0x225c('0x38')]['findOne']({'where':{'id':_0xdab162['params']['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x2d222f,null))[_0x225c('0x13')](function(_0x1ad3dc){if(_0x1ad3dc){var _0x5a7c5e=_0x1ad3dc[_0x225c('0x26')]({'plain':!![]});var _0x50cac7=_0xdab162[_0x225c('0x40')]['ids'];return _0x1ad3dc[_0x225c('0x119')](_0x50cac7)[_0x225c('0x13')](function(){for(var _0x410691=0x0;_0x410691<_0x50cac7[_0x225c('0x46')];_0x410691++){var _0x20d4da=[];db[_0x225c('0x109')]['findOne']({'where':{'id':_0x50cac7[_0x410691]}})[_0x225c('0x13')](function(_0x3de463){_0x20d4da[_0x225c('0x43')](_0x3de463[_0x225c('0xee')]()[_0x225c('0x13')](function(_0x3a43b0){for(var _0x337b48=0x0;_0x337b48<_0x3a43b0['length'];_0x337b48++){_0x3a43b0[_0x337b48]['setDataValue']('channel',_0x225c('0x11a'));}return _0x3a43b0;}));_0x20d4da[_0x225c('0x43')](_0x3de463[_0x225c('0x11b')]()[_0x225c('0x13')](function(_0x3bb4b5){for(var _0x22db21=0x0;_0x22db21<_0x3bb4b5[_0x225c('0x46')];_0x22db21++){_0x3bb4b5[_0x22db21][_0x225c('0x10b')]('channel','Chat');}return _0x3bb4b5;}));_0x20d4da[_0x225c('0x43')](_0x3de463['getMailQueues']()['then'](function(_0x3f4197){for(var _0x5631d6=0x0;_0x5631d6<_0x3f4197[_0x225c('0x46')];_0x5631d6++){_0x3f4197[_0x5631d6][_0x225c('0x10b')](_0x225c('0x9c'),'Mail');}return _0x3f4197;}));_0x20d4da[_0x225c('0x43')](_0x3de463['getSmsQueues']()[_0x225c('0x13')](function(_0x4f6bc9){for(var _0x484cf5=0x0;_0x484cf5<_0x4f6bc9['length'];_0x484cf5++){_0x4f6bc9[_0x484cf5]['setDataValue']('channel','Sms');}return _0x4f6bc9;}));_0x20d4da[_0x225c('0x43')](_0x3de463[_0x225c('0x10f')]()[_0x225c('0x13')](function(_0x3474ca){for(var _0x2cedb6=0x0;_0x2cedb6<_0x3474ca[_0x225c('0x46')];_0x2cedb6++){_0x3474ca[_0x2cedb6][_0x225c('0x10b')](_0x225c('0x9c'),_0x225c('0x110'));}return _0x3474ca;}));_0x20d4da[_0x225c('0x43')](_0x3de463['getFaxQueues']()[_0x225c('0x13')](function(_0x46ba1f){for(var _0x52e795=0x0;_0x52e795<_0x46ba1f[_0x225c('0x46')];_0x52e795++){_0x46ba1f[_0x52e795][_0x225c('0x10b')](_0x225c('0x9c'),_0x225c('0x11c'));}return _0x46ba1f;}));_0x20d4da[_0x225c('0x43')](_0x3de463[_0x225c('0x112')]()[_0x225c('0x13')](function(_0x46479e){for(var _0x46ae18=0x0;_0x46ae18<_0x46479e['length'];_0x46ae18++){_0x46479e[_0x46ae18][_0x225c('0x10b')](_0x225c('0x9c'),_0x225c('0x11d'));}return _0x46479e;}));return BPromise['all'](_0x20d4da);})[_0x225c('0x13')](function(_0x276c6c){var _0xba4801=_[_0x225c('0x113')](_0x276c6c);_0x20d4da=[];return db[_0x225c('0x68')][_0x225c('0x114')](function(_0x46cefd){for(var _0x461496=0x0;_0x461496<_0xba4801[_0x225c('0x46')];_0x461496++){_0x20d4da[_0x225c('0x43')](_0xba4801[_0x461496]['removeAgent'](_0x5a7c5e['id']),{'transaction':_0x46cefd});}return BPromise['all'](_0x20d4da)[_0x225c('0x13')](function(){if(_0x5a7c5e['online']){return BPromise[_0x225c('0x88')](_['filter'](_0xba4801,function(_0x547ded){return _0x547ded[_0x225c('0x116')]('channel')===_0x225c('0x11a');}),function(_0x1bea91){return db[_0x225c('0xae')][_0x225c('0x33')]({'where':{'VoiceQueueId':_0x1bea91['id'],'UserId':_0x5a7c5e['id']},'transaction':_0x46cefd});});}else{return;}})['then'](function(){for(var _0x9fe5b3=0x0;_0x9fe5b3<_0xba4801[_0x225c('0x46')];_0x9fe5b3++){var _0x330165=_0xba4801[_0x9fe5b3][_0x225c('0x116')](_0x225c('0x9c'));var _0x33a41a=_0x330165+_0x225c('0xa8');socket[_0x225c('0xa9')]('user'+_0x330165+_0x225c('0xb1'),{'UserId':_0x5a7c5e['id'],['queueField']:_0xba4801[_0x9fe5b3]['id']});}});});});}});}})[_0x225c('0x13')](respondWithStatusCode(_0x2d222f,null))[_0x225c('0x1c')](handleError(_0x2d222f,null));};exports[_0x225c('0x11e')]=function(_0x1405f7,_0x3c4b33){var _0x100004={};var _0x213364={};var _0x599161;var _0xe4422e;return db[_0x225c('0x38')][_0x225c('0x96')]({'where':{'id':_0x1405f7[_0x225c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3c4b33,null))[_0x225c('0x13')](function(_0x11aab1){if(_0x11aab1){_0x599161=_0x11aab1;_0x213364[_0x225c('0x4f')]=_[_0x225c('0xc8')](db[_0x225c('0xcd')][_0x225c('0x39')]);_0x213364[_0x225c('0x40')]=_[_0x225c('0xc8')](_0x1405f7[_0x225c('0x40')]);_0x213364['filters']=_[_0x225c('0x53')](_0x213364[_0x225c('0x4f')],_0x213364['query']);_0x100004['attributes']=_[_0x225c('0x53')](_0x213364[_0x225c('0x4f')],qs[_0x225c('0x54')](_0x1405f7[_0x225c('0x40')]['fields']));_0x100004['attributes']=_0x100004[_0x225c('0x42')][_0x225c('0x46')]?_0x100004['attributes']:_0x213364['model'];_0x100004[_0x225c('0xca')]=qs[_0x225c('0xcb')](_0x1405f7[_0x225c('0x40')][_0x225c('0xcb')]);_0x100004[_0x225c('0x3f')]=qs[_0x225c('0x52')](_[_0x225c('0xd2')](_0x1405f7[_0x225c('0x40')],_0x213364[_0x225c('0x52')]));if(_0x1405f7[_0x225c('0x40')][_0x225c('0x2f')]){_0x100004[_0x225c('0x3f')]=_[_0x225c('0x56')](_0x100004[_0x225c('0x3f')],{'$or':_[_0x225c('0x8a')](_0x100004['attributes'],function(_0x18b796){var _0x5e35f0={};_0x5e35f0[_0x18b796]={'$like':'%'+_0x1405f7[_0x225c('0x40')][_0x225c('0x2f')]+'%'};return _0x5e35f0;})});}_0x100004=_[_0x225c('0x56')]({},_0x100004,_0x1405f7[_0x225c('0x57')]);return _0x599161[_0x225c('0x11e')](_0x100004);}})[_0x225c('0x13')](function(_0x2b0dd0){if(_0x2b0dd0){_0xe4422e=_0x2b0dd0[_0x225c('0x46')];if(!_0x1405f7[_0x225c('0x40')][_0x225c('0xcc')](_0x225c('0xd0'))){_0x100004[_0x225c('0x22')]=qs['limit'](_0x1405f7[_0x225c('0x40')][_0x225c('0x22')]);_0x100004[_0x225c('0x20')]=qs['offset'](_0x1405f7[_0x225c('0x40')][_0x225c('0x20')]);}return _0x599161[_0x225c('0x11e')](_0x100004);}})[_0x225c('0x13')](function(_0x5b3cd3){if(_0x5b3cd3){return _0x5b3cd3?{'count':_0xe4422e,'rows':_0x5b3cd3}:null;}})[_0x225c('0x13')](respondWithResult(_0x3c4b33,null))['catch'](handleError(_0x3c4b33,null));};exports[_0x225c('0x11f')]=function(_0x564c82,_0x4ac7f6){var _0x154288={};var _0x1ca777={};var _0x5cff93;var _0x3328dc;return db[_0x225c('0x38')][_0x225c('0x96')]({'where':{'id':_0x564c82['params']['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x4ac7f6,null))[_0x225c('0x13')](function(_0x490b0f){if(_0x490b0f){_0x5cff93=_0x490b0f;_0x1ca777[_0x225c('0x4f')]=_[_0x225c('0xc8')](db[_0x225c('0x38')][_0x225c('0x39')]);_0x1ca777[_0x225c('0x40')]=_[_0x225c('0xc8')](_0x564c82[_0x225c('0x40')]);_0x1ca777['filters']=_[_0x225c('0x53')](_0x1ca777['model'],_0x1ca777[_0x225c('0x40')]);_0x154288[_0x225c('0x42')]=_[_0x225c('0x53')](_0x1ca777[_0x225c('0x4f')],qs[_0x225c('0x54')](_0x564c82[_0x225c('0x40')][_0x225c('0x54')]));_0x154288[_0x225c('0x42')]=_0x154288[_0x225c('0x42')][_0x225c('0x46')]?_0x154288['attributes']:_0x1ca777[_0x225c('0x4f')];_0x154288['order']=qs[_0x225c('0xcb')](_0x564c82[_0x225c('0x40')][_0x225c('0xcb')]);_0x154288['where']=qs[_0x225c('0x52')](_[_0x225c('0xd2')](_0x564c82[_0x225c('0x40')],_0x1ca777[_0x225c('0x52')]));if(_0x564c82[_0x225c('0x40')][_0x225c('0x2f')]){_0x154288[_0x225c('0x3f')]=_[_0x225c('0x56')](_0x154288[_0x225c('0x3f')],{'$or':_[_0x225c('0x8a')](_0x154288[_0x225c('0x42')],function(_0x22ba00){var _0x5e8c8f={};_0x5e8c8f[_0x22ba00]={'$like':'%'+_0x564c82['query']['filter']+'%'};return _0x5e8c8f;})});}_0x154288[_0x225c('0x4f')]=db[_0x225c('0x38')];_0x154288['as']=_0x225c('0x2b');_0x154288=_[_0x225c('0x56')]({},_0x154288,_0x564c82[_0x225c('0x57')]);return _0x5cff93[_0x225c('0xee')]({'include':[_0x154288]});}})[_0x225c('0x13')](function(_0x230f05){if(_0x230f05){var _0x39cca8={},_0x1cc02d=[],_0x5bc43a=0x0;for(var _0x198c89=0x0;_0x198c89<_0x230f05[_0x225c('0x46')];_0x198c89+=0x1){for(var _0x13c913=0x0,_0x41269f;_0x13c913<_0x230f05[_0x198c89][_0x225c('0x2b')][_0x225c('0x46')];_0x13c913+=0x1){_0x41269f=_0x230f05[_0x198c89][_0x225c('0x2b')][_0x13c913][_0x225c('0x26')]({'plain':!![]});_0x39cca8[_0x41269f['id']]=_0x41269f;}}_0x39cca8=_[_0x225c('0x120')](_0x39cca8);for(var _0x1047b6=qs[_0x225c('0x20')](_0x564c82[_0x225c('0x40')]['offset']);_0x1047b6<_0x39cca8['length']&&_0x1cc02d[_0x225c('0x46')]<qs[_0x225c('0x22')](_0x564c82[_0x225c('0x40')][_0x225c('0x22')]);_0x1047b6+=0x1){if(_0x39cca8[_0x1047b6]){_0x1cc02d['push'](_0x39cca8[_0x1047b6]);}}return{'count':_0x39cca8[_0x225c('0x46')],'rows':_0x1cc02d};}})[_0x225c('0x13')](respondWithResult(_0x4ac7f6,null))['catch'](handleError(_0x4ac7f6,null));};exports[_0x225c('0x33')]=function(_0x5c21d1,_0xb9436c){if(_0x5c21d1[_0x225c('0x2a')]['id']==_0x5c21d1[_0x225c('0x4e')]['id']){return _0xb9436c[_0x225c('0x24')](0x1f4)[_0x225c('0x36')]({'message':_0x225c('0x121')});}return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x5c21d1[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0xb9436c,null))[_0x225c('0x13')](removeEntity(_0xb9436c,null))['catch'](handleError(_0xb9436c,null));};exports[_0x225c('0x122')]=function(_0x49cc1d,_0x5adb5f){return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x49cc1d[_0x225c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x5adb5f,null))['then'](function(_0x1e6b69){if(_0x1e6b69){return _0x1e6b69['addChatInteractions'](_0x49cc1d[_0x225c('0x5b')][_0x225c('0x5f')],_[_0x225c('0x60')](_0x49cc1d['body'],[_0x225c('0x5f'),'id'])||{})[_0x225c('0xa7')](function(){for(var _0x556ffd=0x0;_0x556ffd<_0x49cc1d['body'][_0x225c('0x5f')][_0x225c('0x46')];_0x556ffd+=0x1){socket[_0x225c('0xa9')](_0x225c('0x123'),{'ChatInteractionId':Number(_0x49cc1d['body'][_0x225c('0x5f')][_0x556ffd]),'UserId':Number(_0x49cc1d[_0x225c('0x4e')]['id'])});}return _0x49cc1d[_0x225c('0x5b')][_0x225c('0x5f')];});}})[_0x225c('0x13')](respondWithResult(_0x5adb5f,null))[_0x225c('0x1c')](handleError(_0x5adb5f,null));};exports[_0x225c('0x124')]=function(_0x2fe1b0,_0x3220d7){return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x2fe1b0['params']['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x3220d7,null))[_0x225c('0x13')](function(_0x4bcf58){if(_0x4bcf58){return _0x4bcf58[_0x225c('0x124')](_0x2fe1b0[_0x225c('0x40')]['ids'])[_0x225c('0x13')](function(){if(_[_0x225c('0x125')](_0x2fe1b0[_0x225c('0x40')][_0x225c('0x5f')])){for(var _0x111249=0x0;_0x111249<_0x2fe1b0['query']['ids'][_0x225c('0x46')];_0x111249+=0x1){socket[_0x225c('0xa9')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x2fe1b0[_0x225c('0x40')][_0x225c('0x5f')][_0x111249]),'UserId':Number(_0x2fe1b0[_0x225c('0x4e')]['id'])});}}else{socket[_0x225c('0xa9')](_0x225c('0x126'),{'ChatInteractionId':Number(_0x2fe1b0[_0x225c('0x40')]['ids']),'UserId':Number(_0x2fe1b0[_0x225c('0x4e')]['id'])});}});}})[_0x225c('0x13')](respondWithStatusCode(_0x3220d7,null))[_0x225c('0x1c')](handleError(_0x3220d7,null));};exports[_0x225c('0x127')]=function(_0x410018,_0x243401){return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x410018[_0x225c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x243401,null))['then'](function(_0x5eca7d){if(_0x5eca7d){return _0x5eca7d[_0x225c('0x127')](_0x410018['body'][_0x225c('0x5f')],_[_0x225c('0x60')](_0x410018[_0x225c('0x5b')],[_0x225c('0x5f'),'id'])||{})[_0x225c('0xa7')](function(){for(var _0x4f8b7e=0x0;_0x4f8b7e<_0x410018[_0x225c('0x5b')][_0x225c('0x5f')]['length'];_0x4f8b7e+=0x1){socket[_0x225c('0xa9')](_0x225c('0x128'),{'MailInteractionId':Number(_0x410018[_0x225c('0x5b')][_0x225c('0x5f')][_0x4f8b7e]),'UserId':Number(_0x410018[_0x225c('0x4e')]['id'])});}return _0x410018[_0x225c('0x5b')][_0x225c('0x5f')];});}})[_0x225c('0x13')](respondWithResult(_0x243401,null))[_0x225c('0x1c')](handleError(_0x243401,null));};exports[_0x225c('0x129')]=function(_0x5bfa4f,_0x2033a2){return db['User']['find']({'where':{'id':_0x5bfa4f['params']['id']}})['then'](handleEntityNotFound(_0x2033a2,null))[_0x225c('0x13')](function(_0x535a58){if(_0x535a58){return _0x535a58[_0x225c('0x129')](_0x5bfa4f[_0x225c('0x40')]['ids'])['then'](function(){if(_[_0x225c('0x125')](_0x5bfa4f[_0x225c('0x40')][_0x225c('0x5f')])){for(var _0x51debb=0x0;_0x51debb<_0x5bfa4f[_0x225c('0x40')][_0x225c('0x5f')][_0x225c('0x46')];_0x51debb+=0x1){socket['emit'](_0x225c('0x12a'),{'MailInteractionId':Number(_0x5bfa4f[_0x225c('0x40')][_0x225c('0x5f')][_0x51debb]),'UserId':Number(_0x5bfa4f[_0x225c('0x4e')]['id'])});}}else{socket[_0x225c('0xa9')](_0x225c('0x12a'),{'MailInteractionId':Number(_0x5bfa4f[_0x225c('0x40')][_0x225c('0x5f')]),'UserId':Number(_0x5bfa4f['params']['id'])});}});}})[_0x225c('0x13')](respondWithStatusCode(_0x2033a2,null))[_0x225c('0x1c')](handleError(_0x2033a2,null));};exports[_0x225c('0x12b')]=function(_0x318c2e,_0x4bcc1f){return db['User'][_0x225c('0x5e')]({'where':{'id':_0x318c2e['params']['id']}})['then'](handleEntityNotFound(_0x4bcc1f,null))['then'](function(_0x594dd0){if(_0x594dd0){return _0x594dd0[_0x225c('0x12b')](_0x318c2e[_0x225c('0x5b')][_0x225c('0x5f')],_[_0x225c('0x60')](_0x318c2e[_0x225c('0x5b')],[_0x225c('0x5f'),'id'])||{})[_0x225c('0xa7')](function(){for(var _0x400bba=0x0;_0x400bba<_0x318c2e[_0x225c('0x5b')][_0x225c('0x5f')][_0x225c('0x46')];_0x400bba+=0x1){socket[_0x225c('0xa9')](_0x225c('0x12c'),{'FaxInteractionId':Number(_0x318c2e[_0x225c('0x5b')][_0x225c('0x5f')][_0x400bba]),'UserId':Number(_0x318c2e[_0x225c('0x4e')]['id'])});}return _0x318c2e[_0x225c('0x5b')][_0x225c('0x5f')];});}})[_0x225c('0x13')](respondWithResult(_0x4bcc1f,null))[_0x225c('0x1c')](handleError(_0x4bcc1f,null));};exports[_0x225c('0x12d')]=function(_0x2acc0b,_0x527caa){return db['User']['find']({'where':{'id':_0x2acc0b[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x527caa,null))[_0x225c('0x13')](function(_0x47e210){if(_0x47e210){return _0x47e210[_0x225c('0x12d')](_0x2acc0b[_0x225c('0x40')]['ids'])[_0x225c('0x13')](function(){if(_[_0x225c('0x125')](_0x2acc0b['query'][_0x225c('0x5f')])){for(var _0x2c3c00=0x0;_0x2c3c00<_0x2acc0b[_0x225c('0x40')][_0x225c('0x5f')][_0x225c('0x46')];_0x2c3c00+=0x1){socket[_0x225c('0xa9')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x2acc0b[_0x225c('0x40')][_0x225c('0x5f')][_0x2c3c00]),'UserId':Number(_0x2acc0b[_0x225c('0x4e')]['id'])});}}else{socket['emit'](_0x225c('0x12e'),{'FaxInteractionId':Number(_0x2acc0b[_0x225c('0x40')][_0x225c('0x5f')]),'UserId':Number(_0x2acc0b[_0x225c('0x4e')]['id'])});}});}})[_0x225c('0x13')](respondWithStatusCode(_0x527caa,null))[_0x225c('0x1c')](handleError(_0x527caa,null));};exports[_0x225c('0x12f')]=function(_0x4c164e,_0xdfda6c){return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x4c164e[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0xdfda6c,null))[_0x225c('0x13')](function(_0x168619){if(_0x168619){return _0x168619['addSmsInteractions'](_0x4c164e['body'][_0x225c('0x5f')],_['omit'](_0x4c164e[_0x225c('0x5b')],[_0x225c('0x5f'),'id'])||{})['spread'](function(){for(var _0x233e14=0x0;_0x233e14<_0x4c164e['body'][_0x225c('0x5f')][_0x225c('0x46')];_0x233e14+=0x1){socket[_0x225c('0xa9')](_0x225c('0x130'),{'SmsInteractionId':Number(_0x4c164e[_0x225c('0x5b')][_0x225c('0x5f')][_0x233e14]),'UserId':Number(_0x4c164e['params']['id'])});}return _0x4c164e[_0x225c('0x5b')]['ids'];});}})['then'](respondWithResult(_0xdfda6c,null))[_0x225c('0x1c')](handleError(_0xdfda6c,null));};exports['removeSmsInteractions']=function(_0x254531,_0x3c63aa){return db[_0x225c('0x38')]['find']({'where':{'id':_0x254531[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x3c63aa,null))[_0x225c('0x13')](function(_0xdb32a){if(_0xdb32a){return _0xdb32a[_0x225c('0x131')](_0x254531[_0x225c('0x40')][_0x225c('0x5f')])[_0x225c('0x13')](function(){if(_[_0x225c('0x125')](_0x254531[_0x225c('0x40')][_0x225c('0x5f')])){for(var _0x4dd4b2=0x0;_0x4dd4b2<_0x254531['query'][_0x225c('0x5f')][_0x225c('0x46')];_0x4dd4b2+=0x1){socket['emit']('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x254531[_0x225c('0x40')][_0x225c('0x5f')][_0x4dd4b2]),'UserId':Number(_0x254531['params']['id'])});}}else{socket[_0x225c('0xa9')](_0x225c('0x132'),{'SmsInteractionId':Number(_0x254531[_0x225c('0x40')]['ids']),'UserId':Number(_0x254531['params']['id'])});}});}})[_0x225c('0x13')](respondWithStatusCode(_0x3c63aa,null))['catch'](handleError(_0x3c63aa,null));};exports['addOpenchannelInteractions']=function(_0x5a1dff,_0x47d46e){return db[_0x225c('0x38')]['find']({'where':{'id':_0x5a1dff['params']['id']}})['then'](handleEntityNotFound(_0x47d46e,null))[_0x225c('0x13')](function(_0x2d917a){if(_0x2d917a){return _0x2d917a[_0x225c('0x133')](_0x5a1dff[_0x225c('0x5b')][_0x225c('0x5f')],_[_0x225c('0x60')](_0x5a1dff[_0x225c('0x5b')],[_0x225c('0x5f'),'id'])||{})['spread'](function(){for(var _0x391823=0x0;_0x391823<_0x5a1dff[_0x225c('0x5b')][_0x225c('0x5f')]['length'];_0x391823+=0x1){socket['emit']('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x5a1dff[_0x225c('0x5b')][_0x225c('0x5f')][_0x391823]),'UserId':Number(_0x5a1dff[_0x225c('0x4e')]['id'])});}return _0x5a1dff[_0x225c('0x5b')][_0x225c('0x5f')];});}})['then'](respondWithResult(_0x47d46e,null))[_0x225c('0x1c')](handleError(_0x47d46e,null));};exports[_0x225c('0x134')]=function(_0x180172,_0x48d22e){return db['User'][_0x225c('0x5e')]({'where':{'id':_0x180172[_0x225c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x48d22e,null))[_0x225c('0x13')](function(_0x5a3159){if(_0x5a3159){return _0x5a3159[_0x225c('0x134')](_0x180172[_0x225c('0x40')][_0x225c('0x5f')])['then'](function(){if(_[_0x225c('0x125')](_0x180172[_0x225c('0x40')][_0x225c('0x5f')])){for(var _0x4370cb=0x0;_0x4370cb<_0x180172[_0x225c('0x40')][_0x225c('0x5f')][_0x225c('0x46')];_0x4370cb+=0x1){socket[_0x225c('0xa9')](_0x225c('0x135'),{'OpenchannelInteractionId':Number(_0x180172['query'][_0x225c('0x5f')][_0x4370cb]),'UserId':Number(_0x180172[_0x225c('0x4e')]['id'])});}}else{socket[_0x225c('0xa9')](_0x225c('0x135'),{'OpenchannelInteractionId':Number(_0x180172[_0x225c('0x40')][_0x225c('0x5f')]),'UserId':Number(_0x180172[_0x225c('0x4e')]['id'])});}});}})[_0x225c('0x13')](respondWithStatusCode(_0x48d22e,null))[_0x225c('0x1c')](handleError(_0x48d22e,null));};exports[_0x225c('0x136')]=function(_0x35969a,_0x109966){return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x35969a[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x109966,null))['then'](function(_0x258095){if(_0x258095){return _0x258095[_0x225c('0x136')](_0x35969a[_0x225c('0x5b')]['ids'],_[_0x225c('0x60')](_0x35969a[_0x225c('0x5b')],[_0x225c('0x5f'),'id'])||{})['spread'](function(){for(var _0x5b0aab=0x0;_0x5b0aab<_0x35969a[_0x225c('0x5b')][_0x225c('0x5f')]['length'];_0x5b0aab+=0x1){socket['emit'](_0x225c('0x137'),{'WhatsappInteractionId':Number(_0x35969a[_0x225c('0x5b')][_0x225c('0x5f')][_0x5b0aab]),'UserId':Number(_0x35969a['params']['id'])});}return _0x35969a['body'][_0x225c('0x5f')];});}})[_0x225c('0x13')](respondWithResult(_0x109966,null))[_0x225c('0x1c')](handleError(_0x109966,null));};exports[_0x225c('0x138')]=function(_0x5e1556,_0x1cc41a){return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x5e1556[_0x225c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x1cc41a,null))['then'](function(_0x4832b1){if(_0x4832b1){return _0x4832b1[_0x225c('0x138')](_0x5e1556[_0x225c('0x40')]['ids']);}})[_0x225c('0x13')](respondWithStatusCode(_0x1cc41a,null))['catch'](handleError(_0x1cc41a,null));};exports[_0x225c('0x139')]=function(_0x13f892,_0x29d01b){var _0x406f90={};var _0x2e5ae1={};var _0x2dc2db;var _0x47b7e4;return db[_0x225c('0x38')][_0x225c('0x96')]({'where':{'id':_0x13f892[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x29d01b,null))['then'](function(_0x3b8ea4){if(_0x3b8ea4){_0x2dc2db=_0x3b8ea4;_0x2e5ae1[_0x225c('0x4f')]=_[_0x225c('0xc8')](db['VoicePrefix']['rawAttributes']);_0x2e5ae1[_0x225c('0x40')]=_[_0x225c('0xc8')](_0x13f892[_0x225c('0x40')]);_0x2e5ae1[_0x225c('0x52')]=_[_0x225c('0x53')](_0x2e5ae1[_0x225c('0x4f')],_0x2e5ae1['query']);_0x406f90[_0x225c('0x42')]=_[_0x225c('0x53')](_0x2e5ae1[_0x225c('0x4f')],qs['fields'](_0x13f892[_0x225c('0x40')][_0x225c('0x54')]));_0x406f90['attributes']=_0x406f90[_0x225c('0x42')][_0x225c('0x46')]?_0x406f90[_0x225c('0x42')]:_0x2e5ae1['model'];_0x406f90[_0x225c('0xca')]=qs['sort'](_0x13f892['query'][_0x225c('0xcb')]);_0x406f90['where']=qs[_0x225c('0x52')](_[_0x225c('0xd2')](_0x13f892[_0x225c('0x40')],_0x2e5ae1[_0x225c('0x52')]));if(_0x13f892['query'][_0x225c('0x2f')]){_0x406f90[_0x225c('0x3f')]=_[_0x225c('0x56')](_0x406f90[_0x225c('0x3f')],{'$or':_[_0x225c('0x8a')](_0x406f90['attributes'],function(_0x2be706){var _0x1ae5af={};_0x1ae5af[_0x2be706]={'$like':'%'+_0x13f892[_0x225c('0x40')]['filter']+'%'};return _0x1ae5af;})});}_0x406f90=_[_0x225c('0x56')]({},_0x406f90,_0x13f892['options']);return _0x2dc2db[_0x225c('0x139')](_0x406f90);}})['then'](function(_0x554126){if(_0x554126){_0x47b7e4=_0x554126[_0x225c('0x46')];if(!_0x13f892[_0x225c('0x40')]['hasOwnProperty'](_0x225c('0xd0'))){_0x406f90[_0x225c('0x22')]=qs[_0x225c('0x22')](_0x13f892[_0x225c('0x40')][_0x225c('0x22')]);_0x406f90['offset']=qs['offset'](_0x13f892[_0x225c('0x40')][_0x225c('0x20')]);}return _0x2dc2db[_0x225c('0x139')](_0x406f90);}})['then'](function(_0x5a6d13){if(_0x5a6d13){return _0x5a6d13?{'count':_0x47b7e4,'rows':_0x5a6d13}:null;}})[_0x225c('0x13')](respondWithResult(_0x29d01b,null))['catch'](handleError(_0x29d01b,null));};exports[_0x225c('0x13a')]=function(_0xb1a24e,_0xf18fe4){var _0x396cae={};var _0x3277e0={};var _0x198057;var _0x5ed17c;return db[_0x225c('0x38')][_0x225c('0x96')]({'where':{'id':_0xb1a24e[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0xf18fe4,null))[_0x225c('0x13')](function(_0x117504){if(_0x117504){_0x198057=_0x117504;_0x3277e0[_0x225c('0x4f')]=_[_0x225c('0xc8')](db['FaxAccount']['rawAttributes']);_0x3277e0['query']=_['keys'](_0xb1a24e['query']);_0x3277e0[_0x225c('0x52')]=_[_0x225c('0x53')](_0x3277e0[_0x225c('0x4f')],_0x3277e0[_0x225c('0x40')]);_0x396cae[_0x225c('0x42')]=_[_0x225c('0x53')](_0x3277e0[_0x225c('0x4f')],qs[_0x225c('0x54')](_0xb1a24e[_0x225c('0x40')]['fields']));_0x396cae[_0x225c('0x42')]=_0x396cae[_0x225c('0x42')][_0x225c('0x46')]?_0x396cae[_0x225c('0x42')]:_0x3277e0[_0x225c('0x4f')];_0x396cae[_0x225c('0xca')]=qs['sort'](_0xb1a24e[_0x225c('0x40')][_0x225c('0xcb')]);_0x396cae['where']=qs[_0x225c('0x52')](_[_0x225c('0xd2')](_0xb1a24e[_0x225c('0x40')],_0x3277e0[_0x225c('0x52')]));if(_0xb1a24e[_0x225c('0x40')][_0x225c('0x2f')]){_0x396cae['where']=_['merge'](_0x396cae[_0x225c('0x3f')],{'$or':_[_0x225c('0x8a')](_0x396cae[_0x225c('0x42')],function(_0x46ac69){var _0x33109f={};_0x33109f[_0x46ac69]={'$like':'%'+_0xb1a24e[_0x225c('0x40')][_0x225c('0x2f')]+'%'};return _0x33109f;})});}_0x396cae=_[_0x225c('0x56')]({},_0x396cae,_0xb1a24e[_0x225c('0x57')]);return _0x198057[_0x225c('0x13a')](_0x396cae);}})['then'](function(_0x4e6b1c){if(_0x4e6b1c){_0x5ed17c=_0x4e6b1c[_0x225c('0x46')];if(!_0xb1a24e[_0x225c('0x40')]['hasOwnProperty'](_0x225c('0xd0'))){_0x396cae[_0x225c('0x22')]=qs[_0x225c('0x22')](_0xb1a24e['query'][_0x225c('0x22')]);_0x396cae[_0x225c('0x20')]=qs[_0x225c('0x20')](_0xb1a24e[_0x225c('0x40')]['offset']);}return _0x198057[_0x225c('0x13a')](_0x396cae);}})[_0x225c('0x13')](function(_0x3f95b1){if(_0x3f95b1){return _0x3f95b1?{'count':_0x5ed17c,'rows':_0x3f95b1}:null;}})[_0x225c('0x13')](respondWithResult(_0xf18fe4,null))[_0x225c('0x1c')](handleError(_0xf18fe4,null));};exports[_0x225c('0x13b')]=function(_0x2cc578,_0x4c04e5){return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x2cc578[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x4c04e5,null))[_0x225c('0x13')](function(_0x293e23){if(_0x293e23){return _0x293e23['addFaxAccounts'](_0x2cc578[_0x225c('0x5b')][_0x225c('0x5f')],_['omit'](_0x2cc578[_0x225c('0x5b')],[_0x225c('0x5f'),'id'])||{});}})[_0x225c('0x13')](respondWithResult(_0x4c04e5,null))[_0x225c('0x1c')](handleError(_0x4c04e5,null));};exports[_0x225c('0x13c')]=function(_0x4bf269,_0x3a3a59){return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x4bf269[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x3a3a59,null))[_0x225c('0x13')](function(_0x5aa79f){if(_0x5aa79f){return _0x5aa79f['removeFaxAccounts'](_0x4bf269[_0x225c('0x40')][_0x225c('0x5f')]);}})['then'](respondWithStatusCode(_0x3a3a59,null))['catch'](handleError(_0x3a3a59,null));};exports['getMailAccounts']=function(_0x5dbaae,_0x4ff6e6){var _0x115889={};var _0x24cf91={};var _0x3807f0;var _0x4f183f;return db['User'][_0x225c('0x96')]({'where':{'id':_0x5dbaae[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x4ff6e6,null))[_0x225c('0x13')](function(_0x215c77){if(_0x215c77){_0x3807f0=_0x215c77;_0x24cf91[_0x225c('0x4f')]=_[_0x225c('0xc8')](db[_0x225c('0x13d')][_0x225c('0x39')]);_0x24cf91[_0x225c('0x40')]=_[_0x225c('0xc8')](_0x5dbaae[_0x225c('0x40')]);_0x24cf91[_0x225c('0x52')]=_[_0x225c('0x53')](_0x24cf91[_0x225c('0x4f')],_0x24cf91['query']);_0x115889[_0x225c('0x42')]=_[_0x225c('0x53')](_0x24cf91[_0x225c('0x4f')],qs[_0x225c('0x54')](_0x5dbaae[_0x225c('0x40')]['fields']));_0x115889['attributes']=_0x115889['attributes']['length']?_0x115889[_0x225c('0x42')]:_0x24cf91[_0x225c('0x4f')];_0x115889[_0x225c('0xca')]=qs[_0x225c('0xcb')](_0x5dbaae[_0x225c('0x40')][_0x225c('0xcb')]);_0x115889[_0x225c('0x3f')]=qs['filters'](_[_0x225c('0xd2')](_0x5dbaae[_0x225c('0x40')],_0x24cf91[_0x225c('0x52')]));if(_0x5dbaae['query'][_0x225c('0x2f')]){_0x115889[_0x225c('0x3f')]=_[_0x225c('0x56')](_0x115889['where'],{'$or':_[_0x225c('0x8a')](_0x115889['attributes'],function(_0x3779c2){var _0x459539={};_0x459539[_0x3779c2]={'$like':'%'+_0x5dbaae[_0x225c('0x40')][_0x225c('0x2f')]+'%'};return _0x459539;})});}_0x115889=_[_0x225c('0x56')]({},_0x115889,_0x5dbaae[_0x225c('0x57')]);return _0x3807f0['getMailAccounts'](_0x115889);}})['then'](function(_0x4a6d79){if(_0x4a6d79){_0x4f183f=_0x4a6d79['length'];if(!_0x5dbaae[_0x225c('0x40')][_0x225c('0xcc')](_0x225c('0xd0'))){_0x115889[_0x225c('0x22')]=qs[_0x225c('0x22')](_0x5dbaae[_0x225c('0x40')][_0x225c('0x22')]);_0x115889['offset']=qs['offset'](_0x5dbaae[_0x225c('0x40')]['offset']);}return _0x3807f0[_0x225c('0x13e')](_0x115889);}})[_0x225c('0x13')](function(_0xd4c680){if(_0xd4c680){return _0xd4c680?{'count':_0x4f183f,'rows':_0xd4c680}:null;}})[_0x225c('0x13')](respondWithResult(_0x4ff6e6,null))['catch'](handleError(_0x4ff6e6,null));};exports[_0x225c('0x13f')]=function(_0x70e83b,_0x4eb627){return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x70e83b['params']['id']}})['then'](handleEntityNotFound(_0x4eb627,null))[_0x225c('0x13')](function(_0x617a12){if(_0x617a12){return _0x617a12[_0x225c('0x13f')](_0x70e83b[_0x225c('0x5b')][_0x225c('0x5f')],_[_0x225c('0x60')](_0x70e83b[_0x225c('0x5b')],[_0x225c('0x5f'),'id'])||{});}})['then'](respondWithResult(_0x4eb627,null))[_0x225c('0x1c')](handleError(_0x4eb627,null));};exports[_0x225c('0x140')]=function(_0x324717,_0x4b5084){return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x324717[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x4b5084,null))['then'](function(_0x369cf5){if(_0x369cf5){return _0x369cf5[_0x225c('0x140')](_0x324717[_0x225c('0x40')][_0x225c('0x5f')]);}})['then'](respondWithStatusCode(_0x4b5084,null))['catch'](handleError(_0x4b5084,null));};exports[_0x225c('0x141')]=function(_0x10385f,_0x28e617){var _0x26d56c={};var _0x2fb097={};var _0x107748;var _0x32f236;return db[_0x225c('0x38')]['findOne']({'where':{'id':_0x10385f['params']['id']}})['then'](handleEntityNotFound(_0x28e617,null))['then'](function(_0x5c4954){if(_0x5c4954){_0x107748=_0x5c4954;_0x2fb097[_0x225c('0x4f')]=_[_0x225c('0xc8')](db['OpenchannelAccount'][_0x225c('0x39')]);_0x2fb097[_0x225c('0x40')]=_[_0x225c('0xc8')](_0x10385f[_0x225c('0x40')]);_0x2fb097[_0x225c('0x52')]=_[_0x225c('0x53')](_0x2fb097[_0x225c('0x4f')],_0x2fb097[_0x225c('0x40')]);_0x26d56c[_0x225c('0x42')]=_[_0x225c('0x53')](_0x2fb097[_0x225c('0x4f')],qs['fields'](_0x10385f[_0x225c('0x40')][_0x225c('0x54')]));_0x26d56c[_0x225c('0x42')]=_0x26d56c[_0x225c('0x42')][_0x225c('0x46')]?_0x26d56c[_0x225c('0x42')]:_0x2fb097[_0x225c('0x4f')];_0x26d56c[_0x225c('0xca')]=qs[_0x225c('0xcb')](_0x10385f[_0x225c('0x40')][_0x225c('0xcb')]);_0x26d56c['where']=qs['filters'](_['pick'](_0x10385f[_0x225c('0x40')],_0x2fb097[_0x225c('0x52')]));if(_0x10385f[_0x225c('0x40')][_0x225c('0x2f')]){_0x26d56c[_0x225c('0x3f')]=_['merge'](_0x26d56c[_0x225c('0x3f')],{'$or':_['map'](_0x26d56c[_0x225c('0x42')],function(_0x294bf4){var _0x1b00c5={};_0x1b00c5[_0x294bf4]={'$like':'%'+_0x10385f[_0x225c('0x40')]['filter']+'%'};return _0x1b00c5;})});}_0x26d56c=_[_0x225c('0x56')]({},_0x26d56c,_0x10385f[_0x225c('0x57')]);return _0x107748[_0x225c('0x141')](_0x26d56c);}})[_0x225c('0x13')](function(_0x49f822){if(_0x49f822){_0x32f236=_0x49f822['length'];if(!_0x10385f[_0x225c('0x40')][_0x225c('0xcc')]('nolimit')){_0x26d56c[_0x225c('0x22')]=qs[_0x225c('0x22')](_0x10385f[_0x225c('0x40')][_0x225c('0x22')]);_0x26d56c[_0x225c('0x20')]=qs[_0x225c('0x20')](_0x10385f[_0x225c('0x40')][_0x225c('0x20')]);}return _0x107748[_0x225c('0x141')](_0x26d56c);}})['then'](function(_0x390784){if(_0x390784){return _0x390784?{'count':_0x32f236,'rows':_0x390784}:null;}})[_0x225c('0x13')](respondWithResult(_0x28e617,null))[_0x225c('0x1c')](handleError(_0x28e617,null));};exports[_0x225c('0x142')]=function(_0x39e413,_0x21603d){return db['User'][_0x225c('0x5e')]({'where':{'id':_0x39e413['params']['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x21603d,null))['then'](function(_0x3b0317){if(_0x3b0317){return _0x3b0317[_0x225c('0x142')](_0x39e413[_0x225c('0x5b')][_0x225c('0x5f')],_['omit'](_0x39e413[_0x225c('0x5b')],[_0x225c('0x5f'),'id'])||{});}})['then'](respondWithResult(_0x21603d,null))[_0x225c('0x1c')](handleError(_0x21603d,null));};exports['removeOpenchannelAccounts']=function(_0x4c6c39,_0x27b918){return db['User']['find']({'where':{'id':_0x4c6c39['params']['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x27b918,null))['then'](function(_0x54e7ac){if(_0x54e7ac){return _0x54e7ac[_0x225c('0x143')](_0x4c6c39[_0x225c('0x40')]['ids']);}})[_0x225c('0x13')](respondWithStatusCode(_0x27b918,null))['catch'](handleError(_0x27b918,null));};exports[_0x225c('0x144')]=function(_0xb8ef49,_0x374a1f){var _0x515d2d={};var _0x54b5fc={};var _0x3ebe6d;var _0x2d1611;return db[_0x225c('0x38')]['findOne']({'where':{'id':_0xb8ef49['params']['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x374a1f,null))[_0x225c('0x13')](function(_0x3a06db){if(_0x3a06db){_0x3ebe6d=_0x3a06db;_0x54b5fc[_0x225c('0x4f')]=_[_0x225c('0xc8')](db['SmsAccount'][_0x225c('0x39')]);_0x54b5fc['query']=_[_0x225c('0xc8')](_0xb8ef49[_0x225c('0x40')]);_0x54b5fc[_0x225c('0x52')]=_['intersection'](_0x54b5fc['model'],_0x54b5fc['query']);_0x515d2d[_0x225c('0x42')]=_['intersection'](_0x54b5fc[_0x225c('0x4f')],qs['fields'](_0xb8ef49['query']['fields']));_0x515d2d['attributes']=_0x515d2d['attributes']['length']?_0x515d2d['attributes']:_0x54b5fc[_0x225c('0x4f')];_0x515d2d[_0x225c('0xca')]=qs['sort'](_0xb8ef49[_0x225c('0x40')][_0x225c('0xcb')]);_0x515d2d[_0x225c('0x3f')]=qs[_0x225c('0x52')](_[_0x225c('0xd2')](_0xb8ef49['query'],_0x54b5fc[_0x225c('0x52')]));if(_0xb8ef49[_0x225c('0x40')]['filter']){_0x515d2d['where']=_[_0x225c('0x56')](_0x515d2d[_0x225c('0x3f')],{'$or':_[_0x225c('0x8a')](_0x515d2d[_0x225c('0x42')],function(_0x5b2646){var _0xe6e5d9={};_0xe6e5d9[_0x5b2646]={'$like':'%'+_0xb8ef49[_0x225c('0x40')][_0x225c('0x2f')]+'%'};return _0xe6e5d9;})});}_0x515d2d=_[_0x225c('0x56')]({},_0x515d2d,_0xb8ef49['options']);return _0x3ebe6d[_0x225c('0x144')](_0x515d2d);}})['then'](function(_0x3f3d01){if(_0x3f3d01){_0x2d1611=_0x3f3d01[_0x225c('0x46')];if(!_0xb8ef49['query'][_0x225c('0xcc')]('nolimit')){_0x515d2d['limit']=qs['limit'](_0xb8ef49['query'][_0x225c('0x22')]);_0x515d2d[_0x225c('0x20')]=qs[_0x225c('0x20')](_0xb8ef49[_0x225c('0x40')][_0x225c('0x20')]);}return _0x3ebe6d[_0x225c('0x144')](_0x515d2d);}})[_0x225c('0x13')](function(_0x4fa3a5){if(_0x4fa3a5){return _0x4fa3a5?{'count':_0x2d1611,'rows':_0x4fa3a5}:null;}})[_0x225c('0x13')](respondWithResult(_0x374a1f,null))[_0x225c('0x1c')](handleError(_0x374a1f,null));};exports[_0x225c('0x145')]=function(_0x55eb9f,_0x383a3b){return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x55eb9f['params']['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x383a3b,null))['then'](function(_0x4cfbb3){if(_0x4cfbb3){return _0x4cfbb3[_0x225c('0x145')](_0x55eb9f['body'][_0x225c('0x5f')],_[_0x225c('0x60')](_0x55eb9f['body'],[_0x225c('0x5f'),'id'])||{});}})['then'](respondWithResult(_0x383a3b,null))[_0x225c('0x1c')](handleError(_0x383a3b,null));};exports[_0x225c('0x146')]=function(_0x4fb53a,_0x268bf6){return db[_0x225c('0x38')]['find']({'where':{'id':_0x4fb53a[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x268bf6,null))[_0x225c('0x13')](function(_0x355096){if(_0x355096){return _0x355096[_0x225c('0x146')](_0x4fb53a[_0x225c('0x40')]['ids']);}})[_0x225c('0x13')](respondWithStatusCode(_0x268bf6,null))[_0x225c('0x1c')](handleError(_0x268bf6,null));};exports[_0x225c('0x147')]=function(_0x528ca3,_0x193728){var _0xe8c744={};var _0x4d32ac={};var _0x1a7e5b;var _0x1e83bf;return db[_0x225c('0x38')][_0x225c('0x96')]({'where':{'id':_0x528ca3[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x193728,null))[_0x225c('0x13')](function(_0xa05813){if(_0xa05813){_0x1a7e5b=_0xa05813;_0x4d32ac['model']=_[_0x225c('0xc8')](db[_0x225c('0x148')][_0x225c('0x39')]);_0x4d32ac[_0x225c('0x40')]=_['keys'](_0x528ca3['query']);_0x4d32ac[_0x225c('0x52')]=_[_0x225c('0x53')](_0x4d32ac[_0x225c('0x4f')],_0x4d32ac[_0x225c('0x40')]);_0xe8c744[_0x225c('0x42')]=_['intersection'](_0x4d32ac['model'],qs[_0x225c('0x54')](_0x528ca3[_0x225c('0x40')][_0x225c('0x54')]));_0xe8c744[_0x225c('0x42')]=_0xe8c744[_0x225c('0x42')]['length']?_0xe8c744[_0x225c('0x42')]:_0x4d32ac['model'];_0xe8c744[_0x225c('0xca')]=qs[_0x225c('0xcb')](_0x528ca3[_0x225c('0x40')][_0x225c('0xcb')]);_0xe8c744[_0x225c('0x3f')]=qs[_0x225c('0x52')](_[_0x225c('0xd2')](_0x528ca3[_0x225c('0x40')],_0x4d32ac[_0x225c('0x52')]));if(_0x528ca3[_0x225c('0x40')][_0x225c('0x2f')]){_0xe8c744[_0x225c('0x3f')]=_[_0x225c('0x56')](_0xe8c744['where'],{'$or':_[_0x225c('0x8a')](_0xe8c744[_0x225c('0x42')],function(_0x102599){var _0x213302={};_0x213302[_0x102599]={'$like':'%'+_0x528ca3[_0x225c('0x40')]['filter']+'%'};return _0x213302;})});}_0xe8c744=_[_0x225c('0x56')]({},_0xe8c744,_0x528ca3[_0x225c('0x57')]);return _0x1a7e5b[_0x225c('0x147')](_0xe8c744);}})[_0x225c('0x13')](function(_0x27f9d1){if(_0x27f9d1){_0x1e83bf=_0x27f9d1[_0x225c('0x46')];if(!_0x528ca3[_0x225c('0x40')][_0x225c('0xcc')](_0x225c('0xd0'))){_0xe8c744['limit']=qs['limit'](_0x528ca3[_0x225c('0x40')][_0x225c('0x22')]);_0xe8c744[_0x225c('0x20')]=qs[_0x225c('0x20')](_0x528ca3[_0x225c('0x40')][_0x225c('0x20')]);}return _0x1a7e5b['getChatWebsites'](_0xe8c744);}})[_0x225c('0x13')](function(_0x3c1a01){if(_0x3c1a01){return _0x3c1a01?{'count':_0x1e83bf,'rows':_0x3c1a01}:null;}})['then'](respondWithResult(_0x193728,null))[_0x225c('0x1c')](handleError(_0x193728,null));};exports[_0x225c('0x149')]=function(_0x45301d,_0x511e03){return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x45301d[_0x225c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x511e03,null))[_0x225c('0x13')](function(_0x2570fd){if(_0x2570fd){return _0x2570fd[_0x225c('0x149')](_0x45301d['body'][_0x225c('0x5f')],_[_0x225c('0x60')](_0x45301d[_0x225c('0x5b')],['ids','id'])||{});}})[_0x225c('0x13')](respondWithResult(_0x511e03,null))[_0x225c('0x1c')](handleError(_0x511e03,null));};exports['removeChatWebsites']=function(_0x1298bb,_0xc3544){return db['User'][_0x225c('0x5e')]({'where':{'id':_0x1298bb[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0xc3544,null))[_0x225c('0x13')](function(_0x23ef62){if(_0x23ef62){return _0x23ef62['removeChatWebsites'](_0x1298bb[_0x225c('0x40')]['ids']);}})[_0x225c('0x13')](respondWithStatusCode(_0xc3544,null))[_0x225c('0x1c')](handleError(_0xc3544,null));};exports[_0x225c('0x14a')]=function(_0x24b875,_0x19cbf0){var _0x599bc3={};var _0x1f2f61={};var _0x3e5253;var _0x4b3c5c;return db[_0x225c('0x38')][_0x225c('0x96')]({'where':{'id':_0x24b875[_0x225c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x19cbf0,null))['then'](function(_0x332e0d){if(_0x332e0d){_0x3e5253=_0x332e0d;_0x1f2f61['model']=_[_0x225c('0xc8')](db[_0x225c('0x14b')][_0x225c('0x39')]);_0x1f2f61[_0x225c('0x40')]=_[_0x225c('0xc8')](_0x24b875[_0x225c('0x40')]);_0x1f2f61['filters']=_[_0x225c('0x53')](_0x1f2f61[_0x225c('0x4f')],_0x1f2f61['query']);_0x599bc3[_0x225c('0x42')]=_[_0x225c('0x53')](_0x1f2f61['model'],qs[_0x225c('0x54')](_0x24b875[_0x225c('0x40')][_0x225c('0x54')]));_0x599bc3['attributes']=_0x599bc3[_0x225c('0x42')][_0x225c('0x46')]?_0x599bc3['attributes']:_0x1f2f61[_0x225c('0x4f')];_0x599bc3[_0x225c('0xca')]=qs[_0x225c('0xcb')](_0x24b875[_0x225c('0x40')][_0x225c('0xcb')]);_0x599bc3[_0x225c('0x3f')]=qs[_0x225c('0x52')](_[_0x225c('0xd2')](_0x24b875[_0x225c('0x40')],_0x1f2f61[_0x225c('0x52')]));if(_0x24b875[_0x225c('0x40')][_0x225c('0x2f')]){_0x599bc3[_0x225c('0x3f')]=_['merge'](_0x599bc3[_0x225c('0x3f')],{'$or':_[_0x225c('0x8a')](_0x599bc3['attributes'],function(_0x35912c){var _0x1946a5={};_0x1946a5[_0x35912c]={'$like':'%'+_0x24b875['query']['filter']+'%'};return _0x1946a5;})});}_0x599bc3=_[_0x225c('0x56')]({},_0x599bc3,_0x24b875[_0x225c('0x57')]);return _0x3e5253[_0x225c('0x14a')](_0x599bc3);}})[_0x225c('0x13')](function(_0x2ba400){if(_0x2ba400){_0x4b3c5c=_0x2ba400[_0x225c('0x46')];if(!_0x24b875['query'][_0x225c('0xcc')](_0x225c('0xd0'))){_0x599bc3[_0x225c('0x22')]=qs['limit'](_0x24b875[_0x225c('0x40')][_0x225c('0x22')]);_0x599bc3[_0x225c('0x20')]=qs['offset'](_0x24b875[_0x225c('0x40')][_0x225c('0x20')]);}return _0x3e5253['getWhatsappAccounts'](_0x599bc3);}})['then'](function(_0x4d32d0){if(_0x4d32d0){return _0x4d32d0?{'count':_0x4b3c5c,'rows':_0x4d32d0}:null;}})['then'](respondWithResult(_0x19cbf0,null))[_0x225c('0x1c')](handleError(_0x19cbf0,null));};exports[_0x225c('0x14c')]=function(_0x510b7e,_0x4d3bae){return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x510b7e[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x4d3bae,null))[_0x225c('0x13')](function(_0x49be8c){if(_0x49be8c){return _0x49be8c['addWhatsappAccounts'](_0x510b7e[_0x225c('0x5b')]['ids'],_[_0x225c('0x60')](_0x510b7e[_0x225c('0x5b')],['ids','id'])||{});}})[_0x225c('0x13')](respondWithResult(_0x4d3bae,null))[_0x225c('0x1c')](handleError(_0x4d3bae,null));};exports[_0x225c('0x14d')]=function(_0x22d1b9,_0x10ceed){return db[_0x225c('0x38')]['find']({'where':{'id':_0x22d1b9['params']['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x10ceed,null))[_0x225c('0x13')](function(_0x4db787){if(_0x4db787){return _0x4db787[_0x225c('0x14d')](_0x22d1b9[_0x225c('0x40')][_0x225c('0x5f')]);}})[_0x225c('0x13')](respondWithStatusCode(_0x10ceed,null))['catch'](handleError(_0x10ceed,null));};exports[_0x225c('0x14e')]=function(_0x1e8772,_0x5b4e5e){var _0x5b9b5b={};var _0x37e936={};var _0x38bff0;var _0x4893b3;return db['User']['findOne']({'where':{'id':_0x1e8772[_0x225c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x5b4e5e,null))['then'](function(_0x128406){if(_0x128406){_0x38bff0=_0x128406;_0x37e936[_0x225c('0x4f')]=_['keys'](db[_0x225c('0x14f')][_0x225c('0x39')]);_0x37e936['query']=_['keys'](_0x1e8772[_0x225c('0x40')]);_0x37e936[_0x225c('0x52')]=_['intersection'](_0x37e936[_0x225c('0x4f')],_0x37e936[_0x225c('0x40')]);_0x5b9b5b[_0x225c('0x42')]=_[_0x225c('0x53')](_0x37e936['model'],qs[_0x225c('0x54')](_0x1e8772[_0x225c('0x40')][_0x225c('0x54')]));_0x5b9b5b[_0x225c('0x42')]=_0x5b9b5b[_0x225c('0x42')][_0x225c('0x46')]?_0x5b9b5b[_0x225c('0x42')]:_0x37e936[_0x225c('0x4f')];_0x5b9b5b['order']=qs[_0x225c('0xcb')](_0x1e8772[_0x225c('0x40')][_0x225c('0xcb')]);_0x5b9b5b[_0x225c('0x3f')]=qs[_0x225c('0x52')](_[_0x225c('0xd2')](_0x1e8772[_0x225c('0x40')],_0x37e936[_0x225c('0x52')]));if(_0x1e8772[_0x225c('0x40')][_0x225c('0x2f')]){_0x5b9b5b[_0x225c('0x3f')]=_['merge'](_0x5b9b5b['where'],{'$or':_[_0x225c('0x8a')](_0x5b9b5b['attributes'],function(_0x2c2b23){var _0x893e39={};_0x893e39[_0x2c2b23]={'$like':'%'+_0x1e8772[_0x225c('0x40')][_0x225c('0x2f')]+'%'};return _0x893e39;})});}_0x5b9b5b=_[_0x225c('0x56')]({},_0x5b9b5b,_0x1e8772[_0x225c('0x57')]);return _0x38bff0[_0x225c('0x14e')](_0x5b9b5b);}})[_0x225c('0x13')](function(_0x236a57){if(_0x236a57){_0x4893b3=_0x236a57['length'];if(!_0x1e8772[_0x225c('0x40')][_0x225c('0xcc')]('nolimit')){_0x5b9b5b[_0x225c('0x22')]=qs[_0x225c('0x22')](_0x1e8772[_0x225c('0x40')][_0x225c('0x22')]);_0x5b9b5b[_0x225c('0x20')]=qs['offset'](_0x1e8772[_0x225c('0x40')][_0x225c('0x20')]);}return _0x38bff0[_0x225c('0x14e')](_0x5b9b5b);}})['then'](function(_0x54e20c){if(_0x54e20c){return _0x54e20c?{'count':_0x4893b3,'rows':_0x54e20c}:null;}})['then'](respondWithResult(_0x5b4e5e,null))['catch'](handleError(_0x5b4e5e,null));};exports[_0x225c('0x150')]=function(_0x590d79,_0x3c0ea2){return db['User']['find']({'where':{'id':_0x590d79['params']['id']}})['then'](handleEntityNotFound(_0x3c0ea2,null))[_0x225c('0x13')](function(_0x460ad6){if(_0x460ad6){return _0x460ad6[_0x225c('0x150')](_0x590d79[_0x225c('0x5b')][_0x225c('0x5f')],_[_0x225c('0x60')](_0x590d79[_0x225c('0x5b')],[_0x225c('0x5f'),'id'])||{});}})[_0x225c('0x13')](respondWithResult(_0x3c0ea2,null))[_0x225c('0x1c')](handleError(_0x3c0ea2,null));};exports[_0x225c('0x151')]=function(_0x4e0071,_0xe2c491){return db[_0x225c('0x38')][_0x225c('0x5e')]({'where':{'id':_0x4e0071[_0x225c('0x4e')]['id']}})['then'](handleEntityNotFound(_0xe2c491,null))[_0x225c('0x13')](function(_0x58d6c6){if(_0x58d6c6){return _0x58d6c6[_0x225c('0x151')](_0x4e0071[_0x225c('0x40')][_0x225c('0x5f')]);}})['then'](respondWithStatusCode(_0xe2c491,null))['catch'](handleError(_0xe2c491,null));};exports[_0x225c('0x152')]=function(_0x3c8aeb,_0x4ce28e){var _0x243829={},_0x2cd6bd={},_0x2552be={'count':0x0,'rows':[]};var _0x140331=db[_0x225c('0x153')]['rawAttributes'];_0x2cd6bd[_0x225c('0x4f')]=_[_0x225c('0xc8')](_0x140331);_0x2cd6bd[_0x225c('0x40')]=_['keys'](_0x3c8aeb['query']);_0x2cd6bd['filters']=_[_0x225c('0x53')](_0x2cd6bd['model'],_0x2cd6bd[_0x225c('0x40')]);_0x2cd6bd[_0x225c('0x52')]=_[_0x225c('0xf6')](_0x2cd6bd[_0x225c('0x52')],[_0x225c('0x154'),_0x225c('0x155'),_0x225c('0x156'),_0x225c('0x157'),_0x225c('0x158'),'$lte','$ne',_0x225c('0x159'),_0x225c('0x15a'),'$between','$notBetween',_0x225c('0x15b'),_0x225c('0x15c'),_0x225c('0x15d'),_0x225c('0x15e'),_0x225c('0x15f'),_0x225c('0x160'),_0x225c('0x15d'),_0x225c('0x161'),_0x225c('0x162'),_0x225c('0x163'),'$any']);_0x243829[_0x225c('0x42')]=_[_0x225c('0x53')](_0x2cd6bd[_0x225c('0x4f')],qs['fields'](_0x3c8aeb[_0x225c('0x40')][_0x225c('0x54')]));_0x243829[_0x225c('0x42')]=_0x243829[_0x225c('0x42')]['length']?_0x243829[_0x225c('0x42')]:_0x2cd6bd[_0x225c('0x4f')];if(!_0x3c8aeb[_0x225c('0x40')]['hasOwnProperty'](_0x225c('0xd0'))){_0x243829[_0x225c('0x22')]=qs[_0x225c('0x22')](_0x3c8aeb[_0x225c('0x40')][_0x225c('0x22')]);_0x243829[_0x225c('0x20')]=qs[_0x225c('0x20')](_0x3c8aeb[_0x225c('0x40')]['offset']);}_0x243829[_0x225c('0xca')]=qs['sort'](_0x3c8aeb['query'][_0x225c('0xcb')]);_0x243829[_0x225c('0x3f')]=qs[_0x225c('0x52')](_[_0x225c('0xd2')](_0x3c8aeb['query'],_0x2cd6bd[_0x225c('0x52')]));if(_0x3c8aeb['query'][_0x225c('0x2f')]){_0x243829[_0x225c('0x3f')]=_[_0x225c('0x56')](_0x243829[_0x225c('0x3f')],{'$or':_[_0x225c('0x8a')](_0x243829[_0x225c('0x42')],function(_0x1c5bdd){var _0x4c46bf={};_0x4c46bf[_0x1c5bdd]={'$like':'%'+_0x3c8aeb[_0x225c('0x40')]['filter']+'%'};return _0x4c46bf;})});}_0x243829[_0x225c('0x3f')]={'$and':[_0x243829[_0x225c('0x3f')],{'$or':[{'UserId':_0x3c8aeb[_0x225c('0x4e')]['id']},{'OwnerId':_0x3c8aeb['params']['id']}]}]};_0x243829=_[_0x225c('0x56')]({},_0x243829,_0x3c8aeb[_0x225c('0x57')]);var _0x3d60bc={'where':_0x243829[_0x225c('0x3f')]};return db[_0x225c('0x153')][_0x225c('0x23')](_0x3d60bc)['then'](function(_0x46e7e0){_0x2552be[_0x225c('0x23')]=_0x46e7e0;if(_0x3c8aeb['query'][_0x225c('0x55')]){_0x243829[_0x225c('0x41')]=[{'attributes':['id',_0x225c('0x164'),_0x225c('0x165'),'phone'],'model':db[_0x225c('0xc9')],'as':'Contact'},{'attributes':['id',_0x225c('0x35'),_0x225c('0x166')],'model':db[_0x225c('0xaa')],'as':_0x225c('0xd3')}];}return db[_0x225c('0x153')][_0x225c('0x89')](_0x243829);})['then'](function(_0x45776b){_0x2552be['rows']=_0x45776b;return _0x2552be;})[_0x225c('0x13')](respondWithFilteredResult(_0x4ce28e,_0x243829))[_0x225c('0x1c')](handleError(_0x4ce28e,null));};exports[_0x225c('0x167')]=function(_0x5623ad,_0x50d10d){if(!_[_0x225c('0x64')](_0x5623ad[_0x225c('0x2a')]['id'])&&(_0x5623ad[_0x225c('0x2a')]['role']=='admin'||_0x5623ad['user']['role']==_0x225c('0x2a'))){return db['User'][_0x225c('0x96')]({'where':{'id':_0x5623ad['params']['id']},'raw':!![]})[_0x225c('0x13')](function(_0x28f4b6){return authService[_0x225c('0x168')](_0x28f4b6);})[_0x225c('0x13')](function(_0x1f5338){if(_0x1f5338){return _0x50d10d[_0x225c('0x24')](0xc8)[_0x225c('0x1f')]({'api_key':_0x1f5338[_0x225c('0x169')]});}else{return _0x50d10d[_0x225c('0x24')](0xcc)[_0x225c('0x1f')]({'message':'No\x20API\x20access\x20key\x20found!'});}})[_0x225c('0x1c')](handleError(_0x50d10d,0x193));}else{return _0x50d10d['status'](0x191)[_0x225c('0x1f')]({'message':_0x225c('0x16a')});}};exports[_0x225c('0x16b')]=function(_0x1dd379,_0x30e145){if(!_[_0x225c('0x64')](_0x1dd379[_0x225c('0x2a')]['id'])&&(_0x1dd379[_0x225c('0x2a')]['role']==_0x225c('0x28')||_0x1dd379[_0x225c('0x2a')][_0x225c('0x27')]=='user')){return db[_0x225c('0x38')]['find']({'where':{'id':_0x1dd379['params']['id']}})['then'](function(_0x2169af){return authService[_0x225c('0x16c')](_0x2169af);})['then'](function(_0x30c754){return db['User']['update']({'apiKeyIat':_0x30c754[_0x225c('0x16d')],'apiKeyNonce':_0x30c754['nonce']},{'where':{'id':_0x1dd379['params']['id']}})[_0x225c('0x13')](function(){return _0x30e145[_0x225c('0x24')](0xc8)[_0x225c('0x1f')]({'api_key':_0x30c754[_0x225c('0x169')]});});})[_0x225c('0x1c')](handleError(_0x30e145,0x193));}else{return _0x30e145[_0x225c('0x24')](0x191)[_0x225c('0x1f')]({'message':_0x225c('0x16a')});}};exports[_0x225c('0x16e')]=function(_0x21e3f4,_0x16e216){if(!_[_0x225c('0x64')](_0x21e3f4['user']['id'])&&(_0x21e3f4[_0x225c('0x2a')]['role']==_0x225c('0x28')||_0x21e3f4[_0x225c('0x2a')]['role']==_0x225c('0x2a'))){return db[_0x225c('0x38')]['find']({'where':{'id':_0x21e3f4[_0x225c('0x4e')]['id']}})[_0x225c('0x13')](handleEntityNotFound(_0x16e216,null))['then'](function(_0x2396c7){if(_0x2396c7&&_0x2396c7[_0x225c('0x16f')]&&_0x2396c7['apiKeyIat'])return _0x2396c7;else throw{'message':'API\x20key\x20not\x20available'};})['then'](function(_0x1bde71){return db['User'][_0x225c('0x25')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x21e3f4[_0x225c('0x4e')]['id']}});})['then'](respondWithStatusCode(_0x16e216,0xc8))['catch'](handleError(_0x16e216,0x193));}else{return _0x16e216[_0x225c('0x24')](0x191)[_0x225c('0x1f')]({'message':_0x225c('0x16a')});}};exports[_0x225c('0x170')]=function(_0x5070a4,_0x2a8657){var _0x13f624=_0x5070a4[_0x225c('0x2a')][_0x225c('0x26')]({'plain':!![]});if(!_0x13f624){return _0x2a8657[_0x225c('0x24')](0x191)[_0x225c('0x36')](_0x225c('0x171'));}else{return _0x2a8657[_0x225c('0x24')](0xc8)['json'](_0x13f624);}};exports[_0x225c('0x172')]=function(_0x5bb053,_0x4681be){var _0x502f1c={'offset':0x0},_0x4b333a={'count':0x0,'rows':[]};Promise['resolve']()[_0x225c('0x13')](function(){if(!_0x5bb053['query'][_0x225c('0x2f')]&&!_0x5bb053[_0x225c('0x40')]['teams']&&!_0x5bb053[_0x225c('0x40')]['queues'])return[];return Promise[_0x225c('0xf9')]()['then'](function(){var _0x3e5673=[];if(!_[_0x225c('0x173')](_0x5bb053[_0x225c('0x40')][_0x225c('0x174')])){_0x3e5673[_0x225c('0x43')](db['Team']['findAll']({'attributes':['id','name'],'where':{'id':_0x5bb053['query'][_0x225c('0x174')]}}));}if(!_[_0x225c('0x173')](_0x5bb053['query'][_0x225c('0x175')])){_0x3e5673[_0x225c('0x43')](db[_0x225c('0xaa')]['findAll']({'attributes':['id',_0x225c('0x35')],'type':_0x225c('0x176'),'where':{'id':_0x5bb053['query'][_0x225c('0x175')]}}));}return Promise['all'](_0x3e5673);})[_0x225c('0x13')](function(_0x44fe06){var _0x25bd63=_['flatten'](_0x44fe06)[_0x225c('0x8a')](function(_0x31517c){return _0x31517c[_0x225c('0x11f')]({'attributes':['id',_0x225c('0x35'),'internal',_0x225c('0x9d')],'raw':!![]});});return Promise[_0x225c('0x4c')](_0x25bd63);})[_0x225c('0x13')](function(_0x2adba3){var _0x3a9424=_[_0x225c('0x113')](_0x2adba3);if(!_0x5bb053[_0x225c('0x40')][_0x225c('0x2f')])return _0x3a9424;if(_[_0x225c('0x173')](_0x3a9424)){return db[_0x225c('0x38')]['findAll']({'attributes':['id',_0x225c('0x35'),_0x225c('0x65'),_0x225c('0x9d')],'where':{'role':_0x225c('0x2c'),'$or':[db[_0x225c('0x68')][_0x225c('0x3f')](db[_0x225c('0x68')]['fn'](_0x225c('0x177'),db[_0x225c('0x68')][_0x225c('0x178')](_0x225c('0x35'))),{'$like':'%'+_0x5bb053['query'][_0x225c('0x2f')][_0x225c('0xa4')]()+'%'}),{'internal':{'$like':'%'+_0x5bb053[_0x225c('0x40')][_0x225c('0x2f')]+'%'}}]},'raw':!![]});}else{return _(_0x3a9424)[_0x225c('0x113')]()[_0x225c('0x2f')](function(_0x41fc44){return _0x41fc44['name'][_0x225c('0xa4')]()[_0x225c('0x32')](_0x5bb053[_0x225c('0x40')][_0x225c('0x2f')][_0x225c('0xa4')]())||_0x41fc44[_0x225c('0x65')]['toString']()['includes'](_0x5bb053[_0x225c('0x40')][_0x225c('0x2f')]);})[_0x225c('0x31')]();}})[_0x225c('0x13')](function(_0x31b84c){var _0x8036f=_0x225c('0x35');var _0x32d6cd=_0x225c('0x179');if(_0x5bb053[_0x225c('0x40')][_0x225c('0xcb')]){var _0x32d6cd=_0x5bb053[_0x225c('0x40')][_0x225c('0xcb')][0x0]==='-'?_0x225c('0x17a'):_0x225c('0x179');var _0x8036f=_0x32d6cd===_0x225c('0x179')?_0x5bb053[_0x225c('0x40')][_0x225c('0xcb')]:_0x5bb053['query']['sort']['substring'](0x1);}return _(_0x31b84c)['uniqBy']('id')[_0x225c('0x17b')]([function(_0x2be0d1){return _0x8036f===_0x225c('0x35')?_0x2be0d1[_0x8036f][_0x225c('0xa4')]():_0x2be0d1[_0x8036f];}],[_0x32d6cd])[_0x225c('0x8a')](function(_0x3e2a5a){return _[_0x225c('0xd2')](_0x3e2a5a,['id',_0x225c('0x35'),_0x225c('0x65'),_0x225c('0x9d')]);})[_0x225c('0x31')]();})[_0x225c('0x13')](function(_0x26e01f){return client['request'](_0x225c('0x2b'),_0x5bb053)[_0x225c('0x13')](function(_0x567406){if(_0x567406[_0x225c('0x19')])throw new Error(_0x225c('0x17c'));var _0x360bfa=_0x567406['result'];var _0x13394e=jayson[_0x225c('0x17d')]['http']({'port':0x232c});return _0x13394e['request'](_0x225c('0x2b'),_0x5bb053)[_0x225c('0x13')](function(_0x3c47eb){if(_0x3c47eb[_0x225c('0x19')])throw new Error(_0x225c('0x17e'));var _0x261b1b=_0x3c47eb[_0x225c('0x1b')];return _['merge']({},_0x261b1b,_0x360bfa);});})[_0x225c('0x13')](function(_0x1fdb0f){return _[_0x225c('0x8a')](_0x26e01f,function(_0x5d1ccf){var _0x35e6fa=_[_0x225c('0x5e')](_0x1fdb0f[_0x225c('0x44')],['id',_0x5d1ccf['id']]);if(!_0x35e6fa||!_0x5d1ccf['online']){_0x5d1ccf['status']=_0x225c('0x17f');}else if(_0x35e6fa['voicePause']){_0x5d1ccf[_0x225c('0x24')]=_0x225c('0xfb');}else{_0x5d1ccf[_0x225c('0x24')]=_[_0x225c('0x32')]([_0x225c('0x180'),_0x225c('0x181'),_0x225c('0x182'),_0x225c('0x183'),null,undefined],_0x35e6fa[_0x225c('0x184')])?_0x225c('0x9d'):_0x225c('0x185');}return _0x5d1ccf;});});});})['then'](function(_0xfd74c2){if(!_0x5bb053['query'][_0x225c('0xcc')](_0x225c('0xd0'))){_0x502f1c['limit']=qs[_0x225c('0x22')](_0x5bb053[_0x225c('0x40')][_0x225c('0x22')]||0xa);_0x502f1c[_0x225c('0x20')]=qs[_0x225c('0x20')](_0x5bb053['query'][_0x225c('0x20')]);}_0x4b333a[_0x225c('0x23')]=_0xfd74c2[_0x225c('0x46')];_0x4b333a[_0x225c('0x44')]=_0x502f1c['limit']?_0xfd74c2[_0x225c('0x186')](_0x502f1c[_0x225c('0x20')],_0x502f1c['offset']+_0x502f1c[_0x225c('0x22')]):_0xfd74c2;return _0x4b333a;})['then'](respondWithFilteredResult(_0x4681be,_0x502f1c))['catch'](handleError(_0x4681be,null));};function get_open_tabs(_0x20a9f0,_0x2d94b8){var _0x3242cb=_0x20a9f0[_0x225c('0x187')](0x0)[_0x225c('0x188')]()+_0x20a9f0['slice'](0x1);var _0x32e98c={'type':db[_0x225c('0x90')][_0x225c('0x69')]['SELECT'],'raw':!![]};return new BPromise(function(_0x584ed5,_0x36d91a){var _0xd7ea9e=squel['select']()[_0x225c('0x189')](_0x225c('0x18a')+_0x3242cb+'InteractionId','id')[_0x225c('0x189')]('ui.createdAt')[_0x225c('0x6b')](_0x225c('0x18b')+_0x20a9f0+'_interactions','ui')['where']('ui.UserId\x20=\x20?',_0x2d94b8['id']);return db['sequelize'][_0x225c('0x40')](_0xd7ea9e[_0x225c('0x18c')](),_0x32e98c)[_0x225c('0x13')](function(_0x23dfec){_0x2d94b8[_0x3242cb+_0x225c('0x18d')]=_0x23dfec;_0x584ed5(_0x23dfec);})[_0x225c('0x1c')](function(_0x5cad2c){_0x36d91a(_0x5cad2c);});});};
\ No newline at end of file
+var _0x01d9=['flatten','removeAgent','getLists','CmList','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','spread','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','removeMailInteractions','isArray','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','VoicePrefix','getVoicePrefixes','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','addSmsAccounts','removeSmsAccounts','ChatWebsite','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','CmHopper','concat','$or','$gte','$lt','$lte','$ne','$eq','$between','$in','$iLike','$notILike','$overlap','$contains','$contained','$any','lastName','phone','Contact','getApiKey','retrieveApiKey','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','nonce','token','removeApiKey','apiKeyNonce','apiKeyIat','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','queues','inbound','lower','col','asc','desc','uniqBy','idle','unknown','ringing','voiceStatus','busy','slice','charAt','ui.','InteractionId','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','toString','OpenTabs','moment','bluebird','util','path','squel','jayson/promise','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','socket.io-emitter','redis','./user.socket','register','defaults','localhost','client','http','request','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','then','destroy','get','role','admin','Users','user','Agents','agent','telephone','filter','map','value','includes','find','name','end','stack','send','index','User','rawAttributes','fieldName','type','password','salt','getOptions','includeAll','include','attributes','push','rows','query','openTabs','true','length','chat','dataValues','sms','fax','mail','openchannel','whatsapp','all','catch','show','params','keys','filters','model','intersection','fields','merge','options','update','describe','addContacts','body','ids','omit','internal','Setting','findById','securePassword','max','isNil','min_internal','sequelize','QueryTypes','SELECT','from','voicemail','mailbox','fullname','email','permissions','102','103','113','110','104','105','106','108','109','111','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','create','VoiceMail','UserProfileSection','Telephones','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','each','findAll','isEmpty','compact','changePassword','oldPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Wrong\x20credentials','newPassword','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','updatePasswordsHistory','addQueues','online','loginInPause','interface','isValidChannel','Unknown\x20channel','add','toLowerCase','penalty','emit','capitalize','Queue:save','voice','VoiceQueue','format','SIP/%s','voicePause','UserVoiceQueueRt','removeQueues','channel','remove','Queues','QueueId','Queue:remove','addAvatar','userpic','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','existsSync','server/files/images/','download','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','CmContact','order','sort','where','hasOwnProperty','List','Tag','color','tag','getQueues','Queue','Unknown\x20role','nolimit','getVoiceQueuesRt','pick','getGroups','ChatGroup','getRecordings','VoiceRecording','getScreenRecordings','ScreenRecording','UserId','getChatInteractions','ChatInteraction','getOpenchannelInteractions','getMailInteractions','MailInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','LOCAL/%s@from-sip/n','intrf','user:%s','user:forcelogout','headers','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','forEach','YYYY-MM-DD\x20HH:mm:ss','LOGIN','device','PAUSE','MemberReport','LOGININPAUSE','isMiddleware','resolve','logout','pause','QueuePause','updateAttributes','getChannels','DEFAULT\x20PAUSE','unpause','mailPause','faxPause','openchannelPause','whatsapppause','manual','%s%s','Pause','getTeams','Team','addTeams','setDataValue','Voice','getChatQueues','getMailQueues','Mail','getSmsQueues','Sms','getWhatsappQueues','Whatsapp','getFaxQueues','Fax','getOpenchannelQueues','Openchannel','transaction','addAgent','getDataValue','upsert','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeTeams','Chat'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x01d9,0x6c));var _0x901d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x01d9[_0x20a584];return _0x4b41a8;};'use strict';var moment=require(_0x901d('0x0'));var BPromise=require(_0x901d('0x1'));var util=require(_0x901d('0x2'));var path=require(_0x901d('0x3'));var fs=require('fs');var _=require('lodash');var squel=require(_0x901d('0x4'));var jayson=require(_0x901d('0x5'));var Redis=require(_0x901d('0x6'));var authService=require(_0x901d('0x7'));var qs=require(_0x901d('0x8'));var logger=require(_0x901d('0x9'))(_0x901d('0xa'));var utils=require('../../config/utils');var config=require(_0x901d('0xb'));var licenseUtil=require(_0x901d('0xc'));var db=require(_0x901d('0xd'))['db'];var socket=require(_0x901d('0xe'))(new Redis(config[_0x901d('0xf')]));require(_0x901d('0x10'))[_0x901d('0x11')](socket);config[_0x901d('0xf')]=_[_0x901d('0x12')](config[_0x901d('0xf')],{'host':_0x901d('0x13'),'port':0x18eb});var client=jayson[_0x901d('0x14')][_0x901d('0x15')]({'port':0x232a});var values;function respondWithRpcPromise(_0x5d74e2,_0x439f17,_0x5ba100,_0x220153){return new BPromise(function(_0x1fd1de,_0x3f2a0a){var _0x42ce79=_0x220153||client;return _0x42ce79[_0x901d('0x16')](_0x5d74e2,_0x5ba100)['then'](function(_0x1d8117){logger[_0x901d('0x17')](_0x901d('0x18'),_0x439f17,_0x901d('0x19'));logger[_0x901d('0x1a')](_0x901d('0x1b'),_0x439f17,'request\x20sent',JSON[_0x901d('0x1c')](_0x1d8117));if(_0x1d8117[_0x901d('0x1d')]){if(_0x1d8117[_0x901d('0x1d')][_0x901d('0x1e')]===0x1f4){logger[_0x901d('0x1d')](_0x901d('0x18'),_0x439f17,_0x1d8117[_0x901d('0x1d')][_0x901d('0x1f')]);return _0x3f2a0a(_0x1d8117[_0x901d('0x1d')][_0x901d('0x1f')]);}logger[_0x901d('0x1d')](_0x901d('0x18'),_0x439f17,_0x1d8117[_0x901d('0x1d')][_0x901d('0x1f')]);return _0x1fd1de(_0x1d8117[_0x901d('0x1d')][_0x901d('0x1f')]);}else{logger[_0x901d('0x17')](_0x901d('0x18'),_0x439f17,'request\x20sent');_0x1fd1de(_0x1d8117[_0x901d('0x20')][_0x901d('0x1f')]);}})['catch'](function(_0x5bdff4){logger['error']('User,\x20%s,\x20%s',_0x439f17,_0x5bdff4);_0x3f2a0a(_0x5bdff4);});});}function respondWithStatusCode(_0x316a9f,_0x44ea6f){_0x44ea6f=_0x44ea6f||0xcc;return function(_0x59289e){if(_0x59289e){return _0x316a9f[_0x901d('0x21')](_0x44ea6f);}return _0x316a9f[_0x901d('0x22')](_0x44ea6f)['end']();};}function respondWithResult(_0x20778b,_0x53ee69){_0x53ee69=_0x53ee69||0xc8;return function(_0x2402de){if(_0x2402de){return _0x20778b[_0x901d('0x22')](_0x53ee69)[_0x901d('0x23')](_0x2402de);}};}function respondWithFilteredResult(_0x1818d3,_0x46e5c6){return function(_0x45b6a8){if(_0x45b6a8){var _0x4c1318=typeof _0x46e5c6[_0x901d('0x24')]===_0x901d('0x25')&&typeof _0x46e5c6[_0x901d('0x26')]===_0x901d('0x25');var _0x557809=_0x45b6a8[_0x901d('0x27')];var _0x23fd43=_0x4c1318?0x0:_0x46e5c6[_0x901d('0x24')];var _0x3cbe43=_0x4c1318?_0x45b6a8[_0x901d('0x27')]:_0x46e5c6['offset']+_0x46e5c6[_0x901d('0x26')];var _0xc52d0f;if(_0x3cbe43>=_0x557809){_0x3cbe43=_0x557809;_0xc52d0f=0xc8;}else{_0xc52d0f=0xce;}_0x1818d3[_0x901d('0x22')](_0xc52d0f);return _0x1818d3[_0x901d('0x28')](_0x901d('0x29'),_0x23fd43+'-'+_0x3cbe43+'/'+_0x557809)[_0x901d('0x23')](_0x45b6a8);}return null;};}function saveUpdates(_0x48e86e){return function(_0xae6dfe){if(_0xae6dfe){return _0xae6dfe['update'](_0x48e86e)[_0x901d('0x2a')](function(_0x389fd9){return _0x389fd9;});}return null;};}function removeEntity(_0x20dbc5){return function(_0x287ff2){if(_0x287ff2){return _0x287ff2[_0x901d('0x2b')]()[_0x901d('0x2a')](function(){var _0x4137b7=_0x287ff2[_0x901d('0x2c')]({'plain':!![]});if(_0x4137b7[_0x901d('0x2d')]===_0x901d('0x2e'))return;var _0x16770e=[{'name':_0x901d('0x2f'),'value':_0x901d('0x30'),'ignore':!![]},{'name':_0x901d('0x31'),'value':_0x901d('0x32'),'ignore':![]},{'name':'Telephones','value':_0x901d('0x33'),'ignore':![]}];var _0x1c280b=_(_0x16770e)[_0x901d('0x34')]('ignore')[_0x901d('0x35')](_0x901d('0x36'))[_0x901d('0x36')]();if(_[_0x901d('0x37')](_0x1c280b,_0x4137b7[_0x901d('0x2d')])){return;}var _0x3962c2=_[_0x901d('0x38')](_0x16770e,[_0x901d('0x36'),_0x4137b7[_0x901d('0x2d')]])[_0x901d('0x39')];return db['UserProfileResource']['destroy']({'where':{'type':_0x3962c2,'resourceId':_0x4137b7['id']}})[_0x901d('0x2a')](function(){return _0x287ff2;});})['then'](function(){_0x20dbc5[_0x901d('0x22')](0xcc)[_0x901d('0x3a')]();});}};}function handleEntityNotFound(_0x5f483b){return function(_0x3716fa){if(!_0x3716fa){_0x5f483b[_0x901d('0x21')](0x194);}return _0x3716fa;};}function handleError(_0x2f5e22,_0x508ac6){_0x508ac6=_0x508ac6||0x1f4;return function(_0x1a1be6){logger[_0x901d('0x1d')](_0x1a1be6[_0x901d('0x3b')]);if(_0x1a1be6[_0x901d('0x39')]){delete _0x1a1be6[_0x901d('0x39')];}_0x2f5e22[_0x901d('0x22')](_0x508ac6)[_0x901d('0x3c')](_0x1a1be6);};}exports[_0x901d('0x3d')]=function(_0xe56a2c,_0x384d82){var _0x30adcd={},_0x3d4f8b={'count':0x0,'rows':[]};var _0x27b101=_(db[_0x901d('0x3e')][_0x901d('0x3f')])[_0x901d('0x35')](function(_0x54a654){return{'name':_0x54a654[_0x901d('0x40')],'type':_0x54a654[_0x901d('0x41')]['key']};})['filter'](function(_0x28725d){return!_['includes']([_0x901d('0x42'),_0x901d('0x43')],_0x28725d[_0x901d('0x39')]);})[_0x901d('0x36')]();_0x30adcd=qs[_0x901d('0x44')](_0x27b101,_0xe56a2c);var _0xb1f35e={'where':_0x30adcd['where']};return db['User']['count'](_0xb1f35e)['then'](function(_0x3a5c9c){_0x3d4f8b[_0x901d('0x27')]=_0x3a5c9c;if(_0xe56a2c['query'][_0x901d('0x45')]){_0x30adcd[_0x901d('0x46')]=[{'all':!![]}];}if(!_['includes'](_0x30adcd[_0x901d('0x47')],'id')){_0x30adcd[_0x901d('0x47')][_0x901d('0x48')]('id');}return db[_0x901d('0x3e')]['findAll'](_0x30adcd);})['then'](function(_0xa9c008){_0x3d4f8b[_0x901d('0x49')]=_0xa9c008;if(_0xe56a2c[_0x901d('0x4a')][_0x901d('0x4b')]===_0x901d('0x4c')){var _0x199ff5=[];for(var _0x88bb50=0x0;_0x88bb50<_0x3d4f8b[_0x901d('0x49')][_0x901d('0x4d')];_0x88bb50++){_0x199ff5[_0x901d('0x48')](get_open_tabs(_0x901d('0x4e'),_0x3d4f8b['rows'][_0x88bb50][_0x901d('0x4f')]));_0x199ff5['push'](get_open_tabs(_0x901d('0x50'),_0x3d4f8b['rows'][_0x88bb50][_0x901d('0x4f')]));_0x199ff5['push'](get_open_tabs(_0x901d('0x51'),_0x3d4f8b[_0x901d('0x49')][_0x88bb50][_0x901d('0x4f')]));_0x199ff5[_0x901d('0x48')](get_open_tabs(_0x901d('0x52'),_0x3d4f8b[_0x901d('0x49')][_0x88bb50][_0x901d('0x4f')]));_0x199ff5[_0x901d('0x48')](get_open_tabs(_0x901d('0x53'),_0x3d4f8b[_0x901d('0x49')][_0x88bb50][_0x901d('0x4f')]));_0x199ff5['push'](get_open_tabs(_0x901d('0x54'),_0x3d4f8b[_0x901d('0x49')][_0x88bb50][_0x901d('0x4f')]));}return BPromise[_0x901d('0x55')](_0x199ff5)[_0x901d('0x2a')](function(_0x24b6fa){return _0x3d4f8b;});}else{return _0x3d4f8b;}})[_0x901d('0x2a')](respondWithFilteredResult(_0x384d82,_0x30adcd))[_0x901d('0x56')](handleError(_0x384d82,null));};exports[_0x901d('0x57')]=function(_0x1c0732,_0x3e01fd){var _0x107017={'raw':![],'where':{'id':_0x1c0732[_0x901d('0x58')]['id']}},_0x2cd965={};_0x2cd965['model']=_['differenceBy'](_[_0x901d('0x59')](db[_0x901d('0x3e')][_0x901d('0x3f')]),[_0x901d('0x42'),_0x901d('0x43')]);_0x2cd965['query']=_['keys'](_0x1c0732[_0x901d('0x4a')]);_0x2cd965[_0x901d('0x5a')]=_['intersection'](_0x2cd965[_0x901d('0x5b')],_0x2cd965[_0x901d('0x4a')]);_0x107017['attributes']=_[_0x901d('0x5c')](_0x2cd965['model'],qs[_0x901d('0x5d')](_0x1c0732[_0x901d('0x4a')][_0x901d('0x5d')]));_0x107017[_0x901d('0x47')]=_0x107017['attributes'][_0x901d('0x4d')]?_0x107017[_0x901d('0x47')]:_0x2cd965[_0x901d('0x5b')];if(_0x1c0732[_0x901d('0x4a')][_0x901d('0x45')]){_0x107017[_0x901d('0x46')]=[{'all':!![]}];}_0x107017=_[_0x901d('0x5e')]({},_0x107017,_0x1c0732[_0x901d('0x5f')]);if(!_[_0x901d('0x37')](_0x107017[_0x901d('0x47')],'id')){_0x107017['attributes'][_0x901d('0x48')]('id');}return db['User'][_0x901d('0x38')](_0x107017)[_0x901d('0x2a')](handleEntityNotFound(_0x3e01fd,null))[_0x901d('0x2a')](function(_0x2aa9b4){var _0x3e3487=[];values=_0x2aa9b4;if(_0x1c0732[_0x901d('0x4a')][_0x901d('0x4b')]===_0x901d('0x4c')){_0x3e3487['push'](get_open_tabs(_0x901d('0x4e'),_0x2aa9b4[_0x901d('0x4f')]));_0x3e3487[_0x901d('0x48')](get_open_tabs('sms',_0x2aa9b4[_0x901d('0x4f')]));_0x3e3487['push'](get_open_tabs(_0x901d('0x53'),_0x2aa9b4[_0x901d('0x4f')]));_0x3e3487[_0x901d('0x48')](get_open_tabs('whatsapp',_0x2aa9b4[_0x901d('0x4f')]));_0x3e3487[_0x901d('0x48')](get_open_tabs(_0x901d('0x51'),_0x2aa9b4[_0x901d('0x4f')]));_0x3e3487[_0x901d('0x48')](get_open_tabs(_0x901d('0x52'),_0x2aa9b4['dataValues']));return BPromise[_0x901d('0x55')](_0x3e3487);}else{return values;}})[_0x901d('0x2a')](function(_0x267f40){return values;})[_0x901d('0x2a')](respondWithResult(_0x3e01fd,null))[_0x901d('0x56')](handleError(_0x3e01fd,null));};exports[_0x901d('0x60')]=function(_0x52eb30,_0x12cd9d){if(_0x52eb30['body']['id']){delete _0x52eb30['body']['id'];}delete _0x52eb30['body']['role'];return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x52eb30[_0x901d('0x58')]['id']}})['then'](handleEntityNotFound(_0x12cd9d,null))[_0x901d('0x2a')](saveUpdates(_0x52eb30['body'],null))[_0x901d('0x2a')](respondWithResult(_0x12cd9d,null))[_0x901d('0x56')](handleError(_0x12cd9d,null));};exports[_0x901d('0x61')]=function(_0x23440d,_0x24d5ef){return db[_0x901d('0x3e')][_0x901d('0x61')]()[_0x901d('0x2a')](respondWithResult(_0x24d5ef,null))[_0x901d('0x56')](handleError(_0x24d5ef,null));};exports[_0x901d('0x62')]=function(_0x174b73,_0xaa6553){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x174b73['params']['id']}})['then'](handleEntityNotFound(_0xaa6553,null))[_0x901d('0x2a')](function(_0x44db18){if(_0x44db18){return _0x44db18[_0x901d('0x62')](_0x174b73[_0x901d('0x63')][_0x901d('0x64')],_[_0x901d('0x65')](_0x174b73[_0x901d('0x63')],['ids','id'])||{});}})['then'](respondWithResult(_0xaa6553,null))['catch'](handleError(_0xaa6553,null));};function validateUser(_0x3e12fd){return new BPromise(function(_0x1f37dc,_0x22b518){if(_0x3e12fd[_0x901d('0x66')])return _0x1f37dc(_0x3e12fd);return db[_0x901d('0x67')][_0x901d('0x68')](0x1)[_0x901d('0x2a')](function(_0x2aeeb9){if(_0x2aeeb9[_0x901d('0x69')])authService['validatePasswordPattern'](_0x3e12fd['password']);db[_0x901d('0x3e')][_0x901d('0x6a')](_0x901d('0x66'))[_0x901d('0x2a')](function(_0x1c4aab){if(_[_0x901d('0x6b')](_0x1c4aab)){_0x3e12fd[_0x901d('0x66')]=_0x2aeeb9[_0x901d('0x6c')]||0x1;return;}if(_[_0x901d('0x6b')](_0x2aeeb9[_0x901d('0x6c')])||_0x2aeeb9['min_internal']===_0x1c4aab){_0x3e12fd[_0x901d('0x66')]=_0x1c4aab+0x1;return;}if(_0x2aeeb9[_0x901d('0x6c')]>_0x1c4aab){_0x3e12fd['internal']=_0x2aeeb9['min_internal'];return;}return db[_0x901d('0x6d')][_0x901d('0x4a')]('select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)',{'type':db[_0x901d('0x6d')][_0x901d('0x6e')][_0x901d('0x6f')]})[_0x901d('0x2a')](function(_0x56c84f){if(_0x56c84f&&_0x56c84f[_0x901d('0x4d')]){for(var _0x22d805=0x0,_0x461d92=_0x56c84f[_0x901d('0x4d')];_0x22d805<_0x461d92&&_[_0x901d('0x6b')](_0x3e12fd[_0x901d('0x66')]);_0x22d805++){if(_0x2aeeb9['min_internal']<=_0x56c84f[_0x22d805][_0x901d('0x70')]){_0x3e12fd[_0x901d('0x66')]=_0x56c84f[_0x22d805][_0x901d('0x70')];}else if(_0x2aeeb9['min_internal']>_0x56c84f[_0x22d805][_0x901d('0x70')]&&_0x2aeeb9[_0x901d('0x6c')]<=_0x56c84f[_0x22d805]['to']){_0x3e12fd[_0x901d('0x66')]=_0x2aeeb9['min_internal'];}}}if(_['isNil'](_0x3e12fd['internal'])){_0x3e12fd[_0x901d('0x66')]=_0x1c4aab+0x1;}return _0x1f37dc(_0x3e12fd);});});})[_0x901d('0x56')](function(_0x5dd45e){_0x22b518(_0x5dd45e);});});}function updateUser(_0x5b01f9){return new BPromise(function(_0x1512f0,_0x31f4ee){try{if(_0x5b01f9[_0x901d('0x71')]){_0x5b01f9[_0x901d('0x72')]=_0x5b01f9[_0x901d('0x66')];_0x5b01f9['VoiceMail']={'mailbox':_0x5b01f9[_0x901d('0x66')],'password':_0x5b01f9[_0x901d('0x42')],'fullname':_0x5b01f9[_0x901d('0x73')],'email':_0x5b01f9[_0x901d('0x74')]};}if(_0x5b01f9['role']===_0x901d('0x32')){if(!_0x5b01f9['permissions'])_0x5b01f9[_0x901d('0x75')]=['101',_0x901d('0x76'),_0x901d('0x77'),_0x901d('0x78'),_0x901d('0x79'),_0x901d('0x7a'),_0x901d('0x7b'),_0x901d('0x7c'),'107',_0x901d('0x7d'),_0x901d('0x7e'),'100',_0x901d('0x7f'),'114','115'];}_0x1512f0(_0x5b01f9);}catch(_0x52196f){_0x31f4ee(_0x52196f);}});}exports['create']=function(_0xee8b2d,_0x2cdbe9){if(_0xee8b2d['user'][_0x901d('0x2d')]===_0x901d('0x32'))throw new Error(_0x901d('0x80'));if(_0xee8b2d[_0x901d('0x63')][_0x901d('0x2d')]==='user'&&_0xee8b2d[_0x901d('0x30')][_0x901d('0x2d')]!==_0x901d('0x2e')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0xee8b2d[_0x901d('0x63')][_0x901d('0x2d')]===_0x901d('0x2e')&&_0xee8b2d[_0x901d('0x30')][_0x901d('0x2d')]!==_0x901d('0x2e')){throw new Error(_0x901d('0x81'));}return licenseUtil[_0x901d('0x82')]([_0xee8b2d[_0x901d('0x63')]])[_0x901d('0x2a')](function(){return validateUser(_0xee8b2d[_0x901d('0x63')]);})[_0x901d('0x2a')](function(_0x3aece5){return updateUser(_0x3aece5)['then'](function(_0x2f0f86){if(_0x2f0f86[_0x901d('0x2d')]===_0x901d('0x2e')){_0x2f0f86[_0x901d('0x83')]=_0xee8b2d[_0x901d('0x30')][_0x901d('0x83')];delete _0x2f0f86[_0x901d('0x84')];}return _0x2f0f86;});})[_0x901d('0x2a')](function(_0x4b2c8c){return db[_0x901d('0x3e')][_0x901d('0x85')](_0x4b2c8c,{'include':[{'model':db[_0x901d('0x86')],'as':'VoiceMail'}]});})[_0x901d('0x2a')](function(_0x865b26){if(_0xee8b2d[_0x901d('0x63')][_0x901d('0x2d')]===_0x901d('0x30'))return _0x865b26;if(_0xee8b2d[_0x901d('0x30')][_0x901d('0x2d')]!==_0x901d('0x30'))return _0x865b26;return db[_0x901d('0x87')][_0x901d('0x38')]({'where':{'name':_0x865b26[_0x901d('0x2d')]===_0x901d('0x32')?_0x901d('0x31'):_0x901d('0x88'),'userProfileId':_0xee8b2d[_0x901d('0x30')][_0x901d('0x84')]},'raw':!![]})['then'](function(_0x2c8c6d){if(!_0x2c8c6d||_0x2c8c6d[_0x901d('0x89')]!=0x0)return _0x865b26;return db[_0x901d('0x8a')][_0x901d('0x85')]({'name':_0x865b26[_0x901d('0x39')],'resourceId':_0x865b26['id'],'type':_0x2c8c6d[_0x901d('0x39')],'sectionId':_0x2c8c6d['id']},{})['then'](function(){return _0x865b26;});})[_0x901d('0x56')](function(_0x12a238){logger[_0x901d('0x1d')](_0x901d('0x8b'),_0x12a238);throw _0x12a238;});})[_0x901d('0x2a')](respondWithResult(_0x2cdbe9,0xc9))[_0x901d('0x56')](handleError(_0x2cdbe9,null));};exports[_0x901d('0x8c')]=function(_0x519cf5,_0xb9ad91){var _0x48c441=_0x519cf5[_0x901d('0x63')];var _0x276fe8=[];if(_0x519cf5[_0x901d('0x30')][_0x901d('0x2d')]==='agent')throw new Error('Unauthorized');if(_['some'](_0x48c441,['role',_0x901d('0x30')])&&_0x519cf5[_0x901d('0x30')]['role']!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_[_0x901d('0x8d')](_0x48c441,['role',_0x901d('0x2e')])&&_0x519cf5[_0x901d('0x30')][_0x901d('0x2d')]!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0x901d('0x82')](_0x48c441)[_0x901d('0x2a')](function(){return validateUser(_0x48c441[0x0]);})[_0x901d('0x2a')](function(){for(var _0x4d4548=0x1;_0x4d4548<_0x48c441['length'];_0x4d4548++){var _0x496e6a=_0x48c441[_0x4d4548-0x1][_0x901d('0x66')];if(!_0x48c441[_0x4d4548][_0x901d('0x66')])_0x48c441[_0x4d4548]['internal']=_0x496e6a+0x1;_0x276fe8[_0x901d('0x48')](validateUser(_0x48c441[_0x4d4548]));}return BPromise['all'](_0x276fe8);})['then'](function(){_0x276fe8=[];for(var _0x18fa00=0x0;_0x18fa00<_0x48c441['length'];_0x18fa00++){_0x276fe8[_0x901d('0x48')](updateUser(_0x48c441[_0x18fa00]));}return BPromise[_0x901d('0x55')](_0x276fe8);})[_0x901d('0x2a')](function(){return BPromise[_0x901d('0x8e')](_0x48c441,function(_0x29f7fd){return db[_0x901d('0x3e')]['create'](_0x29f7fd,{'include':[{'model':db[_0x901d('0x86')],'as':_0x901d('0x86')}]})[_0x901d('0x2a')](function(_0x1ee563){_0x29f7fd['id']=_0x1ee563['id'];return _0x29f7fd;});});})[_0x901d('0x2a')](function(_0x995b5f){if(_0x519cf5['body']['role']===_0x901d('0x30'))return _0x995b5f;if(_0x519cf5[_0x901d('0x30')][_0x901d('0x2d')]!==_0x901d('0x30'))return _0x995b5f;var _0x77f5f6=_[_0x901d('0x8d')](_0x995b5f,function(_0x12e0c4){return _0x12e0c4[_0x901d('0x2d')]===_0x901d('0x32')||_0x12e0c4[_0x901d('0x2d')]==='telephone';});if(!_0x77f5f6)return _0x995b5f;return db[_0x901d('0x87')][_0x901d('0x8f')]({'where':{'name':{'$or':[_0x901d('0x31'),_0x901d('0x88')]},'userProfileId':_0x519cf5[_0x901d('0x30')][_0x901d('0x84')]},'raw':!![]})[_0x901d('0x2a')](function(_0x37635a){if(_[_0x901d('0x90')](_0x37635a)||!_[_0x901d('0x8d')](_0x37635a,[_0x901d('0x89'),0x0]))return _0x995b5f;_0x276fe8=[];var _0x1d4c67=_(_0x37635a)[_0x901d('0x35')](function(_0xd9051f){if(_0xd9051f['autoAssociation']===0x1)return;return _0xd9051f[_0x901d('0x39')]===_0x901d('0x31')?_0x901d('0x32'):_0x901d('0x33');})[_0x901d('0x91')]()[_0x901d('0x36')]();for(var _0x402822=0x0;_0x402822<_0x995b5f[_0x901d('0x4d')];_0x402822++){if(!_[_0x901d('0x37')](_0x1d4c67,_0x995b5f[_0x402822]['role']))return;var _0x1268fc=_0x995b5f[_0x402822][_0x901d('0x2d')]===_0x901d('0x32')?_0x901d('0x31'):_0x901d('0x88');_0x276fe8[_0x901d('0x48')](db['UserProfileResource'][_0x901d('0x85')]({'name':_0x995b5f[_0x402822][_0x901d('0x39')],'resourceId':_0x995b5f[_0x402822]['id'],'type':_0x1268fc,'sectionId':_[_0x901d('0x38')](_0x37635a,[_0x901d('0x39'),_0x1268fc])['id']},{}));}return BPromise[_0x901d('0x55')](_0x276fe8);});})['then'](respondWithResult(_0xb9ad91,0xc9))['catch'](handleError(_0xb9ad91,null));};exports[_0x901d('0x92')]=function(_0x57ba5e,_0x3bc3b6){if(_0x57ba5e[_0x901d('0x63')]['id']){delete _0x57ba5e['body']['id'];}return db[_0x901d('0x3e')]['find']({'where':{'id':_0x57ba5e[_0x901d('0x58')]['id']}})['then'](function(_0x3118f5){if(!_0x3118f5)return null;if(_0x3118f5['id']===_0x57ba5e[_0x901d('0x30')]['id']){if(!_0x57ba5e['body'][_0x901d('0x93')]||!_0x57ba5e['body']['newPassword']){throw new db[(_0x901d('0x94'))][(_0x901d('0x95'))](_0x901d('0x96'));}if(!_0x3118f5[_0x901d('0x97')](_0x57ba5e[_0x901d('0x63')][_0x901d('0x93')])){throw new db['Sequelize'][(_0x901d('0x95'))](_0x901d('0x98'));}if(_0x57ba5e['body'][_0x901d('0x93')]===_0x57ba5e[_0x901d('0x63')]['newPassword']){throw new db[(_0x901d('0x94'))][(_0x901d('0x95'))]('New\x20password\x20must\x20be\x20different\x20from\x20old\x20password');}}else if(_0x57ba5e['user'][_0x901d('0x2d')]===_0x901d('0x2e')){if(!_0x57ba5e[_0x901d('0x63')][_0x901d('0x99')]){throw new db[(_0x901d('0x94'))][(_0x901d('0x95'))](_0x901d('0x9a'));}}else if(_0x57ba5e[_0x901d('0x30')][_0x901d('0x2d')]===_0x901d('0x30')){if(!_0x57ba5e[_0x901d('0x63')][_0x901d('0x99')]){throw new db[(_0x901d('0x94'))][(_0x901d('0x95'))](_0x901d('0x9a'));}if(_0x3118f5[_0x901d('0x2d')]!==_0x901d('0x32')){throw new db[(_0x901d('0x94'))][(_0x901d('0x95'))](_0x901d('0x80'));}}else{throw new db[(_0x901d('0x94'))][(_0x901d('0x95'))](_0x901d('0x80'));}return _0x3118f5;})[_0x901d('0x2a')](handleEntityNotFound(_0x3bc3b6,null))[_0x901d('0x2a')](function(_0x7a5c92){return db[_0x901d('0x67')][_0x901d('0x9b')]({'attributes':['id',_0x901d('0x69'),_0x901d('0x9c'),_0x901d('0x9d')]})[_0x901d('0x2a')](function(_0x9b86f8){if(_0x9b86f8[_0x901d('0x69')])authService['validatePasswordPattern'](_0x57ba5e['body'][_0x901d('0x99')]);if(!_0x9b86f8[_0x901d('0x9c')]||!_0x7a5c92[_0x901d('0x9e')])return _0x7a5c92;authService['validatePasswordHistory'](_0x57ba5e['body'][_0x901d('0x99')],_0x7a5c92[_0x901d('0x9e')],_0x9b86f8['passwordHistoryLimit']);return _0x7a5c92;})[_0x901d('0x2a')](saveUpdates({'password':_0x57ba5e[_0x901d('0x63')]['newPassword'],'passwordResetAt':_0x57ba5e[_0x901d('0x30')]['id']==_0x57ba5e[_0x901d('0x58')]['id']?moment():null,'previousPasswords':authService[_0x901d('0x9f')](_0x57ba5e[_0x901d('0x63')][_0x901d('0x99')],_0x7a5c92[_0x901d('0x9e')])},null));})[_0x901d('0x2a')](respondWithResult(_0x3bc3b6,null))[_0x901d('0x56')](handleError(_0x3bc3b6,null));};exports[_0x901d('0xa0')]=function(_0x23420d,_0x23be96){var _0x5eea7f=_0x23420d[_0x901d('0x63')]['channel'];return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x23420d['params']['id']},'attributes':['id',_0x901d('0x39'),_0x901d('0x2d'),_0x901d('0xa1'),_0x901d('0xa2'),'voicePause',_0x901d('0xa3')]})[_0x901d('0x2a')](handleEntityNotFound(_0x23be96,null))[_0x901d('0x2a')](function(_0x521511){if(_0x521511){if(!utils[_0x901d('0xa4')](_0x5eea7f)){throw new db[(_0x901d('0x94'))]['ValidationError'](_0x901d('0xa5'));}return _0x521511[_0x901d('0xa6')+_['capitalize'](_0x5eea7f[_0x901d('0xa7')]())+'Queues'](_0x23420d['body'][_0x901d('0x64')],{'penalty':_0x23420d[_0x901d('0x63')][_0x901d('0xa8')]||0x0})['spread'](function(_0x8cc655){for(var _0x2fb62a=0x0;_0x2fb62a<_0x23420d[_0x901d('0x63')]['ids'][_0x901d('0x4d')];_0x2fb62a+=0x1){var _0x2bc3c8={'UserId':Number(_0x23420d[_0x901d('0x58')]['id'])};_0x2bc3c8[_['capitalize'](_0x5eea7f[_0x901d('0xa7')]())+'QueueId']=Number(_0x23420d['body'][_0x901d('0x64')][_0x2fb62a]);socket[_0x901d('0xa9')](_0x901d('0x30')+_[_0x901d('0xaa')](_0x5eea7f[_0x901d('0xa7')]())+_0x901d('0xab'),_0x2bc3c8);}return _0x8cc655;})[_0x901d('0x2a')](function(){if(_0x5eea7f===_0x901d('0xac')){return db[_0x901d('0xad')]['findAll']({'where':{'id':_0x23420d['body'][_0x901d('0x64')]||[]},'raw':!![],'attributes':['id',_0x901d('0x39')]});}})[_0x901d('0x2a')](function(_0x271b0e){var _0x311b0e=_0x521511[_0x901d('0x2c')]({'plain':!![]});var _0x4cee21=[];if(_0x5eea7f===_0x901d('0xac')&&_0x311b0e[_0x901d('0x2d')]===_0x901d('0x32')&&_0x311b0e[_0x901d('0xa1')]){for(var _0x11a732=0x0;_0x11a732<_0x271b0e[_0x901d('0x4d')];_0x11a732+=0x1){_0x4cee21[_0x901d('0x48')]({'membername':_0x311b0e[_0x901d('0x39')],'UserId':_0x311b0e['id'],'queue_name':_0x271b0e[_0x11a732]['name'],'VoiceQueueId':_0x271b0e[_0x11a732]['id'],'interface':_[_0x901d('0x6b')](_0x311b0e[_0x901d('0xa3')])?util[_0x901d('0xae')](_0x901d('0xaf'),_0x311b0e['name']):_0x311b0e[_0x901d('0xa3')],'paused':_0x311b0e[_0x901d('0xb0')]||![],'penalty':_0x23420d[_0x901d('0x63')][_0x901d('0xa8')]||0x0});}return BPromise[_0x901d('0x8e')](_0x4cee21,function(_0x5abe6c){return db[_0x901d('0xb1')]['upsert'](_0x5abe6c);});}return _0x521511;});}})['then'](respondWithStatusCode(_0x23be96,null))[_0x901d('0x56')](handleError(_0x23be96,null));};exports[_0x901d('0xb2')]=function(_0x1d924e,_0x15fb34){var _0x38b46f;return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x1d924e[_0x901d('0x58')]['id']},'attributes':['id','name',_0x901d('0x2d')]})[_0x901d('0x2a')](handleEntityNotFound(_0x15fb34,null))[_0x901d('0x2a')](function(_0x3ae7ac){if(_0x3ae7ac){_0x38b46f=_0x3ae7ac;if(!_0x1d924e['query'][_0x901d('0xb3')]||!utils[_0x901d('0xa4')](_0x1d924e[_0x901d('0x4a')][_0x901d('0xb3')])){throw new db[(_0x901d('0x94'))][(_0x901d('0x95'))](_0x901d('0xa5'));}return _0x3ae7ac[_0x901d('0xb4')+_[_0x901d('0xaa')](_0x1d924e[_0x901d('0x4a')][_0x901d('0xb3')][_0x901d('0xa7')]())+_0x901d('0xb5')](_0x1d924e['query'][_0x901d('0x64')]);}})['then'](function(_0x4dca47){if(_['isArray'](_0x1d924e['query'][_0x901d('0x64')])){for(var _0x2223e9=0x0;_0x2223e9<_0x1d924e[_0x901d('0x4a')]['ids'][_0x901d('0x4d')];_0x2223e9+=0x1){var _0x4aea70={'UserId':Number(_0x1d924e[_0x901d('0x58')]['id'])};_0x4aea70[_['capitalize'](_0x1d924e[_0x901d('0x4a')]['channel'][_0x901d('0xa7')]())+_0x901d('0xb6')]=Number(_0x1d924e['query'][_0x901d('0x64')][_0x2223e9]);socket[_0x901d('0xa9')](_0x901d('0x30')+_[_0x901d('0xaa')](_0x1d924e['query'][_0x901d('0xb3')][_0x901d('0xa7')]())+_0x901d('0xb7'),_0x4aea70);}}else{var _0x4aea70={'UserId':Number(_0x1d924e[_0x901d('0x58')]['id'])};_0x4aea70[_[_0x901d('0xaa')](_0x1d924e[_0x901d('0x4a')][_0x901d('0xb3')][_0x901d('0xa7')]())+_0x901d('0xb6')]=Number(_0x1d924e[_0x901d('0x4a')][_0x901d('0x64')]);socket[_0x901d('0xa9')](_0x901d('0x30')+_[_0x901d('0xaa')](_0x1d924e[_0x901d('0x4a')][_0x901d('0xb3')][_0x901d('0xa7')]())+'Queue:remove',_0x4aea70);}return _0x4dca47;})[_0x901d('0x2a')](function(){if(_0x1d924e[_0x901d('0x4a')][_0x901d('0xb3')]===_0x901d('0xac')){return db['UserVoiceQueueRt'][_0x901d('0x2b')]({'where':{'UserId':_0x1d924e['params']['id'],'VoiceQueueId':_0x1d924e[_0x901d('0x4a')]['ids']},'individualHooks':!![]})[_0x901d('0x2a')](function(){return _0x38b46f;});}return _0x38b46f;})[_0x901d('0x2a')](respondWithStatusCode(_0x15fb34,null))[_0x901d('0x56')](handleError(_0x15fb34,null));};exports[_0x901d('0xb8')]=function(_0x29583e,_0x207eac){_0x29583e[_0x901d('0x63')][_0x901d('0xb9')]=_0x29583e[_0x901d('0xba')][_0x901d('0xbb')];return db[_0x901d('0x3e')]['find']({'where':{'id':_0x29583e['params']['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x207eac,null))[_0x901d('0x2a')](saveUpdates(_0x29583e[_0x901d('0x63')],null))[_0x901d('0x2a')](respondWithResult(_0x207eac,null))['catch'](handleError(_0x207eac,null));};exports[_0x901d('0xbc')]=function(_0x12afcc,_0x1c0e6a){var _0x46eec7=path[_0x901d('0xbd')](config[_0x901d('0xbe')],_0x901d('0xbf'));return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x12afcc['params']['id']},'attributes':['id',_0x901d('0xb9')],'raw':!![]})[_0x901d('0x2a')](handleEntityNotFound(_0x1c0e6a,null))['then'](function(_0x4e9def){if(_0x4e9def){if(_[_0x901d('0x6b')](_0x4e9def[_0x901d('0xb9')])){return _0x1c0e6a['download'](_0x46eec7);}else{if(!fs[_0x901d('0xc0')](path[_0x901d('0xbd')](config['root'],_0x901d('0xc1'),_0x4e9def['userpic']))){return _0x1c0e6a[_0x901d('0xc2')](_0x46eec7);}return _0x1c0e6a[_0x901d('0xc2')](path[_0x901d('0xbd')](config[_0x901d('0xbe')],'server/files/images/',_0x4e9def['userpic']));}}})['catch'](handleError(_0x1c0e6a,null));};exports[_0x901d('0xc3')]=function(_0x3c5403,_0x4e3acd){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x3c5403[_0x901d('0x58')]['id']},'attributes':['id']})['then'](handleEntityNotFound(_0x4e3acd,null))[_0x901d('0x2a')](function(_0x2df740){var _0x4dddb4=[];values=_0x2df740[_0x901d('0x4f')];_0x4dddb4[_0x901d('0x48')](get_open_tabs(_0x901d('0x4e'),_0x2df740[_0x901d('0x4f')]));_0x4dddb4[_0x901d('0x48')](get_open_tabs(_0x901d('0x50'),_0x2df740[_0x901d('0x4f')]));_0x4dddb4[_0x901d('0x48')](get_open_tabs(_0x901d('0x53'),_0x2df740[_0x901d('0x4f')]));_0x4dddb4[_0x901d('0x48')](get_open_tabs(_0x901d('0x54'),_0x2df740[_0x901d('0x4f')]));_0x4dddb4[_0x901d('0x48')](get_open_tabs(_0x901d('0x51'),_0x2df740[_0x901d('0x4f')]));_0x4dddb4[_0x901d('0x48')](get_open_tabs(_0x901d('0x52'),_0x2df740[_0x901d('0x4f')]));return BPromise['all'](_0x4dddb4);})['then'](function(_0x1f9776){var _0x1b6ec3=[];if(_0x1f9776){for(var _0x1138b0=0x0;_0x1138b0<values['ChatOpenTabs']['length'];_0x1138b0++){var _0x323f30=values[_0x901d('0xc4')][_0x1138b0];_0x1b6ec3[_0x901d('0x48')]({'channel':_0x901d('0xc5'),'id':_0x323f30['id'],'createdAt':_0x323f30[_0x901d('0xc6')]});}for(var _0x1138b0=0x0;_0x1138b0<values[_0x901d('0xc7')]['length'];_0x1138b0++){var _0x323f30=values[_0x901d('0xc7')][_0x1138b0];_0x1b6ec3[_0x901d('0x48')]({'channel':_0x901d('0xc8'),'id':_0x323f30['id'],'createdAt':_0x323f30['createdAt']});}for(var _0x1138b0=0x0;_0x1138b0<values[_0x901d('0xc9')][_0x901d('0x4d')];_0x1138b0++){var _0x323f30=values['OpenchannelOpenTabs'][_0x1138b0];_0x1b6ec3[_0x901d('0x48')]({'channel':_0x901d('0xca'),'id':_0x323f30['id'],'createdAt':_0x323f30[_0x901d('0xc6')]});}for(var _0x1138b0=0x0;_0x1138b0<values[_0x901d('0xcb')][_0x901d('0x4d')];_0x1138b0++){var _0x323f30=values[_0x901d('0xcb')][_0x1138b0];_0x1b6ec3['push']({'channel':_0x901d('0xcc'),'id':_0x323f30['id'],'createdAt':_0x323f30['createdAt']});}for(var _0x1138b0=0x0;_0x1138b0<values[_0x901d('0xcd')][_0x901d('0x4d')];_0x1138b0++){var _0x323f30=values[_0x901d('0xcd')][_0x1138b0];_0x1b6ec3[_0x901d('0x48')]({'channel':_0x901d('0xce'),'id':_0x323f30['id'],'createdAt':_0x323f30['createdAt']});}for(var _0x1138b0=0x0;_0x1138b0<values['WhatsappOpenTabs'][_0x901d('0x4d')];_0x1138b0++){var _0x323f30=values[_0x901d('0xcf')][_0x1138b0];_0x1b6ec3[_0x901d('0x48')]({'channel':_0x901d('0xd0'),'id':_0x323f30['id'],'createdAt':_0x323f30[_0x901d('0xc6')]});}var _0x37fe94={'count':_0x1b6ec3[_0x901d('0x4d')],'rows':_0x1b6ec3};return _0x37fe94;}else return null;})['then'](respondWithResult(_0x4e3acd,null))['catch'](handleError(_0x4e3acd,null));};exports[_0x901d('0xd1')]=function(_0xcb431,_0x537acc){var _0x35103b={};var _0x154cf7={};var _0x216017;var _0x5af456;return db['User']['findOne']({'where':{'id':_0xcb431[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x537acc,null))['then'](function(_0x4dc5d6){if(_0x4dc5d6){_0x216017=_0x4dc5d6;_0x154cf7['model']=_[_0x901d('0x59')](db[_0x901d('0xd2')][_0x901d('0x3f')]);_0x154cf7[_0x901d('0x4a')]=_['keys'](_0xcb431['query']);_0x154cf7[_0x901d('0x5a')]=_[_0x901d('0x5c')](_0x154cf7[_0x901d('0x5b')],_0x154cf7['query']);_0x35103b[_0x901d('0x47')]=_[_0x901d('0x5c')](_0x154cf7['model'],qs[_0x901d('0x5d')](_0xcb431[_0x901d('0x4a')][_0x901d('0x5d')]));_0x35103b['attributes']=_0x35103b[_0x901d('0x47')][_0x901d('0x4d')]?_0x35103b[_0x901d('0x47')]:_0x154cf7['model'];_0x35103b[_0x901d('0xd3')]=qs[_0x901d('0xd4')](_0xcb431[_0x901d('0x4a')][_0x901d('0xd4')]);_0x35103b[_0x901d('0xd5')]=qs[_0x901d('0x5a')](_['pick'](_0xcb431[_0x901d('0x4a')],_0x154cf7[_0x901d('0x5a')]));if(_0xcb431[_0x901d('0x4a')][_0x901d('0x34')]){_0x35103b[_0x901d('0xd5')]=_[_0x901d('0x5e')](_0x35103b['where'],{'$or':_[_0x901d('0x35')](_0x35103b[_0x901d('0x47')],function(_0xf3386c){var _0x1eeb79={};_0x1eeb79[_0xf3386c]={'$like':'%'+_0xcb431[_0x901d('0x4a')][_0x901d('0x34')]+'%'};return _0x1eeb79;})});}_0x35103b=_[_0x901d('0x5e')]({},_0x35103b,_0xcb431[_0x901d('0x5f')]);return _0x216017[_0x901d('0xd1')](_0x35103b);}})[_0x901d('0x2a')](function(_0x2bd439){if(_0x2bd439){_0x5af456=_0x2bd439[_0x901d('0x4d')];if(_0xcb431[_0x901d('0x4a')][_0x901d('0xd6')]('includeAll')){_0x35103b[_0x901d('0x46')]=[{'model':db['CmList'],'as':_0x901d('0xd7'),'required':![]},{'model':db[_0x901d('0xd8')],'as':'Tags','attributes':['id',_0x901d('0x39'),_0x901d('0xd9')],'where':_0xcb431['query'][_0x901d('0xda')]?{'id':_0xcb431[_0x901d('0x4a')][_0x901d('0xda')]}:undefined,'required':_0xcb431['query'][_0x901d('0xda')]?!![]:![]}];}if(!_0xcb431[_0x901d('0x4a')][_0x901d('0xd6')]('nolimit')){_0x35103b[_0x901d('0x26')]=qs[_0x901d('0x26')](_0xcb431[_0x901d('0x4a')][_0x901d('0x26')]);_0x35103b[_0x901d('0x24')]=qs[_0x901d('0x24')](_0xcb431[_0x901d('0x4a')][_0x901d('0x24')]);}return _0x216017[_0x901d('0xd1')](_0x35103b);}})['then'](function(_0x428132){if(_0x428132){return _0x428132?{'count':_0x5af456,'rows':_0x428132}:null;}})['then'](respondWithResult(_0x537acc,null))['catch'](handleError(_0x537acc,null));};exports[_0x901d('0xdb')]=function(_0x46461b,_0x309cce){var _0x1f3d9f;var _0x53554a;var _0x2db61e={};var _0x455a58;return db['User'][_0x901d('0x9b')]({'where':{'id':_0x46461b[_0x901d('0x58')]['id']},'attributes':['id',_0x901d('0x39'),_0x901d('0x2d')]})[_0x901d('0x2a')](handleEntityNotFound(_0x309cce,null))[_0x901d('0x2a')](function(_0x489c8e){if(!utils['isValidChannel'](_0x46461b['query'][_0x901d('0xb3')])){throw new db[(_0x901d('0x94'))][(_0x901d('0x95'))](_0x901d('0xa5'));}_0x1f3d9f=_0x489c8e;var _0x2504a5={};_0x2504a5[_0x901d('0x5b')]=_['keys'](db[_[_0x901d('0xaa')](_0x46461b[_0x901d('0x4a')][_0x901d('0xb3')])+_0x901d('0xdc')][_0x901d('0x3f')]);_0x2504a5['query']=_[_0x901d('0x59')](_0x46461b[_0x901d('0x4a')]);_0x2504a5[_0x901d('0x5a')]=_[_0x901d('0x5c')](_0x2504a5[_0x901d('0x5b')],_0x2504a5[_0x901d('0x4a')]);_0x2db61e['attributes']=_[_0x901d('0x5c')](_0x2504a5[_0x901d('0x5b')],qs['fields'](_0x46461b[_0x901d('0x4a')][_0x901d('0x5d')]));_0x2db61e[_0x901d('0x47')]=_0x2db61e[_0x901d('0x47')][_0x901d('0x4d')]?_0x2db61e[_0x901d('0x47')]:_0x2504a5[_0x901d('0x5b')];_0x2db61e['order']=qs[_0x901d('0xd4')](_0x46461b[_0x901d('0x4a')]['sort']);_0x2db61e['where']=qs[_0x901d('0x5a')](_['pick'](_0x46461b[_0x901d('0x4a')],_0x2504a5['filters']));if(_0x46461b[_0x901d('0x4a')][_0x901d('0x34')]){_0x2db61e[_0x901d('0xd5')]=_[_0x901d('0x5e')](_0x2db61e['where'],{'$or':_['map'](_0x2db61e['attributes'],function(_0x52e88c){var _0x2c76c3={};_0x2c76c3[_0x52e88c]={'$like':'%'+_0x46461b[_0x901d('0x4a')][_0x901d('0x34')]+'%'};return _0x2c76c3;})});}_0x2db61e=_[_0x901d('0x5e')]({},_0x2db61e,_0x46461b['options']);switch(_0x1f3d9f[_0x901d('0x2d')]){case _0x901d('0x2e'):return db[_[_0x901d('0xaa')](_0x46461b[_0x901d('0x4a')]['channel'])+_0x901d('0xdc')][_0x901d('0x8f')](_0x2db61e);case _0x901d('0x30'):case _0x901d('0x32'):return _0x1f3d9f[_0x901d('0x2c')+_['capitalize'](_0x46461b[_0x901d('0x4a')][_0x901d('0xb3')])+_0x901d('0xb5')](_0x2db61e);default:throw new db[(_0x901d('0x94'))][(_0x901d('0x95'))](_0x901d('0xdd'));}})[_0x901d('0x2a')](function(_0x446e31){_0x455a58=_0x446e31[_0x901d('0x4d')];if(!_0x46461b[_0x901d('0x4a')][_0x901d('0xd6')](_0x901d('0xde'))){_0x2db61e[_0x901d('0x26')]=qs[_0x901d('0x26')](_0x46461b[_0x901d('0x4a')][_0x901d('0x26')]);_0x2db61e[_0x901d('0x24')]=qs[_0x901d('0x24')](_0x46461b['query'][_0x901d('0x24')]);}switch(_0x1f3d9f[_0x901d('0x2d')]){case'admin':return db[_[_0x901d('0xaa')](_0x46461b[_0x901d('0x4a')][_0x901d('0xb3')])+'Queue'][_0x901d('0x8f')](_0x2db61e);case _0x901d('0x30'):case _0x901d('0x32'):return _0x1f3d9f[_0x901d('0x2c')+_[_0x901d('0xaa')](_0x46461b[_0x901d('0x4a')][_0x901d('0xb3')])+_0x901d('0xb5')](_0x2db61e);}})[_0x901d('0x2a')](function(_0x4e701b){return{'count':_0x455a58,'rows':_0x4e701b};})[_0x901d('0x2a')](respondWithResult(_0x309cce,null))['catch'](handleError(_0x309cce,null));};exports[_0x901d('0xdf')]=function(_0xc86273,_0x384ad4){var _0x544a79={};var _0x1b3a26={};var _0x2de970;var _0x2f02ff;return db[_0x901d('0x3e')][_0x901d('0x9b')]({'where':{'id':_0xc86273[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x384ad4,null))[_0x901d('0x2a')](function(_0xc8cb49){if(_0xc8cb49){_0x2de970=_0xc8cb49;_0x1b3a26[_0x901d('0x5b')]=_[_0x901d('0x59')](db[_0x901d('0xb1')][_0x901d('0x3f')]);_0x1b3a26[_0x901d('0x4a')]=_[_0x901d('0x59')](_0xc86273[_0x901d('0x4a')]);_0x1b3a26[_0x901d('0x5a')]=_[_0x901d('0x5c')](_0x1b3a26['model'],_0x1b3a26[_0x901d('0x4a')]);_0x544a79[_0x901d('0x47')]=_[_0x901d('0x5c')](_0x1b3a26[_0x901d('0x5b')],qs['fields'](_0xc86273[_0x901d('0x4a')][_0x901d('0x5d')]));_0x544a79[_0x901d('0x47')]=_0x544a79[_0x901d('0x47')][_0x901d('0x4d')]?_0x544a79[_0x901d('0x47')]:_0x1b3a26[_0x901d('0x5b')];_0x544a79[_0x901d('0xd3')]=qs[_0x901d('0xd4')](_0xc86273['query'][_0x901d('0xd4')]);_0x544a79[_0x901d('0xd5')]=qs[_0x901d('0x5a')](_[_0x901d('0xe0')](_0xc86273[_0x901d('0x4a')],_0x1b3a26[_0x901d('0x5a')]));if(_0xc86273['query'][_0x901d('0x34')]){_0x544a79[_0x901d('0xd5')]=_[_0x901d('0x5e')](_0x544a79[_0x901d('0xd5')],{'$or':_[_0x901d('0x35')](_0x544a79[_0x901d('0x47')],function(_0x2b0843){var _0xda361e={};_0xda361e[_0x2b0843]={'$like':'%'+_0xc86273[_0x901d('0x4a')]['filter']+'%'};return _0xda361e;})});}_0x544a79=_[_0x901d('0x5e')]({},_0x544a79,_0xc86273[_0x901d('0x5f')]);return _0x2de970[_0x901d('0xdf')](_0x544a79);}})[_0x901d('0x2a')](function(_0x24df75){if(_0x24df75){_0x2f02ff=_0x24df75['length'];if(!_0xc86273[_0x901d('0x4a')][_0x901d('0xd6')](_0x901d('0xde'))){_0x544a79[_0x901d('0x26')]=qs[_0x901d('0x26')](_0xc86273['query'][_0x901d('0x26')]);_0x544a79[_0x901d('0x24')]=qs['offset'](_0xc86273[_0x901d('0x4a')][_0x901d('0x24')]);}return _0x2de970[_0x901d('0xdf')](_0x544a79);}})[_0x901d('0x2a')](function(_0x25d632){if(_0x25d632){return _0x25d632?{'count':_0x2f02ff,'rows':_0x25d632}:null;}})[_0x901d('0x2a')](respondWithResult(_0x384ad4,null))[_0x901d('0x56')](handleError(_0x384ad4,null));};exports[_0x901d('0xe1')]=function(_0xb5c3db,_0x436b2f){var _0x3f9f5e={};var _0x10f578={};var _0x32756d;var _0x537940;return db[_0x901d('0x3e')][_0x901d('0x9b')]({'where':{'id':_0xb5c3db[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x436b2f,null))[_0x901d('0x2a')](function(_0x11d955){if(_0x11d955){_0x32756d=_0x11d955;_0x10f578[_0x901d('0x5b')]=_[_0x901d('0x59')](db[_0x901d('0xe2')][_0x901d('0x3f')]);_0x10f578[_0x901d('0x4a')]=_[_0x901d('0x59')](_0xb5c3db[_0x901d('0x4a')]);_0x10f578[_0x901d('0x5a')]=_['intersection'](_0x10f578['model'],_0x10f578[_0x901d('0x4a')]);_0x3f9f5e[_0x901d('0x47')]=_[_0x901d('0x5c')](_0x10f578[_0x901d('0x5b')],qs[_0x901d('0x5d')](_0xb5c3db[_0x901d('0x4a')][_0x901d('0x5d')]));_0x3f9f5e[_0x901d('0x47')]=_0x3f9f5e[_0x901d('0x47')][_0x901d('0x4d')]?_0x3f9f5e[_0x901d('0x47')]:_0x10f578[_0x901d('0x5b')];_0x3f9f5e[_0x901d('0xd3')]=qs['sort'](_0xb5c3db[_0x901d('0x4a')][_0x901d('0xd4')]);_0x3f9f5e[_0x901d('0xd5')]=qs['filters'](_[_0x901d('0xe0')](_0xb5c3db['query'],_0x10f578[_0x901d('0x5a')]));if(_0xb5c3db[_0x901d('0x4a')][_0x901d('0x34')]){_0x3f9f5e[_0x901d('0xd5')]=_[_0x901d('0x5e')](_0x3f9f5e[_0x901d('0xd5')],{'$or':_[_0x901d('0x35')](_0x3f9f5e['attributes'],function(_0x5c41af){var _0x28259a={};_0x28259a[_0x5c41af]={'$like':'%'+_0xb5c3db[_0x901d('0x4a')][_0x901d('0x34')]+'%'};return _0x28259a;})});}_0x3f9f5e=_[_0x901d('0x5e')]({},_0x3f9f5e,_0xb5c3db[_0x901d('0x5f')]);return _0x32756d[_0x901d('0xe1')](_0x3f9f5e);}})[_0x901d('0x2a')](function(_0x33ea41){if(_0x33ea41){_0x537940=_0x33ea41[_0x901d('0x4d')];if(!_0xb5c3db[_0x901d('0x4a')][_0x901d('0xd6')]('nolimit')){_0x3f9f5e['limit']=qs[_0x901d('0x26')](_0xb5c3db['query'][_0x901d('0x26')]);_0x3f9f5e['offset']=qs[_0x901d('0x24')](_0xb5c3db['query']['offset']);}return _0x32756d['getGroups'](_0x3f9f5e);}})[_0x901d('0x2a')](function(_0x2f403b){if(_0x2f403b){return _0x2f403b?{'count':_0x537940,'rows':_0x2f403b}:null;}})[_0x901d('0x2a')](respondWithResult(_0x436b2f,null))[_0x901d('0x56')](handleError(_0x436b2f,null));};exports[_0x901d('0xe3')]=function(_0x4d3672,_0x4f40d0){var _0x3b3e52={'raw':!![],'where':{}};var _0x5f30a5={};var _0x10e86a={'count':0x0,'rows':[]};return db[_0x901d('0x3e')][_0x901d('0x9b')]({'where':{'id':_0x4d3672[_0x901d('0x58')]['id']}})['then'](handleEntityNotFound(_0x4f40d0,null))[_0x901d('0x2a')](function(_0x3e6d32){if(_0x3e6d32){_0x5f30a5['model']=_[_0x901d('0x59')](db[_0x901d('0xe4')][_0x901d('0x3f')]);_0x5f30a5[_0x901d('0x4a')]=_['keys'](_0x4d3672[_0x901d('0x4a')]);_0x5f30a5[_0x901d('0x5a')]=_[_0x901d('0x5c')](_0x5f30a5[_0x901d('0x5b')],_0x5f30a5[_0x901d('0x4a')]);_0x3b3e52[_0x901d('0x47')]=_[_0x901d('0x5c')](_0x5f30a5['model'],qs[_0x901d('0x5d')](_0x4d3672[_0x901d('0x4a')][_0x901d('0x5d')]));_0x3b3e52['attributes']=_0x3b3e52[_0x901d('0x47')][_0x901d('0x4d')]?_0x3b3e52[_0x901d('0x47')]:_0x5f30a5[_0x901d('0x5b')];if(!_0x4d3672['query'][_0x901d('0xd6')](_0x901d('0xde'))){_0x3b3e52['limit']=qs[_0x901d('0x26')](_0x4d3672['query'][_0x901d('0x26')]);_0x3b3e52[_0x901d('0x24')]=qs[_0x901d('0x24')](_0x4d3672[_0x901d('0x4a')][_0x901d('0x24')]);}_0x3b3e52[_0x901d('0xd3')]=qs[_0x901d('0xd4')](_0x4d3672[_0x901d('0x4a')]['sort']);_0x3b3e52[_0x901d('0xd5')]=qs[_0x901d('0x5a')](_[_0x901d('0xe0')](_0x4d3672[_0x901d('0x4a')],_0x5f30a5[_0x901d('0x5a')]));_0x3b3e52[_0x901d('0xd5')]['UserId']=_0x3e6d32['id'];if(_0x4d3672['query'][_0x901d('0x34')]){_0x3b3e52['where']=_['merge'](_0x3b3e52[_0x901d('0xd5')],{'$or':_[_0x901d('0x35')](_0x3b3e52[_0x901d('0x47')],function(_0x1cdf47){var _0xccdd40={};_0xccdd40[_0x1cdf47]={'$like':'%'+_0x4d3672[_0x901d('0x4a')][_0x901d('0x34')]+'%'};return _0xccdd40;})});}_0x3b3e52=_[_0x901d('0x5e')]({},_0x3b3e52,_0x4d3672[_0x901d('0x5f')]);return db[_0x901d('0xe4')]['count']({'where':_0x3b3e52[_0x901d('0xd5')]})[_0x901d('0x2a')](function(_0x22b4fa){_0x10e86a[_0x901d('0x27')]=_0x22b4fa;if(_0x4d3672[_0x901d('0x4a')]['includeAll']){_0x3b3e52[_0x901d('0x46')]=[{'all':!![]}];}return db[_0x901d('0xe4')][_0x901d('0x8f')](_0x3b3e52);})[_0x901d('0x2a')](function(_0x47878b){_0x10e86a[_0x901d('0x49')]=_0x47878b;return _0x10e86a;});}})[_0x901d('0x2a')](respondWithFilteredResult(_0x4f40d0,_0x3b3e52))['catch'](handleError(_0x4f40d0,null));};exports[_0x901d('0xe5')]=function(_0x1e33bd,_0x10dc19){var _0x20e346={'raw':!![],'where':{}};var _0x4e8248={};var _0x3beb68={'count':0x0,'rows':[]};return db[_0x901d('0x3e')]['findOne']({'where':{'id':_0x1e33bd[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x10dc19,null))[_0x901d('0x2a')](function(_0x590187){if(_0x590187){_0x4e8248[_0x901d('0x5b')]=_[_0x901d('0x59')](db[_0x901d('0xe6')]['rawAttributes']);_0x4e8248[_0x901d('0x4a')]=_[_0x901d('0x59')](_0x1e33bd[_0x901d('0x4a')]);_0x4e8248[_0x901d('0x5a')]=_[_0x901d('0x5c')](_0x4e8248['model'],_0x4e8248[_0x901d('0x4a')]);_0x20e346[_0x901d('0x47')]=_[_0x901d('0x5c')](_0x4e8248[_0x901d('0x5b')],qs[_0x901d('0x5d')](_0x1e33bd[_0x901d('0x4a')][_0x901d('0x5d')]));_0x20e346[_0x901d('0x47')]=_0x20e346['attributes'][_0x901d('0x4d')]?_0x20e346['attributes']:_0x4e8248[_0x901d('0x5b')];if(!_0x1e33bd[_0x901d('0x4a')][_0x901d('0xd6')](_0x901d('0xde'))){_0x20e346[_0x901d('0x26')]=qs[_0x901d('0x26')](_0x1e33bd[_0x901d('0x4a')][_0x901d('0x26')]);_0x20e346[_0x901d('0x24')]=qs[_0x901d('0x24')](_0x1e33bd[_0x901d('0x4a')]['offset']);}_0x20e346[_0x901d('0xd3')]=qs[_0x901d('0xd4')](_0x1e33bd[_0x901d('0x4a')]['sort']);_0x20e346[_0x901d('0xd5')]=qs['filters'](_[_0x901d('0xe0')](_0x1e33bd[_0x901d('0x4a')],_0x4e8248['filters']));_0x20e346[_0x901d('0xd5')][_0x901d('0xe7')]=_0x590187['id'];if(_0x1e33bd[_0x901d('0x4a')][_0x901d('0x34')]){_0x20e346[_0x901d('0xd5')]=_[_0x901d('0x5e')](_0x20e346[_0x901d('0xd5')],{'$or':_[_0x901d('0x35')](_0x20e346[_0x901d('0x47')],function(_0x5c3862){var _0x4f9b29={};_0x4f9b29[_0x5c3862]={'$like':'%'+_0x1e33bd[_0x901d('0x4a')][_0x901d('0x34')]+'%'};return _0x4f9b29;})});}_0x20e346=_[_0x901d('0x5e')]({},_0x20e346,_0x1e33bd[_0x901d('0x5f')]);return db[_0x901d('0xe6')][_0x901d('0x27')]({'where':_0x20e346[_0x901d('0xd5')]})[_0x901d('0x2a')](function(_0x2451bb){_0x3beb68[_0x901d('0x27')]=_0x2451bb;if(_0x1e33bd[_0x901d('0x4a')][_0x901d('0x45')]){_0x20e346[_0x901d('0x46')]=[{'all':!![]}];}return db[_0x901d('0xe6')]['findAll'](_0x20e346);})['then'](function(_0x99d9dc){_0x3beb68['rows']=_0x99d9dc;return _0x3beb68;});}})[_0x901d('0x2a')](respondWithFilteredResult(_0x10dc19,_0x20e346))[_0x901d('0x56')](handleError(_0x10dc19,null));};exports[_0x901d('0xe8')]=function(_0x45bfd6,_0x54e91e){var _0x3fa62b={};var _0x21f196={};var _0x983026;var _0x480d83;return db[_0x901d('0x3e')]['findOne']({'where':{'id':_0x45bfd6['params']['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x54e91e,null))[_0x901d('0x2a')](function(_0x4492e0){if(_0x4492e0){_0x983026=_0x4492e0;_0x21f196[_0x901d('0x5b')]=_[_0x901d('0x59')](db[_0x901d('0xe9')][_0x901d('0x3f')]);_0x21f196[_0x901d('0x4a')]=_[_0x901d('0x59')](_0x45bfd6[_0x901d('0x4a')]);_0x21f196[_0x901d('0x5a')]=_[_0x901d('0x5c')](_0x21f196[_0x901d('0x5b')],_0x21f196[_0x901d('0x4a')]);_0x3fa62b[_0x901d('0x47')]=_[_0x901d('0x5c')](_0x21f196[_0x901d('0x5b')],qs[_0x901d('0x5d')](_0x45bfd6[_0x901d('0x4a')][_0x901d('0x5d')]));_0x3fa62b['attributes']=_0x3fa62b[_0x901d('0x47')][_0x901d('0x4d')]?_0x3fa62b[_0x901d('0x47')]:_0x21f196[_0x901d('0x5b')];_0x3fa62b[_0x901d('0xd3')]=qs['sort'](_0x45bfd6['query'][_0x901d('0xd4')]);_0x3fa62b[_0x901d('0xd5')]=qs['filters'](_[_0x901d('0xe0')](_0x45bfd6[_0x901d('0x4a')],_0x21f196['filters']));if(_0x45bfd6[_0x901d('0x4a')][_0x901d('0x34')]){_0x3fa62b[_0x901d('0xd5')]=_['merge'](_0x3fa62b['where'],{'$or':_[_0x901d('0x35')](_0x3fa62b[_0x901d('0x47')],function(_0x5ba785){var _0x1845a8={};_0x1845a8[_0x5ba785]={'$like':'%'+_0x45bfd6[_0x901d('0x4a')][_0x901d('0x34')]+'%'};return _0x1845a8;})});}_0x3fa62b=_[_0x901d('0x5e')]({},_0x3fa62b,_0x45bfd6[_0x901d('0x5f')]);return _0x983026[_0x901d('0xe8')](_0x3fa62b);}})[_0x901d('0x2a')](function(_0xd56f65){if(_0xd56f65){_0x480d83=_0xd56f65[_0x901d('0x4d')];if(!_0x45bfd6['query'][_0x901d('0xd6')](_0x901d('0xde'))){_0x3fa62b[_0x901d('0x26')]=qs[_0x901d('0x26')](_0x45bfd6[_0x901d('0x4a')]['limit']);_0x3fa62b[_0x901d('0x24')]=qs[_0x901d('0x24')](_0x45bfd6[_0x901d('0x4a')]['offset']);}return _0x983026[_0x901d('0xe8')](_0x3fa62b);}})[_0x901d('0x2a')](function(_0x143fb1){if(_0x143fb1){return _0x143fb1?{'count':_0x480d83,'rows':_0x143fb1}:null;}})['then'](respondWithResult(_0x54e91e,null))[_0x901d('0x56')](handleError(_0x54e91e,null));};exports[_0x901d('0xea')]=function(_0x5afe1e,_0x361fff){var _0x1238ec={};var _0x3044e6={};var _0x378cc3;var _0xc57182;return db['User'][_0x901d('0x9b')]({'where':{'id':_0x5afe1e[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x361fff,null))[_0x901d('0x2a')](function(_0x25d06a){if(_0x25d06a){_0x378cc3=_0x25d06a;_0x3044e6[_0x901d('0x5b')]=_[_0x901d('0x59')](db['OpenchannelInteraction'][_0x901d('0x3f')]);_0x3044e6[_0x901d('0x4a')]=_[_0x901d('0x59')](_0x5afe1e['query']);_0x3044e6[_0x901d('0x5a')]=_[_0x901d('0x5c')](_0x3044e6[_0x901d('0x5b')],_0x3044e6[_0x901d('0x4a')]);_0x1238ec[_0x901d('0x47')]=_[_0x901d('0x5c')](_0x3044e6[_0x901d('0x5b')],qs[_0x901d('0x5d')](_0x5afe1e[_0x901d('0x4a')][_0x901d('0x5d')]));_0x1238ec[_0x901d('0x47')]=_0x1238ec[_0x901d('0x47')][_0x901d('0x4d')]?_0x1238ec[_0x901d('0x47')]:_0x3044e6[_0x901d('0x5b')];_0x1238ec[_0x901d('0xd3')]=qs[_0x901d('0xd4')](_0x5afe1e[_0x901d('0x4a')][_0x901d('0xd4')]);_0x1238ec[_0x901d('0xd5')]=qs[_0x901d('0x5a')](_[_0x901d('0xe0')](_0x5afe1e[_0x901d('0x4a')],_0x3044e6['filters']));if(_0x5afe1e[_0x901d('0x4a')][_0x901d('0x34')]){_0x1238ec['where']=_[_0x901d('0x5e')](_0x1238ec['where'],{'$or':_[_0x901d('0x35')](_0x1238ec['attributes'],function(_0x492ad4){var _0x479acf={};_0x479acf[_0x492ad4]={'$like':'%'+_0x5afe1e[_0x901d('0x4a')][_0x901d('0x34')]+'%'};return _0x479acf;})});}_0x1238ec=_[_0x901d('0x5e')]({},_0x1238ec,_0x5afe1e[_0x901d('0x5f')]);return _0x378cc3['getOpenchannelInteractions'](_0x1238ec);}})[_0x901d('0x2a')](function(_0x58cf82){if(_0x58cf82){_0xc57182=_0x58cf82[_0x901d('0x4d')];if(!_0x5afe1e[_0x901d('0x4a')][_0x901d('0xd6')](_0x901d('0xde'))){_0x1238ec['limit']=qs[_0x901d('0x26')](_0x5afe1e[_0x901d('0x4a')][_0x901d('0x26')]);_0x1238ec[_0x901d('0x24')]=qs[_0x901d('0x24')](_0x5afe1e[_0x901d('0x4a')]['offset']);}return _0x378cc3['getOpenchannelInteractions'](_0x1238ec);}})[_0x901d('0x2a')](function(_0x4a5cd9){if(_0x4a5cd9){return _0x4a5cd9?{'count':_0xc57182,'rows':_0x4a5cd9}:null;}})[_0x901d('0x2a')](respondWithResult(_0x361fff,null))[_0x901d('0x56')](handleError(_0x361fff,null));};exports[_0x901d('0xeb')]=function(_0x5ef70c,_0xc79dda){var _0x2cd357={'raw':!![],'where':{}};var _0x48350b={};var _0x12c8c8={'count':0x0,'rows':[]};return db[_0x901d('0x3e')]['findOne']({'where':{'id':_0x5ef70c['params']['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0xc79dda,null))[_0x901d('0x2a')](function(_0x233426){if(_0x233426){_0x48350b[_0x901d('0x5b')]=_['keys'](db[_0x901d('0xec')][_0x901d('0x3f')]);_0x48350b['query']=_[_0x901d('0x59')](_0x5ef70c[_0x901d('0x4a')]);_0x48350b['filters']=_['intersection'](_0x48350b[_0x901d('0x5b')],_0x48350b['query']);_0x2cd357[_0x901d('0x47')]=_['intersection'](_0x48350b['model'],qs['fields'](_0x5ef70c[_0x901d('0x4a')]['fields']));_0x2cd357[_0x901d('0x47')]=_0x2cd357[_0x901d('0x47')]['length']?_0x2cd357['attributes']:_0x48350b['model'];if(!_0x5ef70c[_0x901d('0x4a')][_0x901d('0xd6')](_0x901d('0xde'))){_0x2cd357[_0x901d('0x26')]=qs[_0x901d('0x26')](_0x5ef70c['query'][_0x901d('0x26')]);_0x2cd357[_0x901d('0x24')]=qs[_0x901d('0x24')](_0x5ef70c[_0x901d('0x4a')]['offset']);}_0x2cd357[_0x901d('0xd3')]=qs['sort'](_0x5ef70c[_0x901d('0x4a')][_0x901d('0xd4')]);_0x2cd357[_0x901d('0xd5')]=qs[_0x901d('0x5a')](_['pick'](_0x5ef70c['query'],_0x48350b[_0x901d('0x5a')]));_0x2cd357[_0x901d('0xd5')][_0x901d('0xe7')]=_0x233426['id'];if(_0x5ef70c[_0x901d('0x4a')][_0x901d('0x34')]){_0x2cd357[_0x901d('0xd5')]=_[_0x901d('0x5e')](_0x2cd357[_0x901d('0xd5')],{'$or':_[_0x901d('0x35')](_0x2cd357[_0x901d('0x47')],function(_0x380167){var _0x5d484a={};_0x5d484a[_0x380167]={'$like':'%'+_0x5ef70c['query'][_0x901d('0x34')]+'%'};return _0x5d484a;})});}_0x2cd357=_[_0x901d('0x5e')]({},_0x2cd357,_0x5ef70c[_0x901d('0x5f')]);return db['MailInteraction'][_0x901d('0x27')]({'where':_0x2cd357[_0x901d('0xd5')]})[_0x901d('0x2a')](function(_0x3a7622){_0x12c8c8[_0x901d('0x27')]=_0x3a7622;if(_0x5ef70c[_0x901d('0x4a')][_0x901d('0x45')]){_0x2cd357['include']=[{'all':!![]}];}return db[_0x901d('0xec')][_0x901d('0x8f')](_0x2cd357);})[_0x901d('0x2a')](function(_0x512179){_0x12c8c8[_0x901d('0x49')]=_0x512179;return _0x12c8c8;});}})[_0x901d('0x2a')](respondWithFilteredResult(_0xc79dda,_0x2cd357))['catch'](handleError(_0xc79dda,null));};exports['getSmsInteractions']=function(_0x5858b8,_0x175460){var _0x3759ee={};var _0x1d04e8={};var _0x42a874;var _0x590789;return db[_0x901d('0x3e')][_0x901d('0x9b')]({'where':{'id':_0x5858b8[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x175460,null))[_0x901d('0x2a')](function(_0x264c3f){if(_0x264c3f){_0x42a874=_0x264c3f;_0x1d04e8[_0x901d('0x5b')]=_[_0x901d('0x59')](db['SmsInteraction'][_0x901d('0x3f')]);_0x1d04e8['query']=_[_0x901d('0x59')](_0x5858b8[_0x901d('0x4a')]);_0x1d04e8['filters']=_[_0x901d('0x5c')](_0x1d04e8['model'],_0x1d04e8['query']);_0x3759ee['attributes']=_[_0x901d('0x5c')](_0x1d04e8[_0x901d('0x5b')],qs[_0x901d('0x5d')](_0x5858b8['query'][_0x901d('0x5d')]));_0x3759ee[_0x901d('0x47')]=_0x3759ee[_0x901d('0x47')][_0x901d('0x4d')]?_0x3759ee[_0x901d('0x47')]:_0x1d04e8[_0x901d('0x5b')];_0x3759ee['order']=qs['sort'](_0x5858b8[_0x901d('0x4a')]['sort']);_0x3759ee[_0x901d('0xd5')]=qs[_0x901d('0x5a')](_['pick'](_0x5858b8['query'],_0x1d04e8['filters']));if(_0x5858b8[_0x901d('0x4a')]['filter']){_0x3759ee[_0x901d('0xd5')]=_[_0x901d('0x5e')](_0x3759ee[_0x901d('0xd5')],{'$or':_[_0x901d('0x35')](_0x3759ee[_0x901d('0x47')],function(_0x2afd61){var _0x3bfe4c={};_0x3bfe4c[_0x2afd61]={'$like':'%'+_0x5858b8[_0x901d('0x4a')][_0x901d('0x34')]+'%'};return _0x3bfe4c;})});}_0x3759ee=_[_0x901d('0x5e')]({},_0x3759ee,_0x5858b8[_0x901d('0x5f')]);return _0x42a874[_0x901d('0xed')](_0x3759ee);}})['then'](function(_0xb9dc68){if(_0xb9dc68){_0x590789=_0xb9dc68[_0x901d('0x4d')];if(!_0x5858b8[_0x901d('0x4a')]['hasOwnProperty'](_0x901d('0xde'))){_0x3759ee[_0x901d('0x26')]=qs[_0x901d('0x26')](_0x5858b8[_0x901d('0x4a')][_0x901d('0x26')]);_0x3759ee[_0x901d('0x24')]=qs['offset'](_0x5858b8[_0x901d('0x4a')][_0x901d('0x24')]);}return _0x42a874['getSmsInteractions'](_0x3759ee);}})[_0x901d('0x2a')](function(_0x4b750a){if(_0x4b750a){return _0x4b750a?{'count':_0x590789,'rows':_0x4b750a}:null;}})[_0x901d('0x2a')](respondWithResult(_0x175460,null))[_0x901d('0x56')](handleError(_0x175460,null));};exports[_0x901d('0xee')]=function(_0x4e6300,_0x5d483a){var _0x4e7e53={};var _0x312365={};var _0xe4f856;var _0x5ebb5c;return db[_0x901d('0x3e')][_0x901d('0x9b')]({'where':{'id':_0x4e6300[_0x901d('0x58')]['id']}})['then'](handleEntityNotFound(_0x5d483a,null))['then'](function(_0x2d8172){if(_0x2d8172){_0xe4f856=_0x2d8172;_0x312365['model']=_[_0x901d('0x59')](db[_0x901d('0xef')]['rawAttributes']);_0x312365[_0x901d('0x4a')]=_[_0x901d('0x59')](_0x4e6300[_0x901d('0x4a')]);_0x312365[_0x901d('0x5a')]=_[_0x901d('0x5c')](_0x312365[_0x901d('0x5b')],_0x312365[_0x901d('0x4a')]);_0x4e7e53[_0x901d('0x47')]=_['intersection'](_0x312365[_0x901d('0x5b')],qs[_0x901d('0x5d')](_0x4e6300['query'][_0x901d('0x5d')]));_0x4e7e53[_0x901d('0x47')]=_0x4e7e53[_0x901d('0x47')]['length']?_0x4e7e53[_0x901d('0x47')]:_0x312365[_0x901d('0x5b')];_0x4e7e53[_0x901d('0xd3')]=qs[_0x901d('0xd4')](_0x4e6300['query'][_0x901d('0xd4')]);_0x4e7e53[_0x901d('0xd5')]=qs[_0x901d('0x5a')](_[_0x901d('0xe0')](_0x4e6300[_0x901d('0x4a')],_0x312365[_0x901d('0x5a')]));if(_0x4e6300[_0x901d('0x4a')][_0x901d('0x34')]){_0x4e7e53[_0x901d('0xd5')]=_[_0x901d('0x5e')](_0x4e7e53[_0x901d('0xd5')],{'$or':_[_0x901d('0x35')](_0x4e7e53[_0x901d('0x47')],function(_0x2fdfc1){var _0xff548a={};_0xff548a[_0x2fdfc1]={'$like':'%'+_0x4e6300[_0x901d('0x4a')][_0x901d('0x34')]+'%'};return _0xff548a;})});}_0x4e7e53=_['merge']({},_0x4e7e53,_0x4e6300[_0x901d('0x5f')]);return _0xe4f856[_0x901d('0xee')](_0x4e7e53);}})[_0x901d('0x2a')](function(_0xfb123d){if(_0xfb123d){_0x5ebb5c=_0xfb123d[_0x901d('0x4d')];if(!_0x4e6300[_0x901d('0x4a')][_0x901d('0xd6')](_0x901d('0xde'))){_0x4e7e53['limit']=qs[_0x901d('0x26')](_0x4e6300[_0x901d('0x4a')][_0x901d('0x26')]);_0x4e7e53[_0x901d('0x24')]=qs['offset'](_0x4e6300['query'][_0x901d('0x24')]);}return _0xe4f856[_0x901d('0xee')](_0x4e7e53);}})[_0x901d('0x2a')](function(_0x2ae31f){if(_0x2ae31f){return _0x2ae31f?{'count':_0x5ebb5c,'rows':_0x2ae31f}:null;}})[_0x901d('0x2a')](respondWithResult(_0x5d483a,null))[_0x901d('0x56')](handleError(_0x5d483a,null));};exports[_0x901d('0xf0')]=function(_0x5a6599,_0x1db650){var _0x1acba4={};var _0x305517={};var _0x3d18e1;var _0x4f2de4;return db[_0x901d('0x3e')][_0x901d('0x9b')]({'where':{'id':_0x5a6599[_0x901d('0x58')]['id']}})['then'](handleEntityNotFound(_0x1db650,null))[_0x901d('0x2a')](function(_0x132061){if(_0x132061){_0x3d18e1=_0x132061;_0x305517['model']=_[_0x901d('0x59')](db[_0x901d('0xf1')][_0x901d('0x3f')]);_0x305517[_0x901d('0x4a')]=_[_0x901d('0x59')](_0x5a6599[_0x901d('0x4a')]);_0x305517[_0x901d('0x5a')]=_['intersection'](_0x305517[_0x901d('0x5b')],_0x305517[_0x901d('0x4a')]);_0x1acba4[_0x901d('0x47')]=_['intersection'](_0x305517[_0x901d('0x5b')],qs[_0x901d('0x5d')](_0x5a6599[_0x901d('0x4a')][_0x901d('0x5d')]));_0x1acba4['attributes']=_0x1acba4[_0x901d('0x47')][_0x901d('0x4d')]?_0x1acba4[_0x901d('0x47')]:_0x305517['model'];_0x1acba4[_0x901d('0xd3')]=qs[_0x901d('0xd4')](_0x5a6599['query']['sort']);_0x1acba4[_0x901d('0xd5')]=qs[_0x901d('0x5a')](_['pick'](_0x5a6599[_0x901d('0x4a')],_0x305517[_0x901d('0x5a')]));if(_0x5a6599['query']['filter']){_0x1acba4[_0x901d('0xd5')]=_['merge'](_0x1acba4[_0x901d('0xd5')],{'$or':_['map'](_0x1acba4[_0x901d('0x47')],function(_0x3f11ac){var _0x47bc13={};_0x47bc13[_0x3f11ac]={'$like':'%'+_0x5a6599[_0x901d('0x4a')][_0x901d('0x34')]+'%'};return _0x47bc13;})});}_0x1acba4=_[_0x901d('0x5e')]({},_0x1acba4,_0x5a6599[_0x901d('0x5f')]);return _0x3d18e1['getWhatsappInteractions'](_0x1acba4);}})[_0x901d('0x2a')](function(_0x493ebc){if(_0x493ebc){_0x4f2de4=_0x493ebc[_0x901d('0x4d')];if(!_0x5a6599[_0x901d('0x4a')][_0x901d('0xd6')](_0x901d('0xde'))){_0x1acba4[_0x901d('0x26')]=qs['limit'](_0x5a6599['query'][_0x901d('0x26')]);_0x1acba4[_0x901d('0x24')]=qs[_0x901d('0x24')](_0x5a6599['query'][_0x901d('0x24')]);}return _0x3d18e1[_0x901d('0xf0')](_0x1acba4);}})[_0x901d('0x2a')](function(_0x2f65ab){if(_0x2f65ab){return _0x2f65ab?{'count':_0x4f2de4,'rows':_0x2f65ab}:null;}})[_0x901d('0x2a')](respondWithResult(_0x1db650,null))[_0x901d('0x56')](handleError(_0x1db650,null));};exports['login']=function(_0x42a097,_0x589b03,_0x133890){var _0x5a6b7f;var _0x1368ef;var _0x7ca353;var _0x4084d1=!_[_0x901d('0x6b')](_0x42a097[_0x901d('0x58')]['id'])?_0x42a097[_0x901d('0x58')]['id']:!_['isNil'](_0x42a097[_0x901d('0x30')]['id'])?_0x42a097[_0x901d('0x30')]['id']:null;return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x4084d1,'role':{'$or':[_0x901d('0x2e'),'user',_0x901d('0x32')]}},'attributes':['id',_0x901d('0x39'),'phone','mobile','role','internal',_0x901d('0xa2')]})[_0x901d('0x2a')](function(_0x123769){if(_0x123769){if(_0x123769[_0x901d('0x2d')]===_0x901d('0x32')){_0x5a6b7f=_0x123769;if(_0x42a097[_0x901d('0x63')][_0x901d('0xa3')]){_0x7ca353=util[_0x901d('0xae')](_0x901d('0xf2'),_0x5a6b7f[_0x42a097['body']['interface']]);}else if(_0x42a097[_0x901d('0x63')][_0x901d('0xf3')]){_0x7ca353=util['format'](_0x901d('0xaf'),_0x42a097[_0x901d('0x63')][_0x901d('0xf3')]);}else{_0x7ca353=util[_0x901d('0xae')](_0x901d('0xaf'),_0x5a6b7f[_0x901d('0x39')]);}socket['to'](util['format'](_0x901d('0xf4'),_0x5a6b7f[_0x901d('0x39')]))[_0x901d('0xa9')](_0x901d('0xf5'),{'user':{'id':_0x5a6b7f['id'],'name':_0x5a6b7f[_0x901d('0x39')]},'ip':_0x42a097[_0x901d('0xf6')][_0x901d('0xf7')]||_0x42a097[_0x901d('0xf8')][_0x901d('0xf9')]||_0x42a097['socket'][_0x901d('0xf9')]||_0x42a097[_0x901d('0xf8')][_0x901d('0xfa')][_0x901d('0xf9')]});return db[_0x901d('0xb1')][_0x901d('0x2b')]({'where':{'membername':_0x5a6b7f[_0x901d('0x39')]},'individualHooks':!![]});}}else{throw new db['Sequelize'][(_0x901d('0x95'))](_0x901d('0xfb'));}})[_0x901d('0x2a')](function(){if(_0x5a6b7f){return _0x5a6b7f[_0x901d('0xfc')]({'raw':!![]});}})[_0x901d('0x2a')](function(_0xcda1f5){if(_0x5a6b7f){var _0x5e8d65=[];if(_0xcda1f5){_0x1368ef=_0xcda1f5;if(_0x1368ef['length']){for(var _0x5b1baf=0x0;_0x5b1baf<_0x1368ef[_0x901d('0x4d')];_0x5b1baf++){_0x5e8d65['push']({'membername':_0x5a6b7f[_0x901d('0x39')],'UserId':_0x5a6b7f['id'],'queue_name':_0x1368ef[_0x5b1baf]['name'],'VoiceQueueId':_0x1368ef[_0x5b1baf]['id'],'interface':_0x7ca353,'paused':_0x5a6b7f[_0x901d('0xa2')]||![],'penalty':_0x1368ef[_0x5b1baf][_0x901d('0xfd')]||0x0});}return BPromise[_0x901d('0x8e')](_0x5e8d65,function(_0x21c06b){return db[_0x901d('0xb1')]['upsert'](_0x21c06b);});}}}})[_0x901d('0x2a')](function(){if(_0x5a6b7f){return db['MemberReport']['findAll']({'where':{'membername':_0x5a6b7f[_0x901d('0x39')],'exitAt':null}});}})[_0x901d('0x2a')](function(_0x562b14){if(_0x5a6b7f){var _0x5758f5=[];_0x562b14[_0x901d('0xfe')](function(_0xe747b7){_0x5758f5[_0x901d('0x48')](_0xe747b7['update']({'exitAt':moment()[_0x901d('0xae')](_0x901d('0xff'))}));});return BPromise[_0x901d('0x55')](_0x5758f5);}})[_0x901d('0x2a')](function(){if(_0x5a6b7f){var _0x3ac27d=[];var _0x12785f=[];var _0x42b550=utils['getChannels']();var _0x3981bf={'membername':_0x5a6b7f['name'],'interface':_0x7ca353,'enterAt':moment()[_0x901d('0xae')](_0x901d('0xff')),'role':_0x5a6b7f[_0x901d('0x2d')],'internal':_0x5a6b7f[_0x901d('0x66')]};_0x42b550['forEach'](function(_0x3503a0){_0x3ac27d['push'](_['merge']({'channel':_0x3503a0,'type':_0x901d('0x100'),'data1':_0x42a097[_0x901d('0x63')][_0x901d('0x101')],'data2':_0x7ca353},_0x3981bf));if(_0x5a6b7f['loginInPause']){_0x12785f[_0x901d('0x48')](_[_0x901d('0x5e')]({'channel':_0x3503a0,'type':_0x901d('0x102'),'data1':'LOGININPAUSE'},_0x3981bf));}});return db[_0x901d('0x103')][_0x901d('0x8c')](_0x3ac27d['concat'](_0x12785f),{'individualHooks':!![]});}})[_0x901d('0x2a')](function(){if(_0x5a6b7f){return _0x5a6b7f['update']({'online':!![],'lastLoginAt':moment()[_0x901d('0xae')](_0x901d('0xff')),'voicePause':_0x5a6b7f[_0x901d('0xa2')]||![],'mailPause':_0x5a6b7f[_0x901d('0xa2')]||![],'chatPause':_0x5a6b7f[_0x901d('0xa2')]||![],'faxPause':_0x5a6b7f[_0x901d('0xa2')]||![],'smsPause':_0x5a6b7f['loginInPause']||![],'openchannelPause':_0x5a6b7f[_0x901d('0xa2')]||![],'whatsappPause':_0x5a6b7f[_0x901d('0xa2')]||![],'pauseType':_0x5a6b7f[_0x901d('0xa2')]?_0x901d('0x104'):null,'interface':_0x7ca353,'lastPauseAt':moment()['format'](_0x901d('0xff'))});}})[_0x901d('0x2a')](function(_0x4ba4eb){if(_0x42a097[_0x901d('0x105')]){return _0x133890();}else{return BPromise[_0x901d('0x106')](_0x4ba4eb)['then'](respondWithResult(_0x589b03,null));}})[_0x901d('0x56')](handleError(_0x589b03,null));};exports[_0x901d('0x107')]=function(_0x25246a,_0x44358b){var _0x533c2b;return db['User'][_0x901d('0x38')]({'where':{'id':_0x25246a[_0x901d('0x58')]['id'],'role':_0x901d('0x32')},'attributes':['id','name','role']})[_0x901d('0x2a')](handleEntityNotFound(_0x44358b,null))[_0x901d('0x2a')](function(_0x4bc5aa){if(_0x4bc5aa){_0x533c2b=_0x4bc5aa;return db[_0x901d('0xb1')][_0x901d('0x2b')]({'where':{'membername':_0x533c2b[_0x901d('0x39')]},'individualHooks':!![]});}})[_0x901d('0x2a')](function(){return db[_0x901d('0x103')][_0x901d('0x8f')]({'where':{'membername':_0x533c2b[_0x901d('0x39')],'exitAt':null}});})['then'](function(_0x461e93){var _0x333a32=[];_0x461e93[_0x901d('0xfe')](function(_0x28fc92){_0x333a32['push'](_0x28fc92[_0x901d('0x60')]({'exitAt':moment()[_0x901d('0xae')](_0x901d('0xff'))}));});return BPromise[_0x901d('0x55')](_0x333a32);})[_0x901d('0x2a')](function(){return _0x533c2b['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x901d('0x2a')](respondWithResult(_0x44358b,null))['catch'](handleError(_0x44358b,null));};exports[_0x901d('0x108')]=function(_0x103cfd,_0x52999a){var _0x36a48e;return db['UserVoiceQueueRt'][_0x901d('0x60')]({'paused':0x1},{'where':{'UserId':_0x103cfd['params']['id']},'individualHooks':!![]})['then'](function(){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x103cfd['params']['id'],'role':_0x901d('0x32')},'attributes':['id',_0x901d('0x39'),_0x901d('0x2d'),_0x901d('0x66'),_0x901d('0xa3')]});})[_0x901d('0x2a')](handleEntityNotFound(_0x52999a,null))[_0x901d('0x2a')](function(_0x447a9a){if(_0x447a9a){_0x36a48e=_0x447a9a;return respondWithRpcPromise(_0x901d('0x109'),_0x901d('0x108'),{'id':_0x36a48e['id'],'name':_0x36a48e[_0x901d('0x39')],'pause':!![]});}})[_0x901d('0x2a')](function(){if(_0x36a48e){return db[_0x901d('0x103')][_0x901d('0x8f')]({'where':{'membername':_0x36a48e[_0x901d('0x39')],'type':_0x901d('0x102'),'exitAt':null}});}})[_0x901d('0x2a')](function(_0x52896c){if(_0x52896c[_0x901d('0x4d')]){var _0x4ae545=moment()['format'](_0x901d('0xff'));for(var _0x46fdc3=0x0,_0x4ac29e=_0x52896c[_0x901d('0x4d')];_0x46fdc3<_0x4ac29e;_0x46fdc3++){_0x52896c[_0x46fdc3][_0x901d('0x10a')]({'exitAt':_0x4ae545});}}})['then'](function(){var _0x21ef8e=[];var _0x3ab72c=utils[_0x901d('0x10b')]();_0x3ab72c['forEach'](function(_0x9592b8){_0x21ef8e[_0x901d('0x48')]({'channel':_0x9592b8,'membername':_0x36a48e[_0x901d('0x39')],'interface':_['isNil'](_0x36a48e['interface'])?util['format']('SIP/%s',_0x36a48e[_0x901d('0x39')]):_0x36a48e[_0x901d('0xa3')],'type':'PAUSE','enterAt':moment()[_0x901d('0xae')](_0x901d('0xff')),'data1':_0x103cfd[_0x901d('0x63')]['type']||_0x901d('0x10c'),'role':_0x36a48e[_0x901d('0x2d')],'internal':_0x36a48e['internal']});});return db[_0x901d('0x103')][_0x901d('0x8c')](_0x21ef8e,{'individualHooks':!![]});})[_0x901d('0x2a')](function(){return _0x36a48e['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x103cfd[_0x901d('0x63')][_0x901d('0x41')]||_0x901d('0x10c'),'lastPauseAt':moment()['format'](_0x901d('0xff'))});})[_0x901d('0x2a')](respondWithResult(_0x52999a,null))[_0x901d('0x56')](handleError(_0x52999a,null));};exports[_0x901d('0x10d')]=function(_0x4bbec2,_0x293604){var _0x50b408;return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x4bbec2[_0x901d('0x58')]['id']},'attributes':['id',_0x901d('0x39'),'role',_0x901d('0xb0'),_0x901d('0x10e'),'chatPause',_0x901d('0x10f'),_0x901d('0x110'),'smsPause',_0x901d('0x111'),'pauseType','lastPauseAt']})['then'](handleEntityNotFound(_0x293604,null))['then'](function(_0x4cc4fb){if(_0x4cc4fb){_0x50b408=_0x4cc4fb;if(_0x4bbec2[_0x901d('0x63')]['channel']&&!utils[_0x901d('0xa4')](_0x4bbec2[_0x901d('0x63')][_0x901d('0xb3')])){throw new db[(_0x901d('0x94'))][(_0x901d('0x95'))](_0x901d('0xa5'));}switch(_0x4bbec2[_0x901d('0x63')][_0x901d('0xb3')]){case _0x901d('0xac'):return respondWithRpcPromise(_0x901d('0x109'),_0x901d('0x10d'),{'id':_0x50b408['id'],'name':_0x50b408[_0x901d('0x39')],'pause':![]})['then'](function(){return db['UserVoiceQueueRt'][_0x901d('0x60')]({'paused':0x0},{'where':{'UserId':_0x50b408['id']},'individualHooks':!![]});})[_0x901d('0x2a')](function(){return db[_0x901d('0x103')][_0x901d('0x38')]({'where':{'channel':_0x4bbec2[_0x901d('0x63')][_0x901d('0xb3')],'membername':_0x50b408['name'],'type':_0x901d('0x102'),'exitAt':null}});})[_0x901d('0x2a')](function(_0x3a8962){if(_0x3a8962){return _0x3a8962['update']({'exitAt':moment()[_0x901d('0xae')](_0x901d('0xff')),'data2':_0x901d('0x112')},{'individualHooks':!![]});}return null;})[_0x901d('0x2a')](function(){return _0x50b408['update']({'voicePause':![]});});case _0x901d('0x52'):case _0x901d('0x4e'):case _0x901d('0x51'):case _0x901d('0x50'):case _0x901d('0x54'):case'openchannel':return db[_0x901d('0x103')][_0x901d('0x38')]({'where':{'channel':_0x4bbec2['body'][_0x901d('0xb3')],'membername':_0x50b408[_0x901d('0x39')],'type':_0x901d('0x102'),'exitAt':null}})[_0x901d('0x2a')](function(_0x5530d5){if(_0x5530d5){return _0x5530d5['update']({'exitAt':moment()[_0x901d('0xae')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x901d('0x112')},{'individualHooks':!![]});}return null;})['then'](function(){var _0x4b696c={};_[_0x901d('0x28')](_0x4b696c,util['format'](_0x901d('0x113'),_0x4bbec2[_0x901d('0x63')][_0x901d('0xb3')],_0x901d('0x114')),![]);return _0x50b408[_0x901d('0x60')](_0x4b696c);});default:return respondWithRpcPromise(_0x901d('0x109'),_0x901d('0x10d'),{'id':_0x50b408['id'],'name':_0x50b408['name'],'pause':![]})[_0x901d('0x2a')](function(){return db['UserVoiceQueueRt'][_0x901d('0x60')]({'paused':0x0},{'where':{'UserId':_0x50b408['id']}});})[_0x901d('0x2a')](function(){return db['MemberReport'][_0x901d('0x8f')]({'where':{'membername':_0x50b408[_0x901d('0x39')],'type':_0x901d('0x102'),'exitAt':null}});})[_0x901d('0x2a')](function(_0x2981da){var _0x32e1f0=[];_0x2981da[_0x901d('0xfe')](function(_0x373f19){_0x32e1f0[_0x901d('0x48')](_0x373f19[_0x901d('0x60')]({'exitAt':moment()[_0x901d('0xae')](_0x901d('0xff')),'data2':_0x901d('0x112')}));});return BPromise[_0x901d('0x55')](_0x32e1f0);})[_0x901d('0x2a')](function(){return _0x50b408[_0x901d('0x60')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x901d('0x2a')](respondWithResult(_0x293604,null))[_0x901d('0x56')](handleError(_0x293604,null));};exports[_0x901d('0x115')]=function(_0x169004,_0x303bc2){var _0x100761={};var _0x326e74={};var _0x57e851;var _0x2329a3;return db[_0x901d('0x3e')][_0x901d('0x9b')]({'where':{'id':_0x169004['params']['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x303bc2,null))[_0x901d('0x2a')](function(_0x528630){if(_0x528630){_0x57e851=_0x528630;_0x326e74[_0x901d('0x5b')]=_['keys'](db[_0x901d('0x116')][_0x901d('0x3f')]);_0x326e74[_0x901d('0x4a')]=_[_0x901d('0x59')](_0x169004[_0x901d('0x4a')]);_0x326e74[_0x901d('0x5a')]=_[_0x901d('0x5c')](_0x326e74[_0x901d('0x5b')],_0x326e74[_0x901d('0x4a')]);_0x100761[_0x901d('0x47')]=_['intersection'](_0x326e74['model'],qs[_0x901d('0x5d')](_0x169004[_0x901d('0x4a')][_0x901d('0x5d')]));_0x100761['attributes']=_0x100761[_0x901d('0x47')][_0x901d('0x4d')]?_0x100761[_0x901d('0x47')]:_0x326e74['model'];_0x100761[_0x901d('0xd3')]=qs[_0x901d('0xd4')](_0x169004[_0x901d('0x4a')][_0x901d('0xd4')]);_0x100761[_0x901d('0xd5')]=qs[_0x901d('0x5a')](_['pick'](_0x169004[_0x901d('0x4a')],_0x326e74[_0x901d('0x5a')]));if(_0x169004[_0x901d('0x4a')][_0x901d('0x34')]){_0x100761[_0x901d('0xd5')]=_[_0x901d('0x5e')](_0x100761[_0x901d('0xd5')],{'$or':_[_0x901d('0x35')](_0x100761['attributes'],function(_0x39c8b2){var _0x2a0335={};_0x2a0335[_0x39c8b2]={'$like':'%'+_0x169004[_0x901d('0x4a')]['filter']+'%'};return _0x2a0335;})});}_0x100761=_[_0x901d('0x5e')]({},_0x100761,_0x169004[_0x901d('0x5f')]);return _0x57e851[_0x901d('0x115')](_0x100761);}})['then'](function(_0x2bcfdd){if(_0x2bcfdd){_0x2329a3=_0x2bcfdd[_0x901d('0x4d')];if(!_0x169004[_0x901d('0x4a')][_0x901d('0xd6')](_0x901d('0xde'))){_0x100761['limit']=qs[_0x901d('0x26')](_0x169004['query'][_0x901d('0x26')]);_0x100761[_0x901d('0x24')]=qs[_0x901d('0x24')](_0x169004[_0x901d('0x4a')][_0x901d('0x24')]);}return _0x57e851[_0x901d('0x115')](_0x100761);}})['then'](function(_0x363973){if(_0x363973){return _0x363973?{'count':_0x2329a3,'rows':_0x363973}:null;}})['then'](respondWithResult(_0x303bc2,null))['catch'](handleError(_0x303bc2,null));};exports[_0x901d('0x117')]=function(_0x455952,_0x164421){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x455952[_0x901d('0x58')]['id']}})['then'](handleEntityNotFound(_0x164421,null))[_0x901d('0x2a')](function(_0x506832){if(_0x506832){var _0xd3580=_0x506832[_0x901d('0x2c')]({'plain':!![]});return _0x506832[_0x901d('0x117')](_0x455952['body'][_0x901d('0x64')],_['omit'](_0x455952[_0x901d('0x63')],[_0x901d('0x64'),'id'])||{})['then'](function(){for(var _0x140fed=0x0;_0x140fed<_0x455952[_0x901d('0x63')]['ids'][_0x901d('0x4d')];_0x140fed++){var _0x2919e0=[];var _0x2ccb2a={};db[_0x901d('0x116')]['findOne']({'where':{'id':_0x455952[_0x901d('0x63')][_0x901d('0x64')][_0x140fed]}})['then'](function(_0xdb7ae7){_0x2ccb2a=_0xdb7ae7[_0x901d('0x4f')];_0x2919e0['push'](_0xdb7ae7[_0x901d('0xfc')]()[_0x901d('0x2a')](function(_0x3f2fe3){for(var _0x331d1b=0x0;_0x331d1b<_0x3f2fe3[_0x901d('0x4d')];_0x331d1b++){_0x3f2fe3[_0x331d1b][_0x901d('0x118')](_0x901d('0xb3'),_0x901d('0x119'));}return _0x3f2fe3;}));_0x2919e0[_0x901d('0x48')](_0xdb7ae7[_0x901d('0x11a')]()['then'](function(_0x5cb843){for(var _0x411edf=0x0;_0x411edf<_0x5cb843[_0x901d('0x4d')];_0x411edf++){_0x5cb843[_0x411edf][_0x901d('0x118')](_0x901d('0xb3'),'Chat');}return _0x5cb843;}));_0x2919e0[_0x901d('0x48')](_0xdb7ae7[_0x901d('0x11b')]()[_0x901d('0x2a')](function(_0x18e96f){for(var _0x527569=0x0;_0x527569<_0x18e96f[_0x901d('0x4d')];_0x527569++){_0x18e96f[_0x527569][_0x901d('0x118')](_0x901d('0xb3'),_0x901d('0x11c'));}return _0x18e96f;}));_0x2919e0['push'](_0xdb7ae7[_0x901d('0x11d')]()[_0x901d('0x2a')](function(_0x466e38){for(var _0x45edf8=0x0;_0x45edf8<_0x466e38[_0x901d('0x4d')];_0x45edf8++){_0x466e38[_0x45edf8]['setDataValue'](_0x901d('0xb3'),_0x901d('0x11e'));}return _0x466e38;}));_0x2919e0[_0x901d('0x48')](_0xdb7ae7[_0x901d('0x11f')]()[_0x901d('0x2a')](function(_0x2c625b){for(var _0x106212=0x0;_0x106212<_0x2c625b[_0x901d('0x4d')];_0x106212++){_0x2c625b[_0x106212][_0x901d('0x118')](_0x901d('0xb3'),_0x901d('0x120'));}return _0x2c625b;}));_0x2919e0['push'](_0xdb7ae7[_0x901d('0x121')]()['then'](function(_0x4c9e74){for(var _0x9b0028=0x0;_0x9b0028<_0x4c9e74[_0x901d('0x4d')];_0x9b0028++){_0x4c9e74[_0x9b0028]['setDataValue'](_0x901d('0xb3'),_0x901d('0x122'));}return _0x4c9e74;}));_0x2919e0[_0x901d('0x48')](_0xdb7ae7[_0x901d('0x123')]()[_0x901d('0x2a')](function(_0x5ef469){for(var _0x3701b6=0x0;_0x3701b6<_0x5ef469[_0x901d('0x4d')];_0x3701b6++){_0x5ef469[_0x3701b6][_0x901d('0x118')](_0x901d('0xb3'),_0x901d('0x124'));}return _0x5ef469;}));return BPromise['all'](_0x2919e0);})['then'](function(_0x16c68f){var _0x46464f=_['flatten'](_0x16c68f);_0x2919e0=[];return db[_0x901d('0x6d')][_0x901d('0x125')](function(_0x42f990){for(var _0x4d59ab=0x0;_0x4d59ab<_0x46464f[_0x901d('0x4d')];_0x4d59ab++){_0x2919e0['push'](_0x46464f[_0x4d59ab][_0x901d('0x126')](_0xd3580['id']),{'transaction':_0x42f990});}return BPromise[_0x901d('0x55')](_0x2919e0)['then'](function(){if(_0xd3580[_0x901d('0xa1')]){return BPromise[_0x901d('0x8e')](_[_0x901d('0x34')](_0x46464f,function(_0x2b89ae){return _0x2b89ae[_0x901d('0x127')](_0x901d('0xb3'))===_0x901d('0x119');}),function(_0x233caf){return db[_0x901d('0xb1')][_0x901d('0x128')]({'membername':_0xd3580['name'],'UserId':_0xd3580['id'],'queue_name':_0x233caf[_0x901d('0x39')],'VoiceQueueId':_0x233caf['id'],'interface':_[_0x901d('0x6b')](_0xd3580[_0x901d('0xa3')])?util['format']('SIP/%s',_0xd3580[_0x901d('0x39')]):_0xd3580[_0x901d('0xa3')],'paused':_0xd3580['voicePause']||![],'penalty':_0xd3580['penalty']},{'transaction':_0x42f990});});}else{return;}})[_0x901d('0x2a')](function(){for(var _0x3f9320=0x0;_0x3f9320<_0x46464f[_0x901d('0x4d')];_0x3f9320++){var _0x5f0677=_0x46464f[_0x3f9320][_0x901d('0x127')](_0x901d('0xb3'));var _0x4cc6cd=_0x5f0677+'QueueId';socket['emit'](_0x901d('0x30')+_0x5f0677+_0x901d('0xab'),{'UserId':_0xd3580['id'],['queueField']:_0x46464f[_0x3f9320]['id']});}});});})['then'](function(){db[_0x901d('0x129')][_0x901d('0x9b')]({'where':{'teamId':_0x2ccb2a['id']}})[_0x901d('0x2a')](function(_0x42afaa){if(_0x42afaa){db[_0x901d('0x12a')][_0x901d('0x85')]({'UserId':_0x455952['params']['id'],'VoicePrefixId':_0x42afaa[_0x901d('0x12b')]});}});});}});}})[_0x901d('0x2a')](respondWithStatusCode(_0x164421,null))[_0x901d('0x56')](handleError(_0x164421,null));};exports[_0x901d('0x12c')]=function(_0x48f417,_0x187e15){return db[_0x901d('0x3e')][_0x901d('0x9b')]({'where':{'id':_0x48f417[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x187e15,null))[_0x901d('0x2a')](function(_0x1cd724){if(_0x1cd724){var _0x81a22c=_0x1cd724['get']({'plain':!![]});var _0x46343e=_0x48f417['query'][_0x901d('0x64')];return _0x1cd724[_0x901d('0x12c')](_0x46343e)[_0x901d('0x2a')](function(){for(var _0x503867=0x0;_0x503867<_0x46343e[_0x901d('0x4d')];_0x503867++){var _0x2a81b7=[];var _0x49b827={};db[_0x901d('0x116')]['findOne']({'where':{'id':_0x46343e[_0x503867]}})['then'](function(_0x1a6f9b){_0x49b827=_0x1a6f9b[_0x901d('0x4f')];_0x2a81b7[_0x901d('0x48')](_0x1a6f9b[_0x901d('0xfc')]()[_0x901d('0x2a')](function(_0x4e5484){for(var _0x48bcd0=0x0;_0x48bcd0<_0x4e5484[_0x901d('0x4d')];_0x48bcd0++){_0x4e5484[_0x48bcd0][_0x901d('0x118')](_0x901d('0xb3'),'Voice');}return _0x4e5484;}));_0x2a81b7['push'](_0x1a6f9b[_0x901d('0x11a')]()['then'](function(_0x3f9da1){for(var _0x550377=0x0;_0x550377<_0x3f9da1[_0x901d('0x4d')];_0x550377++){_0x3f9da1[_0x550377]['setDataValue'](_0x901d('0xb3'),_0x901d('0x12d'));}return _0x3f9da1;}));_0x2a81b7[_0x901d('0x48')](_0x1a6f9b['getMailQueues']()['then'](function(_0x5c3352){for(var _0x2a908b=0x0;_0x2a908b<_0x5c3352['length'];_0x2a908b++){_0x5c3352[_0x2a908b]['setDataValue'](_0x901d('0xb3'),_0x901d('0x11c'));}return _0x5c3352;}));_0x2a81b7[_0x901d('0x48')](_0x1a6f9b[_0x901d('0x11d')]()[_0x901d('0x2a')](function(_0x3418a5){for(var _0x1928da=0x0;_0x1928da<_0x3418a5[_0x901d('0x4d')];_0x1928da++){_0x3418a5[_0x1928da][_0x901d('0x118')](_0x901d('0xb3'),_0x901d('0x11e'));}return _0x3418a5;}));_0x2a81b7[_0x901d('0x48')](_0x1a6f9b[_0x901d('0x11f')]()[_0x901d('0x2a')](function(_0x41cf67){for(var _0x3063b6=0x0;_0x3063b6<_0x41cf67[_0x901d('0x4d')];_0x3063b6++){_0x41cf67[_0x3063b6]['setDataValue'](_0x901d('0xb3'),_0x901d('0x120'));}return _0x41cf67;}));_0x2a81b7[_0x901d('0x48')](_0x1a6f9b[_0x901d('0x121')]()['then'](function(_0x504a84){for(var _0x3abfb1=0x0;_0x3abfb1<_0x504a84['length'];_0x3abfb1++){_0x504a84[_0x3abfb1]['setDataValue'](_0x901d('0xb3'),_0x901d('0x122'));}return _0x504a84;}));_0x2a81b7[_0x901d('0x48')](_0x1a6f9b[_0x901d('0x123')]()[_0x901d('0x2a')](function(_0x441e2d){for(var _0xfb1ba3=0x0;_0xfb1ba3<_0x441e2d[_0x901d('0x4d')];_0xfb1ba3++){_0x441e2d[_0xfb1ba3][_0x901d('0x118')](_0x901d('0xb3'),'Openchannel');}return _0x441e2d;}));return BPromise[_0x901d('0x55')](_0x2a81b7);})['then'](function(_0x299802){var _0x547006=_[_0x901d('0x12e')](_0x299802);_0x2a81b7=[];return db['sequelize']['transaction'](function(_0x2bb189){for(var _0x368581=0x0;_0x368581<_0x547006[_0x901d('0x4d')];_0x368581++){_0x2a81b7['push'](_0x547006[_0x368581][_0x901d('0x12f')](_0x81a22c['id']),{'transaction':_0x2bb189});}return BPromise[_0x901d('0x55')](_0x2a81b7)[_0x901d('0x2a')](function(){if(_0x81a22c['online']){return BPromise[_0x901d('0x8e')](_['filter'](_0x547006,function(_0x39695c){return _0x39695c[_0x901d('0x127')](_0x901d('0xb3'))===_0x901d('0x119');}),function(_0xece081){return db[_0x901d('0xb1')][_0x901d('0x2b')]({'where':{'VoiceQueueId':_0xece081['id'],'UserId':_0x81a22c['id']},'transaction':_0x2bb189});});}else{return;}})['then'](function(){db[_0x901d('0x129')]['findOne']({'where':{'teamId':_0x49b827['id']}})['then'](function(_0x4c35f7){if(_0x4c35f7){return db[_0x901d('0x12a')][_0x901d('0x2b')]({'where':{'UserId':_0x81a22c['id'],'VoicePrefixId':_0x4c35f7[_0x901d('0x4f')][_0x901d('0x12b')]}});}});})['then'](function(){for(var _0x33935f=0x0;_0x33935f<_0x547006[_0x901d('0x4d')];_0x33935f++){var _0x1b9612=_0x547006[_0x33935f][_0x901d('0x127')](_0x901d('0xb3'));var _0x52ccac=_0x1b9612+'QueueId';socket[_0x901d('0xa9')]('user'+_0x1b9612+_0x901d('0xb7'),{'UserId':_0x81a22c['id'],['queueField']:_0x547006[_0x33935f]['id']});}});});});}});}})[_0x901d('0x2a')](respondWithStatusCode(_0x187e15,null))['catch'](handleError(_0x187e15,null));};exports[_0x901d('0x130')]=function(_0x13e12e,_0x2187d6){var _0x241986={};var _0x3fd639={};var _0x4bd89d;var _0x4f7a4c;return db['User'][_0x901d('0x9b')]({'where':{'id':_0x13e12e[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x2187d6,null))[_0x901d('0x2a')](function(_0x6a069){if(_0x6a069){_0x4bd89d=_0x6a069;_0x3fd639[_0x901d('0x5b')]=_['keys'](db[_0x901d('0x131')][_0x901d('0x3f')]);_0x3fd639['query']=_[_0x901d('0x59')](_0x13e12e['query']);_0x3fd639[_0x901d('0x5a')]=_[_0x901d('0x5c')](_0x3fd639[_0x901d('0x5b')],_0x3fd639[_0x901d('0x4a')]);_0x241986['attributes']=_[_0x901d('0x5c')](_0x3fd639[_0x901d('0x5b')],qs['fields'](_0x13e12e[_0x901d('0x4a')]['fields']));_0x241986['attributes']=_0x241986[_0x901d('0x47')][_0x901d('0x4d')]?_0x241986['attributes']:_0x3fd639[_0x901d('0x5b')];_0x241986['order']=qs['sort'](_0x13e12e['query']['sort']);_0x241986[_0x901d('0xd5')]=qs[_0x901d('0x5a')](_[_0x901d('0xe0')](_0x13e12e[_0x901d('0x4a')],_0x3fd639[_0x901d('0x5a')]));if(_0x13e12e[_0x901d('0x4a')][_0x901d('0x34')]){_0x241986['where']=_['merge'](_0x241986[_0x901d('0xd5')],{'$or':_[_0x901d('0x35')](_0x241986[_0x901d('0x47')],function(_0x1f09ca){var _0xd440c9={};_0xd440c9[_0x1f09ca]={'$like':'%'+_0x13e12e[_0x901d('0x4a')][_0x901d('0x34')]+'%'};return _0xd440c9;})});}_0x241986=_[_0x901d('0x5e')]({},_0x241986,_0x13e12e[_0x901d('0x5f')]);return _0x4bd89d[_0x901d('0x130')](_0x241986);}})['then'](function(_0x5d2f05){if(_0x5d2f05){_0x4f7a4c=_0x5d2f05[_0x901d('0x4d')];if(!_0x13e12e[_0x901d('0x4a')][_0x901d('0xd6')](_0x901d('0xde'))){_0x241986['limit']=qs['limit'](_0x13e12e[_0x901d('0x4a')][_0x901d('0x26')]);_0x241986[_0x901d('0x24')]=qs['offset'](_0x13e12e[_0x901d('0x4a')][_0x901d('0x24')]);}return _0x4bd89d[_0x901d('0x130')](_0x241986);}})[_0x901d('0x2a')](function(_0x28a11a){if(_0x28a11a){return _0x28a11a?{'count':_0x4f7a4c,'rows':_0x28a11a}:null;}})['then'](respondWithResult(_0x2187d6,null))[_0x901d('0x56')](handleError(_0x2187d6,null));};exports[_0x901d('0x132')]=function(_0x275d64,_0x22d339){var _0x1087e6={};var _0x553058={};var _0x415ec4;var _0x3537a5;return db[_0x901d('0x3e')][_0x901d('0x9b')]({'where':{'id':_0x275d64[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x22d339,null))[_0x901d('0x2a')](function(_0x310c81){if(_0x310c81){_0x415ec4=_0x310c81;_0x553058[_0x901d('0x5b')]=_[_0x901d('0x59')](db[_0x901d('0x3e')][_0x901d('0x3f')]);_0x553058['query']=_[_0x901d('0x59')](_0x275d64[_0x901d('0x4a')]);_0x553058[_0x901d('0x5a')]=_[_0x901d('0x5c')](_0x553058[_0x901d('0x5b')],_0x553058[_0x901d('0x4a')]);_0x1087e6[_0x901d('0x47')]=_[_0x901d('0x5c')](_0x553058['model'],qs[_0x901d('0x5d')](_0x275d64['query'][_0x901d('0x5d')]));_0x1087e6[_0x901d('0x47')]=_0x1087e6['attributes'][_0x901d('0x4d')]?_0x1087e6[_0x901d('0x47')]:_0x553058[_0x901d('0x5b')];_0x1087e6[_0x901d('0xd3')]=qs[_0x901d('0xd4')](_0x275d64[_0x901d('0x4a')][_0x901d('0xd4')]);_0x1087e6[_0x901d('0xd5')]=qs['filters'](_['pick'](_0x275d64['query'],_0x553058[_0x901d('0x5a')]));if(_0x275d64[_0x901d('0x4a')][_0x901d('0x34')]){_0x1087e6[_0x901d('0xd5')]=_[_0x901d('0x5e')](_0x1087e6[_0x901d('0xd5')],{'$or':_[_0x901d('0x35')](_0x1087e6[_0x901d('0x47')],function(_0x22b8d4){var _0x4da69f={};_0x4da69f[_0x22b8d4]={'$like':'%'+_0x275d64[_0x901d('0x4a')]['filter']+'%'};return _0x4da69f;})});}_0x1087e6['model']=db[_0x901d('0x3e')];_0x1087e6['as']=_0x901d('0x31');_0x1087e6=_[_0x901d('0x5e')]({},_0x1087e6,_0x275d64[_0x901d('0x5f')]);return _0x415ec4[_0x901d('0xfc')]({'include':[_0x1087e6]});}})['then'](function(_0x50e9ec){if(_0x50e9ec){var _0x217c8a={},_0x182126=[],_0x5d62f7=0x0;for(var _0x12d7fb=0x0;_0x12d7fb<_0x50e9ec['length'];_0x12d7fb+=0x1){for(var _0x5ea1ba=0x0,_0x170fe3;_0x5ea1ba<_0x50e9ec[_0x12d7fb][_0x901d('0x31')][_0x901d('0x4d')];_0x5ea1ba+=0x1){_0x170fe3=_0x50e9ec[_0x12d7fb]['Agents'][_0x5ea1ba][_0x901d('0x2c')]({'plain':!![]});_0x217c8a[_0x170fe3['id']]=_0x170fe3;}}_0x217c8a=_[_0x901d('0x133')](_0x217c8a);for(var _0x3aab3b=qs[_0x901d('0x24')](_0x275d64[_0x901d('0x4a')][_0x901d('0x24')]);_0x3aab3b<_0x217c8a[_0x901d('0x4d')]&&_0x182126[_0x901d('0x4d')]<qs[_0x901d('0x26')](_0x275d64[_0x901d('0x4a')][_0x901d('0x26')]);_0x3aab3b+=0x1){if(_0x217c8a[_0x3aab3b]){_0x182126[_0x901d('0x48')](_0x217c8a[_0x3aab3b]);}}return{'count':_0x217c8a[_0x901d('0x4d')],'rows':_0x182126};}})[_0x901d('0x2a')](respondWithResult(_0x22d339,null))['catch'](handleError(_0x22d339,null));};exports[_0x901d('0x2b')]=function(_0x4d691b,_0xbcf81e){if(_0x4d691b[_0x901d('0x30')]['id']==_0x4d691b[_0x901d('0x58')]['id']){return _0xbcf81e[_0x901d('0x22')](0x1f4)[_0x901d('0x3c')]({'message':_0x901d('0x134')});}return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x4d691b[_0x901d('0x58')]['id']}})['then'](handleEntityNotFound(_0xbcf81e,null))[_0x901d('0x2a')](removeEntity(_0xbcf81e,null))[_0x901d('0x56')](handleError(_0xbcf81e,null));};exports['addChatInteractions']=function(_0x529361,_0x3199fd){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x529361[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x3199fd,null))[_0x901d('0x2a')](function(_0x292054){if(_0x292054){return _0x292054[_0x901d('0x135')](_0x529361[_0x901d('0x63')][_0x901d('0x64')],_[_0x901d('0x65')](_0x529361['body'],[_0x901d('0x64'),'id'])||{})[_0x901d('0x136')](function(){for(var _0x1d732b=0x0;_0x1d732b<_0x529361['body'][_0x901d('0x64')][_0x901d('0x4d')];_0x1d732b+=0x1){socket[_0x901d('0xa9')](_0x901d('0x137'),{'ChatInteractionId':Number(_0x529361[_0x901d('0x63')]['ids'][_0x1d732b]),'UserId':Number(_0x529361[_0x901d('0x58')]['id'])});}return _0x529361[_0x901d('0x63')][_0x901d('0x64')];});}})[_0x901d('0x2a')](respondWithResult(_0x3199fd,null))[_0x901d('0x56')](handleError(_0x3199fd,null));};exports[_0x901d('0x138')]=function(_0x3c043b,_0xa4bc2c){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x3c043b[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0xa4bc2c,null))[_0x901d('0x2a')](function(_0x3f34bd){if(_0x3f34bd){return _0x3f34bd['removeChatInteractions'](_0x3c043b[_0x901d('0x4a')]['ids'])[_0x901d('0x2a')](function(){if(_['isArray'](_0x3c043b[_0x901d('0x4a')][_0x901d('0x64')])){for(var _0x2cdede=0x0;_0x2cdede<_0x3c043b[_0x901d('0x4a')]['ids'][_0x901d('0x4d')];_0x2cdede+=0x1){socket[_0x901d('0xa9')](_0x901d('0x139'),{'ChatInteractionId':Number(_0x3c043b['query'][_0x901d('0x64')][_0x2cdede]),'UserId':Number(_0x3c043b[_0x901d('0x58')]['id'])});}}else{socket[_0x901d('0xa9')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x3c043b[_0x901d('0x4a')]['ids']),'UserId':Number(_0x3c043b['params']['id'])});}});}})[_0x901d('0x2a')](respondWithStatusCode(_0xa4bc2c,null))[_0x901d('0x56')](handleError(_0xa4bc2c,null));};exports[_0x901d('0x13a')]=function(_0x2f8750,_0x3c7ceb){return db[_0x901d('0x3e')]['find']({'where':{'id':_0x2f8750[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x3c7ceb,null))[_0x901d('0x2a')](function(_0x2cd26d){if(_0x2cd26d){return _0x2cd26d[_0x901d('0x13a')](_0x2f8750[_0x901d('0x63')][_0x901d('0x64')],_[_0x901d('0x65')](_0x2f8750[_0x901d('0x63')],[_0x901d('0x64'),'id'])||{})[_0x901d('0x136')](function(){for(var _0x485161=0x0;_0x485161<_0x2f8750['body'][_0x901d('0x64')]['length'];_0x485161+=0x1){socket[_0x901d('0xa9')]('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x2f8750[_0x901d('0x63')][_0x901d('0x64')][_0x485161]),'UserId':Number(_0x2f8750[_0x901d('0x58')]['id'])});}return _0x2f8750[_0x901d('0x63')][_0x901d('0x64')];});}})[_0x901d('0x2a')](respondWithResult(_0x3c7ceb,null))[_0x901d('0x56')](handleError(_0x3c7ceb,null));};exports[_0x901d('0x13b')]=function(_0x2922ca,_0x14c02e){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x2922ca[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x14c02e,null))['then'](function(_0x298ea3){if(_0x298ea3){return _0x298ea3[_0x901d('0x13b')](_0x2922ca[_0x901d('0x4a')][_0x901d('0x64')])[_0x901d('0x2a')](function(){if(_[_0x901d('0x13c')](_0x2922ca['query'][_0x901d('0x64')])){for(var _0x2b37a3=0x0;_0x2b37a3<_0x2922ca[_0x901d('0x4a')][_0x901d('0x64')][_0x901d('0x4d')];_0x2b37a3+=0x1){socket['emit'](_0x901d('0x13d'),{'MailInteractionId':Number(_0x2922ca[_0x901d('0x4a')][_0x901d('0x64')][_0x2b37a3]),'UserId':Number(_0x2922ca[_0x901d('0x58')]['id'])});}}else{socket[_0x901d('0xa9')](_0x901d('0x13d'),{'MailInteractionId':Number(_0x2922ca[_0x901d('0x4a')]['ids']),'UserId':Number(_0x2922ca[_0x901d('0x58')]['id'])});}});}})[_0x901d('0x2a')](respondWithStatusCode(_0x14c02e,null))[_0x901d('0x56')](handleError(_0x14c02e,null));};exports['addFaxInteractions']=function(_0x5d3297,_0x27dd7e){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x5d3297['params']['id']}})['then'](handleEntityNotFound(_0x27dd7e,null))[_0x901d('0x2a')](function(_0x536b95){if(_0x536b95){return _0x536b95[_0x901d('0x13e')](_0x5d3297['body'][_0x901d('0x64')],_[_0x901d('0x65')](_0x5d3297['body'],[_0x901d('0x64'),'id'])||{})[_0x901d('0x136')](function(){for(var _0x377e9a=0x0;_0x377e9a<_0x5d3297[_0x901d('0x63')]['ids'][_0x901d('0x4d')];_0x377e9a+=0x1){socket[_0x901d('0xa9')](_0x901d('0x13f'),{'FaxInteractionId':Number(_0x5d3297[_0x901d('0x63')][_0x901d('0x64')][_0x377e9a]),'UserId':Number(_0x5d3297[_0x901d('0x58')]['id'])});}return _0x5d3297[_0x901d('0x63')][_0x901d('0x64')];});}})[_0x901d('0x2a')](respondWithResult(_0x27dd7e,null))[_0x901d('0x56')](handleError(_0x27dd7e,null));};exports['removeFaxInteractions']=function(_0x1e6fef,_0x560b52){return db[_0x901d('0x3e')]['find']({'where':{'id':_0x1e6fef[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x560b52,null))[_0x901d('0x2a')](function(_0x1aac6b){if(_0x1aac6b){return _0x1aac6b[_0x901d('0x140')](_0x1e6fef[_0x901d('0x4a')][_0x901d('0x64')])[_0x901d('0x2a')](function(){if(_[_0x901d('0x13c')](_0x1e6fef[_0x901d('0x4a')]['ids'])){for(var _0x5b9721=0x0;_0x5b9721<_0x1e6fef[_0x901d('0x4a')][_0x901d('0x64')][_0x901d('0x4d')];_0x5b9721+=0x1){socket['emit'](_0x901d('0x141'),{'FaxInteractionId':Number(_0x1e6fef['query'][_0x901d('0x64')][_0x5b9721]),'UserId':Number(_0x1e6fef[_0x901d('0x58')]['id'])});}}else{socket[_0x901d('0xa9')](_0x901d('0x141'),{'FaxInteractionId':Number(_0x1e6fef[_0x901d('0x4a')][_0x901d('0x64')]),'UserId':Number(_0x1e6fef[_0x901d('0x58')]['id'])});}});}})[_0x901d('0x2a')](respondWithStatusCode(_0x560b52,null))[_0x901d('0x56')](handleError(_0x560b52,null));};exports[_0x901d('0x142')]=function(_0x390b9a,_0x317f0c){return db[_0x901d('0x3e')]['find']({'where':{'id':_0x390b9a[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x317f0c,null))[_0x901d('0x2a')](function(_0x5e04fd){if(_0x5e04fd){return _0x5e04fd[_0x901d('0x142')](_0x390b9a[_0x901d('0x63')][_0x901d('0x64')],_[_0x901d('0x65')](_0x390b9a[_0x901d('0x63')],[_0x901d('0x64'),'id'])||{})['spread'](function(){for(var _0x1c1233=0x0;_0x1c1233<_0x390b9a[_0x901d('0x63')]['ids'][_0x901d('0x4d')];_0x1c1233+=0x1){socket[_0x901d('0xa9')](_0x901d('0x143'),{'SmsInteractionId':Number(_0x390b9a['body'][_0x901d('0x64')][_0x1c1233]),'UserId':Number(_0x390b9a['params']['id'])});}return _0x390b9a[_0x901d('0x63')][_0x901d('0x64')];});}})[_0x901d('0x2a')](respondWithResult(_0x317f0c,null))[_0x901d('0x56')](handleError(_0x317f0c,null));};exports[_0x901d('0x144')]=function(_0x3ee475,_0x339c5f){return db['User']['find']({'where':{'id':_0x3ee475[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x339c5f,null))[_0x901d('0x2a')](function(_0x1f4d1a){if(_0x1f4d1a){return _0x1f4d1a[_0x901d('0x144')](_0x3ee475[_0x901d('0x4a')][_0x901d('0x64')])[_0x901d('0x2a')](function(){if(_[_0x901d('0x13c')](_0x3ee475[_0x901d('0x4a')][_0x901d('0x64')])){for(var _0x1953a9=0x0;_0x1953a9<_0x3ee475[_0x901d('0x4a')]['ids'][_0x901d('0x4d')];_0x1953a9+=0x1){socket[_0x901d('0xa9')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x3ee475['query'][_0x901d('0x64')][_0x1953a9]),'UserId':Number(_0x3ee475[_0x901d('0x58')]['id'])});}}else{socket[_0x901d('0xa9')](_0x901d('0x145'),{'SmsInteractionId':Number(_0x3ee475[_0x901d('0x4a')][_0x901d('0x64')]),'UserId':Number(_0x3ee475[_0x901d('0x58')]['id'])});}});}})[_0x901d('0x2a')](respondWithStatusCode(_0x339c5f,null))[_0x901d('0x56')](handleError(_0x339c5f,null));};exports['addOpenchannelInteractions']=function(_0x1364fd,_0x4a9623){return db['User'][_0x901d('0x38')]({'where':{'id':_0x1364fd['params']['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x4a9623,null))['then'](function(_0x830d26){if(_0x830d26){return _0x830d26[_0x901d('0x146')](_0x1364fd[_0x901d('0x63')][_0x901d('0x64')],_[_0x901d('0x65')](_0x1364fd[_0x901d('0x63')],[_0x901d('0x64'),'id'])||{})['spread'](function(){for(var _0x18dcb0=0x0;_0x18dcb0<_0x1364fd[_0x901d('0x63')][_0x901d('0x64')][_0x901d('0x4d')];_0x18dcb0+=0x1){socket[_0x901d('0xa9')]('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x1364fd['body']['ids'][_0x18dcb0]),'UserId':Number(_0x1364fd[_0x901d('0x58')]['id'])});}return _0x1364fd[_0x901d('0x63')][_0x901d('0x64')];});}})[_0x901d('0x2a')](respondWithResult(_0x4a9623,null))[_0x901d('0x56')](handleError(_0x4a9623,null));};exports[_0x901d('0x147')]=function(_0xb373e9,_0xf237f1){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0xb373e9[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0xf237f1,null))['then'](function(_0x150892){if(_0x150892){return _0x150892[_0x901d('0x147')](_0xb373e9[_0x901d('0x4a')][_0x901d('0x64')])[_0x901d('0x2a')](function(){if(_[_0x901d('0x13c')](_0xb373e9[_0x901d('0x4a')][_0x901d('0x64')])){for(var _0x21b644=0x0;_0x21b644<_0xb373e9[_0x901d('0x4a')][_0x901d('0x64')][_0x901d('0x4d')];_0x21b644+=0x1){socket['emit'](_0x901d('0x148'),{'OpenchannelInteractionId':Number(_0xb373e9['query']['ids'][_0x21b644]),'UserId':Number(_0xb373e9[_0x901d('0x58')]['id'])});}}else{socket[_0x901d('0xa9')](_0x901d('0x148'),{'OpenchannelInteractionId':Number(_0xb373e9[_0x901d('0x4a')][_0x901d('0x64')]),'UserId':Number(_0xb373e9[_0x901d('0x58')]['id'])});}});}})[_0x901d('0x2a')](respondWithStatusCode(_0xf237f1,null))[_0x901d('0x56')](handleError(_0xf237f1,null));};exports['addWhatsappInteractions']=function(_0x1c5f81,_0x5293d9){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x1c5f81['params']['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x5293d9,null))[_0x901d('0x2a')](function(_0x58b9a4){if(_0x58b9a4){return _0x58b9a4[_0x901d('0x149')](_0x1c5f81[_0x901d('0x63')][_0x901d('0x64')],_[_0x901d('0x65')](_0x1c5f81[_0x901d('0x63')],[_0x901d('0x64'),'id'])||{})['spread'](function(){for(var _0x4780a6=0x0;_0x4780a6<_0x1c5f81[_0x901d('0x63')][_0x901d('0x64')][_0x901d('0x4d')];_0x4780a6+=0x1){socket[_0x901d('0xa9')](_0x901d('0x14a'),{'WhatsappInteractionId':Number(_0x1c5f81[_0x901d('0x63')][_0x901d('0x64')][_0x4780a6]),'UserId':Number(_0x1c5f81[_0x901d('0x58')]['id'])});}return _0x1c5f81[_0x901d('0x63')][_0x901d('0x64')];});}})[_0x901d('0x2a')](respondWithResult(_0x5293d9,null))[_0x901d('0x56')](handleError(_0x5293d9,null));};exports['removeWhatsappInteractions']=function(_0x402031,_0x53966f){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x402031[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x53966f,null))[_0x901d('0x2a')](function(_0x462485){if(_0x462485){return _0x462485['removeWhatsappInteractions'](_0x402031[_0x901d('0x4a')]['ids']);}})['then'](respondWithStatusCode(_0x53966f,null))[_0x901d('0x56')](handleError(_0x53966f,null));};exports['getVoicePrefixes']=function(_0x4cc281,_0x4a6399){var _0x32415e={};var _0xcde19d={};var _0xcf5e8;var _0x71ea36;return db['User'][_0x901d('0x9b')]({'where':{'id':_0x4cc281[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x4a6399,null))[_0x901d('0x2a')](function(_0x3d685c){if(_0x3d685c){_0xcf5e8=_0x3d685c;_0xcde19d[_0x901d('0x5b')]=_[_0x901d('0x59')](db[_0x901d('0x14b')]['rawAttributes']);_0xcde19d[_0x901d('0x4a')]=_[_0x901d('0x59')](_0x4cc281[_0x901d('0x4a')]);_0xcde19d['filters']=_[_0x901d('0x5c')](_0xcde19d['model'],_0xcde19d[_0x901d('0x4a')]);_0x32415e['attributes']=_[_0x901d('0x5c')](_0xcde19d[_0x901d('0x5b')],qs[_0x901d('0x5d')](_0x4cc281[_0x901d('0x4a')][_0x901d('0x5d')]));_0x32415e[_0x901d('0x47')]=_0x32415e[_0x901d('0x47')][_0x901d('0x4d')]?_0x32415e[_0x901d('0x47')]:_0xcde19d[_0x901d('0x5b')];_0x32415e[_0x901d('0xd3')]=qs[_0x901d('0xd4')](_0x4cc281[_0x901d('0x4a')][_0x901d('0xd4')]);_0x32415e['where']=qs[_0x901d('0x5a')](_[_0x901d('0xe0')](_0x4cc281[_0x901d('0x4a')],_0xcde19d[_0x901d('0x5a')]));if(_0x4cc281[_0x901d('0x4a')][_0x901d('0x34')]){_0x32415e[_0x901d('0xd5')]=_[_0x901d('0x5e')](_0x32415e['where'],{'$or':_[_0x901d('0x35')](_0x32415e[_0x901d('0x47')],function(_0x4a8dad){var _0x4c5eb9={};_0x4c5eb9[_0x4a8dad]={'$like':'%'+_0x4cc281[_0x901d('0x4a')]['filter']+'%'};return _0x4c5eb9;})});}_0x32415e=_[_0x901d('0x5e')]({},_0x32415e,_0x4cc281[_0x901d('0x5f')]);return _0xcf5e8[_0x901d('0x14c')](_0x32415e);}})[_0x901d('0x2a')](function(_0x3de8bd){if(_0x3de8bd){_0x71ea36=_0x3de8bd['length'];if(!_0x4cc281[_0x901d('0x4a')][_0x901d('0xd6')](_0x901d('0xde'))){_0x32415e[_0x901d('0x26')]=qs[_0x901d('0x26')](_0x4cc281['query'][_0x901d('0x26')]);_0x32415e[_0x901d('0x24')]=qs[_0x901d('0x24')](_0x4cc281[_0x901d('0x4a')]['offset']);}return _0xcf5e8['getVoicePrefixes'](_0x32415e);}})[_0x901d('0x2a')](function(_0x253caf){if(_0x253caf){return _0x253caf?{'count':_0x71ea36,'rows':_0x253caf}:null;}})[_0x901d('0x2a')](respondWithResult(_0x4a6399,null))[_0x901d('0x56')](handleError(_0x4a6399,null));};exports[_0x901d('0x14d')]=function(_0x22816f,_0xcdd8a){var _0xcb0f7={};var _0x4f6a2d={};var _0x13a362;var _0x59297c;return db[_0x901d('0x3e')]['findOne']({'where':{'id':_0x22816f[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0xcdd8a,null))[_0x901d('0x2a')](function(_0x428bea){if(_0x428bea){_0x13a362=_0x428bea;_0x4f6a2d[_0x901d('0x5b')]=_[_0x901d('0x59')](db[_0x901d('0x14e')][_0x901d('0x3f')]);_0x4f6a2d[_0x901d('0x4a')]=_[_0x901d('0x59')](_0x22816f['query']);_0x4f6a2d[_0x901d('0x5a')]=_['intersection'](_0x4f6a2d[_0x901d('0x5b')],_0x4f6a2d[_0x901d('0x4a')]);_0xcb0f7['attributes']=_['intersection'](_0x4f6a2d['model'],qs['fields'](_0x22816f[_0x901d('0x4a')]['fields']));_0xcb0f7['attributes']=_0xcb0f7[_0x901d('0x47')]['length']?_0xcb0f7[_0x901d('0x47')]:_0x4f6a2d['model'];_0xcb0f7[_0x901d('0xd3')]=qs[_0x901d('0xd4')](_0x22816f[_0x901d('0x4a')][_0x901d('0xd4')]);_0xcb0f7[_0x901d('0xd5')]=qs[_0x901d('0x5a')](_[_0x901d('0xe0')](_0x22816f['query'],_0x4f6a2d[_0x901d('0x5a')]));if(_0x22816f[_0x901d('0x4a')][_0x901d('0x34')]){_0xcb0f7['where']=_[_0x901d('0x5e')](_0xcb0f7['where'],{'$or':_[_0x901d('0x35')](_0xcb0f7[_0x901d('0x47')],function(_0x25a884){var _0x588717={};_0x588717[_0x25a884]={'$like':'%'+_0x22816f[_0x901d('0x4a')][_0x901d('0x34')]+'%'};return _0x588717;})});}_0xcb0f7=_[_0x901d('0x5e')]({},_0xcb0f7,_0x22816f[_0x901d('0x5f')]);return _0x13a362['getFaxAccounts'](_0xcb0f7);}})[_0x901d('0x2a')](function(_0xf37bca){if(_0xf37bca){_0x59297c=_0xf37bca[_0x901d('0x4d')];if(!_0x22816f[_0x901d('0x4a')]['hasOwnProperty'](_0x901d('0xde'))){_0xcb0f7[_0x901d('0x26')]=qs[_0x901d('0x26')](_0x22816f[_0x901d('0x4a')]['limit']);_0xcb0f7[_0x901d('0x24')]=qs['offset'](_0x22816f[_0x901d('0x4a')]['offset']);}return _0x13a362['getFaxAccounts'](_0xcb0f7);}})['then'](function(_0x190ad9){if(_0x190ad9){return _0x190ad9?{'count':_0x59297c,'rows':_0x190ad9}:null;}})[_0x901d('0x2a')](respondWithResult(_0xcdd8a,null))['catch'](handleError(_0xcdd8a,null));};exports[_0x901d('0x14f')]=function(_0x8dc27b,_0x376cc5){return db['User'][_0x901d('0x38')]({'where':{'id':_0x8dc27b['params']['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x376cc5,null))[_0x901d('0x2a')](function(_0x215f47){if(_0x215f47){return _0x215f47[_0x901d('0x14f')](_0x8dc27b['body']['ids'],_['omit'](_0x8dc27b[_0x901d('0x63')],[_0x901d('0x64'),'id'])||{});}})[_0x901d('0x2a')](respondWithResult(_0x376cc5,null))[_0x901d('0x56')](handleError(_0x376cc5,null));};exports[_0x901d('0x150')]=function(_0x2cc20d,_0x3fa863){return db['User'][_0x901d('0x38')]({'where':{'id':_0x2cc20d[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x3fa863,null))[_0x901d('0x2a')](function(_0x4adb13){if(_0x4adb13){return _0x4adb13[_0x901d('0x150')](_0x2cc20d[_0x901d('0x4a')][_0x901d('0x64')]);}})['then'](respondWithStatusCode(_0x3fa863,null))['catch'](handleError(_0x3fa863,null));};exports[_0x901d('0x151')]=function(_0x2bee79,_0xa60cf5){var _0x4f55c1={};var _0x12f25d={};var _0x2c9eae;var _0x1e8365;return db[_0x901d('0x3e')][_0x901d('0x9b')]({'where':{'id':_0x2bee79[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0xa60cf5,null))[_0x901d('0x2a')](function(_0x13dc4e){if(_0x13dc4e){_0x2c9eae=_0x13dc4e;_0x12f25d[_0x901d('0x5b')]=_[_0x901d('0x59')](db[_0x901d('0x152')]['rawAttributes']);_0x12f25d[_0x901d('0x4a')]=_[_0x901d('0x59')](_0x2bee79[_0x901d('0x4a')]);_0x12f25d[_0x901d('0x5a')]=_['intersection'](_0x12f25d[_0x901d('0x5b')],_0x12f25d[_0x901d('0x4a')]);_0x4f55c1[_0x901d('0x47')]=_[_0x901d('0x5c')](_0x12f25d[_0x901d('0x5b')],qs[_0x901d('0x5d')](_0x2bee79[_0x901d('0x4a')][_0x901d('0x5d')]));_0x4f55c1[_0x901d('0x47')]=_0x4f55c1[_0x901d('0x47')][_0x901d('0x4d')]?_0x4f55c1[_0x901d('0x47')]:_0x12f25d[_0x901d('0x5b')];_0x4f55c1[_0x901d('0xd3')]=qs[_0x901d('0xd4')](_0x2bee79[_0x901d('0x4a')][_0x901d('0xd4')]);_0x4f55c1[_0x901d('0xd5')]=qs[_0x901d('0x5a')](_['pick'](_0x2bee79[_0x901d('0x4a')],_0x12f25d[_0x901d('0x5a')]));if(_0x2bee79[_0x901d('0x4a')][_0x901d('0x34')]){_0x4f55c1[_0x901d('0xd5')]=_[_0x901d('0x5e')](_0x4f55c1[_0x901d('0xd5')],{'$or':_[_0x901d('0x35')](_0x4f55c1[_0x901d('0x47')],function(_0xb3575d){var _0x30b8fe={};_0x30b8fe[_0xb3575d]={'$like':'%'+_0x2bee79[_0x901d('0x4a')][_0x901d('0x34')]+'%'};return _0x30b8fe;})});}_0x4f55c1=_['merge']({},_0x4f55c1,_0x2bee79[_0x901d('0x5f')]);return _0x2c9eae[_0x901d('0x151')](_0x4f55c1);}})[_0x901d('0x2a')](function(_0x3cb504){if(_0x3cb504){_0x1e8365=_0x3cb504[_0x901d('0x4d')];if(!_0x2bee79['query']['hasOwnProperty'](_0x901d('0xde'))){_0x4f55c1[_0x901d('0x26')]=qs[_0x901d('0x26')](_0x2bee79[_0x901d('0x4a')][_0x901d('0x26')]);_0x4f55c1[_0x901d('0x24')]=qs[_0x901d('0x24')](_0x2bee79[_0x901d('0x4a')][_0x901d('0x24')]);}return _0x2c9eae['getMailAccounts'](_0x4f55c1);}})[_0x901d('0x2a')](function(_0x4235d7){if(_0x4235d7){return _0x4235d7?{'count':_0x1e8365,'rows':_0x4235d7}:null;}})['then'](respondWithResult(_0xa60cf5,null))[_0x901d('0x56')](handleError(_0xa60cf5,null));};exports[_0x901d('0x153')]=function(_0x125dbe,_0x471e8b){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x125dbe[_0x901d('0x58')]['id']}})['then'](handleEntityNotFound(_0x471e8b,null))[_0x901d('0x2a')](function(_0x218c4a){if(_0x218c4a){return _0x218c4a['addMailAccounts'](_0x125dbe['body'][_0x901d('0x64')],_['omit'](_0x125dbe[_0x901d('0x63')],[_0x901d('0x64'),'id'])||{});}})['then'](respondWithResult(_0x471e8b,null))[_0x901d('0x56')](handleError(_0x471e8b,null));};exports['removeMailAccounts']=function(_0x1159f5,_0x2ad332){return db[_0x901d('0x3e')]['find']({'where':{'id':_0x1159f5[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x2ad332,null))[_0x901d('0x2a')](function(_0x3b4fe7){if(_0x3b4fe7){return _0x3b4fe7[_0x901d('0x154')](_0x1159f5[_0x901d('0x4a')][_0x901d('0x64')]);}})['then'](respondWithStatusCode(_0x2ad332,null))[_0x901d('0x56')](handleError(_0x2ad332,null));};exports[_0x901d('0x155')]=function(_0x275bec,_0x3fd819){var _0x5b9bff={};var _0x3c9843={};var _0x593b9e;var _0x3b4230;return db[_0x901d('0x3e')][_0x901d('0x9b')]({'where':{'id':_0x275bec[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x3fd819,null))[_0x901d('0x2a')](function(_0xf9cb1){if(_0xf9cb1){_0x593b9e=_0xf9cb1;_0x3c9843[_0x901d('0x5b')]=_[_0x901d('0x59')](db['OpenchannelAccount'][_0x901d('0x3f')]);_0x3c9843['query']=_[_0x901d('0x59')](_0x275bec['query']);_0x3c9843[_0x901d('0x5a')]=_[_0x901d('0x5c')](_0x3c9843[_0x901d('0x5b')],_0x3c9843[_0x901d('0x4a')]);_0x5b9bff[_0x901d('0x47')]=_[_0x901d('0x5c')](_0x3c9843[_0x901d('0x5b')],qs['fields'](_0x275bec[_0x901d('0x4a')][_0x901d('0x5d')]));_0x5b9bff[_0x901d('0x47')]=_0x5b9bff[_0x901d('0x47')][_0x901d('0x4d')]?_0x5b9bff[_0x901d('0x47')]:_0x3c9843[_0x901d('0x5b')];_0x5b9bff[_0x901d('0xd3')]=qs[_0x901d('0xd4')](_0x275bec[_0x901d('0x4a')][_0x901d('0xd4')]);_0x5b9bff['where']=qs['filters'](_['pick'](_0x275bec[_0x901d('0x4a')],_0x3c9843[_0x901d('0x5a')]));if(_0x275bec[_0x901d('0x4a')][_0x901d('0x34')]){_0x5b9bff['where']=_[_0x901d('0x5e')](_0x5b9bff[_0x901d('0xd5')],{'$or':_[_0x901d('0x35')](_0x5b9bff[_0x901d('0x47')],function(_0x52a702){var _0x2a5f0e={};_0x2a5f0e[_0x52a702]={'$like':'%'+_0x275bec['query'][_0x901d('0x34')]+'%'};return _0x2a5f0e;})});}_0x5b9bff=_[_0x901d('0x5e')]({},_0x5b9bff,_0x275bec[_0x901d('0x5f')]);return _0x593b9e[_0x901d('0x155')](_0x5b9bff);}})[_0x901d('0x2a')](function(_0x47a6a6){if(_0x47a6a6){_0x3b4230=_0x47a6a6[_0x901d('0x4d')];if(!_0x275bec[_0x901d('0x4a')][_0x901d('0xd6')](_0x901d('0xde'))){_0x5b9bff[_0x901d('0x26')]=qs['limit'](_0x275bec['query']['limit']);_0x5b9bff[_0x901d('0x24')]=qs[_0x901d('0x24')](_0x275bec[_0x901d('0x4a')]['offset']);}return _0x593b9e[_0x901d('0x155')](_0x5b9bff);}})[_0x901d('0x2a')](function(_0x1c005b){if(_0x1c005b){return _0x1c005b?{'count':_0x3b4230,'rows':_0x1c005b}:null;}})['then'](respondWithResult(_0x3fd819,null))[_0x901d('0x56')](handleError(_0x3fd819,null));};exports[_0x901d('0x156')]=function(_0x1347d5,_0x20faa4){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x1347d5['params']['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x20faa4,null))[_0x901d('0x2a')](function(_0x3a821c){if(_0x3a821c){return _0x3a821c[_0x901d('0x156')](_0x1347d5[_0x901d('0x63')]['ids'],_['omit'](_0x1347d5['body'],[_0x901d('0x64'),'id'])||{});}})[_0x901d('0x2a')](respondWithResult(_0x20faa4,null))['catch'](handleError(_0x20faa4,null));};exports['removeOpenchannelAccounts']=function(_0x12fa8f,_0x530ebc){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x12fa8f[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x530ebc,null))[_0x901d('0x2a')](function(_0x183411){if(_0x183411){return _0x183411[_0x901d('0x157')](_0x12fa8f[_0x901d('0x4a')]['ids']);}})['then'](respondWithStatusCode(_0x530ebc,null))['catch'](handleError(_0x530ebc,null));};exports['getSmsAccounts']=function(_0xec3c8f,_0x457ed8){var _0x263738={};var _0x402900={};var _0x2891b6;var _0x415299;return db['User'][_0x901d('0x9b')]({'where':{'id':_0xec3c8f[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x457ed8,null))[_0x901d('0x2a')](function(_0x5da3fc){if(_0x5da3fc){_0x2891b6=_0x5da3fc;_0x402900[_0x901d('0x5b')]=_[_0x901d('0x59')](db['SmsAccount'][_0x901d('0x3f')]);_0x402900[_0x901d('0x4a')]=_[_0x901d('0x59')](_0xec3c8f[_0x901d('0x4a')]);_0x402900[_0x901d('0x5a')]=_[_0x901d('0x5c')](_0x402900[_0x901d('0x5b')],_0x402900[_0x901d('0x4a')]);_0x263738[_0x901d('0x47')]=_[_0x901d('0x5c')](_0x402900[_0x901d('0x5b')],qs[_0x901d('0x5d')](_0xec3c8f['query'][_0x901d('0x5d')]));_0x263738[_0x901d('0x47')]=_0x263738[_0x901d('0x47')]['length']?_0x263738[_0x901d('0x47')]:_0x402900[_0x901d('0x5b')];_0x263738[_0x901d('0xd3')]=qs[_0x901d('0xd4')](_0xec3c8f[_0x901d('0x4a')][_0x901d('0xd4')]);_0x263738['where']=qs['filters'](_['pick'](_0xec3c8f[_0x901d('0x4a')],_0x402900[_0x901d('0x5a')]));if(_0xec3c8f[_0x901d('0x4a')][_0x901d('0x34')]){_0x263738[_0x901d('0xd5')]=_[_0x901d('0x5e')](_0x263738[_0x901d('0xd5')],{'$or':_[_0x901d('0x35')](_0x263738[_0x901d('0x47')],function(_0xa8ff5f){var _0x249011={};_0x249011[_0xa8ff5f]={'$like':'%'+_0xec3c8f[_0x901d('0x4a')][_0x901d('0x34')]+'%'};return _0x249011;})});}_0x263738=_[_0x901d('0x5e')]({},_0x263738,_0xec3c8f['options']);return _0x2891b6[_0x901d('0x158')](_0x263738);}})[_0x901d('0x2a')](function(_0x5d56f4){if(_0x5d56f4){_0x415299=_0x5d56f4[_0x901d('0x4d')];if(!_0xec3c8f[_0x901d('0x4a')][_0x901d('0xd6')](_0x901d('0xde'))){_0x263738[_0x901d('0x26')]=qs[_0x901d('0x26')](_0xec3c8f[_0x901d('0x4a')][_0x901d('0x26')]);_0x263738[_0x901d('0x24')]=qs[_0x901d('0x24')](_0xec3c8f[_0x901d('0x4a')][_0x901d('0x24')]);}return _0x2891b6[_0x901d('0x158')](_0x263738);}})['then'](function(_0x103abf){if(_0x103abf){return _0x103abf?{'count':_0x415299,'rows':_0x103abf}:null;}})[_0x901d('0x2a')](respondWithResult(_0x457ed8,null))[_0x901d('0x56')](handleError(_0x457ed8,null));};exports[_0x901d('0x159')]=function(_0x29970c,_0xcfba57){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x29970c['params']['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0xcfba57,null))[_0x901d('0x2a')](function(_0x3eed79){if(_0x3eed79){return _0x3eed79[_0x901d('0x159')](_0x29970c[_0x901d('0x63')][_0x901d('0x64')],_[_0x901d('0x65')](_0x29970c[_0x901d('0x63')],[_0x901d('0x64'),'id'])||{});}})[_0x901d('0x2a')](respondWithResult(_0xcfba57,null))[_0x901d('0x56')](handleError(_0xcfba57,null));};exports[_0x901d('0x15a')]=function(_0xffa689,_0x2d2224){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0xffa689['params']['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x2d2224,null))[_0x901d('0x2a')](function(_0x3e9c02){if(_0x3e9c02){return _0x3e9c02[_0x901d('0x15a')](_0xffa689[_0x901d('0x4a')][_0x901d('0x64')]);}})[_0x901d('0x2a')](respondWithStatusCode(_0x2d2224,null))[_0x901d('0x56')](handleError(_0x2d2224,null));};exports['getChatWebsites']=function(_0x3840fe,_0xca0c6a){var _0xbe3e5a={};var _0xb9d562={};var _0x4b824b;var _0x12ccbb;return db[_0x901d('0x3e')][_0x901d('0x9b')]({'where':{'id':_0x3840fe[_0x901d('0x58')]['id']}})['then'](handleEntityNotFound(_0xca0c6a,null))[_0x901d('0x2a')](function(_0x38e186){if(_0x38e186){_0x4b824b=_0x38e186;_0xb9d562['model']=_['keys'](db[_0x901d('0x15b')]['rawAttributes']);_0xb9d562[_0x901d('0x4a')]=_[_0x901d('0x59')](_0x3840fe[_0x901d('0x4a')]);_0xb9d562[_0x901d('0x5a')]=_[_0x901d('0x5c')](_0xb9d562[_0x901d('0x5b')],_0xb9d562[_0x901d('0x4a')]);_0xbe3e5a[_0x901d('0x47')]=_[_0x901d('0x5c')](_0xb9d562[_0x901d('0x5b')],qs[_0x901d('0x5d')](_0x3840fe[_0x901d('0x4a')][_0x901d('0x5d')]));_0xbe3e5a[_0x901d('0x47')]=_0xbe3e5a[_0x901d('0x47')][_0x901d('0x4d')]?_0xbe3e5a['attributes']:_0xb9d562[_0x901d('0x5b')];_0xbe3e5a['order']=qs['sort'](_0x3840fe[_0x901d('0x4a')]['sort']);_0xbe3e5a[_0x901d('0xd5')]=qs[_0x901d('0x5a')](_['pick'](_0x3840fe[_0x901d('0x4a')],_0xb9d562[_0x901d('0x5a')]));if(_0x3840fe[_0x901d('0x4a')][_0x901d('0x34')]){_0xbe3e5a[_0x901d('0xd5')]=_['merge'](_0xbe3e5a['where'],{'$or':_['map'](_0xbe3e5a[_0x901d('0x47')],function(_0x24d865){var _0x80f245={};_0x80f245[_0x24d865]={'$like':'%'+_0x3840fe[_0x901d('0x4a')][_0x901d('0x34')]+'%'};return _0x80f245;})});}_0xbe3e5a=_[_0x901d('0x5e')]({},_0xbe3e5a,_0x3840fe[_0x901d('0x5f')]);return _0x4b824b[_0x901d('0x15c')](_0xbe3e5a);}})[_0x901d('0x2a')](function(_0x151382){if(_0x151382){_0x12ccbb=_0x151382[_0x901d('0x4d')];if(!_0x3840fe[_0x901d('0x4a')][_0x901d('0xd6')](_0x901d('0xde'))){_0xbe3e5a[_0x901d('0x26')]=qs[_0x901d('0x26')](_0x3840fe[_0x901d('0x4a')][_0x901d('0x26')]);_0xbe3e5a[_0x901d('0x24')]=qs[_0x901d('0x24')](_0x3840fe[_0x901d('0x4a')][_0x901d('0x24')]);}return _0x4b824b[_0x901d('0x15c')](_0xbe3e5a);}})['then'](function(_0x3978ef){if(_0x3978ef){return _0x3978ef?{'count':_0x12ccbb,'rows':_0x3978ef}:null;}})[_0x901d('0x2a')](respondWithResult(_0xca0c6a,null))[_0x901d('0x56')](handleError(_0xca0c6a,null));};exports[_0x901d('0x15d')]=function(_0x108f6b,_0x4e0cb6){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x108f6b['params']['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x4e0cb6,null))['then'](function(_0x1e49a4){if(_0x1e49a4){return _0x1e49a4[_0x901d('0x15d')](_0x108f6b[_0x901d('0x63')][_0x901d('0x64')],_[_0x901d('0x65')](_0x108f6b[_0x901d('0x63')],[_0x901d('0x64'),'id'])||{});}})[_0x901d('0x2a')](respondWithResult(_0x4e0cb6,null))[_0x901d('0x56')](handleError(_0x4e0cb6,null));};exports[_0x901d('0x15e')]=function(_0x644a2f,_0x3ca7f2){return db[_0x901d('0x3e')]['find']({'where':{'id':_0x644a2f[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x3ca7f2,null))[_0x901d('0x2a')](function(_0x32af11){if(_0x32af11){return _0x32af11[_0x901d('0x15e')](_0x644a2f[_0x901d('0x4a')][_0x901d('0x64')]);}})[_0x901d('0x2a')](respondWithStatusCode(_0x3ca7f2,null))[_0x901d('0x56')](handleError(_0x3ca7f2,null));};exports[_0x901d('0x15f')]=function(_0x3dc573,_0x1823d8){var _0x5f4cd0={};var _0xd321ca={};var _0x208aaa;var _0x15e17b;return db['User'][_0x901d('0x9b')]({'where':{'id':_0x3dc573['params']['id']}})['then'](handleEntityNotFound(_0x1823d8,null))[_0x901d('0x2a')](function(_0x35b781){if(_0x35b781){_0x208aaa=_0x35b781;_0xd321ca[_0x901d('0x5b')]=_['keys'](db['WhatsappAccount']['rawAttributes']);_0xd321ca[_0x901d('0x4a')]=_[_0x901d('0x59')](_0x3dc573['query']);_0xd321ca[_0x901d('0x5a')]=_['intersection'](_0xd321ca[_0x901d('0x5b')],_0xd321ca[_0x901d('0x4a')]);_0x5f4cd0[_0x901d('0x47')]=_[_0x901d('0x5c')](_0xd321ca[_0x901d('0x5b')],qs[_0x901d('0x5d')](_0x3dc573[_0x901d('0x4a')]['fields']));_0x5f4cd0['attributes']=_0x5f4cd0[_0x901d('0x47')][_0x901d('0x4d')]?_0x5f4cd0[_0x901d('0x47')]:_0xd321ca['model'];_0x5f4cd0[_0x901d('0xd3')]=qs[_0x901d('0xd4')](_0x3dc573['query'][_0x901d('0xd4')]);_0x5f4cd0[_0x901d('0xd5')]=qs[_0x901d('0x5a')](_[_0x901d('0xe0')](_0x3dc573['query'],_0xd321ca[_0x901d('0x5a')]));if(_0x3dc573[_0x901d('0x4a')][_0x901d('0x34')]){_0x5f4cd0[_0x901d('0xd5')]=_[_0x901d('0x5e')](_0x5f4cd0['where'],{'$or':_[_0x901d('0x35')](_0x5f4cd0[_0x901d('0x47')],function(_0x3bf630){var _0x409c40={};_0x409c40[_0x3bf630]={'$like':'%'+_0x3dc573[_0x901d('0x4a')][_0x901d('0x34')]+'%'};return _0x409c40;})});}_0x5f4cd0=_[_0x901d('0x5e')]({},_0x5f4cd0,_0x3dc573[_0x901d('0x5f')]);return _0x208aaa[_0x901d('0x15f')](_0x5f4cd0);}})[_0x901d('0x2a')](function(_0x13e15d){if(_0x13e15d){_0x15e17b=_0x13e15d['length'];if(!_0x3dc573[_0x901d('0x4a')][_0x901d('0xd6')](_0x901d('0xde'))){_0x5f4cd0['limit']=qs['limit'](_0x3dc573[_0x901d('0x4a')]['limit']);_0x5f4cd0['offset']=qs['offset'](_0x3dc573[_0x901d('0x4a')]['offset']);}return _0x208aaa['getWhatsappAccounts'](_0x5f4cd0);}})['then'](function(_0x4c2f3e){if(_0x4c2f3e){return _0x4c2f3e?{'count':_0x15e17b,'rows':_0x4c2f3e}:null;}})['then'](respondWithResult(_0x1823d8,null))['catch'](handleError(_0x1823d8,null));};exports[_0x901d('0x160')]=function(_0x26fd65,_0x45a0ed){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x26fd65[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x45a0ed,null))[_0x901d('0x2a')](function(_0x3cc576){if(_0x3cc576){return _0x3cc576[_0x901d('0x160')](_0x26fd65[_0x901d('0x63')][_0x901d('0x64')],_[_0x901d('0x65')](_0x26fd65[_0x901d('0x63')],[_0x901d('0x64'),'id'])||{});}})[_0x901d('0x2a')](respondWithResult(_0x45a0ed,null))['catch'](handleError(_0x45a0ed,null));};exports[_0x901d('0x161')]=function(_0x334946,_0x4f7300){return db[_0x901d('0x3e')]['find']({'where':{'id':_0x334946['params']['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x4f7300,null))[_0x901d('0x2a')](function(_0x3bb6ed){if(_0x3bb6ed){return _0x3bb6ed[_0x901d('0x161')](_0x334946['query']['ids']);}})[_0x901d('0x2a')](respondWithStatusCode(_0x4f7300,null))['catch'](handleError(_0x4f7300,null));};exports[_0x901d('0x162')]=function(_0x339e65,_0x385a0d){var _0x107429={};var _0x3b9218={};var _0x133d81;var _0x96095e;return db['User'][_0x901d('0x9b')]({'where':{'id':_0x339e65[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x385a0d,null))['then'](function(_0x5c0948){if(_0x5c0948){_0x133d81=_0x5c0948;_0x3b9218[_0x901d('0x5b')]=_[_0x901d('0x59')](db[_0x901d('0x163')][_0x901d('0x3f')]);_0x3b9218[_0x901d('0x4a')]=_[_0x901d('0x59')](_0x339e65[_0x901d('0x4a')]);_0x3b9218['filters']=_['intersection'](_0x3b9218[_0x901d('0x5b')],_0x3b9218[_0x901d('0x4a')]);_0x107429[_0x901d('0x47')]=_[_0x901d('0x5c')](_0x3b9218['model'],qs[_0x901d('0x5d')](_0x339e65['query'][_0x901d('0x5d')]));_0x107429['attributes']=_0x107429['attributes'][_0x901d('0x4d')]?_0x107429['attributes']:_0x3b9218['model'];_0x107429['order']=qs[_0x901d('0xd4')](_0x339e65['query'][_0x901d('0xd4')]);_0x107429[_0x901d('0xd5')]=qs['filters'](_[_0x901d('0xe0')](_0x339e65[_0x901d('0x4a')],_0x3b9218[_0x901d('0x5a')]));if(_0x339e65['query'][_0x901d('0x34')]){_0x107429[_0x901d('0xd5')]=_[_0x901d('0x5e')](_0x107429['where'],{'$or':_[_0x901d('0x35')](_0x107429['attributes'],function(_0x454854){var _0x528395={};_0x528395[_0x454854]={'$like':'%'+_0x339e65['query'][_0x901d('0x34')]+'%'};return _0x528395;})});}_0x107429=_[_0x901d('0x5e')]({},_0x107429,_0x339e65['options']);return _0x133d81['getSquareProjects'](_0x107429);}})[_0x901d('0x2a')](function(_0x5c51da){if(_0x5c51da){_0x96095e=_0x5c51da[_0x901d('0x4d')];if(!_0x339e65['query'][_0x901d('0xd6')](_0x901d('0xde'))){_0x107429[_0x901d('0x26')]=qs[_0x901d('0x26')](_0x339e65[_0x901d('0x4a')][_0x901d('0x26')]);_0x107429[_0x901d('0x24')]=qs['offset'](_0x339e65[_0x901d('0x4a')][_0x901d('0x24')]);}return _0x133d81[_0x901d('0x162')](_0x107429);}})[_0x901d('0x2a')](function(_0xf3a012){if(_0xf3a012){return _0xf3a012?{'count':_0x96095e,'rows':_0xf3a012}:null;}})[_0x901d('0x2a')](respondWithResult(_0x385a0d,null))[_0x901d('0x56')](handleError(_0x385a0d,null));};exports[_0x901d('0x164')]=function(_0x25c9ee,_0x279dc5){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x25c9ee[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x279dc5,null))[_0x901d('0x2a')](function(_0x4e730a){if(_0x4e730a){return _0x4e730a[_0x901d('0x164')](_0x25c9ee[_0x901d('0x63')][_0x901d('0x64')],_[_0x901d('0x65')](_0x25c9ee['body'],[_0x901d('0x64'),'id'])||{});}})['then'](respondWithResult(_0x279dc5,null))[_0x901d('0x56')](handleError(_0x279dc5,null));};exports['removeSquareProjects']=function(_0x29ca7b,_0x510f05){return db[_0x901d('0x3e')]['find']({'where':{'id':_0x29ca7b['params']['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x510f05,null))[_0x901d('0x2a')](function(_0x187b9e){if(_0x187b9e){return _0x187b9e['removeSquareProjects'](_0x29ca7b[_0x901d('0x4a')][_0x901d('0x64')]);}})['then'](respondWithStatusCode(_0x510f05,null))[_0x901d('0x56')](handleError(_0x510f05,null));};exports['getScheduledCalls']=function(_0x20cc8a,_0x59740f){var _0x3fdfb9={},_0x24108e={},_0x65371={'count':0x0,'rows':[]};var _0x56a466=db[_0x901d('0x165')][_0x901d('0x3f')];_0x24108e[_0x901d('0x5b')]=_[_0x901d('0x59')](_0x56a466);_0x24108e[_0x901d('0x4a')]=_[_0x901d('0x59')](_0x20cc8a[_0x901d('0x4a')]);_0x24108e[_0x901d('0x5a')]=_['intersection'](_0x24108e[_0x901d('0x5b')],_0x24108e[_0x901d('0x4a')]);_0x24108e[_0x901d('0x5a')]=_[_0x901d('0x166')](_0x24108e[_0x901d('0x5a')],['$and',_0x901d('0x167'),'$gt',_0x901d('0x168'),_0x901d('0x169'),_0x901d('0x16a'),_0x901d('0x16b'),_0x901d('0x16c'),'$not',_0x901d('0x16d'),'$notBetween',_0x901d('0x16e'),'$notIn','$like','$notLike',_0x901d('0x16f'),_0x901d('0x170'),'$like',_0x901d('0x171'),_0x901d('0x172'),_0x901d('0x173'),_0x901d('0x174')]);_0x3fdfb9['attributes']=_['intersection'](_0x24108e[_0x901d('0x5b')],qs[_0x901d('0x5d')](_0x20cc8a[_0x901d('0x4a')]['fields']));_0x3fdfb9[_0x901d('0x47')]=_0x3fdfb9[_0x901d('0x47')]['length']?_0x3fdfb9[_0x901d('0x47')]:_0x24108e[_0x901d('0x5b')];if(!_0x20cc8a['query'][_0x901d('0xd6')](_0x901d('0xde'))){_0x3fdfb9['limit']=qs[_0x901d('0x26')](_0x20cc8a[_0x901d('0x4a')][_0x901d('0x26')]);_0x3fdfb9[_0x901d('0x24')]=qs[_0x901d('0x24')](_0x20cc8a['query'][_0x901d('0x24')]);}_0x3fdfb9[_0x901d('0xd3')]=qs['sort'](_0x20cc8a[_0x901d('0x4a')][_0x901d('0xd4')]);_0x3fdfb9[_0x901d('0xd5')]=qs[_0x901d('0x5a')](_[_0x901d('0xe0')](_0x20cc8a[_0x901d('0x4a')],_0x24108e[_0x901d('0x5a')]));if(_0x20cc8a['query']['filter']){_0x3fdfb9['where']=_['merge'](_0x3fdfb9['where'],{'$or':_['map'](_0x3fdfb9['attributes'],function(_0x3c05dc){var _0x3cd339={};_0x3cd339[_0x3c05dc]={'$like':'%'+_0x20cc8a['query'][_0x901d('0x34')]+'%'};return _0x3cd339;})});}_0x3fdfb9[_0x901d('0xd5')]={'$and':[_0x3fdfb9[_0x901d('0xd5')],{'$or':[{'UserId':_0x20cc8a[_0x901d('0x58')]['id']},{'OwnerId':_0x20cc8a[_0x901d('0x58')]['id']}]}]};_0x3fdfb9=_['merge']({},_0x3fdfb9,_0x20cc8a[_0x901d('0x5f')]);var _0x3a03c0={'where':_0x3fdfb9[_0x901d('0xd5')]};return db['CmHopper'][_0x901d('0x27')](_0x3a03c0)['then'](function(_0x32f44f){_0x65371['count']=_0x32f44f;if(_0x20cc8a['query']['includeAll']){_0x3fdfb9[_0x901d('0x46')]=[{'attributes':['id','firstName',_0x901d('0x175'),_0x901d('0x176')],'model':db[_0x901d('0xd2')],'as':_0x901d('0x177')},{'attributes':['id','name','dialActive'],'model':db[_0x901d('0xad')],'as':'Queue'}];}return db[_0x901d('0x165')][_0x901d('0x8f')](_0x3fdfb9);})[_0x901d('0x2a')](function(_0x5aa55d){_0x65371[_0x901d('0x49')]=_0x5aa55d;return _0x65371;})[_0x901d('0x2a')](respondWithFilteredResult(_0x59740f,_0x3fdfb9))[_0x901d('0x56')](handleError(_0x59740f,null));};exports[_0x901d('0x178')]=function(_0x21c9da,_0x4e2656){if(!_['isNil'](_0x21c9da['user']['id'])&&(_0x21c9da[_0x901d('0x30')][_0x901d('0x2d')]==_0x901d('0x2e')||_0x21c9da[_0x901d('0x30')][_0x901d('0x2d')]=='user')){return db[_0x901d('0x3e')][_0x901d('0x9b')]({'where':{'id':_0x21c9da['params']['id']},'raw':!![]})[_0x901d('0x2a')](function(_0x4ee68e){return authService[_0x901d('0x179')](_0x4ee68e);})[_0x901d('0x2a')](function(_0x29eaac){if(_0x29eaac){return _0x4e2656[_0x901d('0x22')](0xc8)[_0x901d('0x23')]({'api_key':_0x29eaac['token']});}else{return _0x4e2656['status'](0xcc)[_0x901d('0x23')]({'message':_0x901d('0x17a')});}})[_0x901d('0x56')](handleError(_0x4e2656,0x193));}else{return _0x4e2656['status'](0x191)['json']({'message':_0x901d('0x17b')});}};exports['createApiKey']=function(_0x4dc9be,_0x80e177){if(!_[_0x901d('0x6b')](_0x4dc9be['user']['id'])&&(_0x4dc9be['user']['role']==_0x901d('0x2e')||_0x4dc9be['user']['role']==_0x901d('0x30'))){return db[_0x901d('0x3e')][_0x901d('0x38')]({'where':{'id':_0x4dc9be[_0x901d('0x58')]['id']}})['then'](function(_0x8e48b6){return authService['generateApiKey'](_0x8e48b6);})[_0x901d('0x2a')](function(_0x23eda5){return db[_0x901d('0x3e')]['update']({'apiKeyIat':_0x23eda5['iat'],'apiKeyNonce':_0x23eda5[_0x901d('0x17c')]},{'where':{'id':_0x4dc9be[_0x901d('0x58')]['id']}})['then'](function(){return _0x80e177['status'](0xc8)[_0x901d('0x23')]({'api_key':_0x23eda5[_0x901d('0x17d')]});});})[_0x901d('0x56')](handleError(_0x80e177,0x193));}else{return _0x80e177['status'](0x191)[_0x901d('0x23')]({'message':_0x901d('0x17b')});}};exports[_0x901d('0x17e')]=function(_0x383209,_0x440e49){if(!_['isNil'](_0x383209['user']['id'])&&(_0x383209['user'][_0x901d('0x2d')]=='admin'||_0x383209[_0x901d('0x30')][_0x901d('0x2d')]==_0x901d('0x30'))){return db[_0x901d('0x3e')]['find']({'where':{'id':_0x383209[_0x901d('0x58')]['id']}})[_0x901d('0x2a')](handleEntityNotFound(_0x440e49,null))['then'](function(_0x53a548){if(_0x53a548&&_0x53a548[_0x901d('0x17f')]&&_0x53a548[_0x901d('0x180')])return _0x53a548;else throw{'message':'API\x20key\x20not\x20available'};})[_0x901d('0x2a')](function(_0x3fb471){return db[_0x901d('0x3e')][_0x901d('0x60')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x383209[_0x901d('0x58')]['id']}});})[_0x901d('0x2a')](respondWithStatusCode(_0x440e49,0xc8))[_0x901d('0x56')](handleError(_0x440e49,0x193));}else{return _0x440e49[_0x901d('0x22')](0x191)['json']({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports['whoami']=function(_0x252431,_0x6e0bff){var _0x51309a=_0x252431[_0x901d('0x30')][_0x901d('0x2c')]({'plain':!![]});if(!_0x51309a){return _0x6e0bff[_0x901d('0x22')](0x191)[_0x901d('0x3c')](_0x901d('0x181'));}else{return _0x6e0bff[_0x901d('0x22')](0xc8)['json'](_0x51309a);}};exports[_0x901d('0x182')]=function(_0xb5d6f9,_0x3b209c){var _0x8f727e={'offset':0x0},_0x39a124={'count':0x0,'rows':[]};Promise[_0x901d('0x106')]()[_0x901d('0x2a')](function(){if(!_0xb5d6f9[_0x901d('0x4a')][_0x901d('0x34')]&&!_0xb5d6f9[_0x901d('0x4a')][_0x901d('0x183')]&&!_0xb5d6f9['query'][_0x901d('0x184')])return[];return Promise[_0x901d('0x106')]()[_0x901d('0x2a')](function(){var _0x1cefde=[];if(!_[_0x901d('0x90')](_0xb5d6f9[_0x901d('0x4a')][_0x901d('0x183')])){_0x1cefde['push'](db[_0x901d('0x116')][_0x901d('0x8f')]({'attributes':['id',_0x901d('0x39')],'where':{'id':_0xb5d6f9[_0x901d('0x4a')][_0x901d('0x183')]}}));}if(!_[_0x901d('0x90')](_0xb5d6f9[_0x901d('0x4a')][_0x901d('0x184')])){_0x1cefde[_0x901d('0x48')](db[_0x901d('0xad')][_0x901d('0x8f')]({'attributes':['id','name'],'type':_0x901d('0x185'),'where':{'id':_0xb5d6f9[_0x901d('0x4a')][_0x901d('0x184')]}}));}return Promise[_0x901d('0x55')](_0x1cefde);})['then'](function(_0x411a5e){var _0x3acb36=_[_0x901d('0x12e')](_0x411a5e)[_0x901d('0x35')](function(_0x441df5){return _0x441df5[_0x901d('0x132')]({'attributes':['id',_0x901d('0x39'),'internal',_0x901d('0xa1')],'raw':!![]});});return Promise['all'](_0x3acb36);})['then'](function(_0x535b2d){var _0x5c33a8=_['flatten'](_0x535b2d);if(!_0xb5d6f9[_0x901d('0x4a')][_0x901d('0x34')])return _0x5c33a8;if(_['isEmpty'](_0x5c33a8)){return db[_0x901d('0x3e')]['findAll']({'attributes':['id',_0x901d('0x39'),_0x901d('0x66'),'online'],'where':{'role':'agent','$or':[db[_0x901d('0x6d')]['where'](db[_0x901d('0x6d')]['fn'](_0x901d('0x186'),db[_0x901d('0x6d')][_0x901d('0x187')](_0x901d('0x39'))),{'$like':'%'+_0xb5d6f9[_0x901d('0x4a')][_0x901d('0x34')][_0x901d('0xa7')]()+'%'}),{'internal':{'$like':'%'+_0xb5d6f9[_0x901d('0x4a')][_0x901d('0x34')]+'%'}}]},'raw':!![]});}else{return _(_0x5c33a8)[_0x901d('0x12e')]()[_0x901d('0x34')](function(_0x3f1b99){return _0x3f1b99[_0x901d('0x39')][_0x901d('0xa7')]()[_0x901d('0x37')](_0xb5d6f9[_0x901d('0x4a')]['filter']['toLowerCase']())||_0x3f1b99[_0x901d('0x66')]['toString']()['includes'](_0xb5d6f9[_0x901d('0x4a')][_0x901d('0x34')]);})['value']();}})[_0x901d('0x2a')](function(_0x39fbd4){var _0x386078='name';var _0x44a97c=_0x901d('0x188');if(_0xb5d6f9['query'][_0x901d('0xd4')]){var _0x44a97c=_0xb5d6f9[_0x901d('0x4a')][_0x901d('0xd4')][0x0]==='-'?_0x901d('0x189'):_0x901d('0x188');var _0x386078=_0x44a97c==='asc'?_0xb5d6f9[_0x901d('0x4a')][_0x901d('0xd4')]:_0xb5d6f9['query']['sort']['substring'](0x1);}return _(_0x39fbd4)[_0x901d('0x18a')]('id')['orderBy']([function(_0x274370){return _0x386078===_0x901d('0x39')?_0x274370[_0x386078]['toLowerCase']():_0x274370[_0x386078];}],[_0x44a97c])[_0x901d('0x35')](function(_0x22360c){return _[_0x901d('0xe0')](_0x22360c,['id','name',_0x901d('0x66'),'online']);})[_0x901d('0x36')]();})[_0x901d('0x2a')](function(_0x116fa5){return client[_0x901d('0x16')]('Agents',_0xb5d6f9)[_0x901d('0x2a')](function(_0x33312f){if(_0x33312f[_0x901d('0x1d')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x16500b=_0x33312f[_0x901d('0x20')];var _0x331464=jayson[_0x901d('0x14')]['http']({'port':0x232c});return _0x331464['request'](_0x901d('0x31'),_0xb5d6f9)[_0x901d('0x2a')](function(_0x3e6775){if(_0x3e6775['error'])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x222349=_0x3e6775[_0x901d('0x20')];return _[_0x901d('0x5e')]({},_0x222349,_0x16500b);});})[_0x901d('0x2a')](function(_0x440c4a){return _['map'](_0x116fa5,function(_0x1d28fa){var _0x24157d=_[_0x901d('0x38')](_0x440c4a[_0x901d('0x49')],['id',_0x1d28fa['id']]);if(!_0x24157d||!_0x1d28fa['online']){_0x1d28fa[_0x901d('0x22')]='offline';}else if(_0x24157d[_0x901d('0xb0')]){_0x1d28fa['status']=_0x901d('0x108');}else{_0x1d28fa[_0x901d('0x22')]=_[_0x901d('0x37')]([_0x901d('0x18b'),_0x901d('0x18c'),'unavailable',_0x901d('0x18d'),null,undefined],_0x24157d[_0x901d('0x18e')])?_0x901d('0xa1'):_0x901d('0x18f');}return _0x1d28fa;});});});})[_0x901d('0x2a')](function(_0x3fa08f){if(!_0xb5d6f9[_0x901d('0x4a')][_0x901d('0xd6')]('nolimit')){_0x8f727e[_0x901d('0x26')]=qs[_0x901d('0x26')](_0xb5d6f9[_0x901d('0x4a')][_0x901d('0x26')]||0xa);_0x8f727e[_0x901d('0x24')]=qs['offset'](_0xb5d6f9[_0x901d('0x4a')][_0x901d('0x24')]);}_0x39a124[_0x901d('0x27')]=_0x3fa08f[_0x901d('0x4d')];_0x39a124[_0x901d('0x49')]=_0x8f727e[_0x901d('0x26')]?_0x3fa08f[_0x901d('0x190')](_0x8f727e['offset'],_0x8f727e[_0x901d('0x24')]+_0x8f727e[_0x901d('0x26')]):_0x3fa08f;return _0x39a124;})['then'](respondWithFilteredResult(_0x3b209c,_0x8f727e))[_0x901d('0x56')](handleError(_0x3b209c,null));};function get_open_tabs(_0x378eac,_0x4a7245){var _0xf0c3af=_0x378eac[_0x901d('0x191')](0x0)['toUpperCase']()+_0x378eac[_0x901d('0x190')](0x1);var _0x563f80={'type':db[_0x901d('0x94')][_0x901d('0x6e')][_0x901d('0x6f')],'raw':!![]};return new BPromise(function(_0x11db23,_0x2a5063){var _0x2e4994=squel['select']()['field'](_0x901d('0x192')+_0xf0c3af+_0x901d('0x193'),'id')['field'](_0x901d('0x194'))['from'](_0x901d('0x195')+_0x378eac+_0x901d('0x196'),'ui')[_0x901d('0xd5')](_0x901d('0x197'),_0x4a7245['id']);return db[_0x901d('0x6d')][_0x901d('0x4a')](_0x2e4994[_0x901d('0x198')](),_0x563f80)['then'](function(_0x4b2322){_0x4a7245[_0xf0c3af+_0x901d('0x199')]=_0x4b2322;_0x11db23(_0x4b2322);})[_0x901d('0x56')](function(_0x197492){_0x2a5063(_0x197492);});});};
\ No newline at end of file
index 8cd8670..fb56a6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4146=['hook','exports','events','../../mysqldb','User','save','update','remove','emit'];(function(_0x1a595a,_0x263824){var _0x33f008=function(_0x1e2f9c){while(--_0x1e2f9c){_0x1a595a['push'](_0x1a595a['shift']());}};_0x33f008(++_0x263824);}(_0x4146,0x1d6));var _0x6414=function(_0x3b2d00,_0x2748ed){_0x3b2d00=_0x3b2d00-0x0;var _0x3e333a=_0x4146[_0x3b2d00];return _0x3e333a;};'use strict';var EventEmitter=require(_0x6414('0x0'));var User=require(_0x6414('0x1'))['db'][_0x6414('0x2')];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6414('0x3'),'afterUpdate':_0x6414('0x4'),'afterDestroy':_0x6414('0x5')};function emitEvent(_0x5c372f){return function(_0x4985b9,_0x5d8620,_0x50f112){UserEvents[_0x6414('0x6')](_0x5c372f+':'+_0x4985b9['id'],_0x4985b9);UserEvents[_0x6414('0x6')](_0x5c372f,_0x4985b9);_0x50f112(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User[_0x6414('0x7')](e,emitEvent(event));}}module[_0x6414('0x8')]=UserEvents;
\ No newline at end of file
+var _0x99e7=['setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0xf8e21,_0x2a45a0){var _0x5e07c0=function(_0x5e718e){while(--_0x5e718e){_0xf8e21['push'](_0xf8e21['shift']());}};_0x5e07c0(++_0x2a45a0);}(_0x99e7,0x7c));var _0x799e=function(_0x33c9f8,_0x5aedbb){_0x33c9f8=_0x33c9f8-0x0;var _0x2d7004=_0x99e7[_0x33c9f8];return _0x2d7004;};'use strict';var EventEmitter=require(_0x799e('0x0'));var User=require(_0x799e('0x1'))['db']['User'];var UserEvents=new EventEmitter();UserEvents[_0x799e('0x2')](0x0);var events={'afterCreate':_0x799e('0x3'),'afterUpdate':_0x799e('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3f0070){return function(_0x22108e,_0x2be59d,_0x1d3978){UserEvents[_0x799e('0x5')](_0x3f0070+':'+_0x22108e['id'],_0x22108e);UserEvents[_0x799e('0x5')](_0x3f0070,_0x22108e);_0x1d3978(null);};}for(var e in events){if(events[_0x799e('0x6')](e)){var event=events[e];User[_0x799e('0x7')](e,emitEvent(event));}}module[_0x799e('0x8')]=UserEvents;
\ No newline at end of file
index 4701684..ff2ca57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf417=['then','internal','exports','models','User','users','utf8','userProfileId','undefined','resolve','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','catch','password','concat','VoiceExtension','bulkCreate','changed','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','salt','sha1','toString','base64','pbkdf2','indexOf','provider','Invalid\x20password','md5secret',':asterisk:','crypto','util','lodash','./user.attributes','google','length','context','format','%s%s','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','SIP/%s,%s','options','join','StopMixMonitor','wav','WAV','gsm','system','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','name','Hangup','priority','defaults','VoiceChanSpy','findAll'];(function(_0x28e742,_0x1a4d49){var _0x5164de=function(_0x3a571b){while(--_0x3a571b){_0x28e742['push'](_0x28e742['shift']());}};_0x5164de(++_0x1a4d49);}(_0xf417,0x105));var _0x7f41=function(_0x873d48,_0x3cf3c0){_0x873d48=_0x873d48-0x0;var _0x50c8ca=_0xf417[_0x873d48];return _0x50c8ca;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x7f41('0x0'));var util=require(_0x7f41('0x1'));var md5=require('md5');var _=require(_0x7f41('0x2'));var attributes=require(_0x7f41('0x3'));var authTypes=[_0x7f41('0x4')];var validatePresenceOf=function(_0x3094ba){return _0x3094ba&&_0x3094ba[_0x7f41('0x5')];};var getChanSpyApplications=function(_0x17ddbf,_0x8c78f9,_0x283754){var _0x39d551={'context':_0x17ddbf[_0x7f41('0x6')]||'from-sip','type':'system','isApp':![],'UserId':_0x17ddbf['id']};var _0x1fda7d=[];for(var _0x27016b=0x0,_0x311a83=0x1;_0x27016b<_0x283754[_0x7f41('0x5')];_0x27016b++,_0x311a83=0x1){var _0x215802={'exten':util[_0x7f41('0x7')](_0x7f41('0x8'),_0x283754[_0x27016b]['prefix'],_0x8c78f9),'ChanSpyId':_0x283754[_0x27016b]['id']};_0x1fda7d[_0x7f41('0x9')](_[_0x7f41('0xa')]({'app':_0x7f41('0xb'),'appdata':util[_0x7f41('0x7')](_0x7f41('0xc'),_0x7f41('0xd')),'priority':_0x311a83++},_0x39d551,_0x215802));if(_0x283754[_0x27016b][_0x7f41('0xe')]){_0x1fda7d[_0x7f41('0x9')](_['merge']({'app':_0x7f41('0xf'),'appdata':util[_0x7f41('0x7')](_0x7f41('0x10'),_0x283754[_0x27016b][_0x7f41('0x11')]),'priority':_0x311a83++},_0x39d551,_0x215802));}if(_0x283754[_0x27016b][_0x7f41('0x12')]){_0x1fda7d[_0x7f41('0x9')](_[_0x7f41('0xa')]({'app':_0x7f41('0x13'),'appdata':_0x283754[_0x27016b]['password'],'priority':_0x311a83++},_0x39d551,_0x215802));}_0x1fda7d['push'](_[_0x7f41('0xa')]({'app':'ChanSpy','appdata':util[_0x7f41('0x7')](_0x7f41('0x14'),_0x17ddbf['name'],_0x283754[_0x27016b][_0x7f41('0x15')]?_0x283754[_0x27016b][_0x7f41('0x15')][_0x7f41('0x16')](''):''),'priority':_0x311a83++},_0x39d551,_0x215802));if(_0x283754[_0x27016b]['record']){_0x1fda7d['push'](_[_0x7f41('0xa')]({'app':_0x7f41('0x17'),'priority':_0x311a83++},_0x39d551,_0x215802));}}return _0x1fda7d;};var getUserApplications=function(_0xcad0b6,_0x50f391){var _0x380c53=[_0x7f41('0x18'),_0x7f41('0x19'),_0x7f41('0x1a')];var _0x3fad09={'context':_0xcad0b6[_0x7f41('0x6')]||'from-sip','exten':_0x50f391,'type':_0x7f41('0x1b'),'isApp':![],'UserId':_0xcad0b6['id']};var _0x5f364f=[{'app':_0x7f41('0xb'),'appdata':_0x7f41('0x1c')}];if(_0xcad0b6['extensionMonitor']&&_['includes'](_0x380c53,_0xcad0b6[_0x7f41('0x1d')])){_0x5f364f[_0x7f41('0x9')]({'app':_0x7f41('0xb'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x5f364f[_0x7f41('0x9')]({'app':_0x7f41('0xb'),'appdata':util[_0x7f41('0x7')](_0x7f41('0x1e'),_0xcad0b6['extensionMonitor'])});_0x5f364f['push']({'app':'Dial','appdata':util[_0x7f41('0x7')](_0x7f41('0x1f'),_0xcad0b6['name'])});}else{_0x5f364f['push']({'app':'Dial','appdata':util['format'](_0x7f41('0x20'),_0xcad0b6[_0x7f41('0x21')])});}_0x5f364f[_0x7f41('0x9')]({'app':_0x7f41('0x22')});for(var _0x44da05=0x0;_0x44da05<_0x5f364f[_0x7f41('0x5')];_0x44da05++){_0x5f364f[_0x44da05][_0x7f41('0x23')]=_0x44da05+0x1;_0x5f364f[_0x44da05]=_[_0x7f41('0x24')](_0x5f364f[_0x44da05],_0x3fad09);}return _0x5f364f;};var getChanSpyPromise=function(_0x643425,_0x181597){return new BPromise(function(_0x1c9159,_0x6c8263){return _0x643425[_0x7f41('0x25')][_0x7f41('0x26')]()[_0x7f41('0x27')](function(_0x423718){if(_0x423718){var _0x2986c8=getChanSpyApplications(_0x181597,_0x181597[_0x7f41('0x28')],_0x423718);if(_0x181597[_0x7f41('0x28')]!=_0x181597['name']){_0x2986c8=_0x2986c8['concat'](getChanSpyApplications(_0x181597,_0x181597['name'],_0x423718));}return _0x1c9159(_0x2986c8);}return _0x1c9159([]);})['catch'](function(_0x4f9ad2){_0x6c8263(_0x4f9ad2);});});};module[_0x7f41('0x29')]=function(_0x36d96b,_0x1eba20){var _0x30bc48=_0x36d96b[_0x7f41('0x2a')];return _0x36d96b['define'](_0x7f41('0x2b'),attributes,{'tableName':_0x7f41('0x2c'),'charset':_0x7f41('0x2d'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x1a2bd1,_0xe73308,_0x3d9296){var _0x346624=typeof _0x1a2bd1[_0x7f41('0x2e')]===_0x7f41('0x2f')?BPromise[_0x7f41('0x30')](null):_0x30bc48[_0x7f41('0x31')][_0x7f41('0x32')]({'where':{'id':_0x1a2bd1['userProfileId']}});_0x346624['then'](function(_0x3d7c40){if(_0x3d7c40){_0x1a2bd1[_0x7f41('0x33')]=_0x3d7c40[_0x7f41('0x33')];}})[_0x7f41('0x27')](function(){_0x1a2bd1[_0x7f41('0x34')]();_0x1a2bd1[_0x7f41('0x35')](_0x3d9296);})[_0x7f41('0x36')](function(_0x4133ea){_0x3d9296(_0x4133ea);});},'beforeUpdate':function(_0x3ba512,_0x36164d,_0xd7b308){Promise[_0x7f41('0x30')]()[_0x7f41('0x27')](function(){if(_0x3ba512['changed'](_0x7f41('0x2e'))===![])return;return _0x30bc48[_0x7f41('0x31')][_0x7f41('0x32')]({'where':{'id':_0x3ba512[_0x7f41('0x2e')]}})[_0x7f41('0x27')](function(_0x91f0d){if(_0x91f0d)_0x3ba512[_0x7f41('0x33')]=_0x91f0d[_0x7f41('0x33')];return;});})[_0x7f41('0x27')](function(){if(_0x3ba512['changed'](_0x7f41('0x37'))){_0x3ba512[_0x7f41('0x34')]();return _0x3ba512[_0x7f41('0x35')](_0xd7b308);}_0xd7b308();})[_0x7f41('0x36')](function(_0x2d2004){_0xd7b308(_0x2d2004);});},'afterCreate':function(_0x1785cf,_0x5e65f2,_0x3c5333){var _0x4d3b9a=getUserApplications(_0x1785cf,_0x1785cf['internal']);if(_0x1785cf[_0x7f41('0x28')]!=_0x1785cf[_0x7f41('0x21')]){_0x4d3b9a=_0x4d3b9a[_0x7f41('0x38')](getUserApplications(_0x1785cf,_0x1785cf[_0x7f41('0x21')]));}return _0x30bc48[_0x7f41('0x39')][_0x7f41('0x3a')](_0x4d3b9a)[_0x7f41('0x27')](function(){if(_0x1785cf[_0x7f41('0xd')]){return getChanSpyPromise(_0x30bc48,_0x1785cf);}})[_0x7f41('0x27')](function(_0x3d9cad){if(_0x3d9cad&&_0x3d9cad[_0x7f41('0x5')]){return _0x30bc48[_0x7f41('0x39')][_0x7f41('0x3a')](_0x3d9cad);}})['then'](function(){_0x3c5333();})[_0x7f41('0x36')](function(_0x5a9164){_0x3c5333(_0x5a9164);});},'afterUpdate':function(_0x12494a,_0x29a813,_0x16291f){return BPromise[_0x7f41('0x30')]()[_0x7f41('0x27')](function(){if(_0x12494a[_0x7f41('0x3b')]('chanspy')||_0x12494a['changed'](_0x7f41('0x6'))){return _0x30bc48[_0x7f41('0x39')][_0x7f41('0x3c')]({'where':{'UserId':_0x12494a['id'],'type':_0x7f41('0x1b'),'ChanSpyId':{'$ne':null}}})[_0x7f41('0x27')](function(){if(_0x12494a['chanspy']){return getChanSpyPromise(_0x30bc48,_0x12494a)[_0x7f41('0x27')](function(_0x448093){if(_0x448093&&_0x448093[_0x7f41('0x5')]){return _0x30bc48['VoiceExtension'][_0x7f41('0x3a')](_0x448093);}});}});}})[_0x7f41('0x27')](function(){if(_0x12494a[_0x7f41('0x3b')](_0x7f41('0x1d'))||_0x12494a[_0x7f41('0x3b')](_0x7f41('0x6'))){return _0x30bc48['VoiceExtension'][_0x7f41('0x3c')]({'where':{'UserId':_0x12494a['id'],'type':_0x7f41('0x1b'),'ChanSpyId':null}})[_0x7f41('0x27')](function(){var _0x47272d=getUserApplications(_0x12494a,_0x12494a[_0x7f41('0x28')]);if(_0x12494a['internal']!=_0x12494a['name']){_0x47272d=_0x47272d[_0x7f41('0x38')](getUserApplications(_0x12494a,_0x12494a[_0x7f41('0x21')]));}return _0x30bc48[_0x7f41('0x39')][_0x7f41('0x3a')](_0x47272d);});}})['then'](function(){_0x16291f();})[_0x7f41('0x36')](function(_0x3b908f){_0x16291f(_0x3b908f);});},'afterDestroy':function(_0x355bf6,_0x336f21){return _0x30bc48[_0x7f41('0x39')][_0x7f41('0x3c')]({'where':{'UserId':_0x355bf6['id'],'type':_0x7f41('0x1b')}});}},'instanceMethods':{'authenticate':function(_0x2667f6,_0x352427){if(!_0x352427){return this[_0x7f41('0x37')]===this[_0x7f41('0x3d')](_0x2667f6);}var _0x8aa82c=this;this[_0x7f41('0x3d')](_0x2667f6,function(_0x5e39cf,_0x54ce34){if(_0x5e39cf){_0x352427(_0x5e39cf);}if(_0x8aa82c[_0x7f41('0x37')]===_0x54ce34){_0x352427(null,!![]);}else{_0x352427(null,![]);}});},'makeSalt':function(_0x5d1e59,_0x5bbc2d){var _0xf30dae=0x10;if(typeof arguments[0x0]===_0x7f41('0x3e')){_0x5bbc2d=arguments[0x0];_0x5d1e59=_0xf30dae;}else if(typeof arguments[0x1]===_0x7f41('0x3e')){_0x5bbc2d=arguments[0x1];}else{throw new Error(_0x7f41('0x3f'));}if(!_0x5d1e59){_0x5d1e59=_0xf30dae;}return crypto[_0x7f41('0x40')](_0x5d1e59,function(_0x18c827,_0x5a79f4){if(_0x18c827){_0x5bbc2d(_0x18c827);}return _0x5bbc2d(null,_0x5a79f4['toString']('base64'));});},'encryptPassword':function(_0x548e1c,_0xc87b00){if(!_0x548e1c||!this[_0x7f41('0x41')]){return _0xc87b00?_0xc87b00(null):null;}var _0x195159=0x2710;var _0x519f43=0x40;var _0x2db19d=new Buffer(this[_0x7f41('0x41')],'base64');if(!_0xc87b00){return crypto['pbkdf2Sync'](_0x548e1c,_0x2db19d,_0x195159,_0x519f43,_0x7f41('0x42'))[_0x7f41('0x43')](_0x7f41('0x44'));}return crypto[_0x7f41('0x45')](_0x548e1c,_0x2db19d,_0x195159,_0x519f43,_0x7f41('0x42'),function(_0x27b63f,_0x419c53){if(_0x27b63f){_0xc87b00(_0x27b63f);}return _0xc87b00(null,_0x419c53[_0x7f41('0x43')]('base64'));});},'updatePassword':function(_0x457875){if(!this[_0x7f41('0x37')]){return _0x457875(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0x7f41('0x46')](this[_0x7f41('0x47')])===-0x1){_0x457875(new Error(_0x7f41('0x48')));}var _0x2190e7=this;this['makeSalt'](function(_0x396d0e,_0xcc778b){if(_0x396d0e){return _0x457875(_0x396d0e);}_0x2190e7['salt']=_0xcc778b;_0x2190e7[_0x7f41('0x3d')](_0x2190e7['password'],function(_0x2e5c3d,_0x576c18){if(_0x2e5c3d){_0x457875(_0x2e5c3d);}_0x2190e7[_0x7f41('0x37')]=_0x576c18;_0x457875(null);});});},'updateMd5Password':function(){this[_0x7f41('0x49')]=md5(this['name']+_0x7f41('0x4a')+this[_0x7f41('0x37')]);return this['md5secret'];}}});};
\ No newline at end of file
+var _0x2b54=['sha1','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','crypto','md5','lodash','./user.attributes','google','length','from-sip','format','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','Authenticate','password','ChanSpy','name','options','StopMixMonitor','WAV','system','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','defaults','then','concat','exports','models','define','User','utf8','userProfileId','undefined','resolve','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','catch','changed','internal','VoiceExtension','bulkCreate','destroy','context','encryptPassword','function','Missing\x20Callback','toString','salt','pbkdf2Sync','base64','pbkdf2'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2b54,0xdf));var _0x42b5=function(_0x254afd,_0x6bd6db){_0x254afd=_0x254afd-0x0;var _0x2a2117=_0x2b54[_0x254afd];return _0x2a2117;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x42b5('0x0'));var util=require('util');var md5=require(_0x42b5('0x1'));var _=require(_0x42b5('0x2'));var attributes=require(_0x42b5('0x3'));var authTypes=[_0x42b5('0x4')];var validatePresenceOf=function(_0x521d1b){return _0x521d1b&&_0x521d1b[_0x42b5('0x5')];};var getChanSpyApplications=function(_0x256eee,_0x5662cb,_0x235577){var _0x47d202={'context':_0x256eee['context']||_0x42b5('0x6'),'type':'system','isApp':![],'UserId':_0x256eee['id']};var _0x19d2e8=[];for(var _0x5d679e=0x0,_0xa1afa0=0x1;_0x5d679e<_0x235577[_0x42b5('0x5')];_0x5d679e++,_0xa1afa0=0x1){var _0x1426b3={'exten':util[_0x42b5('0x7')]('%s%s',_0x235577[_0x5d679e][_0x42b5('0x8')],_0x5662cb),'ChanSpyId':_0x235577[_0x5d679e]['id']};_0x19d2e8[_0x42b5('0x9')](_[_0x42b5('0xa')]({'app':_0x42b5('0xb'),'appdata':util[_0x42b5('0x7')](_0x42b5('0xc'),_0x42b5('0xd')),'priority':_0xa1afa0++},_0x47d202,_0x1426b3));if(_0x235577[_0x5d679e][_0x42b5('0xe')]){_0x19d2e8[_0x42b5('0x9')](_[_0x42b5('0xa')]({'app':_0x42b5('0xf'),'appdata':util[_0x42b5('0x7')](_0x42b5('0x10'),_0x235577[_0x5d679e][_0x42b5('0x11')]),'priority':_0xa1afa0++},_0x47d202,_0x1426b3));}if(_0x235577[_0x5d679e]['auth']){_0x19d2e8[_0x42b5('0x9')](_[_0x42b5('0xa')]({'app':_0x42b5('0x12'),'appdata':_0x235577[_0x5d679e][_0x42b5('0x13')],'priority':_0xa1afa0++},_0x47d202,_0x1426b3));}_0x19d2e8['push'](_['merge']({'app':_0x42b5('0x14'),'appdata':util[_0x42b5('0x7')]('SIP/%s,%s',_0x256eee[_0x42b5('0x15')],_0x235577[_0x5d679e][_0x42b5('0x16')]?_0x235577[_0x5d679e]['options']['join'](''):''),'priority':_0xa1afa0++},_0x47d202,_0x1426b3));if(_0x235577[_0x5d679e][_0x42b5('0xe')]){_0x19d2e8['push'](_[_0x42b5('0xa')]({'app':_0x42b5('0x17'),'priority':_0xa1afa0++},_0x47d202,_0x1426b3));}}return _0x19d2e8;};var getUserApplications=function(_0x4ab22d,_0x3afa14){var _0x1da048=['wav',_0x42b5('0x18'),'gsm'];var _0x2dc55e={'context':_0x4ab22d['context']||_0x42b5('0x6'),'exten':_0x3afa14,'type':_0x42b5('0x19'),'isApp':![],'UserId':_0x4ab22d['id']};var _0x4d695c=[{'app':_0x42b5('0xb'),'appdata':_0x42b5('0x1a')}];if(_0x4ab22d[_0x42b5('0x1b')]&&_['includes'](_0x1da048,_0x4ab22d[_0x42b5('0x1b')])){_0x4d695c['push']({'app':_0x42b5('0xb'),'appdata':_0x42b5('0x1c')});_0x4d695c[_0x42b5('0x9')]({'app':_0x42b5('0xb'),'appdata':util[_0x42b5('0x7')](_0x42b5('0x1d'),_0x4ab22d[_0x42b5('0x1b')])});_0x4d695c['push']({'app':_0x42b5('0x1e'),'appdata':util[_0x42b5('0x7')](_0x42b5('0x1f'),_0x4ab22d[_0x42b5('0x15')])});}else{_0x4d695c['push']({'app':_0x42b5('0x1e'),'appdata':util['format'](_0x42b5('0x20'),_0x4ab22d[_0x42b5('0x15')])});}_0x4d695c[_0x42b5('0x9')]({'app':_0x42b5('0x21')});for(var _0x811c64=0x0;_0x811c64<_0x4d695c['length'];_0x811c64++){_0x4d695c[_0x811c64]['priority']=_0x811c64+0x1;_0x4d695c[_0x811c64]=_[_0x42b5('0x22')](_0x4d695c[_0x811c64],_0x2dc55e);}return _0x4d695c;};var getChanSpyPromise=function(_0x4dd252,_0x35a660){return new BPromise(function(_0x55f767,_0xf3c6de){return _0x4dd252['VoiceChanSpy']['findAll']()[_0x42b5('0x23')](function(_0x13f803){if(_0x13f803){var _0x14b139=getChanSpyApplications(_0x35a660,_0x35a660['internal'],_0x13f803);if(_0x35a660['internal']!=_0x35a660[_0x42b5('0x15')]){_0x14b139=_0x14b139[_0x42b5('0x24')](getChanSpyApplications(_0x35a660,_0x35a660[_0x42b5('0x15')],_0x13f803));}return _0x55f767(_0x14b139);}return _0x55f767([]);})['catch'](function(_0x5ddb28){_0xf3c6de(_0x5ddb28);});});};module[_0x42b5('0x25')]=function(_0x553d96,_0x301536){var _0x417550=_0x553d96[_0x42b5('0x26')];return _0x553d96[_0x42b5('0x27')](_0x42b5('0x28'),attributes,{'tableName':'users','charset':_0x42b5('0x29'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x549da2,_0xd8b7df,_0x4bf02f){var _0xd943f2=typeof _0x549da2[_0x42b5('0x2a')]===_0x42b5('0x2b')?BPromise[_0x42b5('0x2c')](null):_0x417550[_0x42b5('0x2d')][_0x42b5('0x2e')]({'where':{'id':_0x549da2[_0x42b5('0x2a')]}});_0xd943f2[_0x42b5('0x23')](function(_0x4f8ede){if(_0x4f8ede){_0x549da2[_0x42b5('0x2f')]=_0x4f8ede[_0x42b5('0x2f')];}})[_0x42b5('0x23')](function(){_0x549da2[_0x42b5('0x30')]();_0x549da2[_0x42b5('0x31')](_0x4bf02f);})[_0x42b5('0x32')](function(_0x1ff894){_0x4bf02f(_0x1ff894);});},'beforeUpdate':function(_0x3fa6c3,_0x3f2bfd,_0x5623a7){Promise['resolve']()['then'](function(){if(_0x3fa6c3[_0x42b5('0x33')](_0x42b5('0x2a'))===![])return;return _0x417550[_0x42b5('0x2d')][_0x42b5('0x2e')]({'where':{'id':_0x3fa6c3[_0x42b5('0x2a')]}})[_0x42b5('0x23')](function(_0x35b14b){if(_0x35b14b)_0x3fa6c3[_0x42b5('0x2f')]=_0x35b14b[_0x42b5('0x2f')];return;});})[_0x42b5('0x23')](function(){if(_0x3fa6c3[_0x42b5('0x33')](_0x42b5('0x13'))){_0x3fa6c3[_0x42b5('0x30')]();return _0x3fa6c3[_0x42b5('0x31')](_0x5623a7);}_0x5623a7();})[_0x42b5('0x32')](function(_0x21c015){_0x5623a7(_0x21c015);});},'afterCreate':function(_0x3f7d5f,_0x1ad239,_0x15be37){var _0x2081bd=getUserApplications(_0x3f7d5f,_0x3f7d5f['internal']);if(_0x3f7d5f[_0x42b5('0x34')]!=_0x3f7d5f['name']){_0x2081bd=_0x2081bd[_0x42b5('0x24')](getUserApplications(_0x3f7d5f,_0x3f7d5f[_0x42b5('0x15')]));}return _0x417550['VoiceExtension']['bulkCreate'](_0x2081bd)[_0x42b5('0x23')](function(){if(_0x3f7d5f[_0x42b5('0xd')]){return getChanSpyPromise(_0x417550,_0x3f7d5f);}})['then'](function(_0x554c78){if(_0x554c78&&_0x554c78[_0x42b5('0x5')]){return _0x417550[_0x42b5('0x35')][_0x42b5('0x36')](_0x554c78);}})[_0x42b5('0x23')](function(){_0x15be37();})['catch'](function(_0x175d0b){_0x15be37(_0x175d0b);});},'afterUpdate':function(_0x19d87b,_0x1752cc,_0x42fefa){return BPromise['resolve']()['then'](function(){if(_0x19d87b['changed'](_0x42b5('0xd'))||_0x19d87b['changed']('context')){return _0x417550[_0x42b5('0x35')][_0x42b5('0x37')]({'where':{'UserId':_0x19d87b['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x42b5('0x23')](function(){if(_0x19d87b[_0x42b5('0xd')]){return getChanSpyPromise(_0x417550,_0x19d87b)[_0x42b5('0x23')](function(_0x1e9e6f){if(_0x1e9e6f&&_0x1e9e6f[_0x42b5('0x5')]){return _0x417550[_0x42b5('0x35')][_0x42b5('0x36')](_0x1e9e6f);}});}});}})[_0x42b5('0x23')](function(){if(_0x19d87b[_0x42b5('0x33')](_0x42b5('0x1b'))||_0x19d87b['changed'](_0x42b5('0x38'))){return _0x417550[_0x42b5('0x35')][_0x42b5('0x37')]({'where':{'UserId':_0x19d87b['id'],'type':_0x42b5('0x19'),'ChanSpyId':null}})[_0x42b5('0x23')](function(){var _0xde3809=getUserApplications(_0x19d87b,_0x19d87b[_0x42b5('0x34')]);if(_0x19d87b[_0x42b5('0x34')]!=_0x19d87b[_0x42b5('0x15')]){_0xde3809=_0xde3809[_0x42b5('0x24')](getUserApplications(_0x19d87b,_0x19d87b['name']));}return _0x417550[_0x42b5('0x35')][_0x42b5('0x36')](_0xde3809);});}})[_0x42b5('0x23')](function(){_0x42fefa();})[_0x42b5('0x32')](function(_0x341f99){_0x42fefa(_0x341f99);});},'afterDestroy':function(_0x91175b,_0x5ad5b4){return _0x417550['VoiceExtension']['destroy']({'where':{'UserId':_0x91175b['id'],'type':_0x42b5('0x19')}});}},'instanceMethods':{'authenticate':function(_0x4dff43,_0x68d736){if(!_0x68d736){return this['password']===this[_0x42b5('0x39')](_0x4dff43);}var _0x22abec=this;this[_0x42b5('0x39')](_0x4dff43,function(_0x8e86c1,_0x1acc8c){if(_0x8e86c1){_0x68d736(_0x8e86c1);}if(_0x22abec[_0x42b5('0x13')]===_0x1acc8c){_0x68d736(null,!![]);}else{_0x68d736(null,![]);}});},'makeSalt':function(_0x99e68f,_0x19bbd7){var _0x500f34=0x10;if(typeof arguments[0x0]===_0x42b5('0x3a')){_0x19bbd7=arguments[0x0];_0x99e68f=_0x500f34;}else if(typeof arguments[0x1]===_0x42b5('0x3a')){_0x19bbd7=arguments[0x1];}else{throw new Error(_0x42b5('0x3b'));}if(!_0x99e68f){_0x99e68f=_0x500f34;}return crypto['randomBytes'](_0x99e68f,function(_0x3635ac,_0x224d68){if(_0x3635ac){_0x19bbd7(_0x3635ac);}return _0x19bbd7(null,_0x224d68[_0x42b5('0x3c')]('base64'));});},'encryptPassword':function(_0x386607,_0x148ba7){if(!_0x386607||!this['salt']){return _0x148ba7?_0x148ba7(null):null;}var _0x1010a4=0x2710;var _0x49b936=0x40;var _0xce1060=new Buffer(this[_0x42b5('0x3d')],'base64');if(!_0x148ba7){return crypto[_0x42b5('0x3e')](_0x386607,_0xce1060,_0x1010a4,_0x49b936,'sha1')[_0x42b5('0x3c')](_0x42b5('0x3f'));}return crypto[_0x42b5('0x40')](_0x386607,_0xce1060,_0x1010a4,_0x49b936,_0x42b5('0x41'),function(_0x10cf1d,_0x5eedc8){if(_0x10cf1d){_0x148ba7(_0x10cf1d);}return _0x148ba7(null,_0x5eedc8[_0x42b5('0x3c')](_0x42b5('0x3f')));});},'updatePassword':function(_0x3a0e23){if(!this[_0x42b5('0x13')]){return _0x3a0e23(null);}if(!validatePresenceOf(this[_0x42b5('0x13')])&&authTypes[_0x42b5('0x42')](this[_0x42b5('0x43')])===-0x1){_0x3a0e23(new Error(_0x42b5('0x44')));}var _0x35a6bb=this;this[_0x42b5('0x45')](function(_0x2f2f3c,_0x3b520a){if(_0x2f2f3c){return _0x3a0e23(_0x2f2f3c);}_0x35a6bb[_0x42b5('0x3d')]=_0x3b520a;_0x35a6bb[_0x42b5('0x39')](_0x35a6bb[_0x42b5('0x13')],function(_0x3cc414,_0x92cea){if(_0x3cc414){_0x3a0e23(_0x3cc414);}_0x35a6bb[_0x42b5('0x13')]=_0x92cea;_0x3a0e23(null);});});},'updateMd5Password':function(){this[_0x42b5('0x46')]=md5(this[_0x42b5('0x15')]+_0x42b5('0x47')+this['password']);return this[_0x42b5('0x46')];}}});};
\ No newline at end of file
index 4e49b26..bad034c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c20=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','./user.socket','register','request','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetUser','User','findAll','options','where','attributes','limit','include','model','map','catch','ShowUser','find','raw','then','PauseUser','name','role','interface','UserVoiceQueueRt','MemberReport','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','isNil','SIP/%s','type','DEFAULT\x20PAUSE','internal','body','uniqueid','bulkCreate','format','findOne','channel','isValidChannel','update','system','chat','sms','openchannel','whatsapp','set','Pause','push','all','LogoutUser','destroy','LoginUser','mobile','phone','count','agent','../../config/license/util','getLicense','agents','getVoiceQueues','UserVoiceQueue.penalty','merge','LOGIN','callysquare','loginInPause','LOGININPAUSE','lodash','moment','bluebird','randomstring'];(function(_0x18cac4,_0x57a4d5){var _0x2227c6=function(_0x72934d){while(--_0x72934d){_0x18cac4['push'](_0x18cac4['shift']());}};_0x2227c6(++_0x57a4d5);}(_0x3c20,0x116));var _0x03c2=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0x3c20[_0x2763f2];return _0x3ef471;};'use strict';var _=require(_0x03c2('0x0'));var util=require('util');var moment=require(_0x03c2('0x1'));var BPromise=require(_0x03c2('0x2'));var rs=require(_0x03c2('0x3'));var fs=require('fs');var Redis=require(_0x03c2('0x4'));var db=require(_0x03c2('0x5'))['db'];var utils=require(_0x03c2('0x6'));var logger=require(_0x03c2('0x7'))(_0x03c2('0x8'));var config=require(_0x03c2('0x9'));var jayson=require(_0x03c2('0xa'));var client=jayson[_0x03c2('0xb')]['http']({'port':0x232a});config[_0x03c2('0xc')]=_[_0x03c2('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x03c2('0xe'))(new Redis(config[_0x03c2('0xc')]));require(_0x03c2('0xf'))[_0x03c2('0x10')](socket);function respondWithRpcPromise(_0x4104c1,_0x27bafa,_0x503b4b){return new BPromise(function(_0x1c9da8,_0x118df2){return client[_0x03c2('0x11')](_0x4104c1,_0x503b4b)['then'](function(_0xee7a47){logger[_0x03c2('0x12')](_0x03c2('0x13'),_0x27bafa,_0x03c2('0x14'));logger[_0x03c2('0x15')](_0x03c2('0x16'),_0x27bafa,'request\x20sent',JSON[_0x03c2('0x17')](_0xee7a47));if(_0xee7a47[_0x03c2('0x18')]){if(_0xee7a47[_0x03c2('0x18')][_0x03c2('0x19')]===0x1f4){logger[_0x03c2('0x18')](_0x03c2('0x13'),_0x27bafa,_0xee7a47['error'][_0x03c2('0x1a')]);return _0x118df2(_0xee7a47[_0x03c2('0x18')][_0x03c2('0x1a')]);}logger['error'](_0x03c2('0x13'),_0x27bafa,_0xee7a47['error']['message']);return _0x1c9da8(_0xee7a47[_0x03c2('0x18')][_0x03c2('0x1a')]);}else{logger[_0x03c2('0x12')](_0x03c2('0x13'),_0x27bafa,_0x03c2('0x14'));_0x1c9da8(_0xee7a47[_0x03c2('0x1b')]['message']);}})['catch'](function(_0x5b0118){logger['error'](_0x03c2('0x13'),_0x27bafa,_0x5b0118);_0x118df2(_0x5b0118);});});}exports[_0x03c2('0x1c')]=function(_0x2a60d9){var _0x3e6d0e=this;return new Promise(function(_0x2224ac,_0x575757){return db[_0x03c2('0x1d')][_0x03c2('0x1e')]({'raw':_0x2a60d9[_0x03c2('0x1f')]?_0x2a60d9[_0x03c2('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x2a60d9[_0x03c2('0x1f')]?_0x2a60d9[_0x03c2('0x1f')][_0x03c2('0x20')]||null:null,'attributes':_0x2a60d9[_0x03c2('0x1f')]?_0x2a60d9[_0x03c2('0x1f')][_0x03c2('0x21')]||null:null,'limit':_0x2a60d9[_0x03c2('0x1f')]?_0x2a60d9[_0x03c2('0x1f')][_0x03c2('0x22')]||null:null,'include':_0x2a60d9[_0x03c2('0x1f')]?_0x2a60d9[_0x03c2('0x1f')]['include']?_['map'](_0x2a60d9[_0x03c2('0x1f')][_0x03c2('0x23')],function(_0x554b16){return{'model':db[_0x554b16[_0x03c2('0x24')]],'as':_0x554b16['as'],'attributes':_0x554b16[_0x03c2('0x21')],'include':_0x554b16[_0x03c2('0x23')]?_[_0x03c2('0x25')](_0x554b16['include'],function(_0x294cec){return{'model':db[_0x294cec[_0x03c2('0x24')]],'as':_0x294cec['as'],'attributes':_0x294cec['attributes'],'include':_0x294cec[_0x03c2('0x23')]?_['map'](_0x294cec[_0x03c2('0x23')],function(_0x70e33){return{'model':db[_0x70e33[_0x03c2('0x24')]],'as':_0x70e33['as'],'attributes':_0x70e33['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x29e503){logger[_0x03c2('0x12')](_0x03c2('0x1c'),_0x2a60d9);logger['debug']('GetUser',_0x2a60d9,JSON['stringify'](_0x29e503));_0x2224ac(_0x29e503);})[_0x03c2('0x26')](function(_0x50d6b5){logger[_0x03c2('0x18')]('GetUser',_0x50d6b5['message'],_0x2a60d9);_0x575757(_0x3e6d0e['error'](0x1f4,_0x50d6b5[_0x03c2('0x1a')]));});});};exports[_0x03c2('0x27')]=function(_0x2db413){var _0x22a97a=this;return new Promise(function(_0x16414f,_0x3a363e){return db['User'][_0x03c2('0x28')]({'raw':_0x2db413[_0x03c2('0x1f')]?_0x2db413[_0x03c2('0x1f')][_0x03c2('0x29')]===undefined?!![]:![]:!![],'where':_0x2db413[_0x03c2('0x1f')]?_0x2db413['options'][_0x03c2('0x20')]||null:null,'attributes':_0x2db413[_0x03c2('0x1f')]?_0x2db413[_0x03c2('0x1f')]['attributes']||null:null,'include':_0x2db413['options']?_0x2db413[_0x03c2('0x1f')]['include']?_[_0x03c2('0x25')](_0x2db413[_0x03c2('0x1f')][_0x03c2('0x23')],function(_0x9b1768){return{'model':db[_0x9b1768[_0x03c2('0x24')]],'as':_0x9b1768['as'],'attributes':_0x9b1768[_0x03c2('0x21')],'include':_0x9b1768[_0x03c2('0x23')]?_[_0x03c2('0x25')](_0x9b1768[_0x03c2('0x23')],function(_0x5047cc){return{'model':db[_0x5047cc[_0x03c2('0x24')]],'as':_0x5047cc['as'],'attributes':_0x5047cc[_0x03c2('0x21')],'include':_0x5047cc[_0x03c2('0x23')]?_[_0x03c2('0x25')](_0x5047cc[_0x03c2('0x23')],function(_0x16c4fa){return{'model':db[_0x16c4fa[_0x03c2('0x24')]],'as':_0x16c4fa['as'],'attributes':_0x16c4fa['attributes']};}):[]};}):[]};}):[]:[]})[_0x03c2('0x2a')](function(_0x5275a8){logger[_0x03c2('0x12')]('ShowUser',_0x2db413);logger['debug'](_0x03c2('0x27'),_0x2db413,JSON[_0x03c2('0x17')](_0x5275a8));_0x16414f(_0x5275a8);})[_0x03c2('0x26')](function(_0x29682a){logger[_0x03c2('0x18')]('ShowUser',_0x29682a[_0x03c2('0x1a')],_0x2db413);_0x3a363e(_0x22a97a[_0x03c2('0x18')](0x1f4,_0x29682a[_0x03c2('0x1a')]));});});};exports[_0x03c2('0x2b')]=function(_0x51d72d){var _0x576af1=this;return new Promise(function(_0x14ad7f,_0xacca06){var _0x5aacf4;return db[_0x03c2('0x1d')]['find']({'where':_0x51d72d[_0x03c2('0x1f')]['where']||{},'attributes':['id',_0x03c2('0x2c'),_0x03c2('0x2d'),'internal',_0x03c2('0x2e')]})[_0x03c2('0x2a')](function(_0x5c4adc){if(_0x5c4adc){_0x5aacf4=_0x5c4adc;return db[_0x03c2('0x2f')]['update']({'paused':0x1},{'where':{'UserId':_0x5aacf4['id']},'individualHooks':!![]});}})[_0x03c2('0x2a')](function(){if(_0x5aacf4){return db[_0x03c2('0x30')][_0x03c2('0x1e')]({'where':{'membername':_0x5aacf4[_0x03c2('0x2c')],'type':_0x03c2('0x31'),'exitAt':null}});}})['then'](function(_0x2bbd60){if(_0x5aacf4){if(_0x2bbd60&&_0x2bbd60[_0x03c2('0x32')]){var _0x59b8c9=moment()['format'](_0x03c2('0x33'));for(var _0xd91dd6=0x0,_0x3c7ed5=_0x2bbd60[_0x03c2('0x32')];_0xd91dd6<_0x3c7ed5;_0xd91dd6++){_0x2bbd60[_0xd91dd6][_0x03c2('0x34')]({'exitAt':_0x59b8c9});}}}})[_0x03c2('0x2a')](function(){if(_0x5aacf4){var _0x355f1d=[];var _0x50c339=utils[_0x03c2('0x35')]();_0x50c339[_0x03c2('0x36')](function(_0x3a2717){_0x355f1d['push']({'channel':_0x3a2717,'membername':_0x5aacf4[_0x03c2('0x2c')],'interface':_[_0x03c2('0x37')](_0x5aacf4[_0x03c2('0x2e')])?util['format'](_0x03c2('0x38'),_0x5aacf4[_0x03c2('0x2c')]):_0x5aacf4[_0x03c2('0x2e')],'type':_0x03c2('0x31'),'enterAt':moment()['format'](_0x03c2('0x33')),'data1':_0x51d72d['body'][_0x03c2('0x39')]||_0x03c2('0x3a'),'role':_0x5aacf4[_0x03c2('0x2d')],'internal':_0x5aacf4[_0x03c2('0x3b')],'uniqueid':_0x51d72d[_0x03c2('0x3c')][_0x03c2('0x3d')]||null});});return db[_0x03c2('0x30')][_0x03c2('0x3e')](_0x355f1d,{'individualHooks':!![]});}})['then'](function(){if(_0x5aacf4){return _0x5aacf4['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x51d72d['body'][_0x03c2('0x39')]||_0x03c2('0x3a'),'lastPauseAt':moment()[_0x03c2('0x3f')](_0x03c2('0x33'))});}})[_0x03c2('0x2a')](function(_0x35521e){_0x14ad7f(_0x35521e);})['catch'](function(_0x1d10d6){_0xacca06(_0x576af1[_0x03c2('0x18')](0x1f4,_0x1d10d6[_0x03c2('0x1a')]));});});};exports['UnpauseUser']=function(_0x17a67b){var _0x10d0c9=this;return new Promise(function(_0x50b033,_0x5dd4b9){var _0x29aa7f;return db[_0x03c2('0x1d')][_0x03c2('0x40')]({'where':_0x17a67b[_0x03c2('0x1f')]['where']||{},'attributes':['id',_0x03c2('0x2c')]})[_0x03c2('0x2a')](function(_0x22cf34){if(_0x22cf34){_0x29aa7f=_0x22cf34;if(_0x17a67b[_0x03c2('0x3c')][_0x03c2('0x41')]&&!utils[_0x03c2('0x42')](_0x17a67b[_0x03c2('0x3c')][_0x03c2('0x41')])){throw new Error('Unknown\x20channel');}switch(_0x17a67b[_0x03c2('0x3c')][_0x03c2('0x41')]){case'voice':return db[_0x03c2('0x2f')][_0x03c2('0x43')]({'paused':0x0},{'where':{'UserId':_0x29aa7f['id']}})[_0x03c2('0x2a')](function(){return db[_0x03c2('0x30')][_0x03c2('0x28')]({'where':{'channel':_0x17a67b[_0x03c2('0x3c')][_0x03c2('0x41')],'membername':_0x29aa7f['name'],'type':_0x03c2('0x31'),'exitAt':null}});})[_0x03c2('0x2a')](function(_0x4f9a0d){if(_0x4f9a0d){return _0x4f9a0d[_0x03c2('0x43')]({'exitAt':moment()['format'](_0x03c2('0x33')),'data2':_0x03c2('0x44')},{'individualHooks':!![]});}return null;})[_0x03c2('0x2a')](function(){return _0x29aa7f[_0x03c2('0x43')]({'voicePause':![]});});case'mail':case _0x03c2('0x45'):case'fax':case _0x03c2('0x46'):case _0x03c2('0x47'):case _0x03c2('0x48'):return db[_0x03c2('0x30')][_0x03c2('0x28')]({'where':{'channel':_0x17a67b['body'][_0x03c2('0x41')],'membername':_0x29aa7f[_0x03c2('0x2c')],'type':'PAUSE','exitAt':null}})[_0x03c2('0x2a')](function(_0x35c831){return _0x35c831[_0x03c2('0x43')]({'exitAt':moment()[_0x03c2('0x3f')](_0x03c2('0x33')),'data2':_0x03c2('0x44')},{'individualHooks':!![]});})[_0x03c2('0x2a')](function(){var _0xb87783={};_[_0x03c2('0x49')](_0xb87783,util[_0x03c2('0x3f')]('%s%s',_0x17a67b[_0x03c2('0x3c')][_0x03c2('0x41')],_0x03c2('0x4a')),![]);return _0x29aa7f['update'](_0xb87783);});default:return db[_0x03c2('0x2f')][_0x03c2('0x43')]({'paused':0x0},{'where':{'UserId':_0x29aa7f['id']}})[_0x03c2('0x2a')](function(){return db[_0x03c2('0x30')][_0x03c2('0x1e')]({'where':{'membername':_0x29aa7f[_0x03c2('0x2c')],'type':_0x03c2('0x31'),'exitAt':null}});})[_0x03c2('0x2a')](function(_0x132526){var _0x32ac1e=[];_0x132526[_0x03c2('0x36')](function(_0x2fca8e){_0x32ac1e[_0x03c2('0x4b')](_0x2fca8e['update']({'exitAt':moment()[_0x03c2('0x3f')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x03c2('0x44')}));});return BPromise[_0x03c2('0x4c')](_0x32ac1e);})['then'](function(){return _0x29aa7f[_0x03c2('0x43')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})['then'](function(_0x3176f3){_0x50b033(_0x3176f3);})[_0x03c2('0x26')](function(_0xc8f51e){_0x5dd4b9(_0x10d0c9[_0x03c2('0x18')](0x1f4,_0xc8f51e[_0x03c2('0x1a')]));});});};exports[_0x03c2('0x4d')]=function(_0xae8e08){var _0x3962e6=this;return new Promise(function(_0x3c112a,_0x1a1301){var _0x2eb79a;return db['User'][_0x03c2('0x40')]({'where':_0xae8e08['options'][_0x03c2('0x20')]||{},'attributes':['id',_0x03c2('0x2c')]})[_0x03c2('0x2a')](function(_0x240140){if(_0x240140){_0x2eb79a=_0x240140;return db[_0x03c2('0x2f')][_0x03c2('0x4e')]({'where':{'membername':_0x2eb79a[_0x03c2('0x2c')]},'individualHooks':!![]});}})[_0x03c2('0x2a')](function(){if(_0x2eb79a){return db[_0x03c2('0x30')][_0x03c2('0x1e')]({'where':{'membername':_0x2eb79a['name'],'exitAt':null}});}})[_0x03c2('0x2a')](function(_0x150656){if(_0x2eb79a){if(_0x150656&&_0x150656[_0x03c2('0x32')]){var _0x719481=[];_0x150656[_0x03c2('0x36')](function(_0x199afa){_0x719481[_0x03c2('0x4b')](_0x199afa[_0x03c2('0x43')]({'exitAt':moment()[_0x03c2('0x3f')](_0x03c2('0x33'))}));});return BPromise[_0x03c2('0x4c')](_0x719481);}}})[_0x03c2('0x2a')](function(){if(_0x2eb79a){return _0x2eb79a[_0x03c2('0x43')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x03c2('0x2a')](function(_0x4e6499){_0x3c112a(_0x4e6499);})[_0x03c2('0x26')](function(_0x339a01){_0x1a1301(_0x3962e6[_0x03c2('0x18')](0x1f4,_0x339a01['message']));});});};exports[_0x03c2('0x4f')]=function(_0x1620ab){var _0x4ba9c7=this;return new Promise(function(_0x38fdd3,_0x337746){var _0xc77f3d;var _0x1d010e;var _0xc0bec;var _0x145688;return db[_0x03c2('0x1d')][_0x03c2('0x40')]({'where':_0x1620ab[_0x03c2('0x1f')][_0x03c2('0x20')]||{},'attributes':['id',_0x03c2('0x2c'),_0x03c2('0x2d'),_0x03c2('0x50'),_0x03c2('0x51'),_0x03c2('0x3b'),'loginInPause',_0x03c2('0x2e')]})[_0x03c2('0x2a')](function(_0x3ca9bd){if(_0x3ca9bd){_0xc77f3d=_0x3ca9bd;_0x145688=_0x1620ab['body'][_0x03c2('0x2e')]?_0x1620ab[_0x03c2('0x3c')][_0x03c2('0x2e')]:util[_0x03c2('0x3f')](_0x03c2('0x38'),_0xc77f3d[_0x03c2('0x2c')]);return db['User'][_0x03c2('0x52')]({'where':{'role':_0x03c2('0x53'),'online':!![],'id':{'$ne':_0xc77f3d['id']}}});}})['then'](function(_0x284962){if(_0x284962){_0xc0bec=_0x284962;return require(_0x03c2('0x54'))[_0x03c2('0x55')]();}})[_0x03c2('0x2a')](function(_0x85d107){if(_0x85d107&&_0x85d107[_0x03c2('0x56')]&&_0xc0bec>=_0x85d107[_0x03c2('0x56')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})[_0x03c2('0x2a')](function(){if(_0xc77f3d){return db['UserVoiceQueueRt'][_0x03c2('0x4e')]({'where':{'membername':_0xc77f3d['name']},'individualHooks':!![]});}})[_0x03c2('0x2a')](function(){if(_0xc77f3d){return _0xc77f3d[_0x03c2('0x57')]({'raw':!![]});}})[_0x03c2('0x2a')](function(_0x55ec16){if(_0xc77f3d){if(_0x55ec16){var _0x4f680a=[];_0x1d010e=_0x55ec16;if(_0x1d010e[_0x03c2('0x32')]){for(var _0x3ba36a=0x0;_0x3ba36a<_0x1d010e[_0x03c2('0x32')];_0x3ba36a++){_0x4f680a[_0x03c2('0x4b')](db[_0x03c2('0x2f')]['upsert']({'membername':_0xc77f3d[_0x03c2('0x2c')],'UserId':_0xc77f3d['id'],'queue_name':_0x1d010e[_0x3ba36a][_0x03c2('0x2c')],'VoiceQueueId':_0x1d010e[_0x3ba36a]['id'],'interface':_0x145688,'paused':_0xc77f3d['loginInPause']||![],'penalty':_0x1d010e[_0x3ba36a][_0x03c2('0x58')]||0x0}));}return BPromise[_0x03c2('0x4c')](_0x4f680a);}}}})[_0x03c2('0x2a')](function(){if(_0xc77f3d){return db[_0x03c2('0x30')]['findAll']({'where':{'membername':_0xc77f3d[_0x03c2('0x2c')],'exitAt':null}});}})[_0x03c2('0x2a')](function(_0x2ffca3){if(_0xc77f3d){if(_0x2ffca3&&_0x2ffca3[_0x03c2('0x32')]){var _0x3d9990=[];_0x2ffca3[_0x03c2('0x36')](function(_0x39a797){_0x3d9990[_0x03c2('0x4b')](_0x39a797[_0x03c2('0x43')]({'exitAt':moment()['format'](_0x03c2('0x33'))}));});return BPromise[_0x03c2('0x4c')](_0x3d9990);}}})['then'](function(_0x47e365){if(_0xc77f3d){var _0x5de129=[];var _0x13d2f9=[];var _0xf2bbe1=utils[_0x03c2('0x35')]();var _0x4cb7e7={'membername':_0xc77f3d['name'],'interface':_0x145688,'enterAt':moment()[_0x03c2('0x3f')](_0x03c2('0x33')),'role':_0xc77f3d[_0x03c2('0x2d')],'internal':_0xc77f3d['internal']};_0xf2bbe1[_0x03c2('0x36')](function(_0x117b35){_0x5de129[_0x03c2('0x4b')](_[_0x03c2('0x59')]({'channel':_0x117b35,'type':_0x03c2('0x5a'),'data1':_0x03c2('0x5b'),'data2':_0x145688},_0x4cb7e7));if(_0xc77f3d[_0x03c2('0x5c')]){_0x13d2f9['push'](_['merge']({'channel':_0x117b35,'type':_0x03c2('0x31'),'data1':_0x03c2('0x5d')},_0x4cb7e7));}});return db[_0x03c2('0x30')]['bulkCreate'](_0x5de129['concat'](_0x13d2f9),{'individualHooks':!![]});}})[_0x03c2('0x2a')](function(){if(_0xc77f3d){return _0xc77f3d[_0x03c2('0x43')]({'online':!![],'lastLoginAt':moment()[_0x03c2('0x3f')](_0x03c2('0x33')),'voicePause':_0xc77f3d[_0x03c2('0x5c')]||![],'mailPause':_0xc77f3d[_0x03c2('0x5c')]||![],'chatPause':_0xc77f3d[_0x03c2('0x5c')]||![],'faxPause':_0xc77f3d['loginInPause']||![],'smsPause':_0xc77f3d[_0x03c2('0x5c')]||![],'openchannelPause':_0xc77f3d[_0x03c2('0x5c')]||![],'pauseType':_0xc77f3d[_0x03c2('0x5c')]?'LOGININPAUSE':null,'lastPauseAt':moment()[_0x03c2('0x3f')](_0x03c2('0x33')),'interface':_0x145688});}})[_0x03c2('0x2a')](function(_0x5dc96c){_0x38fdd3(_0x5dc96c);})[_0x03c2('0x26')](function(_0x4d9577){_0x337746(_0x4ba9c7[_0x03c2('0x18')](0x1f4,_0x4d9577['message']));});});};
\ No newline at end of file
+var _0x8c70=['result','catch','GetUser','User','findAll','options','raw','where','attributes','include','model','map','then','ShowUser','find','PauseUser','name','role','internal','interface','UserVoiceQueueRt','update','MemberReport','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','push','isNil','body','DEFAULT\x20PAUSE','uniqueid','bulkCreate','UnpauseUser','findOne','channel','isValidChannel','Unknown\x20channel','voice','PAUSE','mail','chat','sms','whatsapp','set','%s%s','Pause','forEach','system','all','LogoutUser','destroy','LoginUser','mobile','phone','loginInPause','SIP/%s','count','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','upsert','UserVoiceQueue.penalty','merge','LOGIN','concat','LOGININPAUSE','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','redis','defaults','request','info','request\x20sent','debug','stringify','error','code','User,\x20%s,\x20%s','message'];(function(_0x41216a,_0x53e83d){var _0x122cf1=function(_0x4c2c64){while(--_0x4c2c64){_0x41216a['push'](_0x41216a['shift']());}};_0x122cf1(++_0x53e83d);}(_0x8c70,0xa0));var _0x08c7=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x8c70[_0x30ae5e];return _0x1f2e93;};'use strict';var _=require('lodash');var util=require(_0x08c7('0x0'));var moment=require('moment');var BPromise=require(_0x08c7('0x1'));var rs=require(_0x08c7('0x2'));var fs=require('fs');var Redis=require(_0x08c7('0x3'));var db=require(_0x08c7('0x4'))['db'];var utils=require(_0x08c7('0x5'));var logger=require(_0x08c7('0x6'))(_0x08c7('0x7'));var config=require('../../config/environment');var jayson=require(_0x08c7('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x08c7('0x9')]=_[_0x08c7('0xa')](config[_0x08c7('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./user.socket')['register'](socket);function respondWithRpcPromise(_0x1ff7fe,_0x2af573,_0x5c69f1){return new BPromise(function(_0x511cb0,_0x2dc42b){return client[_0x08c7('0xb')](_0x1ff7fe,_0x5c69f1)['then'](function(_0x1cc146){logger[_0x08c7('0xc')]('User,\x20%s,\x20%s',_0x2af573,_0x08c7('0xd'));logger[_0x08c7('0xe')]('User,\x20%s,\x20%s,\x20%s',_0x2af573,_0x08c7('0xd'),JSON[_0x08c7('0xf')](_0x1cc146));if(_0x1cc146[_0x08c7('0x10')]){if(_0x1cc146[_0x08c7('0x10')][_0x08c7('0x11')]===0x1f4){logger[_0x08c7('0x10')](_0x08c7('0x12'),_0x2af573,_0x1cc146[_0x08c7('0x10')][_0x08c7('0x13')]);return _0x2dc42b(_0x1cc146[_0x08c7('0x10')][_0x08c7('0x13')]);}logger[_0x08c7('0x10')](_0x08c7('0x12'),_0x2af573,_0x1cc146[_0x08c7('0x10')][_0x08c7('0x13')]);return _0x511cb0(_0x1cc146['error'][_0x08c7('0x13')]);}else{logger[_0x08c7('0xc')](_0x08c7('0x12'),_0x2af573,_0x08c7('0xd'));_0x511cb0(_0x1cc146[_0x08c7('0x14')]['message']);}})[_0x08c7('0x15')](function(_0x33c707){logger['error'](_0x08c7('0x12'),_0x2af573,_0x33c707);_0x2dc42b(_0x33c707);});});}exports[_0x08c7('0x16')]=function(_0x39235a){var _0x1ff376=this;return new Promise(function(_0x28c2d5,_0x12c54d){return db[_0x08c7('0x17')][_0x08c7('0x18')]({'raw':_0x39235a[_0x08c7('0x19')]?_0x39235a[_0x08c7('0x19')][_0x08c7('0x1a')]===undefined?!![]:![]:!![],'where':_0x39235a[_0x08c7('0x19')]?_0x39235a[_0x08c7('0x19')][_0x08c7('0x1b')]||null:null,'attributes':_0x39235a[_0x08c7('0x19')]?_0x39235a['options'][_0x08c7('0x1c')]||null:null,'limit':_0x39235a[_0x08c7('0x19')]?_0x39235a['options']['limit']||null:null,'include':_0x39235a[_0x08c7('0x19')]?_0x39235a[_0x08c7('0x19')][_0x08c7('0x1d')]?_['map'](_0x39235a[_0x08c7('0x19')][_0x08c7('0x1d')],function(_0x54be57){return{'model':db[_0x54be57[_0x08c7('0x1e')]],'as':_0x54be57['as'],'attributes':_0x54be57[_0x08c7('0x1c')],'include':_0x54be57[_0x08c7('0x1d')]?_[_0x08c7('0x1f')](_0x54be57[_0x08c7('0x1d')],function(_0x12c0d1){return{'model':db[_0x12c0d1[_0x08c7('0x1e')]],'as':_0x12c0d1['as'],'attributes':_0x12c0d1[_0x08c7('0x1c')],'include':_0x12c0d1[_0x08c7('0x1d')]?_[_0x08c7('0x1f')](_0x12c0d1[_0x08c7('0x1d')],function(_0xb34630){return{'model':db[_0xb34630[_0x08c7('0x1e')]],'as':_0xb34630['as'],'attributes':_0xb34630[_0x08c7('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x08c7('0x20')](function(_0x1ccfd7){logger[_0x08c7('0xc')](_0x08c7('0x16'),_0x39235a);logger[_0x08c7('0xe')]('GetUser',_0x39235a,JSON['stringify'](_0x1ccfd7));_0x28c2d5(_0x1ccfd7);})['catch'](function(_0x1bf432){logger[_0x08c7('0x10')]('GetUser',_0x1bf432[_0x08c7('0x13')],_0x39235a);_0x12c54d(_0x1ff376['error'](0x1f4,_0x1bf432[_0x08c7('0x13')]));});});};exports[_0x08c7('0x21')]=function(_0x4ef64f){var _0x12034c=this;return new Promise(function(_0x3d64e2,_0x5e2651){return db[_0x08c7('0x17')][_0x08c7('0x22')]({'raw':_0x4ef64f[_0x08c7('0x19')]?_0x4ef64f[_0x08c7('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x4ef64f['options']?_0x4ef64f[_0x08c7('0x19')][_0x08c7('0x1b')]||null:null,'attributes':_0x4ef64f[_0x08c7('0x19')]?_0x4ef64f['options']['attributes']||null:null,'include':_0x4ef64f[_0x08c7('0x19')]?_0x4ef64f[_0x08c7('0x19')][_0x08c7('0x1d')]?_[_0x08c7('0x1f')](_0x4ef64f[_0x08c7('0x19')]['include'],function(_0xe4225f){return{'model':db[_0xe4225f['model']],'as':_0xe4225f['as'],'attributes':_0xe4225f['attributes'],'include':_0xe4225f[_0x08c7('0x1d')]?_[_0x08c7('0x1f')](_0xe4225f[_0x08c7('0x1d')],function(_0x1aaa6e){return{'model':db[_0x1aaa6e['model']],'as':_0x1aaa6e['as'],'attributes':_0x1aaa6e[_0x08c7('0x1c')],'include':_0x1aaa6e[_0x08c7('0x1d')]?_[_0x08c7('0x1f')](_0x1aaa6e[_0x08c7('0x1d')],function(_0x46a03e){return{'model':db[_0x46a03e['model']],'as':_0x46a03e['as'],'attributes':_0x46a03e['attributes']};}):[]};}):[]};}):[]:[]})[_0x08c7('0x20')](function(_0x19f06d){logger['info'](_0x08c7('0x21'),_0x4ef64f);logger['debug'](_0x08c7('0x21'),_0x4ef64f,JSON[_0x08c7('0xf')](_0x19f06d));_0x3d64e2(_0x19f06d);})[_0x08c7('0x15')](function(_0x24940a){logger[_0x08c7('0x10')](_0x08c7('0x21'),_0x24940a['message'],_0x4ef64f);_0x5e2651(_0x12034c[_0x08c7('0x10')](0x1f4,_0x24940a['message']));});});};exports[_0x08c7('0x23')]=function(_0x1a1c15){var _0x51dcf0=this;return new Promise(function(_0x46b4b9,_0x181017){var _0x3dd601;return db['User'][_0x08c7('0x22')]({'where':_0x1a1c15[_0x08c7('0x19')]['where']||{},'attributes':['id',_0x08c7('0x24'),_0x08c7('0x25'),_0x08c7('0x26'),_0x08c7('0x27')]})[_0x08c7('0x20')](function(_0x1cff54){if(_0x1cff54){_0x3dd601=_0x1cff54;return db[_0x08c7('0x28')][_0x08c7('0x29')]({'paused':0x1},{'where':{'UserId':_0x3dd601['id']},'individualHooks':!![]});}})[_0x08c7('0x20')](function(){if(_0x3dd601){return db[_0x08c7('0x2a')][_0x08c7('0x18')]({'where':{'membername':_0x3dd601[_0x08c7('0x24')],'type':'PAUSE','exitAt':null}});}})[_0x08c7('0x20')](function(_0x55b0ec){if(_0x3dd601){if(_0x55b0ec&&_0x55b0ec[_0x08c7('0x2b')]){var _0x269b3b=moment()[_0x08c7('0x2c')](_0x08c7('0x2d'));for(var _0x4f4b4d=0x0,_0x3d79d7=_0x55b0ec[_0x08c7('0x2b')];_0x4f4b4d<_0x3d79d7;_0x4f4b4d++){_0x55b0ec[_0x4f4b4d][_0x08c7('0x2e')]({'exitAt':_0x269b3b});}}}})[_0x08c7('0x20')](function(){if(_0x3dd601){var _0x9dbd0e=[];var _0x4d1ee8=utils[_0x08c7('0x2f')]();_0x4d1ee8['forEach'](function(_0x4f8e54){_0x9dbd0e[_0x08c7('0x30')]({'channel':_0x4f8e54,'membername':_0x3dd601[_0x08c7('0x24')],'interface':_[_0x08c7('0x31')](_0x3dd601['interface'])?util[_0x08c7('0x2c')]('SIP/%s',_0x3dd601['name']):_0x3dd601[_0x08c7('0x27')],'type':'PAUSE','enterAt':moment()['format'](_0x08c7('0x2d')),'data1':_0x1a1c15[_0x08c7('0x32')]['type']||_0x08c7('0x33'),'role':_0x3dd601[_0x08c7('0x25')],'internal':_0x3dd601[_0x08c7('0x26')],'uniqueid':_0x1a1c15['body'][_0x08c7('0x34')]||null});});return db[_0x08c7('0x2a')][_0x08c7('0x35')](_0x9dbd0e,{'individualHooks':!![]});}})[_0x08c7('0x20')](function(){if(_0x3dd601){return _0x3dd601[_0x08c7('0x29')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x1a1c15[_0x08c7('0x32')]['type']||_0x08c7('0x33'),'lastPauseAt':moment()[_0x08c7('0x2c')]('YYYY-MM-DD\x20HH:mm:ss')});}})['then'](function(_0x497844){_0x46b4b9(_0x497844);})[_0x08c7('0x15')](function(_0x15c883){_0x181017(_0x51dcf0[_0x08c7('0x10')](0x1f4,_0x15c883[_0x08c7('0x13')]));});});};exports[_0x08c7('0x36')]=function(_0x38386d){var _0x497c98=this;return new Promise(function(_0x5b1556,_0x448c3b){var _0x19133e;return db[_0x08c7('0x17')][_0x08c7('0x37')]({'where':_0x38386d['options'][_0x08c7('0x1b')]||{},'attributes':['id',_0x08c7('0x24')]})[_0x08c7('0x20')](function(_0x40f110){if(_0x40f110){_0x19133e=_0x40f110;if(_0x38386d[_0x08c7('0x32')][_0x08c7('0x38')]&&!utils[_0x08c7('0x39')](_0x38386d[_0x08c7('0x32')]['channel'])){throw new Error(_0x08c7('0x3a'));}switch(_0x38386d[_0x08c7('0x32')][_0x08c7('0x38')]){case _0x08c7('0x3b'):return db[_0x08c7('0x28')]['update']({'paused':0x0},{'where':{'UserId':_0x19133e['id']}})[_0x08c7('0x20')](function(){return db[_0x08c7('0x2a')]['find']({'where':{'channel':_0x38386d['body'][_0x08c7('0x38')],'membername':_0x19133e[_0x08c7('0x24')],'type':_0x08c7('0x3c'),'exitAt':null}});})[_0x08c7('0x20')](function(_0x2f1d47){if(_0x2f1d47){return _0x2f1d47[_0x08c7('0x29')]({'exitAt':moment()[_0x08c7('0x2c')](_0x08c7('0x2d')),'data2':'system'},{'individualHooks':!![]});}return null;})[_0x08c7('0x20')](function(){return _0x19133e[_0x08c7('0x29')]({'voicePause':![]});});case _0x08c7('0x3d'):case _0x08c7('0x3e'):case'fax':case _0x08c7('0x3f'):case'openchannel':case _0x08c7('0x40'):return db['MemberReport'][_0x08c7('0x22')]({'where':{'channel':_0x38386d[_0x08c7('0x32')]['channel'],'membername':_0x19133e[_0x08c7('0x24')],'type':_0x08c7('0x3c'),'exitAt':null}})['then'](function(_0x56e676){return _0x56e676[_0x08c7('0x29')]({'exitAt':moment()[_0x08c7('0x2c')](_0x08c7('0x2d')),'data2':'system'},{'individualHooks':!![]});})[_0x08c7('0x20')](function(){var _0x5a6521={};_[_0x08c7('0x41')](_0x5a6521,util['format'](_0x08c7('0x42'),_0x38386d['body'][_0x08c7('0x38')],_0x08c7('0x43')),![]);return _0x19133e['update'](_0x5a6521);});default:return db[_0x08c7('0x28')][_0x08c7('0x29')]({'paused':0x0},{'where':{'UserId':_0x19133e['id']}})[_0x08c7('0x20')](function(){return db[_0x08c7('0x2a')][_0x08c7('0x18')]({'where':{'membername':_0x19133e[_0x08c7('0x24')],'type':_0x08c7('0x3c'),'exitAt':null}});})[_0x08c7('0x20')](function(_0x145c78){var _0x101cf3=[];_0x145c78[_0x08c7('0x44')](function(_0x14fec2){_0x101cf3['push'](_0x14fec2['update']({'exitAt':moment()['format'](_0x08c7('0x2d')),'data2':_0x08c7('0x45')}));});return BPromise[_0x08c7('0x46')](_0x101cf3);})[_0x08c7('0x20')](function(){return _0x19133e[_0x08c7('0x29')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})['then'](function(_0x383caf){_0x5b1556(_0x383caf);})[_0x08c7('0x15')](function(_0x19935d){_0x448c3b(_0x497c98[_0x08c7('0x10')](0x1f4,_0x19935d['message']));});});};exports[_0x08c7('0x47')]=function(_0x837ca0){var _0x57bbc6=this;return new Promise(function(_0x4c97eb,_0x1a57ad){var _0x11fbb3;return db[_0x08c7('0x17')][_0x08c7('0x37')]({'where':_0x837ca0[_0x08c7('0x19')][_0x08c7('0x1b')]||{},'attributes':['id',_0x08c7('0x24')]})['then'](function(_0x1df220){if(_0x1df220){_0x11fbb3=_0x1df220;return db[_0x08c7('0x28')][_0x08c7('0x48')]({'where':{'membername':_0x11fbb3[_0x08c7('0x24')]},'individualHooks':!![]});}})[_0x08c7('0x20')](function(){if(_0x11fbb3){return db[_0x08c7('0x2a')]['findAll']({'where':{'membername':_0x11fbb3[_0x08c7('0x24')],'exitAt':null}});}})[_0x08c7('0x20')](function(_0x58dd04){if(_0x11fbb3){if(_0x58dd04&&_0x58dd04['length']){var _0x51f489=[];_0x58dd04[_0x08c7('0x44')](function(_0x4a712b){_0x51f489[_0x08c7('0x30')](_0x4a712b['update']({'exitAt':moment()['format'](_0x08c7('0x2d'))}));});return BPromise[_0x08c7('0x46')](_0x51f489);}}})['then'](function(){if(_0x11fbb3){return _0x11fbb3[_0x08c7('0x29')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x08c7('0x20')](function(_0x401cc7){_0x4c97eb(_0x401cc7);})[_0x08c7('0x15')](function(_0x5a0672){_0x1a57ad(_0x57bbc6[_0x08c7('0x10')](0x1f4,_0x5a0672[_0x08c7('0x13')]));});});};exports[_0x08c7('0x49')]=function(_0x4ae338){var _0x3972f7=this;return new Promise(function(_0x1aebb9,_0x377ba6){var _0x29959b;var _0x529c68;var _0x204134;var _0x50953a;return db['User'][_0x08c7('0x37')]({'where':_0x4ae338['options']['where']||{},'attributes':['id',_0x08c7('0x24'),_0x08c7('0x25'),_0x08c7('0x4a'),_0x08c7('0x4b'),'internal',_0x08c7('0x4c'),'interface']})[_0x08c7('0x20')](function(_0x5c092f){if(_0x5c092f){_0x29959b=_0x5c092f;_0x50953a=_0x4ae338[_0x08c7('0x32')]['interface']?_0x4ae338[_0x08c7('0x32')][_0x08c7('0x27')]:util[_0x08c7('0x2c')](_0x08c7('0x4d'),_0x29959b[_0x08c7('0x24')]);return db['User'][_0x08c7('0x4e')]({'where':{'role':_0x08c7('0x4f'),'online':!![],'id':{'$ne':_0x29959b['id']}}});}})[_0x08c7('0x20')](function(_0x4ea21e){if(_0x4ea21e){_0x204134=_0x4ea21e;return require(_0x08c7('0x50'))[_0x08c7('0x51')]();}})[_0x08c7('0x20')](function(_0x4e61dd){if(_0x4e61dd&&_0x4e61dd[_0x08c7('0x52')]&&_0x204134>=_0x4e61dd[_0x08c7('0x52')]){throw new Error(_0x08c7('0x53'));}})['then'](function(){if(_0x29959b){return db[_0x08c7('0x28')][_0x08c7('0x48')]({'where':{'membername':_0x29959b[_0x08c7('0x24')]},'individualHooks':!![]});}})[_0x08c7('0x20')](function(){if(_0x29959b){return _0x29959b['getVoiceQueues']({'raw':!![]});}})['then'](function(_0x21c2b1){if(_0x29959b){if(_0x21c2b1){var _0x99e487=[];_0x529c68=_0x21c2b1;if(_0x529c68[_0x08c7('0x2b')]){for(var _0xb48b8a=0x0;_0xb48b8a<_0x529c68['length'];_0xb48b8a++){_0x99e487['push'](db[_0x08c7('0x28')][_0x08c7('0x54')]({'membername':_0x29959b['name'],'UserId':_0x29959b['id'],'queue_name':_0x529c68[_0xb48b8a][_0x08c7('0x24')],'VoiceQueueId':_0x529c68[_0xb48b8a]['id'],'interface':_0x50953a,'paused':_0x29959b[_0x08c7('0x4c')]||![],'penalty':_0x529c68[_0xb48b8a][_0x08c7('0x55')]||0x0}));}return BPromise[_0x08c7('0x46')](_0x99e487);}}}})[_0x08c7('0x20')](function(){if(_0x29959b){return db[_0x08c7('0x2a')][_0x08c7('0x18')]({'where':{'membername':_0x29959b[_0x08c7('0x24')],'exitAt':null}});}})['then'](function(_0x1f3f78){if(_0x29959b){if(_0x1f3f78&&_0x1f3f78[_0x08c7('0x2b')]){var _0x3ee3d6=[];_0x1f3f78['forEach'](function(_0x2f5e92){_0x3ee3d6[_0x08c7('0x30')](_0x2f5e92[_0x08c7('0x29')]({'exitAt':moment()[_0x08c7('0x2c')](_0x08c7('0x2d'))}));});return BPromise['all'](_0x3ee3d6);}}})[_0x08c7('0x20')](function(_0x33d5d1){if(_0x29959b){var _0x4a7d8e=[];var _0x22515a=[];var _0xad0c39=utils[_0x08c7('0x2f')]();var _0x5f1368={'membername':_0x29959b[_0x08c7('0x24')],'interface':_0x50953a,'enterAt':moment()[_0x08c7('0x2c')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x29959b[_0x08c7('0x25')],'internal':_0x29959b['internal']};_0xad0c39[_0x08c7('0x44')](function(_0x381f09){_0x4a7d8e['push'](_[_0x08c7('0x56')]({'channel':_0x381f09,'type':_0x08c7('0x57'),'data1':'callysquare','data2':_0x50953a},_0x5f1368));if(_0x29959b[_0x08c7('0x4c')]){_0x22515a[_0x08c7('0x30')](_['merge']({'channel':_0x381f09,'type':_0x08c7('0x3c'),'data1':'LOGININPAUSE'},_0x5f1368));}});return db[_0x08c7('0x2a')][_0x08c7('0x35')](_0x4a7d8e[_0x08c7('0x58')](_0x22515a),{'individualHooks':!![]});}})[_0x08c7('0x20')](function(){if(_0x29959b){return _0x29959b[_0x08c7('0x29')]({'online':!![],'lastLoginAt':moment()['format'](_0x08c7('0x2d')),'voicePause':_0x29959b['loginInPause']||![],'mailPause':_0x29959b[_0x08c7('0x4c')]||![],'chatPause':_0x29959b['loginInPause']||![],'faxPause':_0x29959b['loginInPause']||![],'smsPause':_0x29959b[_0x08c7('0x4c')]||![],'openchannelPause':_0x29959b[_0x08c7('0x4c')]||![],'pauseType':_0x29959b[_0x08c7('0x4c')]?_0x08c7('0x59'):null,'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x50953a});}})[_0x08c7('0x20')](function(_0x57e1d6){_0x1aebb9(_0x57e1d6);})[_0x08c7('0x15')](function(_0x6b7c1c){_0x377ba6(_0x3972f7['error'](0x1f4,_0x6b7c1c[_0x08c7('0x13')]));});});};
\ No newline at end of file
index 9baf4da..c71d234 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x136f=['removeListener','register','user:','./user.events','save','remove','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x136f,0x65));var _0xf136=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x136f[_0x1cc8fe];return _0x230054;};'use strict';var UserEvents=require(_0xf136('0x0'));var events=[_0xf136('0x1'),_0xf136('0x2'),_0xf136('0x3')];function createListener(_0x59a63e,_0x565e5e){return function(_0x26f107){_0x565e5e['emit'](_0x59a63e,_0x26f107);};}function removeListener(_0x3b5c71,_0x37553e){return function(){UserEvents[_0xf136('0x4')](_0x3b5c71,_0x37553e);};}exports[_0xf136('0x5')]=function(_0x37f958){for(var _0x1c7526=0x0,_0x308c02=events['length'];_0x1c7526<_0x308c02;_0x1c7526++){var _0x2527c4=events[_0x1c7526];var _0x5372a5=createListener(_0xf136('0x6')+_0x2527c4,_0x37f958);UserEvents['on'](_0x2527c4,_0x5372a5);}};
\ No newline at end of file
+var _0x0627=['remove','emit','removeListener','length','user:','./user.events','save'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x0627,0x108));var _0x7062=function(_0x4e93a9,_0x413f30){_0x4e93a9=_0x4e93a9-0x0;var _0x43013c=_0x0627[_0x4e93a9];return _0x43013c;};'use strict';var UserEvents=require(_0x7062('0x0'));var events=[_0x7062('0x1'),_0x7062('0x2'),'update'];function createListener(_0x4364ff,_0x5c4392){return function(_0x5ef238){_0x5c4392[_0x7062('0x3')](_0x4364ff,_0x5ef238);};}function removeListener(_0x5224b1,_0x5172dd){return function(){UserEvents[_0x7062('0x4')](_0x5224b1,_0x5172dd);};}exports['register']=function(_0x1c856a){for(var _0x12a499=0x0,_0x4951ce=events[_0x7062('0x5')];_0x12a499<_0x4951ce;_0x12a499++){var _0x127d82=events[_0x12a499];var _0x344314=createListener(_0x7062('0x6')+_0x127d82,_0x1c856a);UserEvents['on'](_0x127d82,_0x344314);}};
\ No newline at end of file
index 6a6406b..cc9c8ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x474e3a,_0x16a0a0){var _0x4946c0=function(_0x7c7c27){while(--_0x7c7c27){_0x474e3a['push'](_0x474e3a['shift']());}};_0x4946c0(++_0x16a0a0);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x53b8e0,_0x55d46e){_0x53b8e0=_0x53b8e0-0x0;var _0x10630c=_0xcb91[_0x53b8e0];return _0x10630c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x26108c,_0x55484d){var _0x447c04=function(_0x28b326){while(--_0x28b326){_0x26108c['push'](_0x26108c['shift']());}};_0x447c04(++_0x55484d);}(_0xe706,0xa3));var _0x6e70=function(_0x5eb1a8,_0x30e664){_0x5eb1a8=_0x5eb1a8-0x0;var _0x14c11c=_0xe706[_0x5eb1a8];return _0x14c11c;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index f0358a0..9376629 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9235=['sequelize','exports','INTEGER'];(function(_0x11d92a,_0x1fc6d7){var _0x5739df=function(_0x4fe90a){while(--_0x4fe90a){_0x11d92a['push'](_0x11d92a['shift']());}};_0x5739df(++_0x1fc6d7);}(_0x9235,0xba));var _0x5923=function(_0x5af32d,_0x52c366){_0x5af32d=_0x5af32d-0x0;var _0x3ee481=_0x9235[_0x5af32d];return _0x3ee481;};'use strict';var Sequelize=require(_0x5923('0x0'));module[_0x5923('0x1')]={'penalty':{'type':Sequelize[_0x5923('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x31f4=['INTEGER'];(function(_0x33df3a,_0x183883){var _0x2bfa4f=function(_0x278fee){while(--_0x278fee){_0x33df3a['push'](_0x33df3a['shift']());}};_0x2bfa4f(++_0x183883);}(_0x31f4,0xde));var _0x431f=function(_0x479509,_0x1daf8a){_0x479509=_0x479509-0x0;var _0x382da8=_0x31f4[_0x479509];return _0x382da8;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0x431f('0x0')],'defaultValue':0x0}};
\ No newline at end of file
index 74f992c..24363e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fab=['path','./userChatQueue.attributes','exports','define','user_has_chat_queues','lodash','moment','request-promise'];(function(_0x5cff55,_0x4319e1){var _0x2ed25c=function(_0x55277a){while(--_0x55277a){_0x5cff55['push'](_0x5cff55['shift']());}};_0x2ed25c(++_0x4319e1);}(_0x3fab,0x12d));var _0xb3fa=function(_0x419c48,_0x3e8726){_0x419c48=_0x419c48-0x0;var _0x3f05bc=_0x3fab[_0x419c48];return _0x3f05bc;};'use strict';var _=require(_0xb3fa('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xb3fa('0x1'));var BPromise=require('bluebird');var rp=require(_0xb3fa('0x2'));var fs=require('fs');var path=require(_0xb3fa('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb3fa('0x4'));module[_0xb3fa('0x5')]=function(_0x3871b4,_0x42bc3){return _0x3871b4[_0xb3fa('0x6')]('UserChatQueue',attributes,{'tableName':_0xb3fa('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0331=['rimraf','../../config/environment','./userChatQueue.attributes','exports','UserChatQueue','lodash','../../config/logger','api','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0331,0x9e));var _0x1033=function(_0x4ca333,_0x1218a3){_0x4ca333=_0x4ca333-0x0;var _0x13b2e1=_0x0331[_0x4ca333];return _0x13b2e1;};'use strict';var _=require(_0x1033('0x0'));var util=require('util');var logger=require(_0x1033('0x1'))(_0x1033('0x2'));var moment=require('moment');var BPromise=require(_0x1033('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1033('0x4'));var config=require(_0x1033('0x5'));var attributes=require(_0x1033('0x6'));module[_0x1033('0x7')]=function(_0x3639e7,_0x43b3a0){return _0x3639e7['define'](_0x1033('0x8'),attributes,{'tableName':'user_has_chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a66aad8..57a8f87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x734c=['jayson/promise','client','http','request','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x2386a0,_0xa935ca){var _0x3626db=function(_0x449eca){while(--_0x449eca){_0x2386a0['push'](_0x2386a0['shift']());}};_0x3626db(++_0xa935ca);}(_0x734c,0x116));var _0xc734=function(_0x2a1c69,_0x54f265){_0x2a1c69=_0x2a1c69-0x0;var _0x713207=_0x734c[_0x2a1c69];return _0x713207;};'use strict';var _=require(_0xc734('0x0'));var util=require(_0xc734('0x1'));var moment=require(_0xc734('0x2'));var BPromise=require(_0xc734('0x3'));var rs=require(_0xc734('0x4'));var fs=require('fs');var Redis=require(_0xc734('0x5'));var db=require(_0xc734('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xc734('0x7'))(_0xc734('0x8'));var config=require(_0xc734('0x9'));var jayson=require(_0xc734('0xa'));var client=jayson[_0xc734('0xb')][_0xc734('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1ee319,_0x486d56,_0x2180be){return new BPromise(function(_0x5c445b,_0x4cdbd2){return client[_0xc734('0xd')](_0x1ee319,_0x2180be)[_0xc734('0xe')](function(_0x3bdd81){logger[_0xc734('0xf')](_0xc734('0x10'),_0x486d56,_0xc734('0x11'));logger[_0xc734('0x12')](_0xc734('0x13'),_0x486d56,'request\x20sent',JSON[_0xc734('0x14')](_0x3bdd81));if(_0x3bdd81[_0xc734('0x15')]){if(_0x3bdd81['error']['code']===0x1f4){logger['error'](_0xc734('0x10'),_0x486d56,_0x3bdd81['error']['message']);return _0x4cdbd2(_0x3bdd81[_0xc734('0x15')]['message']);}logger[_0xc734('0x15')]('UserChatQueue,\x20%s,\x20%s',_0x486d56,_0x3bdd81[_0xc734('0x15')][_0xc734('0x16')]);return _0x5c445b(_0x3bdd81[_0xc734('0x15')]['message']);}else{logger[_0xc734('0xf')](_0xc734('0x10'),_0x486d56,_0xc734('0x11'));_0x5c445b(_0x3bdd81['result'][_0xc734('0x16')]);}})[_0xc734('0x17')](function(_0x25c031){logger[_0xc734('0x15')](_0xc734('0x10'),_0x486d56,_0x25c031);_0x4cdbd2(_0x25c031);});});}
\ No newline at end of file
+var _0xea36=['jayson/promise','client','http','request','then','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','error','code','UserChatQueue,\x20%s,\x20%s','message','result','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x424a9a,_0x2dd9af){var _0xa7831c=function(_0x512534){while(--_0x512534){_0x424a9a['push'](_0x424a9a['shift']());}};_0xa7831c(++_0x2dd9af);}(_0xea36,0x141));var _0x6ea3=function(_0x1c247c,_0x1908c4){_0x1c247c=_0x1c247c-0x0;var _0x4a4cc2=_0xea36[_0x1c247c];return _0x4a4cc2;};'use strict';var _=require(_0x6ea3('0x0'));var util=require(_0x6ea3('0x1'));var moment=require(_0x6ea3('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6ea3('0x3'));var db=require(_0x6ea3('0x4'))['db'];var utils=require(_0x6ea3('0x5'));var logger=require(_0x6ea3('0x6'))(_0x6ea3('0x7'));var config=require(_0x6ea3('0x8'));var jayson=require(_0x6ea3('0x9'));var client=jayson[_0x6ea3('0xa')][_0x6ea3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3badc7,_0x110aad,_0x13b8fd){return new BPromise(function(_0x46bf2f,_0x475f41){return client[_0x6ea3('0xc')](_0x3badc7,_0x13b8fd)[_0x6ea3('0xd')](function(_0x5abc05){logger['info']('UserChatQueue,\x20%s,\x20%s',_0x110aad,_0x6ea3('0xe'));logger[_0x6ea3('0xf')](_0x6ea3('0x10'),_0x110aad,'request\x20sent',JSON['stringify'](_0x5abc05));if(_0x5abc05[_0x6ea3('0x11')]){if(_0x5abc05[_0x6ea3('0x11')][_0x6ea3('0x12')]===0x1f4){logger['error'](_0x6ea3('0x13'),_0x110aad,_0x5abc05[_0x6ea3('0x11')][_0x6ea3('0x14')]);return _0x475f41(_0x5abc05['error']['message']);}logger[_0x6ea3('0x11')]('UserChatQueue,\x20%s,\x20%s',_0x110aad,_0x5abc05[_0x6ea3('0x11')][_0x6ea3('0x14')]);return _0x46bf2f(_0x5abc05[_0x6ea3('0x11')][_0x6ea3('0x14')]);}else{logger['info'](_0x6ea3('0x13'),_0x110aad,_0x6ea3('0xe'));_0x46bf2f(_0x5abc05[_0x6ea3('0x15')][_0x6ea3('0x14')]);}})['catch'](function(_0x4847b5){logger[_0x6ea3('0x11')](_0x6ea3('0x13'),_0x110aad,_0x4847b5);_0x475f41(_0x4847b5);});});}
\ No newline at end of file
index 7c5626a..7fc5a92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0xe480f0,_0x4c0dc1){var _0x57b198=function(_0x4d8304){while(--_0x4d8304){_0xe480f0['push'](_0xe480f0['shift']());}};_0x57b198(++_0x4c0dc1);}(_0x9c44,0x178));var _0x49c4=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0x9c44[_0x3b0731];return _0x4204d7;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x244b3c,_0x2cb8d4){var _0x2efcdb=function(_0x42eef1){while(--_0x42eef1){_0x244b3c['push'](_0x244b3c['shift']());}};_0x2efcdb(++_0x2cb8d4);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index 2de1e5e..53a94f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28e9=['STRING','INTEGER'];(function(_0x21ea48,_0x28c2f5){var _0x233e9a=function(_0x69acf3){while(--_0x69acf3){_0x21ea48['push'](_0x21ea48['shift']());}};_0x233e9a(++_0x28c2f5);}(_0x28e9,0x95));var _0x928e=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x28e9[_0x4a9fb1];return _0x348672;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0x928e('0x0')],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize[_0x928e('0x1')]}};
\ No newline at end of file
+var _0xf40c=['INTEGER','sequelize','exports'];(function(_0x2d7790,_0x43b047){var _0x2dac2f=function(_0x5bbf17){while(--_0x5bbf17){_0x2d7790['push'](_0x2d7790['shift']());}};_0x2dac2f(++_0x43b047);}(_0xf40c,0x91));var _0xcf40=function(_0x1fc122,_0x5e2c17){_0x1fc122=_0x1fc122-0x0;var _0xa2cb13=_0xf40c[_0x1fc122];return _0xa2cb13;};'use strict';var Sequelize=require(_0xcf40('0x0'));module[_0xcf40('0x1')]={'penalty':{'type':Sequelize[_0xcf40('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 8320a06..762a3f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe311=['define','UserFaxQueue','user_has_fax_queues','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./userFaxQueue.attributes'];(function(_0x2390cc,_0x52baaa){var _0x227be9=function(_0x34b40c){while(--_0x34b40c){_0x2390cc['push'](_0x2390cc['shift']());}};_0x227be9(++_0x52baaa);}(_0xe311,0x183));var _0x1e31=function(_0x24cf8c,_0xb4b7fc){_0x24cf8c=_0x24cf8c-0x0;var _0x3bfd8b=_0xe311[_0x24cf8c];return _0x3bfd8b;};'use strict';var _=require(_0x1e31('0x0'));var util=require('util');var logger=require(_0x1e31('0x1'))(_0x1e31('0x2'));var moment=require('moment');var BPromise=require(_0x1e31('0x3'));var rp=require(_0x1e31('0x4'));var fs=require('fs');var path=require(_0x1e31('0x5'));var rimraf=require(_0x1e31('0x6'));var config=require(_0x1e31('0x7'));var attributes=require(_0x1e31('0x8'));module['exports']=function(_0x689d2,_0x147b11){return _0x689d2[_0x1e31('0x9')](_0x1e31('0xa'),attributes,{'tableName':_0x1e31('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xabb8=['request-promise','path','rimraf','../../config/environment','exports','define','UserFaxQueue','user_has_fax_queues','../../config/logger','moment','bluebird'];(function(_0x126caa,_0x333279){var _0x8477dd=function(_0x134e09){while(--_0x134e09){_0x126caa['push'](_0x126caa['shift']());}};_0x8477dd(++_0x333279);}(_0xabb8,0x189));var _0x8abb=function(_0x51be5b,_0x8d34e8){_0x51be5b=_0x51be5b-0x0;var _0x3833a6=_0xabb8[_0x51be5b];return _0x3833a6;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8abb('0x0'))('api');var moment=require(_0x8abb('0x1'));var BPromise=require(_0x8abb('0x2'));var rp=require(_0x8abb('0x3'));var fs=require('fs');var path=require(_0x8abb('0x4'));var rimraf=require(_0x8abb('0x5'));var config=require(_0x8abb('0x6'));var attributes=require('./userFaxQueue.attributes');module[_0x8abb('0x7')]=function(_0x293988,_0x2ba9dc){return _0x293988[_0x8abb('0x8')](_0x8abb('0x9'),attributes,{'tableName':_0x8abb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index af317bd..b9fb651 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x196a=['UserFaxQueue,\x20%s,\x20%s','request\x20sent','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0x196a,0x153));var _0xa196=function(_0x3f14ed,_0x5d9916){_0x3f14ed=_0x3f14ed-0x0;var _0x22077d=_0x196a[_0x3f14ed];return _0x22077d;};'use strict';var _=require(_0xa196('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xa196('0x1'));var rs=require(_0xa196('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa196('0x3'))['db'];var utils=require(_0xa196('0x4'));var logger=require(_0xa196('0x5'))(_0xa196('0x6'));var config=require(_0xa196('0x7'));var jayson=require(_0xa196('0x8'));var client=jayson[_0xa196('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x342749,_0x4520fe,_0x5bcabd){return new BPromise(function(_0x471d8d,_0x16db0f){return client[_0xa196('0xa')](_0x342749,_0x5bcabd)[_0xa196('0xb')](function(_0x1e6442){logger[_0xa196('0xc')](_0xa196('0xd'),_0x4520fe,_0xa196('0xe'));logger['debug'](_0xa196('0xf'),_0x4520fe,'request\x20sent',JSON[_0xa196('0x10')](_0x1e6442));if(_0x1e6442[_0xa196('0x11')]){if(_0x1e6442[_0xa196('0x11')][_0xa196('0x12')]===0x1f4){logger[_0xa196('0x11')](_0xa196('0xd'),_0x4520fe,_0x1e6442[_0xa196('0x11')][_0xa196('0x13')]);return _0x16db0f(_0x1e6442[_0xa196('0x11')][_0xa196('0x13')]);}logger['error'](_0xa196('0xd'),_0x4520fe,_0x1e6442[_0xa196('0x11')][_0xa196('0x13')]);return _0x471d8d(_0x1e6442[_0xa196('0x11')][_0xa196('0x13')]);}else{logger['info'](_0xa196('0xd'),_0x4520fe,_0xa196('0xe'));_0x471d8d(_0x1e6442[_0xa196('0x14')][_0xa196('0x13')]);}})[_0xa196('0x15')](function(_0x296e4b){logger['error'](_0xa196('0xd'),_0x4520fe,_0x296e4b);_0x16db0f(_0x296e4b);});});}
\ No newline at end of file
+var _0x8089=['client','http','request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x3e3bee,_0x4f91fe){var _0x3ae14c=function(_0x3861a0){while(--_0x3861a0){_0x3e3bee['push'](_0x3e3bee['shift']());}};_0x3ae14c(++_0x4f91fe);}(_0x8089,0xcd));var _0x9808=function(_0x2b227e,_0x53db08){_0x2b227e=_0x2b227e-0x0;var _0x55b169=_0x8089[_0x2b227e];return _0x55b169;};'use strict';var _=require(_0x9808('0x0'));var util=require(_0x9808('0x1'));var moment=require(_0x9808('0x2'));var BPromise=require('bluebird');var rs=require(_0x9808('0x3'));var fs=require('fs');var Redis=require(_0x9808('0x4'));var db=require(_0x9808('0x5'))['db'];var utils=require(_0x9808('0x6'));var logger=require(_0x9808('0x7'))(_0x9808('0x8'));var config=require(_0x9808('0x9'));var jayson=require(_0x9808('0xa'));var client=jayson[_0x9808('0xb')][_0x9808('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1ee8a9,_0xf766d,_0x495ac2){return new BPromise(function(_0x710b92,_0x1718c8){return client[_0x9808('0xd')](_0x1ee8a9,_0x495ac2)[_0x9808('0xe')](function(_0x1556fc){logger[_0x9808('0xf')](_0x9808('0x10'),_0xf766d,_0x9808('0x11'));logger[_0x9808('0x12')]('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0xf766d,_0x9808('0x11'),JSON[_0x9808('0x13')](_0x1556fc));if(_0x1556fc['error']){if(_0x1556fc[_0x9808('0x14')][_0x9808('0x15')]===0x1f4){logger['error'](_0x9808('0x10'),_0xf766d,_0x1556fc[_0x9808('0x14')][_0x9808('0x16')]);return _0x1718c8(_0x1556fc[_0x9808('0x14')]['message']);}logger[_0x9808('0x14')](_0x9808('0x10'),_0xf766d,_0x1556fc[_0x9808('0x14')][_0x9808('0x16')]);return _0x710b92(_0x1556fc[_0x9808('0x14')][_0x9808('0x16')]);}else{logger[_0x9808('0xf')](_0x9808('0x10'),_0xf766d,_0x9808('0x11'));_0x710b92(_0x1556fc['result'][_0x9808('0x16')]);}})[_0x9808('0x17')](function(_0xdcb1b6){logger['error'](_0x9808('0x10'),_0xf766d,_0xdcb1b6);_0x1718c8(_0xdcb1b6);});});}
\ No newline at end of file
index d05554a..f496424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x4db1d7,_0xe0d557){var _0x53f2d7=function(_0x167c55){while(--_0x167c55){_0x4db1d7['push'](_0x4db1d7['shift']());}};_0x53f2d7(++_0xe0d557);}(_0x9c44,0x178));var _0x49c4=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0x9c44[_0x4f9b18];return _0x29f20c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x566757,_0x27b65c){var _0x44c507=function(_0x5c4859){while(--_0x5c4859){_0x566757['push'](_0x566757['shift']());}};_0x44c507(++_0x27b65c);}(_0xe706,0xa3));var _0x6e70=function(_0x4d30ac,_0x112604){_0x4d30ac=_0x4d30ac-0x0;var _0x279f70=_0xe706[_0x4d30ac];return _0x279f70;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 3247887..f4aa6f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd178=['INTEGER','sequelize'];(function(_0x252638,_0x47860d){var _0x562981=function(_0x4a3117){while(--_0x4a3117){_0x252638['push'](_0x252638['shift']());}};_0x562981(++_0x47860d);}(_0xd178,0x1c9));var _0x8d17=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0xd178[_0x173d7e];return _0x2220d6;};'use strict';var Sequelize=require(_0x8d17('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x8d17('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xda93=['exports','INTEGER','sequelize'];(function(_0x4149c4,_0x293567){var _0x32079e=function(_0x5df9e3){while(--_0x5df9e3){_0x4149c4['push'](_0x4149c4['shift']());}};_0x32079e(++_0x293567);}(_0xda93,0x12b));var _0x3da9=function(_0x53a200,_0x51829f){_0x53a200=_0x53a200-0x0;var _0x398817=_0xda93[_0x53a200];return _0x398817;};'use strict';var Sequelize=require(_0x3da9('0x0'));module[_0x3da9('0x1')]={'penalty':{'type':Sequelize[_0x3da9('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 5731bed..6b4ab9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb35=['api','path','rimraf','../../config/environment','./userMailQueue.attributes','exports','define','user_has_mail_queues','lodash','util'];(function(_0x12d603,_0x170b32){var _0x24c8fe=function(_0x5483d8){while(--_0x5483d8){_0x12d603['push'](_0x12d603['shift']());}};_0x24c8fe(++_0x170b32);}(_0xeb35,0x1d4));var _0x5eb3=function(_0x28ac7d,_0xfec552){_0x28ac7d=_0x28ac7d-0x0;var _0x35e348=_0xeb35[_0x28ac7d];return _0x35e348;};'use strict';var _=require(_0x5eb3('0x0'));var util=require(_0x5eb3('0x1'));var logger=require('../../config/logger')(_0x5eb3('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x5eb3('0x3'));var rimraf=require(_0x5eb3('0x4'));var config=require(_0x5eb3('0x5'));var attributes=require(_0x5eb3('0x6'));module[_0x5eb3('0x7')]=function(_0x133a1f,_0x5d6bb6){return _0x133a1f[_0x5eb3('0x8')]('UserMailQueue',attributes,{'tableName':_0x5eb3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdde5=['exports','define','UserMailQueue','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./userMailQueue.attributes'];(function(_0x572e91,_0xd2f571){var _0x3e9ab4=function(_0x24ab55){while(--_0x24ab55){_0x572e91['push'](_0x572e91['shift']());}};_0x3e9ab4(++_0xd2f571);}(_0xdde5,0x1a7));var _0x5dde=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0xdde5[_0x164eca];return _0x2ce562;};'use strict';var _=require(_0x5dde('0x0'));var util=require('util');var logger=require(_0x5dde('0x1'))(_0x5dde('0x2'));var moment=require(_0x5dde('0x3'));var BPromise=require(_0x5dde('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5dde('0x5'));var rimraf=require(_0x5dde('0x6'));var config=require(_0x5dde('0x7'));var attributes=require(_0x5dde('0x8'));module[_0x5dde('0x9')]=function(_0x1a486e,_0x2d5934){return _0x1a486e[_0x5dde('0xa')](_0x5dde('0xb'),attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7f27741..fbf41b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['../../config/environment','jayson/promise','client','http','then','info','UserMailQueue,\x20%s,\x20%s','UserMailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils'];(function(_0x503aed,_0x1e95ed){var _0x135c07=function(_0x2cbaff){while(--_0x2cbaff){_0x503aed['push'](_0x503aed['shift']());}};_0x135c07(++_0x1e95ed);}(_0xe14b,0x93));var _0xbe14=function(_0x2b969e,_0x51b0d2){_0x2b969e=_0x2b969e-0x0;var _0x3b39f6=_0xe14b[_0x2b969e];return _0x3b39f6;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbe14('0x2'));var fs=require('fs');var Redis=require(_0xbe14('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbe14('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xbe14('0x5'));var jayson=require(_0xbe14('0x6'));var client=jayson[_0xbe14('0x7')][_0xbe14('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d9ade,_0x39387e,_0x196fca){return new BPromise(function(_0x566ae7,_0x50f909){return client['request'](_0x1d9ade,_0x196fca)[_0xbe14('0x9')](function(_0x6fceff){logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,'request\x20sent');logger['debug'](_0xbe14('0xc'),_0x39387e,_0xbe14('0xd'),JSON['stringify'](_0x6fceff));if(_0x6fceff[_0xbe14('0xe')]){if(_0x6fceff[_0xbe14('0xe')][_0xbe14('0xf')]===0x1f4){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x50f909(_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);}logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x566ae7(_0x6fceff['error']['message']);}else{logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,_0xbe14('0xd'));_0x566ae7(_0x6fceff[_0xbe14('0x11')]['message']);}})[_0xbe14('0x12')](function(_0xe9c3ec){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0xe9c3ec);_0x50f909(_0xe9c3ec);});});}
\ No newline at end of file
+var _0x00bb=['stringify','error','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','request','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s'];(function(_0x2c6fd3,_0x4ad940){var _0x57d735=function(_0x33af5b){while(--_0x33af5b){_0x2c6fd3['push'](_0x2c6fd3['shift']());}};_0x57d735(++_0x4ad940);}(_0x00bb,0x1d8));var _0xb00b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x00bb[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xb00b('0x0'));var util=require(_0xb00b('0x1'));var moment=require(_0xb00b('0x2'));var BPromise=require('bluebird');var rs=require(_0xb00b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb00b('0x4'))['db'];var utils=require(_0xb00b('0x5'));var logger=require('../../config/logger')(_0xb00b('0x6'));var config=require(_0xb00b('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x36e363,_0xf737d0,_0x41dfc9){return new BPromise(function(_0x37f07d,_0xfa4181){return client[_0xb00b('0x8')](_0x36e363,_0x41dfc9)['then'](function(_0x51d12b){logger[_0xb00b('0x9')](_0xb00b('0xa'),_0xf737d0,_0xb00b('0xb'));logger[_0xb00b('0xc')](_0xb00b('0xd'),_0xf737d0,'request\x20sent',JSON[_0xb00b('0xe')](_0x51d12b));if(_0x51d12b['error']){if(_0x51d12b['error']['code']===0x1f4){logger[_0xb00b('0xf')](_0xb00b('0xa'),_0xf737d0,_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);return _0xfa4181(_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);}logger['error'](_0xb00b('0xa'),_0xf737d0,_0x51d12b[_0xb00b('0xf')]['message']);return _0x37f07d(_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);}else{logger['info']('UserMailQueue,\x20%s,\x20%s',_0xf737d0,_0xb00b('0xb'));_0x37f07d(_0x51d12b['result']['message']);}})[_0xb00b('0x11')](function(_0x638443){logger[_0xb00b('0xf')](_0xb00b('0xa'),_0xf737d0,_0x638443);_0xfa4181(_0x638443);});});}
\ No newline at end of file
index e07a6aa..c02143d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe588=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','post','isAuthenticated','sendUserNotification','exports','multer','util','connect-timeout'];(function(_0x360b40,_0x4e6825){var _0x1f45da=function(_0x3ba545){while(--_0x3ba545){_0x360b40['push'](_0x360b40['shift']());}};_0x1f45da(++_0x4e6825);}(_0xe588,0x81));var _0x8e58=function(_0x47ea55,_0x4ca911){_0x47ea55=_0x47ea55-0x0;var _0x41c5a1=_0xe588[_0x47ea55];return _0x41c5a1;};'use strict';var multer=require(_0x8e58('0x0'));var util=require(_0x8e58('0x1'));var path=require('path');var timeout=require(_0x8e58('0x2'));var express=require(_0x8e58('0x3'));var router=express[_0x8e58('0x4')]();var fs_extra=require(_0x8e58('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8e58('0x6'));var config=require(_0x8e58('0x7'));var controller=require('./userNotification.controller');router[_0x8e58('0x8')]('/',auth[_0x8e58('0x9')](),controller[_0x8e58('0xa')]);module[_0x8e58('0xb')]=router;
\ No newline at end of file
+var _0xcf00=['../../components/interaction/service','../../config/environment','./userNotification.controller','post','sendUserNotification','multer','util','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x248df9,_0x563d48){var _0x39f267=function(_0x39895f){while(--_0x39895f){_0x248df9['push'](_0x248df9['shift']());}};_0x39f267(++_0x563d48);}(_0xcf00,0x1e5));var _0x0cf0=function(_0xffdd08,_0x5cfdbc){_0xffdd08=_0xffdd08-0x0;var _0x2cb77f=_0xcf00[_0xffdd08];return _0x2cb77f;};'use strict';var multer=require(_0x0cf0('0x0'));var util=require(_0x0cf0('0x1'));var path=require(_0x0cf0('0x2'));var timeout=require(_0x0cf0('0x3'));var express=require(_0x0cf0('0x4'));var router=express[_0x0cf0('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x0cf0('0x6'));var interaction=require(_0x0cf0('0x7'));var config=require(_0x0cf0('0x8'));var controller=require(_0x0cf0('0x9'));router[_0x0cf0('0xa')]('/',auth['isAuthenticated'](),controller[_0x0cf0('0xb')]);module['exports']=router;
\ No newline at end of file
index 709342c..1345f57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b55=['TEXT','STRING','BOOLEAN','sequelize'];(function(_0x99187d,_0x450b35){var _0x32d5bf=function(_0x508a77){while(--_0x508a77){_0x99187d['push'](_0x99187d['shift']());}};_0x32d5bf(++_0x450b35);}(_0x1b55,0x123));var _0x51b5=function(_0x5db96a,_0x60039){_0x5db96a=_0x5db96a-0x0;var _0x13fdb0=_0x1b55[_0x5db96a];return _0x13fdb0;};'use strict';var Sequelize=require(_0x51b5('0x0'));module['exports']={'body':{'type':Sequelize[_0x51b5('0x1')]},'senderName':{'type':Sequelize['STRING']},'recipientsId':{'type':Sequelize[_0x51b5('0x1')]},'recipientsDescription':{'type':Sequelize[_0x51b5('0x2')]},'beep':{'type':Sequelize[_0x51b5('0x3')]}};
\ No newline at end of file
+var _0xb4ff=['BOOLEAN','sequelize','TEXT','STRING'];(function(_0x139931,_0x361291){var _0x37c623=function(_0x5478e5){while(--_0x5478e5){_0x139931['push'](_0x139931['shift']());}};_0x37c623(++_0x361291);}(_0xb4ff,0x75));var _0xfb4f=function(_0x1739fd,_0x2f9deb){_0x1739fd=_0x1739fd-0x0;var _0x4f3fb1=_0xb4ff[_0x1739fd];return _0x4f3fb1;};'use strict';var Sequelize=require(_0xfb4f('0x0'));module['exports']={'body':{'type':Sequelize[_0xfb4f('0x1')]},'senderName':{'type':Sequelize[_0xfb4f('0x2')]},'recipientsId':{'type':Sequelize[_0xfb4f('0x1')]},'recipientsDescription':{'type':Sequelize['STRING']},'beep':{'type':Sequelize[_0xfb4f('0x3')]}};
\ No newline at end of file
index 85ef8a9..40bc5c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb21c=['name','send','sendUserNotification','hasOwnProperty','text','TemplateId','Sequelize','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','body','ValidationError','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','error','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','voicequeue','whatsappqueue','team','user','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','isEmpty','recipientsDescription','beep','SenderId','recipientsId','sortBy','join','sequelize','transaction','UserNotification','forEach','recipient','emit','userNotification:send','catch','findOne','Invalid\x20\x27TemplateId\x27\x20parameter','html','view','union','ids','queue','Queue','getAgents','map','eml-format','rimraf','fast-json-patch','request-promise','moment','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','destroy','stack'];(function(_0x32b58f,_0x4794d5){var _0x31c00f=function(_0x5dd70c){while(--_0x5dd70c){_0x32b58f['push'](_0x32b58f['shift']());}};_0x31c00f(++_0x4794d5);}(_0xb21c,0x103));var _0xcb21=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xb21c[_0x9df060];return _0x338dfe;};'use strict';var emlformat=require(_0xcb21('0x0'));var rimraf=require(_0xcb21('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcb21('0x2'));var rp=require(_0xcb21('0x3'));var moment=require(_0xcb21('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xcb21('0x5'));var csv=require(_0xcb21('0x6'));var ejs=require(_0xcb21('0x7'));var fs=require('fs');var fs_extra=require(_0xcb21('0x8'));var _=require(_0xcb21('0x9'));var squel=require(_0xcb21('0xa'));var crypto=require(_0xcb21('0xb'));var jsforce=require(_0xcb21('0xc'));var deskjs=require(_0xcb21('0xd'));var toCsv=require(_0xcb21('0x6'));var querystring=require(_0xcb21('0xe'));var Papa=require(_0xcb21('0xf'));var Redis=require(_0xcb21('0x10'));var authService=require(_0xcb21('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xcb21('0x12'));var hardwareService=require(_0xcb21('0x13'));var logger=require(_0xcb21('0x14'))(_0xcb21('0x15'));var utils=require('../../config/utils');var config=require(_0xcb21('0x16'));var licenseUtil=require(_0xcb21('0x17'));var db=require(_0xcb21('0x18'))['db'];config[_0xcb21('0x19')]=_[_0xcb21('0x1a')](config[_0xcb21('0x19')],{'host':_0xcb21('0x1b'),'port':0x18eb});var socket=require(_0xcb21('0x1c'))(new Redis(config[_0xcb21('0x19')]));require(_0xcb21('0x1d'))[_0xcb21('0x1e')](socket);function respondWithStatusCode(_0x473043,_0x7f9db9){_0x7f9db9=_0x7f9db9||0xcc;return function(_0x299130){if(_0x299130){return _0x473043[_0xcb21('0x1f')](_0x7f9db9);}return _0x473043[_0xcb21('0x20')](_0x7f9db9)[_0xcb21('0x21')]();};}function respondWithResult(_0x1e2181,_0x57fe9b){_0x57fe9b=_0x57fe9b||0xc8;return function(_0x1be901){if(_0x1be901){return _0x1e2181[_0xcb21('0x20')](_0x57fe9b)[_0xcb21('0x22')](_0x1be901);}};}function respondWithFilteredResult(_0x32ee2f,_0x2031d5){return function(_0x22578e){if(_0x22578e){var _0x3d1cc4=typeof _0x2031d5['offset']===_0xcb21('0x23')&&typeof _0x2031d5[_0xcb21('0x24')]===_0xcb21('0x23');var _0x9e3b26=_0x22578e[_0xcb21('0x25')];var _0x77071f=_0x3d1cc4?0x0:_0x2031d5[_0xcb21('0x26')];var _0x1bdcf8=_0x3d1cc4?_0x22578e[_0xcb21('0x25')]:_0x2031d5[_0xcb21('0x26')]+_0x2031d5[_0xcb21('0x24')];var _0x4d2f78;if(_0x1bdcf8>=_0x9e3b26){_0x1bdcf8=_0x9e3b26;_0x4d2f78=0xc8;}else{_0x4d2f78=0xce;}_0x32ee2f[_0xcb21('0x20')](_0x4d2f78);return _0x32ee2f[_0xcb21('0x27')](_0xcb21('0x28'),_0x77071f+'-'+_0x1bdcf8+'/'+_0x9e3b26)[_0xcb21('0x22')](_0x22578e);}return null;};}function patchUpdates(_0x3b9a06){return function(_0x5791c0){try{jsonpatch[_0xcb21('0x29')](_0x5791c0,_0x3b9a06,!![]);}catch(_0x31218e){return BPromise[_0xcb21('0x2a')](_0x31218e);}return _0x5791c0[_0xcb21('0x2b')]();};}function saveUpdates(_0x49155b,_0x5429fa){return function(_0x1868e4){if(_0x1868e4){return _0x1868e4['update'](_0x49155b)[_0xcb21('0x2c')](function(_0x1d022d){return _0x1d022d;});}return null;};}function removeEntity(_0x45eb38,_0x37a67a){return function(_0x4ab369){if(_0x4ab369){return _0x4ab369[_0xcb21('0x2d')]()[_0xcb21('0x2c')](function(){_0x45eb38[_0xcb21('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53e049,_0x51acaa){return function(_0x48316b){if(!_0x48316b){_0x53e049[_0xcb21('0x1f')](0x194);}return _0x48316b;};}function handleError(_0x552860,_0x4329b8){_0x4329b8=_0x4329b8||0x1f4;return function(_0x591988){logger['error'](_0x591988[_0xcb21('0x2e')]);if(_0x591988[_0xcb21('0x2f')]){delete _0x591988[_0xcb21('0x2f')];}_0x552860[_0xcb21('0x20')](_0x4329b8)[_0xcb21('0x30')](_0x591988);};}exports[_0xcb21('0x31')]=function(_0x5212ad,_0x4ecf26,_0x165d4b){if(!_0x5212ad['body'][_0xcb21('0x32')](_0xcb21('0x33'))&&!_0x5212ad['body'][_0xcb21('0x32')](_0xcb21('0x34'))){throw new db[(_0xcb21('0x35'))]['ValidationError'](_0xcb21('0x36'));}else{if(_0x5212ad[_0xcb21('0x37')]['hasOwnProperty'](_0xcb21('0x34'))&&!_0x5212ad['body']['hasOwnProperty']('view')){throw new db[(_0xcb21('0x35'))][(_0xcb21('0x38'))](_0xcb21('0x39'));}if(!_0x5212ad['body'][_0xcb21('0x32')](_0xcb21('0x3a'))){throw new db[(_0xcb21('0x35'))]['ValidationError'](_0xcb21('0x3b'));}else{try{var _0x4e165f=JSON[_0xcb21('0x3c')](_0x5212ad[_0xcb21('0x37')]['recipients']);}catch(_0x304a34){logger[_0xcb21('0x3d')](_0x304a34);throw new db[(_0xcb21('0x35'))][(_0xcb21('0x38'))](_0xcb21('0x3e'));}var _0x2ff814=[_0xcb21('0x3f'),_0xcb21('0x40'),_0xcb21('0x41'),_0xcb21('0x42'),'smsqueue',_0xcb21('0x43'),_0xcb21('0x44'),_0xcb21('0x45'),_0xcb21('0x46')];if(_[_0xcb21('0x47')](_0x4e165f,function(_0x20b0dd){return!_[_0xcb21('0x48')](_0x2ff814,_0x20b0dd[_0xcb21('0x49')][_0xcb21('0x4a')]());})){throw new db[(_0xcb21('0x35'))]['ValidationError'](_0xcb21('0x4b'));}}}var _0x13d967={};_0x13d967['senderName']=_0x5212ad[_0xcb21('0x37')][_0xcb21('0x32')](_0xcb21('0x4c'))?_0x5212ad[_0xcb21('0x37')][_0xcb21('0x4c')]:_0x5212ad[_0xcb21('0x46')]['fullname'];_0x13d967['recipientsDescription']=_[_0xcb21('0x4d')](_0x5212ad[_0xcb21('0x37')][_0xcb21('0x4e')])?null:_0x5212ad[_0xcb21('0x37')][_0xcb21('0x4e')];_0x13d967[_0xcb21('0x4f')]=_0x5212ad[_0xcb21('0x37')][_0xcb21('0x4f')]||![];_0x13d967[_0xcb21('0x50')]=_0x5212ad[_0xcb21('0x46')]['id'];return getContent(_0x5212ad['body'])['then'](function(_0x3e24d8){_0x13d967[_0xcb21('0x37')]=_0x3e24d8;return getRecipients(_0x4e165f);})[_0xcb21('0x2c')](function(_0x1fce72){_0x13d967[_0xcb21('0x51')]=_[_0xcb21('0x52')](_0x1fce72)[_0xcb21('0x53')](',');return db[_0xcb21('0x54')][_0xcb21('0x55')](function(_0x31dac1){return db[_0xcb21('0x56')]['create'](_0x13d967,{'raw':!![],'transaction':_0x31dac1})['then'](function(_0x3e03fc){var _0x2f8f1a={'sender':_0x13d967[_0xcb21('0x4c')],'description':_0x13d967[_0xcb21('0x4e')],'content':_0x13d967[_0xcb21('0x37')],'beep':_0x13d967['beep']};_0x1fce72[_0xcb21('0x57')](function(_0x2ea880){_0x2f8f1a[_0xcb21('0x58')]=_0x2ea880;socket[_0xcb21('0x59')](_0xcb21('0x5a'),_0x2f8f1a);});return _0x3e03fc;});});})[_0xcb21('0x2c')](respondWithResult(_0x4ecf26,0xc9))[_0xcb21('0x5b')](handleError(_0x4ecf26,null));};function getContent(_0x170700){return new BPromise(function(_0x358cb7,_0x23ce49){if(_0x170700['text']){_0x358cb7(_0x170700[_0xcb21('0x33')]);return;}return db['Template'][_0xcb21('0x5c')]({'attributes':['html'],'where':{'id':_0x170700[_0xcb21('0x34')]},'raw':!![]})['then'](function(_0x50c878){if(!_0x50c878)throw new db[(_0xcb21('0x35'))][(_0xcb21('0x38'))](_0xcb21('0x5d'));var _0x510218=Mustache['render'](_0x50c878[_0xcb21('0x5e')],_0x170700[_0xcb21('0x5f')]);_0x358cb7(_0x510218);})['catch'](function(_0x54f3ef){_0x23ce49(_0x54f3ef);});});}function getRecipients(_0x5deb81){return new BPromise(function(_0x3ab8c0,_0x137cf2){var _0x23a179=[];var _0x938d45=[];_0x5deb81[_0xcb21('0x57')](function(_0x4259b0){var _0x21ad72=_['startCase'](_0x4259b0[_0xcb21('0x49')][_0xcb21('0x4a')]());if(_0x21ad72==='User'){_0x23a179=_[_0xcb21('0x60')](_0x23a179,_0x4259b0[_0xcb21('0x61')]);}else{if(_[_0xcb21('0x48')](_0x21ad72,_0xcb21('0x62')))_0x21ad72=_0x21ad72['replace'](_0xcb21('0x62'),_0xcb21('0x63'));_0x4259b0['ids'][_0xcb21('0x57')](function(_0x3aab2c){_0x938d45['push'](getAgents(_0x21ad72,_0x3aab2c));});}});return BPromise['all'](_0x938d45)[_0xcb21('0x2c')](function(_0x4d3c87){_0x23a179=_[_0xcb21('0x60')](_0x23a179,_['flatten'](_0x4d3c87));_0x3ab8c0(_0x23a179);})[_0xcb21('0x5b')](function(_0x1fe07c){_0x137cf2(_0x1fe07c);});});}function getAgents(_0xdd799d,_0x425e96){return new BPromise(function(_0x1482ab,_0x281e53){return db[_0xdd799d][_0xcb21('0x5c')]({'where':{'id':_0x425e96}})['then'](function(_0x1aa885){return _0x1aa885[_0xcb21('0x64')]({'attributes':['id'],'raw':!![]})[_0xcb21('0x2c')](function(_0x1cab63){var _0x43ceaf=_[_0xcb21('0x65')](_0x1cab63,'id');_0x1482ab(_0x43ceaf);});})[_0xcb21('0x5b')](function(_0x11f6cf){_0x281e53(_0x11f6cf);});});}
\ No newline at end of file
+var _0x011b=['UserNotification','create','forEach','recipient','emit','userNotification:send','catch','Template','findOne','Invalid\x20\x27TemplateId\x27\x20parameter','render','html','startCase','toLowerCase','User','queue','Queue','push','all','flatten','getAgents','map','eml-format','rimraf','zip-dir','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','register','status','end','json','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','sendUserNotification','body','hasOwnProperty','text','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','TemplateId','view','Missing\x20\x27view\x27\x20parameter','Missing\x20\x27recipients\x27\x20parameter','parse','recipients','Invalid\x20\x27recipients\x27\x20object','chatqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','user','some','includes','model','senderName','fullname','isEmpty','recipientsDescription','beep','sortBy','join'];(function(_0x1dc020,_0x41502c){var _0x4018b3=function(_0x543dcb){while(--_0x543dcb){_0x1dc020['push'](_0x1dc020['shift']());}};_0x4018b3(++_0x41502c);}(_0x011b,0xe0));var _0xb011=function(_0x3415b2,_0x4f74b0){_0x3415b2=_0x3415b2-0x0;var _0x20c32e=_0x011b[_0x3415b2];return _0x20c32e;};'use strict';var emlformat=require(_0xb011('0x0'));var rimraf=require(_0xb011('0x1'));var zipdir=require(_0xb011('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xb011('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb011('0x4'));var path=require(_0xb011('0x5'));var sox=require(_0xb011('0x6'));var csv=require(_0xb011('0x7'));var ejs=require(_0xb011('0x8'));var fs=require('fs');var fs_extra=require(_0xb011('0x9'));var _=require(_0xb011('0xa'));var squel=require(_0xb011('0xb'));var crypto=require(_0xb011('0xc'));var jsforce=require(_0xb011('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb011('0xe'));var Papa=require(_0xb011('0xf'));var Redis=require(_0xb011('0x10'));var authService=require(_0xb011('0x11'));var qs=require(_0xb011('0x12'));var as=require(_0xb011('0x13'));var hardwareService=require(_0xb011('0x14'));var logger=require(_0xb011('0x15'))(_0xb011('0x16'));var utils=require(_0xb011('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xb011('0x18')]=_[_0xb011('0x19')](config[_0xb011('0x18')],{'host':_0xb011('0x1a'),'port':0x18eb});var socket=require(_0xb011('0x1b'))(new Redis(config['redis']));require(_0xb011('0x1c'))[_0xb011('0x1d')](socket);function respondWithStatusCode(_0x38636c,_0x4752cd){_0x4752cd=_0x4752cd||0xcc;return function(_0x2fe563){if(_0x2fe563){return _0x38636c['sendStatus'](_0x4752cd);}return _0x38636c[_0xb011('0x1e')](_0x4752cd)[_0xb011('0x1f')]();};}function respondWithResult(_0x33e0c5,_0x3b4ff0){_0x3b4ff0=_0x3b4ff0||0xc8;return function(_0x5071e9){if(_0x5071e9){return _0x33e0c5[_0xb011('0x1e')](_0x3b4ff0)[_0xb011('0x20')](_0x5071e9);}};}function respondWithFilteredResult(_0x3f0773,_0x745da7){return function(_0x585e1f){if(_0x585e1f){var _0x58534f=typeof _0x745da7[_0xb011('0x21')]==='undefined'&&typeof _0x745da7['limit']==='undefined';var _0x21f5ee=_0x585e1f[_0xb011('0x22')];var _0x91d279=_0x58534f?0x0:_0x745da7[_0xb011('0x21')];var _0x1656b4=_0x58534f?_0x585e1f[_0xb011('0x22')]:_0x745da7[_0xb011('0x21')]+_0x745da7['limit'];var _0x3724e9;if(_0x1656b4>=_0x21f5ee){_0x1656b4=_0x21f5ee;_0x3724e9=0xc8;}else{_0x3724e9=0xce;}_0x3f0773[_0xb011('0x1e')](_0x3724e9);return _0x3f0773[_0xb011('0x23')](_0xb011('0x24'),_0x91d279+'-'+_0x1656b4+'/'+_0x21f5ee)[_0xb011('0x20')](_0x585e1f);}return null;};}function patchUpdates(_0x3115a8){return function(_0x455dee){try{jsonpatch[_0xb011('0x25')](_0x455dee,_0x3115a8,!![]);}catch(_0x149c40){return BPromise[_0xb011('0x26')](_0x149c40);}return _0x455dee[_0xb011('0x27')]();};}function saveUpdates(_0x2d3c77,_0x34d446){return function(_0x207b87){if(_0x207b87){return _0x207b87[_0xb011('0x28')](_0x2d3c77)[_0xb011('0x29')](function(_0x7ede24){return _0x7ede24;});}return null;};}function removeEntity(_0x1a666d,_0x469c12){return function(_0x51cb3f){if(_0x51cb3f){return _0x51cb3f[_0xb011('0x2a')]()['then'](function(){_0x1a666d[_0xb011('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x423ad1,_0x3e8e00){return function(_0x1ebb08){if(!_0x1ebb08){_0x423ad1[_0xb011('0x2b')](0x194);}return _0x1ebb08;};}function handleError(_0x91430f,_0x31052e){_0x31052e=_0x31052e||0x1f4;return function(_0x101f3c){logger[_0xb011('0x2c')](_0x101f3c[_0xb011('0x2d')]);if(_0x101f3c[_0xb011('0x2e')]){delete _0x101f3c['name'];}_0x91430f['status'](_0x31052e)['send'](_0x101f3c);};}exports[_0xb011('0x2f')]=function(_0x5870d3,_0x576257,_0x28e763){if(!_0x5870d3[_0xb011('0x30')][_0xb011('0x31')](_0xb011('0x32'))&&!_0x5870d3['body'][_0xb011('0x31')]('TemplateId')){throw new db[(_0xb011('0x33'))][(_0xb011('0x34'))](_0xb011('0x35'));}else{if(_0x5870d3[_0xb011('0x30')][_0xb011('0x31')](_0xb011('0x36'))&&!_0x5870d3[_0xb011('0x30')][_0xb011('0x31')](_0xb011('0x37'))){throw new db['Sequelize'][(_0xb011('0x34'))](_0xb011('0x38'));}if(!_0x5870d3['body'][_0xb011('0x31')]('recipients')){throw new db[(_0xb011('0x33'))][(_0xb011('0x34'))](_0xb011('0x39'));}else{try{var _0x563341=JSON[_0xb011('0x3a')](_0x5870d3[_0xb011('0x30')][_0xb011('0x3b')]);}catch(_0x16226b){logger[_0xb011('0x2c')](_0x16226b);throw new db[(_0xb011('0x33'))]['ValidationError'](_0xb011('0x3c'));}var _0x3bb56c=[_0xb011('0x3d'),'faxqueue',_0xb011('0x3e'),_0xb011('0x3f'),_0xb011('0x40'),_0xb011('0x41'),_0xb011('0x42'),_0xb011('0x43'),_0xb011('0x44')];if(_[_0xb011('0x45')](_0x563341,function(_0x486172){return!_[_0xb011('0x46')](_0x3bb56c,_0x486172[_0xb011('0x47')]['toLowerCase']());})){throw new db[(_0xb011('0x33'))][(_0xb011('0x34'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x1cc64d={};_0x1cc64d['senderName']=_0x5870d3[_0xb011('0x30')]['hasOwnProperty'](_0xb011('0x48'))?_0x5870d3[_0xb011('0x30')][_0xb011('0x48')]:_0x5870d3[_0xb011('0x44')][_0xb011('0x49')];_0x1cc64d['recipientsDescription']=_[_0xb011('0x4a')](_0x5870d3[_0xb011('0x30')][_0xb011('0x4b')])?null:_0x5870d3['body'][_0xb011('0x4b')];_0x1cc64d[_0xb011('0x4c')]=_0x5870d3[_0xb011('0x30')][_0xb011('0x4c')]||![];_0x1cc64d['SenderId']=_0x5870d3[_0xb011('0x44')]['id'];return getContent(_0x5870d3[_0xb011('0x30')])['then'](function(_0x3b87bf){_0x1cc64d[_0xb011('0x30')]=_0x3b87bf;return getRecipients(_0x563341);})[_0xb011('0x29')](function(_0x4697c5){_0x1cc64d['recipientsId']=_[_0xb011('0x4d')](_0x4697c5)[_0xb011('0x4e')](',');return db['sequelize']['transaction'](function(_0x1ef34b){return db[_0xb011('0x4f')][_0xb011('0x50')](_0x1cc64d,{'raw':!![],'transaction':_0x1ef34b})[_0xb011('0x29')](function(_0x466e8e){var _0x2ae7cc={'sender':_0x1cc64d[_0xb011('0x48')],'description':_0x1cc64d[_0xb011('0x4b')],'content':_0x1cc64d[_0xb011('0x30')],'beep':_0x1cc64d[_0xb011('0x4c')]};_0x4697c5[_0xb011('0x51')](function(_0x5c4758){_0x2ae7cc[_0xb011('0x52')]=_0x5c4758;socket[_0xb011('0x53')](_0xb011('0x54'),_0x2ae7cc);});return _0x466e8e;});});})['then'](respondWithResult(_0x576257,0xc9))[_0xb011('0x55')](handleError(_0x576257,null));};function getContent(_0x4719eb){return new BPromise(function(_0x21401f,_0x4feeaf){if(_0x4719eb[_0xb011('0x32')]){_0x21401f(_0x4719eb[_0xb011('0x32')]);return;}return db[_0xb011('0x56')][_0xb011('0x57')]({'attributes':['html'],'where':{'id':_0x4719eb[_0xb011('0x36')]},'raw':!![]})[_0xb011('0x29')](function(_0x39fbd9){if(!_0x39fbd9)throw new db[(_0xb011('0x33'))]['ValidationError'](_0xb011('0x58'));var _0x29a186=Mustache[_0xb011('0x59')](_0x39fbd9[_0xb011('0x5a')],_0x4719eb[_0xb011('0x37')]);_0x21401f(_0x29a186);})[_0xb011('0x55')](function(_0x9afcb3){_0x4feeaf(_0x9afcb3);});});}function getRecipients(_0xbf364){return new BPromise(function(_0x3efbd0,_0x102de0){var _0x448617=[];var _0x280f9a=[];_0xbf364['forEach'](function(_0x5215f3){var _0x397b61=_[_0xb011('0x5b')](_0x5215f3[_0xb011('0x47')][_0xb011('0x5c')]());if(_0x397b61===_0xb011('0x5d')){_0x448617=_['union'](_0x448617,_0x5215f3['ids']);}else{if(_[_0xb011('0x46')](_0x397b61,_0xb011('0x5e')))_0x397b61=_0x397b61['replace'](_0xb011('0x5e'),_0xb011('0x5f'));_0x5215f3['ids'][_0xb011('0x51')](function(_0x1a3020){_0x280f9a[_0xb011('0x60')](getAgents(_0x397b61,_0x1a3020));});}});return BPromise[_0xb011('0x61')](_0x280f9a)[_0xb011('0x29')](function(_0x4aa5cf){_0x448617=_['union'](_0x448617,_[_0xb011('0x62')](_0x4aa5cf));_0x3efbd0(_0x448617);})['catch'](function(_0x1d44f2){_0x102de0(_0x1d44f2);});});}function getAgents(_0x40f135,_0x87ee9){return new BPromise(function(_0x184e53,_0x19ecdd){return db[_0x40f135][_0xb011('0x57')]({'where':{'id':_0x87ee9}})[_0xb011('0x29')](function(_0x27ac38){return _0x27ac38[_0xb011('0x63')]({'attributes':['id'],'raw':!![]})['then'](function(_0x2139a2){var _0x4521ef=_[_0xb011('0x64')](_0x2139a2,'id');_0x184e53(_0x4521ef);});})['catch'](function(_0x427931){_0x19ecdd(_0x427931);});});}
\ No newline at end of file
index fd4848b..9edaaaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59f4=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x59f4,0x14f));var _0x459f=function(_0x1d1d09,_0x504d77){_0x1d1d09=_0x1d1d09-0x0;var _0x8827e=_0x59f4[_0x1d1d09];return _0x8827e;};'use strict';var EventEmitter=require(_0x459f('0x0'));var UserNotification=require(_0x459f('0x1'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x459f('0x2')](0x0);var events={'afterCreate':_0x459f('0x3'),'afterUpdate':_0x459f('0x4'),'afterDestroy':_0x459f('0x5')};function emitEvent(_0x49ddaf){return function(_0x42386f,_0x1dd117,_0xc40972){UserNotificationEvents[_0x459f('0x6')](_0x49ddaf+':'+_0x42386f['id'],_0x42386f);UserNotificationEvents[_0x459f('0x6')](_0x49ddaf,_0x42386f);_0xc40972(null);};}for(var e in events){if(events[_0x459f('0x7')](e)){var event=events[e];UserNotification[_0x459f('0x8')](e,emitEvent(event));}}module[_0x459f('0x9')]=UserNotificationEvents;
\ No newline at end of file
+var _0xc523=['../../mysqldb','UserNotification','save','remove','emit','hasOwnProperty','hook'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xc523,0x173));var _0x3c52=function(_0x54b062,_0x264bb5){_0x54b062=_0x54b062-0x0;var _0x255e41=_0xc523[_0x54b062];return _0x255e41;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0x3c52('0x0'))['db'][_0x3c52('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3c52('0x2'),'afterUpdate':'update','afterDestroy':_0x3c52('0x3')};function emitEvent(_0x3eb9dc){return function(_0x4e1e2a,_0x3dd19f,_0x1fe171){UserNotificationEvents['emit'](_0x3eb9dc+':'+_0x4e1e2a['id'],_0x4e1e2a);UserNotificationEvents[_0x3c52('0x4')](_0x3eb9dc,_0x4e1e2a);_0x1fe171(null);};}for(var e in events){if(events[_0x3c52('0x5')](e)){var event=events[e];UserNotification[_0x3c52('0x6')](e,emitEvent(event));}}module['exports']=UserNotificationEvents;
\ No newline at end of file
index 266947e..cf5685c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb043=['rimraf','../../config/environment','./userNotification.attributes','exports','UserNotification','userNotifications','utf8mb4','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x425213,_0x5b0300){var _0x4c2ba2=function(_0x2bf696){while(--_0x2bf696){_0x425213['push'](_0x425213['shift']());}};_0x4c2ba2(++_0x5b0300);}(_0xb043,0xa1));var _0x3b04=function(_0x1e172a,_0x52102b){_0x1e172a=_0x1e172a-0x0;var _0x96338b=_0xb043[_0x1e172a];return _0x96338b;};'use strict';var _=require(_0x3b04('0x0'));var util=require('util');var logger=require(_0x3b04('0x1'))(_0x3b04('0x2'));var moment=require(_0x3b04('0x3'));var BPromise=require(_0x3b04('0x4'));var rp=require(_0x3b04('0x5'));var fs=require('fs');var path=require(_0x3b04('0x6'));var rimraf=require(_0x3b04('0x7'));var config=require(_0x3b04('0x8'));var attributes=require(_0x3b04('0x9'));module[_0x3b04('0xa')]=function(_0x1203f2,_0x378530){return _0x1203f2['define'](_0x3b04('0xb'),attributes,{'tableName':_0x3b04('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3b04('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x8810=['exports','define','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','./userNotification.attributes'];(function(_0x3841e5,_0x5050d2){var _0x4c94e1=function(_0x47eb16){while(--_0x47eb16){_0x3841e5['push'](_0x3841e5['shift']());}};_0x4c94e1(++_0x5050d2);}(_0x8810,0x7e));var _0x0881=function(_0x4d1fd1,_0x484bf6){_0x4d1fd1=_0x4d1fd1-0x0;var _0x4edf47=_0x8810[_0x4d1fd1];return _0x4edf47;};'use strict';var _=require(_0x0881('0x0'));var util=require(_0x0881('0x1'));var logger=require(_0x0881('0x2'))(_0x0881('0x3'));var moment=require(_0x0881('0x4'));var BPromise=require(_0x0881('0x5'));var rp=require(_0x0881('0x6'));var fs=require('fs');var path=require(_0x0881('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x0881('0x8'));module[_0x0881('0x9')]=function(_0x34e493,_0x37b1dc){return _0x34e493[_0x0881('0xa')](_0x0881('0xb'),attributes,{'tableName':_0x0881('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0881('0xd'),'collate':_0x0881('0xe')});};
\ No newline at end of file
index b9fcc40..c9aeed1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x667b=['info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./userNotification.socket','request','then'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x667b,0xa5));var _0xb667=function(_0x250071,_0x301941){_0x250071=_0x250071-0x0;var _0x34e574=_0x667b[_0x250071];return _0x34e574;};'use strict';var _=require(_0xb667('0x0'));var util=require('util');var moment=require(_0xb667('0x1'));var BPromise=require(_0xb667('0x2'));var rs=require(_0xb667('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb667('0x4'))['db'];var utils=require(_0xb667('0x5'));var logger=require(_0xb667('0x6'))(_0xb667('0x7'));var config=require(_0xb667('0x8'));var jayson=require(_0xb667('0x9'));var client=jayson[_0xb667('0xa')][_0xb667('0xb')]({'port':0x232a});config[_0xb667('0xc')]=_['defaults'](config[_0xb667('0xc')],{'host':_0xb667('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb667('0xc')]));require(_0xb667('0xe'))['register'](socket);function respondWithRpcPromise(_0x4c485b,_0x380beb,_0x16273f){return new BPromise(function(_0x32642c,_0x3f2b42){return client[_0xb667('0xf')](_0x4c485b,_0x16273f)[_0xb667('0x10')](function(_0x2f5034){logger[_0xb667('0x11')](_0xb667('0x12'),_0x380beb,_0xb667('0x13'));logger[_0xb667('0x14')](_0xb667('0x15'),_0x380beb,_0xb667('0x13'),JSON['stringify'](_0x2f5034));if(_0x2f5034[_0xb667('0x16')]){if(_0x2f5034['error'][_0xb667('0x17')]===0x1f4){logger[_0xb667('0x16')](_0xb667('0x12'),_0x380beb,_0x2f5034[_0xb667('0x16')]['message']);return _0x3f2b42(_0x2f5034[_0xb667('0x16')][_0xb667('0x18')]);}logger[_0xb667('0x16')](_0xb667('0x12'),_0x380beb,_0x2f5034[_0xb667('0x16')]['message']);return _0x32642c(_0x2f5034[_0xb667('0x16')][_0xb667('0x18')]);}else{logger[_0xb667('0x11')]('UserNotification,\x20%s,\x20%s',_0x380beb,_0xb667('0x13'));_0x32642c(_0x2f5034['result'][_0xb667('0x18')]);}})[_0xb667('0x19')](function(_0xbbb522){logger[_0xb667('0x16')]('UserNotification,\x20%s,\x20%s',_0x380beb,_0xbbb522);_0x3f2b42(_0xbbb522);});});}
\ No newline at end of file
+var _0xb61a=['stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','register','request','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s'];(function(_0x234719,_0x23ddef){var _0x34e5af=function(_0x17cb82){while(--_0x17cb82){_0x234719['push'](_0x234719['shift']());}};_0x34e5af(++_0x23ddef);}(_0xb61a,0x1b9));var _0xab61=function(_0x15da3a,_0x1313d7){_0x15da3a=_0x15da3a-0x0;var _0x24ae9d=_0xb61a[_0x15da3a];return _0x24ae9d;};'use strict';var _=require(_0xab61('0x0'));var util=require(_0xab61('0x1'));var moment=require('moment');var BPromise=require(_0xab61('0x2'));var rs=require(_0xab61('0x3'));var fs=require('fs');var Redis=require(_0xab61('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xab61('0x5'))(_0xab61('0x6'));var config=require(_0xab61('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xab61('0x8')][_0xab61('0x9')]({'port':0x232a});config[_0xab61('0xa')]=_[_0xab61('0xb')](config['redis'],{'host':_0xab61('0xc'),'port':0x18eb});var socket=require(_0xab61('0xd'))(new Redis(config['redis']));require(_0xab61('0xe'))[_0xab61('0xf')](socket);function respondWithRpcPromise(_0x338c2c,_0x165bca,_0x2ad755){return new BPromise(function(_0x562cfc,_0x4a12ef){return client[_0xab61('0x10')](_0x338c2c,_0x2ad755)[_0xab61('0x11')](function(_0x37126f){logger[_0xab61('0x12')](_0xab61('0x13'),_0x165bca,_0xab61('0x14'));logger[_0xab61('0x15')](_0xab61('0x16'),_0x165bca,_0xab61('0x14'),JSON[_0xab61('0x17')](_0x37126f));if(_0x37126f[_0xab61('0x18')]){if(_0x37126f[_0xab61('0x18')][_0xab61('0x19')]===0x1f4){logger[_0xab61('0x18')](_0xab61('0x13'),_0x165bca,_0x37126f['error'][_0xab61('0x1a')]);return _0x4a12ef(_0x37126f[_0xab61('0x18')][_0xab61('0x1a')]);}logger[_0xab61('0x18')](_0xab61('0x13'),_0x165bca,_0x37126f[_0xab61('0x18')][_0xab61('0x1a')]);return _0x562cfc(_0x37126f['error']['message']);}else{logger[_0xab61('0x12')](_0xab61('0x13'),_0x165bca,_0xab61('0x14'));_0x562cfc(_0x37126f[_0xab61('0x1b')][_0xab61('0x1a')]);}})[_0xab61('0x1c')](function(_0x24bff3){logger['error'](_0xab61('0x13'),_0x165bca,_0x24bff3);_0x4a12ef(_0x24bff3);});});}
\ No newline at end of file
index bf2fb4f..27d61f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x272c=['./userNotification.events','save','remove','update','emit','length'];(function(_0x43b584,_0x20a6bd){var _0x48f27b=function(_0x1eeb77){while(--_0x1eeb77){_0x43b584['push'](_0x43b584['shift']());}};_0x48f27b(++_0x20a6bd);}(_0x272c,0x180));var _0xc272=function(_0x4511d1,_0x11a848){_0x4511d1=_0x4511d1-0x0;var _0x1493f5=_0x272c[_0x4511d1];return _0x1493f5;};'use strict';var UserNotificationEvents=require(_0xc272('0x0'));var events=[_0xc272('0x1'),_0xc272('0x2'),_0xc272('0x3')];function createListener(_0x2aaa5a,_0x1f54e4){return function(_0x18e73d){_0x1f54e4[_0xc272('0x4')](_0x2aaa5a,_0x18e73d);};}function removeListener(_0x2ffc22,_0x2f6cc9){return function(){UserNotificationEvents['removeListener'](_0x2ffc22,_0x2f6cc9);};}exports['register']=function(_0x2583ab){for(var _0x30adeb=0x0,_0x5d2759=events[_0xc272('0x5')];_0x30adeb<_0x5d2759;_0x30adeb++){var _0x1293a5=events[_0x30adeb];var _0x11253c=createListener('userNotification:'+_0x1293a5,_0x2583ab);UserNotificationEvents['on'](_0x1293a5,_0x11253c);}};
\ No newline at end of file
+var _0x7984=['./userNotification.events','save','update','userNotification:'];(function(_0x1f746b,_0x31c65f){var _0x4348ee=function(_0x376f7c){while(--_0x376f7c){_0x1f746b['push'](_0x1f746b['shift']());}};_0x4348ee(++_0x31c65f);}(_0x7984,0xac));var _0x4798=function(_0x32de0a,_0x3a98b3){_0x32de0a=_0x32de0a-0x0;var _0x376921=_0x7984[_0x32de0a];return _0x376921;};'use strict';var UserNotificationEvents=require(_0x4798('0x0'));var events=[_0x4798('0x1'),'remove',_0x4798('0x2')];function createListener(_0x19f494,_0x1203f8){return function(_0x28df02){_0x1203f8['emit'](_0x19f494,_0x28df02);};}function removeListener(_0x26de54,_0x5ae34d){return function(){UserNotificationEvents['removeListener'](_0x26de54,_0x5ae34d);};}exports['register']=function(_0x43f2d5){for(var _0x565f3d=0x0,_0x5777cc=events['length'];_0x565f3d<_0x5777cc;_0x565f3d++){var _0x2ca19d=events[_0x565f3d];var _0x7ba9d7=createListener(_0x4798('0x3')+_0x2ca19d,_0x43f2d5);UserNotificationEvents['on'](_0x2ca19d,_0x7ba9d7);}};
\ No newline at end of file
index fd0a92c..7d89240 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x34f34c,_0x3b5652){var _0x3ed04a=function(_0x34d07e){while(--_0x34d07e){_0x34f34c['push'](_0x34f34c['shift']());}};_0x3ed04a(++_0x3b5652);}(_0x70e0,0x17b));var _0x070e=function(_0x3da359,_0x302259){_0x3da359=_0x3da359-0x0;var _0x4b9f11=_0x70e0[_0x3da359];return _0x4b9f11;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x3f6fe6,_0x52243c){var _0xebbe7f=function(_0x49adff){while(--_0x49adff){_0x3f6fe6['push'](_0x3f6fe6['shift']());}};_0xebbe7f(++_0x52243c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xa9e0[_0x24237f];return _0x48298e;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index cae646a..cf69434 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0810=['exports','INTEGER','sequelize'];(function(_0x3c8e9a,_0x384306){var _0x2d4c57=function(_0x43d408){while(--_0x43d408){_0x3c8e9a['push'](_0x3c8e9a['shift']());}};_0x2d4c57(++_0x384306);}(_0x0810,0x95));var _0x0081=function(_0xa6f46e,_0x24f3ae){_0xa6f46e=_0xa6f46e-0x0;var _0x5374fe=_0x0810[_0xa6f46e];return _0x5374fe;};'use strict';var Sequelize=require(_0x0081('0x0'));module[_0x0081('0x1')]={'penalty':{'type':Sequelize[_0x0081('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6170=['sequelize','exports','INTEGER'];(function(_0x2a26be,_0x1ee4fb){var _0x4de977=function(_0x3f9713){while(--_0x3f9713){_0x2a26be['push'](_0x2a26be['shift']());}};_0x4de977(++_0x1ee4fb);}(_0x6170,0x18f));var _0x0617=function(_0x4ff1d9,_0x371388){_0x4ff1d9=_0x4ff1d9-0x0;var _0x5d040a=_0x6170[_0x4ff1d9];return _0x5d040a;};'use strict';var Sequelize=require(_0x0617('0x0'));module[_0x0617('0x1')]={'penalty':{'type':Sequelize[_0x0617('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 3b966ab..4414898 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf19a=['UserOpenchannelQueue','user_has_openchannel_queues','../../config/logger','moment','bluebird','request-promise','../../config/environment','./userOpenchannelQueue.attributes','exports','define'];(function(_0x8a217e,_0x450bfc){var _0x3fc350=function(_0x55ed99){while(--_0x55ed99){_0x8a217e['push'](_0x8a217e['shift']());}};_0x3fc350(++_0x450bfc);}(_0xf19a,0x156));var _0xaf19=function(_0x36641f,_0x1de996){_0x36641f=_0x36641f-0x0;var _0x264197=_0xf19a[_0x36641f];return _0x264197;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xaf19('0x0'))('api');var moment=require(_0xaf19('0x1'));var BPromise=require(_0xaf19('0x2'));var rp=require(_0xaf19('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xaf19('0x4'));var attributes=require(_0xaf19('0x5'));module[_0xaf19('0x6')]=function(_0x31103c,_0x383562){return _0x31103c[_0xaf19('0x7')](_0xaf19('0x8'),attributes,{'tableName':_0xaf19('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x47fb=['UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','api','moment','request-promise','../../config/environment','./userOpenchannelQueue.attributes','exports','define'];(function(_0x47cc05,_0x40c9b4){var _0x2cc67f=function(_0xb95689){while(--_0xb95689){_0x47cc05['push'](_0x47cc05['shift']());}};_0x2cc67f(++_0x40c9b4);}(_0x47fb,0xda));var _0xb47f=function(_0x10bfb8,_0x6fb2d7){_0x10bfb8=_0x10bfb8-0x0;var _0xc97d1a=_0x47fb[_0x10bfb8];return _0xc97d1a;};'use strict';var _=require(_0xb47f('0x0'));var util=require(_0xb47f('0x1'));var logger=require(_0xb47f('0x2'))(_0xb47f('0x3'));var moment=require(_0xb47f('0x4'));var BPromise=require('bluebird');var rp=require(_0xb47f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb47f('0x6'));var attributes=require(_0xb47f('0x7'));module[_0xb47f('0x8')]=function(_0x3062ee,_0x2068d8){return _0x3062ee[_0xb47f('0x9')](_0xb47f('0xa'),attributes,{'tableName':_0xb47f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3f47152..3884e2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd62d=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis'];(function(_0xb6dd32,_0x3526af){var _0x7bb42f=function(_0x5a899d){while(--_0x5a899d){_0xb6dd32['push'](_0xb6dd32['shift']());}};_0x7bb42f(++_0x3526af);}(_0xd62d,0x1c7));var _0xdd62=function(_0x2de968,_0x54aa58){_0x2de968=_0x2de968-0x0;var _0x6c8e59=_0xd62d[_0x2de968];return _0x6c8e59;};'use strict';var _=require(_0xdd62('0x0'));var util=require('util');var moment=require(_0xdd62('0x1'));var BPromise=require(_0xdd62('0x2'));var rs=require(_0xdd62('0x3'));var fs=require('fs');var Redis=require(_0xdd62('0x4'));var db=require(_0xdd62('0x5'))['db'];var utils=require(_0xdd62('0x6'));var logger=require(_0xdd62('0x7'))(_0xdd62('0x8'));var config=require(_0xdd62('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xdd62('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x29ddc3,_0xae24b3,_0x3f4ac3){return new BPromise(function(_0x15ab53,_0x41cba5){return client[_0xdd62('0xb')](_0x29ddc3,_0x3f4ac3)[_0xdd62('0xc')](function(_0x2b2b72){logger['info'](_0xdd62('0xd'),_0xae24b3,_0xdd62('0xe'));logger[_0xdd62('0xf')]('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0xae24b3,_0xdd62('0xe'),JSON[_0xdd62('0x10')](_0x2b2b72));if(_0x2b2b72[_0xdd62('0x11')]){if(_0x2b2b72[_0xdd62('0x11')][_0xdd62('0x12')]===0x1f4){logger[_0xdd62('0x11')](_0xdd62('0xd'),_0xae24b3,_0x2b2b72[_0xdd62('0x11')]['message']);return _0x41cba5(_0x2b2b72[_0xdd62('0x11')][_0xdd62('0x13')]);}logger[_0xdd62('0x11')](_0xdd62('0xd'),_0xae24b3,_0x2b2b72['error'][_0xdd62('0x13')]);return _0x15ab53(_0x2b2b72[_0xdd62('0x11')]['message']);}else{logger[_0xdd62('0x14')](_0xdd62('0xd'),_0xae24b3,_0xdd62('0xe'));_0x15ab53(_0x2b2b72[_0xdd62('0x15')][_0xdd62('0x13')]);}})[_0xdd62('0x16')](function(_0x1b9be5){logger[_0xdd62('0x11')](_0xdd62('0xd'),_0xae24b3,_0x1b9be5);_0x41cba5(_0x1b9be5);});});}
\ No newline at end of file
+var _0x0749=['code','error','message','result','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','UserOpenchannelQueue,\x20%s,\x20%s','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x334541,_0x1dad11){var _0x557dc2=function(_0x114da8){while(--_0x114da8){_0x334541['push'](_0x334541['shift']());}};_0x557dc2(++_0x1dad11);}(_0x0749,0x122));var _0x9074=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x0749[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0x9074('0x0'));var util=require(_0x9074('0x1'));var moment=require(_0x9074('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9074('0x3'));var db=require(_0x9074('0x4'))['db'];var utils=require(_0x9074('0x5'));var logger=require(_0x9074('0x6'))(_0x9074('0x7'));var config=require('../../config/environment');var jayson=require(_0x9074('0x8'));var client=jayson[_0x9074('0x9')][_0x9074('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x6c0680,_0x55d7a9,_0x896a98){return new BPromise(function(_0x32cac3,_0x2c94f4){return client[_0x9074('0xb')](_0x6c0680,_0x896a98)[_0x9074('0xc')](function(_0x1a6493){logger[_0x9074('0xd')](_0x9074('0xe'),_0x55d7a9,'request\x20sent');logger['debug'](_0x9074('0xf'),_0x55d7a9,_0x9074('0x10'),JSON[_0x9074('0x11')](_0x1a6493));if(_0x1a6493['error']){if(_0x1a6493['error'][_0x9074('0x12')]===0x1f4){logger[_0x9074('0x13')](_0x9074('0xe'),_0x55d7a9,_0x1a6493[_0x9074('0x13')][_0x9074('0x14')]);return _0x2c94f4(_0x1a6493[_0x9074('0x13')]['message']);}logger[_0x9074('0x13')](_0x9074('0xe'),_0x55d7a9,_0x1a6493[_0x9074('0x13')][_0x9074('0x14')]);return _0x32cac3(_0x1a6493[_0x9074('0x13')][_0x9074('0x14')]);}else{logger[_0x9074('0xd')](_0x9074('0xe'),_0x55d7a9,'request\x20sent');_0x32cac3(_0x1a6493[_0x9074('0x15')][_0x9074('0x14')]);}})['catch'](function(_0x1ba1ff){logger[_0x9074('0x13')](_0x9074('0xe'),_0x55d7a9,_0x1ba1ff);_0x2c94f4(_0x1ba1ff);});});}
\ No newline at end of file
index 2914d7a..f246adc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a88=['fs-extra','../../components/interaction/service','get','isAuthenticated','describe','show','getSections','/:id/resources','getResources','post','create','/:id/sections','addResources','/:id','update','delete','removeSections','removeResources','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x6a88,0xa9));var _0x86a8=function(_0x29caf2,_0x21e2fb){_0x29caf2=_0x29caf2-0x0;var _0x31d5f4=_0x6a88[_0x29caf2];return _0x31d5f4;};'use strict';var multer=require(_0x86a8('0x0'));var util=require(_0x86a8('0x1'));var path=require(_0x86a8('0x2'));var timeout=require(_0x86a8('0x3'));var express=require(_0x86a8('0x4'));var router=express[_0x86a8('0x5')]();var fs_extra=require(_0x86a8('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x86a8('0x7'));var config=require('../../config/environment');var controller=require('./userProfile.controller');router[_0x86a8('0x8')]('/',auth[_0x86a8('0x9')](),controller['index']);router[_0x86a8('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x86a8('0xa')]);router[_0x86a8('0x8')]('/:id',auth[_0x86a8('0x9')](),controller[_0x86a8('0xb')]);router['get']('/:id/sections',auth[_0x86a8('0x9')](),controller[_0x86a8('0xc')]);router[_0x86a8('0x8')](_0x86a8('0xd'),auth[_0x86a8('0x9')](),controller[_0x86a8('0xe')]);router[_0x86a8('0xf')]('/',auth[_0x86a8('0x9')](),controller[_0x86a8('0x10')]);router[_0x86a8('0xf')]('/:id/clone',auth[_0x86a8('0x9')](),controller['clone']);router['post'](_0x86a8('0x11'),auth[_0x86a8('0x9')](),controller['addSections']);router['post']('/:id/resources',auth[_0x86a8('0x9')](),controller[_0x86a8('0x12')]);router['put'](_0x86a8('0x13'),auth[_0x86a8('0x9')](),controller[_0x86a8('0x14')]);router[_0x86a8('0x15')]('/:id',auth[_0x86a8('0x9')](),controller['destroy']);router[_0x86a8('0x15')](_0x86a8('0x11'),auth[_0x86a8('0x9')](),controller[_0x86a8('0x16')]);router[_0x86a8('0x15')](_0x86a8('0xd'),auth[_0x86a8('0x9')](),controller[_0x86a8('0x17')]);module[_0x86a8('0x18')]=router;
\ No newline at end of file
+var _0x52ad=['../../config/environment','./userProfile.controller','get','isAuthenticated','index','/describe','describe','show','getSections','/:id/resources','getResources','create','post','/:id/clone','clone','/:id/sections','addSections','addResources','put','/:id','update','delete','destroy','removeSections','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x498948,_0x25b505){var _0x4e3bdf=function(_0x1aec5b){while(--_0x1aec5b){_0x498948['push'](_0x498948['shift']());}};_0x4e3bdf(++_0x25b505);}(_0x52ad,0x1d8));var _0xd52a=function(_0x1be88c,_0x46495b){_0x1be88c=_0x1be88c-0x0;var _0x5e550a=_0x52ad[_0x1be88c];return _0x5e550a;};'use strict';var multer=require(_0xd52a('0x0'));var util=require(_0xd52a('0x1'));var path=require(_0xd52a('0x2'));var timeout=require(_0xd52a('0x3'));var express=require('express');var router=express[_0xd52a('0x4')]();var fs_extra=require(_0xd52a('0x5'));var auth=require(_0xd52a('0x6'));var interaction=require(_0xd52a('0x7'));var config=require(_0xd52a('0x8'));var controller=require(_0xd52a('0x9'));router[_0xd52a('0xa')]('/',auth[_0xd52a('0xb')](),controller[_0xd52a('0xc')]);router['get'](_0xd52a('0xd'),auth[_0xd52a('0xb')](),controller[_0xd52a('0xe')]);router[_0xd52a('0xa')]('/:id',auth[_0xd52a('0xb')](),controller[_0xd52a('0xf')]);router['get']('/:id/sections',auth[_0xd52a('0xb')](),controller[_0xd52a('0x10')]);router[_0xd52a('0xa')](_0xd52a('0x11'),auth[_0xd52a('0xb')](),controller[_0xd52a('0x12')]);router['post']('/',auth[_0xd52a('0xb')](),controller[_0xd52a('0x13')]);router[_0xd52a('0x14')](_0xd52a('0x15'),auth[_0xd52a('0xb')](),controller[_0xd52a('0x16')]);router[_0xd52a('0x14')](_0xd52a('0x17'),auth[_0xd52a('0xb')](),controller[_0xd52a('0x18')]);router[_0xd52a('0x14')](_0xd52a('0x11'),auth[_0xd52a('0xb')](),controller[_0xd52a('0x19')]);router[_0xd52a('0x1a')](_0xd52a('0x1b'),auth[_0xd52a('0xb')](),controller[_0xd52a('0x1c')]);router[_0xd52a('0x1d')](_0xd52a('0x1b'),auth[_0xd52a('0xb')](),controller[_0xd52a('0x1e')]);router[_0xd52a('0x1d')](_0xd52a('0x17'),auth[_0xd52a('0xb')](),controller[_0xd52a('0x1f')]);router['delete']('/:id/resources',auth[_0xd52a('0xb')](),controller['removeResources']);module['exports']=router;
\ No newline at end of file
index dc38dfa..dd43885 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x747f=['exports','STRING','name','setDataValue','crudPermissions','join','getDataValue','split','BOOLEAN','sequelize'];(function(_0x2a7b8e,_0x50ffce){var _0x29b5c8=function(_0x131fe0){while(--_0x131fe0){_0x2a7b8e['push'](_0x2a7b8e['shift']());}};_0x29b5c8(++_0x50ffce);}(_0x747f,0xa9));var _0xf747=function(_0x47e48c,_0xca32a8){_0x47e48c=_0x47e48c-0x0;var _0x4288e9=_0x747f[_0x47e48c];return _0x4288e9;};'use strict';var Sequelize=require(_0xf747('0x0'));module[_0xf747('0x1')]={'name':{'type':Sequelize[_0xf747('0x2')],'allowNull':![],'unique':_0xf747('0x3')},'crudPermissions':{'type':Sequelize[_0xf747('0x2')],'set':function(_0x40b5b5){this[_0xf747('0x4')](_0xf747('0x5'),_0x40b5b5?_0x40b5b5[_0xf747('0x6')](''):[]);},'get':function(){return this[_0xf747('0x7')](_0xf747('0x5'))?this[_0xf747('0x7')](_0xf747('0x5'))[_0xf747('0x8')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xf747('0x9')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xf747('0x9')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xf747('0x9')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xf747('0x9')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x6381=['sequelize','STRING','name','setDataValue','crudPermissions','join','getDataValue','split','BOOLEAN'];(function(_0xf26d40,_0x2f4f46){var _0x50b68c=function(_0x10aa58){while(--_0x10aa58){_0xf26d40['push'](_0xf26d40['shift']());}};_0x50b68c(++_0x2f4f46);}(_0x6381,0xab));var _0x1638=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6381[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x1638('0x0'));module['exports']={'name':{'type':Sequelize[_0x1638('0x1')],'allowNull':![],'unique':_0x1638('0x2')},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x3760b7){this[_0x1638('0x3')](_0x1638('0x4'),_0x3760b7?_0x3760b7[_0x1638('0x5')](''):[]);},'get':function(){return this[_0x1638('0x6')](_0x1638('0x4'))?this['getDataValue'](_0x1638('0x4'))[_0x1638('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x1638('0x1')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x1638('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x1638('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x1638('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x1638('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x1638('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x1638('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index 6f50a12..cfa2e7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf34f=['querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','UserProfile','include','findAll','catch','show','params','find','create','clone','includeAll','get','omit','updatedAt','crudPermissions','body','createdAt','sequelize','UserProfileSection','each','autoAssociation','UserProfileResource','userProfileId','Resources','destroy','describe','addSections','sectionId','removeSections','enabled','includes','isEmpty','subsections','push','findOne','Dashboard','forEach','Plugin','resourceId','transaction','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','eml-format','zip-dir','request-promise','bluebird','mustache','util','sox','ejs','lodash','crypto','jsforce'];(function(_0x5da651,_0x4fd5d5){var _0x3cd331=function(_0x982a85){while(--_0x982a85){_0x5da651['push'](_0x5da651['shift']());}};_0x3cd331(++_0x4fd5d5);}(_0xf34f,0x64));var _0xff34=function(_0x24d42b,_0x29fd7){_0x24d42b=_0x24d42b-0x0;var _0x33f943=_0xf34f[_0x24d42b];return _0x33f943;};'use strict';var emlformat=require(_0xff34('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xff34('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xff34('0x2'));var moment=require('moment');var BPromise=require(_0xff34('0x3'));var Mustache=require(_0xff34('0x4'));var util=require(_0xff34('0x5'));var path=require('path');var sox=require(_0xff34('0x6'));var csv=require('to-csv');var ejs=require(_0xff34('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xff34('0x8'));var squel=require('squel');var crypto=require(_0xff34('0x9'));var jsforce=require(_0xff34('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xff34('0xb'));var Papa=require(_0xff34('0xc'));var Redis=require(_0xff34('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xff34('0xe'));var as=require(_0xff34('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xff34('0x10'))(_0xff34('0x11'));var utils=require(_0xff34('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xff34('0x13'));var db=require(_0xff34('0x14'))['db'];config[_0xff34('0x15')]=_[_0xff34('0x16')](config[_0xff34('0x15')],{'host':_0xff34('0x17'),'port':0x18eb});var socket=require(_0xff34('0x18'))(new Redis(config[_0xff34('0x15')]));require(_0xff34('0x19'))[_0xff34('0x1a')](socket);function respondWithStatusCode(_0x2fe6b1,_0x1a88af){_0x1a88af=_0x1a88af||0xcc;return function(_0xcba1c3){if(_0xcba1c3){return _0x2fe6b1[_0xff34('0x1b')](_0x1a88af);}return _0x2fe6b1[_0xff34('0x1c')](_0x1a88af)[_0xff34('0x1d')]();};}function respondWithResult(_0x23023f,_0x3b7af5){_0x3b7af5=_0x3b7af5||0xc8;return function(_0x31fdfd){if(_0x31fdfd){return _0x23023f[_0xff34('0x1c')](_0x3b7af5)['json'](_0x31fdfd);}};}function respondWithFilteredResult(_0x95a2b0,_0x53bcbe){return function(_0x2fe34c){if(_0x2fe34c){var _0x50bfa5=typeof _0x53bcbe[_0xff34('0x1e')]===_0xff34('0x1f')&&typeof _0x53bcbe['limit']==='undefined';var _0x1a3a6d=_0x2fe34c[_0xff34('0x20')];var _0x2b967f=_0x50bfa5?0x0:_0x53bcbe[_0xff34('0x1e')];var _0x2e96cb=_0x50bfa5?_0x2fe34c[_0xff34('0x20')]:_0x53bcbe[_0xff34('0x1e')]+_0x53bcbe[_0xff34('0x21')];var _0x2b0891;if(_0x2e96cb>=_0x1a3a6d){_0x2e96cb=_0x1a3a6d;_0x2b0891=0xc8;}else{_0x2b0891=0xce;}_0x95a2b0[_0xff34('0x1c')](_0x2b0891);return _0x95a2b0[_0xff34('0x22')](_0xff34('0x23'),_0x2b967f+'-'+_0x2e96cb+'/'+_0x1a3a6d)[_0xff34('0x24')](_0x2fe34c);}return null;};}function patchUpdates(_0x244e8f){return function(_0x43ea3b){try{jsonpatch[_0xff34('0x25')](_0x43ea3b,_0x244e8f,!![]);}catch(_0x2a988d){return BPromise[_0xff34('0x26')](_0x2a988d);}return _0x43ea3b[_0xff34('0x27')]();};}function saveUpdates(_0x1bbcff,_0x2fde63){return function(_0x48cd5d){if(_0x48cd5d){return _0x48cd5d[_0xff34('0x28')](_0x1bbcff)[_0xff34('0x29')](function(_0x66df01){return _0x66df01;});}return null;};}function removeEntity(_0x266abb,_0x147b68){return function(_0x5dd28d){if(_0x5dd28d){return _0x5dd28d['destroy']()[_0xff34('0x29')](function(){_0x266abb[_0xff34('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x284696,_0x119c88){return function(_0x206dc3){if(!_0x206dc3){_0x284696['sendStatus'](0x194);}return _0x206dc3;};}function handleError(_0x20ca49,_0x52629f){_0x52629f=_0x52629f||0x1f4;return function(_0x3939fa){logger[_0xff34('0x2a')](_0x3939fa[_0xff34('0x2b')]);if(_0x3939fa['name']){delete _0x3939fa[_0xff34('0x2c')];}_0x20ca49[_0xff34('0x1c')](_0x52629f)[_0xff34('0x2d')](_0x3939fa);};}exports['index']=function(_0x2acdfc,_0x140a50){var _0x2294f1={},_0x22613a={},_0x1050de={'count':0x0,'rows':[]};var _0x212097=_['map'](db['UserProfile'][_0xff34('0x2e')],function(_0x58b12e){return{'name':_0x58b12e[_0xff34('0x2f')],'type':_0x58b12e[_0xff34('0x30')]['key']};});_0x22613a[_0xff34('0x31')]=_[_0xff34('0x32')](_0x212097,_0xff34('0x2c'));_0x22613a[_0xff34('0x33')]=_[_0xff34('0x34')](_0x2acdfc[_0xff34('0x33')]);_0x22613a[_0xff34('0x35')]=_[_0xff34('0x36')](_0x22613a[_0xff34('0x31')],_0x22613a['query']);_0x2294f1[_0xff34('0x37')]=_['intersection'](_0x22613a[_0xff34('0x31')],qs[_0xff34('0x38')](_0x2acdfc['query']['fields']));_0x2294f1[_0xff34('0x37')]=_0x2294f1[_0xff34('0x37')][_0xff34('0x39')]?_0x2294f1[_0xff34('0x37')]:_0x22613a[_0xff34('0x31')];if(!_0x2acdfc['query'][_0xff34('0x3a')](_0xff34('0x3b'))){_0x2294f1['limit']=qs[_0xff34('0x21')](_0x2acdfc[_0xff34('0x33')]['limit']);_0x2294f1[_0xff34('0x1e')]=qs['offset'](_0x2acdfc[_0xff34('0x33')][_0xff34('0x1e')]);}_0x2294f1['order']=qs[_0xff34('0x3c')](_0x2acdfc[_0xff34('0x33')][_0xff34('0x3c')]);_0x2294f1[_0xff34('0x3d')]=qs[_0xff34('0x35')](_[_0xff34('0x3e')](_0x2acdfc[_0xff34('0x33')],_0x22613a['filters']),_0x212097);if(_0x2acdfc['query'][_0xff34('0x3f')]){_0x2294f1[_0xff34('0x3d')]=_['merge'](_0x2294f1[_0xff34('0x3d')],{'$or':_[_0xff34('0x32')](_0x212097,function(_0x248e7e){if(_0x248e7e[_0xff34('0x30')]!==_0xff34('0x40')){var _0x12a4ff={};_0x12a4ff[_0x248e7e[_0xff34('0x2c')]]={'$like':'%'+_0x2acdfc[_0xff34('0x33')][_0xff34('0x3f')]+'%'};return _0x12a4ff;}})});}_0x2294f1=_[_0xff34('0x41')]({},_0x2294f1,_0x2acdfc[_0xff34('0x42')]);var _0x329146={'where':_0x2294f1[_0xff34('0x3d')]};return db[_0xff34('0x43')][_0xff34('0x20')](_0x329146)[_0xff34('0x29')](function(_0x5e33e2){_0x1050de[_0xff34('0x20')]=_0x5e33e2;if(_0x2acdfc[_0xff34('0x33')]['includeAll']){_0x2294f1[_0xff34('0x44')]=[{'all':!![]}];}return db[_0xff34('0x43')][_0xff34('0x45')](_0x2294f1);})[_0xff34('0x29')](function(_0x107c58){_0x1050de['rows']=_0x107c58;return _0x1050de;})['then'](respondWithFilteredResult(_0x140a50,_0x2294f1))[_0xff34('0x46')](handleError(_0x140a50,null));};exports[_0xff34('0x47')]=function(_0x5a1971,_0xc5f15a){var _0x236f65={'raw':![],'where':{'id':_0x5a1971[_0xff34('0x48')]['id']}},_0x44cf97={};_0x44cf97[_0xff34('0x31')]=_['keys'](db['UserProfile'][_0xff34('0x2e')]);_0x44cf97['query']=_[_0xff34('0x34')](_0x5a1971['query']);_0x44cf97[_0xff34('0x35')]=_['intersection'](_0x44cf97[_0xff34('0x31')],_0x44cf97['query']);_0x236f65[_0xff34('0x37')]=_[_0xff34('0x36')](_0x44cf97['model'],qs[_0xff34('0x38')](_0x5a1971[_0xff34('0x33')][_0xff34('0x38')]));_0x236f65[_0xff34('0x37')]=_0x236f65[_0xff34('0x37')][_0xff34('0x39')]?_0x236f65[_0xff34('0x37')]:_0x44cf97['model'];if(_0x5a1971[_0xff34('0x33')]['includeAll']){_0x236f65['include']=[{'all':!![]}];}_0x236f65=_['merge']({},_0x236f65,_0x5a1971[_0xff34('0x42')]);return db['UserProfile'][_0xff34('0x49')](_0x236f65)[_0xff34('0x29')](handleEntityNotFound(_0xc5f15a,null))[_0xff34('0x29')](respondWithResult(_0xc5f15a,null))[_0xff34('0x46')](handleError(_0xc5f15a,null));};exports['create']=function(_0x4b63c6,_0x366f66){return db[_0xff34('0x43')][_0xff34('0x4a')](_0x4b63c6['body'],{})['then'](respondWithResult(_0x366f66,0xc9))['catch'](handleError(_0x366f66,null));};exports[_0xff34('0x4b')]=function(_0x139002,_0x293f05){var _0x5f10c0={'where':{'id':_0x139002['params']['id']}},_0x17bea4={};_0x17bea4[_0xff34('0x31')]=_['keys'](db[_0xff34('0x43')][_0xff34('0x2e')]);_0x5f10c0[_0xff34('0x37')]=_['intersection'](_0x17bea4[_0xff34('0x31')],qs['fields'](_0x139002[_0xff34('0x33')][_0xff34('0x38')]));_0x5f10c0['attributes']=_0x5f10c0[_0xff34('0x37')][_0xff34('0x39')]?_0x5f10c0[_0xff34('0x37')]:_0x17bea4['model'];if(_0x139002[_0xff34('0x33')][_0xff34('0x4c')]){_0x5f10c0['include']=[{'all':!![]}];}_0x5f10c0=_[_0xff34('0x41')]({},_0x5f10c0,_0x139002[_0xff34('0x42')]);return db[_0xff34('0x43')]['find'](_0x5f10c0)[_0xff34('0x29')](handleEntityNotFound(_0x293f05,null))['then'](function(_0x12a658){if(_0x12a658){var _0x31216a=_0x12a658[_0xff34('0x4d')]({'plain':!![]});_0x31216a=qs[_0xff34('0x4e')](_0x31216a,['id','createdAt',_0xff34('0x4f'),_0xff34('0x50')]);_0x139002[_0xff34('0x51')]=_[_0xff34('0x4e')](_0x139002['body'],['id',_0xff34('0x52'),_0xff34('0x4f')]);return db[_0xff34('0x53')]['transaction'](function(_0x537411){return db['UserProfile'][_0xff34('0x4a')](_['merge'](_0x31216a,_0x139002['body']),{'include':_0x139002[_0xff34('0x33')][_0xff34('0x4c')]?[{'all':!![]}]:undefined,'transaction':_0x537411})[_0xff34('0x29')](function(_0x974e2){var _0x5abe79=_0x974e2[_0xff34('0x4d')]({'plain':!![]});return db[_0xff34('0x54')]['findAll']({'where':{'userProfileId':_0x139002[_0xff34('0x48')]['id']},'raw':!![]})[_0xff34('0x29')](function(_0x1a45da){if(_0x1a45da){return BPromise[_0xff34('0x55')](_0x1a45da,function(_0x15ccf0){return new BPromise(function(_0x2333b0,_0x1cf8f9){if(_0x15ccf0[_0xff34('0x56')]===null||_0x15ccf0[_0xff34('0x56')]===0x1)_0x2333b0(null);return db[_0xff34('0x57')][_0xff34('0x45')]({'where':{'sectionId':_0x15ccf0['id']},'raw':!![]})[_0xff34('0x29')](function(_0x28e065){var _0x220c6b=_[_0xff34('0x32')](_0x28e065,function(_0x134dd3){return qs[_0xff34('0x4e')](_0x134dd3,['id','createdAt',_0xff34('0x4f'),'sectionId']);});_0x2333b0(_0x220c6b);})['catch'](function(_0x150834){_0x1cf8f9(_0x150834);});})[_0xff34('0x29')](function(_0x490fad){var _0x4cc790=qs['omit'](_0x15ccf0,['id',_0xff34('0x52'),_0xff34('0x4f')]);_0x4cc790[_0xff34('0x58')]=_0x5abe79['id'];if(_0x490fad)_0x4cc790[_0xff34('0x59')]=_0x490fad;return _0x4cc790;})['then'](function(_0x4658eb){return db['UserProfileSection']['create'](_0x4658eb,{'include':[{'model':db['UserProfileResource'],'as':_0xff34('0x59')}],'raw':!![],'transaction':_0x537411});});})['then'](function(){return _0x5abe79;});}});});});}})[_0xff34('0x29')](respondWithResult(_0x293f05,0xc9))[_0xff34('0x46')](handleError(_0x293f05,null));};exports[_0xff34('0x28')]=function(_0x31ab78,_0x2ed6ec){if(_0x31ab78[_0xff34('0x51')]['id']){delete _0x31ab78['body']['id'];}return db[_0xff34('0x43')][_0xff34('0x49')]({'where':{'id':_0x31ab78[_0xff34('0x48')]['id']}})[_0xff34('0x29')](handleEntityNotFound(_0x2ed6ec,null))[_0xff34('0x29')](saveUpdates(_0x31ab78['body'],null))[_0xff34('0x29')](respondWithResult(_0x2ed6ec,null))[_0xff34('0x46')](handleError(_0x2ed6ec,null));};exports[_0xff34('0x5a')]=function(_0x50b11f,_0x2005df){return db[_0xff34('0x43')][_0xff34('0x49')]({'where':{'id':_0x50b11f['params']['id']}})[_0xff34('0x29')](handleEntityNotFound(_0x2005df,null))[_0xff34('0x29')](removeEntity(_0x2005df,null))[_0xff34('0x46')](handleError(_0x2005df,null));};exports[_0xff34('0x5b')]=function(_0x55217c,_0x1f5bf4){return db[_0xff34('0x43')][_0xff34('0x5b')]()['then'](respondWithResult(_0x1f5bf4,null))[_0xff34('0x46')](handleError(_0x1f5bf4,null));};exports[_0xff34('0x5c')]=function(_0x422b27,_0x35a525){var _0x4b9846=_0x422b27[_0xff34('0x51')];return db[_0xff34('0x43')][_0xff34('0x49')]({'where':{'id':_0x422b27['params']['id']}})[_0xff34('0x29')](handleEntityNotFound(_0x35a525,null))['then'](function(_0x3f6b76){if(_0x3f6b76){return db[_0xff34('0x53')]['transaction'](function(_0x2f4258){return db[_0xff34('0x54')][_0xff34('0x5a')]({'where':{'userProfileId':_0x422b27['params']['id'],'sectionId':_[_0xff34('0x32')](_0x4b9846,function(_0x197789){return _0x197789[_0xff34('0x5d')];})},'transaction':_0x2f4258})[_0xff34('0x29')](function(){var _0x25e1a0=_[_0xff34('0x32')](_0x4b9846,function(_0x3728bc){_0x3728bc['userProfileId']=_0x422b27['params']['id'];return _0x3728bc;});var _0x45461a=[];return BPromise[_0xff34('0x55')](_0x25e1a0,function(_0xc27b9b){return db[_0xff34('0x54')][_0xff34('0x4a')](_0xc27b9b,{'include':[{'model':db[_0xff34('0x57')],'as':_0xff34('0x59')}],'raw':!![],'transaction':_0x2f4258})[_0xff34('0x29')](function(_0x33d396){_0x45461a['push'](_0x33d396[_0xff34('0x4d')]({'plain':!![]}));});})[_0xff34('0x29')](function(){return _0x45461a;});});});}})[_0xff34('0x29')](function(_0x3755f7){return _0x3755f7;})[_0xff34('0x29')](respondWithResult(_0x35a525,null))[_0xff34('0x46')](handleError(_0x35a525,null));};exports[_0xff34('0x5e')]=function(_0x2ad642,_0x2bda40){var _0x4d34d3;return db[_0xff34('0x43')][_0xff34('0x49')]({'where':{'id':_0x2ad642['params']['id']},'attributes':['id',_0xff34('0x2c')]})[_0xff34('0x29')](handleEntityNotFound(_0x2bda40,null))[_0xff34('0x29')](function(_0x107a05){if(_0x107a05){_0x4d34d3=_0x107a05;return db['UserProfileSection'][_0xff34('0x5a')]({'where':{'userProfileId':_0x2ad642[_0xff34('0x48')]['id'],'sectionId':_0x2ad642['query']['ids']}});}})[_0xff34('0x29')](function(){return _0x4d34d3;})[_0xff34('0x29')](respondWithStatusCode(_0x2bda40,null))['catch'](handleError(_0x2bda40,null));};exports['getSections']=function(_0x398ff6,_0x4cc2fd){var _0x3f345c=[];var _0x49faa3=[];return db[_0xff34('0x54')]['findAll']({'where':{'userProfileId':_0x398ff6[_0xff34('0x48')]['id']},'raw':!![]})[_0xff34('0x29')](function(_0x2ef2b6){_0x3f345c=_['filter'](_0x2ef2b6,function(_0x46e545){return _0x46e545[_0xff34('0x5f')]===0x1||_[_0xff34('0x60')]([0x3eb,0x709],_0x46e545[_0xff34('0x5d')]);});if(!_[_0xff34('0x61')](_0x3f345c)){return _['map'](_0x3f345c,function(_0x3202a6){return _0x3202a6[_0xff34('0x5d')];});}else{return;}})['then'](function(_0x311e04){if(_0x311e04)_0x49faa3=_0x311e04;if(_[_0xff34('0x60')](_0x49faa3,0x64)){var _0x3ebcbf=_[_0xff34('0x49')](_0x3f345c,{'sectionId':0x64});return hasDefaultDashboard(_0x3ebcbf)['then'](function(_0x5a4de7){return _[_0xff34('0x32')](_0x3f345c,function(_0x275f83){if(_0x275f83[_0xff34('0x5d')]===0x64){_0x275f83[_0xff34('0x62')]=_0x5a4de7;}return _0x275f83;});});}else{return;}})[_0xff34('0x29')](function(_0x37d922){if(_0x37d922)_0x3f345c=_0x37d922;if(_['includes'](_0x49faa3,0x3eb)){var _0x36f8d4=_[_0xff34('0x49')](_0x3f345c,{'sectionId':0x3eb});return getCustomDashboards(_0x36f8d4)[_0xff34('0x29')](function(_0x416938){return _[_0xff34('0x32')](_0x3f345c,function(_0x576497){if(_0x36f8d4[_0xff34('0x5f')]){if(_0x576497[_0xff34('0x5d')]===0x3eb){_0x576497[_0xff34('0x62')]=_0x416938;}}else{if(_0x576497['sectionId']===0x64){_0x576497['subsections']=_0x416938;}}return _0x576497;});});}else{return;}})[_0xff34('0x29')](function(_0x373160){if(_0x373160)_0x3f345c=_0x373160;if(_[_0xff34('0x60')](_0x49faa3,0x709)){var _0x484c52=_[_0xff34('0x49')](_0x3f345c,{'sectionId':0x709});return getPlugins(_0x484c52)['then'](function(_0x365cd7){if(_0x484c52['enabled']){return _['map'](_0x3f345c,function(_0x3de81b){if(_0x3de81b[_0xff34('0x5d')]===0x709){_0x3de81b[_0xff34('0x62')]=_0x365cd7;}return _0x3de81b;});}else{var _0x16b3e9={'sectionId':0x76c,'enabled':0x1,'subsections':_0x365cd7};var _0x325d3e=_[_0xff34('0x32')](_0x3f345c);_0x325d3e[_0xff34('0x63')](_0x16b3e9);return _0x325d3e;}});}else{return;}})[_0xff34('0x29')](function(_0x533567){if(_0x533567)_0x3f345c=_0x533567;return _[_0xff34('0x3f')](_0x3f345c,['enabled',0x1]);})[_0xff34('0x29')](respondWithResult(_0x4cc2fd,null))[_0xff34('0x46')](handleError(_0x4cc2fd,null));};function hasDefaultDashboard(_0x10e143){var _0x202cc4=[0x65];return new BPromise(function(_0x31f5b3,_0x4b96b6){try{if(_0x10e143[_0xff34('0x56')]){_0x31f5b3(_0x202cc4);}else{return db[_0xff34('0x57')][_0xff34('0x64')]({'where':{'sectionId':_0x10e143['id']},'raw':!![]})[_0xff34('0x29')](function(_0x3743f9){_0x3743f9?_0x31f5b3(_0x202cc4):_0x31f5b3();});}}catch(_0x153f1e){_0x4b96b6(_0x153f1e);}});}function getCustomDashboards(_0x4e0347){var _0x260204=[];return new BPromise(function(_0x3cef7a,_0x2e8681){try{if(_0x4e0347[_0xff34('0x56')]){return db[_0xff34('0x65')][_0xff34('0x45')]({'raw':!![]})[_0xff34('0x29')](function(_0x330e3a){_0x330e3a[_0xff34('0x66')](function(_0x3d1e7b){_0x260204[_0xff34('0x63')](_0x3d1e7b['id']+0x1869f);});_0x3cef7a(_0x260204);});}else{return db[_0xff34('0x57')][_0xff34('0x45')]({'where':{'sectionId':_0x4e0347['id']},'raw':!![]})[_0xff34('0x29')](function(_0x18ef66){_0x18ef66[_0xff34('0x66')](function(_0x39fb59){_0x260204[_0xff34('0x63')](_0x39fb59['resourceId']+0x1869f);});_0x3cef7a(_0x260204);});}}catch(_0x1d05bc){_0x2e8681(_0x1d05bc);}});}function getPlugins(_0x5895de){var _0x57d971=[];return new BPromise(function(_0x197191,_0x367890){try{if(_0x5895de[_0xff34('0x56')]){return db[_0xff34('0x67')]['findAll']({'raw':!![]})[_0xff34('0x29')](function(_0xb3702b){_0xb3702b[_0xff34('0x66')](function(_0x5b88b8){_0x57d971[_0xff34('0x63')](_0x5b88b8['id']+0x15b38);});_0x197191(_0x57d971);});}else{return db[_0xff34('0x57')][_0xff34('0x45')]({'where':{'sectionId':_0x5895de['id']},'raw':!![]})[_0xff34('0x29')](function(_0x4c2ce3){_0x4c2ce3[_0xff34('0x66')](function(_0x1d4262){_0x57d971[_0xff34('0x63')](_0x1d4262[_0xff34('0x68')]+0x15b38);});_0x197191(_0x57d971);});}}catch(_0x1fb32c){_0x367890(_0x1fb32c);}});}exports['addResources']=function(_0x2f1028,_0x5ecd16){return db['UserProfile'][_0xff34('0x49')]({'where':{'id':_0x2f1028[_0xff34('0x48')]['id']}})[_0xff34('0x29')](handleEntityNotFound(_0x5ecd16,null))[_0xff34('0x29')](function(_0x72f30b){if(_0x72f30b){return db[_0xff34('0x53')][_0xff34('0x69')](function(_0x256ce8){return db[_0xff34('0x54')][_0xff34('0x45')]({'where':{'userProfileId':_0x2f1028[_0xff34('0x48')]['id']},'attributes':['id'],'raw':!![]})[_0xff34('0x29')](function(_0x1a2a4f){if(_0x1a2a4f){return db['UserProfileSection']['destroy']({'where':{'userProfileId':_0x2f1028['params']['id'],'id':_[_0xff34('0x32')](_0x1a2a4f,function(_0x363232){return _0x363232['id'];})},'transaction':_0x256ce8});}})[_0xff34('0x29')](function(_0x15b7bd){var _0x41bd33=_[_0xff34('0x32')](_0x2f1028['body'],function(_0x256469){_0x256469['userProfileId']=_0x2f1028[_0xff34('0x48')]['id'];return _0x256469;});return db[_0xff34('0x54')][_0xff34('0x6a')](_0x41bd33,{'raw':!![],'transaction':_0x256ce8});})[_0xff34('0x29')](function(_0x1cb8e8){var _0x278e24=_['filter'](_['map'](_0x1cb8e8,function(_0x3dd0b1){return _0x3dd0b1[_0xff34('0x4d')]({'plain':!![]});}),{'includeAll':![]});if(_0x278e24){return db[_0xff34('0x54')]['findAll']({'where':{'userProfileId':_0x2f1028[_0xff34('0x48')]['id'],'sectionId':_[_0xff34('0x32')](_0x278e24,function(_0x33004d){return _0x33004d[_0xff34('0x5d')];})},'attributes':['id',_0xff34('0x5d')],'raw':!![]})[_0xff34('0x29')](function(_0x461bf6){var _0x3fc825=_[_0xff34('0x32')](_0x2f1028[_0xff34('0x51')],function(_0xe7bea4){_0xe7bea4[_0xff34('0x58')]=_0x2f1028[_0xff34('0x48')]['id'];return _0xe7bea4;});return db[_0xff34('0x57')][_0xff34('0x6a')](_0x3fc825,{'raw':!![],'transaction':_0x256ce8});});}})[_0xff34('0x46')](handleError(_0x5ecd16,null));});}})['then'](function(_0x230834){var _0x416316=_[_0xff34('0x32')](_0x230834,function(_0x3bddde){return _0x3bddde['get']({'plain':!![]});});})[_0xff34('0x29')](respondWithResult(_0x5ecd16,null))[_0xff34('0x46')](handleError(_0x5ecd16,null));};exports[_0xff34('0x6b')]=function(_0x485912,_0x3edcd8,_0x4e7003){return db['UserProfile'][_0xff34('0x49')]({'where':{'id':_0x485912[_0xff34('0x48')]['id']}})[_0xff34('0x29')](handleEntityNotFound(_0x3edcd8,null))[_0xff34('0x29')](function(_0x425f30){if(_0x425f30){return _0x425f30[_0xff34('0x6b')](_0x485912[_0xff34('0x33')]['ids']);}})[_0xff34('0x29')](respondWithStatusCode(_0x3edcd8,null))[_0xff34('0x46')](handleError(_0x3edcd8,null));};exports[_0xff34('0x6c')]=function(_0x1b75ae,_0x4bb5fc){var _0x2abaf8={};if(!_0x1b75ae[_0xff34('0x33')][_0xff34('0x6d')])throw new Error(_0xff34('0x6e'));if(!_0x1b75ae[_0xff34('0x33')][_0xff34('0x3a')](_0xff34('0x3b'))){_0x2abaf8[_0xff34('0x21')]=qs[_0xff34('0x21')](_0x1b75ae[_0xff34('0x33')][_0xff34('0x21')]);_0x2abaf8[_0xff34('0x1e')]=qs['offset'](_0x1b75ae[_0xff34('0x33')]['offset']);}return db[_0xff34('0x43')][_0xff34('0x49')]({'where':{'id':_0x1b75ae[_0xff34('0x48')]['id']}})[_0xff34('0x29')](function(_0x5d3513){if(!_0x5d3513)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x1b75ae[_0xff34('0x48')]['id']);return db[_0xff34('0x43')]['getResources'](_0x1b75ae);})['then'](respondWithFilteredResult(_0x4bb5fc,_0x2abaf8))['catch'](handleError(_0x4bb5fc,null));};
\ No newline at end of file
+var _0x09df=['removeSections','ids','enabled','includes','isEmpty','subsections','Dashboard','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','fast-json-patch','bluebird','path','sox','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','index','map','UserProfile','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','type','VIRTUAL','filter','merge','options','includeAll','findAll','rows','catch','params','rawAttributes','include','find','create','body','keys','get','updatedAt','crudPermissions','createdAt','sequelize','transaction','UserProfileSection','each','autoAssociation','UserProfileResource','omit','sectionId','userProfileId','Resources','describe','addSections','push'];(function(_0x39afd1,_0x5bbdb0){var _0x2d1bab=function(_0x28cde1){while(--_0x28cde1){_0x39afd1['push'](_0x39afd1['shift']());}};_0x2d1bab(++_0x5bbdb0);}(_0x09df,0x164));var _0xf09d=function(_0x52684f,_0xff73fc){_0x52684f=_0x52684f-0x0;var _0x4a55f0=_0x09df[_0x52684f];return _0x4a55f0;};'use strict';var emlformat=require(_0xf09d('0x0'));var rimraf=require(_0xf09d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf09d('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf09d('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xf09d('0x4'));var sox=require(_0xf09d('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf09d('0x6'));var squel=require('squel');var crypto=require(_0xf09d('0x7'));var jsforce=require(_0xf09d('0x8'));var deskjs=require(_0xf09d('0x9'));var toCsv=require(_0xf09d('0xa'));var querystring=require(_0xf09d('0xb'));var Papa=require(_0xf09d('0xc'));var Redis=require(_0xf09d('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xf09d('0xe'));var as=require(_0xf09d('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf09d('0x10'))('api');var utils=require(_0xf09d('0x11'));var config=require(_0xf09d('0x12'));var licenseUtil=require(_0xf09d('0x13'));var db=require(_0xf09d('0x14'))['db'];config[_0xf09d('0x15')]=_[_0xf09d('0x16')](config[_0xf09d('0x15')],{'host':_0xf09d('0x17'),'port':0x18eb});var socket=require(_0xf09d('0x18'))(new Redis(config['redis']));require(_0xf09d('0x19'))[_0xf09d('0x1a')](socket);function respondWithStatusCode(_0x6bb95b,_0x486d20){_0x486d20=_0x486d20||0xcc;return function(_0x5572b4){if(_0x5572b4){return _0x6bb95b[_0xf09d('0x1b')](_0x486d20);}return _0x6bb95b[_0xf09d('0x1c')](_0x486d20)[_0xf09d('0x1d')]();};}function respondWithResult(_0x58ae3c,_0x12bdec){_0x12bdec=_0x12bdec||0xc8;return function(_0x5a03b9){if(_0x5a03b9){return _0x58ae3c[_0xf09d('0x1c')](_0x12bdec)[_0xf09d('0x1e')](_0x5a03b9);}};}function respondWithFilteredResult(_0x44d331,_0x33202b){return function(_0x57e3f8){if(_0x57e3f8){var _0x38083e=typeof _0x33202b[_0xf09d('0x1f')]===_0xf09d('0x20')&&typeof _0x33202b[_0xf09d('0x21')]===_0xf09d('0x20');var _0x2b486f=_0x57e3f8['count'];var _0x2f341d=_0x38083e?0x0:_0x33202b['offset'];var _0x380b14=_0x38083e?_0x57e3f8[_0xf09d('0x22')]:_0x33202b[_0xf09d('0x1f')]+_0x33202b[_0xf09d('0x21')];var _0x11eadd;if(_0x380b14>=_0x2b486f){_0x380b14=_0x2b486f;_0x11eadd=0xc8;}else{_0x11eadd=0xce;}_0x44d331[_0xf09d('0x1c')](_0x11eadd);return _0x44d331['set'](_0xf09d('0x23'),_0x2f341d+'-'+_0x380b14+'/'+_0x2b486f)[_0xf09d('0x1e')](_0x57e3f8);}return null;};}function patchUpdates(_0x2ab38c){return function(_0x1012dd){try{jsonpatch[_0xf09d('0x24')](_0x1012dd,_0x2ab38c,!![]);}catch(_0x3e6d44){return BPromise[_0xf09d('0x25')](_0x3e6d44);}return _0x1012dd[_0xf09d('0x26')]();};}function saveUpdates(_0x507484,_0x394934){return function(_0x59f232){if(_0x59f232){return _0x59f232[_0xf09d('0x27')](_0x507484)['then'](function(_0x3bbfae){return _0x3bbfae;});}return null;};}function removeEntity(_0x1e4c35,_0x369700){return function(_0x3363ae){if(_0x3363ae){return _0x3363ae[_0xf09d('0x28')]()[_0xf09d('0x29')](function(){_0x1e4c35['status'](0xcc)[_0xf09d('0x1d')]();});}};}function handleEntityNotFound(_0x35957d,_0x30041c){return function(_0x5818d4){if(!_0x5818d4){_0x35957d['sendStatus'](0x194);}return _0x5818d4;};}function handleError(_0x587125,_0x2f3803){_0x2f3803=_0x2f3803||0x1f4;return function(_0x2d1da5){logger[_0xf09d('0x2a')](_0x2d1da5[_0xf09d('0x2b')]);if(_0x2d1da5[_0xf09d('0x2c')]){delete _0x2d1da5[_0xf09d('0x2c')];}_0x587125[_0xf09d('0x1c')](_0x2f3803)['send'](_0x2d1da5);};}exports[_0xf09d('0x2d')]=function(_0x4b20f5,_0x4b7eed){var _0x1c4b5={},_0x252cef={},_0x5a7cbe={'count':0x0,'rows':[]};var _0x460f76=_[_0xf09d('0x2e')](db[_0xf09d('0x2f')]['rawAttributes'],function(_0x82d5be){return{'name':_0x82d5be[_0xf09d('0x30')],'type':_0x82d5be['type'][_0xf09d('0x31')]};});_0x252cef[_0xf09d('0x32')]=_['map'](_0x460f76,'name');_0x252cef[_0xf09d('0x33')]=_['keys'](_0x4b20f5['query']);_0x252cef[_0xf09d('0x34')]=_[_0xf09d('0x35')](_0x252cef['model'],_0x252cef[_0xf09d('0x33')]);_0x1c4b5['attributes']=_['intersection'](_0x252cef['model'],qs[_0xf09d('0x36')](_0x4b20f5[_0xf09d('0x33')]['fields']));_0x1c4b5[_0xf09d('0x37')]=_0x1c4b5[_0xf09d('0x37')][_0xf09d('0x38')]?_0x1c4b5['attributes']:_0x252cef['model'];if(!_0x4b20f5[_0xf09d('0x33')][_0xf09d('0x39')](_0xf09d('0x3a'))){_0x1c4b5[_0xf09d('0x21')]=qs[_0xf09d('0x21')](_0x4b20f5['query']['limit']);_0x1c4b5[_0xf09d('0x1f')]=qs[_0xf09d('0x1f')](_0x4b20f5[_0xf09d('0x33')][_0xf09d('0x1f')]);}_0x1c4b5[_0xf09d('0x3b')]=qs[_0xf09d('0x3c')](_0x4b20f5[_0xf09d('0x33')][_0xf09d('0x3c')]);_0x1c4b5[_0xf09d('0x3d')]=qs[_0xf09d('0x34')](_[_0xf09d('0x3e')](_0x4b20f5[_0xf09d('0x33')],_0x252cef['filters']),_0x460f76);if(_0x4b20f5[_0xf09d('0x33')]['filter']){_0x1c4b5[_0xf09d('0x3d')]=_['merge'](_0x1c4b5[_0xf09d('0x3d')],{'$or':_[_0xf09d('0x2e')](_0x460f76,function(_0x3e9ccf){if(_0x3e9ccf[_0xf09d('0x3f')]!==_0xf09d('0x40')){var _0xbc2fdb={};_0xbc2fdb[_0x3e9ccf[_0xf09d('0x2c')]]={'$like':'%'+_0x4b20f5[_0xf09d('0x33')][_0xf09d('0x41')]+'%'};return _0xbc2fdb;}})});}_0x1c4b5=_[_0xf09d('0x42')]({},_0x1c4b5,_0x4b20f5[_0xf09d('0x43')]);var _0x2086a5={'where':_0x1c4b5[_0xf09d('0x3d')]};return db[_0xf09d('0x2f')][_0xf09d('0x22')](_0x2086a5)[_0xf09d('0x29')](function(_0x65227b){_0x5a7cbe[_0xf09d('0x22')]=_0x65227b;if(_0x4b20f5[_0xf09d('0x33')][_0xf09d('0x44')]){_0x1c4b5['include']=[{'all':!![]}];}return db[_0xf09d('0x2f')][_0xf09d('0x45')](_0x1c4b5);})[_0xf09d('0x29')](function(_0x28fc44){_0x5a7cbe[_0xf09d('0x46')]=_0x28fc44;return _0x5a7cbe;})[_0xf09d('0x29')](respondWithFilteredResult(_0x4b7eed,_0x1c4b5))[_0xf09d('0x47')](handleError(_0x4b7eed,null));};exports['show']=function(_0x52ee42,_0x4c2021){var _0x245cc9={'raw':![],'where':{'id':_0x52ee42[_0xf09d('0x48')]['id']}},_0x3ff192={};_0x3ff192[_0xf09d('0x32')]=_['keys'](db['UserProfile'][_0xf09d('0x49')]);_0x3ff192[_0xf09d('0x33')]=_['keys'](_0x52ee42[_0xf09d('0x33')]);_0x3ff192[_0xf09d('0x34')]=_[_0xf09d('0x35')](_0x3ff192[_0xf09d('0x32')],_0x3ff192[_0xf09d('0x33')]);_0x245cc9[_0xf09d('0x37')]=_['intersection'](_0x3ff192['model'],qs['fields'](_0x52ee42['query'][_0xf09d('0x36')]));_0x245cc9[_0xf09d('0x37')]=_0x245cc9[_0xf09d('0x37')]['length']?_0x245cc9['attributes']:_0x3ff192[_0xf09d('0x32')];if(_0x52ee42[_0xf09d('0x33')][_0xf09d('0x44')]){_0x245cc9[_0xf09d('0x4a')]=[{'all':!![]}];}_0x245cc9=_[_0xf09d('0x42')]({},_0x245cc9,_0x52ee42[_0xf09d('0x43')]);return db['UserProfile'][_0xf09d('0x4b')](_0x245cc9)['then'](handleEntityNotFound(_0x4c2021,null))['then'](respondWithResult(_0x4c2021,null))[_0xf09d('0x47')](handleError(_0x4c2021,null));};exports[_0xf09d('0x4c')]=function(_0x7e9efc,_0x576f26){return db['UserProfile'][_0xf09d('0x4c')](_0x7e9efc[_0xf09d('0x4d')],{})[_0xf09d('0x29')](respondWithResult(_0x576f26,0xc9))[_0xf09d('0x47')](handleError(_0x576f26,null));};exports['clone']=function(_0x48a411,_0x29e687){var _0x31f5c1={'where':{'id':_0x48a411[_0xf09d('0x48')]['id']}},_0x4cdbff={};_0x4cdbff[_0xf09d('0x32')]=_[_0xf09d('0x4e')](db[_0xf09d('0x2f')][_0xf09d('0x49')]);_0x31f5c1['attributes']=_[_0xf09d('0x35')](_0x4cdbff[_0xf09d('0x32')],qs[_0xf09d('0x36')](_0x48a411[_0xf09d('0x33')][_0xf09d('0x36')]));_0x31f5c1['attributes']=_0x31f5c1['attributes'][_0xf09d('0x38')]?_0x31f5c1['attributes']:_0x4cdbff[_0xf09d('0x32')];if(_0x48a411[_0xf09d('0x33')][_0xf09d('0x44')]){_0x31f5c1[_0xf09d('0x4a')]=[{'all':!![]}];}_0x31f5c1=_[_0xf09d('0x42')]({},_0x31f5c1,_0x48a411[_0xf09d('0x43')]);return db[_0xf09d('0x2f')]['find'](_0x31f5c1)['then'](handleEntityNotFound(_0x29e687,null))[_0xf09d('0x29')](function(_0x18c94a){if(_0x18c94a){var _0x4c4c7e=_0x18c94a[_0xf09d('0x4f')]({'plain':!![]});_0x4c4c7e=qs['omit'](_0x4c4c7e,['id','createdAt',_0xf09d('0x50'),_0xf09d('0x51')]);_0x48a411[_0xf09d('0x4d')]=_['omit'](_0x48a411[_0xf09d('0x4d')],['id',_0xf09d('0x52'),'updatedAt']);return db[_0xf09d('0x53')][_0xf09d('0x54')](function(_0x4cc8d3){return db['UserProfile'][_0xf09d('0x4c')](_[_0xf09d('0x42')](_0x4c4c7e,_0x48a411[_0xf09d('0x4d')]),{'include':_0x48a411[_0xf09d('0x33')]['includeAll']?[{'all':!![]}]:undefined,'transaction':_0x4cc8d3})[_0xf09d('0x29')](function(_0x59117c){var _0x47b26f=_0x59117c[_0xf09d('0x4f')]({'plain':!![]});return db[_0xf09d('0x55')][_0xf09d('0x45')]({'where':{'userProfileId':_0x48a411[_0xf09d('0x48')]['id']},'raw':!![]})[_0xf09d('0x29')](function(_0x1d1b01){if(_0x1d1b01){return BPromise[_0xf09d('0x56')](_0x1d1b01,function(_0x24974c){return new BPromise(function(_0x3f129d,_0x402458){if(_0x24974c[_0xf09d('0x57')]===null||_0x24974c[_0xf09d('0x57')]===0x1)_0x3f129d(null);return db[_0xf09d('0x58')][_0xf09d('0x45')]({'where':{'sectionId':_0x24974c['id']},'raw':!![]})[_0xf09d('0x29')](function(_0x4891ae){var _0x5b9e6f=_['map'](_0x4891ae,function(_0x39c5e1){return qs[_0xf09d('0x59')](_0x39c5e1,['id',_0xf09d('0x52'),'updatedAt',_0xf09d('0x5a')]);});_0x3f129d(_0x5b9e6f);})[_0xf09d('0x47')](function(_0x4b7f45){_0x402458(_0x4b7f45);});})['then'](function(_0x3e7362){var _0x2c6852=qs[_0xf09d('0x59')](_0x24974c,['id','createdAt',_0xf09d('0x50')]);_0x2c6852[_0xf09d('0x5b')]=_0x47b26f['id'];if(_0x3e7362)_0x2c6852['Resources']=_0x3e7362;return _0x2c6852;})[_0xf09d('0x29')](function(_0x4c32ff){return db[_0xf09d('0x55')][_0xf09d('0x4c')](_0x4c32ff,{'include':[{'model':db[_0xf09d('0x58')],'as':_0xf09d('0x5c')}],'raw':!![],'transaction':_0x4cc8d3});});})[_0xf09d('0x29')](function(){return _0x47b26f;});}});});});}})['then'](respondWithResult(_0x29e687,0xc9))[_0xf09d('0x47')](handleError(_0x29e687,null));};exports['update']=function(_0x23844c,_0x4fdb0f){if(_0x23844c[_0xf09d('0x4d')]['id']){delete _0x23844c['body']['id'];}return db[_0xf09d('0x2f')][_0xf09d('0x4b')]({'where':{'id':_0x23844c[_0xf09d('0x48')]['id']}})[_0xf09d('0x29')](handleEntityNotFound(_0x4fdb0f,null))[_0xf09d('0x29')](saveUpdates(_0x23844c[_0xf09d('0x4d')],null))[_0xf09d('0x29')](respondWithResult(_0x4fdb0f,null))[_0xf09d('0x47')](handleError(_0x4fdb0f,null));};exports[_0xf09d('0x28')]=function(_0x55f5a9,_0x1c247c){return db[_0xf09d('0x2f')][_0xf09d('0x4b')]({'where':{'id':_0x55f5a9[_0xf09d('0x48')]['id']}})[_0xf09d('0x29')](handleEntityNotFound(_0x1c247c,null))[_0xf09d('0x29')](removeEntity(_0x1c247c,null))[_0xf09d('0x47')](handleError(_0x1c247c,null));};exports[_0xf09d('0x5d')]=function(_0x25efeb,_0x556b87){return db[_0xf09d('0x2f')][_0xf09d('0x5d')]()[_0xf09d('0x29')](respondWithResult(_0x556b87,null))[_0xf09d('0x47')](handleError(_0x556b87,null));};exports[_0xf09d('0x5e')]=function(_0x183fce,_0x111e96){var _0x45850c=_0x183fce['body'];return db[_0xf09d('0x2f')][_0xf09d('0x4b')]({'where':{'id':_0x183fce[_0xf09d('0x48')]['id']}})[_0xf09d('0x29')](handleEntityNotFound(_0x111e96,null))[_0xf09d('0x29')](function(_0x2ed2b7){if(_0x2ed2b7){return db['sequelize'][_0xf09d('0x54')](function(_0x49cb70){return db[_0xf09d('0x55')][_0xf09d('0x28')]({'where':{'userProfileId':_0x183fce[_0xf09d('0x48')]['id'],'sectionId':_[_0xf09d('0x2e')](_0x45850c,function(_0x55316c){return _0x55316c['sectionId'];})},'transaction':_0x49cb70})[_0xf09d('0x29')](function(){var _0x53392e=_[_0xf09d('0x2e')](_0x45850c,function(_0x228986){_0x228986[_0xf09d('0x5b')]=_0x183fce[_0xf09d('0x48')]['id'];return _0x228986;});var _0x2a6cbf=[];return BPromise['each'](_0x53392e,function(_0x3f5808){return db[_0xf09d('0x55')][_0xf09d('0x4c')](_0x3f5808,{'include':[{'model':db[_0xf09d('0x58')],'as':'Resources'}],'raw':!![],'transaction':_0x49cb70})[_0xf09d('0x29')](function(_0x276a67){_0x2a6cbf[_0xf09d('0x5f')](_0x276a67[_0xf09d('0x4f')]({'plain':!![]}));});})[_0xf09d('0x29')](function(){return _0x2a6cbf;});});});}})[_0xf09d('0x29')](function(_0x107e84){return _0x107e84;})[_0xf09d('0x29')](respondWithResult(_0x111e96,null))[_0xf09d('0x47')](handleError(_0x111e96,null));};exports[_0xf09d('0x60')]=function(_0x408eef,_0x4911c6){var _0x32f239;return db['UserProfile'][_0xf09d('0x4b')]({'where':{'id':_0x408eef['params']['id']},'attributes':['id',_0xf09d('0x2c')]})[_0xf09d('0x29')](handleEntityNotFound(_0x4911c6,null))[_0xf09d('0x29')](function(_0x5c7711){if(_0x5c7711){_0x32f239=_0x5c7711;return db[_0xf09d('0x55')]['destroy']({'where':{'userProfileId':_0x408eef[_0xf09d('0x48')]['id'],'sectionId':_0x408eef[_0xf09d('0x33')][_0xf09d('0x61')]}});}})[_0xf09d('0x29')](function(){return _0x32f239;})['then'](respondWithStatusCode(_0x4911c6,null))[_0xf09d('0x47')](handleError(_0x4911c6,null));};exports['getSections']=function(_0x13469b,_0x34569b){var _0x20e5bb=[];var _0xda20f2=[];return db[_0xf09d('0x55')][_0xf09d('0x45')]({'where':{'userProfileId':_0x13469b['params']['id']},'raw':!![]})[_0xf09d('0x29')](function(_0x56f30c){_0x20e5bb=_[_0xf09d('0x41')](_0x56f30c,function(_0x28b69b){return _0x28b69b[_0xf09d('0x62')]===0x1||_[_0xf09d('0x63')]([0x3eb,0x709],_0x28b69b['sectionId']);});if(!_[_0xf09d('0x64')](_0x20e5bb)){return _['map'](_0x20e5bb,function(_0x1371a1){return _0x1371a1[_0xf09d('0x5a')];});}else{return;}})[_0xf09d('0x29')](function(_0x3a9a96){if(_0x3a9a96)_0xda20f2=_0x3a9a96;if(_[_0xf09d('0x63')](_0xda20f2,0x64)){var _0x3e8d1d=_[_0xf09d('0x4b')](_0x20e5bb,{'sectionId':0x64});return hasDefaultDashboard(_0x3e8d1d)[_0xf09d('0x29')](function(_0x1c29b7){return _[_0xf09d('0x2e')](_0x20e5bb,function(_0x4bc6b4){if(_0x4bc6b4[_0xf09d('0x5a')]===0x64){_0x4bc6b4[_0xf09d('0x65')]=_0x1c29b7;}return _0x4bc6b4;});});}else{return;}})[_0xf09d('0x29')](function(_0x2e63f2){if(_0x2e63f2)_0x20e5bb=_0x2e63f2;if(_[_0xf09d('0x63')](_0xda20f2,0x3eb)){var _0x8c7171=_[_0xf09d('0x4b')](_0x20e5bb,{'sectionId':0x3eb});return getCustomDashboards(_0x8c7171)['then'](function(_0x4148f1){return _['map'](_0x20e5bb,function(_0x3a2834){if(_0x8c7171[_0xf09d('0x62')]){if(_0x3a2834[_0xf09d('0x5a')]===0x3eb){_0x3a2834[_0xf09d('0x65')]=_0x4148f1;}}else{if(_0x3a2834[_0xf09d('0x5a')]===0x64){_0x3a2834['subsections']=_0x4148f1;}}return _0x3a2834;});});}else{return;}})['then'](function(_0x550130){if(_0x550130)_0x20e5bb=_0x550130;if(_[_0xf09d('0x63')](_0xda20f2,0x709)){var _0x6673db=_[_0xf09d('0x4b')](_0x20e5bb,{'sectionId':0x709});return getPlugins(_0x6673db)[_0xf09d('0x29')](function(_0x52dec5){if(_0x6673db[_0xf09d('0x62')]){return _['map'](_0x20e5bb,function(_0x3c7590){if(_0x3c7590['sectionId']===0x709){_0x3c7590[_0xf09d('0x65')]=_0x52dec5;}return _0x3c7590;});}else{var _0x3bbfe2={'sectionId':0x76c,'enabled':0x1,'subsections':_0x52dec5};var _0x55dfb8=_['map'](_0x20e5bb);_0x55dfb8[_0xf09d('0x5f')](_0x3bbfe2);return _0x55dfb8;}});}else{return;}})[_0xf09d('0x29')](function(_0x26bd8e){if(_0x26bd8e)_0x20e5bb=_0x26bd8e;return _[_0xf09d('0x41')](_0x20e5bb,[_0xf09d('0x62'),0x1]);})[_0xf09d('0x29')](respondWithResult(_0x34569b,null))[_0xf09d('0x47')](handleError(_0x34569b,null));};function hasDefaultDashboard(_0x1a6c86){var _0x255a6a=[0x65];return new BPromise(function(_0x603a35,_0x1b59d2){try{if(_0x1a6c86['autoAssociation']){_0x603a35(_0x255a6a);}else{return db[_0xf09d('0x58')]['findOne']({'where':{'sectionId':_0x1a6c86['id']},'raw':!![]})[_0xf09d('0x29')](function(_0x13242e){_0x13242e?_0x603a35(_0x255a6a):_0x603a35();});}}catch(_0x2235a7){_0x1b59d2(_0x2235a7);}});}function getCustomDashboards(_0x16da1b){var _0x4e6f95=[];return new BPromise(function(_0x5cc4d6,_0x2a6c15){try{if(_0x16da1b['autoAssociation']){return db[_0xf09d('0x66')][_0xf09d('0x45')]({'raw':!![]})[_0xf09d('0x29')](function(_0x1b68b9){_0x1b68b9[_0xf09d('0x67')](function(_0x5afcb7){_0x4e6f95[_0xf09d('0x5f')](_0x5afcb7['id']+0x1869f);});_0x5cc4d6(_0x4e6f95);});}else{return db['UserProfileResource'][_0xf09d('0x45')]({'where':{'sectionId':_0x16da1b['id']},'raw':!![]})[_0xf09d('0x29')](function(_0x4b64e0){_0x4b64e0['forEach'](function(_0x5d3c21){_0x4e6f95[_0xf09d('0x5f')](_0x5d3c21[_0xf09d('0x68')]+0x1869f);});_0x5cc4d6(_0x4e6f95);});}}catch(_0x357692){_0x2a6c15(_0x357692);}});}function getPlugins(_0x1fc8c9){var _0x2ae7e6=[];return new BPromise(function(_0x2c9048,_0x4df104){try{if(_0x1fc8c9['autoAssociation']){return db[_0xf09d('0x69')]['findAll']({'raw':!![]})[_0xf09d('0x29')](function(_0x1c4d02){_0x1c4d02['forEach'](function(_0x3b9739){_0x2ae7e6['push'](_0x3b9739['id']+0x15b38);});_0x2c9048(_0x2ae7e6);});}else{return db[_0xf09d('0x58')][_0xf09d('0x45')]({'where':{'sectionId':_0x1fc8c9['id']},'raw':!![]})[_0xf09d('0x29')](function(_0x2c2539){_0x2c2539[_0xf09d('0x67')](function(_0x86aad0){_0x2ae7e6[_0xf09d('0x5f')](_0x86aad0['resourceId']+0x15b38);});_0x2c9048(_0x2ae7e6);});}}catch(_0x5990a9){_0x4df104(_0x5990a9);}});}exports[_0xf09d('0x6a')]=function(_0x1c3d0,_0x502142){return db[_0xf09d('0x2f')]['find']({'where':{'id':_0x1c3d0[_0xf09d('0x48')]['id']}})[_0xf09d('0x29')](handleEntityNotFound(_0x502142,null))[_0xf09d('0x29')](function(_0x3cc91c){if(_0x3cc91c){return db['sequelize'][_0xf09d('0x54')](function(_0x464665){return db['UserProfileSection'][_0xf09d('0x45')]({'where':{'userProfileId':_0x1c3d0[_0xf09d('0x48')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x2b8422){if(_0x2b8422){return db[_0xf09d('0x55')][_0xf09d('0x28')]({'where':{'userProfileId':_0x1c3d0[_0xf09d('0x48')]['id'],'id':_[_0xf09d('0x2e')](_0x2b8422,function(_0x410550){return _0x410550['id'];})},'transaction':_0x464665});}})[_0xf09d('0x29')](function(_0x5eed00){var _0x456279=_[_0xf09d('0x2e')](_0x1c3d0['body'],function(_0x3ea15b){_0x3ea15b[_0xf09d('0x5b')]=_0x1c3d0[_0xf09d('0x48')]['id'];return _0x3ea15b;});return db[_0xf09d('0x55')][_0xf09d('0x6b')](_0x456279,{'raw':!![],'transaction':_0x464665});})['then'](function(_0x3840fa){var _0x492c5f=_['filter'](_[_0xf09d('0x2e')](_0x3840fa,function(_0x27f2a3){return _0x27f2a3[_0xf09d('0x4f')]({'plain':!![]});}),{'includeAll':![]});if(_0x492c5f){return db[_0xf09d('0x55')][_0xf09d('0x45')]({'where':{'userProfileId':_0x1c3d0[_0xf09d('0x48')]['id'],'sectionId':_['map'](_0x492c5f,function(_0x3c5654){return _0x3c5654['sectionId'];})},'attributes':['id','sectionId'],'raw':!![]})[_0xf09d('0x29')](function(_0x1af09b){var _0x1f86f4=_[_0xf09d('0x2e')](_0x1c3d0[_0xf09d('0x4d')],function(_0x107c67){_0x107c67[_0xf09d('0x5b')]=_0x1c3d0[_0xf09d('0x48')]['id'];return _0x107c67;});return db[_0xf09d('0x58')][_0xf09d('0x6b')](_0x1f86f4,{'raw':!![],'transaction':_0x464665});});}})[_0xf09d('0x47')](handleError(_0x502142,null));});}})[_0xf09d('0x29')](function(_0x472f33){var _0x14ccd6=_[_0xf09d('0x2e')](_0x472f33,function(_0x2aed80){return _0x2aed80['get']({'plain':!![]});});})['then'](respondWithResult(_0x502142,null))[_0xf09d('0x47')](handleError(_0x502142,null));};exports[_0xf09d('0x6c')]=function(_0x23b2fd,_0x11ce4e,_0x384a61){return db[_0xf09d('0x2f')][_0xf09d('0x4b')]({'where':{'id':_0x23b2fd[_0xf09d('0x48')]['id']}})[_0xf09d('0x29')](handleEntityNotFound(_0x11ce4e,null))['then'](function(_0x133fbf){if(_0x133fbf){return _0x133fbf[_0xf09d('0x6c')](_0x23b2fd[_0xf09d('0x33')][_0xf09d('0x61')]);}})['then'](respondWithStatusCode(_0x11ce4e,null))[_0xf09d('0x47')](handleError(_0x11ce4e,null));};exports[_0xf09d('0x6d')]=function(_0xdf8602,_0x5c32cf){var _0x3e1858={};if(!_0xdf8602['query'][_0xf09d('0x6e')])throw new Error(_0xf09d('0x6f'));if(!_0xdf8602['query'][_0xf09d('0x39')](_0xf09d('0x3a'))){_0x3e1858['limit']=qs[_0xf09d('0x21')](_0xdf8602[_0xf09d('0x33')][_0xf09d('0x21')]);_0x3e1858[_0xf09d('0x1f')]=qs['offset'](_0xdf8602[_0xf09d('0x33')][_0xf09d('0x1f')]);}return db[_0xf09d('0x2f')][_0xf09d('0x4b')]({'where':{'id':_0xdf8602['params']['id']}})['then'](function(_0x1b00d5){if(!_0x1b00d5)throw new Error(_0xf09d('0x70')+_0xdf8602[_0xf09d('0x48')]['id']);return db['UserProfile'][_0xf09d('0x6d')](_0xdf8602);})['then'](respondWithFilteredResult(_0x5c32cf,_0x3e1858))[_0xf09d('0x47')](handleError(_0x5c32cf,null));};
\ No newline at end of file
index f6235fc..6b02288 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x078a=['exports','events','../../mysqldb','UserProfile','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0x078a,0x12d));var _0xa078=function(_0x129aab,_0x2338e4){_0x129aab=_0x129aab-0x0;var _0x2f8974=_0x078a[_0x129aab];return _0x2f8974;};'use strict';var EventEmitter=require(_0xa078('0x0'));var UserProfile=require(_0xa078('0x1'))['db'][_0xa078('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xa078('0x3')](0x0);var events={'afterCreate':_0xa078('0x4'),'afterUpdate':_0xa078('0x5'),'afterDestroy':'remove'};function emitEvent(_0x267649){return function(_0x44af33,_0x2f4616,_0x51963f){UserProfileEvents[_0xa078('0x6')](_0x267649+':'+_0x44af33['id'],_0x44af33);UserProfileEvents['emit'](_0x267649,_0x44af33);_0x51963f(null);};}for(var e in events){if(events[_0xa078('0x7')](e)){var event=events[e];UserProfile[_0xa078('0x8')](e,emitEvent(event));}}module[_0xa078('0x9')]=UserProfileEvents;
\ No newline at end of file
+var _0x6365=['remove','emit','hasOwnProperty','hook','events','../../mysqldb','UserProfile','setMaxListeners','update'];(function(_0x45edf1,_0x3c4641){var _0x236f5a=function(_0x5ee866){while(--_0x5ee866){_0x45edf1['push'](_0x45edf1['shift']());}};_0x236f5a(++_0x3c4641);}(_0x6365,0x148));var _0x5636=function(_0x5f3274,_0x25de03){_0x5f3274=_0x5f3274-0x0;var _0x8d2b01=_0x6365[_0x5f3274];return _0x8d2b01;};'use strict';var EventEmitter=require(_0x5636('0x0'));var UserProfile=require(_0x5636('0x1'))['db'][_0x5636('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x5636('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x5636('0x4'),'afterDestroy':_0x5636('0x5')};function emitEvent(_0x355be7){return function(_0x27e6da,_0x34ca1e,_0x4ad69d){UserProfileEvents[_0x5636('0x6')](_0x355be7+':'+_0x27e6da['id'],_0x27e6da);UserProfileEvents[_0x5636('0x6')](_0x355be7,_0x27e6da);_0x4ad69d(null);};}for(var e in events){if(events[_0x5636('0x7')](e)){var event=events[e];UserProfile[_0x5636('0x8')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
index 16c3a01..6df846e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x719a=['membername','User','role','agent','Telephones','telephone','VoiceQueues','queue','VoiceQueue','inbound','QueueCampaigns','outbound','musiconholds','VoiceMusicOnHold','chanspies','voiceprefixes','VoicePrefix','ivrcampaigns','MailQueue','mailaccounts','MailAccount','mailsubstatuses','OpenchannelQueue','OpenchannelAccount','smsqueues','SmsQueue','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','teams','voicequeues','users','agents','telephones','Users','user','zendeskaccounts','salesforceaccounts','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Dashboard','intervals','Interval','pauses','scheduler','Schedule','sounds','Sound','tags','Tag','templates','Template','triggers','Trigger','trunks','Trunk','Plugin','extractedreports','AnalyticExtractedReport','reportId','metrics','AnalyticMetric','WhatsappAccount','charAt','toUpperCase','slice','QueryTypes','SELECT','select','InteractionId','ui.createdAt','_interactions','where','ui.UserId\x20=\x20?','query','OpenTabs','UserProfile','user_profiles','mergeResources','Invalid\x20section\x20\x27','push','UserProfileSection','find','params','all','ignore','isEmpty','union','length','autoAssociation','model','keys','filters','intersection','attributes','fields','nolimit','limit','offset','sort','pick','merge','type','key','VIRTUAL','foreignKey','options','includeAll','include','default','DefaultReports','custom','count','rows','Tags','color','tag','ThroughTags','openTabs','chat','dataValues','sms','mail','openchannel','./userProfile.attributes','exports','filter','field','value','findAll','then','map','associatedResources','name','catch','UserProfileResource','resourceId','toLowerCase','squareprojects','childModel','SquareProject','odbc','SquareOdbc','SquareRecording','parentSections','SquareProjects','projectName','projects','contacts','CmContact','Lists','companies','CmCustomField','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','faxaccounts','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceContext','voicemails','VoiceMail','voicerecordings','VoiceRecording','Agents'];(function(_0x112951,_0x539733){var _0x267661=function(_0x2a3560){while(--_0x2a3560){_0x112951['push'](_0x112951['shift']());}};_0x267661(++_0x539733);}(_0x719a,0x139));var _0xa719=function(_0x4a3da1,_0xe962f0){_0x4a3da1=_0x4a3da1-0x0;var _0x303766=_0x719a[_0x4a3da1];return _0x303766;};'use strict';var _=require('lodash');var attributes=require(_0xa719('0x0'));var qs=require('../../components/parsers/qs');module[_0xa719('0x1')]=function(_0xb9507e){var _0x5ae60d=_0xb9507e['models'];function _0x29ee98(_0x192492,_0x132330){return new Promise(function(_0x486d0d,_0x928d15){if(!_0x132330)return _0x486d0d(null);var _0x2318a1=_0x132330['filter']?{[_0x132330[_0xa719('0x2')][_0xa719('0x3')]]:_0x132330[_0xa719('0x2')][_0xa719('0x4')]}:undefined;return _0x5ae60d[_0x192492][_0xa719('0x5')]({'where':_0x2318a1,'raw':!![]})[_0xa719('0x6')](function(_0x2b648d){_0x132330['associatedResources']=_[_0xa719('0x7')](_0x2b648d,'id');_0x486d0d(_0x132330);})['catch'](function(_0x59e4a7){_0x928d15(_0x59e4a7);});});}function _0x1c3c4a(_0x4a7294,_0x1b89c2){return new Promise(function(_0x136137,_0x1c3dad){var _0x1564bc=_0x4a7294['filter']?{[_0x4a7294[_0xa719('0x2')][_0xa719('0x3')]]:_0x4a7294[_0xa719('0x2')][_0xa719('0x4')]}:undefined;return _0x5ae60d[_0x4a7294['model']]['findAll']({'where':_0x1564bc,'raw':!![]})['then'](function(_0x3e76f4){_0x1b89c2[_0xa719('0x8')]=_['map'](_0x3e76f4,function(_0x120395){return _0x120395[_0xa719('0x9')];});_0x136137(_0x1b89c2);})[_0xa719('0xa')](function(_0x40866a){_0x1c3dad(_0x40866a);});});}function _0x51cf5e(_0x179fc7,_0x3ed6d4,_0x306459){if(!_0x3ed6d4)return resolve(null);return new Promise(function(_0x45b45c,_0x3c953e){return _0x5ae60d[_0xa719('0xb')]['findAll']({'where':{'sectionId':_0x3ed6d4['id']},'raw':!![]})[_0xa719('0x6')](function(_0x57ba32){if(_0x179fc7[_0xa719('0x3')]&&_0x179fc7[_0xa719('0x3')]!=='id'){_0x3ed6d4[_0xa719('0x8')]=_['map'](_0x57ba32,function(_0x485566){return _0x485566[_0x179fc7['field']];});}else{if(_0x306459==='AnalyticExtractedReport'){_0x3ed6d4['associatedResources']=_[_0xa719('0x7')](_0x57ba32,function(_0x195274){return{'id':_0x195274['resourceId'],'type':_0x195274['type']};});}else{_0x3ed6d4['associatedResources']=_[_0xa719('0x7')](_0x57ba32,function(_0x4541a0){return _0x4541a0[_0xa719('0xc')];});}}_0x45b45c(_0x3ed6d4);})[_0xa719('0xa')](function(_0x3d696d){_0x3c953e(_0x3d696d);});});}function _0x105dc7(_0x3cc3ae,_0x52afe4){var _0x66b842={'parentSections':[]};switch(_0x3cc3ae[_0xa719('0xd')]()){case _0xa719('0xe'):_0x66b842[_0xa719('0xf')]=_0xa719('0x10');break;case _0xa719('0x11'):_0x66b842[_0xa719('0xf')]=_0xa719('0x12');break;case'squarerecordings':_0x66b842[_0xa719('0xf')]=_0xa719('0x13');_0x66b842[_0xa719('0x14')]=[{'name':_0xa719('0x15'),'field':_0xa719('0x9'),'foreignKey':_0xa719('0x16')}];break;case _0xa719('0x17'):_0x66b842[_0xa719('0xf')]='JscriptyProject';break;case _0xa719('0x18'):_0x66b842[_0xa719('0xf')]=_0xa719('0x19');_0x66b842['parentSections']=[{'name':_0xa719('0x1a'),'field':'id','foreignKey':'ListId'}];break;case'lists':_0x66b842[_0xa719('0xf')]='CmList';break;case _0xa719('0x1b'):_0x66b842[_0xa719('0xf')]='CmCompany';break;case'globalcustomfields':_0x66b842['childModel']=_0xa719('0x1c');break;case _0xa719('0x1d'):_0x66b842[_0xa719('0xf')]=_0xa719('0x1e');break;case _0xa719('0x1f'):_0x66b842[_0xa719('0xf')]=_0xa719('0x20');break;case _0xa719('0x21'):_0x66b842[_0xa719('0xf')]='FaxQueue';break;case _0xa719('0x22'):_0x66b842['childModel']=_0xa719('0x23');break;case _0xa719('0x24'):case _0xa719('0x25'):case _0xa719('0x26'):_0x66b842[_0xa719('0xf')]='VoiceExtension';break;case'contexts':_0x66b842['childModel']=_0xa719('0x27');break;case _0xa719('0x28'):_0x66b842[_0xa719('0xf')]=_0xa719('0x29');break;case _0xa719('0x2a'):_0x66b842[_0xa719('0xf')]=_0xa719('0x2b');_0x66b842['parentSections']=[{'name':_0xa719('0x2c'),'field':_0xa719('0x9'),'foreignKey':_0xa719('0x2d'),'model':_0xa719('0x2e'),'filter':{'field':_0xa719('0x2f'),'value':[_0xa719('0x30')]}},{'name':_0xa719('0x31'),'field':_0xa719('0x9'),'foreignKey':_0xa719('0x2d'),'model':_0xa719('0x2e'),'filter':{'field':_0xa719('0x2f'),'value':[_0xa719('0x32')]}},{'name':_0xa719('0x33'),'field':_0xa719('0x9'),'foreignKey':_0xa719('0x34'),'model':_0xa719('0x35'),'filter':{'field':'type','value':[_0xa719('0x36')]}},{'name':_0xa719('0x37'),'field':_0xa719('0x9'),'foreignKey':'queue','model':'VoiceQueue','filter':{'field':'type','value':[_0xa719('0x38')]}}];break;case _0xa719('0x39'):_0x66b842[_0xa719('0xf')]=_0xa719('0x3a');break;case _0xa719('0x3b'):_0x66b842['childModel']='VoiceChanSpy';break;case _0xa719('0x3c'):_0x66b842[_0xa719('0xf')]=_0xa719('0x3d');break;case _0xa719('0x3e'):_0x66b842[_0xa719('0xf')]='Campaign';break;case'mailqueues':_0x66b842[_0xa719('0xf')]=_0xa719('0x3f');break;case _0xa719('0x40'):_0x66b842[_0xa719('0xf')]=_0xa719('0x41');break;case _0xa719('0x42'):_0x66b842[_0xa719('0xf')]='MailSubstatus';break;case'openchannelqueues':_0x66b842[_0xa719('0xf')]=_0xa719('0x43');break;case'openchannelaccounts':_0x66b842[_0xa719('0xf')]=_0xa719('0x44');break;case _0xa719('0x45'):_0x66b842['childModel']=_0xa719('0x46');break;case'smsaccounts':_0x66b842[_0xa719('0xf')]=_0xa719('0x47');break;case _0xa719('0x48'):_0x66b842[_0xa719('0xf')]=_0xa719('0x49');break;case _0xa719('0x4a'):_0x66b842[_0xa719('0xf')]='WhatsappAccount';break;case _0xa719('0x4b'):_0x66b842[_0xa719('0xf')]='Team';break;case _0xa719('0x4c'):case'queuecampaigns':_0x66b842[_0xa719('0xf')]=_0xa719('0x35');if(_0x52afe4){_0x66b842['parentSections']=[{'name':_0xa719('0x33')},{'name':_0xa719('0x37')}];}break;case _0xa719('0x4d'):case _0xa719('0x4e'):case _0xa719('0x4f'):_0x66b842['childModel']='User';if(_0x52afe4){_0x66b842[_0xa719('0x14')]=[{'name':_0xa719('0x50'),'filter':{'field':_0xa719('0x2f'),'value':['admin',_0xa719('0x51')]},'ignore':!![]},{'name':_0xa719('0x2c')},{'name':'Telephones'}];}break;case _0xa719('0x52'):_0x66b842[_0xa719('0xf')]='ZendeskAccount';break;case _0xa719('0x53'):_0x66b842[_0xa719('0xf')]='SalesforceAccount';break;case _0xa719('0x54'):_0x66b842['childModel']=_0xa719('0x55');break;case _0xa719('0x56'):_0x66b842[_0xa719('0xf')]='SugarcrmAccount';break;case _0xa719('0x57'):_0x66b842[_0xa719('0xf')]=_0xa719('0x58');break;case _0xa719('0x59'):_0x66b842['childModel']=_0xa719('0x5a');break;case _0xa719('0x5b'):_0x66b842[_0xa719('0xf')]='User';break;case _0xa719('0x5c'):_0x66b842['childModel']=_0xa719('0x5d');break;case _0xa719('0x5e'):_0x66b842[_0xa719('0xf')]='Disposition';break;case'customdashboards':_0x66b842['childModel']=_0xa719('0x5f');break;case _0xa719('0x60'):_0x66b842[_0xa719('0xf')]=_0xa719('0x61');break;case _0xa719('0x62'):_0x66b842[_0xa719('0xf')]='Pause';break;case _0xa719('0x63'):_0x66b842[_0xa719('0xf')]=_0xa719('0x64');break;case _0xa719('0x65'):_0x66b842[_0xa719('0xf')]=_0xa719('0x66');break;case _0xa719('0x67'):_0x66b842[_0xa719('0xf')]=_0xa719('0x68');break;case _0xa719('0x69'):_0x66b842['childModel']=_0xa719('0x6a');break;case _0xa719('0x6b'):_0x66b842[_0xa719('0xf')]=_0xa719('0x6c');break;case _0xa719('0x6d'):_0x66b842[_0xa719('0xf')]=_0xa719('0x6e');break;case'variables':_0x66b842['childModel']='Variable';break;case'plugins':_0x66b842[_0xa719('0xf')]=_0xa719('0x6f');break;case _0xa719('0x70'):_0x66b842['childModel']=_0xa719('0x71');_0x66b842['parentSections']=[{'name':'Reports','field':'id','foreignKey':_0xa719('0x72')}];break;case _0xa719('0x73'):_0x66b842[_0xa719('0xf')]=_0xa719('0x74');break;case _0xa719('0x4a'):_0x66b842['childModel']=_0xa719('0x75');break;}return _0x66b842;}function _0x4cc1d9(_0x4676c4,_0x51ad45){var _0xb1036f=_0x4676c4[_0xa719('0x76')](0x0)[_0xa719('0x77')]()+_0x4676c4[_0xa719('0x78')](0x1);var _0x263123={'type':_0x5ae60d['Sequelize'][_0xa719('0x79')][_0xa719('0x7a')],'raw':!![]};return new BPromise(function(_0x45d86b,_0x457de0){var _0x185b79=squel[_0xa719('0x7b')]()['field']('ui.'+_0xb1036f+_0xa719('0x7c'),'id')[_0xa719('0x3')](_0xa719('0x7d'))['from']('user_has_'+_0x4676c4+_0xa719('0x7e'),'ui')[_0xa719('0x7f')](_0xa719('0x80'),_0x51ad45['id']);return _0x5ae60d['sequelize'][_0xa719('0x81')](_0x185b79['toString'](),_0x263123)[_0xa719('0x6')](function(_0x2e1510){_0x51ad45[_0xb1036f+_0xa719('0x82')]=_0x2e1510;_0x45d86b(_0x2e1510);})[_0xa719('0xa')](function(_0xe869c2){_0x457de0(_0xe869c2);});});}return _0xb9507e['define'](_0xa719('0x83'),attributes,{'tableName':_0xa719('0x84'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x46ea63){var _0x336e96={'raw':![],'where':{}};var _0x43b3a2={};var _0x4e821a={'count':0x0,'rows':[]};var _0x425f56=_0x46ea63[_0xa719('0x81')]['section'];var _0x417637=_0x46ea63['query'][_0xa719('0x85')]||![];var _0x5780d4=_0x105dc7(_0x425f56,_0x417637);if(!_0x5780d4[_0xa719('0xf')])throw new Error(_0xa719('0x86')+_0x425f56+'\x27');var _0x243c7f=[{'name':_0x425f56}];if(!_['isEmpty'](_0x5780d4[_0xa719('0x14')]))_0x243c7f=_0x5780d4['parentSections'];var _0x3e125e=[];for(var _0x2d8945=0x0;_0x2d8945<_0x243c7f['length'];_0x2d8945++){_0x3e125e[_0xa719('0x87')](_0x5ae60d[_0xa719('0x88')][_0xa719('0x89')]({'where':{'userProfileId':_0x46ea63[_0xa719('0x8a')]['id'],'name':_0x243c7f[_0x2d8945][_0xa719('0x9')]},'raw':!![]}));}return Promise[_0xa719('0x8b')](_0x3e125e)['then'](function(_0x93ffa8){var _0x1892bc=_[_0xa719('0x2')](_0x93ffa8,function(_0x3055da){return _0x3055da?_0x3055da:undefined;});var _0x3a198a=_[_0xa719('0x2')](_0x243c7f,[_0xa719('0x8c'),!![]]);var _0x39232a=_['isEmpty'](_0x1892bc)&&_[_0xa719('0x8d')](_0x3a198a)?null:_[_0xa719('0x8e')](_0x3a198a,_0x1892bc);if(!_0x39232a)return null;var _0x153aeb=[];for(var _0x377e0f=0x0;_0x377e0f<_0x39232a[_0xa719('0x8f')];_0x377e0f++){var _0x25ccba=_[_0xa719('0x89')](_0x243c7f,function(_0x7bbc3a){return _0x39232a[_0x377e0f]?_0x7bbc3a[_0xa719('0x9')]===_0x39232a[_0x377e0f]['name']:null;});if(_0x25ccba){if(_0x39232a[_0x377e0f][_0xa719('0x8c')]){_0x153aeb[_0xa719('0x87')](_0x29ee98(_0x5780d4['childModel'],_0x39232a[_0x377e0f]));}else{if(!_0x39232a[_0x377e0f][_0xa719('0x90')]){_0x153aeb[_0xa719('0x87')](_0x51cf5e(_0x25ccba,_0x39232a[_0x377e0f],_0x5780d4[_0xa719('0xf')]));}else{if(_0x25ccba[_0xa719('0x91')]){_0x153aeb[_0xa719('0x87')](_0x1c3c4a(_0x25ccba,_0x39232a[_0x377e0f]));}}}}}return Promise[_0xa719('0x8b')](_0x153aeb);})['then'](function(_0x50f3ea){var _0x56a4ac=_0x50f3ea;var _0x36701f=null;if(_0x56a4ac){_0x36701f=_0x56a4ac[_0xa719('0x8f')]===0x1?_0x56a4ac[0x0]:null;}if(!_0x36701f&&!_0x56a4ac)return _0x4e821a;var _0x3178b0=_0x5ae60d[_0x5780d4['childModel']]['rawAttributes'];_0x43b3a2[_0xa719('0x91')]=_[_0xa719('0x92')](_0x3178b0);_0x43b3a2['query']=_[_0xa719('0x92')](_0x46ea63[_0xa719('0x81')]);_0x43b3a2[_0xa719('0x93')]=_[_0xa719('0x94')](_0x43b3a2[_0xa719('0x91')],_0x43b3a2[_0xa719('0x81')]);_0x336e96[_0xa719('0x95')]=_['intersection'](_0x43b3a2[_0xa719('0x91')],qs['fields'](_0x46ea63[_0xa719('0x81')][_0xa719('0x96')]));_0x336e96[_0xa719('0x95')]=_0x336e96[_0xa719('0x95')][_0xa719('0x8f')]?_0x336e96['attributes']:_0x43b3a2['model'];if(!_0x46ea63['query']['hasOwnProperty'](_0xa719('0x97'))){_0x336e96[_0xa719('0x98')]=qs[_0xa719('0x98')](_0x46ea63[_0xa719('0x81')][_0xa719('0x98')]);_0x336e96[_0xa719('0x99')]=qs[_0xa719('0x99')](_0x46ea63[_0xa719('0x81')][_0xa719('0x99')]);}_0x336e96['order']=qs[_0xa719('0x9a')](_0x46ea63[_0xa719('0x81')]['sort']);_0x336e96['where']=qs[_0xa719('0x93')](_[_0xa719('0x9b')](_0x46ea63[_0xa719('0x81')],_0x43b3a2[_0xa719('0x93')]));if(_0x46ea63['query'][_0xa719('0x2')]){_0x336e96[_0xa719('0x7f')]=_[_0xa719('0x9c')](_0x336e96[_0xa719('0x7f')],{'$or':_[_0xa719('0x7')](_0x3178b0,function(_0xc16cab){if(_0xc16cab[_0xa719('0x9d')][_0xa719('0x9e')]!==_0xa719('0x9f')){var _0x28e71c={};_0x28e71c[_0xc16cab['field']]={'$like':'%'+_0x46ea63[_0xa719('0x81')][_0xa719('0x2')]+'%'};return _0x28e71c;}})});}var _0xfc397e=[];if(_0x36701f){var _0x51b6cc=_[_0xa719('0x89')](_0x243c7f,[_0xa719('0x9'),_0x36701f[_0xa719('0x9')]]);if(_0x51b6cc['field']){var _0x3e444c={};if(_0x5780d4[_0xa719('0xf')]===_0xa719('0x71')){_0x3e444c[_0x51b6cc['foreignKey']]=_[_0xa719('0x7')](_0x36701f['associatedResources'],'id');}else{_0x3e444c[_0x51b6cc[_0xa719('0xa0')]]=_0x36701f['associatedResources'];}_0xfc397e[_0xa719('0x87')](_0x3e444c);}else{_0x336e96[_0xa719('0x7f')]['id']=_0x36701f[_0xa719('0x8')];}}else{for(var _0x306c41=0x0;_0x306c41<_0x56a4ac[_0xa719('0x8f')];_0x306c41++){var _0x51b6cc=_['find'](_0x243c7f,['name',_0x56a4ac[_0x306c41][_0xa719('0x9')]]);if(_0x51b6cc['field']){var _0x3e444c={};_0x3e444c[_0x51b6cc[_0xa719('0xa0')]]=_0x56a4ac[_0x306c41][_0xa719('0x8')];_0xfc397e[_0xa719('0x87')](_0x3e444c);}else{if(!_0x336e96[_0xa719('0x7f')]['id'])_0x336e96[_0xa719('0x7f')]['id']=[];_0x56a4ac[_0x306c41]['associatedResources']['forEach'](function(_0x350ecb){_0x336e96[_0xa719('0x7f')]['id'][_0xa719('0x87')](_0x350ecb);});}}}if(!_['isEmpty'](_0xfc397e)){_0x336e96[_0xa719('0x7f')]=_[_0xa719('0x9c')](_0x336e96[_0xa719('0x7f')],{'$and':{'$or':_0xfc397e}});}_0x336e96=_[_0xa719('0x9c')]({},_0x336e96,_0x46ea63[_0xa719('0xa1')]);if(_0x36701f&&!_0x36701f[_0xa719('0x90')]&&_0x5780d4[_0xa719('0xf')]==='AnalyticExtractedReport'){if(_0x46ea63['query'][_0xa719('0xa2')]){_0x336e96[_0xa719('0xa3')]=[{'all':!![]}];}return _0x5ae60d[_0x5780d4['childModel']][_0xa719('0x5')](_0x336e96)[_0xa719('0x6')](function(_0x361dd3){var _0x1a2b63=[];_0x361dd3['forEach'](function(_0x55fd6a){var _0x1f0071;switch(_0x55fd6a['reportType']){case _0xa719('0xa4'):_0x1f0071=_[_0xa719('0x89')](_0x36701f['associatedResources'],function(_0x1ecd63){return _0x1ecd63['id']===_0x55fd6a['reportId']&&_0x1ecd63['type']===_0xa719('0xa5');});break;case _0xa719('0xa6'):_0x1f0071=_[_0xa719('0x89')](_0x36701f[_0xa719('0x8')],function(_0x16d2df){return _0x16d2df['id']===_0x55fd6a[_0xa719('0x72')]&&_0x16d2df[_0xa719('0x9d')]==='CustomReports';});break;}if(_0x1f0071)_0x1a2b63[_0xa719('0x87')](_0x55fd6a);});_0x4e821a[_0xa719('0xa7')]=_0x1a2b63[_0xa719('0x8f')];_0x4e821a[_0xa719('0xa8')]=_0x1a2b63;return _0x4e821a;});}else{return _0x5ae60d[_0x5780d4[_0xa719('0xf')]]['count']({'where':_0x336e96['where']})[_0xa719('0x6')](function(_0x4bc5dc){_0x4e821a[_0xa719('0xa7')]=_0x4bc5dc;if(_0x46ea63[_0xa719('0x81')][_0xa719('0xa2')]){if(_0x5780d4[_0xa719('0xf')]===_0xa719('0x19')){_0x336e96[_0xa719('0xa3')]=[{'model':_0x5ae60d[_0xa719('0x68')],'as':_0xa719('0xa9'),'attributes':['id',_0xa719('0x9'),_0xa719('0xaa')],'required':_0x46ea63[_0xa719('0x81')][_0xa719('0xab')]?!![]:![]},{'model':_0x5ae60d[_0xa719('0x68')],'as':_0xa719('0xac'),'attributes':['id','name',_0xa719('0xaa')],'through':_0x46ea63[_0xa719('0x81')]['tag']?{'attributes':[],'where':{'TagId':_0x46ea63[_0xa719('0x81')]['tag']||undefined}}:{},'required':_0x46ea63[_0xa719('0x81')][_0xa719('0xab')]?!![]:![]}];}else{_0x336e96[_0xa719('0xa3')]=[{'all':!![]}];}}return _0x5ae60d[_0x5780d4[_0xa719('0xf')]]['findAll'](_0x336e96);})['then'](function(_0x4df427){_0x4e821a['rows']=_0x4df427;if(_0x425f56===_0xa719('0x2c')&&_0x46ea63['query'][_0xa719('0xad')]==='true'){var _0xf65f75=[];for(var _0x314a26=0x0;_0x314a26<_0x4e821a[_0xa719('0xa8')][_0xa719('0x8f')];_0x314a26++){_0xf65f75['push'](_0x4cc1d9(_0xa719('0xae'),_0x4e821a[_0xa719('0xa8')][_0x314a26][_0xa719('0xaf')]));_0xf65f75['push'](_0x4cc1d9(_0xa719('0xb0'),_0x4e821a[_0xa719('0xa8')][_0x314a26][_0xa719('0xaf')]));_0xf65f75['push'](_0x4cc1d9('fax',_0x4e821a[_0xa719('0xa8')][_0x314a26][_0xa719('0xaf')]));_0xf65f75[_0xa719('0x87')](_0x4cc1d9(_0xa719('0xb1'),_0x4e821a['rows'][_0x314a26]['dataValues']));_0xf65f75[_0xa719('0x87')](_0x4cc1d9(_0xa719('0xb2'),_0x4e821a['rows'][_0x314a26]['dataValues']));_0xf65f75['push'](_0x4cc1d9('whatsapp',_0x4e821a[_0xa719('0xa8')][_0x314a26][_0xa719('0xaf')]));}return Promise[_0xa719('0x8b')](_0xf65f75)['then'](function(){return _0x4e821a;});}return _0x4e821a;});}});}}});};
\ No newline at end of file
+var _0xd8fb=['CmList','companies','CmCompany','CmCustomField','chatqueues','ChatWebsite','faxqueues','faxaccounts','FaxAccount','inboundroutes','internalroutes','VoiceExtension','contexts','VoiceContext','voicerecordings','VoiceRecording','Agents','agent','Telephones','membername','User','role','telephone','VoiceQueues','queue','VoiceQueue','inbound','QueueCampaigns','musiconholds','VoiceMusicOnHold','voiceprefixes','VoicePrefix','Campaign','mailqueues','MailQueue','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelAccount','smsqueues','smsaccounts','SmsAccount','whatsappqueues','teams','Team','voicequeues','queuecampaigns','users','agents','telephones','Users','admin','user','zendeskaccounts','ZendeskAccount','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','Dashboard','intervals','Interval','pauses','Pause','Schedule','sounds','Sound','tags','Tag','templates','Template','Trigger','plugins','Plugin','extractedreports','Reports','reportId','metrics','AnalyticMetric','charAt','toUpperCase','Sequelize','QueryTypes','SELECT','ui.','InteractionId','user_has_','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','toString','OpenTabs','define','UserProfile','user_profiles','mergeResources','length','UserProfileSection','find','all','ignore','isEmpty','push','rawAttributes','keys','filters','intersection','attributes','fields','hasOwnProperty','limit','offset','order','sort','pick','merge','key','foreignKey','autoAssociation','includeAll','include','forEach','default','DefaultReports','custom','CustomReports','count','rows','Tags','color','ThroughTags','tag','openTabs','true','chat','dataValues','mail','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','models','filter','value','associatedResources','map','field','model','findAll','then','name','catch','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','type','squareprojects','childModel','SquareProject','odbc','SquareOdbc','squarerecordings','parentSections','SquareProjects','projectName','JscriptyProject','contacts','CmContact','ListId','lists'];(function(_0x4a4dae,_0xed1284){var _0x39d84f=function(_0x20118a){while(--_0x20118a){_0x4a4dae['push'](_0x4a4dae['shift']());}};_0x39d84f(++_0xed1284);}(_0xd8fb,0x99));var _0xbd8f=function(_0x2f4f19,_0x4a180d){_0x2f4f19=_0x2f4f19-0x0;var _0x12733d=_0xd8fb[_0x2f4f19];return _0x12733d;};'use strict';var _=require(_0xbd8f('0x0'));var attributes=require(_0xbd8f('0x1'));var qs=require(_0xbd8f('0x2'));var squel=require(_0xbd8f('0x3'));module['exports']=function(_0x5ea933){var _0x4e9545=_0x5ea933[_0xbd8f('0x4')];function _0x43d177(_0x53cccc,_0x400dfb){return new Promise(function(_0x2343bf,_0x5543b2){if(!_0x400dfb)return _0x2343bf(null);var _0x33d541=_0x400dfb['filter']?{[_0x400dfb[_0xbd8f('0x5')]['field']]:_0x400dfb[_0xbd8f('0x5')][_0xbd8f('0x6')]}:undefined;return _0x4e9545[_0x53cccc]['findAll']({'where':_0x33d541,'raw':!![]})['then'](function(_0x3caa93){_0x400dfb[_0xbd8f('0x7')]=_[_0xbd8f('0x8')](_0x3caa93,'id');_0x2343bf(_0x400dfb);})['catch'](function(_0x255af3){_0x5543b2(_0x255af3);});});}function _0x42ae20(_0x5b834b,_0x4ac253){return new Promise(function(_0x342bcb,_0x40a5bc){var _0x12dcac=_0x5b834b['filter']?{[_0x5b834b[_0xbd8f('0x5')][_0xbd8f('0x9')]]:_0x5b834b[_0xbd8f('0x5')][_0xbd8f('0x6')]}:undefined;return _0x4e9545[_0x5b834b[_0xbd8f('0xa')]][_0xbd8f('0xb')]({'where':_0x12dcac,'raw':!![]})[_0xbd8f('0xc')](function(_0x29ffe8){_0x4ac253[_0xbd8f('0x7')]=_['map'](_0x29ffe8,function(_0x31573c){return _0x31573c[_0xbd8f('0xd')];});_0x342bcb(_0x4ac253);})[_0xbd8f('0xe')](function(_0x10d72e){_0x40a5bc(_0x10d72e);});});}function _0x4da96f(_0x174929,_0x63db18,_0x5ebf8b){if(!_0x63db18)return Promise[_0xbd8f('0xf')](null);return new Promise(function(_0xf5e7a,_0x504adb){return _0x4e9545[_0xbd8f('0x10')][_0xbd8f('0xb')]({'where':{'sectionId':_0x63db18['id']},'raw':!![]})['then'](function(_0x5a572b){if(_0x174929[_0xbd8f('0x9')]&&_0x174929['field']!=='id'){_0x63db18['associatedResources']=_[_0xbd8f('0x8')](_0x5a572b,function(_0x4b5fac){return _0x4b5fac[_0x174929[_0xbd8f('0x9')]];});}else{if(_0x5ebf8b===_0xbd8f('0x11')){_0x63db18[_0xbd8f('0x7')]=_[_0xbd8f('0x8')](_0x5a572b,function(_0xdc11cc){return{'id':_0xdc11cc[_0xbd8f('0x12')],'type':_0xdc11cc[_0xbd8f('0x13')]};});}else{_0x63db18[_0xbd8f('0x7')]=_[_0xbd8f('0x8')](_0x5a572b,function(_0x775acc){return _0x775acc[_0xbd8f('0x12')];});}}_0xf5e7a(_0x63db18);})[_0xbd8f('0xe')](function(_0x2f7c45){_0x504adb(_0x2f7c45);});});}function _0x15c4a9(_0x320ede,_0xd11ae){var _0x395b1b={'parentSections':[]};switch(_0x320ede['toLowerCase']()){case _0xbd8f('0x14'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x16');break;case _0xbd8f('0x17'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x18');break;case _0xbd8f('0x19'):_0x395b1b[_0xbd8f('0x15')]='SquareRecording';_0x395b1b[_0xbd8f('0x1a')]=[{'name':_0xbd8f('0x1b'),'field':'name','foreignKey':_0xbd8f('0x1c')}];break;case'projects':_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x1d');break;case _0xbd8f('0x1e'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x1f');_0x395b1b[_0xbd8f('0x1a')]=[{'name':'Lists','field':'id','foreignKey':_0xbd8f('0x20')}];break;case _0xbd8f('0x21'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x22');break;case _0xbd8f('0x23'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x24');break;case'globalcustomfields':_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x25');break;case _0xbd8f('0x26'):_0x395b1b[_0xbd8f('0x15')]='ChatQueue';break;case'chatwebsites':_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x27');break;case _0xbd8f('0x28'):_0x395b1b[_0xbd8f('0x15')]='FaxQueue';break;case _0xbd8f('0x29'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x2a');break;case _0xbd8f('0x2b'):case _0xbd8f('0x2c'):case'outboundroutes':_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x2d');break;case _0xbd8f('0x2e'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x2f');break;case'voicemails':_0x395b1b[_0xbd8f('0x15')]='VoiceMail';break;case _0xbd8f('0x30'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x31');_0x395b1b[_0xbd8f('0x1a')]=[{'name':_0xbd8f('0x32'),'field':_0xbd8f('0xd'),'foreignKey':'membername','model':'User','filter':{'field':'role','value':[_0xbd8f('0x33')]}},{'name':_0xbd8f('0x34'),'field':_0xbd8f('0xd'),'foreignKey':_0xbd8f('0x35'),'model':_0xbd8f('0x36'),'filter':{'field':_0xbd8f('0x37'),'value':[_0xbd8f('0x38')]}},{'name':_0xbd8f('0x39'),'field':_0xbd8f('0xd'),'foreignKey':_0xbd8f('0x3a'),'model':_0xbd8f('0x3b'),'filter':{'field':_0xbd8f('0x13'),'value':[_0xbd8f('0x3c')]}},{'name':_0xbd8f('0x3d'),'field':_0xbd8f('0xd'),'foreignKey':'queue','model':_0xbd8f('0x3b'),'filter':{'field':_0xbd8f('0x13'),'value':['outbound']}}];break;case _0xbd8f('0x3e'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x3f');break;case'chanspies':_0x395b1b[_0xbd8f('0x15')]='VoiceChanSpy';break;case _0xbd8f('0x40'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x41');break;case'ivrcampaigns':_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x42');break;case _0xbd8f('0x43'):_0x395b1b['childModel']=_0xbd8f('0x44');break;case _0xbd8f('0x45'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x46');break;case _0xbd8f('0x47'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x48');break;case _0xbd8f('0x49'):_0x395b1b[_0xbd8f('0x15')]='OpenchannelQueue';break;case'openchannelaccounts':_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x4a');break;case _0xbd8f('0x4b'):_0x395b1b[_0xbd8f('0x15')]='SmsQueue';break;case _0xbd8f('0x4c'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x4d');break;case _0xbd8f('0x4e'):_0x395b1b[_0xbd8f('0x15')]='WhatsappQueue';break;case'whatsappaccounts':_0x395b1b[_0xbd8f('0x15')]='WhatsappAccount';break;case _0xbd8f('0x4f'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x50');break;case _0xbd8f('0x51'):case _0xbd8f('0x52'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x3b');if(_0xd11ae){_0x395b1b[_0xbd8f('0x1a')]=[{'name':'VoiceQueues'},{'name':_0xbd8f('0x3d')}];}break;case _0xbd8f('0x53'):case _0xbd8f('0x54'):case _0xbd8f('0x55'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x36');if(_0xd11ae){_0x395b1b[_0xbd8f('0x1a')]=[{'name':_0xbd8f('0x56'),'filter':{'field':'role','value':[_0xbd8f('0x57'),_0xbd8f('0x58')]},'ignore':!![]},{'name':_0xbd8f('0x32')},{'name':_0xbd8f('0x34')}];}break;case _0xbd8f('0x59'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x5a');break;case _0xbd8f('0x5b'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x5c');break;case _0xbd8f('0x5d'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x5e');break;case _0xbd8f('0x5f'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x60');break;case _0xbd8f('0x61'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x62');break;case'zohoaccounts':_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x63');break;case _0xbd8f('0x64'):_0x395b1b[_0xbd8f('0x15')]='User';break;case _0xbd8f('0x65'):_0x395b1b['childModel']=_0xbd8f('0x66');break;case _0xbd8f('0x67'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x68');break;case'customdashboards':_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x69');break;case _0xbd8f('0x6a'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x6b');break;case _0xbd8f('0x6c'):_0x395b1b['childModel']=_0xbd8f('0x6d');break;case'scheduler':_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x6e');break;case _0xbd8f('0x6f'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x70');break;case _0xbd8f('0x71'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x72');break;case _0xbd8f('0x73'):_0x395b1b['childModel']=_0xbd8f('0x74');break;case'triggers':_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x75');break;case'trunks':_0x395b1b[_0xbd8f('0x15')]='Trunk';break;case'variables':_0x395b1b['childModel']='Variable';break;case _0xbd8f('0x76'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x77');break;case _0xbd8f('0x78'):_0x395b1b[_0xbd8f('0x15')]='AnalyticExtractedReport';_0x395b1b['parentSections']=[{'name':_0xbd8f('0x79'),'field':'id','foreignKey':_0xbd8f('0x7a')}];break;case _0xbd8f('0x7b'):_0x395b1b[_0xbd8f('0x15')]=_0xbd8f('0x7c');break;}return _0x395b1b;}function _0x576970(_0x4d2b28,_0x55a99b){var _0x9cf2d5=_0x4d2b28[_0xbd8f('0x7d')](0x0)[_0xbd8f('0x7e')]()+_0x4d2b28['slice'](0x1);var _0x3255be={'type':_0x4e9545[_0xbd8f('0x7f')][_0xbd8f('0x80')][_0xbd8f('0x81')],'raw':!![]};return new Promise(function(_0x50622d,_0x5327f2){var _0x388af8=squel['select']()[_0xbd8f('0x9')](_0xbd8f('0x82')+_0x9cf2d5+_0xbd8f('0x83'),'id')[_0xbd8f('0x9')]('ui.createdAt')['from'](_0xbd8f('0x84')+_0x4d2b28+_0xbd8f('0x85'),'ui')[_0xbd8f('0x86')](_0xbd8f('0x87'),_0x55a99b['id']);return _0x4e9545[_0xbd8f('0x88')][_0xbd8f('0x89')](_0x388af8[_0xbd8f('0x8a')](),_0x3255be)[_0xbd8f('0xc')](function(_0x2b9ba3){_0x55a99b[_0x9cf2d5+_0xbd8f('0x8b')]=_0x2b9ba3;_0x50622d(_0x2b9ba3);})[_0xbd8f('0xe')](function(_0x5c69c6){_0x5327f2(_0x5c69c6);});});}return _0x5ea933[_0xbd8f('0x8c')](_0xbd8f('0x8d'),attributes,{'tableName':_0xbd8f('0x8e'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x12ee82){var _0x3b43f7={'raw':![],'where':{}};var _0xbbe096={};var _0x50e345={'count':0x0,'rows':[]};var _0x46c686=_0x12ee82[_0xbd8f('0x89')]['section'];var _0x5e18fc=_0x12ee82[_0xbd8f('0x89')][_0xbd8f('0x8f')]||![];var _0x109616=_0x15c4a9(_0x46c686,_0x5e18fc);if(!_0x109616['childModel'])throw new Error('Invalid\x20section\x20\x27'+_0x46c686+'\x27');var _0x118f1a=[{'name':_0x46c686}];if(!_['isEmpty'](_0x109616['parentSections']))_0x118f1a=_0x109616['parentSections'];var _0x5a858e=[];for(var _0x5b26eb=0x0;_0x5b26eb<_0x118f1a[_0xbd8f('0x90')];_0x5b26eb++){_0x5a858e['push'](_0x4e9545[_0xbd8f('0x91')][_0xbd8f('0x92')]({'where':{'userProfileId':_0x12ee82['params']['id'],'name':_0x118f1a[_0x5b26eb][_0xbd8f('0xd')]},'raw':!![]}));}return Promise[_0xbd8f('0x93')](_0x5a858e)[_0xbd8f('0xc')](function(_0xeabb79){var _0x199d7d=_['filter'](_0xeabb79,function(_0x583d7a){return _0x583d7a?_0x583d7a:undefined;});var _0x378e72=_[_0xbd8f('0x5')](_0x118f1a,[_0xbd8f('0x94'),!![]]);var _0x296794=_[_0xbd8f('0x95')](_0x199d7d)&&_[_0xbd8f('0x95')](_0x378e72)?null:_['union'](_0x378e72,_0x199d7d);if(!_0x296794)return null;var _0x4eddf2=[];for(var _0x467b0f=0x0;_0x467b0f<_0x296794[_0xbd8f('0x90')];_0x467b0f++){var _0x528b29=_[_0xbd8f('0x92')](_0x118f1a,function(_0x372386){return _0x296794[_0x467b0f]?_0x372386['name']===_0x296794[_0x467b0f][_0xbd8f('0xd')]:null;});if(_0x528b29){if(_0x296794[_0x467b0f][_0xbd8f('0x94')]){_0x4eddf2[_0xbd8f('0x96')](_0x43d177(_0x109616['childModel'],_0x296794[_0x467b0f]));}else{if(!_0x296794[_0x467b0f]['autoAssociation']){_0x4eddf2[_0xbd8f('0x96')](_0x4da96f(_0x528b29,_0x296794[_0x467b0f],_0x109616[_0xbd8f('0x15')]));}else{if(_0x528b29[_0xbd8f('0xa')]){_0x4eddf2[_0xbd8f('0x96')](_0x42ae20(_0x528b29,_0x296794[_0x467b0f]));}}}}}return Promise[_0xbd8f('0x93')](_0x4eddf2);})['then'](function(_0x200718){var _0x27ec14=_0x200718;var _0x400bf6=null;if(_0x27ec14){_0x400bf6=_0x27ec14[_0xbd8f('0x90')]===0x1?_0x27ec14[0x0]:null;}if(!_0x400bf6&&!_0x27ec14)return _0x50e345;var _0x1efdf4=_0x4e9545[_0x109616[_0xbd8f('0x15')]][_0xbd8f('0x97')];_0xbbe096[_0xbd8f('0xa')]=_[_0xbd8f('0x98')](_0x1efdf4);_0xbbe096[_0xbd8f('0x89')]=_[_0xbd8f('0x98')](_0x12ee82[_0xbd8f('0x89')]);_0xbbe096[_0xbd8f('0x99')]=_[_0xbd8f('0x9a')](_0xbbe096[_0xbd8f('0xa')],_0xbbe096[_0xbd8f('0x89')]);_0x3b43f7[_0xbd8f('0x9b')]=_[_0xbd8f('0x9a')](_0xbbe096['model'],qs[_0xbd8f('0x9c')](_0x12ee82[_0xbd8f('0x89')][_0xbd8f('0x9c')]));_0x3b43f7[_0xbd8f('0x9b')]=_0x3b43f7[_0xbd8f('0x9b')][_0xbd8f('0x90')]?_0x3b43f7['attributes']:_0xbbe096['model'];if(!_0x12ee82[_0xbd8f('0x89')][_0xbd8f('0x9d')]('nolimit')){_0x3b43f7[_0xbd8f('0x9e')]=qs['limit'](_0x12ee82[_0xbd8f('0x89')][_0xbd8f('0x9e')]);_0x3b43f7[_0xbd8f('0x9f')]=qs[_0xbd8f('0x9f')](_0x12ee82['query'][_0xbd8f('0x9f')]);}_0x3b43f7[_0xbd8f('0xa0')]=qs[_0xbd8f('0xa1')](_0x12ee82['query'][_0xbd8f('0xa1')]);_0x3b43f7[_0xbd8f('0x86')]=qs[_0xbd8f('0x99')](_[_0xbd8f('0xa2')](_0x12ee82['query'],_0xbbe096[_0xbd8f('0x99')]));if(_0x12ee82[_0xbd8f('0x89')][_0xbd8f('0x5')]){_0x3b43f7[_0xbd8f('0x86')]=_[_0xbd8f('0xa3')](_0x3b43f7[_0xbd8f('0x86')],{'$or':_[_0xbd8f('0x8')](_0x1efdf4,function(_0x3a320c){if(_0x3a320c['type'][_0xbd8f('0xa4')]!=='VIRTUAL'){var _0x3da31b={};_0x3da31b[_0x3a320c['field']]={'$like':'%'+_0x12ee82[_0xbd8f('0x89')][_0xbd8f('0x5')]+'%'};return _0x3da31b;}})});}var _0x5465e5=[];var _0x3d015f=null;var _0x87191={};if(_0x400bf6){_0x3d015f=_[_0xbd8f('0x92')](_0x118f1a,[_0xbd8f('0xd'),_0x400bf6['name']]);if(_0x3d015f[_0xbd8f('0x9')]){_0x87191={};if(_0x109616[_0xbd8f('0x15')]===_0xbd8f('0x11')){_0x87191[_0x3d015f[_0xbd8f('0xa5')]]=_['map'](_0x400bf6['associatedResources'],'id');}else{_0x87191[_0x3d015f[_0xbd8f('0xa5')]]=_0x400bf6[_0xbd8f('0x7')];}_0x5465e5[_0xbd8f('0x96')](_0x87191);}else{_0x3b43f7[_0xbd8f('0x86')]['id']=_0x400bf6[_0xbd8f('0x7')];}}else{for(var _0x53076d=0x0;_0x53076d<_0x27ec14[_0xbd8f('0x90')];_0x53076d++){_0x3d015f=_[_0xbd8f('0x92')](_0x118f1a,[_0xbd8f('0xd'),_0x27ec14[_0x53076d][_0xbd8f('0xd')]]);if(_0x3d015f[_0xbd8f('0x9')]){_0x87191={};_0x87191[_0x3d015f['foreignKey']]=_0x27ec14[_0x53076d]['associatedResources'];_0x5465e5['push'](_0x87191);}else{if(!_0x3b43f7[_0xbd8f('0x86')]['id'])_0x3b43f7['where']['id']=[];_0x27ec14[_0x53076d]['associatedResources']['forEach'](function(_0x63c20c){_0x3b43f7[_0xbd8f('0x86')]['id'][_0xbd8f('0x96')](_0x63c20c);});}}}if(!_[_0xbd8f('0x95')](_0x5465e5)){_0x3b43f7[_0xbd8f('0x86')]=_[_0xbd8f('0xa3')](_0x3b43f7[_0xbd8f('0x86')],{'$and':{'$or':_0x5465e5}});}_0x3b43f7=_[_0xbd8f('0xa3')]({},_0x3b43f7,_0x12ee82['options']);if(_0x400bf6&&!_0x400bf6[_0xbd8f('0xa6')]&&_0x109616[_0xbd8f('0x15')]===_0xbd8f('0x11')){if(_0x12ee82['query'][_0xbd8f('0xa7')]){_0x3b43f7[_0xbd8f('0xa8')]=[{'all':!![]}];}return _0x4e9545[_0x109616[_0xbd8f('0x15')]][_0xbd8f('0xb')](_0x3b43f7)[_0xbd8f('0xc')](function(_0x44ee0d){var _0x1d3c63=[];_0x44ee0d[_0xbd8f('0xa9')](function(_0x3aa33a){var _0x9e2f8a;switch(_0x3aa33a['reportType']){case _0xbd8f('0xaa'):_0x9e2f8a=_[_0xbd8f('0x92')](_0x400bf6[_0xbd8f('0x7')],function(_0x5c9c3a){return _0x5c9c3a['id']===_0x3aa33a[_0xbd8f('0x7a')]&&_0x5c9c3a['type']===_0xbd8f('0xab');});break;case _0xbd8f('0xac'):_0x9e2f8a=_[_0xbd8f('0x92')](_0x400bf6[_0xbd8f('0x7')],function(_0x351caa){return _0x351caa['id']===_0x3aa33a['reportId']&&_0x351caa[_0xbd8f('0x13')]===_0xbd8f('0xad');});break;}if(_0x9e2f8a)_0x1d3c63[_0xbd8f('0x96')](_0x3aa33a);});_0x50e345[_0xbd8f('0xae')]=_0x1d3c63[_0xbd8f('0x90')];_0x50e345[_0xbd8f('0xaf')]=_0x1d3c63;return _0x50e345;});}else{return _0x4e9545[_0x109616['childModel']][_0xbd8f('0xae')]({'where':_0x3b43f7[_0xbd8f('0x86')]})['then'](function(_0x49e15e){_0x50e345[_0xbd8f('0xae')]=_0x49e15e;if(_0x12ee82['query']['includeAll']){if(_0x109616['childModel']===_0xbd8f('0x1f')){_0x3b43f7[_0xbd8f('0xa8')]=[{'model':_0x4e9545[_0xbd8f('0x72')],'as':_0xbd8f('0xb0'),'attributes':['id','name',_0xbd8f('0xb1')],'required':_0x12ee82[_0xbd8f('0x89')]['tag']?!![]:![]},{'model':_0x4e9545['Tag'],'as':_0xbd8f('0xb2'),'attributes':['id','name',_0xbd8f('0xb1')],'through':_0x12ee82['query']['tag']?{'attributes':[],'where':{'TagId':_0x12ee82[_0xbd8f('0x89')][_0xbd8f('0xb3')]||undefined}}:{},'required':_0x12ee82[_0xbd8f('0x89')][_0xbd8f('0xb3')]?!![]:![]}];}else{_0x3b43f7[_0xbd8f('0xa8')]=[{'all':!![]}];}}return _0x4e9545[_0x109616['childModel']][_0xbd8f('0xb')](_0x3b43f7);})[_0xbd8f('0xc')](function(_0x3a6ec4){_0x50e345['rows']=_0x3a6ec4;if(_0x46c686===_0xbd8f('0x32')&&_0x12ee82[_0xbd8f('0x89')][_0xbd8f('0xb4')]===_0xbd8f('0xb5')){var _0x11fb11=[];for(var _0xc7a57c=0x0;_0xc7a57c<_0x50e345[_0xbd8f('0xaf')][_0xbd8f('0x90')];_0xc7a57c++){_0x11fb11[_0xbd8f('0x96')](_0x576970(_0xbd8f('0xb6'),_0x50e345['rows'][_0xc7a57c]['dataValues']));_0x11fb11['push'](_0x576970('sms',_0x50e345[_0xbd8f('0xaf')][_0xc7a57c][_0xbd8f('0xb7')]));_0x11fb11['push'](_0x576970('fax',_0x50e345['rows'][_0xc7a57c]['dataValues']));_0x11fb11[_0xbd8f('0x96')](_0x576970(_0xbd8f('0xb8'),_0x50e345[_0xbd8f('0xaf')][_0xc7a57c]['dataValues']));_0x11fb11[_0xbd8f('0x96')](_0x576970(_0xbd8f('0xb9'),_0x50e345[_0xbd8f('0xaf')][_0xc7a57c][_0xbd8f('0xb7')]));_0x11fb11['push'](_0x576970(_0xbd8f('0xba'),_0x50e345[_0xbd8f('0xaf')][_0xc7a57c][_0xbd8f('0xb7')]));}return Promise['all'](_0x11fb11)[_0xbd8f('0xc')](function(){return _0x50e345;});}return _0x50e345;});}});}}});};
\ No newline at end of file
index 28a9523..5907e39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe062=['client','localhost','socket.io-emitter','register','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','UserProfile,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x4d4b38,_0x3bdb2c){var _0x20e91e=function(_0x404117){while(--_0x404117){_0x4d4b38['push'](_0x4d4b38['shift']());}};_0x20e91e(++_0x3bdb2c);}(_0xe062,0x1b8));var _0x2e06=function(_0x5edc5e,_0x4d5115){_0x5edc5e=_0x5edc5e-0x0;var _0x5314bc=_0xe062[_0x5edc5e];return _0x5314bc;};'use strict';var _=require(_0x2e06('0x0'));var util=require(_0x2e06('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2e06('0x2'));var fs=require('fs');var Redis=require(_0x2e06('0x3'));var db=require(_0x2e06('0x4'))['db'];var utils=require(_0x2e06('0x5'));var logger=require(_0x2e06('0x6'))(_0x2e06('0x7'));var config=require(_0x2e06('0x8'));var jayson=require(_0x2e06('0x9'));var client=jayson[_0x2e06('0xa')]['http']({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0x2e06('0xb'),'port':0x18eb});var socket=require(_0x2e06('0xc'))(new Redis(config['redis']));require('./userProfile.socket')[_0x2e06('0xd')](socket);function respondWithRpcPromise(_0x28433e,_0x6be39d,_0x29a813){return new BPromise(function(_0x18552c,_0x450369){return client[_0x2e06('0xe')](_0x28433e,_0x29a813)[_0x2e06('0xf')](function(_0x396810){logger[_0x2e06('0x10')](_0x2e06('0x11'),_0x6be39d,_0x2e06('0x12'));logger['debug'](_0x2e06('0x13'),_0x6be39d,_0x2e06('0x12'),JSON['stringify'](_0x396810));if(_0x396810['error']){if(_0x396810[_0x2e06('0x14')][_0x2e06('0x15')]===0x1f4){logger['error']('UserProfile,\x20%s,\x20%s',_0x6be39d,_0x396810[_0x2e06('0x14')]['message']);return _0x450369(_0x396810['error'][_0x2e06('0x16')]);}logger[_0x2e06('0x14')]('UserProfile,\x20%s,\x20%s',_0x6be39d,_0x396810[_0x2e06('0x14')]['message']);return _0x18552c(_0x396810[_0x2e06('0x14')]['message']);}else{logger[_0x2e06('0x10')](_0x2e06('0x11'),_0x6be39d,_0x2e06('0x12'));_0x18552c(_0x396810[_0x2e06('0x17')][_0x2e06('0x16')]);}})[_0x2e06('0x18')](function(_0x3773fa){logger['error'](_0x2e06('0x11'),_0x6be39d,_0x3773fa);_0x450369(_0x3773fa);});});}
\ No newline at end of file
+var _0xdec3=['result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','./userProfile.socket','then','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info'];(function(_0x353471,_0x19f123){var _0x584806=function(_0x3c8352){while(--_0x3c8352){_0x353471['push'](_0x353471['shift']());}};_0x584806(++_0x19f123);}(_0xdec3,0x89));var _0x3dec=function(_0x226d3a,_0x268acb){_0x226d3a=_0x226d3a-0x0;var _0x21c50e=_0xdec3[_0x226d3a];return _0x21c50e;};'use strict';var _=require(_0x3dec('0x0'));var util=require('util');var moment=require(_0x3dec('0x1'));var BPromise=require(_0x3dec('0x2'));var rs=require(_0x3dec('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3dec('0x4'))['db'];var utils=require(_0x3dec('0x5'));var logger=require(_0x3dec('0x6'))(_0x3dec('0x7'));var config=require('../../config/environment');var jayson=require(_0x3dec('0x8'));var client=jayson[_0x3dec('0x9')][_0x3dec('0xa')]({'port':0x232a});config[_0x3dec('0xb')]=_[_0x3dec('0xc')](config[_0x3dec('0xb')],{'host':_0x3dec('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3dec('0xb')]));require(_0x3dec('0xe'))['register'](socket);function respondWithRpcPromise(_0x26a604,_0x4c5748,_0x5830f7){return new BPromise(function(_0x3ce0b7,_0x24f12c){return client['request'](_0x26a604,_0x5830f7)[_0x3dec('0xf')](function(_0x35b85a){logger['info'](_0x3dec('0x10'),_0x4c5748,_0x3dec('0x11'));logger[_0x3dec('0x12')](_0x3dec('0x13'),_0x4c5748,_0x3dec('0x11'),JSON[_0x3dec('0x14')](_0x35b85a));if(_0x35b85a['error']){if(_0x35b85a['error'][_0x3dec('0x15')]===0x1f4){logger['error'](_0x3dec('0x10'),_0x4c5748,_0x35b85a[_0x3dec('0x16')]['message']);return _0x24f12c(_0x35b85a['error'][_0x3dec('0x17')]);}logger['error'](_0x3dec('0x10'),_0x4c5748,_0x35b85a['error'][_0x3dec('0x17')]);return _0x3ce0b7(_0x35b85a['error'][_0x3dec('0x17')]);}else{logger[_0x3dec('0x18')]('UserProfile,\x20%s,\x20%s',_0x4c5748,_0x3dec('0x11'));_0x3ce0b7(_0x35b85a[_0x3dec('0x19')][_0x3dec('0x17')]);}})[_0x3dec('0x1a')](function(_0x189fd8){logger[_0x3dec('0x16')](_0x3dec('0x10'),_0x4c5748,_0x189fd8);_0x24f12c(_0x189fd8);});});}
\ No newline at end of file
index 037532e..a5c9700 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f73=['userProfile:','remove','update','emit','removeListener','length'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5f73,0x1cf));var _0x35f7=function(_0x2955bc,_0x55cab2){_0x2955bc=_0x2955bc-0x0;var _0x3b88d9=_0x5f73[_0x2955bc];return _0x3b88d9;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=['save',_0x35f7('0x0'),_0x35f7('0x1')];function createListener(_0x130e23,_0x42e503){return function(_0x4a883e){_0x42e503[_0x35f7('0x2')](_0x130e23,_0x4a883e);};}function removeListener(_0x1725e1,_0x2604ab){return function(){UserProfileEvents[_0x35f7('0x3')](_0x1725e1,_0x2604ab);};}exports['register']=function(_0x3298a0){for(var _0x549143=0x0,_0x118fc7=events[_0x35f7('0x4')];_0x549143<_0x118fc7;_0x549143++){var _0x47ec7d=events[_0x549143];var _0x1f1f96=createListener(_0x35f7('0x5')+_0x47ec7d,_0x3298a0);UserProfileEvents['on'](_0x47ec7d,_0x1f1f96);}};
\ No newline at end of file
+var _0xd4e1=['./userProfile.events','save','remove','update','removeListener'];(function(_0x57cc34,_0x32485d){var _0x347cc5=function(_0x79b5d7){while(--_0x79b5d7){_0x57cc34['push'](_0x57cc34['shift']());}};_0x347cc5(++_0x32485d);}(_0xd4e1,0xa0));var _0x1d4e=function(_0xd5444a,_0x46d5bd){_0xd5444a=_0xd5444a-0x0;var _0x3ef586=_0xd4e1[_0xd5444a];return _0x3ef586;};'use strict';var UserProfileEvents=require(_0x1d4e('0x0'));var events=[_0x1d4e('0x1'),_0x1d4e('0x2'),_0x1d4e('0x3')];function createListener(_0x14364a,_0x39a72e){return function(_0x50c763){_0x39a72e['emit'](_0x14364a,_0x50c763);};}function removeListener(_0x585717,_0x527efb){return function(){UserProfileEvents[_0x1d4e('0x4')](_0x585717,_0x527efb);};}exports['register']=function(_0x47b6d1){for(var _0x35b3e3=0x0,_0x164495=events['length'];_0x35b3e3<_0x164495;_0x35b3e3++){var _0x4ba663=events[_0x35b3e3];var _0x51c958=createListener('userProfile:'+_0x4ba663,_0x47b6d1);UserProfileEvents['on'](_0x4ba663,_0x51c958);}};
\ No newline at end of file
index 57eb479..18c4f0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe654=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','index','describe','/:id','show','post','create','put','update','delete','destroy','multer','util'];(function(_0x3355ba,_0x4390da){var _0x56b655=function(_0x433bdd){while(--_0x433bdd){_0x3355ba['push'](_0x3355ba['shift']());}};_0x56b655(++_0x4390da);}(_0xe654,0x19c));var _0x4e65=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe654[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x4e65('0x0'));var util=require(_0x4e65('0x1'));var path=require(_0x4e65('0x2'));var timeout=require(_0x4e65('0x3'));var express=require(_0x4e65('0x4'));var router=express[_0x4e65('0x5')]();var fs_extra=require(_0x4e65('0x6'));var auth=require(_0x4e65('0x7'));var interaction=require(_0x4e65('0x8'));var config=require(_0x4e65('0x9'));var controller=require(_0x4e65('0xa'));router[_0x4e65('0xb')]('/',auth[_0x4e65('0xc')](),controller[_0x4e65('0xd')]);router[_0x4e65('0xb')]('/describe',auth[_0x4e65('0xc')](),controller[_0x4e65('0xe')]);router['get'](_0x4e65('0xf'),auth[_0x4e65('0xc')](),controller[_0x4e65('0x10')]);router[_0x4e65('0x11')]('/',auth[_0x4e65('0xc')](),controller[_0x4e65('0x12')]);router[_0x4e65('0x13')](_0x4e65('0xf'),auth['isAuthenticated'](),controller[_0x4e65('0x14')]);router[_0x4e65('0x15')](_0x4e65('0xf'),auth[_0x4e65('0xc')](),controller[_0x4e65('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xc302=['destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./userProfileResource.controller','index','get','/describe','isAuthenticated','/:id','show','post','create','put','update','delete'];(function(_0x595932,_0x582fc2){var _0xce9112=function(_0x3d1ab6){while(--_0x3d1ab6){_0x595932['push'](_0x595932['shift']());}};_0xce9112(++_0x582fc2);}(_0xc302,0x17e));var _0x2c30=function(_0x8e3607,_0x328417){_0x8e3607=_0x8e3607-0x0;var _0x43dcfb=_0xc302[_0x8e3607];return _0x43dcfb;};'use strict';var multer=require(_0x2c30('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x2c30('0x1'));var express=require('express');var router=express[_0x2c30('0x2')]();var fs_extra=require(_0x2c30('0x3'));var auth=require(_0x2c30('0x4'));var interaction=require(_0x2c30('0x5'));var config=require('../../config/environment');var controller=require(_0x2c30('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x2c30('0x7')]);router[_0x2c30('0x8')](_0x2c30('0x9'),auth[_0x2c30('0xa')](),controller['describe']);router[_0x2c30('0x8')](_0x2c30('0xb'),auth[_0x2c30('0xa')](),controller[_0x2c30('0xc')]);router[_0x2c30('0xd')]('/',auth[_0x2c30('0xa')](),controller[_0x2c30('0xe')]);router[_0x2c30('0xf')](_0x2c30('0xb'),auth[_0x2c30('0xa')](),controller[_0x2c30('0x10')]);router[_0x2c30('0x11')](_0x2c30('0xb'),auth[_0x2c30('0xa')](),controller[_0x2c30('0x12')]);module[_0x2c30('0x13')]=router;
\ No newline at end of file
index 550f729..33d9534 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ba1=['STRING','exports'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x3ba1,0x79));var _0x13ba=function(_0x4417ff,_0x1aaf67){_0x4417ff=_0x4417ff-0x0;var _0x132809=_0x3ba1[_0x4417ff];return _0x132809;};'use strict';var Sequelize=require('sequelize');module[_0x13ba('0x0')]={'name':{'type':Sequelize[_0x13ba('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize['INTEGER'],'allowNull':![]},'type':{'type':Sequelize[_0x13ba('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x7b97=['exports','STRING','sequelize'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x7b97,0x11f));var _0x77b9=function(_0x42d35d,_0x33e6fc){_0x42d35d=_0x42d35d-0x0;var _0x445dbc=_0x7b97[_0x42d35d];return _0x445dbc;};'use strict';var Sequelize=require(_0x77b9('0x0'));module[_0x77b9('0x1')]={'name':{'type':Sequelize[_0x77b9('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize['INTEGER'],'allowNull':![]},'type':{'type':Sequelize[_0x77b9('0x2')],'allowNull':![]}};
\ No newline at end of file
index c44efe0..970d457 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f0e=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','destroy','end','error','name','send','index','map','UserProfileResource','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','options','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9f0e,0x116));var _0xe9f0=function(_0x3a8cad,_0x29082b){_0x3a8cad=_0x3a8cad-0x0;var _0xb90d9c=_0x9f0e[_0x3a8cad];return _0xb90d9c;};'use strict';var emlformat=require(_0xe9f0('0x0'));var rimraf=require(_0xe9f0('0x1'));var zipdir=require(_0xe9f0('0x2'));var jsonpatch=require(_0xe9f0('0x3'));var rp=require(_0xe9f0('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe9f0('0x5'));var util=require(_0xe9f0('0x6'));var path=require(_0xe9f0('0x7'));var sox=require(_0xe9f0('0x8'));var csv=require(_0xe9f0('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe9f0('0xa'));var squel=require(_0xe9f0('0xb'));var crypto=require(_0xe9f0('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe9f0('0xd'));var toCsv=require(_0xe9f0('0x9'));var querystring=require(_0xe9f0('0xe'));var Papa=require(_0xe9f0('0xf'));var Redis=require(_0xe9f0('0x10'));var authService=require(_0xe9f0('0x11'));var qs=require(_0xe9f0('0x12'));var as=require(_0xe9f0('0x13'));var hardwareService=require(_0xe9f0('0x14'));var logger=require('../../config/logger')(_0xe9f0('0x15'));var utils=require(_0xe9f0('0x16'));var config=require(_0xe9f0('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xe9f0('0x18'))['db'];function respondWithStatusCode(_0x586763,_0x367545){_0x367545=_0x367545||0xcc;return function(_0xd82420){if(_0xd82420){return _0x586763[_0xe9f0('0x19')](_0x367545);}return _0x586763[_0xe9f0('0x1a')](_0x367545)['end']();};}function respondWithResult(_0x2cf75d,_0x5a10c6){_0x5a10c6=_0x5a10c6||0xc8;return function(_0x1e3ba8){if(_0x1e3ba8){return _0x2cf75d[_0xe9f0('0x1a')](_0x5a10c6)[_0xe9f0('0x1b')](_0x1e3ba8);}};}function respondWithFilteredResult(_0x59320d,_0x28bfac){return function(_0x33e9e4){if(_0x33e9e4){var _0x2e68ef=typeof _0x28bfac['offset']===_0xe9f0('0x1c')&&typeof _0x28bfac[_0xe9f0('0x1d')]===_0xe9f0('0x1c');var _0xd71ac8=_0x33e9e4[_0xe9f0('0x1e')];var _0x2ab12b=_0x2e68ef?0x0:_0x28bfac[_0xe9f0('0x1f')];var _0x59bf5a=_0x2e68ef?_0x33e9e4[_0xe9f0('0x1e')]:_0x28bfac[_0xe9f0('0x1f')]+_0x28bfac[_0xe9f0('0x1d')];var _0x5c4182;if(_0x59bf5a>=_0xd71ac8){_0x59bf5a=_0xd71ac8;_0x5c4182=0xc8;}else{_0x5c4182=0xce;}_0x59320d[_0xe9f0('0x1a')](_0x5c4182);return _0x59320d[_0xe9f0('0x20')](_0xe9f0('0x21'),_0x2ab12b+'-'+_0x59bf5a+'/'+_0xd71ac8)[_0xe9f0('0x1b')](_0x33e9e4);}return null;};}function patchUpdates(_0x5ba788){return function(_0x33f143){try{jsonpatch[_0xe9f0('0x22')](_0x33f143,_0x5ba788,!![]);}catch(_0x583687){return BPromise['reject'](_0x583687);}return _0x33f143['save']();};}function saveUpdates(_0x12fe9f,_0xa1ddc){return function(_0x1211ae){if(_0x1211ae){return _0x1211ae[_0xe9f0('0x23')](_0x12fe9f)[_0xe9f0('0x24')](function(_0x4a5c27){return _0x4a5c27;});}return null;};}function removeEntity(_0x229fe0,_0x38b7ee){return function(_0x437d43){if(_0x437d43){return _0x437d43[_0xe9f0('0x25')]()[_0xe9f0('0x24')](function(){_0x229fe0[_0xe9f0('0x1a')](0xcc)[_0xe9f0('0x26')]();});}};}function handleEntityNotFound(_0x1321bb,_0x3c4ba9){return function(_0x3fce54){if(!_0x3fce54){_0x1321bb['sendStatus'](0x194);}return _0x3fce54;};}function handleError(_0x371095,_0x27541f){_0x27541f=_0x27541f||0x1f4;return function(_0x2ddfba){logger[_0xe9f0('0x27')](_0x2ddfba['stack']);if(_0x2ddfba[_0xe9f0('0x28')]){delete _0x2ddfba[_0xe9f0('0x28')];}_0x371095[_0xe9f0('0x1a')](_0x27541f)[_0xe9f0('0x29')](_0x2ddfba);};}exports[_0xe9f0('0x2a')]=function(_0x5457f6,_0x130f96){var _0xdc16bc={},_0x44fb5b={},_0xab3d81={'count':0x0,'rows':[]};var _0xa27c84=_[_0xe9f0('0x2b')](db[_0xe9f0('0x2c')][_0xe9f0('0x2d')],function(_0x2b6503){return{'name':_0x2b6503[_0xe9f0('0x2e')],'type':_0x2b6503[_0xe9f0('0x2f')][_0xe9f0('0x30')]};});_0x44fb5b[_0xe9f0('0x31')]=_[_0xe9f0('0x2b')](_0xa27c84,_0xe9f0('0x28'));_0x44fb5b[_0xe9f0('0x32')]=_[_0xe9f0('0x33')](_0x5457f6[_0xe9f0('0x32')]);_0x44fb5b[_0xe9f0('0x34')]=_[_0xe9f0('0x35')](_0x44fb5b[_0xe9f0('0x31')],_0x44fb5b[_0xe9f0('0x32')]);_0xdc16bc[_0xe9f0('0x36')]=_[_0xe9f0('0x35')](_0x44fb5b['model'],qs['fields'](_0x5457f6['query'][_0xe9f0('0x37')]));_0xdc16bc['attributes']=_0xdc16bc[_0xe9f0('0x36')][_0xe9f0('0x38')]?_0xdc16bc['attributes']:_0x44fb5b[_0xe9f0('0x31')];if(!_0x5457f6['query']['hasOwnProperty']('nolimit')){_0xdc16bc[_0xe9f0('0x1d')]=qs[_0xe9f0('0x1d')](_0x5457f6['query'][_0xe9f0('0x1d')]);_0xdc16bc[_0xe9f0('0x1f')]=qs[_0xe9f0('0x1f')](_0x5457f6['query']['offset']);}_0xdc16bc[_0xe9f0('0x39')]=qs[_0xe9f0('0x3a')](_0x5457f6[_0xe9f0('0x32')]['sort']);_0xdc16bc[_0xe9f0('0x3b')]=qs[_0xe9f0('0x34')](_[_0xe9f0('0x3c')](_0x5457f6[_0xe9f0('0x32')],_0x44fb5b[_0xe9f0('0x34')]),_0xa27c84);if(_0x5457f6['query'][_0xe9f0('0x3d')]){_0xdc16bc[_0xe9f0('0x3b')]=_[_0xe9f0('0x3e')](_0xdc16bc['where'],{'$or':_[_0xe9f0('0x2b')](_0xa27c84,function(_0xbec11f){if(_0xbec11f['type']!==_0xe9f0('0x3f')){var _0x5154c3={};_0x5154c3[_0xbec11f[_0xe9f0('0x28')]]={'$like':'%'+_0x5457f6['query']['filter']+'%'};return _0x5154c3;}})});}_0xdc16bc=_['merge']({},_0xdc16bc,_0x5457f6['options']);var _0x5165f7={'where':_0xdc16bc[_0xe9f0('0x3b')]};return db[_0xe9f0('0x2c')][_0xe9f0('0x1e')](_0x5165f7)[_0xe9f0('0x24')](function(_0x2560c6){_0xab3d81[_0xe9f0('0x1e')]=_0x2560c6;if(_0x5457f6[_0xe9f0('0x32')][_0xe9f0('0x40')]){_0xdc16bc[_0xe9f0('0x41')]=[{'all':!![]}];}return db['UserProfileResource'][_0xe9f0('0x42')](_0xdc16bc);})[_0xe9f0('0x24')](function(_0x36b00a){_0xab3d81['rows']=_0x36b00a;return _0xab3d81;})['then'](respondWithFilteredResult(_0x130f96,_0xdc16bc))[_0xe9f0('0x43')](handleError(_0x130f96,null));};exports['show']=function(_0x297689,_0x52613a){var _0x314f0e={'raw':![],'where':{'id':_0x297689['params']['id']}},_0x42d9d2={};_0x42d9d2[_0xe9f0('0x31')]=_[_0xe9f0('0x33')](db[_0xe9f0('0x2c')][_0xe9f0('0x2d')]);_0x42d9d2[_0xe9f0('0x32')]=_['keys'](_0x297689[_0xe9f0('0x32')]);_0x42d9d2[_0xe9f0('0x34')]=_[_0xe9f0('0x35')](_0x42d9d2[_0xe9f0('0x31')],_0x42d9d2[_0xe9f0('0x32')]);_0x314f0e['attributes']=_[_0xe9f0('0x35')](_0x42d9d2['model'],qs['fields'](_0x297689[_0xe9f0('0x32')][_0xe9f0('0x37')]));_0x314f0e['attributes']=_0x314f0e[_0xe9f0('0x36')][_0xe9f0('0x38')]?_0x314f0e[_0xe9f0('0x36')]:_0x42d9d2[_0xe9f0('0x31')];if(_0x297689[_0xe9f0('0x32')][_0xe9f0('0x40')]){_0x314f0e[_0xe9f0('0x41')]=[{'all':!![]}];}_0x314f0e=_['merge']({},_0x314f0e,_0x297689[_0xe9f0('0x44')]);return db['UserProfileResource'][_0xe9f0('0x45')](_0x314f0e)['then'](handleEntityNotFound(_0x52613a,null))[_0xe9f0('0x24')](respondWithResult(_0x52613a,null))['catch'](handleError(_0x52613a,null));};exports[_0xe9f0('0x46')]=function(_0x2023b4,_0x422324){return db['UserProfileResource'][_0xe9f0('0x46')](_0x2023b4[_0xe9f0('0x47')],{})[_0xe9f0('0x24')](respondWithResult(_0x422324,0xc9))[_0xe9f0('0x43')](handleError(_0x422324,null));};exports[_0xe9f0('0x23')]=function(_0x135175,_0x6ece3f){if(_0x135175[_0xe9f0('0x47')]['id']){delete _0x135175[_0xe9f0('0x47')]['id'];}return db[_0xe9f0('0x2c')][_0xe9f0('0x45')]({'where':{'id':_0x135175[_0xe9f0('0x48')]['id']}})['then'](handleEntityNotFound(_0x6ece3f,null))['then'](saveUpdates(_0x135175[_0xe9f0('0x47')],null))[_0xe9f0('0x24')](respondWithResult(_0x6ece3f,null))[_0xe9f0('0x43')](handleError(_0x6ece3f,null));};exports['destroy']=function(_0x1ac381,_0x4d8b2e){return db[_0xe9f0('0x2c')][_0xe9f0('0x45')]({'where':{'id':_0x1ac381[_0xe9f0('0x48')]['id']}})[_0xe9f0('0x24')](handleEntityNotFound(_0x4d8b2e,null))['then'](removeEntity(_0x4d8b2e,null))[_0xe9f0('0x43')](handleError(_0x4d8b2e,null));};exports[_0xe9f0('0x49')]=function(_0x5163ea,_0x2bf65c){return db[_0xe9f0('0x2c')][_0xe9f0('0x49')]()[_0xe9f0('0x24')](respondWithResult(_0x2bf65c,null))['catch'](handleError(_0x2bf65c,null));};
\ No newline at end of file
+var _0xd117=['filter','merge','VIRTUAL','count','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create','update','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/license/util','sendStatus','status','json','offset','undefined','limit','set','Content-Range','apply','reject','then','destroy','error','stack','name','send','UserProfileResource','fieldName','type','map','keys','query','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x415ccd,_0x50e30f){var _0x446fe2=function(_0x351794){while(--_0x351794){_0x415ccd['push'](_0x415ccd['shift']());}};_0x446fe2(++_0x50e30f);}(_0xd117,0x182));var _0x7d11=function(_0x599041,_0x40fbea){_0x599041=_0x599041-0x0;var _0x1c4969=_0xd117[_0x599041];return _0x1c4969;};'use strict';var emlformat=require(_0x7d11('0x0'));var rimraf=require(_0x7d11('0x1'));var zipdir=require(_0x7d11('0x2'));var jsonpatch=require(_0x7d11('0x3'));var rp=require(_0x7d11('0x4'));var moment=require(_0x7d11('0x5'));var BPromise=require(_0x7d11('0x6'));var Mustache=require(_0x7d11('0x7'));var util=require(_0x7d11('0x8'));var path=require(_0x7d11('0x9'));var sox=require(_0x7d11('0xa'));var csv=require(_0x7d11('0xb'));var ejs=require(_0x7d11('0xc'));var fs=require('fs');var fs_extra=require(_0x7d11('0xd'));var _=require(_0x7d11('0xe'));var squel=require(_0x7d11('0xf'));var crypto=require('crypto');var jsforce=require(_0x7d11('0x10'));var deskjs=require(_0x7d11('0x11'));var toCsv=require(_0x7d11('0xb'));var querystring=require('querystring');var Papa=require(_0x7d11('0x12'));var Redis=require(_0x7d11('0x13'));var authService=require(_0x7d11('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x7d11('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x7d11('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x7d11('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4767d5,_0x471f46){_0x471f46=_0x471f46||0xcc;return function(_0x5ee572){if(_0x5ee572){return _0x4767d5[_0x7d11('0x18')](_0x471f46);}return _0x4767d5[_0x7d11('0x19')](_0x471f46)['end']();};}function respondWithResult(_0x324de5,_0x16949d){_0x16949d=_0x16949d||0xc8;return function(_0x20a2df){if(_0x20a2df){return _0x324de5[_0x7d11('0x19')](_0x16949d)[_0x7d11('0x1a')](_0x20a2df);}};}function respondWithFilteredResult(_0xeae744,_0x2a269e){return function(_0xb1669e){if(_0xb1669e){var _0x4aa795=typeof _0x2a269e[_0x7d11('0x1b')]===_0x7d11('0x1c')&&typeof _0x2a269e[_0x7d11('0x1d')]===_0x7d11('0x1c');var _0x45f916=_0xb1669e['count'];var _0x456cb9=_0x4aa795?0x0:_0x2a269e[_0x7d11('0x1b')];var _0x4d1306=_0x4aa795?_0xb1669e['count']:_0x2a269e[_0x7d11('0x1b')]+_0x2a269e['limit'];var _0x1f9990;if(_0x4d1306>=_0x45f916){_0x4d1306=_0x45f916;_0x1f9990=0xc8;}else{_0x1f9990=0xce;}_0xeae744['status'](_0x1f9990);return _0xeae744[_0x7d11('0x1e')](_0x7d11('0x1f'),_0x456cb9+'-'+_0x4d1306+'/'+_0x45f916)[_0x7d11('0x1a')](_0xb1669e);}return null;};}function patchUpdates(_0x46f662){return function(_0x30df70){try{jsonpatch[_0x7d11('0x20')](_0x30df70,_0x46f662,!![]);}catch(_0x4297f8){return BPromise[_0x7d11('0x21')](_0x4297f8);}return _0x30df70['save']();};}function saveUpdates(_0x441917,_0x4a34f4){return function(_0x58455b){if(_0x58455b){return _0x58455b['update'](_0x441917)[_0x7d11('0x22')](function(_0x3545dc){return _0x3545dc;});}return null;};}function removeEntity(_0x44476c,_0x1a7853){return function(_0x355d14){if(_0x355d14){return _0x355d14[_0x7d11('0x23')]()[_0x7d11('0x22')](function(){_0x44476c[_0x7d11('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x36c2b4,_0x577ca9){return function(_0x4bfa76){if(!_0x4bfa76){_0x36c2b4['sendStatus'](0x194);}return _0x4bfa76;};}function handleError(_0x3ba092,_0x59cdba){_0x59cdba=_0x59cdba||0x1f4;return function(_0x180e1e){logger[_0x7d11('0x24')](_0x180e1e[_0x7d11('0x25')]);if(_0x180e1e['name']){delete _0x180e1e[_0x7d11('0x26')];}_0x3ba092[_0x7d11('0x19')](_0x59cdba)[_0x7d11('0x27')](_0x180e1e);};}exports['index']=function(_0x601650,_0x35a789){var _0x18c049={},_0x38f1be={},_0x4c7d6a={'count':0x0,'rows':[]};var _0x1a7745=_['map'](db[_0x7d11('0x28')]['rawAttributes'],function(_0x31866d){return{'name':_0x31866d[_0x7d11('0x29')],'type':_0x31866d[_0x7d11('0x2a')]['key']};});_0x38f1be['model']=_[_0x7d11('0x2b')](_0x1a7745,_0x7d11('0x26'));_0x38f1be['query']=_[_0x7d11('0x2c')](_0x601650[_0x7d11('0x2d')]);_0x38f1be[_0x7d11('0x2e')]=_['intersection'](_0x38f1be[_0x7d11('0x2f')],_0x38f1be['query']);_0x18c049['attributes']=_[_0x7d11('0x30')](_0x38f1be['model'],qs[_0x7d11('0x31')](_0x601650[_0x7d11('0x2d')][_0x7d11('0x31')]));_0x18c049[_0x7d11('0x32')]=_0x18c049['attributes'][_0x7d11('0x33')]?_0x18c049[_0x7d11('0x32')]:_0x38f1be['model'];if(!_0x601650['query'][_0x7d11('0x34')](_0x7d11('0x35'))){_0x18c049['limit']=qs[_0x7d11('0x1d')](_0x601650['query']['limit']);_0x18c049[_0x7d11('0x1b')]=qs['offset'](_0x601650['query'][_0x7d11('0x1b')]);}_0x18c049[_0x7d11('0x36')]=qs[_0x7d11('0x37')](_0x601650[_0x7d11('0x2d')][_0x7d11('0x37')]);_0x18c049[_0x7d11('0x38')]=qs[_0x7d11('0x2e')](_[_0x7d11('0x39')](_0x601650[_0x7d11('0x2d')],_0x38f1be[_0x7d11('0x2e')]),_0x1a7745);if(_0x601650[_0x7d11('0x2d')][_0x7d11('0x3a')]){_0x18c049['where']=_[_0x7d11('0x3b')](_0x18c049['where'],{'$or':_[_0x7d11('0x2b')](_0x1a7745,function(_0x111e26){if(_0x111e26[_0x7d11('0x2a')]!==_0x7d11('0x3c')){var _0x4f8fd2={};_0x4f8fd2[_0x111e26[_0x7d11('0x26')]]={'$like':'%'+_0x601650[_0x7d11('0x2d')][_0x7d11('0x3a')]+'%'};return _0x4f8fd2;}})});}_0x18c049=_[_0x7d11('0x3b')]({},_0x18c049,_0x601650['options']);var _0x22730e={'where':_0x18c049['where']};return db[_0x7d11('0x28')]['count'](_0x22730e)[_0x7d11('0x22')](function(_0x622725){_0x4c7d6a[_0x7d11('0x3d')]=_0x622725;if(_0x601650[_0x7d11('0x2d')]['includeAll']){_0x18c049['include']=[{'all':!![]}];}return db[_0x7d11('0x28')][_0x7d11('0x3e')](_0x18c049);})['then'](function(_0x1caef9){_0x4c7d6a[_0x7d11('0x3f')]=_0x1caef9;return _0x4c7d6a;})[_0x7d11('0x22')](respondWithFilteredResult(_0x35a789,_0x18c049))[_0x7d11('0x40')](handleError(_0x35a789,null));};exports[_0x7d11('0x41')]=function(_0x2e1647,_0x47e968){var _0x25b73b={'raw':![],'where':{'id':_0x2e1647[_0x7d11('0x42')]['id']}},_0x5cf6a6={};_0x5cf6a6[_0x7d11('0x2f')]=_[_0x7d11('0x2c')](db[_0x7d11('0x28')][_0x7d11('0x43')]);_0x5cf6a6[_0x7d11('0x2d')]=_['keys'](_0x2e1647['query']);_0x5cf6a6['filters']=_[_0x7d11('0x30')](_0x5cf6a6[_0x7d11('0x2f')],_0x5cf6a6[_0x7d11('0x2d')]);_0x25b73b[_0x7d11('0x32')]=_[_0x7d11('0x30')](_0x5cf6a6['model'],qs[_0x7d11('0x31')](_0x2e1647[_0x7d11('0x2d')]['fields']));_0x25b73b[_0x7d11('0x32')]=_0x25b73b[_0x7d11('0x32')][_0x7d11('0x33')]?_0x25b73b['attributes']:_0x5cf6a6[_0x7d11('0x2f')];if(_0x2e1647[_0x7d11('0x2d')][_0x7d11('0x44')]){_0x25b73b['include']=[{'all':!![]}];}_0x25b73b=_[_0x7d11('0x3b')]({},_0x25b73b,_0x2e1647['options']);return db[_0x7d11('0x28')][_0x7d11('0x45')](_0x25b73b)[_0x7d11('0x22')](handleEntityNotFound(_0x47e968,null))[_0x7d11('0x22')](respondWithResult(_0x47e968,null))[_0x7d11('0x40')](handleError(_0x47e968,null));};exports[_0x7d11('0x46')]=function(_0x161213,_0x193631){return db[_0x7d11('0x28')]['create'](_0x161213['body'],{})['then'](respondWithResult(_0x193631,0xc9))[_0x7d11('0x40')](handleError(_0x193631,null));};exports[_0x7d11('0x47')]=function(_0x20297a,_0x18ae0e){if(_0x20297a[_0x7d11('0x48')]['id']){delete _0x20297a[_0x7d11('0x48')]['id'];}return db[_0x7d11('0x28')][_0x7d11('0x45')]({'where':{'id':_0x20297a[_0x7d11('0x42')]['id']}})[_0x7d11('0x22')](handleEntityNotFound(_0x18ae0e,null))[_0x7d11('0x22')](saveUpdates(_0x20297a[_0x7d11('0x48')],null))['then'](respondWithResult(_0x18ae0e,null))[_0x7d11('0x40')](handleError(_0x18ae0e,null));};exports[_0x7d11('0x23')]=function(_0x29207f,_0x553a03){return db['UserProfileResource'][_0x7d11('0x45')]({'where':{'id':_0x29207f[_0x7d11('0x42')]['id']}})[_0x7d11('0x22')](handleEntityNotFound(_0x553a03,null))['then'](removeEntity(_0x553a03,null))['catch'](handleError(_0x553a03,null));};exports[_0x7d11('0x49')]=function(_0x36af2b,_0x5e6234){return db[_0x7d11('0x28')][_0x7d11('0x49')]()[_0x7d11('0x22')](respondWithResult(_0x5e6234,null))[_0x7d11('0x40')](handleError(_0x5e6234,null));};
\ No newline at end of file
index a4ee9af..b784f9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c06=['sectionId','util','../../config/logger','bluebird','request-promise','path','../../config/environment','./userProfileResource.attributes','exports','define','user_profile_has_resources','compositeIndex','resourceId'];(function(_0x42aec7,_0x1bf5bf){var _0x39aaca=function(_0x422201){while(--_0x422201){_0x42aec7['push'](_0x42aec7['shift']());}};_0x39aaca(++_0x1bf5bf);}(_0x3c06,0x11f));var _0x63c0=function(_0x5957c0,_0x33813b){_0x5957c0=_0x5957c0-0x0;var _0x5d0529=_0x3c06[_0x5957c0];return _0x5d0529;};'use strict';var _=require('lodash');var util=require(_0x63c0('0x0'));var logger=require(_0x63c0('0x1'))('api');var moment=require('moment');var BPromise=require(_0x63c0('0x2'));var rp=require(_0x63c0('0x3'));var fs=require('fs');var path=require(_0x63c0('0x4'));var rimraf=require('rimraf');var config=require(_0x63c0('0x5'));var attributes=require(_0x63c0('0x6'));module[_0x63c0('0x7')]=function(_0x341011,_0xaf00bb){return _0x341011[_0x63c0('0x8')]('UserProfileResource',attributes,{'tableName':_0x63c0('0x9'),'paranoid':![],'indexes':[{'name':_0x63c0('0xa'),'fields':[_0x63c0('0xb'),_0x63c0('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfa3d=['compositeIndex','resourceId','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','UserProfileResource','user_profile_has_resources'];(function(_0x4697fa,_0x21c841){var _0x390950=function(_0x3deb8a){while(--_0x3deb8a){_0x4697fa['push'](_0x4697fa['shift']());}};_0x390950(++_0x21c841);}(_0xfa3d,0xe2));var _0xdfa3=function(_0x478336,_0x145217){_0x478336=_0x478336-0x0;var _0x1a168=_0xfa3d[_0x478336];return _0x1a168;};'use strict';var _=require(_0xdfa3('0x0'));var util=require(_0xdfa3('0x1'));var logger=require(_0xdfa3('0x2'))('api');var moment=require('moment');var BPromise=require(_0xdfa3('0x3'));var rp=require(_0xdfa3('0x4'));var fs=require('fs');var path=require(_0xdfa3('0x5'));var rimraf=require(_0xdfa3('0x6'));var config=require(_0xdfa3('0x7'));var attributes=require('./userProfileResource.attributes');module[_0xdfa3('0x8')]=function(_0x2ffd8d,_0x6d4128){return _0x2ffd8d[_0xdfa3('0x9')](_0xdfa3('0xa'),attributes,{'tableName':_0xdfa3('0xb'),'paranoid':![],'indexes':[{'name':_0xdfa3('0xc'),'fields':[_0xdfa3('0xd'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
index 0b5248c..a224783 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0bf=['rpc','../../config/environment','http','request','UserProfileResource,\x20%s,\x20%s','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','lodash','util','bluebird','../../mysqldb','../../config/utils'];(function(_0x1da41c,_0x31b47c){var _0x2a950a=function(_0x5edb5f){while(--_0x5edb5f){_0x1da41c['push'](_0x1da41c['shift']());}};_0x2a950a(++_0x31b47c);}(_0xe0bf,0x164));var _0xfe0b=function(_0x155d7f,_0x4a8f54){_0x155d7f=_0x155d7f-0x0;var _0x46b528=_0xe0bf[_0x155d7f];return _0x46b528;};'use strict';var _=require(_0xfe0b('0x0'));var util=require(_0xfe0b('0x1'));var moment=require('moment');var BPromise=require(_0xfe0b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfe0b('0x3'))['db'];var utils=require(_0xfe0b('0x4'));var logger=require('../../config/logger')(_0xfe0b('0x5'));var config=require(_0xfe0b('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xfe0b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x553b51,_0x18ede8,_0x5e0ee4){return new BPromise(function(_0x495d82,_0x27800a){return client[_0xfe0b('0x8')](_0x553b51,_0x5e0ee4)['then'](function(_0x14088b){logger['info'](_0xfe0b('0x9'),_0x18ede8,'request\x20sent');logger[_0xfe0b('0xa')](_0xfe0b('0xb'),_0x18ede8,_0xfe0b('0xc'),JSON[_0xfe0b('0xd')](_0x14088b));if(_0x14088b[_0xfe0b('0xe')]){if(_0x14088b[_0xfe0b('0xe')][_0xfe0b('0xf')]===0x1f4){logger[_0xfe0b('0xe')]('UserProfileResource,\x20%s,\x20%s',_0x18ede8,_0x14088b[_0xfe0b('0xe')]['message']);return _0x27800a(_0x14088b[_0xfe0b('0xe')][_0xfe0b('0x10')]);}logger[_0xfe0b('0xe')](_0xfe0b('0x9'),_0x18ede8,_0x14088b[_0xfe0b('0xe')][_0xfe0b('0x10')]);return _0x495d82(_0x14088b[_0xfe0b('0xe')][_0xfe0b('0x10')]);}else{logger[_0xfe0b('0x11')]('UserProfileResource,\x20%s,\x20%s',_0x18ede8,'request\x20sent');_0x495d82(_0x14088b[_0xfe0b('0x12')][_0xfe0b('0x10')]);}})['catch'](function(_0x379c0c){logger['error'](_0xfe0b('0x9'),_0x18ede8,_0x379c0c);_0x27800a(_0x379c0c);});});}
\ No newline at end of file
+var _0x4472=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x5c3c0b,_0x4ee35e){var _0x52ecd2=function(_0x3cf575){while(--_0x3cf575){_0x5c3c0b['push'](_0x5c3c0b['shift']());}};_0x52ecd2(++_0x4ee35e);}(_0x4472,0xed));var _0x2447=function(_0x180485,_0x5335d4){_0x180485=_0x180485-0x0;var _0x3b84ab=_0x4472[_0x180485];return _0x3b84ab;};'use strict';var _=require(_0x2447('0x0'));var util=require(_0x2447('0x1'));var moment=require(_0x2447('0x2'));var BPromise=require(_0x2447('0x3'));var rs=require(_0x2447('0x4'));var fs=require('fs');var Redis=require(_0x2447('0x5'));var db=require(_0x2447('0x6'))['db'];var utils=require(_0x2447('0x7'));var logger=require(_0x2447('0x8'))(_0x2447('0x9'));var config=require(_0x2447('0xa'));var jayson=require(_0x2447('0xb'));var client=jayson[_0x2447('0xc')][_0x2447('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x29ac9b,_0x1791b1,_0xa954cf){return new BPromise(function(_0x208ca1,_0x2d85d7){return client[_0x2447('0xe')](_0x29ac9b,_0xa954cf)[_0x2447('0xf')](function(_0x5d3494){logger['info'](_0x2447('0x10'),_0x1791b1,_0x2447('0x11'));logger[_0x2447('0x12')](_0x2447('0x13'),_0x1791b1,_0x2447('0x11'),JSON[_0x2447('0x14')](_0x5d3494));if(_0x5d3494[_0x2447('0x15')]){if(_0x5d3494[_0x2447('0x15')][_0x2447('0x16')]===0x1f4){logger['error'](_0x2447('0x10'),_0x1791b1,_0x5d3494[_0x2447('0x15')][_0x2447('0x17')]);return _0x2d85d7(_0x5d3494[_0x2447('0x15')]['message']);}logger[_0x2447('0x15')](_0x2447('0x10'),_0x1791b1,_0x5d3494[_0x2447('0x15')][_0x2447('0x17')]);return _0x208ca1(_0x5d3494[_0x2447('0x15')][_0x2447('0x17')]);}else{logger[_0x2447('0x18')](_0x2447('0x10'),_0x1791b1,_0x2447('0x11'));_0x208ca1(_0x5d3494[_0x2447('0x19')][_0x2447('0x17')]);}})[_0x2447('0x1a')](function(_0x56ad93){logger['error'](_0x2447('0x10'),_0x1791b1,_0x56ad93);_0x2d85d7(_0x56ad93);});});}
\ No newline at end of file
index 467b775..5aa4f9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b5e=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','isAuthenticated','index','get','describe','show','post','put','delete','/:id','exports','multer','util'];(function(_0x5e8e82,_0x18f9ec){var _0x4e6805=function(_0x49e820){while(--_0x49e820){_0x5e8e82['push'](_0x5e8e82['shift']());}};_0x4e6805(++_0x18f9ec);}(_0x1b5e,0x167));var _0xe1b5=function(_0x48e766,_0x4e7c2a){_0x48e766=_0x48e766-0x0;var _0x49b9b8=_0x1b5e[_0x48e766];return _0x49b9b8;};'use strict';var multer=require(_0xe1b5('0x0'));var util=require(_0xe1b5('0x1'));var path=require('path');var timeout=require(_0xe1b5('0x2'));var express=require('express');var router=express[_0xe1b5('0x3')]();var fs_extra=require(_0xe1b5('0x4'));var auth=require(_0xe1b5('0x5'));var interaction=require(_0xe1b5('0x6'));var config=require(_0xe1b5('0x7'));var controller=require(_0xe1b5('0x8'));router['get']('/',auth[_0xe1b5('0x9')](),controller[_0xe1b5('0xa')]);router[_0xe1b5('0xb')]('/describe',auth[_0xe1b5('0x9')](),controller[_0xe1b5('0xc')]);router[_0xe1b5('0xb')]('/:id',auth[_0xe1b5('0x9')](),controller[_0xe1b5('0xd')]);router[_0xe1b5('0xe')]('/',auth[_0xe1b5('0x9')](),controller['create']);router[_0xe1b5('0xf')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xe1b5('0x10')](_0xe1b5('0x11'),auth[_0xe1b5('0x9')](),controller['destroy']);module[_0xe1b5('0x12')]=router;
\ No newline at end of file
+var _0x9aaa=['../../components/interaction/service','../../config/environment','./userProfileSection.controller','get','isAuthenticated','index','/describe','/:id','show','create','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra'];(function(_0x19c187,_0x1243a9){var _0xe3b138=function(_0x131df8){while(--_0x131df8){_0x19c187['push'](_0x19c187['shift']());}};_0xe3b138(++_0x1243a9);}(_0x9aaa,0x1c8));var _0xa9aa=function(_0x43f638,_0x45397c){_0x43f638=_0x43f638-0x0;var _0x30d91f=_0x9aaa[_0x43f638];return _0x30d91f;};'use strict';var multer=require(_0xa9aa('0x0'));var util=require(_0xa9aa('0x1'));var path=require(_0xa9aa('0x2'));var timeout=require('connect-timeout');var express=require(_0xa9aa('0x3'));var router=express[_0xa9aa('0x4')]();var fs_extra=require(_0xa9aa('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa9aa('0x6'));var config=require(_0xa9aa('0x7'));var controller=require(_0xa9aa('0x8'));router[_0xa9aa('0x9')]('/',auth[_0xa9aa('0xa')](),controller[_0xa9aa('0xb')]);router[_0xa9aa('0x9')](_0xa9aa('0xc'),auth[_0xa9aa('0xa')](),controller['describe']);router[_0xa9aa('0x9')](_0xa9aa('0xd'),auth['isAuthenticated'](),controller[_0xa9aa('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xa9aa('0xf')]);router[_0xa9aa('0x10')](_0xa9aa('0xd'),auth[_0xa9aa('0xa')](),controller[_0xa9aa('0x11')]);router[_0xa9aa('0x12')](_0xa9aa('0xd'),auth['isAuthenticated'](),controller[_0xa9aa('0x13')]);module[_0xa9aa('0x14')]=router;
\ No newline at end of file
index cc59dd4..0da6604 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1775=['INTEGER','BOOLEAN','setDataValue','crudPermissions','join','getDataValue','split','exports','STRING'];(function(_0x42b180,_0x45eb41){var _0x2a0be4=function(_0x56cca0){while(--_0x56cca0){_0x42b180['push'](_0x42b180['shift']());}};_0x2a0be4(++_0x45eb41);}(_0x1775,0x1db));var _0x5177=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x1775[_0x19e35c];return _0x3e1fe8;};'use strict';var Sequelize=require('sequelize');module[_0x5177('0x0')]={'name':{'type':Sequelize[_0x5177('0x1')],'allowNull':![]},'category':{'type':Sequelize[_0x5177('0x1')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x5177('0x2')],'allowNull':![]},'enabled':{'type':Sequelize[_0x5177('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x5177('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x5177('0x1')],'set':function(_0x2027bf){this[_0x5177('0x4')](_0x5177('0x5'),_0x2027bf?_0x2027bf[_0x5177('0x6')](''):[]);},'get':function(){return this[_0x5177('0x7')](_0x5177('0x5'))?this[_0x5177('0x7')](_0x5177('0x5'))[_0x5177('0x8')](''):[];}}};
\ No newline at end of file
+var _0x4fc2=['split','sequelize','exports','STRING','BOOLEAN','setDataValue','crudPermissions','getDataValue'];(function(_0x8abd64,_0x539570){var _0xd2511e=function(_0x9fef7d){while(--_0x9fef7d){_0x8abd64['push'](_0x8abd64['shift']());}};_0xd2511e(++_0x539570);}(_0x4fc2,0x111));var _0x24fc=function(_0x391bce,_0x4dcec1){_0x391bce=_0x391bce-0x0;var _0x14075b=_0x4fc2[_0x391bce];return _0x14075b;};'use strict';var Sequelize=require(_0x24fc('0x0'));module[_0x24fc('0x1')]={'name':{'type':Sequelize[_0x24fc('0x2')],'allowNull':![]},'category':{'type':Sequelize[_0x24fc('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0x24fc('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x24fc('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x24fc('0x2')],'set':function(_0x541ad2){this[_0x24fc('0x4')](_0x24fc('0x5'),_0x541ad2?_0x541ad2['join'](''):[]);},'get':function(){return this[_0x24fc('0x6')](_0x24fc('0x5'))?this['getDataValue'](_0x24fc('0x5'))[_0x24fc('0x7')](''):[];}}};
\ No newline at end of file
index 96652e8..ac9be22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x649b=['describe','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','count','limit','set','Content-Range','apply','reject','save','destroy','then','end','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','UserProfileSection','includeAll','include','findAll','rows','catch','show','params','create','update','body','find'];(function(_0x23be93,_0x484e0b){var _0x5f2995=function(_0x37cc92){while(--_0x37cc92){_0x23be93['push'](_0x23be93['shift']());}};_0x5f2995(++_0x484e0b);}(_0x649b,0x182));var _0xb649=function(_0x5b08f8,_0x134f21){_0x5b08f8=_0x5b08f8-0x0;var _0x46d950=_0x649b[_0x5b08f8];return _0x46d950;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb649('0x0'));var zipdir=require(_0xb649('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb649('0x2'));var moment=require(_0xb649('0x3'));var BPromise=require(_0xb649('0x4'));var Mustache=require(_0xb649('0x5'));var util=require(_0xb649('0x6'));var path=require(_0xb649('0x7'));var sox=require(_0xb649('0x8'));var csv=require('to-csv');var ejs=require(_0xb649('0x9'));var fs=require('fs');var fs_extra=require(_0xb649('0xa'));var _=require('lodash');var squel=require(_0xb649('0xb'));var crypto=require(_0xb649('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xb649('0xd'));var toCsv=require(_0xb649('0xe'));var querystring=require(_0xb649('0xf'));var Papa=require(_0xb649('0x10'));var Redis=require(_0xb649('0x11'));var authService=require(_0xb649('0x12'));var qs=require(_0xb649('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb649('0x14'));var logger=require(_0xb649('0x15'))('api');var utils=require(_0xb649('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xb649('0x17'));var db=require(_0xb649('0x18'))['db'];function respondWithStatusCode(_0x5df6ca,_0x21b6c){_0x21b6c=_0x21b6c||0xcc;return function(_0x4eb184){if(_0x4eb184){return _0x5df6ca['sendStatus'](_0x21b6c);}return _0x5df6ca[_0xb649('0x19')](_0x21b6c)['end']();};}function respondWithResult(_0x488952,_0x14c484){_0x14c484=_0x14c484||0xc8;return function(_0x202550){if(_0x202550){return _0x488952[_0xb649('0x19')](_0x14c484)[_0xb649('0x1a')](_0x202550);}};}function respondWithFilteredResult(_0x59f6a0,_0x48baf8){return function(_0x4c0180){if(_0x4c0180){var _0x34cc34=typeof _0x48baf8[_0xb649('0x1b')]==='undefined'&&typeof _0x48baf8['limit']==='undefined';var _0x1a3d84=_0x4c0180[_0xb649('0x1c')];var _0x2198f8=_0x34cc34?0x0:_0x48baf8[_0xb649('0x1b')];var _0x2b9f3e=_0x34cc34?_0x4c0180[_0xb649('0x1c')]:_0x48baf8[_0xb649('0x1b')]+_0x48baf8[_0xb649('0x1d')];var _0x3daf36;if(_0x2b9f3e>=_0x1a3d84){_0x2b9f3e=_0x1a3d84;_0x3daf36=0xc8;}else{_0x3daf36=0xce;}_0x59f6a0[_0xb649('0x19')](_0x3daf36);return _0x59f6a0[_0xb649('0x1e')](_0xb649('0x1f'),_0x2198f8+'-'+_0x2b9f3e+'/'+_0x1a3d84)[_0xb649('0x1a')](_0x4c0180);}return null;};}function patchUpdates(_0x3c727c){return function(_0x3f8239){try{jsonpatch[_0xb649('0x20')](_0x3f8239,_0x3c727c,!![]);}catch(_0x1b38b9){return BPromise[_0xb649('0x21')](_0x1b38b9);}return _0x3f8239[_0xb649('0x22')]();};}function saveUpdates(_0x42d160,_0x27c9e2){return function(_0x541af8){if(_0x541af8){return _0x541af8['update'](_0x42d160)['then'](function(_0x387fec){return _0x387fec;});}return null;};}function removeEntity(_0x14d79d,_0x22602f){return function(_0x5e4bea){if(_0x5e4bea){return _0x5e4bea[_0xb649('0x23')]()[_0xb649('0x24')](function(){_0x14d79d[_0xb649('0x19')](0xcc)[_0xb649('0x25')]();});}};}function handleEntityNotFound(_0xf37014,_0x182fea){return function(_0x31d460){if(!_0x31d460){_0xf37014['sendStatus'](0x194);}return _0x31d460;};}function handleError(_0x213049,_0x73c27e){_0x73c27e=_0x73c27e||0x1f4;return function(_0x524ef8){logger['error'](_0x524ef8[_0xb649('0x26')]);if(_0x524ef8[_0xb649('0x27')]){delete _0x524ef8[_0xb649('0x27')];}_0x213049['status'](_0x73c27e)[_0xb649('0x28')](_0x524ef8);};}exports[_0xb649('0x29')]=function(_0x3ea599,_0x32260a){var _0xd9593f={},_0x55f619={},_0x22d54f={'count':0x0,'rows':[]};var _0x5ecadd=_[_0xb649('0x2a')](db['UserProfileSection'][_0xb649('0x2b')],function(_0x129d16){return{'name':_0x129d16[_0xb649('0x2c')],'type':_0x129d16[_0xb649('0x2d')][_0xb649('0x2e')]};});_0x55f619[_0xb649('0x2f')]=_[_0xb649('0x2a')](_0x5ecadd,'name');_0x55f619['query']=_[_0xb649('0x30')](_0x3ea599['query']);_0x55f619[_0xb649('0x31')]=_[_0xb649('0x32')](_0x55f619[_0xb649('0x2f')],_0x55f619[_0xb649('0x33')]);_0xd9593f[_0xb649('0x34')]=_['intersection'](_0x55f619[_0xb649('0x2f')],qs[_0xb649('0x35')](_0x3ea599[_0xb649('0x33')][_0xb649('0x35')]));_0xd9593f[_0xb649('0x34')]=_0xd9593f['attributes']['length']?_0xd9593f['attributes']:_0x55f619[_0xb649('0x2f')];if(!_0x3ea599[_0xb649('0x33')][_0xb649('0x36')](_0xb649('0x37'))){_0xd9593f[_0xb649('0x1d')]=qs['limit'](_0x3ea599[_0xb649('0x33')][_0xb649('0x1d')]);_0xd9593f[_0xb649('0x1b')]=qs[_0xb649('0x1b')](_0x3ea599[_0xb649('0x33')][_0xb649('0x1b')]);}_0xd9593f[_0xb649('0x38')]=qs[_0xb649('0x39')](_0x3ea599['query'][_0xb649('0x39')]);_0xd9593f[_0xb649('0x3a')]=qs['filters'](_[_0xb649('0x3b')](_0x3ea599[_0xb649('0x33')],_0x55f619[_0xb649('0x31')]),_0x5ecadd);if(_0x3ea599[_0xb649('0x33')]['filter']){_0xd9593f[_0xb649('0x3a')]=_[_0xb649('0x3c')](_0xd9593f[_0xb649('0x3a')],{'$or':_[_0xb649('0x2a')](_0x5ecadd,function(_0x5625b6){if(_0x5625b6['type']!==_0xb649('0x3d')){var _0x214209={};_0x214209[_0x5625b6['name']]={'$like':'%'+_0x3ea599[_0xb649('0x33')][_0xb649('0x3e')]+'%'};return _0x214209;}})});}_0xd9593f=_[_0xb649('0x3c')]({},_0xd9593f,_0x3ea599[_0xb649('0x3f')]);var _0x191f98={'where':_0xd9593f[_0xb649('0x3a')]};return db[_0xb649('0x40')]['count'](_0x191f98)[_0xb649('0x24')](function(_0x908726){_0x22d54f[_0xb649('0x1c')]=_0x908726;if(_0x3ea599[_0xb649('0x33')][_0xb649('0x41')]){_0xd9593f[_0xb649('0x42')]=[{'all':!![]}];}return db[_0xb649('0x40')][_0xb649('0x43')](_0xd9593f);})['then'](function(_0x2c32c8){_0x22d54f[_0xb649('0x44')]=_0x2c32c8;return _0x22d54f;})['then'](respondWithFilteredResult(_0x32260a,_0xd9593f))[_0xb649('0x45')](handleError(_0x32260a,null));};exports[_0xb649('0x46')]=function(_0x23800b,_0x4f6d2d){var _0x161230={'raw':![],'where':{'id':_0x23800b[_0xb649('0x47')]['id']}},_0x512a18={};_0x512a18[_0xb649('0x2f')]=_['keys'](db[_0xb649('0x40')]['rawAttributes']);_0x512a18['query']=_[_0xb649('0x30')](_0x23800b['query']);_0x512a18[_0xb649('0x31')]=_['intersection'](_0x512a18[_0xb649('0x2f')],_0x512a18[_0xb649('0x33')]);_0x161230[_0xb649('0x34')]=_[_0xb649('0x32')](_0x512a18['model'],qs[_0xb649('0x35')](_0x23800b[_0xb649('0x33')][_0xb649('0x35')]));_0x161230['attributes']=_0x161230[_0xb649('0x34')]['length']?_0x161230[_0xb649('0x34')]:_0x512a18['model'];if(_0x23800b[_0xb649('0x33')]['includeAll']){_0x161230['include']=[{'all':!![]}];}_0x161230=_[_0xb649('0x3c')]({},_0x161230,_0x23800b[_0xb649('0x3f')]);return db[_0xb649('0x40')]['find'](_0x161230)[_0xb649('0x24')](handleEntityNotFound(_0x4f6d2d,null))[_0xb649('0x24')](respondWithResult(_0x4f6d2d,null))[_0xb649('0x45')](handleError(_0x4f6d2d,null));};exports[_0xb649('0x48')]=function(_0x50375e,_0x1c3c4d){return db['UserProfileSection'][_0xb649('0x48')](_0x50375e['body'],{})[_0xb649('0x24')](respondWithResult(_0x1c3c4d,0xc9))['catch'](handleError(_0x1c3c4d,null));};exports[_0xb649('0x49')]=function(_0x4d23a9,_0x29e9f2){if(_0x4d23a9[_0xb649('0x4a')]['id']){delete _0x4d23a9[_0xb649('0x4a')]['id'];}return db[_0xb649('0x40')][_0xb649('0x4b')]({'where':{'id':_0x4d23a9[_0xb649('0x47')]['id']}})['then'](handleEntityNotFound(_0x29e9f2,null))['then'](saveUpdates(_0x4d23a9[_0xb649('0x4a')],null))[_0xb649('0x24')](respondWithResult(_0x29e9f2,null))[_0xb649('0x45')](handleError(_0x29e9f2,null));};exports[_0xb649('0x23')]=function(_0x2c3be1,_0x30322e){return db[_0xb649('0x40')]['find']({'where':{'id':_0x2c3be1[_0xb649('0x47')]['id']}})[_0xb649('0x24')](handleEntityNotFound(_0x30322e,null))[_0xb649('0x24')](removeEntity(_0x30322e,null))[_0xb649('0x45')](handleError(_0x30322e,null));};exports[_0xb649('0x4c')]=function(_0x2be332,_0x5b4677){return db[_0xb649('0x40')][_0xb649('0x4c')]()[_0xb649('0x24')](respondWithResult(_0x5b4677,null))[_0xb649('0x45')](handleError(_0x5b4677,null));};
\ No newline at end of file
+var _0x870d=['intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','params','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','sendStatus','stack','name','send','index','map','UserProfileSection','rawAttributes','fieldName','type','key','model','keys','filters'];(function(_0x2ac463,_0x435699){var _0x155a1d=function(_0x57e7da){while(--_0x57e7da){_0x2ac463['push'](_0x2ac463['shift']());}};_0x155a1d(++_0x435699);}(_0x870d,0x199));var _0xd870=function(_0x130376,_0x17e76e){_0x130376=_0x130376-0x0;var _0x33dc2e=_0x870d[_0x130376];return _0x33dc2e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd870('0x0'));var zipdir=require(_0xd870('0x1'));var jsonpatch=require(_0xd870('0x2'));var rp=require(_0xd870('0x3'));var moment=require(_0xd870('0x4'));var BPromise=require(_0xd870('0x5'));var Mustache=require(_0xd870('0x6'));var util=require('util');var path=require(_0xd870('0x7'));var sox=require(_0xd870('0x8'));var csv=require(_0xd870('0x9'));var ejs=require(_0xd870('0xa'));var fs=require('fs');var fs_extra=require(_0xd870('0xb'));var _=require(_0xd870('0xc'));var squel=require(_0xd870('0xd'));var crypto=require(_0xd870('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xd870('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd870('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xd870('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xd870('0x12'));var hardwareService=require(_0xd870('0x13'));var logger=require(_0xd870('0x14'))(_0xd870('0x15'));var utils=require(_0xd870('0x16'));var config=require(_0xd870('0x17'));var licenseUtil=require(_0xd870('0x18'));var db=require(_0xd870('0x19'))['db'];function respondWithStatusCode(_0x216964,_0xaa3db5){_0xaa3db5=_0xaa3db5||0xcc;return function(_0x57dfa4){if(_0x57dfa4){return _0x216964['sendStatus'](_0xaa3db5);}return _0x216964[_0xd870('0x1a')](_0xaa3db5)[_0xd870('0x1b')]();};}function respondWithResult(_0x4d176b,_0x21eecc){_0x21eecc=_0x21eecc||0xc8;return function(_0x5ec4fc){if(_0x5ec4fc){return _0x4d176b[_0xd870('0x1a')](_0x21eecc)[_0xd870('0x1c')](_0x5ec4fc);}};}function respondWithFilteredResult(_0x525923,_0x1d2f75){return function(_0x3e0008){if(_0x3e0008){var _0x59cd3e=typeof _0x1d2f75[_0xd870('0x1d')]===_0xd870('0x1e')&&typeof _0x1d2f75[_0xd870('0x1f')]==='undefined';var _0x5233ed=_0x3e0008['count'];var _0x2ce01d=_0x59cd3e?0x0:_0x1d2f75[_0xd870('0x1d')];var _0x55906d=_0x59cd3e?_0x3e0008[_0xd870('0x20')]:_0x1d2f75[_0xd870('0x1d')]+_0x1d2f75[_0xd870('0x1f')];var _0x4ee0f5;if(_0x55906d>=_0x5233ed){_0x55906d=_0x5233ed;_0x4ee0f5=0xc8;}else{_0x4ee0f5=0xce;}_0x525923[_0xd870('0x1a')](_0x4ee0f5);return _0x525923[_0xd870('0x21')](_0xd870('0x22'),_0x2ce01d+'-'+_0x55906d+'/'+_0x5233ed)[_0xd870('0x1c')](_0x3e0008);}return null;};}function patchUpdates(_0x1caf46){return function(_0x3c69a3){try{jsonpatch[_0xd870('0x23')](_0x3c69a3,_0x1caf46,!![]);}catch(_0x38edb6){return BPromise[_0xd870('0x24')](_0x38edb6);}return _0x3c69a3['save']();};}function saveUpdates(_0x127204,_0xcb2d0f){return function(_0x1b8728){if(_0x1b8728){return _0x1b8728[_0xd870('0x25')](_0x127204)['then'](function(_0x281971){return _0x281971;});}return null;};}function removeEntity(_0x3328cd,_0x2884b6){return function(_0x41791f){if(_0x41791f){return _0x41791f['destroy']()[_0xd870('0x26')](function(){_0x3328cd[_0xd870('0x1a')](0xcc)[_0xd870('0x1b')]();});}};}function handleEntityNotFound(_0x8b2867,_0x193384){return function(_0x5d7623){if(!_0x5d7623){_0x8b2867[_0xd870('0x27')](0x194);}return _0x5d7623;};}function handleError(_0x39a9b7,_0x528974){_0x528974=_0x528974||0x1f4;return function(_0x121001){logger['error'](_0x121001[_0xd870('0x28')]);if(_0x121001[_0xd870('0x29')]){delete _0x121001['name'];}_0x39a9b7[_0xd870('0x1a')](_0x528974)[_0xd870('0x2a')](_0x121001);};}exports[_0xd870('0x2b')]=function(_0x5dd562,_0x13578e){var _0x352e49={},_0x1eb7ad={},_0x47c2fe={'count':0x0,'rows':[]};var _0x5ec80e=_[_0xd870('0x2c')](db[_0xd870('0x2d')][_0xd870('0x2e')],function(_0x2ae9de){return{'name':_0x2ae9de[_0xd870('0x2f')],'type':_0x2ae9de[_0xd870('0x30')][_0xd870('0x31')]};});_0x1eb7ad[_0xd870('0x32')]=_[_0xd870('0x2c')](_0x5ec80e,_0xd870('0x29'));_0x1eb7ad['query']=_[_0xd870('0x33')](_0x5dd562['query']);_0x1eb7ad[_0xd870('0x34')]=_[_0xd870('0x35')](_0x1eb7ad[_0xd870('0x32')],_0x1eb7ad[_0xd870('0x36')]);_0x352e49['attributes']=_[_0xd870('0x35')](_0x1eb7ad[_0xd870('0x32')],qs[_0xd870('0x37')](_0x5dd562['query']['fields']));_0x352e49[_0xd870('0x38')]=_0x352e49[_0xd870('0x38')][_0xd870('0x39')]?_0x352e49['attributes']:_0x1eb7ad[_0xd870('0x32')];if(!_0x5dd562['query'][_0xd870('0x3a')](_0xd870('0x3b'))){_0x352e49[_0xd870('0x1f')]=qs[_0xd870('0x1f')](_0x5dd562['query']['limit']);_0x352e49[_0xd870('0x1d')]=qs[_0xd870('0x1d')](_0x5dd562[_0xd870('0x36')]['offset']);}_0x352e49[_0xd870('0x3c')]=qs[_0xd870('0x3d')](_0x5dd562['query'][_0xd870('0x3d')]);_0x352e49[_0xd870('0x3e')]=qs[_0xd870('0x34')](_[_0xd870('0x3f')](_0x5dd562[_0xd870('0x36')],_0x1eb7ad[_0xd870('0x34')]),_0x5ec80e);if(_0x5dd562[_0xd870('0x36')]['filter']){_0x352e49['where']=_['merge'](_0x352e49[_0xd870('0x3e')],{'$or':_[_0xd870('0x2c')](_0x5ec80e,function(_0x1e64f9){if(_0x1e64f9['type']!==_0xd870('0x40')){var _0x14f347={};_0x14f347[_0x1e64f9[_0xd870('0x29')]]={'$like':'%'+_0x5dd562[_0xd870('0x36')][_0xd870('0x41')]+'%'};return _0x14f347;}})});}_0x352e49=_[_0xd870('0x42')]({},_0x352e49,_0x5dd562[_0xd870('0x43')]);var _0x4103e5={'where':_0x352e49['where']};return db[_0xd870('0x2d')][_0xd870('0x20')](_0x4103e5)['then'](function(_0x4a5bc9){_0x47c2fe[_0xd870('0x20')]=_0x4a5bc9;if(_0x5dd562['query'][_0xd870('0x44')]){_0x352e49[_0xd870('0x45')]=[{'all':!![]}];}return db['UserProfileSection'][_0xd870('0x46')](_0x352e49);})['then'](function(_0x377037){_0x47c2fe['rows']=_0x377037;return _0x47c2fe;})[_0xd870('0x26')](respondWithFilteredResult(_0x13578e,_0x352e49))['catch'](handleError(_0x13578e,null));};exports['show']=function(_0x317309,_0x204526){var _0x333218={'raw':![],'where':{'id':_0x317309[_0xd870('0x47')]['id']}},_0x5f514f={};_0x5f514f['model']=_[_0xd870('0x33')](db[_0xd870('0x2d')][_0xd870('0x2e')]);_0x5f514f[_0xd870('0x36')]=_[_0xd870('0x33')](_0x317309[_0xd870('0x36')]);_0x5f514f['filters']=_[_0xd870('0x35')](_0x5f514f[_0xd870('0x32')],_0x5f514f['query']);_0x333218[_0xd870('0x38')]=_['intersection'](_0x5f514f[_0xd870('0x32')],qs[_0xd870('0x37')](_0x317309[_0xd870('0x36')][_0xd870('0x37')]));_0x333218[_0xd870('0x38')]=_0x333218[_0xd870('0x38')][_0xd870('0x39')]?_0x333218[_0xd870('0x38')]:_0x5f514f[_0xd870('0x32')];if(_0x317309[_0xd870('0x36')][_0xd870('0x44')]){_0x333218['include']=[{'all':!![]}];}_0x333218=_[_0xd870('0x42')]({},_0x333218,_0x317309[_0xd870('0x43')]);return db['UserProfileSection'][_0xd870('0x48')](_0x333218)['then'](handleEntityNotFound(_0x204526,null))[_0xd870('0x26')](respondWithResult(_0x204526,null))[_0xd870('0x49')](handleError(_0x204526,null));};exports[_0xd870('0x4a')]=function(_0x1e24b8,_0x1b1aa4){return db[_0xd870('0x2d')][_0xd870('0x4a')](_0x1e24b8[_0xd870('0x4b')],{})['then'](respondWithResult(_0x1b1aa4,0xc9))[_0xd870('0x49')](handleError(_0x1b1aa4,null));};exports['update']=function(_0x26b96d,_0x35ca98){if(_0x26b96d['body']['id']){delete _0x26b96d['body']['id'];}return db[_0xd870('0x2d')][_0xd870('0x48')]({'where':{'id':_0x26b96d['params']['id']}})['then'](handleEntityNotFound(_0x35ca98,null))[_0xd870('0x26')](saveUpdates(_0x26b96d[_0xd870('0x4b')],null))[_0xd870('0x26')](respondWithResult(_0x35ca98,null))['catch'](handleError(_0x35ca98,null));};exports['destroy']=function(_0xc45ccc,_0x61416f){return db[_0xd870('0x2d')]['find']({'where':{'id':_0xc45ccc[_0xd870('0x47')]['id']}})['then'](handleEntityNotFound(_0x61416f,null))[_0xd870('0x26')](removeEntity(_0x61416f,null))[_0xd870('0x49')](handleError(_0x61416f,null));};exports[_0xd870('0x4c')]=function(_0xecbbac,_0x290226){return db[_0xd870('0x2d')][_0xd870('0x4c')]()[_0xd870('0x26')](respondWithResult(_0x290226,null))[_0xd870('0x49')](handleError(_0x290226,null));};
\ No newline at end of file
index ac3a43b..c513b60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50c4=['path','rimraf','../../config/environment','./userProfileSection.attributes','exports','define','compositeIndex','sectionId','userProfileId','lodash','../../config/logger','moment','bluebird','request-promise'];(function(_0xeec739,_0x10a2e0){var _0x272e0a=function(_0x2faba1){while(--_0x2faba1){_0xeec739['push'](_0xeec739['shift']());}};_0x272e0a(++_0x10a2e0);}(_0x50c4,0x87));var _0x450c=function(_0x38d9cb,_0x30654d){_0x38d9cb=_0x38d9cb-0x0;var _0x15102a=_0x50c4[_0x38d9cb];return _0x15102a;};'use strict';var _=require(_0x450c('0x0'));var util=require('util');var logger=require(_0x450c('0x1'))('api');var moment=require(_0x450c('0x2'));var BPromise=require(_0x450c('0x3'));var rp=require(_0x450c('0x4'));var fs=require('fs');var path=require(_0x450c('0x5'));var rimraf=require(_0x450c('0x6'));var config=require(_0x450c('0x7'));var attributes=require(_0x450c('0x8'));module[_0x450c('0x9')]=function(_0x4296e7,_0x4561af){return _0x4296e7[_0x450c('0xa')]('UserProfileSection',attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':_0x450c('0xb'),'fields':[_0x450c('0xc'),_0x450c('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7e2=['UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','userProfileId','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./userProfileSection.attributes','exports'];(function(_0x444075,_0x2a01d3){var _0x26948f=function(_0x219f8b){while(--_0x219f8b){_0x444075['push'](_0x444075['shift']());}};_0x26948f(++_0x2a01d3);}(_0xb7e2,0x1f4));var _0x2b7e=function(_0x36acac,_0x39bec1){_0x36acac=_0x36acac-0x0;var _0x47b0bf=_0xb7e2[_0x36acac];return _0x47b0bf;};'use strict';var _=require(_0x2b7e('0x0'));var util=require(_0x2b7e('0x1'));var logger=require(_0x2b7e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x2b7e('0x3'));var rp=require(_0x2b7e('0x4'));var fs=require('fs');var path=require(_0x2b7e('0x5'));var rimraf=require(_0x2b7e('0x6'));var config=require(_0x2b7e('0x7'));var attributes=require(_0x2b7e('0x8'));module[_0x2b7e('0x9')]=function(_0x25bf9c,_0x34df73){return _0x25bf9c['define'](_0x2b7e('0xa'),attributes,{'tableName':_0x2b7e('0xb'),'paranoid':![],'indexes':[{'name':_0x2b7e('0xc'),'fields':[_0x2b7e('0xd'),_0x2b7e('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 80ed22b..86d3be0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85b3=['error','code','message','catch','lodash','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','UserProfileSection,\x20%s,\x20%s','request\x20sent','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x9aef40,_0x4f069d){var _0x5c1ef7=function(_0x7d8d19){while(--_0x7d8d19){_0x9aef40['push'](_0x9aef40['shift']());}};_0x5c1ef7(++_0x4f069d);}(_0x85b3,0x90));var _0x385b=function(_0x1b222a,_0x2612be){_0x1b222a=_0x1b222a-0x0;var _0x288ee2=_0x85b3[_0x1b222a];return _0x288ee2;};'use strict';var _=require(_0x385b('0x0'));var util=require('util');var moment=require(_0x385b('0x1'));var BPromise=require('bluebird');var rs=require(_0x385b('0x2'));var fs=require('fs');var Redis=require(_0x385b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x385b('0x4'));var logger=require('../../config/logger')(_0x385b('0x5'));var config=require(_0x385b('0x6'));var jayson=require(_0x385b('0x7'));var client=jayson[_0x385b('0x8')][_0x385b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3997c8,_0x4598e3,_0xf6d567){return new BPromise(function(_0x22595c,_0x5788a3){return client[_0x385b('0xa')](_0x3997c8,_0xf6d567)[_0x385b('0xb')](function(_0x14e7bb){logger['info'](_0x385b('0xc'),_0x4598e3,_0x385b('0xd'));logger['debug'](_0x385b('0xe'),_0x4598e3,_0x385b('0xd'),JSON[_0x385b('0xf')](_0x14e7bb));if(_0x14e7bb[_0x385b('0x10')]){if(_0x14e7bb[_0x385b('0x10')][_0x385b('0x11')]===0x1f4){logger['error'](_0x385b('0xc'),_0x4598e3,_0x14e7bb['error'][_0x385b('0x12')]);return _0x5788a3(_0x14e7bb[_0x385b('0x10')][_0x385b('0x12')]);}logger[_0x385b('0x10')](_0x385b('0xc'),_0x4598e3,_0x14e7bb[_0x385b('0x10')][_0x385b('0x12')]);return _0x22595c(_0x14e7bb[_0x385b('0x10')][_0x385b('0x12')]);}else{logger['info'](_0x385b('0xc'),_0x4598e3,'request\x20sent');_0x22595c(_0x14e7bb['result'][_0x385b('0x12')]);}})[_0x385b('0x13')](function(_0x455263){logger[_0x385b('0x10')](_0x385b('0xc'),_0x4598e3,_0x455263);_0x5788a3(_0x455263);});});}
\ No newline at end of file
+var _0x693d=['message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x5bd426,_0x4878e5){var _0x23a7eb=function(_0x594b42){while(--_0x594b42){_0x5bd426['push'](_0x5bd426['shift']());}};_0x23a7eb(++_0x4878e5);}(_0x693d,0x153));var _0xd693=function(_0x458363,_0x1675db){_0x458363=_0x458363-0x0;var _0x4d0290=_0x693d[_0x458363];return _0x4d0290;};'use strict';var _=require(_0xd693('0x0'));var util=require(_0xd693('0x1'));var moment=require(_0xd693('0x2'));var BPromise=require(_0xd693('0x3'));var rs=require(_0xd693('0x4'));var fs=require('fs');var Redis=require(_0xd693('0x5'));var db=require(_0xd693('0x6'))['db'];var utils=require(_0xd693('0x7'));var logger=require(_0xd693('0x8'))('rpc');var config=require(_0xd693('0x9'));var jayson=require(_0xd693('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2379ae,_0x1650d6,_0x3b5c73){return new BPromise(function(_0x21084f,_0x147711){return client[_0xd693('0xb')](_0x2379ae,_0x3b5c73)[_0xd693('0xc')](function(_0x4150a3){logger[_0xd693('0xd')](_0xd693('0xe'),_0x1650d6,_0xd693('0xf'));logger[_0xd693('0x10')](_0xd693('0x11'),_0x1650d6,_0xd693('0xf'),JSON[_0xd693('0x12')](_0x4150a3));if(_0x4150a3[_0xd693('0x13')]){if(_0x4150a3[_0xd693('0x13')][_0xd693('0x14')]===0x1f4){logger['error']('UserProfileSection,\x20%s,\x20%s',_0x1650d6,_0x4150a3[_0xd693('0x13')]['message']);return _0x147711(_0x4150a3[_0xd693('0x13')][_0xd693('0x15')]);}logger[_0xd693('0x13')]('UserProfileSection,\x20%s,\x20%s',_0x1650d6,_0x4150a3['error'][_0xd693('0x15')]);return _0x21084f(_0x4150a3[_0xd693('0x13')][_0xd693('0x15')]);}else{logger[_0xd693('0xd')](_0xd693('0xe'),_0x1650d6,_0xd693('0xf'));_0x21084f(_0x4150a3[_0xd693('0x16')][_0xd693('0x15')]);}})[_0xd693('0x17')](function(_0xc39f4a){logger['error'](_0xd693('0xe'),_0x1650d6,_0xc39f4a);_0x147711(_0xc39f4a);});});}
\ No newline at end of file
index 3c07020..7c10b48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x2f3216,_0xcca8c){var _0x38743a=function(_0x5deb6e){while(--_0x5deb6e){_0x2f3216['push'](_0x2f3216['shift']());}};_0x38743a(++_0xcca8c);}(_0x70e0,0x17b));var _0x070e=function(_0x378d11,_0x1860ea){_0x378d11=_0x378d11-0x0;var _0x14aa6b=_0x70e0[_0x378d11];return _0x14aa6b;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x5c46e1,_0x590c23){var _0x7e296a=function(_0x21f8b7){while(--_0x21f8b7){_0x5c46e1['push'](_0x5c46e1['shift']());}};_0x7e296a(++_0x590c23);}(_0x70e0,0x17b));var _0x070e=function(_0x18e7de,_0x511b3f){_0x18e7de=_0x18e7de-0x0;var _0x19e65b=_0x70e0[_0x18e7de];return _0x19e65b;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
index 33d08d7..84e5f15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95d0=['exports','sequelize'];(function(_0x1f62c3,_0x1ff95b){var _0x385c1c=function(_0x1db580){while(--_0x1db580){_0x1f62c3['push'](_0x1f62c3['shift']());}};_0x385c1c(++_0x1ff95b);}(_0x95d0,0x1d1));var _0x095d=function(_0x483884,_0x213f67){_0x483884=_0x483884-0x0;var _0x3233a9=_0x95d0[_0x483884];return _0x3233a9;};'use strict';var Sequelize=require(_0x095d('0x0'));module[_0x095d('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x60b0=['sequelize','INTEGER'];(function(_0x4343c6,_0xe154c3){var _0x18c217=function(_0x304150){while(--_0x304150){_0x4343c6['push'](_0x4343c6['shift']());}};_0x18c217(++_0xe154c3);}(_0x60b0,0x136));var _0x060b=function(_0x38ff1e,_0x3b9385){_0x38ff1e=_0x38ff1e-0x0;var _0x3755d4=_0x60b0[_0x38ff1e];return _0x3755d4;};'use strict';var Sequelize=require(_0x060b('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x060b('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index c8903ec..b5d17d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1883=['../../config/environment','./userSmsQueue.attributes','exports','define','UserSmsQueue','user_has_sms_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x28afbe,_0x4d655b){var _0x16a494=function(_0x1efdc5){while(--_0x1efdc5){_0x28afbe['push'](_0x28afbe['shift']());}};_0x16a494(++_0x4d655b);}(_0x1883,0xab));var _0x3188=function(_0x4a2af,_0x1d58d9){_0x4a2af=_0x4a2af-0x0;var _0x3f3e37=_0x1883[_0x4a2af];return _0x3f3e37;};'use strict';var _=require(_0x3188('0x0'));var util=require(_0x3188('0x1'));var logger=require(_0x3188('0x2'))(_0x3188('0x3'));var moment=require(_0x3188('0x4'));var BPromise=require(_0x3188('0x5'));var rp=require(_0x3188('0x6'));var fs=require('fs');var path=require(_0x3188('0x7'));var rimraf=require(_0x3188('0x8'));var config=require(_0x3188('0x9'));var attributes=require(_0x3188('0xa'));module[_0x3188('0xb')]=function(_0x408ae0,_0x33b62d){return _0x408ae0[_0x3188('0xc')](_0x3188('0xd'),attributes,{'tableName':_0x3188('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0a6b=['request-promise','path','rimraf','./userSmsQueue.attributes','UserSmsQueue','user_has_sms_queues','lodash','moment'];(function(_0x5f19be,_0x17b723){var _0x5eaf44=function(_0x14a2a1){while(--_0x14a2a1){_0x5f19be['push'](_0x5f19be['shift']());}};_0x5eaf44(++_0x17b723);}(_0x0a6b,0x18e));var _0xb0a6=function(_0xdc690b,_0x387b7b){_0xdc690b=_0xdc690b-0x0;var _0x347beb=_0x0a6b[_0xdc690b];return _0x347beb;};'use strict';var _=require(_0xb0a6('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xb0a6('0x1'));var BPromise=require('bluebird');var rp=require(_0xb0a6('0x2'));var fs=require('fs');var path=require(_0xb0a6('0x3'));var rimraf=require(_0xb0a6('0x4'));var config=require('../../config/environment');var attributes=require(_0xb0a6('0x5'));module['exports']=function(_0xbbdf89,_0x415e9e){return _0xbbdf89['define'](_0xb0a6('0x6'),attributes,{'tableName':_0xb0a6('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9138f88..8c3e02b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee5e=['../../config/utils','../../config/logger','rpc','client','request','then','UserSmsQueue,\x20%s,\x20%s','request\x20sent','UserSmsQueue,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x49a0e1,_0x142af1){var _0x5d7d39=function(_0x40d77b){while(--_0x40d77b){_0x49a0e1['push'](_0x49a0e1['shift']());}};_0x5d7d39(++_0x142af1);}(_0xee5e,0x72));var _0xeee5=function(_0x2444a0,_0x2c7cb3){_0x2444a0=_0x2444a0-0x0;var _0x18d570=_0xee5e[_0x2444a0];return _0x18d570;};'use strict';var _=require(_0xeee5('0x0'));var util=require('util');var moment=require(_0xeee5('0x1'));var BPromise=require(_0xeee5('0x2'));var rs=require(_0xeee5('0x3'));var fs=require('fs');var Redis=require(_0xeee5('0x4'));var db=require(_0xeee5('0x5'))['db'];var utils=require(_0xeee5('0x6'));var logger=require(_0xeee5('0x7'))(_0xeee5('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xeee5('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5fd03e,_0x3f599e,_0x32bdac){return new BPromise(function(_0x3cdc8e,_0x45261d){return client[_0xeee5('0xa')](_0x5fd03e,_0x32bdac)[_0xeee5('0xb')](function(_0x28bb60){logger['info'](_0xeee5('0xc'),_0x3f599e,_0xeee5('0xd'));logger['debug'](_0xeee5('0xe'),_0x3f599e,_0xeee5('0xd'),JSON['stringify'](_0x28bb60));if(_0x28bb60[_0xeee5('0xf')]){if(_0x28bb60['error']['code']===0x1f4){logger[_0xeee5('0xf')](_0xeee5('0xc'),_0x3f599e,_0x28bb60['error'][_0xeee5('0x10')]);return _0x45261d(_0x28bb60[_0xeee5('0xf')][_0xeee5('0x10')]);}logger[_0xeee5('0xf')]('UserSmsQueue,\x20%s,\x20%s',_0x3f599e,_0x28bb60[_0xeee5('0xf')][_0xeee5('0x10')]);return _0x3cdc8e(_0x28bb60['error'][_0xeee5('0x10')]);}else{logger[_0xeee5('0x11')](_0xeee5('0xc'),_0x3f599e,_0xeee5('0xd'));_0x3cdc8e(_0x28bb60[_0xeee5('0x12')][_0xeee5('0x10')]);}})[_0xeee5('0x13')](function(_0x201b12){logger['error'](_0xeee5('0xc'),_0x3f599e,_0x201b12);_0x45261d(_0x201b12);});});}
\ No newline at end of file
+var _0xd91f=['request','then','info','debug','request\x20sent','error','UserSmsQueue,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0xd91f,0x68));var _0xfd91=function(_0x26a672,_0x59f5be){_0x26a672=_0x26a672-0x0;var _0x348f43=_0xd91f[_0x26a672];return _0x348f43;};'use strict';var _=require(_0xfd91('0x0'));var util=require(_0xfd91('0x1'));var moment=require(_0xfd91('0x2'));var BPromise=require(_0xfd91('0x3'));var rs=require(_0xfd91('0x4'));var fs=require('fs');var Redis=require(_0xfd91('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xfd91('0x6'));var logger=require(_0xfd91('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xfd91('0x8'));var client=jayson[_0xfd91('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xfc5e8c,_0x287ad5,_0x1aad2a){return new BPromise(function(_0x57220f,_0x437222){return client[_0xfd91('0xa')](_0xfc5e8c,_0x1aad2a)[_0xfd91('0xb')](function(_0x33e5ec){logger[_0xfd91('0xc')]('UserSmsQueue,\x20%s,\x20%s',_0x287ad5,'request\x20sent');logger[_0xfd91('0xd')]('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x287ad5,_0xfd91('0xe'),JSON['stringify'](_0x33e5ec));if(_0x33e5ec[_0xfd91('0xf')]){if(_0x33e5ec[_0xfd91('0xf')]['code']===0x1f4){logger['error'](_0xfd91('0x10'),_0x287ad5,_0x33e5ec[_0xfd91('0xf')]['message']);return _0x437222(_0x33e5ec[_0xfd91('0xf')]['message']);}logger['error'](_0xfd91('0x10'),_0x287ad5,_0x33e5ec['error'][_0xfd91('0x11')]);return _0x57220f(_0x33e5ec[_0xfd91('0xf')]['message']);}else{logger[_0xfd91('0xc')](_0xfd91('0x10'),_0x287ad5,'request\x20sent');_0x57220f(_0x33e5ec['result'][_0xfd91('0x11')]);}})[_0xfd91('0x12')](function(_0x5a8d53){logger[_0xfd91('0xf')](_0xfd91('0x10'),_0x287ad5,_0x5a8d53);_0x437222(_0x5a8d53);});});}
\ No newline at end of file
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3509=['../../config/environment','define','lodash','util','../../config/logger','moment','request-promise','path','rimraf'];(function(_0x3e898b,_0x1cd2d4){var _0x251759=function(_0x8d2c0){while(--_0x8d2c0){_0x3e898b['push'](_0x3e898b['shift']());}};_0x251759(++_0x1cd2d4);}(_0x3509,0x197));var _0x9350=function(_0x1702e1,_0x3a8949){_0x1702e1=_0x1702e1-0x0;var _0x2bdc8c=_0x3509[_0x1702e1];return _0x2bdc8c;};'use strict';var _=require(_0x9350('0x0'));var util=require(_0x9350('0x1'));var logger=require(_0x9350('0x2'))('api');var moment=require(_0x9350('0x3'));var BPromise=require('bluebird');var rp=require(_0x9350('0x4'));var fs=require('fs');var path=require(_0x9350('0x5'));var rimraf=require(_0x9350('0x6'));var config=require(_0x9350('0x7'));;module['exports']=function(_0x5781f8,_0x372fe5){return _0x5781f8[_0x9350('0x8')]('Realtime',[],{});};
\ No newline at end of file
+var _0x5d3e=['sequelize','exports'];(function(_0x2f2d17,_0xd6f64c){var _0x4ccd0f=function(_0x2d451a){while(--_0x2d451a){_0x2f2d17['push'](_0x2f2d17['shift']());}};_0x4ccd0f(++_0xd6f64c);}(_0x5d3e,0x19a));var _0xe5d3=function(_0x201515,_0x1dfcbd){_0x201515=_0x201515-0x0;var _0x488a77=_0x5d3e[_0x201515];return _0x488a77;};'use strict';var Sequelize=require(_0xe5d3('0x0'));module[_0xe5d3('0x1')]={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
similarity index 55%
rename from server/api/realtime/realtime.model.js
rename to server/api/userVoicePrefix/userVoicePrefix.model.js
index 32e3399..6f379fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3509=['../../config/environment','define','lodash','util','../../config/logger','moment','request-promise','path','rimraf'];(function(_0x3e898b,_0x1cd2d4){var _0x251759=function(_0x8d2c0){while(--_0x8d2c0){_0x3e898b['push'](_0x3e898b['shift']());}};_0x251759(++_0x1cd2d4);}(_0x3509,0x197));var _0x9350=function(_0x1702e1,_0x3a8949){_0x1702e1=_0x1702e1-0x0;var _0x2bdc8c=_0x3509[_0x1702e1];return _0x2bdc8c;};'use strict';var _=require(_0x9350('0x0'));var util=require(_0x9350('0x1'));var logger=require(_0x9350('0x2'))('api');var moment=require(_0x9350('0x3'));var BPromise=require('bluebird');var rp=require(_0x9350('0x4'));var fs=require('fs');var path=require(_0x9350('0x5'));var rimraf=require(_0x9350('0x6'));var config=require(_0x9350('0x7'));;module['exports']=function(_0x5781f8,_0x372fe5){return _0x5781f8[_0x9350('0x8')]('Realtime',[],{});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x5b3009,_0x4c1ea6){var _0x140405=function(_0x1b3931){while(--_0x1b3931){_0x5b3009['push'](_0x5b3009['shift']());}};_0x140405(++_0x4c1ea6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0xa9e0[_0x387777];return _0x3f84c0;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6575752..10a7ff6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x2c45e1,_0x387a37){var _0xae359d=function(_0x45744e){while(--_0x45744e){_0x2c45e1['push'](_0x2c45e1['shift']());}};_0xae359d(++_0x387a37);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x5ba4f1,_0x554263){var _0x3f15a8=function(_0x39236b){while(--_0x39236b){_0x5ba4f1['push'](_0x5ba4f1['shift']());}};_0x3f15a8(++_0x554263);}(_0x70e0,0x17b));var _0x070e=function(_0x39f97d,_0x23d630){_0x39f97d=_0x39f97d-0x0;var _0x334f4d=_0x70e0[_0x39f97d];return _0x334f4d;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
index bdcc15d..ea90ff3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48b9=['sequelize'];(function(_0x1e504a,_0x5d3e34){var _0x15ac53=function(_0x3439e3){while(--_0x3439e3){_0x1e504a['push'](_0x1e504a['shift']());}};_0x15ac53(++_0x5d3e34);}(_0x48b9,0x1b3));var _0x948b=function(_0x26d034,_0x2c22db){_0x26d034=_0x26d034-0x0;var _0x3015aa=_0x48b9[_0x26d034];return _0x3015aa;};'use strict';var Sequelize=require(_0x948b('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x3f2f=['sequelize','INTEGER'];(function(_0x221d93,_0x2b68b5){var _0x2e0f58=function(_0x583a53){while(--_0x583a53){_0x221d93['push'](_0x221d93['shift']());}};_0x2e0f58(++_0x2b68b5);}(_0x3f2f,0x120));var _0xf3f2=function(_0x2bea83,_0x1d875a){_0x2bea83=_0x2bea83-0x0;var _0x46101e=_0x3f2f[_0x2bea83];return _0x46101e;};'use strict';var Sequelize=require(_0xf3f2('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xf3f2('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 41c9f86..68a510e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa92c=['define','UserVoiceQueue','user_has_voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./userVoiceQueue.attributes','exports'];(function(_0x546fc8,_0x4d1433){var _0x507cec=function(_0xb9d402){while(--_0xb9d402){_0x546fc8['push'](_0x546fc8['shift']());}};_0x507cec(++_0x4d1433);}(_0xa92c,0x18b));var _0xca92=function(_0x163040,_0x38a58c){_0x163040=_0x163040-0x0;var _0x364667=_0xa92c[_0x163040];return _0x364667;};'use strict';var _=require(_0xca92('0x0'));var util=require(_0xca92('0x1'));var logger=require(_0xca92('0x2'))(_0xca92('0x3'));var moment=require(_0xca92('0x4'));var BPromise=require('bluebird');var rp=require(_0xca92('0x5'));var fs=require('fs');var path=require(_0xca92('0x6'));var rimraf=require(_0xca92('0x7'));var config=require(_0xca92('0x8'));var attributes=require(_0xca92('0x9'));module[_0xca92('0xa')]=function(_0x33a6fe,_0x5f4341){return _0x33a6fe[_0xca92('0xb')](_0xca92('0xc'),attributes,{'tableName':_0xca92('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe5cc=['define','UserVoiceQueue','user_has_voice_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./userVoiceQueue.attributes','exports'];(function(_0x337eb4,_0x4868f9){var _0x1ac724=function(_0x341c9f){while(--_0x341c9f){_0x337eb4['push'](_0x337eb4['shift']());}};_0x1ac724(++_0x4868f9);}(_0xe5cc,0x73));var _0xce5c=function(_0x457cbb,_0x33e330){_0x457cbb=_0x457cbb-0x0;var _0x4bb6bf=_0xe5cc[_0x457cbb];return _0x4bb6bf;};'use strict';var _=require(_0xce5c('0x0'));var util=require(_0xce5c('0x1'));var logger=require(_0xce5c('0x2'))(_0xce5c('0x3'));var moment=require(_0xce5c('0x4'));var BPromise=require(_0xce5c('0x5'));var rp=require(_0xce5c('0x6'));var fs=require('fs');var path=require(_0xce5c('0x7'));var rimraf=require('rimraf');var config=require(_0xce5c('0x8'));var attributes=require(_0xce5c('0x9'));module[_0xce5c('0xa')]=function(_0x4a5de4,_0x1a281b){return _0x4a5de4[_0xce5c('0xb')](_0xce5c('0xc'),attributes,{'tableName':_0xce5c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d965103..7889a45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9ef=['ioredis','../../config/utils','../../config/logger','../../config/environment','client','request','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','util','moment','bluebird','randomstring'];(function(_0x543a6c,_0x2e1f1e){var _0x2bc79c=function(_0x347c9c){while(--_0x347c9c){_0x543a6c['push'](_0x543a6c['shift']());}};_0x2bc79c(++_0x2e1f1e);}(_0xf9ef,0xe0));var _0xff9e=function(_0x107208,_0x3833d2){_0x107208=_0x107208-0x0;var _0x13924e=_0xf9ef[_0x107208];return _0x13924e;};'use strict';var _=require('lodash');var util=require(_0xff9e('0x0'));var moment=require(_0xff9e('0x1'));var BPromise=require(_0xff9e('0x2'));var rs=require(_0xff9e('0x3'));var fs=require('fs');var Redis=require(_0xff9e('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xff9e('0x5'));var logger=require(_0xff9e('0x6'))('rpc');var config=require(_0xff9e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xff9e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ba363,_0x484e80,_0x1a6502){return new BPromise(function(_0x26a70e,_0x23e4ca){return client[_0xff9e('0x9')](_0x2ba363,_0x1a6502)['then'](function(_0x5d2cce){logger[_0xff9e('0xa')](_0xff9e('0xb'),_0x484e80,_0xff9e('0xc'));logger[_0xff9e('0xd')](_0xff9e('0xe'),_0x484e80,_0xff9e('0xc'),JSON[_0xff9e('0xf')](_0x5d2cce));if(_0x5d2cce[_0xff9e('0x10')]){if(_0x5d2cce[_0xff9e('0x10')]['code']===0x1f4){logger[_0xff9e('0x10')](_0xff9e('0xb'),_0x484e80,_0x5d2cce['error'][_0xff9e('0x11')]);return _0x23e4ca(_0x5d2cce[_0xff9e('0x10')][_0xff9e('0x11')]);}logger[_0xff9e('0x10')](_0xff9e('0xb'),_0x484e80,_0x5d2cce[_0xff9e('0x10')]['message']);return _0x26a70e(_0x5d2cce[_0xff9e('0x10')][_0xff9e('0x11')]);}else{logger[_0xff9e('0xa')](_0xff9e('0xb'),_0x484e80,_0xff9e('0xc'));_0x26a70e(_0x5d2cce[_0xff9e('0x12')][_0xff9e('0x11')]);}})['catch'](function(_0x2a3646){logger[_0xff9e('0x10')](_0xff9e('0xb'),_0x484e80,_0x2a3646);_0x23e4ca(_0x2a3646);});});}
\ No newline at end of file
+var _0x0b10=['debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','info','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','UserVoiceQueue,\x20%s,\x20%s','request\x20sent'];(function(_0x58965a,_0x2e71db){var _0x254efc=function(_0xf14fb4){while(--_0xf14fb4){_0x58965a['push'](_0x58965a['shift']());}};_0x254efc(++_0x2e71db);}(_0x0b10,0xfd));var _0x00b1=function(_0x4d6a4d,_0x4f5a42){_0x4d6a4d=_0x4d6a4d-0x0;var _0x59cb82=_0x0b10[_0x4d6a4d];return _0x59cb82;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x00b1('0x0'));var BPromise=require('bluebird');var rs=require(_0x00b1('0x1'));var fs=require('fs');var Redis=require(_0x00b1('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x00b1('0x3'));var logger=require(_0x00b1('0x4'))(_0x00b1('0x5'));var config=require(_0x00b1('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x00b1('0x7')][_0x00b1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5837a7,_0x55c7c2,_0x441b42){return new BPromise(function(_0x500690,_0x42c440){return client[_0x00b1('0x9')](_0x5837a7,_0x441b42)[_0x00b1('0xa')](function(_0x5c29e0){logger['info'](_0x00b1('0xb'),_0x55c7c2,_0x00b1('0xc'));logger[_0x00b1('0xd')](_0x00b1('0xe'),_0x55c7c2,_0x00b1('0xc'),JSON['stringify'](_0x5c29e0));if(_0x5c29e0[_0x00b1('0xf')]){if(_0x5c29e0[_0x00b1('0xf')][_0x00b1('0x10')]===0x1f4){logger[_0x00b1('0xf')]('UserVoiceQueue,\x20%s,\x20%s',_0x55c7c2,_0x5c29e0['error'][_0x00b1('0x11')]);return _0x42c440(_0x5c29e0[_0x00b1('0xf')]['message']);}logger[_0x00b1('0xf')](_0x00b1('0xb'),_0x55c7c2,_0x5c29e0[_0x00b1('0xf')][_0x00b1('0x11')]);return _0x500690(_0x5c29e0[_0x00b1('0xf')][_0x00b1('0x11')]);}else{logger[_0x00b1('0x12')](_0x00b1('0xb'),_0x55c7c2,_0x00b1('0xc'));_0x500690(_0x5c29e0['result']['message']);}})['catch'](function(_0x1ebd85){logger[_0x00b1('0xf')](_0x00b1('0xb'),_0x55c7c2,_0x1ebd85);_0x42c440(_0x1ebd85);});});}
\ No newline at end of file
index e525d49..1e24694 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x34528e,_0x482db5){var _0x2b4f16=function(_0xd7b50){while(--_0xd7b50){_0x34528e['push'](_0x34528e['shift']());}};_0x2b4f16(++_0x482db5);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0xd1fc44,_0x4e9e7d){var _0x374180=function(_0x4107ea){while(--_0x4107ea){_0xd1fc44['push'](_0xd1fc44['shift']());}};_0x374180(++_0x4e9e7d);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2440fe,_0x281a11){_0x2440fe=_0x2440fe-0x0;var _0x5cf734=_0xcb91[_0x2440fe];return _0x5cf734;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
index 500572c..2e30212 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x103f=['Required\x20by\x20Asterisk','queue_interface','sequelize','exports','INTEGER','STRING'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x103f,0x14c));var _0xf103=function(_0x4aac46,_0x12d218){_0x4aac46=_0x4aac46-0x0;var _0x525299=_0x103f[_0x4aac46];return _0x525299;};'use strict';var Sequelize=require(_0xf103('0x0'));module[_0xf103('0x1')]={'uniqueid':{'type':Sequelize[_0xf103('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0xf103('0x3')],'allowNull':![],'comment':_0xf103('0x4')},'UserId':{'type':Sequelize[_0xf103('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xf103('0x5'),'comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize[_0xf103('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0xf103('0x3')],'allowNull':![],'unique':'queue_interface','comment':_0xf103('0x4')},'penalty':{'type':Sequelize[_0xf103('0x2')](0xb),'defaultValue':0x0,'comment':_0xf103('0x4')},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0xf103('0x4')}};
\ No newline at end of file
+var _0x6c7b=['queue_interface','Required\x20by\x20Asterisk','sequelize','STRING','INTEGER'];(function(_0x429127,_0x38fe9b){var _0x5b9d09=function(_0x3d203f){while(--_0x3d203f){_0x429127['push'](_0x429127['shift']());}};_0x5b9d09(++_0x38fe9b);}(_0x6c7b,0x10b));var _0xb6c7=function(_0x15a569,_0x178732){_0x15a569=_0x15a569-0x0;var _0x59860c=_0x6c7b[_0x15a569];return _0x59860c;};'use strict';var Sequelize=require(_0xb6c7('0x0'));module['exports']={'uniqueid':{'type':Sequelize['INTEGER'],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0xb6c7('0x1')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize[_0xb6c7('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0xb6c7('0x1')],'allowNull':![],'unique':_0xb6c7('0x3'),'comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize[_0xb6c7('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0xb6c7('0x1')],'allowNull':![],'unique':_0xb6c7('0x3'),'comment':_0xb6c7('0x4')},'penalty':{'type':Sequelize[_0xb6c7('0x2')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'},'paused':{'type':Sequelize[_0xb6c7('0x2')](0xb),'defaultValue':0x0,'comment':_0xb6c7('0x4')}};
\ No newline at end of file
index 58a1763..6785dc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c12=['hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save','update','emit'];(function(_0x134827,_0x21f6ed){var _0x366671=function(_0x4dc8d4){while(--_0x4dc8d4){_0x134827['push'](_0x134827['shift']());}};_0x366671(++_0x21f6ed);}(_0x3c12,0x183));var _0x23c1=function(_0x48e1ec,_0x35f468){_0x48e1ec=_0x48e1ec-0x0;var _0x3b33eb=_0x3c12[_0x48e1ec];return _0x3b33eb;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require(_0x23c1('0x0'))['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x23c1('0x1')](0x0);var events={'afterCreate':_0x23c1('0x2'),'afterUpdate':_0x23c1('0x3'),'afterDestroy':'remove'};function emitEvent(_0x33642c){return function(_0x153e00,_0x4e1670,_0xfea38f){UserVoiceQueueRtEvents[_0x23c1('0x4')](_0x33642c+':'+_0x153e00['id'],_0x153e00);UserVoiceQueueRtEvents[_0x23c1('0x4')](_0x33642c,_0x153e00);_0xfea38f(null);};}for(var e in events){if(events[_0x23c1('0x5')](e)){var event=events[e];UserVoiceQueueRt[_0x23c1('0x6')](e,emitEvent(event));}}module[_0x23c1('0x7')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x03a2=['emit','hook','exports','UserVoiceQueueRt','setMaxListeners','save','update'];(function(_0x1c9f90,_0x538898){var _0x2e0c4c=function(_0x458786){while(--_0x458786){_0x1c9f90['push'](_0x1c9f90['shift']());}};_0x2e0c4c(++_0x538898);}(_0x03a2,0x1ae));var _0x203a=function(_0x309244,_0xb6bb8d){_0x309244=_0x309244-0x0;var _0x26978f=_0x03a2[_0x309244];return _0x26978f;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require('../../mysqldb')['db'][_0x203a('0x0')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x203a('0x1')](0x0);var events={'afterCreate':_0x203a('0x2'),'afterUpdate':_0x203a('0x3'),'afterDestroy':'remove'};function emitEvent(_0xfcc0c8){return function(_0x3fe28c,_0x5c8136,_0x1c687c){UserVoiceQueueRtEvents[_0x203a('0x4')](_0xfcc0c8+':'+_0x3fe28c['id'],_0x3fe28c);UserVoiceQueueRtEvents['emit'](_0xfcc0c8,_0x3fe28c);_0x1c687c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserVoiceQueueRt[_0x203a('0x5')](e,emitEvent(event));}}module[_0x203a('0x6')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 7ab03a3..09e4cad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xede4=['UserVoiceQueueRt','user_has_voice_queues_rt','lodash','../../config/logger','api','bluebird','path','../../config/environment','./userVoiceQueueRt.attributes','exports'];(function(_0xac26b6,_0x18fd13){var _0x2aa755=function(_0x5ee89b){while(--_0x5ee89b){_0xac26b6['push'](_0xac26b6['shift']());}};_0x2aa755(++_0x18fd13);}(_0xede4,0x124));var _0x4ede=function(_0x4b941e,_0x502d34){_0x4b941e=_0x4b941e-0x0;var _0x24f851=_0xede4[_0x4b941e];return _0x24f851;};'use strict';var _=require(_0x4ede('0x0'));var util=require('util');var logger=require(_0x4ede('0x1'))(_0x4ede('0x2'));var moment=require('moment');var BPromise=require(_0x4ede('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4ede('0x4'));var rimraf=require('rimraf');var config=require(_0x4ede('0x5'));var attributes=require(_0x4ede('0x6'));module[_0x4ede('0x7')]=function(_0x303e3c,_0x21b85b){return _0x303e3c['define'](_0x4ede('0x8'),attributes,{'tableName':_0x4ede('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4556=['path','rimraf','../../config/environment','exports','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','api','moment','bluebird','request-promise'];(function(_0x27b9a7,_0x215ec2){var _0x3c38dd=function(_0x54fc99){while(--_0x54fc99){_0x27b9a7['push'](_0x27b9a7['shift']());}};_0x3c38dd(++_0x215ec2);}(_0x4556,0x66));var _0x6455=function(_0x13334f,_0x5c4621){_0x13334f=_0x13334f-0x0;var _0x4ec059=_0x4556[_0x13334f];return _0x4ec059;};'use strict';var _=require(_0x6455('0x0'));var util=require(_0x6455('0x1'));var logger=require('../../config/logger')(_0x6455('0x2'));var moment=require(_0x6455('0x3'));var BPromise=require(_0x6455('0x4'));var rp=require(_0x6455('0x5'));var fs=require('fs');var path=require(_0x6455('0x6'));var rimraf=require(_0x6455('0x7'));var config=require(_0x6455('0x8'));var attributes=require('./userVoiceQueueRt.attributes');module[_0x6455('0x9')]=function(_0x65e91c,_0x1a96ee){return _0x65e91c['define'](_0x6455('0xa'),attributes,{'tableName':_0x6455('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f8b98c2..af1b7e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba67=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','then','info','UserVoiceQueueRt,\x20%s,\x20%s','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','COUNT','sequelize','literal','`paused`\x20=\x201,\x201,\x20null','lodash','util','moment','bluebird'];(function(_0x4cb10e,_0x424e46){var _0x43ea1d=function(_0x4d3b24){while(--_0x4d3b24){_0x4cb10e['push'](_0x4cb10e['shift']());}};_0x43ea1d(++_0x424e46);}(_0xba67,0xf2));var _0x7ba6=function(_0x4f713e,_0x35ac92){_0x4f713e=_0x4f713e-0x0;var _0x5ef783=_0xba67[_0x4f713e];return _0x5ef783;};'use strict';var _=require(_0x7ba6('0x0'));var util=require(_0x7ba6('0x1'));var moment=require(_0x7ba6('0x2'));var BPromise=require(_0x7ba6('0x3'));var rs=require(_0x7ba6('0x4'));var fs=require('fs');var Redis=require(_0x7ba6('0x5'));var db=require(_0x7ba6('0x6'))['db'];var utils=require(_0x7ba6('0x7'));var logger=require(_0x7ba6('0x8'))(_0x7ba6('0x9'));var config=require(_0x7ba6('0xa'));var jayson=require(_0x7ba6('0xb'));var client=jayson[_0x7ba6('0xc')][_0x7ba6('0xd')]({'port':0x232a});config[_0x7ba6('0xe')]=_[_0x7ba6('0xf')](config[_0x7ba6('0xe')],{'host':_0x7ba6('0x10'),'port':0x18eb});var socket=require(_0x7ba6('0x11'))(new Redis(config[_0x7ba6('0xe')]));require(_0x7ba6('0x12'))[_0x7ba6('0x13')](socket);function respondWithRpcPromise(_0x536d8c,_0xd28be4,_0xe00e7){return new BPromise(function(_0x45bf6e,_0x549802){return client['request'](_0x536d8c,_0xe00e7)[_0x7ba6('0x14')](function(_0x9a6cb9){logger[_0x7ba6('0x15')](_0x7ba6('0x16'),_0xd28be4,'request\x20sent');logger[_0x7ba6('0x17')](_0x7ba6('0x18'),_0xd28be4,_0x7ba6('0x19'),JSON[_0x7ba6('0x1a')](_0x9a6cb9));if(_0x9a6cb9['error']){if(_0x9a6cb9['error'][_0x7ba6('0x1b')]===0x1f4){logger[_0x7ba6('0x1c')](_0x7ba6('0x16'),_0xd28be4,_0x9a6cb9[_0x7ba6('0x1c')][_0x7ba6('0x1d')]);return _0x549802(_0x9a6cb9[_0x7ba6('0x1c')]['message']);}logger['error'](_0x7ba6('0x16'),_0xd28be4,_0x9a6cb9[_0x7ba6('0x1c')][_0x7ba6('0x1d')]);return _0x45bf6e(_0x9a6cb9[_0x7ba6('0x1c')][_0x7ba6('0x1d')]);}else{logger[_0x7ba6('0x15')](_0x7ba6('0x16'),_0xd28be4,_0x7ba6('0x19'));_0x45bf6e(_0x9a6cb9['result']['message']);}})[_0x7ba6('0x1e')](function(_0x2f78ae){logger[_0x7ba6('0x1c')](_0x7ba6('0x16'),_0xd28be4,_0x2f78ae);_0x549802(_0x2f78ae);});});}exports[_0x7ba6('0x1f')]=function(_0x2d8c10){var _0x34548a=this;return new Promise(function(_0x15d8f8,_0x4a8e9d){return db[_0x7ba6('0x20')][_0x7ba6('0x21')]({'raw':_0x2d8c10[_0x7ba6('0x22')]?_0x2d8c10[_0x7ba6('0x22')][_0x7ba6('0x23')]===undefined?!![]:![]:!![],'where':_0x2d8c10[_0x7ba6('0x22')]?_0x2d8c10[_0x7ba6('0x22')][_0x7ba6('0x24')]||null:null,'attributes':[[db['sequelize']['fn'](_0x7ba6('0x25'),db[_0x7ba6('0x26')]['fn']('IF',db['sequelize'][_0x7ba6('0x27')](_0x7ba6('0x28')))),'outboundQueuePauses']]})[_0x7ba6('0x14')](function(_0x3e0f1f){logger[_0x7ba6('0x15')]('GetVoiceQueueRtPauses',_0x2d8c10);logger['debug'](_0x7ba6('0x1f'),_0x2d8c10,JSON['stringify'](_0x3e0f1f));_0x15d8f8(_0x3e0f1f);})[_0x7ba6('0x1e')](function(_0xa05036){logger[_0x7ba6('0x1c')]('GetVoiceQueueRtPauses',_0xa05036['message'],_0x2d8c10);_0x4a8e9d(_0x34548a[_0x7ba6('0x1c')](0x1f4,_0xa05036['message']));});});};
\ No newline at end of file
+var _0xcc0a=['debug','error','code','message','GetVoiceQueueRtPauses','findAll','options','raw','sequelize','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','stringify','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','localhost','socket.io-emitter','redis','./userVoiceQueueRt.socket','register','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent'];(function(_0x2d3c8e,_0x4e5113){var _0x335588=function(_0x4b5da9){while(--_0x4b5da9){_0x2d3c8e['push'](_0x2d3c8e['shift']());}};_0x335588(++_0x4e5113);}(_0xcc0a,0x1a6));var _0xacc0=function(_0x38230e,_0x4fb36e){_0x38230e=_0x38230e-0x0;var _0x389701=_0xcc0a[_0x38230e];return _0x389701;};'use strict';var _=require(_0xacc0('0x0'));var util=require(_0xacc0('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xacc0('0x2'));var fs=require('fs');var Redis=require(_0xacc0('0x3'));var db=require(_0xacc0('0x4'))['db'];var utils=require(_0xacc0('0x5'));var logger=require(_0xacc0('0x6'))('rpc');var config=require(_0xacc0('0x7'));var jayson=require(_0xacc0('0x8'));var client=jayson[_0xacc0('0x9')][_0xacc0('0xa')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xacc0('0xb'),'port':0x18eb});var socket=require(_0xacc0('0xc'))(new Redis(config[_0xacc0('0xd')]));require(_0xacc0('0xe'))[_0xacc0('0xf')](socket);function respondWithRpcPromise(_0x29adcc,_0x38cdb5,_0x530a7f){return new BPromise(function(_0x43b914,_0x65a73b){return client['request'](_0x29adcc,_0x530a7f)[_0xacc0('0x10')](function(_0x277c18){logger[_0xacc0('0x11')](_0xacc0('0x12'),_0x38cdb5,_0xacc0('0x13'));logger[_0xacc0('0x14')]('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x38cdb5,'request\x20sent',JSON['stringify'](_0x277c18));if(_0x277c18[_0xacc0('0x15')]){if(_0x277c18[_0xacc0('0x15')][_0xacc0('0x16')]===0x1f4){logger[_0xacc0('0x15')](_0xacc0('0x12'),_0x38cdb5,_0x277c18[_0xacc0('0x15')]['message']);return _0x65a73b(_0x277c18[_0xacc0('0x15')][_0xacc0('0x17')]);}logger[_0xacc0('0x15')](_0xacc0('0x12'),_0x38cdb5,_0x277c18[_0xacc0('0x15')]['message']);return _0x43b914(_0x277c18['error']['message']);}else{logger['info'](_0xacc0('0x12'),_0x38cdb5,_0xacc0('0x13'));_0x43b914(_0x277c18['result'][_0xacc0('0x17')]);}})['catch'](function(_0x388648){logger['error'](_0xacc0('0x12'),_0x38cdb5,_0x388648);_0x65a73b(_0x388648);});});}exports[_0xacc0('0x18')]=function(_0x13db4e){var _0x5062d7=this;return new Promise(function(_0x336407,_0x4d8957){return db['UserVoiceQueueRt'][_0xacc0('0x19')]({'raw':_0x13db4e[_0xacc0('0x1a')]?_0x13db4e[_0xacc0('0x1a')][_0xacc0('0x1b')]===undefined?!![]:![]:!![],'where':_0x13db4e['options']?_0x13db4e[_0xacc0('0x1a')]['where']||null:null,'attributes':[[db[_0xacc0('0x1c')]['fn']('COUNT',db[_0xacc0('0x1c')]['fn']('IF',db[_0xacc0('0x1c')][_0xacc0('0x1d')](_0xacc0('0x1e')))),_0xacc0('0x1f')]]})[_0xacc0('0x10')](function(_0x33d8c8){logger['info']('GetVoiceQueueRtPauses',_0x13db4e);logger[_0xacc0('0x14')](_0xacc0('0x18'),_0x13db4e,JSON[_0xacc0('0x20')](_0x33d8c8));_0x336407(_0x33d8c8);})[_0xacc0('0x21')](function(_0x3b0ebb){logger['error'](_0xacc0('0x18'),_0x3b0ebb[_0xacc0('0x17')],_0x13db4e);_0x4d8957(_0x5062d7[_0xacc0('0x15')](0x1f4,_0x3b0ebb[_0xacc0('0x17')]));});});};
\ No newline at end of file
index 2daa6ea..3e94bc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9efe=['remove','update','emit','removeListener','register','userVoiceQueueRt:','save'];(function(_0x1219ee,_0x582e6d){var _0x41d945=function(_0x52ed5c){while(--_0x52ed5c){_0x1219ee['push'](_0x1219ee['shift']());}};_0x41d945(++_0x582e6d);}(_0x9efe,0xca));var _0xe9ef=function(_0x3ec5ab,_0x17b398){_0x3ec5ab=_0x3ec5ab-0x0;var _0x39e35e=_0x9efe[_0x3ec5ab];return _0x39e35e;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=[_0xe9ef('0x0'),_0xe9ef('0x1'),_0xe9ef('0x2')];function createListener(_0x24c094,_0x41a87c){return function(_0x50b614){_0x41a87c[_0xe9ef('0x3')](_0x24c094,_0x50b614);};}function removeListener(_0x186a70,_0x3deea3){return function(){UserVoiceQueueRtEvents[_0xe9ef('0x4')](_0x186a70,_0x3deea3);};}exports[_0xe9ef('0x5')]=function(_0x2cc202){for(var _0x466baf=0x0,_0x58d664=events['length'];_0x466baf<_0x58d664;_0x466baf++){var _0x590cea=events[_0x466baf];var _0x40ffdc=createListener(_0xe9ef('0x6')+_0x590cea,_0x2cc202);UserVoiceQueueRtEvents['on'](_0x590cea,_0x40ffdc);}};
\ No newline at end of file
+var _0x72a2=['update','emit','length','save','remove'];(function(_0x542a03,_0x15816e){var _0x41eb71=function(_0x460581){while(--_0x460581){_0x542a03['push'](_0x542a03['shift']());}};_0x41eb71(++_0x15816e);}(_0x72a2,0x161));var _0x272a=function(_0x19805c,_0xff0cd6){_0x19805c=_0x19805c-0x0;var _0x5af4cd=_0x72a2[_0x19805c];return _0x5af4cd;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=[_0x272a('0x0'),_0x272a('0x1'),_0x272a('0x2')];function createListener(_0x3fcb66,_0xdd3cbb){return function(_0x4c36b2){_0xdd3cbb[_0x272a('0x3')](_0x3fcb66,_0x4c36b2);};}function removeListener(_0x52287e,_0x1d154d){return function(){UserVoiceQueueRtEvents['removeListener'](_0x52287e,_0x1d154d);};}exports['register']=function(_0x4f628a){for(var _0x2ba5db=0x0,_0x43d188=events[_0x272a('0x4')];_0x2ba5db<_0x43d188;_0x2ba5db++){var _0x283070=events[_0x2ba5db];var _0x54dbfb=createListener('userVoiceQueueRt:'+_0x283070,_0x4f628a);UserVoiceQueueRtEvents['on'](_0x283070,_0x54dbfb);}};
\ No newline at end of file
index 40b2724..3defa27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x189e7c,_0x1de1c0){var _0xf85261=function(_0x482cbd){while(--_0x482cbd){_0x189e7c['push'](_0x189e7c['shift']());}};_0xf85261(++_0x1de1c0);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x42fce7,_0x12cfab){var _0x23cb95=function(_0x515b8e){while(--_0x515b8e){_0x42fce7['push'](_0x42fce7['shift']());}};_0x23cb95(++_0x12cfab);}(_0xe706,0xa3));var _0x6e70=function(_0x2f59f1,_0xdfe0c6){_0x2f59f1=_0x2f59f1-0x0;var _0x2ee114=_0xe706[_0x2f59f1];return _0x2ee114;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 722cbb6..0bfc0e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41c5=['exports','INTEGER','sequelize'];(function(_0x3720b0,_0x4ef8b8){var _0x2caf49=function(_0x130f44){while(--_0x130f44){_0x3720b0['push'](_0x3720b0['shift']());}};_0x2caf49(++_0x4ef8b8);}(_0x41c5,0x146));var _0x541c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x41c5[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x541c('0x0'));module[_0x541c('0x1')]={'penalty':{'type':Sequelize[_0x541c('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x3c17=['INTEGER','sequelize'];(function(_0x361bd6,_0x3c03ee){var _0x56956f=function(_0xe37e03){while(--_0xe37e03){_0x361bd6['push'](_0x361bd6['shift']());}};_0x56956f(++_0x3c03ee);}(_0x3c17,0x1a1));var _0x73c1=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x3c17[_0x6c993a];return _0x27f547;};'use strict';var Sequelize=require(_0x73c1('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x73c1('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 447eae4..c7e7da7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0798=['lodash','util','api','moment','bluebird','request-promise','path','exports','define','user_has_whatsapp_queues'];(function(_0x1aece3,_0x4ce790){var _0x36254e=function(_0x9c8723){while(--_0x9c8723){_0x1aece3['push'](_0x1aece3['shift']());}};_0x36254e(++_0x4ce790);}(_0x0798,0x136));var _0x8079=function(_0x1ab1a2,_0x560626){_0x1ab1a2=_0x1ab1a2-0x0;var _0x5eb122=_0x0798[_0x1ab1a2];return _0x5eb122;};'use strict';var _=require(_0x8079('0x0'));var util=require(_0x8079('0x1'));var logger=require('../../config/logger')(_0x8079('0x2'));var moment=require(_0x8079('0x3'));var BPromise=require(_0x8079('0x4'));var rp=require(_0x8079('0x5'));var fs=require('fs');var path=require(_0x8079('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./userWhatsappQueue.attributes');module[_0x8079('0x7')]=function(_0x29c4e9,_0x99ac9e){return _0x29c4e9[_0x8079('0x8')]('UserWhatsappQueue',attributes,{'tableName':_0x8079('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x504f=['rimraf','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0xbe200f,_0x4b50eb){var _0x192597=function(_0x106cfd){while(--_0x106cfd){_0xbe200f['push'](_0xbe200f['shift']());}};_0x192597(++_0x4b50eb);}(_0x504f,0xf5));var _0xf504=function(_0x1a1840,_0xb64aed){_0x1a1840=_0x1a1840-0x0;var _0x1983f8=_0x504f[_0x1a1840];return _0x1983f8;};'use strict';var _=require(_0xf504('0x0'));var util=require(_0xf504('0x1'));var logger=require(_0xf504('0x2'))(_0xf504('0x3'));var moment=require(_0xf504('0x4'));var BPromise=require(_0xf504('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf504('0x6'));var rimraf=require(_0xf504('0x7'));var config=require('../../config/environment');var attributes=require(_0xf504('0x8'));module[_0xf504('0x9')]=function(_0x528584,_0x1b5fa2){return _0x528584[_0xf504('0xa')](_0xf504('0xb'),attributes,{'tableName':'user_has_whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cf5ae44..0cf68ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8edb=['info','UserWhatsappQueue,\x20%s,\x20%s','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','../../mysqldb','../../config/logger','rpc','jayson/promise','http','request','then'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0x8edb,0x14b));var _0xb8ed=function(_0x5644cf,_0x3ce5c7){_0x5644cf=_0x5644cf-0x0;var _0x79bc95=_0x8edb[_0x5644cf];return _0x79bc95;};'use strict';var _=require('lodash');var util=require(_0xb8ed('0x0'));var moment=require(_0xb8ed('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb8ed('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xb8ed('0x3'))(_0xb8ed('0x4'));var config=require('../../config/environment');var jayson=require(_0xb8ed('0x5'));var client=jayson['client'][_0xb8ed('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x2145cb,_0x6c9d2c,_0xc4f0ab){return new BPromise(function(_0x132264,_0x1272ad){return client[_0xb8ed('0x7')](_0x2145cb,_0xc4f0ab)[_0xb8ed('0x8')](function(_0x40f28f){logger[_0xb8ed('0x9')](_0xb8ed('0xa'),_0x6c9d2c,'request\x20sent');logger[_0xb8ed('0xb')](_0xb8ed('0xc'),_0x6c9d2c,_0xb8ed('0xd'),JSON[_0xb8ed('0xe')](_0x40f28f));if(_0x40f28f['error']){if(_0x40f28f[_0xb8ed('0xf')][_0xb8ed('0x10')]===0x1f4){logger[_0xb8ed('0xf')](_0xb8ed('0xa'),_0x6c9d2c,_0x40f28f['error'][_0xb8ed('0x11')]);return _0x1272ad(_0x40f28f[_0xb8ed('0xf')][_0xb8ed('0x11')]);}logger[_0xb8ed('0xf')](_0xb8ed('0xa'),_0x6c9d2c,_0x40f28f[_0xb8ed('0xf')]['message']);return _0x132264(_0x40f28f[_0xb8ed('0xf')]['message']);}else{logger['info'](_0xb8ed('0xa'),_0x6c9d2c,_0xb8ed('0xd'));_0x132264(_0x40f28f[_0xb8ed('0x12')][_0xb8ed('0x11')]);}})[_0xb8ed('0x13')](function(_0x233364){logger[_0xb8ed('0xf')](_0xb8ed('0xa'),_0x6c9d2c,_0x233364);_0x1272ad(_0x233364);});});}
\ No newline at end of file
+var _0x1eae=['info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','error','code','message','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x2fed54,_0x429b02){var _0x4d4b3f=function(_0x20153d){while(--_0x20153d){_0x2fed54['push'](_0x2fed54['shift']());}};_0x4d4b3f(++_0x429b02);}(_0x1eae,0xa3));var _0xe1ea=function(_0x2904c4,_0x482db0){_0x2904c4=_0x2904c4-0x0;var _0x48de66=_0x1eae[_0x2904c4];return _0x48de66;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xe1ea('0x0'));var rs=require(_0xe1ea('0x1'));var fs=require('fs');var Redis=require(_0xe1ea('0x2'));var db=require(_0xe1ea('0x3'))['db'];var utils=require(_0xe1ea('0x4'));var logger=require(_0xe1ea('0x5'))(_0xe1ea('0x6'));var config=require(_0xe1ea('0x7'));var jayson=require(_0xe1ea('0x8'));var client=jayson[_0xe1ea('0x9')][_0xe1ea('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x50a67c,_0x2d79b7,_0x4f7c02){return new BPromise(function(_0xf25293,_0x23987b){return client[_0xe1ea('0xb')](_0x50a67c,_0x4f7c02)[_0xe1ea('0xc')](function(_0x3064ca){logger[_0xe1ea('0xd')](_0xe1ea('0xe'),_0x2d79b7,_0xe1ea('0xf'));logger[_0xe1ea('0x10')](_0xe1ea('0x11'),_0x2d79b7,'request\x20sent',JSON['stringify'](_0x3064ca));if(_0x3064ca[_0xe1ea('0x12')]){if(_0x3064ca['error'][_0xe1ea('0x13')]===0x1f4){logger[_0xe1ea('0x12')]('UserWhatsappQueue,\x20%s,\x20%s',_0x2d79b7,_0x3064ca[_0xe1ea('0x12')][_0xe1ea('0x14')]);return _0x23987b(_0x3064ca[_0xe1ea('0x12')]['message']);}logger[_0xe1ea('0x12')]('UserWhatsappQueue,\x20%s,\x20%s',_0x2d79b7,_0x3064ca[_0xe1ea('0x12')][_0xe1ea('0x14')]);return _0xf25293(_0x3064ca['error'][_0xe1ea('0x14')]);}else{logger[_0xe1ea('0xd')]('UserWhatsappQueue,\x20%s,\x20%s',_0x2d79b7,_0xe1ea('0xf'));_0xf25293(_0x3064ca['result']['message']);}})[_0xe1ea('0x15')](function(_0x17bc04){logger['error'](_0xe1ea('0xe'),_0x2d79b7,_0x17bc04);_0x23987b(_0x17bc04);});});}
\ No newline at end of file
index ee39c37..7004504 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c29=['../../config/environment','./variable.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','path','express','Router','fs-extra'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0c29,0xb7));var _0x90c2=function(_0xb1174e,_0x1e68a7){_0xb1174e=_0xb1174e-0x0;var _0x285bac=_0x0c29[_0xb1174e];return _0x285bac;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x90c2('0x0'));var timeout=require('connect-timeout');var express=require(_0x90c2('0x1'));var router=express[_0x90c2('0x2')]();var fs_extra=require(_0x90c2('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x90c2('0x4'));var controller=require(_0x90c2('0x5'));router[_0x90c2('0x6')]('/',auth[_0x90c2('0x7')](),controller[_0x90c2('0x8')]);router[_0x90c2('0x6')](_0x90c2('0x9'),auth[_0x90c2('0x7')](),controller[_0x90c2('0xa')]);router[_0x90c2('0xb')]('/',auth[_0x90c2('0x7')](),controller[_0x90c2('0xc')]);router[_0x90c2('0xd')](_0x90c2('0x9'),auth[_0x90c2('0x7')](),controller[_0x90c2('0xe')]);router[_0x90c2('0xf')](_0x90c2('0x9'),auth[_0x90c2('0x7')](),controller[_0x90c2('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x1cc7=['exports','multer','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','get','/:id','show','post','create','put','destroy'];(function(_0xb500f7,_0x3a184e){var _0x6351c1=function(_0x326e9e){while(--_0x326e9e){_0xb500f7['push'](_0xb500f7['shift']());}};_0x6351c1(++_0x3a184e);}(_0x1cc7,0x15a));var _0x71cc=function(_0x1fce7e,_0x417e05){_0x1fce7e=_0x1fce7e-0x0;var _0x881312=_0x1cc7[_0x1fce7e];return _0x881312;};'use strict';var multer=require(_0x71cc('0x0'));var util=require(_0x71cc('0x1'));var path=require(_0x71cc('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x71cc('0x3'));var auth=require(_0x71cc('0x4'));var interaction=require(_0x71cc('0x5'));var config=require('../../config/environment');var controller=require('./variable.controller');router['get']('/',auth[_0x71cc('0x6')](),controller['index']);router[_0x71cc('0x7')](_0x71cc('0x8'),auth[_0x71cc('0x6')](),controller[_0x71cc('0x9')]);router[_0x71cc('0xa')]('/',auth['isAuthenticated'](),controller[_0x71cc('0xb')]);router[_0x71cc('0xc')](_0x71cc('0x8'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x71cc('0x6')](),controller[_0x71cc('0xd')]);module[_0x71cc('0xe')]=router;
\ No newline at end of file
index 64eda95..d844ed8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92a4=['sequelize','name'];(function(_0x23e207,_0x34850b){var _0x2e25fa=function(_0x41bf81){while(--_0x41bf81){_0x23e207['push'](_0x23e207['shift']());}};_0x2e25fa(++_0x34850b);}(_0x92a4,0xb4));var _0x492a=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x92a4[_0x21a9d9];return _0x46adce;};'use strict';var Sequelize=require(_0x492a('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x492a('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4ac0=['sequelize','STRING'];(function(_0x379ccc,_0x57a0bc){var _0x3e01cc=function(_0x5f397f){while(--_0x5f397f){_0x379ccc['push'](_0x379ccc['shift']());}};_0x3e01cc(++_0x57a0bc);}(_0x4ac0,0xa0));var _0x04ac=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x4ac0[_0x2d7f0e];return _0x110b07;};'use strict';var Sequelize=require(_0x04ac('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x04ac('0x1')]}};
\ No newline at end of file
index 630438b..dca1c3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48d2=['moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','status','offset','undefined','limit','count','set','json','apply','reject','save','then','destroy','Variables','UserProfileResource','sendStatus','error','stack','name','send','map','Variable','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','length','merge','find','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','params','eml-format','rimraf','zip-dir'];(function(_0xbbf553,_0x4c197f){var _0x8f5a7a=function(_0x2b7a68){while(--_0x2b7a68){_0xbbf553['push'](_0xbbf553['shift']());}};_0x8f5a7a(++_0x4c197f);}(_0x48d2,0xff));var _0x248d=function(_0x3e6d5d,_0x264c7a){_0x3e6d5d=_0x3e6d5d-0x0;var _0x238923=_0x48d2[_0x3e6d5d];return _0x238923;};'use strict';var emlformat=require(_0x248d('0x0'));var rimraf=require(_0x248d('0x1'));var zipdir=require(_0x248d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x248d('0x3'));var BPromise=require(_0x248d('0x4'));var Mustache=require(_0x248d('0x5'));var util=require(_0x248d('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x248d('0x7'));var ejs=require(_0x248d('0x8'));var fs=require('fs');var fs_extra=require(_0x248d('0x9'));var _=require(_0x248d('0xa'));var squel=require(_0x248d('0xb'));var crypto=require(_0x248d('0xc'));var jsforce=require(_0x248d('0xd'));var deskjs=require(_0x248d('0xe'));var toCsv=require(_0x248d('0x7'));var querystring=require(_0x248d('0xf'));var Papa=require(_0x248d('0x10'));var Redis=require('ioredis');var authService=require(_0x248d('0x11'));var qs=require(_0x248d('0x12'));var as=require(_0x248d('0x13'));var hardwareService=require(_0x248d('0x14'));var logger=require(_0x248d('0x15'))(_0x248d('0x16'));var utils=require(_0x248d('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x248d('0x18'));var db=require(_0x248d('0x19'))['db'];function respondWithStatusCode(_0x2d7e57,_0x37cd53){_0x37cd53=_0x37cd53||0xcc;return function(_0x197aec){if(_0x197aec){return _0x2d7e57['sendStatus'](_0x37cd53);}return _0x2d7e57['status'](_0x37cd53)[_0x248d('0x1a')]();};}function respondWithResult(_0x1d42ee,_0x517256){_0x517256=_0x517256||0xc8;return function(_0x471998){if(_0x471998){return _0x1d42ee[_0x248d('0x1b')](_0x517256)['json'](_0x471998);}};}function respondWithFilteredResult(_0x15b6e0,_0x1dd6e2){return function(_0x21902b){if(_0x21902b){var _0x5adbd3=typeof _0x1dd6e2[_0x248d('0x1c')]===_0x248d('0x1d')&&typeof _0x1dd6e2[_0x248d('0x1e')]===_0x248d('0x1d');var _0x5d8ec7=_0x21902b[_0x248d('0x1f')];var _0x4b0691=_0x5adbd3?0x0:_0x1dd6e2[_0x248d('0x1c')];var _0x170c46=_0x5adbd3?_0x21902b[_0x248d('0x1f')]:_0x1dd6e2[_0x248d('0x1c')]+_0x1dd6e2['limit'];var _0x21f05a;if(_0x170c46>=_0x5d8ec7){_0x170c46=_0x5d8ec7;_0x21f05a=0xc8;}else{_0x21f05a=0xce;}_0x15b6e0[_0x248d('0x1b')](_0x21f05a);return _0x15b6e0[_0x248d('0x20')]('Content-Range',_0x4b0691+'-'+_0x170c46+'/'+_0x5d8ec7)[_0x248d('0x21')](_0x21902b);}return null;};}function patchUpdates(_0x2f29ef){return function(_0x4737e3){try{jsonpatch[_0x248d('0x22')](_0x4737e3,_0x2f29ef,!![]);}catch(_0x5c739a){return BPromise[_0x248d('0x23')](_0x5c739a);}return _0x4737e3[_0x248d('0x24')]();};}function saveUpdates(_0x1f29cc,_0x1db9dd){return function(_0x13d01e){if(_0x13d01e){return _0x13d01e['update'](_0x1f29cc)[_0x248d('0x25')](function(_0x1f3225){return _0x1f3225;});}return null;};}function removeEntity(_0x95d72c,_0x28fe5a){return function(_0xb68e94){if(_0xb68e94){return _0xb68e94[_0x248d('0x26')]()[_0x248d('0x25')](function(){var _0x14844e=_0xb68e94['get']({'plain':!![]});var _0x4eb8fd=_0x248d('0x27');return db[_0x248d('0x28')][_0x248d('0x26')]({'where':{'type':_0x4eb8fd,'resourceId':_0x14844e['id']}})['then'](function(){return _0xb68e94;});})[_0x248d('0x25')](function(){_0x95d72c[_0x248d('0x1b')](0xcc)[_0x248d('0x1a')]();});}};}function handleEntityNotFound(_0xc16b4a,_0x501e5d){return function(_0x593161){if(!_0x593161){_0xc16b4a[_0x248d('0x29')](0x194);}return _0x593161;};}function handleError(_0x33592f,_0x358550){_0x358550=_0x358550||0x1f4;return function(_0x3c14ea){logger[_0x248d('0x2a')](_0x3c14ea[_0x248d('0x2b')]);if(_0x3c14ea['name']){delete _0x3c14ea[_0x248d('0x2c')];}_0x33592f[_0x248d('0x1b')](_0x358550)[_0x248d('0x2d')](_0x3c14ea);};}exports['index']=function(_0x1aed84,_0x2d00bd){var _0x5af575={},_0x1ddb6b={},_0xaed9e7={'count':0x0,'rows':[]};var _0xe249ae=_[_0x248d('0x2e')](db[_0x248d('0x2f')][_0x248d('0x30')],function(_0x3098da){return{'name':_0x3098da[_0x248d('0x31')],'type':_0x3098da[_0x248d('0x32')]['key']};});_0x1ddb6b[_0x248d('0x33')]=_[_0x248d('0x2e')](_0xe249ae,_0x248d('0x2c'));_0x1ddb6b[_0x248d('0x34')]=_['keys'](_0x1aed84['query']);_0x1ddb6b[_0x248d('0x35')]=_[_0x248d('0x36')](_0x1ddb6b[_0x248d('0x33')],_0x1ddb6b['query']);_0x5af575[_0x248d('0x37')]=_[_0x248d('0x36')](_0x1ddb6b[_0x248d('0x33')],qs[_0x248d('0x38')](_0x1aed84[_0x248d('0x34')]['fields']));_0x5af575[_0x248d('0x37')]=_0x5af575['attributes']['length']?_0x5af575[_0x248d('0x37')]:_0x1ddb6b[_0x248d('0x33')];if(!_0x1aed84[_0x248d('0x34')][_0x248d('0x39')]('nolimit')){_0x5af575[_0x248d('0x1e')]=qs[_0x248d('0x1e')](_0x1aed84[_0x248d('0x34')]['limit']);_0x5af575[_0x248d('0x1c')]=qs[_0x248d('0x1c')](_0x1aed84[_0x248d('0x34')][_0x248d('0x1c')]);}_0x5af575[_0x248d('0x3a')]=qs[_0x248d('0x3b')](_0x1aed84['query'][_0x248d('0x3b')]);_0x5af575[_0x248d('0x3c')]=qs[_0x248d('0x35')](_[_0x248d('0x3d')](_0x1aed84['query'],_0x1ddb6b['filters']),_0xe249ae);if(_0x1aed84[_0x248d('0x34')][_0x248d('0x3e')]){_0x5af575['where']=_['merge'](_0x5af575[_0x248d('0x3c')],{'$or':_[_0x248d('0x2e')](_0xe249ae,function(_0x42af67){if(_0x42af67[_0x248d('0x32')]!==_0x248d('0x3f')){var _0x4f3a0d={};_0x4f3a0d[_0x42af67['name']]={'$like':'%'+_0x1aed84['query']['filter']+'%'};return _0x4f3a0d;}})});}_0x5af575=_['merge']({},_0x5af575,_0x1aed84[_0x248d('0x40')]);var _0x6d9d2c={'where':_0x5af575[_0x248d('0x3c')]};return db[_0x248d('0x2f')][_0x248d('0x1f')](_0x6d9d2c)[_0x248d('0x25')](function(_0x256c4c){_0xaed9e7['count']=_0x256c4c;if(_0x1aed84[_0x248d('0x34')][_0x248d('0x41')]){_0x5af575[_0x248d('0x42')]=[{'all':!![]}];}return db[_0x248d('0x2f')][_0x248d('0x43')](_0x5af575);})[_0x248d('0x25')](function(_0x3e9f78){_0xaed9e7[_0x248d('0x44')]=_0x3e9f78;return _0xaed9e7;})['then'](respondWithFilteredResult(_0x2d00bd,_0x5af575))[_0x248d('0x45')](handleError(_0x2d00bd,null));};exports[_0x248d('0x46')]=function(_0x440ef6,_0x1d80e9){var _0x3a9744={'raw':!![],'where':{'id':_0x440ef6['params']['id']}},_0x189f56={};_0x189f56[_0x248d('0x33')]=_[_0x248d('0x47')](db['Variable'][_0x248d('0x30')]);_0x189f56[_0x248d('0x34')]=_[_0x248d('0x47')](_0x440ef6[_0x248d('0x34')]);_0x189f56[_0x248d('0x35')]=_['intersection'](_0x189f56['model'],_0x189f56[_0x248d('0x34')]);_0x3a9744[_0x248d('0x37')]=_['intersection'](_0x189f56[_0x248d('0x33')],qs['fields'](_0x440ef6[_0x248d('0x34')][_0x248d('0x38')]));_0x3a9744[_0x248d('0x37')]=_0x3a9744[_0x248d('0x37')][_0x248d('0x48')]?_0x3a9744[_0x248d('0x37')]:_0x189f56['model'];if(_0x440ef6[_0x248d('0x34')][_0x248d('0x41')]){_0x3a9744[_0x248d('0x42')]=[{'all':!![]}];}_0x3a9744=_[_0x248d('0x49')]({},_0x3a9744,_0x440ef6[_0x248d('0x40')]);return db[_0x248d('0x2f')][_0x248d('0x4a')](_0x3a9744)[_0x248d('0x25')](handleEntityNotFound(_0x1d80e9,null))[_0x248d('0x25')](respondWithResult(_0x1d80e9,null))[_0x248d('0x45')](handleError(_0x1d80e9,null));};exports[_0x248d('0x4b')]=function(_0x5c7556,_0x552bcb){return db[_0x248d('0x2f')][_0x248d('0x4b')](_0x5c7556['body'],{})['then'](function(_0x27ba1d){var _0x5041f1=_0x5c7556['user'][_0x248d('0x4c')]({'plain':!![]});if(!_0x5041f1)throw new Error(_0x248d('0x4d'));if(_0x5041f1[_0x248d('0x4e')]===_0x248d('0x4f')){var _0x192a60=_0x27ba1d[_0x248d('0x4c')]({'plain':!![]});var _0xce5636=_0x248d('0x27');return db[_0x248d('0x50')][_0x248d('0x4a')]({'where':{'name':_0xce5636,'userProfileId':_0x5041f1['userProfileId']},'raw':!![]})[_0x248d('0x25')](function(_0x4b0938){if(_0x4b0938&&_0x4b0938[_0x248d('0x51')]===0x0){return db[_0x248d('0x28')][_0x248d('0x4b')]({'name':_0x192a60[_0x248d('0x2c')],'resourceId':_0x192a60['id'],'type':_0x4b0938['name'],'sectionId':_0x4b0938['id']},{})[_0x248d('0x25')](function(){return _0x27ba1d;});}else{return _0x27ba1d;}})[_0x248d('0x45')](function(_0xca22bb){logger[_0x248d('0x2a')](_0x248d('0x52'),_0xca22bb);throw _0xca22bb;});}return _0x27ba1d;})['then'](respondWithResult(_0x552bcb,0xc9))[_0x248d('0x45')](handleError(_0x552bcb,null));};exports[_0x248d('0x53')]=function(_0x73374,_0x347d5c){if(_0x73374[_0x248d('0x54')]['id']){delete _0x73374[_0x248d('0x54')]['id'];}return db[_0x248d('0x2f')][_0x248d('0x4a')]({'where':{'id':_0x73374['params']['id']}})['then'](handleEntityNotFound(_0x347d5c,null))[_0x248d('0x25')](saveUpdates(_0x73374[_0x248d('0x54')],null))[_0x248d('0x25')](respondWithResult(_0x347d5c,null))[_0x248d('0x45')](handleError(_0x347d5c,null));};exports[_0x248d('0x26')]=function(_0x2aa0e9,_0x1410f9){return db[_0x248d('0x2f')][_0x248d('0x4a')]({'where':{'id':_0x2aa0e9[_0x248d('0x55')]['id']}})['then'](handleEntityNotFound(_0x1410f9,null))['then'](removeEntity(_0x1410f9,null))['catch'](handleError(_0x1410f9,null));};
\ No newline at end of file
+var _0xcc7b=['../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','then','destroy','get','Variables','UserProfileResource','error','stack','index','map','Variable','rawAttributes','fieldName','type','model','name','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','includeAll','findAll','rows','catch','show','keys','include','options','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils'];(function(_0x5265d5,_0x51a837){var _0x44899d=function(_0x13d39b){while(--_0x13d39b){_0x5265d5['push'](_0x5265d5['shift']());}};_0x44899d(++_0x51a837);}(_0xcc7b,0x8e));var _0xbcc7=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xcc7b[_0x1d1779];return _0x2377e9;};'use strict';var emlformat=require(_0xbcc7('0x0'));var rimraf=require(_0xbcc7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xbcc7('0x2'));var moment=require(_0xbcc7('0x3'));var BPromise=require(_0xbcc7('0x4'));var Mustache=require(_0xbcc7('0x5'));var util=require('util');var path=require(_0xbcc7('0x6'));var sox=require(_0xbcc7('0x7'));var csv=require(_0xbcc7('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbcc7('0x9'));var squel=require(_0xbcc7('0xa'));var crypto=require(_0xbcc7('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xbcc7('0xc'));var toCsv=require(_0xbcc7('0x8'));var querystring=require(_0xbcc7('0xd'));var Papa=require(_0xbcc7('0xe'));var Redis=require(_0xbcc7('0xf'));var authService=require(_0xbcc7('0x10'));var qs=require(_0xbcc7('0x11'));var as=require(_0xbcc7('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbcc7('0x13'))(_0xbcc7('0x14'));var utils=require(_0xbcc7('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xbcc7('0x16'));var db=require(_0xbcc7('0x17'))['db'];function respondWithStatusCode(_0x3d5197,_0x5cfa45){_0x5cfa45=_0x5cfa45||0xcc;return function(_0x30d514){if(_0x30d514){return _0x3d5197[_0xbcc7('0x18')](_0x5cfa45);}return _0x3d5197['status'](_0x5cfa45)[_0xbcc7('0x19')]();};}function respondWithResult(_0x3d147a,_0x70c9ec){_0x70c9ec=_0x70c9ec||0xc8;return function(_0x45fb4d){if(_0x45fb4d){return _0x3d147a[_0xbcc7('0x1a')](_0x70c9ec)[_0xbcc7('0x1b')](_0x45fb4d);}};}function respondWithFilteredResult(_0x3a3c0d,_0x5b6b4a){return function(_0x4e3068){if(_0x4e3068){var _0x648223=typeof _0x5b6b4a['offset']===_0xbcc7('0x1c')&&typeof _0x5b6b4a[_0xbcc7('0x1d')]===_0xbcc7('0x1c');var _0x46a01c=_0x4e3068[_0xbcc7('0x1e')];var _0x1de743=_0x648223?0x0:_0x5b6b4a['offset'];var _0x168d83=_0x648223?_0x4e3068[_0xbcc7('0x1e')]:_0x5b6b4a[_0xbcc7('0x1f')]+_0x5b6b4a[_0xbcc7('0x1d')];var _0xa6110;if(_0x168d83>=_0x46a01c){_0x168d83=_0x46a01c;_0xa6110=0xc8;}else{_0xa6110=0xce;}_0x3a3c0d[_0xbcc7('0x1a')](_0xa6110);return _0x3a3c0d['set'](_0xbcc7('0x20'),_0x1de743+'-'+_0x168d83+'/'+_0x46a01c)['json'](_0x4e3068);}return null;};}function patchUpdates(_0x15a255){return function(_0x52c15f){try{jsonpatch[_0xbcc7('0x21')](_0x52c15f,_0x15a255,!![]);}catch(_0x2f5cd6){return BPromise[_0xbcc7('0x22')](_0x2f5cd6);}return _0x52c15f[_0xbcc7('0x23')]();};}function saveUpdates(_0x134fa5,_0xdb015b){return function(_0x566bba){if(_0x566bba){return _0x566bba['update'](_0x134fa5)[_0xbcc7('0x24')](function(_0x1211cd){return _0x1211cd;});}return null;};}function removeEntity(_0x590a53,_0x4c17c3){return function(_0xc9effd){if(_0xc9effd){return _0xc9effd[_0xbcc7('0x25')]()[_0xbcc7('0x24')](function(){var _0x5a2972=_0xc9effd[_0xbcc7('0x26')]({'plain':!![]});var _0x44fb36=_0xbcc7('0x27');return db[_0xbcc7('0x28')]['destroy']({'where':{'type':_0x44fb36,'resourceId':_0x5a2972['id']}})['then'](function(){return _0xc9effd;});})[_0xbcc7('0x24')](function(){_0x590a53['status'](0xcc)[_0xbcc7('0x19')]();});}};}function handleEntityNotFound(_0x3575b9,_0x40d0e5){return function(_0x321d9c){if(!_0x321d9c){_0x3575b9[_0xbcc7('0x18')](0x194);}return _0x321d9c;};}function handleError(_0x27f89e,_0x148a98){_0x148a98=_0x148a98||0x1f4;return function(_0x2f9692){logger[_0xbcc7('0x29')](_0x2f9692[_0xbcc7('0x2a')]);if(_0x2f9692['name']){delete _0x2f9692['name'];}_0x27f89e['status'](_0x148a98)['send'](_0x2f9692);};}exports[_0xbcc7('0x2b')]=function(_0x624e1e,_0xe9b4ca){var _0x5b7919={},_0x30225b={},_0x25f1b0={'count':0x0,'rows':[]};var _0x5b83c0=_[_0xbcc7('0x2c')](db[_0xbcc7('0x2d')][_0xbcc7('0x2e')],function(_0x59609a){return{'name':_0x59609a[_0xbcc7('0x2f')],'type':_0x59609a[_0xbcc7('0x30')]['key']};});_0x30225b[_0xbcc7('0x31')]=_['map'](_0x5b83c0,_0xbcc7('0x32'));_0x30225b['query']=_['keys'](_0x624e1e[_0xbcc7('0x33')]);_0x30225b[_0xbcc7('0x34')]=_[_0xbcc7('0x35')](_0x30225b[_0xbcc7('0x31')],_0x30225b['query']);_0x5b7919[_0xbcc7('0x36')]=_[_0xbcc7('0x35')](_0x30225b[_0xbcc7('0x31')],qs['fields'](_0x624e1e[_0xbcc7('0x33')][_0xbcc7('0x37')]));_0x5b7919[_0xbcc7('0x36')]=_0x5b7919[_0xbcc7('0x36')][_0xbcc7('0x38')]?_0x5b7919[_0xbcc7('0x36')]:_0x30225b[_0xbcc7('0x31')];if(!_0x624e1e['query'][_0xbcc7('0x39')](_0xbcc7('0x3a'))){_0x5b7919[_0xbcc7('0x1d')]=qs[_0xbcc7('0x1d')](_0x624e1e[_0xbcc7('0x33')][_0xbcc7('0x1d')]);_0x5b7919[_0xbcc7('0x1f')]=qs['offset'](_0x624e1e[_0xbcc7('0x33')][_0xbcc7('0x1f')]);}_0x5b7919['order']=qs[_0xbcc7('0x3b')](_0x624e1e[_0xbcc7('0x33')][_0xbcc7('0x3b')]);_0x5b7919['where']=qs['filters'](_[_0xbcc7('0x3c')](_0x624e1e[_0xbcc7('0x33')],_0x30225b[_0xbcc7('0x34')]),_0x5b83c0);if(_0x624e1e[_0xbcc7('0x33')][_0xbcc7('0x3d')]){_0x5b7919[_0xbcc7('0x3e')]=_[_0xbcc7('0x3f')](_0x5b7919[_0xbcc7('0x3e')],{'$or':_['map'](_0x5b83c0,function(_0x185f7e){if(_0x185f7e[_0xbcc7('0x30')]!==_0xbcc7('0x40')){var _0x453f62={};_0x453f62[_0x185f7e[_0xbcc7('0x32')]]={'$like':'%'+_0x624e1e[_0xbcc7('0x33')][_0xbcc7('0x3d')]+'%'};return _0x453f62;}})});}_0x5b7919=_[_0xbcc7('0x3f')]({},_0x5b7919,_0x624e1e['options']);var _0x119ae0={'where':_0x5b7919[_0xbcc7('0x3e')]};return db['Variable']['count'](_0x119ae0)[_0xbcc7('0x24')](function(_0x4a8703){_0x25f1b0['count']=_0x4a8703;if(_0x624e1e[_0xbcc7('0x33')][_0xbcc7('0x41')]){_0x5b7919['include']=[{'all':!![]}];}return db[_0xbcc7('0x2d')][_0xbcc7('0x42')](_0x5b7919);})[_0xbcc7('0x24')](function(_0x308050){_0x25f1b0[_0xbcc7('0x43')]=_0x308050;return _0x25f1b0;})[_0xbcc7('0x24')](respondWithFilteredResult(_0xe9b4ca,_0x5b7919))[_0xbcc7('0x44')](handleError(_0xe9b4ca,null));};exports[_0xbcc7('0x45')]=function(_0x56f362,_0x358528){var _0x4b799c={'raw':!![],'where':{'id':_0x56f362['params']['id']}},_0x194a1c={};_0x194a1c[_0xbcc7('0x31')]=_[_0xbcc7('0x46')](db[_0xbcc7('0x2d')][_0xbcc7('0x2e')]);_0x194a1c[_0xbcc7('0x33')]=_[_0xbcc7('0x46')](_0x56f362[_0xbcc7('0x33')]);_0x194a1c[_0xbcc7('0x34')]=_[_0xbcc7('0x35')](_0x194a1c[_0xbcc7('0x31')],_0x194a1c[_0xbcc7('0x33')]);_0x4b799c[_0xbcc7('0x36')]=_[_0xbcc7('0x35')](_0x194a1c[_0xbcc7('0x31')],qs[_0xbcc7('0x37')](_0x56f362['query']['fields']));_0x4b799c[_0xbcc7('0x36')]=_0x4b799c[_0xbcc7('0x36')]['length']?_0x4b799c[_0xbcc7('0x36')]:_0x194a1c[_0xbcc7('0x31')];if(_0x56f362[_0xbcc7('0x33')][_0xbcc7('0x41')]){_0x4b799c[_0xbcc7('0x47')]=[{'all':!![]}];}_0x4b799c=_[_0xbcc7('0x3f')]({},_0x4b799c,_0x56f362[_0xbcc7('0x48')]);return db[_0xbcc7('0x2d')]['find'](_0x4b799c)[_0xbcc7('0x24')](handleEntityNotFound(_0x358528,null))[_0xbcc7('0x24')](respondWithResult(_0x358528,null))['catch'](handleError(_0x358528,null));};exports[_0xbcc7('0x49')]=function(_0x55c30c,_0xfcb192){return db[_0xbcc7('0x2d')][_0xbcc7('0x49')](_0x55c30c['body'],{})['then'](function(_0x23694c){var _0x51c740=_0x55c30c[_0xbcc7('0x4a')][_0xbcc7('0x26')]({'plain':!![]});if(!_0x51c740)throw new Error(_0xbcc7('0x4b'));if(_0x51c740[_0xbcc7('0x4c')]===_0xbcc7('0x4a')){var _0x282fc8=_0x23694c['get']({'plain':!![]});var _0x32aba6=_0xbcc7('0x27');return db['UserProfileSection'][_0xbcc7('0x4d')]({'where':{'name':_0x32aba6,'userProfileId':_0x51c740[_0xbcc7('0x4e')]},'raw':!![]})[_0xbcc7('0x24')](function(_0x56c378){if(_0x56c378&&_0x56c378['autoAssociation']===0x0){return db[_0xbcc7('0x28')][_0xbcc7('0x49')]({'name':_0x282fc8[_0xbcc7('0x32')],'resourceId':_0x282fc8['id'],'type':_0x56c378[_0xbcc7('0x32')],'sectionId':_0x56c378['id']},{})['then'](function(){return _0x23694c;});}else{return _0x23694c;}})[_0xbcc7('0x44')](function(_0x2af46d){logger[_0xbcc7('0x29')](_0xbcc7('0x4f'),_0x2af46d);throw _0x2af46d;});}return _0x23694c;})[_0xbcc7('0x24')](respondWithResult(_0xfcb192,0xc9))[_0xbcc7('0x44')](handleError(_0xfcb192,null));};exports['update']=function(_0x1b2264,_0x10f03d){if(_0x1b2264[_0xbcc7('0x50')]['id']){delete _0x1b2264['body']['id'];}return db[_0xbcc7('0x2d')][_0xbcc7('0x4d')]({'where':{'id':_0x1b2264['params']['id']}})['then'](handleEntityNotFound(_0x10f03d,null))['then'](saveUpdates(_0x1b2264[_0xbcc7('0x50')],null))['then'](respondWithResult(_0x10f03d,null))[_0xbcc7('0x44')](handleError(_0x10f03d,null));};exports[_0xbcc7('0x25')]=function(_0x4e72cf,_0x5d0857){return db[_0xbcc7('0x2d')][_0xbcc7('0x4d')]({'where':{'id':_0x4e72cf[_0xbcc7('0x51')]['id']}})['then'](handleEntityNotFound(_0x5d0857,null))[_0xbcc7('0x24')](removeEntity(_0x5d0857,null))[_0xbcc7('0x44')](handleError(_0x5d0857,null));};
\ No newline at end of file
index 3402839..711f29b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a1b=['tools_variables','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./variable.attributes','exports','define','Variable'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7a1b,0x1ae));var _0xb7a1=function(_0x36d8a4,_0x55dfed){_0x36d8a4=_0x36d8a4-0x0;var _0x83d5ea=_0x7a1b[_0x36d8a4];return _0x83d5ea;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb7a1('0x0'))(_0xb7a1('0x1'));var moment=require('moment');var BPromise=require(_0xb7a1('0x2'));var rp=require(_0xb7a1('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb7a1('0x4'));var config=require(_0xb7a1('0x5'));var attributes=require(_0xb7a1('0x6'));module[_0xb7a1('0x7')]=function(_0x429e65,_0x4f70b5){return _0x429e65[_0xb7a1('0x8')](_0xb7a1('0x9'),attributes,{'tableName':_0xb7a1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9653=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./variable.attributes','define','Variable','tools_variables','lodash','util'];(function(_0x444103,_0x280b9a){var _0x16d283=function(_0x145b2a){while(--_0x145b2a){_0x444103['push'](_0x444103['shift']());}};_0x16d283(++_0x280b9a);}(_0x9653,0xd6));var _0x3965=function(_0x3b7047,_0x167a8f){_0x3b7047=_0x3b7047-0x0;var _0x4af3eb=_0x9653[_0x3b7047];return _0x4af3eb;};'use strict';var _=require(_0x3965('0x0'));var util=require(_0x3965('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x3965('0x2'));var BPromise=require(_0x3965('0x3'));var rp=require(_0x3965('0x4'));var fs=require('fs');var path=require(_0x3965('0x5'));var rimraf=require(_0x3965('0x6'));var config=require(_0x3965('0x7'));var attributes=require(_0x3965('0x8'));module['exports']=function(_0x33bd03,_0x7cde5a){return _0x33bd03[_0x3965('0x9')](_0x3965('0xa'),attributes,{'tableName':_0x3965('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6640203..db479fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['catch','lodash','util','randomstring','../../config/utils','../../config/logger','rpc','http','then','info','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','Variable,\x20%s,\x20%s','message','ShowVariable','Variable','find','options','raw','where','attributes','include','map','model'];(function(_0x5cedb2,_0x4ae4fe){var _0x4af7eb=function(_0x447604){while(--_0x447604){_0x5cedb2['push'](_0x5cedb2['shift']());}};_0x4af7eb(++_0x4ae4fe);}(_0x4b84,0x1cc));var _0x44b8=function(_0x55e08b,_0x421620){_0x55e08b=_0x55e08b-0x0;var _0xd1a7ff=_0x4b84[_0x55e08b];return _0xd1a7ff;};'use strict';var _=require(_0x44b8('0x0'));var util=require(_0x44b8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x44b8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x44b8('0x3'));var logger=require(_0x44b8('0x4'))(_0x44b8('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x44b8('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x54274b,_0x327f59,_0x5947f7){return new BPromise(function(_0x3e87c5,_0x5a2353){return client['request'](_0x54274b,_0x5947f7)[_0x44b8('0x7')](function(_0x42319d){logger[_0x44b8('0x8')]('Variable,\x20%s,\x20%s',_0x327f59,_0x44b8('0x9'));logger[_0x44b8('0xa')](_0x44b8('0xb'),_0x327f59,_0x44b8('0x9'),JSON[_0x44b8('0xc')](_0x42319d));if(_0x42319d[_0x44b8('0xd')]){if(_0x42319d[_0x44b8('0xd')]['code']===0x1f4){logger[_0x44b8('0xd')](_0x44b8('0xe'),_0x327f59,_0x42319d['error'][_0x44b8('0xf')]);return _0x5a2353(_0x42319d['error'][_0x44b8('0xf')]);}logger[_0x44b8('0xd')]('Variable,\x20%s,\x20%s',_0x327f59,_0x42319d[_0x44b8('0xd')]['message']);return _0x3e87c5(_0x42319d['error'][_0x44b8('0xf')]);}else{logger[_0x44b8('0x8')](_0x44b8('0xe'),_0x327f59,_0x44b8('0x9'));_0x3e87c5(_0x42319d['result']['message']);}})['catch'](function(_0x3fe9fb){logger['error'](_0x44b8('0xe'),_0x327f59,_0x3fe9fb);_0x5a2353(_0x3fe9fb);});});}exports[_0x44b8('0x10')]=function(_0x55e258){var _0x36743e=this;return new Promise(function(_0xe3de8f,_0x5103f5){return db[_0x44b8('0x11')][_0x44b8('0x12')]({'raw':_0x55e258['options']?_0x55e258[_0x44b8('0x13')][_0x44b8('0x14')]===undefined?!![]:![]:!![],'where':_0x55e258[_0x44b8('0x13')]?_0x55e258[_0x44b8('0x13')][_0x44b8('0x15')]||null:null,'attributes':_0x55e258[_0x44b8('0x13')]?_0x55e258[_0x44b8('0x13')][_0x44b8('0x16')]||null:null,'include':_0x55e258[_0x44b8('0x13')]?_0x55e258[_0x44b8('0x13')][_0x44b8('0x17')]?_[_0x44b8('0x18')](_0x55e258['options'][_0x44b8('0x17')],function(_0x3a8aa4){return{'model':db[_0x3a8aa4[_0x44b8('0x19')]],'as':_0x3a8aa4['as'],'attributes':_0x3a8aa4[_0x44b8('0x16')],'include':_0x3a8aa4[_0x44b8('0x17')]?_['map'](_0x3a8aa4[_0x44b8('0x17')],function(_0x54677c){return{'model':db[_0x54677c[_0x44b8('0x19')]],'as':_0x54677c['as'],'attributes':_0x54677c[_0x44b8('0x16')],'include':_0x54677c[_0x44b8('0x17')]?_[_0x44b8('0x18')](_0x54677c[_0x44b8('0x17')],function(_0x59acbc){return{'model':db[_0x59acbc[_0x44b8('0x19')]],'as':_0x59acbc['as'],'attributes':_0x59acbc['attributes']};}):[]};}):[]};}):[]:[]})[_0x44b8('0x7')](function(_0x350482){logger['info'](_0x44b8('0x10'),_0x55e258);logger[_0x44b8('0xa')](_0x44b8('0x10'),_0x55e258,JSON['stringify'](_0x350482));_0xe3de8f(_0x350482);})[_0x44b8('0x1a')](function(_0x242342){logger['error'](_0x44b8('0x10'),_0x242342['message'],_0x55e258);_0x5103f5(_0x36743e[_0x44b8('0xd')](0x1f4,_0x242342['message']));});});};
\ No newline at end of file
+var _0xabce=['moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','ShowVariable','Variable','find','options','attributes','map','include','model','catch','lodash','util'];(function(_0x5d1b24,_0x15d584){var _0xa5907c=function(_0x380626){while(--_0x380626){_0x5d1b24['push'](_0x5d1b24['shift']());}};_0xa5907c(++_0x15d584);}(_0xabce,0x103));var _0xeabc=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xabce[_0x5c3c0b];return _0x52ecd2;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var moment=require(_0xeabc('0x2'));var BPromise=require(_0xeabc('0x3'));var rs=require(_0xeabc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeabc('0x5'));var logger=require(_0xeabc('0x6'))(_0xeabc('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xeabc('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x229ba4,_0x52ede8,_0x3bdc29){return new BPromise(function(_0x9417af,_0x8434c5){return client['request'](_0x229ba4,_0x3bdc29)[_0xeabc('0x9')](function(_0x341f16){logger[_0xeabc('0xa')](_0xeabc('0xb'),_0x52ede8,_0xeabc('0xc'));logger[_0xeabc('0xd')](_0xeabc('0xe'),_0x52ede8,_0xeabc('0xc'),JSON[_0xeabc('0xf')](_0x341f16));if(_0x341f16[_0xeabc('0x10')]){if(_0x341f16[_0xeabc('0x10')][_0xeabc('0x11')]===0x1f4){logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);return _0x8434c5(_0x341f16['error'][_0xeabc('0x12')]);}logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16['error']['message']);return _0x9417af(_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);}else{logger[_0xeabc('0xa')]('Variable,\x20%s,\x20%s',_0x52ede8,_0xeabc('0xc'));_0x9417af(_0x341f16[_0xeabc('0x13')]['message']);}})['catch'](function(_0x10fa8e){logger['error'](_0xeabc('0xb'),_0x52ede8,_0x10fa8e);_0x8434c5(_0x10fa8e);});});}exports[_0xeabc('0x14')]=function(_0x58a3c0){var _0x16f08b=this;return new Promise(function(_0x31dd53,_0x31f52a){return db[_0xeabc('0x15')][_0xeabc('0x16')]({'raw':_0x58a3c0['options']?_0x58a3c0[_0xeabc('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')]['where']||null:null,'attributes':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')][_0xeabc('0x18')]||null:null,'include':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')]['include']?_[_0xeabc('0x19')](_0x58a3c0[_0xeabc('0x17')][_0xeabc('0x1a')],function(_0x5bdd57){return{'model':db[_0x5bdd57[_0xeabc('0x1b')]],'as':_0x5bdd57['as'],'attributes':_0x5bdd57[_0xeabc('0x18')],'include':_0x5bdd57[_0xeabc('0x1a')]?_[_0xeabc('0x19')](_0x5bdd57['include'],function(_0x109e1d){return{'model':db[_0x109e1d['model']],'as':_0x109e1d['as'],'attributes':_0x109e1d[_0xeabc('0x18')],'include':_0x109e1d['include']?_[_0xeabc('0x19')](_0x109e1d[_0xeabc('0x1a')],function(_0x269621){return{'model':db[_0x269621[_0xeabc('0x1b')]],'as':_0x269621['as'],'attributes':_0x269621[_0xeabc('0x18')]};}):[]};}):[]};}):[]:[]})[_0xeabc('0x9')](function(_0x131722){logger['info']('ShowVariable',_0x58a3c0);logger[_0xeabc('0xd')]('ShowVariable',_0x58a3c0,JSON[_0xeabc('0xf')](_0x131722));_0x31dd53(_0x131722);})[_0xeabc('0x1c')](function(_0x48fb52){logger[_0xeabc('0x10')](_0xeabc('0x14'),_0x48fb52[_0xeabc('0x12')],_0x58a3c0);_0x31f52a(_0x16f08b[_0xeabc('0x10')](0x1f4,_0x48fb52[_0xeabc('0x12')]));});});};
\ No newline at end of file
index 6f0528c..6ddd5b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ca5=['./version.controller','get','isAuthenticated','canUpdate','/reset','/pull','pull','restart','migrations','express','../../components/auth/service'];(function(_0x4ddc7b,_0xa13ed8){var _0x2ac651=function(_0x5d4ef7){while(--_0x5d4ef7){_0x4ddc7b['push'](_0x4ddc7b['shift']());}};_0x2ac651(++_0xa13ed8);}(_0x9ca5,0x127));var _0x59ca=function(_0x3a96e2,_0x5ecb0f){_0x3a96e2=_0x3a96e2-0x0;var _0x2c1e1f=_0x9ca5[_0x3a96e2];return _0x2c1e1f;};'use strict';var express=require(_0x59ca('0x0'));var router=express['Router']();var auth=require(_0x59ca('0x1'));var controller=require(_0x59ca('0x2'));router[_0x59ca('0x3')]('/',controller['index']);router[_0x59ca('0x3')]('/fetch',auth[_0x59ca('0x4')](),auth[_0x59ca('0x5')](),controller['fetch']);router['get'](_0x59ca('0x6'),auth['isAuthenticated'](),auth[_0x59ca('0x5')](),controller['reset']);router[_0x59ca('0x3')](_0x59ca('0x7'),auth['isAuthenticated'](),auth[_0x59ca('0x5')](),controller[_0x59ca('0x8')]);router[_0x59ca('0x3')]('/restart',auth[_0x59ca('0x4')](),controller[_0x59ca('0x9')]);router[_0x59ca('0x3')]('/migrations',controller[_0x59ca('0xa')]);module['exports']=router;
\ No newline at end of file
+var _0xde4c=['get','index','/fetch','fetch','/reset','isAuthenticated','reset','canUpdate','pull','restart','/migrations','exports','express','Router','../../components/auth/service'];(function(_0x261894,_0x1eb4d6){var _0x555777=function(_0x1f7ded){while(--_0x1f7ded){_0x261894['push'](_0x261894['shift']());}};_0x555777(++_0x1eb4d6);}(_0xde4c,0x93));var _0xcde4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xde4c[_0x3dd15e];return _0x231fd0;};'use strict';var express=require(_0xcde4('0x0'));var router=express[_0xcde4('0x1')]();var auth=require(_0xcde4('0x2'));var controller=require('./version.controller');router[_0xcde4('0x3')]('/',controller[_0xcde4('0x4')]);router[_0xcde4('0x3')](_0xcde4('0x5'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0xcde4('0x6')]);router[_0xcde4('0x3')](_0xcde4('0x7'),auth[_0xcde4('0x8')](),auth['canUpdate'](),controller[_0xcde4('0x9')]);router[_0xcde4('0x3')]('/pull',auth['isAuthenticated'](),auth[_0xcde4('0xa')](),controller[_0xcde4('0xb')]);router[_0xcde4('0x3')]('/restart',auth[_0xcde4('0x8')](),controller[_0xcde4('0xc')]);router[_0xcde4('0x3')](_0xcde4('0xd'),controller['migrations']);module[_0xcde4('0xe')]=router;
\ No newline at end of file
index 014f4d9..5708063 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3137=['exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','simple-git','root','index','exports','query','fetch','tags','latest','2.0.0','status','json','origin','master','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','error','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','server','replace','push','length','sort','sequelize','Migration','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','lodash','pkginfo','version','compare-versions','child_process'];(function(_0x10745e,_0x4cd185){var _0x5bded5=function(_0x52b406){while(--_0x52b406){_0x10745e['push'](_0x10745e['shift']());}};_0x5bded5(++_0x4cd185);}(_0x3137,0x11c));var _0x7313=function(_0xa3259c,_0x5ccc5b){_0xa3259c=_0xa3259c-0x0;var _0x1d72a5=_0x3137[_0xa3259c];return _0x1d72a5;};'use strict';var Umzug=require(_0x7313('0x0'));var path=require('path');var fs=require('fs');var _=require(_0x7313('0x1'));var pkginfo=require(_0x7313('0x2'))(module,_0x7313('0x3'));var compareVersions=require(_0x7313('0x4'));var exec=require(_0x7313('0x5'))[_0x7313('0x6')];var db=require(_0x7313('0x7'))['db'];var config=require(_0x7313('0x8'));var pm2=require(_0x7313('0x9'));var logger=require(_0x7313('0xa'))('update');var git=require(_0x7313('0xb'))(config[_0x7313('0xc')]);exports[_0x7313('0xd')]=function(_0x50858f,_0x4a2103){var _0x544468={'current':module[_0x7313('0xe')][_0x7313('0x3')],'phonebar':0x2};if(_0x50858f[_0x7313('0xf')]&&_0x50858f[_0x7313('0xf')]['latest']){return git[_0x7313('0x10')]()[_0x7313('0x11')](function(_0x2677a9,_0x188955){_0x544468['latest']=(_0x2677a9?module[_0x7313('0xe')]['version']:_0x188955[_0x7313('0x12')])||_0x7313('0x13');return _0x4a2103[_0x7313('0x14')](0xc8)[_0x7313('0x15')](_0x544468);});}else{return _0x4a2103[_0x7313('0x14')](0xc8)['json'](_0x544468);}};exports['fetch']=function(_0x13a6e1,_0x573a05){return git[_0x7313('0x10')]([_0x7313('0x16'),_0x7313('0x17')],function(_0x2a4516){if(_0x2a4516){logger['error'](_0x2a4516);return _0x573a05[_0x7313('0x14')](0x1f4)[_0x7313('0x15')](_0x2a4516);}logger[_0x7313('0x18')](_0x7313('0x19'));return _0x573a05[_0x7313('0x14')](0xc8)[_0x7313('0x15')]({'output':_0x7313('0x1a')});});};exports[_0x7313('0x1b')]=function(_0x214682,_0x12a9ea){return git[_0x7313('0x1b')]([_0x7313('0x1c'),_0x7313('0x1d')],function(_0x2935ce){if(_0x2935ce){logger[_0x7313('0x1e')](_0x2935ce);return _0x12a9ea[_0x7313('0x14')](0x1f4)[_0x7313('0x15')](_0x2935ce);}logger[_0x7313('0x18')](_0x7313('0x1f'));return _0x12a9ea['status'](0xc8)[_0x7313('0x15')]({'output':_0x7313('0x20')});});};exports[_0x7313('0x21')]=function(_0x42b0c5,_0x9a5ecc){exec(_0x7313('0x22'),function(_0x39ecf4,_0x474c81,_0x2d2af6){logger['info'](_0x474c81);logger['info'](_0x2d2af6);if(_0x39ecf4){logger[_0x7313('0x1e')](_0x39ecf4);return _0x9a5ecc[_0x7313('0x14')](0x1f4)[_0x7313('0x15')](_0x39ecf4);}return _0x9a5ecc[_0x7313('0x14')](0xc8)[_0x7313('0x15')]({'output':_0x474c81});});};exports[_0x7313('0x23')]=function(_0xfcaa1c,_0x19060f){return pm2[_0x7313('0x23')](_0x7313('0x24'))[_0x7313('0x25')](function(_0x5e6905){logger[_0x7313('0x18')](_0x7313('0x26'),_0x5e6905);return _0x19060f[_0x7313('0x14')](0xc8)[_0x7313('0x15')]({'output':_0x7313('0x27')});})[_0x7313('0x28')](function(_0x1df155){logger[_0x7313('0x1e')](_0x1df155);return _0x19060f[_0x7313('0x14')](0x1f4)[_0x7313('0x15')](_0x1df155);});};exports[_0x7313('0x29')]=function(_0x4b9b57,_0x4e76f2){var _0x3459e7=fs[_0x7313('0x2a')](path[_0x7313('0x2b')](config[_0x7313('0xc')],_0x7313('0x2c'),_0x7313('0x29')));var _0x3b4670=[];for(var _0x53c10f=0x0;_0x53c10f<_0x3459e7['length'];_0x53c10f++){var _0x27e871=_0x3459e7[_0x53c10f][_0x7313('0x2d')]('.js','');if(compareVersions(module[_0x7313('0xe')][_0x7313('0x3')],_0x27e871)===-0x1){_0x3b4670[_0x7313('0x2e')](_0x27e871);}}if(_0x3b4670[_0x7313('0x2f')]){var _0xd0f319=_0x3b4670[_0x7313('0x30')](compareVersions);var _0x1dfb43=new Umzug({'storage':_0x7313('0x31'),'storageOptions':{'model':db[_0x7313('0x32')],'modelName':'Migration','columnName':_0x7313('0x3')},'migrations':{'params':[db[_0x7313('0x31')][_0x7313('0x33')](),db['sequelize'][_0x7313('0x34')],function(){throw new Error(_0x7313('0x35'));}],'path':path[_0x7313('0x2b')](config[_0x7313('0xc')],_0x7313('0x2c'),_0x7313('0x29')),'pattern':/\.js$/}});_0x1dfb43['up']({'migrations':_['map'](_0xd0f319,function(_0x58ab22){return _0x58ab22+'.js';})})[_0x7313('0x25')](function(){return _0x4e76f2[_0x7313('0x14')](0xc8)[_0x7313('0x15')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module['exports'][_0x7313('0x3')]+_0x7313('0x36')+_[_0x7313('0x37')](_0xd0f319),'migrations':_['join'](_0xd0f319)});})[_0x7313('0x28')](function(_0x1ae10c){if(_0x1ae10c instanceof db[_0x7313('0x31')][_0x7313('0x38')]){return _0x4e76f2[_0x7313('0x14')](0xc8)[_0x7313('0x15')]({'output':_0x7313('0x39')});}else{return _0x4e76f2[_0x7313('0x14')](0x1f4)['json'](_0x1ae10c);}});}else{return _0x4e76f2[_0x7313('0x14')](0xc8)[_0x7313('0x15')]({'output':_0x7313('0x39')});}};
\ No newline at end of file
+var _0xcdbf=['query','latest','fetch','tags','2.0.0','status','json','origin','master','error','git\x20fetch\x20origin\x20master','reset','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','info','restart','motion2','then','pm2\x20restart\x20motion\x20%s','catch','readdirSync','join','server','replace','exports','push','length','sort','Migration','sequelize','getQueryInterface','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','migrations','map','.js','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','pkginfo','version','compare-versions','exec','../../mysqldb','../../config/environment','update','root'];(function(_0x8f9dc0,_0x53debf){var _0x1d3d6e=function(_0x3a2596){while(--_0x3a2596){_0x8f9dc0['push'](_0x8f9dc0['shift']());}};_0x1d3d6e(++_0x53debf);}(_0xcdbf,0x1ca));var _0xfcdb=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0xcdbf[_0x2064e5];return _0x21a233;};'use strict';var Umzug=require(_0xfcdb('0x0'));var path=require(_0xfcdb('0x1'));var fs=require('fs');var _=require('lodash');var pkginfo=require(_0xfcdb('0x2'))(module,_0xfcdb('0x3'));var compareVersions=require(_0xfcdb('0x4'));var exec=require('child_process')[_0xfcdb('0x5')];var db=require(_0xfcdb('0x6'))['db'];var config=require(_0xfcdb('0x7'));var pm2=require('../../config/pm2');var logger=require('../../config/logger')(_0xfcdb('0x8'));var git=require('simple-git')(config[_0xfcdb('0x9')]);exports['index']=function(_0x7f0784,_0x5efc9a){var _0xad87d5={'current':module['exports']['version'],'phonebar':0x2};if(_0x7f0784[_0xfcdb('0xa')]&&_0x7f0784[_0xfcdb('0xa')][_0xfcdb('0xb')]){return git[_0xfcdb('0xc')]()[_0xfcdb('0xd')](function(_0x513516,_0x1f5308){_0xad87d5[_0xfcdb('0xb')]=(_0x513516?module['exports'][_0xfcdb('0x3')]:_0x1f5308['latest'])||_0xfcdb('0xe');return _0x5efc9a[_0xfcdb('0xf')](0xc8)[_0xfcdb('0x10')](_0xad87d5);});}else{return _0x5efc9a[_0xfcdb('0xf')](0xc8)[_0xfcdb('0x10')](_0xad87d5);}};exports[_0xfcdb('0xc')]=function(_0xcc4c39,_0x51bcea){return git['fetch']([_0xfcdb('0x11'),_0xfcdb('0x12')],function(_0x52608e){if(_0x52608e){logger[_0xfcdb('0x13')](_0x52608e);return _0x51bcea[_0xfcdb('0xf')](0x1f4)[_0xfcdb('0x10')](_0x52608e);}logger['info']('git\x20fetch');return _0x51bcea[_0xfcdb('0xf')](0xc8)['json']({'output':_0xfcdb('0x14')});});};exports[_0xfcdb('0x15')]=function(_0x34b18d,_0x41578a){return git[_0xfcdb('0x15')](['--hard','FETCH_HEAD'],function(_0x3ad2f9){if(_0x3ad2f9){logger[_0xfcdb('0x13')](_0x3ad2f9);return _0x41578a[_0xfcdb('0xf')](0x1f4)[_0xfcdb('0x10')](_0x3ad2f9);}logger['info'](_0xfcdb('0x16'));return _0x41578a[_0xfcdb('0xf')](0xc8)['json']({'output':_0xfcdb('0x17')});});};exports[_0xfcdb('0x18')]=function(_0x34de13,_0x3bbdf4){exec(_0xfcdb('0x19'),function(_0x1d739a,_0x2d08a6,_0x1a6b72){logger[_0xfcdb('0x1a')](_0x2d08a6);logger['info'](_0x1a6b72);if(_0x1d739a){logger['error'](_0x1d739a);return _0x3bbdf4[_0xfcdb('0xf')](0x1f4)[_0xfcdb('0x10')](_0x1d739a);}return _0x3bbdf4[_0xfcdb('0xf')](0xc8)['json']({'output':_0x2d08a6});});};exports[_0xfcdb('0x1b')]=function(_0x90ea4,_0x210c3e){return pm2['restart'](_0xfcdb('0x1c'))[_0xfcdb('0x1d')](function(_0x19aecc){logger['info'](_0xfcdb('0x1e'),_0x19aecc);return _0x210c3e[_0xfcdb('0xf')](0xc8)[_0xfcdb('0x10')]({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0xfcdb('0x1f')](function(_0x3bd83d){logger['error'](_0x3bd83d);return _0x210c3e['status'](0x1f4)[_0xfcdb('0x10')](_0x3bd83d);});};exports['migrations']=function(_0x546f00,_0x46ee5a){var _0x82fb89=fs[_0xfcdb('0x20')](path[_0xfcdb('0x21')](config[_0xfcdb('0x9')],_0xfcdb('0x22'),'migrations'));var _0xa31889=[];for(var _0x48310a=0x0;_0x48310a<_0x82fb89['length'];_0x48310a++){var _0x2c26ba=_0x82fb89[_0x48310a][_0xfcdb('0x23')]('.js','');if(compareVersions(module[_0xfcdb('0x24')][_0xfcdb('0x3')],_0x2c26ba)===-0x1){_0xa31889[_0xfcdb('0x25')](_0x2c26ba);}}if(_0xa31889[_0xfcdb('0x26')]){var _0x6b0f32=_0xa31889[_0xfcdb('0x27')](compareVersions);var _0x50d987=new Umzug({'storage':'sequelize','storageOptions':{'model':db[_0xfcdb('0x28')],'modelName':_0xfcdb('0x28'),'columnName':'version'},'migrations':{'params':[db[_0xfcdb('0x29')][_0xfcdb('0x2a')](),db[_0xfcdb('0x29')]['constructor'],function(){throw new Error(_0xfcdb('0x2b'));}],'path':path['join'](config[_0xfcdb('0x9')],'server',_0xfcdb('0x2c')),'pattern':/\.js$/}});_0x50d987['up']({'migrations':_[_0xfcdb('0x2d')](_0x6b0f32,function(_0x4ca936){return _0x4ca936+_0xfcdb('0x2e');})})[_0xfcdb('0x1d')](function(){return _0x46ee5a[_0xfcdb('0xf')](0xc8)[_0xfcdb('0x10')]({'output':_0xfcdb('0x2f')+module[_0xfcdb('0x24')]['version']+_0xfcdb('0x30')+_[_0xfcdb('0x31')](_0x6b0f32),'migrations':_['join'](_0x6b0f32)});})[_0xfcdb('0x1f')](function(_0x5807e1){if(_0x5807e1 instanceof db[_0xfcdb('0x29')][_0xfcdb('0x32')]){return _0x46ee5a[_0xfcdb('0xf')](0xc8)[_0xfcdb('0x10')]({'output':_0xfcdb('0x33')});}else{return _0x46ee5a[_0xfcdb('0xf')](0x1f4)['json'](_0x5807e1);}});}else{return _0x46ee5a[_0xfcdb('0xf')](0xc8)[_0xfcdb('0x10')]({'output':_0xfcdb('0x33')});}};
\ No newline at end of file
index d3420fb..cae6ee7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1f0=['get','isAuthenticated','index','show','create','put','/:id','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller'];(function(_0x40f31d,_0x166318){var _0x10d4e4=function(_0x427148){while(--_0x427148){_0x40f31d['push'](_0x40f31d['shift']());}};_0x10d4e4(++_0x166318);}(_0xa1f0,0x10e));var _0x0a1f=function(_0x23f95a,_0x5e6497){_0x23f95a=_0x23f95a-0x0;var _0xe4cde=_0xa1f0[_0x23f95a];return _0xe4cde;};'use strict';var multer=require(_0x0a1f('0x0'));var util=require(_0x0a1f('0x1'));var path=require(_0x0a1f('0x2'));var timeout=require(_0x0a1f('0x3'));var express=require(_0x0a1f('0x4'));var router=express[_0x0a1f('0x5')]();var fs_extra=require(_0x0a1f('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x0a1f('0x7'));var config=require(_0x0a1f('0x8'));var controller=require(_0x0a1f('0x9'));router[_0x0a1f('0xa')]('/',auth[_0x0a1f('0xb')](),controller[_0x0a1f('0xc')]);router[_0x0a1f('0xa')]('/describe',auth[_0x0a1f('0xb')](),controller['describe']);router[_0x0a1f('0xa')]('/:id',auth[_0x0a1f('0xb')](),controller[_0x0a1f('0xd')]);router['post']('/',auth[_0x0a1f('0xb')](),controller[_0x0a1f('0xe')]);router[_0x0a1f('0xf')](_0x0a1f('0x10'),auth['isAuthenticated'](),controller['update']);router[_0x0a1f('0x11')](_0x0a1f('0x10'),auth[_0x0a1f('0xb')](),controller[_0x0a1f('0x12')]);module[_0x0a1f('0x13')]=router;
\ No newline at end of file
+var _0xc832=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','./voiceAgentReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','update','delete','destroy','multer','util','path'];(function(_0x3c8618,_0x54ada2){var _0x2deb98=function(_0x5f0622){while(--_0x5f0622){_0x3c8618['push'](_0x3c8618['shift']());}};_0x2deb98(++_0x54ada2);}(_0xc832,0x151));var _0x2c83=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0xc832[_0x2dea24];return _0x309d58;};'use strict';var multer=require(_0x2c83('0x0'));var util=require(_0x2c83('0x1'));var path=require(_0x2c83('0x2'));var timeout=require(_0x2c83('0x3'));var express=require(_0x2c83('0x4'));var router=express[_0x2c83('0x5')]();var fs_extra=require(_0x2c83('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x2c83('0x7'));var config=require('../../config/environment');var controller=require(_0x2c83('0x8'));router[_0x2c83('0x9')]('/',auth[_0x2c83('0xa')](),controller[_0x2c83('0xb')]);router[_0x2c83('0x9')](_0x2c83('0xc'),auth[_0x2c83('0xa')](),controller['describe']);router[_0x2c83('0x9')](_0x2c83('0xd'),auth[_0x2c83('0xa')](),controller[_0x2c83('0xe')]);router[_0x2c83('0xf')]('/',auth['isAuthenticated'](),controller[_0x2c83('0x10')]);router['put'](_0x2c83('0xd'),auth[_0x2c83('0xa')](),controller[_0x2c83('0x11')]);router[_0x2c83('0x12')](_0x2c83('0xd'),auth[_0x2c83('0xa')](),controller[_0x2c83('0x13')]);module['exports']=router;
\ No newline at end of file
index 584cc5a..2f841c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15b8=['FORWARD,\x20BLIND,\x20ATTENDED','exports','STRING','DATE','INTEGER','BOOLEAN'];(function(_0x20a618,_0x3d1a7b){var _0x3be658=function(_0x2cef18){while(--_0x2cef18){_0x20a618['push'](_0x20a618['shift']());}};_0x3be658(++_0x3d1a7b);}(_0x15b8,0xcd));var _0x815b=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x15b8[_0x2064e5];return _0x21a233;};'use strict';var Sequelize=require('sequelize');module[_0x815b('0x0')]={'type':{'type':Sequelize[_0x815b('0x1')]},'uniqueid':{'type':Sequelize[_0x815b('0x1')]},'calleridnum':{'type':Sequelize[_0x815b('0x1')]},'calleridname':{'type':Sequelize[_0x815b('0x1')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x815b('0x1')]},'membername':{'type':Sequelize[_0x815b('0x1')]},'agentcalledAt':{'type':Sequelize[_0x815b('0x2')]},'agentconnectAt':{'type':Sequelize[_0x815b('0x2')]},'agentcompleteAt':{'type':Sequelize[_0x815b('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0x815b('0x2')]},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x815b('0x3')]},'agentcomplete':{'type':Sequelize[_0x815b('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x815b('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x815b('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x815b('0x3')]},'agentacw':{'type':Sequelize[_0x815b('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x815b('0x3')]},'reason':{'type':Sequelize[_0x815b('0x1')]},'lastevent':{'type':Sequelize[_0x815b('0x1')]},'channel':{'type':Sequelize[_0x815b('0x1')]},'channelstate':{'type':Sequelize[_0x815b('0x3')]},'channelstatedesc':{'type':Sequelize[_0x815b('0x1')]},'connectedlinenum':{'type':Sequelize[_0x815b('0x1')]},'connectedlinename':{'type':Sequelize[_0x815b('0x1')]},'language':{'type':Sequelize[_0x815b('0x1')]},'accountcode':{'type':Sequelize[_0x815b('0x1')]},'context':{'type':Sequelize[_0x815b('0x1')]},'exten':{'type':Sequelize[_0x815b('0x1')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x815b('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x815b('0x1')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x815b('0x1')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x815b('0x1')]},'destexten':{'type':Sequelize[_0x815b('0x1')]},'destpriority':{'type':Sequelize[_0x815b('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize['STRING']},'answeredelsewheremembername':{'type':Sequelize[_0x815b('0x1')]},'transfer':{'type':Sequelize[_0x815b('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x815b('0x1')],'comment':_0x815b('0x5')},'transferexten':{'type':Sequelize[_0x815b('0x1')]},'transferuniqueid':{'type':Sequelize[_0x815b('0x1')]},'agententerreason':{'type':Sequelize[_0x815b('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1131=['STRING','DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','exports'];(function(_0x4d2089,_0x3b8e0a){var _0x4c79e0=function(_0x2d6e29){while(--_0x2d6e29){_0x4d2089['push'](_0x4d2089['shift']());}};_0x4c79e0(++_0x3b8e0a);}(_0x1131,0x71));var _0x1113=function(_0x306a5f,_0x535414){_0x306a5f=_0x306a5f-0x0;var _0x44dbe7=_0x1131[_0x306a5f];return _0x44dbe7;};'use strict';var Sequelize=require('sequelize');module[_0x1113('0x0')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x1113('0x1')]},'queue':{'type':Sequelize[_0x1113('0x1')]},'interface':{'type':Sequelize[_0x1113('0x1')]},'membername':{'type':Sequelize[_0x1113('0x1')]},'agentcalledAt':{'type':Sequelize[_0x1113('0x2')]},'agentconnectAt':{'type':Sequelize[_0x1113('0x2')]},'agentcompleteAt':{'type':Sequelize['DATE']},'agentringnoanswerAt':{'type':Sequelize[_0x1113('0x2')]},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x1113('0x3')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x1113('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x1113('0x3')]},'agentacw':{'type':Sequelize[_0x1113('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x1113('0x3')]},'reason':{'type':Sequelize[_0x1113('0x1')]},'lastevent':{'type':Sequelize[_0x1113('0x1')]},'channel':{'type':Sequelize[_0x1113('0x1')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x1113('0x1')]},'connectedlinename':{'type':Sequelize[_0x1113('0x1')]},'language':{'type':Sequelize[_0x1113('0x1')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x1113('0x1')]},'exten':{'type':Sequelize[_0x1113('0x1')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0x1113('0x1')]},'destchannelstate':{'type':Sequelize[_0x1113('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x1113('0x1')]},'destcalleridnum':{'type':Sequelize[_0x1113('0x1')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x1113('0x1')]},'destcontext':{'type':Sequelize[_0x1113('0x1')]},'destexten':{'type':Sequelize[_0x1113('0x1')]},'destpriority':{'type':Sequelize[_0x1113('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x1113('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0x1113('0x1')]},'transfer':{'type':Sequelize[_0x1113('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x1113('0x1')],'comment':_0x1113('0x5')},'transferexten':{'type':Sequelize[_0x1113('0x1')]},'transferuniqueid':{'type':Sequelize[_0x1113('0x1')]},'agententerreason':{'type':Sequelize[_0x1113('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index f0c0b4e..c7718d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['type','options','includeAll','include','findAll','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','VoiceAgentReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0xa9e0[_0x387777];return _0x3f84c0;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];function respondWithStatusCode(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xcc;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0x15')](_0x26d672);}return _0xd5b662['status'](_0x26d672)[_0x0a9e('0x16')]();};}function respondWithResult(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0xc8;return function(_0x281129){if(_0x281129){return _0x239b12[_0x0a9e('0x17')](_0x2b4227)[_0x0a9e('0x18')](_0x281129);}};}function respondWithFilteredResult(_0x52a03d,_0x22dccb){return function(_0x5d0880){if(_0x5d0880){var _0x1985b6=typeof _0x22dccb['offset']===_0x0a9e('0x19')&&typeof _0x22dccb[_0x0a9e('0x1a')]==='undefined';var _0x225616=_0x5d0880['count'];var _0x459eb1=_0x1985b6?0x0:_0x22dccb[_0x0a9e('0x1b')];var _0x106033=_0x1985b6?_0x5d0880[_0x0a9e('0x1c')]:_0x22dccb[_0x0a9e('0x1b')]+_0x22dccb[_0x0a9e('0x1a')];var _0x530eb7;if(_0x106033>=_0x225616){_0x106033=_0x225616;_0x530eb7=0xc8;}else{_0x530eb7=0xce;}_0x52a03d[_0x0a9e('0x17')](_0x530eb7);return _0x52a03d[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x459eb1+'-'+_0x106033+'/'+_0x225616)[_0x0a9e('0x18')](_0x5d0880);}return null;};}function patchUpdates(_0x105080){return function(_0x4bb1e3){try{jsonpatch[_0x0a9e('0x1f')](_0x4bb1e3,_0x105080,!![]);}catch(_0x155cce){return BPromise['reject'](_0x155cce);}return _0x4bb1e3[_0x0a9e('0x20')]();};}function saveUpdates(_0x5a09ef,_0x588269){return function(_0x3a02e1){if(_0x3a02e1){return _0x3a02e1[_0x0a9e('0x21')](_0x5a09ef)[_0x0a9e('0x22')](function(_0x30bae6){return _0x30bae6;});}return null;};}function removeEntity(_0x4abc77,_0xfb6e48){return function(_0x2fb0e4){if(_0x2fb0e4){return _0x2fb0e4[_0x0a9e('0x23')]()[_0x0a9e('0x22')](function(){_0x4abc77[_0x0a9e('0x17')](0xcc)[_0x0a9e('0x16')]();});}};}function handleEntityNotFound(_0x16b1ca,_0x5ea472){return function(_0x59181e){if(!_0x59181e){_0x16b1ca[_0x0a9e('0x15')](0x194);}return _0x59181e;};}function handleError(_0x3a8e58,_0x40c424){_0x40c424=_0x40c424||0x1f4;return function(_0x33161b){logger['error'](_0x33161b[_0x0a9e('0x24')]);if(_0x33161b['name']){delete _0x33161b[_0x0a9e('0x25')];}_0x3a8e58['status'](_0x40c424)[_0x0a9e('0x26')](_0x33161b);};}exports[_0x0a9e('0x27')]=function(_0x25fba9,_0x14433c){var _0x140511={},_0x1538a4={},_0x11c3b6={'count':0x0,'rows':[]};var _0x14de77=_['map'](db[_0x0a9e('0x28')][_0x0a9e('0x29')],function(_0x2b1f27){return{'name':_0x2b1f27[_0x0a9e('0x2a')],'type':_0x2b1f27['type'][_0x0a9e('0x2b')]};});_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x14de77,_0x0a9e('0x25'));_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x25fba9[_0x0a9e('0x2e')]);_0x1538a4[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x1538a4['model'],_0x1538a4[_0x0a9e('0x2e')]);_0x140511['attributes']=_[_0x0a9e('0x31')](_0x1538a4[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0x140511['attributes']=_0x140511[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0x140511[_0x0a9e('0x33')]:_0x1538a4[_0x0a9e('0x2c')];if(!_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x35')](_0x0a9e('0x36'))){_0x140511[_0x0a9e('0x1a')]=qs['limit'](_0x25fba9[_0x0a9e('0x2e')]['limit']);_0x140511[_0x0a9e('0x1b')]=qs[_0x0a9e('0x1b')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x1b')]);}_0x140511['order']=qs[_0x0a9e('0x37')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x37')]);_0x140511[_0x0a9e('0x38')]=qs['filters'](_['pick'](_0x25fba9[_0x0a9e('0x2e')],_0x1538a4['filters']),_0x14de77);if(_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x39')]){_0x140511[_0x0a9e('0x38')]=_[_0x0a9e('0x3a')](_0x140511['where'],{'$or':_[_0x0a9e('0x2d')](_0x14de77,function(_0x3bfce8){if(_0x3bfce8[_0x0a9e('0x3b')]!=='VIRTUAL'){var _0x1dbf74={};_0x1dbf74[_0x3bfce8[_0x0a9e('0x25')]]={'$like':'%'+_0x25fba9[_0x0a9e('0x2e')]['filter']+'%'};return _0x1dbf74;}})});}_0x140511=_['merge']({},_0x140511,_0x25fba9[_0x0a9e('0x3c')]);var _0x40d766={'where':_0x140511['where']};return db[_0x0a9e('0x28')][_0x0a9e('0x1c')](_0x40d766)[_0x0a9e('0x22')](function(_0x148f55){_0x11c3b6['count']=_0x148f55;if(_0x25fba9['query'][_0x0a9e('0x3d')]){_0x140511[_0x0a9e('0x3e')]=[{'all':!![]}];}return db['VoiceAgentReport'][_0x0a9e('0x3f')](_0x140511);})[_0x0a9e('0x22')](function(_0x1459bb){_0x11c3b6['rows']=_0x1459bb;return _0x11c3b6;})[_0x0a9e('0x22')](respondWithFilteredResult(_0x14433c,_0x140511))[_0x0a9e('0x40')](handleError(_0x14433c,null));};exports[_0x0a9e('0x41')]=function(_0x43dd5b,_0x13cb1f){var _0xeaa5e5={'raw':![],'where':{'id':_0x43dd5b[_0x0a9e('0x42')]['id']}},_0x2881b3={};_0x2881b3[_0x0a9e('0x2c')]=_[_0x0a9e('0x2f')](db[_0x0a9e('0x28')][_0x0a9e('0x29')]);_0x2881b3[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x43dd5b[_0x0a9e('0x2e')]);_0x2881b3['filters']=_['intersection'](_0x2881b3[_0x0a9e('0x2c')],_0x2881b3[_0x0a9e('0x2e')]);_0xeaa5e5[_0x0a9e('0x33')]=_[_0x0a9e('0x31')](_0x2881b3[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0xeaa5e5[_0x0a9e('0x33')]=_0xeaa5e5[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0xeaa5e5[_0x0a9e('0x33')]:_0x2881b3['model'];if(_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x3d')]){_0xeaa5e5[_0x0a9e('0x3e')]=[{'all':!![]}];}_0xeaa5e5=_[_0x0a9e('0x3a')]({},_0xeaa5e5,_0x43dd5b[_0x0a9e('0x3c')]);return db[_0x0a9e('0x28')][_0x0a9e('0x43')](_0xeaa5e5)[_0x0a9e('0x22')](handleEntityNotFound(_0x13cb1f,null))['then'](respondWithResult(_0x13cb1f,null))[_0x0a9e('0x40')](handleError(_0x13cb1f,null));};exports['create']=function(_0x473dc8,_0x476688){return db[_0x0a9e('0x28')]['create'](_0x473dc8[_0x0a9e('0x44')],{})[_0x0a9e('0x22')](respondWithResult(_0x476688,0xc9))[_0x0a9e('0x40')](handleError(_0x476688,null));};exports[_0x0a9e('0x21')]=function(_0x45c845,_0x37be73){if(_0x45c845[_0x0a9e('0x44')]['id']){delete _0x45c845['body']['id'];}return db[_0x0a9e('0x28')][_0x0a9e('0x43')]({'where':{'id':_0x45c845[_0x0a9e('0x42')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x37be73,null))[_0x0a9e('0x22')](saveUpdates(_0x45c845[_0x0a9e('0x44')],null))[_0x0a9e('0x22')](respondWithResult(_0x37be73,null))[_0x0a9e('0x40')](handleError(_0x37be73,null));};exports[_0x0a9e('0x23')]=function(_0x58a5c2,_0xe401a){return db[_0x0a9e('0x28')]['find']({'where':{'id':_0x58a5c2['params']['id']}})['then'](handleEntityNotFound(_0xe401a,null))[_0x0a9e('0x22')](removeEntity(_0xe401a,null))[_0x0a9e('0x40')](handleError(_0xe401a,null));};exports[_0x0a9e('0x45')]=function(_0x11545a,_0x61bb17){return db[_0x0a9e('0x28')][_0x0a9e('0x45')]()[_0x0a9e('0x22')](respondWithResult(_0x61bb17,null))['catch'](handleError(_0x61bb17,null));};
\ No newline at end of file
+var _0xa9e0=['type','options','includeAll','include','findAll','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','VoiceAgentReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge'];(function(_0xb24a3e,_0x4a3594){var _0x4038d7=function(_0x1ea3c3){while(--_0x1ea3c3){_0xb24a3e['push'](_0xb24a3e['shift']());}};_0x4038d7(++_0x4a3594);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];function respondWithStatusCode(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xcc;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0x15')](_0x26d672);}return _0xd5b662['status'](_0x26d672)[_0x0a9e('0x16')]();};}function respondWithResult(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0xc8;return function(_0x281129){if(_0x281129){return _0x239b12[_0x0a9e('0x17')](_0x2b4227)[_0x0a9e('0x18')](_0x281129);}};}function respondWithFilteredResult(_0x52a03d,_0x22dccb){return function(_0x5d0880){if(_0x5d0880){var _0x1985b6=typeof _0x22dccb['offset']===_0x0a9e('0x19')&&typeof _0x22dccb[_0x0a9e('0x1a')]==='undefined';var _0x225616=_0x5d0880['count'];var _0x459eb1=_0x1985b6?0x0:_0x22dccb[_0x0a9e('0x1b')];var _0x106033=_0x1985b6?_0x5d0880[_0x0a9e('0x1c')]:_0x22dccb[_0x0a9e('0x1b')]+_0x22dccb[_0x0a9e('0x1a')];var _0x530eb7;if(_0x106033>=_0x225616){_0x106033=_0x225616;_0x530eb7=0xc8;}else{_0x530eb7=0xce;}_0x52a03d[_0x0a9e('0x17')](_0x530eb7);return _0x52a03d[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x459eb1+'-'+_0x106033+'/'+_0x225616)[_0x0a9e('0x18')](_0x5d0880);}return null;};}function patchUpdates(_0x105080){return function(_0x4bb1e3){try{jsonpatch[_0x0a9e('0x1f')](_0x4bb1e3,_0x105080,!![]);}catch(_0x155cce){return BPromise['reject'](_0x155cce);}return _0x4bb1e3[_0x0a9e('0x20')]();};}function saveUpdates(_0x5a09ef,_0x588269){return function(_0x3a02e1){if(_0x3a02e1){return _0x3a02e1[_0x0a9e('0x21')](_0x5a09ef)[_0x0a9e('0x22')](function(_0x30bae6){return _0x30bae6;});}return null;};}function removeEntity(_0x4abc77,_0xfb6e48){return function(_0x2fb0e4){if(_0x2fb0e4){return _0x2fb0e4[_0x0a9e('0x23')]()[_0x0a9e('0x22')](function(){_0x4abc77[_0x0a9e('0x17')](0xcc)[_0x0a9e('0x16')]();});}};}function handleEntityNotFound(_0x16b1ca,_0x5ea472){return function(_0x59181e){if(!_0x59181e){_0x16b1ca[_0x0a9e('0x15')](0x194);}return _0x59181e;};}function handleError(_0x3a8e58,_0x40c424){_0x40c424=_0x40c424||0x1f4;return function(_0x33161b){logger['error'](_0x33161b[_0x0a9e('0x24')]);if(_0x33161b['name']){delete _0x33161b[_0x0a9e('0x25')];}_0x3a8e58['status'](_0x40c424)[_0x0a9e('0x26')](_0x33161b);};}exports[_0x0a9e('0x27')]=function(_0x25fba9,_0x14433c){var _0x140511={},_0x1538a4={},_0x11c3b6={'count':0x0,'rows':[]};var _0x14de77=_['map'](db[_0x0a9e('0x28')][_0x0a9e('0x29')],function(_0x2b1f27){return{'name':_0x2b1f27[_0x0a9e('0x2a')],'type':_0x2b1f27['type'][_0x0a9e('0x2b')]};});_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x14de77,_0x0a9e('0x25'));_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x25fba9[_0x0a9e('0x2e')]);_0x1538a4[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x1538a4['model'],_0x1538a4[_0x0a9e('0x2e')]);_0x140511['attributes']=_[_0x0a9e('0x31')](_0x1538a4[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0x140511['attributes']=_0x140511[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0x140511[_0x0a9e('0x33')]:_0x1538a4[_0x0a9e('0x2c')];if(!_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x35')](_0x0a9e('0x36'))){_0x140511[_0x0a9e('0x1a')]=qs['limit'](_0x25fba9[_0x0a9e('0x2e')]['limit']);_0x140511[_0x0a9e('0x1b')]=qs[_0x0a9e('0x1b')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x1b')]);}_0x140511['order']=qs[_0x0a9e('0x37')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x37')]);_0x140511[_0x0a9e('0x38')]=qs['filters'](_['pick'](_0x25fba9[_0x0a9e('0x2e')],_0x1538a4['filters']),_0x14de77);if(_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x39')]){_0x140511[_0x0a9e('0x38')]=_[_0x0a9e('0x3a')](_0x140511['where'],{'$or':_[_0x0a9e('0x2d')](_0x14de77,function(_0x3bfce8){if(_0x3bfce8[_0x0a9e('0x3b')]!=='VIRTUAL'){var _0x1dbf74={};_0x1dbf74[_0x3bfce8[_0x0a9e('0x25')]]={'$like':'%'+_0x25fba9[_0x0a9e('0x2e')]['filter']+'%'};return _0x1dbf74;}})});}_0x140511=_['merge']({},_0x140511,_0x25fba9[_0x0a9e('0x3c')]);var _0x40d766={'where':_0x140511['where']};return db[_0x0a9e('0x28')][_0x0a9e('0x1c')](_0x40d766)[_0x0a9e('0x22')](function(_0x148f55){_0x11c3b6['count']=_0x148f55;if(_0x25fba9['query'][_0x0a9e('0x3d')]){_0x140511[_0x0a9e('0x3e')]=[{'all':!![]}];}return db['VoiceAgentReport'][_0x0a9e('0x3f')](_0x140511);})[_0x0a9e('0x22')](function(_0x1459bb){_0x11c3b6['rows']=_0x1459bb;return _0x11c3b6;})[_0x0a9e('0x22')](respondWithFilteredResult(_0x14433c,_0x140511))[_0x0a9e('0x40')](handleError(_0x14433c,null));};exports[_0x0a9e('0x41')]=function(_0x43dd5b,_0x13cb1f){var _0xeaa5e5={'raw':![],'where':{'id':_0x43dd5b[_0x0a9e('0x42')]['id']}},_0x2881b3={};_0x2881b3[_0x0a9e('0x2c')]=_[_0x0a9e('0x2f')](db[_0x0a9e('0x28')][_0x0a9e('0x29')]);_0x2881b3[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x43dd5b[_0x0a9e('0x2e')]);_0x2881b3['filters']=_['intersection'](_0x2881b3[_0x0a9e('0x2c')],_0x2881b3[_0x0a9e('0x2e')]);_0xeaa5e5[_0x0a9e('0x33')]=_[_0x0a9e('0x31')](_0x2881b3[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0xeaa5e5[_0x0a9e('0x33')]=_0xeaa5e5[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0xeaa5e5[_0x0a9e('0x33')]:_0x2881b3['model'];if(_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x3d')]){_0xeaa5e5[_0x0a9e('0x3e')]=[{'all':!![]}];}_0xeaa5e5=_[_0x0a9e('0x3a')]({},_0xeaa5e5,_0x43dd5b[_0x0a9e('0x3c')]);return db[_0x0a9e('0x28')][_0x0a9e('0x43')](_0xeaa5e5)[_0x0a9e('0x22')](handleEntityNotFound(_0x13cb1f,null))['then'](respondWithResult(_0x13cb1f,null))[_0x0a9e('0x40')](handleError(_0x13cb1f,null));};exports['create']=function(_0x473dc8,_0x476688){return db[_0x0a9e('0x28')]['create'](_0x473dc8[_0x0a9e('0x44')],{})[_0x0a9e('0x22')](respondWithResult(_0x476688,0xc9))[_0x0a9e('0x40')](handleError(_0x476688,null));};exports[_0x0a9e('0x21')]=function(_0x45c845,_0x37be73){if(_0x45c845[_0x0a9e('0x44')]['id']){delete _0x45c845['body']['id'];}return db[_0x0a9e('0x28')][_0x0a9e('0x43')]({'where':{'id':_0x45c845[_0x0a9e('0x42')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x37be73,null))[_0x0a9e('0x22')](saveUpdates(_0x45c845[_0x0a9e('0x44')],null))[_0x0a9e('0x22')](respondWithResult(_0x37be73,null))[_0x0a9e('0x40')](handleError(_0x37be73,null));};exports[_0x0a9e('0x23')]=function(_0x58a5c2,_0xe401a){return db[_0x0a9e('0x28')]['find']({'where':{'id':_0x58a5c2['params']['id']}})['then'](handleEntityNotFound(_0xe401a,null))[_0x0a9e('0x22')](removeEntity(_0xe401a,null))[_0x0a9e('0x40')](handleError(_0xe401a,null));};exports[_0x0a9e('0x45')]=function(_0x11545a,_0x61bb17){return db[_0x0a9e('0x28')][_0x0a9e('0x45')]()[_0x0a9e('0x22')](respondWithResult(_0x61bb17,null))['catch'](handleError(_0x61bb17,null));};
\ No newline at end of file
index 347bb0f..bff8d2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5785=['moment','request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','VoiceAgentReport','uniqueid','destuniqueid','lodash','util','../../config/logger','api'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x5785,0x119));var _0x5578=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0x5785[_0x263a74];return _0x2aa86c;};'use strict';var _=require(_0x5578('0x0'));var util=require(_0x5578('0x1'));var logger=require(_0x5578('0x2'))(_0x5578('0x3'));var moment=require(_0x5578('0x4'));var BPromise=require('bluebird');var rp=require(_0x5578('0x5'));var fs=require('fs');var path=require(_0x5578('0x6'));var rimraf=require(_0x5578('0x7'));var config=require(_0x5578('0x8'));var attributes=require(_0x5578('0x9'));module[_0x5578('0xa')]=function(_0x35a1f4,_0x1a9d73){return _0x35a1f4[_0x5578('0xb')](_0x5578('0xc'),attributes,{'tableName':'report_agent','paranoid':![],'indexes':[{'fields':[_0x5578('0xd'),_0x5578('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdd0c=['./voiceAgentReport.attributes','exports','define','VoiceAgentReport','report_agent','uniqueid','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment'];(function(_0x18d226,_0x54e41e){var _0x870d16=function(_0x1b9eac){while(--_0x1b9eac){_0x18d226['push'](_0x18d226['shift']());}};_0x870d16(++_0x54e41e);}(_0xdd0c,0x165));var _0xcdd0=function(_0x455cd7,_0x1b80e4){_0x455cd7=_0x455cd7-0x0;var _0x471ccc=_0xdd0c[_0x455cd7];return _0x471ccc;};'use strict';var _=require('lodash');var util=require(_0xcdd0('0x0'));var logger=require(_0xcdd0('0x1'))(_0xcdd0('0x2'));var moment=require('moment');var BPromise=require(_0xcdd0('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcdd0('0x4'));var rimraf=require(_0xcdd0('0x5'));var config=require(_0xcdd0('0x6'));var attributes=require(_0xcdd0('0x7'));module[_0xcdd0('0x8')]=function(_0x5ae472,_0x2b33fc){return _0x5ae472[_0xcdd0('0x9')](_0xcdd0('0xa'),attributes,{'tableName':_0xcdd0('0xb'),'paranoid':![],'indexes':[{'fields':[_0xcdd0('0xc'),'destuniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 9367df1..942132a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff69=['VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','CreateVoiceAgentReport','create','body','options','raw','UpdateVoiceAgentReport','update','attributes','lodash','util','moment','bluebird','randomstring','../../config/logger','jayson/promise','http','request','then','info','VoiceAgentReport,\x20%s,\x20%s','debug'];(function(_0x306e30,_0x107fe3){var _0x247281=function(_0x2930a9){while(--_0x2930a9){_0x306e30['push'](_0x306e30['shift']());}};_0x247281(++_0x107fe3);}(_0xff69,0x189));var _0x9ff6=function(_0x5ad67c,_0x144860){_0x5ad67c=_0x5ad67c-0x0;var _0xccce2e=_0xff69[_0x5ad67c];return _0xccce2e;};'use strict';var _=require(_0x9ff6('0x0'));var util=require(_0x9ff6('0x1'));var moment=require(_0x9ff6('0x2'));var BPromise=require(_0x9ff6('0x3'));var rs=require(_0x9ff6('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9ff6('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x9ff6('0x6'));var client=jayson['client'][_0x9ff6('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x272895,_0x2d24f4,_0x56c1d6){return new BPromise(function(_0x2b8c5c,_0x51a790){return client[_0x9ff6('0x8')](_0x272895,_0x56c1d6)[_0x9ff6('0x9')](function(_0x46eb2f){logger[_0x9ff6('0xa')](_0x9ff6('0xb'),_0x2d24f4,'request\x20sent');logger[_0x9ff6('0xc')](_0x9ff6('0xd'),_0x2d24f4,'request\x20sent',JSON[_0x9ff6('0xe')](_0x46eb2f));if(_0x46eb2f[_0x9ff6('0xf')]){if(_0x46eb2f[_0x9ff6('0xf')][_0x9ff6('0x10')]===0x1f4){logger[_0x9ff6('0xf')]('VoiceAgentReport,\x20%s,\x20%s',_0x2d24f4,_0x46eb2f[_0x9ff6('0xf')]['message']);return _0x51a790(_0x46eb2f['error']['message']);}logger['error'](_0x9ff6('0xb'),_0x2d24f4,_0x46eb2f[_0x9ff6('0xf')][_0x9ff6('0x11')]);return _0x2b8c5c(_0x46eb2f[_0x9ff6('0xf')][_0x9ff6('0x11')]);}else{logger[_0x9ff6('0xa')](_0x9ff6('0xb'),_0x2d24f4,_0x9ff6('0x12'));_0x2b8c5c(_0x46eb2f[_0x9ff6('0x13')]['message']);}})[_0x9ff6('0x14')](function(_0x154867){logger[_0x9ff6('0xf')](_0x9ff6('0xb'),_0x2d24f4,_0x154867);_0x51a790(_0x154867);});});}exports[_0x9ff6('0x15')]=function(_0x11d260){var _0x57adac=this;return new Promise(function(_0x1a20e6,_0x1fd43b){return db['VoiceAgentReport'][_0x9ff6('0x16')](_0x11d260[_0x9ff6('0x17')],{'raw':_0x11d260[_0x9ff6('0x18')]?_0x11d260[_0x9ff6('0x18')][_0x9ff6('0x19')]===undefined?!![]:![]:!![]})[_0x9ff6('0x9')](function(_0x56a5fc){logger[_0x9ff6('0xa')](_0x9ff6('0x15'),_0x11d260);logger[_0x9ff6('0xc')](_0x9ff6('0x15'),_0x11d260,JSON[_0x9ff6('0xe')](_0x56a5fc));_0x1a20e6(_0x56a5fc);})[_0x9ff6('0x14')](function(_0x5545ce){logger[_0x9ff6('0xf')](_0x9ff6('0x15'),_0x5545ce[_0x9ff6('0x11')],_0x11d260);_0x1fd43b(_0x57adac[_0x9ff6('0xf')](0x1f4,_0x5545ce['message']));});});};exports[_0x9ff6('0x1a')]=function(_0x1f75bc){var _0xf68c=this;return new Promise(function(_0x2f6f36,_0x1b377d){return db['VoiceAgentReport'][_0x9ff6('0x1b')](_0x1f75bc[_0x9ff6('0x17')],{'raw':_0x1f75bc[_0x9ff6('0x18')]?_0x1f75bc[_0x9ff6('0x18')][_0x9ff6('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1f75bc[_0x9ff6('0x18')]?_0x1f75bc[_0x9ff6('0x18')]['where']||null:null,'attributes':_0x1f75bc[_0x9ff6('0x18')]?_0x1f75bc['options'][_0x9ff6('0x1c')]||null:null,'limit':_0x1f75bc[_0x9ff6('0x18')]?_0x1f75bc[_0x9ff6('0x18')]['limit']||null:null})['then'](function(_0x53d398){logger[_0x9ff6('0xa')](_0x9ff6('0x1a'),_0x1f75bc);logger['debug']('UpdateVoiceAgentReport',_0x1f75bc,JSON['stringify'](_0x53d398));_0x2f6f36(_0x53d398);})[_0x9ff6('0x14')](function(_0x386014){logger[_0x9ff6('0xf')]('UpdateVoiceAgentReport',_0x386014[_0x9ff6('0x11')],_0x1f75bc);_0x1b377d(_0xf68c[_0x9ff6('0xf')](0x1f4,_0x386014[_0x9ff6('0x11')]));});});};
\ No newline at end of file
+var _0x832d=['info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','raw','UpdateVoiceAgentReport','update','where','attributes','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then'];(function(_0x3136e1,_0x21a971){var _0x56a7fa=function(_0xd10035){while(--_0xd10035){_0x3136e1['push'](_0x3136e1['shift']());}};_0x56a7fa(++_0x21a971);}(_0x832d,0x9d));var _0xd832=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x832d[_0x501510];return _0x1e6ee5;};'use strict';var _=require('lodash');var util=require(_0xd832('0x0'));var moment=require(_0xd832('0x1'));var BPromise=require(_0xd832('0x2'));var rs=require(_0xd832('0x3'));var fs=require('fs');var Redis=require(_0xd832('0x4'));var db=require(_0xd832('0x5'))['db'];var utils=require(_0xd832('0x6'));var logger=require('../../config/logger')(_0xd832('0x7'));var config=require(_0xd832('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd832('0x9')][_0xd832('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xb5bf9d,_0x3604c4,_0x5ca61b){return new BPromise(function(_0x859a06,_0xeeb4cd){return client[_0xd832('0xb')](_0xb5bf9d,_0x5ca61b)[_0xd832('0xc')](function(_0x5db97c){logger[_0xd832('0xd')](_0xd832('0xe'),_0x3604c4,_0xd832('0xf'));logger[_0xd832('0x10')](_0xd832('0x11'),_0x3604c4,_0xd832('0xf'),JSON[_0xd832('0x12')](_0x5db97c));if(_0x5db97c['error']){if(_0x5db97c['error'][_0xd832('0x13')]===0x1f4){logger[_0xd832('0x14')](_0xd832('0xe'),_0x3604c4,_0x5db97c['error']['message']);return _0xeeb4cd(_0x5db97c['error'][_0xd832('0x15')]);}logger['error'](_0xd832('0xe'),_0x3604c4,_0x5db97c[_0xd832('0x14')][_0xd832('0x15')]);return _0x859a06(_0x5db97c[_0xd832('0x14')][_0xd832('0x15')]);}else{logger[_0xd832('0xd')](_0xd832('0xe'),_0x3604c4,_0xd832('0xf'));_0x859a06(_0x5db97c[_0xd832('0x16')][_0xd832('0x15')]);}})[_0xd832('0x17')](function(_0x1c589c){logger[_0xd832('0x14')]('VoiceAgentReport,\x20%s,\x20%s',_0x3604c4,_0x1c589c);_0xeeb4cd(_0x1c589c);});});}exports[_0xd832('0x18')]=function(_0x287732){var _0x24c056=this;return new Promise(function(_0x226540,_0x3f62a3){return db[_0xd832('0x19')][_0xd832('0x1a')](_0x287732[_0xd832('0x1b')],{'raw':_0x287732[_0xd832('0x1c')]?_0x287732[_0xd832('0x1c')][_0xd832('0x1d')]===undefined?!![]:![]:!![]})[_0xd832('0xc')](function(_0x296f8d){logger['info']('CreateVoiceAgentReport',_0x287732);logger['debug']('CreateVoiceAgentReport',_0x287732,JSON[_0xd832('0x12')](_0x296f8d));_0x226540(_0x296f8d);})[_0xd832('0x17')](function(_0x20ce47){logger[_0xd832('0x14')]('CreateVoiceAgentReport',_0x20ce47['message'],_0x287732);_0x3f62a3(_0x24c056[_0xd832('0x14')](0x1f4,_0x20ce47[_0xd832('0x15')]));});});};exports[_0xd832('0x1e')]=function(_0x2fcfc9){var _0xff310a=this;return new Promise(function(_0x3c99d4,_0x2e7437){return db['VoiceAgentReport'][_0xd832('0x1f')](_0x2fcfc9[_0xd832('0x1b')],{'raw':_0x2fcfc9[_0xd832('0x1c')]?_0x2fcfc9['options'][_0xd832('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2fcfc9['options']?_0x2fcfc9[_0xd832('0x1c')][_0xd832('0x20')]||null:null,'attributes':_0x2fcfc9[_0xd832('0x1c')]?_0x2fcfc9['options'][_0xd832('0x21')]||null:null,'limit':_0x2fcfc9[_0xd832('0x1c')]?_0x2fcfc9[_0xd832('0x1c')]['limit']||null:null})['then'](function(_0x1efef6){logger['info'](_0xd832('0x1e'),_0x2fcfc9);logger['debug'](_0xd832('0x1e'),_0x2fcfc9,JSON[_0xd832('0x12')](_0x1efef6));_0x3c99d4(_0x1efef6);})['catch'](function(_0x5d68d9){logger[_0xd832('0x14')](_0xd832('0x1e'),_0x5d68d9[_0xd832('0x15')],_0x2fcfc9);_0x2e7437(_0xff310a['error'](0x1f4,_0x5d68d9[_0xd832('0x15')]));});});};
\ No newline at end of file
index 3dcea1b..b605ff0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['update','delete','destroy','exports','multer','util','express','../../components/auth/service','../../components/interaction/service','../../config/environment','index','/describe','describe','isAuthenticated','show','post','create','put','/:id'];(function(_0x2fb16e,_0x161667){var _0x5e0882=function(_0x4ed56d){while(--_0x4ed56d){_0x2fb16e['push'](_0x2fb16e['shift']());}};_0x5e0882(++_0x161667);}(_0x4b84,0x1cc));var _0x44b8=function(_0x4d521e,_0x58ba39){_0x4d521e=_0x4d521e-0x0;var _0x3beb42=_0x4b84[_0x4d521e];return _0x3beb42;};'use strict';var multer=require(_0x44b8('0x0'));var util=require(_0x44b8('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x44b8('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x44b8('0x3'));var interaction=require(_0x44b8('0x4'));var config=require(_0x44b8('0x5'));var controller=require('./voiceCallReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x44b8('0x6')]);router['get'](_0x44b8('0x7'),auth['isAuthenticated'](),controller[_0x44b8('0x8')]);router['get']('/:id',auth[_0x44b8('0x9')](),controller[_0x44b8('0xa')]);router[_0x44b8('0xb')]('/',auth['isAuthenticated'](),controller[_0x44b8('0xc')]);router[_0x44b8('0xd')](_0x44b8('0xe'),auth[_0x44b8('0x9')](),controller[_0x44b8('0xf')]);router[_0x44b8('0x10')](_0x44b8('0xe'),auth['isAuthenticated'](),controller[_0x44b8('0x11')]);module[_0x44b8('0x12')]=router;
\ No newline at end of file
+var _0x84ab=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./voiceCallReport.controller','get','/describe','describe','isAuthenticated','post','create','update','delete','/:id','destroy','multer'];(function(_0x2cde74,_0x55cf68){var _0x39ee49=function(_0x1e312e){while(--_0x1e312e){_0x2cde74['push'](_0x2cde74['shift']());}};_0x39ee49(++_0x55cf68);}(_0x84ab,0x12f));var _0xb84a=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x84ab[_0x4d8ed9];return _0x1e2140;};'use strict';var multer=require(_0xb84a('0x0'));var util=require(_0xb84a('0x1'));var path=require(_0xb84a('0x2'));var timeout=require(_0xb84a('0x3'));var express=require(_0xb84a('0x4'));var router=express['Router']();var fs_extra=require(_0xb84a('0x5'));var auth=require(_0xb84a('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xb84a('0x7'));var controller=require(_0xb84a('0x8'));router[_0xb84a('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xb84a('0xa'),auth['isAuthenticated'](),controller[_0xb84a('0xb')]);router[_0xb84a('0x9')]('/:id',auth[_0xb84a('0xc')](),controller['show']);router[_0xb84a('0xd')]('/',auth[_0xb84a('0xc')](),controller[_0xb84a('0xe')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xb84a('0xf')]);router[_0xb84a('0x10')](_0xb84a('0x11'),auth[_0xb84a('0xc')](),controller[_0xb84a('0x12')]);module['exports']=router;
\ No newline at end of file
index a46e70c..83d691f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae41=['dialer','TEXT','DATE','INTEGER','sequelize','exports','STRING','ENUM','inbound-fax'];(function(_0x5d5054,_0x5e97f2){var _0x32dbb6=function(_0x1ec1fa){while(--_0x1ec1fa){_0x5d5054['push'](_0x5d5054['shift']());}};_0x32dbb6(++_0x5e97f2);}(_0xae41,0xaf));var _0x1ae4=function(_0x19bea9,_0x388b72){_0x19bea9=_0x19bea9-0x0;var _0x408219=_0xae41[_0x19bea9];return _0x408219;};'use strict';var Sequelize=require(_0x1ae4('0x0'));module[_0x1ae4('0x1')]={'uniqueid':{'type':Sequelize[_0x1ae4('0x2')]},'type':{'type':Sequelize[_0x1ae4('0x3')]('inbound','internal','outbound',_0x1ae4('0x4'),'outbound-fax',_0x1ae4('0x5'))},'tag':{'type':Sequelize[_0x1ae4('0x2')]},'accountcode':{'type':Sequelize['STRING']},'source':{'type':Sequelize[_0x1ae4('0x2')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0x1ae4('0x2')]},'callerid':{'type':Sequelize[_0x1ae4('0x2')]},'channel':{'type':Sequelize[_0x1ae4('0x2')]},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize[_0x1ae4('0x2')]},'lastdata':{'type':Sequelize[_0x1ae4('0x6')]},'starttime':{'type':Sequelize[_0x1ae4('0x7')]},'systemanswertime':{'type':Sequelize[_0x1ae4('0x7')]},'answertime':{'type':Sequelize[_0x1ae4('0x7')]},'endtime':{'type':Sequelize['DATE']},'duration':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x1ae4('0x2')]},'amaflags':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0x1ae4('0x2')]},'userDisposition':{'type':Sequelize[_0x1ae4('0x2')]},'userSecondDisposition':{'type':Sequelize[_0x1ae4('0x2')]},'userThirdDisposition':{'type':Sequelize[_0x1ae4('0x2')]},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x1ae4('0x2')]},'routeid':{'type':Sequelize[_0x1ae4('0x8')]},'sipcallid':{'type':Sequelize[_0x1ae4('0x2')]}};
\ No newline at end of file
+var _0x2bab=['DATE','INTEGER','sequelize','exports','STRING','ENUM','internal','outbound','inbound-fax','dialer','TEXT'];(function(_0x56d0b2,_0x2f7c9e){var _0x37e421=function(_0x23b3a9){while(--_0x23b3a9){_0x56d0b2['push'](_0x56d0b2['shift']());}};_0x37e421(++_0x2f7c9e);}(_0x2bab,0x1ba));var _0xb2ba=function(_0x21da4f,_0x2b9f13){_0x21da4f=_0x21da4f-0x0;var _0x136e73=_0x2bab[_0x21da4f];return _0x136e73;};'use strict';var Sequelize=require(_0xb2ba('0x0'));module[_0xb2ba('0x1')]={'uniqueid':{'type':Sequelize[_0xb2ba('0x2')]},'type':{'type':Sequelize[_0xb2ba('0x3')]('inbound',_0xb2ba('0x4'),_0xb2ba('0x5'),_0xb2ba('0x6'),'outbound-fax',_0xb2ba('0x7'))},'tag':{'type':Sequelize[_0xb2ba('0x2')]},'accountcode':{'type':Sequelize['STRING']},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0xb2ba('0x2')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xb2ba('0x2')]},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0xb2ba('0x8')]},'starttime':{'type':Sequelize[_0xb2ba('0x9')]},'systemanswertime':{'type':Sequelize[_0xb2ba('0x9')]},'answertime':{'type':Sequelize[_0xb2ba('0x9')]},'endtime':{'type':Sequelize['DATE']},'duration':{'type':Sequelize[_0xb2ba('0xa')]},'billableseconds':{'type':Sequelize[_0xb2ba('0xa')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0xb2ba('0x2')]},'userfield':{'type':Sequelize[_0xb2ba('0x2')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0xb2ba('0x2')]},'userThirdDisposition':{'type':Sequelize[_0xb2ba('0x2')]},'note':{'type':Sequelize[_0xb2ba('0x2')]},'prefix':{'type':Sequelize['STRING']},'routeid':{'type':Sequelize[_0xb2ba('0xa')]},'sipcallid':{'type':Sequelize[_0xb2ba('0x2')]}};
\ No newline at end of file
index e4716e9..b530144 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceCallReport','fieldName','type','key','query','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filters','filter','merge','where','options','alias','User','rows','catch','show','params','keys','rawAttributes','includeAll','include','create','body','find','describe','uniqueid','user','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2032,0xd9));var _0x2203=function(_0x25e1e3,_0x25ee77){_0x25e1e3=_0x25e1e3-0x0;var _0x461671=_0x2032[_0x25e1e3];return _0x461671;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2203('0x0'));var zipdir=require(_0x2203('0x1'));var jsonpatch=require(_0x2203('0x2'));var rp=require('request-promise');var moment=require(_0x2203('0x3'));var BPromise=require(_0x2203('0x4'));var Mustache=require('mustache');var util=require(_0x2203('0x5'));var path=require(_0x2203('0x6'));var sox=require(_0x2203('0x7'));var csv=require(_0x2203('0x8'));var ejs=require(_0x2203('0x9'));var fs=require('fs');var fs_extra=require(_0x2203('0xa'));var _=require(_0x2203('0xb'));var squel=require(_0x2203('0xc'));var crypto=require(_0x2203('0xd'));var jsforce=require(_0x2203('0xe'));var deskjs=require(_0x2203('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2203('0x10'));var Redis=require('ioredis');var authService=require(_0x2203('0x11'));var qs=require(_0x2203('0x12'));var as=require(_0x2203('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2203('0x14'))('api');var utils=require(_0x2203('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2203('0x16'));var db=require(_0x2203('0x17'))['db'];function respondWithStatusCode(_0x4b9376,_0x583bc7){_0x583bc7=_0x583bc7||0xcc;return function(_0x585c76){if(_0x585c76){return _0x4b9376['sendStatus'](_0x583bc7);}return _0x4b9376['status'](_0x583bc7)[_0x2203('0x18')]();};}function respondWithResult(_0x538b30,_0x592e47){_0x592e47=_0x592e47||0xc8;return function(_0x21a3af){if(_0x21a3af){return _0x538b30[_0x2203('0x19')](_0x592e47)[_0x2203('0x1a')](_0x21a3af);}};}function respondWithFilteredResult(_0x41af85,_0x226209){return function(_0x3fe0a8){if(_0x3fe0a8){var _0x2c36e6=typeof _0x226209[_0x2203('0x1b')]===_0x2203('0x1c')&&typeof _0x226209[_0x2203('0x1d')]==='undefined';var _0x280eda=_0x3fe0a8[_0x2203('0x1e')];var _0x4893ff=_0x2c36e6?0x0:_0x226209[_0x2203('0x1b')];var _0x8906e1=_0x2c36e6?_0x3fe0a8['count']:_0x226209[_0x2203('0x1b')]+_0x226209['limit'];var _0x2904ba;if(_0x8906e1>=_0x280eda){_0x8906e1=_0x280eda;_0x2904ba=0xc8;}else{_0x2904ba=0xce;}_0x41af85[_0x2203('0x19')](_0x2904ba);return _0x41af85[_0x2203('0x1f')](_0x2203('0x20'),_0x4893ff+'-'+_0x8906e1+'/'+_0x280eda)[_0x2203('0x1a')](_0x3fe0a8);}return null;};}function patchUpdates(_0x449039){return function(_0x538c23){try{jsonpatch[_0x2203('0x21')](_0x538c23,_0x449039,!![]);}catch(_0x50822b){return BPromise['reject'](_0x50822b);}return _0x538c23[_0x2203('0x22')]();};}function saveUpdates(_0x496d82,_0x3b8ef9){return function(_0x5bfe61){if(_0x5bfe61){return _0x5bfe61['update'](_0x496d82)[_0x2203('0x23')](function(_0x5e29cd){return _0x5e29cd;});}return null;};}function removeEntity(_0x5c8da9,_0x226374){return function(_0x2718f5){if(_0x2718f5){return _0x2718f5[_0x2203('0x24')]()[_0x2203('0x23')](function(){_0x5c8da9[_0x2203('0x19')](0xcc)[_0x2203('0x18')]();});}};}function handleEntityNotFound(_0x49c12,_0x250349){return function(_0x576378){if(!_0x576378){_0x49c12[_0x2203('0x25')](0x194);}return _0x576378;};}function handleError(_0x36b958,_0x39a11a){_0x39a11a=_0x39a11a||0x1f4;return function(_0x5f11bf){logger[_0x2203('0x26')](_0x5f11bf[_0x2203('0x27')]);if(_0x5f11bf['name']){delete _0x5f11bf[_0x2203('0x28')];}_0x36b958[_0x2203('0x19')](_0x39a11a)[_0x2203('0x29')](_0x5f11bf);};}exports[_0x2203('0x2a')]=function(_0x28ae02,_0x1df508){var _0x9c53f={},_0x5a95c1={},_0x34b8ba={'count':0x0,'rows':[]};var _0x616ed8=_[_0x2203('0x2b')](db[_0x2203('0x2c')]['rawAttributes'],function(_0x3a8e23){return{'name':_0x3a8e23[_0x2203('0x2d')],'type':_0x3a8e23[_0x2203('0x2e')][_0x2203('0x2f')]};});_0x5a95c1['model']=_[_0x2203('0x2b')](_0x616ed8,_0x2203('0x28'));_0x5a95c1['query']=_['keys'](_0x28ae02[_0x2203('0x30')]);_0x5a95c1['filters']=_['intersection'](_0x5a95c1[_0x2203('0x31')],_0x5a95c1[_0x2203('0x30')]);_0x9c53f[_0x2203('0x32')]=_[_0x2203('0x33')](_0x5a95c1[_0x2203('0x31')],qs['fields'](_0x28ae02[_0x2203('0x30')][_0x2203('0x34')]));_0x9c53f['attributes']=_0x9c53f[_0x2203('0x32')][_0x2203('0x35')]?_0x9c53f[_0x2203('0x32')]:_0x5a95c1[_0x2203('0x31')];if(!_0x28ae02[_0x2203('0x30')][_0x2203('0x36')](_0x2203('0x37'))){_0x9c53f[_0x2203('0x1d')]=qs[_0x2203('0x1d')](_0x28ae02['query'][_0x2203('0x1d')]);_0x9c53f[_0x2203('0x1b')]=qs['offset'](_0x28ae02['query'][_0x2203('0x1b')]);}_0x9c53f['order']=qs[_0x2203('0x38')](_0x28ae02[_0x2203('0x30')][_0x2203('0x38')]);_0x9c53f['where']=qs['filters'](_[_0x2203('0x39')](_0x28ae02['query'],_0x5a95c1[_0x2203('0x3a')]),_0x616ed8);if(_0x28ae02['query'][_0x2203('0x3b')]){_0x9c53f['where']=_[_0x2203('0x3c')](_0x9c53f[_0x2203('0x3d')],{'$or':_[_0x2203('0x2b')](_0x616ed8,function(_0x40a793){if(_0x40a793[_0x2203('0x2e')]!=='VIRTUAL'){var _0x5f1561={};_0x5f1561[_0x40a793['name']]={'$like':'%'+_0x28ae02[_0x2203('0x30')][_0x2203('0x3b')]+'%'};return _0x5f1561;}})});}_0x9c53f=_[_0x2203('0x3c')]({},_0x9c53f,_0x28ae02[_0x2203('0x3e')]);var _0x3283fb={'where':_0x9c53f[_0x2203('0x3d')]};return db[_0x2203('0x2c')]['count'](_0x3283fb)[_0x2203('0x23')](function(_0x1b12c3){_0x34b8ba[_0x2203('0x1e')]=_0x1b12c3;if(_0x28ae02[_0x2203('0x30')]['includeAll']){_0x9c53f['include']=[{'attributes':['id',_0x2203('0x28'),'fullname',_0x2203('0x3f')],'model':db[_0x2203('0x40')],'as':_0x2203('0x40')}];}return db['VoiceCallReport']['findAll'](_0x9c53f);})[_0x2203('0x23')](function(_0x3739f6){_0x34b8ba[_0x2203('0x41')]=_0x3739f6;return _0x34b8ba;})[_0x2203('0x23')](respondWithFilteredResult(_0x1df508,_0x9c53f))[_0x2203('0x42')](handleError(_0x1df508,null));};exports[_0x2203('0x43')]=function(_0x5cd573,_0x15d3b6){var _0x165a3f={'raw':!![],'where':{'id':_0x5cd573[_0x2203('0x44')]['id']}},_0x3a866c={};_0x3a866c[_0x2203('0x31')]=_[_0x2203('0x45')](db[_0x2203('0x2c')][_0x2203('0x46')]);_0x3a866c[_0x2203('0x30')]=_[_0x2203('0x45')](_0x5cd573['query']);_0x3a866c[_0x2203('0x3a')]=_[_0x2203('0x33')](_0x3a866c[_0x2203('0x31')],_0x3a866c[_0x2203('0x30')]);_0x165a3f['attributes']=_['intersection'](_0x3a866c[_0x2203('0x31')],qs['fields'](_0x5cd573[_0x2203('0x30')][_0x2203('0x34')]));_0x165a3f[_0x2203('0x32')]=_0x165a3f[_0x2203('0x32')]['length']?_0x165a3f[_0x2203('0x32')]:_0x3a866c[_0x2203('0x31')];if(_0x5cd573['query'][_0x2203('0x47')]){_0x165a3f[_0x2203('0x48')]=[{'all':!![]}];}_0x165a3f=_[_0x2203('0x3c')]({},_0x165a3f,_0x5cd573[_0x2203('0x3e')]);return db['VoiceCallReport']['find'](_0x165a3f)[_0x2203('0x23')](handleEntityNotFound(_0x15d3b6,null))['then'](respondWithResult(_0x15d3b6,null))['catch'](handleError(_0x15d3b6,null));};exports[_0x2203('0x49')]=function(_0x33b7b5,_0x1a2665){return db['VoiceCallReport']['create'](_0x33b7b5[_0x2203('0x4a')],{})[_0x2203('0x23')](respondWithResult(_0x1a2665,0xc9))[_0x2203('0x42')](handleError(_0x1a2665,null));};exports[_0x2203('0x24')]=function(_0x225b0e,_0x21fd78){return db['VoiceCallReport'][_0x2203('0x4b')]({'where':{'id':_0x225b0e['params']['id']}})[_0x2203('0x23')](handleEntityNotFound(_0x21fd78,null))[_0x2203('0x23')](removeEntity(_0x21fd78,null))[_0x2203('0x42')](handleError(_0x21fd78,null));};exports[_0x2203('0x4c')]=function(_0x58b9bb,_0x506795){return db[_0x2203('0x2c')][_0x2203('0x4c')]()[_0x2203('0x23')](respondWithResult(_0x506795,null))[_0x2203('0x42')](handleError(_0x506795,null));};exports['update']=function(_0x4de47a,_0x49999a){if(_0x4de47a[_0x2203('0x4a')][_0x2203('0x4d')]){delete _0x4de47a['body'][_0x2203('0x4d')];}return db[_0x2203('0x2c')]['find']({'where':{'uniqueid':_0x4de47a[_0x2203('0x44')]['id'],'UserId':{'$or':[null,_0x4de47a[_0x2203('0x4e')]['id']]}}})[_0x2203('0x23')](handleEntityNotFound(_0x49999a,null))[_0x2203('0x23')](saveUpdates(_0x4de47a['body'],null))[_0x2203('0x23')](respondWithResult(_0x49999a,null))['catch'](handleError(_0x49999a,null));};
\ No newline at end of file
+var _0x2032=['../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceCallReport','fieldName','type','key','query','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filters','filter','merge','where','options','alias','User','rows','catch','show','params','keys','rawAttributes','includeAll','include','create','body','find','describe','uniqueid','user','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2032,0xd9));var _0x2203=function(_0x44c735,_0x4ec33e){_0x44c735=_0x44c735-0x0;var _0x31e6f4=_0x2032[_0x44c735];return _0x31e6f4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2203('0x0'));var zipdir=require(_0x2203('0x1'));var jsonpatch=require(_0x2203('0x2'));var rp=require('request-promise');var moment=require(_0x2203('0x3'));var BPromise=require(_0x2203('0x4'));var Mustache=require('mustache');var util=require(_0x2203('0x5'));var path=require(_0x2203('0x6'));var sox=require(_0x2203('0x7'));var csv=require(_0x2203('0x8'));var ejs=require(_0x2203('0x9'));var fs=require('fs');var fs_extra=require(_0x2203('0xa'));var _=require(_0x2203('0xb'));var squel=require(_0x2203('0xc'));var crypto=require(_0x2203('0xd'));var jsforce=require(_0x2203('0xe'));var deskjs=require(_0x2203('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2203('0x10'));var Redis=require('ioredis');var authService=require(_0x2203('0x11'));var qs=require(_0x2203('0x12'));var as=require(_0x2203('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2203('0x14'))('api');var utils=require(_0x2203('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2203('0x16'));var db=require(_0x2203('0x17'))['db'];function respondWithStatusCode(_0x4b9376,_0x583bc7){_0x583bc7=_0x583bc7||0xcc;return function(_0x585c76){if(_0x585c76){return _0x4b9376['sendStatus'](_0x583bc7);}return _0x4b9376['status'](_0x583bc7)[_0x2203('0x18')]();};}function respondWithResult(_0x538b30,_0x592e47){_0x592e47=_0x592e47||0xc8;return function(_0x21a3af){if(_0x21a3af){return _0x538b30[_0x2203('0x19')](_0x592e47)[_0x2203('0x1a')](_0x21a3af);}};}function respondWithFilteredResult(_0x41af85,_0x226209){return function(_0x3fe0a8){if(_0x3fe0a8){var _0x2c36e6=typeof _0x226209[_0x2203('0x1b')]===_0x2203('0x1c')&&typeof _0x226209[_0x2203('0x1d')]==='undefined';var _0x280eda=_0x3fe0a8[_0x2203('0x1e')];var _0x4893ff=_0x2c36e6?0x0:_0x226209[_0x2203('0x1b')];var _0x8906e1=_0x2c36e6?_0x3fe0a8['count']:_0x226209[_0x2203('0x1b')]+_0x226209['limit'];var _0x2904ba;if(_0x8906e1>=_0x280eda){_0x8906e1=_0x280eda;_0x2904ba=0xc8;}else{_0x2904ba=0xce;}_0x41af85[_0x2203('0x19')](_0x2904ba);return _0x41af85[_0x2203('0x1f')](_0x2203('0x20'),_0x4893ff+'-'+_0x8906e1+'/'+_0x280eda)[_0x2203('0x1a')](_0x3fe0a8);}return null;};}function patchUpdates(_0x449039){return function(_0x538c23){try{jsonpatch[_0x2203('0x21')](_0x538c23,_0x449039,!![]);}catch(_0x50822b){return BPromise['reject'](_0x50822b);}return _0x538c23[_0x2203('0x22')]();};}function saveUpdates(_0x496d82,_0x3b8ef9){return function(_0x5bfe61){if(_0x5bfe61){return _0x5bfe61['update'](_0x496d82)[_0x2203('0x23')](function(_0x5e29cd){return _0x5e29cd;});}return null;};}function removeEntity(_0x5c8da9,_0x226374){return function(_0x2718f5){if(_0x2718f5){return _0x2718f5[_0x2203('0x24')]()[_0x2203('0x23')](function(){_0x5c8da9[_0x2203('0x19')](0xcc)[_0x2203('0x18')]();});}};}function handleEntityNotFound(_0x49c12,_0x250349){return function(_0x576378){if(!_0x576378){_0x49c12[_0x2203('0x25')](0x194);}return _0x576378;};}function handleError(_0x36b958,_0x39a11a){_0x39a11a=_0x39a11a||0x1f4;return function(_0x5f11bf){logger[_0x2203('0x26')](_0x5f11bf[_0x2203('0x27')]);if(_0x5f11bf['name']){delete _0x5f11bf[_0x2203('0x28')];}_0x36b958[_0x2203('0x19')](_0x39a11a)[_0x2203('0x29')](_0x5f11bf);};}exports[_0x2203('0x2a')]=function(_0x28ae02,_0x1df508){var _0x9c53f={},_0x5a95c1={},_0x34b8ba={'count':0x0,'rows':[]};var _0x616ed8=_[_0x2203('0x2b')](db[_0x2203('0x2c')]['rawAttributes'],function(_0x3a8e23){return{'name':_0x3a8e23[_0x2203('0x2d')],'type':_0x3a8e23[_0x2203('0x2e')][_0x2203('0x2f')]};});_0x5a95c1['model']=_[_0x2203('0x2b')](_0x616ed8,_0x2203('0x28'));_0x5a95c1['query']=_['keys'](_0x28ae02[_0x2203('0x30')]);_0x5a95c1['filters']=_['intersection'](_0x5a95c1[_0x2203('0x31')],_0x5a95c1[_0x2203('0x30')]);_0x9c53f[_0x2203('0x32')]=_[_0x2203('0x33')](_0x5a95c1[_0x2203('0x31')],qs['fields'](_0x28ae02[_0x2203('0x30')][_0x2203('0x34')]));_0x9c53f['attributes']=_0x9c53f[_0x2203('0x32')][_0x2203('0x35')]?_0x9c53f[_0x2203('0x32')]:_0x5a95c1[_0x2203('0x31')];if(!_0x28ae02[_0x2203('0x30')][_0x2203('0x36')](_0x2203('0x37'))){_0x9c53f[_0x2203('0x1d')]=qs[_0x2203('0x1d')](_0x28ae02['query'][_0x2203('0x1d')]);_0x9c53f[_0x2203('0x1b')]=qs['offset'](_0x28ae02['query'][_0x2203('0x1b')]);}_0x9c53f['order']=qs[_0x2203('0x38')](_0x28ae02[_0x2203('0x30')][_0x2203('0x38')]);_0x9c53f['where']=qs['filters'](_[_0x2203('0x39')](_0x28ae02['query'],_0x5a95c1[_0x2203('0x3a')]),_0x616ed8);if(_0x28ae02['query'][_0x2203('0x3b')]){_0x9c53f['where']=_[_0x2203('0x3c')](_0x9c53f[_0x2203('0x3d')],{'$or':_[_0x2203('0x2b')](_0x616ed8,function(_0x40a793){if(_0x40a793[_0x2203('0x2e')]!=='VIRTUAL'){var _0x5f1561={};_0x5f1561[_0x40a793['name']]={'$like':'%'+_0x28ae02[_0x2203('0x30')][_0x2203('0x3b')]+'%'};return _0x5f1561;}})});}_0x9c53f=_[_0x2203('0x3c')]({},_0x9c53f,_0x28ae02[_0x2203('0x3e')]);var _0x3283fb={'where':_0x9c53f[_0x2203('0x3d')]};return db[_0x2203('0x2c')]['count'](_0x3283fb)[_0x2203('0x23')](function(_0x1b12c3){_0x34b8ba[_0x2203('0x1e')]=_0x1b12c3;if(_0x28ae02[_0x2203('0x30')]['includeAll']){_0x9c53f['include']=[{'attributes':['id',_0x2203('0x28'),'fullname',_0x2203('0x3f')],'model':db[_0x2203('0x40')],'as':_0x2203('0x40')}];}return db['VoiceCallReport']['findAll'](_0x9c53f);})[_0x2203('0x23')](function(_0x3739f6){_0x34b8ba[_0x2203('0x41')]=_0x3739f6;return _0x34b8ba;})[_0x2203('0x23')](respondWithFilteredResult(_0x1df508,_0x9c53f))[_0x2203('0x42')](handleError(_0x1df508,null));};exports[_0x2203('0x43')]=function(_0x5cd573,_0x15d3b6){var _0x165a3f={'raw':!![],'where':{'id':_0x5cd573[_0x2203('0x44')]['id']}},_0x3a866c={};_0x3a866c[_0x2203('0x31')]=_[_0x2203('0x45')](db[_0x2203('0x2c')][_0x2203('0x46')]);_0x3a866c[_0x2203('0x30')]=_[_0x2203('0x45')](_0x5cd573['query']);_0x3a866c[_0x2203('0x3a')]=_[_0x2203('0x33')](_0x3a866c[_0x2203('0x31')],_0x3a866c[_0x2203('0x30')]);_0x165a3f['attributes']=_['intersection'](_0x3a866c[_0x2203('0x31')],qs['fields'](_0x5cd573[_0x2203('0x30')][_0x2203('0x34')]));_0x165a3f[_0x2203('0x32')]=_0x165a3f[_0x2203('0x32')]['length']?_0x165a3f[_0x2203('0x32')]:_0x3a866c[_0x2203('0x31')];if(_0x5cd573['query'][_0x2203('0x47')]){_0x165a3f[_0x2203('0x48')]=[{'all':!![]}];}_0x165a3f=_[_0x2203('0x3c')]({},_0x165a3f,_0x5cd573[_0x2203('0x3e')]);return db['VoiceCallReport']['find'](_0x165a3f)[_0x2203('0x23')](handleEntityNotFound(_0x15d3b6,null))['then'](respondWithResult(_0x15d3b6,null))['catch'](handleError(_0x15d3b6,null));};exports[_0x2203('0x49')]=function(_0x33b7b5,_0x1a2665){return db['VoiceCallReport']['create'](_0x33b7b5[_0x2203('0x4a')],{})[_0x2203('0x23')](respondWithResult(_0x1a2665,0xc9))[_0x2203('0x42')](handleError(_0x1a2665,null));};exports[_0x2203('0x24')]=function(_0x225b0e,_0x21fd78){return db['VoiceCallReport'][_0x2203('0x4b')]({'where':{'id':_0x225b0e['params']['id']}})[_0x2203('0x23')](handleEntityNotFound(_0x21fd78,null))[_0x2203('0x23')](removeEntity(_0x21fd78,null))[_0x2203('0x42')](handleError(_0x21fd78,null));};exports[_0x2203('0x4c')]=function(_0x58b9bb,_0x506795){return db[_0x2203('0x2c')][_0x2203('0x4c')]()[_0x2203('0x23')](respondWithResult(_0x506795,null))[_0x2203('0x42')](handleError(_0x506795,null));};exports['update']=function(_0x4de47a,_0x49999a){if(_0x4de47a[_0x2203('0x4a')][_0x2203('0x4d')]){delete _0x4de47a['body'][_0x2203('0x4d')];}return db[_0x2203('0x2c')]['find']({'where':{'uniqueid':_0x4de47a[_0x2203('0x44')]['id'],'UserId':{'$or':[null,_0x4de47a[_0x2203('0x4e')]['id']]}}})[_0x2203('0x23')](handleEntityNotFound(_0x49999a,null))[_0x2203('0x23')](saveUpdates(_0x4de47a['body'],null))[_0x2203('0x23')](respondWithResult(_0x49999a,null))['catch'](handleError(_0x49999a,null));};
\ No newline at end of file
index e8ccf1d..1cb7a32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48c3=['moment','bluebird','request-promise','../../config/environment','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call','uniqueid','../../config/logger'];(function(_0x19e1f6,_0x52d013){var _0x4b9242=function(_0x372dab){while(--_0x372dab){_0x19e1f6['push'](_0x19e1f6['shift']());}};_0x4b9242(++_0x52d013);}(_0x48c3,0x16a));var _0x348c=function(_0x29a74b,_0x148b86){_0x29a74b=_0x29a74b-0x0;var _0x310ce9=_0x48c3[_0x29a74b];return _0x310ce9;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x348c('0x0'))('api');var moment=require(_0x348c('0x1'));var BPromise=require(_0x348c('0x2'));var rp=require(_0x348c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x348c('0x4'));var attributes=require(_0x348c('0x5'));module[_0x348c('0x6')]=function(_0xb73007,_0xca8ae8){return _0xb73007[_0x348c('0x7')](_0x348c('0x8'),attributes,{'tableName':_0x348c('0x9'),'paranoid':![],'indexes':[{'fields':[_0x348c('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5c5f=['VoiceCallReport','report_call','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./voiceCallReport.attributes','exports','define'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5c5f,0x120));var _0xf5c5=function(_0x13f73c,_0x9a5352){_0x13f73c=_0x13f73c-0x0;var _0x19ada4=_0x5c5f[_0x13f73c];return _0x19ada4;};'use strict';var _=require(_0xf5c5('0x0'));var util=require(_0xf5c5('0x1'));var logger=require('../../config/logger')(_0xf5c5('0x2'));var moment=require(_0xf5c5('0x3'));var BPromise=require(_0xf5c5('0x4'));var rp=require(_0xf5c5('0x5'));var fs=require('fs');var path=require(_0xf5c5('0x6'));var rimraf=require(_0xf5c5('0x7'));var config=require('../../config/environment');var attributes=require(_0xf5c5('0x8'));module[_0xf5c5('0x9')]=function(_0x323036,_0x2c4dad){return _0x323036[_0xf5c5('0xa')](_0xf5c5('0xb'),attributes,{'tableName':_0xf5c5('0xc'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 4560d10..e51b114 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4bc=['http','request','info','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','VoiceCallReport,\x20%s,\x20%s','result','catch','GetVoiceCallReport','VoiceCallReport','options','attributes','limit','include','map','model','then','CreateVoiceCallReport','body','raw','update','UpdateVoiceCallReport','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x55d8c5,_0x10287a){var _0x225ae5=function(_0x2ba03a){while(--_0x2ba03a){_0x55d8c5['push'](_0x55d8c5['shift']());}};_0x225ae5(++_0x10287a);}(_0xa4bc,0x1d6));var _0xca4b=function(_0x5ecadc,_0x1cf9f1){_0x5ecadc=_0x5ecadc-0x0;var _0x565037=_0xa4bc[_0x5ecadc];return _0x565037;};'use strict';var _=require(_0xca4b('0x0'));var util=require('util');var moment=require(_0xca4b('0x1'));var BPromise=require(_0xca4b('0x2'));var rs=require(_0xca4b('0x3'));var fs=require('fs');var Redis=require(_0xca4b('0x4'));var db=require(_0xca4b('0x5'))['db'];var utils=require(_0xca4b('0x6'));var logger=require(_0xca4b('0x7'))('rpc');var config=require(_0xca4b('0x8'));var jayson=require(_0xca4b('0x9'));var client=jayson[_0xca4b('0xa')][_0xca4b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5ed222,_0x349cc5,_0x3fd4e2){return new BPromise(function(_0x39f74e,_0x29d031){return client[_0xca4b('0xc')](_0x5ed222,_0x3fd4e2)['then'](function(_0x4b0438){logger[_0xca4b('0xd')]('VoiceCallReport,\x20%s,\x20%s',_0x349cc5,'request\x20sent');logger[_0xca4b('0xe')](_0xca4b('0xf'),_0x349cc5,_0xca4b('0x10'),JSON[_0xca4b('0x11')](_0x4b0438));if(_0x4b0438['error']){if(_0x4b0438[_0xca4b('0x12')]['code']===0x1f4){logger['error']('VoiceCallReport,\x20%s,\x20%s',_0x349cc5,_0x4b0438[_0xca4b('0x12')]['message']);return _0x29d031(_0x4b0438[_0xca4b('0x12')][_0xca4b('0x13')]);}logger[_0xca4b('0x12')]('VoiceCallReport,\x20%s,\x20%s',_0x349cc5,_0x4b0438['error']['message']);return _0x39f74e(_0x4b0438['error'][_0xca4b('0x13')]);}else{logger['info'](_0xca4b('0x14'),_0x349cc5,_0xca4b('0x10'));_0x39f74e(_0x4b0438[_0xca4b('0x15')][_0xca4b('0x13')]);}})[_0xca4b('0x16')](function(_0x1033ce){logger[_0xca4b('0x12')](_0xca4b('0x14'),_0x349cc5,_0x1033ce);_0x29d031(_0x1033ce);});});}exports[_0xca4b('0x17')]=function(_0x56cc5a){var _0xb0e43e=this;return new Promise(function(_0x1208e6,_0x2c1e0d){return db[_0xca4b('0x18')]['findAll']({'raw':_0x56cc5a[_0xca4b('0x19')]?_0x56cc5a[_0xca4b('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x56cc5a[_0xca4b('0x19')]?_0x56cc5a['options']['where']||null:null,'attributes':_0x56cc5a['options']?_0x56cc5a[_0xca4b('0x19')][_0xca4b('0x1a')]||null:null,'limit':_0x56cc5a[_0xca4b('0x19')]?_0x56cc5a[_0xca4b('0x19')][_0xca4b('0x1b')]||null:null,'include':_0x56cc5a[_0xca4b('0x19')]?_0x56cc5a['options'][_0xca4b('0x1c')]?_[_0xca4b('0x1d')](_0x56cc5a[_0xca4b('0x19')][_0xca4b('0x1c')],function(_0x4adabe){return{'model':db[_0x4adabe['model']],'as':_0x4adabe['as'],'attributes':_0x4adabe['attributes'],'include':_0x4adabe[_0xca4b('0x1c')]?_['map'](_0x4adabe[_0xca4b('0x1c')],function(_0x13e764){return{'model':db[_0x13e764[_0xca4b('0x1e')]],'as':_0x13e764['as'],'attributes':_0x13e764[_0xca4b('0x1a')],'include':_0x13e764['include']?_['map'](_0x13e764[_0xca4b('0x1c')],function(_0x2ef421){return{'model':db[_0x2ef421[_0xca4b('0x1e')]],'as':_0x2ef421['as'],'attributes':_0x2ef421[_0xca4b('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xca4b('0x1f')](function(_0x279d65){logger[_0xca4b('0xd')](_0xca4b('0x17'),_0x56cc5a);logger['debug'](_0xca4b('0x17'),_0x56cc5a,JSON[_0xca4b('0x11')](_0x279d65));_0x1208e6(_0x279d65);})[_0xca4b('0x16')](function(_0x54410b){logger[_0xca4b('0x12')]('GetVoiceCallReport',_0x54410b[_0xca4b('0x13')],_0x56cc5a);_0x2c1e0d(_0xb0e43e[_0xca4b('0x12')](0x1f4,_0x54410b[_0xca4b('0x13')]));});});};exports[_0xca4b('0x20')]=function(_0x338e69){var _0x5e2aa5=this;return new Promise(function(_0x4df1e4,_0x521ce1){return db[_0xca4b('0x18')]['create'](_0x338e69[_0xca4b('0x21')],{'raw':_0x338e69['options']?_0x338e69[_0xca4b('0x19')][_0xca4b('0x22')]===undefined?!![]:![]:!![]})['then'](function(_0x1ca190){logger['info'](_0xca4b('0x20'),_0x338e69);logger[_0xca4b('0xe')](_0xca4b('0x20'),_0x338e69,JSON[_0xca4b('0x11')](_0x1ca190));_0x4df1e4(_0x1ca190);})[_0xca4b('0x16')](function(_0x1c3e3c){logger[_0xca4b('0x12')](_0xca4b('0x20'),_0x1c3e3c[_0xca4b('0x13')],_0x338e69);_0x521ce1(_0x5e2aa5[_0xca4b('0x12')](0x1f4,_0x1c3e3c[_0xca4b('0x13')]));});});};exports['UpdateVoiceCallReport']=function(_0x140b9a){var _0x4355ef=this;return new Promise(function(_0x18b533,_0x462a46){return db[_0xca4b('0x18')][_0xca4b('0x23')](_0x140b9a[_0xca4b('0x21')],{'raw':_0x140b9a[_0xca4b('0x19')]?_0x140b9a['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x140b9a[_0xca4b('0x19')]?_0x140b9a[_0xca4b('0x19')]['where']||null:null,'attributes':_0x140b9a[_0xca4b('0x19')]?_0x140b9a[_0xca4b('0x19')][_0xca4b('0x1a')]||null:null,'limit':_0x140b9a[_0xca4b('0x19')]?_0x140b9a[_0xca4b('0x19')][_0xca4b('0x1b')]||null:null})[_0xca4b('0x1f')](function(_0x4633a6){logger[_0xca4b('0xd')](_0xca4b('0x24'),_0x140b9a);logger[_0xca4b('0xe')]('UpdateVoiceCallReport',_0x140b9a,JSON[_0xca4b('0x11')](_0x4633a6));_0x18b533(_0x4633a6);})[_0xca4b('0x16')](function(_0x2953fa){logger[_0xca4b('0x12')]('UpdateVoiceCallReport',_0x2953fa[_0xca4b('0x13')],_0x140b9a);_0x462a46(_0x4355ef[_0xca4b('0x12')](0x1f4,_0x2953fa[_0xca4b('0x13')]));});});};
\ No newline at end of file
+var _0xc72e=['request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','VoiceCallReport','findAll','options','raw','where','limit','include','map','model','attributes','GetVoiceCallReport','CreateVoiceCallReport','create','body','UpdateVoiceCallReport','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','VoiceCallReport,\x20%s,\x20%s'];(function(_0x17085f,_0x16f48d){var _0x3a91aa=function(_0x713cc1){while(--_0x713cc1){_0x17085f['push'](_0x17085f['shift']());}};_0x3a91aa(++_0x16f48d);}(_0xc72e,0x1ba));var _0xec72=function(_0x5b49b7,_0x345a1c){_0x5b49b7=_0x5b49b7-0x0;var _0x1c6196=_0xc72e[_0x5b49b7];return _0x1c6196;};'use strict';var _=require(_0xec72('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xec72('0x1'));var rs=require(_0xec72('0x2'));var fs=require('fs');var Redis=require(_0xec72('0x3'));var db=require(_0xec72('0x4'))['db'];var utils=require(_0xec72('0x5'));var logger=require(_0xec72('0x6'))('rpc');var config=require(_0xec72('0x7'));var jayson=require(_0xec72('0x8'));var client=jayson[_0xec72('0x9')][_0xec72('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4fff2f,_0x2a4e40,_0x11c6c9){return new BPromise(function(_0x1a9c29,_0x3a2682){return client['request'](_0x4fff2f,_0x11c6c9)[_0xec72('0xb')](function(_0x1345cf){logger[_0xec72('0xc')](_0xec72('0xd'),_0x2a4e40,_0xec72('0xe'));logger[_0xec72('0xf')](_0xec72('0x10'),_0x2a4e40,_0xec72('0xe'),JSON[_0xec72('0x11')](_0x1345cf));if(_0x1345cf[_0xec72('0x12')]){if(_0x1345cf['error'][_0xec72('0x13')]===0x1f4){logger[_0xec72('0x12')](_0xec72('0xd'),_0x2a4e40,_0x1345cf[_0xec72('0x12')][_0xec72('0x14')]);return _0x3a2682(_0x1345cf[_0xec72('0x12')][_0xec72('0x14')]);}logger['error']('VoiceCallReport,\x20%s,\x20%s',_0x2a4e40,_0x1345cf[_0xec72('0x12')][_0xec72('0x14')]);return _0x1a9c29(_0x1345cf[_0xec72('0x12')]['message']);}else{logger[_0xec72('0xc')](_0xec72('0xd'),_0x2a4e40,_0xec72('0xe'));_0x1a9c29(_0x1345cf[_0xec72('0x15')][_0xec72('0x14')]);}})[_0xec72('0x16')](function(_0x647f5e){logger[_0xec72('0x12')](_0xec72('0xd'),_0x2a4e40,_0x647f5e);_0x3a2682(_0x647f5e);});});}exports['GetVoiceCallReport']=function(_0x5809a8){var _0xec655e=this;return new Promise(function(_0x3eedaf,_0xecc0cf){return db[_0xec72('0x17')][_0xec72('0x18')]({'raw':_0x5809a8[_0xec72('0x19')]?_0x5809a8['options'][_0xec72('0x1a')]===undefined?!![]:![]:!![],'where':_0x5809a8[_0xec72('0x19')]?_0x5809a8[_0xec72('0x19')][_0xec72('0x1b')]||null:null,'attributes':_0x5809a8[_0xec72('0x19')]?_0x5809a8[_0xec72('0x19')]['attributes']||null:null,'limit':_0x5809a8[_0xec72('0x19')]?_0x5809a8[_0xec72('0x19')][_0xec72('0x1c')]||null:null,'include':_0x5809a8[_0xec72('0x19')]?_0x5809a8[_0xec72('0x19')][_0xec72('0x1d')]?_[_0xec72('0x1e')](_0x5809a8[_0xec72('0x19')][_0xec72('0x1d')],function(_0xe6d22d){return{'model':db[_0xe6d22d[_0xec72('0x1f')]],'as':_0xe6d22d['as'],'attributes':_0xe6d22d[_0xec72('0x20')],'include':_0xe6d22d[_0xec72('0x1d')]?_[_0xec72('0x1e')](_0xe6d22d[_0xec72('0x1d')],function(_0x21ac27){return{'model':db[_0x21ac27[_0xec72('0x1f')]],'as':_0x21ac27['as'],'attributes':_0x21ac27['attributes'],'include':_0x21ac27['include']?_[_0xec72('0x1e')](_0x21ac27['include'],function(_0x2a00dc){return{'model':db[_0x2a00dc[_0xec72('0x1f')]],'as':_0x2a00dc['as'],'attributes':_0x2a00dc[_0xec72('0x20')]};}):[]};}):[]};}):[]:[]})[_0xec72('0xb')](function(_0x5c345d){logger[_0xec72('0xc')](_0xec72('0x21'),_0x5809a8);logger['debug']('GetVoiceCallReport',_0x5809a8,JSON[_0xec72('0x11')](_0x5c345d));_0x3eedaf(_0x5c345d);})[_0xec72('0x16')](function(_0x4e31bd){logger[_0xec72('0x12')](_0xec72('0x21'),_0x4e31bd[_0xec72('0x14')],_0x5809a8);_0xecc0cf(_0xec655e[_0xec72('0x12')](0x1f4,_0x4e31bd[_0xec72('0x14')]));});});};exports[_0xec72('0x22')]=function(_0x589c26){var _0x34cdc8=this;return new Promise(function(_0x32aa6d,_0x353fa2){return db[_0xec72('0x17')][_0xec72('0x23')](_0x589c26[_0xec72('0x24')],{'raw':_0x589c26[_0xec72('0x19')]?_0x589c26[_0xec72('0x19')]['raw']===undefined?!![]:![]:!![]})[_0xec72('0xb')](function(_0x4f9cbd){logger[_0xec72('0xc')](_0xec72('0x22'),_0x589c26);logger[_0xec72('0xf')](_0xec72('0x22'),_0x589c26,JSON['stringify'](_0x4f9cbd));_0x32aa6d(_0x4f9cbd);})['catch'](function(_0x5e2dd3){logger[_0xec72('0x12')](_0xec72('0x22'),_0x5e2dd3[_0xec72('0x14')],_0x589c26);_0x353fa2(_0x34cdc8['error'](0x1f4,_0x5e2dd3[_0xec72('0x14')]));});});};exports[_0xec72('0x25')]=function(_0x1af67f){var _0x32923f=this;return new Promise(function(_0x50c959,_0x11d4cb){return db[_0xec72('0x17')]['update'](_0x1af67f[_0xec72('0x24')],{'raw':_0x1af67f[_0xec72('0x19')]?_0x1af67f[_0xec72('0x19')][_0xec72('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1af67f[_0xec72('0x19')]?_0x1af67f[_0xec72('0x19')][_0xec72('0x1b')]||null:null,'attributes':_0x1af67f[_0xec72('0x19')]?_0x1af67f[_0xec72('0x19')][_0xec72('0x20')]||null:null,'limit':_0x1af67f['options']?_0x1af67f[_0xec72('0x19')]['limit']||null:null})[_0xec72('0xb')](function(_0x2da7bb){logger[_0xec72('0xc')](_0xec72('0x25'),_0x1af67f);logger[_0xec72('0xf')]('UpdateVoiceCallReport',_0x1af67f,JSON[_0xec72('0x11')](_0x2da7bb));_0x50c959(_0x2da7bb);})[_0xec72('0x16')](function(_0x3f5e93){logger[_0xec72('0x12')](_0xec72('0x25'),_0x3f5e93[_0xec72('0x14')],_0x1af67f);_0x11d4cb(_0x32923f[_0xec72('0x12')](0x1f4,_0x3f5e93[_0xec72('0x14')]));});});};
\ No newline at end of file
index c3397ae..7b2876f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaeba=['create','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','index','/:id','show','post'];(function(_0x2ee262,_0xe9335f){var _0x5d4b22=function(_0x2f43fc){while(--_0x2f43fc){_0x2ee262['push'](_0x2ee262['shift']());}};_0x5d4b22(++_0xe9335f);}(_0xaeba,0x194));var _0xaaeb=function(_0xb2f0a9,_0x19b16b){_0xb2f0a9=_0xb2f0a9-0x0;var _0x40f282=_0xaeba[_0xb2f0a9];return _0x40f282;};'use strict';var multer=require(_0xaaeb('0x0'));var util=require(_0xaaeb('0x1'));var path=require(_0xaaeb('0x2'));var timeout=require(_0xaaeb('0x3'));var express=require(_0xaaeb('0x4'));var router=express[_0xaaeb('0x5')]();var fs_extra=require(_0xaaeb('0x6'));var auth=require(_0xaaeb('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xaaeb('0x8'));var controller=require(_0xaaeb('0x9'));router[_0xaaeb('0xa')]('/',auth[_0xaaeb('0xb')](),controller[_0xaaeb('0xc')]);router[_0xaaeb('0xa')](_0xaaeb('0xd'),auth['isAuthenticated'](),controller[_0xaaeb('0xe')]);router[_0xaaeb('0xf')]('/',auth[_0xaaeb('0xb')](),controller[_0xaaeb('0x10')]);router['put']('/:id',auth[_0xaaeb('0xb')](),controller[_0xaaeb('0x11')]);router[_0xaaeb('0x12')](_0xaaeb('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xaaeb('0x13')]=router;
\ No newline at end of file
+var _0x7733=['Router','../../components/interaction/service','isAuthenticated','index','get','/:id','show','post','create','update','delete','destroy','exports','multer','path','express'];(function(_0x5d9856,_0x53e191){var _0xfe9441=function(_0x24f5a8){while(--_0x24f5a8){_0x5d9856['push'](_0x5d9856['shift']());}};_0xfe9441(++_0x53e191);}(_0x7733,0x15d));var _0x3773=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0x7733[_0xc4001c];return _0x49f7bc;};'use strict';var multer=require(_0x3773('0x0'));var util=require('util');var path=require(_0x3773('0x1'));var timeout=require('connect-timeout');var express=require(_0x3773('0x2'));var router=express[_0x3773('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x3773('0x4'));var config=require('../../config/environment');var controller=require('./voiceChanSpy.controller');router['get']('/',auth[_0x3773('0x5')](),controller[_0x3773('0x6')]);router[_0x3773('0x7')](_0x3773('0x8'),auth[_0x3773('0x5')](),controller[_0x3773('0x9')]);router[_0x3773('0xa')]('/',auth[_0x3773('0x5')](),controller[_0x3773('0xb')]);router['put'](_0x3773('0x8'),auth[_0x3773('0x5')](),controller[_0x3773('0xc')]);router[_0x3773('0xd')](_0x3773('0x8'),auth[_0x3773('0x5')](),controller[_0x3773('0xe')]);module[_0x3773('0xf')]=router;
\ No newline at end of file
index 4c1a527..5bc0ee1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43bc=['BOOLEAN','sequelize','name','STRING','setDataValue','join','getDataValue','options','split'];(function(_0x25a4e9,_0xaf8c5e){var _0x3c3b73=function(_0x3dbe4e){while(--_0x3dbe4e){_0x25a4e9['push'](_0x25a4e9['shift']());}};_0x3c3b73(++_0xaf8c5e);}(_0x43bc,0xfd));var _0xc43b=function(_0x2ff762,_0x342c0b){_0x2ff762=_0x2ff762-0x0;var _0x158b02=_0x43bc[_0x2ff762];return _0x158b02;};'use strict';var Sequelize=require(_0xc43b('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize['STRING'],'unique':_0xc43b('0x1'),'allowNull':![]},'options':{'type':Sequelize[_0xc43b('0x2')],'set':function(_0x488261){this[_0xc43b('0x3')]('options',_0x488261?_0x488261[_0xc43b('0x4')](''):[]);},'get':function(){return this[_0xc43b('0x5')](_0xc43b('0x6'))?this[_0xc43b('0x5')](_0xc43b('0x6'))[_0xc43b('0x7')](''):[];}},'auth':{'type':Sequelize[_0xc43b('0x8')],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xc43b('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9ca3=['getDataValue','split','BOOLEAN','sequelize','exports','STRING','name','setDataValue','options','join'];(function(_0x3bb505,_0xbcbd5b){var _0x18a12c=function(_0x415d86){while(--_0x415d86){_0x3bb505['push'](_0x3bb505['shift']());}};_0x18a12c(++_0xbcbd5b);}(_0x9ca3,0x1cf));var _0x39ca=function(_0x2ae275,_0x2ac542){_0x2ae275=_0x2ae275-0x0;var _0x57f38a=_0x9ca3[_0x2ae275];return _0x57f38a;};'use strict';var Sequelize=require(_0x39ca('0x0'));module[_0x39ca('0x1')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x39ca('0x2')],'unique':_0x39ca('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x39ca('0x2')],'set':function(_0x2e621b){this[_0x39ca('0x4')](_0x39ca('0x5'),_0x2e621b?_0x2e621b[_0x39ca('0x6')](''):[]);},'get':function(){return this[_0x39ca('0x7')](_0x39ca('0x5'))?this[_0x39ca('0x7')](_0x39ca('0x5'))[_0x39ca('0x8')](''):[];}},'auth':{'type':Sequelize[_0x39ca('0x9')],'defaultValue':![]},'password':{'type':Sequelize[_0x39ca('0x2')]},'record':{'type':Sequelize[_0x39ca('0x9')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x39ca('0x2')]},'description':{'type':Sequelize[_0x39ca('0x2')]}};
\ No newline at end of file
index bae4a6f..61ea546 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d31=['where','includeAll','include','findAll','rows','catch','show','params','find','Unable\x20to\x20retrieve\x20the\x20current\x20user','ChanSpies','UserProfileSection','userProfileId','UserProfileResource','create','body','rimraf','zip-dir','fast-json-patch','moment','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','get','error','name','send','map','VoiceChanSpy','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','merge','VIRTUAL','options'];(function(_0xfafd53,_0x5be3e9){var _0x1ca35b=function(_0x2d771a){while(--_0x2d771a){_0xfafd53['push'](_0xfafd53['shift']());}};_0x1ca35b(++_0x5be3e9);}(_0x5d31,0xf7));var _0x15d3=function(_0x39dbcb,_0x4f63d7){_0x39dbcb=_0x39dbcb-0x0;var _0x5aadb2=_0x5d31[_0x39dbcb];return _0x5aadb2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x15d3('0x0'));var zipdir=require(_0x15d3('0x1'));var jsonpatch=require(_0x15d3('0x2'));var rp=require('request-promise');var moment=require(_0x15d3('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x15d3('0x4'));var path=require(_0x15d3('0x5'));var sox=require(_0x15d3('0x6'));var csv=require(_0x15d3('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x15d3('0x8'));var _=require(_0x15d3('0x9'));var squel=require(_0x15d3('0xa'));var crypto=require(_0x15d3('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x15d3('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x15d3('0xd'));var Redis=require('ioredis');var authService=require(_0x15d3('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x15d3('0xf'));var logger=require(_0x15d3('0x10'))(_0x15d3('0x11'));var utils=require(_0x15d3('0x12'));var config=require(_0x15d3('0x13'));var licenseUtil=require(_0x15d3('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x219867,_0x1397d8){_0x1397d8=_0x1397d8||0xcc;return function(_0x2811b5){if(_0x2811b5){return _0x219867[_0x15d3('0x15')](_0x1397d8);}return _0x219867[_0x15d3('0x16')](_0x1397d8)[_0x15d3('0x17')]();};}function respondWithResult(_0x24eb07,_0x1658cf){_0x1658cf=_0x1658cf||0xc8;return function(_0x44b5a4){if(_0x44b5a4){return _0x24eb07[_0x15d3('0x16')](_0x1658cf)[_0x15d3('0x18')](_0x44b5a4);}};}function respondWithFilteredResult(_0x4af3a7,_0x304a13){return function(_0x17401b){if(_0x17401b){var _0x5bbfef=typeof _0x304a13[_0x15d3('0x19')]===_0x15d3('0x1a')&&typeof _0x304a13[_0x15d3('0x1b')]===_0x15d3('0x1a');var _0x1b7b3f=_0x17401b[_0x15d3('0x1c')];var _0x46f9ce=_0x5bbfef?0x0:_0x304a13[_0x15d3('0x19')];var _0x46e18b=_0x5bbfef?_0x17401b[_0x15d3('0x1c')]:_0x304a13[_0x15d3('0x19')]+_0x304a13['limit'];var _0x41c358;if(_0x46e18b>=_0x1b7b3f){_0x46e18b=_0x1b7b3f;_0x41c358=0xc8;}else{_0x41c358=0xce;}_0x4af3a7[_0x15d3('0x16')](_0x41c358);return _0x4af3a7['set']('Content-Range',_0x46f9ce+'-'+_0x46e18b+'/'+_0x1b7b3f)['json'](_0x17401b);}return null;};}function patchUpdates(_0x4ebc97){return function(_0x39bb05){try{jsonpatch[_0x15d3('0x1d')](_0x39bb05,_0x4ebc97,!![]);}catch(_0x40a327){return BPromise[_0x15d3('0x1e')](_0x40a327);}return _0x39bb05[_0x15d3('0x1f')]();};}function saveUpdates(_0x2fa13c,_0x4da198){return function(_0x49eb89){if(_0x49eb89){return _0x49eb89[_0x15d3('0x20')](_0x2fa13c)[_0x15d3('0x21')](function(_0x444075){return _0x444075;});}return null;};}function removeEntity(_0x72852f,_0x5b06cc){return function(_0x232078){if(_0x232078){return _0x232078[_0x15d3('0x22')]()[_0x15d3('0x21')](function(){var _0x539626=_0x232078[_0x15d3('0x23')]({'plain':!![]});var _0x240cf4='ChanSpies';return db['UserProfileResource']['destroy']({'where':{'type':_0x240cf4,'resourceId':_0x539626['id']}})[_0x15d3('0x21')](function(){return _0x232078;});})[_0x15d3('0x21')](function(){_0x72852f[_0x15d3('0x16')](0xcc)[_0x15d3('0x17')]();});}};}function handleEntityNotFound(_0x26ec4b,_0x24bf3c){return function(_0x247fab){if(!_0x247fab){_0x26ec4b[_0x15d3('0x15')](0x194);}return _0x247fab;};}function handleError(_0x3b1ba4,_0x49b865){_0x49b865=_0x49b865||0x1f4;return function(_0x5f445a){logger[_0x15d3('0x24')](_0x5f445a['stack']);if(_0x5f445a[_0x15d3('0x25')]){delete _0x5f445a['name'];}_0x3b1ba4[_0x15d3('0x16')](_0x49b865)[_0x15d3('0x26')](_0x5f445a);};}exports['index']=function(_0x424756,_0x29a947){var _0x477624={},_0x61822={},_0x246874={'count':0x0,'rows':[]};var _0x14491b=_[_0x15d3('0x27')](db[_0x15d3('0x28')][_0x15d3('0x29')],function(_0x18452c){return{'name':_0x18452c['fieldName'],'type':_0x18452c[_0x15d3('0x2a')][_0x15d3('0x2b')]};});_0x61822[_0x15d3('0x2c')]=_[_0x15d3('0x27')](_0x14491b,_0x15d3('0x25'));_0x61822[_0x15d3('0x2d')]=_[_0x15d3('0x2e')](_0x424756[_0x15d3('0x2d')]);_0x61822['filters']=_[_0x15d3('0x2f')](_0x61822['model'],_0x61822[_0x15d3('0x2d')]);_0x477624[_0x15d3('0x30')]=_[_0x15d3('0x2f')](_0x61822[_0x15d3('0x2c')],qs[_0x15d3('0x31')](_0x424756[_0x15d3('0x2d')][_0x15d3('0x31')]));_0x477624[_0x15d3('0x30')]=_0x477624[_0x15d3('0x30')][_0x15d3('0x32')]?_0x477624[_0x15d3('0x30')]:_0x61822[_0x15d3('0x2c')];if(!_0x424756[_0x15d3('0x2d')][_0x15d3('0x33')](_0x15d3('0x34'))){_0x477624['limit']=qs[_0x15d3('0x1b')](_0x424756[_0x15d3('0x2d')]['limit']);_0x477624[_0x15d3('0x19')]=qs[_0x15d3('0x19')](_0x424756[_0x15d3('0x2d')]['offset']);}_0x477624[_0x15d3('0x35')]=qs['sort'](_0x424756[_0x15d3('0x2d')][_0x15d3('0x36')]);_0x477624['where']=qs[_0x15d3('0x37')](_[_0x15d3('0x38')](_0x424756[_0x15d3('0x2d')],_0x61822[_0x15d3('0x37')]),_0x14491b);if(_0x424756[_0x15d3('0x2d')][_0x15d3('0x39')]){_0x477624['where']=_[_0x15d3('0x3a')](_0x477624['where'],{'$or':_[_0x15d3('0x27')](_0x14491b,function(_0x21c799){if(_0x21c799[_0x15d3('0x2a')]!==_0x15d3('0x3b')){var _0x204676={};_0x204676[_0x21c799[_0x15d3('0x25')]]={'$like':'%'+_0x424756[_0x15d3('0x2d')][_0x15d3('0x39')]+'%'};return _0x204676;}})});}_0x477624=_[_0x15d3('0x3a')]({},_0x477624,_0x424756[_0x15d3('0x3c')]);var _0x5a18b6={'where':_0x477624[_0x15d3('0x3d')]};return db[_0x15d3('0x28')]['count'](_0x5a18b6)['then'](function(_0x108254){_0x246874[_0x15d3('0x1c')]=_0x108254;if(_0x424756[_0x15d3('0x2d')][_0x15d3('0x3e')]){_0x477624[_0x15d3('0x3f')]=[{'all':!![]}];}return db[_0x15d3('0x28')][_0x15d3('0x40')](_0x477624);})[_0x15d3('0x21')](function(_0x25fa1d){_0x246874[_0x15d3('0x41')]=_0x25fa1d;return _0x246874;})['then'](respondWithFilteredResult(_0x29a947,_0x477624))[_0x15d3('0x42')](handleError(_0x29a947,null));};exports[_0x15d3('0x43')]=function(_0x534928,_0x1581dc){var _0x5c9829={'raw':![],'where':{'id':_0x534928[_0x15d3('0x44')]['id']}},_0x4d7f72={};_0x4d7f72[_0x15d3('0x2c')]=_[_0x15d3('0x2e')](db['VoiceChanSpy'][_0x15d3('0x29')]);_0x4d7f72['query']=_[_0x15d3('0x2e')](_0x534928[_0x15d3('0x2d')]);_0x4d7f72[_0x15d3('0x37')]=_[_0x15d3('0x2f')](_0x4d7f72[_0x15d3('0x2c')],_0x4d7f72['query']);_0x5c9829['attributes']=_['intersection'](_0x4d7f72[_0x15d3('0x2c')],qs['fields'](_0x534928[_0x15d3('0x2d')][_0x15d3('0x31')]));_0x5c9829[_0x15d3('0x30')]=_0x5c9829['attributes'][_0x15d3('0x32')]?_0x5c9829[_0x15d3('0x30')]:_0x4d7f72[_0x15d3('0x2c')];if(_0x534928[_0x15d3('0x2d')][_0x15d3('0x3e')]){_0x5c9829[_0x15d3('0x3f')]=[{'all':!![]}];}_0x5c9829=_[_0x15d3('0x3a')]({},_0x5c9829,_0x534928[_0x15d3('0x3c')]);return db[_0x15d3('0x28')][_0x15d3('0x45')](_0x5c9829)[_0x15d3('0x21')](handleEntityNotFound(_0x1581dc,null))[_0x15d3('0x21')](respondWithResult(_0x1581dc,null))['catch'](handleError(_0x1581dc,null));};exports['create']=function(_0x264487,_0x446929){return db[_0x15d3('0x28')]['create'](_0x264487['body'],{})[_0x15d3('0x21')](function(_0x4a825d){var _0x454ad3=_0x264487['user'][_0x15d3('0x23')]({'plain':!![]});if(!_0x454ad3)throw new Error(_0x15d3('0x46'));if(_0x454ad3['role']==='user'){var _0x480c9d=_0x4a825d['get']({'plain':!![]});var _0x5547ab=_0x15d3('0x47');return db[_0x15d3('0x48')]['find']({'where':{'name':_0x5547ab,'userProfileId':_0x454ad3[_0x15d3('0x49')]},'raw':!![]})[_0x15d3('0x21')](function(_0x323717){if(_0x323717&&_0x323717['autoAssociation']===0x0){return db[_0x15d3('0x4a')][_0x15d3('0x4b')]({'name':_0x480c9d[_0x15d3('0x25')],'resourceId':_0x480c9d['id'],'type':_0x323717[_0x15d3('0x25')],'sectionId':_0x323717['id']},{})[_0x15d3('0x21')](function(){return _0x4a825d;});}else{return _0x4a825d;}})[_0x15d3('0x42')](function(_0x5f0a42){logger[_0x15d3('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5f0a42);throw _0x5f0a42;});}return _0x4a825d;})['then'](respondWithResult(_0x446929,0xc9))[_0x15d3('0x42')](handleError(_0x446929,null));};exports['update']=function(_0x16e6bc,_0x54599a){if(_0x16e6bc[_0x15d3('0x4c')]['id']){delete _0x16e6bc[_0x15d3('0x4c')]['id'];}return db[_0x15d3('0x28')][_0x15d3('0x45')]({'where':{'id':_0x16e6bc[_0x15d3('0x44')]['id']}})['then'](handleEntityNotFound(_0x54599a,null))['then'](saveUpdates(_0x16e6bc[_0x15d3('0x4c')],null))['then'](respondWithResult(_0x54599a,null))[_0x15d3('0x42')](handleError(_0x54599a,null));};exports[_0x15d3('0x22')]=function(_0x3cccc5,_0x23f439){return db[_0x15d3('0x28')][_0x15d3('0x45')]({'where':{'id':_0x3cccc5[_0x15d3('0x44')]['id']}})['then'](handleEntityNotFound(_0x23f439,null))[_0x15d3('0x21')](removeEntity(_0x23f439,null))[_0x15d3('0x42')](handleError(_0x23f439,null));};
\ No newline at end of file
+var _0x3e5c=['crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','end','stack','name','VoiceChanSpy','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','rows','catch','show','params','includeAll','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','find','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel'];(function(_0x32d67d,_0x25eee3){var _0x2d02ee=function(_0x196010){while(--_0x196010){_0x32d67d['push'](_0x32d67d['shift']());}};_0x2d02ee(++_0x25eee3);}(_0x3e5c,0x9a));var _0xc3e5=function(_0x295220,_0x35a714){_0x295220=_0x295220-0x0;var _0x2f9768=_0x3e5c[_0x295220];return _0x2f9768;};'use strict';var emlformat=require(_0xc3e5('0x0'));var rimraf=require(_0xc3e5('0x1'));var zipdir=require(_0xc3e5('0x2'));var jsonpatch=require(_0xc3e5('0x3'));var rp=require('request-promise');var moment=require(_0xc3e5('0x4'));var BPromise=require(_0xc3e5('0x5'));var Mustache=require(_0xc3e5('0x6'));var util=require(_0xc3e5('0x7'));var path=require(_0xc3e5('0x8'));var sox=require(_0xc3e5('0x9'));var csv=require('to-csv');var ejs=require(_0xc3e5('0xa'));var fs=require('fs');var fs_extra=require(_0xc3e5('0xb'));var _=require(_0xc3e5('0xc'));var squel=require(_0xc3e5('0xd'));var crypto=require(_0xc3e5('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc3e5('0xf'));var toCsv=require(_0xc3e5('0x10'));var querystring=require(_0xc3e5('0x11'));var Papa=require(_0xc3e5('0x12'));var Redis=require(_0xc3e5('0x13'));var authService=require(_0xc3e5('0x14'));var qs=require(_0xc3e5('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc3e5('0x16'));var logger=require(_0xc3e5('0x17'))(_0xc3e5('0x18'));var utils=require(_0xc3e5('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xc3e5('0x1a'));var db=require(_0xc3e5('0x1b'))['db'];function respondWithStatusCode(_0x36193e,_0x3f0395){_0x3f0395=_0x3f0395||0xcc;return function(_0x3b7441){if(_0x3b7441){return _0x36193e[_0xc3e5('0x1c')](_0x3f0395);}return _0x36193e['status'](_0x3f0395)['end']();};}function respondWithResult(_0x52cca7,_0x27c226){_0x27c226=_0x27c226||0xc8;return function(_0x5a52f1){if(_0x5a52f1){return _0x52cca7[_0xc3e5('0x1d')](_0x27c226)[_0xc3e5('0x1e')](_0x5a52f1);}};}function respondWithFilteredResult(_0x4d1ad9,_0x353dc0){return function(_0x3e3eaa){if(_0x3e3eaa){var _0x2cc476=typeof _0x353dc0[_0xc3e5('0x1f')]===_0xc3e5('0x20')&&typeof _0x353dc0['limit']===_0xc3e5('0x20');var _0x277063=_0x3e3eaa[_0xc3e5('0x21')];var _0xa33d84=_0x2cc476?0x0:_0x353dc0[_0xc3e5('0x1f')];var _0x1e1eea=_0x2cc476?_0x3e3eaa['count']:_0x353dc0[_0xc3e5('0x1f')]+_0x353dc0[_0xc3e5('0x22')];var _0x4a1d86;if(_0x1e1eea>=_0x277063){_0x1e1eea=_0x277063;_0x4a1d86=0xc8;}else{_0x4a1d86=0xce;}_0x4d1ad9[_0xc3e5('0x1d')](_0x4a1d86);return _0x4d1ad9['set'](_0xc3e5('0x23'),_0xa33d84+'-'+_0x1e1eea+'/'+_0x277063)[_0xc3e5('0x1e')](_0x3e3eaa);}return null;};}function patchUpdates(_0x2d551b){return function(_0xebf6dc){try{jsonpatch[_0xc3e5('0x24')](_0xebf6dc,_0x2d551b,!![]);}catch(_0x4a7806){return BPromise[_0xc3e5('0x25')](_0x4a7806);}return _0xebf6dc[_0xc3e5('0x26')]();};}function saveUpdates(_0x2d8c6f,_0x3eb513){return function(_0x414ba9){if(_0x414ba9){return _0x414ba9[_0xc3e5('0x27')](_0x2d8c6f)[_0xc3e5('0x28')](function(_0x47f344){return _0x47f344;});}return null;};}function removeEntity(_0x3a2800,_0x430cb4){return function(_0x43d01e){if(_0x43d01e){return _0x43d01e[_0xc3e5('0x29')]()[_0xc3e5('0x28')](function(){var _0x28b858=_0x43d01e[_0xc3e5('0x2a')]({'plain':!![]});var _0x45556e='ChanSpies';return db[_0xc3e5('0x2b')]['destroy']({'where':{'type':_0x45556e,'resourceId':_0x28b858['id']}})['then'](function(){return _0x43d01e;});})[_0xc3e5('0x28')](function(){_0x3a2800[_0xc3e5('0x1d')](0xcc)[_0xc3e5('0x2c')]();});}};}function handleEntityNotFound(_0x59dcff,_0x31f49b){return function(_0x38a961){if(!_0x38a961){_0x59dcff[_0xc3e5('0x1c')](0x194);}return _0x38a961;};}function handleError(_0x3ad580,_0x591262){_0x591262=_0x591262||0x1f4;return function(_0xa6766d){logger['error'](_0xa6766d[_0xc3e5('0x2d')]);if(_0xa6766d[_0xc3e5('0x2e')]){delete _0xa6766d[_0xc3e5('0x2e')];}_0x3ad580['status'](_0x591262)['send'](_0xa6766d);};}exports['index']=function(_0x1dcc51,_0x45cd9c){var _0x144172={},_0x2f023e={},_0xeea535={'count':0x0,'rows':[]};var _0x65bb96=_['map'](db[_0xc3e5('0x2f')][_0xc3e5('0x30')],function(_0x440617){return{'name':_0x440617[_0xc3e5('0x31')],'type':_0x440617[_0xc3e5('0x32')][_0xc3e5('0x33')]};});_0x2f023e[_0xc3e5('0x34')]=_[_0xc3e5('0x35')](_0x65bb96,_0xc3e5('0x2e'));_0x2f023e[_0xc3e5('0x36')]=_[_0xc3e5('0x37')](_0x1dcc51['query']);_0x2f023e[_0xc3e5('0x38')]=_['intersection'](_0x2f023e[_0xc3e5('0x34')],_0x2f023e[_0xc3e5('0x36')]);_0x144172[_0xc3e5('0x39')]=_[_0xc3e5('0x3a')](_0x2f023e['model'],qs[_0xc3e5('0x3b')](_0x1dcc51['query']['fields']));_0x144172[_0xc3e5('0x39')]=_0x144172['attributes'][_0xc3e5('0x3c')]?_0x144172[_0xc3e5('0x39')]:_0x2f023e[_0xc3e5('0x34')];if(!_0x1dcc51[_0xc3e5('0x36')][_0xc3e5('0x3d')]('nolimit')){_0x144172[_0xc3e5('0x22')]=qs[_0xc3e5('0x22')](_0x1dcc51[_0xc3e5('0x36')][_0xc3e5('0x22')]);_0x144172[_0xc3e5('0x1f')]=qs['offset'](_0x1dcc51[_0xc3e5('0x36')]['offset']);}_0x144172[_0xc3e5('0x3e')]=qs[_0xc3e5('0x3f')](_0x1dcc51['query'][_0xc3e5('0x3f')]);_0x144172['where']=qs[_0xc3e5('0x38')](_[_0xc3e5('0x40')](_0x1dcc51[_0xc3e5('0x36')],_0x2f023e['filters']),_0x65bb96);if(_0x1dcc51[_0xc3e5('0x36')][_0xc3e5('0x41')]){_0x144172[_0xc3e5('0x42')]=_[_0xc3e5('0x43')](_0x144172[_0xc3e5('0x42')],{'$or':_['map'](_0x65bb96,function(_0x4bf98e){if(_0x4bf98e['type']!==_0xc3e5('0x44')){var _0x383ced={};_0x383ced[_0x4bf98e['name']]={'$like':'%'+_0x1dcc51[_0xc3e5('0x36')]['filter']+'%'};return _0x383ced;}})});}_0x144172=_[_0xc3e5('0x43')]({},_0x144172,_0x1dcc51['options']);var _0x239c7f={'where':_0x144172['where']};return db[_0xc3e5('0x2f')][_0xc3e5('0x21')](_0x239c7f)[_0xc3e5('0x28')](function(_0x1c5177){_0xeea535[_0xc3e5('0x21')]=_0x1c5177;if(_0x1dcc51[_0xc3e5('0x36')]['includeAll']){_0x144172['include']=[{'all':!![]}];}return db[_0xc3e5('0x2f')]['findAll'](_0x144172);})[_0xc3e5('0x28')](function(_0x27354c){_0xeea535[_0xc3e5('0x45')]=_0x27354c;return _0xeea535;})[_0xc3e5('0x28')](respondWithFilteredResult(_0x45cd9c,_0x144172))[_0xc3e5('0x46')](handleError(_0x45cd9c,null));};exports[_0xc3e5('0x47')]=function(_0x49b123,_0x1bed92){var _0x2433d6={'raw':![],'where':{'id':_0x49b123[_0xc3e5('0x48')]['id']}},_0xbbfcad={};_0xbbfcad[_0xc3e5('0x34')]=_[_0xc3e5('0x37')](db[_0xc3e5('0x2f')][_0xc3e5('0x30')]);_0xbbfcad[_0xc3e5('0x36')]=_[_0xc3e5('0x37')](_0x49b123['query']);_0xbbfcad['filters']=_['intersection'](_0xbbfcad[_0xc3e5('0x34')],_0xbbfcad['query']);_0x2433d6[_0xc3e5('0x39')]=_[_0xc3e5('0x3a')](_0xbbfcad[_0xc3e5('0x34')],qs[_0xc3e5('0x3b')](_0x49b123['query'][_0xc3e5('0x3b')]));_0x2433d6[_0xc3e5('0x39')]=_0x2433d6[_0xc3e5('0x39')][_0xc3e5('0x3c')]?_0x2433d6['attributes']:_0xbbfcad['model'];if(_0x49b123[_0xc3e5('0x36')][_0xc3e5('0x49')]){_0x2433d6['include']=[{'all':!![]}];}_0x2433d6=_[_0xc3e5('0x43')]({},_0x2433d6,_0x49b123['options']);return db[_0xc3e5('0x2f')]['find'](_0x2433d6)[_0xc3e5('0x28')](handleEntityNotFound(_0x1bed92,null))['then'](respondWithResult(_0x1bed92,null))['catch'](handleError(_0x1bed92,null));};exports['create']=function(_0x87855d,_0x11da7e){return db[_0xc3e5('0x2f')]['create'](_0x87855d['body'],{})[_0xc3e5('0x28')](function(_0x512ed8){var _0x1e585b=_0x87855d[_0xc3e5('0x4a')][_0xc3e5('0x2a')]({'plain':!![]});if(!_0x1e585b)throw new Error(_0xc3e5('0x4b'));if(_0x1e585b[_0xc3e5('0x4c')]===_0xc3e5('0x4a')){var _0x5cd31c=_0x512ed8[_0xc3e5('0x2a')]({'plain':!![]});var _0x4c1e8c='ChanSpies';return db[_0xc3e5('0x4d')]['find']({'where':{'name':_0x4c1e8c,'userProfileId':_0x1e585b[_0xc3e5('0x4e')]},'raw':!![]})['then'](function(_0x4eb2e1){if(_0x4eb2e1&&_0x4eb2e1[_0xc3e5('0x4f')]===0x0){return db[_0xc3e5('0x2b')]['create']({'name':_0x5cd31c['name'],'resourceId':_0x5cd31c['id'],'type':_0x4eb2e1[_0xc3e5('0x2e')],'sectionId':_0x4eb2e1['id']},{})[_0xc3e5('0x28')](function(){return _0x512ed8;});}else{return _0x512ed8;}})['catch'](function(_0x45687f){logger[_0xc3e5('0x50')](_0xc3e5('0x51'),_0x45687f);throw _0x45687f;});}return _0x512ed8;})[_0xc3e5('0x28')](respondWithResult(_0x11da7e,0xc9))[_0xc3e5('0x46')](handleError(_0x11da7e,null));};exports[_0xc3e5('0x27')]=function(_0x10a04c,_0x4abeb5){if(_0x10a04c[_0xc3e5('0x52')]['id']){delete _0x10a04c[_0xc3e5('0x52')]['id'];}return db['VoiceChanSpy']['find']({'where':{'id':_0x10a04c[_0xc3e5('0x48')]['id']}})[_0xc3e5('0x28')](handleEntityNotFound(_0x4abeb5,null))['then'](saveUpdates(_0x10a04c['body'],null))['then'](respondWithResult(_0x4abeb5,null))['catch'](handleError(_0x4abeb5,null));};exports[_0xc3e5('0x29')]=function(_0x232e57,_0x474891){return db[_0xc3e5('0x2f')][_0xc3e5('0x53')]({'where':{'id':_0x232e57['params']['id']}})[_0xc3e5('0x28')](handleEntityNotFound(_0x474891,null))[_0xc3e5('0x28')](removeEntity(_0x474891,null))[_0xc3e5('0x46')](handleError(_0x474891,null));};
\ No newline at end of file
index 311c956..fdb10f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf48=['SIP/%s,%s','options','record','concat','internal','name','User','findAll','agent','then','catch','models','define','VoiceChanSpy','voice_chanspy','VoiceExtension','destroy','length','lodash','util','bluebird','./voiceChanSpy.attributes','context','format','%s%s','prefix','system','merge','Set','CDR(type)=%s','chanspy','push','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','password'];(function(_0x33e566,_0x3e90f4){var _0x828b80=function(_0x2b67d2){while(--_0x2b67d2){_0x33e566['push'](_0x33e566['shift']());}};_0x828b80(++_0x3e90f4);}(_0xbf48,0x13a));var _0x8bf4=function(_0x51b7f4,_0x38cbb8){_0x51b7f4=_0x51b7f4-0x0;var _0x468020=_0xbf48[_0x51b7f4];return _0x468020;};'use strict';var _=require(_0x8bf4('0x0'));var util=require(_0x8bf4('0x1'));var BPromise=require(_0x8bf4('0x2'));var attributes=require(_0x8bf4('0x3'));var getUserApplications=function(_0x4a022f,_0xf71b7e,_0x41e1ed){var _0x9608d8=0x1;var _0x41173e=[];var _0x443f74={'context':_0xf71b7e[_0x8bf4('0x4')]||'from-sip','exten':util[_0x8bf4('0x5')](_0x8bf4('0x6'),_0x4a022f[_0x8bf4('0x7')],_0x41e1ed),'type':_0x8bf4('0x8'),'isApp':![],'ChanSpyId':_0x4a022f['id'],'UserId':_0xf71b7e['id']};_0x41173e['push'](_[_0x8bf4('0x9')]({'app':_0x8bf4('0xa'),'appdata':util[_0x8bf4('0x5')](_0x8bf4('0xb'),_0x8bf4('0xc')),'priority':_0x9608d8++},_0x443f74));if(_0x4a022f['record']){_0x41173e[_0x8bf4('0xd')](_[_0x8bf4('0x9')]({'app':_0x8bf4('0xe'),'appdata':util['format'](_0x8bf4('0xf'),_0x4a022f[_0x8bf4('0x10')]),'priority':_0x9608d8++},_0x443f74));}if(_0x4a022f[_0x8bf4('0x11')]){_0x41173e[_0x8bf4('0xd')](_['merge']({'app':'Authenticate','appdata':_0x4a022f[_0x8bf4('0x12')],'priority':_0x9608d8++},_0x443f74));}_0x41173e[_0x8bf4('0xd')](_[_0x8bf4('0x9')]({'app':'ChanSpy','appdata':util[_0x8bf4('0x5')](_0x8bf4('0x13'),_0xf71b7e['name'],_0x4a022f['options']?_0x4a022f[_0x8bf4('0x14')]['join'](''):''),'priority':_0x9608d8++},_0x443f74));if(_0x4a022f[_0x8bf4('0x15')]){_0x41173e[_0x8bf4('0xd')](_['merge']({'app':'StopMixMonitor','priority':_0x9608d8++},_0x443f74));}return _0x41173e;};var getChanSpyApplications=function(_0x3167d7,_0x4e1a6d){var _0x22cb64=[];for(var _0x136140=0x0,_0xa3ed7=0x1;_0x136140<_0x4e1a6d['length'];_0x136140++,_0xa3ed7=0x1){_0x22cb64=_0x22cb64[_0x8bf4('0x16')](getUserApplications(_0x3167d7,_0x4e1a6d[_0x136140],_0x4e1a6d[_0x136140][_0x8bf4('0x17')]));if(_0x4e1a6d[_0x136140][_0x8bf4('0x17')]!=_0x4e1a6d[_0x136140][_0x8bf4('0x18')]){_0x22cb64=_0x22cb64['concat'](getUserApplications(_0x3167d7,_0x4e1a6d[_0x136140],_0x4e1a6d[_0x136140]['name']));}}return _0x22cb64;};var getChanSpyPromise=function(_0xa5cdd6,_0x5993d2){return new BPromise(function(_0x33aeb4,_0x31e22b){return _0xa5cdd6[_0x8bf4('0x19')][_0x8bf4('0x1a')]({'attributes':['id','name','internal'],'where':{'role':_0x8bf4('0x1b'),'chanspy':!![]},'raw':!![]})[_0x8bf4('0x1c')](function(_0x1d5063){if(_0x1d5063){return _0x33aeb4(getChanSpyApplications(_0x5993d2,_0x1d5063));}return _0x33aeb4([]);})[_0x8bf4('0x1d')](function(_0x58ffdf){_0x31e22b(_0x58ffdf);});});};module['exports']=function(_0x5c431c,_0x467967){var _0x22fa33=_0x5c431c[_0x8bf4('0x1e')];return _0x5c431c[_0x8bf4('0x1f')](_0x8bf4('0x20'),attributes,{'tableName':_0x8bf4('0x21'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x3a2d41,_0xeb97d4,_0x36ae0f){return getChanSpyPromise(_0x22fa33,_0x3a2d41)[_0x8bf4('0x1c')](function(_0x3e0e27){if(_0x3e0e27&&_0x3e0e27['length']){return _0x22fa33[_0x8bf4('0x22')]['bulkCreate'](_0x3e0e27);}})['then'](function(){_0x36ae0f();})['catch'](function(_0x427b7a){_0x36ae0f(_0x427b7a);});},'afterUpdate':function(_0x1c0ce2,_0x4c8c8d,_0x3d421d){return _0x22fa33[_0x8bf4('0x22')][_0x8bf4('0x23')]({'where':{'ChanSpyId':_0x1c0ce2['id']}})[_0x8bf4('0x1c')](function(){return getChanSpyPromise(_0x22fa33,_0x1c0ce2);})[_0x8bf4('0x1c')](function(_0x37c163){if(_0x37c163&&_0x37c163[_0x8bf4('0x24')]){return _0x22fa33[_0x8bf4('0x22')]['bulkCreate'](_0x37c163);}})[_0x8bf4('0x1c')](function(){_0x3d421d();})[_0x8bf4('0x1d')](function(_0x14d554){_0x3d421d(_0x14d554);});},'afterDestroy':function(_0x13e3e4,_0x2b1a28,_0x51fd73){return _0x22fa33[_0x8bf4('0x22')][_0x8bf4('0x23')]({'where':{'ChanSpyId':_0x13e3e4['id']}})[_0x8bf4('0x1c')](function(){_0x51fd73();})[_0x8bf4('0x1d')](function(_0x4a349e){_0x51fd73(_0x4a349e);});}}});};
\ No newline at end of file
+var _0xea5d=['${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','record','StopMixMonitor','length','concat','internal','findAll','then','catch','exports','define','VoiceChanSpy','voice_chanspy','bulkCreate','destroy','VoiceExtension','lodash','util','./voiceChanSpy.attributes','from-sip','format','%s%s','prefix','system','push','merge','CDR(type)=%s','chanspy','MixMonitor'];(function(_0x52f632,_0x4f951){var _0x47fecd=function(_0xe09fd0){while(--_0xe09fd0){_0x52f632['push'](_0x52f632['shift']());}};_0x47fecd(++_0x4f951);}(_0xea5d,0x1e1));var _0xdea5=function(_0x50d70a,_0x544a7f){_0x50d70a=_0x50d70a-0x0;var _0x296183=_0xea5d[_0x50d70a];return _0x296183;};'use strict';var _=require(_0xdea5('0x0'));var util=require(_0xdea5('0x1'));var BPromise=require('bluebird');var attributes=require(_0xdea5('0x2'));var getUserApplications=function(_0x4481cb,_0x5e8ad9,_0x58a673){var _0x4d095d=0x1;var _0x13d4f1=[];var _0x20f377={'context':_0x5e8ad9['context']||_0xdea5('0x3'),'exten':util[_0xdea5('0x4')](_0xdea5('0x5'),_0x4481cb[_0xdea5('0x6')],_0x58a673),'type':_0xdea5('0x7'),'isApp':![],'ChanSpyId':_0x4481cb['id'],'UserId':_0x5e8ad9['id']};_0x13d4f1[_0xdea5('0x8')](_[_0xdea5('0x9')]({'app':'Set','appdata':util[_0xdea5('0x4')](_0xdea5('0xa'),_0xdea5('0xb')),'priority':_0x4d095d++},_0x20f377));if(_0x4481cb['record']){_0x13d4f1[_0xdea5('0x8')](_[_0xdea5('0x9')]({'app':_0xdea5('0xc'),'appdata':util[_0xdea5('0x4')](_0xdea5('0xd'),_0x4481cb[_0xdea5('0xe')]),'priority':_0x4d095d++},_0x20f377));}if(_0x4481cb[_0xdea5('0xf')]){_0x13d4f1[_0xdea5('0x8')](_[_0xdea5('0x9')]({'app':_0xdea5('0x10'),'appdata':_0x4481cb[_0xdea5('0x11')],'priority':_0x4d095d++},_0x20f377));}_0x13d4f1['push'](_[_0xdea5('0x9')]({'app':_0xdea5('0x12'),'appdata':util[_0xdea5('0x4')](_0xdea5('0x13'),_0x5e8ad9[_0xdea5('0x14')],_0x4481cb[_0xdea5('0x15')]?_0x4481cb[_0xdea5('0x15')][_0xdea5('0x16')](''):''),'priority':_0x4d095d++},_0x20f377));if(_0x4481cb[_0xdea5('0x17')]){_0x13d4f1['push'](_[_0xdea5('0x9')]({'app':_0xdea5('0x18'),'priority':_0x4d095d++},_0x20f377));}return _0x13d4f1;};var getChanSpyApplications=function(_0x497cd1,_0x4dd6e1){var _0x363b60=[];for(var _0x56bdec=0x0,_0x4ca093=0x1;_0x56bdec<_0x4dd6e1[_0xdea5('0x19')];_0x56bdec++,_0x4ca093=0x1){_0x363b60=_0x363b60[_0xdea5('0x1a')](getUserApplications(_0x497cd1,_0x4dd6e1[_0x56bdec],_0x4dd6e1[_0x56bdec][_0xdea5('0x1b')]));if(_0x4dd6e1[_0x56bdec][_0xdea5('0x1b')]!=_0x4dd6e1[_0x56bdec][_0xdea5('0x14')]){_0x363b60=_0x363b60['concat'](getUserApplications(_0x497cd1,_0x4dd6e1[_0x56bdec],_0x4dd6e1[_0x56bdec][_0xdea5('0x14')]));}}return _0x363b60;};var getChanSpyPromise=function(_0x6f29b5,_0x1ddb36){return new BPromise(function(_0x28839f,_0x1daedb){return _0x6f29b5['User'][_0xdea5('0x1c')]({'attributes':['id','name',_0xdea5('0x1b')],'where':{'role':'agent','chanspy':!![]},'raw':!![]})[_0xdea5('0x1d')](function(_0x5b5585){if(_0x5b5585){return _0x28839f(getChanSpyApplications(_0x1ddb36,_0x5b5585));}return _0x28839f([]);})[_0xdea5('0x1e')](function(_0x595f3f){_0x1daedb(_0x595f3f);});});};module[_0xdea5('0x1f')]=function(_0x387d28,_0x16bf5e){var _0x2eec7c=_0x387d28['models'];return _0x387d28[_0xdea5('0x20')](_0xdea5('0x21'),attributes,{'tableName':_0xdea5('0x22'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x106933,_0x513871,_0x12c5b7){return getChanSpyPromise(_0x2eec7c,_0x106933)['then'](function(_0x3b8fd1){if(_0x3b8fd1&&_0x3b8fd1[_0xdea5('0x19')]){return _0x2eec7c['VoiceExtension'][_0xdea5('0x23')](_0x3b8fd1);}})[_0xdea5('0x1d')](function(){_0x12c5b7();})[_0xdea5('0x1e')](function(_0x5f5a18){_0x12c5b7(_0x5f5a18);});},'afterUpdate':function(_0x460ac6,_0x3c840c,_0x15c6dc){return _0x2eec7c['VoiceExtension'][_0xdea5('0x24')]({'where':{'ChanSpyId':_0x460ac6['id']}})[_0xdea5('0x1d')](function(){return getChanSpyPromise(_0x2eec7c,_0x460ac6);})[_0xdea5('0x1d')](function(_0x1632c4){if(_0x1632c4&&_0x1632c4[_0xdea5('0x19')]){return _0x2eec7c[_0xdea5('0x25')][_0xdea5('0x23')](_0x1632c4);}})['then'](function(){_0x15c6dc();})[_0xdea5('0x1e')](function(_0x529411){_0x15c6dc(_0x529411);});},'afterDestroy':function(_0x27a533,_0x34d5d8,_0x504007){return _0x2eec7c[_0xdea5('0x25')]['destroy']({'where':{'ChanSpyId':_0x27a533['id']}})[_0xdea5('0x1d')](function(){_0x504007();})['catch'](function(_0x2b1418){_0x504007(_0x2b1418);});}}});};
\ No newline at end of file
index 6efd916..62c7e4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x407f=['rpc','../../config/environment','jayson/promise','client','http','then','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x47df54,_0x1aeb61){var _0x261b87=function(_0x54bc77){while(--_0x54bc77){_0x47df54['push'](_0x47df54['shift']());}};_0x261b87(++_0x1aeb61);}(_0x407f,0xc2));var _0xf407=function(_0x5c9c86,_0x429dec){_0x5c9c86=_0x5c9c86-0x0;var _0x10bacc=_0x407f[_0x5c9c86];return _0x10bacc;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xf407('0x0'));var rs=require(_0xf407('0x1'));var fs=require('fs');var Redis=require(_0xf407('0x2'));var db=require(_0xf407('0x3'))['db'];var utils=require(_0xf407('0x4'));var logger=require(_0xf407('0x5'))(_0xf407('0x6'));var config=require(_0xf407('0x7'));var jayson=require(_0xf407('0x8'));var client=jayson[_0xf407('0x9')][_0xf407('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2bce9d,_0x2d4ec6,_0x3ac774){return new BPromise(function(_0x38ee37,_0x3ab539){return client['request'](_0x2bce9d,_0x3ac774)[_0xf407('0xb')](function(_0xc3473a){logger[_0xf407('0xc')](_0xf407('0xd'),_0x2d4ec6,'request\x20sent');logger['debug']('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x2d4ec6,_0xf407('0xe'),JSON[_0xf407('0xf')](_0xc3473a));if(_0xc3473a[_0xf407('0x10')]){if(_0xc3473a[_0xf407('0x10')][_0xf407('0x11')]===0x1f4){logger['error'](_0xf407('0xd'),_0x2d4ec6,_0xc3473a[_0xf407('0x10')][_0xf407('0x12')]);return _0x3ab539(_0xc3473a[_0xf407('0x10')][_0xf407('0x12')]);}logger[_0xf407('0x10')](_0xf407('0xd'),_0x2d4ec6,_0xc3473a[_0xf407('0x10')]['message']);return _0x38ee37(_0xc3473a['error'][_0xf407('0x12')]);}else{logger['info'](_0xf407('0xd'),_0x2d4ec6,'request\x20sent');_0x38ee37(_0xc3473a['result'][_0xf407('0x12')]);}})[_0xf407('0x13')](function(_0x1cdc81){logger[_0xf407('0x10')](_0xf407('0xd'),_0x2d4ec6,_0x1cdc81);_0x3ab539(_0x1cdc81);});});}
\ No newline at end of file
+var _0x5ff3=['message','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','VoiceChanSpy,\x20%s,\x20%s'];(function(_0x3a780d,_0x20f4a5){var _0x94ceb=function(_0x182b16){while(--_0x182b16){_0x3a780d['push'](_0x3a780d['shift']());}};_0x94ceb(++_0x20f4a5);}(_0x5ff3,0x17d));var _0x35ff=function(_0x345a32,_0x4afea9){_0x345a32=_0x345a32-0x0;var _0x17ca85=_0x5ff3[_0x345a32];return _0x17ca85;};'use strict';var _=require('lodash');var util=require(_0x35ff('0x0'));var moment=require('moment');var BPromise=require(_0x35ff('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x35ff('0x2'));var db=require(_0x35ff('0x3'))['db'];var utils=require(_0x35ff('0x4'));var logger=require(_0x35ff('0x5'))('rpc');var config=require(_0x35ff('0x6'));var jayson=require(_0x35ff('0x7'));var client=jayson[_0x35ff('0x8')][_0x35ff('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x30c3ff,_0x495c31,_0x92b403){return new BPromise(function(_0x4c9fab,_0x2e7470){return client[_0x35ff('0xa')](_0x30c3ff,_0x92b403)[_0x35ff('0xb')](function(_0x51967a){logger[_0x35ff('0xc')]('VoiceChanSpy,\x20%s,\x20%s',_0x495c31,_0x35ff('0xd'));logger[_0x35ff('0xe')]('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x495c31,'request\x20sent',JSON[_0x35ff('0xf')](_0x51967a));if(_0x51967a['error']){if(_0x51967a['error']['code']===0x1f4){logger[_0x35ff('0x10')](_0x35ff('0x11'),_0x495c31,_0x51967a[_0x35ff('0x10')][_0x35ff('0x12')]);return _0x2e7470(_0x51967a['error'][_0x35ff('0x12')]);}logger[_0x35ff('0x10')](_0x35ff('0x11'),_0x495c31,_0x51967a['error'][_0x35ff('0x12')]);return _0x4c9fab(_0x51967a[_0x35ff('0x10')][_0x35ff('0x12')]);}else{logger[_0x35ff('0xc')](_0x35ff('0x11'),_0x495c31,_0x35ff('0xd'));_0x4c9fab(_0x51967a[_0x35ff('0x13')][_0x35ff('0x12')]);}})[_0x35ff('0x14')](function(_0x2f3456){logger[_0x35ff('0x10')](_0x35ff('0x11'),_0x495c31,_0x2f3456);_0x2e7470(_0x2f3456);});});}
\ No newline at end of file
index 0efe91e..ef1ff99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44fe=['exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','post','create','put','delete','destroy'];(function(_0x416ce9,_0x27d8a9){var _0x2373e8=function(_0x13760a){while(--_0x13760a){_0x416ce9['push'](_0x416ce9['shift']());}};_0x2373e8(++_0x27d8a9);}(_0x44fe,0x91));var _0xe44f=function(_0x5a69d4,_0x5df724){_0x5a69d4=_0x5a69d4-0x0;var _0x29f3da=_0x44fe[_0x5a69d4];return _0x29f3da;};'use strict';var multer=require('multer');var util=require(_0xe44f('0x0'));var path=require(_0xe44f('0x1'));var timeout=require(_0xe44f('0x2'));var express=require(_0xe44f('0x3'));var router=express['Router']();var fs_extra=require(_0xe44f('0x4'));var auth=require(_0xe44f('0x5'));var interaction=require(_0xe44f('0x6'));var config=require(_0xe44f('0x7'));var controller=require('./voiceContext.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xe44f('0x8')](_0xe44f('0x9'),auth[_0xe44f('0xa')](),controller[_0xe44f('0xb')]);router[_0xe44f('0xc')]('/',auth[_0xe44f('0xa')](),controller[_0xe44f('0xd')]);router[_0xe44f('0xe')]('/:id',auth[_0xe44f('0xa')](),controller['update']);router[_0xe44f('0xf')](_0xe44f('0x9'),auth['isAuthenticated'](),controller[_0xe44f('0x10')]);module[_0xe44f('0x11')]=router;
\ No newline at end of file
+var _0x1f65=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','post','create','put','/:id','delete','destroy','multer','util','path','express','Router','fs-extra'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x1f65,0x176));var _0x51f6=function(_0x66dd2a,_0x3a7420){_0x66dd2a=_0x66dd2a-0x0;var _0x3924ec=_0x1f65[_0x66dd2a];return _0x3924ec;};'use strict';var multer=require(_0x51f6('0x0'));var util=require(_0x51f6('0x1'));var path=require(_0x51f6('0x2'));var timeout=require('connect-timeout');var express=require(_0x51f6('0x3'));var router=express[_0x51f6('0x4')]();var fs_extra=require(_0x51f6('0x5'));var auth=require(_0x51f6('0x6'));var interaction=require(_0x51f6('0x7'));var config=require(_0x51f6('0x8'));var controller=require('./voiceContext.controller');router[_0x51f6('0x9')]('/',auth[_0x51f6('0xa')](),controller[_0x51f6('0xb')]);router[_0x51f6('0x9')]('/:id',auth[_0x51f6('0xa')](),controller[_0x51f6('0xc')]);router[_0x51f6('0xd')]('/',auth[_0x51f6('0xa')](),controller[_0x51f6('0xe')]);router[_0x51f6('0xf')](_0x51f6('0x10'),auth[_0x51f6('0xa')](),controller['update']);router[_0x51f6('0x11')]('/:id',auth[_0x51f6('0xa')](),controller[_0x51f6('0x12')]);module['exports']=router;
\ No newline at end of file
index cfb5c6b..0e4ceb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x802c=['exports','STRING','name','BOOLEAN','sequelize'];(function(_0x30a191,_0x38b23b){var _0xf6f720=function(_0x127ac0){while(--_0x127ac0){_0x30a191['push'](_0x30a191['shift']());}};_0xf6f720(++_0x38b23b);}(_0x802c,0xd1));var _0xc802=function(_0x5d4554,_0x3336ba){_0x5d4554=_0x5d4554-0x0;var _0x1fd075=_0x802c[_0x5d4554];return _0x1fd075;};'use strict';var Sequelize=require(_0xc802('0x0'));module[_0xc802('0x1')]={'name':{'type':Sequelize[_0xc802('0x2')],'unique':_0xc802('0x3')},'description':{'type':Sequelize[_0xc802('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xc802('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x81e9=['STRING','name','sequelize','exports'];(function(_0x2664e7,_0x200897){var _0x59d763=function(_0x3b5c8b){while(--_0x3b5c8b){_0x2664e7['push'](_0x2664e7['shift']());}};_0x59d763(++_0x200897);}(_0x81e9,0x15a));var _0x981e=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x81e9[_0x3ab9ee];return _0x82ee88;};'use strict';var Sequelize=require(_0x981e('0x0'));module[_0x981e('0x1')]={'name':{'type':Sequelize[_0x981e('0x2')],'unique':_0x981e('0x3')},'description':{'type':Sequelize[_0x981e('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
index b8aef9f..258327d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5809=['UserProfileResource','stack','name','send','index','VoiceContext','rawAttributes','fieldName','type','key','map','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','merge','VIRTUAL','filter','findAll','rows','show','params','include','options','create','body','readFileSync','root','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','join','server/files/templates/context.ejs','utf8','Reload','render','eml-format','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','squel','jsforce','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','apply','reject','save','update','destroy','get','Contexts'];(function(_0x584ec4,_0x35b3fb){var _0x2c312e=function(_0x44fd6e){while(--_0x44fd6e){_0x584ec4['push'](_0x584ec4['shift']());}};_0x2c312e(++_0x35b3fb);}(_0x5809,0x168));var _0x9580=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x5809[_0x40a045];return _0x1a687c;};'use strict';var emlformat=require(_0x9580('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9580('0x1'));var rp=require(_0x9580('0x2'));var moment=require(_0x9580('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x9580('0x4'));var util=require(_0x9580('0x5'));var path=require(_0x9580('0x6'));var sox=require(_0x9580('0x7'));var csv=require('to-csv');var ejs=require(_0x9580('0x8'));var fs=require('fs');var fs_extra=require(_0x9580('0x9'));var _=require('lodash');var squel=require(_0x9580('0xa'));var crypto=require('crypto');var jsforce=require(_0x9580('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x9580('0xc'));var querystring=require(_0x9580('0xd'));var Papa=require(_0x9580('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9580('0xf'));var as=require(_0x9580('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9580('0x11'))(_0x9580('0x12'));var utils=require(_0x9580('0x13'));var config=require(_0x9580('0x14'));var licenseUtil=require(_0x9580('0x15'));var db=require(_0x9580('0x16'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x9580('0x17')][_0x9580('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x38462a,_0x238127,_0x1d8e61,_0x5629dc){return new BPromise(function(_0x3b34ca,_0x7f813f){var _0x360273=_0x5629dc||client;return _0x360273[_0x9580('0x19')](_0x38462a,_0x1d8e61)[_0x9580('0x1a')](function(_0x3a9f3a){logger[_0x9580('0x1b')](_0x9580('0x1c'),_0x238127,_0x9580('0x1d'));logger[_0x9580('0x1e')](_0x9580('0x1f'),_0x238127,_0x9580('0x1d'),JSON[_0x9580('0x20')](_0x3a9f3a));if(_0x3a9f3a[_0x9580('0x21')]){if(_0x3a9f3a['error']['code']===0x1f4){logger[_0x9580('0x21')](_0x9580('0x1c'),_0x238127,_0x3a9f3a[_0x9580('0x21')]['message']);return _0x7f813f(_0x3a9f3a[_0x9580('0x21')]['message']);}logger[_0x9580('0x21')](_0x9580('0x1c'),_0x238127,_0x3a9f3a['error'][_0x9580('0x22')]);return _0x3b34ca(_0x3a9f3a[_0x9580('0x21')]['message']);}else{logger[_0x9580('0x1b')](_0x9580('0x1c'),_0x238127,'request\x20sent');_0x3b34ca(_0x3a9f3a[_0x9580('0x23')][_0x9580('0x22')]);}})[_0x9580('0x24')](function(_0x5681e8){logger[_0x9580('0x21')](_0x9580('0x1c'),_0x238127,_0x5681e8);_0x7f813f(_0x5681e8);});});}function respondWithStatusCode(_0x24c214,_0x1c078c){_0x1c078c=_0x1c078c||0xcc;return function(_0x128c46){if(_0x128c46){return _0x24c214[_0x9580('0x25')](_0x1c078c);}return _0x24c214[_0x9580('0x26')](_0x1c078c)[_0x9580('0x27')]();};}function respondWithResult(_0x184f7e,_0x4ea319){_0x4ea319=_0x4ea319||0xc8;return function(_0x36d0d3){if(_0x36d0d3){return _0x184f7e[_0x9580('0x26')](_0x4ea319)[_0x9580('0x28')](_0x36d0d3);}};}function respondWithFilteredResult(_0xd43f1,_0x3fe008){return function(_0x418dac){if(_0x418dac){var _0x1f7a96=typeof _0x3fe008[_0x9580('0x29')]===_0x9580('0x2a')&&typeof _0x3fe008['limit']===_0x9580('0x2a');var _0x1a6856=_0x418dac[_0x9580('0x2b')];var _0x4d1827=_0x1f7a96?0x0:_0x3fe008[_0x9580('0x29')];var _0x289fe8=_0x1f7a96?_0x418dac[_0x9580('0x2b')]:_0x3fe008[_0x9580('0x29')]+_0x3fe008[_0x9580('0x2c')];var _0x4d88cf;if(_0x289fe8>=_0x1a6856){_0x289fe8=_0x1a6856;_0x4d88cf=0xc8;}else{_0x4d88cf=0xce;}_0xd43f1[_0x9580('0x26')](_0x4d88cf);return _0xd43f1['set']('Content-Range',_0x4d1827+'-'+_0x289fe8+'/'+_0x1a6856)['json'](_0x418dac);}return null;};}function patchUpdates(_0x117101){return function(_0x5cfb6a){try{jsonpatch[_0x9580('0x2d')](_0x5cfb6a,_0x117101,!![]);}catch(_0x14cc5a){return BPromise[_0x9580('0x2e')](_0x14cc5a);}return _0x5cfb6a[_0x9580('0x2f')]();};}function saveUpdates(_0x1d8488,_0x1de128){return function(_0xfb5418){if(_0xfb5418){return _0xfb5418[_0x9580('0x30')](_0x1d8488)[_0x9580('0x1a')](function(_0x56c619){return _0x56c619;});}return null;};}function removeEntity(_0x33392c,_0x1fa3eb){return function(_0x26e197){if(_0x26e197){return _0x26e197[_0x9580('0x31')]()[_0x9580('0x1a')](function(){var _0x3cbc82=_0x26e197[_0x9580('0x32')]({'plain':!![]});var _0x1f2a75=_0x9580('0x33');return db[_0x9580('0x34')]['destroy']({'where':{'type':_0x1f2a75,'resourceId':_0x3cbc82['id']}})[_0x9580('0x1a')](function(){return _0x26e197;});})[_0x9580('0x1a')](function(){_0x33392c[_0x9580('0x26')](0xcc)[_0x9580('0x27')]();});}};}function handleEntityNotFound(_0x337fd3,_0x8066fc){return function(_0x35a9a7){if(!_0x35a9a7){_0x337fd3[_0x9580('0x25')](0x194);}return _0x35a9a7;};}function handleError(_0xdbe938,_0x597b47){_0x597b47=_0x597b47||0x1f4;return function(_0x5690c3){logger['error'](_0x5690c3[_0x9580('0x35')]);if(_0x5690c3['name']){delete _0x5690c3[_0x9580('0x36')];}_0xdbe938['status'](_0x597b47)[_0x9580('0x37')](_0x5690c3);};}exports[_0x9580('0x38')]=function(_0x3fe5ba,_0x3219c7){var _0x5c09db={},_0x5bb012={},_0x8fac5b={'count':0x0,'rows':[]};var _0x1fb4fa=_['map'](db[_0x9580('0x39')][_0x9580('0x3a')],function(_0x1c4bdc){return{'name':_0x1c4bdc[_0x9580('0x3b')],'type':_0x1c4bdc[_0x9580('0x3c')][_0x9580('0x3d')]};});_0x5bb012['model']=_[_0x9580('0x3e')](_0x1fb4fa,_0x9580('0x36'));_0x5bb012[_0x9580('0x3f')]=_[_0x9580('0x40')](_0x3fe5ba['query']);_0x5bb012['filters']=_[_0x9580('0x41')](_0x5bb012[_0x9580('0x42')],_0x5bb012[_0x9580('0x3f')]);_0x5c09db['attributes']=_[_0x9580('0x41')](_0x5bb012[_0x9580('0x42')],qs[_0x9580('0x43')](_0x3fe5ba[_0x9580('0x3f')][_0x9580('0x43')]));_0x5c09db[_0x9580('0x44')]=_0x5c09db['attributes'][_0x9580('0x45')]?_0x5c09db['attributes']:_0x5bb012[_0x9580('0x42')];if(!_0x3fe5ba[_0x9580('0x3f')][_0x9580('0x46')]('nolimit')){_0x5c09db[_0x9580('0x2c')]=qs[_0x9580('0x2c')](_0x3fe5ba['query']['limit']);_0x5c09db['offset']=qs[_0x9580('0x29')](_0x3fe5ba[_0x9580('0x3f')][_0x9580('0x29')]);}_0x5c09db[_0x9580('0x47')]=qs['sort'](_0x3fe5ba[_0x9580('0x3f')][_0x9580('0x48')]);_0x5c09db[_0x9580('0x49')]=qs[_0x9580('0x4a')](_[_0x9580('0x4b')](_0x3fe5ba[_0x9580('0x3f')],_0x5bb012[_0x9580('0x4a')]),_0x1fb4fa);if(_0x3fe5ba[_0x9580('0x3f')]['filter']){_0x5c09db[_0x9580('0x49')]=_[_0x9580('0x4c')](_0x5c09db[_0x9580('0x49')],{'$or':_[_0x9580('0x3e')](_0x1fb4fa,function(_0x1f4475){if(_0x1f4475[_0x9580('0x3c')]!==_0x9580('0x4d')){var _0xccfe07={};_0xccfe07[_0x1f4475[_0x9580('0x36')]]={'$like':'%'+_0x3fe5ba[_0x9580('0x3f')][_0x9580('0x4e')]+'%'};return _0xccfe07;}})});}_0x5c09db=_[_0x9580('0x4c')]({},_0x5c09db,_0x3fe5ba['options']);var _0x4b0d10={'where':_0x5c09db[_0x9580('0x49')]};return db[_0x9580('0x39')][_0x9580('0x2b')](_0x4b0d10)[_0x9580('0x1a')](function(_0x3873e9){_0x8fac5b[_0x9580('0x2b')]=_0x3873e9;if(_0x3fe5ba[_0x9580('0x3f')]['includeAll']){_0x5c09db['include']=[{'all':!![]}];}return db[_0x9580('0x39')][_0x9580('0x4f')](_0x5c09db);})[_0x9580('0x1a')](function(_0x1a884f){_0x8fac5b[_0x9580('0x50')]=_0x1a884f;return _0x8fac5b;})[_0x9580('0x1a')](respondWithFilteredResult(_0x3219c7,_0x5c09db))[_0x9580('0x24')](handleError(_0x3219c7,null));};exports[_0x9580('0x51')]=function(_0x1e806d,_0x2188a5){var _0x3b2aba={'raw':![],'where':{'id':_0x1e806d[_0x9580('0x52')]['id']}},_0x58730a={};_0x58730a[_0x9580('0x42')]=_[_0x9580('0x40')](db[_0x9580('0x39')][_0x9580('0x3a')]);_0x58730a[_0x9580('0x3f')]=_[_0x9580('0x40')](_0x1e806d[_0x9580('0x3f')]);_0x58730a['filters']=_[_0x9580('0x41')](_0x58730a[_0x9580('0x42')],_0x58730a[_0x9580('0x3f')]);_0x3b2aba[_0x9580('0x44')]=_['intersection'](_0x58730a[_0x9580('0x42')],qs[_0x9580('0x43')](_0x1e806d[_0x9580('0x3f')][_0x9580('0x43')]));_0x3b2aba[_0x9580('0x44')]=_0x3b2aba[_0x9580('0x44')][_0x9580('0x45')]?_0x3b2aba['attributes']:_0x58730a['model'];if(_0x1e806d[_0x9580('0x3f')]['includeAll']){_0x3b2aba[_0x9580('0x53')]=[{'all':!![]}];}_0x3b2aba=_[_0x9580('0x4c')]({},_0x3b2aba,_0x1e806d[_0x9580('0x54')]);return db[_0x9580('0x39')]['find'](_0x3b2aba)[_0x9580('0x1a')](handleEntityNotFound(_0x2188a5,null))[_0x9580('0x1a')](respondWithResult(_0x2188a5,null))[_0x9580('0x24')](handleError(_0x2188a5,null));};exports[_0x9580('0x55')]=function(_0x3fc40b,_0x3051fe,_0x361752){var _0x2fa766;return db[_0x9580('0x39')][_0x9580('0x55')](_0x3fc40b[_0x9580('0x56')],{'raw':!![]})[_0x9580('0x1a')](function(_0xe6e56a){_0x2fa766=_0xe6e56a;return db[_0x9580('0x39')][_0x9580('0x4f')]({'raw':!![]});})[_0x9580('0x1a')](function(_0x118718){var _0x63aa4e=fs[_0x9580('0x57')](path['join'](config[_0x9580('0x58')],'server/files/templates/context.ejs'),'utf8');var _0x2f1fa7=ejs['render'](_0x63aa4e,{'contexts':_0x118718||[]});fs[_0x9580('0x59')](_0x9580('0x5a'),_0x2f1fa7);})[_0x9580('0x1a')](function(){return respondWithRpcPromise('Reload',_0x9580('0x55'),{'module':_0x9580('0x5b')});})[_0x9580('0x1a')](function(){var _0x220145=_0x3fc40b[_0x9580('0x5c')][_0x9580('0x32')]({'plain':!![]});if(!_0x220145)throw new Error(_0x9580('0x5d'));if(_0x220145['role']==='user'){var _0x52fb83=_0x2fa766['get']({'plain':!![]});return db[_0x9580('0x5e')]['find']({'where':{'name':_0x9580('0x33'),'userProfileId':_0x220145[_0x9580('0x5f')]},'raw':!![]})[_0x9580('0x1a')](function(_0x584f25){if(_0x584f25&&_0x584f25['autoAssociation']===0x0){return db[_0x9580('0x34')][_0x9580('0x55')]({'name':_0x52fb83[_0x9580('0x36')],'resourceId':_0x52fb83['id'],'type':_0x584f25[_0x9580('0x36')],'sectionId':_0x584f25['id']},{})[_0x9580('0x1a')](function(){return _0x2fa766;});}else{return _0x2fa766;}})['catch'](function(_0x39af86){logger['error'](_0x9580('0x60'),_0x39af86);throw _0x39af86;});}return _0x2fa766;})[_0x9580('0x1a')](respondWithResult(_0x3051fe,0xc9))[_0x9580('0x24')](handleError(_0x3051fe,null));};exports[_0x9580('0x30')]=function(_0x2116e9,_0x2f7251,_0x545bbf){var _0x1b4904;return db['VoiceContext'][_0x9580('0x61')]({'where':{'id':_0x2116e9[_0x9580('0x52')]['id']}})[_0x9580('0x1a')](handleEntityNotFound(_0x2f7251,null))[_0x9580('0x1a')](saveUpdates(_0x2116e9[_0x9580('0x56')],null))[_0x9580('0x1a')](function(_0x16df3c){if(_0x16df3c){_0x1b4904=_0x16df3c;return db['VoiceContext'][_0x9580('0x4f')]({'raw':!![]});}})[_0x9580('0x1a')](function(_0x4ac1d0){var _0x172aba=fs[_0x9580('0x57')](path[_0x9580('0x62')](config[_0x9580('0x58')],_0x9580('0x63')),_0x9580('0x64'));var _0x5906ea=ejs['render'](_0x172aba,{'contexts':_0x4ac1d0||[]});fs['writeFileSync'](_0x9580('0x5a'),_0x5906ea);})['then'](function(){return respondWithRpcPromise(_0x9580('0x65'),_0x9580('0x30'),{'module':'chan_sip.so'});})[_0x9580('0x1a')](function(){return _0x1b4904;})[_0x9580('0x1a')](respondWithResult(_0x2f7251,null))[_0x9580('0x24')](handleError(_0x2f7251,null));};exports[_0x9580('0x31')]=function(_0x38a4b3,_0x3e60ff,_0x366f5f){var _0x3d6a58;return db[_0x9580('0x39')][_0x9580('0x61')]({'where':{'id':_0x38a4b3[_0x9580('0x52')]['id']}})[_0x9580('0x1a')](handleEntityNotFound(_0x3e60ff,null))['then'](removeEntity(_0x3e60ff,null))[_0x9580('0x1a')](function(){return db[_0x9580('0x39')][_0x9580('0x4f')]({'raw':!![]});})['then'](function(_0x36048e){var _0x33d887=fs[_0x9580('0x57')](path[_0x9580('0x62')](config[_0x9580('0x58')],_0x9580('0x63')),_0x9580('0x64'));var _0x56fc34=ejs[_0x9580('0x66')](_0x33d887,{'contexts':_0x36048e});fs[_0x9580('0x59')](_0x9580('0x5a'),_0x56fc34);return respondWithRpcPromise(_0x9580('0x65'),_0x9580('0x31'),{'module':_0x9580('0x5b')});})[_0x9580('0x24')](handleError(_0x3e60ff,null));};
\ No newline at end of file
+var _0x2ca2=['stack','name','send','index','map','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','VoiceContext','findAll','rows','catch','params','rawAttributes','create','body','readFileSync','root','server/files/templates/context.ejs','utf8','render','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','writeFileSync','Reload','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','save','get','Contexts','UserProfileResource','destroy','end'];(function(_0x51674a,_0x77ccff){var _0x13fca6=function(_0x3d6c27){while(--_0x3d6c27){_0x51674a['push'](_0x51674a['shift']());}};_0x13fca6(++_0x77ccff);}(_0x2ca2,0x1da));var _0x22ca=function(_0x117d07,_0x29a082){_0x117d07=_0x117d07-0x0;var _0x9ff2f5=_0x2ca2[_0x117d07];return _0x9ff2f5;};'use strict';var emlformat=require(_0x22ca('0x0'));var rimraf=require(_0x22ca('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x22ca('0x2'));var rp=require(_0x22ca('0x3'));var moment=require(_0x22ca('0x4'));var BPromise=require(_0x22ca('0x5'));var Mustache=require('mustache');var util=require(_0x22ca('0x6'));var path=require(_0x22ca('0x7'));var sox=require(_0x22ca('0x8'));var csv=require(_0x22ca('0x9'));var ejs=require(_0x22ca('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x22ca('0xb'));var squel=require(_0x22ca('0xc'));var crypto=require(_0x22ca('0xd'));var jsforce=require(_0x22ca('0xe'));var deskjs=require(_0x22ca('0xf'));var toCsv=require(_0x22ca('0x9'));var querystring=require(_0x22ca('0x10'));var Papa=require(_0x22ca('0x11'));var Redis=require(_0x22ca('0x12'));var authService=require(_0x22ca('0x13'));var qs=require(_0x22ca('0x14'));var as=require(_0x22ca('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x22ca('0x16'))(_0x22ca('0x17'));var utils=require('../../config/utils');var config=require(_0x22ca('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x22ca('0x19'))['db'];var jayson=require(_0x22ca('0x1a'));var client=jayson[_0x22ca('0x1b')][_0x22ca('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x258d28,_0x42d11f,_0x2a046f,_0x433e3a){return new BPromise(function(_0x1446c5,_0xe2e0dd){var _0x48e3e6=_0x433e3a||client;return _0x48e3e6[_0x22ca('0x1d')](_0x258d28,_0x2a046f)[_0x22ca('0x1e')](function(_0x139acb){logger['info'](_0x22ca('0x1f'),_0x42d11f,'request\x20sent');logger[_0x22ca('0x20')](_0x22ca('0x21'),_0x42d11f,'request\x20sent',JSON[_0x22ca('0x22')](_0x139acb));if(_0x139acb[_0x22ca('0x23')]){if(_0x139acb[_0x22ca('0x23')][_0x22ca('0x24')]===0x1f4){logger[_0x22ca('0x23')](_0x22ca('0x1f'),_0x42d11f,_0x139acb[_0x22ca('0x23')][_0x22ca('0x25')]);return _0xe2e0dd(_0x139acb[_0x22ca('0x23')][_0x22ca('0x25')]);}logger[_0x22ca('0x23')](_0x22ca('0x1f'),_0x42d11f,_0x139acb[_0x22ca('0x23')][_0x22ca('0x25')]);return _0x1446c5(_0x139acb[_0x22ca('0x23')][_0x22ca('0x25')]);}else{logger[_0x22ca('0x26')](_0x22ca('0x1f'),_0x42d11f,_0x22ca('0x27'));_0x1446c5(_0x139acb[_0x22ca('0x28')][_0x22ca('0x25')]);}})['catch'](function(_0x3b0c0c){logger['error'](_0x22ca('0x1f'),_0x42d11f,_0x3b0c0c);_0xe2e0dd(_0x3b0c0c);});});}function respondWithStatusCode(_0x383950,_0x316c1c){_0x316c1c=_0x316c1c||0xcc;return function(_0x402ef2){if(_0x402ef2){return _0x383950[_0x22ca('0x29')](_0x316c1c);}return _0x383950[_0x22ca('0x2a')](_0x316c1c)['end']();};}function respondWithResult(_0x52ec6e,_0x43408a){_0x43408a=_0x43408a||0xc8;return function(_0xce3aff){if(_0xce3aff){return _0x52ec6e['status'](_0x43408a)[_0x22ca('0x2b')](_0xce3aff);}};}function respondWithFilteredResult(_0x513a7d,_0x1694f3){return function(_0x377f8c){if(_0x377f8c){var _0xe65a8b=typeof _0x1694f3[_0x22ca('0x2c')]===_0x22ca('0x2d')&&typeof _0x1694f3[_0x22ca('0x2e')]===_0x22ca('0x2d');var _0x136544=_0x377f8c['count'];var _0x36bc73=_0xe65a8b?0x0:_0x1694f3[_0x22ca('0x2c')];var _0x3a07cc=_0xe65a8b?_0x377f8c[_0x22ca('0x2f')]:_0x1694f3[_0x22ca('0x2c')]+_0x1694f3[_0x22ca('0x2e')];var _0x13141d;if(_0x3a07cc>=_0x136544){_0x3a07cc=_0x136544;_0x13141d=0xc8;}else{_0x13141d=0xce;}_0x513a7d['status'](_0x13141d);return _0x513a7d[_0x22ca('0x30')](_0x22ca('0x31'),_0x36bc73+'-'+_0x3a07cc+'/'+_0x136544)[_0x22ca('0x2b')](_0x377f8c);}return null;};}function patchUpdates(_0x5e7960){return function(_0x5e091e){try{jsonpatch['apply'](_0x5e091e,_0x5e7960,!![]);}catch(_0x40f27d){return BPromise['reject'](_0x40f27d);}return _0x5e091e[_0x22ca('0x32')]();};}function saveUpdates(_0x413193,_0x18f0bb){return function(_0x317709){if(_0x317709){return _0x317709['update'](_0x413193)[_0x22ca('0x1e')](function(_0x492b5b){return _0x492b5b;});}return null;};}function removeEntity(_0x2140ec,_0x175003){return function(_0x10b4ae){if(_0x10b4ae){return _0x10b4ae['destroy']()[_0x22ca('0x1e')](function(){var _0xbbdc75=_0x10b4ae[_0x22ca('0x33')]({'plain':!![]});var _0x5b0b5d=_0x22ca('0x34');return db[_0x22ca('0x35')][_0x22ca('0x36')]({'where':{'type':_0x5b0b5d,'resourceId':_0xbbdc75['id']}})[_0x22ca('0x1e')](function(){return _0x10b4ae;});})['then'](function(){_0x2140ec[_0x22ca('0x2a')](0xcc)[_0x22ca('0x37')]();});}};}function handleEntityNotFound(_0x28afda,_0x2fcb32){return function(_0x34a935){if(!_0x34a935){_0x28afda[_0x22ca('0x29')](0x194);}return _0x34a935;};}function handleError(_0x47bc53,_0x19957b){_0x19957b=_0x19957b||0x1f4;return function(_0x4874fe){logger[_0x22ca('0x23')](_0x4874fe[_0x22ca('0x38')]);if(_0x4874fe[_0x22ca('0x39')]){delete _0x4874fe[_0x22ca('0x39')];}_0x47bc53[_0x22ca('0x2a')](_0x19957b)[_0x22ca('0x3a')](_0x4874fe);};}exports[_0x22ca('0x3b')]=function(_0x2f45b3,_0x330c6c){var _0x32c55b={},_0x577d34={},_0x2d590d={'count':0x0,'rows':[]};var _0xfa25f2=_[_0x22ca('0x3c')](db['VoiceContext']['rawAttributes'],function(_0x5778a5){return{'name':_0x5778a5['fieldName'],'type':_0x5778a5[_0x22ca('0x3d')]['key']};});_0x577d34[_0x22ca('0x3e')]=_[_0x22ca('0x3c')](_0xfa25f2,_0x22ca('0x39'));_0x577d34[_0x22ca('0x3f')]=_[_0x22ca('0x40')](_0x2f45b3['query']);_0x577d34[_0x22ca('0x41')]=_[_0x22ca('0x42')](_0x577d34['model'],_0x577d34[_0x22ca('0x3f')]);_0x32c55b[_0x22ca('0x43')]=_['intersection'](_0x577d34[_0x22ca('0x3e')],qs['fields'](_0x2f45b3[_0x22ca('0x3f')][_0x22ca('0x44')]));_0x32c55b[_0x22ca('0x43')]=_0x32c55b[_0x22ca('0x43')][_0x22ca('0x45')]?_0x32c55b['attributes']:_0x577d34[_0x22ca('0x3e')];if(!_0x2f45b3[_0x22ca('0x3f')][_0x22ca('0x46')](_0x22ca('0x47'))){_0x32c55b[_0x22ca('0x2e')]=qs[_0x22ca('0x2e')](_0x2f45b3['query'][_0x22ca('0x2e')]);_0x32c55b[_0x22ca('0x2c')]=qs[_0x22ca('0x2c')](_0x2f45b3[_0x22ca('0x3f')]['offset']);}_0x32c55b[_0x22ca('0x48')]=qs[_0x22ca('0x49')](_0x2f45b3[_0x22ca('0x3f')][_0x22ca('0x49')]);_0x32c55b[_0x22ca('0x4a')]=qs[_0x22ca('0x41')](_[_0x22ca('0x4b')](_0x2f45b3['query'],_0x577d34[_0x22ca('0x41')]),_0xfa25f2);if(_0x2f45b3[_0x22ca('0x3f')][_0x22ca('0x4c')]){_0x32c55b[_0x22ca('0x4a')]=_[_0x22ca('0x4d')](_0x32c55b[_0x22ca('0x4a')],{'$or':_[_0x22ca('0x3c')](_0xfa25f2,function(_0x43eed3){if(_0x43eed3[_0x22ca('0x3d')]!=='VIRTUAL'){var _0x5eebfb={};_0x5eebfb[_0x43eed3['name']]={'$like':'%'+_0x2f45b3['query'][_0x22ca('0x4c')]+'%'};return _0x5eebfb;}})});}_0x32c55b=_[_0x22ca('0x4d')]({},_0x32c55b,_0x2f45b3[_0x22ca('0x4e')]);var _0x20e10f={'where':_0x32c55b['where']};return db['VoiceContext'][_0x22ca('0x2f')](_0x20e10f)[_0x22ca('0x1e')](function(_0x569090){_0x2d590d[_0x22ca('0x2f')]=_0x569090;if(_0x2f45b3['query'][_0x22ca('0x4f')]){_0x32c55b[_0x22ca('0x50')]=[{'all':!![]}];}return db[_0x22ca('0x51')][_0x22ca('0x52')](_0x32c55b);})[_0x22ca('0x1e')](function(_0x1f2c7c){_0x2d590d[_0x22ca('0x53')]=_0x1f2c7c;return _0x2d590d;})['then'](respondWithFilteredResult(_0x330c6c,_0x32c55b))[_0x22ca('0x54')](handleError(_0x330c6c,null));};exports['show']=function(_0x51cdf5,_0x25c918){var _0x5335d9={'raw':![],'where':{'id':_0x51cdf5[_0x22ca('0x55')]['id']}},_0x4bfdeb={};_0x4bfdeb[_0x22ca('0x3e')]=_[_0x22ca('0x40')](db[_0x22ca('0x51')][_0x22ca('0x56')]);_0x4bfdeb[_0x22ca('0x3f')]=_[_0x22ca('0x40')](_0x51cdf5[_0x22ca('0x3f')]);_0x4bfdeb[_0x22ca('0x41')]=_[_0x22ca('0x42')](_0x4bfdeb['model'],_0x4bfdeb[_0x22ca('0x3f')]);_0x5335d9[_0x22ca('0x43')]=_[_0x22ca('0x42')](_0x4bfdeb[_0x22ca('0x3e')],qs[_0x22ca('0x44')](_0x51cdf5[_0x22ca('0x3f')]['fields']));_0x5335d9[_0x22ca('0x43')]=_0x5335d9[_0x22ca('0x43')]['length']?_0x5335d9[_0x22ca('0x43')]:_0x4bfdeb[_0x22ca('0x3e')];if(_0x51cdf5[_0x22ca('0x3f')][_0x22ca('0x4f')]){_0x5335d9[_0x22ca('0x50')]=[{'all':!![]}];}_0x5335d9=_['merge']({},_0x5335d9,_0x51cdf5[_0x22ca('0x4e')]);return db[_0x22ca('0x51')]['find'](_0x5335d9)['then'](handleEntityNotFound(_0x25c918,null))[_0x22ca('0x1e')](respondWithResult(_0x25c918,null))['catch'](handleError(_0x25c918,null));};exports[_0x22ca('0x57')]=function(_0x1dd020,_0x3113a5,_0x1f22ca){var _0xb6c57d;return db[_0x22ca('0x51')]['create'](_0x1dd020[_0x22ca('0x58')],{'raw':!![]})[_0x22ca('0x1e')](function(_0x47ca47){_0xb6c57d=_0x47ca47;return db[_0x22ca('0x51')][_0x22ca('0x52')]({'raw':!![]});})['then'](function(_0x27d4ca){var _0x2b13c9=fs[_0x22ca('0x59')](path['join'](config[_0x22ca('0x5a')],_0x22ca('0x5b')),_0x22ca('0x5c'));var _0x1c0d0c=ejs[_0x22ca('0x5d')](_0x2b13c9,{'contexts':_0x27d4ca||[]});fs['writeFileSync'](_0x22ca('0x5e'),_0x1c0d0c);})[_0x22ca('0x1e')](function(){return respondWithRpcPromise('Reload',_0x22ca('0x57'),{'module':_0x22ca('0x5f')});})[_0x22ca('0x1e')](function(){var _0x516f77=_0x1dd020[_0x22ca('0x60')]['get']({'plain':!![]});if(!_0x516f77)throw new Error(_0x22ca('0x61'));if(_0x516f77[_0x22ca('0x62')]===_0x22ca('0x60')){var _0x4fb09f=_0xb6c57d[_0x22ca('0x33')]({'plain':!![]});return db[_0x22ca('0x63')][_0x22ca('0x64')]({'where':{'name':'Contexts','userProfileId':_0x516f77['userProfileId']},'raw':!![]})[_0x22ca('0x1e')](function(_0x1ed55a){if(_0x1ed55a&&_0x1ed55a[_0x22ca('0x65')]===0x0){return db[_0x22ca('0x35')]['create']({'name':_0x4fb09f['name'],'resourceId':_0x4fb09f['id'],'type':_0x1ed55a[_0x22ca('0x39')],'sectionId':_0x1ed55a['id']},{})[_0x22ca('0x1e')](function(){return _0xb6c57d;});}else{return _0xb6c57d;}})[_0x22ca('0x54')](function(_0x93dc05){logger[_0x22ca('0x23')](_0x22ca('0x66'),_0x93dc05);throw _0x93dc05;});}return _0xb6c57d;})[_0x22ca('0x1e')](respondWithResult(_0x3113a5,0xc9))[_0x22ca('0x54')](handleError(_0x3113a5,null));};exports[_0x22ca('0x67')]=function(_0x2a61d2,_0x85372a,_0x47f049){var _0x3a5685;return db[_0x22ca('0x51')][_0x22ca('0x64')]({'where':{'id':_0x2a61d2[_0x22ca('0x55')]['id']}})[_0x22ca('0x1e')](handleEntityNotFound(_0x85372a,null))[_0x22ca('0x1e')](saveUpdates(_0x2a61d2[_0x22ca('0x58')],null))[_0x22ca('0x1e')](function(_0x4479fa){if(_0x4479fa){_0x3a5685=_0x4479fa;return db[_0x22ca('0x51')][_0x22ca('0x52')]({'raw':!![]});}})[_0x22ca('0x1e')](function(_0x4bd971){var _0x1b6f01=fs[_0x22ca('0x59')](path['join'](config['root'],_0x22ca('0x5b')),_0x22ca('0x5c'));var _0x5cfb4a=ejs[_0x22ca('0x5d')](_0x1b6f01,{'contexts':_0x4bd971||[]});fs['writeFileSync'](_0x22ca('0x5e'),_0x5cfb4a);})[_0x22ca('0x1e')](function(){return respondWithRpcPromise('Reload',_0x22ca('0x67'),{'module':_0x22ca('0x5f')});})[_0x22ca('0x1e')](function(){return _0x3a5685;})[_0x22ca('0x1e')](respondWithResult(_0x85372a,null))[_0x22ca('0x54')](handleError(_0x85372a,null));};exports[_0x22ca('0x36')]=function(_0x54f286,_0x26c485,_0x36c234){var _0x38a7df;return db[_0x22ca('0x51')][_0x22ca('0x64')]({'where':{'id':_0x54f286[_0x22ca('0x55')]['id']}})['then'](handleEntityNotFound(_0x26c485,null))['then'](removeEntity(_0x26c485,null))[_0x22ca('0x1e')](function(){return db[_0x22ca('0x51')][_0x22ca('0x52')]({'raw':!![]});})['then'](function(_0x5a3449){var _0x3582c9=fs['readFileSync'](path['join'](config[_0x22ca('0x5a')],_0x22ca('0x5b')),'utf8');var _0x30f4fa=ejs[_0x22ca('0x5d')](_0x3582c9,{'contexts':_0x5a3449});fs[_0x22ca('0x68')](_0x22ca('0x5e'),_0x30f4fa);return respondWithRpcPromise(_0x22ca('0x69'),_0x22ca('0x36'),{'module':'chan_sip.so'});})[_0x22ca('0x54')](handleError(_0x26c485,null));};
\ No newline at end of file
index 10a1585..13e4937 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a2a=['VoiceContext','voice_contexts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./voiceContext.attributes','exports','define'];(function(_0x1da918,_0xeda2fe){var _0x4c6907=function(_0x5ec0d5){while(--_0x5ec0d5){_0x1da918['push'](_0x1da918['shift']());}};_0x4c6907(++_0xeda2fe);}(_0x5a2a,0xaa));var _0xa5a2=function(_0x4e07c1,_0xb4c150){_0x4e07c1=_0x4e07c1-0x0;var _0x3d1c0e=_0x5a2a[_0x4e07c1];return _0x3d1c0e;};'use strict';var _=require(_0xa5a2('0x0'));var util=require(_0xa5a2('0x1'));var logger=require(_0xa5a2('0x2'))(_0xa5a2('0x3'));var moment=require(_0xa5a2('0x4'));var BPromise=require(_0xa5a2('0x5'));var rp=require(_0xa5a2('0x6'));var fs=require('fs');var path=require(_0xa5a2('0x7'));var rimraf=require(_0xa5a2('0x8'));var config=require('../../config/environment');var attributes=require(_0xa5a2('0x9'));module[_0xa5a2('0xa')]=function(_0x2a6880,_0xebc05a){return _0x2a6880[_0xa5a2('0xb')](_0xa5a2('0xc'),attributes,{'tableName':_0xa5a2('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xad5f=['moment','request-promise','path','../../config/environment','define','VoiceContext','util','../../config/logger','api'];(function(_0xbc4d58,_0x1d2563){var _0x4e1c27=function(_0x242e91){while(--_0x242e91){_0xbc4d58['push'](_0xbc4d58['shift']());}};_0x4e1c27(++_0x1d2563);}(_0xad5f,0x84));var _0xfad5=function(_0x209575,_0x417ae0){_0x209575=_0x209575-0x0;var _0x5b183d=_0xad5f[_0x209575];return _0x5b183d;};'use strict';var _=require('lodash');var util=require(_0xfad5('0x0'));var logger=require(_0xfad5('0x1'))(_0xfad5('0x2'));var moment=require(_0xfad5('0x3'));var BPromise=require('bluebird');var rp=require(_0xfad5('0x4'));var fs=require('fs');var path=require(_0xfad5('0x5'));var rimraf=require('rimraf');var config=require(_0xfad5('0x6'));var attributes=require('./voiceContext.attributes');module['exports']=function(_0x34cb3f,_0x11522b){return _0x34cb3f[_0xfad5('0x7')](_0xfad5('0x8'),attributes,{'tableName':'voice_contexts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0b4d0e2..f95d45c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8ce=['lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch'];(function(_0x546c68,_0x5c0116){var _0x4a2389=function(_0x5aa205){while(--_0x5aa205){_0x546c68['push'](_0x546c68['shift']());}};_0x4a2389(++_0x5c0116);}(_0xc8ce,0x176));var _0xec8c=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xc8ce[_0x45e98e];return _0x374dba;};'use strict';var _=require(_0xec8c('0x0'));var util=require('util');var moment=require(_0xec8c('0x1'));var BPromise=require(_0xec8c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xec8c('0x3'));var db=require(_0xec8c('0x4'))['db'];var utils=require(_0xec8c('0x5'));var logger=require('../../config/logger')(_0xec8c('0x6'));var config=require(_0xec8c('0x7'));var jayson=require(_0xec8c('0x8'));var client=jayson[_0xec8c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x543f7c,_0x1229b8,_0x3567f9){return new BPromise(function(_0x8aa65f,_0x9335df){return client[_0xec8c('0xa')](_0x543f7c,_0x3567f9)[_0xec8c('0xb')](function(_0x26239b){logger[_0xec8c('0xc')](_0xec8c('0xd'),_0x1229b8,_0xec8c('0xe'));logger[_0xec8c('0xf')](_0xec8c('0x10'),_0x1229b8,_0xec8c('0xe'),JSON[_0xec8c('0x11')](_0x26239b));if(_0x26239b[_0xec8c('0x12')]){if(_0x26239b[_0xec8c('0x12')]['code']===0x1f4){logger[_0xec8c('0x12')]('VoiceContext,\x20%s,\x20%s',_0x1229b8,_0x26239b['error'][_0xec8c('0x13')]);return _0x9335df(_0x26239b[_0xec8c('0x12')][_0xec8c('0x13')]);}logger[_0xec8c('0x12')]('VoiceContext,\x20%s,\x20%s',_0x1229b8,_0x26239b[_0xec8c('0x12')][_0xec8c('0x13')]);return _0x8aa65f(_0x26239b[_0xec8c('0x12')][_0xec8c('0x13')]);}else{logger['info']('VoiceContext,\x20%s,\x20%s',_0x1229b8,_0xec8c('0xe'));_0x8aa65f(_0x26239b[_0xec8c('0x14')][_0xec8c('0x13')]);}})[_0xec8c('0x15')](function(_0x343d3f){logger['error'](_0xec8c('0xd'),_0x1229b8,_0x343d3f);_0x9335df(_0x343d3f);});});}
\ No newline at end of file
+var _0xe330=['code','message','result','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x4f9b3a,_0x4b31a2){var _0x10cb16=function(_0x4b156f){while(--_0x4b156f){_0x4f9b3a['push'](_0x4f9b3a['shift']());}};_0x10cb16(++_0x4b31a2);}(_0xe330,0x96));var _0x0e33=function(_0x34ff0b,_0x3432a3){_0x34ff0b=_0x34ff0b-0x0;var _0x1b0d1d=_0xe330[_0x34ff0b];return _0x1b0d1d;};'use strict';var _=require('lodash');var util=require(_0x0e33('0x0'));var moment=require(_0x0e33('0x1'));var BPromise=require(_0x0e33('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0e33('0x3'))['db'];var utils=require(_0x0e33('0x4'));var logger=require('../../config/logger')(_0x0e33('0x5'));var config=require(_0x0e33('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x0e33('0x7')][_0x0e33('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2db301,_0x1668a2,_0x21553b){return new BPromise(function(_0x3e4028,_0x2350dd){return client[_0x0e33('0x9')](_0x2db301,_0x21553b)[_0x0e33('0xa')](function(_0x391713){logger[_0x0e33('0xb')](_0x0e33('0xc'),_0x1668a2,'request\x20sent');logger[_0x0e33('0xd')](_0x0e33('0xe'),_0x1668a2,_0x0e33('0xf'),JSON[_0x0e33('0x10')](_0x391713));if(_0x391713['error']){if(_0x391713[_0x0e33('0x11')][_0x0e33('0x12')]===0x1f4){logger[_0x0e33('0x11')](_0x0e33('0xc'),_0x1668a2,_0x391713['error'][_0x0e33('0x13')]);return _0x2350dd(_0x391713[_0x0e33('0x11')]['message']);}logger[_0x0e33('0x11')](_0x0e33('0xc'),_0x1668a2,_0x391713[_0x0e33('0x11')][_0x0e33('0x13')]);return _0x3e4028(_0x391713[_0x0e33('0x11')][_0x0e33('0x13')]);}else{logger[_0x0e33('0xb')](_0x0e33('0xc'),_0x1668a2,_0x0e33('0xf'));_0x3e4028(_0x391713[_0x0e33('0x14')]['message']);}})['catch'](function(_0x6f3075){logger[_0x0e33('0x11')](_0x0e33('0xc'),_0x1668a2,_0x6f3075);_0x2350dd(_0x6f3075);});});}
\ No newline at end of file
index 82b35f8..c7ec49a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79d8=['fs-extra','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','update','exports','multer','util','path','connect-timeout','Router'];(function(_0x486ab6,_0x257c0a){var _0x1ce5ea=function(_0x1443a5){while(--_0x1443a5){_0x486ab6['push'](_0x486ab6['shift']());}};_0x1ce5ea(++_0x257c0a);}(_0x79d8,0x67));var _0x879d=function(_0x5df843,_0x35331a){_0x5df843=_0x5df843-0x0;var _0x160f4f=_0x79d8[_0x5df843];return _0x160f4f;};'use strict';var multer=require(_0x879d('0x0'));var util=require(_0x879d('0x1'));var path=require(_0x879d('0x2'));var timeout=require(_0x879d('0x3'));var express=require('express');var router=express[_0x879d('0x4')]();var fs_extra=require(_0x879d('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x879d('0x6'));var config=require(_0x879d('0x7'));var controller=require(_0x879d('0x8'));router['get']('/',auth[_0x879d('0x9')](),controller[_0x879d('0xa')]);router[_0x879d('0xb')](_0x879d('0xc'),auth['isAuthenticated'](),controller[_0x879d('0xd')]);router[_0x879d('0xb')](_0x879d('0xe'),auth[_0x879d('0x9')](),controller[_0x879d('0xf')]);router['post']('/',auth[_0x879d('0x9')](),controller['create']);router['put'](_0x879d('0xe'),auth[_0x879d('0x9')](),controller[_0x879d('0x10')]);router['delete'](_0x879d('0xe'),auth[_0x879d('0x9')](),controller['destroy']);module[_0x879d('0x11')]=router;
\ No newline at end of file
+var _0x38fd=['isAuthenticated','index','/describe','describe','/:id','show','post','create','delete','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','get'];(function(_0x46dce0,_0x2e12a8){var _0x254615=function(_0x172af0){while(--_0x172af0){_0x46dce0['push'](_0x46dce0['shift']());}};_0x254615(++_0x2e12a8);}(_0x38fd,0x100));var _0xd38f=function(_0x1a2b10,_0x379c94){_0x1a2b10=_0x1a2b10-0x0;var _0x2f1706=_0x38fd[_0x1a2b10];return _0x2f1706;};'use strict';var multer=require(_0xd38f('0x0'));var util=require(_0xd38f('0x1'));var path=require(_0xd38f('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd38f('0x3')]();var fs_extra=require(_0xd38f('0x4'));var auth=require(_0xd38f('0x5'));var interaction=require(_0xd38f('0x6'));var config=require(_0xd38f('0x7'));var controller=require(_0xd38f('0x8'));router[_0xd38f('0x9')]('/',auth[_0xd38f('0xa')](),controller[_0xd38f('0xb')]);router[_0xd38f('0x9')](_0xd38f('0xc'),auth[_0xd38f('0xa')](),controller[_0xd38f('0xd')]);router['get'](_0xd38f('0xe'),auth[_0xd38f('0xa')](),controller[_0xd38f('0xf')]);router[_0xd38f('0x10')]('/',auth[_0xd38f('0xa')](),controller[_0xd38f('0x11')]);router['put']('/:id',auth[_0xd38f('0xa')](),controller['update']);router[_0xd38f('0x12')]('/:id',auth[_0xd38f('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 66c067a..23150ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['STRING','INTEGER','DATE','called,connect,complete','sequelize','exports'];(function(_0x38782c,_0x5c9fef){var _0x3708bf=function(_0x595e13){while(--_0x595e13){_0x38782c['push'](_0x38782c['shift']());}};_0x3708bf(++_0x5c9fef);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x5d5d29,_0x2921b7){_0x5d5d29=_0x5d5d29-0x0;var _0x3838b9=_0xd6d6[_0x5d5d29];return _0x3838b9;};'use strict';var Sequelize=require(_0x6d6d('0x0'));module[_0x6d6d('0x1')]={'privilege':{'type':Sequelize[_0x6d6d('0x2')]},'channel':{'type':Sequelize[_0x6d6d('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x6d6d('0x2')]},'calleridnum':{'type':Sequelize[_0x6d6d('0x2')]},'calleridname':{'type':Sequelize[_0x6d6d('0x2')]},'connectedlinenum':{'type':Sequelize[_0x6d6d('0x2')]},'connectedlinename':{'type':Sequelize[_0x6d6d('0x2')]},'language':{'type':Sequelize[_0x6d6d('0x2')]},'accountcode':{'type':Sequelize[_0x6d6d('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x6d6d('0x2')]},'priority':{'type':Sequelize[_0x6d6d('0x3')]},'uniqueid':{'type':Sequelize[_0x6d6d('0x2')]},'linkedid':{'type':Sequelize[_0x6d6d('0x2')]},'destchannel':{'type':Sequelize[_0x6d6d('0x2')]},'destchannelstate':{'type':Sequelize[_0x6d6d('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x6d6d('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x6d6d('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x6d6d('0x2')]},'destlanguage':{'type':Sequelize[_0x6d6d('0x2')]},'destaccountcode':{'type':Sequelize[_0x6d6d('0x2')]},'destcontext':{'type':Sequelize[_0x6d6d('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x6d6d('0x3')]},'destuniqueid':{'type':Sequelize[_0x6d6d('0x2')]},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize[_0x6d6d('0x2')]},'starttime':{'type':Sequelize[_0x6d6d('0x4')]},'answertime':{'type':Sequelize[_0x6d6d('0x4')]},'endtime':{'type':Sequelize[_0x6d6d('0x4')]},'lastevent':{'type':Sequelize[_0x6d6d('0x2')],'comment':_0x6d6d('0x5')},'routeId':{'type':Sequelize[_0x6d6d('0x3')]},'duration':{'type':Sequelize[_0x6d6d('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0x6d6d('0x3')]}};
\ No newline at end of file
+var _0xb821=['DATE','called,connect,complete','exports','STRING','INTEGER'];(function(_0x80b6a,_0x1b138c){var _0x58de9b=function(_0x1973ae){while(--_0x1973ae){_0x80b6a['push'](_0x80b6a['shift']());}};_0x58de9b(++_0x1b138c);}(_0xb821,0xa7));var _0x1b82=function(_0xa5ea43,_0x20a6a6){_0xa5ea43=_0xa5ea43-0x0;var _0x13f600=_0xb821[_0xa5ea43];return _0x13f600;};'use strict';var Sequelize=require('sequelize');module[_0x1b82('0x0')]={'privilege':{'type':Sequelize[_0x1b82('0x1')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x1b82('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x1b82('0x1')]},'connectedlinename':{'type':Sequelize[_0x1b82('0x1')]},'language':{'type':Sequelize[_0x1b82('0x1')]},'accountcode':{'type':Sequelize[_0x1b82('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x1b82('0x1')]},'priority':{'type':Sequelize[_0x1b82('0x2')]},'uniqueid':{'type':Sequelize[_0x1b82('0x1')]},'linkedid':{'type':Sequelize[_0x1b82('0x1')]},'destchannel':{'type':Sequelize[_0x1b82('0x1')]},'destchannelstate':{'type':Sequelize[_0x1b82('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x1b82('0x1')]},'destcalleridnum':{'type':Sequelize[_0x1b82('0x1')]},'destcalleridname':{'type':Sequelize[_0x1b82('0x1')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x1b82('0x1')]},'destlanguage':{'type':Sequelize[_0x1b82('0x1')]},'destaccountcode':{'type':Sequelize[_0x1b82('0x1')]},'destcontext':{'type':Sequelize[_0x1b82('0x1')]},'destexten':{'type':Sequelize[_0x1b82('0x1')]},'destpriority':{'type':Sequelize[_0x1b82('0x2')]},'destuniqueid':{'type':Sequelize[_0x1b82('0x1')]},'destlinkedid':{'type':Sequelize[_0x1b82('0x1')]},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize[_0x1b82('0x1')]},'starttime':{'type':Sequelize[_0x1b82('0x3')]},'answertime':{'type':Sequelize[_0x1b82('0x3')]},'endtime':{'type':Sequelize[_0x1b82('0x3')]},'lastevent':{'type':Sequelize['STRING'],'comment':_0x1b82('0x4')},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize[_0x1b82('0x2')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 564af38..0be15cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87eb=['model','query','keys','filters','intersection','attributes','fields','sort','filter','VIRTUAL','merge','options','where','then','includeAll','findAll','rows','catch','show','length','include','find','create','body','params','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','limit','Content-Range','apply','reject','save','update','destroy','error','stack','name','send','index','map','VoiceDialReport','rawAttributes','fieldName','type'];(function(_0x196ce1,_0x46e836){var _0x360a64=function(_0x3f339f){while(--_0x3f339f){_0x196ce1['push'](_0x196ce1['shift']());}};_0x360a64(++_0x46e836);}(_0x87eb,0x9f));var _0xb87e=function(_0x4c440b,_0x3ea627){_0x4c440b=_0x4c440b-0x0;var _0x2d48cf=_0x87eb[_0x4c440b];return _0x2d48cf;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xb87e('0x0'));var rp=require('request-promise');var moment=require(_0xb87e('0x1'));var BPromise=require('bluebird');var Mustache=require(_0xb87e('0x2'));var util=require(_0xb87e('0x3'));var path=require(_0xb87e('0x4'));var sox=require(_0xb87e('0x5'));var csv=require('to-csv');var ejs=require(_0xb87e('0x6'));var fs=require('fs');var fs_extra=require(_0xb87e('0x7'));var _=require(_0xb87e('0x8'));var squel=require('squel');var crypto=require(_0xb87e('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xb87e('0xa'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb87e('0xb'));var Redis=require(_0xb87e('0xc'));var authService=require(_0xb87e('0xd'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb87e('0xe'))('api');var utils=require(_0xb87e('0xf'));var config=require(_0xb87e('0x10'));var licenseUtil=require(_0xb87e('0x11'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x41d4ae,_0x4323fd){_0x4323fd=_0x4323fd||0xcc;return function(_0x3ec506){if(_0x3ec506){return _0x41d4ae[_0xb87e('0x12')](_0x4323fd);}return _0x41d4ae[_0xb87e('0x13')](_0x4323fd)[_0xb87e('0x14')]();};}function respondWithResult(_0x4dfe89,_0x415692){_0x415692=_0x415692||0xc8;return function(_0x3aaf63){if(_0x3aaf63){return _0x4dfe89['status'](_0x415692)[_0xb87e('0x15')](_0x3aaf63);}};}function respondWithFilteredResult(_0x2fa96a,_0x3f9b12){return function(_0x161c92){if(_0x161c92){var _0x2acdce=typeof _0x3f9b12['offset']===_0xb87e('0x16')&&typeof _0x3f9b12['limit']===_0xb87e('0x16');var _0x11bb72=_0x161c92[_0xb87e('0x17')];var _0x7a85b1=_0x2acdce?0x0:_0x3f9b12[_0xb87e('0x18')];var _0x59547e=_0x2acdce?_0x161c92['count']:_0x3f9b12[_0xb87e('0x18')]+_0x3f9b12[_0xb87e('0x19')];var _0x756462;if(_0x59547e>=_0x11bb72){_0x59547e=_0x11bb72;_0x756462=0xc8;}else{_0x756462=0xce;}_0x2fa96a[_0xb87e('0x13')](_0x756462);return _0x2fa96a['set'](_0xb87e('0x1a'),_0x7a85b1+'-'+_0x59547e+'/'+_0x11bb72)[_0xb87e('0x15')](_0x161c92);}return null;};}function patchUpdates(_0x18fe6f){return function(_0x11e9eb){try{jsonpatch[_0xb87e('0x1b')](_0x11e9eb,_0x18fe6f,!![]);}catch(_0x328f93){return BPromise[_0xb87e('0x1c')](_0x328f93);}return _0x11e9eb[_0xb87e('0x1d')]();};}function saveUpdates(_0x1a7f9d,_0x594e7e){return function(_0x28835e){if(_0x28835e){return _0x28835e[_0xb87e('0x1e')](_0x1a7f9d)['then'](function(_0x200e20){return _0x200e20;});}return null;};}function removeEntity(_0x5bd9de,_0x46fa61){return function(_0x29857e){if(_0x29857e){return _0x29857e[_0xb87e('0x1f')]()['then'](function(){_0x5bd9de[_0xb87e('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41a66b,_0x48bcb4){return function(_0x20bad5){if(!_0x20bad5){_0x41a66b[_0xb87e('0x12')](0x194);}return _0x20bad5;};}function handleError(_0xd10757,_0x3b6ad2){_0x3b6ad2=_0x3b6ad2||0x1f4;return function(_0x2a6847){logger[_0xb87e('0x20')](_0x2a6847[_0xb87e('0x21')]);if(_0x2a6847[_0xb87e('0x22')]){delete _0x2a6847[_0xb87e('0x22')];}_0xd10757[_0xb87e('0x13')](_0x3b6ad2)[_0xb87e('0x23')](_0x2a6847);};}exports[_0xb87e('0x24')]=function(_0x555aba,_0x38669d){var _0x256c52={},_0x164432={},_0x2fd83e={'count':0x0,'rows':[]};var _0x5b1c14=_[_0xb87e('0x25')](db[_0xb87e('0x26')][_0xb87e('0x27')],function(_0x290eec){return{'name':_0x290eec[_0xb87e('0x28')],'type':_0x290eec[_0xb87e('0x29')]['key']};});_0x164432[_0xb87e('0x2a')]=_[_0xb87e('0x25')](_0x5b1c14,_0xb87e('0x22'));_0x164432[_0xb87e('0x2b')]=_[_0xb87e('0x2c')](_0x555aba[_0xb87e('0x2b')]);_0x164432[_0xb87e('0x2d')]=_[_0xb87e('0x2e')](_0x164432[_0xb87e('0x2a')],_0x164432[_0xb87e('0x2b')]);_0x256c52[_0xb87e('0x2f')]=_[_0xb87e('0x2e')](_0x164432[_0xb87e('0x2a')],qs[_0xb87e('0x30')](_0x555aba[_0xb87e('0x2b')][_0xb87e('0x30')]));_0x256c52[_0xb87e('0x2f')]=_0x256c52['attributes']['length']?_0x256c52[_0xb87e('0x2f')]:_0x164432['model'];if(!_0x555aba[_0xb87e('0x2b')]['hasOwnProperty']('nolimit')){_0x256c52[_0xb87e('0x19')]=qs[_0xb87e('0x19')](_0x555aba[_0xb87e('0x2b')]['limit']);_0x256c52['offset']=qs[_0xb87e('0x18')](_0x555aba[_0xb87e('0x2b')][_0xb87e('0x18')]);}_0x256c52['order']=qs['sort'](_0x555aba[_0xb87e('0x2b')][_0xb87e('0x31')]);_0x256c52['where']=qs[_0xb87e('0x2d')](_['pick'](_0x555aba[_0xb87e('0x2b')],_0x164432[_0xb87e('0x2d')]),_0x5b1c14);if(_0x555aba[_0xb87e('0x2b')][_0xb87e('0x32')]){_0x256c52['where']=_['merge'](_0x256c52['where'],{'$or':_[_0xb87e('0x25')](_0x5b1c14,function(_0xdac33){if(_0xdac33[_0xb87e('0x29')]!==_0xb87e('0x33')){var _0xb44952={};_0xb44952[_0xdac33[_0xb87e('0x22')]]={'$like':'%'+_0x555aba[_0xb87e('0x2b')][_0xb87e('0x32')]+'%'};return _0xb44952;}})});}_0x256c52=_[_0xb87e('0x34')]({},_0x256c52,_0x555aba[_0xb87e('0x35')]);var _0x51d295={'where':_0x256c52[_0xb87e('0x36')]};return db[_0xb87e('0x26')]['count'](_0x51d295)[_0xb87e('0x37')](function(_0x510246){_0x2fd83e['count']=_0x510246;if(_0x555aba['query'][_0xb87e('0x38')]){_0x256c52['include']=[{'all':!![]}];}return db[_0xb87e('0x26')][_0xb87e('0x39')](_0x256c52);})['then'](function(_0x1dcccc){_0x2fd83e[_0xb87e('0x3a')]=_0x1dcccc;return _0x2fd83e;})['then'](respondWithFilteredResult(_0x38669d,_0x256c52))[_0xb87e('0x3b')](handleError(_0x38669d,null));};exports[_0xb87e('0x3c')]=function(_0x22dff1,_0x519e2b){var _0x6e2e3c={'raw':!![],'where':{'id':_0x22dff1['params']['id']}},_0x4a5f42={};_0x4a5f42[_0xb87e('0x2a')]=_[_0xb87e('0x2c')](db[_0xb87e('0x26')]['rawAttributes']);_0x4a5f42['query']=_[_0xb87e('0x2c')](_0x22dff1[_0xb87e('0x2b')]);_0x4a5f42[_0xb87e('0x2d')]=_[_0xb87e('0x2e')](_0x4a5f42[_0xb87e('0x2a')],_0x4a5f42[_0xb87e('0x2b')]);_0x6e2e3c[_0xb87e('0x2f')]=_['intersection'](_0x4a5f42['model'],qs[_0xb87e('0x30')](_0x22dff1[_0xb87e('0x2b')][_0xb87e('0x30')]));_0x6e2e3c[_0xb87e('0x2f')]=_0x6e2e3c[_0xb87e('0x2f')][_0xb87e('0x3d')]?_0x6e2e3c[_0xb87e('0x2f')]:_0x4a5f42['model'];if(_0x22dff1['query'][_0xb87e('0x38')]){_0x6e2e3c[_0xb87e('0x3e')]=[{'all':!![]}];}_0x6e2e3c=_[_0xb87e('0x34')]({},_0x6e2e3c,_0x22dff1[_0xb87e('0x35')]);return db[_0xb87e('0x26')][_0xb87e('0x3f')](_0x6e2e3c)['then'](handleEntityNotFound(_0x519e2b,null))[_0xb87e('0x37')](respondWithResult(_0x519e2b,null))[_0xb87e('0x3b')](handleError(_0x519e2b,null));};exports[_0xb87e('0x40')]=function(_0x392db8,_0x29ff23){return db['VoiceDialReport'][_0xb87e('0x40')](_0x392db8[_0xb87e('0x41')],{})[_0xb87e('0x37')](respondWithResult(_0x29ff23,0xc9))['catch'](handleError(_0x29ff23,null));};exports[_0xb87e('0x1e')]=function(_0x55a1b0,_0x335776){if(_0x55a1b0[_0xb87e('0x41')]['id']){delete _0x55a1b0['body']['id'];}return db[_0xb87e('0x26')][_0xb87e('0x3f')]({'where':{'id':_0x55a1b0[_0xb87e('0x42')]['id']}})[_0xb87e('0x37')](handleEntityNotFound(_0x335776,null))[_0xb87e('0x37')](saveUpdates(_0x55a1b0['body'],null))[_0xb87e('0x37')](respondWithResult(_0x335776,null))[_0xb87e('0x3b')](handleError(_0x335776,null));};exports[_0xb87e('0x1f')]=function(_0x3333e1,_0x211a95){return db['VoiceDialReport'][_0xb87e('0x3f')]({'where':{'id':_0x3333e1['params']['id']}})['then'](handleEntityNotFound(_0x211a95,null))[_0xb87e('0x37')](removeEntity(_0x211a95,null))[_0xb87e('0x3b')](handleError(_0x211a95,null));};exports['describe']=function(_0x162c00,_0x4dc8d5){return db['VoiceDialReport']['describe']()[_0xb87e('0x37')](respondWithResult(_0x4dc8d5,null))[_0xb87e('0x3b')](handleError(_0x4dc8d5,null));};
\ No newline at end of file
+var _0x3518=['include','rows','catch','show','keys','options','find','create','body','update','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','save','then','destroy','stack','send','index','map','rawAttributes','fieldName','type','key','model','name','query','filters','intersection','fields','attributes','length','order','sort','where','merge','VIRTUAL','filter','VoiceDialReport','includeAll'];(function(_0x5efe96,_0x220779){var _0x2ec08c=function(_0x4202db){while(--_0x4202db){_0x5efe96['push'](_0x5efe96['shift']());}};_0x2ec08c(++_0x220779);}(_0x3518,0x9c));var _0x8351=function(_0x395bfe,_0x4db521){_0x395bfe=_0x395bfe-0x0;var _0x35c81c=_0x3518[_0x395bfe];return _0x35c81c;};'use strict';var emlformat=require(_0x8351('0x0'));var rimraf=require(_0x8351('0x1'));var zipdir=require(_0x8351('0x2'));var jsonpatch=require(_0x8351('0x3'));var rp=require(_0x8351('0x4'));var moment=require(_0x8351('0x5'));var BPromise=require(_0x8351('0x6'));var Mustache=require('mustache');var util=require(_0x8351('0x7'));var path=require(_0x8351('0x8'));var sox=require(_0x8351('0x9'));var csv=require(_0x8351('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8351('0xb'));var _=require(_0x8351('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x8351('0xd'));var toCsv=require(_0x8351('0xa'));var querystring=require(_0x8351('0xe'));var Papa=require(_0x8351('0xf'));var Redis=require(_0x8351('0x10'));var authService=require(_0x8351('0x11'));var qs=require(_0x8351('0x12'));var as=require(_0x8351('0x13'));var hardwareService=require(_0x8351('0x14'));var logger=require('../../config/logger')(_0x8351('0x15'));var utils=require(_0x8351('0x16'));var config=require(_0x8351('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x8351('0x18'))['db'];function respondWithStatusCode(_0x4b04f6,_0x13c32b){_0x13c32b=_0x13c32b||0xcc;return function(_0x11e964){if(_0x11e964){return _0x4b04f6['sendStatus'](_0x13c32b);}return _0x4b04f6[_0x8351('0x19')](_0x13c32b)[_0x8351('0x1a')]();};}function respondWithResult(_0x448170,_0x21aae1){_0x21aae1=_0x21aae1||0xc8;return function(_0x4d2c01){if(_0x4d2c01){return _0x448170['status'](_0x21aae1)[_0x8351('0x1b')](_0x4d2c01);}};}function respondWithFilteredResult(_0x36be49,_0x5df802){return function(_0x35209e){if(_0x35209e){var _0x3ec4b5=typeof _0x5df802[_0x8351('0x1c')]===_0x8351('0x1d')&&typeof _0x5df802[_0x8351('0x1e')]===_0x8351('0x1d');var _0x4506db=_0x35209e[_0x8351('0x1f')];var _0x6c6252=_0x3ec4b5?0x0:_0x5df802[_0x8351('0x1c')];var _0xcafbd9=_0x3ec4b5?_0x35209e['count']:_0x5df802[_0x8351('0x1c')]+_0x5df802[_0x8351('0x1e')];var _0x37cbe3;if(_0xcafbd9>=_0x4506db){_0xcafbd9=_0x4506db;_0x37cbe3=0xc8;}else{_0x37cbe3=0xce;}_0x36be49['status'](_0x37cbe3);return _0x36be49['set'](_0x8351('0x20'),_0x6c6252+'-'+_0xcafbd9+'/'+_0x4506db)[_0x8351('0x1b')](_0x35209e);}return null;};}function patchUpdates(_0x1e33cf){return function(_0x2cf95b){try{jsonpatch['apply'](_0x2cf95b,_0x1e33cf,!![]);}catch(_0x38230e){return BPromise['reject'](_0x38230e);}return _0x2cf95b[_0x8351('0x21')]();};}function saveUpdates(_0x3ddb0,_0x33f2e4){return function(_0x12b100){if(_0x12b100){return _0x12b100['update'](_0x3ddb0)[_0x8351('0x22')](function(_0x56b077){return _0x56b077;});}return null;};}function removeEntity(_0x5ab8b7,_0x4a2d4a){return function(_0x27dd14){if(_0x27dd14){return _0x27dd14[_0x8351('0x23')]()[_0x8351('0x22')](function(){_0x5ab8b7[_0x8351('0x19')](0xcc)[_0x8351('0x1a')]();});}};}function handleEntityNotFound(_0x4bee08,_0x45cf27){return function(_0x27d309){if(!_0x27d309){_0x4bee08['sendStatus'](0x194);}return _0x27d309;};}function handleError(_0x550290,_0x54189d){_0x54189d=_0x54189d||0x1f4;return function(_0x307bd1){logger['error'](_0x307bd1[_0x8351('0x24')]);if(_0x307bd1['name']){delete _0x307bd1['name'];}_0x550290['status'](_0x54189d)[_0x8351('0x25')](_0x307bd1);};}exports[_0x8351('0x26')]=function(_0x21f532,_0x317bc8){var _0x4ec386={},_0x464190={},_0x1c1b74={'count':0x0,'rows':[]};var _0x241ec9=_[_0x8351('0x27')](db['VoiceDialReport'][_0x8351('0x28')],function(_0x2643ca){return{'name':_0x2643ca[_0x8351('0x29')],'type':_0x2643ca[_0x8351('0x2a')][_0x8351('0x2b')]};});_0x464190[_0x8351('0x2c')]=_[_0x8351('0x27')](_0x241ec9,_0x8351('0x2d'));_0x464190[_0x8351('0x2e')]=_['keys'](_0x21f532[_0x8351('0x2e')]);_0x464190[_0x8351('0x2f')]=_['intersection'](_0x464190[_0x8351('0x2c')],_0x464190[_0x8351('0x2e')]);_0x4ec386['attributes']=_[_0x8351('0x30')](_0x464190['model'],qs[_0x8351('0x31')](_0x21f532[_0x8351('0x2e')][_0x8351('0x31')]));_0x4ec386[_0x8351('0x32')]=_0x4ec386[_0x8351('0x32')][_0x8351('0x33')]?_0x4ec386['attributes']:_0x464190['model'];if(!_0x21f532['query']['hasOwnProperty']('nolimit')){_0x4ec386[_0x8351('0x1e')]=qs[_0x8351('0x1e')](_0x21f532[_0x8351('0x2e')][_0x8351('0x1e')]);_0x4ec386[_0x8351('0x1c')]=qs[_0x8351('0x1c')](_0x21f532[_0x8351('0x2e')]['offset']);}_0x4ec386[_0x8351('0x34')]=qs[_0x8351('0x35')](_0x21f532[_0x8351('0x2e')][_0x8351('0x35')]);_0x4ec386[_0x8351('0x36')]=qs['filters'](_['pick'](_0x21f532[_0x8351('0x2e')],_0x464190[_0x8351('0x2f')]),_0x241ec9);if(_0x21f532[_0x8351('0x2e')]['filter']){_0x4ec386[_0x8351('0x36')]=_[_0x8351('0x37')](_0x4ec386[_0x8351('0x36')],{'$or':_[_0x8351('0x27')](_0x241ec9,function(_0x59a06d){if(_0x59a06d[_0x8351('0x2a')]!==_0x8351('0x38')){var _0x5b1eec={};_0x5b1eec[_0x59a06d[_0x8351('0x2d')]]={'$like':'%'+_0x21f532[_0x8351('0x2e')][_0x8351('0x39')]+'%'};return _0x5b1eec;}})});}_0x4ec386=_['merge']({},_0x4ec386,_0x21f532['options']);var _0x383036={'where':_0x4ec386[_0x8351('0x36')]};return db[_0x8351('0x3a')]['count'](_0x383036)[_0x8351('0x22')](function(_0x3ae168){_0x1c1b74[_0x8351('0x1f')]=_0x3ae168;if(_0x21f532[_0x8351('0x2e')][_0x8351('0x3b')]){_0x4ec386[_0x8351('0x3c')]=[{'all':!![]}];}return db['VoiceDialReport']['findAll'](_0x4ec386);})[_0x8351('0x22')](function(_0x1cd200){_0x1c1b74[_0x8351('0x3d')]=_0x1cd200;return _0x1c1b74;})[_0x8351('0x22')](respondWithFilteredResult(_0x317bc8,_0x4ec386))[_0x8351('0x3e')](handleError(_0x317bc8,null));};exports[_0x8351('0x3f')]=function(_0x5f53fb,_0x32fa62){var _0x564885={'raw':!![],'where':{'id':_0x5f53fb['params']['id']}},_0x3b157e={};_0x3b157e['model']=_['keys'](db[_0x8351('0x3a')][_0x8351('0x28')]);_0x3b157e['query']=_[_0x8351('0x40')](_0x5f53fb[_0x8351('0x2e')]);_0x3b157e['filters']=_[_0x8351('0x30')](_0x3b157e[_0x8351('0x2c')],_0x3b157e['query']);_0x564885['attributes']=_[_0x8351('0x30')](_0x3b157e[_0x8351('0x2c')],qs[_0x8351('0x31')](_0x5f53fb['query'][_0x8351('0x31')]));_0x564885[_0x8351('0x32')]=_0x564885[_0x8351('0x32')][_0x8351('0x33')]?_0x564885[_0x8351('0x32')]:_0x3b157e[_0x8351('0x2c')];if(_0x5f53fb[_0x8351('0x2e')]['includeAll']){_0x564885[_0x8351('0x3c')]=[{'all':!![]}];}_0x564885=_[_0x8351('0x37')]({},_0x564885,_0x5f53fb[_0x8351('0x41')]);return db[_0x8351('0x3a')][_0x8351('0x42')](_0x564885)[_0x8351('0x22')](handleEntityNotFound(_0x32fa62,null))[_0x8351('0x22')](respondWithResult(_0x32fa62,null))[_0x8351('0x3e')](handleError(_0x32fa62,null));};exports[_0x8351('0x43')]=function(_0x57e935,_0x28fd0e){return db['VoiceDialReport'][_0x8351('0x43')](_0x57e935[_0x8351('0x44')],{})[_0x8351('0x22')](respondWithResult(_0x28fd0e,0xc9))[_0x8351('0x3e')](handleError(_0x28fd0e,null));};exports[_0x8351('0x45')]=function(_0x108d5a,_0x4c4cc0){if(_0x108d5a[_0x8351('0x44')]['id']){delete _0x108d5a[_0x8351('0x44')]['id'];}return db[_0x8351('0x3a')]['find']({'where':{'id':_0x108d5a[_0x8351('0x46')]['id']}})[_0x8351('0x22')](handleEntityNotFound(_0x4c4cc0,null))[_0x8351('0x22')](saveUpdates(_0x108d5a['body'],null))[_0x8351('0x22')](respondWithResult(_0x4c4cc0,null))['catch'](handleError(_0x4c4cc0,null));};exports[_0x8351('0x23')]=function(_0x43c152,_0x57c518){return db['VoiceDialReport'][_0x8351('0x42')]({'where':{'id':_0x43c152['params']['id']}})['then'](handleEntityNotFound(_0x57c518,null))[_0x8351('0x22')](removeEntity(_0x57c518,null))[_0x8351('0x3e')](handleError(_0x57c518,null));};exports[_0x8351('0x47')]=function(_0x1f68ca,_0x2f152d){return db[_0x8351('0x3a')][_0x8351('0x47')]()[_0x8351('0x22')](respondWithResult(_0x2f152d,null))[_0x8351('0x3e')](handleError(_0x2f152d,null));};
\ No newline at end of file
index ff74779..ef9f135 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb59=['uniqueid','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./voiceDialReport.attributes','exports','define','report_dial'];(function(_0x7a0d27,_0x166eeb){var _0x5ee426=function(_0x540545){while(--_0x540545){_0x7a0d27['push'](_0x7a0d27['shift']());}};_0x5ee426(++_0x166eeb);}(_0xcb59,0x146));var _0x9cb5=function(_0x19da72,_0x84a38f){_0x19da72=_0x19da72-0x0;var _0x60239e=_0xcb59[_0x19da72];return _0x60239e;};'use strict';var _=require(_0x9cb5('0x0'));var util=require('util');var logger=require(_0x9cb5('0x1'))(_0x9cb5('0x2'));var moment=require(_0x9cb5('0x3'));var BPromise=require(_0x9cb5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9cb5('0x5'));var rimraf=require(_0x9cb5('0x6'));var config=require(_0x9cb5('0x7'));var attributes=require(_0x9cb5('0x8'));module[_0x9cb5('0x9')]=function(_0x431e7a,_0x5a69c7){return _0x431e7a[_0x9cb5('0xa')]('VoiceDialReport',attributes,{'tableName':_0x9cb5('0xb'),'paranoid':![],'indexes':[{'fields':[_0x9cb5('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x05dc=['exports','define','report_dial','uniqueid','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceDialReport.attributes'];(function(_0xd21ecd,_0x686dda){var _0x5941c7=function(_0x4d68c9){while(--_0x4d68c9){_0xd21ecd['push'](_0xd21ecd['shift']());}};_0x5941c7(++_0x686dda);}(_0x05dc,0x178));var _0xc05d=function(_0x27a45d,_0x14499a){_0x27a45d=_0x27a45d-0x0;var _0x5aee32=_0x05dc[_0x27a45d];return _0x5aee32;};'use strict';var _=require('lodash');var util=require(_0xc05d('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xc05d('0x1'));var BPromise=require(_0xc05d('0x2'));var rp=require(_0xc05d('0x3'));var fs=require('fs');var path=require(_0xc05d('0x4'));var rimraf=require(_0xc05d('0x5'));var config=require(_0xc05d('0x6'));var attributes=require(_0xc05d('0x7'));module[_0xc05d('0x8')]=function(_0x3b89b7,_0x463847){return _0x3b89b7[_0xc05d('0x9')]('VoiceDialReport',attributes,{'tableName':_0xc05d('0xa'),'paranoid':![],'indexes':[{'fields':[_0xc05d('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 1353604..e46b548 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2b3=['stringify','UpdateVoiceDialReport','update','attributes','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','VoiceDialReport,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','catch','CreateVoiceDialReport','VoiceDialReport','create','body','options'];(function(_0x58e049,_0x5eeaef){var _0x271fea=function(_0x5078f9){while(--_0x5078f9){_0x58e049['push'](_0x58e049['shift']());}};_0x271fea(++_0x5eeaef);}(_0xf2b3,0xe4));var _0x3f2b=function(_0x18a4b0,_0x11c42d){_0x18a4b0=_0x18a4b0-0x0;var _0x5de4ef=_0xf2b3[_0x18a4b0];return _0x5de4ef;};'use strict';var _=require(_0x3f2b('0x0'));var util=require(_0x3f2b('0x1'));var moment=require('moment');var BPromise=require(_0x3f2b('0x2'));var rs=require(_0x3f2b('0x3'));var fs=require('fs');var Redis=require(_0x3f2b('0x4'));var db=require(_0x3f2b('0x5'))['db'];var utils=require(_0x3f2b('0x6'));var logger=require(_0x3f2b('0x7'))(_0x3f2b('0x8'));var config=require(_0x3f2b('0x9'));var jayson=require(_0x3f2b('0xa'));var client=jayson[_0x3f2b('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x27f93b,_0x42fa0a,_0x164cf7){return new BPromise(function(_0x3b5910,_0x433f06){return client[_0x3f2b('0xc')](_0x27f93b,_0x164cf7)[_0x3f2b('0xd')](function(_0x4eed5a){logger[_0x3f2b('0xe')](_0x3f2b('0xf'),_0x42fa0a,'request\x20sent');logger[_0x3f2b('0x10')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x42fa0a,_0x3f2b('0x11'),JSON['stringify'](_0x4eed5a));if(_0x4eed5a[_0x3f2b('0x12')]){if(_0x4eed5a[_0x3f2b('0x12')][_0x3f2b('0x13')]===0x1f4){logger[_0x3f2b('0x12')](_0x3f2b('0xf'),_0x42fa0a,_0x4eed5a[_0x3f2b('0x12')][_0x3f2b('0x14')]);return _0x433f06(_0x4eed5a[_0x3f2b('0x12')][_0x3f2b('0x14')]);}logger['error'](_0x3f2b('0xf'),_0x42fa0a,_0x4eed5a['error'][_0x3f2b('0x14')]);return _0x3b5910(_0x4eed5a[_0x3f2b('0x12')][_0x3f2b('0x14')]);}else{logger['info']('VoiceDialReport,\x20%s,\x20%s',_0x42fa0a,_0x3f2b('0x11'));_0x3b5910(_0x4eed5a[_0x3f2b('0x15')][_0x3f2b('0x14')]);}})[_0x3f2b('0x16')](function(_0x178ac9){logger[_0x3f2b('0x12')]('VoiceDialReport,\x20%s,\x20%s',_0x42fa0a,_0x178ac9);_0x433f06(_0x178ac9);});});}exports[_0x3f2b('0x17')]=function(_0x40a504){var _0x937bd5=this;return new Promise(function(_0x1ccbe2,_0x1476b8){return db[_0x3f2b('0x18')][_0x3f2b('0x19')](_0x40a504[_0x3f2b('0x1a')],{'raw':_0x40a504[_0x3f2b('0x1b')]?_0x40a504[_0x3f2b('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0x3f2b('0xd')](function(_0x2f5f1c){logger[_0x3f2b('0xe')](_0x3f2b('0x17'),_0x40a504);logger[_0x3f2b('0x10')]('CreateVoiceDialReport',_0x40a504,JSON[_0x3f2b('0x1c')](_0x2f5f1c));_0x1ccbe2(_0x2f5f1c);})[_0x3f2b('0x16')](function(_0x3ec72a){logger[_0x3f2b('0x12')](_0x3f2b('0x17'),_0x3ec72a[_0x3f2b('0x14')],_0x40a504);_0x1476b8(_0x937bd5[_0x3f2b('0x12')](0x1f4,_0x3ec72a['message']));});});};exports[_0x3f2b('0x1d')]=function(_0x4f2d34){var _0x58a5ed=this;return new Promise(function(_0x3555b7,_0x301963){return db[_0x3f2b('0x18')][_0x3f2b('0x1e')](_0x4f2d34['body'],{'raw':_0x4f2d34[_0x3f2b('0x1b')]?_0x4f2d34[_0x3f2b('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f2d34[_0x3f2b('0x1b')]?_0x4f2d34[_0x3f2b('0x1b')]['where']||null:null,'attributes':_0x4f2d34[_0x3f2b('0x1b')]?_0x4f2d34['options'][_0x3f2b('0x1f')]||null:null,'limit':_0x4f2d34[_0x3f2b('0x1b')]?_0x4f2d34[_0x3f2b('0x1b')]['limit']||null:null})[_0x3f2b('0xd')](function(_0x4e798f){logger['info'](_0x3f2b('0x1d'),_0x4f2d34);logger['debug'](_0x3f2b('0x1d'),_0x4f2d34,JSON[_0x3f2b('0x1c')](_0x4e798f));_0x3555b7(_0x4e798f);})[_0x3f2b('0x16')](function(_0x27158d){logger[_0x3f2b('0x12')](_0x3f2b('0x1d'),_0x27158d[_0x3f2b('0x14')],_0x4f2d34);_0x301963(_0x58a5ed[_0x3f2b('0x12')](0x1f4,_0x27158d[_0x3f2b('0x14')]));});});};
\ No newline at end of file
+var _0x13ca=['result','catch','options','CreateVoiceDialReport','debug','VoiceDialReport','update','body','where','limit','then','UpdateVoiceDialReport','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','VoiceDialReport,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','info'];(function(_0x4dfa0a,_0x3fdf27){var _0x14bc78=function(_0x382c4d){while(--_0x382c4d){_0x4dfa0a['push'](_0x4dfa0a['shift']());}};_0x14bc78(++_0x3fdf27);}(_0x13ca,0x156));var _0xa13c=function(_0x2cb09d,_0x440051){_0x2cb09d=_0x2cb09d-0x0;var _0x38d2c3=_0x13ca[_0x2cb09d];return _0x38d2c3;};'use strict';var _=require('lodash');var util=require(_0xa13c('0x0'));var moment=require(_0xa13c('0x1'));var BPromise=require(_0xa13c('0x2'));var rs=require(_0xa13c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa13c('0x4'))['db'];var utils=require(_0xa13c('0x5'));var logger=require('../../config/logger')(_0xa13c('0x6'));var config=require(_0xa13c('0x7'));var jayson=require(_0xa13c('0x8'));var client=jayson[_0xa13c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x314eef,_0x14f72d,_0x202380){return new BPromise(function(_0x19df6e,_0x4dd483){return client[_0xa13c('0xa')](_0x314eef,_0x202380)['then'](function(_0x22a2c6){logger['info'](_0xa13c('0xb'),_0x14f72d,_0xa13c('0xc'));logger['debug']('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x14f72d,_0xa13c('0xc'),JSON[_0xa13c('0xd')](_0x22a2c6));if(_0x22a2c6['error']){if(_0x22a2c6['error'][_0xa13c('0xe')]===0x1f4){logger[_0xa13c('0xf')](_0xa13c('0xb'),_0x14f72d,_0x22a2c6[_0xa13c('0xf')][_0xa13c('0x10')]);return _0x4dd483(_0x22a2c6['error']['message']);}logger[_0xa13c('0xf')](_0xa13c('0xb'),_0x14f72d,_0x22a2c6['error'][_0xa13c('0x10')]);return _0x19df6e(_0x22a2c6[_0xa13c('0xf')][_0xa13c('0x10')]);}else{logger[_0xa13c('0x11')](_0xa13c('0xb'),_0x14f72d,'request\x20sent');_0x19df6e(_0x22a2c6[_0xa13c('0x12')][_0xa13c('0x10')]);}})[_0xa13c('0x13')](function(_0x1e49f0){logger['error'](_0xa13c('0xb'),_0x14f72d,_0x1e49f0);_0x4dd483(_0x1e49f0);});});}exports['CreateVoiceDialReport']=function(_0x151017){var _0x126a5b=this;return new Promise(function(_0xc6b7e7,_0x15cc17){return db['VoiceDialReport']['create'](_0x151017['body'],{'raw':_0x151017[_0xa13c('0x14')]?_0x151017[_0xa13c('0x14')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1e777b){logger[_0xa13c('0x11')](_0xa13c('0x15'),_0x151017);logger[_0xa13c('0x16')]('CreateVoiceDialReport',_0x151017,JSON['stringify'](_0x1e777b));_0xc6b7e7(_0x1e777b);})[_0xa13c('0x13')](function(_0x4ff1d1){logger[_0xa13c('0xf')](_0xa13c('0x15'),_0x4ff1d1[_0xa13c('0x10')],_0x151017);_0x15cc17(_0x126a5b['error'](0x1f4,_0x4ff1d1['message']));});});};exports['UpdateVoiceDialReport']=function(_0x4ded1b){var _0x5f22b7=this;return new Promise(function(_0x1b77c1,_0x3de1aa){return db[_0xa13c('0x17')][_0xa13c('0x18')](_0x4ded1b[_0xa13c('0x19')],{'raw':_0x4ded1b[_0xa13c('0x14')]?_0x4ded1b[_0xa13c('0x14')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4ded1b['options']?_0x4ded1b['options'][_0xa13c('0x1a')]||null:null,'attributes':_0x4ded1b['options']?_0x4ded1b[_0xa13c('0x14')]['attributes']||null:null,'limit':_0x4ded1b[_0xa13c('0x14')]?_0x4ded1b[_0xa13c('0x14')][_0xa13c('0x1b')]||null:null})[_0xa13c('0x1c')](function(_0x3cfc73){logger[_0xa13c('0x11')]('UpdateVoiceDialReport',_0x4ded1b);logger[_0xa13c('0x16')]('UpdateVoiceDialReport',_0x4ded1b,JSON['stringify'](_0x3cfc73));_0x1b77c1(_0x3cfc73);})[_0xa13c('0x13')](function(_0x498f2c){logger['error'](_0xa13c('0x1d'),_0x498f2c[_0xa13c('0x10')],_0x4ded1b);_0x3de1aa(_0x5f22b7['error'](0x1f4,_0x498f2c['message']));});});};
\ No newline at end of file
index b42f64b..d1b8f9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x882a=['delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceExtension.controller','get','isAuthenticated','index','/:id','show','post','create','/:id/applications','addApplications'];(function(_0x1c9249,_0x18b465){var _0x104200=function(_0x343406){while(--_0x343406){_0x1c9249['push'](_0x1c9249['shift']());}};_0x104200(++_0x18b465);}(_0x882a,0x143));var _0xa882=function(_0x225013,_0x4e421e){_0x225013=_0x225013-0x0;var _0x38d461=_0x882a[_0x225013];return _0x38d461;};'use strict';var multer=require(_0xa882('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa882('0x1'));var express=require(_0xa882('0x2'));var router=express[_0xa882('0x3')]();var fs_extra=require(_0xa882('0x4'));var auth=require(_0xa882('0x5'));var interaction=require(_0xa882('0x6'));var config=require('../../config/environment');var controller=require(_0xa882('0x7'));router[_0xa882('0x8')]('/',auth[_0xa882('0x9')](),controller[_0xa882('0xa')]);router[_0xa882('0x8')](_0xa882('0xb'),auth[_0xa882('0x9')](),controller[_0xa882('0xc')]);router[_0xa882('0xd')]('/',auth[_0xa882('0x9')](),controller[_0xa882('0xe')]);router['post'](_0xa882('0xf'),auth[_0xa882('0x9')](),controller[_0xa882('0x10')]);router['put'](_0xa882('0xb'),auth[_0xa882('0x9')](),controller['update']);router[_0xa882('0x11')](_0xa882('0xb'),auth[_0xa882('0x9')](),controller[_0xa882('0x12')]);module[_0xa882('0x13')]=router;
\ No newline at end of file
+var _0x7d9f=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated','index','/:id','show','create','post','/:id/applications','put','update','delete','exports'];(function(_0x34021d,_0x753aa6){var _0x16597b=function(_0x2d040a){while(--_0x2d040a){_0x34021d['push'](_0x34021d['shift']());}};_0x16597b(++_0x753aa6);}(_0x7d9f,0x1b9));var _0xf7d9=function(_0x3aa6ab,_0x3b5f7c){_0x3aa6ab=_0x3aa6ab-0x0;var _0x5789d7=_0x7d9f[_0x3aa6ab];return _0x5789d7;};'use strict';var multer=require('multer');var util=require(_0xf7d9('0x0'));var path=require(_0xf7d9('0x1'));var timeout=require(_0xf7d9('0x2'));var express=require(_0xf7d9('0x3'));var router=express['Router']();var fs_extra=require(_0xf7d9('0x4'));var auth=require(_0xf7d9('0x5'));var interaction=require(_0xf7d9('0x6'));var config=require(_0xf7d9('0x7'));var controller=require(_0xf7d9('0x8'));router[_0xf7d9('0x9')]('/',auth[_0xf7d9('0xa')](),controller[_0xf7d9('0xb')]);router[_0xf7d9('0x9')](_0xf7d9('0xc'),auth[_0xf7d9('0xa')](),controller[_0xf7d9('0xd')]);router['post']('/',auth[_0xf7d9('0xa')](),controller[_0xf7d9('0xe')]);router[_0xf7d9('0xf')](_0xf7d9('0x10'),auth[_0xf7d9('0xa')](),controller['addApplications']);router[_0xf7d9('0x11')]('/:id',auth[_0xf7d9('0xa')](),controller[_0xf7d9('0x12')]);router[_0xf7d9('0x13')]('/:id',auth[_0xf7d9('0xa')](),controller['destroy']);module[_0xf7d9('0x14')]=router;
\ No newline at end of file
index b7777a0..ee02b97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ff5=['outbound-fax','system','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','getDataValue','exports','STRING','compositeIndex','NoOp','ENUM','internal'];(function(_0x5f3259,_0x271818){var _0x816d85=function(_0x1e1915){while(--_0x1e1915){_0x5f3259['push'](_0x5f3259['shift']());}};_0x816d85(++_0x271818);}(_0x7ff5,0x13c));var _0x57ff=function(_0x4c68bc,_0xab812f){_0x4c68bc=_0x4c68bc-0x0;var _0x547c43=_0x7ff5[_0x4c68bc];return _0x547c43;};'use strict';var Sequelize=require('sequelize');module[_0x57ff('0x0')]={'context':{'type':Sequelize[_0x57ff('0x1')],'allowNull':![],'unique':_0x57ff('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x57ff('0x1')],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0x57ff('0x2')},'tag':{'type':Sequelize[_0x57ff('0x1')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x57ff('0x1')],'allowNull':![],'defaultValue':_0x57ff('0x3')},'appdata':{'type':Sequelize['STRING'](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x57ff('0x4')]('inbound','outbound',_0x57ff('0x5'),'inbound-fax',_0x57ff('0x6'),_0x57ff('0x7'),'any'),'allowNull':![]},'description':{'type':Sequelize[_0x57ff('0x1')]},'interval':{'type':Sequelize[_0x57ff('0x1')],'allowNull':![],'defaultValue':_0x57ff('0x8')},'IntervalId':{'type':Sequelize[_0x57ff('0x9')]},'isApp':{'type':Sequelize[_0x57ff('0xa')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x57ff('0x1')],'defaultValue':null},'callerID':{'type':Sequelize[_0x57ff('0x1')],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x57ff('0x9')]},'recordingFormat':{'type':Sequelize[_0x57ff('0x1')],'defaultValue':_0x57ff('0xb')},'answer':{'type':Sequelize[_0x57ff('0xa')],'defaultValue':!![]},'name':{'type':Sequelize[_0x57ff('0xc')],'get':function(_0x73fa){return this[_0x57ff('0xd')]('exten');}},'alias':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0xf909=['inbound','outbound','internal','inbound-fax','outbound-fax','any','*,*,*,*','BOOLEAN','INTEGER','VIRTUAL','getDataValue','exports','STRING','compositeIndex','NoOp','ENUM'];(function(_0x21df89,_0x13b372){var _0x3ddf4a=function(_0x450b51){while(--_0x450b51){_0x21df89['push'](_0x21df89['shift']());}};_0x3ddf4a(++_0x13b372);}(_0xf909,0x11b));var _0x9f90=function(_0xae8f1f,_0x566194){_0xae8f1f=_0xae8f1f-0x0;var _0x499a76=_0xf909[_0xae8f1f];return _0x499a76;};'use strict';var Sequelize=require('sequelize');module[_0x9f90('0x0')]={'context':{'type':Sequelize[_0x9f90('0x1')],'allowNull':![],'unique':'compositeIndex','validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x9f90('0x2')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize[_0x9f90('0x1')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x9f90('0x1')],'allowNull':![],'defaultValue':_0x9f90('0x3')},'appdata':{'type':Sequelize[_0x9f90('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x9f90('0x4')](_0x9f90('0x5'),_0x9f90('0x6'),_0x9f90('0x7'),_0x9f90('0x8'),_0x9f90('0x9'),'system',_0x9f90('0xa')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x9f90('0x1')],'allowNull':![],'defaultValue':_0x9f90('0xb')},'IntervalId':{'type':Sequelize['INTEGER']},'isApp':{'type':Sequelize[_0x9f90('0xc')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x9f90('0x1')],'defaultValue':null},'callerID':{'type':Sequelize[_0x9f90('0x1')],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x9f90('0xd')]},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':'wav'},'answer':{'type':Sequelize[_0x9f90('0xc')],'defaultValue':!![]},'name':{'type':Sequelize[_0x9f90('0xe')],'get':function(_0x35d03f){return this[_0x9f90('0xf')]('exten');}},'alias':{'type':Sequelize[_0x9f90('0x1')],'allowNull':!![]}};
\ No newline at end of file
index 93644be..5de2dda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x839c=['json','apply','save','then','destroy','get','InboundRoutes','InternalRoutes','internal','filter','ignore','map','value','includes','type','name','error','stack','send','VoiceExtension','rawAttributes','fieldName','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','merge','where','VIRTUAL','options','include','findAll','catch','show','params','find','create','body','outbound','startsWith','exten','user','role','inbound','OutboundRoutes','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','recordingFormat','mandatoryDisposition','alias','context','addApplications','findOne','sequelize','VoiceExtensionId','rewriteDial','toLowerCase','true','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range'];(function(_0x5c51e5,_0x390c97){var _0x1cf1c9=function(_0x143b3d){while(--_0x143b3d){_0x5c51e5['push'](_0x5c51e5['shift']());}};_0x1cf1c9(++_0x390c97);}(_0x839c,0x132));var _0xc839=function(_0xb093,_0x5403c4){_0xb093=_0xb093-0x0;var _0x516bac=_0x839c[_0xb093];return _0x516bac;};'use strict';var emlformat=require(_0xc839('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc839('0x1'));var jsonpatch=require(_0xc839('0x2'));var rp=require(_0xc839('0x3'));var moment=require(_0xc839('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc839('0x5'));var util=require(_0xc839('0x6'));var path=require(_0xc839('0x7'));var sox=require(_0xc839('0x8'));var csv=require('to-csv');var ejs=require(_0xc839('0x9'));var fs=require('fs');var fs_extra=require(_0xc839('0xa'));var _=require(_0xc839('0xb'));var squel=require('squel');var crypto=require(_0xc839('0xc'));var jsforce=require(_0xc839('0xd'));var deskjs=require(_0xc839('0xe'));var toCsv=require(_0xc839('0xf'));var querystring=require(_0xc839('0x10'));var Papa=require('papaparse');var Redis=require(_0xc839('0x11'));var authService=require(_0xc839('0x12'));var qs=require(_0xc839('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc839('0x14'));var logger=require(_0xc839('0x15'))(_0xc839('0x16'));var utils=require('../../config/utils');var config=require(_0xc839('0x17'));var licenseUtil=require(_0xc839('0x18'));var db=require(_0xc839('0x19'))['db'];config['redis']=_['defaults'](config[_0xc839('0x1a')],{'host':_0xc839('0x1b'),'port':0x18eb});var socket=require(_0xc839('0x1c'))(new Redis(config[_0xc839('0x1a')]));require('./voiceExtension.socket')[_0xc839('0x1d')](socket);function respondWithStatusCode(_0x431058,_0x58c92d){_0x58c92d=_0x58c92d||0xcc;return function(_0x27ab00){if(_0x27ab00){return _0x431058[_0xc839('0x1e')](_0x58c92d);}return _0x431058['status'](_0x58c92d)[_0xc839('0x1f')]();};}function respondWithResult(_0x47f807,_0x45bd22){_0x45bd22=_0x45bd22||0xc8;return function(_0x39b925){if(_0x39b925){return _0x47f807[_0xc839('0x20')](_0x45bd22)['json'](_0x39b925);}};}function respondWithFilteredResult(_0x3c9b8e,_0x109c36){return function(_0x3d7477){if(_0x3d7477){var _0x4ff0e2=typeof _0x109c36[_0xc839('0x21')]==='undefined'&&typeof _0x109c36['limit']===_0xc839('0x22');var _0x42a409=_0x3d7477[_0xc839('0x23')];var _0x19c9fd=_0x4ff0e2?0x0:_0x109c36[_0xc839('0x21')];var _0x4d37c2=_0x4ff0e2?_0x3d7477[_0xc839('0x23')]:_0x109c36[_0xc839('0x21')]+_0x109c36[_0xc839('0x24')];var _0x6f0907;if(_0x4d37c2>=_0x42a409){_0x4d37c2=_0x42a409;_0x6f0907=0xc8;}else{_0x6f0907=0xce;}_0x3c9b8e[_0xc839('0x20')](_0x6f0907);return _0x3c9b8e[_0xc839('0x25')](_0xc839('0x26'),_0x19c9fd+'-'+_0x4d37c2+'/'+_0x42a409)[_0xc839('0x27')](_0x3d7477);}return null;};}function patchUpdates(_0x23379a){return function(_0x1b3ece){try{jsonpatch[_0xc839('0x28')](_0x1b3ece,_0x23379a,!![]);}catch(_0x22ff53){return BPromise['reject'](_0x22ff53);}return _0x1b3ece[_0xc839('0x29')]();};}function saveUpdates(_0x1e3254,_0x544624){return function(_0xf8abb9){if(_0xf8abb9){return _0xf8abb9['update'](_0x1e3254)[_0xc839('0x2a')](function(_0x56ad9b){return _0x56ad9b;});}return null;};}function removeEntity(_0x895389,_0x3efacf){return function(_0x581fb5){if(_0x581fb5){return _0x581fb5[_0xc839('0x2b')]()['then'](function(){var _0x4ca602=_0x581fb5[_0xc839('0x2c')]({'plain':!![]});var _0x523feb=[{'name':_0xc839('0x2d'),'value':'inbound','ignore':![]},{'name':'OutboundRoutes','value':'outbound','ignore':![]},{'name':_0xc839('0x2e'),'value':_0xc839('0x2f'),'ignore':![]}];var _0x148923=_(_0x523feb)[_0xc839('0x30')](_0xc839('0x31'))[_0xc839('0x32')]('value')[_0xc839('0x33')]();if(_[_0xc839('0x34')](_0x148923,_0x4ca602[_0xc839('0x35')])){return;}var _0x1d7b07=_['find'](_0x523feb,[_0xc839('0x33'),_0x4ca602[_0xc839('0x35')]])[_0xc839('0x36')];return db['UserProfileResource'][_0xc839('0x2b')]({'where':{'type':_0x1d7b07,'resourceId':_0x4ca602['id']}})[_0xc839('0x2a')](function(){return _0x581fb5;});})[_0xc839('0x2a')](function(){_0x895389['status'](0xcc)[_0xc839('0x1f')]();});}};}function handleEntityNotFound(_0x4ee93c,_0x5eed0d){return function(_0x11ce14){if(!_0x11ce14){_0x4ee93c[_0xc839('0x1e')](0x194);}return _0x11ce14;};}function handleError(_0x5f3f8c,_0x65808b){_0x65808b=_0x65808b||0x1f4;return function(_0x3d7a08){logger[_0xc839('0x37')](_0x3d7a08[_0xc839('0x38')]);if(_0x3d7a08[_0xc839('0x36')]){delete _0x3d7a08[_0xc839('0x36')];}_0x5f3f8c[_0xc839('0x20')](_0x65808b)[_0xc839('0x39')](_0x3d7a08);};}exports['index']=function(_0x43ba5c,_0x30856a){var _0x17a542={},_0xf7fc82={},_0x10f465={'count':0x0,'rows':[]};var _0x178084=_['map'](db[_0xc839('0x3a')][_0xc839('0x3b')],function(_0x543a75){return{'name':_0x543a75[_0xc839('0x3c')],'type':_0x543a75[_0xc839('0x35')][_0xc839('0x3d')]};});_0xf7fc82['model']=_[_0xc839('0x32')](_0x178084,_0xc839('0x36'));_0xf7fc82[_0xc839('0x3e')]=_[_0xc839('0x3f')](_0x43ba5c[_0xc839('0x3e')]);_0xf7fc82['filters']=_[_0xc839('0x40')](_0xf7fc82[_0xc839('0x41')],_0xf7fc82[_0xc839('0x3e')]);_0x17a542[_0xc839('0x42')]=_['intersection'](_0xf7fc82[_0xc839('0x41')],qs[_0xc839('0x43')](_0x43ba5c[_0xc839('0x3e')][_0xc839('0x43')]));_0x17a542[_0xc839('0x42')]=_0x17a542['attributes'][_0xc839('0x44')]?_0x17a542[_0xc839('0x42')]:_0xf7fc82['model'];if(!_0x43ba5c[_0xc839('0x3e')][_0xc839('0x45')](_0xc839('0x46'))){_0x17a542[_0xc839('0x24')]=qs[_0xc839('0x24')](_0x43ba5c[_0xc839('0x3e')][_0xc839('0x24')]);_0x17a542['offset']=qs['offset'](_0x43ba5c[_0xc839('0x3e')][_0xc839('0x21')]);}_0x17a542[_0xc839('0x47')]=qs[_0xc839('0x48')](_0x43ba5c[_0xc839('0x3e')][_0xc839('0x48')]);_0x17a542['where']=qs[_0xc839('0x49')](_[_0xc839('0x4a')](_0x43ba5c[_0xc839('0x3e')],_0xf7fc82[_0xc839('0x49')]),_0x178084);if(_0x43ba5c['query'][_0xc839('0x30')]){_0x17a542['where']=_[_0xc839('0x4b')](_0x17a542[_0xc839('0x4c')],{'$or':_[_0xc839('0x32')](_0x178084,function(_0x35a5f7){if(_0x35a5f7['type']!==_0xc839('0x4d')){var _0x7d0966={};_0x7d0966[_0x35a5f7[_0xc839('0x36')]]={'$like':'%'+_0x43ba5c[_0xc839('0x3e')][_0xc839('0x30')]+'%'};return _0x7d0966;}})});}_0x17a542=_[_0xc839('0x4b')]({},_0x17a542,_0x43ba5c[_0xc839('0x4e')]);var _0xb4ff8a={'where':_0x17a542[_0xc839('0x4c')]};return db['VoiceExtension'][_0xc839('0x23')](_0xb4ff8a)[_0xc839('0x2a')](function(_0x248296){_0x10f465[_0xc839('0x23')]=_0x248296;if(_0x43ba5c[_0xc839('0x3e')]['includeAll']){_0x17a542[_0xc839('0x4f')]=[{'all':!![]}];}return db['VoiceExtension'][_0xc839('0x50')](_0x17a542);})[_0xc839('0x2a')](function(_0x437a7a){_0x10f465['rows']=_0x437a7a;return _0x10f465;})[_0xc839('0x2a')](respondWithFilteredResult(_0x30856a,_0x17a542))[_0xc839('0x51')](handleError(_0x30856a,null));};exports[_0xc839('0x52')]=function(_0x149cba,_0x330ba2){var _0x559229={'raw':![],'where':{'id':_0x149cba[_0xc839('0x53')]['id']}},_0x458a1f={};_0x458a1f[_0xc839('0x41')]=_[_0xc839('0x3f')](db[_0xc839('0x3a')]['rawAttributes']);_0x458a1f[_0xc839('0x3e')]=_[_0xc839('0x3f')](_0x149cba[_0xc839('0x3e')]);_0x458a1f[_0xc839('0x49')]=_[_0xc839('0x40')](_0x458a1f['model'],_0x458a1f[_0xc839('0x3e')]);_0x559229[_0xc839('0x42')]=_[_0xc839('0x40')](_0x458a1f[_0xc839('0x41')],qs[_0xc839('0x43')](_0x149cba[_0xc839('0x3e')][_0xc839('0x43')]));_0x559229[_0xc839('0x42')]=_0x559229[_0xc839('0x42')][_0xc839('0x44')]?_0x559229[_0xc839('0x42')]:_0x458a1f[_0xc839('0x41')];if(_0x149cba[_0xc839('0x3e')]['includeAll']){_0x559229[_0xc839('0x4f')]=[{'all':!![]}];}_0x559229=_[_0xc839('0x4b')]({},_0x559229,_0x149cba['options']);return db['VoiceExtension']['find'](_0x559229)[_0xc839('0x2a')](handleEntityNotFound(_0x330ba2,null))[_0xc839('0x2a')](respondWithResult(_0x330ba2,null))[_0xc839('0x51')](handleError(_0x330ba2,null));};exports['destroy']=function(_0x5c49e4,_0xe3d00d){return db[_0xc839('0x3a')][_0xc839('0x54')]({'where':{'id':_0x5c49e4['params']['id']}})[_0xc839('0x2a')](handleEntityNotFound(_0xe3d00d,null))['then'](removeEntity(_0xe3d00d,null))[_0xc839('0x51')](handleError(_0xe3d00d,null));};exports[_0xc839('0x55')]=function(_0x36af76,_0x5c0cf5){if(_0x36af76[_0xc839('0x56')][_0xc839('0x35')]===_0xc839('0x57')&&!_[_0xc839('0x58')](_0x36af76[_0xc839('0x56')][_0xc839('0x59')],'_')){_0x36af76['body']['exten']='_'['concat'](_0x36af76[_0xc839('0x56')]['exten']);}return db[_0xc839('0x3a')]['create'](_0x36af76[_0xc839('0x56')],{'raw':![]})[_0xc839('0x2a')](function(_0x431f03){var _0x461ba0=_0x36af76[_0xc839('0x5a')][_0xc839('0x2c')]({'plain':!![]});if(!_0x461ba0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x461ba0[_0xc839('0x5b')]===_0xc839('0x5a')){var _0x2f5888=_0x431f03[_0xc839('0x2c')]({'plain':!![]});var _0x541fd0=[{'name':'InboundRoutes','value':_0xc839('0x5c')},{'name':_0xc839('0x5d'),'value':_0xc839('0x57')},{'name':'InternalRoutes','value':'internal'}];var _0x34de96=_['find'](_0x541fd0,['value',_0x2f5888[_0xc839('0x35')]])[_0xc839('0x36')];return db[_0xc839('0x5e')][_0xc839('0x54')]({'where':{'name':_0x34de96,'userProfileId':_0x461ba0[_0xc839('0x5f')]},'raw':!![]})[_0xc839('0x2a')](function(_0x2fb5d7){if(_0x2fb5d7&&_0x2fb5d7[_0xc839('0x60')]===0x0){return db[_0xc839('0x61')][_0xc839('0x55')]({'name':_0x2f5888[_0xc839('0x36')],'resourceId':_0x2f5888['id'],'type':_0x2fb5d7[_0xc839('0x36')],'sectionId':_0x2fb5d7['id']},{})[_0xc839('0x2a')](function(){return _0x431f03;});}else{return _0x431f03;}})[_0xc839('0x51')](function(_0x3feb4c){logger['error'](_0xc839('0x62'),_0x3feb4c);throw _0x3feb4c;});}return _0x431f03;})[_0xc839('0x2a')](respondWithResult(_0x5c0cf5,0xc9))[_0xc839('0x51')](handleError(_0x5c0cf5,null));};exports[_0xc839('0x63')]=function(_0x3f61ca,_0x19874f){if(_0x3f61ca[_0xc839('0x56')]['id']){delete _0x3f61ca[_0xc839('0x56')]['id'];}return db['VoiceExtension']['find']({'where':{'id':_0x3f61ca['params']['id']}})[_0xc839('0x2a')](handleEntityNotFound(_0x19874f,null))['then'](function(_0x13a268){if(_0x13a268){return db[_0xc839('0x3a')]['update'](_[_0xc839('0x4a')](_0x3f61ca['body'],[_0xc839('0x59'),'context','description',_0xc839('0x64'),'cutdigits',_0xc839('0x65'),_0xc839('0x66')]),{'where':{'context':_0x13a268[_0xc839('0x67')],'exten':_0x13a268[_0xc839('0x59')]},'individualHooks':!![]})[_0xc839('0x2a')](function(_0x25ab7e){return _0x25ab7e;});}return null;})['then'](respondWithStatusCode(_0x19874f,null))[_0xc839('0x51')](handleError(_0x19874f,null));};exports[_0xc839('0x68')]=function(_0x35b7a1,_0xb50fa7){return db[_0xc839('0x3a')][_0xc839('0x69')]({'where':{'id':_0x35b7a1['params']['id']}})['then'](function(_0x16b914){if(_0x16b914){return db[_0xc839('0x6a')]['transaction'](function(_0x2929f7){return db[_0xc839('0x3a')]['destroy']({'where':{'VoiceExtensionId':_0x35b7a1[_0xc839('0x53')]['id']},'transaction':_0x2929f7})[_0xc839('0x2a')](function(){var _0x16718c=_['map'](_0x35b7a1[_0xc839('0x56')],function(_0xbda81e){_0xbda81e[_0xc839('0x6b')]=_0x35b7a1['params']['id'];_0xbda81e['isApp']=!![];return _0xbda81e;});var _0x10c485=_0x35b7a1[_0xc839('0x3e')][_0xc839('0x6c')]&&_0x35b7a1['query'][_0xc839('0x6c')][_0xc839('0x6d')]()===_0xc839('0x6e')?!![]:![];return _0x16b914[_0xc839('0x6f')](_0x16718c,_0x10c485);})[_0xc839('0x2a')](function(_0x44a54d){return db['VoiceExtension'][_0xc839('0x70')](_0x44a54d,{'transaction':_0x2929f7});});})[_0xc839('0x2a')](function(){return db['VoiceExtension'][_0xc839('0x71')]({'where':{'isApp':!![],'VoiceExtensionId':_0x35b7a1['params']['id']},'order':_0xc839('0x72')});});}})[_0xc839('0x2a')](respondWithResult(_0xb50fa7,null))[_0xc839('0x51')](handleError(_0xb50fa7,null));};
\ No newline at end of file
+var _0x1e7b=['sort','where','pick','filters','filter','merge','options','includeAll','rows','show','include','catch','body','startsWith','exten','concat','create','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','description','mandatoryDisposition','alias','context','findOne','params','sequelize','transaction','VoiceExtensionId','isApp','createRouting','log','findAndCountAll','lodash','ioredis','../../config/logger','api','../../mysqldb','redis','defaults','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','end','json','offset','undefined','count','set','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','ignore','map','value','type','find','name','error','send','index','VoiceExtension','rawAttributes','fieldName','key','model','keys','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','limit','order'];(function(_0x2e6f7a,_0x52838c){var _0x159498=function(_0x3c3214){while(--_0x3c3214){_0x2e6f7a['push'](_0x2e6f7a['shift']());}};_0x159498(++_0x52838c);}(_0x1e7b,0x12d));var _0xb1e7=function(_0x42eef9,_0x465269){_0x42eef9=_0x42eef9-0x0;var _0x157ba3=_0x1e7b[_0x42eef9];return _0x157ba3;};'use strict';var _=require(_0xb1e7('0x0'));var Redis=require(_0xb1e7('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0xb1e7('0x2'))(_0xb1e7('0x3'));var config=require('../../config/environment');var db=require(_0xb1e7('0x4'))['db'];config[_0xb1e7('0x5')]=_[_0xb1e7('0x6')](config[_0xb1e7('0x5')],{'host':'localhost','port':0x18eb});var socket=require(_0xb1e7('0x7'))(new Redis(config[_0xb1e7('0x5')]));require(_0xb1e7('0x8'))[_0xb1e7('0x9')](socket);function respondWithStatusCode(_0x3a83ba,_0x578f37){_0x578f37=_0x578f37||0xcc;return function(_0x161376){if(_0x161376){return _0x3a83ba[_0xb1e7('0xa')](_0x578f37);}return _0x3a83ba[_0xb1e7('0xb')](_0x578f37)[_0xb1e7('0xc')]();};}function respondWithResult(_0x53bcee,_0x1c27e8){_0x1c27e8=_0x1c27e8||0xc8;return function(_0x842e0a){if(_0x842e0a){return _0x53bcee[_0xb1e7('0xb')](_0x1c27e8)[_0xb1e7('0xd')](_0x842e0a);}};}function respondWithFilteredResult(_0x2521e9,_0xd34f8c){return function(_0x1aaf8f){if(_0x1aaf8f){var _0xc7eea1=typeof _0xd34f8c[_0xb1e7('0xe')]===_0xb1e7('0xf')&&typeof _0xd34f8c['limit']==='undefined';var _0x28c5bb=_0x1aaf8f[_0xb1e7('0x10')];var _0x299714=_0xc7eea1?0x0:_0xd34f8c['offset'];var _0xaa2d28=_0xc7eea1?_0x1aaf8f[_0xb1e7('0x10')]:_0xd34f8c[_0xb1e7('0xe')]+_0xd34f8c['limit'];var _0x2318e9;if(_0xaa2d28>=_0x28c5bb){_0xaa2d28=_0x28c5bb;_0x2318e9=0xc8;}else{_0x2318e9=0xce;}_0x2521e9[_0xb1e7('0xb')](_0x2318e9);return _0x2521e9[_0xb1e7('0x11')]('Content-Range',_0x299714+'-'+_0xaa2d28+'/'+_0x28c5bb)[_0xb1e7('0xd')](_0x1aaf8f);}return null;};}function removeEntity(_0x2f677d){return function(_0xe090d0){if(_0xe090d0){return _0xe090d0[_0xb1e7('0x12')]()[_0xb1e7('0x13')](function(){var _0x2d1dd0=_0xe090d0[_0xb1e7('0x14')]({'plain':!![]});var _0x302419=[{'name':_0xb1e7('0x15'),'value':_0xb1e7('0x16'),'ignore':![]},{'name':_0xb1e7('0x17'),'value':_0xb1e7('0x18'),'ignore':![]},{'name':_0xb1e7('0x19'),'value':_0xb1e7('0x1a'),'ignore':![]}];var _0x2cf5c5=_(_0x302419)['filter'](_0xb1e7('0x1b'))[_0xb1e7('0x1c')]('value')[_0xb1e7('0x1d')]();if(_['includes'](_0x2cf5c5,_0x2d1dd0[_0xb1e7('0x1e')])){return;}var _0x40511c=_[_0xb1e7('0x1f')](_0x302419,[_0xb1e7('0x1d'),_0x2d1dd0[_0xb1e7('0x1e')]])[_0xb1e7('0x20')];return db['UserProfileResource'][_0xb1e7('0x12')]({'where':{'type':_0x40511c,'resourceId':_0x2d1dd0['id']}})[_0xb1e7('0x13')](function(){return _0xe090d0;});})['then'](function(){_0x2f677d['status'](0xcc)[_0xb1e7('0xc')]();});}};}function handleEntityNotFound(_0x41b2e2){return function(_0x163148){if(!_0x163148){_0x41b2e2['sendStatus'](0x194);}return _0x163148;};}function handleError(_0x1265d9,_0x18ba5f){_0x18ba5f=_0x18ba5f||0x1f4;return function(_0x125eb3){logger[_0xb1e7('0x21')](_0x125eb3['stack']);if(_0x125eb3['name']){delete _0x125eb3[_0xb1e7('0x20')];}_0x1265d9['status'](_0x18ba5f)[_0xb1e7('0x22')](_0x125eb3);};}exports[_0xb1e7('0x23')]=function(_0x2bc953,_0x1fb998){var _0x2b9bac={},_0x179621={},_0x2a1dd6={'count':0x0,'rows':[]};var _0x30534f=_[_0xb1e7('0x1c')](db[_0xb1e7('0x24')][_0xb1e7('0x25')],function(_0x235f63){return{'name':_0x235f63[_0xb1e7('0x26')],'type':_0x235f63['type'][_0xb1e7('0x27')]};});_0x179621[_0xb1e7('0x28')]=_[_0xb1e7('0x1c')](_0x30534f,_0xb1e7('0x20'));_0x179621['query']=_[_0xb1e7('0x29')](_0x2bc953['query']);_0x179621['filters']=_[_0xb1e7('0x2a')](_0x179621[_0xb1e7('0x28')],_0x179621[_0xb1e7('0x2b')]);_0x2b9bac[_0xb1e7('0x2c')]=_[_0xb1e7('0x2a')](_0x179621['model'],qs['fields'](_0x2bc953['query'][_0xb1e7('0x2d')]));_0x2b9bac[_0xb1e7('0x2c')]=_0x2b9bac[_0xb1e7('0x2c')][_0xb1e7('0x2e')]?_0x2b9bac[_0xb1e7('0x2c')]:_0x179621['model'];if(!_0x2bc953[_0xb1e7('0x2b')][_0xb1e7('0x2f')](_0xb1e7('0x30'))){_0x2b9bac[_0xb1e7('0x31')]=qs[_0xb1e7('0x31')](_0x2bc953['query']['limit']);_0x2b9bac[_0xb1e7('0xe')]=qs[_0xb1e7('0xe')](_0x2bc953[_0xb1e7('0x2b')]['offset']);}_0x2b9bac[_0xb1e7('0x32')]=qs[_0xb1e7('0x33')](_0x2bc953[_0xb1e7('0x2b')][_0xb1e7('0x33')]);_0x2b9bac[_0xb1e7('0x34')]=qs['filters'](_[_0xb1e7('0x35')](_0x2bc953[_0xb1e7('0x2b')],_0x179621[_0xb1e7('0x36')]),_0x30534f);if(_0x2bc953[_0xb1e7('0x2b')][_0xb1e7('0x37')]){_0x2b9bac[_0xb1e7('0x34')]=_[_0xb1e7('0x38')](_0x2b9bac[_0xb1e7('0x34')],{'$or':_['map'](_0x30534f,function(_0x42c219){if(_0x42c219[_0xb1e7('0x1e')]!=='VIRTUAL'){var _0x3f391e={};_0x3f391e[_0x42c219[_0xb1e7('0x20')]]={'$like':'%'+_0x2bc953[_0xb1e7('0x2b')][_0xb1e7('0x37')]+'%'};return _0x3f391e;}})});}_0x2b9bac=_[_0xb1e7('0x38')]({},_0x2b9bac,_0x2bc953[_0xb1e7('0x39')]);var _0x4c7783={'where':_0x2b9bac['where']};return db[_0xb1e7('0x24')][_0xb1e7('0x10')](_0x4c7783)['then'](function(_0x173375){_0x2a1dd6['count']=_0x173375;if(_0x2bc953[_0xb1e7('0x2b')][_0xb1e7('0x3a')]){_0x2b9bac['include']=[{'all':!![]}];}return db[_0xb1e7('0x24')]['findAll'](_0x2b9bac);})[_0xb1e7('0x13')](function(_0x13c5ae){_0x2a1dd6[_0xb1e7('0x3b')]=_0x13c5ae;return _0x2a1dd6;})['then'](respondWithFilteredResult(_0x1fb998,_0x2b9bac))['catch'](handleError(_0x1fb998,null));};exports[_0xb1e7('0x3c')]=function(_0x4b52f5,_0x161dfb){var _0x4b0720={'raw':![],'where':{'id':_0x4b52f5['params']['id']}},_0x54f799={};_0x54f799[_0xb1e7('0x28')]=_[_0xb1e7('0x29')](db[_0xb1e7('0x24')][_0xb1e7('0x25')]);_0x54f799['query']=_[_0xb1e7('0x29')](_0x4b52f5[_0xb1e7('0x2b')]);_0x54f799['filters']=_['intersection'](_0x54f799[_0xb1e7('0x28')],_0x54f799['query']);_0x4b0720['attributes']=_[_0xb1e7('0x2a')](_0x54f799[_0xb1e7('0x28')],qs[_0xb1e7('0x2d')](_0x4b52f5[_0xb1e7('0x2b')][_0xb1e7('0x2d')]));_0x4b0720[_0xb1e7('0x2c')]=_0x4b0720[_0xb1e7('0x2c')]['length']?_0x4b0720[_0xb1e7('0x2c')]:_0x54f799[_0xb1e7('0x28')];if(_0x4b52f5[_0xb1e7('0x2b')][_0xb1e7('0x3a')]){_0x4b0720[_0xb1e7('0x3d')]=[{'all':!![]}];}_0x4b0720=_[_0xb1e7('0x38')]({},_0x4b0720,_0x4b52f5[_0xb1e7('0x39')]);return db[_0xb1e7('0x24')][_0xb1e7('0x1f')](_0x4b0720)[_0xb1e7('0x13')](handleEntityNotFound(_0x161dfb,null))['then'](respondWithResult(_0x161dfb,null))[_0xb1e7('0x3e')](handleError(_0x161dfb,null));};exports['destroy']=function(_0x3eb49d,_0x41ed11){return db['VoiceExtension']['find']({'where':{'id':_0x3eb49d['params']['id']}})[_0xb1e7('0x13')](handleEntityNotFound(_0x41ed11,null))['then'](removeEntity(_0x41ed11,null))[_0xb1e7('0x3e')](handleError(_0x41ed11,null));};exports['create']=function(_0x19191e,_0x3b2e73){if(_0x19191e[_0xb1e7('0x3f')][_0xb1e7('0x1e')]===_0xb1e7('0x18')&&!_[_0xb1e7('0x40')](_0x19191e[_0xb1e7('0x3f')][_0xb1e7('0x41')],'_')){_0x19191e[_0xb1e7('0x3f')][_0xb1e7('0x41')]='_'[_0xb1e7('0x42')](_0x19191e[_0xb1e7('0x3f')][_0xb1e7('0x41')]);}return db[_0xb1e7('0x24')][_0xb1e7('0x43')](_0x19191e['body'],{'raw':![]})['then'](function(_0x52db77){var _0x371511=_0x19191e[_0xb1e7('0x44')][_0xb1e7('0x14')]({'plain':!![]});if(!_0x371511)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x371511['role']===_0xb1e7('0x44')){var _0x40a787=_0x52db77[_0xb1e7('0x14')]({'plain':!![]});var _0x819bf8=[{'name':_0xb1e7('0x15'),'value':'inbound'},{'name':_0xb1e7('0x17'),'value':_0xb1e7('0x18')},{'name':'InternalRoutes','value':_0xb1e7('0x1a')}];var _0x3e46db=_[_0xb1e7('0x1f')](_0x819bf8,['value',_0x40a787[_0xb1e7('0x1e')]])['name'];return db[_0xb1e7('0x45')][_0xb1e7('0x1f')]({'where':{'name':_0x3e46db,'userProfileId':_0x371511[_0xb1e7('0x46')]},'raw':!![]})[_0xb1e7('0x13')](function(_0x10b3b9){if(_0x10b3b9&&_0x10b3b9[_0xb1e7('0x47')]===0x0){return db[_0xb1e7('0x48')][_0xb1e7('0x43')]({'name':_0x40a787[_0xb1e7('0x20')],'resourceId':_0x40a787['id'],'type':_0x10b3b9[_0xb1e7('0x20')],'sectionId':_0x10b3b9['id']},{})[_0xb1e7('0x13')](function(){return _0x52db77;});}else{return _0x52db77;}})[_0xb1e7('0x3e')](function(_0x57d8dc){logger['error'](_0xb1e7('0x49'),_0x57d8dc);throw _0x57d8dc;});}return _0x52db77;})[_0xb1e7('0x13')](respondWithResult(_0x3b2e73,0xc9))[_0xb1e7('0x3e')](handleError(_0x3b2e73,null));};exports[_0xb1e7('0x4a')]=function(_0x688075,_0x30bc65){if(_0x688075[_0xb1e7('0x3f')]['id']){delete _0x688075['body']['id'];}return db['VoiceExtension'][_0xb1e7('0x1f')]({'where':{'id':_0x688075['params']['id']}})[_0xb1e7('0x13')](handleEntityNotFound(_0x30bc65,null))[_0xb1e7('0x13')](function(_0x51b6cb){if(_0x51b6cb){return db[_0xb1e7('0x24')][_0xb1e7('0x4a')](_['pick'](_0x688075[_0xb1e7('0x3f')],[_0xb1e7('0x41'),'context',_0xb1e7('0x4b'),'recordingFormat','cutdigits',_0xb1e7('0x4c'),_0xb1e7('0x4d')]),{'where':{'context':_0x51b6cb[_0xb1e7('0x4e')],'exten':_0x51b6cb[_0xb1e7('0x41')]},'individualHooks':!![]})['then'](function(_0x4f13cd){return _0x4f13cd;});}return null;})[_0xb1e7('0x13')](respondWithStatusCode(_0x30bc65,null))['catch'](handleError(_0x30bc65,null));};exports['addApplications']=function(_0x45b901,_0x3dc73a){return db[_0xb1e7('0x24')][_0xb1e7('0x4f')]({'where':{'id':_0x45b901[_0xb1e7('0x50')]['id']}})[_0xb1e7('0x13')](function(_0x4f33e0){if(_0x4f33e0){return db[_0xb1e7('0x51')][_0xb1e7('0x52')](function(_0x591399){return db[_0xb1e7('0x24')][_0xb1e7('0x12')]({'where':{'VoiceExtensionId':_0x45b901[_0xb1e7('0x50')]['id']},'transaction':_0x591399})[_0xb1e7('0x13')](function(){var _0x5ed807=_[_0xb1e7('0x1c')](_0x45b901[_0xb1e7('0x3f')],function(_0x34f19a){_0x34f19a[_0xb1e7('0x53')]=_0x45b901[_0xb1e7('0x50')]['id'];_0x34f19a[_0xb1e7('0x54')]=!![];return _0x34f19a;});return _0x4f33e0[_0xb1e7('0x55')](_0x5ed807);})[_0xb1e7('0x13')](function(_0x5b0c10){console[_0xb1e7('0x56')]('LOG\x20~\x20.then\x20~\x20routing',_0x5b0c10);return db[_0xb1e7('0x24')]['bulkCreate'](_0x5b0c10,{'transaction':_0x591399});});})[_0xb1e7('0x13')](function(){return db[_0xb1e7('0x24')][_0xb1e7('0x57')]({'where':{'isApp':!![],'VoiceExtensionId':_0x45b901['params']['id']},'order':'cast(priority\x20as\x20unsigned)'});});}})[_0xb1e7('0x13')](respondWithResult(_0x3dc73a,null))[_0xb1e7('0x3e')](handleError(_0x3dc73a,null));};
\ No newline at end of file
index 8c14f08..1feed31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf849=['remove','emit','exports','events','VoiceExtension','setMaxListeners','save','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf849,0x1eb));var _0x9f84=function(_0x37e8e8,_0x1be63e){_0x37e8e8=_0x37e8e8-0x0;var _0x2c3c9e=_0xf849[_0x37e8e8];return _0x2c3c9e;};'use strict';var EventEmitter=require(_0x9f84('0x0'));var VoiceExtension=require('../../mysqldb')['db'][_0x9f84('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x9f84('0x2')](0x0);var events={'afterCreate':_0x9f84('0x3'),'afterUpdate':_0x9f84('0x4'),'afterDestroy':_0x9f84('0x5')};function emitEvent(_0x24143e){return function(_0x510e9a,_0x2b7269,_0x4198e2){VoiceExtensionEvents[_0x9f84('0x6')](_0x24143e+':'+_0x510e9a['id'],_0x510e9a);VoiceExtensionEvents['emit'](_0x24143e,_0x510e9a);_0x4198e2(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension['hook'](e,emitEvent(event));}}module[_0x9f84('0x7')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0xec6a=['exports','events','../../mysqldb','VoiceExtension','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x87ad81,_0x5cb483){var _0x68894e=function(_0xd7f5ff){while(--_0xd7f5ff){_0x87ad81['push'](_0x87ad81['shift']());}};_0x68894e(++_0x5cb483);}(_0xec6a,0xfb));var _0xaec6=function(_0x46b4c7,_0x10a66f){_0x46b4c7=_0x46b4c7-0x0;var _0x33af22=_0xec6a[_0x46b4c7];return _0x33af22;};'use strict';var EventEmitter=require(_0xaec6('0x0'));var VoiceExtension=require(_0xaec6('0x1'))['db'][_0xaec6('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xaec6('0x3')](0x0);var events={'afterCreate':_0xaec6('0x4'),'afterUpdate':_0xaec6('0x5'),'afterDestroy':_0xaec6('0x6')};function emitEvent(_0x20aad1){return function(_0x4550b7,_0xd16d7b,_0x4660c5){VoiceExtensionEvents[_0xaec6('0x7')](_0x20aad1+':'+_0x4550b7['id'],_0x4550b7);VoiceExtensionEvents['emit'](_0x20aad1,_0x4550b7);_0x4660c5(null);};}for(var e in events){if(events[_0xaec6('0x8')](e)){var event=events[e];VoiceExtension['hook'](e,emitEvent(event));}}module[_0xaec6('0x9')]=VoiceExtensionEvents;
\ No newline at end of file
index f0a81ba..a6b1525 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f4a=['appdata','priority','last','concat','catch','define','voice_extensions','Hangup','util','lodash','./voiceExtension.attributes','models','type','Set','CDR(type)=','exten','alias','NoOp','CDR(routeAlias)=','No\x20alias\x20set','inbound','push','CDR(routeid)=','context','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(destination)=','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','XCALLY-MOTION-ANSWER=0','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','split','name','param','prefix','phone','cutdigits','${EXTEN}','SIP','join','U(xcally-mixmonitor-context)','replace','Interval','findAll','interval','IntervalId','then','length','*,*,*,*','intervals','map','tag','toLowerCase','CDR(tag)=','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','queue','includes','app','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','GotoIfTime',',${EXTEN},','appType','outboundDial'];(function(_0x591413,_0x381684){var _0x3e9c05=function(_0x4740a8){while(--_0x4740a8){_0x591413['push'](_0x591413['shift']());}};_0x3e9c05(++_0x381684);}(_0x5f4a,0x101));var _0xa5f4=function(_0x149046,_0x528f93){_0x149046=_0x149046-0x0;var _0x254c96=_0x5f4a[_0x149046];return _0x254c96;};'use strict';var util=require(_0xa5f4('0x0'));var _=require(_0xa5f4('0x1'));var attributes=require(_0xa5f4('0x2'));module['exports']=function(_0x1809b5){var _0xe2763d=_0x1809b5[_0xa5f4('0x3')];function _0x4392b4(_0x51b85c){var _0x1184d6=0x2;var _0x36d0c1=[{'type':_0x51b85c[_0xa5f4('0x4')],'app':_0xa5f4('0x5'),'appdata':_0xa5f4('0x6')+_0x51b85c[_0xa5f4('0x4')],'context':_0x51b85c['context'],'exten':_0x51b85c[_0xa5f4('0x7')],'priority':_0x1184d6++,'VoiceExtensionId':_0x51b85c['id']},{'type':_0x51b85c[_0xa5f4('0x4')],'app':_0x51b85c[_0xa5f4('0x8')]?'Set':_0xa5f4('0x9'),'appdata':_0x51b85c['alias']?_0xa5f4('0xa')+_0x51b85c['alias']:_0xa5f4('0xb'),'context':_0x51b85c['context'],'exten':_0x51b85c[_0xa5f4('0x7')],'priority':_0x1184d6++,'VoiceExtensionId':_0x51b85c['id']}];if(_0x51b85c['type']===_0xa5f4('0xc')){_0x36d0c1[_0xa5f4('0xd')]({'type':'inbound','app':_0xa5f4('0x5'),'appdata':_0xa5f4('0xe')+_0x51b85c['id'],'context':_0x51b85c['context'],'exten':_0x51b85c['exten'],'priority':_0x1184d6++,'VoiceExtensionId':_0x51b85c['id']});}_0x36d0c1['push']({'type':_0x51b85c[_0xa5f4('0x4')],'app':_0xa5f4('0x5'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x51b85c[_0xa5f4('0xf')],'exten':_0x51b85c[_0xa5f4('0x7')],'priority':_0x1184d6++,'VoiceExtensionId':_0x51b85c['id']},{'type':_0x51b85c['type'],'app':_0xa5f4('0x5'),'appdata':_0xa5f4('0x10'),'context':_0x51b85c['context'],'exten':_0x51b85c[_0xa5f4('0x7')],'priority':_0x1184d6++,'VoiceExtensionId':_0x51b85c['id']},{'type':_0x51b85c[_0xa5f4('0x4')],'app':_0xa5f4('0x5'),'appdata':_0xa5f4('0x11'),'context':_0x51b85c['context'],'exten':_0x51b85c['exten'],'priority':_0x1184d6++,'VoiceExtensionId':_0x51b85c['id']});return _0x36d0c1;}function _0x594df2(_0x330dbc){var _0x57d0d0=0x2;var _0x4f83eb=[{'type':_0xa5f4('0x12'),'app':_0xa5f4('0x5'),'appdata':_0xa5f4('0x13'),'context':_0x330dbc['context'],'exten':_0x330dbc['exten'],'priority':_0x57d0d0++,'VoiceExtensionId':_0x330dbc['id']},{'type':_0xa5f4('0x12'),'app':_0x330dbc[_0xa5f4('0x8')]?_0xa5f4('0x5'):'NoOp','appdata':_0x330dbc[_0xa5f4('0x8')]?_0xa5f4('0xa')+_0x330dbc[_0xa5f4('0x8')]:_0xa5f4('0xb'),'context':_0x330dbc['context'],'exten':_0x330dbc[_0xa5f4('0x7')],'priority':_0x57d0d0++,'VoiceExtensionId':_0x330dbc['id']},{'type':_0xa5f4('0x12'),'app':_0xa5f4('0x5'),'appdata':_0xa5f4('0x14')+(_0x330dbc['cutdigits']?'${EXTEN:'+_0x330dbc['cutdigits']+'}':'${EXTEN}'),'context':_0x330dbc[_0xa5f4('0xf')],'exten':_0x330dbc[_0xa5f4('0x7')],'priority':_0x57d0d0++,'VoiceExtensionId':_0x330dbc['id']},{'type':_0xa5f4('0x12'),'app':_0xa5f4('0x5'),'appdata':'CDR(routeid)='+_0x330dbc['id'],'context':_0x330dbc[_0xa5f4('0xf')],'exten':_0x330dbc['exten'],'priority':_0x57d0d0++,'VoiceExtensionId':_0x330dbc['id']},{'type':'outbound','app':'ExecIf','appdata':_0xa5f4('0x15')+(_0x57d0d0+0x2)+'):Goto('+(_0x57d0d0+0x1)+')','context':_0x330dbc[_0xa5f4('0xf')],'exten':_0x330dbc[_0xa5f4('0x7')],'priority':_0x57d0d0++,'VoiceExtensionId':_0x330dbc['id']},{'type':_0xa5f4('0x12'),'app':'Set','appdata':_0x330dbc['cutdigits']?_0xa5f4('0x16')+_0x330dbc['cutdigits']+'}':_0xa5f4('0x17'),'context':_0x330dbc[_0xa5f4('0xf')],'exten':_0x330dbc['exten'],'priority':_0x57d0d0++,'VoiceExtensionId':_0x330dbc['id']},{'type':'outbound','app':_0xa5f4('0x5'),'appdata':_0xa5f4('0x18'),'context':_0x330dbc[_0xa5f4('0xf')],'exten':_0x330dbc['exten'],'priority':_0x57d0d0++,'VoiceExtensionId':_0x330dbc['id']},{'type':_0xa5f4('0x12'),'app':_0xa5f4('0x5'),'appdata':_0xa5f4('0x10'),'context':_0x330dbc[_0xa5f4('0xf')],'exten':_0x330dbc[_0xa5f4('0x7')],'priority':_0x57d0d0++,'VoiceExtensionId':_0x330dbc['id']},{'type':_0xa5f4('0x12'),'app':'Set','appdata':_0xa5f4('0x11'),'context':_0x330dbc[_0xa5f4('0xf')],'exten':_0x330dbc[_0xa5f4('0x7')],'priority':_0x57d0d0++,'VoiceExtensionId':_0x330dbc['id']},{'type':_0xa5f4('0x12'),'app':_0xa5f4('0x5'),'appdata':_0xa5f4('0x19')+_0x330dbc['id'],'context':_0x330dbc['context'],'exten':_0x330dbc[_0xa5f4('0x7')],'priority':_0x57d0d0++,'VoiceExtensionId':_0x330dbc['id']}];if(_0x330dbc[_0xa5f4('0x1a')](_0xa5f4('0x1b'))&&_0x330dbc[_0xa5f4('0x1b')]!==_0xa5f4('0x1c')){_0x4f83eb['push']({'type':_0xa5f4('0x12'),'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x330dbc[_0xa5f4('0xf')],'exten':_0x330dbc[_0xa5f4('0x7')],'priority':_0x57d0d0++,'VoiceExtensionId':_0x330dbc['id']},{'type':'outbound','app':'Set','appdata':_0xa5f4('0x1d')+_0x330dbc[_0xa5f4('0x1b')]||_0xa5f4('0x1e'),'context':_0x330dbc[_0xa5f4('0xf')],'exten':_0x330dbc[_0xa5f4('0x7')],'priority':_0x57d0d0++,'VoiceExtensionId':_0x330dbc['id']});}return _0x4f83eb;}function _0x1bd11f(_0x3a3c61){var _0x5dc1e1=[{'name':_0xa5f4('0x1f'),'param':0x0},{'name':_0xa5f4('0x20'),'param':0x1},{'name':_0xa5f4('0x21'),'param':0x2},{'name':_0xa5f4('0x22'),'param':0x3}];var _0x3eeec6={};var _0x51cf74=_0x3a3c61[_0xa5f4('0x23')](',');var _0x48ef80=[];for(var _0x3bf2af=0x0;_0x3bf2af<_0x5dc1e1['length'];_0x3bf2af++){switch(_0x5dc1e1[_0x3bf2af][_0xa5f4('0x24')]){case _0xa5f4('0x1f'):_0x3eeec6[_0xa5f4('0x1f')]=_0x51cf74[_0x5dc1e1[_0x3bf2af][_0xa5f4('0x25')]][_0xa5f4('0x23')]('/')[0x1];_0x3eeec6['phone']=_0x51cf74[_0x5dc1e1[_0x3bf2af]['param']][_0xa5f4('0x23')]('/')[0x2];_0x3eeec6[_0xa5f4('0x26')]=_0x3eeec6['phone']?_0x3eeec6[_0xa5f4('0x27')][_0xa5f4('0x23')]('$')[0x0]:undefined;_0x3eeec6[_0xa5f4('0x27')]=route[_0xa5f4('0x28')]?(_0x3eeec6[_0xa5f4('0x26')]||'')+'${EXTEN:'+route[_0xa5f4('0x28')]+'}':(_0x3eeec6['prefix']||'')+_0xa5f4('0x29');_0x48ef80[_0x5dc1e1[_0x3bf2af][_0xa5f4('0x25')]]=[_0xa5f4('0x2a'),_0x3eeec6['trunk'],_0x3eeec6[_0xa5f4('0x27')]][_0xa5f4('0x2b')]('/');break;case'options':_0x3eeec6[_0xa5f4('0x21')]=_0x51cf74[_0x5dc1e1[_0x3bf2af]['param']];if(route['recordingFormat']!==_0xa5f4('0x1c')){if(_0x3eeec6[_0xa5f4('0x21')]['indexOf'](_0xa5f4('0x2c'))<0x0){_0x3eeec6[_0xa5f4('0x21')]+=_0xa5f4('0x2c');}}else{_0x3eeec6[_0xa5f4('0x21')]=_0x3eeec6[_0xa5f4('0x21')][_0xa5f4('0x2d')](_0xa5f4('0x2c'),'');}_0x48ef80[_0x5dc1e1[_0x3bf2af][_0xa5f4('0x25')]]=_0x3eeec6[_0xa5f4('0x21')];break;default:_0x48ef80[_0x5dc1e1[_0x3bf2af][_0xa5f4('0x25')]]=_0x51cf74[_0x5dc1e1[_0x3bf2af][_0xa5f4('0x25')]];}}return _0x48ef80[_0xa5f4('0x2b')](',');}function _0x4628e1(_0x9076ee,_0x5d4f84,_0x322ce6,_0x1dd493){return new Promise(function(_0x26c215,_0x240b3c){var _0x2a5e49=[];if(_['isEmpty'](_0x5d4f84))return _0x26c215(_0x2a5e49);_0xe2763d[_0xa5f4('0x2e')][_0xa5f4('0x2f')]({'attributes':['id',_0xa5f4('0x30'),_0xa5f4('0x31')],'raw':!![]})[_0xa5f4('0x32')](function(_0x1ae93b){for(var _0x53771c=0x0,_0x3eaf4c=0x0;_0x53771c<_0x5d4f84[_0xa5f4('0x33')];_0x53771c++,_0x3eaf4c=0x0){var _0x11cd31=_0x5d4f84[_0x53771c];var _0x3b23f9=[];var _0x2c3466=[];if(_0x11cd31['interval']!==_0xa5f4('0x34')){_0x11cd31[_0xa5f4('0x35')]=[_0x11cd31[_0xa5f4('0x30')]];}else{_0x11cd31[_0xa5f4('0x35')]=_0x11cd31['IntervalId']?_[_0xa5f4('0x36')](_['filter'](_0x1ae93b,{'IntervalId':_0x11cd31['IntervalId']}),_0xa5f4('0x30')):[];}_0x11cd31['context']=_0x9076ee[_0xa5f4('0xf')];_0x11cd31['exten']=_0x9076ee[_0xa5f4('0x7')];if(_0x11cd31['type'])_0x11cd31[_0xa5f4('0x4')]=_0x11cd31[_0xa5f4('0x4')]['toLowerCase']();if(_0x9076ee['type']===_0xa5f4('0x12')){if(_0x11cd31['hasOwnProperty'](_0xa5f4('0x37'))&&_0x11cd31[_0xa5f4('0x37')]&&_0x11cd31[_0xa5f4('0x37')]!=='--'){_0x3b23f9[_0xa5f4('0xd')]({'type':_0x11cd31[_0xa5f4('0x4')][_0xa5f4('0x38')](),'app':_0xa5f4('0x5'),'appdata':_0xa5f4('0x39')+_0x11cd31['tag'],'context':_0x9076ee['context'],'exten':_0x9076ee['exten'],'priority':_0x11cd31[_0xa5f4('0x35')][_0xa5f4('0x33')]+_0x322ce6+_0x3eaf4c++,'VoiceExtensionId':_0x9076ee['id']});}_0x3b23f9[_0xa5f4('0xd')]({'type':_0x11cd31[_0xa5f4('0x4')][_0xa5f4('0x38')](),'app':_0xa5f4('0x3a'),'appdata':_0xa5f4('0x3b')+(_0x11cd31[_0xa5f4('0x3c')]?_0xa5f4('0x3d')+_0x11cd31[_0xa5f4('0x3c')]+')':_0xa5f4('0x3e')),'context':_0x9076ee[_0xa5f4('0xf')],'exten':_0x9076ee[_0xa5f4('0x7')],'priority':_0x11cd31[_0xa5f4('0x35')][_0xa5f4('0x33')]+_0x322ce6+_0x3eaf4c++,'VoiceExtensionId':_0x9076ee['id']});}else{if(_0x11cd31[_0xa5f4('0x1a')](_0xa5f4('0x3f'))){if([_0xa5f4('0x40'),'playback'][_0xa5f4('0x41')](_0x11cd31[_0xa5f4('0x42')][_0xa5f4('0x38')]())&&_0x11cd31['appType']!==_0xa5f4('0x43')){if(_0x11cd31[_0xa5f4('0x3f')]){_0x3b23f9[_0xa5f4('0xd')]({'type':_0x11cd31[_0xa5f4('0x4')][_0xa5f4('0x38')](),'app':_0xa5f4('0x3a'),'appdata':_0xa5f4('0x44'),'context':_0x9076ee[_0xa5f4('0xf')],'exten':_0x9076ee[_0xa5f4('0x7')],'priority':_0x11cd31[_0xa5f4('0x35')][_0xa5f4('0x33')]+_0x322ce6+_0x3eaf4c++,'VoiceExtensionId':_0x9076ee['id']});_0x3b23f9['push']({'type':_0x11cd31[_0xa5f4('0x4')][_0xa5f4('0x38')](),'app':_0xa5f4('0x5'),'appdata':_0xa5f4('0x45'),'context':_0x9076ee[_0xa5f4('0xf')],'exten':_0x9076ee[_0xa5f4('0x7')],'priority':_0x11cd31[_0xa5f4('0x35')][_0xa5f4('0x33')]+_0x322ce6+_0x3eaf4c++,'VoiceExtensionId':_0x9076ee['id']});}else{_0x3b23f9['push']({'type':_0x11cd31[_0xa5f4('0x4')][_0xa5f4('0x38')](),'app':_0xa5f4('0x3a'),'appdata':_0xa5f4('0x46'),'context':_0x9076ee['context'],'exten':_0x9076ee[_0xa5f4('0x7')],'priority':_0x11cd31[_0xa5f4('0x35')][_0xa5f4('0x33')]+_0x322ce6+_0x3eaf4c++,'VoiceExtensionId':_0x9076ee['id']});_0x3b23f9[_0xa5f4('0xd')]({'type':_0x11cd31['type'][_0xa5f4('0x38')](),'app':_0xa5f4('0x5'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x9076ee[_0xa5f4('0xf')],'exten':_0x9076ee[_0xa5f4('0x7')],'priority':_0x11cd31[_0xa5f4('0x35')][_0xa5f4('0x33')]+_0x322ce6+_0x3eaf4c++,'VoiceExtensionId':_0x9076ee['id']});}}}}for(var _0x259ab1=0x0;_0x259ab1<_0x11cd31[_0xa5f4('0x35')][_0xa5f4('0x33')];_0x259ab1++){var _0x3033b6=_0x322ce6+_0x11cd31[_0xa5f4('0x35')][_0xa5f4('0x33')];var _0x50cff1=_0x259ab1===_0x11cd31[_0xa5f4('0x35')]['length']-0x1?_0x322ce6+_0x3b23f9[_0xa5f4('0x33')]+_0x2c3466[_0xa5f4('0x33')]+0x2:_0x322ce6+_0x259ab1+0x1;_0x3b23f9['splice'](_0x259ab1,0x0,{'type':_0x9076ee[_0xa5f4('0x4')],'app':_0xa5f4('0x47'),'appdata':_0x11cd31[_0xa5f4('0x35')][_0x259ab1]+'?'+_0x9076ee[_0xa5f4('0xf')]+_0xa5f4('0x48')+_0x3033b6+':'+_0x9076ee[_0xa5f4('0xf')]+_0xa5f4('0x48')+_0x50cff1,'exten':_0x9076ee[_0xa5f4('0x7')],'context':_0x9076ee[_0xa5f4('0xf')],'priority':_0x322ce6+_0x259ab1,'VoiceExtensionId':_0x9076ee['id']});}if(_0x1dd493&&_0x11cd31[_0xa5f4('0x49')]===_0xa5f4('0x4a'))_0x11cd31[_0xa5f4('0x4b')]=_0x1bd11f(_0x11cd31[_0xa5f4('0x4b')]);_0x11cd31[_0xa5f4('0x4c')]=_0x3b23f9[_0xa5f4('0x33')]?_[_0xa5f4('0x4d')](_0x3b23f9)[_0xa5f4('0x4c')]+0x1:_0x322ce6;_0x2a5e49=_[_0xa5f4('0x4e')](_0x2a5e49,_0x3b23f9,[_0x11cd31],_0x2c3466);_0x322ce6=_[_0xa5f4('0x4d')](_0x2a5e49)[_0xa5f4('0x4c')]+0x1;}return _0x26c215(_0x2a5e49);})[_0xa5f4('0x4f')](function(_0x523dee){_0x240b3c(_0x523dee);});});}return _0x1809b5[_0xa5f4('0x50')]('VoiceExtension',attributes,{'tableName':_0xa5f4('0x51'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x47b70e,_0x1bbbb4){var _0x10f89d=this;var _0xbfbded=_0x10f89d[_0xa5f4('0x4')]===_0xa5f4('0x12')?_0x594df2(_0x10f89d):_0x4392b4(_0x10f89d);return _0x4628e1(_0x10f89d,_0x47b70e,_[_0xa5f4('0x4d')](_0xbfbded)[_0xa5f4('0x4c')]+0x1,_0x1bbbb4)[_0xa5f4('0x32')](function(_0x1715bd){var _0x2667d4=_[_0xa5f4('0x4e')](_0xbfbded,_0x1715bd);_0x2667d4[_0xa5f4('0xd')]({'type':_0x10f89d[_0xa5f4('0x4')],'app':_0xa5f4('0x52'),'exten':_0x10f89d['exten'],'context':_0x10f89d[_0xa5f4('0xf')],'priority':_[_0xa5f4('0x4d')](_0x2667d4)[_0xa5f4('0x4c')]+0x1,'VoiceExtensionId':_0x10f89d['id']});return _0x2667d4;});}}});};
\ No newline at end of file
+var _0xeece=['filter','toLowerCase','tag','CDR(tag)=','ExecIf','Set(CALLERID(all)=','callerID','answer','queue','playback','app','custom','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','GotoIfTime','outboundDial','appdata','priority','last','concat','define','voice_extensions','get','Hangup','./voiceExtension.attributes','exports','models','CDR(type)=','type','context','CDR(routeAlias)=','alias','No\x20alias\x20set','exten','push','inbound','Set','CDR(routeid)=','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','CDR(type)=outbound','NoOp','outbound','cutdigits','${EXTEN}','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','XCALLY-MOTION-ANSWER=0','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','options','url','length','name','param','split','phone','prefix','${EXTEN:','SIP','join','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','interval','IntervalId','then','*,*,*,*','intervals','map'];(function(_0x1dad03,_0x5d3d19){var _0x2873e8=function(_0x340c3d){while(--_0x340c3d){_0x1dad03['push'](_0x1dad03['shift']());}};_0x2873e8(++_0x5d3d19);}(_0xeece,0x159));var _0xeeec=function(_0x40a443,_0x340329){_0x40a443=_0x40a443-0x0;var _0x522176=_0xeece[_0x40a443];return _0x522176;};'use strict';var _=require('lodash');var attributes=require(_0xeeec('0x0'));module[_0xeeec('0x1')]=function(_0x2ae159){var _0x4b9a91=_0x2ae159[_0xeeec('0x2')];function _0x453ec0(_0x389b45){var _0x4c64dd=0x2;var _0x5c7199=[{'type':_0x389b45['type'],'app':'Set','appdata':_0xeeec('0x3')+_0x389b45[_0xeeec('0x4')],'context':_0x389b45[_0xeeec('0x5')],'exten':_0x389b45['exten'],'priority':_0x4c64dd++,'VoiceExtensionId':_0x389b45['id']},{'type':_0x389b45[_0xeeec('0x4')],'app':_0x389b45['alias']?'Set':'NoOp','appdata':_0x389b45['alias']?_0xeeec('0x6')+_0x389b45[_0xeeec('0x7')]:_0xeeec('0x8'),'context':_0x389b45[_0xeeec('0x5')],'exten':_0x389b45[_0xeeec('0x9')],'priority':_0x4c64dd++,'VoiceExtensionId':_0x389b45['id']}];if(_0x389b45[_0xeeec('0x4')]==='inbound'){_0x5c7199[_0xeeec('0xa')]({'type':_0xeeec('0xb'),'app':_0xeeec('0xc'),'appdata':_0xeeec('0xd')+_0x389b45['id'],'context':_0x389b45[_0xeeec('0x5')],'exten':_0x389b45[_0xeeec('0x9')],'priority':_0x4c64dd++,'VoiceExtensionId':_0x389b45['id']});}_0x5c7199[_0xeeec('0xa')]({'type':_0x389b45[_0xeeec('0x4')],'app':_0xeeec('0xc'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x389b45[_0xeeec('0x5')],'exten':_0x389b45[_0xeeec('0x9')],'priority':_0x4c64dd++,'VoiceExtensionId':_0x389b45['id']},{'type':_0x389b45[_0xeeec('0x4')],'app':_0xeeec('0xc'),'appdata':_0xeeec('0xe'),'context':_0x389b45[_0xeeec('0x5')],'exten':_0x389b45['exten'],'priority':_0x4c64dd++,'VoiceExtensionId':_0x389b45['id']},{'type':_0x389b45[_0xeeec('0x4')],'app':_0xeeec('0xc'),'appdata':_0xeeec('0xf'),'context':_0x389b45[_0xeeec('0x5')],'exten':_0x389b45[_0xeeec('0x9')],'priority':_0x4c64dd++,'VoiceExtensionId':_0x389b45['id']});return _0x5c7199;}function _0x3a3350(_0x140392){var _0x28a811=0x2;var _0x17bd8d=[{'type':'outbound','app':_0xeeec('0xc'),'appdata':_0xeeec('0x10'),'context':_0x140392[_0xeeec('0x5')],'exten':_0x140392[_0xeeec('0x9')],'priority':_0x28a811++,'VoiceExtensionId':_0x140392['id']},{'type':'outbound','app':_0x140392[_0xeeec('0x7')]?_0xeeec('0xc'):_0xeeec('0x11'),'appdata':_0x140392[_0xeeec('0x7')]?_0xeeec('0x6')+_0x140392[_0xeeec('0x7')]:_0xeeec('0x8'),'context':_0x140392['context'],'exten':_0x140392[_0xeeec('0x9')],'priority':_0x28a811++,'VoiceExtensionId':_0x140392['id']},{'type':_0xeeec('0x12'),'app':'Set','appdata':'CDR(destination)='+(_0x140392[_0xeeec('0x13')]?'${EXTEN:'+_0x140392[_0xeeec('0x13')]+'}':_0xeeec('0x14')),'context':_0x140392[_0xeeec('0x5')],'exten':_0x140392[_0xeeec('0x9')],'priority':_0x28a811++,'VoiceExtensionId':_0x140392['id']},{'type':'outbound','app':'Set','appdata':_0xeeec('0xd')+_0x140392['id'],'context':_0x140392['context'],'exten':_0x140392[_0xeeec('0x9')],'priority':_0x28a811++,'VoiceExtensionId':_0x140392['id']},{'type':'outbound','app':'ExecIf','appdata':_0xeeec('0x15')+(_0x28a811+0x2)+_0xeeec('0x16')+(_0x28a811+0x1)+')','context':_0x140392['context'],'exten':_0x140392[_0xeeec('0x9')],'priority':_0x28a811++,'VoiceExtensionId':_0x140392['id']},{'type':_0xeeec('0x12'),'app':_0xeeec('0xc'),'appdata':_0x140392[_0xeeec('0x13')]?_0xeeec('0x17')+_0x140392['cutdigits']+'}':_0xeeec('0x18'),'context':_0x140392[_0xeeec('0x5')],'exten':_0x140392[_0xeeec('0x9')],'priority':_0x28a811++,'VoiceExtensionId':_0x140392['id']},{'type':'outbound','app':_0xeeec('0xc'),'appdata':_0xeeec('0x19'),'context':_0x140392[_0xeeec('0x5')],'exten':_0x140392[_0xeeec('0x9')],'priority':_0x28a811++,'VoiceExtensionId':_0x140392['id']},{'type':'outbound','app':_0xeeec('0xc'),'appdata':_0xeeec('0xe'),'context':_0x140392['context'],'exten':_0x140392['exten'],'priority':_0x28a811++,'VoiceExtensionId':_0x140392['id']},{'type':_0xeeec('0x12'),'app':_0xeeec('0xc'),'appdata':_0xeeec('0xf'),'context':_0x140392['context'],'exten':_0x140392[_0xeeec('0x9')],'priority':_0x28a811++,'VoiceExtensionId':_0x140392['id']},{'type':_0xeeec('0x12'),'app':'Set','appdata':'outboundrouteid='+_0x140392['id'],'context':_0x140392['context'],'exten':_0x140392[_0xeeec('0x9')],'priority':_0x28a811++,'VoiceExtensionId':_0x140392['id']}];if(_0x140392[_0xeeec('0x1a')](_0xeeec('0x1b'))&&_0x140392[_0xeeec('0x1b')]!==_0xeeec('0x1c')){_0x17bd8d[_0xeeec('0xa')]({'type':_0xeeec('0x12'),'app':'Set','appdata':_0xeeec('0x1d'),'context':_0x140392['context'],'exten':_0x140392[_0xeeec('0x9')],'priority':_0x28a811++,'VoiceExtensionId':_0x140392['id']},{'type':_0xeeec('0x12'),'app':_0xeeec('0xc'),'appdata':_0xeeec('0x1e')+_0x140392[_0xeeec('0x1b')]||_0xeeec('0x1f'),'context':_0x140392[_0xeeec('0x5')],'exten':_0x140392['exten'],'priority':_0x28a811++,'VoiceExtensionId':_0x140392['id']});}return _0x17bd8d;}function _0x5b1fe6(_0x16a321,_0x387d19){var _0x27dbad=[{'name':_0xeeec('0x20'),'param':0x0},{'name':'timeout','param':0x1},{'name':_0xeeec('0x21'),'param':0x2},{'name':_0xeeec('0x22'),'param':0x3}];var _0x1329b0={};var _0x20812b=_0x387d19['split'](',');var _0x5c5e8e=[];for(var _0x3c4765=0x0;_0x3c4765<_0x27dbad[_0xeeec('0x23')];_0x3c4765++){switch(_0x27dbad[_0x3c4765][_0xeeec('0x24')]){case'trunk':_0x1329b0[_0xeeec('0x20')]=_0x20812b[_0x27dbad[_0x3c4765][_0xeeec('0x25')]][_0xeeec('0x26')]('/')[0x1];_0x1329b0[_0xeeec('0x27')]=_0x20812b[_0x27dbad[_0x3c4765][_0xeeec('0x25')]]['split']('/')[0x2];_0x1329b0[_0xeeec('0x28')]=_0x1329b0[_0xeeec('0x27')]?_0x1329b0[_0xeeec('0x27')][_0xeeec('0x26')]('$')[0x0]:undefined;_0x1329b0[_0xeeec('0x27')]=_0x16a321[_0xeeec('0x13')]?(_0x1329b0[_0xeeec('0x28')]||'')+_0xeeec('0x29')+_0x16a321[_0xeeec('0x13')]+'}':(_0x1329b0['prefix']||'')+_0xeeec('0x14');_0x5c5e8e[_0x27dbad[_0x3c4765][_0xeeec('0x25')]]=[_0xeeec('0x2a'),_0x1329b0['trunk'],_0x1329b0[_0xeeec('0x27')]][_0xeeec('0x2b')]('/');break;case'options':_0x1329b0[_0xeeec('0x21')]=_0x20812b[_0x27dbad[_0x3c4765]['param']];if(_0x16a321[_0xeeec('0x1b')]!==_0xeeec('0x1c')){if(_0x1329b0['options'][_0xeeec('0x2c')](_0xeeec('0x2d'))<0x0){_0x1329b0['options']+=_0xeeec('0x2d');}}else{_0x1329b0['options']=_0x1329b0[_0xeeec('0x21')][_0xeeec('0x2e')]('U(xcally-mixmonitor-context)','');}_0x5c5e8e[_0x27dbad[_0x3c4765][_0xeeec('0x25')]]=_0x1329b0[_0xeeec('0x21')];break;default:_0x5c5e8e[_0x27dbad[_0x3c4765][_0xeeec('0x25')]]=_0x20812b[_0x27dbad[_0x3c4765][_0xeeec('0x25')]];}}return _0x5c5e8e[_0xeeec('0x2b')](',');}function _0x3efda8(_0x1d3e0c,_0x5a23ec,_0x5c6659){return new Promise(function(_0x1358c5,_0x9ddce0){var _0x14b9ac=[];if(_[_0xeeec('0x2f')](_0x5a23ec))return _0x1358c5(_0x14b9ac);_0x4b9a91[_0xeeec('0x30')]['findAll']({'attributes':['id',_0xeeec('0x31'),_0xeeec('0x32')],'raw':!![]})[_0xeeec('0x33')](function(_0x4116b0){for(var _0x4288f3=0x0,_0x5615ae=0x0;_0x4288f3<_0x5a23ec[_0xeeec('0x23')];_0x4288f3++,_0x5615ae=0x0){var _0x56a6d4=_0x5a23ec[_0x4288f3];var _0x4eafbc=[];var _0x5be39a=[];delete _0x56a6d4['id'];if(_0x56a6d4[_0xeeec('0x31')]!==_0xeeec('0x34')){_0x56a6d4[_0xeeec('0x35')]=[_0x56a6d4['interval']];}else{_0x56a6d4[_0xeeec('0x35')]=_0x56a6d4['IntervalId']?_[_0xeeec('0x36')](_[_0xeeec('0x37')](_0x4116b0,{'IntervalId':_0x56a6d4[_0xeeec('0x32')]}),_0xeeec('0x31')):[];}_0x56a6d4['context']=_0x1d3e0c[_0xeeec('0x5')];_0x56a6d4['exten']=_0x1d3e0c[_0xeeec('0x9')];if(_0x56a6d4[_0xeeec('0x4')])_0x56a6d4[_0xeeec('0x4')]=_0x56a6d4[_0xeeec('0x4')][_0xeeec('0x38')]();if(_0x1d3e0c[_0xeeec('0x4')]===_0xeeec('0x12')){if(_0x56a6d4[_0xeeec('0x1a')](_0xeeec('0x39'))&&_0x56a6d4[_0xeeec('0x39')]&&_0x56a6d4[_0xeeec('0x39')]!=='--'){_0x4eafbc[_0xeeec('0xa')]({'type':_0x56a6d4[_0xeeec('0x4')][_0xeeec('0x38')](),'app':_0xeeec('0xc'),'appdata':_0xeeec('0x3a')+_0x56a6d4[_0xeeec('0x39')],'context':_0x1d3e0c['context'],'exten':_0x1d3e0c[_0xeeec('0x9')],'priority':_0x56a6d4[_0xeeec('0x35')][_0xeeec('0x23')]+_0x5c6659+_0x5615ae++,'VoiceExtensionId':_0x1d3e0c['id']});}_0x4eafbc['push']({'type':_0x56a6d4['type'][_0xeeec('0x38')](),'app':_0xeeec('0x3b'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):'+(_0x56a6d4['callerID']?_0xeeec('0x3c')+_0x56a6d4[_0xeeec('0x3d')]+')':'NoOp(No\x20number\x20available)'),'context':_0x1d3e0c[_0xeeec('0x5')],'exten':_0x1d3e0c['exten'],'priority':_0x56a6d4[_0xeeec('0x35')][_0xeeec('0x23')]+_0x5c6659+_0x5615ae++,'VoiceExtensionId':_0x1d3e0c['id']});}else{if(_0x56a6d4[_0xeeec('0x1a')](_0xeeec('0x3e'))){if([_0xeeec('0x3f'),_0xeeec('0x40')]['includes'](_0x56a6d4[_0xeeec('0x41')][_0xeeec('0x38')]())&&_0x56a6d4['appType']!==_0xeeec('0x42')){if(_0x56a6d4[_0xeeec('0x3e')]){_0x4eafbc['push']({'type':_0x56a6d4[_0xeeec('0x4')]['toLowerCase'](),'app':_0xeeec('0x3b'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x1d3e0c[_0xeeec('0x5')],'exten':_0x1d3e0c[_0xeeec('0x9')],'priority':_0x56a6d4[_0xeeec('0x35')][_0xeeec('0x23')]+_0x5c6659+_0x5615ae++,'VoiceExtensionId':_0x1d3e0c['id']});_0x4eafbc[_0xeeec('0xa')]({'type':_0x56a6d4[_0xeeec('0x4')][_0xeeec('0x38')](),'app':_0xeeec('0xc'),'appdata':_0xeeec('0x43'),'context':_0x1d3e0c[_0xeeec('0x5')],'exten':_0x1d3e0c[_0xeeec('0x9')],'priority':_0x56a6d4[_0xeeec('0x35')][_0xeeec('0x23')]+_0x5c6659+_0x5615ae++,'VoiceExtensionId':_0x1d3e0c['id']});}else{_0x4eafbc[_0xeeec('0xa')]({'type':_0x56a6d4[_0xeeec('0x4')][_0xeeec('0x38')](),'app':_0xeeec('0x3b'),'appdata':_0xeeec('0x44'),'context':_0x1d3e0c[_0xeeec('0x5')],'exten':_0x1d3e0c['exten'],'priority':_0x56a6d4[_0xeeec('0x35')]['length']+_0x5c6659+_0x5615ae++,'VoiceExtensionId':_0x1d3e0c['id']});_0x4eafbc[_0xeeec('0xa')]({'type':_0x56a6d4[_0xeeec('0x4')][_0xeeec('0x38')](),'app':_0xeeec('0xc'),'appdata':_0xeeec('0x45'),'context':_0x1d3e0c[_0xeeec('0x5')],'exten':_0x1d3e0c['exten'],'priority':_0x56a6d4['intervals']['length']+_0x5c6659+_0x5615ae++,'VoiceExtensionId':_0x1d3e0c['id']});}}}}for(var _0x266000=0x0;_0x266000<_0x56a6d4['intervals'][_0xeeec('0x23')];_0x266000++){var _0x50f693=_0x5c6659+_0x56a6d4['intervals'][_0xeeec('0x23')];var _0x182a8f=_0x266000===_0x56a6d4[_0xeeec('0x35')][_0xeeec('0x23')]-0x1?_0x5c6659+_0x4eafbc[_0xeeec('0x23')]+_0x5be39a[_0xeeec('0x23')]+0x2:_0x5c6659+_0x266000+0x1;_0x4eafbc['splice'](_0x266000,0x0,{'type':_0x1d3e0c[_0xeeec('0x4')],'app':_0xeeec('0x46'),'appdata':_0x56a6d4[_0xeeec('0x35')][_0x266000]+'?'+_0x1d3e0c[_0xeeec('0x5')]+',${EXTEN},'+_0x50f693+':'+_0x1d3e0c[_0xeeec('0x5')]+',${EXTEN},'+_0x182a8f,'exten':_0x1d3e0c[_0xeeec('0x9')],'context':_0x1d3e0c['context'],'priority':_0x5c6659+_0x266000,'VoiceExtensionId':_0x1d3e0c['id']});}if(_0x56a6d4['appType']===_0xeeec('0x47'))_0x56a6d4[_0xeeec('0x48')]=_0x5b1fe6(_0x1d3e0c,_0x56a6d4[_0xeeec('0x48')]);_0x56a6d4[_0xeeec('0x49')]=_0x4eafbc[_0xeeec('0x23')]?_[_0xeeec('0x4a')](_0x4eafbc)[_0xeeec('0x49')]+0x1:_0x5c6659;_0x14b9ac=_[_0xeeec('0x4b')](_0x14b9ac,_0x4eafbc,[_0x56a6d4],_0x5be39a);_0x5c6659=_[_0xeeec('0x4a')](_0x14b9ac)[_0xeeec('0x49')]+0x1;}return _0x1358c5(_0x14b9ac);})['catch'](function(_0x5a5f34){_0x9ddce0(_0x5a5f34);});});}return _0x2ae159[_0xeeec('0x4c')]('VoiceExtension',attributes,{'tableName':_0xeeec('0x4d'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x2a0cb9){var _0x5d0baf=this[_0xeeec('0x4e')]({'plain':!![]});var _0x3f128a=_0x5d0baf[_0xeeec('0x4')]===_0xeeec('0x12')?_0x3a3350(_0x5d0baf):_0x453ec0(_0x5d0baf);return _0x3efda8(_0x5d0baf,_0x2a0cb9,_[_0xeeec('0x4a')](_0x3f128a)['priority']+0x1)[_0xeeec('0x33')](function(_0x5bbc6e){var _0x2b11c2=_[_0xeeec('0x4b')](_0x3f128a,_0x5bbc6e);_0x2b11c2[_0xeeec('0xa')]({'type':_0x5d0baf[_0xeeec('0x4')],'app':_0xeeec('0x4f'),'exten':_0x5d0baf[_0xeeec('0x9')],'context':_0x5d0baf[_0xeeec('0x5')],'priority':_[_0xeeec('0x4a')](_0x2b11c2)[_0xeeec('0x49')]+0x1,'VoiceExtensionId':_0x5d0baf['id']});return _0x2b11c2;});}}});};
\ No newline at end of file
index 0dacd09..33bd77b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3974=['findAll','options','limit','include','model','attributes','map','debug','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetVoiceExtension','VoiceExtension'];(function(_0x56a061,_0x53fb1b){var _0x105fa0=function(_0x164d08){while(--_0x164d08){_0x56a061['push'](_0x56a061['shift']());}};_0x105fa0(++_0x53fb1b);}(_0x3974,0xbc));var _0x4397=function(_0x31aa77,_0x1e209b){_0x31aa77=_0x31aa77-0x0;var _0x4e3b1d=_0x3974[_0x31aa77];return _0x4e3b1d;};'use strict';var _=require(_0x4397('0x0'));var util=require(_0x4397('0x1'));var moment=require(_0x4397('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4397('0x3'));var db=require(_0x4397('0x4'))['db'];var utils=require(_0x4397('0x5'));var logger=require(_0x4397('0x6'))(_0x4397('0x7'));var config=require('../../config/environment');var jayson=require(_0x4397('0x8'));var client=jayson[_0x4397('0x9')][_0x4397('0xa')]({'port':0x232a});config[_0x4397('0xb')]=_['defaults'](config[_0x4397('0xb')],{'host':_0x4397('0xc'),'port':0x18eb});var socket=require(_0x4397('0xd'))(new Redis(config[_0x4397('0xb')]));require('./voiceExtension.socket')[_0x4397('0xe')](socket);function respondWithRpcPromise(_0x26f0ab,_0x13a0e8,_0x54419f){return new BPromise(function(_0x47e207,_0x41d0da){return client[_0x4397('0xf')](_0x26f0ab,_0x54419f)[_0x4397('0x10')](function(_0x4afa76){logger[_0x4397('0x11')](_0x4397('0x12'),_0x13a0e8,_0x4397('0x13'));logger['debug'](_0x4397('0x14'),_0x13a0e8,_0x4397('0x13'),JSON[_0x4397('0x15')](_0x4afa76));if(_0x4afa76['error']){if(_0x4afa76[_0x4397('0x16')]['code']===0x1f4){logger[_0x4397('0x16')]('VoiceExtension,\x20%s,\x20%s',_0x13a0e8,_0x4afa76[_0x4397('0x16')][_0x4397('0x17')]);return _0x41d0da(_0x4afa76[_0x4397('0x16')][_0x4397('0x17')]);}logger[_0x4397('0x16')](_0x4397('0x12'),_0x13a0e8,_0x4afa76['error'][_0x4397('0x17')]);return _0x47e207(_0x4afa76[_0x4397('0x16')][_0x4397('0x17')]);}else{logger[_0x4397('0x11')](_0x4397('0x12'),_0x13a0e8,_0x4397('0x13'));_0x47e207(_0x4afa76[_0x4397('0x18')][_0x4397('0x17')]);}})[_0x4397('0x19')](function(_0x5270d7){logger['error'](_0x4397('0x12'),_0x13a0e8,_0x5270d7);_0x41d0da(_0x5270d7);});});}exports[_0x4397('0x1a')]=function(_0x6ebced){var _0xaf9b09=this;return new Promise(function(_0x5619bb,_0x523002){return db[_0x4397('0x1b')][_0x4397('0x1c')]({'raw':_0x6ebced['options']?_0x6ebced['options']['raw']===undefined?!![]:![]:!![],'where':_0x6ebced[_0x4397('0x1d')]?_0x6ebced[_0x4397('0x1d')]['where']||null:null,'attributes':_0x6ebced[_0x4397('0x1d')]?_0x6ebced[_0x4397('0x1d')]['attributes']||null:null,'limit':_0x6ebced[_0x4397('0x1d')]?_0x6ebced[_0x4397('0x1d')][_0x4397('0x1e')]||null:null,'include':_0x6ebced[_0x4397('0x1d')]?_0x6ebced['options']['include']?_['map'](_0x6ebced[_0x4397('0x1d')][_0x4397('0x1f')],function(_0x1d8f8e){return{'model':db[_0x1d8f8e[_0x4397('0x20')]],'as':_0x1d8f8e['as'],'attributes':_0x1d8f8e[_0x4397('0x21')],'include':_0x1d8f8e[_0x4397('0x1f')]?_[_0x4397('0x22')](_0x1d8f8e[_0x4397('0x1f')],function(_0x47161d){return{'model':db[_0x47161d[_0x4397('0x20')]],'as':_0x47161d['as'],'attributes':_0x47161d[_0x4397('0x21')],'include':_0x47161d[_0x4397('0x1f')]?_[_0x4397('0x22')](_0x47161d[_0x4397('0x1f')],function(_0x550b0d){return{'model':db[_0x550b0d['model']],'as':_0x550b0d['as'],'attributes':_0x550b0d[_0x4397('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3d6188){logger[_0x4397('0x11')]('GetVoiceExtension',_0x6ebced);logger[_0x4397('0x23')](_0x4397('0x1a'),_0x6ebced,JSON[_0x4397('0x15')](_0x3d6188));_0x5619bb(_0x3d6188);})['catch'](function(_0x132d2e){logger[_0x4397('0x16')](_0x4397('0x1a'),_0x132d2e['message'],_0x6ebced);_0x523002(_0xaf9b09[_0x4397('0x16')](0x1f4,_0x132d2e['message']));});});};
\ No newline at end of file
+var _0x2086=['redis','./voiceExtension.socket','register','request','then','info','VoiceExtension,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','attributes','limit','include','map','model','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x1910aa,_0x431cf8){var _0x1d2c62=function(_0x5bcf42){while(--_0x5bcf42){_0x1910aa['push'](_0x1910aa['shift']());}};_0x1d2c62(++_0x431cf8);}(_0x2086,0x124));var _0x6208=function(_0x37c6d9,_0x38ca75){_0x37c6d9=_0x37c6d9-0x0;var _0x1d7ace=_0x2086[_0x37c6d9];return _0x1d7ace;};'use strict';var _=require(_0x6208('0x0'));var util=require(_0x6208('0x1'));var moment=require(_0x6208('0x2'));var BPromise=require(_0x6208('0x3'));var rs=require(_0x6208('0x4'));var fs=require('fs');var Redis=require(_0x6208('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x6208('0x6'));var logger=require(_0x6208('0x7'))('rpc');var config=require(_0x6208('0x8'));var jayson=require(_0x6208('0x9'));var client=jayson[_0x6208('0xa')][_0x6208('0xb')]({'port':0x232a});config[_0x6208('0xc')]=_['defaults'](config[_0x6208('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6208('0xc')]));require(_0x6208('0xd'))[_0x6208('0xe')](socket);function respondWithRpcPromise(_0x985f3b,_0x89fad2,_0x497a79){return new BPromise(function(_0x523b66,_0x4f1bfa){return client[_0x6208('0xf')](_0x985f3b,_0x497a79)[_0x6208('0x10')](function(_0x234c45){logger[_0x6208('0x11')](_0x6208('0x12'),_0x89fad2,'request\x20sent');logger[_0x6208('0x13')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x89fad2,_0x6208('0x14'),JSON[_0x6208('0x15')](_0x234c45));if(_0x234c45[_0x6208('0x16')]){if(_0x234c45['error'][_0x6208('0x17')]===0x1f4){logger[_0x6208('0x16')](_0x6208('0x12'),_0x89fad2,_0x234c45['error'][_0x6208('0x18')]);return _0x4f1bfa(_0x234c45[_0x6208('0x16')][_0x6208('0x18')]);}logger['error'](_0x6208('0x12'),_0x89fad2,_0x234c45[_0x6208('0x16')][_0x6208('0x18')]);return _0x523b66(_0x234c45['error']['message']);}else{logger[_0x6208('0x11')]('VoiceExtension,\x20%s,\x20%s',_0x89fad2,'request\x20sent');_0x523b66(_0x234c45[_0x6208('0x19')]['message']);}})[_0x6208('0x1a')](function(_0x3dc8cd){logger[_0x6208('0x16')](_0x6208('0x12'),_0x89fad2,_0x3dc8cd);_0x4f1bfa(_0x3dc8cd);});});}exports[_0x6208('0x1b')]=function(_0x1c436c){var _0x35bc58=this;return new Promise(function(_0x1bc3f5,_0x328af9){return db[_0x6208('0x1c')][_0x6208('0x1d')]({'raw':_0x1c436c[_0x6208('0x1e')]?_0x1c436c['options'][_0x6208('0x1f')]===undefined?!![]:![]:!![],'where':_0x1c436c[_0x6208('0x1e')]?_0x1c436c[_0x6208('0x1e')][_0x6208('0x20')]||null:null,'attributes':_0x1c436c[_0x6208('0x1e')]?_0x1c436c[_0x6208('0x1e')][_0x6208('0x21')]||null:null,'limit':_0x1c436c[_0x6208('0x1e')]?_0x1c436c['options'][_0x6208('0x22')]||null:null,'include':_0x1c436c[_0x6208('0x1e')]?_0x1c436c[_0x6208('0x1e')][_0x6208('0x23')]?_[_0x6208('0x24')](_0x1c436c[_0x6208('0x1e')][_0x6208('0x23')],function(_0x364b13){return{'model':db[_0x364b13[_0x6208('0x25')]],'as':_0x364b13['as'],'attributes':_0x364b13[_0x6208('0x21')],'include':_0x364b13['include']?_[_0x6208('0x24')](_0x364b13[_0x6208('0x23')],function(_0x330ac9){return{'model':db[_0x330ac9[_0x6208('0x25')]],'as':_0x330ac9['as'],'attributes':_0x330ac9[_0x6208('0x21')],'include':_0x330ac9[_0x6208('0x23')]?_['map'](_0x330ac9['include'],function(_0x76dcda){return{'model':db[_0x76dcda[_0x6208('0x25')]],'as':_0x76dcda['as'],'attributes':_0x76dcda[_0x6208('0x21')]};}):[]};}):[]};}):[]:[]})[_0x6208('0x10')](function(_0x5663f7){logger[_0x6208('0x11')](_0x6208('0x1b'),_0x1c436c);logger['debug'](_0x6208('0x1b'),_0x1c436c,JSON['stringify'](_0x5663f7));_0x1bc3f5(_0x5663f7);})['catch'](function(_0x53f775){logger[_0x6208('0x16')]('GetVoiceExtension',_0x53f775[_0x6208('0x18')],_0x1c436c);_0x328af9(_0x35bc58['error'](0x1f4,_0x53f775[_0x6208('0x18')]));});});};
\ No newline at end of file
index b4c3d89..3e17df4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['remove','update','removeListener','register','length','./voiceExtension.events','save'];(function(_0x401cd2,_0x45e36b){var _0x49f835=function(_0x1aeb17){while(--_0x1aeb17){_0x401cd2['push'](_0x401cd2['shift']());}};_0x49f835(++_0x45e36b);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x1b2ff7,_0x12a034){_0x1b2ff7=_0x1b2ff7-0x0;var _0x31656a=_0xc4aa[_0x1b2ff7];return _0x31656a;};'use strict';var VoiceExtensionEvents=require(_0xac4a('0x0'));var events=[_0xac4a('0x1'),_0xac4a('0x2'),_0xac4a('0x3')];function createListener(_0x275161,_0x22469d){return function(_0x58634e){_0x22469d['emit'](_0x275161,_0x58634e);};}function removeListener(_0x47d4f6,_0x2f48ed){return function(){VoiceExtensionEvents[_0xac4a('0x4')](_0x47d4f6,_0x2f48ed);};}exports[_0xac4a('0x5')]=function(_0x215f39){for(var _0x96be2b=0x0,_0x15cd34=events[_0xac4a('0x6')];_0x96be2b<_0x15cd34;_0x96be2b++){var _0x10525b=events[_0x96be2b];var _0x5c6179=createListener('voiceExtension:'+_0x10525b,_0x215f39);VoiceExtensionEvents['on'](_0x10525b,_0x5c6179);}};
\ No newline at end of file
+var _0x2ef3=['update','emit','removeListener','register','length','voiceExtension:','./voiceExtension.events','save','remove'];(function(_0x243dce,_0x548bcf){var _0x482b9d=function(_0x504104){while(--_0x504104){_0x243dce['push'](_0x243dce['shift']());}};_0x482b9d(++_0x548bcf);}(_0x2ef3,0xba));var _0x32ef=function(_0xc80eea,_0x5abffe){_0xc80eea=_0xc80eea-0x0;var _0x7f4d43=_0x2ef3[_0xc80eea];return _0x7f4d43;};'use strict';var VoiceExtensionEvents=require(_0x32ef('0x0'));var events=[_0x32ef('0x1'),_0x32ef('0x2'),_0x32ef('0x3')];function createListener(_0x3944df,_0x38047b){return function(_0x48106c){_0x38047b[_0x32ef('0x4')](_0x3944df,_0x48106c);};}function removeListener(_0x38b7f3,_0x524ab6){return function(){VoiceExtensionEvents[_0x32ef('0x5')](_0x38b7f3,_0x524ab6);};}exports[_0x32ef('0x6')]=function(_0x4c8104){for(var _0x5dfa09=0x0,_0x2c0089=events[_0x32ef('0x7')];_0x5dfa09<_0x2c0089;_0x5dfa09++){var _0x367c39=events[_0x5dfa09];var _0x2fb8eb=createListener(_0x32ef('0x8')+_0x367c39,_0x4c8104);VoiceExtensionEvents['on'](_0x367c39,_0x2fb8eb);}};
\ No newline at end of file
index 28030d1..44cbe7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb091=['getMessages','post','create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../config/environment','./voiceMail.controller','isAuthenticated','index','get','show','/:id/messages'];(function(_0x39c734,_0x2f3e06){var _0xb2a2f9=function(_0x502f3f){while(--_0x502f3f){_0x39c734['push'](_0x39c734['shift']());}};_0xb2a2f9(++_0x2f3e06);}(_0xb091,0x16e));var _0x1b09=function(_0x3ef2cf,_0x329230){_0x3ef2cf=_0x3ef2cf-0x0;var _0x396d30=_0xb091[_0x3ef2cf];return _0x396d30;};'use strict';var multer=require('multer');var util=require(_0x1b09('0x0'));var path=require(_0x1b09('0x1'));var timeout=require(_0x1b09('0x2'));var express=require(_0x1b09('0x3'));var router=express['Router']();var fs_extra=require(_0x1b09('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x1b09('0x5'));var controller=require(_0x1b09('0x6'));router['get']('/',auth[_0x1b09('0x7')](),controller[_0x1b09('0x8')]);router[_0x1b09('0x9')]('/:id',auth[_0x1b09('0x7')](),controller[_0x1b09('0xa')]);router[_0x1b09('0x9')](_0x1b09('0xb'),auth[_0x1b09('0x7')](),controller[_0x1b09('0xc')]);router[_0x1b09('0xd')]('/',auth[_0x1b09('0x7')](),controller[_0x1b09('0xe')]);router[_0x1b09('0xf')](_0x1b09('0x10'),auth['isAuthenticated'](),controller[_0x1b09('0x11')]);router[_0x1b09('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x1b09('0x13')]);module[_0x1b09('0x14')]=router;
\ No newline at end of file
+var _0x1623=['/:id','show','get','/:id/messages','getMessages','post','put','update','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','./voiceMail.controller','isAuthenticated','index'];(function(_0x15c26f,_0x5ea927){var _0x1b1cb1=function(_0x530fdb){while(--_0x530fdb){_0x15c26f['push'](_0x15c26f['shift']());}};_0x1b1cb1(++_0x5ea927);}(_0x1623,0xab));var _0x3162=function(_0x2e22a0,_0x1e30c3){_0x2e22a0=_0x2e22a0-0x0;var _0x4bac18=_0x1623[_0x2e22a0];return _0x4bac18;};'use strict';var multer=require(_0x3162('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x3162('0x1'));var express=require(_0x3162('0x2'));var router=express[_0x3162('0x3')]();var fs_extra=require(_0x3162('0x4'));var auth=require(_0x3162('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x3162('0x6'));router['get']('/',auth[_0x3162('0x7')](),controller[_0x3162('0x8')]);router['get'](_0x3162('0x9'),auth[_0x3162('0x7')](),controller[_0x3162('0xa')]);router[_0x3162('0xb')](_0x3162('0xc'),auth[_0x3162('0x7')](),controller[_0x3162('0xd')]);router[_0x3162('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x3162('0xf')](_0x3162('0x9'),auth[_0x3162('0x7')](),controller[_0x3162('0x10')]);router[_0x3162('0x11')](_0x3162('0x9'),auth[_0x3162('0x7')](),controller[_0x3162('0x12')]);module[_0x3162('0x13')]=router;
\ No newline at end of file
index f2f6974..527d300 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbac9=['central','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER','fullname','\x20-\x20','getDataValue','mailbox','sequelize','exports','STRING','contest_mailbox','email','string','trim'];(function(_0x35a755,_0x538568){var _0x58fdf7=function(_0x269f85){while(--_0x269f85){_0x35a755['push'](_0x35a755['shift']());}};_0x58fdf7(++_0x538568);}(_0xbac9,0x1d5));var _0x9bac=function(_0x52de74,_0x152687){_0x52de74=_0x52de74-0x0;var _0x33113e=_0xbac9[_0x52de74];return _0x33113e;};'use strict';var Sequelize=require(_0x9bac('0x0'));module[_0x9bac('0x1')]={'customer_id':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x9bac('0x2')],'defaultValue':'from-voicemail','unique':_0x9bac('0x3')},'mailbox':{'type':Sequelize[_0x9bac('0x2')],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0x9bac('0x2')]},'email':{'type':Sequelize[_0x9bac('0x2')],'validate':{'isEmail':!![]},'set':function(_0x2be2d1){this['setDataValue'](_0x9bac('0x4'),typeof _0x2be2d1===_0x9bac('0x5')&&_0x2be2d1[_0x9bac('0x6')]()?_0x2be2d1['trim']():null);}},'pager':{'type':Sequelize[_0x9bac('0x2')]},'tz':{'type':Sequelize['STRING'],'defaultValue':_0x9bac('0x7')},'attach':{'type':Sequelize[_0x9bac('0x8')](_0x9bac('0x9'),'no'),'defaultValue':_0x9bac('0x9'),'allowNull':![]},'saycid':{'type':Sequelize[_0x9bac('0x8')]('yes','no'),'defaultValue':_0x9bac('0x9'),'allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0x9bac('0x2')]},'review':{'type':Sequelize['ENUM'](_0x9bac('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x9bac('0x8')](_0x9bac('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x9bac('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x9bac('0x8')](_0x9bac('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x9bac('0xa'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize['ENUM'](_0x9bac('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x9bac('0x8')](_0x9bac('0x9'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x9bac('0x8')](_0x9bac('0x9'),'no'),'defaultValue':_0x9bac('0x9'),'allowNull':![]},'forcename':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x9bac('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x9bac('0x8')](_0x9bac('0x9'),'no'),'defaultValue':_0x9bac('0x9'),'allowNull':![]},'stamp':{'type':_0x9bac('0xb')},'emailsubject':{'type':Sequelize[_0x9bac('0x2')]},'emailbody':{'type':Sequelize[_0x9bac('0x2')]},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x9bac('0xc')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue'](_0x9bac('0xd'))+_0x9bac('0xe')+this[_0x9bac('0xf')](_0x9bac('0x10'));}}};
\ No newline at end of file
+var _0x2170=['VIRTUAL','getDataValue','fullname','\x20-\x20','mailbox','exports','STRING','from-voicemail','contest_mailbox','setDataValue','string','trim','central','ENUM','yes','TINYINT(4)','INTEGER'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2170,0x104));var _0x0217=function(_0x45bfbc,_0x1ff15e){_0x45bfbc=_0x45bfbc-0x0;var _0x407018=_0x2170[_0x45bfbc];return _0x407018;};'use strict';var Sequelize=require('sequelize');module[_0x0217('0x0')]={'customer_id':{'type':Sequelize[_0x0217('0x1')]},'context':{'type':Sequelize[_0x0217('0x1')],'defaultValue':_0x0217('0x2'),'unique':_0x0217('0x3')},'mailbox':{'type':Sequelize[_0x0217('0x1')],'defaultValue':'','allowNull':![],'unique':_0x0217('0x3')},'password':{'type':Sequelize[_0x0217('0x1')]},'fullname':{'type':Sequelize[_0x0217('0x1')]},'email':{'type':Sequelize[_0x0217('0x1')],'validate':{'isEmail':!![]},'set':function(_0x248fdd){this[_0x0217('0x4')]('email',typeof _0x248fdd===_0x0217('0x5')&&_0x248fdd[_0x0217('0x6')]()?_0x248fdd[_0x0217('0x6')]():null);}},'pager':{'type':Sequelize[_0x0217('0x1')]},'tz':{'type':Sequelize[_0x0217('0x1')],'defaultValue':_0x0217('0x7')},'attach':{'type':Sequelize[_0x0217('0x8')](_0x0217('0x9'),'no'),'defaultValue':_0x0217('0x9'),'allowNull':![]},'saycid':{'type':Sequelize[_0x0217('0x8')](_0x0217('0x9'),'no'),'defaultValue':_0x0217('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0x0217('0x1')]},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize['ENUM'](_0x0217('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x0217('0x8')](_0x0217('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x0217('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x0217('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x0217('0xa'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x0217('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x0217('0x8')](_0x0217('0x9'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x0217('0x8')](_0x0217('0x9'),'no'),'defaultValue':_0x0217('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0x0217('0x8')](_0x0217('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x0217('0x8')](_0x0217('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x0217('0x8')]('yes','no'),'defaultValue':_0x0217('0x9'),'allowNull':![]},'stamp':{'type':'TIMESTAMP'},'emailsubject':{'type':Sequelize[_0x0217('0x1')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize[_0x0217('0xb')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x0217('0xb')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x0217('0xc')],'get':function(){return this[_0x0217('0xd')](_0x0217('0xe'))+_0x0217('0xf')+this['getDataValue'](_0x0217('0x10'));}}};
\ No newline at end of file
index bab1d8b..5a98b50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c7c=['sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','reject','save','update','then','destroy','get','Voicemails','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','VoiceMail','includeAll','include','findAll','rows','catch','params','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','getMessages','mailbox','VoiceMailMessage','findAndCountAll','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path'];(function(_0x1d70db,_0x142b63){var _0x3060c6=function(_0x347866){while(--_0x347866){_0x1d70db['push'](_0x1d70db['shift']());}};_0x3060c6(++_0x142b63);}(_0x1c7c,0x164));var _0xc1c7=function(_0xccf4a7,_0x41e50d){_0xccf4a7=_0xccf4a7-0x0;var _0x392495=_0x1c7c[_0xccf4a7];return _0x392495;};'use strict';var emlformat=require(_0xc1c7('0x0'));var rimraf=require(_0xc1c7('0x1'));var zipdir=require(_0xc1c7('0x2'));var jsonpatch=require(_0xc1c7('0x3'));var rp=require('request-promise');var moment=require(_0xc1c7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc1c7('0x5'));var util=require(_0xc1c7('0x6'));var path=require(_0xc1c7('0x7'));var sox=require(_0xc1c7('0x8'));var csv=require(_0xc1c7('0x9'));var ejs=require(_0xc1c7('0xa'));var fs=require('fs');var fs_extra=require(_0xc1c7('0xb'));var _=require(_0xc1c7('0xc'));var squel=require(_0xc1c7('0xd'));var crypto=require(_0xc1c7('0xe'));var jsforce=require(_0xc1c7('0xf'));var deskjs=require(_0xc1c7('0x10'));var toCsv=require(_0xc1c7('0x9'));var querystring=require(_0xc1c7('0x11'));var Papa=require(_0xc1c7('0x12'));var Redis=require(_0xc1c7('0x13'));var authService=require(_0xc1c7('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xc1c7('0x15'));var hardwareService=require(_0xc1c7('0x16'));var logger=require('../../config/logger')(_0xc1c7('0x17'));var utils=require(_0xc1c7('0x18'));var config=require(_0xc1c7('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xc1c7('0x1a'))['db'];function respondWithStatusCode(_0x44bf88,_0x376cab){_0x376cab=_0x376cab||0xcc;return function(_0x35feaa){if(_0x35feaa){return _0x44bf88[_0xc1c7('0x1b')](_0x376cab);}return _0x44bf88[_0xc1c7('0x1c')](_0x376cab)[_0xc1c7('0x1d')]();};}function respondWithResult(_0x1b57ab,_0xdfc7d9){_0xdfc7d9=_0xdfc7d9||0xc8;return function(_0x1b6905){if(_0x1b6905){return _0x1b57ab[_0xc1c7('0x1c')](_0xdfc7d9)[_0xc1c7('0x1e')](_0x1b6905);}};}function respondWithFilteredResult(_0x49576d,_0x3e1f0e){return function(_0x335600){if(_0x335600){var _0x21911c=typeof _0x3e1f0e['offset']===_0xc1c7('0x1f')&&typeof _0x3e1f0e[_0xc1c7('0x20')]===_0xc1c7('0x1f');var _0x39ac54=_0x335600[_0xc1c7('0x21')];var _0xb42702=_0x21911c?0x0:_0x3e1f0e[_0xc1c7('0x22')];var _0x2e93e5=_0x21911c?_0x335600['count']:_0x3e1f0e[_0xc1c7('0x22')]+_0x3e1f0e[_0xc1c7('0x20')];var _0x3ec66a;if(_0x2e93e5>=_0x39ac54){_0x2e93e5=_0x39ac54;_0x3ec66a=0xc8;}else{_0x3ec66a=0xce;}_0x49576d[_0xc1c7('0x1c')](_0x3ec66a);return _0x49576d['set'](_0xc1c7('0x23'),_0xb42702+'-'+_0x2e93e5+'/'+_0x39ac54)['json'](_0x335600);}return null;};}function patchUpdates(_0x5e7e4a){return function(_0x195c5f){try{jsonpatch['apply'](_0x195c5f,_0x5e7e4a,!![]);}catch(_0x5846f0){return BPromise[_0xc1c7('0x24')](_0x5846f0);}return _0x195c5f[_0xc1c7('0x25')]();};}function saveUpdates(_0x2f1b87,_0x4c6b34){return function(_0x813853){if(_0x813853){return _0x813853[_0xc1c7('0x26')](_0x2f1b87)[_0xc1c7('0x27')](function(_0x31a0e0){return _0x31a0e0;});}return null;};}function removeEntity(_0x2e64c4,_0x3a2483){return function(_0x3180fd){if(_0x3180fd){return _0x3180fd[_0xc1c7('0x28')]()[_0xc1c7('0x27')](function(){var _0x1540c1=_0x3180fd[_0xc1c7('0x29')]({'plain':!![]});var _0x363fbc=_0xc1c7('0x2a');return db[_0xc1c7('0x2b')][_0xc1c7('0x28')]({'where':{'type':_0x363fbc,'resourceId':_0x1540c1['id']}})[_0xc1c7('0x27')](function(){return _0x3180fd;});})['then'](function(){_0x2e64c4[_0xc1c7('0x1c')](0xcc)[_0xc1c7('0x1d')]();});}};}function handleEntityNotFound(_0x4e1721,_0x52a1d5){return function(_0x352f24){if(!_0x352f24){_0x4e1721['sendStatus'](0x194);}return _0x352f24;};}function handleError(_0x544fbb,_0x541f12){_0x541f12=_0x541f12||0x1f4;return function(_0x1b873c){logger[_0xc1c7('0x2c')](_0x1b873c[_0xc1c7('0x2d')]);if(_0x1b873c[_0xc1c7('0x2e')]){delete _0x1b873c['name'];}_0x544fbb['status'](_0x541f12)[_0xc1c7('0x2f')](_0x1b873c);};}exports[_0xc1c7('0x30')]=function(_0x9a0ab3,_0x3a786f){var _0x2e35f1={},_0x4968b0={},_0x50042f={'count':0x0,'rows':[]};var _0x125920=_[_0xc1c7('0x31')](db['VoiceMail'][_0xc1c7('0x32')],function(_0x3cf425){return{'name':_0x3cf425[_0xc1c7('0x33')],'type':_0x3cf425[_0xc1c7('0x34')][_0xc1c7('0x35')]};});_0x4968b0[_0xc1c7('0x36')]=_[_0xc1c7('0x31')](_0x125920,'name');_0x4968b0[_0xc1c7('0x37')]=_[_0xc1c7('0x38')](_0x9a0ab3[_0xc1c7('0x37')]);_0x4968b0[_0xc1c7('0x39')]=_[_0xc1c7('0x3a')](_0x4968b0[_0xc1c7('0x36')],_0x4968b0[_0xc1c7('0x37')]);_0x2e35f1[_0xc1c7('0x3b')]=_[_0xc1c7('0x3a')](_0x4968b0['model'],qs['fields'](_0x9a0ab3[_0xc1c7('0x37')][_0xc1c7('0x3c')]));_0x2e35f1[_0xc1c7('0x3b')]=_0x2e35f1[_0xc1c7('0x3b')][_0xc1c7('0x3d')]?_0x2e35f1[_0xc1c7('0x3b')]:_0x4968b0[_0xc1c7('0x36')];if(!_0x9a0ab3[_0xc1c7('0x37')][_0xc1c7('0x3e')](_0xc1c7('0x3f'))){_0x2e35f1[_0xc1c7('0x20')]=qs[_0xc1c7('0x20')](_0x9a0ab3[_0xc1c7('0x37')][_0xc1c7('0x20')]);_0x2e35f1[_0xc1c7('0x22')]=qs[_0xc1c7('0x22')](_0x9a0ab3[_0xc1c7('0x37')][_0xc1c7('0x22')]);}_0x2e35f1[_0xc1c7('0x40')]=qs[_0xc1c7('0x41')](_0x9a0ab3[_0xc1c7('0x37')]['sort']);_0x2e35f1['where']=qs['filters'](_[_0xc1c7('0x42')](_0x9a0ab3['query'],_0x4968b0['filters']),_0x125920);if(_0x9a0ab3[_0xc1c7('0x37')][_0xc1c7('0x43')]){_0x2e35f1[_0xc1c7('0x44')]=_[_0xc1c7('0x45')](_0x2e35f1['where'],{'$or':_[_0xc1c7('0x31')](_0x125920,function(_0x25e005){if(_0x25e005[_0xc1c7('0x34')]!==_0xc1c7('0x46')){var _0x1a395c={};_0x1a395c[_0x25e005[_0xc1c7('0x2e')]]={'$like':'%'+_0x9a0ab3[_0xc1c7('0x37')][_0xc1c7('0x43')]+'%'};return _0x1a395c;}})});}_0x2e35f1=_[_0xc1c7('0x45')]({},_0x2e35f1,_0x9a0ab3[_0xc1c7('0x47')]);var _0x955ba6={'where':_0x2e35f1[_0xc1c7('0x44')]};return db[_0xc1c7('0x48')]['count'](_0x955ba6)[_0xc1c7('0x27')](function(_0x412520){_0x50042f['count']=_0x412520;if(_0x9a0ab3[_0xc1c7('0x37')][_0xc1c7('0x49')]){_0x2e35f1[_0xc1c7('0x4a')]=[{'all':!![]}];}return db[_0xc1c7('0x48')][_0xc1c7('0x4b')](_0x2e35f1);})[_0xc1c7('0x27')](function(_0xd5e06a){_0x50042f[_0xc1c7('0x4c')]=_0xd5e06a;return _0x50042f;})[_0xc1c7('0x27')](respondWithFilteredResult(_0x3a786f,_0x2e35f1))[_0xc1c7('0x4d')](handleError(_0x3a786f,null));};exports['show']=function(_0x14b61f,_0x16fbf5){var _0x519665={'raw':!![],'where':{'id':_0x14b61f[_0xc1c7('0x4e')]['id']}},_0x4c6834={};_0x4c6834[_0xc1c7('0x36')]=_[_0xc1c7('0x38')](db[_0xc1c7('0x48')][_0xc1c7('0x32')]);_0x4c6834['query']=_[_0xc1c7('0x38')](_0x14b61f[_0xc1c7('0x37')]);_0x4c6834['filters']=_['intersection'](_0x4c6834['model'],_0x4c6834[_0xc1c7('0x37')]);_0x519665[_0xc1c7('0x3b')]=_[_0xc1c7('0x3a')](_0x4c6834['model'],qs[_0xc1c7('0x3c')](_0x14b61f[_0xc1c7('0x37')]['fields']));_0x519665[_0xc1c7('0x3b')]=_0x519665[_0xc1c7('0x3b')][_0xc1c7('0x3d')]?_0x519665[_0xc1c7('0x3b')]:_0x4c6834[_0xc1c7('0x36')];if(_0x14b61f[_0xc1c7('0x37')][_0xc1c7('0x49')]){_0x519665[_0xc1c7('0x4a')]=[{'all':!![]}];}_0x519665=_[_0xc1c7('0x45')]({},_0x519665,_0x14b61f[_0xc1c7('0x47')]);return db[_0xc1c7('0x48')][_0xc1c7('0x4f')](_0x519665)[_0xc1c7('0x27')](handleEntityNotFound(_0x16fbf5,null))[_0xc1c7('0x27')](respondWithResult(_0x16fbf5,null))[_0xc1c7('0x4d')](handleError(_0x16fbf5,null));};exports[_0xc1c7('0x50')]=function(_0x2967b7,_0x1addc8){return db['VoiceMail'][_0xc1c7('0x50')](_0x2967b7['body'],{})[_0xc1c7('0x27')](function(_0x23f42f){var _0x2840a3=_0x2967b7['user'][_0xc1c7('0x29')]({'plain':!![]});if(!_0x2840a3)throw new Error(_0xc1c7('0x51'));if(_0x2840a3['role']==='user'){var _0x5c96cc=_0x23f42f[_0xc1c7('0x29')]({'plain':!![]});var _0x415416='Voicemails';return db[_0xc1c7('0x52')][_0xc1c7('0x4f')]({'where':{'name':_0x415416,'userProfileId':_0x2840a3[_0xc1c7('0x53')]},'raw':!![]})[_0xc1c7('0x27')](function(_0x37374c){if(_0x37374c&&_0x37374c[_0xc1c7('0x54')]===0x0){return db['UserProfileResource'][_0xc1c7('0x50')]({'name':_0x5c96cc['name'],'resourceId':_0x5c96cc['id'],'type':_0x37374c[_0xc1c7('0x2e')],'sectionId':_0x37374c['id']},{})[_0xc1c7('0x27')](function(){return _0x23f42f;});}else{return _0x23f42f;}})[_0xc1c7('0x4d')](function(_0x557cb6){logger[_0xc1c7('0x2c')](_0xc1c7('0x55'),_0x557cb6);throw _0x557cb6;});}return _0x23f42f;})[_0xc1c7('0x27')](respondWithResult(_0x1addc8,0xc9))[_0xc1c7('0x4d')](handleError(_0x1addc8,null));};exports[_0xc1c7('0x26')]=function(_0x45dfa2,_0x1dc39f){if(_0x45dfa2[_0xc1c7('0x56')]['id']){delete _0x45dfa2['body']['id'];}return db[_0xc1c7('0x48')][_0xc1c7('0x4f')]({'where':{'id':_0x45dfa2[_0xc1c7('0x4e')]['id']}})['then'](handleEntityNotFound(_0x1dc39f,null))['then'](saveUpdates(_0x45dfa2[_0xc1c7('0x56')],null))[_0xc1c7('0x27')](respondWithResult(_0x1dc39f,null))[_0xc1c7('0x4d')](handleError(_0x1dc39f,null));};exports['destroy']=function(_0x1c636c,_0x48304a){return db[_0xc1c7('0x48')][_0xc1c7('0x4f')]({'where':{'id':_0x1c636c[_0xc1c7('0x4e')]['id']}})[_0xc1c7('0x27')](handleEntityNotFound(_0x48304a,null))[_0xc1c7('0x27')](removeEntity(_0x48304a,null))[_0xc1c7('0x4d')](handleError(_0x48304a,null));};exports[_0xc1c7('0x57')]=function(_0x4df2f8,_0x11c116,_0x2ad2d5){return db[_0xc1c7('0x48')]['findOne']({'where':{'id':_0x4df2f8[_0xc1c7('0x4e')]['id']}})['then'](handleEntityNotFound(_0x11c116,null))[_0xc1c7('0x27')](function(_0x528986){var _0x39d3e2;var _0x212d53={},_0x314232={};_0x314232[_0xc1c7('0x36')]=_[_0xc1c7('0x38')](db['VoiceMailMessage']['rawAttributes']);_0x314232['query']=_[_0xc1c7('0x38')](_0x4df2f8[_0xc1c7('0x37')]);_0x314232[_0xc1c7('0x39')]=_[_0xc1c7('0x3a')](_0x314232[_0xc1c7('0x36')],_0x314232[_0xc1c7('0x37')]);_0x212d53['attributes']=_[_0xc1c7('0x3a')](_0x314232[_0xc1c7('0x36')],qs[_0xc1c7('0x3c')](_0x4df2f8[_0xc1c7('0x37')]['fields']));_0x212d53[_0xc1c7('0x3b')]=_0x212d53[_0xc1c7('0x3b')][_0xc1c7('0x3d')]?_0x212d53['attributes']:_0x314232[_0xc1c7('0x36')];if(!_0x4df2f8[_0xc1c7('0x37')][_0xc1c7('0x3e')](_0xc1c7('0x3f'))){_0x212d53['limit']=qs['limit'](_0x4df2f8[_0xc1c7('0x37')][_0xc1c7('0x20')]);_0x212d53['offset']=qs[_0xc1c7('0x22')](_0x4df2f8[_0xc1c7('0x37')]['offset']);}_0x212d53[_0xc1c7('0x40')]=qs[_0xc1c7('0x41')](_0x4df2f8['query'][_0xc1c7('0x41')]);_0x212d53[_0xc1c7('0x44')]=qs[_0xc1c7('0x39')](_[_0xc1c7('0x42')](_0x4df2f8[_0xc1c7('0x37')],_0x314232[_0xc1c7('0x39')]));if(_0x4df2f8[_0xc1c7('0x37')][_0xc1c7('0x43')]){_0x212d53[_0xc1c7('0x44')]=_[_0xc1c7('0x45')](_0x212d53[_0xc1c7('0x44')],{'$or':_[_0xc1c7('0x31')](_0x212d53[_0xc1c7('0x3b')],function(_0x3c9ffe){var _0x342fc8={};_0x342fc8[_0x3c9ffe]={'$like':'%'+_0x4df2f8[_0xc1c7('0x37')][_0xc1c7('0x43')]+'%'};return _0x342fc8;})});}_0x212d53[_0xc1c7('0x44')]=_[_0xc1c7('0x45')](_0x212d53[_0xc1c7('0x44')],{'mailboxuser':_0x528986[_0xc1c7('0x58')]});_0x212d53=_[_0xc1c7('0x45')]({},_0x212d53,_0x4df2f8[_0xc1c7('0x47')]);return db[_0xc1c7('0x59')][_0xc1c7('0x5a')](_0x212d53)[_0xc1c7('0x27')](respondWithFilteredResult(_0x11c116,_0x212d53));})[_0xc1c7('0x4d')](handleError(_0x11c116,null));};
\ No newline at end of file
+var _0xae60=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','Voicemails','UserProfileResource','error','stack','name','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','type','VIRTUAL','filter','merge','options','VoiceMail','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getMessages','findOne','VoiceMailMessage','order','pick','mailbox','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce'];(function(_0x51f67c,_0x1977ec){var _0x3888c5=function(_0x5469be){while(--_0x5469be){_0x51f67c['push'](_0x51f67c['shift']());}};_0x3888c5(++_0x1977ec);}(_0xae60,0x1c7));var _0x0ae6=function(_0x486f4a,_0x478dc7){_0x486f4a=_0x486f4a-0x0;var _0x135d99=_0xae60[_0x486f4a];return _0x135d99;};'use strict';var emlformat=require(_0x0ae6('0x0'));var rimraf=require(_0x0ae6('0x1'));var zipdir=require(_0x0ae6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0ae6('0x3'));var moment=require(_0x0ae6('0x4'));var BPromise=require(_0x0ae6('0x5'));var Mustache=require('mustache');var util=require(_0x0ae6('0x6'));var path=require(_0x0ae6('0x7'));var sox=require('sox');var csv=require(_0x0ae6('0x8'));var ejs=require(_0x0ae6('0x9'));var fs=require('fs');var fs_extra=require(_0x0ae6('0xa'));var _=require(_0x0ae6('0xb'));var squel=require(_0x0ae6('0xc'));var crypto=require(_0x0ae6('0xd'));var jsforce=require(_0x0ae6('0xe'));var deskjs=require(_0x0ae6('0xf'));var toCsv=require('to-csv');var querystring=require(_0x0ae6('0x10'));var Papa=require(_0x0ae6('0x11'));var Redis=require(_0x0ae6('0x12'));var authService=require(_0x0ae6('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x0ae6('0x14'));var hardwareService=require(_0x0ae6('0x15'));var logger=require(_0x0ae6('0x16'))(_0x0ae6('0x17'));var utils=require(_0x0ae6('0x18'));var config=require(_0x0ae6('0x19'));var licenseUtil=require(_0x0ae6('0x1a'));var db=require(_0x0ae6('0x1b'))['db'];function respondWithStatusCode(_0x3b05a4,_0x30f8f9){_0x30f8f9=_0x30f8f9||0xcc;return function(_0x1aefd5){if(_0x1aefd5){return _0x3b05a4[_0x0ae6('0x1c')](_0x30f8f9);}return _0x3b05a4[_0x0ae6('0x1d')](_0x30f8f9)[_0x0ae6('0x1e')]();};}function respondWithResult(_0x4d2da8,_0x3809c6){_0x3809c6=_0x3809c6||0xc8;return function(_0x10c3bc){if(_0x10c3bc){return _0x4d2da8[_0x0ae6('0x1d')](_0x3809c6)[_0x0ae6('0x1f')](_0x10c3bc);}};}function respondWithFilteredResult(_0xce3e23,_0x3a1e26){return function(_0x151144){if(_0x151144){var _0x3b64ac=typeof _0x3a1e26[_0x0ae6('0x20')]===_0x0ae6('0x21')&&typeof _0x3a1e26[_0x0ae6('0x22')]===_0x0ae6('0x21');var _0xa97151=_0x151144[_0x0ae6('0x23')];var _0xda4f01=_0x3b64ac?0x0:_0x3a1e26[_0x0ae6('0x20')];var _0x2fdf25=_0x3b64ac?_0x151144[_0x0ae6('0x23')]:_0x3a1e26[_0x0ae6('0x20')]+_0x3a1e26[_0x0ae6('0x22')];var _0x26b369;if(_0x2fdf25>=_0xa97151){_0x2fdf25=_0xa97151;_0x26b369=0xc8;}else{_0x26b369=0xce;}_0xce3e23[_0x0ae6('0x1d')](_0x26b369);return _0xce3e23['set'](_0x0ae6('0x24'),_0xda4f01+'-'+_0x2fdf25+'/'+_0xa97151)[_0x0ae6('0x1f')](_0x151144);}return null;};}function patchUpdates(_0x140a3b){return function(_0x1027c2){try{jsonpatch[_0x0ae6('0x25')](_0x1027c2,_0x140a3b,!![]);}catch(_0xb4e6af){return BPromise[_0x0ae6('0x26')](_0xb4e6af);}return _0x1027c2[_0x0ae6('0x27')]();};}function saveUpdates(_0x515f3d,_0x39b22e){return function(_0x2a6484){if(_0x2a6484){return _0x2a6484[_0x0ae6('0x28')](_0x515f3d)[_0x0ae6('0x29')](function(_0x31ad85){return _0x31ad85;});}return null;};}function removeEntity(_0x4eba72,_0x296a9d){return function(_0x4e1242){if(_0x4e1242){return _0x4e1242[_0x0ae6('0x2a')]()[_0x0ae6('0x29')](function(){var _0x3c43d8=_0x4e1242[_0x0ae6('0x2b')]({'plain':!![]});var _0x5b86fe=_0x0ae6('0x2c');return db[_0x0ae6('0x2d')]['destroy']({'where':{'type':_0x5b86fe,'resourceId':_0x3c43d8['id']}})['then'](function(){return _0x4e1242;});})[_0x0ae6('0x29')](function(){_0x4eba72[_0x0ae6('0x1d')](0xcc)[_0x0ae6('0x1e')]();});}};}function handleEntityNotFound(_0x4fe77b,_0x3b5f8f){return function(_0xb68cbe){if(!_0xb68cbe){_0x4fe77b[_0x0ae6('0x1c')](0x194);}return _0xb68cbe;};}function handleError(_0x4df796,_0x2428b2){_0x2428b2=_0x2428b2||0x1f4;return function(_0x29fef3){logger[_0x0ae6('0x2e')](_0x29fef3[_0x0ae6('0x2f')]);if(_0x29fef3[_0x0ae6('0x30')]){delete _0x29fef3[_0x0ae6('0x30')];}_0x4df796['status'](_0x2428b2)['send'](_0x29fef3);};}exports[_0x0ae6('0x31')]=function(_0x419384,_0x4e6df8){var _0x4a06f1={},_0x1ca059={},_0x278577={'count':0x0,'rows':[]};var _0x714c6d=_[_0x0ae6('0x32')](db['VoiceMail'][_0x0ae6('0x33')],function(_0x429f06){return{'name':_0x429f06[_0x0ae6('0x34')],'type':_0x429f06['type'][_0x0ae6('0x35')]};});_0x1ca059[_0x0ae6('0x36')]=_[_0x0ae6('0x32')](_0x714c6d,_0x0ae6('0x30'));_0x1ca059[_0x0ae6('0x37')]=_[_0x0ae6('0x38')](_0x419384[_0x0ae6('0x37')]);_0x1ca059[_0x0ae6('0x39')]=_[_0x0ae6('0x3a')](_0x1ca059[_0x0ae6('0x36')],_0x1ca059['query']);_0x4a06f1[_0x0ae6('0x3b')]=_[_0x0ae6('0x3a')](_0x1ca059['model'],qs[_0x0ae6('0x3c')](_0x419384[_0x0ae6('0x37')][_0x0ae6('0x3c')]));_0x4a06f1['attributes']=_0x4a06f1[_0x0ae6('0x3b')]['length']?_0x4a06f1['attributes']:_0x1ca059[_0x0ae6('0x36')];if(!_0x419384[_0x0ae6('0x37')][_0x0ae6('0x3d')](_0x0ae6('0x3e'))){_0x4a06f1[_0x0ae6('0x22')]=qs['limit'](_0x419384['query'][_0x0ae6('0x22')]);_0x4a06f1['offset']=qs[_0x0ae6('0x20')](_0x419384['query'][_0x0ae6('0x20')]);}_0x4a06f1['order']=qs[_0x0ae6('0x3f')](_0x419384[_0x0ae6('0x37')][_0x0ae6('0x3f')]);_0x4a06f1[_0x0ae6('0x40')]=qs['filters'](_['pick'](_0x419384[_0x0ae6('0x37')],_0x1ca059[_0x0ae6('0x39')]),_0x714c6d);if(_0x419384[_0x0ae6('0x37')]['filter']){_0x4a06f1[_0x0ae6('0x40')]=_['merge'](_0x4a06f1[_0x0ae6('0x40')],{'$or':_[_0x0ae6('0x32')](_0x714c6d,function(_0x460e3f){if(_0x460e3f[_0x0ae6('0x41')]!==_0x0ae6('0x42')){var _0x1f8258={};_0x1f8258[_0x460e3f['name']]={'$like':'%'+_0x419384[_0x0ae6('0x37')][_0x0ae6('0x43')]+'%'};return _0x1f8258;}})});}_0x4a06f1=_[_0x0ae6('0x44')]({},_0x4a06f1,_0x419384[_0x0ae6('0x45')]);var _0x1ad562={'where':_0x4a06f1[_0x0ae6('0x40')]};return db[_0x0ae6('0x46')][_0x0ae6('0x23')](_0x1ad562)['then'](function(_0x38faeb){_0x278577[_0x0ae6('0x23')]=_0x38faeb;if(_0x419384[_0x0ae6('0x37')][_0x0ae6('0x47')]){_0x4a06f1[_0x0ae6('0x48')]=[{'all':!![]}];}return db[_0x0ae6('0x46')][_0x0ae6('0x49')](_0x4a06f1);})[_0x0ae6('0x29')](function(_0xb38cbb){_0x278577[_0x0ae6('0x4a')]=_0xb38cbb;return _0x278577;})[_0x0ae6('0x29')](respondWithFilteredResult(_0x4e6df8,_0x4a06f1))[_0x0ae6('0x4b')](handleError(_0x4e6df8,null));};exports[_0x0ae6('0x4c')]=function(_0x85d9ce,_0x201e95){var _0x16d225={'raw':!![],'where':{'id':_0x85d9ce[_0x0ae6('0x4d')]['id']}},_0x4235de={};_0x4235de['model']=_[_0x0ae6('0x38')](db[_0x0ae6('0x46')][_0x0ae6('0x33')]);_0x4235de[_0x0ae6('0x37')]=_[_0x0ae6('0x38')](_0x85d9ce[_0x0ae6('0x37')]);_0x4235de['filters']=_[_0x0ae6('0x3a')](_0x4235de[_0x0ae6('0x36')],_0x4235de[_0x0ae6('0x37')]);_0x16d225[_0x0ae6('0x3b')]=_['intersection'](_0x4235de['model'],qs['fields'](_0x85d9ce[_0x0ae6('0x37')][_0x0ae6('0x3c')]));_0x16d225[_0x0ae6('0x3b')]=_0x16d225['attributes'][_0x0ae6('0x4e')]?_0x16d225[_0x0ae6('0x3b')]:_0x4235de['model'];if(_0x85d9ce[_0x0ae6('0x37')][_0x0ae6('0x47')]){_0x16d225['include']=[{'all':!![]}];}_0x16d225=_[_0x0ae6('0x44')]({},_0x16d225,_0x85d9ce[_0x0ae6('0x45')]);return db['VoiceMail'][_0x0ae6('0x4f')](_0x16d225)[_0x0ae6('0x29')](handleEntityNotFound(_0x201e95,null))[_0x0ae6('0x29')](respondWithResult(_0x201e95,null))['catch'](handleError(_0x201e95,null));};exports[_0x0ae6('0x50')]=function(_0x21de54,_0x46075a){return db[_0x0ae6('0x46')][_0x0ae6('0x50')](_0x21de54[_0x0ae6('0x51')],{})[_0x0ae6('0x29')](function(_0x5ababa){var _0x5afd3b=_0x21de54[_0x0ae6('0x52')][_0x0ae6('0x2b')]({'plain':!![]});if(!_0x5afd3b)throw new Error(_0x0ae6('0x53'));if(_0x5afd3b['role']===_0x0ae6('0x52')){var _0x51df5c=_0x5ababa['get']({'plain':!![]});var _0x23454a=_0x0ae6('0x2c');return db[_0x0ae6('0x54')]['find']({'where':{'name':_0x23454a,'userProfileId':_0x5afd3b[_0x0ae6('0x55')]},'raw':!![]})[_0x0ae6('0x29')](function(_0x31a4db){if(_0x31a4db&&_0x31a4db[_0x0ae6('0x56')]===0x0){return db[_0x0ae6('0x2d')][_0x0ae6('0x50')]({'name':_0x51df5c[_0x0ae6('0x30')],'resourceId':_0x51df5c['id'],'type':_0x31a4db[_0x0ae6('0x30')],'sectionId':_0x31a4db['id']},{})[_0x0ae6('0x29')](function(){return _0x5ababa;});}else{return _0x5ababa;}})[_0x0ae6('0x4b')](function(_0x1cc515){logger[_0x0ae6('0x2e')](_0x0ae6('0x57'),_0x1cc515);throw _0x1cc515;});}return _0x5ababa;})[_0x0ae6('0x29')](respondWithResult(_0x46075a,0xc9))[_0x0ae6('0x4b')](handleError(_0x46075a,null));};exports['update']=function(_0x4cbe19,_0x30a9f1){if(_0x4cbe19[_0x0ae6('0x51')]['id']){delete _0x4cbe19[_0x0ae6('0x51')]['id'];}return db[_0x0ae6('0x46')][_0x0ae6('0x4f')]({'where':{'id':_0x4cbe19[_0x0ae6('0x4d')]['id']}})[_0x0ae6('0x29')](handleEntityNotFound(_0x30a9f1,null))[_0x0ae6('0x29')](saveUpdates(_0x4cbe19[_0x0ae6('0x51')],null))[_0x0ae6('0x29')](respondWithResult(_0x30a9f1,null))[_0x0ae6('0x4b')](handleError(_0x30a9f1,null));};exports[_0x0ae6('0x2a')]=function(_0x16a311,_0x2babcc){return db[_0x0ae6('0x46')][_0x0ae6('0x4f')]({'where':{'id':_0x16a311[_0x0ae6('0x4d')]['id']}})[_0x0ae6('0x29')](handleEntityNotFound(_0x2babcc,null))['then'](removeEntity(_0x2babcc,null))[_0x0ae6('0x4b')](handleError(_0x2babcc,null));};exports[_0x0ae6('0x58')]=function(_0x15191e,_0x578125,_0x2648de){return db[_0x0ae6('0x46')][_0x0ae6('0x59')]({'where':{'id':_0x15191e[_0x0ae6('0x4d')]['id']}})[_0x0ae6('0x29')](handleEntityNotFound(_0x578125,null))[_0x0ae6('0x29')](function(_0x5ec716){var _0x456d2a;var _0x2132d6={},_0x1c53bf={};_0x1c53bf[_0x0ae6('0x36')]=_[_0x0ae6('0x38')](db[_0x0ae6('0x5a')][_0x0ae6('0x33')]);_0x1c53bf[_0x0ae6('0x37')]=_[_0x0ae6('0x38')](_0x15191e['query']);_0x1c53bf['filters']=_[_0x0ae6('0x3a')](_0x1c53bf[_0x0ae6('0x36')],_0x1c53bf['query']);_0x2132d6['attributes']=_[_0x0ae6('0x3a')](_0x1c53bf[_0x0ae6('0x36')],qs[_0x0ae6('0x3c')](_0x15191e[_0x0ae6('0x37')][_0x0ae6('0x3c')]));_0x2132d6[_0x0ae6('0x3b')]=_0x2132d6[_0x0ae6('0x3b')]['length']?_0x2132d6[_0x0ae6('0x3b')]:_0x1c53bf['model'];if(!_0x15191e[_0x0ae6('0x37')][_0x0ae6('0x3d')]('nolimit')){_0x2132d6[_0x0ae6('0x22')]=qs[_0x0ae6('0x22')](_0x15191e[_0x0ae6('0x37')]['limit']);_0x2132d6[_0x0ae6('0x20')]=qs['offset'](_0x15191e[_0x0ae6('0x37')][_0x0ae6('0x20')]);}_0x2132d6[_0x0ae6('0x5b')]=qs[_0x0ae6('0x3f')](_0x15191e['query']['sort']);_0x2132d6[_0x0ae6('0x40')]=qs[_0x0ae6('0x39')](_[_0x0ae6('0x5c')](_0x15191e[_0x0ae6('0x37')],_0x1c53bf[_0x0ae6('0x39')]));if(_0x15191e[_0x0ae6('0x37')]['filter']){_0x2132d6['where']=_[_0x0ae6('0x44')](_0x2132d6[_0x0ae6('0x40')],{'$or':_[_0x0ae6('0x32')](_0x2132d6[_0x0ae6('0x3b')],function(_0x2bafcc){var _0x15f38f={};_0x15f38f[_0x2bafcc]={'$like':'%'+_0x15191e[_0x0ae6('0x37')][_0x0ae6('0x43')]+'%'};return _0x15f38f;})});}_0x2132d6['where']=_[_0x0ae6('0x44')](_0x2132d6[_0x0ae6('0x40')],{'mailboxuser':_0x5ec716[_0x0ae6('0x5d')]});_0x2132d6=_[_0x0ae6('0x44')]({},_0x2132d6,_0x15191e[_0x0ae6('0x45')]);return db[_0x0ae6('0x5a')]['findAndCountAll'](_0x2132d6)['then'](respondWithFilteredResult(_0x578125,_0x2132d6));})[_0x0ae6('0x4b')](handleError(_0x578125,null));};
\ No newline at end of file
index 1c08fef..226b3f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcee6=['path','../../config/environment','define','VoiceMail','voice_voicemail','mailbox_context','mailbox','context','util','../../config/logger','api','moment','request-promise'];(function(_0x3d5da8,_0x368f59){var _0x1b8412=function(_0x4d94a3){while(--_0x4d94a3){_0x3d5da8['push'](_0x3d5da8['shift']());}};_0x1b8412(++_0x368f59);}(_0xcee6,0xbe));var _0x6cee=function(_0x2405bc,_0x2f28a1){_0x2405bc=_0x2405bc-0x0;var _0x5272d4=_0xcee6[_0x2405bc];return _0x5272d4;};'use strict';var _=require('lodash');var util=require(_0x6cee('0x0'));var logger=require(_0x6cee('0x1'))(_0x6cee('0x2'));var moment=require(_0x6cee('0x3'));var BPromise=require('bluebird');var rp=require(_0x6cee('0x4'));var fs=require('fs');var path=require(_0x6cee('0x5'));var rimraf=require('rimraf');var config=require(_0x6cee('0x6'));var attributes=require('./voiceMail.attributes');module['exports']=function(_0x40e56b,_0x3ef339){return _0x40e56b[_0x6cee('0x7')](_0x6cee('0x8'),attributes,{'tableName':_0x6cee('0x9'),'paranoid':![],'indexes':[{'name':_0x6cee('0xa'),'fields':[_0x6cee('0xb'),_0x6cee('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb727=['lodash','util','api','request-promise','path','rimraf','../../config/environment','./voiceMail.attributes','exports','define','VoiceMail','voice_voicemail','mailbox_context','mailbox','context'];(function(_0x5f32bc,_0x54c85d){var _0x4ee54f=function(_0x1f726d){while(--_0x1f726d){_0x5f32bc['push'](_0x5f32bc['shift']());}};_0x4ee54f(++_0x54c85d);}(_0xb727,0xc3));var _0x7b72=function(_0x27bc80,_0x1f83ea){_0x27bc80=_0x27bc80-0x0;var _0x33b096=_0xb727[_0x27bc80];return _0x33b096;};'use strict';var _=require(_0x7b72('0x0'));var util=require(_0x7b72('0x1'));var logger=require('../../config/logger')(_0x7b72('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7b72('0x3'));var fs=require('fs');var path=require(_0x7b72('0x4'));var rimraf=require(_0x7b72('0x5'));var config=require(_0x7b72('0x6'));var attributes=require(_0x7b72('0x7'));module[_0x7b72('0x8')]=function(_0x2f3c44,_0x4676b1){return _0x2f3c44[_0x7b72('0x9')](_0x7b72('0xa'),attributes,{'tableName':_0x7b72('0xb'),'paranoid':![],'indexes':[{'name':_0x7b72('0xc'),'fields':[_0x7b72('0xd'),_0x7b72('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 97b4e8b..3213098 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4c7=['stringify','error','code','message','info','result','catch','lodash','util','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceMail,\x20%s,\x20%s','debug','request\x20sent'];(function(_0x24c13b,_0x124dfe){var _0x5d0b3b=function(_0x3855da){while(--_0x3855da){_0x24c13b['push'](_0x24c13b['shift']());}};_0x5d0b3b(++_0x124dfe);}(_0xf4c7,0x193));var _0x7f4c=function(_0x14a513,_0x3239f){_0x14a513=_0x14a513-0x0;var _0x47236c=_0xf4c7[_0x14a513];return _0x47236c;};'use strict';var _=require(_0x7f4c('0x0'));var util=require(_0x7f4c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x7f4c('0x2'));var fs=require('fs');var Redis=require(_0x7f4c('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x7f4c('0x4'));var logger=require('../../config/logger')(_0x7f4c('0x5'));var config=require(_0x7f4c('0x6'));var jayson=require(_0x7f4c('0x7'));var client=jayson[_0x7f4c('0x8')][_0x7f4c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x50ad37,_0x4cb361,_0x1731e9){return new BPromise(function(_0x7f04ca,_0x3b8d91){return client[_0x7f4c('0xa')](_0x50ad37,_0x1731e9)[_0x7f4c('0xb')](function(_0x3ccb79){logger['info'](_0x7f4c('0xc'),_0x4cb361,'request\x20sent');logger[_0x7f4c('0xd')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x4cb361,_0x7f4c('0xe'),JSON[_0x7f4c('0xf')](_0x3ccb79));if(_0x3ccb79['error']){if(_0x3ccb79[_0x7f4c('0x10')][_0x7f4c('0x11')]===0x1f4){logger[_0x7f4c('0x10')](_0x7f4c('0xc'),_0x4cb361,_0x3ccb79[_0x7f4c('0x10')][_0x7f4c('0x12')]);return _0x3b8d91(_0x3ccb79[_0x7f4c('0x10')]['message']);}logger['error'](_0x7f4c('0xc'),_0x4cb361,_0x3ccb79[_0x7f4c('0x10')][_0x7f4c('0x12')]);return _0x7f04ca(_0x3ccb79[_0x7f4c('0x10')][_0x7f4c('0x12')]);}else{logger[_0x7f4c('0x13')](_0x7f4c('0xc'),_0x4cb361,_0x7f4c('0xe'));_0x7f04ca(_0x3ccb79[_0x7f4c('0x14')][_0x7f4c('0x12')]);}})[_0x7f4c('0x15')](function(_0x4a8cff){logger[_0x7f4c('0x10')](_0x7f4c('0xc'),_0x4cb361,_0x4a8cff);_0x3b8d91(_0x4a8cff);});});}
\ No newline at end of file
+var _0x5c92=['client','http','request','then','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x4f6afe,_0x44a4ff){var _0x5256f8=function(_0x4c194f){while(--_0x4c194f){_0x4f6afe['push'](_0x4f6afe['shift']());}};_0x5256f8(++_0x44a4ff);}(_0x5c92,0x6d));var _0x25c9=function(_0x343432,_0x2bcb91){_0x343432=_0x343432-0x0;var _0x377ae6=_0x5c92[_0x343432];return _0x377ae6;};'use strict';var _=require(_0x25c9('0x0'));var util=require(_0x25c9('0x1'));var moment=require(_0x25c9('0x2'));var BPromise=require(_0x25c9('0x3'));var rs=require(_0x25c9('0x4'));var fs=require('fs');var Redis=require(_0x25c9('0x5'));var db=require(_0x25c9('0x6'))['db'];var utils=require(_0x25c9('0x7'));var logger=require(_0x25c9('0x8'))(_0x25c9('0x9'));var config=require(_0x25c9('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x25c9('0xb')][_0x25c9('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2bbe72,_0x595c55,_0x5d1cad){return new BPromise(function(_0x4c348c,_0x496b4c){return client[_0x25c9('0xd')](_0x2bbe72,_0x5d1cad)[_0x25c9('0xe')](function(_0x54b511){logger['info'](_0x25c9('0xf'),_0x595c55,_0x25c9('0x10'));logger[_0x25c9('0x11')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x595c55,_0x25c9('0x10'),JSON[_0x25c9('0x12')](_0x54b511));if(_0x54b511[_0x25c9('0x13')]){if(_0x54b511[_0x25c9('0x13')][_0x25c9('0x14')]===0x1f4){logger[_0x25c9('0x13')](_0x25c9('0xf'),_0x595c55,_0x54b511[_0x25c9('0x13')][_0x25c9('0x15')]);return _0x496b4c(_0x54b511[_0x25c9('0x13')]['message']);}logger[_0x25c9('0x13')]('VoiceMail,\x20%s,\x20%s',_0x595c55,_0x54b511[_0x25c9('0x13')][_0x25c9('0x15')]);return _0x4c348c(_0x54b511['error'][_0x25c9('0x15')]);}else{logger[_0x25c9('0x16')](_0x25c9('0xf'),_0x595c55,_0x25c9('0x10'));_0x4c348c(_0x54b511['result'][_0x25c9('0x15')]);}})[_0x25c9('0x17')](function(_0x58ab5f){logger['error']('VoiceMail,\x20%s,\x20%s',_0x595c55,_0x58ab5f);_0x496b4c(_0x58ab5f);});});}
\ No newline at end of file
index 4b38085..5158338 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc70b=['/:id','show','download','update','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','./voiceMailMessage.controller','isAuthenticated','index','get'];(function(_0x53143b,_0x300df7){var _0x509f40=function(_0x5a340a){while(--_0x5a340a){_0x53143b['push'](_0x53143b['shift']());}};_0x509f40(++_0x300df7);}(_0xc70b,0x1a5));var _0xbc70=function(_0x508010,_0x113bb7){_0x508010=_0x508010-0x0;var _0x29213c=_0xc70b[_0x508010];return _0x29213c;};'use strict';var multer=require(_0xbc70('0x0'));var util=require(_0xbc70('0x1'));var path=require(_0xbc70('0x2'));var timeout=require(_0xbc70('0x3'));var express=require(_0xbc70('0x4'));var router=express['Router']();var fs_extra=require(_0xbc70('0x5'));var auth=require(_0xbc70('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbc70('0x7'));router['get']('/',auth[_0xbc70('0x8')](),controller[_0xbc70('0x9')]);router[_0xbc70('0xa')](_0xbc70('0xb'),auth[_0xbc70('0x8')](),controller[_0xbc70('0xc')]);router[_0xbc70('0xa')]('/:id/download',auth[_0xbc70('0x8')](),controller[_0xbc70('0xd')]);router['post']('/',auth[_0xbc70('0x8')](),controller['create']);router['put'](_0xbc70('0xb'),auth[_0xbc70('0x8')](),controller[_0xbc70('0xe')]);router['delete'](_0xbc70('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0xbc70('0xf')]=router;
\ No newline at end of file
+var _0x789b=['./voiceMailMessage.controller','get','isAuthenticated','/:id','/:id/download','download','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x437ffc,_0x464544){var _0x72d17e=function(_0x313cd2){while(--_0x313cd2){_0x437ffc['push'](_0x437ffc['shift']());}};_0x72d17e(++_0x464544);}(_0x789b,0x162));var _0xb789=function(_0x3521bd,_0x80740d){_0x3521bd=_0x3521bd-0x0;var _0x1b3006=_0x789b[_0x3521bd];return _0x1b3006;};'use strict';var multer=require(_0xb789('0x0'));var util=require(_0xb789('0x1'));var path=require(_0xb789('0x2'));var timeout=require(_0xb789('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xb789('0x4'));var auth=require(_0xb789('0x5'));var interaction=require(_0xb789('0x6'));var config=require('../../config/environment');var controller=require(_0xb789('0x7'));router[_0xb789('0x8')]('/',auth[_0xb789('0x9')](),controller['index']);router[_0xb789('0x8')](_0xb789('0xa'),auth[_0xb789('0x9')](),controller['show']);router[_0xb789('0x8')](_0xb789('0xb'),auth[_0xb789('0x9')](),controller[_0xb789('0xc')]);router[_0xb789('0xd')]('/',auth[_0xb789('0x9')](),controller['create']);router[_0xb789('0xe')](_0xb789('0xa'),auth[_0xb789('0x9')](),controller[_0xb789('0xf')]);router[_0xb789('0x10')](_0xb789('0xa'),auth['isAuthenticated'](),controller[_0xb789('0x11')]);module[_0xb789('0x12')]=router;
\ No newline at end of file
index da87ed2..075deec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b54=['getDataValue','INTEGER','STRING','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0x2b54,0x153));var _0x42b5=function(_0x4bf5f0,_0x576274){_0x4bf5f0=_0x4bf5f0-0x0;var _0x397ef4=_0x2b54[_0x4bf5f0];return _0x397ef4;};'use strict';var Sequelize=require(_0x42b5('0x0'));module[_0x42b5('0x1')]={'name':{'type':Sequelize[_0x42b5('0x2')],'get':function(_0x3835cc){return this[_0x42b5('0x3')]('id');}},'msgnum':{'type':Sequelize[_0x42b5('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize[_0x42b5('0x5')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x42b5('0x5')],'defaultValue':''},'callerid':{'type':Sequelize[_0x42b5('0x5')],'defaultValue':''},'origtime':{'type':Sequelize[_0x42b5('0x5')],'defaultValue':''},'duration':{'type':Sequelize[_0x42b5('0x5')],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x42b5('0x5')],'defaultValue':''},'recording':{'type':Sequelize['BLOB']('long'),'defaultValue':null},'flag':{'type':Sequelize[_0x42b5('0x5')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x42b5('0x5')],'defaultValue':''},'stamp':{'type':_0x42b5('0x6'),'defaultValue':Sequelize[_0x42b5('0x7')](_0x42b5('0x8'))}};
\ No newline at end of file
+var _0xea1d=['VIRTUAL','INTEGER','STRING','BLOB','long','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize'];(function(_0x2fc40a,_0x37232e){var _0x23ee64=function(_0x45b1ca){while(--_0x45b1ca){_0x2fc40a['push'](_0x2fc40a['shift']());}};_0x23ee64(++_0x37232e);}(_0xea1d,0xfb));var _0xdea1=function(_0x25e4d4,_0x6b05b8){_0x25e4d4=_0x25e4d4-0x0;var _0x1c5fb1=_0xea1d[_0x25e4d4];return _0x1c5fb1;};'use strict';var Sequelize=require(_0xdea1('0x0'));module['exports']={'name':{'type':Sequelize[_0xdea1('0x1')],'get':function(_0x3e6ebd){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize[_0xdea1('0x2')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xdea1('0x3')],'defaultValue':''},'context':{'type':Sequelize[_0xdea1('0x3')],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize[_0xdea1('0x3')],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize[_0xdea1('0x3')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xdea1('0x3')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xdea1('0x3')],'defaultValue':''},'recording':{'type':Sequelize[_0xdea1('0x4')](_0xdea1('0x5')),'defaultValue':null},'flag':{'type':Sequelize[_0xdea1('0x3')],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':'TIMESTAMP','defaultValue':Sequelize['literal'](_0xdea1('0x6'))}};
\ No newline at end of file
index 2bfcffb..16c9d75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd939=['sendStatus','name','send','map','VoiceMailMessage','rawAttributes','type','key','model','differenceBy','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','catch','show','params','length','find','create','body','msg_id','recording','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','attachment','Content-Disposition','attachment;\x20filename=\x22','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy'];(function(_0x4ecedb,_0x2dffa3){var _0x3544cc=function(_0x107383){while(--_0x107383){_0x4ecedb['push'](_0x4ecedb['shift']());}};_0x3544cc(++_0x2dffa3);}(_0xd939,0x16e));var _0x9d93=function(_0x4c05da,_0x414720){_0x4c05da=_0x4c05da-0x0;var _0x1614db=_0xd939[_0x4c05da];return _0x1614db;};'use strict';var emlformat=require(_0x9d93('0x0'));var rimraf=require(_0x9d93('0x1'));var zipdir=require(_0x9d93('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9d93('0x3'));var moment=require(_0x9d93('0x4'));var BPromise=require(_0x9d93('0x5'));var Mustache=require(_0x9d93('0x6'));var util=require(_0x9d93('0x7'));var path=require('path');var sox=require(_0x9d93('0x8'));var csv=require(_0x9d93('0x9'));var ejs=require(_0x9d93('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9d93('0xb'));var squel=require('squel');var crypto=require(_0x9d93('0xc'));var jsforce=require(_0x9d93('0xd'));var deskjs=require(_0x9d93('0xe'));var toCsv=require(_0x9d93('0x9'));var querystring=require(_0x9d93('0xf'));var Papa=require(_0x9d93('0x10'));var Redis=require(_0x9d93('0x11'));var authService=require(_0x9d93('0x12'));var qs=require(_0x9d93('0x13'));var as=require(_0x9d93('0x14'));var hardwareService=require(_0x9d93('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x9d93('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x9d93('0x17'));var db=require(_0x9d93('0x18'))['db'];function respondWithStatusCode(_0x2a604e,_0x3f967a){_0x3f967a=_0x3f967a||0xcc;return function(_0x73d87d){if(_0x73d87d){return _0x2a604e['sendStatus'](_0x3f967a);}return _0x2a604e[_0x9d93('0x19')](_0x3f967a)[_0x9d93('0x1a')]();};}function respondWithResult(_0x293ab9,_0x182ca5){_0x182ca5=_0x182ca5||0xc8;return function(_0x5ed3b5){if(_0x5ed3b5){return _0x293ab9[_0x9d93('0x19')](_0x182ca5)[_0x9d93('0x1b')](_0x5ed3b5);}};}function respondWithFilteredResult(_0x4b6b38,_0xad9d86){return function(_0x32a473){if(_0x32a473){var _0x1f8a33=typeof _0xad9d86[_0x9d93('0x1c')]===_0x9d93('0x1d')&&typeof _0xad9d86[_0x9d93('0x1e')]==='undefined';var _0x5abec8=_0x32a473[_0x9d93('0x1f')];var _0x5cf0fc=_0x1f8a33?0x0:_0xad9d86[_0x9d93('0x1c')];var _0x3f5b16=_0x1f8a33?_0x32a473[_0x9d93('0x1f')]:_0xad9d86[_0x9d93('0x1c')]+_0xad9d86['limit'];var _0x5232dd;if(_0x3f5b16>=_0x5abec8){_0x3f5b16=_0x5abec8;_0x5232dd=0xc8;}else{_0x5232dd=0xce;}_0x4b6b38[_0x9d93('0x19')](_0x5232dd);return _0x4b6b38[_0x9d93('0x20')](_0x9d93('0x21'),_0x5cf0fc+'-'+_0x3f5b16+'/'+_0x5abec8)[_0x9d93('0x1b')](_0x32a473);}return null;};}function patchUpdates(_0x1d90c3){return function(_0x1becfd){try{jsonpatch[_0x9d93('0x22')](_0x1becfd,_0x1d90c3,!![]);}catch(_0x8751b7){return BPromise['reject'](_0x8751b7);}return _0x1becfd[_0x9d93('0x23')]();};}function saveUpdates(_0x33da7c,_0x57df3a){return function(_0x46eeef){if(_0x46eeef){return _0x46eeef[_0x9d93('0x24')](_0x33da7c)[_0x9d93('0x25')](function(_0x3ad7e5){return _0x3ad7e5;});}return null;};}function removeEntity(_0x2c6c4a,_0x1082d2){return function(_0x30476f){if(_0x30476f){return _0x30476f[_0x9d93('0x26')]()['then'](function(){_0x2c6c4a[_0x9d93('0x19')](0xcc)[_0x9d93('0x1a')]();});}};}function handleEntityNotFound(_0x21d6fa,_0x9fab5b){return function(_0x2e8d08){if(!_0x2e8d08){_0x21d6fa[_0x9d93('0x27')](0x194);}return _0x2e8d08;};}function handleError(_0x272960,_0x4570ad){_0x4570ad=_0x4570ad||0x1f4;return function(_0x4f49a5){logger['error'](_0x4f49a5['stack']);if(_0x4f49a5[_0x9d93('0x28')]){delete _0x4f49a5[_0x9d93('0x28')];}_0x272960[_0x9d93('0x19')](_0x4570ad)[_0x9d93('0x29')](_0x4f49a5);};}exports['index']=function(_0x433ee9,_0x5e0eae){var _0x48b855={},_0x1e3039={},_0x1b64cc={'count':0x0,'rows':[]};var _0x5cc37f=_[_0x9d93('0x2a')](db[_0x9d93('0x2b')][_0x9d93('0x2c')],function(_0x1ab5ca){return{'name':_0x1ab5ca['fieldName'],'type':_0x1ab5ca[_0x9d93('0x2d')][_0x9d93('0x2e')]};});_0x1e3039[_0x9d93('0x2f')]=_[_0x9d93('0x30')](_[_0x9d93('0x2a')](_0x5cc37f,_0x9d93('0x28')),[_0x9d93('0x28')]);_0x1e3039[_0x9d93('0x31')]=_[_0x9d93('0x32')](_0x433ee9[_0x9d93('0x31')]);_0x1e3039[_0x9d93('0x33')]=_[_0x9d93('0x34')](_0x1e3039['model'],_0x1e3039[_0x9d93('0x31')]);_0x48b855[_0x9d93('0x35')]=_[_0x9d93('0x34')](_0x1e3039['model'],qs['fields'](_0x433ee9[_0x9d93('0x31')][_0x9d93('0x36')]));_0x48b855[_0x9d93('0x35')]=_0x48b855[_0x9d93('0x35')]['length']?_0x48b855[_0x9d93('0x35')]:_0x1e3039[_0x9d93('0x2f')];if(!_0x433ee9[_0x9d93('0x31')][_0x9d93('0x37')]('nolimit')){_0x48b855[_0x9d93('0x1e')]=qs[_0x9d93('0x1e')](_0x433ee9[_0x9d93('0x31')][_0x9d93('0x1e')]);_0x48b855[_0x9d93('0x1c')]=qs[_0x9d93('0x1c')](_0x433ee9['query'][_0x9d93('0x1c')]);}_0x48b855[_0x9d93('0x38')]=qs['sort'](_0x433ee9[_0x9d93('0x31')][_0x9d93('0x39')]);_0x48b855['where']=qs[_0x9d93('0x33')](_[_0x9d93('0x3a')](_0x433ee9[_0x9d93('0x31')],_0x1e3039['filters']),_0x5cc37f);if(_0x433ee9[_0x9d93('0x31')][_0x9d93('0x3b')]){_0x48b855['where']=_[_0x9d93('0x3c')](_0x48b855[_0x9d93('0x3d')],{'$or':_[_0x9d93('0x2a')](_0x5cc37f,function(_0x4f82f2){if(_0x4f82f2[_0x9d93('0x2d')]!==_0x9d93('0x3e')){var _0x3c4477={};_0x3c4477[_0x4f82f2[_0x9d93('0x28')]]={'$like':'%'+_0x433ee9[_0x9d93('0x31')][_0x9d93('0x3b')]+'%'};return _0x3c4477;}})});}_0x48b855=_[_0x9d93('0x3c')]({},_0x48b855,_0x433ee9[_0x9d93('0x3f')]);var _0x3cd003={'where':_0x48b855['where']};return db[_0x9d93('0x2b')][_0x9d93('0x1f')](_0x3cd003)[_0x9d93('0x25')](function(_0x51cb33){_0x1b64cc[_0x9d93('0x1f')]=_0x51cb33;if(_0x433ee9[_0x9d93('0x31')][_0x9d93('0x40')]){_0x48b855[_0x9d93('0x41')]=[{'all':!![]}];}return db[_0x9d93('0x2b')]['findAll'](_0x48b855);})[_0x9d93('0x25')](function(_0x4af7b7){_0x1b64cc['rows']=_0x4af7b7;return _0x1b64cc;})[_0x9d93('0x25')](respondWithFilteredResult(_0x5e0eae,_0x48b855))[_0x9d93('0x42')](handleError(_0x5e0eae,null));};exports[_0x9d93('0x43')]=function(_0x21ab2f,_0x545825){var _0x1d5fa2={'raw':!![],'where':{'id':_0x21ab2f[_0x9d93('0x44')]['id']}},_0x41eee6={};_0x41eee6[_0x9d93('0x2f')]=_[_0x9d93('0x32')](db[_0x9d93('0x2b')][_0x9d93('0x2c')]);_0x41eee6[_0x9d93('0x31')]=_[_0x9d93('0x32')](_0x21ab2f[_0x9d93('0x31')]);_0x41eee6['filters']=_[_0x9d93('0x34')](_0x41eee6[_0x9d93('0x2f')],_0x41eee6[_0x9d93('0x31')]);_0x1d5fa2['attributes']=_[_0x9d93('0x34')](_0x41eee6[_0x9d93('0x2f')],qs[_0x9d93('0x36')](_0x21ab2f[_0x9d93('0x31')][_0x9d93('0x36')]));_0x1d5fa2[_0x9d93('0x35')]=_0x1d5fa2['attributes'][_0x9d93('0x45')]?_0x1d5fa2[_0x9d93('0x35')]:_0x41eee6[_0x9d93('0x2f')];if(_0x21ab2f[_0x9d93('0x31')]['includeAll']){_0x1d5fa2['include']=[{'all':!![]}];}_0x1d5fa2=_[_0x9d93('0x3c')]({},_0x1d5fa2,_0x21ab2f[_0x9d93('0x3f')]);return db['VoiceMailMessage'][_0x9d93('0x46')](_0x1d5fa2)['then'](handleEntityNotFound(_0x545825,null))[_0x9d93('0x25')](respondWithResult(_0x545825,null))['catch'](handleError(_0x545825,null));};exports['create']=function(_0x1613aa,_0x248cde){return db[_0x9d93('0x2b')][_0x9d93('0x47')](_0x1613aa['body'],{})[_0x9d93('0x25')](respondWithResult(_0x248cde,0xc9))['catch'](handleError(_0x248cde,null));};exports[_0x9d93('0x24')]=function(_0x5893a3,_0x486a7e){if(_0x5893a3[_0x9d93('0x48')]['id']){delete _0x5893a3['body']['id'];}return db['VoiceMailMessage'][_0x9d93('0x46')]({'where':{'id':_0x5893a3[_0x9d93('0x44')]['id']}})[_0x9d93('0x25')](handleEntityNotFound(_0x486a7e,null))['then'](saveUpdates(_0x5893a3['body'],null))[_0x9d93('0x25')](respondWithResult(_0x486a7e,null))[_0x9d93('0x42')](handleError(_0x486a7e,null));};exports[_0x9d93('0x26')]=function(_0x330c03,_0x59c1c6){return db[_0x9d93('0x2b')][_0x9d93('0x46')]({'where':{'id':_0x330c03[_0x9d93('0x44')]['id']}})['then'](handleEntityNotFound(_0x59c1c6,null))[_0x9d93('0x25')](removeEntity(_0x59c1c6,null))['catch'](handleError(_0x59c1c6,null));};exports['download']=function(_0x58f823,_0x5ea6aa,_0x2536bf){return db[_0x9d93('0x2b')][_0x9d93('0x46')]({'where':{'id':_0x58f823[_0x9d93('0x44')]['id']},'attributes':['id','recording',_0x9d93('0x49')]})[_0x9d93('0x25')](handleEntityNotFound(_0x5ea6aa,null))['then'](function(_0x5da6d2){if(_0x5da6d2){if(!_0x5da6d2[_0x9d93('0x4a')]){throw new db[(_0x9d93('0x4b'))][(_0x9d93('0x4c'))](_0x9d93('0x4d'));}var _0x2cdf8a={'Content-Type':'audio/wav','Content-Disposition':_0x9d93('0x4e')};if(_0x5da6d2[_0x9d93('0x49')]){_0x2cdf8a[_0x9d93('0x4f')]=_0x9d93('0x50')+_0x5da6d2[_0x9d93('0x49')]+'.wav\x22';}_0x5ea6aa[_0x9d93('0x20')](_0x2cdf8a);return _0x5ea6aa[_0x9d93('0x29')](new Buffer(_0x5da6d2[_0x9d93('0x4a')]));}})[_0x9d93('0x42')](handleError(_0x5ea6aa,null));};
\ No newline at end of file
+var _0x40d7=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','save','destroy','error','stack','name','send','index','VoiceMailMessage','rawAttributes','fieldName','type','key','model','map','query','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','VIRTUAL','filter','merge','then','includeAll','include','findAll','rows','params','keys','intersection','options','find','catch','create','body','update','download','msg_id','recording','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x5b8685,_0x1a1c28){var _0xa3ef57=function(_0xa91aad){while(--_0xa91aad){_0x5b8685['push'](_0x5b8685['shift']());}};_0xa3ef57(++_0x1a1c28);}(_0x40d7,0x159));var _0x740d=function(_0x1e03a6,_0xf0349){_0x1e03a6=_0x1e03a6-0x0;var _0x295b64=_0x40d7[_0x1e03a6];return _0x295b64;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x740d('0x0'));var zipdir=require(_0x740d('0x1'));var jsonpatch=require(_0x740d('0x2'));var rp=require(_0x740d('0x3'));var moment=require(_0x740d('0x4'));var BPromise=require(_0x740d('0x5'));var Mustache=require(_0x740d('0x6'));var util=require('util');var path=require('path');var sox=require(_0x740d('0x7'));var csv=require(_0x740d('0x8'));var ejs=require(_0x740d('0x9'));var fs=require('fs');var fs_extra=require(_0x740d('0xa'));var _=require(_0x740d('0xb'));var squel=require(_0x740d('0xc'));var crypto=require(_0x740d('0xd'));var jsforce=require(_0x740d('0xe'));var deskjs=require(_0x740d('0xf'));var toCsv=require(_0x740d('0x8'));var querystring=require(_0x740d('0x10'));var Papa=require(_0x740d('0x11'));var Redis=require(_0x740d('0x12'));var authService=require(_0x740d('0x13'));var qs=require(_0x740d('0x14'));var as=require(_0x740d('0x15'));var hardwareService=require(_0x740d('0x16'));var logger=require(_0x740d('0x17'))(_0x740d('0x18'));var utils=require(_0x740d('0x19'));var config=require(_0x740d('0x1a'));var licenseUtil=require(_0x740d('0x1b'));var db=require(_0x740d('0x1c'))['db'];function respondWithStatusCode(_0x322c40,_0x1dec56){_0x1dec56=_0x1dec56||0xcc;return function(_0x2cece7){if(_0x2cece7){return _0x322c40[_0x740d('0x1d')](_0x1dec56);}return _0x322c40[_0x740d('0x1e')](_0x1dec56)[_0x740d('0x1f')]();};}function respondWithResult(_0xcd31ad,_0x3aa43b){_0x3aa43b=_0x3aa43b||0xc8;return function(_0x3c6e42){if(_0x3c6e42){return _0xcd31ad[_0x740d('0x1e')](_0x3aa43b)[_0x740d('0x20')](_0x3c6e42);}};}function respondWithFilteredResult(_0x13f3e9,_0x553b0f){return function(_0x35f746){if(_0x35f746){var _0x45b158=typeof _0x553b0f['offset']===_0x740d('0x21')&&typeof _0x553b0f['limit']==='undefined';var _0x41d255=_0x35f746[_0x740d('0x22')];var _0x46c1be=_0x45b158?0x0:_0x553b0f['offset'];var _0x3db269=_0x45b158?_0x35f746[_0x740d('0x22')]:_0x553b0f[_0x740d('0x23')]+_0x553b0f[_0x740d('0x24')];var _0xd46d6f;if(_0x3db269>=_0x41d255){_0x3db269=_0x41d255;_0xd46d6f=0xc8;}else{_0xd46d6f=0xce;}_0x13f3e9['status'](_0xd46d6f);return _0x13f3e9[_0x740d('0x25')](_0x740d('0x26'),_0x46c1be+'-'+_0x3db269+'/'+_0x41d255)['json'](_0x35f746);}return null;};}function patchUpdates(_0x32a93a){return function(_0x448de5){try{jsonpatch[_0x740d('0x27')](_0x448de5,_0x32a93a,!![]);}catch(_0x3b3da4){return BPromise['reject'](_0x3b3da4);}return _0x448de5[_0x740d('0x28')]();};}function saveUpdates(_0x3f4259,_0x5ec890){return function(_0x377a53){if(_0x377a53){return _0x377a53['update'](_0x3f4259)['then'](function(_0x51396d){return _0x51396d;});}return null;};}function removeEntity(_0x41d17a,_0x316633){return function(_0x1e3038){if(_0x1e3038){return _0x1e3038[_0x740d('0x29')]()['then'](function(){_0x41d17a[_0x740d('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3299d4,_0x4cd8fe){return function(_0x516026){if(!_0x516026){_0x3299d4['sendStatus'](0x194);}return _0x516026;};}function handleError(_0x231643,_0x26b653){_0x26b653=_0x26b653||0x1f4;return function(_0xcef53c){logger[_0x740d('0x2a')](_0xcef53c[_0x740d('0x2b')]);if(_0xcef53c[_0x740d('0x2c')]){delete _0xcef53c[_0x740d('0x2c')];}_0x231643[_0x740d('0x1e')](_0x26b653)[_0x740d('0x2d')](_0xcef53c);};}exports[_0x740d('0x2e')]=function(_0x2e6e30,_0x395cc7){var _0x3de181={},_0xbfb484={},_0x47ee46={'count':0x0,'rows':[]};var _0x4fe310=_['map'](db[_0x740d('0x2f')][_0x740d('0x30')],function(_0x554202){return{'name':_0x554202[_0x740d('0x31')],'type':_0x554202[_0x740d('0x32')][_0x740d('0x33')]};});_0xbfb484[_0x740d('0x34')]=_['differenceBy'](_[_0x740d('0x35')](_0x4fe310,_0x740d('0x2c')),[_0x740d('0x2c')]);_0xbfb484['query']=_['keys'](_0x2e6e30[_0x740d('0x36')]);_0xbfb484[_0x740d('0x37')]=_['intersection'](_0xbfb484[_0x740d('0x34')],_0xbfb484[_0x740d('0x36')]);_0x3de181[_0x740d('0x38')]=_['intersection'](_0xbfb484[_0x740d('0x34')],qs[_0x740d('0x39')](_0x2e6e30[_0x740d('0x36')]['fields']));_0x3de181[_0x740d('0x38')]=_0x3de181[_0x740d('0x38')][_0x740d('0x3a')]?_0x3de181[_0x740d('0x38')]:_0xbfb484['model'];if(!_0x2e6e30['query'][_0x740d('0x3b')](_0x740d('0x3c'))){_0x3de181[_0x740d('0x24')]=qs[_0x740d('0x24')](_0x2e6e30[_0x740d('0x36')]['limit']);_0x3de181[_0x740d('0x23')]=qs[_0x740d('0x23')](_0x2e6e30[_0x740d('0x36')][_0x740d('0x23')]);}_0x3de181['order']=qs[_0x740d('0x3d')](_0x2e6e30[_0x740d('0x36')][_0x740d('0x3d')]);_0x3de181[_0x740d('0x3e')]=qs[_0x740d('0x37')](_[_0x740d('0x3f')](_0x2e6e30['query'],_0xbfb484['filters']),_0x4fe310);if(_0x2e6e30[_0x740d('0x36')]['filter']){_0x3de181[_0x740d('0x3e')]=_['merge'](_0x3de181['where'],{'$or':_[_0x740d('0x35')](_0x4fe310,function(_0x1de5cd){if(_0x1de5cd[_0x740d('0x32')]!==_0x740d('0x40')){var _0x5f5470={};_0x5f5470[_0x1de5cd['name']]={'$like':'%'+_0x2e6e30[_0x740d('0x36')][_0x740d('0x41')]+'%'};return _0x5f5470;}})});}_0x3de181=_[_0x740d('0x42')]({},_0x3de181,_0x2e6e30['options']);var _0x2dae0a={'where':_0x3de181[_0x740d('0x3e')]};return db['VoiceMailMessage'][_0x740d('0x22')](_0x2dae0a)[_0x740d('0x43')](function(_0x3b8ce4){_0x47ee46['count']=_0x3b8ce4;if(_0x2e6e30[_0x740d('0x36')][_0x740d('0x44')]){_0x3de181[_0x740d('0x45')]=[{'all':!![]}];}return db['VoiceMailMessage'][_0x740d('0x46')](_0x3de181);})[_0x740d('0x43')](function(_0x48646c){_0x47ee46[_0x740d('0x47')]=_0x48646c;return _0x47ee46;})[_0x740d('0x43')](respondWithFilteredResult(_0x395cc7,_0x3de181))['catch'](handleError(_0x395cc7,null));};exports['show']=function(_0x48827c,_0x59c545){var _0x10ae27={'raw':!![],'where':{'id':_0x48827c[_0x740d('0x48')]['id']}},_0x19ac25={};_0x19ac25[_0x740d('0x34')]=_[_0x740d('0x49')](db[_0x740d('0x2f')][_0x740d('0x30')]);_0x19ac25[_0x740d('0x36')]=_[_0x740d('0x49')](_0x48827c[_0x740d('0x36')]);_0x19ac25[_0x740d('0x37')]=_[_0x740d('0x4a')](_0x19ac25[_0x740d('0x34')],_0x19ac25[_0x740d('0x36')]);_0x10ae27[_0x740d('0x38')]=_[_0x740d('0x4a')](_0x19ac25[_0x740d('0x34')],qs[_0x740d('0x39')](_0x48827c[_0x740d('0x36')]['fields']));_0x10ae27[_0x740d('0x38')]=_0x10ae27[_0x740d('0x38')][_0x740d('0x3a')]?_0x10ae27[_0x740d('0x38')]:_0x19ac25[_0x740d('0x34')];if(_0x48827c[_0x740d('0x36')][_0x740d('0x44')]){_0x10ae27[_0x740d('0x45')]=[{'all':!![]}];}_0x10ae27=_[_0x740d('0x42')]({},_0x10ae27,_0x48827c[_0x740d('0x4b')]);return db[_0x740d('0x2f')][_0x740d('0x4c')](_0x10ae27)[_0x740d('0x43')](handleEntityNotFound(_0x59c545,null))['then'](respondWithResult(_0x59c545,null))[_0x740d('0x4d')](handleError(_0x59c545,null));};exports['create']=function(_0x428cef,_0x1c2f64){return db['VoiceMailMessage'][_0x740d('0x4e')](_0x428cef[_0x740d('0x4f')],{})['then'](respondWithResult(_0x1c2f64,0xc9))[_0x740d('0x4d')](handleError(_0x1c2f64,null));};exports[_0x740d('0x50')]=function(_0x5545af,_0x49dd62){if(_0x5545af['body']['id']){delete _0x5545af[_0x740d('0x4f')]['id'];}return db[_0x740d('0x2f')][_0x740d('0x4c')]({'where':{'id':_0x5545af[_0x740d('0x48')]['id']}})[_0x740d('0x43')](handleEntityNotFound(_0x49dd62,null))['then'](saveUpdates(_0x5545af[_0x740d('0x4f')],null))[_0x740d('0x43')](respondWithResult(_0x49dd62,null))[_0x740d('0x4d')](handleError(_0x49dd62,null));};exports[_0x740d('0x29')]=function(_0xfd779a,_0x3e739c){return db['VoiceMailMessage'][_0x740d('0x4c')]({'where':{'id':_0xfd779a[_0x740d('0x48')]['id']}})[_0x740d('0x43')](handleEntityNotFound(_0x3e739c,null))[_0x740d('0x43')](removeEntity(_0x3e739c,null))[_0x740d('0x4d')](handleError(_0x3e739c,null));};exports[_0x740d('0x51')]=function(_0x4cc531,_0x2243dd,_0x571198){return db[_0x740d('0x2f')]['find']({'where':{'id':_0x4cc531[_0x740d('0x48')]['id']},'attributes':['id','recording',_0x740d('0x52')]})[_0x740d('0x43')](handleEntityNotFound(_0x2243dd,null))[_0x740d('0x43')](function(_0x5452ed){if(_0x5452ed){if(!_0x5452ed[_0x740d('0x53')]){throw new db[(_0x740d('0x54'))][(_0x740d('0x55'))](_0x740d('0x56'));}var _0x31cd12={'Content-Type':_0x740d('0x57'),'Content-Disposition':_0x740d('0x58')};if(_0x5452ed[_0x740d('0x52')]){_0x31cd12[_0x740d('0x59')]=_0x740d('0x5a')+_0x5452ed[_0x740d('0x52')]+_0x740d('0x5b');}_0x2243dd['set'](_0x31cd12);return _0x2243dd[_0x740d('0x2d')](new Buffer(_0x5452ed[_0x740d('0x53')]));}})[_0x740d('0x4d')](handleError(_0x2243dd,null));};
\ No newline at end of file
index 637381e..d6c9620 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77b5=['path','rimraf','../../config/environment','./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','util','../../config/logger','moment','request-promise'];(function(_0x54b2a6,_0x2bdc00){var _0x4450eb=function(_0x59843b){while(--_0x59843b){_0x54b2a6['push'](_0x54b2a6['shift']());}};_0x4450eb(++_0x2bdc00);}(_0x77b5,0x95));var _0x577b=function(_0x4e1caa,_0x595090){_0x4e1caa=_0x4e1caa-0x0;var _0x50ffba=_0x77b5[_0x4e1caa];return _0x50ffba;};'use strict';var _=require(_0x577b('0x0'));var util=require(_0x577b('0x1'));var logger=require(_0x577b('0x2'))('api');var moment=require(_0x577b('0x3'));var BPromise=require('bluebird');var rp=require(_0x577b('0x4'));var fs=require('fs');var path=require(_0x577b('0x5'));var rimraf=require(_0x577b('0x6'));var config=require(_0x577b('0x7'));var attributes=require(_0x577b('0x8'));module[_0x577b('0x9')]=function(_0x5d4f8e,_0x37bc68){return _0x5d4f8e[_0x577b('0xa')](_0x577b('0xb'),attributes,{'tableName':_0x577b('0xc'),'paranoid':![],'indexes':[{'name':_0x577b('0xd'),'fields':[_0x577b('0xd')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x1081=['request-promise','path','rimraf','../../config/environment','./voiceMailMessage.attributes','exports','define','voice_voicemail_messages','dir','lodash','../../config/logger','api','bluebird'];(function(_0x4ecbff,_0x4eaa32){var _0x1138d9=function(_0x310549){while(--_0x310549){_0x4ecbff['push'](_0x4ecbff['shift']());}};_0x1138d9(++_0x4eaa32);}(_0x1081,0x98));var _0x1108=function(_0x401cde,_0x2ce15a){_0x401cde=_0x401cde-0x0;var _0x552d36=_0x1081[_0x401cde];return _0x552d36;};'use strict';var _=require(_0x1108('0x0'));var util=require('util');var logger=require(_0x1108('0x1'))(_0x1108('0x2'));var moment=require('moment');var BPromise=require(_0x1108('0x3'));var rp=require(_0x1108('0x4'));var fs=require('fs');var path=require(_0x1108('0x5'));var rimraf=require(_0x1108('0x6'));var config=require(_0x1108('0x7'));var attributes=require(_0x1108('0x8'));module[_0x1108('0x9')]=function(_0x2681ab,_0x38b58c){return _0x2681ab[_0x1108('0xa')]('VoiceMailMessage',attributes,{'tableName':_0x1108('0xb'),'paranoid':![],'indexes':[{'name':_0x1108('0xc'),'fields':[_0x1108('0xc')]}],'timestamps':![]});};
\ No newline at end of file
index 80f3b66..bc14748 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eb3=['message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x17a32f,_0x5a51a){var _0x15a293=function(_0x55fbd3){while(--_0x55fbd3){_0x17a32f['push'](_0x17a32f['shift']());}};_0x15a293(++_0x5a51a);}(_0x7eb3,0x129));var _0x37eb=function(_0x42f3f6,_0x33c73e){_0x42f3f6=_0x42f3f6-0x0;var _0x503864=_0x7eb3[_0x42f3f6];return _0x503864;};'use strict';var _=require(_0x37eb('0x0'));var util=require(_0x37eb('0x1'));var moment=require(_0x37eb('0x2'));var BPromise=require('bluebird');var rs=require(_0x37eb('0x3'));var fs=require('fs');var Redis=require(_0x37eb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x37eb('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x37eb('0x6'));var jayson=require(_0x37eb('0x7'));var client=jayson[_0x37eb('0x8')][_0x37eb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4c03f8,_0x4966f5,_0x3cd185){return new BPromise(function(_0x2cce68,_0x61479d){return client['request'](_0x4c03f8,_0x3cd185)[_0x37eb('0xa')](function(_0x1ed802){logger[_0x37eb('0xb')](_0x37eb('0xc'),_0x4966f5,_0x37eb('0xd'));logger[_0x37eb('0xe')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x4966f5,_0x37eb('0xd'),JSON[_0x37eb('0xf')](_0x1ed802));if(_0x1ed802[_0x37eb('0x10')]){if(_0x1ed802[_0x37eb('0x10')][_0x37eb('0x11')]===0x1f4){logger[_0x37eb('0x10')](_0x37eb('0xc'),_0x4966f5,_0x1ed802[_0x37eb('0x10')][_0x37eb('0x12')]);return _0x61479d(_0x1ed802[_0x37eb('0x10')][_0x37eb('0x12')]);}logger[_0x37eb('0x10')](_0x37eb('0xc'),_0x4966f5,_0x1ed802['error']['message']);return _0x2cce68(_0x1ed802['error']['message']);}else{logger['info'](_0x37eb('0xc'),_0x4966f5,'request\x20sent');_0x2cce68(_0x1ed802[_0x37eb('0x13')][_0x37eb('0x12')]);}})[_0x37eb('0x14')](function(_0x5e3c34){logger[_0x37eb('0x10')](_0x37eb('0xc'),_0x4966f5,_0x5e3c34);_0x61479d(_0x5e3c34);});});}
\ No newline at end of file
+var _0x5518=['rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoiceMailMessage,\x20%s,\x20%s','catch','lodash','util','bluebird','ioredis','../../config/utils'];(function(_0x558e45,_0x4f5e4f){var _0x3e9075=function(_0x289725){while(--_0x289725){_0x558e45['push'](_0x558e45['shift']());}};_0x3e9075(++_0x4f5e4f);}(_0x5518,0xaf));var _0x8551=function(_0x4b027b,_0x4e538d){_0x4b027b=_0x4b027b-0x0;var _0xbcab12=_0x5518[_0x4b027b];return _0xbcab12;};'use strict';var _=require(_0x8551('0x0'));var util=require(_0x8551('0x1'));var moment=require('moment');var BPromise=require(_0x8551('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8551('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x8551('0x4'));var logger=require('../../config/logger')(_0x8551('0x5'));var config=require(_0x8551('0x6'));var jayson=require(_0x8551('0x7'));var client=jayson[_0x8551('0x8')][_0x8551('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x15583a,_0x4bf5dc,_0x57e53c){return new BPromise(function(_0x47b92b,_0x22574e){return client['request'](_0x15583a,_0x57e53c)['then'](function(_0x5198b4){logger[_0x8551('0xa')]('VoiceMailMessage,\x20%s,\x20%s',_0x4bf5dc,_0x8551('0xb'));logger[_0x8551('0xc')](_0x8551('0xd'),_0x4bf5dc,'request\x20sent',JSON[_0x8551('0xe')](_0x5198b4));if(_0x5198b4[_0x8551('0xf')]){if(_0x5198b4[_0x8551('0xf')][_0x8551('0x10')]===0x1f4){logger[_0x8551('0xf')]('VoiceMailMessage,\x20%s,\x20%s',_0x4bf5dc,_0x5198b4[_0x8551('0xf')][_0x8551('0x11')]);return _0x22574e(_0x5198b4[_0x8551('0xf')][_0x8551('0x11')]);}logger[_0x8551('0xf')](_0x8551('0x12'),_0x4bf5dc,_0x5198b4[_0x8551('0xf')][_0x8551('0x11')]);return _0x47b92b(_0x5198b4[_0x8551('0xf')][_0x8551('0x11')]);}else{logger[_0x8551('0xa')](_0x8551('0x12'),_0x4bf5dc,_0x8551('0xb'));_0x47b92b(_0x5198b4['result'][_0x8551('0x11')]);}})[_0x8551('0x13')](function(_0xf2d039){logger['error'](_0x8551('0x12'),_0x4bf5dc,_0xf2d039);_0x22574e(_0xf2d039);});});}
\ No newline at end of file
index 9e91e2a..55d6886 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6562=['util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','/:id/sounds','getSounds','post','create','addSound','put','update','delete','destroy','/:id/sounds/:id2','removeSound'];(function(_0x1e869d,_0x454a5d){var _0x9b7d1e=function(_0x2bcfc0){while(--_0x2bcfc0){_0x1e869d['push'](_0x1e869d['shift']());}};_0x9b7d1e(++_0x454a5d);}(_0x6562,0x1ce));var _0x2656=function(_0x4d934b,_0x52f8e9){_0x4d934b=_0x4d934b-0x0;var _0xc0338b=_0x6562[_0x4d934b];return _0xc0338b;};'use strict';var multer=require('multer');var util=require(_0x2656('0x0'));var path=require(_0x2656('0x1'));var timeout=require(_0x2656('0x2'));var express=require(_0x2656('0x3'));var router=express[_0x2656('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2656('0x5'));var interaction=require(_0x2656('0x6'));var config=require(_0x2656('0x7'));var controller=require('./voiceMusicOnHold.controller');router[_0x2656('0x8')]('/',auth[_0x2656('0x9')](),controller['index']);router[_0x2656('0x8')](_0x2656('0xa'),auth[_0x2656('0x9')](),controller['show']);router[_0x2656('0x8')](_0x2656('0xb'),auth[_0x2656('0x9')](),controller[_0x2656('0xc')]);router[_0x2656('0xd')]('/',auth[_0x2656('0x9')](),controller[_0x2656('0xe')]);router[_0x2656('0xd')]('/:id/sounds',auth[_0x2656('0x9')](),controller[_0x2656('0xf')]);router[_0x2656('0x10')](_0x2656('0xa'),auth[_0x2656('0x9')](),controller[_0x2656('0x11')]);router[_0x2656('0x12')](_0x2656('0xa'),auth[_0x2656('0x9')](),controller[_0x2656('0x13')]);router[_0x2656('0x12')](_0x2656('0x14'),auth[_0x2656('0x9')](),controller[_0x2656('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xf333=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceMusicOnHold.controller','get','isAuthenticated','show','/:id/sounds','getSounds','put','update','/:id','destroy','/:id/sounds/:id2','removeSound'];(function(_0x492b1c,_0x58840e){var _0xfd2d4c=function(_0x468aa){while(--_0x468aa){_0x492b1c['push'](_0x492b1c['shift']());}};_0xfd2d4c(++_0x58840e);}(_0xf333,0x1ce));var _0x3f33=function(_0xb43e03,_0x312cec){_0xb43e03=_0xb43e03-0x0;var _0x435a86=_0xf333[_0xb43e03];return _0x435a86;};'use strict';var multer=require(_0x3f33('0x0'));var util=require(_0x3f33('0x1'));var path=require(_0x3f33('0x2'));var timeout=require(_0x3f33('0x3'));var express=require(_0x3f33('0x4'));var router=express[_0x3f33('0x5')]();var fs_extra=require(_0x3f33('0x6'));var auth=require(_0x3f33('0x7'));var interaction=require(_0x3f33('0x8'));var config=require('../../config/environment');var controller=require(_0x3f33('0x9'));router[_0x3f33('0xa')]('/',auth[_0x3f33('0xb')](),controller['index']);router[_0x3f33('0xa')]('/:id',auth[_0x3f33('0xb')](),controller[_0x3f33('0xc')]);router[_0x3f33('0xa')](_0x3f33('0xd'),auth['isAuthenticated'](),controller[_0x3f33('0xe')]);router['post']('/',auth[_0x3f33('0xb')](),controller['create']);router['post'](_0x3f33('0xd'),auth[_0x3f33('0xb')](),controller['addSound']);router[_0x3f33('0xf')]('/:id',auth[_0x3f33('0xb')](),controller[_0x3f33('0x10')]);router['delete'](_0x3f33('0x11'),auth[_0x3f33('0xb')](),controller[_0x3f33('0x12')]);router['delete'](_0x3f33('0x13'),auth['isAuthenticated'](),controller[_0x3f33('0x14')]);module['exports']=router;
\ No newline at end of file
index 33b31fd..48ccb8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa566=['ENUM','custom','files','mp3nb','quietmp3nb','mp3','STRING','alpha','TIMESTAMP','sequelize','name'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xa566,0x195));var _0x6a56=function(_0x59ac1b,_0x508c53){_0x59ac1b=_0x59ac1b-0x0;var _0x8c7e03=_0xa566[_0x59ac1b];return _0x8c7e03;};'use strict';var Sequelize=require(_0x6a56('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x6a56('0x1')},'mode':{'type':Sequelize[_0x6a56('0x2')](_0x6a56('0x3'),_0x6a56('0x4'),_0x6a56('0x5'),_0x6a56('0x6'),'quietmp3',_0x6a56('0x7')),'allowNull':!![],'defaultValue':_0x6a56('0x4')},'directory':{'type':Sequelize['STRING'],'allowNull':!![]},'application':{'type':Sequelize[_0x6a56('0x8')],'allowNull':!![]},'digit':{'type':Sequelize[_0x6a56('0x8')],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x6a56('0x9')},'format':{'type':Sequelize[_0x6a56('0x8')],'allowNull':!![]},'stamp':{'type':_0x6a56('0xa')},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb843=['TIMESTAMP','sequelize','exports','STRING','name','ENUM','custom','files','quietmp3nb','quietmp3','mp3','alpha'];(function(_0x1a7244,_0x3d99d9){var _0x5c4e9f=function(_0xe168b8){while(--_0xe168b8){_0x1a7244['push'](_0x1a7244['shift']());}};_0x5c4e9f(++_0x3d99d9);}(_0xb843,0x121));var _0x3b84=function(_0xb379e1,_0x94f209){_0xb379e1=_0xb379e1-0x0;var _0x199ed8=_0xb843[_0xb379e1];return _0x199ed8;};'use strict';var Sequelize=require(_0x3b84('0x0'));module[_0x3b84('0x1')]={'name':{'type':Sequelize[_0x3b84('0x2')],'allowNull':![],'unique':_0x3b84('0x3')},'mode':{'type':Sequelize[_0x3b84('0x4')](_0x3b84('0x5'),_0x3b84('0x6'),'mp3nb',_0x3b84('0x7'),_0x3b84('0x8'),_0x3b84('0x9')),'allowNull':!![],'defaultValue':'files'},'directory':{'type':Sequelize[_0x3b84('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0x3b84('0x2')],'allowNull':!![]},'digit':{'type':Sequelize['STRING'],'allowNull':!![]},'sort':{'type':Sequelize[_0x3b84('0x2')],'allowNull':!![],'defaultValue':_0x3b84('0xa')},'format':{'type':Sequelize[_0x3b84('0x2')],'allowNull':!![]},'stamp':{'type':_0x3b84('0xb')},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
index 6914647..2538865 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc26e=['addSound','Sound','findOne','save_name','converted_format','createdAt','server/files/sounds/converted','format','%s.%s','basename','extname','symlinkSync','removeSound','id2','getSounds','pick','hasOwnProperty','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','destroy','then','get','MusicOnHolds','UserProfileResource','error','stack','name','send','map','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','type','VIRTUAL','merge','options','includeAll','include','VoiceMusicOnHold','findAll','rows','catch','show','params','find','body','create','sequelize','mode','files','directory','join','root','server/files/moh','mkdirSync','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','transaction','readdirSync','forEach','unlinkSync','Sequelize','ValidationError','message'];(function(_0x5cc3b6,_0x249e4f){var _0x3ea2e0=function(_0x8ab600){while(--_0x8ab600){_0x5cc3b6['push'](_0x5cc3b6['shift']());}};_0x3ea2e0(++_0x249e4f);}(_0xc26e,0x86));var _0xec26=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc26e[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xec26('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xec26('0x1'));var rp=require(_0xec26('0x2'));var moment=require('moment');var BPromise=require(_0xec26('0x3'));var Mustache=require(_0xec26('0x4'));var util=require(_0xec26('0x5'));var path=require(_0xec26('0x6'));var sox=require(_0xec26('0x7'));var csv=require(_0xec26('0x8'));var ejs=require(_0xec26('0x9'));var fs=require('fs');var fs_extra=require(_0xec26('0xa'));var _=require(_0xec26('0xb'));var squel=require(_0xec26('0xc'));var crypto=require(_0xec26('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xec26('0xe'));var toCsv=require('to-csv');var querystring=require(_0xec26('0xf'));var Papa=require(_0xec26('0x10'));var Redis=require(_0xec26('0x11'));var authService=require(_0xec26('0x12'));var qs=require(_0xec26('0x13'));var as=require(_0xec26('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xec26('0x15'))('api');var utils=require(_0xec26('0x16'));var config=require(_0xec26('0x17'));var licenseUtil=require(_0xec26('0x18'));var db=require(_0xec26('0x19'))['db'];function respondWithStatusCode(_0x3f5f60,_0x1ec8c9){_0x1ec8c9=_0x1ec8c9||0xcc;return function(_0x175889){if(_0x175889){return _0x3f5f60[_0xec26('0x1a')](_0x1ec8c9);}return _0x3f5f60['status'](_0x1ec8c9)[_0xec26('0x1b')]();};}function respondWithResult(_0xf91101,_0x7dfbdb){_0x7dfbdb=_0x7dfbdb||0xc8;return function(_0x4ae1bf){if(_0x4ae1bf){return _0xf91101[_0xec26('0x1c')](_0x7dfbdb)[_0xec26('0x1d')](_0x4ae1bf);}};}function respondWithFilteredResult(_0x12d576,_0x2e853a){return function(_0xd4196c){if(_0xd4196c){var _0x4b6469=typeof _0x2e853a['offset']===_0xec26('0x1e')&&typeof _0x2e853a[_0xec26('0x1f')]===_0xec26('0x1e');var _0x20cd87=_0xd4196c[_0xec26('0x20')];var _0x365a4e=_0x4b6469?0x0:_0x2e853a[_0xec26('0x21')];var _0xcca347=_0x4b6469?_0xd4196c[_0xec26('0x20')]:_0x2e853a[_0xec26('0x21')]+_0x2e853a['limit'];var _0x415579;if(_0xcca347>=_0x20cd87){_0xcca347=_0x20cd87;_0x415579=0xc8;}else{_0x415579=0xce;}_0x12d576[_0xec26('0x1c')](_0x415579);return _0x12d576[_0xec26('0x22')](_0xec26('0x23'),_0x365a4e+'-'+_0xcca347+'/'+_0x20cd87)[_0xec26('0x1d')](_0xd4196c);}return null;};}function patchUpdates(_0x21487d){return function(_0x5b5422){try{jsonpatch[_0xec26('0x24')](_0x5b5422,_0x21487d,!![]);}catch(_0x235a8b){return BPromise[_0xec26('0x25')](_0x235a8b);}return _0x5b5422['save']();};}function saveUpdates(_0x47277d,_0x466def){return function(_0x1d53fc){if(_0x1d53fc){return _0x1d53fc[_0xec26('0x26')](_0x47277d)['then'](function(_0x2c24b4){return _0x2c24b4;});}return null;};}function removeEntity(_0x246521,_0x10cb98){return function(_0x1a1173){if(_0x1a1173){return _0x1a1173[_0xec26('0x27')]()[_0xec26('0x28')](function(){var _0x2d9793=_0x1a1173[_0xec26('0x29')]({'plain':!![]});var _0x563b8a=_0xec26('0x2a');return db[_0xec26('0x2b')][_0xec26('0x27')]({'where':{'type':_0x563b8a,'resourceId':_0x2d9793['id']}})[_0xec26('0x28')](function(){return _0x1a1173;});})[_0xec26('0x28')](function(){_0x246521[_0xec26('0x1c')](0xcc)[_0xec26('0x1b')]();});}};}function handleEntityNotFound(_0x3448c2,_0x3b05fb){return function(_0x24e889){if(!_0x24e889){_0x3448c2['sendStatus'](0x194);}return _0x24e889;};}function handleError(_0x578606,_0x5cba6f){_0x5cba6f=_0x5cba6f||0x1f4;return function(_0x352aab){logger[_0xec26('0x2c')](_0x352aab[_0xec26('0x2d')]);if(_0x352aab[_0xec26('0x2e')]){delete _0x352aab['name'];}_0x578606['status'](_0x5cba6f)[_0xec26('0x2f')](_0x352aab);};}exports['index']=function(_0x1b7a53,_0x26a7e4){var _0x32680c={},_0x5aef56={},_0x12a32a={'count':0x0,'rows':[]};var _0x4f37d2=_[_0xec26('0x30')](db['VoiceMusicOnHold'][_0xec26('0x31')],function(_0x5dbcc8){return{'name':_0x5dbcc8['fieldName'],'type':_0x5dbcc8['type'][_0xec26('0x32')]};});_0x5aef56[_0xec26('0x33')]=_[_0xec26('0x30')](_0x4f37d2,_0xec26('0x2e'));_0x5aef56['query']=_[_0xec26('0x34')](_0x1b7a53[_0xec26('0x35')]);_0x5aef56[_0xec26('0x36')]=_[_0xec26('0x37')](_0x5aef56[_0xec26('0x33')],_0x5aef56[_0xec26('0x35')]);_0x32680c[_0xec26('0x38')]=_[_0xec26('0x37')](_0x5aef56[_0xec26('0x33')],qs[_0xec26('0x39')](_0x1b7a53[_0xec26('0x35')][_0xec26('0x39')]));_0x32680c['attributes']=_0x32680c[_0xec26('0x38')][_0xec26('0x3a')]?_0x32680c[_0xec26('0x38')]:_0x5aef56[_0xec26('0x33')];if(!_0x1b7a53[_0xec26('0x35')]['hasOwnProperty'](_0xec26('0x3b'))){_0x32680c[_0xec26('0x1f')]=qs[_0xec26('0x1f')](_0x1b7a53[_0xec26('0x35')]['limit']);_0x32680c[_0xec26('0x21')]=qs['offset'](_0x1b7a53['query'][_0xec26('0x21')]);}_0x32680c[_0xec26('0x3c')]=qs['sort'](_0x1b7a53[_0xec26('0x35')][_0xec26('0x3d')]);delete _0x1b7a53[_0xec26('0x35')]['sort'];_0x32680c[_0xec26('0x3e')]=qs[_0xec26('0x36')](_['pick'](_0x1b7a53[_0xec26('0x35')],_0x5aef56[_0xec26('0x36')]),_0x4f37d2);if(_0x1b7a53[_0xec26('0x35')][_0xec26('0x3f')]){_0x32680c['where']=_['merge'](_0x32680c[_0xec26('0x3e')],{'$or':_['map'](_0x4f37d2,function(_0x4deee0){if(_0x4deee0[_0xec26('0x40')]!==_0xec26('0x41')){var _0x50eeeb={};_0x50eeeb[_0x4deee0[_0xec26('0x2e')]]={'$like':'%'+_0x1b7a53[_0xec26('0x35')]['filter']+'%'};return _0x50eeeb;}})});}_0x32680c=_[_0xec26('0x42')]({},_0x32680c,_0x1b7a53[_0xec26('0x43')]);var _0x23c807={'where':_0x32680c[_0xec26('0x3e')]};return db['VoiceMusicOnHold'][_0xec26('0x20')](_0x23c807)[_0xec26('0x28')](function(_0x5443f1){_0x12a32a[_0xec26('0x20')]=_0x5443f1;if(_0x1b7a53['query'][_0xec26('0x44')]){_0x32680c[_0xec26('0x45')]=[{'all':!![]}];}return db[_0xec26('0x46')][_0xec26('0x47')](_0x32680c);})[_0xec26('0x28')](function(_0x3e164c){_0x12a32a[_0xec26('0x48')]=_0x3e164c;return _0x12a32a;})[_0xec26('0x28')](respondWithFilteredResult(_0x26a7e4,_0x32680c))[_0xec26('0x49')](handleError(_0x26a7e4,null));};exports[_0xec26('0x4a')]=function(_0x4e449c,_0x1a06e1){var _0x4d31c2={'raw':![],'where':{'id':_0x4e449c[_0xec26('0x4b')]['id']}},_0x58c359={};_0x58c359[_0xec26('0x33')]=_[_0xec26('0x34')](db[_0xec26('0x46')][_0xec26('0x31')]);_0x58c359['query']=_['keys'](_0x4e449c[_0xec26('0x35')]);_0x58c359[_0xec26('0x36')]=_[_0xec26('0x37')](_0x58c359[_0xec26('0x33')],_0x58c359[_0xec26('0x35')]);_0x4d31c2[_0xec26('0x38')]=_[_0xec26('0x37')](_0x58c359[_0xec26('0x33')],qs['fields'](_0x4e449c[_0xec26('0x35')][_0xec26('0x39')]));_0x4d31c2[_0xec26('0x38')]=_0x4d31c2[_0xec26('0x38')][_0xec26('0x3a')]?_0x4d31c2[_0xec26('0x38')]:_0x58c359['model'];if(_0x4e449c[_0xec26('0x35')][_0xec26('0x44')]){_0x4d31c2[_0xec26('0x45')]=[{'all':!![]}];}_0x4d31c2=_[_0xec26('0x42')]({},_0x4d31c2,_0x4e449c['options']);return db[_0xec26('0x46')][_0xec26('0x4c')](_0x4d31c2)[_0xec26('0x28')](handleEntityNotFound(_0x1a06e1,null))[_0xec26('0x28')](respondWithResult(_0x1a06e1,null))['catch'](handleError(_0x1a06e1,null));};exports['update']=function(_0xd54311,_0x5e44d8){if(_0xd54311[_0xec26('0x4d')]['id']){delete _0xd54311[_0xec26('0x4d')]['id'];}return db[_0xec26('0x46')]['find']({'where':{'id':_0xd54311[_0xec26('0x4b')]['id']}})[_0xec26('0x28')](handleEntityNotFound(_0x5e44d8,null))[_0xec26('0x28')](saveUpdates(_0xd54311[_0xec26('0x4d')],null))[_0xec26('0x28')](respondWithResult(_0x5e44d8,null))[_0xec26('0x49')](handleError(_0x5e44d8,null));};exports[_0xec26('0x4e')]=function(_0x5eebd4,_0x4d4c56,_0x5e2394){return db[_0xec26('0x4f')]['transaction'](function(_0x4efc0b){if(_0x5eebd4[_0xec26('0x4d')][_0xec26('0x50')]===_0xec26('0x51')){_0x5eebd4[_0xec26('0x4d')][_0xec26('0x52')]=path[_0xec26('0x53')](config[_0xec26('0x54')],_0xec26('0x55'),_0x5eebd4[_0xec26('0x4d')][_0xec26('0x2e')]);}return db[_0xec26('0x46')]['create'](_0x5eebd4[_0xec26('0x4d')],{'transaction':_0x4efc0b})['then'](function(_0x3fefd6){if(_0x5eebd4[_0xec26('0x4d')][_0xec26('0x50')]===_0xec26('0x51')){fs[_0xec26('0x56')](_0x3fefd6['directory'],parseInt(_0xec26('0x57'),0x8));}var _0x51d91c=_0x5eebd4[_0xec26('0x58')][_0xec26('0x29')]({'plain':!![]});if(!_0x51d91c)throw new Error(_0xec26('0x59'));if(_0x51d91c[_0xec26('0x5a')]===_0xec26('0x58')){var _0x328a39=_0x3fefd6[_0xec26('0x29')]({'plain':!![]});return db[_0xec26('0x5b')][_0xec26('0x4c')]({'where':{'name':_0xec26('0x2a'),'userProfileId':_0x51d91c['userProfileId']},'raw':!![]})[_0xec26('0x28')](function(_0x13b270){if(_0x13b270&&_0x13b270[_0xec26('0x5c')]===0x0){return db[_0xec26('0x2b')][_0xec26('0x4e')]({'name':_0x328a39['name'],'resourceId':_0x328a39['id'],'type':_0x13b270[_0xec26('0x2e')],'sectionId':_0x13b270['id']},{})[_0xec26('0x28')](function(){return _0x3fefd6;});}else{return _0x3fefd6;}})[_0xec26('0x49')](function(_0x1ac977){logger[_0xec26('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1ac977);});}return _0x3fefd6;});})['then'](respondWithResult(_0x4d4c56,0xc9))['catch'](handleError(_0x4d4c56,null));};exports[_0xec26('0x27')]=function(_0xa8514f,_0x295bcf,_0x1784e7){var _0x149561;return db['VoiceMusicOnHold'][_0xec26('0x4c')]({'where':{'id':_0xa8514f[_0xec26('0x4b')]['id']}})[_0xec26('0x28')](function(_0x3a178d){if(_0x3a178d){return db[_0xec26('0x4f')][_0xec26('0x5d')](function(_0x2a8a05){return _0x3a178d[_0xec26('0x27')]({'transaction':_0x2a8a05,'raw':!![]})['then'](function(_0x231d23){if(_0x231d23[_0xec26('0x52')]){fs[_0xec26('0x5e')](_0x231d23[_0xec26('0x52')])[_0xec26('0x5f')](function(_0xc433f8){fs[_0xec26('0x60')](path[_0xec26('0x53')](_0x231d23[_0xec26('0x52')],_0xc433f8));});fs['rmdirSync'](_0x231d23[_0xec26('0x52')]);}return _0x231d23;});})[_0xec26('0x49')](function(_0x20def4){throw new db[(_0xec26('0x61'))][(_0xec26('0x62'))](_0x20def4[_0xec26('0x63')]);});}})[_0xec26('0x28')](handleEntityNotFound(_0x295bcf,null))[_0xec26('0x28')](removeEntity(_0x295bcf,null))[_0xec26('0x49')](handleError(_0x295bcf,null));};exports['addSound']=function(_0x274591,_0x120f34,_0x271ee2){return db[_0xec26('0x4f')][_0xec26('0x5d')](function(_0xba2262){var _0x41f297;return db[_0xec26('0x46')][_0xec26('0x4c')]({'where':{'id':_0x274591[_0xec26('0x4b')]['id']}})['then'](function(_0x19c8ff){if(_0x19c8ff){_0x41f297=_0x19c8ff;return _0x19c8ff[_0xec26('0x64')](_0x274591[_0xec26('0x4d')]['id'],{'transaction':_0xba2262});}})[_0xec26('0x28')](function(_0x25713f){if(_0x25713f){return db[_0xec26('0x65')][_0xec26('0x66')]({'where':{'id':_0x274591[_0xec26('0x4d')]['id']},'attributes':['id',_0xec26('0x2e'),_0xec26('0x67'),_0xec26('0x68'),_0xec26('0x69')],'raw':!![]});}})['then'](function(_0xe45526){if(_0xe45526){var _0x55d89e=path['join'](config[_0xec26('0x54')],_0xec26('0x6a'),util[_0xec26('0x6b')](_0xec26('0x6c'),path[_0xec26('0x6d')](_0xe45526[_0xec26('0x67')],path[_0xec26('0x6e')](_0xe45526[_0xec26('0x67')])),_0xe45526['converted_format']));var _0x37f470=path['join'](config[_0xec26('0x54')],_0xec26('0x55'),_0x41f297[_0xec26('0x2e')],util['format'](_0xec26('0x6c'),_0xe45526[_0xec26('0x2e')],_0xe45526[_0xec26('0x68')]));fs[_0xec26('0x6f')](_0x55d89e,_0x37f470);return _0xe45526;}})['catch'](function(_0x1f48bf){throw new db[(_0xec26('0x61'))]['ValidationError'](_0x1f48bf[_0xec26('0x63')]);});})['then'](handleEntityNotFound(_0x120f34,null))[_0xec26('0x28')](respondWithResult(_0x120f34,0xc9))[_0xec26('0x49')](handleError(_0x120f34,null));};exports['removeSound']=function(_0x514fa2,_0x39d430,_0x1cf1a6){return db['sequelize'][_0xec26('0x5d')](function(_0x17ec3d){var _0xe80ea0;return db[_0xec26('0x46')][_0xec26('0x66')]({'where':{'id':_0x514fa2[_0xec26('0x4b')]['id']}})[_0xec26('0x28')](handleEntityNotFound(_0x39d430,null))[_0xec26('0x28')](function(_0x399d40){if(_0x399d40){_0xe80ea0=_0x399d40;return _0x399d40[_0xec26('0x70')](_0x514fa2[_0xec26('0x4b')][_0xec26('0x71')]);}})[_0xec26('0x28')](function(_0x578892){if(_0x578892){return db['Sound'][_0xec26('0x66')]({'where':{'id':_0x514fa2[_0xec26('0x4b')]['id2']},'attributes':['id',_0xec26('0x2e'),_0xec26('0x67'),'converted_format','createdAt'],'raw':!![]});}})[_0xec26('0x28')](function(_0x51a658){if(_0x51a658){fs[_0xec26('0x60')](path[_0xec26('0x53')](_0xe80ea0[_0xec26('0x52')],util[_0xec26('0x6b')](_0xec26('0x6c'),_0x51a658[_0xec26('0x2e')],_0x51a658['converted_format'])));return _0x51a658;}})[_0xec26('0x49')](function(_0x17e793){throw new db['Sequelize']['ValidationError'](_0x17e793['message']);});})[_0xec26('0x28')](handleEntityNotFound(_0x39d430,null))[_0xec26('0x28')](respondWithStatusCode(_0x39d430,0xcc))[_0xec26('0x49')](handleError(_0x39d430,null));};exports[_0xec26('0x72')]=function(_0x6e948d,_0x21eb62,_0x123649){var _0x36b733={};var _0x5a337a={};var _0x1394b1;var _0x565d05;return db[_0xec26('0x46')][_0xec26('0x66')]({'where':{'id':_0x6e948d[_0xec26('0x4b')]['id']}})[_0xec26('0x28')](handleEntityNotFound(_0x21eb62,null))[_0xec26('0x28')](function(_0x2396df){if(_0x2396df){_0x1394b1=_0x2396df;_0x5a337a[_0xec26('0x33')]=_[_0xec26('0x34')](db['Sound'][_0xec26('0x31')]);_0x5a337a[_0xec26('0x35')]=_['keys'](_0x6e948d[_0xec26('0x35')]);_0x5a337a['filters']=_[_0xec26('0x37')](_0x5a337a['model'],_0x5a337a[_0xec26('0x35')]);_0x36b733[_0xec26('0x38')]=_[_0xec26('0x37')](_0x5a337a[_0xec26('0x33')],qs[_0xec26('0x39')](_0x6e948d['query']['fields']));_0x36b733['attributes']=_0x36b733[_0xec26('0x38')][_0xec26('0x3a')]?_0x36b733['attributes']:_0x5a337a['model'];_0x36b733['order']=qs[_0xec26('0x3d')](_0x6e948d['query'][_0xec26('0x3d')]);_0x36b733['where']=qs[_0xec26('0x36')](_[_0xec26('0x73')](_0x6e948d[_0xec26('0x35')],_0x5a337a['filters']));if(_0x6e948d[_0xec26('0x35')]['filter']){_0x36b733['where']=_[_0xec26('0x42')](_0x36b733[_0xec26('0x3e')],{'$or':_[_0xec26('0x30')](_0x36b733[_0xec26('0x38')],function(_0x26f2ec){var _0x401c62={};_0x401c62[_0x26f2ec]={'$like':'%'+_0x6e948d[_0xec26('0x35')]['filter']+'%'};return _0x401c62;})});}_0x36b733=_[_0xec26('0x42')]({},_0x36b733,_0x6e948d[_0xec26('0x43')]);return _0x1394b1['getSounds'](_0x36b733);}})[_0xec26('0x28')](function(_0x4023e8){if(_0x4023e8){_0x565d05=_0x4023e8['length'];if(!_0x6e948d['query'][_0xec26('0x74')](_0xec26('0x3b'))){_0x36b733['limit']=qs[_0xec26('0x1f')](_0x6e948d[_0xec26('0x35')]['limit']);_0x36b733['offset']=qs[_0xec26('0x21')](_0x6e948d[_0xec26('0x35')][_0xec26('0x21')]);}return _0x1394b1['getSounds'](_0x36b733);}})[_0xec26('0x28')](function(_0x5d6387){if(_0x5d6387){return _0x5d6387?{'count':_0x565d05,'rows':_0x5d6387}:null;}})[_0xec26('0x28')](respondWithResult(_0x21eb62,null))[_0xec26('0x49')](handleError(_0x21eb62,null));};
\ No newline at end of file
+var _0xc7d3=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','MusicOnHolds','error','name','send','map','VoiceMusicOnHold','fieldName','type','query','keys','filters','intersection','model','fields','attributes','length','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','catch','show','params','rawAttributes','find','body','create','sequelize','mode','directory','server/files/moh','files','mkdirSync','0777','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','forEach','unlinkSync','join','rmdirSync','Sequelize','message','addSound','transaction','Sound','findOne','save_name','converted_format','createdAt','root','server/files/sounds/converted','format','%s.%s','basename','extname','symlinkSync','removeSound','id2','ValidationError','getSounds','pick','rimraf','zip-dir','moment','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xc7d3,0x132));var _0x3c7d=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc7d3[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3c7d('0x0'));var zipdir=require(_0x3c7d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x3c7d('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x3c7d('0x3'));var util=require('util');var path=require(_0x3c7d('0x4'));var sox=require(_0x3c7d('0x5'));var csv=require(_0x3c7d('0x6'));var ejs=require(_0x3c7d('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3c7d('0x8'));var squel=require(_0x3c7d('0x9'));var crypto=require(_0x3c7d('0xa'));var jsforce=require(_0x3c7d('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x3c7d('0xc'));var authService=require(_0x3c7d('0xd'));var qs=require(_0x3c7d('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x3c7d('0xf'))(_0x3c7d('0x10'));var utils=require(_0x3c7d('0x11'));var config=require(_0x3c7d('0x12'));var licenseUtil=require(_0x3c7d('0x13'));var db=require(_0x3c7d('0x14'))['db'];function respondWithStatusCode(_0xcf2011,_0x4c1a16){_0x4c1a16=_0x4c1a16||0xcc;return function(_0x23afe2){if(_0x23afe2){return _0xcf2011[_0x3c7d('0x15')](_0x4c1a16);}return _0xcf2011[_0x3c7d('0x16')](_0x4c1a16)['end']();};}function respondWithResult(_0x5c6225,_0xadefb8){_0xadefb8=_0xadefb8||0xc8;return function(_0x25c1b5){if(_0x25c1b5){return _0x5c6225[_0x3c7d('0x16')](_0xadefb8)[_0x3c7d('0x17')](_0x25c1b5);}};}function respondWithFilteredResult(_0x30be6d,_0x40adbe){return function(_0x49ce17){if(_0x49ce17){var _0x34af6f=typeof _0x40adbe[_0x3c7d('0x18')]===_0x3c7d('0x19')&&typeof _0x40adbe['limit']===_0x3c7d('0x19');var _0x39c8d2=_0x49ce17[_0x3c7d('0x1a')];var _0x508aef=_0x34af6f?0x0:_0x40adbe[_0x3c7d('0x18')];var _0x2e1fc6=_0x34af6f?_0x49ce17[_0x3c7d('0x1a')]:_0x40adbe[_0x3c7d('0x18')]+_0x40adbe[_0x3c7d('0x1b')];var _0x37596a;if(_0x2e1fc6>=_0x39c8d2){_0x2e1fc6=_0x39c8d2;_0x37596a=0xc8;}else{_0x37596a=0xce;}_0x30be6d[_0x3c7d('0x16')](_0x37596a);return _0x30be6d[_0x3c7d('0x1c')](_0x3c7d('0x1d'),_0x508aef+'-'+_0x2e1fc6+'/'+_0x39c8d2)['json'](_0x49ce17);}return null;};}function patchUpdates(_0x3d462b){return function(_0x488e2e){try{jsonpatch['apply'](_0x488e2e,_0x3d462b,!![]);}catch(_0xce76b4){return BPromise[_0x3c7d('0x1e')](_0xce76b4);}return _0x488e2e[_0x3c7d('0x1f')]();};}function saveUpdates(_0x13f55f,_0x4b8cd1){return function(_0x1d4ebf){if(_0x1d4ebf){return _0x1d4ebf[_0x3c7d('0x20')](_0x13f55f)[_0x3c7d('0x21')](function(_0x4a2bbc){return _0x4a2bbc;});}return null;};}function removeEntity(_0x3358f4,_0x3e0c60){return function(_0x60f967){if(_0x60f967){return _0x60f967[_0x3c7d('0x22')]()[_0x3c7d('0x21')](function(){var _0x563c80=_0x60f967['get']({'plain':!![]});var _0x51615f=_0x3c7d('0x23');return db['UserProfileResource'][_0x3c7d('0x22')]({'where':{'type':_0x51615f,'resourceId':_0x563c80['id']}})['then'](function(){return _0x60f967;});})[_0x3c7d('0x21')](function(){_0x3358f4[_0x3c7d('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x493eef,_0x2f110b){return function(_0x8ac8ce){if(!_0x8ac8ce){_0x493eef['sendStatus'](0x194);}return _0x8ac8ce;};}function handleError(_0x6604ed,_0x5a9c9c){_0x5a9c9c=_0x5a9c9c||0x1f4;return function(_0x4acdfd){logger[_0x3c7d('0x24')](_0x4acdfd['stack']);if(_0x4acdfd['name']){delete _0x4acdfd[_0x3c7d('0x25')];}_0x6604ed[_0x3c7d('0x16')](_0x5a9c9c)[_0x3c7d('0x26')](_0x4acdfd);};}exports['index']=function(_0x3270b1,_0x23a200){var _0x26f5cf={},_0x5ab215={},_0x527bb3={'count':0x0,'rows':[]};var _0x354ede=_[_0x3c7d('0x27')](db[_0x3c7d('0x28')]['rawAttributes'],function(_0x9cf87d){return{'name':_0x9cf87d[_0x3c7d('0x29')],'type':_0x9cf87d[_0x3c7d('0x2a')]['key']};});_0x5ab215['model']=_[_0x3c7d('0x27')](_0x354ede,'name');_0x5ab215[_0x3c7d('0x2b')]=_[_0x3c7d('0x2c')](_0x3270b1[_0x3c7d('0x2b')]);_0x5ab215[_0x3c7d('0x2d')]=_['intersection'](_0x5ab215['model'],_0x5ab215['query']);_0x26f5cf['attributes']=_[_0x3c7d('0x2e')](_0x5ab215[_0x3c7d('0x2f')],qs[_0x3c7d('0x30')](_0x3270b1[_0x3c7d('0x2b')][_0x3c7d('0x30')]));_0x26f5cf['attributes']=_0x26f5cf[_0x3c7d('0x31')][_0x3c7d('0x32')]?_0x26f5cf['attributes']:_0x5ab215[_0x3c7d('0x2f')];if(!_0x3270b1[_0x3c7d('0x2b')]['hasOwnProperty'](_0x3c7d('0x33'))){_0x26f5cf[_0x3c7d('0x1b')]=qs[_0x3c7d('0x1b')](_0x3270b1[_0x3c7d('0x2b')][_0x3c7d('0x1b')]);_0x26f5cf['offset']=qs['offset'](_0x3270b1['query'][_0x3c7d('0x18')]);}_0x26f5cf['order']=qs[_0x3c7d('0x34')](_0x3270b1[_0x3c7d('0x2b')]['sort']);delete _0x3270b1['query'][_0x3c7d('0x34')];_0x26f5cf[_0x3c7d('0x35')]=qs[_0x3c7d('0x2d')](_['pick'](_0x3270b1[_0x3c7d('0x2b')],_0x5ab215['filters']),_0x354ede);if(_0x3270b1[_0x3c7d('0x2b')][_0x3c7d('0x36')]){_0x26f5cf['where']=_[_0x3c7d('0x37')](_0x26f5cf[_0x3c7d('0x35')],{'$or':_[_0x3c7d('0x27')](_0x354ede,function(_0x34396d){if(_0x34396d['type']!==_0x3c7d('0x38')){var _0x2270dd={};_0x2270dd[_0x34396d[_0x3c7d('0x25')]]={'$like':'%'+_0x3270b1[_0x3c7d('0x2b')][_0x3c7d('0x36')]+'%'};return _0x2270dd;}})});}_0x26f5cf=_[_0x3c7d('0x37')]({},_0x26f5cf,_0x3270b1[_0x3c7d('0x39')]);var _0x3fb606={'where':_0x26f5cf[_0x3c7d('0x35')]};return db[_0x3c7d('0x28')][_0x3c7d('0x1a')](_0x3fb606)[_0x3c7d('0x21')](function(_0x5d4e74){_0x527bb3['count']=_0x5d4e74;if(_0x3270b1['query'][_0x3c7d('0x3a')]){_0x26f5cf[_0x3c7d('0x3b')]=[{'all':!![]}];}return db['VoiceMusicOnHold']['findAll'](_0x26f5cf);})[_0x3c7d('0x21')](function(_0x13c4cb){_0x527bb3['rows']=_0x13c4cb;return _0x527bb3;})[_0x3c7d('0x21')](respondWithFilteredResult(_0x23a200,_0x26f5cf))[_0x3c7d('0x3c')](handleError(_0x23a200,null));};exports[_0x3c7d('0x3d')]=function(_0x6d1c1a,_0x152462){var _0x295e28={'raw':![],'where':{'id':_0x6d1c1a[_0x3c7d('0x3e')]['id']}},_0x2ed261={};_0x2ed261[_0x3c7d('0x2f')]=_[_0x3c7d('0x2c')](db[_0x3c7d('0x28')][_0x3c7d('0x3f')]);_0x2ed261['query']=_[_0x3c7d('0x2c')](_0x6d1c1a['query']);_0x2ed261[_0x3c7d('0x2d')]=_[_0x3c7d('0x2e')](_0x2ed261[_0x3c7d('0x2f')],_0x2ed261[_0x3c7d('0x2b')]);_0x295e28['attributes']=_[_0x3c7d('0x2e')](_0x2ed261[_0x3c7d('0x2f')],qs['fields'](_0x6d1c1a['query'][_0x3c7d('0x30')]));_0x295e28[_0x3c7d('0x31')]=_0x295e28[_0x3c7d('0x31')][_0x3c7d('0x32')]?_0x295e28[_0x3c7d('0x31')]:_0x2ed261[_0x3c7d('0x2f')];if(_0x6d1c1a[_0x3c7d('0x2b')][_0x3c7d('0x3a')]){_0x295e28[_0x3c7d('0x3b')]=[{'all':!![]}];}_0x295e28=_[_0x3c7d('0x37')]({},_0x295e28,_0x6d1c1a[_0x3c7d('0x39')]);return db[_0x3c7d('0x28')]['find'](_0x295e28)['then'](handleEntityNotFound(_0x152462,null))['then'](respondWithResult(_0x152462,null))['catch'](handleError(_0x152462,null));};exports[_0x3c7d('0x20')]=function(_0x21044f,_0x40e1a2){if(_0x21044f['body']['id']){delete _0x21044f['body']['id'];}return db[_0x3c7d('0x28')][_0x3c7d('0x40')]({'where':{'id':_0x21044f[_0x3c7d('0x3e')]['id']}})[_0x3c7d('0x21')](handleEntityNotFound(_0x40e1a2,null))['then'](saveUpdates(_0x21044f[_0x3c7d('0x41')],null))[_0x3c7d('0x21')](respondWithResult(_0x40e1a2,null))[_0x3c7d('0x3c')](handleError(_0x40e1a2,null));};exports[_0x3c7d('0x42')]=function(_0xb48a8c,_0x111f19,_0x280f90){return db[_0x3c7d('0x43')]['transaction'](function(_0x471180){if(_0xb48a8c[_0x3c7d('0x41')][_0x3c7d('0x44')]==='files'){_0xb48a8c['body'][_0x3c7d('0x45')]=path['join'](config['root'],_0x3c7d('0x46'),_0xb48a8c['body']['name']);}return db[_0x3c7d('0x28')][_0x3c7d('0x42')](_0xb48a8c['body'],{'transaction':_0x471180})[_0x3c7d('0x21')](function(_0xe57ed5){if(_0xb48a8c[_0x3c7d('0x41')]['mode']===_0x3c7d('0x47')){fs[_0x3c7d('0x48')](_0xe57ed5[_0x3c7d('0x45')],parseInt(_0x3c7d('0x49'),0x8));}var _0x1cf00c=_0xb48a8c[_0x3c7d('0x4a')][_0x3c7d('0x4b')]({'plain':!![]});if(!_0x1cf00c)throw new Error(_0x3c7d('0x4c'));if(_0x1cf00c['role']===_0x3c7d('0x4a')){var _0x3dc695=_0xe57ed5[_0x3c7d('0x4b')]({'plain':!![]});return db[_0x3c7d('0x4d')][_0x3c7d('0x40')]({'where':{'name':_0x3c7d('0x23'),'userProfileId':_0x1cf00c[_0x3c7d('0x4e')]},'raw':!![]})[_0x3c7d('0x21')](function(_0x2c4443){if(_0x2c4443&&_0x2c4443[_0x3c7d('0x4f')]===0x0){return db[_0x3c7d('0x50')][_0x3c7d('0x42')]({'name':_0x3dc695[_0x3c7d('0x25')],'resourceId':_0x3dc695['id'],'type':_0x2c4443[_0x3c7d('0x25')],'sectionId':_0x2c4443['id']},{})[_0x3c7d('0x21')](function(){return _0xe57ed5;});}else{return _0xe57ed5;}})[_0x3c7d('0x3c')](function(_0x2aee40){logger[_0x3c7d('0x24')](_0x3c7d('0x51'),_0x2aee40);});}return _0xe57ed5;});})[_0x3c7d('0x21')](respondWithResult(_0x111f19,0xc9))[_0x3c7d('0x3c')](handleError(_0x111f19,null));};exports[_0x3c7d('0x22')]=function(_0x5565f9,_0x559f5d,_0x15736a){var _0x4f7906;return db[_0x3c7d('0x28')]['find']({'where':{'id':_0x5565f9['params']['id']}})[_0x3c7d('0x21')](function(_0x4283b9){if(_0x4283b9){return db['sequelize']['transaction'](function(_0x571f78){return _0x4283b9[_0x3c7d('0x22')]({'transaction':_0x571f78,'raw':!![]})['then'](function(_0x49ccb0){if(_0x49ccb0[_0x3c7d('0x45')]){fs['readdirSync'](_0x49ccb0[_0x3c7d('0x45')])[_0x3c7d('0x52')](function(_0x10c910){fs[_0x3c7d('0x53')](path[_0x3c7d('0x54')](_0x49ccb0[_0x3c7d('0x45')],_0x10c910));});fs[_0x3c7d('0x55')](_0x49ccb0[_0x3c7d('0x45')]);}return _0x49ccb0;});})['catch'](function(_0x42bcef){throw new db[(_0x3c7d('0x56'))]['ValidationError'](_0x42bcef[_0x3c7d('0x57')]);});}})[_0x3c7d('0x21')](handleEntityNotFound(_0x559f5d,null))[_0x3c7d('0x21')](removeEntity(_0x559f5d,null))[_0x3c7d('0x3c')](handleError(_0x559f5d,null));};exports[_0x3c7d('0x58')]=function(_0x5195a5,_0x3520f9,_0x3f40fd){return db[_0x3c7d('0x43')][_0x3c7d('0x59')](function(_0x5a8c40){var _0x387944;return db[_0x3c7d('0x28')]['find']({'where':{'id':_0x5195a5[_0x3c7d('0x3e')]['id']}})[_0x3c7d('0x21')](function(_0x5d4157){if(_0x5d4157){_0x387944=_0x5d4157;return _0x5d4157[_0x3c7d('0x58')](_0x5195a5[_0x3c7d('0x41')]['id'],{'transaction':_0x5a8c40});}})[_0x3c7d('0x21')](function(_0x2894cb){if(_0x2894cb){return db[_0x3c7d('0x5a')][_0x3c7d('0x5b')]({'where':{'id':_0x5195a5[_0x3c7d('0x41')]['id']},'attributes':['id','name',_0x3c7d('0x5c'),_0x3c7d('0x5d'),_0x3c7d('0x5e')],'raw':!![]});}})[_0x3c7d('0x21')](function(_0x1ff761){if(_0x1ff761){var _0x3bcf8c=path[_0x3c7d('0x54')](config[_0x3c7d('0x5f')],_0x3c7d('0x60'),util[_0x3c7d('0x61')](_0x3c7d('0x62'),path[_0x3c7d('0x63')](_0x1ff761[_0x3c7d('0x5c')],path[_0x3c7d('0x64')](_0x1ff761[_0x3c7d('0x5c')])),_0x1ff761[_0x3c7d('0x5d')]));var _0x2f837d=path[_0x3c7d('0x54')](config[_0x3c7d('0x5f')],_0x3c7d('0x46'),_0x387944[_0x3c7d('0x25')],util[_0x3c7d('0x61')](_0x3c7d('0x62'),_0x1ff761['name'],_0x1ff761[_0x3c7d('0x5d')]));fs[_0x3c7d('0x65')](_0x3bcf8c,_0x2f837d);return _0x1ff761;}})[_0x3c7d('0x3c')](function(_0x3e0df7){throw new db[(_0x3c7d('0x56'))]['ValidationError'](_0x3e0df7[_0x3c7d('0x57')]);});})['then'](handleEntityNotFound(_0x3520f9,null))[_0x3c7d('0x21')](respondWithResult(_0x3520f9,0xc9))[_0x3c7d('0x3c')](handleError(_0x3520f9,null));};exports[_0x3c7d('0x66')]=function(_0x4ab00f,_0x54aa85,_0xa5c5bc){return db[_0x3c7d('0x43')][_0x3c7d('0x59')](function(_0x46b4d){var _0x26d678;return db[_0x3c7d('0x28')][_0x3c7d('0x5b')]({'where':{'id':_0x4ab00f['params']['id']}})[_0x3c7d('0x21')](handleEntityNotFound(_0x54aa85,null))[_0x3c7d('0x21')](function(_0x279292){if(_0x279292){_0x26d678=_0x279292;return _0x279292[_0x3c7d('0x66')](_0x4ab00f[_0x3c7d('0x3e')]['id2']);}})[_0x3c7d('0x21')](function(_0x23d1dd){if(_0x23d1dd){return db['Sound'][_0x3c7d('0x5b')]({'where':{'id':_0x4ab00f[_0x3c7d('0x3e')][_0x3c7d('0x67')]},'attributes':['id',_0x3c7d('0x25'),'save_name',_0x3c7d('0x5d'),_0x3c7d('0x5e')],'raw':!![]});}})[_0x3c7d('0x21')](function(_0x1062e0){if(_0x1062e0){fs[_0x3c7d('0x53')](path['join'](_0x26d678[_0x3c7d('0x45')],util[_0x3c7d('0x61')](_0x3c7d('0x62'),_0x1062e0[_0x3c7d('0x25')],_0x1062e0[_0x3c7d('0x5d')])));return _0x1062e0;}})[_0x3c7d('0x3c')](function(_0x248927){throw new db[(_0x3c7d('0x56'))][(_0x3c7d('0x68'))](_0x248927[_0x3c7d('0x57')]);});})[_0x3c7d('0x21')](handleEntityNotFound(_0x54aa85,null))[_0x3c7d('0x21')](respondWithStatusCode(_0x54aa85,0xcc))[_0x3c7d('0x3c')](handleError(_0x54aa85,null));};exports[_0x3c7d('0x69')]=function(_0x455ed9,_0x3e8cf8,_0x14ce7a){var _0x1bb2ea={};var _0x3137b9={};var _0x3f875f;var _0x3e997a;return db[_0x3c7d('0x28')]['findOne']({'where':{'id':_0x455ed9[_0x3c7d('0x3e')]['id']}})[_0x3c7d('0x21')](handleEntityNotFound(_0x3e8cf8,null))[_0x3c7d('0x21')](function(_0x21427f){if(_0x21427f){_0x3f875f=_0x21427f;_0x3137b9[_0x3c7d('0x2f')]=_[_0x3c7d('0x2c')](db[_0x3c7d('0x5a')][_0x3c7d('0x3f')]);_0x3137b9[_0x3c7d('0x2b')]=_['keys'](_0x455ed9['query']);_0x3137b9[_0x3c7d('0x2d')]=_['intersection'](_0x3137b9['model'],_0x3137b9['query']);_0x1bb2ea[_0x3c7d('0x31')]=_['intersection'](_0x3137b9[_0x3c7d('0x2f')],qs[_0x3c7d('0x30')](_0x455ed9[_0x3c7d('0x2b')][_0x3c7d('0x30')]));_0x1bb2ea[_0x3c7d('0x31')]=_0x1bb2ea[_0x3c7d('0x31')]['length']?_0x1bb2ea[_0x3c7d('0x31')]:_0x3137b9[_0x3c7d('0x2f')];_0x1bb2ea['order']=qs[_0x3c7d('0x34')](_0x455ed9[_0x3c7d('0x2b')]['sort']);_0x1bb2ea[_0x3c7d('0x35')]=qs[_0x3c7d('0x2d')](_[_0x3c7d('0x6a')](_0x455ed9[_0x3c7d('0x2b')],_0x3137b9[_0x3c7d('0x2d')]));if(_0x455ed9['query'][_0x3c7d('0x36')]){_0x1bb2ea[_0x3c7d('0x35')]=_[_0x3c7d('0x37')](_0x1bb2ea['where'],{'$or':_[_0x3c7d('0x27')](_0x1bb2ea[_0x3c7d('0x31')],function(_0xd3590){var _0x523e78={};_0x523e78[_0xd3590]={'$like':'%'+_0x455ed9[_0x3c7d('0x2b')]['filter']+'%'};return _0x523e78;})});}_0x1bb2ea=_[_0x3c7d('0x37')]({},_0x1bb2ea,_0x455ed9[_0x3c7d('0x39')]);return _0x3f875f[_0x3c7d('0x69')](_0x1bb2ea);}})['then'](function(_0x29e486){if(_0x29e486){_0x3e997a=_0x29e486[_0x3c7d('0x32')];if(!_0x455ed9[_0x3c7d('0x2b')]['hasOwnProperty'](_0x3c7d('0x33'))){_0x1bb2ea[_0x3c7d('0x1b')]=qs[_0x3c7d('0x1b')](_0x455ed9[_0x3c7d('0x2b')][_0x3c7d('0x1b')]);_0x1bb2ea[_0x3c7d('0x18')]=qs[_0x3c7d('0x18')](_0x455ed9[_0x3c7d('0x2b')][_0x3c7d('0x18')]);}return _0x3f875f[_0x3c7d('0x69')](_0x1bb2ea);}})[_0x3c7d('0x21')](function(_0x196d6d){if(_0x196d6d){return _0x196d6d?{'count':_0x3e997a,'rows':_0x196d6d}:null;}})['then'](respondWithResult(_0x3e8cf8,null))['catch'](handleError(_0x3e8cf8,null));};
\ No newline at end of file
index 40d879b..04b258d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5f9=['path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports','define','voice_musiconhold','util','moment','bluebird'];(function(_0xc0a2f4,_0x17a96a){var _0x52f7de=function(_0x43e407){while(--_0x43e407){_0xc0a2f4['push'](_0xc0a2f4['shift']());}};_0x52f7de(++_0x17a96a);}(_0xd5f9,0x16f));var _0x9d5f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd5f9[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x9d5f('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x9d5f('0x1'));var BPromise=require(_0x9d5f('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9d5f('0x3'));var rimraf=require(_0x9d5f('0x4'));var config=require(_0x9d5f('0x5'));var attributes=require(_0x9d5f('0x6'));module[_0x9d5f('0x7')]=function(_0xa11545,_0x3068b5){return _0xa11545[_0x9d5f('0x8')]('VoiceMusicOnHold',attributes,{'tableName':_0x9d5f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x204b=['../../config/environment','exports','VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x2e6401,_0x37f5e9){var _0x3589b7=function(_0x370143){while(--_0x370143){_0x2e6401['push'](_0x2e6401['shift']());}};_0x3589b7(++_0x37f5e9);}(_0x204b,0x13c));var _0xb204=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x204b[_0x4d613c];return _0x301fe3;};'use strict';var _=require(_0xb204('0x0'));var util=require(_0xb204('0x1'));var logger=require(_0xb204('0x2'))(_0xb204('0x3'));var moment=require(_0xb204('0x4'));var BPromise=require(_0xb204('0x5'));var rp=require(_0xb204('0x6'));var fs=require('fs');var path=require(_0xb204('0x7'));var rimraf=require(_0xb204('0x8'));var config=require(_0xb204('0x9'));var attributes=require('./voiceMusicOnHold.attributes');module[_0xb204('0xa')]=function(_0x9a9431,_0x2eb4a2){return _0x9a9431['define'](_0xb204('0xb'),attributes,{'tableName':_0xb204('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4ce26e7..c08a548 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x1fd9ca,_0x2401a6){var _0x55a884=function(_0xfec0c8){while(--_0xfec0c8){_0x1fd9ca['push'](_0x1fd9ca['shift']());}};_0x55a884(++_0x2401a6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+var _0xedd9=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','VoiceMusicOnHold,\x20%s,\x20%s','message','catch','util'];(function(_0x16959a,_0x34b600){var _0x49616b=function(_0xd55d35){while(--_0xd55d35){_0x16959a['push'](_0x16959a['shift']());}};_0x49616b(++_0x34b600);}(_0xedd9,0xfc));var _0x9edd=function(_0xeb6dd0,_0x31b7a1){_0xeb6dd0=_0xeb6dd0-0x0;var _0x1e3108=_0xedd9[_0xeb6dd0];return _0x1e3108;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var moment=require(_0x9edd('0x1'));var BPromise=require(_0x9edd('0x2'));var rs=require(_0x9edd('0x3'));var fs=require('fs');var Redis=require(_0x9edd('0x4'));var db=require(_0x9edd('0x5'))['db'];var utils=require(_0x9edd('0x6'));var logger=require(_0x9edd('0x7'))('rpc');var config=require(_0x9edd('0x8'));var jayson=require(_0x9edd('0x9'));var client=jayson[_0x9edd('0xa')][_0x9edd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5319f7,_0xf0b2d8,_0x571af9){return new BPromise(function(_0x172522,_0x190185){return client[_0x9edd('0xc')](_0x5319f7,_0x571af9)[_0x9edd('0xd')](function(_0x49d5e3){logger[_0x9edd('0xe')]('VoiceMusicOnHold,\x20%s,\x20%s',_0xf0b2d8,_0x9edd('0xf'));logger[_0x9edd('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s,\x20%s',_0xf0b2d8,_0x9edd('0xf'),JSON[_0x9edd('0x11')](_0x49d5e3));if(_0x49d5e3['error']){if(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x13')]===0x1f4){logger[_0x9edd('0x12')](_0x9edd('0x14'),_0xf0b2d8,_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);return _0x190185(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);}logger['error'](_0x9edd('0x14'),_0xf0b2d8,_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);return _0x172522(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);}else{logger[_0x9edd('0xe')](_0x9edd('0x14'),_0xf0b2d8,_0x9edd('0xf'));_0x172522(_0x49d5e3['result'][_0x9edd('0x15')]);}})[_0x9edd('0x16')](function(_0x449cee){logger['error'](_0x9edd('0x14'),_0xf0b2d8,_0x449cee);_0x190185(_0x449cee);});});}
\ No newline at end of file
index 8b6e460..32b47b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1cf=['isAuthenticated','describe','/:id','getAgents','post','create','/:id/users','addAgents','put','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./voicePrefix.controller','get','index','/describe'];(function(_0x3d659f,_0x44f566){var _0x1e7801=function(_0x2c0bec){while(--_0x2c0bec){_0x3d659f['push'](_0x3d659f['shift']());}};_0x1e7801(++_0x44f566);}(_0xc1cf,0x165));var _0xfc1c=function(_0x5c8d1e,_0x458578){_0x5c8d1e=_0x5c8d1e-0x0;var _0x99ed5d=_0xc1cf[_0x5c8d1e];return _0x99ed5d;};'use strict';var multer=require(_0xfc1c('0x0'));var util=require('util');var path=require(_0xfc1c('0x1'));var timeout=require(_0xfc1c('0x2'));var express=require(_0xfc1c('0x3'));var router=express[_0xfc1c('0x4')]();var fs_extra=require(_0xfc1c('0x5'));var auth=require(_0xfc1c('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xfc1c('0x7'));router[_0xfc1c('0x8')]('/',auth['isAuthenticated'](),controller[_0xfc1c('0x9')]);router['get'](_0xfc1c('0xa'),auth[_0xfc1c('0xb')](),controller[_0xfc1c('0xc')]);router[_0xfc1c('0x8')](_0xfc1c('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xfc1c('0x8')]('/:id/users',auth['isAuthenticated'](),controller[_0xfc1c('0xe')]);router[_0xfc1c('0xf')]('/',auth[_0xfc1c('0xb')](),controller[_0xfc1c('0x10')]);router['post'](_0xfc1c('0x11'),auth[_0xfc1c('0xb')](),controller[_0xfc1c('0x12')]);router[_0xfc1c('0x13')](_0xfc1c('0xd'),auth[_0xfc1c('0xb')](),controller['update']);router[_0xfc1c('0x14')]('/:id',auth['isAuthenticated'](),controller[_0xfc1c('0x15')]);router[_0xfc1c('0x14')](_0xfc1c('0x11'),auth[_0xfc1c('0xb')](),controller['removeAgents']);module[_0xfc1c('0x16')]=router;
\ No newline at end of file
+var _0xd338=['../../config/environment','isAuthenticated','/describe','describe','get','show','/:id/users','/:id/teams','post','create','addAgents','/:id','update','delete','removeTeams','exports','multer','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x1b87fa,_0x5446ff){var _0x3bef42=function(_0x580fb0){while(--_0x580fb0){_0x1b87fa['push'](_0x1b87fa['shift']());}};_0x3bef42(++_0x5446ff);}(_0xd338,0x1f4));var _0x8d33=function(_0xe66cf2,_0x32ba5f){_0xe66cf2=_0xe66cf2-0x0;var _0x2d84e7=_0xd338[_0xe66cf2];return _0x2d84e7;};'use strict';var multer=require(_0x8d33('0x0'));var util=require('util');var path=require(_0x8d33('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8d33('0x2')]();var fs_extra=require(_0x8d33('0x3'));var auth=require(_0x8d33('0x4'));var interaction=require(_0x8d33('0x5'));var config=require(_0x8d33('0x6'));var controller=require('./voicePrefix.controller');router['get']('/',auth[_0x8d33('0x7')](),controller['index']);router['get'](_0x8d33('0x8'),auth[_0x8d33('0x7')](),controller[_0x8d33('0x9')]);router[_0x8d33('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x8d33('0xb')]);router[_0x8d33('0xa')](_0x8d33('0xc'),auth[_0x8d33('0x7')](),controller['getAgents']);router[_0x8d33('0xa')](_0x8d33('0xd'),auth[_0x8d33('0x7')](),controller['getTeams']);router[_0x8d33('0xe')]('/',auth[_0x8d33('0x7')](),controller[_0x8d33('0xf')]);router[_0x8d33('0xe')](_0x8d33('0xc'),auth[_0x8d33('0x7')](),controller[_0x8d33('0x10')]);router[_0x8d33('0xe')](_0x8d33('0xd'),auth[_0x8d33('0x7')](),controller['addTeams']);router['put'](_0x8d33('0x11'),auth[_0x8d33('0x7')](),controller[_0x8d33('0x12')]);router[_0x8d33('0x13')](_0x8d33('0x11'),auth[_0x8d33('0x7')](),controller['destroy']);router[_0x8d33('0x13')](_0x8d33('0xc'),auth[_0x8d33('0x7')](),controller['removeAgents']);router['delete'](_0x8d33('0xd'),auth['isAuthenticated'](),controller[_0x8d33('0x14')]);module[_0x8d33('0x15')]=router;
\ No newline at end of file
index e629db2..5f5590e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2638=['STRING','INTEGER','sequelize','exports','system-','getDataValue','name'];(function(_0x270af6,_0x87f513){var _0x55a014=function(_0x10f83b){while(--_0x10f83b){_0x270af6['push'](_0x270af6['shift']());}};_0x55a014(++_0x87f513);}(_0x2638,0xe2));var _0x8263=function(_0x50d0dc,_0x23bcb0){_0x50d0dc=_0x50d0dc-0x0;var _0x49f2a9=_0x2638[_0x50d0dc];return _0x49f2a9;};'use strict';var Sequelize=require(_0x8263('0x0'));module[_0x8263('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0xd9ecff){return _0x8263('0x2')+this[_0x8263('0x3')](_0x8263('0x4'))+'-';}},'description':{'type':Sequelize[_0x8263('0x5')]},'callerIdAll':{'type':Sequelize[_0x8263('0x5')]},'VoiceExtensionId':{'type':Sequelize[_0x8263('0x6')]}};
\ No newline at end of file
+var _0x6426=['exports','STRING','name','VIRTUAL','getDataValue','INTEGER','sequelize'];(function(_0x7a3247,_0x15cb12){var _0x1bfde5=function(_0x62bbef){while(--_0x62bbef){_0x7a3247['push'](_0x7a3247['shift']());}};_0x1bfde5(++_0x15cb12);}(_0x6426,0xfb));var _0x6642=function(_0x14da69,_0x35ffff){_0x14da69=_0x14da69-0x0;var _0x1ffe6b=_0x6426[_0x14da69];return _0x1ffe6b;};'use strict';var Sequelize=require(_0x6642('0x0'));module[_0x6642('0x1')]={'name':{'type':Sequelize[_0x6642('0x2')],'allowNull':![],'unique':_0x6642('0x3')},'prefix':{'type':Sequelize[_0x6642('0x4')],'get':function(_0xc5c96f){return'system-'+this[_0x6642('0x5')](_0x6642('0x3'))+'-';}},'description':{'type':Sequelize[_0x6642('0x2')]},'callerIdAll':{'type':Sequelize[_0x6642('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0x6642('0x6')]}};
\ No newline at end of file
index d6c5de7..8b2f740 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c7=['charAt','findById','addAgents','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','findOne','User','pick','getAgents','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./voicePrefix.socket','register','sendStatus','status','end','offset','undefined','limit','set','Content-Range','apply','reject','update','destroy','get','VoicePrefixes','UserProfileResource','then','error','stack','name','send','index','map','VoicePrefix','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','count','findAll','rows','catch','params','includeAll','options','describe','create','sequelize','body','find','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','app','priority','appdata','prefix','NoOp','VoicePrefixId','VoiceExtension','bulkCreate','Extensions\x20creation\x20failed','Set','CDR(prefix)=','callerIdAll','push','No\x20callerid\x20available','goto','${EXTEN:'];(function(_0x44dd0f,_0x23b88d){var _0x2acd26=function(_0x5b68ab){while(--_0x5b68ab){_0x44dd0f['push'](_0x44dd0f['shift']());}};_0x2acd26(++_0x23b88d);}(_0x47c7,0x1f3));var _0x747c=function(_0x4e9d3c,_0x1f4b98){_0x4e9d3c=_0x4e9d3c-0x0;var _0x2d0825=_0x47c7[_0x4e9d3c];return _0x2d0825;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x747c('0x0'));var zipdir=require(_0x747c('0x1'));var jsonpatch=require(_0x747c('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x747c('0x3'));var Mustache=require(_0x747c('0x4'));var util=require(_0x747c('0x5'));var path=require(_0x747c('0x6'));var sox=require('sox');var csv=require(_0x747c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x747c('0x8'));var _=require(_0x747c('0x9'));var squel=require(_0x747c('0xa'));var crypto=require(_0x747c('0xb'));var jsforce=require(_0x747c('0xc'));var deskjs=require(_0x747c('0xd'));var toCsv=require(_0x747c('0x7'));var querystring=require(_0x747c('0xe'));var Papa=require(_0x747c('0xf'));var Redis=require(_0x747c('0x10'));var authService=require(_0x747c('0x11'));var qs=require(_0x747c('0x12'));var as=require(_0x747c('0x13'));var hardwareService=require(_0x747c('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x747c('0x15'));var config=require(_0x747c('0x16'));var licenseUtil=require(_0x747c('0x17'));var db=require(_0x747c('0x18'))['db'];config['redis']=_['defaults'](config[_0x747c('0x19')],{'host':_0x747c('0x1a'),'port':0x18eb});var socket=require(_0x747c('0x1b'))(new Redis(config[_0x747c('0x19')]));require(_0x747c('0x1c'))[_0x747c('0x1d')](socket);function respondWithStatusCode(_0x3a8d64,_0xfdec09){_0xfdec09=_0xfdec09||0xcc;return function(_0x4d5e53){if(_0x4d5e53){return _0x3a8d64[_0x747c('0x1e')](_0xfdec09);}return _0x3a8d64[_0x747c('0x1f')](_0xfdec09)[_0x747c('0x20')]();};}function respondWithResult(_0x4381a3,_0x590861){_0x590861=_0x590861||0xc8;return function(_0x35f14b){if(_0x35f14b){return _0x4381a3[_0x747c('0x1f')](_0x590861)['json'](_0x35f14b);}};}function respondWithFilteredResult(_0x479ddc,_0x57087a){return function(_0x45e2fe){if(_0x45e2fe){var _0x55a983=typeof _0x57087a[_0x747c('0x21')]===_0x747c('0x22')&&typeof _0x57087a[_0x747c('0x23')]===_0x747c('0x22');var _0x3af7df=_0x45e2fe['count'];var _0x46a24d=_0x55a983?0x0:_0x57087a['offset'];var _0x250488=_0x55a983?_0x45e2fe['count']:_0x57087a[_0x747c('0x21')]+_0x57087a[_0x747c('0x23')];var _0x1eb0f5;if(_0x250488>=_0x3af7df){_0x250488=_0x3af7df;_0x1eb0f5=0xc8;}else{_0x1eb0f5=0xce;}_0x479ddc['status'](_0x1eb0f5);return _0x479ddc[_0x747c('0x24')](_0x747c('0x25'),_0x46a24d+'-'+_0x250488+'/'+_0x3af7df)['json'](_0x45e2fe);}return null;};}function patchUpdates(_0x71016e){return function(_0xd60bab){try{jsonpatch[_0x747c('0x26')](_0xd60bab,_0x71016e,!![]);}catch(_0x3fafc7){return BPromise[_0x747c('0x27')](_0x3fafc7);}return _0xd60bab['save']();};}function saveUpdates(_0x5f0040,_0xc6269b){return function(_0x5cb78b){if(_0x5cb78b){return _0x5cb78b[_0x747c('0x28')](_0x5f0040)['then'](function(_0x52768d){return _0x52768d;});}return null;};}function removeEntity(_0x34a39e,_0x5ccb3e){return function(_0x4e86b1){if(_0x4e86b1){return _0x4e86b1[_0x747c('0x29')]()['then'](function(){var _0x4999b6=_0x4e86b1[_0x747c('0x2a')]({'plain':!![]});var _0x23d1cb=_0x747c('0x2b');return db[_0x747c('0x2c')][_0x747c('0x29')]({'where':{'type':_0x23d1cb,'resourceId':_0x4999b6['id']}})[_0x747c('0x2d')](function(){return _0x4e86b1;});})[_0x747c('0x2d')](function(){_0x34a39e[_0x747c('0x1f')](0xcc)[_0x747c('0x20')]();});}};}function handleEntityNotFound(_0x53650f,_0x57e82a){return function(_0x401808){if(!_0x401808){_0x53650f[_0x747c('0x1e')](0x194);}return _0x401808;};}function handleError(_0x568038,_0xa7c129){_0xa7c129=_0xa7c129||0x1f4;return function(_0x4e4b2d){logger[_0x747c('0x2e')](_0x4e4b2d[_0x747c('0x2f')]);if(_0x4e4b2d['name']){delete _0x4e4b2d[_0x747c('0x30')];}_0x568038[_0x747c('0x1f')](_0xa7c129)[_0x747c('0x31')](_0x4e4b2d);};}exports[_0x747c('0x32')]=function(_0x43f7b5,_0x1f7a76){var _0x215d4c={},_0x46366a={},_0x438eeb={'count':0x0,'rows':[]};var _0x1caa73=_[_0x747c('0x33')](db[_0x747c('0x34')][_0x747c('0x35')],function(_0x340c3a){return{'name':_0x340c3a['fieldName'],'type':_0x340c3a[_0x747c('0x36')]['key']};});_0x46366a[_0x747c('0x37')]=_[_0x747c('0x33')](_0x1caa73,'name');_0x46366a[_0x747c('0x38')]=_[_0x747c('0x39')](_0x43f7b5[_0x747c('0x38')]);_0x46366a[_0x747c('0x3a')]=_[_0x747c('0x3b')](_0x46366a[_0x747c('0x37')],_0x46366a[_0x747c('0x38')]);_0x215d4c[_0x747c('0x3c')]=_[_0x747c('0x3b')](_0x46366a['model'],qs[_0x747c('0x3d')](_0x43f7b5[_0x747c('0x38')][_0x747c('0x3d')]));_0x215d4c[_0x747c('0x3c')]=_0x215d4c[_0x747c('0x3c')][_0x747c('0x3e')]?_0x215d4c[_0x747c('0x3c')]:_0x46366a['model'];if(!_0x43f7b5[_0x747c('0x38')][_0x747c('0x3f')](_0x747c('0x40'))){_0x215d4c[_0x747c('0x23')]=qs[_0x747c('0x23')](_0x43f7b5['query']['limit']);_0x215d4c[_0x747c('0x21')]=qs[_0x747c('0x21')](_0x43f7b5[_0x747c('0x38')]['offset']);}_0x215d4c[_0x747c('0x41')]=qs[_0x747c('0x42')](_0x43f7b5[_0x747c('0x38')][_0x747c('0x42')]);_0x215d4c[_0x747c('0x43')]=qs[_0x747c('0x3a')](_['pick'](_0x43f7b5[_0x747c('0x38')],_0x46366a[_0x747c('0x3a')]),_0x1caa73);if(_0x43f7b5[_0x747c('0x38')][_0x747c('0x44')]){_0x215d4c[_0x747c('0x43')]=_[_0x747c('0x45')](_0x215d4c[_0x747c('0x43')],{'$or':_[_0x747c('0x33')](_0x1caa73,function(_0xf30b4b){if(_0xf30b4b[_0x747c('0x36')]!=='VIRTUAL'){var _0x526f85={};_0x526f85[_0xf30b4b['name']]={'$like':'%'+_0x43f7b5['query'][_0x747c('0x44')]+'%'};return _0x526f85;}})});}_0x215d4c=_['merge']({},_0x215d4c,_0x43f7b5['options']);var _0x3859cb={'where':_0x215d4c[_0x747c('0x43')]};return db[_0x747c('0x34')][_0x747c('0x46')](_0x3859cb)[_0x747c('0x2d')](function(_0x3f8ac3){_0x438eeb['count']=_0x3f8ac3;if(_0x43f7b5['query']['includeAll']){_0x215d4c['include']=[{'all':!![]}];}return db['VoicePrefix'][_0x747c('0x47')](_0x215d4c);})[_0x747c('0x2d')](function(_0x19c9af){_0x438eeb[_0x747c('0x48')]=_0x19c9af;return _0x438eeb;})[_0x747c('0x2d')](respondWithFilteredResult(_0x1f7a76,_0x215d4c))[_0x747c('0x49')](handleError(_0x1f7a76,null));};exports['show']=function(_0xf9e7d9,_0x3e0e5d){var _0x3ad427={'raw':![],'where':{'id':_0xf9e7d9[_0x747c('0x4a')]['id']}},_0x461f7f={};_0x461f7f[_0x747c('0x37')]=_[_0x747c('0x39')](db['VoicePrefix'][_0x747c('0x35')]);_0x461f7f[_0x747c('0x38')]=_[_0x747c('0x39')](_0xf9e7d9[_0x747c('0x38')]);_0x461f7f[_0x747c('0x3a')]=_[_0x747c('0x3b')](_0x461f7f[_0x747c('0x37')],_0x461f7f[_0x747c('0x38')]);_0x3ad427['attributes']=_['intersection'](_0x461f7f[_0x747c('0x37')],qs[_0x747c('0x3d')](_0xf9e7d9[_0x747c('0x38')]['fields']));_0x3ad427[_0x747c('0x3c')]=_0x3ad427[_0x747c('0x3c')][_0x747c('0x3e')]?_0x3ad427[_0x747c('0x3c')]:_0x461f7f[_0x747c('0x37')];if(_0xf9e7d9['query'][_0x747c('0x4b')]){_0x3ad427['include']=[{'all':!![]}];}_0x3ad427=_['merge']({},_0x3ad427,_0xf9e7d9[_0x747c('0x4c')]);return db['VoicePrefix']['find'](_0x3ad427)[_0x747c('0x2d')](handleEntityNotFound(_0x3e0e5d,null))[_0x747c('0x2d')](respondWithResult(_0x3e0e5d,null))[_0x747c('0x49')](handleError(_0x3e0e5d,null));};exports[_0x747c('0x29')]=function(_0x10b430,_0x46789c){return db[_0x747c('0x34')]['find']({'where':{'id':_0x10b430[_0x747c('0x4a')]['id']}})[_0x747c('0x2d')](handleEntityNotFound(_0x46789c,null))[_0x747c('0x2d')](removeEntity(_0x46789c,null))[_0x747c('0x49')](handleError(_0x46789c,null));};exports[_0x747c('0x4d')]=function(_0xc2fa66,_0x3fb2a8){return db[_0x747c('0x34')][_0x747c('0x4d')]()[_0x747c('0x2d')](respondWithResult(_0x3fb2a8,null))[_0x747c('0x49')](handleError(_0x3fb2a8,null));};exports[_0x747c('0x4e')]=function(_0x599c70,_0x401d16){var _0x1639d7;return db[_0x747c('0x4f')]['transaction'](function(_0x215e7a){return db[_0x747c('0x34')]['create'](_0x599c70[_0x747c('0x50')],{'transaction':_0x215e7a})[_0x747c('0x2d')](function(_0x3bf7ac){_0x1639d7=_0x3bf7ac[_0x747c('0x2a')]({'plain':!![]});return db['VoiceExtension'][_0x747c('0x51')]({'where':{'id':_0x1639d7[_0x747c('0x52')]},'raw':!![]})['then'](function(_0x59e264){return createVoicePrefixExtensions(_0x1639d7,_0x59e264,_0x215e7a);});});})[_0x747c('0x2d')](function(){var _0x5c17b3=_0x599c70[_0x747c('0x53')]['get']({'plain':!![]});if(!_0x5c17b3)throw new Error(_0x747c('0x54'));if(_0x5c17b3['role']==='user'){var _0x375973=_0x1639d7;return db['UserProfileSection'][_0x747c('0x51')]({'where':{'name':_0x747c('0x2b'),'userProfileId':_0x5c17b3[_0x747c('0x55')]},'raw':!![]})[_0x747c('0x2d')](function(_0x455c9c){if(_0x455c9c&&_0x455c9c[_0x747c('0x56')]===0x0){return db[_0x747c('0x2c')][_0x747c('0x4e')]({'name':_0x375973[_0x747c('0x30')],'resourceId':_0x375973['id'],'type':_0x455c9c[_0x747c('0x30')],'sectionId':_0x455c9c['id']},{})[_0x747c('0x2d')](function(){return _0x1639d7;});}else{return _0x1639d7;}})[_0x747c('0x49')](function(_0x208b46){logger['error'](_0x747c('0x57'),_0x208b46);throw _0x208b46;});}return _0x1639d7;})[_0x747c('0x2d')](respondWithResult(_0x401d16,null))[_0x747c('0x49')](handleError(_0x401d16,null));};function Extension(_0x4fa0da,_0x542649,_0x1002d7,_0x1bd828){this[_0x747c('0x58')]=_0x747c('0x59');this['exten']=_0x4fa0da;this[_0x747c('0x5a')]=_0x1002d7;this['type']='system';this['description']='Voice\x20Prefix\x20Extension';this[_0x747c('0x5b')]=_0x542649;this[_0x747c('0x5c')]=_0x1bd828;}function createVoicePrefixExtensions(_0x376706,_0xbc9ced,_0x14c455){return new BPromise(function(_0x12db83,_0x221a9f){var _0xf97581=new Extension(formatPrefixName(_0x376706[_0x747c('0x5d')]),0x1,_0x747c('0x5e'),'Voice\x20Prefix');_0xf97581[_0x747c('0x5f')]=_0x376706['id'];return db[_0x747c('0x60')][_0x747c('0x4e')](_0xf97581,{'transaction':_0x14c455})[_0x747c('0x2d')](function(_0x2064df){var _0x18ecb2=_0x2064df[_0x747c('0x2a')]({'plain':!![]});var _0x485394=_['map'](addVoicePrefixExtensions(_0x376706,_0xbc9ced),function(_0x45fdee){_0x45fdee[_0x747c('0x52')]=_0x18ecb2['id'];_0x45fdee[_0x747c('0x5f')]=_0x376706['id'];return _0x45fdee;});return db[_0x747c('0x60')][_0x747c('0x61')](_0x485394,{'transaction':_0x14c455})[_0x747c('0x2d')](function(_0x2826fa){if(!_0x2826fa){return _0x221a9f(_0x747c('0x62'));}else{return _0x12db83(_0x2826fa);}})[_0x747c('0x49')](function(_0x1b7701){return _0x221a9f(_0x1b7701);});});;});};function addVoicePrefixExtensions(_0x54cbf9,_0xed4771){var _0x1b9857=[];var _0x420afc=formatPrefixName(_0x54cbf9[_0x747c('0x5d')]);_0x1b9857['push'](new Extension(_0x420afc,0x2,_0x747c('0x63'),_0x747c('0x64')+_0x54cbf9[_0x747c('0x30')]));if(_0x54cbf9[_0x747c('0x65')]){_0x1b9857[_0x747c('0x66')](new Extension(_0x420afc,0x3,_0x747c('0x63'),'PREFIX-CALLERIDALL='+_0x54cbf9[_0x747c('0x65')]));}else{_0x1b9857[_0x747c('0x66')](new Extension(_0x420afc,0x3,_0x747c('0x5e'),_0x747c('0x67')));}_0x1b9857['push'](new Extension(_0x420afc,0x4,_0x747c('0x68'),_0xed4771[_0x747c('0x58')]+','+_0x747c('0x69')+(0x8+_0x54cbf9[_0x747c('0x30')][_0x747c('0x3e')])+'}'+','+0x1));return _0x1b9857;}function formatPrefixName(_0x351c78){var _0x324bb8='_';for(var _0x21b76f=0x0;_0x21b76f<_0x351c78[_0x747c('0x3e')];_0x21b76f++){if(_0x351c78[_0x747c('0x6a')](_0x21b76f)=='-'){_0x324bb8+=_0x351c78['charAt'](_0x21b76f);}else{_0x324bb8+='['+_0x351c78[_0x747c('0x6a')](_0x21b76f)+']';}}_0x324bb8+='.';return _0x324bb8;}exports['update']=function(_0x4f3518,_0x3dfbf7,_0x59c7b3){var _0x49358b=_0x4f3518[_0x747c('0x50')];_0x49358b[_0x747c('0x5d')]='system-'+_0x49358b[_0x747c('0x30')]+'-';return db[_0x747c('0x4f')]['transaction'](function(_0x58cc0f){return db[_0x747c('0x34')][_0x747c('0x28')](_0x49358b,{'where':{'id':_0x49358b['id']},'transaction':_0x58cc0f})['then'](function(){return db['VoiceExtension']['destroy']({'where':{'VoicePrefixId':_0x49358b['id']},'transaction':_0x58cc0f})[_0x747c('0x2d')](function(){return db['VoiceExtension'][_0x747c('0x51')]({'where':{'id':_0x49358b[_0x747c('0x52')]},'raw':!![]})[_0x747c('0x2d')](function(_0x57c582){return createVoicePrefixExtensions(_0x49358b,_0x57c582,_0x58cc0f);});});});})[_0x747c('0x2d')](function(){return db[_0x747c('0x34')][_0x747c('0x6b')](_0x49358b['id']);})[_0x747c('0x2d')](respondWithResult(_0x3dfbf7,null))['catch'](handleError(_0x3dfbf7,null));};exports['addAgents']=function(_0x5866b1,_0x798561,_0x21c865){return db[_0x747c('0x34')][_0x747c('0x51')]({'where':{'id':_0x5866b1[_0x747c('0x4a')]['id']}})[_0x747c('0x2d')](handleEntityNotFound(_0x798561,null))[_0x747c('0x2d')](function(_0x3c8d21){if(_0x3c8d21){return _0x3c8d21[_0x747c('0x6c')](_0x5866b1[_0x747c('0x50')][_0x747c('0x6d')],_[_0x747c('0x6e')](_0x5866b1[_0x747c('0x50')],[_0x747c('0x6d'),'id'])||{})[_0x747c('0x6f')](function(_0x5aa7e4){for(var _0x4d6a58=0x0;_0x4d6a58<_0x5866b1[_0x747c('0x50')][_0x747c('0x6d')]['length'];_0x4d6a58+=0x1){socket[_0x747c('0x70')](_0x747c('0x71'),{'UserId':Number(_0x5866b1['body'][_0x747c('0x6d')][_0x4d6a58]),'VoicePrefixId':Number(_0x5866b1[_0x747c('0x4a')]['id'])});}return _0x5aa7e4;});}})[_0x747c('0x2d')](respondWithResult(_0x798561,null))[_0x747c('0x49')](handleError(_0x798561,null));};exports[_0x747c('0x72')]=function(_0x55cbdc,_0x3ebd7e,_0x2d716c){return db[_0x747c('0x34')]['find']({'where':{'id':_0x55cbdc[_0x747c('0x4a')]['id']}})[_0x747c('0x2d')](handleEntityNotFound(_0x3ebd7e,null))[_0x747c('0x2d')](function(_0x52c80a){if(_0x52c80a){return _0x52c80a[_0x747c('0x72')](_0x55cbdc[_0x747c('0x38')]['ids'])[_0x747c('0x2d')](function(){if(_[_0x747c('0x73')](_0x55cbdc[_0x747c('0x38')][_0x747c('0x6d')])){for(var _0x5081de=0x0;_0x5081de<_0x55cbdc[_0x747c('0x38')]['ids'][_0x747c('0x3e')];_0x5081de+=0x1){socket[_0x747c('0x70')](_0x747c('0x74'),{'UserId':Number(_0x55cbdc[_0x747c('0x38')][_0x747c('0x6d')][_0x5081de]),'VoicePrefixId':Number(_0x55cbdc[_0x747c('0x4a')]['id'])});}}else{socket[_0x747c('0x70')](_0x747c('0x74'),{'UserId':Number(_0x55cbdc['query']['ids']),'VoicePrefixId':Number(_0x55cbdc['params']['id'])});}});}})[_0x747c('0x2d')](respondWithStatusCode(_0x3ebd7e,null))[_0x747c('0x49')](handleError(_0x3ebd7e,null));};exports['getAgents']=function(_0x11a3f7,_0x434c06,_0x33014c){var _0x199c72={};var _0x451b53={};var _0x485fbf;var _0x39295a;return db[_0x747c('0x34')][_0x747c('0x75')]({'where':{'id':_0x11a3f7[_0x747c('0x4a')]['id']}})['then'](handleEntityNotFound(_0x434c06,null))[_0x747c('0x2d')](function(_0x43446e){if(_0x43446e){_0x485fbf=_0x43446e;_0x451b53[_0x747c('0x37')]=_[_0x747c('0x39')](db[_0x747c('0x76')][_0x747c('0x35')]);_0x451b53[_0x747c('0x38')]=_[_0x747c('0x39')](_0x11a3f7[_0x747c('0x38')]);_0x451b53[_0x747c('0x3a')]=_[_0x747c('0x3b')](_0x451b53[_0x747c('0x37')],_0x451b53[_0x747c('0x38')]);_0x199c72['attributes']=_[_0x747c('0x3b')](_0x451b53[_0x747c('0x37')],qs[_0x747c('0x3d')](_0x11a3f7[_0x747c('0x38')][_0x747c('0x3d')]));_0x199c72[_0x747c('0x3c')]=_0x199c72[_0x747c('0x3c')]['length']?_0x199c72[_0x747c('0x3c')]:_0x451b53[_0x747c('0x37')];_0x199c72[_0x747c('0x41')]=qs[_0x747c('0x42')](_0x11a3f7['query'][_0x747c('0x42')]);_0x199c72[_0x747c('0x43')]=qs[_0x747c('0x3a')](_[_0x747c('0x77')](_0x11a3f7[_0x747c('0x38')],_0x451b53[_0x747c('0x3a')]));if(_0x11a3f7[_0x747c('0x38')][_0x747c('0x44')]){_0x199c72[_0x747c('0x43')]=_[_0x747c('0x45')](_0x199c72[_0x747c('0x43')],{'$or':_[_0x747c('0x33')](_0x199c72[_0x747c('0x3c')],function(_0x1fa630){var _0x31a6b9={};_0x31a6b9[_0x1fa630]={'$like':'%'+_0x11a3f7['query'][_0x747c('0x44')]+'%'};return _0x31a6b9;})});}_0x199c72=_['merge']({},_0x199c72,_0x11a3f7['options']);return _0x485fbf[_0x747c('0x78')](_0x199c72);}})[_0x747c('0x2d')](function(_0x22cb76){if(_0x22cb76){_0x39295a=_0x22cb76[_0x747c('0x3e')];if(!_0x11a3f7[_0x747c('0x38')]['hasOwnProperty'](_0x747c('0x40'))){_0x199c72[_0x747c('0x23')]=qs[_0x747c('0x23')](_0x11a3f7[_0x747c('0x38')][_0x747c('0x23')]);_0x199c72[_0x747c('0x21')]=qs[_0x747c('0x21')](_0x11a3f7[_0x747c('0x38')][_0x747c('0x21')]);}return _0x485fbf['getAgents'](_0x199c72);}})[_0x747c('0x2d')](function(_0x21656b){if(_0x21656b){return _0x21656b?{'count':_0x39295a,'rows':_0x21656b}:null;}})['then'](respondWithResult(_0x434c06,null))[_0x747c('0x49')](handleError(_0x434c06,null));};
\ No newline at end of file
+var _0x3de3=['jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./voicePrefix.socket','register','sendStatus','status','offset','undefined','count','limit','set','json','apply','reject','update','then','VoicePrefixes','UserProfileResource','destroy','end','error','stack','name','send','index','map','VoicePrefix','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','type','VIRTUAL','filter','merge','options','includeAll','findAll','rows','catch','show','rawAttributes','intersection','find','params','describe','create','transaction','body','get','VoiceExtensionId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','exten','app','system','description','Voice\x20Prefix\x20Extension','priority','prefix','Voice\x20Prefix','VoicePrefixId','VoiceExtension','bulkCreate','Extensions\x20creation\x20failed','Set','callerIdAll','No\x20callerid\x20available','push','goto','${EXTEN:','charAt','system-','findById','ids','omit','spread','userVoicePrefix:save','removeAgents','userVoicePrefix:remove','emit','getAgents','findOne','User','Team','getTeams','addTeams','Agents','online','voicePause','interface','flatMap','sequelize','each','TeamVoicePrefix','upsert','UserVoicePrefix','forEach','removeTeams','tq.TeamId','team_has_voice_prefixes','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','fs-extra','squel','crypto'];(function(_0x59d5ab,_0x143a1f){var _0x4fb1d8=function(_0x141428){while(--_0x141428){_0x59d5ab['push'](_0x59d5ab['shift']());}};_0x4fb1d8(++_0x143a1f);}(_0x3de3,0x1ce));var _0x33de=function(_0x367f8c,_0xf50e77){_0x367f8c=_0x367f8c-0x0;var _0x41d344=_0x3de3[_0x367f8c];return _0x41d344;};'use strict';var emlformat=require(_0x33de('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x33de('0x1'));var jsonpatch=require(_0x33de('0x2'));var rp=require('request-promise');var moment=require(_0x33de('0x3'));var BPromise=require(_0x33de('0x4'));var Mustache=require(_0x33de('0x5'));var util=require(_0x33de('0x6'));var path=require('path');var sox=require(_0x33de('0x7'));var csv=require(_0x33de('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x33de('0x9'));var _=require('lodash');var squel=require(_0x33de('0xa'));var crypto=require(_0x33de('0xb'));var jsforce=require(_0x33de('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x33de('0x8'));var querystring=require(_0x33de('0xd'));var Papa=require(_0x33de('0xe'));var Redis=require('ioredis');var authService=require(_0x33de('0xf'));var qs=require(_0x33de('0x10'));var as=require(_0x33de('0x11'));var hardwareService=require(_0x33de('0x12'));var logger=require(_0x33de('0x13'))(_0x33de('0x14'));var utils=require(_0x33de('0x15'));var config=require(_0x33de('0x16'));var licenseUtil=require(_0x33de('0x17'));var db=require(_0x33de('0x18'))['db'];config[_0x33de('0x19')]=_['defaults'](config[_0x33de('0x19')],{'host':_0x33de('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x33de('0x1b'))[_0x33de('0x1c')](socket);function respondWithStatusCode(_0x2b3748,_0x57a2a1){_0x57a2a1=_0x57a2a1||0xcc;return function(_0x57aa73){if(_0x57aa73){return _0x2b3748[_0x33de('0x1d')](_0x57a2a1);}return _0x2b3748[_0x33de('0x1e')](_0x57a2a1)['end']();};}function respondWithResult(_0x4ff69f,_0x185849){_0x185849=_0x185849||0xc8;return function(_0x16c050){if(_0x16c050){return _0x4ff69f[_0x33de('0x1e')](_0x185849)['json'](_0x16c050);}};}function respondWithFilteredResult(_0x2db887,_0x1203cf){return function(_0x52cfa0){if(_0x52cfa0){var _0x2815a7=typeof _0x1203cf[_0x33de('0x1f')]==='undefined'&&typeof _0x1203cf['limit']===_0x33de('0x20');var _0x52d718=_0x52cfa0[_0x33de('0x21')];var _0x2f0529=_0x2815a7?0x0:_0x1203cf[_0x33de('0x1f')];var _0x315c9b=_0x2815a7?_0x52cfa0[_0x33de('0x21')]:_0x1203cf[_0x33de('0x1f')]+_0x1203cf[_0x33de('0x22')];var _0x493263;if(_0x315c9b>=_0x52d718){_0x315c9b=_0x52d718;_0x493263=0xc8;}else{_0x493263=0xce;}_0x2db887['status'](_0x493263);return _0x2db887[_0x33de('0x23')]('Content-Range',_0x2f0529+'-'+_0x315c9b+'/'+_0x52d718)[_0x33de('0x24')](_0x52cfa0);}return null;};}function patchUpdates(_0x4cd8db){return function(_0x28ed17){try{jsonpatch[_0x33de('0x25')](_0x28ed17,_0x4cd8db,!![]);}catch(_0x575e88){return BPromise[_0x33de('0x26')](_0x575e88);}return _0x28ed17['save']();};}function saveUpdates(_0x67d040,_0x5c602d){return function(_0x62743b){if(_0x62743b){return _0x62743b[_0x33de('0x27')](_0x67d040)[_0x33de('0x28')](function(_0x5b79d7){return _0x5b79d7;});}return null;};}function removeEntity(_0x3bdba4,_0x2d206b){return function(_0x140979){if(_0x140979){return _0x140979['destroy']()[_0x33de('0x28')](function(){var _0x5585a2=_0x140979['get']({'plain':!![]});var _0x1c8de9=_0x33de('0x29');return db[_0x33de('0x2a')][_0x33de('0x2b')]({'where':{'type':_0x1c8de9,'resourceId':_0x5585a2['id']}})[_0x33de('0x28')](function(){return _0x140979;});})[_0x33de('0x28')](function(){_0x3bdba4[_0x33de('0x1e')](0xcc)[_0x33de('0x2c')]();});}};}function handleEntityNotFound(_0x59bc3b,_0x5ae0e8){return function(_0x2755e6){if(!_0x2755e6){_0x59bc3b[_0x33de('0x1d')](0x194);}return _0x2755e6;};}function handleError(_0xaeaec5,_0x451ff5){_0x451ff5=_0x451ff5||0x1f4;return function(_0x167cec){logger[_0x33de('0x2d')](_0x167cec[_0x33de('0x2e')]);if(_0x167cec['name']){delete _0x167cec[_0x33de('0x2f')];}_0xaeaec5[_0x33de('0x1e')](_0x451ff5)[_0x33de('0x30')](_0x167cec);};}exports[_0x33de('0x31')]=function(_0x49e857,_0xe5dc68){var _0xf5d78a={},_0x5a9c43={},_0x5d2da4={'count':0x0,'rows':[]};var _0x57fcf3=_[_0x33de('0x32')](db[_0x33de('0x33')]['rawAttributes'],function(_0x1d0194){return{'name':_0x1d0194['fieldName'],'type':_0x1d0194['type'][_0x33de('0x34')]};});_0x5a9c43[_0x33de('0x35')]=_[_0x33de('0x32')](_0x57fcf3,_0x33de('0x2f'));_0x5a9c43[_0x33de('0x36')]=_[_0x33de('0x37')](_0x49e857[_0x33de('0x36')]);_0x5a9c43[_0x33de('0x38')]=_['intersection'](_0x5a9c43[_0x33de('0x35')],_0x5a9c43['query']);_0xf5d78a[_0x33de('0x39')]=_['intersection'](_0x5a9c43['model'],qs[_0x33de('0x3a')](_0x49e857[_0x33de('0x36')][_0x33de('0x3a')]));_0xf5d78a[_0x33de('0x39')]=_0xf5d78a[_0x33de('0x39')][_0x33de('0x3b')]?_0xf5d78a['attributes']:_0x5a9c43[_0x33de('0x35')];if(!_0x49e857[_0x33de('0x36')][_0x33de('0x3c')](_0x33de('0x3d'))){_0xf5d78a[_0x33de('0x22')]=qs[_0x33de('0x22')](_0x49e857[_0x33de('0x36')]['limit']);_0xf5d78a[_0x33de('0x1f')]=qs[_0x33de('0x1f')](_0x49e857[_0x33de('0x36')][_0x33de('0x1f')]);}_0xf5d78a[_0x33de('0x3e')]=qs[_0x33de('0x3f')](_0x49e857[_0x33de('0x36')]['sort']);_0xf5d78a[_0x33de('0x40')]=qs[_0x33de('0x38')](_[_0x33de('0x41')](_0x49e857[_0x33de('0x36')],_0x5a9c43[_0x33de('0x38')]),_0x57fcf3);if(_0x49e857[_0x33de('0x36')]['filter']){_0xf5d78a[_0x33de('0x40')]=_['merge'](_0xf5d78a[_0x33de('0x40')],{'$or':_[_0x33de('0x32')](_0x57fcf3,function(_0x4da2a5){if(_0x4da2a5[_0x33de('0x42')]!==_0x33de('0x43')){var _0x15918c={};_0x15918c[_0x4da2a5[_0x33de('0x2f')]]={'$like':'%'+_0x49e857[_0x33de('0x36')][_0x33de('0x44')]+'%'};return _0x15918c;}})});}_0xf5d78a=_[_0x33de('0x45')]({},_0xf5d78a,_0x49e857[_0x33de('0x46')]);var _0x48e0fc={'where':_0xf5d78a['where']};return db['VoicePrefix'][_0x33de('0x21')](_0x48e0fc)[_0x33de('0x28')](function(_0x20d04f){_0x5d2da4[_0x33de('0x21')]=_0x20d04f;if(_0x49e857['query'][_0x33de('0x47')]){_0xf5d78a['include']=[{'all':!![]}];}return db['VoicePrefix'][_0x33de('0x48')](_0xf5d78a);})[_0x33de('0x28')](function(_0x384b12){_0x5d2da4[_0x33de('0x49')]=_0x384b12;return _0x5d2da4;})[_0x33de('0x28')](respondWithFilteredResult(_0xe5dc68,_0xf5d78a))[_0x33de('0x4a')](handleError(_0xe5dc68,null));};exports[_0x33de('0x4b')]=function(_0x49b067,_0x3b5530){var _0x5de38b={'raw':![],'where':{'id':_0x49b067['params']['id']}},_0x2fbca6={};_0x2fbca6[_0x33de('0x35')]=_[_0x33de('0x37')](db['VoicePrefix'][_0x33de('0x4c')]);_0x2fbca6[_0x33de('0x36')]=_[_0x33de('0x37')](_0x49b067['query']);_0x2fbca6['filters']=_[_0x33de('0x4d')](_0x2fbca6[_0x33de('0x35')],_0x2fbca6['query']);_0x5de38b['attributes']=_[_0x33de('0x4d')](_0x2fbca6['model'],qs['fields'](_0x49b067['query'][_0x33de('0x3a')]));_0x5de38b[_0x33de('0x39')]=_0x5de38b[_0x33de('0x39')][_0x33de('0x3b')]?_0x5de38b['attributes']:_0x2fbca6['model'];if(_0x49b067[_0x33de('0x36')][_0x33de('0x47')]){_0x5de38b['include']=[{'all':!![]}];}_0x5de38b=_[_0x33de('0x45')]({},_0x5de38b,_0x49b067[_0x33de('0x46')]);return db[_0x33de('0x33')][_0x33de('0x4e')](_0x5de38b)[_0x33de('0x28')](handleEntityNotFound(_0x3b5530,null))['then'](respondWithResult(_0x3b5530,null))[_0x33de('0x4a')](handleError(_0x3b5530,null));};exports[_0x33de('0x2b')]=function(_0x4fe3a2,_0x302573){return db[_0x33de('0x33')][_0x33de('0x4e')]({'where':{'id':_0x4fe3a2[_0x33de('0x4f')]['id']}})[_0x33de('0x28')](handleEntityNotFound(_0x302573,null))[_0x33de('0x28')](removeEntity(_0x302573,null))[_0x33de('0x4a')](handleError(_0x302573,null));};exports[_0x33de('0x50')]=function(_0x24e428,_0x1b4397){return db['VoicePrefix'][_0x33de('0x50')]()[_0x33de('0x28')](respondWithResult(_0x1b4397,null))[_0x33de('0x4a')](handleError(_0x1b4397,null));};exports[_0x33de('0x51')]=function(_0xe6d59,_0x3fe65d){var _0x5c91e7;return db['sequelize'][_0x33de('0x52')](function(_0x32042e){return db[_0x33de('0x33')]['create'](_0xe6d59[_0x33de('0x53')],{'transaction':_0x32042e})[_0x33de('0x28')](function(_0x379224){_0x5c91e7=_0x379224[_0x33de('0x54')]({'plain':!![]});return db['VoiceExtension']['find']({'where':{'id':_0x5c91e7[_0x33de('0x55')]},'raw':!![]})[_0x33de('0x28')](function(_0x232da5){return createVoicePrefixExtensions(_0x5c91e7,_0x232da5,_0x32042e);});});})[_0x33de('0x28')](function(){var _0x379784=_0xe6d59['user']['get']({'plain':!![]});if(!_0x379784)throw new Error(_0x33de('0x56'));if(_0x379784[_0x33de('0x57')]===_0x33de('0x58')){var _0x7112db=_0x5c91e7;return db[_0x33de('0x59')][_0x33de('0x4e')]({'where':{'name':_0x33de('0x29'),'userProfileId':_0x379784[_0x33de('0x5a')]},'raw':!![]})[_0x33de('0x28')](function(_0x5de12f){if(_0x5de12f&&_0x5de12f[_0x33de('0x5b')]===0x0){return db[_0x33de('0x2a')][_0x33de('0x51')]({'name':_0x7112db['name'],'resourceId':_0x7112db['id'],'type':_0x5de12f[_0x33de('0x2f')],'sectionId':_0x5de12f['id']},{})['then'](function(){return _0x5c91e7;});}else{return _0x5c91e7;}})['catch'](function(_0x4dae6d){logger['error'](_0x33de('0x5c'),_0x4dae6d);throw _0x4dae6d;});}return _0x5c91e7;})[_0x33de('0x28')](respondWithResult(_0x3fe65d,null))['catch'](handleError(_0x3fe65d,null));};function Extension(_0x397179,_0x232840,_0x56542f,_0x42c8b9){this[_0x33de('0x5d')]='from-sip';this[_0x33de('0x5e')]=_0x397179;this[_0x33de('0x5f')]=_0x56542f;this[_0x33de('0x42')]=_0x33de('0x60');this[_0x33de('0x61')]=_0x33de('0x62');this[_0x33de('0x63')]=_0x232840;this['appdata']=_0x42c8b9;}function createVoicePrefixExtensions(_0x533863,_0x409e2e,_0x49516d){return new BPromise(function(_0x2af340,_0x3eef03){var _0x4ca20f=new Extension(formatPrefixName(_0x533863[_0x33de('0x64')]),0x1,'NoOp',_0x33de('0x65'));_0x4ca20f[_0x33de('0x66')]=_0x533863['id'];return db['VoiceExtension']['create'](_0x4ca20f,{'transaction':_0x49516d})[_0x33de('0x28')](function(_0x1b2d6f){var _0x17845c=_0x1b2d6f[_0x33de('0x54')]({'plain':!![]});var _0x24d936=_['map'](addVoicePrefixExtensions(_0x533863,_0x409e2e),function(_0x221038){_0x221038[_0x33de('0x55')]=_0x17845c['id'];_0x221038['VoicePrefixId']=_0x533863['id'];return _0x221038;});return db[_0x33de('0x67')][_0x33de('0x68')](_0x24d936,{'transaction':_0x49516d})['then'](function(_0x151551){if(!_0x151551){return _0x3eef03(_0x33de('0x69'));}else{return _0x2af340(_0x151551);}})['catch'](function(_0x4aa203){return _0x3eef03(_0x4aa203);});});;});};function addVoicePrefixExtensions(_0xc2504a,_0x55d7ef){var _0x31a511=[];var _0x4803b8=formatPrefixName(_0xc2504a[_0x33de('0x64')]);_0x31a511['push'](new Extension(_0x4803b8,0x2,'Set','CDR(prefix)='+_0xc2504a['name']));if(_0xc2504a['callerIdAll']){_0x31a511['push'](new Extension(_0x4803b8,0x3,_0x33de('0x6a'),'PREFIX-CALLERIDALL='+_0xc2504a[_0x33de('0x6b')]));}else{_0x31a511['push'](new Extension(_0x4803b8,0x3,'NoOp',_0x33de('0x6c')));}_0x31a511[_0x33de('0x6d')](new Extension(_0x4803b8,0x4,_0x33de('0x6e'),_0x55d7ef[_0x33de('0x5d')]+','+_0x33de('0x6f')+(0x8+_0xc2504a[_0x33de('0x2f')][_0x33de('0x3b')])+'}'+','+0x1));return _0x31a511;}function formatPrefixName(_0x659652){var _0x4893d2='_';for(var _0x297a84=0x0;_0x297a84<_0x659652['length'];_0x297a84++){if(_0x659652[_0x33de('0x70')](_0x297a84)=='-'){_0x4893d2+=_0x659652[_0x33de('0x70')](_0x297a84);}else{_0x4893d2+='['+_0x659652[_0x33de('0x70')](_0x297a84)+']';}}_0x4893d2+='.';return _0x4893d2;}exports[_0x33de('0x27')]=function(_0x8a9729,_0x3f5d52,_0x2a6004){var _0x355b7d=_0x8a9729[_0x33de('0x53')];_0x355b7d[_0x33de('0x64')]=_0x33de('0x71')+_0x355b7d['name']+'-';return db['sequelize'][_0x33de('0x52')](function(_0x1179f6){return db[_0x33de('0x33')][_0x33de('0x27')](_0x355b7d,{'where':{'id':_0x355b7d['id']},'transaction':_0x1179f6})[_0x33de('0x28')](function(){return db[_0x33de('0x67')][_0x33de('0x2b')]({'where':{'VoicePrefixId':_0x355b7d['id']},'transaction':_0x1179f6})[_0x33de('0x28')](function(){return db[_0x33de('0x67')][_0x33de('0x4e')]({'where':{'id':_0x355b7d['VoiceExtensionId']},'raw':!![]})[_0x33de('0x28')](function(_0x43eb19){return createVoicePrefixExtensions(_0x355b7d,_0x43eb19,_0x1179f6);});});});})[_0x33de('0x28')](function(){return db[_0x33de('0x33')][_0x33de('0x72')](_0x355b7d['id']);})[_0x33de('0x28')](respondWithResult(_0x3f5d52,null))['catch'](handleError(_0x3f5d52,null));};exports['addAgents']=function(_0x558c26,_0x1370ac,_0x2d2b02){return db[_0x33de('0x33')][_0x33de('0x4e')]({'where':{'id':_0x558c26['params']['id']}})[_0x33de('0x28')](handleEntityNotFound(_0x1370ac,null))[_0x33de('0x28')](function(_0x484827){if(_0x484827){return _0x484827['addAgents'](_0x558c26['body'][_0x33de('0x73')],_[_0x33de('0x74')](_0x558c26[_0x33de('0x53')],[_0x33de('0x73'),'id'])||{})[_0x33de('0x75')](function(_0x545555){for(var _0x2e6389=0x0;_0x2e6389<_0x558c26['body'][_0x33de('0x73')][_0x33de('0x3b')];_0x2e6389+=0x1){socket['emit'](_0x33de('0x76'),{'UserId':Number(_0x558c26[_0x33de('0x53')]['ids'][_0x2e6389]),'VoicePrefixId':Number(_0x558c26[_0x33de('0x4f')]['id'])});}return _0x545555;});}})['then'](respondWithResult(_0x1370ac,null))['catch'](handleError(_0x1370ac,null));};exports[_0x33de('0x77')]=function(_0x2ef94d,_0x3fbbaf,_0x46e3d6){return db[_0x33de('0x33')]['find']({'where':{'id':_0x2ef94d[_0x33de('0x4f')]['id']}})[_0x33de('0x28')](handleEntityNotFound(_0x3fbbaf,null))[_0x33de('0x28')](function(_0x1e0637){if(_0x1e0637){return _0x1e0637['removeAgents'](_0x2ef94d[_0x33de('0x36')][_0x33de('0x73')])[_0x33de('0x28')](function(){if(_['isArray'](_0x2ef94d['query']['ids'])){for(var _0x586c51=0x0;_0x586c51<_0x2ef94d['query'][_0x33de('0x73')][_0x33de('0x3b')];_0x586c51+=0x1){socket['emit'](_0x33de('0x78'),{'UserId':Number(_0x2ef94d['query']['ids'][_0x586c51]),'VoicePrefixId':Number(_0x2ef94d[_0x33de('0x4f')]['id'])});}}else{socket[_0x33de('0x79')]('userVoicePrefix:remove',{'UserId':Number(_0x2ef94d[_0x33de('0x36')][_0x33de('0x73')]),'VoicePrefixId':Number(_0x2ef94d['params']['id'])});}});}})[_0x33de('0x28')](respondWithStatusCode(_0x3fbbaf,null))['catch'](handleError(_0x3fbbaf,null));};exports[_0x33de('0x7a')]=function(_0x1d060d,_0x487dac,_0x30d749){var _0x2cd94f={};var _0x53ec24={};var _0x4fa42c;var _0x130bbd;return db[_0x33de('0x33')][_0x33de('0x7b')]({'where':{'id':_0x1d060d[_0x33de('0x4f')]['id']}})[_0x33de('0x28')](handleEntityNotFound(_0x487dac,null))[_0x33de('0x28')](function(_0x4ef18b){if(_0x4ef18b){_0x4fa42c=_0x4ef18b;_0x53ec24[_0x33de('0x35')]=_[_0x33de('0x37')](db[_0x33de('0x7c')][_0x33de('0x4c')]);_0x53ec24[_0x33de('0x36')]=_[_0x33de('0x37')](_0x1d060d[_0x33de('0x36')]);_0x53ec24[_0x33de('0x38')]=_[_0x33de('0x4d')](_0x53ec24[_0x33de('0x35')],_0x53ec24[_0x33de('0x36')]);_0x2cd94f[_0x33de('0x39')]=_[_0x33de('0x4d')](_0x53ec24[_0x33de('0x35')],qs[_0x33de('0x3a')](_0x1d060d[_0x33de('0x36')]['fields']));_0x2cd94f[_0x33de('0x39')]=_0x2cd94f[_0x33de('0x39')][_0x33de('0x3b')]?_0x2cd94f[_0x33de('0x39')]:_0x53ec24[_0x33de('0x35')];_0x2cd94f['order']=qs[_0x33de('0x3f')](_0x1d060d[_0x33de('0x36')][_0x33de('0x3f')]);_0x2cd94f[_0x33de('0x40')]=qs[_0x33de('0x38')](_[_0x33de('0x41')](_0x1d060d[_0x33de('0x36')],_0x53ec24[_0x33de('0x38')]));if(_0x1d060d[_0x33de('0x36')][_0x33de('0x44')]){_0x2cd94f['where']=_['merge'](_0x2cd94f[_0x33de('0x40')],{'$or':_[_0x33de('0x32')](_0x2cd94f[_0x33de('0x39')],function(_0xa0b337){var _0x5b8928={};_0x5b8928[_0xa0b337]={'$like':'%'+_0x1d060d[_0x33de('0x36')][_0x33de('0x44')]+'%'};return _0x5b8928;})});}_0x2cd94f=_[_0x33de('0x45')]({},_0x2cd94f,_0x1d060d['options']);return _0x4fa42c['getAgents'](_0x2cd94f);}})[_0x33de('0x28')](function(_0xe6b940){if(_0xe6b940){_0x130bbd=_0xe6b940[_0x33de('0x3b')];if(!_0x1d060d['query'][_0x33de('0x3c')](_0x33de('0x3d'))){_0x2cd94f[_0x33de('0x22')]=qs['limit'](_0x1d060d[_0x33de('0x36')][_0x33de('0x22')]);_0x2cd94f['offset']=qs[_0x33de('0x1f')](_0x1d060d['query'][_0x33de('0x1f')]);}return _0x4fa42c[_0x33de('0x7a')](_0x2cd94f);}})['then'](function(_0x42546c){if(_0x42546c){return _0x42546c?{'count':_0x130bbd,'rows':_0x42546c}:null;}})[_0x33de('0x28')](respondWithResult(_0x487dac,null))[_0x33de('0x4a')](handleError(_0x487dac,null));};exports['getTeams']=function(_0x52b4e2,_0x48a039,_0xfb0042){var _0x5f46d7={};var _0x5817e3={};var _0x3df0d3;var _0xebf05f;return db[_0x33de('0x33')][_0x33de('0x7b')]({'where':{'id':_0x52b4e2['params']['id']}})[_0x33de('0x28')](handleEntityNotFound(_0x48a039,null))[_0x33de('0x28')](function(_0x27072a){if(_0x27072a){_0x3df0d3=_0x27072a;_0x5817e3['model']=_[_0x33de('0x37')](db[_0x33de('0x7d')][_0x33de('0x4c')]);_0x5817e3[_0x33de('0x36')]=_[_0x33de('0x37')](_0x52b4e2[_0x33de('0x36')]);_0x5817e3[_0x33de('0x38')]=_[_0x33de('0x4d')](_0x5817e3[_0x33de('0x35')],_0x5817e3[_0x33de('0x36')]);_0x5f46d7[_0x33de('0x39')]=_[_0x33de('0x4d')](_0x5817e3[_0x33de('0x35')],qs[_0x33de('0x3a')](_0x52b4e2[_0x33de('0x36')][_0x33de('0x3a')]));_0x5f46d7[_0x33de('0x39')]=_0x5f46d7[_0x33de('0x39')][_0x33de('0x3b')]?_0x5f46d7['attributes']:_0x5817e3[_0x33de('0x35')];_0x5f46d7[_0x33de('0x3e')]=qs[_0x33de('0x3f')](_0x52b4e2[_0x33de('0x36')][_0x33de('0x3f')]);_0x5f46d7['where']=qs[_0x33de('0x38')](_[_0x33de('0x41')](_0x52b4e2[_0x33de('0x36')],_0x5817e3[_0x33de('0x38')]));if(_0x52b4e2[_0x33de('0x36')][_0x33de('0x44')]){_0x5f46d7[_0x33de('0x40')]=_[_0x33de('0x45')](_0x5f46d7[_0x33de('0x40')],{'$or':_[_0x33de('0x32')](_0x5f46d7['attributes'],function(_0x3af223){var _0x258238={};_0x258238[_0x3af223]={'$like':'%'+_0x52b4e2['query'][_0x33de('0x44')]+'%'};return _0x258238;})});}_0x5f46d7=_[_0x33de('0x45')]({},_0x5f46d7,_0x52b4e2['options']);return _0x3df0d3['getTeams'](_0x5f46d7);}})['then'](function(_0x1f1bd4){if(_0x1f1bd4){_0xebf05f=_0x1f1bd4['length'];if(!_0x52b4e2[_0x33de('0x36')][_0x33de('0x3c')]('nolimit')){_0x5f46d7[_0x33de('0x22')]=qs['limit'](_0x52b4e2[_0x33de('0x36')][_0x33de('0x22')]);_0x5f46d7[_0x33de('0x1f')]=qs[_0x33de('0x1f')](_0x52b4e2[_0x33de('0x36')]['offset']);}return _0x3df0d3[_0x33de('0x7e')](_0x5f46d7);}})[_0x33de('0x28')](function(_0x24dcfe){if(_0x24dcfe){return _0x24dcfe?{'count':_0xebf05f,'rows':_0x24dcfe}:null;}})['then'](respondWithResult(_0x48a039,null))[_0x33de('0x4a')](handleError(_0x48a039,null));};exports[_0x33de('0x7f')]=function(_0x24af54,_0x2baee6,_0x56fadb){var _0x5ce00e=_0x24af54[_0x33de('0x53')][_0x33de('0x73')];var _0x2127ab;return db[_0x33de('0x7d')][_0x33de('0x48')]({'where':{'id':_0x5ce00e},'attributes':['id'],'include':[{'model':db[_0x33de('0x7c')],'as':_0x33de('0x80'),'attributes':['id',_0x33de('0x2f'),_0x33de('0x81'),_0x33de('0x82'),_0x33de('0x83')],'raw':!![]}]})[_0x33de('0x28')](function(_0x371e4d){if(_0x371e4d){_0x2127ab=_0x371e4d;var _0x17d367=_[_0x33de('0x84')](_0x371e4d,function(_0x21a70f){var _0x5e11f1=_0x21a70f[_0x33de('0x54')]({'plain':!![]});return _0x5e11f1[_0x33de('0x80')];});return db[_0x33de('0x33')][_0x33de('0x4e')]({'where':{'id':_0x24af54[_0x33de('0x4f')]['id']}})[_0x33de('0x28')](function(_0x5120f5){return db[_0x33de('0x85')][_0x33de('0x52')](function(_0x51b000){return _0x5120f5[_0x33de('0x7f')](_0x5ce00e,{'transaction':_0x51b000})[_0x33de('0x28')](function(){return BPromise[_0x33de('0x86')](_0x2127ab,function(_0x131d87){return db[_0x33de('0x87')][_0x33de('0x88')]({'TeamId':_0x131d87['id'],'VoicePrefixId':_0x24af54[_0x33de('0x4f')]['id']},{'transaction':_0x51b000});});})['then'](function(){return BPromise['each'](_0x17d367,function(_0x446257){return db[_0x33de('0x89')]['findOrCreate']({'where':{'UserId':_0x446257['id'],'VoicePrefixId':_0x24af54[_0x33de('0x4f')]['id']},'transaction':_0x51b000});});})[_0x33de('0x28')](function(){_0x17d367[_0x33de('0x8a')](function(_0xf06806){socket[_0x33de('0x79')]('userVoicePrefix:save',{'UserId':_0xf06806['id'],'VoicePrefixId':_0x5120f5['id']});});});});});}})[_0x33de('0x28')](respondWithStatusCode(_0x2baee6,null))[_0x33de('0x4a')](handleError(_0x2baee6,null));};exports[_0x33de('0x8b')]=function(_0x1f5872,_0x38d880,_0x40758b){return db[_0x33de('0x7d')][_0x33de('0x48')]({'where':{'id':_0x1f5872[_0x33de('0x36')][_0x33de('0x73')]},'attributes':['id'],'include':[{'model':db[_0x33de('0x7c')],'as':_0x33de('0x80'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x38d880,null))[_0x33de('0x28')](function(_0xd41b76){var _0x24fa73=_['map'](_0xd41b76,'id');var _0x93313d=[];var _0x3c854d=[];var _0x3e00b7=squel['select']();_0x3e00b7['field'](_0x33de('0x8c'))['from'](_0x33de('0x8d'),'tq')[_0x33de('0x8e')](_0x33de('0x8f'),'ut',_0x33de('0x90'))[_0x33de('0x40')](_0x33de('0x91'),_0x1f5872[_0x33de('0x4f')]['id']);for(var _0x23b8e9=0x0;_0x23b8e9<_0xd41b76[_0x33de('0x3b')];_0x23b8e9+=0x1){let _0x64836b=_0xd41b76[_0x23b8e9];for(var _0x72b745=0x0;_0x72b745<_0x64836b[_0x33de('0x80')]['length'];_0x72b745+=0x1){let _0x4eacef=_0x64836b[_0x33de('0x80')][_0x72b745];var _0x13cd17=_0x3e00b7[_0x33de('0x92')]();_0x13cd17[_0x33de('0x40')]('ut.UserId\x20=\x20?',_0x4eacef['id']);_0x3c854d[_0x33de('0x6d')](db['sequelize']['query'](_0x13cd17[_0x33de('0x93')](),{'type':db[_0x33de('0x85')][_0x33de('0x94')][_0x33de('0x95')]})[_0x33de('0x28')](function(_0x251b71){if(_0x251b71['length']===0x1){return _0x4eacef['id'];}else{var _0x341b23=_[_0x33de('0x96')](_[_0x33de('0x32')](_0x251b71,_0x33de('0x97')),function(_0x29eda7){return _[_0x33de('0x98')](_0x24fa73,_0x29eda7);});if(_0x341b23){return _0x4eacef['id'];}}}));}}return BPromise[_0x33de('0x99')](_0x3c854d)['then'](function(_0x572532){_0x93313d=_(_0x93313d)[_0x33de('0x9a')](_0x572532)[_0x33de('0x9b')]()[_0x33de('0x9c')]();return db[_0x33de('0x33')]['find']({'where':{'id':_0x1f5872[_0x33de('0x4f')]['id']}})[_0x33de('0x28')](function(_0x24edf8){return db['sequelize'][_0x33de('0x52')](function(_0x1ad90f){return _0x24edf8['removeTeams'](_0x1f5872['query'][_0x33de('0x73')],{'transaction':_0x1ad90f})[_0x33de('0x28')](function(){if(!_[_0x33de('0x9d')](_0x93313d)){return _0x24edf8['removeAgents'](_0x93313d,{'transaction':_0x1ad90f});}})[_0x33de('0x28')](function(){_0x93313d[_0x33de('0x8a')](function(_0x4d56df){socket[_0x33de('0x79')](_0x33de('0x78'),{'UserId':_0x4d56df,'VoicePrefixId':_0x24edf8['id']});});});});});});})['then'](respondWithStatusCode(_0x38d880,null))['catch'](handleError(_0x38d880,null));};
\ No newline at end of file
index bb445d5..521fa8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fd7=['hook','exports','VoicePrefix','setMaxListeners','update','remove','emit'];(function(_0x41770f,_0x2c79c8){var _0x5a107a=function(_0x51f921){while(--_0x51f921){_0x41770f['push'](_0x41770f['shift']());}};_0x5a107a(++_0x2c79c8);}(_0x2fd7,0x16e));var _0x72fd=function(_0x1d1c46,_0x2723ae){_0x1d1c46=_0x1d1c46-0x0;var _0x12d15f=_0x2fd7[_0x1d1c46];return _0x12d15f;};'use strict';var EventEmitter=require('events');var VoicePrefix=require('../../mysqldb')['db'][_0x72fd('0x0')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x72fd('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x72fd('0x2'),'afterDestroy':_0x72fd('0x3')};function emitEvent(_0x53bd2d){return function(_0x16f985,_0x50aa96,_0x4e298){VoicePrefixEvents[_0x72fd('0x4')](_0x53bd2d+':'+_0x16f985['id'],_0x16f985);VoicePrefixEvents[_0x72fd('0x4')](_0x53bd2d,_0x16f985);_0x4e298(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix[_0x72fd('0x5')](e,emitEvent(event));}}module[_0x72fd('0x6')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x1d6c=['emit','../../mysqldb','VoicePrefix','setMaxListeners','save','update','remove'];(function(_0x865d67,_0x1c1505){var _0x28c390=function(_0x33d44a){while(--_0x33d44a){_0x865d67['push'](_0x865d67['shift']());}};_0x28c390(++_0x1c1505);}(_0x1d6c,0x135));var _0xc1d6=function(_0x451e44,_0x2a4226){_0x451e44=_0x451e44-0x0;var _0x58f6ca=_0x1d6c[_0x451e44];return _0x58f6ca;};'use strict';var EventEmitter=require('events');var VoicePrefix=require(_0xc1d6('0x0'))['db'][_0xc1d6('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xc1d6('0x2')](0x0);var events={'afterCreate':_0xc1d6('0x3'),'afterUpdate':_0xc1d6('0x4'),'afterDestroy':_0xc1d6('0x5')};function emitEvent(_0x18509b){return function(_0x11a798,_0x5dc83e,_0x4521fe){VoicePrefixEvents[_0xc1d6('0x6')](_0x18509b+':'+_0x11a798['id'],_0x11a798);VoicePrefixEvents['emit'](_0x18509b,_0x11a798);_0x4521fe(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
index c622c23..a808b26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5766=['../../config/environment','define','VoicePrefix','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x5c697d,_0xe8128){var _0x17d8df=function(_0x412300){while(--_0x412300){_0x5c697d['push'](_0x5c697d['shift']());}};_0x17d8df(++_0xe8128);}(_0x5766,0x1d1));var _0x6576=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5766[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x6576('0x0'));var util=require(_0x6576('0x1'));var logger=require(_0x6576('0x2'))(_0x6576('0x3'));var moment=require(_0x6576('0x4'));var BPromise=require(_0x6576('0x5'));var rp=require(_0x6576('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6576('0x7'));var config=require(_0x6576('0x8'));var attributes=require('./voicePrefix.attributes');module['exports']=function(_0x598775,_0x435c73){return _0x598775[_0x6576('0x9')](_0x6576('0xa'),attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0d87=['moment','bluebird','request-promise','rimraf','../../config/environment','./voicePrefix.attributes','exports','define','VoicePrefix','lodash','util','api'];(function(_0x27995b,_0x57324f){var _0x3bf389=function(_0x215b16){while(--_0x215b16){_0x27995b['push'](_0x27995b['shift']());}};_0x3bf389(++_0x57324f);}(_0x0d87,0x1a1));var _0x70d8=function(_0xe7bc0a,_0x1501b9){_0xe7bc0a=_0xe7bc0a-0x0;var _0x18647b=_0x0d87[_0xe7bc0a];return _0x18647b;};'use strict';var _=require(_0x70d8('0x0'));var util=require(_0x70d8('0x1'));var logger=require('../../config/logger')(_0x70d8('0x2'));var moment=require(_0x70d8('0x3'));var BPromise=require(_0x70d8('0x4'));var rp=require(_0x70d8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x70d8('0x6'));var config=require(_0x70d8('0x7'));var attributes=require(_0x70d8('0x8'));module[_0x70d8('0x9')]=function(_0x178cc4,_0x290933){return _0x178cc4[_0x70d8('0xa')](_0x70d8('0xb'),attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 637d5ae..891c83a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0650=['debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','catch','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','defaults','redis','localhost','socket.io-emitter','./voicePrefix.socket','register','info','VoicePrefix,\x20%s,\x20%s'];(function(_0x291ec3,_0x2f19a7){var _0x423b99=function(_0x345ddd){while(--_0x345ddd){_0x291ec3['push'](_0x291ec3['shift']());}};_0x423b99(++_0x2f19a7);}(_0x0650,0xed));var _0x0065=function(_0x16fd68,_0x3d394d){_0x16fd68=_0x16fd68-0x0;var _0x12cf8e=_0x0650[_0x16fd68];return _0x12cf8e;};'use strict';var _=require(_0x0065('0x0'));var util=require('util');var moment=require(_0x0065('0x1'));var BPromise=require(_0x0065('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0065('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0065('0x4'));var logger=require(_0x0065('0x5'))(_0x0065('0x6'));var config=require('../../config/environment');var jayson=require(_0x0065('0x7'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x0065('0x8')](config[_0x0065('0x9')],{'host':_0x0065('0xa'),'port':0x18eb});var socket=require(_0x0065('0xb'))(new Redis(config[_0x0065('0x9')]));require(_0x0065('0xc'))[_0x0065('0xd')](socket);function respondWithRpcPromise(_0x3e96dd,_0x409066,_0x5907e4){return new BPromise(function(_0x2850c0,_0xda5ef2){return client['request'](_0x3e96dd,_0x5907e4)['then'](function(_0x4c8f33){logger[_0x0065('0xe')](_0x0065('0xf'),_0x409066,'request\x20sent');logger[_0x0065('0x10')](_0x0065('0x11'),_0x409066,'request\x20sent',JSON[_0x0065('0x12')](_0x4c8f33));if(_0x4c8f33[_0x0065('0x13')]){if(_0x4c8f33['error']['code']===0x1f4){logger[_0x0065('0x13')]('VoicePrefix,\x20%s,\x20%s',_0x409066,_0x4c8f33['error'][_0x0065('0x14')]);return _0xda5ef2(_0x4c8f33['error'][_0x0065('0x14')]);}logger['error'](_0x0065('0xf'),_0x409066,_0x4c8f33[_0x0065('0x13')][_0x0065('0x14')]);return _0x2850c0(_0x4c8f33[_0x0065('0x13')][_0x0065('0x14')]);}else{logger[_0x0065('0xe')](_0x0065('0xf'),_0x409066,_0x0065('0x15'));_0x2850c0(_0x4c8f33['result'][_0x0065('0x14')]);}})[_0x0065('0x16')](function(_0x49de99){logger[_0x0065('0x13')](_0x0065('0xf'),_0x409066,_0x49de99);_0xda5ef2(_0x49de99);});});}
\ No newline at end of file
+var _0x677a=['VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','register','request','then','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1aa41f,_0x2a44c9){var _0x1c9b20=function(_0x17b4bd){while(--_0x17b4bd){_0x1aa41f['push'](_0x1aa41f['shift']());}};_0x1c9b20(++_0x2a44c9);}(_0x677a,0xd6));var _0xa677=function(_0x1a9018,_0x2fe613){_0x1a9018=_0x1a9018-0x0;var _0x2f2006=_0x677a[_0x1a9018];return _0x2f2006;};'use strict';var _=require(_0xa677('0x0'));var util=require('util');var moment=require(_0xa677('0x1'));var BPromise=require(_0xa677('0x2'));var rs=require(_0xa677('0x3'));var fs=require('fs');var Redis=require(_0xa677('0x4'));var db=require(_0xa677('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xa677('0x6'))(_0xa677('0x7'));var config=require(_0xa677('0x8'));var jayson=require(_0xa677('0x9'));var client=jayson[_0xa677('0xa')]['http']({'port':0x232a});config[_0xa677('0xb')]=_[_0xa677('0xc')](config[_0xa677('0xb')],{'host':_0xa677('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./voicePrefix.socket')[_0xa677('0xe')](socket);function respondWithRpcPromise(_0x4c9e8c,_0x3e5e2c,_0x1d6586){return new BPromise(function(_0x5d2451,_0xead831){return client[_0xa677('0xf')](_0x4c9e8c,_0x1d6586)[_0xa677('0x10')](function(_0x96f98d){logger['info'](_0xa677('0x11'),_0x3e5e2c,_0xa677('0x12'));logger[_0xa677('0x13')](_0xa677('0x14'),_0x3e5e2c,'request\x20sent',JSON[_0xa677('0x15')](_0x96f98d));if(_0x96f98d['error']){if(_0x96f98d[_0xa677('0x16')][_0xa677('0x17')]===0x1f4){logger[_0xa677('0x16')](_0xa677('0x11'),_0x3e5e2c,_0x96f98d[_0xa677('0x16')][_0xa677('0x18')]);return _0xead831(_0x96f98d[_0xa677('0x16')][_0xa677('0x18')]);}logger[_0xa677('0x16')](_0xa677('0x11'),_0x3e5e2c,_0x96f98d[_0xa677('0x16')][_0xa677('0x18')]);return _0x5d2451(_0x96f98d[_0xa677('0x16')][_0xa677('0x18')]);}else{logger['info'](_0xa677('0x11'),_0x3e5e2c,_0xa677('0x12'));_0x5d2451(_0x96f98d['result']['message']);}})[_0xa677('0x19')](function(_0x73350){logger[_0xa677('0x16')](_0xa677('0x11'),_0x3e5e2c,_0x73350);_0xead831(_0x73350);});});}
\ No newline at end of file
index 2a27da5..2d5a976 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc4a=['voicePrefix:','./voicePrefix.events','save','remove','removeListener','register','length'];(function(_0x104e21,_0x2ea86f){var _0x605b37=function(_0x580fce){while(--_0x580fce){_0x104e21['push'](_0x104e21['shift']());}};_0x605b37(++_0x2ea86f);}(_0xbc4a,0x1dd));var _0xabc4=function(_0xcb0d57,_0x196f3f){_0xcb0d57=_0xcb0d57-0x0;var _0x8cc03f=_0xbc4a[_0xcb0d57];return _0x8cc03f;};'use strict';var VoicePrefixEvents=require(_0xabc4('0x0'));var events=[_0xabc4('0x1'),_0xabc4('0x2'),'update'];function createListener(_0x497e18,_0x4d2996){return function(_0x4fc0f9){_0x4d2996['emit'](_0x497e18,_0x4fc0f9);};}function removeListener(_0x145a9d,_0x4e84f9){return function(){VoicePrefixEvents[_0xabc4('0x3')](_0x145a9d,_0x4e84f9);};}exports[_0xabc4('0x4')]=function(_0x282a1e){for(var _0x422903=0x0,_0x244d3a=events[_0xabc4('0x5')];_0x422903<_0x244d3a;_0x422903++){var _0x244a46=events[_0x422903];var _0x28ea0b=createListener(_0xabc4('0x6')+_0x244a46,_0x282a1e);VoicePrefixEvents['on'](_0x244a46,_0x28ea0b);}};
\ No newline at end of file
+var _0x2182=['./voicePrefix.events','save','remove','update','emit','removeListener','register','length','voicePrefix:'];(function(_0x3995fd,_0x2b18bb){var _0x201c4b=function(_0x1a9ab8){while(--_0x1a9ab8){_0x3995fd['push'](_0x3995fd['shift']());}};_0x201c4b(++_0x2b18bb);}(_0x2182,0xea));var _0x2218=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x2182[_0x3b380d];return _0x54502b;};'use strict';var VoicePrefixEvents=require(_0x2218('0x0'));var events=[_0x2218('0x1'),_0x2218('0x2'),_0x2218('0x3')];function createListener(_0x564b8e,_0x41395e){return function(_0x591036){_0x41395e[_0x2218('0x4')](_0x564b8e,_0x591036);};}function removeListener(_0x2ebe23,_0x3348af){return function(){VoicePrefixEvents[_0x2218('0x5')](_0x2ebe23,_0x3348af);};}exports[_0x2218('0x6')]=function(_0x1e2df1){for(var _0x199cb3=0x0,_0x22eab9=events[_0x2218('0x7')];_0x199cb3<_0x22eab9;_0x199cb3++){var _0x29e762=events[_0x199cb3];var _0x4b3bd1=createListener(_0x2218('0x8')+_0x29e762,_0x1e2df1);VoicePrefixEvents['on'](_0x29e762,_0x4b3bd1);}};
\ No newline at end of file
index 31add72..e656e8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ed0=['/:id/clone','clone','addTeams','addAgents','addBlackLists','/:id','update','destroy','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','index','get','isAuthenticated','/:id/hoppers','getHopperHistories','/:id/hopper_finals','/:id/hopper_black','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','/:id/lists','/:id/blacklists','getBlackLists','post'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0x5ed0,0xe6));var _0x05ed=function(_0x153da2,_0x451e54){_0x153da2=_0x153da2-0x0;var _0x181311=_0x5ed0[_0x153da2];return _0x181311;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x05ed('0x0'));var router=express['Router']();var fs_extra=require(_0x05ed('0x1'));var auth=require(_0x05ed('0x2'));var interaction=require(_0x05ed('0x3'));var config=require(_0x05ed('0x4'));var controller=require(_0x05ed('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0x05ed('0x6')]);router[_0x05ed('0x7')]('/:id',auth[_0x05ed('0x8')](),controller['show']);router[_0x05ed('0x7')](_0x05ed('0x9'),auth['isAuthenticated'](),controller['getHoppers']);router[_0x05ed('0x7')]('/:id/hopper_histories',auth[_0x05ed('0x8')](),controller[_0x05ed('0xa')]);router[_0x05ed('0x7')](_0x05ed('0xb'),auth['isAuthenticated'](),controller['getHopperFinals']);router['get'](_0x05ed('0xc'),auth[_0x05ed('0x8')](),controller['getHopperBlacks']);router['get'](_0x05ed('0xd'),auth[_0x05ed('0x8')](),controller[_0x05ed('0xe')]);router[_0x05ed('0x7')](_0x05ed('0xf'),auth[_0x05ed('0x8')](),controller[_0x05ed('0x10')]);router[_0x05ed('0x7')](_0x05ed('0x11'),auth['isAuthenticated'](),controller['getMembers']);router[_0x05ed('0x7')](_0x05ed('0x12'),auth['isAuthenticated'](),controller['getLists']);router[_0x05ed('0x7')](_0x05ed('0x13'),auth[_0x05ed('0x8')](),controller[_0x05ed('0x14')]);router[_0x05ed('0x15')]('/',auth[_0x05ed('0x8')](),controller['create']);router[_0x05ed('0x15')](_0x05ed('0x16'),auth['isAuthenticated'](),controller[_0x05ed('0x17')]);router[_0x05ed('0x15')](_0x05ed('0xd'),auth['isAuthenticated'](),controller[_0x05ed('0x18')]);router[_0x05ed('0x15')](_0x05ed('0xf'),auth[_0x05ed('0x8')](),controller[_0x05ed('0x19')]);router['post'](_0x05ed('0x12'),auth[_0x05ed('0x8')](),controller['addLists']);router['post'](_0x05ed('0x13'),auth['isAuthenticated'](),controller[_0x05ed('0x1a')]);router['put'](_0x05ed('0x1b'),auth[_0x05ed('0x8')](),controller[_0x05ed('0x1c')]);router['delete'](_0x05ed('0x1b'),auth[_0x05ed('0x8')](),controller[_0x05ed('0x1d')]);router[_0x05ed('0x1e')]('/:id/teams',auth[_0x05ed('0x8')](),controller[_0x05ed('0x1f')]);router[_0x05ed('0x1e')]('/:id/users',auth[_0x05ed('0x8')](),controller[_0x05ed('0x20')]);router[_0x05ed('0x1e')](_0x05ed('0x12'),auth[_0x05ed('0x8')](),controller[_0x05ed('0x21')]);router[_0x05ed('0x1e')]('/:id/blacklists',auth[_0x05ed('0x8')](),controller[_0x05ed('0x22')]);module[_0x05ed('0x23')]=router;
\ No newline at end of file
+var _0x004c=['Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','getHopperHistories','/:id/hopper_finals','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','addAgents','addLists','put','update','delete','removeTeams','removeBlackLists','exports','path','connect-timeout','express'];(function(_0x397167,_0xa6ecce){var _0x47baeb=function(_0x592ded){while(--_0x592ded){_0x397167['push'](_0x397167['shift']());}};_0x47baeb(++_0xa6ecce);}(_0x004c,0x1de));var _0xc004=function(_0x346737,_0x3e6081){_0x346737=_0x346737-0x0;var _0x1ade2e=_0x004c[_0x346737];return _0x1ade2e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc004('0x0'));var timeout=require(_0xc004('0x1'));var express=require(_0xc004('0x2'));var router=express[_0xc004('0x3')]();var fs_extra=require(_0xc004('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xc004('0x5'));var config=require(_0xc004('0x6'));var controller=require('./voiceQueue.controller');router[_0xc004('0x7')]('/',auth[_0xc004('0x8')](),controller[_0xc004('0x9')]);router[_0xc004('0x7')](_0xc004('0xa'),auth[_0xc004('0x8')](),controller[_0xc004('0xb')]);router[_0xc004('0x7')](_0xc004('0xc'),auth[_0xc004('0x8')](),controller[_0xc004('0xd')]);router[_0xc004('0x7')]('/:id/hopper_histories',auth[_0xc004('0x8')](),controller[_0xc004('0xe')]);router[_0xc004('0x7')](_0xc004('0xf'),auth['isAuthenticated'](),controller['getHopperFinals']);router[_0xc004('0x7')](_0xc004('0x10'),auth['isAuthenticated'](),controller[_0xc004('0x11')]);router[_0xc004('0x7')](_0xc004('0x12'),auth[_0xc004('0x8')](),controller['getTeams']);router[_0xc004('0x7')](_0xc004('0x13'),auth[_0xc004('0x8')](),controller[_0xc004('0x14')]);router[_0xc004('0x7')](_0xc004('0x15'),auth[_0xc004('0x8')](),controller[_0xc004('0x16')]);router['get'](_0xc004('0x17'),auth[_0xc004('0x8')](),controller[_0xc004('0x18')]);router[_0xc004('0x7')](_0xc004('0x19'),auth[_0xc004('0x8')](),controller[_0xc004('0x1a')]);router[_0xc004('0x1b')]('/',auth['isAuthenticated'](),controller[_0xc004('0x1c')]);router['post']('/:id/clone',auth[_0xc004('0x8')](),controller['clone']);router['post']('/:id/teams',auth[_0xc004('0x8')](),controller['addTeams']);router[_0xc004('0x1b')]('/:id/users',auth[_0xc004('0x8')](),controller[_0xc004('0x1d')]);router[_0xc004('0x1b')](_0xc004('0x17'),auth[_0xc004('0x8')](),controller[_0xc004('0x1e')]);router[_0xc004('0x1b')](_0xc004('0x19'),auth[_0xc004('0x8')](),controller['addBlackLists']);router[_0xc004('0x1f')](_0xc004('0xa'),auth[_0xc004('0x8')](),controller[_0xc004('0x20')]);router[_0xc004('0x21')](_0xc004('0xa'),auth[_0xc004('0x8')](),controller['destroy']);router[_0xc004('0x21')](_0xc004('0x12'),auth['isAuthenticated'](),controller[_0xc004('0x22')]);router[_0xc004('0x21')](_0xc004('0x13'),auth['isAuthenticated'](),controller['removeAgents']);router[_0xc004('0x21')]('/:id/lists',auth[_0xc004('0x8')](),controller['removeLists']);router['delete'](_0xc004('0x19'),auth['isAuthenticated'](),controller[_0xc004('0x23')]);module[_0xc004('0x24')]=router;
\ No newline at end of file
index 1b5ffaf..c7e950e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc97=['inbound','default','ringall','fewestcalls','linear','wrandom','rrordered','strategy','rrmemory','getDataValue','type','booked','roundrobin','progressive','predictive','power','INTEGER','yes','once','TEXT','setDataValue','joinempty','join','leavewhenempty','split','acw','wrapuptime','BOOLEAN','Active/Disactive\x20Campaign','preview','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','onlyIfOpen','always','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','ENUM','outbound'];(function(_0x19fc44,_0x4bca56){var _0x3414ec=function(_0x696b3d){while(--_0x696b3d){_0x19fc44['push'](_0x19fc44['shift']());}};_0x3414ec(++_0x4bca56);}(_0xdc97,0x13b));var _0x7dc9=function(_0x1fc75a,_0x38f324){_0x1fc75a=_0x1fc75a-0x0;var _0x2e6b54=_0xdc97[_0x1fc75a];return _0x2e6b54;};'use strict';var Sequelize=require(_0x7dc9('0x0'));module[_0x7dc9('0x1')]={'name':{'type':Sequelize[_0x7dc9('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x7dc9('0x3')]('inbound',_0x7dc9('0x4')),'allowNull':![],'defaultValue':_0x7dc9('0x5')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':_0x7dc9('0x6')},'announce':{'type':Sequelize[_0x7dc9('0x2')],'defaultValue':''},'strategy':{'type':Sequelize[_0x7dc9('0x3')]('rr',_0x7dc9('0x7'),'leastrecent',_0x7dc9('0x8'),'random','rrmemory',_0x7dc9('0x9'),_0x7dc9('0xa'),_0x7dc9('0xb')),'allowNull':![],'defaultValue':_0x7dc9('0x7'),'set':function(_0x3dd07e){this['setDataValue'](_0x7dc9('0xc'),_0x3dd07e?_0x3dd07e:_0x7dc9('0xd'));},'get':function(){var _0x37dfc=this[_0x7dc9('0xe')](_0x7dc9('0xf'));var _0x3c2af5=this[_0x7dc9('0xe')]('dialMethod');var _0x4b47d0=this['getDataValue']('strategy');if(_0x37dfc===_0x7dc9('0x5')){return _0x4b47d0;}if(_0x3c2af5===_0x7dc9('0x10')&&_0x4b47d0==='rrmemory'||_0x3c2af5===_0x7dc9('0x10')&&_0x4b47d0===_0x7dc9('0x11')){return _0x4b47d0;}if(_0x3c2af5===_0x7dc9('0x12')||_0x3c2af5===_0x7dc9('0x13')||_0x3c2af5===_0x7dc9('0x14')){return _0x4b47d0;}return null;}},'servicelevel':{'type':Sequelize[_0x7dc9('0x15')](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x7dc9('0x15')](0xb)},'timeout':{'type':Sequelize[_0x7dc9('0x15')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x7dc9('0x15')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x7dc9('0x2')]},'weight':{'type':Sequelize[_0x7dc9('0x15')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x7dc9('0x15')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x7dc9('0x3')](_0x7dc9('0x16'),'no'),'defaultValue':_0x7dc9('0x16')},'autopause':{'type':Sequelize['ENUM'](_0x7dc9('0x16'),'no','all'),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x7dc9('0x15')](0xb)},'autopausebusy':{'type':Sequelize[_0x7dc9('0x3')]('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x7dc9('0x3')](_0x7dc9('0x16'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x7dc9('0x15')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x7dc9('0x3')](_0x7dc9('0x16'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x7dc9('0x3')](_0x7dc9('0x16'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x7dc9('0x3')](_0x7dc9('0x16'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x7dc9('0x3')]('yes','no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x7dc9('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x7dc9('0x15')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x7dc9('0x15')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x7dc9('0x3')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x7dc9('0x3')](_0x7dc9('0x16'),'no'),'defaultValue':_0x7dc9('0x16')},'announce_holdtime':{'type':Sequelize['ENUM'](_0x7dc9('0x16'),'no',_0x7dc9('0x17')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x7dc9('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize['ENUM']('yes','no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0x7dc9('0x3')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x7dc9('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x7dc9('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize['STRING'],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x7dc9('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x7dc9('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x7dc9('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x7dc9('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x7dc9('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x7dc9('0x2')]},'queue_quantity1':{'type':Sequelize[_0x7dc9('0x2')]},'queue_quantity2':{'type':Sequelize[_0x7dc9('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0x7dc9('0x2')]},'queue_less_than':{'type':Sequelize[_0x7dc9('0x2')]},'periodic_announce':{'type':Sequelize[_0x7dc9('0x18')],'set':function(_0x2a456c){this['setDataValue']('periodic_announce',_0x2a456c?_0x2a456c['join'](','):[]);},'get':function(){return this['getDataValue']('periodic_announce')?this['getDataValue']('periodic_announce')['split'](','):[];}},'joinempty':{'type':Sequelize[_0x7dc9('0x2')],'defaultValue':_0x7dc9('0x16'),'set':function(_0x29dcef){this[_0x7dc9('0x19')](_0x7dc9('0x1a'),_0x29dcef?_0x29dcef[_0x7dc9('0x1b')](','):undefined);},'get':function(){return this['getDataValue']('joinempty')?this['getDataValue'](_0x7dc9('0x1a'))['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x7dc9('0x2')],'defaultValue':'no','set':function(_0x448e46){this[_0x7dc9('0x19')](_0x7dc9('0x1c'),_0x448e46?_0x448e46[_0x7dc9('0x1b')](','):undefined);},'get':function(){return this[_0x7dc9('0xe')](_0x7dc9('0x1c'))?this[_0x7dc9('0xe')]('leavewhenempty')[_0x7dc9('0x1d')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0x7dc9('0x16'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x7dc9('0x3')](_0x7dc9('0x16'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x7dc9('0x15')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM'](_0x7dc9('0x16'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7dc9('0x2')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x590bed){this[_0x7dc9('0x19')](_0x7dc9('0x1e'),_0x590bed);if(_0x590bed){if(this[_0x7dc9('0xe')](_0x7dc9('0x1f'))<0x2){this['setDataValue'](_0x7dc9('0x1f'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x7dc9('0x15')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x7dc9('0x20')],'defaultValue':0x0,'comment':_0x7dc9('0x21')},'dialMethod':{'type':Sequelize[_0x7dc9('0x3')](_0x7dc9('0x22'),_0x7dc9('0x12'),_0x7dc9('0x14'),_0x7dc9('0x13'),_0x7dc9('0x10')),'defaultValue':_0x7dc9('0x12'),'comment':_0x7dc9('0x23')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)[_0x7dc9('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x7dc9('0x25')},'dialLimitQueue':{'type':Sequelize[_0x7dc9('0x15')](0x4)[_0x7dc9('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'},'dialPowerLevel':{'type':Sequelize[_0x7dc9('0x26')](0x2)[_0x7dc9('0x24')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x7dc9('0x27')},'dialPredictiveOptimization':{'type':Sequelize[_0x7dc9('0x3')](_0x7dc9('0x28'),_0x7dc9('0x29')),'defaultValue':'dropRate','comment':'Only\x20for\x20predictive\x20method.'},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x7dc9('0x26')](0x2)[_0x7dc9('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0x7dc9('0x15')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x7dc9('0x2a')},'dialOriginateCallerIdName':{'type':Sequelize[_0x7dc9('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x7dc9('0x2')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x7dc9('0x24')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7dc9('0x2b')},'dialQueueOptions':{'type':Sequelize[_0x7dc9('0x2')],'defaultValue':_0x7dc9('0x2c'),'comment':_0x7dc9('0x2d')},'dialQueueTimeout':{'type':Sequelize[_0x7dc9('0x15')](0x3)[_0x7dc9('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0x7dc9('0x2')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x7dc9('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7dc9('0x2e')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x7dc9('0x15')](0x5)[_0x7dc9('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7dc9('0x2f')},'dialBusyMaxRetry':{'type':Sequelize[_0x7dc9('0x15')](0x3)[_0x7dc9('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7dc9('0x30')},'dialBusyRetryFrequency':{'type':Sequelize[_0x7dc9('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7dc9('0x31')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x7dc9('0x15')](0x3)[_0x7dc9('0x24')],'defaultValue':0x3,'comment':_0x7dc9('0x32')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x7dc9('0x15')](0x5)[_0x7dc9('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0x7dc9('0x15')](0x3)[_0x7dc9('0x24')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0x7dc9('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x7dc9('0x2')],'defaultValue':_0x7dc9('0x33')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x7dc9('0x3')]('always','never',_0x7dc9('0x34')),'defaultValue':_0x7dc9('0x35')},'dialAMDActive':{'type':Sequelize[_0x7dc9('0x20')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x7dc9('0x24')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x7dc9('0x15')](0x9)[_0x7dc9('0x24')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x7dc9('0x15')](0x9)[_0x7dc9('0x24')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x7dc9('0x36')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x7dc9('0x15')](0x9)[_0x7dc9('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x7dc9('0x37')},'dialAMDMinWordLength':{'type':Sequelize[_0x7dc9('0x15')](0x9)[_0x7dc9('0x24')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x7dc9('0x38')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x7dc9('0x15')](0x9)[_0x7dc9('0x24')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x7dc9('0x39')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x7dc9('0x15')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x7dc9('0x3a')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x7dc9('0x3b')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x7dc9('0x15')](0x9)[_0x7dc9('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x7dc9('0x3c')},'dialRecallMeTimeout':{'type':Sequelize[_0x7dc9('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x7dc9('0x3d')},'dialRecallInQueue':{'type':Sequelize[_0x7dc9('0x20')],'defaultValue':0x0,'comment':_0x7dc9('0x3e')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0x7dc9('0x3f'),_0x7dc9('0x40')),'defaultValue':_0x7dc9('0x3f')},'dialQueueProject2':{'type':Sequelize[_0x7dc9('0x2')],'comment':_0x7dc9('0x41')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x7dc9('0x20')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x7dc9('0x15')](0x3)[_0x7dc9('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x7dc9('0x42')},'dialCutDigit':{'type':Sequelize[_0x7dc9('0x15')](0x3)[_0x7dc9('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x7dc9('0x43')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x7dc9('0x15')](0x3)[_0x7dc9('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7dc9('0x44')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x7dc9('0x15')](0x5)[_0x7dc9('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7dc9('0x45')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x7dc9('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7dc9('0x46')},'dialDropRetryFrequency':{'type':Sequelize[_0x7dc9('0x15')](0x5)[_0x7dc9('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7dc9('0x47')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x7dc9('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7dc9('0x48')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x7dc9('0x15')](0x5)[_0x7dc9('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7dc9('0x49')},'dialMachineMaxRetry':{'type':Sequelize[_0x7dc9('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x7dc9('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7dc9('0x4a')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x7dc9('0x15')](0x3)[_0x7dc9('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x7dc9('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7dc9('0x4b')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x7dc9('0x15')],'allowNull':!![],'comment':_0x7dc9('0x4c')},'mandatoryDisposition':{'type':Sequelize[_0x7dc9('0x20')],'defaultValue':![],'comment':_0x7dc9('0x4d'),'set':function(_0x1318fc){if(!_0x1318fc)this['setDataValue'](_0x7dc9('0x4e'),null);this[_0x7dc9('0x19')](_0x7dc9('0x4f'),_0x1318fc);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x7dc9('0x15')](0x3)[_0x7dc9('0x24')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0x7dc9('0x24')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
+var _0x1d99=['#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','ENUM','inbound','outbound','ringall','leastrecent','fewestcalls','random','rrmemory','wrandom','rrordered','setDataValue','strategy','getDataValue','type','dialMethod','booked','roundrobin','progressive','predictive','INTEGER','yes','all','TEXT','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','wrapuptime','preview','power','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1d99,0xaa));var _0x91d9=function(_0x2774e0,_0x7ed3a5){_0x2774e0=_0x2774e0-0x0;var _0x24e036=_0x1d99[_0x2774e0];return _0x24e036;};'use strict';var Sequelize=require(_0x91d9('0x0'));module[_0x91d9('0x1')]={'name':{'type':Sequelize[_0x91d9('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x91d9('0x3')](_0x91d9('0x4'),_0x91d9('0x5')),'allowNull':![],'defaultValue':_0x91d9('0x4')},'musiconhold':{'type':Sequelize[_0x91d9('0x2')],'defaultValue':'default'},'announce':{'type':Sequelize[_0x91d9('0x2')],'defaultValue':''},'strategy':{'type':Sequelize[_0x91d9('0x3')]('rr',_0x91d9('0x6'),_0x91d9('0x7'),_0x91d9('0x8'),_0x91d9('0x9'),_0x91d9('0xa'),'linear',_0x91d9('0xb'),_0x91d9('0xc')),'allowNull':![],'defaultValue':_0x91d9('0x6'),'set':function(_0x46dc9c){this[_0x91d9('0xd')](_0x91d9('0xe'),_0x46dc9c?_0x46dc9c:_0x91d9('0xa'));},'get':function(){var _0x15c926=this[_0x91d9('0xf')](_0x91d9('0x10'));var _0x212402=this[_0x91d9('0xf')](_0x91d9('0x11'));var _0xd4c155=this['getDataValue'](_0x91d9('0xe'));if(_0x15c926===_0x91d9('0x4')){return _0xd4c155;}if(_0x212402===_0x91d9('0x12')&&_0xd4c155===_0x91d9('0xa')||_0x212402==='booked'&&_0xd4c155===_0x91d9('0x13')){return _0xd4c155;}if(_0x212402===_0x91d9('0x14')||_0x212402===_0x91d9('0x15')||_0x212402==='power'){return _0xd4c155;}return null;}},'servicelevel':{'type':Sequelize[_0x91d9('0x16')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x91d9('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize[_0x91d9('0x16')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x91d9('0x16')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x91d9('0x2')]},'weight':{'type':Sequelize[_0x91d9('0x16')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x91d9('0x16')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize['ENUM'](_0x91d9('0x17'),'no'),'defaultValue':_0x91d9('0x17')},'autopause':{'type':Sequelize[_0x91d9('0x3')](_0x91d9('0x17'),'no',_0x91d9('0x18')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize[_0x91d9('0x3')](_0x91d9('0x17'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x91d9('0x3')]('yes','no'),'defaultValue':'no'},'maxlen':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x91d9('0x3')]('yes','no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize['ENUM'](_0x91d9('0x17'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x91d9('0x3')](_0x91d9('0x17'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x91d9('0x3')](_0x91d9('0x17'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x91d9('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x91d9('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x91d9('0x16')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x91d9('0x16')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x91d9('0x3')](_0x91d9('0x17'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x91d9('0x3')](_0x91d9('0x17'),'no'),'defaultValue':_0x91d9('0x17')},'announce_holdtime':{'type':Sequelize[_0x91d9('0x3')]('yes','no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x91d9('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x91d9('0x3')]('yes','no')},'announce_position_limit':{'type':Sequelize[_0x91d9('0x16')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x91d9('0x3')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize['STRING'],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x91d9('0x2')]},'queue_youarenext':{'type':Sequelize[_0x91d9('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x91d9('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize['STRING'],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x91d9('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x91d9('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize['STRING']},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize[_0x91d9('0x2')]},'queue_periodic_announce':{'type':Sequelize['STRING']},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize[_0x91d9('0x19')],'set':function(_0xd50f4f){this['setDataValue'](_0x91d9('0x1a'),_0xd50f4f?_0xd50f4f[_0x91d9('0x1b')](','):[]);},'get':function(){return this[_0x91d9('0xf')](_0x91d9('0x1a'))?this['getDataValue'](_0x91d9('0x1a'))[_0x91d9('0x1c')](','):[];}},'joinempty':{'type':Sequelize[_0x91d9('0x2')],'defaultValue':'yes','set':function(_0x347ff5){this[_0x91d9('0xd')](_0x91d9('0x1d'),_0x347ff5?_0x347ff5[_0x91d9('0x1b')](','):undefined);},'get':function(){return this['getDataValue'](_0x91d9('0x1d'))?this[_0x91d9('0xf')](_0x91d9('0x1d'))[_0x91d9('0x1c')](','):undefined;}},'leavewhenempty':{'type':Sequelize['STRING'],'defaultValue':'no','set':function(_0x30f5e7){this[_0x91d9('0xd')](_0x91d9('0x1e'),_0x30f5e7?_0x30f5e7[_0x91d9('0x1b')](','):undefined);},'get':function(){return this[_0x91d9('0xf')](_0x91d9('0x1e'))?this['getDataValue'](_0x91d9('0x1e'))[_0x91d9('0x1c')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x91d9('0x3')]('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize['ENUM'](_0x91d9('0x17'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x91d9('0x3')](_0x91d9('0x17'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x91d9('0x2')]},'description':{'type':Sequelize[_0x91d9('0x2')]},'acw':{'type':Sequelize[_0x91d9('0x1f')],'defaultValue':0x0,'set':function(_0x37a18e){this['setDataValue']('acw',_0x37a18e);if(_0x37a18e){if(this[_0x91d9('0xf')](_0x91d9('0x20'))<0x2){this[_0x91d9('0xd')](_0x91d9('0x20'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x91d9('0x16')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x91d9('0x1f')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0x91d9('0x3')](_0x91d9('0x21'),'progressive',_0x91d9('0x22'),_0x91d9('0x15'),'booked'),'defaultValue':'progressive','comment':_0x91d9('0x23')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)[_0x91d9('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x91d9('0x25')},'dialLimitQueue':{'type':Sequelize[_0x91d9('0x16')](0x4)[_0x91d9('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x91d9('0x26')},'dialPowerLevel':{'type':Sequelize[_0x91d9('0x27')](0x2)[_0x91d9('0x24')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x91d9('0x28')},'dialPredictiveOptimization':{'type':Sequelize[_0x91d9('0x3')](_0x91d9('0x29'),'dropRate'),'defaultValue':_0x91d9('0x2a'),'comment':'Only\x20for\x20predictive\x20method.'},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x91d9('0x27')](0x2)[_0x91d9('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x91d9('0x2b')},'dialPredictiveInterval':{'type':Sequelize[_0x91d9('0x16')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x91d9('0x2c')},'dialOriginateCallerIdName':{'type':Sequelize[_0x91d9('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x91d9('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x91d9('0x16')](0x3)[_0x91d9('0x24')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x91d9('0x2d')},'dialQueueOptions':{'type':Sequelize[_0x91d9('0x2')],'defaultValue':'tTxX','comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x91d9('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0x91d9('0x2')],'comment':_0x91d9('0x2e')},'dialCongestionMaxRetry':{'type':Sequelize[_0x91d9('0x16')](0x3)[_0x91d9('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x91d9('0x2f')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x91d9('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x91d9('0x30')},'dialBusyMaxRetry':{'type':Sequelize[_0x91d9('0x16')](0x3)[_0x91d9('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x91d9('0x31')},'dialBusyRetryFrequency':{'type':Sequelize[_0x91d9('0x16')](0x5)[_0x91d9('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x91d9('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x91d9('0x16')](0x5)[_0x91d9('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x91d9('0x32')},'dialGlobalMaxRetry':{'type':Sequelize[_0x91d9('0x16')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x91d9('0x33')},'dialTimezone':{'type':Sequelize[_0x91d9('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x91d9('0x2')],'defaultValue':'07:00-22:00,*,*,*'},'dialPrefix':{'type':Sequelize[_0x91d9('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x91d9('0x3')](_0x91d9('0x34'),_0x91d9('0x35'),_0x91d9('0x36')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0x91d9('0x1f')],'defaultValue':0x0,'comment':_0x91d9('0x37')},'dialAMDInitialSilence':{'type':Sequelize[_0x91d9('0x16')](0x9)[_0x91d9('0x24')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x91d9('0x16')](0x9)[_0x91d9('0x24')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x91d9('0x38')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x91d9('0x16')](0x9)[_0x91d9('0x24')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x91d9('0x39')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x91d9('0x16')](0x9)[_0x91d9('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x91d9('0x3a')},'dialAMDMinWordLength':{'type':Sequelize[_0x91d9('0x16')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x91d9('0x3b')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x91d9('0x16')](0x9)[_0x91d9('0x24')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x91d9('0x3c')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0x91d9('0x24')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x91d9('0x3d')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0x91d9('0x24')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x91d9('0x3e')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x91d9('0x16')](0x9)[_0x91d9('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x91d9('0x3f')},'dialRecallMeTimeout':{'type':Sequelize[_0x91d9('0x16')](0x5)[_0x91d9('0x24')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x91d9('0x40')},'dialRecallInQueue':{'type':Sequelize[_0x91d9('0x1f')],'defaultValue':0x0,'comment':_0x91d9('0x41')},'dialOrderByScheduledAt':{'type':Sequelize[_0x91d9('0x3')](_0x91d9('0x42'),'ASC'),'defaultValue':_0x91d9('0x42')},'dialQueueProject2':{'type':Sequelize[_0x91d9('0x2')],'comment':_0x91d9('0x2e')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x91d9('0x1f')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x91d9('0x16')](0x3)[_0x91d9('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x91d9('0x43')},'dialCutDigit':{'type':Sequelize[_0x91d9('0x16')](0x3)[_0x91d9('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x91d9('0x16')](0x3)[_0x91d9('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x91d9('0x44')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x91d9('0x16')](0x5)[_0x91d9('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x91d9('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0x91d9('0x16')](0x5)[_0x91d9('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x91d9('0x45')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x91d9('0x16')](0x3)[_0x91d9('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x91d9('0x46')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x91d9('0x16')](0x5)[_0x91d9('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x91d9('0x47')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0x91d9('0x16')](0x5)[_0x91d9('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x91d9('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x91d9('0x48')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x91d9('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':_0x91d9('0x49')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x91d9('0x4a'),'set':function(_0x50cb98){if(!_0x50cb98)this[_0x91d9('0xd')](_0x91d9('0x4b'),null);this[_0x91d9('0xd')](_0x91d9('0x4c'),_0x50cb98);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x91d9('0x16')](0x3)[_0x91d9('0x24')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x91d9('0x16')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
index e91f201..1efb899 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb21=['params','length','include','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','inbound','userProfileId','clone','omit','createdAt','updatedAt','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','findOne','CmHopper','VoiceQueueId','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','CmHopperBlack','Team','getTeams','teams','Agents','online','voicePause','flatMap','forEach','penalty','addTeams','each','TeamVoiceQueue','upsert','UserVoiceQueue','UserVoiceQueueRt','isNil','format','SIP/%s','emit','ids','User','select','field','tq.TeamId','from','team_has_voice_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','all','compact','transaction','removeTeams','userVoiceQueue:remove','addAgents','userVoiceQueue:save','interface','isEmpty','removeAgents','isArray','getAgents','getMembers','getLists','addLists','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ListId','NOW()','ContactId','CmListId','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','onlyIfOpen','deletedAt\x20IS\x20NULL','removeLists','getBlackLists','CmList','addBlackLists','spread','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','get','VoiceQueues','QueueCampaigns','outbound','ignore','map','value','includes','find','name','UserProfileResource','sendStatus','error','send','index','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','VoiceQueue','includeAll','findAll','rows','show'];(function(_0x50fc6a,_0x412fa3){var _0x31e10a=function(_0xc9acf){while(--_0xc9acf){_0x50fc6a['push'](_0x50fc6a['shift']());}};_0x31e10a(++_0x412fa3);}(_0xcb21,0x1de));var _0x1cb2=function(_0x4d65d1,_0x57c106){_0x4d65d1=_0x4d65d1-0x0;var _0x2e2c14=_0xcb21[_0x4d65d1];return _0x2e2c14;};'use strict';var emlformat=require(_0x1cb2('0x0'));var rimraf=require(_0x1cb2('0x1'));var zipdir=require(_0x1cb2('0x2'));var jsonpatch=require(_0x1cb2('0x3'));var rp=require(_0x1cb2('0x4'));var moment=require(_0x1cb2('0x5'));var BPromise=require(_0x1cb2('0x6'));var Mustache=require(_0x1cb2('0x7'));var util=require('util');var path=require(_0x1cb2('0x8'));var sox=require(_0x1cb2('0x9'));var csv=require(_0x1cb2('0xa'));var ejs=require(_0x1cb2('0xb'));var fs=require('fs');var fs_extra=require(_0x1cb2('0xc'));var _=require('lodash');var squel=require(_0x1cb2('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x1cb2('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1cb2('0xf'));var Redis=require(_0x1cb2('0x10'));var authService=require(_0x1cb2('0x11'));var qs=require(_0x1cb2('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1cb2('0x13'))(_0x1cb2('0x14'));var utils=require('../../config/utils');var config=require(_0x1cb2('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x1cb2('0x16'))['db'];config[_0x1cb2('0x17')]=_[_0x1cb2('0x18')](config['redis'],{'host':_0x1cb2('0x19'),'port':0x18eb});var socket=require(_0x1cb2('0x1a'))(new Redis(config['redis']));require('./voiceQueue.socket')[_0x1cb2('0x1b')](socket);function respondWithStatusCode(_0x500840,_0x39d829){_0x39d829=_0x39d829||0xcc;return function(_0x5a2d64){if(_0x5a2d64){return _0x500840['sendStatus'](_0x39d829);}return _0x500840[_0x1cb2('0x1c')](_0x39d829)[_0x1cb2('0x1d')]();};}function respondWithResult(_0x1868df,_0x568104){_0x568104=_0x568104||0xc8;return function(_0x566d79){if(_0x566d79){return _0x1868df[_0x1cb2('0x1c')](_0x568104)['json'](_0x566d79);}};}function respondWithFilteredResult(_0x630d9b,_0x4a5c29){return function(_0x5c3cd4){if(_0x5c3cd4){var _0xef1773=typeof _0x4a5c29[_0x1cb2('0x1e')]===_0x1cb2('0x1f')&&typeof _0x4a5c29[_0x1cb2('0x20')]==='undefined';var _0x79cfca=_0x5c3cd4['count'];var _0xfc46cd=_0xef1773?0x0:_0x4a5c29[_0x1cb2('0x1e')];var _0x16a37d=_0xef1773?_0x5c3cd4[_0x1cb2('0x21')]:_0x4a5c29['offset']+_0x4a5c29[_0x1cb2('0x20')];var _0x2bc260;if(_0x16a37d>=_0x79cfca){_0x16a37d=_0x79cfca;_0x2bc260=0xc8;}else{_0x2bc260=0xce;}_0x630d9b[_0x1cb2('0x1c')](_0x2bc260);return _0x630d9b[_0x1cb2('0x22')](_0x1cb2('0x23'),_0xfc46cd+'-'+_0x16a37d+'/'+_0x79cfca)[_0x1cb2('0x24')](_0x5c3cd4);}return null;};}function patchUpdates(_0x3d743b){return function(_0xe547b0){try{jsonpatch[_0x1cb2('0x25')](_0xe547b0,_0x3d743b,!![]);}catch(_0x53d514){return BPromise['reject'](_0x53d514);}return _0xe547b0[_0x1cb2('0x26')]();};}function saveUpdates(_0x150e10,_0x5a0ee0){return function(_0x249163){if(_0x249163){return _0x249163[_0x1cb2('0x27')](_0x150e10)[_0x1cb2('0x28')](function(_0x18e641){return _0x18e641;});}return null;};}function removeEntity(_0x4bd79a,_0x165e50){return function(_0x46505a){if(_0x46505a){return _0x46505a[_0x1cb2('0x29')]()['then'](function(){var _0x643cf9=_0x46505a[_0x1cb2('0x2a')]({'plain':!![]});var _0xa5f407=[{'name':_0x1cb2('0x2b'),'value':'inbound','ignore':![]},{'name':_0x1cb2('0x2c'),'value':_0x1cb2('0x2d'),'ignore':![]}];var _0x124b13=_(_0xa5f407)['filter'](_0x1cb2('0x2e'))[_0x1cb2('0x2f')](_0x1cb2('0x30'))['value']();if(_[_0x1cb2('0x31')](_0x124b13,_0x643cf9['type'])){return;}var _0x39bfe1=_[_0x1cb2('0x32')](_0xa5f407,[_0x1cb2('0x30'),_0x643cf9['type']])[_0x1cb2('0x33')];return db[_0x1cb2('0x34')][_0x1cb2('0x29')]({'where':{'type':_0x39bfe1,'resourceId':_0x643cf9['id']}})[_0x1cb2('0x28')](function(){return _0x46505a;});})[_0x1cb2('0x28')](function(){_0x4bd79a[_0x1cb2('0x1c')](0xcc)[_0x1cb2('0x1d')]();});}};}function handleEntityNotFound(_0x5dc2f,_0x444e0d){return function(_0x4139c2){if(!_0x4139c2){_0x5dc2f[_0x1cb2('0x35')](0x194);}return _0x4139c2;};}function handleError(_0x56e517,_0x536285){_0x536285=_0x536285||0x1f4;return function(_0x239b6c){logger[_0x1cb2('0x36')](_0x239b6c['stack']);if(_0x239b6c[_0x1cb2('0x33')]){delete _0x239b6c['name'];}_0x56e517['status'](_0x536285)[_0x1cb2('0x37')](_0x239b6c);};}exports[_0x1cb2('0x38')]=function(_0x2e3248,_0x2fb41e){var _0x256f2b={},_0x1000a0={},_0x14b373={'count':0x0,'rows':[]};var _0x37d217=_[_0x1cb2('0x2f')](db['VoiceQueue'][_0x1cb2('0x39')],function(_0x2cca9f){return{'name':_0x2cca9f[_0x1cb2('0x3a')],'type':_0x2cca9f[_0x1cb2('0x3b')][_0x1cb2('0x3c')]};});_0x1000a0['model']=_['map'](_0x37d217,_0x1cb2('0x33'));_0x1000a0['query']=_[_0x1cb2('0x3d')](_0x2e3248[_0x1cb2('0x3e')]);_0x1000a0[_0x1cb2('0x3f')]=_[_0x1cb2('0x40')](_0x1000a0[_0x1cb2('0x41')],_0x1000a0[_0x1cb2('0x3e')]);_0x256f2b[_0x1cb2('0x42')]=_[_0x1cb2('0x40')](_0x1000a0[_0x1cb2('0x41')],qs[_0x1cb2('0x43')](_0x2e3248[_0x1cb2('0x3e')][_0x1cb2('0x43')]));_0x256f2b[_0x1cb2('0x42')]=_0x256f2b[_0x1cb2('0x42')]['length']?_0x256f2b[_0x1cb2('0x42')]:_0x1000a0[_0x1cb2('0x41')];if(!_0x2e3248[_0x1cb2('0x3e')][_0x1cb2('0x44')](_0x1cb2('0x45'))){_0x256f2b[_0x1cb2('0x20')]=qs[_0x1cb2('0x20')](_0x2e3248[_0x1cb2('0x3e')][_0x1cb2('0x20')]);_0x256f2b[_0x1cb2('0x1e')]=qs['offset'](_0x2e3248[_0x1cb2('0x3e')][_0x1cb2('0x1e')]);}_0x256f2b[_0x1cb2('0x46')]=qs[_0x1cb2('0x47')](_0x2e3248[_0x1cb2('0x3e')][_0x1cb2('0x47')]);_0x256f2b[_0x1cb2('0x48')]=qs[_0x1cb2('0x3f')](_[_0x1cb2('0x49')](_0x2e3248['query'],_0x1000a0[_0x1cb2('0x3f')]),_0x37d217);if(_0x2e3248[_0x1cb2('0x3e')][_0x1cb2('0x4a')]){_0x256f2b[_0x1cb2('0x48')]=_[_0x1cb2('0x4b')](_0x256f2b[_0x1cb2('0x48')],{'$or':_[_0x1cb2('0x2f')](_0x37d217,function(_0x2f5931){if(_0x2f5931[_0x1cb2('0x3b')]!==_0x1cb2('0x4c')){var _0x11dc99={};_0x11dc99[_0x2f5931['name']]={'$like':'%'+_0x2e3248[_0x1cb2('0x3e')][_0x1cb2('0x4a')]+'%'};return _0x11dc99;}})});}_0x256f2b=_['merge']({},_0x256f2b,_0x2e3248[_0x1cb2('0x4d')]);var _0x274ded={'where':_0x256f2b[_0x1cb2('0x48')]};return db[_0x1cb2('0x4e')]['count'](_0x274ded)[_0x1cb2('0x28')](function(_0x984cb7){_0x14b373[_0x1cb2('0x21')]=_0x984cb7;if(_0x2e3248[_0x1cb2('0x3e')][_0x1cb2('0x4f')]){_0x256f2b['include']=[{'all':!![]}];}return db[_0x1cb2('0x4e')][_0x1cb2('0x50')](_0x256f2b);})[_0x1cb2('0x28')](function(_0x44aced){_0x14b373[_0x1cb2('0x51')]=_0x44aced;return _0x14b373;})[_0x1cb2('0x28')](respondWithFilteredResult(_0x2fb41e,_0x256f2b))['catch'](handleError(_0x2fb41e,null));};exports[_0x1cb2('0x52')]=function(_0x335994,_0x4d5bb9){var _0x32cc8f={'raw':![],'where':{'id':_0x335994[_0x1cb2('0x53')]['id']}},_0x3e2a47={};_0x3e2a47['model']=_[_0x1cb2('0x3d')](db['VoiceQueue'][_0x1cb2('0x39')]);_0x3e2a47['query']=_['keys'](_0x335994[_0x1cb2('0x3e')]);_0x3e2a47[_0x1cb2('0x3f')]=_[_0x1cb2('0x40')](_0x3e2a47[_0x1cb2('0x41')],_0x3e2a47[_0x1cb2('0x3e')]);_0x32cc8f['attributes']=_[_0x1cb2('0x40')](_0x3e2a47['model'],qs[_0x1cb2('0x43')](_0x335994['query'][_0x1cb2('0x43')]));_0x32cc8f[_0x1cb2('0x42')]=_0x32cc8f[_0x1cb2('0x42')][_0x1cb2('0x54')]?_0x32cc8f[_0x1cb2('0x42')]:_0x3e2a47['model'];if(_0x335994[_0x1cb2('0x3e')][_0x1cb2('0x4f')]){_0x32cc8f[_0x1cb2('0x55')]=[{'all':!![]}];}_0x32cc8f=_[_0x1cb2('0x4b')]({},_0x32cc8f,_0x335994[_0x1cb2('0x4d')]);return db['VoiceQueue']['find'](_0x32cc8f)['then'](handleEntityNotFound(_0x4d5bb9,null))[_0x1cb2('0x28')](respondWithResult(_0x4d5bb9,null))[_0x1cb2('0x56')](handleError(_0x4d5bb9,null));};exports[_0x1cb2('0x57')]=function(_0x55d960,_0x56af7a){return db[_0x1cb2('0x4e')][_0x1cb2('0x57')](_0x55d960[_0x1cb2('0x58')],{})[_0x1cb2('0x28')](function(_0x4c953b){var _0x23a37e=_0x55d960[_0x1cb2('0x59')][_0x1cb2('0x2a')]({'plain':!![]});if(!_0x23a37e)throw new Error(_0x1cb2('0x5a'));if(_0x23a37e[_0x1cb2('0x5b')]===_0x1cb2('0x59')){var _0x343cb3=_0x4c953b[_0x1cb2('0x2a')]({'plain':!![]});var _0x301023=[{'name':'VoiceQueues','value':_0x1cb2('0x5c')},{'name':'QueueCampaigns','value':_0x1cb2('0x2d')}];var _0x334ce6=_[_0x1cb2('0x32')](_0x301023,[_0x1cb2('0x30'),_0x343cb3[_0x1cb2('0x3b')]])[_0x1cb2('0x33')];return db['UserProfileSection']['find']({'where':{'name':_0x334ce6,'userProfileId':_0x23a37e[_0x1cb2('0x5d')]},'raw':!![]})[_0x1cb2('0x28')](function(_0x278a68){if(_0x278a68&&_0x278a68['autoAssociation']===0x0){return db['UserProfileResource'][_0x1cb2('0x57')]({'name':_0x343cb3['name'],'resourceId':_0x343cb3['id'],'type':_0x278a68['name'],'sectionId':_0x278a68['id']},{})[_0x1cb2('0x28')](function(){return _0x4c953b;});}else{return _0x4c953b;}})[_0x1cb2('0x56')](function(_0x1ffbb9){logger[_0x1cb2('0x36')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1ffbb9);throw _0x1ffbb9;});}return _0x4c953b;})['then'](respondWithResult(_0x56af7a,0xc9))['catch'](handleError(_0x56af7a,null));};exports[_0x1cb2('0x5e')]=function(_0x4f33af,_0x4ca75e){var _0x4ef157={'where':{'id':_0x4f33af[_0x1cb2('0x53')]['id']}},_0x50abe2={};_0x50abe2['model']=_[_0x1cb2('0x3d')](db[_0x1cb2('0x4e')][_0x1cb2('0x39')]);_0x4ef157['attributes']=_[_0x1cb2('0x40')](_0x50abe2[_0x1cb2('0x41')],qs[_0x1cb2('0x43')](_0x4f33af['query'][_0x1cb2('0x43')]));_0x4ef157[_0x1cb2('0x42')]=_0x4ef157['attributes'][_0x1cb2('0x54')]?_0x4ef157['attributes']:_0x50abe2[_0x1cb2('0x41')];if(_0x4f33af['query'][_0x1cb2('0x4f')]){_0x4ef157[_0x1cb2('0x55')]=[{'all':!![]}];}_0x4ef157=_[_0x1cb2('0x4b')]({},_0x4ef157,_0x4f33af[_0x1cb2('0x4d')]);return db['VoiceQueue'][_0x1cb2('0x32')](_0x4ef157)[_0x1cb2('0x28')](handleEntityNotFound(_0x4ca75e,null))['then'](function(_0x180d16){if(_0x180d16){var _0x6b29e2=_0x180d16[_0x1cb2('0x2a')]({'plain':!![]});_0x6b29e2=qs[_0x1cb2('0x5f')](_0x6b29e2,['id',_0x1cb2('0x60'),_0x1cb2('0x61')]);_0x4f33af[_0x1cb2('0x58')]=_[_0x1cb2('0x5f')](_0x4f33af[_0x1cb2('0x58')],['id','createdAt',_0x1cb2('0x61')]);return db[_0x1cb2('0x4e')][_0x1cb2('0x57')](_['merge'](_0x6b29e2,_0x4f33af[_0x1cb2('0x58')]),{'include':_0x4f33af['query'][_0x1cb2('0x4f')]?[{'all':!![]}]:undefined})[_0x1cb2('0x28')](function(_0xbd515e){var _0x1d3f9e=_0x4f33af[_0x1cb2('0x59')][_0x1cb2('0x2a')]({'plain':!![]});if(!_0x1d3f9e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1d3f9e[_0x1cb2('0x5b')]===_0x1cb2('0x59')){var _0xebf156=_0xbd515e[_0x1cb2('0x2a')]({'plain':!![]});var _0x4a4875=[{'name':_0x1cb2('0x2b'),'value':'inbound'},{'name':'QueueCampaigns','value':_0x1cb2('0x2d')}];var _0x584741=_[_0x1cb2('0x32')](_0x4a4875,[_0x1cb2('0x30'),_0xebf156[_0x1cb2('0x3b')]])[_0x1cb2('0x33')];return db['UserProfileSection'][_0x1cb2('0x32')]({'where':{'name':_0x584741,'userProfileId':_0x1d3f9e['userProfileId']},'raw':!![]})[_0x1cb2('0x28')](function(_0x3f5cb5){if(_0x3f5cb5&&_0x3f5cb5['autoAssociation']===0x0){return db[_0x1cb2('0x34')][_0x1cb2('0x57')]({'name':_0xebf156[_0x1cb2('0x33')],'resourceId':_0xebf156['id'],'type':_0x3f5cb5[_0x1cb2('0x33')],'sectionId':_0x3f5cb5['id']},{})[_0x1cb2('0x28')](function(){return _0xbd515e;});}else{return _0xbd515e;}})[_0x1cb2('0x56')](function(_0x594be1){logger['error'](_0x1cb2('0x62'),_0x594be1);throw _0x594be1;});}return _0xbd515e;});}})[_0x1cb2('0x28')](respondWithResult(_0x4ca75e,0xc9))[_0x1cb2('0x56')](handleError(_0x4ca75e,null));};exports[_0x1cb2('0x27')]=function(_0x1f1b5e,_0x5720a9){if(_0x1f1b5e[_0x1cb2('0x58')]['id']){delete _0x1f1b5e[_0x1cb2('0x58')]['id'];}return db[_0x1cb2('0x4e')][_0x1cb2('0x32')]({'where':{'id':_0x1f1b5e['params']['id']}})[_0x1cb2('0x28')](handleEntityNotFound(_0x5720a9,null))[_0x1cb2('0x28')](saveUpdates(_0x1f1b5e['body'],null))[_0x1cb2('0x28')](respondWithResult(_0x5720a9,null))[_0x1cb2('0x56')](handleError(_0x5720a9,null));};exports[_0x1cb2('0x29')]=function(_0x566273,_0x297b87){return db[_0x1cb2('0x4e')][_0x1cb2('0x32')]({'where':{'id':_0x566273['params']['id']}})[_0x1cb2('0x28')](handleEntityNotFound(_0x297b87,null))['then'](removeEntity(_0x297b87,null))[_0x1cb2('0x56')](handleError(_0x297b87,null));};exports['getHoppers']=function(_0xf2f0ed,_0x38e58b,_0x3b29d0){var _0x310f8d={'raw':![],'where':{}};var _0x8c3191={};var _0x50c34d={'count':0x0,'rows':[]};return db[_0x1cb2('0x4e')][_0x1cb2('0x63')]({'where':{'id':_0xf2f0ed['params']['id']}})[_0x1cb2('0x28')](handleEntityNotFound(_0x38e58b,null))[_0x1cb2('0x28')](function(_0x415052){if(_0x415052){_0x8c3191[_0x1cb2('0x41')]=_[_0x1cb2('0x3d')](db[_0x1cb2('0x64')][_0x1cb2('0x39')]);_0x8c3191[_0x1cb2('0x3e')]=_[_0x1cb2('0x3d')](_0xf2f0ed[_0x1cb2('0x3e')]);_0x8c3191[_0x1cb2('0x3f')]=_[_0x1cb2('0x40')](_0x8c3191['model'],_0x8c3191[_0x1cb2('0x3e')]);_0x310f8d[_0x1cb2('0x42')]=_['intersection'](_0x8c3191[_0x1cb2('0x41')],qs[_0x1cb2('0x43')](_0xf2f0ed[_0x1cb2('0x3e')][_0x1cb2('0x43')]));_0x310f8d['attributes']=_0x310f8d[_0x1cb2('0x42')][_0x1cb2('0x54')]?_0x310f8d[_0x1cb2('0x42')]:_0x8c3191[_0x1cb2('0x41')];if(!_0xf2f0ed['query'][_0x1cb2('0x44')](_0x1cb2('0x45'))){_0x310f8d[_0x1cb2('0x20')]=qs[_0x1cb2('0x20')](_0xf2f0ed[_0x1cb2('0x3e')][_0x1cb2('0x20')]);_0x310f8d[_0x1cb2('0x1e')]=qs['offset'](_0xf2f0ed['query'][_0x1cb2('0x1e')]);}_0x310f8d[_0x1cb2('0x46')]=qs['sort'](_0xf2f0ed[_0x1cb2('0x3e')]['sort']);_0x310f8d[_0x1cb2('0x48')]=qs['filters'](_[_0x1cb2('0x49')](_0xf2f0ed['query'],_0x8c3191[_0x1cb2('0x3f')]));_0x310f8d[_0x1cb2('0x48')][_0x1cb2('0x65')]=_0x415052['id'];if(_0xf2f0ed[_0x1cb2('0x3e')][_0x1cb2('0x4a')]){_0x310f8d['where']=_[_0x1cb2('0x4b')](_0x310f8d[_0x1cb2('0x48')],{'$or':_[_0x1cb2('0x2f')](_0x310f8d[_0x1cb2('0x42')],function(_0x39dbef){var _0x135e64={};_0x135e64[_0x39dbef]={'$like':'%'+_0xf2f0ed[_0x1cb2('0x3e')][_0x1cb2('0x4a')]+'%'};return _0x135e64;})});}_0x310f8d=_[_0x1cb2('0x4b')]({},_0x310f8d,_0xf2f0ed['options']);return db[_0x1cb2('0x64')]['count']({'where':_0x310f8d[_0x1cb2('0x48')]})[_0x1cb2('0x28')](function(_0x21b6e7){_0x50c34d['count']=_0x21b6e7;if(_0xf2f0ed[_0x1cb2('0x3e')][_0x1cb2('0x4f')]){_0x310f8d[_0x1cb2('0x55')]=[{'all':!![]}];}return db[_0x1cb2('0x64')][_0x1cb2('0x50')](_0x310f8d);})[_0x1cb2('0x28')](function(_0x55ccb1){_0x50c34d[_0x1cb2('0x51')]=_0x55ccb1;return _0x50c34d;});}})[_0x1cb2('0x28')](respondWithFilteredResult(_0x38e58b,_0x310f8d))[_0x1cb2('0x56')](handleError(_0x38e58b,null));};exports[_0x1cb2('0x66')]=function(_0x210ca7,_0xa0e9a1,_0x5b4df6){var _0x230577={'raw':!![],'where':{}};var _0x2f34b9={};var _0x3d3f3a={'count':0x0,'rows':[]};return db[_0x1cb2('0x4e')]['findOne']({'where':{'id':_0x210ca7[_0x1cb2('0x53')]['id']}})[_0x1cb2('0x28')](handleEntityNotFound(_0xa0e9a1,null))['then'](function(_0x8d4773){if(_0x8d4773){_0x2f34b9[_0x1cb2('0x41')]=_[_0x1cb2('0x3d')](db[_0x1cb2('0x67')]['rawAttributes']);_0x2f34b9['query']=_[_0x1cb2('0x3d')](_0x210ca7[_0x1cb2('0x3e')]);_0x2f34b9[_0x1cb2('0x3f')]=_['intersection'](_0x2f34b9[_0x1cb2('0x41')],_0x2f34b9[_0x1cb2('0x3e')]);_0x230577[_0x1cb2('0x42')]=_[_0x1cb2('0x40')](_0x2f34b9[_0x1cb2('0x41')],qs[_0x1cb2('0x43')](_0x210ca7['query'][_0x1cb2('0x43')]));_0x230577[_0x1cb2('0x42')]=_0x230577[_0x1cb2('0x42')][_0x1cb2('0x54')]?_0x230577[_0x1cb2('0x42')]:_0x2f34b9[_0x1cb2('0x41')];if(!_0x210ca7['query']['hasOwnProperty'](_0x1cb2('0x45'))){_0x230577[_0x1cb2('0x20')]=qs[_0x1cb2('0x20')](_0x210ca7[_0x1cb2('0x3e')][_0x1cb2('0x20')]);_0x230577[_0x1cb2('0x1e')]=qs['offset'](_0x210ca7[_0x1cb2('0x3e')][_0x1cb2('0x1e')]);}_0x230577[_0x1cb2('0x46')]=qs['sort'](_0x210ca7['query'][_0x1cb2('0x47')]);_0x230577['where']=qs[_0x1cb2('0x3f')](_[_0x1cb2('0x49')](_0x210ca7[_0x1cb2('0x3e')],_0x2f34b9[_0x1cb2('0x3f')]));_0x230577[_0x1cb2('0x48')][_0x1cb2('0x65')]=_0x8d4773['id'];if(_0x210ca7[_0x1cb2('0x3e')][_0x1cb2('0x4a')]){_0x230577['where']=_[_0x1cb2('0x4b')](_0x230577[_0x1cb2('0x48')],{'$or':_[_0x1cb2('0x2f')](_0x230577[_0x1cb2('0x42')],function(_0x269e41){var _0x4c0230={};_0x4c0230[_0x269e41]={'$like':'%'+_0x210ca7[_0x1cb2('0x3e')][_0x1cb2('0x4a')]+'%'};return _0x4c0230;})});}_0x230577=_[_0x1cb2('0x4b')]({},_0x230577,_0x210ca7[_0x1cb2('0x4d')]);return db['CmHopperHistory'][_0x1cb2('0x21')]({'where':_0x230577[_0x1cb2('0x48')]})[_0x1cb2('0x28')](function(_0x409545){_0x3d3f3a[_0x1cb2('0x21')]=_0x409545;if(_0x210ca7['query'][_0x1cb2('0x4f')]){_0x230577[_0x1cb2('0x55')]=[{'all':!![]}];}return db[_0x1cb2('0x67')][_0x1cb2('0x50')](_0x230577);})[_0x1cb2('0x28')](function(_0x2e7f2c){_0x3d3f3a[_0x1cb2('0x51')]=_0x2e7f2c;return _0x3d3f3a;});}})['then'](respondWithFilteredResult(_0xa0e9a1,_0x230577))[_0x1cb2('0x56')](handleError(_0xa0e9a1,null));};exports[_0x1cb2('0x68')]=function(_0x1e645d,_0x38ba95,_0x11628f){var _0x466c09={'raw':!![],'where':{}};var _0x54c01c={};var _0x316e5a={'count':0x0,'rows':[]};return db[_0x1cb2('0x4e')][_0x1cb2('0x63')]({'where':{'id':_0x1e645d[_0x1cb2('0x53')]['id']}})[_0x1cb2('0x28')](handleEntityNotFound(_0x38ba95,null))[_0x1cb2('0x28')](function(_0x474299){if(_0x474299){_0x54c01c[_0x1cb2('0x41')]=_[_0x1cb2('0x3d')](db[_0x1cb2('0x69')][_0x1cb2('0x39')]);_0x54c01c[_0x1cb2('0x3e')]=_[_0x1cb2('0x3d')](_0x1e645d[_0x1cb2('0x3e')]);_0x54c01c[_0x1cb2('0x3f')]=_[_0x1cb2('0x40')](_0x54c01c[_0x1cb2('0x41')],_0x54c01c['query']);_0x466c09[_0x1cb2('0x42')]=_[_0x1cb2('0x40')](_0x54c01c['model'],qs['fields'](_0x1e645d[_0x1cb2('0x3e')][_0x1cb2('0x43')]));_0x466c09[_0x1cb2('0x42')]=_0x466c09[_0x1cb2('0x42')]['length']?_0x466c09[_0x1cb2('0x42')]:_0x54c01c[_0x1cb2('0x41')];if(!_0x1e645d[_0x1cb2('0x3e')][_0x1cb2('0x44')]('nolimit')){_0x466c09[_0x1cb2('0x20')]=qs['limit'](_0x1e645d[_0x1cb2('0x3e')][_0x1cb2('0x20')]);_0x466c09['offset']=qs[_0x1cb2('0x1e')](_0x1e645d[_0x1cb2('0x3e')]['offset']);}_0x466c09[_0x1cb2('0x46')]=qs[_0x1cb2('0x47')](_0x1e645d[_0x1cb2('0x3e')][_0x1cb2('0x47')]);_0x466c09[_0x1cb2('0x48')]=qs[_0x1cb2('0x3f')](_[_0x1cb2('0x49')](_0x1e645d[_0x1cb2('0x3e')],_0x54c01c[_0x1cb2('0x3f')]));_0x466c09[_0x1cb2('0x48')][_0x1cb2('0x65')]=_0x474299['id'];if(_0x1e645d['query']['filter']){_0x466c09[_0x1cb2('0x48')]=_[_0x1cb2('0x4b')](_0x466c09[_0x1cb2('0x48')],{'$or':_[_0x1cb2('0x2f')](_0x466c09[_0x1cb2('0x42')],function(_0x28ba68){var _0x1b9296={};_0x1b9296[_0x28ba68]={'$like':'%'+_0x1e645d[_0x1cb2('0x3e')][_0x1cb2('0x4a')]+'%'};return _0x1b9296;})});}_0x466c09=_[_0x1cb2('0x4b')]({},_0x466c09,_0x1e645d[_0x1cb2('0x4d')]);return db[_0x1cb2('0x69')][_0x1cb2('0x21')]({'where':_0x466c09['where']})['then'](function(_0x200a7a){_0x316e5a[_0x1cb2('0x21')]=_0x200a7a;if(_0x1e645d[_0x1cb2('0x3e')][_0x1cb2('0x4f')]){_0x466c09[_0x1cb2('0x55')]=[{'all':!![]}];}return db['CmHopperFinal'][_0x1cb2('0x50')](_0x466c09);})[_0x1cb2('0x28')](function(_0x5c9be5){_0x316e5a[_0x1cb2('0x51')]=_0x5c9be5;return _0x316e5a;});}})['then'](respondWithFilteredResult(_0x38ba95,_0x466c09))['catch'](handleError(_0x38ba95,null));};exports['getHopperBlacks']=function(_0x4397f9,_0x1b1aae,_0x155ec3){var _0x26e7cc={'raw':!![],'where':{}};var _0x5dc6dd={};var _0x4fa913={'count':0x0,'rows':[]};return db[_0x1cb2('0x4e')]['findOne']({'where':{'id':_0x4397f9[_0x1cb2('0x53')]['id']}})[_0x1cb2('0x28')](handleEntityNotFound(_0x1b1aae,null))[_0x1cb2('0x28')](function(_0x4f0798){if(_0x4f0798){_0x5dc6dd['model']=_[_0x1cb2('0x3d')](db[_0x1cb2('0x6a')]['rawAttributes']);_0x5dc6dd[_0x1cb2('0x3e')]=_[_0x1cb2('0x3d')](_0x4397f9[_0x1cb2('0x3e')]);_0x5dc6dd[_0x1cb2('0x3f')]=_[_0x1cb2('0x40')](_0x5dc6dd[_0x1cb2('0x41')],_0x5dc6dd[_0x1cb2('0x3e')]);_0x26e7cc['attributes']=_[_0x1cb2('0x40')](_0x5dc6dd[_0x1cb2('0x41')],qs['fields'](_0x4397f9[_0x1cb2('0x3e')][_0x1cb2('0x43')]));_0x26e7cc[_0x1cb2('0x42')]=_0x26e7cc[_0x1cb2('0x42')][_0x1cb2('0x54')]?_0x26e7cc[_0x1cb2('0x42')]:_0x5dc6dd[_0x1cb2('0x41')];if(!_0x4397f9[_0x1cb2('0x3e')]['hasOwnProperty'](_0x1cb2('0x45'))){_0x26e7cc['limit']=qs[_0x1cb2('0x20')](_0x4397f9[_0x1cb2('0x3e')][_0x1cb2('0x20')]);_0x26e7cc[_0x1cb2('0x1e')]=qs[_0x1cb2('0x1e')](_0x4397f9[_0x1cb2('0x3e')][_0x1cb2('0x1e')]);}_0x26e7cc[_0x1cb2('0x46')]=qs['sort'](_0x4397f9['query'][_0x1cb2('0x47')]);_0x26e7cc[_0x1cb2('0x48')]=qs[_0x1cb2('0x3f')](_['pick'](_0x4397f9[_0x1cb2('0x3e')],_0x5dc6dd[_0x1cb2('0x3f')]));_0x26e7cc[_0x1cb2('0x48')][_0x1cb2('0x65')]=_0x4f0798['id'];if(_0x4397f9['query'][_0x1cb2('0x4a')]){_0x26e7cc[_0x1cb2('0x48')]=_[_0x1cb2('0x4b')](_0x26e7cc[_0x1cb2('0x48')],{'$or':_[_0x1cb2('0x2f')](_0x26e7cc[_0x1cb2('0x42')],function(_0x3edca5){var _0x5d84e4={};_0x5d84e4[_0x3edca5]={'$like':'%'+_0x4397f9[_0x1cb2('0x3e')]['filter']+'%'};return _0x5d84e4;})});}_0x26e7cc=_[_0x1cb2('0x4b')]({},_0x26e7cc,_0x4397f9['options']);return db[_0x1cb2('0x6a')]['count']({'where':_0x26e7cc[_0x1cb2('0x48')]})[_0x1cb2('0x28')](function(_0x1a53c5){_0x4fa913[_0x1cb2('0x21')]=_0x1a53c5;if(_0x4397f9['query'][_0x1cb2('0x4f')]){_0x26e7cc[_0x1cb2('0x55')]=[{'all':!![]}];}return db[_0x1cb2('0x6a')][_0x1cb2('0x50')](_0x26e7cc);})[_0x1cb2('0x28')](function(_0x4365bb){_0x4fa913[_0x1cb2('0x51')]=_0x4365bb;return _0x4fa913;});}})[_0x1cb2('0x28')](respondWithFilteredResult(_0x1b1aae,_0x26e7cc))[_0x1cb2('0x56')](handleError(_0x1b1aae,null));};exports['getTeams']=function(_0x428e21,_0xdadf03,_0x9427cf){var _0x589bc8={};var _0x18b53b={};var _0x26173a;var _0x2bcb60;return db[_0x1cb2('0x4e')]['findOne']({'where':{'id':_0x428e21[_0x1cb2('0x53')]['id']}})[_0x1cb2('0x28')](handleEntityNotFound(_0xdadf03,null))[_0x1cb2('0x28')](function(_0x421c0e){if(_0x421c0e){_0x26173a=_0x421c0e;_0x18b53b[_0x1cb2('0x41')]=_[_0x1cb2('0x3d')](db[_0x1cb2('0x6b')][_0x1cb2('0x39')]);_0x18b53b[_0x1cb2('0x3e')]=_[_0x1cb2('0x3d')](_0x428e21[_0x1cb2('0x3e')]);_0x18b53b[_0x1cb2('0x3f')]=_[_0x1cb2('0x40')](_0x18b53b[_0x1cb2('0x41')],_0x18b53b[_0x1cb2('0x3e')]);_0x589bc8[_0x1cb2('0x42')]=_[_0x1cb2('0x40')](_0x18b53b[_0x1cb2('0x41')],qs['fields'](_0x428e21['query'][_0x1cb2('0x43')]));_0x589bc8[_0x1cb2('0x42')]=_0x589bc8[_0x1cb2('0x42')][_0x1cb2('0x54')]?_0x589bc8[_0x1cb2('0x42')]:_0x18b53b[_0x1cb2('0x41')];_0x589bc8[_0x1cb2('0x46')]=qs['sort'](_0x428e21[_0x1cb2('0x3e')]['sort']);_0x589bc8['where']=qs[_0x1cb2('0x3f')](_['pick'](_0x428e21[_0x1cb2('0x3e')],_0x18b53b[_0x1cb2('0x3f')]));if(_0x428e21['query'][_0x1cb2('0x4a')]){_0x589bc8[_0x1cb2('0x48')]=_[_0x1cb2('0x4b')](_0x589bc8['where'],{'$or':_[_0x1cb2('0x2f')](_0x589bc8[_0x1cb2('0x42')],function(_0x33da38){var _0x3ab949={};_0x3ab949[_0x33da38]={'$like':'%'+_0x428e21[_0x1cb2('0x3e')][_0x1cb2('0x4a')]+'%'};return _0x3ab949;})});}_0x589bc8=_[_0x1cb2('0x4b')]({},_0x589bc8,_0x428e21[_0x1cb2('0x4d')]);return _0x26173a[_0x1cb2('0x6c')](_0x589bc8);}})[_0x1cb2('0x28')](function(_0x5c4494){if(_0x5c4494){_0x2bcb60=_0x5c4494[_0x1cb2('0x54')];if(!_0x428e21[_0x1cb2('0x3e')][_0x1cb2('0x44')](_0x1cb2('0x45'))){_0x589bc8[_0x1cb2('0x20')]=qs[_0x1cb2('0x20')](_0x428e21[_0x1cb2('0x3e')][_0x1cb2('0x20')]);_0x589bc8[_0x1cb2('0x1e')]=qs['offset'](_0x428e21[_0x1cb2('0x3e')]['offset']);}return _0x26173a['getTeams'](_0x589bc8);}})[_0x1cb2('0x28')](function(_0x2866fa){if(_0x2866fa){return _0x2866fa?{'count':_0x2bcb60,'rows':_0x2866fa}:null;}})['then'](respondWithResult(_0xdadf03,null))[_0x1cb2('0x56')](handleError(_0xdadf03,null));};exports['addTeams']=function(_0x178a02,_0x2c94d6,_0x9a76c7){var _0x1bbd74=_0x178a02[_0x1cb2('0x58')][_0x1cb2('0x6d')];var _0x2cee12=_['map'](_0x1bbd74,'id');return db[_0x1cb2('0x6b')]['findAll']({'where':{'id':_0x2cee12},'attributes':['id'],'include':[{'model':db['User'],'as':_0x1cb2('0x6e'),'attributes':['id','name',_0x1cb2('0x6f'),_0x1cb2('0x70'),'interface'],'raw':!![]}]})[_0x1cb2('0x28')](function(_0x14d19b){if(_0x14d19b){var _0x36351a=_[_0x1cb2('0x71')](_0x14d19b,function(_0x342ab9){var _0x59d2cf=_0x342ab9[_0x1cb2('0x2a')]({'plain':!![]});_0x59d2cf[_0x1cb2('0x6e')][_0x1cb2('0x72')](function(_0x245206){_0x245206['penalty']=_[_0x1cb2('0x32')](_0x1bbd74,{'id':_0x59d2cf['id']})[_0x1cb2('0x73')];});return _0x59d2cf[_0x1cb2('0x6e')];});return db[_0x1cb2('0x4e')][_0x1cb2('0x32')]({'where':{'id':_0x178a02[_0x1cb2('0x53')]['id']}})[_0x1cb2('0x28')](function(_0x42e958){return db['sequelize']['transaction'](function(_0x147e70){return _0x42e958[_0x1cb2('0x74')](_0x2cee12,{'transaction':_0x147e70})[_0x1cb2('0x28')](function(){return BPromise[_0x1cb2('0x75')](_0x1bbd74,function(_0x482a12){return db[_0x1cb2('0x76')][_0x1cb2('0x77')]({'TeamId':_0x482a12['id'],'VoiceQueueId':_0x178a02[_0x1cb2('0x53')]['id'],'penalty':_0x482a12['penalty']},{'transaction':_0x147e70});});})[_0x1cb2('0x28')](function(){return BPromise[_0x1cb2('0x75')](_0x36351a,function(_0x1ec713){return db[_0x1cb2('0x78')]['findOrCreate']({'where':{'UserId':_0x1ec713['id'],'VoiceQueueId':_0x178a02[_0x1cb2('0x53')]['id']},'defaults':{'penalty':_0x1ec713[_0x1cb2('0x73')]},'transaction':_0x147e70});});})[_0x1cb2('0x28')](function(){return BPromise['each'](_[_0x1cb2('0x4a')](_0x36351a,{'online':!![]}),function(_0x2fc960){return db[_0x1cb2('0x79')][_0x1cb2('0x77')]({'membername':_0x2fc960['name'],'UserId':_0x2fc960['id'],'queue_name':_0x42e958['name'],'VoiceQueueId':_0x42e958['id'],'interface':_[_0x1cb2('0x7a')](_0x2fc960['interface'])?util[_0x1cb2('0x7b')](_0x1cb2('0x7c'),_0x2fc960[_0x1cb2('0x33')]):_0x2fc960['interface'],'paused':_0x2fc960[_0x1cb2('0x70')]||![],'penalty':_0x2fc960['penalty']},{'transaction':_0x147e70});});})[_0x1cb2('0x28')](function(){_0x36351a[_0x1cb2('0x72')](function(_0x17f978){socket[_0x1cb2('0x7d')]('userVoiceQueue:save',{'UserId':_0x17f978['id'],'VoiceQueueId':_0x42e958['id']});});});});});}})[_0x1cb2('0x28')](respondWithStatusCode(_0x2c94d6,null))['catch'](handleError(_0x2c94d6,null));};exports['removeTeams']=function(_0x2265ce,_0x3c359a,_0x1ba1ce){return db[_0x1cb2('0x6b')][_0x1cb2('0x50')]({'where':{'id':_0x2265ce[_0x1cb2('0x3e')][_0x1cb2('0x7e')]},'attributes':['id'],'include':[{'model':db[_0x1cb2('0x7f')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x3c359a,null))[_0x1cb2('0x28')](function(_0x199aa3){var _0x26ba36=_['map'](_0x199aa3,'id');var _0x909ce4=[];var _0x1bfdc7=[];var _0x7514b8=squel[_0x1cb2('0x80')]();_0x7514b8[_0x1cb2('0x81')](_0x1cb2('0x82'))[_0x1cb2('0x83')](_0x1cb2('0x84'),'tq')['join'](_0x1cb2('0x85'),'ut',_0x1cb2('0x86'))[_0x1cb2('0x48')](_0x1cb2('0x87'),_0x2265ce[_0x1cb2('0x53')]['id']);for(var _0x536dbc=0x0;_0x536dbc<_0x199aa3[_0x1cb2('0x54')];_0x536dbc+=0x1){let _0x12ccbd=_0x199aa3[_0x536dbc];for(var _0x5b195a=0x0;_0x5b195a<_0x12ccbd[_0x1cb2('0x6e')][_0x1cb2('0x54')];_0x5b195a+=0x1){let _0x46b656=_0x12ccbd[_0x1cb2('0x6e')][_0x5b195a];var _0x2f56dc=_0x7514b8[_0x1cb2('0x5e')]();_0x2f56dc[_0x1cb2('0x48')](_0x1cb2('0x88'),_0x46b656['id']);_0x1bfdc7[_0x1cb2('0x89')](db[_0x1cb2('0x8a')][_0x1cb2('0x3e')](_0x2f56dc[_0x1cb2('0x8b')](),{'type':db[_0x1cb2('0x8a')][_0x1cb2('0x8c')][_0x1cb2('0x8d')]})['then'](function(_0x112d58){if(_0x112d58[_0x1cb2('0x54')]===0x1){return _0x46b656['id'];}else{var _0x3e5db8=_[_0x1cb2('0x8e')](_[_0x1cb2('0x2f')](_0x112d58,_0x1cb2('0x8f')),function(_0x3146d2){return _[_0x1cb2('0x31')](_0x26ba36,_0x3146d2);});if(_0x3e5db8){return _0x46b656['id'];}}}));}}return BPromise[_0x1cb2('0x90')](_0x1bfdc7)[_0x1cb2('0x28')](function(_0x2ecd07){_0x909ce4=_(_0x909ce4)['union'](_0x2ecd07)[_0x1cb2('0x91')]()['value']();return db[_0x1cb2('0x4e')][_0x1cb2('0x32')]({'where':{'id':_0x2265ce['params']['id']}})['then'](function(_0x32efd2){return db[_0x1cb2('0x8a')][_0x1cb2('0x92')](function(_0x569235){return _0x32efd2[_0x1cb2('0x93')](_0x2265ce['query']['ids'],{'transaction':_0x569235})[_0x1cb2('0x28')](function(){if(!_['isEmpty'](_0x909ce4)){return _0x32efd2['removeAgents'](_0x909ce4,{'transaction':_0x569235})['then'](function(){return db[_0x1cb2('0x79')][_0x1cb2('0x29')]({'where':{'VoiceQueueId':_0x2265ce[_0x1cb2('0x53')]['id'],'UserId':_0x909ce4},'transaction':_0x569235});});}})[_0x1cb2('0x28')](function(){_0x909ce4[_0x1cb2('0x72')](function(_0x91b7ea){socket[_0x1cb2('0x7d')](_0x1cb2('0x94'),{'UserId':_0x91b7ea,'VoiceQueueId':_0x32efd2['id']});});});});});});})[_0x1cb2('0x28')](respondWithStatusCode(_0x3c359a,null))[_0x1cb2('0x56')](handleError(_0x3c359a,null));};exports[_0x1cb2('0x95')]=function(_0x125996,_0x545dea,_0x5f59af){var _0x231038,_0x4d7805;return db[_0x1cb2('0x4e')]['find']({'where':{'id':_0x125996[_0x1cb2('0x53')]['id']}})[_0x1cb2('0x28')](handleEntityNotFound(_0x545dea,null))['then'](function(_0x393b2f){if(_0x393b2f){_0x4d7805=_0x393b2f;return _0x393b2f[_0x1cb2('0x95')](_0x125996[_0x1cb2('0x58')][_0x1cb2('0x7e')],_[_0x1cb2('0x5f')](_0x125996[_0x1cb2('0x58')],[_0x1cb2('0x7e'),'id'])||{})['spread'](function(_0xcdcf43){for(var _0x2f04cc=0x0;_0x2f04cc<_0x125996['body'][_0x1cb2('0x7e')][_0x1cb2('0x54')];_0x2f04cc+=0x1){socket[_0x1cb2('0x7d')](_0x1cb2('0x96'),{'UserId':Number(_0x125996[_0x1cb2('0x58')]['ids'][_0x2f04cc]),'VoiceQueueId':Number(_0x125996[_0x1cb2('0x53')]['id'])});}return _0xcdcf43;});}})[_0x1cb2('0x28')](function(_0x52b174){_0x231038=_0x52b174||[];if(_0x4d7805){return db[_0x1cb2('0x7f')][_0x1cb2('0x50')]({'where':{'id':_0x125996[_0x1cb2('0x58')][_0x1cb2('0x7e')]},'attributes':['id','name','online',_0x1cb2('0x70'),_0x1cb2('0x97')],'raw':!![]});}})[_0x1cb2('0x28')](function(_0x2f5ef1){if(!_[_0x1cb2('0x98')](_0x2f5ef1)){var _0x3029e1=[];for(var _0xd731aa=0x0;_0xd731aa<_0x2f5ef1['length'];_0xd731aa++){if(_0x2f5ef1[_0xd731aa]['online']){_0x3029e1[_0x1cb2('0x89')](db[_0x1cb2('0x79')][_0x1cb2('0x77')]({'membername':_0x2f5ef1[_0xd731aa][_0x1cb2('0x33')],'UserId':_0x2f5ef1[_0xd731aa]['id'],'queue_name':_0x4d7805['name'],'VoiceQueueId':_0x4d7805['id'],'interface':_[_0x1cb2('0x7a')](_0x2f5ef1[_0xd731aa][_0x1cb2('0x97')])?util[_0x1cb2('0x7b')](_0x1cb2('0x7c'),_0x2f5ef1[_0xd731aa][_0x1cb2('0x33')]):_0x2f5ef1[_0xd731aa][_0x1cb2('0x97')],'paused':_0x2f5ef1[_0xd731aa][_0x1cb2('0x70')]||![],'penalty':_0x125996['body'][_0x1cb2('0x73')]||0x0}));}}return BPromise['all'](_0x3029e1);}})[_0x1cb2('0x28')](function(){return _0x231038;})[_0x1cb2('0x28')](respondWithResult(_0x545dea,null))[_0x1cb2('0x56')](handleError(_0x545dea,null));};exports['removeAgents']=function(_0x1fdef4,_0x4605bd,_0x422940){return db['VoiceQueue']['find']({'where':{'id':_0x1fdef4[_0x1cb2('0x53')]['id']}})[_0x1cb2('0x28')](handleEntityNotFound(_0x4605bd,null))[_0x1cb2('0x28')](function(_0x31c6ee){if(_0x31c6ee){return _0x31c6ee[_0x1cb2('0x99')](_0x1fdef4[_0x1cb2('0x3e')][_0x1cb2('0x7e')])['then'](function(){if(_[_0x1cb2('0x9a')](_0x1fdef4[_0x1cb2('0x3e')][_0x1cb2('0x7e')])){for(var _0x360c77=0x0;_0x360c77<_0x1fdef4[_0x1cb2('0x3e')][_0x1cb2('0x7e')][_0x1cb2('0x54')];_0x360c77+=0x1){socket['emit'](_0x1cb2('0x94'),{'UserId':Number(_0x1fdef4[_0x1cb2('0x3e')][_0x1cb2('0x7e')][_0x360c77]),'VoiceQueueId':Number(_0x1fdef4[_0x1cb2('0x53')]['id'])});}}else{socket[_0x1cb2('0x7d')](_0x1cb2('0x94'),{'UserId':Number(_0x1fdef4[_0x1cb2('0x3e')]['ids']),'VoiceQueueId':Number(_0x1fdef4[_0x1cb2('0x53')]['id'])});}});}})['then'](function(_0x3f0d43){return db[_0x1cb2('0x79')][_0x1cb2('0x29')]({'where':{'VoiceQueueId':_0x1fdef4[_0x1cb2('0x53')]['id'],'UserId':_0x1fdef4[_0x1cb2('0x3e')][_0x1cb2('0x7e')]}})[_0x1cb2('0x28')](function(){return _0x3f0d43;});})[_0x1cb2('0x28')](respondWithStatusCode(_0x4605bd,null))[_0x1cb2('0x56')](handleError(_0x4605bd,null));};exports[_0x1cb2('0x9b')]=function(_0x511398,_0x2332b2,_0x4d1d89){var _0x546c97={};var _0x5167ed={};var _0x3a28ac;var _0x2c5373;return db[_0x1cb2('0x4e')]['findOne']({'where':{'id':_0x511398[_0x1cb2('0x53')]['id']}})['then'](handleEntityNotFound(_0x2332b2,null))[_0x1cb2('0x28')](function(_0x1813cd){if(_0x1813cd){_0x3a28ac=_0x1813cd;_0x5167ed[_0x1cb2('0x41')]=_[_0x1cb2('0x3d')](db[_0x1cb2('0x7f')]['rawAttributes']);_0x5167ed[_0x1cb2('0x3e')]=_[_0x1cb2('0x3d')](_0x511398[_0x1cb2('0x3e')]);_0x5167ed[_0x1cb2('0x3f')]=_[_0x1cb2('0x40')](_0x5167ed[_0x1cb2('0x41')],_0x5167ed[_0x1cb2('0x3e')]);_0x546c97['attributes']=_['intersection'](_0x5167ed[_0x1cb2('0x41')],qs['fields'](_0x511398[_0x1cb2('0x3e')][_0x1cb2('0x43')]));_0x546c97[_0x1cb2('0x42')]=_0x546c97[_0x1cb2('0x42')][_0x1cb2('0x54')]?_0x546c97[_0x1cb2('0x42')]:_0x5167ed['model'];_0x546c97[_0x1cb2('0x46')]=qs[_0x1cb2('0x47')](_0x511398[_0x1cb2('0x3e')]['sort']);_0x546c97['where']=qs[_0x1cb2('0x3f')](_[_0x1cb2('0x49')](_0x511398[_0x1cb2('0x3e')],_0x5167ed[_0x1cb2('0x3f')]));if(_0x511398[_0x1cb2('0x3e')]['filter']){_0x546c97[_0x1cb2('0x48')]=_[_0x1cb2('0x4b')](_0x546c97['where'],{'$or':_[_0x1cb2('0x2f')](_0x546c97[_0x1cb2('0x42')],function(_0x2d9f32){var _0x415c50={};_0x415c50[_0x2d9f32]={'$like':'%'+_0x511398[_0x1cb2('0x3e')][_0x1cb2('0x4a')]+'%'};return _0x415c50;})});}_0x546c97=_[_0x1cb2('0x4b')]({},_0x546c97,_0x511398[_0x1cb2('0x4d')]);return _0x3a28ac[_0x1cb2('0x9b')](_0x546c97);}})[_0x1cb2('0x28')](function(_0x3c9344){if(_0x3c9344){_0x2c5373=_0x3c9344[_0x1cb2('0x54')];if(!_0x511398[_0x1cb2('0x3e')][_0x1cb2('0x44')](_0x1cb2('0x45'))){_0x546c97[_0x1cb2('0x20')]=qs[_0x1cb2('0x20')](_0x511398[_0x1cb2('0x3e')][_0x1cb2('0x20')]);_0x546c97[_0x1cb2('0x1e')]=qs['offset'](_0x511398[_0x1cb2('0x3e')][_0x1cb2('0x1e')]);}return _0x3a28ac[_0x1cb2('0x9b')](_0x546c97);}})[_0x1cb2('0x28')](function(_0x30f193){if(_0x30f193){return _0x30f193?{'count':_0x2c5373,'rows':_0x30f193}:null;}})[_0x1cb2('0x28')](respondWithResult(_0x2332b2,null))[_0x1cb2('0x56')](handleError(_0x2332b2,null));};exports['getMembers']=function(_0x69c62f,_0x53cd2b,_0x5b2e51){var _0x540437={};var _0x420387={};var _0x2e4083;var _0x3a309f;return db[_0x1cb2('0x4e')][_0x1cb2('0x63')]({'where':{'id':_0x69c62f['params']['id']}})[_0x1cb2('0x28')](handleEntityNotFound(_0x53cd2b,null))[_0x1cb2('0x28')](function(_0x3253ce){if(_0x3253ce){_0x2e4083=_0x3253ce;_0x420387[_0x1cb2('0x41')]=_[_0x1cb2('0x3d')](db[_0x1cb2('0x79')][_0x1cb2('0x39')]);_0x420387[_0x1cb2('0x3e')]=_[_0x1cb2('0x3d')](_0x69c62f[_0x1cb2('0x3e')]);_0x420387[_0x1cb2('0x3f')]=_[_0x1cb2('0x40')](_0x420387[_0x1cb2('0x41')],_0x420387['query']);_0x540437['attributes']=_[_0x1cb2('0x40')](_0x420387['model'],qs[_0x1cb2('0x43')](_0x69c62f[_0x1cb2('0x3e')][_0x1cb2('0x43')]));_0x540437['attributes']=_0x540437['attributes'][_0x1cb2('0x54')]?_0x540437[_0x1cb2('0x42')]:_0x420387[_0x1cb2('0x41')];_0x540437[_0x1cb2('0x46')]=qs[_0x1cb2('0x47')](_0x69c62f[_0x1cb2('0x3e')]['sort']);_0x540437[_0x1cb2('0x48')]=qs['filters'](_['pick'](_0x69c62f['query'],_0x420387[_0x1cb2('0x3f')]));if(_0x69c62f[_0x1cb2('0x3e')][_0x1cb2('0x4a')]){_0x540437['where']=_[_0x1cb2('0x4b')](_0x540437[_0x1cb2('0x48')],{'$or':_[_0x1cb2('0x2f')](_0x540437['attributes'],function(_0x2126dd){var _0x55682c={};_0x55682c[_0x2126dd]={'$like':'%'+_0x69c62f[_0x1cb2('0x3e')][_0x1cb2('0x4a')]+'%'};return _0x55682c;})});}_0x540437=_[_0x1cb2('0x4b')]({},_0x540437,_0x69c62f['options']);return _0x2e4083[_0x1cb2('0x9c')](_0x540437);}})[_0x1cb2('0x28')](function(_0x2ea964){if(_0x2ea964){_0x3a309f=_0x2ea964[_0x1cb2('0x54')];if(!_0x69c62f[_0x1cb2('0x3e')][_0x1cb2('0x44')]('nolimit')){_0x540437[_0x1cb2('0x20')]=qs[_0x1cb2('0x20')](_0x69c62f[_0x1cb2('0x3e')][_0x1cb2('0x20')]);_0x540437[_0x1cb2('0x1e')]=qs[_0x1cb2('0x1e')](_0x69c62f['query'][_0x1cb2('0x1e')]);}return _0x2e4083[_0x1cb2('0x9c')](_0x540437);}})[_0x1cb2('0x28')](function(_0x5e0eef){return _0x5e0eef?{'count':_0x3a309f,'rows':_0x5e0eef}:null;})['then'](respondWithResult(_0x53cd2b,null))[_0x1cb2('0x56')](handleError(_0x53cd2b,null));};exports[_0x1cb2('0x9d')]=function(_0x521fc5,_0x3a97b9,_0x38b03c){var _0x37bee1={};var _0x117ce6={};var _0x314a84;var _0x3821c6;return db[_0x1cb2('0x4e')][_0x1cb2('0x63')]({'where':{'id':_0x521fc5[_0x1cb2('0x53')]['id']}})['then'](handleEntityNotFound(_0x3a97b9,null))[_0x1cb2('0x28')](function(_0x4afb86){if(_0x4afb86){_0x314a84=_0x4afb86;_0x117ce6['model']=_['keys'](db['CmList'][_0x1cb2('0x39')]);_0x117ce6['query']=_[_0x1cb2('0x3d')](_0x521fc5['query']);_0x117ce6[_0x1cb2('0x3f')]=_['intersection'](_0x117ce6[_0x1cb2('0x41')],_0x117ce6['query']);_0x37bee1[_0x1cb2('0x42')]=_['intersection'](_0x117ce6[_0x1cb2('0x41')],qs['fields'](_0x521fc5['query']['fields']));_0x37bee1[_0x1cb2('0x42')]=_0x37bee1['attributes'][_0x1cb2('0x54')]?_0x37bee1[_0x1cb2('0x42')]:_0x117ce6['model'];_0x37bee1[_0x1cb2('0x46')]=qs['sort'](_0x521fc5['query']['sort']);_0x37bee1[_0x1cb2('0x48')]=qs['filters'](_['pick'](_0x521fc5['query'],_0x117ce6['filters']));if(_0x521fc5[_0x1cb2('0x3e')]['filter']){_0x37bee1[_0x1cb2('0x48')]=_['merge'](_0x37bee1[_0x1cb2('0x48')],{'$or':_['map'](_0x37bee1[_0x1cb2('0x42')],function(_0x4110ac){var _0x113c0a={};_0x113c0a[_0x4110ac]={'$like':'%'+_0x521fc5[_0x1cb2('0x3e')][_0x1cb2('0x4a')]+'%'};return _0x113c0a;})});}_0x37bee1=_[_0x1cb2('0x4b')]({},_0x37bee1,_0x521fc5[_0x1cb2('0x4d')]);return _0x314a84[_0x1cb2('0x9d')](_0x37bee1);}})[_0x1cb2('0x28')](function(_0x4d6fd4){if(_0x4d6fd4){_0x3821c6=_0x4d6fd4['length'];if(!_0x521fc5[_0x1cb2('0x3e')]['hasOwnProperty']('nolimit')){_0x37bee1[_0x1cb2('0x20')]=qs['limit'](_0x521fc5[_0x1cb2('0x3e')]['limit']);_0x37bee1[_0x1cb2('0x1e')]=qs[_0x1cb2('0x1e')](_0x521fc5['query'][_0x1cb2('0x1e')]);}return _0x314a84[_0x1cb2('0x9d')](_0x37bee1);}})[_0x1cb2('0x28')](function(_0x1fa77a){if(_0x1fa77a){return _0x1fa77a?{'count':_0x3821c6,'rows':_0x1fa77a}:null;}})[_0x1cb2('0x28')](respondWithResult(_0x3a97b9,null))[_0x1cb2('0x56')](handleError(_0x3a97b9,null));};exports['addLists']=function(_0x3b63fd,_0xb990db,_0x176262){var _0xbace1d,_0x1263e9;return db['VoiceQueue'][_0x1cb2('0x32')]({'where':{'id':_0x3b63fd[_0x1cb2('0x53')]['id']}})[_0x1cb2('0x28')](handleEntityNotFound(_0xb990db,null))[_0x1cb2('0x28')](function(_0x3bd911){if(_0x3bd911){_0x1263e9=_0x3bd911;return _0x3bd911[_0x1cb2('0x9e')](_0x3b63fd['body'][_0x1cb2('0x7e')],_['omit'](_0x3b63fd[_0x1cb2('0x58')],[_0x1cb2('0x7e'),'id'])||{});}return null;})['spread'](function(_0x44bb35){var _0x172179;_0xbace1d=_0x44bb35||[];var _0x579f23=[];if(_0x44bb35){for(var _0x259d9d=0x0;_0x259d9d<_0x44bb35[_0x1cb2('0x54')];_0x259d9d+=0x1){var _0x3e7563=_0x44bb35[_0x259d9d][_0x1cb2('0x2a')]({'plain':!![]});_0x1263e9['dialCheckDuplicateType']=_0x3b63fd[_0x1cb2('0x58')][_0x1cb2('0x9f')]?_0x3b63fd[_0x1cb2('0x58')][_0x1cb2('0x9f')]:_0x1263e9[_0x1cb2('0x9f')];switch(_0x1263e9[_0x1cb2('0x9f')]){case _0x1cb2('0xa0'):_0x172179=squel[_0x1cb2('0xa1')]()[_0x1cb2('0xa2')](_0x1cb2('0xa3'))[_0x1cb2('0xa4')]([_0x1cb2('0xa5'),_0x1cb2('0xa6'),'ContactId',_0x1cb2('0xa7'),_0x1cb2('0x65'),'createdAt','updatedAt'],squel[_0x1cb2('0x80')]()['field'](_0x1cb2('0xa5'),_0x1cb2('0xa5'))[_0x1cb2('0x81')](_0x1cb2('0xa8'),_0x1cb2('0xa6'))[_0x1cb2('0x81')]('id',_0x1cb2('0xa9'))['field'](_0x3e7563[_0x1cb2('0xaa')]['toString'](),_0x1cb2('0xa7'))[_0x1cb2('0x81')](_0x3b63fd['params']['id'][_0x1cb2('0x8b')](),'VoiceQueueId')['field'](_0x1cb2('0xa8'),'createdAt')[_0x1cb2('0x81')](_0x1cb2('0xa8'),_0x1cb2('0x61'))[_0x1cb2('0x83')](_0x1cb2('0xab'))[_0x1cb2('0x48')]('deletedAt\x20IS\x20NULL')[_0x1cb2('0x48')](_0x1cb2('0xac'),_0x3e7563[_0x1cb2('0xaa')][_0x1cb2('0x8b')]())[_0x1cb2('0x48')](_0x1cb2('0xad'))[_0x1cb2('0x48')]('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0x1cb2('0x81')](_0x1cb2('0xae'))[_0x1cb2('0x83')](_0x1cb2('0xaf'))['where'](_0x1cb2('0x87'),_0x3b63fd[_0x1cb2('0x53')]['id']['toString']()))[_0x1cb2('0x48')](_0x1cb2('0xb0'),squel['select']()[_0x1cb2('0x81')](_0x1cb2('0xb1'))['from']('cm_hopper')[_0x1cb2('0x48')](_0x1cb2('0x87'),_0x3b63fd[_0x1cb2('0x53')]['id'][_0x1cb2('0x8b')]())))[_0x1cb2('0x8b')]();break;case _0x1cb2('0xb2'):_0x172179=squel['insert']()[_0x1cb2('0xa2')](_0x1cb2('0xa3'))[_0x1cb2('0xa4')]([_0x1cb2('0xa5'),'scheduledAt',_0x1cb2('0xa9'),_0x1cb2('0xa7'),_0x1cb2('0x65'),_0x1cb2('0x60'),_0x1cb2('0x61')],squel[_0x1cb2('0x80')]()[_0x1cb2('0x81')](_0x1cb2('0xa5'),_0x1cb2('0xa5'))['field'](_0x1cb2('0xa8'),'scheduledAt')[_0x1cb2('0x81')]('id',_0x1cb2('0xa9'))[_0x1cb2('0x81')](_0x3e7563[_0x1cb2('0xaa')][_0x1cb2('0x8b')](),_0x1cb2('0xa7'))[_0x1cb2('0x81')](_0x3b63fd[_0x1cb2('0x53')]['id']['toString'](),_0x1cb2('0x65'))[_0x1cb2('0x81')](_0x1cb2('0xa8'),'createdAt')[_0x1cb2('0x81')](_0x1cb2('0xa8'),_0x1cb2('0x61'))[_0x1cb2('0x83')](_0x1cb2('0xab'))['where'](_0x1cb2('0xb3'))[_0x1cb2('0x48')]('ListId\x20=\x20?',_0x3e7563['CmListId'][_0x1cb2('0x8b')]())['where']('phone\x20IS\x20NOT\x20NULL')['where']('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0x1cb2('0x81')](_0x1cb2('0xb1'))[_0x1cb2('0x83')](_0x1cb2('0xa3'))[_0x1cb2('0x48')](_0x1cb2('0x87'),_0x3b63fd['params']['id'][_0x1cb2('0x8b')]())))[_0x1cb2('0x8b')]();break;default:_0x172179=squel[_0x1cb2('0xa1')]()[_0x1cb2('0xa2')](_0x1cb2('0xa3'))[_0x1cb2('0xa4')]([_0x1cb2('0xa5'),_0x1cb2('0xa6'),'ContactId','ListId',_0x1cb2('0x65'),_0x1cb2('0x60'),'updatedAt'],squel['select']()[_0x1cb2('0x81')](_0x1cb2('0xa5'),'phone')[_0x1cb2('0x81')](_0x1cb2('0xa8'),_0x1cb2('0xa6'))['field']('id',_0x1cb2('0xa9'))[_0x1cb2('0x81')](_0x3e7563[_0x1cb2('0xaa')][_0x1cb2('0x8b')](),_0x1cb2('0xa7'))[_0x1cb2('0x81')](_0x3b63fd[_0x1cb2('0x53')]['id'][_0x1cb2('0x8b')](),_0x1cb2('0x65'))['field'](_0x1cb2('0xa8'),_0x1cb2('0x60'))['field'](_0x1cb2('0xa8'),'updatedAt')[_0x1cb2('0x83')]('cm_contacts')[_0x1cb2('0x48')](_0x1cb2('0xb3'))[_0x1cb2('0x48')]('ListId\x20=\x20?',_0x3e7563[_0x1cb2('0xaa')][_0x1cb2('0x8b')]())[_0x1cb2('0x48')](_0x1cb2('0xad')))[_0x1cb2('0x8b')]();}_0x579f23[_0x1cb2('0x89')](db['sequelize']['query'](_0x172179));}return BPromise[_0x1cb2('0x90')](_0x579f23);}})[_0x1cb2('0x28')](function(){return _0xbace1d;})[_0x1cb2('0x28')](respondWithResult(_0xb990db,null))[_0x1cb2('0x56')](handleError(_0xb990db,null));};exports[_0x1cb2('0xb4')]=function(_0x2516be,_0x326d5a,_0x5e97e2){return db[_0x1cb2('0x4e')][_0x1cb2('0x32')]({'where':{'id':_0x2516be[_0x1cb2('0x53')]['id']}})[_0x1cb2('0x28')](handleEntityNotFound(_0x326d5a,null))[_0x1cb2('0x28')](function(_0x41cd13){if(_0x41cd13){return _0x41cd13[_0x1cb2('0xb4')](_0x2516be['query'][_0x1cb2('0x7e')]);}})['then'](function(_0x4fa331){if(_0x4fa331){return db['CmHopper'][_0x1cb2('0x29')]({'where':{'ListId':_0x2516be[_0x1cb2('0x3e')][_0x1cb2('0x7e')],'VoiceQueueId':_0x2516be[_0x1cb2('0x53')]['id']}})[_0x1cb2('0x28')](function(){return _0x4fa331;});}})['then'](respondWithStatusCode(_0x326d5a,null))[_0x1cb2('0x56')](handleError(_0x326d5a,null));};exports[_0x1cb2('0xb5')]=function(_0x38a091,_0x12824f,_0x5cf6fe){var _0x337413={};var _0x5b8dc3={};var _0x869de0;var _0x467ff0;return db[_0x1cb2('0x4e')][_0x1cb2('0x63')]({'where':{'id':_0x38a091[_0x1cb2('0x53')]['id']}})['then'](handleEntityNotFound(_0x12824f,null))[_0x1cb2('0x28')](function(_0x35d157){if(_0x35d157){_0x869de0=_0x35d157;_0x5b8dc3[_0x1cb2('0x41')]=_[_0x1cb2('0x3d')](db[_0x1cb2('0xb6')][_0x1cb2('0x39')]);_0x5b8dc3[_0x1cb2('0x3e')]=_['keys'](_0x38a091[_0x1cb2('0x3e')]);_0x5b8dc3[_0x1cb2('0x3f')]=_[_0x1cb2('0x40')](_0x5b8dc3[_0x1cb2('0x41')],_0x5b8dc3[_0x1cb2('0x3e')]);_0x337413['attributes']=_[_0x1cb2('0x40')](_0x5b8dc3[_0x1cb2('0x41')],qs[_0x1cb2('0x43')](_0x38a091[_0x1cb2('0x3e')][_0x1cb2('0x43')]));_0x337413[_0x1cb2('0x42')]=_0x337413[_0x1cb2('0x42')][_0x1cb2('0x54')]?_0x337413[_0x1cb2('0x42')]:_0x5b8dc3[_0x1cb2('0x41')];_0x337413[_0x1cb2('0x46')]=qs[_0x1cb2('0x47')](_0x38a091[_0x1cb2('0x3e')][_0x1cb2('0x47')]);_0x337413[_0x1cb2('0x48')]=qs[_0x1cb2('0x3f')](_['pick'](_0x38a091[_0x1cb2('0x3e')],_0x5b8dc3['filters']));if(_0x38a091[_0x1cb2('0x3e')]['filter']){_0x337413[_0x1cb2('0x48')]=_[_0x1cb2('0x4b')](_0x337413['where'],{'$or':_[_0x1cb2('0x2f')](_0x337413[_0x1cb2('0x42')],function(_0x41ae9d){var _0x19deeb={};_0x19deeb[_0x41ae9d]={'$like':'%'+_0x38a091[_0x1cb2('0x3e')][_0x1cb2('0x4a')]+'%'};return _0x19deeb;})});}_0x337413=_[_0x1cb2('0x4b')]({},_0x337413,_0x38a091[_0x1cb2('0x4d')]);return _0x869de0[_0x1cb2('0xb5')](_0x337413);}})['then'](function(_0x59ddee){if(_0x59ddee){_0x467ff0=_0x59ddee['length'];if(!_0x38a091[_0x1cb2('0x3e')]['hasOwnProperty'](_0x1cb2('0x45'))){_0x337413[_0x1cb2('0x20')]=qs[_0x1cb2('0x20')](_0x38a091['query']['limit']);_0x337413[_0x1cb2('0x1e')]=qs[_0x1cb2('0x1e')](_0x38a091[_0x1cb2('0x3e')][_0x1cb2('0x1e')]);}return _0x869de0['getBlackLists'](_0x337413);}})['then'](function(_0x4eb483){if(_0x4eb483){return _0x4eb483?{'count':_0x467ff0,'rows':_0x4eb483}:null;}})[_0x1cb2('0x28')](respondWithResult(_0x12824f,null))[_0x1cb2('0x56')](handleError(_0x12824f,null));};exports['addBlackLists']=function(_0x3da3b5,_0x3577d8,_0x4d7095){var _0x464e79,_0x34a7d9;return db[_0x1cb2('0x4e')][_0x1cb2('0x32')]({'where':{'id':_0x3da3b5['params']['id']}})[_0x1cb2('0x28')](handleEntityNotFound(_0x3577d8,null))[_0x1cb2('0x28')](function(_0x512bd6){if(_0x512bd6){_0x34a7d9=_0x512bd6;return _0x512bd6[_0x1cb2('0xb7')](_0x3da3b5[_0x1cb2('0x58')][_0x1cb2('0x7e')],_['omit'](_0x3da3b5[_0x1cb2('0x58')],[_0x1cb2('0x7e'),'id'])||{});}return null;})[_0x1cb2('0xb8')](function(_0x47a453){var _0x536ac9;_0x464e79=_0x47a453||[];var _0x497c95=[];if(_0x47a453){for(var _0x1bd22a=0x0;_0x1bd22a<_0x47a453[_0x1cb2('0x54')];_0x1bd22a+=0x1){var _0x1b77ed=_0x47a453[_0x1bd22a][_0x1cb2('0x2a')]({'plain':!![]});_0x536ac9=squel[_0x1cb2('0xa1')]()[_0x1cb2('0xa2')](_0x1cb2('0xb9'))[_0x1cb2('0xa4')]([_0x1cb2('0xa5'),'ContactId','ListId','VoiceQueueId','createdAt',_0x1cb2('0x61')],squel[_0x1cb2('0x80')]()[_0x1cb2('0x81')](_0x1cb2('0xa5'),_0x1cb2('0xa5'))['field']('id','ContactId')[_0x1cb2('0x81')](_0x1b77ed[_0x1cb2('0xaa')][_0x1cb2('0x8b')](),_0x1cb2('0xa7'))[_0x1cb2('0x81')](_0x3da3b5[_0x1cb2('0x53')]['id']['toString'](),_0x1cb2('0x65'))['field'](_0x1cb2('0xa8'),_0x1cb2('0x60'))[_0x1cb2('0x81')]('NOW()','updatedAt')[_0x1cb2('0x83')]('cm_contacts')[_0x1cb2('0x48')](_0x1cb2('0xb3'))[_0x1cb2('0x48')]('ListId\x20=\x20?',_0x1b77ed['CmListId'][_0x1cb2('0x8b')]())[_0x1cb2('0x48')](_0x1cb2('0xad')))[_0x1cb2('0x8b')]();_0x497c95['push'](db[_0x1cb2('0x8a')][_0x1cb2('0x3e')](_0x536ac9));}return BPromise['all'](_0x497c95);}})[_0x1cb2('0x28')](function(){return _0x464e79;})[_0x1cb2('0x28')](respondWithResult(_0x3577d8,null))[_0x1cb2('0x56')](handleError(_0x3577d8,null));};exports[_0x1cb2('0xba')]=function(_0x436067,_0x993be8,_0x23f33a){return db[_0x1cb2('0x4e')][_0x1cb2('0x32')]({'where':{'id':_0x436067[_0x1cb2('0x53')]['id']}})[_0x1cb2('0x28')](handleEntityNotFound(_0x993be8,null))[_0x1cb2('0x28')](function(_0x3de12d){if(_0x3de12d){return _0x3de12d[_0x1cb2('0xba')](_0x436067[_0x1cb2('0x3e')][_0x1cb2('0x7e')]);}})['then'](function(_0x400396){if(_0x400396){return db[_0x1cb2('0x6a')][_0x1cb2('0x29')]({'where':{'ListId':_0x436067[_0x1cb2('0x3e')][_0x1cb2('0x7e')],'VoiceQueueId':_0x436067['params']['id']}})[_0x1cb2('0x28')](function(){return _0x400396;});}})['then'](respondWithStatusCode(_0x993be8,null))['catch'](handleError(_0x993be8,null));};
\ No newline at end of file
+var _0x35a1=['includeAll','include','findAll','rows','catch','show','params','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','VoiceQueues','UserProfileSection','autoAssociation','getHoppers','CmHopper','nolimit','order','VoiceQueueId','getHopperHistories','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','findOne','Team','online','voicePause','interface','flatMap','Agents','forEach','penalty','sequelize','transaction','addTeams','TeamVoiceQueue','upsert','each','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','format','SIP/%s','emit','userVoiceQueue:save','removeTeams','ids','User','select','field','tq.TeamId','from','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','push','toString','QueryTypes','SELECT','union','compact','isEmpty','userVoiceQueue:remove','addAgents','spread','removeAgents','isArray','getAgents','getMembers','CmList','getLists','addLists','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','ContactId','NOW()','cm_contacts','CmListId','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','onlyIfOpen','scheduledAt','ListId','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','defaults','redis','localhost','./voiceQueue.socket','register','status','json','offset','undefined','count','limit','set','reject','save','update','destroy','inbound','QueueCampaigns','outbound','filter','ignore','map','value','includes','find','type','name','UserProfileResource','then','end','sendStatus','error','stack','send','VoiceQueue','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','merge','options'];(function(_0x2e5db9,_0x253a85){var _0xa45b72=function(_0x387c06){while(--_0x387c06){_0x2e5db9['push'](_0x2e5db9['shift']());}};_0xa45b72(++_0x253a85);}(_0x35a1,0x6d));var _0x135a=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x35a1[_0x1694f5];return _0x5b4321;};'use strict';var emlformat=require(_0x135a('0x0'));var rimraf=require(_0x135a('0x1'));var zipdir=require(_0x135a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x135a('0x3'));var moment=require(_0x135a('0x4'));var BPromise=require(_0x135a('0x5'));var Mustache=require('mustache');var util=require(_0x135a('0x6'));var path=require(_0x135a('0x7'));var sox=require(_0x135a('0x8'));var csv=require(_0x135a('0x9'));var ejs=require(_0x135a('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x135a('0xb'));var deskjs=require(_0x135a('0xc'));var toCsv=require(_0x135a('0x9'));var querystring=require('querystring');var Papa=require(_0x135a('0xd'));var Redis=require(_0x135a('0xe'));var authService=require(_0x135a('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x135a('0x10'));var hardwareService=require(_0x135a('0x11'));var logger=require('../../config/logger')(_0x135a('0x12'));var utils=require(_0x135a('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x135a('0x14'))['db'];config['redis']=_[_0x135a('0x15')](config[_0x135a('0x16')],{'host':_0x135a('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x135a('0x16')]));require(_0x135a('0x18'))[_0x135a('0x19')](socket);function respondWithStatusCode(_0x29efde,_0x1cd6da){_0x1cd6da=_0x1cd6da||0xcc;return function(_0x90919c){if(_0x90919c){return _0x29efde['sendStatus'](_0x1cd6da);}return _0x29efde[_0x135a('0x1a')](_0x1cd6da)['end']();};}function respondWithResult(_0x43a262,_0xe8515e){_0xe8515e=_0xe8515e||0xc8;return function(_0x4efa8c){if(_0x4efa8c){return _0x43a262['status'](_0xe8515e)[_0x135a('0x1b')](_0x4efa8c);}};}function respondWithFilteredResult(_0x373b78,_0x4b008a){return function(_0x2dc606){if(_0x2dc606){var _0xb0effa=typeof _0x4b008a[_0x135a('0x1c')]===_0x135a('0x1d')&&typeof _0x4b008a['limit']===_0x135a('0x1d');var _0x1ac316=_0x2dc606[_0x135a('0x1e')];var _0x1ea500=_0xb0effa?0x0:_0x4b008a[_0x135a('0x1c')];var _0x4b2444=_0xb0effa?_0x2dc606['count']:_0x4b008a['offset']+_0x4b008a[_0x135a('0x1f')];var _0x34e6a0;if(_0x4b2444>=_0x1ac316){_0x4b2444=_0x1ac316;_0x34e6a0=0xc8;}else{_0x34e6a0=0xce;}_0x373b78[_0x135a('0x1a')](_0x34e6a0);return _0x373b78[_0x135a('0x20')]('Content-Range',_0x1ea500+'-'+_0x4b2444+'/'+_0x1ac316)[_0x135a('0x1b')](_0x2dc606);}return null;};}function patchUpdates(_0x1dbd04){return function(_0x530a78){try{jsonpatch['apply'](_0x530a78,_0x1dbd04,!![]);}catch(_0x2c26aa){return BPromise[_0x135a('0x21')](_0x2c26aa);}return _0x530a78[_0x135a('0x22')]();};}function saveUpdates(_0x1d9dfd,_0x44a39e){return function(_0x1191fd){if(_0x1191fd){return _0x1191fd[_0x135a('0x23')](_0x1d9dfd)['then'](function(_0x36e36c){return _0x36e36c;});}return null;};}function removeEntity(_0x36c528,_0x4946f1){return function(_0x5a24cd){if(_0x5a24cd){return _0x5a24cd[_0x135a('0x24')]()['then'](function(){var _0x32dc90=_0x5a24cd['get']({'plain':!![]});var _0x2883af=[{'name':'VoiceQueues','value':_0x135a('0x25'),'ignore':![]},{'name':_0x135a('0x26'),'value':_0x135a('0x27'),'ignore':![]}];var _0x361c3f=_(_0x2883af)[_0x135a('0x28')](_0x135a('0x29'))[_0x135a('0x2a')](_0x135a('0x2b'))[_0x135a('0x2b')]();if(_[_0x135a('0x2c')](_0x361c3f,_0x32dc90['type'])){return;}var _0x40731a=_[_0x135a('0x2d')](_0x2883af,[_0x135a('0x2b'),_0x32dc90[_0x135a('0x2e')]])[_0x135a('0x2f')];return db[_0x135a('0x30')][_0x135a('0x24')]({'where':{'type':_0x40731a,'resourceId':_0x32dc90['id']}})['then'](function(){return _0x5a24cd;});})[_0x135a('0x31')](function(){_0x36c528[_0x135a('0x1a')](0xcc)[_0x135a('0x32')]();});}};}function handleEntityNotFound(_0x426c01,_0x15c845){return function(_0x3131f1){if(!_0x3131f1){_0x426c01[_0x135a('0x33')](0x194);}return _0x3131f1;};}function handleError(_0x268f23,_0xf2f21a){_0xf2f21a=_0xf2f21a||0x1f4;return function(_0x499647){logger[_0x135a('0x34')](_0x499647[_0x135a('0x35')]);if(_0x499647[_0x135a('0x2f')]){delete _0x499647['name'];}_0x268f23[_0x135a('0x1a')](_0xf2f21a)[_0x135a('0x36')](_0x499647);};}exports['index']=function(_0x352c90,_0x6d7517){var _0x59beb0={},_0xa1e508={},_0x270e52={'count':0x0,'rows':[]};var _0xfce4e=_[_0x135a('0x2a')](db[_0x135a('0x37')][_0x135a('0x38')],function(_0x26bbd0){return{'name':_0x26bbd0[_0x135a('0x39')],'type':_0x26bbd0[_0x135a('0x2e')]['key']};});_0xa1e508[_0x135a('0x3a')]=_[_0x135a('0x2a')](_0xfce4e,_0x135a('0x2f'));_0xa1e508[_0x135a('0x3b')]=_[_0x135a('0x3c')](_0x352c90[_0x135a('0x3b')]);_0xa1e508[_0x135a('0x3d')]=_[_0x135a('0x3e')](_0xa1e508[_0x135a('0x3a')],_0xa1e508[_0x135a('0x3b')]);_0x59beb0[_0x135a('0x3f')]=_[_0x135a('0x3e')](_0xa1e508[_0x135a('0x3a')],qs[_0x135a('0x40')](_0x352c90[_0x135a('0x3b')]['fields']));_0x59beb0[_0x135a('0x3f')]=_0x59beb0[_0x135a('0x3f')][_0x135a('0x41')]?_0x59beb0[_0x135a('0x3f')]:_0xa1e508[_0x135a('0x3a')];if(!_0x352c90['query'][_0x135a('0x42')]('nolimit')){_0x59beb0['limit']=qs[_0x135a('0x1f')](_0x352c90[_0x135a('0x3b')]['limit']);_0x59beb0['offset']=qs[_0x135a('0x1c')](_0x352c90[_0x135a('0x3b')][_0x135a('0x1c')]);}_0x59beb0['order']=qs[_0x135a('0x43')](_0x352c90[_0x135a('0x3b')][_0x135a('0x43')]);_0x59beb0[_0x135a('0x44')]=qs['filters'](_[_0x135a('0x45')](_0x352c90[_0x135a('0x3b')],_0xa1e508[_0x135a('0x3d')]),_0xfce4e);if(_0x352c90[_0x135a('0x3b')]['filter']){_0x59beb0['where']=_[_0x135a('0x46')](_0x59beb0[_0x135a('0x44')],{'$or':_['map'](_0xfce4e,function(_0x10dbb9){if(_0x10dbb9['type']!=='VIRTUAL'){var _0x43df99={};_0x43df99[_0x10dbb9[_0x135a('0x2f')]]={'$like':'%'+_0x352c90['query']['filter']+'%'};return _0x43df99;}})});}_0x59beb0=_[_0x135a('0x46')]({},_0x59beb0,_0x352c90[_0x135a('0x47')]);var _0x397542={'where':_0x59beb0[_0x135a('0x44')]};return db[_0x135a('0x37')][_0x135a('0x1e')](_0x397542)[_0x135a('0x31')](function(_0x55b5b5){_0x270e52[_0x135a('0x1e')]=_0x55b5b5;if(_0x352c90[_0x135a('0x3b')][_0x135a('0x48')]){_0x59beb0[_0x135a('0x49')]=[{'all':!![]}];}return db[_0x135a('0x37')][_0x135a('0x4a')](_0x59beb0);})[_0x135a('0x31')](function(_0x53f95b){_0x270e52[_0x135a('0x4b')]=_0x53f95b;return _0x270e52;})[_0x135a('0x31')](respondWithFilteredResult(_0x6d7517,_0x59beb0))[_0x135a('0x4c')](handleError(_0x6d7517,null));};exports[_0x135a('0x4d')]=function(_0x357b24,_0x4676dc){var _0x5bafe0={'raw':![],'where':{'id':_0x357b24[_0x135a('0x4e')]['id']}},_0x4bff38={};_0x4bff38['model']=_[_0x135a('0x3c')](db['VoiceQueue']['rawAttributes']);_0x4bff38[_0x135a('0x3b')]=_[_0x135a('0x3c')](_0x357b24[_0x135a('0x3b')]);_0x4bff38[_0x135a('0x3d')]=_['intersection'](_0x4bff38['model'],_0x4bff38[_0x135a('0x3b')]);_0x5bafe0[_0x135a('0x3f')]=_['intersection'](_0x4bff38['model'],qs[_0x135a('0x40')](_0x357b24[_0x135a('0x3b')][_0x135a('0x40')]));_0x5bafe0[_0x135a('0x3f')]=_0x5bafe0[_0x135a('0x3f')]['length']?_0x5bafe0['attributes']:_0x4bff38[_0x135a('0x3a')];if(_0x357b24['query']['includeAll']){_0x5bafe0['include']=[{'all':!![]}];}_0x5bafe0=_[_0x135a('0x46')]({},_0x5bafe0,_0x357b24['options']);return db['VoiceQueue']['find'](_0x5bafe0)[_0x135a('0x31')](handleEntityNotFound(_0x4676dc,null))[_0x135a('0x31')](respondWithResult(_0x4676dc,null))[_0x135a('0x4c')](handleError(_0x4676dc,null));};exports[_0x135a('0x4f')]=function(_0x4a3422,_0x47ff7f){return db[_0x135a('0x37')][_0x135a('0x4f')](_0x4a3422[_0x135a('0x50')],{})[_0x135a('0x31')](function(_0x2683de){var _0x56a004=_0x4a3422[_0x135a('0x51')][_0x135a('0x52')]({'plain':!![]});if(!_0x56a004)throw new Error(_0x135a('0x53'));if(_0x56a004[_0x135a('0x54')]===_0x135a('0x51')){var _0x41a737=_0x2683de['get']({'plain':!![]});var _0x27fee0=[{'name':'VoiceQueues','value':_0x135a('0x25')},{'name':_0x135a('0x26'),'value':_0x135a('0x27')}];var _0x39a01a=_['find'](_0x27fee0,['value',_0x41a737[_0x135a('0x2e')]])[_0x135a('0x2f')];return db['UserProfileSection'][_0x135a('0x2d')]({'where':{'name':_0x39a01a,'userProfileId':_0x56a004[_0x135a('0x55')]},'raw':!![]})['then'](function(_0x1bda85){if(_0x1bda85&&_0x1bda85['autoAssociation']===0x0){return db[_0x135a('0x30')][_0x135a('0x4f')]({'name':_0x41a737[_0x135a('0x2f')],'resourceId':_0x41a737['id'],'type':_0x1bda85[_0x135a('0x2f')],'sectionId':_0x1bda85['id']},{})[_0x135a('0x31')](function(){return _0x2683de;});}else{return _0x2683de;}})[_0x135a('0x4c')](function(_0x474100){logger[_0x135a('0x34')](_0x135a('0x56'),_0x474100);throw _0x474100;});}return _0x2683de;})['then'](respondWithResult(_0x47ff7f,0xc9))[_0x135a('0x4c')](handleError(_0x47ff7f,null));};exports[_0x135a('0x57')]=function(_0x49042f,_0xfca9bb){var _0x19254b={'where':{'id':_0x49042f[_0x135a('0x4e')]['id']}},_0x3fa73c={};_0x3fa73c[_0x135a('0x3a')]=_['keys'](db[_0x135a('0x37')]['rawAttributes']);_0x19254b['attributes']=_[_0x135a('0x3e')](_0x3fa73c[_0x135a('0x3a')],qs[_0x135a('0x40')](_0x49042f[_0x135a('0x3b')]['fields']));_0x19254b[_0x135a('0x3f')]=_0x19254b[_0x135a('0x3f')][_0x135a('0x41')]?_0x19254b[_0x135a('0x3f')]:_0x3fa73c[_0x135a('0x3a')];if(_0x49042f['query'][_0x135a('0x48')]){_0x19254b[_0x135a('0x49')]=[{'all':!![]}];}_0x19254b=_[_0x135a('0x46')]({},_0x19254b,_0x49042f[_0x135a('0x47')]);return db[_0x135a('0x37')][_0x135a('0x2d')](_0x19254b)[_0x135a('0x31')](handleEntityNotFound(_0xfca9bb,null))[_0x135a('0x31')](function(_0x383885){if(_0x383885){var _0x825736=_0x383885[_0x135a('0x52')]({'plain':!![]});_0x825736=qs[_0x135a('0x58')](_0x825736,['id',_0x135a('0x59'),_0x135a('0x5a')]);_0x49042f[_0x135a('0x50')]=_['omit'](_0x49042f[_0x135a('0x50')],['id',_0x135a('0x59'),_0x135a('0x5a')]);return db[_0x135a('0x37')][_0x135a('0x4f')](_[_0x135a('0x46')](_0x825736,_0x49042f[_0x135a('0x50')]),{'include':_0x49042f['query']['includeAll']?[{'all':!![]}]:undefined})[_0x135a('0x31')](function(_0x30b749){var _0xb70baf=_0x49042f['user'][_0x135a('0x52')]({'plain':!![]});if(!_0xb70baf)throw new Error(_0x135a('0x53'));if(_0xb70baf[_0x135a('0x54')]===_0x135a('0x51')){var _0x6db172=_0x30b749[_0x135a('0x52')]({'plain':!![]});var _0x50e1fb=[{'name':_0x135a('0x5b'),'value':_0x135a('0x25')},{'name':_0x135a('0x26'),'value':_0x135a('0x27')}];var _0x3ce8d9=_['find'](_0x50e1fb,['value',_0x6db172[_0x135a('0x2e')]])[_0x135a('0x2f')];return db[_0x135a('0x5c')][_0x135a('0x2d')]({'where':{'name':_0x3ce8d9,'userProfileId':_0xb70baf[_0x135a('0x55')]},'raw':!![]})['then'](function(_0x1b68a1){if(_0x1b68a1&&_0x1b68a1[_0x135a('0x5d')]===0x0){return db['UserProfileResource'][_0x135a('0x4f')]({'name':_0x6db172[_0x135a('0x2f')],'resourceId':_0x6db172['id'],'type':_0x1b68a1[_0x135a('0x2f')],'sectionId':_0x1b68a1['id']},{})['then'](function(){return _0x30b749;});}else{return _0x30b749;}})[_0x135a('0x4c')](function(_0x19d60f){logger[_0x135a('0x34')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x19d60f);throw _0x19d60f;});}return _0x30b749;});}})[_0x135a('0x31')](respondWithResult(_0xfca9bb,0xc9))[_0x135a('0x4c')](handleError(_0xfca9bb,null));};exports[_0x135a('0x23')]=function(_0x31f67b,_0x29d7e1){if(_0x31f67b[_0x135a('0x50')]['id']){delete _0x31f67b[_0x135a('0x50')]['id'];}return db[_0x135a('0x37')][_0x135a('0x2d')]({'where':{'id':_0x31f67b['params']['id']}})[_0x135a('0x31')](handleEntityNotFound(_0x29d7e1,null))[_0x135a('0x31')](saveUpdates(_0x31f67b['body'],null))[_0x135a('0x31')](respondWithResult(_0x29d7e1,null))[_0x135a('0x4c')](handleError(_0x29d7e1,null));};exports[_0x135a('0x24')]=function(_0x347de4,_0x45a172){return db[_0x135a('0x37')][_0x135a('0x2d')]({'where':{'id':_0x347de4[_0x135a('0x4e')]['id']}})[_0x135a('0x31')](handleEntityNotFound(_0x45a172,null))[_0x135a('0x31')](removeEntity(_0x45a172,null))['catch'](handleError(_0x45a172,null));};exports[_0x135a('0x5e')]=function(_0x55d7b7,_0x751191,_0x5ae93a){var _0x5c41fa={'raw':![],'where':{}};var _0x48a890={};var _0xf0fddb={'count':0x0,'rows':[]};return db[_0x135a('0x37')]['findOne']({'where':{'id':_0x55d7b7[_0x135a('0x4e')]['id']}})[_0x135a('0x31')](handleEntityNotFound(_0x751191,null))['then'](function(_0x57b5ef){if(_0x57b5ef){_0x48a890[_0x135a('0x3a')]=_['keys'](db[_0x135a('0x5f')]['rawAttributes']);_0x48a890['query']=_[_0x135a('0x3c')](_0x55d7b7[_0x135a('0x3b')]);_0x48a890[_0x135a('0x3d')]=_[_0x135a('0x3e')](_0x48a890[_0x135a('0x3a')],_0x48a890[_0x135a('0x3b')]);_0x5c41fa[_0x135a('0x3f')]=_[_0x135a('0x3e')](_0x48a890[_0x135a('0x3a')],qs[_0x135a('0x40')](_0x55d7b7[_0x135a('0x3b')][_0x135a('0x40')]));_0x5c41fa[_0x135a('0x3f')]=_0x5c41fa[_0x135a('0x3f')][_0x135a('0x41')]?_0x5c41fa[_0x135a('0x3f')]:_0x48a890[_0x135a('0x3a')];if(!_0x55d7b7[_0x135a('0x3b')]['hasOwnProperty'](_0x135a('0x60'))){_0x5c41fa[_0x135a('0x1f')]=qs[_0x135a('0x1f')](_0x55d7b7['query'][_0x135a('0x1f')]);_0x5c41fa[_0x135a('0x1c')]=qs[_0x135a('0x1c')](_0x55d7b7[_0x135a('0x3b')][_0x135a('0x1c')]);}_0x5c41fa[_0x135a('0x61')]=qs['sort'](_0x55d7b7[_0x135a('0x3b')][_0x135a('0x43')]);_0x5c41fa[_0x135a('0x44')]=qs[_0x135a('0x3d')](_[_0x135a('0x45')](_0x55d7b7[_0x135a('0x3b')],_0x48a890['filters']));_0x5c41fa['where'][_0x135a('0x62')]=_0x57b5ef['id'];if(_0x55d7b7['query']['filter']){_0x5c41fa[_0x135a('0x44')]=_[_0x135a('0x46')](_0x5c41fa[_0x135a('0x44')],{'$or':_[_0x135a('0x2a')](_0x5c41fa['attributes'],function(_0x5a0c63){var _0x5eb1c8={};_0x5eb1c8[_0x5a0c63]={'$like':'%'+_0x55d7b7[_0x135a('0x3b')][_0x135a('0x28')]+'%'};return _0x5eb1c8;})});}_0x5c41fa=_[_0x135a('0x46')]({},_0x5c41fa,_0x55d7b7[_0x135a('0x47')]);return db[_0x135a('0x5f')]['count']({'where':_0x5c41fa['where']})[_0x135a('0x31')](function(_0xce9a3d){_0xf0fddb[_0x135a('0x1e')]=_0xce9a3d;if(_0x55d7b7[_0x135a('0x3b')][_0x135a('0x48')]){_0x5c41fa[_0x135a('0x49')]=[{'all':!![]}];}return db[_0x135a('0x5f')]['findAll'](_0x5c41fa);})[_0x135a('0x31')](function(_0x540664){_0xf0fddb[_0x135a('0x4b')]=_0x540664;return _0xf0fddb;});}})['then'](respondWithFilteredResult(_0x751191,_0x5c41fa))[_0x135a('0x4c')](handleError(_0x751191,null));};exports[_0x135a('0x63')]=function(_0x117e3c,_0x3b7921,_0x1dca8e){var _0x364512={'raw':!![],'where':{}};var _0x1de31f={};var _0x174de8={'count':0x0,'rows':[]};return db[_0x135a('0x37')]['findOne']({'where':{'id':_0x117e3c[_0x135a('0x4e')]['id']}})[_0x135a('0x31')](handleEntityNotFound(_0x3b7921,null))[_0x135a('0x31')](function(_0x108834){if(_0x108834){_0x1de31f['model']=_['keys'](db['CmHopperHistory'][_0x135a('0x38')]);_0x1de31f[_0x135a('0x3b')]=_[_0x135a('0x3c')](_0x117e3c['query']);_0x1de31f[_0x135a('0x3d')]=_[_0x135a('0x3e')](_0x1de31f[_0x135a('0x3a')],_0x1de31f[_0x135a('0x3b')]);_0x364512['attributes']=_['intersection'](_0x1de31f[_0x135a('0x3a')],qs[_0x135a('0x40')](_0x117e3c['query'][_0x135a('0x40')]));_0x364512[_0x135a('0x3f')]=_0x364512[_0x135a('0x3f')][_0x135a('0x41')]?_0x364512[_0x135a('0x3f')]:_0x1de31f['model'];if(!_0x117e3c['query'][_0x135a('0x42')]('nolimit')){_0x364512[_0x135a('0x1f')]=qs[_0x135a('0x1f')](_0x117e3c[_0x135a('0x3b')][_0x135a('0x1f')]);_0x364512[_0x135a('0x1c')]=qs[_0x135a('0x1c')](_0x117e3c[_0x135a('0x3b')][_0x135a('0x1c')]);}_0x364512['order']=qs[_0x135a('0x43')](_0x117e3c['query'][_0x135a('0x43')]);_0x364512[_0x135a('0x44')]=qs[_0x135a('0x3d')](_['pick'](_0x117e3c[_0x135a('0x3b')],_0x1de31f[_0x135a('0x3d')]));_0x364512['where'][_0x135a('0x62')]=_0x108834['id'];if(_0x117e3c['query'][_0x135a('0x28')]){_0x364512[_0x135a('0x44')]=_[_0x135a('0x46')](_0x364512['where'],{'$or':_[_0x135a('0x2a')](_0x364512[_0x135a('0x3f')],function(_0x21f509){var _0x19478d={};_0x19478d[_0x21f509]={'$like':'%'+_0x117e3c[_0x135a('0x3b')]['filter']+'%'};return _0x19478d;})});}_0x364512=_[_0x135a('0x46')]({},_0x364512,_0x117e3c[_0x135a('0x47')]);return db['CmHopperHistory'][_0x135a('0x1e')]({'where':_0x364512['where']})[_0x135a('0x31')](function(_0x1d7e38){_0x174de8[_0x135a('0x1e')]=_0x1d7e38;if(_0x117e3c[_0x135a('0x3b')]['includeAll']){_0x364512['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x135a('0x4a')](_0x364512);})[_0x135a('0x31')](function(_0x3864bc){_0x174de8[_0x135a('0x4b')]=_0x3864bc;return _0x174de8;});}})[_0x135a('0x31')](respondWithFilteredResult(_0x3b7921,_0x364512))[_0x135a('0x4c')](handleError(_0x3b7921,null));};exports[_0x135a('0x64')]=function(_0x870d2a,_0x21effa,_0x2cea3c){var _0x18b7ca={'raw':!![],'where':{}};var _0xcd09db={};var _0x25e208={'count':0x0,'rows':[]};return db[_0x135a('0x37')]['findOne']({'where':{'id':_0x870d2a[_0x135a('0x4e')]['id']}})['then'](handleEntityNotFound(_0x21effa,null))[_0x135a('0x31')](function(_0xa5d76c){if(_0xa5d76c){_0xcd09db[_0x135a('0x3a')]=_[_0x135a('0x3c')](db['CmHopperFinal']['rawAttributes']);_0xcd09db[_0x135a('0x3b')]=_['keys'](_0x870d2a[_0x135a('0x3b')]);_0xcd09db[_0x135a('0x3d')]=_[_0x135a('0x3e')](_0xcd09db[_0x135a('0x3a')],_0xcd09db[_0x135a('0x3b')]);_0x18b7ca[_0x135a('0x3f')]=_[_0x135a('0x3e')](_0xcd09db[_0x135a('0x3a')],qs[_0x135a('0x40')](_0x870d2a[_0x135a('0x3b')][_0x135a('0x40')]));_0x18b7ca['attributes']=_0x18b7ca[_0x135a('0x3f')]['length']?_0x18b7ca[_0x135a('0x3f')]:_0xcd09db[_0x135a('0x3a')];if(!_0x870d2a[_0x135a('0x3b')][_0x135a('0x42')]('nolimit')){_0x18b7ca[_0x135a('0x1f')]=qs[_0x135a('0x1f')](_0x870d2a[_0x135a('0x3b')]['limit']);_0x18b7ca[_0x135a('0x1c')]=qs[_0x135a('0x1c')](_0x870d2a[_0x135a('0x3b')]['offset']);}_0x18b7ca['order']=qs[_0x135a('0x43')](_0x870d2a['query'][_0x135a('0x43')]);_0x18b7ca['where']=qs[_0x135a('0x3d')](_['pick'](_0x870d2a[_0x135a('0x3b')],_0xcd09db[_0x135a('0x3d')]));_0x18b7ca[_0x135a('0x44')][_0x135a('0x62')]=_0xa5d76c['id'];if(_0x870d2a['query'][_0x135a('0x28')]){_0x18b7ca[_0x135a('0x44')]=_[_0x135a('0x46')](_0x18b7ca[_0x135a('0x44')],{'$or':_[_0x135a('0x2a')](_0x18b7ca[_0x135a('0x3f')],function(_0x4731d6){var _0x29816c={};_0x29816c[_0x4731d6]={'$like':'%'+_0x870d2a[_0x135a('0x3b')][_0x135a('0x28')]+'%'};return _0x29816c;})});}_0x18b7ca=_['merge']({},_0x18b7ca,_0x870d2a[_0x135a('0x47')]);return db[_0x135a('0x65')][_0x135a('0x1e')]({'where':_0x18b7ca['where']})[_0x135a('0x31')](function(_0x27f6f4){_0x25e208[_0x135a('0x1e')]=_0x27f6f4;if(_0x870d2a['query']['includeAll']){_0x18b7ca[_0x135a('0x49')]=[{'all':!![]}];}return db['CmHopperFinal'][_0x135a('0x4a')](_0x18b7ca);})[_0x135a('0x31')](function(_0x1c6c38){_0x25e208['rows']=_0x1c6c38;return _0x25e208;});}})[_0x135a('0x31')](respondWithFilteredResult(_0x21effa,_0x18b7ca))[_0x135a('0x4c')](handleError(_0x21effa,null));};exports[_0x135a('0x66')]=function(_0x3aac78,_0x171a07,_0xa79fff){var _0x55b112={'raw':!![],'where':{}};var _0x29e4e8={};var _0x4c8c0e={'count':0x0,'rows':[]};return db[_0x135a('0x37')]['findOne']({'where':{'id':_0x3aac78['params']['id']}})[_0x135a('0x31')](handleEntityNotFound(_0x171a07,null))[_0x135a('0x31')](function(_0x5586ad){if(_0x5586ad){_0x29e4e8[_0x135a('0x3a')]=_[_0x135a('0x3c')](db[_0x135a('0x67')][_0x135a('0x38')]);_0x29e4e8['query']=_[_0x135a('0x3c')](_0x3aac78[_0x135a('0x3b')]);_0x29e4e8['filters']=_['intersection'](_0x29e4e8[_0x135a('0x3a')],_0x29e4e8[_0x135a('0x3b')]);_0x55b112[_0x135a('0x3f')]=_[_0x135a('0x3e')](_0x29e4e8[_0x135a('0x3a')],qs[_0x135a('0x40')](_0x3aac78['query']['fields']));_0x55b112[_0x135a('0x3f')]=_0x55b112['attributes'][_0x135a('0x41')]?_0x55b112[_0x135a('0x3f')]:_0x29e4e8[_0x135a('0x3a')];if(!_0x3aac78[_0x135a('0x3b')][_0x135a('0x42')](_0x135a('0x60'))){_0x55b112[_0x135a('0x1f')]=qs[_0x135a('0x1f')](_0x3aac78[_0x135a('0x3b')][_0x135a('0x1f')]);_0x55b112['offset']=qs[_0x135a('0x1c')](_0x3aac78[_0x135a('0x3b')][_0x135a('0x1c')]);}_0x55b112[_0x135a('0x61')]=qs[_0x135a('0x43')](_0x3aac78[_0x135a('0x3b')][_0x135a('0x43')]);_0x55b112[_0x135a('0x44')]=qs['filters'](_[_0x135a('0x45')](_0x3aac78[_0x135a('0x3b')],_0x29e4e8[_0x135a('0x3d')]));_0x55b112[_0x135a('0x44')][_0x135a('0x62')]=_0x5586ad['id'];if(_0x3aac78['query'][_0x135a('0x28')]){_0x55b112[_0x135a('0x44')]=_[_0x135a('0x46')](_0x55b112[_0x135a('0x44')],{'$or':_[_0x135a('0x2a')](_0x55b112[_0x135a('0x3f')],function(_0x287f6b){var _0xfad3a5={};_0xfad3a5[_0x287f6b]={'$like':'%'+_0x3aac78[_0x135a('0x3b')]['filter']+'%'};return _0xfad3a5;})});}_0x55b112=_[_0x135a('0x46')]({},_0x55b112,_0x3aac78['options']);return db[_0x135a('0x67')][_0x135a('0x1e')]({'where':_0x55b112['where']})[_0x135a('0x31')](function(_0x4745c9){_0x4c8c0e[_0x135a('0x1e')]=_0x4745c9;if(_0x3aac78['query'][_0x135a('0x48')]){_0x55b112[_0x135a('0x49')]=[{'all':!![]}];}return db[_0x135a('0x67')][_0x135a('0x4a')](_0x55b112);})['then'](function(_0x5854dc){_0x4c8c0e[_0x135a('0x4b')]=_0x5854dc;return _0x4c8c0e;});}})[_0x135a('0x31')](respondWithFilteredResult(_0x171a07,_0x55b112))[_0x135a('0x4c')](handleError(_0x171a07,null));};exports[_0x135a('0x68')]=function(_0x5af46c,_0x526942,_0x1d02da){var _0x23f972={};var _0x3cff6d={};var _0x1daa25;var _0x19469d;return db[_0x135a('0x37')][_0x135a('0x69')]({'where':{'id':_0x5af46c['params']['id']}})[_0x135a('0x31')](handleEntityNotFound(_0x526942,null))[_0x135a('0x31')](function(_0x504f4a){if(_0x504f4a){_0x1daa25=_0x504f4a;_0x3cff6d[_0x135a('0x3a')]=_[_0x135a('0x3c')](db[_0x135a('0x6a')][_0x135a('0x38')]);_0x3cff6d[_0x135a('0x3b')]=_[_0x135a('0x3c')](_0x5af46c[_0x135a('0x3b')]);_0x3cff6d[_0x135a('0x3d')]=_[_0x135a('0x3e')](_0x3cff6d[_0x135a('0x3a')],_0x3cff6d[_0x135a('0x3b')]);_0x23f972[_0x135a('0x3f')]=_[_0x135a('0x3e')](_0x3cff6d[_0x135a('0x3a')],qs[_0x135a('0x40')](_0x5af46c[_0x135a('0x3b')][_0x135a('0x40')]));_0x23f972[_0x135a('0x3f')]=_0x23f972[_0x135a('0x3f')][_0x135a('0x41')]?_0x23f972[_0x135a('0x3f')]:_0x3cff6d['model'];_0x23f972[_0x135a('0x61')]=qs['sort'](_0x5af46c['query'][_0x135a('0x43')]);_0x23f972[_0x135a('0x44')]=qs[_0x135a('0x3d')](_[_0x135a('0x45')](_0x5af46c[_0x135a('0x3b')],_0x3cff6d[_0x135a('0x3d')]));if(_0x5af46c[_0x135a('0x3b')]['filter']){_0x23f972[_0x135a('0x44')]=_[_0x135a('0x46')](_0x23f972[_0x135a('0x44')],{'$or':_[_0x135a('0x2a')](_0x23f972[_0x135a('0x3f')],function(_0x20511a){var _0x297cc7={};_0x297cc7[_0x20511a]={'$like':'%'+_0x5af46c['query']['filter']+'%'};return _0x297cc7;})});}_0x23f972=_[_0x135a('0x46')]({},_0x23f972,_0x5af46c[_0x135a('0x47')]);return _0x1daa25['getTeams'](_0x23f972);}})[_0x135a('0x31')](function(_0x2253c1){if(_0x2253c1){_0x19469d=_0x2253c1[_0x135a('0x41')];if(!_0x5af46c['query'][_0x135a('0x42')]('nolimit')){_0x23f972[_0x135a('0x1f')]=qs['limit'](_0x5af46c[_0x135a('0x3b')][_0x135a('0x1f')]);_0x23f972[_0x135a('0x1c')]=qs['offset'](_0x5af46c[_0x135a('0x3b')][_0x135a('0x1c')]);}return _0x1daa25[_0x135a('0x68')](_0x23f972);}})[_0x135a('0x31')](function(_0x5360d8){if(_0x5360d8){return _0x5360d8?{'count':_0x19469d,'rows':_0x5360d8}:null;}})[_0x135a('0x31')](respondWithResult(_0x526942,null))[_0x135a('0x4c')](handleError(_0x526942,null));};exports['addTeams']=function(_0x23935c,_0x411661,_0x2844c8){var _0xadaf31=_0x23935c[_0x135a('0x50')]['teams'];var _0x2490a0=_[_0x135a('0x2a')](_0xadaf31,'id');return db['Team'][_0x135a('0x4a')]({'where':{'id':_0x2490a0},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0x135a('0x2f'),_0x135a('0x6b'),_0x135a('0x6c'),_0x135a('0x6d')],'raw':!![]}]})[_0x135a('0x31')](function(_0x32681a){if(_0x32681a){var _0x541ba0=_[_0x135a('0x6e')](_0x32681a,function(_0x40f7cc){var _0x38291e=_0x40f7cc['get']({'plain':!![]});_0x38291e[_0x135a('0x6f')][_0x135a('0x70')](function(_0xd35bec){_0xd35bec[_0x135a('0x71')]=_[_0x135a('0x2d')](_0xadaf31,{'id':_0x38291e['id']})[_0x135a('0x71')];});return _0x38291e['Agents'];});return db[_0x135a('0x37')][_0x135a('0x2d')]({'where':{'id':_0x23935c[_0x135a('0x4e')]['id']}})[_0x135a('0x31')](function(_0x58985a){return db[_0x135a('0x72')][_0x135a('0x73')](function(_0x44d840){return _0x58985a[_0x135a('0x74')](_0x2490a0,{'transaction':_0x44d840})[_0x135a('0x31')](function(){return BPromise['each'](_0xadaf31,function(_0x1affde){return db[_0x135a('0x75')][_0x135a('0x76')]({'TeamId':_0x1affde['id'],'VoiceQueueId':_0x23935c[_0x135a('0x4e')]['id'],'penalty':_0x1affde[_0x135a('0x71')]},{'transaction':_0x44d840});});})['then'](function(){return BPromise[_0x135a('0x77')](_0x541ba0,function(_0x993e5b){return db[_0x135a('0x78')][_0x135a('0x79')]({'where':{'UserId':_0x993e5b['id'],'VoiceQueueId':_0x23935c[_0x135a('0x4e')]['id']},'defaults':{'penalty':_0x993e5b[_0x135a('0x71')]},'transaction':_0x44d840});});})[_0x135a('0x31')](function(){return BPromise[_0x135a('0x77')](_[_0x135a('0x28')](_0x541ba0,{'online':!![]}),function(_0x197a6f){return db[_0x135a('0x7a')][_0x135a('0x76')]({'membername':_0x197a6f[_0x135a('0x2f')],'UserId':_0x197a6f['id'],'queue_name':_0x58985a[_0x135a('0x2f')],'VoiceQueueId':_0x58985a['id'],'interface':_[_0x135a('0x7b')](_0x197a6f[_0x135a('0x6d')])?util[_0x135a('0x7c')](_0x135a('0x7d'),_0x197a6f[_0x135a('0x2f')]):_0x197a6f[_0x135a('0x6d')],'paused':_0x197a6f[_0x135a('0x6c')]||![],'penalty':_0x197a6f[_0x135a('0x71')]},{'transaction':_0x44d840});});})[_0x135a('0x31')](function(){_0x541ba0[_0x135a('0x70')](function(_0x1d197b){socket[_0x135a('0x7e')](_0x135a('0x7f'),{'UserId':_0x1d197b['id'],'VoiceQueueId':_0x58985a['id']});});});});});}})[_0x135a('0x31')](respondWithStatusCode(_0x411661,null))['catch'](handleError(_0x411661,null));};exports[_0x135a('0x80')]=function(_0x2bf378,_0x41c050,_0x42e2a5){return db[_0x135a('0x6a')][_0x135a('0x4a')]({'where':{'id':_0x2bf378[_0x135a('0x3b')][_0x135a('0x81')]},'attributes':['id'],'include':[{'model':db[_0x135a('0x82')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x135a('0x31')](handleEntityNotFound(_0x41c050,null))['then'](function(_0x2180bd){var _0xad275f=_[_0x135a('0x2a')](_0x2180bd,'id');var _0x4a2b06=[];var _0x2a9d42=[];var _0xf37e34=squel[_0x135a('0x83')]();_0xf37e34[_0x135a('0x84')](_0x135a('0x85'))[_0x135a('0x86')]('team_has_voice_queues','tq')['join']('user_has_teams','ut',_0x135a('0x87'))['where'](_0x135a('0x88'),_0x2bf378['params']['id']);for(var _0x453a7e=0x0;_0x453a7e<_0x2180bd[_0x135a('0x41')];_0x453a7e+=0x1){let _0x513ab3=_0x2180bd[_0x453a7e];for(var _0x1fc8b9=0x0;_0x1fc8b9<_0x513ab3[_0x135a('0x6f')][_0x135a('0x41')];_0x1fc8b9+=0x1){let _0x5e484b=_0x513ab3[_0x135a('0x6f')][_0x1fc8b9];var _0x2d8c37=_0xf37e34[_0x135a('0x57')]();_0x2d8c37[_0x135a('0x44')]('ut.UserId\x20=\x20?',_0x5e484b['id']);_0x2a9d42[_0x135a('0x89')](db[_0x135a('0x72')][_0x135a('0x3b')](_0x2d8c37[_0x135a('0x8a')](),{'type':db[_0x135a('0x72')][_0x135a('0x8b')][_0x135a('0x8c')]})['then'](function(_0x3e9b7b){if(_0x3e9b7b[_0x135a('0x41')]===0x1){return _0x5e484b['id'];}else{var _0x5f3f59=_['every'](_[_0x135a('0x2a')](_0x3e9b7b,'TeamId'),function(_0x2b2d45){return _[_0x135a('0x2c')](_0xad275f,_0x2b2d45);});if(_0x5f3f59){return _0x5e484b['id'];}}}));}}return BPromise['all'](_0x2a9d42)[_0x135a('0x31')](function(_0x21466d){_0x4a2b06=_(_0x4a2b06)[_0x135a('0x8d')](_0x21466d)[_0x135a('0x8e')]()['value']();return db[_0x135a('0x37')]['find']({'where':{'id':_0x2bf378['params']['id']}})[_0x135a('0x31')](function(_0x33ad9e){return db[_0x135a('0x72')]['transaction'](function(_0x453c92){return _0x33ad9e[_0x135a('0x80')](_0x2bf378[_0x135a('0x3b')][_0x135a('0x81')],{'transaction':_0x453c92})[_0x135a('0x31')](function(){if(!_[_0x135a('0x8f')](_0x4a2b06)){return _0x33ad9e['removeAgents'](_0x4a2b06,{'transaction':_0x453c92})[_0x135a('0x31')](function(){return db[_0x135a('0x7a')][_0x135a('0x24')]({'where':{'VoiceQueueId':_0x2bf378[_0x135a('0x4e')]['id'],'UserId':_0x4a2b06},'transaction':_0x453c92});});}})[_0x135a('0x31')](function(){_0x4a2b06[_0x135a('0x70')](function(_0x57a5da){socket[_0x135a('0x7e')](_0x135a('0x90'),{'UserId':_0x57a5da,'VoiceQueueId':_0x33ad9e['id']});});});});});});})[_0x135a('0x31')](respondWithStatusCode(_0x41c050,null))[_0x135a('0x4c')](handleError(_0x41c050,null));};exports[_0x135a('0x91')]=function(_0x31b427,_0x2b9bdb,_0x4031fd){var _0x53fdc0,_0x1b49d3;return db[_0x135a('0x37')][_0x135a('0x2d')]({'where':{'id':_0x31b427['params']['id']}})[_0x135a('0x31')](handleEntityNotFound(_0x2b9bdb,null))[_0x135a('0x31')](function(_0x17233e){if(_0x17233e){_0x1b49d3=_0x17233e;return _0x17233e[_0x135a('0x91')](_0x31b427[_0x135a('0x50')][_0x135a('0x81')],_[_0x135a('0x58')](_0x31b427[_0x135a('0x50')],['ids','id'])||{})[_0x135a('0x92')](function(_0x3de4ce){for(var _0x3e6b01=0x0;_0x3e6b01<_0x31b427[_0x135a('0x50')][_0x135a('0x81')][_0x135a('0x41')];_0x3e6b01+=0x1){socket[_0x135a('0x7e')]('userVoiceQueue:save',{'UserId':Number(_0x31b427['body'][_0x135a('0x81')][_0x3e6b01]),'VoiceQueueId':Number(_0x31b427['params']['id'])});}return _0x3de4ce;});}})[_0x135a('0x31')](function(_0x4f43a6){_0x53fdc0=_0x4f43a6||[];if(_0x1b49d3){return db['User'][_0x135a('0x4a')]({'where':{'id':_0x31b427['body'][_0x135a('0x81')]},'attributes':['id',_0x135a('0x2f'),_0x135a('0x6b'),'voicePause',_0x135a('0x6d')],'raw':!![]});}})[_0x135a('0x31')](function(_0x1a94ea){if(!_[_0x135a('0x8f')](_0x1a94ea)){var _0x2b5a32=[];for(var _0xc424f1=0x0;_0xc424f1<_0x1a94ea[_0x135a('0x41')];_0xc424f1++){if(_0x1a94ea[_0xc424f1][_0x135a('0x6b')]){_0x2b5a32['push'](db[_0x135a('0x7a')]['upsert']({'membername':_0x1a94ea[_0xc424f1][_0x135a('0x2f')],'UserId':_0x1a94ea[_0xc424f1]['id'],'queue_name':_0x1b49d3[_0x135a('0x2f')],'VoiceQueueId':_0x1b49d3['id'],'interface':_[_0x135a('0x7b')](_0x1a94ea[_0xc424f1][_0x135a('0x6d')])?util[_0x135a('0x7c')]('SIP/%s',_0x1a94ea[_0xc424f1][_0x135a('0x2f')]):_0x1a94ea[_0xc424f1]['interface'],'paused':_0x1a94ea[_0xc424f1][_0x135a('0x6c')]||![],'penalty':_0x31b427[_0x135a('0x50')][_0x135a('0x71')]||0x0}));}}return BPromise['all'](_0x2b5a32);}})[_0x135a('0x31')](function(){return _0x53fdc0;})['then'](respondWithResult(_0x2b9bdb,null))[_0x135a('0x4c')](handleError(_0x2b9bdb,null));};exports[_0x135a('0x93')]=function(_0x35cae6,_0x3aa567,_0x269c97){return db[_0x135a('0x37')][_0x135a('0x2d')]({'where':{'id':_0x35cae6[_0x135a('0x4e')]['id']}})[_0x135a('0x31')](handleEntityNotFound(_0x3aa567,null))[_0x135a('0x31')](function(_0x4698c4){if(_0x4698c4){return _0x4698c4[_0x135a('0x93')](_0x35cae6[_0x135a('0x3b')][_0x135a('0x81')])[_0x135a('0x31')](function(){if(_[_0x135a('0x94')](_0x35cae6[_0x135a('0x3b')][_0x135a('0x81')])){for(var _0x1e94e7=0x0;_0x1e94e7<_0x35cae6[_0x135a('0x3b')]['ids']['length'];_0x1e94e7+=0x1){socket[_0x135a('0x7e')](_0x135a('0x90'),{'UserId':Number(_0x35cae6[_0x135a('0x3b')][_0x135a('0x81')][_0x1e94e7]),'VoiceQueueId':Number(_0x35cae6[_0x135a('0x4e')]['id'])});}}else{socket['emit'](_0x135a('0x90'),{'UserId':Number(_0x35cae6[_0x135a('0x3b')]['ids']),'VoiceQueueId':Number(_0x35cae6['params']['id'])});}});}})[_0x135a('0x31')](function(_0x2b2398){return db['UserVoiceQueueRt'][_0x135a('0x24')]({'where':{'VoiceQueueId':_0x35cae6[_0x135a('0x4e')]['id'],'UserId':_0x35cae6['query'][_0x135a('0x81')]}})['then'](function(){return _0x2b2398;});})[_0x135a('0x31')](respondWithStatusCode(_0x3aa567,null))[_0x135a('0x4c')](handleError(_0x3aa567,null));};exports[_0x135a('0x95')]=function(_0x73df74,_0x5df64d,_0x30c780){var _0x256cb2={};var _0x466783={};var _0x944270;var _0x11e24f;return db[_0x135a('0x37')][_0x135a('0x69')]({'where':{'id':_0x73df74[_0x135a('0x4e')]['id']}})[_0x135a('0x31')](handleEntityNotFound(_0x5df64d,null))[_0x135a('0x31')](function(_0x412156){if(_0x412156){_0x944270=_0x412156;_0x466783[_0x135a('0x3a')]=_[_0x135a('0x3c')](db['User'][_0x135a('0x38')]);_0x466783[_0x135a('0x3b')]=_['keys'](_0x73df74[_0x135a('0x3b')]);_0x466783[_0x135a('0x3d')]=_[_0x135a('0x3e')](_0x466783['model'],_0x466783[_0x135a('0x3b')]);_0x256cb2[_0x135a('0x3f')]=_[_0x135a('0x3e')](_0x466783[_0x135a('0x3a')],qs[_0x135a('0x40')](_0x73df74[_0x135a('0x3b')][_0x135a('0x40')]));_0x256cb2['attributes']=_0x256cb2[_0x135a('0x3f')][_0x135a('0x41')]?_0x256cb2[_0x135a('0x3f')]:_0x466783[_0x135a('0x3a')];_0x256cb2[_0x135a('0x61')]=qs[_0x135a('0x43')](_0x73df74['query']['sort']);_0x256cb2[_0x135a('0x44')]=qs[_0x135a('0x3d')](_['pick'](_0x73df74[_0x135a('0x3b')],_0x466783[_0x135a('0x3d')]));if(_0x73df74['query'][_0x135a('0x28')]){_0x256cb2[_0x135a('0x44')]=_['merge'](_0x256cb2[_0x135a('0x44')],{'$or':_[_0x135a('0x2a')](_0x256cb2[_0x135a('0x3f')],function(_0x140545){var _0x25f561={};_0x25f561[_0x140545]={'$like':'%'+_0x73df74[_0x135a('0x3b')]['filter']+'%'};return _0x25f561;})});}_0x256cb2=_[_0x135a('0x46')]({},_0x256cb2,_0x73df74[_0x135a('0x47')]);return _0x944270[_0x135a('0x95')](_0x256cb2);}})[_0x135a('0x31')](function(_0x5a74bc){if(_0x5a74bc){_0x11e24f=_0x5a74bc[_0x135a('0x41')];if(!_0x73df74[_0x135a('0x3b')]['hasOwnProperty'](_0x135a('0x60'))){_0x256cb2[_0x135a('0x1f')]=qs[_0x135a('0x1f')](_0x73df74[_0x135a('0x3b')][_0x135a('0x1f')]);_0x256cb2[_0x135a('0x1c')]=qs['offset'](_0x73df74[_0x135a('0x3b')][_0x135a('0x1c')]);}return _0x944270['getAgents'](_0x256cb2);}})[_0x135a('0x31')](function(_0xcce205){if(_0xcce205){return _0xcce205?{'count':_0x11e24f,'rows':_0xcce205}:null;}})['then'](respondWithResult(_0x5df64d,null))[_0x135a('0x4c')](handleError(_0x5df64d,null));};exports[_0x135a('0x96')]=function(_0x5ca51a,_0x460222,_0x2e081a){var _0x2ca937={};var _0x3bf5a2={};var _0x511417;var _0x337e1c;return db[_0x135a('0x37')][_0x135a('0x69')]({'where':{'id':_0x5ca51a[_0x135a('0x4e')]['id']}})['then'](handleEntityNotFound(_0x460222,null))['then'](function(_0x307e7d){if(_0x307e7d){_0x511417=_0x307e7d;_0x3bf5a2[_0x135a('0x3a')]=_[_0x135a('0x3c')](db[_0x135a('0x7a')][_0x135a('0x38')]);_0x3bf5a2['query']=_[_0x135a('0x3c')](_0x5ca51a[_0x135a('0x3b')]);_0x3bf5a2[_0x135a('0x3d')]=_[_0x135a('0x3e')](_0x3bf5a2['model'],_0x3bf5a2[_0x135a('0x3b')]);_0x2ca937[_0x135a('0x3f')]=_[_0x135a('0x3e')](_0x3bf5a2[_0x135a('0x3a')],qs[_0x135a('0x40')](_0x5ca51a[_0x135a('0x3b')]['fields']));_0x2ca937[_0x135a('0x3f')]=_0x2ca937[_0x135a('0x3f')][_0x135a('0x41')]?_0x2ca937[_0x135a('0x3f')]:_0x3bf5a2[_0x135a('0x3a')];_0x2ca937[_0x135a('0x61')]=qs['sort'](_0x5ca51a['query'][_0x135a('0x43')]);_0x2ca937[_0x135a('0x44')]=qs['filters'](_[_0x135a('0x45')](_0x5ca51a[_0x135a('0x3b')],_0x3bf5a2[_0x135a('0x3d')]));if(_0x5ca51a[_0x135a('0x3b')][_0x135a('0x28')]){_0x2ca937['where']=_[_0x135a('0x46')](_0x2ca937[_0x135a('0x44')],{'$or':_[_0x135a('0x2a')](_0x2ca937[_0x135a('0x3f')],function(_0x1521ea){var _0x332423={};_0x332423[_0x1521ea]={'$like':'%'+_0x5ca51a[_0x135a('0x3b')]['filter']+'%'};return _0x332423;})});}_0x2ca937=_[_0x135a('0x46')]({},_0x2ca937,_0x5ca51a[_0x135a('0x47')]);return _0x511417[_0x135a('0x96')](_0x2ca937);}})[_0x135a('0x31')](function(_0x48d7eb){if(_0x48d7eb){_0x337e1c=_0x48d7eb[_0x135a('0x41')];if(!_0x5ca51a[_0x135a('0x3b')][_0x135a('0x42')]('nolimit')){_0x2ca937[_0x135a('0x1f')]=qs[_0x135a('0x1f')](_0x5ca51a[_0x135a('0x3b')][_0x135a('0x1f')]);_0x2ca937[_0x135a('0x1c')]=qs[_0x135a('0x1c')](_0x5ca51a[_0x135a('0x3b')][_0x135a('0x1c')]);}return _0x511417[_0x135a('0x96')](_0x2ca937);}})['then'](function(_0x1e0cb5){return _0x1e0cb5?{'count':_0x337e1c,'rows':_0x1e0cb5}:null;})[_0x135a('0x31')](respondWithResult(_0x460222,null))[_0x135a('0x4c')](handleError(_0x460222,null));};exports['getLists']=function(_0x403f4e,_0x4e3694,_0x3a3284){var _0x3e9439={};var _0x4901b2={};var _0xec8a04;var _0xe1c254;return db['VoiceQueue'][_0x135a('0x69')]({'where':{'id':_0x403f4e['params']['id']}})['then'](handleEntityNotFound(_0x4e3694,null))[_0x135a('0x31')](function(_0x2f6e26){if(_0x2f6e26){_0xec8a04=_0x2f6e26;_0x4901b2[_0x135a('0x3a')]=_[_0x135a('0x3c')](db[_0x135a('0x97')]['rawAttributes']);_0x4901b2[_0x135a('0x3b')]=_[_0x135a('0x3c')](_0x403f4e[_0x135a('0x3b')]);_0x4901b2[_0x135a('0x3d')]=_[_0x135a('0x3e')](_0x4901b2[_0x135a('0x3a')],_0x4901b2[_0x135a('0x3b')]);_0x3e9439[_0x135a('0x3f')]=_['intersection'](_0x4901b2[_0x135a('0x3a')],qs['fields'](_0x403f4e[_0x135a('0x3b')]['fields']));_0x3e9439[_0x135a('0x3f')]=_0x3e9439['attributes'][_0x135a('0x41')]?_0x3e9439[_0x135a('0x3f')]:_0x4901b2[_0x135a('0x3a')];_0x3e9439[_0x135a('0x61')]=qs[_0x135a('0x43')](_0x403f4e[_0x135a('0x3b')]['sort']);_0x3e9439[_0x135a('0x44')]=qs[_0x135a('0x3d')](_[_0x135a('0x45')](_0x403f4e[_0x135a('0x3b')],_0x4901b2[_0x135a('0x3d')]));if(_0x403f4e[_0x135a('0x3b')]['filter']){_0x3e9439['where']=_[_0x135a('0x46')](_0x3e9439['where'],{'$or':_[_0x135a('0x2a')](_0x3e9439[_0x135a('0x3f')],function(_0x25ec98){var _0x1d240a={};_0x1d240a[_0x25ec98]={'$like':'%'+_0x403f4e['query']['filter']+'%'};return _0x1d240a;})});}_0x3e9439=_[_0x135a('0x46')]({},_0x3e9439,_0x403f4e[_0x135a('0x47')]);return _0xec8a04[_0x135a('0x98')](_0x3e9439);}})[_0x135a('0x31')](function(_0x395d57){if(_0x395d57){_0xe1c254=_0x395d57[_0x135a('0x41')];if(!_0x403f4e[_0x135a('0x3b')][_0x135a('0x42')]('nolimit')){_0x3e9439[_0x135a('0x1f')]=qs[_0x135a('0x1f')](_0x403f4e['query'][_0x135a('0x1f')]);_0x3e9439[_0x135a('0x1c')]=qs[_0x135a('0x1c')](_0x403f4e[_0x135a('0x3b')][_0x135a('0x1c')]);}return _0xec8a04[_0x135a('0x98')](_0x3e9439);}})[_0x135a('0x31')](function(_0x54fb65){if(_0x54fb65){return _0x54fb65?{'count':_0xe1c254,'rows':_0x54fb65}:null;}})[_0x135a('0x31')](respondWithResult(_0x4e3694,null))[_0x135a('0x4c')](handleError(_0x4e3694,null));};exports[_0x135a('0x99')]=function(_0x1646ee,_0x31fc3c,_0x11b582){var _0xae764d,_0x203a2e;return db[_0x135a('0x37')][_0x135a('0x2d')]({'where':{'id':_0x1646ee[_0x135a('0x4e')]['id']}})[_0x135a('0x31')](handleEntityNotFound(_0x31fc3c,null))['then'](function(_0x1fa338){if(_0x1fa338){_0x203a2e=_0x1fa338;return _0x1fa338[_0x135a('0x99')](_0x1646ee[_0x135a('0x50')][_0x135a('0x81')],_[_0x135a('0x58')](_0x1646ee[_0x135a('0x50')],['ids','id'])||{});}return null;})[_0x135a('0x92')](function(_0x7ce3bc){var _0xf6f49d;_0xae764d=_0x7ce3bc||[];var _0x205b92=[];if(_0x7ce3bc){for(var _0x14523d=0x0;_0x14523d<_0x7ce3bc['length'];_0x14523d+=0x1){var _0x2654ed=_0x7ce3bc[_0x14523d][_0x135a('0x52')]({'plain':!![]});_0x203a2e['dialCheckDuplicateType']=_0x1646ee['body'][_0x135a('0x9a')]?_0x1646ee[_0x135a('0x50')]['dialCheckDuplicateType']:_0x203a2e[_0x135a('0x9a')];switch(_0x203a2e[_0x135a('0x9a')]){case _0x135a('0x9b'):_0xf6f49d=squel[_0x135a('0x9c')]()[_0x135a('0x9d')](_0x135a('0x9e'))[_0x135a('0x9f')]([_0x135a('0xa0'),'scheduledAt',_0x135a('0xa1'),'ListId',_0x135a('0x62'),_0x135a('0x59'),'updatedAt'],squel[_0x135a('0x83')]()['field']('phone',_0x135a('0xa0'))[_0x135a('0x84')](_0x135a('0xa2'),'scheduledAt')['field']('id',_0x135a('0xa1'))[_0x135a('0x84')](_0x2654ed['CmListId'][_0x135a('0x8a')](),'ListId')['field'](_0x1646ee['params']['id'][_0x135a('0x8a')](),'VoiceQueueId')[_0x135a('0x84')](_0x135a('0xa2'),_0x135a('0x59'))[_0x135a('0x84')](_0x135a('0xa2'),_0x135a('0x5a'))[_0x135a('0x86')](_0x135a('0xa3'))[_0x135a('0x44')]('deletedAt\x20IS\x20NULL')[_0x135a('0x44')]('ListId\x20=\x20?',_0x2654ed[_0x135a('0xa4')][_0x135a('0x8a')]())[_0x135a('0x44')](_0x135a('0xa5'))[_0x135a('0x44')](_0x135a('0xa6'),squel[_0x135a('0x83')]()[_0x135a('0x84')](_0x135a('0xa7'))[_0x135a('0x86')](_0x135a('0xa8'))[_0x135a('0x44')](_0x135a('0x88'),_0x1646ee[_0x135a('0x4e')]['id'][_0x135a('0x8a')]()))[_0x135a('0x44')]('phone\x20NOT\x20IN\x20(?)',squel[_0x135a('0x83')]()['field'](_0x135a('0xa9'))[_0x135a('0x86')](_0x135a('0x9e'))[_0x135a('0x44')](_0x135a('0x88'),_0x1646ee[_0x135a('0x4e')]['id'][_0x135a('0x8a')]())))[_0x135a('0x8a')]();break;case _0x135a('0xaa'):_0xf6f49d=squel[_0x135a('0x9c')]()['into']('cm_hopper')[_0x135a('0x9f')]([_0x135a('0xa0'),_0x135a('0xab'),_0x135a('0xa1'),_0x135a('0xac'),'VoiceQueueId',_0x135a('0x59'),_0x135a('0x5a')],squel[_0x135a('0x83')]()[_0x135a('0x84')](_0x135a('0xa0'),_0x135a('0xa0'))[_0x135a('0x84')](_0x135a('0xa2'),_0x135a('0xab'))[_0x135a('0x84')]('id',_0x135a('0xa1'))[_0x135a('0x84')](_0x2654ed[_0x135a('0xa4')][_0x135a('0x8a')](),_0x135a('0xac'))['field'](_0x1646ee[_0x135a('0x4e')]['id'][_0x135a('0x8a')](),_0x135a('0x62'))[_0x135a('0x84')](_0x135a('0xa2'),_0x135a('0x59'))['field'](_0x135a('0xa2'),_0x135a('0x5a'))[_0x135a('0x86')](_0x135a('0xa3'))['where'](_0x135a('0xad'))[_0x135a('0x44')](_0x135a('0xae'),_0x2654ed[_0x135a('0xa4')][_0x135a('0x8a')]())['where'](_0x135a('0xa5'))[_0x135a('0x44')](_0x135a('0xa6'),squel['select']()[_0x135a('0x84')](_0x135a('0xa9'))[_0x135a('0x86')](_0x135a('0x9e'))[_0x135a('0x44')](_0x135a('0x88'),_0x1646ee['params']['id']['toString']())))[_0x135a('0x8a')]();break;default:_0xf6f49d=squel[_0x135a('0x9c')]()[_0x135a('0x9d')](_0x135a('0x9e'))[_0x135a('0x9f')]([_0x135a('0xa0'),'scheduledAt',_0x135a('0xa1'),_0x135a('0xac'),_0x135a('0x62'),_0x135a('0x59'),_0x135a('0x5a')],squel['select']()['field'](_0x135a('0xa0'),_0x135a('0xa0'))[_0x135a('0x84')](_0x135a('0xa2'),_0x135a('0xab'))[_0x135a('0x84')]('id',_0x135a('0xa1'))[_0x135a('0x84')](_0x2654ed[_0x135a('0xa4')][_0x135a('0x8a')](),'ListId')['field'](_0x1646ee[_0x135a('0x4e')]['id']['toString'](),_0x135a('0x62'))['field'](_0x135a('0xa2'),'createdAt')[_0x135a('0x84')]('NOW()',_0x135a('0x5a'))[_0x135a('0x86')]('cm_contacts')[_0x135a('0x44')](_0x135a('0xad'))['where'](_0x135a('0xae'),_0x2654ed['CmListId'][_0x135a('0x8a')]())[_0x135a('0x44')]('phone\x20IS\x20NOT\x20NULL'))[_0x135a('0x8a')]();}_0x205b92[_0x135a('0x89')](db[_0x135a('0x72')][_0x135a('0x3b')](_0xf6f49d));}return BPromise[_0x135a('0xaf')](_0x205b92);}})['then'](function(){return _0xae764d;})[_0x135a('0x31')](respondWithResult(_0x31fc3c,null))[_0x135a('0x4c')](handleError(_0x31fc3c,null));};exports[_0x135a('0xb0')]=function(_0x40757d,_0x298577,_0x742be){return db[_0x135a('0x37')][_0x135a('0x2d')]({'where':{'id':_0x40757d[_0x135a('0x4e')]['id']}})[_0x135a('0x31')](handleEntityNotFound(_0x298577,null))[_0x135a('0x31')](function(_0x1e1717){if(_0x1e1717){return _0x1e1717[_0x135a('0xb0')](_0x40757d[_0x135a('0x3b')][_0x135a('0x81')]);}})['then'](function(_0x251b4b){if(_0x251b4b){return db[_0x135a('0x5f')][_0x135a('0x24')]({'where':{'ListId':_0x40757d[_0x135a('0x3b')][_0x135a('0x81')],'VoiceQueueId':_0x40757d[_0x135a('0x4e')]['id']}})[_0x135a('0x31')](function(){return _0x251b4b;});}})[_0x135a('0x31')](respondWithStatusCode(_0x298577,null))[_0x135a('0x4c')](handleError(_0x298577,null));};exports[_0x135a('0xb1')]=function(_0x759b45,_0x4a07b8,_0x180d73){var _0x2992c2={};var _0x94a9cc={};var _0x538721;var _0x105f51;return db[_0x135a('0x37')]['findOne']({'where':{'id':_0x759b45[_0x135a('0x4e')]['id']}})[_0x135a('0x31')](handleEntityNotFound(_0x4a07b8,null))['then'](function(_0x55890b){if(_0x55890b){_0x538721=_0x55890b;_0x94a9cc[_0x135a('0x3a')]=_[_0x135a('0x3c')](db[_0x135a('0x97')]['rawAttributes']);_0x94a9cc[_0x135a('0x3b')]=_[_0x135a('0x3c')](_0x759b45[_0x135a('0x3b')]);_0x94a9cc[_0x135a('0x3d')]=_[_0x135a('0x3e')](_0x94a9cc[_0x135a('0x3a')],_0x94a9cc['query']);_0x2992c2[_0x135a('0x3f')]=_[_0x135a('0x3e')](_0x94a9cc[_0x135a('0x3a')],qs[_0x135a('0x40')](_0x759b45[_0x135a('0x3b')][_0x135a('0x40')]));_0x2992c2[_0x135a('0x3f')]=_0x2992c2[_0x135a('0x3f')][_0x135a('0x41')]?_0x2992c2['attributes']:_0x94a9cc[_0x135a('0x3a')];_0x2992c2[_0x135a('0x61')]=qs['sort'](_0x759b45[_0x135a('0x3b')][_0x135a('0x43')]);_0x2992c2[_0x135a('0x44')]=qs[_0x135a('0x3d')](_[_0x135a('0x45')](_0x759b45[_0x135a('0x3b')],_0x94a9cc['filters']));if(_0x759b45[_0x135a('0x3b')][_0x135a('0x28')]){_0x2992c2['where']=_[_0x135a('0x46')](_0x2992c2[_0x135a('0x44')],{'$or':_[_0x135a('0x2a')](_0x2992c2[_0x135a('0x3f')],function(_0x279d5d){var _0xa223fc={};_0xa223fc[_0x279d5d]={'$like':'%'+_0x759b45[_0x135a('0x3b')][_0x135a('0x28')]+'%'};return _0xa223fc;})});}_0x2992c2=_['merge']({},_0x2992c2,_0x759b45[_0x135a('0x47')]);return _0x538721[_0x135a('0xb1')](_0x2992c2);}})[_0x135a('0x31')](function(_0xf82c0d){if(_0xf82c0d){_0x105f51=_0xf82c0d[_0x135a('0x41')];if(!_0x759b45['query']['hasOwnProperty'](_0x135a('0x60'))){_0x2992c2['limit']=qs[_0x135a('0x1f')](_0x759b45[_0x135a('0x3b')]['limit']);_0x2992c2[_0x135a('0x1c')]=qs[_0x135a('0x1c')](_0x759b45[_0x135a('0x3b')][_0x135a('0x1c')]);}return _0x538721['getBlackLists'](_0x2992c2);}})[_0x135a('0x31')](function(_0x595375){if(_0x595375){return _0x595375?{'count':_0x105f51,'rows':_0x595375}:null;}})[_0x135a('0x31')](respondWithResult(_0x4a07b8,null))[_0x135a('0x4c')](handleError(_0x4a07b8,null));};exports[_0x135a('0xb2')]=function(_0x4bccf0,_0x230720,_0x13efcc){var _0x2fc1ee,_0x3a910a;return db[_0x135a('0x37')][_0x135a('0x2d')]({'where':{'id':_0x4bccf0[_0x135a('0x4e')]['id']}})[_0x135a('0x31')](handleEntityNotFound(_0x230720,null))[_0x135a('0x31')](function(_0x26b983){if(_0x26b983){_0x3a910a=_0x26b983;return _0x26b983[_0x135a('0xb2')](_0x4bccf0[_0x135a('0x50')][_0x135a('0x81')],_['omit'](_0x4bccf0[_0x135a('0x50')],[_0x135a('0x81'),'id'])||{});}return null;})[_0x135a('0x92')](function(_0x170369){var _0x2ecb2c;_0x2fc1ee=_0x170369||[];var _0x472b37=[];if(_0x170369){for(var _0x4b258a=0x0;_0x4b258a<_0x170369[_0x135a('0x41')];_0x4b258a+=0x1){var _0x1e622e=_0x170369[_0x4b258a][_0x135a('0x52')]({'plain':!![]});_0x2ecb2c=squel['insert']()['into'](_0x135a('0xb3'))[_0x135a('0x9f')]([_0x135a('0xa0'),'ContactId',_0x135a('0xac'),_0x135a('0x62'),_0x135a('0x59'),_0x135a('0x5a')],squel['select']()[_0x135a('0x84')](_0x135a('0xa0'),_0x135a('0xa0'))[_0x135a('0x84')]('id','ContactId')[_0x135a('0x84')](_0x1e622e['CmListId'][_0x135a('0x8a')](),_0x135a('0xac'))[_0x135a('0x84')](_0x4bccf0[_0x135a('0x4e')]['id'][_0x135a('0x8a')](),_0x135a('0x62'))[_0x135a('0x84')](_0x135a('0xa2'),_0x135a('0x59'))[_0x135a('0x84')](_0x135a('0xa2'),_0x135a('0x5a'))[_0x135a('0x86')](_0x135a('0xa3'))[_0x135a('0x44')](_0x135a('0xad'))[_0x135a('0x44')](_0x135a('0xae'),_0x1e622e[_0x135a('0xa4')][_0x135a('0x8a')]())['where']('phone\x20IS\x20NOT\x20NULL'))[_0x135a('0x8a')]();_0x472b37['push'](db[_0x135a('0x72')][_0x135a('0x3b')](_0x2ecb2c));}return BPromise[_0x135a('0xaf')](_0x472b37);}})[_0x135a('0x31')](function(){return _0x2fc1ee;})[_0x135a('0x31')](respondWithResult(_0x230720,null))[_0x135a('0x4c')](handleError(_0x230720,null));};exports[_0x135a('0xb4')]=function(_0x189158,_0x1c3cc8,_0x516428){return db['VoiceQueue'][_0x135a('0x2d')]({'where':{'id':_0x189158[_0x135a('0x4e')]['id']}})[_0x135a('0x31')](handleEntityNotFound(_0x1c3cc8,null))[_0x135a('0x31')](function(_0x166661){if(_0x166661){return _0x166661[_0x135a('0xb4')](_0x189158[_0x135a('0x3b')][_0x135a('0x81')]);}})[_0x135a('0x31')](function(_0xeea31a){if(_0xeea31a){return db['CmHopperBlack'][_0x135a('0x24')]({'where':{'ListId':_0x189158[_0x135a('0x3b')]['ids'],'VoiceQueueId':_0x189158[_0x135a('0x4e')]['id']}})[_0x135a('0x31')](function(){return _0xeea31a;});}})[_0x135a('0x31')](respondWithStatusCode(_0x1c3cc8,null))[_0x135a('0x4c')](handleError(_0x1c3cc8,null));};
\ No newline at end of file
index 94b0e7c..2f50430 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff88=['events','../../mysqldb','VoiceQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x598876,_0x2baab0){var _0x415dca=function(_0x4ba2ee){while(--_0x4ba2ee){_0x598876['push'](_0x598876['shift']());}};_0x415dca(++_0x2baab0);}(_0xff88,0x1c3));var _0x8ff8=function(_0x59123a,_0x4b88c3){_0x59123a=_0x59123a-0x0;var _0x2ef094=_0xff88[_0x59123a];return _0x2ef094;};'use strict';var EventEmitter=require(_0x8ff8('0x0'));var VoiceQueue=require(_0x8ff8('0x1'))['db'][_0x8ff8('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x8ff8('0x3')](0x0);var events={'afterCreate':_0x8ff8('0x4'),'afterUpdate':_0x8ff8('0x5'),'afterDestroy':_0x8ff8('0x6')};function emitEvent(_0x3cb599){return function(_0xd30ea8,_0x3c9978,_0x4dee36){VoiceQueueEvents[_0x8ff8('0x7')](_0x3cb599+':'+_0xd30ea8['id'],_0xd30ea8);VoiceQueueEvents[_0x8ff8('0x7')](_0x3cb599,_0xd30ea8);_0x4dee36(null);};}for(var e in events){if(events[_0x8ff8('0x8')](e)){var event=events[e];VoiceQueue[_0x8ff8('0x9')](e,emitEvent(event));}}module[_0x8ff8('0xa')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x48e5=['remove','emit','hasOwnProperty','hook','exports','setMaxListeners','update'];(function(_0x550d62,_0x154b0c){var _0x401d92=function(_0x1b7cfe){while(--_0x1b7cfe){_0x550d62['push'](_0x550d62['shift']());}};_0x401d92(++_0x154b0c);}(_0x48e5,0xfa));var _0x548e=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0x48e5[_0x4709c0];return _0x13348b;};'use strict';var EventEmitter=require('events');var VoiceQueue=require('../../mysqldb')['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x548e('0x0')](0x0);var events={'afterCreate':'save','afterUpdate':_0x548e('0x1'),'afterDestroy':_0x548e('0x2')};function emitEvent(_0x45926c){return function(_0x4eddd1,_0x3dba4e,_0xd4e25){VoiceQueueEvents[_0x548e('0x3')](_0x45926c+':'+_0x4eddd1['id'],_0x4eddd1);VoiceQueueEvents[_0x548e('0x3')](_0x45926c,_0x4eddd1);_0xd4e25(null);};}for(var e in events){if(events[_0x548e('0x4')](e)){var event=events[e];VoiceQueue[_0x548e('0x5')](e,emitEvent(event));}}module[_0x548e('0x6')]=VoiceQueueEvents;
\ No newline at end of file
index e96383e..0559817 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['exports','VoiceQueue','voice_queues','lodash','../../config/logger','api','moment','path','../../config/environment','./voiceQueue.attributes'];(function(_0x119a07,_0x2289f6){var _0x36025c=function(_0xf28f4){while(--_0xf28f4){_0x119a07['push'](_0x119a07['shift']());}};_0x36025c(++_0x2289f6);}(_0x3e74,0x175));var _0x43e7=function(_0x87ee6c,_0x3560db){_0x87ee6c=_0x87ee6c-0x0;var _0x3edb07=_0x3e74[_0x87ee6c];return _0x3edb07;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43e7('0x4'));var rimraf=require('rimraf');var config=require(_0x43e7('0x5'));var attributes=require(_0x43e7('0x6'));module[_0x43e7('0x7')]=function(_0x1c503b,_0xc98b9c){return _0x1c503b['define'](_0x43e7('0x8'),attributes,{'tableName':_0x43e7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x70e0=['voice_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./voiceQueue.attributes'];(function(_0x13ac10,_0x46e79e){var _0x28eda2=function(_0x169ef0){while(--_0x169ef0){_0x13ac10['push'](_0x13ac10['shift']());}};_0x28eda2(++_0x46e79e);}(_0x70e0,0x17b));var _0x070e=function(_0x5d4c5a,_0x578590){_0x5d4c5a=_0x5d4c5a-0x0;var _0x33c653=_0x70e0[_0x5d4c5a];return _0x33c653;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var logger=require(_0x070e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x070e('0x3'));var rp=require(_0x070e('0x4'));var fs=require('fs');var path=require(_0x070e('0x5'));var rimraf=require(_0x070e('0x6'));var config=require('../../config/environment');var attributes=require(_0x070e('0x7'));module['exports']=function(_0x46fe68,_0x4b041d){return _0x46fe68['define']('VoiceQueue',attributes,{'tableName':_0x070e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0c409aa..23f29cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9763=['map','model','ShowVoiceQueue','find','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','./voiceQueue.socket','register','request','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetVoiceQueue','VoiceQueue','options','raw','where','attributes','include'];(function(_0x1ebd60,_0x4440f8){var _0xa9ea17=function(_0x4f993d){while(--_0x4f993d){_0x1ebd60['push'](_0x1ebd60['shift']());}};_0xa9ea17(++_0x4440f8);}(_0x9763,0x180));var _0x3976=function(_0x5a0681,_0x5cbc10){_0x5a0681=_0x5a0681-0x0;var _0x2d3a74=_0x9763[_0x5a0681];return _0x2d3a74;};'use strict';var _=require(_0x3976('0x0'));var util=require(_0x3976('0x1'));var moment=require(_0x3976('0x2'));var BPromise=require('bluebird');var rs=require(_0x3976('0x3'));var fs=require('fs');var Redis=require(_0x3976('0x4'));var db=require(_0x3976('0x5'))['db'];var utils=require(_0x3976('0x6'));var logger=require(_0x3976('0x7'))(_0x3976('0x8'));var config=require(_0x3976('0x9'));var jayson=require(_0x3976('0xa'));var client=jayson['client']['http']({'port':0x232a});config[_0x3976('0xb')]=_[_0x3976('0xc')](config[_0x3976('0xb')],{'host':_0x3976('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3976('0xb')]));require(_0x3976('0xe'))[_0x3976('0xf')](socket);function respondWithRpcPromise(_0x1e1dc7,_0x30c0ef,_0x1fec5f){return new BPromise(function(_0x2742e4,_0x246f8f){return client[_0x3976('0x10')](_0x1e1dc7,_0x1fec5f)[_0x3976('0x11')](function(_0x17e31c){logger[_0x3976('0x12')](_0x3976('0x13'),_0x30c0ef,_0x3976('0x14'));logger[_0x3976('0x15')](_0x3976('0x16'),_0x30c0ef,'request\x20sent',JSON[_0x3976('0x17')](_0x17e31c));if(_0x17e31c[_0x3976('0x18')]){if(_0x17e31c[_0x3976('0x18')][_0x3976('0x19')]===0x1f4){logger[_0x3976('0x18')](_0x3976('0x13'),_0x30c0ef,_0x17e31c[_0x3976('0x18')][_0x3976('0x1a')]);return _0x246f8f(_0x17e31c[_0x3976('0x18')][_0x3976('0x1a')]);}logger[_0x3976('0x18')](_0x3976('0x13'),_0x30c0ef,_0x17e31c[_0x3976('0x18')][_0x3976('0x1a')]);return _0x2742e4(_0x17e31c['error'][_0x3976('0x1a')]);}else{logger[_0x3976('0x12')](_0x3976('0x13'),_0x30c0ef,'request\x20sent');_0x2742e4(_0x17e31c['result']['message']);}})['catch'](function(_0x7a0501){logger[_0x3976('0x18')](_0x3976('0x13'),_0x30c0ef,_0x7a0501);_0x246f8f(_0x7a0501);});});}exports[_0x3976('0x1b')]=function(_0x19d047){var _0x29db5d=this;return new Promise(function(_0x56460a,_0x9e61ea){return db[_0x3976('0x1c')]['findAll']({'raw':_0x19d047[_0x3976('0x1d')]?_0x19d047[_0x3976('0x1d')][_0x3976('0x1e')]===undefined?!![]:![]:!![],'where':_0x19d047[_0x3976('0x1d')]?_0x19d047['options'][_0x3976('0x1f')]||null:null,'attributes':_0x19d047['options']?_0x19d047['options'][_0x3976('0x20')]||null:null,'limit':_0x19d047[_0x3976('0x1d')]?_0x19d047[_0x3976('0x1d')]['limit']||null:null,'include':_0x19d047[_0x3976('0x1d')]?_0x19d047[_0x3976('0x1d')][_0x3976('0x21')]?_[_0x3976('0x22')](_0x19d047[_0x3976('0x1d')][_0x3976('0x21')],function(_0x31f64c){return{'model':db[_0x31f64c[_0x3976('0x23')]],'as':_0x31f64c['as'],'attributes':_0x31f64c['attributes'],'include':_0x31f64c[_0x3976('0x21')]?_[_0x3976('0x22')](_0x31f64c[_0x3976('0x21')],function(_0x5999d8){return{'model':db[_0x5999d8[_0x3976('0x23')]],'as':_0x5999d8['as'],'attributes':_0x5999d8[_0x3976('0x20')],'include':_0x5999d8['include']?_['map'](_0x5999d8[_0x3976('0x21')],function(_0x4394f1){return{'model':db[_0x4394f1[_0x3976('0x23')]],'as':_0x4394f1['as'],'attributes':_0x4394f1[_0x3976('0x20')]};}):[]};}):[]};}):[]:[]})[_0x3976('0x11')](function(_0x44bf8a){logger[_0x3976('0x12')](_0x3976('0x1b'),_0x19d047);logger[_0x3976('0x15')](_0x3976('0x1b'),_0x19d047,JSON[_0x3976('0x17')](_0x44bf8a));_0x56460a(_0x44bf8a);})['catch'](function(_0x5b03f1){logger[_0x3976('0x18')](_0x3976('0x1b'),_0x5b03f1[_0x3976('0x1a')],_0x19d047);_0x9e61ea(_0x29db5d['error'](0x1f4,_0x5b03f1[_0x3976('0x1a')]));});});};exports[_0x3976('0x24')]=function(_0x5be1db){var _0x25940a=this;return new Promise(function(_0x2225fb,_0x5eac05){return db[_0x3976('0x1c')][_0x3976('0x25')]({'raw':_0x5be1db[_0x3976('0x1d')]?_0x5be1db[_0x3976('0x1d')][_0x3976('0x1e')]===undefined?!![]:![]:!![],'where':_0x5be1db[_0x3976('0x1d')]?_0x5be1db[_0x3976('0x1d')]['where']||null:null,'attributes':_0x5be1db[_0x3976('0x1d')]?_0x5be1db[_0x3976('0x1d')][_0x3976('0x20')]||null:null,'include':_0x5be1db['options']?_0x5be1db['options']['include']?_['map'](_0x5be1db[_0x3976('0x1d')]['include'],function(_0x15c787){return{'model':db[_0x15c787[_0x3976('0x23')]],'as':_0x15c787['as'],'attributes':_0x15c787['attributes'],'include':_0x15c787[_0x3976('0x21')]?_[_0x3976('0x22')](_0x15c787[_0x3976('0x21')],function(_0x249a6a){return{'model':db[_0x249a6a['model']],'as':_0x249a6a['as'],'attributes':_0x249a6a[_0x3976('0x20')],'include':_0x249a6a[_0x3976('0x21')]?_[_0x3976('0x22')](_0x249a6a[_0x3976('0x21')],function(_0x45b23e){return{'model':db[_0x45b23e[_0x3976('0x23')]],'as':_0x45b23e['as'],'attributes':_0x45b23e[_0x3976('0x20')]};}):[]};}):[]};}):[]:[]})[_0x3976('0x11')](function(_0x5ed46d){logger['info'](_0x3976('0x24'),_0x5be1db);logger[_0x3976('0x15')](_0x3976('0x24'),_0x5be1db,JSON['stringify'](_0x5ed46d));_0x2225fb(_0x5ed46d);})['catch'](function(_0x36c08e){logger[_0x3976('0x18')](_0x3976('0x24'),_0x36c08e[_0x3976('0x1a')],_0x5be1db);_0x5eac05(_0x25940a['error'](0x1f4,_0x36c08e[_0x3976('0x1a')]));});});};
\ No newline at end of file
+var _0x1dbf=['VoiceQueue','find','lodash','moment','bluebird','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','./voiceQueue.socket','request','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','GetVoiceQueue','findAll','options','raw','where','attributes','limit','map','include','model','then','debug','stringify','ShowVoiceQueue'];(function(_0x27031e,_0x1eb8cd){var _0xfd46b3=function(_0x9fdcf8){while(--_0x9fdcf8){_0x27031e['push'](_0x27031e['shift']());}};_0xfd46b3(++_0x1eb8cd);}(_0x1dbf,0x1be));var _0xf1db=function(_0x3aaf0a,_0x450970){_0x3aaf0a=_0x3aaf0a-0x0;var _0x33e6bc=_0x1dbf[_0x3aaf0a];return _0x33e6bc;};'use strict';var _=require(_0xf1db('0x0'));var util=require('util');var moment=require(_0xf1db('0x1'));var BPromise=require(_0xf1db('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xf1db('0x3'));var logger=require('../../config/logger')(_0xf1db('0x4'));var config=require(_0xf1db('0x5'));var jayson=require(_0xf1db('0x6'));var client=jayson[_0xf1db('0x7')][_0xf1db('0x8')]({'port':0x232a});config['redis']=_[_0xf1db('0x9')](config[_0xf1db('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xf1db('0xb'))['register'](socket);function respondWithRpcPromise(_0x225bbf,_0x5f4a99,_0x5b79ba){return new BPromise(function(_0x5cb592,_0x9cd630){return client[_0xf1db('0xc')](_0x225bbf,_0x5b79ba)['then'](function(_0x4df6e8){logger[_0xf1db('0xd')](_0xf1db('0xe'),_0x5f4a99,_0xf1db('0xf'));logger['debug']('VoiceQueue,\x20%s,\x20%s,\x20%s',_0x5f4a99,'request\x20sent',JSON['stringify'](_0x4df6e8));if(_0x4df6e8[_0xf1db('0x10')]){if(_0x4df6e8[_0xf1db('0x10')][_0xf1db('0x11')]===0x1f4){logger[_0xf1db('0x10')](_0xf1db('0xe'),_0x5f4a99,_0x4df6e8['error']['message']);return _0x9cd630(_0x4df6e8['error'][_0xf1db('0x12')]);}logger[_0xf1db('0x10')]('VoiceQueue,\x20%s,\x20%s',_0x5f4a99,_0x4df6e8[_0xf1db('0x10')][_0xf1db('0x12')]);return _0x5cb592(_0x4df6e8[_0xf1db('0x10')][_0xf1db('0x12')]);}else{logger[_0xf1db('0xd')](_0xf1db('0xe'),_0x5f4a99,_0xf1db('0xf'));_0x5cb592(_0x4df6e8[_0xf1db('0x13')]['message']);}})[_0xf1db('0x14')](function(_0x2b45e0){logger[_0xf1db('0x10')](_0xf1db('0xe'),_0x5f4a99,_0x2b45e0);_0x9cd630(_0x2b45e0);});});}exports[_0xf1db('0x15')]=function(_0x36acb1){var _0x1de760=this;return new Promise(function(_0x499315,_0x22ad75){return db['VoiceQueue'][_0xf1db('0x16')]({'raw':_0x36acb1[_0xf1db('0x17')]?_0x36acb1[_0xf1db('0x17')][_0xf1db('0x18')]===undefined?!![]:![]:!![],'where':_0x36acb1[_0xf1db('0x17')]?_0x36acb1[_0xf1db('0x17')][_0xf1db('0x19')]||null:null,'attributes':_0x36acb1[_0xf1db('0x17')]?_0x36acb1['options'][_0xf1db('0x1a')]||null:null,'limit':_0x36acb1[_0xf1db('0x17')]?_0x36acb1[_0xf1db('0x17')][_0xf1db('0x1b')]||null:null,'include':_0x36acb1[_0xf1db('0x17')]?_0x36acb1[_0xf1db('0x17')]['include']?_[_0xf1db('0x1c')](_0x36acb1[_0xf1db('0x17')]['include'],function(_0x52c4b9){return{'model':db[_0x52c4b9['model']],'as':_0x52c4b9['as'],'attributes':_0x52c4b9[_0xf1db('0x1a')],'include':_0x52c4b9[_0xf1db('0x1d')]?_[_0xf1db('0x1c')](_0x52c4b9[_0xf1db('0x1d')],function(_0x3f42f7){return{'model':db[_0x3f42f7[_0xf1db('0x1e')]],'as':_0x3f42f7['as'],'attributes':_0x3f42f7[_0xf1db('0x1a')],'include':_0x3f42f7[_0xf1db('0x1d')]?_[_0xf1db('0x1c')](_0x3f42f7[_0xf1db('0x1d')],function(_0x2a46a3){return{'model':db[_0x2a46a3[_0xf1db('0x1e')]],'as':_0x2a46a3['as'],'attributes':_0x2a46a3[_0xf1db('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf1db('0x1f')](function(_0x2d1352){logger['info'](_0xf1db('0x15'),_0x36acb1);logger[_0xf1db('0x20')]('GetVoiceQueue',_0x36acb1,JSON[_0xf1db('0x21')](_0x2d1352));_0x499315(_0x2d1352);})['catch'](function(_0x125a7a){logger['error'](_0xf1db('0x15'),_0x125a7a[_0xf1db('0x12')],_0x36acb1);_0x22ad75(_0x1de760[_0xf1db('0x10')](0x1f4,_0x125a7a[_0xf1db('0x12')]));});});};exports[_0xf1db('0x22')]=function(_0x31758c){var _0x3d5e09=this;return new Promise(function(_0x1ec747,_0x19ef68){return db[_0xf1db('0x23')][_0xf1db('0x24')]({'raw':_0x31758c[_0xf1db('0x17')]?_0x31758c[_0xf1db('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x31758c[_0xf1db('0x17')]?_0x31758c[_0xf1db('0x17')][_0xf1db('0x19')]||null:null,'attributes':_0x31758c[_0xf1db('0x17')]?_0x31758c[_0xf1db('0x17')]['attributes']||null:null,'include':_0x31758c['options']?_0x31758c['options'][_0xf1db('0x1d')]?_['map'](_0x31758c[_0xf1db('0x17')]['include'],function(_0x5b423d){return{'model':db[_0x5b423d[_0xf1db('0x1e')]],'as':_0x5b423d['as'],'attributes':_0x5b423d[_0xf1db('0x1a')],'include':_0x5b423d['include']?_['map'](_0x5b423d[_0xf1db('0x1d')],function(_0x4d8e44){return{'model':db[_0x4d8e44['model']],'as':_0x4d8e44['as'],'attributes':_0x4d8e44[_0xf1db('0x1a')],'include':_0x4d8e44[_0xf1db('0x1d')]?_[_0xf1db('0x1c')](_0x4d8e44[_0xf1db('0x1d')],function(_0xf0cd02){return{'model':db[_0xf0cd02[_0xf1db('0x1e')]],'as':_0xf0cd02['as'],'attributes':_0xf0cd02['attributes']};}):[]};}):[]};}):[]:[]})[_0xf1db('0x1f')](function(_0x5099be){logger[_0xf1db('0xd')]('ShowVoiceQueue',_0x31758c);logger['debug'](_0xf1db('0x22'),_0x31758c,JSON[_0xf1db('0x21')](_0x5099be));_0x1ec747(_0x5099be);})[_0xf1db('0x14')](function(_0x3d8e0b){logger[_0xf1db('0x10')]('ShowVoiceQueue',_0x3d8e0b['message'],_0x31758c);_0x19ef68(_0x3d5e09[_0xf1db('0x10')](0x1f4,_0x3d8e0b['message']));});});};
\ No newline at end of file
index 22c1c48..eec0860 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22c8=['update','emit','register','voiceQueue:','./voiceQueue.events','save','remove'];(function(_0x1ca18a,_0x3235bc){var _0x8b22c6=function(_0x31f6ec){while(--_0x31f6ec){_0x1ca18a['push'](_0x1ca18a['shift']());}};_0x8b22c6(++_0x3235bc);}(_0x22c8,0x193));var _0x822c=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x22c8[_0x45d55e];return _0x29812a;};'use strict';var VoiceQueueEvents=require(_0x822c('0x0'));var events=[_0x822c('0x1'),_0x822c('0x2'),_0x822c('0x3')];function createListener(_0x12a98f,_0x2f6f07){return function(_0xc17ad6){_0x2f6f07[_0x822c('0x4')](_0x12a98f,_0xc17ad6);};}function removeListener(_0x1f6420,_0x4ffc50){return function(){VoiceQueueEvents['removeListener'](_0x1f6420,_0x4ffc50);};}exports[_0x822c('0x5')]=function(_0x336a0b){for(var _0xd5011c=0x0,_0x584517=events['length'];_0xd5011c<_0x584517;_0xd5011c++){var _0x4dbf37=events[_0xd5011c];var _0x480c73=createListener(_0x822c('0x6')+_0x4dbf37,_0x336a0b);VoiceQueueEvents['on'](_0x4dbf37,_0x480c73);}};
\ No newline at end of file
+var _0x89eb=['save','remove','removeListener','length','voiceQueue:','./voiceQueue.events'];(function(_0x88a170,_0x570911){var _0x171401=function(_0x375835){while(--_0x375835){_0x88a170['push'](_0x88a170['shift']());}};_0x171401(++_0x570911);}(_0x89eb,0x143));var _0xb89e=function(_0x451df3,_0x4ac838){_0x451df3=_0x451df3-0x0;var _0x5efaac=_0x89eb[_0x451df3];return _0x5efaac;};'use strict';var VoiceQueueEvents=require(_0xb89e('0x0'));var events=[_0xb89e('0x1'),_0xb89e('0x2'),'update'];function createListener(_0x5c4965,_0x12b390){return function(_0x4d872b){_0x12b390['emit'](_0x5c4965,_0x4d872b);};}function removeListener(_0x260822,_0x54e143){return function(){VoiceQueueEvents[_0xb89e('0x3')](_0x260822,_0x54e143);};}exports['register']=function(_0x5ac26c){for(var _0x23cb0b=0x0,_0x5b90e=events[_0xb89e('0x4')];_0x23cb0b<_0x5b90e;_0x23cb0b++){var _0x4548f3=events[_0x23cb0b];var _0x9760d6=createListener(_0xb89e('0x5')+_0x4548f3,_0x5ac26c);VoiceQueueEvents['on'](_0x4548f3,_0x9760d6);}};
\ No newline at end of file
index 487e684..0e03197 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24e2=['delete','destroy','exports','multer','util','path','Router','../../components/auth/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','/describe','describe','/index','/:id','show','post','create','update'];(function(_0x5ea06d,_0x5148bc){var _0x126ab4=function(_0x2b1346){while(--_0x2b1346){_0x5ea06d['push'](_0x5ea06d['shift']());}};_0x126ab4(++_0x5148bc);}(_0x24e2,0xd5));var _0x224e=function(_0x5265dc,_0x24798b){_0x5265dc=_0x5265dc-0x0;var _0x4b24d4=_0x24e2[_0x5265dc];return _0x4b24d4;};'use strict';var multer=require(_0x224e('0x0'));var util=require(_0x224e('0x1'));var path=require(_0x224e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x224e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x224e('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x224e('0x5'));var controller=require(_0x224e('0x6'));router[_0x224e('0x7')]('/',auth[_0x224e('0x8')](),controller[_0x224e('0x9')]);router['get'](_0x224e('0xa'),auth[_0x224e('0x8')](),controller[_0x224e('0xb')]);router[_0x224e('0x7')](_0x224e('0xc'),auth[_0x224e('0x8')](),controller['getVoiceQueuesReport']);router[_0x224e('0x7')](_0x224e('0xd'),auth[_0x224e('0x8')](),controller[_0x224e('0xe')]);router[_0x224e('0xf')]('/',auth[_0x224e('0x8')](),controller[_0x224e('0x10')]);router['put'](_0x224e('0xd'),auth['isAuthenticated'](),controller[_0x224e('0x11')]);router[_0x224e('0x12')](_0x224e('0xd'),auth['isAuthenticated'](),controller[_0x224e('0x13')]);module[_0x224e('0x14')]=router;
\ No newline at end of file
+var _0x4ea2=['express','Router','../../components/interaction/service','./voiceQueueReport.controller','get','/describe','isAuthenticated','describe','getVoiceQueuesReport','show','post','create','/:id','delete','destroy','multer','path','connect-timeout'];(function(_0x249678,_0x277be0){var _0xe12a48=function(_0x4aac3b){while(--_0x4aac3b){_0x249678['push'](_0x249678['shift']());}};_0xe12a48(++_0x277be0);}(_0x4ea2,0xd5));var _0x24ea=function(_0x209ec9,_0x30378c){_0x209ec9=_0x209ec9-0x0;var _0x129b1b=_0x4ea2[_0x209ec9];return _0x129b1b;};'use strict';var multer=require(_0x24ea('0x0'));var util=require('util');var path=require(_0x24ea('0x1'));var timeout=require(_0x24ea('0x2'));var express=require(_0x24ea('0x3'));var router=express[_0x24ea('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x24ea('0x5'));var config=require('../../config/environment');var controller=require(_0x24ea('0x6'));router[_0x24ea('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x24ea('0x7')](_0x24ea('0x8'),auth[_0x24ea('0x9')](),controller[_0x24ea('0xa')]);router['get']('/index',auth[_0x24ea('0x9')](),controller[_0x24ea('0xb')]);router['get']('/:id',auth[_0x24ea('0x9')](),controller[_0x24ea('0xc')]);router[_0x24ea('0xd')]('/',auth[_0x24ea('0x9')](),controller[_0x24ea('0xe')]);router['put'](_0x24ea('0xf'),auth[_0x24ea('0x9')](),controller['update']);router[_0x24ea('0x10')](_0x24ea('0xf'),auth[_0x24ea('0x9')](),controller[_0x24ea('0x11')]);module['exports']=router;
\ No newline at end of file
index df694df..9345158 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf04=['seconds','setDataValue','queuecallerleaveAt','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE','getDataValue','queuecallerjoinAt','format','YYYY-MM-DD\x20HH:mm:ss','diff'];(function(_0x5568f3,_0x9bdfe2){var _0x25a4ec=function(_0x32ea0a){while(--_0x32ea0a){_0x5568f3['push'](_0x5568f3['shift']());}};_0x25a4ec(++_0x9bdfe2);}(_0xcf04,0xf6));var _0x4cf0=function(_0xc17a39,_0x5d6dad){_0xc17a39=_0xc17a39-0x0;var _0x13e917=_0xcf04[_0xc17a39];return _0x13e917;};'use strict';var Sequelize=require(_0x4cf0('0x0'));var moment=require(_0x4cf0('0x1'));module[_0x4cf0('0x2')]={'type':{'type':Sequelize[_0x4cf0('0x3')]},'uniqueid':{'type':Sequelize[_0x4cf0('0x3')]},'calleridnum':{'type':Sequelize[_0x4cf0('0x3')]},'calleridname':{'type':Sequelize[_0x4cf0('0x3')]},'queue':{'type':Sequelize[_0x4cf0('0x3')]},'queuecallerjoinAt':{'type':Sequelize[_0x4cf0('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0x4cf0('0x4')],'set':function(_0x410ef6){var _0x345994=moment(_0x410ef6);var _0x225e14=moment(this[_0x4cf0('0x5')](_0x4cf0('0x6')))[_0x4cf0('0x7')](_0x4cf0('0x8'));var _0x4adcd7=_0x345994[_0x4cf0('0x9')](_0x225e14,_0x4cf0('0xa'));this[_0x4cf0('0xb')](_0x4cf0('0xc'),_0x410ef6);this[_0x4cf0('0xb')]('holdtime',_0x4adcd7||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize[_0x4cf0('0xd')]},'queuecallerabandon':{'type':Sequelize[_0x4cf0('0xe')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize[_0x4cf0('0xe')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x4cf0('0x4')]},'queuecallerexit':{'type':Sequelize[_0x4cf0('0xe')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x4cf0('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0x4cf0('0x3')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x4cf0('0x3')]},'connectedlinename':{'type':Sequelize[_0x4cf0('0x3')]},'accountcode':{'type':Sequelize[_0x4cf0('0x3')]},'context':{'type':Sequelize[_0x4cf0('0x3')]},'exten':{'type':Sequelize[_0x4cf0('0x3')]},'priority':{'type':Sequelize[_0x4cf0('0x3')]},'holdtime':{'type':Sequelize[_0x4cf0('0xd')]},'mohtime':{'type':Sequelize[_0x4cf0('0xd')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x4cf0('0xe')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x4cf0('0x3')]},'transfer':{'type':Sequelize[_0x4cf0('0xe')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x4cf0('0x3')],'comment':_0x4cf0('0xf')},'transferexten':{'type':Sequelize[_0x4cf0('0x3')]},'transferuniqueid':{'type':Sequelize[_0x4cf0('0x3')]},'disposition':{'type':Sequelize[_0x4cf0('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x4cf0('0x3')]},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x62df=['exports','STRING','DATE','getDataValue','format','YYYY-MM-DD\x20HH:mm:ss','diff','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize'];(function(_0x63c583,_0x166c49){var _0x18fb0f=function(_0x5ef81e){while(--_0x5ef81e){_0x63c583['push'](_0x63c583['shift']());}};_0x18fb0f(++_0x166c49);}(_0x62df,0x13a));var _0xf62d=function(_0x11ee55,_0x583f12){_0x11ee55=_0x11ee55-0x0;var _0x40bdb4=_0x62df[_0x11ee55];return _0x40bdb4;};'use strict';var Sequelize=require(_0xf62d('0x0'));var moment=require('moment');module[_0xf62d('0x1')]={'type':{'type':Sequelize[_0xf62d('0x2')]},'uniqueid':{'type':Sequelize[_0xf62d('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xf62d('0x2')]},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0xf62d('0x3')],'set':function(_0x1e95c0){var _0x7342d3=moment(_0x1e95c0);var _0x14de28=moment(this[_0xf62d('0x4')]('queuecallerjoinAt'))[_0xf62d('0x5')](_0xf62d('0x6'));var _0x47f123=_0x7342d3[_0xf62d('0x7')](_0x14de28,'seconds');this[_0xf62d('0x8')](_0xf62d('0x9'),_0x1e95c0);this[_0xf62d('0x8')](_0xf62d('0xa'),_0x47f123||null);}},'position':{'type':Sequelize[_0xf62d('0xb')]},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize[_0xf62d('0xc')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize[_0xf62d('0xc')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xf62d('0x3')]},'queuecallerexit':{'type':Sequelize[_0xf62d('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xf62d('0x3')]},'queuecallerexitreason':{'type':Sequelize[_0xf62d('0x2')],'comment':_0xf62d('0xd')},'originalposition':{'type':Sequelize[_0xf62d('0xb')]},'channel':{'type':Sequelize[_0xf62d('0x2')]},'connectedlinenum':{'type':Sequelize[_0xf62d('0x2')]},'connectedlinename':{'type':Sequelize[_0xf62d('0x2')]},'accountcode':{'type':Sequelize[_0xf62d('0x2')]},'context':{'type':Sequelize[_0xf62d('0x2')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xf62d('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0xf62d('0xb')],'defaultValue':0x0},'assigned':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xf62d('0x2')]},'transfer':{'type':Sequelize[_0xf62d('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xf62d('0x2')],'comment':_0xf62d('0xe')},'transferexten':{'type':Sequelize[_0xf62d('0x2')]},'transferuniqueid':{'type':Sequelize[_0xf62d('0x2')]},'disposition':{'type':Sequelize[_0xf62d('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 776f43c..14ca52d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ba3=['create','body','find','describe','getVoiceQueuesReport','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','end','stack','name','send','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','VoiceQueueReport','includeAll','include','findAll','rows','show','params','catch'];(function(_0x286fee,_0x167eb0){var _0x1585fc=function(_0xbd5973){while(--_0xbd5973){_0x286fee['push'](_0x286fee['shift']());}};_0x1585fc(++_0x167eb0);}(_0x4ba3,0x13d));var _0x34ba=function(_0x1612d6,_0x5577bf){_0x1612d6=_0x1612d6-0x0;var _0x27a583=_0x4ba3[_0x1612d6];return _0x27a583;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x34ba('0x0'));var zipdir=require(_0x34ba('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x34ba('0x2'));var moment=require(_0x34ba('0x3'));var BPromise=require(_0x34ba('0x4'));var Mustache=require(_0x34ba('0x5'));var util=require('util');var path=require(_0x34ba('0x6'));var sox=require(_0x34ba('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x34ba('0x8'));var _=require(_0x34ba('0x9'));var squel=require(_0x34ba('0xa'));var crypto=require('crypto');var jsforce=require(_0x34ba('0xb'));var deskjs=require(_0x34ba('0xc'));var toCsv=require('to-csv');var querystring=require(_0x34ba('0xd'));var Papa=require(_0x34ba('0xe'));var Redis=require('ioredis');var authService=require(_0x34ba('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x34ba('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x34ba('0x11'))('api');var utils=require(_0x34ba('0x12'));var config=require(_0x34ba('0x13'));var licenseUtil=require(_0x34ba('0x14'));var db=require(_0x34ba('0x15'))['db'];config[_0x34ba('0x16')]=_[_0x34ba('0x17')](config[_0x34ba('0x16')],{'host':_0x34ba('0x18'),'port':0x18eb});var socket=require(_0x34ba('0x19'))(new Redis(config['redis']));require(_0x34ba('0x1a'))['register'](socket);function respondWithStatusCode(_0x12bbe2,_0x4f1332){_0x4f1332=_0x4f1332||0xcc;return function(_0x331257){if(_0x331257){return _0x12bbe2[_0x34ba('0x1b')](_0x4f1332);}return _0x12bbe2[_0x34ba('0x1c')](_0x4f1332)['end']();};}function respondWithResult(_0x5ce9a2,_0x586657){_0x586657=_0x586657||0xc8;return function(_0x4b8e7b){if(_0x4b8e7b){return _0x5ce9a2[_0x34ba('0x1c')](_0x586657)[_0x34ba('0x1d')](_0x4b8e7b);}};}function respondWithFilteredResult(_0x46f4d6,_0x483a01){return function(_0x2098b1){if(_0x2098b1){var _0x502e62=typeof _0x483a01[_0x34ba('0x1e')]===_0x34ba('0x1f')&&typeof _0x483a01['limit']==='undefined';var _0x46dd82=_0x2098b1[_0x34ba('0x20')];var _0x597646=_0x502e62?0x0:_0x483a01[_0x34ba('0x1e')];var _0x15c2b8=_0x502e62?_0x2098b1[_0x34ba('0x20')]:_0x483a01[_0x34ba('0x1e')]+_0x483a01[_0x34ba('0x21')];var _0x26278c;if(_0x15c2b8>=_0x46dd82){_0x15c2b8=_0x46dd82;_0x26278c=0xc8;}else{_0x26278c=0xce;}_0x46f4d6[_0x34ba('0x1c')](_0x26278c);return _0x46f4d6[_0x34ba('0x22')](_0x34ba('0x23'),_0x597646+'-'+_0x15c2b8+'/'+_0x46dd82)[_0x34ba('0x1d')](_0x2098b1);}return null;};}function patchUpdates(_0xc80aa8){return function(_0x999ac5){try{jsonpatch[_0x34ba('0x24')](_0x999ac5,_0xc80aa8,!![]);}catch(_0x2c1edf){return BPromise[_0x34ba('0x25')](_0x2c1edf);}return _0x999ac5['save']();};}function saveUpdates(_0x2fbbc2,_0x1bd04b){return function(_0x259d9b){if(_0x259d9b){return _0x259d9b[_0x34ba('0x26')](_0x2fbbc2)['then'](function(_0xad1297){return _0xad1297;});}return null;};}function removeEntity(_0x56219d,_0x5c2d4e){return function(_0x1de11f){if(_0x1de11f){return _0x1de11f['destroy']()[_0x34ba('0x27')](function(){_0x56219d['status'](0xcc)[_0x34ba('0x28')]();});}};}function handleEntityNotFound(_0x48bab0,_0x32ccba){return function(_0x3e8b48){if(!_0x3e8b48){_0x48bab0[_0x34ba('0x1b')](0x194);}return _0x3e8b48;};}function handleError(_0x6b61ae,_0x558010){_0x558010=_0x558010||0x1f4;return function(_0x49e020){logger['error'](_0x49e020[_0x34ba('0x29')]);if(_0x49e020[_0x34ba('0x2a')]){delete _0x49e020[_0x34ba('0x2a')];}_0x6b61ae[_0x34ba('0x1c')](_0x558010)[_0x34ba('0x2b')](_0x49e020);};}exports['index']=function(_0x43e04a,_0x56313c){var _0x66c121={},_0x3b7f81={},_0x198e06={'count':0x0,'rows':[]};var _0x2417be=_[_0x34ba('0x2c')](db['VoiceQueueReport'][_0x34ba('0x2d')],function(_0x51cc67){return{'name':_0x51cc67['fieldName'],'type':_0x51cc67[_0x34ba('0x2e')][_0x34ba('0x2f')]};});_0x3b7f81[_0x34ba('0x30')]=_[_0x34ba('0x2c')](_0x2417be,_0x34ba('0x2a'));_0x3b7f81[_0x34ba('0x31')]=_[_0x34ba('0x32')](_0x43e04a[_0x34ba('0x31')]);_0x3b7f81[_0x34ba('0x33')]=_[_0x34ba('0x34')](_0x3b7f81[_0x34ba('0x30')],_0x3b7f81['query']);_0x66c121[_0x34ba('0x35')]=_['intersection'](_0x3b7f81['model'],qs[_0x34ba('0x36')](_0x43e04a[_0x34ba('0x31')][_0x34ba('0x36')]));_0x66c121[_0x34ba('0x35')]=_0x66c121[_0x34ba('0x35')][_0x34ba('0x37')]?_0x66c121[_0x34ba('0x35')]:_0x3b7f81[_0x34ba('0x30')];if(!_0x43e04a['query'][_0x34ba('0x38')](_0x34ba('0x39'))){_0x66c121[_0x34ba('0x21')]=qs[_0x34ba('0x21')](_0x43e04a[_0x34ba('0x31')][_0x34ba('0x21')]);_0x66c121[_0x34ba('0x1e')]=qs['offset'](_0x43e04a[_0x34ba('0x31')][_0x34ba('0x1e')]);}_0x66c121[_0x34ba('0x3a')]=qs['sort'](_0x43e04a[_0x34ba('0x31')][_0x34ba('0x3b')]);_0x66c121[_0x34ba('0x3c')]=qs[_0x34ba('0x33')](_[_0x34ba('0x3d')](_0x43e04a[_0x34ba('0x31')],_0x3b7f81['filters']),_0x2417be);if(_0x43e04a['query'][_0x34ba('0x3e')]){_0x66c121[_0x34ba('0x3c')]=_[_0x34ba('0x3f')](_0x66c121[_0x34ba('0x3c')],{'$or':_[_0x34ba('0x2c')](_0x2417be,function(_0x3a0c79){if(_0x3a0c79[_0x34ba('0x2e')]!=='VIRTUAL'){var _0x5ce604={};_0x5ce604[_0x3a0c79['name']]={'$like':'%'+_0x43e04a['query'][_0x34ba('0x3e')]+'%'};return _0x5ce604;}})});}_0x66c121=_[_0x34ba('0x3f')]({},_0x66c121,_0x43e04a[_0x34ba('0x40')]);var _0x3bcfcc={'where':_0x66c121[_0x34ba('0x3c')]};return db[_0x34ba('0x41')][_0x34ba('0x20')](_0x3bcfcc)['then'](function(_0x729379){_0x198e06[_0x34ba('0x20')]=_0x729379;if(_0x43e04a['query'][_0x34ba('0x42')]){_0x66c121[_0x34ba('0x43')]=[{'all':!![]}];}return db[_0x34ba('0x41')][_0x34ba('0x44')](_0x66c121);})[_0x34ba('0x27')](function(_0x1d4670){_0x198e06[_0x34ba('0x45')]=_0x1d4670;return _0x198e06;})[_0x34ba('0x27')](respondWithFilteredResult(_0x56313c,_0x66c121))['catch'](handleError(_0x56313c,null));};exports[_0x34ba('0x46')]=function(_0x3a0e3d,_0x1277d4){var _0x337f08={'raw':![],'where':{'id':_0x3a0e3d[_0x34ba('0x47')]['id']}},_0x49761a={};_0x49761a[_0x34ba('0x30')]=_[_0x34ba('0x32')](db[_0x34ba('0x41')]['rawAttributes']);_0x49761a[_0x34ba('0x31')]=_[_0x34ba('0x32')](_0x3a0e3d[_0x34ba('0x31')]);_0x49761a[_0x34ba('0x33')]=_[_0x34ba('0x34')](_0x49761a[_0x34ba('0x30')],_0x49761a['query']);_0x337f08[_0x34ba('0x35')]=_[_0x34ba('0x34')](_0x49761a[_0x34ba('0x30')],qs['fields'](_0x3a0e3d['query'][_0x34ba('0x36')]));_0x337f08['attributes']=_0x337f08[_0x34ba('0x35')][_0x34ba('0x37')]?_0x337f08[_0x34ba('0x35')]:_0x49761a['model'];if(_0x3a0e3d[_0x34ba('0x31')][_0x34ba('0x42')]){_0x337f08[_0x34ba('0x43')]=[{'all':!![]}];}_0x337f08=_[_0x34ba('0x3f')]({},_0x337f08,_0x3a0e3d[_0x34ba('0x40')]);return db[_0x34ba('0x41')]['find'](_0x337f08)[_0x34ba('0x27')](handleEntityNotFound(_0x1277d4,null))[_0x34ba('0x27')](respondWithResult(_0x1277d4,null))[_0x34ba('0x48')](handleError(_0x1277d4,null));};exports[_0x34ba('0x49')]=function(_0x4522e4,_0x5da2af){return db[_0x34ba('0x41')][_0x34ba('0x49')](_0x4522e4['body'],{})[_0x34ba('0x27')](respondWithResult(_0x5da2af,0xc9))['catch'](handleError(_0x5da2af,null));};exports[_0x34ba('0x26')]=function(_0xb6d383,_0xb92a9f){if(_0xb6d383[_0x34ba('0x4a')]['id']){delete _0xb6d383[_0x34ba('0x4a')]['id'];}return db[_0x34ba('0x41')]['find']({'where':{'id':_0xb6d383[_0x34ba('0x47')]['id']}})[_0x34ba('0x27')](handleEntityNotFound(_0xb92a9f,null))['then'](saveUpdates(_0xb6d383[_0x34ba('0x4a')],null))[_0x34ba('0x27')](respondWithResult(_0xb92a9f,null))[_0x34ba('0x48')](handleError(_0xb92a9f,null));};exports['destroy']=function(_0x5e2f29,_0x5d0fca){return db[_0x34ba('0x41')][_0x34ba('0x4b')]({'where':{'id':_0x5e2f29['params']['id']}})[_0x34ba('0x27')](handleEntityNotFound(_0x5d0fca,null))[_0x34ba('0x27')](removeEntity(_0x5d0fca,null))[_0x34ba('0x48')](handleError(_0x5d0fca,null));};exports['describe']=function(_0x7f307,_0x13deda){return db[_0x34ba('0x41')][_0x34ba('0x4c')]()['then'](respondWithResult(_0x13deda,null))[_0x34ba('0x48')](handleError(_0x13deda,null));};exports[_0x34ba('0x4d')]=function(_0x22ae39,_0x1b806){var _0x239879={},_0x54355e={},_0x251bf7={'count':0x0,'rows':[]};_0x54355e[_0x34ba('0x30')]=_[_0x34ba('0x32')](db[_0x34ba('0x41')][_0x34ba('0x2d')]);_0x54355e[_0x34ba('0x31')]=_['keys'](_0x22ae39['query']);_0x54355e[_0x34ba('0x33')]=_[_0x34ba('0x34')](_0x54355e['model'],_0x54355e[_0x34ba('0x31')]);_0x239879[_0x34ba('0x35')]=_[_0x34ba('0x34')](_0x54355e[_0x34ba('0x30')],qs[_0x34ba('0x36')](_0x22ae39[_0x34ba('0x31')]['fields']));_0x239879['attributes']=_0x239879[_0x34ba('0x35')][_0x34ba('0x37')]?_0x239879[_0x34ba('0x35')]:_0x54355e['model'];if(!_0x22ae39[_0x34ba('0x31')][_0x34ba('0x38')](_0x34ba('0x39'))){_0x239879['limit']=qs[_0x34ba('0x21')](_0x22ae39['query'][_0x34ba('0x21')]);_0x239879[_0x34ba('0x1e')]=qs[_0x34ba('0x1e')](_0x22ae39[_0x34ba('0x31')][_0x34ba('0x1e')]);}_0x239879[_0x34ba('0x3a')]=qs[_0x34ba('0x3b')](_0x22ae39[_0x34ba('0x31')]['sort']);_0x239879[_0x34ba('0x3c')]=qs[_0x34ba('0x33')](_[_0x34ba('0x3d')](_0x22ae39[_0x34ba('0x31')],_0x54355e[_0x34ba('0x33')]));if(_0x22ae39['query'][_0x34ba('0x3e')]){_0x239879[_0x34ba('0x3c')]=_[_0x34ba('0x3f')](_0x239879[_0x34ba('0x3c')],{'$or':_[_0x34ba('0x2c')](_0x239879['attributes'],function(_0x1c5e1c){var _0x3abc8a={};_0x3abc8a[_0x1c5e1c]={'$like':'%'+_0x22ae39['query'][_0x34ba('0x3e')]+'%'};return _0x3abc8a;})});}_0x239879=_[_0x34ba('0x3f')]({},_0x239879,_0x22ae39['options']);var _0x4cd4a6={'where':_0x239879[_0x34ba('0x3c')]};return db[_0x34ba('0x41')]['count'](_0x4cd4a6)[_0x34ba('0x27')](function(_0x27b773){_0x251bf7[_0x34ba('0x20')]=_0x27b773;if(_0x22ae39[_0x34ba('0x31')][_0x34ba('0x42')]){_0x239879[_0x34ba('0x43')]=[{'all':!![]}];}return db[_0x34ba('0x41')][_0x34ba('0x44')](_0x239879);})['then'](function(_0x3a2708){_0x251bf7[_0x34ba('0x45')]=_0x3a2708;return _0x251bf7;})[_0x34ba('0x27')](respondWithFilteredResult(_0x1b806,_0x239879,'getVoiceQueuesReport'))['catch'](handleError(_0x1b806,null,_0x34ba('0x4d')));};
\ No newline at end of file
+var _0x4d38=['../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./voiceQueueReport.socket','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','then','end','stack','name','send','index','map','VoiceQueueReport','fieldName','key','model','query','keys','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filters','filter','merge','type','VIRTUAL','options','rows','show','params','rawAttributes','intersection','includeAll','find','catch','create','body','update','destroy','describe','nolimit','include','findAll','getVoiceQueuesReport','rimraf','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service'];(function(_0x18cb4c,_0x1759a2){var _0x36c922=function(_0x44ada8){while(--_0x44ada8){_0x18cb4c['push'](_0x18cb4c['shift']());}};_0x36c922(++_0x1759a2);}(_0x4d38,0x1d1));var _0x84d3=function(_0x33ac75,_0x4953e3){_0x33ac75=_0x33ac75-0x0;var _0x34d5f2=_0x4d38[_0x33ac75];return _0x34d5f2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x84d3('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x84d3('0x1'));var BPromise=require(_0x84d3('0x2'));var Mustache=require(_0x84d3('0x3'));var util=require(_0x84d3('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0x84d3('0x5'));var ejs=require(_0x84d3('0x6'));var fs=require('fs');var fs_extra=require(_0x84d3('0x7'));var _=require(_0x84d3('0x8'));var squel=require('squel');var crypto=require(_0x84d3('0x9'));var jsforce=require(_0x84d3('0xa'));var deskjs=require(_0x84d3('0xb'));var toCsv=require(_0x84d3('0x5'));var querystring=require('querystring');var Papa=require(_0x84d3('0xc'));var Redis=require(_0x84d3('0xd'));var authService=require(_0x84d3('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x84d3('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x84d3('0x10'))(_0x84d3('0x11'));var utils=require(_0x84d3('0x12'));var config=require(_0x84d3('0x13'));var licenseUtil=require(_0x84d3('0x14'));var db=require(_0x84d3('0x15'))['db'];config[_0x84d3('0x16')]=_[_0x84d3('0x17')](config[_0x84d3('0x16')],{'host':_0x84d3('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x84d3('0x16')]));require(_0x84d3('0x19'))['register'](socket);function respondWithStatusCode(_0x14eba7,_0x19fb9e){_0x19fb9e=_0x19fb9e||0xcc;return function(_0x4aff55){if(_0x4aff55){return _0x14eba7[_0x84d3('0x1a')](_0x19fb9e);}return _0x14eba7[_0x84d3('0x1b')](_0x19fb9e)['end']();};}function respondWithResult(_0x552c1e,_0x848786){_0x848786=_0x848786||0xc8;return function(_0x1947f8){if(_0x1947f8){return _0x552c1e[_0x84d3('0x1b')](_0x848786)[_0x84d3('0x1c')](_0x1947f8);}};}function respondWithFilteredResult(_0x89358,_0x53314b){return function(_0x2a95e3){if(_0x2a95e3){var _0x25cbbb=typeof _0x53314b[_0x84d3('0x1d')]===_0x84d3('0x1e')&&typeof _0x53314b[_0x84d3('0x1f')]===_0x84d3('0x1e');var _0x1c27cc=_0x2a95e3[_0x84d3('0x20')];var _0x3f1058=_0x25cbbb?0x0:_0x53314b[_0x84d3('0x1d')];var _0x1a5244=_0x25cbbb?_0x2a95e3['count']:_0x53314b[_0x84d3('0x1d')]+_0x53314b[_0x84d3('0x1f')];var _0x254065;if(_0x1a5244>=_0x1c27cc){_0x1a5244=_0x1c27cc;_0x254065=0xc8;}else{_0x254065=0xce;}_0x89358[_0x84d3('0x1b')](_0x254065);return _0x89358['set'](_0x84d3('0x21'),_0x3f1058+'-'+_0x1a5244+'/'+_0x1c27cc)[_0x84d3('0x1c')](_0x2a95e3);}return null;};}function patchUpdates(_0x61154f){return function(_0x24e85b){try{jsonpatch[_0x84d3('0x22')](_0x24e85b,_0x61154f,!![]);}catch(_0x224822){return BPromise['reject'](_0x224822);}return _0x24e85b[_0x84d3('0x23')]();};}function saveUpdates(_0x47f3ba,_0x2ce315){return function(_0x2879ab){if(_0x2879ab){return _0x2879ab['update'](_0x47f3ba)['then'](function(_0x10be3f){return _0x10be3f;});}return null;};}function removeEntity(_0x26090d,_0x305c29){return function(_0x1abf5a){if(_0x1abf5a){return _0x1abf5a['destroy']()[_0x84d3('0x24')](function(){_0x26090d[_0x84d3('0x1b')](0xcc)[_0x84d3('0x25')]();});}};}function handleEntityNotFound(_0x20413f,_0x304115){return function(_0x49d542){if(!_0x49d542){_0x20413f[_0x84d3('0x1a')](0x194);}return _0x49d542;};}function handleError(_0x498675,_0x3de6da){_0x3de6da=_0x3de6da||0x1f4;return function(_0x227216){logger['error'](_0x227216[_0x84d3('0x26')]);if(_0x227216['name']){delete _0x227216[_0x84d3('0x27')];}_0x498675[_0x84d3('0x1b')](_0x3de6da)[_0x84d3('0x28')](_0x227216);};}exports[_0x84d3('0x29')]=function(_0x2fe50c,_0x1aba10){var _0xe900d4={},_0x316b9a={},_0x1ce920={'count':0x0,'rows':[]};var _0x18956a=_[_0x84d3('0x2a')](db[_0x84d3('0x2b')]['rawAttributes'],function(_0x2adcb7){return{'name':_0x2adcb7[_0x84d3('0x2c')],'type':_0x2adcb7['type'][_0x84d3('0x2d')]};});_0x316b9a[_0x84d3('0x2e')]=_[_0x84d3('0x2a')](_0x18956a,_0x84d3('0x27'));_0x316b9a[_0x84d3('0x2f')]=_[_0x84d3('0x30')](_0x2fe50c[_0x84d3('0x2f')]);_0x316b9a['filters']=_['intersection'](_0x316b9a['model'],_0x316b9a['query']);_0xe900d4['attributes']=_['intersection'](_0x316b9a[_0x84d3('0x2e')],qs[_0x84d3('0x31')](_0x2fe50c[_0x84d3('0x2f')]['fields']));_0xe900d4['attributes']=_0xe900d4[_0x84d3('0x32')][_0x84d3('0x33')]?_0xe900d4['attributes']:_0x316b9a['model'];if(!_0x2fe50c['query'][_0x84d3('0x34')]('nolimit')){_0xe900d4[_0x84d3('0x1f')]=qs[_0x84d3('0x1f')](_0x2fe50c[_0x84d3('0x2f')][_0x84d3('0x1f')]);_0xe900d4['offset']=qs[_0x84d3('0x1d')](_0x2fe50c['query'][_0x84d3('0x1d')]);}_0xe900d4[_0x84d3('0x35')]=qs[_0x84d3('0x36')](_0x2fe50c['query']['sort']);_0xe900d4[_0x84d3('0x37')]=qs['filters'](_[_0x84d3('0x38')](_0x2fe50c['query'],_0x316b9a[_0x84d3('0x39')]),_0x18956a);if(_0x2fe50c['query'][_0x84d3('0x3a')]){_0xe900d4[_0x84d3('0x37')]=_[_0x84d3('0x3b')](_0xe900d4['where'],{'$or':_[_0x84d3('0x2a')](_0x18956a,function(_0x553732){if(_0x553732[_0x84d3('0x3c')]!==_0x84d3('0x3d')){var _0x589cde={};_0x589cde[_0x553732['name']]={'$like':'%'+_0x2fe50c['query'][_0x84d3('0x3a')]+'%'};return _0x589cde;}})});}_0xe900d4=_['merge']({},_0xe900d4,_0x2fe50c[_0x84d3('0x3e')]);var _0x23af00={'where':_0xe900d4['where']};return db[_0x84d3('0x2b')][_0x84d3('0x20')](_0x23af00)['then'](function(_0x2ff6f9){_0x1ce920[_0x84d3('0x20')]=_0x2ff6f9;if(_0x2fe50c[_0x84d3('0x2f')]['includeAll']){_0xe900d4['include']=[{'all':!![]}];}return db[_0x84d3('0x2b')]['findAll'](_0xe900d4);})['then'](function(_0x494c13){_0x1ce920[_0x84d3('0x3f')]=_0x494c13;return _0x1ce920;})[_0x84d3('0x24')](respondWithFilteredResult(_0x1aba10,_0xe900d4))['catch'](handleError(_0x1aba10,null));};exports[_0x84d3('0x40')]=function(_0x5360bc,_0x38660d){var _0x339e49={'raw':![],'where':{'id':_0x5360bc[_0x84d3('0x41')]['id']}},_0x53a830={};_0x53a830['model']=_[_0x84d3('0x30')](db[_0x84d3('0x2b')][_0x84d3('0x42')]);_0x53a830[_0x84d3('0x2f')]=_[_0x84d3('0x30')](_0x5360bc[_0x84d3('0x2f')]);_0x53a830[_0x84d3('0x39')]=_['intersection'](_0x53a830[_0x84d3('0x2e')],_0x53a830['query']);_0x339e49[_0x84d3('0x32')]=_[_0x84d3('0x43')](_0x53a830['model'],qs['fields'](_0x5360bc[_0x84d3('0x2f')][_0x84d3('0x31')]));_0x339e49[_0x84d3('0x32')]=_0x339e49[_0x84d3('0x32')][_0x84d3('0x33')]?_0x339e49['attributes']:_0x53a830[_0x84d3('0x2e')];if(_0x5360bc['query'][_0x84d3('0x44')]){_0x339e49['include']=[{'all':!![]}];}_0x339e49=_['merge']({},_0x339e49,_0x5360bc[_0x84d3('0x3e')]);return db[_0x84d3('0x2b')][_0x84d3('0x45')](_0x339e49)[_0x84d3('0x24')](handleEntityNotFound(_0x38660d,null))[_0x84d3('0x24')](respondWithResult(_0x38660d,null))[_0x84d3('0x46')](handleError(_0x38660d,null));};exports[_0x84d3('0x47')]=function(_0x4db490,_0x259237){return db[_0x84d3('0x2b')][_0x84d3('0x47')](_0x4db490[_0x84d3('0x48')],{})[_0x84d3('0x24')](respondWithResult(_0x259237,0xc9))[_0x84d3('0x46')](handleError(_0x259237,null));};exports[_0x84d3('0x49')]=function(_0x267846,_0x8413cb){if(_0x267846[_0x84d3('0x48')]['id']){delete _0x267846['body']['id'];}return db[_0x84d3('0x2b')][_0x84d3('0x45')]({'where':{'id':_0x267846['params']['id']}})[_0x84d3('0x24')](handleEntityNotFound(_0x8413cb,null))[_0x84d3('0x24')](saveUpdates(_0x267846[_0x84d3('0x48')],null))[_0x84d3('0x24')](respondWithResult(_0x8413cb,null))[_0x84d3('0x46')](handleError(_0x8413cb,null));};exports[_0x84d3('0x4a')]=function(_0x56f27f,_0xe163f9){return db[_0x84d3('0x2b')][_0x84d3('0x45')]({'where':{'id':_0x56f27f['params']['id']}})['then'](handleEntityNotFound(_0xe163f9,null))['then'](removeEntity(_0xe163f9,null))[_0x84d3('0x46')](handleError(_0xe163f9,null));};exports[_0x84d3('0x4b')]=function(_0x558d81,_0x14295e){return db[_0x84d3('0x2b')]['describe']()[_0x84d3('0x24')](respondWithResult(_0x14295e,null))[_0x84d3('0x46')](handleError(_0x14295e,null));};exports['getVoiceQueuesReport']=function(_0x5893ca,_0xe471db){var _0x20c1a8={},_0x3e7db3={},_0x39dac1={'count':0x0,'rows':[]};_0x3e7db3[_0x84d3('0x2e')]=_[_0x84d3('0x30')](db[_0x84d3('0x2b')]['rawAttributes']);_0x3e7db3[_0x84d3('0x2f')]=_[_0x84d3('0x30')](_0x5893ca[_0x84d3('0x2f')]);_0x3e7db3[_0x84d3('0x39')]=_[_0x84d3('0x43')](_0x3e7db3[_0x84d3('0x2e')],_0x3e7db3[_0x84d3('0x2f')]);_0x20c1a8[_0x84d3('0x32')]=_['intersection'](_0x3e7db3['model'],qs['fields'](_0x5893ca[_0x84d3('0x2f')][_0x84d3('0x31')]));_0x20c1a8[_0x84d3('0x32')]=_0x20c1a8['attributes'][_0x84d3('0x33')]?_0x20c1a8[_0x84d3('0x32')]:_0x3e7db3[_0x84d3('0x2e')];if(!_0x5893ca[_0x84d3('0x2f')]['hasOwnProperty'](_0x84d3('0x4c'))){_0x20c1a8[_0x84d3('0x1f')]=qs[_0x84d3('0x1f')](_0x5893ca['query'][_0x84d3('0x1f')]);_0x20c1a8['offset']=qs[_0x84d3('0x1d')](_0x5893ca['query'][_0x84d3('0x1d')]);}_0x20c1a8[_0x84d3('0x35')]=qs[_0x84d3('0x36')](_0x5893ca[_0x84d3('0x2f')][_0x84d3('0x36')]);_0x20c1a8[_0x84d3('0x37')]=qs[_0x84d3('0x39')](_[_0x84d3('0x38')](_0x5893ca['query'],_0x3e7db3['filters']));if(_0x5893ca[_0x84d3('0x2f')][_0x84d3('0x3a')]){_0x20c1a8[_0x84d3('0x37')]=_[_0x84d3('0x3b')](_0x20c1a8[_0x84d3('0x37')],{'$or':_[_0x84d3('0x2a')](_0x20c1a8[_0x84d3('0x32')],function(_0x173f3d){var _0x3a5c02={};_0x3a5c02[_0x173f3d]={'$like':'%'+_0x5893ca['query'][_0x84d3('0x3a')]+'%'};return _0x3a5c02;})});}_0x20c1a8=_['merge']({},_0x20c1a8,_0x5893ca['options']);var _0x161f77={'where':_0x20c1a8[_0x84d3('0x37')]};return db[_0x84d3('0x2b')]['count'](_0x161f77)[_0x84d3('0x24')](function(_0x583a85){_0x39dac1[_0x84d3('0x20')]=_0x583a85;if(_0x5893ca[_0x84d3('0x2f')][_0x84d3('0x44')]){_0x20c1a8[_0x84d3('0x4d')]=[{'all':!![]}];}return db[_0x84d3('0x2b')][_0x84d3('0x4e')](_0x20c1a8);})[_0x84d3('0x24')](function(_0x18e27b){_0x39dac1[_0x84d3('0x3f')]=_0x18e27b;return _0x39dac1;})['then'](respondWithFilteredResult(_0xe471db,_0x20c1a8,_0x84d3('0x4f')))['catch'](handleError(_0xe471db,null,_0x84d3('0x4f')));};
\ No newline at end of file
index 04025f3..f6c51af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b54=['hook','events','../../mysqldb','VoiceQueueReport','update','remove','emit','hasOwnProperty'];(function(_0x2043d7,_0x352c51){var _0x855013=function(_0x1789bb){while(--_0x1789bb){_0x2043d7['push'](_0x2043d7['shift']());}};_0x855013(++_0x352c51);}(_0x2b54,0xa9));var _0x42b5=function(_0x493a6b,_0x27e92f){_0x493a6b=_0x493a6b-0x0;var _0x4306e3=_0x2b54[_0x493a6b];return _0x4306e3;};'use strict';var EventEmitter=require(_0x42b5('0x0'));var VoiceQueueReport=require(_0x42b5('0x1'))['db'][_0x42b5('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x42b5('0x3'),'afterDestroy':_0x42b5('0x4')};function emitEvent(_0x1b23ad){return function(_0x42ee09,_0x5d0f33,_0x577c05){VoiceQueueReportEvents[_0x42b5('0x5')](_0x1b23ad+':'+_0x42ee09['id'],_0x42ee09);VoiceQueueReportEvents['emit'](_0x1b23ad,_0x42ee09);_0x577c05(null);};}for(var e in events){if(events[_0x42b5('0x6')](e)){var event=events[e];VoiceQueueReport[_0x42b5('0x7')](e,emitEvent(event));}}module['exports']=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x6171=['hook','exports','events','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x453442,_0x1d4b86){var _0x5eac1e=function(_0x4759d7){while(--_0x4759d7){_0x453442['push'](_0x453442['shift']());}};_0x5eac1e(++_0x1d4b86);}(_0x6171,0x16a));var _0x1617=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0x6171[_0x5f09c5];return _0x426ad9;};'use strict';var EventEmitter=require(_0x1617('0x0'));var VoiceQueueReport=require('../../mysqldb')['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x1617('0x1')](0x0);var events={'afterCreate':_0x1617('0x2'),'afterUpdate':_0x1617('0x3'),'afterDestroy':_0x1617('0x4')};function emitEvent(_0xa27fc6){return function(_0x192163,_0x4a81a,_0x2077a9){VoiceQueueReportEvents[_0x1617('0x5')](_0xa27fc6+':'+_0x192163['id'],_0x192163);VoiceQueueReportEvents['emit'](_0xa27fc6,_0x192163);_0x2077a9(null);};}for(var e in events){if(events[_0x1617('0x6')](e)){var event=events[e];VoiceQueueReport[_0x1617('0x7')](e,emitEvent(event));}}module[_0x1617('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
index abe00bf..334bd64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1c1=['VoiceQueueReport','uniqueid','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./voiceQueueReport.attributes','exports','define'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0xb1c1,0x1af));var _0x1b1c=function(_0x1603aa,_0x309935){_0x1603aa=_0x1603aa-0x0;var _0x20584b=_0xb1c1[_0x1603aa];return _0x20584b;};'use strict';var _=require(_0x1b1c('0x0'));var util=require(_0x1b1c('0x1'));var logger=require(_0x1b1c('0x2'))('api');var moment=require(_0x1b1c('0x3'));var BPromise=require('bluebird');var rp=require(_0x1b1c('0x4'));var fs=require('fs');var path=require(_0x1b1c('0x5'));var rimraf=require(_0x1b1c('0x6'));var config=require(_0x1b1c('0x7'));var attributes=require(_0x1b1c('0x8'));module[_0x1b1c('0x9')]=function(_0xa47ee5,_0x13867a){return _0xa47ee5[_0x1b1c('0xa')](_0x1b1c('0xb'),attributes,{'tableName':'report_queue','paranoid':![],'indexes':[{'fields':[_0x1b1c('0xc')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa455=['../../config/logger','api','moment','bluebird','../../config/environment','./voiceQueueReport.attributes','define','VoiceQueueReport','report_queue','calleridnum','lodash'];(function(_0x408e38,_0x23cda8){var _0x426b0e=function(_0x8f2898){while(--_0x8f2898){_0x408e38['push'](_0x408e38['shift']());}};_0x426b0e(++_0x23cda8);}(_0xa455,0x154));var _0x5a45=function(_0x541169,_0xf57882){_0x541169=_0x541169-0x0;var _0x4e98a8=_0xa455[_0x541169];return _0x4e98a8;};'use strict';var _=require(_0x5a45('0x0'));var util=require('util');var logger=require(_0x5a45('0x1'))(_0x5a45('0x2'));var moment=require(_0x5a45('0x3'));var BPromise=require(_0x5a45('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5a45('0x5'));var attributes=require(_0x5a45('0x6'));module['exports']=function(_0x55d669,_0x13a64b){return _0x55d669[_0x5a45('0x7')](_0x5a45('0x8'),attributes,{'tableName':_0x5a45('0x9'),'paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':[_0x5a45('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index e98111e..f0ce88a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6df8=['attributes','limit','include','map','model','CreateVoiceQueueReport','create','body','raw','info','UpdateVoiceQueueReport','update','where','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','request','then','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceQueueReport','options'];(function(_0x4faa06,_0x2cd369){var _0x5b808a=function(_0x244764){while(--_0x244764){_0x4faa06['push'](_0x4faa06['shift']());}};_0x5b808a(++_0x2cd369);}(_0x6df8,0x15d));var _0x86df=function(_0x6843cf,_0x1e69bd){_0x6843cf=_0x6843cf-0x0;var _0x416fbd=_0x6df8[_0x6843cf];return _0x416fbd;};'use strict';var _=require('lodash');var util=require(_0x86df('0x0'));var moment=require(_0x86df('0x1'));var BPromise=require(_0x86df('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x86df('0x3'));var db=require(_0x86df('0x4'))['db'];var utils=require(_0x86df('0x5'));var logger=require(_0x86df('0x6'))(_0x86df('0x7'));var config=require(_0x86df('0x8'));var jayson=require(_0x86df('0x9'));var client=jayson['client'][_0x86df('0xa')]({'port':0x232a});config[_0x86df('0xb')]=_['defaults'](config[_0x86df('0xb')],{'host':_0x86df('0xc'),'port':0x18eb});var socket=require(_0x86df('0xd'))(new Redis(config[_0x86df('0xb')]));require(_0x86df('0xe'))['register'](socket);function respondWithRpcPromise(_0x468dc0,_0x30a195,_0xe75706){return new BPromise(function(_0x17af3b,_0x423317){return client[_0x86df('0xf')](_0x468dc0,_0xe75706)[_0x86df('0x10')](function(_0x56cc54){logger['info'](_0x86df('0x11'),_0x30a195,_0x86df('0x12'));logger[_0x86df('0x13')](_0x86df('0x14'),_0x30a195,_0x86df('0x12'),JSON[_0x86df('0x15')](_0x56cc54));if(_0x56cc54[_0x86df('0x16')]){if(_0x56cc54[_0x86df('0x16')][_0x86df('0x17')]===0x1f4){logger['error'](_0x86df('0x11'),_0x30a195,_0x56cc54[_0x86df('0x16')]['message']);return _0x423317(_0x56cc54[_0x86df('0x16')]['message']);}logger['error']('VoiceQueueReport,\x20%s,\x20%s',_0x30a195,_0x56cc54['error'][_0x86df('0x18')]);return _0x17af3b(_0x56cc54[_0x86df('0x16')]['message']);}else{logger['info'](_0x86df('0x11'),_0x30a195,_0x86df('0x12'));_0x17af3b(_0x56cc54[_0x86df('0x19')][_0x86df('0x18')]);}})[_0x86df('0x1a')](function(_0x8e5d6a){logger[_0x86df('0x16')]('VoiceQueueReport,\x20%s,\x20%s',_0x30a195,_0x8e5d6a);_0x423317(_0x8e5d6a);});});}exports[_0x86df('0x1b')]=function(_0x376a27){var _0x30a7f1=this;return new Promise(function(_0x5ce0cd,_0x1464ae){return db['VoiceQueueReport']['findAll']({'raw':_0x376a27['options']?_0x376a27[_0x86df('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x376a27[_0x86df('0x1c')]?_0x376a27[_0x86df('0x1c')]['where']||null:null,'attributes':_0x376a27[_0x86df('0x1c')]?_0x376a27[_0x86df('0x1c')][_0x86df('0x1d')]||null:null,'limit':_0x376a27['options']?_0x376a27[_0x86df('0x1c')][_0x86df('0x1e')]||null:null,'include':_0x376a27[_0x86df('0x1c')]?_0x376a27[_0x86df('0x1c')][_0x86df('0x1f')]?_[_0x86df('0x20')](_0x376a27['options'][_0x86df('0x1f')],function(_0x12c2c3){return{'model':db[_0x12c2c3[_0x86df('0x21')]],'as':_0x12c2c3['as'],'attributes':_0x12c2c3[_0x86df('0x1d')],'include':_0x12c2c3[_0x86df('0x1f')]?_['map'](_0x12c2c3[_0x86df('0x1f')],function(_0x20812e){return{'model':db[_0x20812e[_0x86df('0x21')]],'as':_0x20812e['as'],'attributes':_0x20812e[_0x86df('0x1d')],'include':_0x20812e[_0x86df('0x1f')]?_[_0x86df('0x20')](_0x20812e[_0x86df('0x1f')],function(_0x40a934){return{'model':db[_0x40a934[_0x86df('0x21')]],'as':_0x40a934['as'],'attributes':_0x40a934[_0x86df('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x86df('0x10')](function(_0x389296){logger['info'](_0x86df('0x1b'),_0x376a27);logger['debug'](_0x86df('0x1b'),_0x376a27,JSON[_0x86df('0x15')](_0x389296));_0x5ce0cd(_0x389296);})['catch'](function(_0x5ee36b){logger[_0x86df('0x16')](_0x86df('0x1b'),_0x5ee36b[_0x86df('0x18')],_0x376a27);_0x1464ae(_0x30a7f1[_0x86df('0x16')](0x1f4,_0x5ee36b[_0x86df('0x18')]));});});};exports[_0x86df('0x22')]=function(_0x32d0a8){var _0x31050e=this;return new Promise(function(_0x1cafdd,_0x457640){return db['VoiceQueueReport'][_0x86df('0x23')](_0x32d0a8[_0x86df('0x24')],{'raw':_0x32d0a8[_0x86df('0x1c')]?_0x32d0a8[_0x86df('0x1c')][_0x86df('0x25')]===undefined?!![]:![]:!![]})[_0x86df('0x10')](function(_0x34ce97){logger[_0x86df('0x26')](_0x86df('0x22'),_0x32d0a8);logger[_0x86df('0x13')]('CreateVoiceQueueReport',_0x32d0a8,JSON[_0x86df('0x15')](_0x34ce97));_0x1cafdd(_0x34ce97);})['catch'](function(_0xc0ae28){logger[_0x86df('0x16')](_0x86df('0x22'),_0xc0ae28[_0x86df('0x18')],_0x32d0a8);_0x457640(_0x31050e['error'](0x1f4,_0xc0ae28[_0x86df('0x18')]));});});};exports[_0x86df('0x27')]=function(_0x20eed5){var _0x9f0f2f=this;return new Promise(function(_0x29a044,_0x48fa02){return db['VoiceQueueReport'][_0x86df('0x28')](_0x20eed5[_0x86df('0x24')],{'raw':_0x20eed5[_0x86df('0x1c')]?_0x20eed5[_0x86df('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x20eed5[_0x86df('0x1c')]?_0x20eed5['options'][_0x86df('0x29')]||null:null,'attributes':_0x20eed5[_0x86df('0x1c')]?_0x20eed5[_0x86df('0x1c')][_0x86df('0x1d')]||null:null,'limit':_0x20eed5['options']?_0x20eed5[_0x86df('0x1c')][_0x86df('0x1e')]||null:null})[_0x86df('0x10')](function(_0x307a10){logger[_0x86df('0x26')](_0x86df('0x27'),_0x20eed5);logger['debug'](_0x86df('0x27'),_0x20eed5,JSON[_0x86df('0x15')](_0x307a10));_0x29a044(_0x307a10);})[_0x86df('0x1a')](function(_0x41a3c0){logger['error'](_0x86df('0x27'),_0x41a3c0[_0x86df('0x18')],_0x20eed5);_0x48fa02(_0x9f0f2f[_0x86df('0x16')](0x1f4,_0x41a3c0[_0x86df('0x18')]));});});};
\ No newline at end of file
+var _0x5876=['./voiceQueueReport.socket','register','request','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','GetVoiceQueueReport','VoiceQueueReport','findAll','options','where','limit','include','model','map','attributes','catch','CreateVoiceQueueReport','create','body','raw','UpdateVoiceQueueReport','update','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults'];(function(_0x5e3ac2,_0x225614){var _0x29a007=function(_0x14545e){while(--_0x14545e){_0x5e3ac2['push'](_0x5e3ac2['shift']());}};_0x29a007(++_0x225614);}(_0x5876,0x13b));var _0x6587=function(_0x5121f7,_0x189f9c){_0x5121f7=_0x5121f7-0x0;var _0x26fdf8=_0x5876[_0x5121f7];return _0x26fdf8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6587('0x0'));var BPromise=require(_0x6587('0x1'));var rs=require(_0x6587('0x2'));var fs=require('fs');var Redis=require(_0x6587('0x3'));var db=require(_0x6587('0x4'))['db'];var utils=require(_0x6587('0x5'));var logger=require(_0x6587('0x6'))(_0x6587('0x7'));var config=require(_0x6587('0x8'));var jayson=require(_0x6587('0x9'));var client=jayson[_0x6587('0xa')]['http']({'port':0x232a});config[_0x6587('0xb')]=_[_0x6587('0xc')](config[_0x6587('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6587('0xb')]));require(_0x6587('0xd'))[_0x6587('0xe')](socket);function respondWithRpcPromise(_0x127fe0,_0x21404f,_0x4cae20){return new BPromise(function(_0x3e7f67,_0x18359f){return client[_0x6587('0xf')](_0x127fe0,_0x4cae20)[_0x6587('0x10')](function(_0x374c5c){logger[_0x6587('0x11')](_0x6587('0x12'),_0x21404f,_0x6587('0x13'));logger[_0x6587('0x14')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x21404f,_0x6587('0x13'),JSON[_0x6587('0x15')](_0x374c5c));if(_0x374c5c[_0x6587('0x16')]){if(_0x374c5c[_0x6587('0x16')]['code']===0x1f4){logger[_0x6587('0x16')](_0x6587('0x12'),_0x21404f,_0x374c5c[_0x6587('0x16')][_0x6587('0x17')]);return _0x18359f(_0x374c5c[_0x6587('0x16')][_0x6587('0x17')]);}logger['error'](_0x6587('0x12'),_0x21404f,_0x374c5c['error']['message']);return _0x3e7f67(_0x374c5c[_0x6587('0x16')]['message']);}else{logger['info'](_0x6587('0x12'),_0x21404f,_0x6587('0x13'));_0x3e7f67(_0x374c5c['result'][_0x6587('0x17')]);}})['catch'](function(_0xafecde){logger[_0x6587('0x16')]('VoiceQueueReport,\x20%s,\x20%s',_0x21404f,_0xafecde);_0x18359f(_0xafecde);});});}exports[_0x6587('0x18')]=function(_0x522345){var _0x4c2c21=this;return new Promise(function(_0x41f253,_0x54f087){return db[_0x6587('0x19')][_0x6587('0x1a')]({'raw':_0x522345[_0x6587('0x1b')]?_0x522345['options']['raw']===undefined?!![]:![]:!![],'where':_0x522345[_0x6587('0x1b')]?_0x522345[_0x6587('0x1b')][_0x6587('0x1c')]||null:null,'attributes':_0x522345[_0x6587('0x1b')]?_0x522345[_0x6587('0x1b')]['attributes']||null:null,'limit':_0x522345['options']?_0x522345[_0x6587('0x1b')][_0x6587('0x1d')]||null:null,'include':_0x522345[_0x6587('0x1b')]?_0x522345[_0x6587('0x1b')][_0x6587('0x1e')]?_['map'](_0x522345[_0x6587('0x1b')][_0x6587('0x1e')],function(_0x2cefcc){return{'model':db[_0x2cefcc[_0x6587('0x1f')]],'as':_0x2cefcc['as'],'attributes':_0x2cefcc['attributes'],'include':_0x2cefcc[_0x6587('0x1e')]?_[_0x6587('0x20')](_0x2cefcc[_0x6587('0x1e')],function(_0x978d0e){return{'model':db[_0x978d0e[_0x6587('0x1f')]],'as':_0x978d0e['as'],'attributes':_0x978d0e[_0x6587('0x21')],'include':_0x978d0e['include']?_['map'](_0x978d0e[_0x6587('0x1e')],function(_0x41710e){return{'model':db[_0x41710e[_0x6587('0x1f')]],'as':_0x41710e['as'],'attributes':_0x41710e[_0x6587('0x21')]};}):[]};}):[]};}):[]:[]})[_0x6587('0x10')](function(_0x5a8a27){logger[_0x6587('0x11')](_0x6587('0x18'),_0x522345);logger[_0x6587('0x14')](_0x6587('0x18'),_0x522345,JSON[_0x6587('0x15')](_0x5a8a27));_0x41f253(_0x5a8a27);})[_0x6587('0x22')](function(_0x3fff30){logger['error']('GetVoiceQueueReport',_0x3fff30[_0x6587('0x17')],_0x522345);_0x54f087(_0x4c2c21[_0x6587('0x16')](0x1f4,_0x3fff30['message']));});});};exports[_0x6587('0x23')]=function(_0x25eab2){var _0x2e9658=this;return new Promise(function(_0x44d190,_0x3eaf7d){return db[_0x6587('0x19')][_0x6587('0x24')](_0x25eab2[_0x6587('0x25')],{'raw':_0x25eab2[_0x6587('0x1b')]?_0x25eab2['options'][_0x6587('0x26')]===undefined?!![]:![]:!![]})[_0x6587('0x10')](function(_0x2e99f6){logger[_0x6587('0x11')]('CreateVoiceQueueReport',_0x25eab2);logger[_0x6587('0x14')](_0x6587('0x23'),_0x25eab2,JSON[_0x6587('0x15')](_0x2e99f6));_0x44d190(_0x2e99f6);})[_0x6587('0x22')](function(_0x570f30){logger[_0x6587('0x16')](_0x6587('0x23'),_0x570f30[_0x6587('0x17')],_0x25eab2);_0x3eaf7d(_0x2e9658['error'](0x1f4,_0x570f30[_0x6587('0x17')]));});});};exports[_0x6587('0x27')]=function(_0x107762){var _0xa7e45b=this;return new Promise(function(_0x3b694b,_0x42cec1){return db[_0x6587('0x19')][_0x6587('0x28')](_0x107762[_0x6587('0x25')],{'raw':_0x107762[_0x6587('0x1b')]?_0x107762[_0x6587('0x1b')][_0x6587('0x26')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x107762[_0x6587('0x1b')]?_0x107762[_0x6587('0x1b')][_0x6587('0x1c')]||null:null,'attributes':_0x107762[_0x6587('0x1b')]?_0x107762['options']['attributes']||null:null,'limit':_0x107762[_0x6587('0x1b')]?_0x107762[_0x6587('0x1b')][_0x6587('0x1d')]||null:null})[_0x6587('0x10')](function(_0x1f20dc){logger[_0x6587('0x11')](_0x6587('0x27'),_0x107762);logger[_0x6587('0x14')]('UpdateVoiceQueueReport',_0x107762,JSON['stringify'](_0x1f20dc));_0x3b694b(_0x1f20dc);})['catch'](function(_0xe88485){logger['error'](_0x6587('0x27'),_0xe88485['message'],_0x107762);_0x42cec1(_0xa7e45b[_0x6587('0x16')](0x1f4,_0xe88485[_0x6587('0x17')]));});});};
\ No newline at end of file
index 6479872..dd23b3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbca0=['remove','update','emit','removeListener','voiceQueueReport:','./voiceQueueReport.events','save'];(function(_0x54c734,_0xc5cf3a){var _0x6bdb37=function(_0x1cd617){while(--_0x1cd617){_0x54c734['push'](_0x54c734['shift']());}};_0x6bdb37(++_0xc5cf3a);}(_0xbca0,0x17f));var _0x0bca=function(_0x16d773,_0x39069d){_0x16d773=_0x16d773-0x0;var _0x113b85=_0xbca0[_0x16d773];return _0x113b85;};'use strict';var VoiceQueueReportEvents=require(_0x0bca('0x0'));var events=[_0x0bca('0x1'),_0x0bca('0x2'),_0x0bca('0x3')];function createListener(_0x4c242b,_0x4bf9e4){return function(_0x38ea6d){_0x4bf9e4[_0x0bca('0x4')](_0x4c242b,_0x38ea6d);};}function removeListener(_0x5be3b4,_0x4a9f79){return function(){VoiceQueueReportEvents[_0x0bca('0x5')](_0x5be3b4,_0x4a9f79);};}exports['register']=function(_0x18efed){for(var _0x380958=0x0,_0x2feafd=events['length'];_0x380958<_0x2feafd;_0x380958++){var _0x14bb50=events[_0x380958];var _0x45b8d2=createListener(_0x0bca('0x6')+_0x14bb50,_0x18efed);VoiceQueueReportEvents['on'](_0x14bb50,_0x45b8d2);}};
\ No newline at end of file
+var _0xdfea=['save','update','emit','register','length','voiceQueueReport:','./voiceQueueReport.events'];(function(_0x5286f4,_0x2613ff){var _0x35a6c1=function(_0x3de652){while(--_0x3de652){_0x5286f4['push'](_0x5286f4['shift']());}};_0x35a6c1(++_0x2613ff);}(_0xdfea,0x1cd));var _0xadfe=function(_0x924b3e,_0x1c6c65){_0x924b3e=_0x924b3e-0x0;var _0x3f6ba1=_0xdfea[_0x924b3e];return _0x3f6ba1;};'use strict';var VoiceQueueReportEvents=require(_0xadfe('0x0'));var events=[_0xadfe('0x1'),'remove',_0xadfe('0x2')];function createListener(_0x29f0e3,_0x5ca341){return function(_0x41df57){_0x5ca341[_0xadfe('0x3')](_0x29f0e3,_0x41df57);};}function removeListener(_0x16f234,_0x1e918d){return function(){VoiceQueueReportEvents['removeListener'](_0x16f234,_0x1e918d);};}exports[_0xadfe('0x4')]=function(_0x5670a9){for(var _0x8b20ad=0x0,_0x15d3b1=events[_0xadfe('0x5')];_0x8b20ad<_0x15d3b1;_0x8b20ad++){var _0x238db5=events[_0x8b20ad];var _0x4ba44f=createListener(_0xadfe('0x6')+_0x238db5,_0x5670a9);VoiceQueueReportEvents['on'](_0x238db5,_0x4ba44f);}};
\ No newline at end of file
index 317ecdc..13bf125 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x819a=['Router','../../components/auth/service','./voiceQueuesLog.controller','get','index','/:id','isAuthenticated','show','post','create','put','multer','util','path','connect-timeout','express'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x819a,0x16b));var _0xa819=function(_0x452968,_0x31e391){_0x452968=_0x452968-0x0;var _0xb6f9ae=_0x819a[_0x452968];return _0xb6f9ae;};'use strict';var multer=require(_0xa819('0x0'));var util=require(_0xa819('0x1'));var path=require(_0xa819('0x2'));var timeout=require(_0xa819('0x3'));var express=require(_0xa819('0x4'));var router=express[_0xa819('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xa819('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa819('0x7'));router[_0xa819('0x8')]('/',auth['isAuthenticated'](),controller[_0xa819('0x9')]);router[_0xa819('0x8')](_0xa819('0xa'),auth[_0xa819('0xb')](),controller[_0xa819('0xc')]);router[_0xa819('0xd')]('/',auth[_0xa819('0xb')](),controller[_0xa819('0xe')]);router[_0xa819('0xf')](_0xa819('0xa'),auth[_0xa819('0xb')](),controller['update']);router['delete'](_0xa819('0xa'),auth[_0xa819('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xe4b2=['update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','show','post','put','/:id'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0xe4b2,0x81));var _0x2e4b=function(_0x4390ec,_0x2bb21c){_0x4390ec=_0x4390ec-0x0;var _0x1535b9=_0xe4b2[_0x4390ec];return _0x1535b9;};'use strict';var multer=require('multer');var util=require(_0x2e4b('0x0'));var path=require(_0x2e4b('0x1'));var timeout=require(_0x2e4b('0x2'));var express=require(_0x2e4b('0x3'));var router=express[_0x2e4b('0x4')]();var fs_extra=require(_0x2e4b('0x5'));var auth=require(_0x2e4b('0x6'));var interaction=require(_0x2e4b('0x7'));var config=require('../../config/environment');var controller=require('./voiceQueuesLog.controller');router[_0x2e4b('0x8')]('/',auth[_0x2e4b('0x9')](),controller[_0x2e4b('0xa')]);router[_0x2e4b('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x2e4b('0xb')]);router[_0x2e4b('0xc')]('/',auth[_0x2e4b('0x9')](),controller['create']);router[_0x2e4b('0xd')](_0x2e4b('0xe'),auth[_0x2e4b('0x9')](),controller[_0x2e4b('0xf')]);router[_0x2e4b('0x10')](_0x2e4b('0xe'),auth['isAuthenticated'](),controller[_0x2e4b('0x11')]);module['exports']=router;
\ No newline at end of file
index c2f0c7a..3ae5712 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7534=['format','YYYY-MM-DD\x20HH:mm:ss','sequelize','moment','exports','STRING','DATE'];(function(_0x1fcc1e,_0x39efee){var _0x13497a=function(_0x56d1fe){while(--_0x56d1fe){_0x1fcc1e['push'](_0x1fcc1e['shift']());}};_0x13497a(++_0x39efee);}(_0x7534,0x121));var _0x4753=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x7534[_0x432682];return _0x463d05;};'use strict';var Sequelize=require(_0x4753('0x0'));var moment=require(_0x4753('0x1'));module[_0x4753('0x2')]={'time':{'type':Sequelize[_0x4753('0x3')]},'callid':{'type':Sequelize[_0x4753('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x4753('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x4753('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x4753('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x4753('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x4753('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x4753('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x4753('0x4')],'allowNull':![],'defaultValue':moment()[_0x4753('0x5')](_0x4753('0x6'))}};
\ No newline at end of file
+var _0xe384=['sequelize','exports','STRING','DATE'];(function(_0x1b2cd4,_0x220d18){var _0x3e2ff5=function(_0x5ef59c){while(--_0x5ef59c){_0x1b2cd4['push'](_0x1b2cd4['shift']());}};_0x3e2ff5(++_0x220d18);}(_0xe384,0x160));var _0x4e38=function(_0x2399f1,_0x32ade0){_0x2399f1=_0x2399f1-0x0;var _0x52af29=_0xe384[_0x2399f1];return _0x52af29;};'use strict';var Sequelize=require(_0x4e38('0x0'));var moment=require('moment');module[_0x4e38('0x1')]={'time':{'type':Sequelize[_0x4e38('0x2')]},'callid':{'type':Sequelize[_0x4e38('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x4e38('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x4e38('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x4e38('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x4e38('0x3')],'allowNull':![],'defaultValue':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}};
\ No newline at end of file
index 300fe3f..918269a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0f6=['body','eml-format','rimraf','zip-dir','request-promise','moment','util','path','to-csv','ejs','lodash','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','name','send','index','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','where','pick','filter','merge','options','include','findAll','rows','catch','show','params','VoiceQueuesLog','length','find','create'];(function(_0x568882,_0x184404){var _0x25dd59=function(_0x3d0aea){while(--_0x3d0aea){_0x568882['push'](_0x568882['shift']());}};_0x25dd59(++_0x184404);}(_0xb0f6,0xd9));var _0x6b0f=function(_0x2787cd,_0x2b9402){_0x2787cd=_0x2787cd-0x0;var _0x42380a=_0xb0f6[_0x2787cd];return _0x42380a;};'use strict';var emlformat=require(_0x6b0f('0x0'));var rimraf=require(_0x6b0f('0x1'));var zipdir=require(_0x6b0f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6b0f('0x3'));var moment=require(_0x6b0f('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6b0f('0x5'));var path=require(_0x6b0f('0x6'));var sox=require('sox');var csv=require(_0x6b0f('0x7'));var ejs=require(_0x6b0f('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6b0f('0x9'));var squel=require('squel');var crypto=require(_0x6b0f('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x6b0f('0xb'));var toCsv=require(_0x6b0f('0x7'));var querystring=require(_0x6b0f('0xc'));var Papa=require('papaparse');var Redis=require(_0x6b0f('0xd'));var authService=require(_0x6b0f('0xe'));var qs=require(_0x6b0f('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6b0f('0x10'));var logger=require(_0x6b0f('0x11'))(_0x6b0f('0x12'));var utils=require(_0x6b0f('0x13'));var config=require(_0x6b0f('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x6b0f('0x15'))['db'];function respondWithStatusCode(_0x268871,_0x5705ec){_0x5705ec=_0x5705ec||0xcc;return function(_0xb21a1e){if(_0xb21a1e){return _0x268871['sendStatus'](_0x5705ec);}return _0x268871[_0x6b0f('0x16')](_0x5705ec)[_0x6b0f('0x17')]();};}function respondWithResult(_0x422fdb,_0x363f6a){_0x363f6a=_0x363f6a||0xc8;return function(_0x378fcc){if(_0x378fcc){return _0x422fdb['status'](_0x363f6a)[_0x6b0f('0x18')](_0x378fcc);}};}function respondWithFilteredResult(_0x59139e,_0x5f4f94){return function(_0x397296){if(_0x397296){var _0x453fd0=typeof _0x5f4f94[_0x6b0f('0x19')]===_0x6b0f('0x1a')&&typeof _0x5f4f94[_0x6b0f('0x1b')]===_0x6b0f('0x1a');var _0x24a306=_0x397296[_0x6b0f('0x1c')];var _0x51cf8c=_0x453fd0?0x0:_0x5f4f94['offset'];var _0x1a3f90=_0x453fd0?_0x397296['count']:_0x5f4f94[_0x6b0f('0x19')]+_0x5f4f94[_0x6b0f('0x1b')];var _0x1c47c1;if(_0x1a3f90>=_0x24a306){_0x1a3f90=_0x24a306;_0x1c47c1=0xc8;}else{_0x1c47c1=0xce;}_0x59139e[_0x6b0f('0x16')](_0x1c47c1);return _0x59139e[_0x6b0f('0x1d')](_0x6b0f('0x1e'),_0x51cf8c+'-'+_0x1a3f90+'/'+_0x24a306)['json'](_0x397296);}return null;};}function patchUpdates(_0x50726c){return function(_0xbc77ee){try{jsonpatch[_0x6b0f('0x1f')](_0xbc77ee,_0x50726c,!![]);}catch(_0x27aeb8){return BPromise[_0x6b0f('0x20')](_0x27aeb8);}return _0xbc77ee[_0x6b0f('0x21')]();};}function saveUpdates(_0x590fbe,_0x9e78b4){return function(_0xee2899){if(_0xee2899){return _0xee2899[_0x6b0f('0x22')](_0x590fbe)[_0x6b0f('0x23')](function(_0x30d672){return _0x30d672;});}return null;};}function removeEntity(_0x47740c,_0x33f53b){return function(_0x4d04b0){if(_0x4d04b0){return _0x4d04b0[_0x6b0f('0x24')]()[_0x6b0f('0x23')](function(){_0x47740c['status'](0xcc)[_0x6b0f('0x17')]();});}};}function handleEntityNotFound(_0xa91b4f,_0x38a90e){return function(_0x312b37){if(!_0x312b37){_0xa91b4f[_0x6b0f('0x25')](0x194);}return _0x312b37;};}function handleError(_0xe367bc,_0x4048dc){_0x4048dc=_0x4048dc||0x1f4;return function(_0x197e1f){logger[_0x6b0f('0x26')](_0x197e1f['stack']);if(_0x197e1f[_0x6b0f('0x27')]){delete _0x197e1f[_0x6b0f('0x27')];}_0xe367bc[_0x6b0f('0x16')](_0x4048dc)[_0x6b0f('0x28')](_0x197e1f);};}exports[_0x6b0f('0x29')]=function(_0x120e01,_0x4d2367){var _0x173064={},_0x5455b0={},_0x123360={'count':0x0,'rows':[]};var _0x2e815f=_['map'](db['VoiceQueuesLog'][_0x6b0f('0x2a')],function(_0x3bd5a8){return{'name':_0x3bd5a8[_0x6b0f('0x2b')],'type':_0x3bd5a8['type'][_0x6b0f('0x2c')]};});_0x5455b0[_0x6b0f('0x2d')]=_[_0x6b0f('0x2e')](_0x2e815f,_0x6b0f('0x27'));_0x5455b0[_0x6b0f('0x2f')]=_[_0x6b0f('0x30')](_0x120e01['query']);_0x5455b0[_0x6b0f('0x31')]=_[_0x6b0f('0x32')](_0x5455b0['model'],_0x5455b0[_0x6b0f('0x2f')]);_0x173064[_0x6b0f('0x33')]=_[_0x6b0f('0x32')](_0x5455b0[_0x6b0f('0x2d')],qs[_0x6b0f('0x34')](_0x120e01[_0x6b0f('0x2f')]['fields']));_0x173064[_0x6b0f('0x33')]=_0x173064[_0x6b0f('0x33')]['length']?_0x173064[_0x6b0f('0x33')]:_0x5455b0[_0x6b0f('0x2d')];if(!_0x120e01[_0x6b0f('0x2f')][_0x6b0f('0x35')](_0x6b0f('0x36'))){_0x173064['limit']=qs['limit'](_0x120e01[_0x6b0f('0x2f')][_0x6b0f('0x1b')]);_0x173064['offset']=qs[_0x6b0f('0x19')](_0x120e01[_0x6b0f('0x2f')][_0x6b0f('0x19')]);}_0x173064[_0x6b0f('0x37')]=qs['sort'](_0x120e01[_0x6b0f('0x2f')]['sort']);_0x173064[_0x6b0f('0x38')]=qs[_0x6b0f('0x31')](_[_0x6b0f('0x39')](_0x120e01[_0x6b0f('0x2f')],_0x5455b0[_0x6b0f('0x31')]),_0x2e815f);if(_0x120e01[_0x6b0f('0x2f')][_0x6b0f('0x3a')]){_0x173064[_0x6b0f('0x38')]=_[_0x6b0f('0x3b')](_0x173064[_0x6b0f('0x38')],{'$or':_[_0x6b0f('0x2e')](_0x2e815f,function(_0xf8af4a){if(_0xf8af4a['type']!=='VIRTUAL'){var _0x550610={};_0x550610[_0xf8af4a[_0x6b0f('0x27')]]={'$like':'%'+_0x120e01[_0x6b0f('0x2f')][_0x6b0f('0x3a')]+'%'};return _0x550610;}})});}_0x173064=_[_0x6b0f('0x3b')]({},_0x173064,_0x120e01[_0x6b0f('0x3c')]);var _0x58e427={'where':_0x173064[_0x6b0f('0x38')]};return db['VoiceQueuesLog']['count'](_0x58e427)['then'](function(_0x7e01d){_0x123360[_0x6b0f('0x1c')]=_0x7e01d;if(_0x120e01[_0x6b0f('0x2f')]['includeAll']){_0x173064[_0x6b0f('0x3d')]=[{'all':!![]}];}return db['VoiceQueuesLog'][_0x6b0f('0x3e')](_0x173064);})['then'](function(_0x4acd49){_0x123360[_0x6b0f('0x3f')]=_0x4acd49;return _0x123360;})[_0x6b0f('0x23')](respondWithFilteredResult(_0x4d2367,_0x173064))[_0x6b0f('0x40')](handleError(_0x4d2367,null));};exports[_0x6b0f('0x41')]=function(_0x2cba31,_0x57685c){var _0x31cd3f={'raw':!![],'where':{'id':_0x2cba31[_0x6b0f('0x42')]['id']}},_0x35dc6d={};_0x35dc6d[_0x6b0f('0x2d')]=_[_0x6b0f('0x30')](db[_0x6b0f('0x43')][_0x6b0f('0x2a')]);_0x35dc6d[_0x6b0f('0x2f')]=_[_0x6b0f('0x30')](_0x2cba31[_0x6b0f('0x2f')]);_0x35dc6d[_0x6b0f('0x31')]=_[_0x6b0f('0x32')](_0x35dc6d[_0x6b0f('0x2d')],_0x35dc6d[_0x6b0f('0x2f')]);_0x31cd3f['attributes']=_[_0x6b0f('0x32')](_0x35dc6d['model'],qs[_0x6b0f('0x34')](_0x2cba31[_0x6b0f('0x2f')][_0x6b0f('0x34')]));_0x31cd3f[_0x6b0f('0x33')]=_0x31cd3f[_0x6b0f('0x33')][_0x6b0f('0x44')]?_0x31cd3f['attributes']:_0x35dc6d['model'];if(_0x2cba31[_0x6b0f('0x2f')]['includeAll']){_0x31cd3f['include']=[{'all':!![]}];}_0x31cd3f=_[_0x6b0f('0x3b')]({},_0x31cd3f,_0x2cba31['options']);return db[_0x6b0f('0x43')][_0x6b0f('0x45')](_0x31cd3f)[_0x6b0f('0x23')](handleEntityNotFound(_0x57685c,null))[_0x6b0f('0x23')](respondWithResult(_0x57685c,null))['catch'](handleError(_0x57685c,null));};exports[_0x6b0f('0x46')]=function(_0x3e9f5d,_0x6d6aaf){return db['VoiceQueuesLog']['create'](_0x3e9f5d[_0x6b0f('0x47')],{})[_0x6b0f('0x23')](respondWithResult(_0x6d6aaf,0xc9))[_0x6b0f('0x40')](handleError(_0x6d6aaf,null));};exports['update']=function(_0x329768,_0x236bce){if(_0x329768[_0x6b0f('0x47')]['id']){delete _0x329768[_0x6b0f('0x47')]['id'];}return db[_0x6b0f('0x43')][_0x6b0f('0x45')]({'where':{'id':_0x329768[_0x6b0f('0x42')]['id']}})[_0x6b0f('0x23')](handleEntityNotFound(_0x236bce,null))[_0x6b0f('0x23')](saveUpdates(_0x329768[_0x6b0f('0x47')],null))['then'](respondWithResult(_0x236bce,null))['catch'](handleError(_0x236bce,null));};exports[_0x6b0f('0x24')]=function(_0x507263,_0xc1a368){return db[_0x6b0f('0x43')]['find']({'where':{'id':_0x507263[_0x6b0f('0x42')]['id']}})['then'](handleEntityNotFound(_0xc1a368,null))[_0x6b0f('0x23')](removeEntity(_0xc1a368,null))[_0x6b0f('0x40')](handleError(_0xc1a368,null));};
\ No newline at end of file
+var _0xc45a=['rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','findAll','rows','catch','show','params','length','find','create','body','eml-format','rimraf','request-promise','moment','bluebird','path','sox','to-csv','ejs','lodash','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','status','offset','undefined','count','limit','set','Content-Range','json','apply','update','destroy','then','end','sendStatus','error','stack','name','map','VoiceQueuesLog'];(function(_0x38841c,_0x1af0bf){var _0x500610=function(_0x225955){while(--_0x225955){_0x38841c['push'](_0x38841c['shift']());}};_0x500610(++_0x1af0bf);}(_0xc45a,0x137));var _0xac45=function(_0x221901,_0x2366ba){_0x221901=_0x221901-0x0;var _0x5550af=_0xc45a[_0x221901];return _0x5550af;};'use strict';var emlformat=require(_0xac45('0x0'));var rimraf=require(_0xac45('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xac45('0x2'));var moment=require(_0xac45('0x3'));var BPromise=require(_0xac45('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xac45('0x5'));var sox=require(_0xac45('0x6'));var csv=require(_0xac45('0x7'));var ejs=require(_0xac45('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xac45('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xac45('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xac45('0x7'));var querystring=require('querystring');var Papa=require(_0xac45('0xb'));var Redis=require(_0xac45('0xc'));var authService=require(_0xac45('0xd'));var qs=require(_0xac45('0xe'));var as=require(_0xac45('0xf'));var hardwareService=require(_0xac45('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0xac45('0x11'));var config=require(_0xac45('0x12'));var licenseUtil=require(_0xac45('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3a544f,_0xbdcc71){_0xbdcc71=_0xbdcc71||0xcc;return function(_0x2f8fd0){if(_0x2f8fd0){return _0x3a544f['sendStatus'](_0xbdcc71);}return _0x3a544f[_0xac45('0x14')](_0xbdcc71)['end']();};}function respondWithResult(_0x37a8ee,_0x5c736d){_0x5c736d=_0x5c736d||0xc8;return function(_0x8d48f3){if(_0x8d48f3){return _0x37a8ee[_0xac45('0x14')](_0x5c736d)['json'](_0x8d48f3);}};}function respondWithFilteredResult(_0x575fd3,_0x3ae1fd){return function(_0x31eea8){if(_0x31eea8){var _0x2257df=typeof _0x3ae1fd[_0xac45('0x15')]==='undefined'&&typeof _0x3ae1fd['limit']===_0xac45('0x16');var _0x4fa11a=_0x31eea8[_0xac45('0x17')];var _0x65fd1d=_0x2257df?0x0:_0x3ae1fd[_0xac45('0x15')];var _0x5403e2=_0x2257df?_0x31eea8[_0xac45('0x17')]:_0x3ae1fd['offset']+_0x3ae1fd[_0xac45('0x18')];var _0x1f7bc5;if(_0x5403e2>=_0x4fa11a){_0x5403e2=_0x4fa11a;_0x1f7bc5=0xc8;}else{_0x1f7bc5=0xce;}_0x575fd3[_0xac45('0x14')](_0x1f7bc5);return _0x575fd3[_0xac45('0x19')](_0xac45('0x1a'),_0x65fd1d+'-'+_0x5403e2+'/'+_0x4fa11a)[_0xac45('0x1b')](_0x31eea8);}return null;};}function patchUpdates(_0x2947a3){return function(_0x4c78c6){try{jsonpatch[_0xac45('0x1c')](_0x4c78c6,_0x2947a3,!![]);}catch(_0x19800d){return BPromise['reject'](_0x19800d);}return _0x4c78c6['save']();};}function saveUpdates(_0x55853a,_0x1dc00){return function(_0x1e259d){if(_0x1e259d){return _0x1e259d[_0xac45('0x1d')](_0x55853a)['then'](function(_0x3d6524){return _0x3d6524;});}return null;};}function removeEntity(_0x5556bb,_0x20e396){return function(_0x49c004){if(_0x49c004){return _0x49c004[_0xac45('0x1e')]()[_0xac45('0x1f')](function(){_0x5556bb['status'](0xcc)[_0xac45('0x20')]();});}};}function handleEntityNotFound(_0x1ea97c,_0xa78527){return function(_0x2976ba){if(!_0x2976ba){_0x1ea97c[_0xac45('0x21')](0x194);}return _0x2976ba;};}function handleError(_0x3b1e90,_0x2b2468){_0x2b2468=_0x2b2468||0x1f4;return function(_0x2fdcd7){logger[_0xac45('0x22')](_0x2fdcd7[_0xac45('0x23')]);if(_0x2fdcd7['name']){delete _0x2fdcd7[_0xac45('0x24')];}_0x3b1e90['status'](_0x2b2468)['send'](_0x2fdcd7);};}exports['index']=function(_0x31ac99,_0x2c28d2){var _0x4ca101={},_0x2bf988={},_0x25b81b={'count':0x0,'rows':[]};var _0x228388=_[_0xac45('0x25')](db[_0xac45('0x26')][_0xac45('0x27')],function(_0x5c70a0){return{'name':_0x5c70a0[_0xac45('0x28')],'type':_0x5c70a0[_0xac45('0x29')][_0xac45('0x2a')]};});_0x2bf988[_0xac45('0x2b')]=_[_0xac45('0x25')](_0x228388,_0xac45('0x24'));_0x2bf988[_0xac45('0x2c')]=_[_0xac45('0x2d')](_0x31ac99[_0xac45('0x2c')]);_0x2bf988[_0xac45('0x2e')]=_[_0xac45('0x2f')](_0x2bf988['model'],_0x2bf988['query']);_0x4ca101[_0xac45('0x30')]=_[_0xac45('0x2f')](_0x2bf988[_0xac45('0x2b')],qs['fields'](_0x31ac99['query'][_0xac45('0x31')]));_0x4ca101['attributes']=_0x4ca101['attributes']['length']?_0x4ca101['attributes']:_0x2bf988[_0xac45('0x2b')];if(!_0x31ac99[_0xac45('0x2c')][_0xac45('0x32')](_0xac45('0x33'))){_0x4ca101[_0xac45('0x18')]=qs['limit'](_0x31ac99[_0xac45('0x2c')]['limit']);_0x4ca101[_0xac45('0x15')]=qs[_0xac45('0x15')](_0x31ac99[_0xac45('0x2c')][_0xac45('0x15')]);}_0x4ca101[_0xac45('0x34')]=qs[_0xac45('0x35')](_0x31ac99[_0xac45('0x2c')][_0xac45('0x35')]);_0x4ca101[_0xac45('0x36')]=qs[_0xac45('0x2e')](_[_0xac45('0x37')](_0x31ac99[_0xac45('0x2c')],_0x2bf988[_0xac45('0x2e')]),_0x228388);if(_0x31ac99[_0xac45('0x2c')]['filter']){_0x4ca101[_0xac45('0x36')]=_['merge'](_0x4ca101[_0xac45('0x36')],{'$or':_['map'](_0x228388,function(_0x41b363){if(_0x41b363[_0xac45('0x29')]!==_0xac45('0x38')){var _0x4d8ae1={};_0x4d8ae1[_0x41b363[_0xac45('0x24')]]={'$like':'%'+_0x31ac99[_0xac45('0x2c')][_0xac45('0x39')]+'%'};return _0x4d8ae1;}})});}_0x4ca101=_[_0xac45('0x3a')]({},_0x4ca101,_0x31ac99[_0xac45('0x3b')]);var _0x322cd4={'where':_0x4ca101['where']};return db[_0xac45('0x26')]['count'](_0x322cd4)[_0xac45('0x1f')](function(_0x54a895){_0x25b81b[_0xac45('0x17')]=_0x54a895;if(_0x31ac99['query'][_0xac45('0x3c')]){_0x4ca101['include']=[{'all':!![]}];}return db[_0xac45('0x26')][_0xac45('0x3d')](_0x4ca101);})[_0xac45('0x1f')](function(_0x4bed7b){_0x25b81b[_0xac45('0x3e')]=_0x4bed7b;return _0x25b81b;})[_0xac45('0x1f')](respondWithFilteredResult(_0x2c28d2,_0x4ca101))[_0xac45('0x3f')](handleError(_0x2c28d2,null));};exports[_0xac45('0x40')]=function(_0x5a5392,_0x4886d3){var _0xd5f14f={'raw':!![],'where':{'id':_0x5a5392[_0xac45('0x41')]['id']}},_0x4e68aa={};_0x4e68aa[_0xac45('0x2b')]=_[_0xac45('0x2d')](db[_0xac45('0x26')][_0xac45('0x27')]);_0x4e68aa[_0xac45('0x2c')]=_[_0xac45('0x2d')](_0x5a5392['query']);_0x4e68aa[_0xac45('0x2e')]=_[_0xac45('0x2f')](_0x4e68aa[_0xac45('0x2b')],_0x4e68aa[_0xac45('0x2c')]);_0xd5f14f[_0xac45('0x30')]=_['intersection'](_0x4e68aa[_0xac45('0x2b')],qs[_0xac45('0x31')](_0x5a5392[_0xac45('0x2c')][_0xac45('0x31')]));_0xd5f14f['attributes']=_0xd5f14f[_0xac45('0x30')][_0xac45('0x42')]?_0xd5f14f[_0xac45('0x30')]:_0x4e68aa['model'];if(_0x5a5392[_0xac45('0x2c')]['includeAll']){_0xd5f14f['include']=[{'all':!![]}];}_0xd5f14f=_[_0xac45('0x3a')]({},_0xd5f14f,_0x5a5392[_0xac45('0x3b')]);return db[_0xac45('0x26')][_0xac45('0x43')](_0xd5f14f)[_0xac45('0x1f')](handleEntityNotFound(_0x4886d3,null))['then'](respondWithResult(_0x4886d3,null))[_0xac45('0x3f')](handleError(_0x4886d3,null));};exports[_0xac45('0x44')]=function(_0x2ff021,_0x3507a6){return db[_0xac45('0x26')]['create'](_0x2ff021[_0xac45('0x45')],{})[_0xac45('0x1f')](respondWithResult(_0x3507a6,0xc9))[_0xac45('0x3f')](handleError(_0x3507a6,null));};exports['update']=function(_0x16894e,_0x4c60c5){if(_0x16894e[_0xac45('0x45')]['id']){delete _0x16894e[_0xac45('0x45')]['id'];}return db['VoiceQueuesLog'][_0xac45('0x43')]({'where':{'id':_0x16894e[_0xac45('0x41')]['id']}})[_0xac45('0x1f')](handleEntityNotFound(_0x4c60c5,null))[_0xac45('0x1f')](saveUpdates(_0x16894e[_0xac45('0x45')],null))[_0xac45('0x1f')](respondWithResult(_0x4c60c5,null))[_0xac45('0x3f')](handleError(_0x4c60c5,null));};exports[_0xac45('0x1e')]=function(_0x54e74f,_0x27c028){return db['VoiceQueuesLog']['find']({'where':{'id':_0x54e74f[_0xac45('0x41')]['id']}})['then'](handleEntityNotFound(_0x27c028,null))[_0xac45('0x1f')](removeEntity(_0x27c028,null))[_0xac45('0x3f')](handleError(_0x27c028,null));};
\ No newline at end of file
index 96cf5b9..973f44e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38c3=['./voiceQueuesLog.attributes','VoiceQueuesLog','voice_queues_log','event_dtm','dtm','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x3ae34a,_0x5f36d8){var _0x3ba4a4=function(_0x2f754f){while(--_0x2f754f){_0x3ae34a['push'](_0x3ae34a['shift']());}};_0x3ba4a4(++_0x5f36d8);}(_0x38c3,0x13d));var _0x338c=function(_0x2c0931,_0x503573){_0x2c0931=_0x2c0931-0x0;var _0x3d781f=_0x38c3[_0x2c0931];return _0x3d781f;};'use strict';var _=require(_0x338c('0x0'));var util=require(_0x338c('0x1'));var logger=require('../../config/logger')(_0x338c('0x2'));var moment=require(_0x338c('0x3'));var BPromise=require(_0x338c('0x4'));var rp=require(_0x338c('0x5'));var fs=require('fs');var path=require(_0x338c('0x6'));var rimraf=require(_0x338c('0x7'));var config=require('../../config/environment');var attributes=require(_0x338c('0x8'));module['exports']=function(_0x41c16d,_0x28eeb3){return _0x41c16d['define'](_0x338c('0x9'),attributes,{'tableName':_0x338c('0xa'),'paranoid':![],'indexes':[{'name':_0x338c('0xb'),'fields':['event',_0x338c('0xc')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x82ab=['define','voice_queues_log','event_dtm','event','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports'];(function(_0x44b4fe,_0x5e9b20){var _0x4b4603=function(_0x127362){while(--_0x127362){_0x44b4fe['push'](_0x44b4fe['shift']());}};_0x4b4603(++_0x5e9b20);}(_0x82ab,0xad));var _0xb82a=function(_0x2ac42c,_0x400eff){_0x2ac42c=_0x2ac42c-0x0;var _0x29b7f3=_0x82ab[_0x2ac42c];return _0x29b7f3;};'use strict';var _=require('lodash');var util=require(_0xb82a('0x0'));var logger=require('../../config/logger')(_0xb82a('0x1'));var moment=require('moment');var BPromise=require(_0xb82a('0x2'));var rp=require(_0xb82a('0x3'));var fs=require('fs');var path=require(_0xb82a('0x4'));var rimraf=require(_0xb82a('0x5'));var config=require(_0xb82a('0x6'));var attributes=require(_0xb82a('0x7'));module[_0xb82a('0x8')]=function(_0x33def1,_0x2e46ac){return _0x33def1[_0xb82a('0x9')]('VoiceQueuesLog',attributes,{'tableName':_0xb82a('0xa'),'paranoid':![],'indexes':[{'name':_0xb82a('0xb'),'fields':[_0xb82a('0xc'),'dtm']}],'timestamps':![]});};
\ No newline at end of file
index 3f2d6d0..9aa8b51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fc8=['request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceQueuesLog,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','client','request','info'];(function(_0x5a77ef,_0x15d235){var _0x5e0779=function(_0xa4535b){while(--_0xa4535b){_0x5a77ef['push'](_0x5a77ef['shift']());}};_0x5e0779(++_0x15d235);}(_0x2fc8,0x14a));var _0x82fc=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x2fc8[_0x5ddb1c];return _0x354adc;};'use strict';var _=require('lodash');var util=require(_0x82fc('0x0'));var moment=require(_0x82fc('0x1'));var BPromise=require(_0x82fc('0x2'));var rs=require(_0x82fc('0x3'));var fs=require('fs');var Redis=require(_0x82fc('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x82fc('0x5'));var config=require(_0x82fc('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x82fc('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f6590,_0x12540d,_0xd9d510){return new BPromise(function(_0x38c045,_0x47ae39){return client[_0x82fc('0x8')](_0x1f6590,_0xd9d510)['then'](function(_0x50f121){logger[_0x82fc('0x9')]('VoiceQueuesLog,\x20%s,\x20%s',_0x12540d,_0x82fc('0xa'));logger[_0x82fc('0xb')](_0x82fc('0xc'),_0x12540d,_0x82fc('0xa'),JSON[_0x82fc('0xd')](_0x50f121));if(_0x50f121['error']){if(_0x50f121[_0x82fc('0xe')][_0x82fc('0xf')]===0x1f4){logger['error'](_0x82fc('0x10'),_0x12540d,_0x50f121[_0x82fc('0xe')][_0x82fc('0x11')]);return _0x47ae39(_0x50f121[_0x82fc('0xe')]['message']);}logger[_0x82fc('0xe')](_0x82fc('0x10'),_0x12540d,_0x50f121[_0x82fc('0xe')][_0x82fc('0x11')]);return _0x38c045(_0x50f121[_0x82fc('0xe')][_0x82fc('0x11')]);}else{logger[_0x82fc('0x9')]('VoiceQueuesLog,\x20%s,\x20%s',_0x12540d,_0x82fc('0xa'));_0x38c045(_0x50f121[_0x82fc('0x12')][_0x82fc('0x11')]);}})[_0x82fc('0x13')](function(_0x3c3444){logger[_0x82fc('0xe')](_0x82fc('0x10'),_0x12540d,_0x3c3444);_0x47ae39(_0x3c3444);});});}
\ No newline at end of file
+var _0x25e0=['jayson/promise','client','then','info','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','VoiceQueuesLog,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/logger','../../config/environment'];(function(_0xa9f2b5,_0x137dc3){var _0x2dd5f2=function(_0x4edf0a){while(--_0x4edf0a){_0xa9f2b5['push'](_0xa9f2b5['shift']());}};_0x2dd5f2(++_0x137dc3);}(_0x25e0,0x11f));var _0x025e=function(_0x3ce6d2,_0x90364d){_0x3ce6d2=_0x3ce6d2-0x0;var _0x4c1dd4=_0x25e0[_0x3ce6d2];return _0x4c1dd4;};'use strict';var _=require(_0x025e('0x0'));var util=require(_0x025e('0x1'));var moment=require('moment');var BPromise=require(_0x025e('0x2'));var rs=require(_0x025e('0x3'));var fs=require('fs');var Redis=require(_0x025e('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x025e('0x5'))('rpc');var config=require(_0x025e('0x6'));var jayson=require(_0x025e('0x7'));var client=jayson[_0x025e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2252e8,_0x565133,_0x2e0d2f){return new BPromise(function(_0x4107d8,_0x4cb6cf){return client['request'](_0x2252e8,_0x2e0d2f)[_0x025e('0x9')](function(_0x1004a2){logger[_0x025e('0xa')]('VoiceQueuesLog,\x20%s,\x20%s',_0x565133,'request\x20sent');logger[_0x025e('0xb')](_0x025e('0xc'),_0x565133,_0x025e('0xd'),JSON[_0x025e('0xe')](_0x1004a2));if(_0x1004a2['error']){if(_0x1004a2[_0x025e('0xf')][_0x025e('0x10')]===0x1f4){logger[_0x025e('0xf')](_0x025e('0x11'),_0x565133,_0x1004a2[_0x025e('0xf')]['message']);return _0x4cb6cf(_0x1004a2[_0x025e('0xf')][_0x025e('0x12')]);}logger[_0x025e('0xf')]('VoiceQueuesLog,\x20%s,\x20%s',_0x565133,_0x1004a2['error'][_0x025e('0x12')]);return _0x4107d8(_0x1004a2['error'][_0x025e('0x12')]);}else{logger[_0x025e('0xa')]('VoiceQueuesLog,\x20%s,\x20%s',_0x565133,_0x025e('0xd'));_0x4107d8(_0x1004a2[_0x025e('0x13')][_0x025e('0x12')]);}})[_0x025e('0x14')](function(_0x38c989){logger[_0x025e('0xf')](_0x025e('0x11'),_0x565133,_0x38c989);_0x4cb6cf(_0x38c989);});});}
\ No newline at end of file
index 85d8ea5..b8ce13f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7769=['get','isAuthenticated','index','describe','/:id','/:id/download','download','/:id/downloads','downloads','/:id/transcribe','downloadTranscribe','post','create','runTranscribe','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller'];(function(_0x201247,_0x504fb9){var _0x294d02=function(_0x180019){while(--_0x180019){_0x201247['push'](_0x201247['shift']());}};_0x294d02(++_0x504fb9);}(_0x7769,0x92));var _0x9776=function(_0xe1abf6,_0x32879d){_0xe1abf6=_0xe1abf6-0x0;var _0x77f645=_0x7769[_0xe1abf6];return _0x77f645;};'use strict';var multer=require(_0x9776('0x0'));var util=require(_0x9776('0x1'));var path=require(_0x9776('0x2'));var timeout=require(_0x9776('0x3'));var express=require('express');var router=express[_0x9776('0x4')]();var fs_extra=require(_0x9776('0x5'));var auth=require(_0x9776('0x6'));var interaction=require(_0x9776('0x7'));var config=require(_0x9776('0x8'));var controller=require(_0x9776('0x9'));router[_0x9776('0xa')]('/',auth[_0x9776('0xb')](),controller[_0x9776('0xc')]);router['get']('/describe',auth[_0x9776('0xb')](),controller[_0x9776('0xd')]);router['get'](_0x9776('0xe'),auth[_0x9776('0xb')](),controller['show']);router[_0x9776('0xa')](_0x9776('0xf'),auth['isAuthenticated'](),controller[_0x9776('0x10')]);router['get'](_0x9776('0x11'),controller[_0x9776('0x12')]);router[_0x9776('0xa')](_0x9776('0x13'),auth[_0x9776('0xb')](),controller[_0x9776('0x14')]);router[_0x9776('0x15')]('/',auth[_0x9776('0xb')](),controller[_0x9776('0x16')]);router[_0x9776('0x15')](_0x9776('0x13'),auth['isAuthenticated'](),controller[_0x9776('0x17')]);router['put'](_0x9776('0xe'),auth['isAuthenticated'](),controller['update']);router[_0x9776('0x18')](_0x9776('0xe'),auth[_0x9776('0xb')](),controller[_0x9776('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0x02a0=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','isAuthenticated','index','describe','/:id','show','/:id/download','/:id/downloads','downloads','/:id/transcribe','post','runTranscribe','delete','destroy','exports','multer','util','path'];(function(_0x42413a,_0x299646){var _0x1dec15=function(_0x1eaadc){while(--_0x1eaadc){_0x42413a['push'](_0x42413a['shift']());}};_0x1dec15(++_0x299646);}(_0x02a0,0xac));var _0x002a=function(_0x49e9d6,_0x41126f){_0x49e9d6=_0x49e9d6-0x0;var _0x39e300=_0x02a0[_0x49e9d6];return _0x39e300;};'use strict';var multer=require(_0x002a('0x0'));var util=require(_0x002a('0x1'));var path=require(_0x002a('0x2'));var timeout=require(_0x002a('0x3'));var express=require(_0x002a('0x4'));var router=express['Router']();var fs_extra=require(_0x002a('0x5'));var auth=require(_0x002a('0x6'));var interaction=require(_0x002a('0x7'));var config=require(_0x002a('0x8'));var controller=require(_0x002a('0x9'));router[_0x002a('0xa')]('/',auth[_0x002a('0xb')](),controller[_0x002a('0xc')]);router[_0x002a('0xa')]('/describe',auth[_0x002a('0xb')](),controller[_0x002a('0xd')]);router['get'](_0x002a('0xe'),auth[_0x002a('0xb')](),controller[_0x002a('0xf')]);router[_0x002a('0xa')](_0x002a('0x10'),auth[_0x002a('0xb')](),controller['download']);router[_0x002a('0xa')](_0x002a('0x11'),controller[_0x002a('0x12')]);router[_0x002a('0xa')](_0x002a('0x13'),auth['isAuthenticated'](),controller['downloadTranscribe']);router[_0x002a('0x14')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0x002a('0x13'),auth[_0x002a('0xb')](),controller[_0x002a('0x15')]);router['put'](_0x002a('0xe'),auth['isAuthenticated'](),controller['update']);router[_0x002a('0x16')](_0x002a('0xe'),auth[_0x002a('0xb')](),controller[_0x002a('0x17')]);module[_0x002a('0x18')]=router;
\ No newline at end of file
index a4f41da..dadfe04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['DATE','updatedAt','toString','sequelize','moment','path','getDataValue','extname','value','STRING','setDataValue','channel','TEXT','NEW','FLOAT','BOOLEAN','format','MM-DD-YYYY\x20HH:mm'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xa9e0[_0x34bc30];return _0x5706de;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0a9e('0x3')]('value')?path[_0x0a9e('0x4')](this[_0x0a9e('0x3')](_0x0a9e('0x5'))):undefined;}},'uniqueid':{'type':Sequelize[_0x0a9e('0x6')]},'channel':{'type':Sequelize[_0x0a9e('0x6')],'set':function(_0x57b080){if(_0x57b080){this[_0x0a9e('0x7')](_0x0a9e('0x8'),_0x57b080);this[_0x0a9e('0x7')]('membername',_0x57b080['split'](/\/|-/)[0x1]);}}},'membername':{'type':Sequelize[_0x0a9e('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x0a9e('0x6')]},'connectedlinename':{'type':Sequelize[_0x0a9e('0x6')]},'accountcode':{'type':Sequelize[_0x0a9e('0x6')]},'context':{'type':Sequelize[_0x0a9e('0x6')]},'exten':{'type':Sequelize[_0x0a9e('0x6')]},'value':{'type':Sequelize[_0x0a9e('0x6')]},'type':{'type':Sequelize['STRING']},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'queue':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'userThirdDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'location':{'type':Sequelize[_0x0a9e('0x9')]},'transcribeName':{'type':Sequelize[_0x0a9e('0x6')]},'transcribeStatus':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':_0x0a9e('0xa')},'fileUri':{'type':Sequelize['TEXT']},'fileText':{'type':Sequelize[_0x0a9e('0x9')]},'failureReason':{'type':Sequelize[_0x0a9e('0x9')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')]},'sPositive':{'type':Sequelize[_0x0a9e('0xb')]},'sNegative':{'type':Sequelize[_0x0a9e('0xb')]},'sNeutral':{'type':Sequelize[_0x0a9e('0xb')]},'sMixed':{'type':Sequelize['FLOAT']},'tempSentiment':{'type':Sequelize[_0x0a9e('0xc')],'defaultValue':![]},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x0a9e('0x3')]('createdAt'))[_0x0a9e('0xd')](_0x0a9e('0xe'))['toString']();}},'updatedAt':{'type':Sequelize[_0x0a9e('0xf')],'get':function(){return moment(this['getDataValue'](_0x0a9e('0x10')))[_0x0a9e('0xd')](_0x0a9e('0xe'))[_0x0a9e('0x11')]();}}};
\ No newline at end of file
+var _0xa9e0=['DATE','updatedAt','toString','sequelize','moment','path','getDataValue','extname','value','STRING','setDataValue','channel','TEXT','NEW','FLOAT','BOOLEAN','format','MM-DD-YYYY\x20HH:mm'];(function(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0xa9e0,0x123));var _0x0a9e=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa9e0[_0x311c35];return _0x5cc50c;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0a9e('0x3')]('value')?path[_0x0a9e('0x4')](this[_0x0a9e('0x3')](_0x0a9e('0x5'))):undefined;}},'uniqueid':{'type':Sequelize[_0x0a9e('0x6')]},'channel':{'type':Sequelize[_0x0a9e('0x6')],'set':function(_0x57b080){if(_0x57b080){this[_0x0a9e('0x7')](_0x0a9e('0x8'),_0x57b080);this[_0x0a9e('0x7')]('membername',_0x57b080['split'](/\/|-/)[0x1]);}}},'membername':{'type':Sequelize[_0x0a9e('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x0a9e('0x6')]},'connectedlinename':{'type':Sequelize[_0x0a9e('0x6')]},'accountcode':{'type':Sequelize[_0x0a9e('0x6')]},'context':{'type':Sequelize[_0x0a9e('0x6')]},'exten':{'type':Sequelize[_0x0a9e('0x6')]},'value':{'type':Sequelize[_0x0a9e('0x6')]},'type':{'type':Sequelize['STRING']},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'queue':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'userThirdDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'location':{'type':Sequelize[_0x0a9e('0x9')]},'transcribeName':{'type':Sequelize[_0x0a9e('0x6')]},'transcribeStatus':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':_0x0a9e('0xa')},'fileUri':{'type':Sequelize['TEXT']},'fileText':{'type':Sequelize[_0x0a9e('0x9')]},'failureReason':{'type':Sequelize[_0x0a9e('0x9')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')]},'sPositive':{'type':Sequelize[_0x0a9e('0xb')]},'sNegative':{'type':Sequelize[_0x0a9e('0xb')]},'sNeutral':{'type':Sequelize[_0x0a9e('0xb')]},'sMixed':{'type':Sequelize['FLOAT']},'tempSentiment':{'type':Sequelize[_0x0a9e('0xc')],'defaultValue':![]},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x0a9e('0x3')]('createdAt'))[_0x0a9e('0xd')](_0x0a9e('0xe'))['toString']();}},'updatedAt':{'type':Sequelize[_0x0a9e('0xf')],'get':function(){return moment(this['getDataValue'](_0x0a9e('0x10')))[_0x0a9e('0xd')](_0x0a9e('0xe'))[_0x0a9e('0x11')]();}}};
\ No newline at end of file
index 1508468..1d3a28b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f3b=['TranscriptionJobStatus','runTranscribe','Voice\x20Recording\x20not\x20found','findOne','transcribe','language','runSentiment','sentimentAccountId','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','transcribeAccountId','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','transcribeRegion','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','data2','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','/server/files/transcribes/transcribe_','.txt','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','map','VoiceRecording','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','find','create','body','uniqueid','format','%s.cypher','existsSync','decryptFile','secrets','recording','value','ValidationError','VoiceRecording\x20not\x20found','filename','download','extname','unlink','message','../../components/encryptor','MD5','$and','push','Sequelize','destroy','isNil','Entity\x20not\x20found','unlinkSync','.cypher','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','listBuckets','createBucket','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','info','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','TranscriptionJob','TranscriptionJobName','transcribeStatus'];(function(_0x290d95,_0x2c7887){var _0x2e2be3=function(_0x38c5b8){while(--_0x38c5b8){_0x290d95['push'](_0x290d95['shift']());}};_0x2e2be3(++_0x2c7887);}(_0x9f3b,0x1d6));var _0xb9f3=function(_0x3653c7,_0xadb356){_0x3653c7=_0x3653c7-0x0;var _0x58a021=_0x9f3b[_0x3653c7];return _0x58a021;};'use strict';var emlformat=require(_0xb9f3('0x0'));var rimraf=require(_0xb9f3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb9f3('0x2'));var moment=require(_0xb9f3('0x3'));var BPromise=require(_0xb9f3('0x4'));var Mustache=require(_0xb9f3('0x5'));var util=require(_0xb9f3('0x6'));var path=require(_0xb9f3('0x7'));var sox=require(_0xb9f3('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb9f3('0x9'));var _=require(_0xb9f3('0xa'));var squel=require('squel');var crypto=require(_0xb9f3('0xb'));var jsforce=require(_0xb9f3('0xc'));var deskjs=require(_0xb9f3('0xd'));var toCsv=require(_0xb9f3('0xe'));var querystring=require(_0xb9f3('0xf'));var Papa=require(_0xb9f3('0x10'));var AWS=require('aws-sdk');var uuidv4=require(_0xb9f3('0x11'));var Redis=require(_0xb9f3('0x12'));var authService=require(_0xb9f3('0x13'));var qs=require(_0xb9f3('0x14'));var as=require(_0xb9f3('0x15'));var hardwareService=require(_0xb9f3('0x16'));var logger=require(_0xb9f3('0x17'))(_0xb9f3('0x18'));var utils=require(_0xb9f3('0x19'));var config=require(_0xb9f3('0x1a'));var licenseUtil=require(_0xb9f3('0x1b'));var db=require(_0xb9f3('0x1c'))['db'];function respondWithStatusCode(_0x1c5080,_0xf3fc1d){_0xf3fc1d=_0xf3fc1d||0xcc;return function(_0x1cf9ea){if(_0x1cf9ea){return _0x1c5080['sendStatus'](_0xf3fc1d);}return _0x1c5080[_0xb9f3('0x1d')](_0xf3fc1d)[_0xb9f3('0x1e')]();};}function respondWithResult(_0x4444e6,_0x57a3fe){_0x57a3fe=_0x57a3fe||0xc8;return function(_0x2ed5da){if(_0x2ed5da){return _0x4444e6[_0xb9f3('0x1d')](_0x57a3fe)[_0xb9f3('0x1f')](_0x2ed5da);}};}function respondWithFilteredResult(_0x46db68,_0x1a72bc){return function(_0x5511c4){if(_0x5511c4){var _0x8197bb=typeof _0x1a72bc[_0xb9f3('0x20')]==='undefined'&&typeof _0x1a72bc[_0xb9f3('0x21')]===_0xb9f3('0x22');var _0x37ba52=_0x5511c4[_0xb9f3('0x23')];var _0x1649bc=_0x8197bb?0x0:_0x1a72bc[_0xb9f3('0x20')];var _0x30d6b3=_0x8197bb?_0x5511c4[_0xb9f3('0x23')]:_0x1a72bc[_0xb9f3('0x20')]+_0x1a72bc['limit'];var _0xe2b62f;if(_0x30d6b3>=_0x37ba52){_0x30d6b3=_0x37ba52;_0xe2b62f=0xc8;}else{_0xe2b62f=0xce;}_0x46db68[_0xb9f3('0x1d')](_0xe2b62f);return _0x46db68[_0xb9f3('0x24')]('Content-Range',_0x1649bc+'-'+_0x30d6b3+'/'+_0x37ba52)[_0xb9f3('0x1f')](_0x5511c4);}return null;};}function patchUpdates(_0x448fbb){return function(_0x4a762c){try{jsonpatch[_0xb9f3('0x25')](_0x4a762c,_0x448fbb,!![]);}catch(_0xabcbd1){return BPromise[_0xb9f3('0x26')](_0xabcbd1);}return _0x4a762c[_0xb9f3('0x27')]();};}function saveUpdates(_0x1448a1,_0x2f7cbb){return function(_0x13ebf6){if(_0x13ebf6){return _0x13ebf6[_0xb9f3('0x28')](_0x1448a1)[_0xb9f3('0x29')](function(_0x6954d0){return _0x6954d0;});}return null;};}function removeEntity(_0x46e009,_0x37e6e0){return function(_0x89f649){if(_0x89f649){return _0x89f649['destroy']()['then'](function(){_0x46e009[_0xb9f3('0x1d')](0xcc)[_0xb9f3('0x1e')]();});}};}function handleEntityNotFound(_0x28882a,_0x146f06){return function(_0x3fe2ed){if(!_0x3fe2ed){_0x28882a[_0xb9f3('0x2a')](0x194);}return _0x3fe2ed;};}function handleError(_0x54a694,_0x5d53e7){_0x5d53e7=_0x5d53e7||0x1f4;return function(_0x539686){logger[_0xb9f3('0x2b')](_0x539686[_0xb9f3('0x2c')]);if(_0x539686[_0xb9f3('0x2d')]){delete _0x539686['name'];}_0x54a694[_0xb9f3('0x1d')](_0x5d53e7)[_0xb9f3('0x2e')](_0x539686);};}exports[_0xb9f3('0x2f')]=function(_0x5cb691,_0x592379){var _0x497e7d={},_0x20671a={},_0x4fbab7={'count':0x0,'rows':[]};var _0xc7fe3a=_[_0xb9f3('0x30')](db[_0xb9f3('0x31')][_0xb9f3('0x32')],function(_0x3268a9){return{'name':_0x3268a9[_0xb9f3('0x33')],'type':_0x3268a9[_0xb9f3('0x34')][_0xb9f3('0x35')]};});_0x20671a[_0xb9f3('0x36')]=_['differenceBy'](_[_0xb9f3('0x30')](_0xc7fe3a,_0xb9f3('0x2d')),['format']);_0x20671a['query']=_[_0xb9f3('0x37')](_0x5cb691[_0xb9f3('0x38')]);_0x20671a[_0xb9f3('0x39')]=_[_0xb9f3('0x3a')](_0x20671a[_0xb9f3('0x36')],_0x20671a[_0xb9f3('0x38')]);_0x497e7d[_0xb9f3('0x3b')]=_[_0xb9f3('0x3a')](_0x20671a[_0xb9f3('0x36')],qs[_0xb9f3('0x3c')](_0x5cb691['query']['fields']));_0x497e7d['attributes']=_0x497e7d[_0xb9f3('0x3b')][_0xb9f3('0x3d')]?_0x497e7d[_0xb9f3('0x3b')]:_0x20671a[_0xb9f3('0x36')];if(!_0x5cb691[_0xb9f3('0x38')][_0xb9f3('0x3e')](_0xb9f3('0x3f'))){_0x497e7d['limit']=qs[_0xb9f3('0x21')](_0x5cb691[_0xb9f3('0x38')]['limit']);_0x497e7d['offset']=qs[_0xb9f3('0x20')](_0x5cb691['query'][_0xb9f3('0x20')]);}_0x497e7d['order']=qs[_0xb9f3('0x40')](_0x5cb691[_0xb9f3('0x38')]['sort']);_0x497e7d[_0xb9f3('0x41')]=qs[_0xb9f3('0x39')](_[_0xb9f3('0x42')](_0x5cb691[_0xb9f3('0x38')],_0x20671a[_0xb9f3('0x39')]),_0xc7fe3a);if(_0x5cb691[_0xb9f3('0x38')]['filter']){_0x497e7d[_0xb9f3('0x41')]=_[_0xb9f3('0x43')](_0x497e7d[_0xb9f3('0x41')],{'$or':_[_0xb9f3('0x30')](_0xc7fe3a,function(_0x3c8b2d){if(_0x3c8b2d[_0xb9f3('0x34')]!==_0xb9f3('0x44')){var _0x9f78c7={};_0x9f78c7[_0x3c8b2d[_0xb9f3('0x2d')]]={'$like':'%'+_0x5cb691[_0xb9f3('0x38')]['filter']+'%'};return _0x9f78c7;}})});}_0x497e7d=_[_0xb9f3('0x43')]({},_0x497e7d,_0x5cb691[_0xb9f3('0x45')]);var _0x10b784={'where':_0x497e7d[_0xb9f3('0x41')]};return db[_0xb9f3('0x31')][_0xb9f3('0x23')](_0x10b784)[_0xb9f3('0x29')](function(_0x39b9d9){_0x4fbab7[_0xb9f3('0x23')]=_0x39b9d9;if(_0x5cb691['query'][_0xb9f3('0x46')]){_0x497e7d[_0xb9f3('0x47')]=[{'all':!![]}];}return db[_0xb9f3('0x31')][_0xb9f3('0x48')](_0x497e7d);})[_0xb9f3('0x29')](function(_0x4933b9){_0x4fbab7['rows']=_0x4933b9;return _0x4fbab7;})['then'](respondWithFilteredResult(_0x592379,_0x497e7d))[_0xb9f3('0x49')](handleError(_0x592379,null));};exports['show']=function(_0x52527c,_0x5a0c38){var _0x343c60={'raw':![],'where':{'id':_0x52527c[_0xb9f3('0x4a')]['id']}},_0xb046f2={};_0xb046f2[_0xb9f3('0x36')]=_[_0xb9f3('0x37')](db['VoiceRecording'][_0xb9f3('0x32')]);_0xb046f2[_0xb9f3('0x38')]=_[_0xb9f3('0x37')](_0x52527c[_0xb9f3('0x38')]);_0xb046f2[_0xb9f3('0x39')]=_[_0xb9f3('0x3a')](_0xb046f2[_0xb9f3('0x36')],_0xb046f2[_0xb9f3('0x38')]);_0x343c60[_0xb9f3('0x3b')]=_['intersection'](_0xb046f2['model'],qs['fields'](_0x52527c[_0xb9f3('0x38')][_0xb9f3('0x3c')]));_0x343c60['attributes']=_0x343c60[_0xb9f3('0x3b')][_0xb9f3('0x3d')]?_0x343c60[_0xb9f3('0x3b')]:_0xb046f2[_0xb9f3('0x36')];if(_0x52527c[_0xb9f3('0x38')][_0xb9f3('0x46')]){_0x343c60['include']=[{'all':!![]}];}_0x343c60=_[_0xb9f3('0x43')]({},_0x343c60,_0x52527c[_0xb9f3('0x45')]);return db['VoiceRecording'][_0xb9f3('0x4b')](_0x343c60)[_0xb9f3('0x29')](handleEntityNotFound(_0x5a0c38,null))[_0xb9f3('0x29')](respondWithResult(_0x5a0c38,null))[_0xb9f3('0x49')](handleError(_0x5a0c38,null));};exports[_0xb9f3('0x4c')]=function(_0x3f87fe,_0x436f47){return db['VoiceRecording'][_0xb9f3('0x4c')](_0x3f87fe[_0xb9f3('0x4d')],{})[_0xb9f3('0x29')](respondWithResult(_0x436f47,0xc9))[_0xb9f3('0x49')](handleError(_0x436f47,null));};exports[_0xb9f3('0x28')]=function(_0x3947b4,_0x2b520c){if(_0x3947b4[_0xb9f3('0x4d')]['id']){delete _0x3947b4[_0xb9f3('0x4d')]['id'];}return db[_0xb9f3('0x31')][_0xb9f3('0x4b')]({'where':{'id':_0x3947b4[_0xb9f3('0x4a')]['id']}})[_0xb9f3('0x29')](handleEntityNotFound(_0x2b520c,null))[_0xb9f3('0x29')](saveUpdates(_0x3947b4['body'],null))[_0xb9f3('0x29')](respondWithResult(_0x2b520c,null))['catch'](handleError(_0x2b520c,null));};exports['describe']=function(_0x3b446c,_0x5289ad){return db[_0xb9f3('0x31')]['describe']()[_0xb9f3('0x29')](respondWithResult(_0x5289ad,null))[_0xb9f3('0x49')](handleError(_0x5289ad,null));};exports['download']=function(_0xa75edd,_0x1bb215,_0x4196d8){var _0x14e4b7=require('../../components/encryptor');var _0x5de32a=![];var _0x5c4b0d={};if(_0xa75edd[_0xb9f3('0x38')][_0xb9f3('0x34')]&&_0xa75edd['query'][_0xb9f3('0x34')]===_0xb9f3('0x4e')){_0x5c4b0d[_0xb9f3('0x4e')]=_0xa75edd[_0xb9f3('0x4a')]['id'];}else{_0x5c4b0d['id']=_0xa75edd[_0xb9f3('0x4a')]['id'];}return db['VoiceRecording'][_0xb9f3('0x4b')]({'where':_0x5c4b0d,'attributes':['id','value'],'raw':!![]})[_0xb9f3('0x29')](handleEntityNotFound(_0x1bb215,null))[_0xb9f3('0x29')](function(_0x384896){if(_0x384896){var _0x3640a3=_0x384896['value'];var _0x102c9c=util[_0xb9f3('0x4f')](_0xb9f3('0x50'),_0x3640a3);if(fs[_0xb9f3('0x51')](_0x102c9c)){_0x5de32a=!![];return _0x14e4b7[_0xb9f3('0x52')](_0x102c9c,_0x3640a3,config[_0xb9f3('0x53')][_0xb9f3('0x54')])[_0xb9f3('0x29')](function(){return _0x384896;});}return _0x384896;}})[_0xb9f3('0x29')](function(_0x5ba607){if(_0x5ba607){var _0x2efb1e=_0x5ba607[_0xb9f3('0x55')];if(!fs[_0xb9f3('0x51')](_0x2efb1e)){throw new db['Sequelize'][(_0xb9f3('0x56'))](_0xb9f3('0x57'));}if(_0x5ba607[_0xb9f3('0x58')]){return _0x1bb215[_0xb9f3('0x59')](_0x2efb1e,_0x5ba607[_0xb9f3('0x58')]+path[_0xb9f3('0x5a')](_0x2efb1e),function(){if(_0x5de32a){fs[_0xb9f3('0x5b')](_0x2efb1e);}});}else{return _0x1bb215['download'](_0x2efb1e,function(_0x2bd22e){if(_0x5de32a){fs[_0xb9f3('0x5b')](_0x2efb1e);}});}}})['catch'](function(_0x3e04e9){if(_0x3e04e9[_0xb9f3('0x5c')]===_0xb9f3('0x57')){_0x1bb215[_0xb9f3('0x1d')](0x194)['send']('Not\x20found');}else{return handleError(_0x1bb215,null);}});};exports['downloads']=function(_0x42c54d,_0x26bbe9,_0x4e46a2){var _0x5037ea=require(_0xb9f3('0x5d'));var _0x2c189c=![];var _0x2c7b85={'$and':[db['sequelize'][_0xb9f3('0x41')](db['sequelize']['fn'](_0xb9f3('0x5e'),db['sequelize']['col'](_0xb9f3('0x4e'))),_0x42c54d[_0xb9f3('0x38')]['token'])]};if(_0x42c54d[_0xb9f3('0x38')][_0xb9f3('0x34')]&&_0x42c54d['query'][_0xb9f3('0x34')]===_0xb9f3('0x4e')){_0x2c7b85[_0xb9f3('0x5f')]['push']({'uniqueid':_0x42c54d[_0xb9f3('0x4a')]['id']});}else{_0x2c7b85[_0xb9f3('0x5f')][_0xb9f3('0x60')]({'id':_0x42c54d[_0xb9f3('0x4a')]['id']});}return db[_0xb9f3('0x31')][_0xb9f3('0x4b')]({'where':_0x2c7b85,'attributes':['id',_0xb9f3('0x55')],'raw':!![]})[_0xb9f3('0x29')](handleEntityNotFound(_0x26bbe9,null))[_0xb9f3('0x29')](function(_0x3dbe3c){if(_0x3dbe3c){var _0x4b4373=util[_0xb9f3('0x4f')](_0xb9f3('0x50'),_0x3dbe3c[_0xb9f3('0x55')]);if(fs[_0xb9f3('0x51')](_0x4b4373)){_0x2c189c=!![];return _0x5037ea[_0xb9f3('0x52')](_0x4b4373,_0x3dbe3c['value'],config[_0xb9f3('0x53')]['recording'])[_0xb9f3('0x29')](function(){return _0x3dbe3c;});}return _0x3dbe3c;}})[_0xb9f3('0x29')](function(_0x17c663){if(_0x17c663){if(!fs[_0xb9f3('0x51')](_0x17c663[_0xb9f3('0x55')])){throw new db[(_0xb9f3('0x61'))][(_0xb9f3('0x56'))]('VoiceRecording\x20not\x20found');}if(_0x17c663['filename']){return _0x26bbe9[_0xb9f3('0x59')](_0x17c663['value'],_0x17c663[_0xb9f3('0x58')]+path[_0xb9f3('0x5a')](_0x17c663[_0xb9f3('0x55')]),function(){if(_0x2c189c){fs[_0xb9f3('0x5b')](_0x17c663[_0xb9f3('0x55')]);}});}else{return _0x26bbe9[_0xb9f3('0x59')](_0x17c663[_0xb9f3('0x55')],function(_0x1f0e64){if(_0x2c189c){fs[_0xb9f3('0x5b')](_0x17c663[_0xb9f3('0x55')]);}});}}})[_0xb9f3('0x49')](handleError(_0x26bbe9,null));};exports[_0xb9f3('0x62')]=function(_0x598216,_0x77d363){return db['VoiceRecording'][_0xb9f3('0x4b')]({'where':{'id':_0x598216[_0xb9f3('0x4a')]['id']}})[_0xb9f3('0x29')](function(_0x153aa0){if(_[_0xb9f3('0x63')](_0x153aa0)){throw new ReferenceError(_0xb9f3('0x64'));}return _0x153aa0;})[_0xb9f3('0x29')](function(_0x30c818){var _0x3e0e6a=_0x30c818[_0xb9f3('0x55')];logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x3e0e6a);if(!_['isNil'](_0x30c818[_0xb9f3('0x55')])&&fs['existsSync'](_0x3e0e6a)){logger['info']('File:\x20\x22'+_0x3e0e6a+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xb9f3('0x65')](_0x3e0e6a);}_0x3e0e6a=_0x3e0e6a+_0xb9f3('0x66');if(!_['isNil'](_0x30c818[_0xb9f3('0x55')])&&fs[_0xb9f3('0x51')](_0x3e0e6a)){logger['info'](_0xb9f3('0x67')+_0x3e0e6a+_0xb9f3('0x68'));fs['unlinkSync'](_0x3e0e6a);}return _0x30c818;})[_0xb9f3('0x29')](function(_0x41bcde){if(!_0x41bcde)throw new InternalError();return _0x41bcde[_0xb9f3('0x62')]();})[_0xb9f3('0x29')](function(){_0x77d363['status'](0xcc)[_0xb9f3('0x1e')]();})[_0xb9f3('0x49')](handleError(_0x77d363,null));};function getBucketslist(_0xaad595,_0x503127,_0x5e2947){return new Promise(function(_0x478cf1,_0x24d262){var _0x5b21cb=new AWS['S3']({'accessKeyId':_0x503127,'secretAccessKey':_0xaad595,'region':_0x5e2947});_0x5b21cb[_0xb9f3('0x69')]({},function(_0xf50772,_0x54ad93){if(_0xf50772){return _0x24d262(_0xf50772);}else{return _0x478cf1(_0x54ad93);}});});}function createBucket(_0x5cf136,_0x325727,_0x3870b4,_0x4152af){return new Promise(function(_0x52de12,_0x2219ec){var _0x5b915d=new AWS['S3']({'accessKeyId':_0x325727,'secretAccessKey':_0x5cf136,'region':_0x3870b4});_0x5b915d[_0xb9f3('0x6a')]({'Bucket':_0x4152af},function(_0x382690,_0x58e080){if(_0x382690){return _0x2219ec(_0x382690);}else{return _0x52de12(_0x58e080);}});});}function uploadFile(_0x708abe,_0x3c0347,_0x4b7331,_0x589e1e,_0x213851,_0x877b17){return new Promise(function(_0x46d660,_0x1c0a64){var _0xf1b6c9=new AWS['S3']({'accessKeyId':_0x3c0347,'secretAccessKey':_0x708abe,'region':_0x4b7331});_0xf1b6c9[_0xb9f3('0x6b')]({'Bucket':_0x589e1e,'Key':_0x213851,'Body':_0x877b17},function(_0x564f89,_0x4a5a2d){if(_0x564f89){return _0x1c0a64(_0x564f89);}else{return _0x46d660(_0x4a5a2d);}});});}function startTranscribe(_0x23c677,_0x217533,_0x5e3a90,_0x348a91,_0x141d0e,_0xd04c94){return new Promise(function(_0x3c63a8,_0x2363e5){var _0x30705f=new AWS[(_0xb9f3('0x6c'))]({'accessKeyId':_0x217533,'secretAccessKey':_0x23c677,'region':_0x5e3a90});_0x30705f[_0xb9f3('0x6d')]({'TranscriptionJobName':_0x348a91,'LanguageCode':_0x141d0e,'Media':{'MediaFileUri':_0xd04c94}},function(_0x2215c0,_0x4d36a9){if(_0x2215c0){return _0x2363e5(_0x2215c0);}else{return _0x3c63a8(_0x4d36a9);}});});}function transcribe(_0x40a725,_0x288752,_0x10b23b,_0x598de0,_0x4284bd,_0xbb0263,_0x3edfe4){return new Promise(function(_0x3ba82f,_0xda47c7){var _0x4840bb={};logger['info'](util['format'](_0xb9f3('0x6e'),_0x40a725,_0x4284bd));return uploadFile(_0x288752,_0x10b23b,_0x598de0,_0x4284bd,path[_0xb9f3('0x6f')](_0xbb0263),fs[_0xb9f3('0x70')](_0xbb0263))['then'](function(_0x47eec9){logger[_0xb9f3('0x71')](util[_0xb9f3('0x4f')](_0xb9f3('0x72'),_0x40a725,_0x4284bd,_0x47eec9[_0xb9f3('0x73')]));_0x4840bb[_0xb9f3('0x74')]=_0x47eec9['Bucket'];_0x4840bb[_0xb9f3('0x75')]=_0x47eec9['Location'];logger[_0xb9f3('0x71')](util['format'](_0xb9f3('0x76'),_0x40a725));return startTranscribe(_0x288752,_0x10b23b,_0x598de0,uuidv4(),_0x3edfe4,_0x47eec9[_0xb9f3('0x73')]);})[_0xb9f3('0x29')](function(_0x59892e){logger[_0xb9f3('0x71')](util[_0xb9f3('0x4f')]('[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created',_0x40a725,_0x59892e[_0xb9f3('0x77')]['TranscriptionJobName']));_0x4840bb['transcribeName']=_0x59892e[_0xb9f3('0x77')][_0xb9f3('0x78')];_0x4840bb[_0xb9f3('0x79')]=_0x59892e[_0xb9f3('0x77')][_0xb9f3('0x7a')];return _0x3ba82f(_0x4840bb);})[_0xb9f3('0x49')](function(_0x3cc600){return _0xda47c7(_0x3cc600);});});}exports[_0xb9f3('0x7b')]=function(_0x5b9b4b,_0x314b4e,_0x246370){var _0x184767;var _0x12e9d4;var _0x234a5d;var _0x26ced8=require(_0xb9f3('0x5d'));return db[_0xb9f3('0x31')]['findOne']({'where':{'id':_0x5b9b4b[_0xb9f3('0x4a')]['id']}})[_0xb9f3('0x29')](function(_0x2e643f){if(_0x2e643f){var _0x1d623d=util['format'](_0xb9f3('0x50'),_0x2e643f[_0xb9f3('0x55')]);if(fs[_0xb9f3('0x51')](_0x1d623d)){cypher=!![];return _0x26ced8['decryptFile'](_0x1d623d,_0x2e643f[_0xb9f3('0x55')],config[_0xb9f3('0x53')][_0xb9f3('0x54')])[_0xb9f3('0x29')](function(){return _0x2e643f;});}return _0x2e643f;}})[_0xb9f3('0x29')](function(_0x34dfa3){if(!_0x34dfa3){throw new db[(_0xb9f3('0x61'))]['ValidationError'](_0xb9f3('0x7c'));}_0x12e9d4=_0x34dfa3;return db['Setting'][_0xb9f3('0x7d')]({'where':{'id':0x1}});})[_0xb9f3('0x29')](handleEntityNotFound(_0x314b4e,null))['then'](function(_0x1e1470){if(_0x1e1470){_0x184767=_0x1e1470;if(!_0x184767[_0xb9f3('0x7e')]||!_0x184767['transcribeAccountId']||!_0x184767['transcribeRegion']||!_0x184767[_0xb9f3('0x7f')]||!_0x184767[_0xb9f3('0x74')]){throw new db[(_0xb9f3('0x61'))][(_0xb9f3('0x56'))]('Transcribe\x20not\x20configured');}if(_0x5b9b4b[_0xb9f3('0x4d')][_0xb9f3('0x80')]&&(!_0x184767['sentiment']||!_0x184767[_0xb9f3('0x81')]||!_0x184767['sentimentRegion']||!_0x184767['language']||!_0x184767[_0xb9f3('0x74')])){throw new db['Sequelize'][(_0xb9f3('0x56'))](_0xb9f3('0x82'));}return db[_0xb9f3('0x83')][_0xb9f3('0x7d')]({'where':{'id':_0x184767[_0xb9f3('0x84')]}});}})[_0xb9f3('0x29')](function(_0x3c7ca6){if(!_0x3c7ca6){throw new db[(_0xb9f3('0x61'))][(_0xb9f3('0x56'))](_0xb9f3('0x85'));}if(!_0x3c7ca6[_0xb9f3('0x86')]||!_0x3c7ca6['data2']){throw new db['Sequelize'][(_0xb9f3('0x56'))](_0xb9f3('0x87'));}_0x234a5d=_0x3c7ca6;return getBucketslist(_0x234a5d[_0xb9f3('0x86')],_0x234a5d['data2'],_0x184767[_0xb9f3('0x88')]);})['then'](function(_0x311a5e){if(_0x311a5e&&_0x311a5e['Buckets']){var _0x15ad8c=_[_0xb9f3('0x4b')](_0x311a5e['Buckets'],function(_0x3e6d41){return _0x3e6d41['Name']===_0x184767[_0xb9f3('0x74')];});if(!_0x15ad8c){logger['info'](util[_0xb9f3('0x4f')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0x5b9b4b[_0xb9f3('0x4a')]['id'],_0x184767[_0xb9f3('0x74')]));return createBucket(_0x234a5d[_0xb9f3('0x86')],_0x234a5d['data2'],_0x184767[_0xb9f3('0x88')],_0x184767[_0xb9f3('0x74')]);}logger[_0xb9f3('0x71')](util[_0xb9f3('0x4f')](_0xb9f3('0x89'),_0x5b9b4b['params']['id'],_0x184767[_0xb9f3('0x74')]));return;}})[_0xb9f3('0x29')](function(_0x4566d9){if(_0x12e9d4['transcribeStatus']===_0xb9f3('0x8a')){return transcribe(_0x5b9b4b['params']['id'],_0x234a5d[_0xb9f3('0x86')],_0x234a5d[_0xb9f3('0x8b')],_0x184767['transcribeRegion'],_0x184767[_0xb9f3('0x74')],_0x12e9d4[_0xb9f3('0x55')],_0x184767[_0xb9f3('0x7f')]);}else{logger[_0xb9f3('0x71')](util[_0xb9f3('0x4f')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x5b9b4b['params']['id']));return{'transcribeStatus':_0xb9f3('0x8c')};}})[_0xb9f3('0x29')](function(_0x2f9c0d){if(_0x2f9c0d){_0x2f9c0d[_0xb9f3('0x8d')]=_0x5b9b4b[_0xb9f3('0x4d')][_0xb9f3('0x80')];return _0x12e9d4[_0xb9f3('0x8e')](_0x2f9c0d);}})[_0xb9f3('0x29')](respondWithResult(_0x314b4e,null))['catch'](handleError(_0x314b4e,null));};function writeFile(_0x440aac,_0x53a385){return new Promise(function(_0x35ca77,_0x27b046){fs[_0xb9f3('0x8f')](_0x53a385,_0x440aac,function(_0x33e451,_0x54ed21){if(_0x33e451){return _0x27b046(_0x33e451);}else{return _0x35ca77(_0x54ed21);}});});}exports[_0xb9f3('0x90')]=function(_0x5b0fe5,_0x423352,_0x263e7b){return db[_0xb9f3('0x31')]['findOne']({'where':{'id':_0x5b0fe5[_0xb9f3('0x4a')]['id']}})[_0xb9f3('0x29')](handleEntityNotFound(_0x423352))['then'](function(_0x218dcf){if(_0x218dcf&&_0x218dcf[_0xb9f3('0x91')]){var _0x383c78=_0x218dcf[_0xb9f3('0x91')];var _0x558de0=config['root']+_0xb9f3('0x92')+_0x218dcf['id']+_0xb9f3('0x93');if(fs[_0xb9f3('0x51')](_0x558de0)){return _0x558de0;}return writeFile(_0x383c78,_0x558de0)[_0xb9f3('0x29')](function(){return _0x558de0;});}else{throw new db[(_0xb9f3('0x61'))]['ValidationError']('Transcript\x20not\x20available');}})[_0xb9f3('0x29')](function(_0x37aa93){return _0x423352[_0xb9f3('0x59')](_0x37aa93);})[_0xb9f3('0x49')](handleError(_0x423352));};
\ No newline at end of file
+var _0x8d5a=['count','offset','limit','set','apply','save','update','then','destroy','error','stack','name','send','index','VoiceRecording','rawAttributes','fieldName','key','model','differenceBy','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','catch','show','params','create','body','find','describe','download','../../components/encryptor','type','uniqueid','value','format','%s.cypher','decryptFile','secrets','recording','existsSync','Sequelize','ValidationError','filename','extname','unlink','message','VoiceRecording\x20not\x20found','Not\x20found','downloads','sequelize','MD5','col','token','$and','push','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','createBucket','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','TranscriptionJobStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeAccountId','transcribeRegion','language','bucket','Transcribe\x20not\x20configured','sentiment','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','data1','Cloud\x20Provider\x20not\x20configured','data2','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','IN_PROGRESS','tempSentiment','runSentiment','downloadTranscribe','fileText','.txt','Transcript\x20not\x20available','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','aws-sdk','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','undefined'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x8d5a,0x114));var _0xa8d5=function(_0x2f1762,_0xab43df){_0x2f1762=_0x2f1762-0x0;var _0x8ab21=_0x8d5a[_0x2f1762];return _0x8ab21;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa8d5('0x0'));var zipdir=require(_0xa8d5('0x1'));var jsonpatch=require(_0xa8d5('0x2'));var rp=require(_0xa8d5('0x3'));var moment=require('moment');var BPromise=require(_0xa8d5('0x4'));var Mustache=require('mustache');var util=require(_0xa8d5('0x5'));var path=require(_0xa8d5('0x6'));var sox=require('sox');var csv=require(_0xa8d5('0x7'));var ejs=require(_0xa8d5('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa8d5('0x9'));var squel=require(_0xa8d5('0xa'));var crypto=require(_0xa8d5('0xb'));var jsforce=require(_0xa8d5('0xc'));var deskjs=require(_0xa8d5('0xd'));var toCsv=require(_0xa8d5('0x7'));var querystring=require('querystring');var Papa=require(_0xa8d5('0xe'));var AWS=require(_0xa8d5('0xf'));var uuidv4=require('uuid/v4');var Redis=require(_0xa8d5('0x10'));var authService=require(_0xa8d5('0x11'));var qs=require(_0xa8d5('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa8d5('0x13'))(_0xa8d5('0x14'));var utils=require(_0xa8d5('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xa8d5('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x44ac79,_0x4c61c0){_0x4c61c0=_0x4c61c0||0xcc;return function(_0x1f0993){if(_0x1f0993){return _0x44ac79[_0xa8d5('0x17')](_0x4c61c0);}return _0x44ac79[_0xa8d5('0x18')](_0x4c61c0)[_0xa8d5('0x19')]();};}function respondWithResult(_0x16542e,_0x360e70){_0x360e70=_0x360e70||0xc8;return function(_0x2634e8){if(_0x2634e8){return _0x16542e['status'](_0x360e70)[_0xa8d5('0x1a')](_0x2634e8);}};}function respondWithFilteredResult(_0x59b819,_0x4bcd09){return function(_0x2bff2d){if(_0x2bff2d){var _0x547f68=typeof _0x4bcd09['offset']===_0xa8d5('0x1b')&&typeof _0x4bcd09['limit']===_0xa8d5('0x1b');var _0x46aa27=_0x2bff2d[_0xa8d5('0x1c')];var _0x255874=_0x547f68?0x0:_0x4bcd09[_0xa8d5('0x1d')];var _0x47bd69=_0x547f68?_0x2bff2d[_0xa8d5('0x1c')]:_0x4bcd09[_0xa8d5('0x1d')]+_0x4bcd09[_0xa8d5('0x1e')];var _0xf47ff;if(_0x47bd69>=_0x46aa27){_0x47bd69=_0x46aa27;_0xf47ff=0xc8;}else{_0xf47ff=0xce;}_0x59b819['status'](_0xf47ff);return _0x59b819[_0xa8d5('0x1f')]('Content-Range',_0x255874+'-'+_0x47bd69+'/'+_0x46aa27)[_0xa8d5('0x1a')](_0x2bff2d);}return null;};}function patchUpdates(_0x366354){return function(_0x212154){try{jsonpatch[_0xa8d5('0x20')](_0x212154,_0x366354,!![]);}catch(_0x15261b){return BPromise['reject'](_0x15261b);}return _0x212154[_0xa8d5('0x21')]();};}function saveUpdates(_0x5008a2,_0x5eab9f){return function(_0x1a0e63){if(_0x1a0e63){return _0x1a0e63[_0xa8d5('0x22')](_0x5008a2)[_0xa8d5('0x23')](function(_0x25638b){return _0x25638b;});}return null;};}function removeEntity(_0x1884a8,_0x493c9e){return function(_0x53394f){if(_0x53394f){return _0x53394f[_0xa8d5('0x24')]()['then'](function(){_0x1884a8['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x33970e,_0x2cfa5d){return function(_0x3fab29){if(!_0x3fab29){_0x33970e[_0xa8d5('0x17')](0x194);}return _0x3fab29;};}function handleError(_0x371a56,_0x5bc9ee){_0x5bc9ee=_0x5bc9ee||0x1f4;return function(_0xbcbcd){logger[_0xa8d5('0x25')](_0xbcbcd[_0xa8d5('0x26')]);if(_0xbcbcd[_0xa8d5('0x27')]){delete _0xbcbcd[_0xa8d5('0x27')];}_0x371a56[_0xa8d5('0x18')](_0x5bc9ee)[_0xa8d5('0x28')](_0xbcbcd);};}exports[_0xa8d5('0x29')]=function(_0x46a5d0,_0x39dc8e){var _0x34402c={},_0x5a79a8={},_0x1398c0={'count':0x0,'rows':[]};var _0x2399ab=_['map'](db[_0xa8d5('0x2a')][_0xa8d5('0x2b')],function(_0x59ffa3){return{'name':_0x59ffa3[_0xa8d5('0x2c')],'type':_0x59ffa3['type'][_0xa8d5('0x2d')]};});_0x5a79a8[_0xa8d5('0x2e')]=_[_0xa8d5('0x2f')](_[_0xa8d5('0x30')](_0x2399ab,_0xa8d5('0x27')),['format']);_0x5a79a8[_0xa8d5('0x31')]=_[_0xa8d5('0x32')](_0x46a5d0[_0xa8d5('0x31')]);_0x5a79a8[_0xa8d5('0x33')]=_[_0xa8d5('0x34')](_0x5a79a8['model'],_0x5a79a8[_0xa8d5('0x31')]);_0x34402c[_0xa8d5('0x35')]=_['intersection'](_0x5a79a8['model'],qs[_0xa8d5('0x36')](_0x46a5d0[_0xa8d5('0x31')][_0xa8d5('0x36')]));_0x34402c[_0xa8d5('0x35')]=_0x34402c[_0xa8d5('0x35')][_0xa8d5('0x37')]?_0x34402c[_0xa8d5('0x35')]:_0x5a79a8[_0xa8d5('0x2e')];if(!_0x46a5d0['query'][_0xa8d5('0x38')]('nolimit')){_0x34402c[_0xa8d5('0x1e')]=qs[_0xa8d5('0x1e')](_0x46a5d0['query'][_0xa8d5('0x1e')]);_0x34402c[_0xa8d5('0x1d')]=qs[_0xa8d5('0x1d')](_0x46a5d0[_0xa8d5('0x31')]['offset']);}_0x34402c[_0xa8d5('0x39')]=qs[_0xa8d5('0x3a')](_0x46a5d0[_0xa8d5('0x31')][_0xa8d5('0x3a')]);_0x34402c['where']=qs[_0xa8d5('0x33')](_[_0xa8d5('0x3b')](_0x46a5d0[_0xa8d5('0x31')],_0x5a79a8[_0xa8d5('0x33')]),_0x2399ab);if(_0x46a5d0['query'][_0xa8d5('0x3c')]){_0x34402c[_0xa8d5('0x3d')]=_[_0xa8d5('0x3e')](_0x34402c['where'],{'$or':_['map'](_0x2399ab,function(_0x13d04d){if(_0x13d04d['type']!=='VIRTUAL'){var _0x3b88e6={};_0x3b88e6[_0x13d04d[_0xa8d5('0x27')]]={'$like':'%'+_0x46a5d0[_0xa8d5('0x31')][_0xa8d5('0x3c')]+'%'};return _0x3b88e6;}})});}_0x34402c=_[_0xa8d5('0x3e')]({},_0x34402c,_0x46a5d0[_0xa8d5('0x3f')]);var _0x2c4c5c={'where':_0x34402c[_0xa8d5('0x3d')]};return db[_0xa8d5('0x2a')][_0xa8d5('0x1c')](_0x2c4c5c)[_0xa8d5('0x23')](function(_0x10134f){_0x1398c0[_0xa8d5('0x1c')]=_0x10134f;if(_0x46a5d0[_0xa8d5('0x31')][_0xa8d5('0x40')]){_0x34402c[_0xa8d5('0x41')]=[{'all':!![]}];}return db['VoiceRecording'][_0xa8d5('0x42')](_0x34402c);})['then'](function(_0x1ce2f3){_0x1398c0['rows']=_0x1ce2f3;return _0x1398c0;})[_0xa8d5('0x23')](respondWithFilteredResult(_0x39dc8e,_0x34402c))[_0xa8d5('0x43')](handleError(_0x39dc8e,null));};exports[_0xa8d5('0x44')]=function(_0x1ee140,_0x1e23e9){var _0x11cd03={'raw':![],'where':{'id':_0x1ee140[_0xa8d5('0x45')]['id']}},_0x2fcd6e={};_0x2fcd6e[_0xa8d5('0x2e')]=_[_0xa8d5('0x32')](db[_0xa8d5('0x2a')][_0xa8d5('0x2b')]);_0x2fcd6e[_0xa8d5('0x31')]=_[_0xa8d5('0x32')](_0x1ee140[_0xa8d5('0x31')]);_0x2fcd6e[_0xa8d5('0x33')]=_[_0xa8d5('0x34')](_0x2fcd6e[_0xa8d5('0x2e')],_0x2fcd6e[_0xa8d5('0x31')]);_0x11cd03['attributes']=_[_0xa8d5('0x34')](_0x2fcd6e[_0xa8d5('0x2e')],qs['fields'](_0x1ee140[_0xa8d5('0x31')][_0xa8d5('0x36')]));_0x11cd03[_0xa8d5('0x35')]=_0x11cd03['attributes'][_0xa8d5('0x37')]?_0x11cd03['attributes']:_0x2fcd6e[_0xa8d5('0x2e')];if(_0x1ee140[_0xa8d5('0x31')][_0xa8d5('0x40')]){_0x11cd03['include']=[{'all':!![]}];}_0x11cd03=_[_0xa8d5('0x3e')]({},_0x11cd03,_0x1ee140['options']);return db[_0xa8d5('0x2a')]['find'](_0x11cd03)['then'](handleEntityNotFound(_0x1e23e9,null))[_0xa8d5('0x23')](respondWithResult(_0x1e23e9,null))[_0xa8d5('0x43')](handleError(_0x1e23e9,null));};exports[_0xa8d5('0x46')]=function(_0x253f17,_0x321f9b){return db[_0xa8d5('0x2a')][_0xa8d5('0x46')](_0x253f17[_0xa8d5('0x47')],{})[_0xa8d5('0x23')](respondWithResult(_0x321f9b,0xc9))[_0xa8d5('0x43')](handleError(_0x321f9b,null));};exports[_0xa8d5('0x22')]=function(_0x40f8b0,_0x68316a){if(_0x40f8b0[_0xa8d5('0x47')]['id']){delete _0x40f8b0[_0xa8d5('0x47')]['id'];}return db[_0xa8d5('0x2a')][_0xa8d5('0x48')]({'where':{'id':_0x40f8b0[_0xa8d5('0x45')]['id']}})[_0xa8d5('0x23')](handleEntityNotFound(_0x68316a,null))['then'](saveUpdates(_0x40f8b0['body'],null))['then'](respondWithResult(_0x68316a,null))['catch'](handleError(_0x68316a,null));};exports['describe']=function(_0x4df181,_0x19149a){return db[_0xa8d5('0x2a')][_0xa8d5('0x49')]()[_0xa8d5('0x23')](respondWithResult(_0x19149a,null))[_0xa8d5('0x43')](handleError(_0x19149a,null));};exports[_0xa8d5('0x4a')]=function(_0x48735a,_0x52d792,_0x3b4e23){var _0x5da2d5=require(_0xa8d5('0x4b'));var _0x46bb2d=![];var _0x198f85={};if(_0x48735a[_0xa8d5('0x31')][_0xa8d5('0x4c')]&&_0x48735a['query'][_0xa8d5('0x4c')]==='uniqueid'){_0x198f85[_0xa8d5('0x4d')]=_0x48735a[_0xa8d5('0x45')]['id'];}else{_0x198f85['id']=_0x48735a[_0xa8d5('0x45')]['id'];}return db['VoiceRecording']['find']({'where':_0x198f85,'attributes':['id',_0xa8d5('0x4e')],'raw':!![]})['then'](handleEntityNotFound(_0x52d792,null))[_0xa8d5('0x23')](function(_0x91b4df){if(_0x91b4df){var _0x23fb20=_0x91b4df[_0xa8d5('0x4e')];var _0x44f623=util[_0xa8d5('0x4f')](_0xa8d5('0x50'),_0x23fb20);if(fs['existsSync'](_0x44f623)){_0x46bb2d=!![];return _0x5da2d5[_0xa8d5('0x51')](_0x44f623,_0x23fb20,config[_0xa8d5('0x52')][_0xa8d5('0x53')])[_0xa8d5('0x23')](function(){return _0x91b4df;});}return _0x91b4df;}})[_0xa8d5('0x23')](function(_0x25f1a2){if(_0x25f1a2){var _0x22da6a=_0x25f1a2[_0xa8d5('0x4e')];if(!fs[_0xa8d5('0x54')](_0x22da6a)){throw new db[(_0xa8d5('0x55'))][(_0xa8d5('0x56'))]('VoiceRecording\x20not\x20found');}if(_0x25f1a2[_0xa8d5('0x57')]){return _0x52d792[_0xa8d5('0x4a')](_0x22da6a,_0x25f1a2['filename']+path[_0xa8d5('0x58')](_0x22da6a),function(){if(_0x46bb2d){fs[_0xa8d5('0x59')](_0x22da6a);}});}else{return _0x52d792[_0xa8d5('0x4a')](_0x22da6a,function(_0x289eb6){if(_0x46bb2d){fs[_0xa8d5('0x59')](_0x22da6a);}});}}})[_0xa8d5('0x43')](function(_0x355973){if(_0x355973[_0xa8d5('0x5a')]===_0xa8d5('0x5b')){_0x52d792['status'](0x194)['send'](_0xa8d5('0x5c'));}else{return handleError(_0x52d792,null);}});};exports[_0xa8d5('0x5d')]=function(_0x1e50ac,_0x945f01,_0x39fcb1){var _0x5ce96d=require(_0xa8d5('0x4b'));var _0x2db478=![];var _0x23bbea={'$and':[db[_0xa8d5('0x5e')][_0xa8d5('0x3d')](db[_0xa8d5('0x5e')]['fn'](_0xa8d5('0x5f'),db[_0xa8d5('0x5e')][_0xa8d5('0x60')](_0xa8d5('0x4d'))),_0x1e50ac[_0xa8d5('0x31')][_0xa8d5('0x61')])]};if(_0x1e50ac['query']['type']&&_0x1e50ac[_0xa8d5('0x31')][_0xa8d5('0x4c')]==='uniqueid'){_0x23bbea[_0xa8d5('0x62')][_0xa8d5('0x63')]({'uniqueid':_0x1e50ac[_0xa8d5('0x45')]['id']});}else{_0x23bbea[_0xa8d5('0x62')][_0xa8d5('0x63')]({'id':_0x1e50ac[_0xa8d5('0x45')]['id']});}return db['VoiceRecording']['find']({'where':_0x23bbea,'attributes':['id',_0xa8d5('0x4e')],'raw':!![]})[_0xa8d5('0x23')](handleEntityNotFound(_0x945f01,null))[_0xa8d5('0x23')](function(_0x3d80fb){if(_0x3d80fb){var _0x52ac5a=util['format'](_0xa8d5('0x50'),_0x3d80fb[_0xa8d5('0x4e')]);if(fs[_0xa8d5('0x54')](_0x52ac5a)){_0x2db478=!![];return _0x5ce96d[_0xa8d5('0x51')](_0x52ac5a,_0x3d80fb[_0xa8d5('0x4e')],config[_0xa8d5('0x52')][_0xa8d5('0x53')])[_0xa8d5('0x23')](function(){return _0x3d80fb;});}return _0x3d80fb;}})['then'](function(_0x8fe37b){if(_0x8fe37b){if(!fs[_0xa8d5('0x54')](_0x8fe37b['value'])){throw new db[(_0xa8d5('0x55'))]['ValidationError']('VoiceRecording\x20not\x20found');}if(_0x8fe37b[_0xa8d5('0x57')]){return _0x945f01[_0xa8d5('0x4a')](_0x8fe37b[_0xa8d5('0x4e')],_0x8fe37b[_0xa8d5('0x57')]+path[_0xa8d5('0x58')](_0x8fe37b[_0xa8d5('0x4e')]),function(){if(_0x2db478){fs[_0xa8d5('0x59')](_0x8fe37b[_0xa8d5('0x4e')]);}});}else{return _0x945f01[_0xa8d5('0x4a')](_0x8fe37b[_0xa8d5('0x4e')],function(_0x3ce32b){if(_0x2db478){fs[_0xa8d5('0x59')](_0x8fe37b[_0xa8d5('0x4e')]);}});}}})['catch'](handleError(_0x945f01,null));};exports[_0xa8d5('0x24')]=function(_0x282190,_0x50d6ae){return db[_0xa8d5('0x2a')]['find']({'where':{'id':_0x282190['params']['id']}})['then'](function(_0x3b9a5c){if(_[_0xa8d5('0x64')](_0x3b9a5c)){throw new ReferenceError(_0xa8d5('0x65'));}return _0x3b9a5c;})[_0xa8d5('0x23')](function(_0x290c14){var _0x2a2499=_0x290c14[_0xa8d5('0x4e')];logger[_0xa8d5('0x66')](_0xa8d5('0x67'),_0x2a2499);if(!_[_0xa8d5('0x64')](_0x290c14[_0xa8d5('0x4e')])&&fs[_0xa8d5('0x54')](_0x2a2499)){logger[_0xa8d5('0x66')](_0xa8d5('0x68')+_0x2a2499+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x2a2499);}_0x2a2499=_0x2a2499+_0xa8d5('0x69');if(!_['isNil'](_0x290c14[_0xa8d5('0x4e')])&&fs[_0xa8d5('0x54')](_0x2a2499)){logger[_0xa8d5('0x66')]('File:\x20\x22'+_0x2a2499+_0xa8d5('0x6a'));fs['unlinkSync'](_0x2a2499);}return _0x290c14;})[_0xa8d5('0x23')](function(_0x527ac4){if(!_0x527ac4)throw new InternalError();return _0x527ac4[_0xa8d5('0x24')]();})[_0xa8d5('0x23')](function(){_0x50d6ae[_0xa8d5('0x18')](0xcc)['end']();})[_0xa8d5('0x43')](handleError(_0x50d6ae,null));};function getBucketslist(_0x4a5194,_0xd6d502,_0x4383e9){return new Promise(function(_0x3704cd,_0x3e40d9){var _0xe3bd78=new AWS['S3']({'accessKeyId':_0xd6d502,'secretAccessKey':_0x4a5194,'region':_0x4383e9});_0xe3bd78['listBuckets']({},function(_0x5e3257,_0x4d234e){if(_0x5e3257){return _0x3e40d9(_0x5e3257);}else{return _0x3704cd(_0x4d234e);}});});}function createBucket(_0x36894c,_0x37509a,_0x45d3c5,_0x53e054){return new Promise(function(_0x3f8a8d,_0x19020e){var _0x2bab98=new AWS['S3']({'accessKeyId':_0x37509a,'secretAccessKey':_0x36894c,'region':_0x45d3c5});_0x2bab98[_0xa8d5('0x6b')]({'Bucket':_0x53e054},function(_0x5d9ebe,_0x4d42d1){if(_0x5d9ebe){return _0x19020e(_0x5d9ebe);}else{return _0x3f8a8d(_0x4d42d1);}});});}function uploadFile(_0x57c78f,_0x45083d,_0x95a08e,_0x21b091,_0x17ae68,_0x2dff68){return new Promise(function(_0xee01ab,_0x281813){var _0x10ae10=new AWS['S3']({'accessKeyId':_0x45083d,'secretAccessKey':_0x57c78f,'region':_0x95a08e});_0x10ae10[_0xa8d5('0x6c')]({'Bucket':_0x21b091,'Key':_0x17ae68,'Body':_0x2dff68},function(_0x3e887b,_0x4556ff){if(_0x3e887b){return _0x281813(_0x3e887b);}else{return _0xee01ab(_0x4556ff);}});});}function startTranscribe(_0x1030e5,_0x586bc5,_0x40e345,_0x9e1a86,_0x2432e9,_0x25b0ec){return new Promise(function(_0x5a8db5,_0x53a0cb){var _0x354341=new AWS[(_0xa8d5('0x6d'))]({'accessKeyId':_0x586bc5,'secretAccessKey':_0x1030e5,'region':_0x40e345});_0x354341[_0xa8d5('0x6e')]({'TranscriptionJobName':_0x9e1a86,'LanguageCode':_0x2432e9,'Media':{'MediaFileUri':_0x25b0ec}},function(_0x6b7dcd,_0x4f1b12){if(_0x6b7dcd){return _0x53a0cb(_0x6b7dcd);}else{return _0x5a8db5(_0x4f1b12);}});});}function transcribe(_0x5d9429,_0xee40f7,_0x5c32aa,_0xd45500,_0x5e7002,_0x4d38ee,_0x288111){return new Promise(function(_0x1fa8e3,_0x5da036){var _0x32de3a={};logger[_0xa8d5('0x66')](util[_0xa8d5('0x4f')](_0xa8d5('0x6f'),_0x5d9429,_0x5e7002));return uploadFile(_0xee40f7,_0x5c32aa,_0xd45500,_0x5e7002,path[_0xa8d5('0x70')](_0x4d38ee),fs[_0xa8d5('0x71')](_0x4d38ee))[_0xa8d5('0x23')](function(_0x1dc104){logger['info'](util[_0xa8d5('0x4f')](_0xa8d5('0x72'),_0x5d9429,_0x5e7002,_0x1dc104[_0xa8d5('0x73')]));_0x32de3a['bucket']=_0x1dc104[_0xa8d5('0x74')];_0x32de3a[_0xa8d5('0x75')]=_0x1dc104[_0xa8d5('0x73')];logger[_0xa8d5('0x66')](util['format'](_0xa8d5('0x76'),_0x5d9429));return startTranscribe(_0xee40f7,_0x5c32aa,_0xd45500,uuidv4(),_0x288111,_0x1dc104['Location']);})[_0xa8d5('0x23')](function(_0x25e28a){logger['info'](util[_0xa8d5('0x4f')](_0xa8d5('0x77'),_0x5d9429,_0x25e28a[_0xa8d5('0x78')][_0xa8d5('0x79')]));_0x32de3a['transcribeName']=_0x25e28a['TranscriptionJob']['TranscriptionJobName'];_0x32de3a['transcribeStatus']=_0x25e28a[_0xa8d5('0x78')][_0xa8d5('0x7a')];return _0x1fa8e3(_0x32de3a);})['catch'](function(_0x4c2798){return _0x5da036(_0x4c2798);});});}exports[_0xa8d5('0x7b')]=function(_0x5448a8,_0x4aa186,_0x28ba21){var _0x2a2b29;var _0x2516c8;var _0x5276a7;var _0x5c5f2b=require(_0xa8d5('0x4b'));return db[_0xa8d5('0x2a')][_0xa8d5('0x7c')]({'where':{'id':_0x5448a8[_0xa8d5('0x45')]['id']}})[_0xa8d5('0x23')](function(_0x1cf4fe){if(_0x1cf4fe){var _0x3d6fa0=util[_0xa8d5('0x4f')]('%s.cypher',_0x1cf4fe[_0xa8d5('0x4e')]);if(fs[_0xa8d5('0x54')](_0x3d6fa0)){cypher=!![];return _0x5c5f2b['decryptFile'](_0x3d6fa0,_0x1cf4fe[_0xa8d5('0x4e')],config[_0xa8d5('0x52')][_0xa8d5('0x53')])[_0xa8d5('0x23')](function(){return _0x1cf4fe;});}return _0x1cf4fe;}})[_0xa8d5('0x23')](function(_0x3b66b0){if(!_0x3b66b0){throw new db[(_0xa8d5('0x55'))]['ValidationError'](_0xa8d5('0x7d'));}_0x2516c8=_0x3b66b0;return db[_0xa8d5('0x7e')][_0xa8d5('0x7c')]({'where':{'id':0x1}});})[_0xa8d5('0x23')](handleEntityNotFound(_0x4aa186,null))[_0xa8d5('0x23')](function(_0x5afe64){if(_0x5afe64){_0x2a2b29=_0x5afe64;if(!_0x2a2b29[_0xa8d5('0x7f')]||!_0x2a2b29[_0xa8d5('0x80')]||!_0x2a2b29[_0xa8d5('0x81')]||!_0x2a2b29[_0xa8d5('0x82')]||!_0x2a2b29[_0xa8d5('0x83')]){throw new db[(_0xa8d5('0x55'))][(_0xa8d5('0x56'))](_0xa8d5('0x84'));}if(_0x5448a8[_0xa8d5('0x47')]['runSentiment']&&(!_0x2a2b29[_0xa8d5('0x85')]||!_0x2a2b29['sentimentAccountId']||!_0x2a2b29[_0xa8d5('0x86')]||!_0x2a2b29[_0xa8d5('0x82')]||!_0x2a2b29[_0xa8d5('0x83')])){throw new db[(_0xa8d5('0x55'))][(_0xa8d5('0x56'))](_0xa8d5('0x87'));}return db[_0xa8d5('0x88')]['findOne']({'where':{'id':_0x2a2b29['transcribeAccountId']}});}})[_0xa8d5('0x23')](function(_0x35f7e6){if(!_0x35f7e6){throw new db[(_0xa8d5('0x55'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x35f7e6[_0xa8d5('0x89')]||!_0x35f7e6['data2']){throw new db[(_0xa8d5('0x55'))][(_0xa8d5('0x56'))](_0xa8d5('0x8a'));}_0x5276a7=_0x35f7e6;return getBucketslist(_0x5276a7['data1'],_0x5276a7[_0xa8d5('0x8b')],_0x2a2b29['transcribeRegion']);})['then'](function(_0xe71d96){if(_0xe71d96&&_0xe71d96['Buckets']){var _0x37dd95=_[_0xa8d5('0x48')](_0xe71d96[_0xa8d5('0x8c')],function(_0x2fef45){return _0x2fef45[_0xa8d5('0x8d')]===_0x2a2b29[_0xa8d5('0x83')];});if(!_0x37dd95){logger['info'](util[_0xa8d5('0x4f')](_0xa8d5('0x8e'),_0x5448a8['params']['id'],_0x2a2b29[_0xa8d5('0x83')]));return createBucket(_0x5276a7[_0xa8d5('0x89')],_0x5276a7[_0xa8d5('0x8b')],_0x2a2b29[_0xa8d5('0x81')],_0x2a2b29[_0xa8d5('0x83')]);}logger[_0xa8d5('0x66')](util[_0xa8d5('0x4f')](_0xa8d5('0x8f'),_0x5448a8[_0xa8d5('0x45')]['id'],_0x2a2b29[_0xa8d5('0x83')]));return;}})[_0xa8d5('0x23')](function(_0x5f3891){if(_0x2516c8['transcribeStatus']===_0xa8d5('0x90')){return transcribe(_0x5448a8[_0xa8d5('0x45')]['id'],_0x5276a7[_0xa8d5('0x89')],_0x5276a7[_0xa8d5('0x8b')],_0x2a2b29[_0xa8d5('0x81')],_0x2a2b29[_0xa8d5('0x83')],_0x2516c8['value'],_0x2a2b29['language']);}else{logger[_0xa8d5('0x66')](util[_0xa8d5('0x4f')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x5448a8[_0xa8d5('0x45')]['id']));return{'transcribeStatus':_0xa8d5('0x91')};}})['then'](function(_0x1f716a){if(_0x1f716a){_0x1f716a[_0xa8d5('0x92')]=_0x5448a8[_0xa8d5('0x47')][_0xa8d5('0x93')];return _0x2516c8['updateAttributes'](_0x1f716a);}})[_0xa8d5('0x23')](respondWithResult(_0x4aa186,null))['catch'](handleError(_0x4aa186,null));};function writeFile(_0x4512db,_0x13bbb2){return new Promise(function(_0x4bf505,_0x701e39){fs['writeFile'](_0x13bbb2,_0x4512db,function(_0x4c526e,_0x550774){if(_0x4c526e){return _0x701e39(_0x4c526e);}else{return _0x4bf505(_0x550774);}});});}exports[_0xa8d5('0x94')]=function(_0x3bb554,_0x2c9eea,_0x4557d7){return db[_0xa8d5('0x2a')][_0xa8d5('0x7c')]({'where':{'id':_0x3bb554['params']['id']}})['then'](handleEntityNotFound(_0x2c9eea))['then'](function(_0x566f45){if(_0x566f45&&_0x566f45[_0xa8d5('0x95')]){var _0x4fbac5=_0x566f45[_0xa8d5('0x95')];var _0x5afd16=config['root']+'/server/files/transcribes/transcribe_'+_0x566f45['id']+_0xa8d5('0x96');if(fs['existsSync'](_0x5afd16)){return _0x5afd16;}return writeFile(_0x4fbac5,_0x5afd16)[_0xa8d5('0x23')](function(){return _0x5afd16;});}else{throw new db['Sequelize'][(_0xa8d5('0x56'))](_0xa8d5('0x97'));}})[_0xa8d5('0x23')](function(_0x42e5c1){return _0x2c9eea[_0xa8d5('0x4a')](_0x42e5c1);})[_0xa8d5('0x43')](handleError(_0x2c9eea));};
\ No newline at end of file
index ea7b466..42bbcd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x322b=['uniqueid','lodash','../../config/logger','api','path','../../config/environment','./voiceRecording.attributes','VoiceRecording','voice_recordings'];(function(_0x5e3a45,_0x45f0c5){var _0x13419f=function(_0x5ac996){while(--_0x5ac996){_0x5e3a45['push'](_0x5e3a45['shift']());}};_0x13419f(++_0x45f0c5);}(_0x322b,0x106));var _0xb322=function(_0x5e0b59,_0x218ea1){_0x5e0b59=_0x5e0b59-0x0;var _0x3a1f0d=_0x322b[_0x5e0b59];return _0x3a1f0d;};'use strict';var _=require(_0xb322('0x0'));var util=require('util');var logger=require(_0xb322('0x1'))(_0xb322('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb322('0x3'));var rimraf=require('rimraf');var config=require(_0xb322('0x4'));var attributes=require(_0xb322('0x5'));module['exports']=function(_0x210cdf,_0x34986d){return _0x210cdf['define'](_0xb322('0x6'),attributes,{'tableName':_0xb322('0x7'),'paranoid':![],'indexes':[{'name':_0xb322('0x8'),'fields':[_0xb322('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x81a1=['rimraf','../../config/environment','exports','define','voice_recordings','uniqueid','lodash','util','moment','bluebird','request-promise','path'];(function(_0x54ec48,_0x3ec05c){var _0xd44810=function(_0x4315ca){while(--_0x4315ca){_0x54ec48['push'](_0x54ec48['shift']());}};_0xd44810(++_0x3ec05c);}(_0x81a1,0xea));var _0x181a=function(_0x29a3e4,_0x26b15b){_0x29a3e4=_0x29a3e4-0x0;var _0x37acfc=_0x81a1[_0x29a3e4];return _0x37acfc;};'use strict';var _=require(_0x181a('0x0'));var util=require(_0x181a('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x181a('0x2'));var BPromise=require(_0x181a('0x3'));var rp=require(_0x181a('0x4'));var fs=require('fs');var path=require(_0x181a('0x5'));var rimraf=require(_0x181a('0x6'));var config=require(_0x181a('0x7'));var attributes=require('./voiceRecording.attributes');module[_0x181a('0x8')]=function(_0x230973,_0x4986a3){return _0x230973[_0x181a('0x9')]('VoiceRecording',attributes,{'tableName':_0x181a('0xa'),'paranoid':![],'indexes':[{'name':_0x181a('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index e6d1f3c..b4234e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7d1=['unlink','CreateVoiceRecording\x20file\x20encrypted','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateVoiceRecording','update','body','options','raw','where','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','VoiceRecording','create','existsSync','format','%s.cypher','value','encryptFile','secrets','recording'];(function(_0x3203a1,_0x46c498){var _0x24215e=function(_0x4ffab0){while(--_0x4ffab0){_0x3203a1['push'](_0x3203a1['shift']());}};_0x24215e(++_0x46c498);}(_0xd7d1,0x1b3));var _0x1d7d=function(_0x3a8391,_0x4c7803){_0x3a8391=_0x3a8391-0x0;var _0x5a3d36=_0xd7d1[_0x3a8391];return _0x5a3d36;};'use strict';var _=require(_0x1d7d('0x0'));var util=require(_0x1d7d('0x1'));var moment=require(_0x1d7d('0x2'));var BPromise=require(_0x1d7d('0x3'));var rs=require(_0x1d7d('0x4'));var fs=require('fs');var Redis=require(_0x1d7d('0x5'));var db=require(_0x1d7d('0x6'))['db'];var utils=require(_0x1d7d('0x7'));var logger=require(_0x1d7d('0x8'))(_0x1d7d('0x9'));var config=require(_0x1d7d('0xa'));var jayson=require(_0x1d7d('0xb'));var client=jayson[_0x1d7d('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x462ef8,_0x1aa456,_0x14dbf6){return new BPromise(function(_0x3675a2,_0xd6189e){return client[_0x1d7d('0xd')](_0x462ef8,_0x14dbf6)[_0x1d7d('0xe')](function(_0xa44223){logger[_0x1d7d('0xf')](_0x1d7d('0x10'),_0x1aa456,_0x1d7d('0x11'));logger['debug'](_0x1d7d('0x12'),_0x1aa456,'request\x20sent',JSON[_0x1d7d('0x13')](_0xa44223));if(_0xa44223[_0x1d7d('0x14')]){if(_0xa44223[_0x1d7d('0x14')][_0x1d7d('0x15')]===0x1f4){logger['error'](_0x1d7d('0x10'),_0x1aa456,_0xa44223['error']['message']);return _0xd6189e(_0xa44223[_0x1d7d('0x14')][_0x1d7d('0x16')]);}logger['error']('VoiceRecording,\x20%s,\x20%s',_0x1aa456,_0xa44223[_0x1d7d('0x14')][_0x1d7d('0x16')]);return _0x3675a2(_0xa44223[_0x1d7d('0x14')][_0x1d7d('0x16')]);}else{logger[_0x1d7d('0xf')]('VoiceRecording,\x20%s,\x20%s',_0x1aa456,_0x1d7d('0x11'));_0x3675a2(_0xa44223[_0x1d7d('0x17')]['message']);}})[_0x1d7d('0x18')](function(_0x162c3a){logger[_0x1d7d('0x14')](_0x1d7d('0x10'),_0x1aa456,_0x162c3a);_0xd6189e(_0x162c3a);});});}exports[_0x1d7d('0x19')]=function(_0x4db4f2){var _0x664e3f=this;return new Promise(function(_0x191024,_0x5cbb8f){return db['VoiceRecording'][_0x1d7d('0x1a')](_0x4db4f2[_0x1d7d('0x1b')],{'raw':_0x4db4f2[_0x1d7d('0x1c')]?_0x4db4f2[_0x1d7d('0x1c')][_0x1d7d('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4db4f2[_0x1d7d('0x1c')]?_0x4db4f2['options'][_0x1d7d('0x1e')]||null:null,'attributes':_0x4db4f2[_0x1d7d('0x1c')]?_0x4db4f2[_0x1d7d('0x1c')]['attributes']||null:null,'limit':_0x4db4f2[_0x1d7d('0x1c')]?_0x4db4f2[_0x1d7d('0x1c')]['limit']||null:null})['then'](function(_0x1dcaf2){logger[_0x1d7d('0xf')](_0x1d7d('0x19'),_0x4db4f2);logger['debug'](_0x1d7d('0x19'),_0x4db4f2,JSON[_0x1d7d('0x13')](_0x1dcaf2));_0x191024(_0x1dcaf2);})[_0x1d7d('0x18')](function(_0x21e59){logger['error'](_0x1d7d('0x19'),_0x21e59[_0x1d7d('0x16')],_0x4db4f2);_0x5cbb8f(_0x664e3f['error'](0x1f4,_0x21e59['message']));});});};exports[_0x1d7d('0x1f')]=function(_0x52c618){var _0x38c323=this;return new Promise(function(_0x2d4de4,_0x3bc6e8){var _0x22c40d=require(_0x1d7d('0x20'));var _0x59f827;return db[_0x1d7d('0x21')][_0x1d7d('0x22')]({'attributes':['id',_0x1d7d('0x23')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x78adbe){_0x59f827=_0x78adbe;return db[_0x1d7d('0x24')][_0x1d7d('0x25')](_0x52c618['body']);})['then'](function(_0x53e25c){if(_0x59f827[_0x1d7d('0x23')]&&fs[_0x1d7d('0x26')](_0x53e25c['value'])){var _0x1ebcbc=util[_0x1d7d('0x27')](_0x1d7d('0x28'),_0x53e25c[_0x1d7d('0x29')]);return _0x22c40d[_0x1d7d('0x2a')](_0x53e25c[_0x1d7d('0x29')],_0x1ebcbc,config[_0x1d7d('0x2b')][_0x1d7d('0x2c')])[_0x1d7d('0xe')](function(){fs[_0x1d7d('0x2d')](_0x53e25c['value']);logger['info'](_0x1d7d('0x2e'));return _0x53e25c;});}return _0x53e25c;})[_0x1d7d('0xe')](function(_0x90e852){logger[_0x1d7d('0xf')](_0x1d7d('0x1f'),_0x52c618);logger[_0x1d7d('0x2f')](_0x1d7d('0x1f'),_0x52c618,JSON[_0x1d7d('0x13')](_0x90e852));_0x2d4de4(_0x90e852);})[_0x1d7d('0x18')](function(_0x47b6b2){logger[_0x1d7d('0x14')](_0x1d7d('0x1f'),_0x47b6b2[_0x1d7d('0x16')],_0x52c618);_0x3bc6e8(_0x38c323[_0x1d7d('0x14')](0x1f4,_0x47b6b2['message']));});});};
\ No newline at end of file
+var _0x8aad=['VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateVoiceRecording','VoiceRecording','update','body','options','raw','where','attributes','then','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','existsSync','value','format','%s.cypher','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','lodash','util','bluebird','ioredis','../../mysqldb','rpc','client','http','request','info'];(function(_0x4d461a,_0x304051){var _0x1182cd=function(_0x1921ad){while(--_0x1921ad){_0x4d461a['push'](_0x4d461a['shift']());}};_0x1182cd(++_0x304051);}(_0x8aad,0x146));var _0xd8aa=function(_0x3d0971,_0x158fec){_0x3d0971=_0x3d0971-0x0;var _0x1b5751=_0x8aad[_0x3d0971];return _0x1b5751;};'use strict';var _=require(_0xd8aa('0x0'));var util=require(_0xd8aa('0x1'));var moment=require('moment');var BPromise=require(_0xd8aa('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd8aa('0x3'));var db=require(_0xd8aa('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd8aa('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd8aa('0x6')][_0xd8aa('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x16ea12,_0x4a4b10,_0x2a559d){return new BPromise(function(_0x1da411,_0x2a23b5){return client[_0xd8aa('0x8')](_0x16ea12,_0x2a559d)['then'](function(_0x5de228){logger[_0xd8aa('0x9')](_0xd8aa('0xa'),_0x4a4b10,_0xd8aa('0xb'));logger[_0xd8aa('0xc')](_0xd8aa('0xd'),_0x4a4b10,'request\x20sent',JSON[_0xd8aa('0xe')](_0x5de228));if(_0x5de228[_0xd8aa('0xf')]){if(_0x5de228[_0xd8aa('0xf')][_0xd8aa('0x10')]===0x1f4){logger[_0xd8aa('0xf')](_0xd8aa('0xa'),_0x4a4b10,_0x5de228[_0xd8aa('0xf')][_0xd8aa('0x11')]);return _0x2a23b5(_0x5de228[_0xd8aa('0xf')][_0xd8aa('0x11')]);}logger['error']('VoiceRecording,\x20%s,\x20%s',_0x4a4b10,_0x5de228[_0xd8aa('0xf')][_0xd8aa('0x11')]);return _0x1da411(_0x5de228[_0xd8aa('0xf')]['message']);}else{logger[_0xd8aa('0x9')](_0xd8aa('0xa'),_0x4a4b10,_0xd8aa('0xb'));_0x1da411(_0x5de228[_0xd8aa('0x12')]['message']);}})[_0xd8aa('0x13')](function(_0xa9ba1b){logger['error'](_0xd8aa('0xa'),_0x4a4b10,_0xa9ba1b);_0x2a23b5(_0xa9ba1b);});});}exports[_0xd8aa('0x14')]=function(_0x32e2cd){var _0x3a29ca=this;return new Promise(function(_0x2d34ac,_0x4953be){return db[_0xd8aa('0x15')][_0xd8aa('0x16')](_0x32e2cd[_0xd8aa('0x17')],{'raw':_0x32e2cd[_0xd8aa('0x18')]?_0x32e2cd['options'][_0xd8aa('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x32e2cd[_0xd8aa('0x18')]?_0x32e2cd[_0xd8aa('0x18')][_0xd8aa('0x1a')]||null:null,'attributes':_0x32e2cd[_0xd8aa('0x18')]?_0x32e2cd['options'][_0xd8aa('0x1b')]||null:null,'limit':_0x32e2cd[_0xd8aa('0x18')]?_0x32e2cd[_0xd8aa('0x18')]['limit']||null:null})[_0xd8aa('0x1c')](function(_0x7a4ce7){logger[_0xd8aa('0x9')](_0xd8aa('0x14'),_0x32e2cd);logger[_0xd8aa('0xc')](_0xd8aa('0x14'),_0x32e2cd,JSON[_0xd8aa('0xe')](_0x7a4ce7));_0x2d34ac(_0x7a4ce7);})[_0xd8aa('0x13')](function(_0x375f64){logger[_0xd8aa('0xf')](_0xd8aa('0x14'),_0x375f64[_0xd8aa('0x11')],_0x32e2cd);_0x4953be(_0x3a29ca[_0xd8aa('0xf')](0x1f4,_0x375f64['message']));});});};exports[_0xd8aa('0x1d')]=function(_0x59eb3f){var _0xd4d204=this;return new Promise(function(_0x1f6ab2,_0x26cff3){var _0x3696fd=require(_0xd8aa('0x1e'));var _0x19edee;return db[_0xd8aa('0x1f')][_0xd8aa('0x20')]({'attributes':['id','callRecordingEncryption'],'where':{'id':0x1},'raw':!![]})[_0xd8aa('0x1c')](function(_0x34b792){_0x19edee=_0x34b792;return db[_0xd8aa('0x15')]['create'](_0x59eb3f[_0xd8aa('0x17')]);})['then'](function(_0x3052c6){if(_0x19edee[_0xd8aa('0x21')]&&fs[_0xd8aa('0x22')](_0x3052c6[_0xd8aa('0x23')])){var _0x44f783=util[_0xd8aa('0x24')](_0xd8aa('0x25'),_0x3052c6[_0xd8aa('0x23')]);return _0x3696fd['encryptFile'](_0x3052c6[_0xd8aa('0x23')],_0x44f783,config[_0xd8aa('0x26')][_0xd8aa('0x27')])[_0xd8aa('0x1c')](function(){fs[_0xd8aa('0x28')](_0x3052c6[_0xd8aa('0x23')]);logger[_0xd8aa('0x9')](_0xd8aa('0x29'));return _0x3052c6;});}return _0x3052c6;})['then'](function(_0x265217){logger[_0xd8aa('0x9')](_0xd8aa('0x1d'),_0x59eb3f);logger['debug'](_0xd8aa('0x1d'),_0x59eb3f,JSON[_0xd8aa('0xe')](_0x265217));_0x1f6ab2(_0x265217);})[_0xd8aa('0x13')](function(_0x45c216){logger[_0xd8aa('0xf')](_0xd8aa('0x1d'),_0x45c216[_0xd8aa('0x11')],_0x59eb3f);_0x26cff3(_0xd4d204[_0xd8aa('0xf')](0x1f4,_0x45c216[_0xd8aa('0x11')]));});});};
\ No newline at end of file
index 20fc46c..6f606f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10c8=['path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','put','update','delete','destroy','multer','util'];(function(_0x5d2d3c,_0x49cb70){var _0x1f150e=function(_0xd6e363){while(--_0xd6e363){_0x5d2d3c['push'](_0x5d2d3c['shift']());}};_0x1f150e(++_0x49cb70);}(_0x10c8,0x13e));var _0x810c=function(_0x333999,_0xc287bd){_0x333999=_0x333999-0x0;var _0x448aa7=_0x10c8[_0x333999];return _0x448aa7;};'use strict';var multer=require(_0x810c('0x0'));var util=require(_0x810c('0x1'));var path=require(_0x810c('0x2'));var timeout=require(_0x810c('0x3'));var express=require(_0x810c('0x4'));var router=express['Router']();var fs_extra=require(_0x810c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x810c('0x6'));var config=require(_0x810c('0x7'));var controller=require(_0x810c('0x8'));router['get']('/',auth[_0x810c('0x9')](),controller[_0x810c('0xa')]);router[_0x810c('0xb')](_0x810c('0xc'),auth['isAuthenticated'](),controller[_0x810c('0xd')]);router['get'](_0x810c('0xe'),auth[_0x810c('0x9')](),controller[_0x810c('0xf')]);router['post']('/',auth[_0x810c('0x9')](),controller['create']);router[_0x810c('0x10')](_0x810c('0xe'),auth['isAuthenticated'](),controller[_0x810c('0x11')]);router[_0x810c('0x12')](_0x810c('0xe'),auth['isAuthenticated'](),controller[_0x810c('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xc9be=['show','post','create','put','update','delete','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x3d1644,_0x13ba89){var _0x542742=function(_0x472d9c){while(--_0x472d9c){_0x3d1644['push'](_0x3d1644['shift']());}};_0x542742(++_0x13ba89);}(_0xc9be,0x1aa));var _0xec9b=function(_0x25901d,_0x1b1c45){_0x25901d=_0x25901d-0x0;var _0x13ac4e=_0xc9be[_0x25901d];return _0x13ac4e;};'use strict';var multer=require(_0xec9b('0x0'));var util=require(_0xec9b('0x1'));var path=require(_0xec9b('0x2'));var timeout=require(_0xec9b('0x3'));var express=require(_0xec9b('0x4'));var router=express[_0xec9b('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xec9b('0x6'));var interaction=require(_0xec9b('0x7'));var config=require('../../config/environment');var controller=require(_0xec9b('0x8'));router[_0xec9b('0x9')]('/',auth[_0xec9b('0xa')](),controller[_0xec9b('0xb')]);router['get'](_0xec9b('0xc'),auth['isAuthenticated'](),controller[_0xec9b('0xd')]);router[_0xec9b('0x9')](_0xec9b('0xe'),auth[_0xec9b('0xa')](),controller[_0xec9b('0xf')]);router[_0xec9b('0x10')]('/',auth[_0xec9b('0xa')](),controller[_0xec9b('0x11')]);router[_0xec9b('0x12')](_0xec9b('0xe'),auth['isAuthenticated'](),controller[_0xec9b('0x13')]);router[_0xec9b('0x14')](_0xec9b('0xe'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index fc70a84..be5a36a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e32=['ENUM','Yes','sequelize','moment','STRING'];(function(_0x1458e2,_0x1b45c2){var _0x4d191c=function(_0x5e1696){while(--_0x5e1696){_0x1458e2['push'](_0x1458e2['shift']());}};_0x4d191c(++_0x1b45c2);}(_0x5e32,0xd4));var _0x25e3=function(_0x28e99c,_0xc4cde3){_0x28e99c=_0x28e99c-0x0;var _0x43b9d4=_0x5e32[_0x28e99c];return _0x43b9d4;};'use strict';var Sequelize=require(_0x25e3('0x0'));var moment=require(_0x25e3('0x1'));module['exports']={'type':{'type':Sequelize['ENUM']('blind','attended')},'result':{'type':Sequelize[_0x25e3('0x2')]},'transfererchannel':{'type':Sequelize[_0x25e3('0x2')]},'transferercalleridnum':{'type':Sequelize[_0x25e3('0x2')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize[_0x25e3('0x2')]},'transfererconnectedlinename':{'type':Sequelize[_0x25e3('0x2')]},'transfereraccountcode':{'type':Sequelize[_0x25e3('0x2')]},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize[_0x25e3('0x2')]},'transfereecalleridnum':{'type':Sequelize[_0x25e3('0x2')]},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize[_0x25e3('0x2')]},'transfereeconnectedlinename':{'type':Sequelize[_0x25e3('0x2')]},'transfereeaccountcode':{'type':Sequelize[_0x25e3('0x2')]},'transfereecontext':{'type':Sequelize[_0x25e3('0x2')]},'transfereeexten':{'type':Sequelize[_0x25e3('0x2')]},'transfereelinkedid':{'type':Sequelize[_0x25e3('0x2')]},'isexternal':{'type':Sequelize[_0x25e3('0x3')](_0x25e3('0x4'),'No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x25e3('0x2')]}};
\ No newline at end of file
+var _0x0865=['exports','ENUM','attended','STRING','Yes','sequelize','moment'];(function(_0x2c4361,_0x189ead){var _0x8f80a2=function(_0x15e649){while(--_0x15e649){_0x2c4361['push'](_0x2c4361['shift']());}};_0x8f80a2(++_0x189ead);}(_0x0865,0xf3));var _0x5086=function(_0x2c9820,_0x13cd27){_0x2c9820=_0x2c9820-0x0;var _0x228117=_0x0865[_0x2c9820];return _0x228117;};'use strict';var Sequelize=require(_0x5086('0x0'));var moment=require(_0x5086('0x1'));module[_0x5086('0x2')]={'type':{'type':Sequelize[_0x5086('0x3')]('blind',_0x5086('0x4'))},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize[_0x5086('0x5')]},'transferercalleridnum':{'type':Sequelize['STRING']},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize[_0x5086('0x5')]},'transfereraccountcode':{'type':Sequelize[_0x5086('0x5')]},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize[_0x5086('0x5')]},'transfererlinkedid':{'type':Sequelize[_0x5086('0x5')]},'transfereechannel':{'type':Sequelize[_0x5086('0x5')]},'transfereecalleridnum':{'type':Sequelize[_0x5086('0x5')]},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize[_0x5086('0x5')]},'transfereeconnectedlinename':{'type':Sequelize[_0x5086('0x5')]},'transfereeaccountcode':{'type':Sequelize[_0x5086('0x5')]},'transfereecontext':{'type':Sequelize[_0x5086('0x5')]},'transfereeexten':{'type':Sequelize[_0x5086('0x5')]},'transfereelinkedid':{'type':Sequelize[_0x5086('0x5')]},'isexternal':{'type':Sequelize['ENUM'](_0x5086('0x6'),'No')},'context':{'type':Sequelize[_0x5086('0x5')]},'extension':{'type':Sequelize[_0x5086('0x5')]}};
\ No newline at end of file
index 5744007..485d21f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfee4=['params','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','offset','undefined','count','limit','Content-Range','json','apply','reject','save','update','destroy','then','end','error','stack','name','send','index','map','VoiceTransferReport','type','key','query','keys','filters','intersection','attributes','model','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','rows','catch','show','fields','includeAll','find','body'];(function(_0x425594,_0x2d8c9d){var _0x37f898=function(_0x287d8f){while(--_0x287d8f){_0x425594['push'](_0x425594['shift']());}};_0x37f898(++_0x2d8c9d);}(_0xfee4,0x132));var _0x4fee=function(_0x173f74,_0x7b2e96){_0x173f74=_0x173f74-0x0;var _0x10fa3f=_0xfee4[_0x173f74];return _0x10fa3f;};'use strict';var emlformat=require(_0x4fee('0x0'));var rimraf=require(_0x4fee('0x1'));var zipdir=require(_0x4fee('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4fee('0x3'));var moment=require(_0x4fee('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4fee('0x5'));var util=require(_0x4fee('0x6'));var path=require(_0x4fee('0x7'));var sox=require(_0x4fee('0x8'));var csv=require('to-csv');var ejs=require(_0x4fee('0x9'));var fs=require('fs');var fs_extra=require(_0x4fee('0xa'));var _=require(_0x4fee('0xb'));var squel=require(_0x4fee('0xc'));var crypto=require(_0x4fee('0xd'));var jsforce=require(_0x4fee('0xe'));var deskjs=require(_0x4fee('0xf'));var toCsv=require(_0x4fee('0x10'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4fee('0x11'));var authService=require(_0x4fee('0x12'));var qs=require(_0x4fee('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4fee('0x14'));var logger=require(_0x4fee('0x15'))(_0x4fee('0x16'));var utils=require(_0x4fee('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x4fee('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xee5885,_0x42d2b9){_0x42d2b9=_0x42d2b9||0xcc;return function(_0x35c27d){if(_0x35c27d){return _0xee5885[_0x4fee('0x19')](_0x42d2b9);}return _0xee5885[_0x4fee('0x1a')](_0x42d2b9)['end']();};}function respondWithResult(_0x41e67b,_0x97108f){_0x97108f=_0x97108f||0xc8;return function(_0x5e3d9e){if(_0x5e3d9e){return _0x41e67b[_0x4fee('0x1a')](_0x97108f)['json'](_0x5e3d9e);}};}function respondWithFilteredResult(_0x443579,_0x4add9a){return function(_0x312794){if(_0x312794){var _0x8355e7=typeof _0x4add9a[_0x4fee('0x1b')]===_0x4fee('0x1c')&&typeof _0x4add9a['limit']==='undefined';var _0x39dd0d=_0x312794[_0x4fee('0x1d')];var _0xf069c4=_0x8355e7?0x0:_0x4add9a[_0x4fee('0x1b')];var _0x3a67a7=_0x8355e7?_0x312794[_0x4fee('0x1d')]:_0x4add9a[_0x4fee('0x1b')]+_0x4add9a[_0x4fee('0x1e')];var _0x5c5499;if(_0x3a67a7>=_0x39dd0d){_0x3a67a7=_0x39dd0d;_0x5c5499=0xc8;}else{_0x5c5499=0xce;}_0x443579[_0x4fee('0x1a')](_0x5c5499);return _0x443579['set'](_0x4fee('0x1f'),_0xf069c4+'-'+_0x3a67a7+'/'+_0x39dd0d)[_0x4fee('0x20')](_0x312794);}return null;};}function patchUpdates(_0x8d1b4c){return function(_0x3f7ae2){try{jsonpatch[_0x4fee('0x21')](_0x3f7ae2,_0x8d1b4c,!![]);}catch(_0x4f34e9){return BPromise[_0x4fee('0x22')](_0x4f34e9);}return _0x3f7ae2[_0x4fee('0x23')]();};}function saveUpdates(_0x4d6b62,_0x50a53b){return function(_0x5281af){if(_0x5281af){return _0x5281af[_0x4fee('0x24')](_0x4d6b62)['then'](function(_0x3634ae){return _0x3634ae;});}return null;};}function removeEntity(_0x4a3475,_0x549180){return function(_0x88c829){if(_0x88c829){return _0x88c829[_0x4fee('0x25')]()[_0x4fee('0x26')](function(){_0x4a3475[_0x4fee('0x1a')](0xcc)[_0x4fee('0x27')]();});}};}function handleEntityNotFound(_0x185465,_0x398bfe){return function(_0x578f6c){if(!_0x578f6c){_0x185465[_0x4fee('0x19')](0x194);}return _0x578f6c;};}function handleError(_0x21bef8,_0x387516){_0x387516=_0x387516||0x1f4;return function(_0x17369a){logger[_0x4fee('0x28')](_0x17369a[_0x4fee('0x29')]);if(_0x17369a[_0x4fee('0x2a')]){delete _0x17369a[_0x4fee('0x2a')];}_0x21bef8[_0x4fee('0x1a')](_0x387516)[_0x4fee('0x2b')](_0x17369a);};}exports[_0x4fee('0x2c')]=function(_0x1d5d3b,_0x271107){var _0x3a3df5={},_0x44ba4d={},_0x54dc4f={'count':0x0,'rows':[]};var _0x258978=_[_0x4fee('0x2d')](db[_0x4fee('0x2e')]['rawAttributes'],function(_0x28edd2){return{'name':_0x28edd2['fieldName'],'type':_0x28edd2[_0x4fee('0x2f')][_0x4fee('0x30')]};});_0x44ba4d['model']=_[_0x4fee('0x2d')](_0x258978,'name');_0x44ba4d[_0x4fee('0x31')]=_[_0x4fee('0x32')](_0x1d5d3b[_0x4fee('0x31')]);_0x44ba4d[_0x4fee('0x33')]=_[_0x4fee('0x34')](_0x44ba4d['model'],_0x44ba4d['query']);_0x3a3df5[_0x4fee('0x35')]=_[_0x4fee('0x34')](_0x44ba4d[_0x4fee('0x36')],qs['fields'](_0x1d5d3b['query']['fields']));_0x3a3df5[_0x4fee('0x35')]=_0x3a3df5[_0x4fee('0x35')][_0x4fee('0x37')]?_0x3a3df5['attributes']:_0x44ba4d[_0x4fee('0x36')];if(!_0x1d5d3b[_0x4fee('0x31')][_0x4fee('0x38')](_0x4fee('0x39'))){_0x3a3df5[_0x4fee('0x1e')]=qs[_0x4fee('0x1e')](_0x1d5d3b['query'][_0x4fee('0x1e')]);_0x3a3df5[_0x4fee('0x1b')]=qs[_0x4fee('0x1b')](_0x1d5d3b[_0x4fee('0x31')][_0x4fee('0x1b')]);}_0x3a3df5[_0x4fee('0x3a')]=qs[_0x4fee('0x3b')](_0x1d5d3b[_0x4fee('0x31')][_0x4fee('0x3b')]);_0x3a3df5[_0x4fee('0x3c')]=qs[_0x4fee('0x33')](_[_0x4fee('0x3d')](_0x1d5d3b[_0x4fee('0x31')],_0x44ba4d['filters']),_0x258978);if(_0x1d5d3b[_0x4fee('0x31')][_0x4fee('0x3e')]){_0x3a3df5[_0x4fee('0x3c')]=_[_0x4fee('0x3f')](_0x3a3df5[_0x4fee('0x3c')],{'$or':_[_0x4fee('0x2d')](_0x258978,function(_0x2be0d3){if(_0x2be0d3[_0x4fee('0x2f')]!=='VIRTUAL'){var _0x508450={};_0x508450[_0x2be0d3[_0x4fee('0x2a')]]={'$like':'%'+_0x1d5d3b[_0x4fee('0x31')][_0x4fee('0x3e')]+'%'};return _0x508450;}})});}_0x3a3df5=_[_0x4fee('0x3f')]({},_0x3a3df5,_0x1d5d3b[_0x4fee('0x40')]);var _0x3f4cb7={'where':_0x3a3df5[_0x4fee('0x3c')]};return db[_0x4fee('0x2e')][_0x4fee('0x1d')](_0x3f4cb7)['then'](function(_0x290ff9){_0x54dc4f[_0x4fee('0x1d')]=_0x290ff9;if(_0x1d5d3b['query']['includeAll']){_0x3a3df5[_0x4fee('0x41')]=[{'all':!![]}];}return db['VoiceTransferReport'][_0x4fee('0x42')](_0x3a3df5);})[_0x4fee('0x26')](function(_0x1e5b10){_0x54dc4f[_0x4fee('0x43')]=_0x1e5b10;return _0x54dc4f;})[_0x4fee('0x26')](respondWithFilteredResult(_0x271107,_0x3a3df5))[_0x4fee('0x44')](handleError(_0x271107,null));};exports[_0x4fee('0x45')]=function(_0x55c00e,_0x2c88be){var _0x5efc7b={'raw':!![],'where':{'id':_0x55c00e['params']['id']}},_0xa01693={};_0xa01693[_0x4fee('0x36')]=_[_0x4fee('0x32')](db[_0x4fee('0x2e')]['rawAttributes']);_0xa01693['query']=_[_0x4fee('0x32')](_0x55c00e[_0x4fee('0x31')]);_0xa01693[_0x4fee('0x33')]=_[_0x4fee('0x34')](_0xa01693['model'],_0xa01693['query']);_0x5efc7b[_0x4fee('0x35')]=_['intersection'](_0xa01693['model'],qs[_0x4fee('0x46')](_0x55c00e[_0x4fee('0x31')][_0x4fee('0x46')]));_0x5efc7b[_0x4fee('0x35')]=_0x5efc7b[_0x4fee('0x35')]['length']?_0x5efc7b['attributes']:_0xa01693[_0x4fee('0x36')];if(_0x55c00e[_0x4fee('0x31')][_0x4fee('0x47')]){_0x5efc7b[_0x4fee('0x41')]=[{'all':!![]}];}_0x5efc7b=_[_0x4fee('0x3f')]({},_0x5efc7b,_0x55c00e[_0x4fee('0x40')]);return db[_0x4fee('0x2e')][_0x4fee('0x48')](_0x5efc7b)[_0x4fee('0x26')](handleEntityNotFound(_0x2c88be,null))['then'](respondWithResult(_0x2c88be,null))[_0x4fee('0x44')](handleError(_0x2c88be,null));};exports['create']=function(_0xe7bb88,_0x140654){return db[_0x4fee('0x2e')]['create'](_0xe7bb88[_0x4fee('0x49')],{})['then'](respondWithResult(_0x140654,0xc9))['catch'](handleError(_0x140654,null));};exports[_0x4fee('0x24')]=function(_0x5904d9,_0x5c557a){if(_0x5904d9[_0x4fee('0x49')]['id']){delete _0x5904d9[_0x4fee('0x49')]['id'];}return db[_0x4fee('0x2e')]['find']({'where':{'id':_0x5904d9[_0x4fee('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5c557a,null))[_0x4fee('0x26')](saveUpdates(_0x5904d9[_0x4fee('0x49')],null))[_0x4fee('0x26')](respondWithResult(_0x5c557a,null))[_0x4fee('0x44')](handleError(_0x5c557a,null));};exports[_0x4fee('0x25')]=function(_0x270d5a,_0x180929){return db[_0x4fee('0x2e')][_0x4fee('0x48')]({'where':{'id':_0x270d5a['params']['id']}})[_0x4fee('0x26')](handleEntityNotFound(_0x180929,null))[_0x4fee('0x26')](removeEntity(_0x180929,null))[_0x4fee('0x44')](handleError(_0x180929,null));};exports[_0x4fee('0x4b')]=function(_0x11f786,_0x4240ce){return db[_0x4fee('0x2e')][_0x4fee('0x4b')]()[_0x4fee('0x26')](respondWithResult(_0x4240ce,null))[_0x4fee('0x44')](handleError(_0x4240ce,null));};
\ No newline at end of file
+var _0x2816=['api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','VoiceTransferReport','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','VIRTUAL','filter','options','findAll','rows','catch','show','params','includeAll','include','find','create','body','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x2e54d7,_0x55d659){var _0x2a3fc4=function(_0x2fee7e){while(--_0x2fee7e){_0x2e54d7['push'](_0x2e54d7['shift']());}};_0x2a3fc4(++_0x55d659);}(_0x2816,0xcf));var _0x6281=function(_0x223968,_0x1923c9){_0x223968=_0x223968-0x0;var _0x139a2d=_0x2816[_0x223968];return _0x139a2d;};'use strict';var emlformat=require(_0x6281('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x6281('0x1'));var rp=require(_0x6281('0x2'));var moment=require(_0x6281('0x3'));var BPromise=require(_0x6281('0x4'));var Mustache=require(_0x6281('0x5'));var util=require(_0x6281('0x6'));var path=require(_0x6281('0x7'));var sox=require(_0x6281('0x8'));var csv=require('to-csv');var ejs=require(_0x6281('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x6281('0xa'));var crypto=require(_0x6281('0xb'));var jsforce=require(_0x6281('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6281('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x6281('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x6281('0xf'));var hardwareService=require(_0x6281('0x10'));var logger=require(_0x6281('0x11'))(_0x6281('0x12'));var utils=require('../../config/utils');var config=require(_0x6281('0x13'));var licenseUtil=require(_0x6281('0x14'));var db=require(_0x6281('0x15'))['db'];function respondWithStatusCode(_0x5799e7,_0x1b58a0){_0x1b58a0=_0x1b58a0||0xcc;return function(_0x7c5806){if(_0x7c5806){return _0x5799e7['sendStatus'](_0x1b58a0);}return _0x5799e7[_0x6281('0x16')](_0x1b58a0)[_0x6281('0x17')]();};}function respondWithResult(_0x1cc7c8,_0x31e94f){_0x31e94f=_0x31e94f||0xc8;return function(_0x888564){if(_0x888564){return _0x1cc7c8['status'](_0x31e94f)[_0x6281('0x18')](_0x888564);}};}function respondWithFilteredResult(_0x62198,_0x5d13bf){return function(_0x45d86c){if(_0x45d86c){var _0x173f5d=typeof _0x5d13bf[_0x6281('0x19')]===_0x6281('0x1a')&&typeof _0x5d13bf[_0x6281('0x1b')]==='undefined';var _0x3485fe=_0x45d86c[_0x6281('0x1c')];var _0x25e72f=_0x173f5d?0x0:_0x5d13bf[_0x6281('0x19')];var _0x5cd4be=_0x173f5d?_0x45d86c[_0x6281('0x1c')]:_0x5d13bf[_0x6281('0x19')]+_0x5d13bf[_0x6281('0x1b')];var _0x4011bc;if(_0x5cd4be>=_0x3485fe){_0x5cd4be=_0x3485fe;_0x4011bc=0xc8;}else{_0x4011bc=0xce;}_0x62198[_0x6281('0x16')](_0x4011bc);return _0x62198[_0x6281('0x1d')](_0x6281('0x1e'),_0x25e72f+'-'+_0x5cd4be+'/'+_0x3485fe)[_0x6281('0x18')](_0x45d86c);}return null;};}function patchUpdates(_0x597b58){return function(_0x48e7eb){try{jsonpatch[_0x6281('0x1f')](_0x48e7eb,_0x597b58,!![]);}catch(_0x47de8d){return BPromise['reject'](_0x47de8d);}return _0x48e7eb[_0x6281('0x20')]();};}function saveUpdates(_0x31f664,_0x49b7c8){return function(_0x56c23b){if(_0x56c23b){return _0x56c23b[_0x6281('0x21')](_0x31f664)[_0x6281('0x22')](function(_0x8f9488){return _0x8f9488;});}return null;};}function removeEntity(_0x248a79,_0x14351c){return function(_0x382c9c){if(_0x382c9c){return _0x382c9c[_0x6281('0x23')]()['then'](function(){_0x248a79[_0x6281('0x16')](0xcc)[_0x6281('0x17')]();});}};}function handleEntityNotFound(_0x4a40de,_0x3e8c3f){return function(_0x255287){if(!_0x255287){_0x4a40de[_0x6281('0x24')](0x194);}return _0x255287;};}function handleError(_0x625b3e,_0x2dceff){_0x2dceff=_0x2dceff||0x1f4;return function(_0x54d046){logger[_0x6281('0x25')](_0x54d046[_0x6281('0x26')]);if(_0x54d046['name']){delete _0x54d046[_0x6281('0x27')];}_0x625b3e['status'](_0x2dceff)[_0x6281('0x28')](_0x54d046);};}exports[_0x6281('0x29')]=function(_0xcf9b9d,_0x2422af){var _0x434505={},_0x4d6caa={},_0x1c64df={'count':0x0,'rows':[]};var _0x5963f8=_['map'](db[_0x6281('0x2a')][_0x6281('0x2b')],function(_0x366fec){return{'name':_0x366fec[_0x6281('0x2c')],'type':_0x366fec[_0x6281('0x2d')][_0x6281('0x2e')]};});_0x4d6caa[_0x6281('0x2f')]=_['map'](_0x5963f8,_0x6281('0x27'));_0x4d6caa['query']=_[_0x6281('0x30')](_0xcf9b9d[_0x6281('0x31')]);_0x4d6caa['filters']=_[_0x6281('0x32')](_0x4d6caa[_0x6281('0x2f')],_0x4d6caa[_0x6281('0x31')]);_0x434505[_0x6281('0x33')]=_[_0x6281('0x32')](_0x4d6caa['model'],qs[_0x6281('0x34')](_0xcf9b9d[_0x6281('0x31')][_0x6281('0x34')]));_0x434505['attributes']=_0x434505['attributes'][_0x6281('0x35')]?_0x434505['attributes']:_0x4d6caa[_0x6281('0x2f')];if(!_0xcf9b9d[_0x6281('0x31')][_0x6281('0x36')](_0x6281('0x37'))){_0x434505[_0x6281('0x1b')]=qs[_0x6281('0x1b')](_0xcf9b9d[_0x6281('0x31')][_0x6281('0x1b')]);_0x434505['offset']=qs[_0x6281('0x19')](_0xcf9b9d[_0x6281('0x31')][_0x6281('0x19')]);}_0x434505[_0x6281('0x38')]=qs[_0x6281('0x39')](_0xcf9b9d[_0x6281('0x31')][_0x6281('0x39')]);_0x434505[_0x6281('0x3a')]=qs[_0x6281('0x3b')](_['pick'](_0xcf9b9d[_0x6281('0x31')],_0x4d6caa[_0x6281('0x3b')]),_0x5963f8);if(_0xcf9b9d[_0x6281('0x31')]['filter']){_0x434505[_0x6281('0x3a')]=_[_0x6281('0x3c')](_0x434505[_0x6281('0x3a')],{'$or':_['map'](_0x5963f8,function(_0x25d930){if(_0x25d930[_0x6281('0x2d')]!==_0x6281('0x3d')){var _0x2bdb7b={};_0x2bdb7b[_0x25d930[_0x6281('0x27')]]={'$like':'%'+_0xcf9b9d['query'][_0x6281('0x3e')]+'%'};return _0x2bdb7b;}})});}_0x434505=_[_0x6281('0x3c')]({},_0x434505,_0xcf9b9d[_0x6281('0x3f')]);var _0xde8b1d={'where':_0x434505[_0x6281('0x3a')]};return db[_0x6281('0x2a')][_0x6281('0x1c')](_0xde8b1d)['then'](function(_0x504d14){_0x1c64df[_0x6281('0x1c')]=_0x504d14;if(_0xcf9b9d[_0x6281('0x31')]['includeAll']){_0x434505['include']=[{'all':!![]}];}return db['VoiceTransferReport'][_0x6281('0x40')](_0x434505);})[_0x6281('0x22')](function(_0x2e6f86){_0x1c64df[_0x6281('0x41')]=_0x2e6f86;return _0x1c64df;})[_0x6281('0x22')](respondWithFilteredResult(_0x2422af,_0x434505))[_0x6281('0x42')](handleError(_0x2422af,null));};exports[_0x6281('0x43')]=function(_0xad0c8c,_0x2ba0d4){var _0xb5d87a={'raw':!![],'where':{'id':_0xad0c8c[_0x6281('0x44')]['id']}},_0x28deb9={};_0x28deb9[_0x6281('0x2f')]=_[_0x6281('0x30')](db[_0x6281('0x2a')][_0x6281('0x2b')]);_0x28deb9[_0x6281('0x31')]=_[_0x6281('0x30')](_0xad0c8c['query']);_0x28deb9[_0x6281('0x3b')]=_['intersection'](_0x28deb9[_0x6281('0x2f')],_0x28deb9[_0x6281('0x31')]);_0xb5d87a[_0x6281('0x33')]=_['intersection'](_0x28deb9[_0x6281('0x2f')],qs[_0x6281('0x34')](_0xad0c8c[_0x6281('0x31')][_0x6281('0x34')]));_0xb5d87a[_0x6281('0x33')]=_0xb5d87a[_0x6281('0x33')][_0x6281('0x35')]?_0xb5d87a[_0x6281('0x33')]:_0x28deb9[_0x6281('0x2f')];if(_0xad0c8c[_0x6281('0x31')][_0x6281('0x45')]){_0xb5d87a[_0x6281('0x46')]=[{'all':!![]}];}_0xb5d87a=_[_0x6281('0x3c')]({},_0xb5d87a,_0xad0c8c[_0x6281('0x3f')]);return db[_0x6281('0x2a')][_0x6281('0x47')](_0xb5d87a)[_0x6281('0x22')](handleEntityNotFound(_0x2ba0d4,null))[_0x6281('0x22')](respondWithResult(_0x2ba0d4,null))[_0x6281('0x42')](handleError(_0x2ba0d4,null));};exports[_0x6281('0x48')]=function(_0x504365,_0x1ef6cd){return db[_0x6281('0x2a')][_0x6281('0x48')](_0x504365[_0x6281('0x49')],{})[_0x6281('0x22')](respondWithResult(_0x1ef6cd,0xc9))[_0x6281('0x42')](handleError(_0x1ef6cd,null));};exports[_0x6281('0x21')]=function(_0x438488,_0xe955b5){if(_0x438488[_0x6281('0x49')]['id']){delete _0x438488[_0x6281('0x49')]['id'];}return db[_0x6281('0x2a')][_0x6281('0x47')]({'where':{'id':_0x438488[_0x6281('0x44')]['id']}})[_0x6281('0x22')](handleEntityNotFound(_0xe955b5,null))[_0x6281('0x22')](saveUpdates(_0x438488['body'],null))[_0x6281('0x22')](respondWithResult(_0xe955b5,null))[_0x6281('0x42')](handleError(_0xe955b5,null));};exports[_0x6281('0x23')]=function(_0xe6462a,_0x110f03){return db[_0x6281('0x2a')][_0x6281('0x47')]({'where':{'id':_0xe6462a['params']['id']}})[_0x6281('0x22')](handleEntityNotFound(_0x110f03,null))[_0x6281('0x22')](removeEntity(_0x110f03,null))[_0x6281('0x42')](handleError(_0x110f03,null));};exports[_0x6281('0x4a')]=function(_0x47f2f5,_0x4f7796){return db[_0x6281('0x2a')][_0x6281('0x4a')]()['then'](respondWithResult(_0x4f7796,null))[_0x6281('0x42')](handleError(_0x4f7796,null));};
\ No newline at end of file
index 7996576..fb9d77d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccb6=['../../config/environment','./voiceTransferReport.attributes','define','report_call_transfer','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x39ba3c,_0x318beb){var _0x6ba38f=function(_0x50f1c9){while(--_0x50f1c9){_0x39ba3c['push'](_0x39ba3c['shift']());}};_0x6ba38f(++_0x318beb);}(_0xccb6,0x178));var _0x6ccb=function(_0x46bf45,_0x201aaf){_0x46bf45=_0x46bf45-0x0;var _0x10cdc3=_0xccb6[_0x46bf45];return _0x10cdc3;};'use strict';var _=require(_0x6ccb('0x0'));var util=require(_0x6ccb('0x1'));var logger=require(_0x6ccb('0x2'))(_0x6ccb('0x3'));var moment=require(_0x6ccb('0x4'));var BPromise=require(_0x6ccb('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6ccb('0x6'));var rimraf=require(_0x6ccb('0x7'));var config=require(_0x6ccb('0x8'));var attributes=require(_0x6ccb('0x9'));module['exports']=function(_0x1df313,_0x21a382){return _0x1df313[_0x6ccb('0xa')]('VoiceTransferReport',attributes,{'tableName':_0x6ccb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb38c=['bluebird','request-promise','rimraf','define','report_call_transfer','lodash','util','../../config/logger','api','moment'];(function(_0x45069f,_0x2d9a48){var _0x1710a1=function(_0x6d3145){while(--_0x6d3145){_0x45069f['push'](_0x45069f['shift']());}};_0x1710a1(++_0x2d9a48);}(_0xb38c,0x13b));var _0xcb38=function(_0x4e11d5,_0x1ce514){_0x4e11d5=_0x4e11d5-0x0;var _0x5e4e4c=_0xb38c[_0x4e11d5];return _0x5e4e4c;};'use strict';var _=require(_0xcb38('0x0'));var util=require(_0xcb38('0x1'));var logger=require(_0xcb38('0x2'))(_0xcb38('0x3'));var moment=require(_0xcb38('0x4'));var BPromise=require(_0xcb38('0x5'));var rp=require(_0xcb38('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcb38('0x7'));var config=require('../../config/environment');var attributes=require('./voiceTransferReport.attributes');module['exports']=function(_0x4dc06d,_0xe341ff){return _0x4dc06d[_0xcb38('0x8')]('VoiceTransferReport',attributes,{'tableName':_0xcb38('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 84d5bdc..26386a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56e5=['bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','VoiceTransferReport,\x20%s,\x20%s','VoiceTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message','result','catch','VoiceTransferReport','body','options','raw','then','CreateVoiceTransferReport','stringify','lodash','util','moment'];(function(_0x58db4e,_0x439d8d){var _0x40139a=function(_0x34cae4){while(--_0x34cae4){_0x58db4e['push'](_0x58db4e['shift']());}};_0x40139a(++_0x439d8d);}(_0x56e5,0x131));var _0x556e=function(_0x3a3500,_0x37c562){_0x3a3500=_0x3a3500-0x0;var _0x84a50d=_0x56e5[_0x3a3500];return _0x84a50d;};'use strict';var _=require(_0x556e('0x0'));var util=require(_0x556e('0x1'));var moment=require(_0x556e('0x2'));var BPromise=require(_0x556e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x556e('0x4'));var logger=require(_0x556e('0x5'))(_0x556e('0x6'));var config=require(_0x556e('0x7'));var jayson=require(_0x556e('0x8'));var client=jayson[_0x556e('0x9')][_0x556e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x393fbc,_0x102e05,_0x137b2c){return new BPromise(function(_0x3f831a,_0x264510){return client[_0x556e('0xb')](_0x393fbc,_0x137b2c)['then'](function(_0xf8cd7){logger[_0x556e('0xc')](_0x556e('0xd'),_0x102e05,'request\x20sent');logger['debug'](_0x556e('0xe'),_0x102e05,_0x556e('0xf'),JSON['stringify'](_0xf8cd7));if(_0xf8cd7['error']){if(_0xf8cd7['error'][_0x556e('0x10')]===0x1f4){logger[_0x556e('0x11')](_0x556e('0xd'),_0x102e05,_0xf8cd7['error'][_0x556e('0x12')]);return _0x264510(_0xf8cd7[_0x556e('0x11')]['message']);}logger[_0x556e('0x11')]('VoiceTransferReport,\x20%s,\x20%s',_0x102e05,_0xf8cd7['error'][_0x556e('0x12')]);return _0x3f831a(_0xf8cd7[_0x556e('0x11')][_0x556e('0x12')]);}else{logger[_0x556e('0xc')](_0x556e('0xd'),_0x102e05,_0x556e('0xf'));_0x3f831a(_0xf8cd7[_0x556e('0x13')][_0x556e('0x12')]);}})[_0x556e('0x14')](function(_0x3d5c36){logger[_0x556e('0x11')]('VoiceTransferReport,\x20%s,\x20%s',_0x102e05,_0x3d5c36);_0x264510(_0x3d5c36);});});}exports['CreateVoiceTransferReport']=function(_0x16cf7f){var _0x209116=this;return new Promise(function(_0x108b46,_0x496bf0){return db[_0x556e('0x15')]['create'](_0x16cf7f[_0x556e('0x16')],{'raw':_0x16cf7f[_0x556e('0x17')]?_0x16cf7f['options'][_0x556e('0x18')]===undefined?!![]:![]:!![]})[_0x556e('0x19')](function(_0x3cc29d){logger['info'](_0x556e('0x1a'),_0x16cf7f);logger['debug']('CreateVoiceTransferReport',_0x16cf7f,JSON[_0x556e('0x1b')](_0x3cc29d));_0x108b46(_0x3cc29d);})[_0x556e('0x14')](function(_0x1e3254){logger[_0x556e('0x11')](_0x556e('0x1a'),_0x1e3254[_0x556e('0x12')],_0x16cf7f);_0x496bf0(_0x209116[_0x556e('0x11')](0x1f4,_0x1e3254[_0x556e('0x12')]));});});};
\ No newline at end of file
+var _0xc45a=['then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','VoiceTransferReport','create','body','options','raw','CreateVoiceTransferReport','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http'];(function(_0x55b838,_0x421b19){var _0x1040a6=function(_0x2f1c9b){while(--_0x2f1c9b){_0x55b838['push'](_0x55b838['shift']());}};_0x1040a6(++_0x421b19);}(_0xc45a,0x66));var _0xac45=function(_0x3a5588,_0x5c7383){_0x3a5588=_0x3a5588-0x0;var _0x1fe1ac=_0xc45a[_0x3a5588];return _0x1fe1ac;};'use strict';var _=require('lodash');var util=require(_0xac45('0x0'));var moment=require('moment');var BPromise=require(_0xac45('0x1'));var rs=require(_0xac45('0x2'));var fs=require('fs');var Redis=require(_0xac45('0x3'));var db=require(_0xac45('0x4'))['db'];var utils=require(_0xac45('0x5'));var logger=require(_0xac45('0x6'))('rpc');var config=require(_0xac45('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xac45('0x8')][_0xac45('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2046e5,_0x59897e,_0x7cb494){return new BPromise(function(_0x340e80,_0x1b3b68){return client['request'](_0x2046e5,_0x7cb494)[_0xac45('0xa')](function(_0x25655f){logger[_0xac45('0xb')](_0xac45('0xc'),_0x59897e,_0xac45('0xd'));logger[_0xac45('0xe')](_0xac45('0xf'),_0x59897e,_0xac45('0xd'),JSON[_0xac45('0x10')](_0x25655f));if(_0x25655f[_0xac45('0x11')]){if(_0x25655f[_0xac45('0x11')][_0xac45('0x12')]===0x1f4){logger[_0xac45('0x11')](_0xac45('0xc'),_0x59897e,_0x25655f[_0xac45('0x11')][_0xac45('0x13')]);return _0x1b3b68(_0x25655f[_0xac45('0x11')][_0xac45('0x13')]);}logger[_0xac45('0x11')](_0xac45('0xc'),_0x59897e,_0x25655f['error'][_0xac45('0x13')]);return _0x340e80(_0x25655f[_0xac45('0x11')][_0xac45('0x13')]);}else{logger[_0xac45('0xb')](_0xac45('0xc'),_0x59897e,_0xac45('0xd'));_0x340e80(_0x25655f[_0xac45('0x14')][_0xac45('0x13')]);}})[_0xac45('0x15')](function(_0x6191d0){logger['error'](_0xac45('0xc'),_0x59897e,_0x6191d0);_0x1b3b68(_0x6191d0);});});}exports['CreateVoiceTransferReport']=function(_0x312303){var _0xc92804=this;return new Promise(function(_0x468003,_0x2ccc01){return db[_0xac45('0x16')][_0xac45('0x17')](_0x312303[_0xac45('0x18')],{'raw':_0x312303[_0xac45('0x19')]?_0x312303[_0xac45('0x19')][_0xac45('0x1a')]===undefined?!![]:![]:!![]})[_0xac45('0xa')](function(_0x3d402d){logger[_0xac45('0xb')](_0xac45('0x1b'),_0x312303);logger[_0xac45('0xe')](_0xac45('0x1b'),_0x312303,JSON[_0xac45('0x10')](_0x3d402d));_0x468003(_0x3d402d);})['catch'](function(_0x3d1914){logger['error'](_0xac45('0x1b'),_0x3d1914[_0xac45('0x13')],_0x312303);_0x2ccc01(_0xc92804['error'](0x1f4,_0x3d1914[_0xac45('0x13')]));});});};
\ No newline at end of file
index 57a5978..9689c1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb81f=['/calls','calls','/transfer','transfer','express','Router','../../components/auth/service','post','/originate','canUpdate','isAuthenticated','hangup','answer','/hold','hold'];(function(_0x3666ef,_0x151024){var _0xc5226e=function(_0x3d82f0){while(--_0x3d82f0){_0x3666ef['push'](_0x3666ef['shift']());}};_0xc5226e(++_0x151024);}(_0xb81f,0xa9));var _0xfb81=function(_0x3d2881,_0x54f08c){_0x3d2881=_0x3d2881-0x0;var _0xedb22b=_0xb81f[_0x3d2881];return _0xedb22b;};'use strict';var express=require(_0xfb81('0x0'));var router=express[_0xfb81('0x1')]();var auth=require(_0xfb81('0x2'));var controller=require('./webbar.controller');router[_0xfb81('0x3')](_0xfb81('0x4'),auth['isAuthenticated'](),auth[_0xfb81('0x5')](),controller['originate']);router[_0xfb81('0x3')]('/hangup',auth[_0xfb81('0x6')](),auth[_0xfb81('0x5')](),controller[_0xfb81('0x7')]);router[_0xfb81('0x3')]('/answer',auth[_0xfb81('0x6')](),auth['canUpdate'](),controller[_0xfb81('0x8')]);router['post'](_0xfb81('0x9'),auth['isAuthenticated'](),auth[_0xfb81('0x5')](),controller[_0xfb81('0xa')]);router['post']('/unhold',auth[_0xfb81('0x6')](),auth[_0xfb81('0x5')](),controller['unhold']);router['post'](_0xfb81('0xb'),auth[_0xfb81('0x6')](),auth['canUpdate'](),controller[_0xfb81('0xc')]);router[_0xfb81('0x3')](_0xfb81('0xd'),auth['isAuthenticated'](),auth[_0xfb81('0x5')](),controller[_0xfb81('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x0ad0=['calls','transfer','exports','express','Router','../../components/auth/service','./webbar.controller','post','/originate','isAuthenticated','canUpdate','originate','/hangup','hangup','/answer','answer','/hold','hold','unhold'];(function(_0x5d6bdd,_0x4a2dbe){var _0x3f2fd0=function(_0x5a9646){while(--_0x5a9646){_0x5d6bdd['push'](_0x5d6bdd['shift']());}};_0x3f2fd0(++_0x4a2dbe);}(_0x0ad0,0x120));var _0x00ad=function(_0x5f0bcb,_0x572ee9){_0x5f0bcb=_0x5f0bcb-0x0;var _0x1f3b04=_0x0ad0[_0x5f0bcb];return _0x1f3b04;};'use strict';var express=require(_0x00ad('0x0'));var router=express[_0x00ad('0x1')]();var auth=require(_0x00ad('0x2'));var controller=require(_0x00ad('0x3'));router[_0x00ad('0x4')](_0x00ad('0x5'),auth[_0x00ad('0x6')](),auth[_0x00ad('0x7')](),controller[_0x00ad('0x8')]);router[_0x00ad('0x4')](_0x00ad('0x9'),auth[_0x00ad('0x6')](),auth[_0x00ad('0x7')](),controller[_0x00ad('0xa')]);router[_0x00ad('0x4')](_0x00ad('0xb'),auth['isAuthenticated'](),auth[_0x00ad('0x7')](),controller[_0x00ad('0xc')]);router[_0x00ad('0x4')](_0x00ad('0xd'),auth[_0x00ad('0x6')](),auth[_0x00ad('0x7')](),controller[_0x00ad('0xe')]);router[_0x00ad('0x4')]('/unhold',auth['isAuthenticated'](),auth[_0x00ad('0x7')](),controller[_0x00ad('0xf')]);router['post']('/calls',auth['isAuthenticated'](),auth[_0x00ad('0x7')](),controller[_0x00ad('0x10')]);router[_0x00ad('0x4')]('/transfer',auth[_0x00ad('0x6')](),auth[_0x00ad('0x7')](),controller[_0x00ad('0x11')]);module[_0x00ad('0x12')]=router;
\ No newline at end of file
index 683bd2e..64ab1f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf403=['answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','conference\x20fired:','conference\x20executed!','transfer','transfer\x20fired:','transfer\x20executed!','path','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','redis','defaults','localhost','userId\x20is\x20required','string','callNumber\x20is\x20required','number','transferNumber\x20is\x20required','stringify','emit','log','error','stack','name','status','send','NotFound','request','then','code','result','User','findOne','agent','VoiceChannels','all','filter','rows','UserId','sessionId','length','sessionId\x20','originate','info','originate\x20fired:','validate','body','json','userId','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','originate\x20executed!','catch','hangup'];(function(_0x3f4c7a,_0x510df5){var _0x13367f=function(_0x4a93d6){while(--_0x4a93d6){_0x3f4c7a['push'](_0x3f4c7a['shift']());}};_0x13367f(++_0x510df5);}(_0xf403,0x1d3));var _0x3f40=function(_0x449aba,_0x3205bb){_0x449aba=_0x449aba-0x0;var _0xb6b9cc=_0xf403[_0x449aba];return _0xb6b9cc;};'use strict';var path=require(_0x3f40('0x0'));var fs=require('fs');var _=require('lodash');var db=require(_0x3f40('0x1'))['db'];var config=require(_0x3f40('0x2'));var util=require(_0x3f40('0x3'));var BPromise=require(_0x3f40('0x4'));var jayson=require(_0x3f40('0x5'));var amiClient=jayson[_0x3f40('0x6')][_0x3f40('0x7')]({'port':0x232a});var logger=require(_0x3f40('0x8'))('webbarapi');var Redis=require('ioredis');config[_0x3f40('0x9')]=_[_0x3f40('0xa')](config[_0x3f40('0x9')],{'host':_0x3f40('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3f40('0x9')]));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0x3f40('0xc')]},'callNumber':{'type':_0x3f40('0xd'),'required':[!![],_0x3f40('0xe')]},'callerId':{'type':'string'},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0x3f40('0xf'),'required':[!![],_0x3f40('0xc')]},'sessionId':{'type':_0x3f40('0xd'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0x3f40('0xc')]},'sessionId':{'type':_0x3f40('0xd'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x3f40('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x3f40('0xd'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x3f40('0xd'),'required':[!![],_0x3f40('0x10')]}});var holdValidation=new Schema({'userId':{'type':_0x3f40('0xf'),'required':[!![],_0x3f40('0xc')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x3f40('0xf'),'required':[!![],_0x3f40('0xc')]},'sessionId':{'type':_0x3f40('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x3f40('0xf'),'required':[!![],_0x3f40('0xc')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0x3f40('0xc')]}});function emit(_0x3d11c9,_0x535f85,_0x4ef80e){logger['info'](_0x3d11c9,_0x535f85,JSON[_0x3f40('0x11')](_0x4ef80e));io['to'](_0x3d11c9)[_0x3f40('0x12')](_0x535f85,_0x4ef80e);}function handleError(_0x59718c){return function(_0x131e55){console[_0x3f40('0x13')]('handleError:',_0x131e55,_0x131e55 instanceof RangeError);logger[_0x3f40('0x14')](_0x131e55[_0x3f40('0x15')]);if(_0x131e55 instanceof RangeError){if(_0x131e55[_0x3f40('0x16')]){delete _0x131e55[_0x3f40('0x16')];}_0x59718c[_0x3f40('0x17')](0x194)['send'](_0x131e55);}else{if(_0x131e55[_0x3f40('0x16')]){delete _0x131e55['name'];}_0x59718c[_0x3f40('0x17')](0x1f4)[_0x3f40('0x18')](_0x131e55);}};}function checkError(){return function(_0x3f4a93){if(!_0x3f4a93){throw new RangeError(_0x3f40('0x19'));}return _0x3f4a93;};}function respondWithRpcPromise(_0x628816,_0x4aa559){return new BPromise(function(_0x27f5a5,_0x379b4e){var _0x117823=amiClient;return _0x117823[_0x3f40('0x1a')](_0x628816,_0x4aa559)[_0x3f40('0x1b')](function(_0xa1f39d){if(_0xa1f39d['error']){if(_0xa1f39d[_0x3f40('0x14')][_0x3f40('0x1c')]===0x1f4){return _0x379b4e(_0xa1f39d[_0x3f40('0x14')]['message']);}return _0x27f5a5(_0xa1f39d[_0x3f40('0x14')]['message']);}else{_0x27f5a5(_0xa1f39d[_0x3f40('0x1d')]);}})['catch'](function(_0x4b206b){_0x379b4e(_0x4b206b);});});}function getAgent(_0x4b0ade){return db[_0x3f40('0x1e')][_0x3f40('0x1f')]({'where':{'id':_0x4b0ade,'role':_0x3f40('0x20')}})[_0x3f40('0x1b')](checkError());}function getAgentCheckSession(_0x5b1079,_0x300665){return new BPromise(function(_0x47ec1c,_0x319997){var _0xbaf5d4=respondWithRpcPromise(_0x3f40('0x21'));var _0x5e0f25=getAgent(_0x5b1079);Promise[_0x3f40('0x22')]([_0xbaf5d4,_0x5e0f25])['then'](function(_0x1cab5c){var _0x5b9079=_0x1cab5c[0x0];var _0x49057b=_0x1cab5c[0x1];var _0xb6ab4d=_[_0x3f40('0x23')](_0x5b9079[_0x3f40('0x24')],function(_0xb23186){return _0xb23186[_0x3f40('0x25')]==_0x49057b['id']&&_0xb23186[_0x3f40('0x26')]==_0x300665;});if(_0xb6ab4d[_0x3f40('0x27')]==0x1){_0x47ec1c(_0x49057b);}else{_0x319997(new RangeError(_0x3f40('0x28')+_0x300665+'\x20not\x20found!'));}});});}exports[_0x3f40('0x29')]=function(_0x2d2624,_0x18dbb3){logger[_0x3f40('0x2a')](_0x3f40('0x2b'),_0x2d2624['body']);var _0x42b6b4=originateValidation[_0x3f40('0x2c')](_0x2d2624[_0x3f40('0x2d')]);if(_0x42b6b4['length']>0x0){return _0x18dbb3[_0x3f40('0x17')](0x190)[_0x3f40('0x2e')](_0x42b6b4);}var _0x239fd5=_0x2d2624[_0x3f40('0x2d')][_0x3f40('0x2f')];var _0x323908=_0x2d2624[_0x3f40('0x2d')][_0x3f40('0x30')];var _0x10356d=_0x2d2624[_0x3f40('0x2d')][_0x3f40('0x31')];var _0x25399a=_0x2d2624[_0x3f40('0x2d')][_0x3f40('0x32')];return getAgent(_0x239fd5)[_0x3f40('0x1b')](function(_0xf26a2f){logger[_0x3f40('0x2a')](_0x3f40('0x33'),_0xf26a2f[_0x3f40('0x16')]);emit(util[_0x3f40('0x34')](_0x3f40('0x35'),_0xf26a2f[_0x3f40('0x16')]),_0x3f40('0x36'),{'callNumber':_0x323908,'callerId':_0x10356d,'callbackUrl':_0x25399a});return _0x18dbb3[_0x3f40('0x17')](0xc8)[_0x3f40('0x2e')]({'error':![],'message':_0x3f40('0x37')});})[_0x3f40('0x38')](handleError(_0x18dbb3));};exports[_0x3f40('0x39')]=function(_0x411c98,_0x2df15b){logger['info']('hangup\x20fired:',_0x411c98[_0x3f40('0x2d')]);var _0x1b005e=hangupValidation[_0x3f40('0x2c')](_0x411c98[_0x3f40('0x2d')]);if(_0x1b005e[_0x3f40('0x27')]>0x0){return _0x2df15b[_0x3f40('0x17')](0x190)[_0x3f40('0x2e')](_0x1b005e);}var _0x4de3e7=_0x411c98[_0x3f40('0x2d')]['userId'];var _0x229bff=_0x411c98[_0x3f40('0x2d')][_0x3f40('0x26')];return getAgent(_0x4de3e7)['then'](function(_0x37a83d){logger[_0x3f40('0x2a')]('entityFound:',_0x37a83d[_0x3f40('0x16')]);emit(util[_0x3f40('0x34')]('user:%s',_0x37a83d[_0x3f40('0x16')]),'webbar:hangup',{'sessionId':_0x229bff});return _0x2df15b[_0x3f40('0x17')](0xc8)['json']({'error':![],'message':'hangup\x20executed!'});})[_0x3f40('0x38')](handleError(_0x2df15b));};exports['answer']=function(_0x2210bc,_0xe04271){logger[_0x3f40('0x2a')](_0x3f40('0x3a'),_0x2210bc['body']);var _0x237c91=answerValidation['validate'](_0x2210bc[_0x3f40('0x2d')]);if(_0x237c91[_0x3f40('0x27')]>0x0){return _0xe04271[_0x3f40('0x17')](0x190)['json'](_0x237c91);}var _0x4a198d=_0x2210bc[_0x3f40('0x2d')][_0x3f40('0x2f')];var _0x41bd93=_0x2210bc[_0x3f40('0x2d')][_0x3f40('0x26')];return getAgent(_0x4a198d)[_0x3f40('0x1b')](function(_0x38c5d6){logger[_0x3f40('0x2a')]('entityFound:',_0x38c5d6[_0x3f40('0x16')]);emit(util['format']('user:%s',_0x38c5d6[_0x3f40('0x16')]),_0x3f40('0x3b'),{'sessionId':_0x41bd93});return _0xe04271[_0x3f40('0x17')](0xc8)[_0x3f40('0x2e')]({'error':![],'message':_0x3f40('0x3c')});})[_0x3f40('0x38')](handleError(_0xe04271));};exports[_0x3f40('0x3d')]=function(_0x3d6cf8,_0x1cc958){logger[_0x3f40('0x2a')](_0x3f40('0x3e'),_0x3d6cf8[_0x3f40('0x2d')]);var _0x2068ab=holdValidation[_0x3f40('0x2c')](_0x3d6cf8['body']);if(_0x2068ab[_0x3f40('0x27')]>0x0){return _0x1cc958['status'](0x190)[_0x3f40('0x2e')](_0x2068ab);}var _0x2f16d6=_0x3d6cf8['body'][_0x3f40('0x2f')];var _0x1f66fa=_0x3d6cf8[_0x3f40('0x2d')][_0x3f40('0x26')];return getAgent(_0x2f16d6)[_0x3f40('0x1b')](function(_0x268ae4){logger[_0x3f40('0x2a')](_0x3f40('0x33'),_0x268ae4[_0x3f40('0x16')]);emit(util[_0x3f40('0x34')](_0x3f40('0x35'),_0x268ae4[_0x3f40('0x16')]),_0x3f40('0x3f'),{'sessionId':_0x1f66fa});return _0x1cc958[_0x3f40('0x17')](0xc8)[_0x3f40('0x2e')]({'error':![],'message':_0x3f40('0x40')});})[_0x3f40('0x38')](handleError(_0x1cc958));};exports[_0x3f40('0x41')]=function(_0x32bd05,_0x2d7e66){logger[_0x3f40('0x2a')]('unhold\x20fired:',_0x32bd05[_0x3f40('0x2d')]);var _0x50db96=unholdValidation[_0x3f40('0x2c')](_0x32bd05[_0x3f40('0x2d')]);if(_0x50db96[_0x3f40('0x27')]>0x0){return _0x2d7e66['status'](0x190)['json'](_0x50db96);}var _0x54b7cd=_0x32bd05[_0x3f40('0x2d')][_0x3f40('0x2f')];var _0x5f4f1a=_0x32bd05[_0x3f40('0x2d')][_0x3f40('0x26')];return getAgent(_0x54b7cd)['then'](function(_0x1cd70d){logger['info'](_0x3f40('0x33'),_0x1cd70d[_0x3f40('0x16')]);emit(util[_0x3f40('0x34')](_0x3f40('0x35'),_0x1cd70d[_0x3f40('0x16')]),_0x3f40('0x42'),{'sessionId':_0x5f4f1a});return _0x2d7e66[_0x3f40('0x17')](0xc8)[_0x3f40('0x2e')]({'error':![],'message':_0x3f40('0x43')});})[_0x3f40('0x38')](handleError(_0x2d7e66));};exports[_0x3f40('0x44')]=function(_0x13f191,_0x109752){logger['info'](_0x3f40('0x45'),_0x109752[_0x3f40('0x2d')]);var _0x1c94a1=callsValidation[_0x3f40('0x2c')](_0x13f191[_0x3f40('0x2d')]);if(_0x1c94a1['length']>0x0){return _0x109752[_0x3f40('0x17')](0x190)[_0x3f40('0x2e')](_0x1c94a1);}var _0x1c4b44=_0x13f191[_0x3f40('0x2d')][_0x3f40('0x2f')];var _0x5c030a=respondWithRpcPromise('VoiceChannels');var _0x6c81fe=getAgent(_0x1c4b44);return Promise[_0x3f40('0x22')]([_0x5c030a,_0x6c81fe])['then'](function(_0x701ed0){var _0x5a3456=_0x701ed0[0x0];var _0x204cff=_0x701ed0[0x1];var _0x557c0c=_[_0x3f40('0x23')](_0x5a3456['rows'],function(_0xab34b){return _0xab34b[_0x3f40('0x25')]==_0x204cff['id'];});return _0x109752[_0x3f40('0x17')](0xc8)['json']({'count':_0x557c0c['length'],'rows':_0x557c0c});})['catch'](handleError(_0x109752));};exports['conference']=function(_0x273739,_0x4e1c35){logger['info'](_0x3f40('0x46'),_0x273739[_0x3f40('0x2d')]);var _0x37f636=conferenceValidation[_0x3f40('0x2c')](_0x273739['body']);if(_0x37f636[_0x3f40('0x27')]>0x0){return _0x4e1c35['status'](0x190)['json'](_0x37f636);}var _0x48b0ed=_0x273739[_0x3f40('0x2d')]['userId'];return getAgent(_0x48b0ed)['then'](function(_0x45d7e5){logger[_0x3f40('0x2a')](_0x3f40('0x33'),_0x45d7e5[_0x3f40('0x16')]);emit(util[_0x3f40('0x34')]('user:%s',_0x45d7e5[_0x3f40('0x16')]),'webbar:conference');return _0x4e1c35[_0x3f40('0x17')](0xc8)[_0x3f40('0x2e')]({'error':![],'message':_0x3f40('0x47')});})['catch'](handleError(_0x4e1c35));};exports[_0x3f40('0x48')]=function(_0x2408f4,_0x46821c){logger[_0x3f40('0x2a')](_0x3f40('0x49'),_0x2408f4['body']);var _0x2f76a1=transferValidation[_0x3f40('0x2c')](_0x2408f4[_0x3f40('0x2d')]);if(_0x2f76a1[_0x3f40('0x27')]>0x0){return _0x46821c[_0x3f40('0x17')](0x190)[_0x3f40('0x2e')](_0x2f76a1);}var _0x29fdfc=_0x2408f4[_0x3f40('0x2d')][_0x3f40('0x2f')];var _0x37add1=_0x2408f4[_0x3f40('0x2d')][_0x3f40('0x26')];var _0x52c075=_0x2408f4['body']['transferNumber'];return getAgent(_0x29fdfc)[_0x3f40('0x1b')](function(_0x137cd8){logger[_0x3f40('0x2a')](_0x3f40('0x33'),_0x137cd8[_0x3f40('0x16')]);emit(util[_0x3f40('0x34')]('user:%s',_0x137cd8[_0x3f40('0x16')]),'webbar:transfer',{'sessionId':_0x37add1,'transferNumber':_0x52c075});return _0x46821c[_0x3f40('0x17')](0xc8)[_0x3f40('0x2e')]({'error':![],'message':_0x3f40('0x4a')});})[_0x3f40('0x38')](handleError(_0x46821c));};
\ No newline at end of file
+var _0xb43b=['localhost','socket.io-emitter','redis','validate','number','string','callNumber\x20is\x20required','userId\x20is\x20required','emit','handleError:','stack','name','send','status','request','error','code','result','catch','User','findOne','agent','VoiceChannels','all','then','filter','rows','sessionId','originate','info','originate\x20fired:','body','length','json','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','userId','hangup\x20executed!','answer\x20fired:','webbar:answer','answer\x20executed!','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','unhold\x20executed!','calls','calls\x20fired:','UserId','conference\x20fired:','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../config/environment','util','bluebird','client','http','../../config/logger','webbarapi','defaults'];(function(_0x541730,_0x430d10){var _0x7970c7=function(_0x2c7d5d){while(--_0x2c7d5d){_0x541730['push'](_0x541730['shift']());}};_0x7970c7(++_0x430d10);}(_0xb43b,0x1b2));var _0xbb43=function(_0x28a2d2,_0x45aff8){_0x28a2d2=_0x28a2d2-0x0;var _0x5d33eb=_0xb43b[_0x28a2d2];return _0x5d33eb;};'use strict';var path=require(_0xbb43('0x0'));var fs=require('fs');var _=require(_0xbb43('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0xbb43('0x2'));var util=require(_0xbb43('0x3'));var BPromise=require(_0xbb43('0x4'));var jayson=require('jayson/promise');var amiClient=jayson[_0xbb43('0x5')][_0xbb43('0x6')]({'port':0x232a});var logger=require(_0xbb43('0x7'))(_0xbb43('0x8'));var Redis=require('ioredis');config['redis']=_[_0xbb43('0x9')](config['redis'],{'host':_0xbb43('0xa'),'port':0x18eb});var io=require(_0xbb43('0xb'))(new Redis(config[_0xbb43('0xc')]));var Schema=require(_0xbb43('0xd'));var originateValidation=new Schema({'userId':{'type':_0xbb43('0xe'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0xbb43('0xf'),'required':[!![],_0xbb43('0x10')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xbb43('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0xbb43('0xe'),'required':[!![],_0xbb43('0x11')]},'sessionId':{'type':_0xbb43('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xbb43('0xe'),'required':[!![],_0xbb43('0x11')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0xbb43('0xe'),'required':[!![],_0xbb43('0x11')]},'sessionId':{'type':'string','required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0xbb43('0xf'),'required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xbb43('0x11')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xbb43('0xe'),'required':[!![],_0xbb43('0x11')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':_0xbb43('0xe'),'required':[!![],_0xbb43('0x11')]}});function emit(_0x57bd1d,_0x526330,_0x202980){logger['info'](_0x57bd1d,_0x526330,JSON['stringify'](_0x202980));io['to'](_0x57bd1d)[_0xbb43('0x12')](_0x526330,_0x202980);}function handleError(_0x8242ab){return function(_0x2e3b43){console['log'](_0xbb43('0x13'),_0x2e3b43,_0x2e3b43 instanceof RangeError);logger['error'](_0x2e3b43[_0xbb43('0x14')]);if(_0x2e3b43 instanceof RangeError){if(_0x2e3b43[_0xbb43('0x15')]){delete _0x2e3b43['name'];}_0x8242ab['status'](0x194)[_0xbb43('0x16')](_0x2e3b43);}else{if(_0x2e3b43[_0xbb43('0x15')]){delete _0x2e3b43[_0xbb43('0x15')];}_0x8242ab[_0xbb43('0x17')](0x1f4)['send'](_0x2e3b43);}};}function checkError(){return function(_0x40a650){if(!_0x40a650){throw new RangeError('NotFound');}return _0x40a650;};}function respondWithRpcPromise(_0x3a257d,_0x4bfaca){return new BPromise(function(_0x2f5e31,_0x565256){var _0x3f323e=amiClient;return _0x3f323e[_0xbb43('0x18')](_0x3a257d,_0x4bfaca)['then'](function(_0x1d0768){if(_0x1d0768['error']){if(_0x1d0768[_0xbb43('0x19')][_0xbb43('0x1a')]===0x1f4){return _0x565256(_0x1d0768[_0xbb43('0x19')]['message']);}return _0x2f5e31(_0x1d0768['error']['message']);}else{_0x2f5e31(_0x1d0768[_0xbb43('0x1b')]);}})[_0xbb43('0x1c')](function(_0x5d8310){_0x565256(_0x5d8310);});});}function getAgent(_0x3b3083){return db[_0xbb43('0x1d')][_0xbb43('0x1e')]({'where':{'id':_0x3b3083,'role':_0xbb43('0x1f')}})['then'](checkError());}function getAgentCheckSession(_0x4b5342,_0x27fd7a){return new BPromise(function(_0x42800f,_0xa88db0){var _0x8b3205=respondWithRpcPromise(_0xbb43('0x20'));var _0x40b04b=getAgent(_0x4b5342);Promise[_0xbb43('0x21')]([_0x8b3205,_0x40b04b])[_0xbb43('0x22')](function(_0x539730){var _0x2ad6da=_0x539730[0x0];var _0x56fe33=_0x539730[0x1];var _0x31fbc8=_[_0xbb43('0x23')](_0x2ad6da[_0xbb43('0x24')],function(_0x1880cd){return _0x1880cd['UserId']==_0x56fe33['id']&&_0x1880cd[_0xbb43('0x25')]==_0x27fd7a;});if(_0x31fbc8['length']==0x1){_0x42800f(_0x56fe33);}else{_0xa88db0(new RangeError('sessionId\x20'+_0x27fd7a+'\x20not\x20found!'));}});});}exports[_0xbb43('0x26')]=function(_0x573a05,_0xa7e144){logger[_0xbb43('0x27')](_0xbb43('0x28'),_0x573a05['body']);var _0x205011=originateValidation[_0xbb43('0xd')](_0x573a05[_0xbb43('0x29')]);if(_0x205011[_0xbb43('0x2a')]>0x0){return _0xa7e144[_0xbb43('0x17')](0x190)[_0xbb43('0x2b')](_0x205011);}var _0x3de482=_0x573a05[_0xbb43('0x29')]['userId'];var _0x2109aa=_0x573a05[_0xbb43('0x29')][_0xbb43('0x2c')];var _0x244d66=_0x573a05[_0xbb43('0x29')][_0xbb43('0x2d')];var _0x1eae09=_0x573a05[_0xbb43('0x29')][_0xbb43('0x2e')];return getAgent(_0x3de482)[_0xbb43('0x22')](function(_0x21346a){logger[_0xbb43('0x27')](_0xbb43('0x2f'),_0x21346a[_0xbb43('0x15')]);emit(util[_0xbb43('0x30')](_0xbb43('0x31'),_0x21346a['name']),_0xbb43('0x32'),{'callNumber':_0x2109aa,'callerId':_0x244d66,'callbackUrl':_0x1eae09});return _0xa7e144[_0xbb43('0x17')](0xc8)['json']({'error':![],'message':_0xbb43('0x33')});})[_0xbb43('0x1c')](handleError(_0xa7e144));};exports[_0xbb43('0x34')]=function(_0x5374a2,_0x5f4601){logger['info'](_0xbb43('0x35'),_0x5374a2[_0xbb43('0x29')]);var _0x4a95c3=hangupValidation['validate'](_0x5374a2[_0xbb43('0x29')]);if(_0x4a95c3[_0xbb43('0x2a')]>0x0){return _0x5f4601[_0xbb43('0x17')](0x190)[_0xbb43('0x2b')](_0x4a95c3);}var _0x3f9e7f=_0x5374a2['body'][_0xbb43('0x36')];var _0x526cb8=_0x5374a2[_0xbb43('0x29')][_0xbb43('0x25')];return getAgent(_0x3f9e7f)[_0xbb43('0x22')](function(_0x531d96){logger[_0xbb43('0x27')]('entityFound:',_0x531d96[_0xbb43('0x15')]);emit(util[_0xbb43('0x30')]('user:%s',_0x531d96[_0xbb43('0x15')]),'webbar:hangup',{'sessionId':_0x526cb8});return _0x5f4601[_0xbb43('0x17')](0xc8)[_0xbb43('0x2b')]({'error':![],'message':_0xbb43('0x37')});})[_0xbb43('0x1c')](handleError(_0x5f4601));};exports['answer']=function(_0x3e0871,_0x136bd4){logger['info'](_0xbb43('0x38'),_0x3e0871['body']);var _0x42b965=answerValidation[_0xbb43('0xd')](_0x3e0871[_0xbb43('0x29')]);if(_0x42b965[_0xbb43('0x2a')]>0x0){return _0x136bd4[_0xbb43('0x17')](0x190)[_0xbb43('0x2b')](_0x42b965);}var _0x4bf8ed=_0x3e0871[_0xbb43('0x29')]['userId'];var _0x307f1e=_0x3e0871[_0xbb43('0x29')][_0xbb43('0x25')];return getAgent(_0x4bf8ed)[_0xbb43('0x22')](function(_0x4970fb){logger[_0xbb43('0x27')](_0xbb43('0x2f'),_0x4970fb[_0xbb43('0x15')]);emit(util[_0xbb43('0x30')](_0xbb43('0x31'),_0x4970fb[_0xbb43('0x15')]),_0xbb43('0x39'),{'sessionId':_0x307f1e});return _0x136bd4[_0xbb43('0x17')](0xc8)['json']({'error':![],'message':_0xbb43('0x3a')});})[_0xbb43('0x1c')](handleError(_0x136bd4));};exports['hold']=function(_0x1a66f0,_0x5d4c19){logger['info']('hold\x20fired:',_0x1a66f0['body']);var _0x1c3482=holdValidation['validate'](_0x1a66f0[_0xbb43('0x29')]);if(_0x1c3482['length']>0x0){return _0x5d4c19[_0xbb43('0x17')](0x190)[_0xbb43('0x2b')](_0x1c3482);}var _0x1f3fb4=_0x1a66f0['body'][_0xbb43('0x36')];var _0x4d9f18=_0x1a66f0[_0xbb43('0x29')][_0xbb43('0x25')];return getAgent(_0x1f3fb4)[_0xbb43('0x22')](function(_0x29840e){logger[_0xbb43('0x27')](_0xbb43('0x2f'),_0x29840e[_0xbb43('0x15')]);emit(util['format'](_0xbb43('0x31'),_0x29840e[_0xbb43('0x15')]),_0xbb43('0x3b'),{'sessionId':_0x4d9f18});return _0x5d4c19[_0xbb43('0x17')](0xc8)['json']({'error':![],'message':_0xbb43('0x3c')});})[_0xbb43('0x1c')](handleError(_0x5d4c19));};exports[_0xbb43('0x3d')]=function(_0xb1883e,_0x4b7712){logger[_0xbb43('0x27')](_0xbb43('0x3e'),_0xb1883e[_0xbb43('0x29')]);var _0x4e1959=unholdValidation[_0xbb43('0xd')](_0xb1883e[_0xbb43('0x29')]);if(_0x4e1959[_0xbb43('0x2a')]>0x0){return _0x4b7712[_0xbb43('0x17')](0x190)[_0xbb43('0x2b')](_0x4e1959);}var _0x59c805=_0xb1883e['body'][_0xbb43('0x36')];var _0x5c75ba=_0xb1883e[_0xbb43('0x29')][_0xbb43('0x25')];return getAgent(_0x59c805)['then'](function(_0x29aea0){logger[_0xbb43('0x27')](_0xbb43('0x2f'),_0x29aea0[_0xbb43('0x15')]);emit(util[_0xbb43('0x30')]('user:%s',_0x29aea0[_0xbb43('0x15')]),'webbar:unhold',{'sessionId':_0x5c75ba});return _0x4b7712['status'](0xc8)[_0xbb43('0x2b')]({'error':![],'message':_0xbb43('0x3f')});})[_0xbb43('0x1c')](handleError(_0x4b7712));};exports[_0xbb43('0x40')]=function(_0x129ee6,_0x5db053){logger['info'](_0xbb43('0x41'),_0x5db053[_0xbb43('0x29')]);var _0x3a84ad=callsValidation[_0xbb43('0xd')](_0x129ee6[_0xbb43('0x29')]);if(_0x3a84ad[_0xbb43('0x2a')]>0x0){return _0x5db053[_0xbb43('0x17')](0x190)[_0xbb43('0x2b')](_0x3a84ad);}var _0x1a3f98=_0x129ee6['body'][_0xbb43('0x36')];var _0xb996d7=respondWithRpcPromise(_0xbb43('0x20'));var _0x3675d9=getAgent(_0x1a3f98);return Promise[_0xbb43('0x21')]([_0xb996d7,_0x3675d9])[_0xbb43('0x22')](function(_0x3f7262){var _0x3589fd=_0x3f7262[0x0];var _0x3e01e4=_0x3f7262[0x1];var _0x49a54e=_['filter'](_0x3589fd[_0xbb43('0x24')],function(_0x2b72ae){return _0x2b72ae[_0xbb43('0x42')]==_0x3e01e4['id'];});return _0x5db053[_0xbb43('0x17')](0xc8)[_0xbb43('0x2b')]({'count':_0x49a54e[_0xbb43('0x2a')],'rows':_0x49a54e});})[_0xbb43('0x1c')](handleError(_0x5db053));};exports['conference']=function(_0x3bda63,_0x599eec){logger['info'](_0xbb43('0x43'),_0x3bda63[_0xbb43('0x29')]);var _0x3cccea=conferenceValidation[_0xbb43('0xd')](_0x3bda63[_0xbb43('0x29')]);if(_0x3cccea[_0xbb43('0x2a')]>0x0){return _0x599eec[_0xbb43('0x17')](0x190)[_0xbb43('0x2b')](_0x3cccea);}var _0x51b076=_0x3bda63['body'][_0xbb43('0x36')];return getAgent(_0x51b076)[_0xbb43('0x22')](function(_0x137e75){logger[_0xbb43('0x27')](_0xbb43('0x2f'),_0x137e75[_0xbb43('0x15')]);emit(util[_0xbb43('0x30')](_0xbb43('0x31'),_0x137e75[_0xbb43('0x15')]),'webbar:conference');return _0x599eec[_0xbb43('0x17')](0xc8)[_0xbb43('0x2b')]({'error':![],'message':_0xbb43('0x44')});})[_0xbb43('0x1c')](handleError(_0x599eec));};exports[_0xbb43('0x45')]=function(_0x33a4db,_0x5745eb){logger[_0xbb43('0x27')](_0xbb43('0x46'),_0x33a4db[_0xbb43('0x29')]);var _0x6d3bb1=transferValidation[_0xbb43('0xd')](_0x33a4db['body']);if(_0x6d3bb1[_0xbb43('0x2a')]>0x0){return _0x5745eb[_0xbb43('0x17')](0x190)[_0xbb43('0x2b')](_0x6d3bb1);}var _0x231b11=_0x33a4db[_0xbb43('0x29')][_0xbb43('0x36')];var _0x2bd30e=_0x33a4db[_0xbb43('0x29')][_0xbb43('0x25')];var _0x3ab906=_0x33a4db['body'][_0xbb43('0x47')];return getAgent(_0x231b11)['then'](function(_0x2b9e5d){logger[_0xbb43('0x27')](_0xbb43('0x2f'),_0x2b9e5d[_0xbb43('0x15')]);emit(util[_0xbb43('0x30')]('user:%s',_0x2b9e5d['name']),_0xbb43('0x48'),{'sessionId':_0x2bd30e,'transferNumber':_0x3ab906});return _0x5745eb[_0xbb43('0x17')](0xc8)['json']({'error':![],'message':_0xbb43('0x49')});})[_0xbb43('0x1c')](handleError(_0x5745eb));};
\ No newline at end of file
index 568c39a..e7819e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','/:id/applications','getApplications','post','create','addAnswer','addAgents','addApplications','/:id/notify','notify','/:id/send','send','put','update','delete','removeAnswers','exports'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xef0f,0x168));var _0xfef0=function(_0x19aea6,_0x143cd3){_0x19aea6=_0x19aea6-0x0;var _0x462bb6=_0xef0f[_0x19aea6];return _0x462bb6;};'use strict';var multer=require(_0xfef0('0x0'));var util=require('util');var path=require(_0xfef0('0x1'));var timeout=require(_0xfef0('0x2'));var express=require(_0xfef0('0x3'));var router=express['Router']();var fs_extra=require(_0xfef0('0x4'));var auth=require(_0xfef0('0x5'));var interaction=require(_0xfef0('0x6'));var config=require('../../config/environment');var controller=require(_0xfef0('0x7'));router[_0xfef0('0x8')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0xa')]);router[_0xfef0('0x8')](_0xfef0('0xb'),auth['isAuthenticated'](),controller[_0xfef0('0xc')]);router['get'](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0xe')]);router[_0xfef0('0x8')](_0xfef0('0xf'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x10')]);router[_0xfef0('0x8')](_0xfef0('0x11'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x12')]);router[_0xfef0('0x8')](_0xfef0('0x13'),auth[_0xfef0('0x9')](),controller['getAgents']);router[_0xfef0('0x8')](_0xfef0('0x14'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x15')]);router[_0xfef0('0x16')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0x17')]);router['post'](_0xfef0('0xf'),auth['isAuthenticated'](),controller['addDisposition']);router['post'](_0xfef0('0x11'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x18')]);router[_0xfef0('0x16')](_0xfef0('0x13'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x19')]);router[_0xfef0('0x16')]('/:id/applications',auth[_0xfef0('0x9')](),controller[_0xfef0('0x1a')]);router[_0xfef0('0x16')](_0xfef0('0x1b'),controller[_0xfef0('0x1c')]);router['post'](_0xfef0('0x1d'),auth['isAuthenticated'](),controller[_0xfef0('0x1e')]);router[_0xfef0('0x1f')](_0xfef0('0xd'),auth['isAuthenticated'](),controller[_0xfef0('0x20')]);router['delete'](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller['destroy']);router['delete']('/:id/dispositions',auth[_0xfef0('0x9')](),controller['removeDispositions']);router[_0xfef0('0x21')](_0xfef0('0x11'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x22')]);router[_0xfef0('0x21')](_0xfef0('0x13'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xfef0('0x23')]=router;
\ No newline at end of file
+var _0x1967=['addAnswer','addAgents','/:id/notify','notify','update','destroy','removeDispositions','delete','removeAnswers','removeAgents','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','post','create'];(function(_0x72a4cc,_0x5636bf){var _0x5ce2e1=function(_0x178206){while(--_0x178206){_0x72a4cc['push'](_0x72a4cc['shift']());}};_0x5ce2e1(++_0x5636bf);}(_0x1967,0x173));var _0x7196=function(_0x5a7c7c,_0x3d3cc7){_0x5a7c7c=_0x5a7c7c-0x0;var _0x3e516c=_0x1967[_0x5a7c7c];return _0x3e516c;};'use strict';var multer=require('multer');var util=require(_0x7196('0x0'));var path=require(_0x7196('0x1'));var timeout=require(_0x7196('0x2'));var express=require(_0x7196('0x3'));var router=express[_0x7196('0x4')]();var fs_extra=require(_0x7196('0x5'));var auth=require(_0x7196('0x6'));var interaction=require(_0x7196('0x7'));var config=require(_0x7196('0x8'));var controller=require(_0x7196('0x9'));router['get']('/',auth[_0x7196('0xa')](),controller[_0x7196('0xb')]);router[_0x7196('0xc')](_0x7196('0xd'),auth[_0x7196('0xa')](),controller[_0x7196('0xe')]);router['get'](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x10')]);router[_0x7196('0xc')](_0x7196('0x11'),auth['isAuthenticated'](),controller['getDispositions']);router[_0x7196('0xc')](_0x7196('0x12'),auth[_0x7196('0xa')](),controller[_0x7196('0x13')]);router[_0x7196('0xc')](_0x7196('0x14'),auth[_0x7196('0xa')](),controller[_0x7196('0x15')]);router[_0x7196('0xc')](_0x7196('0x16'),auth[_0x7196('0xa')](),controller['getApplications']);router[_0x7196('0x17')]('/',auth[_0x7196('0xa')](),controller[_0x7196('0x18')]);router[_0x7196('0x17')]('/:id/dispositions',auth[_0x7196('0xa')](),controller['addDisposition']);router[_0x7196('0x17')](_0x7196('0x12'),auth[_0x7196('0xa')](),controller[_0x7196('0x19')]);router[_0x7196('0x17')](_0x7196('0x14'),auth[_0x7196('0xa')](),controller[_0x7196('0x1a')]);router[_0x7196('0x17')](_0x7196('0x16'),auth[_0x7196('0xa')](),controller['addApplications']);router['post'](_0x7196('0x1b'),controller[_0x7196('0x1c')]);router[_0x7196('0x17')]('/:id/send',auth[_0x7196('0xa')](),controller['send']);router['put'](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x1d')]);router['delete']('/:id',auth[_0x7196('0xa')](),controller[_0x7196('0x1e')]);router['delete'](_0x7196('0x11'),auth[_0x7196('0xa')](),controller[_0x7196('0x1f')]);router[_0x7196('0x20')](_0x7196('0x12'),auth['isAuthenticated'](),controller[_0x7196('0x21')]);router['delete'](_0x7196('0x14'),auth[_0x7196('0xa')](),controller[_0x7196('0x22')]);module[_0x7196('0x23')]=router;
\ No newline at end of file
index 1d26e22..b67b497 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73c1=['randomstring','exports','STRING','generate','ENUM','twilio','TEXT','BOOLEAN','INTEGER','setDataValue','mandatoryDisposition','sequelize'];(function(_0x1ab0e6,_0x17ba8d){var _0x248815=function(_0x5d2b40){while(--_0x5d2b40){_0x1ab0e6['push'](_0x1ab0e6['shift']());}};_0x248815(++_0x17ba8d);}(_0x73c1,0x1eb));var _0x173c=function(_0x3282a2,_0xb4b2c9){_0x3282a2=_0x3282a2-0x0;var _0xdec417=_0x73c1[_0x3282a2];return _0xdec417;};'use strict';var Sequelize=require(_0x173c('0x0'));var rs=require(_0x173c('0x1'));module[_0x173c('0x2')]={'name':{'type':Sequelize[_0x173c('0x3')],'unique':'name','allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0x173c('0x3')],'defaultValue':function(){return rs[_0x173c('0x4')]();}},'phone':{'type':Sequelize[_0x173c('0x3')]},'type':{'type':Sequelize[_0x173c('0x5')](_0x173c('0x6'))},'accountSid':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x173c('0x7')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x173c('0x8')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x173c('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x173c('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x173c('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x173c('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x173c('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x173c('0x8')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x381120){if(!_0x381120){this['setDataValue']('mandatoryDispositionPauseId',null);}this[_0x173c('0xa')](_0x173c('0xb'),_0x381120);}},'description':{'type':Sequelize[_0x173c('0x3')]}};
\ No newline at end of file
+var _0xa800=['sequelize','randomstring','exports','STRING','twilio','TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition'];(function(_0x27dfb2,_0x59b146){var _0x52c5be=function(_0x44965f){while(--_0x44965f){_0x27dfb2['push'](_0x27dfb2['shift']());}};_0x52c5be(++_0x59b146);}(_0xa800,0x138));var _0x0a80=function(_0x453704,_0xcf42a8){_0x453704=_0x453704-0x0;var _0x1d1ba5=_0xa800[_0x453704];return _0x1d1ba5;};'use strict';var Sequelize=require(_0x0a80('0x0'));var rs=require(_0x0a80('0x1'));module[_0x0a80('0x2')]={'name':{'type':Sequelize[_0x0a80('0x3')],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0x0a80('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x0a80('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x0a80('0x3')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0x0a80('0x4'))},'accountSid':{'type':Sequelize[_0x0a80('0x3')]},'authToken':{'type':Sequelize[_0x0a80('0x3')]},'notificationTemplate':{'type':Sequelize[_0x0a80('0x5')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x0a80('0x6')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x0a80('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x0a80('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x0a80('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x0a80('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x0a80('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x0a80('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0a80('0x7')],'comment':_0x0a80('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x0a80('0x6')],'defaultValue':![],'comment':_0x0a80('0x9'),'set':function(_0x318356){if(!_0x318356){this[_0x0a80('0xa')](_0x0a80('0xb'),null);}this[_0x0a80('0xa')](_0x0a80('0xc'),_0x318356);}},'description':{'type':Sequelize[_0x0a80('0x3')]}};
\ No newline at end of file
index 6ef97fa..b833f40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e99=['params','Pause','length','includeAll','options','find','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','UserProfileResource','create','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','hasOwnProperty','filter','removeDispositions','ids','addAnswer','findOne','CannedAnswer','removeAnswers','addAgents','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','getAgents','User','transaction','WhatsappApplication','bulkCreate','findAndCountAll','priority','getApplications','notify','whatsapp','Applications','applications','orderBy','asc','account','Sequelize','ValidationError','difference','updatedAt','createdAt','CompanyId','mobile','twilio','from','From','replace','Body','MessageSid','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','ListId','CmContact','Contacts','DESC','list','omit','defaults','WhatsappInteraction','spread','interaction','close','created','WhatsappMessage','messageId','ContactId','AttachmentId','UserId','unshift','*,*,*,*','Start','startRouting','entity\x20found','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','List','out','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./whatsappAccount.socket','register','jayson/promise','client','http','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','update','destroy','name','send','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','VIRTUAL','merge','include','findAll','rows'];(function(_0xdd7fdf,_0x2d6685){var _0x1ec9af=function(_0x309739){while(--_0x309739){_0xdd7fdf['push'](_0xdd7fdf['shift']());}};_0x1ec9af(++_0x2d6685);}(_0x1e99,0x1d7));var _0x91e9=function(_0x585df5,_0x4d8571){_0x585df5=_0x585df5-0x0;var _0x381a14=_0x1e99[_0x585df5];return _0x381a14;};'use strict';var emlformat=require(_0x91e9('0x0'));var rimraf=require(_0x91e9('0x1'));var zipdir=require(_0x91e9('0x2'));var jsonpatch=require(_0x91e9('0x3'));var rp=require(_0x91e9('0x4'));var moment=require(_0x91e9('0x5'));var BPromise=require(_0x91e9('0x6'));var Mustache=require(_0x91e9('0x7'));var util=require(_0x91e9('0x8'));var path=require('path');var sox=require(_0x91e9('0x9'));var csv=require(_0x91e9('0xa'));var ejs=require(_0x91e9('0xb'));var fs=require('fs');var fs_extra=require(_0x91e9('0xc'));var _=require(_0x91e9('0xd'));var squel=require(_0x91e9('0xe'));var crypto=require(_0x91e9('0xf'));var jsforce=require(_0x91e9('0x10'));var deskjs=require(_0x91e9('0x11'));var toCsv=require(_0x91e9('0xa'));var querystring=require(_0x91e9('0x12'));var Papa=require('papaparse');var Redis=require(_0x91e9('0x13'));var authService=require(_0x91e9('0x14'));var qs=require(_0x91e9('0x15'));var as=require(_0x91e9('0x16'));var hardwareService=require(_0x91e9('0x17'));var logger=require(_0x91e9('0x18'))(_0x91e9('0x19'));var utils=require(_0x91e9('0x1a'));var config=require(_0x91e9('0x1b'));var licenseUtil=require(_0x91e9('0x1c'));var db=require(_0x91e9('0x1d'))['db'];config['redis']=_['defaults'](config[_0x91e9('0x1e')],{'host':_0x91e9('0x1f'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x91e9('0x1e')]));require(_0x91e9('0x20'))[_0x91e9('0x21')](socket);var jayson=require(_0x91e9('0x22'));var client=jayson[_0x91e9('0x23')][_0x91e9('0x24')]({'port':0x232c});function respondWithRpcPromise(_0x1a8606,_0x3bf0bd,_0x2b6009,_0x5596df){return new BPromise(function(_0x5a240e,_0x2c5c5e){var _0x14378d=_0x5596df||client;return _0x14378d[_0x91e9('0x25')](_0x1a8606,_0x2b6009)[_0x91e9('0x26')](function(_0x2f65ff){logger[_0x91e9('0x27')](_0x91e9('0x28'),_0x3bf0bd,_0x91e9('0x29'));logger['debug'](_0x91e9('0x2a'),_0x3bf0bd,_0x91e9('0x29'),JSON[_0x91e9('0x2b')](_0x2f65ff));if(_0x2f65ff['error']){if(_0x2f65ff[_0x91e9('0x2c')][_0x91e9('0x2d')]===0x1f4){logger[_0x91e9('0x2c')](_0x91e9('0x28'),_0x3bf0bd,_0x2f65ff[_0x91e9('0x2c')][_0x91e9('0x2e')]);return _0x2c5c5e(_0x2f65ff['error']['message']);}logger[_0x91e9('0x2c')]('WhatsappAccount,\x20%s,\x20%s',_0x3bf0bd,_0x2f65ff['error']['message']);return _0x5a240e(_0x2f65ff['error'][_0x91e9('0x2e')]);}else{logger[_0x91e9('0x27')](_0x91e9('0x28'),_0x3bf0bd,_0x91e9('0x29'));_0x5a240e(_0x2f65ff[_0x91e9('0x2f')][_0x91e9('0x2e')]);}})[_0x91e9('0x30')](function(_0x1c5dd7){logger[_0x91e9('0x2c')](_0x91e9('0x28'),_0x3bf0bd,_0x1c5dd7);_0x2c5c5e(_0x1c5dd7);});});}function respondWithStatusCode(_0x2c6e43,_0x2b0749){_0x2b0749=_0x2b0749||0xcc;return function(_0x1f7cb3){if(_0x1f7cb3){return _0x2c6e43[_0x91e9('0x31')](_0x2b0749);}return _0x2c6e43[_0x91e9('0x32')](_0x2b0749)[_0x91e9('0x33')]();};}function respondWithResult(_0x35a502,_0x126c9a){_0x126c9a=_0x126c9a||0xc8;return function(_0x4209e7){if(_0x4209e7){return _0x35a502[_0x91e9('0x32')](_0x126c9a)[_0x91e9('0x34')](_0x4209e7);}};}function respondWithFilteredResult(_0x2d60e7,_0x2c3518){return function(_0x5ad970){if(_0x5ad970){var _0x1782b4=typeof _0x2c3518[_0x91e9('0x35')]==='undefined'&&typeof _0x2c3518[_0x91e9('0x36')]===_0x91e9('0x37');var _0x411a78=_0x5ad970[_0x91e9('0x38')];var _0x12318d=_0x1782b4?0x0:_0x2c3518['offset'];var _0x52153c=_0x1782b4?_0x5ad970[_0x91e9('0x38')]:_0x2c3518[_0x91e9('0x35')]+_0x2c3518[_0x91e9('0x36')];var _0x16e144;if(_0x52153c>=_0x411a78){_0x52153c=_0x411a78;_0x16e144=0xc8;}else{_0x16e144=0xce;}_0x2d60e7[_0x91e9('0x32')](_0x16e144);return _0x2d60e7[_0x91e9('0x39')](_0x91e9('0x3a'),_0x12318d+'-'+_0x52153c+'/'+_0x411a78)['json'](_0x5ad970);}return null;};}function patchUpdates(_0x28cfcd){return function(_0x2ada5d){try{jsonpatch[_0x91e9('0x3b')](_0x2ada5d,_0x28cfcd,!![]);}catch(_0x3e249f){return BPromise['reject'](_0x3e249f);}return _0x2ada5d['save']();};}function saveUpdates(_0x457bf2,_0xc0219f){return function(_0x19d77d){if(_0x19d77d){return _0x19d77d[_0x91e9('0x3c')](_0x457bf2)[_0x91e9('0x26')](function(_0x25fc2d){return _0x25fc2d;});}return null;};}function removeEntity(_0x182961,_0x1aca9e){return function(_0x1610c1){if(_0x1610c1){return _0x1610c1['destroy']()['then'](function(){var _0x46475a=_0x1610c1['get']({'plain':!![]});var _0x2654b5='WhatsappAccounts';return db['UserProfileResource'][_0x91e9('0x3d')]({'where':{'type':_0x2654b5,'resourceId':_0x46475a['id']}})['then'](function(){return _0x1610c1;});})[_0x91e9('0x26')](function(){_0x182961[_0x91e9('0x32')](0xcc)[_0x91e9('0x33')]();});}};}function handleEntityNotFound(_0xe83352,_0x21637e){return function(_0x3c365b){if(!_0x3c365b){_0xe83352['sendStatus'](0x194);}return _0x3c365b;};}function handleError(_0x4e5bdd,_0x28f06b){_0x28f06b=_0x28f06b||0x1f4;return function(_0x1caad5){logger['error'](_0x1caad5['stack']);if(_0x1caad5['name']){delete _0x1caad5[_0x91e9('0x3e')];}_0x4e5bdd[_0x91e9('0x32')](_0x28f06b)[_0x91e9('0x3f')](_0x1caad5);};}exports['index']=function(_0x25ec4e,_0x5381ac){var _0x16ea30={'include':[{'model':db['Pause'],'as':_0x91e9('0x40')}]},_0x2dc5cf={},_0x34afc6={'count':0x0,'rows':[]};var _0x22dc06=_[_0x91e9('0x41')](db[_0x91e9('0x42')][_0x91e9('0x43')],function(_0x11136f){return{'name':_0x11136f['fieldName'],'type':_0x11136f[_0x91e9('0x44')][_0x91e9('0x45')]};});_0x2dc5cf[_0x91e9('0x46')]=_[_0x91e9('0x41')](_0x22dc06,_0x91e9('0x3e'));_0x2dc5cf[_0x91e9('0x47')]=_[_0x91e9('0x48')](_0x25ec4e[_0x91e9('0x47')]);_0x2dc5cf[_0x91e9('0x49')]=_[_0x91e9('0x4a')](_0x2dc5cf[_0x91e9('0x46')],_0x2dc5cf[_0x91e9('0x47')]);_0x16ea30[_0x91e9('0x4b')]=_[_0x91e9('0x4a')](_0x2dc5cf[_0x91e9('0x46')],qs[_0x91e9('0x4c')](_0x25ec4e[_0x91e9('0x47')][_0x91e9('0x4c')]));_0x16ea30[_0x91e9('0x4b')]=_0x16ea30['attributes']['length']?_0x16ea30[_0x91e9('0x4b')]:_0x2dc5cf[_0x91e9('0x46')];if(!_0x25ec4e[_0x91e9('0x47')]['hasOwnProperty'](_0x91e9('0x4d'))){_0x16ea30['limit']=qs[_0x91e9('0x36')](_0x25ec4e[_0x91e9('0x47')][_0x91e9('0x36')]);_0x16ea30[_0x91e9('0x35')]=qs[_0x91e9('0x35')](_0x25ec4e[_0x91e9('0x47')][_0x91e9('0x35')]);}_0x16ea30[_0x91e9('0x4e')]=qs['sort'](_0x25ec4e['query'][_0x91e9('0x4f')]);_0x16ea30[_0x91e9('0x50')]=qs['filters'](_[_0x91e9('0x51')](_0x25ec4e[_0x91e9('0x47')],_0x2dc5cf[_0x91e9('0x49')]),_0x22dc06);if(_0x25ec4e['query']['filter']){_0x16ea30[_0x91e9('0x50')]=_['merge'](_0x16ea30[_0x91e9('0x50')],{'$or':_[_0x91e9('0x41')](_0x22dc06,function(_0x3d716f){if(_0x3d716f[_0x91e9('0x44')]!==_0x91e9('0x52')){var _0xb92e3c={};_0xb92e3c[_0x3d716f[_0x91e9('0x3e')]]={'$like':'%'+_0x25ec4e[_0x91e9('0x47')]['filter']+'%'};return _0xb92e3c;}})});}_0x16ea30=_[_0x91e9('0x53')]({},_0x16ea30,_0x25ec4e['options']);var _0x4a2c83={'where':_0x16ea30['where']};return db[_0x91e9('0x42')][_0x91e9('0x38')](_0x4a2c83)[_0x91e9('0x26')](function(_0x2707bf){_0x34afc6[_0x91e9('0x38')]=_0x2707bf;if(_0x25ec4e['query']['includeAll']){_0x16ea30[_0x91e9('0x54')]=[{'all':!![]}];}return db[_0x91e9('0x42')][_0x91e9('0x55')](_0x16ea30);})['then'](function(_0x254753){_0x34afc6[_0x91e9('0x56')]=_0x254753;return _0x34afc6;})[_0x91e9('0x26')](respondWithFilteredResult(_0x5381ac,_0x16ea30))[_0x91e9('0x30')](handleError(_0x5381ac,null));};exports['show']=function(_0x2bf5d3,_0x8f9202){var _0x261e71={'raw':![],'where':{'id':_0x2bf5d3[_0x91e9('0x57')]['id']},'include':[{'model':db[_0x91e9('0x58')],'as':_0x91e9('0x40')}]},_0x82c82f={};_0x82c82f[_0x91e9('0x46')]=_[_0x91e9('0x48')](db['WhatsappAccount'][_0x91e9('0x43')]);_0x82c82f[_0x91e9('0x47')]=_[_0x91e9('0x48')](_0x2bf5d3[_0x91e9('0x47')]);_0x82c82f['filters']=_[_0x91e9('0x4a')](_0x82c82f[_0x91e9('0x46')],_0x82c82f[_0x91e9('0x47')]);_0x261e71['attributes']=_[_0x91e9('0x4a')](_0x82c82f[_0x91e9('0x46')],qs[_0x91e9('0x4c')](_0x2bf5d3[_0x91e9('0x47')][_0x91e9('0x4c')]));_0x261e71[_0x91e9('0x4b')]=_0x261e71[_0x91e9('0x4b')][_0x91e9('0x59')]?_0x261e71[_0x91e9('0x4b')]:_0x82c82f[_0x91e9('0x46')];if(_0x2bf5d3['query'][_0x91e9('0x5a')]){_0x261e71['include']=[{'all':!![]}];}_0x261e71=_[_0x91e9('0x53')]({},_0x261e71,_0x2bf5d3[_0x91e9('0x5b')]);return db[_0x91e9('0x42')][_0x91e9('0x5c')](_0x261e71)[_0x91e9('0x26')](handleEntityNotFound(_0x8f9202,null))[_0x91e9('0x26')](respondWithResult(_0x8f9202,null))[_0x91e9('0x30')](handleError(_0x8f9202,null));};exports['create']=function(_0x4deb37,_0x5040b9){return db[_0x91e9('0x42')]['create'](_0x4deb37[_0x91e9('0x5d')],{})['then'](function(_0x3dbca7){var _0x4a6177=_0x4deb37[_0x91e9('0x5e')][_0x91e9('0x5f')]({'plain':!![]});if(!_0x4a6177)throw new Error(_0x91e9('0x60'));if(_0x4a6177['role']==='user'){var _0x3c12c3=_0x3dbca7[_0x91e9('0x5f')]({'plain':!![]});var _0x2d659b='WhatsappAccounts';return db[_0x91e9('0x61')][_0x91e9('0x5c')]({'where':{'name':_0x2d659b,'userProfileId':_0x4a6177[_0x91e9('0x62')]},'raw':!![]})[_0x91e9('0x26')](function(_0x3d2c73){if(_0x3d2c73&&_0x3d2c73['autoAssociation']===0x0){return db[_0x91e9('0x63')][_0x91e9('0x64')]({'name':_0x3c12c3[_0x91e9('0x3e')],'resourceId':_0x3c12c3['id'],'type':_0x3d2c73[_0x91e9('0x3e')],'sectionId':_0x3d2c73['id']},{})[_0x91e9('0x26')](function(){return _0x3dbca7;});}else{return _0x3dbca7;}})[_0x91e9('0x30')](function(_0x1156fa){logger[_0x91e9('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1156fa);throw _0x1156fa;});}return _0x3dbca7;})[_0x91e9('0x26')](respondWithResult(_0x5040b9,0xc9))['catch'](handleError(_0x5040b9,null));};exports[_0x91e9('0x3c')]=function(_0x1ff7fa,_0x4959df){if(_0x1ff7fa['body']['id']){delete _0x1ff7fa[_0x91e9('0x5d')]['id'];}return db[_0x91e9('0x42')][_0x91e9('0x5c')]({'where':{'id':_0x1ff7fa[_0x91e9('0x57')]['id']},'include':[{'model':db[_0x91e9('0x58')],'as':_0x91e9('0x40')}]})['then'](handleEntityNotFound(_0x4959df,null))[_0x91e9('0x26')](saveUpdates(_0x1ff7fa[_0x91e9('0x5d')],null))[_0x91e9('0x26')](respondWithResult(_0x4959df,null))[_0x91e9('0x30')](handleError(_0x4959df,null));};exports[_0x91e9('0x3d')]=function(_0x1e4993,_0x2ea240){return db[_0x91e9('0x42')][_0x91e9('0x5c')]({'where':{'id':_0x1e4993[_0x91e9('0x57')]['id']}})[_0x91e9('0x26')](handleEntityNotFound(_0x2ea240,null))['then'](removeEntity(_0x2ea240,null))['catch'](handleError(_0x2ea240,null));};exports['describe']=function(_0x503091,_0x3a8c51){return db['WhatsappAccount'][_0x91e9('0x65')]()[_0x91e9('0x26')](respondWithResult(_0x3a8c51,null))[_0x91e9('0x30')](handleError(_0x3a8c51,null));};exports[_0x91e9('0x66')]=function(_0x55f634,_0x1261b7,_0x4d54ea){if(_0x55f634['body']['id']){delete _0x55f634[_0x91e9('0x5d')]['id'];}return db[_0x91e9('0x42')]['find']({'where':{'id':_0x55f634[_0x91e9('0x57')]['id']}})[_0x91e9('0x26')](handleEntityNotFound(_0x1261b7,null))[_0x91e9('0x26')](function(_0x4fb7c3){if(_0x4fb7c3){_0x55f634['body'][_0x91e9('0x67')]=_0x4fb7c3['id'];return db[_0x91e9('0x68')][_0x91e9('0x64')](_0x55f634[_0x91e9('0x5d')]);}})[_0x91e9('0x26')](respondWithResult(_0x1261b7,null))[_0x91e9('0x30')](handleError(_0x1261b7,null));};exports[_0x91e9('0x69')]=function(_0x58c4c3,_0x4a9072,_0x281566){var _0x213626={'raw':![],'where':{}};var _0x5358bc={};var _0x4c5cbe={'count':0x0,'rows':[]};return db[_0x91e9('0x42')]['findOne']({'where':{'id':_0x58c4c3[_0x91e9('0x57')]['id']}})[_0x91e9('0x26')](handleEntityNotFound(_0x4a9072,null))[_0x91e9('0x26')](function(_0x14d3ba){if(_0x14d3ba){_0x5358bc['model']=_[_0x91e9('0x48')](db[_0x91e9('0x68')]['rawAttributes']);_0x5358bc['query']=_[_0x91e9('0x48')](_0x58c4c3[_0x91e9('0x47')]);_0x5358bc['filters']=_[_0x91e9('0x4a')](_0x5358bc[_0x91e9('0x46')],_0x5358bc['query']);_0x213626['attributes']=_[_0x91e9('0x4a')](_0x5358bc[_0x91e9('0x46')],qs[_0x91e9('0x4c')](_0x58c4c3['query']['fields']));_0x213626[_0x91e9('0x4b')]=_0x213626[_0x91e9('0x4b')][_0x91e9('0x59')]?_0x213626[_0x91e9('0x4b')]:_0x5358bc[_0x91e9('0x46')];if(!_0x58c4c3[_0x91e9('0x47')][_0x91e9('0x6a')]('nolimit')){_0x213626['limit']=qs['limit'](_0x58c4c3[_0x91e9('0x47')]['limit']);_0x213626[_0x91e9('0x35')]=qs[_0x91e9('0x35')](_0x58c4c3[_0x91e9('0x47')]['offset']);}_0x213626[_0x91e9('0x4e')]=qs[_0x91e9('0x4f')](_0x58c4c3[_0x91e9('0x47')]['sort']);_0x213626[_0x91e9('0x50')]=qs['filters'](_[_0x91e9('0x51')](_0x58c4c3['query'],_0x5358bc[_0x91e9('0x49')]));_0x213626[_0x91e9('0x50')][_0x91e9('0x67')]=_0x14d3ba['id'];if(_0x58c4c3[_0x91e9('0x47')][_0x91e9('0x6b')]){_0x213626['where']=_['merge'](_0x213626[_0x91e9('0x50')],{'$or':_['map'](_0x213626[_0x91e9('0x4b')],function(_0x1d7625){var _0x736250={};_0x736250[_0x1d7625]={'$like':'%'+_0x58c4c3['query']['filter']+'%'};return _0x736250;})});}_0x213626=_[_0x91e9('0x53')]({},_0x213626,_0x58c4c3[_0x91e9('0x5b')]);return db[_0x91e9('0x68')]['count']({'where':_0x213626[_0x91e9('0x50')]})['then'](function(_0x32fe1e){_0x4c5cbe[_0x91e9('0x38')]=_0x32fe1e;if(_0x58c4c3[_0x91e9('0x47')][_0x91e9('0x5a')]){_0x213626[_0x91e9('0x54')]=[{'all':!![]}];}return db[_0x91e9('0x68')][_0x91e9('0x55')](_0x213626);})[_0x91e9('0x26')](function(_0xb47e8f){_0x4c5cbe[_0x91e9('0x56')]=_0xb47e8f;return _0x4c5cbe;});}})[_0x91e9('0x26')](respondWithFilteredResult(_0x4a9072,_0x213626))[_0x91e9('0x30')](handleError(_0x4a9072,null));};exports['removeDispositions']=function(_0x3b594a,_0x36b4a3,_0x46b0d6){return db[_0x91e9('0x42')]['find']({'where':{'id':_0x3b594a[_0x91e9('0x57')]['id']}})[_0x91e9('0x26')](handleEntityNotFound(_0x36b4a3,null))['then'](function(_0x15aa2e){if(_0x15aa2e){return _0x15aa2e[_0x91e9('0x6c')](_0x3b594a['query'][_0x91e9('0x6d')]);}})[_0x91e9('0x26')](respondWithStatusCode(_0x36b4a3,null))[_0x91e9('0x30')](handleError(_0x36b4a3,null));};exports[_0x91e9('0x6e')]=function(_0x3841d7,_0x4559f9,_0x3311d5){if(_0x3841d7['body']['id']){delete _0x3841d7[_0x91e9('0x5d')]['id'];}return db[_0x91e9('0x42')][_0x91e9('0x5c')]({'where':{'id':_0x3841d7[_0x91e9('0x57')]['id']}})[_0x91e9('0x26')](handleEntityNotFound(_0x4559f9,null))[_0x91e9('0x26')](function(_0x3410b6){if(_0x3410b6){_0x3841d7[_0x91e9('0x5d')][_0x91e9('0x67')]=_0x3410b6['id'];return db['CannedAnswer'][_0x91e9('0x64')](_0x3841d7[_0x91e9('0x5d')]);}})['then'](respondWithResult(_0x4559f9,null))[_0x91e9('0x30')](handleError(_0x4559f9,null));};exports['getAnswers']=function(_0x18921c,_0xd17177,_0x260c29){var _0x393e35={'raw':![],'where':{}};var _0x1265d3={};var _0x2783ff={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x91e9('0x6f')]({'where':{'id':_0x18921c[_0x91e9('0x57')]['id']}})[_0x91e9('0x26')](handleEntityNotFound(_0xd17177,null))[_0x91e9('0x26')](function(_0x207be5){if(_0x207be5){_0x1265d3[_0x91e9('0x46')]=_[_0x91e9('0x48')](db[_0x91e9('0x70')][_0x91e9('0x43')]);_0x1265d3[_0x91e9('0x47')]=_[_0x91e9('0x48')](_0x18921c[_0x91e9('0x47')]);_0x1265d3[_0x91e9('0x49')]=_[_0x91e9('0x4a')](_0x1265d3[_0x91e9('0x46')],_0x1265d3[_0x91e9('0x47')]);_0x393e35[_0x91e9('0x4b')]=_[_0x91e9('0x4a')](_0x1265d3[_0x91e9('0x46')],qs[_0x91e9('0x4c')](_0x18921c['query'][_0x91e9('0x4c')]));_0x393e35[_0x91e9('0x4b')]=_0x393e35[_0x91e9('0x4b')][_0x91e9('0x59')]?_0x393e35['attributes']:_0x1265d3[_0x91e9('0x46')];if(!_0x18921c[_0x91e9('0x47')]['hasOwnProperty']('nolimit')){_0x393e35[_0x91e9('0x36')]=qs[_0x91e9('0x36')](_0x18921c[_0x91e9('0x47')][_0x91e9('0x36')]);_0x393e35[_0x91e9('0x35')]=qs['offset'](_0x18921c[_0x91e9('0x47')][_0x91e9('0x35')]);}_0x393e35[_0x91e9('0x4e')]=qs['sort'](_0x18921c[_0x91e9('0x47')]['sort']);_0x393e35[_0x91e9('0x50')]=qs[_0x91e9('0x49')](_[_0x91e9('0x51')](_0x18921c['query'],_0x1265d3[_0x91e9('0x49')]));_0x393e35[_0x91e9('0x50')][_0x91e9('0x67')]=_0x207be5['id'];if(_0x18921c[_0x91e9('0x47')]['filter']){_0x393e35['where']=_[_0x91e9('0x53')](_0x393e35[_0x91e9('0x50')],{'$or':_['map'](_0x393e35[_0x91e9('0x4b')],function(_0x56020e){var _0x66a8e2={};_0x66a8e2[_0x56020e]={'$like':'%'+_0x18921c[_0x91e9('0x47')][_0x91e9('0x6b')]+'%'};return _0x66a8e2;})});}_0x393e35=_[_0x91e9('0x53')]({},_0x393e35,_0x18921c['options']);return db[_0x91e9('0x70')][_0x91e9('0x38')]({'where':_0x393e35[_0x91e9('0x50')]})['then'](function(_0x5bf608){_0x2783ff[_0x91e9('0x38')]=_0x5bf608;if(_0x18921c['query'][_0x91e9('0x5a')]){_0x393e35[_0x91e9('0x54')]=[{'all':!![]}];}return db[_0x91e9('0x70')][_0x91e9('0x55')](_0x393e35);})[_0x91e9('0x26')](function(_0x112dcd){_0x2783ff['rows']=_0x112dcd;return _0x2783ff;});}})[_0x91e9('0x26')](respondWithFilteredResult(_0xd17177,_0x393e35))[_0x91e9('0x30')](handleError(_0xd17177,null));};exports[_0x91e9('0x71')]=function(_0x1d6b83,_0x4b2cb5,_0xf62d78){return db[_0x91e9('0x42')][_0x91e9('0x5c')]({'where':{'id':_0x1d6b83[_0x91e9('0x57')]['id']}})[_0x91e9('0x26')](handleEntityNotFound(_0x4b2cb5,null))[_0x91e9('0x26')](function(_0x1562f6){if(_0x1562f6){return _0x1562f6[_0x91e9('0x71')](_0x1d6b83[_0x91e9('0x47')]['ids']);}})['then'](respondWithStatusCode(_0x4b2cb5,null))[_0x91e9('0x30')](handleError(_0x4b2cb5,null));};exports['addAgents']=function(_0x1055eb,_0x4530e7,_0x52e7db){return db[_0x91e9('0x42')]['find']({'where':{'id':_0x1055eb[_0x91e9('0x57')]['id']}})['then'](handleEntityNotFound(_0x4530e7,null))[_0x91e9('0x26')](function(_0x175f89){if(_0x175f89){return _0x175f89[_0x91e9('0x72')](_0x1055eb[_0x91e9('0x5d')]['ids'],_['omit'](_0x1055eb[_0x91e9('0x5d')],[_0x91e9('0x6d'),'id'])||{})['spread'](function(_0x1321f1){for(var _0x4f7f9=0x0;_0x4f7f9<_0x1055eb[_0x91e9('0x5d')][_0x91e9('0x6d')]['length'];_0x4f7f9+=0x1){socket[_0x91e9('0x73')](_0x91e9('0x74'),{'UserId':Number(_0x1055eb[_0x91e9('0x5d')][_0x91e9('0x6d')][_0x4f7f9]),'WhatsappAccountId':Number(_0x1055eb[_0x91e9('0x57')]['id'])});}return _0x1321f1;});}})[_0x91e9('0x26')](respondWithResult(_0x4530e7,null))['catch'](handleError(_0x4530e7,null));};exports['removeAgents']=function(_0x160e7a,_0x2d5276,_0x450e3f){return db['WhatsappAccount'][_0x91e9('0x5c')]({'where':{'id':_0x160e7a['params']['id']}})[_0x91e9('0x26')](handleEntityNotFound(_0x2d5276,null))[_0x91e9('0x26')](function(_0x3819c2){if(_0x3819c2){return _0x3819c2[_0x91e9('0x75')](_0x160e7a[_0x91e9('0x47')][_0x91e9('0x6d')])[_0x91e9('0x26')](function(){if(_[_0x91e9('0x76')](_0x160e7a[_0x91e9('0x47')][_0x91e9('0x6d')])){for(var _0x169270=0x0;_0x169270<_0x160e7a[_0x91e9('0x47')][_0x91e9('0x6d')][_0x91e9('0x59')];_0x169270+=0x1){socket[_0x91e9('0x73')](_0x91e9('0x77'),{'UserId':Number(_0x160e7a[_0x91e9('0x47')][_0x91e9('0x6d')][_0x169270]),'WhatsappAccountId':Number(_0x160e7a['params']['id'])});}}else{socket['emit'](_0x91e9('0x77'),{'UserId':Number(_0x160e7a[_0x91e9('0x47')][_0x91e9('0x6d')]),'WhatsappAccountId':Number(_0x160e7a['params']['id'])});}});}})['then'](respondWithStatusCode(_0x2d5276,null))['catch'](handleError(_0x2d5276,null));};exports[_0x91e9('0x78')]=function(_0x33ba81,_0x253026,_0x2d2fd1){var _0x5c978d={};var _0x105182={};var _0xe21024;var _0x577d6e;return db['WhatsappAccount']['findOne']({'where':{'id':_0x33ba81['params']['id']}})[_0x91e9('0x26')](handleEntityNotFound(_0x253026,null))[_0x91e9('0x26')](function(_0x16eee4){if(_0x16eee4){_0xe21024=_0x16eee4;_0x105182[_0x91e9('0x46')]=_[_0x91e9('0x48')](db[_0x91e9('0x79')]['rawAttributes']);_0x105182[_0x91e9('0x47')]=_[_0x91e9('0x48')](_0x33ba81[_0x91e9('0x47')]);_0x105182['filters']=_[_0x91e9('0x4a')](_0x105182['model'],_0x105182[_0x91e9('0x47')]);_0x5c978d[_0x91e9('0x4b')]=_['intersection'](_0x105182[_0x91e9('0x46')],qs[_0x91e9('0x4c')](_0x33ba81[_0x91e9('0x47')][_0x91e9('0x4c')]));_0x5c978d[_0x91e9('0x4b')]=_0x5c978d[_0x91e9('0x4b')]['length']?_0x5c978d['attributes']:_0x105182[_0x91e9('0x46')];_0x5c978d[_0x91e9('0x4e')]=qs[_0x91e9('0x4f')](_0x33ba81['query']['sort']);_0x5c978d[_0x91e9('0x50')]=qs['filters'](_[_0x91e9('0x51')](_0x33ba81['query'],_0x105182[_0x91e9('0x49')]));if(_0x33ba81[_0x91e9('0x47')][_0x91e9('0x6b')]){_0x5c978d[_0x91e9('0x50')]=_[_0x91e9('0x53')](_0x5c978d[_0x91e9('0x50')],{'$or':_['map'](_0x5c978d[_0x91e9('0x4b')],function(_0x1451da){var _0x316e82={};_0x316e82[_0x1451da]={'$like':'%'+_0x33ba81[_0x91e9('0x47')][_0x91e9('0x6b')]+'%'};return _0x316e82;})});}_0x5c978d=_[_0x91e9('0x53')]({},_0x5c978d,_0x33ba81[_0x91e9('0x5b')]);return _0xe21024[_0x91e9('0x78')](_0x5c978d);}})[_0x91e9('0x26')](function(_0x1d114c){if(_0x1d114c){_0x577d6e=_0x1d114c[_0x91e9('0x59')];if(!_0x33ba81[_0x91e9('0x47')][_0x91e9('0x6a')]('nolimit')){_0x5c978d[_0x91e9('0x36')]=qs[_0x91e9('0x36')](_0x33ba81[_0x91e9('0x47')][_0x91e9('0x36')]);_0x5c978d['offset']=qs[_0x91e9('0x35')](_0x33ba81[_0x91e9('0x47')][_0x91e9('0x35')]);}return _0xe21024['getAgents'](_0x5c978d);}})[_0x91e9('0x26')](function(_0x2e9303){if(_0x2e9303){return _0x2e9303?{'count':_0x577d6e,'rows':_0x2e9303}:null;}})[_0x91e9('0x26')](respondWithResult(_0x253026,null))[_0x91e9('0x30')](handleError(_0x253026,null));};exports['addApplications']=function(_0x4b2610,_0x786641,_0x267e77){return db[_0x91e9('0x42')][_0x91e9('0x6f')]({'where':{'id':_0x4b2610['params']['id']}})['then'](handleEntityNotFound(_0x786641,null))[_0x91e9('0x26')](function(_0x3a0abc){if(_0x3a0abc){return db['sequelize'][_0x91e9('0x7a')](function(_0x5ae3dc){return db[_0x91e9('0x7b')][_0x91e9('0x3d')]({'where':{'WhatsappAccountId':_0x4b2610['params']['id']},'transaction':_0x5ae3dc})[_0x91e9('0x26')](function(_0x4e3bdf){var _0x477423=_[_0x91e9('0x41')](_0x4b2610['body'],function(_0x1ce5aa){_0x1ce5aa[_0x91e9('0x67')]=_0x4b2610[_0x91e9('0x57')]['id'];return _0x1ce5aa;});return db[_0x91e9('0x7b')][_0x91e9('0x7c')](_0x477423,{'transaction':_0x5ae3dc});});})['then'](function(){return db['WhatsappApplication'][_0x91e9('0x7d')]({'where':{'WhatsappAccountId':_0x4b2610[_0x91e9('0x57')]['id']},'order':_0x91e9('0x7e')});});}})['then'](respondWithResult(_0x786641,null))[_0x91e9('0x30')](handleError(_0x786641,null));};exports[_0x91e9('0x7f')]=function(_0x471110,_0x42d4dd,_0x586ffb){var _0x7ae96e={};var _0x5dd596={};var _0x4634a7;var _0x3ecc64;return db[_0x91e9('0x42')][_0x91e9('0x6f')]({'where':{'id':_0x471110['params']['id']}})[_0x91e9('0x26')](handleEntityNotFound(_0x42d4dd,null))[_0x91e9('0x26')](function(_0x5eb323){if(_0x5eb323){_0x4634a7=_0x5eb323;_0x5dd596[_0x91e9('0x46')]=_['keys'](db[_0x91e9('0x7b')][_0x91e9('0x43')]);_0x5dd596[_0x91e9('0x47')]=_[_0x91e9('0x48')](_0x471110[_0x91e9('0x47')]);_0x5dd596[_0x91e9('0x49')]=_[_0x91e9('0x4a')](_0x5dd596[_0x91e9('0x46')],_0x5dd596[_0x91e9('0x47')]);_0x7ae96e[_0x91e9('0x4b')]=_[_0x91e9('0x4a')](_0x5dd596['model'],qs[_0x91e9('0x4c')](_0x471110['query']['fields']));_0x7ae96e[_0x91e9('0x4b')]=_0x7ae96e[_0x91e9('0x4b')][_0x91e9('0x59')]?_0x7ae96e['attributes']:_0x5dd596[_0x91e9('0x46')];_0x7ae96e[_0x91e9('0x4e')]=qs[_0x91e9('0x4f')](_0x471110[_0x91e9('0x47')][_0x91e9('0x4f')]);_0x7ae96e[_0x91e9('0x50')]=qs[_0x91e9('0x49')](_['pick'](_0x471110[_0x91e9('0x47')],_0x5dd596[_0x91e9('0x49')]));if(_0x471110[_0x91e9('0x47')][_0x91e9('0x6b')]){_0x7ae96e['where']=_[_0x91e9('0x53')](_0x7ae96e['where'],{'$or':_['map'](_0x7ae96e['attributes'],function(_0x2925f4){var _0xafa982={};_0xafa982[_0x2925f4]={'$like':'%'+_0x471110[_0x91e9('0x47')][_0x91e9('0x6b')]+'%'};return _0xafa982;})});}_0x7ae96e=_[_0x91e9('0x53')]({},_0x7ae96e,_0x471110['options']);return _0x4634a7[_0x91e9('0x7f')](_0x7ae96e);}})[_0x91e9('0x26')](function(_0xba23f2){if(_0xba23f2){_0x3ecc64=_0xba23f2['length'];if(!_0x471110[_0x91e9('0x47')]['hasOwnProperty'](_0x91e9('0x4d'))){_0x7ae96e['limit']=qs[_0x91e9('0x36')](_0x471110[_0x91e9('0x47')][_0x91e9('0x36')]);_0x7ae96e[_0x91e9('0x35')]=qs[_0x91e9('0x35')](_0x471110['query'][_0x91e9('0x35')]);}return _0x4634a7[_0x91e9('0x7f')](_0x7ae96e);}})[_0x91e9('0x26')](function(_0x4a71f9){if(_0x4a71f9){return _0x4a71f9?{'count':_0x3ecc64,'rows':_0x4a71f9}:null;}})[_0x91e9('0x26')](respondWithResult(_0x42d4dd,null))['catch'](handleError(_0x42d4dd,null));};exports[_0x91e9('0x80')]=function(_0xd8b488,_0x5873fb,_0x3fe242){var _0x50e879={'channel':_0x91e9('0x81')};var _0x5b16e3=[];var _0x51dead=[];var _0x1beb3e={};return db[_0x91e9('0x42')][_0x91e9('0x5c')]({'where':{'id':_0xd8b488['params']['id']},'include':[{'model':db['WhatsappApplication'],'as':_0x91e9('0x82')}]})[_0x91e9('0x26')](handleEntityNotFound(_0x5873fb,null))[_0x91e9('0x26')](function(_0x46f154){_0x50e879['account']=_0x46f154;_0x50e879[_0x91e9('0x83')]=_[_0x91e9('0x84')](_0x46f154[_0x91e9('0x82')],[_0x91e9('0x7e')],[_0x91e9('0x85')]);if(_0x50e879[_0x91e9('0x86')][_0x91e9('0x82')]){delete _0x50e879[_0x91e9('0x86')]['Applications'];}return db['CmContact'][_0x91e9('0x65')]();})[_0x91e9('0x26')](function(_0x258ead){if(!_0x258ead){throw new db[(_0x91e9('0x87'))][(_0x91e9('0x88'))]('no\x20available\x20attributes');}_0x5b16e3=_[_0x91e9('0x89')](_['keys'](_0x258ead),['createdAt',_0x91e9('0x8a')]);_0x51dead=_[_0x91e9('0x89')](_['keys'](_0x258ead),[_0x91e9('0x8b'),_0x91e9('0x8a'),_0x91e9('0x8c'),'ListId']);_0x50e879[_0x91e9('0x5d')]={'mapKey':_0x91e9('0x8d')};if(_0x50e879[_0x91e9('0x86')]['type']&&_0x50e879['account'][_0x91e9('0x44')]===_0x91e9('0x8e')){_0x50e879[_0x91e9('0x5d')][_0x91e9('0x8f')]=_0xd8b488['body'][_0x91e9('0x90')][_0x91e9('0x91')]('whatsapp:','');_0x50e879[_0x91e9('0x5d')][_0x91e9('0x5d')]=_0xd8b488['body'][_0x91e9('0x92')];_0x50e879[_0x91e9('0x5d')]['messageId']=_0xd8b488[_0x91e9('0x5d')][_0x91e9('0x93')];}if(_0x50e879[_0x91e9('0x5d')]['id']){delete _0x50e879[_0x91e9('0x5d')]['id'];}if(_['isNil'](_0x50e879[_0x91e9('0x5d')]['from'])){throw new db[(_0x91e9('0x87'))][(_0x91e9('0x88'))](_0x91e9('0x94'));}if(_[_0x91e9('0x95')](_0x50e879[_0x91e9('0x5d')]['body'])||_0x50e879[_0x91e9('0x5d')][_0x91e9('0x5d')]===''){throw new db[(_0x91e9('0x87'))][(_0x91e9('0x88'))](_0x91e9('0x96'));}if(_[_0x91e9('0x95')](_0x50e879['body'][_0x91e9('0x97')])){throw new db[(_0x91e9('0x87'))]['ValidationError'](_0x91e9('0x98')+_0x51dead);}if(!_[_0x91e9('0x99')](_0x51dead,_0x50e879['body']['mapKey'])){throw new db[(_0x91e9('0x87'))][(_0x91e9('0x88'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x51dead);}_0x1beb3e[_0x50e879['body'][_0x91e9('0x97')]]=_0x50e879[_0x91e9('0x5d')][_0x91e9('0x8f')];return db[_0x91e9('0x9a')][_0x91e9('0x5c')]({'where':{'id':_0x50e879[_0x91e9('0x86')][_0x91e9('0x9b')]},'include':[{'model':db[_0x91e9('0x9c')],'as':_0x91e9('0x9d'),'where':_0x1beb3e,'limit':0x1,'order':[[_0x91e9('0x8a'),_0x91e9('0x9e')]]}]});})[_0x91e9('0x26')](handleEntityNotFound(_0x5873fb,null))[_0x91e9('0x26')](function(_0x158e8c){if(_0x158e8c){_0x50e879[_0x91e9('0x9f')]=_[_0x91e9('0xa0')](_0x158e8c,['Contacts']);if(_0x158e8c[_0x91e9('0x9d')][_0x91e9('0x59')]){return _0x158e8c[_0x91e9('0x9d')][0x0];}var _0x5c2127=_[_0x91e9('0xa1')](_0x50e879[_0x91e9('0x5d')],{'firstName':_0x50e879[_0x91e9('0x5d')][_0x91e9('0x8f')],'ListId':_0x158e8c['id']});_0x5c2127[_0x50e879[_0x91e9('0x5d')]['mapKey']]=_0x50e879['body'][_0x91e9('0x8f')];return db[_0x91e9('0x9c')][_0x91e9('0x64')](_0x5c2127,{'fields':_0x5b16e3,'raw':!![]});}})[_0x91e9('0x26')](handleEntityNotFound(_0x5873fb,null))[_0x91e9('0x26')](function(_0x1ac231){if(_0x1ac231){_0x50e879['contact']=_0x1ac231;var _0xf5e81f={'ContactId':_0x1ac231['id'],'phone':_0x50e879[_0x91e9('0x5d')][_0x91e9('0x8f')],'WhatsappAccountId':_0xd8b488['params']['id']};var _0x481875={'ContactId':_0x1ac231['id'],'WhatsappAccountId':_0xd8b488[_0x91e9('0x57')]['id'],'closed':![]};return db['WhatsappInteraction'][_0x91e9('0x5c')]({'where':_0x481875})[_0x91e9('0x26')](function(_0x38be68){if(_0x38be68){return[_0x38be68,![]];}return db[_0x91e9('0xa2')][_0x91e9('0x64')](_0xf5e81f)[_0x91e9('0x26')](function(_0x5191ae){return[_0x5191ae,!![]];});});}})[_0x91e9('0xa3')](function(_0x503897,_0x21839d){_0x50e879[_0x91e9('0xa4')]=_0x503897[_0x91e9('0x5f')]({'plain':!![]});_0x50e879[_0x91e9('0xa4')]['created']=![];if(_0x21839d){if(_0x50e879[_0x91e9('0x86')]['autoclose']){_0x50e879[_0x91e9('0x83')]['push']({'id':0x0,'priority':_0x50e879[_0x91e9('0x83')][_0x91e9('0x59')]+0x1,'app':_0x91e9('0xa5'),'appdata':'unmanaged','interval':'*,*,*,*'});}_0x50e879[_0x91e9('0xa4')][_0x91e9('0xa6')]=!![];}return db[_0x91e9('0xa7')][_0x91e9('0x64')]({'phone':_0x50e879[_0x91e9('0x5d')][_0x91e9('0x8f')],'messageId':_0x50e879[_0x91e9('0x5d')][_0x91e9('0xa8')],'body':_0x50e879[_0x91e9('0x5d')][_0x91e9('0x5d')],'WhatsappAccountId':_0xd8b488[_0x91e9('0x57')]['id'],'WhatsappInteractionId':_0x503897['id'],'direction':'in','ContactId':_0x503897[_0x91e9('0xa9')],'AttachmentId':_0x50e879[_0x91e9('0x5d')][_0x91e9('0xaa')]});})[_0x91e9('0x26')](function(_0x478682){_0x50e879[_0x91e9('0x2e')]=_0x478682;if(_0x50e879['interaction'][_0x91e9('0xab')]){return db[_0x91e9('0x79')]['find']({'attributes':['id',_0x91e9('0x3e')],'where':{'id':_0x50e879[_0x91e9('0xa4')][_0x91e9('0xab')]}})[_0x91e9('0x26')](function(_0x2e99f3){if(_0x2e99f3){_0x50e879[_0x91e9('0x83')][_0x91e9('0xac')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x2e99f3['name']+','+(_0x50e879['account']['waitForTheAssignedAgent']||0xa),'interval':_0x91e9('0xad')});}return respondWithRpcPromise(_0x91e9('0xae'),_0x91e9('0xaf'),_0x50e879);});}return respondWithRpcPromise(_0x91e9('0xae'),'startRouting',_0x50e879);})[_0x91e9('0x26')](function(_0x3c4c75){if(_0x3c4c75){var _0xe9cb25=0xc8;var _0x543262='receiveMessage';logger['info'](_0x91e9('0x2a'),_0x543262,_0xe9cb25,_0x91e9('0xb0'));logger[_0x91e9('0xb1')](_0x91e9('0xb2'),_0x543262,_0xe9cb25,'entity\x20found',JSON[_0x91e9('0x2b')](_0x3c4c75));if(_0x50e879['account'][_0x91e9('0x44')]===_0x91e9('0x8e')){return _0x5873fb[_0x91e9('0x32')](_0xe9cb25)[_0x91e9('0x39')](_0x91e9('0xb3'),_0x91e9('0xb4'))[_0x91e9('0x3f')](_0x91e9('0xb5'));}else{return _0x5873fb[_0x91e9('0x32')](_0xe9cb25)['json'](_0x3c4c75);}}})[_0x91e9('0x30')](handleError(_0x5873fb,null));};exports[_0x91e9('0x3f')]=function(_0x587171,_0x54fa55,_0x29db06){var _0x3a191f,_0x30eb36,_0x44cce6;if(_[_0x91e9('0x95')](_0x587171[_0x91e9('0x5d')][_0x91e9('0x5d')])||_0x587171[_0x91e9('0x5d')][_0x91e9('0x5d')]===''){throw new db[(_0x91e9('0x87'))][(_0x91e9('0x88'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x587171[_0x91e9('0x5d')]['to'])){throw new db[(_0x91e9('0x87'))]['ValidationError']('to\x20is\x20mandatory');}_0x3a191f=_0x587171['body']['to'];return db[_0x91e9('0x42')]['find']({'where':{'id':_0x587171[_0x91e9('0x57')]['id']},'include':[{'model':db['CmList'],'as':_0x91e9('0xb6'),'include':[{'model':db[_0x91e9('0x9c')],'as':_0x91e9('0x9d'),'where':{'mobile':_0x3a191f},'limit':0x1,'order':[[_0x91e9('0x8a'),'DESC']]}]}]})[_0x91e9('0x26')](handleEntityNotFound(_0x54fa55,null))[_0x91e9('0x26')](function(_0x304778){if(_0x304778&&_0x304778[_0x91e9('0xb6')]){_0x30eb36=_0x304778[_0x91e9('0x5f')]({'plain':!![]});if(_0x30eb36['List']&&_0x30eb36['List'][_0x91e9('0x9d')][_0x91e9('0x59')]){return _0x30eb36[_0x91e9('0xb6')]['Contacts'][0x0];}return db['CmContact'][_0x91e9('0x64')](_[_0x91e9('0xa1')](_0x587171['body'],{'firstName':_0x3a191f,'mobile':_0x3a191f,'phone':_0x3a191f,'ListId':_0x30eb36[_0x91e9('0x9b')]}));}})[_0x91e9('0x26')](handleEntityNotFound(_0x54fa55,null))[_0x91e9('0x26')](function(_0x3fd7ad){if(_0x3fd7ad){_0x44cce6=_0x3fd7ad;return db[_0x91e9('0xa2')][_0x91e9('0x5c')]({'where':{'ContactId':_0x44cce6['id'],'closed':![],'WhatsappAccountId':_0x30eb36['id']}})[_0x91e9('0x26')](function(_0xdd86ef){if(_0xdd86ef){return[_0xdd86ef,![]];}return db[_0x91e9('0xa2')]['create']({'UserId':_0x587171['user']['id'],'ContactId':_0x44cce6['id'],'WhatsappAccountId':_0x30eb36['id'],'phone':_0x3a191f,'firstMsgDirection':_0x91e9('0xb7'),'Messages':[_['merge'](_0x587171[_0x91e9('0x5d')],{'read':![],'body':_0x587171[_0x91e9('0x5d')][_0x91e9('0x5d')],'phone':_0x3a191f,'WhatsappAccountId':_0x30eb36['id'],'UserId':_0x587171['user']['id'],'ContactId':_0x44cce6['id']})]},{'include':[{'model':db[_0x91e9('0xa7')],'as':_0x91e9('0xb8')}]})[_0x91e9('0x26')](function(_0xd3c557){return[_0xd3c557,!![]];});});}})['spread'](function(_0x1f727f,_0x54e4a6){if(_0x54e4a6){return _0x1f727f;}return db[_0x91e9('0xa7')][_0x91e9('0x64')](_[_0x91e9('0x53')](_0x587171['body'],{'read':![],'body':_0x587171[_0x91e9('0x5d')]['body'],'phone':_0x3a191f,'WhatsappAccountId':_0x30eb36['id'],'WhatsappInteractionId':_0x1f727f['id'],'UserId':_0x587171[_0x91e9('0x5e')]['id'],'ContactId':_0x44cce6['id']}))['then'](function(_0x1cbdba){_0x1f727f['dataValues']['Messages']=[];_0x1f727f[_0x91e9('0xb9')]['Messages']['push'](_0x1cbdba[_0x91e9('0xb9')]);return _0x1f727f;});})[_0x91e9('0x26')](respondWithResult(_0x54fa55,null))[_0x91e9('0x30')](handleError(_0x54fa55,null));};
\ No newline at end of file
+var _0x31b2=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','client','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','sendStatus','json','undefined','count','offset','limit','status','apply','reject','save','update','destroy','get','WhatsappAccounts','UserProfileResource','end','stack','name','index','Pause','mandatoryDispositionPause','map','WhatsappAccount','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','type','VIRTUAL','filter','merge','includeAll','include','findAll','rows','show','params','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','WhatsappAccountId','Disposition','findOne','nolimit','options','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','addAgents','omit','spread','emit','removeAgents','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','WhatsappApplication','bulkCreate','priority','Applications','account','applications','orderBy','asc','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','whatsapp:','Body','messageId','MessageSid','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','list','contact','WhatsappInteraction','interaction','push','unmanaged','created','WhatsappMessage','ContactId','UserId','unshift','agent','waitForTheAssignedAgent','*,*,*,*','startRouting','Start','entity\x20found','stringify','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','send','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce'];(function(_0x43a8b9,_0x4ff1e0){var _0x39894b=function(_0x48b507){while(--_0x48b507){_0x43a8b9['push'](_0x43a8b9['shift']());}};_0x39894b(++_0x4ff1e0);}(_0x31b2,0xa4));var _0x231b=function(_0x3f3bad,_0x193f06){_0x3f3bad=_0x3f3bad-0x0;var _0x4f0801=_0x31b2[_0x3f3bad];return _0x4f0801;};'use strict';var emlformat=require(_0x231b('0x0'));var rimraf=require(_0x231b('0x1'));var zipdir=require(_0x231b('0x2'));var jsonpatch=require(_0x231b('0x3'));var rp=require(_0x231b('0x4'));var moment=require(_0x231b('0x5'));var BPromise=require(_0x231b('0x6'));var Mustache=require(_0x231b('0x7'));var util=require(_0x231b('0x8'));var path=require(_0x231b('0x9'));var sox=require(_0x231b('0xa'));var csv=require(_0x231b('0xb'));var ejs=require(_0x231b('0xc'));var fs=require('fs');var fs_extra=require(_0x231b('0xd'));var _=require(_0x231b('0xe'));var squel=require('squel');var crypto=require(_0x231b('0xf'));var jsforce=require(_0x231b('0x10'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x231b('0x11'));var Papa=require(_0x231b('0x12'));var Redis=require(_0x231b('0x13'));var authService=require(_0x231b('0x14'));var qs=require(_0x231b('0x15'));var as=require(_0x231b('0x16'));var hardwareService=require(_0x231b('0x17'));var logger=require('../../config/logger')(_0x231b('0x18'));var utils=require(_0x231b('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x231b('0x1a'));var db=require(_0x231b('0x1b'))['db'];config[_0x231b('0x1c')]=_[_0x231b('0x1d')](config[_0x231b('0x1c')],{'host':_0x231b('0x1e'),'port':0x18eb});var socket=require(_0x231b('0x1f'))(new Redis(config[_0x231b('0x1c')]));require(_0x231b('0x20'))[_0x231b('0x21')](socket);var jayson=require('jayson/promise');var client=jayson[_0x231b('0x22')]['http']({'port':0x232c});function respondWithRpcPromise(_0x329b03,_0x1f9371,_0x579ab8,_0x576743){return new BPromise(function(_0x1c070c,_0x51cab1){var _0x20fbfb=_0x576743||client;return _0x20fbfb['request'](_0x329b03,_0x579ab8)[_0x231b('0x23')](function(_0x38bd0b){logger[_0x231b('0x24')](_0x231b('0x25'),_0x1f9371,_0x231b('0x26'));logger['debug']('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x1f9371,'request\x20sent',JSON['stringify'](_0x38bd0b));if(_0x38bd0b[_0x231b('0x27')]){if(_0x38bd0b[_0x231b('0x27')][_0x231b('0x28')]===0x1f4){logger['error'](_0x231b('0x25'),_0x1f9371,_0x38bd0b[_0x231b('0x27')]['message']);return _0x51cab1(_0x38bd0b[_0x231b('0x27')][_0x231b('0x29')]);}logger[_0x231b('0x27')]('WhatsappAccount,\x20%s,\x20%s',_0x1f9371,_0x38bd0b[_0x231b('0x27')][_0x231b('0x29')]);return _0x1c070c(_0x38bd0b[_0x231b('0x27')][_0x231b('0x29')]);}else{logger[_0x231b('0x24')](_0x231b('0x25'),_0x1f9371,_0x231b('0x26'));_0x1c070c(_0x38bd0b[_0x231b('0x2a')]['message']);}})[_0x231b('0x2b')](function(_0x88b270){logger[_0x231b('0x27')](_0x231b('0x25'),_0x1f9371,_0x88b270);_0x51cab1(_0x88b270);});});}function respondWithStatusCode(_0xb1cf02,_0x51bf42){_0x51bf42=_0x51bf42||0xcc;return function(_0x41e5e9){if(_0x41e5e9){return _0xb1cf02[_0x231b('0x2c')](_0x51bf42);}return _0xb1cf02['status'](_0x51bf42)['end']();};}function respondWithResult(_0x21340a,_0x4ab007){_0x4ab007=_0x4ab007||0xc8;return function(_0xca1c22){if(_0xca1c22){return _0x21340a['status'](_0x4ab007)[_0x231b('0x2d')](_0xca1c22);}};}function respondWithFilteredResult(_0x4a55a6,_0x423ae7){return function(_0x508f4e){if(_0x508f4e){var _0x2967a9=typeof _0x423ae7['offset']==='undefined'&&typeof _0x423ae7['limit']===_0x231b('0x2e');var _0x1f47e3=_0x508f4e[_0x231b('0x2f')];var _0x42c2e6=_0x2967a9?0x0:_0x423ae7[_0x231b('0x30')];var _0x3d0cfa=_0x2967a9?_0x508f4e[_0x231b('0x2f')]:_0x423ae7['offset']+_0x423ae7[_0x231b('0x31')];var _0x3b29d9;if(_0x3d0cfa>=_0x1f47e3){_0x3d0cfa=_0x1f47e3;_0x3b29d9=0xc8;}else{_0x3b29d9=0xce;}_0x4a55a6[_0x231b('0x32')](_0x3b29d9);return _0x4a55a6['set']('Content-Range',_0x42c2e6+'-'+_0x3d0cfa+'/'+_0x1f47e3)[_0x231b('0x2d')](_0x508f4e);}return null;};}function patchUpdates(_0x28be64){return function(_0x15cd7d){try{jsonpatch[_0x231b('0x33')](_0x15cd7d,_0x28be64,!![]);}catch(_0x1e374c){return BPromise[_0x231b('0x34')](_0x1e374c);}return _0x15cd7d[_0x231b('0x35')]();};}function saveUpdates(_0x4bfb9c,_0x1feb03){return function(_0x472096){if(_0x472096){return _0x472096[_0x231b('0x36')](_0x4bfb9c)[_0x231b('0x23')](function(_0xee552){return _0xee552;});}return null;};}function removeEntity(_0x99eb3f,_0x565f78){return function(_0x10629f){if(_0x10629f){return _0x10629f[_0x231b('0x37')]()[_0x231b('0x23')](function(){var _0x4127c2=_0x10629f[_0x231b('0x38')]({'plain':!![]});var _0x4bd8cc=_0x231b('0x39');return db[_0x231b('0x3a')]['destroy']({'where':{'type':_0x4bd8cc,'resourceId':_0x4127c2['id']}})[_0x231b('0x23')](function(){return _0x10629f;});})[_0x231b('0x23')](function(){_0x99eb3f[_0x231b('0x32')](0xcc)[_0x231b('0x3b')]();});}};}function handleEntityNotFound(_0x36a913,_0x2b47c4){return function(_0x46dd0c){if(!_0x46dd0c){_0x36a913[_0x231b('0x2c')](0x194);}return _0x46dd0c;};}function handleError(_0x35769f,_0x35648a){_0x35648a=_0x35648a||0x1f4;return function(_0x1cd8a0){logger[_0x231b('0x27')](_0x1cd8a0[_0x231b('0x3c')]);if(_0x1cd8a0['name']){delete _0x1cd8a0[_0x231b('0x3d')];}_0x35769f[_0x231b('0x32')](_0x35648a)['send'](_0x1cd8a0);};}exports[_0x231b('0x3e')]=function(_0x5b206b,_0xa99a54){var _0x2bf023={'include':[{'model':db[_0x231b('0x3f')],'as':_0x231b('0x40')}]},_0x4d6414={},_0x30e8b3={'count':0x0,'rows':[]};var _0x329c34=_[_0x231b('0x41')](db[_0x231b('0x42')]['rawAttributes'],function(_0x151ca8){return{'name':_0x151ca8['fieldName'],'type':_0x151ca8['type'][_0x231b('0x43')]};});_0x4d6414['model']=_[_0x231b('0x41')](_0x329c34,_0x231b('0x3d'));_0x4d6414[_0x231b('0x44')]=_[_0x231b('0x45')](_0x5b206b['query']);_0x4d6414[_0x231b('0x46')]=_[_0x231b('0x47')](_0x4d6414[_0x231b('0x48')],_0x4d6414[_0x231b('0x44')]);_0x2bf023[_0x231b('0x49')]=_['intersection'](_0x4d6414[_0x231b('0x48')],qs[_0x231b('0x4a')](_0x5b206b[_0x231b('0x44')][_0x231b('0x4a')]));_0x2bf023[_0x231b('0x49')]=_0x2bf023['attributes'][_0x231b('0x4b')]?_0x2bf023[_0x231b('0x49')]:_0x4d6414[_0x231b('0x48')];if(!_0x5b206b[_0x231b('0x44')][_0x231b('0x4c')]('nolimit')){_0x2bf023[_0x231b('0x31')]=qs[_0x231b('0x31')](_0x5b206b[_0x231b('0x44')][_0x231b('0x31')]);_0x2bf023[_0x231b('0x30')]=qs[_0x231b('0x30')](_0x5b206b[_0x231b('0x44')]['offset']);}_0x2bf023[_0x231b('0x4d')]=qs[_0x231b('0x4e')](_0x5b206b[_0x231b('0x44')][_0x231b('0x4e')]);_0x2bf023[_0x231b('0x4f')]=qs[_0x231b('0x46')](_[_0x231b('0x50')](_0x5b206b[_0x231b('0x44')],_0x4d6414[_0x231b('0x46')]),_0x329c34);if(_0x5b206b[_0x231b('0x44')]['filter']){_0x2bf023[_0x231b('0x4f')]=_['merge'](_0x2bf023['where'],{'$or':_[_0x231b('0x41')](_0x329c34,function(_0xc7c109){if(_0xc7c109[_0x231b('0x51')]!==_0x231b('0x52')){var _0x4bbdc3={};_0x4bbdc3[_0xc7c109[_0x231b('0x3d')]]={'$like':'%'+_0x5b206b[_0x231b('0x44')][_0x231b('0x53')]+'%'};return _0x4bbdc3;}})});}_0x2bf023=_[_0x231b('0x54')]({},_0x2bf023,_0x5b206b['options']);var _0x5dca37={'where':_0x2bf023[_0x231b('0x4f')]};return db[_0x231b('0x42')]['count'](_0x5dca37)[_0x231b('0x23')](function(_0x1863c3){_0x30e8b3[_0x231b('0x2f')]=_0x1863c3;if(_0x5b206b[_0x231b('0x44')][_0x231b('0x55')]){_0x2bf023[_0x231b('0x56')]=[{'all':!![]}];}return db['WhatsappAccount'][_0x231b('0x57')](_0x2bf023);})[_0x231b('0x23')](function(_0x19de92){_0x30e8b3[_0x231b('0x58')]=_0x19de92;return _0x30e8b3;})['then'](respondWithFilteredResult(_0xa99a54,_0x2bf023))[_0x231b('0x2b')](handleError(_0xa99a54,null));};exports[_0x231b('0x59')]=function(_0x2c908a,_0x33fbb0){var _0x3729f7={'raw':![],'where':{'id':_0x2c908a[_0x231b('0x5a')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x3768dc={};_0x3768dc[_0x231b('0x48')]=_[_0x231b('0x45')](db[_0x231b('0x42')][_0x231b('0x5b')]);_0x3768dc[_0x231b('0x44')]=_[_0x231b('0x45')](_0x2c908a[_0x231b('0x44')]);_0x3768dc[_0x231b('0x46')]=_[_0x231b('0x47')](_0x3768dc[_0x231b('0x48')],_0x3768dc['query']);_0x3729f7['attributes']=_[_0x231b('0x47')](_0x3768dc[_0x231b('0x48')],qs[_0x231b('0x4a')](_0x2c908a[_0x231b('0x44')][_0x231b('0x4a')]));_0x3729f7['attributes']=_0x3729f7[_0x231b('0x49')][_0x231b('0x4b')]?_0x3729f7[_0x231b('0x49')]:_0x3768dc['model'];if(_0x2c908a['query']['includeAll']){_0x3729f7[_0x231b('0x56')]=[{'all':!![]}];}_0x3729f7=_['merge']({},_0x3729f7,_0x2c908a['options']);return db[_0x231b('0x42')][_0x231b('0x5c')](_0x3729f7)[_0x231b('0x23')](handleEntityNotFound(_0x33fbb0,null))[_0x231b('0x23')](respondWithResult(_0x33fbb0,null))['catch'](handleError(_0x33fbb0,null));};exports[_0x231b('0x5d')]=function(_0x504397,_0x40f314){return db[_0x231b('0x42')][_0x231b('0x5d')](_0x504397[_0x231b('0x5e')],{})['then'](function(_0x8c3273){var _0x3335e4=_0x504397[_0x231b('0x5f')]['get']({'plain':!![]});if(!_0x3335e4)throw new Error(_0x231b('0x60'));if(_0x3335e4[_0x231b('0x61')]===_0x231b('0x5f')){var _0xeb04d0=_0x8c3273['get']({'plain':!![]});var _0x4d01f3=_0x231b('0x39');return db['UserProfileSection'][_0x231b('0x5c')]({'where':{'name':_0x4d01f3,'userProfileId':_0x3335e4[_0x231b('0x62')]},'raw':!![]})[_0x231b('0x23')](function(_0x14a725){if(_0x14a725&&_0x14a725['autoAssociation']===0x0){return db[_0x231b('0x3a')][_0x231b('0x5d')]({'name':_0xeb04d0[_0x231b('0x3d')],'resourceId':_0xeb04d0['id'],'type':_0x14a725[_0x231b('0x3d')],'sectionId':_0x14a725['id']},{})['then'](function(){return _0x8c3273;});}else{return _0x8c3273;}})['catch'](function(_0x434c8a){logger[_0x231b('0x27')](_0x231b('0x63'),_0x434c8a);throw _0x434c8a;});}return _0x8c3273;})[_0x231b('0x23')](respondWithResult(_0x40f314,0xc9))[_0x231b('0x2b')](handleError(_0x40f314,null));};exports[_0x231b('0x36')]=function(_0x4f3697,_0x21eadf){if(_0x4f3697[_0x231b('0x5e')]['id']){delete _0x4f3697[_0x231b('0x5e')]['id'];}return db[_0x231b('0x42')][_0x231b('0x5c')]({'where':{'id':_0x4f3697['params']['id']},'include':[{'model':db[_0x231b('0x3f')],'as':_0x231b('0x40')}]})[_0x231b('0x23')](handleEntityNotFound(_0x21eadf,null))[_0x231b('0x23')](saveUpdates(_0x4f3697[_0x231b('0x5e')],null))[_0x231b('0x23')](respondWithResult(_0x21eadf,null))[_0x231b('0x2b')](handleError(_0x21eadf,null));};exports[_0x231b('0x37')]=function(_0x1a1b11,_0xd4c3ef){return db['WhatsappAccount'][_0x231b('0x5c')]({'where':{'id':_0x1a1b11[_0x231b('0x5a')]['id']}})[_0x231b('0x23')](handleEntityNotFound(_0xd4c3ef,null))[_0x231b('0x23')](removeEntity(_0xd4c3ef,null))[_0x231b('0x2b')](handleError(_0xd4c3ef,null));};exports[_0x231b('0x64')]=function(_0x232bef,_0x3d085f){return db['WhatsappAccount'][_0x231b('0x64')]()[_0x231b('0x23')](respondWithResult(_0x3d085f,null))[_0x231b('0x2b')](handleError(_0x3d085f,null));};exports[_0x231b('0x65')]=function(_0x4ebd38,_0x1dc770,_0x29b405){if(_0x4ebd38[_0x231b('0x5e')]['id']){delete _0x4ebd38['body']['id'];}return db[_0x231b('0x42')]['find']({'where':{'id':_0x4ebd38[_0x231b('0x5a')]['id']}})['then'](handleEntityNotFound(_0x1dc770,null))[_0x231b('0x23')](function(_0x4b0089){if(_0x4b0089){_0x4ebd38['body'][_0x231b('0x66')]=_0x4b0089['id'];return db[_0x231b('0x67')][_0x231b('0x5d')](_0x4ebd38['body']);}})[_0x231b('0x23')](respondWithResult(_0x1dc770,null))[_0x231b('0x2b')](handleError(_0x1dc770,null));};exports['getDispositions']=function(_0x3faa40,_0xa0c2b2,_0x5e5ab0){var _0x3200e8={'raw':![],'where':{}};var _0x328e78={};var _0x13b307={'count':0x0,'rows':[]};return db[_0x231b('0x42')][_0x231b('0x68')]({'where':{'id':_0x3faa40['params']['id']}})['then'](handleEntityNotFound(_0xa0c2b2,null))[_0x231b('0x23')](function(_0x2470ad){if(_0x2470ad){_0x328e78[_0x231b('0x48')]=_[_0x231b('0x45')](db[_0x231b('0x67')][_0x231b('0x5b')]);_0x328e78[_0x231b('0x44')]=_['keys'](_0x3faa40[_0x231b('0x44')]);_0x328e78[_0x231b('0x46')]=_[_0x231b('0x47')](_0x328e78['model'],_0x328e78[_0x231b('0x44')]);_0x3200e8[_0x231b('0x49')]=_[_0x231b('0x47')](_0x328e78[_0x231b('0x48')],qs[_0x231b('0x4a')](_0x3faa40[_0x231b('0x44')][_0x231b('0x4a')]));_0x3200e8[_0x231b('0x49')]=_0x3200e8[_0x231b('0x49')]['length']?_0x3200e8[_0x231b('0x49')]:_0x328e78[_0x231b('0x48')];if(!_0x3faa40[_0x231b('0x44')][_0x231b('0x4c')](_0x231b('0x69'))){_0x3200e8['limit']=qs['limit'](_0x3faa40[_0x231b('0x44')][_0x231b('0x31')]);_0x3200e8[_0x231b('0x30')]=qs[_0x231b('0x30')](_0x3faa40[_0x231b('0x44')][_0x231b('0x30')]);}_0x3200e8[_0x231b('0x4d')]=qs[_0x231b('0x4e')](_0x3faa40['query'][_0x231b('0x4e')]);_0x3200e8[_0x231b('0x4f')]=qs[_0x231b('0x46')](_['pick'](_0x3faa40[_0x231b('0x44')],_0x328e78['filters']));_0x3200e8[_0x231b('0x4f')][_0x231b('0x66')]=_0x2470ad['id'];if(_0x3faa40[_0x231b('0x44')][_0x231b('0x53')]){_0x3200e8[_0x231b('0x4f')]=_['merge'](_0x3200e8['where'],{'$or':_[_0x231b('0x41')](_0x3200e8[_0x231b('0x49')],function(_0x5d5acd){var _0xccd32f={};_0xccd32f[_0x5d5acd]={'$like':'%'+_0x3faa40[_0x231b('0x44')][_0x231b('0x53')]+'%'};return _0xccd32f;})});}_0x3200e8=_[_0x231b('0x54')]({},_0x3200e8,_0x3faa40[_0x231b('0x6a')]);return db[_0x231b('0x67')]['count']({'where':_0x3200e8[_0x231b('0x4f')]})[_0x231b('0x23')](function(_0x5bd3ab){_0x13b307[_0x231b('0x2f')]=_0x5bd3ab;if(_0x3faa40[_0x231b('0x44')][_0x231b('0x55')]){_0x3200e8['include']=[{'all':!![]}];}return db['Disposition'][_0x231b('0x57')](_0x3200e8);})[_0x231b('0x23')](function(_0x3a6c5e){_0x13b307[_0x231b('0x58')]=_0x3a6c5e;return _0x13b307;});}})[_0x231b('0x23')](respondWithFilteredResult(_0xa0c2b2,_0x3200e8))[_0x231b('0x2b')](handleError(_0xa0c2b2,null));};exports['removeDispositions']=function(_0x3c0be0,_0x2075a7,_0x404540){return db['WhatsappAccount'][_0x231b('0x5c')]({'where':{'id':_0x3c0be0[_0x231b('0x5a')]['id']}})[_0x231b('0x23')](handleEntityNotFound(_0x2075a7,null))[_0x231b('0x23')](function(_0x1e3fda){if(_0x1e3fda){return _0x1e3fda[_0x231b('0x6b')](_0x3c0be0['query'][_0x231b('0x6c')]);}})[_0x231b('0x23')](respondWithStatusCode(_0x2075a7,null))[_0x231b('0x2b')](handleError(_0x2075a7,null));};exports[_0x231b('0x6d')]=function(_0x18eaae,_0xcd77ff,_0x5f1d72){if(_0x18eaae[_0x231b('0x5e')]['id']){delete _0x18eaae[_0x231b('0x5e')]['id'];}return db[_0x231b('0x42')]['find']({'where':{'id':_0x18eaae[_0x231b('0x5a')]['id']}})[_0x231b('0x23')](handleEntityNotFound(_0xcd77ff,null))['then'](function(_0x267b3b){if(_0x267b3b){_0x18eaae['body'][_0x231b('0x66')]=_0x267b3b['id'];return db['CannedAnswer']['create'](_0x18eaae['body']);}})[_0x231b('0x23')](respondWithResult(_0xcd77ff,null))[_0x231b('0x2b')](handleError(_0xcd77ff,null));};exports[_0x231b('0x6e')]=function(_0x4667ee,_0x31745e,_0x542ff5){var _0x4b84fc={'raw':![],'where':{}};var _0x5a5e8f={};var _0x8908e9={'count':0x0,'rows':[]};return db[_0x231b('0x42')][_0x231b('0x68')]({'where':{'id':_0x4667ee[_0x231b('0x5a')]['id']}})[_0x231b('0x23')](handleEntityNotFound(_0x31745e,null))[_0x231b('0x23')](function(_0x33d32b){if(_0x33d32b){_0x5a5e8f['model']=_['keys'](db[_0x231b('0x6f')][_0x231b('0x5b')]);_0x5a5e8f[_0x231b('0x44')]=_['keys'](_0x4667ee['query']);_0x5a5e8f[_0x231b('0x46')]=_[_0x231b('0x47')](_0x5a5e8f[_0x231b('0x48')],_0x5a5e8f[_0x231b('0x44')]);_0x4b84fc[_0x231b('0x49')]=_['intersection'](_0x5a5e8f[_0x231b('0x48')],qs[_0x231b('0x4a')](_0x4667ee[_0x231b('0x44')][_0x231b('0x4a')]));_0x4b84fc[_0x231b('0x49')]=_0x4b84fc[_0x231b('0x49')]['length']?_0x4b84fc[_0x231b('0x49')]:_0x5a5e8f[_0x231b('0x48')];if(!_0x4667ee[_0x231b('0x44')][_0x231b('0x4c')](_0x231b('0x69'))){_0x4b84fc[_0x231b('0x31')]=qs['limit'](_0x4667ee['query'][_0x231b('0x31')]);_0x4b84fc[_0x231b('0x30')]=qs[_0x231b('0x30')](_0x4667ee[_0x231b('0x44')][_0x231b('0x30')]);}_0x4b84fc[_0x231b('0x4d')]=qs['sort'](_0x4667ee[_0x231b('0x44')][_0x231b('0x4e')]);_0x4b84fc['where']=qs['filters'](_[_0x231b('0x50')](_0x4667ee['query'],_0x5a5e8f[_0x231b('0x46')]));_0x4b84fc[_0x231b('0x4f')]['WhatsappAccountId']=_0x33d32b['id'];if(_0x4667ee[_0x231b('0x44')][_0x231b('0x53')]){_0x4b84fc[_0x231b('0x4f')]=_[_0x231b('0x54')](_0x4b84fc[_0x231b('0x4f')],{'$or':_[_0x231b('0x41')](_0x4b84fc[_0x231b('0x49')],function(_0x5b688b){var _0x311aef={};_0x311aef[_0x5b688b]={'$like':'%'+_0x4667ee[_0x231b('0x44')][_0x231b('0x53')]+'%'};return _0x311aef;})});}_0x4b84fc=_['merge']({},_0x4b84fc,_0x4667ee['options']);return db[_0x231b('0x6f')][_0x231b('0x2f')]({'where':_0x4b84fc[_0x231b('0x4f')]})[_0x231b('0x23')](function(_0xc9f6d2){_0x8908e9[_0x231b('0x2f')]=_0xc9f6d2;if(_0x4667ee[_0x231b('0x44')][_0x231b('0x55')]){_0x4b84fc[_0x231b('0x56')]=[{'all':!![]}];}return db[_0x231b('0x6f')]['findAll'](_0x4b84fc);})[_0x231b('0x23')](function(_0x56120e){_0x8908e9['rows']=_0x56120e;return _0x8908e9;});}})[_0x231b('0x23')](respondWithFilteredResult(_0x31745e,_0x4b84fc))['catch'](handleError(_0x31745e,null));};exports['removeAnswers']=function(_0x28334c,_0x2bf4a4,_0x564b5c){return db[_0x231b('0x42')][_0x231b('0x5c')]({'where':{'id':_0x28334c[_0x231b('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2bf4a4,null))[_0x231b('0x23')](function(_0x5e83c3){if(_0x5e83c3){return _0x5e83c3[_0x231b('0x70')](_0x28334c[_0x231b('0x44')][_0x231b('0x6c')]);}})[_0x231b('0x23')](respondWithStatusCode(_0x2bf4a4,null))[_0x231b('0x2b')](handleError(_0x2bf4a4,null));};exports[_0x231b('0x71')]=function(_0x465c7c,_0x337897,_0x3b15e2){return db[_0x231b('0x42')][_0x231b('0x5c')]({'where':{'id':_0x465c7c[_0x231b('0x5a')]['id']}})['then'](handleEntityNotFound(_0x337897,null))[_0x231b('0x23')](function(_0x54b2bd){if(_0x54b2bd){return _0x54b2bd[_0x231b('0x71')](_0x465c7c[_0x231b('0x5e')][_0x231b('0x6c')],_[_0x231b('0x72')](_0x465c7c[_0x231b('0x5e')],[_0x231b('0x6c'),'id'])||{})[_0x231b('0x73')](function(_0x3fc6cf){for(var _0x1eb64f=0x0;_0x1eb64f<_0x465c7c['body'][_0x231b('0x6c')]['length'];_0x1eb64f+=0x1){socket[_0x231b('0x74')]('userWhatsappAccount:save',{'UserId':Number(_0x465c7c[_0x231b('0x5e')][_0x231b('0x6c')][_0x1eb64f]),'WhatsappAccountId':Number(_0x465c7c['params']['id'])});}return _0x3fc6cf;});}})[_0x231b('0x23')](respondWithResult(_0x337897,null))['catch'](handleError(_0x337897,null));};exports[_0x231b('0x75')]=function(_0x21212c,_0x48dbc3,_0x2c33ae){return db[_0x231b('0x42')][_0x231b('0x5c')]({'where':{'id':_0x21212c[_0x231b('0x5a')]['id']}})[_0x231b('0x23')](handleEntityNotFound(_0x48dbc3,null))[_0x231b('0x23')](function(_0x55c35f){if(_0x55c35f){return _0x55c35f[_0x231b('0x75')](_0x21212c[_0x231b('0x44')][_0x231b('0x6c')])[_0x231b('0x23')](function(){if(_['isArray'](_0x21212c[_0x231b('0x44')]['ids'])){for(var _0x4f02f0=0x0;_0x4f02f0<_0x21212c[_0x231b('0x44')][_0x231b('0x6c')][_0x231b('0x4b')];_0x4f02f0+=0x1){socket[_0x231b('0x74')](_0x231b('0x76'),{'UserId':Number(_0x21212c['query'][_0x231b('0x6c')][_0x4f02f0]),'WhatsappAccountId':Number(_0x21212c[_0x231b('0x5a')]['id'])});}}else{socket[_0x231b('0x74')](_0x231b('0x76'),{'UserId':Number(_0x21212c['query'][_0x231b('0x6c')]),'WhatsappAccountId':Number(_0x21212c[_0x231b('0x5a')]['id'])});}});}})[_0x231b('0x23')](respondWithStatusCode(_0x48dbc3,null))['catch'](handleError(_0x48dbc3,null));};exports[_0x231b('0x77')]=function(_0x1bbacf,_0x39736d,_0x291579){var _0x41dc5={};var _0x401f32={};var _0x1c1569;var _0x1cbe3e;return db[_0x231b('0x42')][_0x231b('0x68')]({'where':{'id':_0x1bbacf['params']['id']}})['then'](handleEntityNotFound(_0x39736d,null))[_0x231b('0x23')](function(_0x36fcac){if(_0x36fcac){_0x1c1569=_0x36fcac;_0x401f32[_0x231b('0x48')]=_[_0x231b('0x45')](db[_0x231b('0x78')]['rawAttributes']);_0x401f32['query']=_['keys'](_0x1bbacf[_0x231b('0x44')]);_0x401f32[_0x231b('0x46')]=_[_0x231b('0x47')](_0x401f32[_0x231b('0x48')],_0x401f32[_0x231b('0x44')]);_0x41dc5[_0x231b('0x49')]=_['intersection'](_0x401f32[_0x231b('0x48')],qs[_0x231b('0x4a')](_0x1bbacf[_0x231b('0x44')][_0x231b('0x4a')]));_0x41dc5[_0x231b('0x49')]=_0x41dc5[_0x231b('0x49')][_0x231b('0x4b')]?_0x41dc5[_0x231b('0x49')]:_0x401f32[_0x231b('0x48')];_0x41dc5[_0x231b('0x4d')]=qs['sort'](_0x1bbacf[_0x231b('0x44')][_0x231b('0x4e')]);_0x41dc5[_0x231b('0x4f')]=qs[_0x231b('0x46')](_[_0x231b('0x50')](_0x1bbacf[_0x231b('0x44')],_0x401f32['filters']));if(_0x1bbacf['query'][_0x231b('0x53')]){_0x41dc5['where']=_[_0x231b('0x54')](_0x41dc5[_0x231b('0x4f')],{'$or':_['map'](_0x41dc5['attributes'],function(_0x5241c6){var _0xe34b29={};_0xe34b29[_0x5241c6]={'$like':'%'+_0x1bbacf[_0x231b('0x44')]['filter']+'%'};return _0xe34b29;})});}_0x41dc5=_[_0x231b('0x54')]({},_0x41dc5,_0x1bbacf[_0x231b('0x6a')]);return _0x1c1569[_0x231b('0x77')](_0x41dc5);}})['then'](function(_0x2d77c0){if(_0x2d77c0){_0x1cbe3e=_0x2d77c0[_0x231b('0x4b')];if(!_0x1bbacf[_0x231b('0x44')][_0x231b('0x4c')](_0x231b('0x69'))){_0x41dc5['limit']=qs[_0x231b('0x31')](_0x1bbacf['query']['limit']);_0x41dc5[_0x231b('0x30')]=qs[_0x231b('0x30')](_0x1bbacf['query']['offset']);}return _0x1c1569['getAgents'](_0x41dc5);}})[_0x231b('0x23')](function(_0x24f566){if(_0x24f566){return _0x24f566?{'count':_0x1cbe3e,'rows':_0x24f566}:null;}})[_0x231b('0x23')](respondWithResult(_0x39736d,null))[_0x231b('0x2b')](handleError(_0x39736d,null));};exports[_0x231b('0x79')]=function(_0x103aa0,_0x1d4c4b,_0xacb82d){return db[_0x231b('0x42')][_0x231b('0x68')]({'where':{'id':_0x103aa0[_0x231b('0x5a')]['id']}})[_0x231b('0x23')](handleEntityNotFound(_0x1d4c4b,null))[_0x231b('0x23')](function(_0xc620ae){if(_0xc620ae){return db[_0x231b('0x7a')]['transaction'](function(_0x24157a){return db['WhatsappApplication'][_0x231b('0x37')]({'where':{'WhatsappAccountId':_0x103aa0[_0x231b('0x5a')]['id']},'transaction':_0x24157a})['then'](function(_0x2cd119){var _0x388eb5=_[_0x231b('0x41')](_0x103aa0['body'],function(_0x13d09b){_0x13d09b[_0x231b('0x66')]=_0x103aa0[_0x231b('0x5a')]['id'];return _0x13d09b;});return db[_0x231b('0x7b')][_0x231b('0x7c')](_0x388eb5,{'transaction':_0x24157a});});})['then'](function(){return db[_0x231b('0x7b')]['findAndCountAll']({'where':{'WhatsappAccountId':_0x103aa0[_0x231b('0x5a')]['id']},'order':_0x231b('0x7d')});});}})['then'](respondWithResult(_0x1d4c4b,null))[_0x231b('0x2b')](handleError(_0x1d4c4b,null));};exports['getApplications']=function(_0x13ab52,_0x263657,_0x242e40){var _0x470b3a={};var _0x292506={};var _0x500146;var _0x454d22;return db[_0x231b('0x42')][_0x231b('0x68')]({'where':{'id':_0x13ab52[_0x231b('0x5a')]['id']}})[_0x231b('0x23')](handleEntityNotFound(_0x263657,null))['then'](function(_0x56e882){if(_0x56e882){_0x500146=_0x56e882;_0x292506[_0x231b('0x48')]=_[_0x231b('0x45')](db[_0x231b('0x7b')][_0x231b('0x5b')]);_0x292506[_0x231b('0x44')]=_[_0x231b('0x45')](_0x13ab52[_0x231b('0x44')]);_0x292506[_0x231b('0x46')]=_[_0x231b('0x47')](_0x292506[_0x231b('0x48')],_0x292506[_0x231b('0x44')]);_0x470b3a['attributes']=_[_0x231b('0x47')](_0x292506[_0x231b('0x48')],qs[_0x231b('0x4a')](_0x13ab52['query'][_0x231b('0x4a')]));_0x470b3a['attributes']=_0x470b3a['attributes'][_0x231b('0x4b')]?_0x470b3a[_0x231b('0x49')]:_0x292506[_0x231b('0x48')];_0x470b3a[_0x231b('0x4d')]=qs[_0x231b('0x4e')](_0x13ab52[_0x231b('0x44')][_0x231b('0x4e')]);_0x470b3a[_0x231b('0x4f')]=qs[_0x231b('0x46')](_['pick'](_0x13ab52['query'],_0x292506[_0x231b('0x46')]));if(_0x13ab52['query'][_0x231b('0x53')]){_0x470b3a['where']=_[_0x231b('0x54')](_0x470b3a[_0x231b('0x4f')],{'$or':_[_0x231b('0x41')](_0x470b3a[_0x231b('0x49')],function(_0x86cf20){var _0x285279={};_0x285279[_0x86cf20]={'$like':'%'+_0x13ab52[_0x231b('0x44')]['filter']+'%'};return _0x285279;})});}_0x470b3a=_[_0x231b('0x54')]({},_0x470b3a,_0x13ab52[_0x231b('0x6a')]);return _0x500146['getApplications'](_0x470b3a);}})['then'](function(_0x2818ff){if(_0x2818ff){_0x454d22=_0x2818ff['length'];if(!_0x13ab52[_0x231b('0x44')][_0x231b('0x4c')](_0x231b('0x69'))){_0x470b3a[_0x231b('0x31')]=qs[_0x231b('0x31')](_0x13ab52[_0x231b('0x44')][_0x231b('0x31')]);_0x470b3a[_0x231b('0x30')]=qs[_0x231b('0x30')](_0x13ab52[_0x231b('0x44')][_0x231b('0x30')]);}return _0x500146['getApplications'](_0x470b3a);}})['then'](function(_0x1099c2){if(_0x1099c2){return _0x1099c2?{'count':_0x454d22,'rows':_0x1099c2}:null;}})['then'](respondWithResult(_0x263657,null))[_0x231b('0x2b')](handleError(_0x263657,null));};exports['notify']=function(_0x5cc324,_0x1e5abf,_0x3d0ced){var _0x2fdaf8={'channel':'whatsapp'};var _0x320fef=[];var _0x11b8a6=[];var _0x2308d0={};return db[_0x231b('0x42')][_0x231b('0x5c')]({'where':{'id':_0x5cc324[_0x231b('0x5a')]['id']},'include':[{'model':db['WhatsappApplication'],'as':_0x231b('0x7e')}]})[_0x231b('0x23')](handleEntityNotFound(_0x1e5abf,null))[_0x231b('0x23')](function(_0x30b198){_0x2fdaf8[_0x231b('0x7f')]=_0x30b198;_0x2fdaf8[_0x231b('0x80')]=_[_0x231b('0x81')](_0x30b198[_0x231b('0x7e')],['priority'],[_0x231b('0x82')]);if(_0x2fdaf8[_0x231b('0x7f')]['Applications']){delete _0x2fdaf8[_0x231b('0x7f')]['Applications'];}return db[_0x231b('0x83')][_0x231b('0x64')]();})[_0x231b('0x23')](function(_0x539042){if(!_0x539042){throw new db[(_0x231b('0x84'))][(_0x231b('0x85'))]('no\x20available\x20attributes');}_0x320fef=_[_0x231b('0x86')](_[_0x231b('0x45')](_0x539042),[_0x231b('0x87'),_0x231b('0x88')]);_0x11b8a6=_['difference'](_[_0x231b('0x45')](_0x539042),['createdAt','updatedAt',_0x231b('0x89'),_0x231b('0x8a')]);_0x2fdaf8['body']={'mapKey':_0x231b('0x8b')};if(_0x2fdaf8['account'][_0x231b('0x51')]&&_0x2fdaf8['account'][_0x231b('0x51')]===_0x231b('0x8c')){_0x2fdaf8[_0x231b('0x5e')][_0x231b('0x8d')]=_0x5cc324['body'][_0x231b('0x8e')]['replace'](_0x231b('0x8f'),'');_0x2fdaf8[_0x231b('0x5e')][_0x231b('0x5e')]=_0x5cc324[_0x231b('0x5e')][_0x231b('0x90')];_0x2fdaf8[_0x231b('0x5e')][_0x231b('0x91')]=_0x5cc324[_0x231b('0x5e')][_0x231b('0x92')];}if(_0x2fdaf8['body']['id']){delete _0x2fdaf8[_0x231b('0x5e')]['id'];}if(_[_0x231b('0x93')](_0x2fdaf8['body'][_0x231b('0x8d')])){throw new db[(_0x231b('0x84'))][(_0x231b('0x85'))]('from\x20is\x20mandatory');}if(_[_0x231b('0x93')](_0x2fdaf8[_0x231b('0x5e')]['body'])||_0x2fdaf8['body']['body']===''){throw new db[(_0x231b('0x84'))][(_0x231b('0x85'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x2fdaf8[_0x231b('0x5e')][_0x231b('0x94')])){throw new db[(_0x231b('0x84'))][(_0x231b('0x85'))](_0x231b('0x95')+_0x11b8a6);}if(!_['includes'](_0x11b8a6,_0x2fdaf8[_0x231b('0x5e')][_0x231b('0x94')])){throw new db[(_0x231b('0x84'))][(_0x231b('0x85'))](_0x231b('0x96')+_0x11b8a6);}_0x2308d0[_0x2fdaf8[_0x231b('0x5e')]['mapKey']]=_0x2fdaf8['body'][_0x231b('0x8d')];return db[_0x231b('0x97')]['find']({'where':{'id':_0x2fdaf8[_0x231b('0x7f')][_0x231b('0x8a')]},'include':[{'model':db['CmContact'],'as':_0x231b('0x98'),'where':_0x2308d0,'limit':0x1,'order':[[_0x231b('0x88'),_0x231b('0x99')]]}]});})[_0x231b('0x23')](handleEntityNotFound(_0x1e5abf,null))[_0x231b('0x23')](function(_0x141d16){if(_0x141d16){_0x2fdaf8[_0x231b('0x9a')]=_[_0x231b('0x72')](_0x141d16,[_0x231b('0x98')]);if(_0x141d16[_0x231b('0x98')][_0x231b('0x4b')]){return _0x141d16[_0x231b('0x98')][0x0];}var _0x57abb3=_[_0x231b('0x1d')](_0x2fdaf8[_0x231b('0x5e')],{'firstName':_0x2fdaf8[_0x231b('0x5e')][_0x231b('0x8d')],'ListId':_0x141d16['id']});_0x57abb3[_0x2fdaf8[_0x231b('0x5e')][_0x231b('0x94')]]=_0x2fdaf8[_0x231b('0x5e')][_0x231b('0x8d')];return db[_0x231b('0x83')][_0x231b('0x5d')](_0x57abb3,{'fields':_0x320fef,'raw':!![]});}})[_0x231b('0x23')](handleEntityNotFound(_0x1e5abf,null))[_0x231b('0x23')](function(_0x347578){if(_0x347578){_0x2fdaf8[_0x231b('0x9b')]=_0x347578;var _0x49f4d1={'ContactId':_0x347578['id'],'phone':_0x2fdaf8[_0x231b('0x5e')][_0x231b('0x8d')],'WhatsappAccountId':_0x5cc324[_0x231b('0x5a')]['id']};var _0x39be31={'ContactId':_0x347578['id'],'WhatsappAccountId':_0x5cc324[_0x231b('0x5a')]['id'],'closed':![]};return db[_0x231b('0x9c')][_0x231b('0x5c')]({'where':_0x39be31})['then'](function(_0x3c8e55){if(_0x3c8e55){return[_0x3c8e55,![]];}return db[_0x231b('0x9c')][_0x231b('0x5d')](_0x49f4d1)[_0x231b('0x23')](function(_0x53c612){return[_0x53c612,!![]];});});}})[_0x231b('0x73')](function(_0x4fd257,_0x3c87ed){_0x2fdaf8[_0x231b('0x9d')]=_0x4fd257[_0x231b('0x38')]({'plain':!![]});_0x2fdaf8[_0x231b('0x9d')]['created']=![];if(_0x3c87ed){if(_0x2fdaf8[_0x231b('0x7f')]['autoclose']){_0x2fdaf8['applications'][_0x231b('0x9e')]({'id':0x0,'priority':_0x2fdaf8[_0x231b('0x80')][_0x231b('0x4b')]+0x1,'app':'close','appdata':_0x231b('0x9f'),'interval':'*,*,*,*'});}_0x2fdaf8[_0x231b('0x9d')][_0x231b('0xa0')]=!![];}return db[_0x231b('0xa1')][_0x231b('0x5d')]({'phone':_0x2fdaf8[_0x231b('0x5e')][_0x231b('0x8d')],'messageId':_0x2fdaf8[_0x231b('0x5e')][_0x231b('0x91')],'body':_0x2fdaf8[_0x231b('0x5e')][_0x231b('0x5e')],'WhatsappAccountId':_0x5cc324[_0x231b('0x5a')]['id'],'WhatsappInteractionId':_0x4fd257['id'],'direction':'in','ContactId':_0x4fd257[_0x231b('0xa2')],'AttachmentId':_0x2fdaf8[_0x231b('0x5e')]['AttachmentId']});})[_0x231b('0x23')](function(_0x563b2d){_0x2fdaf8[_0x231b('0x29')]=_0x563b2d;if(_0x2fdaf8['interaction'][_0x231b('0xa3')]){return db[_0x231b('0x78')][_0x231b('0x5c')]({'attributes':['id',_0x231b('0x3d')],'where':{'id':_0x2fdaf8[_0x231b('0x9d')][_0x231b('0xa3')]}})[_0x231b('0x23')](function(_0x4bd49b){if(_0x4bd49b){_0x2fdaf8['applications'][_0x231b('0xa4')]({'id':0x0,'priority':0x0,'app':_0x231b('0xa5'),'appdata':_0x4bd49b[_0x231b('0x3d')]+','+(_0x2fdaf8[_0x231b('0x7f')][_0x231b('0xa6')]||0xa),'interval':_0x231b('0xa7')});}return respondWithRpcPromise('Start',_0x231b('0xa8'),_0x2fdaf8);});}return respondWithRpcPromise(_0x231b('0xa9'),_0x231b('0xa8'),_0x2fdaf8);})[_0x231b('0x23')](function(_0x5d8bb5){if(_0x5d8bb5){var _0x516d05=0xc8;var _0x2516ec='receiveMessage';logger[_0x231b('0x24')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x2516ec,_0x516d05,_0x231b('0xaa'));logger['debug']('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x2516ec,_0x516d05,'entity\x20found',JSON[_0x231b('0xab')](_0x5d8bb5));if(_0x2fdaf8['account'][_0x231b('0x51')]===_0x231b('0x8c')){return _0x1e5abf['status'](_0x516d05)['set'](_0x231b('0xac'),_0x231b('0xad'))['send'](_0x231b('0xae'));}else{return _0x1e5abf[_0x231b('0x32')](_0x516d05)[_0x231b('0x2d')](_0x5d8bb5);}}})[_0x231b('0x2b')](handleError(_0x1e5abf,null));};exports[_0x231b('0xaf')]=function(_0x2192c1,_0xfbba45,_0x375639){var _0x9ce35b,_0x11abdb,_0x3625cf;if(_[_0x231b('0x93')](_0x2192c1[_0x231b('0x5e')]['body'])||_0x2192c1['body']['body']===''){throw new db[(_0x231b('0x84'))][(_0x231b('0x85'))](_0x231b('0xb0'));}if(_[_0x231b('0x93')](_0x2192c1['body']['to'])){throw new db[(_0x231b('0x84'))]['ValidationError'](_0x231b('0xb1'));}_0x9ce35b=_0x2192c1[_0x231b('0x5e')]['to'];return db[_0x231b('0x42')][_0x231b('0x5c')]({'where':{'id':_0x2192c1['params']['id']},'include':[{'model':db[_0x231b('0x97')],'as':_0x231b('0xb2'),'include':[{'model':db[_0x231b('0x83')],'as':_0x231b('0x98'),'where':{'mobile':_0x9ce35b},'limit':0x1,'order':[['updatedAt',_0x231b('0x99')]]}]}]})[_0x231b('0x23')](handleEntityNotFound(_0xfbba45,null))[_0x231b('0x23')](function(_0x4a4088){if(_0x4a4088&&_0x4a4088[_0x231b('0xb2')]){_0x11abdb=_0x4a4088[_0x231b('0x38')]({'plain':!![]});if(_0x11abdb[_0x231b('0xb2')]&&_0x11abdb['List'][_0x231b('0x98')][_0x231b('0x4b')]){return _0x11abdb[_0x231b('0xb2')][_0x231b('0x98')][0x0];}return db[_0x231b('0x83')][_0x231b('0x5d')](_['defaults'](_0x2192c1[_0x231b('0x5e')],{'firstName':_0x9ce35b,'mobile':_0x9ce35b,'phone':_0x9ce35b,'ListId':_0x11abdb['ListId']}));}})['then'](handleEntityNotFound(_0xfbba45,null))[_0x231b('0x23')](function(_0x5b4c86){if(_0x5b4c86){_0x3625cf=_0x5b4c86;return db[_0x231b('0x9c')][_0x231b('0x5c')]({'where':{'ContactId':_0x3625cf['id'],'closed':![],'WhatsappAccountId':_0x11abdb['id']}})['then'](function(_0x25f21d){if(_0x25f21d){return[_0x25f21d,![]];}return db[_0x231b('0x9c')][_0x231b('0x5d')]({'UserId':_0x2192c1['user']['id'],'ContactId':_0x3625cf['id'],'WhatsappAccountId':_0x11abdb['id'],'phone':_0x9ce35b,'firstMsgDirection':'out','Messages':[_[_0x231b('0x54')](_0x2192c1[_0x231b('0x5e')],{'read':![],'body':_0x2192c1[_0x231b('0x5e')]['body'],'phone':_0x9ce35b,'WhatsappAccountId':_0x11abdb['id'],'UserId':_0x2192c1['user']['id'],'ContactId':_0x3625cf['id']})]},{'include':[{'model':db[_0x231b('0xa1')],'as':_0x231b('0xb3')}]})[_0x231b('0x23')](function(_0x4f257c){return[_0x4f257c,!![]];});});}})[_0x231b('0x73')](function(_0x5eaa8a,_0x49f434){if(_0x49f434){return _0x5eaa8a;}return db[_0x231b('0xa1')][_0x231b('0x5d')](_['merge'](_0x2192c1[_0x231b('0x5e')],{'read':![],'body':_0x2192c1[_0x231b('0x5e')][_0x231b('0x5e')],'phone':_0x9ce35b,'WhatsappAccountId':_0x11abdb['id'],'WhatsappInteractionId':_0x5eaa8a['id'],'UserId':_0x2192c1[_0x231b('0x5f')]['id'],'ContactId':_0x3625cf['id']}))[_0x231b('0x23')](function(_0x5837be){_0x5eaa8a[_0x231b('0xb4')][_0x231b('0xb3')]=[];_0x5eaa8a[_0x231b('0xb4')]['Messages'][_0x231b('0x9e')](_0x5837be[_0x231b('0xb4')]);return _0x5eaa8a;});})['then'](respondWithResult(_0xfbba45,null))[_0x231b('0x2b')](handleError(_0xfbba45,null));};
\ No newline at end of file
index 7f0ad2d..fb7b0d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7d4=['../../mysqldb','WhatsappAccount','setMaxListeners','save','update','hook','exports','events'];(function(_0x537be1,_0x35870f){var _0xa7590a=function(_0x53bdb0){while(--_0x53bdb0){_0x537be1['push'](_0x537be1['shift']());}};_0xa7590a(++_0x35870f);}(_0xb7d4,0x17f));var _0x4b7d=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xb7d4[_0x4565bf];return _0x5610ba;};'use strict';var EventEmitter=require(_0x4b7d('0x0'));var WhatsappAccount=require(_0x4b7d('0x1'))['db'][_0x4b7d('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x4b7d('0x3')](0x0);var events={'afterCreate':_0x4b7d('0x4'),'afterUpdate':_0x4b7d('0x5'),'afterDestroy':'remove'};function emitEvent(_0x1cc981){return function(_0x553b83,_0x45a865,_0x353d61){WhatsappAccountEvents['emit'](_0x1cc981+':'+_0x553b83['id'],_0x553b83);WhatsappAccountEvents['emit'](_0x1cc981,_0x553b83);_0x353d61(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount[_0x4b7d('0x6')](e,emitEvent(event));}}module[_0x4b7d('0x7')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0xcfd8=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappAccount','save'];(function(_0x5bf9a8,_0x2dbd95){var _0x1022f5=function(_0x81b16a){while(--_0x81b16a){_0x5bf9a8['push'](_0x5bf9a8['shift']());}};_0x1022f5(++_0x2dbd95);}(_0xcfd8,0x132));var _0x8cfd=function(_0x336264,_0x32e1d9){_0x336264=_0x336264-0x0;var _0x53cf91=_0xcfd8[_0x336264];return _0x53cf91;};'use strict';var EventEmitter=require(_0x8cfd('0x0'));var WhatsappAccount=require(_0x8cfd('0x1'))['db'][_0x8cfd('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8cfd('0x3'),'afterUpdate':_0x8cfd('0x4'),'afterDestroy':_0x8cfd('0x5')};function emitEvent(_0x580845){return function(_0x46e47f,_0xce6212,_0x526ebf){WhatsappAccountEvents[_0x8cfd('0x6')](_0x580845+':'+_0x46e47f['id'],_0x46e47f);WhatsappAccountEvents['emit'](_0x580845,_0x46e47f);_0x526ebf(null);};}for(var e in events){if(events[_0x8cfd('0x7')](e)){var event=events[e];WhatsappAccount[_0x8cfd('0x8')](e,emitEvent(event));}}module[_0x8cfd('0x9')]=WhatsappAccountEvents;
\ No newline at end of file
index 7fe553d..440be48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fbc=['./whatsappAccount.attributes','define','WhatsappAccount','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x9fbc,0x153));var _0xc9fb=function(_0x54fadc,_0x1fb2a8){_0x54fadc=_0x54fadc-0x0;var _0x2cc5e8=_0x9fbc[_0x54fadc];return _0x2cc5e8;};'use strict';var _=require('lodash');var util=require(_0xc9fb('0x0'));var logger=require(_0xc9fb('0x1'))(_0xc9fb('0x2'));var moment=require(_0xc9fb('0x3'));var BPromise=require(_0xc9fb('0x4'));var rp=require(_0xc9fb('0x5'));var fs=require('fs');var path=require(_0xc9fb('0x6'));var rimraf=require(_0xc9fb('0x7'));var config=require(_0xc9fb('0x8'));var attributes=require(_0xc9fb('0x9'));module['exports']=function(_0x17a2c7,_0x30c500){return _0x17a2c7[_0xc9fb('0xa')](_0xc9fb('0xb'),attributes,{'tableName':'whatsapp_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9db5=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','WhatsappAccount','whatsapp_accounts','util','../../config/logger','api'];(function(_0x3fcc4e,_0x57a87e){var _0x46403a=function(_0x3f3648){while(--_0x3f3648){_0x3fcc4e['push'](_0x3fcc4e['shift']());}};_0x46403a(++_0x57a87e);}(_0x9db5,0x183));var _0x59db=function(_0x2a2a7b,_0x20fdd5){_0x2a2a7b=_0x2a2a7b-0x0;var _0x161c6e=_0x9db5[_0x2a2a7b];return _0x161c6e;};'use strict';var _=require('lodash');var util=require(_0x59db('0x0'));var logger=require(_0x59db('0x1'))(_0x59db('0x2'));var moment=require(_0x59db('0x3'));var BPromise=require(_0x59db('0x4'));var rp=require(_0x59db('0x5'));var fs=require('fs');var path=require(_0x59db('0x6'));var rimraf=require(_0x59db('0x7'));var config=require(_0x59db('0x8'));var attributes=require('./whatsappAccount.attributes');module[_0x59db('0x9')]=function(_0x49af2f,_0x3bae6f){return _0x49af2f[_0x59db('0xa')](_0x59db('0xb'),attributes,{'tableName':_0x59db('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 265f7d3..1dc09ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a1a=['stringify','error','code','WhatsappAccount,\x20%s,\x20%s','message','request\x20sent','result','ShowWhatsappAccount','find','options','raw','where','include','model','attributes','map','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','./whatsappAccount.socket','register','request','then','info','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s'];(function(_0x20076b,_0x4f218e){var _0x1ae3de=function(_0x545d7a){while(--_0x545d7a){_0x20076b['push'](_0x20076b['shift']());}};_0x1ae3de(++_0x4f218e);}(_0x5a1a,0xa4));var _0xa5a1=function(_0x24696b,_0x12de19){_0x24696b=_0x24696b-0x0;var _0x3f86b0=_0x5a1a[_0x24696b];return _0x3f86b0;};'use strict';var _=require(_0xa5a1('0x0'));var util=require(_0xa5a1('0x1'));var moment=require(_0xa5a1('0x2'));var BPromise=require(_0xa5a1('0x3'));var rs=require(_0xa5a1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa5a1('0x5'));var logger=require(_0xa5a1('0x6'))(_0xa5a1('0x7'));var config=require('../../config/environment');var jayson=require(_0xa5a1('0x8'));var client=jayson[_0xa5a1('0x9')][_0xa5a1('0xa')]({'port':0x232a});config['redis']=_[_0xa5a1('0xb')](config[_0xa5a1('0xc')],{'host':_0xa5a1('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xa5a1('0xe'))[_0xa5a1('0xf')](socket);function respondWithRpcPromise(_0x4358d2,_0x19c4ba,_0x30ceaa){return new BPromise(function(_0x10f580,_0x5d620e){return client[_0xa5a1('0x10')](_0x4358d2,_0x30ceaa)[_0xa5a1('0x11')](function(_0x41dbed){logger[_0xa5a1('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x19c4ba,'request\x20sent');logger[_0xa5a1('0x13')](_0xa5a1('0x14'),_0x19c4ba,'request\x20sent',JSON[_0xa5a1('0x15')](_0x41dbed));if(_0x41dbed['error']){if(_0x41dbed[_0xa5a1('0x16')][_0xa5a1('0x17')]===0x1f4){logger['error'](_0xa5a1('0x18'),_0x19c4ba,_0x41dbed[_0xa5a1('0x16')]['message']);return _0x5d620e(_0x41dbed[_0xa5a1('0x16')][_0xa5a1('0x19')]);}logger['error'](_0xa5a1('0x18'),_0x19c4ba,_0x41dbed[_0xa5a1('0x16')]['message']);return _0x10f580(_0x41dbed[_0xa5a1('0x16')][_0xa5a1('0x19')]);}else{logger[_0xa5a1('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x19c4ba,_0xa5a1('0x1a'));_0x10f580(_0x41dbed[_0xa5a1('0x1b')]['message']);}})['catch'](function(_0x67ef40){logger[_0xa5a1('0x16')](_0xa5a1('0x18'),_0x19c4ba,_0x67ef40);_0x5d620e(_0x67ef40);});});}exports[_0xa5a1('0x1c')]=function(_0x72a23c){var _0x352038=this;return new Promise(function(_0x32d4b4,_0x19413e){return db['WhatsappAccount'][_0xa5a1('0x1d')]({'raw':_0x72a23c[_0xa5a1('0x1e')]?_0x72a23c[_0xa5a1('0x1e')][_0xa5a1('0x1f')]===undefined?!![]:![]:!![],'where':_0x72a23c[_0xa5a1('0x1e')]?_0x72a23c[_0xa5a1('0x1e')][_0xa5a1('0x20')]||null:null,'attributes':_0x72a23c[_0xa5a1('0x1e')]?_0x72a23c[_0xa5a1('0x1e')]['attributes']||null:null,'include':_0x72a23c[_0xa5a1('0x1e')]?_0x72a23c[_0xa5a1('0x1e')][_0xa5a1('0x21')]?_['map'](_0x72a23c[_0xa5a1('0x1e')][_0xa5a1('0x21')],function(_0x5a3169){return{'model':db[_0x5a3169[_0xa5a1('0x22')]],'as':_0x5a3169['as'],'attributes':_0x5a3169[_0xa5a1('0x23')],'include':_0x5a3169[_0xa5a1('0x21')]?_['map'](_0x5a3169['include'],function(_0x5b3931){return{'model':db[_0x5b3931[_0xa5a1('0x22')]],'as':_0x5b3931['as'],'attributes':_0x5b3931[_0xa5a1('0x23')],'include':_0x5b3931['include']?_[_0xa5a1('0x24')](_0x5b3931[_0xa5a1('0x21')],function(_0x135df5){return{'model':db[_0x135df5['model']],'as':_0x135df5['as'],'attributes':_0x135df5['attributes']};}):[]};}):[]};}):[]:[]})[_0xa5a1('0x11')](function(_0x1b4bdc){logger['info'](_0xa5a1('0x1c'),_0x72a23c);logger[_0xa5a1('0x13')](_0xa5a1('0x1c'),_0x72a23c,JSON[_0xa5a1('0x15')](_0x1b4bdc));_0x32d4b4(_0x1b4bdc);})['catch'](function(_0x125b65){logger[_0xa5a1('0x16')](_0xa5a1('0x1c'),_0x125b65[_0xa5a1('0x19')],_0x72a23c);_0x19413e(_0x352038['error'](0x1f4,_0x125b65['message']));});});};
\ No newline at end of file
+var _0xdc15=['../../mysqldb','../../config/environment','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','error','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','attributes','include','map','model','then','stringify','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x305117,_0x289f1a){var _0x184cb7=function(_0x48887c){while(--_0x48887c){_0x305117['push'](_0x305117['shift']());}};_0x184cb7(++_0x289f1a);}(_0xdc15,0x1f3));var _0x5dc1=function(_0xea6018,_0x4cf082){_0xea6018=_0xea6018-0x0;var _0x57b54d=_0xdc15[_0xea6018];return _0x57b54d;};'use strict';var _=require(_0x5dc1('0x0'));var util=require('util');var moment=require(_0x5dc1('0x1'));var BPromise=require(_0x5dc1('0x2'));var rs=require(_0x5dc1('0x3'));var fs=require('fs');var Redis=require(_0x5dc1('0x4'));var db=require(_0x5dc1('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x5dc1('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x5dc1('0x7')]({'port':0x232a});config[_0x5dc1('0x8')]=_[_0x5dc1('0x9')](config[_0x5dc1('0x8')],{'host':_0x5dc1('0xa'),'port':0x18eb});var socket=require(_0x5dc1('0xb'))(new Redis(config[_0x5dc1('0x8')]));require(_0x5dc1('0xc'))[_0x5dc1('0xd')](socket);function respondWithRpcPromise(_0x45802d,_0x1241ff,_0x5254f5){return new BPromise(function(_0x5cbb50,_0x181c35){return client[_0x5dc1('0xe')](_0x45802d,_0x5254f5)['then'](function(_0x2f1526){logger[_0x5dc1('0xf')](_0x5dc1('0x10'),_0x1241ff,_0x5dc1('0x11'));logger[_0x5dc1('0x12')](_0x5dc1('0x13'),_0x1241ff,_0x5dc1('0x11'),JSON['stringify'](_0x2f1526));if(_0x2f1526[_0x5dc1('0x14')]){if(_0x2f1526[_0x5dc1('0x14')]['code']===0x1f4){logger[_0x5dc1('0x14')](_0x5dc1('0x10'),_0x1241ff,_0x2f1526['error'][_0x5dc1('0x15')]);return _0x181c35(_0x2f1526[_0x5dc1('0x14')][_0x5dc1('0x15')]);}logger['error'](_0x5dc1('0x10'),_0x1241ff,_0x2f1526['error']['message']);return _0x5cbb50(_0x2f1526[_0x5dc1('0x14')][_0x5dc1('0x15')]);}else{logger[_0x5dc1('0xf')]('WhatsappAccount,\x20%s,\x20%s',_0x1241ff,_0x5dc1('0x11'));_0x5cbb50(_0x2f1526[_0x5dc1('0x16')][_0x5dc1('0x15')]);}})[_0x5dc1('0x17')](function(_0x13fd5a){logger[_0x5dc1('0x14')](_0x5dc1('0x10'),_0x1241ff,_0x13fd5a);_0x181c35(_0x13fd5a);});});}exports[_0x5dc1('0x18')]=function(_0x52a1e2){var _0x3d6a6e=this;return new Promise(function(_0xdcd30f,_0x41ae80){return db[_0x5dc1('0x19')][_0x5dc1('0x1a')]({'raw':_0x52a1e2[_0x5dc1('0x1b')]?_0x52a1e2['options'][_0x5dc1('0x1c')]===undefined?!![]:![]:!![],'where':_0x52a1e2[_0x5dc1('0x1b')]?_0x52a1e2[_0x5dc1('0x1b')][_0x5dc1('0x1d')]||null:null,'attributes':_0x52a1e2[_0x5dc1('0x1b')]?_0x52a1e2[_0x5dc1('0x1b')][_0x5dc1('0x1e')]||null:null,'include':_0x52a1e2[_0x5dc1('0x1b')]?_0x52a1e2[_0x5dc1('0x1b')][_0x5dc1('0x1f')]?_[_0x5dc1('0x20')](_0x52a1e2[_0x5dc1('0x1b')][_0x5dc1('0x1f')],function(_0x4b9ff8){return{'model':db[_0x4b9ff8[_0x5dc1('0x21')]],'as':_0x4b9ff8['as'],'attributes':_0x4b9ff8[_0x5dc1('0x1e')],'include':_0x4b9ff8['include']?_[_0x5dc1('0x20')](_0x4b9ff8[_0x5dc1('0x1f')],function(_0x2bf06b){return{'model':db[_0x2bf06b[_0x5dc1('0x21')]],'as':_0x2bf06b['as'],'attributes':_0x2bf06b[_0x5dc1('0x1e')],'include':_0x2bf06b[_0x5dc1('0x1f')]?_[_0x5dc1('0x20')](_0x2bf06b[_0x5dc1('0x1f')],function(_0x272201){return{'model':db[_0x272201[_0x5dc1('0x21')]],'as':_0x272201['as'],'attributes':_0x272201[_0x5dc1('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x5dc1('0x22')](function(_0x1d7677){logger[_0x5dc1('0xf')](_0x5dc1('0x18'),_0x52a1e2);logger[_0x5dc1('0x12')](_0x5dc1('0x18'),_0x52a1e2,JSON[_0x5dc1('0x23')](_0x1d7677));_0xdcd30f(_0x1d7677);})[_0x5dc1('0x17')](function(_0x4eadf1){logger[_0x5dc1('0x14')](_0x5dc1('0x18'),_0x4eadf1[_0x5dc1('0x15')],_0x52a1e2);_0x41ae80(_0x3d6a6e[_0x5dc1('0x14')](0x1f4,_0x4eadf1[_0x5dc1('0x15')]));});});};
\ No newline at end of file
index 1ae2a97..a34e8c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x568a=['whatsappAccount:','./whatsappAccount.events','save','remove','update','emit','removeListener','length'];(function(_0xc3685c,_0x5c486a){var _0x116a65=function(_0xdf6c0e){while(--_0xdf6c0e){_0xc3685c['push'](_0xc3685c['shift']());}};_0x116a65(++_0x5c486a);}(_0x568a,0x111));var _0xa568=function(_0x1fc122,_0x5e2c17){_0x1fc122=_0x1fc122-0x0;var _0xa2cb13=_0x568a[_0x1fc122];return _0xa2cb13;};'use strict';var WhatsappAccountEvents=require(_0xa568('0x0'));var events=[_0xa568('0x1'),_0xa568('0x2'),_0xa568('0x3')];function createListener(_0x25a43d,_0x1162fc){return function(_0x109e34){_0x1162fc[_0xa568('0x4')](_0x25a43d,_0x109e34);};}function removeListener(_0x55e2b4,_0x1ab08e){return function(){WhatsappAccountEvents[_0xa568('0x5')](_0x55e2b4,_0x1ab08e);};}exports['register']=function(_0x52429b){for(var _0x33c218=0x0,_0x1dd9ee=events[_0xa568('0x6')];_0x33c218<_0x1dd9ee;_0x33c218++){var _0x3a88b3=events[_0x33c218];var _0x1d46a3=createListener(_0xa568('0x7')+_0x3a88b3,_0x52429b);WhatsappAccountEvents['on'](_0x3a88b3,_0x1d46a3);}};
\ No newline at end of file
+var _0x05ba=['save','emit','register','length','whatsappAccount:','./whatsappAccount.events'];(function(_0x21aec3,_0x5c97e9){var _0x288bbc=function(_0x2283fe){while(--_0x2283fe){_0x21aec3['push'](_0x21aec3['shift']());}};_0x288bbc(++_0x5c97e9);}(_0x05ba,0xd7));var _0xa05b=function(_0x1a4a06,_0x36a5c2){_0x1a4a06=_0x1a4a06-0x0;var _0x49ec08=_0x05ba[_0x1a4a06];return _0x49ec08;};'use strict';var WhatsappAccountEvents=require(_0xa05b('0x0'));var events=[_0xa05b('0x1'),'remove','update'];function createListener(_0x23c33f,_0x264154){return function(_0x29c4f3){_0x264154[_0xa05b('0x2')](_0x23c33f,_0x29c4f3);};}function removeListener(_0x1ef60d,_0x1be341){return function(){WhatsappAccountEvents['removeListener'](_0x1ef60d,_0x1be341);};}exports[_0xa05b('0x3')]=function(_0x48515f){for(var _0x59ed94=0x0,_0x135834=events[_0xa05b('0x4')];_0x59ed94<_0x135834;_0x59ed94++){var _0x207078=events[_0x59ed94];var _0x4a9493=createListener(_0xa05b('0x5')+_0x207078,_0x48515f);WhatsappAccountEvents['on'](_0x207078,_0x4a9493);}};
\ No newline at end of file
index 849fdf6..7d45ed1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3051=['update','destroy','exports','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','get','/:id','isAuthenticated','show','post','create','put'];(function(_0x3695cf,_0x2e7298){var _0x5e2ced=function(_0x1579b6){while(--_0x1579b6){_0x3695cf['push'](_0x3695cf['shift']());}};_0x5e2ced(++_0x2e7298);}(_0x3051,0xc9));var _0x1305=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x3051[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require('multer');var util=require(_0x1305('0x0'));var path=require(_0x1305('0x1'));var timeout=require(_0x1305('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x1305('0x3'));var auth=require(_0x1305('0x4'));var interaction=require(_0x1305('0x5'));var config=require(_0x1305('0x6'));var controller=require(_0x1305('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x1305('0x8')](_0x1305('0x9'),auth[_0x1305('0xa')](),controller[_0x1305('0xb')]);router[_0x1305('0xc')]('/',auth[_0x1305('0xa')](),controller[_0x1305('0xd')]);router[_0x1305('0xe')]('/:id',auth[_0x1305('0xa')](),controller[_0x1305('0xf')]);router['delete'](_0x1305('0x9'),auth[_0x1305('0xa')](),controller[_0x1305('0x10')]);module[_0x1305('0x11')]=router;
\ No newline at end of file
+var _0x1af6=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete'];(function(_0x58aa25,_0x5d5cd9){var _0x199279=function(_0x3433b8){while(--_0x3433b8){_0x58aa25['push'](_0x58aa25['shift']());}};_0x199279(++_0x5d5cd9);}(_0x1af6,0xd8));var _0x61af=function(_0x57a17b,_0x9214f){_0x57a17b=_0x57a17b-0x0;var _0x4918cf=_0x1af6[_0x57a17b];return _0x4918cf;};'use strict';var multer=require('multer');var util=require(_0x61af('0x0'));var path=require('path');var timeout=require(_0x61af('0x1'));var express=require(_0x61af('0x2'));var router=express[_0x61af('0x3')]();var fs_extra=require(_0x61af('0x4'));var auth=require(_0x61af('0x5'));var interaction=require(_0x61af('0x6'));var config=require(_0x61af('0x7'));var controller=require(_0x61af('0x8'));router[_0x61af('0x9')]('/',auth[_0x61af('0xa')](),controller[_0x61af('0xb')]);router[_0x61af('0x9')](_0x61af('0xc'),auth[_0x61af('0xa')](),controller['show']);router[_0x61af('0xd')]('/',auth[_0x61af('0xa')](),controller[_0x61af('0xe')]);router[_0x61af('0xf')](_0x61af('0xc'),auth[_0x61af('0xa')](),controller[_0x61af('0x10')]);router[_0x61af('0x11')](_0x61af('0xc'),auth[_0x61af('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 9d74b7f..2af6fb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fe7=['sequelize','exports','STRING','noop','*,*,*,*'];(function(_0x4ff6f9,_0x2e8c68){var _0x10185e=function(_0x1b7d8d){while(--_0x1b7d8d){_0x4ff6f9['push'](_0x4ff6f9['shift']());}};_0x10185e(++_0x2e8c68);}(_0x7fe7,0x104));var _0x77fe=function(_0x455abf,_0x4ae86d){_0x455abf=_0x455abf-0x0;var _0x3ab136=_0x7fe7[_0x455abf];return _0x3ab136;};'use strict';var Sequelize=require(_0x77fe('0x0'));module[_0x77fe('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x77fe('0x2')],'allowNull':![],'defaultValue':_0x77fe('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x77fe('0x2')]},'interval':{'type':Sequelize[_0x77fe('0x2')],'defaultValue':_0x77fe('0x4')}};
\ No newline at end of file
+var _0xbab7=['INTEGER','STRING','noop','TEXT','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbab7,0x19c));var _0x7bab=function(_0x581e27,_0xd99d0e){_0x581e27=_0x581e27-0x0;var _0x1d473e=_0xbab7[_0x581e27];return _0x1d473e;};'use strict';var Sequelize=require(_0x7bab('0x0'));module[_0x7bab('0x1')]={'priority':{'type':Sequelize[_0x7bab('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x7bab('0x3')],'allowNull':![],'defaultValue':_0x7bab('0x4')},'appdata':{'type':Sequelize[_0x7bab('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x7bab('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index ddeb206..cec5faa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77e6=['stack','name','send','index','map','WhatsappApplication','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','create','catch','update','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','then','end'];(function(_0x3eee78,_0x5acc63){var _0x53a5e5=function(_0x472fb6){while(--_0x472fb6){_0x3eee78['push'](_0x3eee78['shift']());}};_0x53a5e5(++_0x5acc63);}(_0x77e6,0x1a6));var _0x677e=function(_0x481213,_0x3dfc1c){_0x481213=_0x481213-0x0;var _0x3345eb=_0x77e6[_0x481213];return _0x3345eb;};'use strict';var emlformat=require(_0x677e('0x0'));var rimraf=require(_0x677e('0x1'));var zipdir=require(_0x677e('0x2'));var jsonpatch=require(_0x677e('0x3'));var rp=require(_0x677e('0x4'));var moment=require(_0x677e('0x5'));var BPromise=require(_0x677e('0x6'));var Mustache=require(_0x677e('0x7'));var util=require('util');var path=require(_0x677e('0x8'));var sox=require(_0x677e('0x9'));var csv=require('to-csv');var ejs=require(_0x677e('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x677e('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x677e('0xc'));var deskjs=require(_0x677e('0xd'));var toCsv=require(_0x677e('0xe'));var querystring=require(_0x677e('0xf'));var Papa=require('papaparse');var Redis=require(_0x677e('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x677e('0x11'));var as=require(_0x677e('0x12'));var hardwareService=require(_0x677e('0x13'));var logger=require(_0x677e('0x14'))(_0x677e('0x15'));var utils=require(_0x677e('0x16'));var config=require(_0x677e('0x17'));var licenseUtil=require(_0x677e('0x18'));var db=require(_0x677e('0x19'))['db'];function respondWithStatusCode(_0x46a67e,_0x366490){_0x366490=_0x366490||0xcc;return function(_0x2a5f95){if(_0x2a5f95){return _0x46a67e[_0x677e('0x1a')](_0x366490);}return _0x46a67e[_0x677e('0x1b')](_0x366490)['end']();};}function respondWithResult(_0x512631,_0x5c7351){_0x5c7351=_0x5c7351||0xc8;return function(_0x213a50){if(_0x213a50){return _0x512631[_0x677e('0x1b')](_0x5c7351)[_0x677e('0x1c')](_0x213a50);}};}function respondWithFilteredResult(_0x36e976,_0x4daa04){return function(_0x42d0c3){if(_0x42d0c3){var _0x24c9eb=typeof _0x4daa04[_0x677e('0x1d')]===_0x677e('0x1e')&&typeof _0x4daa04[_0x677e('0x1f')]===_0x677e('0x1e');var _0xe4d960=_0x42d0c3['count'];var _0x1c5124=_0x24c9eb?0x0:_0x4daa04[_0x677e('0x1d')];var _0x385b06=_0x24c9eb?_0x42d0c3[_0x677e('0x20')]:_0x4daa04[_0x677e('0x1d')]+_0x4daa04[_0x677e('0x1f')];var _0x52f65d;if(_0x385b06>=_0xe4d960){_0x385b06=_0xe4d960;_0x52f65d=0xc8;}else{_0x52f65d=0xce;}_0x36e976[_0x677e('0x1b')](_0x52f65d);return _0x36e976['set'](_0x677e('0x21'),_0x1c5124+'-'+_0x385b06+'/'+_0xe4d960)[_0x677e('0x1c')](_0x42d0c3);}return null;};}function patchUpdates(_0x26e9c5){return function(_0x593aed){try{jsonpatch[_0x677e('0x22')](_0x593aed,_0x26e9c5,!![]);}catch(_0x1a6122){return BPromise[_0x677e('0x23')](_0x1a6122);}return _0x593aed[_0x677e('0x24')]();};}function saveUpdates(_0x295964,_0x8732e0){return function(_0x3a7895){if(_0x3a7895){return _0x3a7895['update'](_0x295964)['then'](function(_0x52d915){return _0x52d915;});}return null;};}function removeEntity(_0x357466,_0x154fce){return function(_0x31a1e4){if(_0x31a1e4){return _0x31a1e4[_0x677e('0x25')]()[_0x677e('0x26')](function(){_0x357466[_0x677e('0x1b')](0xcc)[_0x677e('0x27')]();});}};}function handleEntityNotFound(_0x42f2b8,_0x2c51d3){return function(_0x3f0646){if(!_0x3f0646){_0x42f2b8['sendStatus'](0x194);}return _0x3f0646;};}function handleError(_0x5f0ba2,_0x3d3370){_0x3d3370=_0x3d3370||0x1f4;return function(_0x184f68){logger['error'](_0x184f68[_0x677e('0x28')]);if(_0x184f68[_0x677e('0x29')]){delete _0x184f68[_0x677e('0x29')];}_0x5f0ba2[_0x677e('0x1b')](_0x3d3370)[_0x677e('0x2a')](_0x184f68);};}exports[_0x677e('0x2b')]=function(_0x56ad40,_0xcd4646){var _0x2a6033={},_0xeca8e2={},_0x1e2694={'count':0x0,'rows':[]};var _0x22e44c=_[_0x677e('0x2c')](db[_0x677e('0x2d')][_0x677e('0x2e')],function(_0x9d49b5){return{'name':_0x9d49b5['fieldName'],'type':_0x9d49b5[_0x677e('0x2f')][_0x677e('0x30')]};});_0xeca8e2[_0x677e('0x31')]=_[_0x677e('0x2c')](_0x22e44c,_0x677e('0x29'));_0xeca8e2[_0x677e('0x32')]=_[_0x677e('0x33')](_0x56ad40[_0x677e('0x32')]);_0xeca8e2[_0x677e('0x34')]=_[_0x677e('0x35')](_0xeca8e2['model'],_0xeca8e2[_0x677e('0x32')]);_0x2a6033[_0x677e('0x36')]=_[_0x677e('0x35')](_0xeca8e2[_0x677e('0x31')],qs[_0x677e('0x37')](_0x56ad40[_0x677e('0x32')]['fields']));_0x2a6033[_0x677e('0x36')]=_0x2a6033[_0x677e('0x36')][_0x677e('0x38')]?_0x2a6033['attributes']:_0xeca8e2[_0x677e('0x31')];if(!_0x56ad40[_0x677e('0x32')][_0x677e('0x39')](_0x677e('0x3a'))){_0x2a6033[_0x677e('0x1f')]=qs['limit'](_0x56ad40[_0x677e('0x32')][_0x677e('0x1f')]);_0x2a6033[_0x677e('0x1d')]=qs[_0x677e('0x1d')](_0x56ad40['query'][_0x677e('0x1d')]);}_0x2a6033[_0x677e('0x3b')]=qs[_0x677e('0x3c')](_0x56ad40['query']['sort']);_0x2a6033[_0x677e('0x3d')]=qs[_0x677e('0x34')](_['pick'](_0x56ad40[_0x677e('0x32')],_0xeca8e2[_0x677e('0x34')]),_0x22e44c);if(_0x56ad40['query']['filter']){_0x2a6033[_0x677e('0x3d')]=_[_0x677e('0x3e')](_0x2a6033['where'],{'$or':_['map'](_0x22e44c,function(_0x42ce2c){if(_0x42ce2c[_0x677e('0x2f')]!==_0x677e('0x3f')){var _0x5bb080={};_0x5bb080[_0x42ce2c[_0x677e('0x29')]]={'$like':'%'+_0x56ad40[_0x677e('0x32')][_0x677e('0x40')]+'%'};return _0x5bb080;}})});}_0x2a6033=_[_0x677e('0x3e')]({},_0x2a6033,_0x56ad40[_0x677e('0x41')]);var _0x4b34fa={'where':_0x2a6033['where']};return db[_0x677e('0x2d')][_0x677e('0x20')](_0x4b34fa)[_0x677e('0x26')](function(_0x1db5b4){_0x1e2694[_0x677e('0x20')]=_0x1db5b4;if(_0x56ad40[_0x677e('0x32')][_0x677e('0x42')]){_0x2a6033[_0x677e('0x43')]=[{'all':!![]}];}return db[_0x677e('0x2d')][_0x677e('0x44')](_0x2a6033);})['then'](function(_0x56eb30){_0x1e2694[_0x677e('0x45')]=_0x56eb30;return _0x1e2694;})[_0x677e('0x26')](respondWithFilteredResult(_0xcd4646,_0x2a6033))['catch'](handleError(_0xcd4646,null));};exports[_0x677e('0x46')]=function(_0x511125,_0x16362e){var _0x29b9c0={'raw':!![],'where':{'id':_0x511125[_0x677e('0x47')]['id']}},_0x283aaa={};_0x283aaa[_0x677e('0x31')]=_[_0x677e('0x33')](db['WhatsappApplication'][_0x677e('0x2e')]);_0x283aaa[_0x677e('0x32')]=_[_0x677e('0x33')](_0x511125[_0x677e('0x32')]);_0x283aaa[_0x677e('0x34')]=_[_0x677e('0x35')](_0x283aaa['model'],_0x283aaa[_0x677e('0x32')]);_0x29b9c0['attributes']=_[_0x677e('0x35')](_0x283aaa[_0x677e('0x31')],qs[_0x677e('0x37')](_0x511125[_0x677e('0x32')][_0x677e('0x37')]));_0x29b9c0[_0x677e('0x36')]=_0x29b9c0[_0x677e('0x36')][_0x677e('0x38')]?_0x29b9c0[_0x677e('0x36')]:_0x283aaa[_0x677e('0x31')];if(_0x511125['query'][_0x677e('0x42')]){_0x29b9c0['include']=[{'all':!![]}];}_0x29b9c0=_['merge']({},_0x29b9c0,_0x511125[_0x677e('0x41')]);return db[_0x677e('0x2d')][_0x677e('0x48')](_0x29b9c0)[_0x677e('0x26')](handleEntityNotFound(_0x16362e,null))[_0x677e('0x26')](respondWithResult(_0x16362e,null))['catch'](handleError(_0x16362e,null));};exports[_0x677e('0x49')]=function(_0x136b77,_0x3cb653){return db[_0x677e('0x2d')][_0x677e('0x49')](_0x136b77['body'],{})[_0x677e('0x26')](respondWithResult(_0x3cb653,0xc9))[_0x677e('0x4a')](handleError(_0x3cb653,null));};exports[_0x677e('0x4b')]=function(_0x496627,_0x30ed5c){if(_0x496627['body']['id']){delete _0x496627[_0x677e('0x4c')]['id'];}return db['WhatsappApplication']['find']({'where':{'id':_0x496627[_0x677e('0x47')]['id']}})[_0x677e('0x26')](handleEntityNotFound(_0x30ed5c,null))[_0x677e('0x26')](saveUpdates(_0x496627[_0x677e('0x4c')],null))['then'](respondWithResult(_0x30ed5c,null))[_0x677e('0x4a')](handleError(_0x30ed5c,null));};exports[_0x677e('0x25')]=function(_0x51b2b8,_0x5e93e9){return db[_0x677e('0x2d')][_0x677e('0x48')]({'where':{'id':_0x51b2b8[_0x677e('0x47')]['id']}})[_0x677e('0x26')](handleEntityNotFound(_0x5e93e9,null))['then'](removeEntity(_0x5e93e9,null))[_0x677e('0x4a')](handleError(_0x5e93e9,null));};
\ No newline at end of file
+var _0x1ab1=['find','create','body','catch','eml-format','fast-json-patch','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','error','stack','name','send','index','map','WhatsappApplication','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','show','params','keys','includeAll'];(function(_0x235e17,_0x399e10){var _0x25cb38=function(_0xe2885f){while(--_0xe2885f){_0x235e17['push'](_0x235e17['shift']());}};_0x25cb38(++_0x399e10);}(_0x1ab1,0x12c));var _0x11ab=function(_0xe3ce0,_0x2baed2){_0xe3ce0=_0xe3ce0-0x0;var _0x3fdc2b=_0x1ab1[_0xe3ce0];return _0x3fdc2b;};'use strict';var emlformat=require(_0x11ab('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x11ab('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x11ab('0x2'));var util=require('util');var path=require(_0x11ab('0x3'));var sox=require(_0x11ab('0x4'));var csv=require(_0x11ab('0x5'));var ejs=require(_0x11ab('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x11ab('0x7'));var squel=require(_0x11ab('0x8'));var crypto=require(_0x11ab('0x9'));var jsforce=require(_0x11ab('0xa'));var deskjs=require(_0x11ab('0xb'));var toCsv=require(_0x11ab('0x5'));var querystring=require('querystring');var Papa=require(_0x11ab('0xc'));var Redis=require('ioredis');var authService=require(_0x11ab('0xd'));var qs=require(_0x11ab('0xe'));var as=require(_0x11ab('0xf'));var hardwareService=require(_0x11ab('0x10'));var logger=require('../../config/logger')(_0x11ab('0x11'));var utils=require(_0x11ab('0x12'));var config=require(_0x11ab('0x13'));var licenseUtil=require(_0x11ab('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x49aaa8,_0x45202d){_0x45202d=_0x45202d||0xcc;return function(_0x2d772f){if(_0x2d772f){return _0x49aaa8[_0x11ab('0x15')](_0x45202d);}return _0x49aaa8[_0x11ab('0x16')](_0x45202d)[_0x11ab('0x17')]();};}function respondWithResult(_0x582630,_0x33b5a8){_0x33b5a8=_0x33b5a8||0xc8;return function(_0x43f5d6){if(_0x43f5d6){return _0x582630[_0x11ab('0x16')](_0x33b5a8)[_0x11ab('0x18')](_0x43f5d6);}};}function respondWithFilteredResult(_0x4bbcf1,_0x39277d){return function(_0x462486){if(_0x462486){var _0x2ab33d=typeof _0x39277d[_0x11ab('0x19')]===_0x11ab('0x1a')&&typeof _0x39277d[_0x11ab('0x1b')]===_0x11ab('0x1a');var _0x4f0ca2=_0x462486[_0x11ab('0x1c')];var _0x4786a7=_0x2ab33d?0x0:_0x39277d[_0x11ab('0x19')];var _0x2db61e=_0x2ab33d?_0x462486[_0x11ab('0x1c')]:_0x39277d[_0x11ab('0x19')]+_0x39277d[_0x11ab('0x1b')];var _0x513500;if(_0x2db61e>=_0x4f0ca2){_0x2db61e=_0x4f0ca2;_0x513500=0xc8;}else{_0x513500=0xce;}_0x4bbcf1[_0x11ab('0x16')](_0x513500);return _0x4bbcf1[_0x11ab('0x1d')](_0x11ab('0x1e'),_0x4786a7+'-'+_0x2db61e+'/'+_0x4f0ca2)[_0x11ab('0x18')](_0x462486);}return null;};}function patchUpdates(_0x31485c){return function(_0x4ace6f){try{jsonpatch['apply'](_0x4ace6f,_0x31485c,!![]);}catch(_0x25a57f){return BPromise[_0x11ab('0x1f')](_0x25a57f);}return _0x4ace6f[_0x11ab('0x20')]();};}function saveUpdates(_0x27fdfd,_0x22b406){return function(_0x333b18){if(_0x333b18){return _0x333b18[_0x11ab('0x21')](_0x27fdfd)['then'](function(_0x5d1c09){return _0x5d1c09;});}return null;};}function removeEntity(_0x3a6d34,_0x1ea334){return function(_0x1bae08){if(_0x1bae08){return _0x1bae08[_0x11ab('0x22')]()[_0x11ab('0x23')](function(){_0x3a6d34[_0x11ab('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x418271,_0x913abd){return function(_0x47cad2){if(!_0x47cad2){_0x418271[_0x11ab('0x15')](0x194);}return _0x47cad2;};}function handleError(_0x3aeaee,_0x572377){_0x572377=_0x572377||0x1f4;return function(_0x57fe61){logger[_0x11ab('0x24')](_0x57fe61[_0x11ab('0x25')]);if(_0x57fe61[_0x11ab('0x26')]){delete _0x57fe61[_0x11ab('0x26')];}_0x3aeaee[_0x11ab('0x16')](_0x572377)[_0x11ab('0x27')](_0x57fe61);};}exports[_0x11ab('0x28')]=function(_0x51aff0,_0x238aad){var _0x28aed6={},_0x2563d3={},_0x10a4f8={'count':0x0,'rows':[]};var _0x25fe55=_[_0x11ab('0x29')](db[_0x11ab('0x2a')]['rawAttributes'],function(_0x3689b9){return{'name':_0x3689b9[_0x11ab('0x2b')],'type':_0x3689b9[_0x11ab('0x2c')][_0x11ab('0x2d')]};});_0x2563d3[_0x11ab('0x2e')]=_[_0x11ab('0x29')](_0x25fe55,'name');_0x2563d3[_0x11ab('0x2f')]=_['keys'](_0x51aff0[_0x11ab('0x2f')]);_0x2563d3[_0x11ab('0x30')]=_[_0x11ab('0x31')](_0x2563d3[_0x11ab('0x2e')],_0x2563d3[_0x11ab('0x2f')]);_0x28aed6[_0x11ab('0x32')]=_['intersection'](_0x2563d3[_0x11ab('0x2e')],qs[_0x11ab('0x33')](_0x51aff0['query'][_0x11ab('0x33')]));_0x28aed6[_0x11ab('0x32')]=_0x28aed6[_0x11ab('0x32')][_0x11ab('0x34')]?_0x28aed6[_0x11ab('0x32')]:_0x2563d3['model'];if(!_0x51aff0[_0x11ab('0x2f')][_0x11ab('0x35')](_0x11ab('0x36'))){_0x28aed6[_0x11ab('0x1b')]=qs[_0x11ab('0x1b')](_0x51aff0[_0x11ab('0x2f')][_0x11ab('0x1b')]);_0x28aed6[_0x11ab('0x19')]=qs[_0x11ab('0x19')](_0x51aff0[_0x11ab('0x2f')]['offset']);}_0x28aed6[_0x11ab('0x37')]=qs['sort'](_0x51aff0[_0x11ab('0x2f')][_0x11ab('0x38')]);_0x28aed6['where']=qs[_0x11ab('0x30')](_[_0x11ab('0x39')](_0x51aff0['query'],_0x2563d3[_0x11ab('0x30')]),_0x25fe55);if(_0x51aff0[_0x11ab('0x2f')][_0x11ab('0x3a')]){_0x28aed6[_0x11ab('0x3b')]=_[_0x11ab('0x3c')](_0x28aed6[_0x11ab('0x3b')],{'$or':_[_0x11ab('0x29')](_0x25fe55,function(_0x339dbe){if(_0x339dbe[_0x11ab('0x2c')]!==_0x11ab('0x3d')){var _0x53e438={};_0x53e438[_0x339dbe[_0x11ab('0x26')]]={'$like':'%'+_0x51aff0[_0x11ab('0x2f')][_0x11ab('0x3a')]+'%'};return _0x53e438;}})});}_0x28aed6=_[_0x11ab('0x3c')]({},_0x28aed6,_0x51aff0[_0x11ab('0x3e')]);var _0x4fac78={'where':_0x28aed6[_0x11ab('0x3b')]};return db[_0x11ab('0x2a')]['count'](_0x4fac78)['then'](function(_0x3a3489){_0x10a4f8[_0x11ab('0x1c')]=_0x3a3489;if(_0x51aff0[_0x11ab('0x2f')]['includeAll']){_0x28aed6[_0x11ab('0x3f')]=[{'all':!![]}];}return db['WhatsappApplication'][_0x11ab('0x40')](_0x28aed6);})[_0x11ab('0x23')](function(_0x5c06f2){_0x10a4f8[_0x11ab('0x41')]=_0x5c06f2;return _0x10a4f8;})[_0x11ab('0x23')](respondWithFilteredResult(_0x238aad,_0x28aed6))['catch'](handleError(_0x238aad,null));};exports[_0x11ab('0x42')]=function(_0x41e33c,_0x1e808e){var _0x38f585={'raw':!![],'where':{'id':_0x41e33c[_0x11ab('0x43')]['id']}},_0x3af1b3={};_0x3af1b3[_0x11ab('0x2e')]=_[_0x11ab('0x44')](db[_0x11ab('0x2a')]['rawAttributes']);_0x3af1b3[_0x11ab('0x2f')]=_['keys'](_0x41e33c[_0x11ab('0x2f')]);_0x3af1b3[_0x11ab('0x30')]=_[_0x11ab('0x31')](_0x3af1b3[_0x11ab('0x2e')],_0x3af1b3['query']);_0x38f585['attributes']=_['intersection'](_0x3af1b3[_0x11ab('0x2e')],qs['fields'](_0x41e33c['query'][_0x11ab('0x33')]));_0x38f585[_0x11ab('0x32')]=_0x38f585[_0x11ab('0x32')][_0x11ab('0x34')]?_0x38f585['attributes']:_0x3af1b3['model'];if(_0x41e33c[_0x11ab('0x2f')][_0x11ab('0x45')]){_0x38f585[_0x11ab('0x3f')]=[{'all':!![]}];}_0x38f585=_['merge']({},_0x38f585,_0x41e33c['options']);return db[_0x11ab('0x2a')][_0x11ab('0x46')](_0x38f585)[_0x11ab('0x23')](handleEntityNotFound(_0x1e808e,null))[_0x11ab('0x23')](respondWithResult(_0x1e808e,null))['catch'](handleError(_0x1e808e,null));};exports[_0x11ab('0x47')]=function(_0x6ccb66,_0x268d0e){return db['WhatsappApplication']['create'](_0x6ccb66['body'],{})[_0x11ab('0x23')](respondWithResult(_0x268d0e,0xc9))['catch'](handleError(_0x268d0e,null));};exports['update']=function(_0x2ef826,_0x3df075){if(_0x2ef826[_0x11ab('0x48')]['id']){delete _0x2ef826[_0x11ab('0x48')]['id'];}return db[_0x11ab('0x2a')]['find']({'where':{'id':_0x2ef826[_0x11ab('0x43')]['id']}})[_0x11ab('0x23')](handleEntityNotFound(_0x3df075,null))[_0x11ab('0x23')](saveUpdates(_0x2ef826['body'],null))[_0x11ab('0x23')](respondWithResult(_0x3df075,null))[_0x11ab('0x49')](handleError(_0x3df075,null));};exports[_0x11ab('0x22')]=function(_0x627714,_0x238de4){return db[_0x11ab('0x2a')][_0x11ab('0x46')]({'where':{'id':_0x627714['params']['id']}})['then'](handleEntityNotFound(_0x238de4,null))[_0x11ab('0x23')](removeEntity(_0x238de4,null))['catch'](handleError(_0x238de4,null));};
\ No newline at end of file
index 2745157..9e651ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0c3=['path','rimraf','../../config/environment','./whatsappApplication.attributes','define','WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x352d28,_0x444033){var _0x387d7e=function(_0x40be0e){while(--_0x40be0e){_0x352d28['push'](_0x352d28['shift']());}};_0x387d7e(++_0x444033);}(_0xe0c3,0xea));var _0x3e0c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe0c3[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x3e0c('0x0'));var util=require('util');var logger=require(_0x3e0c('0x1'))(_0x3e0c('0x2'));var moment=require(_0x3e0c('0x3'));var BPromise=require(_0x3e0c('0x4'));var rp=require(_0x3e0c('0x5'));var fs=require('fs');var path=require(_0x3e0c('0x6'));var rimraf=require(_0x3e0c('0x7'));var config=require(_0x3e0c('0x8'));var attributes=require(_0x3e0c('0x9'));module['exports']=function(_0x530ebf,_0x163adf){return _0x530ebf[_0x3e0c('0xa')](_0x3e0c('0xb'),attributes,{'tableName':_0x3e0c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3e0c('0xd'),'collate':_0x3e0c('0xe')});};
\ No newline at end of file
+var _0x3148=['util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./whatsappApplication.attributes','exports','define','whatsapp_applications','utf8mb4_unicode_ci','lodash'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x3148,0x1d3));var _0x8314=function(_0x242027,_0x13f270){_0x242027=_0x242027-0x0;var _0xc00b6f=_0x3148[_0x242027];return _0xc00b6f;};'use strict';var _=require(_0x8314('0x0'));var util=require(_0x8314('0x1'));var logger=require('../../config/logger')(_0x8314('0x2'));var moment=require(_0x8314('0x3'));var BPromise=require(_0x8314('0x4'));var rp=require(_0x8314('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8314('0x6'));var config=require(_0x8314('0x7'));var attributes=require(_0x8314('0x8'));module[_0x8314('0x9')]=function(_0x18a30b,_0x9cb271){return _0x18a30b[_0x8314('0xa')]('WhatsappApplication',attributes,{'tableName':_0x8314('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x8314('0xc')});};
\ No newline at end of file
index d59768e..49db8fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','WhatsappApplication,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','WhatsappApplication,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x008c,0x188));var _0xc008=function(_0x5537e6,_0xddf3dc){_0x5537e6=_0x5537e6-0x0;var _0x44115a=_0x008c[_0x5537e6];return _0x44115a;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var moment=require(_0xc008('0x2'));var BPromise=require(_0xc008('0x3'));var rs=require(_0xc008('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc008('0x5'))['db'];var utils=require(_0xc008('0x6'));var logger=require(_0xc008('0x7'))(_0xc008('0x8'));var config=require(_0xc008('0x9'));var jayson=require(_0xc008('0xa'));var client=jayson[_0xc008('0xb')][_0xc008('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x9c8cb2,_0x4af530,_0x428fa9){return new BPromise(function(_0x5aa09b,_0x30be38){return client['request'](_0x9c8cb2,_0x428fa9)['then'](function(_0x27830d){logger[_0xc008('0xd')]('WhatsappApplication,\x20%s,\x20%s',_0x4af530,'request\x20sent');logger['debug'](_0xc008('0xe'),_0x4af530,_0xc008('0xf'),JSON['stringify'](_0x27830d));if(_0x27830d[_0xc008('0x10')]){if(_0x27830d[_0xc008('0x10')][_0xc008('0x11')]===0x1f4){logger[_0xc008('0x10')](_0xc008('0x12'),_0x4af530,_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);return _0x30be38(_0x27830d['error']['message']);}logger[_0xc008('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0x4af530,_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);return _0x5aa09b(_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);}else{logger[_0xc008('0xd')]('WhatsappApplication,\x20%s,\x20%s',_0x4af530,'request\x20sent');_0x5aa09b(_0x27830d['result'][_0xc008('0x13')]);}})[_0xc008('0x14')](function(_0x3cafe3){logger[_0xc008('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0x4af530,_0x3cafe3);_0x30be38(_0x3cafe3);});});}
\ No newline at end of file
+var _0x5fd1=['moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','WhatsappApplication,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','lodash'];(function(_0x31ce68,_0xb4a20a){var _0x1c61db=function(_0x230bdd){while(--_0x230bdd){_0x31ce68['push'](_0x31ce68['shift']());}};_0x1c61db(++_0xb4a20a);}(_0x5fd1,0x155));var _0x15fd=function(_0x3aae08,_0x2e6e74){_0x3aae08=_0x3aae08-0x0;var _0x39fc75=_0x5fd1[_0x3aae08];return _0x39fc75;};'use strict';var _=require(_0x15fd('0x0'));var util=require('util');var moment=require(_0x15fd('0x1'));var BPromise=require(_0x15fd('0x2'));var rs=require(_0x15fd('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x15fd('0x4'));var logger=require(_0x15fd('0x5'))(_0x15fd('0x6'));var config=require('../../config/environment');var jayson=require(_0x15fd('0x7'));var client=jayson[_0x15fd('0x8')][_0x15fd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2e88bf,_0x225728,_0x534e63){return new BPromise(function(_0x210e90,_0x1ee117){return client[_0x15fd('0xa')](_0x2e88bf,_0x534e63)['then'](function(_0x2d2fbb){logger['info'](_0x15fd('0xb'),_0x225728,_0x15fd('0xc'));logger['debug']('WhatsappApplication,\x20%s,\x20%s,\x20%s',_0x225728,'request\x20sent',JSON[_0x15fd('0xd')](_0x2d2fbb));if(_0x2d2fbb[_0x15fd('0xe')]){if(_0x2d2fbb[_0x15fd('0xe')][_0x15fd('0xf')]===0x1f4){logger[_0x15fd('0xe')](_0x15fd('0xb'),_0x225728,_0x2d2fbb[_0x15fd('0xe')][_0x15fd('0x10')]);return _0x1ee117(_0x2d2fbb[_0x15fd('0xe')]['message']);}logger['error']('WhatsappApplication,\x20%s,\x20%s',_0x225728,_0x2d2fbb[_0x15fd('0xe')][_0x15fd('0x10')]);return _0x210e90(_0x2d2fbb[_0x15fd('0xe')][_0x15fd('0x10')]);}else{logger[_0x15fd('0x11')](_0x15fd('0xb'),_0x225728,_0x15fd('0xc'));_0x210e90(_0x2d2fbb[_0x15fd('0x12')]['message']);}})['catch'](function(_0x25f139){logger['error'](_0x15fd('0xb'),_0x225728,_0x25f139);_0x1ee117(_0x25f139);});});}
\ No newline at end of file
index 16e64bc..ad89800 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f8a=['create','addMessage','/:id/tags','whatsapp','whatsappinteraction:addtags','addTags','put','tracked','whatsappinteraction:update','update','delete','destroy','removeTags','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','download','post'];(function(_0x34044d,_0x10b169){var _0x6e9d0e=function(_0x2284bb){while(--_0x2284bb){_0x34044d['push'](_0x34044d['shift']());}};_0x6e9d0e(++_0x10b169);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0xdd8280,_0x5696b9){_0xdd8280=_0xdd8280-0x0;var _0x1f2b3b=_0x3f8a[_0xdd8280];return _0x1f2b3b;};'use strict';var multer=require(_0xa3f8('0x0'));var util=require(_0xa3f8('0x1'));var path=require(_0xa3f8('0x2'));var timeout=require(_0xa3f8('0x3'));var express=require('express');var router=express[_0xa3f8('0x4')]();var fs_extra=require(_0xa3f8('0x5'));var auth=require(_0xa3f8('0x6'));var interaction=require(_0xa3f8('0x7'));var config=require(_0xa3f8('0x8'));var controller=require(_0xa3f8('0x9'));router[_0xa3f8('0xa')]('/',auth[_0xa3f8('0xb')](),controller[_0xa3f8('0xc')]);router[_0xa3f8('0xa')](_0xa3f8('0xd'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0xe')]);router[_0xa3f8('0xa')](_0xa3f8('0xf'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x10')]);router['get'](_0xa3f8('0x11'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x12')]);router[_0xa3f8('0xa')]('/:id/download',auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x13')]);router[_0xa3f8('0x14')]('/',auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x15')]);router[_0xa3f8('0x14')](_0xa3f8('0x11'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x16')]);router[_0xa3f8('0x14')](_0xa3f8('0x17'),auth[_0xa3f8('0xb')](),interaction['tracked'](_0xa3f8('0x18'),_0xa3f8('0x19')),controller[_0xa3f8('0x1a')]);router[_0xa3f8('0x1b')]('/:id',auth[_0xa3f8('0xb')](),interaction[_0xa3f8('0x1c')](_0xa3f8('0x18'),_0xa3f8('0x1d')),controller[_0xa3f8('0x1e')]);router[_0xa3f8('0x1f')](_0xa3f8('0xf'),auth[_0xa3f8('0xb')](),interaction[_0xa3f8('0x1c')](_0xa3f8('0x18'),'whatsappinteraction:destroy'),controller[_0xa3f8('0x20')]);router['delete'](_0xa3f8('0x17'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x21')]);module[_0xa3f8('0x22')]=router;
\ No newline at end of file
+var _0xfc17=['create','/:id/messages','addMessage','/:id/tags','whatsapp','whatsappinteraction:addtags','addTags','put','/:id','tracked','whatsappinteraction:update','update','destroy','delete','removeTags','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','isAuthenticated','index','get','/describe','describe','show','/:id/download','download','post'];(function(_0xf8e77d,_0x44ec12){var _0x49163c=function(_0x2c2008){while(--_0x2c2008){_0xf8e77d['push'](_0xf8e77d['shift']());}};_0x49163c(++_0x44ec12);}(_0xfc17,0x1b4));var _0x7fc1=function(_0x149834,_0x341330){_0x149834=_0x149834-0x0;var _0x578029=_0xfc17[_0x149834];return _0x578029;};'use strict';var multer=require(_0x7fc1('0x0'));var util=require(_0x7fc1('0x1'));var path=require(_0x7fc1('0x2'));var timeout=require(_0x7fc1('0x3'));var express=require('express');var router=express[_0x7fc1('0x4')]();var fs_extra=require(_0x7fc1('0x5'));var auth=require(_0x7fc1('0x6'));var interaction=require(_0x7fc1('0x7'));var config=require(_0x7fc1('0x8'));var controller=require(_0x7fc1('0x9'));router['get']('/',auth[_0x7fc1('0xa')](),controller[_0x7fc1('0xb')]);router[_0x7fc1('0xc')](_0x7fc1('0xd'),auth[_0x7fc1('0xa')](),controller[_0x7fc1('0xe')]);router[_0x7fc1('0xc')]('/:id',auth[_0x7fc1('0xa')](),controller[_0x7fc1('0xf')]);router[_0x7fc1('0xc')]('/:id/messages',auth[_0x7fc1('0xa')](),controller['getMessages']);router['get'](_0x7fc1('0x10'),auth[_0x7fc1('0xa')](),controller[_0x7fc1('0x11')]);router[_0x7fc1('0x12')]('/',auth[_0x7fc1('0xa')](),controller[_0x7fc1('0x13')]);router[_0x7fc1('0x12')](_0x7fc1('0x14'),auth[_0x7fc1('0xa')](),controller[_0x7fc1('0x15')]);router[_0x7fc1('0x12')](_0x7fc1('0x16'),auth['isAuthenticated'](),interaction['tracked'](_0x7fc1('0x17'),_0x7fc1('0x18')),controller[_0x7fc1('0x19')]);router[_0x7fc1('0x1a')](_0x7fc1('0x1b'),auth[_0x7fc1('0xa')](),interaction[_0x7fc1('0x1c')](_0x7fc1('0x17'),_0x7fc1('0x1d')),controller[_0x7fc1('0x1e')]);router['delete'](_0x7fc1('0x1b'),auth['isAuthenticated'](),interaction[_0x7fc1('0x1c')](_0x7fc1('0x17'),'whatsappinteraction:destroy'),controller[_0x7fc1('0x1f')]);router[_0x7fc1('0x20')]('/:id/tags',auth[_0x7fc1('0xa')](),controller[_0x7fc1('0x21')]);module[_0x7fc1('0x22')]=router;
\ No newline at end of file
index 29fcaf1..3e6b6f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0df=['moment','exports','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0x489799,_0x52a174){var _0x5c2c49=function(_0x54a732){while(--_0x54a732){_0x489799['push'](_0x489799['shift']());}};_0x5c2c49(++_0x52a174);}(_0xb0df,0x85));var _0xfb0d=function(_0x323419,_0x2a6172){_0x323419=_0x323419-0x0;var _0x4c0be7=_0xb0df[_0x323419];return _0x4c0be7;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xfb0d('0x0'));module[_0xfb0d('0x1')]={'closed':{'type':Sequelize[_0xfb0d('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xfb0d('0x3')]},'disposition':{'type':Sequelize[_0xfb0d('0x4')]},'secondDisposition':{'type':Sequelize[_0xfb0d('0x4')]},'thirdDisposition':{'type':Sequelize[_0xfb0d('0x4')]},'note':{'type':Sequelize[_0xfb0d('0x4')]},'phone':{'type':Sequelize[_0xfb0d('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0xfb0d('0x5')]('in',_0xfb0d('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xfb0d('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xfb0d('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xaeab=['DATE','STRING','ENUM','out','BOOLEAN','sequelize','exports'];(function(_0x3ddb8a,_0x51d208){var _0x119742=function(_0x12c657){while(--_0x12c657){_0x3ddb8a['push'](_0x3ddb8a['shift']());}};_0x119742(++_0x51d208);}(_0xaeab,0x91));var _0xbaea=function(_0x4c1e6e,_0x206a12){_0x4c1e6e=_0x4c1e6e-0x0;var _0x1cb554=_0xaeab[_0x4c1e6e];return _0x1cb554;};'use strict';var Sequelize=require(_0xbaea('0x0'));var moment=require('moment');module[_0xbaea('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xbaea('0x2')]},'disposition':{'type':Sequelize[_0xbaea('0x3')]},'secondDisposition':{'type':Sequelize[_0xbaea('0x3')]},'thirdDisposition':{'type':Sequelize[_0xbaea('0x3')]},'note':{'type':Sequelize[_0xbaea('0x3')]},'phone':{'type':Sequelize[_0xbaea('0x3')]},'read1stAt':{'type':Sequelize[_0xbaea('0x2')]},'firstMsgDirection':{'type':Sequelize[_0xbaea('0x4')]('in',_0xbaea('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xbaea('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xbaea('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xbaea('0x6')],'defaultValue':![]}};
\ No newline at end of file
index 61de00b..3c04c75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37a4=['offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','TagIds','split','forEach','push','catch','index','map','WhatsappInteraction','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','select','field','from','tools_tags','u.id','ui.WhatsappInteractionId','user_has_whatsapp_interactions','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','length','conditions','find','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','value','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','some','compact','isEmpty','WhatsappAccountId','where','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','order','contactName','DESC','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','i.WhatsappAccountId\x20IN\x20?','sequelize','toString','keyBy','merge','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','o.fullname','Owner.fullname','Owner.internal','ui.WhatsappInteractionId\x20IN\x20?','WhatsappInteractionId','all','rows','show','includeAll','include','options','create','body','describe','addMessage','WhatsappMessage','params','ids','omit','getMessages','format','findAll','setTags','spread','Tag','color','emit','removeTags','unix','join','root','server','tmp','files','transcript-%d-%s.zip','User','CmContact','firstName','lastName','attachments','Attachment','Messages','WhatsappAccount','Account','Owner','fullname','get','mkdirSync','Whatsapp','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','basename','createReadStream','pipe','out','System','direction','secret','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','download','log','eml-format','zip-dir','request-promise','moment','bluebird','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./whatsappInteraction.socket','register','sendStatus','status','end','json'];(function(_0x1e1299,_0x4fbdf0){var _0x3cfaf9=function(_0x256a66){while(--_0x256a66){_0x1e1299['push'](_0x1e1299['shift']());}};_0x3cfaf9(++_0x4fbdf0);}(_0x37a4,0xcb));var _0x437a=function(_0x57c231,_0x200a3f){_0x57c231=_0x57c231-0x0;var _0x2d7935=_0x37a4[_0x57c231];return _0x2d7935;};'use strict';var emlformat=require(_0x437a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x437a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x437a('0x2'));var moment=require(_0x437a('0x3'));var BPromise=require(_0x437a('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x437a('0x5'));var sox=require(_0x437a('0x6'));var csv=require(_0x437a('0x7'));var ejs=require(_0x437a('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x437a('0x9'));var squel=require(_0x437a('0xa'));var crypto=require('crypto');var jsforce=require(_0x437a('0xb'));var deskjs=require(_0x437a('0xc'));var toCsv=require(_0x437a('0x7'));var querystring=require(_0x437a('0xd'));var Papa=require(_0x437a('0xe'));var Redis=require(_0x437a('0xf'));var authService=require(_0x437a('0x10'));var qs=require(_0x437a('0x11'));var as=require(_0x437a('0x12'));var pdf=require(_0x437a('0x13'));var hardwareService=require(_0x437a('0x14'));var logger=require('../../config/logger')(_0x437a('0x15'));var utils=require(_0x437a('0x16'));var config=require(_0x437a('0x17'));var licenseUtil=require(_0x437a('0x18'));var db=require(_0x437a('0x19'))['db'];config['redis']=_[_0x437a('0x1a')](config['redis'],{'host':_0x437a('0x1b'),'port':0x18eb});var socket=require(_0x437a('0x1c'))(new Redis(config[_0x437a('0x1d')]));require(_0x437a('0x1e'))[_0x437a('0x1f')](socket);function respondWithStatusCode(_0x89cb08,_0x372161){_0x372161=_0x372161||0xcc;return function(_0x1a1956){if(_0x1a1956){return _0x89cb08[_0x437a('0x20')](_0x372161);}return _0x89cb08[_0x437a('0x21')](_0x372161)[_0x437a('0x22')]();};}function respondWithResult(_0x16aa9c,_0x4a44d6){_0x4a44d6=_0x4a44d6||0xc8;return function(_0x469122){if(_0x469122){return _0x16aa9c['status'](_0x4a44d6)[_0x437a('0x23')](_0x469122);}};}function respondWithFilteredResult(_0x20173b,_0x170ba3){return function(_0x60f54b){if(_0x60f54b){var _0x3d1a23=typeof _0x170ba3[_0x437a('0x24')]==='undefined'&&typeof _0x170ba3[_0x437a('0x25')]===_0x437a('0x26');var _0x2b04d3=_0x60f54b['count'];var _0x229ef2=_0x3d1a23?0x0:_0x170ba3['offset'];var _0x2d7088=_0x3d1a23?_0x60f54b[_0x437a('0x27')]:_0x170ba3['offset']+_0x170ba3[_0x437a('0x25')];var _0x4b19ba;if(_0x2d7088>=_0x2b04d3){_0x2d7088=_0x2b04d3;_0x4b19ba=0xc8;}else{_0x4b19ba=0xce;}_0x20173b[_0x437a('0x21')](_0x4b19ba);return _0x20173b[_0x437a('0x28')](_0x437a('0x29'),_0x229ef2+'-'+_0x2d7088+'/'+_0x2b04d3)[_0x437a('0x23')](_0x60f54b);}return null;};}function patchUpdates(_0x263b61){return function(_0x40bcfd){try{jsonpatch[_0x437a('0x2a')](_0x40bcfd,_0x263b61,!![]);}catch(_0x1b49d8){return BPromise[_0x437a('0x2b')](_0x1b49d8);}return _0x40bcfd[_0x437a('0x2c')]();};}function saveUpdates(_0x1adcc7,_0x46ebad){return function(_0x53089f){if(_0x53089f){return _0x53089f[_0x437a('0x2d')](_0x1adcc7)[_0x437a('0x2e')](function(_0x39f79b){return _0x39f79b;});}return null;};}function removeEntity(_0x4d6707,_0x224d7){return function(_0x56f12d){if(_0x56f12d){return _0x56f12d[_0x437a('0x2f')]()[_0x437a('0x2e')](function(){_0x4d6707[_0x437a('0x21')](0xcc)[_0x437a('0x22')]();});}};}function handleEntityNotFound(_0x2a22a8,_0x1c00f1){return function(_0x212490){if(!_0x212490){_0x2a22a8[_0x437a('0x20')](0x194);}return _0x212490;};}function handleError(_0x1c3bef,_0x484cee){_0x484cee=_0x484cee||0x1f4;return function(_0x5a6bf4){logger['error'](_0x5a6bf4[_0x437a('0x30')]);if(_0x5a6bf4[_0x437a('0x31')]){delete _0x5a6bf4[_0x437a('0x31')];}_0x1c3bef['status'](_0x484cee)[_0x437a('0x32')](_0x5a6bf4);};}function getInteractionUsers(_0x3cbc11,_0x392f4b){return new BPromise(function(_0x2b886c,_0x902594){try{if(_0x392f4b[_0x3cbc11['id']]){_0x3cbc11['Users']=_['map'](_0x392f4b[_0x3cbc11['id']],function(_0x5d600a){return{'id':_0x5d600a['id'],'fullname':_0x5d600a['fullname']};});}}catch(_0x3693dc){_0x902594(_0x3693dc);}_0x2b886c(_0x3cbc11);});}function getInteractionTags(_0x374d61,_0x312df5){return new BPromise(function(_0x4a66d9,_0x4f5413){try{if(_0x374d61['TagIds']){_0x374d61['Tags']=[];_0x374d61[_0x437a('0x33')][_0x437a('0x34')](',')[_0x437a('0x35')](function(_0x503789){_0x374d61['Tags'][_0x437a('0x36')](_0x312df5[_0x503789]);});}delete _0x374d61['TagIds'];}catch(_0x192774){_0x4f5413(_0x192774);}_0x4a66d9(_0x374d61);});}function updateWhatsappInteraction(_0x3f70d3,_0x2fde6c,_0x34332d){return new BPromise(function(_0x2fca86,_0xdb2afa){return getInteractionUsers(_0x3f70d3,_0x34332d)[_0x437a('0x2e')](function(_0x2bf476){return getInteractionTags(_0x2bf476,_0x2fde6c);})['then'](function(_0x42627f){_0x2fca86(_0x42627f);})[_0x437a('0x37')](function(_0x4f7512){_0xdb2afa(_0x4f7512);});});}exports[_0x437a('0x38')]=function(_0x1d4e59,_0x558496){var _0x4e8c4f={},_0x48618e={},_0x21f4dd={'count':0x0,'rows':[]};var _0xf49d04=_[_0x437a('0x39')](db[_0x437a('0x3a')][_0x437a('0x3b')],function(_0x2d5279){return{'name':_0x2d5279[_0x437a('0x3c')],'type':_0x2d5279[_0x437a('0x3d')]['key']};});_0x48618e[_0x437a('0x3e')]=_[_0x437a('0x39')](_0xf49d04,_0x437a('0x31'));_0x48618e[_0x437a('0x3f')]=_[_0x437a('0x40')](_0x1d4e59[_0x437a('0x3f')]);_0x48618e[_0x437a('0x41')]=_[_0x437a('0x42')](_0x48618e[_0x437a('0x3e')],_0x48618e['query']);_0x4e8c4f[_0x437a('0x43')]=_['intersection'](_0x48618e[_0x437a('0x3e')],qs[_0x437a('0x44')](_0x1d4e59[_0x437a('0x3f')][_0x437a('0x44')]));_0x4e8c4f[_0x437a('0x43')]=_0x4e8c4f[_0x437a('0x43')]['length']?_0x4e8c4f[_0x437a('0x43')]:_0x48618e[_0x437a('0x3e')];if(!_0x1d4e59[_0x437a('0x3f')][_0x437a('0x45')](_0x437a('0x46'))){_0x4e8c4f[_0x437a('0x25')]=qs[_0x437a('0x25')](_0x1d4e59['query']['limit']);_0x4e8c4f['offset']=qs[_0x437a('0x24')](_0x1d4e59[_0x437a('0x3f')][_0x437a('0x24')]);}_0x4e8c4f['order']=qs[_0x437a('0x47')](_0x1d4e59[_0x437a('0x3f')][_0x437a('0x47')]);_0x4e8c4f['where']=qs['filters'](_['pick'](_0x1d4e59[_0x437a('0x3f')],_0x48618e[_0x437a('0x41')]),_0xf49d04);var _0x795b60=[];var _0x295406=squel[_0x437a('0x48')]()[_0x437a('0x49')]('id')[_0x437a('0x49')](_0x437a('0x31'))[_0x437a('0x49')]('color')[_0x437a('0x4a')](_0x437a('0x4b'));var _0x27d989=squel[_0x437a('0x48')]()['field'](_0x437a('0x4c'))[_0x437a('0x49')]('u.fullname')[_0x437a('0x49')](_0x437a('0x4d'))['from'](_0x437a('0x4e'),'ui')[_0x437a('0x4f')](_0x437a('0x50'),'u',_0x437a('0x51'));var _0x1b4a85=squel[_0x437a('0x48')]()[_0x437a('0x4a')]('whatsapp_interactions','i')['left_join'](_0x437a('0x52'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x437a('0x4f')]('users','o',_0x437a('0x53'))[_0x437a('0x4f')](_0x437a('0x54'),'a',_0x437a('0x55'))['left_join']('whatsapp_messages','me',_0x437a('0x56'))[_0x437a('0x4f')](_0x437a('0x57'),'it',_0x437a('0x58'))[_0x437a('0x4f')](_0x437a('0x4b'),'t',_0x437a('0x59'));var _0x12d2f3=squel[_0x437a('0x5a')]();var _0x4de7b2=[];var _0x3381bd=squel[_0x437a('0x5a')]();var _0x465c4e;if(_0x1d4e59[_0x437a('0x3f')][_0x437a('0x5b')]){_0x465c4e=as[_0x437a('0x5c')](_0x1d4e59['query'][_0x437a('0x5b')]);var _0x1c02e6=_0x465c4e[_0x437a('0x5d')];for(var _0x4aa49e=0x0;_0x4aa49e<_0x465c4e['conditions'][_0x437a('0x5e')];_0x4aa49e++){var _0xa32248=_0x465c4e[_0x437a('0x5f')][_0x4aa49e];var _0x20a4e3='i';var _0x54175d=_[_0x437a('0x60')](_0xf49d04,[_0x437a('0x31'),_0xa32248['field']]);if(!_0x54175d){switch(_0xa32248[_0x437a('0x49')]){case'unreadMessages':if(_0xa32248['value']==0x1){_0x1b4a85[_0x437a('0x61')]('`'+_0xa32248[_0x437a('0x49')]+_0x437a('0x62'));}else{_0x1b4a85[_0x437a('0x61')]('`'+_0xa32248[_0x437a('0x49')]+_0x437a('0x63'));}break;case _0x437a('0x64'):if(_0xa32248[_0x437a('0x65')]===_0x437a('0x66')){if(_0xa32248[_0x437a('0x67')][_0x437a('0x34')]('\x20')[_0x437a('0x5e')]>0x1){_0x12d2f3[_0x1c02e6](_0x437a('0x68'),qs[_0x437a('0x69')](_0xa32248[_0x437a('0x67')]),null);}else{var _0x941b8='%'+_0xa32248['value']+'%';_0x12d2f3[_0x1c02e6]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x941b8,_0x941b8,_0x941b8);}}else{_0x54175d=_[_0x437a('0x60')](_0xf49d04,[_0x437a('0x31'),_0x437a('0x6a')]);_0xa32248[_0x437a('0x49')]=_0x437a('0x6a');_0x568cd0=as['buildExpression'](_0x20a4e3,_0x54175d[_0x437a('0x3d')],_0xa32248);_0x12d2f3[_0x1c02e6](_0x568cd0[_0x437a('0x6b')],_0x568cd0['value'][_0x437a('0x6c')],_0x568cd0[_0x437a('0x67')][_0x437a('0x22')]);}break;case'Tag':var _0x2ab953=_0xa32248['value'][_0x437a('0x34')](',')[_0x437a('0x39')](function(_0x4b9306){return Number(_0x4b9306);});_0x2ab953[_0x437a('0x35')](function(_0x1bbff8){_0x3381bd['or'](_0x437a('0x6d'),'%,'+_0x1bbff8+',%');});_0x4de7b2=_[_0x437a('0x6e')](_0x4de7b2,_0x2ab953);break;case'User':if(_0xa32248[_0x437a('0x65')]==='$substring'){_0x12d2f3[_0x1c02e6](_0x437a('0x6f'),'%'+_0xa32248[_0x437a('0x67')]+'%',null);}else{_0x54175d=_[_0x437a('0x60')](_0xf49d04,[_0x437a('0x31'),_0x437a('0x70')]);_0xa32248[_0x437a('0x49')]='UserId';_0x568cd0=as[_0x437a('0x71')](_0x20a4e3,_0x54175d['type'],_0xa32248);_0x12d2f3[_0x1c02e6](_0x568cd0['text'],_0x568cd0[_0x437a('0x67')][_0x437a('0x6c')],_0x568cd0[_0x437a('0x67')][_0x437a('0x22')]);}break;case'body':_0x568cd0=as[_0x437a('0x71')]('me',null,_0xa32248);_0x12d2f3[_0x1c02e6](_0x568cd0[_0x437a('0x6b')],_0x568cd0[_0x437a('0x67')][_0x437a('0x6c')],_0x568cd0['value'][_0x437a('0x22')]);break;}}else{var _0x568cd0=as[_0x437a('0x71')](_0x20a4e3,_0x54175d[_0x437a('0x3d')],_0xa32248);_0x12d2f3[_0x1c02e6](_0x568cd0['text'],_0x568cd0[_0x437a('0x67')][_0x437a('0x6c')],_0x568cd0[_0x437a('0x67')][_0x437a('0x22')]);}}}else{var _0x45c37d=_(_0x1d4e59['query'])[_0x437a('0x40')]()[_0x437a('0x39')](function(_0x4d0171){return _[_0x437a('0x72')](_0xf49d04,[_0x437a('0x31'),_0x4d0171])?_0x4d0171:undefined;})[_0x437a('0x73')]()['value']();if(!_[_0x437a('0x74')](_0x45c37d)){_0x45c37d[_0x437a('0x35')](function(_0x37b145){if(_0x37b145===_0x437a('0x75')){_0x1b4a85[_0x437a('0x76')]('i.WhatsappAccountId\x20IN\x20?',[][_0x437a('0x77')](_0x1d4e59[_0x437a('0x3f')][_0x37b145]));}else if(_0x37b145===_0x437a('0x78')){var _0x7776a4=JSON[_0x437a('0x79')](_0x1d4e59[_0x437a('0x3f')][_0x37b145])[_0x437a('0x7a')];var _0x5c9013=JSON['parse'](_0x1d4e59[_0x437a('0x3f')][_0x37b145])[_0x437a('0x7b')];_0x1b4a85[_0x437a('0x76')](_0x437a('0x7c'),_0x7776a4,_0x5c9013);}else{if(_0x1d4e59[_0x437a('0x3f')][_0x37b145]===_0x437a('0x7d')){_0x1b4a85['where']('i.'+_0x37b145+_0x437a('0x7e'));}else{_0x1b4a85[_0x437a('0x76')]('i.'+_0x37b145+_0x437a('0x7f'),_0x1d4e59[_0x437a('0x3f')][_0x37b145]);}}});}if(_0x1d4e59[_0x437a('0x3f')]['read']){if(_0x1d4e59[_0x437a('0x3f')][_0x437a('0x80')]==0x1){_0x1b4a85[_0x437a('0x61')](_0x437a('0x81'));}else{_0x1b4a85[_0x437a('0x61')](_0x437a('0x82'));}}if(_0x1d4e59[_0x437a('0x3f')][_0x437a('0x83')]){_0x4de7b2=_[_0x437a('0x84')](_0x1d4e59['query'][_0x437a('0x83')])?_0x1d4e59['query']['tag']:new Array(_0x1d4e59[_0x437a('0x3f')][_0x437a('0x83')]);_0x4de7b2[_0x437a('0x35')](function(_0x7da21a){_0x3381bd['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x7da21a+',%');});}if(_0x1d4e59[_0x437a('0x3f')]['filter']){var _0xcb996=_0x1d4e59[_0x437a('0x3f')][_0x437a('0x85')][_0x437a('0x86')]('\x5c','\x5c\x5c')[_0x437a('0x86')](/'/g,'\x27\x27');if(qs[_0x437a('0x87')](_0xcb996)){_0x12d2f3['or'](_0x437a('0x88'),_0xcb996+'%')['or'](_0x437a('0x89'),_0xcb996+'%');}else{_0x12d2f3['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x437a('0x69')](_0xcb996))['or'](_0x437a('0x8a'),_0xcb996+'%');}}}_0x1b4a85[_0x437a('0x76')](_0x12d2f3);_0x1b4a85['group'](_0x437a('0x8b'));var _0x255e69={'type':db[_0x437a('0x8c')][_0x437a('0x8d')][_0x437a('0x8e')],'raw':!![]};var _0x2f0a56=_0x1b4a85[_0x437a('0x8f')]();_0x2f0a56['field'](_0x437a('0x8b'));_0x2f0a56['field'](_0x437a('0x90'),_0x437a('0x91'));if(_0x4e8c4f[_0x437a('0x92')]){_0x4e8c4f[_0x437a('0x92')][_0x437a('0x35')](function(_0x25cbd0){var _0x49ab9b=_0x25cbd0[0x0]===_0x437a('0x93')?_0x25cbd0[0x0]:'i.'+_0x25cbd0[0x0];_0x1b4a85[_0x437a('0x92')](_0x49ab9b,_0x25cbd0[0x1]===_0x437a('0x94')?![]:!![]);});}if(!_[_0x437a('0x74')](_0x4de7b2)){_0x1b4a85[_0x437a('0x61')](_0x3381bd);_0x2f0a56['where']('t.id\x20IN\x20?',_0x4de7b2);}BPromise[_0x437a('0x95')]()[_0x437a('0x2e')](function(){if(!_0x465c4e){if(_0x1d4e59[_0x437a('0x3f')]['WhatsappAccountId'])return;_0x2f0a56[_0x437a('0x76')](_0x437a('0x96'));_0x1b4a85[_0x437a('0x76')]('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x1d4e59[_0x437a('0x97')][_0x437a('0x98')]!==_0x437a('0x99'))return;return _0x1d4e59[_0x437a('0x97')][_0x437a('0x9a')]({'attributes':['id'],'raw':!![]})[_0x437a('0x2e')](function(_0x3cd388){if(_[_0x437a('0x74')](_0x3cd388)){_0x2f0a56[_0x437a('0x76')](_0x437a('0x9b'));_0x1b4a85[_0x437a('0x76')](_0x437a('0x9b'));}else{_0x2f0a56[_0x437a('0x76')](_0x437a('0x9c'),_[_0x437a('0x39')](_0x3cd388,'id'));_0x1b4a85[_0x437a('0x76')]('i.WhatsappAccountId\x20IN\x20?',_[_0x437a('0x39')](_0x3cd388,'id'));}});})[_0x437a('0x2e')](function(){if(_0x1d4e59[_0x437a('0x97')][_0x437a('0x98')]===_0x437a('0x99')&&!_0x465c4e&&!_0x1d4e59['query']['WhatsappAccountId'])return[];return db['sequelize']['query'](_0x2f0a56['toString'](),_0x255e69);})[_0x437a('0x2e')](function(_0x2c588b){_0x21f4dd[_0x437a('0x27')]=_0x2c588b[_0x437a('0x5e')];if(_0x21f4dd[_0x437a('0x27')]===0x0)return[];return db[_0x437a('0x9d')][_0x437a('0x3f')](_0x295406[_0x437a('0x9e')](),_0x255e69)[_0x437a('0x2e')](function(_0x2921c5){_0x795b60=_[_0x437a('0x9f')](_0x2921c5,'id');_0x255e69=_[_0x437a('0xa0')](_0x255e69,{'model':db[_0x437a('0x3a')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1d4e59[_0x437a('0x3f')]['fields']){_0x4e8c4f[_0x437a('0x43')][_0x437a('0x35')](function(_0x14c8b4){_0x1b4a85[_0x437a('0x49')]('i.'+_0x14c8b4);});}else{_0x1b4a85[_0x437a('0x49')](_0x437a('0x90'),'unreadMessages');_0x1b4a85[_0x437a('0x49')](_0x437a('0xa1'),'Account.key');_0x1b4a85[_0x437a('0x49')](_0x437a('0xa2'),_0x437a('0xa3'));_0x1b4a85[_0x437a('0x49')](_0x437a('0xa4'),_0x437a('0x93'));_0x1b4a85['field'](_0x437a('0xa5'));_0x1b4a85['field'](_0x437a('0xa6'),'Contact.firstName');_0x1b4a85['field'](_0x437a('0xa7'),_0x437a('0xa8'));_0x1b4a85[_0x437a('0x49')](_0x437a('0xa9'),_0x437a('0xaa'));_0x1b4a85[_0x437a('0x49')](_0x437a('0xab'),_0x437a('0xac'));_0x1b4a85[_0x437a('0x49')]('c.mobile',_0x437a('0xad'));_0x1b4a85[_0x437a('0x49')]('c.fax','Contact.fax');_0x1b4a85[_0x437a('0x49')](_0x437a('0xae'),_0x437a('0xaf'));_0x1b4a85[_0x437a('0x49')]('o.internal',_0x437a('0xb0'));_0x1b4a85[_0x437a('0x49')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x437a('0x33'));}if(_0x4e8c4f[_0x437a('0x25')])_0x1b4a85[_0x437a('0x25')](_0x4e8c4f['limit']);if(_0x4e8c4f[_0x437a('0x24')])_0x1b4a85[_0x437a('0x24')](_0x4e8c4f[_0x437a('0x24')]);return db[_0x437a('0x9d')][_0x437a('0x3f')](_0x1b4a85[_0x437a('0x9e')](),_0x255e69);})[_0x437a('0x2e')](function(_0x21e932){if(_0x21e932[_0x437a('0x5e')]>0x0)_0x27d989['where'](_0x437a('0xb1'),_[_0x437a('0x39')](_0x21e932,'id'));return db[_0x437a('0x9d')][_0x437a('0x3f')](_0x27d989[_0x437a('0x9e')](),_0x255e69)[_0x437a('0x2e')](function(_0x590c1a){var _0x2fd68f=_['groupBy'](_0x590c1a,_0x437a('0xb2'));var _0x369edc=[];_0x21e932[_0x437a('0x35')](function(_0x18d091){_0x369edc[_0x437a('0x36')](updateWhatsappInteraction(_0x18d091,_0x795b60,_0x2fd68f));});return BPromise[_0x437a('0xb3')](_0x369edc);});});})['then'](function(_0x554712){_0x21f4dd[_0x437a('0xb4')]=_0x554712;return _0x21f4dd;})[_0x437a('0x2e')](respondWithFilteredResult(_0x558496,_0x4e8c4f))[_0x437a('0x37')](handleError(_0x558496,null));};exports[_0x437a('0xb5')]=function(_0x181026,_0x46ceda){var _0xb291fc={'raw':![],'where':{'id':_0x181026['params']['id']}},_0x4e3df4={};_0x4e3df4[_0x437a('0x3e')]=_[_0x437a('0x40')](db[_0x437a('0x3a')][_0x437a('0x3b')]);_0x4e3df4['query']=_[_0x437a('0x40')](_0x181026[_0x437a('0x3f')]);_0x4e3df4[_0x437a('0x41')]=_['intersection'](_0x4e3df4[_0x437a('0x3e')],_0x4e3df4[_0x437a('0x3f')]);_0xb291fc[_0x437a('0x43')]=_[_0x437a('0x42')](_0x4e3df4['model'],qs['fields'](_0x181026[_0x437a('0x3f')][_0x437a('0x44')]));_0xb291fc[_0x437a('0x43')]=_0xb291fc['attributes']['length']?_0xb291fc['attributes']:_0x4e3df4['model'];if(_0x181026[_0x437a('0x3f')][_0x437a('0xb6')]){_0xb291fc[_0x437a('0xb7')]=[{'all':!![]}];}_0xb291fc=_[_0x437a('0xa0')]({},_0xb291fc,_0x181026[_0x437a('0xb8')]);return db[_0x437a('0x3a')][_0x437a('0x60')](_0xb291fc)['then'](handleEntityNotFound(_0x46ceda,null))['then'](respondWithResult(_0x46ceda,null))[_0x437a('0x37')](handleError(_0x46ceda,null));};exports[_0x437a('0xb9')]=function(_0x464c4d,_0x1c9eb4){return db[_0x437a('0x3a')][_0x437a('0xb9')](_0x464c4d['body'],{})[_0x437a('0x2e')](respondWithResult(_0x1c9eb4,0xc9))[_0x437a('0x37')](handleError(_0x1c9eb4,null));};exports[_0x437a('0x2d')]=function(_0x27b12c,_0x227076){if(_0x27b12c[_0x437a('0xba')]['id']){delete _0x27b12c[_0x437a('0xba')]['id'];}return db[_0x437a('0x3a')][_0x437a('0x60')]({'where':{'id':_0x27b12c['params']['id']}})[_0x437a('0x2e')](handleEntityNotFound(_0x227076,null))['then'](saveUpdates(_0x27b12c['body'],null))[_0x437a('0x2e')](respondWithResult(_0x227076,null))[_0x437a('0x37')](handleError(_0x227076,null));};exports['destroy']=function(_0x3d68d5,_0xa45f63){return db[_0x437a('0x3a')]['find']({'where':{'id':_0x3d68d5['params']['id']}})[_0x437a('0x2e')](handleEntityNotFound(_0xa45f63,null))[_0x437a('0x2e')](removeEntity(_0xa45f63,null))[_0x437a('0x37')](handleError(_0xa45f63,null));};exports['describe']=function(_0x204383,_0x56b326){return db['WhatsappInteraction'][_0x437a('0xbb')]()[_0x437a('0x2e')](respondWithResult(_0x56b326,null))[_0x437a('0x37')](handleError(_0x56b326,null));};exports[_0x437a('0xbc')]=function(_0x3bbe7d,_0x302393,_0x4edcf){return db[_0x437a('0xbd')]['find']({'where':{'id':_0x3bbe7d[_0x437a('0xbe')]['id']}})[_0x437a('0x2e')](handleEntityNotFound(_0x302393,null))[_0x437a('0x2e')](function(_0x191ace){if(_0x191ace){return _0x191ace[_0x437a('0xbc')](_0x3bbe7d['body'][_0x437a('0xbf')],_[_0x437a('0xc0')](_0x3bbe7d[_0x437a('0xba')],[_0x437a('0xbf'),'id'])||{});}})[_0x437a('0x2e')](respondWithResult(_0x302393,null))[_0x437a('0x37')](handleError(_0x302393,null));};exports[_0x437a('0xc1')]=function(_0x53ba1a,_0x2817eb,_0x33408a){var _0x1ae2bf={'raw':![],'where':{}};var _0x42bb8c={};var _0x14d344={'count':0x0,'rows':[]};return db[_0x437a('0x3a')]['findOne']({'where':{'id':_0x53ba1a[_0x437a('0xbe')]['id']}})['then'](handleEntityNotFound(_0x2817eb,null))[_0x437a('0x2e')](function(_0x413e99){if(_0x413e99){_0x42bb8c[_0x437a('0x3e')]=_[_0x437a('0x40')](db[_0x437a('0xbd')][_0x437a('0x3b')]);_0x42bb8c[_0x437a('0x3f')]=_[_0x437a('0x40')](_0x53ba1a[_0x437a('0x3f')]);_0x42bb8c[_0x437a('0x41')]=_[_0x437a('0x42')](_0x42bb8c['model'],_0x42bb8c[_0x437a('0x3f')]);_0x1ae2bf[_0x437a('0x43')]=_['intersection'](_0x42bb8c[_0x437a('0x3e')],qs['fields'](_0x53ba1a[_0x437a('0x3f')][_0x437a('0x44')]));_0x1ae2bf[_0x437a('0x43')]=_0x1ae2bf[_0x437a('0x43')][_0x437a('0x5e')]?_0x1ae2bf[_0x437a('0x43')]:_0x42bb8c[_0x437a('0x3e')];if(!_0x53ba1a[_0x437a('0x3f')]['hasOwnProperty'](_0x437a('0x46'))){_0x1ae2bf['limit']=qs[_0x437a('0x25')](_0x53ba1a[_0x437a('0x3f')]['limit']);_0x1ae2bf[_0x437a('0x24')]=qs[_0x437a('0x24')](_0x53ba1a[_0x437a('0x3f')][_0x437a('0x24')]);}_0x1ae2bf[_0x437a('0x92')]=qs['sort'](_0x53ba1a['query'][_0x437a('0x47')]);_0x1ae2bf[_0x437a('0x76')]=qs[_0x437a('0x41')](_['pick'](_0x53ba1a[_0x437a('0x3f')],_0x42bb8c[_0x437a('0x41')]));_0x1ae2bf[_0x437a('0x76')][_0x437a('0xb2')]=_0x413e99['id'];if(_0x53ba1a['query']['filter']){_0x1ae2bf['where']=_['merge'](_0x1ae2bf['where'],{'$or':_[_0x437a('0x39')](_0x1ae2bf['attributes'],function(_0x23284e){var _0x15f2da={};_0x15f2da[_0x23284e]={'$like':'%'+_0x53ba1a[_0x437a('0x3f')]['filter']+'%'};return _0x15f2da;})});}if(_0x53ba1a[_0x437a('0x3f')][_0x437a('0x7a')]){var _0x4b785d=_0x53ba1a[_0x437a('0x3f')][_0x437a('0x7a')][_0x437a('0x34')](',');var _0x425137={};_0x425137[_0x4b785d[0x0]]={'$gte':moment(_0x4b785d[0x1])[_0x437a('0xc2')]('YYYY-MM-DD\x20HH:mm:ss')};_0x1ae2bf[_0x437a('0x76')]=_['merge'](_0x1ae2bf[_0x437a('0x76')],_0x425137);}_0x1ae2bf=_['merge']({},_0x1ae2bf,_0x53ba1a[_0x437a('0xb8')]);return db[_0x437a('0xbd')][_0x437a('0x27')]({'where':_0x1ae2bf['where']})[_0x437a('0x2e')](function(_0x1a312b){_0x14d344[_0x437a('0x27')]=_0x1a312b;if(_0x53ba1a['query'][_0x437a('0xb6')]){_0x1ae2bf[_0x437a('0xb7')]=[{'all':!![]}];}return db['WhatsappMessage'][_0x437a('0xc3')](_0x1ae2bf);})[_0x437a('0x2e')](function(_0x190e93){_0x14d344['rows']=_0x190e93;return _0x14d344;});}})[_0x437a('0x2e')](respondWithFilteredResult(_0x2817eb,_0x1ae2bf))[_0x437a('0x37')](handleError(_0x2817eb,null));};exports['addTags']=function(_0x4a1f18,_0x2cd25e,_0x36a9b8){return db['WhatsappInteraction'][_0x437a('0x60')]({'where':{'id':_0x4a1f18['params']['id']}})[_0x437a('0x2e')](handleEntityNotFound(_0x2cd25e,null))[_0x437a('0x2e')](function(_0x1f1d60){if(_0x1f1d60){return _0x1f1d60[_0x437a('0xc4')](_0x4a1f18[_0x437a('0xba')][_0x437a('0xbf')],_[_0x437a('0xc0')](_0x4a1f18[_0x437a('0xba')],[_0x437a('0xbf'),'id'])||{})[_0x437a('0xc5')](function(){return db[_0x437a('0xc6')]['findAll']({'attributes':['id',_0x437a('0x31'),_0x437a('0xc7')],'where':{'id':_0x4a1f18[_0x437a('0xba')]['ids']}});})[_0x437a('0x2e')](function(_0x3fe7e5){socket[_0x437a('0xc8')]('whatsappInteractionTags:save',{'id':Number(_0x4a1f18[_0x437a('0xbe')]['id']),'tags':_0x3fe7e5||[]});return{'id':Number(_0x4a1f18[_0x437a('0xbe')]['id']),'tags':_0x3fe7e5||[]};});}})['then'](respondWithResult(_0x2cd25e,null))['catch'](handleError(_0x2cd25e,null));};exports[_0x437a('0xc9')]=function(_0xe987c,_0x52904b,_0x316874){return db[_0x437a('0x3a')][_0x437a('0x60')]({'where':{'id':_0xe987c[_0x437a('0xbe')]['id']}})[_0x437a('0x2e')](handleEntityNotFound(_0x52904b,null))[_0x437a('0x2e')](function(_0x4f214e){if(_0x4f214e){return _0x4f214e[_0x437a('0xc9')](_0xe987c[_0x437a('0x3f')][_0x437a('0xbf')]);}})[_0x437a('0x2e')](respondWithStatusCode(_0x52904b,null))[_0x437a('0x37')](handleError(_0x52904b,null));};exports['download']=function(_0xdaa936,_0x8fc2ab){var _0x5f9bf4=moment()[_0x437a('0xca')]()[_0x437a('0x9e')]();var _0x5986a=path[_0x437a('0xcb')](config[_0x437a('0xcc')],_0x437a('0xcd'),'files',_0x437a('0xce'));var _0x467f16=path[_0x437a('0xcb')](config[_0x437a('0xcc')],_0x437a('0xcd'),_0x437a('0xcf'),'attachments');var _0x5ee200=path[_0x437a('0xcb')](_0x5986a,_0x5f9bf4);var _0x53d84a=util[_0x437a('0xc2')](_0x437a('0xd0'),_0xdaa936[_0x437a('0xbe')]['id'],_0x5f9bf4);var _0xae058c=path['join'](_0x5986a,_0x53d84a);var _0x40cb14=[];_0x40cb14[_0x437a('0x36')]({'model':db[_0x437a('0xd1')],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x40cb14['push']({'model':db[_0x437a('0xd2')],'as':'Contact','attributes':['id',_0x437a('0xd3'),_0x437a('0xd4')],'raw':!![]});if(_0xdaa936[_0x437a('0x3f')][_0x437a('0xd5')]){_0x40cb14[_0x437a('0x36')]({'model':db[_0x437a('0xd6')],'as':'Attachment','raw':!![]});}var _0x20b44b=[{'model':db[_0x437a('0xbd')],'as':_0x437a('0xd7'),'attributes':['id','body',_0x437a('0x78'),'direction','secret',_0x437a('0x80')],'include':_0x40cb14}];_0x20b44b[_0x437a('0x36')]({'model':db[_0x437a('0xd8')],'as':_0x437a('0xd9'),'attributes':['id',_0x437a('0x31')]});_0x20b44b[_0x437a('0x36')]({'model':db['User'],'as':_0x437a('0xda'),'attributes':['id',_0x437a('0xdb')]});return db[_0x437a('0x3a')][_0x437a('0x60')]({'where':{'id':_0xdaa936[_0x437a('0xbe')]['id']},'include':_0x20b44b})['then'](handleEntityNotFound(_0x8fc2ab,null))[_0x437a('0x2e')](function(_0x152c77){if(_0x152c77){var _0x5d6613=_0x152c77[_0x437a('0xdc')]({'plain':!![]});fs[_0x437a('0xdd')](_0x5ee200);var _0x5523d4={'channel':_0x437a('0xde'),'account':_0x5d6613[_0x437a('0xd9')][_0x437a('0x31')],'agent':_0x5d6613['Owner']?_0x5d6613[_0x437a('0xda')][_0x437a('0xdb')]:'N.A.','createdAt':moment(_0x5d6613[_0x437a('0x78')])[_0x437a('0xc2')](_0x437a('0xdf'))[_0x437a('0x9e')](),'closedAt':_0x5d6613[_0x437a('0xe0')]?moment(_0x5d6613[_0x437a('0xe1')])[_0x437a('0xc2')](_0x437a('0xdf'))[_0x437a('0x9e')]():'','disposition':_0x5d6613['disposition'],'messages':_(_0x5d6613['Messages'])[_0x437a('0x85')]({'secret':![]})['map'](function(_0x1f62b7){if(_0x1f62b7[_0x437a('0xd6')]){var _0x202c83=path[_0x437a('0xcb')](_0x467f16,_0x1f62b7[_0x437a('0xd6')][_0x437a('0xe2')]);if(fs['existsSync'](_0x202c83)){fs[_0x437a('0xe3')](_0x202c83)[_0x437a('0xe4')](fs['createWriteStream'](path[_0x437a('0xcb')](_0x5ee200,_0x1f62b7['Attachment']['basename'])));}}return{'date':moment(_0x1f62b7[_0x437a('0x78')])[_0x437a('0xc2')](_0x437a('0xdf'))[_0x437a('0x9e')](),'sender':_0x1f62b7['direction']===_0x437a('0xe5')?_0x1f62b7[_0x437a('0xd1')]?_0x1f62b7[_0x437a('0xd1')][_0x437a('0xdb')]:_0x437a('0xe6'):_0x1f62b7['Contact'][_0x437a('0xd3')]+(_0x1f62b7[_0x437a('0x64')][_0x437a('0xd4')]?'\x20'+_0x1f62b7[_0x437a('0x64')]['lastName']:''),'body':_0x1f62b7[_0x437a('0xd6')]?_0x1f62b7[_0x437a('0xd6')][_0x437a('0xe2')]:_0x1f62b7[_0x437a('0xba')],'direction':_0x1f62b7[_0x437a('0xe7')]==='out'?'A':'C','secret':_0x1f62b7[_0x437a('0xe8')],'read':_0x1f62b7[_0x437a('0x80')],'attachment':_0x1f62b7['Attachment']};})[_0x437a('0x67')]()};return ejs['renderFile'](path['join'](config[_0x437a('0xcc')],_0x437a('0xcd'),_0x437a('0xe9'),_0x437a('0xea')),{'interaction':_0x5523d4})['then'](function(_0x11fb28){var _0x4cce82=path[_0x437a('0xcb')](_0x5ee200,_0x437a('0xeb')+_0x5d6613['id']+'-'+_0x5f9bf4+'.pdf');var _0x16aeb1={'path':_0x4cce82,'channel':_0x437a('0xde'),'interactionId':_0x5d6613['id']};return pdf[_0x437a('0xec')](_0x11fb28,_0x16aeb1);})[_0x437a('0x2e')](function(){return new BPromise(function(_0xd823c0,_0xefde3f){zipdir(_0x5ee200,{'saveTo':_0xae058c},function(_0x2af91c,_0x17c99b){if(_0x2af91c)return _0xefde3f(_0x2af91c);return _0xd823c0(_0x17c99b);});})[_0x437a('0x2e')](function(){return new BPromise(function(_0x29dd31,_0x169a5f){rimraf(_0x5ee200,function(_0x14f1d0){if(_0x14f1d0)_0x169a5f(_0x14f1d0);return _0x29dd31();});});})['then'](function(){return _0x8fc2ab[_0x437a('0xed')](_0xae058c,_0x53d84a,function(_0x57b719){if(_0x57b719){console[_0x437a('0xee')]('err',_0x57b719);}else{fs['unlinkSync'](_0xae058c);}});});});}else{return _0x8fc2ab['sendStatus'](0xc8);}})[_0x437a('0x37')](handleError(_0x8fc2ab,null));};
\ No newline at end of file
+var _0x3d5d=['root','files','tmp','server','User','CmContact','Contact','firstName','lastName','attachments','Attachment','Messages','secret','Owner','mkdirSync','Whatsapp','N.A.','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','basename','createWriteStream','direction','out','System','downloadInteraction.ejs','transcript-','createPdfFromHTML','download','eml-format','rimraf','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','localhost','./whatsappInteraction.socket','register','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','destroy','then','end','sendStatus','error','stack','name','send','fullname','TagIds','Tags','split','push','index','map','WhatsappInteraction','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','field','color','from','select','u.id','u.fullname','user_has_whatsapp_interactions','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','conditions','find','value','having','`\x20=\x200','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','some','compact','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','isEmpty','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','toString','keyBy','merge','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','Contact.mobile','Contact.fax','o.internal','Owner.internal','sequelize','ui.WhatsappInteractionId\x20IN\x20?','groupBy','WhatsappInteractionId','all','rows','catch','rawAttributes','keys','includeAll','include','create','params','describe','addMessage','WhatsappMessage','ids','omit','getMessages','findOne','nolimit','format','options','findAll','addTags','setTags','Tag','whatsappInteractionTags:save','removeTags','join'];(function(_0x296b4b,_0x3acc81){var _0x26721c=function(_0x3cff7e){while(--_0x3cff7e){_0x296b4b['push'](_0x296b4b['shift']());}};_0x26721c(++_0x3acc81);}(_0x3d5d,0x104));var _0xd3d5=function(_0x98db33,_0x397f20){_0x98db33=_0x98db33-0x0;var _0x5ae63a=_0x3d5d[_0x98db33];return _0x5ae63a;};'use strict';var emlformat=require(_0xd3d5('0x0'));var rimraf=require(_0xd3d5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd3d5('0x2'));var moment=require(_0xd3d5('0x3'));var BPromise=require(_0xd3d5('0x4'));var Mustache=require('mustache');var util=require(_0xd3d5('0x5'));var path=require(_0xd3d5('0x6'));var sox=require(_0xd3d5('0x7'));var csv=require(_0xd3d5('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd3d5('0x9'));var _=require('lodash');var squel=require(_0xd3d5('0xa'));var crypto=require(_0xd3d5('0xb'));var jsforce=require(_0xd3d5('0xc'));var deskjs=require(_0xd3d5('0xd'));var toCsv=require('to-csv');var querystring=require(_0xd3d5('0xe'));var Papa=require(_0xd3d5('0xf'));var Redis=require(_0xd3d5('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xd3d5('0x11'));var as=require(_0xd3d5('0x12'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0xd3d5('0x13'));var logger=require(_0xd3d5('0x14'))(_0xd3d5('0x15'));var utils=require(_0xd3d5('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xd3d5('0x17'))['db'];config[_0xd3d5('0x18')]=_[_0xd3d5('0x19')](config[_0xd3d5('0x18')],{'host':_0xd3d5('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd3d5('0x18')]));require(_0xd3d5('0x1b'))[_0xd3d5('0x1c')](socket);function respondWithStatusCode(_0x5a5be6,_0x3c59b4){_0x3c59b4=_0x3c59b4||0xcc;return function(_0x4d4a8d){if(_0x4d4a8d){return _0x5a5be6['sendStatus'](_0x3c59b4);}return _0x5a5be6[_0xd3d5('0x1d')](_0x3c59b4)['end']();};}function respondWithResult(_0x2612f2,_0x104a9c){_0x104a9c=_0x104a9c||0xc8;return function(_0x30efb3){if(_0x30efb3){return _0x2612f2['status'](_0x104a9c)[_0xd3d5('0x1e')](_0x30efb3);}};}function respondWithFilteredResult(_0x422ec6,_0x211520){return function(_0x6c76cb){if(_0x6c76cb){var _0x2efc84=typeof _0x211520[_0xd3d5('0x1f')]===_0xd3d5('0x20')&&typeof _0x211520[_0xd3d5('0x21')]==='undefined';var _0x1e55b7=_0x6c76cb[_0xd3d5('0x22')];var _0xe9ba0=_0x2efc84?0x0:_0x211520[_0xd3d5('0x1f')];var _0x1b9940=_0x2efc84?_0x6c76cb[_0xd3d5('0x22')]:_0x211520[_0xd3d5('0x1f')]+_0x211520['limit'];var _0x388f1e;if(_0x1b9940>=_0x1e55b7){_0x1b9940=_0x1e55b7;_0x388f1e=0xc8;}else{_0x388f1e=0xce;}_0x422ec6[_0xd3d5('0x1d')](_0x388f1e);return _0x422ec6['set'](_0xd3d5('0x23'),_0xe9ba0+'-'+_0x1b9940+'/'+_0x1e55b7)[_0xd3d5('0x1e')](_0x6c76cb);}return null;};}function patchUpdates(_0x508584){return function(_0x451934){try{jsonpatch['apply'](_0x451934,_0x508584,!![]);}catch(_0xb34238){return BPromise[_0xd3d5('0x24')](_0xb34238);}return _0x451934[_0xd3d5('0x25')]();};}function saveUpdates(_0x1e65da,_0x25c9fa){return function(_0x59746d){if(_0x59746d){return _0x59746d[_0xd3d5('0x26')](_0x1e65da)['then'](function(_0x26ca98){return _0x26ca98;});}return null;};}function removeEntity(_0x3dda71,_0x5223c2){return function(_0x1eb68b){if(_0x1eb68b){return _0x1eb68b[_0xd3d5('0x27')]()[_0xd3d5('0x28')](function(){_0x3dda71[_0xd3d5('0x1d')](0xcc)[_0xd3d5('0x29')]();});}};}function handleEntityNotFound(_0x3991a3,_0x50703b){return function(_0x486f85){if(!_0x486f85){_0x3991a3[_0xd3d5('0x2a')](0x194);}return _0x486f85;};}function handleError(_0x250e30,_0x239b35){_0x239b35=_0x239b35||0x1f4;return function(_0x24e7d3){logger[_0xd3d5('0x2b')](_0x24e7d3[_0xd3d5('0x2c')]);if(_0x24e7d3[_0xd3d5('0x2d')]){delete _0x24e7d3[_0xd3d5('0x2d')];}_0x250e30['status'](_0x239b35)[_0xd3d5('0x2e')](_0x24e7d3);};}function getInteractionUsers(_0x4d4a2f,_0x338a5e){return new BPromise(function(_0xa953a2,_0x55b982){try{if(_0x338a5e[_0x4d4a2f['id']]){_0x4d4a2f['Users']=_['map'](_0x338a5e[_0x4d4a2f['id']],function(_0x5912c4){return{'id':_0x5912c4['id'],'fullname':_0x5912c4[_0xd3d5('0x2f')]};});}}catch(_0x4f231e){_0x55b982(_0x4f231e);}_0xa953a2(_0x4d4a2f);});}function getInteractionTags(_0x52f600,_0x36252d){return new BPromise(function(_0x43684b,_0x5a55dd){try{if(_0x52f600[_0xd3d5('0x30')]){_0x52f600[_0xd3d5('0x31')]=[];_0x52f600[_0xd3d5('0x30')][_0xd3d5('0x32')](',')['forEach'](function(_0x2e2c72){_0x52f600[_0xd3d5('0x31')][_0xd3d5('0x33')](_0x36252d[_0x2e2c72]);});}delete _0x52f600['TagIds'];}catch(_0x5e5d30){_0x5a55dd(_0x5e5d30);}_0x43684b(_0x52f600);});}function updateWhatsappInteraction(_0x28b1e7,_0x58feaa,_0x2b042d){return new BPromise(function(_0x8a8c1c,_0x43cad2){return getInteractionUsers(_0x28b1e7,_0x2b042d)[_0xd3d5('0x28')](function(_0x7f3f37){return getInteractionTags(_0x7f3f37,_0x58feaa);})['then'](function(_0x1492ee){_0x8a8c1c(_0x1492ee);})['catch'](function(_0x25c5b6){_0x43cad2(_0x25c5b6);});});}exports[_0xd3d5('0x34')]=function(_0x2d84,_0x42029c){var _0x5db0da={},_0x5ed4f9={},_0x45b2f9={'count':0x0,'rows':[]};var _0x102973=_[_0xd3d5('0x35')](db[_0xd3d5('0x36')]['rawAttributes'],function(_0x3ef839){return{'name':_0x3ef839[_0xd3d5('0x37')],'type':_0x3ef839[_0xd3d5('0x38')]['key']};});_0x5ed4f9[_0xd3d5('0x39')]=_[_0xd3d5('0x35')](_0x102973,_0xd3d5('0x2d'));_0x5ed4f9[_0xd3d5('0x3a')]=_['keys'](_0x2d84[_0xd3d5('0x3a')]);_0x5ed4f9[_0xd3d5('0x3b')]=_[_0xd3d5('0x3c')](_0x5ed4f9[_0xd3d5('0x39')],_0x5ed4f9[_0xd3d5('0x3a')]);_0x5db0da[_0xd3d5('0x3d')]=_[_0xd3d5('0x3c')](_0x5ed4f9[_0xd3d5('0x39')],qs[_0xd3d5('0x3e')](_0x2d84[_0xd3d5('0x3a')][_0xd3d5('0x3e')]));_0x5db0da[_0xd3d5('0x3d')]=_0x5db0da['attributes'][_0xd3d5('0x3f')]?_0x5db0da[_0xd3d5('0x3d')]:_0x5ed4f9[_0xd3d5('0x39')];if(!_0x2d84[_0xd3d5('0x3a')][_0xd3d5('0x40')]('nolimit')){_0x5db0da['limit']=qs['limit'](_0x2d84[_0xd3d5('0x3a')]['limit']);_0x5db0da[_0xd3d5('0x1f')]=qs[_0xd3d5('0x1f')](_0x2d84[_0xd3d5('0x3a')][_0xd3d5('0x1f')]);}_0x5db0da[_0xd3d5('0x41')]=qs[_0xd3d5('0x42')](_0x2d84[_0xd3d5('0x3a')]['sort']);_0x5db0da[_0xd3d5('0x43')]=qs[_0xd3d5('0x3b')](_[_0xd3d5('0x44')](_0x2d84[_0xd3d5('0x3a')],_0x5ed4f9[_0xd3d5('0x3b')]),_0x102973);var _0x265fa2=[];var _0x4fda96=squel['select']()[_0xd3d5('0x45')]('id')['field'](_0xd3d5('0x2d'))[_0xd3d5('0x45')](_0xd3d5('0x46'))[_0xd3d5('0x47')]('tools_tags');var _0x5814e8=squel[_0xd3d5('0x48')]()[_0xd3d5('0x45')](_0xd3d5('0x49'))[_0xd3d5('0x45')](_0xd3d5('0x4a'))[_0xd3d5('0x45')]('ui.WhatsappInteractionId')[_0xd3d5('0x47')](_0xd3d5('0x4b'),'ui')[_0xd3d5('0x4c')](_0xd3d5('0x4d'),'u',_0xd3d5('0x4e'));var _0xe43ff5=squel['select']()['from']('whatsapp_interactions','i')[_0xd3d5('0x4c')](_0xd3d5('0x4f'),'c',_0xd3d5('0x50'))[_0xd3d5('0x4c')]('users','o',_0xd3d5('0x51'))[_0xd3d5('0x4c')](_0xd3d5('0x52'),'a',_0xd3d5('0x53'))[_0xd3d5('0x4c')](_0xd3d5('0x54'),'me',_0xd3d5('0x55'))[_0xd3d5('0x4c')](_0xd3d5('0x56'),'it',_0xd3d5('0x57'))[_0xd3d5('0x4c')]('tools_tags','t',_0xd3d5('0x58'));var _0x21d19f=squel[_0xd3d5('0x59')]();var _0x5f3528=[];var _0xaa18c7=squel[_0xd3d5('0x59')]();var _0x5ebf7f;if(_0x2d84[_0xd3d5('0x3a')][_0xd3d5('0x5a')]){_0x5ebf7f=as[_0xd3d5('0x5b')](_0x2d84['query'][_0xd3d5('0x5a')]);var _0x2e947d=_0x5ebf7f['sqlOperator'];for(var _0x2d3ef4=0x0;_0x2d3ef4<_0x5ebf7f[_0xd3d5('0x5c')]['length'];_0x2d3ef4++){var _0x32f3f9=_0x5ebf7f[_0xd3d5('0x5c')][_0x2d3ef4];var _0x4f00f5='i';var _0x45a715=_[_0xd3d5('0x5d')](_0x102973,[_0xd3d5('0x2d'),_0x32f3f9[_0xd3d5('0x45')]]);if(!_0x45a715){switch(_0x32f3f9[_0xd3d5('0x45')]){case'unreadMessages':if(_0x32f3f9[_0xd3d5('0x5e')]==0x1){_0xe43ff5[_0xd3d5('0x5f')]('`'+_0x32f3f9[_0xd3d5('0x45')]+_0xd3d5('0x60'));}else{_0xe43ff5[_0xd3d5('0x5f')]('`'+_0x32f3f9[_0xd3d5('0x45')]+'`\x20>\x200');}break;case'Contact':if(_0x32f3f9[_0xd3d5('0x61')]===_0xd3d5('0x62')){if(_0x32f3f9[_0xd3d5('0x5e')][_0xd3d5('0x32')]('\x20')[_0xd3d5('0x3f')]>0x1){_0x21d19f[_0x2e947d](_0xd3d5('0x63'),qs[_0xd3d5('0x64')](_0x32f3f9['value']),null);}else{var _0x52594d='%'+_0x32f3f9['value']+'%';_0x21d19f[_0x2e947d](_0xd3d5('0x65'),_0x52594d,_0x52594d,_0x52594d);}}else{_0x45a715=_[_0xd3d5('0x5d')](_0x102973,[_0xd3d5('0x2d'),_0xd3d5('0x66')]);_0x32f3f9[_0xd3d5('0x45')]=_0xd3d5('0x66');_0x5cc4a2=as[_0xd3d5('0x67')](_0x4f00f5,_0x45a715[_0xd3d5('0x38')],_0x32f3f9);_0x21d19f[_0x2e947d](_0x5cc4a2[_0xd3d5('0x68')],_0x5cc4a2[_0xd3d5('0x5e')][_0xd3d5('0x69')],_0x5cc4a2[_0xd3d5('0x5e')]['end']);}break;case'Tag':var _0x1136df=_0x32f3f9[_0xd3d5('0x5e')][_0xd3d5('0x32')](',')[_0xd3d5('0x35')](function(_0x35888a){return Number(_0x35888a);});_0x1136df[_0xd3d5('0x6a')](function(_0xfbf4c9){_0xaa18c7['or'](_0xd3d5('0x6b'),'%,'+_0xfbf4c9+',%');});_0x5f3528=_[_0xd3d5('0x6c')](_0x5f3528,_0x1136df);break;case'User':if(_0x32f3f9[_0xd3d5('0x61')]==='$substring'){_0x21d19f[_0x2e947d](_0xd3d5('0x6d'),'%'+_0x32f3f9[_0xd3d5('0x5e')]+'%',null);}else{_0x45a715=_[_0xd3d5('0x5d')](_0x102973,[_0xd3d5('0x2d'),_0xd3d5('0x6e')]);_0x32f3f9['field']=_0xd3d5('0x6e');_0x5cc4a2=as[_0xd3d5('0x67')](_0x4f00f5,_0x45a715[_0xd3d5('0x38')],_0x32f3f9);_0x21d19f[_0x2e947d](_0x5cc4a2[_0xd3d5('0x68')],_0x5cc4a2[_0xd3d5('0x5e')][_0xd3d5('0x69')],_0x5cc4a2[_0xd3d5('0x5e')]['end']);}break;case _0xd3d5('0x6f'):_0x5cc4a2=as[_0xd3d5('0x67')]('me',null,_0x32f3f9);_0x21d19f[_0x2e947d](_0x5cc4a2[_0xd3d5('0x68')],_0x5cc4a2['value'][_0xd3d5('0x69')],_0x5cc4a2[_0xd3d5('0x5e')][_0xd3d5('0x29')]);break;}}else{var _0x5cc4a2=as[_0xd3d5('0x67')](_0x4f00f5,_0x45a715[_0xd3d5('0x38')],_0x32f3f9);_0x21d19f[_0x2e947d](_0x5cc4a2['text'],_0x5cc4a2[_0xd3d5('0x5e')][_0xd3d5('0x69')],_0x5cc4a2[_0xd3d5('0x5e')]['end']);}}}else{var _0x10672d=_(_0x2d84[_0xd3d5('0x3a')])['keys']()['map'](function(_0x118e54){return _[_0xd3d5('0x70')](_0x102973,[_0xd3d5('0x2d'),_0x118e54])?_0x118e54:undefined;})[_0xd3d5('0x71')]()[_0xd3d5('0x5e')]();if(!_['isEmpty'](_0x10672d)){_0x10672d[_0xd3d5('0x6a')](function(_0x54a5b0){if(_0x54a5b0===_0xd3d5('0x72')){_0xe43ff5['where'](_0xd3d5('0x73'),[][_0xd3d5('0x74')](_0x2d84[_0xd3d5('0x3a')][_0x54a5b0]));}else if(_0x54a5b0===_0xd3d5('0x75')){var _0x44c5f6=JSON[_0xd3d5('0x76')](_0x2d84[_0xd3d5('0x3a')][_0x54a5b0])[_0xd3d5('0x77')];var _0x319e05=JSON[_0xd3d5('0x76')](_0x2d84['query'][_0x54a5b0])[_0xd3d5('0x78')];_0xe43ff5['where']('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x44c5f6,_0x319e05);}else{if(_0x2d84[_0xd3d5('0x3a')][_0x54a5b0]===_0xd3d5('0x79')){_0xe43ff5['where']('i.'+_0x54a5b0+_0xd3d5('0x7a'));}else{_0xe43ff5[_0xd3d5('0x43')]('i.'+_0x54a5b0+'\x20=\x20?',_0x2d84[_0xd3d5('0x3a')][_0x54a5b0]);}}});}if(_0x2d84[_0xd3d5('0x3a')][_0xd3d5('0x7b')]){if(_0x2d84[_0xd3d5('0x3a')][_0xd3d5('0x7b')]==0x1){_0xe43ff5['having'](_0xd3d5('0x7c'));}else{_0xe43ff5[_0xd3d5('0x5f')](_0xd3d5('0x7d'));}}if(_0x2d84[_0xd3d5('0x3a')]['tag']){_0x5f3528=_[_0xd3d5('0x7e')](_0x2d84[_0xd3d5('0x3a')]['tag'])?_0x2d84['query'][_0xd3d5('0x7f')]:new Array(_0x2d84['query'][_0xd3d5('0x7f')]);_0x5f3528[_0xd3d5('0x6a')](function(_0x122250){_0xaa18c7['or'](_0xd3d5('0x6b'),'%,'+_0x122250+',%');});}if(_0x2d84['query'][_0xd3d5('0x80')]){var _0x14f9c2=_0x2d84[_0xd3d5('0x3a')][_0xd3d5('0x80')][_0xd3d5('0x81')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xd3d5('0x82')](_0x14f9c2)){_0x21d19f['or'](_0xd3d5('0x83'),_0x14f9c2+'%')['or'](_0xd3d5('0x84'),_0x14f9c2+'%');}else{_0x21d19f['or'](_0xd3d5('0x85'),qs['getFullTextValue'](_0x14f9c2))['or'](_0xd3d5('0x86'),_0x14f9c2+'%');}}}_0xe43ff5[_0xd3d5('0x43')](_0x21d19f);_0xe43ff5[_0xd3d5('0x87')](_0xd3d5('0x88'));var _0x14c37d={'type':db[_0xd3d5('0x89')][_0xd3d5('0x8a')][_0xd3d5('0x8b')],'raw':!![]};var _0x121c9f=_0xe43ff5['clone']();_0x121c9f[_0xd3d5('0x45')]('i.id');_0x121c9f[_0xd3d5('0x45')](_0xd3d5('0x8c'),_0xd3d5('0x8d'));if(_0x5db0da[_0xd3d5('0x41')]){_0x5db0da[_0xd3d5('0x41')]['forEach'](function(_0x14da16){var _0x275154=_0x14da16[0x0]===_0xd3d5('0x8e')?_0x14da16[0x0]:'i.'+_0x14da16[0x0];_0xe43ff5[_0xd3d5('0x41')](_0x275154,_0x14da16[0x1]===_0xd3d5('0x8f')?![]:!![]);});}if(!_[_0xd3d5('0x90')](_0x5f3528)){_0xe43ff5[_0xd3d5('0x5f')](_0xaa18c7);_0x121c9f['where'](_0xd3d5('0x91'),_0x5f3528);}BPromise[_0xd3d5('0x92')]()['then'](function(){if(!_0x5ebf7f){if(_0x2d84[_0xd3d5('0x3a')][_0xd3d5('0x72')])return;_0x121c9f[_0xd3d5('0x43')]('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');_0xe43ff5[_0xd3d5('0x43')](_0xd3d5('0x93'));return;}if(_0x2d84[_0xd3d5('0x94')][_0xd3d5('0x95')]!==_0xd3d5('0x96'))return;return _0x2d84['user'][_0xd3d5('0x97')]({'attributes':['id'],'raw':!![]})[_0xd3d5('0x28')](function(_0x572d26){if(_[_0xd3d5('0x90')](_0x572d26)){_0x121c9f[_0xd3d5('0x43')](_0xd3d5('0x98'));_0xe43ff5['where'](_0xd3d5('0x98'));}else{_0x121c9f[_0xd3d5('0x43')]('i.WhatsappAccountId\x20IN\x20?',_[_0xd3d5('0x35')](_0x572d26,'id'));_0xe43ff5[_0xd3d5('0x43')](_0xd3d5('0x73'),_[_0xd3d5('0x35')](_0x572d26,'id'));}});})[_0xd3d5('0x28')](function(){if(_0x2d84['user']['role']===_0xd3d5('0x96')&&!_0x5ebf7f&&!_0x2d84[_0xd3d5('0x3a')][_0xd3d5('0x72')])return[];return db['sequelize'][_0xd3d5('0x3a')](_0x121c9f[_0xd3d5('0x99')](),_0x14c37d);})[_0xd3d5('0x28')](function(_0x52b29f){_0x45b2f9[_0xd3d5('0x22')]=_0x52b29f['length'];if(_0x45b2f9[_0xd3d5('0x22')]===0x0)return[];return db['sequelize']['query'](_0x4fda96['toString'](),_0x14c37d)['then'](function(_0x784d78){_0x265fa2=_[_0xd3d5('0x9a')](_0x784d78,'id');_0x14c37d=_[_0xd3d5('0x9b')](_0x14c37d,{'model':db[_0xd3d5('0x36')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2d84['query']['fields']){_0x5db0da[_0xd3d5('0x3d')]['forEach'](function(_0x20a32e){_0xe43ff5[_0xd3d5('0x45')]('i.'+_0x20a32e);});}else{_0xe43ff5[_0xd3d5('0x45')](_0xd3d5('0x8c'),_0xd3d5('0x8d'));_0xe43ff5[_0xd3d5('0x45')]('a.key',_0xd3d5('0x9c'));_0xe43ff5['field'](_0xd3d5('0x9d'),_0xd3d5('0x9e'));_0xe43ff5[_0xd3d5('0x45')](_0xd3d5('0x9f'),_0xd3d5('0x8e'));_0xe43ff5[_0xd3d5('0x45')](_0xd3d5('0xa0'));_0xe43ff5[_0xd3d5('0x45')](_0xd3d5('0xa1'),_0xd3d5('0xa2'));_0xe43ff5[_0xd3d5('0x45')](_0xd3d5('0xa3'),_0xd3d5('0xa4'));_0xe43ff5[_0xd3d5('0x45')](_0xd3d5('0xa5'),_0xd3d5('0xa6'));_0xe43ff5[_0xd3d5('0x45')]('c.phone',_0xd3d5('0xa7'));_0xe43ff5[_0xd3d5('0x45')]('c.mobile',_0xd3d5('0xa8'));_0xe43ff5['field']('c.fax',_0xd3d5('0xa9'));_0xe43ff5['field']('o.fullname','Owner.fullname');_0xe43ff5[_0xd3d5('0x45')](_0xd3d5('0xaa'),_0xd3d5('0xab'));_0xe43ff5[_0xd3d5('0x45')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xd3d5('0x30'));}if(_0x5db0da[_0xd3d5('0x21')])_0xe43ff5[_0xd3d5('0x21')](_0x5db0da[_0xd3d5('0x21')]);if(_0x5db0da['offset'])_0xe43ff5['offset'](_0x5db0da[_0xd3d5('0x1f')]);return db[_0xd3d5('0xac')][_0xd3d5('0x3a')](_0xe43ff5[_0xd3d5('0x99')](),_0x14c37d);})[_0xd3d5('0x28')](function(_0x31297a){if(_0x31297a[_0xd3d5('0x3f')]>0x0)_0x5814e8[_0xd3d5('0x43')](_0xd3d5('0xad'),_[_0xd3d5('0x35')](_0x31297a,'id'));return db[_0xd3d5('0xac')][_0xd3d5('0x3a')](_0x5814e8[_0xd3d5('0x99')](),_0x14c37d)[_0xd3d5('0x28')](function(_0xf55227){var _0x31f4be=_[_0xd3d5('0xae')](_0xf55227,_0xd3d5('0xaf'));var _0x5176a8=[];_0x31297a[_0xd3d5('0x6a')](function(_0x4434ee){_0x5176a8[_0xd3d5('0x33')](updateWhatsappInteraction(_0x4434ee,_0x265fa2,_0x31f4be));});return BPromise[_0xd3d5('0xb0')](_0x5176a8);});});})[_0xd3d5('0x28')](function(_0x1017cf){_0x45b2f9[_0xd3d5('0xb1')]=_0x1017cf;return _0x45b2f9;})[_0xd3d5('0x28')](respondWithFilteredResult(_0x42029c,_0x5db0da))[_0xd3d5('0xb2')](handleError(_0x42029c,null));};exports['show']=function(_0x1584f9,_0x284cd2){var _0x8eaefe={'raw':![],'where':{'id':_0x1584f9['params']['id']}},_0x1d344d={};_0x1d344d[_0xd3d5('0x39')]=_['keys'](db[_0xd3d5('0x36')][_0xd3d5('0xb3')]);_0x1d344d[_0xd3d5('0x3a')]=_[_0xd3d5('0xb4')](_0x1584f9['query']);_0x1d344d['filters']=_[_0xd3d5('0x3c')](_0x1d344d[_0xd3d5('0x39')],_0x1d344d[_0xd3d5('0x3a')]);_0x8eaefe[_0xd3d5('0x3d')]=_['intersection'](_0x1d344d[_0xd3d5('0x39')],qs[_0xd3d5('0x3e')](_0x1584f9[_0xd3d5('0x3a')][_0xd3d5('0x3e')]));_0x8eaefe[_0xd3d5('0x3d')]=_0x8eaefe[_0xd3d5('0x3d')][_0xd3d5('0x3f')]?_0x8eaefe[_0xd3d5('0x3d')]:_0x1d344d[_0xd3d5('0x39')];if(_0x1584f9[_0xd3d5('0x3a')][_0xd3d5('0xb5')]){_0x8eaefe[_0xd3d5('0xb6')]=[{'all':!![]}];}_0x8eaefe=_[_0xd3d5('0x9b')]({},_0x8eaefe,_0x1584f9['options']);return db[_0xd3d5('0x36')]['find'](_0x8eaefe)[_0xd3d5('0x28')](handleEntityNotFound(_0x284cd2,null))[_0xd3d5('0x28')](respondWithResult(_0x284cd2,null))[_0xd3d5('0xb2')](handleError(_0x284cd2,null));};exports[_0xd3d5('0xb7')]=function(_0x457105,_0x388159){return db[_0xd3d5('0x36')]['create'](_0x457105[_0xd3d5('0x6f')],{})['then'](respondWithResult(_0x388159,0xc9))[_0xd3d5('0xb2')](handleError(_0x388159,null));};exports['update']=function(_0x338c0f,_0x1de9d1){if(_0x338c0f[_0xd3d5('0x6f')]['id']){delete _0x338c0f[_0xd3d5('0x6f')]['id'];}return db['WhatsappInteraction']['find']({'where':{'id':_0x338c0f[_0xd3d5('0xb8')]['id']}})[_0xd3d5('0x28')](handleEntityNotFound(_0x1de9d1,null))[_0xd3d5('0x28')](saveUpdates(_0x338c0f[_0xd3d5('0x6f')],null))[_0xd3d5('0x28')](respondWithResult(_0x1de9d1,null))[_0xd3d5('0xb2')](handleError(_0x1de9d1,null));};exports[_0xd3d5('0x27')]=function(_0x1ee1d3,_0x20c47d){return db[_0xd3d5('0x36')]['find']({'where':{'id':_0x1ee1d3[_0xd3d5('0xb8')]['id']}})[_0xd3d5('0x28')](handleEntityNotFound(_0x20c47d,null))['then'](removeEntity(_0x20c47d,null))[_0xd3d5('0xb2')](handleError(_0x20c47d,null));};exports[_0xd3d5('0xb9')]=function(_0x91e2f2,_0x5b3590){return db[_0xd3d5('0x36')][_0xd3d5('0xb9')]()[_0xd3d5('0x28')](respondWithResult(_0x5b3590,null))[_0xd3d5('0xb2')](handleError(_0x5b3590,null));};exports[_0xd3d5('0xba')]=function(_0x17728d,_0x1eca99,_0x554404){return db[_0xd3d5('0xbb')][_0xd3d5('0x5d')]({'where':{'id':_0x17728d[_0xd3d5('0xb8')]['id']}})[_0xd3d5('0x28')](handleEntityNotFound(_0x1eca99,null))['then'](function(_0x1df4d6){if(_0x1df4d6){return _0x1df4d6[_0xd3d5('0xba')](_0x17728d[_0xd3d5('0x6f')][_0xd3d5('0xbc')],_[_0xd3d5('0xbd')](_0x17728d['body'],[_0xd3d5('0xbc'),'id'])||{});}})[_0xd3d5('0x28')](respondWithResult(_0x1eca99,null))[_0xd3d5('0xb2')](handleError(_0x1eca99,null));};exports[_0xd3d5('0xbe')]=function(_0xfb3dbf,_0x406443,_0x5edb5e){var _0x406266={'raw':![],'where':{}};var _0x24e8ac={};var _0x5c0a01={'count':0x0,'rows':[]};return db[_0xd3d5('0x36')][_0xd3d5('0xbf')]({'where':{'id':_0xfb3dbf[_0xd3d5('0xb8')]['id']}})['then'](handleEntityNotFound(_0x406443,null))['then'](function(_0x5b3f9b){if(_0x5b3f9b){_0x24e8ac[_0xd3d5('0x39')]=_[_0xd3d5('0xb4')](db['WhatsappMessage'][_0xd3d5('0xb3')]);_0x24e8ac['query']=_[_0xd3d5('0xb4')](_0xfb3dbf[_0xd3d5('0x3a')]);_0x24e8ac['filters']=_['intersection'](_0x24e8ac[_0xd3d5('0x39')],_0x24e8ac['query']);_0x406266['attributes']=_[_0xd3d5('0x3c')](_0x24e8ac[_0xd3d5('0x39')],qs[_0xd3d5('0x3e')](_0xfb3dbf[_0xd3d5('0x3a')]['fields']));_0x406266[_0xd3d5('0x3d')]=_0x406266[_0xd3d5('0x3d')]['length']?_0x406266['attributes']:_0x24e8ac[_0xd3d5('0x39')];if(!_0xfb3dbf[_0xd3d5('0x3a')][_0xd3d5('0x40')](_0xd3d5('0xc0'))){_0x406266[_0xd3d5('0x21')]=qs['limit'](_0xfb3dbf[_0xd3d5('0x3a')]['limit']);_0x406266[_0xd3d5('0x1f')]=qs[_0xd3d5('0x1f')](_0xfb3dbf[_0xd3d5('0x3a')]['offset']);}_0x406266[_0xd3d5('0x41')]=qs[_0xd3d5('0x42')](_0xfb3dbf[_0xd3d5('0x3a')][_0xd3d5('0x42')]);_0x406266['where']=qs['filters'](_['pick'](_0xfb3dbf['query'],_0x24e8ac['filters']));_0x406266[_0xd3d5('0x43')][_0xd3d5('0xaf')]=_0x5b3f9b['id'];if(_0xfb3dbf[_0xd3d5('0x3a')][_0xd3d5('0x80')]){_0x406266[_0xd3d5('0x43')]=_[_0xd3d5('0x9b')](_0x406266['where'],{'$or':_[_0xd3d5('0x35')](_0x406266[_0xd3d5('0x3d')],function(_0x51108f){var _0x1c5290={};_0x1c5290[_0x51108f]={'$like':'%'+_0xfb3dbf['query'][_0xd3d5('0x80')]+'%'};return _0x1c5290;})});}if(_0xfb3dbf['query'][_0xd3d5('0x77')]){var _0x31baac=_0xfb3dbf[_0xd3d5('0x3a')][_0xd3d5('0x77')][_0xd3d5('0x32')](',');var _0x1a02d2={};_0x1a02d2[_0x31baac[0x0]]={'$gte':moment(_0x31baac[0x1])[_0xd3d5('0xc1')]('YYYY-MM-DD\x20HH:mm:ss')};_0x406266[_0xd3d5('0x43')]=_['merge'](_0x406266['where'],_0x1a02d2);}_0x406266=_[_0xd3d5('0x9b')]({},_0x406266,_0xfb3dbf[_0xd3d5('0xc2')]);return db[_0xd3d5('0xbb')][_0xd3d5('0x22')]({'where':_0x406266[_0xd3d5('0x43')]})[_0xd3d5('0x28')](function(_0x4ef3d3){_0x5c0a01[_0xd3d5('0x22')]=_0x4ef3d3;if(_0xfb3dbf[_0xd3d5('0x3a')][_0xd3d5('0xb5')]){_0x406266['include']=[{'all':!![]}];}return db[_0xd3d5('0xbb')][_0xd3d5('0xc3')](_0x406266);})[_0xd3d5('0x28')](function(_0x4a9ea1){_0x5c0a01[_0xd3d5('0xb1')]=_0x4a9ea1;return _0x5c0a01;});}})[_0xd3d5('0x28')](respondWithFilteredResult(_0x406443,_0x406266))['catch'](handleError(_0x406443,null));};exports[_0xd3d5('0xc4')]=function(_0x389a8c,_0xb17395,_0x56855b){return db[_0xd3d5('0x36')][_0xd3d5('0x5d')]({'where':{'id':_0x389a8c[_0xd3d5('0xb8')]['id']}})[_0xd3d5('0x28')](handleEntityNotFound(_0xb17395,null))['then'](function(_0x187202){if(_0x187202){return _0x187202[_0xd3d5('0xc5')](_0x389a8c[_0xd3d5('0x6f')][_0xd3d5('0xbc')],_[_0xd3d5('0xbd')](_0x389a8c[_0xd3d5('0x6f')],[_0xd3d5('0xbc'),'id'])||{})['spread'](function(){return db[_0xd3d5('0xc6')][_0xd3d5('0xc3')]({'attributes':['id',_0xd3d5('0x2d'),'color'],'where':{'id':_0x389a8c['body'][_0xd3d5('0xbc')]}});})[_0xd3d5('0x28')](function(_0x231f82){socket['emit'](_0xd3d5('0xc7'),{'id':Number(_0x389a8c[_0xd3d5('0xb8')]['id']),'tags':_0x231f82||[]});return{'id':Number(_0x389a8c[_0xd3d5('0xb8')]['id']),'tags':_0x231f82||[]};});}})[_0xd3d5('0x28')](respondWithResult(_0xb17395,null))[_0xd3d5('0xb2')](handleError(_0xb17395,null));};exports[_0xd3d5('0xc8')]=function(_0x396e8e,_0x2f0946,_0x2e2732){return db[_0xd3d5('0x36')][_0xd3d5('0x5d')]({'where':{'id':_0x396e8e['params']['id']}})[_0xd3d5('0x28')](handleEntityNotFound(_0x2f0946,null))[_0xd3d5('0x28')](function(_0x53fbd9){if(_0x53fbd9){return _0x53fbd9[_0xd3d5('0xc8')](_0x396e8e['query'][_0xd3d5('0xbc')]);}})['then'](respondWithStatusCode(_0x2f0946,null))[_0xd3d5('0xb2')](handleError(_0x2f0946,null));};exports['download']=function(_0x26395b,_0x306933){var _0x57272a=moment()['unix']()[_0xd3d5('0x99')]();var _0xd6bd60=path[_0xd3d5('0xc9')](config[_0xd3d5('0xca')],'server',_0xd3d5('0xcb'),_0xd3d5('0xcc'));var _0x2315a3=path[_0xd3d5('0xc9')](config[_0xd3d5('0xca')],_0xd3d5('0xcd'),_0xd3d5('0xcb'),'attachments');var _0x921dd1=path[_0xd3d5('0xc9')](_0xd6bd60,_0x57272a);var _0x8a3e7e=util['format']('transcript-%d-%s.zip',_0x26395b['params']['id'],_0x57272a);var _0x552fc0=path[_0xd3d5('0xc9')](_0xd6bd60,_0x8a3e7e);var _0x5b8e56=[];_0x5b8e56[_0xd3d5('0x33')]({'model':db[_0xd3d5('0xce')],'as':'User','attributes':['id',_0xd3d5('0x2f')],'raw':!![]});_0x5b8e56[_0xd3d5('0x33')]({'model':db[_0xd3d5('0xcf')],'as':_0xd3d5('0xd0'),'attributes':['id',_0xd3d5('0xd1'),_0xd3d5('0xd2')],'raw':!![]});if(_0x26395b[_0xd3d5('0x3a')][_0xd3d5('0xd3')]){_0x5b8e56[_0xd3d5('0x33')]({'model':db[_0xd3d5('0xd4')],'as':_0xd3d5('0xd4'),'raw':!![]});}var _0x1198d7=[{'model':db[_0xd3d5('0xbb')],'as':_0xd3d5('0xd5'),'attributes':['id',_0xd3d5('0x6f'),_0xd3d5('0x75'),'direction',_0xd3d5('0xd6'),'read'],'include':_0x5b8e56}];_0x1198d7[_0xd3d5('0x33')]({'model':db['WhatsappAccount'],'as':'Account','attributes':['id',_0xd3d5('0x2d')]});_0x1198d7[_0xd3d5('0x33')]({'model':db[_0xd3d5('0xce')],'as':_0xd3d5('0xd7'),'attributes':['id',_0xd3d5('0x2f')]});return db[_0xd3d5('0x36')][_0xd3d5('0x5d')]({'where':{'id':_0x26395b[_0xd3d5('0xb8')]['id']},'include':_0x1198d7})[_0xd3d5('0x28')](handleEntityNotFound(_0x306933,null))[_0xd3d5('0x28')](function(_0x177650){if(_0x177650){var _0x4e74b0=_0x177650['get']({'plain':!![]});fs[_0xd3d5('0xd8')](_0x921dd1);var _0x2f5ee0={'channel':_0xd3d5('0xd9'),'account':_0x4e74b0['Account']['name'],'agent':_0x4e74b0[_0xd3d5('0xd7')]?_0x4e74b0['Owner'][_0xd3d5('0x2f')]:_0xd3d5('0xda'),'createdAt':moment(_0x4e74b0[_0xd3d5('0x75')])[_0xd3d5('0xc1')](_0xd3d5('0xdb'))[_0xd3d5('0x99')](),'closedAt':_0x4e74b0[_0xd3d5('0xdc')]?moment(_0x4e74b0[_0xd3d5('0xdd')])[_0xd3d5('0xc1')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x4e74b0['disposition'],'messages':_(_0x4e74b0[_0xd3d5('0xd5')])['filter']({'secret':![]})[_0xd3d5('0x35')](function(_0x4ce152){if(_0x4ce152['Attachment']){var _0x16ce37=path[_0xd3d5('0xc9')](_0x2315a3,_0x4ce152[_0xd3d5('0xd4')][_0xd3d5('0xde')]);if(fs['existsSync'](_0x16ce37)){fs['createReadStream'](_0x16ce37)['pipe'](fs[_0xd3d5('0xdf')](path[_0xd3d5('0xc9')](_0x921dd1,_0x4ce152[_0xd3d5('0xd4')][_0xd3d5('0xde')])));}}return{'date':moment(_0x4ce152[_0xd3d5('0x75')])[_0xd3d5('0xc1')](_0xd3d5('0xdb'))[_0xd3d5('0x99')](),'sender':_0x4ce152[_0xd3d5('0xe0')]===_0xd3d5('0xe1')?_0x4ce152[_0xd3d5('0xce')]?_0x4ce152['User'][_0xd3d5('0x2f')]:_0xd3d5('0xe2'):_0x4ce152['Contact']['firstName']+(_0x4ce152[_0xd3d5('0xd0')][_0xd3d5('0xd2')]?'\x20'+_0x4ce152[_0xd3d5('0xd0')]['lastName']:''),'body':_0x4ce152[_0xd3d5('0xd4')]?_0x4ce152[_0xd3d5('0xd4')][_0xd3d5('0xde')]:_0x4ce152['body'],'direction':_0x4ce152[_0xd3d5('0xe0')]==='out'?'A':'C','secret':_0x4ce152[_0xd3d5('0xd6')],'read':_0x4ce152['read'],'attachment':_0x4ce152[_0xd3d5('0xd4')]};})[_0xd3d5('0x5e')]()};return ejs['renderFile'](path[_0xd3d5('0xc9')](config['root'],'server','views',_0xd3d5('0xe3')),{'interaction':_0x2f5ee0})[_0xd3d5('0x28')](function(_0x2508fa){var _0xf69c5e=path[_0xd3d5('0xc9')](_0x921dd1,_0xd3d5('0xe4')+_0x4e74b0['id']+'-'+_0x57272a+'.pdf');var _0x357185={'path':_0xf69c5e,'channel':_0xd3d5('0xd9'),'interactionId':_0x4e74b0['id']};return pdf[_0xd3d5('0xe5')](_0x2508fa,_0x357185);})[_0xd3d5('0x28')](function(){return new BPromise(function(_0x4068ca,_0x18b90c){zipdir(_0x921dd1,{'saveTo':_0x552fc0},function(_0x4d91e5,_0x200a93){if(_0x4d91e5)return _0x18b90c(_0x4d91e5);return _0x4068ca(_0x200a93);});})['then'](function(){return new BPromise(function(_0x2eed45,_0x12a01e){rimraf(_0x921dd1,function(_0x31b9b8){if(_0x31b9b8)_0x12a01e(_0x31b9b8);return _0x2eed45();});});})[_0xd3d5('0x28')](function(){return _0x306933[_0xd3d5('0xe6')](_0x552fc0,_0x8a3e7e,function(_0x4ab685){if(_0x4ab685){console['log']('err',_0x4ab685);}else{fs['unlinkSync'](_0x552fc0);}});});});}else{return _0x306933[_0xd3d5('0x2a')](0xc8);}})[_0xd3d5('0xb2')](handleError(_0x306933,null));};
\ No newline at end of file
index 65cb06d..872cd08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x152f=['exports','events','../../mysqldb','WhatsappInteraction','WhatsappMessage','save','update','remove','getUsers','map','then','unreadMessages','length','emit','catch','hasOwnProperty','hook'];(function(_0x4a8c26,_0x187c47){var _0x2810f9=function(_0x22a73d){while(--_0x22a73d){_0x4a8c26['push'](_0x4a8c26['shift']());}};_0x2810f9(++_0x187c47);}(_0x152f,0x144));var _0xf152=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0x152f[_0x3b5250];return _0xc844a1;};'use strict';var EventEmitter=require(_0xf152('0x0'));var WhatsappInteraction=require(_0xf152('0x1'))['db'][_0xf152('0x2')];var WhatsappMessage=require(_0xf152('0x1'))['db'][_0xf152('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf152('0x4'),'afterUpdate':_0xf152('0x5'),'afterDestroy':_0xf152('0x6')};function emitEvent(_0x303e32){return function(_0x51ddec,_0x286a5f,_0x542973){_0x51ddec[_0xf152('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x36498a){_0x51ddec['setDataValue']('Users',_0x36498a[_0xf152('0x8')](function(_0x270135){return{'id':_0x270135['id']};}));return WhatsappMessage['findAll']({'where':{'WhatsappInteractionId':_0x51ddec['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf152('0x9')](function(_0x3223fa){_0x51ddec['setDataValue'](_0xf152('0xa'),_0x3223fa[_0xf152('0xb')]);WhatsappInteractionEvents[_0xf152('0xc')](_0x303e32+':'+_0x51ddec['id'],_0x51ddec);WhatsappInteractionEvents[_0xf152('0xc')](_0x303e32,_0x51ddec);_0x542973(null);})[_0xf152('0xd')](_0x542973(null));};}for(var e in events){if(events[_0xf152('0xe')](e)){var event=events[e];WhatsappInteraction[_0xf152('0xf')](e,emitEvent(event));}}module[_0xf152('0x10')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0xfc73=['setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','exports','events','../../mysqldb','WhatsappMessage'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfc73,0x8d));var _0x3fc7=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0xfc73[_0x243b59];return _0x3e1676;};'use strict';var EventEmitter=require(_0x3fc7('0x0'));var WhatsappInteraction=require(_0x3fc7('0x1'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0x3fc7('0x1'))['db'][_0x3fc7('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x3fc7('0x3')](0x0);var events={'afterCreate':_0x3fc7('0x4'),'afterUpdate':_0x3fc7('0x5'),'afterDestroy':_0x3fc7('0x6')};function emitEvent(_0x429287){return function(_0x8e713,_0x4427df,_0x1039e0){_0x8e713[_0x3fc7('0x7')]({'attributes':['id'],'raw':!![]})[_0x3fc7('0x8')](function(_0x5e41d3){_0x8e713[_0x3fc7('0x9')](_0x3fc7('0xa'),_0x5e41d3[_0x3fc7('0xb')](function(_0x3e2653){return{'id':_0x3e2653['id']};}));return WhatsappMessage[_0x3fc7('0xc')]({'where':{'WhatsappInteractionId':_0x8e713['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x5a0444){_0x8e713[_0x3fc7('0x9')](_0x3fc7('0xd'),_0x5a0444[_0x3fc7('0xe')]);WhatsappInteractionEvents[_0x3fc7('0xf')](_0x429287+':'+_0x8e713['id'],_0x8e713);WhatsappInteractionEvents[_0x3fc7('0xf')](_0x429287,_0x8e713);_0x1039e0(null);})[_0x3fc7('0x10')](_0x1039e0(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappInteraction['hook'](e,emitEvent(event));}}module[_0x3fc7('0x11')]=WhatsappInteractionEvents;
\ No newline at end of file
index fc8c4ef..ea29615 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x204c=['changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappInteraction.attributes','exports','define','WhatsappInteraction'];(function(_0x254744,_0x219e6b){var _0x2a6a96=function(_0x26aceb){while(--_0x26aceb){_0x254744['push'](_0x254744['shift']());}};_0x2a6a96(++_0x219e6b);}(_0x204c,0xdc));var _0xc204=function(_0x54509d,_0x48cc0a){_0x54509d=_0x54509d-0x0;var _0x84b37a=_0x204c[_0x54509d];return _0x84b37a;};'use strict';var _=require(_0xc204('0x0'));var util=require(_0xc204('0x1'));var logger=require(_0xc204('0x2'))(_0xc204('0x3'));var moment=require(_0xc204('0x4'));var BPromise=require(_0xc204('0x5'));var rp=require(_0xc204('0x6'));var fs=require('fs');var path=require(_0xc204('0x7'));var rimraf=require(_0xc204('0x8'));var config=require(_0xc204('0x9'));var attributes=require(_0xc204('0xa'));module[_0xc204('0xb')]=function(_0x5cb76f,_0x33557b){return _0x5cb76f[_0xc204('0xc')](_0xc204('0xd'),attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x44ddcd,_0x4be484,_0x2f810d){if(_0x44ddcd[_0xc204('0xe')]('closed')){_0x44ddcd[_0xc204('0xf')]=moment()[_0xc204('0x10')](_0xc204('0x11'));}_0x2f810d(null,_0x44ddcd);}}});};
\ No newline at end of file
+var _0xcf7e=['define','WhatsappInteraction','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','../../config/logger','api','moment','request-promise','path','../../config/environment','./whatsappInteraction.attributes'];(function(_0x21549c,_0x6d64d1){var _0x426cbd=function(_0x323f5b){while(--_0x323f5b){_0x21549c['push'](_0x21549c['shift']());}};_0x426cbd(++_0x6d64d1);}(_0xcf7e,0xaf));var _0xecf7=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0xcf7e[_0x209941];return _0x1e8729;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xecf7('0x0'))(_0xecf7('0x1'));var moment=require(_0xecf7('0x2'));var BPromise=require('bluebird');var rp=require(_0xecf7('0x3'));var fs=require('fs');var path=require(_0xecf7('0x4'));var rimraf=require('rimraf');var config=require(_0xecf7('0x5'));var attributes=require(_0xecf7('0x6'));module['exports']=function(_0x213c99,_0x47882d){return _0x213c99[_0xecf7('0x7')](_0xecf7('0x8'),attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5615d4,_0x221741,_0x4941b2){if(_0x5615d4[_0xecf7('0x9')](_0xecf7('0xa'))){_0x5615d4[_0xecf7('0xb')]=moment()[_0xecf7('0xc')](_0xecf7('0xd'));}_0x4941b2(null,_0x5615d4);}}});};
\ No newline at end of file
index cbfbf8b..9199ded 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c5f=['AddTagsToWhatsappInteraction','find','addTags','body','ids','omit','spread','AddTags','lodash','util','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./whatsappInteraction.socket','register','request','then','WhatsappInteraction,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','UpdateWhatsappInteraction','WhatsappInteraction','update','options','raw','where','attributes','limit','debug','catch'];(function(_0x34536e,_0x1a8e43){var _0x1494f2=function(_0x3c734e){while(--_0x3c734e){_0x34536e['push'](_0x34536e['shift']());}};_0x1494f2(++_0x1a8e43);}(_0x1c5f,0x1d6));var _0xf1c5=function(_0x3f223b,_0x8936fb){_0x3f223b=_0x3f223b-0x0;var _0x292dd1=_0x1c5f[_0x3f223b];return _0x292dd1;};'use strict';var _=require(_0xf1c5('0x0'));var util=require(_0xf1c5('0x1'));var moment=require('moment');var BPromise=require(_0xf1c5('0x2'));var rs=require(_0xf1c5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf1c5('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf1c5('0x5'));var config=require(_0xf1c5('0x6'));var jayson=require(_0xf1c5('0x7'));var client=jayson[_0xf1c5('0x8')][_0xf1c5('0x9')]({'port':0x232a});config[_0xf1c5('0xa')]=_[_0xf1c5('0xb')](config[_0xf1c5('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xf1c5('0xc'))(new Redis(config['redis']));require(_0xf1c5('0xd'))[_0xf1c5('0xe')](socket);function respondWithRpcPromise(_0x5779cf,_0x569068,_0x2a6507){return new BPromise(function(_0x2d7bfa,_0xd67ff3){return client[_0xf1c5('0xf')](_0x5779cf,_0x2a6507)[_0xf1c5('0x10')](function(_0x4d1afe){logger['info'](_0xf1c5('0x11'),_0x569068,'request\x20sent');logger['debug']('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x569068,'request\x20sent',JSON[_0xf1c5('0x12')](_0x4d1afe));if(_0x4d1afe[_0xf1c5('0x13')]){if(_0x4d1afe[_0xf1c5('0x13')][_0xf1c5('0x14')]===0x1f4){logger[_0xf1c5('0x13')](_0xf1c5('0x11'),_0x569068,_0x4d1afe[_0xf1c5('0x13')][_0xf1c5('0x15')]);return _0xd67ff3(_0x4d1afe[_0xf1c5('0x13')][_0xf1c5('0x15')]);}logger[_0xf1c5('0x13')](_0xf1c5('0x11'),_0x569068,_0x4d1afe[_0xf1c5('0x13')][_0xf1c5('0x15')]);return _0x2d7bfa(_0x4d1afe['error']['message']);}else{logger[_0xf1c5('0x16')](_0xf1c5('0x11'),_0x569068,_0xf1c5('0x17'));_0x2d7bfa(_0x4d1afe['result']['message']);}})['catch'](function(_0x407c10){logger['error']('WhatsappInteraction,\x20%s,\x20%s',_0x569068,_0x407c10);_0xd67ff3(_0x407c10);});});}exports[_0xf1c5('0x18')]=function(_0x5e2537){var _0x19643c=this;return new Promise(function(_0x4f5fe5,_0x2d0631){return db[_0xf1c5('0x19')][_0xf1c5('0x1a')](_0x5e2537['body'],{'raw':_0x5e2537['options']?_0x5e2537[_0xf1c5('0x1b')][_0xf1c5('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5e2537['options']?_0x5e2537['options'][_0xf1c5('0x1d')]||null:null,'attributes':_0x5e2537['options']?_0x5e2537[_0xf1c5('0x1b')][_0xf1c5('0x1e')]||null:null,'limit':_0x5e2537[_0xf1c5('0x1b')]?_0x5e2537[_0xf1c5('0x1b')][_0xf1c5('0x1f')]||null:null})[_0xf1c5('0x10')](function(_0x3bfeec){logger[_0xf1c5('0x16')](_0xf1c5('0x18'),_0x5e2537);logger[_0xf1c5('0x20')](_0xf1c5('0x18'),_0x5e2537,JSON[_0xf1c5('0x12')](_0x3bfeec));_0x4f5fe5(_0x3bfeec);})[_0xf1c5('0x21')](function(_0x16dc0b){logger[_0xf1c5('0x13')](_0xf1c5('0x18'),_0x16dc0b[_0xf1c5('0x15')],_0x5e2537);_0x2d0631(_0x19643c[_0xf1c5('0x13')](0x1f4,_0x16dc0b['message']));});});};exports[_0xf1c5('0x22')]=function(_0x27adef){return new Promise(function(_0x5e4466,_0x1f7979){return db[_0xf1c5('0x19')][_0xf1c5('0x23')]({'where':_0x27adef[_0xf1c5('0x1b')]?_0x27adef['options']['where']||null:null})[_0xf1c5('0x10')](function(_0x311480){if(_0x311480){return _0x311480[_0xf1c5('0x24')](_0x27adef[_0xf1c5('0x25')][_0xf1c5('0x26')],_[_0xf1c5('0x27')](_0x27adef[_0xf1c5('0x25')],[_0xf1c5('0x26'),'id'])||{});}})[_0xf1c5('0x28')](function(_0x57e5e1){logger[_0xf1c5('0x16')]('AddTags',_0x27adef);logger['debug'](_0xf1c5('0x29'),_0x27adef,JSON[_0xf1c5('0x12')](_0x57e5e1));_0x5e4466(_0x57e5e1);})[_0xf1c5('0x21')](function(_0x5f203d){logger[_0xf1c5('0x13')](_0xf1c5('0x29'),_0x5f203d['message'],_0x27adef);_0x1f7979(_this[_0xf1c5('0x13')](0x1f4,_0x5f203d['message']));});});};
\ No newline at end of file
+var _0xb2c8=['lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','defaults','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','then','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','WhatsappInteraction,\x20%s,\x20%s','message','info','result','catch','UpdateWhatsappInteraction','update','body','options','where','attributes','limit','AddTagsToWhatsappInteraction','WhatsappInteraction','addTags','ids','spread','AddTags'];(function(_0x3f2606,_0x273fc2){var _0x4be7d9=function(_0x15d956){while(--_0x15d956){_0x3f2606['push'](_0x3f2606['shift']());}};_0x4be7d9(++_0x273fc2);}(_0xb2c8,0xe4));var _0x8b2c=function(_0x247999,_0x8fc29f){_0x247999=_0x247999-0x0;var _0x5e2245=_0xb2c8[_0x247999];return _0x5e2245;};'use strict';var _=require(_0x8b2c('0x0'));var util=require('util');var moment=require(_0x8b2c('0x1'));var BPromise=require(_0x8b2c('0x2'));var rs=require(_0x8b2c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8b2c('0x4'))['db'];var utils=require(_0x8b2c('0x5'));var logger=require(_0x8b2c('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x8b2c('0x7')](config[_0x8b2c('0x8')],{'host':_0x8b2c('0x9'),'port':0x18eb});var socket=require(_0x8b2c('0xa'))(new Redis(config[_0x8b2c('0x8')]));require(_0x8b2c('0xb'))[_0x8b2c('0xc')](socket);function respondWithRpcPromise(_0x1719f7,_0x4cbf04,_0x594e47){return new BPromise(function(_0x53c06c,_0x96fd40){return client[_0x8b2c('0xd')](_0x1719f7,_0x594e47)[_0x8b2c('0xe')](function(_0x522728){logger['info']('WhatsappInteraction,\x20%s,\x20%s',_0x4cbf04,_0x8b2c('0xf'));logger[_0x8b2c('0x10')](_0x8b2c('0x11'),_0x4cbf04,_0x8b2c('0xf'),JSON[_0x8b2c('0x12')](_0x522728));if(_0x522728[_0x8b2c('0x13')]){if(_0x522728[_0x8b2c('0x13')]['code']===0x1f4){logger['error'](_0x8b2c('0x14'),_0x4cbf04,_0x522728[_0x8b2c('0x13')][_0x8b2c('0x15')]);return _0x96fd40(_0x522728[_0x8b2c('0x13')][_0x8b2c('0x15')]);}logger[_0x8b2c('0x13')](_0x8b2c('0x14'),_0x4cbf04,_0x522728[_0x8b2c('0x13')][_0x8b2c('0x15')]);return _0x53c06c(_0x522728[_0x8b2c('0x13')][_0x8b2c('0x15')]);}else{logger[_0x8b2c('0x16')](_0x8b2c('0x14'),_0x4cbf04,_0x8b2c('0xf'));_0x53c06c(_0x522728[_0x8b2c('0x17')][_0x8b2c('0x15')]);}})[_0x8b2c('0x18')](function(_0x35b9b2){logger[_0x8b2c('0x13')]('WhatsappInteraction,\x20%s,\x20%s',_0x4cbf04,_0x35b9b2);_0x96fd40(_0x35b9b2);});});}exports[_0x8b2c('0x19')]=function(_0x213ab9){var _0x156808=this;return new Promise(function(_0x55d03d,_0x49df08){return db['WhatsappInteraction'][_0x8b2c('0x1a')](_0x213ab9[_0x8b2c('0x1b')],{'raw':_0x213ab9[_0x8b2c('0x1c')]?_0x213ab9['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x213ab9[_0x8b2c('0x1c')]?_0x213ab9[_0x8b2c('0x1c')][_0x8b2c('0x1d')]||null:null,'attributes':_0x213ab9[_0x8b2c('0x1c')]?_0x213ab9[_0x8b2c('0x1c')][_0x8b2c('0x1e')]||null:null,'limit':_0x213ab9['options']?_0x213ab9[_0x8b2c('0x1c')][_0x8b2c('0x1f')]||null:null})[_0x8b2c('0xe')](function(_0x20c248){logger[_0x8b2c('0x16')](_0x8b2c('0x19'),_0x213ab9);logger[_0x8b2c('0x10')]('UpdateWhatsappInteraction',_0x213ab9,JSON[_0x8b2c('0x12')](_0x20c248));_0x55d03d(_0x20c248);})[_0x8b2c('0x18')](function(_0x5ac7bf){logger[_0x8b2c('0x13')]('UpdateWhatsappInteraction',_0x5ac7bf['message'],_0x213ab9);_0x49df08(_0x156808[_0x8b2c('0x13')](0x1f4,_0x5ac7bf[_0x8b2c('0x15')]));});});};exports[_0x8b2c('0x20')]=function(_0x1f0e24){return new Promise(function(_0x3ce86f,_0x19451a){return db[_0x8b2c('0x21')]['find']({'where':_0x1f0e24[_0x8b2c('0x1c')]?_0x1f0e24[_0x8b2c('0x1c')]['where']||null:null})[_0x8b2c('0xe')](function(_0x4833d5){if(_0x4833d5){return _0x4833d5[_0x8b2c('0x22')](_0x1f0e24[_0x8b2c('0x1b')][_0x8b2c('0x23')],_['omit'](_0x1f0e24['body'],[_0x8b2c('0x23'),'id'])||{});}})[_0x8b2c('0x24')](function(_0x1ba0dd){logger[_0x8b2c('0x16')]('AddTags',_0x1f0e24);logger['debug'](_0x8b2c('0x25'),_0x1f0e24,JSON['stringify'](_0x1ba0dd));_0x3ce86f(_0x1ba0dd);})[_0x8b2c('0x18')](function(_0x2a658e){logger[_0x8b2c('0x13')](_0x8b2c('0x25'),_0x2a658e['message'],_0x1f0e24);_0x19451a(_this['error'](0x1f4,_0x2a658e['message']));});});};
\ No newline at end of file
index b80cca3..162232b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7672=['register','whatsappInteraction:','./whatsappInteraction.events','save','remove','update','emit'];(function(_0x2a0e45,_0x370c5d){var _0x3595b8=function(_0x25aa8d){while(--_0x25aa8d){_0x2a0e45['push'](_0x2a0e45['shift']());}};_0x3595b8(++_0x370c5d);}(_0x7672,0x1bb));var _0x2767=function(_0x1315b3,_0x37314f){_0x1315b3=_0x1315b3-0x0;var _0x307d5d=_0x7672[_0x1315b3];return _0x307d5d;};'use strict';var WhatsappInteractionEvents=require(_0x2767('0x0'));var events=[_0x2767('0x1'),_0x2767('0x2'),_0x2767('0x3')];function createListener(_0x4e510f,_0x3a2f29){return function(_0x3e1de3){_0x3a2f29[_0x2767('0x4')](_0x4e510f,_0x3e1de3);};}function removeListener(_0x15010f,_0x309a7e){return function(){WhatsappInteractionEvents['removeListener'](_0x15010f,_0x309a7e);};}exports[_0x2767('0x5')]=function(_0x1e4e6e){for(var _0x19cb83=0x0,_0x34a3b0=events['length'];_0x19cb83<_0x34a3b0;_0x19cb83++){var _0x91cd3e=events[_0x19cb83];var _0x5ab86a=createListener(_0x2767('0x6')+_0x91cd3e,_0x1e4e6e);WhatsappInteractionEvents['on'](_0x91cd3e,_0x5ab86a);}};
\ No newline at end of file
+var _0xcc0b=['./whatsappInteraction.events','remove','update','emit','removeListener','whatsappInteraction:'];(function(_0x3a3645,_0x1c4d25){var _0x3a6304=function(_0x4b2828){while(--_0x4b2828){_0x3a3645['push'](_0x3a3645['shift']());}};_0x3a6304(++_0x1c4d25);}(_0xcc0b,0x1e0));var _0xbcc0=function(_0x3c5bf1,_0x30bb33){_0x3c5bf1=_0x3c5bf1-0x0;var _0x2dc4d3=_0xcc0b[_0x3c5bf1];return _0x2dc4d3;};'use strict';var WhatsappInteractionEvents=require(_0xbcc0('0x0'));var events=['save',_0xbcc0('0x1'),_0xbcc0('0x2')];function createListener(_0x31f7b7,_0x5983c4){return function(_0x231040){_0x5983c4[_0xbcc0('0x3')](_0x31f7b7,_0x231040);};}function removeListener(_0x2aa2f5,_0x18b0c4){return function(){WhatsappInteractionEvents[_0xbcc0('0x4')](_0x2aa2f5,_0x18b0c4);};}exports['register']=function(_0x22e0e4){for(var _0xc103ad=0x0,_0x1985b4=events['length'];_0xc103ad<_0x1985b4;_0xc103ad++){var _0x2d81ce=events[_0xc103ad];var _0x55f5c0=createListener(_0xbcc0('0x5')+_0x2d81ce,_0x22e0e4);WhatsappInteractionEvents['on'](_0x2d81ce,_0x55f5c0);}};
\ No newline at end of file
index 8084c88..f34fd89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd72c=['show','post','whatsapp','whatsappmessage:create','create','/:id/status','status','put','update','/:id/accept','accept','/:id/reject','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','index','/describe','isAuthenticated','describe','/:id'];(function(_0x5d8f9a,_0x1a26e8){var _0x228bc6=function(_0x24d0f6){while(--_0x24d0f6){_0x5d8f9a['push'](_0x5d8f9a['shift']());}};_0x228bc6(++_0x1a26e8);}(_0xd72c,0x86));var _0xcd72=function(_0x1181c7,_0x2840bf){_0x1181c7=_0x1181c7-0x0;var _0x1a6990=_0xd72c[_0x1181c7];return _0x1a6990;};'use strict';var multer=require(_0xcd72('0x0'));var util=require(_0xcd72('0x1'));var path=require(_0xcd72('0x2'));var timeout=require(_0xcd72('0x3'));var express=require(_0xcd72('0x4'));var router=express[_0xcd72('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xcd72('0x6'));var interaction=require(_0xcd72('0x7'));var config=require(_0xcd72('0x8'));var controller=require(_0xcd72('0x9'));router[_0xcd72('0xa')]('/',auth['isAuthenticated'](),controller[_0xcd72('0xb')]);router['get'](_0xcd72('0xc'),auth[_0xcd72('0xd')](),controller[_0xcd72('0xe')]);router['get'](_0xcd72('0xf'),auth[_0xcd72('0xd')](),controller[_0xcd72('0x10')]);router[_0xcd72('0x11')]('/',auth[_0xcd72('0xd')](),interaction['tracked'](_0xcd72('0x12'),_0xcd72('0x13')),controller[_0xcd72('0x14')]);router['post'](_0xcd72('0x15'),controller[_0xcd72('0x16')]);router[_0xcd72('0x17')](_0xcd72('0xf'),auth['isAuthenticated'](),controller[_0xcd72('0x18')]);router[_0xcd72('0x17')](_0xcd72('0x19'),auth[_0xcd72('0xd')](),controller[_0xcd72('0x1a')]);router[_0xcd72('0x17')](_0xcd72('0x1b'),auth[_0xcd72('0xd')](),controller['reject']);router[_0xcd72('0x1c')]('/:id',auth['isAuthenticated'](),controller[_0xcd72('0x1d')]);module['exports']=router;
\ No newline at end of file
+var _0x52b4=['index','/describe','isAuthenticated','describe','/:id','post','tracked','whatsapp','/:id/status','status','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get'];(function(_0x282f96,_0x2be4be){var _0x12d02b=function(_0x51cc9d){while(--_0x51cc9d){_0x282f96['push'](_0x282f96['shift']());}};_0x12d02b(++_0x2be4be);}(_0x52b4,0x1d2));var _0x452b=function(_0x3131ca,_0x3b7f7f){_0x3131ca=_0x3131ca-0x0;var _0x30c386=_0x52b4[_0x3131ca];return _0x30c386;};'use strict';var multer=require(_0x452b('0x0'));var util=require(_0x452b('0x1'));var path=require(_0x452b('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x452b('0x3')]();var fs_extra=require(_0x452b('0x4'));var auth=require(_0x452b('0x5'));var interaction=require(_0x452b('0x6'));var config=require(_0x452b('0x7'));var controller=require(_0x452b('0x8'));router[_0x452b('0x9')]('/',auth['isAuthenticated'](),controller[_0x452b('0xa')]);router['get'](_0x452b('0xb'),auth[_0x452b('0xc')](),controller[_0x452b('0xd')]);router[_0x452b('0x9')](_0x452b('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x452b('0xf')]('/',auth['isAuthenticated'](),interaction[_0x452b('0x10')](_0x452b('0x11'),'whatsappmessage:create'),controller['create']);router[_0x452b('0xf')](_0x452b('0x12'),controller[_0x452b('0x13')]);router[_0x452b('0x14')](_0x452b('0xe'),auth['isAuthenticated'](),controller[_0x452b('0x15')]);router[_0x452b('0x14')](_0x452b('0x16'),auth[_0x452b('0xc')](),controller[_0x452b('0x17')]);router[_0x452b('0x14')](_0x452b('0x18'),auth[_0x452b('0xc')](),controller[_0x452b('0x19')]);router[_0x452b('0x1a')]('/:id',auth[_0x452b('0xc')](),controller[_0x452b('0x1b')]);module['exports']=router;
\ No newline at end of file
index 95461e8..659b9b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09f4=['ENUM','out','STRING','DATE','TEXT','medium','BOOLEAN'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x09f4,0xe4));var _0x409f=function(_0x5c7cfd,_0x36a036){_0x5c7cfd=_0x5c7cfd-0x0;var _0x2cb57c=_0x09f4[_0x5c7cfd];return _0x2cb57c;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0x409f('0x0')](_0x409f('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x409f('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x409f('0x3')]('in',_0x409f('0x4')),'defaultValue':_0x409f('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x409f('0x5')](0xbe)},'phone':{'type':Sequelize[_0x409f('0x5')]},'readAt':{'type':Sequelize[_0x409f('0x6')]},'secret':{'type':Sequelize[_0x409f('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x409f('0x5')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x2809=['sequelize','exports','TEXT','ENUM','out','STRING','DATE','BOOLEAN'];(function(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0x2809,0x190));var _0x9280=function(_0x487ab4,_0x1e24e8){_0x487ab4=_0x487ab4-0x0;var _0x3bef77=_0x2809[_0x487ab4];return _0x3bef77;};'use strict';var Sequelize=require(_0x9280('0x0'));module[_0x9280('0x1')]={'body':{'type':Sequelize[_0x9280('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x9280('0x3')]('in',_0x9280('0x4')),'defaultValue':_0x9280('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x9280('0x5')](0xbe)},'phone':{'type':Sequelize[_0x9280('0x5')]},'readAt':{'type':Sequelize[_0x9280('0x6')]},'secret':{'type':Sequelize[_0x9280('0x7')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x9280('0x5')]},'providerResponse':{'type':Sequelize[_0x9280('0x2')]}};
\ No newline at end of file
index ca958ab..f4f88f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x421f=['index','map','WhatsappMessage','rawAttributes','fieldName','type','keys','filters','intersection','model','attributes','query','fields','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','length','find','create','body','destroy','describe','whatsapp-interactions','accept','whatsapp','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','WhatsappInteraction','WhatsappInteractionId','isNil','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','SELECT','contact','User','fullname','email','internal','interface','channel','event','EventManager','acceptmessage','get','role','RejectMessage','rejectMessage','ContactId','format','SIP/%s','rejectmessage','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','inspect','MessageSid','messageId','read','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','jayson/promise','client','http','request','info','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappMessage,\x20%s,\x20%s','message','result','catch','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','sendStatus','stack','name'];(function(_0x13fd0a,_0x2406b6){var _0x5ef729=function(_0x33308a){while(--_0x33308a){_0x13fd0a['push'](_0x13fd0a['shift']());}};_0x5ef729(++_0x2406b6);}(_0x421f,0x160));var _0xf421=function(_0x1dc2b4,_0x573a04){_0x1dc2b4=_0x1dc2b4-0x0;var _0x18af92=_0x421f[_0x1dc2b4];return _0x18af92;};'use strict';var emlformat=require(_0xf421('0x0'));var rimraf=require(_0xf421('0x1'));var zipdir=require(_0xf421('0x2'));var jsonpatch=require(_0xf421('0x3'));var rp=require(_0xf421('0x4'));var moment=require(_0xf421('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xf421('0x6'));var sox=require(_0xf421('0x7'));var csv=require(_0xf421('0x8'));var ejs=require(_0xf421('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf421('0xa'));var squel=require(_0xf421('0xb'));var crypto=require(_0xf421('0xc'));var jsforce=require(_0xf421('0xd'));var deskjs=require(_0xf421('0xe'));var toCsv=require(_0xf421('0x8'));var querystring=require(_0xf421('0xf'));var Papa=require(_0xf421('0x10'));var Redis=require(_0xf421('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xf421('0x12'));var as=require(_0xf421('0x13'));var hardwareService=require(_0xf421('0x14'));var logger=require(_0xf421('0x15'))(_0xf421('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xf421('0x17'));var db=require(_0xf421('0x18'))['db'];config['redis']=_[_0xf421('0x19')](config[_0xf421('0x1a')],{'host':_0xf421('0x1b'),'port':0x18eb});var socket=require(_0xf421('0x1c'))(new Redis(config[_0xf421('0x1a')]));require('./whatsappMessage.socket')[_0xf421('0x1d')](socket);var jayson=require(_0xf421('0x1e'));var client=jayson[_0xf421('0x1f')][_0xf421('0x20')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1e784f,_0xb6aad8,_0x3f26e4,_0x4ff565){return new BPromise(function(_0x48b985,_0x13c3ce){var _0x47bf6b=_0x4ff565||client;return _0x47bf6b[_0xf421('0x21')](_0x1e784f,_0x3f26e4)['then'](function(_0x1d6a39){logger[_0xf421('0x22')]('WhatsappMessage,\x20%s,\x20%s',_0xb6aad8,_0xf421('0x23'));logger['debug'](_0xf421('0x24'),_0xb6aad8,_0xf421('0x23'),JSON[_0xf421('0x25')](_0x1d6a39));if(_0x1d6a39[_0xf421('0x26')]){if(_0x1d6a39['error'][_0xf421('0x27')]===0x1f4){logger[_0xf421('0x26')](_0xf421('0x28'),_0xb6aad8,_0x1d6a39[_0xf421('0x26')]['message']);return _0x13c3ce(_0x1d6a39[_0xf421('0x26')]['message']);}logger['error'](_0xf421('0x28'),_0xb6aad8,_0x1d6a39['error']['message']);return _0x48b985(_0x1d6a39[_0xf421('0x26')][_0xf421('0x29')]);}else{logger['info'](_0xf421('0x28'),_0xb6aad8,_0xf421('0x23'));_0x48b985(_0x1d6a39[_0xf421('0x2a')]['message']);}})[_0xf421('0x2b')](function(_0x52fa35){logger[_0xf421('0x26')](_0xf421('0x28'),_0xb6aad8,_0x52fa35);_0x13c3ce(_0x52fa35);});});}function respondWithStatusCode(_0x2f7efc,_0x2e96d3){_0x2e96d3=_0x2e96d3||0xcc;return function(_0x5240b6){if(_0x5240b6){return _0x2f7efc['sendStatus'](_0x2e96d3);}return _0x2f7efc[_0xf421('0x2c')](_0x2e96d3)[_0xf421('0x2d')]();};}function respondWithResult(_0x1ce3e3,_0x2dcccf){_0x2dcccf=_0x2dcccf||0xc8;return function(_0x393ef3){if(_0x393ef3){return _0x1ce3e3[_0xf421('0x2c')](_0x2dcccf)[_0xf421('0x2e')](_0x393ef3);}};}function respondWithFilteredResult(_0x21134f,_0x47f060){return function(_0x307d7f){if(_0x307d7f){var _0x27ae3a=typeof _0x47f060[_0xf421('0x2f')]===_0xf421('0x30')&&typeof _0x47f060[_0xf421('0x31')]===_0xf421('0x30');var _0x50a03f=_0x307d7f[_0xf421('0x32')];var _0x38b1ea=_0x27ae3a?0x0:_0x47f060['offset'];var _0x3fcab8=_0x27ae3a?_0x307d7f['count']:_0x47f060[_0xf421('0x2f')]+_0x47f060[_0xf421('0x31')];var _0x34e758;if(_0x3fcab8>=_0x50a03f){_0x3fcab8=_0x50a03f;_0x34e758=0xc8;}else{_0x34e758=0xce;}_0x21134f[_0xf421('0x2c')](_0x34e758);return _0x21134f['set'](_0xf421('0x33'),_0x38b1ea+'-'+_0x3fcab8+'/'+_0x50a03f)['json'](_0x307d7f);}return null;};}function patchUpdates(_0x421b35){return function(_0x55ae3c){try{jsonpatch[_0xf421('0x34')](_0x55ae3c,_0x421b35,!![]);}catch(_0x40bed3){return BPromise[_0xf421('0x35')](_0x40bed3);}return _0x55ae3c['save']();};}function saveUpdates(_0x567c25,_0x5658c1){return function(_0xa7273c){if(_0xa7273c){return _0xa7273c[_0xf421('0x36')](_0x567c25)[_0xf421('0x37')](function(_0x4791cc){return _0x4791cc;});}return null;};}function removeEntity(_0x2d4a22,_0x553c3e){return function(_0x55fb77){if(_0x55fb77){return _0x55fb77['destroy']()[_0xf421('0x37')](function(){_0x2d4a22[_0xf421('0x2c')](0xcc)[_0xf421('0x2d')]();});}};}function handleEntityNotFound(_0x438f5b,_0x626f77){return function(_0x4efcb9){if(!_0x4efcb9){_0x438f5b[_0xf421('0x38')](0x194);}return _0x4efcb9;};}function handleError(_0x1170c8,_0x295422){_0x295422=_0x295422||0x1f4;return function(_0x12a118){logger['error'](_0x12a118[_0xf421('0x39')]);if(_0x12a118[_0xf421('0x3a')]){delete _0x12a118[_0xf421('0x3a')];}_0x1170c8[_0xf421('0x2c')](_0x295422)['send'](_0x12a118);};}exports[_0xf421('0x3b')]=function(_0x82d3e1,_0x23b846){var _0x4f51c3={},_0xece7e3={},_0x91c3f4={'count':0x0,'rows':[]};var _0x307d51=_[_0xf421('0x3c')](db[_0xf421('0x3d')][_0xf421('0x3e')],function(_0x576f0d){return{'name':_0x576f0d[_0xf421('0x3f')],'type':_0x576f0d[_0xf421('0x40')]['key']};});_0xece7e3['model']=_[_0xf421('0x3c')](_0x307d51,_0xf421('0x3a'));_0xece7e3['query']=_[_0xf421('0x41')](_0x82d3e1['query']);_0xece7e3[_0xf421('0x42')]=_[_0xf421('0x43')](_0xece7e3[_0xf421('0x44')],_0xece7e3['query']);_0x4f51c3[_0xf421('0x45')]=_['intersection'](_0xece7e3['model'],qs['fields'](_0x82d3e1[_0xf421('0x46')][_0xf421('0x47')]));_0x4f51c3['attributes']=_0x4f51c3[_0xf421('0x45')]['length']?_0x4f51c3[_0xf421('0x45')]:_0xece7e3[_0xf421('0x44')];if(!_0x82d3e1[_0xf421('0x46')][_0xf421('0x48')]('nolimit')){_0x4f51c3[_0xf421('0x31')]=qs['limit'](_0x82d3e1[_0xf421('0x46')]['limit']);_0x4f51c3[_0xf421('0x2f')]=qs['offset'](_0x82d3e1[_0xf421('0x46')][_0xf421('0x2f')]);}_0x4f51c3['order']=qs[_0xf421('0x49')](_0x82d3e1['query'][_0xf421('0x49')]);_0x4f51c3[_0xf421('0x4a')]=qs[_0xf421('0x42')](_[_0xf421('0x4b')](_0x82d3e1[_0xf421('0x46')],_0xece7e3[_0xf421('0x42')]),_0x307d51);if(_0x82d3e1[_0xf421('0x46')][_0xf421('0x4c')]){_0x4f51c3[_0xf421('0x4a')]=_[_0xf421('0x4d')](_0x4f51c3['where'],{'$or':_['map'](_0x307d51,function(_0x31b0d9){if(_0x31b0d9[_0xf421('0x40')]!==_0xf421('0x4e')){var _0x5dde8b={};_0x5dde8b[_0x31b0d9[_0xf421('0x3a')]]={'$like':'%'+_0x82d3e1['query'][_0xf421('0x4c')]+'%'};return _0x5dde8b;}})});}_0x4f51c3=_[_0xf421('0x4d')]({},_0x4f51c3,_0x82d3e1[_0xf421('0x4f')]);var _0x39a0b3={'where':_0x4f51c3[_0xf421('0x4a')]};return db[_0xf421('0x3d')]['count'](_0x39a0b3)[_0xf421('0x37')](function(_0x6d70c4){_0x91c3f4['count']=_0x6d70c4;if(_0x82d3e1[_0xf421('0x46')][_0xf421('0x50')]){_0x4f51c3['include']=[{'all':!![]}];}return db[_0xf421('0x3d')][_0xf421('0x51')](_0x4f51c3);})['then'](function(_0x3e536e){_0x91c3f4[_0xf421('0x52')]=_0x3e536e;return _0x91c3f4;})[_0xf421('0x37')](respondWithFilteredResult(_0x23b846,_0x4f51c3))[_0xf421('0x2b')](handleError(_0x23b846,null));};exports[_0xf421('0x53')]=function(_0x584cfc,_0x5040d1){var _0x566b72={'raw':!![],'where':{'id':_0x584cfc[_0xf421('0x54')]['id']}},_0x6b42ae={};_0x6b42ae[_0xf421('0x44')]=_['keys'](db['WhatsappMessage'][_0xf421('0x3e')]);_0x6b42ae[_0xf421('0x46')]=_[_0xf421('0x41')](_0x584cfc[_0xf421('0x46')]);_0x6b42ae['filters']=_[_0xf421('0x43')](_0x6b42ae[_0xf421('0x44')],_0x6b42ae['query']);_0x566b72[_0xf421('0x45')]=_['intersection'](_0x6b42ae[_0xf421('0x44')],qs[_0xf421('0x47')](_0x584cfc[_0xf421('0x46')][_0xf421('0x47')]));_0x566b72['attributes']=_0x566b72[_0xf421('0x45')][_0xf421('0x55')]?_0x566b72[_0xf421('0x45')]:_0x6b42ae['model'];if(_0x584cfc[_0xf421('0x46')]['includeAll']){_0x566b72['include']=[{'all':!![]}];}_0x566b72=_[_0xf421('0x4d')]({},_0x566b72,_0x584cfc[_0xf421('0x4f')]);return db[_0xf421('0x3d')][_0xf421('0x56')](_0x566b72)[_0xf421('0x37')](handleEntityNotFound(_0x5040d1,null))[_0xf421('0x37')](respondWithResult(_0x5040d1,null))['catch'](handleError(_0x5040d1,null));};exports[_0xf421('0x57')]=function(_0xdb8afc,_0x41487f){return db[_0xf421('0x3d')][_0xf421('0x57')](_0xdb8afc[_0xf421('0x58')],{})[_0xf421('0x37')](respondWithResult(_0x41487f,0xc9))[_0xf421('0x2b')](handleError(_0x41487f,null));};exports[_0xf421('0x36')]=function(_0x5adabd,_0x5c31cf){if(_0x5adabd[_0xf421('0x58')]['id']){delete _0x5adabd[_0xf421('0x58')]['id'];}return db[_0xf421('0x3d')][_0xf421('0x56')]({'where':{'id':_0x5adabd[_0xf421('0x54')]['id']}})[_0xf421('0x37')](handleEntityNotFound(_0x5c31cf,null))['then'](saveUpdates(_0x5adabd[_0xf421('0x58')],null))['then'](respondWithResult(_0x5c31cf,null))[_0xf421('0x2b')](handleError(_0x5c31cf,null));};exports[_0xf421('0x59')]=function(_0x36de2f,_0x13ac9f){return db[_0xf421('0x3d')][_0xf421('0x56')]({'where':{'id':_0x36de2f['params']['id']}})[_0xf421('0x37')](handleEntityNotFound(_0x13ac9f,null))[_0xf421('0x37')](removeEntity(_0x13ac9f,null))[_0xf421('0x2b')](handleError(_0x13ac9f,null));};exports[_0xf421('0x5a')]=function(_0x5175aa,_0x2bce6c){return db['WhatsappMessage'][_0xf421('0x5a')]()[_0xf421('0x37')](respondWithResult(_0x2bce6c,null))[_0xf421('0x2b')](handleError(_0x2bce6c,null));};var interaction_log=require('../../config/logger')(_0xf421('0x5b'));exports[_0xf421('0x5c')]=function(_0x69696f,_0x3c2bbe,_0x351c19){var _0x182dbc={'agent':{},'channel':_0xf421('0x5d')};if(_0x69696f[_0xf421('0x58')]['id']){delete _0x69696f[_0xf421('0x58')]['id'];}_0x69696f[_0xf421('0x58')]['read']=!![];_0x69696f['body'][_0xf421('0x5e')]=moment()['format'](_0xf421('0x5f'));_0x69696f[_0xf421('0x58')][_0xf421('0x60')]=_0x69696f[_0xf421('0x58')][_0xf421('0x60')]||_0x69696f['user']['id'];_0x182dbc[_0xf421('0x61')]['id']=_0x69696f['body']['UserId'];return db[_0xf421('0x3d')][_0xf421('0x56')]({'where':{'id':_0x69696f['params']['id'],'UserId':null}})[_0xf421('0x37')](handleEntityNotFound(_0x3c2bbe,null))['then'](saveUpdates(_0x69696f[_0xf421('0x58')],null))[_0xf421('0x37')](function(_0x2fe5c6){if(_0x2fe5c6){_0x182dbc['message']=_0x2fe5c6['get']({'plain':!![]});return db[_0xf421('0x62')]['find']({'where':{'id':_0x2fe5c6[_0xf421('0x63')]}});}return null;})[_0xf421('0x37')](handleEntityNotFound(_0x3c2bbe,null))['then'](function(_0x2f869e){if(_0x2f869e){return _0x2f869e['update']({'UserId':_0x69696f[_0xf421('0x58')][_0xf421('0x60')],'read1stAt':_[_0xf421('0x64')](_0x2f869e[_0xf421('0x65')])?moment()['format'](_0xf421('0x5f')):undefined});}return null;})[_0xf421('0x37')](function(_0x58e3d1){if(_0x58e3d1){_0x182dbc[_0xf421('0x66')]=_0x58e3d1['get']({'plain':!![]});interaction_log['info'](_0xf421('0x67'),_0x69696f[_0xf421('0x68')]['id'],_0x69696f['user'][_0xf421('0x3a')],_0x69696f['user']['role'],_0x182dbc['interaction']['id'],_0x69696f[_0xf421('0x58')]?JSON['stringify'](_0x69696f['body']):_0xf421('0x69'));return respondWithRpcPromise(_0xf421('0x6a'),_0xf421('0x6b'),_0x182dbc);}return null;})['then'](function(_0xd5e555){var _0x5a7537=_0xf421('0x6c')+_0xd5e555[_0xf421('0x29')]['ContactId'];return db[_0xf421('0x6d')][_0xf421('0x46')](_0x5a7537,{'type':db[_0xf421('0x6e')]['QueryTypes'][_0xf421('0x6f')],'raw':!![]})[_0xf421('0x37')](function(_0x1ac77b){return _0x1ac77b;});})[_0xf421('0x37')](function(_0x36adfe){if(_0x36adfe){_0x182dbc['message'][_0xf421('0x70')]=_0x36adfe[0x0];if(!_0x69696f[_0xf421('0x58')][_0xf421('0x60')])return;return db[_0xf421('0x71')]['find']({'where':{'id':_0x69696f[_0xf421('0x58')]['UserId'],'role':_0xf421('0x61')},'attributes':['id',_0xf421('0x3a'),_0xf421('0x72'),_0xf421('0x73'),_0xf421('0x74')],'raw':!![]});}return null;})[_0xf421('0x37')](function(_0x4a80f3){if(!_0x4a80f3)return null;_0x182dbc['message'][_0xf421('0x61')]=_0x4a80f3;return _0x182dbc;})[_0xf421('0x37')](function(_0x4c3bbf){if(_0x4c3bbf){if(_0x69696f[_0xf421('0x58')]['manual']){_0x182dbc[_0xf421('0x29')][_0xf421('0x75')]=util['format']('SIP/%s',_0x69696f[_0xf421('0x68')]['name']);_0x182dbc['message'][_0xf421('0x76')]=_0x182dbc[_0xf421('0x76')];_0x182dbc[_0xf421('0x29')][_0xf421('0x77')]=_0xf421('0x5c');return respondWithRpcPromise(_0xf421('0x78'),_0xf421('0x78'),{'event':_0xf421('0x79'),'message':_0x182dbc[_0xf421('0x29')]},client9002)[_0xf421('0x37')](function(){return _0x182dbc;});}return _0x182dbc;}return null;})['then'](respondWithResult(_0x3c2bbe,null))[_0xf421('0x2b')](handleError(_0x3c2bbe,null));};var interaction_log=require(_0xf421('0x15'))(_0xf421('0x5b'));exports[_0xf421('0x35')]=function(_0x17bb9c,_0x979623,_0x23684b){var _0x1101ec={'agent':{},'channel':_0xf421('0x5d')};if(_0x17bb9c['body']['id']){delete _0x17bb9c[_0xf421('0x58')]['id'];}_0x17bb9c[_0xf421('0x58')][_0xf421('0x60')]=_0x17bb9c['body'][_0xf421('0x60')]||_0x17bb9c['user']['id'];_0x1101ec['agent']['id']=_0x17bb9c['body']['UserId'];return db[_0xf421('0x3d')][_0xf421('0x56')]({'where':{'id':_0x17bb9c[_0xf421('0x54')]['id'],'UserId':null}})[_0xf421('0x37')](handleEntityNotFound(_0x979623,null))[_0xf421('0x37')](function(_0x1f8561){if(_0x1f8561){_0x1101ec[_0xf421('0x29')]=_0x1f8561[_0xf421('0x7a')]({'plain':!![]});return db[_0xf421('0x62')][_0xf421('0x56')]({'where':{'id':_0x1f8561['WhatsappInteractionId']}});}return null;})[_0xf421('0x37')](handleEntityNotFound(_0x979623,null))['then'](function(_0x5c01ac){if(_0x5c01ac){_0x1101ec[_0xf421('0x66')]=_0x5c01ac[_0xf421('0x7a')]({'plain':!![]});interaction_log[_0xf421('0x22')]('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x17bb9c[_0xf421('0x68')]['id'],_0x17bb9c['user'][_0xf421('0x3a')],_0x17bb9c[_0xf421('0x68')][_0xf421('0x7b')],_0x1101ec['interaction']['id'],_0x17bb9c[_0xf421('0x58')]?JSON[_0xf421('0x25')](_0x17bb9c['body']):'null');return respondWithRpcPromise(_0xf421('0x7c'),_0xf421('0x7d'),_0x1101ec);}return null;})[_0xf421('0x37')](function(_0x448ebc){var _0x2a3153=_0xf421('0x6c')+_0x448ebc[_0xf421('0x29')][_0xf421('0x7e')];return db[_0xf421('0x6d')][_0xf421('0x46')](_0x2a3153,{'type':db[_0xf421('0x6e')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x4defcd){return _0x4defcd;});})['then'](function(_0x324134){if(_0x324134){_0x1101ec['message'][_0xf421('0x70')]=_0x324134[0x0];if(!_0x17bb9c[_0xf421('0x58')][_0xf421('0x60')])return;return db['User'][_0xf421('0x56')]({'where':{'id':_0x17bb9c['body'][_0xf421('0x60')],'role':_0xf421('0x61')},'attributes':['id',_0xf421('0x3a'),_0xf421('0x72'),_0xf421('0x73'),'internal'],'raw':!![]});}return null;})[_0xf421('0x37')](function(_0x3dc7b4){if(!_0x3dc7b4)return null;_0x1101ec[_0xf421('0x29')]['agent']=_0x3dc7b4;return _0x1101ec;})[_0xf421('0x37')](function(_0x3b4b46){if(_0x3b4b46){_0x3b4b46[_0xf421('0x29')][_0xf421('0x75')]=util[_0xf421('0x7f')](_0xf421('0x80'),_0x17bb9c[_0xf421('0x68')][_0xf421('0x3a')]);_0x3b4b46[_0xf421('0x29')]['channel']=_0x1101ec[_0xf421('0x76')];_0x3b4b46[_0xf421('0x29')]['event']='reject';respondWithRpcPromise('EventManager',_0xf421('0x78'),{'event':_0xf421('0x81'),'message':_0x3b4b46[_0xf421('0x29')]},client9002);return _0x1101ec;}return null;})[_0xf421('0x37')](respondWithResult(_0x979623,null))[_0xf421('0x2b')](handleError(_0x979623,null));};exports[_0xf421('0x2c')]=function(_0x580872,_0x28aef3,_0x1b2fad){if(_0x580872[_0xf421('0x58')]['id']){delete _0x580872['body']['id'];}var _0x31b1d0;return db[_0xf421('0x3d')][_0xf421('0x56')]({'where':{'id':_0x580872[_0xf421('0x54')]['id']}})['then'](handleEntityNotFound(_0x28aef3,null))[_0xf421('0x37')](function(_0x48889a){if(_0x48889a){_0x31b1d0=_0x48889a;return db['WhatsappAccount']['find']({'where':{'id':_0x48889a[_0xf421('0x82')]}});}})['then'](handleEntityNotFound(_0x28aef3,null))['then'](function(_0x22b37a){if(_0x22b37a){logger['debug'](_0xf421('0x83'),'status','received\x20delivery\x20report\x20from',_0x22b37a[_0xf421('0x40')],util[_0xf421('0x84')](_0x580872['body'],{'showHidden':![],'depth':null}));switch(_0x22b37a[_0xf421('0x40')]){case'twilio':if(_0x580872[_0xf421('0x58')][_0xf421('0x85')]&&_0x580872['body']['MessageSid']===_0x31b1d0[_0xf421('0x86')]&&_0x580872[_0xf421('0x58')]['MessageStatus']&&_0x580872['body']['MessageStatus']===_0xf421('0x87')){return _0x31b1d0[_0xf421('0x36')]({'read':!![]});}else{logger['error'](_0xf421('0x88'),'status','twilio',util[_0xf421('0x84')](_0x580872[_0xf421('0x58')],{'showHidden':![],'depth':null}));}break;}return _0x31b1d0;}})['then'](respondWithResult(_0x28aef3,null))[_0xf421('0x2b')](handleError(_0x28aef3,null));};
\ No newline at end of file
+var _0x2367=['desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','client','http','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','json','undefined','count','offset','limit','Content-Range','apply','reject','then','status','end','sendStatus','stack','name','send','index','map','WhatsappMessage','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','sort','pick','where','merge','type','VIRTUAL','options','include','findAll','show','params','length','includeAll','find','create','update','body','describe','../../config/logger','whatsapp-interactions','accept','whatsapp','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteraction','isNil','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','email','internal','manual','channel','event','EventManager','acceptmessage','WhatsappInteractionId','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT','User','SIP/%s','rejectmessage','WhatsappAccount','WhatsappAccountId','debug','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','MessageSid','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','twilio','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce'];(function(_0x3b1931,_0x4d1616){var _0x44e6a7=function(_0x5bfc33){while(--_0x5bfc33){_0x3b1931['push'](_0x3b1931['shift']());}};_0x44e6a7(++_0x4d1616);}(_0x2367,0x7f));var _0x7236=function(_0x3bd8fb,_0x216c51){_0x3bd8fb=_0x3bd8fb-0x0;var _0x1393ea=_0x2367[_0x3bd8fb];return _0x1393ea;};'use strict';var emlformat=require(_0x7236('0x0'));var rimraf=require(_0x7236('0x1'));var zipdir=require(_0x7236('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7236('0x3'));var moment=require(_0x7236('0x4'));var BPromise=require(_0x7236('0x5'));var Mustache=require(_0x7236('0x6'));var util=require(_0x7236('0x7'));var path=require(_0x7236('0x8'));var sox=require(_0x7236('0x9'));var csv=require(_0x7236('0xa'));var ejs=require(_0x7236('0xb'));var fs=require('fs');var fs_extra=require(_0x7236('0xc'));var _=require('lodash');var squel=require(_0x7236('0xd'));var crypto=require(_0x7236('0xe'));var jsforce=require(_0x7236('0xf'));var deskjs=require(_0x7236('0x10'));var toCsv=require(_0x7236('0xa'));var querystring=require(_0x7236('0x11'));var Papa=require('papaparse');var Redis=require(_0x7236('0x12'));var authService=require(_0x7236('0x13'));var qs=require(_0x7236('0x14'));var as=require(_0x7236('0x15'));var hardwareService=require(_0x7236('0x16'));var logger=require('../../config/logger')(_0x7236('0x17'));var utils=require('../../config/utils');var config=require(_0x7236('0x18'));var licenseUtil=require(_0x7236('0x19'));var db=require(_0x7236('0x1a'))['db'];config[_0x7236('0x1b')]=_[_0x7236('0x1c')](config['redis'],{'host':_0x7236('0x1d'),'port':0x18eb});var socket=require(_0x7236('0x1e'))(new Redis(config[_0x7236('0x1b')]));require(_0x7236('0x1f'))[_0x7236('0x20')](socket);var jayson=require('jayson/promise');var client=jayson[_0x7236('0x21')][_0x7236('0x22')]({'port':0x232c});var client9002=jayson[_0x7236('0x21')][_0x7236('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x1f7f0e,_0x3740e2,_0x234155,_0x130b81){return new BPromise(function(_0x1b8d11,_0x372a3c){var _0x259093=_0x130b81||client;return _0x259093[_0x7236('0x23')](_0x1f7f0e,_0x234155)['then'](function(_0xc728f3){logger[_0x7236('0x24')](_0x7236('0x25'),_0x3740e2,_0x7236('0x26'));logger['debug'](_0x7236('0x27'),_0x3740e2,_0x7236('0x26'),JSON[_0x7236('0x28')](_0xc728f3));if(_0xc728f3['error']){if(_0xc728f3[_0x7236('0x29')][_0x7236('0x2a')]===0x1f4){logger[_0x7236('0x29')]('WhatsappMessage,\x20%s,\x20%s',_0x3740e2,_0xc728f3['error'][_0x7236('0x2b')]);return _0x372a3c(_0xc728f3[_0x7236('0x29')][_0x7236('0x2b')]);}logger[_0x7236('0x29')](_0x7236('0x25'),_0x3740e2,_0xc728f3['error'][_0x7236('0x2b')]);return _0x1b8d11(_0xc728f3['error'][_0x7236('0x2b')]);}else{logger['info'](_0x7236('0x25'),_0x3740e2,_0x7236('0x26'));_0x1b8d11(_0xc728f3[_0x7236('0x2c')][_0x7236('0x2b')]);}})[_0x7236('0x2d')](function(_0x20d35f){logger[_0x7236('0x29')]('WhatsappMessage,\x20%s,\x20%s',_0x3740e2,_0x20d35f);_0x372a3c(_0x20d35f);});});}function respondWithStatusCode(_0xb593fd,_0x478b52){_0x478b52=_0x478b52||0xcc;return function(_0x14dfb1){if(_0x14dfb1){return _0xb593fd['sendStatus'](_0x478b52);}return _0xb593fd['status'](_0x478b52)['end']();};}function respondWithResult(_0x162362,_0x21393f){_0x21393f=_0x21393f||0xc8;return function(_0x4de702){if(_0x4de702){return _0x162362['status'](_0x21393f)[_0x7236('0x2e')](_0x4de702);}};}function respondWithFilteredResult(_0x3b8ebe,_0x1157c9){return function(_0x118231){if(_0x118231){var _0x242b22=typeof _0x1157c9['offset']==='undefined'&&typeof _0x1157c9['limit']===_0x7236('0x2f');var _0x23ed66=_0x118231[_0x7236('0x30')];var _0x7a134a=_0x242b22?0x0:_0x1157c9[_0x7236('0x31')];var _0x1160c2=_0x242b22?_0x118231[_0x7236('0x30')]:_0x1157c9['offset']+_0x1157c9[_0x7236('0x32')];var _0x1c4b5f;if(_0x1160c2>=_0x23ed66){_0x1160c2=_0x23ed66;_0x1c4b5f=0xc8;}else{_0x1c4b5f=0xce;}_0x3b8ebe['status'](_0x1c4b5f);return _0x3b8ebe['set'](_0x7236('0x33'),_0x7a134a+'-'+_0x1160c2+'/'+_0x23ed66)['json'](_0x118231);}return null;};}function patchUpdates(_0x12c918){return function(_0x437a0a){try{jsonpatch[_0x7236('0x34')](_0x437a0a,_0x12c918,!![]);}catch(_0xfd4ff2){return BPromise[_0x7236('0x35')](_0xfd4ff2);}return _0x437a0a['save']();};}function saveUpdates(_0x1e728d,_0x2be4e7){return function(_0x41ac33){if(_0x41ac33){return _0x41ac33['update'](_0x1e728d)[_0x7236('0x36')](function(_0x6c9fd5){return _0x6c9fd5;});}return null;};}function removeEntity(_0x100734,_0x2215e5){return function(_0x5e33e6){if(_0x5e33e6){return _0x5e33e6['destroy']()[_0x7236('0x36')](function(){_0x100734[_0x7236('0x37')](0xcc)[_0x7236('0x38')]();});}};}function handleEntityNotFound(_0x524803,_0x469e88){return function(_0x5af3d0){if(!_0x5af3d0){_0x524803[_0x7236('0x39')](0x194);}return _0x5af3d0;};}function handleError(_0x38ed4d,_0x5d44a7){_0x5d44a7=_0x5d44a7||0x1f4;return function(_0x11f8a2){logger[_0x7236('0x29')](_0x11f8a2[_0x7236('0x3a')]);if(_0x11f8a2[_0x7236('0x3b')]){delete _0x11f8a2[_0x7236('0x3b')];}_0x38ed4d['status'](_0x5d44a7)[_0x7236('0x3c')](_0x11f8a2);};}exports[_0x7236('0x3d')]=function(_0x5dbf57,_0x50ddee){var _0x14d7e1={},_0x111164={},_0x1087e3={'count':0x0,'rows':[]};var _0xceb03c=_[_0x7236('0x3e')](db[_0x7236('0x3f')][_0x7236('0x40')],function(_0x3f9cc5){return{'name':_0x3f9cc5[_0x7236('0x41')],'type':_0x3f9cc5['type'][_0x7236('0x42')]};});_0x111164[_0x7236('0x43')]=_[_0x7236('0x3e')](_0xceb03c,_0x7236('0x3b'));_0x111164[_0x7236('0x44')]=_[_0x7236('0x45')](_0x5dbf57[_0x7236('0x44')]);_0x111164[_0x7236('0x46')]=_['intersection'](_0x111164[_0x7236('0x43')],_0x111164[_0x7236('0x44')]);_0x14d7e1[_0x7236('0x47')]=_[_0x7236('0x48')](_0x111164[_0x7236('0x43')],qs['fields'](_0x5dbf57[_0x7236('0x44')][_0x7236('0x49')]));_0x14d7e1[_0x7236('0x47')]=_0x14d7e1[_0x7236('0x47')]['length']?_0x14d7e1['attributes']:_0x111164['model'];if(!_0x5dbf57[_0x7236('0x44')][_0x7236('0x4a')]('nolimit')){_0x14d7e1['limit']=qs[_0x7236('0x32')](_0x5dbf57['query'][_0x7236('0x32')]);_0x14d7e1[_0x7236('0x31')]=qs[_0x7236('0x31')](_0x5dbf57[_0x7236('0x44')]['offset']);}_0x14d7e1['order']=qs[_0x7236('0x4b')](_0x5dbf57[_0x7236('0x44')][_0x7236('0x4b')]);_0x14d7e1['where']=qs[_0x7236('0x46')](_[_0x7236('0x4c')](_0x5dbf57[_0x7236('0x44')],_0x111164[_0x7236('0x46')]),_0xceb03c);if(_0x5dbf57[_0x7236('0x44')]['filter']){_0x14d7e1[_0x7236('0x4d')]=_[_0x7236('0x4e')](_0x14d7e1[_0x7236('0x4d')],{'$or':_[_0x7236('0x3e')](_0xceb03c,function(_0x4601b9){if(_0x4601b9[_0x7236('0x4f')]!==_0x7236('0x50')){var _0x51acc3={};_0x51acc3[_0x4601b9[_0x7236('0x3b')]]={'$like':'%'+_0x5dbf57['query']['filter']+'%'};return _0x51acc3;}})});}_0x14d7e1=_[_0x7236('0x4e')]({},_0x14d7e1,_0x5dbf57[_0x7236('0x51')]);var _0x24a7cf={'where':_0x14d7e1[_0x7236('0x4d')]};return db[_0x7236('0x3f')][_0x7236('0x30')](_0x24a7cf)['then'](function(_0x4f1f42){_0x1087e3['count']=_0x4f1f42;if(_0x5dbf57[_0x7236('0x44')]['includeAll']){_0x14d7e1[_0x7236('0x52')]=[{'all':!![]}];}return db[_0x7236('0x3f')][_0x7236('0x53')](_0x14d7e1);})['then'](function(_0x5b50df){_0x1087e3['rows']=_0x5b50df;return _0x1087e3;})[_0x7236('0x36')](respondWithFilteredResult(_0x50ddee,_0x14d7e1))[_0x7236('0x2d')](handleError(_0x50ddee,null));};exports[_0x7236('0x54')]=function(_0x2ac7bd,_0x335258){var _0x34b3c2={'raw':!![],'where':{'id':_0x2ac7bd[_0x7236('0x55')]['id']}},_0x4a5b9e={};_0x4a5b9e[_0x7236('0x43')]=_[_0x7236('0x45')](db[_0x7236('0x3f')][_0x7236('0x40')]);_0x4a5b9e[_0x7236('0x44')]=_[_0x7236('0x45')](_0x2ac7bd['query']);_0x4a5b9e[_0x7236('0x46')]=_[_0x7236('0x48')](_0x4a5b9e[_0x7236('0x43')],_0x4a5b9e[_0x7236('0x44')]);_0x34b3c2['attributes']=_[_0x7236('0x48')](_0x4a5b9e[_0x7236('0x43')],qs[_0x7236('0x49')](_0x2ac7bd['query'][_0x7236('0x49')]));_0x34b3c2['attributes']=_0x34b3c2[_0x7236('0x47')][_0x7236('0x56')]?_0x34b3c2[_0x7236('0x47')]:_0x4a5b9e[_0x7236('0x43')];if(_0x2ac7bd['query'][_0x7236('0x57')]){_0x34b3c2[_0x7236('0x52')]=[{'all':!![]}];}_0x34b3c2=_[_0x7236('0x4e')]({},_0x34b3c2,_0x2ac7bd[_0x7236('0x51')]);return db[_0x7236('0x3f')][_0x7236('0x58')](_0x34b3c2)[_0x7236('0x36')](handleEntityNotFound(_0x335258,null))[_0x7236('0x36')](respondWithResult(_0x335258,null))[_0x7236('0x2d')](handleError(_0x335258,null));};exports[_0x7236('0x59')]=function(_0x45edce,_0x259c0d){return db[_0x7236('0x3f')][_0x7236('0x59')](_0x45edce['body'],{})[_0x7236('0x36')](respondWithResult(_0x259c0d,0xc9))[_0x7236('0x2d')](handleError(_0x259c0d,null));};exports[_0x7236('0x5a')]=function(_0x83fe5c,_0x44f1a3){if(_0x83fe5c[_0x7236('0x5b')]['id']){delete _0x83fe5c[_0x7236('0x5b')]['id'];}return db[_0x7236('0x3f')][_0x7236('0x58')]({'where':{'id':_0x83fe5c['params']['id']}})[_0x7236('0x36')](handleEntityNotFound(_0x44f1a3,null))[_0x7236('0x36')](saveUpdates(_0x83fe5c[_0x7236('0x5b')],null))['then'](respondWithResult(_0x44f1a3,null))[_0x7236('0x2d')](handleError(_0x44f1a3,null));};exports['destroy']=function(_0x28ba10,_0x4d6e2d){return db[_0x7236('0x3f')][_0x7236('0x58')]({'where':{'id':_0x28ba10[_0x7236('0x55')]['id']}})[_0x7236('0x36')](handleEntityNotFound(_0x4d6e2d,null))[_0x7236('0x36')](removeEntity(_0x4d6e2d,null))['catch'](handleError(_0x4d6e2d,null));};exports[_0x7236('0x5c')]=function(_0x4d7172,_0x38f736){return db['WhatsappMessage']['describe']()[_0x7236('0x36')](respondWithResult(_0x38f736,null))[_0x7236('0x2d')](handleError(_0x38f736,null));};var interaction_log=require(_0x7236('0x5d'))(_0x7236('0x5e'));exports[_0x7236('0x5f')]=function(_0x260346,_0x361aef,_0x5e8081){var _0x4471e2={'agent':{},'channel':_0x7236('0x60')};if(_0x260346[_0x7236('0x5b')]['id']){delete _0x260346[_0x7236('0x5b')]['id'];}_0x260346[_0x7236('0x5b')]['read']=!![];_0x260346[_0x7236('0x5b')][_0x7236('0x61')]=moment()[_0x7236('0x62')](_0x7236('0x63'));_0x260346[_0x7236('0x5b')]['UserId']=_0x260346[_0x7236('0x5b')][_0x7236('0x64')]||_0x260346[_0x7236('0x65')]['id'];_0x4471e2[_0x7236('0x66')]['id']=_0x260346[_0x7236('0x5b')][_0x7236('0x64')];return db[_0x7236('0x3f')][_0x7236('0x58')]({'where':{'id':_0x260346[_0x7236('0x55')]['id'],'UserId':null}})[_0x7236('0x36')](handleEntityNotFound(_0x361aef,null))['then'](saveUpdates(_0x260346[_0x7236('0x5b')],null))[_0x7236('0x36')](function(_0x497c26){if(_0x497c26){_0x4471e2[_0x7236('0x2b')]=_0x497c26[_0x7236('0x67')]({'plain':!![]});return db[_0x7236('0x68')][_0x7236('0x58')]({'where':{'id':_0x497c26['WhatsappInteractionId']}});}return null;})[_0x7236('0x36')](handleEntityNotFound(_0x361aef,null))[_0x7236('0x36')](function(_0x147195){if(_0x147195){return _0x147195[_0x7236('0x5a')]({'UserId':_0x260346[_0x7236('0x5b')][_0x7236('0x64')],'read1stAt':_[_0x7236('0x69')](_0x147195['read1stAt'])?moment()[_0x7236('0x62')](_0x7236('0x63')):undefined});}return null;})[_0x7236('0x36')](function(_0x4dbaaf){if(_0x4dbaaf){_0x4471e2[_0x7236('0x6a')]=_0x4dbaaf[_0x7236('0x67')]({'plain':!![]});interaction_log[_0x7236('0x24')](_0x7236('0x6b'),_0x260346['user']['id'],_0x260346[_0x7236('0x65')][_0x7236('0x3b')],_0x260346[_0x7236('0x65')][_0x7236('0x6c')],_0x4471e2[_0x7236('0x6a')]['id'],_0x260346[_0x7236('0x5b')]?JSON[_0x7236('0x28')](_0x260346[_0x7236('0x5b')]):_0x7236('0x6d'));return respondWithRpcPromise(_0x7236('0x6e'),_0x7236('0x6f'),_0x4471e2);}return null;})[_0x7236('0x36')](function(_0x123eef){var _0x235777=_0x7236('0x70')+_0x123eef[_0x7236('0x2b')][_0x7236('0x71')];return db[_0x7236('0x72')]['query'](_0x235777,{'type':db[_0x7236('0x73')][_0x7236('0x74')]['SELECT'],'raw':!![]})['then'](function(_0x256028){return _0x256028;});})[_0x7236('0x36')](function(_0x2531ca){if(_0x2531ca){_0x4471e2[_0x7236('0x2b')][_0x7236('0x75')]=_0x2531ca[0x0];if(!_0x260346['body']['UserId'])return;return db['User'][_0x7236('0x58')]({'where':{'id':_0x260346[_0x7236('0x5b')]['UserId'],'role':_0x7236('0x66')},'attributes':['id',_0x7236('0x3b'),'fullname',_0x7236('0x76'),_0x7236('0x77')],'raw':!![]});}return null;})[_0x7236('0x36')](function(_0x15321a){if(!_0x15321a)return null;_0x4471e2['message'][_0x7236('0x66')]=_0x15321a;return _0x4471e2;})[_0x7236('0x36')](function(_0x4600b4){if(_0x4600b4){if(_0x260346['body'][_0x7236('0x78')]){_0x4471e2[_0x7236('0x2b')]['interface']=util[_0x7236('0x62')]('SIP/%s',_0x260346[_0x7236('0x65')][_0x7236('0x3b')]);_0x4471e2['message']['channel']=_0x4471e2['channel'];_0x4471e2[_0x7236('0x2b')]['motionChannel']=_0x4471e2[_0x7236('0x79')];_0x4471e2[_0x7236('0x2b')][_0x7236('0x7a')]=_0x7236('0x5f');return respondWithRpcPromise('EventManager',_0x7236('0x7b'),{'event':_0x7236('0x7c'),'message':_0x4471e2['message']},client9002)[_0x7236('0x36')](function(){return _0x4471e2;});}return _0x4471e2;}return null;})[_0x7236('0x36')](respondWithResult(_0x361aef,null))['catch'](handleError(_0x361aef,null));};var interaction_log=require('../../config/logger')(_0x7236('0x5e'));exports[_0x7236('0x35')]=function(_0x34e1eb,_0x1a112d,_0xb70c47){var _0x240c3a={'agent':{},'channel':_0x7236('0x60')};if(_0x34e1eb[_0x7236('0x5b')]['id']){delete _0x34e1eb[_0x7236('0x5b')]['id'];}_0x34e1eb[_0x7236('0x5b')][_0x7236('0x64')]=_0x34e1eb[_0x7236('0x5b')][_0x7236('0x64')]||_0x34e1eb[_0x7236('0x65')]['id'];_0x240c3a['agent']['id']=_0x34e1eb['body'][_0x7236('0x64')];return db[_0x7236('0x3f')]['find']({'where':{'id':_0x34e1eb[_0x7236('0x55')]['id'],'UserId':null}})[_0x7236('0x36')](handleEntityNotFound(_0x1a112d,null))['then'](function(_0x571868){if(_0x571868){_0x240c3a[_0x7236('0x2b')]=_0x571868['get']({'plain':!![]});return db[_0x7236('0x68')][_0x7236('0x58')]({'where':{'id':_0x571868[_0x7236('0x7d')]}});}return null;})[_0x7236('0x36')](handleEntityNotFound(_0x1a112d,null))[_0x7236('0x36')](function(_0x30a22b){if(_0x30a22b){_0x240c3a[_0x7236('0x6a')]=_0x30a22b[_0x7236('0x67')]({'plain':!![]});interaction_log[_0x7236('0x24')](_0x7236('0x7e'),_0x34e1eb[_0x7236('0x65')]['id'],_0x34e1eb[_0x7236('0x65')][_0x7236('0x3b')],_0x34e1eb[_0x7236('0x65')][_0x7236('0x6c')],_0x240c3a[_0x7236('0x6a')]['id'],_0x34e1eb[_0x7236('0x5b')]?JSON[_0x7236('0x28')](_0x34e1eb[_0x7236('0x5b')]):_0x7236('0x6d'));return respondWithRpcPromise(_0x7236('0x7f'),_0x7236('0x80'),_0x240c3a);}return null;})[_0x7236('0x36')](function(_0x3048cd){var _0x50f446=_0x7236('0x70')+_0x3048cd[_0x7236('0x2b')][_0x7236('0x71')];return db[_0x7236('0x72')][_0x7236('0x44')](_0x50f446,{'type':db[_0x7236('0x73')][_0x7236('0x74')][_0x7236('0x81')],'raw':!![]})[_0x7236('0x36')](function(_0x1db94f){return _0x1db94f;});})['then'](function(_0x3790e0){if(_0x3790e0){_0x240c3a['message']['contact']=_0x3790e0[0x0];if(!_0x34e1eb[_0x7236('0x5b')][_0x7236('0x64')])return;return db[_0x7236('0x82')][_0x7236('0x58')]({'where':{'id':_0x34e1eb[_0x7236('0x5b')][_0x7236('0x64')],'role':'agent'},'attributes':['id',_0x7236('0x3b'),'fullname',_0x7236('0x76'),'internal'],'raw':!![]});}return null;})['then'](function(_0x377eda){if(!_0x377eda)return null;_0x240c3a[_0x7236('0x2b')][_0x7236('0x66')]=_0x377eda;return _0x240c3a;})[_0x7236('0x36')](function(_0x4e6b07){if(_0x4e6b07){_0x4e6b07[_0x7236('0x2b')]['interface']=util[_0x7236('0x62')](_0x7236('0x83'),_0x34e1eb[_0x7236('0x65')][_0x7236('0x3b')]);_0x4e6b07[_0x7236('0x2b')]['channel']=_0x240c3a[_0x7236('0x79')];_0x4e6b07['message']['motionChannel']=_0x240c3a['channel'];_0x4e6b07[_0x7236('0x2b')][_0x7236('0x7a')]='reject';respondWithRpcPromise(_0x7236('0x7b'),_0x7236('0x7b'),{'event':_0x7236('0x84'),'message':_0x4e6b07[_0x7236('0x2b')]},client9002);return _0x240c3a;}return null;})[_0x7236('0x36')](respondWithResult(_0x1a112d,null))[_0x7236('0x2d')](handleError(_0x1a112d,null));};exports[_0x7236('0x37')]=function(_0x44d5b4,_0x2264a6,_0x5a063a){if(_0x44d5b4[_0x7236('0x5b')]['id']){delete _0x44d5b4[_0x7236('0x5b')]['id'];}var _0x3097da;return db[_0x7236('0x3f')][_0x7236('0x58')]({'where':{'id':_0x44d5b4['params']['id']}})[_0x7236('0x36')](handleEntityNotFound(_0x2264a6,null))[_0x7236('0x36')](function(_0x43f9a6){if(_0x43f9a6){_0x3097da=_0x43f9a6;return db[_0x7236('0x85')][_0x7236('0x58')]({'where':{'id':_0x43f9a6[_0x7236('0x86')]}});}})['then'](handleEntityNotFound(_0x2264a6,null))['then'](function(_0x5ce0a9){if(_0x5ce0a9){logger[_0x7236('0x87')](_0x7236('0x88'),'status',_0x7236('0x89'),_0x5ce0a9[_0x7236('0x4f')],util[_0x7236('0x8a')](_0x44d5b4[_0x7236('0x5b')],{'showHidden':![],'depth':null}));switch(_0x5ce0a9['type']){case'twilio':if(_0x44d5b4['body'][_0x7236('0x8b')]&&_0x44d5b4[_0x7236('0x5b')][_0x7236('0x8b')]===_0x3097da['messageId']&&_0x44d5b4[_0x7236('0x5b')]['MessageStatus']&&_0x44d5b4[_0x7236('0x5b')][_0x7236('0x8c')]==='read'){return _0x3097da[_0x7236('0x5a')]({'read':!![]});}else{logger[_0x7236('0x29')](_0x7236('0x8d'),_0x7236('0x37'),_0x7236('0x8e'),util[_0x7236('0x8a')](_0x44d5b4[_0x7236('0x5b')],{'showHidden':![],'depth':null}));}break;}return _0x3097da;}})[_0x7236('0x36')](respondWithResult(_0x2264a6,null))[_0x7236('0x2d')](handleError(_0x2264a6,null));};
\ No newline at end of file
index 7555009..26b4095 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06ef=['emit','WhatsappMessage'];(function(_0x39d544,_0x35c14f){var _0x5a5ff2=function(_0x2271fb){while(--_0x2271fb){_0x39d544['push'](_0x39d544['shift']());}};_0x5a5ff2(++_0x35c14f);}(_0x06ef,0x185));var _0xf06e=function(_0x219781,_0x5971ec){_0x219781=_0x219781-0x0;var _0x243a6a=_0x06ef[_0x219781];return _0x243a6a;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require('../../mysqldb')['db'][_0xf06e('0x0')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x404485){return function(_0x1281ca,_0x16d4da,_0x569390){WhatsappMessageEvents[_0xf06e('0x1')](_0x404485+':'+_0x1281ca['id'],_0x1281ca);WhatsappMessageEvents[_0xf06e('0x1')](_0x404485,_0x1281ca);_0x569390(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
+var _0xa45c=['remove','emit','hasOwnProperty','hook','events','../../mysqldb','save'];(function(_0xaae9dc,_0x239760){var _0x33e252=function(_0x5cb798){while(--_0x5cb798){_0xaae9dc['push'](_0xaae9dc['shift']());}};_0x33e252(++_0x239760);}(_0xa45c,0x6d));var _0xca45=function(_0x5561b0,_0x4c9117){_0x5561b0=_0x5561b0-0x0;var _0x2bf930=_0xa45c[_0x5561b0];return _0x2bf930;};'use strict';var EventEmitter=require(_0xca45('0x0'));var WhatsappMessage=require(_0xca45('0x1'))['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xca45('0x2'),'afterUpdate':'update','afterDestroy':_0xca45('0x3')};function emitEvent(_0x52e027){return function(_0x16a36c,_0x47d8b9,_0x4d45e6){WhatsappMessageEvents[_0xca45('0x4')](_0x52e027+':'+_0x16a36c['id'],_0x16a36c);WhatsappMessageEvents[_0xca45('0x4')](_0x52e027,_0x16a36c);_0x4d45e6(null);};}for(var e in events){if(events[_0xca45('0x5')](e)){var event=events[e];WhatsappMessage[_0xca45('0x6')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
index 2db244c..c245dc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92aa=['Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','../../config/environment','exports','define','WhatsappMessage','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','toLowerCase','direction','out','secret','isNil','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','then','catch','error','WhatsappAccount','find','twilio','accountSid','phone','authToken','messages','create','whatsapp:','remote','/status?token=','token','update','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect'];(function(_0x5492f7,_0x571985){var _0x30ae51=function(_0x3f73c7){while(--_0x3f73c7){_0x5492f7['push'](_0x5492f7['shift']());}};_0x30ae51(++_0x571985);}(_0x92aa,0xf3));var _0xa92a=function(_0x31b925,_0x2fa91e){_0x31b925=_0x31b925-0x0;var _0x43e001=_0x92aa[_0x31b925];return _0x43e001;};'use strict';var _=require(_0xa92a('0x0'));var util=require(_0xa92a('0x1'));var logger=require(_0xa92a('0x2'))(_0xa92a('0x3'));var moment=require(_0xa92a('0x4'));var BPromise=require('bluebird');var rp=require(_0xa92a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa92a('0x6'));var attributes=require('./whatsappMessage.attributes');module[_0xa92a('0x7')]=function(_0x50a3e1,_0x53e138){return _0x50a3e1[_0xa92a('0x8')](_0xa92a('0x9'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':_0xa92a('0xa'),'fields':[_0xa92a('0xa')]},{'name':_0xa92a('0xb'),'fields':[_0xa92a('0xc')],'type':_0xa92a('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x493e2f,_0x686f93,_0x391553){var _0x4dbf5a=_0x50a3e1[_0xa92a('0xe')];var _0x57cebb=_0x493e2f[_0xa92a('0xf')]({'plain':!![]});if(_0x57cebb['direction'][_0xa92a('0x10')]()==='in'||_0x57cebb[_0xa92a('0x11')][_0xa92a('0x10')]()===_0xa92a('0x12')&&!_0x57cebb[_0xa92a('0x13')]&&!_[_0xa92a('0x14')](_0x57cebb[_0xa92a('0x15')])){_0x4dbf5a[_0xa92a('0x16')][_0xa92a('0x17')]({'where':{'id':_0x57cebb[_0xa92a('0x18')]}})[_0xa92a('0x19')](function(_0x3ae339){if(_0x3ae339){_0x3ae339['update']({'lastMsgAt':_0x57cebb['createdAt'],'lastMsgDirection':_0x57cebb['direction'][_0xa92a('0x10')]()});}})[_0xa92a('0x1a')](function(_0x2508eb){console[_0xa92a('0x1b')](_0x2508eb);});}if(_0x57cebb[_0xa92a('0x11')]===_0xa92a('0x12')&&!_0x57cebb[_0xa92a('0x13')]){var _0x296713;_0x4dbf5a[_0xa92a('0x1c')][_0xa92a('0x1d')]({'where':{'id':_0x57cebb['WhatsappAccountId']},'raw':!![]})[_0xa92a('0x19')](function(_0x3f2154){_0x296713=_0x3f2154;if(_0x296713&&_0x296713['type']){switch(_0x296713['type']){case _0xa92a('0x1e'):var _0x3a6c4c=require('twilio');if(_0x296713[_0xa92a('0x1f')]&&_0x296713['authToken']&&_0x296713[_0xa92a('0x20')]){var _0x4fcdbf=new _0x3a6c4c(_0x296713[_0xa92a('0x1f')],_0x296713[_0xa92a('0x21')]);_0x4fcdbf[_0xa92a('0x22')][_0xa92a('0x23')]({'body':_0x57cebb[_0xa92a('0xc')],'to':_0xa92a('0x24')+_0x57cebb[_0xa92a('0x20')],'from':'whatsapp:'+_0x296713[_0xa92a('0x20')],'statusCallback':_0x296713[_0xa92a('0x25')]+'/api/whatsapp/messages/'+_0x57cebb['id']+_0xa92a('0x26')+_0x296713[_0xa92a('0x27')]})['then'](function(_0x3fe260){if(_0x3fe260['sid']){return _0x493e2f[_0xa92a('0x28')]({'messageId':_0x3fe260[_0xa92a('0x29')]});}})[_0xa92a('0x1a')](function(_0x3c4ab6){logger[_0xa92a('0x1b')](_0xa92a('0x2a'),_0xa92a('0x2b'),_0xa92a('0x1e'),util[_0xa92a('0x2c')](_0x3c4ab6,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xa92a('0x2a'),_0xa92a('0x2b'),_0xa92a('0x1e'),_0xa92a('0x2d'));}break;}}})['finally'](function(){_0x391553();});}else{_0x391553();}}},'charset':_0xa92a('0x2e'),'collate':_0xa92a('0x2f')});};
\ No newline at end of file
+var _0xd3a0=['twilio','phone','accountSid','authToken','messages','create','whatsapp:','remote','token','sid','catch','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','WhatsappMessage','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','direction','toLowerCase','secret','isNil','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','then','update','createdAt','error','out','WhatsappAccount','find','type'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd3a0,0xaa));var _0x0d3a=function(_0x5a64fc,_0x2baaa5){_0x5a64fc=_0x5a64fc-0x0;var _0xe73019=_0xd3a0[_0x5a64fc];return _0xe73019;};'use strict';var _=require(_0x0d3a('0x0'));var util=require(_0x0d3a('0x1'));var logger=require(_0x0d3a('0x2'))(_0x0d3a('0x3'));var moment=require('moment');var BPromise=require(_0x0d3a('0x4'));var rp=require(_0x0d3a('0x5'));var fs=require('fs');var path=require(_0x0d3a('0x6'));var rimraf=require(_0x0d3a('0x7'));var config=require(_0x0d3a('0x8'));var attributes=require('./whatsappMessage.attributes');module[_0x0d3a('0x9')]=function(_0x16f051,_0x22cf8f){return _0x16f051[_0x0d3a('0xa')](_0x0d3a('0xb'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':_0x0d3a('0xc'),'fields':[_0x0d3a('0xc')]},{'name':_0x0d3a('0xd'),'fields':[_0x0d3a('0xe')],'type':_0x0d3a('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x263571,_0x2c2496,_0x5b1d51){var _0x393396=_0x16f051[_0x0d3a('0x10')];var _0x493582=_0x263571[_0x0d3a('0x11')]({'plain':!![]});if(_0x493582[_0x0d3a('0x12')][_0x0d3a('0x13')]()==='in'||_0x493582[_0x0d3a('0x12')]['toLowerCase']()==='out'&&!_0x493582[_0x0d3a('0x14')]&&!_[_0x0d3a('0x15')](_0x493582[_0x0d3a('0x16')])){_0x393396[_0x0d3a('0x17')][_0x0d3a('0x18')]({'where':{'id':_0x493582[_0x0d3a('0x19')]}})[_0x0d3a('0x1a')](function(_0x18a590){if(_0x18a590){_0x18a590[_0x0d3a('0x1b')]({'lastMsgAt':_0x493582[_0x0d3a('0x1c')],'lastMsgDirection':_0x493582[_0x0d3a('0x12')]['toLowerCase']()});}})['catch'](function(_0x37c833){console[_0x0d3a('0x1d')](_0x37c833);});}if(_0x493582[_0x0d3a('0x12')]===_0x0d3a('0x1e')&&!_0x493582[_0x0d3a('0x14')]){var _0x2c8cd9;_0x393396[_0x0d3a('0x1f')][_0x0d3a('0x20')]({'where':{'id':_0x493582['WhatsappAccountId']},'raw':!![]})[_0x0d3a('0x1a')](function(_0x56fad3){_0x2c8cd9=_0x56fad3;if(_0x2c8cd9&&_0x2c8cd9[_0x0d3a('0x21')]){switch(_0x2c8cd9[_0x0d3a('0x21')]){case _0x0d3a('0x22'):var _0x557d9f=require(_0x0d3a('0x22'));if(_0x2c8cd9['accountSid']&&_0x2c8cd9['authToken']&&_0x2c8cd9[_0x0d3a('0x23')]){var _0x4b9ca4=new _0x557d9f(_0x2c8cd9[_0x0d3a('0x24')],_0x2c8cd9[_0x0d3a('0x25')]);_0x4b9ca4[_0x0d3a('0x26')][_0x0d3a('0x27')]({'body':_0x493582[_0x0d3a('0xe')],'to':_0x0d3a('0x28')+_0x493582[_0x0d3a('0x23')],'from':_0x0d3a('0x28')+_0x2c8cd9[_0x0d3a('0x23')],'statusCallback':_0x2c8cd9[_0x0d3a('0x29')]+'/api/whatsapp/messages/'+_0x493582['id']+'/status?token='+_0x2c8cd9[_0x0d3a('0x2a')]})['then'](function(_0x5a8bb4){if(_0x5a8bb4[_0x0d3a('0x2b')]){return _0x263571[_0x0d3a('0x1b')]({'messageId':_0x5a8bb4[_0x0d3a('0x2b')]});}})[_0x0d3a('0x2c')](function(_0xd4af83){logger[_0x0d3a('0x1d')](_0x0d3a('0x2d'),_0x0d3a('0x2e'),_0x0d3a('0x22'),util['inspect'](_0xd4af83,{'showHidden':![],'depth':null}));});}else{logger[_0x0d3a('0x1d')](_0x0d3a('0x2d'),'afterCreate',_0x0d3a('0x22'),_0x0d3a('0x2f'));}break;}}})[_0x0d3a('0x30')](function(){_0x5b1d51();});}else{_0x5b1d51();}}},'charset':_0x0d3a('0x31'),'collate':_0x0d3a('0x32')});};
\ No newline at end of file
index 9b51c54..300c045 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81ef=['info','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappMessage,\x20%s,\x20%s','message','result','catch','WhatsappMessage','create','body','options','CreateWhatsappMessage','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x81ef,0x120));var _0xf81e=function(_0x4d1068,_0x2b7d73){_0x4d1068=_0x4d1068-0x0;var _0x35086e=_0x81ef[_0x4d1068];return _0x35086e;};'use strict';var _=require('lodash');var util=require(_0xf81e('0x0'));var moment=require(_0xf81e('0x1'));var BPromise=require(_0xf81e('0x2'));var rs=require(_0xf81e('0x3'));var fs=require('fs');var Redis=require(_0xf81e('0x4'));var db=require(_0xf81e('0x5'))['db'];var utils=require(_0xf81e('0x6'));var logger=require(_0xf81e('0x7'))(_0xf81e('0x8'));var config=require(_0xf81e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xf81e('0xa')]['http']({'port':0x232a});config[_0xf81e('0xb')]=_['defaults'](config['redis'],{'host':_0xf81e('0xc'),'port':0x18eb});var socket=require(_0xf81e('0xd'))(new Redis(config[_0xf81e('0xb')]));require(_0xf81e('0xe'))[_0xf81e('0xf')](socket);function respondWithRpcPromise(_0x692db5,_0x1448cf,_0x2ffc01){return new BPromise(function(_0x568b16,_0x31b096){return client[_0xf81e('0x10')](_0x692db5,_0x2ffc01)[_0xf81e('0x11')](function(_0x4458ca){logger[_0xf81e('0x12')]('WhatsappMessage,\x20%s,\x20%s',_0x1448cf,_0xf81e('0x13'));logger[_0xf81e('0x14')](_0xf81e('0x15'),_0x1448cf,'request\x20sent',JSON[_0xf81e('0x16')](_0x4458ca));if(_0x4458ca['error']){if(_0x4458ca[_0xf81e('0x17')][_0xf81e('0x18')]===0x1f4){logger[_0xf81e('0x17')](_0xf81e('0x19'),_0x1448cf,_0x4458ca[_0xf81e('0x17')][_0xf81e('0x1a')]);return _0x31b096(_0x4458ca[_0xf81e('0x17')]['message']);}logger[_0xf81e('0x17')](_0xf81e('0x19'),_0x1448cf,_0x4458ca[_0xf81e('0x17')][_0xf81e('0x1a')]);return _0x568b16(_0x4458ca[_0xf81e('0x17')][_0xf81e('0x1a')]);}else{logger['info']('WhatsappMessage,\x20%s,\x20%s',_0x1448cf,'request\x20sent');_0x568b16(_0x4458ca[_0xf81e('0x1b')][_0xf81e('0x1a')]);}})[_0xf81e('0x1c')](function(_0x20703d){logger[_0xf81e('0x17')]('WhatsappMessage,\x20%s,\x20%s',_0x1448cf,_0x20703d);_0x31b096(_0x20703d);});});}exports['CreateWhatsappMessage']=function(_0x2bc1a6){var _0x107f46=this;return new Promise(function(_0x2dd772,_0x4feace){return db[_0xf81e('0x1d')][_0xf81e('0x1e')](_0x2bc1a6[_0xf81e('0x1f')],{'raw':_0x2bc1a6[_0xf81e('0x20')]?_0x2bc1a6[_0xf81e('0x20')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x33eac0){logger[_0xf81e('0x12')]('CreateWhatsappMessage',_0x2bc1a6);logger[_0xf81e('0x14')](_0xf81e('0x21'),_0x2bc1a6,JSON[_0xf81e('0x16')](_0x33eac0));_0x2dd772(_0x33eac0);})[_0xf81e('0x1c')](function(_0x3eac4d){logger['error']('CreateWhatsappMessage',_0x3eac4d['message'],_0x2bc1a6);_0x4feace(_0x107f46['error'](0x1f4,_0x3eac4d[_0xf81e('0x1a')]));});});};
\ No newline at end of file
+var _0x3364=['options','raw','stringify','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','then','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','CreateWhatsappMessage','WhatsappMessage','create'];(function(_0x4bd808,_0x413b19){var _0x1a3eb0=function(_0x29e014){while(--_0x29e014){_0x4bd808['push'](_0x4bd808['shift']());}};_0x1a3eb0(++_0x413b19);}(_0x3364,0x1a7));var _0x4336=function(_0x24f3b7,_0x1afcf7){_0x24f3b7=_0x24f3b7-0x0;var _0x2a1220=_0x3364[_0x24f3b7];return _0x2a1220;};'use strict';var _=require('lodash');var util=require(_0x4336('0x0'));var moment=require(_0x4336('0x1'));var BPromise=require(_0x4336('0x2'));var rs=require(_0x4336('0x3'));var fs=require('fs');var Redis=require(_0x4336('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4336('0x5'))(_0x4336('0x6'));var config=require(_0x4336('0x7'));var jayson=require(_0x4336('0x8'));var client=jayson[_0x4336('0x9')][_0x4336('0xa')]({'port':0x232a});config[_0x4336('0xb')]=_[_0x4336('0xc')](config[_0x4336('0xb')],{'host':_0x4336('0xd'),'port':0x18eb});var socket=require(_0x4336('0xe'))(new Redis(config[_0x4336('0xb')]));require('./whatsappMessage.socket')['register'](socket);function respondWithRpcPromise(_0x20b43f,_0x343852,_0x696602){return new BPromise(function(_0x77942,_0x13114e){return client['request'](_0x20b43f,_0x696602)[_0x4336('0xf')](function(_0x206b2a){logger['info'](_0x4336('0x10'),_0x343852,_0x4336('0x11'));logger[_0x4336('0x12')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x343852,_0x4336('0x11'),JSON['stringify'](_0x206b2a));if(_0x206b2a[_0x4336('0x13')]){if(_0x206b2a['error'][_0x4336('0x14')]===0x1f4){logger['error'](_0x4336('0x10'),_0x343852,_0x206b2a[_0x4336('0x13')][_0x4336('0x15')]);return _0x13114e(_0x206b2a[_0x4336('0x13')][_0x4336('0x15')]);}logger[_0x4336('0x13')](_0x4336('0x10'),_0x343852,_0x206b2a[_0x4336('0x13')][_0x4336('0x15')]);return _0x77942(_0x206b2a[_0x4336('0x13')]['message']);}else{logger['info'](_0x4336('0x10'),_0x343852,_0x4336('0x11'));_0x77942(_0x206b2a[_0x4336('0x16')][_0x4336('0x15')]);}})[_0x4336('0x17')](function(_0x5a1c4e){logger[_0x4336('0x13')]('WhatsappMessage,\x20%s,\x20%s',_0x343852,_0x5a1c4e);_0x13114e(_0x5a1c4e);});});}exports[_0x4336('0x18')]=function(_0x2d4309){var _0x49fd64=this;return new Promise(function(_0x3db365,_0xbfc69b){return db[_0x4336('0x19')][_0x4336('0x1a')](_0x2d4309['body'],{'raw':_0x2d4309[_0x4336('0x1b')]?_0x2d4309[_0x4336('0x1b')][_0x4336('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x1d9184){logger['info'](_0x4336('0x18'),_0x2d4309);logger[_0x4336('0x12')](_0x4336('0x18'),_0x2d4309,JSON[_0x4336('0x1d')](_0x1d9184));_0x3db365(_0x1d9184);})[_0x4336('0x17')](function(_0x3a625a){logger[_0x4336('0x13')](_0x4336('0x18'),_0x3a625a[_0x4336('0x15')],_0x2d4309);_0xbfc69b(_0x49fd64[_0x4336('0x13')](0x1f4,_0x3a625a[_0x4336('0x15')]));});});};
\ No newline at end of file
index 5f57509..fcd2e11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e0a=['removeListener','length','whatsappMessage:','./whatsappMessage.events','save','remove','emit'];(function(_0x1d8bb0,_0x43e0f3){var _0x4d032d=function(_0xeac56){while(--_0xeac56){_0x1d8bb0['push'](_0x1d8bb0['shift']());}};_0x4d032d(++_0x43e0f3);}(_0x8e0a,0x1d8));var _0xa8e0=function(_0x5b183d,_0x1c26c8){_0x5b183d=_0x5b183d-0x0;var _0x5f2f0a=_0x8e0a[_0x5b183d];return _0x5f2f0a;};'use strict';var WhatsappMessageEvents=require(_0xa8e0('0x0'));var events=[_0xa8e0('0x1'),_0xa8e0('0x2'),'update'];function createListener(_0x27662a,_0x430d5b){return function(_0x3ec4d9){_0x430d5b[_0xa8e0('0x3')](_0x27662a,_0x3ec4d9);};}function removeListener(_0x3df25e,_0xef5eb){return function(){WhatsappMessageEvents[_0xa8e0('0x4')](_0x3df25e,_0xef5eb);};}exports['register']=function(_0x311346){for(var _0x11d2b4=0x0,_0x103676=events[_0xa8e0('0x5')];_0x11d2b4<_0x103676;_0x11d2b4++){var _0x5a5dfc=events[_0x11d2b4];var _0x926e44=createListener(_0xa8e0('0x6')+_0x5a5dfc,_0x311346);WhatsappMessageEvents['on'](_0x5a5dfc,_0x926e44);}};
\ No newline at end of file
+var _0x26b3=['remove','update','emit','removeListener','register','length','whatsappMessage:','save'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x26b3,0x127));var _0x326b=function(_0x4a61ae,_0x42d7e8){_0x4a61ae=_0x4a61ae-0x0;var _0x31cbda=_0x26b3[_0x4a61ae];return _0x31cbda;};'use strict';var WhatsappMessageEvents=require('./whatsappMessage.events');var events=[_0x326b('0x0'),_0x326b('0x1'),_0x326b('0x2')];function createListener(_0x9e0685,_0x29c0b4){return function(_0x145fdc){_0x29c0b4[_0x326b('0x3')](_0x9e0685,_0x145fdc);};}function removeListener(_0x5b0417,_0x580af1){return function(){WhatsappMessageEvents[_0x326b('0x4')](_0x5b0417,_0x580af1);};}exports[_0x326b('0x5')]=function(_0x30b55d){for(var _0x593f5f=0x0,_0x5e4c2f=events[_0x326b('0x6')];_0x593f5f<_0x5e4c2f;_0x593f5f++){var _0x1ebd8d=events[_0x593f5f];var _0x38da15=createListener(_0x326b('0x7')+_0x1ebd8d,_0x30b55d);WhatsappMessageEvents['on'](_0x1ebd8d,_0x38da15);}};
\ No newline at end of file
index 4c663eb..eb571a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c24=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappQueue.controller','get','index','/describe','isAuthenticated','describe','/:id','/:id/members','/:id/teams','/:id/users','post','addTeams','addAgents','put','update','delete','removeTeams','removeAgents'];(function(_0x10061a,_0x4f33bd){var _0x390954=function(_0x596d3c){while(--_0x596d3c){_0x10061a['push'](_0x10061a['shift']());}};_0x390954(++_0x4f33bd);}(_0x2c24,0x1e6));var _0x42c2=function(_0x17a0b9,_0x206a9c){_0x17a0b9=_0x17a0b9-0x0;var _0xb0b361=_0x2c24[_0x17a0b9];return _0xb0b361;};'use strict';var multer=require(_0x42c2('0x0'));var util=require(_0x42c2('0x1'));var path=require(_0x42c2('0x2'));var timeout=require(_0x42c2('0x3'));var express=require(_0x42c2('0x4'));var router=express[_0x42c2('0x5')]();var fs_extra=require(_0x42c2('0x6'));var auth=require(_0x42c2('0x7'));var interaction=require(_0x42c2('0x8'));var config=require('../../config/environment');var controller=require(_0x42c2('0x9'));router[_0x42c2('0xa')]('/',auth['isAuthenticated'](),controller[_0x42c2('0xb')]);router[_0x42c2('0xa')](_0x42c2('0xc'),auth[_0x42c2('0xd')](),controller[_0x42c2('0xe')]);router[_0x42c2('0xa')](_0x42c2('0xf'),auth['isAuthenticated'](),controller['show']);router[_0x42c2('0xa')](_0x42c2('0x10'),auth[_0x42c2('0xd')](),controller['getMembers']);router[_0x42c2('0xa')](_0x42c2('0x11'),auth['isAuthenticated'](),controller['getTeams']);router[_0x42c2('0xa')](_0x42c2('0x12'),auth['isAuthenticated'](),controller['getAgents']);router[_0x42c2('0x13')]('/',auth[_0x42c2('0xd')](),controller['create']);router[_0x42c2('0x13')](_0x42c2('0x11'),auth[_0x42c2('0xd')](),controller[_0x42c2('0x14')]);router[_0x42c2('0x13')](_0x42c2('0x12'),auth[_0x42c2('0xd')](),controller[_0x42c2('0x15')]);router[_0x42c2('0x16')](_0x42c2('0xf'),auth[_0x42c2('0xd')](),controller[_0x42c2('0x17')]);router['delete'](_0x42c2('0xf'),auth[_0x42c2('0xd')](),controller['destroy']);router[_0x42c2('0x18')]('/:id/teams',auth[_0x42c2('0xd')](),controller[_0x42c2('0x19')]);router['delete'](_0x42c2('0x12'),auth[_0x42c2('0xd')](),controller[_0x42c2('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0x10fd=['Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','index','get','isAuthenticated','describe','/:id','/:id/members','getMembers','/:id/teams','getAgents','post','create','/:id/users','addAgents','put','update','delete','exports','path','express'];(function(_0x4a5055,_0x3c97aa){var _0x329f81=function(_0x565b76){while(--_0x565b76){_0x4a5055['push'](_0x4a5055['shift']());}};_0x329f81(++_0x3c97aa);}(_0x10fd,0x17e));var _0xd10f=function(_0x54cda0,_0x3bf6e9){_0x54cda0=_0x54cda0-0x0;var _0x26f2c2=_0x10fd[_0x54cda0];return _0x26f2c2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xd10f('0x0'));var timeout=require('connect-timeout');var express=require(_0xd10f('0x1'));var router=express[_0xd10f('0x2')]();var fs_extra=require(_0xd10f('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xd10f('0x4'));var config=require(_0xd10f('0x5'));var controller=require(_0xd10f('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xd10f('0x7')]);router[_0xd10f('0x8')]('/describe',auth[_0xd10f('0x9')](),controller[_0xd10f('0xa')]);router['get'](_0xd10f('0xb'),auth['isAuthenticated'](),controller['show']);router['get'](_0xd10f('0xc'),auth[_0xd10f('0x9')](),controller[_0xd10f('0xd')]);router['get'](_0xd10f('0xe'),auth[_0xd10f('0x9')](),controller['getTeams']);router['get']('/:id/users',auth[_0xd10f('0x9')](),controller[_0xd10f('0xf')]);router[_0xd10f('0x10')]('/',auth[_0xd10f('0x9')](),controller[_0xd10f('0x11')]);router[_0xd10f('0x10')](_0xd10f('0xe'),auth['isAuthenticated'](),controller['addTeams']);router[_0xd10f('0x10')](_0xd10f('0x12'),auth[_0xd10f('0x9')](),controller[_0xd10f('0x13')]);router[_0xd10f('0x14')](_0xd10f('0xb'),auth[_0xd10f('0x9')](),controller[_0xd10f('0x15')]);router[_0xd10f('0x16')](_0xd10f('0xb'),auth[_0xd10f('0x9')](),controller['destroy']);router[_0xd10f('0x16')](_0xd10f('0xe'),auth[_0xd10f('0x9')](),controller['removeTeams']);router[_0xd10f('0x16')](_0xd10f('0x12'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xd10f('0x17')]=router;
\ No newline at end of file
index fe23f9e..42d98eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa68=['roundrobin','sequelize','exports','STRING','INTEGER','ENUM','rrmemory'];(function(_0x4310c9,_0x3424ff){var _0x3455c8=function(_0x4329a7){while(--_0x4329a7){_0x4310c9['push'](_0x4310c9['shift']());}};_0x3455c8(++_0x3424ff);}(_0xfa68,0x86));var _0x8fa6=function(_0x16df4c,_0x5d9616){_0x16df4c=_0x16df4c-0x0;var _0x57546a=_0xfa68[_0x16df4c];return _0x57546a;};'use strict';var Sequelize=require(_0x8fa6('0x0'));module[_0x8fa6('0x1')]={'name':{'type':Sequelize[_0x8fa6('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x8fa6('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x8fa6('0x4')](_0x8fa6('0x5'),'beepall',_0x8fa6('0x6'))},'description':{'type':Sequelize[_0x8fa6('0x2')]}};
\ No newline at end of file
+var _0x39cb=['roundrobin','exports','STRING','INTEGER','ENUM','beepall'];(function(_0x4a0556,_0x111553){var _0x4e5a72=function(_0x347e7a){while(--_0x347e7a){_0x4a0556['push'](_0x4a0556['shift']());}};_0x4e5a72(++_0x111553);}(_0x39cb,0x1bd));var _0xb39c=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x39cb[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require('sequelize');module[_0xb39c('0x0')]={'name':{'type':Sequelize[_0xb39c('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0xb39c('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb39c('0x3')]('rrmemory',_0xb39c('0x4'),_0xb39c('0x5'))},'description':{'type':Sequelize[_0xb39c('0x1')]}};
\ No newline at end of file
index 5034af3..ee99d22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8d4=['spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./whatsappQueue.socket','end','status','offset','undefined','limit','count','set','json','reject','save','update','destroy','get','WhatsappQueues','UserProfileResource','then','error','name','send','map','WhatsappQueue','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','where','merge','VIRTUAL','filter','catch','show','params','includeAll','include','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','findOne','UserWhatsappQueue','sort','pick','WhatsappQueueId','findAndCountAll','UserId','agent','whatsappPause','createdAt','rows','format','%s/%s','SIP','getTeams','Team','addTeams','ids','findAll','User','Agents','online','voicePause','interface','flatMap','each','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','select','tq.TeamId','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','value','isEmpty','removeAgents','userWhatsappQueue:remove','omit'];(function(_0x58b1f4,_0x55c96e){var _0x246c42=function(_0x3202f9){while(--_0x3202f9){_0x58b1f4['push'](_0x58b1f4['shift']());}};_0x246c42(++_0x55c96e);}(_0xf8d4,0x94));var _0x4f8d=function(_0x362e87,_0x38d17c){_0x362e87=_0x362e87-0x0;var _0x334244=_0xf8d4[_0x362e87];return _0x334244;};'use strict';var emlformat=require(_0x4f8d('0x0'));var rimraf=require(_0x4f8d('0x1'));var zipdir=require(_0x4f8d('0x2'));var jsonpatch=require(_0x4f8d('0x3'));var rp=require(_0x4f8d('0x4'));var moment=require(_0x4f8d('0x5'));var BPromise=require(_0x4f8d('0x6'));var Mustache=require(_0x4f8d('0x7'));var util=require('util');var path=require(_0x4f8d('0x8'));var sox=require(_0x4f8d('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4f8d('0xa'));var _=require(_0x4f8d('0xb'));var squel=require(_0x4f8d('0xc'));var crypto=require('crypto');var jsforce=require(_0x4f8d('0xd'));var deskjs=require(_0x4f8d('0xe'));var toCsv=require(_0x4f8d('0xf'));var querystring=require(_0x4f8d('0x10'));var Papa=require(_0x4f8d('0x11'));var Redis=require(_0x4f8d('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x4f8d('0x13'));var as=require(_0x4f8d('0x14'));var hardwareService=require(_0x4f8d('0x15'));var logger=require(_0x4f8d('0x16'))(_0x4f8d('0x17'));var utils=require(_0x4f8d('0x18'));var config=require(_0x4f8d('0x19'));var licenseUtil=require(_0x4f8d('0x1a'));var db=require(_0x4f8d('0x1b'))['db'];config[_0x4f8d('0x1c')]=_[_0x4f8d('0x1d')](config[_0x4f8d('0x1c')],{'host':_0x4f8d('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4f8d('0x1c')]));require(_0x4f8d('0x1f'))['register'](socket);function respondWithStatusCode(_0x2a48df,_0x358889){_0x358889=_0x358889||0xcc;return function(_0x5b8bbc){if(_0x5b8bbc){return _0x2a48df['sendStatus'](_0x358889);}return _0x2a48df['status'](_0x358889)[_0x4f8d('0x20')]();};}function respondWithResult(_0x13b22d,_0x1afe55){_0x1afe55=_0x1afe55||0xc8;return function(_0x31dd42){if(_0x31dd42){return _0x13b22d[_0x4f8d('0x21')](_0x1afe55)['json'](_0x31dd42);}};}function respondWithFilteredResult(_0x35ee94,_0x38123c){return function(_0x38d3bb){if(_0x38d3bb){var _0x3bcfa5=typeof _0x38123c[_0x4f8d('0x22')]===_0x4f8d('0x23')&&typeof _0x38123c[_0x4f8d('0x24')]===_0x4f8d('0x23');var _0x40a0d4=_0x38d3bb[_0x4f8d('0x25')];var _0x18f778=_0x3bcfa5?0x0:_0x38123c[_0x4f8d('0x22')];var _0x2a730f=_0x3bcfa5?_0x38d3bb[_0x4f8d('0x25')]:_0x38123c[_0x4f8d('0x22')]+_0x38123c[_0x4f8d('0x24')];var _0x517202;if(_0x2a730f>=_0x40a0d4){_0x2a730f=_0x40a0d4;_0x517202=0xc8;}else{_0x517202=0xce;}_0x35ee94[_0x4f8d('0x21')](_0x517202);return _0x35ee94[_0x4f8d('0x26')]('Content-Range',_0x18f778+'-'+_0x2a730f+'/'+_0x40a0d4)[_0x4f8d('0x27')](_0x38d3bb);}return null;};}function patchUpdates(_0x2c249b){return function(_0x18c082){try{jsonpatch['apply'](_0x18c082,_0x2c249b,!![]);}catch(_0xfa701a){return BPromise[_0x4f8d('0x28')](_0xfa701a);}return _0x18c082[_0x4f8d('0x29')]();};}function saveUpdates(_0x32985f,_0x6e8fed){return function(_0x26d3aa){if(_0x26d3aa){return _0x26d3aa[_0x4f8d('0x2a')](_0x32985f)['then'](function(_0xd44930){return _0xd44930;});}return null;};}function removeEntity(_0x36902a,_0x5908dc){return function(_0x14a712){if(_0x14a712){return _0x14a712[_0x4f8d('0x2b')]()['then'](function(){var _0x2f07c4=_0x14a712[_0x4f8d('0x2c')]({'plain':!![]});var _0xab453c=_0x4f8d('0x2d');return db[_0x4f8d('0x2e')]['destroy']({'where':{'type':_0xab453c,'resourceId':_0x2f07c4['id']}})[_0x4f8d('0x2f')](function(){return _0x14a712;});})[_0x4f8d('0x2f')](function(){_0x36902a[_0x4f8d('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1a2bc0,_0x140cce){return function(_0xd136d9){if(!_0xd136d9){_0x1a2bc0['sendStatus'](0x194);}return _0xd136d9;};}function handleError(_0x568fbd,_0x32835c){_0x32835c=_0x32835c||0x1f4;return function(_0x285b9b){logger[_0x4f8d('0x30')](_0x285b9b['stack']);if(_0x285b9b[_0x4f8d('0x31')]){delete _0x285b9b[_0x4f8d('0x31')];}_0x568fbd['status'](_0x32835c)[_0x4f8d('0x32')](_0x285b9b);};}exports['index']=function(_0x149bad,_0x5b8f1d){var _0x2e5ba3={},_0xd99c6a={},_0x1c1bce={'count':0x0,'rows':[]};var _0x42c1f1=_[_0x4f8d('0x33')](db[_0x4f8d('0x34')][_0x4f8d('0x35')],function(_0x9314ae){return{'name':_0x9314ae[_0x4f8d('0x36')],'type':_0x9314ae['type'][_0x4f8d('0x37')]};});_0xd99c6a[_0x4f8d('0x38')]=_[_0x4f8d('0x33')](_0x42c1f1,_0x4f8d('0x31'));_0xd99c6a[_0x4f8d('0x39')]=_[_0x4f8d('0x3a')](_0x149bad[_0x4f8d('0x39')]);_0xd99c6a[_0x4f8d('0x3b')]=_['intersection'](_0xd99c6a[_0x4f8d('0x38')],_0xd99c6a[_0x4f8d('0x39')]);_0x2e5ba3[_0x4f8d('0x3c')]=_[_0x4f8d('0x3d')](_0xd99c6a[_0x4f8d('0x38')],qs[_0x4f8d('0x3e')](_0x149bad[_0x4f8d('0x39')][_0x4f8d('0x3e')]));_0x2e5ba3['attributes']=_0x2e5ba3[_0x4f8d('0x3c')][_0x4f8d('0x3f')]?_0x2e5ba3['attributes']:_0xd99c6a['model'];if(!_0x149bad[_0x4f8d('0x39')][_0x4f8d('0x40')](_0x4f8d('0x41'))){_0x2e5ba3[_0x4f8d('0x24')]=qs[_0x4f8d('0x24')](_0x149bad[_0x4f8d('0x39')]['limit']);_0x2e5ba3['offset']=qs[_0x4f8d('0x22')](_0x149bad['query'][_0x4f8d('0x22')]);}_0x2e5ba3[_0x4f8d('0x42')]=qs['sort'](_0x149bad[_0x4f8d('0x39')]['sort']);_0x2e5ba3['where']=qs[_0x4f8d('0x3b')](_['pick'](_0x149bad[_0x4f8d('0x39')],_0xd99c6a[_0x4f8d('0x3b')]),_0x42c1f1);if(_0x149bad[_0x4f8d('0x39')]['filter']){_0x2e5ba3[_0x4f8d('0x43')]=_[_0x4f8d('0x44')](_0x2e5ba3[_0x4f8d('0x43')],{'$or':_[_0x4f8d('0x33')](_0x42c1f1,function(_0x13ea40){if(_0x13ea40['type']!==_0x4f8d('0x45')){var _0x22deef={};_0x22deef[_0x13ea40[_0x4f8d('0x31')]]={'$like':'%'+_0x149bad[_0x4f8d('0x39')][_0x4f8d('0x46')]+'%'};return _0x22deef;}})});}_0x2e5ba3=_[_0x4f8d('0x44')]({},_0x2e5ba3,_0x149bad['options']);var _0x21aaa2={'where':_0x2e5ba3['where']};return db['WhatsappQueue'][_0x4f8d('0x25')](_0x21aaa2)[_0x4f8d('0x2f')](function(_0x202f2a){_0x1c1bce[_0x4f8d('0x25')]=_0x202f2a;if(_0x149bad['query']['includeAll']){_0x2e5ba3['include']=[{'all':!![]}];}return db[_0x4f8d('0x34')]['findAll'](_0x2e5ba3);})[_0x4f8d('0x2f')](function(_0x36f025){_0x1c1bce['rows']=_0x36f025;return _0x1c1bce;})[_0x4f8d('0x2f')](respondWithFilteredResult(_0x5b8f1d,_0x2e5ba3))[_0x4f8d('0x47')](handleError(_0x5b8f1d,null));};exports[_0x4f8d('0x48')]=function(_0x45d699,_0x10123b){var _0x1cedab={'raw':!![],'where':{'id':_0x45d699[_0x4f8d('0x49')]['id']}},_0x21e920={};_0x21e920[_0x4f8d('0x38')]=_[_0x4f8d('0x3a')](db['WhatsappQueue']['rawAttributes']);_0x21e920[_0x4f8d('0x39')]=_[_0x4f8d('0x3a')](_0x45d699[_0x4f8d('0x39')]);_0x21e920[_0x4f8d('0x3b')]=_['intersection'](_0x21e920['model'],_0x21e920['query']);_0x1cedab[_0x4f8d('0x3c')]=_[_0x4f8d('0x3d')](_0x21e920[_0x4f8d('0x38')],qs[_0x4f8d('0x3e')](_0x45d699['query'][_0x4f8d('0x3e')]));_0x1cedab[_0x4f8d('0x3c')]=_0x1cedab['attributes']['length']?_0x1cedab[_0x4f8d('0x3c')]:_0x21e920[_0x4f8d('0x38')];if(_0x45d699[_0x4f8d('0x39')][_0x4f8d('0x4a')]){_0x1cedab[_0x4f8d('0x4b')]=[{'all':!![]}];}_0x1cedab=_[_0x4f8d('0x44')]({},_0x1cedab,_0x45d699[_0x4f8d('0x4c')]);return db[_0x4f8d('0x34')][_0x4f8d('0x4d')](_0x1cedab)[_0x4f8d('0x2f')](handleEntityNotFound(_0x10123b,null))[_0x4f8d('0x2f')](respondWithResult(_0x10123b,null))[_0x4f8d('0x47')](handleError(_0x10123b,null));};exports[_0x4f8d('0x4e')]=function(_0x50308e,_0x3e137b){return db[_0x4f8d('0x34')][_0x4f8d('0x4e')](_0x50308e['body'],{})[_0x4f8d('0x2f')](function(_0x319f88){var _0x4563e7=_0x50308e[_0x4f8d('0x4f')][_0x4f8d('0x2c')]({'plain':!![]});if(!_0x4563e7)throw new Error(_0x4f8d('0x50'));if(_0x4563e7[_0x4f8d('0x51')]==='user'){var _0x500a06=_0x319f88['get']({'plain':!![]});var _0x567542='WhatsappQueues';return db[_0x4f8d('0x52')][_0x4f8d('0x4d')]({'where':{'name':_0x567542,'userProfileId':_0x4563e7[_0x4f8d('0x53')]},'raw':!![]})[_0x4f8d('0x2f')](function(_0x116414){if(_0x116414&&_0x116414[_0x4f8d('0x54')]===0x0){return db[_0x4f8d('0x2e')]['create']({'name':_0x500a06[_0x4f8d('0x31')],'resourceId':_0x500a06['id'],'type':_0x116414['name'],'sectionId':_0x116414['id']},{})[_0x4f8d('0x2f')](function(){return _0x319f88;});}else{return _0x319f88;}})[_0x4f8d('0x47')](function(_0x1bd506){logger['error'](_0x4f8d('0x55'),_0x1bd506);throw _0x1bd506;});}return _0x319f88;})[_0x4f8d('0x2f')](respondWithResult(_0x3e137b,0xc9))[_0x4f8d('0x47')](handleError(_0x3e137b,null));};exports[_0x4f8d('0x2a')]=function(_0x1f7b26,_0x27d7c9){if(_0x1f7b26[_0x4f8d('0x56')]['id']){delete _0x1f7b26['body']['id'];}return db[_0x4f8d('0x34')][_0x4f8d('0x4d')]({'where':{'id':_0x1f7b26[_0x4f8d('0x49')]['id']}})[_0x4f8d('0x2f')](handleEntityNotFound(_0x27d7c9,null))[_0x4f8d('0x2f')](saveUpdates(_0x1f7b26[_0x4f8d('0x56')],null))[_0x4f8d('0x2f')](respondWithResult(_0x27d7c9,null))[_0x4f8d('0x47')](handleError(_0x27d7c9,null));};exports[_0x4f8d('0x2b')]=function(_0x5bad5a,_0x2e026e){return db['WhatsappQueue']['find']({'where':{'id':_0x5bad5a[_0x4f8d('0x49')]['id']}})[_0x4f8d('0x2f')](handleEntityNotFound(_0x2e026e,null))[_0x4f8d('0x2f')](removeEntity(_0x2e026e,null))[_0x4f8d('0x47')](handleError(_0x2e026e,null));};exports[_0x4f8d('0x57')]=function(_0x4306f4,_0x33b98d){return db[_0x4f8d('0x34')][_0x4f8d('0x57')]()[_0x4f8d('0x2f')](respondWithResult(_0x33b98d,null))[_0x4f8d('0x47')](handleError(_0x33b98d,null));};exports['getMembers']=function(_0x4faf1d,_0x972ef6,_0xe4ae54){var _0x12f713={'raw':!![],'where':{}},_0x9b5206={},_0x48e537;return db[_0x4f8d('0x34')][_0x4f8d('0x58')]({'where':{'id':_0x4faf1d['params']['id']}})[_0x4f8d('0x2f')](handleEntityNotFound(_0x972ef6,null))[_0x4f8d('0x2f')](function(_0x503562){if(_0x503562){_0x48e537=_0x503562[_0x4f8d('0x2c')]({'plain':!![]});_0x9b5206['model']=_[_0x4f8d('0x3a')](db[_0x4f8d('0x59')][_0x4f8d('0x35')]);_0x9b5206[_0x4f8d('0x39')]=_[_0x4f8d('0x3a')](_0x4faf1d[_0x4f8d('0x39')]);_0x9b5206['filters']=_[_0x4f8d('0x3d')](_0x9b5206[_0x4f8d('0x38')],_0x9b5206[_0x4f8d('0x39')]);_0x12f713[_0x4f8d('0x3c')]=_[_0x4f8d('0x3d')](_0x9b5206['model'],qs[_0x4f8d('0x3e')](_0x4faf1d['query'][_0x4f8d('0x3e')]));_0x12f713['attributes']=_0x12f713[_0x4f8d('0x3c')]['length']?_0x12f713[_0x4f8d('0x3c')]:_0x9b5206[_0x4f8d('0x38')];if(!_0x4faf1d[_0x4f8d('0x39')]['hasOwnProperty']('nolimit')){_0x12f713[_0x4f8d('0x24')]=qs[_0x4f8d('0x24')](_0x4faf1d[_0x4f8d('0x39')]['limit']);_0x12f713[_0x4f8d('0x22')]=qs[_0x4f8d('0x22')](_0x4faf1d[_0x4f8d('0x39')]['offset']);}_0x12f713[_0x4f8d('0x42')]=qs[_0x4f8d('0x5a')](_0x4faf1d[_0x4f8d('0x39')][_0x4f8d('0x5a')]);_0x12f713[_0x4f8d('0x43')]=qs['filters'](_[_0x4f8d('0x5b')](_0x4faf1d[_0x4f8d('0x39')],_0x9b5206[_0x4f8d('0x3b')]));_0x12f713[_0x4f8d('0x43')][_0x4f8d('0x5c')]=_0x503562['id'];if(_0x4faf1d[_0x4f8d('0x39')][_0x4f8d('0x46')]){_0x12f713['where']=_[_0x4f8d('0x44')](_0x12f713[_0x4f8d('0x43')],{'$or':_[_0x4f8d('0x33')](_0x12f713[_0x4f8d('0x3c')],function(_0x2577cf){var _0x153266={};_0x153266[_0x2577cf]={'$like':'%'+_0x4faf1d[_0x4f8d('0x39')][_0x4f8d('0x46')]+'%'};return _0x153266;})});}_0x12f713=_['merge']({},_0x12f713,_0x4faf1d['options']);return db[_0x4f8d('0x59')]['findAll'](_0x12f713);}})[_0x4f8d('0x2f')](function(_0x3a8801){if(_0x3a8801){return db['User'][_0x4f8d('0x5d')]({'where':{'id':_['map'](_0x3a8801,_0x4f8d('0x5e')),'role':_0x4f8d('0x5f')},'attributes':['id',_0x4f8d('0x31'),_0x4f8d('0x60'),'updatedAt',_0x4f8d('0x61')]});}})[_0x4f8d('0x2f')](function(_0x510414){if(_0x510414){return{'count':_0x510414[_0x4f8d('0x25')],'rows':_[_0x4f8d('0x33')](_0x510414[_0x4f8d('0x62')],function(_0x8eec6){return{'membername':_0x8eec6[_0x4f8d('0x31')],'UserId':_0x8eec6['id'],'queue_name':_0x48e537['name'],'WhatsappQueueId':_0x48e537['id'],'interface':util[_0x4f8d('0x63')](_0x4f8d('0x64'),_0x4f8d('0x65'),_0x8eec6[_0x4f8d('0x31')]),'penalty':0x0,'paused':_0x8eec6[_0x4f8d('0x60')],'createdAt':_0x8eec6[_0x4f8d('0x61')],'updatedAt':_0x8eec6['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x4f8d('0x2f')](respondWithFilteredResult(_0x972ef6,_0x12f713))['catch'](handleError(_0x972ef6,null));};exports[_0x4f8d('0x66')]=function(_0x42842d,_0x69165d,_0x47176a){var _0x17af8f={};var _0x46a967={};var _0x538d38;var _0x14dc1d;return db[_0x4f8d('0x34')][_0x4f8d('0x58')]({'where':{'id':_0x42842d[_0x4f8d('0x49')]['id']}})['then'](handleEntityNotFound(_0x69165d,null))[_0x4f8d('0x2f')](function(_0x4759a3){if(_0x4759a3){_0x538d38=_0x4759a3;_0x46a967[_0x4f8d('0x38')]=_['keys'](db[_0x4f8d('0x67')][_0x4f8d('0x35')]);_0x46a967[_0x4f8d('0x39')]=_[_0x4f8d('0x3a')](_0x42842d['query']);_0x46a967[_0x4f8d('0x3b')]=_['intersection'](_0x46a967[_0x4f8d('0x38')],_0x46a967[_0x4f8d('0x39')]);_0x17af8f[_0x4f8d('0x3c')]=_['intersection'](_0x46a967['model'],qs[_0x4f8d('0x3e')](_0x42842d[_0x4f8d('0x39')][_0x4f8d('0x3e')]));_0x17af8f[_0x4f8d('0x3c')]=_0x17af8f[_0x4f8d('0x3c')][_0x4f8d('0x3f')]?_0x17af8f[_0x4f8d('0x3c')]:_0x46a967[_0x4f8d('0x38')];_0x17af8f[_0x4f8d('0x42')]=qs[_0x4f8d('0x5a')](_0x42842d[_0x4f8d('0x39')][_0x4f8d('0x5a')]);_0x17af8f[_0x4f8d('0x43')]=qs[_0x4f8d('0x3b')](_[_0x4f8d('0x5b')](_0x42842d[_0x4f8d('0x39')],_0x46a967[_0x4f8d('0x3b')]));if(_0x42842d[_0x4f8d('0x39')][_0x4f8d('0x46')]){_0x17af8f[_0x4f8d('0x43')]=_[_0x4f8d('0x44')](_0x17af8f['where'],{'$or':_[_0x4f8d('0x33')](_0x17af8f[_0x4f8d('0x3c')],function(_0xbb2f83){var _0x405763={};_0x405763[_0xbb2f83]={'$like':'%'+_0x42842d['query'][_0x4f8d('0x46')]+'%'};return _0x405763;})});}_0x17af8f=_['merge']({},_0x17af8f,_0x42842d[_0x4f8d('0x4c')]);return _0x538d38['getTeams'](_0x17af8f);}})[_0x4f8d('0x2f')](function(_0x20356f){if(_0x20356f){_0x14dc1d=_0x20356f[_0x4f8d('0x3f')];if(!_0x42842d[_0x4f8d('0x39')][_0x4f8d('0x40')](_0x4f8d('0x41'))){_0x17af8f[_0x4f8d('0x24')]=qs['limit'](_0x42842d[_0x4f8d('0x39')][_0x4f8d('0x24')]);_0x17af8f[_0x4f8d('0x22')]=qs[_0x4f8d('0x22')](_0x42842d[_0x4f8d('0x39')][_0x4f8d('0x22')]);}return _0x538d38['getTeams'](_0x17af8f);}})[_0x4f8d('0x2f')](function(_0x459221){if(_0x459221){return _0x459221?{'count':_0x14dc1d,'rows':_0x459221}:null;}})['then'](respondWithResult(_0x69165d,null))[_0x4f8d('0x47')](handleError(_0x69165d,null));};exports[_0x4f8d('0x68')]=function(_0x4033bf,_0x3b7fef,_0x4815d8){var _0x519e87=_0x4033bf[_0x4f8d('0x56')][_0x4f8d('0x69')];return db[_0x4f8d('0x67')][_0x4f8d('0x6a')]({'where':{'id':_0x519e87},'attributes':['id'],'include':[{'model':db[_0x4f8d('0x6b')],'as':_0x4f8d('0x6c'),'attributes':['id',_0x4f8d('0x31'),_0x4f8d('0x6d'),_0x4f8d('0x6e'),_0x4f8d('0x6f')],'raw':!![]}]})[_0x4f8d('0x2f')](function(_0x5f4b03){if(_0x5f4b03){var _0x23aaf7=_[_0x4f8d('0x70')](_0x5f4b03,function(_0x556e05){var _0x14bf84=_0x556e05[_0x4f8d('0x2c')]({'plain':!![]});return _0x14bf84[_0x4f8d('0x6c')];});return db[_0x4f8d('0x34')][_0x4f8d('0x4d')]({'where':{'id':_0x4033bf['params']['id']}})[_0x4f8d('0x2f')](function(_0x528290){return db['sequelize']['transaction'](function(_0x1b48e2){return _0x528290[_0x4f8d('0x68')](_0x519e87,{'transaction':_0x1b48e2})['then'](function(){return BPromise[_0x4f8d('0x71')](_0x23aaf7,function(_0x44e68b){return db[_0x4f8d('0x59')][_0x4f8d('0x72')]({'where':{'UserId':_0x44e68b['id'],'WhatsappQueueId':_0x4033bf[_0x4f8d('0x49')]['id']},'transaction':_0x1b48e2});});})[_0x4f8d('0x2f')](function(){_0x23aaf7[_0x4f8d('0x73')](function(_0x3942dd){socket[_0x4f8d('0x74')](_0x4f8d('0x75'),{'UserId':_0x3942dd['id'],'WhatsappQueueId':_0x528290['id']});});});});});}})['then'](respondWithStatusCode(_0x3b7fef,null))[_0x4f8d('0x47')](handleError(_0x3b7fef,null));};exports[_0x4f8d('0x76')]=function(_0x7040fc,_0x468b1f,_0xf011d0){return db['Team'][_0x4f8d('0x6a')]({'where':{'id':_0x7040fc['query'][_0x4f8d('0x69')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x4f8d('0x6c'),'attributes':['id'],'raw':!![]}]})[_0x4f8d('0x2f')](handleEntityNotFound(_0x468b1f,null))[_0x4f8d('0x2f')](function(_0x289bed){var _0x286040=_['map'](_0x289bed,'id');var _0x5cd567=[];var _0x1c8269=[];var _0x3a5ba5=squel[_0x4f8d('0x77')]();_0x3a5ba5['field'](_0x4f8d('0x78'))[_0x4f8d('0x79')](_0x4f8d('0x7a'),'tq')[_0x4f8d('0x7b')](_0x4f8d('0x7c'),'ut',_0x4f8d('0x7d'))['where']('WhatsappQueueId\x20=\x20?',_0x7040fc[_0x4f8d('0x49')]['id']);for(var _0x70e136=0x0;_0x70e136<_0x289bed['length'];_0x70e136+=0x1){let _0x529f5c=_0x289bed[_0x70e136];for(var _0x4e8530=0x0;_0x4e8530<_0x529f5c['Agents']['length'];_0x4e8530+=0x1){let _0x1a7d4f=_0x529f5c[_0x4f8d('0x6c')][_0x4e8530];var _0x18c3db=_0x3a5ba5['clone']();_0x18c3db['where'](_0x4f8d('0x7e'),_0x1a7d4f['id']);_0x1c8269[_0x4f8d('0x7f')](db[_0x4f8d('0x80')][_0x4f8d('0x39')](_0x18c3db[_0x4f8d('0x81')](),{'type':db['sequelize'][_0x4f8d('0x82')][_0x4f8d('0x83')]})[_0x4f8d('0x2f')](function(_0x4be209){if(_0x4be209[_0x4f8d('0x3f')]===0x1){return _0x1a7d4f['id'];}else{var _0x43b78a=_[_0x4f8d('0x84')](_['map'](_0x4be209,_0x4f8d('0x85')),function(_0x84bfba){return _[_0x4f8d('0x86')](_0x286040,_0x84bfba);});if(_0x43b78a){return _0x1a7d4f['id'];}}}));}}return BPromise[_0x4f8d('0x87')](_0x1c8269)[_0x4f8d('0x2f')](function(_0x4ea361){_0x5cd567=_(_0x5cd567)[_0x4f8d('0x88')](_0x4ea361)['compact']()[_0x4f8d('0x89')]();return db[_0x4f8d('0x34')]['find']({'where':{'id':_0x7040fc[_0x4f8d('0x49')]['id']}})['then'](function(_0x4ba5cc){return db['sequelize']['transaction'](function(_0x1535de){return _0x4ba5cc[_0x4f8d('0x76')](_0x7040fc[_0x4f8d('0x39')][_0x4f8d('0x69')],{'transaction':_0x1535de})[_0x4f8d('0x2f')](function(){if(!_[_0x4f8d('0x8a')](_0x5cd567)){return _0x4ba5cc[_0x4f8d('0x8b')](_0x5cd567,{'transaction':_0x1535de});}})['then'](function(){_0x5cd567[_0x4f8d('0x73')](function(_0x1fed85){socket[_0x4f8d('0x74')](_0x4f8d('0x8c'),{'UserId':_0x1fed85,'WhatsappQueueId':_0x4ba5cc['id']});});});});});});})['then'](respondWithStatusCode(_0x468b1f,null))[_0x4f8d('0x47')](handleError(_0x468b1f,null));};exports['addAgents']=function(_0x1178fa,_0x51663e,_0x2d8597){return db[_0x4f8d('0x34')]['find']({'where':{'id':_0x1178fa[_0x4f8d('0x49')]['id']}})[_0x4f8d('0x2f')](handleEntityNotFound(_0x51663e,null))[_0x4f8d('0x2f')](function(_0x3444bd){if(_0x3444bd){return _0x3444bd['addAgents'](_0x1178fa[_0x4f8d('0x56')][_0x4f8d('0x69')],_[_0x4f8d('0x8d')](_0x1178fa[_0x4f8d('0x56')],[_0x4f8d('0x69'),'id'])||{})[_0x4f8d('0x8e')](function(_0x16cfc4){for(var _0x5bb88e=0x0;_0x5bb88e<_0x1178fa[_0x4f8d('0x56')][_0x4f8d('0x69')][_0x4f8d('0x3f')];_0x5bb88e+=0x1){socket['emit'](_0x4f8d('0x75'),{'UserId':Number(_0x1178fa['body'][_0x4f8d('0x69')][_0x5bb88e]),'WhatsappQueueId':Number(_0x1178fa[_0x4f8d('0x49')]['id'])});}return _0x16cfc4;});}})['then'](respondWithResult(_0x51663e,null))[_0x4f8d('0x47')](handleError(_0x51663e,null));};exports[_0x4f8d('0x8b')]=function(_0x4d0f8a,_0x10e900,_0x17ab1c){return db['WhatsappQueue'][_0x4f8d('0x4d')]({'where':{'id':_0x4d0f8a[_0x4f8d('0x49')]['id']}})[_0x4f8d('0x2f')](handleEntityNotFound(_0x10e900,null))['then'](function(_0x13ae91){if(_0x13ae91){return _0x13ae91[_0x4f8d('0x8b')](_0x4d0f8a['query'][_0x4f8d('0x69')])[_0x4f8d('0x2f')](function(){if(_[_0x4f8d('0x8f')](_0x4d0f8a[_0x4f8d('0x39')][_0x4f8d('0x69')])){for(var _0x26a060=0x0;_0x26a060<_0x4d0f8a['query']['ids'][_0x4f8d('0x3f')];_0x26a060+=0x1){socket[_0x4f8d('0x74')](_0x4f8d('0x8c'),{'UserId':Number(_0x4d0f8a[_0x4f8d('0x39')][_0x4f8d('0x69')][_0x26a060]),'WhatsappQueueId':Number(_0x4d0f8a[_0x4f8d('0x49')]['id'])});}}else{socket[_0x4f8d('0x74')](_0x4f8d('0x8c'),{'UserId':Number(_0x4d0f8a[_0x4f8d('0x39')][_0x4f8d('0x69')]),'WhatsappQueueId':Number(_0x4d0f8a[_0x4f8d('0x49')]['id'])});}});}})[_0x4f8d('0x2f')](respondWithStatusCode(_0x10e900,null))[_0x4f8d('0x47')](handleError(_0x10e900,null));};exports[_0x4f8d('0x90')]=function(_0x1a5807,_0x2076ad,_0x6f16c){var _0x472ae1={};var _0x5cc3e5={};var _0x5d7697;var _0x3891dc;return db[_0x4f8d('0x34')][_0x4f8d('0x58')]({'where':{'id':_0x1a5807['params']['id']}})[_0x4f8d('0x2f')](handleEntityNotFound(_0x2076ad,null))[_0x4f8d('0x2f')](function(_0x67f551){if(_0x67f551){_0x5d7697=_0x67f551;_0x5cc3e5['model']=_[_0x4f8d('0x3a')](db[_0x4f8d('0x6b')][_0x4f8d('0x35')]);_0x5cc3e5[_0x4f8d('0x39')]=_['keys'](_0x1a5807[_0x4f8d('0x39')]);_0x5cc3e5[_0x4f8d('0x3b')]=_[_0x4f8d('0x3d')](_0x5cc3e5[_0x4f8d('0x38')],_0x5cc3e5['query']);_0x472ae1['attributes']=_['intersection'](_0x5cc3e5[_0x4f8d('0x38')],qs['fields'](_0x1a5807[_0x4f8d('0x39')]['fields']));_0x472ae1['attributes']=_0x472ae1[_0x4f8d('0x3c')][_0x4f8d('0x3f')]?_0x472ae1[_0x4f8d('0x3c')]:_0x5cc3e5[_0x4f8d('0x38')];_0x472ae1[_0x4f8d('0x42')]=qs[_0x4f8d('0x5a')](_0x1a5807[_0x4f8d('0x39')]['sort']);_0x472ae1['where']=qs[_0x4f8d('0x3b')](_[_0x4f8d('0x5b')](_0x1a5807[_0x4f8d('0x39')],_0x5cc3e5[_0x4f8d('0x3b')]));if(_0x1a5807[_0x4f8d('0x39')]['filter']){_0x472ae1[_0x4f8d('0x43')]=_[_0x4f8d('0x44')](_0x472ae1[_0x4f8d('0x43')],{'$or':_[_0x4f8d('0x33')](_0x472ae1[_0x4f8d('0x3c')],function(_0x2d2776){var _0x357833={};_0x357833[_0x2d2776]={'$like':'%'+_0x1a5807[_0x4f8d('0x39')][_0x4f8d('0x46')]+'%'};return _0x357833;})});}_0x472ae1=_[_0x4f8d('0x44')]({},_0x472ae1,_0x1a5807[_0x4f8d('0x4c')]);return _0x5d7697[_0x4f8d('0x90')](_0x472ae1);}})[_0x4f8d('0x2f')](function(_0x1ee06c){if(_0x1ee06c){_0x3891dc=_0x1ee06c[_0x4f8d('0x3f')];if(!_0x1a5807[_0x4f8d('0x39')]['hasOwnProperty'](_0x4f8d('0x41'))){_0x472ae1['limit']=qs[_0x4f8d('0x24')](_0x1a5807[_0x4f8d('0x39')][_0x4f8d('0x24')]);_0x472ae1['offset']=qs[_0x4f8d('0x22')](_0x1a5807[_0x4f8d('0x39')][_0x4f8d('0x22')]);}return _0x5d7697['getAgents'](_0x472ae1);}})[_0x4f8d('0x2f')](function(_0x1b60eb){if(_0x1b60eb){return _0x1b60eb?{'count':_0x3891dc,'rows':_0x1b60eb}:null;}})[_0x4f8d('0x2f')](respondWithResult(_0x2076ad,null))[_0x4f8d('0x47')](handleError(_0x2076ad,null));};
\ No newline at end of file
+var _0xdcd6=['ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','push','SELECT','every','TeamId','includes','union','compact','removeAgents','userWhatsappQueue:remove','addAgents','omit','userWhatsappQueue:save','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','redis','defaults','localhost','./whatsappQueue.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','WhatsappQueues','UserProfileResource','end','error','stack','name','send','map','WhatsappQueue','fieldName','type','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','rawAttributes','length','find','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','findOne','UserWhatsappQueue','User','findAndCountAll','agent','updatedAt','format','%s/%s','SIP','whatsappPause','createdAt','getTeams','Team','addTeams','ids','Agents','online','interface','flatMap','sequelize','transaction','findOrCreate','forEach','emit','removeTeams','field','from','join','user_has_teams'];(function(_0x486c5e,_0x4ba25c){var _0x205906=function(_0x2df27b){while(--_0x2df27b){_0x486c5e['push'](_0x486c5e['shift']());}};_0x205906(++_0x4ba25c);}(_0xdcd6,0x99));var _0x6dcd=function(_0x5d9ceb,_0x1a49f5){_0x5d9ceb=_0x5d9ceb-0x0;var _0x33ce82=_0xdcd6[_0x5d9ceb];return _0x33ce82;};'use strict';var emlformat=require(_0x6dcd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6dcd('0x1'));var jsonpatch=require(_0x6dcd('0x2'));var rp=require(_0x6dcd('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x6dcd('0x4'));var util=require(_0x6dcd('0x5'));var path=require(_0x6dcd('0x6'));var sox=require(_0x6dcd('0x7'));var csv=require(_0x6dcd('0x8'));var ejs=require(_0x6dcd('0x9'));var fs=require('fs');var fs_extra=require(_0x6dcd('0xa'));var _=require(_0x6dcd('0xb'));var squel=require(_0x6dcd('0xc'));var crypto=require(_0x6dcd('0xd'));var jsforce=require(_0x6dcd('0xe'));var deskjs=require(_0x6dcd('0xf'));var toCsv=require(_0x6dcd('0x8'));var querystring=require(_0x6dcd('0x10'));var Papa=require(_0x6dcd('0x11'));var Redis=require(_0x6dcd('0x12'));var authService=require(_0x6dcd('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6dcd('0x14'));var logger=require(_0x6dcd('0x15'))(_0x6dcd('0x16'));var utils=require(_0x6dcd('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x6dcd('0x18')]=_[_0x6dcd('0x19')](config[_0x6dcd('0x18')],{'host':_0x6dcd('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6dcd('0x18')]));require(_0x6dcd('0x1b'))[_0x6dcd('0x1c')](socket);function respondWithStatusCode(_0x15e84b,_0x151f34){_0x151f34=_0x151f34||0xcc;return function(_0x1614f4){if(_0x1614f4){return _0x15e84b[_0x6dcd('0x1d')](_0x151f34);}return _0x15e84b['status'](_0x151f34)['end']();};}function respondWithResult(_0x58cada,_0x21aaba){_0x21aaba=_0x21aaba||0xc8;return function(_0x5ba3f5){if(_0x5ba3f5){return _0x58cada[_0x6dcd('0x1e')](_0x21aaba)[_0x6dcd('0x1f')](_0x5ba3f5);}};}function respondWithFilteredResult(_0xe28665,_0x309c9d){return function(_0x163b50){if(_0x163b50){var _0x4781bf=typeof _0x309c9d[_0x6dcd('0x20')]===_0x6dcd('0x21')&&typeof _0x309c9d[_0x6dcd('0x22')]==='undefined';var _0x4ab721=_0x163b50[_0x6dcd('0x23')];var _0x1e1684=_0x4781bf?0x0:_0x309c9d[_0x6dcd('0x20')];var _0x7a362a=_0x4781bf?_0x163b50[_0x6dcd('0x23')]:_0x309c9d[_0x6dcd('0x20')]+_0x309c9d[_0x6dcd('0x22')];var _0x1f8d78;if(_0x7a362a>=_0x4ab721){_0x7a362a=_0x4ab721;_0x1f8d78=0xc8;}else{_0x1f8d78=0xce;}_0xe28665[_0x6dcd('0x1e')](_0x1f8d78);return _0xe28665[_0x6dcd('0x24')](_0x6dcd('0x25'),_0x1e1684+'-'+_0x7a362a+'/'+_0x4ab721)['json'](_0x163b50);}return null;};}function patchUpdates(_0x364a90){return function(_0x2b4061){try{jsonpatch[_0x6dcd('0x26')](_0x2b4061,_0x364a90,!![]);}catch(_0xeda102){return BPromise[_0x6dcd('0x27')](_0xeda102);}return _0x2b4061[_0x6dcd('0x28')]();};}function saveUpdates(_0x1697f9,_0x5bee90){return function(_0x14f139){if(_0x14f139){return _0x14f139[_0x6dcd('0x29')](_0x1697f9)[_0x6dcd('0x2a')](function(_0x54f1be){return _0x54f1be;});}return null;};}function removeEntity(_0x2ad698,_0xeac7c7){return function(_0x218484){if(_0x218484){return _0x218484[_0x6dcd('0x2b')]()['then'](function(){var _0x229d05=_0x218484['get']({'plain':!![]});var _0x20a92e=_0x6dcd('0x2c');return db[_0x6dcd('0x2d')][_0x6dcd('0x2b')]({'where':{'type':_0x20a92e,'resourceId':_0x229d05['id']}})[_0x6dcd('0x2a')](function(){return _0x218484;});})[_0x6dcd('0x2a')](function(){_0x2ad698['status'](0xcc)[_0x6dcd('0x2e')]();});}};}function handleEntityNotFound(_0x226322,_0x379626){return function(_0x5dc660){if(!_0x5dc660){_0x226322[_0x6dcd('0x1d')](0x194);}return _0x5dc660;};}function handleError(_0x19a653,_0x18ca69){_0x18ca69=_0x18ca69||0x1f4;return function(_0x15f554){logger[_0x6dcd('0x2f')](_0x15f554[_0x6dcd('0x30')]);if(_0x15f554[_0x6dcd('0x31')]){delete _0x15f554[_0x6dcd('0x31')];}_0x19a653[_0x6dcd('0x1e')](_0x18ca69)[_0x6dcd('0x32')](_0x15f554);};}exports['index']=function(_0x247c92,_0x4053db){var _0x7c7f50={},_0x50aa2b={},_0x4349c3={'count':0x0,'rows':[]};var _0xf0a348=_[_0x6dcd('0x33')](db[_0x6dcd('0x34')]['rawAttributes'],function(_0x164c84){return{'name':_0x164c84[_0x6dcd('0x35')],'type':_0x164c84[_0x6dcd('0x36')][_0x6dcd('0x37')]};});_0x50aa2b[_0x6dcd('0x38')]=_['map'](_0xf0a348,_0x6dcd('0x31'));_0x50aa2b['query']=_[_0x6dcd('0x39')](_0x247c92[_0x6dcd('0x3a')]);_0x50aa2b['filters']=_[_0x6dcd('0x3b')](_0x50aa2b[_0x6dcd('0x38')],_0x50aa2b['query']);_0x7c7f50[_0x6dcd('0x3c')]=_['intersection'](_0x50aa2b[_0x6dcd('0x38')],qs[_0x6dcd('0x3d')](_0x247c92['query'][_0x6dcd('0x3d')]));_0x7c7f50[_0x6dcd('0x3c')]=_0x7c7f50[_0x6dcd('0x3c')]['length']?_0x7c7f50['attributes']:_0x50aa2b[_0x6dcd('0x38')];if(!_0x247c92[_0x6dcd('0x3a')][_0x6dcd('0x3e')](_0x6dcd('0x3f'))){_0x7c7f50[_0x6dcd('0x22')]=qs['limit'](_0x247c92[_0x6dcd('0x3a')][_0x6dcd('0x22')]);_0x7c7f50['offset']=qs[_0x6dcd('0x20')](_0x247c92['query'][_0x6dcd('0x20')]);}_0x7c7f50[_0x6dcd('0x40')]=qs[_0x6dcd('0x41')](_0x247c92[_0x6dcd('0x3a')][_0x6dcd('0x41')]);_0x7c7f50[_0x6dcd('0x42')]=qs[_0x6dcd('0x43')](_[_0x6dcd('0x44')](_0x247c92[_0x6dcd('0x3a')],_0x50aa2b['filters']),_0xf0a348);if(_0x247c92[_0x6dcd('0x3a')][_0x6dcd('0x45')]){_0x7c7f50[_0x6dcd('0x42')]=_[_0x6dcd('0x46')](_0x7c7f50[_0x6dcd('0x42')],{'$or':_[_0x6dcd('0x33')](_0xf0a348,function(_0x556aba){if(_0x556aba[_0x6dcd('0x36')]!==_0x6dcd('0x47')){var _0x4a5f1b={};_0x4a5f1b[_0x556aba[_0x6dcd('0x31')]]={'$like':'%'+_0x247c92[_0x6dcd('0x3a')][_0x6dcd('0x45')]+'%'};return _0x4a5f1b;}})});}_0x7c7f50=_[_0x6dcd('0x46')]({},_0x7c7f50,_0x247c92[_0x6dcd('0x48')]);var _0x3fac5c={'where':_0x7c7f50[_0x6dcd('0x42')]};return db[_0x6dcd('0x34')][_0x6dcd('0x23')](_0x3fac5c)[_0x6dcd('0x2a')](function(_0x184550){_0x4349c3['count']=_0x184550;if(_0x247c92[_0x6dcd('0x3a')][_0x6dcd('0x49')]){_0x7c7f50[_0x6dcd('0x4a')]=[{'all':!![]}];}return db[_0x6dcd('0x34')][_0x6dcd('0x4b')](_0x7c7f50);})[_0x6dcd('0x2a')](function(_0x491606){_0x4349c3[_0x6dcd('0x4c')]=_0x491606;return _0x4349c3;})[_0x6dcd('0x2a')](respondWithFilteredResult(_0x4053db,_0x7c7f50))[_0x6dcd('0x4d')](handleError(_0x4053db,null));};exports[_0x6dcd('0x4e')]=function(_0x488649,_0x2b31d4){var _0x3fb555={'raw':!![],'where':{'id':_0x488649['params']['id']}},_0x38188f={};_0x38188f['model']=_[_0x6dcd('0x39')](db[_0x6dcd('0x34')][_0x6dcd('0x4f')]);_0x38188f['query']=_['keys'](_0x488649['query']);_0x38188f[_0x6dcd('0x43')]=_[_0x6dcd('0x3b')](_0x38188f[_0x6dcd('0x38')],_0x38188f[_0x6dcd('0x3a')]);_0x3fb555[_0x6dcd('0x3c')]=_[_0x6dcd('0x3b')](_0x38188f[_0x6dcd('0x38')],qs[_0x6dcd('0x3d')](_0x488649[_0x6dcd('0x3a')]['fields']));_0x3fb555[_0x6dcd('0x3c')]=_0x3fb555[_0x6dcd('0x3c')][_0x6dcd('0x50')]?_0x3fb555[_0x6dcd('0x3c')]:_0x38188f[_0x6dcd('0x38')];if(_0x488649['query'][_0x6dcd('0x49')]){_0x3fb555[_0x6dcd('0x4a')]=[{'all':!![]}];}_0x3fb555=_['merge']({},_0x3fb555,_0x488649[_0x6dcd('0x48')]);return db['WhatsappQueue'][_0x6dcd('0x51')](_0x3fb555)['then'](handleEntityNotFound(_0x2b31d4,null))[_0x6dcd('0x2a')](respondWithResult(_0x2b31d4,null))[_0x6dcd('0x4d')](handleError(_0x2b31d4,null));};exports['create']=function(_0xeb4b9b,_0x30cec8){return db['WhatsappQueue']['create'](_0xeb4b9b[_0x6dcd('0x52')],{})[_0x6dcd('0x2a')](function(_0x3bb41e){var _0x9edf4=_0xeb4b9b[_0x6dcd('0x53')][_0x6dcd('0x54')]({'plain':!![]});if(!_0x9edf4)throw new Error(_0x6dcd('0x55'));if(_0x9edf4['role']===_0x6dcd('0x53')){var _0x1fcd9a=_0x3bb41e[_0x6dcd('0x54')]({'plain':!![]});var _0x38881f='WhatsappQueues';return db['UserProfileSection']['find']({'where':{'name':_0x38881f,'userProfileId':_0x9edf4['userProfileId']},'raw':!![]})[_0x6dcd('0x2a')](function(_0x28bcb6){if(_0x28bcb6&&_0x28bcb6[_0x6dcd('0x56')]===0x0){return db['UserProfileResource'][_0x6dcd('0x57')]({'name':_0x1fcd9a[_0x6dcd('0x31')],'resourceId':_0x1fcd9a['id'],'type':_0x28bcb6[_0x6dcd('0x31')],'sectionId':_0x28bcb6['id']},{})[_0x6dcd('0x2a')](function(){return _0x3bb41e;});}else{return _0x3bb41e;}})['catch'](function(_0x53baea){logger[_0x6dcd('0x2f')](_0x6dcd('0x58'),_0x53baea);throw _0x53baea;});}return _0x3bb41e;})['then'](respondWithResult(_0x30cec8,0xc9))[_0x6dcd('0x4d')](handleError(_0x30cec8,null));};exports[_0x6dcd('0x29')]=function(_0x41fc6a,_0x364fcb){if(_0x41fc6a['body']['id']){delete _0x41fc6a[_0x6dcd('0x52')]['id'];}return db[_0x6dcd('0x34')]['find']({'where':{'id':_0x41fc6a[_0x6dcd('0x59')]['id']}})[_0x6dcd('0x2a')](handleEntityNotFound(_0x364fcb,null))[_0x6dcd('0x2a')](saveUpdates(_0x41fc6a[_0x6dcd('0x52')],null))[_0x6dcd('0x2a')](respondWithResult(_0x364fcb,null))[_0x6dcd('0x4d')](handleError(_0x364fcb,null));};exports[_0x6dcd('0x2b')]=function(_0x7c6559,_0x5bdb6e){return db[_0x6dcd('0x34')]['find']({'where':{'id':_0x7c6559[_0x6dcd('0x59')]['id']}})['then'](handleEntityNotFound(_0x5bdb6e,null))[_0x6dcd('0x2a')](removeEntity(_0x5bdb6e,null))['catch'](handleError(_0x5bdb6e,null));};exports[_0x6dcd('0x5a')]=function(_0xb01d1e,_0x54e52c){return db[_0x6dcd('0x34')][_0x6dcd('0x5a')]()[_0x6dcd('0x2a')](respondWithResult(_0x54e52c,null))[_0x6dcd('0x4d')](handleError(_0x54e52c,null));};exports[_0x6dcd('0x5b')]=function(_0x3b5cc4,_0x317397,_0x41719f){var _0x390a82={'raw':!![],'where':{}},_0x4c500d={},_0x14d28c;return db[_0x6dcd('0x34')][_0x6dcd('0x5c')]({'where':{'id':_0x3b5cc4['params']['id']}})[_0x6dcd('0x2a')](handleEntityNotFound(_0x317397,null))[_0x6dcd('0x2a')](function(_0x5609e0){if(_0x5609e0){_0x14d28c=_0x5609e0[_0x6dcd('0x54')]({'plain':!![]});_0x4c500d[_0x6dcd('0x38')]=_[_0x6dcd('0x39')](db['UserWhatsappQueue'][_0x6dcd('0x4f')]);_0x4c500d[_0x6dcd('0x3a')]=_[_0x6dcd('0x39')](_0x3b5cc4[_0x6dcd('0x3a')]);_0x4c500d['filters']=_[_0x6dcd('0x3b')](_0x4c500d[_0x6dcd('0x38')],_0x4c500d[_0x6dcd('0x3a')]);_0x390a82['attributes']=_[_0x6dcd('0x3b')](_0x4c500d[_0x6dcd('0x38')],qs[_0x6dcd('0x3d')](_0x3b5cc4[_0x6dcd('0x3a')][_0x6dcd('0x3d')]));_0x390a82[_0x6dcd('0x3c')]=_0x390a82[_0x6dcd('0x3c')]['length']?_0x390a82[_0x6dcd('0x3c')]:_0x4c500d[_0x6dcd('0x38')];if(!_0x3b5cc4[_0x6dcd('0x3a')]['hasOwnProperty'](_0x6dcd('0x3f'))){_0x390a82['limit']=qs[_0x6dcd('0x22')](_0x3b5cc4[_0x6dcd('0x3a')][_0x6dcd('0x22')]);_0x390a82['offset']=qs['offset'](_0x3b5cc4[_0x6dcd('0x3a')][_0x6dcd('0x20')]);}_0x390a82['order']=qs['sort'](_0x3b5cc4[_0x6dcd('0x3a')][_0x6dcd('0x41')]);_0x390a82[_0x6dcd('0x42')]=qs[_0x6dcd('0x43')](_[_0x6dcd('0x44')](_0x3b5cc4[_0x6dcd('0x3a')],_0x4c500d['filters']));_0x390a82[_0x6dcd('0x42')]['WhatsappQueueId']=_0x5609e0['id'];if(_0x3b5cc4[_0x6dcd('0x3a')][_0x6dcd('0x45')]){_0x390a82[_0x6dcd('0x42')]=_[_0x6dcd('0x46')](_0x390a82['where'],{'$or':_[_0x6dcd('0x33')](_0x390a82['attributes'],function(_0x1205a3){var _0x452c5d={};_0x452c5d[_0x1205a3]={'$like':'%'+_0x3b5cc4[_0x6dcd('0x3a')]['filter']+'%'};return _0x452c5d;})});}_0x390a82=_[_0x6dcd('0x46')]({},_0x390a82,_0x3b5cc4[_0x6dcd('0x48')]);return db[_0x6dcd('0x5d')][_0x6dcd('0x4b')](_0x390a82);}})[_0x6dcd('0x2a')](function(_0x1ff5e5){if(_0x1ff5e5){return db[_0x6dcd('0x5e')][_0x6dcd('0x5f')]({'where':{'id':_['map'](_0x1ff5e5,'UserId'),'role':_0x6dcd('0x60')},'attributes':['id','name','whatsappPause',_0x6dcd('0x61'),'createdAt']});}})[_0x6dcd('0x2a')](function(_0x5d3305){if(_0x5d3305){return{'count':_0x5d3305[_0x6dcd('0x23')],'rows':_['map'](_0x5d3305['rows'],function(_0xa4ec74){return{'membername':_0xa4ec74['name'],'UserId':_0xa4ec74['id'],'queue_name':_0x14d28c['name'],'WhatsappQueueId':_0x14d28c['id'],'interface':util[_0x6dcd('0x62')](_0x6dcd('0x63'),_0x6dcd('0x64'),_0xa4ec74[_0x6dcd('0x31')]),'penalty':0x0,'paused':_0xa4ec74[_0x6dcd('0x65')],'createdAt':_0xa4ec74[_0x6dcd('0x66')],'updatedAt':_0xa4ec74['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x317397,_0x390a82))['catch'](handleError(_0x317397,null));};exports[_0x6dcd('0x67')]=function(_0x54c10f,_0x4c5206,_0x60b4d3){var _0x1de5ce={};var _0x434838={};var _0x3f50c0;var _0x140784;return db['WhatsappQueue']['findOne']({'where':{'id':_0x54c10f[_0x6dcd('0x59')]['id']}})[_0x6dcd('0x2a')](handleEntityNotFound(_0x4c5206,null))[_0x6dcd('0x2a')](function(_0x4cac80){if(_0x4cac80){_0x3f50c0=_0x4cac80;_0x434838[_0x6dcd('0x38')]=_['keys'](db[_0x6dcd('0x68')][_0x6dcd('0x4f')]);_0x434838[_0x6dcd('0x3a')]=_[_0x6dcd('0x39')](_0x54c10f['query']);_0x434838[_0x6dcd('0x43')]=_[_0x6dcd('0x3b')](_0x434838[_0x6dcd('0x38')],_0x434838[_0x6dcd('0x3a')]);_0x1de5ce['attributes']=_[_0x6dcd('0x3b')](_0x434838['model'],qs[_0x6dcd('0x3d')](_0x54c10f['query'][_0x6dcd('0x3d')]));_0x1de5ce[_0x6dcd('0x3c')]=_0x1de5ce[_0x6dcd('0x3c')][_0x6dcd('0x50')]?_0x1de5ce[_0x6dcd('0x3c')]:_0x434838[_0x6dcd('0x38')];_0x1de5ce[_0x6dcd('0x40')]=qs[_0x6dcd('0x41')](_0x54c10f[_0x6dcd('0x3a')][_0x6dcd('0x41')]);_0x1de5ce[_0x6dcd('0x42')]=qs['filters'](_[_0x6dcd('0x44')](_0x54c10f[_0x6dcd('0x3a')],_0x434838[_0x6dcd('0x43')]));if(_0x54c10f['query'][_0x6dcd('0x45')]){_0x1de5ce[_0x6dcd('0x42')]=_[_0x6dcd('0x46')](_0x1de5ce[_0x6dcd('0x42')],{'$or':_[_0x6dcd('0x33')](_0x1de5ce[_0x6dcd('0x3c')],function(_0x39d6fa){var _0x444fa9={};_0x444fa9[_0x39d6fa]={'$like':'%'+_0x54c10f[_0x6dcd('0x3a')]['filter']+'%'};return _0x444fa9;})});}_0x1de5ce=_[_0x6dcd('0x46')]({},_0x1de5ce,_0x54c10f['options']);return _0x3f50c0[_0x6dcd('0x67')](_0x1de5ce);}})[_0x6dcd('0x2a')](function(_0x7d3d40){if(_0x7d3d40){_0x140784=_0x7d3d40[_0x6dcd('0x50')];if(!_0x54c10f[_0x6dcd('0x3a')][_0x6dcd('0x3e')]('nolimit')){_0x1de5ce['limit']=qs['limit'](_0x54c10f['query']['limit']);_0x1de5ce[_0x6dcd('0x20')]=qs[_0x6dcd('0x20')](_0x54c10f[_0x6dcd('0x3a')][_0x6dcd('0x20')]);}return _0x3f50c0[_0x6dcd('0x67')](_0x1de5ce);}})['then'](function(_0x15b951){if(_0x15b951){return _0x15b951?{'count':_0x140784,'rows':_0x15b951}:null;}})[_0x6dcd('0x2a')](respondWithResult(_0x4c5206,null))[_0x6dcd('0x4d')](handleError(_0x4c5206,null));};exports[_0x6dcd('0x69')]=function(_0x7bb5a4,_0x4566ef,_0x574fda){var _0x53459b=_0x7bb5a4[_0x6dcd('0x52')][_0x6dcd('0x6a')];return db[_0x6dcd('0x68')]['findAll']({'where':{'id':_0x53459b},'attributes':['id'],'include':[{'model':db[_0x6dcd('0x5e')],'as':_0x6dcd('0x6b'),'attributes':['id',_0x6dcd('0x31'),_0x6dcd('0x6c'),'voicePause',_0x6dcd('0x6d')],'raw':!![]}]})[_0x6dcd('0x2a')](function(_0x5d8835){if(_0x5d8835){var _0x4fb225=_[_0x6dcd('0x6e')](_0x5d8835,function(_0x3918e8){var _0x393e08=_0x3918e8[_0x6dcd('0x54')]({'plain':!![]});return _0x393e08[_0x6dcd('0x6b')];});return db[_0x6dcd('0x34')][_0x6dcd('0x51')]({'where':{'id':_0x7bb5a4[_0x6dcd('0x59')]['id']}})['then'](function(_0x2fdf68){return db[_0x6dcd('0x6f')][_0x6dcd('0x70')](function(_0x4cbdab){return _0x2fdf68[_0x6dcd('0x69')](_0x53459b,{'transaction':_0x4cbdab})[_0x6dcd('0x2a')](function(){return BPromise['each'](_0x4fb225,function(_0x12a78b){return db[_0x6dcd('0x5d')][_0x6dcd('0x71')]({'where':{'UserId':_0x12a78b['id'],'WhatsappQueueId':_0x7bb5a4[_0x6dcd('0x59')]['id']},'transaction':_0x4cbdab});});})[_0x6dcd('0x2a')](function(){_0x4fb225[_0x6dcd('0x72')](function(_0x328363){socket[_0x6dcd('0x73')]('userWhatsappQueue:save',{'UserId':_0x328363['id'],'WhatsappQueueId':_0x2fdf68['id']});});});});});}})[_0x6dcd('0x2a')](respondWithStatusCode(_0x4566ef,null))[_0x6dcd('0x4d')](handleError(_0x4566ef,null));};exports[_0x6dcd('0x74')]=function(_0x4ed282,_0x3e6baa,_0x5db1b8){return db['Team']['findAll']({'where':{'id':_0x4ed282['query'][_0x6dcd('0x6a')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x6dcd('0x2a')](handleEntityNotFound(_0x3e6baa,null))[_0x6dcd('0x2a')](function(_0x580bbd){var _0x50319f=_['map'](_0x580bbd,'id');var _0x294260=[];var _0x55b023=[];var _0x231619=squel['select']();_0x231619[_0x6dcd('0x75')]('tq.TeamId')[_0x6dcd('0x76')]('team_has_whatsapp_queues','tq')[_0x6dcd('0x77')](_0x6dcd('0x78'),'ut',_0x6dcd('0x79'))[_0x6dcd('0x42')](_0x6dcd('0x7a'),_0x4ed282[_0x6dcd('0x59')]['id']);for(var _0x103618=0x0;_0x103618<_0x580bbd[_0x6dcd('0x50')];_0x103618+=0x1){let _0xc8a55c=_0x580bbd[_0x103618];for(var _0x47baf6=0x0;_0x47baf6<_0xc8a55c[_0x6dcd('0x6b')]['length'];_0x47baf6+=0x1){let _0x21eb27=_0xc8a55c['Agents'][_0x47baf6];var _0x34bf2b=_0x231619[_0x6dcd('0x7b')]();_0x34bf2b[_0x6dcd('0x42')]('ut.UserId\x20=\x20?',_0x21eb27['id']);_0x55b023[_0x6dcd('0x7c')](db[_0x6dcd('0x6f')][_0x6dcd('0x3a')](_0x34bf2b['toString'](),{'type':db[_0x6dcd('0x6f')]['QueryTypes'][_0x6dcd('0x7d')]})['then'](function(_0x3605a2){if(_0x3605a2['length']===0x1){return _0x21eb27['id'];}else{var _0x378a7b=_[_0x6dcd('0x7e')](_['map'](_0x3605a2,_0x6dcd('0x7f')),function(_0x1e4f4f){return _[_0x6dcd('0x80')](_0x50319f,_0x1e4f4f);});if(_0x378a7b){return _0x21eb27['id'];}}}));}}return BPromise['all'](_0x55b023)[_0x6dcd('0x2a')](function(_0x151f90){_0x294260=_(_0x294260)[_0x6dcd('0x81')](_0x151f90)[_0x6dcd('0x82')]()['value']();return db['WhatsappQueue'][_0x6dcd('0x51')]({'where':{'id':_0x4ed282[_0x6dcd('0x59')]['id']}})[_0x6dcd('0x2a')](function(_0xc0edb9){return db[_0x6dcd('0x6f')][_0x6dcd('0x70')](function(_0x140294){return _0xc0edb9[_0x6dcd('0x74')](_0x4ed282[_0x6dcd('0x3a')][_0x6dcd('0x6a')],{'transaction':_0x140294})['then'](function(){if(!_['isEmpty'](_0x294260)){return _0xc0edb9[_0x6dcd('0x83')](_0x294260,{'transaction':_0x140294});}})[_0x6dcd('0x2a')](function(){_0x294260[_0x6dcd('0x72')](function(_0x8a84aa){socket['emit'](_0x6dcd('0x84'),{'UserId':_0x8a84aa,'WhatsappQueueId':_0xc0edb9['id']});});});});});});})[_0x6dcd('0x2a')](respondWithStatusCode(_0x3e6baa,null))[_0x6dcd('0x4d')](handleError(_0x3e6baa,null));};exports[_0x6dcd('0x85')]=function(_0x459dee,_0x41b93a,_0x1433fc){return db[_0x6dcd('0x34')][_0x6dcd('0x51')]({'where':{'id':_0x459dee['params']['id']}})[_0x6dcd('0x2a')](handleEntityNotFound(_0x41b93a,null))['then'](function(_0x4751a9){if(_0x4751a9){return _0x4751a9['addAgents'](_0x459dee[_0x6dcd('0x52')][_0x6dcd('0x6a')],_[_0x6dcd('0x86')](_0x459dee[_0x6dcd('0x52')],[_0x6dcd('0x6a'),'id'])||{})['spread'](function(_0x11876f){for(var _0x5be0a6=0x0;_0x5be0a6<_0x459dee['body'][_0x6dcd('0x6a')][_0x6dcd('0x50')];_0x5be0a6+=0x1){socket[_0x6dcd('0x73')](_0x6dcd('0x87'),{'UserId':Number(_0x459dee[_0x6dcd('0x52')][_0x6dcd('0x6a')][_0x5be0a6]),'WhatsappQueueId':Number(_0x459dee[_0x6dcd('0x59')]['id'])});}return _0x11876f;});}})[_0x6dcd('0x2a')](respondWithResult(_0x41b93a,null))[_0x6dcd('0x4d')](handleError(_0x41b93a,null));};exports[_0x6dcd('0x83')]=function(_0x2d8c5c,_0x53290f,_0xea7e0a){return db[_0x6dcd('0x34')]['find']({'where':{'id':_0x2d8c5c[_0x6dcd('0x59')]['id']}})['then'](handleEntityNotFound(_0x53290f,null))[_0x6dcd('0x2a')](function(_0x3b15a0){if(_0x3b15a0){return _0x3b15a0['removeAgents'](_0x2d8c5c[_0x6dcd('0x3a')]['ids'])['then'](function(){if(_['isArray'](_0x2d8c5c[_0x6dcd('0x3a')][_0x6dcd('0x6a')])){for(var _0x1fabbc=0x0;_0x1fabbc<_0x2d8c5c['query'][_0x6dcd('0x6a')][_0x6dcd('0x50')];_0x1fabbc+=0x1){socket[_0x6dcd('0x73')](_0x6dcd('0x84'),{'UserId':Number(_0x2d8c5c[_0x6dcd('0x3a')]['ids'][_0x1fabbc]),'WhatsappQueueId':Number(_0x2d8c5c['params']['id'])});}}else{socket[_0x6dcd('0x73')](_0x6dcd('0x84'),{'UserId':Number(_0x2d8c5c[_0x6dcd('0x3a')][_0x6dcd('0x6a')]),'WhatsappQueueId':Number(_0x2d8c5c[_0x6dcd('0x59')]['id'])});}});}})[_0x6dcd('0x2a')](respondWithStatusCode(_0x53290f,null))[_0x6dcd('0x4d')](handleError(_0x53290f,null));};exports[_0x6dcd('0x88')]=function(_0x56010a,_0x3cea05,_0x32ef9e){var _0x559f8a={};var _0x5b042d={};var _0x5608f1;var _0x107de9;return db[_0x6dcd('0x34')][_0x6dcd('0x5c')]({'where':{'id':_0x56010a['params']['id']}})[_0x6dcd('0x2a')](handleEntityNotFound(_0x3cea05,null))['then'](function(_0x3a6f04){if(_0x3a6f04){_0x5608f1=_0x3a6f04;_0x5b042d['model']=_['keys'](db['User'][_0x6dcd('0x4f')]);_0x5b042d[_0x6dcd('0x3a')]=_['keys'](_0x56010a[_0x6dcd('0x3a')]);_0x5b042d['filters']=_[_0x6dcd('0x3b')](_0x5b042d['model'],_0x5b042d['query']);_0x559f8a[_0x6dcd('0x3c')]=_[_0x6dcd('0x3b')](_0x5b042d[_0x6dcd('0x38')],qs['fields'](_0x56010a[_0x6dcd('0x3a')]['fields']));_0x559f8a[_0x6dcd('0x3c')]=_0x559f8a[_0x6dcd('0x3c')][_0x6dcd('0x50')]?_0x559f8a['attributes']:_0x5b042d[_0x6dcd('0x38')];_0x559f8a[_0x6dcd('0x40')]=qs[_0x6dcd('0x41')](_0x56010a[_0x6dcd('0x3a')][_0x6dcd('0x41')]);_0x559f8a[_0x6dcd('0x42')]=qs[_0x6dcd('0x43')](_[_0x6dcd('0x44')](_0x56010a[_0x6dcd('0x3a')],_0x5b042d[_0x6dcd('0x43')]));if(_0x56010a['query'][_0x6dcd('0x45')]){_0x559f8a[_0x6dcd('0x42')]=_[_0x6dcd('0x46')](_0x559f8a[_0x6dcd('0x42')],{'$or':_[_0x6dcd('0x33')](_0x559f8a[_0x6dcd('0x3c')],function(_0x33ae59){var _0x3b0ce1={};_0x3b0ce1[_0x33ae59]={'$like':'%'+_0x56010a[_0x6dcd('0x3a')][_0x6dcd('0x45')]+'%'};return _0x3b0ce1;})});}_0x559f8a=_[_0x6dcd('0x46')]({},_0x559f8a,_0x56010a[_0x6dcd('0x48')]);return _0x5608f1[_0x6dcd('0x88')](_0x559f8a);}})['then'](function(_0x1bc98c){if(_0x1bc98c){_0x107de9=_0x1bc98c[_0x6dcd('0x50')];if(!_0x56010a[_0x6dcd('0x3a')]['hasOwnProperty']('nolimit')){_0x559f8a[_0x6dcd('0x22')]=qs['limit'](_0x56010a[_0x6dcd('0x3a')]['limit']);_0x559f8a[_0x6dcd('0x20')]=qs[_0x6dcd('0x20')](_0x56010a[_0x6dcd('0x3a')][_0x6dcd('0x20')]);}return _0x5608f1[_0x6dcd('0x88')](_0x559f8a);}})[_0x6dcd('0x2a')](function(_0x2e407c){if(_0x2e407c){return _0x2e407c?{'count':_0x107de9,'rows':_0x2e407c}:null;}})[_0x6dcd('0x2a')](respondWithResult(_0x3cea05,null))[_0x6dcd('0x4d')](handleError(_0x3cea05,null));};
\ No newline at end of file
index 3664570..c4486b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x387e=['exports','events','../../mysqldb','WhatsappQueue','setMaxListeners','save','update','emit','hook'];(function(_0x20589d,_0x55d5bf){var _0x422de9=function(_0x44cbbb){while(--_0x44cbbb){_0x20589d['push'](_0x20589d['shift']());}};_0x422de9(++_0x55d5bf);}(_0x387e,0x1a8));var _0xe387=function(_0x43a1b8,_0x1c90c8){_0x43a1b8=_0x43a1b8-0x0;var _0x324ecc=_0x387e[_0x43a1b8];return _0x324ecc;};'use strict';var EventEmitter=require(_0xe387('0x0'));var WhatsappQueue=require(_0xe387('0x1'))['db'][_0xe387('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xe387('0x3')](0x0);var events={'afterCreate':_0xe387('0x4'),'afterUpdate':_0xe387('0x5'),'afterDestroy':'remove'};function emitEvent(_0x29156a){return function(_0xbe53ae,_0x2acccf,_0x276336){WhatsappQueueEvents[_0xe387('0x6')](_0x29156a+':'+_0xbe53ae['id'],_0xbe53ae);WhatsappQueueEvents[_0xe387('0x6')](_0x29156a,_0xbe53ae);_0x276336(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0xe387('0x7')](e,emitEvent(event));}}module[_0xe387('0x8')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x63fe=['events','../../mysqldb','save','emit','hasOwnProperty','hook','exports'];(function(_0x35af23,_0x9190f6){var _0x340506=function(_0xd4c26b){while(--_0xd4c26b){_0x35af23['push'](_0x35af23['shift']());}};_0x340506(++_0x9190f6);}(_0x63fe,0x1a4));var _0xe63f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x63fe[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xe63f('0x0'));var WhatsappQueue=require(_0xe63f('0x1'))['db']['WhatsappQueue'];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe63f('0x2'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xa70e46){return function(_0x4c5366,_0x3bc40d,_0x49a49e){WhatsappQueueEvents[_0xe63f('0x3')](_0xa70e46+':'+_0x4c5366['id'],_0x4c5366);WhatsappQueueEvents[_0xe63f('0x3')](_0xa70e46,_0x4c5366);_0x49a49e(null);};}for(var e in events){if(events[_0xe63f('0x4')](e)){var event=events[e];WhatsappQueue[_0xe63f('0x5')](e,emitEvent(event));}}module[_0xe63f('0x6')]=WhatsappQueueEvents;
\ No newline at end of file
index e48a34d..eb76154 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e87=['./whatsappQueue.attributes','exports','define','WhatsappQueue','lodash','../../config/logger','api','moment','bluebird','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6e87,0x19e));var _0x76e8=function(_0x5a4e67,_0x1bc05c){_0x5a4e67=_0x5a4e67-0x0;var _0x42df7a=_0x6e87[_0x5a4e67];return _0x42df7a;};'use strict';var _=require(_0x76e8('0x0'));var util=require('util');var logger=require(_0x76e8('0x1'))(_0x76e8('0x2'));var moment=require(_0x76e8('0x3'));var BPromise=require(_0x76e8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x76e8('0x5'));var attributes=require(_0x76e8('0x6'));module[_0x76e8('0x7')]=function(_0x1b8892,_0x5f1050){return _0x1b8892[_0x76e8('0x8')](_0x76e8('0x9'),attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf309=['moment','bluebird','request-promise','path','../../config/environment','exports','WhatsappQueue','whatsapp_queues','lodash','../../config/logger'];(function(_0x342fc7,_0x526243){var _0x5a545e=function(_0x2268b9){while(--_0x2268b9){_0x342fc7['push'](_0x342fc7['shift']());}};_0x5a545e(++_0x526243);}(_0xf309,0x1f2));var _0x9f30=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xf309[_0x6c993a];return _0x27f547;};'use strict';var _=require(_0x9f30('0x0'));var util=require('util');var logger=require(_0x9f30('0x1'))('api');var moment=require(_0x9f30('0x2'));var BPromise=require(_0x9f30('0x3'));var rp=require(_0x9f30('0x4'));var fs=require('fs');var path=require(_0x9f30('0x5'));var rimraf=require('rimraf');var config=require(_0x9f30('0x6'));var attributes=require('./whatsappQueue.attributes');module[_0x9f30('0x7')]=function(_0x524922,_0x132bac){return _0x524922['define'](_0x9f30('0x8'),attributes,{'tableName':_0x9f30('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 996e66d..0818bae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68cf=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./whatsappQueue.socket','register','request','then','info','WhatsappQueue,\x20%s,\x20%s','WhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','attributes','limit','include','map','model','find','where','ShowWhatsappQueue','stringify','lodash'];(function(_0x22d520,_0x2848ce){var _0x2b9844=function(_0x4942a7){while(--_0x4942a7){_0x22d520['push'](_0x22d520['shift']());}};_0x2b9844(++_0x2848ce);}(_0x68cf,0xa3));var _0xf68c=function(_0x246517,_0x5ca29e){_0x246517=_0x246517-0x0;var _0x2b2eb1=_0x68cf[_0x246517];return _0x2b2eb1;};'use strict';var _=require(_0xf68c('0x0'));var util=require(_0xf68c('0x1'));var moment=require(_0xf68c('0x2'));var BPromise=require(_0xf68c('0x3'));var rs=require(_0xf68c('0x4'));var fs=require('fs');var Redis=require(_0xf68c('0x5'));var db=require(_0xf68c('0x6'))['db'];var utils=require(_0xf68c('0x7'));var logger=require('../../config/logger')(_0xf68c('0x8'));var config=require(_0xf68c('0x9'));var jayson=require(_0xf68c('0xa'));var client=jayson[_0xf68c('0xb')]['http']({'port':0x232a});config[_0xf68c('0xc')]=_[_0xf68c('0xd')](config[_0xf68c('0xc')],{'host':_0xf68c('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xf68c('0xf'))[_0xf68c('0x10')](socket);function respondWithRpcPromise(_0x2dad52,_0x2d76d8,_0x3e6281){return new BPromise(function(_0x548dd9,_0x3f28a1){return client[_0xf68c('0x11')](_0x2dad52,_0x3e6281)[_0xf68c('0x12')](function(_0x5d08bf){logger[_0xf68c('0x13')](_0xf68c('0x14'),_0x2d76d8,'request\x20sent');logger['debug'](_0xf68c('0x15'),_0x2d76d8,_0xf68c('0x16'),JSON['stringify'](_0x5d08bf));if(_0x5d08bf[_0xf68c('0x17')]){if(_0x5d08bf['error'][_0xf68c('0x18')]===0x1f4){logger[_0xf68c('0x17')]('WhatsappQueue,\x20%s,\x20%s',_0x2d76d8,_0x5d08bf[_0xf68c('0x17')][_0xf68c('0x19')]);return _0x3f28a1(_0x5d08bf[_0xf68c('0x17')][_0xf68c('0x19')]);}logger['error'](_0xf68c('0x14'),_0x2d76d8,_0x5d08bf[_0xf68c('0x17')][_0xf68c('0x19')]);return _0x548dd9(_0x5d08bf['error'][_0xf68c('0x19')]);}else{logger['info'](_0xf68c('0x14'),_0x2d76d8,'request\x20sent');_0x548dd9(_0x5d08bf[_0xf68c('0x1a')]['message']);}})[_0xf68c('0x1b')](function(_0x163cf7){logger['error']('WhatsappQueue,\x20%s,\x20%s',_0x2d76d8,_0x163cf7);_0x3f28a1(_0x163cf7);});});}exports[_0xf68c('0x1c')]=function(_0x107a5d){var _0x252664=this;return new Promise(function(_0x384ed3,_0x2867b9){return db[_0xf68c('0x1d')][_0xf68c('0x1e')]({'raw':_0x107a5d['options']?_0x107a5d[_0xf68c('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x107a5d['options']?_0x107a5d[_0xf68c('0x1f')]['where']||null:null,'attributes':_0x107a5d[_0xf68c('0x1f')]?_0x107a5d[_0xf68c('0x1f')][_0xf68c('0x20')]||null:null,'limit':_0x107a5d[_0xf68c('0x1f')]?_0x107a5d[_0xf68c('0x1f')][_0xf68c('0x21')]||null:null,'include':_0x107a5d[_0xf68c('0x1f')]?_0x107a5d[_0xf68c('0x1f')][_0xf68c('0x22')]?_[_0xf68c('0x23')](_0x107a5d[_0xf68c('0x1f')]['include'],function(_0x4f7fbe){return{'model':db[_0x4f7fbe[_0xf68c('0x24')]],'as':_0x4f7fbe['as'],'attributes':_0x4f7fbe['attributes'],'include':_0x4f7fbe[_0xf68c('0x22')]?_[_0xf68c('0x23')](_0x4f7fbe[_0xf68c('0x22')],function(_0x5c4c9b){return{'model':db[_0x5c4c9b[_0xf68c('0x24')]],'as':_0x5c4c9b['as'],'attributes':_0x5c4c9b[_0xf68c('0x20')],'include':_0x5c4c9b['include']?_[_0xf68c('0x23')](_0x5c4c9b['include'],function(_0x428058){return{'model':db[_0x428058[_0xf68c('0x24')]],'as':_0x428058['as'],'attributes':_0x428058[_0xf68c('0x20')]};}):[]};}):[]};}):[]:[]})[_0xf68c('0x12')](function(_0x2f7d39){logger[_0xf68c('0x13')](_0xf68c('0x1c'),_0x107a5d);logger['debug'](_0xf68c('0x1c'),_0x107a5d,JSON['stringify'](_0x2f7d39));_0x384ed3(_0x2f7d39);})['catch'](function(_0x464b1e){logger[_0xf68c('0x17')](_0xf68c('0x1c'),_0x464b1e['message'],_0x107a5d);_0x2867b9(_0x252664[_0xf68c('0x17')](0x1f4,_0x464b1e[_0xf68c('0x19')]));});});};exports['ShowWhatsappQueue']=function(_0x4f90a5){var _0x1e2e04=this;return new Promise(function(_0x5123e5,_0x48e045){return db[_0xf68c('0x1d')][_0xf68c('0x25')]({'raw':_0x4f90a5[_0xf68c('0x1f')]?_0x4f90a5[_0xf68c('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x4f90a5[_0xf68c('0x1f')]?_0x4f90a5[_0xf68c('0x1f')][_0xf68c('0x26')]||null:null,'attributes':_0x4f90a5['options']?_0x4f90a5[_0xf68c('0x1f')][_0xf68c('0x20')]||null:null,'include':_0x4f90a5[_0xf68c('0x1f')]?_0x4f90a5[_0xf68c('0x1f')][_0xf68c('0x22')]?_[_0xf68c('0x23')](_0x4f90a5[_0xf68c('0x1f')]['include'],function(_0xef3280){return{'model':db[_0xef3280[_0xf68c('0x24')]],'as':_0xef3280['as'],'attributes':_0xef3280[_0xf68c('0x20')],'include':_0xef3280[_0xf68c('0x22')]?_[_0xf68c('0x23')](_0xef3280[_0xf68c('0x22')],function(_0x586145){return{'model':db[_0x586145[_0xf68c('0x24')]],'as':_0x586145['as'],'attributes':_0x586145['attributes'],'include':_0x586145[_0xf68c('0x22')]?_[_0xf68c('0x23')](_0x586145['include'],function(_0x5a85cb){return{'model':db[_0x5a85cb[_0xf68c('0x24')]],'as':_0x5a85cb['as'],'attributes':_0x5a85cb[_0xf68c('0x20')]};}):[]};}):[]};}):[]:[]})[_0xf68c('0x12')](function(_0x454c69){logger[_0xf68c('0x13')]('ShowWhatsappQueue',_0x4f90a5);logger['debug'](_0xf68c('0x27'),_0x4f90a5,JSON[_0xf68c('0x28')](_0x454c69));_0x5123e5(_0x454c69);})[_0xf68c('0x1b')](function(_0x53a959){logger[_0xf68c('0x17')](_0xf68c('0x27'),_0x53a959[_0xf68c('0x19')],_0x4f90a5);_0x48e045(_0x1e2e04[_0xf68c('0x17')](0x1f4,_0x53a959[_0xf68c('0x19')]));});});};
\ No newline at end of file
+var _0x5758=['stringify','error','code','message','result','catch','findAll','options','raw','where','include','map','attributes','model','GetWhatsappQueue','find','ShowWhatsappQueue','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','./whatsappQueue.socket','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s'];(function(_0x396b41,_0x5bfca3){var _0x28a928=function(_0x303538){while(--_0x303538){_0x396b41['push'](_0x396b41['shift']());}};_0x28a928(++_0x5bfca3);}(_0x5758,0x183));var _0x8575=function(_0x47e6ae,_0x56df4c){_0x47e6ae=_0x47e6ae-0x0;var _0x5d5d5e=_0x5758[_0x47e6ae];return _0x5d5d5e;};'use strict';var _=require('lodash');var util=require(_0x8575('0x0'));var moment=require(_0x8575('0x1'));var BPromise=require('bluebird');var rs=require(_0x8575('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8575('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x8575('0x4'))(_0x8575('0x5'));var config=require('../../config/environment');var jayson=require(_0x8575('0x6'));var client=jayson[_0x8575('0x7')][_0x8575('0x8')]({'port':0x232a});config['redis']=_[_0x8575('0x9')](config[_0x8575('0xa')],{'host':_0x8575('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x8575('0xc'))['register'](socket);function respondWithRpcPromise(_0x486a50,_0x1ab46a,_0x30ac96){return new BPromise(function(_0x3b339e,_0x428daa){return client[_0x8575('0xd')](_0x486a50,_0x30ac96)[_0x8575('0xe')](function(_0x4a1f68){logger[_0x8575('0xf')](_0x8575('0x10'),_0x1ab46a,_0x8575('0x11'));logger[_0x8575('0x12')](_0x8575('0x13'),_0x1ab46a,_0x8575('0x11'),JSON[_0x8575('0x14')](_0x4a1f68));if(_0x4a1f68[_0x8575('0x15')]){if(_0x4a1f68['error'][_0x8575('0x16')]===0x1f4){logger[_0x8575('0x15')](_0x8575('0x10'),_0x1ab46a,_0x4a1f68['error']['message']);return _0x428daa(_0x4a1f68[_0x8575('0x15')]['message']);}logger[_0x8575('0x15')](_0x8575('0x10'),_0x1ab46a,_0x4a1f68[_0x8575('0x15')][_0x8575('0x17')]);return _0x3b339e(_0x4a1f68[_0x8575('0x15')]['message']);}else{logger[_0x8575('0xf')](_0x8575('0x10'),_0x1ab46a,_0x8575('0x11'));_0x3b339e(_0x4a1f68[_0x8575('0x18')][_0x8575('0x17')]);}})[_0x8575('0x19')](function(_0x2c24f5){logger[_0x8575('0x15')](_0x8575('0x10'),_0x1ab46a,_0x2c24f5);_0x428daa(_0x2c24f5);});});}exports['GetWhatsappQueue']=function(_0x2da6db){var _0x4e2e51=this;return new Promise(function(_0x4ff8d6,_0x4e9d7e){return db['WhatsappQueue'][_0x8575('0x1a')]({'raw':_0x2da6db[_0x8575('0x1b')]?_0x2da6db[_0x8575('0x1b')][_0x8575('0x1c')]===undefined?!![]:![]:!![],'where':_0x2da6db[_0x8575('0x1b')]?_0x2da6db[_0x8575('0x1b')][_0x8575('0x1d')]||null:null,'attributes':_0x2da6db['options']?_0x2da6db[_0x8575('0x1b')]['attributes']||null:null,'limit':_0x2da6db[_0x8575('0x1b')]?_0x2da6db[_0x8575('0x1b')]['limit']||null:null,'include':_0x2da6db['options']?_0x2da6db[_0x8575('0x1b')]['include']?_['map'](_0x2da6db[_0x8575('0x1b')][_0x8575('0x1e')],function(_0x1a320b){return{'model':db[_0x1a320b['model']],'as':_0x1a320b['as'],'attributes':_0x1a320b['attributes'],'include':_0x1a320b[_0x8575('0x1e')]?_[_0x8575('0x1f')](_0x1a320b[_0x8575('0x1e')],function(_0x4015cd){return{'model':db[_0x4015cd['model']],'as':_0x4015cd['as'],'attributes':_0x4015cd[_0x8575('0x20')],'include':_0x4015cd[_0x8575('0x1e')]?_['map'](_0x4015cd[_0x8575('0x1e')],function(_0x3cbc37){return{'model':db[_0x3cbc37[_0x8575('0x21')]],'as':_0x3cbc37['as'],'attributes':_0x3cbc37[_0x8575('0x20')]};}):[]};}):[]};}):[]:[]})[_0x8575('0xe')](function(_0x564a46){logger[_0x8575('0xf')]('GetWhatsappQueue',_0x2da6db);logger[_0x8575('0x12')](_0x8575('0x22'),_0x2da6db,JSON[_0x8575('0x14')](_0x564a46));_0x4ff8d6(_0x564a46);})['catch'](function(_0x49428c){logger[_0x8575('0x15')]('GetWhatsappQueue',_0x49428c[_0x8575('0x17')],_0x2da6db);_0x4e9d7e(_0x4e2e51[_0x8575('0x15')](0x1f4,_0x49428c[_0x8575('0x17')]));});});};exports['ShowWhatsappQueue']=function(_0x2706da){var _0x280afe=this;return new Promise(function(_0x591f74,_0x2d0ef7){return db['WhatsappQueue'][_0x8575('0x23')]({'raw':_0x2706da[_0x8575('0x1b')]?_0x2706da['options'][_0x8575('0x1c')]===undefined?!![]:![]:!![],'where':_0x2706da[_0x8575('0x1b')]?_0x2706da[_0x8575('0x1b')]['where']||null:null,'attributes':_0x2706da['options']?_0x2706da[_0x8575('0x1b')][_0x8575('0x20')]||null:null,'include':_0x2706da['options']?_0x2706da[_0x8575('0x1b')][_0x8575('0x1e')]?_[_0x8575('0x1f')](_0x2706da[_0x8575('0x1b')]['include'],function(_0x1a9ce0){return{'model':db[_0x1a9ce0[_0x8575('0x21')]],'as':_0x1a9ce0['as'],'attributes':_0x1a9ce0['attributes'],'include':_0x1a9ce0[_0x8575('0x1e')]?_['map'](_0x1a9ce0[_0x8575('0x1e')],function(_0x54ed9d){return{'model':db[_0x54ed9d[_0x8575('0x21')]],'as':_0x54ed9d['as'],'attributes':_0x54ed9d[_0x8575('0x20')],'include':_0x54ed9d['include']?_[_0x8575('0x1f')](_0x54ed9d[_0x8575('0x1e')],function(_0x5eefe4){return{'model':db[_0x5eefe4[_0x8575('0x21')]],'as':_0x5eefe4['as'],'attributes':_0x5eefe4['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x13db83){logger[_0x8575('0xf')](_0x8575('0x24'),_0x2706da);logger[_0x8575('0x12')](_0x8575('0x24'),_0x2706da,JSON[_0x8575('0x14')](_0x13db83));_0x591f74(_0x13db83);})[_0x8575('0x19')](function(_0x320d51){logger[_0x8575('0x15')]('ShowWhatsappQueue',_0x320d51[_0x8575('0x17')],_0x2706da);_0x2d0ef7(_0x280afe[_0x8575('0x15')](0x1f4,_0x320d51[_0x8575('0x17')]));});});};
\ No newline at end of file
index 2198c72..838dc4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5469=['emit','removeListener','./whatsappQueue.events','save','remove','update'];(function(_0x3ab0d0,_0x946c4e){var _0x3ee9a7=function(_0x24281b){while(--_0x24281b){_0x3ab0d0['push'](_0x3ab0d0['shift']());}};_0x3ee9a7(++_0x946c4e);}(_0x5469,0x1ca));var _0x9546=function(_0x1dfa63,_0x362bd4){_0x1dfa63=_0x1dfa63-0x0;var _0x26f2a9=_0x5469[_0x1dfa63];return _0x26f2a9;};'use strict';var WhatsappQueueEvents=require(_0x9546('0x0'));var events=[_0x9546('0x1'),_0x9546('0x2'),_0x9546('0x3')];function createListener(_0x368f3b,_0x530916){return function(_0x11f451){_0x530916[_0x9546('0x4')](_0x368f3b,_0x11f451);};}function removeListener(_0x16f351,_0x4e9395){return function(){WhatsappQueueEvents[_0x9546('0x5')](_0x16f351,_0x4e9395);};}exports['register']=function(_0x3c9ec7){for(var _0x1a00b6=0x0,_0x44beb6=events['length'];_0x1a00b6<_0x44beb6;_0x1a00b6++){var _0x2e05a4=events[_0x1a00b6];var _0x44b628=createListener('whatsappQueue:'+_0x2e05a4,_0x3c9ec7);WhatsappQueueEvents['on'](_0x2e05a4,_0x44b628);}};
\ No newline at end of file
+var _0x6b37=['update','emit','length','whatsappQueue:','./whatsappQueue.events','save','remove'];(function(_0x363519,_0x4fa4e3){var _0x485c36=function(_0x21a5af){while(--_0x21a5af){_0x363519['push'](_0x363519['shift']());}};_0x485c36(++_0x4fa4e3);}(_0x6b37,0x97));var _0x76b3=function(_0x34add2,_0x48ee8b){_0x34add2=_0x34add2-0x0;var _0x52663d=_0x6b37[_0x34add2];return _0x52663d;};'use strict';var WhatsappQueueEvents=require(_0x76b3('0x0'));var events=[_0x76b3('0x1'),_0x76b3('0x2'),_0x76b3('0x3')];function createListener(_0x18acca,_0x504a33){return function(_0x49a42e){_0x504a33[_0x76b3('0x4')](_0x18acca,_0x49a42e);};}function removeListener(_0x4c41d9,_0x373e7a){return function(){WhatsappQueueEvents['removeListener'](_0x4c41d9,_0x373e7a);};}exports['register']=function(_0x59c8dc){for(var _0x456d5d=0x0,_0x318411=events[_0x76b3('0x5')];_0x456d5d<_0x318411;_0x456d5d++){var _0xf7dbf1=events[_0x456d5d];var _0xb6458f=createListener(_0x76b3('0x6')+_0xf7dbf1,_0x59c8dc);WhatsappQueueEvents['on'](_0xf7dbf1,_0xb6458f);}};
\ No newline at end of file
index 1a0ce70..f880a33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3392=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','post','put','delete','/:id','destroy','exports','util','path','connect-timeout','express'];(function(_0x2faa85,_0x5a3620){var _0x16095b=function(_0x3d1154){while(--_0x3d1154){_0x2faa85['push'](_0x2faa85['shift']());}};_0x16095b(++_0x5a3620);}(_0x3392,0xb7));var _0x2339=function(_0x2cace8,_0x4fa6eb){_0x2cace8=_0x2cace8-0x0;var _0x560128=_0x3392[_0x2cace8];return _0x560128;};'use strict';var multer=require('multer');var util=require(_0x2339('0x0'));var path=require(_0x2339('0x1'));var timeout=require(_0x2339('0x2'));var express=require(_0x2339('0x3'));var router=express['Router']();var fs_extra=require(_0x2339('0x4'));var auth=require(_0x2339('0x5'));var interaction=require(_0x2339('0x6'));var config=require(_0x2339('0x7'));var controller=require(_0x2339('0x8'));router[_0x2339('0x9')]('/',auth[_0x2339('0xa')](),controller['index']);router[_0x2339('0x9')]('/describe',auth[_0x2339('0xa')](),controller['describe']);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x2339('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2339('0xc')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x2339('0xd')](_0x2339('0xe'),auth[_0x2339('0xa')](),controller[_0x2339('0xf')]);module[_0x2339('0x10')]=router;
\ No newline at end of file
+var _0xb9fc=['update','delete','/:id','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','show','post','create'];(function(_0x319e1c,_0x3b4634){var _0x49c88d=function(_0x4574cb){while(--_0x4574cb){_0x319e1c['push'](_0x319e1c['shift']());}};_0x49c88d(++_0x3b4634);}(_0xb9fc,0x6e));var _0xcb9f=function(_0xdd1aa3,_0x245b0a){_0xdd1aa3=_0xdd1aa3-0x0;var _0x3535e6=_0xb9fc[_0xdd1aa3];return _0x3535e6;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xcb9f('0x0'));var timeout=require(_0xcb9f('0x1'));var express=require(_0xcb9f('0x2'));var router=express[_0xcb9f('0x3')]();var fs_extra=require(_0xcb9f('0x4'));var auth=require(_0xcb9f('0x5'));var interaction=require(_0xcb9f('0x6'));var config=require(_0xcb9f('0x7'));var controller=require('./whatsappQueueReport.controller');router[_0xcb9f('0x8')]('/',auth['isAuthenticated'](),controller[_0xcb9f('0x9')]);router[_0xcb9f('0x8')](_0xcb9f('0xa'),auth[_0xcb9f('0xb')](),controller[_0xcb9f('0xc')]);router[_0xcb9f('0x8')]('/:id',auth[_0xcb9f('0xb')](),controller[_0xcb9f('0xd')]);router[_0xcb9f('0xe')]('/',auth[_0xcb9f('0xb')](),controller[_0xcb9f('0xf')]);router['put']('/:id',auth[_0xcb9f('0xb')](),controller[_0xcb9f('0x10')]);router[_0xcb9f('0x11')](_0xcb9f('0x12'),auth[_0xcb9f('0xb')](),controller[_0xcb9f('0x13')]);module[_0xcb9f('0x14')]=router;
\ No newline at end of file
index b6efdee..8e00a74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x5da697,_0x5594ca){var _0x5d6b02=function(_0x5629a2){while(--_0x5629a2){_0x5da697['push'](_0x5da697['shift']());}};_0x5d6b02(++_0x5594ca);}(_0x7a54,0x106));var _0x47a5=function(_0x5e5599,_0x2b3696){_0x5e5599=_0x5e5599-0x0;var _0x3994a0=_0x7a54[_0x5e5599];return _0x3994a0;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
+var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x2609fd,_0x466e6b){var _0x487617=function(_0x2fa2ec){while(--_0x2fa2ec){_0x2609fd['push'](_0x2609fd['shift']());}};_0x487617(++_0x466e6b);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
index c899611..f3e69ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb58b=['save','update','destroy','then','error','stack','name','send','index','map','WhatsappQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','include','findAll','rows','catch','find','create','body','params','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','count','limit','set','Content-Range','apply','reject'];(function(_0x15f15d,_0x445248){var _0x1bdab0=function(_0x5f06d8){while(--_0x5f06d8){_0x15f15d['push'](_0x15f15d['shift']());}};_0x1bdab0(++_0x445248);}(_0xb58b,0x1f1));var _0xbb58=function(_0x5e71c8,_0xe96cb2){_0x5e71c8=_0x5e71c8-0x0;var _0x3fdee9=_0xb58b[_0x5e71c8];return _0x3fdee9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbb58('0x0'));var zipdir=require(_0xbb58('0x1'));var jsonpatch=require(_0xbb58('0x2'));var rp=require('request-promise');var moment=require(_0xbb58('0x3'));var BPromise=require(_0xbb58('0x4'));var Mustache=require('mustache');var util=require(_0xbb58('0x5'));var path=require('path');var sox=require(_0xbb58('0x6'));var csv=require(_0xbb58('0x7'));var ejs=require(_0xbb58('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbb58('0x9'));var squel=require(_0xbb58('0xa'));var crypto=require(_0xbb58('0xb'));var jsforce=require(_0xbb58('0xc'));var deskjs=require(_0xbb58('0xd'));var toCsv=require(_0xbb58('0x7'));var querystring=require(_0xbb58('0xe'));var Papa=require(_0xbb58('0xf'));var Redis=require(_0xbb58('0x10'));var authService=require(_0xbb58('0x11'));var qs=require(_0xbb58('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbb58('0x13'));var logger=require('../../config/logger')(_0xbb58('0x14'));var utils=require(_0xbb58('0x15'));var config=require(_0xbb58('0x16'));var licenseUtil=require(_0xbb58('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xe88799,_0x18810f){_0x18810f=_0x18810f||0xcc;return function(_0x4cda21){if(_0x4cda21){return _0xe88799[_0xbb58('0x18')](_0x18810f);}return _0xe88799[_0xbb58('0x19')](_0x18810f)[_0xbb58('0x1a')]();};}function respondWithResult(_0x3b9406,_0x19ceda){_0x19ceda=_0x19ceda||0xc8;return function(_0x58245f){if(_0x58245f){return _0x3b9406[_0xbb58('0x19')](_0x19ceda)[_0xbb58('0x1b')](_0x58245f);}};}function respondWithFilteredResult(_0x5f4751,_0x4ba30e){return function(_0x33c20f){if(_0x33c20f){var _0x445b1f=typeof _0x4ba30e[_0xbb58('0x1c')]==='undefined'&&typeof _0x4ba30e['limit']==='undefined';var _0x55156e=_0x33c20f[_0xbb58('0x1d')];var _0x3134ea=_0x445b1f?0x0:_0x4ba30e['offset'];var _0xbee66=_0x445b1f?_0x33c20f['count']:_0x4ba30e[_0xbb58('0x1c')]+_0x4ba30e[_0xbb58('0x1e')];var _0x3c33d9;if(_0xbee66>=_0x55156e){_0xbee66=_0x55156e;_0x3c33d9=0xc8;}else{_0x3c33d9=0xce;}_0x5f4751[_0xbb58('0x19')](_0x3c33d9);return _0x5f4751[_0xbb58('0x1f')](_0xbb58('0x20'),_0x3134ea+'-'+_0xbee66+'/'+_0x55156e)[_0xbb58('0x1b')](_0x33c20f);}return null;};}function patchUpdates(_0x497fd0){return function(_0x84f34){try{jsonpatch[_0xbb58('0x21')](_0x84f34,_0x497fd0,!![]);}catch(_0x3e64fe){return BPromise[_0xbb58('0x22')](_0x3e64fe);}return _0x84f34[_0xbb58('0x23')]();};}function saveUpdates(_0x5d4a91,_0x49453a){return function(_0x350be7){if(_0x350be7){return _0x350be7[_0xbb58('0x24')](_0x5d4a91)['then'](function(_0x27806d){return _0x27806d;});}return null;};}function removeEntity(_0x53b693,_0x21964d){return function(_0x287822){if(_0x287822){return _0x287822[_0xbb58('0x25')]()[_0xbb58('0x26')](function(){_0x53b693[_0xbb58('0x19')](0xcc)[_0xbb58('0x1a')]();});}};}function handleEntityNotFound(_0x2d556a,_0x15e4c5){return function(_0x4e0303){if(!_0x4e0303){_0x2d556a[_0xbb58('0x18')](0x194);}return _0x4e0303;};}function handleError(_0x3bd550,_0x1be0ae){_0x1be0ae=_0x1be0ae||0x1f4;return function(_0x129094){logger[_0xbb58('0x27')](_0x129094[_0xbb58('0x28')]);if(_0x129094[_0xbb58('0x29')]){delete _0x129094[_0xbb58('0x29')];}_0x3bd550[_0xbb58('0x19')](_0x1be0ae)[_0xbb58('0x2a')](_0x129094);};}exports[_0xbb58('0x2b')]=function(_0x28b3a3,_0x2a0481){var _0x4157c4={},_0x3559b6={},_0x573cca={'count':0x0,'rows':[]};var _0x2b0f73=_[_0xbb58('0x2c')](db[_0xbb58('0x2d')][_0xbb58('0x2e')],function(_0x3304b9){return{'name':_0x3304b9[_0xbb58('0x2f')],'type':_0x3304b9[_0xbb58('0x30')][_0xbb58('0x31')]};});_0x3559b6[_0xbb58('0x32')]=_['map'](_0x2b0f73,_0xbb58('0x29'));_0x3559b6[_0xbb58('0x33')]=_[_0xbb58('0x34')](_0x28b3a3[_0xbb58('0x33')]);_0x3559b6[_0xbb58('0x35')]=_[_0xbb58('0x36')](_0x3559b6[_0xbb58('0x32')],_0x3559b6[_0xbb58('0x33')]);_0x4157c4[_0xbb58('0x37')]=_[_0xbb58('0x36')](_0x3559b6[_0xbb58('0x32')],qs[_0xbb58('0x38')](_0x28b3a3[_0xbb58('0x33')]['fields']));_0x4157c4['attributes']=_0x4157c4['attributes'][_0xbb58('0x39')]?_0x4157c4[_0xbb58('0x37')]:_0x3559b6[_0xbb58('0x32')];if(!_0x28b3a3[_0xbb58('0x33')][_0xbb58('0x3a')](_0xbb58('0x3b'))){_0x4157c4[_0xbb58('0x1e')]=qs[_0xbb58('0x1e')](_0x28b3a3['query'][_0xbb58('0x1e')]);_0x4157c4[_0xbb58('0x1c')]=qs['offset'](_0x28b3a3[_0xbb58('0x33')]['offset']);}_0x4157c4[_0xbb58('0x3c')]=qs['sort'](_0x28b3a3[_0xbb58('0x33')][_0xbb58('0x3d')]);_0x4157c4['where']=qs[_0xbb58('0x35')](_[_0xbb58('0x3e')](_0x28b3a3[_0xbb58('0x33')],_0x3559b6[_0xbb58('0x35')]),_0x2b0f73);if(_0x28b3a3[_0xbb58('0x33')][_0xbb58('0x3f')]){_0x4157c4[_0xbb58('0x40')]=_[_0xbb58('0x41')](_0x4157c4['where'],{'$or':_[_0xbb58('0x2c')](_0x2b0f73,function(_0x31aa4b){if(_0x31aa4b[_0xbb58('0x30')]!=='VIRTUAL'){var _0x4dbd5e={};_0x4dbd5e[_0x31aa4b[_0xbb58('0x29')]]={'$like':'%'+_0x28b3a3['query'][_0xbb58('0x3f')]+'%'};return _0x4dbd5e;}})});}_0x4157c4=_[_0xbb58('0x41')]({},_0x4157c4,_0x28b3a3[_0xbb58('0x42')]);var _0x560911={'where':_0x4157c4['where']};return db[_0xbb58('0x2d')][_0xbb58('0x1d')](_0x560911)[_0xbb58('0x26')](function(_0x24d82d){_0x573cca[_0xbb58('0x1d')]=_0x24d82d;if(_0x28b3a3[_0xbb58('0x33')]['includeAll']){_0x4157c4[_0xbb58('0x43')]=[{'all':!![]}];}return db[_0xbb58('0x2d')][_0xbb58('0x44')](_0x4157c4);})[_0xbb58('0x26')](function(_0x1185b3){_0x573cca[_0xbb58('0x45')]=_0x1185b3;return _0x573cca;})['then'](respondWithFilteredResult(_0x2a0481,_0x4157c4))[_0xbb58('0x46')](handleError(_0x2a0481,null));};exports['show']=function(_0x22f1c3,_0x285ad4){var _0x29fb1c={'raw':!![],'where':{'id':_0x22f1c3['params']['id']}},_0x45817f={};_0x45817f[_0xbb58('0x32')]=_[_0xbb58('0x34')](db[_0xbb58('0x2d')][_0xbb58('0x2e')]);_0x45817f['query']=_[_0xbb58('0x34')](_0x22f1c3['query']);_0x45817f[_0xbb58('0x35')]=_[_0xbb58('0x36')](_0x45817f[_0xbb58('0x32')],_0x45817f[_0xbb58('0x33')]);_0x29fb1c[_0xbb58('0x37')]=_[_0xbb58('0x36')](_0x45817f[_0xbb58('0x32')],qs[_0xbb58('0x38')](_0x22f1c3[_0xbb58('0x33')][_0xbb58('0x38')]));_0x29fb1c[_0xbb58('0x37')]=_0x29fb1c[_0xbb58('0x37')][_0xbb58('0x39')]?_0x29fb1c['attributes']:_0x45817f[_0xbb58('0x32')];if(_0x22f1c3['query']['includeAll']){_0x29fb1c[_0xbb58('0x43')]=[{'all':!![]}];}_0x29fb1c=_[_0xbb58('0x41')]({},_0x29fb1c,_0x22f1c3[_0xbb58('0x42')]);return db[_0xbb58('0x2d')][_0xbb58('0x47')](_0x29fb1c)[_0xbb58('0x26')](handleEntityNotFound(_0x285ad4,null))[_0xbb58('0x26')](respondWithResult(_0x285ad4,null))[_0xbb58('0x46')](handleError(_0x285ad4,null));};exports[_0xbb58('0x48')]=function(_0x39995e,_0x440fb3){return db['WhatsappQueueReport'][_0xbb58('0x48')](_0x39995e[_0xbb58('0x49')],{})['then'](respondWithResult(_0x440fb3,0xc9))[_0xbb58('0x46')](handleError(_0x440fb3,null));};exports[_0xbb58('0x24')]=function(_0xf94897,_0xdb0ff7){if(_0xf94897['body']['id']){delete _0xf94897[_0xbb58('0x49')]['id'];}return db['WhatsappQueueReport'][_0xbb58('0x47')]({'where':{'id':_0xf94897[_0xbb58('0x4a')]['id']}})[_0xbb58('0x26')](handleEntityNotFound(_0xdb0ff7,null))['then'](saveUpdates(_0xf94897[_0xbb58('0x49')],null))[_0xbb58('0x26')](respondWithResult(_0xdb0ff7,null))['catch'](handleError(_0xdb0ff7,null));};exports[_0xbb58('0x25')]=function(_0x4ca201,_0x28301d){return db[_0xbb58('0x2d')][_0xbb58('0x47')]({'where':{'id':_0x4ca201[_0xbb58('0x4a')]['id']}})[_0xbb58('0x26')](handleEntityNotFound(_0x28301d,null))[_0xbb58('0x26')](removeEntity(_0x28301d,null))[_0xbb58('0x46')](handleError(_0x28301d,null));};exports['describe']=function(_0x449088,_0x1fd892){return db['WhatsappQueueReport'][_0xbb58('0x4b')]()[_0xbb58('0x26')](respondWithResult(_0x1fd892,null))['catch'](handleError(_0x1fd892,null));};
\ No newline at end of file
+var _0x7af2=['desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','error','stack','name','send','index','map','WhatsappQueueReport','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','sort','pick','filter','merge','VIRTUAL','options','where','includeAll','include','findAll','rows','catch','params','keys','create','body','find','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce'];(function(_0x5c6293,_0x20002a){var _0x466bc5=function(_0xa890d5){while(--_0xa890d5){_0x5c6293['push'](_0x5c6293['shift']());}};_0x466bc5(++_0x20002a);}(_0x7af2,0x119));var _0x27af=function(_0x30bb6a,_0x3ad40f){_0x30bb6a=_0x30bb6a-0x0;var _0x5d7710=_0x7af2[_0x30bb6a];return _0x5d7710;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x27af('0x0'));var zipdir=require(_0x27af('0x1'));var jsonpatch=require(_0x27af('0x2'));var rp=require(_0x27af('0x3'));var moment=require('moment');var BPromise=require(_0x27af('0x4'));var Mustache=require(_0x27af('0x5'));var util=require(_0x27af('0x6'));var path=require(_0x27af('0x7'));var sox=require(_0x27af('0x8'));var csv=require(_0x27af('0x9'));var ejs=require(_0x27af('0xa'));var fs=require('fs');var fs_extra=require(_0x27af('0xb'));var _=require(_0x27af('0xc'));var squel=require('squel');var crypto=require(_0x27af('0xd'));var jsforce=require(_0x27af('0xe'));var deskjs=require(_0x27af('0xf'));var toCsv=require('to-csv');var querystring=require(_0x27af('0x10'));var Papa=require(_0x27af('0x11'));var Redis=require(_0x27af('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x27af('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x27af('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x27af('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x27af('0x16'))['db'];function respondWithStatusCode(_0x49a883,_0x406340){_0x406340=_0x406340||0xcc;return function(_0x203501){if(_0x203501){return _0x49a883[_0x27af('0x17')](_0x406340);}return _0x49a883[_0x27af('0x18')](_0x406340)[_0x27af('0x19')]();};}function respondWithResult(_0x1edb50,_0x234825){_0x234825=_0x234825||0xc8;return function(_0x3da435){if(_0x3da435){return _0x1edb50[_0x27af('0x18')](_0x234825)[_0x27af('0x1a')](_0x3da435);}};}function respondWithFilteredResult(_0x30f675,_0x9c2d4b){return function(_0x2d7800){if(_0x2d7800){var _0x3102c4=typeof _0x9c2d4b[_0x27af('0x1b')]===_0x27af('0x1c')&&typeof _0x9c2d4b[_0x27af('0x1d')]===_0x27af('0x1c');var _0x58583a=_0x2d7800[_0x27af('0x1e')];var _0x31d702=_0x3102c4?0x0:_0x9c2d4b['offset'];var _0x4e6e2f=_0x3102c4?_0x2d7800[_0x27af('0x1e')]:_0x9c2d4b[_0x27af('0x1b')]+_0x9c2d4b[_0x27af('0x1d')];var _0x31573a;if(_0x4e6e2f>=_0x58583a){_0x4e6e2f=_0x58583a;_0x31573a=0xc8;}else{_0x31573a=0xce;}_0x30f675[_0x27af('0x18')](_0x31573a);return _0x30f675['set'](_0x27af('0x1f'),_0x31d702+'-'+_0x4e6e2f+'/'+_0x58583a)[_0x27af('0x1a')](_0x2d7800);}return null;};}function patchUpdates(_0xcb4b90){return function(_0x5e7c19){try{jsonpatch[_0x27af('0x20')](_0x5e7c19,_0xcb4b90,!![]);}catch(_0x2eec5f){return BPromise[_0x27af('0x21')](_0x2eec5f);}return _0x5e7c19['save']();};}function saveUpdates(_0x2dce2b,_0x2460f4){return function(_0x30720b){if(_0x30720b){return _0x30720b[_0x27af('0x22')](_0x2dce2b)[_0x27af('0x23')](function(_0x396156){return _0x396156;});}return null;};}function removeEntity(_0x43dd9e,_0x35b36d){return function(_0x2e1bb0){if(_0x2e1bb0){return _0x2e1bb0['destroy']()['then'](function(){_0x43dd9e['status'](0xcc)[_0x27af('0x19')]();});}};}function handleEntityNotFound(_0x4feaf1,_0x12625c){return function(_0x396326){if(!_0x396326){_0x4feaf1['sendStatus'](0x194);}return _0x396326;};}function handleError(_0x393190,_0x1d9341){_0x1d9341=_0x1d9341||0x1f4;return function(_0x463e36){logger[_0x27af('0x24')](_0x463e36[_0x27af('0x25')]);if(_0x463e36[_0x27af('0x26')]){delete _0x463e36[_0x27af('0x26')];}_0x393190['status'](_0x1d9341)[_0x27af('0x27')](_0x463e36);};}exports[_0x27af('0x28')]=function(_0xadd38e,_0xe009a){var _0x25d65a={},_0xa08dd9={},_0x42a5b7={'count':0x0,'rows':[]};var _0x2b26ac=_[_0x27af('0x29')](db[_0x27af('0x2a')][_0x27af('0x2b')],function(_0x4f4955){return{'name':_0x4f4955[_0x27af('0x2c')],'type':_0x4f4955[_0x27af('0x2d')][_0x27af('0x2e')]};});_0xa08dd9[_0x27af('0x2f')]=_[_0x27af('0x29')](_0x2b26ac,_0x27af('0x26'));_0xa08dd9['query']=_['keys'](_0xadd38e[_0x27af('0x30')]);_0xa08dd9[_0x27af('0x31')]=_['intersection'](_0xa08dd9[_0x27af('0x2f')],_0xa08dd9[_0x27af('0x30')]);_0x25d65a[_0x27af('0x32')]=_[_0x27af('0x33')](_0xa08dd9[_0x27af('0x2f')],qs[_0x27af('0x34')](_0xadd38e[_0x27af('0x30')][_0x27af('0x34')]));_0x25d65a[_0x27af('0x32')]=_0x25d65a[_0x27af('0x32')][_0x27af('0x35')]?_0x25d65a['attributes']:_0xa08dd9['model'];if(!_0xadd38e[_0x27af('0x30')][_0x27af('0x36')]('nolimit')){_0x25d65a[_0x27af('0x1d')]=qs[_0x27af('0x1d')](_0xadd38e['query'][_0x27af('0x1d')]);_0x25d65a[_0x27af('0x1b')]=qs[_0x27af('0x1b')](_0xadd38e[_0x27af('0x30')][_0x27af('0x1b')]);}_0x25d65a['order']=qs[_0x27af('0x37')](_0xadd38e[_0x27af('0x30')]['sort']);_0x25d65a['where']=qs[_0x27af('0x31')](_[_0x27af('0x38')](_0xadd38e[_0x27af('0x30')],_0xa08dd9[_0x27af('0x31')]),_0x2b26ac);if(_0xadd38e[_0x27af('0x30')][_0x27af('0x39')]){_0x25d65a['where']=_[_0x27af('0x3a')](_0x25d65a['where'],{'$or':_[_0x27af('0x29')](_0x2b26ac,function(_0x38a532){if(_0x38a532[_0x27af('0x2d')]!==_0x27af('0x3b')){var _0x1c6a4d={};_0x1c6a4d[_0x38a532['name']]={'$like':'%'+_0xadd38e[_0x27af('0x30')][_0x27af('0x39')]+'%'};return _0x1c6a4d;}})});}_0x25d65a=_[_0x27af('0x3a')]({},_0x25d65a,_0xadd38e[_0x27af('0x3c')]);var _0x10c1be={'where':_0x25d65a[_0x27af('0x3d')]};return db[_0x27af('0x2a')][_0x27af('0x1e')](_0x10c1be)[_0x27af('0x23')](function(_0x18f11b){_0x42a5b7[_0x27af('0x1e')]=_0x18f11b;if(_0xadd38e[_0x27af('0x30')][_0x27af('0x3e')]){_0x25d65a[_0x27af('0x3f')]=[{'all':!![]}];}return db['WhatsappQueueReport'][_0x27af('0x40')](_0x25d65a);})[_0x27af('0x23')](function(_0x44534b){_0x42a5b7[_0x27af('0x41')]=_0x44534b;return _0x42a5b7;})['then'](respondWithFilteredResult(_0xe009a,_0x25d65a))[_0x27af('0x42')](handleError(_0xe009a,null));};exports['show']=function(_0x516651,_0x2425dd){var _0x3c9c81={'raw':!![],'where':{'id':_0x516651[_0x27af('0x43')]['id']}},_0x279f99={};_0x279f99[_0x27af('0x2f')]=_[_0x27af('0x44')](db[_0x27af('0x2a')][_0x27af('0x2b')]);_0x279f99[_0x27af('0x30')]=_[_0x27af('0x44')](_0x516651[_0x27af('0x30')]);_0x279f99[_0x27af('0x31')]=_['intersection'](_0x279f99[_0x27af('0x2f')],_0x279f99[_0x27af('0x30')]);_0x3c9c81['attributes']=_['intersection'](_0x279f99[_0x27af('0x2f')],qs[_0x27af('0x34')](_0x516651[_0x27af('0x30')][_0x27af('0x34')]));_0x3c9c81[_0x27af('0x32')]=_0x3c9c81['attributes'][_0x27af('0x35')]?_0x3c9c81['attributes']:_0x279f99[_0x27af('0x2f')];if(_0x516651[_0x27af('0x30')][_0x27af('0x3e')]){_0x3c9c81[_0x27af('0x3f')]=[{'all':!![]}];}_0x3c9c81=_[_0x27af('0x3a')]({},_0x3c9c81,_0x516651[_0x27af('0x3c')]);return db[_0x27af('0x2a')]['find'](_0x3c9c81)['then'](handleEntityNotFound(_0x2425dd,null))[_0x27af('0x23')](respondWithResult(_0x2425dd,null))['catch'](handleError(_0x2425dd,null));};exports[_0x27af('0x45')]=function(_0x1b43e2,_0x226025){return db[_0x27af('0x2a')][_0x27af('0x45')](_0x1b43e2[_0x27af('0x46')],{})[_0x27af('0x23')](respondWithResult(_0x226025,0xc9))['catch'](handleError(_0x226025,null));};exports[_0x27af('0x22')]=function(_0xc7e2a8,_0x20e180){if(_0xc7e2a8[_0x27af('0x46')]['id']){delete _0xc7e2a8[_0x27af('0x46')]['id'];}return db['WhatsappQueueReport'][_0x27af('0x47')]({'where':{'id':_0xc7e2a8[_0x27af('0x43')]['id']}})[_0x27af('0x23')](handleEntityNotFound(_0x20e180,null))['then'](saveUpdates(_0xc7e2a8['body'],null))[_0x27af('0x23')](respondWithResult(_0x20e180,null))[_0x27af('0x42')](handleError(_0x20e180,null));};exports[_0x27af('0x48')]=function(_0x5be44f,_0x495794){return db[_0x27af('0x2a')]['find']({'where':{'id':_0x5be44f[_0x27af('0x43')]['id']}})[_0x27af('0x23')](handleEntityNotFound(_0x495794,null))[_0x27af('0x23')](removeEntity(_0x495794,null))[_0x27af('0x42')](handleError(_0x495794,null));};exports[_0x27af('0x49')]=function(_0xb9e23,_0x123533){return db[_0x27af('0x2a')][_0x27af('0x49')]()[_0x27af('0x23')](respondWithResult(_0x123533,null))[_0x27af('0x42')](handleError(_0x123533,null));};
\ No newline at end of file
index 461b8f0..091ad2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f6e=['lodash','../../config/logger','moment','request-promise','path','rimraf','./whatsappQueueReport.attributes','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid'];(function(_0x7d6ab0,_0x4dcbfe){var _0x2874ed=function(_0x1af760){while(--_0x1af760){_0x7d6ab0['push'](_0x7d6ab0['shift']());}};_0x2874ed(++_0x4dcbfe);}(_0x1f6e,0xfd));var _0xe1f6=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x1f6e[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xe1f6('0x0'));var util=require('util');var logger=require(_0xe1f6('0x1'))('api');var moment=require(_0xe1f6('0x2'));var BPromise=require('bluebird');var rp=require(_0xe1f6('0x3'));var fs=require('fs');var path=require(_0xe1f6('0x4'));var rimraf=require(_0xe1f6('0x5'));var config=require('../../config/environment');var attributes=require(_0xe1f6('0x6'));module['exports']=function(_0x499ded,_0x2e75cc){return _0x499ded[_0xe1f6('0x7')](_0xe1f6('0x8'),attributes,{'tableName':_0xe1f6('0x9'),'paranoid':![],'indexes':[{'name':_0xe1f6('0xa'),'fields':[_0xe1f6('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5b51=['./whatsappQueueReport.attributes','exports','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x671d3c,_0x51d414){var _0x430b9e=function(_0xffdbda){while(--_0xffdbda){_0x671d3c['push'](_0x671d3c['shift']());}};_0x430b9e(++_0x51d414);}(_0x5b51,0x1ef));var _0x15b5=function(_0x188a93,_0xaf57db){_0x188a93=_0x188a93-0x0;var _0x23b40d=_0x5b51[_0x188a93];return _0x23b40d;};'use strict';var _=require(_0x15b5('0x0'));var util=require(_0x15b5('0x1'));var logger=require(_0x15b5('0x2'))(_0x15b5('0x3'));var moment=require(_0x15b5('0x4'));var BPromise=require(_0x15b5('0x5'));var rp=require(_0x15b5('0x6'));var fs=require('fs');var path=require(_0x15b5('0x7'));var rimraf=require('rimraf');var config=require(_0x15b5('0x8'));var attributes=require(_0x15b5('0x9'));module[_0x15b5('0xa')]=function(_0x5a933c,_0x4ad1d6){return _0x5a933c['define'](_0x15b5('0xb'),attributes,{'tableName':_0x15b5('0xc'),'paranoid':![],'indexes':[{'name':_0x15b5('0xd'),'fields':[_0x15b5('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index c89a20f..bfaadb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc6d=['result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','update','raw','where','limit','UpdateWhatsappQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x499c07,_0x2066f7){var _0x1058fb=function(_0x2284b5){while(--_0x2284b5){_0x499c07['push'](_0x499c07['shift']());}};_0x1058fb(++_0x2066f7);}(_0xcc6d,0x9c));var _0xdcc6=function(_0x1dc9a4,_0x398c6c){_0x1dc9a4=_0x1dc9a4-0x0;var _0x5a7208=_0xcc6d[_0x1dc9a4];return _0x5a7208;};'use strict';var _=require(_0xdcc6('0x0'));var util=require(_0xdcc6('0x1'));var moment=require(_0xdcc6('0x2'));var BPromise=require(_0xdcc6('0x3'));var rs=require(_0xdcc6('0x4'));var fs=require('fs');var Redis=require(_0xdcc6('0x5'));var db=require(_0xdcc6('0x6'))['db'];var utils=require(_0xdcc6('0x7'));var logger=require(_0xdcc6('0x8'))(_0xdcc6('0x9'));var config=require(_0xdcc6('0xa'));var jayson=require(_0xdcc6('0xb'));var client=jayson['client'][_0xdcc6('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1e158f,_0xdf61fa,_0x9bc30d){return new BPromise(function(_0x426f99,_0x5eee77){return client[_0xdcc6('0xd')](_0x1e158f,_0x9bc30d)[_0xdcc6('0xe')](function(_0x2149d1){logger[_0xdcc6('0xf')](_0xdcc6('0x10'),_0xdf61fa,_0xdcc6('0x11'));logger[_0xdcc6('0x12')](_0xdcc6('0x13'),_0xdf61fa,'request\x20sent',JSON[_0xdcc6('0x14')](_0x2149d1));if(_0x2149d1[_0xdcc6('0x15')]){if(_0x2149d1[_0xdcc6('0x15')][_0xdcc6('0x16')]===0x1f4){logger[_0xdcc6('0x15')](_0xdcc6('0x10'),_0xdf61fa,_0x2149d1['error'][_0xdcc6('0x17')]);return _0x5eee77(_0x2149d1[_0xdcc6('0x15')][_0xdcc6('0x17')]);}logger[_0xdcc6('0x15')]('WhatsappQueueReport,\x20%s,\x20%s',_0xdf61fa,_0x2149d1[_0xdcc6('0x15')][_0xdcc6('0x17')]);return _0x426f99(_0x2149d1['error'][_0xdcc6('0x17')]);}else{logger[_0xdcc6('0xf')](_0xdcc6('0x10'),_0xdf61fa,_0xdcc6('0x11'));_0x426f99(_0x2149d1[_0xdcc6('0x18')]['message']);}})[_0xdcc6('0x19')](function(_0x3b2de5){logger[_0xdcc6('0x15')]('WhatsappQueueReport,\x20%s,\x20%s',_0xdf61fa,_0x3b2de5);_0x5eee77(_0x3b2de5);});});}exports[_0xdcc6('0x1a')]=function(_0x5305a0){var _0x75c34=this;return new Promise(function(_0x2b7e87,_0x8c8fe7){return db[_0xdcc6('0x1b')][_0xdcc6('0x1c')](_0x5305a0[_0xdcc6('0x1d')],{'raw':_0x5305a0[_0xdcc6('0x1e')]?_0x5305a0['options']['raw']===undefined?!![]:![]:!![]})[_0xdcc6('0xe')](function(_0xe875a4){logger[_0xdcc6('0xf')]('CreateWhatsappQueueReport',_0x5305a0);logger[_0xdcc6('0x12')](_0xdcc6('0x1a'),_0x5305a0,JSON[_0xdcc6('0x14')](_0xe875a4));_0x2b7e87(_0xe875a4);})[_0xdcc6('0x19')](function(_0x49defa){logger['error']('CreateWhatsappQueueReport',_0x49defa[_0xdcc6('0x17')],_0x5305a0);_0x8c8fe7(_0x75c34[_0xdcc6('0x15')](0x1f4,_0x49defa[_0xdcc6('0x17')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x25e619){var _0x1190e2=this;return new Promise(function(_0x47fe45,_0x5156e2){return db[_0xdcc6('0x1b')][_0xdcc6('0x1f')](_0x25e619[_0xdcc6('0x1d')],{'raw':_0x25e619['options']?_0x25e619[_0xdcc6('0x1e')][_0xdcc6('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x25e619[_0xdcc6('0x1e')]?_0x25e619[_0xdcc6('0x1e')][_0xdcc6('0x21')]||null:null,'attributes':_0x25e619[_0xdcc6('0x1e')]?_0x25e619[_0xdcc6('0x1e')]['attributes']||null:null,'limit':_0x25e619[_0xdcc6('0x1e')]?_0x25e619['options'][_0xdcc6('0x22')]||null:null})[_0xdcc6('0xe')](function(_0xfdea7e){logger[_0xdcc6('0xf')](_0xdcc6('0x23'),_0x25e619);logger[_0xdcc6('0x12')](_0xdcc6('0x23'),_0x25e619,JSON[_0xdcc6('0x14')](_0xfdea7e));_0x47fe45(_0xfdea7e);})[_0xdcc6('0x19')](function(_0x5a807a){logger['error'](_0xdcc6('0x23'),_0x5a807a[_0xdcc6('0x17')],_0x25e619);_0x5156e2(_0x1190e2[_0xdcc6('0x15')](0x1f4,_0x5a807a['message']));});});};
\ No newline at end of file
+var _0xe896=['then','request\x20sent','error','code','WhatsappQueueReport,\x20%s,\x20%s','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','raw','info','debug','stringify','UpdateWhatsappQueueReport','update','attributes','limit','lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','client','request'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe896,0x15f));var _0x6e89=function(_0x4ee47f,_0x44a4b3){_0x4ee47f=_0x4ee47f-0x0;var _0x555738=_0xe896[_0x4ee47f];return _0x555738;};'use strict';var _=require(_0x6e89('0x0'));var util=require(_0x6e89('0x1'));var moment=require(_0x6e89('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e89('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x6e89('0x4'));var logger=require(_0x6e89('0x5'))(_0x6e89('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6e89('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x520afc,_0x4e79aa,_0x3041c4){return new BPromise(function(_0x1c2245,_0xb3eff7){return client[_0x6e89('0x8')](_0x520afc,_0x3041c4)[_0x6e89('0x9')](function(_0x4bb496){logger['info']('WhatsappQueueReport,\x20%s,\x20%s',_0x4e79aa,_0x6e89('0xa'));logger['debug']('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x4e79aa,_0x6e89('0xa'),JSON['stringify'](_0x4bb496));if(_0x4bb496[_0x6e89('0xb')]){if(_0x4bb496[_0x6e89('0xb')][_0x6e89('0xc')]===0x1f4){logger[_0x6e89('0xb')](_0x6e89('0xd'),_0x4e79aa,_0x4bb496[_0x6e89('0xb')][_0x6e89('0xe')]);return _0xb3eff7(_0x4bb496['error'][_0x6e89('0xe')]);}logger[_0x6e89('0xb')](_0x6e89('0xd'),_0x4e79aa,_0x4bb496[_0x6e89('0xb')][_0x6e89('0xe')]);return _0x1c2245(_0x4bb496[_0x6e89('0xb')]['message']);}else{logger['info'](_0x6e89('0xd'),_0x4e79aa,_0x6e89('0xa'));_0x1c2245(_0x4bb496[_0x6e89('0xf')][_0x6e89('0xe')]);}})[_0x6e89('0x10')](function(_0xa8d4ed){logger[_0x6e89('0xb')]('WhatsappQueueReport,\x20%s,\x20%s',_0x4e79aa,_0xa8d4ed);_0xb3eff7(_0xa8d4ed);});});}exports[_0x6e89('0x11')]=function(_0x4843f5){var _0x566b5a=this;return new Promise(function(_0x4f15a8,_0x2fcba4){return db[_0x6e89('0x12')][_0x6e89('0x13')](_0x4843f5[_0x6e89('0x14')],{'raw':_0x4843f5[_0x6e89('0x15')]?_0x4843f5[_0x6e89('0x15')][_0x6e89('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x483c72){logger[_0x6e89('0x17')](_0x6e89('0x11'),_0x4843f5);logger[_0x6e89('0x18')](_0x6e89('0x11'),_0x4843f5,JSON[_0x6e89('0x19')](_0x483c72));_0x4f15a8(_0x483c72);})['catch'](function(_0x95304a){logger[_0x6e89('0xb')](_0x6e89('0x11'),_0x95304a[_0x6e89('0xe')],_0x4843f5);_0x2fcba4(_0x566b5a[_0x6e89('0xb')](0x1f4,_0x95304a[_0x6e89('0xe')]));});});};exports[_0x6e89('0x1a')]=function(_0x4c3672){var _0x516416=this;return new Promise(function(_0x20d567,_0x2f46a6){return db[_0x6e89('0x12')][_0x6e89('0x1b')](_0x4c3672[_0x6e89('0x14')],{'raw':_0x4c3672[_0x6e89('0x15')]?_0x4c3672[_0x6e89('0x15')][_0x6e89('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4c3672[_0x6e89('0x15')]?_0x4c3672[_0x6e89('0x15')]['where']||null:null,'attributes':_0x4c3672[_0x6e89('0x15')]?_0x4c3672[_0x6e89('0x15')][_0x6e89('0x1c')]||null:null,'limit':_0x4c3672[_0x6e89('0x15')]?_0x4c3672['options'][_0x6e89('0x1d')]||null:null})[_0x6e89('0x9')](function(_0x2ee5ac){logger[_0x6e89('0x17')](_0x6e89('0x1a'),_0x4c3672);logger[_0x6e89('0x18')]('UpdateWhatsappQueueReport',_0x4c3672,JSON[_0x6e89('0x19')](_0x2ee5ac));_0x20d567(_0x2ee5ac);})[_0x6e89('0x10')](function(_0x5edb68){logger[_0x6e89('0xb')](_0x6e89('0x1a'),_0x5edb68['message'],_0x4c3672);_0x2f46a6(_0x516416[_0x6e89('0xb')](0x1f4,_0x5edb68['message']));});});};
\ No newline at end of file
index c2d5b54..a38047f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x300a=['delete','/:id','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','isAuthenticated','index','get','/describe','describe','show','post','put','update'];(function(_0x5a4fcb,_0x393d1e){var _0x226e13=function(_0x5d6e1c){while(--_0x5d6e1c){_0x5a4fcb['push'](_0x5a4fcb['shift']());}};_0x226e13(++_0x393d1e);}(_0x300a,0x1a5));var _0xa300=function(_0x29db14,_0x4fcd9f){_0x29db14=_0x29db14-0x0;var _0x5cfc55=_0x300a[_0x29db14];return _0x5cfc55;};'use strict';var multer=require('multer');var util=require(_0xa300('0x0'));var path=require(_0xa300('0x1'));var timeout=require(_0xa300('0x2'));var express=require(_0xa300('0x3'));var router=express[_0xa300('0x4')]();var fs_extra=require(_0xa300('0x5'));var auth=require(_0xa300('0x6'));var interaction=require(_0xa300('0x7'));var config=require(_0xa300('0x8'));var controller=require(_0xa300('0x9'));router['get']('/',auth[_0xa300('0xa')](),controller[_0xa300('0xb')]);router[_0xa300('0xc')](_0xa300('0xd'),auth['isAuthenticated'](),controller[_0xa300('0xe')]);router['get']('/:id',auth[_0xa300('0xa')](),controller[_0xa300('0xf')]);router[_0xa300('0x10')]('/',auth[_0xa300('0xa')](),controller['create']);router[_0xa300('0x11')]('/:id',auth[_0xa300('0xa')](),controller[_0xa300('0x12')]);router[_0xa300('0x13')](_0xa300('0x14'),auth['isAuthenticated'](),controller['destroy']);module[_0xa300('0x15')]=router;
\ No newline at end of file
+var _0x7601=['put','update','delete','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','create'];(function(_0x53ce07,_0x36ed92){var _0x18d69a=function(_0x370513){while(--_0x370513){_0x53ce07['push'](_0x53ce07['shift']());}};_0x18d69a(++_0x36ed92);}(_0x7601,0x103));var _0x1760=function(_0x25971b,_0x57af37){_0x25971b=_0x25971b-0x0;var _0x2d0c04=_0x7601[_0x25971b];return _0x2d0c04;};'use strict';var multer=require(_0x1760('0x0'));var util=require(_0x1760('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x1760('0x2'));var router=express[_0x1760('0x3')]();var fs_extra=require(_0x1760('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1760('0x5'));var config=require('../../config/environment');var controller=require('./whatsappTransferReport.controller');router[_0x1760('0x6')]('/',auth[_0x1760('0x7')](),controller[_0x1760('0x8')]);router[_0x1760('0x6')](_0x1760('0x9'),auth[_0x1760('0x7')](),controller[_0x1760('0xa')]);router[_0x1760('0x6')](_0x1760('0xb'),auth[_0x1760('0x7')](),controller['show']);router['post']('/',auth[_0x1760('0x7')](),controller[_0x1760('0xc')]);router[_0x1760('0xd')](_0x1760('0xb'),auth[_0x1760('0x7')](),controller[_0x1760('0xe')]);router[_0x1760('0xf')](_0x1760('0xb'),auth[_0x1760('0x7')](),controller['destroy']);module[_0x1760('0x10')]=router;
\ No newline at end of file
index 599abb7..0dfda98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26f9=['queue','DATE','sequelize','exports','ENUM'];(function(_0x201244,_0x164b93){var _0x3a5598=function(_0x418039){while(--_0x418039){_0x201244['push'](_0x201244['shift']());}};_0x3a5598(++_0x164b93);}(_0x26f9,0x16f));var _0x926f=function(_0x42835a,_0x5259a7){_0x42835a=_0x42835a-0x0;var _0xa4f23b=_0x26f9[_0x42835a];return _0xa4f23b;};'use strict';var Sequelize=require(_0x926f('0x0'));module[_0x926f('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x926f('0x2')]('account','agent',_0x926f('0x3')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x926f('0x4')]}};
\ No newline at end of file
+var _0x9123=['sequelize','account','queue','DATE'];(function(_0x588a9c,_0x434e22){var _0x32ab03=function(_0x4928e5){while(--_0x4928e5){_0x588a9c['push'](_0x588a9c['shift']());}};_0x32ab03(++_0x434e22);}(_0x9123,0x140));var _0x3912=function(_0x72fd33,_0x51b266){_0x72fd33=_0x72fd33-0x0;var _0x436265=_0x9123[_0x72fd33];return _0x436265;};'use strict';var Sequelize=require(_0x3912('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x3912('0x1'),'agent',_0x3912('0x2')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x3912('0x3')]}};
\ No newline at end of file
index 6a42f3a..940fe24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca7e=['eml-format','zip-dir','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','end','error','stack','name','index','map','WhatsappTransferReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','create','body','find','describe'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0xca7e,0xde));var _0xeca7=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xca7e[_0x465028];return _0xb783d4;};'use strict';var emlformat=require(_0xeca7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xeca7('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xeca7('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xeca7('0x3'));var util=require(_0xeca7('0x4'));var path=require(_0xeca7('0x5'));var sox=require(_0xeca7('0x6'));var csv=require(_0xeca7('0x7'));var ejs=require(_0xeca7('0x8'));var fs=require('fs');var fs_extra=require(_0xeca7('0x9'));var _=require('lodash');var squel=require(_0xeca7('0xa'));var crypto=require(_0xeca7('0xb'));var jsforce=require(_0xeca7('0xc'));var deskjs=require(_0xeca7('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xeca7('0xe'));var authService=require(_0xeca7('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xeca7('0x10'));var hardwareService=require(_0xeca7('0x11'));var logger=require(_0xeca7('0x12'))('api');var utils=require(_0xeca7('0x13'));var config=require(_0xeca7('0x14'));var licenseUtil=require(_0xeca7('0x15'));var db=require(_0xeca7('0x16'))['db'];function respondWithStatusCode(_0x57cfc5,_0x3ff56f){_0x3ff56f=_0x3ff56f||0xcc;return function(_0x3f72db){if(_0x3f72db){return _0x57cfc5[_0xeca7('0x17')](_0x3ff56f);}return _0x57cfc5[_0xeca7('0x18')](_0x3ff56f)['end']();};}function respondWithResult(_0x45907b,_0x32a799){_0x32a799=_0x32a799||0xc8;return function(_0x5bcead){if(_0x5bcead){return _0x45907b['status'](_0x32a799)[_0xeca7('0x19')](_0x5bcead);}};}function respondWithFilteredResult(_0x55e471,_0x4358d6){return function(_0x47c86c){if(_0x47c86c){var _0x107077=typeof _0x4358d6[_0xeca7('0x1a')]===_0xeca7('0x1b')&&typeof _0x4358d6[_0xeca7('0x1c')]===_0xeca7('0x1b');var _0x42f09d=_0x47c86c['count'];var _0x48bdfa=_0x107077?0x0:_0x4358d6[_0xeca7('0x1a')];var _0x155ad0=_0x107077?_0x47c86c[_0xeca7('0x1d')]:_0x4358d6['offset']+_0x4358d6[_0xeca7('0x1c')];var _0x2cf503;if(_0x155ad0>=_0x42f09d){_0x155ad0=_0x42f09d;_0x2cf503=0xc8;}else{_0x2cf503=0xce;}_0x55e471['status'](_0x2cf503);return _0x55e471[_0xeca7('0x1e')](_0xeca7('0x1f'),_0x48bdfa+'-'+_0x155ad0+'/'+_0x42f09d)[_0xeca7('0x19')](_0x47c86c);}return null;};}function patchUpdates(_0x2e9cd6){return function(_0x4d0dc7){try{jsonpatch[_0xeca7('0x20')](_0x4d0dc7,_0x2e9cd6,!![]);}catch(_0xe2961e){return BPromise[_0xeca7('0x21')](_0xe2961e);}return _0x4d0dc7['save']();};}function saveUpdates(_0x3b76cd,_0x4b77f2){return function(_0x1b3ac2){if(_0x1b3ac2){return _0x1b3ac2[_0xeca7('0x22')](_0x3b76cd)[_0xeca7('0x23')](function(_0x2c4202){return _0x2c4202;});}return null;};}function removeEntity(_0x391d90,_0x5c9795){return function(_0x59db5a){if(_0x59db5a){return _0x59db5a[_0xeca7('0x24')]()['then'](function(){_0x391d90[_0xeca7('0x18')](0xcc)[_0xeca7('0x25')]();});}};}function handleEntityNotFound(_0x195fed,_0x319aa6){return function(_0x294800){if(!_0x294800){_0x195fed[_0xeca7('0x17')](0x194);}return _0x294800;};}function handleError(_0x1aee41,_0x472ef2){_0x472ef2=_0x472ef2||0x1f4;return function(_0x328abf){logger[_0xeca7('0x26')](_0x328abf[_0xeca7('0x27')]);if(_0x328abf[_0xeca7('0x28')]){delete _0x328abf[_0xeca7('0x28')];}_0x1aee41['status'](_0x472ef2)['send'](_0x328abf);};}exports[_0xeca7('0x29')]=function(_0x205157,_0x582a04){var _0x490eb0={},_0x1e0acf={},_0x573e29={'count':0x0,'rows':[]};var _0x53e519=_[_0xeca7('0x2a')](db[_0xeca7('0x2b')][_0xeca7('0x2c')],function(_0x3e78d0){return{'name':_0x3e78d0[_0xeca7('0x2d')],'type':_0x3e78d0[_0xeca7('0x2e')][_0xeca7('0x2f')]};});_0x1e0acf[_0xeca7('0x30')]=_[_0xeca7('0x2a')](_0x53e519,_0xeca7('0x28'));_0x1e0acf[_0xeca7('0x31')]=_[_0xeca7('0x32')](_0x205157[_0xeca7('0x31')]);_0x1e0acf['filters']=_[_0xeca7('0x33')](_0x1e0acf[_0xeca7('0x30')],_0x1e0acf[_0xeca7('0x31')]);_0x490eb0['attributes']=_[_0xeca7('0x33')](_0x1e0acf[_0xeca7('0x30')],qs[_0xeca7('0x34')](_0x205157[_0xeca7('0x31')][_0xeca7('0x34')]));_0x490eb0[_0xeca7('0x35')]=_0x490eb0[_0xeca7('0x35')][_0xeca7('0x36')]?_0x490eb0[_0xeca7('0x35')]:_0x1e0acf[_0xeca7('0x30')];if(!_0x205157['query'][_0xeca7('0x37')]('nolimit')){_0x490eb0[_0xeca7('0x1c')]=qs['limit'](_0x205157['query'][_0xeca7('0x1c')]);_0x490eb0[_0xeca7('0x1a')]=qs['offset'](_0x205157[_0xeca7('0x31')]['offset']);}_0x490eb0[_0xeca7('0x38')]=qs[_0xeca7('0x39')](_0x205157[_0xeca7('0x31')][_0xeca7('0x39')]);_0x490eb0[_0xeca7('0x3a')]=qs[_0xeca7('0x3b')](_[_0xeca7('0x3c')](_0x205157[_0xeca7('0x31')],_0x1e0acf[_0xeca7('0x3b')]),_0x53e519);if(_0x205157[_0xeca7('0x31')]['filter']){_0x490eb0[_0xeca7('0x3a')]=_[_0xeca7('0x3d')](_0x490eb0[_0xeca7('0x3a')],{'$or':_[_0xeca7('0x2a')](_0x53e519,function(_0x162600){if(_0x162600[_0xeca7('0x2e')]!==_0xeca7('0x3e')){var _0x1703a9={};_0x1703a9[_0x162600['name']]={'$like':'%'+_0x205157[_0xeca7('0x31')]['filter']+'%'};return _0x1703a9;}})});}_0x490eb0=_['merge']({},_0x490eb0,_0x205157[_0xeca7('0x3f')]);var _0x512692={'where':_0x490eb0[_0xeca7('0x3a')]};return db[_0xeca7('0x2b')][_0xeca7('0x1d')](_0x512692)[_0xeca7('0x23')](function(_0x1d9381){_0x573e29[_0xeca7('0x1d')]=_0x1d9381;if(_0x205157['query'][_0xeca7('0x40')]){_0x490eb0[_0xeca7('0x41')]=[{'all':!![]}];}return db[_0xeca7('0x2b')][_0xeca7('0x42')](_0x490eb0);})['then'](function(_0x16c6e8){_0x573e29[_0xeca7('0x43')]=_0x16c6e8;return _0x573e29;})[_0xeca7('0x23')](respondWithFilteredResult(_0x582a04,_0x490eb0))[_0xeca7('0x44')](handleError(_0x582a04,null));};exports['show']=function(_0x42c3a6,_0x2b6822){var _0x4044f9={'raw':!![],'where':{'id':_0x42c3a6[_0xeca7('0x45')]['id']}},_0x1ecf35={};_0x1ecf35[_0xeca7('0x30')]=_[_0xeca7('0x32')](db[_0xeca7('0x2b')][_0xeca7('0x2c')]);_0x1ecf35[_0xeca7('0x31')]=_['keys'](_0x42c3a6[_0xeca7('0x31')]);_0x1ecf35[_0xeca7('0x3b')]=_[_0xeca7('0x33')](_0x1ecf35[_0xeca7('0x30')],_0x1ecf35[_0xeca7('0x31')]);_0x4044f9['attributes']=_['intersection'](_0x1ecf35[_0xeca7('0x30')],qs[_0xeca7('0x34')](_0x42c3a6['query'][_0xeca7('0x34')]));_0x4044f9[_0xeca7('0x35')]=_0x4044f9[_0xeca7('0x35')][_0xeca7('0x36')]?_0x4044f9[_0xeca7('0x35')]:_0x1ecf35[_0xeca7('0x30')];if(_0x42c3a6['query'][_0xeca7('0x40')]){_0x4044f9[_0xeca7('0x41')]=[{'all':!![]}];}_0x4044f9=_[_0xeca7('0x3d')]({},_0x4044f9,_0x42c3a6['options']);return db['WhatsappTransferReport']['find'](_0x4044f9)[_0xeca7('0x23')](handleEntityNotFound(_0x2b6822,null))[_0xeca7('0x23')](respondWithResult(_0x2b6822,null))[_0xeca7('0x44')](handleError(_0x2b6822,null));};exports[_0xeca7('0x46')]=function(_0x1c48b3,_0x1a4a7f){return db[_0xeca7('0x2b')][_0xeca7('0x46')](_0x1c48b3['body'],{})[_0xeca7('0x23')](respondWithResult(_0x1a4a7f,0xc9))[_0xeca7('0x44')](handleError(_0x1a4a7f,null));};exports[_0xeca7('0x22')]=function(_0x2a8936,_0x19fd37){if(_0x2a8936[_0xeca7('0x47')]['id']){delete _0x2a8936['body']['id'];}return db['WhatsappTransferReport']['find']({'where':{'id':_0x2a8936[_0xeca7('0x45')]['id']}})[_0xeca7('0x23')](handleEntityNotFound(_0x19fd37,null))['then'](saveUpdates(_0x2a8936['body'],null))[_0xeca7('0x23')](respondWithResult(_0x19fd37,null))[_0xeca7('0x44')](handleError(_0x19fd37,null));};exports[_0xeca7('0x24')]=function(_0x248bf4,_0x2a6d3e){return db['WhatsappTransferReport'][_0xeca7('0x48')]({'where':{'id':_0x248bf4[_0xeca7('0x45')]['id']}})[_0xeca7('0x23')](handleEntityNotFound(_0x2a6d3e,null))[_0xeca7('0x23')](removeEntity(_0x2a6d3e,null))[_0xeca7('0x44')](handleError(_0x2a6d3e,null));};exports['describe']=function(_0x4269c2,_0x33d96c){return db['WhatsappTransferReport'][_0xeca7('0x49')]()['then'](respondWithResult(_0x33d96c,null))[_0xeca7('0x44')](handleError(_0x33d96c,null));};
\ No newline at end of file
+var _0xb961=['name','send','index','map','WhatsappTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','then','includeAll','findAll','rows','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','undefined','limit','count','offset','Content-Range','json','apply','reject','save','update','destroy','end','error','stack'];(function(_0x1cbda8,_0x36af27){var _0x28855b=function(_0x18f5c3){while(--_0x18f5c3){_0x1cbda8['push'](_0x1cbda8['shift']());}};_0x28855b(++_0x36af27);}(_0xb961,0x114));var _0x1b96=function(_0x273845,_0x426b01){_0x273845=_0x273845-0x0;var _0x48c934=_0xb961[_0x273845];return _0x48c934;};'use strict';var emlformat=require(_0x1b96('0x0'));var rimraf=require(_0x1b96('0x1'));var zipdir=require(_0x1b96('0x2'));var jsonpatch=require(_0x1b96('0x3'));var rp=require('request-promise');var moment=require(_0x1b96('0x4'));var BPromise=require(_0x1b96('0x5'));var Mustache=require(_0x1b96('0x6'));var util=require(_0x1b96('0x7'));var path=require(_0x1b96('0x8'));var sox=require(_0x1b96('0x9'));var csv=require(_0x1b96('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1b96('0xb'));var _=require(_0x1b96('0xc'));var squel=require(_0x1b96('0xd'));var crypto=require(_0x1b96('0xe'));var jsforce=require(_0x1b96('0xf'));var deskjs=require(_0x1b96('0x10'));var toCsv=require('to-csv');var querystring=require(_0x1b96('0x11'));var Papa=require(_0x1b96('0x12'));var Redis=require(_0x1b96('0x13'));var authService=require(_0x1b96('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x1b96('0x15'));var hardwareService=require(_0x1b96('0x16'));var logger=require(_0x1b96('0x17'))(_0x1b96('0x18'));var utils=require(_0x1b96('0x19'));var config=require(_0x1b96('0x1a'));var licenseUtil=require(_0x1b96('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x559d9c,_0x595480){_0x595480=_0x595480||0xcc;return function(_0x28d0bb){if(_0x28d0bb){return _0x559d9c[_0x1b96('0x1c')](_0x595480);}return _0x559d9c[_0x1b96('0x1d')](_0x595480)['end']();};}function respondWithResult(_0x1b71ce,_0x4de085){_0x4de085=_0x4de085||0xc8;return function(_0x238a0f){if(_0x238a0f){return _0x1b71ce[_0x1b96('0x1d')](_0x4de085)['json'](_0x238a0f);}};}function respondWithFilteredResult(_0xebeded,_0x5ea342){return function(_0x25ffae){if(_0x25ffae){var _0x3443a6=typeof _0x5ea342['offset']===_0x1b96('0x1e')&&typeof _0x5ea342[_0x1b96('0x1f')]===_0x1b96('0x1e');var _0x3be333=_0x25ffae[_0x1b96('0x20')];var _0x3bd8f9=_0x3443a6?0x0:_0x5ea342[_0x1b96('0x21')];var _0x16edd5=_0x3443a6?_0x25ffae[_0x1b96('0x20')]:_0x5ea342[_0x1b96('0x21')]+_0x5ea342[_0x1b96('0x1f')];var _0xa412c2;if(_0x16edd5>=_0x3be333){_0x16edd5=_0x3be333;_0xa412c2=0xc8;}else{_0xa412c2=0xce;}_0xebeded[_0x1b96('0x1d')](_0xa412c2);return _0xebeded['set'](_0x1b96('0x22'),_0x3bd8f9+'-'+_0x16edd5+'/'+_0x3be333)[_0x1b96('0x23')](_0x25ffae);}return null;};}function patchUpdates(_0x1f2e1a){return function(_0x507f40){try{jsonpatch[_0x1b96('0x24')](_0x507f40,_0x1f2e1a,!![]);}catch(_0x2ea23b){return BPromise[_0x1b96('0x25')](_0x2ea23b);}return _0x507f40[_0x1b96('0x26')]();};}function saveUpdates(_0x56043d,_0x36655b){return function(_0x4f72bc){if(_0x4f72bc){return _0x4f72bc[_0x1b96('0x27')](_0x56043d)['then'](function(_0x4b195f){return _0x4b195f;});}return null;};}function removeEntity(_0x5991c9,_0x4e2f4e){return function(_0x381000){if(_0x381000){return _0x381000[_0x1b96('0x28')]()['then'](function(){_0x5991c9[_0x1b96('0x1d')](0xcc)[_0x1b96('0x29')]();});}};}function handleEntityNotFound(_0x3bd8ec,_0x6bedb2){return function(_0x4d8d4a){if(!_0x4d8d4a){_0x3bd8ec[_0x1b96('0x1c')](0x194);}return _0x4d8d4a;};}function handleError(_0x3289a2,_0x2cd651){_0x2cd651=_0x2cd651||0x1f4;return function(_0x2a3c9a){logger[_0x1b96('0x2a')](_0x2a3c9a[_0x1b96('0x2b')]);if(_0x2a3c9a[_0x1b96('0x2c')]){delete _0x2a3c9a[_0x1b96('0x2c')];}_0x3289a2[_0x1b96('0x1d')](_0x2cd651)[_0x1b96('0x2d')](_0x2a3c9a);};}exports[_0x1b96('0x2e')]=function(_0x25eed7,_0x26a763){var _0x318191={},_0x414ae1={},_0x21edba={'count':0x0,'rows':[]};var _0x35d9d6=_[_0x1b96('0x2f')](db[_0x1b96('0x30')][_0x1b96('0x31')],function(_0x444fc4){return{'name':_0x444fc4[_0x1b96('0x32')],'type':_0x444fc4[_0x1b96('0x33')][_0x1b96('0x34')]};});_0x414ae1[_0x1b96('0x35')]=_['map'](_0x35d9d6,_0x1b96('0x2c'));_0x414ae1[_0x1b96('0x36')]=_[_0x1b96('0x37')](_0x25eed7[_0x1b96('0x36')]);_0x414ae1[_0x1b96('0x38')]=_['intersection'](_0x414ae1[_0x1b96('0x35')],_0x414ae1['query']);_0x318191[_0x1b96('0x39')]=_[_0x1b96('0x3a')](_0x414ae1[_0x1b96('0x35')],qs[_0x1b96('0x3b')](_0x25eed7[_0x1b96('0x36')][_0x1b96('0x3b')]));_0x318191['attributes']=_0x318191[_0x1b96('0x39')][_0x1b96('0x3c')]?_0x318191[_0x1b96('0x39')]:_0x414ae1['model'];if(!_0x25eed7[_0x1b96('0x36')][_0x1b96('0x3d')](_0x1b96('0x3e'))){_0x318191[_0x1b96('0x1f')]=qs['limit'](_0x25eed7[_0x1b96('0x36')][_0x1b96('0x1f')]);_0x318191['offset']=qs[_0x1b96('0x21')](_0x25eed7[_0x1b96('0x36')][_0x1b96('0x21')]);}_0x318191[_0x1b96('0x3f')]=qs[_0x1b96('0x40')](_0x25eed7[_0x1b96('0x36')][_0x1b96('0x40')]);_0x318191[_0x1b96('0x41')]=qs[_0x1b96('0x38')](_['pick'](_0x25eed7[_0x1b96('0x36')],_0x414ae1[_0x1b96('0x38')]),_0x35d9d6);if(_0x25eed7[_0x1b96('0x36')][_0x1b96('0x42')]){_0x318191[_0x1b96('0x41')]=_[_0x1b96('0x43')](_0x318191[_0x1b96('0x41')],{'$or':_['map'](_0x35d9d6,function(_0x176ec4){if(_0x176ec4[_0x1b96('0x33')]!==_0x1b96('0x44')){var _0x2c4725={};_0x2c4725[_0x176ec4[_0x1b96('0x2c')]]={'$like':'%'+_0x25eed7[_0x1b96('0x36')]['filter']+'%'};return _0x2c4725;}})});}_0x318191=_[_0x1b96('0x43')]({},_0x318191,_0x25eed7[_0x1b96('0x45')]);var _0x2f2146={'where':_0x318191['where']};return db[_0x1b96('0x30')][_0x1b96('0x20')](_0x2f2146)[_0x1b96('0x46')](function(_0x343c35){_0x21edba['count']=_0x343c35;if(_0x25eed7[_0x1b96('0x36')][_0x1b96('0x47')]){_0x318191['include']=[{'all':!![]}];}return db[_0x1b96('0x30')][_0x1b96('0x48')](_0x318191);})['then'](function(_0x24cb00){_0x21edba[_0x1b96('0x49')]=_0x24cb00;return _0x21edba;})[_0x1b96('0x46')](respondWithFilteredResult(_0x26a763,_0x318191))[_0x1b96('0x4a')](handleError(_0x26a763,null));};exports[_0x1b96('0x4b')]=function(_0x2cdc53,_0x3b13ce){var _0x17701c={'raw':!![],'where':{'id':_0x2cdc53[_0x1b96('0x4c')]['id']}},_0x267334={};_0x267334[_0x1b96('0x35')]=_[_0x1b96('0x37')](db['WhatsappTransferReport'][_0x1b96('0x31')]);_0x267334[_0x1b96('0x36')]=_[_0x1b96('0x37')](_0x2cdc53[_0x1b96('0x36')]);_0x267334[_0x1b96('0x38')]=_[_0x1b96('0x3a')](_0x267334[_0x1b96('0x35')],_0x267334['query']);_0x17701c[_0x1b96('0x39')]=_[_0x1b96('0x3a')](_0x267334['model'],qs[_0x1b96('0x3b')](_0x2cdc53['query'][_0x1b96('0x3b')]));_0x17701c[_0x1b96('0x39')]=_0x17701c[_0x1b96('0x39')][_0x1b96('0x3c')]?_0x17701c[_0x1b96('0x39')]:_0x267334['model'];if(_0x2cdc53['query'][_0x1b96('0x47')]){_0x17701c['include']=[{'all':!![]}];}_0x17701c=_[_0x1b96('0x43')]({},_0x17701c,_0x2cdc53[_0x1b96('0x45')]);return db['WhatsappTransferReport'][_0x1b96('0x4d')](_0x17701c)['then'](handleEntityNotFound(_0x3b13ce,null))[_0x1b96('0x46')](respondWithResult(_0x3b13ce,null))[_0x1b96('0x4a')](handleError(_0x3b13ce,null));};exports['create']=function(_0x5b3441,_0x1561ff){return db[_0x1b96('0x30')]['create'](_0x5b3441['body'],{})[_0x1b96('0x46')](respondWithResult(_0x1561ff,0xc9))[_0x1b96('0x4a')](handleError(_0x1561ff,null));};exports[_0x1b96('0x27')]=function(_0x412fcc,_0x502035){if(_0x412fcc[_0x1b96('0x4e')]['id']){delete _0x412fcc['body']['id'];}return db[_0x1b96('0x30')][_0x1b96('0x4d')]({'where':{'id':_0x412fcc[_0x1b96('0x4c')]['id']}})[_0x1b96('0x46')](handleEntityNotFound(_0x502035,null))[_0x1b96('0x46')](saveUpdates(_0x412fcc['body'],null))[_0x1b96('0x46')](respondWithResult(_0x502035,null))['catch'](handleError(_0x502035,null));};exports['destroy']=function(_0x2d61e9,_0x569947){return db[_0x1b96('0x30')]['find']({'where':{'id':_0x2d61e9[_0x1b96('0x4c')]['id']}})[_0x1b96('0x46')](handleEntityNotFound(_0x569947,null))[_0x1b96('0x46')](removeEntity(_0x569947,null))[_0x1b96('0x4a')](handleError(_0x569947,null));};exports[_0x1b96('0x4f')]=function(_0x3e5a09,_0x4a4ef7){return db['WhatsappTransferReport'][_0x1b96('0x4f')]()[_0x1b96('0x46')](respondWithResult(_0x4a4ef7,null))['catch'](handleError(_0x4a4ef7,null));};
\ No newline at end of file
index 4187d91..e21729d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8342=['rimraf','./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','../../config/logger','api','bluebird','request-promise','path'];(function(_0x98a823,_0x3de336){var _0xb964f9=function(_0x326ce7){while(--_0x326ce7){_0x98a823['push'](_0x98a823['shift']());}};_0xb964f9(++_0x3de336);}(_0x8342,0xa3));var _0x2834=function(_0x32f845,_0x335cb9){_0x32f845=_0x32f845-0x0;var _0x3c0de4=_0x8342[_0x32f845];return _0x3c0de4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2834('0x0'))(_0x2834('0x1'));var moment=require('moment');var BPromise=require(_0x2834('0x2'));var rp=require(_0x2834('0x3'));var fs=require('fs');var path=require(_0x2834('0x4'));var rimraf=require(_0x2834('0x5'));var config=require('../../config/environment');var attributes=require(_0x2834('0x6'));module[_0x2834('0x7')]=function(_0x10a13c,_0x4c2671){return _0x10a13c[_0x2834('0x8')](_0x2834('0x9'),attributes,{'tableName':_0x2834('0xa'),'paranoid':![],'indexes':[{'name':_0x2834('0xb'),'fields':[_0x2834('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfdc6=['request-promise','path','rimraf','../../config/environment','./whatsappTransferReport.attributes','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','../../config/logger','api','moment','bluebird'];(function(_0x5563ec,_0xe6b13a){var _0x2caf13=function(_0x46fdaa){while(--_0x46fdaa){_0x5563ec['push'](_0x5563ec['shift']());}};_0x2caf13(++_0xe6b13a);}(_0xfdc6,0x1d7));var _0x6fdc=function(_0x36de10,_0xfe25e8){_0x36de10=_0x36de10-0x0;var _0x58100f=_0xfdc6[_0x36de10];return _0x58100f;};'use strict';var _=require(_0x6fdc('0x0'));var util=require('util');var logger=require(_0x6fdc('0x1'))(_0x6fdc('0x2'));var moment=require(_0x6fdc('0x3'));var BPromise=require(_0x6fdc('0x4'));var rp=require(_0x6fdc('0x5'));var fs=require('fs');var path=require(_0x6fdc('0x6'));var rimraf=require(_0x6fdc('0x7'));var config=require(_0x6fdc('0x8'));var attributes=require(_0x6fdc('0x9'));module['exports']=function(_0x1cf5e4,_0x40cea2){return _0x1cf5e4[_0x6fdc('0xa')](_0x6fdc('0xb'),attributes,{'tableName':_0x6fdc('0xc'),'paranoid':![],'indexes':[{'name':_0x6fdc('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 43433b8..3436ff2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e7c=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch'];(function(_0xd09668,_0x1435b2){var _0x68726=function(_0x54a030){while(--_0x54a030){_0xd09668['push'](_0xd09668['shift']());}};_0x68726(++_0x1435b2);}(_0x8e7c,0x90));var _0xc8e7=function(_0x3996ab,_0x2ff7f1){_0x3996ab=_0x3996ab-0x0;var _0x29beb4=_0x8e7c[_0x3996ab];return _0x29beb4;};'use strict';var _=require(_0xc8e7('0x0'));var util=require(_0xc8e7('0x1'));var moment=require(_0xc8e7('0x2'));var BPromise=require(_0xc8e7('0x3'));var rs=require(_0xc8e7('0x4'));var fs=require('fs');var Redis=require(_0xc8e7('0x5'));var db=require(_0xc8e7('0x6'))['db'];var utils=require(_0xc8e7('0x7'));var logger=require('../../config/logger')(_0xc8e7('0x8'));var config=require(_0xc8e7('0x9'));var jayson=require(_0xc8e7('0xa'));var client=jayson[_0xc8e7('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ce0e9,_0x2029b5,_0x3f4ebb){return new BPromise(function(_0x1d26e8,_0x4d0946){return client[_0xc8e7('0xc')](_0x2ce0e9,_0x3f4ebb)[_0xc8e7('0xd')](function(_0x428989){logger['info'](_0xc8e7('0xe'),_0x2029b5,_0xc8e7('0xf'));logger[_0xc8e7('0x10')](_0xc8e7('0x11'),_0x2029b5,_0xc8e7('0xf'),JSON[_0xc8e7('0x12')](_0x428989));if(_0x428989[_0xc8e7('0x13')]){if(_0x428989['error']['code']===0x1f4){logger[_0xc8e7('0x13')](_0xc8e7('0xe'),_0x2029b5,_0x428989[_0xc8e7('0x13')][_0xc8e7('0x14')]);return _0x4d0946(_0x428989[_0xc8e7('0x13')]['message']);}logger[_0xc8e7('0x13')](_0xc8e7('0xe'),_0x2029b5,_0x428989[_0xc8e7('0x13')][_0xc8e7('0x14')]);return _0x1d26e8(_0x428989[_0xc8e7('0x13')]['message']);}else{logger[_0xc8e7('0x15')](_0xc8e7('0xe'),_0x2029b5,_0xc8e7('0xf'));_0x1d26e8(_0x428989[_0xc8e7('0x16')][_0xc8e7('0x14')]);}})[_0xc8e7('0x17')](function(_0x1a5707){logger[_0xc8e7('0x13')](_0xc8e7('0xe'),_0x2029b5,_0x1a5707);_0x4d0946(_0x1a5707);});});}
\ No newline at end of file
+var _0xa416=['request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','WhatsappTransferReport,\x20%s,\x20%s'];(function(_0x564b7f,_0x162734){var _0x194ae6=function(_0x25fe6b){while(--_0x25fe6b){_0x564b7f['push'](_0x564b7f['shift']());}};_0x194ae6(++_0x162734);}(_0xa416,0x126));var _0x6a41=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xa416[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x6a41('0x0'));var util=require(_0x6a41('0x1'));var moment=require('moment');var BPromise=require(_0x6a41('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6a41('0x3'));var db=require(_0x6a41('0x4'))['db'];var utils=require(_0x6a41('0x5'));var logger=require(_0x6a41('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6a41('0x7'));var client=jayson[_0x6a41('0x8')][_0x6a41('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x306d15,_0x2b6a9e,_0x1e5ea6){return new BPromise(function(_0x3015bc,_0x18d502){return client[_0x6a41('0xa')](_0x306d15,_0x1e5ea6)[_0x6a41('0xb')](function(_0x3dab75){logger[_0x6a41('0xc')](_0x6a41('0xd'),_0x2b6a9e,_0x6a41('0xe'));logger[_0x6a41('0xf')](_0x6a41('0x10'),_0x2b6a9e,'request\x20sent',JSON['stringify'](_0x3dab75));if(_0x3dab75[_0x6a41('0x11')]){if(_0x3dab75[_0x6a41('0x11')][_0x6a41('0x12')]===0x1f4){logger[_0x6a41('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x2b6a9e,_0x3dab75[_0x6a41('0x11')]['message']);return _0x18d502(_0x3dab75[_0x6a41('0x11')][_0x6a41('0x13')]);}logger[_0x6a41('0x11')](_0x6a41('0xd'),_0x2b6a9e,_0x3dab75[_0x6a41('0x11')]['message']);return _0x3015bc(_0x3dab75[_0x6a41('0x11')][_0x6a41('0x13')]);}else{logger[_0x6a41('0xc')](_0x6a41('0xd'),_0x2b6a9e,_0x6a41('0xe'));_0x3015bc(_0x3dab75[_0x6a41('0x14')][_0x6a41('0x13')]);}})[_0x6a41('0x15')](function(_0x1bec45){logger['error'](_0x6a41('0xd'),_0x2b6a9e,_0x1bec45);_0x18d502(_0x1bec45);});});}
\ No newline at end of file
index 65727b2..a7e7a20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f1b=['Offline\x20apps:','status','None','./config/license','catch','error','exit','lodash','./mysqldb','./config/environment','./config/logger','app','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','sequelize','sync','then','listen','start','info','map','filter','online','name','join'];(function(_0x297553,_0x4a1a53){var _0x77ace3=function(_0x598c15){while(--_0x598c15){_0x297553['push'](_0x297553['shift']());}};_0x77ace3(++_0x4a1a53);}(_0x6f1b,0x18d));var _0xb6f1=function(_0x99f7e3,_0x23fae3){_0x99f7e3=_0x99f7e3-0x0;var _0x72f563=_0x6f1b[_0x99f7e3];return _0x72f563;};'use strict';var _=require(_0xb6f1('0x0'));var mysqldb=require(_0xb6f1('0x1'));var rpc=require('./rpc');var config=require(_0xb6f1('0x2'));var logger=require(_0xb6f1('0x3'))(_0xb6f1('0x4'));var pm2=require('./config/pm2');var pm2Config=require('./config/pm2/config');var schedule=require(_0xb6f1('0x5'));var chat=require(_0xb6f1('0x6'));var whatsapp=require(_0xb6f1('0x7'));var transcribe=require('./config/schedule/transcribe');function main(){return mysqldb['db'][_0xb6f1('0x8')][_0xb6f1('0x9')]()[_0xb6f1('0xa')](function(){return rpc[_0xb6f1('0xb')]();})['then'](function(_0x3d85de){logger['info'](_0x3d85de);return chat[_0xb6f1('0xc')]();})['then'](function(){return whatsapp[_0xb6f1('0xc')]();})[_0xb6f1('0xa')](function(){return schedule[_0xb6f1('0xc')]();})[_0xb6f1('0xa')](function(){return transcribe[_0xb6f1('0xc')]();})[_0xb6f1('0xa')](function(_0x1c70c1){logger[_0xb6f1('0xd')](_0x1c70c1);return pm2[_0xb6f1('0xc')](pm2Config);})[_0xb6f1('0xa')](function(_0x205845){logger[_0xb6f1('0xd')]('Online\x20apps:',_[_0xb6f1('0xe')](_[_0xb6f1('0xf')](_0x205845,{'status':_0xb6f1('0x10')}),_0xb6f1('0x11'))[_0xb6f1('0x12')]());logger[_0xb6f1('0xd')](_0xb6f1('0x13'),_[_0xb6f1('0xe')](_[_0xb6f1('0xf')](_0x205845,function(_0xcba40f){return _0xcba40f[_0xb6f1('0x14')]!==_0xb6f1('0x10');}),_0xb6f1('0x11'))[_0xb6f1('0x12')]()||_0xb6f1('0x15'));config['seedDB']&&require('./config/seedDB')['default']();require(_0xb6f1('0x16'))['default']();})[_0xb6f1('0x17')](function(_0x20a3e9){logger[_0xb6f1('0x18')]('Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s',_0x20a3e9);process[_0xb6f1('0x19')](0x1);});}main();
\ No newline at end of file
+var _0x5ded=['status','seedDB','./config/seedDB','default','./config/license','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','lodash','./mysqldb','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/whatsapp','./config/schedule/transcribe','sequelize','then','info','start','Online\x20apps:','map','filter','online','name','join','Offline\x20apps:'];(function(_0x50d629,_0x3fe046){var _0xafca47=function(_0x1af20a){while(--_0x1af20a){_0x50d629['push'](_0x50d629['shift']());}};_0xafca47(++_0x3fe046);}(_0x5ded,0x1f4));var _0xd5de=function(_0x47ffce,_0x410d6b){_0x47ffce=_0x47ffce-0x0;var _0x1108d8=_0x5ded[_0x47ffce];return _0x1108d8;};'use strict';var _=require(_0xd5de('0x0'));var mysqldb=require(_0xd5de('0x1'));var rpc=require(_0xd5de('0x2'));var config=require(_0xd5de('0x3'));var logger=require(_0xd5de('0x4'))(_0xd5de('0x5'));var pm2=require(_0xd5de('0x6'));var pm2Config=require(_0xd5de('0x7'));var schedule=require(_0xd5de('0x8'));var chat=require('./config/schedule/chat');var whatsapp=require(_0xd5de('0x9'));var transcribe=require(_0xd5de('0xa'));function main(){return mysqldb['db'][_0xd5de('0xb')]['sync']()[_0xd5de('0xc')](function(){return rpc['listen']();})['then'](function(_0x16ca24){logger[_0xd5de('0xd')](_0x16ca24);return chat['start']();})['then'](function(){return whatsapp['start']();})[_0xd5de('0xc')](function(){return schedule['start']();})[_0xd5de('0xc')](function(){return transcribe['start']();})['then'](function(_0x126549){logger[_0xd5de('0xd')](_0x126549);return pm2[_0xd5de('0xe')](pm2Config);})[_0xd5de('0xc')](function(_0x186e62){logger[_0xd5de('0xd')](_0xd5de('0xf'),_[_0xd5de('0x10')](_[_0xd5de('0x11')](_0x186e62,{'status':_0xd5de('0x12')}),_0xd5de('0x13'))[_0xd5de('0x14')]());logger[_0xd5de('0xd')](_0xd5de('0x15'),_[_0xd5de('0x10')](_[_0xd5de('0x11')](_0x186e62,function(_0x34df81){return _0x34df81[_0xd5de('0x16')]!=='online';}),'name')['join']()||'None');config[_0xd5de('0x17')]&&require(_0xd5de('0x18'))[_0xd5de('0x19')]();require(_0xd5de('0x1a'))['default']();})['catch'](function(_0x5d220b){logger[_0xd5de('0x1b')](_0xd5de('0x1c'),_0x5d220b);process['exit'](0x1);});}main();
\ No newline at end of file
index 8e729e8..4a5874e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d85=['Invalid\x20API\x20access\x20key','add','minutes','use','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isMiddleware','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','motion.token','redirect','/dashboards/general','retrieveApiKey','isNil','apiKeyIat','generateApiKey','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','Sequelize','ValidationError','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','splice','unshift','encryptString','join','promisify','sign','options','verify','secrets','randomBytes','toString','hex','floor','now','HS512','../../mysqldb','../../config/environment','../../config/license/util','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','bluebird','util','moment','session','role','name','internal','permissions','md5secret','voicePause','chatPause','mailPause','faxPause','openchannelPause','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','isChatInteractionAuthorized','isAuthenticated','params','closed','disposition','then','unmanaged','json','Forbidden.','authorization','startsWith','headers','Basic','User','find','status','Wrong\x20credentials.','user','catch','Bearer','Unknown\x20authorization\x20format','query','getUuid','apikey','sub','Setting','findOne','allowedLoginAttempts','blockDuration','apiKeyNonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled'];(function(_0x570a79,_0x37d8e1){var _0x3aa17f=function(_0x27d4cb){while(--_0x27d4cb){_0x570a79['push'](_0x570a79['shift']());}};_0x3aa17f(++_0x37d8e1);}(_0x7d85,0x12a));var _0x57d8=function(_0x3f1482,_0x233af8){_0x3f1482=_0x3f1482-0x0;var _0x3d3988=_0x7d85[_0x3f1482];return _0x3d3988;};'use strict';var db=require(_0x57d8('0x0'))['db'];var config=require(_0x57d8('0x1'));var hardwareConf=require('../../config/license/hardware');var licenseUtil=require(_0x57d8('0x2'));var encryptor=require('../encryptor');var _=require(_0x57d8('0x3'));var jwt=require(_0x57d8('0x4'));var expressJwt=require(_0x57d8('0x5'));var compose=require(_0x57d8('0x6'));var basicAuth=require(_0x57d8('0x7'));var crypto=require(_0x57d8('0x8'));var BPromise=require(_0x57d8('0x9'));var util=require(_0x57d8('0xa'));var moment=require(_0x57d8('0xb'));var validateJwt=expressJwt({'secret':config['secrets'][_0x57d8('0xc')]});var userAttributes=['id',_0x57d8('0xd'),'fullname',_0x57d8('0xe'),_0x57d8('0xf'),'email','userpic',_0x57d8('0x10'),_0x57d8('0x11'),_0x57d8('0x12'),_0x57d8('0x13'),_0x57d8('0x14'),_0x57d8('0x15'),'smsPause',_0x57d8('0x16'),'pauseType',_0x57d8('0x17'),_0x57d8('0x18'),_0x57d8('0x19'),_0x57d8('0x1a'),_0x57d8('0x1b'),_0x57d8('0x1c'),_0x57d8('0x1d'),_0x57d8('0x1e'),'phoneBarAutoAnswerDelay',_0x57d8('0x1f'),_0x57d8('0x20'),_0x57d8('0x21'),_0x57d8('0x22'),_0x57d8('0x23'),_0x57d8('0x24'),_0x57d8('0x25'),_0x57d8('0x26'),_0x57d8('0x27'),_0x57d8('0x28'),_0x57d8('0x29'),_0x57d8('0x2a'),_0x57d8('0x2b'),_0x57d8('0x2c'),_0x57d8('0x2d'),_0x57d8('0x2e'),_0x57d8('0x2f')];exports[_0x57d8('0x30')]=function(){return this[_0x57d8('0x31')](!![])['use'](function(_0x23dc0f,_0x43b33c,_0x437a53){if(_0x23dc0f['user']){_0x437a53();}else{return db['ChatInteraction']['findOne']({'where':{'id':_0x23dc0f[_0x57d8('0x32')]['id']},'attributes':['id',_0x57d8('0x33'),_0x57d8('0x34')],'raw':!![]})[_0x57d8('0x35')](function(_0x1e134a){if(_0x1e134a&&_0x1e134a['closed']){return _0x43b33c['status'](_0x1e134a[_0x57d8('0x34')]===_0x57d8('0x36')?0x195:0x193)[_0x57d8('0x37')]({'message':_0x1e134a[_0x57d8('0x34')]===_0x57d8('0x36')?'Unmanaged.':_0x57d8('0x38')});}else{_0x437a53();}})['catch'](function(_0x50a17d){_0x437a53(_0x50a17d);});}});};exports[_0x57d8('0x31')]=function isAuthenticated(_0x4d7230){return compose()['use'](function(_0x15e668,_0xbb3e58,_0x1b9808){var _0x256fa7;if(_0x15e668['headers'][_0x57d8('0x39')]){if(_[_0x57d8('0x3a')](_0x15e668[_0x57d8('0x3b')][_0x57d8('0x39')],_0x57d8('0x3c'))){var _0x127037=basicAuth(_0x15e668);db[_0x57d8('0x3d')][_0x57d8('0x3e')]({'where':{'name':_0x127037[_0x57d8('0xe')]}})[_0x57d8('0x35')](function(_0x5cdea4){if(!_0x5cdea4||!_0x5cdea4['authenticate'](_0x127037['pass'])){return _0xbb3e58[_0x57d8('0x3f')](0x191)[_0x57d8('0x37')]({'message':_0x57d8('0x40')});}_0x15e668[_0x57d8('0x41')]={'id':_0x5cdea4['id']};_0x1b9808();})[_0x57d8('0x42')](function(_0x57b453){_0x1b9808(_0x57b453);});}else if(_[_0x57d8('0x3a')](_0x15e668[_0x57d8('0x3b')][_0x57d8('0x39')],_0x57d8('0x43'))){validateJwt(_0x15e668,_0xbb3e58,_0x1b9808);}else{if(_0x4d7230){_0x1b9808();}else{return _0xbb3e58[_0x57d8('0x3f')](0x193)[_0x57d8('0x37')]({'message':_0x57d8('0x44')});}}}else if(_0x15e668[_0x57d8('0x45')]['apikey']){try{var _0x5a02cb={'audience':hardwareConf[_0x57d8('0x46')](),'issuer':hardwareConf[_0x57d8('0x46')]()};verifyJwt(_0x15e668[_0x57d8('0x45')][_0x57d8('0x47')],_0x5a02cb)[_0x57d8('0x35')](function(_0x4006e6){return db[_0x57d8('0x3d')]['find']({'where':{'id':_0x4006e6[_0x57d8('0x48')]}})['then'](function(_0x5cf7bd){_0x256fa7=_0x5cf7bd;return db[_0x57d8('0x49')][_0x57d8('0x4a')]({'where':{'id':0x1},'attributes':[_0x57d8('0x4b'),_0x57d8('0x4c')],'raw':!![]});})['then'](function(_0x9ed556){if(!_0x256fa7||!_['isEqual'](_0x256fa7[_0x57d8('0x4d')],_0x4006e6['nonce'])){return _0xbb3e58[_0x57d8('0x3f')](0x191)[_0x57d8('0x37')]({'message':_0x57d8('0x4e')});}if(_0x256fa7[_0x57d8('0x4f')]){return _0xbb3e58[_0x57d8('0x3f')](0x191)[_0x57d8('0x37')]({'message':_0x57d8('0x50')});}if(_0x256fa7['blocked']){if(_0x9ed556['blockDuration']>0x0){if(moment(_0x256fa7['blockedAt'])[_0x57d8('0x51')](_0x9ed556[_0x57d8('0x4c')],_0x57d8('0x52'))>moment()){return _0xbb3e58['status'](0x191)['json']({'message':_0x57d8('0x50')});}}else{return _0xbb3e58[_0x57d8('0x3f')](0x191)['json']({'message':_0x57d8('0x50')});}}_0x15e668[_0x57d8('0x41')]={'id':_0x256fa7['id']};_0x1b9808();});})[_0x57d8('0x42')](function(){return _0xbb3e58[_0x57d8('0x3f')](0x191)[_0x57d8('0x37')]({'message':_0x57d8('0x50')});});}catch(_0x1e54fd){_0x1b9808(_0x1e54fd);}}else if(_0x4d7230){_0x1b9808();}else{return _0xbb3e58[_0x57d8('0x3f')](0x193)[_0x57d8('0x37')]({'message':_0x57d8('0x44')});}})[_0x57d8('0x53')](function(_0x3977b0,_0x77b96c,_0x1238cd){if(_0x3977b0[_0x57d8('0x41')]){db[_0x57d8('0x3d')][_0x57d8('0x3e')]({'where':{'id':_0x3977b0[_0x57d8('0x41')]['id']},'attributes':userAttributes})[_0x57d8('0x35')](function(_0x3645ef){if(!_0x3645ef){return _0x77b96c['status'](0x194)[_0x57d8('0x37')]({'message':_0x57d8('0x54')});}_0x3977b0[_0x57d8('0x41')]=_0x3645ef;_0x1238cd();})[_0x57d8('0x42')](function(_0x4f8ec3){_0x1238cd(_0x4f8ec3);});}else if(_0x4d7230){_0x1238cd();}else{return _0x77b96c[_0x57d8('0x3f')](0x194)[_0x57d8('0x37')]({'message':_0x57d8('0x55')});}});};exports[_0x57d8('0x56')]=function canUpdate(){return compose()[_0x57d8('0x53')](function(_0x4ba73b,_0x38d38d,_0x4c5d6a){return licenseUtil[_0x57d8('0x57')]()[_0x57d8('0x35')](function(_0x433733){if(_0x433733[_0x57d8('0x58')]){_0x4c5d6a();}else{return _0x38d38d[_0x57d8('0x3f')](0x193)[_0x57d8('0x37')]({'message':_0x57d8('0x59')});}})[_0x57d8('0x42')](function(_0x267ff1){_0x4c5d6a(_0x267ff1);});});};exports[_0x57d8('0x5a')]=function(_0x21bfd7,_0x56c31e,_0x4dd0d0){_0x21bfd7[_0x57d8('0x5a')]=!![];return _0x4dd0d0();};exports['signToken']=function signToken(_0x539c0c){return signJwt(_0x539c0c);};exports[_0x57d8('0x5b')]=function(_0x2ace5d,_0x31aec8){if(!_0x2ace5d[_0x57d8('0x41')]){return _0x31aec8[_0x57d8('0x3f')](0x194)[_0x57d8('0x37')]({'message':_0x57d8('0x5c')});}var _0x408b62={'payload':{'id':_0x2ace5d[_0x57d8('0x41')]['id'],'role':_0x2ace5d[_0x57d8('0x41')][_0x57d8('0xd')]},'options':{'expiresIn':0x15180}};return signJwt(_0x408b62)['then'](function(_0x4f9612){_0x31aec8['cookie'](_0x57d8('0x5d'),_0x4f9612);_0x31aec8[_0x57d8('0x5e')](_0x57d8('0x5f'));})[_0x57d8('0x42')](function(_0x31f367){return _0x31aec8[_0x57d8('0x3f')](0x1f4)['send'](_0x31f367);});};exports[_0x57d8('0x60')]=function(_0x48cec3){if(_[_0x57d8('0x61')](_0x48cec3[_0x57d8('0x4d')])||_['isNil'](_0x48cec3[_0x57d8('0x62')])){return null;}else{return createJwt(_0x48cec3);}};exports[_0x57d8('0x63')]=function(_0x4a16b1){_0x4a16b1[_0x57d8('0x4d')]=generateNonce();_0x4a16b1[_0x57d8('0x62')]=generateIssuedAt();return createJwt(_0x4a16b1);};exports[_0x57d8('0x64')]=function(_0x578013,_0x26c722){var _0x568c64=_0x578013[_0x57d8('0x45')]['apikey'];if(_0x568c64){var _0x4cf548={'nonce':_0x26c722[_0x57d8('0x4d')],'iat':_0x26c722[_0x57d8('0x62')],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0x57d8('0x46')]()};return verifyJwt(_0x568c64,_0x4cf548)[_0x57d8('0x35')](function(){return generateApiKey(_0x26c722);});}else{throw{'message':_0x57d8('0x65')};}};exports['validatePasswordPattern']=function(_0x3f0586){var _0x4e8472=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x4e8472['test'](_0x3f0586))throw new db[(_0x57d8('0x66'))][(_0x57d8('0x67'))]('The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.');return;};exports['validatePasswordHistory']=function(_0x28df60,_0x1f1bb9,_0x40ab07){var _0x55c7ed=encryptor[_0x57d8('0x68')](_0x1f1bb9)[_0x57d8('0x69')](',');for(var _0x2c2f8f=0x0;_0x2c2f8f<_0x40ab07;_0x2c2f8f++){if(!_0x55c7ed[_0x2c2f8f])break;if(_0x28df60[_0x57d8('0x6a')]()===_0x55c7ed[_0x2c2f8f]['toLowerCase']()){var _0x5ba7ac=util[_0x57d8('0x6b')](_0x57d8('0x6c'),_0x40ab07);if(_0x40ab07===0x1){_0x5ba7ac='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db[(_0x57d8('0x66'))][(_0x57d8('0x67'))](_0x5ba7ac);}}return;};exports[_0x57d8('0x6d')]=function(_0x3d150b,_0x1b1fe4){var _0x1ed880=_0x1b1fe4?encryptor[_0x57d8('0x68')](_0x1b1fe4)[_0x57d8('0x69')](','):[];if(_0x1ed880[_0x57d8('0x6e')]===0x5){_0x1ed880[_0x57d8('0x6f')](-0x1,0x1);}_0x1ed880[_0x57d8('0x70')](_0x3d150b);return encryptor[_0x57d8('0x71')](_0x1ed880[_0x57d8('0x72')](','));};function signJwt(_0x794c48){var _0x3caf8e=BPromise[_0x57d8('0x73')](jwt[_0x57d8('0x74')],{'context':jwt});var _0x5e311a=_0x794c48['secret']||config['secrets'][_0x57d8('0xc')];return new BPromise(function(_0x3452cd,_0x5cbda7){_0x3caf8e(_0x794c48['payload'],_0x5e311a,_0x794c48[_0x57d8('0x75')])[_0x57d8('0x35')](function(_0x2b1de3){_0x3452cd(_0x2b1de3);})[_0x57d8('0x42')](function(_0x3252e3){_0x5cbda7(_0x3252e3);});});}function verifyJwt(_0x47a0af,_0x5bc8f7,_0x3426cd){var _0x44e46e=BPromise['promisify'](jwt[_0x57d8('0x76')],{'context':jwt});var _0x4068dc=_0x3426cd||config[_0x57d8('0x77')]['session'];return new BPromise(function(_0x197fad,_0x2eda8a){_0x44e46e(_0x47a0af,_0x4068dc,_0x5bc8f7)[_0x57d8('0x35')](function(_0x4cc83a){_0x197fad(_0x4cc83a);})['catch'](function(_0x21fa06){_0x2eda8a(_0x21fa06);});});}function generateNonce(){return crypto[_0x57d8('0x78')](0x10)[_0x57d8('0x79')](_0x57d8('0x7a'));}function generateIssuedAt(){return Math[_0x57d8('0x7b')](Date[_0x57d8('0x7c')]()/0x3e8)[_0x57d8('0x79')]();}function createJwt(_0x1c8cfa){var _0x410222={'payload':{'iat':_0x1c8cfa[_0x57d8('0x62')],'nonce':_0x1c8cfa[_0x57d8('0x4d')]},'options':{'algorithm':_0x57d8('0x7d'),'subject':_0x1c8cfa['id'][_0x57d8('0x79')](),'issuer':hardwareConf[_0x57d8('0x46')](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x410222)[_0x57d8('0x35')](function(_0x4b5495){return{'iat':_0x1c8cfa['apiKeyIat'],'nonce':_0x1c8cfa[_0x57d8('0x4d')],'token':_0x4b5495};});}
\ No newline at end of file
+var _0xbeeb=['phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','interface','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadAttachments','isAuthenticated','use','user','params','closed','disposition','then','status','unmanaged','json','Unmanaged.','Forbidden.','catch','headers','authorization','Basic','User','find','name','authenticate','pass','Bearer','Unknown\x20authorization\x20format','query','getUuid','apikey','Setting','findOne','allowedLoginAttempts','blockDuration','isEqual','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','Invalid\x20API\x20access\x20key','blocked','blockedAt','minutes','User\x20object\x20not\x20found.','Forbidden','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyIat','generateApiKey','test','Sequelize','ValidationError','validatePasswordHistory','decryptString','split','toLowerCase','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','splice','unshift','encryptString','join','promisify','sign','payload','options','randomBytes','toString','hex','floor','now','HS512','../../config/environment','../../config/license/util','../encryptor','lodash','jsonwebtoken','composable-middleware','crypto','bluebird','moment','secrets','session','role','internal','email','userpic','permissions','md5secret','chatPause','mailPause','smsPause','openchannelPause','pauseType','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswer'];(function(_0x233277,_0x2568a0){var _0x5d215e=function(_0x419752){while(--_0x419752){_0x233277['push'](_0x233277['shift']());}};_0x5d215e(++_0x2568a0);}(_0xbeeb,0x1c3));var _0xbbee=function(_0x100576,_0x142f00){_0x100576=_0x100576-0x0;var _0xb44366=_0xbeeb[_0x100576];return _0xb44366;};'use strict';var db=require('../../mysqldb')['db'];var config=require(_0xbbee('0x0'));var hardwareConf=require('../../config/license/hardware');var licenseUtil=require(_0xbbee('0x1'));var encryptor=require(_0xbbee('0x2'));var _=require(_0xbbee('0x3'));var jwt=require(_0xbbee('0x4'));var expressJwt=require('express-jwt');var compose=require(_0xbbee('0x5'));var basicAuth=require('basic-auth');var crypto=require(_0xbbee('0x6'));var BPromise=require(_0xbbee('0x7'));var util=require('util');var moment=require(_0xbbee('0x8'));var validateJwt=expressJwt({'secret':config[_0xbbee('0x9')][_0xbbee('0xa')]});var userAttributes=['id',_0xbbee('0xb'),'fullname','name',_0xbbee('0xc'),_0xbbee('0xd'),_0xbbee('0xe'),_0xbbee('0xf'),_0xbbee('0x10'),'voicePause',_0xbbee('0x11'),_0xbbee('0x12'),'faxPause',_0xbbee('0x13'),_0xbbee('0x14'),_0xbbee('0x15'),'showWebBar',_0xbbee('0x16'),_0xbbee('0x17'),_0xbbee('0x18'),_0xbbee('0x19'),_0xbbee('0x1a'),_0xbbee('0x1b'),_0xbbee('0x1c'),_0xbbee('0x1d'),_0xbbee('0x1e'),'phoneBarEnableRecording',_0xbbee('0x1f'),_0xbbee('0x20'),_0xbbee('0x21'),'phoneBarPrefixRequired',_0xbbee('0x22'),_0xbbee('0x23'),_0xbbee('0x24'),_0xbbee('0x25'),'userProfileId',_0xbbee('0x26'),_0xbbee('0x27'),_0xbbee('0x28'),_0xbbee('0x29'),'downloadOmnichannelInteractions',_0xbbee('0x2a')];exports['isChatInteractionAuthorized']=function(){return this[_0xbbee('0x2b')](!![])[_0xbbee('0x2c')](function(_0x2fc373,_0x18a993,_0x15ac38){if(_0x2fc373[_0xbbee('0x2d')]){_0x15ac38();}else{return db['ChatInteraction']['findOne']({'where':{'id':_0x2fc373[_0xbbee('0x2e')]['id']},'attributes':['id',_0xbbee('0x2f'),_0xbbee('0x30')],'raw':!![]})[_0xbbee('0x31')](function(_0x16137e){if(_0x16137e&&_0x16137e['closed']){return _0x18a993[_0xbbee('0x32')](_0x16137e[_0xbbee('0x30')]===_0xbbee('0x33')?0x195:0x193)[_0xbbee('0x34')]({'message':_0x16137e[_0xbbee('0x30')]===_0xbbee('0x33')?_0xbbee('0x35'):_0xbbee('0x36')});}else{_0x15ac38();}})[_0xbbee('0x37')](function(_0x4b695b){_0x15ac38(_0x4b695b);});}});};exports[_0xbbee('0x2b')]=function isAuthenticated(_0x43e893){return compose()[_0xbbee('0x2c')](function(_0x2f7d3c,_0x2c1c9f,_0x2462f0){var _0x431698;if(_0x2f7d3c[_0xbbee('0x38')][_0xbbee('0x39')]){if(_['startsWith'](_0x2f7d3c[_0xbbee('0x38')]['authorization'],_0xbbee('0x3a'))){var _0x4742cf=basicAuth(_0x2f7d3c);db[_0xbbee('0x3b')][_0xbbee('0x3c')]({'where':{'name':_0x4742cf[_0xbbee('0x3d')]}})[_0xbbee('0x31')](function(_0x2425bf){if(!_0x2425bf||!_0x2425bf[_0xbbee('0x3e')](_0x4742cf[_0xbbee('0x3f')])){return _0x2c1c9f[_0xbbee('0x32')](0x191)[_0xbbee('0x34')]({'message':'Wrong\x20credentials.'});}_0x2f7d3c[_0xbbee('0x2d')]={'id':_0x2425bf['id']};_0x2462f0();})[_0xbbee('0x37')](function(_0x44ce64){_0x2462f0(_0x44ce64);});}else if(_['startsWith'](_0x2f7d3c[_0xbbee('0x38')][_0xbbee('0x39')],_0xbbee('0x40'))){validateJwt(_0x2f7d3c,_0x2c1c9f,_0x2462f0);}else{if(_0x43e893){_0x2462f0();}else{return _0x2c1c9f['status'](0x193)[_0xbbee('0x34')]({'message':_0xbbee('0x41')});}}}else if(_0x2f7d3c[_0xbbee('0x42')]['apikey']){try{var _0x810b77={'audience':hardwareConf[_0xbbee('0x43')](),'issuer':hardwareConf[_0xbbee('0x43')]()};verifyJwt(_0x2f7d3c['query'][_0xbbee('0x44')],_0x810b77)['then'](function(_0x1a69e9){return db[_0xbbee('0x3b')][_0xbbee('0x3c')]({'where':{'id':_0x1a69e9['sub']}})[_0xbbee('0x31')](function(_0x40ecae){_0x431698=_0x40ecae;return db[_0xbbee('0x45')][_0xbbee('0x46')]({'where':{'id':0x1},'attributes':[_0xbbee('0x47'),_0xbbee('0x48')],'raw':!![]});})['then'](function(_0x1ccbeb){if(!_0x431698||!_[_0xbbee('0x49')](_0x431698[_0xbbee('0x4a')],_0x1a69e9[_0xbbee('0x4b')])){return _0x2c1c9f['status'](0x191)['json']({'message':_0xbbee('0x4c')});}if(_0x431698['disabled']){return _0x2c1c9f[_0xbbee('0x32')](0x191)[_0xbbee('0x34')]({'message':_0xbbee('0x4d')});}if(_0x431698[_0xbbee('0x4e')]){if(_0x1ccbeb[_0xbbee('0x48')]>0x0){if(moment(_0x431698[_0xbbee('0x4f')])['add'](_0x1ccbeb[_0xbbee('0x48')],_0xbbee('0x50'))>moment()){return _0x2c1c9f[_0xbbee('0x32')](0x191)[_0xbbee('0x34')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x2c1c9f[_0xbbee('0x32')](0x191)[_0xbbee('0x34')]({'message':_0xbbee('0x4d')});}}_0x2f7d3c[_0xbbee('0x2d')]={'id':_0x431698['id']};_0x2462f0();});})[_0xbbee('0x37')](function(){return _0x2c1c9f[_0xbbee('0x32')](0x191)[_0xbbee('0x34')]({'message':_0xbbee('0x4d')});});}catch(_0x525e5c){_0x2462f0(_0x525e5c);}}else if(_0x43e893){_0x2462f0();}else{return _0x2c1c9f[_0xbbee('0x32')](0x193)['json']({'message':'Unknown\x20authorization\x20format'});}})[_0xbbee('0x2c')](function(_0x252e25,_0x134884,_0x456805){if(_0x252e25[_0xbbee('0x2d')]){db[_0xbbee('0x3b')][_0xbbee('0x3c')]({'where':{'id':_0x252e25[_0xbbee('0x2d')]['id']},'attributes':userAttributes})[_0xbbee('0x31')](function(_0x24dd6e){if(!_0x24dd6e){return _0x134884[_0xbbee('0x32')](0x194)['json']({'message':'User\x20not\x20found.'});}_0x252e25['user']=_0x24dd6e;_0x456805();})[_0xbbee('0x37')](function(_0x22d2da){_0x456805(_0x22d2da);});}else if(_0x43e893){_0x456805();}else{return _0x134884[_0xbbee('0x32')](0x194)['json']({'message':_0xbbee('0x51')});}});};exports['canUpdate']=function canUpdate(){return compose()[_0xbbee('0x2c')](function(_0x573c87,_0x4d158d,_0x561acc){return licenseUtil['getLicense']()[_0xbbee('0x31')](function(_0x198b87){if(_0x198b87['update']){_0x561acc();}else{return _0x4d158d[_0xbbee('0x32')](0x193)['json']({'message':_0xbbee('0x52')});}})[_0xbbee('0x37')](function(_0x51dbc4){_0x561acc(_0x51dbc4);});});};exports[_0xbbee('0x53')]=function(_0x5627bf,_0x5ba5b2,_0x21e992){_0x5627bf['isMiddleware']=!![];return _0x21e992();};exports[_0xbbee('0x54')]=function signToken(_0x30d432){return signJwt(_0x30d432);};exports[_0xbbee('0x55')]=function(_0x3fb047,_0x4b379c){if(!_0x3fb047[_0xbbee('0x2d')]){return _0x4b379c[_0xbbee('0x32')](0x194)[_0xbbee('0x34')]({'message':_0xbbee('0x56')});}var _0x139c29={'payload':{'id':_0x3fb047[_0xbbee('0x2d')]['id'],'role':_0x3fb047[_0xbbee('0x2d')][_0xbbee('0xb')]},'options':{'expiresIn':0x15180}};return signJwt(_0x139c29)[_0xbbee('0x31')](function(_0x2a150b){_0x4b379c[_0xbbee('0x57')](_0xbbee('0x58'),_0x2a150b);_0x4b379c[_0xbbee('0x59')](_0xbbee('0x5a'));})['catch'](function(_0x2ad4f7){return _0x4b379c[_0xbbee('0x32')](0x1f4)[_0xbbee('0x5b')](_0x2ad4f7);});};exports[_0xbbee('0x5c')]=function(_0x2e288a){if(_[_0xbbee('0x5d')](_0x2e288a[_0xbbee('0x4a')])||_[_0xbbee('0x5d')](_0x2e288a[_0xbbee('0x5e')])){return null;}else{return createJwt(_0x2e288a);}};exports[_0xbbee('0x5f')]=function(_0x1ce7d9){_0x1ce7d9[_0xbbee('0x4a')]=generateNonce();_0x1ce7d9[_0xbbee('0x5e')]=generateIssuedAt();return createJwt(_0x1ce7d9);};exports['regenerateApiKey']=function(_0x5832dc,_0x165806){var _0x1c12e8=_0x5832dc[_0xbbee('0x42')]['apikey'];if(_0x1c12e8){var _0xef2557={'nonce':_0x165806['apiKeyNonce'],'iat':_0x165806[_0xbbee('0x5e')],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0xbbee('0x43')]()};return verifyJwt(_0x1c12e8,_0xef2557)[_0xbbee('0x31')](function(){return generateApiKey(_0x165806);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports['validatePasswordPattern']=function(_0x7c590a){var _0x35da16=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x35da16[_0xbbee('0x60')](_0x7c590a))throw new db[(_0xbbee('0x61'))][(_0xbbee('0x62'))]('The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.');return;};exports[_0xbbee('0x63')]=function(_0x563627,_0x3a9ee4,_0xc77966){var _0x3472be=encryptor[_0xbbee('0x64')](_0x3a9ee4)[_0xbbee('0x65')](',');for(var _0x23a972=0x0;_0x23a972<_0xc77966;_0x23a972++){if(!_0x3472be[_0x23a972])break;if(_0x563627[_0xbbee('0x66')]()===_0x3472be[_0x23a972][_0xbbee('0x66')]()){var _0x33ca5e=util['format'](_0xbbee('0x67'),_0xc77966);if(_0xc77966===0x1){_0x33ca5e=_0xbbee('0x68');}throw new db[(_0xbbee('0x61'))][(_0xbbee('0x62'))](_0x33ca5e);}}return;};exports[_0xbbee('0x69')]=function(_0x4fc614,_0x15a544){var _0x1c61c0=_0x15a544?encryptor['decryptString'](_0x15a544)['split'](','):[];if(_0x1c61c0['length']===0x5){_0x1c61c0[_0xbbee('0x6a')](-0x1,0x1);}_0x1c61c0[_0xbbee('0x6b')](_0x4fc614);return encryptor[_0xbbee('0x6c')](_0x1c61c0[_0xbbee('0x6d')](','));};function signJwt(_0x428ffa){var _0x3ebf5b=BPromise[_0xbbee('0x6e')](jwt[_0xbbee('0x6f')],{'context':jwt});var _0x11c686=_0x428ffa['secret']||config[_0xbbee('0x9')]['session'];return new BPromise(function(_0xaf19ed,_0x40ef03){_0x3ebf5b(_0x428ffa[_0xbbee('0x70')],_0x11c686,_0x428ffa[_0xbbee('0x71')])['then'](function(_0x168f39){_0xaf19ed(_0x168f39);})['catch'](function(_0x13c3d1){_0x40ef03(_0x13c3d1);});});}function verifyJwt(_0x3cc8f1,_0x49fddd,_0x5fba89){var _0x2243ad=BPromise[_0xbbee('0x6e')](jwt['verify'],{'context':jwt});var _0x57a479=_0x5fba89||config['secrets'][_0xbbee('0xa')];return new BPromise(function(_0x368ca6,_0x30ca1f){_0x2243ad(_0x3cc8f1,_0x57a479,_0x49fddd)[_0xbbee('0x31')](function(_0x21bf7e){_0x368ca6(_0x21bf7e);})[_0xbbee('0x37')](function(_0xd81c70){_0x30ca1f(_0xd81c70);});});}function generateNonce(){return crypto[_0xbbee('0x72')](0x10)[_0xbbee('0x73')](_0xbbee('0x74'));}function generateIssuedAt(){return Math[_0xbbee('0x75')](Date[_0xbbee('0x76')]()/0x3e8)[_0xbbee('0x73')]();}function createJwt(_0x40eb76){var _0x50e1d6={'payload':{'iat':_0x40eb76[_0xbbee('0x5e')],'nonce':_0x40eb76['apiKeyNonce']},'options':{'algorithm':_0xbbee('0x77'),'subject':_0x40eb76['id'][_0xbbee('0x73')](),'issuer':hardwareConf['getUuid'](),'audience':hardwareConf[_0xbbee('0x43')]()}};return signJwt(_0x50e1d6)[_0xbbee('0x31')](function(_0x3b4c73){return{'iat':_0x40eb76[_0xbbee('0x5e')],'nonce':_0x40eb76[_0xbbee('0x4a')],'token':_0x3b4c73};});}
\ No newline at end of file
index 7bc28e9..628fbcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42d1=['app','secrets','session','aes-256-ctr','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','getCiphers','filter','indexOf','hasOwnProperty','createReadStream','createWriteStream','createCipher','data','update','binary','write','end','final','close','decryptFile','createDecipher','encryptString','secret','base64','decryptString','utf8','crypto','bluebird','../../config/environment'];(function(_0x3505b7,_0x3dc5cf){var _0x29316c=function(_0x5683c1){while(--_0x5683c1){_0x3505b7['push'](_0x3505b7['shift']());}};_0x29316c(++_0x3dc5cf);}(_0x42d1,0x195));var _0x142d=function(_0x5ce35d,_0x98776d){_0x5ce35d=_0x5ce35d-0x0;var _0x5a01fb=_0x42d1[_0x5ce35d];return _0x5a01fb;};'use strict';var crypto=require(_0x142d('0x0'));var fs=require('fs');var BPromise=require(_0x142d('0x1'));var _=require('lodash');var config=require(_0x142d('0x2'));var logger=require('../../config/logger')(_0x142d('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x142d('0x4')][_0x142d('0x5')],'algorithm':_0x142d('0x6')};const fileOptions={'algorithm':_0x142d('0x7')};if(config[_0x142d('0x8')]&&config[_0x142d('0x8')]['algorithm']){var isSupported=isAlgorithmSupported(config['encrypt'][_0x142d('0x9')]);if(isSupported){fileOptions[_0x142d('0x9')]=config['encrypt']['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()[_0x142d('0xa')](',\x20');logger[_0x142d('0xb')](config[_0x142d('0x8')][_0x142d('0x9')],_0x142d('0xc'),supportedAlgorithms);}}function isASupportedCipher(_0x5ca541){return AES_SUPPORTED_RX['test'](_0x5ca541);}function getSupportedCiphers(){return crypto[_0x142d('0xd')]()[_0x142d('0xe')](isASupportedCipher);}function isAlgorithmSupported(_0x49e994){return getSupportedCiphers()[_0x142d('0xf')](_0x49e994)>-0x1;}function combineOptions(_0x3e582e){var _0x58ef6d={};for(var _0x1d1ee4 in fileOptions){if(fileOptions[_0x142d('0x10')](_0x1d1ee4)){_0x58ef6d[_0x1d1ee4]=fileOptions[_0x1d1ee4];}}if(_0x3e582e){for(var _0x2a02fe in _0x3e582e){if(_0x3e582e[_0x142d('0x10')](_0x2a02fe)){_0x58ef6d[_0x2a02fe]=_0x3e582e[_0x2a02fe];}}}return _0x58ef6d;}exports['encryptFile']=function(_0x4ba1cb,_0x1d296b,_0x4926e1,_0x5ee845){return new BPromise(function(_0x401d21,_0x397abe){_0x5ee845=combineOptions(_0x5ee845);var _0x1e36d6=new Buffer(_0x4926e1);var _0x27529c=fs[_0x142d('0x11')](_0x4ba1cb);var _0x2d0ee1=fs[_0x142d('0x12')](_0x1d296b);var _0x7ab848=crypto[_0x142d('0x13')](_0x5ee845[_0x142d('0x9')],_0x1e36d6);_0x27529c['on'](_0x142d('0x14'),function(_0x1767c3){var _0x539869=new Buffer(_0x7ab848[_0x142d('0x15')](_0x1767c3),_0x142d('0x16'));_0x2d0ee1[_0x142d('0x17')](_0x539869);});_0x27529c['on'](_0x142d('0x18'),function(){try{var _0x408847=new Buffer(_0x7ab848[_0x142d('0x19')](_0x142d('0x16')),_0x142d('0x16'));_0x2d0ee1['write'](_0x408847);_0x2d0ee1[_0x142d('0x18')]();_0x2d0ee1['on'](_0x142d('0x1a'),function(){return _0x401d21(_0x1d296b);});}catch(_0x1e4927){fs['unlink'](_0x1d296b);return _0x397abe(_0x1e4927);}});});};exports[_0x142d('0x1b')]=function(_0x2ad0c7,_0x28cb8f,_0x129f48,_0x19bc05){return new BPromise(function(_0x5a7381,_0x52704b){_0x19bc05=combineOptions(_0x19bc05);var _0x1bc953=new Buffer(_0x129f48);var _0xb2f21f=fs['createReadStream'](_0x2ad0c7);var _0x285298=fs[_0x142d('0x12')](_0x28cb8f);var _0x4e8725=crypto[_0x142d('0x1c')](_0x19bc05[_0x142d('0x9')],_0x1bc953);_0xb2f21f['on']('data',function(_0x47c3c9){var _0x199f79=new Buffer(_0x4e8725['update'](_0x47c3c9),_0x142d('0x16'));_0x285298[_0x142d('0x17')](_0x199f79);});_0xb2f21f['on'](_0x142d('0x18'),function(){try{var _0x5a0b32=new Buffer(_0x4e8725[_0x142d('0x19')](_0x142d('0x16')),'binary');_0x285298[_0x142d('0x17')](_0x5a0b32);_0x285298[_0x142d('0x18')]();_0x285298['on'](_0x142d('0x1a'),function(){return _0x5a7381(_0x28cb8f);});}catch(_0x42f155){fs['unlink'](_0x28cb8f);return _0x52704b(_0x42f155);}});});};exports[_0x142d('0x1d')]=function(_0x268bd5,_0x1c1e6a,_0x5300ac){var _0x1a8231=_0x5300ac||stringOptions['algorithm'];var _0x5e2631=_0x1c1e6a||stringOptions[_0x142d('0x1e')];var _0x4fa60f=crypto[_0x142d('0x13')](_0x1a8231,_0x5e2631);var _0x461a2a=_0x4fa60f[_0x142d('0x15')](_0x268bd5,'utf8',_0x142d('0x1f'));_0x461a2a+=_0x4fa60f['final']('base64');return _0x461a2a;};exports[_0x142d('0x20')]=function(_0x41758a,_0x28d0e3,_0x282f83){var _0x11e4ce=_0x282f83||stringOptions[_0x142d('0x9')];var _0x56dd38=_0x28d0e3||stringOptions['secret'];var _0x2ad652=crypto[_0x142d('0x1c')](_0x11e4ce,_0x56dd38);var _0x400127=_0x2ad652['update'](_0x41758a,_0x142d('0x1f'),_0x142d('0x21'));_0x400127+=_0x2ad652[_0x142d('0x19')](_0x142d('0x21'));return _0x400127;};
\ No newline at end of file
+var _0xc303=['createDecipher','final','close','secret','createCipher','base64','decryptString','utf8','crypto','lodash','../../config/environment','../../config/logger','app','session','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createReadStream','createWriteStream','data','update','binary','write','end','unlink','decryptFile'];(function(_0x147fe0,_0x38d268){var _0x404900=function(_0x3644d4){while(--_0x3644d4){_0x147fe0['push'](_0x147fe0['shift']());}};_0x404900(++_0x38d268);}(_0xc303,0xda));var _0x3c30=function(_0x126fb9,_0x122c59){_0x126fb9=_0x126fb9-0x0;var _0xc8a3b1=_0xc303[_0x126fb9];return _0xc8a3b1;};'use strict';var crypto=require(_0x3c30('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x3c30('0x1'));var config=require(_0x3c30('0x2'));var logger=require(_0x3c30('0x3'))(_0x3c30('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0x3c30('0x5')],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':_0x3c30('0x6')};if(config[_0x3c30('0x7')]&&config[_0x3c30('0x7')]['algorithm']){var isSupported=isAlgorithmSupported(config[_0x3c30('0x7')][_0x3c30('0x8')]);if(isSupported){fileOptions[_0x3c30('0x8')]=config[_0x3c30('0x7')][_0x3c30('0x8')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x3c30('0x9')](',\x20');logger[_0x3c30('0xa')](config['encrypt'][_0x3c30('0x8')],_0x3c30('0xb'),supportedAlgorithms);}}function isASupportedCipher(_0x1a4dcf){return AES_SUPPORTED_RX[_0x3c30('0xc')](_0x1a4dcf);}function getSupportedCiphers(){return crypto[_0x3c30('0xd')]()[_0x3c30('0xe')](isASupportedCipher);}function isAlgorithmSupported(_0xb4ca69){return getSupportedCiphers()[_0x3c30('0xf')](_0xb4ca69)>-0x1;}function combineOptions(_0xe126fc){var _0x5af513={};for(var _0x190998 in fileOptions){if(fileOptions[_0x3c30('0x10')](_0x190998)){_0x5af513[_0x190998]=fileOptions[_0x190998];}}if(_0xe126fc){for(var _0x1b088d in _0xe126fc){if(_0xe126fc[_0x3c30('0x10')](_0x1b088d)){_0x5af513[_0x1b088d]=_0xe126fc[_0x1b088d];}}}return _0x5af513;}exports[_0x3c30('0x11')]=function(_0x16f7e7,_0x10c86e,_0x19cd8f,_0x434ec5){return new BPromise(function(_0x1bc880,_0x19d3a8){_0x434ec5=combineOptions(_0x434ec5);var _0x203e79=new Buffer(_0x19cd8f);var _0x3ff158=fs[_0x3c30('0x12')](_0x16f7e7);var _0x304c48=fs[_0x3c30('0x13')](_0x10c86e);var _0x912669=crypto['createCipher'](_0x434ec5[_0x3c30('0x8')],_0x203e79);_0x3ff158['on'](_0x3c30('0x14'),function(_0x1c2f2c){var _0x89f4ad=new Buffer(_0x912669[_0x3c30('0x15')](_0x1c2f2c),_0x3c30('0x16'));_0x304c48[_0x3c30('0x17')](_0x89f4ad);});_0x3ff158['on'](_0x3c30('0x18'),function(){try{var _0x54a3ba=new Buffer(_0x912669['final'](_0x3c30('0x16')),_0x3c30('0x16'));_0x304c48[_0x3c30('0x17')](_0x54a3ba);_0x304c48[_0x3c30('0x18')]();_0x304c48['on']('close',function(){return _0x1bc880(_0x10c86e);});}catch(_0x4be738){fs[_0x3c30('0x19')](_0x10c86e);return _0x19d3a8(_0x4be738);}});});};exports[_0x3c30('0x1a')]=function(_0x37e03e,_0x3cfba3,_0x23dca6,_0x3e59e9){return new BPromise(function(_0x30c632,_0x5c5ff6){_0x3e59e9=combineOptions(_0x3e59e9);var _0x1ab6d4=new Buffer(_0x23dca6);var _0x47ec10=fs[_0x3c30('0x12')](_0x37e03e);var _0xed8459=fs[_0x3c30('0x13')](_0x3cfba3);var _0x1db22c=crypto[_0x3c30('0x1b')](_0x3e59e9[_0x3c30('0x8')],_0x1ab6d4);_0x47ec10['on'](_0x3c30('0x14'),function(_0x4a9b9e){var _0x20187d=new Buffer(_0x1db22c[_0x3c30('0x15')](_0x4a9b9e),_0x3c30('0x16'));_0xed8459[_0x3c30('0x17')](_0x20187d);});_0x47ec10['on'](_0x3c30('0x18'),function(){try{var _0x33bdf4=new Buffer(_0x1db22c[_0x3c30('0x1c')](_0x3c30('0x16')),_0x3c30('0x16'));_0xed8459[_0x3c30('0x17')](_0x33bdf4);_0xed8459[_0x3c30('0x18')]();_0xed8459['on'](_0x3c30('0x1d'),function(){return _0x30c632(_0x3cfba3);});}catch(_0x435b07){fs[_0x3c30('0x19')](_0x3cfba3);return _0x5c5ff6(_0x435b07);}});});};exports['encryptString']=function(_0x222ec0,_0xd2ad78,_0x415542){var _0x4c2633=_0x415542||stringOptions['algorithm'];var _0x437b52=_0xd2ad78||stringOptions[_0x3c30('0x1e')];var _0x37b479=crypto[_0x3c30('0x1f')](_0x4c2633,_0x437b52);var _0x14f120=_0x37b479['update'](_0x222ec0,'utf8',_0x3c30('0x20'));_0x14f120+=_0x37b479[_0x3c30('0x1c')](_0x3c30('0x20'));return _0x14f120;};exports[_0x3c30('0x21')]=function(_0x3cf8c7,_0x1fe7db,_0x2dcbdd){var _0x2781bd=_0x2dcbdd||stringOptions[_0x3c30('0x8')];var _0x25c7d8=_0x1fe7db||stringOptions['secret'];var _0x13f419=crypto[_0x3c30('0x1b')](_0x2781bd,_0x25c7d8);var _0x2a60e8=_0x13f419[_0x3c30('0x15')](_0x3cf8c7,_0x3c30('0x20'),_0x3c30('0x22'));_0x2a60e8+=_0x13f419[_0x3c30('0x1c')](_0x3c30('0x22'));return _0x2a60e8;};
\ No newline at end of file
index ce69112..3a5329b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19c1=['catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','inspect','Failed','finally','exit','path','lodash','to-csv','bluebird','rimraf','../../mysqldb','dbH','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Setting','find','split','splitSizeCsv','then','query','QueryTypes','SELECT','Empty','length','range','isInteger','num','forEach','push','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.csv','existsSync','join','each','%s%d.%s','csv','%s.%s','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed'];(function(_0x2f32c4,_0x531dc6){var _0x3f3018=function(_0x406998){while(--_0x406998){_0x2f32c4['push'](_0x2f32c4['shift']());}};_0x3f3018(++_0x531dc6);}(_0x19c1,0xa3));var _0x119c=function(_0x263d88,_0x6342db){_0x263d88=_0x263d88-0x0;var _0x30c92b=_0x19c1[_0x263d88];return _0x30c92b;};'use strict';var util=require('util');var path=require(_0x119c('0x0'));var _=require(_0x119c('0x1'));var csv=require(_0x119c('0x2'));var fs=require('fs');var BPromise=require(_0x119c('0x3'));var zipdir=require('zip-dir');var rimraf=require(_0x119c('0x4'));var db=require(_0x119c('0x5'))['db'];var dbH=require('../../mysqldb')[_0x119c('0x6')];var logger=require('../../config/logger')(_0x119c('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x119c('0x8')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x119c('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x221726,_0x3bc78e){var _0x116caa={'status':_0x221726};var _0x27a74f={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x3bc78e){_0x116caa[_0x119c('0x9')]=_0x3bc78e;}return db[_0x119c('0xa')][_0x119c('0xb')](_0x116caa,_0x27a74f);}function main(){var _0x6601b3=0x1388;var _0x57d97a;logger[_0x119c('0xc')](util[_0x119c('0xd')](_0x119c('0xe'),EXTRACTED_REPORT_ID,'CSV'));return db[_0x119c('0xf')][_0x119c('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x119c('0x11'),_0x119c('0x12')]})['then'](function(_0x19acdc){if(_0x19acdc){_0x57d97a=_0x19acdc;_0x6601b3=_0x57d97a[_0x119c('0x12')]||0x1388;}})[_0x119c('0x13')](function(){return dbH['sequelize'][_0x119c('0x14')](util[_0x119c('0xd')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0x119c('0x15')][_0x119c('0x16')]});})['then'](function(_0x3cd73b){if(!_0x3cd73b[0x0]['num']){return analyticExtractedReport(_0x119c('0x17'));}var _0x2fc900=[];var _0x2c0ff1=0x0;if(_0x57d97a[_0x119c('0x11')]){if(_0x3cd73b&&_0x3cd73b[_0x119c('0x18')]){var _0x823d0d=_[_0x119c('0x19')](_0x3cd73b[0x0]['num']/_0x6601b3);var _0x1148d1=Number[_0x119c('0x1a')](_0x3cd73b[0x0][_0x119c('0x1b')]/_0x6601b3)?_0x3cd73b[0x0]['num']%_0x6601b3:0x0;_0x823d0d[_0x119c('0x1c')](function(_0x1de854){if(_0x1de854>0x0){_0x2c0ff1+=_0x6601b3;}_0x2fc900[_0x119c('0x1d')](dbH[_0x119c('0x1e')]['query'](util['format'](_0x119c('0x1f'),QUERY,_0x6601b3,_0x2c0ff1),{'type':dbH['sequelize']['QueryTypes'][_0x119c('0x16')]}));});if(_0x1148d1>0x0){_0x2c0ff1+=_0x6601b3;_0x2fc900['push'](dbH['sequelize'][_0x119c('0x14')](util['format'](_0x119c('0x1f'),QUERY,_0x1148d1,_0x2c0ff1),{'type':dbH[_0x119c('0x1e')]['QueryTypes']['SELECT']}));}}}else{_0x2fc900[_0x119c('0x1d')](dbH['sequelize'][_0x119c('0x14')](QUERY,{'type':dbH['sequelize'][_0x119c('0x15')][_0x119c('0x16')]}));}var _0x1d94fc=path[_0x119c('0x20')](PATH);var _0x1e2739=path[_0x119c('0x21')](PATH,_0x119c('0x22'));var _0x290af1=_0x57d97a['split']&&_0x2fc900[_0x119c('0x18')]>0x1;var _0x238a36=[];if(!fs[_0x119c('0x23')](path['join'](_0x1d94fc,_0x1e2739))&&_0x290af1){fs['mkdirSync'](path[_0x119c('0x24')](_0x1d94fc,_0x1e2739));}return BPromise[_0x119c('0x25')](_0x2fc900,function(_0x3bfa00){_0x238a36[_0x119c('0x1d')](_0x3bfa00);})['then'](function(){for(var _0x1245c4=0x0;_0x1245c4<_0x238a36[_0x119c('0x18')];_0x1245c4+=0x1){var _0x25cfc2;var _0x122306=_0x238a36[_0x1245c4];if(_0x290af1){_0x25cfc2=path['join'](_0x1d94fc,_0x1e2739,util[_0x119c('0xd')](_0x119c('0x26'),_0x1e2739,_0x1245c4,_0x119c('0x27')));}else{_0x25cfc2=path[_0x119c('0x24')](_0x1d94fc,util['format'](_0x119c('0x28'),_0x1e2739,_0x119c('0x27')));}fs['writeFileSync'](_0x25cfc2,csv(_0x122306));}})[_0x119c('0x13')](function(){if(_0x290af1){return new Promise(function(_0x2f62f7){zipdir(path[_0x119c('0x24')](_0x1d94fc,_0x1e2739),{'saveTo':path['join'](_0x1d94fc,util[_0x119c('0xd')]('%s.%s',_0x1e2739,_0x119c('0x29')))},function(_0x2a6c45,_0x1e9f90){rimraf(path[_0x119c('0x24')](_0x1d94fc,_0x1e2739),function(){});_0x2f62f7(_0x119c('0x2a'));});});}})['then'](function(){logger[_0x119c('0xc')](util['format'](_0x119c('0x2b'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0x119c('0x2c'),_0x290af1?util[_0x119c('0xd')]('%s.%s',_0x1e2739,_0x290af1?_0x119c('0x29'):_0x119c('0x27')):null);});})[_0x119c('0x2d')](function(_0x2be5be){logger['info'](util[_0x119c('0xd')](_0x119c('0x2e'),EXTRACTED_REPORT_ID,_0x119c('0x2f')),util[_0x119c('0x30')](_0x2be5be,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x119c('0x31'));})[_0x119c('0x32')](function(){process[_0x119c('0x33')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x2ef9=['analytics','argv','savename','AnalyticExtractedReport','update','info','CSV','Setting','find','split','splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','length','range','forEach','push','format','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.csv','existsSync','join','mkdirSync','%s%d.%s','csv','writeFileSync','%s.%s','zip\x20finished','Completed','zip','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','exit','util','lodash','to-csv','bluebird','zip-dir','rimraf','dbH'];(function(_0x5b2cac,_0x12ea74){var _0x114882=function(_0x4b9914){while(--_0x4b9914){_0x5b2cac['push'](_0x5b2cac['shift']());}};_0x114882(++_0x12ea74);}(_0x2ef9,0x142));var _0x92ef=function(_0xd9b10a,_0x5b7640){_0xd9b10a=_0xd9b10a-0x0;var _0x535add=_0x2ef9[_0xd9b10a];return _0x535add;};'use strict';var util=require(_0x92ef('0x0'));var path=require('path');var _=require(_0x92ef('0x1'));var csv=require(_0x92ef('0x2'));var fs=require('fs');var BPromise=require(_0x92ef('0x3'));var zipdir=require(_0x92ef('0x4'));var rimraf=require(_0x92ef('0x5'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0x92ef('0x6')];var logger=require('../../config/logger')(_0x92ef('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x92ef('0x8')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x92ef('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x50ae0f,_0x223676){var _0x1b3b70={'status':_0x50ae0f};var _0x3329b4={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x223676){_0x1b3b70[_0x92ef('0x9')]=_0x223676;}return db[_0x92ef('0xa')][_0x92ef('0xb')](_0x1b3b70,_0x3329b4);}function main(){var _0x225e7e=0x1388;var _0x482d5a;logger[_0x92ef('0xc')](util['format']('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x92ef('0xd')));return db[_0x92ef('0xe')][_0x92ef('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x92ef('0x10'),_0x92ef('0x11')]})[_0x92ef('0x12')](function(_0x10788d){if(_0x10788d){_0x482d5a=_0x10788d;_0x225e7e=_0x482d5a[_0x92ef('0x11')]||0x1388;}})[_0x92ef('0x12')](function(){return dbH[_0x92ef('0x13')][_0x92ef('0x14')](util['format'](_0x92ef('0x15'),QUERY),{'type':dbH[_0x92ef('0x13')][_0x92ef('0x16')][_0x92ef('0x17')]});})[_0x92ef('0x12')](function(_0x1e05ce){if(!_0x1e05ce[0x0][_0x92ef('0x18')]){return analyticExtractedReport(_0x92ef('0x19'));}var _0x1710c1=[];var _0x1e7241=0x0;if(_0x482d5a['split']){if(_0x1e05ce&&_0x1e05ce[_0x92ef('0x1a')]){var _0x1a8dda=_[_0x92ef('0x1b')](_0x1e05ce[0x0][_0x92ef('0x18')]/_0x225e7e);var _0x1ba1b4=Number['isInteger'](_0x1e05ce[0x0][_0x92ef('0x18')]/_0x225e7e)?_0x1e05ce[0x0][_0x92ef('0x18')]%_0x225e7e:0x0;_0x1a8dda[_0x92ef('0x1c')](function(_0x23fc08){if(_0x23fc08>0x0){_0x1e7241+=_0x225e7e;}_0x1710c1[_0x92ef('0x1d')](dbH[_0x92ef('0x13')][_0x92ef('0x14')](util[_0x92ef('0x1e')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x225e7e,_0x1e7241),{'type':dbH[_0x92ef('0x13')][_0x92ef('0x16')][_0x92ef('0x17')]}));});if(_0x1ba1b4>0x0){_0x1e7241+=_0x225e7e;_0x1710c1[_0x92ef('0x1d')](dbH[_0x92ef('0x13')][_0x92ef('0x14')](util[_0x92ef('0x1e')](_0x92ef('0x1f'),QUERY,_0x1ba1b4,_0x1e7241),{'type':dbH[_0x92ef('0x13')]['QueryTypes'][_0x92ef('0x17')]}));}}}else{_0x1710c1[_0x92ef('0x1d')](dbH[_0x92ef('0x13')][_0x92ef('0x14')](QUERY,{'type':dbH[_0x92ef('0x13')][_0x92ef('0x16')]['SELECT']}));}var _0x2872f8=path[_0x92ef('0x20')](PATH);var _0x52ee98=path[_0x92ef('0x21')](PATH,_0x92ef('0x22'));var _0x29c536=_0x482d5a[_0x92ef('0x10')]&&_0x1710c1[_0x92ef('0x1a')]>0x1;var _0x534eed=[];if(!fs[_0x92ef('0x23')](path[_0x92ef('0x24')](_0x2872f8,_0x52ee98))&&_0x29c536){fs[_0x92ef('0x25')](path[_0x92ef('0x24')](_0x2872f8,_0x52ee98));}return BPromise['each'](_0x1710c1,function(_0x44bbb7){_0x534eed[_0x92ef('0x1d')](_0x44bbb7);})['then'](function(){for(var _0x2dbf9a=0x0;_0x2dbf9a<_0x534eed[_0x92ef('0x1a')];_0x2dbf9a+=0x1){var _0x48f7ee;var _0x35784b=_0x534eed[_0x2dbf9a];if(_0x29c536){_0x48f7ee=path[_0x92ef('0x24')](_0x2872f8,_0x52ee98,util[_0x92ef('0x1e')](_0x92ef('0x26'),_0x52ee98,_0x2dbf9a,'csv'));}else{_0x48f7ee=path[_0x92ef('0x24')](_0x2872f8,util['format']('%s.%s',_0x52ee98,_0x92ef('0x27')));}fs[_0x92ef('0x28')](_0x48f7ee,csv(_0x35784b));}})[_0x92ef('0x12')](function(){if(_0x29c536){return new Promise(function(_0x22745f){zipdir(path[_0x92ef('0x24')](_0x2872f8,_0x52ee98),{'saveTo':path['join'](_0x2872f8,util[_0x92ef('0x1e')](_0x92ef('0x29'),_0x52ee98,'zip'))},function(_0x1a2dd6,_0x2771e8){rimraf(path[_0x92ef('0x24')](_0x2872f8,_0x52ee98),function(){});_0x22745f(_0x92ef('0x2a'));});});}})[_0x92ef('0x12')](function(){logger[_0x92ef('0xc')](util[_0x92ef('0x1e')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x92ef('0xd')));return analyticExtractedReport(_0x92ef('0x2b'),_0x29c536?util[_0x92ef('0x1e')]('%s.%s',_0x52ee98,_0x29c536?_0x92ef('0x2c'):'csv'):null);});})['catch'](function(_0x471a6b){logger[_0x92ef('0xc')](util[_0x92ef('0x1e')](_0x92ef('0x2d'),EXTRACTED_REPORT_ID,_0x92ef('0xd')),util['inspect'](_0x471a6b,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0x92ef('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
index 59e6b6f..2db4f92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96d3=['concat','keys','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','header','pageBreak','margin','landscape','toString','Arial','black','right','num','Setting','find','split','splitSizePdf','then','range','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','dirname','basename','.pdf','existsSync','join','mkdirSync','each','flatten','createPdfKitDocument','%s.%s','all','zip','zip\x20finished','info','PDF','Completed','pdf','AnalyticExtractedReport','QueryTypes','catch','inspect','Failed','exit','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','interactionId','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','error','end','createPdfFromHTML','lodash','util','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','jsdom','JSDOM','window','bluebird','../../mysqldb','dbH','argv','savename','update','map','tableHeader','pick','value','fill','length','auto','push','body'];(function(_0x8a3198,_0x1624c3){var _0x111aa8=function(_0x31997d){while(--_0x31997d){_0x8a3198['push'](_0x8a3198['shift']());}};_0x111aa8(++_0x1624c3);}(_0x96d3,0x97));var _0x396d=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x96d3[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x396d('0x0'));var fs=require('fs');var util=require(_0x396d('0x1'));var path=require(_0x396d('0x2'));var moment=require(_0x396d('0x3'));var htmlToPdfmake=require(_0x396d('0x4'));var PdfPrinter=require(_0x396d('0x5'));var zipdir=require(_0x396d('0x6'));var rimraf=require('rimraf');var JSDOM=require(_0x396d('0x7'))[_0x396d('0x8')];var window=new JSDOM('')[_0x396d('0x9')];var BPromise=require(_0x396d('0xa'));var db=require('../../mysqldb')['db'];var dbH=require(_0x396d('0xb'))[_0x396d('0xc')];var logger=require('../../config/logger')('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x396d('0xd')][0x2]);var QUERY=process[_0x396d('0xd')][0x3];var PATH=process[_0x396d('0xd')][0x4];var NAME=process[_0x396d('0xd')][0x5];var FORMAT='MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a';var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x543109,_0x15e574){var _0x2993ee={'status':_0x543109};var _0x20283b={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x15e574){_0x2993ee[_0x396d('0xe')]=_0x15e574;}return db['AnalyticExtractedReport'][_0x396d('0xf')](_0x2993ee,_0x20283b);}function getHeaders(_0x4d7f2f){return _[_0x396d('0x10')](_0x4d7f2f,function(_0x296600){return{'text':_0x296600,'style':_0x396d('0x11')};});}function getRows(_0x5f317a,_0x3fb5d5){return _[_0x396d('0x10')](_0x3fb5d5,function(_0x376e7b){return _(_0x376e7b)[_0x396d('0x12')](_0x5f317a)[_0x396d('0x10')](function(_0xffac1f){return _0xffac1f?_['toString'](_0xffac1f):'';})[_0x396d('0x13')]();});}function createTable(_0x31507d,_0x1d1892){var _0x349661={'widths':_[_0x396d('0x14')](Array(_0x31507d[_0x396d('0x15')]),0x91),'heights':function(_0x5b5463){return _0x5b5463===0x0?_0x396d('0x16'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x34c2ae=getHeaders(_0x31507d);_0x349661['body'][_0x396d('0x17')](_0x34c2ae);var _0x113105=getRows(_0x31507d,_0x1d1892);_0x349661[_0x396d('0x18')]=_0x349661[_0x396d('0x18')][_0x396d('0x19')](_0x113105);return _0x349661;}function createTables(_0x441f08){var _0x5804d1=[];var _0x135afc=_['chunk'](Object[_0x396d('0x1a')](_0x441f08[0x0]),0x5);_0x135afc['forEach'](function(_0x36c1b3){_0x5804d1['push'](createTable(_0x36c1b3,_0x441f08));});return _0x5804d1;}function getPDFDocDefinition(_0x2ababc){var _0x15cbac=util[_0x396d('0x1b')](_0x396d('0x1c'),NAME,EXTRACTED_REPORT[_0x396d('0x1d')],moment(EXTRACTED_REPORT[_0x396d('0x1e')])[_0x396d('0x1b')](FORMAT),moment(EXTRACTED_REPORT[_0x396d('0x1f')])[_0x396d('0x1b')](FORMAT));var _0x3dd17c=[];for(var _0x41451e=0x0;_0x41451e<_0x2ababc[_0x396d('0x15')];_0x41451e++){var _0x281a49=[];if(_0x41451e===0x0){_0x281a49[_0x396d('0x17')]({'text':_0x15cbac,'style':_0x396d('0x20')});}var _0x340b8a={'table':_0x2ababc[_0x41451e]};if(_0x41451e>0x0){_0x340b8a[_0x396d('0x21')]='before';_0x340b8a[_0x396d('0x22')]=[0x0,0x46,0x0,0x0];}_0x281a49['push'](_0x340b8a);_0x3dd17c[_0x396d('0x17')](_0x281a49);}return{'pageSize':'A4','pageOrientation':_0x396d('0x23'),'content':_0x3dd17c,'footer':function(_0x31b115,_0x629d03){return{'text':_0x31b115[_0x396d('0x24')]()+'\x20/\x20'+_0x629d03,'style':'footer'};},'defaultStyle':{'font':_0x396d('0x25')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x396d('0x26')},'footer':{'alignment':_0x396d('0x27'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x249e5b){var _0x59b12a=0x1388;var _0x3818de;if(!_0x249e5b[0x0][_0x396d('0x28')]){return analyticExtractedReport('Empty');}return db[_0x396d('0x29')][_0x396d('0x2a')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x396d('0x2b'),_0x396d('0x2c')]})['then'](function(_0x4bf001){if(_0x4bf001){_0x3818de=_0x4bf001;_0x59b12a=_0x3818de['splitSizePdf']||0x3e8;}})[_0x396d('0x2d')](function(){var _0x56b42a=[];var _0x417ede=0x0;if(_0x3818de['split']){if(_0x249e5b&&_0x249e5b[_0x396d('0x15')]){var _0x34dd22=_[_0x396d('0x2e')](_0x249e5b[0x0][_0x396d('0x28')]/_0x59b12a);var _0x2d0112=Number[_0x396d('0x2f')](_0x249e5b[0x0][_0x396d('0x28')]/_0x59b12a)?_0x249e5b[0x0][_0x396d('0x28')]%_0x59b12a:0x0;_0x34dd22['forEach'](function(_0x27fa22){if(_0x27fa22>0x0){_0x417ede+=_0x59b12a;}_0x56b42a[_0x396d('0x17')](dbH[_0x396d('0x30')][_0x396d('0x31')](util[_0x396d('0x1b')](_0x396d('0x32'),QUERY,_0x59b12a,_0x417ede),{'type':dbH['sequelize']['QueryTypes']['SELECT']}));});if(_0x2d0112>0x0){_0x417ede+=_0x59b12a;_0x56b42a['push'](dbH[_0x396d('0x30')][_0x396d('0x31')](util[_0x396d('0x1b')](_0x396d('0x32'),QUERY,_0x2d0112,_0x417ede),{'type':dbH[_0x396d('0x30')]['QueryTypes'][_0x396d('0x33')]}));}}}else{_0x56b42a[_0x396d('0x17')](dbH['sequelize'][_0x396d('0x31')](QUERY,{'type':dbH[_0x396d('0x30')]['QueryTypes'][_0x396d('0x33')]}));}var _0x4d5249=path[_0x396d('0x34')](PATH);var _0x3c821d=path[_0x396d('0x35')](PATH,_0x396d('0x36'));var _0x16e0e6=_0x3818de['split']&&_0x56b42a[_0x396d('0x15')]>0x1;var _0x54b150=[];if(!fs[_0x396d('0x37')](path[_0x396d('0x38')](_0x4d5249,_0x3c821d))&&_0x16e0e6){fs[_0x396d('0x39')](path[_0x396d('0x38')](_0x4d5249,_0x3c821d));}return BPromise[_0x396d('0x3a')](_0x56b42a,function(_0x3be712){_0x54b150[_0x396d('0x17')](_0x3be712);})[_0x396d('0x2d')](function(){var _0x2aec34=[];for(var _0x1da122=0x0;_0x1da122<_0x54b150[_0x396d('0x15')];_0x1da122+=0x1){var _0x29c152=_0x54b150[_0x1da122];var _0x49927e=createTables(_[_0x396d('0x3b')](_0x29c152));var _0x3396a1;var _0x45ae51=getPDFDocDefinition(_0x49927e);var _0x1b4e00=getPDFPrinter();var _0x79c21a=_0x1b4e00[_0x396d('0x3c')](_0x45ae51);if(_0x16e0e6){_0x3396a1=path[_0x396d('0x38')](_0x4d5249,_0x3c821d,util['format']('%s%d.%s',_0x3c821d,_0x1da122,'pdf'));}else{_0x3396a1=path[_0x396d('0x38')](_0x4d5249,util[_0x396d('0x1b')](_0x396d('0x3d'),_0x3c821d,'pdf'));}_0x2aec34[_0x396d('0x17')](writePDFDocument(_0x79c21a,_0x3396a1));}return Promise[_0x396d('0x3e')](_0x2aec34);})[_0x396d('0x2d')](function(){if(_0x16e0e6){return new Promise(function(_0x120810){zipdir(path[_0x396d('0x38')](_0x4d5249,_0x3c821d),{'saveTo':path[_0x396d('0x38')](_0x4d5249,util[_0x396d('0x1b')]('%s.%s',_0x3c821d,_0x396d('0x3f')))},function(){rimraf(path[_0x396d('0x38')](_0x4d5249,_0x3c821d),function(){});_0x120810(_0x396d('0x40'));});});}})[_0x396d('0x2d')](function(){if(!_0x16e0e6)return;rimraf(path['join'](_0x4d5249,_0x3c821d),function(){});})[_0x396d('0x2d')](function(){logger[_0x396d('0x41')](util[_0x396d('0x1b')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x396d('0x42')));return analyticExtractedReport(_0x396d('0x43'),_0x16e0e6?util[_0x396d('0x1b')]('%s.%s',_0x3c821d,_0x16e0e6?_0x396d('0x3f'):_0x396d('0x44')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x396d('0x41')](util['format']('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'PDF'));return db[_0x396d('0x45')]['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0x396d('0x2d')](function(_0x176592){EXTRACTED_REPORT=_0x176592;return dbH[_0x396d('0x30')]['query'](util[_0x396d('0x1b')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0x396d('0x46')]['SELECT']});})[_0x396d('0x2d')](extractReport)[_0x396d('0x47')](function(_0x5af682){logger[_0x396d('0x41')](util[_0x396d('0x1b')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x396d('0x42')),util[_0x396d('0x48')](_0x5af682,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x396d('0x49'));})['finally'](function(){process[_0x396d('0x4a')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x1b5843=new PdfPrinter({'Arial':{'normal':__dirname+'/fonts/arial-regular.ttf','bold':__dirname+_0x396d('0x4b'),'italics':__dirname+_0x396d('0x4c'),'bolditalics':__dirname+_0x396d('0x4d')}});return _0x1b5843;}function getPDFDocDefinitionFromHTML(_0x412204,_0x558c3b){var _0x1b90cf=util[_0x396d('0x1b')](_0x396d('0x4e'),_0x558c3b['channel'],_0x558c3b[_0x396d('0x4f')]);var _0x28d294=moment()[_0x396d('0x1b')]('YYYY-MM-DD')[_0x396d('0x24')]();var _0x573e25=htmlToPdfmake(_0x412204,{'window':window,'tableAutoSize':!![]});return{'content':[_0x573e25],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x396d('0x50'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x396d('0x50'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x396d('0x51'),'style':_0x396d('0x20')}];},'footer':function(_0x14e98c,_0xe1930b){return[{'text':util['format'](_0x396d('0x52'),_0x1b90cf,_0x14e98c,_0xe1930b,_0x28d294),'style':'footer'}];}};}function writePDFDocument(_0x11184a,_0x1c1ffa){return new Promise(function(_0x53f0ce,_0x6dd3f){var _0x47b7d9=_0x11184a[_0x396d('0x53')](fs[_0x396d('0x54')](_0x1c1ffa));_0x47b7d9['on']('finish',function(){_0x53f0ce('finish');});_0x47b7d9['on'](_0x396d('0x55'),function(_0x47772c){_0x6dd3f(_0x47772c);});_0x11184a[_0x396d('0x56')]();});}exports[_0x396d('0x57')]=function(_0x23e89a,_0x5bcc12){var _0x2d5f73=getPDFPrinter();var _0xc7547f=getPDFDocDefinitionFromHTML(_0x23e89a,_0x5bcc12);var _0x36274f=_0x2d5f73[_0x396d('0x3c')](_0xc7547f);return writePDFDocument(_0x36274f,_0x5bcc12['path'])[_0x396d('0x47')](function(_0x13e292){throw _0x13e292;});};
\ No newline at end of file
+var _0x3008=['exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','%s\x20#%d','channel','center','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','footer','createWriteStream','finish','error','end','createPdfFromHTML','catch','util','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','window','../../config/logger','argv','savename','AnalyticExtractedReport','update','map','tableHeader','pick','toString','value','fill','auto','body','push','chunk','keys','startDate','format','endDate','length','header','pageBreak','margin','landscape','\x20/\x20','Arial','black','right','num','Empty','Setting','find','split','splitSizePdf','then','range','isInteger','forEach','sequelize','QueryTypes','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','dirname','.pdf','existsSync','join','mkdirSync','each','flatten','%s%d.%s','pdf','all','%s.%s','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','zip','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','inspect','finally'];(function(_0x3ae717,_0x3b172c){var _0x5c3664=function(_0x56d07f){while(--_0x56d07f){_0x3ae717['push'](_0x3ae717['shift']());}};_0x5c3664(++_0x3b172c);}(_0x3008,0x177));var _0x8300=function(_0x15942a,_0x13b58c){_0x15942a=_0x15942a-0x0;var _0x36a9fb=_0x3008[_0x15942a];return _0x36a9fb;};'use strict';var _=require('lodash');var fs=require('fs');var util=require(_0x8300('0x0'));var path=require(_0x8300('0x1'));var moment=require(_0x8300('0x2'));var htmlToPdfmake=require(_0x8300('0x3'));var PdfPrinter=require(_0x8300('0x4'));var zipdir=require(_0x8300('0x5'));var rimraf=require(_0x8300('0x6'));var JSDOM=require(_0x8300('0x7'))[_0x8300('0x8')];var window=new JSDOM('')[_0x8300('0x9')];var BPromise=require('bluebird');var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require(_0x8300('0xa'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x8300('0xb')][0x2]);var QUERY=process[_0x8300('0xb')][0x3];var PATH=process[_0x8300('0xb')][0x4];var NAME=process[_0x8300('0xb')][0x5];var FORMAT='MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a';var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x49e5b3,_0xe8cc0){var _0x4bc2a2={'status':_0x49e5b3};var _0x31c5e4={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xe8cc0){_0x4bc2a2[_0x8300('0xc')]=_0xe8cc0;}return db[_0x8300('0xd')][_0x8300('0xe')](_0x4bc2a2,_0x31c5e4);}function getHeaders(_0x946d13){return _[_0x8300('0xf')](_0x946d13,function(_0x55e9e0){return{'text':_0x55e9e0,'style':_0x8300('0x10')};});}function getRows(_0x5b7bd0,_0x1e48cb){return _[_0x8300('0xf')](_0x1e48cb,function(_0x5a95d0){return _(_0x5a95d0)[_0x8300('0x11')](_0x5b7bd0)[_0x8300('0xf')](function(_0x4c8eb4){return _0x4c8eb4?_[_0x8300('0x12')](_0x4c8eb4):'';})[_0x8300('0x13')]();});}function createTable(_0x729e9c,_0x4fb230){var _0x5de7f3={'widths':_[_0x8300('0x14')](Array(_0x729e9c['length']),0x91),'heights':function(_0x4c6129){return _0x4c6129===0x0?_0x8300('0x15'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x30ec1e=getHeaders(_0x729e9c);_0x5de7f3[_0x8300('0x16')][_0x8300('0x17')](_0x30ec1e);var _0x1a3139=getRows(_0x729e9c,_0x4fb230);_0x5de7f3['body']=_0x5de7f3[_0x8300('0x16')]['concat'](_0x1a3139);return _0x5de7f3;}function createTables(_0x54af58){var _0x305969=[];var _0x41d0cc=_[_0x8300('0x18')](Object[_0x8300('0x19')](_0x54af58[0x0]),0x5);_0x41d0cc['forEach'](function(_0x4c1d97){_0x305969[_0x8300('0x17')](createTable(_0x4c1d97,_0x54af58));});return _0x305969;}function getPDFDocDefinition(_0x35d384){var _0x3858ad=util['format']('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x8300('0x1a')])[_0x8300('0x1b')](FORMAT),moment(EXTRACTED_REPORT[_0x8300('0x1c')])[_0x8300('0x1b')](FORMAT));var _0x52bd3e=[];for(var _0x5ad23a=0x0;_0x5ad23a<_0x35d384[_0x8300('0x1d')];_0x5ad23a++){var _0x4fd12a=[];if(_0x5ad23a===0x0){_0x4fd12a['push']({'text':_0x3858ad,'style':_0x8300('0x1e')});}var _0x32f3d4={'table':_0x35d384[_0x5ad23a]};if(_0x5ad23a>0x0){_0x32f3d4[_0x8300('0x1f')]='before';_0x32f3d4[_0x8300('0x20')]=[0x0,0x46,0x0,0x0];}_0x4fd12a[_0x8300('0x17')](_0x32f3d4);_0x52bd3e[_0x8300('0x17')](_0x4fd12a);}return{'pageSize':'A4','pageOrientation':_0x8300('0x21'),'content':_0x52bd3e,'footer':function(_0x1e1e48,_0x28da06){return{'text':_0x1e1e48[_0x8300('0x12')]()+_0x8300('0x22')+_0x28da06,'style':'footer'};},'defaultStyle':{'font':_0x8300('0x23')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x8300('0x24')},'footer':{'alignment':_0x8300('0x25'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x4b873a){var _0x37f409=0x1388;var _0x35de92;if(!_0x4b873a[0x0][_0x8300('0x26')]){return analyticExtractedReport(_0x8300('0x27'));}return db[_0x8300('0x28')][_0x8300('0x29')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x8300('0x2a'),_0x8300('0x2b')]})['then'](function(_0x27c522){if(_0x27c522){_0x35de92=_0x27c522;_0x37f409=_0x35de92[_0x8300('0x2b')]||0x3e8;}})[_0x8300('0x2c')](function(){var _0x8020e5=[];var _0x33b352=0x0;if(_0x35de92[_0x8300('0x2a')]){if(_0x4b873a&&_0x4b873a[_0x8300('0x1d')]){var _0x3a6b68=_[_0x8300('0x2d')](_0x4b873a[0x0][_0x8300('0x26')]/_0x37f409);var _0x2fa730=Number[_0x8300('0x2e')](_0x4b873a[0x0][_0x8300('0x26')]/_0x37f409)?_0x4b873a[0x0][_0x8300('0x26')]%_0x37f409:0x0;_0x3a6b68[_0x8300('0x2f')](function(_0x1d216d){if(_0x1d216d>0x0){_0x33b352+=_0x37f409;}_0x8020e5[_0x8300('0x17')](dbH[_0x8300('0x30')]['query'](util[_0x8300('0x1b')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x37f409,_0x33b352),{'type':dbH['sequelize'][_0x8300('0x31')]['SELECT']}));});if(_0x2fa730>0x0){_0x33b352+=_0x37f409;_0x8020e5[_0x8300('0x17')](dbH['sequelize'][_0x8300('0x32')](util[_0x8300('0x1b')](_0x8300('0x33'),QUERY,_0x2fa730,_0x33b352),{'type':dbH[_0x8300('0x30')]['QueryTypes'][_0x8300('0x34')]}));}}}else{_0x8020e5[_0x8300('0x17')](dbH[_0x8300('0x30')]['query'](QUERY,{'type':dbH['sequelize'][_0x8300('0x31')][_0x8300('0x34')]}));}var _0x36d4b0=path[_0x8300('0x35')](PATH);var _0x3fb035=path['basename'](PATH,_0x8300('0x36'));var _0x3de094=_0x35de92['split']&&_0x8020e5['length']>0x1;var _0x484fe5=[];if(!fs[_0x8300('0x37')](path[_0x8300('0x38')](_0x36d4b0,_0x3fb035))&&_0x3de094){fs[_0x8300('0x39')](path[_0x8300('0x38')](_0x36d4b0,_0x3fb035));}return BPromise[_0x8300('0x3a')](_0x8020e5,function(_0x2300d5){_0x484fe5[_0x8300('0x17')](_0x2300d5);})[_0x8300('0x2c')](function(){var _0x4026ad=[];for(var _0x3b8c3a=0x0;_0x3b8c3a<_0x484fe5[_0x8300('0x1d')];_0x3b8c3a+=0x1){var _0x161af6=_0x484fe5[_0x3b8c3a];var _0x4228bc=createTables(_[_0x8300('0x3b')](_0x161af6));var _0x47a68d;var _0x424c6e=getPDFDocDefinition(_0x4228bc);var _0xd7c17=getPDFPrinter();var _0x438965=_0xd7c17['createPdfKitDocument'](_0x424c6e);if(_0x3de094){_0x47a68d=path[_0x8300('0x38')](_0x36d4b0,_0x3fb035,util[_0x8300('0x1b')](_0x8300('0x3c'),_0x3fb035,_0x3b8c3a,_0x8300('0x3d')));}else{_0x47a68d=path[_0x8300('0x38')](_0x36d4b0,util[_0x8300('0x1b')]('%s.%s',_0x3fb035,_0x8300('0x3d')));}_0x4026ad[_0x8300('0x17')](writePDFDocument(_0x438965,_0x47a68d));}return Promise[_0x8300('0x3e')](_0x4026ad);})[_0x8300('0x2c')](function(){if(_0x3de094){return new Promise(function(_0x4ea74b){zipdir(path['join'](_0x36d4b0,_0x3fb035),{'saveTo':path[_0x8300('0x38')](_0x36d4b0,util[_0x8300('0x1b')](_0x8300('0x3f'),_0x3fb035,'zip'))},function(){rimraf(path[_0x8300('0x38')](_0x36d4b0,_0x3fb035),function(){});_0x4ea74b(_0x8300('0x40'));});});}})[_0x8300('0x2c')](function(){if(!_0x3de094)return;rimraf(path[_0x8300('0x38')](_0x36d4b0,_0x3fb035),function(){});})[_0x8300('0x2c')](function(){logger[_0x8300('0x41')](util[_0x8300('0x1b')](_0x8300('0x42'),EXTRACTED_REPORT_ID,'PDF'));return analyticExtractedReport(_0x8300('0x43'),_0x3de094?util[_0x8300('0x1b')]('%s.%s',_0x3fb035,_0x3de094?_0x8300('0x44'):_0x8300('0x3d')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x8300('0x1b')](_0x8300('0x45'),EXTRACTED_REPORT_ID,_0x8300('0x46')));return db['AnalyticExtractedReport'][_0x8300('0x47')]({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x284a02){EXTRACTED_REPORT=_0x284a02;return dbH[_0x8300('0x30')][_0x8300('0x32')](util[_0x8300('0x1b')](_0x8300('0x48'),QUERY),{'type':dbH['sequelize']['QueryTypes'][_0x8300('0x34')]});})[_0x8300('0x2c')](extractReport)['catch'](function(_0x2e8531){logger[_0x8300('0x41')](util[_0x8300('0x1b')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'PDF'),util[_0x8300('0x49')](_0x2e8531,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x8300('0x4a')](function(){process[_0x8300('0x4b')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x1efe07=new PdfPrinter({'Arial':{'normal':__dirname+_0x8300('0x4c'),'bold':__dirname+_0x8300('0x4d'),'italics':__dirname+_0x8300('0x4e'),'bolditalics':__dirname+'/fonts/arial-bold-italic.ttf'}});return _0x1efe07;}function getPDFDocDefinitionFromHTML(_0x826bde,_0x3ba824){var _0x302bac=util[_0x8300('0x1b')](_0x8300('0x4f'),_0x3ba824[_0x8300('0x50')],_0x3ba824['interactionId']);var _0x3b64e3=moment()[_0x8300('0x1b')]('YYYY-MM-DD')[_0x8300('0x12')]();var _0x1c8e62=htmlToPdfmake(_0x826bde,{'window':window,'tableAutoSize':!![]});return{'content':[_0x1c8e62],'defaultStyle':{'font':_0x8300('0x23')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x8300('0x51'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x8300('0x51'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x8300('0x51')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':_0x8300('0x1e')}];},'footer':function(_0x5a535d,_0x57bdbb){return[{'text':util[_0x8300('0x1b')](_0x8300('0x52'),_0x302bac,_0x5a535d,_0x57bdbb,_0x3b64e3),'style':_0x8300('0x53')}];}};}function writePDFDocument(_0x5cc972,_0x328f49){return new Promise(function(_0x1f4ebd,_0x589d24){var _0x29bab4=_0x5cc972['pipe'](fs[_0x8300('0x54')](_0x328f49));_0x29bab4['on']('finish',function(){_0x1f4ebd(_0x8300('0x55'));});_0x29bab4['on'](_0x8300('0x56'),function(_0x5230a0){_0x589d24(_0x5230a0);});_0x5cc972[_0x8300('0x57')]();});}exports[_0x8300('0x58')]=function(_0x55daae,_0x242bc4){var _0x36fd13=getPDFPrinter();var _0x53029f=getPDFDocDefinitionFromHTML(_0x55daae,_0x242bc4);var _0x1b1c35=_0x36fd13['createPdfKitDocument'](_0x53029f);return writePDFDocument(_0x1b1c35,_0x242bc4[_0x8300('0x1')])[_0x8300('0x59')](function(_0x37dd85){throw _0x37dd85;});};
\ No newline at end of file
index 796429b..0befb8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d92=['forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','.xlsx','length','existsSync','join','mkdirSync','each','xlsx','%s.%s','writeFileSync','binary','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','exit','util','path','lodash','json2xls','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','split','splitSizeXlsx','then','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','num','isInteger'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x8d92,0x13c));var _0x28d9=function(_0x362519,_0x5d067b){_0x362519=_0x362519-0x0;var _0x134ba4=_0x8d92[_0x362519];return _0x134ba4;};'use strict';var util=require(_0x28d9('0x0'));var path=require(_0x28d9('0x1'));var _=require(_0x28d9('0x2'));var fs=require('fs');var json2xls=require(_0x28d9('0x3'));var BPromise=require('bluebird');var zipdir=require(_0x28d9('0x4'));var rimraf=require(_0x28d9('0x5'));var db=require(_0x28d9('0x6'))['db'];var dbH=require(_0x28d9('0x6'))[_0x28d9('0x7')];var logger=require(_0x28d9('0x8'))(_0x28d9('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0x28d9('0xa')][0x2]);var QUERY=process[_0x28d9('0xa')][0x3];var PATH=process[_0x28d9('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x2e7a8f,_0x4e3c16){var _0x50c129={'status':_0x2e7a8f};var _0x208b9c={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4e3c16){_0x50c129[_0x28d9('0xb')]=_0x4e3c16;}return db[_0x28d9('0xc')][_0x28d9('0xd')](_0x50c129,_0x208b9c);}function main(){var _0x5b36a7=0x1388;var _0x4f8786;logger[_0x28d9('0xe')](util[_0x28d9('0xf')](_0x28d9('0x10'),EXTRACTED_REPORT_ID,_0x28d9('0x11')));return db[_0x28d9('0x12')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x28d9('0x13'),_0x28d9('0x14')]})[_0x28d9('0x15')](function(_0xc56ce9){if(_0xc56ce9){_0x4f8786=_0xc56ce9;_0x5b36a7=_0x4f8786[_0x28d9('0x14')]||0x1388;}})[_0x28d9('0x15')](function(){return dbH['sequelize'][_0x28d9('0x16')](util['format'](_0x28d9('0x17'),QUERY),{'type':dbH[_0x28d9('0x18')]['QueryTypes']['SELECT']});})[_0x28d9('0x15')](function(_0x54739d){if(!_0x54739d[0x0][_0x28d9('0x19')]){return analyticExtractedReport('Empty');}var _0x350c29=[];var _0x1b4fd3=0x0;if(_0x4f8786[_0x28d9('0x13')]){if(_0x54739d&&_0x54739d['length']){var _0x340756=_['range'](_0x54739d[0x0]['num']/_0x5b36a7);var _0xe57b8=Number[_0x28d9('0x1a')](_0x54739d[0x0][_0x28d9('0x19')]/_0x5b36a7)?_0x54739d[0x0][_0x28d9('0x19')]%_0x5b36a7:0x0;_0x340756[_0x28d9('0x1b')](function(_0x4d74ed){if(_0x4d74ed>0x0){_0x1b4fd3+=_0x5b36a7;}_0x350c29[_0x28d9('0x1c')](dbH[_0x28d9('0x18')][_0x28d9('0x16')](util[_0x28d9('0xf')](_0x28d9('0x1d'),QUERY,_0x5b36a7,_0x1b4fd3),{'type':dbH['sequelize'][_0x28d9('0x1e')]['SELECT']}));});if(_0xe57b8>0x0){_0x1b4fd3+=_0x5b36a7;_0x350c29[_0x28d9('0x1c')](dbH[_0x28d9('0x18')]['query'](util[_0x28d9('0xf')](_0x28d9('0x1d'),QUERY,_0xe57b8,_0x1b4fd3),{'type':dbH['sequelize']['QueryTypes'][_0x28d9('0x1f')]}));}}}else{_0x350c29['push'](dbH[_0x28d9('0x18')][_0x28d9('0x16')](QUERY,{'type':dbH[_0x28d9('0x18')][_0x28d9('0x1e')][_0x28d9('0x1f')]}));}var _0x145059=path['dirname'](PATH);var _0x117a54=path['basename'](PATH,_0x28d9('0x20'));var _0x350555=_0x4f8786[_0x28d9('0x13')]&&_0x350c29[_0x28d9('0x21')]>0x1;var _0x529b2c=[];if(!fs[_0x28d9('0x22')](path[_0x28d9('0x23')](_0x145059,_0x117a54))&&_0x350555){fs[_0x28d9('0x24')](path[_0x28d9('0x23')](_0x145059,_0x117a54));}return BPromise[_0x28d9('0x25')](_0x350c29,function(_0x6820c2){_0x529b2c[_0x28d9('0x1c')](_0x6820c2);})[_0x28d9('0x15')](function(){for(var _0x10d13e=0x0;_0x10d13e<_0x529b2c[_0x28d9('0x21')];_0x10d13e+=0x1){var _0x30b6a9;var _0xce142b=_0x529b2c[_0x10d13e];if(_0x350555){_0x30b6a9=path[_0x28d9('0x23')](_0x145059,_0x117a54,util[_0x28d9('0xf')]('%s%d.%s',_0x117a54,_0x10d13e,_0x28d9('0x26')));}else{_0x30b6a9=path[_0x28d9('0x23')](_0x145059,util['format'](_0x28d9('0x27'),_0x117a54,_0x28d9('0x26')));}fs[_0x28d9('0x28')](_0x30b6a9,json2xls(_0xce142b),_0x28d9('0x29'));}})[_0x28d9('0x15')](function(){if(_0x350555){return new Promise(function(_0x3e8900){zipdir(path['join'](_0x145059,_0x117a54),{'saveTo':path['join'](_0x145059,util['format']('%s.%s',_0x117a54,_0x28d9('0x2a')))},function(_0x486d31,_0x312fba){rimraf(path[_0x28d9('0x23')](_0x145059,_0x117a54),function(){});_0x3e8900(_0x28d9('0x2b'));});});}})[_0x28d9('0x15')](function(){logger[_0x28d9('0xe')](util[_0x28d9('0xf')](_0x28d9('0x2c'),EXTRACTED_REPORT_ID,_0x28d9('0x11')));return analyticExtractedReport(_0x28d9('0x2d'),_0x350555?util['format'](_0x28d9('0x27'),_0x117a54,_0x350555?_0x28d9('0x2a'):_0x28d9('0x26')):null);});})[_0x28d9('0x2e')](function(_0x7ae749){logger['info'](util[_0x28d9('0xf')](_0x28d9('0x2f'),EXTRACTED_REPORT_ID,_0x28d9('0x11')),util['inspect'](_0x7ae749,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0x28d9('0x30')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xceef=['update','info','format','XLSX','Setting','find','split','splitSizeXlsx','then','query','QueryTypes','SELECT','num','Empty','length','range','forEach','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','push','dirname','basename','.xlsx','existsSync','join','mkdirSync','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','lodash','json2xls','zip-dir','../../mysqldb','../../config/logger','analytics','argv','savename','AnalyticExtractedReport'];(function(_0x3363d,_0x53f0cd){var _0x3a9e71=function(_0x5ced46){while(--_0x5ced46){_0x3363d['push'](_0x3363d['shift']());}};_0x3a9e71(++_0x53f0cd);}(_0xceef,0xf6));var _0xfcee=function(_0x59b48b,_0x584733){_0x59b48b=_0x59b48b-0x0;var _0x4c3f79=_0xceef[_0x59b48b];return _0x4c3f79;};'use strict';var util=require('util');var path=require('path');var _=require(_0xfcee('0x0'));var fs=require('fs');var json2xls=require(_0xfcee('0x1'));var BPromise=require('bluebird');var zipdir=require(_0xfcee('0x2'));var rimraf=require('rimraf');var db=require(_0xfcee('0x3'))['db'];var dbH=require(_0xfcee('0x3'))['dbH'];var logger=require(_0xfcee('0x4'))(_0xfcee('0x5'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0xfcee('0x6')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0xfbfb75,_0xd69040){var _0x5b0d2c={'status':_0xfbfb75};var _0x513a59={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xd69040){_0x5b0d2c[_0xfcee('0x7')]=_0xd69040;}return db[_0xfcee('0x8')][_0xfcee('0x9')](_0x5b0d2c,_0x513a59);}function main(){var _0x40a2f2=0x1388;var _0x24ab14;logger[_0xfcee('0xa')](util[_0xfcee('0xb')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xfcee('0xc')));return db[_0xfcee('0xd')][_0xfcee('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xfcee('0xf'),_0xfcee('0x10')]})[_0xfcee('0x11')](function(_0x153f5f){if(_0x153f5f){_0x24ab14=_0x153f5f;_0x40a2f2=_0x24ab14[_0xfcee('0x10')]||0x1388;}})[_0xfcee('0x11')](function(){return dbH['sequelize'][_0xfcee('0x12')](util[_0xfcee('0xb')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0xfcee('0x13')][_0xfcee('0x14')]});})[_0xfcee('0x11')](function(_0x856738){if(!_0x856738[0x0][_0xfcee('0x15')]){return analyticExtractedReport(_0xfcee('0x16'));}var _0x486334=[];var _0x50543a=0x0;if(_0x24ab14[_0xfcee('0xf')]){if(_0x856738&&_0x856738[_0xfcee('0x17')]){var _0x520d4a=_[_0xfcee('0x18')](_0x856738[0x0][_0xfcee('0x15')]/_0x40a2f2);var _0x45c690=Number['isInteger'](_0x856738[0x0][_0xfcee('0x15')]/_0x40a2f2)?_0x856738[0x0][_0xfcee('0x15')]%_0x40a2f2:0x0;_0x520d4a[_0xfcee('0x19')](function(_0x3edc67){if(_0x3edc67>0x0){_0x50543a+=_0x40a2f2;}_0x486334['push'](dbH['sequelize'][_0xfcee('0x12')](util[_0xfcee('0xb')](_0xfcee('0x1a'),QUERY,_0x40a2f2,_0x50543a),{'type':dbH[_0xfcee('0x1b')][_0xfcee('0x13')][_0xfcee('0x14')]}));});if(_0x45c690>0x0){_0x50543a+=_0x40a2f2;_0x486334[_0xfcee('0x1c')](dbH['sequelize'][_0xfcee('0x12')](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x45c690,_0x50543a),{'type':dbH[_0xfcee('0x1b')][_0xfcee('0x13')][_0xfcee('0x14')]}));}}}else{_0x486334[_0xfcee('0x1c')](dbH[_0xfcee('0x1b')][_0xfcee('0x12')](QUERY,{'type':dbH[_0xfcee('0x1b')][_0xfcee('0x13')][_0xfcee('0x14')]}));}var _0x1c48b3=path[_0xfcee('0x1d')](PATH);var _0x475a48=path[_0xfcee('0x1e')](PATH,_0xfcee('0x1f'));var _0xf3c76c=_0x24ab14['split']&&_0x486334['length']>0x1;var _0x56c9f7=[];if(!fs[_0xfcee('0x20')](path[_0xfcee('0x21')](_0x1c48b3,_0x475a48))&&_0xf3c76c){fs[_0xfcee('0x22')](path[_0xfcee('0x21')](_0x1c48b3,_0x475a48));}return BPromise[_0xfcee('0x23')](_0x486334,function(_0x266540){_0x56c9f7[_0xfcee('0x1c')](_0x266540);})[_0xfcee('0x11')](function(){for(var _0x2869ee=0x0;_0x2869ee<_0x56c9f7['length'];_0x2869ee+=0x1){var _0x2dc32;var _0x366e2f=_0x56c9f7[_0x2869ee];if(_0xf3c76c){_0x2dc32=path[_0xfcee('0x21')](_0x1c48b3,_0x475a48,util[_0xfcee('0xb')](_0xfcee('0x24'),_0x475a48,_0x2869ee,_0xfcee('0x25')));}else{_0x2dc32=path[_0xfcee('0x21')](_0x1c48b3,util['format'](_0xfcee('0x26'),_0x475a48,_0xfcee('0x25')));}fs[_0xfcee('0x27')](_0x2dc32,json2xls(_0x366e2f),_0xfcee('0x28'));}})[_0xfcee('0x11')](function(){if(_0xf3c76c){return new Promise(function(_0xe2063b){zipdir(path[_0xfcee('0x21')](_0x1c48b3,_0x475a48),{'saveTo':path[_0xfcee('0x21')](_0x1c48b3,util[_0xfcee('0xb')](_0xfcee('0x26'),_0x475a48,'zip'))},function(_0x270dfa,_0x511e15){rimraf(path[_0xfcee('0x21')](_0x1c48b3,_0x475a48),function(){});_0xe2063b(_0xfcee('0x29'));});});}})[_0xfcee('0x11')](function(){logger['info'](util['format'](_0xfcee('0x2a'),EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport(_0xfcee('0x2b'),_0xf3c76c?util[_0xfcee('0xb')](_0xfcee('0x26'),_0x475a48,_0xf3c76c?_0xfcee('0x2c'):_0xfcee('0x25')):null);});})[_0xfcee('0x2d')](function(_0x43fe34){logger['info'](util['format'](_0xfcee('0x2e'),EXTRACTED_REPORT_ID,'XLSX'),util[_0xfcee('0x2f')](_0x43fe34,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xfcee('0x30'));})[_0xfcee('0x31')](function(){process[_0xfcee('0x32')](EXIT_CODE);});}main();
\ No newline at end of file
index 8841840..525deac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4239=['${EXTEN:','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','recordingFormat','_XCALLY_MIXMONITOR_FORMAT=','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','createdAt','updatedAt','*,*,*,*','interval','IntervalId','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','app','toLowerCase','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice','GotoIfTime',',${EXTEN},','concat','Hangup','transaction','destroy','bulkCreate','catch','error','rewrite','lodash','Interval','intervals','models','findAll','then','uniq','map','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','exten','playback','hasOwnProperty','extensions','extension','find','push','type','Set','format','CDR(type)=%s','context','VoiceExtensionId','inbound','CDR(routeid)=','priority','outbound'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4239,0xb3));var _0x9423=function(_0x119b3e,_0x588d50){_0x119b3e=_0x119b3e-0x0;var _0x1169ae=_0x4239[_0x119b3e];return _0x1169ae;};'use strict';var _=require(_0x9423('0x0'));var util=require('util');function rewrite(_0x262020,_0x50dc54){var _0x1e7a6c=this;return _0x262020['models'][_0x9423('0x1')]['findAll']({'raw':!![]})['then'](function(_0x251724){_0x1e7a6c[_0x9423('0x2')]=_0x251724;return _0x262020[_0x9423('0x3')]['VoiceExtension'][_0x9423('0x4')]({'where':{'IntervalId':_0x50dc54['IntervalId']},'raw':!![]});})[_0x9423('0x5')](function(_0x4fe159){return _0x262020['models']['VoiceExtension'][_0x9423('0x4')]({'where':{'exten':{'$in':_[_0x9423('0x6')](_[_0x9423('0x7')](_0x4fe159,'exten'))}},'order':[{'raw':_0x9423('0x8')}],'raw':!![]});})[_0x9423('0x5')](function(_0xec0948){var _0x13e8e0=_['filter'](_0xec0948,{'priority':'1'});var _0x539f57=_[_0x9423('0x9')](_0xec0948,{'isApp':0x1});var _0x5607e3=_[_0x9423('0xa')](_0x539f57,_0x9423('0xb'));var _0x4b7e5d=['queue',_0x9423('0xc')];var _0x19a342=[];var _0x1398e5=[];for(var _0x5c6840 in _0x5607e3){if(_0x5607e3[_0x9423('0xd')](_0x5c6840)){_0x1e7a6c['priority']=0x2;_0x1e7a6c[_0x9423('0xe')]=[];_0x1e7a6c[_0x9423('0xf')]=_[_0x9423('0x10')](_0x13e8e0,{'exten':_0x5607e3[_0x5c6840][0x0][_0x9423('0xb')]});_0x1e7a6c[_0x9423('0xe')][_0x9423('0x11')]({'type':_0x5607e3[_0x5c6840][0x0][_0x9423('0x12')],'app':_0x9423('0x13'),'appdata':util[_0x9423('0x14')](_0x9423('0x15'),_0x5607e3[_0x5c6840][0x0][_0x9423('0x12')]),'context':_0x5607e3[_0x5c6840][0x0][_0x9423('0x16')],'exten':_0x5607e3[_0x5c6840][0x0][_0x9423('0xb')],'priority':_0x1e7a6c['priority']++,'VoiceExtensionId':_0x5607e3[_0x5c6840][0x0][_0x9423('0x17')]});if(_0x5607e3[_0x5c6840][0x0][_0x9423('0x12')]===_0x9423('0x18')){_0x1e7a6c[_0x9423('0xe')][_0x9423('0x11')]({'type':_0x5607e3[_0x5c6840][0x0][_0x9423('0x12')],'app':_0x9423('0x13'),'appdata':_0x9423('0x19')+_0x5607e3[_0x5c6840][0x0][_0x9423('0x17')],'context':_0x5607e3[_0x5c6840][0x0][_0x9423('0x16')],'exten':_0x5607e3[_0x5c6840][0x0][_0x9423('0xb')],'priority':_0x1e7a6c[_0x9423('0x1a')]++,'VoiceExtensionId':_0x5607e3[_0x5c6840][0x0]['VoiceExtensionId']});}else if(_0x5607e3[_0x5c6840][0x0]['type']===_0x9423('0x1b')){if(_0x1e7a6c[_0x9423('0xf')]){_0x1e7a6c[_0x9423('0xe')][_0x9423('0x11')]({'type':_0x5607e3[_0x5c6840][0x0][_0x9423('0x12')],'app':_0x9423('0x13'),'appdata':'CDR(destination)='+(_0x1e7a6c[_0x9423('0xf')]['cutdigits']?_0x9423('0x1c')+_0x1e7a6c[_0x9423('0xf')][_0x9423('0x1d')]+'}':_0x9423('0x1e')),'context':_0x5607e3[_0x5c6840][0x0][_0x9423('0x16')],'exten':_0x5607e3[_0x5c6840][0x0]['exten'],'priority':_0x1e7a6c[_0x9423('0x1a')]++,'VoiceExtensionId':_0x5607e3[_0x5c6840][0x0]['VoiceExtensionId']});}_0x1e7a6c[_0x9423('0xe')][_0x9423('0x11')]({'type':_0x5607e3[_0x5c6840][0x0][_0x9423('0x12')],'app':'Set','appdata':_0x9423('0x19')+_0x5607e3[_0x5c6840][0x0][_0x9423('0x17')],'context':_0x5607e3[_0x5c6840][0x0][_0x9423('0x16')],'exten':_0x5607e3[_0x5c6840][0x0]['exten'],'priority':_0x1e7a6c[_0x9423('0x1a')]++,'VoiceExtensionId':_0x5607e3[_0x5c6840][0x0][_0x9423('0x17')]});var _0x1b7739=_0x1e7a6c['priority']++;_0x1e7a6c[_0x9423('0xe')][_0x9423('0x11')]({'type':_0x5607e3[_0x5c6840][0x0][_0x9423('0x12')],'app':_0x9423('0x1f'),'appdata':_0x9423('0x20')+(_0x1b7739+0x2)+_0x9423('0x21')+(_0x1b7739+0x1)+')','context':_0x5607e3[_0x5c6840][0x0][_0x9423('0x16')],'exten':_0x5607e3[_0x5c6840][0x0]['exten'],'priority':_0x1b7739,'VoiceExtensionId':_0x5607e3[_0x5c6840][0x0]['VoiceExtensionId']});if(_0x1e7a6c[_0x9423('0xf')]){_0x1e7a6c[_0x9423('0xe')][_0x9423('0x11')]({'type':_0x5607e3[_0x5c6840][0x0][_0x9423('0x12')],'app':_0x9423('0x13'),'appdata':_0x1e7a6c['extension'][_0x9423('0x1d')]?'CDR(prefix)=${EXTEN:0:'+_0x1e7a6c['extension'][_0x9423('0x1d')]+'}':_0x9423('0x22'),'context':_0x5607e3[_0x5c6840][0x0][_0x9423('0x16')],'exten':_0x5607e3[_0x5c6840][0x0]['exten'],'priority':_0x1e7a6c[_0x9423('0x1a')]++,'VoiceExtensionId':_0x5607e3[_0x5c6840][0x0][_0x9423('0x17')]});}_0x1e7a6c[_0x9423('0xe')]['push']({'type':_0x5607e3[_0x5c6840][0x0][_0x9423('0x12')],'app':_0x9423('0x13'),'appdata':'outboundrouteid='+_0x5607e3[_0x5c6840][0x0][_0x9423('0x17')],'context':_0x5607e3[_0x5c6840][0x0][_0x9423('0x16')],'exten':_0x5607e3[_0x5c6840][0x0][_0x9423('0xb')],'priority':_0x1e7a6c[_0x9423('0x1a')]++,'VoiceExtensionId':_0x5607e3[_0x5c6840][0x0][_0x9423('0x17')]});if(_0x1e7a6c['extension']&&_0x1e7a6c[_0x9423('0xf')][_0x9423('0xd')](_0x9423('0x23'))&&_0x1e7a6c[_0x9423('0xf')][_0x9423('0x23')]!=='none'){_0x1e7a6c[_0x9423('0xe')][_0x9423('0x11')]({'type':_0x5607e3[_0x5c6840][0x0]['type'],'app':_0x9423('0x13'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x5607e3[_0x5c6840][0x0][_0x9423('0x16')],'exten':_0x5607e3[_0x5c6840][0x0]['exten'],'priority':_0x1e7a6c[_0x9423('0x1a')]++,'VoiceExtensionId':_0x5607e3[_0x5c6840][0x0][_0x9423('0x17')]});_0x1e7a6c[_0x9423('0xe')][_0x9423('0x11')]({'type':_0x5607e3[_0x5c6840][0x0]['type'],'app':_0x9423('0x13'),'appdata':_0x9423('0x24')+_0x1e7a6c[_0x9423('0xf')][_0x9423('0x23')]||'wav','context':_0x5607e3[_0x5c6840][0x0]['context'],'exten':_0x5607e3[_0x5c6840][0x0][_0x9423('0xb')],'priority':_0x1e7a6c['priority']++,'VoiceExtensionId':_0x5607e3[_0x5c6840][0x0][_0x9423('0x17')]});}}_0x1e7a6c[_0x9423('0xe')][_0x9423('0x11')]({'type':_0x5607e3[_0x5c6840][0x0][_0x9423('0x12')],'app':_0x9423('0x13'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x5607e3[_0x5c6840][0x0][_0x9423('0x16')],'exten':_0x5607e3[_0x5c6840][0x0]['exten'],'priority':_0x1e7a6c[_0x9423('0x1a')]++,'VoiceExtensionId':_0x5607e3[_0x5c6840][0x0]['VoiceExtensionId']});_0x1e7a6c[_0x9423('0xe')][_0x9423('0x11')]({'type':_0x5607e3[_0x5c6840][0x0]['type'],'app':'Set','appdata':_0x9423('0x25'),'context':_0x5607e3[_0x5c6840][0x0][_0x9423('0x16')],'exten':_0x5607e3[_0x5c6840][0x0]['exten'],'priority':_0x1e7a6c[_0x9423('0x1a')]++,'VoiceExtensionId':_0x5607e3[_0x5c6840][0x0][_0x9423('0x17')]});_0x1e7a6c[_0x9423('0xe')][_0x9423('0x11')]({'type':_0x5607e3[_0x5c6840][0x0]['type'],'app':_0x9423('0x13'),'appdata':_0x9423('0x26'),'context':_0x5607e3[_0x5c6840][0x0][_0x9423('0x16')],'exten':_0x5607e3[_0x5c6840][0x0][_0x9423('0xb')],'priority':_0x1e7a6c[_0x9423('0x1a')]++,'VoiceExtensionId':_0x5607e3[_0x5c6840][0x0]['VoiceExtensionId']});for(var _0x1a993e=0x0,_0x5c9b21=0x0;_0x1a993e<_0x5607e3[_0x5c6840][_0x9423('0x27')];_0x1a993e+=0x1,_0x5c9b21=0x0){var _0x17c5c1=_0x5607e3[_0x5c6840][_0x1a993e];if(_0x17c5c1['type']){_0x17c5c1[_0x9423('0x12')]=_0x17c5c1[_0x9423('0x12')]['toLowerCase']();}var _0x555c6b=[];var _0x1ad2eb=[];delete _0x17c5c1['id'];delete _0x17c5c1[_0x9423('0x28')];delete _0x17c5c1[_0x9423('0x29')];var _0x53993f=_0x17c5c1['interval']!==_0x9423('0x2a')?[_0x17c5c1[_0x9423('0x2b')]]:_0x17c5c1[_0x9423('0x2c')]?_[_0x9423('0x7')](_[_0x9423('0x9')](_0x1e7a6c[_0x9423('0x2')],{'IntervalId':_0x17c5c1[_0x9423('0x2c')]}),_0x9423('0x2b')):[];if(_0x17c5c1['hasOwnProperty']('tag')){if(_0x17c5c1[_0x9423('0x2d')]&&_0x17c5c1[_0x9423('0x2d')]!=='--'){_0x555c6b[_0x9423('0x11')]({'type':_0x17c5c1[_0x9423('0x12')],'app':_0x9423('0x13'),'appdata':_0x9423('0x2e')+_0x17c5c1['tag'],'context':_0x17c5c1[_0x9423('0x16')],'exten':_0x17c5c1[_0x9423('0xb')],'priority':_0x53993f[_0x9423('0x27')]+_0x1e7a6c[_0x9423('0x1a')]+_0x5c9b21++,'VoiceExtensionId':_0x17c5c1[_0x9423('0x17')]});}}if(_0x17c5c1[_0x9423('0x12')]===_0x9423('0x1b')&&_0x17c5c1[_0x9423('0xd')](_0x9423('0x2f'))){if(_0x17c5c1['callerID']){_0x555c6b[_0x9423('0x11')]({'type':_0x17c5c1[_0x9423('0x12')],'app':'ExecIf','appdata':_0x9423('0x30')+_0x17c5c1[_0x9423('0x2f')]+')','context':_0x17c5c1[_0x9423('0x16')],'exten':_0x17c5c1[_0x9423('0xb')],'priority':_0x53993f[_0x9423('0x27')]+_0x1e7a6c[_0x9423('0x1a')]+_0x5c9b21++,'VoiceExtensionId':_0x17c5c1[_0x9423('0x17')]});}else{_0x555c6b['push']({'type':_0x17c5c1[_0x9423('0x12')],'app':_0x9423('0x1f'),'appdata':_0x9423('0x31'),'context':_0x17c5c1['context'],'exten':_0x17c5c1[_0x9423('0xb')],'priority':_0x53993f['length']+_0x1e7a6c[_0x9423('0x1a')]+_0x5c9b21++,'VoiceExtensionId':_0x17c5c1[_0x9423('0x17')]});}}if(_0x17c5c1[_0x9423('0xd')](_0x9423('0x32'))){if(_0x4b7e5d[_0x9423('0x33')](_0x17c5c1[_0x9423('0x34')][_0x9423('0x35')]())>=0x0&&_0x17c5c1['appType']!==_0x9423('0x36')){if(_0x17c5c1[_0x9423('0x32')]){_0x555c6b['push']({'type':_0x17c5c1['type'],'app':'ExecIf','appdata':_0x9423('0x37'),'context':_0x17c5c1[_0x9423('0x16')],'exten':_0x17c5c1[_0x9423('0xb')],'priority':_0x53993f[_0x9423('0x27')]+_0x1e7a6c['priority']+_0x5c9b21++,'VoiceExtensionId':_0x17c5c1[_0x9423('0x17')]});_0x555c6b[_0x9423('0x11')]({'type':_0x17c5c1['type'],'app':_0x9423('0x13'),'appdata':_0x9423('0x38'),'context':_0x17c5c1['context'],'exten':_0x17c5c1['exten'],'priority':_0x53993f['length']+_0x1e7a6c[_0x9423('0x1a')]+_0x5c9b21++,'VoiceExtensionId':_0x17c5c1[_0x9423('0x17')]});}else{_0x555c6b[_0x9423('0x11')]({'type':_0x17c5c1[_0x9423('0x12')],'app':_0x9423('0x1f'),'appdata':_0x9423('0x39'),'context':_0x17c5c1[_0x9423('0x16')],'exten':_0x17c5c1['exten'],'priority':_0x53993f[_0x9423('0x27')]+_0x1e7a6c['priority']+_0x5c9b21++,'VoiceExtensionId':_0x17c5c1[_0x9423('0x17')]});_0x555c6b[_0x9423('0x11')]({'type':_0x17c5c1[_0x9423('0x12')],'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x17c5c1[_0x9423('0x16')],'exten':_0x17c5c1['exten'],'priority':_0x53993f[_0x9423('0x27')]+_0x1e7a6c[_0x9423('0x1a')]+_0x5c9b21++,'VoiceExtensionId':_0x17c5c1[_0x9423('0x17')]});}}}for(var _0xce0385=0x0;_0xce0385<_0x53993f[_0x9423('0x27')];_0xce0385+=0x1){var _0x50ffef=_0x1e7a6c[_0x9423('0x1a')]+_0x53993f[_0x9423('0x27')];var _0x25e514=_0xce0385===_0x53993f['length']-0x1?_0x1e7a6c[_0x9423('0x1a')]+_0x555c6b[_0x9423('0x27')]+_0x1ad2eb['length']+0x2:_0x1e7a6c[_0x9423('0x1a')]+_0xce0385+0x1;_0x555c6b[_0x9423('0x3a')](_0xce0385,0x0,{'type':_0x17c5c1[_0x9423('0x12')],'app':_0x9423('0x3b'),'appdata':_0x53993f[_0xce0385]+'?'+_0x17c5c1[_0x9423('0x16')]+',${EXTEN},'+_0x50ffef+':'+_0x17c5c1[_0x9423('0x16')]+_0x9423('0x3c')+_0x25e514,'exten':_0x17c5c1[_0x9423('0xb')],'context':_0x17c5c1['context'],'priority':_0x1e7a6c[_0x9423('0x1a')]+_0xce0385,'VoiceExtensionId':_0x5607e3[_0x5c6840][0x0][_0x9423('0x17')]});}_0x17c5c1['priority']=_0x555c6b[_0x9423('0x27')]?_['last'](_0x555c6b)[_0x9423('0x1a')]+0x1:_0x1e7a6c[_0x9423('0x1a')];_0x1e7a6c['priority']=(_0x1ad2eb['length']?_['last'](_0x1ad2eb)[_0x9423('0x1a')]:_0x17c5c1['priority'])+0x1;_0x1e7a6c[_0x9423('0xe')]=_[_0x9423('0x3d')](_0x1e7a6c[_0x9423('0xe')],_0x555c6b,[_0x17c5c1],_0x1ad2eb);}_0x1e7a6c['extensions']['push']({'type':_0x5607e3[_0x5c6840][0x0][_0x9423('0x12')],'app':_0x9423('0x3e'),'exten':_0x5607e3[_0x5c6840][0x0]['exten'],'context':_0x5607e3[_0x5c6840][0x0][_0x9423('0x16')],'priority':_0x1e7a6c[_0x9423('0x1a')],'VoiceExtensionId':_0x5607e3[_0x5c6840][0x0][_0x9423('0x17')]});_0x19a342[_0x9423('0x11')](_0x5607e3[_0x5c6840][0x0][_0x9423('0x17')]);_0x1398e5=_[_0x9423('0x3d')](_0x1398e5,_0x1e7a6c[_0x9423('0xe')]);}}return _0x262020[_0x9423('0x3f')](function(_0x30c326){return _0x262020['models']['VoiceExtension'][_0x9423('0x40')]({'where':{'VoiceExtensionId':{'$in':_0x19a342}},'transaction':_0x30c326})[_0x9423('0x5')](function(_0x4a82dc){return _0x262020[_0x9423('0x3')]['VoiceExtension'][_0x9423('0x41')](_['sortBy'](_0x1398e5,_0x9423('0x1a')),{'transaction':_0x30c326});});});})[_0x9423('0x42')](function(_0x3ae410){console[_0x9423('0x43')](_0x3ae410);});}exports[_0x9423('0x44')]=rewrite;
\ No newline at end of file
+var _0x4917=['lodash','util','models','intervals','VoiceExtension','findAll','then','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','playback','hasOwnProperty','extensions','find','push','type','Set','format','CDR(type)=%s','priority','CDR(routeid)=','context','outbound','CDR(destination)=','${EXTEN:','cutdigits','${EXTEN}','VoiceExtensionId','ExecIf','extension','CDR(prefix)=noprefix','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','IntervalId','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','answer','indexOf','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','transaction','destroy','bulkCreate','sortBy'];(function(_0x2a5e69,_0x52529d){var _0x3b11c4=function(_0x255951){while(--_0x255951){_0x2a5e69['push'](_0x2a5e69['shift']());}};_0x3b11c4(++_0x52529d);}(_0x4917,0xcc));var _0x7491=function(_0x3a71e1,_0xab973b){_0x3a71e1=_0x3a71e1-0x0;var _0x34c7e7=_0x4917[_0x3a71e1];return _0x34c7e7;};'use strict';var _=require(_0x7491('0x0'));var util=require(_0x7491('0x1'));function rewrite(_0xb2a338,_0x59e6d7){var _0xbff637=this;return _0xb2a338[_0x7491('0x2')]['Interval']['findAll']({'raw':!![]})['then'](function(_0x2b7a5b){_0xbff637[_0x7491('0x3')]=_0x2b7a5b;return _0xb2a338[_0x7491('0x2')][_0x7491('0x4')][_0x7491('0x5')]({'where':{'IntervalId':_0x59e6d7['IntervalId']},'raw':!![]});})[_0x7491('0x6')](function(_0x503401){return _0xb2a338[_0x7491('0x2')][_0x7491('0x4')][_0x7491('0x5')]({'where':{'exten':{'$in':_['uniq'](_[_0x7491('0x7')](_0x503401,_0x7491('0x8')))}},'order':[{'raw':_0x7491('0x9')}],'raw':!![]});})[_0x7491('0x6')](function(_0x499f1c){var _0xb808f5=_[_0x7491('0xa')](_0x499f1c,{'priority':'1'});var _0x113d59=_['filter'](_0x499f1c,{'isApp':0x1});var _0x5f46bf=_['groupBy'](_0x113d59,_0x7491('0x8'));var _0x4f1a5e=['queue',_0x7491('0xb')];var _0x5f328a=[];var _0x466aa6=[];for(var _0xcc4522 in _0x5f46bf){if(_0x5f46bf[_0x7491('0xc')](_0xcc4522)){_0xbff637['priority']=0x2;_0xbff637[_0x7491('0xd')]=[];_0xbff637['extension']=_[_0x7491('0xe')](_0xb808f5,{'exten':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x8')]});_0xbff637['extensions'][_0x7491('0xf')]({'type':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x10')],'app':_0x7491('0x11'),'appdata':util[_0x7491('0x12')](_0x7491('0x13'),_0x5f46bf[_0xcc4522][0x0][_0x7491('0x10')]),'context':_0x5f46bf[_0xcc4522][0x0]['context'],'exten':_0x5f46bf[_0xcc4522][0x0]['exten'],'priority':_0xbff637[_0x7491('0x14')]++,'VoiceExtensionId':_0x5f46bf[_0xcc4522][0x0]['VoiceExtensionId']});if(_0x5f46bf[_0xcc4522][0x0][_0x7491('0x10')]==='inbound'){_0xbff637['extensions'][_0x7491('0xf')]({'type':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x10')],'app':'Set','appdata':_0x7491('0x15')+_0x5f46bf[_0xcc4522][0x0]['VoiceExtensionId'],'context':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x16')],'exten':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x8')],'priority':_0xbff637[_0x7491('0x14')]++,'VoiceExtensionId':_0x5f46bf[_0xcc4522][0x0]['VoiceExtensionId']});}else if(_0x5f46bf[_0xcc4522][0x0]['type']===_0x7491('0x17')){if(_0xbff637['extension']){_0xbff637[_0x7491('0xd')][_0x7491('0xf')]({'type':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x10')],'app':_0x7491('0x11'),'appdata':_0x7491('0x18')+(_0xbff637['extension']['cutdigits']?_0x7491('0x19')+_0xbff637['extension'][_0x7491('0x1a')]+'}':_0x7491('0x1b')),'context':_0x5f46bf[_0xcc4522][0x0]['context'],'exten':_0x5f46bf[_0xcc4522][0x0]['exten'],'priority':_0xbff637[_0x7491('0x14')]++,'VoiceExtensionId':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x1c')]});}_0xbff637[_0x7491('0xd')][_0x7491('0xf')]({'type':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x10')],'app':_0x7491('0x11'),'appdata':_0x7491('0x15')+_0x5f46bf[_0xcc4522][0x0][_0x7491('0x1c')],'context':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x16')],'exten':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x8')],'priority':_0xbff637[_0x7491('0x14')]++,'VoiceExtensionId':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x1c')]});var _0x35e3c9=_0xbff637[_0x7491('0x14')]++;_0xbff637['extensions']['push']({'type':_0x5f46bf[_0xcc4522][0x0]['type'],'app':_0x7491('0x1d'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x35e3c9+0x2)+'):Goto('+(_0x35e3c9+0x1)+')','context':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x16')],'exten':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x8')],'priority':_0x35e3c9,'VoiceExtensionId':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x1c')]});if(_0xbff637[_0x7491('0x1e')]){_0xbff637[_0x7491('0xd')][_0x7491('0xf')]({'type':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x10')],'app':_0x7491('0x11'),'appdata':_0xbff637[_0x7491('0x1e')]['cutdigits']?'CDR(prefix)=${EXTEN:0:'+_0xbff637['extension'][_0x7491('0x1a')]+'}':_0x7491('0x1f'),'context':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x16')],'exten':_0x5f46bf[_0xcc4522][0x0]['exten'],'priority':_0xbff637[_0x7491('0x14')]++,'VoiceExtensionId':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x1c')]});}_0xbff637[_0x7491('0xd')][_0x7491('0xf')]({'type':_0x5f46bf[_0xcc4522][0x0]['type'],'app':_0x7491('0x11'),'appdata':'outboundrouteid='+_0x5f46bf[_0xcc4522][0x0][_0x7491('0x1c')],'context':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x16')],'exten':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x8')],'priority':_0xbff637[_0x7491('0x14')]++,'VoiceExtensionId':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x1c')]});if(_0xbff637[_0x7491('0x1e')]&&_0xbff637[_0x7491('0x1e')]['hasOwnProperty']('recordingFormat')&&_0xbff637[_0x7491('0x1e')][_0x7491('0x20')]!=='none'){_0xbff637[_0x7491('0xd')][_0x7491('0xf')]({'type':_0x5f46bf[_0xcc4522][0x0]['type'],'app':_0x7491('0x11'),'appdata':_0x7491('0x21'),'context':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x16')],'exten':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x8')],'priority':_0xbff637['priority']++,'VoiceExtensionId':_0x5f46bf[_0xcc4522][0x0]['VoiceExtensionId']});_0xbff637[_0x7491('0xd')][_0x7491('0xf')]({'type':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x10')],'app':_0x7491('0x11'),'appdata':_0x7491('0x22')+_0xbff637[_0x7491('0x1e')][_0x7491('0x20')]||_0x7491('0x23'),'context':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x16')],'exten':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x8')],'priority':_0xbff637[_0x7491('0x14')]++,'VoiceExtensionId':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x1c')]});}}_0xbff637[_0x7491('0xd')]['push']({'type':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x10')],'app':_0x7491('0x11'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x16')],'exten':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x8')],'priority':_0xbff637[_0x7491('0x14')]++,'VoiceExtensionId':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x1c')]});_0xbff637[_0x7491('0xd')][_0x7491('0xf')]({'type':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x10')],'app':_0x7491('0x11'),'appdata':_0x7491('0x24'),'context':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x16')],'exten':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x8')],'priority':_0xbff637[_0x7491('0x14')]++,'VoiceExtensionId':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x1c')]});_0xbff637[_0x7491('0xd')]['push']({'type':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x10')],'app':_0x7491('0x11'),'appdata':_0x7491('0x25'),'context':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x16')],'exten':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x8')],'priority':_0xbff637[_0x7491('0x14')]++,'VoiceExtensionId':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x1c')]});for(var _0x4c6dc6=0x0,_0x5c59c8=0x0;_0x4c6dc6<_0x5f46bf[_0xcc4522][_0x7491('0x26')];_0x4c6dc6+=0x1,_0x5c59c8=0x0){var _0x3d0ef4=_0x5f46bf[_0xcc4522][_0x4c6dc6];if(_0x3d0ef4[_0x7491('0x10')]){_0x3d0ef4['type']=_0x3d0ef4[_0x7491('0x10')][_0x7491('0x27')]();}var _0x88de09=[];var _0x2bf126=[];delete _0x3d0ef4['id'];delete _0x3d0ef4[_0x7491('0x28')];delete _0x3d0ef4[_0x7491('0x29')];var _0x2c7b5e=_0x3d0ef4[_0x7491('0x2a')]!==_0x7491('0x2b')?[_0x3d0ef4['interval']]:_0x3d0ef4[_0x7491('0x2c')]?_[_0x7491('0x7')](_[_0x7491('0xa')](_0xbff637[_0x7491('0x3')],{'IntervalId':_0x3d0ef4[_0x7491('0x2c')]}),_0x7491('0x2a')):[];if(_0x3d0ef4[_0x7491('0xc')](_0x7491('0x2d'))){if(_0x3d0ef4[_0x7491('0x2d')]&&_0x3d0ef4[_0x7491('0x2d')]!=='--'){_0x88de09['push']({'type':_0x3d0ef4[_0x7491('0x10')],'app':_0x7491('0x11'),'appdata':_0x7491('0x2e')+_0x3d0ef4[_0x7491('0x2d')],'context':_0x3d0ef4[_0x7491('0x16')],'exten':_0x3d0ef4[_0x7491('0x8')],'priority':_0x2c7b5e[_0x7491('0x26')]+_0xbff637[_0x7491('0x14')]+_0x5c59c8++,'VoiceExtensionId':_0x3d0ef4[_0x7491('0x1c')]});}}if(_0x3d0ef4[_0x7491('0x10')]===_0x7491('0x17')&&_0x3d0ef4[_0x7491('0xc')]('callerID')){if(_0x3d0ef4[_0x7491('0x2f')]){_0x88de09[_0x7491('0xf')]({'type':_0x3d0ef4[_0x7491('0x10')],'app':_0x7491('0x1d'),'appdata':_0x7491('0x30')+_0x3d0ef4[_0x7491('0x2f')]+')','context':_0x3d0ef4[_0x7491('0x16')],'exten':_0x3d0ef4['exten'],'priority':_0x2c7b5e['length']+_0xbff637[_0x7491('0x14')]+_0x5c59c8++,'VoiceExtensionId':_0x3d0ef4[_0x7491('0x1c')]});}else{_0x88de09[_0x7491('0xf')]({'type':_0x3d0ef4[_0x7491('0x10')],'app':'ExecIf','appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x3d0ef4[_0x7491('0x16')],'exten':_0x3d0ef4['exten'],'priority':_0x2c7b5e[_0x7491('0x26')]+_0xbff637[_0x7491('0x14')]+_0x5c59c8++,'VoiceExtensionId':_0x3d0ef4[_0x7491('0x1c')]});}}if(_0x3d0ef4[_0x7491('0xc')](_0x7491('0x31'))){if(_0x4f1a5e[_0x7491('0x32')](_0x3d0ef4[_0x7491('0x33')][_0x7491('0x27')]())>=0x0&&_0x3d0ef4[_0x7491('0x34')]!==_0x7491('0x35')){if(_0x3d0ef4['answer']){_0x88de09[_0x7491('0xf')]({'type':_0x3d0ef4['type'],'app':_0x7491('0x1d'),'appdata':_0x7491('0x36'),'context':_0x3d0ef4[_0x7491('0x16')],'exten':_0x3d0ef4[_0x7491('0x8')],'priority':_0x2c7b5e[_0x7491('0x26')]+_0xbff637[_0x7491('0x14')]+_0x5c59c8++,'VoiceExtensionId':_0x3d0ef4[_0x7491('0x1c')]});_0x88de09['push']({'type':_0x3d0ef4[_0x7491('0x10')],'app':_0x7491('0x11'),'appdata':_0x7491('0x37'),'context':_0x3d0ef4['context'],'exten':_0x3d0ef4['exten'],'priority':_0x2c7b5e[_0x7491('0x26')]+_0xbff637[_0x7491('0x14')]+_0x5c59c8++,'VoiceExtensionId':_0x3d0ef4[_0x7491('0x1c')]});}else{_0x88de09[_0x7491('0xf')]({'type':_0x3d0ef4[_0x7491('0x10')],'app':_0x7491('0x1d'),'appdata':_0x7491('0x38'),'context':_0x3d0ef4[_0x7491('0x16')],'exten':_0x3d0ef4['exten'],'priority':_0x2c7b5e[_0x7491('0x26')]+_0xbff637['priority']+_0x5c59c8++,'VoiceExtensionId':_0x3d0ef4[_0x7491('0x1c')]});_0x88de09[_0x7491('0xf')]({'type':_0x3d0ef4[_0x7491('0x10')],'app':_0x7491('0x11'),'appdata':_0x7491('0x39'),'context':_0x3d0ef4[_0x7491('0x16')],'exten':_0x3d0ef4['exten'],'priority':_0x2c7b5e['length']+_0xbff637[_0x7491('0x14')]+_0x5c59c8++,'VoiceExtensionId':_0x3d0ef4[_0x7491('0x1c')]});}}}for(var _0x25ae20=0x0;_0x25ae20<_0x2c7b5e['length'];_0x25ae20+=0x1){var _0x45d056=_0xbff637[_0x7491('0x14')]+_0x2c7b5e[_0x7491('0x26')];var _0x3be196=_0x25ae20===_0x2c7b5e[_0x7491('0x26')]-0x1?_0xbff637[_0x7491('0x14')]+_0x88de09[_0x7491('0x26')]+_0x2bf126[_0x7491('0x26')]+0x2:_0xbff637[_0x7491('0x14')]+_0x25ae20+0x1;_0x88de09[_0x7491('0x3a')](_0x25ae20,0x0,{'type':_0x3d0ef4[_0x7491('0x10')],'app':_0x7491('0x3b'),'appdata':_0x2c7b5e[_0x25ae20]+'?'+_0x3d0ef4['context']+_0x7491('0x3c')+_0x45d056+':'+_0x3d0ef4[_0x7491('0x16')]+_0x7491('0x3c')+_0x3be196,'exten':_0x3d0ef4[_0x7491('0x8')],'context':_0x3d0ef4[_0x7491('0x16')],'priority':_0xbff637[_0x7491('0x14')]+_0x25ae20,'VoiceExtensionId':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x1c')]});}_0x3d0ef4[_0x7491('0x14')]=_0x88de09['length']?_[_0x7491('0x3d')](_0x88de09)['priority']+0x1:_0xbff637[_0x7491('0x14')];_0xbff637[_0x7491('0x14')]=(_0x2bf126['length']?_[_0x7491('0x3d')](_0x2bf126)[_0x7491('0x14')]:_0x3d0ef4[_0x7491('0x14')])+0x1;_0xbff637[_0x7491('0xd')]=_[_0x7491('0x3e')](_0xbff637[_0x7491('0xd')],_0x88de09,[_0x3d0ef4],_0x2bf126);}_0xbff637[_0x7491('0xd')][_0x7491('0xf')]({'type':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x10')],'app':_0x7491('0x3f'),'exten':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x8')],'context':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x16')],'priority':_0xbff637['priority'],'VoiceExtensionId':_0x5f46bf[_0xcc4522][0x0][_0x7491('0x1c')]});_0x5f328a[_0x7491('0xf')](_0x5f46bf[_0xcc4522][0x0]['VoiceExtensionId']);_0x466aa6=_[_0x7491('0x3e')](_0x466aa6,_0xbff637['extensions']);}}return _0xb2a338[_0x7491('0x40')](function(_0x205472){return _0xb2a338[_0x7491('0x2')][_0x7491('0x4')][_0x7491('0x41')]({'where':{'VoiceExtensionId':{'$in':_0x5f328a}},'transaction':_0x205472})['then'](function(_0x35e68c){return _0xb2a338[_0x7491('0x2')]['VoiceExtension'][_0x7491('0x42')](_[_0x7491('0x43')](_0x466aa6,'priority'),{'transaction':_0x205472});});});})['catch'](function(_0x3d1c74){console['error'](_0x3d1c74);});}exports['rewrite']=rewrite;
\ No newline at end of file
index bd7beab..bf17446 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c97=['Unable\x20to\x20delete\x20temp\x20file:','SIGINT','CSV\x20import\x20process\x20stopped!','createReadStream','parse','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','lodash','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','defaults','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','Missing\x20filepath\x20parameter!','null','zipObject','split','Missing\x20ListId\x20parameter!','error','contact','index','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','message','join','data','firstName','phone','phone\x20not\x20specified!','birthDate','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','ListId','CompanyId','duplicate','CmContact','create','then','push','pick','catch','stringify','cmContact','checkHopper','inspect','insert','ContactId','createdAt','updatedAt','select','field','scheduledAt','NOW()','cm_contacts','deletedAt\x20IS\x20NULL','where','ListId\x20=\x20?','toString','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','from','cm_hopper','into','fromQuery','id\x20IN\x20?','str','calleridnum','cm_hopper_final','\x20=\x20?','cm_hopper_black','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','always','sequelize','query','VoiceQueueId','all','get','Campaign','CampaignId','BlackLists','cmContact,\x20%s,\x20%s','contact:csv_','resume','resolve','unlinkSync'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5c97,0x6d));var _0x75c9=function(_0x38d832,_0xf2104d){_0x38d832=_0x38d832-0x0;var _0x2e166e=_0x5c97[_0x38d832];return _0x2e166e;};'use strict';var BPromise=require(_0x75c9('0x0'));var util=require('util');var _=require(_0x75c9('0x1'));var fs=require('fs');var squel=require(_0x75c9('0x2'));var Papa=require(_0x75c9('0x3'));var Redis=require(_0x75c9('0x4'));var db=require(_0x75c9('0x5'))['db'];var config=require(_0x75c9('0x6'));var logger=require(_0x75c9('0x7'))(_0x75c9('0x8'));config[_0x75c9('0x9')]=_[_0x75c9('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x75c9('0xb'))(new Redis(config[_0x75c9('0x9')]));require(_0x75c9('0xc'))[_0x75c9('0xd')](socket);try{if(!process[_0x75c9('0xe')][0x2]||process[_0x75c9('0xe')][0x2]===_0x75c9('0xf')||process[_0x75c9('0xe')][0x2]==='null'){throw new Error(_0x75c9('0x10'));}var FILEPATH=process[_0x75c9('0xe')][0x2];if(!process[_0x75c9('0xe')][0x3]||process[_0x75c9('0xe')][0x3]==='undefined'||process[_0x75c9('0xe')][0x3]==='null'||!process['argv'][0x4]||process[_0x75c9('0xe')][0x4]===_0x75c9('0xf')||process[_0x75c9('0xe')][0x4]===_0x75c9('0x11')){throw new Error('Missing\x20binding\x20parameters!');}var FIELDS=_[_0x75c9('0x12')](process[_0x75c9('0xe')][0x3][_0x75c9('0x13')](','),process[_0x75c9('0xe')][0x4][_0x75c9('0x13')](','));if(!process['argv'][0x5]||process[_0x75c9('0xe')][0x5]===_0x75c9('0xf')||process[_0x75c9('0xe')][0x5]==='null'){throw new Error(_0x75c9('0x14'));}var LISTID=process[_0x75c9('0xe')][0x5];var COMPANYID=process[_0x75c9('0xe')][0x6]&&process[_0x75c9('0xe')][0x6]!==_0x75c9('0xf')&&process[_0x75c9('0xe')][0x6]!==_0x75c9('0x11')?process['argv'][0x6]:null;var DUPLICATES=process[_0x75c9('0xe')][0x7]&&process[_0x75c9('0xe')][0x7]!=='undefined'&&process['argv'][0x7]!==_0x75c9('0x11')?process[_0x75c9('0xe')][0x7]:null;if(!process[_0x75c9('0xe')][0x8]||process['argv'][0x8]==='undefined'||process[_0x75c9('0xe')][0x8]===_0x75c9('0x11')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process[_0x75c9('0xe')][0x8];}catch(_0x3b87c7){logger[_0x75c9('0x15')](_0x3b87c7);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0xb0f461,_0x201eee,_0x3af4b2,_0x233f19){var _0x4abaef={'message':_0x201eee};_0x4abaef[_0xb0f461]=!![];if(_0x3af4b2){_0x4abaef[_0x75c9('0x16')]=_0x3af4b2;}if(_0x233f19){_0x4abaef[_0x75c9('0x17')]=_0x233f19;}return _0x4abaef;}function isEmail(_0xf0769){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0xf0769);}function checkRow(_0x3beba9,_0x1ea4a4,_0x4d0ba8){return new BPromise(function(_0x3fe489,_0x18c0f9){if(_[_0x75c9('0x18')](_0x3beba9)){return _0x18c0f9(handleCheckRowError('error',_0x75c9('0x19'),null,_0x4d0ba8));}if(_0x3beba9['errors']&&_0x3beba9[_0x75c9('0x1a')][_0x75c9('0x1b')]){var _0x43dc3d=_['map'](_0x3beba9[_0x75c9('0x1a')],_0x75c9('0x1c'))[_0x75c9('0x1d')](';');return _0x18c0f9(handleCheckRowError(_0x75c9('0x15'),_0x43dc3d,null,_0x4d0ba8));}var _0x41489d={};for(var _0x27ad28 in FIELDS){if(FIELDS['hasOwnProperty'](_0x27ad28)&&FIELDS[_0x27ad28]){_0x41489d[_0x27ad28]=_0x3beba9[_0x75c9('0x1e')][0x0][FIELDS[_0x27ad28]]||_0x3beba9[_0x75c9('0x1e')][0x0]['\ufeff'+FIELDS[_0x27ad28]];}}if(!_0x41489d[_0x75c9('0x1f')]){return _0x18c0f9(handleCheckRowError('error','firstName\x20not\x20specified!',null,_0x4d0ba8));}if(!_0x41489d[_0x75c9('0x20')]){return _0x18c0f9(handleCheckRowError(_0x75c9('0x15'),_0x75c9('0x21'),null,_0x4d0ba8));}if(_0x41489d[_0x75c9('0x22')]){var _0x71dde0=moment(_0x41489d[_0x75c9('0x22')],'YYYY-MM-DD');if(!_0x71dde0['isValid']()){return _0x18c0f9(handleCheckRowError('error',_0x75c9('0x23'),null,_0x4d0ba8));}}if(_0x41489d[_0x75c9('0x24')]){if(!isEmail(_0x41489d[_0x75c9('0x24')])){return _0x18c0f9(handleCheckRowError(_0x75c9('0x15'),'email\x20format\x20is\x20not\x20valid!',null,_0x4d0ba8));}}_0x41489d[_0x75c9('0x25')]=LISTID;_0x41489d[_0x75c9('0x26')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x75c9('0x1b')]&&_0x1ea4a4){var _0x53937e={};for(var _0x2f9bdf=0x0,_0xcc3484=DUPLICATES[_0x75c9('0x1b')];_0x2f9bdf<_0xcc3484;_0x2f9bdf+=0x1){_0x53937e[DUPLICATES[_0x2f9bdf]]=_0x41489d[DUPLICATES[_0x2f9bdf]];}var _0x52cb94=_['find'](_0x1ea4a4,_0x53937e);if(_0x52cb94){return _0x18c0f9(handleCheckRowError(_0x75c9('0x27'),'Duplicate\x20Contact',_0x52cb94,_0x4d0ba8));}}return db[_0x75c9('0x28')][_0x75c9('0x29')](_0x41489d,{'raw':!![],'hooks':![],'fields':_['keys'](_0x41489d)})[_0x75c9('0x2a')](function(_0x4b579e){if(DUPLICATES&&DUPLICATES[_0x75c9('0x1b')]&&_0x1ea4a4){_0x1ea4a4[_0x75c9('0x2b')](_[_0x75c9('0x2c')](_0x41489d,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x4b579e['id'];return _0x3fe489();})[_0x75c9('0x2d')](function(_0xdab919){return _0x18c0f9(handleCheckRowError('error','Error\x20while\x20creating\x20contact:\x20'+(_0xdab919[_0x75c9('0x1c')]||JSON[_0x75c9('0x2e')](_0xdab919)),null,_0x4d0ba8));});});}function checkHopper(){function _0x2e6965(){return function(_0x279b68){logger[_0x75c9('0x15')](_0x75c9('0x2f'),_0x75c9('0x30'),util[_0x75c9('0x31')](_0x279b68,{'showHidden':![],'depth':null}));};}var _0x3417d1=function(_0x2515a7,_0x212417){var _0x1f0e26=squel[_0x75c9('0x32')]()['into']('cm_hopper')['fromQuery']([_0x75c9('0x20'),'scheduledAt',_0x75c9('0x33'),_0x75c9('0x25'),_0x212417,_0x75c9('0x34'),_0x75c9('0x35')],squel[_0x75c9('0x36')]()[_0x75c9('0x37')](_0x75c9('0x20'),'phone')[_0x75c9('0x37')]('NOW()',_0x75c9('0x38'))[_0x75c9('0x37')]('id',_0x75c9('0x33'))['field'](LISTID['toString'](),'ListId')['field'](_0x2515a7['id']['toString'](),_0x212417)[_0x75c9('0x37')]('NOW()',_0x75c9('0x34'))[_0x75c9('0x37')](_0x75c9('0x39'),'updatedAt')['from'](_0x75c9('0x3a'))['where'](_0x75c9('0x3b'))[_0x75c9('0x3c')](_0x75c9('0x3d'),LISTID[_0x75c9('0x3e')]())['where'](_0x75c9('0x3f'))['where'](_0x75c9('0x40'),squel['select']()[_0x75c9('0x37')](_0x75c9('0x20'))[_0x75c9('0x41')](_0x75c9('0x42'))[_0x75c9('0x3c')](_0x212417+'\x20=\x20?',_0x2515a7['id'][_0x75c9('0x3e')]())))['toString']();return _0x1f0e26;};var _0xc25feb=function(_0x2919b9,_0x580310){var _0x347515=squel[_0x75c9('0x32')]()[_0x75c9('0x43')](_0x75c9('0x42'))[_0x75c9('0x44')]([_0x75c9('0x20'),_0x75c9('0x38'),_0x75c9('0x33'),_0x75c9('0x25'),_0x580310,_0x75c9('0x34'),_0x75c9('0x35')],squel['select']()[_0x75c9('0x37')](_0x75c9('0x20'),_0x75c9('0x20'))[_0x75c9('0x37')](_0x75c9('0x39'),_0x75c9('0x38'))[_0x75c9('0x37')]('id',_0x75c9('0x33'))['field'](LISTID['toString'](),_0x75c9('0x25'))[_0x75c9('0x37')](_0x2919b9['id']['toString'](),_0x580310)['field'](_0x75c9('0x39'),_0x75c9('0x34'))[_0x75c9('0x37')](_0x75c9('0x39'),'updatedAt')[_0x75c9('0x41')](_0x75c9('0x3a'))[_0x75c9('0x3c')](_0x75c9('0x3b'))[_0x75c9('0x3c')](_0x75c9('0x3d'),LISTID['toString']())['where'](_0x75c9('0x45'),squel[_0x75c9('0x46')](hopperContacts))[_0x75c9('0x3c')](_0x75c9('0x3f'))['where'](_0x75c9('0x40'),squel['select']()[_0x75c9('0x37')](_0x75c9('0x47'))[_0x75c9('0x41')](_0x75c9('0x48'))['where'](_0x580310+'\x20=\x20?',_0x2919b9['id'][_0x75c9('0x3e')]()))[_0x75c9('0x3c')](_0x75c9('0x40'),squel['select']()[_0x75c9('0x37')](_0x75c9('0x20'))[_0x75c9('0x41')](_0x75c9('0x42'))['where'](_0x580310+_0x75c9('0x49'),_0x2919b9['id'][_0x75c9('0x3e')]())))['toString']();return _0x347515;};function _0x4bd888(_0x4f6e64,_0x5f0018){var _0x2b0639=squel[_0x75c9('0x32')]()['into'](_0x75c9('0x42'))[_0x75c9('0x44')]([_0x75c9('0x20'),'scheduledAt','ContactId',_0x75c9('0x25'),_0x5f0018,'createdAt','updatedAt'],squel['select']()[_0x75c9('0x37')](_0x75c9('0x20'),'phone')[_0x75c9('0x37')]('NOW()',_0x75c9('0x38'))[_0x75c9('0x37')]('id',_0x75c9('0x33'))[_0x75c9('0x37')](LISTID[_0x75c9('0x3e')](),_0x75c9('0x25'))[_0x75c9('0x37')](_0x4f6e64['id'][_0x75c9('0x3e')](),_0x5f0018)[_0x75c9('0x37')]('NOW()',_0x75c9('0x34'))[_0x75c9('0x37')](_0x75c9('0x39'),'updatedAt')['from'](_0x75c9('0x3a'))[_0x75c9('0x3c')](_0x75c9('0x3b'))['where'](_0x75c9('0x3d'),LISTID[_0x75c9('0x3e')]())[_0x75c9('0x3c')]('id\x20IN\x20?',squel[_0x75c9('0x46')](hopperContacts))[_0x75c9('0x3c')](_0x75c9('0x3f')))[_0x75c9('0x3e')]();return _0x2b0639;}function _0x57b1f1(_0x13e26d,_0x535c86){var _0x292092=squel[_0x75c9('0x32')]()[_0x75c9('0x43')](_0x75c9('0x4a'))[_0x75c9('0x44')]([_0x75c9('0x20'),_0x75c9('0x33'),_0x75c9('0x25'),_0x535c86,_0x75c9('0x34'),_0x75c9('0x35')],squel['select']()[_0x75c9('0x37')](_0x75c9('0x20'),_0x75c9('0x20'))[_0x75c9('0x37')]('id',_0x75c9('0x33'))['field'](LISTID['toString'](),_0x75c9('0x25'))['field'](_0x13e26d['id'][_0x75c9('0x3e')](),_0x535c86)[_0x75c9('0x37')](_0x75c9('0x39'),_0x75c9('0x34'))['field']('NOW()',_0x75c9('0x35'))['from']('cm_contacts')['where'](_0x75c9('0x3b'))[_0x75c9('0x3c')](_0x75c9('0x3d'),LISTID[_0x75c9('0x3e')]())[_0x75c9('0x3c')](_0x75c9('0x45'),squel['str'](hopperContacts))[_0x75c9('0x3c')](_0x75c9('0x3f')))['toString']();return _0x292092;}return db[_0x75c9('0x4b')][_0x75c9('0x4c')]({'where':{'type':_0x75c9('0x4d')},'attributes':['id',_0x75c9('0x4e')],'include':[{'model':db[_0x75c9('0x4f')],'as':_0x75c9('0x50'),'where':{'id':LISTID}}]})[_0x75c9('0x2a')](function(_0x23b332){var _0x1cc1b1=[];if(_0x23b332){var _0x28c784;for(var _0x197392=0x0,_0x49e382;_0x197392<_0x23b332[_0x75c9('0x1b')];_0x197392+=0x1){_0x49e382=_0x23b332[_0x197392]['get']({'plain':!![]});switch(_0x49e382['dialCheckDuplicateType']){case _0x75c9('0x51'):_0x1cc1b1[_0x75c9('0x2b')](db[_0x75c9('0x52')]['query'](_0xc25feb(_0x49e382,'VoiceQueueId'))[_0x75c9('0x2a')](function(){})[_0x75c9('0x2d')](_0x2e6965()));break;case'onlyIfOpen':_0x1cc1b1[_0x75c9('0x2b')](db[_0x75c9('0x52')][_0x75c9('0x53')](_0x3417d1(_0x49e382,_0x75c9('0x54')))['then'](function(){})[_0x75c9('0x2d')](_0x2e6965()));break;default:_0x1cc1b1[_0x75c9('0x2b')](db[_0x75c9('0x52')][_0x75c9('0x53')](_0x4bd888(_0x49e382,'VoiceQueueId'))['then'](function(){})[_0x75c9('0x2d')](_0x2e6965()));}}}return _0x1cc1b1;})[_0x75c9('0x55')]()[_0x75c9('0x2a')](function(){return db['VoiceQueue'][_0x75c9('0x4c')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db[_0x75c9('0x4f')],'as':'BlackLists','where':{'id':LISTID}}]})['then'](function(_0x16fdfb){var _0x44c64a=[];if(_0x16fdfb){var _0x19b8a7;for(var _0x46194d=0x0,_0x445ad9;_0x46194d<_0x16fdfb[_0x75c9('0x1b')];_0x46194d+=0x1){_0x445ad9=_0x16fdfb[_0x46194d][_0x75c9('0x56')]({'plain':!![]});_0x44c64a[_0x75c9('0x2b')](db[_0x75c9('0x52')][_0x75c9('0x53')](_0x57b1f1(_0x445ad9,_0x75c9('0x54')))[_0x75c9('0x2a')](function(){})['catch'](_0x2e6965()));}}return _0x44c64a;})[_0x75c9('0x55')]();})['then'](function(){return db[_0x75c9('0x57')][_0x75c9('0x4c')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':_0x75c9('0x50'),'where':{'id':LISTID}}]})['then'](function(_0x126e62){var _0x5290ad=[];if(_0x126e62){for(var _0x1efc5d=0x0,_0x1a388e;_0x1efc5d<_0x126e62[_0x75c9('0x1b')];_0x1efc5d+=0x1){_0x1a388e=_0x126e62[_0x1efc5d][_0x75c9('0x56')]({'plain':!![]});switch(_0x1a388e[_0x75c9('0x4e')]){case _0x75c9('0x51'):_0x5290ad[_0x75c9('0x2b')](db[_0x75c9('0x52')][_0x75c9('0x53')](_0xc25feb(_0x1a388e,'CampaignId'))[_0x75c9('0x2a')](function(){})[_0x75c9('0x2d')](_0x2e6965()));break;case'onlyIfOpen':_0x5290ad[_0x75c9('0x2b')](db['sequelize']['query'](_0x3417d1(_0x1a388e,_0x75c9('0x58')))['then'](function(){})[_0x75c9('0x2d')](_0x2e6965()));break;default:_0x5290ad['push'](db[_0x75c9('0x52')][_0x75c9('0x53')](_0x4bd888(_0x1a388e,_0x75c9('0x58')))[_0x75c9('0x2a')](function(){})['catch'](_0x2e6965()));}}}return _0x5290ad;})[_0x75c9('0x55')]();})['then'](function(){return db['Campaign'][_0x75c9('0x4c')]({'attributes':['id'],'include':[{'model':db[_0x75c9('0x4f')],'as':_0x75c9('0x59'),'where':{'id':LISTID}}]})['then'](function(_0x2b65b4){var _0x36cbbc=[];if(_0x2b65b4){for(var _0xf8b623=0x0,_0x5cb89e;_0xf8b623<_0x2b65b4[_0x75c9('0x1b')];_0xf8b623+=0x1){_0x5cb89e=_0x2b65b4[_0xf8b623][_0x75c9('0x56')]({'plain':!![]});_0x36cbbc['push'](db[_0x75c9('0x52')][_0x75c9('0x53')](_0x57b1f1(_0x5cb89e,'CampaignId'))[_0x75c9('0x2a')](function(){})[_0x75c9('0x2d')](_0x2e6965()));}}return _0x36cbbc;})[_0x75c9('0x55')]();})[_0x75c9('0x2d')](function(_0x459531){logger[_0x75c9('0x15')](_0x75c9('0x5a'),'generalCheckHopper',_0x459531[_0x75c9('0x1c')]);});}var processPromises=function(_0x2fc54){return BPromise[_0x75c9('0x55')](promises)[_0x75c9('0x2a')](function(_0x27b655){})[_0x75c9('0x2d')](function(_0x5e6c62){logger[_0x75c9('0x15')]('Error\x20processing\x20rows\x20block:',JSON[_0x75c9('0x2e')](_0x5e6c62));})['finally'](function(){socket['emit'](_0x75c9('0x5b')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x2fc54){return _0x2fc54[_0x75c9('0x5c')]();}});};var endCsv=function(){return BPromise[_0x75c9('0x5d')]()[_0x75c9('0x2a')](function(){if(hopperContacts){return checkHopper();}})['then'](function(){socket['emit'](_0x75c9('0x5b')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x75c9('0x5e')](FILEPATH);}catch(_0x4784c0){logger[_0x75c9('0x15')](_0x75c9('0x5f'),JSON['stringify'](_0x4784c0));}finally{process['exit'](0x0);}});};process['on'](_0x75c9('0x60'),function(){logger['info'](_0x75c9('0x61'));endCsv();});function main(){return BPromise[_0x75c9('0x5d')]()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x75c9('0x13')](',');return db[_0x75c9('0x28')][_0x75c9('0x4c')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x75c9('0x2a')](function(_0x22a9c0){var _0x33d0be=fs[_0x75c9('0x62')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x75c9('0x63')](_0x33d0be,{'header':!![],'skipEmptyLines':!![],'step':function(_0x323b64,_0x587869){total+=0x1;var _0x2e5c7f=total;promises[_0x75c9('0x2b')](checkRow(_0x323b64,_0x22a9c0,_0x2e5c7f)[_0x75c9('0x2a')](function(){success+=0x1;})[_0x75c9('0x2d')](function(_0x43354e){if(_0x43354e[_0x75c9('0x15')]){errors+=0x1;delete _0x43354e[_0x75c9('0x15')];}else if(_0x43354e[_0x75c9('0x27')]){duplicates+=0x1;delete _0x43354e[_0x75c9('0x27')];}rows[_0x75c9('0x2b')](_0x43354e);}));if(total%0xc8===0x0){_0x587869['pause']();return processPromises(_0x587869);}},'complete':function(){return processPromises()[_0x75c9('0x2a')](function(){logger['info']('CSV\x20parsed\x20correctly!');endCsv();});},'error':function(_0x69b941,_0x36b379){logger['info'](_0x75c9('0x64'),JSON[_0x75c9('0x2e')](_0x69b941));endCsv();}});})[_0x75c9('0x2d')](function(_0x135aa4){logger[_0x75c9('0x15')](_0x75c9('0x65'),JSON[_0x75c9('0x2e')](_0x135aa4));});}main();
\ No newline at end of file
+var _0xe3d4=['CmList','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','stringify','exit','SIGINT','CSV\x20import\x20process\x20stopped!','resolve','createReadStream','duplicate','pause','info','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','redis','localhost','socket.io-emitter','argv','undefined','null','Missing\x20filepath\x20parameter!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','index','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','CompanyId','find','Duplicate\x20Contact','CmContact','create','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','cmContact','checkHopper','inspect','fromQuery','ContactId','ListId','createdAt','updatedAt','field','scheduledAt','toString','NOW()','from','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','select','cm_hopper','insert','into','cm_contacts','id\x20IN\x20?','phone\x20IS\x20NOT\x20NULL','calleridnum','cm_hopper_final','\x20=\x20?','cm_hopper_black','str','VoiceQueue','outbound','Lists','get','dialCheckDuplicateType','sequelize','query','onlyIfOpen','VoiceQueueId','all','BlackLists','Campaign','findAll','always','CampaignId'];(function(_0x4aac97,_0x3513f6){var _0x1ba475=function(_0x221528){while(--_0x221528){_0x4aac97['push'](_0x4aac97['shift']());}};_0x1ba475(++_0x3513f6);}(_0xe3d4,0xf9));var _0x4e3d=function(_0x539bde,_0x14b7db){_0x539bde=_0x539bde-0x0;var _0x1718d4=_0xe3d4[_0x539bde];return _0x1718d4;};'use strict';var BPromise=require(_0x4e3d('0x0'));var util=require('util');var _=require('lodash');var fs=require('fs');var squel=require(_0x4e3d('0x1'));var Papa=require('papaparse');var Redis=require(_0x4e3d('0x2'));var db=require(_0x4e3d('0x3'))['db'];var config=require(_0x4e3d('0x4'));var logger=require(_0x4e3d('0x5'))('api');config['redis']=_['defaults'](config[_0x4e3d('0x6')],{'host':_0x4e3d('0x7'),'port':0x18eb});var socket=require(_0x4e3d('0x8'))(new Redis(config[_0x4e3d('0x6')]));require('../../../api/cmContact/cmContact.socket')['register'](socket);try{if(!process[_0x4e3d('0x9')][0x2]||process['argv'][0x2]===_0x4e3d('0xa')||process[_0x4e3d('0x9')][0x2]===_0x4e3d('0xb')){throw new Error(_0x4e3d('0xc'));}var FILEPATH=process[_0x4e3d('0x9')][0x2];if(!process['argv'][0x3]||process[_0x4e3d('0x9')][0x3]===_0x4e3d('0xa')||process['argv'][0x3]===_0x4e3d('0xb')||!process[_0x4e3d('0x9')][0x4]||process[_0x4e3d('0x9')][0x4]==='undefined'||process['argv'][0x4]===_0x4e3d('0xb')){throw new Error('Missing\x20binding\x20parameters!');}var FIELDS=_[_0x4e3d('0xd')](process[_0x4e3d('0x9')][0x3][_0x4e3d('0xe')](','),process[_0x4e3d('0x9')][0x4][_0x4e3d('0xe')](','));if(!process[_0x4e3d('0x9')][0x5]||process['argv'][0x5]===_0x4e3d('0xa')||process[_0x4e3d('0x9')][0x5]===_0x4e3d('0xb')){throw new Error(_0x4e3d('0xf'));}var LISTID=process[_0x4e3d('0x9')][0x5];var COMPANYID=process[_0x4e3d('0x9')][0x6]&&process[_0x4e3d('0x9')][0x6]!==_0x4e3d('0xa')&&process['argv'][0x6]!=='null'?process['argv'][0x6]:null;var DUPLICATES=process[_0x4e3d('0x9')][0x7]&&process['argv'][0x7]!=='undefined'&&process[_0x4e3d('0x9')][0x7]!==_0x4e3d('0xb')?process[_0x4e3d('0x9')][0x7]:null;if(!process['argv'][0x8]||process[_0x4e3d('0x9')][0x8]===_0x4e3d('0xa')||process[_0x4e3d('0x9')][0x8]===_0x4e3d('0xb')){throw new Error(_0x4e3d('0x10'));}var SOCKET_TIMESTAMP=process[_0x4e3d('0x9')][0x8];}catch(_0x2dcb2b){logger[_0x4e3d('0x11')](_0x2dcb2b);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0x3faac4,_0xb2f1,_0x4fc501,_0x40124b){var _0x3eed60={'message':_0xb2f1};_0x3eed60[_0x3faac4]=!![];if(_0x4fc501){_0x3eed60[_0x4e3d('0x12')]=_0x4fc501;}if(_0x40124b){_0x3eed60[_0x4e3d('0x13')]=_0x40124b;}return _0x3eed60;}function isEmail(_0xd23217){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0xd23217);}function checkRow(_0x2992b6,_0x1185bf,_0x2b1c94){return new BPromise(function(_0x2a2730,_0x645647){if(_[_0x4e3d('0x14')](_0x2992b6)){return _0x645647(handleCheckRowError('error',_0x4e3d('0x15'),null,_0x2b1c94));}if(_0x2992b6[_0x4e3d('0x16')]&&_0x2992b6[_0x4e3d('0x16')][_0x4e3d('0x17')]){var _0x588f0c=_['map'](_0x2992b6[_0x4e3d('0x16')],_0x4e3d('0x18'))[_0x4e3d('0x19')](';');return _0x645647(handleCheckRowError(_0x4e3d('0x11'),_0x588f0c,null,_0x2b1c94));}var _0x580907={};for(var _0x5d37c4 in FIELDS){if(FIELDS[_0x4e3d('0x1a')](_0x5d37c4)&&FIELDS[_0x5d37c4]){_0x580907[_0x5d37c4]=_0x2992b6[_0x4e3d('0x1b')][0x0][FIELDS[_0x5d37c4]]||_0x2992b6[_0x4e3d('0x1b')][0x0]['\ufeff'+FIELDS[_0x5d37c4]];}}if(!_0x580907[_0x4e3d('0x1c')]){return _0x645647(handleCheckRowError('error',_0x4e3d('0x1d'),null,_0x2b1c94));}if(!_0x580907[_0x4e3d('0x1e')]){return _0x645647(handleCheckRowError('error',_0x4e3d('0x1f'),null,_0x2b1c94));}if(_0x580907[_0x4e3d('0x20')]){var _0x579e8f=moment(_0x580907[_0x4e3d('0x20')],_0x4e3d('0x21'));if(!_0x579e8f[_0x4e3d('0x22')]()){return _0x645647(handleCheckRowError('error',_0x4e3d('0x23'),null,_0x2b1c94));}}if(_0x580907[_0x4e3d('0x24')]){if(!isEmail(_0x580907[_0x4e3d('0x24')])){return _0x645647(handleCheckRowError('error',_0x4e3d('0x25'),null,_0x2b1c94));}}_0x580907['ListId']=LISTID;_0x580907[_0x4e3d('0x26')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x4e3d('0x17')]&&_0x1185bf){var _0x20ac61={};for(var _0x136881=0x0,_0xdd6a2f=DUPLICATES[_0x4e3d('0x17')];_0x136881<_0xdd6a2f;_0x136881+=0x1){_0x20ac61[DUPLICATES[_0x136881]]=_0x580907[DUPLICATES[_0x136881]];}var _0xf73539=_[_0x4e3d('0x27')](_0x1185bf,_0x20ac61);if(_0xf73539){return _0x645647(handleCheckRowError('duplicate',_0x4e3d('0x28'),_0xf73539,_0x2b1c94));}}return db[_0x4e3d('0x29')][_0x4e3d('0x2a')](_0x580907,{'raw':!![],'hooks':![],'fields':_[_0x4e3d('0x2b')](_0x580907)})[_0x4e3d('0x2c')](function(_0x2e8acf){if(DUPLICATES&&DUPLICATES[_0x4e3d('0x17')]&&_0x1185bf){_0x1185bf[_0x4e3d('0x2d')](_[_0x4e3d('0x2e')](_0x580907,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x2e8acf['id'];return _0x2a2730();})[_0x4e3d('0x2f')](function(_0x3039ef){return _0x645647(handleCheckRowError(_0x4e3d('0x11'),_0x4e3d('0x30')+(_0x3039ef['message']||JSON['stringify'](_0x3039ef)),null,_0x2b1c94));});});}function checkHopper(){function _0x28f4c3(){return function(_0xcafa4b){logger['error'](_0x4e3d('0x31'),_0x4e3d('0x32'),util[_0x4e3d('0x33')](_0xcafa4b,{'showHidden':![],'depth':null}));};}var _0x5b68da=function(_0x57a803,_0x15a28d){var _0x42656c=squel['insert']()['into']('cm_hopper')[_0x4e3d('0x34')]([_0x4e3d('0x1e'),'scheduledAt',_0x4e3d('0x35'),_0x4e3d('0x36'),_0x15a28d,_0x4e3d('0x37'),_0x4e3d('0x38')],squel['select']()['field'](_0x4e3d('0x1e'),_0x4e3d('0x1e'))[_0x4e3d('0x39')]('NOW()',_0x4e3d('0x3a'))[_0x4e3d('0x39')]('id',_0x4e3d('0x35'))[_0x4e3d('0x39')](LISTID['toString'](),_0x4e3d('0x36'))[_0x4e3d('0x39')](_0x57a803['id'][_0x4e3d('0x3b')](),_0x15a28d)[_0x4e3d('0x39')](_0x4e3d('0x3c'),'createdAt')['field'](_0x4e3d('0x3c'),_0x4e3d('0x38'))[_0x4e3d('0x3d')]('cm_contacts')[_0x4e3d('0x3e')](_0x4e3d('0x3f'))[_0x4e3d('0x3e')](_0x4e3d('0x40'),LISTID[_0x4e3d('0x3b')]())['where']('phone\x20IS\x20NOT\x20NULL')[_0x4e3d('0x3e')](_0x4e3d('0x41'),squel[_0x4e3d('0x42')]()['field'](_0x4e3d('0x1e'))['from'](_0x4e3d('0x43'))[_0x4e3d('0x3e')](_0x15a28d+'\x20=\x20?',_0x57a803['id'][_0x4e3d('0x3b')]())))[_0x4e3d('0x3b')]();return _0x42656c;};var _0x4e3423=function(_0x2bf652,_0xd8d99c){var _0xeb6593=squel[_0x4e3d('0x44')]()[_0x4e3d('0x45')](_0x4e3d('0x43'))['fromQuery'](['phone',_0x4e3d('0x3a'),_0x4e3d('0x35'),_0x4e3d('0x36'),_0xd8d99c,'createdAt',_0x4e3d('0x38')],squel[_0x4e3d('0x42')]()[_0x4e3d('0x39')]('phone','phone')['field'](_0x4e3d('0x3c'),'scheduledAt')[_0x4e3d('0x39')]('id','ContactId')['field'](LISTID[_0x4e3d('0x3b')](),_0x4e3d('0x36'))[_0x4e3d('0x39')](_0x2bf652['id'][_0x4e3d('0x3b')](),_0xd8d99c)[_0x4e3d('0x39')]('NOW()',_0x4e3d('0x37'))['field']('NOW()',_0x4e3d('0x38'))[_0x4e3d('0x3d')](_0x4e3d('0x46'))[_0x4e3d('0x3e')]('deletedAt\x20IS\x20NULL')[_0x4e3d('0x3e')]('ListId\x20=\x20?',LISTID[_0x4e3d('0x3b')]())['where'](_0x4e3d('0x47'),squel['str'](hopperContacts))[_0x4e3d('0x3e')](_0x4e3d('0x48'))[_0x4e3d('0x3e')](_0x4e3d('0x41'),squel[_0x4e3d('0x42')]()[_0x4e3d('0x39')](_0x4e3d('0x49'))['from'](_0x4e3d('0x4a'))[_0x4e3d('0x3e')](_0xd8d99c+_0x4e3d('0x4b'),_0x2bf652['id']['toString']()))[_0x4e3d('0x3e')]('phone\x20NOT\x20IN\x20(?)',squel[_0x4e3d('0x42')]()[_0x4e3d('0x39')](_0x4e3d('0x1e'))[_0x4e3d('0x3d')](_0x4e3d('0x43'))[_0x4e3d('0x3e')](_0xd8d99c+_0x4e3d('0x4b'),_0x2bf652['id'][_0x4e3d('0x3b')]())))[_0x4e3d('0x3b')]();return _0xeb6593;};function _0x446698(_0x58f513,_0x58e4da){var _0x5b80fa=squel[_0x4e3d('0x44')]()[_0x4e3d('0x45')](_0x4e3d('0x43'))['fromQuery']([_0x4e3d('0x1e'),_0x4e3d('0x3a'),_0x4e3d('0x35'),_0x4e3d('0x36'),_0x58e4da,'createdAt',_0x4e3d('0x38')],squel['select']()[_0x4e3d('0x39')]('phone',_0x4e3d('0x1e'))[_0x4e3d('0x39')](_0x4e3d('0x3c'),_0x4e3d('0x3a'))[_0x4e3d('0x39')]('id',_0x4e3d('0x35'))['field'](LISTID[_0x4e3d('0x3b')](),_0x4e3d('0x36'))[_0x4e3d('0x39')](_0x58f513['id'][_0x4e3d('0x3b')](),_0x58e4da)[_0x4e3d('0x39')](_0x4e3d('0x3c'),'createdAt')['field']('NOW()','updatedAt')[_0x4e3d('0x3d')](_0x4e3d('0x46'))[_0x4e3d('0x3e')](_0x4e3d('0x3f'))[_0x4e3d('0x3e')](_0x4e3d('0x40'),LISTID['toString']())[_0x4e3d('0x3e')](_0x4e3d('0x47'),squel['str'](hopperContacts))[_0x4e3d('0x3e')]('phone\x20IS\x20NOT\x20NULL'))[_0x4e3d('0x3b')]();return _0x5b80fa;}function _0x2c3abf(_0xdfb3fc,_0x32e117){var _0x54b0e6=squel[_0x4e3d('0x44')]()[_0x4e3d('0x45')](_0x4e3d('0x4c'))[_0x4e3d('0x34')]([_0x4e3d('0x1e'),_0x4e3d('0x35'),'ListId',_0x32e117,'createdAt',_0x4e3d('0x38')],squel[_0x4e3d('0x42')]()[_0x4e3d('0x39')](_0x4e3d('0x1e'),'phone')['field']('id','ContactId')[_0x4e3d('0x39')](LISTID[_0x4e3d('0x3b')](),'ListId')[_0x4e3d('0x39')](_0xdfb3fc['id'][_0x4e3d('0x3b')](),_0x32e117)[_0x4e3d('0x39')](_0x4e3d('0x3c'),_0x4e3d('0x37'))[_0x4e3d('0x39')](_0x4e3d('0x3c'),_0x4e3d('0x38'))[_0x4e3d('0x3d')](_0x4e3d('0x46'))[_0x4e3d('0x3e')](_0x4e3d('0x3f'))['where']('ListId\x20=\x20?',LISTID[_0x4e3d('0x3b')]())['where'](_0x4e3d('0x47'),squel[_0x4e3d('0x4d')](hopperContacts))[_0x4e3d('0x3e')](_0x4e3d('0x48')))[_0x4e3d('0x3b')]();return _0x54b0e6;}return db[_0x4e3d('0x4e')]['findAll']({'where':{'type':_0x4e3d('0x4f')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':_0x4e3d('0x50'),'where':{'id':LISTID}}]})[_0x4e3d('0x2c')](function(_0x2879c6){var _0x220956=[];if(_0x2879c6){var _0x5066bb;for(var _0x3eb175=0x0,_0x36ca00;_0x3eb175<_0x2879c6[_0x4e3d('0x17')];_0x3eb175+=0x1){_0x36ca00=_0x2879c6[_0x3eb175][_0x4e3d('0x51')]({'plain':!![]});switch(_0x36ca00[_0x4e3d('0x52')]){case'always':_0x220956['push'](db[_0x4e3d('0x53')][_0x4e3d('0x54')](_0x4e3423(_0x36ca00,'VoiceQueueId'))[_0x4e3d('0x2c')](function(){})[_0x4e3d('0x2f')](_0x28f4c3()));break;case _0x4e3d('0x55'):_0x220956[_0x4e3d('0x2d')](db[_0x4e3d('0x53')][_0x4e3d('0x54')](_0x5b68da(_0x36ca00,'VoiceQueueId'))[_0x4e3d('0x2c')](function(){})[_0x4e3d('0x2f')](_0x28f4c3()));break;default:_0x220956['push'](db[_0x4e3d('0x53')][_0x4e3d('0x54')](_0x446698(_0x36ca00,_0x4e3d('0x56')))['then'](function(){})[_0x4e3d('0x2f')](_0x28f4c3()));}}}return _0x220956;})[_0x4e3d('0x57')]()[_0x4e3d('0x2c')](function(){return db[_0x4e3d('0x4e')]['findAll']({'where':{'type':_0x4e3d('0x4f')},'attributes':['id'],'include':[{'model':db['CmList'],'as':_0x4e3d('0x58'),'where':{'id':LISTID}}]})[_0x4e3d('0x2c')](function(_0x198467){var _0x5eb55e=[];if(_0x198467){var _0x34127c;for(var _0x10e9a7=0x0,_0x483eaf;_0x10e9a7<_0x198467[_0x4e3d('0x17')];_0x10e9a7+=0x1){_0x483eaf=_0x198467[_0x10e9a7][_0x4e3d('0x51')]({'plain':!![]});_0x5eb55e[_0x4e3d('0x2d')](db[_0x4e3d('0x53')]['query'](_0x2c3abf(_0x483eaf,_0x4e3d('0x56')))[_0x4e3d('0x2c')](function(){})[_0x4e3d('0x2f')](_0x28f4c3()));}}return _0x5eb55e;})[_0x4e3d('0x57')]();})[_0x4e3d('0x2c')](function(){return db[_0x4e3d('0x59')][_0x4e3d('0x5a')]({'attributes':['id',_0x4e3d('0x52')],'include':[{'model':db['CmList'],'as':_0x4e3d('0x50'),'where':{'id':LISTID}}]})['then'](function(_0x4c5322){var _0x560f94=[];if(_0x4c5322){for(var _0x301757=0x0,_0x3a728e;_0x301757<_0x4c5322[_0x4e3d('0x17')];_0x301757+=0x1){_0x3a728e=_0x4c5322[_0x301757]['get']({'plain':!![]});switch(_0x3a728e['dialCheckDuplicateType']){case _0x4e3d('0x5b'):_0x560f94[_0x4e3d('0x2d')](db[_0x4e3d('0x53')][_0x4e3d('0x54')](_0x4e3423(_0x3a728e,_0x4e3d('0x5c')))[_0x4e3d('0x2c')](function(){})[_0x4e3d('0x2f')](_0x28f4c3()));break;case'onlyIfOpen':_0x560f94[_0x4e3d('0x2d')](db['sequelize'][_0x4e3d('0x54')](_0x5b68da(_0x3a728e,_0x4e3d('0x5c')))['then'](function(){})[_0x4e3d('0x2f')](_0x28f4c3()));break;default:_0x560f94[_0x4e3d('0x2d')](db[_0x4e3d('0x53')][_0x4e3d('0x54')](_0x446698(_0x3a728e,'CampaignId'))[_0x4e3d('0x2c')](function(){})[_0x4e3d('0x2f')](_0x28f4c3()));}}}return _0x560f94;})[_0x4e3d('0x57')]();})[_0x4e3d('0x2c')](function(){return db[_0x4e3d('0x59')][_0x4e3d('0x5a')]({'attributes':['id'],'include':[{'model':db[_0x4e3d('0x5d')],'as':_0x4e3d('0x58'),'where':{'id':LISTID}}]})[_0x4e3d('0x2c')](function(_0x360335){var _0x2e1e5a=[];if(_0x360335){for(var _0x471f5d=0x0,_0x2b2681;_0x471f5d<_0x360335[_0x4e3d('0x17')];_0x471f5d+=0x1){_0x2b2681=_0x360335[_0x471f5d][_0x4e3d('0x51')]({'plain':!![]});_0x2e1e5a['push'](db[_0x4e3d('0x53')][_0x4e3d('0x54')](_0x2c3abf(_0x2b2681,_0x4e3d('0x5c')))[_0x4e3d('0x2c')](function(){})[_0x4e3d('0x2f')](_0x28f4c3()));}}return _0x2e1e5a;})[_0x4e3d('0x57')]();})[_0x4e3d('0x2f')](function(_0x252528){logger['error'](_0x4e3d('0x5e'),_0x4e3d('0x5f'),_0x252528[_0x4e3d('0x18')]);});}var processPromises=function(_0x5520c8){return BPromise['all'](promises)[_0x4e3d('0x2c')](function(_0x5554a0){})[_0x4e3d('0x2f')](function(_0x3f411e){logger[_0x4e3d('0x11')](_0x4e3d('0x60'),JSON['stringify'](_0x3f411e));})[_0x4e3d('0x61')](function(){socket[_0x4e3d('0x62')](_0x4e3d('0x63')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x5520c8){return _0x5520c8['resume']();}});};var endCsv=function(){return BPromise['resolve']()[_0x4e3d('0x2c')](function(){if(hopperContacts){return checkHopper();}})[_0x4e3d('0x2c')](function(){socket[_0x4e3d('0x62')]('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x4e3d('0x64')](FILEPATH);}catch(_0x516d60){logger['error'](_0x4e3d('0x65'),JSON[_0x4e3d('0x66')](_0x516d60));}finally{process[_0x4e3d('0x67')](0x0);}});};process['on'](_0x4e3d('0x68'),function(){logger['info'](_0x4e3d('0x69'));endCsv();});function main(){return BPromise[_0x4e3d('0x6a')]()[_0x4e3d('0x2c')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x4e3d('0xe')](',');return db['CmContact']['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x4e3d('0x2c')](function(_0x46730d){var _0x110f95=fs[_0x4e3d('0x6b')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa['parse'](_0x110f95,{'header':!![],'skipEmptyLines':!![],'step':function(_0xea21fd,_0x5e39b2){total+=0x1;var _0x3c00e2=total;promises[_0x4e3d('0x2d')](checkRow(_0xea21fd,_0x46730d,_0x3c00e2)['then'](function(){success+=0x1;})['catch'](function(_0x5bc386){if(_0x5bc386[_0x4e3d('0x11')]){errors+=0x1;delete _0x5bc386[_0x4e3d('0x11')];}else if(_0x5bc386[_0x4e3d('0x6c')]){duplicates+=0x1;delete _0x5bc386['duplicate'];}rows[_0x4e3d('0x2d')](_0x5bc386);}));if(total%0xc8===0x0){_0x5e39b2[_0x4e3d('0x6d')]();return processPromises(_0x5e39b2);}},'complete':function(){return processPromises()[_0x4e3d('0x2c')](function(){logger[_0x4e3d('0x6e')](_0x4e3d('0x6f'));endCsv();});},'error':function(_0x300b9f,_0xca6d9f){logger['info'](_0x4e3d('0x70'),JSON[_0x4e3d('0x66')](_0x300b9f));endCsv();}});})[_0x4e3d('0x2f')](function(_0x4ade0c){logger[_0x4e3d('0x11')](_0x4e3d('0x71'),JSON[_0x4e3d('0x66')](_0x4ade0c));});}main();
\ No newline at end of file
index ce29a90..70bca68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2905=['phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','SIGINT','uncaughtException','path','lodash','papaparse','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/logger','import','redis','localhost','socket.io-emitter','test','select','phone','join','.id\x20=\x20','where','\x20=\x20','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.updatedAt','cm_contacts.priority','insert','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','updatedAt','UserId','recallme','fields','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22onlyIfOpen\x22','\x22always\x22','toString','cm_contacts.createdAt','.CmListId\x20=\x20?','field','cm_hopper_black','\x20=\x20?','keys',')\x20NOT\x20IN\x20?','ListId\x20=\x20?','id\x20IN\x20?','MIN(id)','min_id','group','info','Received\x20SIGINT','error','message','errors','push','code','sequelize','query','spread','catch','main','stringify','send','root','server/files/tmp','.csv','header','parse','createReadStream','data','length','rows','hasOwnProperty','replace','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','priority','isNaN','includes','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','isValid','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','appendFileSync','emit','contact:import:','abort','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','format','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','CompanyId','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns_has_cm_lists','campaigns','CampaignId','then','finish','affectedRows','unlink','exit','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','binding','binding\x20doesn\x27t\x20exists'];(function(_0x1b6faa,_0xb34346){var _0x10bee9=function(_0x472323){while(--_0x472323){_0x1b6faa['push'](_0x1b6faa['shift']());}};_0x10bee9(++_0xb34346);}(_0x2905,0x19c));var _0x5290=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x2905[_0x19e35c];return _0x3e1fe8;};'use strict';var fs=require('fs');var path=require(_0x5290('0x0'));var _=require(_0x5290('0x1'));var Papa=require(_0x5290('0x2'));var util=require('util');var BPromise=require(_0x5290('0x3'));var moment=require(_0x5290('0x4'));var squel=require(_0x5290('0x5'));var Redis=require(_0x5290('0x6'));var db=require(_0x5290('0x7'))['db'];var config=require('../../../config/environment');var logger=require(_0x5290('0x8'))(_0x5290('0x9'));config[_0x5290('0xa')]=_['defaults'](config['redis'],{'host':_0x5290('0xb'),'port':0x18eb});var socket=require(_0x5290('0xc'))(new Redis(config[_0x5290('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');function isEmail(_0x15fc1e){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0x5290('0xd')](_0x15fc1e);}function selectNotIn(_0x965777,_0x569eba,_0x2b8c47,_0x4913ea,_0x5bf69f){return squel[_0x5290('0xe')]()['field'](_0x5290('0xf'))['from'](_0x4913ea)[_0x5290('0x10')](_0x569eba,null,_0x569eba+_0x5290('0x11')+_0x4913ea+'.'+_0x2b8c47)[_0x5290('0x12')](_0x4913ea+'.'+_0x2b8c47+_0x5290('0x13')+_0x965777+'.'+_0x2b8c47)[_0x5290('0x12')](_0x569eba+'.dialCheckDuplicateType\x20IN\x20('+_0x5bf69f[_0x5290('0x10')]()+')');}function insertCmHopper(_0x4ca236,_0x13246f,_0x70f6d5,_0x45f7ce,_0x3616eb){var _0x6e5148=[_0x5290('0x14'),_0x5290('0x15'),_0x5290('0x16'),_0x5290('0x17'),_0x13246f+'.'+_0x45f7ce,'cm_contacts.createdAt',_0x5290('0x18'),_0x5290('0x19'),'cm_contacts.UserId','\x22'+_0x3616eb+'\x22'];return squel[_0x5290('0x1a')]()[_0x5290('0x1b')](_0x5290('0x1c'))[_0x5290('0x1d')]([_0x5290('0xf'),_0x5290('0x1e'),_0x5290('0x1f'),_0x5290('0x20'),_0x45f7ce,_0x5290('0x21'),_0x5290('0x22'),'priority',_0x5290('0x23'),_0x5290('0x24')],squel['select']()[_0x5290('0x25')](_0x6e5148)[_0x5290('0x26')](_0x13246f)['join'](_0x5290('0x27'),null,_0x5290('0x28')+_0x13246f+_0x5290('0x29'))[_0x5290('0x10')](_0x70f6d5,null,_0x70f6d5+_0x5290('0x11')+_0x13246f+'.'+_0x45f7ce)['where'](_0x13246f+'.CmListId\x20=\x20?',_0x4ca236)[_0x5290('0x12')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x5290('0x12')](_0x5290('0x2a'),selectNotIn(_0x13246f,_0x70f6d5,_0x45f7ce,_0x5290('0x1c'),['\x22always\x22',_0x5290('0x2b')]))[_0x5290('0x12')](_0x5290('0x2a'),selectNotIn(_0x13246f,_0x70f6d5,_0x45f7ce,_0x5290('0x1c'),[_0x5290('0x2c')])))[_0x5290('0x2d')]();}function insertCmHopperBlack(_0x1380b5,_0x4c9132,_0x43c29d,_0x3b103c){var _0x1dbecc=[_0x5290('0x14'),'cm_contacts.id',_0x5290('0x17'),_0x4c9132+'.'+_0x3b103c,_0x5290('0x2e'),_0x5290('0x18')];return squel[_0x5290('0x1a')]()[_0x5290('0x1b')]('cm_hopper_black')[_0x5290('0x1d')](['phone',_0x5290('0x1f'),'ListId',_0x3b103c,_0x5290('0x21'),_0x5290('0x22')],squel[_0x5290('0xe')]()[_0x5290('0x25')](_0x1dbecc)[_0x5290('0x26')](_0x4c9132)[_0x5290('0x10')]('cm_contacts',null,_0x5290('0x28')+_0x4c9132+_0x5290('0x29'))['join'](_0x43c29d,null,_0x43c29d+'.id\x20=\x20'+_0x4c9132+'.'+_0x3b103c)[_0x5290('0x12')](_0x4c9132+_0x5290('0x2f'),_0x1380b5)[_0x5290('0x12')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x5290('0x12')](_0x5290('0x2a'),squel[_0x5290('0xe')]()[_0x5290('0x30')]('phone')[_0x5290('0x26')](_0x5290('0x31'))[_0x5290('0x12')]('ListId\x20=\x20?',_0x1380b5)[_0x5290('0x12')](_0x3b103c+_0x5290('0x32'),_0x4c9132+'.'+_0x3b103c)))['toString']();}function insertCmContact(_0x4db081,_0x1c4a16,_0x30e823,_0x3113d8){var _0x2a327b=_['concat'](_[_0x5290('0x33')](_0x3113d8),['ListId','CompanyId',_0x5290('0x21'),_0x5290('0x22')]);return squel[_0x5290('0x1a')]()[_0x5290('0x1b')]('cm_contacts')[_0x5290('0x1d')](_0x2a327b,squel['select']()[_0x5290('0x25')](_0x2a327b)['from'](_0x1c4a16)[_0x5290('0x12')]('('+_0x30e823[_0x5290('0x10')](',')+_0x5290('0x34'),squel[_0x5290('0xe')]()[_0x5290('0x25')](_0x30e823)[_0x5290('0x26')](_0x5290('0x27'))[_0x5290('0x12')](_0x5290('0x35'),_0x4db081)[_0x5290('0x12')]('deletedAt\x20IS\x20NULL'))[_0x5290('0x12')](_0x5290('0x36'),squel[_0x5290('0xe')]()['field'](_0x5290('0x37'),_0x5290('0x38'))[_0x5290('0x26')](_0x1c4a16)[_0x5290('0x39')](_0x30e823[_0x5290('0x10')](','))))[_0x5290('0x2d')]();}function handleStop(){logger[_0x5290('0x3a')](_0x5290('0x3b'));stopped=!![];}function handleUncaughtException(_0x2c8951){logger[_0x5290('0x3c')](_0x2c8951[_0x5290('0x3d')]);process['exit'](0x1);}function handleError(_0x12f3ce,_0x35efed){stats[_0x5290('0x3e')][_0x5290('0x3f')]({'name':_0x35efed[_0x5290('0x40')],'message':_0x35efed[_0x5290('0x3d')],'row':_0x12f3ce});}function handleQuery(_0x6d3743){logger[_0x5290('0x3a')](_0x6d3743);return db[_0x5290('0x41')][_0x5290('0x42')](_0x6d3743)[_0x5290('0x43')](function(_0x5d100b){results[_0x5290('0x3f')](_0x5d100b);})[_0x5290('0x44')](function(_0x2ba979){logger['error'](_0x2ba979[_0x5290('0x3d')]);});}function main(_0x51b435,_0x3ef366,_0x2833e9,_0x267d89){logger[_0x5290('0x3a')](_0x5290('0x45'),_0x51b435,JSON[_0x5290('0x46')](_0x3ef366));process[_0x5290('0x47')]('start');var _0x60143d=_0x3ef366['binding'];var _0x3a1d46=_0x3ef366['socket_timestamp'];var _0x5c2b62=path[_0x5290('0x10')](config[_0x5290('0x48')],_0x5290('0x49'),_0x3a1d46+_0x5290('0x4a'));var _0x43b6b7=_[_0x5290('0x33')](_0x60143d)[_0x5290('0x10')]();logger[_0x5290('0x3a')](_0x5290('0x4b'),_0x43b6b7);fs['writeFileSync'](_0x5c2b62,_0x43b6b7+'\x0a');Papa[_0x5290('0x4c')](fs[_0x5290('0x4d')](_0x51b435),{'header':!![],'skipEmptyLines':!![],'step':function(_0x1ae523,_0x584381){try{for(var _0x378b41=0x0,_0x3bfb69=[];_0x378b41<_0x1ae523[_0x5290('0x4e')][_0x5290('0x4f')];_0x378b41++){stats[_0x5290('0x50')]+=0x1;if(_0x1ae523[_0x5290('0x3e')][_0x378b41]){handleError(_0x1ae523[_0x5290('0x4e')][_0x378b41],_0x1ae523[_0x5290('0x3e')][_0x378b41]);}else{var _0x1e0e7b=[];for(var _0x3097e9 in _0x60143d){if(_0x60143d[_0x5290('0x51')](_0x3097e9)){if(_0x1ae523['data'][_0x378b41][_0x60143d[_0x3097e9]]){var _0x25fdfb=_['trim'](_0x1ae523[_0x5290('0x4e')][_0x378b41][_0x60143d[_0x3097e9]][_0x5290('0x52')](/"/g,'\x27'));switch(_0x3097e9){case _0x5290('0x1e'):var _0x517b6c=moment(_0x25fdfb,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x517b6c['isValid']()){_0x3bfb69['push']('\x22'+_0x25fdfb+'\x22');}else{_0x1e0e7b[_0x5290('0x3f')](_0x5290('0x53'));}break;case _0x5290('0x54'):var _0x5496ed=parseInt(_0x25fdfb);_0x25fdfb=_[_0x5290('0x55')](_0x5496ed)||_0x5496ed<0x0||_0x5496ed>0x4?_0x267d89?0x3:0x2:_0x5496ed;_0x3bfb69['push']('\x22'+_0x25fdfb+'\x22');break;case _0x5290('0x23'):var _0x1ea9a2=parseInt(_0x25fdfb);if(_['isNumber'](_0x1ea9a2)&&_[_0x5290('0x56')](_0x2833e9,_0x1ea9a2)){_0x3bfb69[_0x5290('0x3f')]('\x22'+_0x1ea9a2+'\x22');}else{_0x1e0e7b[_0x5290('0x3f')]('agent\x20not\x20exists');}break;case _0x5290('0x57'):if(isEmail(_0x25fdfb)){_0x3bfb69[_0x5290('0x3f')]('\x22'+_0x25fdfb+'\x22');}else{_0x1e0e7b[_0x5290('0x3f')](_0x5290('0x58'));}break;case _0x5290('0x59'):var _0x157eda=moment(_0x25fdfb,_0x5290('0x5a'),!![]);if(_0x157eda[_0x5290('0x5b')]()){_0x3bfb69[_0x5290('0x3f')]('\x22'+_0x25fdfb+'\x22');}else{_0x1e0e7b['push'](_0x5290('0x5c'));}break;default:_0x3bfb69['push']('\x22'+_0x25fdfb+'\x22');}}else{switch(_0x3097e9){case _0x5290('0x5d'):case _0x5290('0xf'):_0x1e0e7b[_0x5290('0x3f')](_0x3097e9+_0x5290('0x5e'));break;default:_0x3bfb69[_0x5290('0x3f')]('\x22\x22');}}}}if(_0x1e0e7b[_0x5290('0x4f')]){handleError(_0x1ae523[_0x5290('0x4e')][_0x378b41],{'code':_0x5290('0x5f'),'message':_0x1e0e7b[_0x5290('0x10')]()});}else{fs[_0x5290('0x60')](_0x5c2b62,_0x3bfb69[_0x5290('0x10')]()+'\x0a');}_0x3bfb69=[];}if(!(stats['rows']%0xc8)){socket[_0x5290('0x61')](_0x5290('0x62')+_0x3a1d46,stats);stats[_0x5290('0x3e')]=[];}}if(stopped){logger[_0x5290('0x3a')]('Abort\x20parser');_0x584381[_0x5290('0x63')]();}}catch(_0x40b18f){handleError(_0x1ae523[_0x5290('0x4e')][_0x378b41],{'code':'SystemError','message':_0x40b18f[_0x5290('0x3d')]});logger[_0x5290('0x3c')](_0x5290('0x64'),_0x40b18f[_0x5290('0x3d')]);}},'complete':function(){try{var _0x2342e5=[];var _0x538466=_0x5290('0x27');if(_0x3ef366[_0x5290('0x65')]&&_0x3ef366['duplicates'][_0x5290('0x4f')]){_0x538466=_0x5290('0x66')+_0x3a1d46;_0x2342e5[_0x5290('0x3f')](_0x5290('0x67')+_0x538466+_0x5290('0x68'));}var _0x152692=util[_0x5290('0x69')](_0x5290('0x6a'),_0x5c2b62,_0x538466,_0x43b6b7,_0x3ef366[_0x5290('0x20')],_0x3ef366[_0x5290('0x6b')]||null,NOW,NOW);if(_[_0x5290('0x6c')](_0x60143d[_0x5290('0x1e')])){_0x152692+=_0x5290('0x6d');}_0x2342e5[_0x5290('0x3f')](_0x152692);if(_0x3ef366[_0x5290('0x65')]&&_0x3ef366[_0x5290('0x65')][_0x5290('0x4f')]){_0x2342e5[_0x5290('0x3f')](insertCmContact(_0x3ef366['ListId'],_0x538466,_0x3ef366[_0x5290('0x65')],_0x60143d));_0x2342e5[_0x5290('0x3f')](_0x5290('0x6e')+_0x538466+';');}_0x2342e5[_0x5290('0x3f')](insertCmHopper(_0x3ef366[_0x5290('0x20')],_0x5290('0x6f'),_0x5290('0x70'),_0x5290('0x71'),_0x267d89));_0x2342e5[_0x5290('0x3f')](insertCmHopperBlack(_0x3ef366[_0x5290('0x20')],_0x5290('0x72'),'voice_queues','VoiceQueueId'));_0x2342e5[_0x5290('0x3f')](insertCmHopper(_0x3ef366[_0x5290('0x20')],_0x5290('0x73'),_0x5290('0x74'),_0x5290('0x75'),_0x267d89));_0x2342e5[_0x5290('0x3f')](insertCmHopperBlack(_0x3ef366[_0x5290('0x20')],'campaigns_has_cm_blacklists','campaigns',_0x5290('0x75')));BPromise['each'](_0x2342e5,handleQuery)[_0x5290('0x76')](function(_0x45ebd3){stats[_0x5290('0x77')]=!![];stats[_0x5290('0x78')]=_0x3ef366['duplicates']&&_0x3ef366['duplicates'][_0x5290('0x4f')]?results[0x2][_0x5290('0x78')]:results[0x0][_0x5290('0x78')];socket[_0x5290('0x61')]('contact:import:'+_0x3a1d46,stats);fs[_0x5290('0x79')](_0x51b435);fs[_0x5290('0x79')](_0x5c2b62);process['exit'](0x0);})['catch'](function(_0x281494){logger['error'](_0x281494[_0x5290('0x3d')]);process[_0x5290('0x7a')](0x1);});}catch(_0x58f3bb){logger[_0x5290('0x3c')](_0x5290('0x7b'),_0x58f3bb[_0x5290('0x3d')]);process[_0x5290('0x7a')](0x1);}},'error':function(_0x4f3fa7,_0x87fd35,_0x46d394,_0x2bf887){throw new Error(_0x2bf887);}});}function validate(){if(process[_0x5290('0x7c')]&&process[_0x5290('0x7c')][_0x5290('0x4f')]<0x4){throw new Error(_0x5290('0x7d'));}var _0x421119=path[_0x5290('0x10')](config[_0x5290('0x48')],'server/files/tmp',process[_0x5290('0x7c')][0x2]);if(!fs['existsSync'](_0x421119)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x1bf9ea={};try{_0x1bf9ea=JSON[_0x5290('0x4c')](process['argv'][0x3]);if(!_0x1bf9ea[_0x5290('0x7e')]){throw new Error(_0x5290('0x7f'));}if(!_0x1bf9ea[_0x5290('0x7e')]['phone']){throw new Error(_0x5290('0x80'));}if(!_0x1bf9ea[_0x5290('0x7e')][_0x5290('0x5d')]){throw new Error(_0x5290('0x81'));}var _0x2ec5c4=0x0;if(_0x1bf9ea[_0x5290('0x7e')]['UserId']){_0x2ec5c4=0x1;}if(!_0x1bf9ea['ListId']){throw new Error(_0x5290('0x82'));}}catch(_0x2426fd){throw new Error(_0x5290('0x83'));}var _0x3be5fd=[];try{_0x3be5fd=_[_0x5290('0x84')](JSON[_0x5290('0x4c')](process[_0x5290('0x7c')][0x4]),'id');}catch(_0x2d1902){logger['info']('No\x20agent\x20available');}main(_0x421119,_0x1bf9ea,_0x3be5fd,_0x2ec5c4);}validate();process['on'](_0x5290('0x85'),handleStop);process['on'](_0x5290('0x86'),handleUncaughtException);
\ No newline at end of file
+var _0x7bc5=['uncaughtException','path','util','bluebird','moment','squel','ioredis','../../../config/environment','../../../config/logger','redis','defaults','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','join','.id\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','phone','scheduledat','ListId','updatedAt','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22onlyIfOpen\x22','\x22always\x22','toString','insert','cm_hopper_black','ContactId','createdAt','from','ListId\x20=\x20?','keys','CompanyId','fromQuery',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','group','info','Received\x20SIGINT','message','exit','errors','push','spread','catch','error','main','stringify','send','start','binding','socket_timestamp','root','server/files/tmp','.csv','writeFileSync','data','length','rows','hasOwnProperty','trim','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','agent\x20not\x20exists','email','email\x20wrong\x20format','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','abort','SystemError','step','duplicates','cm_contacts_','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','campaigns_has_cm_lists','campaigns','CampaignId','campaigns_has_cm_blacklists','each','finish','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','parse','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT'];(function(_0x1669c6,_0x2d97cb){var _0x2763c8=function(_0x54b0ca){while(--_0x54b0ca){_0x1669c6['push'](_0x1669c6['shift']());}};_0x2763c8(++_0x2d97cb);}(_0x7bc5,0x109));var _0x57bc=function(_0x148879,_0x5b4c11){_0x148879=_0x148879-0x0;var _0x4f7027=_0x7bc5[_0x148879];return _0x4f7027;};'use strict';var fs=require('fs');var path=require(_0x57bc('0x0'));var _=require('lodash');var Papa=require('papaparse');var util=require(_0x57bc('0x1'));var BPromise=require(_0x57bc('0x2'));var moment=require(_0x57bc('0x3'));var squel=require(_0x57bc('0x4'));var Redis=require(_0x57bc('0x5'));var db=require('../../../mysqldb')['db'];var config=require(_0x57bc('0x6'));var logger=require(_0x57bc('0x7'))('import');config[_0x57bc('0x8')]=_[_0x57bc('0x9')](config[_0x57bc('0x8')],{'host':_0x57bc('0xa'),'port':0x18eb});var socket=require(_0x57bc('0xb'))(new Redis(config[_0x57bc('0x8')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x57bc('0xc')](_0x57bc('0xd'));function isEmail(_0x5a8eae){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0x57bc('0xe')](_0x5a8eae);}function selectNotIn(_0x267a44,_0x50fc8e,_0x46dda0,_0x229d5f,_0x4ddb73){return squel[_0x57bc('0xf')]()[_0x57bc('0x10')]('phone')['from'](_0x229d5f)[_0x57bc('0x11')](_0x50fc8e,null,_0x50fc8e+_0x57bc('0x12')+_0x229d5f+'.'+_0x46dda0)['where'](_0x229d5f+'.'+_0x46dda0+'\x20=\x20'+_0x267a44+'.'+_0x46dda0)[_0x57bc('0x13')](_0x50fc8e+_0x57bc('0x14')+_0x4ddb73[_0x57bc('0x11')]()+')');}function insertCmHopper(_0x2bc776,_0x138a32,_0x6370f,_0x1bc568,_0x4c8484){var _0x322611=[_0x57bc('0x15'),_0x57bc('0x16'),_0x57bc('0x17'),_0x57bc('0x18'),_0x138a32+'.'+_0x1bc568,_0x57bc('0x19'),_0x57bc('0x1a'),_0x57bc('0x1b'),_0x57bc('0x1c'),'\x22'+_0x4c8484+'\x22'];return squel['insert']()[_0x57bc('0x1d')](_0x57bc('0x1e'))['fromQuery']([_0x57bc('0x1f'),_0x57bc('0x20'),'ContactId',_0x57bc('0x21'),_0x1bc568,'createdAt',_0x57bc('0x22'),'priority',_0x57bc('0x23'),_0x57bc('0x24')],squel[_0x57bc('0xf')]()[_0x57bc('0x25')](_0x322611)['from'](_0x138a32)[_0x57bc('0x11')](_0x57bc('0x26'),null,_0x57bc('0x27')+_0x138a32+_0x57bc('0x28'))[_0x57bc('0x11')](_0x6370f,null,_0x6370f+_0x57bc('0x12')+_0x138a32+'.'+_0x1bc568)[_0x57bc('0x13')](_0x138a32+_0x57bc('0x29'),_0x2bc776)[_0x57bc('0x13')](_0x57bc('0x2a'),NOW)['where'](_0x57bc('0x2b'),selectNotIn(_0x138a32,_0x6370f,_0x1bc568,_0x57bc('0x1e'),['\x22always\x22',_0x57bc('0x2c')]))[_0x57bc('0x13')](_0x57bc('0x2b'),selectNotIn(_0x138a32,_0x6370f,_0x1bc568,_0x57bc('0x1e'),[_0x57bc('0x2d')])))[_0x57bc('0x2e')]();}function insertCmHopperBlack(_0x5c8345,_0x593bd4,_0x26957e,_0x446e09){var _0x5cfaa9=[_0x57bc('0x15'),_0x57bc('0x17'),'cm_contacts.ListId',_0x593bd4+'.'+_0x446e09,_0x57bc('0x19'),_0x57bc('0x1a')];return squel[_0x57bc('0x2f')]()[_0x57bc('0x1d')](_0x57bc('0x30'))['fromQuery'](['phone',_0x57bc('0x31'),_0x57bc('0x21'),_0x446e09,_0x57bc('0x32'),_0x57bc('0x22')],squel[_0x57bc('0xf')]()[_0x57bc('0x25')](_0x5cfaa9)[_0x57bc('0x33')](_0x593bd4)[_0x57bc('0x11')](_0x57bc('0x26'),null,_0x57bc('0x27')+_0x593bd4+_0x57bc('0x28'))[_0x57bc('0x11')](_0x26957e,null,_0x26957e+_0x57bc('0x12')+_0x593bd4+'.'+_0x446e09)[_0x57bc('0x13')](_0x593bd4+_0x57bc('0x29'),_0x5c8345)['where'](_0x57bc('0x2a'),NOW)[_0x57bc('0x13')](_0x57bc('0x2b'),squel['select']()[_0x57bc('0x10')](_0x57bc('0x1f'))[_0x57bc('0x33')](_0x57bc('0x30'))[_0x57bc('0x13')](_0x57bc('0x34'),_0x5c8345)['where'](_0x446e09+'\x20=\x20?',_0x593bd4+'.'+_0x446e09)))[_0x57bc('0x2e')]();}function insertCmContact(_0x529e63,_0x28b678,_0x27dc1e,_0x3af626){var _0x217024=_['concat'](_[_0x57bc('0x35')](_0x3af626),['ListId',_0x57bc('0x36'),_0x57bc('0x32'),'updatedAt']);return squel[_0x57bc('0x2f')]()[_0x57bc('0x1d')](_0x57bc('0x26'))[_0x57bc('0x37')](_0x217024,squel[_0x57bc('0xf')]()[_0x57bc('0x25')](_0x217024)[_0x57bc('0x33')](_0x28b678)['where']('('+_0x27dc1e[_0x57bc('0x11')](',')+_0x57bc('0x38'),squel['select']()[_0x57bc('0x25')](_0x27dc1e)[_0x57bc('0x33')](_0x57bc('0x26'))['where'](_0x57bc('0x34'),_0x529e63)[_0x57bc('0x13')](_0x57bc('0x39')))[_0x57bc('0x13')](_0x57bc('0x3a'),squel[_0x57bc('0xf')]()['field'](_0x57bc('0x3b'),_0x57bc('0x3c'))[_0x57bc('0x33')](_0x28b678)[_0x57bc('0x3d')](_0x27dc1e['join'](','))))[_0x57bc('0x2e')]();}function handleStop(){logger[_0x57bc('0x3e')](_0x57bc('0x3f'));stopped=!![];}function handleUncaughtException(_0x4bb4bc){logger['error'](_0x4bb4bc[_0x57bc('0x40')]);process[_0x57bc('0x41')](0x1);}function handleError(_0x3b4415,_0x216711){stats[_0x57bc('0x42')][_0x57bc('0x43')]({'name':_0x216711['code'],'message':_0x216711['message'],'row':_0x3b4415});}function handleQuery(_0x560929){logger[_0x57bc('0x3e')](_0x560929);return db['sequelize']['query'](_0x560929)[_0x57bc('0x44')](function(_0x1c141f){results['push'](_0x1c141f);})[_0x57bc('0x45')](function(_0x4a5b8a){logger[_0x57bc('0x46')](_0x4a5b8a['message']);});}function main(_0x1a0463,_0x3b84db,_0x18defa,_0x4570bd){logger['info'](_0x57bc('0x47'),_0x1a0463,JSON[_0x57bc('0x48')](_0x3b84db));process[_0x57bc('0x49')](_0x57bc('0x4a'));var _0x3ca027=_0x3b84db[_0x57bc('0x4b')];var _0x48a88c=_0x3b84db[_0x57bc('0x4c')];var _0x3084b2=path[_0x57bc('0x11')](config[_0x57bc('0x4d')],_0x57bc('0x4e'),_0x48a88c+_0x57bc('0x4f'));var _0x37065d=_[_0x57bc('0x35')](_0x3ca027)[_0x57bc('0x11')]();logger[_0x57bc('0x3e')]('header',_0x37065d);fs[_0x57bc('0x50')](_0x3084b2,_0x37065d+'\x0a');Papa['parse'](fs['createReadStream'](_0x1a0463),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2acd00,_0x68586f){try{for(var _0x404fbf=0x0,_0x118faf=[];_0x404fbf<_0x2acd00[_0x57bc('0x51')][_0x57bc('0x52')];_0x404fbf++){stats[_0x57bc('0x53')]+=0x1;if(_0x2acd00[_0x57bc('0x42')][_0x404fbf]){handleError(_0x2acd00[_0x57bc('0x51')][_0x404fbf],_0x2acd00[_0x57bc('0x42')][_0x404fbf]);}else{var _0x25e740=[];for(var _0x222949 in _0x3ca027){if(_0x3ca027[_0x57bc('0x54')](_0x222949)){if(_0x2acd00[_0x57bc('0x51')][_0x404fbf][_0x3ca027[_0x222949]]){var _0x21f3a6=_[_0x57bc('0x55')](_0x2acd00['data'][_0x404fbf][_0x3ca027[_0x222949]]['replace'](/"/g,'\x27'));switch(_0x222949){case _0x57bc('0x20'):var _0x46df72=moment(_0x21f3a6,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x46df72[_0x57bc('0x56')]()){_0x118faf['push']('\x22'+_0x21f3a6+'\x22');}else{_0x25e740[_0x57bc('0x43')](_0x57bc('0x57'));}break;case'priority':var _0x574f98=parseInt(_0x21f3a6);_0x21f3a6=_[_0x57bc('0x58')](_0x574f98)||_0x574f98<0x0||_0x574f98>0x4?_0x4570bd?0x3:0x2:_0x574f98;_0x118faf['push']('\x22'+_0x21f3a6+'\x22');break;case'UserId':var _0x1c9b5d=parseInt(_0x21f3a6);if(_[_0x57bc('0x59')](_0x1c9b5d)&&_['includes'](_0x18defa,_0x1c9b5d)){_0x118faf[_0x57bc('0x43')]('\x22'+_0x1c9b5d+'\x22');}else{_0x25e740[_0x57bc('0x43')](_0x57bc('0x5a'));}break;case _0x57bc('0x5b'):if(isEmail(_0x21f3a6)){_0x118faf[_0x57bc('0x43')]('\x22'+_0x21f3a6+'\x22');}else{_0x25e740[_0x57bc('0x43')](_0x57bc('0x5c'));}break;case'dateOfBirth':var _0x2d3253=moment(_0x21f3a6,_0x57bc('0x5d'),!![]);if(_0x2d3253[_0x57bc('0x56')]()){_0x118faf[_0x57bc('0x43')]('\x22'+_0x21f3a6+'\x22');}else{_0x25e740[_0x57bc('0x43')](_0x57bc('0x5e'));}break;default:_0x118faf[_0x57bc('0x43')]('\x22'+_0x21f3a6+'\x22');}}else{switch(_0x222949){case'firstName':case _0x57bc('0x1f'):_0x25e740['push'](_0x222949+_0x57bc('0x5f'));break;default:_0x118faf['push']('\x22\x22');}}}}if(_0x25e740[_0x57bc('0x52')]){handleError(_0x2acd00[_0x57bc('0x51')][_0x404fbf],{'code':_0x57bc('0x60'),'message':_0x25e740[_0x57bc('0x11')]()});}else{fs[_0x57bc('0x61')](_0x3084b2,_0x118faf[_0x57bc('0x11')]()+'\x0a');}_0x118faf=[];}if(!(stats[_0x57bc('0x53')]%0xc8)){socket[_0x57bc('0x62')](_0x57bc('0x63')+_0x48a88c,stats);stats['errors']=[];}}if(stopped){logger[_0x57bc('0x3e')](_0x57bc('0x64'));_0x68586f[_0x57bc('0x65')]();}}catch(_0x32a430){handleError(_0x2acd00[_0x57bc('0x51')][_0x404fbf],{'code':_0x57bc('0x66'),'message':_0x32a430['message']});logger['error'](_0x57bc('0x67'),_0x32a430[_0x57bc('0x40')]);}},'complete':function(){try{var _0xb263e9=[];var _0x3fe35b=_0x57bc('0x26');if(_0x3b84db[_0x57bc('0x68')]&&_0x3b84db[_0x57bc('0x68')]['length']){_0x3fe35b=_0x57bc('0x69')+_0x48a88c;_0xb263e9[_0x57bc('0x43')]('CREATE\x20TABLE\x20'+_0x3fe35b+'\x20LIKE\x20cm_contacts;');}var _0x40a30d=util[_0x57bc('0xc')]('LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',_0x3084b2,_0x3fe35b,_0x37065d,_0x3b84db[_0x57bc('0x21')],_0x3b84db[_0x57bc('0x36')]||null,NOW,NOW);if(_[_0x57bc('0x6a')](_0x3ca027['scheduledat'])){_0x40a30d+=_0x57bc('0x6b');}_0xb263e9['push'](_0x40a30d);if(_0x3b84db[_0x57bc('0x68')]&&_0x3b84db[_0x57bc('0x68')][_0x57bc('0x52')]){_0xb263e9[_0x57bc('0x43')](insertCmContact(_0x3b84db[_0x57bc('0x21')],_0x3fe35b,_0x3b84db[_0x57bc('0x68')],_0x3ca027));_0xb263e9[_0x57bc('0x43')](_0x57bc('0x6c')+_0x3fe35b+';');}_0xb263e9[_0x57bc('0x43')](insertCmHopper(_0x3b84db[_0x57bc('0x21')],_0x57bc('0x6d'),_0x57bc('0x6e'),_0x57bc('0x6f'),_0x4570bd));_0xb263e9[_0x57bc('0x43')](insertCmHopperBlack(_0x3b84db[_0x57bc('0x21')],'voice_queues_has_cm_blacklists','voice_queues',_0x57bc('0x6f')));_0xb263e9[_0x57bc('0x43')](insertCmHopper(_0x3b84db[_0x57bc('0x21')],_0x57bc('0x70'),_0x57bc('0x71'),_0x57bc('0x72'),_0x4570bd));_0xb263e9['push'](insertCmHopperBlack(_0x3b84db[_0x57bc('0x21')],_0x57bc('0x73'),'campaigns',_0x57bc('0x72')));BPromise[_0x57bc('0x74')](_0xb263e9,handleQuery)['then'](function(_0x561701){stats[_0x57bc('0x75')]=!![];stats[_0x57bc('0x76')]=_0x3b84db[_0x57bc('0x68')]&&_0x3b84db[_0x57bc('0x68')][_0x57bc('0x52')]?results[0x2]['affectedRows']:results[0x0][_0x57bc('0x76')];socket[_0x57bc('0x62')](_0x57bc('0x63')+_0x48a88c,stats);fs[_0x57bc('0x77')](_0x1a0463);fs[_0x57bc('0x77')](_0x3084b2);process[_0x57bc('0x41')](0x0);})[_0x57bc('0x45')](function(_0x52f884){logger[_0x57bc('0x46')](_0x52f884['message']);process[_0x57bc('0x41')](0x1);});}catch(_0x168b31){logger['error'](_0x57bc('0x78'),_0x168b31[_0x57bc('0x40')]);process['exit'](0x1);}},'error':function(_0x3eceec,_0x418603,_0x3de09b,_0x34a69e){throw new Error(_0x34a69e);}});}function validate(){if(process[_0x57bc('0x79')]&&process[_0x57bc('0x79')][_0x57bc('0x52')]<0x4){throw new Error(_0x57bc('0x7a'));}var _0x4cd125=path[_0x57bc('0x11')](config[_0x57bc('0x4d')],_0x57bc('0x4e'),process[_0x57bc('0x79')][0x2]);if(!fs[_0x57bc('0x7b')](_0x4cd125)){throw new Error(_0x57bc('0x7c'));}var _0x3f7290={};try{_0x3f7290=JSON[_0x57bc('0x7d')](process[_0x57bc('0x79')][0x3]);if(!_0x3f7290[_0x57bc('0x4b')]){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x3f7290[_0x57bc('0x4b')][_0x57bc('0x1f')]){throw new Error('phone\x20is\x20mandatory');}if(!_0x3f7290['binding']['firstName']){throw new Error('firstName\x20is\x20mandatory');}var _0x3ff759=0x0;if(_0x3f7290[_0x57bc('0x4b')]['UserId']){_0x3ff759=0x1;}if(!_0x3f7290['ListId']){throw new Error(_0x57bc('0x7e'));}}catch(_0x39c424){throw new Error(_0x57bc('0x7f'));}var _0x11bfc5=[];try{_0x11bfc5=_[_0x57bc('0x80')](JSON[_0x57bc('0x7d')](process['argv'][0x4]),'id');}catch(_0x16ac1c){logger['info'](_0x57bc('0x81'));}main(_0x4cd125,_0x3f7290,_0x11bfc5,_0x3ff759);}validate();process['on'](_0x57bc('0x82'),handleStop);process['on'](_0x57bc('0x83'),handleUncaughtException);
\ No newline at end of file
index 8cb33f5..1201e33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6243=['answertime','Complete\x20Time','Duration','duration','Billable\x20Time','billableseconds','getSubjects','string','voice','variable','queue','push','outbound','destcalleridnum','getDescriptions','toLowerCase','inbound','***\x20Call\x20Info\x20***','keyValue','calleridnum','Caller\x20Name','calleridname','destexten','Queue','UniqueId','***\x20Agent\x20Info\x20***','Agent\x20Name','***\x20Time\x20Info\x20***','Agent\x20Ring','agentcalledAt','Agent\x20Connect','Agent\x20Complete','agentcompleteAt','Hold\x20Time','talktime','Called\x20Number','membername','uniqueid','Date','starttime','Answer\x20Time'];(function(_0x532ac3,_0x55e608){var _0x37bd3e=function(_0x59f198){while(--_0x59f198){_0x532ac3['push'](_0x532ac3['shift']());}};_0x37bd3e(++_0x55e608);}(_0x6243,0x1f2));var _0x3624=function(_0x3aff7a,_0x2a915a){_0x3aff7a=_0x3aff7a-0x0;var _0x43d0ff=_0x6243[_0x3aff7a];return _0x43d0ff;};'use strict';exports[_0x3624('0x0')]=function(_0x165178,_0x580565){var _0x436197=[{'type':_0x3624('0x1'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x165178['toLowerCase']()){case _0x3624('0x2'):switch(_0x580565['toLowerCase']()){case'inbound':_0x436197['push']({'type':_0x3624('0x3'),'content':'','variableName':_0x3624('0x4')});_0x436197[_0x3624('0x5')]({'type':_0x3624('0x3'),'content':'','variableName':'calleridnum'});break;case _0x3624('0x6'):_0x436197[_0x3624('0x5')]({'type':_0x3624('0x1'),'content':'Outbound\x20Call','variableName':null});_0x436197[_0x3624('0x5')]({'type':_0x3624('0x3'),'content':'','variableName':_0x3624('0x7')});break;}}return _0x436197;};exports[_0x3624('0x8')]=function(_0x505c23,_0x711edd){var _0x130f5a=[];switch(_0x505c23[_0x3624('0x9')]()){case _0x3624('0x2'):switch(_0x711edd[_0x3624('0x9')]()){case _0x3624('0xa'):_0x130f5a=[{'type':_0x3624('0x1'),'content':_0x3624('0xb'),'key':null,'keyType':null,'variableName':null},{'type':_0x3624('0xc'),'content':'','key':'Caller\x20Number','keyType':_0x3624('0x3'),'variableName':_0x3624('0xd')},{'type':'keyValue','content':'','key':_0x3624('0xe'),'keyType':_0x3624('0x3'),'variableName':_0x3624('0xf')},{'type':_0x3624('0xc'),'content':'','key':'Call\x20To','keyType':_0x3624('0x3'),'variableName':_0x3624('0x10')},{'type':_0x3624('0xc'),'content':'','key':_0x3624('0x11'),'keyType':_0x3624('0x3'),'variableName':_0x3624('0x4')},{'type':'keyValue','content':'','key':_0x3624('0x12'),'keyType':_0x3624('0x3'),'variableName':'uniqueid'},{'type':_0x3624('0xc'),'content':'','key':'Date','keyType':'variable','variableName':'agentcalledAt'},{'type':'string','content':_0x3624('0x13'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x3624('0x14'),'keyType':'variable','variableName':'destcalleridname'},{'type':_0x3624('0xc'),'content':'','key':'Agent\x20Number','keyType':'variable','variableName':_0x3624('0x7')},{'type':'string','content':_0x3624('0x15'),'key':null,'keyType':null,'variableName':null},{'type':_0x3624('0xc'),'content':'','key':_0x3624('0x16'),'keyType':'variable','variableName':_0x3624('0x17')},{'type':'keyValue','content':'','key':_0x3624('0x18'),'keyType':_0x3624('0x3'),'variableName':'agentconnectAt'},{'type':_0x3624('0xc'),'content':'','key':_0x3624('0x19'),'keyType':'variable','variableName':_0x3624('0x1a')},{'type':'keyValue','content':'','key':_0x3624('0x1b'),'keyType':_0x3624('0x3'),'variableName':'holdtime'},{'type':_0x3624('0xc'),'content':'','key':'Talk\x20Time','keyType':_0x3624('0x3'),'variableName':_0x3624('0x1c')}];break;case _0x3624('0x6'):_0x130f5a=[{'type':_0x3624('0x1'),'content':_0x3624('0xb'),'variableName':null},{'type':'keyValue','content':'','key':_0x3624('0x1d'),'keyType':_0x3624('0x3'),'keyContent':'','variableName':_0x3624('0x7')},{'type':_0x3624('0xc'),'content':'','key':'Member\x20Name','keyType':_0x3624('0x3'),'keyContent':'','variableName':_0x3624('0x1e')},{'type':_0x3624('0xc'),'content':'','key':'UniqueId','keyType':_0x3624('0x3'),'keyContent':'','variableName':_0x3624('0x1f')},{'type':_0x3624('0xc'),'content':'','key':_0x3624('0x20'),'keyType':_0x3624('0x3'),'keyContent':'','variableName':_0x3624('0x21')},{'type':'string','content':_0x3624('0x15')},{'type':_0x3624('0xc'),'content':'','key':_0x3624('0x22'),'keyType':_0x3624('0x3'),'keyContent':'','variableName':_0x3624('0x23')},{'type':_0x3624('0xc'),'content':'','key':_0x3624('0x24'),'keyType':'variable','keyContent':'','variableName':'endtime'},{'type':_0x3624('0xc'),'content':'','key':_0x3624('0x25'),'keyType':_0x3624('0x3'),'keyContent':'','variableName':_0x3624('0x26')},{'type':_0x3624('0xc'),'content':'','key':_0x3624('0x27'),'keyType':_0x3624('0x3'),'keyContent':'','variableName':_0x3624('0x28')}];break;}}return _0x130f5a;};
\ No newline at end of file
+var _0x2e91=['endtime','Duration','duration','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','inbound','push','queue','variable','calleridnum','outbound','Outbound\x20Call','destcalleridnum','voice','***\x20Call\x20Info\x20***','Caller\x20Number','keyValue','Caller\x20Name','calleridname','Call\x20To','destexten','Queue','UniqueId','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Number','Agent\x20Ring','Agent\x20Connect','Agent\x20Complete','agentcompleteAt','holdtime','talktime','Called\x20Number','Member\x20Name','membername','starttime','***\x20Time\x20Info\x20***','answertime'];(function(_0x4efe55,_0x6174ea){var _0x3a15da=function(_0x5c9566){while(--_0x5c9566){_0x4efe55['push'](_0x4efe55['shift']());}};_0x3a15da(++_0x6174ea);}(_0x2e91,0x15c));var _0x12e9=function(_0x14c598,_0x19b28f){_0x14c598=_0x14c598-0x0;var _0x583663=_0x2e91[_0x14c598];return _0x583663;};'use strict';exports[_0x12e9('0x0')]=function(_0x1072e5,_0x407e92){var _0x3e2ddb=[{'type':_0x12e9('0x1'),'content':_0x12e9('0x2'),'variableName':null}];switch(_0x1072e5[_0x12e9('0x3')]()){case'voice':switch(_0x407e92[_0x12e9('0x3')]()){case _0x12e9('0x4'):_0x3e2ddb[_0x12e9('0x5')]({'type':'variable','content':'','variableName':_0x12e9('0x6')});_0x3e2ddb['push']({'type':_0x12e9('0x7'),'content':'','variableName':_0x12e9('0x8')});break;case _0x12e9('0x9'):_0x3e2ddb[_0x12e9('0x5')]({'type':_0x12e9('0x1'),'content':_0x12e9('0xa'),'variableName':null});_0x3e2ddb[_0x12e9('0x5')]({'type':'variable','content':'','variableName':_0x12e9('0xb')});break;}}return _0x3e2ddb;};exports['getDescriptions']=function(_0x15a547,_0x8afcb1){var _0x18acf1=[];switch(_0x15a547[_0x12e9('0x3')]()){case _0x12e9('0xc'):switch(_0x8afcb1['toLowerCase']()){case'inbound':_0x18acf1=[{'type':'string','content':_0x12e9('0xd'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x12e9('0xe'),'keyType':'variable','variableName':_0x12e9('0x8')},{'type':_0x12e9('0xf'),'content':'','key':_0x12e9('0x10'),'keyType':_0x12e9('0x7'),'variableName':_0x12e9('0x11')},{'type':_0x12e9('0xf'),'content':'','key':_0x12e9('0x12'),'keyType':_0x12e9('0x7'),'variableName':_0x12e9('0x13')},{'type':_0x12e9('0xf'),'content':'','key':_0x12e9('0x14'),'keyType':_0x12e9('0x7'),'variableName':_0x12e9('0x6')},{'type':'keyValue','content':'','key':_0x12e9('0x15'),'keyType':_0x12e9('0x7'),'variableName':'uniqueid'},{'type':_0x12e9('0xf'),'content':'','key':'Date','keyType':_0x12e9('0x7'),'variableName':_0x12e9('0x16')},{'type':'string','content':_0x12e9('0x17'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x12e9('0x18'),'keyType':_0x12e9('0x7'),'variableName':_0x12e9('0x19')},{'type':_0x12e9('0xf'),'content':'','key':_0x12e9('0x1a'),'keyType':_0x12e9('0x7'),'variableName':_0x12e9('0xb')},{'type':_0x12e9('0x1'),'content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x12e9('0xf'),'content':'','key':_0x12e9('0x1b'),'keyType':_0x12e9('0x7'),'variableName':_0x12e9('0x16')},{'type':_0x12e9('0xf'),'content':'','key':_0x12e9('0x1c'),'keyType':_0x12e9('0x7'),'variableName':'agentconnectAt'},{'type':_0x12e9('0xf'),'content':'','key':_0x12e9('0x1d'),'keyType':_0x12e9('0x7'),'variableName':_0x12e9('0x1e')},{'type':_0x12e9('0xf'),'content':'','key':'Hold\x20Time','keyType':'variable','variableName':_0x12e9('0x1f')},{'type':_0x12e9('0xf'),'content':'','key':'Talk\x20Time','keyType':_0x12e9('0x7'),'variableName':_0x12e9('0x20')}];break;case _0x12e9('0x9'):_0x18acf1=[{'type':_0x12e9('0x1'),'content':_0x12e9('0xd'),'variableName':null},{'type':_0x12e9('0xf'),'content':'','key':_0x12e9('0x21'),'keyType':_0x12e9('0x7'),'keyContent':'','variableName':_0x12e9('0xb')},{'type':'keyValue','content':'','key':_0x12e9('0x22'),'keyType':_0x12e9('0x7'),'keyContent':'','variableName':_0x12e9('0x23')},{'type':_0x12e9('0xf'),'content':'','key':'UniqueId','keyType':'variable','keyContent':'','variableName':'uniqueid'},{'type':_0x12e9('0xf'),'content':'','key':'Date','keyType':'variable','keyContent':'','variableName':_0x12e9('0x24')},{'type':'string','content':_0x12e9('0x25')},{'type':'keyValue','content':'','key':'Answer\x20Time','keyType':_0x12e9('0x7'),'keyContent':'','variableName':_0x12e9('0x26')},{'type':_0x12e9('0xf'),'content':'','key':'Complete\x20Time','keyType':_0x12e9('0x7'),'keyContent':'','variableName':_0x12e9('0x27')},{'type':_0x12e9('0xf'),'content':'','key':_0x12e9('0x28'),'keyType':_0x12e9('0x7'),'keyContent':'','variableName':_0x12e9('0x29')},{'type':_0x12e9('0xf'),'content':'','key':'Billable\x20Time','keyType':_0x12e9('0x7'),'keyContent':'','variableName':_0x12e9('0x2a')}];break;}}return _0x18acf1;};
\ No newline at end of file
index 223ba8a..7479ab7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ae4=['mobile','lodash','../../config/logger','mail-interactions','fax-interactions','sms-interactions','whatsapp-interactions','upperFirst','InteractionId','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','name','role','stringify','Interaction','findOne','then','update','info','catch','error','user','query','clone','omit','html','phone','fax'];(function(_0x459b4f,_0x27d389){var _0x1538b3=function(_0x93f4af){while(--_0x93f4af){_0x459b4f['push'](_0x459b4f['shift']());}};_0x1538b3(++_0x27d389);}(_0x4ae4,0xaf));var _0x44ae=function(_0x3a60f1,_0xd1087b){_0x3a60f1=_0x3a60f1-0x0;var _0xb3c20b=_0x4ae4[_0x3a60f1];return _0xb3c20b;};'use strict';var _=require(_0x44ae('0x0'));var db=require('../../mysqldb')['db'];var loggers={'openchannel':require('../../config/logger')('openchannel-interactions'),'mail':require(_0x44ae('0x1'))(_0x44ae('0x2')),'fax':require(_0x44ae('0x1'))(_0x44ae('0x3')),'sms':require('../../config/logger')(_0x44ae('0x4')),'chat':require('../../config/logger')('chat-interactions'),'whatsapp':require('../../config/logger')(_0x44ae('0x5'))};function getInteractionId(_0x199c9d,_0x1b12ba,_0x2c9746){if(_0x199c9d&&_0x199c9d[_[_0x44ae('0x6')](_0x2c9746)+_0x44ae('0x7')]){return _0x199c9d[_[_0x44ae('0x6')](_0x2c9746)+'InteractionId'];}else if(_0x199c9d&&_0x199c9d['id']){return _0x199c9d['id'];}else if(_0x1b12ba&&_0x1b12ba['id']){return _0x1b12ba['id'];}else{return _0x44ae('0x8');}}function log(_0x2eb55a,_0x10e601,_0x319d49,_0x2f99db,_0x37f055,_0x5cb765){loggers[_0x37f055[_0x44ae('0x9')]()][_0x2eb55a](_0x44ae('0xa'),_0x5cb765['toUpperCase'](),_0x10e601?_0x10e601['id']:null,_0x10e601?_0x10e601[_0x44ae('0xb')]:null,_0x10e601?_0x10e601[_0x44ae('0xc')]:null,getInteractionId(_0x319d49,_0x2f99db,_0x37f055),_0x319d49?JSON[_0x44ae('0xd')](_0x319d49):'null');}function updateUser(_0x19cbfa,_0x4a0d07,_0x36e1e9,_0x1fe3d4,_0x976b59){db[_[_0x44ae('0x6')](_0x1fe3d4)+_0x44ae('0xe')][_0x44ae('0xf')]({'where':{'id':getInteractionId(_0x4a0d07,_0x36e1e9,_0x1fe3d4)}})[_0x44ae('0x10')](function(_0x489c1a){if(_0x489c1a){return _0x489c1a[_0x44ae('0x11')]({'UserId':_0x19cbfa?_0x19cbfa['id']:null});}})[_0x44ae('0x10')](function(_0x3465d1){if(_0x3465d1){log(_0x44ae('0x12'),_0x19cbfa,_0x4a0d07,_0x36e1e9,_0x1fe3d4,_0x976b59);}})[_0x44ae('0x13')](function(){log(_0x44ae('0x14'),_0x19cbfa,_0x4a0d07,_0x36e1e9,_0x1fe3d4,_0x976b59);});}exports['tracked']=function(_0x1f4a20,_0x1b7610){return function(_0x47b98,_0x2df961,_0x11345a){var _0x268992=_0x47b98[_0x44ae('0x15')];var _0x2b4265={};var _0x59f14b=_0x47b98[_0x44ae('0x16')];if(_0x2b4265){_0x2b4265=_[_0x44ae('0x17')](_0x47b98['body']);_0x2b4265=_[_0x44ae('0x18')](_0x2b4265,['body',_0x44ae('0x19'),_0x44ae('0x1a'),_0x44ae('0x1b'),_0x44ae('0x1c')]);}updateUser(_0x268992,_0x2b4265,_0x59f14b,_0x1f4a20,_0x1b7610);_0x11345a(null);};};
\ No newline at end of file
+var _0x7ea5=['InteractionId','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','role','stringify','null','Interaction','then','update','info','catch','error','tracked','user','clone','body','html','phone','fax','mobile','lodash','../../mysqldb','../../config/logger','openchannel-interactions','fax-interactions','upperFirst'];(function(_0x4b8984,_0x242464){var _0x851b84=function(_0x1b8c2e){while(--_0x1b8c2e){_0x4b8984['push'](_0x4b8984['shift']());}};_0x851b84(++_0x242464);}(_0x7ea5,0x139));var _0x57ea=function(_0x5193f5,_0x53b951){_0x5193f5=_0x5193f5-0x0;var _0x295cce=_0x7ea5[_0x5193f5];return _0x295cce;};'use strict';var _=require(_0x57ea('0x0'));var db=require(_0x57ea('0x1'))['db'];var loggers={'openchannel':require(_0x57ea('0x2'))(_0x57ea('0x3')),'mail':require('../../config/logger')('mail-interactions'),'fax':require(_0x57ea('0x2'))(_0x57ea('0x4')),'sms':require('../../config/logger')('sms-interactions'),'chat':require('../../config/logger')('chat-interactions'),'whatsapp':require(_0x57ea('0x2'))('whatsapp-interactions')};function getInteractionId(_0x54bd30,_0x21e7f0,_0x4729ef){if(_0x54bd30&&_0x54bd30[_[_0x57ea('0x5')](_0x4729ef)+_0x57ea('0x6')]){return _0x54bd30[_[_0x57ea('0x5')](_0x4729ef)+_0x57ea('0x6')];}else if(_0x54bd30&&_0x54bd30['id']){return _0x54bd30['id'];}else if(_0x21e7f0&&_0x21e7f0['id']){return _0x21e7f0['id'];}else{return _0x57ea('0x7');}}function log(_0x1a7455,_0x43bdd8,_0x259240,_0x6462b0,_0x3b4904,_0x9422c6){loggers[_0x3b4904[_0x57ea('0x8')]()][_0x1a7455](_0x57ea('0x9'),_0x9422c6[_0x57ea('0xa')](),_0x43bdd8?_0x43bdd8['id']:null,_0x43bdd8?_0x43bdd8[_0x57ea('0xb')]:null,_0x43bdd8?_0x43bdd8[_0x57ea('0xc')]:null,getInteractionId(_0x259240,_0x6462b0,_0x3b4904),_0x259240?JSON[_0x57ea('0xd')](_0x259240):_0x57ea('0xe'));}function updateUser(_0x14761e,_0x1348bd,_0x2dfd6c,_0x259816,_0x4a77da){db[_[_0x57ea('0x5')](_0x259816)+_0x57ea('0xf')]['findOne']({'where':{'id':getInteractionId(_0x1348bd,_0x2dfd6c,_0x259816)}})[_0x57ea('0x10')](function(_0x1948ac){if(_0x1948ac){return _0x1948ac[_0x57ea('0x11')]({'UserId':_0x14761e?_0x14761e['id']:null});}})[_0x57ea('0x10')](function(_0x14d706){if(_0x14d706){log(_0x57ea('0x12'),_0x14761e,_0x1348bd,_0x2dfd6c,_0x259816,_0x4a77da);}})[_0x57ea('0x13')](function(){log(_0x57ea('0x14'),_0x14761e,_0x1348bd,_0x2dfd6c,_0x259816,_0x4a77da);});}exports[_0x57ea('0x15')]=function(_0x141f03,_0x45d50d){return function(_0x490be9,_0x40e8d5,_0x497b1a){var _0x552332=_0x490be9[_0x57ea('0x16')];var _0x1a72ce={};var _0x355bab=_0x490be9['query'];if(_0x1a72ce){_0x1a72ce=_[_0x57ea('0x17')](_0x490be9[_0x57ea('0x18')]);_0x1a72ce=_['omit'](_0x1a72ce,['body',_0x57ea('0x19'),_0x57ea('0x1a'),_0x57ea('0x1b'),_0x57ea('0x1c')]);}updateUser(_0x552332,_0x1a72ce,_0x355bab,_0x141f03,_0x45d50d);_0x497b1a(null);};};
\ No newline at end of file
index ad41be2..7670a62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85dd=['split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','final','parse','hasOwnProperty','use','License','findOne','then','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','users','User','admin','user','crypto','util','../../mysqldb','../../config/environment','data1','license'];(function(_0x359b1e,_0x8036ad){var _0x32923a=function(_0x3f2a14){while(--_0x3f2a14){_0x359b1e['push'](_0x359b1e['shift']());}};_0x32923a(++_0x8036ad);}(_0x85dd,0x1ba));var _0xd85d=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0x85dd[_0x49ca18];return _0x145d54;};'use strict';var crypto=require(_0xd85d('0x0'));var util=require(_0xd85d('0x1'));var compose=require('composable-middleware');var db=require(_0xd85d('0x2'))['db'];var config=require(_0xd85d('0x3'));function getValueFromLicense(_0x239389,_0x36986f){if(_0x239389&&_0x36986f){if(_0x36986f[_0xd85d('0x4')]&&_0x36986f[_0xd85d('0x5')]){var _0x39d7c4=_0x36986f['data1'];var _0x1693ea=_0x36986f[_0xd85d('0x5')];var _0x1aa1ac=_0x39d7c4[_0xd85d('0x6')]('-')[0x4];var _0x520d49=_0x39d7c4[_0xd85d('0x6')]('-')[0x0];var _0x344dde=crypto[_0xd85d('0x7')](_0xd85d('0x8'),util[_0xd85d('0x9')](_0xd85d('0xa'),_0x1aa1ac,_0x39d7c4,_0x520d49));var _0x18ed0c=_0x344dde[_0xd85d('0xb')](_0x1693ea,_0xd85d('0xc'),_0xd85d('0xd'));_0x18ed0c+=_0x344dde[_0xd85d('0xe')](_0xd85d('0xd'));var _0x1b5bed=JSON[_0xd85d('0xf')](_0x18ed0c);return _0x1b5bed[_0xd85d('0x10')](_0x239389)?_0x1b5bed[_0x239389]:null;}}return null;}function isLimit(_0x5f453e,_0x216d46,_0x31e131,_0x1864fe){var _0x8dfe01=_0x216d46;return compose()[_0xd85d('0x11')](function(_0x2ee090,_0x3c2d83,_0x13b614){return db[_0xd85d('0x12')][_0xd85d('0x13')]({'where':{'id':0x1},'raw':!![]})[_0xd85d('0x14')](function(_0x59fa97){var _0x38c4c9=getValueFromLicense(_0x5f453e,_0x59fa97);return _0x38c4c9?_0x38c4c9:_0x8dfe01;})[_0xd85d('0x14')](function(_0x4f609f){_0x8dfe01=_0x4f609f;return _0x31e131['count'](_0x1864fe);})[_0xd85d('0x14')](function(_0x1980db){if(_0x1980db>=_0x8dfe01){return _0x3c2d83[_0xd85d('0x15')](0x193)[_0xd85d('0x16')]({'message':util['format'](_0xd85d('0x17'),_0x5f453e)});}_0x13b614();})['catch'](function(_0x5a919e){_0x13b614(_0x5a919e);});});}function isUserLimit(){return isLimit(_0xd85d('0x18'),0x1,db[_0xd85d('0x19')],{'where':{'$or':[{'role':_0xd85d('0x1a')},{'role':_0xd85d('0x1b')}]}});}exports['isUserLimit']=isUserLimit;
\ No newline at end of file
+var _0xb5ca=['User','admin','user','isUserLimit','crypto','util','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','update','base64','utf8','final','parse','hasOwnProperty','use','findOne','then','status','json','format','catch','users'];(function(_0x2e4e19,_0x493b50){var _0x9ba20b=function(_0x2f6456){while(--_0x2f6456){_0x2e4e19['push'](_0x2e4e19['shift']());}};_0x9ba20b(++_0x493b50);}(_0xb5ca,0x90));var _0xab5c=function(_0x591981,_0x4dc1d4){_0x591981=_0x591981-0x0;var _0x5194a5=_0xb5ca[_0x591981];return _0x5194a5;};'use strict';var crypto=require(_0xab5c('0x0'));var util=require(_0xab5c('0x1'));var compose=require(_0xab5c('0x2'));var db=require(_0xab5c('0x3'))['db'];var config=require(_0xab5c('0x4'));function getValueFromLicense(_0x3efe54,_0x4550b2){if(_0x3efe54&&_0x4550b2){if(_0x4550b2[_0xab5c('0x5')]&&_0x4550b2[_0xab5c('0x6')]){var _0x3be8db=_0x4550b2[_0xab5c('0x5')];var _0x36e538=_0x4550b2[_0xab5c('0x6')];var _0x251382=_0x3be8db[_0xab5c('0x7')]('-')[0x4];var _0x2395a3=_0x3be8db[_0xab5c('0x7')]('-')[0x0];var _0x45717b=crypto[_0xab5c('0x8')](_0xab5c('0x9'),util['format']('%s:%s:%s',_0x251382,_0x3be8db,_0x2395a3));var _0x2edf8a=_0x45717b[_0xab5c('0xa')](_0x36e538,_0xab5c('0xb'),_0xab5c('0xc'));_0x2edf8a+=_0x45717b[_0xab5c('0xd')](_0xab5c('0xc'));var _0x5bb014=JSON[_0xab5c('0xe')](_0x2edf8a);return _0x5bb014[_0xab5c('0xf')](_0x3efe54)?_0x5bb014[_0x3efe54]:null;}}return null;}function isLimit(_0x2f2471,_0x5b008a,_0x53139b,_0x56571c){var _0xdd61d1=_0x5b008a;return compose()[_0xab5c('0x10')](function(_0x4bee91,_0x9298bc,_0x45627e){return db['License'][_0xab5c('0x11')]({'where':{'id':0x1},'raw':!![]})[_0xab5c('0x12')](function(_0xd48209){var _0x27ebbe=getValueFromLicense(_0x2f2471,_0xd48209);return _0x27ebbe?_0x27ebbe:_0xdd61d1;})[_0xab5c('0x12')](function(_0x5a1c6){_0xdd61d1=_0x5a1c6;return _0x53139b['count'](_0x56571c);})[_0xab5c('0x12')](function(_0xfecc56){if(_0xfecc56>=_0xdd61d1){return _0x9298bc[_0xab5c('0x13')](0x193)[_0xab5c('0x14')]({'message':util[_0xab5c('0x15')]('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x2f2471)});}_0x45627e();})[_0xab5c('0x16')](function(_0x437fc6){_0x45627e(_0x437fc6);});});}function isUserLimit(){return isLimit(_0xab5c('0x17'),0x1,db[_0xab5c('0x18')],{'where':{'$or':[{'role':_0xab5c('0x19')},{'role':_0xab5c('0x1a')}]}});}exports[_0xab5c('0x1b')]=isUserLimit;
\ No newline at end of file
index b818540..ab822db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ea6=['$lt','<\x20?','>\x20?','$lte','<=\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','$between','utcOffset','format','hours','minutes','seconds','lodash','moment','sqlOperator','[$or]','and','[$and]','replace','split','length','shift','match','forEach','filter','indexOf','map','conditions','push','buildExpression','DATE','operator','$eq','value','$gt','add','days','YYYY-MM-DD','castTo','text','field','$ne','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','$notIn','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?'];(function(_0x3b31d1,_0x4e7c44){var _0x3d70ab=function(_0x5bca1a){while(--_0x5bca1a){_0x3b31d1['push'](_0x3b31d1['shift']());}};_0x3d70ab(++_0x4e7c44);}(_0x5ea6,0x19e));var _0x65ea=function(_0x4b418f,_0x3b6a96){_0x4b418f=_0x4b418f-0x0;var _0x2ed208=_0x5ea6[_0x4b418f];return _0x2ed208;};'use strict';var _=require(_0x65ea('0x0'));var moment=require(_0x65ea('0x1'));exports['parseSearch']=function(_0x4e6d21){var _0x37c198={'conditions':[]};_0x37c198[_0x65ea('0x2')]=_['startsWith'](_0x4e6d21,_0x65ea('0x3'))?'or':_0x65ea('0x4');var _0x5ec088=_0x4e6d21['replace'](_0x65ea('0x5'),'')[_0x65ea('0x6')](_0x65ea('0x3'),'')[_0x65ea('0x7')]('||');for(var _0x40e648=0x0;_0x40e648<_0x5ec088[_0x65ea('0x8')];_0x40e648++){var _0x5c3806=_0x5ec088[_0x40e648]['split'](':=');var _0x33e8f4=_0x5c3806[0x0];var _0x5b39ba=_0x5c3806['slice'](0x1);_0x5b39ba['forEach'](function(_0x256f28){var _0x2e219c=_0x256f28[_0x65ea('0x7')]('[')[_0x65ea('0x9')]();var _0x37f2fa=_0x256f28[_0x65ea('0xa')](/\[(.*?)\]/g);_0x37f2fa[_0x65ea('0xb')](function(_0x5b3880){var _0x3a237b=_0x5b3880['split']('[')[_0x65ea('0xc')](function(_0x32cba6){return _0x32cba6[_0x65ea('0xd')](']')>-0x1;})[_0x65ea('0xe')](function(_0x5294f1){return _0x5294f1[_0x65ea('0x7')](']')[0x0];})[0x0];_0x37c198[_0x65ea('0xf')][_0x65ea('0x10')]({'field':_0x33e8f4,'operator':_0x2e219c,'value':_0x3a237b});});});}return _0x37c198;};exports[_0x65ea('0x11')]=function(_0x3b0afe,_0x514c31,_0xfc76f4){var _0x17b5ad={};if(_0x514c31===_0x65ea('0x12')){if(_0xfc76f4[_0x65ea('0x13')]===_0x65ea('0x14')){_0xfc76f4['operator']='$between';_0xfc76f4[_0x65ea('0x15')]+=','+_0xfc76f4['value'];}else if(_['includes']([_0x65ea('0x16'),'$lte'],_0xfc76f4[_0x65ea('0x13')])){_0xfc76f4[_0x65ea('0x15')]=moment(_0xfc76f4[_0x65ea('0x15')])[_0x65ea('0x17')](0x1,_0x65ea('0x18'))['format'](_0x65ea('0x19'));}}if(_0xfc76f4[_0x65ea('0x1a')]){_0x514c31=_0xfc76f4[_0x65ea('0x1a')];_0x17b5ad[_0x65ea('0x1b')]='CAST('+_0x3b0afe+'.'+_0xfc76f4[_0x65ea('0x1c')]+'\x20AS\x20'+_0xfc76f4['castTo']+')\x20'+parseOperator(_0xfc76f4[_0x65ea('0x13')]);}else{_0x17b5ad[_0x65ea('0x1b')]=_0x3b0afe+'.'+_0xfc76f4[_0x65ea('0x1c')]+'\x20'+parseOperator(_0xfc76f4[_0x65ea('0x13')]);}if(_['includes']([_0x65ea('0x1d'),'$notIn'],_0xfc76f4[_0x65ea('0x13')]))_0x17b5ad['text']='('+_0x17b5ad[_0x65ea('0x1b')]+_0x65ea('0x1e')+_0x3b0afe+'.'+_0xfc76f4[_0x65ea('0x1c')]+_0x65ea('0x1f');_0x17b5ad[_0x65ea('0x15')]=parseValue(_0x514c31,_0xfc76f4['operator'],_0xfc76f4['value']);return _0x17b5ad;};function parseOperator(_0x5f1b71){var _0x54dfc3;switch(_0x5f1b71){case _0x65ea('0x20'):_0x54dfc3=_0x65ea('0x21');break;case _0x65ea('0x22'):_0x54dfc3=_0x65ea('0x23');break;case'$eq':_0x54dfc3=_0x65ea('0x24');break;case'$ne':_0x54dfc3=_0x65ea('0x25');break;case _0x65ea('0x26'):case _0x65ea('0x27'):case _0x65ea('0x28'):_0x54dfc3=_0x65ea('0x29');break;case _0x65ea('0x2a'):_0x54dfc3=_0x65ea('0x2b');break;case'$gt':_0x54dfc3=_0x65ea('0x2c');break;case _0x65ea('0x2d'):_0x54dfc3=_0x65ea('0x2e');break;case _0x65ea('0x2f'):_0x54dfc3=_0x65ea('0x30');break;case'$between':_0x54dfc3=_0x65ea('0x31');break;}return _0x54dfc3;}function parseValue(_0x2f39ec,_0x520716,_0x51f3f8){var _0x3805ca={'start':undefined,'end':undefined};switch(_0x520716){case _0x65ea('0x20'):case _0x65ea('0x22'):_0x3805ca[_0x65ea('0x32')]=_0x51f3f8[_0x65ea('0x7')](',');break;case _0x65ea('0x26'):_0x3805ca[_0x65ea('0x32')]='%'+_0x51f3f8+'%';break;case'$startsWith':_0x3805ca[_0x65ea('0x32')]=_0x51f3f8+'%';break;case _0x65ea('0x28'):_0x3805ca[_0x65ea('0x32')]='%'+_0x51f3f8;break;case _0x65ea('0x33'):var _0x3e7a99=_0x51f3f8[_0x65ea('0x7')](',');var _0x51f3f8=_0x3e7a99['shift']();var _0x2b205c=_0x3e7a99['pop']();if(_0x2f39ec==='DATE'){_0x51f3f8=moment(_0x51f3f8)[_0x65ea('0x34')](0x0,!![])[_0x65ea('0x35')]();_0x2b205c=moment(_0x2b205c)[_0x65ea('0x34')](0x0,!![])['add'](0x17,_0x65ea('0x36'))[_0x65ea('0x17')](0x3b,_0x65ea('0x37'))[_0x65ea('0x17')](0x3b,_0x65ea('0x38'))['format']();}_0x3805ca={'start':_0x51f3f8,'end':_0x2b205c};break;default:_0x3805ca[_0x65ea('0x32')]=_0x51f3f8;break;}return _0x3805ca;}
\ No newline at end of file
+var _0xb809=['$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','$eq','=\x20?','$substring','$startsWith','LIKE\x20?','$lt','>\x20?','<=\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','$endsWith','pop','utcOffset','minutes','moment','parseSearch','startsWith','and','replace','[$or]','split','length','slice','forEach','shift','filter','indexOf','map','conditions','DATE','operator','$between','value','includes','$gt','$lte','add','format','castTo','text','CAST(','field','\x20AS\x20','$ne'];(function(_0x3c7c53,_0x18ef6a){var _0x2c3bdb=function(_0x3b7cfa){while(--_0x3b7cfa){_0x3c7c53['push'](_0x3c7c53['shift']());}};_0x2c3bdb(++_0x18ef6a);}(_0xb809,0xb2));var _0x9b80=function(_0x162780,_0x47f2e2){_0x162780=_0x162780-0x0;var _0x1ea2dc=_0xb809[_0x162780];return _0x1ea2dc;};'use strict';var _=require('lodash');var moment=require(_0x9b80('0x0'));exports[_0x9b80('0x1')]=function(_0x19ba22){var _0x3959d5={'conditions':[]};_0x3959d5['sqlOperator']=_[_0x9b80('0x2')](_0x19ba22,'[$or]')?'or':_0x9b80('0x3');var _0x1e69b6=_0x19ba22[_0x9b80('0x4')]('[$and]','')[_0x9b80('0x4')](_0x9b80('0x5'),'')[_0x9b80('0x6')]('||');for(var _0x24dbcb=0x0;_0x24dbcb<_0x1e69b6[_0x9b80('0x7')];_0x24dbcb++){var _0x57a6a4=_0x1e69b6[_0x24dbcb][_0x9b80('0x6')](':=');var _0x223099=_0x57a6a4[0x0];var _0x37e664=_0x57a6a4[_0x9b80('0x8')](0x1);_0x37e664[_0x9b80('0x9')](function(_0x152db2){var _0x592ade=_0x152db2[_0x9b80('0x6')]('[')[_0x9b80('0xa')]();var _0x116c70=_0x152db2['match'](/\[(.*?)\]/g);_0x116c70[_0x9b80('0x9')](function(_0x179855){var _0x2bcc7a=_0x179855[_0x9b80('0x6')]('[')[_0x9b80('0xb')](function(_0x575f8f){return _0x575f8f[_0x9b80('0xc')](']')>-0x1;})[_0x9b80('0xd')](function(_0x2fd185){return _0x2fd185['split'](']')[0x0];})[0x0];_0x3959d5[_0x9b80('0xe')]['push']({'field':_0x223099,'operator':_0x592ade,'value':_0x2bcc7a});});});}return _0x3959d5;};exports['buildExpression']=function(_0x99affc,_0x2f52b7,_0x4e9dd2){var _0xf060fe={};if(_0x2f52b7===_0x9b80('0xf')){if(_0x4e9dd2[_0x9b80('0x10')]==='$eq'){_0x4e9dd2['operator']=_0x9b80('0x11');_0x4e9dd2[_0x9b80('0x12')]+=','+_0x4e9dd2[_0x9b80('0x12')];}else if(_[_0x9b80('0x13')]([_0x9b80('0x14'),_0x9b80('0x15')],_0x4e9dd2['operator'])){_0x4e9dd2[_0x9b80('0x12')]=moment(_0x4e9dd2[_0x9b80('0x12')])[_0x9b80('0x16')](0x1,'days')[_0x9b80('0x17')]('YYYY-MM-DD');}}if(_0x4e9dd2[_0x9b80('0x18')]){_0x2f52b7=_0x4e9dd2[_0x9b80('0x18')];_0xf060fe[_0x9b80('0x19')]=_0x9b80('0x1a')+_0x99affc+'.'+_0x4e9dd2[_0x9b80('0x1b')]+_0x9b80('0x1c')+_0x4e9dd2[_0x9b80('0x18')]+')\x20'+parseOperator(_0x4e9dd2[_0x9b80('0x10')]);}else{_0xf060fe[_0x9b80('0x19')]=_0x99affc+'.'+_0x4e9dd2['field']+'\x20'+parseOperator(_0x4e9dd2[_0x9b80('0x10')]);}if(_[_0x9b80('0x13')]([_0x9b80('0x1d'),_0x9b80('0x1e')],_0x4e9dd2[_0x9b80('0x10')]))_0xf060fe[_0x9b80('0x19')]='('+_0xf060fe[_0x9b80('0x19')]+_0x9b80('0x1f')+_0x99affc+'.'+_0x4e9dd2[_0x9b80('0x1b')]+_0x9b80('0x20');_0xf060fe[_0x9b80('0x12')]=parseValue(_0x2f52b7,_0x4e9dd2[_0x9b80('0x10')],_0x4e9dd2[_0x9b80('0x12')]);return _0xf060fe;};function parseOperator(_0xa9e27){var _0x3efa0f;switch(_0xa9e27){case _0x9b80('0x21'):_0x3efa0f=_0x9b80('0x22');break;case _0x9b80('0x1e'):_0x3efa0f=_0x9b80('0x23');break;case _0x9b80('0x24'):_0x3efa0f=_0x9b80('0x25');break;case'$ne':_0x3efa0f='<>\x20?';break;case _0x9b80('0x26'):case _0x9b80('0x27'):case'$endsWith':_0x3efa0f=_0x9b80('0x28');break;case _0x9b80('0x29'):_0x3efa0f='<\x20?';break;case'$gt':_0x3efa0f=_0x9b80('0x2a');break;case _0x9b80('0x15'):_0x3efa0f=_0x9b80('0x2b');break;case _0x9b80('0x2c'):_0x3efa0f=_0x9b80('0x2d');break;case _0x9b80('0x11'):_0x3efa0f=_0x9b80('0x2e');break;}return _0x3efa0f;}function parseValue(_0x32e593,_0x119bd7,_0x3b8baf){var _0x11db0a={'start':undefined,'end':undefined};switch(_0x119bd7){case'$in':case _0x9b80('0x1e'):_0x11db0a[_0x9b80('0x2f')]=_0x3b8baf[_0x9b80('0x6')](',');break;case _0x9b80('0x26'):_0x11db0a['start']='%'+_0x3b8baf+'%';break;case _0x9b80('0x27'):_0x11db0a[_0x9b80('0x2f')]=_0x3b8baf+'%';break;case _0x9b80('0x30'):_0x11db0a[_0x9b80('0x2f')]='%'+_0x3b8baf;break;case _0x9b80('0x11'):var _0x567a2c=_0x3b8baf[_0x9b80('0x6')](',');var _0x3b8baf=_0x567a2c[_0x9b80('0xa')]();var _0x368157=_0x567a2c[_0x9b80('0x31')]();if(_0x32e593==='DATE'){_0x3b8baf=moment(_0x3b8baf)[_0x9b80('0x32')](0x0,!![])['format']();_0x368157=moment(_0x368157)[_0x9b80('0x32')](0x0,!![])['add'](0x17,'hours')['add'](0x3b,_0x9b80('0x33'))[_0x9b80('0x16')](0x3b,'seconds')[_0x9b80('0x17')]();}_0x11db0a={'start':_0x3b8baf,'end':_0x368157};break;default:_0x11db0a[_0x9b80('0x2f')]=_0x3b8baf;break;}return _0x11db0a;}
\ No newline at end of file
index 241077f..1bfacec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0c8=['format','$lte','name','isArray','split','sort','map','indexOf','col','substr','DESC','priority','unsigned','ASC','length','omit','isObject','isString','unset','isNumeric','match','^[+]?[0-9]*$','isEmail','getFullTextValue','replace','push','getOptions','query','$id','filters','model','attributes','fields','hasOwnProperty','nolimit','limit','offset','order','where','pick','filter','merge','type','VIRTUAL','lower','lodash','sequelize','moment','keys','includes','parse','isEmpty','forOwn','DATE','isPlainObject','$gte','YYYY-MM-DD','utc'];(function(_0x14363e,_0x4f0e0d){var _0x17c56d=function(_0x1c7bac){while(--_0x1c7bac){_0x14363e['push'](_0x14363e['shift']());}};_0x17c56d(++_0x4f0e0d);}(_0xf0c8,0xa1));var _0x8f0c=function(_0x251e8c,_0x277c33){_0x251e8c=_0x251e8c-0x0;var _0x1e0c1d=_0xf0c8[_0x251e8c];return _0x1e0c1d;};'use strict';var _=require(_0x8f0c('0x0'));var sequelize=require(_0x8f0c('0x1'));var moment=require(_0x8f0c('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x39c420){var _0x46adde=['ne'];try{var _0x136a0a=JSON['parse'](_0x39c420);var _0x84c84f=Object[_0x8f0c('0x3')](_0x136a0a)[0x0];return _0x46adde[_0x8f0c('0x4')](_0x84c84f);}catch(_0x541f39){return![];}}function getOperatorValue(_0x5cac97){var _0x127942=JSON[_0x8f0c('0x5')](_0x5cac97);var _0x114916=Object[_0x8f0c('0x3')](_0x127942)[0x0];var _0x245b07=_0x127942[_0x114916];return{['$'+_0x114916]:_0x245b07};}exports['fields']=function(_0x575ff0){var _0x4a3ee1=null;if(_0x575ff0){_0x4a3ee1=_0x575ff0['split'](',');}return _0x4a3ee1;};exports['filters']=function(_0x4145a7,_0xe8e921){var _0x3b4d82={};if(!_[_0x8f0c('0x6')](_0x4145a7)){_[_0x8f0c('0x7')](_0x4145a7,function(_0x1bfc05,_0x57596b){try{if(_0xe8e921){var _0x416628=_['find'](_0xe8e921,{'name':_0x57596b})||{};if(hasSequelizeOperator(_0x1bfc05)){_0x3b4d82[_0x57596b]=getOperatorValue(_0x1bfc05);}else if(_0x416628['type']===_0x8f0c('0x8')&&_[_0x8f0c('0x9')](_0x1bfc05)){var _0x1958fd=JSON[_0x8f0c('0x5')](_0x1bfc05);var _0x367631={'$gte':moment(moment(_0x1958fd[_0x8f0c('0xa')])['format'](_0x8f0c('0xb')))[_0x8f0c('0xc')]()[_0x8f0c('0xd')](),'$lte':moment(moment(_0x1958fd[_0x8f0c('0xe')])[_0x8f0c('0xd')](_0x8f0c('0xb')))[_0x8f0c('0xc')]()['subtract'](0x1,'s')[_0x8f0c('0xd')]()};_0x3b4d82[_0x57596b]=_0x367631;}else if(_0x416628[_0x8f0c('0xf')]==='uniqueid'){_0x3b4d82[_0x57596b]=_0x1bfc05;}else{_0x3b4d82[_0x57596b]=_[_0x8f0c('0x10')](_0x1bfc05)?_0x1bfc05:JSON[_0x8f0c('0x5')](_0x1bfc05);}}else{_0x3b4d82[_0x57596b]=_[_0x8f0c('0x10')](_0x1bfc05)?_0x1bfc05:JSON[_0x8f0c('0x5')](_0x1bfc05);}}catch(_0x5cf3b2){_0x3b4d82[_0x57596b]=_0x1bfc05[_0x8f0c('0x11')](',');}});}return _0x3b4d82;};exports['limit']=function(_0xd2635c){_0xd2635c=parseInt(_0xd2635c,0xa);if(!_0xd2635c||_0xd2635c<0x0){_0xd2635c=LIMIT_VALUE;}return _0xd2635c;};exports['offset']=function(_0x2a50bc){_0x2a50bc=parseInt(_0x2a50bc,0xa);if(!_0x2a50bc||_0x2a50bc<0x0){_0x2a50bc=0x0;}return _0x2a50bc;};exports[_0x8f0c('0x12')]=function(_0x5d128c){var _0x4f1c7a,_0x48d1fc=null;if(_0x5d128c){_0x4f1c7a=_0x5d128c[_0x8f0c('0x11')](',');_0x48d1fc=_[_0x8f0c('0x13')](_0x4f1c7a,function(_0x186038){if(_0x186038[_0x8f0c('0x14')]('-')===0x0){return[_0x186038==='priority'?sequelize['cast'](sequelize[_0x8f0c('0x15')]('priority'),'unsigned'):_0x186038[_0x8f0c('0x16')](0x1),_0x8f0c('0x17')];}else{return[_0x186038===_0x8f0c('0x18')?sequelize['cast'](sequelize[_0x8f0c('0x15')]('priority'),_0x8f0c('0x19')):_0x186038,_0x8f0c('0x1a')];}});}return _0x48d1fc;};exports['omit']=function(_0xdb6f93,_0x1f0f35){if(_[_0x8f0c('0x6')](_0xdb6f93)){return _0xdb6f93;}if(_['isArray'](_0xdb6f93)){for(var _0x306c1f=0x0;_0x306c1f<_0xdb6f93[_0x8f0c('0x1b')];_0x306c1f+=0x1){_0xdb6f93[_0x306c1f]=this[_0x8f0c('0x1c')](_0xdb6f93[_0x306c1f],_0x1f0f35);}return _0xdb6f93;}if(!_[_0x8f0c('0x1d')](_0xdb6f93)){return _0xdb6f93;}if(_[_0x8f0c('0x1e')](_0x1f0f35)){_0x1f0f35=[_0x1f0f35];}if(!_[_0x8f0c('0x10')](_0x1f0f35)){return _0xdb6f93;}for(var _0x39b13b=0x0;_0x39b13b<_0x1f0f35[_0x8f0c('0x1b')];_0x39b13b+=0x1){_[_0x8f0c('0x1f')](_0xdb6f93,_0x1f0f35[_0x39b13b]);}for(var _0x300966 in _0xdb6f93){if(_0xdb6f93['hasOwnProperty'](_0x300966)){_0xdb6f93[_0x300966]=this[_0x8f0c('0x1c')](_0xdb6f93[_0x300966],_0x1f0f35);}}return _0xdb6f93;};exports[_0x8f0c('0x20')]=function(_0x55d8db){return _0x55d8db[_0x8f0c('0x21')](RegExp(_0x8f0c('0x22')))?!![]:![];};exports[_0x8f0c('0x23')]=function(_0x1dde92){return _0x1dde92[_0x8f0c('0x21')](/^\S+@\S+$/)?!![]:![];};exports[_0x8f0c('0x24')]=function(_0x53d0ab){var _0x1c4dcb=[];_0x53d0ab[_0x8f0c('0x11')](/[ ,]+/)['forEach'](function(_0x3a7f5f){_0x3a7f5f=_0x3a7f5f[_0x8f0c('0x25')](/([^:]")"+/g,'$1');_0x3a7f5f='+'+_0x3a7f5f+'*';if(_0x3a7f5f[_0x8f0c('0x4')]('@'))_0x3a7f5f='\x22'+_0x3a7f5f+'\x22';_0x1c4dcb[_0x8f0c('0x26')](_0x3a7f5f);});return _0x1c4dcb['join']('\x20');};exports[_0x8f0c('0x27')]=function(_0x1c5c0c,_0x2f416c,_0x26b193){var _0xf3db3f={},_0x2fe904={};if(_0x2f416c[_0x8f0c('0x28')]['$id']){_0x2f416c[_0x8f0c('0x28')]['id']=_0x2f416c[_0x8f0c('0x28')][_0x8f0c('0x29')];delete _0x2f416c[_0x8f0c('0x28')]['$id'];}_0xf3db3f['model']=_[_0x8f0c('0x13')](_0x1c5c0c,_0x8f0c('0xf'));_0xf3db3f[_0x8f0c('0x28')]=_['keys'](_0x2f416c[_0x8f0c('0x28')]);_0xf3db3f[_0x8f0c('0x2a')]=_['intersection'](_0xf3db3f[_0x8f0c('0x2b')],_0xf3db3f[_0x8f0c('0x28')]);_0x2fe904[_0x8f0c('0x2c')]=_['intersection'](_0xf3db3f[_0x8f0c('0x2b')],this[_0x8f0c('0x2d')](_0x2f416c[_0x8f0c('0x28')][_0x8f0c('0x2d')]));_0x2fe904[_0x8f0c('0x2c')]=_0x2fe904[_0x8f0c('0x2c')]['length']?_0x2fe904[_0x8f0c('0x2c')]:_0xf3db3f[_0x8f0c('0x2b')];if(!_0x2f416c['query'][_0x8f0c('0x2e')](_0x8f0c('0x2f'))){_0x2fe904[_0x8f0c('0x30')]=this[_0x8f0c('0x30')](_0x2f416c[_0x8f0c('0x28')]['limit']);_0x2fe904['offset']=this[_0x8f0c('0x31')](_0x2f416c[_0x8f0c('0x28')][_0x8f0c('0x31')]);}_0x2fe904[_0x8f0c('0x32')]=this[_0x8f0c('0x12')](_0x2f416c[_0x8f0c('0x28')][_0x8f0c('0x12')]);_0x2fe904[_0x8f0c('0x33')]=this[_0x8f0c('0x2a')](_[_0x8f0c('0x34')](_0x2f416c['query'],_0xf3db3f[_0x8f0c('0x2a')]),_0x1c5c0c);if(_0x2f416c['query'][_0x8f0c('0x35')]){_0x2fe904[_0x8f0c('0x33')]=_[_0x8f0c('0x36')](_0x2fe904[_0x8f0c('0x33')],{'$or':_[_0x8f0c('0x13')](_0x1c5c0c,function(_0x5dca74){if(_0x5dca74[_0x8f0c('0x37')]!==_0x8f0c('0x38')){if(_0x26b193){return sequelize[_0x8f0c('0x33')](sequelize['fn']('lower',sequelize['col'](_0x5dca74[_0x8f0c('0xf')])),{'$like':sequelize['fn'](_0x8f0c('0x39'),'%'+_0x2f416c[_0x8f0c('0x28')][_0x8f0c('0x35')]+'%')});}else{var _0x3e9d56={};_0x3e9d56[_0x5dca74[_0x8f0c('0xf')]]={'$like':'%'+_0x2f416c[_0x8f0c('0x28')][_0x8f0c('0x35')]+'%'};return _0x3e9d56;}}})});}_0x2fe904=_[_0x8f0c('0x36')]({},_0x2fe904,_0x2f416c['options']);return _0x2fe904;};
\ No newline at end of file
+var _0x4a0b=['ASC','omit','length','isObject','isString','unset','hasOwnProperty','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','push','getOptions','$id','query','model','filters','intersection','attributes','nolimit','limit','order','where','merge','VIRTUAL','name','filter','lodash','sequelize','moment','parse','keys','includes','fields','split','isEmpty','forOwn','find','type','DATE','$gte','format','utc','$lte','YYYY-MM-DD','subtract','uniqueid','isArray','offset','sort','map','indexOf','col','priority','unsigned','substr','DESC','cast'];(function(_0x5e97f6,_0x41fe9b){var _0xb246a7=function(_0x3714cb){while(--_0x3714cb){_0x5e97f6['push'](_0x5e97f6['shift']());}};_0xb246a7(++_0x41fe9b);}(_0x4a0b,0x1c1));var _0xb4a0=function(_0x1d7bc0,_0x50a455){_0x1d7bc0=_0x1d7bc0-0x0;var _0x15a179=_0x4a0b[_0x1d7bc0];return _0x15a179;};'use strict';var _=require(_0xb4a0('0x0'));var sequelize=require(_0xb4a0('0x1'));var moment=require(_0xb4a0('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x748eb1){var _0x1c5080=['ne'];try{var _0x1771c9=JSON[_0xb4a0('0x3')](_0x748eb1);var _0x3adf56=Object[_0xb4a0('0x4')](_0x1771c9)[0x0];return _0x1c5080[_0xb4a0('0x5')](_0x3adf56);}catch(_0x1c51a7){return![];}}function getOperatorValue(_0x3ebed9){var _0x85a752=JSON[_0xb4a0('0x3')](_0x3ebed9);var _0x546c3c=Object[_0xb4a0('0x4')](_0x85a752)[0x0];var _0x5b4cbe=_0x85a752[_0x546c3c];return{['$'+_0x546c3c]:_0x5b4cbe};}exports[_0xb4a0('0x6')]=function(_0x36089e){var _0x1cb901=null;if(_0x36089e){_0x1cb901=_0x36089e[_0xb4a0('0x7')](',');}return _0x1cb901;};exports['filters']=function(_0xf44272,_0x1e0c04){var _0x233a52={};if(!_[_0xb4a0('0x8')](_0xf44272)){_[_0xb4a0('0x9')](_0xf44272,function(_0x4d6f6d,_0x6b768){try{if(_0x1e0c04){var _0x3dd4f6=_[_0xb4a0('0xa')](_0x1e0c04,{'name':_0x6b768})||{};if(hasSequelizeOperator(_0x4d6f6d)){_0x233a52[_0x6b768]=getOperatorValue(_0x4d6f6d);}else if(_0x3dd4f6[_0xb4a0('0xb')]===_0xb4a0('0xc')&&_['isPlainObject'](_0x4d6f6d)){var _0x145ba8=JSON[_0xb4a0('0x3')](_0x4d6f6d);var _0x2b40c8={'$gte':moment(moment(_0x145ba8[_0xb4a0('0xd')])[_0xb4a0('0xe')]('YYYY-MM-DD'))[_0xb4a0('0xf')]()[_0xb4a0('0xe')](),'$lte':moment(moment(_0x145ba8[_0xb4a0('0x10')])[_0xb4a0('0xe')](_0xb4a0('0x11')))['utc']()[_0xb4a0('0x12')](0x1,'s')[_0xb4a0('0xe')]()};_0x233a52[_0x6b768]=_0x2b40c8;}else if(_0x3dd4f6['name']===_0xb4a0('0x13')){_0x233a52[_0x6b768]=_0x4d6f6d;}else{_0x233a52[_0x6b768]=_['isArray'](_0x4d6f6d)?_0x4d6f6d:JSON['parse'](_0x4d6f6d);}}else{_0x233a52[_0x6b768]=_[_0xb4a0('0x14')](_0x4d6f6d)?_0x4d6f6d:JSON[_0xb4a0('0x3')](_0x4d6f6d);}}catch(_0x54e0c1){_0x233a52[_0x6b768]=_0x4d6f6d[_0xb4a0('0x7')](',');}});}return _0x233a52;};exports['limit']=function(_0x546e07){_0x546e07=parseInt(_0x546e07,0xa);if(!_0x546e07||_0x546e07<0x0){_0x546e07=LIMIT_VALUE;}return _0x546e07;};exports[_0xb4a0('0x15')]=function(_0x2f5b4b){_0x2f5b4b=parseInt(_0x2f5b4b,0xa);if(!_0x2f5b4b||_0x2f5b4b<0x0){_0x2f5b4b=0x0;}return _0x2f5b4b;};exports[_0xb4a0('0x16')]=function(_0x58cd33){var _0x315af9,_0x285017=null;if(_0x58cd33){_0x315af9=_0x58cd33[_0xb4a0('0x7')](',');_0x285017=_[_0xb4a0('0x17')](_0x315af9,function(_0x4750d2){if(_0x4750d2[_0xb4a0('0x18')]('-')===0x0){return[_0x4750d2==='priority'?sequelize['cast'](sequelize[_0xb4a0('0x19')](_0xb4a0('0x1a')),_0xb4a0('0x1b')):_0x4750d2[_0xb4a0('0x1c')](0x1),_0xb4a0('0x1d')];}else{return[_0x4750d2===_0xb4a0('0x1a')?sequelize[_0xb4a0('0x1e')](sequelize[_0xb4a0('0x19')]('priority'),_0xb4a0('0x1b')):_0x4750d2,_0xb4a0('0x1f')];}});}return _0x285017;};exports[_0xb4a0('0x20')]=function(_0x4663bc,_0x426375){if(_[_0xb4a0('0x8')](_0x4663bc)){return _0x4663bc;}if(_[_0xb4a0('0x14')](_0x4663bc)){for(var _0x1bc7d2=0x0;_0x1bc7d2<_0x4663bc[_0xb4a0('0x21')];_0x1bc7d2+=0x1){_0x4663bc[_0x1bc7d2]=this['omit'](_0x4663bc[_0x1bc7d2],_0x426375);}return _0x4663bc;}if(!_[_0xb4a0('0x22')](_0x4663bc)){return _0x4663bc;}if(_[_0xb4a0('0x23')](_0x426375)){_0x426375=[_0x426375];}if(!_['isArray'](_0x426375)){return _0x4663bc;}for(var _0x1ee22d=0x0;_0x1ee22d<_0x426375['length'];_0x1ee22d+=0x1){_[_0xb4a0('0x24')](_0x4663bc,_0x426375[_0x1ee22d]);}for(var _0x161f4a in _0x4663bc){if(_0x4663bc[_0xb4a0('0x25')](_0x161f4a)){_0x4663bc[_0x161f4a]=this[_0xb4a0('0x20')](_0x4663bc[_0x161f4a],_0x426375);}}return _0x4663bc;};exports['isNumeric']=function(_0x384766){return _0x384766[_0xb4a0('0x26')](RegExp(_0xb4a0('0x27')))?!![]:![];};exports[_0xb4a0('0x28')]=function(_0x352910){return _0x352910[_0xb4a0('0x26')](/^\S+@\S+$/)?!![]:![];};exports[_0xb4a0('0x29')]=function(_0x1e58f8){var _0x137944=[];_0x1e58f8[_0xb4a0('0x7')](/[ ,]+/)[_0xb4a0('0x2a')](function(_0x54b301){_0x54b301=_0x54b301[_0xb4a0('0x2b')](/([^:]")"+/g,'$1');_0x54b301='+'+_0x54b301+'*';if(_0x54b301['includes']('@'))_0x54b301='\x22'+_0x54b301+'\x22';_0x137944[_0xb4a0('0x2c')](_0x54b301);});return _0x137944['join']('\x20');};exports[_0xb4a0('0x2d')]=function(_0x1f7732,_0x3ec060,_0x3bcd90){var _0xa43790={},_0x55fe7f={};if(_0x3ec060['query'][_0xb4a0('0x2e')]){_0x3ec060[_0xb4a0('0x2f')]['id']=_0x3ec060['query']['$id'];delete _0x3ec060['query'][_0xb4a0('0x2e')];}_0xa43790[_0xb4a0('0x30')]=_[_0xb4a0('0x17')](_0x1f7732,'name');_0xa43790[_0xb4a0('0x2f')]=_['keys'](_0x3ec060[_0xb4a0('0x2f')]);_0xa43790[_0xb4a0('0x31')]=_[_0xb4a0('0x32')](_0xa43790[_0xb4a0('0x30')],_0xa43790['query']);_0x55fe7f[_0xb4a0('0x33')]=_['intersection'](_0xa43790[_0xb4a0('0x30')],this[_0xb4a0('0x6')](_0x3ec060[_0xb4a0('0x2f')][_0xb4a0('0x6')]));_0x55fe7f[_0xb4a0('0x33')]=_0x55fe7f[_0xb4a0('0x33')][_0xb4a0('0x21')]?_0x55fe7f[_0xb4a0('0x33')]:_0xa43790['model'];if(!_0x3ec060[_0xb4a0('0x2f')][_0xb4a0('0x25')](_0xb4a0('0x34'))){_0x55fe7f[_0xb4a0('0x35')]=this[_0xb4a0('0x35')](_0x3ec060[_0xb4a0('0x2f')][_0xb4a0('0x35')]);_0x55fe7f[_0xb4a0('0x15')]=this[_0xb4a0('0x15')](_0x3ec060[_0xb4a0('0x2f')][_0xb4a0('0x15')]);}_0x55fe7f[_0xb4a0('0x36')]=this[_0xb4a0('0x16')](_0x3ec060[_0xb4a0('0x2f')][_0xb4a0('0x16')]);_0x55fe7f['where']=this[_0xb4a0('0x31')](_['pick'](_0x3ec060[_0xb4a0('0x2f')],_0xa43790[_0xb4a0('0x31')]),_0x1f7732);if(_0x3ec060[_0xb4a0('0x2f')]['filter']){_0x55fe7f[_0xb4a0('0x37')]=_[_0xb4a0('0x38')](_0x55fe7f[_0xb4a0('0x37')],{'$or':_[_0xb4a0('0x17')](_0x1f7732,function(_0x20efa5){if(_0x20efa5[_0xb4a0('0xb')]!==_0xb4a0('0x39')){if(_0x3bcd90){return sequelize['where'](sequelize['fn']('lower',sequelize['col'](_0x20efa5[_0xb4a0('0x3a')])),{'$like':sequelize['fn']('lower','%'+_0x3ec060['query'][_0xb4a0('0x3b')]+'%')});}else{var _0xac0b44={};_0xac0b44[_0x20efa5['name']]={'$like':'%'+_0x3ec060[_0xb4a0('0x2f')]['filter']+'%'};return _0xac0b44;}}})});}_0x55fe7f=_[_0xb4a0('0x38')]({},_0x55fe7f,_0x3ec060['options']);return _0x55fe7f;};
\ No newline at end of file
index a103d81..c3e5b7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2a5=['serve-favicon','body-parser','method-override','cookie-parser','passport','moment','./environment','../mysqldb','default','get','env','set','appPath','join','root','public','development','test','client','use','json\x20replacer','split','static','views','/server/views','engine','html','renderFile','view\x20engine','urlencoded','50mb','initialize','express'];(function(_0x39bd2c,_0x15737a){var _0x196aaa=function(_0x46d64b){while(--_0x46d64b){_0x39bd2c['push'](_0x39bd2c['shift']());}};_0x196aaa(++_0x15737a);}(_0xe2a5,0xa4));var _0x5e2a=function(_0x3cc2c2,_0x3db826){_0x3cc2c2=_0x3cc2c2-0x0;var _0x1e50fc=_0xe2a5[_0x3cc2c2];return _0x1e50fc;};'use strict';var express=require(_0x5e2a('0x0'));var favicon=require(_0x5e2a('0x1'));var bodyParser=require(_0x5e2a('0x2'));var methodOverride=require(_0x5e2a('0x3'));var cookieParser=require(_0x5e2a('0x4'));var errorHandler=require('errorhandler');var path=require('path');var passport=require(_0x5e2a('0x5'));var cors=require('cors');var moment=require(_0x5e2a('0x6'));var config=require(_0x5e2a('0x7'));var db=require(_0x5e2a('0x8'))['db'];exports[_0x5e2a('0x9')]=function(_0x320f0b){var _0x26f529=_0x320f0b[_0x5e2a('0xa')](_0x5e2a('0xb'));if(_0x26f529==='production'){_0x320f0b[_0x5e2a('0xc')](_0x5e2a('0xd'),path[_0x5e2a('0xe')](config[_0x5e2a('0xf')],_0x5e2a('0x10')));}if(_0x26f529===_0x5e2a('0x11')||_0x26f529===_0x5e2a('0x12')){_0x320f0b['set']('appPath',path[_0x5e2a('0xe')](config[_0x5e2a('0xf')],_0x5e2a('0x13')));_0x320f0b[_0x5e2a('0x14')](errorHandler());}_0x320f0b['set'](_0x5e2a('0x15'),function(_0x35e3c4,_0x3f620f){if(this[_0x35e3c4]instanceof Date){_0x3f620f=this[_0x35e3c4]['toISOString']()[_0x5e2a('0x16')]('.')[0x0]+'Z';}return _0x3f620f;});_0x320f0b[_0x5e2a('0x14')](express[_0x5e2a('0x17')](_0x320f0b[_0x5e2a('0xa')]('appPath')));_0x320f0b[_0x5e2a('0xc')](_0x5e2a('0x18'),config[_0x5e2a('0xf')]+_0x5e2a('0x19'));_0x320f0b[_0x5e2a('0x1a')](_0x5e2a('0x1b'),require('ejs')[_0x5e2a('0x1c')]);_0x320f0b['set'](_0x5e2a('0x1d'),_0x5e2a('0x1b'));_0x320f0b[_0x5e2a('0x14')](bodyParser[_0x5e2a('0x1e')]({'limit':_0x5e2a('0x1f'),'extended':!![]}));_0x320f0b[_0x5e2a('0x14')](bodyParser['json']({'limit':'50mb'}));_0x320f0b[_0x5e2a('0x14')](cors());_0x320f0b['use'](methodOverride());_0x320f0b[_0x5e2a('0x14')](cookieParser());_0x320f0b[_0x5e2a('0x14')](passport[_0x5e2a('0x20')]());};
\ No newline at end of file
+var _0x9c4a=['split','static','appPath','/server/views','engine','html','renderFile','view\x20engine','use','50mb','json','initialize','express','method-override','cookie-parser','errorhandler','path','moment','../mysqldb','default','get','env','production','set','join','public','development','test','root','client','json\x20replacer','toISOString'];(function(_0x2a345a,_0x137b62){var _0x3d0e8f=function(_0x38871f){while(--_0x38871f){_0x2a345a['push'](_0x2a345a['shift']());}};_0x3d0e8f(++_0x137b62);}(_0x9c4a,0x8c));var _0xa9c4=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x9c4a[_0x46698a];return _0x356db0;};'use strict';var express=require(_0xa9c4('0x0'));var favicon=require('serve-favicon');var bodyParser=require('body-parser');var methodOverride=require(_0xa9c4('0x1'));var cookieParser=require(_0xa9c4('0x2'));var errorHandler=require(_0xa9c4('0x3'));var path=require(_0xa9c4('0x4'));var passport=require('passport');var cors=require('cors');var moment=require(_0xa9c4('0x5'));var config=require('./environment');var db=require(_0xa9c4('0x6'))['db'];exports[_0xa9c4('0x7')]=function(_0x23dc7a){var _0x35e803=_0x23dc7a[_0xa9c4('0x8')](_0xa9c4('0x9'));if(_0x35e803===_0xa9c4('0xa')){_0x23dc7a[_0xa9c4('0xb')]('appPath',path[_0xa9c4('0xc')](config['root'],_0xa9c4('0xd')));}if(_0x35e803===_0xa9c4('0xe')||_0x35e803===_0xa9c4('0xf')){_0x23dc7a[_0xa9c4('0xb')]('appPath',path[_0xa9c4('0xc')](config[_0xa9c4('0x10')],_0xa9c4('0x11')));_0x23dc7a['use'](errorHandler());}_0x23dc7a[_0xa9c4('0xb')](_0xa9c4('0x12'),function(_0x47fbb0,_0xea37f6){if(this[_0x47fbb0]instanceof Date){_0xea37f6=this[_0x47fbb0][_0xa9c4('0x13')]()[_0xa9c4('0x14')]('.')[0x0]+'Z';}return _0xea37f6;});_0x23dc7a['use'](express[_0xa9c4('0x15')](_0x23dc7a[_0xa9c4('0x8')](_0xa9c4('0x16'))));_0x23dc7a[_0xa9c4('0xb')]('views',config[_0xa9c4('0x10')]+_0xa9c4('0x17'));_0x23dc7a[_0xa9c4('0x18')](_0xa9c4('0x19'),require('ejs')[_0xa9c4('0x1a')]);_0x23dc7a[_0xa9c4('0xb')](_0xa9c4('0x1b'),'html');_0x23dc7a[_0xa9c4('0x1c')](bodyParser['urlencoded']({'limit':_0xa9c4('0x1d'),'extended':!![]}));_0x23dc7a['use'](bodyParser[_0xa9c4('0x1e')]({'limit':_0xa9c4('0x1d')}));_0x23dc7a[_0xa9c4('0x1c')](cors());_0x23dc7a['use'](methodOverride());_0x23dc7a[_0xa9c4('0x1c')](cookieParser());_0x23dc7a[_0xa9c4('0x1c')](passport[_0xa9c4('0x1f')]());};
\ No newline at end of file
index e621af8..dc081fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9b9=['createHash','md5','update','digest','platform','licenseToken','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','macAddress','hex','substring','lodash','crypto','bimedia-machine-uuid','child_process','../environment','networkInterfaces','orderBy','keys','length','family','IPv4','head','mac','00:00:00:00:00:00','address','cpus','map','join'];(function(_0x55ec31,_0x3f1d64){var _0x47a20e=function(_0x312d99){while(--_0x312d99){_0x55ec31['push'](_0x55ec31['shift']());}};_0x47a20e(++_0x3f1d64);}(_0xb9b9,0x162));var _0x9b9b=function(_0x4b5529,_0x279132){_0x4b5529=_0x4b5529-0x0;var _0x13b053=_0xb9b9[_0x4b5529];return _0x13b053;};'use strict';var _=require(_0x9b9b('0x0'));var os=require('os');var crypto=require(_0x9b9b('0x1'));var machine=require(_0x9b9b('0x2'));var exec=require(_0x9b9b('0x3'))['execSync'];var config=require(_0x9b9b('0x4'));function getInterfaces(){var _0x56955a=[];var _0x10b833=os[_0x9b9b('0x5')]();var _0x1fb914=_[_0x9b9b('0x6')](_[_0x9b9b('0x7')](_0x10b833));for(var _0x25fb4c=0x0;_0x25fb4c<_0x1fb914[_0x9b9b('0x8')];_0x25fb4c++){var _0x1d6770=_0x10b833[_0x1fb914[_0x25fb4c]]['filter'](function(_0xd8a001){return _0xd8a001[_0x9b9b('0x9')]===_0x9b9b('0xa')&&_0xd8a001['internal']===![];});_0x56955a=_0x56955a['concat'](_0x1d6770);}return _0x56955a;}function getFirstInterface(){var _0x224441=_[_0x9b9b('0xb')](getInterfaces());return{'macAddress':_0x224441&&_0x224441[_0x9b9b('0xc')]?_0x224441[_0x9b9b('0xc')]:_0x9b9b('0xd'),'ipAddress':_0x224441&&_0x224441[_0x9b9b('0xe')]?_0x224441['address']:'127.0.0.1'};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0xa092d3=_[_0x9b9b('0x6')](os[_0x9b9b('0xf')]()[_0x9b9b('0x10')](function(_0x2e1fbf){return _0x2e1fbf['model'];}))[_0x9b9b('0x11')](':');return crypto[_0x9b9b('0x12')](_0x9b9b('0x13'))[_0x9b9b('0x14')](_0xa092d3)[_0x9b9b('0x15')]('hex');}exports['getUuid']=function(){var _0x29596a=os[_0x9b9b('0x16')]();var _0x493644=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x493644['test'](config[_0x9b9b('0x17')])){return config[_0x9b9b('0x17')];}else if(_0x29596a==='win32'){return exec(_0x9b9b('0x18'),{'encoding':_0x9b9b('0x19')})[_0x9b9b('0x1a')]('\x0d\x0a','');}else{var _0xb58695=getFirstInterface();var _0x6b1678=getCPUhash();var _0x2e0d6b=_0x6b1678+'|'+os[_0x9b9b('0x1b')]()+'|'+_0xb58695[_0x9b9b('0x1c')]+'|'+_0xb58695['ipAddress'];var _0x1e623b=crypto[_0x9b9b('0x12')]('md5')[_0x9b9b('0x14')](_0x2e0d6b)[_0x9b9b('0x15')](_0x9b9b('0x1d'));return _0x1e623b[_0x9b9b('0x1e')](0x0,0x8)+'-'+_0x1e623b['substring'](0x8,0xc)+'-'+_0x1e623b[_0x9b9b('0x1e')](0xc,0x10)+'-'+_0x1e623b[_0x9b9b('0x1e')](0x10,0x14)+'-'+_0x1e623b['substring'](0x14);}};
\ No newline at end of file
+var _0x13e6=['head','mac','00:00:00:00:00:00','127.0.0.1','getFirstInterface','cpus','map','model','update','digest','hex','getUuid','platform','licenseToken','test','win32','utf8','replace','macAddress','ipAddress','createHash','md5','substring','crypto','bimedia-machine-uuid','child_process','execSync','../environment','networkInterfaces','orderBy','keys','length','filter','IPv4','concat'];(function(_0x27239c,_0x4b150b){var _0x519973=function(_0xf87996){while(--_0xf87996){_0x27239c['push'](_0x27239c['shift']());}};_0x519973(++_0x4b150b);}(_0x13e6,0x152));var _0x613e=function(_0x4d0ecc,_0x347f0e){_0x4d0ecc=_0x4d0ecc-0x0;var _0x293952=_0x13e6[_0x4d0ecc];return _0x293952;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0x613e('0x0'));var machine=require(_0x613e('0x1'));var exec=require(_0x613e('0x2'))[_0x613e('0x3')];var config=require(_0x613e('0x4'));function getInterfaces(){var _0x19b634=[];var _0x270108=os[_0x613e('0x5')]();var _0x272a81=_[_0x613e('0x6')](_[_0x613e('0x7')](_0x270108));for(var _0x3ed20b=0x0;_0x3ed20b<_0x272a81[_0x613e('0x8')];_0x3ed20b++){var _0x16a304=_0x270108[_0x272a81[_0x3ed20b]][_0x613e('0x9')](function(_0x1f8944){return _0x1f8944['family']===_0x613e('0xa')&&_0x1f8944['internal']===![];});_0x19b634=_0x19b634[_0x613e('0xb')](_0x16a304);}return _0x19b634;}function getFirstInterface(){var _0x3021f1=_[_0x613e('0xc')](getInterfaces());return{'macAddress':_0x3021f1&&_0x3021f1[_0x613e('0xd')]?_0x3021f1[_0x613e('0xd')]:_0x613e('0xe'),'ipAddress':_0x3021f1&&_0x3021f1['address']?_0x3021f1['address']:_0x613e('0xf')};}exports[_0x613e('0x10')]=getFirstInterface;function getCPUhash(){var _0x128887=_[_0x613e('0x6')](os[_0x613e('0x11')]()[_0x613e('0x12')](function(_0x315fba){return _0x315fba[_0x613e('0x13')];}))['join'](':');return crypto['createHash']('md5')[_0x613e('0x14')](_0x128887)[_0x613e('0x15')](_0x613e('0x16'));}exports[_0x613e('0x17')]=function(){var _0x307469=os[_0x613e('0x18')]();var _0x216bbe=/[0-9a-f-]{36}/;if(config[_0x613e('0x19')]&&_0x216bbe[_0x613e('0x1a')](config['licenseToken'])){return config[_0x613e('0x19')];}else if(_0x307469===_0x613e('0x1b')){return exec('dmidecode\x20--string\x20system-uuid',{'encoding':_0x613e('0x1c')})[_0x613e('0x1d')]('\x0d\x0a','');}else{var _0x59e48a=getFirstInterface();var _0x5c13d3=getCPUhash();var _0x453726=_0x5c13d3+'|'+os['hostname']()+'|'+_0x59e48a[_0x613e('0x1e')]+'|'+_0x59e48a[_0x613e('0x1f')];var _0x16ee41=crypto[_0x613e('0x20')](_0x613e('0x21'))[_0x613e('0x14')](_0x453726)['digest']('hex');return _0x16ee41['substring'](0x0,0x8)+'-'+_0x16ee41[_0x613e('0x22')](0x8,0xc)+'-'+_0x16ee41['substring'](0xc,0x10)+'-'+_0x16ee41['substring'](0x10,0x14)+'-'+_0x16ee41[_0x613e('0x22')](0x14);}};
\ No newline at end of file
index 4ef73ed..6448c0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacd7=['../../mysqldb','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','GET','then','catch','get','data1','active','data2','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Changed','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','error','finally','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','message','default','util','moment','version'];(function(_0x5b80ab,_0x1fbb2c){var _0xa558d=function(_0x1905ac){while(--_0x1905ac){_0x5b80ab['push'](_0x5b80ab['shift']());}};_0xa558d(++_0x1fbb2c);}(_0xacd7,0x99));var _0x7acd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xacd7[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x7acd('0x0'));var moment=require(_0x7acd('0x1'));var rp=require('request-promise');var BPromise=require('bluebird');var pkginfo=require('pkginfo')(module,_0x7acd('0x2'));var db=require(_0x7acd('0x3'))['db'];var encryptor=require('../../components/encryptor');var hardware=require(_0x7acd('0x4'));var logger=require(_0x7acd('0x5'))(_0x7acd('0x6'));var HOST=_0x7acd('0x7');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x49e3ad){return new BPromise(function(_0x34580f,_0x9068ae){var _0x20d4c7=util[_0x7acd('0x8')](_0x7acd('0x9'),HOST,_0x49e3ad,module[_0x7acd('0xa')][_0x7acd('0x2')]);if(oldToken){_0x20d4c7=util[_0x7acd('0x8')]('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0x49e3ad,module[_0x7acd('0xa')]['version'],oldToken);}var _0xa3a964={'uri':_0x20d4c7,'method':_0x7acd('0xb'),'timeout':0xea60,'json':!![]};return rp(_0xa3a964)[_0x7acd('0xc')](function(_0x52bfbf){_0x34580f(_0x52bfbf);})[_0x7acd('0xd')](function(_0x218e64){_0x9068ae(_0x218e64);});});}function manageLicense(_0x394596,_0xa8b89d){var _0x4dd587=_0xa8b89d[_0x7acd('0xe')]({'plain':!![]});if(!isOldTokenSent&&_0x4dd587[_0x7acd('0xf')]!==_0x394596&&!_0x4dd587['data2']){oldToken=_0x4dd587['data1'];}httpRequest(_0x394596)[_0x7acd('0xc')](function(_0x4dd9cb){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x4dd9cb[_0x7acd('0x10')]){isOldTokenSent=![];if(!_0x4dd587['license']&&_0x4dd587[_0x7acd('0x6')]!=_0x4dd9cb[_0x7acd('0x6')]||_0x4dd587[_0x7acd('0x6')]&&_0x4dd587[_0x7acd('0x11')]){logger['info'](_0x7acd('0x12'));}if(_0x4dd587[_0x7acd('0x6')]&&!_0x4dd587[_0x7acd('0x11')]&&_0x4dd587[_0x7acd('0x6')]!=_0x4dd9cb[_0x7acd('0x6')]){logger[_0x7acd('0x13')](_0x7acd('0x14'));}if(_0x4dd587['license']&&!_0x4dd587[_0x7acd('0x11')]&&_0x4dd587[_0x7acd('0x6')]==_0x4dd9cb[_0x7acd('0x6')]){return _0xa8b89d;}return _0xa8b89d[_0x7acd('0x15')]({'data1':_0x394596,'data2':null,'license':_0x4dd9cb['license']});}else{if(_0x4dd9cb[_0x7acd('0x6')]||_0x4dd587[_0x7acd('0x6')]){if(!_0x4dd587[_0x7acd('0x11')]){if(_0x4dd587[_0x7acd('0xf')]==_0x394596){GRAY_PERIOD_REASON='Disabled';logger['info']('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON=_0x7acd('0x16');logger[_0x7acd('0x13')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x4dd587[_0x7acd('0xf')],_0x394596);}logger[_0x7acd('0x13')](_0x7acd('0x17'),GRAY_PERIOD_REASON[_0x7acd('0x18')](),moment()[_0x7acd('0x8')](_0x7acd('0x19')));return _0xa8b89d[_0x7acd('0x15')]({'data2':encryptor[_0x7acd('0x1a')](moment()[_0x7acd('0x8')](_0x7acd('0x19')))});}else{if(moment()[_0x7acd('0x1b')](encryptor[_0x7acd('0x1c')](_0x4dd587[_0x7acd('0x11')]),_0x7acd('0x1d'))>DAYS){logger[_0x7acd('0x13')](_0x7acd('0x1e'),moment()[_0x7acd('0x8')](_0x7acd('0x19')));isOldTokenSent=![];return _0xa8b89d['update']({'data1':_0x394596,'data2':null,'license':null});}}}else{if(_0x4dd587[_0x7acd('0xf')]!=_0x394596){logger[_0x7acd('0x13')](_0x7acd('0x1f'),_0x4dd587[_0x7acd('0xf')],_0x394596);return _0xa8b89d[_0x7acd('0x15')]({'data1':_0x394596,'data2':null,'license':null});}}}return _0xa8b89d;})[_0x7acd('0xc')](function(_0x2b364b){_0xa8b89d=_0x2b364b;})[_0x7acd('0xd')](function(_0x4cb4c1){logger[_0x7acd('0x20')](_0x4cb4c1['message']);})[_0x7acd('0x21')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0xa8b89d);},TIME);});}function defaultLicense(){var _0x4f0e82=hardware['getUuid']();if(_0x4f0e82){return db['License'][_0x7acd('0x22')]({'where':{'id':0x1},'defaults':{'data1':_0x4f0e82}})[_0x7acd('0x23')](function(_0x173aed,_0x2d1178){logger[_0x7acd('0x13')](_0x7acd('0x24'),_0x4f0e82);manageLicense(_0x4f0e82,_0x173aed);})[_0x7acd('0xd')](function(_0x5eb52d){logger[_0x7acd('0x20')](_0x5eb52d[_0x7acd('0x25')]);});}}exports[_0x7acd('0x26')]=defaultLicense;
\ No newline at end of file
+var _0xb242=['version','../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','format','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch','get','data1','data2','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','update','encryptString','diff','decryptString','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','error','message','finally','getUuid','License','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','request-promise','bluebird','pkginfo'];(function(_0x1cda24,_0x5c260a){var _0x3ddbd1=function(_0x170ce3){while(--_0x170ce3){_0x1cda24['push'](_0x1cda24['shift']());}};_0x3ddbd1(++_0x5c260a);}(_0xb242,0xfd));var _0x2b24=function(_0x1c6089,_0x3816e2){_0x1c6089=_0x1c6089-0x0;var _0x4d97c1=_0xb242[_0x1c6089];return _0x4d97c1;};'use strict';var util=require(_0x2b24('0x0'));var moment=require(_0x2b24('0x1'));var rp=require(_0x2b24('0x2'));var BPromise=require(_0x2b24('0x3'));var pkginfo=require(_0x2b24('0x4'))(module,_0x2b24('0x5'));var db=require(_0x2b24('0x6'))['db'];var encryptor=require(_0x2b24('0x7'));var hardware=require(_0x2b24('0x8'));var logger=require(_0x2b24('0x9'))(_0x2b24('0xa'));var HOST=_0x2b24('0xb');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x3b3e33){return new BPromise(function(_0x49a405,_0x32a797){var _0x4dc0a8=util[_0x2b24('0xc')]('%s/api/servers/%s/check?version=%s',HOST,_0x3b3e33,module[_0x2b24('0xd')]['version']);if(oldToken){_0x4dc0a8=util[_0x2b24('0xc')](_0x2b24('0xe'),HOST,_0x3b3e33,module[_0x2b24('0xd')]['version'],oldToken);}var _0x42eace={'uri':_0x4dc0a8,'method':_0x2b24('0xf'),'timeout':0xea60,'json':!![]};return rp(_0x42eace)[_0x2b24('0x10')](function(_0x2567b7){_0x49a405(_0x2567b7);})[_0x2b24('0x11')](function(_0x20c957){_0x32a797(_0x20c957);});});}function manageLicense(_0x102d2f,_0x362bee){var _0x51bb5e=_0x362bee[_0x2b24('0x12')]({'plain':!![]});if(!isOldTokenSent&&_0x51bb5e[_0x2b24('0x13')]!==_0x102d2f&&!_0x51bb5e[_0x2b24('0x14')]){oldToken=_0x51bb5e[_0x2b24('0x13')];}httpRequest(_0x102d2f)['then'](function(_0x475ccc){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x475ccc[_0x2b24('0x15')]){isOldTokenSent=![];if(!_0x51bb5e[_0x2b24('0xa')]&&_0x51bb5e['license']!=_0x475ccc['license']||_0x51bb5e[_0x2b24('0xa')]&&_0x51bb5e[_0x2b24('0x14')]){logger[_0x2b24('0x16')]('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x51bb5e['license']&&!_0x51bb5e[_0x2b24('0x14')]&&_0x51bb5e['license']!=_0x475ccc[_0x2b24('0xa')]){logger[_0x2b24('0x16')](_0x2b24('0x17'));}if(_0x51bb5e[_0x2b24('0xa')]&&!_0x51bb5e[_0x2b24('0x14')]&&_0x51bb5e[_0x2b24('0xa')]==_0x475ccc['license']){return _0x362bee;}return _0x362bee['update']({'data1':_0x102d2f,'data2':null,'license':_0x475ccc['license']});}else{if(_0x475ccc[_0x2b24('0xa')]||_0x51bb5e[_0x2b24('0xa')]){if(!_0x51bb5e[_0x2b24('0x14')]){if(_0x51bb5e[_0x2b24('0x13')]==_0x102d2f){GRAY_PERIOD_REASON=_0x2b24('0x18');logger['info'](_0x2b24('0x19'));}else{GRAY_PERIOD_REASON=_0x2b24('0x1a');logger['info']('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x51bb5e[_0x2b24('0x13')],_0x102d2f);}logger[_0x2b24('0x16')](_0x2b24('0x1b'),GRAY_PERIOD_REASON[_0x2b24('0x1c')](),moment()[_0x2b24('0xc')](_0x2b24('0x1d')));return _0x362bee[_0x2b24('0x1e')]({'data2':encryptor[_0x2b24('0x1f')](moment()[_0x2b24('0xc')](_0x2b24('0x1d')))});}else{if(moment()[_0x2b24('0x20')](encryptor[_0x2b24('0x21')](_0x51bb5e[_0x2b24('0x14')]),'days')>DAYS){logger['info']('DEMO\x20START\x20AT\x20%s',moment()['format'](_0x2b24('0x1d')));isOldTokenSent=![];return _0x362bee['update']({'data1':_0x102d2f,'data2':null,'license':null});}}}else{if(_0x51bb5e[_0x2b24('0x13')]!=_0x102d2f){logger[_0x2b24('0x16')](_0x2b24('0x22'),_0x51bb5e[_0x2b24('0x13')],_0x102d2f);return _0x362bee[_0x2b24('0x1e')]({'data1':_0x102d2f,'data2':null,'license':null});}}}return _0x362bee;})[_0x2b24('0x10')](function(_0x423d99){_0x362bee=_0x423d99;})[_0x2b24('0x11')](function(_0xe9d740){logger[_0x2b24('0x23')](_0xe9d740[_0x2b24('0x24')]);})[_0x2b24('0x25')](function(){setTimeout(function(){manageLicense(hardware[_0x2b24('0x26')](),_0x362bee);},TIME);});}function defaultLicense(){var _0x515f39=hardware[_0x2b24('0x26')]();if(_0x515f39){return db[_0x2b24('0x27')]['findOrCreate']({'where':{'id':0x1},'defaults':{'data1':_0x515f39}})[_0x2b24('0x28')](function(_0x1f8982,_0x2e9a7d){logger[_0x2b24('0x16')](_0x2b24('0x29'),_0x515f39);manageLicense(_0x515f39,_0x1f8982);})[_0x2b24('0x11')](function(_0x13adb4){logger[_0x2b24('0x23')](_0x13adb4[_0x2b24('0x24')]);});}}exports[_0x2b24('0x2a')]=defaultLicense;
\ No newline at end of file
index 905fbf8..dc077cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5fc=['users','telephones','forEach','countBy','License\x20limit\x20reached\x20for\x20users','util','moment','bluebird','./hardware','../../components/encryptor','../../mysqldb','Demo\x20license','getUuid','2027-01-01T00:00:00.000Z','Breaking\x20license','License','find','defaults','then','catch','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','decryptString','%s:%s:%s','parse','demo','uuid','machineUuid','gray','deadline','add','days','changed','message','User','role','sequelize','COUNT','col','count','admin','user','telephone'];(function(_0x528399,_0x433287){var _0x137bba=function(_0xc9f226){while(--_0xc9f226){_0x528399['push'](_0x528399['shift']());}};_0x137bba(++_0x433287);}(_0xe5fc,0xf0));var _0xce5f=function(_0x15653a,_0x54d78d){_0x15653a=_0x15653a-0x0;var _0x433cda=_0xe5fc[_0x15653a];return _0x433cda;};'use strict';var util=require(_0xce5f('0x0'));var _=require('lodash');var moment=require(_0xce5f('0x1'));var BPromise=require(_0xce5f('0x2'));var hardware=require(_0xce5f('0x3'));var encryptor=require(_0xce5f('0x4'));var db=require(_0xce5f('0x5'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xce5f('0x6'),'machineUuid':hardware[_0xce5f('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xce5f('0x8'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xce5f('0x9'),'machineUuid':hardware[_0xce5f('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x35faec){return new BPromise(function(_0x32506b,_0x543e14){return db[_0xce5f('0xa')][_0xce5f('0xb')](_[_0xce5f('0xc')](_0x35faec,{'raw':!![],'where':{'id':0x1}}))[_0xce5f('0xd')](function(_0x2cce90){return checkLicense(_0x2cce90,null);})[_0xce5f('0xd')](function(_0x318772){_0x32506b(_0x318772);return;})[_0xce5f('0xe')](function(_0xb7e4cf){_0x543e14(_0xb7e4cf);});});}function checkLicense(_0x10e2c5,_0x397e8a){if(!_0x10e2c5){demoLicense['uuid']=_0x10e2c5[_0xce5f('0xf')];return demoLicense;}try{var _0x100437=_0x397e8a||_0x10e2c5[_0xce5f('0x10')];if(_[_0xce5f('0x11')](_0x100437)){throw new Error(_0xce5f('0x12'));}var _0x2892e7=_0x10e2c5[_0xce5f('0xf')];var _0x1d777b=_0x10e2c5[_0xce5f('0x13')];var _0x5c3b17=_0x2892e7[_0xce5f('0x14')]('-')[0x4];var _0xad580f=_0x2892e7[_0xce5f('0x14')]('-')[0x0];var _0x37887b=encryptor[_0xce5f('0x15')](_0x100437,util['format'](_0xce5f('0x16'),_0x5c3b17,_0x2892e7,_0xad580f));var _0xccaf2d=JSON[_0xce5f('0x17')](_0x37887b);_0xccaf2d[_0xce5f('0x18')]=![];_0xccaf2d[_0xce5f('0x19')]=_0x2892e7;_0xccaf2d[_0xce5f('0x1a')]=hardware[_0xce5f('0x7')]();if(_0x1d777b){var _0x1690d0=encryptor[_0xce5f('0x15')](_0x1d777b);_0xccaf2d[_0xce5f('0x1b')]=_0x1690d0;_0xccaf2d[_0xce5f('0x1c')]=moment(_0x1690d0)[_0xce5f('0x1d')](0x7,_0xce5f('0x1e'))['format']();_0xccaf2d['grayReason']=_0xccaf2d[_0xce5f('0x19')]!=_0xccaf2d[_0xce5f('0x1a')]?_0xce5f('0x1f'):'disabled';}return _0xccaf2d;}catch(_0x33569d){breakingLicense['uuid']=_0x10e2c5['data1'];breakingLicense[_0xce5f('0x20')]=_0x33569d[_0xce5f('0x20')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x48173f,_0x2b8d01){getLicense()[_0xce5f('0xd')](function(_0x2642ac){return db[_0xce5f('0x21')]['findAll']({'attributes':[_0xce5f('0x22'),[db[_0xce5f('0x23')]['fn'](_0xce5f('0x24'),db[_0xce5f('0x23')][_0xce5f('0x25')]('role')),_0xce5f('0x26')]],'group':'role','where':{'role':{'$or':[_0xce5f('0x27'),_0xce5f('0x28'),_0xce5f('0x29')]}},'raw':!![]})['then'](function(_0x1b118c){var _0x22b7f0={'user':_0x2642ac[_0xce5f('0x2a')]||0x0,'telephone':_0x2642ac[_0xce5f('0x2b')]||0x0};_0x1b118c[_0xce5f('0x2c')](function(_0x4f17e2){var _0x5066c6=_0x4f17e2[_0xce5f('0x22')]===_0xce5f('0x27')?_0xce5f('0x28'):_0x4f17e2[_0xce5f('0x22')];_0x22b7f0[_0x5066c6]-=_0x4f17e2[_0xce5f('0x26')];if(_0x22b7f0[_0x5066c6]<0x0)_0x22b7f0[_0x5066c6]=0x0;});_0x48173f(_0x22b7f0);return;});})['catch'](function(_0x39b0c6){_0x2b8d01(_0x39b0c6);});});}function checkUserLimits(_0x4187bc){return new BPromise(function(_0xb06700,_0x152a53){getLimits()[_0xce5f('0xd')](function(_0x1fb823){var _0x3f4be9=_['pick'](_[_0xce5f('0x2d')](_0x4187bc,_0xce5f('0x22')),[_0xce5f('0x27'),_0xce5f('0x28'),_0xce5f('0x29')]);var _0x3f0a1c=(_0x3f4be9[_0xce5f('0x27')]||0x0)+(_0x3f4be9['user']||0x0);var _0x1bdb8e=_0x3f4be9[_0xce5f('0x29')]||0x0;if(_0x3f0a1c>_0x1fb823['user'])return _0x152a53(_0xce5f('0x2e'));if(_0x1bdb8e>_0x1fb823[_0xce5f('0x29')])return _0x152a53('License\x20limit\x20reached\x20for\x20telephones');return _0xb06700();})[_0xce5f('0xe')](function(_0x4bc566){_0x152a53(_0x4bc566);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x9e57=['admin','user','users','telephones','countBy','telephone','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','moment','bluebird','./hardware','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','find','defaults','then','catch','license','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','decryptString','format','parse','demo','machineUuid','deadline','add','days','grayReason','uuid','data1','message','User','findAll','role','sequelize','COUNT','col','count'];(function(_0x4d95d6,_0x174f6d){var _0x514e10=function(_0x729f74){while(--_0x729f74){_0x4d95d6['push'](_0x4d95d6['shift']());}};_0x514e10(++_0x174f6d);}(_0x9e57,0x65));var _0x79e5=function(_0x50e0be,_0x2e0b7b){_0x50e0be=_0x50e0be-0x0;var _0x2e6b40=_0x9e57[_0x50e0be];return _0x2e6b40;};'use strict';var util=require(_0x79e5('0x0'));var _=require(_0x79e5('0x1'));var moment=require(_0x79e5('0x2'));var BPromise=require(_0x79e5('0x3'));var hardware=require(_0x79e5('0x4'));var encryptor=require('../../components/encryptor');var db=require(_0x79e5('0x5'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x79e5('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x79e5('0x7'),'machineUuid':hardware[_0x79e5('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x79e5('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':'Breaking\x20license','machineUuid':hardware[_0x79e5('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x32958b){return new BPromise(function(_0xc86008,_0x578a86){return db['License'][_0x79e5('0x9')](_[_0x79e5('0xa')](_0x32958b,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x2659b1){return checkLicense(_0x2659b1,null);})[_0x79e5('0xb')](function(_0x9d4cbd){_0xc86008(_0x9d4cbd);return;})[_0x79e5('0xc')](function(_0x35a444){_0x578a86(_0x35a444);});});}function checkLicense(_0x380178,_0x64f737){if(!_0x380178){demoLicense['uuid']=_0x380178['data1'];return demoLicense;}try{var _0x14e0da=_0x64f737||_0x380178[_0x79e5('0xd')];if(_[_0x79e5('0xe')](_0x14e0da)){throw new Error(_0x79e5('0xf'));}var _0xb5e1be=_0x380178['data1'];var _0x110b56=_0x380178[_0x79e5('0x10')];var _0x4c3529=_0xb5e1be[_0x79e5('0x11')]('-')[0x4];var _0x2853f9=_0xb5e1be[_0x79e5('0x11')]('-')[0x0];var _0x3acfbe=encryptor[_0x79e5('0x12')](_0x14e0da,util[_0x79e5('0x13')]('%s:%s:%s',_0x4c3529,_0xb5e1be,_0x2853f9));var _0x416874=JSON[_0x79e5('0x14')](_0x3acfbe);_0x416874[_0x79e5('0x15')]=![];_0x416874['uuid']=_0xb5e1be;_0x416874[_0x79e5('0x16')]=hardware[_0x79e5('0x8')]();if(_0x110b56){var _0x3f284a=encryptor[_0x79e5('0x12')](_0x110b56);_0x416874['gray']=_0x3f284a;_0x416874[_0x79e5('0x17')]=moment(_0x3f284a)[_0x79e5('0x18')](0x7,_0x79e5('0x19'))[_0x79e5('0x13')]();_0x416874[_0x79e5('0x1a')]=_0x416874['uuid']!=_0x416874[_0x79e5('0x16')]?'changed':'disabled';}return _0x416874;}catch(_0x29b4a2){breakingLicense[_0x79e5('0x1b')]=_0x380178[_0x79e5('0x1c')];breakingLicense[_0x79e5('0x1d')]=_0x29b4a2[_0x79e5('0x1d')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x56f2aa,_0x234fa2){getLicense()[_0x79e5('0xb')](function(_0x4abcad){return db[_0x79e5('0x1e')][_0x79e5('0x1f')]({'attributes':[_0x79e5('0x20'),[db[_0x79e5('0x21')]['fn'](_0x79e5('0x22'),db['sequelize'][_0x79e5('0x23')](_0x79e5('0x20'))),_0x79e5('0x24')]],'group':'role','where':{'role':{'$or':[_0x79e5('0x25'),_0x79e5('0x26'),'telephone']}},'raw':!![]})[_0x79e5('0xb')](function(_0x778fc4){var _0x153f4f={'user':_0x4abcad[_0x79e5('0x27')]||0x0,'telephone':_0x4abcad[_0x79e5('0x28')]||0x0};_0x778fc4['forEach'](function(_0x54d86b){var _0x2da46a=_0x54d86b[_0x79e5('0x20')]===_0x79e5('0x25')?_0x79e5('0x26'):_0x54d86b[_0x79e5('0x20')];_0x153f4f[_0x2da46a]-=_0x54d86b['count'];if(_0x153f4f[_0x2da46a]<0x0)_0x153f4f[_0x2da46a]=0x0;});_0x56f2aa(_0x153f4f);return;});})[_0x79e5('0xc')](function(_0x5ec8b7){_0x234fa2(_0x5ec8b7);});});}function checkUserLimits(_0x8b8f01){return new BPromise(function(_0x3d8c03,_0xa9960b){getLimits()['then'](function(_0x4e72a6){var _0x516e44=_['pick'](_[_0x79e5('0x29')](_0x8b8f01,_0x79e5('0x20')),[_0x79e5('0x25'),'user','telephone']);var _0x2bb3e0=(_0x516e44['admin']||0x0)+(_0x516e44[_0x79e5('0x26')]||0x0);var _0x22e680=_0x516e44[_0x79e5('0x2a')]||0x0;if(_0x2bb3e0>_0x4e72a6[_0x79e5('0x26')])return _0xa9960b(_0x79e5('0x2b'));if(_0x22e680>_0x4e72a6['telephone'])return _0xa9960b(_0x79e5('0x2c'));return _0x3d8c03();})[_0x79e5('0xc')](function(_0x10fb76){_0xa9960b(_0x10fb76);});});}module[_0x79e5('0x2d')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 41e7c62..1b9f299 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['exports','myappanuglar-secret','app-id','secret'];(function(_0x5dd335,_0x10d72a){var _0x35d3b4=function(_0x435dc6){while(--_0x435dc6){_0x5dd335['push'](_0x5dd335['shift']());}};_0x35d3b4(++_0x10d72a);}(_0xef0f,0x168));var _0xfef0=function(_0x316c00,_0x1cca31){_0x316c00=_0x316c00-0x0;var _0x8d4b88=_0xef0f[_0x316c00];return _0x8d4b88;};'use strict';module[_0xfef0('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0xfef0('0x1'),'GOOGLE_ID':_0xfef0('0x2'),'GOOGLE_SECRET':_0xfef0('0x3'),'DEBUG':''};
\ No newline at end of file
+var _0xcf66=['secret','exports','http://localhost:9000','myappanuglar-secret'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xcf66,0x71));var _0x6cf6=function(_0x4ab5d1,_0x307369){_0x4ab5d1=_0x4ab5d1-0x0;var _0x3a1f94=_0xcf66[_0x4ab5d1];return _0x3a1f94;};'use strict';module[_0x6cf6('0x0')]={'DOMAIN':_0x6cf6('0x1'),'SESSION_SECRET':_0x6cf6('0x2'),'GOOGLE_ID':'app-id','GOOGLE_SECRET':_0x6cf6('0x3'),'DEBUG':''};
\ No newline at end of file
index 67c495e..04f3a5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fd0=['}}}','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','exports','Logger','transports','File','%s-%s','error','info','env','debugLevel','moment','winston','INFO','join','/var','log','xcally','format','%s-%s.log','message','replace'];(function(_0xbebf50,_0x44ec09){var _0xce1496=function(_0x1bf94d){while(--_0x1bf94d){_0xbebf50['push'](_0xbebf50['shift']());}};_0xce1496(++_0x44ec09);}(_0x9fd0,0x9d));var _0x09fd=function(_0x43014f,_0x108442){_0x43014f=_0x43014f-0x0;var _0x200ff0=_0x9fd0[_0x43014f];return _0x200ff0;};'use strict';var moment=require(_0x09fd('0x0'));var winston=require(_0x09fd('0x1'));var util=require('util');var path=require('path');var debugLevel=_0x09fd('0x2');function filename(_0x2c96ee,_0x307570){return path[_0x09fd('0x3')](_0x09fd('0x4'),_0x09fd('0x5'),_0x09fd('0x6'),util[_0x09fd('0x7')](_0x09fd('0x8'),_0x2c96ee,_0x307570));}function formatter(_0x2ec740,_0x4120c0){_0x4120c0[_0x09fd('0x9')]=_0x4120c0[_0x09fd('0x9')][_0x09fd('0xa')](/@@{/g,'{{{')[_0x09fd('0xa')](/}@@/g,_0x09fd('0xb'))['replace'](/@{/g,'{{')[_0x09fd('0xa')](/}@/g,'}}');return util[_0x09fd('0x7')]('[%s]\x20[%s]\x20%s\x20-\x20%s',moment()['format'](_0x09fd('0xc')),_0x4120c0[_0x09fd('0xd')][_0x09fd('0xe')](),_0x2ec740,_0x4120c0['message']);}module[_0x09fd('0xf')]=function(_0x59014c){return new winston[(_0x09fd('0x10'))]({'transports':[new winston[(_0x09fd('0x11'))][(_0x09fd('0x12'))]({'name':util['format'](_0x09fd('0x13'),_0x59014c,_0x09fd('0x14')),'filename':filename(_0x59014c,'error'),'level':_0x09fd('0x14'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x1e1939){return formatter(_0x59014c,_0x1e1939);}}),new winston[(_0x09fd('0x11'))][(_0x09fd('0x12'))]({'name':util[_0x09fd('0x7')](_0x09fd('0x13'),_0x59014c,_0x09fd('0x15')),'filename':filename(_0x59014c,_0x09fd('0x15')),'level':_0x09fd('0x15'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x56df1e){return formatter(_0x59014c,_0x56df1e);}}),new winston[(_0x09fd('0x11'))]['Console']({'level':process[_0x09fd('0x16')][_0x09fd('0x17')]||debugLevel,'json':![],'formatter':function(_0x5ae878){return formatter(_0x59014c,_0x5ae878);}})]});};
\ No newline at end of file
+var _0xb2bb=['xcally','%s-%s.log','message','replace','{{{','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','format','level','toUpperCase','exports','Logger','transports','File','%s-%s','error','info','Console','debugLevel','moment','INFO','join','log'];(function(_0x411926,_0x30d5f0){var _0x457e62=function(_0x4469f3){while(--_0x4469f3){_0x411926['push'](_0x411926['shift']());}};_0x457e62(++_0x30d5f0);}(_0xb2bb,0x183));var _0xbb2b=function(_0x3bb5b4,_0x128455){_0x3bb5b4=_0x3bb5b4-0x0;var _0x586c60=_0xb2bb[_0x3bb5b4];return _0x586c60;};'use strict';var moment=require(_0xbb2b('0x0'));var winston=require('winston');var util=require('util');var path=require('path');var debugLevel=_0xbb2b('0x1');function filename(_0x2ae972,_0x456d07){return path[_0xbb2b('0x2')]('/var',_0xbb2b('0x3'),_0xbb2b('0x4'),util['format'](_0xbb2b('0x5'),_0x2ae972,_0x456d07));}function formatter(_0x4b9f18,_0xc5155b){_0xc5155b[_0xbb2b('0x6')]=_0xc5155b[_0xbb2b('0x6')][_0xbb2b('0x7')](/@@{/g,_0xbb2b('0x8'))[_0xbb2b('0x7')](/}@@/g,_0xbb2b('0x9'))[_0xbb2b('0x7')](/@{/g,'{{')[_0xbb2b('0x7')](/}@/g,'}}');return util['format'](_0xbb2b('0xa'),moment()[_0xbb2b('0xb')]('YYYY-MM-DD\x20HH:mm:ss'),_0xc5155b[_0xbb2b('0xc')][_0xbb2b('0xd')](),_0x4b9f18,_0xc5155b[_0xbb2b('0x6')]);}module[_0xbb2b('0xe')]=function(_0x52985d){return new winston[(_0xbb2b('0xf'))]({'transports':[new winston[(_0xbb2b('0x10'))][(_0xbb2b('0x11'))]({'name':util[_0xbb2b('0xb')](_0xbb2b('0x12'),_0x52985d,'error'),'filename':filename(_0x52985d,_0xbb2b('0x13')),'level':_0xbb2b('0x13'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x30fce2){return formatter(_0x52985d,_0x30fce2);}}),new winston['transports'][(_0xbb2b('0x11'))]({'name':util['format'](_0xbb2b('0x12'),_0x52985d,'info'),'filename':filename(_0x52985d,_0xbb2b('0x14')),'level':_0xbb2b('0x14'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x471b70){return formatter(_0x52985d,_0x471b70);}}),new winston[(_0xbb2b('0x10'))][(_0xbb2b('0x15'))]({'level':process['env'][_0xbb2b('0x16')]||debugLevel,'json':![],'formatter':function(_0x2ae0e8){return formatter(_0x52985d,_0x2ae0e8);}})]});};
\ No newline at end of file
index 078932f..f6068cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bf2=['../../services/agi/index.js','../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports','express','../../services/express/index.js','ami','join','../../services/ami/index.js','agi'];(function(_0x1793cf,_0x583e4b){var _0x4ce5da=function(_0x9e0bdb){while(--_0x9e0bdb){_0x1793cf['push'](_0x1793cf['shift']());}};_0x4ce5da(++_0x583e4b);}(_0x0bf2,0x159));var _0x20bf=function(_0x35fbc8,_0x4d71f9){_0x35fbc8=_0x35fbc8-0x0;var _0x2a49d9=_0x0bf2[_0x35fbc8];return _0x2a49d9;};'use strict';var path=require('path');var os=require('os');var config={'apps':[{'name':_0x20bf('0x0'),'script':path['join'](__dirname,_0x20bf('0x1'))},{'name':_0x20bf('0x2'),'script':path[_0x20bf('0x3')](__dirname,_0x20bf('0x4'))},{'name':_0x20bf('0x5'),'script':path[_0x20bf('0x3')](__dirname,_0x20bf('0x6'))},{'name':'email','script':path[_0x20bf('0x3')](__dirname,_0x20bf('0x7'))},{'name':_0x20bf('0x8'),'script':path[_0x20bf('0x3')](__dirname,_0x20bf('0x9'))},{'name':_0x20bf('0xa'),'script':path[_0x20bf('0x3')](__dirname,_0x20bf('0xb'))}]};module[_0x20bf('0xc')]=config;
\ No newline at end of file
+var _0xff1a=['exports','path','join','../../services/express/index.js','ami','../../services/ami/index.js','agi','../../services/agi/index.js','email','../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js'];(function(_0x3411a4,_0x60d585){var _0x4eb325=function(_0x2356d4){while(--_0x2356d4){_0x3411a4['push'](_0x3411a4['shift']());}};_0x4eb325(++_0x60d585);}(_0xff1a,0x8d));var _0xaff1=function(_0x32863d,_0x4a0dfc){_0x32863d=_0x32863d-0x0;var _0x3cfaea=_0xff1a[_0x32863d];return _0x3cfaea;};'use strict';var path=require(_0xaff1('0x0'));var os=require('os');var config={'apps':[{'name':'express','script':path[_0xaff1('0x1')](__dirname,_0xaff1('0x2'))},{'name':_0xaff1('0x3'),'script':path[_0xaff1('0x1')](__dirname,_0xaff1('0x4'))},{'name':_0xaff1('0x5'),'script':path[_0xaff1('0x1')](__dirname,_0xaff1('0x6'))},{'name':_0xaff1('0x7'),'script':path[_0xaff1('0x1')](__dirname,_0xaff1('0x8'))},{'name':_0xaff1('0x9'),'script':path[_0xaff1('0x1')](__dirname,_0xaff1('0xa'))},{'name':_0xaff1('0xb'),'script':path[_0xaff1('0x1')](__dirname,_0xaff1('0xc'))}]};module[_0xaff1('0xd')]=config;
\ No newline at end of file
index d3fe3b5..989f385 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0262=['stop','restart','then','list','describe','delete','dump','pm2','bluebird','connect','connected','start','disconnect'];(function(_0x117f85,_0x5afa65){var _0x1c61a7=function(_0x5be223){while(--_0x5be223){_0x117f85['push'](_0x117f85['shift']());}};_0x1c61a7(++_0x5afa65);}(_0x0262,0x18d));var _0x2026=function(_0x205acf,_0x24cf00){_0x205acf=_0x205acf-0x0;var _0x4b1251=_0x0262[_0x205acf];return _0x4b1251;};'use strict';var pm2=require(_0x2026('0x0'));var BPromise=require(_0x2026('0x1'));var config=require('./config');function connect(){return new BPromise(function(_0x43dd68,_0x1dcfcb){return pm2[_0x2026('0x2')](function(_0x414ca1){if(_0x414ca1){return _0x1dcfcb(_0x414ca1);}return _0x43dd68(_0x2026('0x3'));});});};exports[_0x2026('0x4')]=function(_0x102293){return connect()['then'](function(){return new BPromise(function(_0x561790,_0x17a6d0){return pm2[_0x2026('0x4')](_0x102293,function(_0x399471,_0x5a3e6f){if(_0x399471){return _0x17a6d0(_0x399471);}pm2[_0x2026('0x5')]();return _0x561790(_0x5a3e6f);});});});};exports['stop']=function(_0x1f13b6){return connect()['then'](function(){return new BPromise(function(_0x1b0039,_0x3c2ac5){return pm2[_0x2026('0x6')](_0x1f13b6,function(_0x3d6392,_0x1ef50b){if(_0x3d6392){return _0x3c2ac5(_0x3d6392);}pm2['disconnect']();return _0x1b0039(_0x1ef50b);});});});};exports[_0x2026('0x7')]=function(_0x5b0522){return connect()[_0x2026('0x8')](function(){return new BPromise(function(_0x25abc7,_0x552ba8){return pm2[_0x2026('0x7')](_0x5b0522,function(_0x403ebb,_0x2476b0){if(_0x403ebb){return _0x552ba8(_0x403ebb);}pm2[_0x2026('0x5')]();return _0x25abc7(_0x2476b0);});});});};exports[_0x2026('0x9')]=function(){return connect()[_0x2026('0x8')](function(){return new BPromise(function(_0xb923f9,_0x1367f6){return pm2['list'](function(_0x1726a2,_0x4f5409){if(_0x1726a2){return _0x1367f6(_0x1726a2);}pm2[_0x2026('0x5')]();return _0xb923f9(_0x4f5409);});});});};exports[_0x2026('0xa')]=function(_0x116fc8){return connect()[_0x2026('0x8')](function(){return new BPromise(function(_0x2d48bf,_0x208040){return pm2[_0x2026('0xa')](_0x116fc8,function(_0x3dd2b8,_0x51ac9f){if(_0x3dd2b8){return _0x208040(_0x3dd2b8);}pm2['disconnect']();return _0x2d48bf(_0x51ac9f);});});});};exports[_0x2026('0xb')]=function(_0x3ac68d){return connect()[_0x2026('0x8')](function(){return new BPromise(function(_0x38fb7b,_0x39d57f){return pm2['delete'](_0x3ac68d,function(_0x18da5e,_0x5456be){if(_0x18da5e){return _0x39d57f(_0x18da5e);}pm2[_0x2026('0x5')]();return _0x38fb7b(_0x5456be);});});});};exports[_0x2026('0xc')]=function(){return connect()[_0x2026('0x8')](function(){return new BPromise(function(_0x4d0f31,_0x4d8848){return pm2[_0x2026('0xc')](function(_0x554929){if(_0x554929){return _0x4d8848(_0x554929);}return _0x4d0f31('saved');});});});};
\ No newline at end of file
+var _0x6941=['connect','connected','start','then','disconnect','stop','restart','list','describe','delete','dump','pm2','bluebird'];(function(_0x5d7b48,_0x1c8eaa){var _0x31bd82=function(_0x3632d5){while(--_0x3632d5){_0x5d7b48['push'](_0x5d7b48['shift']());}};_0x31bd82(++_0x1c8eaa);}(_0x6941,0x184));var _0x1694=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x6941[_0x56482c];return _0x5aae7a;};'use strict';var pm2=require(_0x1694('0x0'));var BPromise=require(_0x1694('0x1'));var config=require('./config');function connect(){return new BPromise(function(_0x46a7ba,_0x3b8f68){return pm2[_0x1694('0x2')](function(_0x3e7fb9){if(_0x3e7fb9){return _0x3b8f68(_0x3e7fb9);}return _0x46a7ba(_0x1694('0x3'));});});};exports[_0x1694('0x4')]=function(_0x8273cc){return connect()[_0x1694('0x5')](function(){return new BPromise(function(_0x5c568e,_0x564f35){return pm2[_0x1694('0x4')](_0x8273cc,function(_0xbe0b44,_0x1a4b5e){if(_0xbe0b44){return _0x564f35(_0xbe0b44);}pm2[_0x1694('0x6')]();return _0x5c568e(_0x1a4b5e);});});});};exports['stop']=function(_0x5de6b8){return connect()[_0x1694('0x5')](function(){return new BPromise(function(_0x294e33,_0x21896c){return pm2[_0x1694('0x7')](_0x5de6b8,function(_0xe3fbbd,_0x344d2b){if(_0xe3fbbd){return _0x21896c(_0xe3fbbd);}pm2[_0x1694('0x6')]();return _0x294e33(_0x344d2b);});});});};exports[_0x1694('0x8')]=function(_0x15736f){return connect()[_0x1694('0x5')](function(){return new BPromise(function(_0x57ad60,_0x32cc64){return pm2['restart'](_0x15736f,function(_0x3d0fbc,_0x322784){if(_0x3d0fbc){return _0x32cc64(_0x3d0fbc);}pm2[_0x1694('0x6')]();return _0x57ad60(_0x322784);});});});};exports[_0x1694('0x9')]=function(){return connect()['then'](function(){return new BPromise(function(_0x268115,_0x2a7844){return pm2[_0x1694('0x9')](function(_0x149d50,_0x16c290){if(_0x149d50){return _0x2a7844(_0x149d50);}pm2['disconnect']();return _0x268115(_0x16c290);});});});};exports['describe']=function(_0x44fc78){return connect()[_0x1694('0x5')](function(){return new BPromise(function(_0x1ac74f,_0xda3c90){return pm2[_0x1694('0xa')](_0x44fc78,function(_0x9cda79,_0x3f4e30){if(_0x9cda79){return _0xda3c90(_0x9cda79);}pm2[_0x1694('0x6')]();return _0x1ac74f(_0x3f4e30);});});});};exports['delete']=function(_0x9d3cbc){return connect()[_0x1694('0x5')](function(){return new BPromise(function(_0xdde085,_0x475dc1){return pm2[_0x1694('0xb')](_0x9d3cbc,function(_0x397770,_0x47b578){if(_0x397770){return _0x475dc1(_0x397770);}pm2['disconnect']();return _0xdde085(_0x47b578);});});});};exports[_0x1694('0xc')]=function(){return connect()['then'](function(){return new BPromise(function(_0x49951c,_0x2b9f4a){return pm2['dump'](function(_0x5398c1){if(_0x5398c1){return _0x2b9f4a(_0x5398c1);}return _0x49951c('saved');});});});};
\ No newline at end of file
index 86770fb..b9362ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x359d=['lodash','moment','ioredis','util','../../config/environment','../../mysqldb','schedule','redis','localhost','Setting','find','then','chatTimeout','ChatInteraction','findAll','subtract','minutes','length','map','[CHAT]\x20Interactions\x20to\x20close:','update','system','timeout','format','info','join','emit','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start'];(function(_0x3eadef,_0x4eb7fc){var _0x4db5e2=function(_0x25a430){while(--_0x25a430){_0x3eadef['push'](_0x3eadef['shift']());}};_0x4db5e2(++_0x4eb7fc);}(_0x359d,0xc6));var _0xd359=function(_0x4a3898,_0x4c9853){_0x4a3898=_0x4a3898-0x0;var _0x25ceb0=_0x359d[_0x4a3898];return _0x25ceb0;};'use strict';var _=require(_0xd359('0x0'));var moment=require(_0xd359('0x1'));var Redis=require(_0xd359('0x2'));var util=require(_0xd359('0x3'));var config=require(_0xd359('0x4'));var db=require(_0xd359('0x5'))['db'];var logger=require('../logger')(_0xd359('0x6'));config[_0xd359('0x7')]=_['defaults'](config[_0xd359('0x7')],{'host':_0xd359('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xd359('0x7')]));function closeInteractions(){var _0x35c99d=0x0;var _0x6a834e=[];return db[_0xd359('0x9')][_0xd359('0xa')]({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})[_0xd359('0xb')](function(_0x2c2bd7){_0x35c99d=_0x2c2bd7[_0xd359('0xc')];if(_0x35c99d){return db[_0xd359('0xd')][_0xd359('0xe')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xd359('0xf')](_0x2c2bd7['chatTimeout'],_0xd359('0x10'))}}});}else{return[];}})['then'](function(_0x136f48){if(_0x136f48&&_0x136f48[_0xd359('0x11')]){_0x6a834e=_[_0xd359('0x12')](_0x136f48||[],'id');logger['info'](_0xd359('0x13'),_0x6a834e['join']());return db[_0xd359('0xd')][_0xd359('0x14')]({'closeReason':_0xd359('0x15'),'disposition':_0xd359('0x16'),'closed':!![],'closedAt':moment()[_0xd359('0x17')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x6a834e}});}})[_0xd359('0xb')](function(){if(_0x6a834e&&_0x6a834e['length']){logger[_0xd359('0x18')]('[CHAT]\x20Sending\x20updates\x20for\x20interactions:',_0x6a834e[_0xd359('0x19')]());for(var _0x1de317=0x0;_0x1de317<_0x6a834e[_0xd359('0x11')];_0x1de317++){io[_0xd359('0x1a')](_0xd359('0x1b'),{'id':_0x6a834e[_0x1de317],'closed':!![]});}}})[_0xd359('0x1c')](function(_0x151679){logger[_0xd359('0x1d')](_0xd359('0x1e'),_0x151679?util[_0xd359('0x1f')](_0x151679,{'showHidden':![],'depth':null}):'');});}exports[_0xd359('0x20')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x3dfd=['chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','util','../../config/environment','../../mysqldb','../logger','schedule','redis','localhost','socket.io-emitter','Setting','find','then','chatTimeout','findAll','lastMsgAt','minutes','length','map','info','[CHAT]\x20Interactions\x20to\x20close:','update','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','join','emit'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x3dfd,0x12f));var _0xd3df=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x3dfd[_0x4b055c];return _0x4b62bb;};'use strict';var _=require(_0xd3df('0x0'));var moment=require(_0xd3df('0x1'));var Redis=require('ioredis');var util=require(_0xd3df('0x2'));var config=require(_0xd3df('0x3'));var db=require(_0xd3df('0x4'))['db'];var logger=require(_0xd3df('0x5'))(_0xd3df('0x6'));config[_0xd3df('0x7')]=_['defaults'](config[_0xd3df('0x7')],{'host':_0xd3df('0x8'),'port':0x18eb});var io=require(_0xd3df('0x9'))(new Redis(config[_0xd3df('0x7')]));function closeInteractions(){var _0xacadeb=0x0;var _0x135f95=[];return db[_0xd3df('0xa')][_0xd3df('0xb')]({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})[_0xd3df('0xc')](function(_0x4b423a){_0xacadeb=_0x4b423a[_0xd3df('0xd')];if(_0xacadeb){return db['ChatInteraction'][_0xd3df('0xe')]({'raw':!![],'attributes':['id',_0xd3df('0xf')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()['subtract'](_0x4b423a[_0xd3df('0xd')],_0xd3df('0x10'))}}});}else{return[];}})[_0xd3df('0xc')](function(_0xf3225c){if(_0xf3225c&&_0xf3225c[_0xd3df('0x11')]){_0x135f95=_[_0xd3df('0x12')](_0xf3225c||[],'id');logger[_0xd3df('0x13')](_0xd3df('0x14'),_0x135f95['join']());return db['ChatInteraction'][_0xd3df('0x15')]({'closeReason':'system','disposition':'timeout','closed':!![],'closedAt':moment()[_0xd3df('0x16')](_0xd3df('0x17'))},{'where':{'id':_0x135f95}});}})['then'](function(){if(_0x135f95&&_0x135f95[_0xd3df('0x11')]){logger[_0xd3df('0x13')](_0xd3df('0x18'),_0x135f95[_0xd3df('0x19')]());for(var _0x13df2e=0x0;_0x13df2e<_0x135f95['length'];_0x13df2e++){io[_0xd3df('0x1a')](_0xd3df('0x1b'),{'id':_0x135f95[_0x13df2e],'closed':!![]});}}})[_0xd3df('0x1c')](function(_0x3ab67c){logger[_0xd3df('0x1d')](_0xd3df('0x1e'),_0x3ab67c?util[_0xd3df('0x1f')](_0x3ab67c,{'showHidden':![],'depth':null}):'');});}exports[_0xd3df('0x20')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 7e819f5..f436b58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1775=['bcc','format','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','savename','basename','zip','existsSync','message','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','Sent','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','empty\x20file,\x20email\x20not\x20sent','request','SendMail','error','error\x20mail','stringify','email\x20sent','catch','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','name','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','then','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id','Schedule','MailServerOut','toString','keyBy','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','index','my\x20id','resolve','run\x20job','cron','isBetween','startAt','endAt','start','add\x20cron','stop\x20cron','active','update','run','util','path','lodash','moment','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','service','Smtp','host','port','secure','authentication','auth','pass','\x22%s\x22\x20<%s>','user'];(function(_0x3cb465,_0x36d920){var _0x4e197b=function(_0x25fd7d){while(--_0x25fd7d){_0x3cb465['push'](_0x3cb465['shift']());}};_0x4e197b(++_0x36d920);}(_0x1775,0x99));var _0x5177=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x1775[_0x432682];return _0x463d05;};'use strict';var fs=require('fs');var util=require(_0x5177('0x0'));var path=require(_0x5177('0x1'));var _=require(_0x5177('0x2'));var moment=require(_0x5177('0x3'));var CronJobManager=require('cron-job-manager');var jayson=require('jayson/promise');var BPromise=require(_0x5177('0x4'));var logger=require(_0x5177('0x5'))(_0x5177('0x6'));var db=require(_0x5177('0x7'))['db'];var analyticCustomReportController=require(_0x5177('0x8'));var analyticDefaultReportController=require(_0x5177('0x9'));var client=jayson['client'][_0x5177('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x8de98c,_0x161041){return function(){logger[_0x5177('0xb')](_0x5177('0xc'),_0x8de98c[_0x5177('0xd')]);var _0x1e5a5b=!![];var _0x210f01={'tls':{'rejectUnauthorized':![]}};if(_0x8de98c[_0x5177('0xe')]['Smtp'][_0x5177('0xf')]){_0x210f01[_0x5177('0xf')]=_0x8de98c[_0x5177('0xe')][_0x5177('0x10')][_0x5177('0xf')];}else{_0x210f01['host']=_0x8de98c[_0x5177('0xe')][_0x5177('0x10')][_0x5177('0x11')];_0x210f01[_0x5177('0x12')]=_0x8de98c['MailAccount'][_0x5177('0x10')][_0x5177('0x12')];_0x210f01[_0x5177('0x13')]=_0x8de98c[_0x5177('0xe')][_0x5177('0x10')][_0x5177('0x13')];}if(_0x8de98c[_0x5177('0xe')][_0x5177('0x10')][_0x5177('0x14')]){_0x210f01[_0x5177('0x15')]={'user':_0x8de98c[_0x5177('0xe')][_0x5177('0x10')]['user'],'pass':_0x8de98c['MailAccount'][_0x5177('0x10')][_0x5177('0x16')]};}var _0x2c1282={'account':_0x210f01,'message':{'from':util['format'](_0x5177('0x17'),_0x8de98c[_0x5177('0xe')]['name'],_0x8de98c['MailAccount'][_0x5177('0xd')]||_0x8de98c[_0x5177('0xe')][_0x5177('0x10')][_0x5177('0x18')]),'to':_0x8de98c[_0x5177('0xd')],'cc':_0x8de98c['cc'],'bcc':_0x8de98c[_0x5177('0x19')],'subject':util[_0x5177('0x1a')](_0x5177('0x1b'),_0x161041['name'],_0x8de98c[_0x5177('0x1c')],_0x8de98c[_0x5177('0x1d')])}};var _0x1767eb=path[_0x5177('0x1e')](__dirname,'../../files/reports');var _0x4ff95b=_0x161041[_0x5177('0x1f')];var _0x387be9=util[_0x5177('0x1a')]('%s.%s',path[_0x5177('0x20')](_0x161041[_0x5177('0x1f')],path['extname'](_0x161041[_0x5177('0x1f')])),_0x5177('0x21'));var _0x2e7185=path[_0x5177('0x1e')](_0x1767eb,_0x4ff95b);var _0x3cafac=path[_0x5177('0x1e')](_0x1767eb,_0x387be9);if(fs[_0x5177('0x22')](_0x2e7185)){_0x161041['status']='Sent';_0x2c1282[_0x5177('0x23')][_0x5177('0x24')]=[{'filename':_0x4ff95b,'path':_0x2e7185}];_0x2c1282[_0x5177('0x23')][_0x5177('0x25')]=util['format'](_0x5177('0x26'),JSON['stringify'](_0x161041,null,0x2));}else if(fs[_0x5177('0x22')](_0x3cafac)){_0x161041['status']=_0x5177('0x27');_0x2c1282[_0x5177('0x23')]['attachments']=[{'filename':_0x387be9,'path':_0x3cafac}];}else{_0x2c1282[_0x5177('0x23')][_0x5177('0x25')]=_0x5177('0x28');if(!_0x8de98c['sendIfEmpty']){_0x1e5a5b=![];logger[_0x5177('0xb')](_0x5177('0x29'));}}if(_0x1e5a5b){return client[_0x5177('0x2a')](_0x5177('0x2b'),_0x2c1282)['then'](function(_0x4728e2){if(_0x4728e2[_0x5177('0x2c')]){return logger[_0x5177('0x2c')](_0x5177('0x2d'),JSON[_0x5177('0x2e')](_0x4728e2));}return logger[_0x5177('0xb')](_0x5177('0x2f'));})[_0x5177('0x30')](function(_0x48d174){return logger['error'](_0x5177('0x2d'),JSON['stringify'](_0x48d174));});}};}function handleError(){return function(_0x2dfc8d){return logger[_0x5177('0x2c')](JSON['stringify'](_0x2dfc8d));};}function handleResult(_0x111a28){return function(_0x8e2fab){logger[_0x5177('0xb')]('data',JSON[_0x5177('0x2e')](_0x8e2fab));if(_0x111a28[_0x5177('0xe')]&&_0x111a28['MailAccount']['Smtp']&&!_[_0x5177('0x31')](_0x111a28['email'])){setTimeout(handleSendEmail(_0x111a28,_0x8e2fab),0x3c*0x3e8);}};}function handleJob(_0xdfe83a){return function(){try{if(_[_0x5177('0x31')](_0xdfe83a[_0x5177('0x1c')])){return logger[_0x5177('0xb')](_0x5177('0x32'));}if(_[_0x5177('0x31')](_0xdfe83a['subtractUnit'])){return logger[_0x5177('0xb')](_0x5177('0x33'));}var _0x31417b={'startDate':moment()[_0x5177('0x34')](_0xdfe83a[_0x5177('0x1c')],_0xdfe83a[_0x5177('0x1d')])['format']('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()['format'](_0x5177('0x35')),'type':_0x5177('0x36'),'output':_0xdfe83a[_0x5177('0x37')],'name':_0xdfe83a[_0x5177('0x38')]};if(!_[_0x5177('0x31')](_0xdfe83a[_0x5177('0x39')])){logger[_0x5177('0xb')](_0x5177('0x3a'),_0xdfe83a[_0x5177('0x39')]);return analyticDefaultReportController[_0x5177('0x3b')]({'id':_0xdfe83a[_0x5177('0x39')]},_0x31417b)[_0x5177('0x3c')](handleResult(_0xdfe83a))['catch'](handleError());}if(!_[_0x5177('0x31')](_0xdfe83a['CustomReportId'])){logger[_0x5177('0xb')](_0x5177('0x3d'),_0xdfe83a[_0x5177('0x3e')]);return analyticCustomReportController[_0x5177('0x3b')]({'id':_0xdfe83a[_0x5177('0x3e')]},_0x31417b)[_0x5177('0x3c')](handleResult(_0xdfe83a))['catch'](handleError());}}catch(_0x37ded0){logger[_0x5177('0x2c')](JSON[_0x5177('0x2e')](_0x37ded0));}return logger[_0x5177('0xb')](_0x5177('0x3f'));};}function getJobs(_0x249257){var _0x563711={};if(_0x249257){_0x563711['id']=_0x249257;}return db[_0x5177('0x40')]['findAll']({'where':_0x563711,'include':[{'model':db[_0x5177('0xe')],'attributes':['id','name','email'],'include':[{'model':db[_0x5177('0x41')],'as':_0x5177('0x10')}]}]})[_0x5177('0x3c')](function(_0x11d15e){var _0x592eae=_['keys'](manager['jobs']);var _0x2ead56=_['map'](_0x11d15e,function(_0x482d0c){return _0x482d0c['id'][_0x5177('0x42')]();});var _0x59f77b=_[_0x5177('0x43')](_0x11d15e,function(_0x76c574){return _0x76c574['id'][_0x5177('0x42')]();});var _0x28e6bc=_0x249257?_0x2ead56:_[_0x5177('0x44')](_0x2ead56,_0x592eae);var _0x1d2fb6=_[_0x5177('0x45')](_0x2ead56,_0x592eae);var _0x1ff73f=_[_0x5177('0x44')](_0x592eae,_0x2ead56);var _0x25e250;var _0x2b3bac;for(_0x25e250=0x0;_0x25e250<_0x1ff73f[_0x5177('0x46')]&&!_0x249257;_0x25e250+=0x1){_0x2b3bac=_0x1ff73f[_0x25e250][_0x5177('0x42')]();if(manager[_0x5177('0x47')](_0x2b3bac)){manager[_0x5177('0x48')](_0x2b3bac);manager[_0x5177('0x49')](_0x2b3bac);logger[_0x5177('0xb')](_0x5177('0x4a'),_0x2b3bac);}}logger[_0x5177('0xb')]('toRun',JSON[_0x5177('0x2e')](_0x28e6bc));for(_0x25e250=0x0;_0x25e250<_0x28e6bc[_0x5177('0x46')];_0x25e250+=0x1){_0x2b3bac=_0x28e6bc[_0x25e250][_0x5177('0x42')]();logger['info'](_0x5177('0x4b'),_0x2b3bac);if(_0x249257){logger[_0x5177('0xb')](_0x5177('0x4c'),_0x249257);logger['info'](JSON[_0x5177('0x2e')](_0x59f77b[_0x2b3bac]));BPromise[_0x5177('0x4d')]()[_0x5177('0x3c')](handleJob(_0x59f77b[_0x2b3bac]));logger[_0x5177('0xb')](_0x5177('0x4e'),_0x59f77b[_0x2b3bac]['name'],_0x59f77b[_0x2b3bac][_0x5177('0x4f')]);}else if(_0x59f77b[_0x2b3bac]['cron']&&_0x59f77b[_0x2b3bac]['active']&&moment()[_0x5177('0x50')](_0x59f77b[_0x2b3bac][_0x5177('0x51')],_0x59f77b[_0x2b3bac][_0x5177('0x52')])){manager['add'](_0x2b3bac,_0x59f77b[_0x2b3bac][_0x5177('0x4f')],handleJob(_0x59f77b[_0x2b3bac]));manager[_0x5177('0x53')](_0x2b3bac);logger[_0x5177('0xb')](_0x5177('0x54'),_0x59f77b[_0x2b3bac][_0x5177('0x38')],_0x59f77b[_0x2b3bac][_0x5177('0x4f')]);}else if(manager[_0x5177('0x47')](_0x2b3bac)){manager[_0x5177('0x48')](_0x2b3bac);manager[_0x5177('0x49')](_0x2b3bac);logger['info'](_0x5177('0x55'),_0x59f77b[_0x2b3bac]['name'],_0x59f77b[_0x2b3bac][_0x5177('0x4f')]);}}for(_0x25e250=0x0,_0x2b3bac;_0x25e250<_0x1d2fb6[_0x5177('0x46')]&&!_0x249257;_0x25e250+=0x1){_0x2b3bac=_0x1d2fb6[_0x25e250][_0x5177('0x42')]();if(manager[_0x5177('0x47')](_0x2b3bac)){if(_0x59f77b[_0x2b3bac][_0x5177('0x4f')]&&_0x59f77b[_0x2b3bac][_0x5177('0x56')]&&moment()['isBetween'](_0x59f77b[_0x2b3bac][_0x5177('0x51')],_0x59f77b[_0x2b3bac][_0x5177('0x52')])){manager[_0x5177('0x57')](_0x2b3bac,_0x59f77b[_0x2b3bac][_0x5177('0x4f')],handleJob(_0x59f77b[_0x2b3bac]));logger['info']('update\x20cron',_0x59f77b[_0x2b3bac][_0x5177('0x38')],_0x59f77b[_0x2b3bac][_0x5177('0x4f')]);}else{manager[_0x5177('0x48')](_0x2b3bac);manager[_0x5177('0x49')](_0x2b3bac);logger[_0x5177('0xb')]('stop\x20cron',_0x59f77b[_0x2b3bac]['name'],_0x59f77b[_0x2b3bac][_0x5177('0x4f')]);}}}})['catch'](function(_0x13cbea){logger[_0x5177('0x2c')](JSON[_0x5177('0x2e')](_0x13cbea));});}exports[_0x5177('0x58')]=function(_0x50f265){return getJobs(_0x50f265);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xc2d8=['YYYY-MM-DD\x20HH:mm:ss','scheduled','output','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','then','CustomReportId','no\x20report\x20id','findAll','keys','map','keyBy','toString','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','index','resolve','cron','active','startAt','endAt','start','add\x20cron','isBetween','update','update\x20cron','stop\x20cron','run','util','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','authentication','auth','pass','format','\x22%s\x22\x20<%s>','name','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','../../files/reports','savename','%s.%s','basename','zip','join','status','Sent','attachments','message','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','existsSync','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','error','catch','error\x20mail','data','isNil','subtractUnit\x20null\x20or\x20undefined'];(function(_0x498bb0,_0x241e82){var _0x409e42=function(_0x25ae93){while(--_0x25ae93){_0x498bb0['push'](_0x498bb0['shift']());}};_0x409e42(++_0x241e82);}(_0xc2d8,0xd0));var _0x8c2d=function(_0xaea82a,_0xda6521){_0xaea82a=_0xaea82a-0x0;var _0x58b367=_0xc2d8[_0xaea82a];return _0x58b367;};'use strict';var fs=require('fs');var util=require(_0x8c2d('0x0'));var path=require('path');var _=require('lodash');var moment=require('moment');var CronJobManager=require(_0x8c2d('0x1'));var jayson=require(_0x8c2d('0x2'));var BPromise=require(_0x8c2d('0x3'));var logger=require(_0x8c2d('0x4'))(_0x8c2d('0x5'));var db=require(_0x8c2d('0x6'))['db'];var analyticCustomReportController=require(_0x8c2d('0x7'));var analyticDefaultReportController=require(_0x8c2d('0x8'));var client=jayson[_0x8c2d('0x9')][_0x8c2d('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x29d0c8,_0x2499da){return function(){logger[_0x8c2d('0xb')](_0x8c2d('0xc'),_0x29d0c8[_0x8c2d('0xd')]);var _0x259ff6=!![];var _0x4b4dbc={'tls':{'rejectUnauthorized':![]}};if(_0x29d0c8[_0x8c2d('0xe')][_0x8c2d('0xf')]['service']){_0x4b4dbc[_0x8c2d('0x10')]=_0x29d0c8[_0x8c2d('0xe')][_0x8c2d('0xf')][_0x8c2d('0x10')];}else{_0x4b4dbc[_0x8c2d('0x11')]=_0x29d0c8[_0x8c2d('0xe')][_0x8c2d('0xf')]['host'];_0x4b4dbc[_0x8c2d('0x12')]=_0x29d0c8[_0x8c2d('0xe')][_0x8c2d('0xf')][_0x8c2d('0x12')];_0x4b4dbc[_0x8c2d('0x13')]=_0x29d0c8[_0x8c2d('0xe')][_0x8c2d('0xf')][_0x8c2d('0x13')];}if(_0x29d0c8['MailAccount']['Smtp'][_0x8c2d('0x14')]){_0x4b4dbc[_0x8c2d('0x15')]={'user':_0x29d0c8[_0x8c2d('0xe')][_0x8c2d('0xf')]['user'],'pass':_0x29d0c8[_0x8c2d('0xe')][_0x8c2d('0xf')][_0x8c2d('0x16')]};}var _0x22cf57={'account':_0x4b4dbc,'message':{'from':util[_0x8c2d('0x17')](_0x8c2d('0x18'),_0x29d0c8['MailAccount'][_0x8c2d('0x19')],_0x29d0c8['MailAccount'][_0x8c2d('0xd')]||_0x29d0c8[_0x8c2d('0xe')][_0x8c2d('0xf')][_0x8c2d('0x1a')]),'to':_0x29d0c8['email'],'cc':_0x29d0c8['cc'],'bcc':_0x29d0c8[_0x8c2d('0x1b')],'subject':util['format'](_0x8c2d('0x1c'),_0x2499da[_0x8c2d('0x19')],_0x29d0c8[_0x8c2d('0x1d')],_0x29d0c8[_0x8c2d('0x1e')])}};var _0x77a3d6=path['join'](__dirname,_0x8c2d('0x1f'));var _0x5ac93e=_0x2499da[_0x8c2d('0x20')];var _0x4a0313=util[_0x8c2d('0x17')](_0x8c2d('0x21'),path[_0x8c2d('0x22')](_0x2499da[_0x8c2d('0x20')],path['extname'](_0x2499da['savename'])),_0x8c2d('0x23'));var _0x4ffebe=path[_0x8c2d('0x24')](_0x77a3d6,_0x5ac93e);var _0x348966=path[_0x8c2d('0x24')](_0x77a3d6,_0x4a0313);if(fs['existsSync'](_0x4ffebe)){_0x2499da[_0x8c2d('0x25')]=_0x8c2d('0x26');_0x22cf57['message'][_0x8c2d('0x27')]=[{'filename':_0x5ac93e,'path':_0x4ffebe}];_0x22cf57[_0x8c2d('0x28')][_0x8c2d('0x29')]=util['format'](_0x8c2d('0x2a'),JSON[_0x8c2d('0x2b')](_0x2499da,null,0x2));}else if(fs[_0x8c2d('0x2c')](_0x348966)){_0x2499da[_0x8c2d('0x25')]=_0x8c2d('0x26');_0x22cf57['message'][_0x8c2d('0x27')]=[{'filename':_0x4a0313,'path':_0x348966}];}else{_0x22cf57[_0x8c2d('0x28')][_0x8c2d('0x29')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x29d0c8[_0x8c2d('0x2d')]){_0x259ff6=![];logger['info'](_0x8c2d('0x2e'));}}if(_0x259ff6){return client['request']('SendMail',_0x22cf57)['then'](function(_0x3c1384){if(_0x3c1384['error']){return logger[_0x8c2d('0x2f')]('error\x20mail',JSON[_0x8c2d('0x2b')](_0x3c1384));}return logger[_0x8c2d('0xb')]('email\x20sent');})[_0x8c2d('0x30')](function(_0x42ed6f){return logger[_0x8c2d('0x2f')](_0x8c2d('0x31'),JSON['stringify'](_0x42ed6f));});}};}function handleError(){return function(_0x2c7a1b){return logger[_0x8c2d('0x2f')](JSON[_0x8c2d('0x2b')](_0x2c7a1b));};}function handleResult(_0x5dda69){return function(_0x55d6e9){logger['info'](_0x8c2d('0x32'),JSON['stringify'](_0x55d6e9));if(_0x5dda69[_0x8c2d('0xe')]&&_0x5dda69[_0x8c2d('0xe')]['Smtp']&&!_[_0x8c2d('0x33')](_0x5dda69[_0x8c2d('0xd')])){setTimeout(handleSendEmail(_0x5dda69,_0x55d6e9),0x3c*0x3e8);}};}function handleJob(_0xa8ed35){return function(){try{if(_[_0x8c2d('0x33')](_0xa8ed35[_0x8c2d('0x1d')])){return logger[_0x8c2d('0xb')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0x8c2d('0x33')](_0xa8ed35['subtractUnit'])){return logger[_0x8c2d('0xb')](_0x8c2d('0x34'));}var _0xe763b6={'startDate':moment()['subtract'](_0xa8ed35[_0x8c2d('0x1d')],_0xa8ed35[_0x8c2d('0x1e')])[_0x8c2d('0x17')](_0x8c2d('0x35')),'endDate':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x8c2d('0x36'),'output':_0xa8ed35[_0x8c2d('0x37')],'name':_0xa8ed35[_0x8c2d('0x19')]};if(!_[_0x8c2d('0x33')](_0xa8ed35['DefaultReportId'])){logger[_0x8c2d('0xb')](_0x8c2d('0x38'),_0xa8ed35[_0x8c2d('0x39')]);return analyticDefaultReportController[_0x8c2d('0x3a')]({'id':_0xa8ed35['DefaultReportId']},_0xe763b6)[_0x8c2d('0x3b')](handleResult(_0xa8ed35))[_0x8c2d('0x30')](handleError());}if(!_[_0x8c2d('0x33')](_0xa8ed35[_0x8c2d('0x3c')])){logger['info']('exec\x20custom\x20report\x20id:%s',_0xa8ed35[_0x8c2d('0x3c')]);return analyticCustomReportController[_0x8c2d('0x3a')]({'id':_0xa8ed35[_0x8c2d('0x3c')]},_0xe763b6)[_0x8c2d('0x3b')](handleResult(_0xa8ed35))[_0x8c2d('0x30')](handleError());}}catch(_0x3f98d5){logger[_0x8c2d('0x2f')](JSON['stringify'](_0x3f98d5));}return logger[_0x8c2d('0xb')](_0x8c2d('0x3d'));};}function getJobs(_0x4fd718){var _0x3d567f={};if(_0x4fd718){_0x3d567f['id']=_0x4fd718;}return db['Schedule'][_0x8c2d('0x3e')]({'where':_0x3d567f,'include':[{'model':db[_0x8c2d('0xe')],'attributes':['id',_0x8c2d('0x19'),_0x8c2d('0xd')],'include':[{'model':db['MailServerOut'],'as':_0x8c2d('0xf')}]}]})[_0x8c2d('0x3b')](function(_0x5dfe4c){var _0x3b3a9d=_[_0x8c2d('0x3f')](manager['jobs']);var _0x474fbf=_[_0x8c2d('0x40')](_0x5dfe4c,function(_0x51c476){return _0x51c476['id']['toString']();});var _0x45aa2f=_[_0x8c2d('0x41')](_0x5dfe4c,function(_0x5cdf38){return _0x5cdf38['id'][_0x8c2d('0x42')]();});var _0x12f216=_0x4fd718?_0x474fbf:_[_0x8c2d('0x43')](_0x474fbf,_0x3b3a9d);var _0x4e7a2d=_[_0x8c2d('0x44')](_0x474fbf,_0x3b3a9d);var _0x3e54b1=_[_0x8c2d('0x43')](_0x3b3a9d,_0x474fbf);var _0x407643;var _0x2a8100;for(_0x407643=0x0;_0x407643<_0x3e54b1[_0x8c2d('0x45')]&&!_0x4fd718;_0x407643+=0x1){_0x2a8100=_0x3e54b1[_0x407643][_0x8c2d('0x42')]();if(manager[_0x8c2d('0x46')](_0x2a8100)){manager[_0x8c2d('0x47')](_0x2a8100);manager[_0x8c2d('0x48')](_0x2a8100);logger[_0x8c2d('0xb')](_0x8c2d('0x49'),_0x2a8100);}}logger[_0x8c2d('0xb')]('toRun',JSON[_0x8c2d('0x2b')](_0x12f216));for(_0x407643=0x0;_0x407643<_0x12f216[_0x8c2d('0x45')];_0x407643+=0x1){_0x2a8100=_0x12f216[_0x407643][_0x8c2d('0x42')]();logger[_0x8c2d('0xb')](_0x8c2d('0x4a'),_0x2a8100);if(_0x4fd718){logger[_0x8c2d('0xb')]('my\x20id',_0x4fd718);logger[_0x8c2d('0xb')](JSON[_0x8c2d('0x2b')](_0x45aa2f[_0x2a8100]));BPromise[_0x8c2d('0x4b')]()['then'](handleJob(_0x45aa2f[_0x2a8100]));logger[_0x8c2d('0xb')]('run\x20job',_0x45aa2f[_0x2a8100]['name'],_0x45aa2f[_0x2a8100][_0x8c2d('0x4c')]);}else if(_0x45aa2f[_0x2a8100][_0x8c2d('0x4c')]&&_0x45aa2f[_0x2a8100][_0x8c2d('0x4d')]&&moment()['isBetween'](_0x45aa2f[_0x2a8100][_0x8c2d('0x4e')],_0x45aa2f[_0x2a8100][_0x8c2d('0x4f')])){manager['add'](_0x2a8100,_0x45aa2f[_0x2a8100][_0x8c2d('0x4c')],handleJob(_0x45aa2f[_0x2a8100]));manager[_0x8c2d('0x50')](_0x2a8100);logger[_0x8c2d('0xb')](_0x8c2d('0x51'),_0x45aa2f[_0x2a8100][_0x8c2d('0x19')],_0x45aa2f[_0x2a8100][_0x8c2d('0x4c')]);}else if(manager[_0x8c2d('0x46')](_0x2a8100)){manager[_0x8c2d('0x47')](_0x2a8100);manager['deleteJob'](_0x2a8100);logger[_0x8c2d('0xb')]('stop\x20cron',_0x45aa2f[_0x2a8100][_0x8c2d('0x19')],_0x45aa2f[_0x2a8100][_0x8c2d('0x4c')]);}}for(_0x407643=0x0,_0x2a8100;_0x407643<_0x4e7a2d[_0x8c2d('0x45')]&&!_0x4fd718;_0x407643+=0x1){_0x2a8100=_0x4e7a2d[_0x407643][_0x8c2d('0x42')]();if(manager['exists'](_0x2a8100)){if(_0x45aa2f[_0x2a8100][_0x8c2d('0x4c')]&&_0x45aa2f[_0x2a8100]['active']&&moment()[_0x8c2d('0x52')](_0x45aa2f[_0x2a8100]['startAt'],_0x45aa2f[_0x2a8100]['endAt'])){manager[_0x8c2d('0x53')](_0x2a8100,_0x45aa2f[_0x2a8100][_0x8c2d('0x4c')],handleJob(_0x45aa2f[_0x2a8100]));logger['info'](_0x8c2d('0x54'),_0x45aa2f[_0x2a8100]['name'],_0x45aa2f[_0x2a8100][_0x8c2d('0x4c')]);}else{manager[_0x8c2d('0x47')](_0x2a8100);manager[_0x8c2d('0x48')](_0x2a8100);logger[_0x8c2d('0xb')](_0x8c2d('0x55'),_0x45aa2f[_0x2a8100][_0x8c2d('0x19')],_0x45aa2f[_0x2a8100][_0x8c2d('0x4c')]);}}}})['catch'](function(_0x845f44){logger['error'](JSON[_0x8c2d('0x2b')](_0x845f44));});}exports[_0x8c2d('0x56')]=function(_0x305ae9){return getJobs(_0x305ae9);};exports[_0x8c2d('0x50')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 41d4f33..5583f32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeea4=['then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','transcripts','results','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','sentiment','sentimentAccountId','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','ValidationError','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Sentiment','Positive','SentimentScore','Negative','Mixed','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentimentRegion','language','Cloud\x20Provider\x20not\x20available','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','catch','SequelizeValidationError','error','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Settings\x20not\x20available','transcribeAccountId','transcribeRegion','bucket','forEach','push','all','name','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2'];(function(_0x3160be,_0x4d4a92){var _0x4b9ca8=function(_0x8930a2){while(--_0x8930a2){_0x3160be['push'](_0x3160be['shift']());}};_0x4b9ca8(++_0x4d4a92);}(_0xeea4,0x19e));var _0x4eea=function(_0xb1356,_0x2e4b5b){_0xb1356=_0xb1356-0x0;var _0x1ecb3c=_0xeea4[_0xb1356];return _0x1ecb3c;};var _=require(_0x4eea('0x0'));var AWS=require(_0x4eea('0x1'));var rp=require(_0x4eea('0x2'));var util=require(_0x4eea('0x3'));var BPromise=require(_0x4eea('0x4'));var db=require(_0x4eea('0x5'))['db'];var logger=require(_0x4eea('0x6'))(_0x4eea('0x7'));function getTranscriptionJob(_0x27997a,_0x5c02db,_0x399e8b,_0x54136a){return new Promise(function(_0x2df4ae,_0x383566){var _0x3d5aa8=new AWS['TranscribeService']({'accessKeyId':_0x5c02db,'secretAccessKey':_0x27997a,'region':_0x399e8b});_0x3d5aa8[_0x4eea('0x8')]({'TranscriptionJobName':_0x54136a},function(_0x44116a,_0x4cc630){if(_0x44116a){return _0x383566(_0x44116a);}else{return _0x2df4ae(_0x4cc630);}});});}function sentiment(_0x9ccc45,_0x3e2b87,_0x2bba91,_0x411654,_0x5b3147){return new Promise(function(_0xe54f2f,_0x2c4038){var _0x136d51=new AWS[(_0x4eea('0x9'))]({'accessKeyId':_0x3e2b87,'secretAccessKey':_0x9ccc45,'region':_0x2bba91});_0x136d51[_0x4eea('0xa')]({'Text':_0x411654,'LanguageCode':_0x5b3147[_0x4eea('0xb')](0x0,0x2)},function(_0x35dcab,_0x1a84fb){if(_0x35dcab){return _0x2c4038(_0x35dcab);}else{return _0xe54f2f(_0x1a84fb);}});});}function checkTranscribeJob(_0x9648cb,_0x130507,_0x47b971){var _0x54fa8c;return new BPromise(function(_0x3db69c,_0x862b96){logger[_0x4eea('0xc')](util[_0x4eea('0xd')](_0x4eea('0xe'),_0x9648cb['id'],_0x9648cb[_0x4eea('0xf')]));return getTranscriptionJob(_0x47b971[_0x4eea('0x10')],_0x47b971[_0x4eea('0x11')],_0x130507['transcribeRegion'],_0x9648cb[_0x4eea('0xf')])[_0x4eea('0x12')](function(_0x150d60){logger[_0x4eea('0xc')](util['format'](_0x4eea('0x13'),_0x9648cb['id'],_0x9648cb[_0x4eea('0xf')],_0x150d60[_0x4eea('0x14')][_0x4eea('0x15')]));if(!_0x9648cb[_0x4eea('0x16')]){switch(_0x150d60['TranscriptionJob'][_0x4eea('0x15')]){case _0x4eea('0x17'):var _0x4cb07b={'transcribeStatus':_0x150d60[_0x4eea('0x14')][_0x4eea('0x15')],'fileUri':_0x150d60[_0x4eea('0x14')][_0x4eea('0x18')][_0x4eea('0x19')]};logger[_0x4eea('0xc')](util['format'](_0x4eea('0x1a'),_0x9648cb['id']));return rp({'uri':_0x150d60[_0x4eea('0x14')][_0x4eea('0x18')][_0x4eea('0x19')],'json':!![]})[_0x4eea('0x12')](function(_0x496ab6){logger['info'](util[_0x4eea('0xd')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x9648cb['id']));if(_0x496ab6&&_0x496ab6['results']&&_0x496ab6['results'][_0x4eea('0x1b')]&&_0x496ab6[_0x4eea('0x1c')]['transcripts'][_0x4eea('0x1d')]){_0x4cb07b['fileText']='';for(var _0x3f0a2c=0x0;_0x3f0a2c<_0x496ab6['results'][_0x4eea('0x1b')]['length'];_0x3f0a2c++){_0x4cb07b[_0x4eea('0x16')]+=_0x496ab6[_0x4eea('0x1c')][_0x4eea('0x1b')][_0x3f0a2c][_0x4eea('0x1e')]+'';}}return _0x9648cb[_0x4eea('0x1f')](_0x4cb07b);})[_0x4eea('0x12')](function(){logger[_0x4eea('0xc')](util[_0x4eea('0xd')](_0x4eea('0x20'),_0x9648cb['id']));if(!_0x9648cb[_0x4eea('0x21')]){throw new db[(_0x4eea('0x22'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x130507[_0x4eea('0x23')]||!_0x130507[_0x4eea('0x24')]||!_0x130507['sentimentRegion']||!_0x130507['language']||!_0x130507['bucket']){throw new db[(_0x4eea('0x22'))]['ValidationError'](_0x4eea('0x25'));}if(!_0x4cb07b[_0x4eea('0x16')]){throw new Error(_0x4eea('0x26'));}if(_0x130507['sentimentAccountId']===_0x47b971['id']){return _0x47b971;}else{return db[_0x4eea('0x27')][_0x4eea('0x28')]({'where':{'id':_settings[_0x4eea('0x24')]}});}})['then'](function(_0x1751ce){if(!_0x1751ce){throw new db[(_0x4eea('0x22'))][(_0x4eea('0x29'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x1751ce['data1']||!_0x1751ce[_0x4eea('0x11')]){throw new db[(_0x4eea('0x22'))]['ValidationError'](_0x4eea('0x2a'));}_0x54fa8c=_0x1751ce;logger[_0x4eea('0xc')](util[_0x4eea('0xd')](_0x4eea('0x2b'),_0x9648cb['id']));return sentiment(_0x54fa8c['data1'],_0x54fa8c[_0x4eea('0x11')],_0x130507['sentimentRegion'],_0x4cb07b[_0x4eea('0x16')],_0x130507['language']);})[_0x4eea('0x12')](function(_0x345c41){logger['info'](util[_0x4eea('0xd')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x9648cb['id']));return _0x9648cb[_0x4eea('0x1f')]({'sentiment':_0x345c41[_0x4eea('0x2c')],'sPositive':_0x345c41['SentimentScore'][_0x4eea('0x2d')],'sNegative':_0x345c41[_0x4eea('0x2e')][_0x4eea('0x2f')],'sMixed':_0x345c41['SentimentScore'][_0x4eea('0x30')],'sNeutral':_0x345c41['SentimentScore']['Neutral']});})[_0x4eea('0x12')](function(){logger[_0x4eea('0xc')](util[_0x4eea('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x9648cb['id']));_0x3db69c();});case'FAILED':return _0x9648cb[_0x4eea('0x1f')]({'transcribeStatus':_0x4eea('0x31'),'failureReason':_0x150d60[_0x4eea('0x14')][_0x4eea('0x32')]})[_0x4eea('0x12')](function(){logger['info'](util[_0x4eea('0xd')](_0x4eea('0x20'),_0x9648cb['id']));_0x3db69c();});default:logger[_0x4eea('0xc')](util[_0x4eea('0xd')](_0x4eea('0x33'),_0x9648cb['id']));break;}}else{return BPromise[_0x4eea('0x34')]()[_0x4eea('0x12')](function(){if(!_0x9648cb[_0x4eea('0x21')]){throw new db[(_0x4eea('0x22'))][(_0x4eea('0x29'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x130507[_0x4eea('0x23')]||!_0x130507[_0x4eea('0x24')]||!_0x130507[_0x4eea('0x35')]||!_0x130507[_0x4eea('0x36')]||!_0x130507['bucket']){throw new db['Sequelize'][(_0x4eea('0x29'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x9648cb[_0x4eea('0x16')]){throw new Error('Transcript\x20not\x20available');}if(_0x130507[_0x4eea('0x24')]===_0x47b971['id']){return _0x47b971;}else{return db[_0x4eea('0x27')][_0x4eea('0x28')]({'where':{'id':_settings[_0x4eea('0x24')]}});}})[_0x4eea('0x12')](function(_0x43ad3f){if(!_0x43ad3f){throw new db['Sequelize']['ValidationError'](_0x4eea('0x37'));}if(!_0x43ad3f[_0x4eea('0x10')]||!_0x43ad3f[_0x4eea('0x11')]){throw new db[(_0x4eea('0x22'))][(_0x4eea('0x29'))](_0x4eea('0x2a'));}_0x54fa8c=_0x43ad3f;logger[_0x4eea('0xc')](util[_0x4eea('0xd')](_0x4eea('0x2b'),_0x9648cb['id']));return sentiment(_0x54fa8c[_0x4eea('0x10')],_0x54fa8c[_0x4eea('0x11')],_0x130507[_0x4eea('0x35')],_0x9648cb[_0x4eea('0x16')],_0x130507['language']);})[_0x4eea('0x12')](function(_0x3cf233){logger[_0x4eea('0xc')](util[_0x4eea('0xd')](_0x4eea('0x38'),_0x9648cb['id']));return _0x9648cb[_0x4eea('0x1f')]({'sentiment':_0x3cf233[_0x4eea('0x2c')],'sPositive':_0x3cf233[_0x4eea('0x2e')][_0x4eea('0x2d')],'sNegative':_0x3cf233[_0x4eea('0x2e')]['Negative'],'sMixed':_0x3cf233['SentimentScore'][_0x4eea('0x30')],'sNeutral':_0x3cf233[_0x4eea('0x2e')]['Neutral'],'transcribeStatus':_0x4eea('0x17')});})[_0x4eea('0x12')](function(){logger[_0x4eea('0xc')](util[_0x4eea('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x9648cb['id']));_0x3db69c();});}})[_0x4eea('0x39')](function(_0x131f0e){if(_0x131f0e){if(!_0x131f0e['name']||_0x131f0e['name']!==_0x4eea('0x3a')){logger[_0x4eea('0x3b')](util[_0x4eea('0xd')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x9648cb['id']),util['inspect'](_0x131f0e,{'showHidden':![],'depth':null}));}}_0x3db69c();});});}function checkTranscribe(){var _0x37fc67;var _0x18908a;var _0xf9473c;return db['VoiceRecording'][_0x4eea('0x3c')]({'where':{'transcribeStatus':_0x4eea('0x3d')}})[_0x4eea('0x12')](function(_0x4b6535){if(!_0x4b6535||!_0x4b6535[_0x4eea('0x1d')]){throw new db[(_0x4eea('0x22'))]['ValidationError'](_0x4eea('0x3e'));}_0x37fc67=_0x4b6535;return db['Setting'][_0x4eea('0x28')]({'where':{'id':0x1}});})[_0x4eea('0x12')](function(_0x771590){if(!_0x771590){throw new db[(_0x4eea('0x22'))]['ValidationError'](_0x4eea('0x3f'));}_0x18908a=_0x771590;if(!_0x18908a[_0x4eea('0x7')]||!_0x18908a[_0x4eea('0x40')]||!_0x18908a[_0x4eea('0x41')]||!_0x18908a[_0x4eea('0x36')]||!_0x18908a[_0x4eea('0x42')]){throw new db['Sequelize']['ValidationError']('Transcribe\x20not\x20configured');}return db[_0x4eea('0x27')][_0x4eea('0x28')]({'where':{'id':_0x18908a[_0x4eea('0x40')]}});})[_0x4eea('0x12')](function(_0x47ab65){if(!_0x47ab65){throw new db['Sequelize'][(_0x4eea('0x29'))](_0x4eea('0x37'));}if(!_0x47ab65[_0x4eea('0x10')]||!_0x47ab65[_0x4eea('0x11')]){throw new db[(_0x4eea('0x22'))][(_0x4eea('0x29'))](_0x4eea('0x2a'));}_0xf9473c=_0x47ab65;var _0x16158d=[];_0x37fc67[_0x4eea('0x43')](function(_0x318685){_0x16158d[_0x4eea('0x44')](checkTranscribeJob(_0x318685,_0x18908a,_0xf9473c));});return BPromise[_0x4eea('0x45')](_0x16158d);})[_0x4eea('0x39')](function(_0x284b41){if(_0x284b41){if(!_0x284b41[_0x4eea('0x46')]||_0x284b41[_0x4eea('0x46')]!==_0x4eea('0x3a')){logger[_0x4eea('0x3b')](util['inspect'](_0x284b41,{'showHidden':![],'depth':null}));}}});}exports[_0x4eea('0x47')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x4f08=['COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','Transcript','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','sentiment','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','sentimentAccountId','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Mixed','FAILED','FailureReason','resolve','Sentiment\x20Analysis\x20not\x20requested','bucket','language','Negative','Neutral','catch','name','error','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','SequelizeValidationError','lodash','aws-sdk','util','bluebird','../../config/logger','transcribe','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','fileText','TranscriptionJob'];(function(_0x45d3f0,_0x4be53f){var _0x314b79=function(_0x563d32){while(--_0x563d32){_0x45d3f0['push'](_0x45d3f0['shift']());}};_0x314b79(++_0x4be53f);}(_0x4f08,0x194));var _0x84f0=function(_0x56c049,_0x14b325){_0x56c049=_0x56c049-0x0;var _0x14b55c=_0x4f08[_0x56c049];return _0x14b55c;};var _=require(_0x84f0('0x0'));var AWS=require(_0x84f0('0x1'));var rp=require('request-promise');var util=require(_0x84f0('0x2'));var BPromise=require(_0x84f0('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0x84f0('0x4'))(_0x84f0('0x5'));function getTranscriptionJob(_0xa3f34f,_0x5ce5cb,_0x2b6c5d,_0x4dad6d){return new Promise(function(_0x3886d6,_0x3a1161){var _0x4548f3=new AWS['TranscribeService']({'accessKeyId':_0x5ce5cb,'secretAccessKey':_0xa3f34f,'region':_0x2b6c5d});_0x4548f3[_0x84f0('0x6')]({'TranscriptionJobName':_0x4dad6d},function(_0x42f42e,_0x15b01d){if(_0x42f42e){return _0x3a1161(_0x42f42e);}else{return _0x3886d6(_0x15b01d);}});});}function sentiment(_0x39058e,_0x246650,_0x1b256f,_0x487c1d,_0x499eb0){return new Promise(function(_0x304f18,_0x13067f){var _0x3acfaa=new AWS[(_0x84f0('0x7'))]({'accessKeyId':_0x246650,'secretAccessKey':_0x39058e,'region':_0x1b256f});_0x3acfaa[_0x84f0('0x8')]({'Text':_0x487c1d,'LanguageCode':_0x499eb0[_0x84f0('0x9')](0x0,0x2)},function(_0x41519d,_0x116ffe){if(_0x41519d){return _0x13067f(_0x41519d);}else{return _0x304f18(_0x116ffe);}});});}function checkTranscribeJob(_0x379151,_0x532506,_0xfe9718){var _0x50a03b;return new BPromise(function(_0x29a31c,_0x489476){logger[_0x84f0('0xa')](util[_0x84f0('0xb')](_0x84f0('0xc'),_0x379151['id'],_0x379151[_0x84f0('0xd')]));return getTranscriptionJob(_0xfe9718[_0x84f0('0xe')],_0xfe9718[_0x84f0('0xf')],_0x532506[_0x84f0('0x10')],_0x379151[_0x84f0('0xd')])[_0x84f0('0x11')](function(_0x58f208){logger[_0x84f0('0xa')](util[_0x84f0('0xb')](_0x84f0('0x12'),_0x379151['id'],_0x379151['transcribeName'],_0x58f208['TranscriptionJob'][_0x84f0('0x13')]));if(!_0x379151[_0x84f0('0x14')]){switch(_0x58f208[_0x84f0('0x15')][_0x84f0('0x13')]){case _0x84f0('0x16'):var _0x3e3086={'transcribeStatus':_0x58f208['TranscriptionJob']['TranscriptionJobStatus'],'fileUri':_0x58f208['TranscriptionJob']['Transcript'][_0x84f0('0x17')]};logger['info'](util[_0x84f0('0xb')](_0x84f0('0x18'),_0x379151['id']));return rp({'uri':_0x58f208[_0x84f0('0x15')][_0x84f0('0x19')]['TranscriptFileUri'],'json':!![]})[_0x84f0('0x11')](function(_0x451e55){logger[_0x84f0('0xa')](util['format']('[RECORDING:%d]\x20Transcript\x20downloaded',_0x379151['id']));if(_0x451e55&&_0x451e55[_0x84f0('0x1a')]&&_0x451e55[_0x84f0('0x1a')][_0x84f0('0x1b')]&&_0x451e55[_0x84f0('0x1a')][_0x84f0('0x1b')]['length']){_0x3e3086[_0x84f0('0x14')]='';for(var _0x57a067=0x0;_0x57a067<_0x451e55['results'][_0x84f0('0x1b')][_0x84f0('0x1c')];_0x57a067++){_0x3e3086[_0x84f0('0x14')]+=_0x451e55[_0x84f0('0x1a')]['transcripts'][_0x57a067][_0x84f0('0x1d')]+'';}}return _0x379151[_0x84f0('0x1e')](_0x3e3086);})[_0x84f0('0x11')](function(){logger[_0x84f0('0xa')](util[_0x84f0('0xb')](_0x84f0('0x1f'),_0x379151['id']));if(!_0x379151[_0x84f0('0x20')]){throw new db[(_0x84f0('0x21'))][(_0x84f0('0x22'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x532506[_0x84f0('0x23')]||!_0x532506['sentimentAccountId']||!_0x532506[_0x84f0('0x24')]||!_0x532506['language']||!_0x532506['bucket']){throw new db[(_0x84f0('0x21'))]['ValidationError'](_0x84f0('0x25'));}if(!_0x3e3086[_0x84f0('0x14')]){throw new Error(_0x84f0('0x26'));}if(_0x532506[_0x84f0('0x27')]===_0xfe9718['id']){return _0xfe9718;}else{return db[_0x84f0('0x28')][_0x84f0('0x29')]({'where':{'id':_settings[_0x84f0('0x27')]}});}})[_0x84f0('0x11')](function(_0xca82a7){if(!_0xca82a7){throw new db[(_0x84f0('0x21'))]['ValidationError'](_0x84f0('0x2a'));}if(!_0xca82a7[_0x84f0('0xe')]||!_0xca82a7['data2']){throw new db[(_0x84f0('0x21'))]['ValidationError'](_0x84f0('0x2b'));}_0x50a03b=_0xca82a7;logger[_0x84f0('0xa')](util[_0x84f0('0xb')](_0x84f0('0x2c'),_0x379151['id']));return sentiment(_0x50a03b[_0x84f0('0xe')],_0x50a03b[_0x84f0('0xf')],_0x532506[_0x84f0('0x24')],_0x3e3086['fileText'],_0x532506['language']);})[_0x84f0('0x11')](function(_0x199c26){logger['info'](util[_0x84f0('0xb')](_0x84f0('0x2d'),_0x379151['id']));return _0x379151[_0x84f0('0x1e')]({'sentiment':_0x199c26[_0x84f0('0x2e')],'sPositive':_0x199c26[_0x84f0('0x2f')][_0x84f0('0x30')],'sNegative':_0x199c26[_0x84f0('0x2f')]['Negative'],'sMixed':_0x199c26['SentimentScore'][_0x84f0('0x31')],'sNeutral':_0x199c26[_0x84f0('0x2f')]['Neutral']});})[_0x84f0('0x11')](function(){logger[_0x84f0('0xa')](util[_0x84f0('0xb')](_0x84f0('0x1f'),_0x379151['id']));_0x29a31c();});case _0x84f0('0x32'):return _0x379151['update']({'transcribeStatus':_0x84f0('0x32'),'failureReason':_0x58f208[_0x84f0('0x15')][_0x84f0('0x33')]})[_0x84f0('0x11')](function(){logger[_0x84f0('0xa')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x379151['id']));_0x29a31c();});default:logger[_0x84f0('0xa')](util[_0x84f0('0xb')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x379151['id']));break;}}else{return BPromise[_0x84f0('0x34')]()['then'](function(){if(!_0x379151[_0x84f0('0x20')]){throw new db[(_0x84f0('0x21'))]['ValidationError'](_0x84f0('0x35'));}if(!_0x532506[_0x84f0('0x23')]||!_0x532506[_0x84f0('0x27')]||!_0x532506[_0x84f0('0x24')]||!_0x532506['language']||!_0x532506[_0x84f0('0x36')]){throw new db[(_0x84f0('0x21'))]['ValidationError'](_0x84f0('0x25'));}if(!_0x379151['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x532506[_0x84f0('0x27')]===_0xfe9718['id']){return _0xfe9718;}else{return db['CloudProvider'][_0x84f0('0x29')]({'where':{'id':_settings[_0x84f0('0x27')]}});}})['then'](function(_0x57862e){if(!_0x57862e){throw new db[(_0x84f0('0x21'))][(_0x84f0('0x22'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x57862e[_0x84f0('0xe')]||!_0x57862e[_0x84f0('0xf')]){throw new db[(_0x84f0('0x21'))][(_0x84f0('0x22'))](_0x84f0('0x2b'));}_0x50a03b=_0x57862e;logger[_0x84f0('0xa')](util[_0x84f0('0xb')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x379151['id']));return sentiment(_0x50a03b[_0x84f0('0xe')],_0x50a03b[_0x84f0('0xf')],_0x532506[_0x84f0('0x24')],_0x379151[_0x84f0('0x14')],_0x532506[_0x84f0('0x37')]);})[_0x84f0('0x11')](function(_0x3818b1){logger['info'](util[_0x84f0('0xb')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x379151['id']));return _0x379151[_0x84f0('0x1e')]({'sentiment':_0x3818b1[_0x84f0('0x2e')],'sPositive':_0x3818b1[_0x84f0('0x2f')][_0x84f0('0x30')],'sNegative':_0x3818b1[_0x84f0('0x2f')][_0x84f0('0x38')],'sMixed':_0x3818b1[_0x84f0('0x2f')][_0x84f0('0x31')],'sNeutral':_0x3818b1[_0x84f0('0x2f')][_0x84f0('0x39')],'transcribeStatus':_0x84f0('0x16')});})[_0x84f0('0x11')](function(){logger['info'](util['format'](_0x84f0('0x1f'),_0x379151['id']));_0x29a31c();});}})[_0x84f0('0x3a')](function(_0x4936bf){if(_0x4936bf){if(!_0x4936bf['name']||_0x4936bf[_0x84f0('0x3b')]!=='SequelizeValidationError'){logger[_0x84f0('0x3c')](util[_0x84f0('0xb')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x379151['id']),util[_0x84f0('0x3d')](_0x4936bf,{'showHidden':![],'depth':null}));}}_0x29a31c();});});}function checkTranscribe(){var _0x7488ed;var _0x1614cb;var _0x50a3a4;return db[_0x84f0('0x3e')][_0x84f0('0x3f')]({'where':{'transcribeStatus':_0x84f0('0x40')}})[_0x84f0('0x11')](function(_0x2d6557){if(!_0x2d6557||!_0x2d6557[_0x84f0('0x1c')]){throw new db[(_0x84f0('0x21'))]['ValidationError'](_0x84f0('0x41'));}_0x7488ed=_0x2d6557;return db['Setting'][_0x84f0('0x29')]({'where':{'id':0x1}});})['then'](function(_0x267c2b){if(!_0x267c2b){throw new db[(_0x84f0('0x21'))]['ValidationError']('Settings\x20not\x20available');}_0x1614cb=_0x267c2b;if(!_0x1614cb[_0x84f0('0x5')]||!_0x1614cb[_0x84f0('0x42')]||!_0x1614cb[_0x84f0('0x10')]||!_0x1614cb['language']||!_0x1614cb[_0x84f0('0x36')]){throw new db[(_0x84f0('0x21'))][(_0x84f0('0x22'))](_0x84f0('0x43'));}return db[_0x84f0('0x28')][_0x84f0('0x29')]({'where':{'id':_0x1614cb[_0x84f0('0x42')]}});})[_0x84f0('0x11')](function(_0x532ccd){if(!_0x532ccd){throw new db[(_0x84f0('0x21'))]['ValidationError'](_0x84f0('0x2a'));}if(!_0x532ccd[_0x84f0('0xe')]||!_0x532ccd[_0x84f0('0xf')]){throw new db[(_0x84f0('0x21'))][(_0x84f0('0x22'))](_0x84f0('0x2b'));}_0x50a3a4=_0x532ccd;var _0xe400aa=[];_0x7488ed[_0x84f0('0x44')](function(_0x4e2127){_0xe400aa[_0x84f0('0x45')](checkTranscribeJob(_0x4e2127,_0x1614cb,_0x50a3a4));});return BPromise['all'](_0xe400aa);})['catch'](function(_0x325647){if(_0x325647){if(!_0x325647[_0x84f0('0x3b')]||_0x325647['name']!==_0x84f0('0x46')){logger[_0x84f0('0x3c')](util['inspect'](_0x325647,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 15a72f5..137d05d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x157e=['info','timeout','format','YYYY-MM-DD\x20HH:mm:ss','length','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','join','emit','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','moment','ioredis','util','../../config/environment','../logger','schedule','redis','WhatsappInteraction','subtract','hours','then','map'];(function(_0x4218b3,_0x1ddda5){var _0x50918f=function(_0x2402a2){while(--_0x2402a2){_0x4218b3['push'](_0x4218b3['shift']());}};_0x50918f(++_0x1ddda5);}(_0x157e,0x1d4));var _0xe157=function(_0x4072d0,_0x2c84bd){_0x4072d0=_0x4072d0-0x0;var _0x2fc971=_0x157e[_0x4072d0];return _0x2fc971;};'use strict';var _=require('lodash');var moment=require(_0xe157('0x0'));var Redis=require(_0xe157('0x1'));var util=require(_0xe157('0x2'));var config=require(_0xe157('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0xe157('0x4'))(_0xe157('0x5'));config[_0xe157('0x6')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe157('0x6')]));function closeInteractions(){var _0x3d745d=[];return db[_0xe157('0x7')]['findAll']({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xe157('0x8')](0x18,_0xe157('0x9'))}}})[_0xe157('0xa')](function(_0x52c41a){if(_0x52c41a&&_0x52c41a['length']){_0x3d745d=_[_0xe157('0xb')](_0x52c41a||[],'id');logger[_0xe157('0xc')]('[WHATSAPP]\x20Interactions\x20to\x20close:',_0x3d745d['join']());return db['WhatsappInteraction']['update']({'closeReason':'system','disposition':_0xe157('0xd'),'closed':!![],'closedAt':moment()[_0xe157('0xe')](_0xe157('0xf'))},{'where':{'id':_0x3d745d}});}})[_0xe157('0xa')](function(){if(_0x3d745d&&_0x3d745d[_0xe157('0x10')]){logger[_0xe157('0xc')](_0xe157('0x11'),_0x3d745d[_0xe157('0x12')]());for(var _0x5bf607=0x0;_0x5bf607<_0x3d745d['length'];_0x5bf607++){io[_0xe157('0x13')](_0xe157('0x14'),{'id':_0x3d745d[_0x5bf607],'closed':!![]});}}})[_0xe157('0x15')](function(_0xa55e3e){logger[_0xe157('0x16')](_0xe157('0x17'),_0xa55e3e?util['inspect'](_0xa55e3e,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x22e1=['defaults','localhost','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','hours','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','../../mysqldb','../logger','schedule','redis'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x22e1,0xb3));var _0x122e=function(_0x431a02,_0x4c7f33){_0x431a02=_0x431a02-0x0;var _0x1507bd=_0x22e1[_0x431a02];return _0x1507bd;};'use strict';var _=require(_0x122e('0x0'));var moment=require(_0x122e('0x1'));var Redis=require(_0x122e('0x2'));var util=require('util');var config=require('../../config/environment');var db=require(_0x122e('0x3'))['db'];var logger=require(_0x122e('0x4'))(_0x122e('0x5'));config[_0x122e('0x6')]=_[_0x122e('0x7')](config[_0x122e('0x6')],{'host':_0x122e('0x8'),'port':0x18eb});var io=require(_0x122e('0x9'))(new Redis(config[_0x122e('0x6')]));function closeInteractions(){var _0x2d8072=[];return db[_0x122e('0xa')][_0x122e('0xb')]({'raw':!![],'attributes':['id',_0x122e('0xc')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0x122e('0xd'))}}})[_0x122e('0xe')](function(_0x3361d7){if(_0x3361d7&&_0x3361d7[_0x122e('0xf')]){_0x2d8072=_[_0x122e('0x10')](_0x3361d7||[],'id');logger[_0x122e('0x11')](_0x122e('0x12'),_0x2d8072['join']());return db['WhatsappInteraction'][_0x122e('0x13')]({'closeReason':_0x122e('0x14'),'disposition':_0x122e('0x15'),'closed':!![],'closedAt':moment()[_0x122e('0x16')](_0x122e('0x17'))},{'where':{'id':_0x2d8072}});}})[_0x122e('0xe')](function(){if(_0x2d8072&&_0x2d8072[_0x122e('0xf')]){logger[_0x122e('0x11')](_0x122e('0x18'),_0x2d8072['join']());for(var _0x5d427b=0x0;_0x5d427b<_0x2d8072['length'];_0x5d427b++){io[_0x122e('0x19')]('whatsappInteraction:update',{'id':_0x2d8072[_0x5d427b],'closed':!![]});}}})[_0x122e('0x1a')](function(_0x2a435a){logger[_0x122e('0x1b')](_0x122e('0x1c'),_0x2a435a?util[_0x122e('0x1d')](_0x2a435a,{'showHidden':![],'depth':null}):'');});}exports[_0x122e('0x1e')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index ab59683..8d5b9b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb59=['log','contacts2','hopper2','catch','push','Biondo','innocenzo.biondo','@xcally.com','now','Innocenzo','CmContact','destroy','then','finished\x20populating','contacts1','CmHopper','bulkCreate'];(function(_0x503950,_0x5022eb){var _0x1657a9=function(_0x4c1e8f){while(--_0x4c1e8f){_0x503950['push'](_0x503950['shift']());}};_0x1657a9(++_0x5022eb);}(_0xeb59,0x169));var _0x9eb5=function(_0x81e39d,_0x4c3934){_0x81e39d=_0x81e39d-0x0;var _0x548fbb=_0xeb59[_0x81e39d];return _0x548fbb;};'use strict';var util=require('util');var db=require('../mysqldb')['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x9eb5('0x0')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x9eb5('0x1')+i,'phone':0xf879fb460+i,'email':_0x9eb5('0x2')+i+_0x9eb5('0x3')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x9eb5('0x0')]({'id':i,'active':![],'scheduledat':Date[_0x9eb5('0x4')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x9eb5('0x4')](),'updatedAt':Date[_0x9eb5('0x4')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':_0x9eb5('0x5')+i,'lastName':_0x9eb5('0x1')+i,'phone':0xf879fb460+i,'email':_0x9eb5('0x2')+i+_0x9eb5('0x3')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2['push']({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x9eb5('0x4')]()});}db[_0x9eb5('0x6')][_0x9eb5('0x7')]({'where':{}})[_0x9eb5('0x8')](function(){return db['CmContact']['bulkCreate'](contacts);})[_0x9eb5('0x8')](function(){console['log'](_0x9eb5('0x9'),_0x9eb5('0xa'));return db[_0x9eb5('0xb')][_0x9eb5('0x7')]({'where':{}});})[_0x9eb5('0x8')](function(){return db[_0x9eb5('0xb')][_0x9eb5('0xc')](hopper);})[_0x9eb5('0x8')](function(){console[_0x9eb5('0xd')](_0x9eb5('0x9'),'hopper1');return db[_0x9eb5('0x6')]['bulkCreate'](contacts2);})[_0x9eb5('0x8')](function(){console['log'](_0x9eb5('0x9'),_0x9eb5('0xe'));return db[_0x9eb5('0xb')][_0x9eb5('0xc')](hopper2);})[_0x9eb5('0x8')](function(){console[_0x9eb5('0xd')]('finished\x20populating',_0x9eb5('0xf'));})[_0x9eb5('0x10')](function(_0x1e9906){console[_0x9eb5('0xd')](_0x1e9906);});
\ No newline at end of file
+var _0x12f5=['Biondo','innocenzo.biondo','@xcally.com','push','now','CmContact','destroy','bulkCreate','then','finished\x20populating','contacts1','CmHopper','log','hopper1','contacts2','catch','../mysqldb','Innocenzo'];(function(_0x58821f,_0x5d32e9){var _0x41a5bc=function(_0x50e609){while(--_0x50e609){_0x58821f['push'](_0x58821f['shift']());}};_0x41a5bc(++_0x5d32e9);}(_0x12f5,0x1c0));var _0x512f=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0x12f5[_0x279d37];return _0x530173;};'use strict';var util=require('util');var db=require(_0x512f('0x0'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts['push']({'id':i,'firstName':_0x512f('0x1')+i,'lastName':_0x512f('0x2')+i,'phone':0xf879fb460+i,'email':_0x512f('0x3')+i+_0x512f('0x4')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x512f('0x5')]({'id':i,'active':![],'scheduledat':Date[_0x512f('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x512f('0x6')](),'updatedAt':Date[_0x512f('0x6')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x512f('0x5')]({'id':i,'firstName':_0x512f('0x1')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x512f('0x3')+i+_0x512f('0x4')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x512f('0x5')]({'id':i,'active':![],'scheduledat':Date[_0x512f('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x512f('0x6')]()});}db[_0x512f('0x7')][_0x512f('0x8')]({'where':{}})['then'](function(){return db[_0x512f('0x7')][_0x512f('0x9')](contacts);})[_0x512f('0xa')](function(){console['log'](_0x512f('0xb'),_0x512f('0xc'));return db['CmHopper'][_0x512f('0x8')]({'where':{}});})[_0x512f('0xa')](function(){return db[_0x512f('0xd')][_0x512f('0x9')](hopper);})[_0x512f('0xa')](function(){console[_0x512f('0xe')](_0x512f('0xb'),_0x512f('0xf'));return db[_0x512f('0x7')][_0x512f('0x9')](contacts2);})['then'](function(){console['log'](_0x512f('0xb'),_0x512f('0x10'));return db[_0x512f('0xd')][_0x512f('0x9')](hopper2);})[_0x512f('0xa')](function(){console[_0x512f('0xe')](_0x512f('0xb'),'hopper2');})[_0x512f('0x11')](function(_0x412ca1){console[_0x512f('0xe')](_0x412ca1);});
\ No newline at end of file
index cacc368..17c2db5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae8d=['bulkCreate','then','log','catch','../mysqldb','push','%s%s','agent','format','%s%s@xcally.com','password','friend','udp','wss','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User'];(function(_0x1fa48e,_0x9d8448){var _0x5cc93f=function(_0x221980){while(--_0x221980){_0x1fa48e['push'](_0x1fa48e['shift']());}};_0x5cc93f(++_0x9d8448);}(_0xae8d,0x1d0));var _0xdae8=function(_0x2348fd,_0x5d137c){_0x2348fd=_0x2348fd-0x0;var _0x17cc9b=_0xae8d[_0x2348fd];return _0x17cc9b;};'use strict';var util=require('util');var db=require(_0xdae8('0x0'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0xdae8('0x1')]({'name':util['format'](_0xdae8('0x2'),_0xdae8('0x3'),i),'fullname':util['format'](_0xdae8('0x2'),'agent',i),'email':util[_0xdae8('0x4')](_0xdae8('0x5'),_0xdae8('0x3'),i),'role':_0xdae8('0x3'),'password':_0xdae8('0x6'),'internal':0xfa0+i,'type':_0xdae8('0x7'),'transport':[_0xdae8('0x8'),'ws',_0xdae8('0x9')],'disallow':['all'],'allow':['ulaw'],'defaultuser':util['format'](_0xdae8('0x2'),_0xdae8('0x3'),i),'encryption':'yes','avpf':'yes','force_avp':'yes','icesupport':_0xdae8('0xa'),'dtlsenable':_0xdae8('0xa'),'dtlsverify':'no','dtlscertfile':_0xdae8('0xb'),'dtlsprivatekey':_0xdae8('0xc'),'dtlssetup':_0xdae8('0xd'),'callerid':util[_0xdae8('0x4')](_0xdae8('0xe'),util[_0xdae8('0x4')](_0xdae8('0x2'),'agent',i),0xfa0+i)});}db[_0xdae8('0xf')][_0xdae8('0x10')](users)[_0xdae8('0x11')](function(){console[_0xdae8('0x12')]('add\x20user');})[_0xdae8('0x13')](function(_0x37762c){console[_0xdae8('0x12')](_0x37762c);});
\ No newline at end of file
+var _0xaf53=['yes','\x22%s\x22\x20<%s>','User','bulkCreate','then','add\x20user','log','../mysqldb','push','format','%s%s','agent','%s%s@xcally.com','password','friend','wss','all','ulaw'];(function(_0x578c73,_0x2d9523){var _0x298c03=function(_0x35be76){while(--_0x35be76){_0x578c73['push'](_0x578c73['shift']());}};_0x298c03(++_0x2d9523);}(_0xaf53,0x15d));var _0x3af5=function(_0x41c80b,_0x5746c4){_0x41c80b=_0x41c80b-0x0;var _0x205ff1=_0xaf53[_0x41c80b];return _0x205ff1;};'use strict';var util=require('util');var db=require(_0x3af5('0x0'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x3af5('0x1')]({'name':util[_0x3af5('0x2')](_0x3af5('0x3'),_0x3af5('0x4'),i),'fullname':util[_0x3af5('0x2')](_0x3af5('0x3'),_0x3af5('0x4'),i),'email':util['format'](_0x3af5('0x5'),_0x3af5('0x4'),i),'role':_0x3af5('0x4'),'password':_0x3af5('0x6'),'internal':0xfa0+i,'type':_0x3af5('0x7'),'transport':['udp','ws',_0x3af5('0x8')],'disallow':[_0x3af5('0x9')],'allow':[_0x3af5('0xa')],'defaultuser':util[_0x3af5('0x2')]('%s%s',_0x3af5('0x4'),i),'encryption':_0x3af5('0xb'),'avpf':'yes','force_avp':_0x3af5('0xb'),'icesupport':_0x3af5('0xb'),'dtlsenable':_0x3af5('0xb'),'dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':'actpass','callerid':util[_0x3af5('0x2')](_0x3af5('0xc'),util[_0x3af5('0x2')]('%s%s','agent',i),0xfa0+i)});}db[_0x3af5('0xd')][_0x3af5('0xe')](users)[_0x3af5('0xf')](function(){console['log'](_0x3af5('0x10'));})['catch'](function(_0x2d470e){console[_0x3af5('0x11')](_0x2d470e);});
\ No newline at end of file
index ee328de..0457f20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ace=['FaxInteraction','FaxInteractions','SmsInteractions','OpenchannelInteraction','WhatsappInteractions','user:%s','admin','voice:outbound','VoiceQueue','push','ChatQueue','FaxQueue','MailQueue','WhatsappQueue','Trunk','voice:inbound','VoiceQueues','MailQueues','OpenchannelQueue','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getWhatsappQueues','all','length','chat','fax','sms','openchannel','whatsapp','trunk:%s','campaign:%s:%s','type','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','request','remotePort','nsp','address','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','Agents','User','role','agent','telephone','UserProfileSection','findOne','then','autoAssociation','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','Telephones','findAll','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','Campaign','format','handshake','find','userProfileId','query','ChatInteraction','ChatInteractions'];(function(_0x4a7631,_0x2c85b9){var _0x1a5a6f=function(_0x1ee3fd){while(--_0x1ee3fd){_0x4a7631['push'](_0x4a7631['shift']());}};_0x1a5a6f(++_0x2c85b9);}(_0x8ace,0x1bc));var _0xe8ac=function(_0x4bb32f,_0x2217e){_0x4bb32f=_0x4bb32f-0x0;var _0x2dd6e6=_0x8ace[_0x4bb32f];return _0x2dd6e6;};'use strict';var _=require(_0xe8ac('0x0'));var util=require(_0xe8ac('0x1'));var BPromise=require(_0xe8ac('0x2'));var db=require(_0xe8ac('0x3'))['db'];var config=require(_0xe8ac('0x4'));var queryQueues={'attributes':['id',_0xe8ac('0x5')],'include':[{'as':_0xe8ac('0x6'),'model':db[_0xe8ac('0x7')],'attributes':['id',_0xe8ac('0x5'),_0xe8ac('0x8')],'raw':!![],'where':{'role':_0xe8ac('0x9')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xe8ac('0x5')],'where':{'role':_0xe8ac('0xa')}};var queryTrunks={'raw':!![],'attributes':['id',_0xe8ac('0x5')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0xe8ac('0x9')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xe8ac('0x5'),'type'],'where':{'type':'ivr'}};function getAssociatedResources(_0x4644ef,_0x513793,_0x1b5467){return db[_0xe8ac('0xb')][_0xe8ac('0xc')]({'where':{'name':_0x4644ef,'userProfileId':_0x513793},'raw':!![]})[_0xe8ac('0xd')](function(_0xa18ae1){if(_0xa18ae1){if(_0xa18ae1[_0xe8ac('0xe')]){switch(_0x4644ef){case'VoiceQueues':case _0xe8ac('0xf'):case _0xe8ac('0x10'):case _0xe8ac('0x11'):case'MailQueues':case _0xe8ac('0x12'):case _0xe8ac('0x13'):return db[_0x1b5467]['findAll'](queryQueues);case _0xe8ac('0x14'):return db[_0x1b5467][_0xe8ac('0x15')](queryTelephones);case _0xe8ac('0x16'):return db[_0x1b5467][_0xe8ac('0x15')](queryTrunks);case _0xe8ac('0x17'):return db[_0x1b5467][_0xe8ac('0x15')](queryCampaigns);}}else{return db[_0xe8ac('0x18')][_0xe8ac('0x15')]({'attributes':[_0xe8ac('0x19')],'where':{'sectionId':_0xa18ae1['id']},'raw':!![]})[_0xe8ac('0xd')](function(_0x5e4495){if(_0x5e4495){var _0x224bda={'where':{'id':_[_0xe8ac('0x1a')](_0x5e4495,'resourceId')},'raw':!![]};switch(_0x1b5467){case _0xe8ac('0x7'):_0x224bda[_0xe8ac('0x1b')][_0xe8ac('0x8')]=_0xe8ac('0xa');break;case _0xe8ac('0x1c'):_0x224bda[_0xe8ac('0x1b')]['type']='ivr';break;}return db[_0x1b5467]['findAll'](_0x224bda);}else{return[];}});}}else{return[];}})[_0xe8ac('0xd')](function(_0x24a346){return _0x24a346;});}function joinOrLeaveQueues(_0x4e5d00,_0x6d7bb2,_0x5bc15e,_0xae385f){_0x4e5d00[_0x6d7bb2](util[_0xe8ac('0x1d')]('%s:queue:%s',_0x5bc15e,_0xae385f[_0xe8ac('0x5')]));if(_0xae385f[_0xe8ac('0x6')]){for(var _0x13aa7c=0x0;_0x13aa7c<_0xae385f[_0xe8ac('0x6')]['length'];_0x13aa7c+=0x1){_0x4e5d00[_0x6d7bb2](util[_0xe8ac('0x1d')]('user:%s',_0xae385f[_0xe8ac('0x6')][_0x13aa7c][_0xe8ac('0x5')]));}}}function joinOrLeave(_0x3c3a78,_0x252440,_0x36108c){var _0x31956a;if(_0x3c3a78[_0xe8ac('0x1e')]['query']['id']){db[_0xe8ac('0x7')][_0xe8ac('0x1f')]({'attributes':['id',_0xe8ac('0x5'),_0xe8ac('0x8'),_0xe8ac('0x20')],'where':{'id':_0x3c3a78[_0xe8ac('0x1e')][_0xe8ac('0x21')]['id']},'include':[{'model':db[_0xe8ac('0x22')],'as':_0xe8ac('0x23'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xe8ac('0x24')],'as':_0xe8ac('0x25'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0xe8ac('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xe8ac('0x27')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0xe8ac('0x28'),'attributes':['id'],'raw':!![]}]})[_0xe8ac('0xd')](function(_0x3798c5){if(_0x3798c5){_0x31956a=_0x3798c5;_0x3c3a78[_0x252440](util[_0xe8ac('0x1d')](_0xe8ac('0x29'),_0x3798c5[_0xe8ac('0x5')]));var _0x1a2ef7=[];switch(_0x3798c5['role']){case _0xe8ac('0x2a'):_0x3c3a78[_0x252440]('voice:inbound');_0x3c3a78[_0x252440](_0xe8ac('0x2b'));if(queryQueues['hasOwnProperty']('include')){delete queryQueues['include'];}_0x1a2ef7['push'](db[_0xe8ac('0x2c')][_0xe8ac('0x15')](queryQueues));_0x1a2ef7[_0xe8ac('0x2d')](db[_0xe8ac('0x2e')][_0xe8ac('0x15')](queryQueues));_0x1a2ef7[_0xe8ac('0x2d')](db[_0xe8ac('0x2f')]['findAll'](queryQueues));_0x1a2ef7[_0xe8ac('0x2d')](db['SmsQueue']['findAll'](queryQueues));_0x1a2ef7['push'](db[_0xe8ac('0x30')][_0xe8ac('0x15')](queryQueues));_0x1a2ef7[_0xe8ac('0x2d')](db['OpenchannelQueue']['findAll'](queryQueues));_0x1a2ef7[_0xe8ac('0x2d')](db[_0xe8ac('0x31')][_0xe8ac('0x15')](queryQueues));_0x1a2ef7[_0xe8ac('0x2d')](db['User'][_0xe8ac('0x15')](queryTelephones));_0x1a2ef7[_0xe8ac('0x2d')](db[_0xe8ac('0x32')][_0xe8ac('0x15')](queryTrunks));_0x1a2ef7[_0xe8ac('0x2d')](db[_0xe8ac('0x1c')][_0xe8ac('0x15')](queryCampaigns));_0x1a2ef7['push'](db[_0xe8ac('0x7')][_0xe8ac('0x15')](queryAgents));break;case'user':_0x3c3a78[_0x252440](_0xe8ac('0x33'));_0x3c3a78[_0x252440](_0xe8ac('0x2b'));_0x1a2ef7[_0xe8ac('0x2d')](getAssociatedResources(_0xe8ac('0x34'),_0x3798c5['userProfileId'],_0xe8ac('0x2c')));_0x1a2ef7['push'](getAssociatedResources('ChatQueues',_0x3798c5[_0xe8ac('0x20')],_0xe8ac('0x2e')));_0x1a2ef7[_0xe8ac('0x2d')](getAssociatedResources(_0xe8ac('0x10'),_0x3798c5[_0xe8ac('0x20')],_0xe8ac('0x2f')));_0x1a2ef7[_0xe8ac('0x2d')](getAssociatedResources(_0xe8ac('0x11'),_0x3798c5[_0xe8ac('0x20')],'SmsQueue'));_0x1a2ef7['push'](getAssociatedResources(_0xe8ac('0x35'),_0x3798c5[_0xe8ac('0x20')],'MailQueue'));_0x1a2ef7['push'](getAssociatedResources('OpenchannelQueues',_0x3798c5[_0xe8ac('0x20')],_0xe8ac('0x36')));_0x1a2ef7[_0xe8ac('0x2d')](getAssociatedResources(_0xe8ac('0x13'),_0x3798c5['userProfileId'],_0xe8ac('0x31')));_0x1a2ef7[_0xe8ac('0x2d')](getAssociatedResources('Telephones',_0x3798c5[_0xe8ac('0x20')],_0xe8ac('0x7')));_0x1a2ef7[_0xe8ac('0x2d')](getAssociatedResources(_0xe8ac('0x16'),_0x3798c5['userProfileId'],'Trunk'));_0x1a2ef7['push'](getAssociatedResources(_0xe8ac('0x17'),_0x3798c5[_0xe8ac('0x20')],_0xe8ac('0x1c')));_0x1a2ef7[_0xe8ac('0x2d')](db['User']['findAll'](queryAgents));break;case _0xe8ac('0x9'):_0x3c3a78[_0x252440](_0xe8ac('0x33'));_0x3c3a78[_0x252440](_0xe8ac('0x2b'));_0x1a2ef7[_0xe8ac('0x2d')](_0x3798c5[_0xe8ac('0x37')]({'attributes':['id',_0xe8ac('0x5')]}));_0x1a2ef7[_0xe8ac('0x2d')](_0x3798c5[_0xe8ac('0x38')]({'attributes':['id',_0xe8ac('0x5')]}));_0x1a2ef7[_0xe8ac('0x2d')](_0x3798c5[_0xe8ac('0x39')]({'attributes':['id',_0xe8ac('0x5')]}));_0x1a2ef7[_0xe8ac('0x2d')](_0x3798c5[_0xe8ac('0x3a')]({'attributes':['id','name']}));_0x1a2ef7[_0xe8ac('0x2d')](_0x3798c5['getMailQueues']({'attributes':['id','name']}));_0x1a2ef7['push'](_0x3798c5['getOpenchannelQueues']({'attributes':['id',_0xe8ac('0x5')]}));_0x1a2ef7['push'](_0x3798c5[_0xe8ac('0x3b')]({'attributes':['id','name']}));break;}return BPromise[_0xe8ac('0x3c')](_0x1a2ef7);}})[_0xe8ac('0xd')](function(_0x479430){if(_0x479430&&_0x479430[_0xe8ac('0x3d')]){for(var _0x4ec426=0x0;_0x4ec426<_0x479430[_0xe8ac('0x3d')];_0x4ec426+=0x1){for(var _0x388115=0x0;_0x388115<_0x479430[_0x4ec426][_0xe8ac('0x3d')];_0x388115+=0x1){switch(_0x4ec426){case 0x0:joinOrLeaveQueues(_0x3c3a78,_0x252440,'voice',_0x479430[_0x4ec426][_0x388115]);break;case 0x1:joinOrLeaveQueues(_0x3c3a78,_0x252440,_0xe8ac('0x3e'),_0x479430[_0x4ec426][_0x388115]);break;case 0x2:joinOrLeaveQueues(_0x3c3a78,_0x252440,_0xe8ac('0x3f'),_0x479430[_0x4ec426][_0x388115]);break;case 0x3:joinOrLeaveQueues(_0x3c3a78,_0x252440,_0xe8ac('0x40'),_0x479430[_0x4ec426][_0x388115]);break;case 0x4:joinOrLeaveQueues(_0x3c3a78,_0x252440,'mail',_0x479430[_0x4ec426][_0x388115]);break;case 0x5:joinOrLeaveQueues(_0x3c3a78,_0x252440,_0xe8ac('0x41'),_0x479430[_0x4ec426][_0x388115]);break;case 0x6:joinOrLeaveQueues(_0x3c3a78,_0x252440,_0xe8ac('0x42'),_0x479430[_0x4ec426][_0x388115]);break;case 0x7:if(_0x31956a[_0xe8ac('0x8')]!=='agent')_0x3c3a78[_0x252440](util[_0xe8ac('0x1d')]('telephone:%s',_0x479430[_0x4ec426][_0x388115][_0xe8ac('0x5')]));break;case 0x8:if(_0x31956a[_0xe8ac('0x8')]!==_0xe8ac('0x9'))_0x3c3a78[_0x252440](util['format'](_0xe8ac('0x43'),_0x479430[_0x4ec426][_0x388115][_0xe8ac('0x5')]));break;case 0x9:if(_0x31956a[_0xe8ac('0x8')]!==_0xe8ac('0x9'))_0x3c3a78[_0x252440](util[_0xe8ac('0x1d')](_0xe8ac('0x44'),_0x479430[_0x4ec426][_0x388115][_0xe8ac('0x45')],_0x479430[_0x4ec426][_0x388115][_0xe8ac('0x5')]));break;case 0xa:_0x3c3a78[_0x252440](util[_0xe8ac('0x1d')](_0xe8ac('0x29'),_0x479430[_0x4ec426][_0x388115]['name']));break;}}}}})[_0xe8ac('0xd')](function(){if(_0x252440===_0xe8ac('0x46')){var _0x3abb66=_['map'](_0x31956a[_0xe8ac('0x23')],'id');return _0x31956a[_0xe8ac('0x47')](_0x3abb66)[_0xe8ac('0xd')](function(){for(var _0x8f29a0=0x0;_0x8f29a0<_0x3abb66[_0xe8ac('0x3d')];_0x8f29a0+=0x1){_0x36108c[_0xe8ac('0x48')](_0xe8ac('0x49'),{'ChatInteractionId':Number(_0x3abb66[_0x8f29a0]),'UserId':Number(_0x31956a['id'])});}});}})[_0xe8ac('0xd')](function(){if(_0x252440===_0xe8ac('0x46')){var _0x29fa3b=_[_0xe8ac('0x1a')](_0x31956a['MailInteractions'],'id');return _0x31956a[_0xe8ac('0x4a')](_0x29fa3b)[_0xe8ac('0xd')](function(){for(var _0x19bd80=0x0;_0x19bd80<_0x29fa3b[_0xe8ac('0x3d')];_0x19bd80+=0x1){_0x36108c[_0xe8ac('0x48')](_0xe8ac('0x4b'),{'MailInteractionId':Number(_0x29fa3b[_0x19bd80]),'UserId':Number(_0x31956a['id'])});}});}})[_0xe8ac('0xd')](function(){if(_0x252440===_0xe8ac('0x46')){var _0x199505=_[_0xe8ac('0x1a')](_0x31956a['FaxInteractions'],'id');return _0x31956a[_0xe8ac('0x4c')](_0x199505)[_0xe8ac('0xd')](function(){for(var _0x1ad14a=0x0;_0x1ad14a<_0x199505['length'];_0x1ad14a+=0x1){_0x36108c[_0xe8ac('0x48')](_0xe8ac('0x4d'),{'FaxInteractionId':Number(_0x199505[_0x1ad14a]),'UserId':Number(_0x31956a['id'])});}});}})[_0xe8ac('0xd')](function(){if(_0x252440===_0xe8ac('0x46')){var _0x37dd9d=_[_0xe8ac('0x1a')](_0x31956a[_0xe8ac('0x26')],'id');return _0x31956a[_0xe8ac('0x4e')](_0x37dd9d)[_0xe8ac('0xd')](function(){for(var _0x143594=0x0;_0x143594<_0x37dd9d[_0xe8ac('0x3d')];_0x143594+=0x1){_0x36108c[_0xe8ac('0x48')](_0xe8ac('0x4f'),{'SmsInteractionId':Number(_0x37dd9d[_0x143594]),'UserId':Number(_0x31956a['id'])});}});}})['then'](function(){if(_0x252440===_0xe8ac('0x46')){var _0x2d534a=_[_0xe8ac('0x1a')](_0x31956a['OpenchannelInteractions'],'id');return _0x31956a[_0xe8ac('0x50')](_0x2d534a)['then'](function(){for(var _0x2e2138=0x0;_0x2e2138<_0x2d534a[_0xe8ac('0x3d')];_0x2e2138+=0x1){_0x36108c[_0xe8ac('0x48')](_0xe8ac('0x51'),{'OpenchannelInteractionId':Number(_0x2d534a[_0x2e2138]),'UserId':Number(_0x31956a['id'])});}});}})[_0xe8ac('0xd')](function(){if(_0x252440==='leave'){var _0x5d4e08=_[_0xe8ac('0x1a')](_0x31956a[_0xe8ac('0x28')],'id');return _0x31956a[_0xe8ac('0x52')](_0x5d4e08)['then'](function(){for(var _0x1c9e9b=0x0;_0x1c9e9b<_0x5d4e08[_0xe8ac('0x3d')];_0x1c9e9b+=0x1){_0x36108c[_0xe8ac('0x48')](_0xe8ac('0x53'),{'WhatsappInteractionId':Number(_0x5d4e08[_0x1c9e9b]),'UserId':Number(_0x31956a['id'])});}});}})[_0xe8ac('0x54')](function(_0x8cf2bd){_0x3c3a78[_0xe8ac('0x55')](_0x8cf2bd);});}}function onDisconnect(_0x5c1835,_0x33b2e2){joinOrLeave(_0x5c1835,_0xe8ac('0x46'),_0x33b2e2);}function onConnect(_0x1ec9f9){joinOrLeave(_0x1ec9f9,_0xe8ac('0x56'));}exports[_0xe8ac('0x57')]=function(_0x31fff8){_0x31fff8['on'](_0xe8ac('0x58'),function(_0xa94389){_0xa94389['setMaxListeners'](0x0);_0xa94389['address']=_0xa94389[_0xe8ac('0x59')]['connection']['remoteAddress']+':'+_0xa94389[_0xe8ac('0x59')][_0xe8ac('0x58')][_0xe8ac('0x5a')];_0xa94389['connectedAt']=new Date();_0xa94389['log']=function(_0x5a3bb8){console[_0xe8ac('0x55')]('SocketIO\x20'+_0xa94389[_0xe8ac('0x5b')]['name']+'['+_0xa94389[_0xe8ac('0x5c')]+']',_0x5a3bb8);};_0xa94389['on'](_0xe8ac('0x5d'),function(){onDisconnect(_0xa94389,_0x31fff8);_0xa94389[_0xe8ac('0x55')](_0xe8ac('0x5e'));});onConnect(_0xa94389);_0xa94389[_0xe8ac('0x55')](_0xe8ac('0x5f'));});};
\ No newline at end of file
+var _0x870d=['leave','emit','user_has_chat_interactions:remove','MailInteractions','removeMailInteractions','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','WhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','setMaxListeners','address','remoteAddress','request','remotePort','SocketIO\x20','nsp','disconnect','CONNECTED','util','bluebird','../mysqldb','./environment','name','Agents','role','agent','telephone','UserProfileSection','findOne','then','VoiceQueues','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','map','resourceId','User','where','type','length','format','user:%s','handshake','query','find','userProfileId','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteraction','admin','include','VoiceQueue','ChatQueue','push','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Campaign','user','voice:inbound','SmsQueues','WhatsappQueues','Trunk','voice:outbound','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','voice','sms','openchannel','whatsapp','telephone:%s','trunk:%s'];(function(_0x188703,_0x596b26){var _0x1a0c81=function(_0x1cd22d){while(--_0x1cd22d){_0x188703['push'](_0x188703['shift']());}};_0x1a0c81(++_0x596b26);}(_0x870d,0xde));var _0xd870=function(_0x147162,_0x33e652){_0x147162=_0x147162-0x0;var _0x5117af=_0x870d[_0x147162];return _0x5117af;};'use strict';var _=require('lodash');var util=require(_0xd870('0x0'));var BPromise=require(_0xd870('0x1'));var db=require(_0xd870('0x2'))['db'];var config=require(_0xd870('0x3'));var queryQueues={'attributes':['id',_0xd870('0x4')],'include':[{'as':_0xd870('0x5'),'model':db['User'],'attributes':['id',_0xd870('0x4'),_0xd870('0x6')],'raw':!![],'where':{'role':_0xd870('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xd870('0x4')],'where':{'role':_0xd870('0x8')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0xd870('0x4')],'where':{'role':_0xd870('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xd870('0x4'),'type'],'where':{'type':'ivr'}};function getAssociatedResources(_0x1eb035,_0x3cee02,_0x16e059){return db[_0xd870('0x9')][_0xd870('0xa')]({'where':{'name':_0x1eb035,'userProfileId':_0x3cee02},'raw':!![]})[_0xd870('0xb')](function(_0x4e9745){if(_0x4e9745){if(_0x4e9745['autoAssociation']){switch(_0x1eb035){case _0xd870('0xc'):case _0xd870('0xd'):case _0xd870('0xe'):case'SmsQueues':case _0xd870('0xf'):case _0xd870('0x10'):case'WhatsappQueues':return db[_0x16e059][_0xd870('0x11')](queryQueues);case _0xd870('0x12'):return db[_0x16e059]['findAll'](queryTelephones);case _0xd870('0x13'):return db[_0x16e059]['findAll'](queryTrunks);case _0xd870('0x14'):return db[_0x16e059][_0xd870('0x11')](queryCampaigns);}}else{return db[_0xd870('0x15')][_0xd870('0x11')]({'attributes':['resourceId'],'where':{'sectionId':_0x4e9745['id']},'raw':!![]})[_0xd870('0xb')](function(_0xb2308b){if(_0xb2308b){var _0x57708e={'where':{'id':_[_0xd870('0x16')](_0xb2308b,_0xd870('0x17'))},'raw':!![]};switch(_0x16e059){case _0xd870('0x18'):_0x57708e['where'][_0xd870('0x6')]=_0xd870('0x8');break;case'Campaign':_0x57708e[_0xd870('0x19')][_0xd870('0x1a')]='ivr';break;}return db[_0x16e059][_0xd870('0x11')](_0x57708e);}else{return[];}});}}else{return[];}})[_0xd870('0xb')](function(_0x5e6b77){return _0x5e6b77;});}function joinOrLeaveQueues(_0x2e33a2,_0x172105,_0x475d52,_0x3d4a49){_0x2e33a2[_0x172105](util['format']('%s:queue:%s',_0x475d52,_0x3d4a49[_0xd870('0x4')]));if(_0x3d4a49[_0xd870('0x5')]){for(var _0x4dd75e=0x0;_0x4dd75e<_0x3d4a49['Agents'][_0xd870('0x1b')];_0x4dd75e+=0x1){_0x2e33a2[_0x172105](util[_0xd870('0x1c')](_0xd870('0x1d'),_0x3d4a49[_0xd870('0x5')][_0x4dd75e][_0xd870('0x4')]));}}}function joinOrLeave(_0x474500,_0x134b84,_0x549b1e){var _0x945d1;if(_0x474500[_0xd870('0x1e')][_0xd870('0x1f')]['id']){db[_0xd870('0x18')][_0xd870('0x20')]({'attributes':['id',_0xd870('0x4'),_0xd870('0x6'),_0xd870('0x21')],'where':{'id':_0x474500[_0xd870('0x1e')]['query']['id']},'include':[{'model':db['ChatInteraction'],'as':_0xd870('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xd870('0x23')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xd870('0x24')],'as':_0xd870('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xd870('0x26')],'as':_0xd870('0x27'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0xd870('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0xd870('0x29')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xd870('0xb')](function(_0x5ed1d5){if(_0x5ed1d5){_0x945d1=_0x5ed1d5;_0x474500[_0x134b84](util[_0xd870('0x1c')]('user:%s',_0x5ed1d5['name']));var _0x53f41e=[];switch(_0x5ed1d5[_0xd870('0x6')]){case _0xd870('0x2a'):_0x474500[_0x134b84]('voice:inbound');_0x474500[_0x134b84]('voice:outbound');if(queryQueues['hasOwnProperty']('include')){delete queryQueues[_0xd870('0x2b')];}_0x53f41e['push'](db[_0xd870('0x2c')]['findAll'](queryQueues));_0x53f41e['push'](db[_0xd870('0x2d')]['findAll'](queryQueues));_0x53f41e[_0xd870('0x2e')](db[_0xd870('0x2f')][_0xd870('0x11')](queryQueues));_0x53f41e['push'](db[_0xd870('0x30')]['findAll'](queryQueues));_0x53f41e[_0xd870('0x2e')](db[_0xd870('0x31')]['findAll'](queryQueues));_0x53f41e[_0xd870('0x2e')](db[_0xd870('0x32')][_0xd870('0x11')](queryQueues));_0x53f41e[_0xd870('0x2e')](db[_0xd870('0x33')]['findAll'](queryQueues));_0x53f41e[_0xd870('0x2e')](db['User'][_0xd870('0x11')](queryTelephones));_0x53f41e[_0xd870('0x2e')](db['Trunk'][_0xd870('0x11')](queryTrunks));_0x53f41e['push'](db[_0xd870('0x34')][_0xd870('0x11')](queryCampaigns));_0x53f41e[_0xd870('0x2e')](db[_0xd870('0x18')][_0xd870('0x11')](queryAgents));break;case _0xd870('0x35'):_0x474500[_0x134b84](_0xd870('0x36'));_0x474500[_0x134b84]('voice:outbound');_0x53f41e[_0xd870('0x2e')](getAssociatedResources(_0xd870('0xc'),_0x5ed1d5[_0xd870('0x21')],'VoiceQueue'));_0x53f41e[_0xd870('0x2e')](getAssociatedResources(_0xd870('0xd'),_0x5ed1d5[_0xd870('0x21')],_0xd870('0x2d')));_0x53f41e['push'](getAssociatedResources('FaxQueues',_0x5ed1d5[_0xd870('0x21')],_0xd870('0x2f')));_0x53f41e[_0xd870('0x2e')](getAssociatedResources(_0xd870('0x37'),_0x5ed1d5[_0xd870('0x21')],'SmsQueue'));_0x53f41e[_0xd870('0x2e')](getAssociatedResources('MailQueues',_0x5ed1d5[_0xd870('0x21')],_0xd870('0x31')));_0x53f41e[_0xd870('0x2e')](getAssociatedResources('OpenchannelQueues',_0x5ed1d5['userProfileId'],'OpenchannelQueue'));_0x53f41e[_0xd870('0x2e')](getAssociatedResources(_0xd870('0x38'),_0x5ed1d5[_0xd870('0x21')],'WhatsappQueue'));_0x53f41e[_0xd870('0x2e')](getAssociatedResources(_0xd870('0x12'),_0x5ed1d5[_0xd870('0x21')],'User'));_0x53f41e[_0xd870('0x2e')](getAssociatedResources('Trunks',_0x5ed1d5[_0xd870('0x21')],_0xd870('0x39')));_0x53f41e[_0xd870('0x2e')](getAssociatedResources('IvrCampaigns',_0x5ed1d5[_0xd870('0x21')],'Campaign'));_0x53f41e['push'](db[_0xd870('0x18')][_0xd870('0x11')](queryAgents));break;case _0xd870('0x7'):_0x474500[_0x134b84](_0xd870('0x36'));_0x474500[_0x134b84](_0xd870('0x3a'));_0x53f41e['push'](_0x5ed1d5[_0xd870('0x3b')]({'attributes':['id','name']}));_0x53f41e[_0xd870('0x2e')](_0x5ed1d5[_0xd870('0x3c')]({'attributes':['id',_0xd870('0x4')]}));_0x53f41e[_0xd870('0x2e')](_0x5ed1d5[_0xd870('0x3d')]({'attributes':['id',_0xd870('0x4')]}));_0x53f41e[_0xd870('0x2e')](_0x5ed1d5[_0xd870('0x3e')]({'attributes':['id',_0xd870('0x4')]}));_0x53f41e[_0xd870('0x2e')](_0x5ed1d5[_0xd870('0x3f')]({'attributes':['id',_0xd870('0x4')]}));_0x53f41e[_0xd870('0x2e')](_0x5ed1d5[_0xd870('0x40')]({'attributes':['id',_0xd870('0x4')]}));_0x53f41e[_0xd870('0x2e')](_0x5ed1d5[_0xd870('0x41')]({'attributes':['id',_0xd870('0x4')]}));break;}return BPromise['all'](_0x53f41e);}})['then'](function(_0x15a97c){if(_0x15a97c&&_0x15a97c[_0xd870('0x1b')]){for(var _0x498d39=0x0;_0x498d39<_0x15a97c[_0xd870('0x1b')];_0x498d39+=0x1){for(var _0x4e0735=0x0;_0x4e0735<_0x15a97c[_0x498d39][_0xd870('0x1b')];_0x4e0735+=0x1){switch(_0x498d39){case 0x0:joinOrLeaveQueues(_0x474500,_0x134b84,_0xd870('0x42'),_0x15a97c[_0x498d39][_0x4e0735]);break;case 0x1:joinOrLeaveQueues(_0x474500,_0x134b84,'chat',_0x15a97c[_0x498d39][_0x4e0735]);break;case 0x2:joinOrLeaveQueues(_0x474500,_0x134b84,'fax',_0x15a97c[_0x498d39][_0x4e0735]);break;case 0x3:joinOrLeaveQueues(_0x474500,_0x134b84,_0xd870('0x43'),_0x15a97c[_0x498d39][_0x4e0735]);break;case 0x4:joinOrLeaveQueues(_0x474500,_0x134b84,'mail',_0x15a97c[_0x498d39][_0x4e0735]);break;case 0x5:joinOrLeaveQueues(_0x474500,_0x134b84,_0xd870('0x44'),_0x15a97c[_0x498d39][_0x4e0735]);break;case 0x6:joinOrLeaveQueues(_0x474500,_0x134b84,_0xd870('0x45'),_0x15a97c[_0x498d39][_0x4e0735]);break;case 0x7:if(_0x945d1[_0xd870('0x6')]!==_0xd870('0x7'))_0x474500[_0x134b84](util[_0xd870('0x1c')](_0xd870('0x46'),_0x15a97c[_0x498d39][_0x4e0735][_0xd870('0x4')]));break;case 0x8:if(_0x945d1['role']!==_0xd870('0x7'))_0x474500[_0x134b84](util[_0xd870('0x1c')](_0xd870('0x47'),_0x15a97c[_0x498d39][_0x4e0735][_0xd870('0x4')]));break;case 0x9:if(_0x945d1[_0xd870('0x6')]!==_0xd870('0x7'))_0x474500[_0x134b84](util[_0xd870('0x1c')]('campaign:%s:%s',_0x15a97c[_0x498d39][_0x4e0735]['type'],_0x15a97c[_0x498d39][_0x4e0735][_0xd870('0x4')]));break;case 0xa:_0x474500[_0x134b84](util['format'](_0xd870('0x1d'),_0x15a97c[_0x498d39][_0x4e0735][_0xd870('0x4')]));break;}}}}})[_0xd870('0xb')](function(){if(_0x134b84===_0xd870('0x48')){var _0xec0cbd=_[_0xd870('0x16')](_0x945d1[_0xd870('0x22')],'id');return _0x945d1['removeChatInteractions'](_0xec0cbd)[_0xd870('0xb')](function(){for(var _0x328de9=0x0;_0x328de9<_0xec0cbd[_0xd870('0x1b')];_0x328de9+=0x1){_0x549b1e[_0xd870('0x49')](_0xd870('0x4a'),{'ChatInteractionId':Number(_0xec0cbd[_0x328de9]),'UserId':Number(_0x945d1['id'])});}});}})[_0xd870('0xb')](function(){if(_0x134b84==='leave'){var _0x1c4e57=_[_0xd870('0x16')](_0x945d1[_0xd870('0x4b')],'id');return _0x945d1[_0xd870('0x4c')](_0x1c4e57)[_0xd870('0xb')](function(){for(var _0x4bd445=0x0;_0x4bd445<_0x1c4e57[_0xd870('0x1b')];_0x4bd445+=0x1){_0x549b1e[_0xd870('0x49')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x1c4e57[_0x4bd445]),'UserId':Number(_0x945d1['id'])});}});}})[_0xd870('0xb')](function(){if(_0x134b84===_0xd870('0x48')){var _0x4cbc2e=_[_0xd870('0x16')](_0x945d1[_0xd870('0x25')],'id');return _0x945d1[_0xd870('0x4d')](_0x4cbc2e)[_0xd870('0xb')](function(){for(var _0x10cfc4=0x0;_0x10cfc4<_0x4cbc2e[_0xd870('0x1b')];_0x10cfc4+=0x1){_0x549b1e['emit'](_0xd870('0x4e'),{'FaxInteractionId':Number(_0x4cbc2e[_0x10cfc4]),'UserId':Number(_0x945d1['id'])});}});}})[_0xd870('0xb')](function(){if(_0x134b84===_0xd870('0x48')){var _0x3bad36=_[_0xd870('0x16')](_0x945d1['SmsInteractions'],'id');return _0x945d1[_0xd870('0x4f')](_0x3bad36)[_0xd870('0xb')](function(){for(var _0x15998c=0x0;_0x15998c<_0x3bad36[_0xd870('0x1b')];_0x15998c+=0x1){_0x549b1e[_0xd870('0x49')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x3bad36[_0x15998c]),'UserId':Number(_0x945d1['id'])});}});}})[_0xd870('0xb')](function(){if(_0x134b84===_0xd870('0x48')){var _0x4a542d=_[_0xd870('0x16')](_0x945d1[_0xd870('0x28')],'id');return _0x945d1[_0xd870('0x50')](_0x4a542d)[_0xd870('0xb')](function(){for(var _0x5c15a1=0x0;_0x5c15a1<_0x4a542d[_0xd870('0x1b')];_0x5c15a1+=0x1){_0x549b1e['emit'](_0xd870('0x51'),{'OpenchannelInteractionId':Number(_0x4a542d[_0x5c15a1]),'UserId':Number(_0x945d1['id'])});}});}})[_0xd870('0xb')](function(){if(_0x134b84===_0xd870('0x48')){var _0x47abe9=_[_0xd870('0x16')](_0x945d1[_0xd870('0x52')],'id');return _0x945d1['removeWhatsappInteractions'](_0x47abe9)['then'](function(){for(var _0x163c1b=0x0;_0x163c1b<_0x47abe9['length'];_0x163c1b+=0x1){_0x549b1e[_0xd870('0x49')](_0xd870('0x53'),{'WhatsappInteractionId':Number(_0x47abe9[_0x163c1b]),'UserId':Number(_0x945d1['id'])});}});}})[_0xd870('0x54')](function(_0x519ce0){_0x474500[_0xd870('0x55')](_0x519ce0);});}}function onDisconnect(_0xb77625,_0x27a02e){joinOrLeave(_0xb77625,'leave',_0x27a02e);}function onConnect(_0x4b02c3){joinOrLeave(_0x4b02c3,_0xd870('0x56'));}exports[_0xd870('0x57')]=function(_0x509129){_0x509129['on'](_0xd870('0x58'),function(_0x746e00){_0x746e00[_0xd870('0x59')](0x0);_0x746e00[_0xd870('0x5a')]=_0x746e00['request'][_0xd870('0x58')][_0xd870('0x5b')]+':'+_0x746e00[_0xd870('0x5c')][_0xd870('0x58')][_0xd870('0x5d')];_0x746e00['connectedAt']=new Date();_0x746e00['log']=function(_0x31ad5f){console[_0xd870('0x55')](_0xd870('0x5e')+_0x746e00[_0xd870('0x5f')]['name']+'['+_0x746e00[_0xd870('0x5a')]+']',_0x31ad5f);};_0x746e00['on'](_0xd870('0x60'),function(){onDisconnect(_0x746e00,_0x509129);_0x746e00[_0xd870('0x55')]('DISCONNECTED');});onConnect(_0x746e00);_0x746e00[_0xd870('0x55')](_0xd870('0x61'));});};
\ No newline at end of file
index 1e2b735..64490ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a52=['Openchannel','OpenchannelInteraction','OpenchannelMessage','EventManager','then','Trigger,\x20%s','error','code','get','direction','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','query','Sequelize','QueryTypes','SELECT','contact','UserId','find','name','fullname','internal','format','SIP/%s','incomingmessage','catch','outgoingmessage','event','opened','sequelize','changed','closed','User','interface','agent','default','hasOwnProperty','model','hook','callback','toLowerCase','condition','util','../../mysqldb','jayson/promise','triggers','Chat','ChatInteraction','newinteraction','afterUpdate','closedinteraction','ChatMessage','afterCreate','newmessage','Sms','SmsInteraction','SmsMessage','WhatsappInteraction','Whatsapp','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction'];(function(_0x431ba3,_0xb7f6a6){var _0xee20fd=function(_0x57a947){while(--_0x57a947){_0x431ba3['push'](_0x431ba3['shift']());}};_0xee20fd(++_0xb7f6a6);}(_0x2a52,0xac));var _0x22a5=function(_0x59056c,_0x5678f4){_0x59056c=_0x59056c-0x0;var _0x5dbce9=_0x2a52[_0x59056c];return _0x5dbce9;};'use strict';var util=require(_0x22a5('0x0'));var db=require(_0x22a5('0x1'))['db'];var jayson=require(_0x22a5('0x2'));var logger=require('../logger')(_0x22a5('0x3'));var _=require('lodash');var client=jayson['client']['http']({'port':0x232a});var triggers=[{'channel':_0x22a5('0x4'),'model':_0x22a5('0x5'),'event':'afterCreate','condition':_0x22a5('0x6'),'callback':afterCreate},{'channel':_0x22a5('0x4'),'model':_0x22a5('0x5'),'event':_0x22a5('0x7'),'condition':_0x22a5('0x8'),'callback':afterUpdate},{'channel':_0x22a5('0x4'),'model':_0x22a5('0x9'),'event':_0x22a5('0xa'),'condition':_0x22a5('0xb'),'callback':afterCreateMessage},{'channel':_0x22a5('0xc'),'model':_0x22a5('0xd'),'event':'afterCreate','condition':_0x22a5('0x6'),'callback':afterCreate},{'channel':_0x22a5('0xc'),'model':_0x22a5('0xd'),'event':'afterUpdate','condition':_0x22a5('0x8'),'callback':afterUpdate},{'channel':_0x22a5('0xc'),'model':_0x22a5('0xe'),'event':_0x22a5('0xa'),'condition':_0x22a5('0xb'),'callback':afterCreateMessage},{'channel':'Whatsapp','model':_0x22a5('0xf'),'event':_0x22a5('0xa'),'condition':_0x22a5('0x6'),'callback':afterCreate},{'channel':_0x22a5('0x10'),'model':_0x22a5('0xf'),'event':_0x22a5('0x7'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x22a5('0x10'),'model':_0x22a5('0x11'),'event':'afterCreate','condition':_0x22a5('0xb'),'callback':afterCreateMessage},{'channel':_0x22a5('0x12'),'model':_0x22a5('0x13'),'event':_0x22a5('0xa'),'condition':_0x22a5('0x6'),'callback':afterCreate},{'channel':_0x22a5('0x12'),'model':_0x22a5('0x13'),'event':_0x22a5('0x7'),'condition':_0x22a5('0x8'),'callback':afterUpdate},{'channel':_0x22a5('0x12'),'model':_0x22a5('0x14'),'event':_0x22a5('0xa'),'condition':_0x22a5('0xb'),'callback':afterCreateMessage},{'channel':_0x22a5('0x15'),'model':_0x22a5('0x16'),'event':_0x22a5('0xa'),'condition':_0x22a5('0x6'),'callback':afterCreate},{'channel':_0x22a5('0x15'),'model':_0x22a5('0x16'),'event':_0x22a5('0x7'),'condition':_0x22a5('0x8'),'callback':afterUpdate},{'channel':_0x22a5('0x15'),'model':'MailMessage','event':'afterCreate','condition':'newmessage','callback':afterCreateMessage},{'channel':_0x22a5('0x17'),'model':_0x22a5('0x18'),'event':_0x22a5('0xa'),'condition':_0x22a5('0x6'),'callback':afterCreate},{'channel':_0x22a5('0x17'),'model':_0x22a5('0x18'),'event':_0x22a5('0x7'),'condition':_0x22a5('0x8'),'callback':afterUpdate},{'channel':_0x22a5('0x17'),'model':_0x22a5('0x19'),'event':_0x22a5('0xa'),'condition':_0x22a5('0xb'),'callback':afterCreateMessage}];function request(_0x225798){return client['request'](_0x22a5('0x1a'),_0x225798)[_0x22a5('0x1b')](function(_0x5eef7e){logger['info'](_0x22a5('0x1c'),'EventManager',_0x5eef7e);if(_0x5eef7e['error']){if(_0x5eef7e[_0x22a5('0x1d')][_0x22a5('0x1e')]===0x1f4){logger['error'](_0x22a5('0x1c'),_0x22a5('0x1a'),_0x5eef7e[_0x22a5('0x1d')]);}}})['catch'](function(_0x14ca52){logger[_0x22a5('0x1d')](_0x22a5('0x1c'),_0x22a5('0x1a'),_0x14ca52);});}function afterCreateMessage(_0xf3f62d,_0x73ee73){return function(_0x1982ab,_0x11f6ac){_0x1982ab=_0x1982ab[_0x22a5('0x1f')]({'plain':!![]});_0x1982ab['channel']=_0xf3f62d;_0x1982ab['event']=_0x1982ab[_0x22a5('0x20')];var _0x2c75fd=_0x22a5('0x21')+_0x1982ab[_0x22a5('0x22')];return db['sequelize'][_0x22a5('0x23')](_0x2c75fd,{'type':db[_0x22a5('0x24')][_0x22a5('0x25')][_0x22a5('0x26')],'raw':!![]})[_0x22a5('0x1b')](function(_0x45a629){return _0x45a629;})[_0x22a5('0x1b')](function(_0x5b47ba){if(_0x5b47ba){_0x1982ab[_0x22a5('0x27')]=_0x5b47ba[0x0];}if(_0x1982ab[_0x22a5('0x28')]){return db['User'][_0x22a5('0x29')]({'where':{'id':_0x1982ab[_0x22a5('0x28')]},'attributes':['id',_0x22a5('0x2a'),_0x22a5('0x2b'),'email',_0x22a5('0x2c')],'raw':!![]})[_0x22a5('0x1b')](function(_0x5cb1df){_0x1982ab['interface']=util[_0x22a5('0x2d')](_0x22a5('0x2e'),_0x5cb1df['name']);_0x1982ab['channel']=_0xf3f62d;_0x1982ab['agent']=_0x5cb1df;return request({'event':_0x22a5('0x2f'),'message':_0x1982ab});})[_0x22a5('0x30')](function(_0x4fcc82){console[_0x22a5('0x1d')](_0x4fcc82);});}else{return request({'event':_0x22a5('0x31'),'message':_0x1982ab});}});};}function afterCreate(_0x38268b,_0x3d8f90){return function(_0x5d0def,_0x2a8936){_0x5d0def=_0x5d0def[_0x22a5('0x1f')]({'plain':!![]});_0x5d0def['channel']=_0x38268b;_0x5d0def[_0x22a5('0x32')]=_0x22a5('0x33');var _0x29b727=_0x22a5('0x21')+_0x5d0def[_0x22a5('0x22')];return db[_0x22a5('0x34')]['query'](_0x29b727,{'type':db[_0x22a5('0x24')][_0x22a5('0x25')][_0x22a5('0x26')],'raw':!![]})[_0x22a5('0x1b')](function(_0x2178e7){return _0x2178e7;})[_0x22a5('0x1b')](function(_0x3486bc){if(_0x3486bc){_0x5d0def[_0x22a5('0x27')]=_0x3486bc[0x0];}return request({'event':_0x3d8f90,'message':_0x5d0def});});};}function afterUpdate(_0x2766bd,_0x591e5a){return function(_0x275fbb,_0x40f81b){if(_0x275fbb[_0x22a5('0x35')]('closed')&&_0x275fbb[_0x22a5('0x36')]){_0x275fbb=_0x275fbb[_0x22a5('0x1f')]({'plain':!![]});_0x275fbb['channel']=_0x2766bd;_0x275fbb[_0x22a5('0x32')]=_0x22a5('0x36');var _0x52d759='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x275fbb[_0x22a5('0x22')];return db[_0x22a5('0x34')][_0x22a5('0x23')](_0x52d759,{'type':db[_0x22a5('0x24')]['QueryTypes']['SELECT'],'raw':!![]})[_0x22a5('0x1b')](function(_0x37e382){return _0x37e382;})[_0x22a5('0x1b')](function(_0x318c42){if(_0x318c42){_0x275fbb['contact']=_0x318c42[0x0];}if(_0x275fbb[_0x22a5('0x28')]){return db[_0x22a5('0x37')][_0x22a5('0x29')]({'where':{'id':_0x275fbb[_0x22a5('0x28')]},'attributes':['id','name',_0x22a5('0x2b'),'email','internal'],'raw':!![]})[_0x22a5('0x1b')](function(_0x7f0f31){_0x275fbb[_0x22a5('0x38')]=util[_0x22a5('0x2d')]('SIP/%s',_0x7f0f31[_0x22a5('0x2a')]);_0x275fbb[_0x22a5('0x39')]=_0x7f0f31;return request({'event':_0x591e5a,'message':_0x275fbb});})['catch'](function(_0x26339e){console[_0x22a5('0x1d')](_0x26339e);});}else{return request({'event':_0x591e5a,'message':_0x275fbb});}});}};}exports[_0x22a5('0x3a')]=function(){for(var _0x1995cc=0x0;_0x1995cc<triggers['length'];_0x1995cc+=0x1){if(db[_0x22a5('0x3b')](triggers[_0x1995cc]['model'])){db[triggers[_0x1995cc][_0x22a5('0x3c')]][_0x22a5('0x3d')](triggers[_0x1995cc][_0x22a5('0x32')],triggers[_0x1995cc][_0x22a5('0x3e')](triggers[_0x1995cc]['channel'][_0x22a5('0x3f')](),triggers[_0x1995cc][_0x22a5('0x40')]));}}};
\ No newline at end of file
+var _0x8f50=['incomingmessage','event','opened','closed','substatus','User','find','internal','format','SIP/%s','default','length','hasOwnProperty','model','hook','toLowerCase','condition','util','../../mysqldb','jayson/promise','triggers','lodash','Chat','afterCreate','newinteraction','ChatInteraction','closedinteraction','ChatMessage','newmessage','Sms','SmsInteraction','SmsMessage','Whatsapp','WhatsappInteraction','afterUpdate','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','EventManager','Trigger,\x20%s','code','error','catch','get','channel','motionChannel','direction','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','query','Sequelize','QueryTypes','SELECT','then','contact','UserId','email','interface','name','agent'];(function(_0x507671,_0x4afc30){var _0x4d758d=function(_0x10ec66){while(--_0x10ec66){_0x507671['push'](_0x507671['shift']());}};_0x4d758d(++_0x4afc30);}(_0x8f50,0x11d));var _0x08f5=function(_0x17e5d5,_0x212201){_0x17e5d5=_0x17e5d5-0x0;var _0x52b153=_0x8f50[_0x17e5d5];return _0x52b153;};'use strict';var util=require(_0x08f5('0x0'));var db=require(_0x08f5('0x1'))['db'];var jayson=require(_0x08f5('0x2'));var logger=require('../logger')(_0x08f5('0x3'));var _=require(_0x08f5('0x4'));var client=jayson['client']['http']({'port':0x232a});var triggers=[{'channel':_0x08f5('0x5'),'model':'ChatInteraction','event':_0x08f5('0x6'),'condition':_0x08f5('0x7'),'callback':afterCreate},{'channel':'Chat','model':_0x08f5('0x8'),'event':'afterUpdate','condition':_0x08f5('0x9'),'callback':afterUpdate},{'channel':_0x08f5('0x5'),'model':_0x08f5('0xa'),'event':_0x08f5('0x6'),'condition':_0x08f5('0xb'),'callback':afterCreateMessage},{'channel':'Sms','model':'SmsInteraction','event':_0x08f5('0x6'),'condition':_0x08f5('0x7'),'callback':afterCreate},{'channel':_0x08f5('0xc'),'model':_0x08f5('0xd'),'event':'afterUpdate','condition':_0x08f5('0x9'),'callback':afterUpdate},{'channel':_0x08f5('0xc'),'model':_0x08f5('0xe'),'event':'afterCreate','condition':_0x08f5('0xb'),'callback':afterCreateMessage},{'channel':_0x08f5('0xf'),'model':'WhatsappInteraction','event':_0x08f5('0x6'),'condition':_0x08f5('0x7'),'callback':afterCreate},{'channel':_0x08f5('0xf'),'model':_0x08f5('0x10'),'event':_0x08f5('0x11'),'condition':_0x08f5('0x9'),'callback':afterUpdate},{'channel':_0x08f5('0xf'),'model':_0x08f5('0x12'),'event':_0x08f5('0x6'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x08f5('0x13'),'model':'FaxInteraction','event':_0x08f5('0x6'),'condition':_0x08f5('0x7'),'callback':afterCreate},{'channel':_0x08f5('0x13'),'model':_0x08f5('0x14'),'event':_0x08f5('0x11'),'condition':_0x08f5('0x9'),'callback':afterUpdate},{'channel':'Fax','model':_0x08f5('0x15'),'event':_0x08f5('0x6'),'condition':_0x08f5('0xb'),'callback':afterCreateMessage},{'channel':_0x08f5('0x16'),'model':_0x08f5('0x17'),'event':_0x08f5('0x6'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x08f5('0x16'),'model':_0x08f5('0x17'),'event':_0x08f5('0x11'),'condition':_0x08f5('0x9'),'callback':afterUpdate},{'channel':_0x08f5('0x16'),'model':_0x08f5('0x18'),'event':_0x08f5('0x6'),'condition':_0x08f5('0xb'),'callback':afterCreateMessage},{'channel':_0x08f5('0x19'),'model':_0x08f5('0x1a'),'event':_0x08f5('0x6'),'condition':_0x08f5('0x7'),'callback':afterCreate},{'channel':_0x08f5('0x19'),'model':'OpenchannelInteraction','event':'afterUpdate','condition':_0x08f5('0x9'),'callback':afterUpdate},{'channel':_0x08f5('0x19'),'model':'OpenchannelMessage','event':_0x08f5('0x6'),'condition':_0x08f5('0xb'),'callback':afterCreateMessage}];function request(_0x393749){return client['request'](_0x08f5('0x1b'),_0x393749)['then'](function(_0x4508d8){logger['info'](_0x08f5('0x1c'),_0x08f5('0x1b'),_0x4508d8);if(_0x4508d8['error']){if(_0x4508d8['error'][_0x08f5('0x1d')]===0x1f4){logger[_0x08f5('0x1e')]('Trigger,\x20%s','EventManager',_0x4508d8[_0x08f5('0x1e')]);}}})[_0x08f5('0x1f')](function(_0x39abd6){logger[_0x08f5('0x1e')](_0x08f5('0x1c'),_0x08f5('0x1b'),_0x39abd6);});}function afterCreateMessage(_0x142bf2,_0x3540a1){return function(_0x3bc216,_0x4ed08e){_0x3bc216=_0x3bc216[_0x08f5('0x20')]({'plain':!![]});_0x3bc216[_0x08f5('0x21')]=_0x142bf2;_0x3bc216[_0x08f5('0x22')]=_0x142bf2;_0x3bc216['event']=_0x3bc216[_0x08f5('0x23')];var _0x188600=_0x08f5('0x24')+_0x3bc216[_0x08f5('0x25')];return db[_0x08f5('0x26')][_0x08f5('0x27')](_0x188600,{'type':db[_0x08f5('0x28')][_0x08f5('0x29')][_0x08f5('0x2a')],'raw':!![]})['then'](function(_0x3d58ca){return _0x3d58ca;})[_0x08f5('0x2b')](function(_0x40b618){if(_0x40b618){_0x3bc216[_0x08f5('0x2c')]=_0x40b618[0x0];}if(_0x3bc216['UserId']){return db['User']['find']({'where':{'id':_0x3bc216[_0x08f5('0x2d')]},'attributes':['id','name','fullname',_0x08f5('0x2e'),'internal'],'raw':!![]})[_0x08f5('0x2b')](function(_0x5c4663){_0x3bc216[_0x08f5('0x2f')]=util['format']('SIP/%s',_0x5c4663[_0x08f5('0x30')]);_0x3bc216[_0x08f5('0x21')]=_0x142bf2;_0x3bc216[_0x08f5('0x31')]=_0x5c4663;return request({'event':_0x08f5('0x32'),'message':_0x3bc216});})[_0x08f5('0x1f')](function(_0x43a0d4){console['error'](_0x43a0d4);});}else{return request({'event':'outgoingmessage','message':_0x3bc216});}});};}function afterCreate(_0x4804bb,_0x1936c3){return function(_0x3bacc8,_0x508dbd){_0x3bacc8=_0x3bacc8[_0x08f5('0x20')]({'plain':!![]});_0x3bacc8['channel']=_0x4804bb;_0x3bacc8[_0x08f5('0x22')]=_0x4804bb;_0x3bacc8[_0x08f5('0x33')]=_0x08f5('0x34');var _0x5d8367=_0x08f5('0x24')+_0x3bacc8['ContactId'];return db[_0x08f5('0x26')][_0x08f5('0x27')](_0x5d8367,{'type':db[_0x08f5('0x28')][_0x08f5('0x29')][_0x08f5('0x2a')],'raw':!![]})[_0x08f5('0x2b')](function(_0x17d44f){return _0x17d44f;})['then'](function(_0x5d481a){if(_0x5d481a){_0x3bacc8[_0x08f5('0x2c')]=_0x5d481a[0x0];}return request({'event':_0x1936c3,'message':_0x3bacc8});});};}function afterUpdate(_0x57940c){return function(_0x5143bb){var _0x4dc9d1=_0x5143bb['changed']('closed')&&_0x5143bb[_0x08f5('0x35')];var _0x32eb58=_0x5143bb['changed'](_0x08f5('0x36'));if(_0x4dc9d1||_0x32eb58){var _0x236db0=_0x4dc9d1?_0x08f5('0x9'):_0x08f5('0x36');var _0x5b5229=_0x5143bb[_0x08f5('0x20')]({'plain':!![]});_0x5b5229['channel']=_0x57940c;_0x5b5229[_0x08f5('0x22')]=_0x57940c;_0x5b5229['event']=_0x4dc9d1?_0x08f5('0x35'):_0x08f5('0x36');var _0x4b3b0d=_0x08f5('0x24')+_0x5b5229['ContactId'];return db[_0x08f5('0x26')][_0x08f5('0x27')](_0x4b3b0d,{'type':db[_0x08f5('0x28')][_0x08f5('0x29')]['SELECT'],'raw':!![]})[_0x08f5('0x2b')](function(_0x3f1800){if(_0x3f1800){_0x5b5229['contact']=_0x3f1800[0x0];}if(_0x5b5229[_0x08f5('0x2d')]){return db[_0x08f5('0x37')][_0x08f5('0x38')]({'where':{'id':_0x5b5229[_0x08f5('0x2d')]},'attributes':['id','name','fullname',_0x08f5('0x2e'),_0x08f5('0x39')],'raw':!![]})[_0x08f5('0x2b')](function(_0x3d2f7c){_0x5b5229[_0x08f5('0x2f')]=util[_0x08f5('0x3a')](_0x08f5('0x3b'),_0x3d2f7c[_0x08f5('0x30')]);_0x5b5229[_0x08f5('0x31')]=_0x3d2f7c;return request({'event':_0x236db0,'message':_0x5b5229});})[_0x08f5('0x1f')](function(_0x5b015f){console[_0x08f5('0x1e')](_0x5b015f);});}else{return request({'event':_0x236db0,'message':_0x5b5229});}});}};}exports[_0x08f5('0x3c')]=function(){for(var _0x4a8878=0x0;_0x4a8878<triggers[_0x08f5('0x3d')];_0x4a8878+=0x1){if(db[_0x08f5('0x3e')](triggers[_0x4a8878][_0x08f5('0x3f')])){db[triggers[_0x4a8878][_0x08f5('0x3f')]][_0x08f5('0x40')](triggers[_0x4a8878]['event'],triggers[_0x4a8878]['callback'](triggers[_0x4a8878][_0x08f5('0x21')][_0x08f5('0x41')](),triggers[_0x4a8878][_0x08f5('0x42')]));}}};
\ No newline at end of file
index 575cf24..301c806 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06f4=['./license/util','fax','sms','whatsapp','openchannel','getChannels','isValidChannel','includes','isUndefined','blockedAt','updateAttributes','getLicense','role','User','agent','then','agents','Maximum\x20login\x20has\x20been\x20reached','bluebird','../mysqldb'];(function(_0x463b68,_0x48408b){var _0x27da8a=function(_0x1e7993){while(--_0x1e7993){_0x463b68['push'](_0x463b68['shift']());}};_0x27da8a(++_0x48408b);}(_0x06f4,0x152));var _0x406f=function(_0x5963e5,_0x2cd3a4){_0x5963e5=_0x5963e5-0x0;var _0x2d4c85=_0x06f4[_0x5963e5];return _0x2d4c85;};'use strict';var _=require('lodash');var BPromise=require(_0x406f('0x0'));var db=require(_0x406f('0x1'))['db'];var util=require(_0x406f('0x2'));var channels=['voice','mail','chat',_0x406f('0x3'),_0x406f('0x4'),_0x406f('0x5'),_0x406f('0x6')];exports[_0x406f('0x7')]=function(){return channels;};exports[_0x406f('0x8')]=function(_0x3e34e2){_0x3e34e2=_0x3e34e2['toLowerCase']();return _[_0x406f('0x9')](channels,_0x3e34e2);};exports['clearBlockUser']=function(_0x38cb67,_0x984c67,_0x340ca5,_0x217e89){var _0x26643f={'loginAttempts':_0x984c67,'blocked':_0x340ca5};if(!_[_0x406f('0xa')](_0x217e89)){_0x26643f[_0x406f('0xb')]=_0x217e89;}return _0x38cb67[_0x406f('0xc')](_0x26643f);};exports[_0x406f('0xd')]=function(_0x3c6443){return new BPromise(function(_0x59f239,_0x17aad6){var _0x1f3acd=0x0;if(_0x3c6443[_0x406f('0xe')]!=='agent'){_0x59f239(_0x3c6443);}db[_0x406f('0xf')]['count']({'where':{'role':_0x406f('0x10'),'online':!![],'id':{'$ne':_0x3c6443['id']}}})[_0x406f('0x11')](function(_0x296379){_0x1f3acd=_0x296379;return util[_0x406f('0xd')]();})[_0x406f('0x11')](function(_0x28cde6){if(_0x28cde6&&_0x28cde6[_0x406f('0x12')]&&_0x1f3acd>=_0x28cde6[_0x406f('0x12')]){throw Error(_0x406f('0x13'));}_0x59f239(_0x3c6443);})['catch'](function(_0x2648fb){_0x17aad6(_0x2648fb);});});};
\ No newline at end of file
+var _0x00fb=['chat','sms','whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','isUndefined','blockedAt','getLicense','role','User','agent','then','catch','lodash','bluebird','../mysqldb','./license/util','voice'];(function(_0x5ca6b6,_0x455c18){var _0x122c12=function(_0x46a60f){while(--_0x46a60f){_0x5ca6b6['push'](_0x5ca6b6['shift']());}};_0x122c12(++_0x455c18);}(_0x00fb,0x19f));var _0xb00f=function(_0x1c3b6f,_0x5b04a7){_0x1c3b6f=_0x1c3b6f-0x0;var _0x31ebec=_0x00fb[_0x1c3b6f];return _0x31ebec;};'use strict';var _=require(_0xb00f('0x0'));var BPromise=require(_0xb00f('0x1'));var db=require(_0xb00f('0x2'))['db'];var util=require(_0xb00f('0x3'));var channels=[_0xb00f('0x4'),'mail',_0xb00f('0x5'),'fax',_0xb00f('0x6'),_0xb00f('0x7'),_0xb00f('0x8')];exports[_0xb00f('0x9')]=function(){return channels;};exports[_0xb00f('0xa')]=function(_0x551a26){_0x551a26=_0x551a26[_0xb00f('0xb')]();return _['includes'](channels,_0x551a26);};exports['clearBlockUser']=function(_0x2dd2a2,_0x1466d5,_0x3f69db,_0x5a89e6){var _0x335499={'loginAttempts':_0x1466d5,'blocked':_0x3f69db};if(!_[_0xb00f('0xc')](_0x5a89e6)){_0x335499[_0xb00f('0xd')]=_0x5a89e6;}return _0x2dd2a2['updateAttributes'](_0x335499);};exports[_0xb00f('0xe')]=function(_0x59735f){return new BPromise(function(_0x1036d0,_0x152d1a){var _0x246a31=0x0;if(_0x59735f[_0xb00f('0xf')]!=='agent'){_0x1036d0(_0x59735f);}db[_0xb00f('0x10')]['count']({'where':{'role':_0xb00f('0x11'),'online':!![],'id':{'$ne':_0x59735f['id']}}})[_0xb00f('0x12')](function(_0x55cdde){_0x246a31=_0x55cdde;return util[_0xb00f('0xe')]();})[_0xb00f('0x12')](function(_0x487e53){if(_0x487e53&&_0x487e53['agents']&&_0x246a31>=_0x487e53['agents']){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x1036d0(_0x59735f);})[_0xb00f('0x13')](function(_0x1a9560){_0x152d1a(_0x1a9560);});});};
\ No newline at end of file
index b976fa5..58d04ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc462=['exports','404','status','json','send'];(function(_0x59db19,_0x30c1c6){var _0x5f0f09=function(_0x36e225){while(--_0x36e225){_0x59db19['push'](_0x59db19['shift']());}};_0x5f0f09(++_0x30c1c6);}(_0xc462,0x1d6));var _0x2c46=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0xc462[_0x209941];return _0x1e8729;};'use strict';module[_0x2c46('0x0')][0x194]=function pageNotFound(_0x4ca7fe,_0x216110){var _0x4d1f26=_0x2c46('0x1');var _0x21a013=0x194;var _0x1fe561={'status':_0x21a013};_0x216110[_0x2c46('0x2')](_0x1fe561['status']);_0x216110['render'](_0x4d1f26,{},function(_0x117238,_0x4fee3d){if(_0x117238){return _0x216110[_0x2c46('0x2')](_0x1fe561[_0x2c46('0x2')])[_0x2c46('0x3')](_0x1fe561);}_0x216110[_0x2c46('0x4')](_0x4fee3d);});};
\ No newline at end of file
+var _0x7511=['404','status','json','send','exports'];(function(_0x4a7189,_0x1ffa13){var _0x3ed851=function(_0x681ff3){while(--_0x681ff3){_0x4a7189['push'](_0x4a7189['shift']());}};_0x3ed851(++_0x1ffa13);}(_0x7511,0x1d0));var _0x1751=function(_0x58952f,_0xeed25f){_0x58952f=_0x58952f-0x0;var _0x3217ca=_0x7511[_0x58952f];return _0x3217ca;};'use strict';module[_0x1751('0x0')][0x194]=function pageNotFound(_0x31584f,_0x36d3e4){var _0xca298=_0x1751('0x1');var _0x2d53ef=0x194;var _0x1073ce={'status':_0x2d53ef};_0x36d3e4[_0x1751('0x2')](_0x1073ce[_0x1751('0x2')]);_0x36d3e4['render'](_0xca298,{},function(_0x17ed50,_0x374594){if(_0x17ed50){return _0x36d3e4[_0x1751('0x2')](_0x1073ce[_0x1751('0x2')])[_0x1751('0x3')](_0x1073ce);}_0x36d3e4[_0x1751('0x4')](_0x374594);});};
\ No newline at end of file
diff --git a/server/migrations/2.5.35.js b/server/migrations/2.5.35.js
new file mode 100644 (file)
index 0000000..f7d42ec
--- /dev/null
@@ -0,0 +1,165 @@
+'use strict';\r
+\r
+var BPromise = require('bluebird');\r
+var util = require('util');\r
+\r
+var logger = require('../config/logger')('migration');\r
+\r
+var Sequence = function() {};\r
+\r
+Sequence.prototype.enqueue = function(fn) {\r
+  this.tail = this.tail ? this.tail.finally(fn) : fn();\r
+};\r
+\r
+var Migration = function(queryInterface) {\r
+  this.queryInterface = queryInterface;\r
+  this.sequence = new Sequence();\r
+};\r
+\r
+Migration.prototype.changeColumn = function(table, column, type) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .changeColumn(table, column, type)\r
+      .then(function() {\r
+        logger.info('Changed column %s in table %s', column, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.addColumn = function(table, column, type) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .addColumn(table, column, type)\r
+      .then(function() {\r
+        logger.info('Added column %s to %s', column, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.dropTable = function(table) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .dropTable(table, {\r
+        force: true\r
+      })\r
+      .then(function() {\r
+        logger.info('table dropped %s', table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.addIndex = function(table, column, indexName) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .addIndex(table, column, {\r
+        indexName: indexName\r
+      })\r
+      .then(function() {\r
+        logger.info('addIndex %s %s %s', table, column.join(','), indexName);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.removeIndex = function(table, indexName) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .removeIndex(table, indexName)\r
+      .then(function() {\r
+        logger.info('removeIndex %s %s', table, indexName);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.query = function(sql) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface.sequelize\r
+      .query(sql)\r
+      .then(function() {\r
+        logger.info('query %s', sql);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.removeColumn = function(table, column) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .removeColumn(table, column)\r
+      .then(function() {\r
+        logger.info('Removed column %s from %s', column, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(\r
+          util.inspect(err, {\r
+            showHidden: false,\r
+            depth: null\r
+          })\r
+        );\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .renameColumn(table, oldColumn, newColumn)\r
+      .then(function() {\r
+        logger.info('Renamed column from %s to %s on %s', oldColumn, newColumn, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(\r
+          util.inspect(err, {\r
+            showHidden: false,\r
+            depth: null\r
+          })\r
+        );\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.final = function(resolve) {\r
+  this.sequence.enqueue(function() {\r
+    return resolve();\r
+  });\r
+};\r
+\r
+module.exports = {\r
+  up: function(queryInterface, Sequelize) {\r
+    return new BPromise(function(resolve) {\r
+      var migration = new Migration(queryInterface);\r
+\r
+      // START FINAL\r
+      migration.final(resolve);\r
+      // END FINAL\r
+    });\r
+  },\r
+\r
+  down: function(queryInterface, Sequelize) {\r
+    // var migration = new Migration(queryInterface);\r
+  }\r
+};
\ No newline at end of file
index 7b264fd..ae06f45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b29=['../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','Campaign','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','MailTransferReport','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','CloudProvider','../api/cloudProvider/cloudProvider.model','../api/realtime/realtime.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','hasOne','cascade','hasMany','Recordings','UserId','UserVoiceQueueRt','VoiceQueuesRt','Extensions','CmHopperFinal','HopperFinals','HopperHistory','ReportAgentPreview','OpenchannelInteractions','ChatInteraction','ChatInteractions','SmsInteractions','MailInteractions','WhatsappInteractions','UserNotifications','belongsTo','userProfileId','belongsToMany','chat_group_has_users','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','user_has_teams','user_has_chat_interactions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','MailQueues','ChatQueues','FaxQueues','SmsQueue','SmsQueues','OpenchannelQueues','WhatsappQueue','VoicePrefixes','user_has_voice_prefixes','ChatWebsites','user_has_chat_websites','FaxAccounts','MailAccount','user_has_mail_accounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','user_has_whatsapp_accounts','SquareProject','SquareProjects','ChanSpyId','Applications','Sounds','moh_has_sounds','VoiceQueueId','Hoppers','HopperHistories','HopperBlacks','TrunkId','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailboxuser','mailbox','QueueCalls','VoiceAgentReport','uniqueid','Contact','Dispositions','MailAccountId','Answers','Interactions','List','ListId','MailInteractionId','Owner','mail_interaction_has_tags','Tags','ThroughTags','Users','user_has_mail_interactions','Attachments','Interaction','ChatWebsiteId','restrict','MailQueueReport','Dashboard','DashboardItem','Items','FaxAccountId','Exntensions','Trunk','TagId','FaxInteractionId','Account','fax_interaction_has_tags','FaxQueueReport','ContactId','SmsMessage','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','team_has_openchannel_queues','ProactiveActions','OpenchannelQueueReport','Queue','ChatInteractionId','chat_interaction_has_tags','AttachmentId','ChatOfflineMessageId','team_has_chat_queues','ChatGroupId','Members','Website','JscriptySessions','FaxInteractions','Company','cm_contact_has_tags','Agent','CampaignId','OwnerId','All','OneAll','AutomationAllId','Automation','OneAny','AutomationAnyId','Action','Actions','AutomationId','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','Mohs','whatsapp_interaction_has_tags','AllConditions','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','AnalyticFieldReport','Fields','AnalyticMetric','MetricId','Configurations','AccountId','SubjectId','Descriptions','FieldId','Subject','Description','DescriptionId','Field','VariableId','SugarcrmAccount','Subjects','DeskAccount','int_desk_configuration_has_tags','ZohoField','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','VtigerAccount','ServicenowAccount','Dynamics365Configuration','Dynamics365Field','FromId','ToId','SessionId','SmsQueueReport','ProjectId','user_has_square_projects','team_has_mail_queues','team_has_fax_queues','WhatsappQueues','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','FromMailAccountId','FromUserId','FromAgent','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','ToUserId','ToChatQueueId','ToAccount','FromFaxAccountId','FromAccount','ToFaxAccountId','OpenchannelTransferReport','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CmCustomField','CustomFields','Queues','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','WhatsappQueueReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','team_has_whatsapp_queues','exports','path','../config/environment','sequelize','lodash','jstz','defaultsDeep','xC@LL1234','127.0.0.1','mysql','utf8mb4','utf8','utf8_general_ci','sequelizeHistory','motion2','name','database','username','password','options','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailQueue','../api/mailQueue/mailQueue.model','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','FaxQueue','../api/faxQueue/faxQueue.model','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','../api/smsMessage/smsMessage.model','OpenchannelAccount','OpenchannelApplication','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','../api/reportAgentPreview/reportAgentPreview.model','../api/action/action.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','Template','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','../api/analyticFieldReport/analyticFieldReport.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','../api/intZohoField/intZohoField.model','ZendeskAccount','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','../api/intDynamics365Configuration/intDynamics365Configuration.model','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareRecording','SquareMessage'];(function(_0x2ee99a,_0x4615cd){var _0x252e86=function(_0x10e212){while(--_0x10e212){_0x2ee99a['push'](_0x2ee99a['shift']());}};_0x252e86(++_0x4615cd);}(_0x1b29,0x116));var _0x91b2=function(_0x2f42af,_0x5eccb5){_0x2f42af=_0x2f42af-0x0;var _0x13b553=_0x1b29[_0x2f42af];return _0x13b553;};'use strict';var path=require(_0x91b2('0x0'));var config=require(_0x91b2('0x1'));var Sequelize=require(_0x91b2('0x2'));var _=require(_0x91b2('0x3'));var jstz=require(_0x91b2('0x4'));var timezone=jstz['determine']();config['sequelize']=_[_0x91b2('0x5')](config['sequelize'],{'database':'motion2','username':'xcall','password':_0x91b2('0x6'),'options':{'host':_0x91b2('0x7'),'port':0xcea,'dialect':_0x91b2('0x8'),'dialectOptions':{'charset':_0x91b2('0x9')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x91b2('0xa'),'collate':_0x91b2('0xb')}}});config[_0x91b2('0xc')]=_[_0x91b2('0x5')](config[_0x91b2('0xc')],{'database':_0x91b2('0xd'),'username':'xcall','password':_0x91b2('0x6'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x91b2('0x8'),'dialectOptions':{'charset':_0x91b2('0x9')},'logging':![],'timezone':timezone[_0x91b2('0xe')](),'define':{'charset':_0x91b2('0xa'),'collate':_0x91b2('0xb')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x91b2('0x2')][_0x91b2('0xf')],config['sequelize'][_0x91b2('0x10')],config[_0x91b2('0x2')][_0x91b2('0x11')],config[_0x91b2('0x2')][_0x91b2('0x12')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x91b2('0xc')][_0x91b2('0xf')],config[_0x91b2('0xc')][_0x91b2('0x10')],config[_0x91b2('0xc')][_0x91b2('0x11')],config[_0x91b2('0xc')][_0x91b2('0x12')])};db[_0x91b2('0x13')]=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/user/user.model');db[_0x91b2('0x15')]=db[_0x91b2('0x2')]['import'](_0x91b2('0x16'));db[_0x91b2('0x17')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x18'));db[_0x91b2('0x19')]=db['sequelize']['import'](_0x91b2('0x1a'));db[_0x91b2('0x1b')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x1c'));db[_0x91b2('0x1d')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0x1e'));db[_0x91b2('0x1f')]=db['sequelize']['import'](_0x91b2('0x20'));db[_0x91b2('0x21')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x22'));db[_0x91b2('0x23')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x24'));db[_0x91b2('0x25')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x26'));db[_0x91b2('0x27')]=db['sequelize']['import']('../api/voiceCallReport/voiceCallReport.model');db[_0x91b2('0x28')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x29'));db['VoiceAgentReport']=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x2a'));db[_0x91b2('0x2b')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x2c'));db[_0x91b2('0x2d')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x2e'));db['Trunk']=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x2f'));db[_0x91b2('0x30')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x31'));db['UserVoiceQueueRt']=db[_0x91b2('0x2')]['import'](_0x91b2('0x32'));db[_0x91b2('0x33')]=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/userVoiceQueue/userVoiceQueue.model');db[_0x91b2('0x34')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x35'));db[_0x91b2('0x36')]=db[_0x91b2('0x2')]['import'](_0x91b2('0x37'));db[_0x91b2('0x38')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x39'));db[_0x91b2('0x3a')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x3b'));db[_0x91b2('0x3c')]=db[_0x91b2('0x2')]['import'](_0x91b2('0x3d'));db[_0x91b2('0x3e')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x3f'));db[_0x91b2('0x40')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0x41'));db[_0x91b2('0x42')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x43'));db['MailAccount']=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/mailAccount/mailAccount.model');db[_0x91b2('0x44')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x45'));db['MailSubstatus']=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x46'));db[_0x91b2('0x47')]=db['sequelize']['import'](_0x91b2('0x48'));db[_0x91b2('0x49')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0x4a'));db[_0x91b2('0x4b')]=db[_0x91b2('0x2')]['import']('../api/mailApplication/mailApplication.model');db['MailQueueReport']=db[_0x91b2('0x2')]['import'](_0x91b2('0x4c'));db['Dashboard']=db[_0x91b2('0x2')]['import'](_0x91b2('0x4d'));db['DashboardItem']=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/dashboardItem/dashboardItem.model');db[_0x91b2('0x4e')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0x4f'));db[_0x91b2('0x50')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0x51'));db[_0x91b2('0x52')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x53'));db[_0x91b2('0x54')]=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/faxMessage/faxMessage.model');db[_0x91b2('0x55')]=db[_0x91b2('0x2')]['import'](_0x91b2('0x56'));db['FaxQueueReport']=db['sequelize'][_0x91b2('0x14')](_0x91b2('0x57'));db[_0x91b2('0x58')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x59'));db[_0x91b2('0x5a')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x5b'));db[_0x91b2('0x5c')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x5d'));db['SmsMessage']=db[_0x91b2('0x2')]['import'](_0x91b2('0x5e'));db['SmsQueue']=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/smsQueue/smsQueue.model');db[_0x91b2('0x5f')]=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/openchannelAccount/openchannelAccount.model');db[_0x91b2('0x60')]=db[_0x91b2('0x2')]['import']('../api/openchannelApplication/openchannelApplication.model');db[_0x91b2('0x61')]=db[_0x91b2('0x2')]['import'](_0x91b2('0x62'));db[_0x91b2('0x63')]=db[_0x91b2('0x2')]['import'](_0x91b2('0x64'));db[_0x91b2('0x65')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x66'));db[_0x91b2('0x67')]=db['sequelize']['import'](_0x91b2('0x68'));db['OpenchannelQueueReport']=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x69'));db[_0x91b2('0x6a')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x6b'));db['ChatInteraction']=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x6c'));db[_0x91b2('0x6d')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0x6e'));db[_0x91b2('0x6f')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0x70'));db[_0x91b2('0x71')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x72'));db[_0x91b2('0x73')]=db[_0x91b2('0x2')]['import']('../api/chatGroup/chatGroup.model');db[_0x91b2('0x74')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x75'));db[_0x91b2('0x76')]=db[_0x91b2('0x2')]['import'](_0x91b2('0x77'));db[_0x91b2('0x78')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x79'));db[_0x91b2('0x7a')]=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/cmHopper/cmHopper.model');db[_0x91b2('0x7b')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x7c'));db['CmHopperFinal']=db[_0x91b2('0x2')]['import']('../api/cmHopperFinal/cmHopperFinal.model');db[_0x91b2('0x7d')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x7e'));db['ReportAgentPreview']=db['sequelize']['import'](_0x91b2('0x7f'));db['CmCustomField']=db['sequelize']['import']('../api/cmCustomField/cmCustomField.model');db['Action']=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x80'));db['Automation']=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/automation/automation.model');db[_0x91b2('0x81')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0x82'));db[_0x91b2('0x83')]=db[_0x91b2('0x2')]['import'](_0x91b2('0x84'));db[_0x91b2('0x85')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x86'));db[_0x91b2('0x87')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x88'));db[_0x91b2('0x89')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x8a'));db[_0x91b2('0x8b')]=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/cdr/cdr.model');db['VoiceQueuesLog']=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/voiceQueuesLog/voiceQueuesLog.model');db[_0x91b2('0x8c')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x8d'));db[_0x91b2('0x8e')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x8f'));db[_0x91b2('0x90')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x91'));db[_0x91b2('0x92')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0x93'));db[_0x91b2('0x94')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x95'));db[_0x91b2('0x96')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0x97'));db[_0x91b2('0x98')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x99'));db[_0x91b2('0x9a')]=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/integrationReport/integrationReport.model');db[_0x91b2('0x9b')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x9c'));db[_0x91b2('0x9d')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x9e'));db[_0x91b2('0x9f')]=db[_0x91b2('0x2')]['import'](_0x91b2('0xa0'));db['AnalyticMetric']=db['sequelize'][_0x91b2('0x14')]('../api/analyticMetric/analyticMetric.model');db['AnalyticFieldReport']=db['sequelize']['import'](_0x91b2('0xa1'));db['AnalyticTreeReport']=db['sequelize']['import'](_0x91b2('0xa2'));db[_0x91b2('0xa3')]=db[_0x91b2('0x2')]['import'](_0x91b2('0xa4'));db[_0x91b2('0xa5')]=db[_0x91b2('0x2')]['import'](_0x91b2('0xa6'));db[_0x91b2('0xa7')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0xa8'));db['SugarcrmAccount']=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xa9'));db[_0x91b2('0xaa')]=db['sequelize'][_0x91b2('0x14')]('../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model');db[_0x91b2('0xab')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xac'));db['DeskAccount']=db['sequelize'][_0x91b2('0x14')](_0x91b2('0xad'));db[_0x91b2('0xae')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xaf'));db[_0x91b2('0xb0')]=db[_0x91b2('0x2')]['import'](_0x91b2('0xb1'));db[_0x91b2('0xb2')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xb3'));db[_0x91b2('0xb4')]=db[_0x91b2('0x2')]['import'](_0x91b2('0xb5'));db['ZohoField']=db[_0x91b2('0x2')]['import'](_0x91b2('0xb6'));db[_0x91b2('0xb7')]=db[_0x91b2('0x2')]['import']('../api/intZendeskAccount/intZendeskAccount.model');db[_0x91b2('0xb8')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xb9'));db[_0x91b2('0xba')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0xbb'));db[_0x91b2('0xbc')]=db[_0x91b2('0x2')]['import'](_0x91b2('0xbd'));db['FreshdeskConfiguration']=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model');db[_0x91b2('0xbe')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xbf'));db['VtigerAccount']=db['sequelize'][_0x91b2('0x14')]('../api/intVtigerAccount/intVtigerAccount.model');db[_0x91b2('0xc0')]=db[_0x91b2('0x2')]['import'](_0x91b2('0xc1'));db[_0x91b2('0xc2')]=db['sequelize']['import'](_0x91b2('0xc3'));db['ServicenowAccount']=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xc4'));db[_0x91b2('0xc5')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xc6'));db[_0x91b2('0xc7')]=db['sequelize']['import'](_0x91b2('0xc8'));db[_0x91b2('0xc9')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xca'));db['Dynamics365Configuration']=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xcb'));db['Dynamics365Field']=db[_0x91b2('0x2')]['import'](_0x91b2('0xcc'));db[_0x91b2('0xcd')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0xce'));db[_0x91b2('0xcf')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xd0'));db[_0x91b2('0xd1')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xd2'));db['Integration']=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x99'));db[_0x91b2('0xd3')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xd4'));db[_0x91b2('0xd5')]=db[_0x91b2('0x2')]['import'](_0x91b2('0xd6'));db[_0x91b2('0xd7')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xd8'));db[_0x91b2('0xd9')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0xda'));db[_0x91b2('0xdb')]=db[_0x91b2('0x2')]['import'](_0x91b2('0xdc'));db[_0x91b2('0xdd')]=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/jscriptySessionReport/jscriptySessionReport.model');db['SmsQueueReport']=db[_0x91b2('0x2')]['import'](_0x91b2('0xde'));db[_0x91b2('0xdf')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xe0'));db[_0x91b2('0xe1')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xe2'));db[_0x91b2('0xe3')]=db[_0x91b2('0x2')]['import'](_0x91b2('0xe4'));db[_0x91b2('0xe5')]=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/setting/setting.model');db[_0x91b2('0xe6')]=db['sequelize']['import'](_0x91b2('0xe7'));db['SquareProject']=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/squareProject/squareProject.model');db[_0x91b2('0xe8')]=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/squareRecording/squareRecording.model');db[_0x91b2('0xe9')]=db['sequelize']['import'](_0x91b2('0xea'));db[_0x91b2('0xeb')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xec'));db[_0x91b2('0xed')]=db['sequelize'][_0x91b2('0x14')]('../api/license/license.model');db[_0x91b2('0xee')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xef'));db[_0x91b2('0xf0')]=db[_0x91b2('0x2')]['import'](_0x91b2('0xf1'));db[_0x91b2('0xf2')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0xf3'));db[_0x91b2('0xf4')]=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/plugin/plugin.model');db[_0x91b2('0xf5')]=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/mailTransferReport/mailTransferReport.model');db[_0x91b2('0xf6')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xf7'));db[_0x91b2('0xf8')]=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/faxTransferReport/faxTransferReport.model');db['OpenchannelTransferReport']=db['sequelize']['import']('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0x91b2('0xf9')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0xfa'));db[_0x91b2('0xfb')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xfc'));db[_0x91b2('0xfd')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0xfe'));db[_0x91b2('0xff')]=db[_0x91b2('0x2')]['import'](_0x91b2('0x100'));db[_0x91b2('0x101')]=db[_0x91b2('0x2')]['import'](_0x91b2('0x102'));db[_0x91b2('0x103')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x104'));db[_0x91b2('0x105')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x106'));db[_0x91b2('0x107')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0x108'));db[_0x91b2('0x109')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x10a'));db[_0x91b2('0x10b')]=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/whatsappInteraction/whatsappInteraction.model');db[_0x91b2('0x10c')]=db['sequelize'][_0x91b2('0x14')](_0x91b2('0x10d'));db['WhatsappQueueReport']=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x10e'));db[_0x91b2('0x10f')]=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/whatsappTransferReport/whatsappTransferReport.model');db['WhatsappQueue']=db[_0x91b2('0x2')][_0x91b2('0x14')]('../api/whatsappQueue/whatsappQueue.model');db[_0x91b2('0x110')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x111'));db['Realtime']=db[_0x91b2('0x2')]['import'](_0x91b2('0x112'));db[_0x91b2('0x113')]=db[_0x91b2('0x2')][_0x91b2('0x14')](_0x91b2('0x114'));db[_0x91b2('0x13')][_0x91b2('0x115')](db[_0x91b2('0x23')],{'as':_0x91b2('0x23'),'onDelete':_0x91b2('0x116'),'foreignKey':'UserId'});db[_0x91b2('0x13')][_0x91b2('0x117')](db[_0x91b2('0x1f')],{'as':_0x91b2('0x118'),'foreignKey':_0x91b2('0x119')});db[_0x91b2('0x13')][_0x91b2('0x117')](db[_0x91b2('0x11a')],{'as':_0x91b2('0x11b'),'foreignKey':_0x91b2('0x119')});db[_0x91b2('0x13')]['hasMany'](db['VoiceExtension'],{'as':_0x91b2('0x11c'),'onDelete':_0x91b2('0x116'),'hooks':!![]});db[_0x91b2('0x13')][_0x91b2('0x117')](db[_0x91b2('0x11d')],{'as':_0x91b2('0x11e'),'foreignKey':_0x91b2('0x119')});db[_0x91b2('0x13')][_0x91b2('0x117')](db['CmHopperHistory'],{'as':_0x91b2('0x11f'),'foreignKey':_0x91b2('0x119')});db[_0x91b2('0x13')][_0x91b2('0x117')](db[_0x91b2('0x120')],{'as':'ReportAgentPreview','foreignKey':_0x91b2('0x119')});db[_0x91b2('0x13')][_0x91b2('0x117')](db[_0x91b2('0x61')],{'as':_0x91b2('0x121'),'foreignKey':_0x91b2('0x119')});db['User'][_0x91b2('0x117')](db[_0x91b2('0x122')],{'as':_0x91b2('0x123'),'foreignKey':_0x91b2('0x119')});db[_0x91b2('0x13')][_0x91b2('0x117')](db[_0x91b2('0x5c')],{'as':_0x91b2('0x124'),'foreignKey':_0x91b2('0x119')});db[_0x91b2('0x13')][_0x91b2('0x117')](db[_0x91b2('0x52')],{'as':'FaxInteractions','foreignKey':_0x91b2('0x119')});db[_0x91b2('0x13')][_0x91b2('0x117')](db['MailInteraction'],{'as':_0x91b2('0x125'),'foreignKey':'UserId'});db['User'][_0x91b2('0x117')](db['WhatsappInteraction'],{'as':_0x91b2('0x126'),'foreignKey':_0x91b2('0x119')});db[_0x91b2('0x13')][_0x91b2('0x117')](db[_0x91b2('0x105')],{'as':_0x91b2('0x127'),'foreignKey':'SenderId'});db[_0x91b2('0x13')][_0x91b2('0x128')](db[_0x91b2('0xff')],{'as':_0x91b2('0xff'),'foreignKey':_0x91b2('0x129')});db['User'][_0x91b2('0x12a')](db[_0x91b2('0x73')],{'as':'Groups','through':_0x91b2('0x12b')});db['User'][_0x91b2('0x12a')](db[_0x91b2('0x78')],{'as':_0x91b2('0x12c'),'through':_0x91b2('0x12d')});db[_0x91b2('0x13')][_0x91b2('0x12a')](db['CmList'],{'as':_0x91b2('0x12e'),'through':_0x91b2('0x12f')});db[_0x91b2('0x13')][_0x91b2('0x12a')](db['Team'],{'through':_0x91b2('0x130')});db[_0x91b2('0x13')][_0x91b2('0x12a')](db[_0x91b2('0x47')],{'as':'MailInteractions','through':'user_has_mail_interactions'});db[_0x91b2('0x13')][_0x91b2('0x12a')](db['ChatInteraction'],{'as':_0x91b2('0x123'),'through':_0x91b2('0x131')});db[_0x91b2('0x13')][_0x91b2('0x12a')](db[_0x91b2('0x52')],{'as':'FaxInteractions','through':_0x91b2('0x132')});db['User'][_0x91b2('0x12a')](db[_0x91b2('0x5c')],{'as':_0x91b2('0x124'),'through':_0x91b2('0x133')});db[_0x91b2('0x13')]['belongsToMany'](db[_0x91b2('0x61')],{'as':_0x91b2('0x121'),'through':_0x91b2('0x134')});db[_0x91b2('0x13')][_0x91b2('0x12a')](db['WhatsappInteraction'],{'as':_0x91b2('0x126'),'through':_0x91b2('0x135')});db[_0x91b2('0x13')]['belongsToMany'](db['VoiceQueue'],{'as':_0x91b2('0x136'),'through':'UserVoiceQueue','required':![]});db[_0x91b2('0x13')][_0x91b2('0x12a')](db[_0x91b2('0x44')],{'as':_0x91b2('0x137'),'through':'UserMailQueue','required':![]});db[_0x91b2('0x13')][_0x91b2('0x12a')](db[_0x91b2('0x71')],{'as':_0x91b2('0x138'),'through':'UserChatQueue','required':![],'hooks':!![]});db[_0x91b2('0x13')][_0x91b2('0x12a')](db[_0x91b2('0x55')],{'as':_0x91b2('0x139'),'through':_0x91b2('0x38'),'required':![]});db[_0x91b2('0x13')]['belongsToMany'](db[_0x91b2('0x13a')],{'as':_0x91b2('0x13b'),'through':_0x91b2('0x3a'),'required':![]});db[_0x91b2('0x13')][_0x91b2('0x12a')](db[_0x91b2('0x65')],{'as':_0x91b2('0x13c'),'through':_0x91b2('0x3c'),'required':![]});db[_0x91b2('0x13')][_0x91b2('0x12a')](db[_0x91b2('0x13d')],{'as':'WhatsappQueues','through':_0x91b2('0x3e'),'required':![]});db[_0x91b2('0x13')][_0x91b2('0x12a')](db[_0x91b2('0xfb')],{'through':_0x91b2('0x12f')});db[_0x91b2('0x13')][_0x91b2('0x12a')](db[_0x91b2('0xfd')],{'as':_0x91b2('0x13e'),'through':_0x91b2('0x13f'),'required':![]});db[_0x91b2('0x13')][_0x91b2('0x12a')](db['ChatWebsite'],{'as':_0x91b2('0x140'),'through':_0x91b2('0x141')});db[_0x91b2('0x13')][_0x91b2('0x12a')](db[_0x91b2('0x4e')],{'as':_0x91b2('0x142'),'through':'user_has_fax_accounts'});db[_0x91b2('0x13')][_0x91b2('0x12a')](db[_0x91b2('0x143')],{'as':'MailAccounts','through':_0x91b2('0x144')});db[_0x91b2('0x13')][_0x91b2('0x12a')](db[_0x91b2('0x5f')],{'as':'OpenchannelAccounts','through':_0x91b2('0x145')});db[_0x91b2('0x13')]['belongsToMany'](db[_0x91b2('0x58')],{'as':_0x91b2('0x146'),'through':_0x91b2('0x147')});db['User'][_0x91b2('0x12a')](db[_0x91b2('0x107')],{'as':'WhatsappAccounts','through':_0x91b2('0x148')});db[_0x91b2('0x13')][_0x91b2('0x12a')](db[_0x91b2('0x149')],{'as':_0x91b2('0x14a'),'through':'user_has_square_projects'});db[_0x91b2('0x15')]['hasMany'](db[_0x91b2('0x19')],{'as':'SpiedAgents','onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x14b')});db[_0x91b2('0x17')][_0x91b2('0x117')](db['VoiceExtension'],{'onDelete':_0x91b2('0x116')});db['VoiceExtension']['hasMany'](db[_0x91b2('0x19')],{'as':_0x91b2('0x14c'),'onDelete':_0x91b2('0x116')});db[_0x91b2('0x1b')]['belongsToMany'](db[_0x91b2('0x8e')],{'as':_0x91b2('0x14d'),'through':_0x91b2('0x14e')});db['VoiceQueue']['hasMany'](db[_0x91b2('0x11a')],{'as':'Members','foreignKey':_0x91b2('0x14f')});db['VoiceQueue']['hasMany'](db[_0x91b2('0x7a')],{'as':_0x91b2('0x150'),'foreignKey':_0x91b2('0x14f')});db[_0x91b2('0x1d')][_0x91b2('0x117')](db[_0x91b2('0x11d')],{'as':_0x91b2('0x11e'),'foreignKey':_0x91b2('0x14f')});db[_0x91b2('0x1d')][_0x91b2('0x117')](db[_0x91b2('0x7d')],{'as':_0x91b2('0x151'),'foreignKey':'VoiceQueueId'});db[_0x91b2('0x1d')][_0x91b2('0x117')](db[_0x91b2('0x120')],{'as':'ReportAgentPreview','foreignKey':_0x91b2('0x14f')});db[_0x91b2('0x1d')][_0x91b2('0x117')](db[_0x91b2('0x7b')],{'as':_0x91b2('0x152'),'foreignKey':'VoiceQueueId'});db[_0x91b2('0x1d')][_0x91b2('0x117')](db[_0x91b2('0xdd')],{'as':'JscriptySessions','foreignKey':_0x91b2('0x14f')});db[_0x91b2('0x1d')][_0x91b2('0x128')](db['Trunk'],{'as':'Trunk','foreignKey':_0x91b2('0x153')});db[_0x91b2('0x1d')]['belongsTo'](db['Trunk'],{'as':_0x91b2('0x154'),'foreignKey':_0x91b2('0x155')});db[_0x91b2('0x1d')][_0x91b2('0x128')](db[_0x91b2('0x87')],{'as':'Interval','foreignKey':_0x91b2('0x156')});db[_0x91b2('0x1d')][_0x91b2('0x128')](db[_0x91b2('0x89')],{'as':_0x91b2('0x157'),'foreignKey':_0x91b2('0x158')});db[_0x91b2('0x1d')]['belongsToMany'](db[_0x91b2('0xfb')],{'as':_0x91b2('0x12e'),'through':_0x91b2('0x159')});db[_0x91b2('0x1d')][_0x91b2('0x12a')](db[_0x91b2('0x13')],{'as':_0x91b2('0x15a'),'through':_0x91b2('0x33')});db[_0x91b2('0x1d')][_0x91b2('0x12a')](db[_0x91b2('0xeb')],{'as':_0x91b2('0x15b'),'through':_0x91b2('0x113')});db['VoiceQueue'][_0x91b2('0x12a')](db[_0x91b2('0xfb')],{'as':_0x91b2('0x15c'),'through':_0x91b2('0x15d')});db[_0x91b2('0x1f')][_0x91b2('0x128')](db['User'],{'as':'User','foreignKey':_0x91b2('0x119')});db['ScreenRecording'][_0x91b2('0x128')](db[_0x91b2('0x13')],{'as':_0x91b2('0x13'),'foreignKey':_0x91b2('0x119')});db[_0x91b2('0x23')]['hasMany'](db[_0x91b2('0x25')],{'as':_0x91b2('0x15e'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x15f'),'sourceKey':'mailbox'});db['VoiceMailMessage'][_0x91b2('0x128')](db[_0x91b2('0x23')],{'foreignKey':_0x91b2('0x15f'),'targetKey':_0x91b2('0x160')});db[_0x91b2('0x27')][_0x91b2('0x117')](db[_0x91b2('0x2b')],{'as':_0x91b2('0x161'),'foreignKey':'uniqueid','constraints':![]});db[_0x91b2('0x27')][_0x91b2('0x117')](db[_0x91b2('0x162')],{'as':'AgentReports','foreignKey':_0x91b2('0x163'),'constraints':![]});db[_0x91b2('0x27')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'as':_0x91b2('0x13'),'foreignKey':_0x91b2('0x119')});db['VoiceCallReport'][_0x91b2('0x128')](db['CmContact'],{'as':_0x91b2('0x164'),'foreignKey':'ContactId'});db['MailServerIn'][_0x91b2('0x128')](db[_0x91b2('0x143')],{'as':_0x91b2('0x143'),'foreignKey':'MailAccountId'});db[_0x91b2('0x42')][_0x91b2('0x128')](db[_0x91b2('0x143')],{'as':_0x91b2('0x143'),'foreignKey':'MailAccountId'});db['MailAccount'][_0x91b2('0x115')](db[_0x91b2('0x40')],{'as':'Imap','onDelete':_0x91b2('0x116')});db[_0x91b2('0x143')][_0x91b2('0x115')](db[_0x91b2('0x42')],{'as':'Smtp','onDelete':_0x91b2('0x116')});db['MailAccount'][_0x91b2('0x117')](db[_0x91b2('0x83')],{'as':_0x91b2('0x165'),'foreignKey':_0x91b2('0x166'),'onDelete':_0x91b2('0x116')});db['MailAccount'][_0x91b2('0x117')](db[_0x91b2('0x81')],{'as':_0x91b2('0x167'),'foreignKey':_0x91b2('0x166')});db['MailAccount'][_0x91b2('0x117')](db['MailMessage'],{'as':'Messages','foreignKey':'MailAccountId'});db[_0x91b2('0x143')][_0x91b2('0x117')](db[_0x91b2('0x47')],{'as':_0x91b2('0x168')});db[_0x91b2('0x143')][_0x91b2('0x117')](db[_0x91b2('0x4b')],{'as':'Applications'});db[_0x91b2('0x143')][_0x91b2('0x128')](db[_0x91b2('0xfb')],{'as':_0x91b2('0x169'),'foreignKey':_0x91b2('0x16a')});db[_0x91b2('0x143')][_0x91b2('0x128')](db['Template'],{'as':_0x91b2('0x92'),'foreignKey':'TemplateId'});db['MailAccount'][_0x91b2('0x128')](db[_0x91b2('0x89')],{'as':_0x91b2('0x157'),'foreignKey':_0x91b2('0x158')});db[_0x91b2('0x143')][_0x91b2('0x12a')](db[_0x91b2('0x13')],{'as':'Agents','through':'user_has_mail_accounts'});db[_0x91b2('0x44')][_0x91b2('0x12a')](db['User'],{'as':'Agents','through':_0x91b2('0x36')});db[_0x91b2('0x44')]['belongsToMany'](db['Team'],{'through':'team_has_mail_queues','as':_0x91b2('0x15b')});db[_0x91b2('0x47')]['hasMany'](db[_0x91b2('0x49')],{'as':_0x91b2('0x15e'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x16b')});db[_0x91b2('0x47')][_0x91b2('0x128')](db[_0x91b2('0x143')],{'as':'Account','foreignKey':'MailAccountId'});db[_0x91b2('0x47')][_0x91b2('0x128')](db[_0x91b2('0x78')],{'as':_0x91b2('0x164'),'foreignKey':'ContactId'});db[_0x91b2('0x47')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'as':_0x91b2('0x16c'),'foreignKey':'UserId'});db['MailInteraction']['belongsToMany'](db['Tag'],{'through':_0x91b2('0x16d'),'as':_0x91b2('0x16e')});db[_0x91b2('0x47')][_0x91b2('0x12a')](db[_0x91b2('0x90')],{'through':_0x91b2('0x16d'),'as':_0x91b2('0x16f')});db['MailInteraction'][_0x91b2('0x12a')](db['User'],{'as':_0x91b2('0x170'),'through':_0x91b2('0x171'),'foreignKey':_0x91b2('0x16b')});db['MailMessage'][_0x91b2('0x117')](db[_0x91b2('0xf2')],{'as':_0x91b2('0x172'),'onDelete':_0x91b2('0x116')});db[_0x91b2('0x49')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'as':_0x91b2('0x13')});db['MailMessage'][_0x91b2('0x128')](db['CmContact'],{'onDelete':'cascade','as':_0x91b2('0x164')});db[_0x91b2('0x49')][_0x91b2('0x128')](db[_0x91b2('0x47')],{'as':_0x91b2('0x173'),'foreignKey':_0x91b2('0x16b')});db[_0x91b2('0x49')][_0x91b2('0x128')](db[_0x91b2('0x143')],{'as':'Account','foreignKey':_0x91b2('0x166')});db['MailMessage'][_0x91b2('0x128')](db[_0x91b2('0x67')],{'as':_0x91b2('0x67'),'foreignKey':_0x91b2('0x174')});db[_0x91b2('0x49')][_0x91b2('0x128')](db[_0x91b2('0x6f')],{'as':_0x91b2('0x6f'),'foreignKey':'ChatOfflineMessageId'});db['MailApplication'][_0x91b2('0x128')](db[_0x91b2('0x13')],{'onDelete':_0x91b2('0x175')});db[_0x91b2('0x4b')][_0x91b2('0x128')](db[_0x91b2('0x44')],{'onDelete':_0x91b2('0x175')});db['MailApplication'][_0x91b2('0x128')](db[_0x91b2('0x143')],{'onDelete':_0x91b2('0x175')});db[_0x91b2('0x4b')][_0x91b2('0x128')](db[_0x91b2('0x87')],{'onDelete':_0x91b2('0x175'),'foreignKey':_0x91b2('0x156')});db[_0x91b2('0x4b')][_0x91b2('0x128')](db['Tag'],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x91b2('0x176')][_0x91b2('0x128')](db['MailAccount'],{});db[_0x91b2('0x176')][_0x91b2('0x128')](db[_0x91b2('0xfb')],{'as':_0x91b2('0x169'),'foreignKey':_0x91b2('0x16a')});db[_0x91b2('0x176')][_0x91b2('0x128')](db['CmContact'],{'as':'Contact','foreignKey':'ContactId'});db[_0x91b2('0x176')][_0x91b2('0x128')](db[_0x91b2('0x47')],{});db[_0x91b2('0x176')][_0x91b2('0x128')](db[_0x91b2('0x49')],{});db[_0x91b2('0x176')][_0x91b2('0x128')](db[_0x91b2('0x13')],{});db[_0x91b2('0x176')][_0x91b2('0x128')](db[_0x91b2('0x44')],{});db[_0x91b2('0x177')]['hasMany'](db[_0x91b2('0x178')],{'as':_0x91b2('0x179'),'onDelete':_0x91b2('0x116')});db[_0x91b2('0x4e')]['hasMany'](db[_0x91b2('0x83')],{'as':'Dispositions','foreignKey':_0x91b2('0x17a'),'onDelete':_0x91b2('0x116')});db[_0x91b2('0x4e')][_0x91b2('0x117')](db[_0x91b2('0x81')],{'as':'Answers','foreignKey':_0x91b2('0x17a')});db[_0x91b2('0x4e')]['hasMany'](db[_0x91b2('0x52')],{'as':_0x91b2('0x168')});db[_0x91b2('0x4e')][_0x91b2('0x117')](db[_0x91b2('0x50')],{'as':_0x91b2('0x14c')});db[_0x91b2('0x4e')][_0x91b2('0x117')](db[_0x91b2('0x19')],{'as':_0x91b2('0x17b'),'onDelete':_0x91b2('0x116')});db[_0x91b2('0x4e')][_0x91b2('0x117')](db[_0x91b2('0x54')],{'as':_0x91b2('0x15e')});db[_0x91b2('0x4e')][_0x91b2('0x128')](db[_0x91b2('0x17c')],{'as':_0x91b2('0x17c')});db[_0x91b2('0x4e')][_0x91b2('0x128')](db[_0x91b2('0xfb')],{'as':'List','foreignKey':'ListId'});db[_0x91b2('0x4e')][_0x91b2('0x128')](db[_0x91b2('0x89')],{'as':_0x91b2('0x157'),'foreignKey':_0x91b2('0x158')});db[_0x91b2('0x4e')][_0x91b2('0x12a')](db[_0x91b2('0x13')],{'as':_0x91b2('0x15a'),'through':'user_has_fax_accounts'});db[_0x91b2('0x50')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'onDelete':'restrict'});db[_0x91b2('0x50')][_0x91b2('0x128')](db[_0x91b2('0x55')],{'onDelete':_0x91b2('0x175')});db['FaxApplication']['belongsTo'](db['FaxAccount'],{'onDelete':'restrict'});db[_0x91b2('0x50')][_0x91b2('0x128')](db[_0x91b2('0x90')],{'onDelete':_0x91b2('0x175'),'foreignKey':_0x91b2('0x17d')});db[_0x91b2('0x52')][_0x91b2('0x117')](db[_0x91b2('0x54')],{'as':_0x91b2('0x15e'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x17e')});db[_0x91b2('0x52')]['belongsTo'](db['FaxAccount'],{'as':_0x91b2('0x17f'),'foreignKey':'FaxAccountId'});db['FaxInteraction'][_0x91b2('0x128')](db[_0x91b2('0x78')],{'as':_0x91b2('0x164'),'foreignKey':'ContactId'});db[_0x91b2('0x52')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'as':_0x91b2('0x16c'),'foreignKey':_0x91b2('0x119')});db[_0x91b2('0x52')][_0x91b2('0x12a')](db[_0x91b2('0x90')],{'through':_0x91b2('0x180'),'as':_0x91b2('0x16e')});db[_0x91b2('0x52')][_0x91b2('0x12a')](db[_0x91b2('0x90')],{'through':'fax_interaction_has_tags','as':'ThroughTags'});db['FaxInteraction'][_0x91b2('0x12a')](db['User'],{'as':_0x91b2('0x170'),'through':_0x91b2('0x132'),'foreignKey':_0x91b2('0x17e')});db[_0x91b2('0x54')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'onDelete':_0x91b2('0x116'),'as':_0x91b2('0x13')});db[_0x91b2('0x54')][_0x91b2('0x128')](db[_0x91b2('0x52')],{'as':_0x91b2('0x173'),'foreignKey':_0x91b2('0x17e')});db[_0x91b2('0x54')][_0x91b2('0x128')](db[_0x91b2('0x78')],{'onDelete':_0x91b2('0x116'),'as':_0x91b2('0x164')});db['FaxMessage'][_0x91b2('0x128')](db[_0x91b2('0xf2')],{'as':_0x91b2('0xf2'),'foreignKey':'AttachmentId'});db[_0x91b2('0x54')][_0x91b2('0x128')](db[_0x91b2('0x4e')],{'as':'Account','foreignKey':_0x91b2('0x17a')});db[_0x91b2('0x55')][_0x91b2('0x12a')](db[_0x91b2('0x13')],{'as':_0x91b2('0x15a'),'through':'UserFaxQueue'});db[_0x91b2('0x55')][_0x91b2('0x12a')](db[_0x91b2('0xeb')],{'through':'team_has_fax_queues','as':_0x91b2('0x15b')});db['FaxQueueReport']['belongsTo'](db[_0x91b2('0x4e')],{});db['FaxQueueReport'][_0x91b2('0x128')](db['CmList'],{'as':'List','foreignKey':_0x91b2('0x16a')});db[_0x91b2('0x181')]['belongsTo'](db['CmContact'],{'as':_0x91b2('0x164'),'foreignKey':_0x91b2('0x182')});db[_0x91b2('0x181')][_0x91b2('0x128')](db[_0x91b2('0x52')],{});db[_0x91b2('0x181')][_0x91b2('0x128')](db[_0x91b2('0x54')],{});db[_0x91b2('0x181')][_0x91b2('0x128')](db['User'],{});db[_0x91b2('0x181')][_0x91b2('0x128')](db[_0x91b2('0x55')],{});db['SmsAccount'][_0x91b2('0x117')](db[_0x91b2('0x83')],{'as':_0x91b2('0x165'),'foreignKey':'SmsAccountId','onDelete':_0x91b2('0x116')});db[_0x91b2('0x58')][_0x91b2('0x117')](db[_0x91b2('0x81')],{'as':_0x91b2('0x167'),'foreignKey':'SmsAccountId'});db[_0x91b2('0x58')][_0x91b2('0x117')](db[_0x91b2('0x183')],{'as':_0x91b2('0x15e'),'foreignKey':_0x91b2('0x184')});db[_0x91b2('0x58')][_0x91b2('0x117')](db[_0x91b2('0x5c')],{'as':_0x91b2('0x168')});db['SmsAccount'][_0x91b2('0x117')](db['SmsApplication'],{'as':_0x91b2('0x14c')});db[_0x91b2('0x58')]['belongsTo'](db['CmList'],{'as':_0x91b2('0x169'),'foreignKey':_0x91b2('0x16a')});db[_0x91b2('0x58')][_0x91b2('0x128')](db[_0x91b2('0x89')],{'as':_0x91b2('0x157'),'foreignKey':'mandatoryDispositionPauseId'});db['SmsAccount'][_0x91b2('0x12a')](db[_0x91b2('0x13')],{'as':_0x91b2('0x15a'),'through':_0x91b2('0x147')});db[_0x91b2('0x5a')]['belongsTo'](db[_0x91b2('0x13')],{'onDelete':_0x91b2('0x175')});db[_0x91b2('0x5a')][_0x91b2('0x128')](db[_0x91b2('0x13a')],{'onDelete':_0x91b2('0x175')});db[_0x91b2('0x5a')][_0x91b2('0x128')](db[_0x91b2('0x58')],{'onDelete':_0x91b2('0x175')});db[_0x91b2('0x5a')][_0x91b2('0x128')](db[_0x91b2('0x87')],{'onDelete':'restrict','foreignKey':_0x91b2('0x156')});db[_0x91b2('0x5a')]['belongsTo'](db['Tag'],{'onDelete':_0x91b2('0x175'),'foreignKey':_0x91b2('0x17d')});db[_0x91b2('0x5c')]['hasMany'](db[_0x91b2('0x183')],{'as':_0x91b2('0x15e'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x185')});db[_0x91b2('0x5c')]['belongsTo'](db['SmsAccount'],{'as':_0x91b2('0x17f'),'foreignKey':_0x91b2('0x184')});db[_0x91b2('0x5c')]['belongsTo'](db[_0x91b2('0x78')],{'as':_0x91b2('0x164'),'foreignKey':_0x91b2('0x182')});db[_0x91b2('0x5c')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'as':_0x91b2('0x16c'),'foreignKey':_0x91b2('0x119')});db['SmsInteraction'][_0x91b2('0x12a')](db[_0x91b2('0x90')],{'through':_0x91b2('0x186'),'as':_0x91b2('0x16e')});db[_0x91b2('0x5c')][_0x91b2('0x12a')](db[_0x91b2('0x90')],{'through':_0x91b2('0x186'),'as':_0x91b2('0x16f')});db['SmsInteraction']['belongsToMany'](db[_0x91b2('0x13')],{'as':_0x91b2('0x170'),'through':'user_has_sms_interactions','foreignKey':'SmsInteractionId'});db[_0x91b2('0x183')]['belongsTo'](db[_0x91b2('0x13')],{'as':_0x91b2('0x13')});db['SmsMessage']['belongsTo'](db[_0x91b2('0x78')],{'onDelete':_0x91b2('0x116'),'as':_0x91b2('0x164')});db['SmsMessage']['belongsTo'](db[_0x91b2('0x5c')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x91b2('0x185')});db[_0x91b2('0x183')][_0x91b2('0x128')](db[_0x91b2('0x58')],{'as':_0x91b2('0x17f'),'foreignKey':_0x91b2('0x184')});db[_0x91b2('0x13a')][_0x91b2('0x12a')](db[_0x91b2('0x13')],{'as':_0x91b2('0x15a'),'through':'UserSmsQueue','foreignKey':_0x91b2('0x187')});db[_0x91b2('0x13a')]['belongsToMany'](db[_0x91b2('0xeb')],{'through':_0x91b2('0x188'),'as':'Teams'});db[_0x91b2('0x5f')][_0x91b2('0x117')](db[_0x91b2('0x83')],{'as':_0x91b2('0x165'),'foreignKey':_0x91b2('0x189'),'onDelete':_0x91b2('0x116')});db[_0x91b2('0x5f')][_0x91b2('0x117')](db[_0x91b2('0x81')],{'as':_0x91b2('0x167'),'foreignKey':_0x91b2('0x189')});db[_0x91b2('0x5f')]['hasMany'](db[_0x91b2('0x61')],{'as':_0x91b2('0x168'),'foreignKey':_0x91b2('0x189')});db[_0x91b2('0x5f')][_0x91b2('0x117')](db[_0x91b2('0x63')],{'as':_0x91b2('0x15e'),'foreignKey':'OpenchannelAccountId'});db[_0x91b2('0x5f')]['hasMany'](db[_0x91b2('0x60')],{'as':_0x91b2('0x14c'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount']['belongsTo'](db[_0x91b2('0xfb')],{'as':_0x91b2('0x169'),'foreignKey':_0x91b2('0x16a')});db[_0x91b2('0x5f')]['belongsTo'](db[_0x91b2('0x89')],{'as':_0x91b2('0x157'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x91b2('0x5f')][_0x91b2('0x12a')](db[_0x91b2('0x13')],{'as':_0x91b2('0x15a'),'through':'user_has_openchannel_accounts'});db['OpenchannelApplication'][_0x91b2('0x128')](db[_0x91b2('0x13')],{'onDelete':_0x91b2('0x175')});db[_0x91b2('0x60')][_0x91b2('0x128')](db['OpenchannelQueue'],{'onDelete':_0x91b2('0x175'),'foreignKey':_0x91b2('0x18a')});db['OpenchannelApplication']['belongsTo'](db['OpenchannelAccount'],{'onDelete':_0x91b2('0x175'),'foreignKey':_0x91b2('0x189')});db[_0x91b2('0x60')][_0x91b2('0x128')](db[_0x91b2('0x87')],{'onDelete':_0x91b2('0x175'),'foreignKey':_0x91b2('0x156')});db[_0x91b2('0x60')][_0x91b2('0x128')](db[_0x91b2('0x90')],{'onDelete':_0x91b2('0x175'),'foreignKey':_0x91b2('0x17d')});db[_0x91b2('0x61')][_0x91b2('0x117')](db[_0x91b2('0x63')],{'as':_0x91b2('0x15e'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x18b')});db[_0x91b2('0x61')][_0x91b2('0x128')](db['OpenchannelAccount'],{'as':_0x91b2('0x17f'),'foreignKey':_0x91b2('0x189')});db['OpenchannelInteraction'][_0x91b2('0x128')](db[_0x91b2('0x78')],{'as':'Contact','foreignKey':_0x91b2('0x182')});db[_0x91b2('0x61')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'as':_0x91b2('0x16c'),'foreignKey':'UserId'});db[_0x91b2('0x61')]['belongsToMany'](db[_0x91b2('0x90')],{'through':_0x91b2('0x18c'),'as':_0x91b2('0x16e')});db[_0x91b2('0x61')][_0x91b2('0x12a')](db['Tag'],{'through':_0x91b2('0x18c'),'as':_0x91b2('0x16f')});db[_0x91b2('0x61')][_0x91b2('0x12a')](db[_0x91b2('0x13')],{'as':_0x91b2('0x170'),'through':_0x91b2('0x134'),'foreignKey':'OpenchannelInteractionId'});db[_0x91b2('0x63')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'onDelete':_0x91b2('0x116'),'as':_0x91b2('0x13')});db[_0x91b2('0x63')]['belongsTo'](db['CmContact'],{'onDelete':_0x91b2('0x116'),'as':_0x91b2('0x164')});db[_0x91b2('0x63')][_0x91b2('0x128')](db[_0x91b2('0x61')],{'onDelete':'cascade','as':_0x91b2('0x173'),'foreignKey':_0x91b2('0x18b')});db['OpenchannelMessage'][_0x91b2('0x128')](db[_0x91b2('0xf2')],{'as':_0x91b2('0xf2'),'foreignKey':'AttachmentId'});db['OpenchannelMessage'][_0x91b2('0x128')](db[_0x91b2('0x5f')],{'as':_0x91b2('0x17f'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelQueue'][_0x91b2('0x12a')](db[_0x91b2('0x13')],{'as':_0x91b2('0x15a'),'through':_0x91b2('0x3c'),'foreignKey':_0x91b2('0x18a')});db['OpenchannelQueue'][_0x91b2('0x12a')](db[_0x91b2('0xeb')],{'through':_0x91b2('0x18d'),'as':_0x91b2('0x15b')});db[_0x91b2('0x67')]['hasMany'](db[_0x91b2('0x83')],{'as':'Dispositions','foreignKey':_0x91b2('0x174'),'onDelete':'cascade'});db['ChatWebsite'][_0x91b2('0x117')](db[_0x91b2('0x81')],{'as':'Answers','foreignKey':_0x91b2('0x174')});db[_0x91b2('0x67')][_0x91b2('0x117')](db[_0x91b2('0x74')],{'as':_0x91b2('0x18e')});db[_0x91b2('0x67')][_0x91b2('0x117')](db[_0x91b2('0x122')],{'as':_0x91b2('0x168')});db[_0x91b2('0x67')][_0x91b2('0x117')](db['ChatApplication'],{'as':_0x91b2('0x14c')});db[_0x91b2('0x67')][_0x91b2('0x117')](db[_0x91b2('0x6d')],{'as':_0x91b2('0x15e')});db[_0x91b2('0x67')]['belongsTo'](db[_0x91b2('0xfb')],{'as':_0x91b2('0x169'),'foreignKey':_0x91b2('0x16a')});db[_0x91b2('0x67')]['belongsTo'](db[_0x91b2('0x87')],{'as':_0x91b2('0x87'),'foreignKey':_0x91b2('0x156')});db[_0x91b2('0x67')][_0x91b2('0x128')](db[_0x91b2('0x143')],{'as':_0x91b2('0x143'),'foreignKey':_0x91b2('0x166')});db[_0x91b2('0x67')][_0x91b2('0x128')](db[_0x91b2('0x89')],{'as':_0x91b2('0x157'),'foreignKey':_0x91b2('0x158')});db[_0x91b2('0x67')][_0x91b2('0x12a')](db['User'],{'as':_0x91b2('0x15a'),'through':_0x91b2('0x141')});db[_0x91b2('0x18f')]['belongsTo'](db[_0x91b2('0x5f')],{});db[_0x91b2('0x18f')]['belongsTo'](db['CmList'],{'as':_0x91b2('0x169'),'foreignKey':_0x91b2('0x16a')});db[_0x91b2('0x18f')]['belongsTo'](db['CmContact'],{'as':'Contact','foreignKey':_0x91b2('0x182')});db[_0x91b2('0x18f')][_0x91b2('0x128')](db[_0x91b2('0x61')],{});db['OpenchannelQueueReport'][_0x91b2('0x128')](db[_0x91b2('0x63')],{});db[_0x91b2('0x18f')][_0x91b2('0x128')](db[_0x91b2('0x13')],{});db[_0x91b2('0x18f')][_0x91b2('0x128')](db[_0x91b2('0x65')],{});db['ChatApplication'][_0x91b2('0x128')](db['User'],{'as':'Agent','foreignKey':_0x91b2('0x119'),'onDelete':_0x91b2('0x175')});db[_0x91b2('0x6a')][_0x91b2('0x128')](db[_0x91b2('0x71')],{'as':_0x91b2('0x190'),'foreignKey':'ChatQueueId','onDelete':'restrict'});db[_0x91b2('0x6a')][_0x91b2('0x128')](db[_0x91b2('0x67')],{'as':'Website','foreignKey':_0x91b2('0x174'),'onDelete':'restrict'});db[_0x91b2('0x6a')][_0x91b2('0x128')](db[_0x91b2('0x90')],{'onDelete':'restrict','foreignKey':'TagId'});db['ChatInteraction'][_0x91b2('0x117')](db[_0x91b2('0x6d')],{'as':_0x91b2('0x15e'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x191')});db['ChatInteraction']['belongsTo'](db[_0x91b2('0x67')],{'as':_0x91b2('0x17f'),'foreignKey':_0x91b2('0x174')});db['ChatInteraction'][_0x91b2('0x128')](db['CmContact'],{'as':_0x91b2('0x164'),'foreignKey':_0x91b2('0x182')});db['ChatInteraction'][_0x91b2('0x128')](db[_0x91b2('0x13')],{'as':_0x91b2('0x16c'),'foreignKey':'UserId'});db[_0x91b2('0x122')]['belongsToMany'](db[_0x91b2('0x90')],{'through':_0x91b2('0x192'),'as':_0x91b2('0x16e')});db['ChatInteraction'][_0x91b2('0x12a')](db['Tag'],{'through':_0x91b2('0x192'),'as':'ThroughTags'});db[_0x91b2('0x122')][_0x91b2('0x12a')](db['User'],{'as':_0x91b2('0x170'),'through':_0x91b2('0x131'),'foreignKey':_0x91b2('0x191')});db[_0x91b2('0x6d')]['belongsTo'](db[_0x91b2('0x13')],{'onDelete':_0x91b2('0x116'),'as':_0x91b2('0x13')});db['ChatMessage'][_0x91b2('0x128')](db[_0x91b2('0x78')],{'onDelete':'cascade','as':'Contact','foreignKey':_0x91b2('0x182')});db['ChatMessage'][_0x91b2('0x128')](db[_0x91b2('0x122')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x91b2('0x191')});db[_0x91b2('0x6d')][_0x91b2('0x128')](db[_0x91b2('0xf2')],{'as':'Attachment','foreignKey':_0x91b2('0x193')});db[_0x91b2('0x6d')][_0x91b2('0x128')](db['ChatWebsite'],{'as':_0x91b2('0x17f'),'foreignKey':'ChatWebsiteId'});db[_0x91b2('0x6f')][_0x91b2('0x117')](db[_0x91b2('0xf2')],{'as':_0x91b2('0x172'),'foreignKey':_0x91b2('0x194'),'onDelete':_0x91b2('0x116'),'hooks':!![]});db[_0x91b2('0x6f')][_0x91b2('0x128')](db[_0x91b2('0x78')],{'onDelete':_0x91b2('0x116'),'as':_0x91b2('0x164'),'foreignKey':_0x91b2('0x182')});db[_0x91b2('0x6f')][_0x91b2('0x128')](db[_0x91b2('0x67')],{'as':_0x91b2('0x17f'),'foreignKey':_0x91b2('0x174')});db[_0x91b2('0x71')][_0x91b2('0x12a')](db[_0x91b2('0x13')],{'as':_0x91b2('0x15a'),'through':_0x91b2('0x34'),'hooks':!![]});db[_0x91b2('0x71')][_0x91b2('0x12a')](db[_0x91b2('0xeb')],{'through':_0x91b2('0x195'),'as':_0x91b2('0x15b')});db['ChatGroup'][_0x91b2('0x117')](db[_0x91b2('0xd7')],{'as':_0x91b2('0x15e'),'foreignKey':_0x91b2('0x196'),'onDelete':_0x91b2('0x116')});db[_0x91b2('0x73')][_0x91b2('0x12a')](db[_0x91b2('0x13')],{'as':_0x91b2('0x197'),'through':_0x91b2('0x12b')});db[_0x91b2('0x74')][_0x91b2('0x128')](db[_0x91b2('0x67')],{'as':_0x91b2('0x198'),'foreignKey':'ChatWebsiteId'});db[_0x91b2('0x76')][_0x91b2('0x117')](db['CmContact'],{'as':_0x91b2('0x12c'),'foreignKey':'CompanyId'});db['CmContact'][_0x91b2('0x117')](db[_0x91b2('0x7a')],{'as':'Hoppers','foreignKey':_0x91b2('0x182')});db[_0x91b2('0x78')][_0x91b2('0x117')](db['CmHopperFinal'],{'as':_0x91b2('0x11e'),'foreignKey':'ContactId'});db[_0x91b2('0x78')]['hasMany'](db[_0x91b2('0x7d')],{'as':_0x91b2('0x151'),'foreignKey':_0x91b2('0x182')});db[_0x91b2('0x78')]['hasMany'](db[_0x91b2('0x120')],{'as':_0x91b2('0x120'),'foreignKey':_0x91b2('0x182')});db['CmContact'][_0x91b2('0x117')](db[_0x91b2('0xdd')],{'as':_0x91b2('0x199'),'foreignKey':_0x91b2('0x182')});db['CmContact'][_0x91b2('0x117')](db[_0x91b2('0x61')],{'as':'OpenchannelInteractions','foreignKey':_0x91b2('0x182'),'onDelete':_0x91b2('0x175')});db[_0x91b2('0x78')]['hasMany'](db[_0x91b2('0x122')],{'as':'ChatInteractions','foreignKey':_0x91b2('0x182'),'onDelete':_0x91b2('0x175')});db[_0x91b2('0x78')][_0x91b2('0x117')](db[_0x91b2('0x5c')],{'as':'SmsInteractions','foreignKey':_0x91b2('0x182'),'onDelete':'restrict'});db['CmContact'][_0x91b2('0x117')](db[_0x91b2('0x52')],{'as':_0x91b2('0x19a'),'foreignKey':'ContactId','onDelete':_0x91b2('0x175')});db['CmContact']['hasMany'](db['MailInteraction'],{'as':_0x91b2('0x125'),'foreignKey':_0x91b2('0x182'),'onDelete':_0x91b2('0x175')});db[_0x91b2('0x78')][_0x91b2('0x128')](db[_0x91b2('0x76')],{'as':_0x91b2('0x19b'),'foreignKey':'CompanyId'});db[_0x91b2('0x78')]['belongsTo'](db[_0x91b2('0xfb')],{'as':_0x91b2('0x169'),'foreignKey':'ListId','onDelete':_0x91b2('0x116')});db[_0x91b2('0x78')][_0x91b2('0x12a')](db[_0x91b2('0x13')],{'as':_0x91b2('0x170'),'through':'cm_user_has_contacts'});db['CmContact'][_0x91b2('0x12a')](db[_0x91b2('0x90')],{'as':'Tags','through':'cm_contact_has_tags'});db['CmContact'][_0x91b2('0x12a')](db[_0x91b2('0x90')],{'through':_0x91b2('0x19c'),'as':_0x91b2('0x16f')});db[_0x91b2('0x7a')][_0x91b2('0x128')](db[_0x91b2('0x78')],{'as':_0x91b2('0x164'),'foreignKey':_0x91b2('0x182'),'onDelete':_0x91b2('0x116')});db[_0x91b2('0x7a')][_0x91b2('0x128')](db['CmList'],{'as':_0x91b2('0x169'),'foreignKey':'ListId','onDelete':'cascade'});db['CmHopper'][_0x91b2('0x128')](db['User'],{'as':_0x91b2('0x19d'),'foreignKey':_0x91b2('0x119')});db[_0x91b2('0x7a')][_0x91b2('0x128')](db[_0x91b2('0x1d')],{'as':_0x91b2('0x190'),'foreignKey':_0x91b2('0x14f'),'onDelete':_0x91b2('0x116')});db[_0x91b2('0x7a')][_0x91b2('0x128')](db[_0x91b2('0xee')],{'as':_0x91b2('0xee'),'foreignKey':_0x91b2('0x19e'),'onDelete':'cascade'});db[_0x91b2('0x7a')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'as':_0x91b2('0x16c'),'foreignKey':_0x91b2('0x19f')});db[_0x91b2('0x7b')]['belongsTo'](db['CmContact'],{'as':_0x91b2('0x164'),'foreignKey':_0x91b2('0x182'),'onDelete':_0x91b2('0x116')});db[_0x91b2('0x7b')][_0x91b2('0x128')](db['CmList'],{'as':'List','foreignKey':'ListId','onDelete':'cascade'});db[_0x91b2('0x7b')][_0x91b2('0x128')](db[_0x91b2('0x1d')],{'as':'Queue','foreignKey':_0x91b2('0x14f'),'onDelete':_0x91b2('0x116')});db[_0x91b2('0x7b')][_0x91b2('0x128')](db[_0x91b2('0xee')],{'as':'Campaign','foreignKey':_0x91b2('0x19e'),'onDelete':'cascade'});db['Automation'][_0x91b2('0x117')](db[_0x91b2('0x85')],{'as':{'plural':_0x91b2('0x1a0'),'singular':_0x91b2('0x1a1')},'foreignKey':_0x91b2('0x1a2'),'onDelete':'cascade','hooks':!![]});db[_0x91b2('0x1a3')][_0x91b2('0x117')](db['Condition'],{'as':{'plural':'Any','singular':_0x91b2('0x1a4')},'foreignKey':_0x91b2('0x1a5'),'onDelete':'cascade','hooks':!![]});db['Automation']['hasMany'](db[_0x91b2('0x1a6')],{'as':_0x91b2('0x1a7'),'foreignKey':_0x91b2('0x1a8'),'onDelete':_0x91b2('0x116'),'hooks':!![]});db[_0x91b2('0x83')][_0x91b2('0x117')](db[_0x91b2('0x83')],{'as':_0x91b2('0x165'),'foreignKey':_0x91b2('0x1a9'),'onDelete':_0x91b2('0x116')});db[_0x91b2('0x87')][_0x91b2('0x117')](db['Interval'],{'as':_0x91b2('0x1aa'),'foreignKey':_0x91b2('0x156'),'onDelete':_0x91b2('0x116'),'hooks':!![],'required':![]});db[_0x91b2('0x87')][_0x91b2('0x117')](db[_0x91b2('0x19')],{'as':_0x91b2('0x11c'),'foreignKey':'IntervalId','onDelete':_0x91b2('0x175')});db['Interval'][_0x91b2('0x117')](db[_0x91b2('0x4b')],{'as':_0x91b2('0x1ab'),'foreignKey':'IntervalId'});db[_0x91b2('0x87')][_0x91b2('0x117')](db['ChatApplication'],{'as':_0x91b2('0x1ac'),'foreignKey':'IntervalId'});db['Interval']['hasMany'](db[_0x91b2('0x50')],{'as':_0x91b2('0x1ad'),'foreignKey':_0x91b2('0x156')});db[_0x91b2('0x87')][_0x91b2('0x117')](db[_0x91b2('0x5a')],{'as':_0x91b2('0x1ae'),'foreignKey':_0x91b2('0x156')});db[_0x91b2('0x8c')][_0x91b2('0x128')](db[_0x91b2('0x143')],{});db['Schedule'][_0x91b2('0x128')](db[_0x91b2('0x9d')],{'foreignKey':_0x91b2('0x1af')});db[_0x91b2('0x8c')][_0x91b2('0x128')](db['AnalyticCustomReport'],{'foreignKey':_0x91b2('0x1b0')});db['Sound'][_0x91b2('0x12a')](db[_0x91b2('0x1b')],{'as':_0x91b2('0x1b1'),'through':'moh_has_sounds','onDelete':_0x91b2('0x175')});db[_0x91b2('0x90')][_0x91b2('0x12a')](db['CmContact'],{'through':_0x91b2('0x19c')});db[_0x91b2('0x90')][_0x91b2('0x12a')](db[_0x91b2('0x122')],{'through':'chat_interaction_has_tags'});db[_0x91b2('0x90')][_0x91b2('0x12a')](db[_0x91b2('0x47')],{'through':_0x91b2('0x16d')});db[_0x91b2('0x90')]['belongsToMany'](db[_0x91b2('0x5c')],{'through':'sms_interaction_has_tags'});db[_0x91b2('0x90')][_0x91b2('0x12a')](db['FaxInteraction'],{'through':'fax_interaction_has_tags'});db[_0x91b2('0x90')][_0x91b2('0x12a')](db[_0x91b2('0x61')],{'through':_0x91b2('0x18c')});db['Tag'][_0x91b2('0x12a')](db[_0x91b2('0x10b')],{'through':_0x91b2('0x1b2')});db[_0x91b2('0x94')][_0x91b2('0x117')](db[_0x91b2('0x85')],{'as':{'plural':_0x91b2('0x1b3'),'singular':'AllCondition'},'foreignKey':_0x91b2('0x1b4'),'onDelete':_0x91b2('0x116'),'hooks':!![]});db[_0x91b2('0x94')][_0x91b2('0x117')](db['Condition'],{'as':{'plural':_0x91b2('0x1b5'),'singular':_0x91b2('0x1b6')},'foreignKey':_0x91b2('0x1b7'),'onDelete':_0x91b2('0x116'),'hooks':!![]});db['Trigger'][_0x91b2('0x117')](db[_0x91b2('0x1a6')],{'as':'Actions','foreignKey':_0x91b2('0x1b8'),'onDelete':_0x91b2('0x116'),'hooks':!![]});db[_0x91b2('0x9b')][_0x91b2('0x117')](db[_0x91b2('0x1b9')],{'as':_0x91b2('0x1ba'),'onDelete':'cascade','foreignKey':_0x91b2('0x1b0'),'hooks':!![]});db['AnalyticDefaultReport'][_0x91b2('0x117')](db['AnalyticFieldReport'],{'as':_0x91b2('0x1ba'),'onDelete':'cascade','foreignKey':_0x91b2('0x1af')});db[_0x91b2('0x1bb')][_0x91b2('0x117')](db['AnalyticFieldReport'],{'as':_0x91b2('0x1ba'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1bc')});db[_0x91b2('0x1b9')][_0x91b2('0x128')](db[_0x91b2('0x1bb')],{'foreignKey':_0x91b2('0x1bc')});db['SalesforceAccount'][_0x91b2('0x117')](db[_0x91b2('0xa5')],{'as':_0x91b2('0x1bd'),'onDelete':'cascade','foreignKey':_0x91b2('0x1be')});db[_0x91b2('0xa5')][_0x91b2('0x117')](db[_0x91b2('0xa7')],{'as':'Subjects','onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1bf')});db[_0x91b2('0xa5')][_0x91b2('0x117')](db['SalesforceField'],{'as':_0x91b2('0x1c0'),'onDelete':'cascade','foreignKey':'DescriptionId'});db['SalesforceConfiguration'][_0x91b2('0x117')](db[_0x91b2('0xa7')],{'as':_0x91b2('0x1ba'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1c1')});db[_0x91b2('0xa5')][_0x91b2('0x128')](db[_0x91b2('0xa3')],{'as':'Account','foreignKey':_0x91b2('0x1be')});db[_0x91b2('0xa7')][_0x91b2('0x117')](db[_0x91b2('0xa7')],{'as':_0x91b2('0x1c2'),'foreignKey':'SubjectId'});db[_0x91b2('0xa7')][_0x91b2('0x117')](db[_0x91b2('0xa7')],{'as':_0x91b2('0x1c3'),'foreignKey':_0x91b2('0x1c4')});db[_0x91b2('0xa7')][_0x91b2('0x117')](db[_0x91b2('0xa7')],{'as':_0x91b2('0x1c5'),'foreignKey':_0x91b2('0x1c1')});db['SalesforceField']['belongsTo'](db[_0x91b2('0x96')],{'as':_0x91b2('0x96'),'foreignKey':_0x91b2('0x1c6')});db[_0x91b2('0x1c7')]['hasMany'](db[_0x91b2('0xaa')],{'as':_0x91b2('0x1bd'),'onDelete':_0x91b2('0x116'),'foreignKey':'AccountId'});db[_0x91b2('0xaa')]['hasMany'](db[_0x91b2('0xab')],{'as':_0x91b2('0x1c8'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1bf')});db['SugarcrmConfiguration']['hasMany'](db[_0x91b2('0xab')],{'as':'Descriptions','onDelete':_0x91b2('0x116'),'foreignKey':'DescriptionId'});db[_0x91b2('0xaa')][_0x91b2('0x117')](db[_0x91b2('0xab')],{'as':'Fields','onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1c1')});db['SugarcrmConfiguration'][_0x91b2('0x128')](db[_0x91b2('0x1c7')],{'as':_0x91b2('0x17f'),'foreignKey':_0x91b2('0x1be')});db[_0x91b2('0xab')][_0x91b2('0x117')](db[_0x91b2('0xab')],{'as':_0x91b2('0x1c2'),'foreignKey':_0x91b2('0x1bf')});db[_0x91b2('0xab')]['hasMany'](db[_0x91b2('0xab')],{'as':_0x91b2('0x1c3'),'foreignKey':_0x91b2('0x1c4')});db['SugarcrmField'][_0x91b2('0x117')](db[_0x91b2('0xab')],{'as':_0x91b2('0x1c5'),'foreignKey':_0x91b2('0x1c1')});db[_0x91b2('0xab')][_0x91b2('0x128')](db[_0x91b2('0x96')],{'as':_0x91b2('0x96'),'foreignKey':'VariableId'});db[_0x91b2('0x1c9')][_0x91b2('0x117')](db[_0x91b2('0xae')],{'as':_0x91b2('0x1bd'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1be')});db[_0x91b2('0xae')][_0x91b2('0x117')](db[_0x91b2('0xb0')],{'as':_0x91b2('0x1c8'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1bf')});db['DeskConfiguration'][_0x91b2('0x117')](db[_0x91b2('0xb0')],{'as':_0x91b2('0x1c0'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1c4')});db[_0x91b2('0xae')][_0x91b2('0x117')](db['DeskField'],{'as':_0x91b2('0x1ba'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1c1')});db[_0x91b2('0xae')][_0x91b2('0x128')](db[_0x91b2('0x1c9')],{'as':_0x91b2('0x17f'),'foreignKey':'AccountId'});db[_0x91b2('0xae')][_0x91b2('0x12a')](db[_0x91b2('0x90')],{'through':_0x91b2('0x1ca')});db[_0x91b2('0xb0')]['hasMany'](db[_0x91b2('0xb0')],{'as':_0x91b2('0x1c2'),'foreignKey':_0x91b2('0x1bf')});db['DeskField'][_0x91b2('0x117')](db[_0x91b2('0xb0')],{'as':'Description','foreignKey':_0x91b2('0x1c4')});db[_0x91b2('0xb0')][_0x91b2('0x117')](db[_0x91b2('0xb0')],{'as':_0x91b2('0x1c5'),'foreignKey':_0x91b2('0x1c1')});db[_0x91b2('0xb0')][_0x91b2('0x128')](db[_0x91b2('0x96')],{'as':_0x91b2('0x96'),'foreignKey':'VariableId'});db[_0x91b2('0xb2')][_0x91b2('0x117')](db[_0x91b2('0xb4')],{'as':_0x91b2('0x1bd'),'onDelete':'cascade','foreignKey':_0x91b2('0x1be')});db[_0x91b2('0xb4')]['hasMany'](db['ZohoField'],{'as':_0x91b2('0x1c8'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1bf')});db[_0x91b2('0xb4')][_0x91b2('0x117')](db[_0x91b2('0x1cb')],{'as':_0x91b2('0x1c0'),'onDelete':_0x91b2('0x116'),'foreignKey':'DescriptionId'});db[_0x91b2('0xb4')][_0x91b2('0x117')](db[_0x91b2('0x1cb')],{'as':_0x91b2('0x1ba'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1c1')});db['ZohoConfiguration']['belongsTo'](db[_0x91b2('0xb2')],{'as':_0x91b2('0x17f'),'foreignKey':_0x91b2('0x1be')});db[_0x91b2('0x1cb')][_0x91b2('0x117')](db[_0x91b2('0x1cb')],{'as':_0x91b2('0x1c2'),'foreignKey':_0x91b2('0x1bf')});db[_0x91b2('0x1cb')][_0x91b2('0x117')](db[_0x91b2('0x1cb')],{'as':_0x91b2('0x1c3'),'foreignKey':_0x91b2('0x1c4')});db[_0x91b2('0x1cb')][_0x91b2('0x117')](db[_0x91b2('0x1cb')],{'as':_0x91b2('0x1c5'),'foreignKey':_0x91b2('0x1c1')});db[_0x91b2('0x1cb')][_0x91b2('0x128')](db['Variable'],{'as':_0x91b2('0x96'),'foreignKey':_0x91b2('0x1c6')});db[_0x91b2('0xb7')]['hasMany'](db[_0x91b2('0xb8')],{'as':_0x91b2('0x1bd'),'onDelete':_0x91b2('0x116'),'foreignKey':'AccountId'});db[_0x91b2('0xb8')][_0x91b2('0x117')](db[_0x91b2('0xba')],{'as':_0x91b2('0x1c8'),'foreignKey':_0x91b2('0x1bf')});db['ZendeskConfiguration']['hasMany'](db['ZendeskField'],{'as':_0x91b2('0x1c0'),'foreignKey':'DescriptionId'});db[_0x91b2('0xb8')][_0x91b2('0x117')](db[_0x91b2('0xba')],{'as':_0x91b2('0x1ba'),'foreignKey':_0x91b2('0x1c1')});db[_0x91b2('0xb8')]['belongsTo'](db[_0x91b2('0xb7')],{'as':_0x91b2('0x17f'),'foreignKey':_0x91b2('0x1be')});db[_0x91b2('0xb8')][_0x91b2('0x12a')](db[_0x91b2('0x90')],{'through':'int_zendesk_configuration_has_tags'});db[_0x91b2('0xba')][_0x91b2('0x117')](db[_0x91b2('0xba')],{'as':_0x91b2('0x1c2'),'foreignKey':_0x91b2('0x1bf')});db['ZendeskField']['hasMany'](db[_0x91b2('0xba')],{'as':_0x91b2('0x1c3'),'foreignKey':'DescriptionId'});db['ZendeskField'][_0x91b2('0x117')](db[_0x91b2('0xba')],{'as':_0x91b2('0x1c5'),'foreignKey':_0x91b2('0x1c1')});db[_0x91b2('0xba')]['belongsTo'](db[_0x91b2('0x96')],{'as':_0x91b2('0x96'),'foreignKey':_0x91b2('0x1c6')});db['FreshdeskAccount'][_0x91b2('0x117')](db[_0x91b2('0x1cc')],{'as':'Configurations','onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1be')});db[_0x91b2('0x1cc')]['hasMany'](db['FreshdeskField'],{'as':_0x91b2('0x1c8'),'onDelete':_0x91b2('0x116'),'foreignKey':'SubjectId'});db[_0x91b2('0x1cc')][_0x91b2('0x117')](db[_0x91b2('0xbe')],{'as':'Descriptions','onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1c4')});db[_0x91b2('0x1cc')][_0x91b2('0x117')](db['FreshdeskField'],{'as':'Fields','onDelete':_0x91b2('0x116'),'foreignKey':'FieldId'});db[_0x91b2('0x1cc')][_0x91b2('0x128')](db[_0x91b2('0xbc')],{'as':_0x91b2('0x17f'),'foreignKey':'AccountId'});db[_0x91b2('0x1cc')][_0x91b2('0x12a')](db[_0x91b2('0x90')],{'through':_0x91b2('0x1cd')});db[_0x91b2('0xbe')][_0x91b2('0x117')](db['FreshdeskField'],{'as':_0x91b2('0x1c2'),'foreignKey':_0x91b2('0x1bf')});db[_0x91b2('0xbe')][_0x91b2('0x117')](db[_0x91b2('0xbe')],{'as':_0x91b2('0x1c3'),'foreignKey':'DescriptionId'});db[_0x91b2('0xbe')][_0x91b2('0x117')](db['FreshdeskField'],{'as':'Field','foreignKey':_0x91b2('0x1c1')});db[_0x91b2('0xbe')][_0x91b2('0x128')](db['Variable'],{'as':_0x91b2('0x96'),'foreignKey':_0x91b2('0x1c6')});db[_0x91b2('0x1ce')]['hasMany'](db[_0x91b2('0xc0')],{'as':_0x91b2('0x1bd'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1be')});db[_0x91b2('0xc0')][_0x91b2('0x117')](db[_0x91b2('0xc2')],{'as':'Subjects','foreignKey':_0x91b2('0x1bf')});db[_0x91b2('0xc0')][_0x91b2('0x117')](db[_0x91b2('0xc2')],{'as':'Descriptions','foreignKey':_0x91b2('0x1c4')});db[_0x91b2('0xc0')][_0x91b2('0x117')](db[_0x91b2('0xc2')],{'as':_0x91b2('0x1ba'),'foreignKey':_0x91b2('0x1c1')});db['VtigerConfiguration'][_0x91b2('0x128')](db['VtigerAccount'],{'as':_0x91b2('0x17f'),'foreignKey':_0x91b2('0x1be')});db[_0x91b2('0xc2')][_0x91b2('0x117')](db[_0x91b2('0xc2')],{'as':'Subject','foreignKey':_0x91b2('0x1bf')});db[_0x91b2('0xc2')][_0x91b2('0x117')](db[_0x91b2('0xc2')],{'as':_0x91b2('0x1c3'),'foreignKey':_0x91b2('0x1c4')});db[_0x91b2('0xc2')][_0x91b2('0x117')](db[_0x91b2('0xc2')],{'as':'Field','foreignKey':_0x91b2('0x1c1')});db['VtigerField']['belongsTo'](db[_0x91b2('0x96')],{'as':'Variable','foreignKey':_0x91b2('0x1c6')});db[_0x91b2('0x1cf')][_0x91b2('0x117')](db['ServicenowConfiguration'],{'as':'Configurations','onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1be')});db[_0x91b2('0xc5')]['hasMany'](db[_0x91b2('0xc7')],{'as':'Subjects','foreignKey':'SubjectId'});db[_0x91b2('0xc5')]['hasMany'](db[_0x91b2('0xc7')],{'as':'Descriptions','foreignKey':'DescriptionId'});db[_0x91b2('0xc5')][_0x91b2('0x117')](db[_0x91b2('0xc7')],{'as':_0x91b2('0x1ba'),'foreignKey':'FieldId'});db[_0x91b2('0xc5')]['belongsTo'](db['ServicenowAccount'],{'as':'Account','foreignKey':_0x91b2('0x1be')});db['ServicenowField'][_0x91b2('0x117')](db[_0x91b2('0xc7')],{'as':_0x91b2('0x1c2'),'foreignKey':'SubjectId'});db[_0x91b2('0xc7')][_0x91b2('0x117')](db[_0x91b2('0xc7')],{'as':'Description','foreignKey':_0x91b2('0x1c4')});db[_0x91b2('0xc7')][_0x91b2('0x117')](db[_0x91b2('0xc7')],{'as':_0x91b2('0x1c5'),'foreignKey':_0x91b2('0x1c1')});db[_0x91b2('0xc7')][_0x91b2('0x128')](db['Variable'],{'as':_0x91b2('0x96'),'foreignKey':_0x91b2('0x1c6')});db[_0x91b2('0xc9')][_0x91b2('0x117')](db[_0x91b2('0x1d0')],{'as':_0x91b2('0x1bd'),'onDelete':_0x91b2('0x116'),'foreignKey':'AccountId'});db[_0x91b2('0x1d0')][_0x91b2('0x117')](db[_0x91b2('0x1d1')],{'as':_0x91b2('0x1c8'),'onDelete':_0x91b2('0x116'),'foreignKey':'SubjectId'});db[_0x91b2('0x1d0')][_0x91b2('0x117')](db[_0x91b2('0x1d1')],{'as':'Descriptions','onDelete':'cascade','foreignKey':'DescriptionId'});db['Dynamics365Configuration']['hasMany'](db['Dynamics365Field'],{'as':'Fields','onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1c1')});db[_0x91b2('0x1d0')][_0x91b2('0x128')](db[_0x91b2('0xc9')],{'as':_0x91b2('0x17f'),'foreignKey':'AccountId'});db[_0x91b2('0x1d1')][_0x91b2('0x117')](db[_0x91b2('0x1d1')],{'as':'Subject','foreignKey':_0x91b2('0x1bf')});db[_0x91b2('0x1d1')][_0x91b2('0x117')](db[_0x91b2('0x1d1')],{'as':_0x91b2('0x1c3'),'foreignKey':_0x91b2('0x1c4')});db['Dynamics365Field'][_0x91b2('0x117')](db[_0x91b2('0x1d1')],{'as':_0x91b2('0x1c5'),'foreignKey':_0x91b2('0x1c1')});db[_0x91b2('0x1d1')]['belongsTo'](db[_0x91b2('0x96')],{'as':_0x91b2('0x96'),'foreignKey':_0x91b2('0x1c6')});db[_0x91b2('0xcd')][_0x91b2('0x117')](db[_0x91b2('0xcf')],{'as':_0x91b2('0x1bd'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1be')});db[_0x91b2('0xcf')][_0x91b2('0x117')](db['FreshsalesField'],{'as':_0x91b2('0x1c8'),'foreignKey':'SubjectId'});db[_0x91b2('0xcf')][_0x91b2('0x117')](db[_0x91b2('0xd1')],{'as':'Descriptions','foreignKey':_0x91b2('0x1c4')});db['FreshsalesConfiguration']['hasMany'](db['FreshsalesField'],{'as':_0x91b2('0x1ba'),'foreignKey':_0x91b2('0x1c1')});db[_0x91b2('0xcf')][_0x91b2('0x128')](db[_0x91b2('0xcd')],{'as':_0x91b2('0x17f'),'foreignKey':_0x91b2('0x1be')});db[_0x91b2('0xd1')][_0x91b2('0x117')](db[_0x91b2('0xd1')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x91b2('0xd1')]['hasMany'](db[_0x91b2('0xd1')],{'as':_0x91b2('0x1c3'),'foreignKey':'DescriptionId'});db['FreshsalesField'][_0x91b2('0x117')](db[_0x91b2('0xd1')],{'as':_0x91b2('0x1c5'),'foreignKey':_0x91b2('0x1c1')});db[_0x91b2('0xd1')][_0x91b2('0x128')](db['Variable'],{'as':_0x91b2('0x96'),'foreignKey':_0x91b2('0x1c6')});db['ChatQueueReport'][_0x91b2('0x128')](db[_0x91b2('0x67')],{});db[_0x91b2('0xd5')]['belongsTo'](db['CmList'],{'as':_0x91b2('0x169'),'foreignKey':'ListId'});db[_0x91b2('0xd5')][_0x91b2('0x128')](db[_0x91b2('0x78')],{'as':_0x91b2('0x164'),'foreignKey':_0x91b2('0x182')});db[_0x91b2('0xd5')][_0x91b2('0x128')](db[_0x91b2('0x122')],{});db[_0x91b2('0xd5')]['belongsTo'](db[_0x91b2('0x6d')],{});db[_0x91b2('0xd5')][_0x91b2('0x128')](db['User'],{});db[_0x91b2('0xd5')]['belongsTo'](db['ChatQueue'],{});db[_0x91b2('0xd7')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'onDelete':'cascade','foreignKey':_0x91b2('0x1d2')});db['ChatInternalMessage'][_0x91b2('0x128')](db[_0x91b2('0x13')],{'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x1d3')});db[_0x91b2('0xdd')]['hasMany'](db[_0x91b2('0xdb')],{'foreignKey':_0x91b2('0x1d4'),'onDelete':_0x91b2('0x116')});db[_0x91b2('0xdd')][_0x91b2('0x117')](db[_0x91b2('0xd9')],{'foreignKey':_0x91b2('0x1d4'),'onDelete':_0x91b2('0x116')});db[_0x91b2('0x1d5')][_0x91b2('0x128')](db[_0x91b2('0x58')],{});db[_0x91b2('0x1d5')][_0x91b2('0x128')](db[_0x91b2('0xfb')],{'as':_0x91b2('0x169'),'foreignKey':_0x91b2('0x16a')});db[_0x91b2('0x1d5')][_0x91b2('0x128')](db[_0x91b2('0x78')],{'as':_0x91b2('0x164'),'foreignKey':_0x91b2('0x182')});db[_0x91b2('0x1d5')][_0x91b2('0x128')](db[_0x91b2('0x5c')],{});db[_0x91b2('0x1d5')][_0x91b2('0x128')](db[_0x91b2('0x183')],{});db[_0x91b2('0x1d5')][_0x91b2('0x128')](db[_0x91b2('0x13')],{});db[_0x91b2('0x1d5')][_0x91b2('0x128')](db['SmsQueue'],{});db['JscriptyProject']['hasMany'](db[_0x91b2('0xdd')],{'foreignKey':_0x91b2('0x1d6')});db[_0x91b2('0xe3')][_0x91b2('0x117')](db[_0x91b2('0xdb')],{'foreignKey':_0x91b2('0x1d6')});db[_0x91b2('0xe3')][_0x91b2('0x117')](db[_0x91b2('0xd9')],{'foreignKey':'ProjectId'});db[_0x91b2('0x149')][_0x91b2('0x12a')](db[_0x91b2('0x13')],{'as':_0x91b2('0x170'),'through':_0x91b2('0x1d7')});db['Team'][_0x91b2('0x12a')](db[_0x91b2('0x13')],{'as':_0x91b2('0x15a'),'through':_0x91b2('0x130')});db['Team'][_0x91b2('0x12a')](db['VoiceQueue'],{'through':_0x91b2('0x113'),'as':_0x91b2('0x136')});db[_0x91b2('0xeb')][_0x91b2('0x12a')](db[_0x91b2('0x44')],{'through':_0x91b2('0x1d8'),'as':_0x91b2('0x137')});db[_0x91b2('0xeb')][_0x91b2('0x12a')](db[_0x91b2('0x71')],{'through':'team_has_chat_queues','as':_0x91b2('0x138')});db[_0x91b2('0xeb')][_0x91b2('0x12a')](db['FaxQueue'],{'through':_0x91b2('0x1d9'),'as':_0x91b2('0x139')});db[_0x91b2('0xeb')]['belongsToMany'](db[_0x91b2('0x13a')],{'through':'team_has_sms_queues','as':'SmsQueues'});db[_0x91b2('0xeb')][_0x91b2('0x12a')](db[_0x91b2('0x65')],{'through':_0x91b2('0x18d'),'as':_0x91b2('0x13c')});db[_0x91b2('0xeb')][_0x91b2('0x12a')](db[_0x91b2('0x13d')],{'through':'team_has_whatsapp_queues','as':_0x91b2('0x1da')});db[_0x91b2('0xee')][_0x91b2('0x117')](db[_0x91b2('0x7a')],{'as':'Hoppers','foreignKey':'CampaignId'});db['Campaign'][_0x91b2('0x117')](db['CmHopperFinal'],{'as':_0x91b2('0x11e'),'foreignKey':_0x91b2('0x19e')});db['Campaign'][_0x91b2('0x117')](db[_0x91b2('0x7d')],{'as':_0x91b2('0x151'),'foreignKey':'CampaignId'});db[_0x91b2('0xee')][_0x91b2('0x117')](db[_0x91b2('0x7b')],{'as':_0x91b2('0x152'),'foreignKey':'CampaignId'});db[_0x91b2('0xee')][_0x91b2('0x128')](db[_0x91b2('0x17c')],{'as':_0x91b2('0x17c'),'foreignKey':_0x91b2('0x153')});db['Campaign'][_0x91b2('0x128')](db[_0x91b2('0x17c')],{'as':_0x91b2('0x154'),'foreignKey':_0x91b2('0x155')});db[_0x91b2('0xee')][_0x91b2('0x128')](db['Interval'],{'as':'Interval','foreignKey':'IntervalId'});db[_0x91b2('0xee')]['belongsTo'](db[_0x91b2('0x149')],{'as':_0x91b2('0x149'),'foreignKey':_0x91b2('0x1db')});db[_0x91b2('0xee')][_0x91b2('0x12a')](db['CmList'],{'as':_0x91b2('0x12e'),'through':_0x91b2('0x1dc')});db['Campaign'][_0x91b2('0x12a')](db['CmList'],{'as':_0x91b2('0x15c'),'through':_0x91b2('0x1dd')});db[_0x91b2('0xf2')]['belongsTo'](db[_0x91b2('0x6f')],{'as':_0x91b2('0x6f'),'foreignKey':'ChatOfflineMessageId'});db[_0x91b2('0xf5')][_0x91b2('0x128')](db[_0x91b2('0x49')],{});db[_0x91b2('0xf5')][_0x91b2('0x128')](db['MailInteraction'],{});db[_0x91b2('0xf5')]['belongsTo'](db[_0x91b2('0x143')],{'foreignKey':_0x91b2('0x1de'),'as':'FromAccount'});db[_0x91b2('0xf5')]['belongsTo'](db[_0x91b2('0x13')],{'foreignKey':_0x91b2('0x1df'),'as':_0x91b2('0x1e0')});db[_0x91b2('0xf5')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'foreignKey':'ToUserId','as':_0x91b2('0x1e1')});db['MailTransferReport']['belongsTo'](db['MailQueue'],{'foreignKey':_0x91b2('0x1e2'),'as':_0x91b2('0x1e3')});db[_0x91b2('0xf5')][_0x91b2('0x128')](db['MailAccount'],{'foreignKey':_0x91b2('0x1e4'),'as':'ToAccount'});db[_0x91b2('0xf6')][_0x91b2('0x128')](db[_0x91b2('0x6d')],{});db[_0x91b2('0xf6')][_0x91b2('0x128')](db[_0x91b2('0x122')],{});db[_0x91b2('0xf6')]['belongsTo'](db[_0x91b2('0x67')],{'foreignKey':'FromChatWebsiteId','as':'FromAccount'});db[_0x91b2('0xf6')]['belongsTo'](db[_0x91b2('0x13')],{'foreignKey':_0x91b2('0x1df'),'as':'FromAgent'});db['ChatTransferReport'][_0x91b2('0x128')](db['User'],{'foreignKey':_0x91b2('0x1e5'),'as':_0x91b2('0x1e1')});db['ChatTransferReport']['belongsTo'](db[_0x91b2('0x71')],{'foreignKey':_0x91b2('0x1e6'),'as':_0x91b2('0x1e3')});db['ChatTransferReport'][_0x91b2('0x128')](db[_0x91b2('0x67')],{'foreignKey':'ToChatWebsiteId','as':_0x91b2('0x1e7')});db[_0x91b2('0xf8')][_0x91b2('0x128')](db['FaxMessage'],{});db['FaxTransferReport'][_0x91b2('0x128')](db[_0x91b2('0x52')],{});db[_0x91b2('0xf8')][_0x91b2('0x128')](db[_0x91b2('0x4e')],{'foreignKey':_0x91b2('0x1e8'),'as':_0x91b2('0x1e9')});db[_0x91b2('0xf8')]['belongsTo'](db[_0x91b2('0x13')],{'foreignKey':'FromUserId','as':_0x91b2('0x1e0')});db['FaxTransferReport'][_0x91b2('0x128')](db['User'],{'foreignKey':_0x91b2('0x1e5'),'as':'ToAgent'});db[_0x91b2('0xf8')][_0x91b2('0x128')](db[_0x91b2('0x55')],{'foreignKey':'ToFaxQueueId','as':_0x91b2('0x1e3')});db[_0x91b2('0xf8')]['belongsTo'](db['FaxAccount'],{'foreignKey':_0x91b2('0x1ea'),'as':'ToAccount'});db[_0x91b2('0x1eb')][_0x91b2('0x128')](db[_0x91b2('0x63')],{});db[_0x91b2('0x1eb')][_0x91b2('0x128')](db[_0x91b2('0x61')],{});db['OpenchannelTransferReport'][_0x91b2('0x128')](db[_0x91b2('0x5f')],{'foreignKey':'FromOpenchannelAccountId','as':'FromAccount'});db[_0x91b2('0x1eb')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'foreignKey':_0x91b2('0x1df'),'as':_0x91b2('0x1e0')});db[_0x91b2('0x1eb')]['belongsTo'](db[_0x91b2('0x13')],{'foreignKey':'ToUserId','as':_0x91b2('0x1e1')});db[_0x91b2('0x1eb')][_0x91b2('0x128')](db[_0x91b2('0x65')],{'foreignKey':_0x91b2('0x1ec'),'as':_0x91b2('0x1e3')});db[_0x91b2('0x1eb')][_0x91b2('0x128')](db['OpenchannelAccount'],{'foreignKey':_0x91b2('0x1ed'),'as':_0x91b2('0x1e7')});db[_0x91b2('0xf9')][_0x91b2('0x128')](db[_0x91b2('0x183')],{});db['SmsTransferReport'][_0x91b2('0x128')](db[_0x91b2('0x5c')],{});db['SmsTransferReport']['belongsTo'](db[_0x91b2('0x58')],{'foreignKey':_0x91b2('0x1ee'),'as':_0x91b2('0x1e9')});db[_0x91b2('0xf9')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'foreignKey':_0x91b2('0x1df'),'as':'FromAgent'});db[_0x91b2('0xf9')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'foreignKey':_0x91b2('0x1e5'),'as':_0x91b2('0x1e1')});db[_0x91b2('0xf9')][_0x91b2('0x128')](db[_0x91b2('0x13a')],{'foreignKey':_0x91b2('0x1ef'),'as':'ToQueue'});db[_0x91b2('0xf9')]['belongsTo'](db[_0x91b2('0x58')],{'foreignKey':_0x91b2('0x1f0'),'as':_0x91b2('0x1e7')});db[_0x91b2('0xfb')][_0x91b2('0x117')](db[_0x91b2('0x83')],{'as':'Dispositions','foreignKey':'ListId','onDelete':_0x91b2('0x116')});db[_0x91b2('0xfb')][_0x91b2('0x117')](db[_0x91b2('0x1f1')],{'as':_0x91b2('0x1f2'),'foreignKey':'ListId'});db[_0x91b2('0xfb')][_0x91b2('0x117')](db[_0x91b2('0x78')],{'as':_0x91b2('0x12c'),'onDelete':_0x91b2('0x116'),'foreignKey':_0x91b2('0x16a')});db['CmList'][_0x91b2('0x117')](db[_0x91b2('0x11d')],{'as':'HopperFinals','foreignKey':_0x91b2('0x16a')});db[_0x91b2('0xfb')][_0x91b2('0x117')](db[_0x91b2('0x7d')],{'as':_0x91b2('0x11f'),'foreignKey':_0x91b2('0x16a')});db['CmList'][_0x91b2('0x117')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0x91b2('0x16a')});db[_0x91b2('0xfb')][_0x91b2('0x12a')](db[_0x91b2('0x1d')],{'as':_0x91b2('0x1f3'),'through':_0x91b2('0x159')});db['CmList'][_0x91b2('0x12a')](db['User'],{'as':'Agents','through':_0x91b2('0x12f')});db[_0x91b2('0xfd')][_0x91b2('0x117')](db[_0x91b2('0x19')],{'as':'Extensions','onDelete':_0x91b2('0x116')});db[_0x91b2('0xfd')][_0x91b2('0x12a')](db['User'],{'as':'Agents','through':_0x91b2('0x13f')});db['UserProfile'][_0x91b2('0x117')](db[_0x91b2('0x13')],{'as':_0x91b2('0x170'),'foreignKey':'userProfileId'});db[_0x91b2('0xff')][_0x91b2('0x117')](db['UserProfileSection'],{'as':_0x91b2('0x1f4'),'foreignKey':_0x91b2('0x129'),'onDelete':_0x91b2('0x116')});db[_0x91b2('0x101')]['hasMany'](db[_0x91b2('0x103')],{'as':_0x91b2('0x1f5'),'foreignKey':_0x91b2('0x1f6'),'onDelete':'cascade'});db[_0x91b2('0x107')][_0x91b2('0x117')](db['Disposition'],{'as':_0x91b2('0x165'),'foreignKey':_0x91b2('0x1f7'),'onDelete':'cascade'});db[_0x91b2('0x107')][_0x91b2('0x117')](db[_0x91b2('0x81')],{'as':_0x91b2('0x167'),'foreignKey':_0x91b2('0x1f7')});db[_0x91b2('0x107')]['hasMany'](db[_0x91b2('0x10c')],{'as':_0x91b2('0x15e'),'foreignKey':_0x91b2('0x1f7')});db[_0x91b2('0x107')][_0x91b2('0x117')](db[_0x91b2('0x10b')],{'as':_0x91b2('0x168')});db[_0x91b2('0x107')][_0x91b2('0x117')](db[_0x91b2('0x109')],{'as':_0x91b2('0x14c')});db[_0x91b2('0x107')][_0x91b2('0x128')](db[_0x91b2('0xfb')],{'as':_0x91b2('0x169'),'foreignKey':_0x91b2('0x16a')});db['WhatsappAccount'][_0x91b2('0x128')](db[_0x91b2('0x89')],{'as':_0x91b2('0x157'),'foreignKey':_0x91b2('0x158')});db['WhatsappAccount'][_0x91b2('0x12a')](db[_0x91b2('0x13')],{'as':'Agents','through':'user_has_whatsapp_accounts'});db[_0x91b2('0x109')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'onDelete':'restrict'});db['WhatsappApplication'][_0x91b2('0x128')](db['WhatsappQueue'],{'onDelete':_0x91b2('0x175')});db[_0x91b2('0x109')]['belongsTo'](db[_0x91b2('0x107')],{'onDelete':_0x91b2('0x175')});db[_0x91b2('0x109')]['belongsTo'](db[_0x91b2('0x87')],{'onDelete':_0x91b2('0x175'),'foreignKey':'IntervalId'});db[_0x91b2('0x109')]['belongsTo'](db['Tag'],{'onDelete':_0x91b2('0x175'),'foreignKey':_0x91b2('0x17d')});db[_0x91b2('0x10b')][_0x91b2('0x117')](db[_0x91b2('0x10c')],{'as':_0x91b2('0x15e'),'onDelete':'cascade','foreignKey':_0x91b2('0x1f8')});db[_0x91b2('0x10b')]['belongsTo'](db[_0x91b2('0x107')],{'as':_0x91b2('0x17f'),'foreignKey':_0x91b2('0x1f7')});db[_0x91b2('0x10b')]['belongsTo'](db[_0x91b2('0x78')],{'as':'Contact','foreignKey':_0x91b2('0x182')});db[_0x91b2('0x10b')]['belongsTo'](db[_0x91b2('0x13')],{'as':_0x91b2('0x16c'),'foreignKey':_0x91b2('0x119')});db['WhatsappInteraction']['belongsToMany'](db['Tag'],{'through':_0x91b2('0x1b2'),'as':_0x91b2('0x16e')});db[_0x91b2('0x10b')][_0x91b2('0x12a')](db['Tag'],{'through':'whatsapp_interaction_has_tags','as':_0x91b2('0x16f')});db['WhatsappInteraction']['belongsToMany'](db[_0x91b2('0x13')],{'as':_0x91b2('0x170'),'through':_0x91b2('0x135'),'foreignKey':_0x91b2('0x1f8')});db[_0x91b2('0x10c')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'as':_0x91b2('0x13')});db[_0x91b2('0x10c')][_0x91b2('0x128')](db['CmContact'],{'onDelete':_0x91b2('0x116'),'as':_0x91b2('0x164')});db[_0x91b2('0x10c')]['belongsTo'](db[_0x91b2('0x10b')],{'onDelete':_0x91b2('0x116'),'as':_0x91b2('0x173'),'foreignKey':_0x91b2('0x1f8')});db[_0x91b2('0x10c')][_0x91b2('0x128')](db[_0x91b2('0x107')],{'as':_0x91b2('0x17f'),'foreignKey':'WhatsappAccountId'});db[_0x91b2('0x1f9')]['belongsTo'](db[_0x91b2('0x107')],{});db[_0x91b2('0x1f9')][_0x91b2('0x128')](db[_0x91b2('0xfb')],{'as':_0x91b2('0x169'),'foreignKey':_0x91b2('0x16a')});db[_0x91b2('0x1f9')]['belongsTo'](db[_0x91b2('0x78')],{'as':_0x91b2('0x164'),'foreignKey':_0x91b2('0x182')});db[_0x91b2('0x1f9')][_0x91b2('0x128')](db[_0x91b2('0x10b')],{});db[_0x91b2('0x1f9')][_0x91b2('0x128')](db['WhatsappQueue'],{});db['WhatsappQueueReport'][_0x91b2('0x128')](db[_0x91b2('0x10c')],{});db[_0x91b2('0x1f9')][_0x91b2('0x128')](db[_0x91b2('0x13')],{});db['WhatsappTransferReport'][_0x91b2('0x128')](db[_0x91b2('0x10c')],{});db['WhatsappTransferReport'][_0x91b2('0x128')](db[_0x91b2('0x10b')],{});db[_0x91b2('0x10f')]['belongsTo'](db[_0x91b2('0x107')],{'foreignKey':_0x91b2('0x1fa'),'as':_0x91b2('0x1e9')});db[_0x91b2('0x10f')]['belongsTo'](db[_0x91b2('0x107')],{'foreignKey':_0x91b2('0x1fb'),'as':_0x91b2('0x1e7')});db[_0x91b2('0x10f')]['belongsTo'](db[_0x91b2('0x13d')],{'foreignKey':_0x91b2('0x1fc'),'as':_0x91b2('0x1e3')});db[_0x91b2('0x10f')][_0x91b2('0x128')](db['User'],{'foreignKey':_0x91b2('0x1df'),'as':_0x91b2('0x1e0')});db[_0x91b2('0x10f')][_0x91b2('0x128')](db[_0x91b2('0x13')],{'foreignKey':_0x91b2('0x1e5'),'as':'ToAgent'});db[_0x91b2('0x13d')][_0x91b2('0x12a')](db[_0x91b2('0x13')],{'as':'Agents','through':_0x91b2('0x3e'),'foreignKey':_0x91b2('0x1fd')});db[_0x91b2('0x13d')][_0x91b2('0x12a')](db[_0x91b2('0xeb')],{'through':_0x91b2('0x1fe'),'as':'Teams'});module[_0x91b2('0x1ff')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x2dae=['user_has_square_projects','SpiedAgents','ChanSpyId','VoiceContext','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperFinals','HopperBlacks','JscriptySessionReport','Trunk','TrunkBackup','TrunkBackupId','Interval','IntervalId','Pause','mandatoryDispositionPauseId','CmList','Lists','voice_queues_has_cm_lists','Agents','Teams','BlackLists','voice_queues_has_cm_blacklists','VoiceRecording','Messages','mailboxuser','mailbox','VoiceQueueReport','QueueCalls','uniqueid','AgentReports','Contact','MailAccountId','hasOne','Imap','Smtp','Disposition','Dispositions','Interactions','List','Template','TemplateId','mandatoryDispositionPause','team_has_mail_queues','MailInteractionId','Account','Owner','mail_interaction_has_tags','Tags','Attachment','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessageId','restrict','TagId','Items','FaxAccountId','Answers','FaxApplication','Exntensions','ContactId','fax_interaction_has_tags','ThroughTags','FaxInteractionId','AttachmentId','FaxQueueReport','ListId','SmsAccountId','SmsMessage','user_has_sms_accounts','SmsInteractionId','sms_interaction_has_tags','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','Users','team_has_openchannel_queues','ProactiveActions','ChatApplication','user_has_chat_websites','OpenchannelQueueReport','Agent','Queue','ChatQueueId','ChatInteractionId','chat_interaction_has_tags','ChatGroupId','Website','JscriptySessions','Company','CompanyId','cm_user_has_contacts','cm_contact_has_tags','CampaignId','All','OneAll','AutomationAllId','Automation','Any','OneAny','AutomationAnyId','Actions','Intervals','FaxApplications','Schedule','AnalyticDefaultReport','DefaultReportId','CustomReportId','Mohs','whatsapp_interaction_has_tags','AllCondition','AnyCondition','TriggerAnyId','TriggerId','Fields','MetricId','SalesforceConfiguration','Configurations','Subjects','SubjectId','Descriptions','FieldId','AccountId','Description','DescriptionId','Field','VariableId','int_desk_configuration_has_tags','ZohoAccount','ZendeskAccount','int_zendesk_configuration_has_tags','int_freshdesk_configuration_has_tags','VtigerAccount','ServicenowConfiguration','ServicenowField','Subject','FreshsalesAccount','ChatQueueReport','ChatInternalMessage','FromId','ToId','JscriptyQuestionReport','SessionId','ProjectId','user_has_teams','team_has_chat_queues','team_has_fax_queues','FaxQueues','WhatsappQueues','TeamVoicePrefix','HopperHistories','TrunkId','SquareProjectId','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToAgent','ToAccount','FromChatWebsiteId','ToChatQueueId','ToQueue','ToChatWebsiteId','FaxTransferReport','FromFaxAccountId','FromUserId','ToFaxQueueId','ToFaxAccountId','OpenchannelTransferReport','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','CustomFields','Queues','userProfileId','UserProfileSections','UserProfileResource','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','FromWhatsappAccountId','ToQueueId','WhatsappQueueId','exports','../config/environment','lodash','jstz','determine','sequelize','defaultsDeep','motion2','xcall','xC@LL1234','127.0.0.1','utf8mb4','name','utf8','utf8_general_ci','sequelizeHistory','mysql','database','username','password','options','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailQueue','../api/mailQueue/mailQueue.model','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','Dashboard','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','../api/faxQueueReport/faxQueueReport.model','SmsApplication','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsQueue','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','OpenchannelMessage','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/openchannelQueueReport/openchannelQueueReport.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','Action','../api/action/action.model','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','../api/interval/interval.model','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','Trigger','../api/trigger/trigger.model','Variable','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoConfiguration','ZohoField','../api/intZohoField/intZohoField.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowConfiguration/intServicenowConfiguration.model','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Integration','Network','../api/network/network.model','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','../api/squareReport/squareReport.model','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','../api/squareRecording/squareRecording.model','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','Campaign','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','../api/faxTransferReport/faxTransferReport.model','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','cascade','hasMany','Recordings','UserId','VoiceQueuesRt','Extensions','CmHopperHistory','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteractions','MailInteractions','WhatsappInteractions','SenderId','belongsTo','belongsToMany','chat_group_has_users','Contacts','MailInteraction','user_has_mail_interactions','user_has_chat_interactions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefix','VoicePrefixes','MailQueues','ChatQueues','OpenchannelQueues','ChatWebsites','FaxAccounts','user_has_fax_accounts','MailAccount','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccount','SmsAccounts','WhatsappAccount','WhatsappAccounts','user_has_whatsapp_accounts','SquareProjects'];(function(_0xef4cf0,_0x16c9c3){var _0x497ad2=function(_0xce63d4){while(--_0xce63d4){_0xef4cf0['push'](_0xef4cf0['shift']());}};_0x497ad2(++_0x16c9c3);}(_0x2dae,0xc3));var _0xe2da=function(_0x239dba,_0x309e95){_0x239dba=_0x239dba-0x0;var _0x1ceb11=_0x2dae[_0x239dba];return _0x1ceb11;};'use strict';var config=require(_0xe2da('0x0'));var Sequelize=require('sequelize');var _=require(_0xe2da('0x1'));var jstz=require(_0xe2da('0x2'));var timezone=jstz[_0xe2da('0x3')]();config[_0xe2da('0x4')]=_[_0xe2da('0x5')](config['sequelize'],{'database':_0xe2da('0x6'),'username':_0xe2da('0x7'),'password':_0xe2da('0x8'),'options':{'host':_0xe2da('0x9'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0xe2da('0xa')},'logging':![],'timezone':timezone[_0xe2da('0xb')](),'define':{'charset':_0xe2da('0xc'),'collate':_0xe2da('0xd')}}});config[_0xe2da('0xe')]=_[_0xe2da('0x5')](config[_0xe2da('0xe')],{'database':_0xe2da('0x6'),'username':_0xe2da('0x7'),'password':'xC@LL1234','options':{'host':_0xe2da('0x9'),'port':0xcea,'dialect':_0xe2da('0xf'),'dialectOptions':{'charset':_0xe2da('0xa')},'logging':![],'timezone':timezone[_0xe2da('0xb')](),'define':{'charset':_0xe2da('0xc'),'collate':_0xe2da('0xd')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xe2da('0x4')][_0xe2da('0x10')],config['sequelize'][_0xe2da('0x11')],config['sequelize'][_0xe2da('0x12')],config[_0xe2da('0x4')][_0xe2da('0x13')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xe2da('0xe')][_0xe2da('0x10')],config[_0xe2da('0xe')][_0xe2da('0x11')],config['sequelizeHistory'][_0xe2da('0x12')],config['sequelizeHistory']['options'])};db[_0xe2da('0x14')]=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/user/user.model');db[_0xe2da('0x16')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x17'));db['VoiceContext']=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x18'));db[_0xe2da('0x19')]=db[_0xe2da('0x4')]['import'](_0xe2da('0x1a'));db[_0xe2da('0x1b')]=db['sequelize'][_0xe2da('0x15')](_0xe2da('0x1c'));db[_0xe2da('0x1d')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x1e'));db['VoiceRecording']=db[_0xe2da('0x4')]['import'](_0xe2da('0x1f'));db[_0xe2da('0x20')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x21'));db[_0xe2da('0x22')]=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/voiceMail/voiceMail.model');db[_0xe2da('0x23')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x24'));db[_0xe2da('0x25')]=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/voiceCallReport/voiceCallReport.model');db[_0xe2da('0x26')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x27'));db[_0xe2da('0x28')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x29'));db['VoiceQueueReport']=db['sequelize']['import'](_0xe2da('0x2a'));db[_0xe2da('0x2b')]=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/memberReport/memberReport.model');db['Trunk']=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x2c'));db[_0xe2da('0x2d')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x2e'));db[_0xe2da('0x2f')]=db[_0xe2da('0x4')]['import']('../api/userVoiceQueueRt/userVoiceQueueRt.model');db[_0xe2da('0x30')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x31'));db[_0xe2da('0x32')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x33'));db[_0xe2da('0x34')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x35'));db[_0xe2da('0x36')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x37'));db[_0xe2da('0x38')]=db[_0xe2da('0x4')]['import'](_0xe2da('0x39'));db[_0xe2da('0x3a')]=db[_0xe2da('0x4')]['import'](_0xe2da('0x3b'));db[_0xe2da('0x3c')]=db[_0xe2da('0x4')]['import']('../api/userWhatsappQueue/userWhatsappQueue.model');db[_0xe2da('0x3d')]=db[_0xe2da('0x4')]['import'](_0xe2da('0x3e'));db[_0xe2da('0x3f')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x40'));db['MailAccount']=db[_0xe2da('0x4')]['import']('../api/mailAccount/mailAccount.model');db[_0xe2da('0x41')]=db['sequelize'][_0xe2da('0x15')](_0xe2da('0x42'));db['MailSubstatus']=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/mailSubstatus/mailSubstatus.model');db['MailInteraction']=db['sequelize'][_0xe2da('0x15')](_0xe2da('0x43'));db[_0xe2da('0x44')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x45'));db[_0xe2da('0x46')]=db['sequelize'][_0xe2da('0x15')](_0xe2da('0x47'));db[_0xe2da('0x48')]=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/mailQueueReport/mailQueueReport.model');db[_0xe2da('0x49')]=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/dashboard/dashboard.model');db[_0xe2da('0x4a')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x4b'));db[_0xe2da('0x4c')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x4d'));db['FaxApplication']=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x4e'));db[_0xe2da('0x4f')]=db[_0xe2da('0x4')]['import'](_0xe2da('0x50'));db[_0xe2da('0x51')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x52'));db[_0xe2da('0x53')]=db[_0xe2da('0x4')]['import'](_0xe2da('0x54'));db['FaxQueueReport']=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x55'));db['SmsAccount']=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/smsAccount/smsAccount.model');db[_0xe2da('0x56')]=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/smsApplication/smsApplication.model');db[_0xe2da('0x57')]=db['sequelize']['import'](_0xe2da('0x58'));db['SmsMessage']=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/smsMessage/smsMessage.model');db[_0xe2da('0x59')]=db[_0xe2da('0x4')]['import']('../api/smsQueue/smsQueue.model');db[_0xe2da('0x5a')]=db['sequelize'][_0xe2da('0x15')](_0xe2da('0x5b'));db[_0xe2da('0x5c')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x5d'));db[_0xe2da('0x5e')]=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/openchannelInteraction/openchannelInteraction.model');db[_0xe2da('0x5f')]=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/openchannelMessage/openchannelMessage.model');db[_0xe2da('0x60')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x61'));db[_0xe2da('0x62')]=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/chatWebsite/chatWebsite.model');db['OpenchannelQueueReport']=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x63'));db['ChatApplication']=db['sequelize'][_0xe2da('0x15')]('../api/chatApplication/chatApplication.model');db[_0xe2da('0x64')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x65'));db[_0xe2da('0x66')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x67'));db[_0xe2da('0x68')]=db['sequelize'][_0xe2da('0x15')](_0xe2da('0x69'));db[_0xe2da('0x6a')]=db[_0xe2da('0x4')]['import'](_0xe2da('0x6b'));db[_0xe2da('0x6c')]=db[_0xe2da('0x4')]['import'](_0xe2da('0x6d'));db[_0xe2da('0x6e')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x6f'));db[_0xe2da('0x70')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x71'));db[_0xe2da('0x72')]=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/cmContact/cmContact.model');db[_0xe2da('0x73')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x74'));db[_0xe2da('0x75')]=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/cmHopperBlack/cmHopperBlack.model');db[_0xe2da('0x76')]=db['sequelize'][_0xe2da('0x15')](_0xe2da('0x77'));db['CmHopperHistory']=db['sequelize'][_0xe2da('0x15')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0xe2da('0x78')]=db['sequelize'][_0xe2da('0x15')](_0xe2da('0x79'));db[_0xe2da('0x7a')]=db['sequelize']['import']('../api/cmCustomField/cmCustomField.model');db[_0xe2da('0x7b')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x7c'));db['Automation']=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x7d'));db[_0xe2da('0x7e')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x7f'));db['Disposition']=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x80'));db[_0xe2da('0x81')]=db[_0xe2da('0x4')]['import'](_0xe2da('0x82'));db['Interval']=db[_0xe2da('0x4')]['import'](_0xe2da('0x83'));db['Pause']=db['sequelize'][_0xe2da('0x15')](_0xe2da('0x84'));db[_0xe2da('0x85')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x86'));db[_0xe2da('0x87')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x88'));db['Schedule']=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x89'));db[_0xe2da('0x8a')]=db['sequelize'][_0xe2da('0x15')](_0xe2da('0x8b'));db[_0xe2da('0x8c')]=db[_0xe2da('0x4')]['import'](_0xe2da('0x8d'));db['Template']=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/template/template.model');db[_0xe2da('0x8e')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x8f'));db[_0xe2da('0x90')]=db['sequelize'][_0xe2da('0x15')]('../api/variable/variable.model');db['Integration']=db['sequelize']['import'](_0xe2da('0x91'));db[_0xe2da('0x92')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x93'));db[_0xe2da('0x94')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x95'));db['AnalyticDefaultReport']=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x96'));db[_0xe2da('0x97')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x98'));db[_0xe2da('0x99')]=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/analyticMetric/analyticMetric.model');db[_0xe2da('0x9a')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x9b'));db[_0xe2da('0x9c')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x9d'));db[_0xe2da('0x9e')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x9f'));db['SalesforceConfiguration']=db[_0xe2da('0x4')]['import'](_0xe2da('0xa0'));db[_0xe2da('0xa1')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xa2'));db[_0xe2da('0xa3')]=db[_0xe2da('0x4')]['import'](_0xe2da('0xa4'));db[_0xe2da('0xa5')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xa6'));db[_0xe2da('0xa7')]=db['sequelize'][_0xe2da('0x15')](_0xe2da('0xa8'));db[_0xe2da('0xa9')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xaa'));db[_0xe2da('0xab')]=db['sequelize'][_0xe2da('0x15')](_0xe2da('0xac'));db[_0xe2da('0xad')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xae'));db['ZohoAccount']=db[_0xe2da('0x4')]['import']('../api/intZohoAccount/intZohoAccount.model');db[_0xe2da('0xaf')]=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/intZohoConfiguration/intZohoConfiguration.model');db[_0xe2da('0xb0')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xb1'));db['ZendeskAccount']=db[_0xe2da('0x4')]['import']('../api/intZendeskAccount/intZendeskAccount.model');db[_0xe2da('0xb2')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xb3'));db[_0xe2da('0xb4')]=db[_0xe2da('0x4')]['import'](_0xe2da('0xb5'));db[_0xe2da('0xb6')]=db[_0xe2da('0x4')]['import'](_0xe2da('0xb7'));db[_0xe2da('0xb8')]=db[_0xe2da('0x4')]['import'](_0xe2da('0xb9'));db[_0xe2da('0xba')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xbb'));db['VtigerAccount']=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xbc'));db[_0xe2da('0xbd')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xbe'));db[_0xe2da('0xbf')]=db[_0xe2da('0x4')]['import'](_0xe2da('0xc0'));db[_0xe2da('0xc1')]=db['sequelize'][_0xe2da('0x15')]('../api/intServicenowAccount/intServicenowAccount.model');db['ServicenowConfiguration']=db['sequelize'][_0xe2da('0x15')](_0xe2da('0xc2'));db['ServicenowField']=db[_0xe2da('0x4')]['import'](_0xe2da('0xc3'));db[_0xe2da('0xc4')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xc5'));db[_0xe2da('0xc6')]=db[_0xe2da('0x4')]['import']('../api/intDynamics365Configuration/intDynamics365Configuration.model');db[_0xe2da('0xc7')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xc8'));db['FreshsalesAccount']=db[_0xe2da('0x4')]['import'](_0xe2da('0xc9'));db[_0xe2da('0xca')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xcb'));db[_0xe2da('0xcc')]=db['sequelize'][_0xe2da('0x15')](_0xe2da('0xcd'));db[_0xe2da('0xce')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x91'));db[_0xe2da('0xcf')]=db[_0xe2da('0x4')]['import'](_0xe2da('0xd0'));db['ChatQueueReport']=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/chatQueueReport/chatQueueReport.model');db['ChatInternalMessage']=db[_0xe2da('0x4')]['import'](_0xe2da('0xd1'));db[_0xe2da('0xd2')]=db[_0xe2da('0x4')]['import'](_0xe2da('0xd3'));db['JscriptyQuestionReport']=db['sequelize'][_0xe2da('0x15')](_0xe2da('0xd4'));db['JscriptySessionReport']=db[_0xe2da('0x4')]['import'](_0xe2da('0xd5'));db[_0xe2da('0xd6')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xd7'));db['SquareReport']=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xd8'));db['SquareDetailsReport']=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xd9'));db[_0xe2da('0xda')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xdb'));db[_0xe2da('0xdc')]=db['sequelize']['import'](_0xe2da('0xdd'));db['SquareOdbc']=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xde'));db[_0xe2da('0xdf')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xe0'));db['SquareRecording']=db[_0xe2da('0x4')]['import'](_0xe2da('0xe1'));db['SquareMessage']=db['sequelize'][_0xe2da('0x15')](_0xe2da('0xe2'));db[_0xe2da('0xe3')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xe4'));db[_0xe2da('0xe5')]=db['sequelize'][_0xe2da('0x15')](_0xe2da('0xe6'));db[_0xe2da('0xe7')]=db['sequelize'][_0xe2da('0x15')]('../api/campaign/campaign.model');db['Migration']=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/migration/migration.model');db['Attachment']=db[_0xe2da('0x4')]['import'](_0xe2da('0xe8'));db[_0xe2da('0xe9')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xea'));db[_0xe2da('0xeb')]=db['sequelize'][_0xe2da('0x15')](_0xe2da('0xec'));db[_0xe2da('0xed')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xee'));db['FaxTransferReport']=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xef'));db['OpenchannelTransferReport']=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xf0'));db[_0xe2da('0xf1')]=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/smsTransferReport/smsTransferReport.model');db['CmList']=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/cmList/cmList.model');db['VoicePrefix']=db[_0xe2da('0x4')]['import'](_0xe2da('0xf2'));db[_0xe2da('0xf3')]=db['sequelize'][_0xe2da('0x15')](_0xe2da('0xf4'));db[_0xe2da('0xf5')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xf6'));db['UserProfileResource']=db[_0xe2da('0x4')]['import'](_0xe2da('0xf7'));db[_0xe2da('0xf8')]=db[_0xe2da('0x4')]['import'](_0xe2da('0xf9'));db['WhatsappAccount']=db[_0xe2da('0x4')]['import']('../api/whatsappAccount/whatsappAccount.model');db[_0xe2da('0xfa')]=db['sequelize'][_0xe2da('0x15')](_0xe2da('0xfb'));db[_0xe2da('0xfc')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0xfd'));db[_0xe2da('0xfe')]=db['sequelize']['import'](_0xe2da('0xff'));db[_0xe2da('0x100')]=db[_0xe2da('0x4')][_0xe2da('0x15')](_0xe2da('0x101'));db[_0xe2da('0x102')]=db['sequelize']['import'](_0xe2da('0x103'));db[_0xe2da('0x104')]=db[_0xe2da('0x4')]['import'](_0xe2da('0x105'));db[_0xe2da('0x106')]=db[_0xe2da('0x4')][_0xe2da('0x15')]('../api/cloudProvider/cloudProvider.model');db[_0xe2da('0x107')]=db['sequelize']['import'](_0xe2da('0x108'));db['TeamVoicePrefix']=db['sequelize'][_0xe2da('0x15')](_0xe2da('0x109'));db[_0xe2da('0x10a')]=db[_0xe2da('0x4')]['import'](_0xe2da('0x10b'));db['User']['hasOne'](db['VoiceMail'],{'as':_0xe2da('0x22'),'onDelete':_0xe2da('0x10c'),'foreignKey':'UserId'});db[_0xe2da('0x14')][_0xe2da('0x10d')](db['VoiceRecording'],{'as':_0xe2da('0x10e'),'foreignKey':_0xe2da('0x10f')});db['User'][_0xe2da('0x10d')](db['UserVoiceQueueRt'],{'as':_0xe2da('0x110'),'foreignKey':_0xe2da('0x10f')});db['User']['hasMany'](db[_0xe2da('0x19')],{'as':_0xe2da('0x111'),'onDelete':_0xe2da('0x10c'),'hooks':!![]});db['User']['hasMany'](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':_0xe2da('0x10f')});db[_0xe2da('0x14')][_0xe2da('0x10d')](db[_0xe2da('0x112')],{'as':_0xe2da('0x113'),'foreignKey':_0xe2da('0x10f')});db[_0xe2da('0x14')][_0xe2da('0x10d')](db[_0xe2da('0x78')],{'as':_0xe2da('0x78'),'foreignKey':_0xe2da('0x10f')});db[_0xe2da('0x14')]['hasMany'](db[_0xe2da('0x5e')],{'as':_0xe2da('0x114'),'foreignKey':'UserId'});db[_0xe2da('0x14')][_0xe2da('0x10d')](db[_0xe2da('0x64')],{'as':_0xe2da('0x115'),'foreignKey':'UserId'});db[_0xe2da('0x14')][_0xe2da('0x10d')](db[_0xe2da('0x57')],{'as':_0xe2da('0x116'),'foreignKey':_0xe2da('0x10f')});db[_0xe2da('0x14')][_0xe2da('0x10d')](db[_0xe2da('0x4f')],{'as':_0xe2da('0x117'),'foreignKey':_0xe2da('0x10f')});db[_0xe2da('0x14')][_0xe2da('0x10d')](db['MailInteraction'],{'as':_0xe2da('0x118'),'foreignKey':_0xe2da('0x10f')});db[_0xe2da('0x14')]['hasMany'](db[_0xe2da('0xfc')],{'as':_0xe2da('0x119'),'foreignKey':_0xe2da('0x10f')});db[_0xe2da('0x14')][_0xe2da('0x10d')](db[_0xe2da('0xf8')],{'as':'UserNotifications','foreignKey':_0xe2da('0x11a')});db[_0xe2da('0x14')][_0xe2da('0x11b')](db[_0xe2da('0xf3')],{'as':_0xe2da('0xf3'),'foreignKey':'userProfileId'});db['User'][_0xe2da('0x11c')](db[_0xe2da('0x6c')],{'as':'Groups','through':_0xe2da('0x11d')});db[_0xe2da('0x14')][_0xe2da('0x11c')](db[_0xe2da('0x72')],{'as':_0xe2da('0x11e'),'through':'cm_user_has_contacts'});db[_0xe2da('0x14')][_0xe2da('0x11c')](db['CmList'],{'as':'Lists','through':'cm_user_has_lists'});db[_0xe2da('0x14')]['belongsToMany'](db['Team'],{'through':'user_has_teams'});db[_0xe2da('0x14')]['belongsToMany'](db[_0xe2da('0x11f')],{'as':_0xe2da('0x118'),'through':_0xe2da('0x120')});db[_0xe2da('0x14')]['belongsToMany'](db[_0xe2da('0x64')],{'as':_0xe2da('0x115'),'through':_0xe2da('0x121')});db[_0xe2da('0x14')][_0xe2da('0x11c')](db[_0xe2da('0x4f')],{'as':_0xe2da('0x117'),'through':_0xe2da('0x122')});db[_0xe2da('0x14')][_0xe2da('0x11c')](db[_0xe2da('0x57')],{'as':_0xe2da('0x116'),'through':_0xe2da('0x123')});db[_0xe2da('0x14')]['belongsToMany'](db[_0xe2da('0x5e')],{'as':'OpenchannelInteractions','through':_0xe2da('0x124')});db[_0xe2da('0x14')][_0xe2da('0x11c')](db['WhatsappInteraction'],{'as':_0xe2da('0x119'),'through':_0xe2da('0x125')});db[_0xe2da('0x14')][_0xe2da('0x11c')](db[_0xe2da('0x1d')],{'as':_0xe2da('0x126'),'through':'UserVoiceQueue','required':![]});db[_0xe2da('0x14')][_0xe2da('0x11c')](db[_0xe2da('0x127')],{'as':_0xe2da('0x128'),'through':_0xe2da('0x10a'),'required':![]});db[_0xe2da('0x14')]['belongsToMany'](db[_0xe2da('0x41')],{'as':_0xe2da('0x129'),'through':_0xe2da('0x34'),'required':![]});db['User'][_0xe2da('0x11c')](db['ChatQueue'],{'as':_0xe2da('0x12a'),'through':_0xe2da('0x32'),'required':![],'hooks':!![]});db[_0xe2da('0x14')][_0xe2da('0x11c')](db[_0xe2da('0x53')],{'as':'FaxQueues','through':_0xe2da('0x36'),'required':![]});db[_0xe2da('0x14')][_0xe2da('0x11c')](db[_0xe2da('0x59')],{'as':'SmsQueues','through':_0xe2da('0x38'),'required':![]});db[_0xe2da('0x14')]['belongsToMany'](db[_0xe2da('0x60')],{'as':_0xe2da('0x12b'),'through':_0xe2da('0x3a'),'required':![]});db[_0xe2da('0x14')][_0xe2da('0x11c')](db[_0xe2da('0x104')],{'as':'WhatsappQueues','through':_0xe2da('0x3c'),'required':![]});db[_0xe2da('0x14')]['belongsToMany'](db['CmList'],{'through':'cm_user_has_lists'});db['User']['belongsToMany'](db[_0xe2da('0x62')],{'as':_0xe2da('0x12c'),'through':'user_has_chat_websites'});db[_0xe2da('0x14')][_0xe2da('0x11c')](db[_0xe2da('0x4c')],{'as':_0xe2da('0x12d'),'through':_0xe2da('0x12e')});db[_0xe2da('0x14')][_0xe2da('0x11c')](db[_0xe2da('0x12f')],{'as':_0xe2da('0x130'),'through':_0xe2da('0x131')});db[_0xe2da('0x14')][_0xe2da('0x11c')](db[_0xe2da('0x5a')],{'as':_0xe2da('0x132'),'through':_0xe2da('0x133')});db['User']['belongsToMany'](db[_0xe2da('0x134')],{'as':_0xe2da('0x135'),'through':'user_has_sms_accounts'});db[_0xe2da('0x14')]['belongsToMany'](db[_0xe2da('0x136')],{'as':_0xe2da('0x137'),'through':_0xe2da('0x138')});db[_0xe2da('0x14')]['belongsToMany'](db[_0xe2da('0xdf')],{'as':_0xe2da('0x139'),'through':_0xe2da('0x13a')});db[_0xe2da('0x16')][_0xe2da('0x10d')](db[_0xe2da('0x19')],{'as':_0xe2da('0x13b'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x13c')});db[_0xe2da('0x13d')][_0xe2da('0x10d')](db[_0xe2da('0x19')],{'onDelete':_0xe2da('0x10c')});db['VoiceExtension']['hasMany'](db[_0xe2da('0x19')],{'as':_0xe2da('0x13e'),'onDelete':'cascade'});db[_0xe2da('0x1b')][_0xe2da('0x11c')](db[_0xe2da('0x8a')],{'as':_0xe2da('0x13f'),'through':_0xe2da('0x140')});db['VoiceQueue'][_0xe2da('0x10d')](db[_0xe2da('0x2f')],{'as':_0xe2da('0x141'),'foreignKey':_0xe2da('0x142')});db[_0xe2da('0x1d')][_0xe2da('0x10d')](db[_0xe2da('0x73')],{'as':_0xe2da('0x143'),'foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0xe2da('0x10d')](db[_0xe2da('0x76')],{'as':_0xe2da('0x144'),'foreignKey':_0xe2da('0x142')});db['VoiceQueue'][_0xe2da('0x10d')](db[_0xe2da('0x112')],{'as':'HopperHistories','foreignKey':_0xe2da('0x142')});db[_0xe2da('0x1d')][_0xe2da('0x10d')](db[_0xe2da('0x78')],{'as':_0xe2da('0x78'),'foreignKey':'VoiceQueueId'});db[_0xe2da('0x1d')][_0xe2da('0x10d')](db[_0xe2da('0x75')],{'as':_0xe2da('0x145'),'foreignKey':'VoiceQueueId'});db[_0xe2da('0x1d')][_0xe2da('0x10d')](db[_0xe2da('0x146')],{'as':'JscriptySessions','foreignKey':'VoiceQueueId'});db[_0xe2da('0x1d')][_0xe2da('0x11b')](db[_0xe2da('0x147')],{'as':_0xe2da('0x147'),'foreignKey':'TrunkId'});db[_0xe2da('0x1d')][_0xe2da('0x11b')](db[_0xe2da('0x147')],{'as':_0xe2da('0x148'),'foreignKey':_0xe2da('0x149')});db[_0xe2da('0x1d')][_0xe2da('0x11b')](db[_0xe2da('0x14a')],{'as':'Interval','foreignKey':_0xe2da('0x14b')});db[_0xe2da('0x1d')][_0xe2da('0x11b')](db[_0xe2da('0x14c')],{'as':'mandatoryDispositionPause','foreignKey':_0xe2da('0x14d')});db[_0xe2da('0x1d')][_0xe2da('0x11c')](db[_0xe2da('0x14e')],{'as':_0xe2da('0x14f'),'through':_0xe2da('0x150')});db[_0xe2da('0x1d')][_0xe2da('0x11c')](db[_0xe2da('0x14')],{'as':_0xe2da('0x151'),'through':'UserVoiceQueue'});db[_0xe2da('0x1d')][_0xe2da('0x11c')](db['Team'],{'as':_0xe2da('0x152'),'through':_0xe2da('0x107')});db[_0xe2da('0x1d')][_0xe2da('0x11c')](db[_0xe2da('0x14e')],{'as':_0xe2da('0x153'),'through':_0xe2da('0x154')});db[_0xe2da('0x155')][_0xe2da('0x11b')](db[_0xe2da('0x14')],{'as':_0xe2da('0x14'),'foreignKey':_0xe2da('0x10f')});db[_0xe2da('0x20')][_0xe2da('0x11b')](db[_0xe2da('0x14')],{'as':_0xe2da('0x14'),'foreignKey':_0xe2da('0x10f')});db[_0xe2da('0x22')][_0xe2da('0x10d')](db[_0xe2da('0x23')],{'as':_0xe2da('0x156'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x157'),'sourceKey':_0xe2da('0x158')});db[_0xe2da('0x23')]['belongsTo'](db[_0xe2da('0x22')],{'foreignKey':_0xe2da('0x157'),'targetKey':_0xe2da('0x158')});db['VoiceCallReport'][_0xe2da('0x10d')](db[_0xe2da('0x159')],{'as':_0xe2da('0x15a'),'foreignKey':_0xe2da('0x15b'),'constraints':![]});db[_0xe2da('0x25')][_0xe2da('0x10d')](db[_0xe2da('0x28')],{'as':_0xe2da('0x15c'),'foreignKey':'uniqueid','constraints':![]});db[_0xe2da('0x25')]['belongsTo'](db['User'],{'as':_0xe2da('0x14'),'foreignKey':'UserId'});db[_0xe2da('0x25')][_0xe2da('0x11b')](db[_0xe2da('0x72')],{'as':_0xe2da('0x15d'),'foreignKey':'ContactId'});db['MailServerIn'][_0xe2da('0x11b')](db[_0xe2da('0x12f')],{'as':_0xe2da('0x12f'),'foreignKey':_0xe2da('0x15e')});db[_0xe2da('0x3f')][_0xe2da('0x11b')](db[_0xe2da('0x12f')],{'as':_0xe2da('0x12f'),'foreignKey':_0xe2da('0x15e')});db[_0xe2da('0x12f')][_0xe2da('0x15f')](db[_0xe2da('0x3d')],{'as':_0xe2da('0x160'),'onDelete':'cascade'});db[_0xe2da('0x12f')][_0xe2da('0x15f')](db[_0xe2da('0x3f')],{'as':_0xe2da('0x161'),'onDelete':_0xe2da('0x10c')});db[_0xe2da('0x12f')][_0xe2da('0x10d')](db[_0xe2da('0x162')],{'as':_0xe2da('0x163'),'foreignKey':_0xe2da('0x15e'),'onDelete':_0xe2da('0x10c')});db[_0xe2da('0x12f')][_0xe2da('0x10d')](db['CannedAnswer'],{'as':'Answers','foreignKey':_0xe2da('0x15e')});db[_0xe2da('0x12f')][_0xe2da('0x10d')](db['MailMessage'],{'as':'Messages','foreignKey':_0xe2da('0x15e')});db['MailAccount'][_0xe2da('0x10d')](db['MailInteraction'],{'as':_0xe2da('0x164')});db[_0xe2da('0x12f')][_0xe2da('0x10d')](db[_0xe2da('0x46')],{'as':_0xe2da('0x13e')});db[_0xe2da('0x12f')][_0xe2da('0x11b')](db[_0xe2da('0x14e')],{'as':_0xe2da('0x165'),'foreignKey':'ListId'});db[_0xe2da('0x12f')][_0xe2da('0x11b')](db[_0xe2da('0x166')],{'as':_0xe2da('0x166'),'foreignKey':_0xe2da('0x167')});db['MailAccount']['belongsTo'](db['Pause'],{'as':_0xe2da('0x168'),'foreignKey':_0xe2da('0x14d')});db[_0xe2da('0x12f')]['belongsToMany'](db[_0xe2da('0x14')],{'as':_0xe2da('0x151'),'through':_0xe2da('0x131')});db[_0xe2da('0x41')][_0xe2da('0x11c')](db[_0xe2da('0x14')],{'as':_0xe2da('0x151'),'through':_0xe2da('0x34')});db[_0xe2da('0x41')][_0xe2da('0x11c')](db[_0xe2da('0xe3')],{'through':_0xe2da('0x169'),'as':'Teams'});db[_0xe2da('0x11f')][_0xe2da('0x10d')](db['MailMessage'],{'as':_0xe2da('0x156'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x16a')});db[_0xe2da('0x11f')][_0xe2da('0x11b')](db[_0xe2da('0x12f')],{'as':_0xe2da('0x16b'),'foreignKey':_0xe2da('0x15e')});db['MailInteraction'][_0xe2da('0x11b')](db['CmContact'],{'as':_0xe2da('0x15d'),'foreignKey':'ContactId'});db['MailInteraction']['belongsTo'](db[_0xe2da('0x14')],{'as':_0xe2da('0x16c'),'foreignKey':_0xe2da('0x10f')});db['MailInteraction'][_0xe2da('0x11c')](db[_0xe2da('0x8c')],{'through':_0xe2da('0x16d'),'as':_0xe2da('0x16e')});db[_0xe2da('0x11f')][_0xe2da('0x11c')](db[_0xe2da('0x8c')],{'through':_0xe2da('0x16d'),'as':'ThroughTags'});db[_0xe2da('0x11f')][_0xe2da('0x11c')](db[_0xe2da('0x14')],{'as':'Users','through':_0xe2da('0x120'),'foreignKey':_0xe2da('0x16a')});db[_0xe2da('0x44')]['hasMany'](db[_0xe2da('0x16f')],{'as':_0xe2da('0x170'),'onDelete':_0xe2da('0x10c')});db[_0xe2da('0x44')]['belongsTo'](db[_0xe2da('0x14')],{'as':_0xe2da('0x14')});db[_0xe2da('0x44')]['belongsTo'](db['CmContact'],{'onDelete':'cascade','as':_0xe2da('0x15d')});db[_0xe2da('0x44')][_0xe2da('0x11b')](db[_0xe2da('0x11f')],{'as':_0xe2da('0x171'),'foreignKey':_0xe2da('0x16a')});db[_0xe2da('0x44')][_0xe2da('0x11b')](db[_0xe2da('0x12f')],{'as':'Account','foreignKey':_0xe2da('0x15e')});db[_0xe2da('0x44')][_0xe2da('0x11b')](db['ChatWebsite'],{'as':_0xe2da('0x62'),'foreignKey':_0xe2da('0x172')});db['MailMessage'][_0xe2da('0x11b')](db['ChatOfflineMessage'],{'as':_0xe2da('0x68'),'foreignKey':_0xe2da('0x173')});db[_0xe2da('0x46')][_0xe2da('0x11b')](db['User'],{'onDelete':_0xe2da('0x174')});db[_0xe2da('0x46')][_0xe2da('0x11b')](db[_0xe2da('0x41')],{'onDelete':'restrict'});db[_0xe2da('0x46')][_0xe2da('0x11b')](db[_0xe2da('0x12f')],{'onDelete':'restrict'});db[_0xe2da('0x46')][_0xe2da('0x11b')](db[_0xe2da('0x14a')],{'onDelete':'restrict','foreignKey':_0xe2da('0x14b')});db[_0xe2da('0x46')][_0xe2da('0x11b')](db[_0xe2da('0x8c')],{'onDelete':'restrict','foreignKey':_0xe2da('0x175')});db[_0xe2da('0x48')][_0xe2da('0x11b')](db['MailAccount'],{});db[_0xe2da('0x48')][_0xe2da('0x11b')](db[_0xe2da('0x14e')],{'as':_0xe2da('0x165'),'foreignKey':'ListId'});db[_0xe2da('0x48')][_0xe2da('0x11b')](db[_0xe2da('0x72')],{'as':_0xe2da('0x15d'),'foreignKey':'ContactId'});db['MailQueueReport'][_0xe2da('0x11b')](db['MailInteraction'],{});db[_0xe2da('0x48')][_0xe2da('0x11b')](db[_0xe2da('0x44')],{});db[_0xe2da('0x48')][_0xe2da('0x11b')](db[_0xe2da('0x14')],{});db[_0xe2da('0x48')]['belongsTo'](db[_0xe2da('0x41')],{});db[_0xe2da('0x49')][_0xe2da('0x10d')](db[_0xe2da('0x4a')],{'as':_0xe2da('0x176'),'onDelete':_0xe2da('0x10c')});db[_0xe2da('0x4c')][_0xe2da('0x10d')](db[_0xe2da('0x162')],{'as':_0xe2da('0x163'),'foreignKey':_0xe2da('0x177'),'onDelete':_0xe2da('0x10c')});db['FaxAccount'][_0xe2da('0x10d')](db[_0xe2da('0x7e')],{'as':_0xe2da('0x178'),'foreignKey':_0xe2da('0x177')});db[_0xe2da('0x4c')][_0xe2da('0x10d')](db[_0xe2da('0x4f')],{'as':'Interactions'});db[_0xe2da('0x4c')][_0xe2da('0x10d')](db[_0xe2da('0x179')],{'as':_0xe2da('0x13e')});db[_0xe2da('0x4c')][_0xe2da('0x10d')](db[_0xe2da('0x19')],{'as':_0xe2da('0x17a'),'onDelete':_0xe2da('0x10c')});db[_0xe2da('0x4c')]['hasMany'](db['FaxMessage'],{'as':'Messages'});db[_0xe2da('0x4c')]['belongsTo'](db['Trunk'],{'as':_0xe2da('0x147')});db[_0xe2da('0x4c')][_0xe2da('0x11b')](db['CmList'],{'as':_0xe2da('0x165'),'foreignKey':'ListId'});db[_0xe2da('0x4c')]['belongsTo'](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0xe2da('0x14d')});db[_0xe2da('0x4c')]['belongsToMany'](db[_0xe2da('0x14')],{'as':_0xe2da('0x151'),'through':'user_has_fax_accounts'});db['FaxApplication']['belongsTo'](db[_0xe2da('0x14')],{'onDelete':_0xe2da('0x174')});db[_0xe2da('0x179')][_0xe2da('0x11b')](db[_0xe2da('0x53')],{'onDelete':_0xe2da('0x174')});db['FaxApplication'][_0xe2da('0x11b')](db[_0xe2da('0x4c')],{'onDelete':_0xe2da('0x174')});db[_0xe2da('0x179')]['belongsTo'](db[_0xe2da('0x8c')],{'onDelete':_0xe2da('0x174'),'foreignKey':_0xe2da('0x175')});db[_0xe2da('0x4f')][_0xe2da('0x10d')](db[_0xe2da('0x51')],{'as':_0xe2da('0x156'),'onDelete':_0xe2da('0x10c'),'foreignKey':'FaxInteractionId'});db['FaxInteraction'][_0xe2da('0x11b')](db['FaxAccount'],{'as':'Account','foreignKey':_0xe2da('0x177')});db['FaxInteraction']['belongsTo'](db[_0xe2da('0x72')],{'as':_0xe2da('0x15d'),'foreignKey':_0xe2da('0x17b')});db['FaxInteraction']['belongsTo'](db[_0xe2da('0x14')],{'as':_0xe2da('0x16c'),'foreignKey':_0xe2da('0x10f')});db[_0xe2da('0x4f')][_0xe2da('0x11c')](db['Tag'],{'through':'fax_interaction_has_tags','as':'Tags'});db['FaxInteraction']['belongsToMany'](db[_0xe2da('0x8c')],{'through':_0xe2da('0x17c'),'as':_0xe2da('0x17d')});db[_0xe2da('0x4f')]['belongsToMany'](db['User'],{'as':'Users','through':_0xe2da('0x122'),'foreignKey':_0xe2da('0x17e')});db['FaxMessage'][_0xe2da('0x11b')](db[_0xe2da('0x14')],{'onDelete':_0xe2da('0x10c'),'as':_0xe2da('0x14')});db[_0xe2da('0x51')]['belongsTo'](db[_0xe2da('0x4f')],{'as':'Interaction','foreignKey':_0xe2da('0x17e')});db[_0xe2da('0x51')][_0xe2da('0x11b')](db['CmContact'],{'onDelete':_0xe2da('0x10c'),'as':'Contact'});db[_0xe2da('0x51')][_0xe2da('0x11b')](db[_0xe2da('0x16f')],{'as':'Attachment','foreignKey':_0xe2da('0x17f')});db[_0xe2da('0x51')]['belongsTo'](db[_0xe2da('0x4c')],{'as':_0xe2da('0x16b'),'foreignKey':_0xe2da('0x177')});db[_0xe2da('0x53')][_0xe2da('0x11c')](db[_0xe2da('0x14')],{'as':_0xe2da('0x151'),'through':_0xe2da('0x36')});db[_0xe2da('0x53')][_0xe2da('0x11c')](db[_0xe2da('0xe3')],{'through':'team_has_fax_queues','as':_0xe2da('0x152')});db['FaxQueueReport'][_0xe2da('0x11b')](db[_0xe2da('0x4c')],{});db[_0xe2da('0x180')]['belongsTo'](db['CmList'],{'as':_0xe2da('0x165'),'foreignKey':_0xe2da('0x181')});db[_0xe2da('0x180')][_0xe2da('0x11b')](db[_0xe2da('0x72')],{'as':_0xe2da('0x15d'),'foreignKey':_0xe2da('0x17b')});db[_0xe2da('0x180')][_0xe2da('0x11b')](db[_0xe2da('0x4f')],{});db[_0xe2da('0x180')][_0xe2da('0x11b')](db[_0xe2da('0x51')],{});db[_0xe2da('0x180')][_0xe2da('0x11b')](db['User'],{});db[_0xe2da('0x180')][_0xe2da('0x11b')](db[_0xe2da('0x53')],{});db[_0xe2da('0x134')]['hasMany'](db[_0xe2da('0x162')],{'as':_0xe2da('0x163'),'foreignKey':_0xe2da('0x182'),'onDelete':_0xe2da('0x10c')});db['SmsAccount'][_0xe2da('0x10d')](db['CannedAnswer'],{'as':_0xe2da('0x178'),'foreignKey':_0xe2da('0x182')});db[_0xe2da('0x134')]['hasMany'](db[_0xe2da('0x183')],{'as':_0xe2da('0x156'),'foreignKey':'SmsAccountId'});db['SmsAccount']['hasMany'](db[_0xe2da('0x57')],{'as':'Interactions'});db[_0xe2da('0x134')]['hasMany'](db['SmsApplication'],{'as':_0xe2da('0x13e')});db['SmsAccount']['belongsTo'](db['CmList'],{'as':_0xe2da('0x165'),'foreignKey':_0xe2da('0x181')});db[_0xe2da('0x134')][_0xe2da('0x11b')](db[_0xe2da('0x14c')],{'as':'mandatoryDispositionPause','foreignKey':_0xe2da('0x14d')});db[_0xe2da('0x134')]['belongsToMany'](db[_0xe2da('0x14')],{'as':_0xe2da('0x151'),'through':_0xe2da('0x184')});db[_0xe2da('0x56')]['belongsTo'](db[_0xe2da('0x14')],{'onDelete':_0xe2da('0x174')});db[_0xe2da('0x56')][_0xe2da('0x11b')](db['SmsQueue'],{'onDelete':_0xe2da('0x174')});db[_0xe2da('0x56')]['belongsTo'](db[_0xe2da('0x134')],{'onDelete':_0xe2da('0x174')});db[_0xe2da('0x56')]['belongsTo'](db[_0xe2da('0x14a')],{'onDelete':'restrict','foreignKey':_0xe2da('0x14b')});db['SmsApplication']['belongsTo'](db[_0xe2da('0x8c')],{'onDelete':_0xe2da('0x174'),'foreignKey':_0xe2da('0x175')});db['SmsInteraction']['hasMany'](db[_0xe2da('0x183')],{'as':_0xe2da('0x156'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x185')});db[_0xe2da('0x57')][_0xe2da('0x11b')](db[_0xe2da('0x134')],{'as':_0xe2da('0x16b'),'foreignKey':_0xe2da('0x182')});db[_0xe2da('0x57')][_0xe2da('0x11b')](db[_0xe2da('0x72')],{'as':'Contact','foreignKey':_0xe2da('0x17b')});db[_0xe2da('0x57')][_0xe2da('0x11b')](db['User'],{'as':_0xe2da('0x16c'),'foreignKey':_0xe2da('0x10f')});db['SmsInteraction'][_0xe2da('0x11c')](db['Tag'],{'through':'sms_interaction_has_tags','as':_0xe2da('0x16e')});db[_0xe2da('0x57')]['belongsToMany'](db['Tag'],{'through':_0xe2da('0x186'),'as':_0xe2da('0x17d')});db[_0xe2da('0x57')][_0xe2da('0x11c')](db[_0xe2da('0x14')],{'as':'Users','through':_0xe2da('0x123'),'foreignKey':_0xe2da('0x185')});db[_0xe2da('0x183')]['belongsTo'](db['User'],{'as':'User'});db[_0xe2da('0x183')][_0xe2da('0x11b')](db[_0xe2da('0x72')],{'onDelete':_0xe2da('0x10c'),'as':_0xe2da('0x15d')});db[_0xe2da('0x183')]['belongsTo'](db[_0xe2da('0x57')],{'onDelete':_0xe2da('0x10c'),'as':_0xe2da('0x171'),'foreignKey':_0xe2da('0x185')});db[_0xe2da('0x183')][_0xe2da('0x11b')](db[_0xe2da('0x134')],{'as':_0xe2da('0x16b'),'foreignKey':_0xe2da('0x182')});db[_0xe2da('0x59')][_0xe2da('0x11c')](db['User'],{'as':_0xe2da('0x151'),'through':'UserSmsQueue','foreignKey':'SmsQueueId'});db[_0xe2da('0x59')][_0xe2da('0x11c')](db[_0xe2da('0xe3')],{'through':_0xe2da('0x187'),'as':_0xe2da('0x152')});db[_0xe2da('0x5a')][_0xe2da('0x10d')](db[_0xe2da('0x162')],{'as':_0xe2da('0x163'),'foreignKey':_0xe2da('0x188'),'onDelete':_0xe2da('0x10c')});db[_0xe2da('0x5a')][_0xe2da('0x10d')](db[_0xe2da('0x7e')],{'as':_0xe2da('0x178'),'foreignKey':_0xe2da('0x188')});db[_0xe2da('0x5a')][_0xe2da('0x10d')](db[_0xe2da('0x5e')],{'as':_0xe2da('0x164'),'foreignKey':_0xe2da('0x188')});db[_0xe2da('0x5a')][_0xe2da('0x10d')](db[_0xe2da('0x5f')],{'as':_0xe2da('0x156'),'foreignKey':_0xe2da('0x188')});db[_0xe2da('0x5a')][_0xe2da('0x10d')](db[_0xe2da('0x5c')],{'as':'Applications','foreignKey':_0xe2da('0x188')});db['OpenchannelAccount'][_0xe2da('0x11b')](db[_0xe2da('0x14e')],{'as':_0xe2da('0x165'),'foreignKey':_0xe2da('0x181')});db[_0xe2da('0x5a')]['belongsTo'](db[_0xe2da('0x14c')],{'as':_0xe2da('0x168'),'foreignKey':_0xe2da('0x14d')});db['OpenchannelAccount']['belongsToMany'](db[_0xe2da('0x14')],{'as':_0xe2da('0x151'),'through':_0xe2da('0x133')});db[_0xe2da('0x5c')][_0xe2da('0x11b')](db['User'],{'onDelete':_0xe2da('0x174')});db['OpenchannelApplication']['belongsTo'](db[_0xe2da('0x60')],{'onDelete':_0xe2da('0x174'),'foreignKey':_0xe2da('0x189')});db['OpenchannelApplication'][_0xe2da('0x11b')](db[_0xe2da('0x5a')],{'onDelete':'restrict','foreignKey':'OpenchannelAccountId'});db[_0xe2da('0x5c')][_0xe2da('0x11b')](db[_0xe2da('0x14a')],{'onDelete':_0xe2da('0x174'),'foreignKey':_0xe2da('0x14b')});db[_0xe2da('0x5c')][_0xe2da('0x11b')](db[_0xe2da('0x8c')],{'onDelete':'restrict','foreignKey':_0xe2da('0x175')});db[_0xe2da('0x5e')]['hasMany'](db[_0xe2da('0x5f')],{'as':'Messages','onDelete':'cascade','foreignKey':_0xe2da('0x18a')});db[_0xe2da('0x5e')][_0xe2da('0x11b')](db['OpenchannelAccount'],{'as':_0xe2da('0x16b'),'foreignKey':_0xe2da('0x188')});db['OpenchannelInteraction'][_0xe2da('0x11b')](db[_0xe2da('0x72')],{'as':_0xe2da('0x15d'),'foreignKey':_0xe2da('0x17b')});db[_0xe2da('0x5e')][_0xe2da('0x11b')](db[_0xe2da('0x14')],{'as':_0xe2da('0x16c'),'foreignKey':_0xe2da('0x10f')});db[_0xe2da('0x5e')]['belongsToMany'](db[_0xe2da('0x8c')],{'through':_0xe2da('0x18b'),'as':_0xe2da('0x16e')});db['OpenchannelInteraction'][_0xe2da('0x11c')](db[_0xe2da('0x8c')],{'through':'openchannel_interaction_has_tags','as':_0xe2da('0x17d')});db['OpenchannelInteraction'][_0xe2da('0x11c')](db[_0xe2da('0x14')],{'as':_0xe2da('0x18c'),'through':'user_has_openchannel_interactions','foreignKey':'OpenchannelInteractionId'});db[_0xe2da('0x5f')][_0xe2da('0x11b')](db[_0xe2da('0x14')],{'onDelete':_0xe2da('0x10c'),'as':_0xe2da('0x14')});db[_0xe2da('0x5f')][_0xe2da('0x11b')](db['CmContact'],{'onDelete':_0xe2da('0x10c'),'as':_0xe2da('0x15d')});db['OpenchannelMessage']['belongsTo'](db[_0xe2da('0x5e')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0xe2da('0x18a')});db['OpenchannelMessage'][_0xe2da('0x11b')](db[_0xe2da('0x16f')],{'as':'Attachment','foreignKey':_0xe2da('0x17f')});db['OpenchannelMessage'][_0xe2da('0x11b')](db['OpenchannelAccount'],{'as':_0xe2da('0x16b'),'foreignKey':_0xe2da('0x188')});db[_0xe2da('0x60')][_0xe2da('0x11c')](db[_0xe2da('0x14')],{'as':_0xe2da('0x151'),'through':_0xe2da('0x3a'),'foreignKey':_0xe2da('0x189')});db[_0xe2da('0x60')]['belongsToMany'](db[_0xe2da('0xe3')],{'through':_0xe2da('0x18d'),'as':'Teams'});db['ChatWebsite'][_0xe2da('0x10d')](db[_0xe2da('0x162')],{'as':_0xe2da('0x163'),'foreignKey':_0xe2da('0x172'),'onDelete':_0xe2da('0x10c')});db[_0xe2da('0x62')][_0xe2da('0x10d')](db[_0xe2da('0x7e')],{'as':_0xe2da('0x178'),'foreignKey':_0xe2da('0x172')});db[_0xe2da('0x62')][_0xe2da('0x10d')](db['ChatProactiveAction'],{'as':_0xe2da('0x18e')});db[_0xe2da('0x62')]['hasMany'](db[_0xe2da('0x64')],{'as':_0xe2da('0x164')});db['ChatWebsite'][_0xe2da('0x10d')](db[_0xe2da('0x18f')],{'as':_0xe2da('0x13e')});db[_0xe2da('0x62')]['hasMany'](db[_0xe2da('0x66')],{'as':_0xe2da('0x156')});db[_0xe2da('0x62')]['belongsTo'](db['CmList'],{'as':_0xe2da('0x165'),'foreignKey':_0xe2da('0x181')});db[_0xe2da('0x62')][_0xe2da('0x11b')](db[_0xe2da('0x14a')],{'as':_0xe2da('0x14a'),'foreignKey':_0xe2da('0x14b')});db['ChatWebsite']['belongsTo'](db['MailAccount'],{'as':_0xe2da('0x12f'),'foreignKey':'MailAccountId'});db[_0xe2da('0x62')]['belongsTo'](db[_0xe2da('0x14c')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0xe2da('0x62')][_0xe2da('0x11c')](db[_0xe2da('0x14')],{'as':'Agents','through':_0xe2da('0x190')});db[_0xe2da('0x191')][_0xe2da('0x11b')](db[_0xe2da('0x5a')],{});db[_0xe2da('0x191')]['belongsTo'](db[_0xe2da('0x14e')],{'as':'List','foreignKey':_0xe2da('0x181')});db[_0xe2da('0x191')][_0xe2da('0x11b')](db['CmContact'],{'as':_0xe2da('0x15d'),'foreignKey':_0xe2da('0x17b')});db[_0xe2da('0x191')][_0xe2da('0x11b')](db[_0xe2da('0x5e')],{});db['OpenchannelQueueReport'][_0xe2da('0x11b')](db['OpenchannelMessage'],{});db['OpenchannelQueueReport'][_0xe2da('0x11b')](db['User'],{});db[_0xe2da('0x191')]['belongsTo'](db[_0xe2da('0x60')],{});db[_0xe2da('0x18f')]['belongsTo'](db['User'],{'as':_0xe2da('0x192'),'foreignKey':_0xe2da('0x10f'),'onDelete':_0xe2da('0x174')});db['ChatApplication']['belongsTo'](db[_0xe2da('0x6a')],{'as':_0xe2da('0x193'),'foreignKey':_0xe2da('0x194'),'onDelete':'restrict'});db[_0xe2da('0x18f')][_0xe2da('0x11b')](db[_0xe2da('0x62')],{'as':'Website','foreignKey':'ChatWebsiteId','onDelete':_0xe2da('0x174')});db['ChatApplication'][_0xe2da('0x11b')](db[_0xe2da('0x8c')],{'onDelete':_0xe2da('0x174'),'foreignKey':_0xe2da('0x175')});db['ChatInteraction'][_0xe2da('0x10d')](db[_0xe2da('0x66')],{'as':_0xe2da('0x156'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x195')});db[_0xe2da('0x64')][_0xe2da('0x11b')](db[_0xe2da('0x62')],{'as':_0xe2da('0x16b'),'foreignKey':_0xe2da('0x172')});db[_0xe2da('0x64')][_0xe2da('0x11b')](db['CmContact'],{'as':_0xe2da('0x15d'),'foreignKey':'ContactId'});db[_0xe2da('0x64')][_0xe2da('0x11b')](db['User'],{'as':_0xe2da('0x16c'),'foreignKey':_0xe2da('0x10f')});db['ChatInteraction'][_0xe2da('0x11c')](db[_0xe2da('0x8c')],{'through':_0xe2da('0x196'),'as':_0xe2da('0x16e')});db[_0xe2da('0x64')]['belongsToMany'](db[_0xe2da('0x8c')],{'through':_0xe2da('0x196'),'as':_0xe2da('0x17d')});db[_0xe2da('0x64')]['belongsToMany'](db[_0xe2da('0x14')],{'as':_0xe2da('0x18c'),'through':'user_has_chat_interactions','foreignKey':'ChatInteractionId'});db[_0xe2da('0x66')][_0xe2da('0x11b')](db[_0xe2da('0x14')],{'onDelete':_0xe2da('0x10c'),'as':'User'});db[_0xe2da('0x66')][_0xe2da('0x11b')](db['CmContact'],{'onDelete':'cascade','as':_0xe2da('0x15d'),'foreignKey':_0xe2da('0x17b')});db[_0xe2da('0x66')]['belongsTo'](db[_0xe2da('0x64')],{'onDelete':_0xe2da('0x10c'),'as':_0xe2da('0x171'),'foreignKey':_0xe2da('0x195')});db[_0xe2da('0x66')][_0xe2da('0x11b')](db[_0xe2da('0x16f')],{'as':_0xe2da('0x16f'),'foreignKey':_0xe2da('0x17f')});db[_0xe2da('0x66')][_0xe2da('0x11b')](db[_0xe2da('0x62')],{'as':_0xe2da('0x16b'),'foreignKey':_0xe2da('0x172')});db[_0xe2da('0x68')]['hasMany'](db[_0xe2da('0x16f')],{'as':'Attachments','foreignKey':'ChatOfflineMessageId','onDelete':'cascade','hooks':!![]});db[_0xe2da('0x68')][_0xe2da('0x11b')](db[_0xe2da('0x72')],{'onDelete':_0xe2da('0x10c'),'as':_0xe2da('0x15d'),'foreignKey':_0xe2da('0x17b')});db[_0xe2da('0x68')][_0xe2da('0x11b')](db[_0xe2da('0x62')],{'as':_0xe2da('0x16b'),'foreignKey':_0xe2da('0x172')});db[_0xe2da('0x6a')][_0xe2da('0x11c')](db['User'],{'as':_0xe2da('0x151'),'through':_0xe2da('0x32'),'hooks':!![]});db[_0xe2da('0x6a')]['belongsToMany'](db['Team'],{'through':'team_has_chat_queues','as':_0xe2da('0x152')});db[_0xe2da('0x6c')][_0xe2da('0x10d')](db['ChatInternalMessage'],{'as':_0xe2da('0x156'),'foreignKey':_0xe2da('0x197'),'onDelete':_0xe2da('0x10c')});db[_0xe2da('0x6c')][_0xe2da('0x11c')](db[_0xe2da('0x14')],{'as':_0xe2da('0x141'),'through':_0xe2da('0x11d')});db[_0xe2da('0x6e')][_0xe2da('0x11b')](db[_0xe2da('0x62')],{'as':_0xe2da('0x198'),'foreignKey':'ChatWebsiteId'});db['CmCompany'][_0xe2da('0x10d')](db[_0xe2da('0x72')],{'as':_0xe2da('0x11e'),'foreignKey':'CompanyId'});db[_0xe2da('0x72')][_0xe2da('0x10d')](db['CmHopper'],{'as':_0xe2da('0x143'),'foreignKey':_0xe2da('0x17b')});db['CmContact'][_0xe2da('0x10d')](db[_0xe2da('0x76')],{'as':'HopperFinals','foreignKey':'ContactId'});db[_0xe2da('0x72')][_0xe2da('0x10d')](db[_0xe2da('0x112')],{'as':'HopperHistories','foreignKey':_0xe2da('0x17b')});db[_0xe2da('0x72')]['hasMany'](db[_0xe2da('0x78')],{'as':'ReportAgentPreview','foreignKey':_0xe2da('0x17b')});db[_0xe2da('0x72')][_0xe2da('0x10d')](db[_0xe2da('0x146')],{'as':_0xe2da('0x199'),'foreignKey':_0xe2da('0x17b')});db['CmContact'][_0xe2da('0x10d')](db['OpenchannelInteraction'],{'as':_0xe2da('0x114'),'foreignKey':_0xe2da('0x17b'),'onDelete':_0xe2da('0x174')});db[_0xe2da('0x72')][_0xe2da('0x10d')](db[_0xe2da('0x64')],{'as':_0xe2da('0x115'),'foreignKey':_0xe2da('0x17b'),'onDelete':'restrict'});db[_0xe2da('0x72')][_0xe2da('0x10d')](db['SmsInteraction'],{'as':_0xe2da('0x116'),'foreignKey':_0xe2da('0x17b'),'onDelete':_0xe2da('0x174')});db['CmContact'][_0xe2da('0x10d')](db[_0xe2da('0x4f')],{'as':_0xe2da('0x117'),'foreignKey':'ContactId','onDelete':_0xe2da('0x174')});db[_0xe2da('0x72')][_0xe2da('0x10d')](db['MailInteraction'],{'as':'MailInteractions','foreignKey':'ContactId','onDelete':_0xe2da('0x174')});db[_0xe2da('0x72')][_0xe2da('0x11b')](db[_0xe2da('0x70')],{'as':_0xe2da('0x19a'),'foreignKey':_0xe2da('0x19b')});db[_0xe2da('0x72')][_0xe2da('0x11b')](db['CmList'],{'as':_0xe2da('0x165'),'foreignKey':_0xe2da('0x181'),'onDelete':_0xe2da('0x10c')});db[_0xe2da('0x72')]['belongsToMany'](db['User'],{'as':_0xe2da('0x18c'),'through':_0xe2da('0x19c')});db[_0xe2da('0x72')]['belongsToMany'](db[_0xe2da('0x8c')],{'as':_0xe2da('0x16e'),'through':_0xe2da('0x19d')});db['CmContact']['belongsToMany'](db[_0xe2da('0x8c')],{'through':_0xe2da('0x19d'),'as':_0xe2da('0x17d')});db[_0xe2da('0x73')]['belongsTo'](db[_0xe2da('0x72')],{'as':'Contact','foreignKey':_0xe2da('0x17b'),'onDelete':_0xe2da('0x10c')});db[_0xe2da('0x73')]['belongsTo'](db[_0xe2da('0x14e')],{'as':_0xe2da('0x165'),'foreignKey':'ListId','onDelete':_0xe2da('0x10c')});db['CmHopper'][_0xe2da('0x11b')](db[_0xe2da('0x14')],{'as':_0xe2da('0x192'),'foreignKey':'UserId'});db[_0xe2da('0x73')][_0xe2da('0x11b')](db[_0xe2da('0x1d')],{'as':_0xe2da('0x193'),'foreignKey':_0xe2da('0x142'),'onDelete':'cascade'});db['CmHopper'][_0xe2da('0x11b')](db[_0xe2da('0xe7')],{'as':_0xe2da('0xe7'),'foreignKey':_0xe2da('0x19e'),'onDelete':_0xe2da('0x10c')});db['CmHopper']['belongsTo'](db[_0xe2da('0x14')],{'as':_0xe2da('0x16c'),'foreignKey':'OwnerId'});db[_0xe2da('0x75')]['belongsTo'](db[_0xe2da('0x72')],{'as':_0xe2da('0x15d'),'foreignKey':_0xe2da('0x17b'),'onDelete':_0xe2da('0x10c')});db['CmHopperBlack'][_0xe2da('0x11b')](db['CmList'],{'as':_0xe2da('0x165'),'foreignKey':_0xe2da('0x181'),'onDelete':_0xe2da('0x10c')});db['CmHopperBlack']['belongsTo'](db[_0xe2da('0x1d')],{'as':_0xe2da('0x193'),'foreignKey':_0xe2da('0x142'),'onDelete':_0xe2da('0x10c')});db['CmHopperBlack'][_0xe2da('0x11b')](db[_0xe2da('0xe7')],{'as':_0xe2da('0xe7'),'foreignKey':_0xe2da('0x19e'),'onDelete':_0xe2da('0x10c')});db['Automation'][_0xe2da('0x10d')](db[_0xe2da('0x81')],{'as':{'plural':_0xe2da('0x19f'),'singular':_0xe2da('0x1a0')},'foreignKey':_0xe2da('0x1a1'),'onDelete':_0xe2da('0x10c'),'hooks':!![]});db[_0xe2da('0x1a2')][_0xe2da('0x10d')](db[_0xe2da('0x81')],{'as':{'plural':_0xe2da('0x1a3'),'singular':_0xe2da('0x1a4')},'foreignKey':_0xe2da('0x1a5'),'onDelete':_0xe2da('0x10c'),'hooks':!![]});db[_0xe2da('0x1a2')][_0xe2da('0x10d')](db[_0xe2da('0x7b')],{'as':_0xe2da('0x1a6'),'foreignKey':'AutomationId','onDelete':_0xe2da('0x10c'),'hooks':!![]});db[_0xe2da('0x162')]['hasMany'](db['Disposition'],{'as':'Dispositions','foreignKey':'ParentId','onDelete':_0xe2da('0x10c')});db['Interval'][_0xe2da('0x10d')](db[_0xe2da('0x14a')],{'as':_0xe2da('0x1a7'),'foreignKey':_0xe2da('0x14b'),'onDelete':'cascade','hooks':!![],'required':![]});db[_0xe2da('0x14a')][_0xe2da('0x10d')](db[_0xe2da('0x19')],{'as':_0xe2da('0x111'),'foreignKey':_0xe2da('0x14b'),'onDelete':_0xe2da('0x174')});db['Interval'][_0xe2da('0x10d')](db[_0xe2da('0x46')],{'as':'MailApplications','foreignKey':'IntervalId'});db[_0xe2da('0x14a')][_0xe2da('0x10d')](db[_0xe2da('0x18f')],{'as':'ChatApplications','foreignKey':_0xe2da('0x14b')});db[_0xe2da('0x14a')][_0xe2da('0x10d')](db[_0xe2da('0x179')],{'as':_0xe2da('0x1a8'),'foreignKey':_0xe2da('0x14b')});db['Interval'][_0xe2da('0x10d')](db[_0xe2da('0x56')],{'as':'SmsApplications','foreignKey':_0xe2da('0x14b')});db[_0xe2da('0x1a9')][_0xe2da('0x11b')](db[_0xe2da('0x12f')],{});db['Schedule'][_0xe2da('0x11b')](db[_0xe2da('0x1aa')],{'foreignKey':_0xe2da('0x1ab')});db[_0xe2da('0x1a9')][_0xe2da('0x11b')](db['AnalyticCustomReport'],{'foreignKey':_0xe2da('0x1ac')});db[_0xe2da('0x8a')][_0xe2da('0x11c')](db[_0xe2da('0x1b')],{'as':_0xe2da('0x1ad'),'through':'moh_has_sounds','onDelete':_0xe2da('0x174')});db['Tag']['belongsToMany'](db[_0xe2da('0x72')],{'through':_0xe2da('0x19d')});db[_0xe2da('0x8c')][_0xe2da('0x11c')](db[_0xe2da('0x64')],{'through':'chat_interaction_has_tags'});db[_0xe2da('0x8c')][_0xe2da('0x11c')](db[_0xe2da('0x11f')],{'through':_0xe2da('0x16d')});db[_0xe2da('0x8c')][_0xe2da('0x11c')](db[_0xe2da('0x57')],{'through':_0xe2da('0x186')});db[_0xe2da('0x8c')][_0xe2da('0x11c')](db['FaxInteraction'],{'through':_0xe2da('0x17c')});db[_0xe2da('0x8c')][_0xe2da('0x11c')](db[_0xe2da('0x5e')],{'through':'openchannel_interaction_has_tags'});db['Tag'][_0xe2da('0x11c')](db[_0xe2da('0xfc')],{'through':_0xe2da('0x1ae')});db['Trigger'][_0xe2da('0x10d')](db[_0xe2da('0x81')],{'as':{'plural':'AllConditions','singular':_0xe2da('0x1af')},'foreignKey':'TriggerAllId','onDelete':_0xe2da('0x10c'),'hooks':!![]});db[_0xe2da('0x8e')][_0xe2da('0x10d')](db[_0xe2da('0x81')],{'as':{'plural':'AnyConditions','singular':_0xe2da('0x1b0')},'foreignKey':_0xe2da('0x1b1'),'onDelete':_0xe2da('0x10c'),'hooks':!![]});db[_0xe2da('0x8e')][_0xe2da('0x10d')](db[_0xe2da('0x7b')],{'as':_0xe2da('0x1a6'),'foreignKey':_0xe2da('0x1b2'),'onDelete':_0xe2da('0x10c'),'hooks':!![]});db[_0xe2da('0x94')]['hasMany'](db[_0xe2da('0x9a')],{'as':'Fields','onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1ac'),'hooks':!![]});db[_0xe2da('0x1aa')][_0xe2da('0x10d')](db[_0xe2da('0x9a')],{'as':_0xe2da('0x1b3'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1ab')});db[_0xe2da('0x99')][_0xe2da('0x10d')](db[_0xe2da('0x9a')],{'as':'Fields','onDelete':'cascade','foreignKey':_0xe2da('0x1b4')});db['AnalyticFieldReport'][_0xe2da('0x11b')](db[_0xe2da('0x99')],{'foreignKey':'MetricId'});db[_0xe2da('0x9e')][_0xe2da('0x10d')](db[_0xe2da('0x1b5')],{'as':_0xe2da('0x1b6'),'onDelete':_0xe2da('0x10c'),'foreignKey':'AccountId'});db[_0xe2da('0x1b5')]['hasMany'](db['SalesforceField'],{'as':_0xe2da('0x1b7'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1b8')});db[_0xe2da('0x1b5')][_0xe2da('0x10d')](db['SalesforceField'],{'as':_0xe2da('0x1b9'),'onDelete':_0xe2da('0x10c'),'foreignKey':'DescriptionId'});db[_0xe2da('0x1b5')]['hasMany'](db[_0xe2da('0xa1')],{'as':_0xe2da('0x1b3'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1ba')});db[_0xe2da('0x1b5')]['belongsTo'](db[_0xe2da('0x9e')],{'as':'Account','foreignKey':_0xe2da('0x1bb')});db[_0xe2da('0xa1')][_0xe2da('0x10d')](db[_0xe2da('0xa1')],{'as':'Subject','foreignKey':_0xe2da('0x1b8')});db[_0xe2da('0xa1')][_0xe2da('0x10d')](db[_0xe2da('0xa1')],{'as':_0xe2da('0x1bc'),'foreignKey':_0xe2da('0x1bd')});db['SalesforceField'][_0xe2da('0x10d')](db[_0xe2da('0xa1')],{'as':_0xe2da('0x1be'),'foreignKey':_0xe2da('0x1ba')});db['SalesforceField'][_0xe2da('0x11b')](db[_0xe2da('0x90')],{'as':_0xe2da('0x90'),'foreignKey':_0xe2da('0x1bf')});db[_0xe2da('0xa3')]['hasMany'](db[_0xe2da('0xa5')],{'as':_0xe2da('0x1b6'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1bb')});db[_0xe2da('0xa5')][_0xe2da('0x10d')](db[_0xe2da('0xa7')],{'as':_0xe2da('0x1b7'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1b8')});db[_0xe2da('0xa5')][_0xe2da('0x10d')](db['SugarcrmField'],{'as':'Descriptions','onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1bd')});db[_0xe2da('0xa5')][_0xe2da('0x10d')](db[_0xe2da('0xa7')],{'as':_0xe2da('0x1b3'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1ba')});db[_0xe2da('0xa5')][_0xe2da('0x11b')](db[_0xe2da('0xa3')],{'as':_0xe2da('0x16b'),'foreignKey':_0xe2da('0x1bb')});db['SugarcrmField'][_0xe2da('0x10d')](db[_0xe2da('0xa7')],{'as':'Subject','foreignKey':_0xe2da('0x1b8')});db['SugarcrmField'][_0xe2da('0x10d')](db[_0xe2da('0xa7')],{'as':_0xe2da('0x1bc'),'foreignKey':'DescriptionId'});db[_0xe2da('0xa7')][_0xe2da('0x10d')](db[_0xe2da('0xa7')],{'as':_0xe2da('0x1be'),'foreignKey':_0xe2da('0x1ba')});db[_0xe2da('0xa7')][_0xe2da('0x11b')](db[_0xe2da('0x90')],{'as':_0xe2da('0x90'),'foreignKey':_0xe2da('0x1bf')});db['DeskAccount'][_0xe2da('0x10d')](db[_0xe2da('0xab')],{'as':_0xe2da('0x1b6'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1bb')});db['DeskConfiguration'][_0xe2da('0x10d')](db[_0xe2da('0xad')],{'as':'Subjects','onDelete':'cascade','foreignKey':_0xe2da('0x1b8')});db['DeskConfiguration']['hasMany'](db[_0xe2da('0xad')],{'as':_0xe2da('0x1b9'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1bd')});db[_0xe2da('0xab')]['hasMany'](db[_0xe2da('0xad')],{'as':_0xe2da('0x1b3'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1ba')});db[_0xe2da('0xab')]['belongsTo'](db[_0xe2da('0xa9')],{'as':'Account','foreignKey':_0xe2da('0x1bb')});db[_0xe2da('0xab')]['belongsToMany'](db[_0xe2da('0x8c')],{'through':_0xe2da('0x1c0')});db[_0xe2da('0xad')][_0xe2da('0x10d')](db[_0xe2da('0xad')],{'as':'Subject','foreignKey':_0xe2da('0x1b8')});db[_0xe2da('0xad')][_0xe2da('0x10d')](db[_0xe2da('0xad')],{'as':_0xe2da('0x1bc'),'foreignKey':_0xe2da('0x1bd')});db[_0xe2da('0xad')][_0xe2da('0x10d')](db[_0xe2da('0xad')],{'as':_0xe2da('0x1be'),'foreignKey':_0xe2da('0x1ba')});db[_0xe2da('0xad')]['belongsTo'](db['Variable'],{'as':_0xe2da('0x90'),'foreignKey':_0xe2da('0x1bf')});db[_0xe2da('0x1c1')][_0xe2da('0x10d')](db[_0xe2da('0xaf')],{'as':_0xe2da('0x1b6'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1bb')});db[_0xe2da('0xaf')]['hasMany'](db['ZohoField'],{'as':_0xe2da('0x1b7'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1b8')});db[_0xe2da('0xaf')][_0xe2da('0x10d')](db[_0xe2da('0xb0')],{'as':_0xe2da('0x1b9'),'onDelete':_0xe2da('0x10c'),'foreignKey':'DescriptionId'});db['ZohoConfiguration'][_0xe2da('0x10d')](db[_0xe2da('0xb0')],{'as':_0xe2da('0x1b3'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1ba')});db[_0xe2da('0xaf')]['belongsTo'](db['ZohoAccount'],{'as':_0xe2da('0x16b'),'foreignKey':'AccountId'});db[_0xe2da('0xb0')][_0xe2da('0x10d')](db[_0xe2da('0xb0')],{'as':'Subject','foreignKey':_0xe2da('0x1b8')});db[_0xe2da('0xb0')][_0xe2da('0x10d')](db[_0xe2da('0xb0')],{'as':_0xe2da('0x1bc'),'foreignKey':_0xe2da('0x1bd')});db[_0xe2da('0xb0')][_0xe2da('0x10d')](db[_0xe2da('0xb0')],{'as':_0xe2da('0x1be'),'foreignKey':_0xe2da('0x1ba')});db[_0xe2da('0xb0')][_0xe2da('0x11b')](db[_0xe2da('0x90')],{'as':_0xe2da('0x90'),'foreignKey':_0xe2da('0x1bf')});db['ZendeskAccount'][_0xe2da('0x10d')](db[_0xe2da('0xb2')],{'as':_0xe2da('0x1b6'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1bb')});db[_0xe2da('0xb2')]['hasMany'](db[_0xe2da('0xb4')],{'as':'Subjects','foreignKey':_0xe2da('0x1b8')});db[_0xe2da('0xb2')]['hasMany'](db[_0xe2da('0xb4')],{'as':'Descriptions','foreignKey':_0xe2da('0x1bd')});db['ZendeskConfiguration'][_0xe2da('0x10d')](db['ZendeskField'],{'as':_0xe2da('0x1b3'),'foreignKey':_0xe2da('0x1ba')});db['ZendeskConfiguration'][_0xe2da('0x11b')](db[_0xe2da('0x1c2')],{'as':'Account','foreignKey':_0xe2da('0x1bb')});db[_0xe2da('0xb2')][_0xe2da('0x11c')](db[_0xe2da('0x8c')],{'through':_0xe2da('0x1c3')});db[_0xe2da('0xb4')]['hasMany'](db[_0xe2da('0xb4')],{'as':'Subject','foreignKey':_0xe2da('0x1b8')});db[_0xe2da('0xb4')][_0xe2da('0x10d')](db[_0xe2da('0xb4')],{'as':_0xe2da('0x1bc'),'foreignKey':'DescriptionId'});db[_0xe2da('0xb4')][_0xe2da('0x10d')](db[_0xe2da('0xb4')],{'as':'Field','foreignKey':_0xe2da('0x1ba')});db[_0xe2da('0xb4')][_0xe2da('0x11b')](db[_0xe2da('0x90')],{'as':_0xe2da('0x90'),'foreignKey':'VariableId'});db[_0xe2da('0xb6')]['hasMany'](db[_0xe2da('0xb8')],{'as':_0xe2da('0x1b6'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1bb')});db[_0xe2da('0xb8')][_0xe2da('0x10d')](db['FreshdeskField'],{'as':_0xe2da('0x1b7'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1b8')});db[_0xe2da('0xb8')]['hasMany'](db[_0xe2da('0xba')],{'as':_0xe2da('0x1b9'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1bd')});db[_0xe2da('0xb8')][_0xe2da('0x10d')](db[_0xe2da('0xba')],{'as':'Fields','onDelete':'cascade','foreignKey':_0xe2da('0x1ba')});db[_0xe2da('0xb8')][_0xe2da('0x11b')](db[_0xe2da('0xb6')],{'as':_0xe2da('0x16b'),'foreignKey':_0xe2da('0x1bb')});db[_0xe2da('0xb8')]['belongsToMany'](db[_0xe2da('0x8c')],{'through':_0xe2da('0x1c4')});db[_0xe2da('0xba')][_0xe2da('0x10d')](db['FreshdeskField'],{'as':'Subject','foreignKey':_0xe2da('0x1b8')});db[_0xe2da('0xba')][_0xe2da('0x10d')](db[_0xe2da('0xba')],{'as':_0xe2da('0x1bc'),'foreignKey':_0xe2da('0x1bd')});db[_0xe2da('0xba')][_0xe2da('0x10d')](db[_0xe2da('0xba')],{'as':_0xe2da('0x1be'),'foreignKey':_0xe2da('0x1ba')});db[_0xe2da('0xba')]['belongsTo'](db['Variable'],{'as':'Variable','foreignKey':_0xe2da('0x1bf')});db[_0xe2da('0x1c5')][_0xe2da('0x10d')](db[_0xe2da('0xbd')],{'as':_0xe2da('0x1b6'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0xe2da('0xbd')][_0xe2da('0x10d')](db[_0xe2da('0xbf')],{'as':'Subjects','foreignKey':'SubjectId'});db[_0xe2da('0xbd')][_0xe2da('0x10d')](db['VtigerField'],{'as':'Descriptions','foreignKey':'DescriptionId'});db['VtigerConfiguration'][_0xe2da('0x10d')](db[_0xe2da('0xbf')],{'as':_0xe2da('0x1b3'),'foreignKey':'FieldId'});db[_0xe2da('0xbd')]['belongsTo'](db[_0xe2da('0x1c5')],{'as':_0xe2da('0x16b'),'foreignKey':'AccountId'});db[_0xe2da('0xbf')][_0xe2da('0x10d')](db['VtigerField'],{'as':'Subject','foreignKey':_0xe2da('0x1b8')});db[_0xe2da('0xbf')][_0xe2da('0x10d')](db[_0xe2da('0xbf')],{'as':_0xe2da('0x1bc'),'foreignKey':'DescriptionId'});db['VtigerField'][_0xe2da('0x10d')](db['VtigerField'],{'as':_0xe2da('0x1be'),'foreignKey':_0xe2da('0x1ba')});db[_0xe2da('0xbf')][_0xe2da('0x11b')](db[_0xe2da('0x90')],{'as':_0xe2da('0x90'),'foreignKey':_0xe2da('0x1bf')});db[_0xe2da('0xc1')][_0xe2da('0x10d')](db[_0xe2da('0x1c6')],{'as':_0xe2da('0x1b6'),'onDelete':_0xe2da('0x10c'),'foreignKey':'AccountId'});db[_0xe2da('0x1c6')][_0xe2da('0x10d')](db[_0xe2da('0x1c7')],{'as':_0xe2da('0x1b7'),'foreignKey':_0xe2da('0x1b8')});db[_0xe2da('0x1c6')][_0xe2da('0x10d')](db[_0xe2da('0x1c7')],{'as':_0xe2da('0x1b9'),'foreignKey':_0xe2da('0x1bd')});db[_0xe2da('0x1c6')][_0xe2da('0x10d')](db['ServicenowField'],{'as':_0xe2da('0x1b3'),'foreignKey':'FieldId'});db[_0xe2da('0x1c6')][_0xe2da('0x11b')](db['ServicenowAccount'],{'as':_0xe2da('0x16b'),'foreignKey':_0xe2da('0x1bb')});db[_0xe2da('0x1c7')][_0xe2da('0x10d')](db[_0xe2da('0x1c7')],{'as':_0xe2da('0x1c8'),'foreignKey':_0xe2da('0x1b8')});db['ServicenowField'][_0xe2da('0x10d')](db['ServicenowField'],{'as':'Description','foreignKey':_0xe2da('0x1bd')});db['ServicenowField'][_0xe2da('0x10d')](db['ServicenowField'],{'as':_0xe2da('0x1be'),'foreignKey':_0xe2da('0x1ba')});db[_0xe2da('0x1c7')]['belongsTo'](db['Variable'],{'as':_0xe2da('0x90'),'foreignKey':_0xe2da('0x1bf')});db[_0xe2da('0xc4')][_0xe2da('0x10d')](db[_0xe2da('0xc6')],{'as':_0xe2da('0x1b6'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1bb')});db[_0xe2da('0xc6')]['hasMany'](db[_0xe2da('0xc7')],{'as':_0xe2da('0x1b7'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1b8')});db[_0xe2da('0xc6')][_0xe2da('0x10d')](db['Dynamics365Field'],{'as':'Descriptions','onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1bd')});db[_0xe2da('0xc6')][_0xe2da('0x10d')](db['Dynamics365Field'],{'as':'Fields','onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1ba')});db[_0xe2da('0xc6')][_0xe2da('0x11b')](db['Dynamics365Account'],{'as':_0xe2da('0x16b'),'foreignKey':_0xe2da('0x1bb')});db[_0xe2da('0xc7')][_0xe2da('0x10d')](db['Dynamics365Field'],{'as':'Subject','foreignKey':_0xe2da('0x1b8')});db['Dynamics365Field'][_0xe2da('0x10d')](db[_0xe2da('0xc7')],{'as':_0xe2da('0x1bc'),'foreignKey':_0xe2da('0x1bd')});db[_0xe2da('0xc7')]['hasMany'](db[_0xe2da('0xc7')],{'as':_0xe2da('0x1be'),'foreignKey':_0xe2da('0x1ba')});db[_0xe2da('0xc7')]['belongsTo'](db[_0xe2da('0x90')],{'as':_0xe2da('0x90'),'foreignKey':_0xe2da('0x1bf')});db[_0xe2da('0x1c9')][_0xe2da('0x10d')](db[_0xe2da('0xca')],{'as':_0xe2da('0x1b6'),'onDelete':'cascade','foreignKey':_0xe2da('0x1bb')});db[_0xe2da('0xca')]['hasMany'](db[_0xe2da('0xcc')],{'as':_0xe2da('0x1b7'),'foreignKey':_0xe2da('0x1b8')});db[_0xe2da('0xca')]['hasMany'](db['FreshsalesField'],{'as':_0xe2da('0x1b9'),'foreignKey':_0xe2da('0x1bd')});db[_0xe2da('0xca')][_0xe2da('0x10d')](db[_0xe2da('0xcc')],{'as':_0xe2da('0x1b3'),'foreignKey':'FieldId'});db[_0xe2da('0xca')][_0xe2da('0x11b')](db[_0xe2da('0x1c9')],{'as':_0xe2da('0x16b'),'foreignKey':_0xe2da('0x1bb')});db[_0xe2da('0xcc')][_0xe2da('0x10d')](db[_0xe2da('0xcc')],{'as':_0xe2da('0x1c8'),'foreignKey':_0xe2da('0x1b8')});db[_0xe2da('0xcc')][_0xe2da('0x10d')](db[_0xe2da('0xcc')],{'as':_0xe2da('0x1bc'),'foreignKey':_0xe2da('0x1bd')});db[_0xe2da('0xcc')][_0xe2da('0x10d')](db[_0xe2da('0xcc')],{'as':'Field','foreignKey':_0xe2da('0x1ba')});db[_0xe2da('0xcc')][_0xe2da('0x11b')](db['Variable'],{'as':_0xe2da('0x90'),'foreignKey':_0xe2da('0x1bf')});db[_0xe2da('0x1ca')][_0xe2da('0x11b')](db[_0xe2da('0x62')],{});db[_0xe2da('0x1ca')]['belongsTo'](db[_0xe2da('0x14e')],{'as':'List','foreignKey':_0xe2da('0x181')});db[_0xe2da('0x1ca')][_0xe2da('0x11b')](db[_0xe2da('0x72')],{'as':_0xe2da('0x15d'),'foreignKey':_0xe2da('0x17b')});db[_0xe2da('0x1ca')]['belongsTo'](db[_0xe2da('0x64')],{});db[_0xe2da('0x1ca')][_0xe2da('0x11b')](db[_0xe2da('0x66')],{});db[_0xe2da('0x1ca')][_0xe2da('0x11b')](db[_0xe2da('0x14')],{});db['ChatQueueReport'][_0xe2da('0x11b')](db[_0xe2da('0x6a')],{});db[_0xe2da('0x1cb')][_0xe2da('0x11b')](db[_0xe2da('0x14')],{'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1cc')});db[_0xe2da('0x1cb')][_0xe2da('0x11b')](db['User'],{'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1cd')});db[_0xe2da('0x146')][_0xe2da('0x10d')](db[_0xe2da('0x1ce')],{'foreignKey':_0xe2da('0x1cf'),'onDelete':_0xe2da('0x10c')});db[_0xe2da('0x146')]['hasMany'](db[_0xe2da('0xd2')],{'foreignKey':_0xe2da('0x1cf'),'onDelete':_0xe2da('0x10c')});db[_0xe2da('0xd6')][_0xe2da('0x11b')](db[_0xe2da('0x134')],{});db['SmsQueueReport']['belongsTo'](db[_0xe2da('0x14e')],{'as':_0xe2da('0x165'),'foreignKey':_0xe2da('0x181')});db[_0xe2da('0xd6')][_0xe2da('0x11b')](db[_0xe2da('0x72')],{'as':'Contact','foreignKey':_0xe2da('0x17b')});db[_0xe2da('0xd6')]['belongsTo'](db[_0xe2da('0x57')],{});db['SmsQueueReport'][_0xe2da('0x11b')](db[_0xe2da('0x183')],{});db['SmsQueueReport'][_0xe2da('0x11b')](db[_0xe2da('0x14')],{});db['SmsQueueReport'][_0xe2da('0x11b')](db[_0xe2da('0x59')],{});db['JscriptyProject'][_0xe2da('0x10d')](db[_0xe2da('0x146')],{'foreignKey':_0xe2da('0x1d0')});db[_0xe2da('0xda')]['hasMany'](db[_0xe2da('0x1ce')],{'foreignKey':'ProjectId'});db[_0xe2da('0xda')][_0xe2da('0x10d')](db[_0xe2da('0xd2')],{'foreignKey':_0xe2da('0x1d0')});db[_0xe2da('0xdf')]['belongsToMany'](db['User'],{'as':_0xe2da('0x18c'),'through':'user_has_square_projects'});db[_0xe2da('0xe3')][_0xe2da('0x11c')](db[_0xe2da('0x14')],{'as':'Agents','through':_0xe2da('0x1d1')});db['Team'][_0xe2da('0x11c')](db[_0xe2da('0x1d')],{'through':_0xe2da('0x107'),'as':_0xe2da('0x126')});db[_0xe2da('0xe3')][_0xe2da('0x11c')](db[_0xe2da('0x41')],{'through':_0xe2da('0x169'),'as':_0xe2da('0x129')});db[_0xe2da('0xe3')][_0xe2da('0x11c')](db[_0xe2da('0x6a')],{'through':_0xe2da('0x1d2'),'as':_0xe2da('0x12a')});db[_0xe2da('0xe3')][_0xe2da('0x11c')](db[_0xe2da('0x53')],{'through':_0xe2da('0x1d3'),'as':_0xe2da('0x1d4')});db['Team'][_0xe2da('0x11c')](db[_0xe2da('0x59')],{'through':_0xe2da('0x187'),'as':'SmsQueues'});db[_0xe2da('0xe3')]['belongsToMany'](db[_0xe2da('0x60')],{'through':'team_has_openchannel_queues','as':'OpenchannelQueues'});db[_0xe2da('0xe3')][_0xe2da('0x11c')](db[_0xe2da('0x104')],{'through':'team_has_whatsapp_queues','as':_0xe2da('0x1d5')});db[_0xe2da('0xe3')][_0xe2da('0x11c')](db[_0xe2da('0x127')],{'through':_0xe2da('0x1d6'),'as':'VoicePrefixes'});db[_0xe2da('0xe7')][_0xe2da('0x10d')](db['CmHopper'],{'as':_0xe2da('0x143'),'foreignKey':'CampaignId'});db[_0xe2da('0xe7')][_0xe2da('0x10d')](db[_0xe2da('0x76')],{'as':'HopperFinals','foreignKey':_0xe2da('0x19e')});db[_0xe2da('0xe7')][_0xe2da('0x10d')](db['CmHopperHistory'],{'as':_0xe2da('0x1d7'),'foreignKey':_0xe2da('0x19e')});db[_0xe2da('0xe7')][_0xe2da('0x10d')](db['CmHopperBlack'],{'as':_0xe2da('0x145'),'foreignKey':_0xe2da('0x19e')});db['Campaign'][_0xe2da('0x11b')](db[_0xe2da('0x147')],{'as':_0xe2da('0x147'),'foreignKey':_0xe2da('0x1d8')});db['Campaign']['belongsTo'](db['Trunk'],{'as':_0xe2da('0x148'),'foreignKey':'TrunkBackupId'});db[_0xe2da('0xe7')]['belongsTo'](db[_0xe2da('0x14a')],{'as':_0xe2da('0x14a'),'foreignKey':_0xe2da('0x14b')});db[_0xe2da('0xe7')]['belongsTo'](db[_0xe2da('0xdf')],{'as':_0xe2da('0xdf'),'foreignKey':_0xe2da('0x1d9')});db[_0xe2da('0xe7')][_0xe2da('0x11c')](db[_0xe2da('0x14e')],{'as':_0xe2da('0x14f'),'through':'campaigns_has_cm_lists'});db['Campaign'][_0xe2da('0x11c')](db[_0xe2da('0x14e')],{'as':_0xe2da('0x153'),'through':_0xe2da('0x1da')});db['Attachment'][_0xe2da('0x11b')](db[_0xe2da('0x68')],{'as':_0xe2da('0x68'),'foreignKey':_0xe2da('0x173')});db[_0xe2da('0xeb')]['belongsTo'](db[_0xe2da('0x44')],{});db[_0xe2da('0xeb')][_0xe2da('0x11b')](db[_0xe2da('0x11f')],{});db[_0xe2da('0xeb')]['belongsTo'](db[_0xe2da('0x12f')],{'foreignKey':_0xe2da('0x1db'),'as':_0xe2da('0x1dc')});db[_0xe2da('0xeb')]['belongsTo'](db[_0xe2da('0x14')],{'foreignKey':'FromUserId','as':_0xe2da('0x1dd')});db[_0xe2da('0xeb')]['belongsTo'](db[_0xe2da('0x14')],{'foreignKey':_0xe2da('0x1de'),'as':_0xe2da('0x1df')});db[_0xe2da('0xeb')]['belongsTo'](db[_0xe2da('0x41')],{'foreignKey':'ToMailQueueId','as':'ToQueue'});db['MailTransferReport'][_0xe2da('0x11b')](db[_0xe2da('0x12f')],{'foreignKey':'ToMailAccountId','as':_0xe2da('0x1e0')});db[_0xe2da('0xed')]['belongsTo'](db['ChatMessage'],{});db['ChatTransferReport'][_0xe2da('0x11b')](db[_0xe2da('0x64')],{});db[_0xe2da('0xed')]['belongsTo'](db['ChatWebsite'],{'foreignKey':_0xe2da('0x1e1'),'as':_0xe2da('0x1dc')});db['ChatTransferReport'][_0xe2da('0x11b')](db[_0xe2da('0x14')],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0xe2da('0xed')][_0xe2da('0x11b')](db['User'],{'foreignKey':_0xe2da('0x1de'),'as':'ToAgent'});db[_0xe2da('0xed')]['belongsTo'](db[_0xe2da('0x6a')],{'foreignKey':_0xe2da('0x1e2'),'as':_0xe2da('0x1e3')});db['ChatTransferReport'][_0xe2da('0x11b')](db[_0xe2da('0x62')],{'foreignKey':_0xe2da('0x1e4'),'as':'ToAccount'});db['FaxTransferReport'][_0xe2da('0x11b')](db[_0xe2da('0x51')],{});db[_0xe2da('0x1e5')]['belongsTo'](db[_0xe2da('0x4f')],{});db[_0xe2da('0x1e5')]['belongsTo'](db[_0xe2da('0x4c')],{'foreignKey':_0xe2da('0x1e6'),'as':_0xe2da('0x1dc')});db[_0xe2da('0x1e5')][_0xe2da('0x11b')](db[_0xe2da('0x14')],{'foreignKey':_0xe2da('0x1e7'),'as':_0xe2da('0x1dd')});db[_0xe2da('0x1e5')][_0xe2da('0x11b')](db[_0xe2da('0x14')],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0xe2da('0x1e5')][_0xe2da('0x11b')](db[_0xe2da('0x53')],{'foreignKey':_0xe2da('0x1e8'),'as':'ToQueue'});db[_0xe2da('0x1e5')]['belongsTo'](db[_0xe2da('0x4c')],{'foreignKey':_0xe2da('0x1e9'),'as':_0xe2da('0x1e0')});db[_0xe2da('0x1ea')][_0xe2da('0x11b')](db[_0xe2da('0x5f')],{});db[_0xe2da('0x1ea')][_0xe2da('0x11b')](db['OpenchannelInteraction'],{});db['OpenchannelTransferReport'][_0xe2da('0x11b')](db[_0xe2da('0x5a')],{'foreignKey':_0xe2da('0x1eb'),'as':'FromAccount'});db[_0xe2da('0x1ea')][_0xe2da('0x11b')](db[_0xe2da('0x14')],{'foreignKey':_0xe2da('0x1e7'),'as':_0xe2da('0x1dd')});db[_0xe2da('0x1ea')][_0xe2da('0x11b')](db['User'],{'foreignKey':_0xe2da('0x1de'),'as':_0xe2da('0x1df')});db[_0xe2da('0x1ea')][_0xe2da('0x11b')](db[_0xe2da('0x60')],{'foreignKey':_0xe2da('0x1ec'),'as':_0xe2da('0x1e3')});db[_0xe2da('0x1ea')][_0xe2da('0x11b')](db[_0xe2da('0x5a')],{'foreignKey':_0xe2da('0x1ed'),'as':'ToAccount'});db['SmsTransferReport'][_0xe2da('0x11b')](db[_0xe2da('0x183')],{});db['SmsTransferReport'][_0xe2da('0x11b')](db[_0xe2da('0x57')],{});db[_0xe2da('0xf1')][_0xe2da('0x11b')](db[_0xe2da('0x134')],{'foreignKey':_0xe2da('0x1ee'),'as':_0xe2da('0x1dc')});db[_0xe2da('0xf1')]['belongsTo'](db[_0xe2da('0x14')],{'foreignKey':_0xe2da('0x1e7'),'as':'FromAgent'});db[_0xe2da('0xf1')]['belongsTo'](db['User'],{'foreignKey':_0xe2da('0x1de'),'as':_0xe2da('0x1df')});db[_0xe2da('0xf1')]['belongsTo'](db['SmsQueue'],{'foreignKey':_0xe2da('0x1ef'),'as':'ToQueue'});db[_0xe2da('0xf1')]['belongsTo'](db[_0xe2da('0x134')],{'foreignKey':'ToSmsAccountId','as':_0xe2da('0x1e0')});db[_0xe2da('0x14e')][_0xe2da('0x10d')](db[_0xe2da('0x162')],{'as':'Dispositions','foreignKey':_0xe2da('0x181'),'onDelete':_0xe2da('0x10c')});db[_0xe2da('0x14e')][_0xe2da('0x10d')](db[_0xe2da('0x7a')],{'as':_0xe2da('0x1f0'),'foreignKey':_0xe2da('0x181')});db[_0xe2da('0x14e')][_0xe2da('0x10d')](db['CmContact'],{'as':_0xe2da('0x11e'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x181')});db['CmList']['hasMany'](db[_0xe2da('0x76')],{'as':_0xe2da('0x144'),'foreignKey':_0xe2da('0x181')});db['CmList'][_0xe2da('0x10d')](db[_0xe2da('0x112')],{'as':_0xe2da('0x113'),'foreignKey':_0xe2da('0x181')});db[_0xe2da('0x14e')]['hasMany'](db[_0xe2da('0x78')],{'as':_0xe2da('0x78'),'foreignKey':_0xe2da('0x181')});db[_0xe2da('0x14e')][_0xe2da('0x11c')](db[_0xe2da('0x1d')],{'as':_0xe2da('0x1f1'),'through':'voice_queues_has_cm_lists'});db[_0xe2da('0x14e')]['belongsToMany'](db['User'],{'as':_0xe2da('0x151'),'through':'cm_user_has_lists'});db['VoicePrefix']['hasMany'](db['VoiceExtension'],{'as':'Extensions','onDelete':_0xe2da('0x10c')});db[_0xe2da('0x127')][_0xe2da('0x11c')](db['User'],{'as':_0xe2da('0x151'),'through':_0xe2da('0x10a')});db[_0xe2da('0x127')][_0xe2da('0x11c')](db[_0xe2da('0xe3')],{'through':_0xe2da('0x1d6'),'as':'Teams'});db[_0xe2da('0xf3')]['hasMany'](db['User'],{'as':'Users','foreignKey':_0xe2da('0x1f2')});db[_0xe2da('0xf3')]['hasMany'](db['UserProfileSection'],{'as':_0xe2da('0x1f3'),'foreignKey':_0xe2da('0x1f2'),'onDelete':'cascade'});db[_0xe2da('0xf5')][_0xe2da('0x10d')](db[_0xe2da('0x1f4')],{'as':_0xe2da('0x1f5'),'foreignKey':_0xe2da('0x1f6'),'onDelete':_0xe2da('0x10c')});db['WhatsappAccount'][_0xe2da('0x10d')](db[_0xe2da('0x162')],{'as':_0xe2da('0x163'),'foreignKey':_0xe2da('0x1f7'),'onDelete':_0xe2da('0x10c')});db[_0xe2da('0x136')]['hasMany'](db['CannedAnswer'],{'as':_0xe2da('0x178'),'foreignKey':_0xe2da('0x1f7')});db['WhatsappAccount']['hasMany'](db[_0xe2da('0xfe')],{'as':_0xe2da('0x156'),'foreignKey':_0xe2da('0x1f7')});db[_0xe2da('0x136')][_0xe2da('0x10d')](db[_0xe2da('0xfc')],{'as':_0xe2da('0x164')});db[_0xe2da('0x136')][_0xe2da('0x10d')](db[_0xe2da('0xfa')],{'as':_0xe2da('0x13e')});db[_0xe2da('0x136')][_0xe2da('0x11b')](db[_0xe2da('0x14e')],{'as':_0xe2da('0x165'),'foreignKey':'ListId'});db[_0xe2da('0x136')][_0xe2da('0x11b')](db[_0xe2da('0x14c')],{'as':_0xe2da('0x168'),'foreignKey':_0xe2da('0x14d')});db[_0xe2da('0x136')][_0xe2da('0x11c')](db['User'],{'as':_0xe2da('0x151'),'through':_0xe2da('0x138')});db[_0xe2da('0xfa')][_0xe2da('0x11b')](db[_0xe2da('0x14')],{'onDelete':_0xe2da('0x174')});db[_0xe2da('0xfa')]['belongsTo'](db[_0xe2da('0x104')],{'onDelete':_0xe2da('0x174')});db[_0xe2da('0xfa')][_0xe2da('0x11b')](db['WhatsappAccount'],{'onDelete':_0xe2da('0x174')});db['WhatsappApplication'][_0xe2da('0x11b')](db[_0xe2da('0x14a')],{'onDelete':_0xe2da('0x174'),'foreignKey':_0xe2da('0x14b')});db['WhatsappApplication']['belongsTo'](db['Tag'],{'onDelete':_0xe2da('0x174'),'foreignKey':_0xe2da('0x175')});db['WhatsappInteraction']['hasMany'](db[_0xe2da('0xfe')],{'as':_0xe2da('0x156'),'onDelete':_0xe2da('0x10c'),'foreignKey':_0xe2da('0x1f8')});db['WhatsappInteraction'][_0xe2da('0x11b')](db['WhatsappAccount'],{'as':_0xe2da('0x16b'),'foreignKey':_0xe2da('0x1f7')});db['WhatsappInteraction'][_0xe2da('0x11b')](db['CmContact'],{'as':'Contact','foreignKey':'ContactId'});db[_0xe2da('0xfc')][_0xe2da('0x11b')](db['User'],{'as':_0xe2da('0x16c'),'foreignKey':_0xe2da('0x10f')});db[_0xe2da('0xfc')]['belongsToMany'](db[_0xe2da('0x8c')],{'through':_0xe2da('0x1ae'),'as':_0xe2da('0x16e')});db['WhatsappInteraction'][_0xe2da('0x11c')](db[_0xe2da('0x8c')],{'through':_0xe2da('0x1ae'),'as':_0xe2da('0x17d')});db[_0xe2da('0xfc')][_0xe2da('0x11c')](db[_0xe2da('0x14')],{'as':_0xe2da('0x18c'),'through':'user_has_whatsapp_interactions','foreignKey':_0xe2da('0x1f8')});db[_0xe2da('0xfe')]['belongsTo'](db[_0xe2da('0x14')],{'as':_0xe2da('0x14')});db[_0xe2da('0xfe')][_0xe2da('0x11b')](db[_0xe2da('0x72')],{'onDelete':'cascade','as':'Contact'});db['WhatsappMessage'][_0xe2da('0x11b')](db['WhatsappInteraction'],{'onDelete':_0xe2da('0x10c'),'as':'Interaction','foreignKey':'WhatsappInteractionId'});db[_0xe2da('0xfe')][_0xe2da('0x11b')](db[_0xe2da('0x136')],{'as':_0xe2da('0x16b'),'foreignKey':_0xe2da('0x1f7')});db[_0xe2da('0x100')][_0xe2da('0x11b')](db['WhatsappAccount'],{});db['WhatsappQueueReport'][_0xe2da('0x11b')](db[_0xe2da('0x14e')],{'as':_0xe2da('0x165'),'foreignKey':_0xe2da('0x181')});db['WhatsappQueueReport']['belongsTo'](db['CmContact'],{'as':_0xe2da('0x15d'),'foreignKey':_0xe2da('0x17b')});db[_0xe2da('0x100')][_0xe2da('0x11b')](db['WhatsappInteraction'],{});db[_0xe2da('0x100')][_0xe2da('0x11b')](db[_0xe2da('0x104')],{});db['WhatsappQueueReport'][_0xe2da('0x11b')](db[_0xe2da('0xfe')],{});db['WhatsappQueueReport'][_0xe2da('0x11b')](db['User'],{});db['WhatsappTransferReport'][_0xe2da('0x11b')](db[_0xe2da('0xfe')],{});db[_0xe2da('0x102')][_0xe2da('0x11b')](db[_0xe2da('0xfc')],{});db['WhatsappTransferReport'][_0xe2da('0x11b')](db['WhatsappAccount'],{'foreignKey':_0xe2da('0x1f9'),'as':_0xe2da('0x1dc')});db[_0xe2da('0x102')][_0xe2da('0x11b')](db[_0xe2da('0x136')],{'foreignKey':'ToWhatsappAccountId','as':_0xe2da('0x1e0')});db[_0xe2da('0x102')]['belongsTo'](db['WhatsappQueue'],{'foreignKey':_0xe2da('0x1fa'),'as':_0xe2da('0x1e3')});db[_0xe2da('0x102')]['belongsTo'](db[_0xe2da('0x14')],{'foreignKey':_0xe2da('0x1e7'),'as':_0xe2da('0x1dd')});db[_0xe2da('0x102')][_0xe2da('0x11b')](db[_0xe2da('0x14')],{'foreignKey':_0xe2da('0x1de'),'as':_0xe2da('0x1df')});db['WhatsappQueue'][_0xe2da('0x11c')](db[_0xe2da('0x14')],{'as':'Agents','through':_0xe2da('0x3c'),'foreignKey':_0xe2da('0x1fb')});db['WhatsappQueue'][_0xe2da('0x11c')](db['Team'],{'through':'team_has_whatsapp_queues','as':_0xe2da('0x152')});module[_0xe2da('0x1fc')]={'db':db,'dbH':dbH};
\ No newline at end of file
index c44eb6a..e7a4e94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcca5=['/api/analytics/field_reports','./api/analyticFieldReport','/api/integrations/salesforce/accounts','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','./api/intVtigerAccount','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','./api/chatInternalMessage','/api/jscripty/answers/reports','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','./api/team','./api/license','/api/campaigns','./api/campaign','/api/migrations','./api/migration','./api/attachment','/api/plugins','/api/mail/reports/transfer','./api/mailTransferReport','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/userNotification','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/jira','./api/jira','./api/rpc','./api/version','/api/system','./api/system','/api/pm2','/apidoc','static','join','/www','/demo','root','snippet','3.0.0','/plugins','/server/files/plugins','route','get','sendFile','appPath','password','apiKey','lastName','street','mobile','fax','email','clientId','securityToken','code','accessKey','tenantId','token','channelSecret','accessTokenSecret','authToken','consumerKey','consumerSecret','calleridname','calleridnum','exten','clientEmail','privateKey','accesskeyid','accountSid','dsn','secret','registry','oldPassword','isPlainObject','isArray','isString','@@{','replace','}@@','includes','express','express-winston','util','./errors','./config/environment','./config/logger','api','auth','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','format','method','headers','x-forwarded-for','connection','remoteAddress','statusCode','responseTime','user','name','role','inspect','use','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','url','other','agent_name','./api/user','./api/voiceChanSpy','/api/voice/contexts','/api/voice/extensions','/api/voice/mohs','/api/voice/recordings','./api/voiceRecording','/api/voice/mails','./api/voiceMail','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceAgentReport','/api/voice/queues/reports','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','/api/mail/reports/queue','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxInteraction','/api/fax/messages','./api/faxQueue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','/api/openchannel/interactions','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','/api/openchannel/reports/queue','/api/chat/applications','./api/chatInteraction','/api/chat/messages','./api/chatMessage','./api/chatOfflineMessage','/api/chat/queues','/api/chat/groups','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','/api/cm/hopper','./api/cmHopper','./api/cmHopperBlack','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','/api/intervals','/api/pauses','./api/pause','./api/cdr','./api/voiceQueuesLog','/api/schedules','/api/sounds','/api/tags','./api/tag','/api/templates','./api/template','./api/trigger','/api/variables','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports'];(function(_0x417d53,_0x1b92c8){var _0x31c95b=function(_0x5a5c59){while(--_0x5a5c59){_0x417d53['push'](_0x417d53['shift']());}};_0x31c95b(++_0x1b92c8);}(_0xcca5,0xac));var _0x5cca=function(_0x30bd4d,_0x50eb60){_0x30bd4d=_0x30bd4d-0x0;var _0x306915=_0xcca5[_0x30bd4d];return _0x306915;};'use strict';var _=require('lodash');var path=require('path');var express=require(_0x5cca('0x0'));var ewinston=require(_0x5cca('0x1'));var util=require(_0x5cca('0x2'));var errors=require(_0x5cca('0x3'));var config=require(_0x5cca('0x4'));var logger=require(_0x5cca('0x5'))(_0x5cca('0x6'));var authLogger=require(_0x5cca('0x5'))(_0x5cca('0x7'));exports['default']=function(_0x3e3679){_0x3e3679['use'](ewinston[_0x5cca('0x8')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0xa16841,_0x52dec3){var _0x10dcf7=_0x5cca('0x9');if(!_[_0x5cca('0xa')](_0xa16841['body'])){_0x10dcf7+='\x20body=%s';var _0x2ebf81=_0xa16841[_0x5cca('0xb')];maskSensitiveData(_0x2ebf81);}return util[_0x5cca('0xc')](_0x10dcf7,_0xa16841[_0x5cca('0xd')],_0xa16841[_0x5cca('0xe')][_0x5cca('0xf')]?_0xa16841['headers'][_0x5cca('0xf')]:_0xa16841[_0x5cca('0x10')][_0x5cca('0x11')]||_0xa16841['ip'],_0xa16841['url'],_0x52dec3[_0x5cca('0x12')],_0x52dec3[_0x5cca('0x13')],_0xa16841[_0x5cca('0x14')]?_0xa16841[_0x5cca('0x14')]['id']:null,_0xa16841[_0x5cca('0x14')]?_0xa16841[_0x5cca('0x14')][_0x5cca('0x15')]:null,_0xa16841[_0x5cca('0x14')]?_0xa16841[_0x5cca('0x14')][_0x5cca('0x16')]:null,_0x2ebf81?util[_0x5cca('0x17')](_0x2ebf81,![],null):'');}}));_0x3e3679[_0x5cca('0x18')](ewinston[_0x5cca('0x8')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x52954c,_0x4ef950){var _0x448ae8=_0x5cca('0x19');if(_0x52954c[_0x5cca('0xb')]&&_0x52954c[_0x5cca('0xb')][_0x5cca('0x1a')]&&_0x52954c['body'][_0x5cca('0x1b')]){_0x448ae8='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util[_0x5cca('0xc')](_0x448ae8,_0x52954c[_0x5cca('0xd')],_0x52954c['headers']['x-forwarded-for']?_0x52954c[_0x5cca('0xe')][_0x5cca('0xf')]:_0x52954c[_0x5cca('0x10')]['remoteAddress']||_0x52954c['ip'],_0x52954c[_0x5cca('0x1c')],_0x4ef950[_0x5cca('0x12')],_0x4ef950[_0x5cca('0x13')],_0x52954c[_0x5cca('0x14')]?_0x52954c[_0x5cca('0x14')]['id']:null,_0x52954c[_0x5cca('0x14')]?_0x52954c[_0x5cca('0x14')][_0x5cca('0x15')]:null,_0x52954c[_0x5cca('0x14')]?_0x52954c[_0x5cca('0x14')][_0x5cca('0x16')]:null,_0x52954c[_0x5cca('0xb')]&&_0x52954c[_0x5cca('0xb')]['device']?_0x52954c[_0x5cca('0xb')][_0x5cca('0x1a')]:_0x5cca('0x1d'),_0x52954c['body']&&_0x52954c[_0x5cca('0xb')][_0x5cca('0x1b')]?_0x52954c['body']['agent_id']:'',_0x52954c[_0x5cca('0xb')]&&_0x52954c['body'][_0x5cca('0x1e')]?_0x52954c[_0x5cca('0xb')][_0x5cca('0x1e')]:'');},'ignoreRoute':function(_0x5d97bf){var _0x1a516f=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x1a516f['test'](_0x5d97bf['url']);}}));_0x3e3679['use']('/api/users',require(_0x5cca('0x1f')));_0x3e3679['use']('/api/voice/chanspy',require(_0x5cca('0x20')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x21'),require('./api/voiceContext'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x22'),require('./api/voiceExtension'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x23'),require('./api/voiceMusicOnHold'));_0x3e3679[_0x5cca('0x18')]('/api/voice/queues',require('./api/voiceQueue'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x24'),require(_0x5cca('0x25')));_0x3e3679[_0x5cca('0x18')]('/api/screen/recordings',require('./api/screenRecording'));_0x3e3679['use'](_0x5cca('0x26'),require(_0x5cca('0x27')));_0x3e3679[_0x5cca('0x18')]('/api/voice/mails/messages',require('./api/voiceMailMessage'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x28'),require(_0x5cca('0x29')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x2a'),require('./api/voiceDialReport'));_0x3e3679[_0x5cca('0x18')]('/api/voice/agents/reports',require(_0x5cca('0x2b')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x2c'),require('./api/voiceQueueReport'));_0x3e3679['use'](_0x5cca('0x2d'),require(_0x5cca('0x2e')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x2f'),require(_0x5cca('0x30')));_0x3e3679[_0x5cca('0x18')]('/api/voice/transfers/reports',require(_0x5cca('0x31')));_0x3e3679['use'](_0x5cca('0x32'),require(_0x5cca('0x33')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x34'),require(_0x5cca('0x35')));_0x3e3679[_0x5cca('0x18')]('/api/mail/queues',require('./api/mailQueue'));_0x3e3679['use'](_0x5cca('0x36'),require(_0x5cca('0x37')));_0x3e3679['use'](_0x5cca('0x38'),require(_0x5cca('0x39')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x3a'),require(_0x5cca('0x3b')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x3c'),require('./api/mailApplication'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x3d'),require('./api/mailQueueReport'));_0x3e3679['use']('/api/dashboards',require(_0x5cca('0x3e')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x3f'),require(_0x5cca('0x40')));_0x3e3679['use'](_0x5cca('0x41'),require(_0x5cca('0x42')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x43'),require('./api/faxApplication'));_0x3e3679['use']('/api/fax/interactions',require(_0x5cca('0x44')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x45'),require('./api/faxMessage'));_0x3e3679[_0x5cca('0x18')]('/api/fax/queues',require(_0x5cca('0x46')));_0x3e3679[_0x5cca('0x18')]('/api/fax/reports/queue',require(_0x5cca('0x47')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x48'),require(_0x5cca('0x49')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x4a'),require('./api/smsApplication'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x4b'),require(_0x5cca('0x4c')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x4d'),require('./api/smsMessage'));_0x3e3679['use']('/api/sms/queues',require('./api/smsQueue'));_0x3e3679['use'](_0x5cca('0x4e'),require(_0x5cca('0x4f')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x50'),require('./api/openchannelApplication'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x51'),require('./api/openchannelInteraction'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x52'),require(_0x5cca('0x53')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x54'),require(_0x5cca('0x55')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x56'),require('./api/chatWebsite'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x57'),require('./api/openchannelQueueReport'));_0x3e3679['use'](_0x5cca('0x58'),require('./api/chatApplication'));_0x3e3679['use']('/api/chat/interactions',require(_0x5cca('0x59')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x5a'),require(_0x5cca('0x5b')));_0x3e3679[_0x5cca('0x18')]('/api/chat/offline_messages',require(_0x5cca('0x5c')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x5d'),require('./api/chatQueue'));_0x3e3679['use'](_0x5cca('0x5e'),require('./api/chatGroup'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x5f'),require(_0x5cca('0x60')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x61'),require(_0x5cca('0x62')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x63'),require('./api/cmContact'));_0x3e3679['use'](_0x5cca('0x64'),require(_0x5cca('0x65')));_0x3e3679[_0x5cca('0x18')]('/api/cm/hopper_black',require(_0x5cca('0x66')));_0x3e3679[_0x5cca('0x18')]('/api/cm/hopper_final',require(_0x5cca('0x67')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x68'),require(_0x5cca('0x69')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x6a'),require(_0x5cca('0x6b')));_0x3e3679['use'](_0x5cca('0x6c'),require(_0x5cca('0x6d')));_0x3e3679[_0x5cca('0x18')]('/api/automations',require(_0x5cca('0x6e')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x6f'),require(_0x5cca('0x70')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x71'),require(_0x5cca('0x72')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x73'),require('./api/condition'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x74'),require('./api/interval'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x75'),require(_0x5cca('0x76')));_0x3e3679['use']('/api/cdr',require(_0x5cca('0x77')));_0x3e3679['use']('/api/voiceQueuesLog',require(_0x5cca('0x78')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x79'),require('./api/schedule'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x7a'),require('./api/sound'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x7b'),require(_0x5cca('0x7c')));_0x3e3679['use'](_0x5cca('0x7d'),require(_0x5cca('0x7e')));_0x3e3679[_0x5cca('0x18')]('/api/triggers',require(_0x5cca('0x7f')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x80'),require('./api/variable'));_0x3e3679[_0x5cca('0x18')]('/api/integrations',require(_0x5cca('0x81')));_0x3e3679['use'](_0x5cca('0x82'),require(_0x5cca('0x83')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x84'),require('./api/analyticCustomReport'));_0x3e3679[_0x5cca('0x18')]('/api/analytics/default_reports',require('./api/analyticDefaultReport'));_0x3e3679['use']('/api/analytics/extracted_reports',require('./api/analyticExtractedReport'));_0x3e3679[_0x5cca('0x18')]('/api/analytics/metrics',require('./api/analyticMetric'));_0x3e3679['use'](_0x5cca('0x85'),require(_0x5cca('0x86')));_0x3e3679[_0x5cca('0x18')]('/api/analytics/tree_reports',require('./api/analyticTreeReport'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x87'),require('./api/intSalesforceAccount'));_0x3e3679['use'](_0x5cca('0x88'),require(_0x5cca('0x89')));_0x3e3679['use']('/api/integrations/salesforce/fields',require(_0x5cca('0x8a')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x8b'),require('./api/intSugarcrmAccount'));_0x3e3679[_0x5cca('0x18')]('/api/integrations/sugarcrm/configurations',require('./api/intSugarcrmConfiguration'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x8c'),require(_0x5cca('0x8d')));_0x3e3679['use'](_0x5cca('0x8e'),require('./api/intDeskAccount'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x8f'),require(_0x5cca('0x90')));_0x3e3679['use'](_0x5cca('0x91'),require(_0x5cca('0x92')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x93'),require(_0x5cca('0x94')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x95'),require(_0x5cca('0x96')));_0x3e3679['use'](_0x5cca('0x97'),require(_0x5cca('0x98')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x99'),require('./api/intZendeskAccount'));_0x3e3679['use'](_0x5cca('0x9a'),require(_0x5cca('0x9b')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x9c'),require(_0x5cca('0x9d')));_0x3e3679['use'](_0x5cca('0x9e'),require(_0x5cca('0x9f')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xa0'),require(_0x5cca('0xa1')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xa2'),require(_0x5cca('0xa3')));_0x3e3679[_0x5cca('0x18')]('/api/integrations/vtiger/accounts',require(_0x5cca('0xa4')));_0x3e3679['use']('/api/integrations/vtiger/configurations',require(_0x5cca('0xa5')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xa6'),require(_0x5cca('0xa7')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xa8'),require(_0x5cca('0xa9')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xaa'),require(_0x5cca('0xab')));_0x3e3679['use'](_0x5cca('0xac'),require(_0x5cca('0xad')));_0x3e3679[_0x5cca('0x18')]('/api/integrations/dynamics365/accounts',require(_0x5cca('0xae')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xaf'),require(_0x5cca('0xb0')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xb1'),require('./api/intDynamics365Field'));_0x3e3679[_0x5cca('0x18')]('/api/integrations/freshsales/accounts',require('./api/intFreshsalesAccount'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xb2'),require(_0x5cca('0xb3')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xb4'),require('./api/intFreshsalesField'));_0x3e3679['use'](_0x5cca('0xb5'),require(_0x5cca('0xb6')));_0x3e3679['use'](_0x5cca('0xb7'),require(_0x5cca('0xb8')));_0x3e3679[_0x5cca('0x18')]('/api/chat/internal/messages',require(_0x5cca('0xb9')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xba'),require('./api/jscriptyAnswerReport'));_0x3e3679['use'](_0x5cca('0xbb'),require(_0x5cca('0xbc')));_0x3e3679[_0x5cca('0x18')]('/api/jscripty/sessions/reports',require(_0x5cca('0xbd')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xbe'),require(_0x5cca('0xbf')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xc0'),require(_0x5cca('0xc1')));_0x3e3679['use']('/api/square/details/reports',require('./api/squareReportDetail'));_0x3e3679['use']('/api/jscripty/projects',require('./api/jscriptyProject'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xc2'),require(_0x5cca('0xc3')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xc4'),require(_0x5cca('0xc5')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xc6'),require('./api/squareProject'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xc7'),require(_0x5cca('0xc8')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xc9'),require(_0x5cca('0xca')));_0x3e3679['use']('/api/teams',require(_0x5cca('0xcb')));_0x3e3679['use']('/api/license',require(_0x5cca('0xcc')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xcd'),require(_0x5cca('0xce')));_0x3e3679['use'](_0x5cca('0xcf'),require(_0x5cca('0xd0')));_0x3e3679['use']('/api/attachments',require(_0x5cca('0xd1')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xd2'),require('./api/plugin'));_0x3e3679['use'](_0x5cca('0xd3'),require(_0x5cca('0xd4')));_0x3e3679[_0x5cca('0x18')]('/api/chat/reports/transfer',require(_0x5cca('0xd5')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xd6'),require(_0x5cca('0xd7')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xd8'),require(_0x5cca('0xd9')));_0x3e3679[_0x5cca('0x18')]('/api/sms/reports/transfer',require(_0x5cca('0xda')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xdb'),require(_0x5cca('0xdc')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xdd'),require(_0x5cca('0xde')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xdf'),require(_0x5cca('0xe0')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xe1'),require('./api/userProfileSection'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xe2'),require(_0x5cca('0xe3')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xe4'),require(_0x5cca('0xe5')));_0x3e3679[_0x5cca('0x18')]('/api/whatsapp/accounts',require(_0x5cca('0xe6')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xe7'),require(_0x5cca('0xe8')));_0x3e3679[_0x5cca('0x18')]('/api/whatsapp/interactions',require('./api/whatsappInteraction'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xe9'),require(_0x5cca('0xea')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xeb'),require(_0x5cca('0xec')));_0x3e3679['use'](_0x5cca('0xed'),require(_0x5cca('0xee')));_0x3e3679['use'](_0x5cca('0xef'),require(_0x5cca('0xf0')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xf1'),require(_0x5cca('0xf2')));_0x3e3679['use'](_0x5cca('0xf3'),require('./api/realtime'));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xf4'),require(_0x5cca('0xf5')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xf6'),require(_0x5cca('0xf7')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xf8'),require(_0x5cca('0xf9')));_0x3e3679[_0x5cca('0x18')]('/api/rpc',require(_0x5cca('0xfa')));_0x3e3679[_0x5cca('0x18')]('/api/version',require(_0x5cca('0xfb')));_0x3e3679['use'](_0x5cca('0xfc'),require(_0x5cca('0xfd')));_0x3e3679[_0x5cca('0x18')](_0x5cca('0xfe'),require('./api/pm2'));_0x3e3679[_0x5cca('0x18')]('/api/webbar',require('./api/webbar'));_0x3e3679['use'](_0x5cca('0xff'),express[_0x5cca('0x100')](path['join'](config['root'],_0x5cca('0xff'))));_0x3e3679[_0x5cca('0x18')]('/www',express['static'](path[_0x5cca('0x101')](config['root'],_0x5cca('0x102'))));_0x3e3679['use'](_0x5cca('0x103'),express[_0x5cca('0x100')](path[_0x5cca('0x101')](config[_0x5cca('0x104')],'/demo')));_0x3e3679[_0x5cca('0x18')]('/snippet',express[_0x5cca('0x100')](path[_0x5cca('0x101')](config[_0x5cca('0x104')],_0x5cca('0x105'),_0x5cca('0x106'))));_0x3e3679[_0x5cca('0x18')](_0x5cca('0x107'),express[_0x5cca('0x100')](path['join'](config[_0x5cca('0x104')],_0x5cca('0x108'))));_0x3e3679[_0x5cca('0x109')]('/:url(api|auth|components|app|bower_components|assets)/*')[_0x5cca('0x10a')](errors[0x194]);_0x3e3679['route']('/*')[_0x5cca('0x10a')](function(_0x40566f,_0x4461ef){_0x4461ef[_0x5cca('0x10b')](path['resolve'](_0x3e3679[_0x5cca('0x10a')](_0x5cca('0x10c'))+'/index.html'));});};var sensitiveFields=['username',_0x5cca('0x10d'),'newPassword',_0x5cca('0x10e'),'firstName',_0x5cca('0x10f'),_0x5cca('0x110'),'phone',_0x5cca('0x111'),_0x5cca('0x112'),_0x5cca('0x113'),_0x5cca('0x114'),'clientSecret',_0x5cca('0x115'),_0x5cca('0x116'),_0x5cca('0x117'),_0x5cca('0x118'),_0x5cca('0x119'),_0x5cca('0x11a'),'accessToken',_0x5cca('0x11b'),_0x5cca('0x11c'),_0x5cca('0x11d'),_0x5cca('0x11e'),'membername',_0x5cca('0x11f'),_0x5cca('0x120'),_0x5cca('0x121'),'vidaooApiKey',_0x5cca('0x122'),_0x5cca('0x123'),_0x5cca('0x124'),'secretaccesskey','key','user','pass',_0x5cca('0x125'),'localstationid',_0x5cca('0x126'),_0x5cca('0x127'),_0x5cca('0x128'),_0x5cca('0x129')];function maskSensitiveData(_0x44be4a){var _0x21c86e=/(?!^)[\s\S](?!$)/g;if(!_[_0x5cca('0x12a')](_0x44be4a))return;for(var _0x5416b5 in _0x44be4a){if(_[_0x5cca('0x12b')](_0x44be4a[_0x5416b5])){for(var _0xe3a84d=0x0;_0xe3a84d<_0x44be4a[_0x5416b5]['length'];_0xe3a84d++){maskSensitiveData(_0x44be4a[_0x5416b5][_0xe3a84d]);}}else if(_[_0x5cca('0x12a')](_0x44be4a[_0x5416b5])){maskSensitiveData(_0x44be4a[_0x5416b5]);}else if(_[_0x5cca('0x12c')](_0x44be4a[_0x5416b5])){_0x44be4a[_0x5416b5]=_0x44be4a[_0x5416b5]['replace'](/{{{/g,_0x5cca('0x12d'))[_0x5cca('0x12e')](/}}}/g,_0x5cca('0x12f'))[_0x5cca('0x12e')](/{{/g,'@{')[_0x5cca('0x12e')](/}}/g,'}@');if(_[_0x5cca('0x130')](sensitiveFields,_0x5416b5)){_0x44be4a[_0x5416b5]=_0x44be4a[_0x5416b5][_0x5cca('0x12e')](_0x21c86e,'*');}}}}
\ No newline at end of file
+var _0x7dce=['/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','/api/cm/companies','/api/cm/contacts','./api/cmContact','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','./api/disposition','/api/conditions','./api/condition','./api/interval','/api/pauses','./api/pause','/api/cdr','./api/cdr','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','./api/tag','./api/template','/api/triggers','./api/trigger','./api/variable','/api/integrations','/api/integrations/reports','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','./api/intDeskField','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowField','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','/api/integrations/freshsales/fields','./api/intFreshsalesField','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReportDetail','/api/jscripty/projects','/api/settings','./api/setting','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','/api/migrations','./api/migration','/api/attachments','./api/attachment','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','./api/cloudProvider','/api/realtime','/api/auth/local','./api/authLocal','/api/auth/google','/api/jira','./api/jira','/api/rpc','./api/rpc','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/apidoc','static','join','root','/www','/demo','/snippet','snippet','3.0.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','/index.html','username','firstName','lastName','street','mobile','email','clientId','securityToken','code','accessKey','tenantId','token','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','calleridname','calleridnum','exten','vidaooApiKey','privateKey','accesskeyid','key','pass','localstationid','dsn','secret','registry','oldPassword','isPlainObject','isArray','length','isString','replace','@@{','}@@','path','express-winston','./config/environment','./config/logger','api','auth','default','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','\x20body=%s','format','method','x-forwarded-for','headers','connection','responseTime','user','name','role','inspect','body','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','url','device','agent_name','test','/api/users','/api/voice/chanspy','./api/voiceChanSpy','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','./api/voiceMail','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','./api/smsAccount','/api/sms/applications','/api/sms/interactions','/api/sms/queues','/api/openchannel/accounts','./api/openchannelAccount','./api/openchannelApplication','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','./api/chatWebsite','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','./api/chatMessage','./api/chatOfflineMessage'];(function(_0x9ecb1a,_0x17e195){var _0x685cee=function(_0x8ad2ba){while(--_0x8ad2ba){_0x9ecb1a['push'](_0x9ecb1a['shift']());}};_0x685cee(++_0x17e195);}(_0x7dce,0xe8));var _0xe7dc=function(_0x26b8b5,_0xf5c2c1){_0x26b8b5=_0x26b8b5-0x0;var _0x2150a9=_0x7dce[_0x26b8b5];return _0x2150a9;};'use strict';var _=require('lodash');var path=require(_0xe7dc('0x0'));var express=require('express');var ewinston=require(_0xe7dc('0x1'));var util=require('util');var errors=require('./errors');var config=require(_0xe7dc('0x2'));var logger=require(_0xe7dc('0x3'))(_0xe7dc('0x4'));var authLogger=require('./config/logger')(_0xe7dc('0x5'));exports[_0xe7dc('0x6')]=function(_0x283ca3){_0x283ca3[_0xe7dc('0x7')](ewinston[_0xe7dc('0x8')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x43eb11,_0x26eb0c){var _0x3738bb=_0xe7dc('0x9');if(!_[_0xe7dc('0xa')](_0x43eb11['body'])){_0x3738bb+=_0xe7dc('0xb');var _0x1689b2=_0x43eb11['body'];maskSensitiveData(_0x1689b2);}return util[_0xe7dc('0xc')](_0x3738bb,_0x43eb11[_0xe7dc('0xd')],_0x43eb11['headers'][_0xe7dc('0xe')]?_0x43eb11[_0xe7dc('0xf')][_0xe7dc('0xe')]:_0x43eb11[_0xe7dc('0x10')]['remoteAddress']||_0x43eb11['ip'],_0x43eb11['url'],_0x26eb0c['statusCode'],_0x26eb0c[_0xe7dc('0x11')],_0x43eb11[_0xe7dc('0x12')]?_0x43eb11[_0xe7dc('0x12')]['id']:null,_0x43eb11[_0xe7dc('0x12')]?_0x43eb11[_0xe7dc('0x12')][_0xe7dc('0x13')]:null,_0x43eb11[_0xe7dc('0x12')]?_0x43eb11[_0xe7dc('0x12')][_0xe7dc('0x14')]:null,_0x1689b2?util[_0xe7dc('0x15')](_0x1689b2,![],null):'');}}));_0x283ca3[_0xe7dc('0x7')](ewinston[_0xe7dc('0x8')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x4c8771,_0x4b1d60){var _0xc5d822='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x4c8771[_0xe7dc('0x16')]&&_0x4c8771[_0xe7dc('0x16')]['device']&&_0x4c8771[_0xe7dc('0x16')][_0xe7dc('0x17')]){_0xc5d822=_0xe7dc('0x18');}return util['format'](_0xc5d822,_0x4c8771[_0xe7dc('0xd')],_0x4c8771['headers']['x-forwarded-for']?_0x4c8771[_0xe7dc('0xf')][_0xe7dc('0xe')]:_0x4c8771[_0xe7dc('0x10')]['remoteAddress']||_0x4c8771['ip'],_0x4c8771[_0xe7dc('0x19')],_0x4b1d60['statusCode'],_0x4b1d60['responseTime'],_0x4c8771[_0xe7dc('0x12')]?_0x4c8771[_0xe7dc('0x12')]['id']:null,_0x4c8771[_0xe7dc('0x12')]?_0x4c8771['user']['name']:null,_0x4c8771[_0xe7dc('0x12')]?_0x4c8771['user'][_0xe7dc('0x14')]:null,_0x4c8771[_0xe7dc('0x16')]&&_0x4c8771[_0xe7dc('0x16')]['device']?_0x4c8771['body'][_0xe7dc('0x1a')]:'other',_0x4c8771[_0xe7dc('0x16')]&&_0x4c8771[_0xe7dc('0x16')][_0xe7dc('0x17')]?_0x4c8771[_0xe7dc('0x16')][_0xe7dc('0x17')]:'',_0x4c8771[_0xe7dc('0x16')]&&_0x4c8771[_0xe7dc('0x16')][_0xe7dc('0x1b')]?_0x4c8771[_0xe7dc('0x16')]['agent_name']:'');},'ignoreRoute':function(_0x58a853){var _0x50abfa=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x50abfa[_0xe7dc('0x1c')](_0x58a853[_0xe7dc('0x19')]);}}));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x1d'),require('./api/user'));_0x283ca3['use'](_0xe7dc('0x1e'),require(_0xe7dc('0x1f')));_0x283ca3['use']('/api/voice/contexts',require(_0xe7dc('0x20')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x21'),require(_0xe7dc('0x22')));_0x283ca3['use'](_0xe7dc('0x23'),require(_0xe7dc('0x24')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x25'),require('./api/voiceQueue'));_0x283ca3['use'](_0xe7dc('0x26'),require(_0xe7dc('0x27')));_0x283ca3['use'](_0xe7dc('0x28'),require(_0xe7dc('0x29')));_0x283ca3['use']('/api/voice/mails',require(_0xe7dc('0x2a')));_0x283ca3['use']('/api/voice/mails/messages',require(_0xe7dc('0x2b')));_0x283ca3['use'](_0xe7dc('0x2c'),require(_0xe7dc('0x2d')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x2e'),require(_0xe7dc('0x2f')));_0x283ca3[_0xe7dc('0x7')]('/api/voice/agents/reports',require('./api/voiceAgentReport'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x30'),require(_0xe7dc('0x31')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x32'),require(_0xe7dc('0x33')));_0x283ca3[_0xe7dc('0x7')]('/api/trunks',require('./api/trunk'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x34'),require(_0xe7dc('0x35')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x36'),require(_0xe7dc('0x37')));_0x283ca3['use'](_0xe7dc('0x38'),require(_0xe7dc('0x39')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x3a'),require(_0xe7dc('0x3b')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x3c'),require('./api/mailSubstatus'));_0x283ca3['use']('/api/mail/interactions',require(_0xe7dc('0x3d')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x3e'),require(_0xe7dc('0x3f')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x40'),require(_0xe7dc('0x41')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x42'),require(_0xe7dc('0x43')));_0x283ca3[_0xe7dc('0x7')]('/api/dashboards',require('./api/dashboard'));_0x283ca3['use'](_0xe7dc('0x44'),require(_0xe7dc('0x45')));_0x283ca3['use'](_0xe7dc('0x46'),require(_0xe7dc('0x47')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x48'),require('./api/faxApplication'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x49'),require(_0xe7dc('0x4a')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x4b'),require('./api/faxMessage'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x4c'),require(_0xe7dc('0x4d')));_0x283ca3['use'](_0xe7dc('0x4e'),require(_0xe7dc('0x4f')));_0x283ca3[_0xe7dc('0x7')]('/api/sms/accounts',require(_0xe7dc('0x50')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x51'),require('./api/smsApplication'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x52'),require('./api/smsInteraction'));_0x283ca3[_0xe7dc('0x7')]('/api/sms/messages',require('./api/smsMessage'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x53'),require('./api/smsQueue'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x54'),require(_0xe7dc('0x55')));_0x283ca3['use']('/api/openchannel/applications',require(_0xe7dc('0x56')));_0x283ca3[_0xe7dc('0x7')]('/api/openchannel/interactions',require(_0xe7dc('0x57')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x58'),require(_0xe7dc('0x59')));_0x283ca3['use'](_0xe7dc('0x5a'),require(_0xe7dc('0x5b')));_0x283ca3[_0xe7dc('0x7')]('/api/chat/websites',require(_0xe7dc('0x5c')));_0x283ca3[_0xe7dc('0x7')]('/api/openchannel/reports/queue',require(_0xe7dc('0x5d')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x5e'),require(_0xe7dc('0x5f')));_0x283ca3['use'](_0xe7dc('0x60'),require(_0xe7dc('0x61')));_0x283ca3[_0xe7dc('0x7')]('/api/chat/messages',require(_0xe7dc('0x62')));_0x283ca3['use']('/api/chat/offline_messages',require(_0xe7dc('0x63')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x64'),require(_0xe7dc('0x65')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x66'),require(_0xe7dc('0x67')));_0x283ca3['use'](_0xe7dc('0x68'),require('./api/chatProactiveAction'));_0x283ca3['use'](_0xe7dc('0x69'),require('./api/cmCompany'));_0x283ca3['use'](_0xe7dc('0x6a'),require(_0xe7dc('0x6b')));_0x283ca3[_0xe7dc('0x7')]('/api/cm/hopper',require(_0xe7dc('0x6c')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x6d'),require(_0xe7dc('0x6e')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x6f'),require(_0xe7dc('0x70')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x71'),require(_0xe7dc('0x72')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x73'),require(_0xe7dc('0x74')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x75'),require(_0xe7dc('0x76')));_0x283ca3['use'](_0xe7dc('0x77'),require(_0xe7dc('0x78')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x79'),require(_0xe7dc('0x7a')));_0x283ca3['use']('/api/dispositions',require(_0xe7dc('0x7b')));_0x283ca3['use'](_0xe7dc('0x7c'),require(_0xe7dc('0x7d')));_0x283ca3[_0xe7dc('0x7')]('/api/intervals',require(_0xe7dc('0x7e')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x7f'),require(_0xe7dc('0x80')));_0x283ca3['use'](_0xe7dc('0x81'),require(_0xe7dc('0x82')));_0x283ca3[_0xe7dc('0x7')]('/api/voiceQueuesLog',require(_0xe7dc('0x83')));_0x283ca3['use'](_0xe7dc('0x84'),require(_0xe7dc('0x85')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x86'),require('./api/sound'));_0x283ca3[_0xe7dc('0x7')]('/api/tags',require(_0xe7dc('0x87')));_0x283ca3[_0xe7dc('0x7')]('/api/templates',require(_0xe7dc('0x88')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x89'),require(_0xe7dc('0x8a')));_0x283ca3[_0xe7dc('0x7')]('/api/variables',require(_0xe7dc('0x8b')));_0x283ca3['use'](_0xe7dc('0x8c'),require('./api/integration'));_0x283ca3['use'](_0xe7dc('0x8d'),require('./api/integrationReport'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x8e'),require(_0xe7dc('0x8f')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x90'),require(_0xe7dc('0x91')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x92'),require(_0xe7dc('0x93')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x94'),require(_0xe7dc('0x95')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x96'),require(_0xe7dc('0x97')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x98'),require('./api/analyticTreeReport'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x99'),require(_0xe7dc('0x9a')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x9b'),require(_0xe7dc('0x9c')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x9d'),require(_0xe7dc('0x9e')));_0x283ca3['use'](_0xe7dc('0x9f'),require(_0xe7dc('0xa0')));_0x283ca3[_0xe7dc('0x7')]('/api/integrations/sugarcrm/configurations',require(_0xe7dc('0xa1')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xa2'),require(_0xe7dc('0xa3')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xa4'),require(_0xe7dc('0xa5')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xa6'),require(_0xe7dc('0xa7')));_0x283ca3[_0xe7dc('0x7')]('/api/integrations/desk/fields',require(_0xe7dc('0xa8')));_0x283ca3[_0xe7dc('0x7')]('/api/integrations/zoho/accounts',require('./api/intZohoAccount'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xa9'),require(_0xe7dc('0xaa')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xab'),require(_0xe7dc('0xac')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xad'),require(_0xe7dc('0xae')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xaf'),require('./api/intZendeskConfiguration'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xb0'),require(_0xe7dc('0xb1')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xb2'),require(_0xe7dc('0xb3')));_0x283ca3['use']('/api/integrations/freshdesk/configurations',require(_0xe7dc('0xb4')));_0x283ca3['use'](_0xe7dc('0xb5'),require(_0xe7dc('0xb6')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xb7'),require(_0xe7dc('0xb8')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xb9'),require('./api/intVtigerConfiguration'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xba'),require(_0xe7dc('0xbb')));_0x283ca3['use'](_0xe7dc('0xbc'),require(_0xe7dc('0xbd')));_0x283ca3['use'](_0xe7dc('0xbe'),require('./api/intServicenowConfiguration'));_0x283ca3[_0xe7dc('0x7')]('/api/integrations/servicenow/fields',require(_0xe7dc('0xbf')));_0x283ca3[_0xe7dc('0x7')]('/api/integrations/dynamics365/accounts',require(_0xe7dc('0xc0')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xc1'),require(_0xe7dc('0xc2')));_0x283ca3[_0xe7dc('0x7')]('/api/integrations/dynamics365/fields',require('./api/intDynamics365Field'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xc3'),require(_0xe7dc('0xc4')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xc5'),require('./api/intFreshsalesConfiguration'));_0x283ca3['use'](_0xe7dc('0xc6'),require(_0xe7dc('0xc7')));_0x283ca3['use']('/api/networks',require(_0xe7dc('0xc8')));_0x283ca3['use'](_0xe7dc('0xc9'),require(_0xe7dc('0xca')));_0x283ca3[_0xe7dc('0x7')]('/api/chat/internal/messages',require('./api/chatInternalMessage'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xcb'),require(_0xe7dc('0xcc')));_0x283ca3[_0xe7dc('0x7')]('/api/jscripty/questions/reports',require(_0xe7dc('0xcd')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xce'),require(_0xe7dc('0xcf')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xd0'),require(_0xe7dc('0xd1')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xd2'),require('./api/squareReport'));_0x283ca3[_0xe7dc('0x7')]('/api/square/details/reports',require(_0xe7dc('0xd3')));_0x283ca3['use'](_0xe7dc('0xd4'),require('./api/jscriptyProject'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xd5'),require(_0xe7dc('0xd6')));_0x283ca3['use']('/api/square/odbc',require(_0xe7dc('0xd7')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xd8'),require(_0xe7dc('0xd9')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xda'),require(_0xe7dc('0xdb')));_0x283ca3['use'](_0xe7dc('0xdc'),require(_0xe7dc('0xdd')));_0x283ca3['use'](_0xe7dc('0xde'),require(_0xe7dc('0xdf')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xe0'),require(_0xe7dc('0xe1')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xe2'),require('./api/campaign'));_0x283ca3['use'](_0xe7dc('0xe3'),require(_0xe7dc('0xe4')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xe5'),require(_0xe7dc('0xe6')));_0x283ca3[_0xe7dc('0x7')]('/api/plugins',require(_0xe7dc('0xe7')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xe8'),require(_0xe7dc('0xe9')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xea'),require(_0xe7dc('0xeb')));_0x283ca3[_0xe7dc('0x7')]('/api/fax/reports/transfer',require(_0xe7dc('0xec')));_0x283ca3['use'](_0xe7dc('0xed'),require(_0xe7dc('0xee')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xef'),require(_0xe7dc('0xf0')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xf1'),require('./api/cmList'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xf2'),require(_0xe7dc('0xf3')));_0x283ca3['use'](_0xe7dc('0xf4'),require(_0xe7dc('0xf5')));_0x283ca3[_0xe7dc('0x7')]('/api/userProfile/sections',require(_0xe7dc('0xf6')));_0x283ca3['use'](_0xe7dc('0xf7'),require(_0xe7dc('0xf8')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xf9'),require('./api/userNotification'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xfa'),require(_0xe7dc('0xfb')));_0x283ca3['use'](_0xe7dc('0xfc'),require(_0xe7dc('0xfd')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0xfe'),require(_0xe7dc('0xff')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x100'),require('./api/whatsappMessage'));_0x283ca3[_0xe7dc('0x7')]('/api/whatsapp/reports/queue',require(_0xe7dc('0x101')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x102'),require(_0xe7dc('0x103')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x104'),require(_0xe7dc('0x105')));_0x283ca3[_0xe7dc('0x7')]('/api/cloudProviders',require(_0xe7dc('0x106')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x107'),require('./api/realtime'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x108'),require(_0xe7dc('0x109')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x10a'),require('./api/authGoogle'));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x10b'),require(_0xe7dc('0x10c')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x10d'),require(_0xe7dc('0x10e')));_0x283ca3[_0xe7dc('0x7')]('/api/version',require(_0xe7dc('0x10f')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x110'),require(_0xe7dc('0x111')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x112'),require(_0xe7dc('0x113')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x114'),require(_0xe7dc('0x115')));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x116'),express[_0xe7dc('0x117')](path[_0xe7dc('0x118')](config[_0xe7dc('0x119')],_0xe7dc('0x116'))));_0x283ca3['use']('/www',express['static'](path['join'](config['root'],_0xe7dc('0x11a'))));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x11b'),express['static'](path[_0xe7dc('0x118')](config[_0xe7dc('0x119')],_0xe7dc('0x11b'))));_0x283ca3[_0xe7dc('0x7')](_0xe7dc('0x11c'),express[_0xe7dc('0x117')](path[_0xe7dc('0x118')](config[_0xe7dc('0x119')],_0xe7dc('0x11d'),_0xe7dc('0x11e'))));_0x283ca3['use'](_0xe7dc('0x11f'),express[_0xe7dc('0x117')](path['join'](config[_0xe7dc('0x119')],_0xe7dc('0x120'))));_0x283ca3[_0xe7dc('0x121')](_0xe7dc('0x122'))[_0xe7dc('0x123')](errors[0x194]);_0x283ca3[_0xe7dc('0x121')]('/*')[_0xe7dc('0x123')](function(_0x154b3d,_0x8e2766){_0x8e2766[_0xe7dc('0x124')](path[_0xe7dc('0x125')](_0x283ca3['get']('appPath')+_0xe7dc('0x126')));});};var sensitiveFields=[_0xe7dc('0x127'),'password','newPassword','apiKey',_0xe7dc('0x128'),_0xe7dc('0x129'),_0xe7dc('0x12a'),'phone',_0xe7dc('0x12b'),'fax',_0xe7dc('0x12c'),_0xe7dc('0x12d'),'clientSecret',_0xe7dc('0x12e'),_0xe7dc('0x12f'),_0xe7dc('0x130'),_0xe7dc('0x131'),_0xe7dc('0x132'),_0xe7dc('0x133'),_0xe7dc('0x134'),_0xe7dc('0x135'),_0xe7dc('0x136'),_0xe7dc('0x137'),'consumerSecret','membername',_0xe7dc('0x138'),_0xe7dc('0x139'),_0xe7dc('0x13a'),_0xe7dc('0x13b'),'clientEmail',_0xe7dc('0x13c'),_0xe7dc('0x13d'),'secretaccesskey',_0xe7dc('0x13e'),_0xe7dc('0x12'),_0xe7dc('0x13f'),'accountSid',_0xe7dc('0x140'),_0xe7dc('0x141'),_0xe7dc('0x142'),_0xe7dc('0x143'),_0xe7dc('0x144')];function maskSensitiveData(_0x58079e){var _0x591948=/(?!^)[\s\S](?!$)/g;if(!_[_0xe7dc('0x145')](_0x58079e))return;for(var _0x34eb1c in _0x58079e){if(_[_0xe7dc('0x146')](_0x58079e[_0x34eb1c])){for(var _0x2e110a=0x0;_0x2e110a<_0x58079e[_0x34eb1c][_0xe7dc('0x147')];_0x2e110a++){maskSensitiveData(_0x58079e[_0x34eb1c][_0x2e110a]);}}else if(_[_0xe7dc('0x145')](_0x58079e[_0x34eb1c])){maskSensitiveData(_0x58079e[_0x34eb1c]);}else if(_[_0xe7dc('0x148')](_0x58079e[_0x34eb1c])){_0x58079e[_0x34eb1c]=_0x58079e[_0x34eb1c][_0xe7dc('0x149')](/{{{/g,_0xe7dc('0x14a'))[_0xe7dc('0x149')](/}}}/g,_0xe7dc('0x14b'))[_0xe7dc('0x149')](/{{/g,'@{')[_0xe7dc('0x149')](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x34eb1c)){_0x58079e[_0x34eb1c]=_0x58079e[_0x34eb1c]['replace'](_0x591948,'*');}}}}
\ No newline at end of file
index f4402f2..5c3c76d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a4c=['../api/voiceTransferReport/voiceTransferReport.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','port','rpc','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','RPC\x20listening\x20on\x20','jayson/promise','bluebird','lodash','../config/environment','listen','../api/user/user.rpc','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc'];(function(_0x59aeb3,_0x32f513){var _0x3c6521=function(_0x1129b2){while(--_0x1129b2){_0x59aeb3['push'](_0x59aeb3['shift']());}};_0x3c6521(++_0x32f513);}(_0x0a4c,0xcc));var _0xc0a4=function(_0x181b9e,_0x243fa0){_0x181b9e=_0x181b9e-0x0;var _0x3c7710=_0x0a4c[_0x181b9e];return _0x3c7710;};'use strict';var jayson=require(_0xc0a4('0x0'));var BPromise=require(_0xc0a4('0x1'));var _=require(_0xc0a4('0x2'));var config=require(_0xc0a4('0x3'));exports[_0xc0a4('0x4')]=function(){return new BPromise(function(_0x19c0ae,_0x5e8f64){var _0x93205a={};_0x93205a=_['merge'](_0x93205a,require(_0xc0a4('0x5')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x7')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x8')));_0x93205a=_['merge'](_0x93205a,require(_0xc0a4('0x9')));_0x93205a=_['merge'](_0x93205a,require(_0xc0a4('0xa')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require('../api/voiceDialReport/voiceDialReport.rpc'));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0xb')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0xc')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0xd')));_0x93205a=_['merge'](_0x93205a,require(_0xc0a4('0xe')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0xf')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require('../api/userVoiceQueueRt/userVoiceQueueRt.rpc'));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require('../api/mailServerIn/mailServerIn.rpc'));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require('../api/mailAccount/mailAccount.rpc'));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x10')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x11')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x12')));_0x93205a=_['merge'](_0x93205a,require('../api/mailApplication/mailApplication.rpc'));_0x93205a=_['merge'](_0x93205a,require(_0xc0a4('0x13')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x14')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x15')));_0x93205a=_['merge'](_0x93205a,require(_0xc0a4('0x16')));_0x93205a=_['merge'](_0x93205a,require(_0xc0a4('0x17')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x18')));_0x93205a=_['merge'](_0x93205a,require(_0xc0a4('0x19')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x1a')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x1b')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x1c')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x1d')));_0x93205a=_['merge'](_0x93205a,require(_0xc0a4('0x1e')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x1f')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x20')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x21')));_0x93205a=_['merge'](_0x93205a,require(_0xc0a4('0x22')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x23')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require('../api/chatMessage/chatMessage.rpc'));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x24')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x25')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require('../api/cmHopper/cmHopper.rpc'));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require('../api/cmHopperBlack/cmHopperBlack.rpc'));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x26')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x27')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x28')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require('../api/interval/interval.rpc'));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x29')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x2a')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x2b')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x2c')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x2d')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x2e')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x2f')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x30')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x93205a=_['merge'](_0x93205a,require(_0xc0a4('0x31')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x32')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require('../api/intServicenowAccount/intServicenowAccount.rpc'));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x33')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x34')));_0x93205a=_['merge'](_0x93205a,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x35')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x36')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x37')));_0x93205a=_['merge'](_0x93205a,require(_0xc0a4('0x38')));_0x93205a=_['merge'](_0x93205a,require(_0xc0a4('0x39')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x3a')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x3b')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x3c')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require('../api/attachment/attachment.rpc'));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require('../api/plugin/plugin.rpc'));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x3d')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x3e')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x3f')));_0x93205a=_[_0xc0a4('0x6')](_0x93205a,require(_0xc0a4('0x40')));var _0x871d3=jayson[_0xc0a4('0x41')](_0x93205a)[_0xc0a4('0x42')]();var _0x56c894=config['rpc']['port']||config[_0xc0a4('0x43')]+0x1;var _0xe891dd=config[_0xc0a4('0x44')]['ip']||'localhost';_0x871d3['on']('error',function(_0x1d99c1){return _0x5e8f64(_0x1d99c1);});_0x871d3[_0xc0a4('0x4')](_0x56c894,_0xe891dd,function(){console[_0xc0a4('0x45')](_0xc0a4('0x46'),_0xe891dd,_0x56c894);require(_0xc0a4('0x47'))['default']();return _0x19c0ae(_0xc0a4('0x48')+_0xe891dd+':'+_0x56c894);});});};
\ No newline at end of file
+var _0x2a9f=['merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/variable/variable.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/attachment/attachment.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','rpc','port','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','jayson/promise','lodash','../config/environment','listen'];(function(_0x2883da,_0xcb24bc){var _0x363e59=function(_0x3128f3){while(--_0x3128f3){_0x2883da['push'](_0x2883da['shift']());}};_0x363e59(++_0xcb24bc);}(_0x2a9f,0x164));var _0xf2a9=function(_0x141795,_0x555ba9){_0x141795=_0x141795-0x0;var _0x1c62c2=_0x2a9f[_0x141795];return _0x1c62c2;};'use strict';var jayson=require(_0xf2a9('0x0'));var BPromise=require('bluebird');var _=require(_0xf2a9('0x1'));var config=require(_0xf2a9('0x2'));exports[_0xf2a9('0x3')]=function(){return new BPromise(function(_0x59f035,_0xf5de9d){var _0x54727b={};_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require('../api/user/user.rpc'));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x5')));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0x6')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x7')));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0x8')));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0x9')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0xa')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0xb')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0xc')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0xd')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0xe')));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0xf')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x10')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require('../api/mailAccount/mailAccount.rpc'));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require('../api/mailQueue/mailQueue.rpc'));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0x11')));_0x54727b=_['merge'](_0x54727b,require('../api/mailMessage/mailMessage.rpc'));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x12')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x13')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x14')));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0x15')));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0x16')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x17')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x18')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x19')));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0x1a')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require('../api/smsInteraction/smsInteraction.rpc'));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x1b')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x1c')));_0x54727b=_['merge'](_0x54727b,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x1d')));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0x1e')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require('../api/openchannelQueue/openchannelQueue.rpc'));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0x1f')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require('../api/chatInteraction/chatInteraction.rpc'));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x20')));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0x21')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x22')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require('../api/cmHopper/cmHopper.rpc'));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x23')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x24')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x25')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require('../api/reportAgentPreview/reportAgentPreview.rpc'));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x26')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x27')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x28')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x29')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require('../api/trigger/trigger.rpc'));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x2a')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x54727b=_['merge'](_0x54727b,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0x54727b=_['merge'](_0x54727b,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0x2b')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x2c')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x2d')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x2e')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x2f')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x30')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x31')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x32')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x33')));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0x34')));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0x35')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require('../api/setting/setting.rpc'));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x36')));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0x37')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x38')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x39')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require('../api/campaign/campaign.rpc'));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0x3a')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require('../api/plugin/plugin.rpc'));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x3b')));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0x3c')));_0x54727b=_['merge'](_0x54727b,require(_0xf2a9('0x3d')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x3e')));_0x54727b=_[_0xf2a9('0x4')](_0x54727b,require(_0xf2a9('0x3f')));var _0x3a73b7=jayson[_0xf2a9('0x40')](_0x54727b)['http']();var _0x2c4c27=config[_0xf2a9('0x41')][_0xf2a9('0x42')]||config[_0xf2a9('0x42')]+0x1;var _0x179265=config[_0xf2a9('0x41')]['ip']||_0xf2a9('0x43');_0x3a73b7['on'](_0xf2a9('0x44'),function(_0x334c37){return _0xf5de9d(_0x334c37);});_0x3a73b7[_0xf2a9('0x3')](_0x2c4c27,_0x179265,function(){console[_0xf2a9('0x45')](_0xf2a9('0x46'),_0x179265,_0x2c4c27);require(_0xf2a9('0x47'))['default']();return _0x59f035('RPC\x20listening\x20on\x20'+_0x179265+':'+_0x2c4c27);});});};
\ No newline at end of file
index 5de0424..93c6ee8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaac6=['replace','result=','indexOf','substr','startsWith','length','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','command','write','destroy','inherits','prototype','sendRequest','sync','answer','ANSWER','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','setContext','setExtension','SET\x20EXTENSION\x20%s','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','SAY\x20NUMBER\x20%s\x20%s','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','continueAt','extension','GOTO\x20%s\x20%s\x20%s','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','events','EventEmitter','call','setEncoding','utf8','emit','ready','line','toLowerCase','hangup','substring','search','520\x20End\x20of\x20proper','function','no\x20code'];(function(_0x1d6ac7,_0xf711e5){var _0x40e26d=function(_0x37b21a){while(--_0x37b21a){_0x1d6ac7['push'](_0x1d6ac7['shift']());}};_0x40e26d(++_0xf711e5);}(_0xaac6,0x11b));var _0x6aac=function(_0x515afd,_0x1a1e91){_0x515afd=_0x515afd-0x0;var _0x536d53=_0xaac6[_0x515afd];return _0x536d53;};'use strict';var util=require(_0x6aac('0x0'));var _=require(_0x6aac('0x1'));var EventEmitter=require(_0x6aac('0x2'))[_0x6aac('0x3')];var AGIReply=require('./reply');var AGIError=require('./error');function AGIChannel(_0x379fc1){var _0x39987c=this,_0x2b6f51=new AGIReply(),_0x5a9a38=![],_0x1a1c9d={};EventEmitter[_0x6aac('0x4')](_0x39987c);_0x379fc1[_0x6aac('0x5')](_0x6aac('0x6'));_0x379fc1['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x2b6f51[_0x6aac('0x5')](_0x6aac('0x6'));_0x2b6f51['on']('headers',function(_0x2188a3){for(var _0x20c81c in _0x2188a3){_0x39987c[_0x20c81c]=_0x2188a3[_0x20c81c];}_0x39987c[_0x6aac('0x7')](_0x6aac('0x8'));});_0x2b6f51['on'](_0x6aac('0x9'),function(_0x266e8a){if(_0x266e8a[_0x6aac('0xa')]()==_0x6aac('0xb')){_0x39987c[_0x6aac('0x7')]('hangup');return;}if(_0x266e8a[_0x6aac('0xc')](0x0,0xb)=='520-Invalid'){_0x5a9a38=!![];}if(_0x5a9a38){_0x1a1c9d['rx']+=_0x266e8a+'\x0a';if(_0x266e8a[_0x6aac('0xd')](_0x6aac('0xe'))!=-0x1){_0x5a9a38=![];}}else{_0x1a1c9d['rx']=_0x266e8a;}if(_0x5a9a38){return;}if(typeof _0x1a1c9d['cb']==_0x6aac('0xf')){var _0x42757d=_0x1a1c9d['rx'][_0x6aac('0xc')](0x0,0x3),_0x1fa5ce=null,_0x50de03=null;_0x42757d=parseInt(_0x42757d);if(isNaN(_0x42757d)){_0x1a1c9d['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x6aac('0x10')});return;}if(_0x42757d!=0xc8){_0x1a1c9d['cb'](null,{'code':_0x42757d,'result':-0x1,'extra':'KO'});return;}_0x1fa5ce=_0x1a1c9d['rx']['substring'](0x4)[_0x6aac('0x11')](_0x6aac('0x12'),'');if(_0x1fa5ce[_0x6aac('0x13')]('\x20')!=-0x1){_0x1fa5ce=_0x1fa5ce[_0x6aac('0x14')](0x0,_0x1fa5ce['indexOf']('\x20'));}if(_[_0x6aac('0x15')](_0x1fa5ce,'-1')){_0x1fa5ce=parseInt(_0x1fa5ce);}_0x50de03=_0x1a1c9d['rx']['split']('\x20');if(_0x50de03[_0x6aac('0x16')]==0x3){_0x50de03=_0x50de03[0x2][_0x6aac('0xc')](0x1,_0x50de03[0x2][_0x6aac('0x16')]-0x1);}else if(_0x50de03[_0x6aac('0x16')]>0x3){var _0x450de7=/\((.+)\)/;var _0x16ca6a=_0x1a1c9d['rx']['match'](_0x450de7);if(_0x16ca6a){_0x50de03=_0x16ca6a[0x1];}else{_0x50de03=null;}}else{_0x50de03=null;}_0x1a1c9d['cb'](null,{'code':_0x42757d,'result':_0x1fa5ce,'extra':_0x50de03});}});_0x379fc1['on'](_0x6aac('0x17'),function(_0x863602){_0x39987c[_0x6aac('0x7')](_0x6aac('0x17'),new AGIError(_0x6aac('0x18'),_0x863602[_0x6aac('0x19')]));});_0x379fc1['on'](_0x6aac('0x1a'),function(){_0x39987c[_0x6aac('0x7')](_0x6aac('0x1a'),new AGIError(_0x6aac('0x1b')));});_0x379fc1['on'](_0x6aac('0x1c'),function(){_0x39987c[_0x6aac('0x7')](_0x6aac('0x1c'),new AGIError(_0x6aac('0x1d')));_0x379fc1['destroy']();});_0x379fc1['pipe'](_0x2b6f51);this[_0x6aac('0x1e')]=function(_0x3d6694,_0x161570){var _0x3d6694=_0x3d6694||'',_0x161570=typeof _0x161570=='function'?_0x161570:new Function();_0x1a1c9d={'tx':_0x3d6694,'rx':'','cb':_0x161570};_0x379fc1[_0x6aac('0x1f')](_0x3d6694+'\x0a');},this['close']=function(){_0x379fc1[_0x6aac('0x20')]();};}util[_0x6aac('0x21')](AGIChannel,EventEmitter);AGIChannel[_0x6aac('0x22')][_0x6aac('0x23')]=function(_0x4081d3){return this[_0x6aac('0x1e')][_0x6aac('0x24')](this,_0x4081d3);};AGIChannel['prototype'][_0x6aac('0x25')]=function(){return this[_0x6aac('0x23')](_0x6aac('0x26'));};AGIChannel[_0x6aac('0x22')][_0x6aac('0x27')]=function(_0x2ae916,_0x1359f8,_0x56bb4c){_0x2ae916=_0x2ae916===undefined?_0x6aac('0x28'):_0x2ae916;_0x1359f8=_0x1359f8===undefined?'5':_0x1359f8;_0x56bb4c=_0x56bb4c===undefined?'1':_0x56bb4c;return this[_0x6aac('0x23')](util[_0x6aac('0x29')](_0x6aac('0x2a'),_0x2ae916,_0x1359f8*0x3e8,_0x56bb4c));};AGIChannel['prototype'][_0x6aac('0x2b')]=function(_0x385b1c){_0x385b1c=_0x385b1c||'NO\x20MESSAGE';return this[_0x6aac('0x23')](util[_0x6aac('0x29')](_0x6aac('0x2c'),_0x385b1c));};AGIChannel[_0x6aac('0x22')][_0x6aac('0x2d')]=function(_0x4eed4f,_0x23f915){if(_[_0x6aac('0x2e')](_0x23f915)){return this[_0x6aac('0x23')](util[_0x6aac('0x29')](_0x6aac('0x2f'),_0x4eed4f,_0x23f915[_0x6aac('0x30')](',')));}return this[_0x6aac('0x23')](util[_0x6aac('0x29')](_0x6aac('0x2f'),_0x4eed4f,_0x23f915));};AGIChannel[_0x6aac('0x22')][_0x6aac('0x31')]=function(_0x5607a0){return this[_0x6aac('0x23')](util['format']('SET\x20CONTEXT\x20%s',_0x5607a0));};AGIChannel[_0x6aac('0x22')][_0x6aac('0x32')]=function(_0x10616f){return this[_0x6aac('0x23')](util[_0x6aac('0x29')](_0x6aac('0x33'),_0x10616f));};AGIChannel[_0x6aac('0x22')]['setPriority']=function(_0x44f8b6){return this[_0x6aac('0x23')](util[_0x6aac('0x29')](_0x6aac('0x34'),_0x44f8b6));};AGIChannel[_0x6aac('0x22')][_0x6aac('0xb')]=function(){return this['sendRequest'](_0x6aac('0x35'));};AGIChannel['prototype'][_0x6aac('0x36')]=function(_0x42defc,_0x443085){var _0x4d45ac=_[_0x6aac('0x37')](_0x443085)||_[_0x6aac('0x38')](_0x443085)?_0x443085[_0x6aac('0x39')]():_0x443085;return this[_0x6aac('0x23')](util['format'](_0x6aac('0x3a'),_0x42defc,_0x4d45ac?_0x4d45ac['toString']()['replace'](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x6aac('0x22')]['sayNumber']=function(_0x59b92f,_0x3a31dc){return this[_0x6aac('0x23')](util[_0x6aac('0x29')](_0x6aac('0x3b'),_0x59b92f,_0x3a31dc));};AGIChannel['prototype']['sayDigits']=function(_0x56d648,_0xcfab03){return this[_0x6aac('0x23')](util[_0x6aac('0x29')](_0x6aac('0x3c'),_0x56d648,_0xcfab03));};AGIChannel[_0x6aac('0x22')][_0x6aac('0x3d')]=function(_0x232b9f,_0x588cf6){return this[_0x6aac('0x23')](util[_0x6aac('0x29')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x232b9f,_0x588cf6));};AGIChannel[_0x6aac('0x22')][_0x6aac('0x3e')]=function(_0x4ee798,_0x58a35a,_0x4ed7f8){_0x58a35a=_0x58a35a||this[_0x6aac('0x3f')];_0x4ed7f8=_0x4ed7f8||0x1;this[_0x6aac('0x31')](_0x4ee798);this[_0x6aac('0x32')](_0x58a35a);this['setPriority'](_0x4ed7f8);return this['noop'](util[_0x6aac('0x29')](_0x6aac('0x40'),_0x4ee798,_0x58a35a,_0x4ed7f8));};AGIChannel[_0x6aac('0x22')]['getVariable']=function(_0x1a51d1){return this[_0x6aac('0x23')](util['format']('GET\x20VARIABLE\x20\x22%s\x22',_0x1a51d1));};AGIChannel[_0x6aac('0x22')]['recordFile']=function(_0x46589e,_0x5a5d0d,_0xa6ea21,_0x2ca885,_0x1ca2e8,_0x336d93){_0x5a5d0d=_0x5a5d0d||_0x6aac('0x41');_0xa6ea21=_0xa6ea21||'';_0x2ca885=_0x2ca885===undefined?-0x1:_0x2ca885==='-1'?-0x1:_0x2ca885*0x3e8;_0x1ca2e8=_0x1ca2e8===undefined?'':'s='+_0x1ca2e8;_0x336d93=_0x336d93?_0x6aac('0x42'):'';return this[_0x6aac('0x23')](util['format'](_0x6aac('0x43'),_0x46589e,_0x5a5d0d,_0xa6ea21,_0x2ca885,_0x336d93,_0x1ca2e8));};AGIChannel['prototype']['streamFile']=function(_0x53ac1a,_0x4ea1dd){_0x4ea1dd=_0x4ea1dd||'';return this[_0x6aac('0x23')](util[_0x6aac('0x29')](_0x6aac('0x44'),_0x53ac1a,_0x4ea1dd));};AGIChannel[_0x6aac('0x22')][_0x6aac('0x45')]=function(_0x3a3d78){return this[_0x6aac('0x2d')](_0x6aac('0x46'),_0x3a3d78);};AGIChannel[_0x6aac('0x22')][_0x6aac('0x47')]=function(_0x5e6316){return this['exec']('WAIT',_0x5e6316);};AGIChannel['prototype'][_0x6aac('0x17')]=function(_0x3477d4,_0x166621){this[_0x6aac('0x2b')](util['format'](_0x6aac('0x48'),_0x3477d4['id'],_0x3477d4[_0x6aac('0x49')],_0x166621));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x6aac('0x4a')]=AGIChannel;
\ No newline at end of file
+var _0xb234=['sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','setExtension','setPriority','GOTO\x20%s\x20%s\x20%s','getVariable','recordFile','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','AGI','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','exports','util','lodash','EventEmitter','./reply','./error','setEncoding','setTimeout','headers','emit','ready','hangup','substring','function','no\x20code','replace','result=','indexOf','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','prototype','sendRequest','sync','ANSWER','getData','beep','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','format','setContext','SET\x20EXTENSION\x20%s','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22'];(function(_0x57b7e5,_0x301c76){var _0x1b5d72=function(_0x16421c){while(--_0x16421c){_0x57b7e5['push'](_0x57b7e5['shift']());}};_0x1b5d72(++_0x301c76);}(_0xb234,0x13f));var _0x4b23=function(_0x5b8b48,_0x5e9597){_0x5b8b48=_0x5b8b48-0x0;var _0x407006=_0xb234[_0x5b8b48];return _0x407006;};'use strict';var util=require(_0x4b23('0x0'));var _=require(_0x4b23('0x1'));var EventEmitter=require('events')[_0x4b23('0x2')];var AGIReply=require(_0x4b23('0x3'));var AGIError=require(_0x4b23('0x4'));function AGIChannel(_0x5570ad){var _0x5496ed=this,_0x5557dc=new AGIReply(),_0x36c95e=![],_0xf90d41={};EventEmitter['call'](_0x5496ed);_0x5570ad[_0x4b23('0x5')]('utf8');_0x5570ad[_0x4b23('0x6')](0x8*0x3c*0x3c*0x3e8);_0x5557dc['setEncoding']('utf8');_0x5557dc['on'](_0x4b23('0x7'),function(_0x6f9a90){for(var _0x50f321 in _0x6f9a90){_0x5496ed[_0x50f321]=_0x6f9a90[_0x50f321];}_0x5496ed[_0x4b23('0x8')](_0x4b23('0x9'));});_0x5557dc['on']('line',function(_0x1b2467){if(_0x1b2467['toLowerCase']()==_0x4b23('0xa')){_0x5496ed[_0x4b23('0x8')](_0x4b23('0xa'));return;}if(_0x1b2467[_0x4b23('0xb')](0x0,0xb)=='520-Invalid'){_0x36c95e=!![];}if(_0x36c95e){_0xf90d41['rx']+=_0x1b2467+'\x0a';if(_0x1b2467['search']('520\x20End\x20of\x20proper')!=-0x1){_0x36c95e=![];}}else{_0xf90d41['rx']=_0x1b2467;}if(_0x36c95e){return;}if(typeof _0xf90d41['cb']==_0x4b23('0xc')){var _0x1a6f01=_0xf90d41['rx'][_0x4b23('0xb')](0x0,0x3),_0x171648=null,_0xd27698=null;_0x1a6f01=parseInt(_0x1a6f01);if(isNaN(_0x1a6f01)){_0xf90d41['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x4b23('0xd')});return;}if(_0x1a6f01!=0xc8){_0xf90d41['cb'](null,{'code':_0x1a6f01,'result':-0x1,'extra':'KO'});return;}_0x171648=_0xf90d41['rx'][_0x4b23('0xb')](0x4)[_0x4b23('0xe')](_0x4b23('0xf'),'');if(_0x171648[_0x4b23('0x10')]('\x20')!=-0x1){_0x171648=_0x171648['substr'](0x0,_0x171648[_0x4b23('0x10')]('\x20'));}if(_[_0x4b23('0x11')](_0x171648,'-1')){_0x171648=parseInt(_0x171648);}_0xd27698=_0xf90d41['rx'][_0x4b23('0x12')]('\x20');if(_0xd27698[_0x4b23('0x13')]==0x3){_0xd27698=_0xd27698[0x2][_0x4b23('0xb')](0x1,_0xd27698[0x2]['length']-0x1);}else if(_0xd27698[_0x4b23('0x13')]>0x3){var _0x41d9f8=/\((.+)\)/;var _0x10f2ba=_0xf90d41['rx'][_0x4b23('0x14')](_0x41d9f8);if(_0x10f2ba){_0xd27698=_0x10f2ba[0x1];}else{_0xd27698=null;}}else{_0xd27698=null;}_0xf90d41['cb'](null,{'code':_0x1a6f01,'result':_0x171648,'extra':_0xd27698});}});_0x5570ad['on'](_0x4b23('0x15'),function(_0x26f7ad){_0x5496ed['emit'](_0x4b23('0x15'),new AGIError(_0x4b23('0x16'),_0x26f7ad[_0x4b23('0x17')]));});_0x5570ad['on'](_0x4b23('0x18'),function(){_0x5496ed[_0x4b23('0x8')](_0x4b23('0x18'),new AGIError(_0x4b23('0x19')));});_0x5570ad['on'](_0x4b23('0x1a'),function(){_0x5496ed['emit']('timeout',new AGIError(_0x4b23('0x1b')));_0x5570ad[_0x4b23('0x1c')]();});_0x5570ad[_0x4b23('0x1d')](_0x5557dc);this[_0x4b23('0x1e')]=function(_0x22e288,_0x1ad4f7){var _0x22e288=_0x22e288||'',_0x1ad4f7=typeof _0x1ad4f7==_0x4b23('0xc')?_0x1ad4f7:new Function();_0xf90d41={'tx':_0x22e288,'rx':'','cb':_0x1ad4f7};_0x5570ad[_0x4b23('0x1f')](_0x22e288+'\x0a');},this['close']=function(){_0x5570ad[_0x4b23('0x1c')]();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel[_0x4b23('0x20')][_0x4b23('0x21')]=function(_0x5e7ab3){return this[_0x4b23('0x1e')][_0x4b23('0x22')](this,_0x5e7ab3);};AGIChannel['prototype']['answer']=function(){return this[_0x4b23('0x21')](_0x4b23('0x23'));};AGIChannel[_0x4b23('0x20')][_0x4b23('0x24')]=function(_0x4bf5d5,_0x346cb8,_0xa5e6bf){_0x4bf5d5=_0x4bf5d5===undefined?_0x4b23('0x25'):_0x4bf5d5;_0x346cb8=_0x346cb8===undefined?'5':_0x346cb8;_0xa5e6bf=_0xa5e6bf===undefined?'1':_0xa5e6bf;return this[_0x4b23('0x21')](util['format'](_0x4b23('0x26'),_0x4bf5d5,_0x346cb8*0x3e8,_0xa5e6bf));};AGIChannel[_0x4b23('0x20')][_0x4b23('0x27')]=function(_0x58bdc1){_0x58bdc1=_0x58bdc1||_0x4b23('0x28');return this[_0x4b23('0x21')](util['format'](_0x4b23('0x29'),_0x58bdc1));};AGIChannel['prototype'][_0x4b23('0x2a')]=function(_0x3d6324,_0xec6ae1){if(_[_0x4b23('0x2b')](_0xec6ae1)){return this[_0x4b23('0x21')](util['format'](_0x4b23('0x2c'),_0x3d6324,_0xec6ae1[_0x4b23('0x2d')](',')));}return this[_0x4b23('0x21')](util[_0x4b23('0x2e')]('EXEC\x20%s\x20%s',_0x3d6324,_0xec6ae1));};AGIChannel[_0x4b23('0x20')][_0x4b23('0x2f')]=function(_0x5787f7){return this['sendRequest'](util[_0x4b23('0x2e')]('SET\x20CONTEXT\x20%s',_0x5787f7));};AGIChannel[_0x4b23('0x20')]['setExtension']=function(_0x23f025){return this[_0x4b23('0x21')](util[_0x4b23('0x2e')](_0x4b23('0x30'),_0x23f025));};AGIChannel[_0x4b23('0x20')]['setPriority']=function(_0x52d01a){return this[_0x4b23('0x21')](util[_0x4b23('0x2e')](_0x4b23('0x31'),_0x52d01a));};AGIChannel[_0x4b23('0x20')][_0x4b23('0xa')]=function(){return this['sendRequest'](_0x4b23('0x32'));};AGIChannel['prototype'][_0x4b23('0x33')]=function(_0x296a36,_0xd104c){var _0x31c97b=_[_0x4b23('0x34')](_0xd104c)||_[_0x4b23('0x35')](_0xd104c)?_0xd104c[_0x4b23('0x36')]():_0xd104c;return this[_0x4b23('0x21')](util[_0x4b23('0x2e')](_0x4b23('0x37'),_0x296a36,_0x31c97b?_0x31c97b[_0x4b23('0x36')]()['replace'](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x4b23('0x20')][_0x4b23('0x38')]=function(_0x1de8b2,_0x79f973){return this[_0x4b23('0x21')](util['format'](_0x4b23('0x39'),_0x1de8b2,_0x79f973));};AGIChannel[_0x4b23('0x20')][_0x4b23('0x3a')]=function(_0x392cc6,_0x1d730b){return this['sendRequest'](util[_0x4b23('0x2e')]('SAY\x20DIGITS\x20%s\x20%s',_0x392cc6,_0x1d730b));};AGIChannel[_0x4b23('0x20')][_0x4b23('0x3b')]=function(_0x5435bc,_0x273f96){return this[_0x4b23('0x21')](util['format'](_0x4b23('0x3c'),_0x5435bc,_0x273f96));};AGIChannel[_0x4b23('0x20')][_0x4b23('0x3d')]=function(_0x3fc85a,_0x577323,_0x102190){_0x577323=_0x577323||this[_0x4b23('0x3e')];_0x102190=_0x102190||0x1;this[_0x4b23('0x2f')](_0x3fc85a);this[_0x4b23('0x3f')](_0x577323);this[_0x4b23('0x40')](_0x102190);return this[_0x4b23('0x27')](util[_0x4b23('0x2e')](_0x4b23('0x41'),_0x3fc85a,_0x577323,_0x102190));};AGIChannel[_0x4b23('0x20')][_0x4b23('0x42')]=function(_0x11304f){return this[_0x4b23('0x21')](util['format']('GET\x20VARIABLE\x20\x22%s\x22',_0x11304f));};AGIChannel[_0x4b23('0x20')][_0x4b23('0x43')]=function(_0x1b290e,_0xd2cb9b,_0x9c1fd5,_0x2adc31,_0x1bee18,_0x4f2627){_0xd2cb9b=_0xd2cb9b||_0x4b23('0x44');_0x9c1fd5=_0x9c1fd5||'';_0x2adc31=_0x2adc31===undefined?-0x1:_0x2adc31==='-1'?-0x1:_0x2adc31*0x3e8;_0x1bee18=_0x1bee18===undefined?'':'s='+_0x1bee18;_0x4f2627=_0x4f2627?_0x4b23('0x45'):'';return this[_0x4b23('0x21')](util['format'](_0x4b23('0x46'),_0x1b290e,_0xd2cb9b,_0x9c1fd5,_0x2adc31,_0x4f2627,_0x1bee18));};AGIChannel['prototype'][_0x4b23('0x47')]=function(_0x30ec84,_0x3c25d8){_0x3c25d8=_0x3c25d8||'';return this['sendRequest'](util['format']('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x30ec84,_0x3c25d8));};AGIChannel[_0x4b23('0x20')]['agi']=function(_0x53cca5){return this[_0x4b23('0x2a')](_0x4b23('0x48'),_0x53cca5);};AGIChannel[_0x4b23('0x20')]['wait']=function(_0x21ef22){return this[_0x4b23('0x2a')]('WAIT',_0x21ef22);};AGIChannel[_0x4b23('0x20')][_0x4b23('0x15')]=function(_0x18c302,_0x317466){this[_0x4b23('0x27')](util[_0x4b23('0x2e')](_0x4b23('0x49'),_0x18c302['id'],_0x18c302['label'],_0x317466));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x4b23('0x4a')]=AGIChannel;
\ No newline at end of file
index b4beb12..dc129bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x067a=['push','format','apply','name','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20timeout.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED'];(function(_0x8051d7,_0x263ba9){var _0x3fb835=function(_0x3605a6){while(--_0x3605a6){_0x8051d7['push'](_0x8051d7['shift']());}};_0x3fb835(++_0x263ba9);}(_0x067a,0xd6));var _0xa067=function(_0x4b1929,_0x396e4c){_0x4b1929=_0x4b1929-0x0;var _0x5ca4ed=_0x067a[_0x4b1929];return _0x5ca4ed;};'use strict';var util=require(_0xa067('0x0'));var error={'E_AGI_UNDEFINED':_0xa067('0x1'),'E_AGI_ARGUMENT_PORT':_0xa067('0x2'),'E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':'Server\x20closed.','E_AGI_SERVER_MAXCONNECTION':_0xa067('0x3'),'E_AGI_SERVER_VOICE_DISABLED':_0xa067('0x4'),'E_AGI_SOCKET_ERROR':_0xa067('0x5'),'E_AGI_SOCKET_CLOSE':'Socket\x20closed.','E_AGI_SOCKET_TIMEOUT':_0xa067('0x6'),'E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xa067('0x7'),'E_AGI_IVR_ENTRY':_0xa067('0x8')};function AGIError(_0x217809){var _0x217809=_0x217809||null,_0x1ba497=_0x1ba497||[],_0xb10459=0x1,_0x3b3c3c='';if(!error[_0x217809]){_0x217809=_0xa067('0x9');}_0x1ba497['push'](error[_0x217809]);while(arguments[_0xb10459]){_0x1ba497[_0xa067('0xa')](arguments[_0xb10459]);_0xb10459++;}_0x3b3c3c=util[_0xa067('0xb')][_0xa067('0xc')](util,_0x1ba497);this['message']=_0x3b3c3c;this[_0xa067('0xd')]=_0x217809;}module['exports']=AGIError;
\ No newline at end of file
+var _0x0b79=['name','exports','util','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','apply'];(function(_0x2d0a51,_0x53037a){var _0x81bc11=function(_0x2971da){while(--_0x2971da){_0x2d0a51['push'](_0x2d0a51['shift']());}};_0x81bc11(++_0x53037a);}(_0x0b79,0x1cd));var _0x90b7=function(_0x4bb874,_0x37183c){_0x4bb874=_0x4bb874-0x0;var _0x316fb4=_0x0b79[_0x4bb874];return _0x316fb4;};'use strict';var util=require(_0x90b7('0x0'));var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':_0x90b7('0x1'),'E_AGI_SERVER_ERROR':_0x90b7('0x2'),'E_AGI_SERVER_CLOSE':_0x90b7('0x3'),'E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':_0x90b7('0x4'),'E_AGI_SOCKET_ERROR':_0x90b7('0x5'),'E_AGI_SOCKET_CLOSE':_0x90b7('0x6'),'E_AGI_SOCKET_TIMEOUT':_0x90b7('0x7'),'E_AGI_COMMAND_EMPTY':_0x90b7('0x8'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x90b7('0x9'),'E_AGI_IVR_ENTRY':_0x90b7('0xa')};function AGIError(_0x12ca74){var _0x12ca74=_0x12ca74||null,_0x1a9055=_0x1a9055||[],_0x3acc32=0x1,_0x1c1fa7='';if(!error[_0x12ca74]){_0x12ca74=_0x90b7('0xb');}_0x1a9055[_0x90b7('0xc')](error[_0x12ca74]);while(arguments[_0x3acc32]){_0x1a9055[_0x90b7('0xc')](arguments[_0x3acc32]);_0x3acc32++;}_0x1c1fa7=util[_0x90b7('0xd')][_0x90b7('0xe')](util,_0x1a9055);this['message']=_0x1c1fa7;this[_0x90b7('0xf')]=_0x12ca74;}module[_0x90b7('0x10')]=AGIError;
\ No newline at end of file
index e0f9f4e..b167135 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85b0=['no\x20edge/s\x20available','condition','vswitch','target','default','menu','invalid','traverseBFS','agicommand','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','getdigits','getsecretdigits','vertices','edges','numberOfEdges','prototype','addVertex','push','size','relations','info','no\x20vertex\x20found','stop\x20traverse','length'];(function(_0x5e4563,_0x3ff918){var _0x8d1bf5=function(_0x3bf7a9){while(--_0x3bf7a9){_0x5e4563['push'](_0x5e4563['shift']());}};_0x8d1bf5(++_0x3ff918);}(_0x85b0,0xdf));var _0x085b=function(_0x1dc612,_0x4d6c4c){_0x1dc612=_0x1dc612-0x0;var _0x2cacb8=_0x85b0[_0x1dc612];return _0x2cacb8;};'use strict';var _=require(_0x085b('0x0'));var logger=require(_0x085b('0x1'))(_0x085b('0x2'));var verticesWithRetry=['menu',_0x085b('0x3'),_0x085b('0x4')];var Graph=function(){this[_0x085b('0x5')]={};this[_0x085b('0x6')]={};this[_0x085b('0x7')]=0x0;};Graph[_0x085b('0x8')][_0x085b('0x9')]=function(_0x2eb3f5){this[_0x085b('0x5')][_0x2eb3f5['id']]=_0x2eb3f5;this[_0x085b('0x6')][_0x2eb3f5['id']]=[];};Graph[_0x085b('0x8')]['addEdge']=function(_0x2b46da,_0x5a9a40,_0x323279){this[_0x085b('0x6')][_0x2b46da][_0x085b('0xa')]({'target':_0x5a9a40,'condition':_0x323279});this[_0x085b('0x7')]+=0x1;};Graph[_0x085b('0x8')][_0x085b('0xb')]=function(){return _[_0x085b('0xb')](this[_0x085b('0x5')]);};Graph[_0x085b('0x8')][_0x085b('0xc')]=function(){return this[_0x085b('0x7')];};Graph['prototype']['getVertex']=function(_0x4a7db1){return this[_0x085b('0x5')][_0x4a7db1];};Graph[_0x085b('0x8')]['traverseBFS']=function(_0x1e5e51,_0x3d7d07){if(!this['vertices'][_0x1e5e51]){return logger[_0x085b('0xd')](_0x085b('0xe'));}var _0x265484=_0x3d7d07(this[_0x085b('0x5')][_0x1e5e51]);if(!_0x265484){return logger[_0x085b('0xd')](_0x085b('0xf'));}if(this[_0x085b('0x6')][_0x1e5e51][_0x085b('0x10')]===0x0){return logger[_0x085b('0xd')](_0x085b('0x11'));}for(var _0x3c1da6=0x0,_0xd026c1=[],_0x36cea3=![];_0x3c1da6<this[_0x085b('0x6')][_0x1e5e51][_0x085b('0x10')];_0x3c1da6+=0x1){if(this[_0x085b('0x6')][_0x1e5e51][_0x3c1da6][_0x085b('0x12')]){_0xd026c1=this[_0x085b('0x6')][_0x1e5e51][_0x3c1da6]['condition']['split'](',');for(var _0x1c4bc4=0x0;_0x1c4bc4<_0xd026c1[_0x085b('0x10')];_0x1c4bc4+=0x1){if(this[_0x085b('0x5')][_0x1e5e51]['agicommand']===_0x085b('0x13')&&_0xd026c1[_0x1c4bc4]==='-'){_0x36cea3=this[_0x085b('0x6')][_0x1e5e51][_0x3c1da6][_0x085b('0x14')];logger[_0x085b('0xd')](_0x085b('0x15'),_0xd026c1[_0x1c4bc4],this['edges'][_0x1e5e51][_0x3c1da6][_0x085b('0x14')]);}else if(this[_0x085b('0x5')][_0x1e5e51]['agicommand']===_0x085b('0x16')&&_0xd026c1[_0x1c4bc4]==='i'){_0x36cea3=this[_0x085b('0x6')][_0x1e5e51][_0x3c1da6][_0x085b('0x14')];logger['info'](_0x085b('0x17'),_0xd026c1[_0x1c4bc4],this['edges'][_0x1e5e51][_0x3c1da6]['target']);}if(_0xd026c1[_0x1c4bc4]===_0x265484){return this[_0x085b('0x18')](this['edges'][_0x1e5e51][_0x3c1da6][_0x085b('0x14')],_0x3d7d07);}}}else{return this['traverseBFS'](this[_0x085b('0x6')][_0x1e5e51][_0x3c1da6]['target'],_0x3d7d07);}}if(_0xd026c1[_0x085b('0x10')]){if(this['vertices'][_0x1e5e51][_0x085b('0x19')]===_0x085b('0x13')){if(_0x36cea3){return this[_0x085b('0x18')](_0x36cea3,_0x3d7d07);}return logger['info']('default\x20on\x20switch\x20not\x20found');}else if(_[_0x085b('0x1a')](verticesWithRetry,this[_0x085b('0x5')][_0x1e5e51][_0x085b('0x19')])){if(_0x265484==='-'){return logger[_0x085b('0xd')](_0x085b('0x1b'));}if(_0x36cea3&&_0x265484!=='t'){return this[_0x085b('0x18')](_0x36cea3,_0x3d7d07);}return this[_0x085b('0x18')](_0x1e5e51,_0x3d7d07);}return logger[_0x085b('0xd')](_0x085b('0x1c'));}};module[_0x085b('0x1d')]=Graph;
\ No newline at end of file
+var _0x98e2=['max\x20retry\x20reach','exports','../../../config/logger','getdigits','getsecretdigits','vertices','edges','numberOfEdges','prototype','addVertex','addEdge','size','relations','traverseBFS','info','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','agicommand','vswitch','default','target','menu','invalid','default\x20on\x20switch\x20not\x20found','includes'];(function(_0x7a6aed,_0x335e68){var _0x9dbabf=function(_0x453c9c){while(--_0x453c9c){_0x7a6aed['push'](_0x7a6aed['shift']());}};_0x9dbabf(++_0x335e68);}(_0x98e2,0x1a6));var _0x298e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x98e2[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var logger=require(_0x298e('0x0'))('agi');var verticesWithRetry=['menu',_0x298e('0x1'),_0x298e('0x2')];var Graph=function(){this[_0x298e('0x3')]={};this[_0x298e('0x4')]={};this[_0x298e('0x5')]=0x0;};Graph[_0x298e('0x6')][_0x298e('0x7')]=function(_0x381902){this[_0x298e('0x3')][_0x381902['id']]=_0x381902;this[_0x298e('0x4')][_0x381902['id']]=[];};Graph[_0x298e('0x6')][_0x298e('0x8')]=function(_0x2baf39,_0x2fb857,_0x403357){this[_0x298e('0x4')][_0x2baf39]['push']({'target':_0x2fb857,'condition':_0x403357});this[_0x298e('0x5')]+=0x1;};Graph[_0x298e('0x6')]['size']=function(){return _[_0x298e('0x9')](this[_0x298e('0x3')]);};Graph[_0x298e('0x6')][_0x298e('0xa')]=function(){return this[_0x298e('0x5')];};Graph[_0x298e('0x6')]['getVertex']=function(_0x2bf481){return this[_0x298e('0x3')][_0x2bf481];};Graph[_0x298e('0x6')][_0x298e('0xb')]=function(_0x303599,_0x278219){if(!this['vertices'][_0x303599]){return logger[_0x298e('0xc')]('no\x20vertex\x20found');}var _0x3cd6b2=_0x278219(this[_0x298e('0x3')][_0x303599]);if(!_0x3cd6b2){return logger[_0x298e('0xc')](_0x298e('0xd'));}if(this[_0x298e('0x4')][_0x303599][_0x298e('0xe')]===0x0){return logger[_0x298e('0xc')](_0x298e('0xf'));}for(var _0x145d2f=0x0,_0x558c53=[],_0x3bceb2=![];_0x145d2f<this[_0x298e('0x4')][_0x303599][_0x298e('0xe')];_0x145d2f+=0x1){if(this[_0x298e('0x4')][_0x303599][_0x145d2f]['condition']){_0x558c53=this[_0x298e('0x4')][_0x303599][_0x145d2f][_0x298e('0x10')][_0x298e('0x11')](',');for(var _0x21cd95=0x0;_0x21cd95<_0x558c53[_0x298e('0xe')];_0x21cd95+=0x1){if(this[_0x298e('0x3')][_0x303599][_0x298e('0x12')]===_0x298e('0x13')&&_0x558c53[_0x21cd95]==='-'){_0x3bceb2=this[_0x298e('0x4')][_0x303599][_0x145d2f]['target'];logger[_0x298e('0xc')](_0x298e('0x14'),_0x558c53[_0x21cd95],this[_0x298e('0x4')][_0x303599][_0x145d2f][_0x298e('0x15')]);}else if(this[_0x298e('0x3')][_0x303599][_0x298e('0x12')]===_0x298e('0x16')&&_0x558c53[_0x21cd95]==='i'){_0x3bceb2=this[_0x298e('0x4')][_0x303599][_0x145d2f][_0x298e('0x15')];logger[_0x298e('0xc')](_0x298e('0x17'),_0x558c53[_0x21cd95],this[_0x298e('0x4')][_0x303599][_0x145d2f][_0x298e('0x15')]);}if(_0x558c53[_0x21cd95]===_0x3cd6b2){return this[_0x298e('0xb')](this[_0x298e('0x4')][_0x303599][_0x145d2f][_0x298e('0x15')],_0x278219);}}}else{return this[_0x298e('0xb')](this[_0x298e('0x4')][_0x303599][_0x145d2f][_0x298e('0x15')],_0x278219);}}if(_0x558c53[_0x298e('0xe')]){if(this[_0x298e('0x3')][_0x303599]['agicommand']==='vswitch'){if(_0x3bceb2){return this[_0x298e('0xb')](_0x3bceb2,_0x278219);}return logger[_0x298e('0xc')](_0x298e('0x18'));}else if(_[_0x298e('0x19')](verticesWithRetry,this[_0x298e('0x3')][_0x303599][_0x298e('0x12')])){if(_0x3cd6b2==='-'){return logger[_0x298e('0xc')](_0x298e('0x1a'));}if(_0x3bceb2&&_0x3cd6b2!=='t'){return this[_0x298e('0xb')](_0x3bceb2,_0x278219);}return this[_0x298e('0xb')](_0x303599,_0x278219);}return logger[_0x298e('0xc')]('condition\x20not\x20found');}};module[_0x298e('0x1b')]=Graph;
\ No newline at end of file
index 03feb96..013ce3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5a5=['port','connection','xml2json','lodash','syncho','util','moment','../../config/logger','../../config/license/util','./rpc','./graph','./vertices','agi','defaults','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','format','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','agicommand','maxRetry','retry','addVertex','omit','mxCell','hasOwnProperty','length','addEdge','target','value','catch','createSquareReport','then','indexOf','substring','inspect','debug','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','sync','production','start','root','joinAt','YYYY-MM-DD\x20HH:mm:ss','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','isUndefined','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','Project\x20%s\x20not\x20published','continueAt','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server'];(function(_0x34a087,_0x4bd68e){var _0x5c15d7=function(_0x152823){while(--_0x152823){_0x34a087['push'](_0x34a087['shift']());}};_0x5c15d7(++_0x4bd68e);}(_0xc5a5,0x1d3));var _0x5c5a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc5a5[_0x20a584];return _0x4b41a8;};'use strict';var parser=require(_0x5c5a('0x0'));var _=require(_0x5c5a('0x1'));var syncho=require(_0x5c5a('0x2'));var util=require(_0x5c5a('0x3'));var moment=require(_0x5c5a('0x4'));var config=require('../../config/environment');var logger=require(_0x5c5a('0x5'))('agi');var utilLicense=require(_0x5c5a('0x6'));var rpc=require(_0x5c5a('0x7'));var mailRpc=require('./mailRpc');var Graph=require(_0x5c5a('0x8'));var Vertices=require(_0x5c5a('0x9'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x5c5a('0xa')]=_[_0x5c5a('0xb')](config['agi'],{'ip':'127.0.0.1','port':0x11dd});function connectionHandler(_0xf41702){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0xf41702);agiHandler(_0xf41702);}catch(_0x4c31e8){logger[_0x5c5a('0xc')](_0x4c31e8[_0x5c5a('0xd')]);}});});}function listeningHandler(){console[_0x5c5a('0xe')](_0x5c5a('0xf'),config[_0x5c5a('0xa')]['port']);logger[_0x5c5a('0x10')](util['format'](_0x5c5a('0x11'),config[_0x5c5a('0xa')]['ip'],config[_0x5c5a('0xa')]['port']));}function errorHandler(_0x57dadb){if(_0x57dadb&&_0x57dadb[_0x5c5a('0x12')]&&_0x57dadb[_0x5c5a('0x13')]){logger[_0x5c5a('0xc')](util[_0x5c5a('0x14')](_0x5c5a('0x15'),_0x57dadb[_0x5c5a('0x12')],_0x57dadb[_0x5c5a('0x13')]));}else{logger[_0x5c5a('0xc')](util[_0x5c5a('0x14')](_0x5c5a('0x16'),_0x57dadb[_0x5c5a('0xd')]));}}function closeHandler(){logger[_0x5c5a('0x10')](util[_0x5c5a('0x14')](_0x5c5a('0x17'),this[_0x5c5a('0x18')],this['calleridname'],this[_0x5c5a('0x19')],this[_0x5c5a('0x1a')],this[_0x5c5a('0x1b')]));try{createSquareReport(this);}catch(_0x2655bd){logger[_0x5c5a('0xc')](_0x2655bd['stack']);}}function timeoutHandler(){logger[_0x5c5a('0x10')](util[_0x5c5a('0x14')](_0x5c5a('0x1c'),this[_0x5c5a('0x18')],this[_0x5c5a('0x1d')],this['callerid'],this['dnid'],this[_0x5c5a('0x1b')]));}function hangupHandler(){logger[_0x5c5a('0x10')](util[_0x5c5a('0x14')](_0x5c5a('0x1e'),this[_0x5c5a('0x18')],this[_0x5c5a('0x1d')],this[_0x5c5a('0x19')],this[_0x5c5a('0x1a')],this[_0x5c5a('0x1b')]));this[_0x5c5a('0x1f')]=!![];}function getRoot(_0x366aac){return parser[_0x5c5a('0x20')](_0x366aac,{'object':!![]})[_0x5c5a('0x21')]['root'];}function addVertex(_0x1edaca,_0x218964,_0x39c83c){_0x218964[_0x5c5a('0x22')]=_0x39c83c;if(_0x218964['hasOwnProperty']('retry')){_0x218964[_0x5c5a('0x23')]=parseInt(_0x218964[_0x5c5a('0x24')],0xa);}_0x1edaca[_0x5c5a('0x25')](_[_0x5c5a('0x26')](_0x218964,_0x5c5a('0x27')));}function initGraph(_0x5424c9,_0x205ae8){var _0x4ad0bc=new Graph();for(var _0x2f9e9a in _0x5424c9){if(_0x5424c9[_0x5c5a('0x28')](_0x2f9e9a)){if(_['isArray'](_0x5424c9[_0x2f9e9a])){for(var _0x4297b7=0x0;_0x4297b7<_0x5424c9[_0x2f9e9a][_0x5c5a('0x29')];_0x4297b7+=0x1){addVertex(_0x4ad0bc,_0x5424c9[_0x2f9e9a][_0x4297b7],_0x2f9e9a);}}else{addVertex(_0x4ad0bc,_0x5424c9[_0x2f9e9a],_0x2f9e9a);}}}for(var _0x4556f9=0x0;_0x4556f9<_0x205ae8[_0x5c5a('0x29')];_0x4556f9+=0x1){if(_0x205ae8[_0x4556f9]['source']&&_0x205ae8[_0x4556f9]['target']){_0x4ad0bc[_0x5c5a('0x2a')](_0x205ae8[_0x4556f9]['source'],_0x205ae8[_0x4556f9][_0x5c5a('0x2b')],_0x205ae8[_0x4556f9][_0x5c5a('0x2c')]);}}return _0x4ad0bc;}function getSquareProject(_0x2c8f0b,_0x4a20f4){rpc['getSquareProject'](_0x2c8f0b)['then'](function(_0x4d3e2f){_0x4a20f4(null,_0x4d3e2f);})[_0x5c5a('0x2d')](function(_0x2f1491){_0x4a20f4(null,_0x2f1491);});}function createSquareReport(_0x15bb9d,_0x425f6a){rpc[_0x5c5a('0x2e')](_0x15bb9d)[_0x5c5a('0x2f')](function(_0x1d554b){if(_0x425f6a){_0x425f6a(null,_0x1d554b);}})[_0x5c5a('0x2d')](function(_0x28b025){if(_0x425f6a){_0x425f6a(null,_0x28b025);}});}function setChannelVariables(_0xbbefff){for(var _0x5ab750 in _0xbbefff){if(_0xbbefff['hasOwnProperty'](_0x5ab750)){if(_0x5ab750[_0x5c5a('0x30')]('agi_')===0x0){_0xbbefff[_0x5ab750[_0x5c5a('0x31')](0x4)]=_0xbbefff[_0x5ab750];delete _0xbbefff[_0x5ab750];}}}}function getLogFromObject(_0x1a1dcf){return util[_0x5c5a('0x32')](_0x1a1dcf,{'showHidden':![],'depth':null});}function agiHandler(_0x527f9f){var _0x564b8a,_0x5ccac2,_0x29b0ba,_0x32f5cd,_0x559722;logger[_0x5c5a('0x33')]('variables',JSON[_0x5c5a('0x34')](_0x527f9f,null,0x2));logger[_0x5c5a('0x10')](util['format'](_0x5c5a('0x35'),_0x527f9f[_0x5c5a('0x18')],_0x527f9f[_0x5c5a('0x1d')],_0x527f9f[_0x5c5a('0x19')],_0x527f9f[_0x5c5a('0x1a')],_0x527f9f[_0x5c5a('0x1b')]));_0x527f9f['on']('error',errorHandler);_0x527f9f['on'](_0x5c5a('0x36'),closeHandler);_0x527f9f['on'](_0x5c5a('0x37'),timeoutHandler);_0x527f9f[_0x5c5a('0x1f')]=![];_0x527f9f['on'](_0x5c5a('0x38'),hangupHandler);var _0x52a975=getSquareProject[_0x5c5a('0x39')](null,_0x527f9f[_0x5c5a('0x18')]);if(_0x52a975){if(_0x52a975[_0x5c5a('0x3a')]){_0x564b8a=getRoot(_0x52a975[_0x5c5a('0x3a')]);if(_0x564b8a&&_0x564b8a[_0x5c5a('0x3b')]){logger['debug'](_0x5c5a('0x3c'),JSON[_0x5c5a('0x34')](_0x564b8a,null,0x2));_0x527f9f[_0x5c5a('0x3d')]=moment()[_0x5c5a('0x14')](_0x5c5a('0x3e'));_0x5ccac2=initGraph(_['omit'](_0x564b8a,_0x5c5a('0x27')),_0x564b8a[_0x5c5a('0x27')]);_0x29b0ba=new Vertices(_0x527f9f,rpc,mailRpc);logger['info'](util[_0x5c5a('0x14')]('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x527f9f['arg_1'],_0x527f9f[_0x5c5a('0x1d')],_0x527f9f[_0x5c5a('0x19')],_0x527f9f[_0x5c5a('0x1a')],_0x527f9f[_0x5c5a('0x1b')]));_0x5ccac2['traverseBFS'](_0x564b8a[_0x5c5a('0x3b')]['id'],function(_0x2fb4c4){try{_0x2fb4c4=_0x29b0ba['clear'](_0x2fb4c4);logger[_0x5c5a('0x33')](_0x5c5a('0x3f'),JSON['stringify'](_0x2fb4c4,null,0x2));if(_0x2fb4c4[_0x5c5a('0x22')]===_0x5c5a('0x40')){logger[_0x5c5a('0x10')](_0x5c5a('0x41'));_0x527f9f[_0x5c5a('0x42')]=_0x2fb4c4['context']||_0x527f9f[_0x5c5a('0x42')];_0x527f9f[_0x5c5a('0x43')]=_0x2fb4c4[_0x5c5a('0x43')];_0x527f9f[_0x5c5a('0x44')]=_0x2fb4c4[_0x5c5a('0x44')]?_0x2fb4c4[_0x5c5a('0x44')]-0x1:0x1;return null;}else if(_0x2fb4c4&&_0x29b0ba[_0x2fb4c4[_0x5c5a('0x22')]]){_0x559722=_0x29b0ba[_0x2fb4c4[_0x5c5a('0x22')]](_0x2fb4c4);logger[_0x5c5a('0x10')](_0x5c5a('0x45'),JSON[_0x5c5a('0x34')](_0x559722,null,0x2));if(_0x559722&&_0x559722[_0x5c5a('0x46')]===AGI_CODE_SUCCESS&&_0x559722[_0x5c5a('0x47')]!==AGI_RESULT_ERROR&&!_0x527f9f[_0x5c5a('0x1f')]){logger[_0x5c5a('0x33')](_0x5c5a('0x45'),getLogFromObject(_0x559722));return _[_0x5c5a('0x48')](_0x559722[_0x5c5a('0x47')])?null:_0x559722[_0x5c5a('0x47')][_0x5c5a('0x49')]();}else{logger[_0x5c5a('0xc')](_0x5c5a('0x45'),getLogFromObject(_0x559722));return null;}}else{logger['error'](_0x5c5a('0x4a'));return null;}}catch(_0xc49821){logger[_0x5c5a('0xc')](_0xc49821['stack']);return null;}});if(_0x564b8a[_0x5c5a('0x4b')]){logger[_0x5c5a('0x10')](util[_0x5c5a('0x14')](_0x5c5a('0x4c'),_0x527f9f[_0x5c5a('0x18')],_0x527f9f[_0x5c5a('0x1d')],_0x527f9f['callerid'],_0x527f9f[_0x5c5a('0x1a')],_0x527f9f[_0x5c5a('0x1b')]));_0x5ccac2[_0x5c5a('0x4d')](_0x564b8a['finally']['id'],function(_0x20b0af){try{_0x20b0af=_0x29b0ba[_0x5c5a('0x4e')](_0x20b0af);logger[_0x5c5a('0x33')]('vertex',JSON[_0x5c5a('0x34')](_0x20b0af,null,0x2));if(_0x20b0af&&_0x29b0ba[_0x20b0af[_0x5c5a('0x22')]]){_0x559722=_0x29b0ba[_0x20b0af['agicommand']](_0x20b0af);if(_0x559722){logger[_0x5c5a('0x33')](_0x5c5a('0x45'),getLogFromObject(_0x559722));return _[_0x5c5a('0x48')](_0x559722[_0x5c5a('0x47')])?null:_0x559722[_0x5c5a('0x47')]['toString']();}else{logger[_0x5c5a('0xc')](_0x5c5a('0x45'),getLogFromObject(_0x559722));return null;}}else{logger[_0x5c5a('0xc')](_0x5c5a('0x4a'));return null;}}catch(_0x3a6acf){logger[_0x5c5a('0xc')](_0x3a6acf['stack']);return null;}});}logger['info'](util[_0x5c5a('0x14')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x527f9f[_0x5c5a('0x18')],_0x527f9f['calleridname'],_0x527f9f[_0x5c5a('0x19')],_0x527f9f[_0x5c5a('0x1a')],_0x527f9f[_0x5c5a('0x1b')]));logger[_0x5c5a('0x10')](util[_0x5c5a('0x14')](_0x5c5a('0x4f'),_0x527f9f[_0x5c5a('0x42')],_0x527f9f[_0x5c5a('0x43')],parseInt(_0x527f9f[_0x5c5a('0x44')],0xa)+0x1));_0x527f9f['continueAt'](_0x527f9f[_0x5c5a('0x42')],_0x527f9f[_0x5c5a('0x43')],parseInt(_0x527f9f[_0x5c5a('0x44')],0xa)+0x1);_0x527f9f[_0x5c5a('0x36')]();}}else{logger[_0x5c5a('0xc')](util[_0x5c5a('0x14')](_0x5c5a('0x50'),_0x527f9f['arg_1']));_0x527f9f[_0x5c5a('0x51')](_0x527f9f[_0x5c5a('0x42')],_0x527f9f[_0x5c5a('0x43')],parseInt(_0x527f9f[_0x5c5a('0x44')],0xa)+0x1);_0x527f9f['close']();}}else{logger[_0x5c5a('0xc')](util['format'](_0x5c5a('0x52'),_0x527f9f['arg_1']));_0x527f9f[_0x5c5a('0x51')](_0x527f9f['context'],_0x527f9f[_0x5c5a('0x43')],parseInt(_0x527f9f[_0x5c5a('0x44')],0xa)+0x1);_0x527f9f['close']();}}function main(){var _0x438221;return utilLicense[_0x5c5a('0x53')]()[_0x5c5a('0x2f')](function(_0x1f6e3f){if(_0x1f6e3f){if(_0x1f6e3f[_0x5c5a('0x54')]){if(_0x1f6e3f[_0x5c5a('0x55')]&&_0x1f6e3f['callysquare']>0x0){logger[_0x5c5a('0x10')](util[_0x5c5a('0x14')](_0x5c5a('0x56'),_0x1f6e3f[_0x5c5a('0x55')]));_0x438221=_0x1f6e3f[_0x5c5a('0x55')];}else{logger[_0x5c5a('0x10')](_0x5c5a('0x57'));}}else{logger[_0x5c5a('0x10')](_0x5c5a('0x58'));_0x438221=-0x1;}}})['catch'](function(_0xe57608){logger[_0x5c5a('0xc')](_0x5c5a('0x59'),_0xe57608[_0x5c5a('0xd')]);})['finally'](function(){var _0x425466=require(_0x5c5a('0x5a'))(config[_0x5c5a('0xa')][_0x5c5a('0x5b')],config['agi']['ip'],_0x438221);_0x425466['on'](_0x5c5a('0xc'),errorHandler);_0x425466['on']('listening',listeningHandler);_0x425466['on'](_0x5c5a('0x5c'),connectionHandler);_0x425466['on'](_0x5c5a('0x36'),closeHandler);});}main();
\ No newline at end of file
+var _0x5e06=['variables','stringify','close','timeout','evtHangup','hangup','production','start','joinAt','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','vertex','agicommand','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','isUndefined','result','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','connection','lodash','syncho','util','moment','../../config/environment','../../config/logger','agi','./mailRpc','./graph','./vertices','defaults','127.0.0.1','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','format','[%s]\x20%s','[ERROR]\x20%s','info','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','dnid','toJson','mxGraphModel','root','hasOwnProperty','retry','maxRetry','addVertex','omit','mxCell','isArray','length','source','target','addEdge','value','getSquareProject','then','createSquareReport','catch','agi_','debug'];(function(_0x23ec89,_0x11c956){var _0x51aea2=function(_0x42e3d2){while(--_0x42e3d2){_0x23ec89['push'](_0x23ec89['shift']());}};_0x51aea2(++_0x11c956);}(_0x5e06,0xd4));var _0x65e0=function(_0x54567a,_0x51ca83){_0x54567a=_0x54567a-0x0;var _0x3b7f1a=_0x5e06[_0x54567a];return _0x3b7f1a;};'use strict';var parser=require('xml2json');var _=require(_0x65e0('0x0'));var syncho=require(_0x65e0('0x1'));var util=require(_0x65e0('0x2'));var moment=require(_0x65e0('0x3'));var config=require(_0x65e0('0x4'));var logger=require(_0x65e0('0x5'))(_0x65e0('0x6'));var utilLicense=require('../../config/license/util');var rpc=require('./rpc');var mailRpc=require(_0x65e0('0x7'));var Graph=require(_0x65e0('0x8'));var Vertices=require(_0x65e0('0x9'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x65e0('0x6')]=_[_0x65e0('0xa')](config[_0x65e0('0x6')],{'ip':_0x65e0('0xb'),'port':0x11dd});function connectionHandler(_0x5cb714){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x5cb714);agiHandler(_0x5cb714);}catch(_0x5d737e){logger[_0x65e0('0xc')](_0x5d737e[_0x65e0('0xd')]);}});});}function listeningHandler(){console[_0x65e0('0xe')](_0x65e0('0xf'),config['agi'][_0x65e0('0x10')]);logger['info'](util['format'](_0x65e0('0x11'),config['agi']['ip'],config[_0x65e0('0x6')][_0x65e0('0x10')]));}function errorHandler(_0x4bb3da){if(_0x4bb3da&&_0x4bb3da[_0x65e0('0x12')]&&_0x4bb3da[_0x65e0('0x13')]){logger[_0x65e0('0xc')](util[_0x65e0('0x14')](_0x65e0('0x15'),_0x4bb3da[_0x65e0('0x12')],_0x4bb3da[_0x65e0('0x13')]));}else{logger[_0x65e0('0xc')](util[_0x65e0('0x14')](_0x65e0('0x16'),_0x4bb3da[_0x65e0('0xd')]));}}function closeHandler(){logger[_0x65e0('0x17')](util[_0x65e0('0x14')](_0x65e0('0x18'),this[_0x65e0('0x19')],this[_0x65e0('0x1a')],this['callerid'],this['dnid'],this[_0x65e0('0x1b')]));try{createSquareReport(this);}catch(_0x1e56fa){logger['error'](_0x1e56fa[_0x65e0('0xd')]);}}function timeoutHandler(){logger['info'](util['format'](_0x65e0('0x1c'),this[_0x65e0('0x19')],this[_0x65e0('0x1a')],this[_0x65e0('0x1d')],this['dnid'],this[_0x65e0('0x1b')]));}function hangupHandler(){logger[_0x65e0('0x17')](util[_0x65e0('0x14')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x65e0('0x19')],this['calleridname'],this[_0x65e0('0x1d')],this[_0x65e0('0x1e')],this[_0x65e0('0x1b')]));this['evtHangup']=!![];}function getRoot(_0x1a408a){return parser[_0x65e0('0x1f')](_0x1a408a,{'object':!![]})[_0x65e0('0x20')][_0x65e0('0x21')];}function addVertex(_0x312972,_0x2c982c,_0x158e40){_0x2c982c['agicommand']=_0x158e40;if(_0x2c982c[_0x65e0('0x22')](_0x65e0('0x23'))){_0x2c982c[_0x65e0('0x24')]=parseInt(_0x2c982c[_0x65e0('0x23')],0xa);}_0x312972[_0x65e0('0x25')](_[_0x65e0('0x26')](_0x2c982c,_0x65e0('0x27')));}function initGraph(_0x16bcf8,_0x491d19){var _0x42e5e1=new Graph();for(var _0x5667c6 in _0x16bcf8){if(_0x16bcf8[_0x65e0('0x22')](_0x5667c6)){if(_[_0x65e0('0x28')](_0x16bcf8[_0x5667c6])){for(var _0x1742d3=0x0;_0x1742d3<_0x16bcf8[_0x5667c6]['length'];_0x1742d3+=0x1){addVertex(_0x42e5e1,_0x16bcf8[_0x5667c6][_0x1742d3],_0x5667c6);}}else{addVertex(_0x42e5e1,_0x16bcf8[_0x5667c6],_0x5667c6);}}}for(var _0x282a40=0x0;_0x282a40<_0x491d19[_0x65e0('0x29')];_0x282a40+=0x1){if(_0x491d19[_0x282a40][_0x65e0('0x2a')]&&_0x491d19[_0x282a40][_0x65e0('0x2b')]){_0x42e5e1[_0x65e0('0x2c')](_0x491d19[_0x282a40]['source'],_0x491d19[_0x282a40][_0x65e0('0x2b')],_0x491d19[_0x282a40][_0x65e0('0x2d')]);}}return _0x42e5e1;}function getSquareProject(_0x58f9a1,_0x4bbf60){rpc[_0x65e0('0x2e')](_0x58f9a1)[_0x65e0('0x2f')](function(_0x3f493f){_0x4bbf60(null,_0x3f493f);})['catch'](function(_0x1fba1d){_0x4bbf60(null,_0x1fba1d);});}function createSquareReport(_0x47a85e,_0x416911){rpc[_0x65e0('0x30')](_0x47a85e)[_0x65e0('0x2f')](function(_0x25fb8d){if(_0x416911){_0x416911(null,_0x25fb8d);}})[_0x65e0('0x31')](function(_0x4710c8){if(_0x416911){_0x416911(null,_0x4710c8);}});}function setChannelVariables(_0x22e59c){for(var _0x5ba24c in _0x22e59c){if(_0x22e59c['hasOwnProperty'](_0x5ba24c)){if(_0x5ba24c['indexOf'](_0x65e0('0x32'))===0x0){_0x22e59c[_0x5ba24c['substring'](0x4)]=_0x22e59c[_0x5ba24c];delete _0x22e59c[_0x5ba24c];}}}}function getLogFromObject(_0x4e309c){return util['inspect'](_0x4e309c,{'showHidden':![],'depth':null});}function agiHandler(_0x16cd84){var _0x456fdd,_0x35a136,_0x2d42dd,_0x24a796,_0x585665;logger[_0x65e0('0x33')](_0x65e0('0x34'),JSON[_0x65e0('0x35')](_0x16cd84,null,0x2));logger[_0x65e0('0x17')](util[_0x65e0('0x14')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x16cd84[_0x65e0('0x19')],_0x16cd84[_0x65e0('0x1a')],_0x16cd84[_0x65e0('0x1d')],_0x16cd84[_0x65e0('0x1e')],_0x16cd84[_0x65e0('0x1b')]));_0x16cd84['on'](_0x65e0('0xc'),errorHandler);_0x16cd84['on'](_0x65e0('0x36'),closeHandler);_0x16cd84['on'](_0x65e0('0x37'),timeoutHandler);_0x16cd84[_0x65e0('0x38')]=![];_0x16cd84['on'](_0x65e0('0x39'),hangupHandler);var _0x3aba38=getSquareProject['sync'](null,_0x16cd84[_0x65e0('0x19')]);if(_0x3aba38){if(_0x3aba38[_0x65e0('0x3a')]){_0x456fdd=getRoot(_0x3aba38['production']);if(_0x456fdd&&_0x456fdd[_0x65e0('0x3b')]){logger[_0x65e0('0x33')](_0x65e0('0x21'),JSON[_0x65e0('0x35')](_0x456fdd,null,0x2));_0x16cd84[_0x65e0('0x3c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x35a136=initGraph(_[_0x65e0('0x26')](_0x456fdd,_0x65e0('0x27')),_0x456fdd[_0x65e0('0x27')]);_0x2d42dd=new Vertices(_0x16cd84,rpc,mailRpc);logger[_0x65e0('0x17')](util[_0x65e0('0x14')](_0x65e0('0x3d'),_0x16cd84['arg_1'],_0x16cd84['calleridname'],_0x16cd84[_0x65e0('0x1d')],_0x16cd84[_0x65e0('0x1e')],_0x16cd84['uniqueid']));_0x35a136[_0x65e0('0x3e')](_0x456fdd['start']['id'],function(_0xc7d406){try{_0xc7d406=_0x2d42dd[_0x65e0('0x3f')](_0xc7d406);logger['debug'](_0x65e0('0x40'),JSON[_0x65e0('0x35')](_0xc7d406,null,0x2));if(_0xc7d406[_0x65e0('0x41')]===_0x65e0('0x42')){logger[_0x65e0('0x17')](_0x65e0('0x43'));_0x16cd84[_0x65e0('0x44')]=_0xc7d406[_0x65e0('0x44')]||_0x16cd84['context'];_0x16cd84[_0x65e0('0x45')]=_0xc7d406[_0x65e0('0x45')];_0x16cd84['priority']=_0xc7d406[_0x65e0('0x46')]?_0xc7d406[_0x65e0('0x46')]-0x1:0x1;return null;}else if(_0xc7d406&&_0x2d42dd[_0xc7d406[_0x65e0('0x41')]]){_0x585665=_0x2d42dd[_0xc7d406[_0x65e0('0x41')]](_0xc7d406);logger[_0x65e0('0x17')](_0x65e0('0x47'),JSON[_0x65e0('0x35')](_0x585665,null,0x2));if(_0x585665&&_0x585665[_0x65e0('0x48')]===AGI_CODE_SUCCESS&&_0x585665['result']!==AGI_RESULT_ERROR&&!_0x16cd84[_0x65e0('0x38')]){logger[_0x65e0('0x33')](_0x65e0('0x47'),getLogFromObject(_0x585665));return _[_0x65e0('0x49')](_0x585665[_0x65e0('0x4a')])?null:_0x585665[_0x65e0('0x4a')][_0x65e0('0x4b')]();}else{logger[_0x65e0('0xc')](_0x65e0('0x47'),getLogFromObject(_0x585665));return null;}}else{logger[_0x65e0('0xc')](_0x65e0('0x4c'));return null;}}catch(_0x140869){logger[_0x65e0('0xc')](_0x140869[_0x65e0('0xd')]);return null;}});if(_0x456fdd[_0x65e0('0x4d')]){logger[_0x65e0('0x17')](util[_0x65e0('0x14')](_0x65e0('0x4e'),_0x16cd84[_0x65e0('0x19')],_0x16cd84[_0x65e0('0x1a')],_0x16cd84['callerid'],_0x16cd84[_0x65e0('0x1e')],_0x16cd84['uniqueid']));_0x35a136[_0x65e0('0x3e')](_0x456fdd[_0x65e0('0x4d')]['id'],function(_0x51db29){try{_0x51db29=_0x2d42dd[_0x65e0('0x3f')](_0x51db29);logger['debug']('vertex',JSON[_0x65e0('0x35')](_0x51db29,null,0x2));if(_0x51db29&&_0x2d42dd[_0x51db29['agicommand']]){_0x585665=_0x2d42dd[_0x51db29[_0x65e0('0x41')]](_0x51db29);if(_0x585665){logger['debug'](_0x65e0('0x47'),getLogFromObject(_0x585665));return _[_0x65e0('0x49')](_0x585665['result'])?null:_0x585665[_0x65e0('0x4a')]['toString']();}else{logger['error'](_0x65e0('0x47'),getLogFromObject(_0x585665));return null;}}else{logger[_0x65e0('0xc')](_0x65e0('0x4c'));return null;}}catch(_0x412c74){logger['error'](_0x412c74[_0x65e0('0xd')]);return null;}});}logger[_0x65e0('0x17')](util[_0x65e0('0x14')](_0x65e0('0x4f'),_0x16cd84[_0x65e0('0x19')],_0x16cd84[_0x65e0('0x1a')],_0x16cd84[_0x65e0('0x1d')],_0x16cd84[_0x65e0('0x1e')],_0x16cd84[_0x65e0('0x1b')]));logger[_0x65e0('0x17')](util[_0x65e0('0x14')](_0x65e0('0x50'),_0x16cd84['context'],_0x16cd84[_0x65e0('0x45')],parseInt(_0x16cd84['priority'],0xa)+0x1));_0x16cd84[_0x65e0('0x51')](_0x16cd84[_0x65e0('0x44')],_0x16cd84[_0x65e0('0x45')],parseInt(_0x16cd84[_0x65e0('0x46')],0xa)+0x1);_0x16cd84[_0x65e0('0x36')]();}}else{logger[_0x65e0('0xc')](util['format'](_0x65e0('0x52'),_0x16cd84[_0x65e0('0x19')]));_0x16cd84[_0x65e0('0x51')](_0x16cd84['context'],_0x16cd84['extension'],parseInt(_0x16cd84[_0x65e0('0x46')],0xa)+0x1);_0x16cd84['close']();}}else{logger[_0x65e0('0xc')](util['format'](_0x65e0('0x53'),_0x16cd84[_0x65e0('0x19')]));_0x16cd84['continueAt'](_0x16cd84[_0x65e0('0x44')],_0x16cd84[_0x65e0('0x45')],parseInt(_0x16cd84[_0x65e0('0x46')],0xa)+0x1);_0x16cd84[_0x65e0('0x36')]();}}function main(){var _0x206184;return utilLicense['getLicense']()['then'](function(_0x2d3be5){if(_0x2d3be5){if(_0x2d3be5[_0x65e0('0x54')]){if(_0x2d3be5[_0x65e0('0x55')]&&_0x2d3be5[_0x65e0('0x55')]>0x0){logger['info'](util['format'](_0x65e0('0x56'),_0x2d3be5[_0x65e0('0x55')]));_0x206184=_0x2d3be5['callysquare'];}else{logger[_0x65e0('0x17')]('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0x65e0('0x17')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x206184=-0x1;}}})['catch'](function(_0x1130ae){logger[_0x65e0('0xc')]('[LICENSE]',_0x1130ae[_0x65e0('0xd')]);})['finally'](function(){var _0x5cfaab=require('./server')(config[_0x65e0('0x6')][_0x65e0('0x10')],config[_0x65e0('0x6')]['ip'],_0x206184);_0x5cfaab['on'](_0x65e0('0xc'),errorHandler);_0x5cfaab['on']('listening',listeningHandler);_0x5cfaab['on'](_0x65e0('0x57'),connectionHandler);_0x5cfaab['on'](_0x65e0('0x36'),closeHandler);});}main();
\ No newline at end of file
index 5d68c64..c98205c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5362=['catch','sendMailMessage','SendMail','bluebird','client','http','then','error','message'];(function(_0x23ffe8,_0x3ed23e){var _0xceb462=function(_0x5a72e4){while(--_0x5a72e4){_0x23ffe8['push'](_0x23ffe8['shift']());}};_0xceb462(++_0x3ed23e);}(_0x5362,0x78));var _0x2536=function(_0x1b64d8,_0x2a4e60){_0x1b64d8=_0x1b64d8-0x0;var _0x6ddc1e=_0x5362[_0x1b64d8];return _0x6ddc1e;};'use strict';var BPromise=require(_0x2536('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x2536('0x1')][_0x2536('0x2')]({'port':0x232b});function request(_0x5cc802,_0x4acbbd){return new BPromise(function(_0x484d76,_0x35dcb5){return client['request'](_0x5cc802,_0x4acbbd)[_0x2536('0x3')](function(_0x457a36){if(_0x457a36[_0x2536('0x4')]){return _0x35dcb5(_0x457a36[_0x2536('0x4')][_0x2536('0x5')]);}else{return _0x484d76(_0x457a36['result']);}})[_0x2536('0x6')](function(_0x151ff1){return _0x35dcb5(_0x151ff1);});});}exports[_0x2536('0x7')]=function(_0x5e15f9,_0x5bebdc){return request(_0x2536('0x8'),{'account':_0x5e15f9,'message':_0x5bebdc});};
\ No newline at end of file
+var _0x0187=['error','message','catch','sendMailMessage','SendMail','bluebird','jayson/promise','client','http','request','then'];(function(_0x409251,_0x40f525){var _0x216f47=function(_0x517895){while(--_0x517895){_0x409251['push'](_0x409251['shift']());}};_0x216f47(++_0x40f525);}(_0x0187,0x7e));var _0x7018=function(_0x65c50e,_0x1aa926){_0x65c50e=_0x65c50e-0x0;var _0x4573e7=_0x0187[_0x65c50e];return _0x4573e7;};'use strict';var BPromise=require(_0x7018('0x0'));var jayson=require(_0x7018('0x1'));var client=jayson[_0x7018('0x2')][_0x7018('0x3')]({'port':0x232b});function request(_0x5026b0,_0xa9ddd9){return new BPromise(function(_0x147c15,_0x311868){return client[_0x7018('0x4')](_0x5026b0,_0xa9ddd9)[_0x7018('0x5')](function(_0xd4994d){if(_0xd4994d[_0x7018('0x6')]){return _0x311868(_0xd4994d['error'][_0x7018('0x7')]);}else{return _0x147c15(_0xd4994d['result']);}})[_0x7018('0x8')](function(_0x40c1f9){return _0x311868(_0x40c1f9);});});}exports[_0x7018('0x9')]=function(_0xf99815,_0x4c4a5e){return request(_0x7018('0xa'),{'account':_0xf99815,'message':_0x4c4a5e});};
\ No newline at end of file
index d388849..efdbf23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66f4=['slice','trim','length','emit','indexOf','line','exports','stream','call','_localBuffer','_inBody','_transform','toString','substring','split'];(function(_0x353d3d,_0xc7ebc){var _0x1c5409=function(_0x54838e){while(--_0x54838e){_0x353d3d['push'](_0x353d3d['shift']());}};_0x1c5409(++_0xc7ebc);}(_0x66f4,0x7f));var _0x466f=function(_0x3b8ac8,_0x16b0e2){_0x3b8ac8=_0x3b8ac8-0x0;var _0x4840dd=_0x66f4[_0x3b8ac8];return _0x4840dd;};'use strict';var util=require('util');var Transform=require(_0x466f('0x0'))['Transform'];function AGIReply(_0x4a4c10){Transform[_0x466f('0x1')](this,_0x4a4c10);this[_0x466f('0x2')]='';this[_0x466f('0x3')]=![];}util['inherits'](AGIReply,Transform);AGIReply['prototype'][_0x466f('0x4')]=function(_0x53caa9,_0x5388ae,_0x231b3c){var _0x941ea6='\x0a',_0x3e712c=['\x0a\x0a','\x0d\x0a\x0d\x0a'],_0x435b63=-0x1,_0x5224b2=-0x1,_0xb9c5be='',_0x161913=0x0,_0x502318='',_0x4b3c28='';this[_0x466f('0x2')]+=_0x53caa9[_0x466f('0x5')]();_0x502318=this[_0x466f('0x2')];if(!this[_0x466f('0x3')]){_0x161913=0x0;while(_0x3e712c[_0x161913]){while((_0x5224b2=_0x502318['indexOf'](_0x3e712c[_0x161913]))!=-0x1){_0xb9c5be=_0x3e712c[_0x161913];_0x4b3c28=_0x502318[_0x466f('0x6')](0x0,_0x5224b2);_0x502318=_0x502318[_0x466f('0x6')](_0x5224b2+_0xb9c5be['length']);var _0x32ff9c=_0x4b3c28[_0x466f('0x7')](_0x941ea6),_0x2b05bf=0x0,_0x4b742c={},_0x173b69='',_0x393ad3='',_0x4803e4=-0x1;while(_0x32ff9c[_0x2b05bf]){_0x4803e4=_0x32ff9c[_0x2b05bf]['indexOf'](':');if(_0x4803e4!=-0x1){_0x173b69=_0x32ff9c[_0x2b05bf][_0x466f('0x8')](0x0,_0x4803e4)[_0x466f('0x9')]();_0x393ad3=_0x32ff9c[_0x2b05bf]['slice'](_0x4803e4+0x1)['trim']();if(_0x173b69[_0x466f('0xa')]>0x0){_0x4b742c[_0x173b69]=_0x393ad3;}}else{}_0x2b05bf++;}this[_0x466f('0xb')]('headers',_0x4b742c);this[_0x466f('0x3')]=!![];}_0x161913++;}this['_localBuffer']=_0x502318;}else{while((_0x435b63=_0x502318[_0x466f('0xc')](_0x941ea6))!=-0x1){_0x4b3c28=_0x502318['substring'](0x0,_0x435b63);this[_0x466f('0xb')](_0x466f('0xd'),_0x4b3c28);_0x502318=_0x502318['substring'](_0x435b63+_0x941ea6[_0x466f('0xa')]);}this[_0x466f('0x2')]=_0x502318;}_0x231b3c();};module[_0x466f('0xe')]=AGIReply;
\ No newline at end of file
+var _0xe888=['_inBody','prototype','\x0d\x0a\x0d\x0a','toString','substring','split','indexOf','trim','length','emit','headers','line','exports','stream','Transform','call','_localBuffer'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xe888,0x194));var _0x8e88=function(_0x532112,_0x37d94b){_0x532112=_0x532112-0x0;var _0x23e5fb=_0xe888[_0x532112];return _0x23e5fb;};'use strict';var util=require('util');var Transform=require(_0x8e88('0x0'))[_0x8e88('0x1')];function AGIReply(_0x47b822){Transform[_0x8e88('0x2')](this,_0x47b822);this[_0x8e88('0x3')]='';this[_0x8e88('0x4')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x8e88('0x5')]['_transform']=function(_0x4dd2fa,_0x40ad63,_0x57439c){var _0x53946f='\x0a',_0x2c9b13=['\x0a\x0a',_0x8e88('0x6')],_0x46883f=-0x1,_0x341223=-0x1,_0x1f8f94='',_0x452095=0x0,_0x18d8cf='',_0xa252e0='';this[_0x8e88('0x3')]+=_0x4dd2fa[_0x8e88('0x7')]();_0x18d8cf=this[_0x8e88('0x3')];if(!this['_inBody']){_0x452095=0x0;while(_0x2c9b13[_0x452095]){while((_0x341223=_0x18d8cf['indexOf'](_0x2c9b13[_0x452095]))!=-0x1){_0x1f8f94=_0x2c9b13[_0x452095];_0xa252e0=_0x18d8cf['substring'](0x0,_0x341223);_0x18d8cf=_0x18d8cf[_0x8e88('0x8')](_0x341223+_0x1f8f94['length']);var _0x41722c=_0xa252e0[_0x8e88('0x9')](_0x53946f),_0x35dfd1=0x0,_0x5d6c24={},_0x4c6450='',_0x260cbd='',_0x517782=-0x1;while(_0x41722c[_0x35dfd1]){_0x517782=_0x41722c[_0x35dfd1][_0x8e88('0xa')](':');if(_0x517782!=-0x1){_0x4c6450=_0x41722c[_0x35dfd1]['slice'](0x0,_0x517782)[_0x8e88('0xb')]();_0x260cbd=_0x41722c[_0x35dfd1]['slice'](_0x517782+0x1)['trim']();if(_0x4c6450[_0x8e88('0xc')]>0x0){_0x5d6c24[_0x4c6450]=_0x260cbd;}}else{}_0x35dfd1++;}this[_0x8e88('0xd')](_0x8e88('0xe'),_0x5d6c24);this[_0x8e88('0x4')]=!![];}_0x452095++;}this[_0x8e88('0x3')]=_0x18d8cf;}else{while((_0x46883f=_0x18d8cf[_0x8e88('0xa')](_0x53946f))!=-0x1){_0xa252e0=_0x18d8cf[_0x8e88('0x8')](0x0,_0x46883f);this[_0x8e88('0xd')](_0x8e88('0xf'),_0xa252e0);_0x18d8cf=_0x18d8cf[_0x8e88('0x8')](_0x46883f+_0x53946f[_0x8e88('0xc')]);}this['_localBuffer']=_0x18d8cf;}_0x57439c();};module[_0x8e88('0x10')]=AGIReply;
\ No newline at end of file
index 7392861..7fcbd5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe28c=['util','jayson/promise','http','then','error','message','catch','getSquareProject','ShowSquareProject','production','getMailAccountById','MailServerOut','name','email','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','ShowUser','ShowTrunk','ShowSound','save_name','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','merge','arg_1','arg_2','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','createCmContact','ShowCmHopper','phone','ListId','CreateCmContact','getPauseById','agentLogin','LoginUser','PauseUser','UnpauseUser','LogoutUser','bluebird','lodash'];(function(_0x1ba55e,_0x240848){var _0x162311=function(_0x29b9fd){while(--_0x29b9fd){_0x1ba55e['push'](_0x1ba55e['shift']());}};_0x162311(++_0x240848);}(_0xe28c,0xa0));var _0xce28=function(_0x5f5497,_0x50803a){_0x5f5497=_0x5f5497-0x0;var _0x10e943=_0xe28c[_0x5f5497];return _0x10e943;};'use strict';var BPromise=require(_0xce28('0x0'));var moment=require('moment');var _=require(_0xce28('0x1'));var util=require(_0xce28('0x2'));var jayson=require(_0xce28('0x3'));var client=jayson['client'][_0xce28('0x4')]({'port':0x2329});function request(_0x31a296,_0x6939d5){return new BPromise(function(_0x3280b6,_0x5adc91){return client['request'](_0x31a296,_0x6939d5)[_0xce28('0x5')](function(_0x1b994f){if(_0x1b994f[_0xce28('0x6')]){return _0x5adc91(_0x1b994f[_0xce28('0x6')][_0xce28('0x7')]);}else{return _0x3280b6(_0x1b994f['result']);}})[_0xce28('0x8')](function(_0x4a8c3a){return _0x5adc91(_0x4a8c3a);});});}exports[_0xce28('0x9')]=function(_0x63ffb3){return request(_0xce28('0xa'),{'options':{'raw':![],'where':{'name':_0x63ffb3},'attributes':[_0xce28('0xb')]}});};exports[_0xce28('0xc')]=function(_0x2a22bd){return request('ShowMailAccount',{'options':{'raw':![],'where':{'id':_0x2a22bd},'include':[{'model':_0xce28('0xd'),'as':'Smtp'}],'attributes':['id',_0xce28('0xe'),_0xce28('0xf')]}});};exports['getSquareProjectById']=function(_0x392bfb){return request(_0xce28('0xa'),{'options':{'where':{'id':_0x392bfb},'attributes':[_0xce28('0xe')]}});};exports[_0xce28('0x10')]=function(_0x435adf){return request(_0xce28('0x11'),{'options':{'where':{'id':_0x435adf},'attributes':[_0xce28('0xe')]}});};exports[_0xce28('0x12')]=function(_0x42bb5d){return request(_0xce28('0x13'),{'options':{'where':{'id':_0x42bb5d},'attributes':[_0xce28('0xe')]}});};exports[_0xce28('0x14')]=function(_0x425513){return request(_0xce28('0x15'),{'options':{'where':{'id':_0x425513},'attributes':[_0xce28('0x16')]}});};exports[_0xce28('0x17')]=function(_0x3e6a84){return request(_0xce28('0x18'),{'options':{'where':{'id':_0x3e6a84},'attributes':[_0xce28('0xe')]}});};exports['getTrunkById']=function(_0x2eddff){return request(_0xce28('0x19'),{'options':{'where':{'id':_0x2eddff},'attributes':[_0xce28('0xe')]}});};exports['getSoundById']=function(_0x525fd2){return request(_0xce28('0x1a'),{'options':{'where':{'id':_0x525fd2},'attributes':[_0xce28('0x1b')]}});};exports['getIntervalById']=function(_0x2fedd6){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x2fedd6},'include':[{'model':_0xce28('0x1c'),'as':_0xce28('0x1d')}]}});};exports[_0xce28('0x1e')]=function(_0x2d5bda){return request(_0xce28('0x1f'),{'options':{'where':{'id':_0x2d5bda},'attributes':['id','name']}});};exports[_0xce28('0x20')]=function(_0x5117f1){return request(_0xce28('0x21'),{'body':_0x5117f1});};exports['createSquareDetailsReport']=function(_0x3151ce){return request(_0xce28('0x22'),{'body':_0x3151ce});};exports[_0xce28('0x23')]=function(_0x3a9169){return request(_0xce28('0x24'),{'body':_[_0xce28('0x25')](_0x3a9169,{'project_name':_0x3a9169[_0xce28('0x26')],'prev_project_name':_0x3a9169[_0xce28('0x27')]||'','is_subproject':_0x3a9169['arg_2']?!![]:![],'leaveAt':moment()['format'](_0xce28('0x28'))})});};exports[_0xce28('0x29')]=function(_0x4a8846){return request(_0xce28('0x2a'),{'body':_0x4a8846});};exports['createSquareMessage']=function(_0x4cc091){return request('CreateSquareMessage',{'body':_0x4cc091});};exports[_0xce28('0x2b')]=function(_0x311446){return request(_0xce28('0x2c'),{'options':{'raw':![],'where':{'phone':_0x311446[_0xce28('0x2d')],'ListId':_0x311446[_0xce28('0x2e')]}}})['then'](function(_0x47c582){if(_0x47c582){return _0x47c582;}return request(_0xce28('0x2f'),{'body':_0x311446});});};exports[_0xce28('0x30')]=function(_0x3fc071){return request('ShowPause',{'options':{'where':{'id':_0x3fc071},'attributes':['name']}});};exports[_0xce28('0x31')]=function(_0x47babe,_0x3c854b){return request(_0xce28('0x32'),{'body':{'interface':_0x3c854b},'options':{'where':_0x47babe}});};exports['agentPause']=function(_0x2e71c5,_0x21a57d,_0x330861){return request(_0xce28('0x33'),{'body':{'type':_0x21a57d,'uniqueid':_0x330861},'options':{'where':_0x2e71c5}});};exports['agentUnpause']=function(_0x500844){return request(_0xce28('0x34'),{'body':{},'options':{'where':_0x500844}});};exports['agentLogout']=function(_0x1ddd73){return request(_0xce28('0x35'),{'body':{},'options':{'where':_0x1ddd73}});};
\ No newline at end of file
+var _0x1fb2=['Interval','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','createSquareReport','merge','arg_1','arg_2','format','createSquareRecording','ShowCmHopper','phone','ListId','getPauseById','ShowPause','agentLogin','LoginUser','agentPause','PauseUser','agentUnpause','LogoutUser','moment','lodash','util','http','then','error','message','catch','getSquareProject','ShowSquareProject','production','MailServerOut','Smtp','name','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','getUserById','ShowUser','getTrunkById','getSoundById','ShowSound','save_name','getIntervalById','ShowInterval'];(function(_0x239b5f,_0x2a0115){var _0x21e6b6=function(_0x12145a){while(--_0x12145a){_0x239b5f['push'](_0x239b5f['shift']());}};_0x21e6b6(++_0x2a0115);}(_0x1fb2,0x14f));var _0x21fb=function(_0xf2e787,_0x12b3af){_0xf2e787=_0xf2e787-0x0;var _0x6200fc=_0x1fb2[_0xf2e787];return _0x6200fc;};'use strict';var BPromise=require('bluebird');var moment=require(_0x21fb('0x0'));var _=require(_0x21fb('0x1'));var util=require(_0x21fb('0x2'));var jayson=require('jayson/promise');var client=jayson['client'][_0x21fb('0x3')]({'port':0x2329});function request(_0x978ae0,_0x2474c7){return new BPromise(function(_0xd35aa8,_0x1de6e1){return client['request'](_0x978ae0,_0x2474c7)[_0x21fb('0x4')](function(_0x36b2fa){if(_0x36b2fa[_0x21fb('0x5')]){return _0x1de6e1(_0x36b2fa[_0x21fb('0x5')][_0x21fb('0x6')]);}else{return _0xd35aa8(_0x36b2fa['result']);}})[_0x21fb('0x7')](function(_0x46120e){return _0x1de6e1(_0x46120e);});});}exports[_0x21fb('0x8')]=function(_0x4e614a){return request(_0x21fb('0x9'),{'options':{'raw':![],'where':{'name':_0x4e614a},'attributes':[_0x21fb('0xa')]}});};exports['getMailAccountById']=function(_0x1c66e9){return request('ShowMailAccount',{'options':{'raw':![],'where':{'id':_0x1c66e9},'include':[{'model':_0x21fb('0xb'),'as':_0x21fb('0xc')}],'attributes':['id',_0x21fb('0xd'),'email']}});};exports[_0x21fb('0xe')]=function(_0x33d90a){return request(_0x21fb('0x9'),{'options':{'where':{'id':_0x33d90a},'attributes':[_0x21fb('0xd')]}});};exports[_0x21fb('0xf')]=function(_0x402886){return request(_0x21fb('0x10'),{'options':{'where':{'id':_0x402886},'attributes':[_0x21fb('0xd')]}});};exports[_0x21fb('0x11')]=function(_0x1ff973){return request(_0x21fb('0x12'),{'options':{'where':{'id':_0x1ff973},'attributes':[_0x21fb('0xd')]}});};exports[_0x21fb('0x13')]=function(_0x491d73){return request(_0x21fb('0x14'),{'options':{'where':{'id':_0x491d73},'attributes':['dsn']}});};exports[_0x21fb('0x15')]=function(_0x27a9ba){return request(_0x21fb('0x16'),{'options':{'where':{'id':_0x27a9ba},'attributes':[_0x21fb('0xd')]}});};exports[_0x21fb('0x17')]=function(_0x2dcbf7){return request('ShowTrunk',{'options':{'where':{'id':_0x2dcbf7},'attributes':['name']}});};exports[_0x21fb('0x18')]=function(_0x3e739b){return request(_0x21fb('0x19'),{'options':{'where':{'id':_0x3e739b},'attributes':[_0x21fb('0x1a')]}});};exports[_0x21fb('0x1b')]=function(_0x365e0a){return request(_0x21fb('0x1c'),{'options':{'raw':![],'where':{'id':_0x365e0a},'include':[{'model':_0x21fb('0x1d'),'as':'Intervals'}]}});};exports[_0x21fb('0x1e')]=function(_0x980c67){return request(_0x21fb('0x1f'),{'options':{'where':{'id':_0x980c67},'attributes':['id',_0x21fb('0xd')]}});};exports[_0x21fb('0x20')]=function(_0x5e88d9){return request(_0x21fb('0x21'),{'body':_0x5e88d9});};exports[_0x21fb('0x22')]=function(_0x20d9b8){return request('CreateSquareDetailsReport',{'body':_0x20d9b8});};exports[_0x21fb('0x23')]=function(_0x388422){return request('CreateSquareReport',{'body':_[_0x21fb('0x24')](_0x388422,{'project_name':_0x388422[_0x21fb('0x25')],'prev_project_name':_0x388422[_0x21fb('0x26')]||'','is_subproject':_0x388422[_0x21fb('0x26')]?!![]:![],'leaveAt':moment()[_0x21fb('0x27')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0x21fb('0x28')]=function(_0xa5d624){return request('CreateSquareRecording',{'body':_0xa5d624});};exports['createSquareMessage']=function(_0x2cf67a){return request('CreateSquareMessage',{'body':_0x2cf67a});};exports['createCmContact']=function(_0x29a3d0){return request(_0x21fb('0x29'),{'options':{'raw':![],'where':{'phone':_0x29a3d0[_0x21fb('0x2a')],'ListId':_0x29a3d0[_0x21fb('0x2b')]}}})[_0x21fb('0x4')](function(_0x2d99be){if(_0x2d99be){return _0x2d99be;}return request('CreateCmContact',{'body':_0x29a3d0});});};exports[_0x21fb('0x2c')]=function(_0x5cc2fa){return request(_0x21fb('0x2d'),{'options':{'where':{'id':_0x5cc2fa},'attributes':[_0x21fb('0xd')]}});};exports[_0x21fb('0x2e')]=function(_0x2400f1,_0x565f06){return request(_0x21fb('0x2f'),{'body':{'interface':_0x565f06},'options':{'where':_0x2400f1}});};exports[_0x21fb('0x30')]=function(_0x50a718,_0x6fe8ad,_0xaaeb83){return request(_0x21fb('0x31'),{'body':{'type':_0x6fe8ad,'uniqueid':_0xaaeb83},'options':{'where':_0x50a718}});};exports[_0x21fb('0x32')]=function(_0x5cdba4){return request('UnpauseUser',{'body':{},'options':{'where':_0x5cdba4}});};exports['agentLogout']=function(_0x4fbe05){return request(_0x21fb('0x33'),{'body':{},'options':{'where':_0x4fbe05}});};
\ No newline at end of file
index 0b3a69b..8548b49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb091=['./lex','exports'];(function(_0x4396ce,_0x3ade56){var _0x1427c2=function(_0x46fba2){while(--_0x46fba2){_0x4396ce['push'](_0x4396ce['shift']());}};_0x1427c2(++_0x3ade56);}(_0xb091,0x16e));var _0x1b09=function(_0x1dd431,_0x44e852){_0x1dd431=_0x1dd431-0x0;var _0x51ad93=_0xb091[_0x1dd431];return _0x51ad93;};var polly=require('./polly');var lex=require(_0x1b09('0x0'));module[_0x1b09('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0xa786=['exports'];(function(_0x68a1e7,_0x32212f){var _0x48b66b=function(_0x47600c){while(--_0x47600c){_0x68a1e7['push'](_0x68a1e7['shift']());}};_0x48b66b(++_0x32212f);}(_0xa786,0x1d2));var _0x6a78=function(_0x4f15c6,_0x5f15e5){_0x4f15c6=_0x4f15c6-0x0;var _0x4b2c85=_0xa786[_0x4f15c6];return _0x4b2c85;};var polly=require('./polly');var lex=require('./lex');module[_0x6a78('0x0')]={'polly':polly,'lex':lex};
\ No newline at end of file
index 4449bca..1f85f65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13f6=['./lib/api','exports'];(function(_0x18a893,_0x2c076e){var _0x30a16c=function(_0x5eebdb){while(--_0x5eebdb){_0x18a893['push'](_0x18a893['shift']());}};_0x30a16c(++_0x2c076e);}(_0x13f6,0x124));var _0x613f=function(_0x3695ef,_0x25fb15){_0x3695ef=_0x3695ef-0x0;var _0xb8062f=_0x13f6[_0x3695ef];return _0xb8062f;};'use strict';var lex=require(_0x613f('0x0'));module[_0x613f('0x1')]=function(_0x5f1b3e,_0x563492,_0xd04cfd,_0x13b50a,_0x12dc5a,_0x5414ff){return lex(_0x5f1b3e,_0x563492,_0xd04cfd,_0x13b50a,_0x12dc5a,_0x5414ff);};
\ No newline at end of file
+var _0x702d=['exports','./lib/api'];(function(_0x4c30fd,_0x5027a3){var _0x4eb90d=function(_0x476511){while(--_0x476511){_0x4c30fd['push'](_0x4c30fd['shift']());}};_0x4eb90d(++_0x5027a3);}(_0x702d,0x147));var _0xd702=function(_0x2695ab,_0x3f4b39){_0x2695ab=_0x2695ab-0x0;var _0x3eaf50=_0x702d[_0x2695ab];return _0x3eaf50;};'use strict';var lex=require(_0xd702('0x0'));module[_0xd702('0x1')]=function(_0x37c2c5,_0x33e7c5,_0x37ed5c,_0x5c2b9e,_0x20c11a,_0xebbd7c){return lex(_0x37c2c5,_0x33e7c5,_0x37ed5c,_0x5c2b9e,_0x20c11a,_0xebbd7c);};
\ No newline at end of file
index 6e2d18c..b672370 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x37710a,_0x5d53d1){var _0x2f6602=function(_0x5cecc6){while(--_0x5cecc6){_0x37710a['push'](_0x37710a['shift']());}};_0x2f6602(++_0x5d53d1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0xa9e0[_0x173d7e];return _0x2220d6;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
+var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x139882,_0x2f58dc){var _0x20eeb4=function(_0x40c4ac){while(--_0x40c4ac){_0x139882['push'](_0x139882['shift']());}};_0x20eeb4(++_0x2f58dc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
index 0290139..d5d8a45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d35=['./lib/api'];(function(_0x37c6bb,_0x2616d5){var _0x44d117=function(_0x2e80d6){while(--_0x2e80d6){_0x37c6bb['push'](_0x37c6bb['shift']());}};_0x44d117(++_0x2616d5);}(_0x8d35,0x1bb));var _0x58d3=function(_0x9fd887,_0x47f76c){_0x9fd887=_0x9fd887-0x0;var _0x1a54ab=_0x8d35[_0x9fd887];return _0x1a54ab;};'use strict';var polly=require(_0x58d3('0x0'));module['exports']=function(_0xc377e5,_0x32ddf6,_0x4e0c18,_0x16e4b2,_0x1ad466,_0x18d280,_0x1210fb){return polly(_0xc377e5,_0x32ddf6,_0x4e0c18,_0x16e4b2,_0x1ad466,_0x18d280,_0x1210fb);};
\ No newline at end of file
+var _0xcbaf=['./lib/api','exports'];(function(_0x2442e2,_0x52b8bc){var _0x58c631=function(_0x30798a){while(--_0x30798a){_0x2442e2['push'](_0x2442e2['shift']());}};_0x58c631(++_0x52b8bc);}(_0xcbaf,0x146));var _0xfcba=function(_0x4c7b01,_0x384255){_0x4c7b01=_0x4c7b01-0x0;var _0xda9789=_0xcbaf[_0x4c7b01];return _0xda9789;};'use strict';var polly=require(_0xfcba('0x0'));module[_0xfcba('0x1')]=function(_0x370d27,_0x535784,_0x57be39,_0x247049,_0x21e80d,_0x46ec1f,_0x4bb809){return polly(_0x370d27,_0x535784,_0x57be39,_0x247049,_0x21e80d,_0x46ec1f,_0x4bb809);};
\ No newline at end of file
index 8da51e4..fb9440d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3428=['randomstring','aws-sdk','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text','mp3','path','bluebird'];(function(_0x4be074,_0x5afa3e){var _0x411aa9=function(_0x53dcb1){while(--_0x53dcb1){_0x4be074['push'](_0x4be074['shift']());}};_0x411aa9(++_0x5afa3e);}(_0x3428,0xf5));var _0x8342=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0x3428[_0x88cd7b];return _0x56fcc8;};'use strict';var fs=require('fs');var path=require(_0x8342('0x0'));var BPromise=require(_0x8342('0x1'));var rs=require(_0x8342('0x2'));var AWS=require(_0x8342('0x3'));function pollyResult(_0x49c6ef,_0x44cbf9,_0x436546){return new BPromise(function(_0x4875f3,_0x2cfa1a){_0x49c6ef[_0x8342('0x4')](_0x44cbf9,function(_0x4eac75,_0x5ec558){if(_0x4eac75){_0x2cfa1a(_0x4eac75);}else if(_0x5ec558){if(_0x5ec558[_0x8342('0x5')]instanceof Buffer){fs[_0x8342('0x6')](_0x436546,_0x5ec558[_0x8342('0x5')],function(_0x17c8f5){if(_0x17c8f5){_0x2cfa1a(_0x17c8f5);}else{_0x4875f3();}});}else{_0x2cfa1a(new Error(_0x8342('0x7')));}}else{_0x2cfa1a(new Error(_0x8342('0x8')));}});});}module[_0x8342('0x9')]=function(_0x4bcdc4,_0x1a56d6,_0x5c7798,_0x5f473a,_0x5df7c2,_0xf920e3,_0x1798b8){var _0x275579=new AWS[(_0x8342('0xa'))]({'accessKeyId':_0x4bcdc4,'secretAccessKey':_0x1a56d6,'region':_0x5c7798});var _0x3f52b5={'Text':_0x5df7c2,'TextType':_0xf920e3||_0x8342('0xb'),'OutputFormat':_0x8342('0xc'),'VoiceId':_0x5f473a};return pollyResult(_0x275579,_0x3f52b5,_0x1798b8);};
\ No newline at end of file
+var _0x1af3=['bluebird','synthesizeSpeech','AudioStream','writeFile','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text','mp3'];(function(_0x21a4ad,_0x5ca2a3){var _0x13e20a=function(_0x4a5e28){while(--_0x4a5e28){_0x21a4ad['push'](_0x21a4ad['shift']());}};_0x13e20a(++_0x5ca2a3);}(_0x1af3,0x168));var _0x31af=function(_0x389832,_0x10a4a9){_0x389832=_0x389832-0x0;var _0x59429e=_0x1af3[_0x389832];return _0x59429e;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require(_0x31af('0x0'));var rs=require('randomstring');var AWS=require('aws-sdk');function pollyResult(_0x1483c7,_0xb77478,_0x42cbdb){return new BPromise(function(_0x4032e8,_0xb44d38){_0x1483c7[_0x31af('0x1')](_0xb77478,function(_0x22ace8,_0xdfa63c){if(_0x22ace8){_0xb44d38(_0x22ace8);}else if(_0xdfa63c){if(_0xdfa63c[_0x31af('0x2')]instanceof Buffer){fs[_0x31af('0x3')](_0x42cbdb,_0xdfa63c[_0x31af('0x2')],function(_0x2704a0){if(_0x2704a0){_0xb44d38(_0x2704a0);}else{_0x4032e8();}});}else{_0xb44d38(new Error('Invalid\x20data\x20response\x20from\x20aws\x20Polly!'));}}else{_0xb44d38(new Error(_0x31af('0x4')));}});});}module[_0x31af('0x5')]=function(_0x231f0e,_0x34384b,_0x36f7cf,_0x129038,_0x33a223,_0x5ccc1e,_0x163fc4){var _0x2a3b1f=new AWS[(_0x31af('0x6'))]({'accessKeyId':_0x231f0e,'secretAccessKey':_0x34384b,'region':_0x36f7cf});var _0x4a96f0={'Text':_0x33a223,'TextType':_0x5ccc1e||_0x31af('0x7'),'OutputFormat':_0x31af('0x8'),'VoiceId':_0x129038};return pollyResult(_0x2a3b1f,_0x4a96f0,_0x163fc4);};
\ No newline at end of file
index a184436..beb75ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47e0=['exports','./lib/api'];(function(_0x5b0128,_0x411925){var _0x507086=function(_0x5be4c9){while(--_0x5be4c9){_0x5b0128['push'](_0x5b0128['shift']());}};_0x507086(++_0x411925);}(_0x47e0,0x97));var _0x047e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x47e0[_0x321bb2];return _0x9c12ed;};'use strict';var asr=require(_0x047e('0x0'));module[_0x047e('0x1')]=function(_0x1b0918,_0x3874ff,_0x22231a,_0x37c5d6){return asr(_0x1b0918,_0x3874ff,_0x22231a);};
\ No newline at end of file
+var _0x4405=['exports'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x4405,0x1d4));var _0x5440=function(_0x298e5c,_0x270d72){_0x298e5c=_0x298e5c-0x0;var _0x43a926=_0x4405[_0x298e5c];return _0x43a926;};'use strict';var asr=require('./lib/api');module[_0x5440('0x0')]=function(_0x4039da,_0x463db9,_0x26ea2a,_0x121893){return asr(_0x4039da,_0x463db9,_0x26ea2a);};
\ No newline at end of file
index 169c5c4..b3fcad1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fad=['length','key\x20should\x20be\x20a\x20string','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','LINEAR16','8000','url','bluebird','https://speech.googleapis.com','exports','string','filepath\x20should\x20be\x20a\x20string'];(function(_0x30405e,_0x4c2594){var _0x6e9698=function(_0x48defe){while(--_0x48defe){_0x30405e['push'](_0x30405e['shift']());}};_0x6e9698(++_0x4c2594);}(_0x6fad,0x174));var _0xd6fa=function(_0x17cfef,_0x59aae0){_0x17cfef=_0x17cfef-0x0;var _0x5751b9=_0x6fad[_0x17cfef];return _0x5751b9;};'use strict';var url=require(_0xd6fa('0x0'));var BPromise=require(_0xd6fa('0x1'));var fs=require('fs');var host=_0xd6fa('0x2');module[_0xd6fa('0x3')]=function(_0x4f8a1c,_0x2f5f9b,_0x4ae415){return new BPromise(function(_0x3e08a3,_0x48f433){var _0x3e76d0;if(typeof _0x4f8a1c!==_0xd6fa('0x4')||_0x4f8a1c['length']===0x0){return _0x48f433(_0xd6fa('0x5'));}if(typeof _0x2f5f9b!==_0xd6fa('0x4')||_0x2f5f9b[_0xd6fa('0x6')]===0x0){return _0x48f433(_0xd6fa('0x7'));}if(typeof _0x4ae415!=='undefined'&&(typeof _0x4ae415!==_0xd6fa('0x4')||_0x4ae415['length']===0x0)){return _0x48f433(_0xd6fa('0x8'));}try{_0x3e76d0=fs[_0xd6fa('0x9')](_0x4f8a1c)[_0xd6fa('0xa')](_0xd6fa('0xb'));}catch(_0x331241){return _0x48f433(_0x331241);}return _0x3e08a3({'method':'POST','uri':host+'/v1/speech:recognize?key='+_0x2f5f9b,'body':{'config':{'encoding':_0xd6fa('0xc'),'sampleRateHertz':_0xd6fa('0xd'),'languageCode':_0x4ae415},'audio':{'content':_0x3e76d0}},'json':!![]});});};
\ No newline at end of file
+var _0x87f8=['length','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','toString','POST','/v1/speech:recognize?key=','LINEAR16','exports','string'];(function(_0x253ac6,_0x2c4e61){var _0x53c386=function(_0x4b7566){while(--_0x4b7566){_0x253ac6['push'](_0x253ac6['shift']());}};_0x53c386(++_0x2c4e61);}(_0x87f8,0x152));var _0x887f=function(_0x293606,_0x241252){_0x293606=_0x293606-0x0;var _0x146dd5=_0x87f8[_0x293606];return _0x146dd5;};'use strict';var url=require('url');var BPromise=require('bluebird');var fs=require('fs');var host='https://speech.googleapis.com';module[_0x887f('0x0')]=function(_0x13309f,_0x5be12b,_0x28ce3c){return new BPromise(function(_0x591ca0,_0x46a51e){var _0x3ce88c;if(typeof _0x13309f!==_0x887f('0x1')||_0x13309f[_0x887f('0x2')]===0x0){return _0x46a51e('filepath\x20should\x20be\x20a\x20string');}if(typeof _0x5be12b!==_0x887f('0x1')||_0x5be12b[_0x887f('0x2')]===0x0){return _0x46a51e(_0x887f('0x3'));}if(typeof _0x28ce3c!==_0x887f('0x4')&&(typeof _0x28ce3c!==_0x887f('0x1')||_0x28ce3c[_0x887f('0x2')]===0x0)){return _0x46a51e(_0x887f('0x5'));}try{_0x3ce88c=fs['readFileSync'](_0x13309f)[_0x887f('0x6')]('base64');}catch(_0x130293){return _0x46a51e(_0x130293);}return _0x591ca0({'method':_0x887f('0x7'),'uri':host+_0x887f('0x8')+_0x5be12b,'body':{'config':{'encoding':_0x887f('0x9'),'sampleRateHertz':'8000','languageCode':_0x28ce3c},'audio':{'content':_0x3ce88c}},'json':!![]});});};
\ No newline at end of file
index 48f76d6..49aba48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9191=['exports','./asr'];(function(_0x5d0915,_0xe25280){var _0x5e8ce8=function(_0x3e3fd9){while(--_0x3e3fd9){_0x5d0915['push'](_0x5d0915['shift']());}};_0x5e8ce8(++_0xe25280);}(_0x9191,0x17f));var _0x1919=function(_0x13c12b,_0x4baa0d){_0x13c12b=_0x13c12b-0x0;var _0x4fcf37=_0x9191[_0x13c12b];return _0x4fcf37;};var asr=require(_0x1919('0x0'));module[_0x1919('0x1')]={'asr':asr};
\ No newline at end of file
+var _0xa382=['exports','./asr'];(function(_0xa976e3,_0x1a2e0a){var _0x43ee91=function(_0x19fb4d){while(--_0x19fb4d){_0xa976e3['push'](_0xa976e3['shift']());}};_0x43ee91(++_0x1a2e0a);}(_0xa382,0x11d));var _0x2a38=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0xa382[_0x413feb];return _0x40ee88;};var asr=require(_0x2a38('0x0'));module[_0x2a38('0x1')]={'asr':asr};
\ No newline at end of file
index 65893c9..d10cac1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95fd=['diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','queryText','responseId','intentDetectionConfidence','tildeASR','asr','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','polly','awsLex','ispeechTTS','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','sestekNDA','nda','CustomAction','CustomActionData','channelData','AudioFromTts','Data','dirName','apiai-promise','bluebird','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','parse','./aws','./google','./sestek','./tilde','agi','https://api.ispeech.org/api/rest','protocol','host','WHAT_EVER','get','statusCode','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','error','unlink','download\x20error','pipe','end','https:','data','transcode','wav','error\x20convert','start','writeFileSync','base64','then','chmodSync','777','split','readFileSync','toString','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','resolve','tmp','generate','.mp3','from','audioContent','writeFile','.wav','googleCloudTTS\x20path','googleTTS','utf8','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','generic','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','name','googleDialogflow','textRequest','result','source','action','actionIncomplete','speech','score','status','code','metadata','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent'];(function(_0x3c6ae2,_0x5c52d8){var _0x4edda=function(_0x5593eb){while(--_0x5593eb){_0x3c6ae2['push'](_0x3c6ae2['shift']());}};_0x4edda(++_0x5c52d8);}(_0x95fd,0x131));var _0xd95f=function(_0xef8f5c,_0x57f957){_0xef8f5c=_0xef8f5c-0x0;var _0x5d995f=_0x95fd[_0xef8f5c];return _0x5d995f;};'use strict';var apiai=require(_0xd95f('0x0'));var BPromise=require(_0xd95f('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require('http');var https=require('https');var md5=require(_0xd95f('0x2'));var path=require(_0xd95f('0x3'));var querystring=require(_0xd95f('0x4'));var rp=require(_0xd95f('0x5'));var rs=require(_0xd95f('0x6'));var sox=require(_0xd95f('0x7'));var tts=require(_0xd95f('0x8'));var urlParse=require('url')[_0xd95f('0x9')];var util=require('util');var aws=require(_0xd95f('0xa'));var google=require(_0xd95f('0xb'));var sestek=require(_0xd95f('0xc'));var tilde=require(_0xd95f('0xd'));var logger=require('../../../config/logger')(_0xd95f('0xe'));var ISPEECH_API=_0xd95f('0xf');function downloadFile(_0x25e3e3,_0x59b025){return new BPromise(function(_0x4da267,_0x4db4d0){var _0x4ce9da=urlParse(_0x25e3e3);var _0x5614df=_0x4ce9da[_0xd95f('0x10')]==='https:'?https:http;var _0x8fae75={'host':_0x4ce9da[_0xd95f('0x11')],'path':_0x4ce9da[_0xd95f('0x3')],'headers':{'user-agent':_0xd95f('0x12')}};_0x5614df[_0xd95f('0x13')](_0x8fae75,function(_0x5adb29){if(_0x5adb29[_0xd95f('0x14')]!==0xc8){logger['error'](_0xd95f('0x15')+_0x25e3e3+_0xd95f('0x16')+_0x5adb29[_0xd95f('0x14')]+'\x20('+_0x5adb29['statusMessage']+')');_0x4db4d0(new Error('request\x20to\x20'+_0x25e3e3+'\x20failed,\x20status\x20code\x20=\x20'+_0x5adb29[_0xd95f('0x14')]+'\x20('+_0x5adb29[_0xd95f('0x17')]+')'));return;}var _0x5a0cfe=fs[_0xd95f('0x18')](_0x59b025);_0x5a0cfe['on'](_0xd95f('0x19'),function(){logger[_0xd95f('0x1a')](_0xd95f('0x1b'));_0x5a0cfe['close'](_0x4da267);});_0x5a0cfe['on'](_0xd95f('0x1c'),function(_0x5237ac){fs[_0xd95f('0x1d')](_0x59b025);logger[_0xd95f('0x1c')](_0xd95f('0x1e'),_0x5237ac);_0x4db4d0(_0x5237ac);});_0x5adb29[_0xd95f('0x1f')](_0x5a0cfe);})['on']('error',function(_0x3f12f9){logger[_0xd95f('0x1c')](_0x3f12f9);_0x4db4d0(_0x3f12f9);})[_0xd95f('0x20')]();});}function uploadFile(_0x4b0380){return new BPromise(function(_0x7b529c,_0xb38c55){var _0x5e8cd3=urlParse(_0x4b0380);var _0x5f166b=_0x5e8cd3['protocol']===_0xd95f('0x21')?https:http;var _0x2e7421={'host':_0x5e8cd3['host'],'path':_0x5e8cd3[_0xd95f('0x3')],'headers':{'user-agent':'WHAT_EVER'}};_0x5f166b[_0xd95f('0x13')](_0x2e7421,function(_0x560618){if(_0x560618[_0xd95f('0x14')]!==0xc8){_0xb38c55(new Error('request\x20to\x20'+_0x4b0380+'\x20failed,\x20status\x20code\x20=\x20'+_0x560618['statusCode']+'\x20('+_0x560618[_0xd95f('0x17')]+')'));return;}var _0x320752='';_0x560618['on'](_0xd95f('0x22'),function(_0x3bd492){_0x320752+=_0x3bd492;});_0x560618['on'](_0xd95f('0x20'),function(){_0x7b529c(_0x320752);});})['on'](_0xd95f('0x1c'),function(_0x446a2){_0xb38c55(_0x446a2);})[_0xd95f('0x20')]();});}function convertFile(_0x3ce241,_0xe0626e){return new BPromise(function(_0xfefecc,_0x429dfc){var _0x3c0e6a=sox[_0xd95f('0x23')](_0x3ce241,_0xe0626e,{'sampleRate':0x1f40,'format':_0xd95f('0x24'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3c0e6a['on'](_0xd95f('0x1c'),function(_0x20594a){logger['error'](_0xd95f('0x25'),_0x20594a);_0x429dfc(_0x20594a);});_0x3c0e6a['on'](_0xd95f('0x20'),function(){logger[_0xd95f('0x1a')]('finish\x20to\x20convert');_0xfefecc();});_0x3c0e6a[_0xd95f('0x26')]();});}function base64Decode(_0x439a5c,_0xba9a3a){var _0x3f0687=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+'.wav');fs[_0xd95f('0x27')](_0x3f0687,_0x439a5c,_0xd95f('0x28'));return convertFile(_0x3f0687,_0xba9a3a)[_0xd95f('0x29')](function(){try{fs['unlink'](_0x3f0687);fs[_0xd95f('0x2a')](_0xba9a3a,_0xd95f('0x2b'));}catch(_0x20976){logger['error'](_0x20976);}return _0xba9a3a[_0xd95f('0x2c')]('.')[0x0];});}function base64Encode(_0xcf7602){var _0x15f1c0=fs[_0xd95f('0x2d')](_0xcf7602);return new Buffer(_0x15f1c0)[_0xd95f('0x2e')](_0xd95f('0x28'));}exports['googleCloudTTS']=function(_0x56f3d4,_0x3e10a1,_0x10657a,_0x4424c6,_0x5dbfff,_0x525e8d){var _0x59c620,_0x4cbd98;var _0x2188b7=_0xd95f('0x2f');var _0x26744d=_0xd95f('0x30')+_0x56f3d4;var _0x9e315a={};if(_0x3e10a1===_0xd95f('0x31')){_0x9e315a['input']={'ssml':_0x10657a};}else{_0x9e315a[_0xd95f('0x32')]={'text':_0x10657a};};_0x9e315a[_0xd95f('0x33')]={'languageCode':_0x4424c6,'ssmlGender':_0x5dbfff};_0x9e315a[_0xd95f('0x34')]={'audioEncoding':_0xd95f('0x35'),'sampleRateHertz':0x1f40};var _0x501238={'url':_0x2188b7+_0xd95f('0x36')+_0x26744d,'method':_0xd95f('0x37'),'json':!![],'body':_0x9e315a};return rp(_0x501238)[_0xd95f('0x29')](function(_0x1dd85e){return new BPromise(function(_0x15c90c,_0x38f85f){_0x59c620=path[_0xd95f('0x38')](__dirname,_0xd95f('0x39'),rs[_0xd95f('0x3a')](0x4)+_0xd95f('0x3b'));var _0x3a5d1f=Buffer[_0xd95f('0x3c')](_0x1dd85e[_0xd95f('0x3d')],_0xd95f('0x28'));return fs[_0xd95f('0x3e')](_0x59c620,_0x3a5d1f,function(_0x1d571b){_0x38f85f(_0x1d571b);},function(_0x1fe010){fs[_0xd95f('0x2a')](_0x59c620,_0xd95f('0x2b'));_0x15c90c(_0x1fe010);});});})[_0xd95f('0x29')](function(_0x51466a){_0x4cbd98=path['resolve'](__dirname,_0xd95f('0x39'),rs[_0xd95f('0x3a')](0x4)+_0xd95f('0x3f'));return convertFile(_0x59c620,_0x4cbd98);})['then'](function(){try{fs[_0xd95f('0x1d')](_0x59c620);fs[_0xd95f('0x2a')](_0x4cbd98,'777');}catch(_0x1cf59c){logger[_0xd95f('0x1c')](_0x1cf59c);}logger['info'](_0xd95f('0x40'),_0x4cbd98[_0xd95f('0x2c')]('.')[0x0]);return _0x4cbd98[_0xd95f('0x2c')]('.')[0x0];});};exports[_0xd95f('0x41')]=function(_0xa64329,_0xbe5e67){var _0x4a6224='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x4163de,_0xb17a6c;var _0x50c8d2;var _0x333a72={'encoding':_0xd95f('0x42'),'method':_0xd95f('0x37'),'timeout':0x2710,'url':_0x4a6224,'headers':{'Content-Type':_0xd95f('0x43')},'body':_0xd95f('0x44')+encodeURIComponent(JSON[_0xd95f('0x45')]([[[_0xd95f('0x46'),JSON[_0xd95f('0x45')]([_0xa64329,_0xbe5e67||'en',![],_0xd95f('0x47')]),null,_0xd95f('0x48')]]]))};return rp(_0x333a72)[_0xd95f('0x29')](function(_0x1d8ed7){try{_0x50c8d2=eval(_0x1d8ed7['slice'](0x5))[0x0][0x2];}catch(_0x515a5e){throw new Error(_0xd95f('0x49')+_0x1d8ed7[_0xd95f('0x22')]);}if(!_0x50c8d2){if(_0xa64329[_0xd95f('0x4a')]>0xc8){throw new Error(_0xd95f('0x4b'));}else{throw new Error(_0xd95f('0x4c')+_0xbe5e67+_0xd95f('0x4d'));}}try{_0x50c8d2=eval(_0x50c8d2)[0x0];}catch(_0x5cd344){throw new Error('parse\x20response\x20failed:\x0a'+res[_0xd95f('0x22')]);}const _0x4360ad=_0x50c8d2;_0x4163de=path[_0xd95f('0x38')](__dirname,_0xd95f('0x39'),rs[_0xd95f('0x3a')](0x4)+_0xd95f('0x3b'));fs['writeFileSync'](_0x4163de,_0x50c8d2,{'encoding':'base64'});_0xb17a6c=path[_0xd95f('0x38')](__dirname,_0xd95f('0x39'),rs['generate'](0x4)+_0xd95f('0x3f'));return convertFile(_0x4163de,_0xb17a6c);})[_0xd95f('0x29')](function(){try{fs['unlink'](_0x4163de);fs[_0xd95f('0x2a')](_0xb17a6c,'777');}catch(_0x3034cf){logger[_0xd95f('0x1c')](_0x3034cf);}logger[_0xd95f('0x1a')](_0xd95f('0x4e'),_0xb17a6c[_0xd95f('0x2c')]('.')[0x0]);return _0xb17a6c[_0xd95f('0x2c')]('.')[0x0];});};exports['googleASR']=function(_0x13eab4,_0x15dcde,_0x1e6601){return google['asr'](_0x13eab4,_0x15dcde,_0x1e6601)[_0xd95f('0x29')](function(_0x2dc8c7){logger[_0xd95f('0x1a')](_0x2dc8c7['uri']);return rp(_0x2dc8c7);})['then'](function(_0x438242){var _0x437694='';var _0x1c3046=0x0;try{fs[_0xd95f('0x1d')](_0x13eab4);}catch(_0x30bf6b){logger[_0xd95f('0x1c')](_0x30bf6b);}if(_0x438242&&_0x438242[_0xd95f('0x4f')]){_0x437694=_0x438242[_0xd95f('0x4f')][_0xd95f('0x50')](function(_0x27321a){return _0x27321a&&_0x27321a[_0xd95f('0x51')][0x0]&&_0x27321a[_0xd95f('0x51')][0x0]['transcript']?_0x27321a['alternatives'][0x0][_0xd95f('0x52')]:'';})[_0xd95f('0x53')]('\x0a');_0x1c3046=_0x438242[_0xd95f('0x4f')][_0xd95f('0x50')](function(_0x4d9ee7){return _0x4d9ee7&&_0x4d9ee7[_0xd95f('0x51')][0x0]&&_0x4d9ee7['alternatives'][0x0][_0xd95f('0x54')]?_0x4d9ee7['alternatives'][0x0]['confidence']:0x0;})['join']('\x0a');}logger['info'](_0xd95f('0x55'),_0x437694);logger[_0xd95f('0x1a')](_0xd95f('0x56'),_0x1c3046);return{'transcript':_0x437694,'confidence':_0x1c3046};})[_0xd95f('0x57')](function(_0x456273){logger[_0xd95f('0x1c')]('[%s]\x20%s:%s',_0x456273[_0xd95f('0x14')],_0x456273[_0xd95f('0x58')],_0x456273['message']);});};exports[_0xd95f('0x59')]=function(_0x425129,_0x3be73d,_0x22951f,_0x3e7e34){var _0x4fd9d2=apiai(_0x3be73d,{'language':_0x3e7e34||'en'});return _0x4fd9d2[_0xd95f('0x5a')](_0x22951f,{'sessionId':md5(_0x425129)})[_0xd95f('0x29')](function(_0x5863b4){logger[_0xd95f('0x1a')](JSON[_0xd95f('0x45')](_0x5863b4));return{'source':_0x5863b4[_0xd95f('0x5b')][_0xd95f('0x5c')],'resolvedQuery':_0x5863b4[_0xd95f('0x5b')]['resolvedQuery'],'action':_0x5863b4[_0xd95f('0x5b')][_0xd95f('0x5d')],'actionIncomplete':_0x5863b4[_0xd95f('0x5b')][_0xd95f('0x5e')],'speech':_0x5863b4['result']['fulfillment'][_0xd95f('0x5f')],'score':_0x5863b4['result'][_0xd95f('0x60')],'statusCode':_0x5863b4[_0xd95f('0x61')][_0xd95f('0x62')],'endConversation':_0x5863b4[_0xd95f('0x5b')][_0xd95f('0x63')]['endConversation']||![],'isFallbackIntent':_0x5863b4[_0xd95f('0x5b')][_0xd95f('0x63')][_0xd95f('0x64')]};});};exports[_0xd95f('0x65')]=function(_0x590bf7,_0x4396bc,_0x3afa34,_0x554a5e,_0x26e633,_0x19e689){var _0x204749=_0x554a5e[_0xd95f('0x66')](/\\n/g,'\x0a');var _0x10ab07={'credentials':{'private_key':_0x204749,'client_email':_0x3afa34}};var _0x3276c7=new dialogflow[(_0xd95f('0x67'))](_0x10ab07);var _0x20ec07=_0x3276c7[_0xd95f('0x68')](_0x4396bc,md5(_0x590bf7));var _0x3dc547={'session':_0x20ec07,'queryInput':{'text':{'text':_0x26e633,'languageCode':_0x19e689}}};return _0x3276c7[_0xd95f('0x69')](_0x3dc547)[_0xd95f('0x29')](function(_0x24c189){if(_0x24c189&&_0x24c189['length']){logger[_0xd95f('0x1a')](_0xd95f('0x6a'),JSON[_0xd95f('0x45')](_0x24c189));var _0x1e5bf0=_0x24c189[0x0];if(_0x1e5bf0){var _0x973d42={'action':_0x1e5bf0[_0xd95f('0x6b')]['action'],'allRequiredParamsPresent':_0x1e5bf0[_0xd95f('0x6b')][_0xd95f('0x6c')],'endConversation':_0x1e5bf0[_0xd95f('0x6b')][_0xd95f('0x6d')]&&_0x1e5bf0['queryResult'][_0xd95f('0x6d')][_0xd95f('0x6e')]?_0x1e5bf0[_0xd95f('0x6b')][_0xd95f('0x6d')][_0xd95f('0x6e')][_0xd95f('0x6f')][_0xd95f('0x70')]:![],'fulfillmentText':_0x1e5bf0[_0xd95f('0x6b')][_0xd95f('0x71')],'intentName':_0x1e5bf0[_0xd95f('0x6b')]['intent'][_0xd95f('0x58')],'intentDisplayName':_0x1e5bf0[_0xd95f('0x6b')][_0xd95f('0x72')][_0xd95f('0x73')],'isFallbackIntent':_0x1e5bf0['queryResult'][_0xd95f('0x72')][_0xd95f('0x74')],'languageCode':_0x1e5bf0['queryResult']['languageCode'],'queryText':_0x1e5bf0[_0xd95f('0x6b')][_0xd95f('0x75')],'responseId':_0x1e5bf0[_0xd95f('0x76')],'score':_0x1e5bf0[_0xd95f('0x6b')][_0xd95f('0x77')],'speech':_0x1e5bf0[_0xd95f('0x6b')][_0xd95f('0x71')],'providerResponse':JSON[_0xd95f('0x45')](_0x24c189)};return _0x973d42;}}});};exports[_0xd95f('0x78')]=function(_0x241705,_0xdaec60,_0x2145b3,_0x54aea){return tilde[_0xd95f('0x79')](_0x241705,_0xdaec60,_0x2145b3,_0x54aea)[_0xd95f('0x29')](function(_0x509e78){try{fs[_0xd95f('0x1d')](_0x241705);}catch(_0x1b9d07){logger[_0xd95f('0x1c')](_0x1b9d07);}logger[_0xd95f('0x1a')](_0xd95f('0x7a'),_0x509e78[_0xd95f('0x52')]);logger[_0xd95f('0x1a')](_0xd95f('0x7b'),_0x509e78[_0xd95f('0x54')]);return _0x509e78;});};exports['awsPolly']=function(_0x1c50e2,_0xcb977c,_0x3456a8,_0xcd652e,_0x54f9f0,_0x351b3f){var _0x3ba807=path['resolve'](__dirname,_0xd95f('0x39'),rs[_0xd95f('0x3a')](0x4)+_0xd95f('0x3b'));var _0x547de8;return aws[_0xd95f('0x7c')](_0x1c50e2,_0xcb977c,_0x3456a8,_0xcd652e,_0x54f9f0,_0x351b3f,_0x3ba807)['then'](function(){_0x547de8=path['resolve'](__dirname,_0xd95f('0x39'),rs['generate'](0x4)+_0xd95f('0x3f'));return convertFile(_0x3ba807,_0x547de8);})[_0xd95f('0x29')](function(){try{fs['unlink'](_0x3ba807);fs[_0xd95f('0x2a')](_0x547de8,_0xd95f('0x2b'));}catch(_0x5d217c){logger[_0xd95f('0x1c')](_0x5d217c);}return _0x547de8[_0xd95f('0x2c')]('.')[0x0];});};exports[_0xd95f('0x7d')]=function(_0xf43d8b,_0x2d1e4d,_0x3ba265,_0x27041a,_0x22016c,_0x2f26ab){return aws['lex'](_0xf43d8b,_0x2d1e4d,_0x3ba265,_0x27041a,_0x22016c,_0x2f26ab)['then'](function(_0xdabf23){logger[_0xd95f('0x1a')](JSON[_0xd95f('0x45')](_0xdabf23));return _0xdabf23;});};exports[_0xd95f('0x7e')]=function(_0x3e2dbf,_0x169759,_0x359f7c,_0x32f437){var _0x2df729=util['format'](_0xd95f('0x7f'),ISPEECH_API,_0x3e2dbf,encodeURIComponent(_0x169759),_0x359f7c,_0x32f437);var _0x16a9be=path[_0xd95f('0x38')](__dirname,_0xd95f('0x39'),rs[_0xd95f('0x3a')](0x4)+_0xd95f('0x3b'));var _0x2f887e;return downloadFile(_0x2df729,_0x16a9be)[_0xd95f('0x29')](function(){_0x2f887e=path[_0xd95f('0x38')](__dirname,'tmp',rs['generate'](0x4)+_0xd95f('0x3f'));return convertFile(_0x16a9be,_0x2f887e);})[_0xd95f('0x29')](function(){try{fs[_0xd95f('0x1d')](_0x16a9be);fs['chmodSync'](_0x2f887e,_0xd95f('0x2b'));}catch(_0x21e511){logger[_0xd95f('0x1c')](_0x21e511);}return _0x2f887e['split']('.')[0x0];});};exports['ispeechASR']=function(_0x5a9448,_0x4d913d,_0x5f1493,_0x1e88d5){var _0x39ad8e=util[_0xd95f('0x80')](_0xd95f('0x81'),ISPEECH_API,_0x4d913d,_0x5f1493,base64Encode(_0x5a9448),_0x1e88d5?util[_0xd95f('0x80')]('model=%s',encodeURIComponent(_0x1e88d5)):'freeform=3');return uploadFile(_0x39ad8e)[_0xd95f('0x29')](function(_0x411195){return querystring[_0xd95f('0x9')](_0x411195);});};exports[_0xd95f('0x82')]=function(_0x3eab6b,_0x4df6cd){return sestek[_0xd95f('0x83')](_0x3eab6b,_0x4df6cd)[_0xd95f('0x29')](function(_0x2c236b){logger['info'](JSON[_0xd95f('0x45')](_0x2c236b));var _0x5b96ba={'speech':_0x2c236b['text'],'action':_0x2c236b['channelData']?_0x2c236b['channelData'][_0xd95f('0x84')]:undefined,'actiondata':_0x2c236b['channelData']?_0x2c236b['channelData'][_0xd95f('0x85')]:undefined};if(_0x2c236b[_0xd95f('0x86')]&&_0x2c236b[_0xd95f('0x86')]['AudioFromTts']){return base64Decode(_0x2c236b[_0xd95f('0x86')][_0xd95f('0x87')][_0xd95f('0x88')],path[_0xd95f('0x38')](__dirname,_0xd95f('0x39'),rs['generate'](0x4)+'.wav'))['then'](function(_0x12aaf9){_0x5b96ba['audiofile']=_0x12aaf9;return _0x5b96ba;});}return _0x5b96ba;});};exports[_0xd95f('0x89')]=function(){return __dirname;};
\ No newline at end of file
+var _0xde23=['join','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','action','actionIncomplete','fulfillment','score','status','code','metadata','isFallbackIntent','replace','SessionsClient','sessionPath','detectIntent','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','fulfillmentText','intent','displayName','isFallback','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','https','path','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','./google','./sestek','agi','https://api.ispeech.org/api/rest','https:','host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','finish','finish\x20download\x20file','close','unlink','download\x20error','pipe','protocol','data','end','transcode','wav','error\x20convert','info','start','tmp','generate','.wav','writeFileSync','then','chmodSync','777','readFileSync','toString','base64','googleCloudTTS','?key=','ssml','input','voice','MP3','text:synthesize','POST','.mp3','from','audioContent','writeFile','googleCloudTTS\x20path','split','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','resolve','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','confidence'];(function(_0x1f6e37,_0x560390){var _0x3d17ad=function(_0x23a623){while(--_0x23a623){_0x1f6e37['push'](_0x1f6e37['shift']());}};_0x3d17ad(++_0x560390);}(_0xde23,0x14e));var _0x3de2=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xde23[_0x14add3];return _0x4a174f;};'use strict';var apiai=require(_0x3de2('0x0'));var BPromise=require(_0x3de2('0x1'));var dialogflow=require(_0x3de2('0x2'));var fs=require('fs');var http=require(_0x3de2('0x3'));var https=require(_0x3de2('0x4'));var md5=require('md5');var path=require(_0x3de2('0x5'));var querystring=require(_0x3de2('0x6'));var rp=require(_0x3de2('0x7'));var rs=require(_0x3de2('0x8'));var sox=require(_0x3de2('0x9'));var tts=require(_0x3de2('0xa'));var urlParse=require(_0x3de2('0xb'))[_0x3de2('0xc')];var util=require('util');var aws=require('./aws');var google=require(_0x3de2('0xd'));var sestek=require(_0x3de2('0xe'));var tilde=require('./tilde');var logger=require('../../../config/logger')(_0x3de2('0xf'));var ISPEECH_API=_0x3de2('0x10');function downloadFile(_0x42d227,_0x5bbb2a){return new BPromise(function(_0x15c667,_0x59b101){var _0x27102c=urlParse(_0x42d227);var _0x217621=_0x27102c['protocol']===_0x3de2('0x11')?https:http;var _0x1b631b={'host':_0x27102c[_0x3de2('0x12')],'path':_0x27102c[_0x3de2('0x5')],'headers':{'user-agent':_0x3de2('0x13')}};_0x217621[_0x3de2('0x14')](_0x1b631b,function(_0x1f7c9){if(_0x1f7c9[_0x3de2('0x15')]!==0xc8){logger[_0x3de2('0x16')]('request\x20to\x20'+_0x42d227+'\x20failed,\x20status\x20code\x20=\x20'+_0x1f7c9[_0x3de2('0x15')]+'\x20('+_0x1f7c9['statusMessage']+')');_0x59b101(new Error(_0x3de2('0x17')+_0x42d227+_0x3de2('0x18')+_0x1f7c9[_0x3de2('0x15')]+'\x20('+_0x1f7c9[_0x3de2('0x19')]+')'));return;}var _0x149db4=fs['createWriteStream'](_0x5bbb2a);_0x149db4['on'](_0x3de2('0x1a'),function(){logger['info'](_0x3de2('0x1b'));_0x149db4[_0x3de2('0x1c')](_0x15c667);});_0x149db4['on'](_0x3de2('0x16'),function(_0x55c595){fs[_0x3de2('0x1d')](_0x5bbb2a);logger[_0x3de2('0x16')](_0x3de2('0x1e'),_0x55c595);_0x59b101(_0x55c595);});_0x1f7c9[_0x3de2('0x1f')](_0x149db4);})['on'](_0x3de2('0x16'),function(_0xd91bea){logger[_0x3de2('0x16')](_0xd91bea);_0x59b101(_0xd91bea);})['end']();});}function uploadFile(_0x8a43f5){return new BPromise(function(_0x5aa9a2,_0xde0407){var _0x2c58f2=urlParse(_0x8a43f5);var _0x4b854a=_0x2c58f2[_0x3de2('0x20')]==='https:'?https:http;var _0x13f324={'host':_0x2c58f2[_0x3de2('0x12')],'path':_0x2c58f2[_0x3de2('0x5')],'headers':{'user-agent':'WHAT_EVER'}};_0x4b854a['get'](_0x13f324,function(_0x475340){if(_0x475340['statusCode']!==0xc8){_0xde0407(new Error(_0x3de2('0x17')+_0x8a43f5+_0x3de2('0x18')+_0x475340[_0x3de2('0x15')]+'\x20('+_0x475340[_0x3de2('0x19')]+')'));return;}var _0x438e66='';_0x475340['on'](_0x3de2('0x21'),function(_0x10aa02){_0x438e66+=_0x10aa02;});_0x475340['on'](_0x3de2('0x22'),function(){_0x5aa9a2(_0x438e66);});})['on'](_0x3de2('0x16'),function(_0x258f51){_0xde0407(_0x258f51);})[_0x3de2('0x22')]();});}function convertFile(_0x31c93b,_0x5df277){return new BPromise(function(_0x3fd022,_0x2c8004){var _0x45ec34=sox[_0x3de2('0x23')](_0x31c93b,_0x5df277,{'sampleRate':0x1f40,'format':_0x3de2('0x24'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x45ec34['on']('error',function(_0x107448){logger[_0x3de2('0x16')](_0x3de2('0x25'),_0x107448);_0x2c8004(_0x107448);});_0x45ec34['on'](_0x3de2('0x22'),function(){logger[_0x3de2('0x26')]('finish\x20to\x20convert');_0x3fd022();});_0x45ec34[_0x3de2('0x27')]();});}function base64Decode(_0x320855,_0x540550){var _0x32c9ab=path['resolve'](__dirname,_0x3de2('0x28'),rs[_0x3de2('0x29')](0x4)+_0x3de2('0x2a'));fs[_0x3de2('0x2b')](_0x32c9ab,_0x320855,'base64');return convertFile(_0x32c9ab,_0x540550)[_0x3de2('0x2c')](function(){try{fs[_0x3de2('0x1d')](_0x32c9ab);fs[_0x3de2('0x2d')](_0x540550,_0x3de2('0x2e'));}catch(_0x545c28){logger['error'](_0x545c28);}return _0x540550['split']('.')[0x0];});}function base64Encode(_0x3fe755){var _0x167c39=fs[_0x3de2('0x2f')](_0x3fe755);return new Buffer(_0x167c39)[_0x3de2('0x30')](_0x3de2('0x31'));}exports[_0x3de2('0x32')]=function(_0x3e27d2,_0x4e16fd,_0x48aabf,_0x2c873d,_0x297870,_0x1ed0bf){var _0x4dd909,_0x1822ed;var _0x4841a7='https://texttospeech.googleapis.com/v1/';var _0x40980e=_0x3de2('0x33')+_0x3e27d2;var _0x57310f={};if(_0x4e16fd===_0x3de2('0x34')){_0x57310f[_0x3de2('0x35')]={'ssml':_0x48aabf};}else{_0x57310f[_0x3de2('0x35')]={'text':_0x48aabf};};_0x57310f[_0x3de2('0x36')]={'languageCode':_0x2c873d,'ssmlGender':_0x297870};_0x57310f['audioConfig']={'audioEncoding':_0x3de2('0x37'),'sampleRateHertz':0x1f40};var _0x60fd01={'url':_0x4841a7+_0x3de2('0x38')+_0x40980e,'method':_0x3de2('0x39'),'json':!![],'body':_0x57310f};return rp(_0x60fd01)[_0x3de2('0x2c')](function(_0xda10c3){return new BPromise(function(_0x55d2f9,_0x276047){_0x4dd909=path['resolve'](__dirname,_0x3de2('0x28'),rs[_0x3de2('0x29')](0x4)+_0x3de2('0x3a'));var _0x25acdf=Buffer[_0x3de2('0x3b')](_0xda10c3[_0x3de2('0x3c')],_0x3de2('0x31'));return fs[_0x3de2('0x3d')](_0x4dd909,_0x25acdf,function(_0x2c4fae){_0x276047(_0x2c4fae);},function(_0x3f8a45){fs[_0x3de2('0x2d')](_0x4dd909,'777');_0x55d2f9(_0x3f8a45);});});})[_0x3de2('0x2c')](function(_0x2c5640){_0x1822ed=path['resolve'](__dirname,_0x3de2('0x28'),rs[_0x3de2('0x29')](0x4)+_0x3de2('0x2a'));return convertFile(_0x4dd909,_0x1822ed);})[_0x3de2('0x2c')](function(){try{fs[_0x3de2('0x1d')](_0x4dd909);fs[_0x3de2('0x2d')](_0x1822ed,_0x3de2('0x2e'));}catch(_0x4ab714){logger[_0x3de2('0x16')](_0x4ab714);}logger[_0x3de2('0x26')](_0x3de2('0x3e'),_0x1822ed[_0x3de2('0x3f')]('.')[0x0]);return _0x1822ed[_0x3de2('0x3f')]('.')[0x0];});};exports['googleTTS']=function(_0x430a80,_0x5fb1df){var _0x4fd64b=_0x3de2('0x40');var _0x31fd1f,_0x247cd7;var _0x4cdbaa;var _0x33fc00={'encoding':_0x3de2('0x41'),'method':_0x3de2('0x39'),'timeout':0x2710,'url':_0x4fd64b,'headers':{'Content-Type':_0x3de2('0x42')},'body':_0x3de2('0x43')+encodeURIComponent(JSON[_0x3de2('0x44')]([[[_0x3de2('0x45'),JSON[_0x3de2('0x44')]([_0x430a80,_0x5fb1df||'en',![],_0x3de2('0x46')]),null,'generic']]]))};return rp(_0x33fc00)['then'](function(_0xcfa2b7){try{_0x4cdbaa=eval(_0xcfa2b7['slice'](0x5))[0x0][0x2];}catch(_0x185196){throw new Error(_0x3de2('0x47')+_0xcfa2b7[_0x3de2('0x21')]);}if(!_0x4cdbaa){if(_0x430a80[_0x3de2('0x48')]>0xc8){throw new Error(_0x3de2('0x49'));}else{throw new Error(_0x3de2('0x4a')+_0x5fb1df+_0x3de2('0x4b'));}}try{_0x4cdbaa=eval(_0x4cdbaa)[0x0];}catch(_0x1dbcf8){throw new Error(_0x3de2('0x47')+res[_0x3de2('0x21')]);}const _0x1f3879=_0x4cdbaa;_0x31fd1f=path[_0x3de2('0x4c')](__dirname,_0x3de2('0x28'),rs[_0x3de2('0x29')](0x4)+_0x3de2('0x3a'));fs[_0x3de2('0x2b')](_0x31fd1f,_0x4cdbaa,{'encoding':_0x3de2('0x31')});_0x247cd7=path[_0x3de2('0x4c')](__dirname,_0x3de2('0x28'),rs[_0x3de2('0x29')](0x4)+_0x3de2('0x2a'));return convertFile(_0x31fd1f,_0x247cd7);})[_0x3de2('0x2c')](function(){try{fs[_0x3de2('0x1d')](_0x31fd1f);fs['chmodSync'](_0x247cd7,_0x3de2('0x2e'));}catch(_0x562568){logger[_0x3de2('0x16')](_0x562568);}logger[_0x3de2('0x26')](_0x3de2('0x4d'),_0x247cd7[_0x3de2('0x3f')]('.')[0x0]);return _0x247cd7[_0x3de2('0x3f')]('.')[0x0];});};exports[_0x3de2('0x4e')]=function(_0x3fd042,_0x295a20,_0xc72a91){return google[_0x3de2('0x4f')](_0x3fd042,_0x295a20,_0xc72a91)[_0x3de2('0x2c')](function(_0x25c4db){logger[_0x3de2('0x26')](_0x25c4db[_0x3de2('0x50')]);return rp(_0x25c4db);})[_0x3de2('0x2c')](function(_0x581ff1){var _0x38139e='';var _0x2b03d7=0x0;try{fs[_0x3de2('0x1d')](_0x3fd042);}catch(_0x55ac9c){logger[_0x3de2('0x16')](_0x55ac9c);}if(_0x581ff1&&_0x581ff1[_0x3de2('0x51')]){_0x38139e=_0x581ff1[_0x3de2('0x51')][_0x3de2('0x52')](function(_0xf7aaef){return _0xf7aaef&&_0xf7aaef['alternatives'][0x0]&&_0xf7aaef[_0x3de2('0x53')][0x0][_0x3de2('0x54')]?_0xf7aaef['alternatives'][0x0][_0x3de2('0x54')]:'';})['join']('\x0a');_0x2b03d7=_0x581ff1['results']['map'](function(_0x386012){return _0x386012&&_0x386012[_0x3de2('0x53')][0x0]&&_0x386012[_0x3de2('0x53')][0x0][_0x3de2('0x55')]?_0x386012[_0x3de2('0x53')][0x0][_0x3de2('0x55')]:0x0;})[_0x3de2('0x56')]('\x0a');}logger[_0x3de2('0x26')](_0x3de2('0x57'),_0x38139e);logger[_0x3de2('0x26')](_0x3de2('0x58'),_0x2b03d7);return{'transcript':_0x38139e,'confidence':_0x2b03d7};})[_0x3de2('0x59')](function(_0x25fabd){logger['error'](_0x3de2('0x5a'),_0x25fabd[_0x3de2('0x15')],_0x25fabd[_0x3de2('0x5b')],_0x25fabd[_0x3de2('0x5c')]);});};exports[_0x3de2('0x5d')]=function(_0x4744a7,_0x4a9ba5,_0x341297,_0x1f2a34){var _0x2df8cb=apiai(_0x4a9ba5,{'language':_0x1f2a34||'en'});return _0x2df8cb[_0x3de2('0x5e')](_0x341297,{'sessionId':md5(_0x4744a7)})[_0x3de2('0x2c')](function(_0x267f77){logger[_0x3de2('0x26')](JSON[_0x3de2('0x44')](_0x267f77));return{'source':_0x267f77[_0x3de2('0x5f')]['source'],'resolvedQuery':_0x267f77[_0x3de2('0x5f')]['resolvedQuery'],'action':_0x267f77[_0x3de2('0x5f')][_0x3de2('0x60')],'actionIncomplete':_0x267f77[_0x3de2('0x5f')][_0x3de2('0x61')],'speech':_0x267f77[_0x3de2('0x5f')][_0x3de2('0x62')]['speech'],'score':_0x267f77[_0x3de2('0x5f')][_0x3de2('0x63')],'statusCode':_0x267f77[_0x3de2('0x64')][_0x3de2('0x65')],'endConversation':_0x267f77[_0x3de2('0x5f')][_0x3de2('0x66')]['endConversation']||![],'isFallbackIntent':_0x267f77[_0x3de2('0x5f')][_0x3de2('0x66')][_0x3de2('0x67')]};});};exports['googleDialogflowV2']=function(_0x59883a,_0xd65a0a,_0x56a053,_0x285cc4,_0x101ee1,_0x100f7d){var _0x1776a1=_0x285cc4[_0x3de2('0x68')](/\\n/g,'\x0a');var _0x5c4a45={'credentials':{'private_key':_0x1776a1,'client_email':_0x56a053}};var _0x59b6ed=new dialogflow[(_0x3de2('0x69'))](_0x5c4a45);var _0x2acf63=_0x59b6ed[_0x3de2('0x6a')](_0xd65a0a,md5(_0x59883a));var _0x530b6a={'session':_0x2acf63,'queryInput':{'text':{'text':_0x101ee1,'languageCode':_0x100f7d}}};return _0x59b6ed[_0x3de2('0x6b')](_0x530b6a)[_0x3de2('0x2c')](function(_0x4b5a41){if(_0x4b5a41&&_0x4b5a41[_0x3de2('0x48')]){logger['info']('Dialogflow\x20V2\x20response:',JSON[_0x3de2('0x44')](_0x4b5a41));var _0xbee484=_0x4b5a41[0x0];if(_0xbee484){var _0x47a567={'action':_0xbee484[_0x3de2('0x6c')][_0x3de2('0x60')],'allRequiredParamsPresent':_0xbee484['queryResult'][_0x3de2('0x6d')],'endConversation':_0xbee484[_0x3de2('0x6c')][_0x3de2('0x6e')]&&_0xbee484[_0x3de2('0x6c')][_0x3de2('0x6e')][_0x3de2('0x6f')]?_0xbee484[_0x3de2('0x6c')][_0x3de2('0x6e')][_0x3de2('0x6f')][_0x3de2('0x70')]['boolValue']:![],'fulfillmentText':_0xbee484[_0x3de2('0x6c')][_0x3de2('0x71')],'intentName':_0xbee484['queryResult'][_0x3de2('0x72')][_0x3de2('0x5b')],'intentDisplayName':_0xbee484[_0x3de2('0x6c')][_0x3de2('0x72')][_0x3de2('0x73')],'isFallbackIntent':_0xbee484[_0x3de2('0x6c')][_0x3de2('0x72')][_0x3de2('0x74')],'languageCode':_0xbee484['queryResult']['languageCode'],'queryText':_0xbee484[_0x3de2('0x6c')][_0x3de2('0x75')],'responseId':_0xbee484[_0x3de2('0x76')],'score':_0xbee484[_0x3de2('0x6c')][_0x3de2('0x77')],'speech':_0xbee484['queryResult'][_0x3de2('0x71')],'providerResponse':JSON[_0x3de2('0x44')](_0x4b5a41)};return _0x47a567;}}});};exports[_0x3de2('0x78')]=function(_0x1b5413,_0x40a30a,_0x29ecf1,_0x256c43){return tilde[_0x3de2('0x4f')](_0x1b5413,_0x40a30a,_0x29ecf1,_0x256c43)[_0x3de2('0x2c')](function(_0x5ce687){try{fs['unlink'](_0x1b5413);}catch(_0x1b44de){logger['error'](_0x1b44de);}logger[_0x3de2('0x26')](_0x3de2('0x79'),_0x5ce687[_0x3de2('0x54')]);logger['info'](_0x3de2('0x7a'),_0x5ce687[_0x3de2('0x55')]);return _0x5ce687;});};exports[_0x3de2('0x7b')]=function(_0x40c56c,_0x52c9f7,_0x2b6cd2,_0xf6e9d6,_0x249b6e,_0x39f054){var _0x42b4be=path[_0x3de2('0x4c')](__dirname,_0x3de2('0x28'),rs[_0x3de2('0x29')](0x4)+_0x3de2('0x3a'));var _0x31efde;return aws['polly'](_0x40c56c,_0x52c9f7,_0x2b6cd2,_0xf6e9d6,_0x249b6e,_0x39f054,_0x42b4be)['then'](function(){_0x31efde=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x3de2('0x2a'));return convertFile(_0x42b4be,_0x31efde);})[_0x3de2('0x2c')](function(){try{fs[_0x3de2('0x1d')](_0x42b4be);fs['chmodSync'](_0x31efde,_0x3de2('0x2e'));}catch(_0x4d7548){logger['error'](_0x4d7548);}return _0x31efde[_0x3de2('0x3f')]('.')[0x0];});};exports[_0x3de2('0x7c')]=function(_0x435b09,_0x5e77f8,_0x3862e7,_0x1fcd26,_0x3173ff,_0x4ba79e){return aws[_0x3de2('0x7d')](_0x435b09,_0x5e77f8,_0x3862e7,_0x1fcd26,_0x3173ff,_0x4ba79e)[_0x3de2('0x2c')](function(_0x5baf54){logger[_0x3de2('0x26')](JSON['stringify'](_0x5baf54));return _0x5baf54;});};exports[_0x3de2('0x7e')]=function(_0x1cc8b2,_0x4f6526,_0x2233e1,_0x3b6fc8){var _0x20108e=util[_0x3de2('0x7f')](_0x3de2('0x80'),ISPEECH_API,_0x1cc8b2,encodeURIComponent(_0x4f6526),_0x2233e1,_0x3b6fc8);var _0x3abded=path[_0x3de2('0x4c')](__dirname,_0x3de2('0x28'),rs[_0x3de2('0x29')](0x4)+'.mp3');var _0x2a6e4c;return downloadFile(_0x20108e,_0x3abded)[_0x3de2('0x2c')](function(){_0x2a6e4c=path[_0x3de2('0x4c')](__dirname,'tmp',rs['generate'](0x4)+'.wav');return convertFile(_0x3abded,_0x2a6e4c);})[_0x3de2('0x2c')](function(){try{fs['unlink'](_0x3abded);fs['chmodSync'](_0x2a6e4c,_0x3de2('0x2e'));}catch(_0x2bcfce){logger[_0x3de2('0x16')](_0x2bcfce);}return _0x2a6e4c['split']('.')[0x0];});};exports[_0x3de2('0x81')]=function(_0xad3d61,_0xad8aa1,_0x32729c,_0x446d4f){var _0x3e05dc=util[_0x3de2('0x7f')](_0x3de2('0x82'),ISPEECH_API,_0xad8aa1,_0x32729c,base64Encode(_0xad3d61),_0x446d4f?util[_0x3de2('0x7f')](_0x3de2('0x83'),encodeURIComponent(_0x446d4f)):_0x3de2('0x84'));return uploadFile(_0x3e05dc)[_0x3de2('0x2c')](function(_0x3527cd){return querystring[_0x3de2('0xc')](_0x3527cd);});};exports[_0x3de2('0x85')]=function(_0x1e301f,_0x42f157){return sestek[_0x3de2('0x86')](_0x1e301f,_0x42f157)['then'](function(_0x651f0b){logger[_0x3de2('0x26')](JSON[_0x3de2('0x44')](_0x651f0b));var _0x4b9b7c={'speech':_0x651f0b[_0x3de2('0x87')],'action':_0x651f0b[_0x3de2('0x88')]?_0x651f0b['channelData'][_0x3de2('0x89')]:undefined,'actiondata':_0x651f0b['channelData']?_0x651f0b[_0x3de2('0x88')]['CustomActionData']:undefined};if(_0x651f0b[_0x3de2('0x88')]&&_0x651f0b[_0x3de2('0x88')]['AudioFromTts']){return base64Decode(_0x651f0b[_0x3de2('0x88')]['AudioFromTts']['Data'],path[_0x3de2('0x4c')](__dirname,_0x3de2('0x28'),rs['generate'](0x4)+_0x3de2('0x2a')))[_0x3de2('0x2c')](function(_0x4913a2){_0x4b9b7c[_0x3de2('0x8a')]=_0x4913a2;return _0x4b9b7c;});}return _0x4b9b7c;});};exports[_0x3de2('0x8b')]=function(){return __dirname;};
\ No newline at end of file
index 9a8b85e..7000ead 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcee=['./nda','exports'];(function(_0x24434b,_0x1b96a1){var _0x38486d=function(_0x6fef2){while(--_0x6fef2){_0x24434b['push'](_0x24434b['shift']());}};_0x38486d(++_0x1b96a1);}(_0xfcee,0x166));var _0xefce=function(_0x25286f,_0x2f3074){_0x25286f=_0x25286f-0x0;var _0x5eabe6=_0xfcee[_0x25286f];return _0x5eabe6;};var nda=require(_0xefce('0x0'));module[_0xefce('0x1')]={'nda':nda};
\ No newline at end of file
+var _0x5458=['./nda'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x5458,0x1c4));var _0x8545=function(_0x417c36,_0x51d4de){_0x417c36=_0x417c36-0x0;var _0x6095ec=_0x5458[_0x417c36];return _0x6095ec;};var nda=require(_0x8545('0x0'));module['exports']={'nda':nda};
\ No newline at end of file
index c392269..d99bf2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7427=['uniqueid','callerid','dnid','Bearer\x20','access_token','body','channelData','ndagenerate_audio','custom_action','CustomAction','custom_action_data','CustomActionData','info','request-promise','url','../../../../../config/logger','agi','POST','resolve','ndauth_url','/token','password','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type'];(function(_0x397cfb,_0xb8f317){var _0x15fed9=function(_0x3eba43){while(--_0x3eba43){_0x397cfb['push'](_0x397cfb['shift']());}};_0x15fed9(++_0xb8f317);}(_0x7427,0x111));var _0x7742=function(_0x2c69a1,_0x201903){_0x2c69a1=_0x2c69a1-0x0;var _0x24bb91=_0x7427[_0x2c69a1];return _0x24bb91;};'use strict';var rp=require(_0x7742('0x0'));var url=require(_0x7742('0x1'));var logger=require(_0x7742('0x2'))(_0x7742('0x3'));module['exports']=function(_0x3b6268,_0x1bfe63){var _0x49ff50={'method':_0x7742('0x4'),'uri':url[_0x7742('0x5')](_0x1bfe63[_0x7742('0x6')],_0x7742('0x7')),'form':{'grant_type':_0x7742('0x8'),'username':_0x1bfe63['username'],'password':_0x1bfe63['password']},'json':!![]};return rp(_0x49ff50)[_0x7742('0x9')](function(_0xd21f94){var _0x3c6ceb={'method':_0x7742('0x4'),'uri':url[_0x7742('0x5')](_0x1bfe63[_0x7742('0xa')],_0x7742('0xb')),'body':{'type':_0x1bfe63[_0x7742('0xc')]||'message','channelId':'Nda','conversation':{'id':_0x3b6268[_0x7742('0xd')]},'from':{'id':_0x3b6268[_0x7742('0xe')],'name':_0x3b6268['calleridname']},'recipient':{'id':_0x3b6268[_0x7742('0xf')],'name':_0x3b6268['extension']},'text':_0x1bfe63['text'],'channelData':{}},'headers':{'Authorization':_0x7742('0x10')+_0xd21f94[_0x7742('0x11')]},'json':!![]};if(_0x1bfe63['project']){_0x3c6ceb[_0x7742('0x12')][_0x7742('0x13')]['ProjectName']=_0x1bfe63['project'];}if(_0x1bfe63[_0x7742('0x14')]=='1'){_0x3c6ceb['body']['channelData']['AudioOutputSettings']={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0x1bfe63[_0x7742('0x15')]){_0x3c6ceb['body']['channelData'][_0x7742('0x16')]=_0x1bfe63['custom_action'];if(_0x1bfe63[_0x7742('0x17')]){_0x3c6ceb[_0x7742('0x12')][_0x7742('0x13')][_0x7742('0x18')]=_0x1bfe63[_0x7742('0x17')];}}logger[_0x7742('0x19')](JSON['stringify'](_0x3c6ceb));return rp(_0x3c6ceb);});};
\ No newline at end of file
+var _0x97a2=['text','access_token','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','custom_action','CustomAction','CustomActionData','info','stringify','request-promise','../../../../../config/logger','agi','exports','POST','resolve','/token','password','username','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','calleridname','dnid','extension'];(function(_0x851d86,_0x32b088){var _0x307d85=function(_0x117240){while(--_0x117240){_0x851d86['push'](_0x851d86['shift']());}};_0x307d85(++_0x32b088);}(_0x97a2,0x1b1));var _0x297a=function(_0x1fe4df,_0xa2e0b4){_0x1fe4df=_0x1fe4df-0x0;var _0x373ee5=_0x97a2[_0x1fe4df];return _0x373ee5;};'use strict';var rp=require(_0x297a('0x0'));var url=require('url');var logger=require(_0x297a('0x1'))(_0x297a('0x2'));module[_0x297a('0x3')]=function(_0xfb9aa2,_0x14d6d3){var _0x158737={'method':_0x297a('0x4'),'uri':url[_0x297a('0x5')](_0x14d6d3['ndauth_url'],_0x297a('0x6')),'form':{'grant_type':_0x297a('0x7'),'username':_0x14d6d3[_0x297a('0x8')],'password':_0x14d6d3[_0x297a('0x7')]},'json':!![]};return rp(_0x158737)[_0x297a('0x9')](function(_0x3d9c6a){var _0x5ab57b={'method':_0x297a('0x4'),'uri':url[_0x297a('0x5')](_0x14d6d3[_0x297a('0xa')],_0x297a('0xb')),'body':{'type':_0x14d6d3[_0x297a('0xc')]||_0x297a('0xd'),'channelId':'Nda','conversation':{'id':_0xfb9aa2['uniqueid']},'from':{'id':_0xfb9aa2['callerid'],'name':_0xfb9aa2[_0x297a('0xe')]},'recipient':{'id':_0xfb9aa2[_0x297a('0xf')],'name':_0xfb9aa2[_0x297a('0x10')]},'text':_0x14d6d3[_0x297a('0x11')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x3d9c6a[_0x297a('0x12')]},'json':!![]};if(_0x14d6d3[_0x297a('0x13')]){_0x5ab57b[_0x297a('0x14')][_0x297a('0x15')][_0x297a('0x16')]=_0x14d6d3[_0x297a('0x13')];}if(_0x14d6d3[_0x297a('0x17')]=='1'){_0x5ab57b['body']['channelData'][_0x297a('0x18')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0x14d6d3[_0x297a('0x19')]){_0x5ab57b[_0x297a('0x14')]['channelData'][_0x297a('0x1a')]=_0x14d6d3[_0x297a('0x19')];if(_0x14d6d3['custom_action_data']){_0x5ab57b[_0x297a('0x14')][_0x297a('0x15')][_0x297a('0x1b')]=_0x14d6d3['custom_action_data'];}}logger[_0x297a('0x1c')](JSON[_0x297a('0x1d')](_0x5ab57b));return rp(_0x5ab57b);});};
\ No newline at end of file
index 6f5a52d..117707f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3294=['exports','./lib/api'];(function(_0x3fc8d3,_0x3c21ca){var _0x195eed=function(_0x2f563b){while(--_0x2f563b){_0x3fc8d3['push'](_0x3fc8d3['shift']());}};_0x195eed(++_0x3c21ca);}(_0x3294,0x8f));var _0x4329=function(_0x3508e4,_0x4c6cfe){_0x3508e4=_0x3508e4-0x0;var _0xfc8f93=_0x3294[_0x3508e4];return _0xfc8f93;};'use strict';var asr=require(_0x4329('0x0'));module[_0x4329('0x1')]=function(_0x2f241a,_0x5de3da,_0x2080dd,_0x457c32){return asr(_0x2f241a,_0x5de3da,_0x2080dd,_0x457c32);};
\ No newline at end of file
+var _0x74a2=['exports'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x74a2,0x1bf));var _0x274a=function(_0x2892da,_0x191a40){_0x2892da=_0x2892da-0x0;var _0x28cff2=_0x74a2[_0x2892da];return _0x28cff2;};'use strict';var asr=require('./lib/api');module[_0x274a('0x0')]=function(_0x2619a8,_0x4ecbf9,_0x5b13f4,_0x1b25db){return asr(_0x2619a8,_0x4ecbf9,_0x5b13f4,_0x1b25db);};
\ No newline at end of file
index 085efe0..4b4ee1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe84f=['data','close','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','final','hypotheses','transcript','likelihood','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','bluebird','lodash','moment','crypto','../../../../../../config/logger','agi','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','hex','info','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','createReadStream'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xe84f,0x120));var _0xfe84=function(_0x28670c,_0x2a82b2){_0x28670c=_0x28670c-0x0;var _0x406828=_0xe84f[_0x28670c];return _0x406828;};'use strict';var BPromise=require(_0xfe84('0x0'));var _=require(_0xfe84('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xfe84('0x2'));var crypto=require(_0xfe84('0x3'));var logger=require(_0xfe84('0x4'))(_0xfe84('0x5'));module['exports']=function(_0x569988,_0x264dd3,_0x5e741e,_0x3ce0c5){return new BPromise(function(_0x78ce8d,_0x42904b){logger['info'](_0xfe84('0x6'),_0x3ce0c5||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x239267=new WebSocket(_0x3ce0c5||_0xfe84('0x7'),{'perMessageDeflate':![]});var _0x1a1d9f='';var _0x5c2006='0';var _0x5f4a27='1';var _0x3e77e5=_0xfe84('0x8');function _0x5012be(_0x39f544){var _0x233c7f=crypto[_0xfe84('0x9')](_0xfe84('0xa'));_0x233c7f[_0xfe84('0xb')](_0x39f544);return _0x233c7f[_0xfe84('0xc')](_0xfe84('0xd'));}function _0x781b9a(){try{logger[_0xfe84('0xe')](_0xfe84('0xf'));var _0xbfeb97=moment()[_0xfe84('0x10')]();var _0x3907c3=_0x5012be(_0xbfeb97+_0x264dd3+_0x5e741e);_0x239267[_0xfe84('0x11')](JSON[_0xfe84('0x12')]({'appID':_0x264dd3,'timestamp':_0xbfeb97,'appKey':_0x3907c3}));var _0x46ecda=fs[_0xfe84('0x13')](_0x569988);_0x46ecda['on'](_0xfe84('0x14'),function(_0x12dd58){_0x239267[_0xfe84('0x11')](_0x12dd58);});_0x46ecda['on'](_0xfe84('0x15'),function(){_0x239267[_0xfe84('0x11')](_0xfe84('0x16'));});}catch(_0x3193b3){logger[_0xfe84('0x17')](_0xfe84('0x18'),JSON[_0xfe84('0x12')](_0x3193b3));_0x239267[_0xfe84('0x19')]();}}function _0xe59118(_0x2ea786){try{if(_0x2ea786){var _0x2df198=JSON[_0xfe84('0x1a')](_0x2ea786);switch(_0x2df198[_0xfe84('0x1b')]){case 0x0:if(_0x2df198['result']){if(_0x2df198[_0xfe84('0x1c')][_0xfe84('0x1d')]){logger[_0xfe84('0xe')]('Tilde\x20ASR\x20hypoteses',JSON[_0xfe84('0x12')](_0x2df198[_0xfe84('0x1c')]['hypotheses']));_0x1a1d9f=_0x2df198[_0xfe84('0x1c')][_0xfe84('0x1e')][0x0][_0xfe84('0x1f')];_0x5c2006=_0x2df198[_0xfe84('0x1c')][_0xfe84('0x1e')][0x0][_0xfe84('0x20')];_0x5f4a27='0';_0x3e77e5=_0xfe84('0x21');_0x239267['terminate']();}}break;case 0x1:logger[_0xfe84('0xe')](_0xfe84('0x8'));_0x5f4a27='1';_0x3e77e5=_0xfe84('0x8');break;case 0x2:logger[_0xfe84('0xe')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x5f4a27='2';_0x3e77e5=_0xfe84('0x22');break;case 0x9:logger['info'](_0xfe84('0x23'));_0x5f4a27='9';_0x3e77e5=_0xfe84('0x23');break;case 0xa:logger[_0xfe84('0xe')](_0xfe84('0x24'));_0x5f4a27='10';_0x3e77e5='Authentication\x20failed.';break;case 0xb:logger[_0xfe84('0xe')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x5f4a27='11';_0x3e77e5='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x154482){logger[_0xfe84('0x17')](_0xfe84('0x25'),JSON['stringify'](_0x154482));_0x239267['terminate']();}}function _0x25ecf6(){logger[_0xfe84('0xe')](_0xfe84('0x26'));_0x78ce8d({'transcript':_0x1a1d9f,'confidence':_0x5c2006,'status':_0x5f4a27,'status_message':_0x3e77e5});}function _0xb57cb2(_0x57a015){logger['error'](_0xfe84('0x27'));if(!_[_0xfe84('0x28')](_0x57a015)){logger['error'](_[_0xfe84('0x29')](_0x57a015)?JSON[_0xfe84('0x12')](_0x57a015):_0x57a015);}}_0x239267['on'](_0xfe84('0x2a'),_0x781b9a);_0x239267['on'](_0xfe84('0x2b'),_0xe59118);_0x239267['on'](_0xfe84('0x15'),_0x25ecf6);_0x239267['on']('error',_0xb57cb2);});};
\ No newline at end of file
+var _0xd976=['All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','message','lodash','moment','crypto','agi','exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','sha1','update','digest','Open\x20Tilde\x20ASR\x20socket','unix','stringify','createReadStream','data','send','close','EOS','error','terminate','parse','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.'];(function(_0x28be72,_0x2b83af){var _0x46c5da=function(_0x312911){while(--_0x312911){_0x28be72['push'](_0x28be72['shift']());}};_0x46c5da(++_0x2b83af);}(_0xd976,0x182));var _0x6d97=function(_0x35639b,_0x41f4d7){_0x35639b=_0x35639b-0x0;var _0x10f209=_0xd976[_0x35639b];return _0x10f209;};'use strict';var BPromise=require('bluebird');var _=require(_0x6d97('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x6d97('0x1'));var crypto=require(_0x6d97('0x2'));var logger=require('../../../../../../config/logger')(_0x6d97('0x3'));module[_0x6d97('0x4')]=function(_0x41e510,_0x201669,_0x345e02,_0xe33e34){return new BPromise(function(_0x453e03,_0x282dba){logger[_0x6d97('0x5')](_0x6d97('0x6'),_0xe33e34||_0x6d97('0x7'));var _0x534533=new WebSocket(_0xe33e34||_0x6d97('0x7'),{'perMessageDeflate':![]});var _0x33db75='';var _0x5473c7='0';var _0x3cc35e='1';var _0x205056=_0x6d97('0x8');function _0x15076f(_0x34735e){var _0x266544=crypto['createHash'](_0x6d97('0x9'));_0x266544[_0x6d97('0xa')](_0x34735e);return _0x266544[_0x6d97('0xb')]('hex');}function _0x26eec5(){try{logger[_0x6d97('0x5')](_0x6d97('0xc'));var _0x8644f2=moment()[_0x6d97('0xd')]();var _0x5c0aae=_0x15076f(_0x8644f2+_0x201669+_0x345e02);_0x534533['send'](JSON[_0x6d97('0xe')]({'appID':_0x201669,'timestamp':_0x8644f2,'appKey':_0x5c0aae}));var _0x442e50=fs[_0x6d97('0xf')](_0x41e510);_0x442e50['on'](_0x6d97('0x10'),function(_0x3ed4e1){_0x534533[_0x6d97('0x11')](_0x3ed4e1);});_0x442e50['on'](_0x6d97('0x12'),function(){_0x534533[_0x6d97('0x11')](_0x6d97('0x13'));});}catch(_0x5ced69){logger[_0x6d97('0x14')]('Tilde\x20ASR\x20send\x20error',JSON[_0x6d97('0xe')](_0x5ced69));_0x534533[_0x6d97('0x15')]();}}function _0x3a62d2(_0x1b0656){try{if(_0x1b0656){var _0x5065b8=JSON[_0x6d97('0x16')](_0x1b0656);switch(_0x5065b8[_0x6d97('0x17')]){case 0x0:if(_0x5065b8[_0x6d97('0x18')]){if(_0x5065b8[_0x6d97('0x18')][_0x6d97('0x19')]){logger[_0x6d97('0x5')](_0x6d97('0x1a'),JSON[_0x6d97('0xe')](_0x5065b8['result'][_0x6d97('0x1b')]));_0x33db75=_0x5065b8[_0x6d97('0x18')][_0x6d97('0x1b')][0x0][_0x6d97('0x1c')];_0x5473c7=_0x5065b8[_0x6d97('0x18')]['hypotheses'][0x0][_0x6d97('0x1d')];_0x3cc35e='0';_0x205056='Success.';_0x534533['terminate']();}}break;case 0x1:logger[_0x6d97('0x5')](_0x6d97('0x8'));_0x3cc35e='1';_0x205056='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger[_0x6d97('0x5')](_0x6d97('0x1e'));_0x3cc35e='2';_0x205056=_0x6d97('0x1e');break;case 0x9:logger['info'](_0x6d97('0x1f'));_0x3cc35e='9';_0x205056='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger['info']('Authentication\x20failed.');_0x3cc35e='10';_0x205056='Authentication\x20failed.';break;case 0xb:logger[_0x6d97('0x5')](_0x6d97('0x20'));_0x3cc35e='11';_0x205056=_0x6d97('0x20');}}}catch(_0x9c6a2f){logger[_0x6d97('0x14')]('Tilde\x20ASR\x20parse\x20error',JSON[_0x6d97('0xe')](_0x9c6a2f));_0x534533['terminate']();}}function _0x1e039a(){logger[_0x6d97('0x5')](_0x6d97('0x21'));_0x453e03({'transcript':_0x33db75,'confidence':_0x5473c7,'status':_0x3cc35e,'status_message':_0x205056});}function _0x2e3bbb(_0x39a5d0){logger[_0x6d97('0x14')](_0x6d97('0x22'));if(!_[_0x6d97('0x23')](_0x39a5d0)){logger['error'](_[_0x6d97('0x24')](_0x39a5d0)?JSON[_0x6d97('0xe')](_0x39a5d0):_0x39a5d0);}}_0x534533['on']('open',_0x26eec5);_0x534533['on'](_0x6d97('0x25'),_0x3a62d2);_0x534533['on'](_0x6d97('0x12'),_0x1e039a);_0x534533['on'](_0x6d97('0x14'),_0x2e3bbb);});};
\ No newline at end of file
index d938be4..eb48906 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa95c=['exports','./asr'];(function(_0x5616ae,_0x20fd92){var _0x550b5f=function(_0x2bb3fa){while(--_0x2bb3fa){_0x5616ae['push'](_0x5616ae['shift']());}};_0x550b5f(++_0x20fd92);}(_0xa95c,0x85));var _0xca95=function(_0x5a2fba,_0x1b4272){_0x5a2fba=_0x5a2fba-0x0;var _0x3ce001=_0xa95c[_0x5a2fba];return _0x3ce001;};var asr=require(_0xca95('0x0'));module[_0xca95('0x1')]={'asr':asr};
\ No newline at end of file
+var _0xa4f3=['exports','./asr'];(function(_0x322719,_0x16b381){var _0x30cb6f=function(_0x1e5698){while(--_0x1e5698){_0x322719['push'](_0x322719['shift']());}};_0x30cb6f(++_0x16b381);}(_0xa4f3,0x161));var _0x3a4f=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa4f3[_0x5c351c];return _0x26f3b3;};var asr=require(_0x3a4f('0x0'));module[_0x3a4f('0x1')]={'asr':asr};
\ No newline at end of file
index 850075b..5a3749c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d79=['exports','util','net','events','./error','127.0.0.1','call','emit','E_AGI_ARGUMENT_PORT','createServer','listen','listening','connection','getConnections','error','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','ready','E_AGI_SERVER_ERROR','code','close','inherits'];(function(_0x529296,_0x1a6a23){var _0x1796bf=function(_0x3cae53){while(--_0x3cae53){_0x529296['push'](_0x529296['shift']());}};_0x1796bf(++_0x1a6a23);}(_0x4d79,0xb9));var _0x94d7=function(_0x5beda8,_0x1e8554){_0x5beda8=_0x5beda8-0x0;var _0x2aa042=_0x4d79[_0x5beda8];return _0x2aa042;};'use strict';var util=require(_0x94d7('0x0'));var net=require(_0x94d7('0x1'));var EventEmitter=require(_0x94d7('0x2'))['EventEmitter'];var AGIError=require(_0x94d7('0x3'));var AGIChannel=require('./channel');var AGIServer=function(_0x388dac,_0x5cbe2a,_0x19ee3c){var _0x5095a1=this,_0x388dac=_0x388dac||0x11dd,_0x5cbe2a=_0x5cbe2a||_0x94d7('0x4'),_0x5a5f53=null,_0x353e9e=0x0;EventEmitter[_0x94d7('0x5')](_0x5095a1);function _0xdfedc3(){if(!_0x388dac){_0x5095a1[_0x94d7('0x6')]('error',new AGIError(_0x94d7('0x7')));return![];}_0x5a5f53=net[_0x94d7('0x8')]();_0x5a5f53[_0x94d7('0x9')](_0x388dac,_0x5cbe2a);_0x5a5f53['on'](_0x94d7('0xa'),function(){_0x5095a1[_0x94d7('0x6')](_0x94d7('0xa'));});_0x5a5f53['on'](_0x94d7('0xb'),function(_0x2fdd54){_0x5a5f53[_0x94d7('0xc')](function(_0x47437b,_0x20a14b){if(_0x47437b){_0x5095a1[_0x94d7('0x6')](_0x94d7('0xd'),new AGIError('E_AGI_SERVER_ERROR',_0x47437b));}else if(_0x19ee3c&&_0x19ee3c<0x0){_0x5095a1[_0x94d7('0x6')]('error',new AGIError(_0x94d7('0xe')));_0x2fdd54[_0x94d7('0xf')]();}else if(_0x19ee3c&&_0x19ee3c>0x0&&_0x19ee3c<_0x20a14b){_0x353e9e+=0x1;_0x5095a1['emit']('error',new AGIError(_0x94d7('0x10'),_0x353e9e));_0x2fdd54[_0x94d7('0xf')]();}else{var _0xeba8bd=new AGIChannel(_0x2fdd54);_0xeba8bd['on'](_0x94d7('0x11'),function(){_0x5095a1[_0x94d7('0x6')](_0x94d7('0xb'),_0xeba8bd);});}});});_0x5a5f53['on'](_0x94d7('0xd'),function(_0x31f11b){_0x5095a1[_0x94d7('0x6')](_0x94d7('0xd'),new AGIError(_0x94d7('0x12'),_0x31f11b[_0x94d7('0x13')]));});_0x5a5f53['on'](_0x94d7('0x14'),function(){_0x5095a1[_0x94d7('0x6')](_0x94d7('0x14'),new AGIError('E_AGI_SERVER_CLOSE'));});}process['nextTick'](function(){_0xdfedc3();});};util[_0x94d7('0x15')](AGIServer,EventEmitter);module[_0x94d7('0x16')]=function(_0x2a40f7,_0x21a88c,_0x9e73e7){return new AGIServer(_0x2a40f7,_0x21a88c,_0x9e73e7);};
\ No newline at end of file
+var _0xc19a=['emit','connection','getConnections','E_AGI_SERVER_ERROR','destroy','ready','code','close','inherits','exports','util','net','events','EventEmitter','./error','./channel','127.0.0.1','error','E_AGI_ARGUMENT_PORT','listen','listening'];(function(_0x44946b,_0xf874ec){var _0x249bc4=function(_0x40a23e){while(--_0x40a23e){_0x44946b['push'](_0x44946b['shift']());}};_0x249bc4(++_0xf874ec);}(_0xc19a,0x9d));var _0xac19=function(_0xbdee41,_0x5b8416){_0xbdee41=_0xbdee41-0x0;var _0x56fb0a=_0xc19a[_0xbdee41];return _0x56fb0a;};'use strict';var util=require(_0xac19('0x0'));var net=require(_0xac19('0x1'));var EventEmitter=require(_0xac19('0x2'))[_0xac19('0x3')];var AGIError=require(_0xac19('0x4'));var AGIChannel=require(_0xac19('0x5'));var AGIServer=function(_0x566b4b,_0x57ee0f,_0x1ef17a){var _0x10044e=this,_0x566b4b=_0x566b4b||0x11dd,_0x57ee0f=_0x57ee0f||_0xac19('0x6'),_0x200633=null,_0x14c5b9=0x0;EventEmitter['call'](_0x10044e);function _0xb95f51(){if(!_0x566b4b){_0x10044e['emit'](_0xac19('0x7'),new AGIError(_0xac19('0x8')));return![];}_0x200633=net['createServer']();_0x200633[_0xac19('0x9')](_0x566b4b,_0x57ee0f);_0x200633['on'](_0xac19('0xa'),function(){_0x10044e[_0xac19('0xb')](_0xac19('0xa'));});_0x200633['on'](_0xac19('0xc'),function(_0x2c3052){_0x200633[_0xac19('0xd')](function(_0x262ba8,_0x4eb110){if(_0x262ba8){_0x10044e[_0xac19('0xb')](_0xac19('0x7'),new AGIError(_0xac19('0xe'),_0x262ba8));}else if(_0x1ef17a&&_0x1ef17a<0x0){_0x10044e[_0xac19('0xb')](_0xac19('0x7'),new AGIError('E_AGI_SERVER_VOICE_DISABLED'));_0x2c3052[_0xac19('0xf')]();}else if(_0x1ef17a&&_0x1ef17a>0x0&&_0x1ef17a<_0x4eb110){_0x14c5b9+=0x1;_0x10044e['emit'](_0xac19('0x7'),new AGIError('E_AGI_SERVER_MAXCONNECTION',_0x14c5b9));_0x2c3052[_0xac19('0xf')]();}else{var _0x2bb778=new AGIChannel(_0x2c3052);_0x2bb778['on'](_0xac19('0x10'),function(){_0x10044e[_0xac19('0xb')](_0xac19('0xc'),_0x2bb778);});}});});_0x200633['on'](_0xac19('0x7'),function(_0x4e240c){_0x10044e[_0xac19('0xb')]('error',new AGIError('E_AGI_SERVER_ERROR',_0x4e240c[_0xac19('0x11')]));});_0x200633['on'](_0xac19('0x12'),function(){_0x10044e[_0xac19('0xb')](_0xac19('0x12'),new AGIError('E_AGI_SERVER_CLOSE'));});}process['nextTick'](function(){_0xb95f51();});};util[_0xac19('0x13')](AGIServer,EventEmitter);module[_0xac19('0x14')]=function(_0x34f6b6,_0x204b14,_0x297d9b){return new AGIServer(_0x34f6b6,_0x204b14,_0x297d9b);};
\ No newline at end of file
index de9cfcd..4bcfbad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96bd=['Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','LUMENVOX_ASR_CONFIDENCE','RECOG_INSTANCE()','LUMENVOX_ASR_INSTANCE','sestekasr','MRCPRecog','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','getQueryOdbc','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','no\x20user\x20found','DIAL','SIP/%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','no\x20text\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','out','Dialogflow\x20Result\x20%s','speech','Dialogflow\x20is\x20unreachable','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','toUpperCase','dialogflowV2','DialogflowV2\x20Result\x20%s','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','no\x20password\x20configured','ndassistant_url','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','opts','Executed\x20command\x20%s','finally','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','getData','response','maxdigit','test','mindigit','hiddendigitsnum','generate','hiddendigitspos','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','goalname','GOAL\x20%s','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','aws_bot_name','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','isString','message','amazonlex','Amazon\x20Lex\x20is\x20unreachable','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','NOBEEP','recordFile','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','no\x20intervals\x20found','getVariable','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','true','hangup','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','no\x20find\x20by\x20configured','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','Enter\x20in\x20NOOP\x20(%s)\x20block','pause','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','no\x20queue\x20selected','queue_id','indexOf','XMCS-QUEUE','QUEUE','gosub','position','Enter\x20in\x20RECORD\x20(%s)\x20block','%s_%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','restAPI','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','number','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','bcc','service','host','port','secure','user','pass','template_id','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Answer','Skipped\x20Answer','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','no\x20subproject\x20found\x20with\x20id\x20%d','project_id','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','exports','path','lodash','shelljs','odbc','randomstring','moment','request-promise','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getdigits','getsecretdigits','rpc','mailRpc','getVariableById','then','name','prototype','getVoiceQueue','getVoiceQueueById','getSquareProject','getSquareProjectById','catch','getSquareOdbc','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundById','getSoundPath','getMailAccount','sendMailMessage','IntervalId','Intervals','%s/sounds/converted/%s','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','query','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','agicommand','channel','arg_1','callerid','createSquareRecording','uniqueid','context','extension','priority','accountcode','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','scheduledAt','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agent','agentPause','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','shellCommand','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','audioEncoding','MP3','googleTTS','google_tts_language','url','method','timeout','POST','PUT','body','parse','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','render','stringify','statusCode','statusMessage','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','model','awsPolly','aws_polly_voice','Amy','aws_text_type','awsLex','aws_access_key_id','aws_secret_access_key','aws_lex_region','googleASR','google_asr_language','tildeASR','appid','appsecret','uri','hasOwnProperty','includes','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isArray','saveRestApiResult','isPlainObject','%s.%s','length','format','setVariable','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','createSquareDetailsReport','sync','retry','mrcpsynth','label','isConfigured','exec','MRCPSynth','noop','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','grammar','no\x20grammar\x20configured','RECOG_CONFIDENCE()','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','wait','list_id','delay','add','minutes','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x96bd,0x112));var _0xd96b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x96bd[_0x122ef9];return _0x42fba0;};'use strict';var fs=require('fs');var path=require(_0xd96b('0x0'));var util=require('util');var _=require(_0xd96b('0x1'));var sh=require(_0xd96b('0x2'));var odbc=require(_0xd96b('0x3'))();var rs=require(_0xd96b('0x4'));var moment=require(_0xd96b('0x5'));var Mustache=require('mustache');var rp=require(_0xd96b('0x6'));var logger=require('../../config/logger')(_0xd96b('0x7'));var config=require(_0xd96b('0x8'));var scripts=require(_0xd96b('0x9'));var FILES_PATH=_0xd96b('0xa');var recursiveMapAttributes=[_0xd96b('0xb'),_0xd96b('0xc')];var verticesWithRetry=[_0xd96b('0xd'),_0xd96b('0xe'),_0xd96b('0xf')];var AGIVertices=function(_0x45fda7,_0x1dca8a,_0x480b03){this['channel']=_0x45fda7;this[_0xd96b('0x10')]=_0x1dca8a;this[_0xd96b('0x11')]=_0x480b03;};AGIVertices['prototype']['getVariable']=function(_0x3ac9ac,_0xe227f6){this[_0xd96b('0x10')][_0xd96b('0x12')](_0x3ac9ac)[_0xd96b('0x13')](function(_0x4d15fe){_0xe227f6(null,_0x4d15fe?_0x4d15fe[_0xd96b('0x14')]:![]);})['catch'](function(_0x36d681){_0xe227f6(_0x36d681);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x16')]=function(_0x5046ab,_0x3fc044){this[_0xd96b('0x10')][_0xd96b('0x17')](_0x5046ab)[_0xd96b('0x13')](function(_0x52607f){_0x3fc044(null,_0x52607f?_0x52607f[_0xd96b('0x14')]:![]);})['catch'](function(_0x36fa41){_0x3fc044(_0x36fa41);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x18')]=function(_0x286d66,_0xd7e704){this[_0xd96b('0x10')][_0xd96b('0x19')](_0x286d66)['then'](function(_0x2966f1){_0xd7e704(null,_0x2966f1?_0x2966f1[_0xd96b('0x14')]:![]);})[_0xd96b('0x1a')](function(_0xc9f000){_0xd7e704(_0xc9f000);});};AGIVertices['prototype'][_0xd96b('0x1b')]=function(_0x27f222,_0xf9a251){this[_0xd96b('0x10')]['getSquareOdbcById'](_0x27f222)[_0xd96b('0x13')](function(_0x4262f5){_0xf9a251(null,_0x4262f5?_0x4262f5['dsn']:![]);})['catch'](function(_0xe37e0f){_0xf9a251(_0xe37e0f);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x1c')]=function(_0x517a32,_0x1140dc){this[_0xd96b('0x10')][_0xd96b('0x1d')](_0x517a32)[_0xd96b('0x13')](function(_0xca0368){_0x1140dc(null,_0xca0368?_0xca0368[_0xd96b('0x14')]:![]);})[_0xd96b('0x1a')](function(_0x555da9){_0x1140dc(_0x555da9);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x1e')]=function(_0x493494,_0x35a921){this[_0xd96b('0x10')][_0xd96b('0x1f')](_0x493494)[_0xd96b('0x13')](function(_0x2a2875){_0x35a921(null,_0x2a2875?_0x2a2875[_0xd96b('0x14')]:![]);})['catch'](function(_0x3bd517){_0x35a921(_0x3bd517);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x20')]=function(_0xe3622b,_0x844476){var _0xf481fd=this;this[_0xd96b('0x10')][_0xd96b('0x21')](_0xe3622b)[_0xd96b('0x13')](function(_0x5c67dc){_0x844476(null,_0x5c67dc?_0xf481fd[_0xd96b('0x22')](_0x5c67dc['save_name']):![]);})[_0xd96b('0x1a')](function(_0x3b1b6b){_0x844476(_0x3b1b6b);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x23')]=function(_0x5189ae,_0x46bbb0){this[_0xd96b('0x10')]['getMailAccountById'](_0x5189ae)[_0xd96b('0x13')](function(_0x29a558){_0x46bbb0(null,_0x29a558?_0x29a558:![]);})[_0xd96b('0x1a')](function(_0x3afe73){_0x46bbb0(_0x3afe73);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x24')]=function(_0x1cacf4,_0x46612f,_0x356cee){this[_0xd96b('0x11')][_0xd96b('0x24')](_0x1cacf4,_0x46612f)['then'](function(){_0x356cee(null);})[_0xd96b('0x1a')](function(_0x36ee2e){_0x356cee(_0x36ee2e);});};AGIVertices['prototype']['getIntervals']=function(_0x14f97a,_0x4bafac){this['rpc']['getIntervalById'](_0x14f97a)[_0xd96b('0x13')](function(_0x4e82e0){if(_0x4e82e0){if(_0x4e82e0[_0xd96b('0x25')]){_0x4bafac(null,[_0x4e82e0['interval']]);}else{_0x4bafac(null,_['map'](_0x4e82e0[_0xd96b('0x26')],'interval'));}}else{_0x4bafac(null,![]);}})[_0xd96b('0x1a')](function(_0xfd8fe1){_0x4bafac(_0xfd8fe1);});};AGIVertices[_0xd96b('0x15')]['getSoundPath']=function(_0x134640){return util['format'](_0xd96b('0x27'),FILES_PATH,_0x134640);};AGIVertices['prototype']['getQueryOdbc']=function(_0x1a4377,_0x25d715,_0x4ac97b){odbc[_0xd96b('0x28')](_0x1a4377,function(_0xb0ecac){if(_0xb0ecac){logger[_0xd96b('0x29')](_0xd96b('0x2a'),_0xb0ecac);_0x4ac97b(_0xb0ecac);}else{logger[_0xd96b('0x2b')]('ODBC\x20connection\x20successfully');odbc[_0xd96b('0x2c')](_0x25d715,function(_0x104f8c,_0x101062){if(_0x104f8c){logger[_0xd96b('0x2b')]('Error\x20executing\x20query\x20%s',_0x25d715);_0x4ac97b(_0x104f8c);}else{logger[_0xd96b('0x2b')](_0xd96b('0x2d'),_0x25d715);odbc[_0xd96b('0x2e')](function(_0x3d20a9){if(_0x3d20a9){logger[_0xd96b('0x29')](_0xd96b('0x2f'),_0x3d20a9);}_0x4ac97b(null,_0x101062);});}});}});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x30')]=function(_0x500daa,_0x47a94e){this['rpc'][_0xd96b('0x31')](_0x500daa)[_0xd96b('0x13')](function(_0x22e011){_0x47a94e(null,_0x22e011?_0x22e011:![]);})[_0xd96b('0x1a')](function(_0x43527a){_0x47a94e(_0x43527a);});};AGIVertices['prototype'][_0xd96b('0x32')]=function(_0x4f0e5f,_0x312467){this[_0xd96b('0x10')][_0xd96b('0x32')](_0x4f0e5f)['then'](function(_0x468842){_0x312467(null,_0x468842);})[_0xd96b('0x1a')](function(_0x483eae){_0x312467(_0x483eae);});};AGIVertices[_0xd96b('0x15')]['createSquareDetailsReport']=function(_0x505764,_0x3016a2,_0x436151){this[_0xd96b('0x10')]['createSquareDetailsReport']({'uniqueid':this['channel']['uniqueid'],'node':_0x505764['label'],'application':_0x505764[_0xd96b('0x33')],'data':_0x3016a2||null,'project_name':this[_0xd96b('0x34')][_0xd96b('0x35')],'callerid':this[_0xd96b('0x34')][_0xd96b('0x36')]})[_0xd96b('0x13')](function(_0x398fd6){if(_0x436151){_0x436151(null,_0x398fd6);}})['catch'](function(_0x2d6f2a){if(_0x436151){_0x436151(_0x2d6f2a);}});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x37')]=function(_0x40dfcd,_0x3b14b0,_0x3aa2ec,_0x5e09c4){this['rpc'][_0xd96b('0x37')]({'uniqueid':this[_0xd96b('0x34')][_0xd96b('0x38')],'callerid':this[_0xd96b('0x34')][_0xd96b('0x36')],'calleridname':this[_0xd96b('0x34')]['calleridname'],'context':this[_0xd96b('0x34')][_0xd96b('0x39')],'extension':this[_0xd96b('0x34')][_0xd96b('0x3a')],'priority':this[_0xd96b('0x34')][_0xd96b('0x3b')],'accountcode':this[_0xd96b('0x34')][_0xd96b('0x3c')],'dnid':this['channel']['dnid'],'projectName':this[_0xd96b('0x34')][_0xd96b('0x35')],'saveName':_0x3b14b0,'filename':_0x40dfcd['file']||_0x3b14b0,'savePath':_0x3aa2ec})[_0xd96b('0x13')](function(_0x3dda78){_0x5e09c4(null,_0x3dda78);})[_0xd96b('0x1a')](function(_0x37be81){_0x5e09c4(_0x37be81);});};AGIVertices['prototype'][_0xd96b('0x3d')]=function(_0x1b2eb1,_0x39174f,_0x59f752,_0x51b110,_0x334161){this[_0xd96b('0x10')][_0xd96b('0x3d')]({'uniqueid':this[_0xd96b('0x34')]['uniqueid'],'body':_0x1b2eb1,'direction':_0x39174f,'providerName':_0x59f752,'providerResponse':_0x51b110})[_0xd96b('0x13')](function(_0x3fbd49){if(_0x334161){_0x334161(null,_0x3fbd49);}})['catch'](function(_0x49ebb2){if(_0x334161){_0x334161(_0x49ebb2);}});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x3e')]=function(_0x556dfa,_0x3e928a){this[_0xd96b('0x10')][_0xd96b('0x3e')]({'firstName':_[_0xd96b('0x3f')](_0x556dfa[_0xd96b('0x14')])||_[_0xd96b('0x40')](_0x556dfa[_0xd96b('0x14')])?_0xd96b('0x41')+Math[_0xd96b('0x42')]():_0x556dfa[_0xd96b('0x14')],'lastName':_['isEmpty'](_0x556dfa[_0xd96b('0x43')])||_[_0xd96b('0x40')](_0x556dfa[_0xd96b('0x43')])?null:_0x556dfa[_0xd96b('0x43')],'phone':_0x556dfa[_0xd96b('0x44')],'ListId':_0x556dfa['list_id'],'scheduledat':_0x556dfa[_0xd96b('0x45')],'callbackUniqueid':this[_0xd96b('0x34')][_0xd96b('0x38')],'tags':'callback','description':_0xd96b('0x46')+_0x556dfa[_0xd96b('0x45')][_0xd96b('0x47')](),'priority':_0x556dfa[_0xd96b('0x48')]})[_0xd96b('0x13')](function(_0x4580fa){_0x3e928a(null,_0x4580fa);})[_0xd96b('0x1a')](function(_0x1804ee){_0x3e928a(_0x1804ee);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x49')]=function(_0x54f1b3,_0x264735){this[_0xd96b('0x10')][_0xd96b('0x4a')](_0x54f1b3)['then'](function(_0x37ded4){_0x264735(null,_0x37ded4?_0x37ded4['name']:![]);})[_0xd96b('0x1a')](function(_0x4cf988){_0x264735(_0x4cf988);});};AGIVertices['prototype']['agentPause']=function(_0x28dca2,_0x2e5e2b,_0x3035c4){var _0x114454={'role':_0xd96b('0x4b')};_0x114454[_0x28dca2]=this[_0xd96b('0x34')][_0xd96b('0x36')];this['rpc'][_0xd96b('0x4c')](_0x114454,_0x2e5e2b,this[_0xd96b('0x34')]['uniqueid'])['then'](function(_0x58b9ef){_0x3035c4(null,_[_0xd96b('0x40')](_0x58b9ef)?![]:!![]);})[_0xd96b('0x1a')](function(_0x2cf92c){logger['error'](_0x2cf92c);_0x3035c4(null,![]);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x4d')]=function(_0x2aeb36,_0x167543){var _0x4cc718={'role':_0xd96b('0x4b')};_0x4cc718[_0x2aeb36]=this['channel'][_0xd96b('0x36')];this[_0xd96b('0x10')]['agentUnpause'](_0x4cc718)[_0xd96b('0x13')](function(_0x51375d){_0x167543(null,_['isNil'](_0x51375d)?![]:!![]);})[_0xd96b('0x1a')](function(_0x12f523){logger[_0xd96b('0x29')](_0x12f523);_0x167543(null,![]);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x4e')]=function(_0x13cb98,_0x89159f){var _0x537fc8={'role':'agent'};_0x537fc8[_0x13cb98]=this[_0xd96b('0x34')][_0xd96b('0x36')];this[_0xd96b('0x10')][_0xd96b('0x4e')](_0x537fc8)[_0xd96b('0x13')](function(_0x576a71){_0x89159f(null,_[_0xd96b('0x40')](_0x576a71)?![]:!![]);})[_0xd96b('0x1a')](function(_0x2f5ca5){logger['error'](_0x2f5ca5);_0x89159f(null,![]);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x4f')]=function(_0x36ea5d,_0x4c8790){var _0x57af76={'role':_0xd96b('0x4b')};_0x57af76[_0x36ea5d]=this[_0xd96b('0x34')]['callerid'];var _0x2f0914=_0x36ea5d!=_0xd96b('0x50')?util['format'](_0xd96b('0x51'),_0xd96b('0x52'),this['channel'][_0xd96b('0x36')]):undefined;this[_0xd96b('0x10')]['agentLogin'](_0x57af76,_0x2f0914)[_0xd96b('0x13')](function(_0x980390){_0x4c8790(null,_['isNil'](_0x980390)?![]:!![]);})[_0xd96b('0x1a')](function(_0x3a4f8a){logger['error'](_0x3a4f8a);_0x4c8790(null,![]);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x53')]=function(_0x3bb4b4,_0x4b71d4){sh['exec'](_[_0xd96b('0x54')](_0x3bb4b4),function(_0x131a2d,_0x372dbe){var _0x4a32c0=_0x372dbe[_0xd96b('0x55')](/(\r\n|\n|\r)/gm,'');_0x4b71d4(null,_0x4a32c0);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x56')]=function(_0x2fd8b2,_0x43031c){scripts['googleCloudTTS'](_0x2fd8b2[_0xd96b('0x57')],_0x2fd8b2[_0xd96b('0x58')]||_0xd96b('0x59'),_0x2fd8b2[_0xd96b('0x59')],_0x2fd8b2[_0xd96b('0x5a')]||_0xd96b('0x5b'),_0x2fd8b2[_0xd96b('0x5c')]||'MALE',_0x2fd8b2[_0xd96b('0x5d')]||_0xd96b('0x5e'))[_0xd96b('0x13')](function(_0xda8049){_0x43031c(null,_0xda8049);})[_0xd96b('0x1a')](function(_0x32bc64){_0x43031c(_0x32bc64);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x5f')]=function(_0x1a82f7,_0x497e52){scripts[_0xd96b('0x5f')](_0x1a82f7['text'],_0x1a82f7[_0xd96b('0x60')]||'en',0x1)[_0xd96b('0x13')](function(_0x4af132){_0x497e52(null,_0x4af132);})[_0xd96b('0x1a')](function(_0x59ab82){_0x497e52(_0x59ab82);});};AGIVertices['prototype']['restAPI']=function(_0x40cb60,_0x5a5175){var _0x228e74={'uri':_0x40cb60[_0xd96b('0x61')],'method':_0x40cb60[_0xd96b('0x62')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x40cb60[_0xd96b('0x63')])==='number'&&parseInt(_0x40cb60[_0xd96b('0x63')])>=0x1?parseInt(_0x40cb60['timeout'])*0x3e8:0x5*0x3e8};if(_['includes']([_0xd96b('0x64'),_0xd96b('0x65')],_0x228e74[_0xd96b('0x62')]['toUpperCase']())){try{_0x228e74[_0xd96b('0x66')]=_0x40cb60[_0xd96b('0xc')]?JSON[_0xd96b('0x67')](_0x40cb60['rawBody']):{};}catch(_0x129b51){logger[_0xd96b('0x29')]('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x129b51);}}try{_0x228e74[_0xd96b('0x68')]=_0x40cb60[_0xd96b('0xb')]?JSON[_0xd96b('0x67')](_0x40cb60[_0xd96b('0xb')]):{};}catch(_0x1976bb){logger[_0xd96b('0x29')](_0xd96b('0x69'),_0x1976bb);}if(_0x40cb60['computedVariables']){try{var _0x5eda00=require(_0x40cb60['computedVariables'])['sync'](this,_0x228e74);_0x228e74['uri']=Mustache[_0xd96b('0x6a')](_0x40cb60['url'],_0x5eda00,{},['$$','$$']);if(_0x228e74[_0xd96b('0x68')]){_0x228e74['headers']=JSON[_0xd96b('0x67')](Mustache[_0xd96b('0x6a')](JSON[_0xd96b('0x6b')](_0x228e74[_0xd96b('0x68')]),_0x5eda00,{},['$$','$$']));}if(_0x228e74[_0xd96b('0x66')]){_0x228e74[_0xd96b('0x66')]=JSON[_0xd96b('0x67')](Mustache[_0xd96b('0x6a')](JSON[_0xd96b('0x6b')](_0x228e74[_0xd96b('0x66')]),_0x5eda00,{},['$$','$$']));}}catch(_0x407bfe){logger[_0xd96b('0x29')]('An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function',_0x407bfe);}}rp(_0x228e74)['then'](function(_0x455fc9){var _0x215610={'statusCode':_0x455fc9[_0xd96b('0x6c')]||0xc8,'statusMessage':_0x455fc9[_0xd96b('0x6d')]||'OK','headers':_0x455fc9[_0xd96b('0x68')]||{},'body':_0x455fc9[_0xd96b('0x66')]||{}};_0x5a5175(null,_0x215610);})[_0xd96b('0x1a')](function(_0x296079){var _0x5f41b4={'statusCode':_0x296079[_0xd96b('0x6c')]||0x1f4,'statusMessage':_0x296079['message']||_0xd96b('0x6e'),'headers':_0x296079[_0xd96b('0x6f')][_0xd96b('0x68')]||{},'body':_0x296079[_0xd96b('0x6f')][_0xd96b('0x66')]||{}};_0x5a5175(null,_0x5f41b4);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x70')]=function(_0x2df4f2,_0x44816c){scripts[_0xd96b('0x70')](this[_0xd96b('0x34')][_0xd96b('0x38')],_0x2df4f2[_0xd96b('0x71')],_0x2df4f2[_0xd96b('0x59')],_0x2df4f2['dialogflow_language']||'en')['then'](function(_0x5d8c7b){_0x44816c(null,_0x5d8c7b);})[_0xd96b('0x1a')](function(_0x2c0bdc){_0x44816c(_0x2c0bdc);});};AGIVertices['prototype'][_0xd96b('0x72')]=function(_0x448d24,_0x386e04){scripts['googleDialogflowV2'](this[_0xd96b('0x34')][_0xd96b('0x38')],_0x448d24[_0xd96b('0x73')],_0x448d24[_0xd96b('0x74')],_0x448d24[_0xd96b('0x75')],_0x448d24[_0xd96b('0x59')],_0x448d24['dialogflowV2_language']||'en')[_0xd96b('0x13')](function(_0x13ad7c){_0x386e04(null,_0x13ad7c);})['catch'](function(_0x529817){_0x386e04(_0x529817);});};AGIVertices['prototype'][_0xd96b('0x76')]=function(_0x3c8ec9,_0x275be4){scripts[_0xd96b('0x76')](this['channel'],_0x3c8ec9)[_0xd96b('0x13')](function(_0xa46a3){_0x275be4(null,_0xa46a3);})['catch'](function(_0x2067a1){_0x275be4(_0x2067a1);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x77')]=function(_0x294698,_0x3d8aec){scripts[_0xd96b('0x77')](_0x294698['key'],_0x294698[_0xd96b('0x59')],_0x294698[_0xd96b('0x78')]||_0xd96b('0x5b'),_0x294698[_0xd96b('0x79')])['then'](function(_0xd70c3e){_0x3d8aec(null,_0xd70c3e);})[_0xd96b('0x1a')](function(_0x8a4d76){_0x3d8aec(_0x8a4d76);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x7a')]=function(_0x25b285,_0x3fceeb,_0x293629){scripts['ispeechASR'](_0x3fceeb,_0x25b285['key'],_0x25b285[_0xd96b('0x7b')]||_0xd96b('0x5b'),this['isConfigured'](_0x25b285['model'])?_0x25b285[_0xd96b('0x7c')]:undefined)['then'](function(_0x32e8df){_0x293629(null,_0x32e8df);})[_0xd96b('0x1a')](function(_0x467170){_0x293629(_0x467170);});};AGIVertices['prototype']['awsPolly']=function(_0x1ba4aa,_0x2087db){scripts[_0xd96b('0x7d')](_0x1ba4aa['aws_access_key_id'],_0x1ba4aa['aws_secret_access_key'],_0x1ba4aa['aws_polly_region'],_0x1ba4aa[_0xd96b('0x7e')]||_0xd96b('0x7f'),_0x1ba4aa[_0xd96b('0x59')],_0x1ba4aa[_0xd96b('0x80')]||_0xd96b('0x59'))[_0xd96b('0x13')](function(_0x132c62){_0x2087db(null,_0x132c62);})[_0xd96b('0x1a')](function(_0x20b4a5){_0x2087db(_0x20b4a5);});};AGIVertices[_0xd96b('0x15')]['awsLex']=function(_0x3ead2f,_0x39efc8){scripts[_0xd96b('0x81')](this[_0xd96b('0x34')][_0xd96b('0x38')],_0x3ead2f[_0xd96b('0x82')],_0x3ead2f[_0xd96b('0x83')],_0x3ead2f[_0xd96b('0x84')],_0x3ead2f[_0xd96b('0x59')],_0x3ead2f['aws_bot_name'])[_0xd96b('0x13')](function(_0x3a8d95){_0x39efc8(null,_0x3a8d95);})[_0xd96b('0x1a')](function(_0x53fe30){_0x39efc8(_0x53fe30);});};AGIVertices['prototype']['googleASR']=function(_0x2482ec,_0x9c93a8,_0x4823d9){scripts[_0xd96b('0x85')](_0x9c93a8,_0x2482ec[_0xd96b('0x71')],_0x2482ec[_0xd96b('0x86')]||_0xd96b('0x5b'))[_0xd96b('0x13')](function(_0x496914){_0x4823d9(null,_0x496914);})[_0xd96b('0x1a')](function(_0x57243e){_0x4823d9(_0x57243e);});};AGIVertices[_0xd96b('0x15')][_0xd96b('0x87')]=function(_0x3f057c,_0x4a3c9d,_0x29c1f6){scripts[_0xd96b('0x87')](_0x4a3c9d,_0x3f057c[_0xd96b('0x88')],_0x3f057c[_0xd96b('0x89')],_0x3f057c[_0xd96b('0x8a')])[_0xd96b('0x13')](function(_0x24fc5d){_0x29c1f6(null,_0x24fc5d);})[_0xd96b('0x1a')](function(_0x112b5d){_0x29c1f6(_0x112b5d);});};AGIVertices[_0xd96b('0x15')]['clear']=function(_0x45269f){var _0x16938a=_['includes'](verticesWithRetry,_0x45269f[_0xd96b('0x33')])?_0x45269f:_['clone'](_0x45269f);for(var _0x307151 in _0x16938a){if(_0x16938a[_0xd96b('0x8b')](_0x307151)){if(_0x16938a[_0x307151]&&_['isString'](_0x16938a[_0x307151])){if(_[_0xd96b('0x8c')](recursiveMapAttributes,_0x307151)){_0x16938a[_0x307151]=this[_0xd96b('0x8d')](_0x16938a[_0x307151]);}else{_0x16938a[_0x307151]=this[_0xd96b('0x8e')](_0x16938a[_0x307151]);}}}}return _0x16938a;};AGIVertices[_0xd96b('0x15')][_0xd96b('0x8f')]=function(_0x1e01c3){for(var _0x34bbdd in _0x1e01c3){if(_0x1e01c3[_0xd96b('0x8b')](_0x34bbdd)){if(_['isPlainObject'](_0x1e01c3[_0x34bbdd])){this[_0xd96b('0x8f')](_0x1e01c3[_0x34bbdd]);}else if(_[_0xd96b('0x90')](_0x1e01c3[_0x34bbdd])){for(var _0x223de1=0x0;_0x223de1<_0x1e01c3[_0x34bbdd]['length'];_0x223de1++){this[_0xd96b('0x8f')](_0x1e01c3[_0x34bbdd][_0x223de1]);}}else if(_['isString'](_0x1e01c3[_0x34bbdd])){_0x1e01c3[_0x34bbdd]=this[_0xd96b('0x8e')](_0x1e01c3[_0x34bbdd]);}}}};AGIVertices[_0xd96b('0x15')][_0xd96b('0x91')]=function(_0xc170b2,_0x86ef0d){for(var _0x18559f in _0xc170b2){if(_0xc170b2[_0xd96b('0x8b')](_0x18559f)){if(_[_0xd96b('0x92')](_0xc170b2[_0x18559f])){if(!_[_0xd96b('0x3f')](_0xc170b2[_0x18559f])){this['saveRestApiResult'](_0xc170b2[_0x18559f],util['format'](_0xd96b('0x93'),_0x86ef0d,_0x18559f));}}else if(_[_0xd96b('0x90')](_0xc170b2[_0x18559f])){for(var _0x3d940e=0x0;_0x3d940e<_0xc170b2[_0x18559f][_0xd96b('0x94')];_0x3d940e++){this[_0xd96b('0x91')](_0xc170b2[_0x18559f][_0x3d940e],util[_0xd96b('0x95')](_0xd96b('0x93'),_0x86ef0d,_0x18559f+'['+_0x3d940e+']'));}}else{if(!_['isNil'](_0xc170b2[_0x18559f])){this[_0xd96b('0x34')][_0xd96b('0x96')](util[_0xd96b('0x95')](_0xd96b('0x93'),_0x86ef0d,_0x18559f),_0xc170b2[_0x18559f]);}}}}};AGIVertices[_0xd96b('0x15')][_0xd96b('0x8d')]=function(_0xe05d12){try{var _0x276b3b=JSON[_0xd96b('0x67')](_0xe05d12);this['recursiveNodeIndex'](_0x276b3b);return JSON[_0xd96b('0x6b')](_0x276b3b);}catch(_0x3b4477){return this[_0xd96b('0x8e')](_0xe05d12);}};AGIVertices[_0xd96b('0x15')][_0xd96b('0x8e')]=function(_0x545ea6){var _0x182720=_0x545ea6[_0xd96b('0x97')]('{');for(var _0x286ece=0x1;_0x286ece<_0x182720['length'];_0x286ece+=0x1){var _0x53397f=_0x182720[_0x286ece][_0xd96b('0x97')]('}');if(_0x53397f[_0xd96b('0x94')]>0x1){_0x545ea6=_0x545ea6[_0xd96b('0x98')]('{'+_0x53397f[0x0]+'}',this[_0xd96b('0x34')]['getVariable'](_0x53397f[0x0])[_0xd96b('0x99')]||_0x53397f[0x0]);}}if(_0x182720[_0xd96b('0x94')]===0x1){return _0x545ea6[_0xd96b('0x47')]();}return this[_0xd96b('0x8e')](_0x545ea6);};AGIVertices['prototype'][_0xd96b('0x9a')]=function(_0x7b5aec,_0x340d43){var _0x4e0470=this[_0xd96b('0x34')]['getVariable'](_0x7b5aec);if(_0x4e0470[_0xd96b('0x9b')]===-0x1){return _0x4e0470;}logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x9c'),_0x340d43,_0x4e0470[_0xd96b('0x99')]));return this[_0xd96b('0x34')][_0xd96b('0x96')](_0x340d43,_0x4e0470['extra']);};AGIVertices[_0xd96b('0x15')]['isConfigured']=function(_0x2164aa){return _0x2164aa&&_0x2164aa!=='0'&&_0x2164aa!=='-1'&&_0x2164aa!=='';};AGIVertices[_0xd96b('0x15')][_0xd96b('0x9d')]=function(_0x2ecdd2){this[_0xd96b('0x9e')][_0xd96b('0x9f')](this,_0x2ecdd2,'-');_0x2ecdd2[_0xd96b('0xa0')]=_0x2ecdd2['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices[_0xd96b('0x15')][_0xd96b('0xa1')]=function(_0x44bca7){logger[_0xd96b('0x2b')](util['format']('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x44bca7[_0xd96b('0xa2')]));if(!this['isConfigured'](_0x44bca7['text'])){return this[_0xd96b('0x34')]['noop']('no\x20text\x20configured');}var _0x14d689='\x22'+_0x44bca7[_0xd96b('0x59')]+'\x22';if(this[_0xd96b('0xa3')](_0x44bca7['options'])){_0x14d689+=','+_0x44bca7[_0xd96b('0x6f')];}var _0x7faea8=this[_0xd96b('0x34')][_0xd96b('0xa4')](_0xd96b('0xa5'),_0x14d689);if(_0x7faea8['result']===-0x1){return _0x7faea8;}return this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0xa7'),_0x14d689));};AGIVertices[_0xd96b('0x15')][_0xd96b('0xa8')]=function(_0x5c2464){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')]('Enter\x20in\x20MRCPRecog\x20(%s)\x20block',_0x5c2464[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x5c2464[_0xd96b('0xa9')])){return this[_0xd96b('0x34')]['noop'](_0xd96b('0xaa'));}var _0x432bff=_0x5c2464[_0xd96b('0xa9')];if(this[_0xd96b('0xa3')](_0x5c2464[_0xd96b('0x6f')])){_0x432bff+=','+_0x5c2464[_0xd96b('0x6f')];}var _0x2866b5=this[_0xd96b('0x34')][_0xd96b('0xa4')]('MRCPRecog',_0x432bff);if(_0x2866b5['result']===-0x1){return _0x2866b5;}var _0x2f3d10=this['getAndSetVariable'](_0xd96b('0xab'),'MRCP_RECOG_CONFIDENCE');if(_0x2f3d10['result']===-0x1){return _0x2f3d10;}var _0x2c21f9=this[_0xd96b('0x9a')](_0xd96b('0xac'),_0xd96b('0xad'));if(_0x2c21f9[_0xd96b('0x9b')]===-0x1){return _0x2c21f9;}var _0x2c056e=this[_0xd96b('0x9a')]('RECOG_INSTANCE()','MRCP_RECOG_INSTANCE');if(_0x2c056e['result']===-0x1){return _0x2c056e;}return this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0xae'),_0x432bff));};AGIVertices['prototype'][_0xd96b('0x7')]=function(_0x310c60){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0xaf'),_0x310c60[_0xd96b('0xa2')]));return this[_0xd96b('0x34')][_0xd96b('0x7')]([_0x310c60[_0xd96b('0xb0')],_0x310c60[_0xd96b('0xb1')]]);};AGIVertices[_0xd96b('0x15')][_0xd96b('0xb2')]=function(_0x5676c3){logger['info'](util[_0xd96b('0x95')](_0xd96b('0xb3'),_0x5676c3[_0xd96b('0xa2')]));if(this[_0xd96b('0xa3')](_0x5676c3['timeout'])){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')]('Wait\x20%s\x20seconds\x20before\x20answer',_0x5676c3['timeout']));var _0x4a8d54=this['channel'][_0xd96b('0xb4')](_0x5676c3[_0xd96b('0x63')]);if(_0x4a8d54[_0xd96b('0x9b')]===-0x1){return _0x4a8d54;}}return this[_0xd96b('0x34')]['answer']();};AGIVertices[_0xd96b('0x15')]['callback']=function(_0x4950d5){logger['info'](util[_0xd96b('0x95')]('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x4950d5[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x4950d5[_0xd96b('0xb5')])){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x4950d5,'no\x20list\x20selected');}_0x4950d5[_0xd96b('0x45')]=moment();if(this[_0xd96b('0xa3')](_0x4950d5[_0xd96b('0xb6')])){_0x4950d5[_0xd96b('0x45')]=moment()[_0xd96b('0xb7')](_0x4950d5[_0xd96b('0xb6')],_0xd96b('0xb8'));}if(!this[_0xd96b('0xa3')](_0x4950d5['callback_priority'])){_0x4950d5['callback_priority']=0x2;}this[_0xd96b('0x3e')][_0xd96b('0x9f')](this,_0x4950d5);return this['channel'][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0xb9'),_0x4950d5['phone'],_0x4950d5[_0xd96b('0xb5')],_0x4950d5[_0xd96b('0x45')]));};AGIVertices[_0xd96b('0x15')]['custom_app']=function(_0x43628f){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0xba'),_0x43628f[_0xd96b('0xa2')]));var _0x24cc67=this[_0xd96b('0x34')][_0xd96b('0xa4')](_0x43628f[_0xd96b('0xbb')],_0x43628f[_0xd96b('0x6f')]);if(_0x24cc67['result']===-0x1){return _0x24cc67;}return this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0xbc'),_0x43628f['application'],_0x43628f[_0xd96b('0x6f')]));};AGIVertices['prototype'][_0xd96b('0xbd')]=function(_0x5cca49){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0xbe'),_0x5cca49['label']));if(!this[_0xd96b('0xa3')](_0x5cca49['text'])){return this[_0xd96b('0x34')][_0xd96b('0xa6')]('no\x20text\x20configured');}var _0x5e63b6='\x22'+_0x5cca49['text']+'\x22';if(this[_0xd96b('0xa3')](_0x5cca49[_0xd96b('0x6f')])){_0x5e63b6+=','+_0x5cca49['options'];}var _0x5243a7=this[_0xd96b('0x34')][_0xd96b('0xa4')](_0xd96b('0xa5'),_0x5e63b6);if(_0x5243a7['result']===-0x1){return _0x5243a7;}return this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0xa7'),_0x5e63b6));};AGIVertices[_0xd96b('0x15')][_0xd96b('0xbf')]=function(_0x16d979){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0xc0'),_0x16d979[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x16d979['text'])){return this[_0xd96b('0x34')]['noop']('no\x20text\x20configured');}var _0x22496e='\x22'+_0x16d979[_0xd96b('0x59')]+'\x22';if(this['isConfigured'](_0x16d979[_0xd96b('0x6f')])){_0x22496e+=','+_0x16d979['options'];}var _0x5e4f7d=this[_0xd96b('0x34')][_0xd96b('0xa4')](_0xd96b('0xa5'),_0x22496e);if(_0x5e4f7d[_0xd96b('0x9b')]===-0x1){return _0x5e4f7d;}return this['channel'][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0xa7'),_0x22496e));};AGIVertices[_0xd96b('0x15')][_0xd96b('0xc1')]=function(_0x5416e5){logger[_0xd96b('0x2b')](util['format']('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x5416e5[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x5416e5[_0xd96b('0xa9')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')]('no\x20grammar\x20configured');}var _0x2c6bb8=_0x5416e5[_0xd96b('0xa9')];if(this[_0xd96b('0xa3')](_0x5416e5[_0xd96b('0x6f')])){_0x2c6bb8+=','+_0x5416e5[_0xd96b('0x6f')];}var _0x48899f=this[_0xd96b('0x34')][_0xd96b('0xa4')]('MRCPRecog',_0x2c6bb8);if(_0x48899f[_0xd96b('0x9b')]===-0x1){return _0x48899f;}var _0x27ab62=this[_0xd96b('0x9a')]('RECOG_CONFIDENCE()',_0xd96b('0xc2'));if(_0x27ab62[_0xd96b('0x9b')]===-0x1){return _0x27ab62;}var _0x1f8c80=this[_0xd96b('0x9a')](_0xd96b('0xac'),'LUMENVOX_ASR_TRANSCRIPT');if(_0x1f8c80['result']===-0x1){return _0x1f8c80;}var _0xeaaeb=this[_0xd96b('0x9a')](_0xd96b('0xc3'),_0xd96b('0xc4'));if(_0xeaaeb['result']===-0x1){return _0xeaaeb;}return this[_0xd96b('0x34')][_0xd96b('0xa6')](util['format']('Executed\x20command\x20MRCPRecog\x20%s',_0x2c6bb8));};AGIVertices['prototype'][_0xd96b('0xc5')]=function(_0x50d358){logger['info'](util[_0xd96b('0x95')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x50d358[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x50d358[_0xd96b('0xa9')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0xaa'));}var _0x18a894=_0x50d358['grammar'];if(this[_0xd96b('0xa3')](_0x50d358[_0xd96b('0x6f')])){_0x18a894+=','+_0x50d358[_0xd96b('0x6f')];}var _0x2629c7=this[_0xd96b('0x34')][_0xd96b('0xa4')](_0xd96b('0xc6'),_0x18a894);if(_0x2629c7[_0xd96b('0x9b')]===-0x1){return _0x2629c7;}var _0x45711c=this[_0xd96b('0x9a')](_0xd96b('0xab'),_0xd96b('0xc7'));if(_0x45711c[_0xd96b('0x9b')]===-0x1){return _0x45711c;}var _0x56d4ff=this[_0xd96b('0x9a')]('RECOG_INPUT()','SESTEK_ASR_TRANSCRIPT');if(_0x56d4ff[_0xd96b('0x9b')]===-0x1){return _0x56d4ff;}var _0x18eb39=this['getAndSetVariable'](_0xd96b('0xc3'),_0xd96b('0xc8'));if(_0x18eb39[_0xd96b('0x9b')]===-0x1){return _0x18eb39;}return this[_0xd96b('0x34')][_0xd96b('0xa6')](util['format']('Executed\x20command\x20MRCPRecog\x20%s',_0x18a894));};AGIVertices[_0xd96b('0x15')][_0xd96b('0xc9')]=function(_0x12a769){logger['info'](util['format'](_0xd96b('0xca'),_0x12a769[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x12a769[_0xd96b('0xcb')])){return this['channel'][_0xd96b('0x29')](_0x12a769,'no\x20database\x20selected');}var _0x12e94d=this[_0xd96b('0x1b')][_0xd96b('0x9f')](this,_0x12a769[_0xd96b('0xcb')]);if(!_0x12e94d){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x12a769,_0xd96b('0xcc'));}if(!this[_0xd96b('0xa3')](_0x12a769[_0xd96b('0x2c')])){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x12a769,_0xd96b('0xcd'));}var _0x27c1fd=_0x12a769[_0xd96b('0x2c')]['replace'](/(\r\n|\n|\r)/gm,'\x20');this['channel']['noop'](util['format'](_0xd96b('0xce'),_0x27c1fd));var _0x4772ce=this[_0xd96b('0xcf')][_0xd96b('0x9f')](this,_0x12e94d,_0x27c1fd);this[_0xd96b('0x9e')][_0xd96b('0x9f')](this,_0x12a769,_0x27c1fd);if(!this[_0xd96b('0xa3')](_0x12a769[_0xd96b('0xd0')])){return this[_0xd96b('0x34')]['noop'](_0xd96b('0xd1'));}var _0x534b2c=this['getVariable']['sync'](this,_0x12a769[_0xd96b('0xd0')]);if(!_0x534b2c){return this['channel'][_0xd96b('0x29')](_0x12a769,_0xd96b('0xd2'));}var _0x196c9d=this;_0x4772ce['forEach'](function(_0x4cc999,_0x4102a4){Object['keys'](_0x4cc999)[_0xd96b('0xd3')](function(_0x599c9c){_0x196c9d[_0xd96b('0x34')][_0xd96b('0x96')](util['format'](_0xd96b('0xd4'),_0x534b2c,_0x4102a4,_0x599c9c),_0x4cc999[_0x599c9c]);});});this['channel'][_0xd96b('0x96')](util[_0xd96b('0x95')](_0xd96b('0xd5'),_0x534b2c),_0x4772ce[_0xd96b('0x94')]);return this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0xd6'),_0x534b2c));};AGIVertices[_0xd96b('0x15')][_0xd96b('0xd7')]=function(_0x5a3f91){logger[_0xd96b('0xd8')](util[_0xd96b('0x95')](_0xd96b('0xd9'),_0x5a3f91[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x5a3f91[_0xd96b('0xda')])){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x5a3f91,_0xd96b('0xdb'));}var _0x38b1a4=this[_0xd96b('0x1c')][_0xd96b('0x9f')](this,_0x5a3f91['sip_id']);if(!_0x38b1a4){return this['channel'][_0xd96b('0x29')](_0x5a3f91,_0xd96b('0xdc'));}var _0x1e8276=this['channel'][_0xd96b('0xa4')](_0xd96b('0xdd'),[util[_0xd96b('0x95')](_0xd96b('0xde'),_0x38b1a4),_0x5a3f91['timeout'],_0x5a3f91['opts'],_0x5a3f91['url']]);if(_0x1e8276['result']===-0x1){return _0x1e8276;}return this[_0xd96b('0x34')][_0xd96b('0xa6')](util['format']('Executed\x20command\x20%s',_0xd96b('0xdd')));};AGIVertices[_0xd96b('0x15')][_0xd96b('0xdf')]=function(_0x4fd357){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0xe0'),_0x4fd357[_0xd96b('0xa2')]));if(!this['isConfigured'](_0x4fd357[_0xd96b('0x71')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0xe1'));}if(!this[_0xd96b('0xa3')](_0x4fd357[_0xd96b('0x59')])){return this[_0xd96b('0x34')]['noop'](_0xd96b('0xe2'));}this[_0xd96b('0x34')][_0xd96b('0xe3')]=!![];this[_0xd96b('0x9e')](_0x4fd357);this[_0xd96b('0x3d')](_0x4fd357[_0xd96b('0x59')],'in','','');this['channel'][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0xe4'),_0x4fd357['text']));var _0x448850=this[_0xd96b('0x70')]['sync'](this,_0x4fd357);if(_0x448850){for(var _0x29d50f in _0x448850){if(_0x448850['hasOwnProperty'](_0x29d50f)){this[_0xd96b('0x34')][_0xd96b('0x96')](util[_0xd96b('0x95')](_0xd96b('0xe5'),_0x29d50f['toUpperCase']()),_0x448850[_0x29d50f]);}}this[_0xd96b('0x3d')](_0x448850['speech'],_0xd96b('0xe6'),_0xd96b('0xdf'),'');return this[_0xd96b('0x34')][_0xd96b('0xa6')](util['format'](_0xd96b('0xe7'),_0x448850[_0xd96b('0xe8')]));}return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x4fd357,_0xd96b('0xe9'));};AGIVertices['prototype']['dialogflowV2']=function(_0x3120b1){logger['info'](util[_0xd96b('0x95')](_0xd96b('0xea'),_0x3120b1[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x3120b1['dialogflowV2_project_id'])){return this['channel'][_0xd96b('0xa6')](_0xd96b('0xeb'));}if(!this[_0xd96b('0xa3')](_0x3120b1[_0xd96b('0x74')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0xec'));}if(!this[_0xd96b('0xa3')](_0x3120b1[_0xd96b('0x75')])){return this[_0xd96b('0x34')]['noop'](_0xd96b('0xed'));}if(!this[_0xd96b('0xa3')](_0x3120b1['dialogflowV2_language'])){return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0xee'));}if(!this[_0xd96b('0xa3')](_0x3120b1['text'])){return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0xe2'));}this['channel'][_0xd96b('0xe3')]=!![];this[_0xd96b('0x9e')](_0x3120b1);this[_0xd96b('0x3d')](_0x3120b1[_0xd96b('0x59')],'in','','');this[_0xd96b('0x34')][_0xd96b('0xa6')](util['format'](_0xd96b('0xef'),_0x3120b1[_0xd96b('0x59')]));var _0x292af7=this[_0xd96b('0x72')][_0xd96b('0x9f')](this,_0x3120b1);if(_0x292af7){for(var _0x2b40f9 in _0x292af7){if(_0x292af7[_0xd96b('0x8b')](_0x2b40f9)){if(_0x2b40f9!==_0xd96b('0xf0')){this['channel']['setVariable'](util[_0xd96b('0x95')](_0xd96b('0xe5'),_0x2b40f9[_0xd96b('0xf1')]()),_0x292af7[_0x2b40f9]);}}}this['createSquareMessage'](_0x292af7[_0xd96b('0xe8')],_0xd96b('0xe6'),_0xd96b('0xf2'),_0x292af7[_0xd96b('0xf0')]);return this['channel'][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0xf3'),_0x292af7[_0xd96b('0xe8')]));}return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x3120b1,'DialogflowV2\x20is\x20unreachable');};AGIVertices[_0xd96b('0x15')][_0xd96b('0xf4')]=function(_0x7d0a9d){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0xf5'),_0x7d0a9d['label']));if(!this[_0xd96b('0xa3')](_0x7d0a9d[_0xd96b('0xf6')])){return this['channel']['noop'](_0xd96b('0xf7'));}if(!this[_0xd96b('0xa3')](_0x7d0a9d[_0xd96b('0xf8')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0xf9'));}if(!this[_0xd96b('0xa3')](_0x7d0a9d['password'])){return this['channel'][_0xd96b('0xa6')](_0xd96b('0xfa'));}if(!this['isConfigured'](_0x7d0a9d[_0xd96b('0xfb')])){return this['channel'][_0xd96b('0xa6')](_0xd96b('0xe2'));}this[_0xd96b('0x34')]['bot']=!![];this['createSquareDetailsReport'](_0x7d0a9d);this['createSquareMessage'](_0x7d0a9d[_0xd96b('0x59')],'in','','');this[_0xd96b('0x34')][_0xd96b('0xa6')](util['format']('Trying\x20SestekNDA:\x20%s',_0x7d0a9d[_0xd96b('0x59')]));var _0x387b47=this[_0xd96b('0x76')][_0xd96b('0x9f')](this,_0x7d0a9d);if(_0x387b47){for(var _0x50825e in _0x387b47){if(_0x387b47['hasOwnProperty'](_0x50825e)){this[_0xd96b('0x34')][_0xd96b('0x96')](util[_0xd96b('0x95')](_0xd96b('0xfc'),_0x50825e[_0xd96b('0xf1')]()),_0x387b47[_0x50825e]);}}this[_0xd96b('0x3d')](_0x387b47[_0xd96b('0xe8')],_0xd96b('0xe6'),_0xd96b('0xf4'),'');if(_0x387b47[_0xd96b('0xfd')]){this[_0xd96b('0x34')]['noop'](util[_0xd96b('0x95')](_0xd96b('0xfe'),_0x387b47[_0xd96b('0xfd')]));var _0x403a17=this[_0xd96b('0x34')][_0xd96b('0xff')](_0x387b47[_0xd96b('0xfd')]);try{fs[_0xd96b('0x100')](_0x387b47[_0xd96b('0xfd')]+_0xd96b('0x101'));}catch(_0x138632){logger['error'](_0x138632);}return _0x403a17;}else{return this[_0xd96b('0x34')]['noop'](util[_0xd96b('0x95')](_0xd96b('0x102'),_0x387b47[_0xd96b('0xe8')]));}}return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x7d0a9d,_0xd96b('0x103'));};AGIVertices[_0xd96b('0x15')][_0xd96b('0x104')]=function(_0x4725f0){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x105'),_0x4725f0['label']));return this['channel'][_0xd96b('0xa6')]('end');};AGIVertices['prototype'][_0xd96b('0x106')]=function(_0x3ee18f){logger[_0xd96b('0x2b')](util['format'](_0xd96b('0x107'),_0x3ee18f['label']));var _0x53b792='';if(_0x3ee18f[_0xd96b('0x108')]){if(!this[_0xd96b('0xa3')](_0x3ee18f['trunk_id'])){return this['channel'][_0xd96b('0x29')](_0x3ee18f,_0xd96b('0x109'));}else{var _0x2a3472=parseInt(_0x3ee18f[_0xd96b('0x108')],0xa);if(isNaN(_0x2a3472)){_0x53b792=_0x3ee18f[_0xd96b('0x108')];}else{_0x53b792=this[_0xd96b('0x1e')][_0xd96b('0x9f')](this,_0x3ee18f['trunk_id']);if(!_0x53b792){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x3ee18f,_0xd96b('0x10a'));}}}}else if(_0x3ee18f['trunk_name']){_0x53b792=_0x3ee18f[_0xd96b('0x10b')];}else{return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x3ee18f,_0xd96b('0x109'));}var _0x4290ba=this[_0xd96b('0x34')][_0xd96b('0xa4')]('DIAL',[util[_0xd96b('0x95')](_0xd96b('0x10c'),_0x53b792,_0x3ee18f[_0xd96b('0x44')]),_0x3ee18f['timeout'],_0x3ee18f[_0xd96b('0x10d')],_0x3ee18f[_0xd96b('0x61')]]);if(_0x4290ba[_0xd96b('0x9b')]===-0x1){return _0x4290ba;}return this['channel'][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x10e'),'DIAL'));};AGIVertices[_0xd96b('0x15')]['finally']=function(_0x1ec52d){logger['info'](util[_0xd96b('0x95')]('Enter\x20in\x20FINALLY\x20(%s)\x20block',_0x1ec52d[_0xd96b('0xa2')]));return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0x10f'));};AGIVertices[_0xd96b('0x15')][_0xd96b('0xe')]=function(_0x3b2563){logger['info'](util['format'](_0xd96b('0x110'),_0x3b2563[_0xd96b('0xa2')]));if(_0x3b2563[_0xd96b('0xa0')]===0x0){return this[_0xd96b('0x9d')](_0x3b2563);}_0x3b2563['retry']-=0x1;if(!this['isConfigured'](_0x3b2563[_0xd96b('0x111')])){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x3b2563,_0xd96b('0x112'));}var _0x3dca65=this[_0xd96b('0x20')][_0xd96b('0x9f')](this,_0x3b2563[_0xd96b('0x111')]);if(!_0x3dca65){return this[_0xd96b('0x34')]['error'](_0x3b2563,_0xd96b('0x113'));}if(!this['isConfigured'](_0x3b2563['variable_id'])){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0xd96b('0xd1'));}var _0x473dc3=this['channel'][_0xd96b('0x114')](_0x3dca65,_0x3b2563[_0xd96b('0x115')],_0x3b2563[_0xd96b('0x116')]);var _0x5250b9=_0x473dc3[_0xd96b('0x9b')]?_0x473dc3['result']['toString']():'';logger['info'](_0xd96b('0x117'),JSON[_0xd96b('0x6b')](_0x473dc3));if(_0x473dc3[_0xd96b('0x9b')]===-0x1){this[_0xd96b('0x9e')][_0xd96b('0x9f')](this,_0x3b2563,_0x5250b9);return _0x473dc3;}else if(_0x473dc3[_0xd96b('0x99')]===_0xd96b('0x63')){_0x473dc3[_0xd96b('0x9b')]=_0x5250b9[_0xd96b('0x94')]>=parseInt(_0x3b2563[_0xd96b('0x118')])?'x':'i';}else{_0x473dc3[_0xd96b('0x9b')]=_0x5250b9[_0xd96b('0x94')]>=parseInt(_0x3b2563[_0xd96b('0x118')])&&_0x5250b9['length']<=parseInt(_0x3b2563['maxdigit'])?'x':'i';}var _0x28becf=this['getVariable']['sync'](this,_0x3b2563[_0xd96b('0xd0')]);if(!_0x28becf){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x3b2563,'no\x20variable\x20found');}this[_0xd96b('0x34')][_0xd96b('0x96')](_0x28becf,_0x5250b9);if(this[_0xd96b('0xa3')](_0x3b2563[_0xd96b('0x119')])){var _0x195650=parseInt(_0x3b2563['hiddendigitsnum'],0xa);var _0x1dc073=rs[_0xd96b('0x11a')]({'charset':'*','length':_0x195650});var _0x52406a=_0x5250b9[_0xd96b('0x94')];if(_0x52406a>0x0){if(_0x52406a>_0x195650){this[_0xd96b('0x9e')]['sync'](this,_0x3b2563,_0x3b2563[_0xd96b('0x11b')]==='first'?_0x1dc073+_0x5250b9['substr'](_0x195650):_0x5250b9[_0xd96b('0x11c')](0x0,_0x52406a-_0x195650)+_0x1dc073);}else{this['createSquareDetailsReport'][_0xd96b('0x9f')](this,_0x3b2563,rs[_0xd96b('0x11a')]({'charset':'*','length':_0x52406a}));}}else{this[_0xd96b('0x9e')][_0xd96b('0x9f')](this,_0x3b2563,'');}}else{this[_0xd96b('0x9e')]['sync'](this,_0x3b2563,_0x5250b9);}return _0x473dc3;};AGIVertices[_0xd96b('0x15')][_0xd96b('0xf')]=function(_0x1a806d){logger[_0xd96b('0x2b')](util['format'](_0xd96b('0x11d'),_0x1a806d[_0xd96b('0xa2')]));return this[_0xd96b('0xe')](_0x1a806d);};AGIVertices[_0xd96b('0x15')][_0xd96b('0x11e')]=function(_0x7e63a6){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x7e63a6['label']));this[_0xd96b('0x9e')][_0xd96b('0x9f')](this,_0x7e63a6,_0x7e63a6[_0xd96b('0x11f')]);return this['channel'][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x120'),_0x7e63a6[_0xd96b('0x11f')]));};AGIVertices[_0xd96b('0x15')][_0xd96b('0x121')]=function(_0x276a8a){logger['info'](util[_0xd96b('0x95')](_0xd96b('0x122'),_0x276a8a[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x276a8a['aws_access_key_id'])||!this['isConfigured'](_0x276a8a[_0xd96b('0x83')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0x123'));}if(!this[_0xd96b('0xa3')](_0x276a8a['text'])){return this[_0xd96b('0x34')][_0xd96b('0xa6')]('no\x20text\x20configured');}this[_0xd96b('0x34')]['noop'](util[_0xd96b('0x95')]('Trying\x20aws\x20Polly\x20%s',_0x276a8a[_0xd96b('0x59')]));var _0x469c82=this[_0xd96b('0x7d')][_0xd96b('0x9f')](this,_0x276a8a);if(_0x469c82){this['channel']['noop'](util[_0xd96b('0x95')](_0xd96b('0x124'),_0x469c82));var _0x22f3f4=this[_0xd96b('0x34')][_0xd96b('0xff')](_0x469c82);try{fs[_0xd96b('0x100')](_0x469c82+'.wav');}catch(_0xdd8962){logger['error'](_0xdd8962);}return _0x22f3f4;}return this[_0xd96b('0x34')]['error'](_0x276a8a,_0xd96b('0x125'));};AGIVertices[_0xd96b('0x15')][_0xd96b('0x126')]=function(_0x55cd24){logger['info'](util[_0xd96b('0x95')](_0xd96b('0x127'),_0x55cd24['label']));if(!this['isConfigured'](_0x55cd24[_0xd96b('0x82')])||!this[_0xd96b('0xa3')](_0x55cd24[_0xd96b('0x83')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')]('no\x20valid\x20credentials\x20configured');}if(!this[_0xd96b('0xa3')](_0x55cd24[_0xd96b('0x128')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0x129'));}if(!this['isConfigured'](_0x55cd24[_0xd96b('0x59')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')]('no\x20text\x20configured');}this['channel'][_0xd96b('0xe3')]=!![];this[_0xd96b('0x9e')](_0x55cd24);this['createSquareMessage'](_0x55cd24[_0xd96b('0x59')],'in','','');this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x12a'),_0x55cd24[_0xd96b('0x59')]));var _0x166946=this[_0xd96b('0x81')]['sync'](this,_0x55cd24);if(_0x166946){for(var _0x5ef52c in _0x166946){if(_0x166946[_0xd96b('0x8b')](_0x5ef52c)&&_[_0xd96b('0x12b')](_0x166946[_0x5ef52c])){this[_0xd96b('0x34')][_0xd96b('0x96')](util['format']('AWS_LEX_%s',_0x5ef52c[_0xd96b('0xf1')]()),_0x166946[_0x5ef52c]);}}if(_['isNil'](_0x166946['message'])){return this['channel'][_0xd96b('0xa6')]('Amazon\x20Lex\x20ready\x20for\x20fulfillment');}else{this[_0xd96b('0x3d')](_0x166946[_0xd96b('0x12c')],_0xd96b('0xe6'),_0xd96b('0x12d'),'');return this[_0xd96b('0x34')]['noop'](util['format']('Amazon\x20Lex\x20Result\x20%s',_0x166946[_0xd96b('0x12c')]));}}return this[_0xd96b('0x34')]['error'](_0x55cd24,_0xd96b('0x12e'));};AGIVertices[_0xd96b('0x15')]['googleasr']=function(_0x2f6e60){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x12f'),_0x2f6e60[_0xd96b('0xa2')],_0x2f6e60['timeout']));if(!this['isConfigured'](_0x2f6e60['key'])){return this[_0xd96b('0x34')]['noop'](_0xd96b('0xe1'));}var _0x24116f=_0xd96b('0x130');var _0x35bacf=util[_0xd96b('0x95')](_0xd96b('0x131'),FILES_PATH,rs[_0xd96b('0x11a')](0x4));var _0x3251df=util[_0xd96b('0x95')](_0xd96b('0x93'),_0x35bacf,_0x24116f);var _0x34177d=!![];if(_0x2f6e60[_0xd96b('0x132')]===_0xd96b('0x133')){_0x34177d=![];}var _0x3666f6=this[_0xd96b('0x34')][_0xd96b('0x134')](_0x35bacf,_0x24116f,_0x2f6e60[_0xd96b('0x135')],_0x2f6e60[_0xd96b('0x63')],undefined,_0x34177d);if(_0x3666f6[_0xd96b('0x9b')]!==-0x1){this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x136'),_0x3251df));var _0xdd1e7f=this[_0xd96b('0x85')][_0xd96b('0x9f')](this,_0x2f6e60,_0x3251df);if(_0xdd1e7f){for(var _0x3ffda1 in _0xdd1e7f){if(_0xdd1e7f['hasOwnProperty'](_0x3ffda1)){this[_0xd96b('0x34')]['setVariable'](util[_0xd96b('0x95')](_0xd96b('0x137'),_0x3ffda1[_0xd96b('0xf1')]()),_0xdd1e7f[_0x3ffda1]);}}return this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x138'),JSON['stringify'](_0xdd1e7f)));}}return _0x3666f6;};AGIVertices['prototype'][_0xd96b('0x139')]=function(_0x4a95d5){logger['info'](util['format'](_0xd96b('0x13a'),_0x4a95d5[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x4a95d5[_0xd96b('0x88')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0x13b'));}if(!this[_0xd96b('0xa3')](_0x4a95d5[_0xd96b('0x89')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0x13c'));}var _0x1aefe7=_0xd96b('0x130');var _0x336bac=util[_0xd96b('0x95')]('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x550116=util['format'](_0xd96b('0x93'),_0x336bac,_0x1aefe7);var _0x350d14=!![];if(_0x4a95d5['beep']==='NOBEEP'){_0x350d14=![];}var _0x38f4d9=this['channel'][_0xd96b('0x134')](_0x336bac,_0x1aefe7,_0x4a95d5[_0xd96b('0x135')],_0x4a95d5[_0xd96b('0x63')],undefined,_0x350d14);if(_0x38f4d9[_0xd96b('0x9b')]!==-0x1){this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x13d'),_0x550116));var _0x4b1d11=this[_0xd96b('0x87')][_0xd96b('0x9f')](this,_0x4a95d5,_0x550116);if(_0x4b1d11){for(var _0x2e3b09 in _0x4b1d11){if(_0x4b1d11['hasOwnProperty'](_0x2e3b09)){this[_0xd96b('0x34')][_0xd96b('0x96')](util['format'](_0xd96b('0x13e'),_0x2e3b09['toUpperCase']()),_0x4b1d11[_0x2e3b09]);}}return this[_0xd96b('0x34')]['noop'](util['format']('TildeASR\x20Result\x20%s',JSON[_0xd96b('0x6b')](_0x4b1d11)));}}return _0x38f4d9;};AGIVertices['prototype'][_0xd96b('0x13f')]=function(_0x124431){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x140'),_0x124431[_0xd96b('0xa2')]));return this[_0xd96b('0x34')]['continueAt'](_0x124431[_0xd96b('0x39')],_0x124431[_0xd96b('0x3a')],_0x124431[_0xd96b('0x3b')]);};AGIVertices[_0xd96b('0x15')][_0xd96b('0x141')]=function(_0x461c0a){logger['info'](util[_0xd96b('0x95')](_0xd96b('0x142'),_0x461c0a['label']));if(!this[_0xd96b('0xa3')](_0x461c0a[_0xd96b('0x143')])){return this['channel'][_0xd96b('0x29')](_0x461c0a,'no\x20condition\x20configured');}try{var _0x2347c4=eval(_0x461c0a['condition'])?'true':_0xd96b('0x144');this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')]('EVAL\x20CONDITION\x20%s\x20%s',_0x461c0a[_0xd96b('0x143')],_0x2347c4));return{'code':0xc8,'result':_0x2347c4};}catch(_0x408a0f){return{'code':0xc8,'result':_0xd96b('0x144')};}};AGIVertices[_0xd96b('0x15')][_0xd96b('0x145')]=function(_0x4bfefd){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x146'),_0x4bfefd['label']));if(!this[_0xd96b('0xa3')](_0x4bfefd[_0xd96b('0x147')])){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x4bfefd,_0xd96b('0x148'));}var _0x302e9b=this['getIntervals'][_0xd96b('0x9f')](this,_0x4bfefd[_0xd96b('0x147')]);if(!_0x302e9b){return this['channel']['error'](_0x4bfefd,_0xd96b('0x149'));}for(var _0x1be3b8=0x0;_0x1be3b8<_0x302e9b[_0xd96b('0x94')];_0x1be3b8+=0x1){var _0x521a94=this[_0xd96b('0x34')][_0xd96b('0x14a')](util[_0xd96b('0x95')](_0xd96b('0x14b'),_0x302e9b[_0x1be3b8]));if(_0x521a94['result']===-0x1){return _0x521a94;}logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x14c'),_0x302e9b[_0x1be3b8],_0x521a94[_0xd96b('0x99')]));if(_0x521a94['extra']==='true'){logger[_0xd96b('0x2b')](util['format'](_0xd96b('0x14c'),_0x302e9b[_0x1be3b8],'true'));this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x14c'),_0x302e9b[_0x1be3b8],_0xd96b('0x14d')));return{'code':0xc8,'result':_0xd96b('0x14d')};}else{logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x14c'),_0x302e9b[_0x1be3b8],_0xd96b('0x144')));this[_0xd96b('0x34')][_0xd96b('0xa6')](util['format']('IFTIME\x20%s\x20%s',_0x302e9b[_0x1be3b8],'false'));}}return{'code':0xc8,'result':_0xd96b('0x144')};};AGIVertices[_0xd96b('0x15')][_0xd96b('0x14e')]=function(_0x412e41){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x412e41[_0xd96b('0xa2')]));return this['channel']['hangup']();};AGIVertices[_0xd96b('0x15')]['ispeechasr']=function(_0x4a5098){logger[_0xd96b('0x2b')](util['format'](_0xd96b('0x14f'),_0x4a5098[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x4a5098[_0xd96b('0x71')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0xe1'));}var _0x4cd069='wav';var _0x32a6a5=util[_0xd96b('0x95')]('%s/recordings/%s',FILES_PATH,rs[_0xd96b('0x11a')](0x4));var _0x211ed4=util[_0xd96b('0x95')](_0xd96b('0x93'),_0x32a6a5,_0x4cd069);var _0x1e95ec=!![];if(_0x4a5098['beep']===_0xd96b('0x133')){_0x1e95ec=![];}var _0x210789=this[_0xd96b('0x34')][_0xd96b('0x134')](_0x32a6a5,_0x4cd069,_0x4a5098[_0xd96b('0x135')],_0x4a5098[_0xd96b('0x63')],undefined,_0x1e95ec);if(_0x210789[_0xd96b('0x9b')]!==-0x1){this['channel'][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x150'),_0x211ed4));var _0x215c1d=this[_0xd96b('0x7a')]['sync'](this,_0x4a5098,_0x211ed4);if(_0x215c1d){for(var _0x39b5e3 in _0x215c1d){if(_0x215c1d[_0xd96b('0x8b')](_0x39b5e3)){this[_0xd96b('0x34')]['setVariable'](util[_0xd96b('0x95')](_0xd96b('0x151'),_0x39b5e3['toUpperCase']()),_0x215c1d[_0x39b5e3]);}}return this['channel'][_0xd96b('0xa6')](util[_0xd96b('0x95')]('IspeechASR\x20Result\x20%s',JSON['stringify'](_0x215c1d)));}}return _0x210789;};AGIVertices['prototype'][_0xd96b('0x152')]=function(_0x536521){logger['info'](util[_0xd96b('0x95')](_0xd96b('0x153'),_0x536521['label']));if(!this[_0xd96b('0xa3')](_0x536521['key'])){return this[_0xd96b('0x34')][_0xd96b('0xa6')]('no\x20key\x20configured');}if(!this[_0xd96b('0xa3')](_0x536521[_0xd96b('0x59')])){return this['channel'][_0xd96b('0xa6')](_0xd96b('0xe2'));}this[_0xd96b('0x34')]['noop'](util[_0xd96b('0x95')](_0xd96b('0x154'),_0x536521[_0xd96b('0x59')]));var _0x31fb4a=this[_0xd96b('0x77')]['sync'](this,_0x536521);if(_0x31fb4a){this[_0xd96b('0x34')]['noop'](util[_0xd96b('0x95')](_0xd96b('0x150'),_0x31fb4a));var _0x147321=this[_0xd96b('0x34')][_0xd96b('0xff')](_0x31fb4a,_0x536521[_0xd96b('0x135')]);try{fs[_0xd96b('0x100')](_0x31fb4a+_0xd96b('0x101'));}catch(_0x547c1c){logger[_0xd96b('0x29')](_0x547c1c);}return _0x147321;}return this[_0xd96b('0x34')]['error'](_0x536521,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices[_0xd96b('0x15')][_0xd96b('0x155')]=function(_0x441e40){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x156'),_0x441e40[_0xd96b('0xa2')]));if(!this['isConfigured'](_0x441e40[_0xd96b('0x157')])){return this[_0xd96b('0x34')]['error'](_0x441e40,'no\x20find\x20by\x20configured');}logger['info'](util[_0xd96b('0x95')](_0xd96b('0x158'),this[_0xd96b('0x34')][_0xd96b('0x36')],_0x441e40[_0xd96b('0x157')]));var _0x3c6e45=this[_0xd96b('0x4f')][_0xd96b('0x9f')](this,_0x441e40[_0xd96b('0x157')]);if(_0x3c6e45){logger[_0xd96b('0x2b')](util['format'](_0xd96b('0x159'),this['channel'][_0xd96b('0x36')],_0x441e40['findBy']));this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xd96b('0x34')][_0xd96b('0x36')],_0x441e40[_0xd96b('0x157')]));return{'code':0xc8,'result':_0xd96b('0x15a')};}else{logger[_0xd96b('0x2b')](util[_0xd96b('0x95')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xd96b('0x34')][_0xd96b('0x36')],_0x441e40[_0xd96b('0x157')]));this[_0xd96b('0x34')][_0xd96b('0xa6')](util['format'](_0xd96b('0x15b'),this['channel'][_0xd96b('0x36')],_0x441e40[_0xd96b('0x157')]));return{'code':0xc8,'result':_0xd96b('0x15c')};}};AGIVertices[_0xd96b('0x15')][_0xd96b('0x15d')]=function(_0x33502d){logger[_0xd96b('0x2b')](util['format'](_0xd96b('0x15e'),_0x33502d['label']));if(!this[_0xd96b('0xa3')](_0x33502d[_0xd96b('0x157')])){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x33502d,_0xd96b('0x15f'));}logger['info'](util[_0xd96b('0x95')](_0xd96b('0x158'),this[_0xd96b('0x34')][_0xd96b('0x36')],_0x33502d[_0xd96b('0x157')]));var _0x4ea8a2=this['agentLogout'][_0xd96b('0x9f')](this,_0x33502d[_0xd96b('0x157')]);if(_0x4ea8a2){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x159'),this[_0xd96b('0x34')][_0xd96b('0x36')],_0x33502d[_0xd96b('0x157')]));this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x159'),this[_0xd96b('0x34')][_0xd96b('0x36')],_0x33502d[_0xd96b('0x157')]));return{'code':0xc8,'result':'success'};}else{logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x15b'),this[_0xd96b('0x34')][_0xd96b('0x36')],_0x33502d[_0xd96b('0x157')]));this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x15b'),this['channel'][_0xd96b('0x36')],_0x33502d['findBy']));return{'code':0xc8,'result':_0xd96b('0x15c')};}};AGIVertices[_0xd96b('0x15')][_0xd96b('0x160')]=function(_0x9e014a){logger[_0xd96b('0x2b')](util['format'](_0xd96b('0x161'),_0x9e014a[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x9e014a[_0xd96b('0x162')])){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x9e014a,_0xd96b('0x163'));}this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x164'),_0x9e014a['operation']));var _0x31674e=eval(_0x9e014a['operation']);if(!this[_0xd96b('0xa3')](_0x9e014a[_0xd96b('0xd0')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0xd1'));}var _0x41b7f6=this[_0xd96b('0x14a')][_0xd96b('0x9f')](this,_0x9e014a[_0xd96b('0xd0')]);if(!_0x41b7f6){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x9e014a,_0xd96b('0xd2'));}if(_[_0xd96b('0x90')](_0x31674e)){var _0x2076f7=this;_0x31674e[_0xd96b('0xd3')](function(_0xdcea7f,_0x35ab74){_0x2076f7[_0xd96b('0x34')][_0xd96b('0x96')](util[_0xd96b('0x95')](_0xd96b('0x165'),_0x41b7f6,_0x35ab74),_0xdcea7f);});return this[_0xd96b('0x34')]['noop'](util[_0xd96b('0x95')](_0xd96b('0x166'),_0x41b7f6));}else{return this[_0xd96b('0x34')][_0xd96b('0x96')](_0x41b7f6,_0x31674e);}};AGIVertices[_0xd96b('0x15')][_0xd96b('0xd')]=function(_0x54a6c8){logger['info'](util[_0xd96b('0x95')](_0xd96b('0x167'),_0x54a6c8[_0xd96b('0xa2')]));if(_0x54a6c8[_0xd96b('0xa0')]===0x0){return this[_0xd96b('0x9d')](_0x54a6c8);}_0x54a6c8[_0xd96b('0xa0')]-=0x1;if(!this['isConfigured'](_0x54a6c8['file_id'])){return this[_0xd96b('0x34')]['error'](_0x54a6c8,_0xd96b('0x112'));}var _0x29559c=this[_0xd96b('0x20')][_0xd96b('0x9f')](this,_0x54a6c8[_0xd96b('0x111')]);if(!_0x29559c){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x54a6c8,_0xd96b('0x113'));}var _0x4950d3=this[_0xd96b('0x34')][_0xd96b('0x114')](_0x29559c,_0x54a6c8[_0xd96b('0x115')],_0x54a6c8['digit']);var _0x1d953d=_0x4950d3['result'];if(_0x4950d3['result']===-0x1){this[_0xd96b('0x9e')][_0xd96b('0x9f')](this,_0x54a6c8,'-1');return _0x4950d3;}else if(_0x4950d3[_0xd96b('0x99')]===_0xd96b('0x63')){_0x4950d3[_0xd96b('0x9b')]=_0x4950d3['result']['length']>0x0?_0x4950d3[_0xd96b('0x9b')]:'t';}else if(_[_0xd96b('0x3f')](_0x4950d3['result'])){_0x4950d3[_0xd96b('0x9b')]='#';_0x1d953d='#';}if(!this[_0xd96b('0xa3')](_0x54a6c8['variable_id'])){this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0xd1'));}else{var _0x93701a=this['getVariable'][_0xd96b('0x9f')](this,_0x54a6c8[_0xd96b('0xd0')]);if(!_0x93701a){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x54a6c8,'no\x20variable\x20found');}this[_0xd96b('0x34')]['setVariable'](_0x93701a,_0x1d953d);}this[_0xd96b('0x9e')][_0xd96b('0x9f')](this,_0x54a6c8,_0x1d953d);return _0x4950d3;};AGIVertices[_0xd96b('0x15')][_0xd96b('0xa6')]=function(_0x59c6ae){logger['info'](util[_0xd96b('0x95')](_0xd96b('0x168'),_0x59c6ae[_0xd96b('0xa2')]));return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0x59c6ae['output']||_0x59c6ae[_0xd96b('0xa2')]);};AGIVertices[_0xd96b('0x15')][_0xd96b('0x169')]=function(_0x463651){logger[_0xd96b('0x2b')](util['format']('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x463651[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x463651[_0xd96b('0x157')])){return this[_0xd96b('0x34')]['error'](_0x463651,_0xd96b('0x15f'));}logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x158'),this[_0xd96b('0x34')]['callerid'],_0x463651['findBy']));var _0x2c8089=this[_0xd96b('0x49')][_0xd96b('0x9f')](this,_0x463651[_0xd96b('0x16a')]);var _0x348981=this['agentPause'][_0xd96b('0x9f')](this,_0x463651[_0xd96b('0x157')],_0x2c8089);if(_0x348981){logger['info'](util[_0xd96b('0x95')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xd96b('0x34')][_0xd96b('0x36')],_0x463651[_0xd96b('0x157')]));this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0xd96b('0x36')],_0x463651[_0xd96b('0x157')]));return{'code':0xc8,'result':'success'};}else{logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x15b'),this['channel']['callerid'],_0x463651[_0xd96b('0x157')]));this[_0xd96b('0x34')][_0xd96b('0xa6')](util['format'](_0xd96b('0x159'),this[_0xd96b('0x34')][_0xd96b('0x36')],_0x463651[_0xd96b('0x157')]));return{'code':0xc8,'result':_0xd96b('0x15c')};}};AGIVertices[_0xd96b('0x15')][_0xd96b('0x16b')]=function(_0xf792f0){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x16c'),_0xf792f0[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0xf792f0[_0xd96b('0x111')])){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0xf792f0,_0xd96b('0x112'));}var _0xb42cf0=this[_0xd96b('0x20')][_0xd96b('0x9f')](this,_0xf792f0[_0xd96b('0x111')]);if(!_0xb42cf0){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0xf792f0,'no\x20file\x20audio\x20found');}var _0x101595=this[_0xd96b('0x34')][_0xd96b('0xa4')](_0xd96b('0x16d'),[_0xb42cf0,_0xf792f0[_0xd96b('0x10d')]]);if(_0x101595['result']===-0x1){return _0x101595;}return this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0xbc'),_0xd96b('0x16d'),_0xb42cf0));};AGIVertices['prototype'][_0xd96b('0x16e')]=function(_0x27b575){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x16f'),_0x27b575[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x27b575['queue_id'])){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x27b575,_0xd96b('0x170'));}var _0x5823b4='';var _0x12a3de=parseInt(_0x27b575['queue_id'],0xa);if(isNaN(_0x12a3de)){_0x5823b4=_0x27b575['queue_id'];}else{_0x5823b4=this['getVoiceQueue']['sync'](this,_0x27b575[_0xd96b('0x171')]);if(!_0x5823b4){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x27b575,'no\x20queue\x20found');}}var _0x525e70='';if(this[_0xd96b('0xa3')](_0x27b575[_0xd96b('0x111')])){var _0x45b056=this['getSound'][_0xd96b('0x9f')](this,_0x27b575[_0xd96b('0x111')]);if(_0x45b056){_0x525e70=_0x45b056;}}this[_0xd96b('0x9e')][_0xd96b('0x9f')](this,_0x27b575,_0x5823b4);if(_0x27b575[_0xd96b('0x10d')]['indexOf']('x')<0x0){_0x27b575[_0xd96b('0x10d')]+='x';}if(_0x27b575[_0xd96b('0x10d')][_0xd96b('0x172')]('X')<0x0){_0x27b575[_0xd96b('0x10d')]+='X';}this[_0xd96b('0x34')][_0xd96b('0x96')](_0xd96b('0x173'),_0x5823b4?_0x5823b4['toLowerCase']():'');var _0x4f77f6=this[_0xd96b('0x34')][_0xd96b('0xa4')](_0xd96b('0x174'),[_0x5823b4,_0x27b575['opts'],_0x27b575[_0xd96b('0x61')],_0x525e70,_0x27b575[_0xd96b('0x63')],_0x27b575[_0xd96b('0x7')],_0x27b575['macro'],_0x27b575[_0xd96b('0x175')],'',_0x27b575[_0xd96b('0x176')]]);if(_0x4f77f6[_0xd96b('0x9b')]===-0x1){return _0x4f77f6;}return this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')]('Executed\x20command\x20%s\x20%s','QUEUE',_0x5823b4));};AGIVertices[_0xd96b('0x15')]['record']=function(_0x19ae33){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x177'),_0x19ae33[_0xd96b('0xa2')]));var _0x51bb91=_0x19ae33['recordingFormat']||_0xd96b('0x130');var _0x16d92c=util[_0xd96b('0x95')](_0xd96b('0x178'),this[_0xd96b('0x34')][_0xd96b('0x38')],rs[_0xd96b('0x11a')](0x5));var _0x4f3338=util[_0xd96b('0x95')]('%s/recordings/%s.%s',FILES_PATH,_0x16d92c,_0x51bb91);var _0x3874ee=util[_0xd96b('0x95')](_0xd96b('0x131'),FILES_PATH,_0x16d92c);this[_0xd96b('0x37')][_0xd96b('0x9f')](this,_0x19ae33,_0x16d92c,_0x4f3338);this[_0xd96b('0x34')][_0xd96b('0x96')](_0xd96b('0x179'),_0x16d92c);logger[_0xd96b('0x2b')](_0xd96b('0x17a'),_0x3874ee,_0x51bb91,_0x19ae33['escape_digits'],_0x19ae33[_0xd96b('0x63')]);return this[_0xd96b('0x34')][_0xd96b('0x134')](_0x3874ee,_0x51bb91,_0x19ae33[_0xd96b('0x17b')],_0x19ae33[_0xd96b('0x63')],undefined,!![]);};AGIVertices[_0xd96b('0x15')][_0xd96b('0x17c')]=function(_0x41b2a5){logger['info'](util['format'](_0xd96b('0x17d'),_0x41b2a5[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x41b2a5[_0xd96b('0x61')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0x17e'));}var _0x501cef=this[_0xd96b('0x17f')][_0xd96b('0x9f')](this,_0x41b2a5);logger['info'](util[_0xd96b('0x95')](_0xd96b('0x180'),util[_0xd96b('0x181')](_0x501cef,{'showHidden':![],'depth':null})));if(!this[_0xd96b('0xa3')](_0x41b2a5[_0xd96b('0xd0')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0x182'));}var _0xb0aa2a=this[_0xd96b('0x14a')][_0xd96b('0x9f')](this,_0x41b2a5[_0xd96b('0xd0')]);if(!_0xb0aa2a){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x41b2a5,_0xd96b('0xd2'));}this['channel'][_0xd96b('0x96')](util['format'](_0xd96b('0x183'),_0xb0aa2a),_0x501cef[_0xd96b('0x6c')]?_0x501cef[_0xd96b('0x6c')]:_0xd96b('0x184'));this[_0xd96b('0x34')][_0xd96b('0x96')](util[_0xd96b('0x95')]('%s_STATUS_MESSAGE',_0xb0aa2a),_0x501cef[_0xd96b('0x6d')]?_0x501cef[_0xd96b('0x6d')]:'OK');if(_0x501cef[_0xd96b('0x66')]){try{this['saveRestApiResult'](_0x501cef[_0xd96b('0x66')],_0xb0aa2a);}catch(_0x39b876){logger[_0xd96b('0x29')](util[_0xd96b('0x95')](_0xd96b('0x185'),_0xb0aa2a));}}return this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')]('variable\x20%s\x20set',_0xb0aa2a));};AGIVertices[_0xd96b('0x15')][_0xd96b('0x186')]=function(_0x5a93fe){logger[_0xd96b('0x2b')](util['format'](_0xd96b('0x187'),_0x5a93fe[_0xd96b('0xa2')]));return this['channel']['sayDigits'](_0x5a93fe[_0xd96b('0x188')]['replace'](/\s+/g,''),_0x5a93fe[_0xd96b('0x17b')]);};AGIVertices[_0xd96b('0x15')][_0xd96b('0x189')]=function(_0x47ef39){logger[_0xd96b('0x2b')](util['format'](_0xd96b('0x18a'),_0x47ef39[_0xd96b('0xa2')]));return this[_0xd96b('0x34')][_0xd96b('0x18b')](_0x47ef39[_0xd96b('0x18c')][_0xd96b('0x55')](/\s+/g,''),_0x47ef39[_0xd96b('0x17b')]);};AGIVertices[_0xd96b('0x15')][_0xd96b('0x18d')]=function(_0x237f76){logger[_0xd96b('0x2b')](util['format'](_0xd96b('0x18e'),_0x237f76[_0xd96b('0xa2')]));return this[_0xd96b('0x34')][_0xd96b('0x18f')](_0x237f76[_0xd96b('0x59')],_0x237f76[_0xd96b('0x17b')]);};AGIVertices[_0xd96b('0x15')][_0xd96b('0x190')]=function(_0x4674e3){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x191'),_0x4674e3[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x4674e3[_0xd96b('0x192')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0x193'));}var _0x1f9496=this[_0xd96b('0x23')][_0xd96b('0x9f')](this,_0x4674e3['account_id']);if(!_0x1f9496||!_0x1f9496[_0xd96b('0x194')]){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x4674e3,_0xd96b('0x195'));}var _0x44be14={'from':util[_0xd96b('0x95')](_0xd96b('0x196'),_0x1f9496['name'],_0x1f9496[_0xd96b('0x197')]||_0x1f9496[_0xd96b('0x194')]['user']),'to':_0x4674e3['to']||'','cc':_0x4674e3['cc']||'','bcc':_0x4674e3[_0xd96b('0x198')]||'','subject':_0x4674e3['subject'],'html':_0x4674e3[_0xd96b('0x59')],'text':_0x4674e3[_0xd96b('0x59')]};var _0x3fbfd5={'tls':{'rejectUnauthorized':![]}};if(_0x1f9496[_0xd96b('0x194')][_0xd96b('0x199')]){_0x3fbfd5[_0xd96b('0x199')]=_0x1f9496[_0xd96b('0x194')][_0xd96b('0x199')];}else{_0x3fbfd5[_0xd96b('0x19a')]=_0x1f9496[_0xd96b('0x194')]['host'];_0x3fbfd5[_0xd96b('0x19b')]=_0x1f9496[_0xd96b('0x194')]['port'];_0x3fbfd5[_0xd96b('0x19c')]=_0x1f9496[_0xd96b('0x194')][_0xd96b('0x19c')];}if(_0x1f9496[_0xd96b('0x194')]['authentication']){_0x3fbfd5['auth']={'user':_0x1f9496['Smtp'][_0xd96b('0x19d')],'pass':_0x1f9496[_0xd96b('0x194')][_0xd96b('0x19e')]};}if(this[_0xd96b('0xa3')](_0x4674e3[_0xd96b('0x19f')])){}logger[_0xd96b('0xd8')](_0xd96b('0x1a0'),JSON[_0xd96b('0x6b')](_0x44be14));this[_0xd96b('0x9e')]['sync'](this,_0x4674e3,_0x4674e3[_0xd96b('0x192')]);this['channel'][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x1a1'),_0x1f9496[_0xd96b('0x14')]));this['sendMailMessage']['sync'](this,_0x3fbfd5,_0x44be14);return this['channel']['noop'](_0xd96b('0x1a2'));};AGIVertices[_0xd96b('0x15')][_0xd96b('0x1a3')]=function(_0x53d157){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x1a4'),_0x53d157[_0xd96b('0xa2')]));return this[_0xd96b('0x34')][_0xd96b('0xa6')]('SENDFAX\x20block\x20not\x20implemented');};AGIVertices['prototype'][_0xd96b('0x1a5')]=function(_0x4d7c2d){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x1a6'),_0x4d7c2d['label']));if(!this['isConfigured'](_0x4d7c2d[_0xd96b('0x1a7')])){return this[_0xd96b('0x34')]['noop'](_0xd96b('0x1a8'));}var _0x5820b2=this[_0xd96b('0x30')][_0xd96b('0x9f')](this,_0x4d7c2d[_0xd96b('0x1a7')]);if(!_0x5820b2){return this['channel'][_0xd96b('0x29')](_0x4d7c2d,_0xd96b('0x1a9'));}var _0x2c9b8e={'body':_0x4d7c2d['sms_text'],'phone':_0x4d7c2d['to']||'','SmsAccountId':_0x5820b2['id']};logger['debug'](_0xd96b('0x1aa'),JSON[_0xd96b('0x6b')](_0x2c9b8e));this[_0xd96b('0x9e')]['sync'](this,_0x4d7c2d,_0x4d7c2d[_0xd96b('0x1a7')]);this['channel'][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x1ab'),_0x5820b2[_0xd96b('0x14')]));this[_0xd96b('0x32')]['sync'](this,_0x2c9b8e);return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0x1ac'));};AGIVertices['prototype'][_0xd96b('0x1ad')]=function(_0x2893a1){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')]('Enter\x20in\x20SET\x20(%s)\x20block',_0x2893a1[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x2893a1[_0xd96b('0xd0')])){return this[_0xd96b('0x34')]['error'](_0x2893a1,_0xd96b('0x1ae'));}var _0xd76108=this[_0xd96b('0x14a')]['sync'](this,_0x2893a1[_0xd96b('0xd0')]);if(!_0xd76108){return this[_0xd96b('0x34')]['error'](_0x2893a1,'no\x20variable\x20found');}return this[_0xd96b('0x34')]['setVariable'](_0xd76108,_0x2893a1[_0xd96b('0x1af')]);};AGIVertices['prototype'][_0xd96b('0x1b0')]=function(_0x42767){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x1b1'),_0x42767['label']));this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0x1b2'));if(_0x42767[_0xd96b('0xb2')]===_0xd96b('0x1b3')){this['channel']['noop'](_0xd96b('0x1b4'));return this[_0xd96b('0x34')]['answer']();}return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0x1b5'));};AGIVertices[_0xd96b('0x15')]['subproject']=function(_0x3f8e15){logger[_0xd96b('0x2b')](util['format'](_0xd96b('0x1b6'),_0x3f8e15[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x3f8e15['project_id'])){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x3f8e15,'no\x20subproject\x20selected');}var _0x58d1b1=this['getSquareProject']['sync'](this,_0x3f8e15['project_id']);if(!this[_0xd96b('0xa3')](_0x58d1b1)){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x3f8e15,util[_0xd96b('0x95')](_0xd96b('0x1b7'),_0x3f8e15[_0xd96b('0x1b8')]));}if(_0x58d1b1===this[_0xd96b('0x34')][_0xd96b('0x35')]){return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x3f8e15,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this['createSquareDetailsReport'][_0xd96b('0x9f')](this,_0x3f8e15,_0x58d1b1);var _0x29f6a3=this[_0xd96b('0x34')][_0xd96b('0xa4')](_0xd96b('0x1b9'),util['format'](_0xd96b('0x1ba'),config[_0xd96b('0x7')][_0xd96b('0x19a')]||_0xd96b('0x1bb'),_0x58d1b1,this[_0xd96b('0x34')][_0xd96b('0x35')]));if(_0x29f6a3[_0xd96b('0x9b')]===-0x1){return _0x29f6a3;}return this[_0xd96b('0x34')][_0xd96b('0xa6')](util['format'](_0xd96b('0xbc'),'AGI',_0x58d1b1));};AGIVertices[_0xd96b('0x15')][_0xd96b('0x1bc')]=function(_0x80b40f){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x1bd'),_0x80b40f[_0xd96b('0xa2')]));var _0x4d005f=this['shellCommand'][_0xd96b('0x9f')](this,_0x80b40f['command']);this[_0xd96b('0x9e')][_0xd96b('0x9f')](this,_0x80b40f,_0x80b40f[_0xd96b('0xb0')]);if(this[_0xd96b('0xa3')](_0x80b40f['variable_id'])){var _0x5aff3d=this[_0xd96b('0x14a')][_0xd96b('0x9f')](this,_0x80b40f[_0xd96b('0xd0')]);if(_0x5aff3d){this[_0xd96b('0x34')]['setVariable'](_0x5aff3d,_0x4d005f);return this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x1be'),_0x80b40f[_0xd96b('0xb0')],_0x5aff3d));}}return this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x1bf'),_0x80b40f[_0xd96b('0xb0')]));};AGIVertices['prototype'][_0xd96b('0x1c0')]=function(_0x1a4260){logger['info'](util[_0xd96b('0x95')](_0xd96b('0x1c1'),_0x1a4260['label']));_0x1a4260[_0xd96b('0x59')]=_0x1a4260[_0xd96b('0x59')][_0xd96b('0x55')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xd96b('0xa3')](_0x1a4260[_0xd96b('0x57')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')]('no\x20apiKey\x20configured');}if(!this['isConfigured'](_0x1a4260[_0xd96b('0x59')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')](_0xd96b('0xe2'));}this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')]('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0x1a4260[_0xd96b('0x59')]));var _0x584a1c=this[_0xd96b('0x56')]['sync'](this,_0x1a4260);if(_0x584a1c){this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x1c2'),_0x584a1c));var _0x1799ed=this['channel'][_0xd96b('0xff')](_0x584a1c);try{fs['unlink'](_0x584a1c+'.wav');}catch(_0x3198f6){logger[_0xd96b('0x29')](_0x3198f6);}return _0x1799ed;}return this[_0xd96b('0x34')][_0xd96b('0x29')](_0x1a4260,_0xd96b('0x1c3'));};AGIVertices['prototype'][_0xd96b('0x1c4')]=function(_0x3eb608){logger['info'](util['format']('Enter\x20in\x20GOOGLETTS\x20(%s)\x20block',_0x3eb608['label']));_0x3eb608[_0xd96b('0x59')]=_0x3eb608[_0xd96b('0x59')][_0xd96b('0x55')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xd96b('0xa3')](_0x3eb608[_0xd96b('0x59')])){return this[_0xd96b('0x34')][_0xd96b('0xa6')]('no\x20text\x20configured');}this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x1c5'),_0x3eb608['text']));var _0x1de834=this[_0xd96b('0x5f')][_0xd96b('0x9f')](this,_0x3eb608);if(_0x1de834){this['channel'][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x1c6'),_0x1de834));var _0x59338c=this[_0xd96b('0x34')][_0xd96b('0xff')](_0x1de834);try{fs[_0xd96b('0x100')](_0x1de834+_0xd96b('0x101'));}catch(_0x51fa8a){logger['error'](_0x51fa8a);}return _0x59338c;}return this['channel'][_0xd96b('0x29')](_0x3eb608,_0xd96b('0x1c7'));};AGIVertices[_0xd96b('0x15')][_0xd96b('0x1c8')]=function(_0x27dfb3){logger['info'](util[_0xd96b('0x95')](_0xd96b('0x1c9'),_0x27dfb3[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x27dfb3[_0xd96b('0x157')])){return this[_0xd96b('0x34')]['error'](_0x27dfb3,_0xd96b('0x15f'));}logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x158'),this['channel']['callerid'],_0x27dfb3[_0xd96b('0x157')]));var _0x10502e=this['agentUnpause'][_0xd96b('0x9f')](this,_0x27dfb3[_0xd96b('0x157')]);if(_0x10502e){logger[_0xd96b('0x2b')](util['format'](_0xd96b('0x159'),this['channel'][_0xd96b('0x36')],_0x27dfb3['findBy']));this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x159'),this['channel'][_0xd96b('0x36')],_0x27dfb3[_0xd96b('0x157')]));return{'code':0xc8,'result':_0xd96b('0x15a')};}else{logger[_0xd96b('0x2b')](util[_0xd96b('0x95')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xd96b('0x34')][_0xd96b('0x36')],_0x27dfb3[_0xd96b('0x157')]));this['channel'][_0xd96b('0xa6')](util[_0xd96b('0x95')](_0xd96b('0x15b'),this[_0xd96b('0x34')][_0xd96b('0x36')],_0x27dfb3[_0xd96b('0x157')]));return{'code':0xc8,'result':_0xd96b('0x15c')};}};AGIVertices[_0xd96b('0x15')][_0xd96b('0x1ca')]=function(_0x571d3f){logger[_0xd96b('0x2b')](util[_0xd96b('0x95')](_0xd96b('0x1cb'),_0x571d3f['label']));var _0xe2a512=this[_0xd96b('0x34')][_0xd96b('0xa4')](_0xd96b('0x1cc'),[_0x571d3f[_0xd96b('0x1cd')],_0x571d3f[_0xd96b('0x6f')]]);if(_0xe2a512[_0xd96b('0x9b')]===-0x1){return _0xe2a512;}return this[_0xd96b('0x34')][_0xd96b('0xa6')](util[_0xd96b('0x95')]('Executed\x20command\x20%s\x20%s',_0xd96b('0x1cc'),_0x571d3f['mailbox']));};AGIVertices[_0xd96b('0x15')][_0xd96b('0x1ce')]=function(_0x48d85e){logger[_0xd96b('0x2b')](util['format'](_0xd96b('0x1cf'),_0x48d85e[_0xd96b('0xa2')]));if(!this[_0xd96b('0xa3')](_0x48d85e[_0xd96b('0xd0')])){return this[_0xd96b('0x34')]['error'](_0x48d85e,'no\x20variable\x20selected');}var _0x38dce5=this[_0xd96b('0x14a')]['sync'](this,_0x48d85e[_0xd96b('0xd0')]);if(!_0x38dce5){return this['channel'][_0xd96b('0x29')](_0x48d85e,'no\x20variable\x20found');}var _0x5d98ff=this['channel'][_0xd96b('0x14a')](_0x38dce5);return{'code':0xc8,'result':_0x5d98ff[_0xd96b('0x99')]?_0x5d98ff['extra']:'-'};};String['prototype'][_0xd96b('0x98')]=function(_0x358333,_0x480c0c){return this['split'](_0x358333)[_0xd96b('0x1d0')](_0x480c0c);};module[_0xd96b('0x1d1')]=AGIVertices;
\ No newline at end of file
+var _0x547e=['no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','no\x20user\x20found','DIAL','SIP/%s','opts','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','out','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20private_key\x20configured','dialogflowV2_language','Trying\x20DialogflowV2:\x20%s','speech','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','ndauth_url','username','no\x20username\x20configured','password','no\x20password\x20configured','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','audiofile','unlink','.wav','SestekNDA\x20Result\x20%s','ext_dial','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','finally','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20selected','getSound','no\x20variable\x20selected\x20for\x20the\x20result','getData','maxdigit','test','mindigit','hiddendigitsnum','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','streamFile','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','message','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','wav','beep','recordFile','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','appsecret','no\x20appsecret\x20configured','NOBEEP','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','no\x20interval\x20configured','interval_id','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','Enter\x20in\x20HANGUP\x20(%s)\x20block','hangup','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','%s/recordings/%s','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','Enter\x20in\x20LOGOUT\x20(%s)\x20block','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','no\x20file\x20audio\x20found','response','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','queue','queue_id','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','position','recordingFormat','%s_%s','%s/recordings/%s.%s','createSquareRecording','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','no\x20mail\x20account\x20configured','getMailAccount','account_id','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','user','bcc','service','host','port','secure','authentication','auth','pass','template_id','sendMailMessage','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','sms_account_id','no\x20sms\x20account\x20configured','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','variable_value','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','no\x20variable\x20selected','join','exports','path','lodash','shelljs','randomstring','moment','request-promise','../../config/logger','../../config/environment','/var/opt/motion2/server/files','rawHeaders','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','prototype','getVariable','getVariableById','name','getVoiceQueueById','then','getSquareProject','getSquareProjectById','catch','getSquareOdbc','getTrunk','getTrunkById','getSoundPath','save_name','getIntervals','getIntervalById','interval','map','Intervals','format','%s/sounds/converted/%s','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','arg_1','calleridname','context','extension','priority','accountcode','dnid','createSquareMessage','createCmContact','isEmpty','isNil','random','lastName','phone','list_id','scheduledAt','callback','getPause','getPauseById','agentPause','agent','callerid','agentUnpause','agentLogout','internal','LOCAL','agentLogin','shellCommand','exec','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','en-US','ssmlGender','MALE','googleTTS','google_tts_language','restAPI','url','method','timeout','number','includes','POST','toUpperCase','body','rawBody','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','parse','stringify','statusCode','statusMessage','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','private_key','sestekNDA','ispeechTTS','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','clear','agicommand','clone','hasOwnProperty','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isPlainObject','isArray','isString','saveRestApiResult','%s.%s','length','setVariable','split','replaceAll','extra','toString','getAndSetVariable','result','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','label','noop','no\x20text\x20configured','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','RECOG_INSTANCE()','Executed\x20command\x20MRCPRecog\x20%s','agi','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','delay','add','minutes','callback_priority','custom_app','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','MRCPSynth','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','no\x20grammar\x20configured','MRCPRecog','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','database','no\x20database\x20selected','odbc_id','no\x20odbc\x20database\x20found','query','no\x20query\x20configured','query:\x20%s','variable_id'];(function(_0x338f73,_0x1945c8){var _0x163fdf=function(_0x4cd033){while(--_0x4cd033){_0x338f73['push'](_0x338f73['shift']());}};_0x163fdf(++_0x1945c8);}(_0x547e,0xfd));var _0xe547=function(_0x1a0eca,_0x55a106){_0x1a0eca=_0x1a0eca-0x0;var _0x147b73=_0x547e[_0x1a0eca];return _0x147b73;};'use strict';var fs=require('fs');var path=require(_0xe547('0x0'));var util=require('util');var _=require(_0xe547('0x1'));var sh=require(_0xe547('0x2'));var odbc=require('odbc')();var rs=require(_0xe547('0x3'));var moment=require(_0xe547('0x4'));var Mustache=require('mustache');var rp=require(_0xe547('0x5'));var logger=require(_0xe547('0x6'))('agi');var config=require(_0xe547('0x7'));var scripts=require('./scripts');var FILES_PATH=_0xe547('0x8');var recursiveMapAttributes=[_0xe547('0x9'),'rawBody'];var verticesWithRetry=[_0xe547('0xa'),_0xe547('0xb'),_0xe547('0xc')];var AGIVertices=function(_0x218954,_0x307084,_0x338d71){this[_0xe547('0xd')]=_0x218954;this[_0xe547('0xe')]=_0x307084;this[_0xe547('0xf')]=_0x338d71;};AGIVertices[_0xe547('0x10')][_0xe547('0x11')]=function(_0x15ce1b,_0x4a8eb2){this[_0xe547('0xe')][_0xe547('0x12')](_0x15ce1b)['then'](function(_0x124176){_0x4a8eb2(null,_0x124176?_0x124176[_0xe547('0x13')]:![]);})['catch'](function(_0x530607){_0x4a8eb2(_0x530607);});};AGIVertices[_0xe547('0x10')]['getVoiceQueue']=function(_0x502cef,_0x45af77){this[_0xe547('0xe')][_0xe547('0x14')](_0x502cef)[_0xe547('0x15')](function(_0x49a13f){_0x45af77(null,_0x49a13f?_0x49a13f[_0xe547('0x13')]:![]);})['catch'](function(_0x2012c6){_0x45af77(_0x2012c6);});};AGIVertices['prototype'][_0xe547('0x16')]=function(_0x31ba00,_0xc23249){this[_0xe547('0xe')][_0xe547('0x17')](_0x31ba00)[_0xe547('0x15')](function(_0x11ad38){_0xc23249(null,_0x11ad38?_0x11ad38['name']:![]);})[_0xe547('0x18')](function(_0x1af1e5){_0xc23249(_0x1af1e5);});};AGIVertices[_0xe547('0x10')][_0xe547('0x19')]=function(_0x383801,_0x33548e){this[_0xe547('0xe')]['getSquareOdbcById'](_0x383801)['then'](function(_0x272bd8){_0x33548e(null,_0x272bd8?_0x272bd8['dsn']:![]);})[_0xe547('0x18')](function(_0x50dbb0){_0x33548e(_0x50dbb0);});};AGIVertices[_0xe547('0x10')]['getUser']=function(_0xabf654,_0x7c4796){this['rpc']['getUserById'](_0xabf654)[_0xe547('0x15')](function(_0x1cf90e){_0x7c4796(null,_0x1cf90e?_0x1cf90e['name']:![]);})[_0xe547('0x18')](function(_0x259644){_0x7c4796(_0x259644);});};AGIVertices[_0xe547('0x10')][_0xe547('0x1a')]=function(_0x4ac1d7,_0x116ac2){this[_0xe547('0xe')][_0xe547('0x1b')](_0x4ac1d7)[_0xe547('0x15')](function(_0x43ec18){_0x116ac2(null,_0x43ec18?_0x43ec18[_0xe547('0x13')]:![]);})[_0xe547('0x18')](function(_0x2e0075){_0x116ac2(_0x2e0075);});};AGIVertices['prototype']['getSound']=function(_0x6d4e2b,_0x27f698){var _0x19255b=this;this[_0xe547('0xe')]['getSoundById'](_0x6d4e2b)['then'](function(_0x254331){_0x27f698(null,_0x254331?_0x19255b[_0xe547('0x1c')](_0x254331[_0xe547('0x1d')]):![]);})[_0xe547('0x18')](function(_0x8fa08d){_0x27f698(_0x8fa08d);});};AGIVertices[_0xe547('0x10')]['getMailAccount']=function(_0x4a23a6,_0x4301ae){this[_0xe547('0xe')]['getMailAccountById'](_0x4a23a6)[_0xe547('0x15')](function(_0x47632a){_0x4301ae(null,_0x47632a?_0x47632a:![]);})[_0xe547('0x18')](function(_0x4b5229){_0x4301ae(_0x4b5229);});};AGIVertices[_0xe547('0x10')]['sendMailMessage']=function(_0x275264,_0x1b5cc1,_0x16b5e4){this['mailRpc']['sendMailMessage'](_0x275264,_0x1b5cc1)[_0xe547('0x15')](function(){_0x16b5e4(null);})[_0xe547('0x18')](function(_0x5aafa8){_0x16b5e4(_0x5aafa8);});};AGIVertices['prototype'][_0xe547('0x1e')]=function(_0x146d0b,_0x280348){this[_0xe547('0xe')][_0xe547('0x1f')](_0x146d0b)[_0xe547('0x15')](function(_0x2eb357){if(_0x2eb357){if(_0x2eb357['IntervalId']){_0x280348(null,[_0x2eb357[_0xe547('0x20')]]);}else{_0x280348(null,_[_0xe547('0x21')](_0x2eb357[_0xe547('0x22')],'interval'));}}else{_0x280348(null,![]);}})[_0xe547('0x18')](function(_0x5bae5a){_0x280348(_0x5bae5a);});};AGIVertices[_0xe547('0x10')][_0xe547('0x1c')]=function(_0x51d0fb){return util[_0xe547('0x23')](_0xe547('0x24'),FILES_PATH,_0x51d0fb);};AGIVertices[_0xe547('0x10')]['getQueryOdbc']=function(_0x1e9a65,_0x3f418a,_0x5b429e){odbc[_0xe547('0x25')](_0x1e9a65,function(_0x1396ca){if(_0x1396ca){logger[_0xe547('0x26')](_0xe547('0x27'),_0x1396ca);_0x5b429e(_0x1396ca);}else{logger[_0xe547('0x28')](_0xe547('0x29'));odbc['query'](_0x3f418a,function(_0x5e57ac,_0x37d66b){if(_0x5e57ac){logger[_0xe547('0x28')]('Error\x20executing\x20query\x20%s',_0x3f418a);_0x5b429e(_0x5e57ac);}else{logger[_0xe547('0x28')](_0xe547('0x2a'),_0x3f418a);odbc[_0xe547('0x2b')](function(_0x2ae6be){if(_0x2ae6be){logger['error'](_0xe547('0x2c'),_0x2ae6be);}_0x5b429e(null,_0x37d66b);});}});}});};AGIVertices[_0xe547('0x10')][_0xe547('0x2d')]=function(_0x4fdb2b,_0x348780){this[_0xe547('0xe')][_0xe547('0x2e')](_0x4fdb2b)[_0xe547('0x15')](function(_0x5629f0){_0x348780(null,_0x5629f0?_0x5629f0:![]);})[_0xe547('0x18')](function(_0x4204dc){_0x348780(_0x4204dc);});};AGIVertices[_0xe547('0x10')][_0xe547('0x2f')]=function(_0x23fed8,_0x1b4325){this[_0xe547('0xe')][_0xe547('0x2f')](_0x23fed8)[_0xe547('0x15')](function(_0x4a9517){_0x1b4325(null,_0x4a9517);})[_0xe547('0x18')](function(_0x50a7d5){_0x1b4325(_0x50a7d5);});};AGIVertices['prototype'][_0xe547('0x30')]=function(_0xa8656b,_0x22fc87,_0x4a3262){this[_0xe547('0xe')][_0xe547('0x30')]({'uniqueid':this[_0xe547('0xd')][_0xe547('0x31')],'node':_0xa8656b['label'],'application':_0xa8656b['agicommand'],'data':_0x22fc87||null,'project_name':this[_0xe547('0xd')][_0xe547('0x32')],'callerid':this['channel']['callerid']})[_0xe547('0x15')](function(_0x379368){if(_0x4a3262){_0x4a3262(null,_0x379368);}})[_0xe547('0x18')](function(_0x4376db){if(_0x4a3262){_0x4a3262(_0x4376db);}});};AGIVertices[_0xe547('0x10')]['createSquareRecording']=function(_0x25d17f,_0x3de609,_0x104961,_0x259c86){this[_0xe547('0xe')]['createSquareRecording']({'uniqueid':this['channel'][_0xe547('0x31')],'callerid':this[_0xe547('0xd')]['callerid'],'calleridname':this[_0xe547('0xd')][_0xe547('0x33')],'context':this['channel'][_0xe547('0x34')],'extension':this[_0xe547('0xd')][_0xe547('0x35')],'priority':this['channel'][_0xe547('0x36')],'accountcode':this[_0xe547('0xd')][_0xe547('0x37')],'dnid':this['channel'][_0xe547('0x38')],'projectName':this[_0xe547('0xd')]['arg_1'],'saveName':_0x3de609,'filename':_0x25d17f['file']||_0x3de609,'savePath':_0x104961})['then'](function(_0x4c32be){_0x259c86(null,_0x4c32be);})[_0xe547('0x18')](function(_0x513b92){_0x259c86(_0x513b92);});};AGIVertices[_0xe547('0x10')][_0xe547('0x39')]=function(_0xd5f240,_0x4c88ca,_0x107546,_0x2fae3f,_0xd71ba6){this['rpc'][_0xe547('0x39')]({'uniqueid':this[_0xe547('0xd')]['uniqueid'],'body':_0xd5f240,'direction':_0x4c88ca,'providerName':_0x107546,'providerResponse':_0x2fae3f})['then'](function(_0x23b406){if(_0xd71ba6){_0xd71ba6(null,_0x23b406);}})[_0xe547('0x18')](function(_0x556579){if(_0xd71ba6){_0xd71ba6(_0x556579);}});};AGIVertices[_0xe547('0x10')][_0xe547('0x3a')]=function(_0x146f7d,_0x31a479){this[_0xe547('0xe')][_0xe547('0x3a')]({'firstName':_[_0xe547('0x3b')](_0x146f7d[_0xe547('0x13')])||_[_0xe547('0x3c')](_0x146f7d[_0xe547('0x13')])?'callback_'+Math[_0xe547('0x3d')]():_0x146f7d['name'],'lastName':_[_0xe547('0x3b')](_0x146f7d[_0xe547('0x3e')])||_['isNil'](_0x146f7d[_0xe547('0x3e')])?null:_0x146f7d[_0xe547('0x3e')],'phone':_0x146f7d[_0xe547('0x3f')],'ListId':_0x146f7d[_0xe547('0x40')],'scheduledat':_0x146f7d[_0xe547('0x41')],'callbackUniqueid':this['channel'][_0xe547('0x31')],'tags':_0xe547('0x42'),'description':'Callback\x20scheduled\x20at\x20'+_0x146f7d[_0xe547('0x41')]['toString'](),'priority':_0x146f7d['callback_priority']})[_0xe547('0x15')](function(_0x146c35){_0x31a479(null,_0x146c35);})[_0xe547('0x18')](function(_0x46ee84){_0x31a479(_0x46ee84);});};AGIVertices['prototype'][_0xe547('0x43')]=function(_0x3e5f17,_0x363318){this[_0xe547('0xe')][_0xe547('0x44')](_0x3e5f17)[_0xe547('0x15')](function(_0x2eb6f7){_0x363318(null,_0x2eb6f7?_0x2eb6f7[_0xe547('0x13')]:![]);})['catch'](function(_0x59e769){_0x363318(_0x59e769);});};AGIVertices[_0xe547('0x10')][_0xe547('0x45')]=function(_0x5c4b97,_0x26099d,_0x164535){var _0x3aa564={'role':_0xe547('0x46')};_0x3aa564[_0x5c4b97]=this[_0xe547('0xd')]['callerid'];this[_0xe547('0xe')][_0xe547('0x45')](_0x3aa564,_0x26099d,this[_0xe547('0xd')][_0xe547('0x31')])[_0xe547('0x15')](function(_0x24a1d5){_0x164535(null,_[_0xe547('0x3c')](_0x24a1d5)?![]:!![]);})[_0xe547('0x18')](function(_0x3ea5ab){logger[_0xe547('0x26')](_0x3ea5ab);_0x164535(null,![]);});};AGIVertices[_0xe547('0x10')]['agentUnpause']=function(_0x1bd779,_0x26de7f){var _0x28c70e={'role':_0xe547('0x46')};_0x28c70e[_0x1bd779]=this[_0xe547('0xd')][_0xe547('0x47')];this[_0xe547('0xe')][_0xe547('0x48')](_0x28c70e)[_0xe547('0x15')](function(_0x21a22a){_0x26de7f(null,_[_0xe547('0x3c')](_0x21a22a)?![]:!![]);})[_0xe547('0x18')](function(_0x243676){logger[_0xe547('0x26')](_0x243676);_0x26de7f(null,![]);});};AGIVertices[_0xe547('0x10')][_0xe547('0x49')]=function(_0x16f0ea,_0x1b6ed8){var _0x3d7372={'role':_0xe547('0x46')};_0x3d7372[_0x16f0ea]=this[_0xe547('0xd')][_0xe547('0x47')];this[_0xe547('0xe')][_0xe547('0x49')](_0x3d7372)[_0xe547('0x15')](function(_0x410040){_0x1b6ed8(null,_[_0xe547('0x3c')](_0x410040)?![]:!![]);})[_0xe547('0x18')](function(_0x529b88){logger[_0xe547('0x26')](_0x529b88);_0x1b6ed8(null,![]);});};AGIVertices['prototype']['agentLogin']=function(_0x500df4,_0x507580){var _0x47204a={'role':_0xe547('0x46')};_0x47204a[_0x500df4]=this[_0xe547('0xd')][_0xe547('0x47')];var _0x50161c=_0x500df4!=_0xe547('0x4a')?util['format']('%s/%s@from-sip/n',_0xe547('0x4b'),this[_0xe547('0xd')][_0xe547('0x47')]):undefined;this[_0xe547('0xe')][_0xe547('0x4c')](_0x47204a,_0x50161c)['then'](function(_0x3e69ad){_0x507580(null,_[_0xe547('0x3c')](_0x3e69ad)?![]:!![]);})['catch'](function(_0x4e521c){logger[_0xe547('0x26')](_0x4e521c);_0x507580(null,![]);});};AGIVertices[_0xe547('0x10')][_0xe547('0x4d')]=function(_0x45aa15,_0x423009){sh[_0xe547('0x4e')](_['trim'](_0x45aa15),function(_0x4b9a6c,_0x1022e0){var _0x479f36=_0x1022e0[_0xe547('0x4f')](/(\r\n|\n|\r)/gm,'');_0x423009(null,_0x479f36);});};AGIVertices[_0xe547('0x10')][_0xe547('0x50')]=function(_0x3b670b,_0xb7a85f){scripts[_0xe547('0x50')](_0x3b670b[_0xe547('0x51')],_0x3b670b[_0xe547('0x52')]||_0xe547('0x53'),_0x3b670b['text'],_0x3b670b['languageCode']||_0xe547('0x54'),_0x3b670b[_0xe547('0x55')]||_0xe547('0x56'),_0x3b670b['audioEncoding']||'MP3')[_0xe547('0x15')](function(_0x1f34d8){_0xb7a85f(null,_0x1f34d8);})['catch'](function(_0x388177){_0xb7a85f(_0x388177);});};AGIVertices[_0xe547('0x10')]['googleTTS']=function(_0x23fc32,_0x5f3ca1){scripts[_0xe547('0x57')](_0x23fc32[_0xe547('0x53')],_0x23fc32[_0xe547('0x58')]||'en',0x1)[_0xe547('0x15')](function(_0x5d3f0b){_0x5f3ca1(null,_0x5d3f0b);})[_0xe547('0x18')](function(_0x49fb12){_0x5f3ca1(_0x49fb12);});};AGIVertices[_0xe547('0x10')][_0xe547('0x59')]=function(_0x5dfdce,_0x3b232e){var _0x401570={'uri':_0x5dfdce[_0xe547('0x5a')],'method':_0x5dfdce[_0xe547('0x5b')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x5dfdce[_0xe547('0x5c')])===_0xe547('0x5d')&&parseInt(_0x5dfdce[_0xe547('0x5c')])>=0x1?parseInt(_0x5dfdce[_0xe547('0x5c')])*0x3e8:0x5*0x3e8};if(_[_0xe547('0x5e')]([_0xe547('0x5f'),'PUT'],_0x401570[_0xe547('0x5b')][_0xe547('0x60')]())){try{_0x401570[_0xe547('0x61')]=_0x5dfdce[_0xe547('0x62')]?JSON['parse'](_0x5dfdce[_0xe547('0x62')]):{};}catch(_0x5c62cc){logger[_0xe547('0x26')](_0xe547('0x63'),_0x5c62cc);}}try{_0x401570[_0xe547('0x64')]=_0x5dfdce[_0xe547('0x9')]?JSON['parse'](_0x5dfdce['rawHeaders']):{};}catch(_0x42451c){logger[_0xe547('0x26')](_0xe547('0x65'),_0x42451c);}if(_0x5dfdce[_0xe547('0x66')]){try{var _0x255afe=require(_0x5dfdce[_0xe547('0x66')])[_0xe547('0x67')](this,_0x401570);_0x401570[_0xe547('0x68')]=Mustache[_0xe547('0x69')](_0x5dfdce['url'],_0x255afe,{},['$$','$$']);if(_0x401570[_0xe547('0x64')]){_0x401570[_0xe547('0x64')]=JSON[_0xe547('0x6a')](Mustache[_0xe547('0x69')](JSON[_0xe547('0x6b')](_0x401570['headers']),_0x255afe,{},['$$','$$']));}if(_0x401570[_0xe547('0x61')]){_0x401570[_0xe547('0x61')]=JSON['parse'](Mustache[_0xe547('0x69')](JSON[_0xe547('0x6b')](_0x401570[_0xe547('0x61')]),_0x255afe,{},['$$','$$']));}}catch(_0x3c046e){logger[_0xe547('0x26')]('An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function',_0x3c046e);}}rp(_0x401570)[_0xe547('0x15')](function(_0x443200){var _0x43e061={'statusCode':_0x443200[_0xe547('0x6c')]||0xc8,'statusMessage':_0x443200[_0xe547('0x6d')]||'OK','headers':_0x443200['headers']||{},'body':_0x443200[_0xe547('0x61')]||{}};_0x3b232e(null,_0x43e061);})['catch'](function(_0x1646df){var _0x10a9b6={'statusCode':_0x1646df[_0xe547('0x6c')]||0x1f4,'statusMessage':_0x1646df['message']||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x1646df[_0xe547('0x6e')][_0xe547('0x64')]||{},'body':_0x1646df['options'][_0xe547('0x61')]||{}};_0x3b232e(null,_0x10a9b6);});};AGIVertices[_0xe547('0x10')][_0xe547('0x6f')]=function(_0x561207,_0x5230b2){scripts[_0xe547('0x6f')](this['channel'][_0xe547('0x31')],_0x561207[_0xe547('0x70')],_0x561207[_0xe547('0x53')],_0x561207[_0xe547('0x71')]||'en')[_0xe547('0x15')](function(_0x77b9ca){_0x5230b2(null,_0x77b9ca);})[_0xe547('0x18')](function(_0x512aa8){_0x5230b2(_0x512aa8);});};AGIVertices[_0xe547('0x10')][_0xe547('0x72')]=function(_0x6cb9b0,_0x428fba){scripts[_0xe547('0x72')](this[_0xe547('0xd')][_0xe547('0x31')],_0x6cb9b0[_0xe547('0x73')],_0x6cb9b0['client_email'],_0x6cb9b0[_0xe547('0x74')],_0x6cb9b0[_0xe547('0x53')],_0x6cb9b0['dialogflowV2_language']||'en')['then'](function(_0x318a2a){_0x428fba(null,_0x318a2a);})[_0xe547('0x18')](function(_0x1ab642){_0x428fba(_0x1ab642);});};AGIVertices['prototype'][_0xe547('0x75')]=function(_0x39fefc,_0xeab9f6){scripts[_0xe547('0x75')](this[_0xe547('0xd')],_0x39fefc)[_0xe547('0x15')](function(_0xf3403d){_0xeab9f6(null,_0xf3403d);})['catch'](function(_0x203ad6){_0xeab9f6(_0x203ad6);});};AGIVertices[_0xe547('0x10')][_0xe547('0x76')]=function(_0x2c4559,_0x2d4e7f){scripts['ispeechTTS'](_0x2c4559[_0xe547('0x70')],_0x2c4559['text'],_0x2c4559['ispeech_tts_language']||_0xe547('0x54'),_0x2c4559[_0xe547('0x77')])[_0xe547('0x15')](function(_0x47b4c7){_0x2d4e7f(null,_0x47b4c7);})[_0xe547('0x18')](function(_0x603de7){_0x2d4e7f(_0x603de7);});};AGIVertices[_0xe547('0x10')][_0xe547('0x78')]=function(_0xfc76f5,_0x19da08,_0x3495d1){scripts[_0xe547('0x78')](_0x19da08,_0xfc76f5[_0xe547('0x70')],_0xfc76f5[_0xe547('0x79')]||_0xe547('0x54'),this[_0xe547('0x7a')](_0xfc76f5[_0xe547('0x7b')])?_0xfc76f5[_0xe547('0x7b')]:undefined)['then'](function(_0x2b506f){_0x3495d1(null,_0x2b506f);})[_0xe547('0x18')](function(_0x16c949){_0x3495d1(_0x16c949);});};AGIVertices[_0xe547('0x10')][_0xe547('0x7c')]=function(_0x26d556,_0x6c2c44){scripts[_0xe547('0x7c')](_0x26d556['aws_access_key_id'],_0x26d556[_0xe547('0x7d')],_0x26d556[_0xe547('0x7e')],_0x26d556[_0xe547('0x7f')]||_0xe547('0x80'),_0x26d556[_0xe547('0x53')],_0x26d556[_0xe547('0x81')]||_0xe547('0x53'))[_0xe547('0x15')](function(_0x10a9f4){_0x6c2c44(null,_0x10a9f4);})['catch'](function(_0x5e032e){_0x6c2c44(_0x5e032e);});};AGIVertices[_0xe547('0x10')][_0xe547('0x82')]=function(_0x5bee2c,_0x58459a){scripts[_0xe547('0x82')](this[_0xe547('0xd')][_0xe547('0x31')],_0x5bee2c['aws_access_key_id'],_0x5bee2c['aws_secret_access_key'],_0x5bee2c[_0xe547('0x83')],_0x5bee2c['text'],_0x5bee2c[_0xe547('0x84')])[_0xe547('0x15')](function(_0x216938){_0x58459a(null,_0x216938);})['catch'](function(_0x299418){_0x58459a(_0x299418);});};AGIVertices[_0xe547('0x10')][_0xe547('0x85')]=function(_0x1d308d,_0x4b0fbd,_0x3d73e9){scripts[_0xe547('0x85')](_0x4b0fbd,_0x1d308d[_0xe547('0x70')],_0x1d308d[_0xe547('0x86')]||_0xe547('0x54'))['then'](function(_0x36dcf4){_0x3d73e9(null,_0x36dcf4);})[_0xe547('0x18')](function(_0x19b7fa){_0x3d73e9(_0x19b7fa);});};AGIVertices[_0xe547('0x10')][_0xe547('0x87')]=function(_0x2bb5ac,_0x5be988,_0x45649e){scripts['tildeASR'](_0x5be988,_0x2bb5ac[_0xe547('0x88')],_0x2bb5ac['appsecret'],_0x2bb5ac[_0xe547('0x68')])[_0xe547('0x15')](function(_0x209e2b){_0x45649e(null,_0x209e2b);})[_0xe547('0x18')](function(_0x435d59){_0x45649e(_0x435d59);});};AGIVertices[_0xe547('0x10')][_0xe547('0x89')]=function(_0x447585){var _0x94771e=_[_0xe547('0x5e')](verticesWithRetry,_0x447585[_0xe547('0x8a')])?_0x447585:_[_0xe547('0x8b')](_0x447585);for(var _0x25f4e0 in _0x94771e){if(_0x94771e[_0xe547('0x8c')](_0x25f4e0)){if(_0x94771e[_0x25f4e0]&&_['isString'](_0x94771e[_0x25f4e0])){if(_['includes'](recursiveMapAttributes,_0x25f4e0)){_0x94771e[_0x25f4e0]=this[_0xe547('0x8d')](_0x94771e[_0x25f4e0]);}else{_0x94771e[_0x25f4e0]=this[_0xe547('0x8e')](_0x94771e[_0x25f4e0]);}}}}return _0x94771e;};AGIVertices[_0xe547('0x10')][_0xe547('0x8f')]=function(_0x923c5c){for(var _0x1f50e1 in _0x923c5c){if(_0x923c5c['hasOwnProperty'](_0x1f50e1)){if(_[_0xe547('0x90')](_0x923c5c[_0x1f50e1])){this[_0xe547('0x8f')](_0x923c5c[_0x1f50e1]);}else if(_[_0xe547('0x91')](_0x923c5c[_0x1f50e1])){for(var _0x379716=0x0;_0x379716<_0x923c5c[_0x1f50e1]['length'];_0x379716++){this[_0xe547('0x8f')](_0x923c5c[_0x1f50e1][_0x379716]);}}else if(_[_0xe547('0x92')](_0x923c5c[_0x1f50e1])){_0x923c5c[_0x1f50e1]=this[_0xe547('0x8e')](_0x923c5c[_0x1f50e1]);}}}};AGIVertices[_0xe547('0x10')][_0xe547('0x93')]=function(_0x4bebc1,_0x53b912){for(var _0x120b08 in _0x4bebc1){if(_0x4bebc1[_0xe547('0x8c')](_0x120b08)){if(_[_0xe547('0x90')](_0x4bebc1[_0x120b08])){if(!_['isEmpty'](_0x4bebc1[_0x120b08])){this['saveRestApiResult'](_0x4bebc1[_0x120b08],util[_0xe547('0x23')](_0xe547('0x94'),_0x53b912,_0x120b08));}}else if(_['isArray'](_0x4bebc1[_0x120b08])){for(var _0x42fd72=0x0;_0x42fd72<_0x4bebc1[_0x120b08][_0xe547('0x95')];_0x42fd72++){this['saveRestApiResult'](_0x4bebc1[_0x120b08][_0x42fd72],util[_0xe547('0x23')]('%s.%s',_0x53b912,_0x120b08+'['+_0x42fd72+']'));}}else{if(!_['isNil'](_0x4bebc1[_0x120b08])){this['channel'][_0xe547('0x96')](util[_0xe547('0x23')]('%s.%s',_0x53b912,_0x120b08),_0x4bebc1[_0x120b08]);}}}}};AGIVertices['prototype'][_0xe547('0x8d')]=function(_0x242b80){try{var _0x4c42ed=JSON['parse'](_0x242b80);this[_0xe547('0x8f')](_0x4c42ed);return JSON[_0xe547('0x6b')](_0x4c42ed);}catch(_0x1a3e5a){return this[_0xe547('0x8e')](_0x242b80);}};AGIVertices[_0xe547('0x10')][_0xe547('0x8e')]=function(_0x197672){var _0xfaffab=_0x197672[_0xe547('0x97')]('{');for(var _0x12c4ae=0x1;_0x12c4ae<_0xfaffab[_0xe547('0x95')];_0x12c4ae+=0x1){var _0x33685c=_0xfaffab[_0x12c4ae][_0xe547('0x97')]('}');if(_0x33685c[_0xe547('0x95')]>0x1){_0x197672=_0x197672[_0xe547('0x98')]('{'+_0x33685c[0x0]+'}',this['channel']['getVariable'](_0x33685c[0x0])[_0xe547('0x99')]||_0x33685c[0x0]);}}if(_0xfaffab['length']===0x1){return _0x197672[_0xe547('0x9a')]();}return this[_0xe547('0x8e')](_0x197672);};AGIVertices[_0xe547('0x10')][_0xe547('0x9b')]=function(_0xd2b91,_0x152767){var _0x2e13e3=this[_0xe547('0xd')]['getVariable'](_0xd2b91);if(_0x2e13e3[_0xe547('0x9c')]===-0x1){return _0x2e13e3;}logger[_0xe547('0x28')](util[_0xe547('0x23')]('The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s',_0x152767,_0x2e13e3['extra']));return this[_0xe547('0xd')][_0xe547('0x96')](_0x152767,_0x2e13e3[_0xe547('0x99')]);};AGIVertices[_0xe547('0x10')]['isConfigured']=function(_0xfebe48){return _0xfebe48&&_0xfebe48!=='0'&&_0xfebe48!=='-1'&&_0xfebe48!=='';};AGIVertices['prototype'][_0xe547('0x9d')]=function(_0x5712ac){this['createSquareDetailsReport'][_0xe547('0x67')](this,_0x5712ac,'-');_0x5712ac['retry']=_0x5712ac[_0xe547('0x9d')];return{'code':0xc8,'result':'-'};};AGIVertices[_0xe547('0x10')][_0xe547('0x9e')]=function(_0x5e6e22){logger[_0xe547('0x28')](util['format'](_0xe547('0x9f'),_0x5e6e22[_0xe547('0xa0')]));if(!this[_0xe547('0x7a')](_0x5e6e22[_0xe547('0x53')])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0xa2'));}var _0xff6d84='\x22'+_0x5e6e22['text']+'\x22';if(this[_0xe547('0x7a')](_0x5e6e22[_0xe547('0x6e')])){_0xff6d84+=','+_0x5e6e22['options'];}var _0x3f07d2=this['channel'][_0xe547('0x4e')]('MRCPSynth',_0xff6d84);if(_0x3f07d2[_0xe547('0x9c')]===-0x1){return _0x3f07d2;}return this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0xa3'),_0xff6d84));};AGIVertices[_0xe547('0x10')]['mrcprecog']=function(_0x17ae5f){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0xa4'),_0x17ae5f[_0xe547('0xa0')]));if(!this[_0xe547('0x7a')](_0x17ae5f[_0xe547('0xa5')])){return this[_0xe547('0xd')][_0xe547('0xa1')]('no\x20grammar\x20configured');}var _0x116c66=_0x17ae5f[_0xe547('0xa5')];if(this[_0xe547('0x7a')](_0x17ae5f[_0xe547('0x6e')])){_0x116c66+=','+_0x17ae5f[_0xe547('0x6e')];}var _0xa38b2d=this[_0xe547('0xd')]['exec']('MRCPRecog',_0x116c66);if(_0xa38b2d[_0xe547('0x9c')]===-0x1){return _0xa38b2d;}var _0xe93097=this[_0xe547('0x9b')](_0xe547('0xa6'),_0xe547('0xa7'));if(_0xe93097[_0xe547('0x9c')]===-0x1){return _0xe93097;}var _0x16455f=this[_0xe547('0x9b')](_0xe547('0xa8'),'MRCP_RECOG_TRANSCRIPT');if(_0x16455f['result']===-0x1){return _0x16455f;}var _0xd165a2=this[_0xe547('0x9b')](_0xe547('0xa9'),'MRCP_RECOG_INSTANCE');if(_0xd165a2[_0xe547('0x9c')]===-0x1){return _0xd165a2;}return this[_0xe547('0xd')][_0xe547('0xa1')](util['format'](_0xe547('0xaa'),_0x116c66));};AGIVertices[_0xe547('0x10')][_0xe547('0xab')]=function(_0x1fffa4){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0xac'),_0x1fffa4[_0xe547('0xa0')]));return this[_0xe547('0xd')][_0xe547('0xab')]([_0x1fffa4[_0xe547('0xad')],_0x1fffa4[_0xe547('0xae')]]);};AGIVertices[_0xe547('0x10')][_0xe547('0xaf')]=function(_0x2ee72d){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0xb0'),_0x2ee72d[_0xe547('0xa0')]));if(this['isConfigured'](_0x2ee72d[_0xe547('0x5c')])){logger[_0xe547('0x28')](util['format'](_0xe547('0xb1'),_0x2ee72d[_0xe547('0x5c')]));var _0x3541b1=this['channel'][_0xe547('0xb2')](_0x2ee72d[_0xe547('0x5c')]);if(_0x3541b1['result']===-0x1){return _0x3541b1;}}return this[_0xe547('0xd')][_0xe547('0xaf')]();};AGIVertices['prototype'][_0xe547('0x42')]=function(_0x1c1123){logger['info'](util[_0xe547('0x23')](_0xe547('0xb3'),_0x1c1123[_0xe547('0xa0')]));if(!this[_0xe547('0x7a')](_0x1c1123['list_id'])){return this['channel'][_0xe547('0x26')](_0x1c1123,_0xe547('0xb4'));}_0x1c1123[_0xe547('0x41')]=moment();if(this[_0xe547('0x7a')](_0x1c1123[_0xe547('0xb5')])){_0x1c1123[_0xe547('0x41')]=moment()[_0xe547('0xb6')](_0x1c1123[_0xe547('0xb5')],_0xe547('0xb7'));}if(!this['isConfigured'](_0x1c1123[_0xe547('0xb8')])){_0x1c1123[_0xe547('0xb8')]=0x2;}this[_0xe547('0x3a')][_0xe547('0x67')](this,_0x1c1123);return this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')]('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x1c1123[_0xe547('0x3f')],_0x1c1123[_0xe547('0x40')],_0x1c1123[_0xe547('0x41')]));};AGIVertices[_0xe547('0x10')][_0xe547('0xb9')]=function(_0x130fe6){logger['info'](util[_0xe547('0x23')]('Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block',_0x130fe6[_0xe547('0xa0')]));var _0x1bf3ba=this[_0xe547('0xd')][_0xe547('0x4e')](_0x130fe6[_0xe547('0xba')],_0x130fe6[_0xe547('0x6e')]);if(_0x1bf3ba[_0xe547('0x9c')]===-0x1){return _0x1bf3ba;}return this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0xbb'),_0x130fe6[_0xe547('0xba')],_0x130fe6[_0xe547('0x6e')]));};AGIVertices[_0xe547('0x10')][_0xe547('0xbc')]=function(_0x5a1620){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0xbd'),_0x5a1620[_0xe547('0xa0')]));if(!this[_0xe547('0x7a')](_0x5a1620[_0xe547('0x53')])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0xa2'));}var _0x9a3475='\x22'+_0x5a1620[_0xe547('0x53')]+'\x22';if(this['isConfigured'](_0x5a1620[_0xe547('0x6e')])){_0x9a3475+=','+_0x5a1620['options'];}var _0x101206=this[_0xe547('0xd')][_0xe547('0x4e')]('MRCPSynth',_0x9a3475);if(_0x101206['result']===-0x1){return _0x101206;}return this[_0xe547('0xd')][_0xe547('0xa1')](util['format'](_0xe547('0xa3'),_0x9a3475));};AGIVertices[_0xe547('0x10')][_0xe547('0xbe')]=function(_0x56ceee){logger[_0xe547('0x28')](util['format']('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x56ceee[_0xe547('0xa0')]));if(!this[_0xe547('0x7a')](_0x56ceee[_0xe547('0x53')])){return this['channel'][_0xe547('0xa1')](_0xe547('0xa2'));}var _0x5554b6='\x22'+_0x56ceee[_0xe547('0x53')]+'\x22';if(this['isConfigured'](_0x56ceee[_0xe547('0x6e')])){_0x5554b6+=','+_0x56ceee[_0xe547('0x6e')];}var _0x45a00b=this[_0xe547('0xd')][_0xe547('0x4e')](_0xe547('0xbf'),_0x5554b6);if(_0x45a00b[_0xe547('0x9c')]===-0x1){return _0x45a00b;}return this['channel'][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0xa3'),_0x5554b6));};AGIVertices['prototype'][_0xe547('0xc0')]=function(_0x27201e){logger[_0xe547('0x28')](util['format'](_0xe547('0xc1'),_0x27201e['label']));if(!this[_0xe547('0x7a')](_0x27201e[_0xe547('0xa5')])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0xc2'));}var _0x21f1ba=_0x27201e[_0xe547('0xa5')];if(this[_0xe547('0x7a')](_0x27201e[_0xe547('0x6e')])){_0x21f1ba+=','+_0x27201e['options'];}var _0x5aec86=this[_0xe547('0xd')]['exec'](_0xe547('0xc3'),_0x21f1ba);if(_0x5aec86[_0xe547('0x9c')]===-0x1){return _0x5aec86;}var _0x4dbe89=this[_0xe547('0x9b')](_0xe547('0xa6'),_0xe547('0xc4'));if(_0x4dbe89['result']===-0x1){return _0x4dbe89;}var _0x40ef2b=this[_0xe547('0x9b')]('RECOG_INPUT()',_0xe547('0xc5'));if(_0x40ef2b[_0xe547('0x9c')]===-0x1){return _0x40ef2b;}var _0x331129=this[_0xe547('0x9b')](_0xe547('0xa9'),'LUMENVOX_ASR_INSTANCE');if(_0x331129['result']===-0x1){return _0x331129;}return this[_0xe547('0xd')]['noop'](util[_0xe547('0x23')](_0xe547('0xaa'),_0x21f1ba));};AGIVertices[_0xe547('0x10')][_0xe547('0xc6')]=function(_0x13f4dd){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0xc7'),_0x13f4dd[_0xe547('0xa0')]));if(!this['isConfigured'](_0x13f4dd[_0xe547('0xa5')])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0xc2'));}var _0x518cb4=_0x13f4dd[_0xe547('0xa5')];if(this[_0xe547('0x7a')](_0x13f4dd[_0xe547('0x6e')])){_0x518cb4+=','+_0x13f4dd[_0xe547('0x6e')];}var _0x4d2651=this[_0xe547('0xd')][_0xe547('0x4e')](_0xe547('0xc3'),_0x518cb4);if(_0x4d2651['result']===-0x1){return _0x4d2651;}var _0x586033=this[_0xe547('0x9b')](_0xe547('0xa6'),_0xe547('0xc8'));if(_0x586033['result']===-0x1){return _0x586033;}var _0x4d703d=this['getAndSetVariable'](_0xe547('0xa8'),'SESTEK_ASR_TRANSCRIPT');if(_0x4d703d[_0xe547('0x9c')]===-0x1){return _0x4d703d;}var _0x30503f=this[_0xe547('0x9b')]('RECOG_INSTANCE()','SESTEK_ASR_INSTANCE');if(_0x30503f['result']===-0x1){return _0x30503f;}return this[_0xe547('0xd')]['noop'](util[_0xe547('0x23')](_0xe547('0xaa'),_0x518cb4));};AGIVertices[_0xe547('0x10')][_0xe547('0xc9')]=function(_0x119ee6){logger[_0xe547('0x28')](util[_0xe547('0x23')]('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x119ee6['label']));if(!this[_0xe547('0x7a')](_0x119ee6['odbc_id'])){return this['channel'][_0xe547('0x26')](_0x119ee6,_0xe547('0xca'));}var _0x45c6a7=this[_0xe547('0x19')][_0xe547('0x67')](this,_0x119ee6[_0xe547('0xcb')]);if(!_0x45c6a7){return this[_0xe547('0xd')][_0xe547('0x26')](_0x119ee6,_0xe547('0xcc'));}if(!this['isConfigured'](_0x119ee6[_0xe547('0xcd')])){return this['channel'][_0xe547('0x26')](_0x119ee6,_0xe547('0xce'));}var _0x36514a=_0x119ee6['query'][_0xe547('0x4f')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0xcf'),_0x36514a));var _0x40028a=this['getQueryOdbc']['sync'](this,_0x45c6a7,_0x36514a);this[_0xe547('0x30')]['sync'](this,_0x119ee6,_0x36514a);if(!this[_0xe547('0x7a')](_0x119ee6[_0xe547('0xd0')])){return this[_0xe547('0xd')][_0xe547('0xa1')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x3a7be9=this[_0xe547('0x11')][_0xe547('0x67')](this,_0x119ee6[_0xe547('0xd0')]);if(!_0x3a7be9){return this[_0xe547('0xd')][_0xe547('0x26')](_0x119ee6,_0xe547('0xd1'));}var _0x276d6e=this;_0x40028a[_0xe547('0xd2')](function(_0x322cd2,_0x472709){Object[_0xe547('0xd3')](_0x322cd2)[_0xe547('0xd2')](function(_0x4482d5){_0x276d6e[_0xe547('0xd')][_0xe547('0x96')](util['format'](_0xe547('0xd4'),_0x3a7be9,_0x472709,_0x4482d5),_0x322cd2[_0x4482d5]);});});this[_0xe547('0xd')][_0xe547('0x96')](util[_0xe547('0x23')](_0xe547('0xd5'),_0x3a7be9),_0x40028a[_0xe547('0x95')]);return this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0xd6'),_0x3a7be9));};AGIVertices[_0xe547('0x10')][_0xe547('0xd7')]=function(_0x3fccac){logger[_0xe547('0xd8')](util[_0xe547('0x23')](_0xe547('0xd9'),_0x3fccac[_0xe547('0xa0')]));if(!this[_0xe547('0x7a')](_0x3fccac[_0xe547('0xda')])){return this[_0xe547('0xd')]['error'](_0x3fccac,_0xe547('0xdb'));}var _0x3ee18b=this['getUser'][_0xe547('0x67')](this,_0x3fccac[_0xe547('0xda')]);if(!_0x3ee18b){return this[_0xe547('0xd')][_0xe547('0x26')](_0x3fccac,_0xe547('0xdc'));}var _0x281675=this['channel']['exec'](_0xe547('0xdd'),[util['format'](_0xe547('0xde'),_0x3ee18b),_0x3fccac[_0xe547('0x5c')],_0x3fccac[_0xe547('0xdf')],_0x3fccac['url']]);if(_0x281675['result']===-0x1){return _0x281675;}return this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')]('Executed\x20command\x20%s',_0xe547('0xdd')));};AGIVertices[_0xe547('0x10')][_0xe547('0xe0')]=function(_0x23e05a){logger['info'](util['format'](_0xe547('0xe1'),_0x23e05a[_0xe547('0xa0')]));if(!this['isConfigured'](_0x23e05a[_0xe547('0x70')])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0xe2'));}if(!this[_0xe547('0x7a')](_0x23e05a[_0xe547('0x53')])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0xa2'));}this[_0xe547('0xd')][_0xe547('0xe3')]=!![];this[_0xe547('0x30')](_0x23e05a);this[_0xe547('0x39')](_0x23e05a[_0xe547('0x53')],'in','','');this[_0xe547('0xd')]['noop'](util[_0xe547('0x23')](_0xe547('0xe4'),_0x23e05a[_0xe547('0x53')]));var _0x62c4bd=this[_0xe547('0x6f')]['sync'](this,_0x23e05a);if(_0x62c4bd){for(var _0x1a6a83 in _0x62c4bd){if(_0x62c4bd['hasOwnProperty'](_0x1a6a83)){this[_0xe547('0xd')][_0xe547('0x96')](util['format']('DIALOGFLOW_%s',_0x1a6a83[_0xe547('0x60')]()),_0x62c4bd[_0x1a6a83]);}}this[_0xe547('0x39')](_0x62c4bd['speech'],_0xe547('0xe5'),_0xe547('0xe0'),'');return this[_0xe547('0xd')]['noop'](util[_0xe547('0x23')](_0xe547('0xe6'),_0x62c4bd['speech']));}return this[_0xe547('0xd')][_0xe547('0x26')](_0x23e05a,_0xe547('0xe7'));};AGIVertices['prototype'][_0xe547('0xe8')]=function(_0x25b123){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0xe9'),_0x25b123[_0xe547('0xa0')]));if(!this[_0xe547('0x7a')](_0x25b123[_0xe547('0x73')])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0xea'));}if(!this[_0xe547('0x7a')](_0x25b123['client_email'])){return this[_0xe547('0xd')][_0xe547('0xa1')]('no\x20client_email\x20configured');}if(!this['isConfigured'](_0x25b123[_0xe547('0x74')])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0xeb'));}if(!this[_0xe547('0x7a')](_0x25b123[_0xe547('0xec')])){return this['channel'][_0xe547('0xa1')]('no\x20anguage\x20configured');}if(!this[_0xe547('0x7a')](_0x25b123[_0xe547('0x53')])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0xa2'));}this[_0xe547('0xd')][_0xe547('0xe3')]=!![];this[_0xe547('0x30')](_0x25b123);this[_0xe547('0x39')](_0x25b123[_0xe547('0x53')],'in','','');this[_0xe547('0xd')][_0xe547('0xa1')](util['format'](_0xe547('0xed'),_0x25b123['text']));var _0x22ecf0=this[_0xe547('0x72')]['sync'](this,_0x25b123);if(_0x22ecf0){for(var _0x1c7d28 in _0x22ecf0){if(_0x22ecf0['hasOwnProperty'](_0x1c7d28)){if(_0x1c7d28!=='providerResponse'){this[_0xe547('0xd')][_0xe547('0x96')](util[_0xe547('0x23')]('DIALOGFLOW_%s',_0x1c7d28['toUpperCase']()),_0x22ecf0[_0x1c7d28]);}}}this[_0xe547('0x39')](_0x22ecf0[_0xe547('0xee')],_0xe547('0xe5'),_0xe547('0xe8'),_0x22ecf0[_0xe547('0xef')]);return this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0xf0'),_0x22ecf0['speech']));}return this[_0xe547('0xd')][_0xe547('0x26')](_0x25b123,_0xe547('0xf1'));};AGIVertices[_0xe547('0x10')][_0xe547('0xf2')]=function(_0x35a3e1){logger[_0xe547('0x28')](util[_0xe547('0x23')]('Enter\x20in\x20SESTEKNDA\x20(%s)\x20block',_0x35a3e1[_0xe547('0xa0')]));if(!this[_0xe547('0x7a')](_0x35a3e1[_0xe547('0xf3')])){return this[_0xe547('0xd')][_0xe547('0xa1')]('no\x20ndauth\x20url\x20configured');}if(!this[_0xe547('0x7a')](_0x35a3e1[_0xe547('0xf4')])){return this[_0xe547('0xd')]['noop'](_0xe547('0xf5'));}if(!this['isConfigured'](_0x35a3e1[_0xe547('0xf6')])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0xf7'));}if(!this[_0xe547('0x7a')](_0x35a3e1['ndassistant_url'])){return this[_0xe547('0xd')]['noop'](_0xe547('0xa2'));}this['channel'][_0xe547('0xe3')]=!![];this[_0xe547('0x30')](_0x35a3e1);this[_0xe547('0x39')](_0x35a3e1['text'],'in','','');this[_0xe547('0xd')]['noop'](util[_0xe547('0x23')](_0xe547('0xf8'),_0x35a3e1['text']));var _0x55b32e=this[_0xe547('0x75')][_0xe547('0x67')](this,_0x35a3e1);if(_0x55b32e){for(var _0x5347e0 in _0x55b32e){if(_0x55b32e[_0xe547('0x8c')](_0x5347e0)){this[_0xe547('0xd')][_0xe547('0x96')](util[_0xe547('0x23')](_0xe547('0xf9'),_0x5347e0[_0xe547('0x60')]()),_0x55b32e[_0x5347e0]);}}this[_0xe547('0x39')](_0x55b32e[_0xe547('0xee')],_0xe547('0xe5'),_0xe547('0xf2'),'');if(_0x55b32e[_0xe547('0xfa')]){this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')]('Sestek\x20NDA\x20%s\x20file\x20created',_0x55b32e[_0xe547('0xfa')]));var _0x526633=this[_0xe547('0xd')]['streamFile'](_0x55b32e['audiofile']);try{fs[_0xe547('0xfb')](_0x55b32e['audiofile']+_0xe547('0xfc'));}catch(_0x38138c){logger[_0xe547('0x26')](_0x38138c);}return _0x526633;}else{return this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0xfd'),_0x55b32e[_0xe547('0xee')]));}}return this['channel']['error'](_0x35a3e1,'SestekNDA\x20is\x20unreachable');};AGIVertices[_0xe547('0x10')]['end']=function(_0x4aa1c1){logger[_0xe547('0x28')](util['format']('Enter\x20in\x20END\x20(%s)\x20block',_0x4aa1c1['label']));return this[_0xe547('0xd')]['noop']('end');};AGIVertices[_0xe547('0x10')][_0xe547('0xfe')]=function(_0x43d138){logger[_0xe547('0x28')](util['format']('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x43d138[_0xe547('0xa0')]));var _0xdb9bee='';if(_0x43d138[_0xe547('0xff')]){if(!this['isConfigured'](_0x43d138[_0xe547('0xff')])){return this[_0xe547('0xd')]['error'](_0x43d138,_0xe547('0x100'));}else{var _0x2a67a4=parseInt(_0x43d138[_0xe547('0xff')],0xa);if(isNaN(_0x2a67a4)){_0xdb9bee=_0x43d138[_0xe547('0xff')];}else{_0xdb9bee=this[_0xe547('0x1a')][_0xe547('0x67')](this,_0x43d138[_0xe547('0xff')]);if(!_0xdb9bee){return this[_0xe547('0xd')][_0xe547('0x26')](_0x43d138,_0xe547('0x101'));}}}}else if(_0x43d138[_0xe547('0x102')]){_0xdb9bee=_0x43d138[_0xe547('0x102')];}else{return this[_0xe547('0xd')][_0xe547('0x26')](_0x43d138,'no\x20trunk\x20selected');}var _0xd46ba6=this[_0xe547('0xd')][_0xe547('0x4e')](_0xe547('0xdd'),[util['format'](_0xe547('0x103'),_0xdb9bee,_0x43d138[_0xe547('0x3f')]),_0x43d138['timeout'],_0x43d138['opts'],_0x43d138[_0xe547('0x5a')]]);if(_0xd46ba6[_0xe547('0x9c')]===-0x1){return _0xd46ba6;}return this['channel'][_0xe547('0xa1')](util['format']('Executed\x20command\x20%s',_0xe547('0xdd')));};AGIVertices[_0xe547('0x10')]['finally']=function(_0x287cb7){logger[_0xe547('0x28')](util[_0xe547('0x23')]('Enter\x20in\x20FINALLY\x20(%s)\x20block',_0x287cb7['label']));return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0x104'));};AGIVertices[_0xe547('0x10')]['getdigits']=function(_0x123b66){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x105'),_0x123b66[_0xe547('0xa0')]));if(_0x123b66['retry']===0x0){return this['maxRetry'](_0x123b66);}_0x123b66[_0xe547('0x106')]-=0x1;if(!this[_0xe547('0x7a')](_0x123b66[_0xe547('0x107')])){return this['channel']['error'](_0x123b66,_0xe547('0x108'));}var _0x604c32=this[_0xe547('0x109')][_0xe547('0x67')](this,_0x123b66[_0xe547('0x107')]);if(!_0x604c32){return this[_0xe547('0xd')][_0xe547('0x26')](_0x123b66,'no\x20file\x20audio\x20found');}if(!this[_0xe547('0x7a')](_0x123b66[_0xe547('0xd0')])){return this[_0xe547('0xd')][_0xe547('0x26')](_0xe547('0x10a'));}var _0x4fed7f=this[_0xe547('0xd')][_0xe547('0x10b')](_0x604c32,_0x123b66['response'],_0x123b66[_0xe547('0x10c')]);var _0x4836f6=_0x4fed7f['result']?_0x4fed7f[_0xe547('0x9c')][_0xe547('0x9a')]():'';logger[_0xe547('0x28')](_0xe547('0x10d'),JSON[_0xe547('0x6b')](_0x4fed7f));if(_0x4fed7f[_0xe547('0x9c')]===-0x1){this[_0xe547('0x30')][_0xe547('0x67')](this,_0x123b66,_0x4836f6);return _0x4fed7f;}else if(_0x4fed7f['extra']===_0xe547('0x5c')){_0x4fed7f[_0xe547('0x9c')]=_0x4836f6[_0xe547('0x95')]>=parseInt(_0x123b66[_0xe547('0x10e')])?'x':'i';}else{_0x4fed7f['result']=_0x4836f6[_0xe547('0x95')]>=parseInt(_0x123b66[_0xe547('0x10e')])&&_0x4836f6[_0xe547('0x95')]<=parseInt(_0x123b66[_0xe547('0x10c')])?'x':'i';}var _0x3ae0a5=this[_0xe547('0x11')][_0xe547('0x67')](this,_0x123b66['variable_id']);if(!_0x3ae0a5){return this[_0xe547('0xd')][_0xe547('0x26')](_0x123b66,_0xe547('0xd1'));}this[_0xe547('0xd')]['setVariable'](_0x3ae0a5,_0x4836f6);if(this[_0xe547('0x7a')](_0x123b66[_0xe547('0x10f')])){var _0x492eb9=parseInt(_0x123b66['hiddendigitsnum'],0xa);var _0x17707a=rs[_0xe547('0x110')]({'charset':'*','length':_0x492eb9});var _0x49d293=_0x4836f6[_0xe547('0x95')];if(_0x49d293>0x0){if(_0x49d293>_0x492eb9){this[_0xe547('0x30')][_0xe547('0x67')](this,_0x123b66,_0x123b66[_0xe547('0x111')]===_0xe547('0x112')?_0x17707a+_0x4836f6[_0xe547('0x113')](_0x492eb9):_0x4836f6[_0xe547('0x113')](0x0,_0x49d293-_0x492eb9)+_0x17707a);}else{this['createSquareDetailsReport'][_0xe547('0x67')](this,_0x123b66,rs['generate']({'charset':'*','length':_0x49d293}));}}else{this['createSquareDetailsReport']['sync'](this,_0x123b66,'');}}else{this[_0xe547('0x30')]['sync'](this,_0x123b66,_0x4836f6);}return _0x4fed7f;};AGIVertices[_0xe547('0x10')][_0xe547('0xc')]=function(_0x8409d8){logger[_0xe547('0x28')](util['format'](_0xe547('0x114'),_0x8409d8[_0xe547('0xa0')]));return this[_0xe547('0xb')](_0x8409d8);};AGIVertices['prototype']['goal']=function(_0xdab562){logger[_0xe547('0x28')](util['format'](_0xe547('0x115'),_0xdab562[_0xe547('0xa0')]));this['createSquareDetailsReport'][_0xe547('0x67')](this,_0xdab562,_0xdab562[_0xe547('0x116')]);return this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0x117'),_0xdab562[_0xe547('0x116')]));};AGIVertices[_0xe547('0x10')]['awspolly']=function(_0x54e6a1){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x118'),_0x54e6a1['label']));if(!this[_0xe547('0x7a')](_0x54e6a1['aws_access_key_id'])||!this[_0xe547('0x7a')](_0x54e6a1[_0xe547('0x7d')])){return this[_0xe547('0xd')]['noop'](_0xe547('0x119'));}if(!this[_0xe547('0x7a')](_0x54e6a1['text'])){return this[_0xe547('0xd')]['noop'](_0xe547('0xa2'));}this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0x11a'),_0x54e6a1['text']));var _0x4ed61a=this[_0xe547('0x7c')][_0xe547('0x67')](this,_0x54e6a1);if(_0x4ed61a){this['channel'][_0xe547('0xa1')](util[_0xe547('0x23')]('aws\x20Polly\x20%s\x20file\x20created',_0x4ed61a));var _0x112479=this[_0xe547('0xd')][_0xe547('0x11b')](_0x4ed61a);try{fs[_0xe547('0xfb')](_0x4ed61a+_0xe547('0xfc'));}catch(_0x90efce){logger[_0xe547('0x26')](_0x90efce);}return _0x112479;}return this[_0xe547('0xd')][_0xe547('0x26')](_0x54e6a1,_0xe547('0x11c'));};AGIVertices[_0xe547('0x10')][_0xe547('0x11d')]=function(_0xdab553){logger[_0xe547('0x28')](util['format'](_0xe547('0x11e'),_0xdab553[_0xe547('0xa0')]));if(!this[_0xe547('0x7a')](_0xdab553['aws_access_key_id'])||!this[_0xe547('0x7a')](_0xdab553[_0xe547('0x7d')])){return this['channel'][_0xe547('0xa1')](_0xe547('0x119'));}if(!this[_0xe547('0x7a')](_0xdab553[_0xe547('0x84')])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0x11f'));}if(!this[_0xe547('0x7a')](_0xdab553[_0xe547('0x53')])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0xa2'));}this[_0xe547('0xd')][_0xe547('0xe3')]=!![];this['createSquareDetailsReport'](_0xdab553);this[_0xe547('0x39')](_0xdab553['text'],'in','','');this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0x120'),_0xdab553[_0xe547('0x53')]));var _0x241106=this[_0xe547('0x82')]['sync'](this,_0xdab553);if(_0x241106){for(var _0x1fe2d1 in _0x241106){if(_0x241106[_0xe547('0x8c')](_0x1fe2d1)&&_[_0xe547('0x92')](_0x241106[_0x1fe2d1])){this[_0xe547('0xd')][_0xe547('0x96')](util[_0xe547('0x23')](_0xe547('0x121'),_0x1fe2d1['toUpperCase']()),_0x241106[_0x1fe2d1]);}}if(_[_0xe547('0x3c')](_0x241106['message'])){return this[_0xe547('0xd')][_0xe547('0xa1')]('Amazon\x20Lex\x20ready\x20for\x20fulfillment');}else{this['createSquareMessage'](_0x241106[_0xe547('0x122')],_0xe547('0xe5'),_0xe547('0x123'),'');return this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0x124'),_0x241106[_0xe547('0x122')]));}}return this[_0xe547('0xd')]['error'](_0xdab553,_0xe547('0x125'));};AGIVertices[_0xe547('0x10')][_0xe547('0x126')]=function(_0x318e4b){logger[_0xe547('0x28')](util[_0xe547('0x23')]('Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s',_0x318e4b[_0xe547('0xa0')],_0x318e4b[_0xe547('0x5c')]));if(!this[_0xe547('0x7a')](_0x318e4b['key'])){return this['channel']['noop'](_0xe547('0xe2'));}var _0x38d868=_0xe547('0x127');var _0xb0718b=util[_0xe547('0x23')]('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x2a923d=util[_0xe547('0x23')](_0xe547('0x94'),_0xb0718b,_0x38d868);var _0x4495b6=!![];if(_0x318e4b[_0xe547('0x128')]==='NOBEEP'){_0x4495b6=![];}var _0x5a9fe2=this['channel'][_0xe547('0x129')](_0xb0718b,_0x38d868,_0x318e4b[_0xe547('0x12a')],_0x318e4b['timeout'],undefined,_0x4495b6);if(_0x5a9fe2[_0xe547('0x9c')]!==-0x1){this[_0xe547('0xd')][_0xe547('0xa1')](util['format'](_0xe547('0x12b'),_0x2a923d));var _0x31a7ca=this[_0xe547('0x85')][_0xe547('0x67')](this,_0x318e4b,_0x2a923d);if(_0x31a7ca){for(var _0x39ac3c in _0x31a7ca){if(_0x31a7ca[_0xe547('0x8c')](_0x39ac3c)){this['channel']['setVariable'](util[_0xe547('0x23')](_0xe547('0x12c'),_0x39ac3c[_0xe547('0x60')]()),_0x31a7ca[_0x39ac3c]);}}return this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0x12d'),JSON['stringify'](_0x31a7ca)));}}return _0x5a9fe2;};AGIVertices[_0xe547('0x10')]['tildeasr']=function(_0x58b535){logger[_0xe547('0x28')](util['format'](_0xe547('0x12e'),_0x58b535[_0xe547('0xa0')]));if(!this[_0xe547('0x7a')](_0x58b535['appid'])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0x12f'));}if(!this['isConfigured'](_0x58b535[_0xe547('0x130')])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0x131'));}var _0x59f750=_0xe547('0x127');var _0x2b76b2=util[_0xe547('0x23')]('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x49756d=util[_0xe547('0x23')](_0xe547('0x94'),_0x2b76b2,_0x59f750);var _0x2414e7=!![];if(_0x58b535[_0xe547('0x128')]===_0xe547('0x132')){_0x2414e7=![];}var _0x5dec8a=this[_0xe547('0xd')][_0xe547('0x129')](_0x2b76b2,_0x59f750,_0x58b535['intKey'],_0x58b535['timeout'],undefined,_0x2414e7);if(_0x5dec8a['result']!==-0x1){this[_0xe547('0xd')]['noop'](util[_0xe547('0x23')](_0xe547('0x133'),_0x49756d));var _0x4639ad=this[_0xe547('0x87')][_0xe547('0x67')](this,_0x58b535,_0x49756d);if(_0x4639ad){for(var _0x77107f in _0x4639ad){if(_0x4639ad['hasOwnProperty'](_0x77107f)){this['channel']['setVariable'](util[_0xe547('0x23')](_0xe547('0x134'),_0x77107f[_0xe547('0x60')]()),_0x4639ad[_0x77107f]);}}return this[_0xe547('0xd')]['noop'](util[_0xe547('0x23')](_0xe547('0x135'),JSON[_0xe547('0x6b')](_0x4639ad)));}}return _0x5dec8a;};AGIVertices['prototype'][_0xe547('0x136')]=function(_0x31edae){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x137'),_0x31edae[_0xe547('0xa0')]));return this['channel']['continueAt'](_0x31edae[_0xe547('0x34')],_0x31edae['extension'],_0x31edae[_0xe547('0x36')]);};AGIVertices['prototype']['gotoif']=function(_0x14138b){logger['info'](util[_0xe547('0x23')](_0xe547('0x138'),_0x14138b[_0xe547('0xa0')]));if(!this['isConfigured'](_0x14138b[_0xe547('0x139')])){return this[_0xe547('0xd')]['error'](_0x14138b,_0xe547('0x13a'));}try{var _0x67da3c=eval(_0x14138b['condition'])?_0xe547('0x13b'):_0xe547('0x13c');this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0x13d'),_0x14138b[_0xe547('0x139')],_0x67da3c));return{'code':0xc8,'result':_0x67da3c};}catch(_0xa9dde0){return{'code':0xc8,'result':_0xe547('0x13c')};}};AGIVertices['prototype']['gotoiftime']=function(_0x5cee8c){logger[_0xe547('0x28')](util['format'](_0xe547('0x13e'),_0x5cee8c[_0xe547('0xa0')]));if(!this[_0xe547('0x7a')](_0x5cee8c['interval_id'])){return this[_0xe547('0xd')]['error'](_0x5cee8c,_0xe547('0x13f'));}var _0x1a62be=this[_0xe547('0x1e')][_0xe547('0x67')](this,_0x5cee8c[_0xe547('0x140')]);if(!_0x1a62be){return this[_0xe547('0xd')][_0xe547('0x26')](_0x5cee8c,_0xe547('0x141'));}for(var _0x518b5d=0x0;_0x518b5d<_0x1a62be[_0xe547('0x95')];_0x518b5d+=0x1){var _0x3eff41=this[_0xe547('0xd')][_0xe547('0x11')](util['format'](_0xe547('0x142'),_0x1a62be[_0x518b5d]));if(_0x3eff41[_0xe547('0x9c')]===-0x1){return _0x3eff41;}logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x143'),_0x1a62be[_0x518b5d],_0x3eff41[_0xe547('0x99')]));if(_0x3eff41[_0xe547('0x99')]===_0xe547('0x13b')){logger['info'](util[_0xe547('0x23')](_0xe547('0x143'),_0x1a62be[_0x518b5d],_0xe547('0x13b')));this['channel'][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0x143'),_0x1a62be[_0x518b5d],_0xe547('0x13b')));return{'code':0xc8,'result':'true'};}else{logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x143'),_0x1a62be[_0x518b5d],_0xe547('0x13c')));this['channel']['noop'](util['format']('IFTIME\x20%s\x20%s',_0x1a62be[_0x518b5d],_0xe547('0x13c')));}}return{'code':0xc8,'result':_0xe547('0x13c')};};AGIVertices[_0xe547('0x10')]['hangup']=function(_0x41c840){logger[_0xe547('0x28')](util['format'](_0xe547('0x144'),_0x41c840[_0xe547('0xa0')]));return this['channel'][_0xe547('0x145')]();};AGIVertices['prototype'][_0xe547('0x146')]=function(_0x5af077){logger['info'](util[_0xe547('0x23')](_0xe547('0x147'),_0x5af077[_0xe547('0xa0')]));if(!this[_0xe547('0x7a')](_0x5af077[_0xe547('0x70')])){return this[_0xe547('0xd')]['noop']('no\x20key\x20configured');}var _0x489bff=_0xe547('0x127');var _0x203055=util[_0xe547('0x23')](_0xe547('0x148'),FILES_PATH,rs[_0xe547('0x110')](0x4));var _0x33dc18=util['format'](_0xe547('0x94'),_0x203055,_0x489bff);var _0x4a6d9b=!![];if(_0x5af077['beep']===_0xe547('0x132')){_0x4a6d9b=![];}var _0x1ef203=this[_0xe547('0xd')][_0xe547('0x129')](_0x203055,_0x489bff,_0x5af077[_0xe547('0x12a')],_0x5af077[_0xe547('0x5c')],undefined,_0x4a6d9b);if(_0x1ef203[_0xe547('0x9c')]!==-0x1){this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0x149'),_0x33dc18));var _0x585a16=this['ispeechASR']['sync'](this,_0x5af077,_0x33dc18);if(_0x585a16){for(var _0x387f45 in _0x585a16){if(_0x585a16[_0xe547('0x8c')](_0x387f45)){this[_0xe547('0xd')]['setVariable'](util[_0xe547('0x23')](_0xe547('0x14a'),_0x387f45[_0xe547('0x60')]()),_0x585a16[_0x387f45]);}}return this[_0xe547('0xd')]['noop'](util[_0xe547('0x23')](_0xe547('0x14b'),JSON[_0xe547('0x6b')](_0x585a16)));}}return _0x1ef203;};AGIVertices[_0xe547('0x10')][_0xe547('0x14c')]=function(_0x253e93){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x14d'),_0x253e93['label']));if(!this[_0xe547('0x7a')](_0x253e93['key'])){return this[_0xe547('0xd')]['noop'](_0xe547('0xe2'));}if(!this['isConfigured'](_0x253e93['text'])){return this[_0xe547('0xd')]['noop'](_0xe547('0xa2'));}this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')]('Trying\x20ispeech\x20TTS\x20%s',_0x253e93[_0xe547('0x53')]));var _0x439370=this['ispeechTTS']['sync'](this,_0x253e93);if(_0x439370){this['channel'][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0x149'),_0x439370));var _0x25b7f5=this[_0xe547('0xd')]['streamFile'](_0x439370,_0x253e93[_0xe547('0x12a')]);try{fs[_0xe547('0xfb')](_0x439370+_0xe547('0xfc'));}catch(_0x43c085){logger[_0xe547('0x26')](_0x43c085);}return _0x25b7f5;}return this['channel'][_0xe547('0x26')](_0x253e93,_0xe547('0x14e'));};AGIVertices['prototype'][_0xe547('0x14f')]=function(_0x54245d){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x150'),_0x54245d['label']));if(!this[_0xe547('0x7a')](_0x54245d[_0xe547('0x151')])){return this[_0xe547('0xd')]['error'](_0x54245d,_0xe547('0x152'));}logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x153'),this['channel']['callerid'],_0x54245d[_0xe547('0x151')]));var _0x5ed44b=this[_0xe547('0x4c')]['sync'](this,_0x54245d[_0xe547('0x151')]);if(_0x5ed44b){logger['info'](util['format']('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0xe547('0x47')],_0x54245d[_0xe547('0x151')]));this[_0xe547('0xd')]['noop'](util[_0xe547('0x23')](_0xe547('0x154'),this[_0xe547('0xd')]['callerid'],_0x54245d[_0xe547('0x151')]));return{'code':0xc8,'result':_0xe547('0x155')};}else{logger[_0xe547('0x28')](util['format'](_0xe547('0x156'),this[_0xe547('0xd')]['callerid'],_0x54245d[_0xe547('0x151')]));this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0x156'),this[_0xe547('0xd')][_0xe547('0x47')],_0x54245d[_0xe547('0x151')]));return{'code':0xc8,'result':_0xe547('0x157')};}};AGIVertices[_0xe547('0x10')]['logout']=function(_0x5c617f){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x158'),_0x5c617f['label']));if(!this[_0xe547('0x7a')](_0x5c617f[_0xe547('0x151')])){return this[_0xe547('0xd')][_0xe547('0x26')](_0x5c617f,_0xe547('0x152'));}logger['info'](util['format'](_0xe547('0x153'),this[_0xe547('0xd')][_0xe547('0x47')],_0x5c617f[_0xe547('0x151')]));var _0x5f3cf2=this[_0xe547('0x49')][_0xe547('0x67')](this,_0x5c617f[_0xe547('0x151')]);if(_0x5f3cf2){logger['info'](util[_0xe547('0x23')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xe547('0xd')][_0xe547('0x47')],_0x5c617f[_0xe547('0x151')]));this['channel'][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0x154'),this['channel']['callerid'],_0x5c617f[_0xe547('0x151')]));return{'code':0xc8,'result':_0xe547('0x155')};}else{logger[_0xe547('0x28')](util[_0xe547('0x23')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xe547('0xd')][_0xe547('0x47')],_0x5c617f[_0xe547('0x151')]));this['channel'][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0x156'),this[_0xe547('0xd')][_0xe547('0x47')],_0x5c617f[_0xe547('0x151')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xe547('0x10')]['math']=function(_0x408f46){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x159'),_0x408f46[_0xe547('0xa0')]));if(!this[_0xe547('0x7a')](_0x408f46[_0xe547('0x15a')])){return this['channel'][_0xe547('0x26')](_0x408f46,_0xe547('0x15b'));}this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0x15c'),_0x408f46['operation']));var _0x55b2b6=eval(_0x408f46[_0xe547('0x15a')]);if(!this[_0xe547('0x7a')](_0x408f46['variable_id'])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0x10a'));}var _0xfabace=this['getVariable']['sync'](this,_0x408f46[_0xe547('0xd0')]);if(!_0xfabace){return this['channel'][_0xe547('0x26')](_0x408f46,'no\x20variable\x20found');}if(_[_0xe547('0x91')](_0x55b2b6)){var _0x3423a4=this;_0x55b2b6[_0xe547('0xd2')](function(_0x20d70,_0x133ddf){_0x3423a4[_0xe547('0xd')][_0xe547('0x96')](util['format'](_0xe547('0x15d'),_0xfabace,_0x133ddf),_0x20d70);});return this[_0xe547('0xd')]['noop'](util[_0xe547('0x23')](_0xe547('0x15e'),_0xfabace));}else{return this['channel'][_0xe547('0x96')](_0xfabace,_0x55b2b6);}};AGIVertices[_0xe547('0x10')][_0xe547('0xa')]=function(_0x4c1230){logger[_0xe547('0x28')](util['format']('Enter\x20in\x20MENU\x20(%s)\x20block',_0x4c1230[_0xe547('0xa0')]));if(_0x4c1230[_0xe547('0x106')]===0x0){return this['maxRetry'](_0x4c1230);}_0x4c1230[_0xe547('0x106')]-=0x1;if(!this[_0xe547('0x7a')](_0x4c1230[_0xe547('0x107')])){return this['channel'][_0xe547('0x26')](_0x4c1230,_0xe547('0x108'));}var _0x10280a=this[_0xe547('0x109')][_0xe547('0x67')](this,_0x4c1230[_0xe547('0x107')]);if(!_0x10280a){return this[_0xe547('0xd')]['error'](_0x4c1230,_0xe547('0x15f'));}var _0x130ee2=this[_0xe547('0xd')][_0xe547('0x10b')](_0x10280a,_0x4c1230[_0xe547('0x160')],_0x4c1230[_0xe547('0x161')]);var _0x5d4264=_0x130ee2['result'];if(_0x130ee2[_0xe547('0x9c')]===-0x1){this[_0xe547('0x30')][_0xe547('0x67')](this,_0x4c1230,'-1');return _0x130ee2;}else if(_0x130ee2[_0xe547('0x99')]===_0xe547('0x5c')){_0x130ee2[_0xe547('0x9c')]=_0x130ee2[_0xe547('0x9c')][_0xe547('0x95')]>0x0?_0x130ee2[_0xe547('0x9c')]:'t';}else if(_[_0xe547('0x3b')](_0x130ee2[_0xe547('0x9c')])){_0x130ee2['result']='#';_0x5d4264='#';}if(!this['isConfigured'](_0x4c1230[_0xe547('0xd0')])){this[_0xe547('0xd')]['noop']('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x1ca191=this[_0xe547('0x11')][_0xe547('0x67')](this,_0x4c1230[_0xe547('0xd0')]);if(!_0x1ca191){return this['channel']['error'](_0x4c1230,_0xe547('0xd1'));}this['channel']['setVariable'](_0x1ca191,_0x5d4264);}this['createSquareDetailsReport'][_0xe547('0x67')](this,_0x4c1230,_0x5d4264);return _0x130ee2;};AGIVertices['prototype'][_0xe547('0xa1')]=function(_0x480e1a){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x162'),_0x480e1a[_0xe547('0xa0')]));return this[_0xe547('0xd')]['noop'](_0x480e1a[_0xe547('0x163')]||_0x480e1a[_0xe547('0xa0')]);};AGIVertices[_0xe547('0x10')][_0xe547('0x164')]=function(_0xfad93){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x165'),_0xfad93[_0xe547('0xa0')]));if(!this[_0xe547('0x7a')](_0xfad93[_0xe547('0x151')])){return this[_0xe547('0xd')][_0xe547('0x26')](_0xfad93,_0xe547('0x152'));}logger[_0xe547('0x28')](util['format'](_0xe547('0x153'),this[_0xe547('0xd')][_0xe547('0x47')],_0xfad93['findBy']));var _0x591ae6=this['getPause']['sync'](this,_0xfad93[_0xe547('0x166')]);var _0x3fd3b4=this[_0xe547('0x45')]['sync'](this,_0xfad93[_0xe547('0x151')],_0x591ae6);if(_0x3fd3b4){logger['info'](util[_0xe547('0x23')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0xe547('0x47')],_0xfad93['findBy']));this[_0xe547('0xd')][_0xe547('0xa1')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0xe547('0xd')]['callerid'],_0xfad93[_0xe547('0x151')]));return{'code':0xc8,'result':_0xe547('0x155')};}else{logger[_0xe547('0x28')](util['format'](_0xe547('0x156'),this[_0xe547('0xd')][_0xe547('0x47')],_0xfad93['findBy']));this['channel'][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0x154'),this['channel'][_0xe547('0x47')],_0xfad93[_0xe547('0x151')]));return{'code':0xc8,'result':_0xe547('0x157')};}};AGIVertices[_0xe547('0x10')][_0xe547('0x167')]=function(_0x245f48){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x168'),_0x245f48[_0xe547('0xa0')]));if(!this[_0xe547('0x7a')](_0x245f48['file_id'])){return this[_0xe547('0xd')][_0xe547('0x26')](_0x245f48,'no\x20file\x20audio\x20selected');}var _0x5d9f24=this[_0xe547('0x109')][_0xe547('0x67')](this,_0x245f48[_0xe547('0x107')]);if(!_0x5d9f24){return this[_0xe547('0xd')][_0xe547('0x26')](_0x245f48,_0xe547('0x15f'));}var _0x52a83f=this[_0xe547('0xd')]['exec']('PLAYBACK',[_0x5d9f24,_0x245f48[_0xe547('0xdf')]]);if(_0x52a83f[_0xe547('0x9c')]===-0x1){return _0x52a83f;}return this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0xbb'),'PLAYBACK',_0x5d9f24));};AGIVertices[_0xe547('0x10')][_0xe547('0x169')]=function(_0x313a34){logger[_0xe547('0x28')](util['format']('Enter\x20in\x20QUEUE\x20(%s)\x20block',_0x313a34['label']));if(!this[_0xe547('0x7a')](_0x313a34['queue_id'])){return this[_0xe547('0xd')]['error'](_0x313a34,'no\x20queue\x20selected');}var _0x248206='';var _0x5e4418=parseInt(_0x313a34[_0xe547('0x16a')],0xa);if(isNaN(_0x5e4418)){_0x248206=_0x313a34['queue_id'];}else{_0x248206=this['getVoiceQueue'][_0xe547('0x67')](this,_0x313a34[_0xe547('0x16a')]);if(!_0x248206){return this['channel'][_0xe547('0x26')](_0x313a34,'no\x20queue\x20found');}}var _0x35edd0='';if(this[_0xe547('0x7a')](_0x313a34[_0xe547('0x107')])){var _0x4fc609=this[_0xe547('0x109')]['sync'](this,_0x313a34[_0xe547('0x107')]);if(_0x4fc609){_0x35edd0=_0x4fc609;}}this[_0xe547('0x30')]['sync'](this,_0x313a34,_0x248206);if(_0x313a34[_0xe547('0xdf')][_0xe547('0x16b')]('x')<0x0){_0x313a34[_0xe547('0xdf')]+='x';}if(_0x313a34[_0xe547('0xdf')][_0xe547('0x16b')]('X')<0x0){_0x313a34[_0xe547('0xdf')]+='X';}this[_0xe547('0xd')][_0xe547('0x96')](_0xe547('0x16c'),_0x248206?_0x248206[_0xe547('0x16d')]():'');var _0x276979=this[_0xe547('0xd')][_0xe547('0x4e')](_0xe547('0x16e'),[_0x248206,_0x313a34[_0xe547('0xdf')],_0x313a34['url'],_0x35edd0,_0x313a34[_0xe547('0x5c')],_0x313a34[_0xe547('0xab')],_0x313a34[_0xe547('0x16f')],_0x313a34['gosub'],'',_0x313a34[_0xe547('0x170')]]);if(_0x276979[_0xe547('0x9c')]===-0x1){return _0x276979;}return this[_0xe547('0xd')]['noop'](util[_0xe547('0x23')](_0xe547('0xbb'),'QUEUE',_0x248206));};AGIVertices['prototype']['record']=function(_0x47d9b6){logger[_0xe547('0x28')](util['format']('Enter\x20in\x20RECORD\x20(%s)\x20block',_0x47d9b6[_0xe547('0xa0')]));var _0x169d35=_0x47d9b6[_0xe547('0x171')]||'wav';var _0x363c2f=util[_0xe547('0x23')](_0xe547('0x172'),this[_0xe547('0xd')][_0xe547('0x31')],rs[_0xe547('0x110')](0x5));var _0x26b289=util[_0xe547('0x23')](_0xe547('0x173'),FILES_PATH,_0x363c2f,_0x169d35);var _0x195a9d=util['format']('%s/recordings/%s',FILES_PATH,_0x363c2f);this[_0xe547('0x174')][_0xe547('0x67')](this,_0x47d9b6,_0x363c2f,_0x26b289);this[_0xe547('0xd')][_0xe547('0x96')](_0xe547('0x175'),_0x363c2f);logger[_0xe547('0x28')](_0xe547('0x176'),_0x195a9d,_0x169d35,_0x47d9b6[_0xe547('0x177')],_0x47d9b6[_0xe547('0x5c')]);return this['channel'][_0xe547('0x129')](_0x195a9d,_0x169d35,_0x47d9b6[_0xe547('0x177')],_0x47d9b6[_0xe547('0x5c')],undefined,!![]);};AGIVertices[_0xe547('0x10')][_0xe547('0x178')]=function(_0x26bace){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x179'),_0x26bace[_0xe547('0xa0')]));if(!this['isConfigured'](_0x26bace[_0xe547('0x5a')])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0x17a'));}var _0x3ef7e3=this[_0xe547('0x59')][_0xe547('0x67')](this,_0x26bace);logger[_0xe547('0x28')](util[_0xe547('0x23')]('Response:',util[_0xe547('0x17b')](_0x3ef7e3,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x26bace['variable_id'])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0x17c'));}var _0x4e9747=this[_0xe547('0x11')][_0xe547('0x67')](this,_0x26bace[_0xe547('0xd0')]);if(!_0x4e9747){return this[_0xe547('0xd')]['error'](_0x26bace,_0xe547('0xd1'));}this[_0xe547('0xd')]['setVariable'](util[_0xe547('0x23')](_0xe547('0x17d'),_0x4e9747),_0x3ef7e3['statusCode']?_0x3ef7e3['statusCode']:_0xe547('0x17e'));this[_0xe547('0xd')][_0xe547('0x96')](util['format'](_0xe547('0x17f'),_0x4e9747),_0x3ef7e3['statusMessage']?_0x3ef7e3[_0xe547('0x6d')]:'OK');if(_0x3ef7e3['body']){try{this['saveRestApiResult'](_0x3ef7e3[_0xe547('0x61')],_0x4e9747);}catch(_0x38853d){logger[_0xe547('0x26')](util['format']('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x4e9747));}}return this[_0xe547('0xd')][_0xe547('0xa1')](util['format'](_0xe547('0xd6'),_0x4e9747));};AGIVertices['prototype'][_0xe547('0x180')]=function(_0x1d9e0c){logger[_0xe547('0x28')](util['format'](_0xe547('0x181'),_0x1d9e0c['label']));return this[_0xe547('0xd')][_0xe547('0x182')](_0x1d9e0c[_0xe547('0x183')][_0xe547('0x4f')](/\s+/g,''),_0x1d9e0c[_0xe547('0x177')]);};AGIVertices[_0xe547('0x10')]['saynumber']=function(_0xd16dd6){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x184'),_0xd16dd6[_0xe547('0xa0')]));return this[_0xe547('0xd')][_0xe547('0x185')](_0xd16dd6[_0xe547('0x5d')][_0xe547('0x4f')](/\s+/g,''),_0xd16dd6[_0xe547('0x177')]);};AGIVertices[_0xe547('0x10')][_0xe547('0x186')]=function(_0x920266){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x187'),_0x920266[_0xe547('0xa0')]));return this['channel'][_0xe547('0x188')](_0x920266['text'],_0x920266[_0xe547('0x177')]);};AGIVertices[_0xe547('0x10')][_0xe547('0x189')]=function(_0x52d0c5){logger[_0xe547('0x28')](util[_0xe547('0x23')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x52d0c5['label']));if(!this[_0xe547('0x7a')](_0x52d0c5['account_id'])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0x18a'));}var _0x22bde7=this[_0xe547('0x18b')][_0xe547('0x67')](this,_0x52d0c5[_0xe547('0x18c')]);if(!_0x22bde7||!_0x22bde7[_0xe547('0x18d')]){return this[_0xe547('0xd')][_0xe547('0x26')](_0x52d0c5,_0xe547('0x18e'));}var _0x572fb5={'from':util['format'](_0xe547('0x18f'),_0x22bde7[_0xe547('0x13')],_0x22bde7['email']||_0x22bde7['Smtp'][_0xe547('0x190')]),'to':_0x52d0c5['to']||'','cc':_0x52d0c5['cc']||'','bcc':_0x52d0c5[_0xe547('0x191')]||'','subject':_0x52d0c5['subject'],'html':_0x52d0c5[_0xe547('0x53')],'text':_0x52d0c5[_0xe547('0x53')]};var _0x42d6b5={'tls':{'rejectUnauthorized':![]}};if(_0x22bde7['Smtp'][_0xe547('0x192')]){_0x42d6b5['service']=_0x22bde7[_0xe547('0x18d')]['service'];}else{_0x42d6b5[_0xe547('0x193')]=_0x22bde7['Smtp'][_0xe547('0x193')];_0x42d6b5[_0xe547('0x194')]=_0x22bde7[_0xe547('0x18d')][_0xe547('0x194')];_0x42d6b5[_0xe547('0x195')]=_0x22bde7[_0xe547('0x18d')][_0xe547('0x195')];}if(_0x22bde7[_0xe547('0x18d')][_0xe547('0x196')]){_0x42d6b5[_0xe547('0x197')]={'user':_0x22bde7[_0xe547('0x18d')]['user'],'pass':_0x22bde7[_0xe547('0x18d')][_0xe547('0x198')]};}if(this[_0xe547('0x7a')](_0x52d0c5[_0xe547('0x199')])){}logger['debug']('sendMail\x20message',JSON[_0xe547('0x6b')](_0x572fb5));this[_0xe547('0x30')]['sync'](this,_0x52d0c5,_0x52d0c5[_0xe547('0x18c')]);this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')]('Trying\x20SendMail\x20with\x20account\x20%s',_0x22bde7[_0xe547('0x13')]));this[_0xe547('0x19a')][_0xe547('0x67')](this,_0x42d6b5,_0x572fb5);return this[_0xe547('0xd')]['noop'](_0xe547('0x19b'));};AGIVertices[_0xe547('0x10')][_0xe547('0x19c')]=function(_0x3952dc){logger['info'](util[_0xe547('0x23')](_0xe547('0x19d'),_0x3952dc[_0xe547('0xa0')]));return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0x19e'));};AGIVertices['prototype'][_0xe547('0x19f')]=function(_0x46306e){logger['info'](util[_0xe547('0x23')]('Enter\x20in\x20SENDSMS\x20(%s)\x20block',_0x46306e[_0xe547('0xa0')]));if(!this['isConfigured'](_0x46306e[_0xe547('0x1a0')])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0x1a1'));}var _0x560c0d=this['getSmsAccount'][_0xe547('0x67')](this,_0x46306e[_0xe547('0x1a0')]);if(!_0x560c0d){return this[_0xe547('0xd')][_0xe547('0x26')](_0x46306e,'no\x20sms\x20account\x20found');}var _0xba607e={'body':_0x46306e[_0xe547('0x1a2')],'phone':_0x46306e['to']||'','SmsAccountId':_0x560c0d['id']};logger[_0xe547('0xd8')](_0xe547('0x1a3'),JSON['stringify'](_0xba607e));this[_0xe547('0x30')][_0xe547('0x67')](this,_0x46306e,_0x46306e[_0xe547('0x1a0')]);this[_0xe547('0xd')][_0xe547('0xa1')](util['format'](_0xe547('0x1a4'),_0x560c0d[_0xe547('0x13')]));this[_0xe547('0x2f')][_0xe547('0x67')](this,_0xba607e);return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0x1a5'));};AGIVertices[_0xe547('0x10')][_0xe547('0x1a6')]=function(_0x37051f){logger['info'](util[_0xe547('0x23')](_0xe547('0x1a7'),_0x37051f['label']));if(!this[_0xe547('0x7a')](_0x37051f[_0xe547('0xd0')])){return this['channel']['error'](_0x37051f,'no\x20variable\x20selected');}var _0x80957f=this[_0xe547('0x11')][_0xe547('0x67')](this,_0x37051f['variable_id']);if(!_0x80957f){return this[_0xe547('0xd')][_0xe547('0x26')](_0x37051f,_0xe547('0xd1'));}return this[_0xe547('0xd')][_0xe547('0x96')](_0x80957f,_0x37051f[_0xe547('0x1a8')]);};AGIVertices[_0xe547('0x10')]['start']=function(_0x57b042){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x1a9'),_0x57b042[_0xe547('0xa0')]));this[_0xe547('0xd')]['noop'](_0xe547('0x1aa'));if(_0x57b042[_0xe547('0xaf')]===_0xe547('0x1ab')){this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0x1ac'));return this[_0xe547('0xd')]['answer']();}return this['channel'][_0xe547('0xa1')]('Skipped\x20Answer');};AGIVertices[_0xe547('0x10')][_0xe547('0x1ad')]=function(_0x505301){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x1ae'),_0x505301[_0xe547('0xa0')]));if(!this[_0xe547('0x7a')](_0x505301[_0xe547('0x1af')])){return this[_0xe547('0xd')]['error'](_0x505301,_0xe547('0x1b0'));}var _0x28a3d7=this['getSquareProject'][_0xe547('0x67')](this,_0x505301['project_id']);if(!this[_0xe547('0x7a')](_0x28a3d7)){return this[_0xe547('0xd')][_0xe547('0x26')](_0x505301,util[_0xe547('0x23')](_0xe547('0x1b1'),_0x505301[_0xe547('0x1af')]));}if(_0x28a3d7===this[_0xe547('0xd')][_0xe547('0x32')]){return this[_0xe547('0xd')][_0xe547('0x26')](_0x505301,_0xe547('0x1b2'));}this[_0xe547('0x30')][_0xe547('0x67')](this,_0x505301,_0x28a3d7);var _0x26d426=this[_0xe547('0xd')][_0xe547('0x4e')](_0xe547('0x1b3'),util[_0xe547('0x23')](_0xe547('0x1b4'),config[_0xe547('0xab')][_0xe547('0x193')]||'127.0.0.1',_0x28a3d7,this[_0xe547('0xd')]['arg_1']));if(_0x26d426['result']===-0x1){return _0x26d426;}return this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0xbb'),'AGI',_0x28a3d7));};AGIVertices[_0xe547('0x10')][_0xe547('0x1b5')]=function(_0x4aaf57){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x1b6'),_0x4aaf57[_0xe547('0xa0')]));var _0x410018=this['shellCommand'][_0xe547('0x67')](this,_0x4aaf57[_0xe547('0xad')]);this['createSquareDetailsReport']['sync'](this,_0x4aaf57,_0x4aaf57[_0xe547('0xad')]);if(this[_0xe547('0x7a')](_0x4aaf57[_0xe547('0xd0')])){var _0x2ed1c9=this[_0xe547('0x11')][_0xe547('0x67')](this,_0x4aaf57[_0xe547('0xd0')]);if(_0x2ed1c9){this[_0xe547('0xd')]['setVariable'](_0x2ed1c9,_0x410018);return this[_0xe547('0xd')][_0xe547('0xa1')](util['format'](_0xe547('0x1b7'),_0x4aaf57['command'],_0x2ed1c9));}}return this['channel'][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0x1b8'),_0x4aaf57[_0xe547('0xad')]));};AGIVertices[_0xe547('0x10')][_0xe547('0x1b9')]=function(_0xfa75bb){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x1ba'),_0xfa75bb[_0xe547('0xa0')]));_0xfa75bb[_0xe547('0x53')]=_0xfa75bb[_0xe547('0x53')][_0xe547('0x4f')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0xfa75bb[_0xe547('0x51')])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0x1bb'));}if(!this['isConfigured'](_0xfa75bb['text'])){return this[_0xe547('0xd')][_0xe547('0xa1')](_0xe547('0xa2'));}this['channel']['noop'](util[_0xe547('0x23')](_0xe547('0x1bc'),_0xfa75bb['text']));var _0x25a582=this[_0xe547('0x50')][_0xe547('0x67')](this,_0xfa75bb);if(_0x25a582){this[_0xe547('0xd')][_0xe547('0xa1')](util['format']('Google\x20Cloud\x20TTS\x20%s\x20file\x20created',_0x25a582));var _0x236bde=this[_0xe547('0xd')]['streamFile'](_0x25a582);try{fs['unlink'](_0x25a582+_0xe547('0xfc'));}catch(_0x266962){logger[_0xe547('0x26')](_0x266962);}return _0x236bde;}return this[_0xe547('0xd')]['error'](_0xfa75bb,_0xe547('0x1bd'));};AGIVertices['prototype'][_0xe547('0x1be')]=function(_0x291f81){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x1bf'),_0x291f81[_0xe547('0xa0')]));_0x291f81[_0xe547('0x53')]=_0x291f81[_0xe547('0x53')][_0xe547('0x4f')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x291f81['text'])){return this['channel'][_0xe547('0xa1')]('no\x20text\x20configured');}this['channel'][_0xe547('0xa1')](util['format'](_0xe547('0x1c0'),_0x291f81['text']));var _0x348d5c=this[_0xe547('0x57')]['sync'](this,_0x291f81);if(_0x348d5c){this[_0xe547('0xd')]['noop'](util[_0xe547('0x23')](_0xe547('0x1c1'),_0x348d5c));var _0x1a4a4d=this[_0xe547('0xd')][_0xe547('0x11b')](_0x348d5c);try{fs[_0xe547('0xfb')](_0x348d5c+'.wav');}catch(_0x21dac7){logger[_0xe547('0x26')](_0x21dac7);}return _0x1a4a4d;}return this[_0xe547('0xd')][_0xe547('0x26')](_0x291f81,_0xe547('0x1c2'));};AGIVertices[_0xe547('0x10')][_0xe547('0x1c3')]=function(_0x389a69){logger['info'](util[_0xe547('0x23')](_0xe547('0x1c4'),_0x389a69[_0xe547('0xa0')]));if(!this[_0xe547('0x7a')](_0x389a69[_0xe547('0x151')])){return this[_0xe547('0xd')]['error'](_0x389a69,'no\x20find\x20by\x20configured');}logger[_0xe547('0x28')](util['format'](_0xe547('0x153'),this['channel'][_0xe547('0x47')],_0x389a69['findBy']));var _0x813df8=this[_0xe547('0x48')]['sync'](this,_0x389a69['findBy']);if(_0x813df8){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x154'),this[_0xe547('0xd')][_0xe547('0x47')],_0x389a69['findBy']));this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0x154'),this['channel'][_0xe547('0x47')],_0x389a69[_0xe547('0x151')]));return{'code':0xc8,'result':'success'};}else{logger[_0xe547('0x28')](util['format'](_0xe547('0x156'),this[_0xe547('0xd')][_0xe547('0x47')],_0x389a69['findBy']));this[_0xe547('0xd')][_0xe547('0xa1')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xe547('0xd')][_0xe547('0x47')],_0x389a69['findBy']));return{'code':0xc8,'result':_0xe547('0x157')};}};AGIVertices[_0xe547('0x10')][_0xe547('0x1c5')]=function(_0x4002c0){logger[_0xe547('0x28')](util[_0xe547('0x23')](_0xe547('0x1c6'),_0x4002c0['label']));var _0x2bd2a4=this[_0xe547('0xd')][_0xe547('0x4e')](_0xe547('0x1c7'),[_0x4002c0[_0xe547('0x1c8')],_0x4002c0[_0xe547('0x6e')]]);if(_0x2bd2a4[_0xe547('0x9c')]===-0x1){return _0x2bd2a4;}return this[_0xe547('0xd')][_0xe547('0xa1')](util[_0xe547('0x23')](_0xe547('0xbb'),_0xe547('0x1c7'),_0x4002c0[_0xe547('0x1c8')]));};AGIVertices[_0xe547('0x10')][_0xe547('0x1c9')]=function(_0x33f1d1){logger['info'](util[_0xe547('0x23')](_0xe547('0x1ca'),_0x33f1d1[_0xe547('0xa0')]));if(!this['isConfigured'](_0x33f1d1[_0xe547('0xd0')])){return this['channel'][_0xe547('0x26')](_0x33f1d1,_0xe547('0x1cb'));}var _0x539473=this[_0xe547('0x11')][_0xe547('0x67')](this,_0x33f1d1[_0xe547('0xd0')]);if(!_0x539473){return this[_0xe547('0xd')][_0xe547('0x26')](_0x33f1d1,'no\x20variable\x20found');}var _0x5bf032=this[_0xe547('0xd')][_0xe547('0x11')](_0x539473);return{'code':0xc8,'result':_0x5bf032[_0xe547('0x99')]?_0x5bf032['extra']:'-'};};String['prototype'][_0xe547('0x98')]=function(_0x3b9878,_0x1bccdc){return this[_0xe547('0x97')](_0x3b9878)[_0xe547('0x1cc')](_0x1bccdc);};module[_0xe547('0x1cd')]=AGIVertices;
\ No newline at end of file
index c7483b8..0b0b0e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7067=['[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','message','acw','interface','[%s][HANGUP:UNIQUEID]','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','syncHangup','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','moment','../ami','../../../config/logger','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','milliseconds','diff','prototype','startAcw','channels','queue','ACW','mandatoryDisposition','name','mandatoryDispositionPause','Action','QueuePause','then','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','info','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','YYYY-MM-DD\x20HH:mm:ss','updateAcw','timer','update','uniqueid','[%s][UPDATE][ACWTIME:%s]','catch','error'];(function(_0x5ed117,_0xfdbfbb){var _0x23c762=function(_0x1aa690){while(--_0x1aa690){_0x5ed117['push'](_0x5ed117['shift']());}};_0x23c762(++_0xfdbfbb);}(_0x7067,0x120));var _0x7706=function(_0x16e065,_0x47ab34){_0x16e065=_0x16e065-0x0;var _0xd8e6af=_0x7067[_0x16e065];return _0xd8e6af;};'use strict';var util=require(_0x7706('0x0'));var _=require('lodash');var moment=require(_0x7706('0x1'));var ami=require(_0x7706('0x2'));var logger=require(_0x7706('0x3'))('acw');var RpcUser=require(_0x7706('0x4'));var RpcVoiceAgentReport=require(_0x7706('0x5'));function Acw(_0x406362){this[_0x7706('0x6')]=_0x406362['voiceQueues'];this[_0x7706('0x7')]=_0x406362[_0x7706('0x7')];this[_0x7706('0x8')]=_0x406362[_0x7706('0x8')];this['channels']={};ami['on'](_0x7706('0x9'),this[_0x7706('0xa')][_0x7706('0xb')](this));ami['on'](_0x7706('0xc'),this[_0x7706('0xd')][_0x7706('0xb')](this));ami['on'](_0x7706('0xe'),this['syncHangup'][_0x7706('0xb')](this));ami['on'](_0x7706('0xf'),this[_0x7706('0x10')]['bind'](this));ami['on'](_0x7706('0x11'),this[_0x7706('0x12')][_0x7706('0xb')](this));ami['on'](_0x7706('0x13'),this[_0x7706('0x14')]['bind'](this));ami['on'](_0x7706('0x15'),this['syncAgentConnectPreview'][_0x7706('0xb')](this));}function getDiff(_0x552bfb){var _0x72e4ac=moment()[_0x7706('0x16')](0x0);var _0xbe1044=moment(_0x552bfb)['milliseconds'](0x0);return _0x72e4ac[_0x7706('0x17')](_0xbe1044,'seconds');}Acw[_0x7706('0x18')][_0x7706('0x19')]=function(_0x349ac9){try{var _0x29b210=this;var _0xd3fed6=this['channels'][_0x349ac9]['interface'];var _0x33124d=this[_0x7706('0x1a')][_0x349ac9][_0x7706('0x1b')];var _0x1eeffb=this['voiceQueues'][_0x33124d];var _0x4dad85=![];var _0xb93e93=_0x7706('0x1c');if(_0x1eeffb[_0x7706('0x1d')]){if(_0x1eeffb['mandatoryDispositionPause'][_0x7706('0x1e')]){_0x4dad85=!![];_0xb93e93=_0x1eeffb[_0x7706('0x1f')]['name'];}}ami[_0x7706('0x20')]({'action':_0x7706('0x21'),'interface':_0xd3fed6,'paused':!![],'reason':_0xb93e93})[_0x7706('0x22')](function(_0x32490e){if(_0x29b210['agents'][_0xd3fed6]){return RpcUser['getAgent'](_0x29b210[_0x7706('0x7')][_0xd3fed6]['id'])['then'](function(_0x435f93){if(_0x435f93&&!_0x435f93[_0x7706('0x23')]){logger['info'](_0x7706('0x24'),_0x349ac9,_0xd3fed6,_0x33124d);var _0x1e0632=_0x29b210[_0x7706('0x1a')][_0x349ac9][_0x7706('0x25')]&&_0x29b210[_0x7706('0x1a')][_0x349ac9][_0x7706('0x26')]?_0x29b210[_0x7706('0x1a')][_0x349ac9][_0x7706('0x26')]:_0x349ac9;return RpcUser[_0x7706('0x27')](_0x29b210[_0x7706('0x7')][_0xd3fed6],_0xb93e93,_0x1e0632)[_0x7706('0x22')](function(_0x43e6ee){if(!_0x4dad85){_0x29b210[_0x7706('0x8')][_0xd3fed6]={};logger[_0x7706('0x28')](_0x7706('0x29'),_0x349ac9,_0x29b210[_0x7706('0x6')][_0x33124d][_0x7706('0x2a')],_0xd3fed6,_0x33124d);_0x29b210[_0x7706('0x8')][_0xd3fed6]['timer']=setTimeout(_0x29b210[_0x7706('0x2b')][_0x7706('0xb')](_0x29b210,_0xd3fed6),_0x29b210['voiceQueues'][_0x33124d]['acwTimeout']*0x3e8);_0x29b210['timers'][_0xd3fed6]['lastPauseAt']=moment()['format'](_0x7706('0x2c'));_0x29b210[_0x7706('0x8')][_0xd3fed6]['uniqueid']=_0x349ac9;_0x29b210[_0x7706('0x8')][_0xd3fed6][_0x7706('0x1b')]=_0x33124d;_0x29b210[_0x7706('0x8')][_0xd3fed6][_0x7706('0x2d')]=function(){var _0x56e581=getDiff(_0x29b210[_0x7706('0x8')][_0xd3fed6]['lastPauseAt']);clearTimeout(_0x29b210['timers'][_0xd3fed6]['timer']);_0x29b210[_0x7706('0x8')][_0xd3fed6][_0x7706('0x2e')]=![];RpcVoiceAgentReport[_0x7706('0x2f')]({'acwtime':_0x56e581},_0x29b210[_0x7706('0x8')][_0xd3fed6][_0x7706('0x30')],_0xd3fed6)[_0x7706('0x22')](function(_0x2aed9e){logger[_0x7706('0x28')](_0x7706('0x31'),_0x349ac9,_0x56e581,_0x2aed9e);})[_0x7706('0x32')](function(_0x54c880){logger[_0x7706('0x33')]('[%s][UPDATE][ERRORS:%s]',_0x349ac9,_0x54c880);});delete _0x29b210[_0x7706('0x8')][_0xd3fed6];};}});}else{logger[_0x7706('0x28')](_0x7706('0x34'),_0x349ac9,_0xd3fed6,_0x33124d);}});}})['catch'](function(_0x2dd78f){logger[_0x7706('0x33')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x349ac9,_0x29b210[_0x7706('0x6')][_0x33124d][_0x7706('0x2a')],_0xd3fed6,_0x33124d);})[_0x7706('0x35')](function(){delete _0x29b210[_0x7706('0x1a')][_0x349ac9];});}catch(_0x4d7a92){logger['error']('[ACW][START]\x20%s',_0x4d7a92['message']);}};Acw[_0x7706('0x18')]['stopAcw']=function(_0x21c81a){try{var _0x31af1b=this;if(_0x31af1b[_0x7706('0x8')][_0x21c81a]){_0x31af1b[_0x7706('0x8')][_0x21c81a]['timer']=![];var _0x441ea7=_0x31af1b[_0x7706('0x8')][_0x21c81a][_0x7706('0x30')];var _0x36005f=_0x31af1b[_0x7706('0x8')][_0x21c81a][_0x7706('0x1b')];var _0xeca69d=_0x31af1b['voiceQueues'][_0x36005f][_0x7706('0x2a')];logger[_0x7706('0x28')](_0x7706('0x36'),_0x441ea7,_0x21c81a);RpcUser[_0x7706('0x37')](this[_0x7706('0x7')][_0x21c81a]);RpcVoiceAgentReport[_0x7706('0x2f')]({'acwtime':_0xeca69d,'agentacw':!![]},_0x441ea7,_0x21c81a)[_0x7706('0x22')](function(_0x5cf878){logger[_0x7706('0x28')](_0x7706('0x31'),_0x441ea7,_0xeca69d,_0x5cf878);})['catch'](function(_0x435952){logger[_0x7706('0x33')]('[%s][UPDATE][ERRORS:%s]',_0x441ea7,_0x435952);});}else{logger[_0x7706('0x33')](_0x7706('0x38'),_0x21c81a);if(_0x31af1b['timers']){logger[_0x7706('0x28')](_0x7706('0x39'),JSON[_0x7706('0x3a')](_0x31af1b['timers']));}}}catch(_0x52c713){logger[_0x7706('0x33')]('[ACW][STOP]\x20%s',_0x52c713[_0x7706('0x3b')]);}};Acw[_0x7706('0x18')][_0x7706('0xa')]=function(_0x32ef78){try{if(this[_0x7706('0x6')][_0x32ef78['queue']]&&(this['voiceQueues'][_0x32ef78[_0x7706('0x1b')]][_0x7706('0x3c')]||this[_0x7706('0x6')][_0x32ef78[_0x7706('0x1b')]]['mandatoryDisposition'])){if(this['agents'][_0x32ef78[_0x7706('0x3d')]]){this[_0x7706('0x1a')][_0x32ef78[_0x7706('0x30')]]={'queue':_0x32ef78[_0x7706('0x1b')],'interface':_0x32ef78[_0x7706('0x3d')],'destlinkedid':_0x32ef78[_0x7706('0x26')]};}}}catch(_0x56c34f){logger[_0x7706('0x33')]('[ACW][syncAgentConnect]\x20%s',_0x56c34f['message']);}};Acw[_0x7706('0x18')]['syncAgentConnectPreview']=function(_0x27df91){try{if(this['voiceQueues'][_0x27df91[_0x7706('0x1b')]]&&(this['voiceQueues'][_0x27df91[_0x7706('0x1b')]][_0x7706('0x3c')]||this[_0x7706('0x6')][_0x27df91['queue']][_0x7706('0x1d')])){if(this[_0x7706('0x7')][_0x27df91[_0x7706('0x3d')]]){this[_0x7706('0x1a')][_0x27df91[_0x7706('0x30')]]={'queue':_0x27df91[_0x7706('0x1b')],'interface':_0x27df91[_0x7706('0x3d')]};}}}catch(_0x324dfc){logger[_0x7706('0x33')]('[ACW][syncAgentConnectPreview]\x20%s',_0x324dfc[_0x7706('0x3b')]);}};Acw['prototype'][_0x7706('0xd')]=function(_0x25d1a4){try{if(this[_0x7706('0x1a')][_0x25d1a4[_0x7706('0x30')]]&&_['isUndefined'](this[_0x7706('0x1a')][_0x25d1a4[_0x7706('0x30')]][_0x7706('0x25')])){logger[_0x7706('0x28')](_0x7706('0x3e'),_0x25d1a4['uniqueid']);this[_0x7706('0x19')](_0x25d1a4[_0x7706('0x30')]);}else if(this[_0x7706('0x1a')][_0x25d1a4['linkedid']]&&_[_0x7706('0x3f')](this[_0x7706('0x1a')][_0x25d1a4[_0x7706('0x40')]][_0x7706('0x25')])){logger['info'](_0x7706('0x41'),_0x25d1a4['linkedid']);this[_0x7706('0x19')](_0x25d1a4[_0x7706('0x40')]);}}catch(_0x3e104b){logger[_0x7706('0x33')]('[ACW][syncHangupRequest]\x20%s',_0x3e104b[_0x7706('0x3b')]);}};Acw[_0x7706('0x18')][_0x7706('0x42')]=function(_0x316957){try{if(this[_0x7706('0x1a')][_0x316957['uniqueid']]&&this[_0x7706('0x1a')][_0x316957['uniqueid']]['attended']){logger[_0x7706('0x28')](_0x7706('0x43'),_0x316957[_0x7706('0x30')]);this[_0x7706('0x19')](_0x316957[_0x7706('0x30')]);}else if(this[_0x7706('0x1a')][_0x316957[_0x7706('0x40')]]&&this[_0x7706('0x1a')][_0x316957['linkedid']]['attended']){logger[_0x7706('0x28')](_0x7706('0x44'),_0x316957[_0x7706('0x40')]);this[_0x7706('0x19')](_0x316957['linkedid']);}}catch(_0xe00f53){logger[_0x7706('0x33')](_0x7706('0x45'),_0xe00f53[_0x7706('0x3b')]);}};Acw[_0x7706('0x18')]['syncAttendedTransfer']=function(_0xe781f3){try{if(!_[_0x7706('0x46')](this[_0x7706('0x1a')][_0xe781f3[_0x7706('0x47')]])){this[_0x7706('0x19')](_0xe781f3[_0x7706('0x47')]);if(this['channels'][_0xe781f3[_0x7706('0x48')]]){this[_0x7706('0x1a')][_0xe781f3['secondtransfereruniqueid']][_0x7706('0x25')]=!![];this['channels'][_0xe781f3[_0x7706('0x49')]]=this['channels'][_0xe781f3[_0x7706('0x48')]];delete this[_0x7706('0x1a')][_0xe781f3[_0x7706('0x48')]];}}else if(!_[_0x7706('0x46')](this[_0x7706('0x1a')][_0xe781f3['transfertargetuniqueid']])){this['startAcw'](_0xe781f3[_0x7706('0x49')]);if(this[_0x7706('0x1a')][_0xe781f3[_0x7706('0x4a')]]){this[_0x7706('0x1a')][_0xe781f3['origtransfereruniqueid']][_0x7706('0x25')]=!![];this[_0x7706('0x1a')][_0xe781f3[_0x7706('0x47')]]=this[_0x7706('0x1a')][_0xe781f3[_0x7706('0x4a')]];delete this[_0x7706('0x1a')][_0xe781f3[_0x7706('0x4a')]];}}}catch(_0x517601){logger[_0x7706('0x33')](_0x7706('0x4b'),_0x517601['message']);}};Acw[_0x7706('0x18')][_0x7706('0x14')]=function(_0x2ac013){try{if(this[_0x7706('0x1a')][_0x2ac013[_0x7706('0x4c')]]){logger[_0x7706('0x28')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0x7706('0x3a')](_0x2ac013['transfereruniqueid']));this['startAcw'](_0x2ac013[_0x7706('0x4c')]);}else if(this['channels'][_0x2ac013[_0x7706('0x4d')]]){logger[_0x7706('0x28')](_0x7706('0x4e'),JSON[_0x7706('0x3a')](_0x2ac013[_0x7706('0x4d')]));this[_0x7706('0x19')](_0x2ac013['transfererlinkedid']);}}catch(_0x12d7ec){logger[_0x7706('0x33')](_0x7706('0x4f'),_0x12d7ec[_0x7706('0x3b')]);}};Acw[_0x7706('0x18')][_0x7706('0x10')]=function(_0x5aae6a){try{if(this['voiceQueues'][_0x5aae6a[_0x7706('0x1b')]]&&this[_0x7706('0x6')][_0x5aae6a['queue']][_0x7706('0x50')]===_0x7706('0x51')){if(this[_0x7706('0x7')][_0x5aae6a[_0x7706('0x3d')]]){logger['info'](_0x7706('0x52'),_0x5aae6a[_0x7706('0x30')],_0x5aae6a[_0x7706('0x3d')],_0x5aae6a['queue']);return RpcUser['savePause'](this[_0x7706('0x7')][_0x5aae6a[_0x7706('0x3d')]],'Auto-Pause',_0x5aae6a[_0x7706('0x30')]);}}}catch(_0x506f40){logger[_0x7706('0x33')](_0x7706('0x53'),_0x506f40['message']);}};module[_0x7706('0x54')]=Acw;
\ No newline at end of file
+var _0x6f73=['transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','util','lodash','moment','../ami','../../../config/logger','acw','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','syncAgentRingNoAnswer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','queue','ACW','mandatoryDisposition','name','Action','QueuePause','then','voicePause','attended','destlinkedid','savePause','info','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','update','uniqueid','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','stopAcw','saveUnpause','[ACW][TIMERS]','stringify','interface','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','syncAttendedTransfer','isNil'];(function(_0x5a0461,_0xb42216){var _0x16f741=function(_0x19c30a){while(--_0x19c30a){_0x5a0461['push'](_0x5a0461['shift']());}};_0x16f741(++_0xb42216);}(_0x6f73,0x1dd));var _0x36f7=function(_0x29171c,_0x53ced2){_0x29171c=_0x29171c-0x0;var _0x31ae91=_0x6f73[_0x29171c];return _0x31ae91;};'use strict';var util=require(_0x36f7('0x0'));var _=require(_0x36f7('0x1'));var moment=require(_0x36f7('0x2'));var ami=require(_0x36f7('0x3'));var logger=require(_0x36f7('0x4'))(_0x36f7('0x5'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x5ca5e3){this['voiceQueues']=_0x5ca5e3[_0x36f7('0x6')];this['agents']=_0x5ca5e3[_0x36f7('0x7')];this[_0x36f7('0x8')]=_0x5ca5e3['timers'];this[_0x36f7('0x9')]={};ami['on'](_0x36f7('0xa'),this[_0x36f7('0xb')][_0x36f7('0xc')](this));ami['on'](_0x36f7('0xd'),this[_0x36f7('0xe')][_0x36f7('0xc')](this));ami['on'](_0x36f7('0xf'),this[_0x36f7('0x10')]['bind'](this));ami['on']('agentringnoanswer',this[_0x36f7('0x11')]['bind'](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x36f7('0xc')](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0x36f7('0xc')](this));ami['on'](_0x36f7('0x12'),this[_0x36f7('0x13')][_0x36f7('0xc')](this));}function getDiff(_0x2f3982){var _0x18c19b=moment()['milliseconds'](0x0);var _0x3d37bc=moment(_0x2f3982)[_0x36f7('0x14')](0x0);return _0x18c19b[_0x36f7('0x15')](_0x3d37bc,_0x36f7('0x16'));}Acw[_0x36f7('0x17')][_0x36f7('0x18')]=function(_0x42c6f6){try{var _0x360736=this;var _0x435ff2=this[_0x36f7('0x9')][_0x42c6f6]['interface'];var _0x2e9fb9=this[_0x36f7('0x9')][_0x42c6f6][_0x36f7('0x19')];var _0x3b57c4=this[_0x36f7('0x6')][_0x2e9fb9];var _0x241eaf=![];var _0x3515cf=_0x36f7('0x1a');if(_0x3b57c4[_0x36f7('0x1b')]){if(_0x3b57c4['mandatoryDispositionPause'][_0x36f7('0x1c')]){_0x241eaf=!![];_0x3515cf=_0x3b57c4['mandatoryDispositionPause']['name'];}}ami[_0x36f7('0x1d')]({'action':_0x36f7('0x1e'),'interface':_0x435ff2,'paused':!![],'reason':_0x3515cf})[_0x36f7('0x1f')](function(_0x4ed5eb){if(_0x360736['agents'][_0x435ff2]){return RpcUser['getAgent'](_0x360736[_0x36f7('0x7')][_0x435ff2]['id'])['then'](function(_0x1dca4c){if(_0x1dca4c&&!_0x1dca4c[_0x36f7('0x20')]){logger['info']('[%s][START][AGENT:%s][QUEUE:%s]',_0x42c6f6,_0x435ff2,_0x2e9fb9);var _0x174279=_0x360736[_0x36f7('0x9')][_0x42c6f6][_0x36f7('0x21')]&&_0x360736['channels'][_0x42c6f6][_0x36f7('0x22')]?_0x360736[_0x36f7('0x9')][_0x42c6f6][_0x36f7('0x22')]:_0x42c6f6;return RpcUser[_0x36f7('0x23')](_0x360736[_0x36f7('0x7')][_0x435ff2],_0x3515cf,_0x174279)['then'](function(_0xc54544){if(!_0x241eaf){_0x360736[_0x36f7('0x8')][_0x435ff2]={};logger[_0x36f7('0x24')](_0x36f7('0x25'),_0x42c6f6,_0x360736[_0x36f7('0x6')][_0x2e9fb9][_0x36f7('0x26')],_0x435ff2,_0x2e9fb9);_0x360736['timers'][_0x435ff2][_0x36f7('0x27')]=setTimeout(_0x360736['stopAcw'][_0x36f7('0xc')](_0x360736,_0x435ff2),_0x360736[_0x36f7('0x6')][_0x2e9fb9][_0x36f7('0x26')]*0x3e8);_0x360736['timers'][_0x435ff2][_0x36f7('0x28')]=moment()[_0x36f7('0x29')](_0x36f7('0x2a'));_0x360736[_0x36f7('0x8')][_0x435ff2]['uniqueid']=_0x42c6f6;_0x360736[_0x36f7('0x8')][_0x435ff2][_0x36f7('0x19')]=_0x2e9fb9;_0x360736[_0x36f7('0x8')][_0x435ff2]['updateAcw']=function(){var _0xce5c08=getDiff(_0x360736[_0x36f7('0x8')][_0x435ff2][_0x36f7('0x28')]);clearTimeout(_0x360736['timers'][_0x435ff2][_0x36f7('0x27')]);_0x360736[_0x36f7('0x8')][_0x435ff2]['timer']=![];RpcVoiceAgentReport[_0x36f7('0x2b')]({'acwtime':_0xce5c08},_0x360736[_0x36f7('0x8')][_0x435ff2][_0x36f7('0x2c')],_0x435ff2)[_0x36f7('0x1f')](function(_0x3eb64e){logger['info'](_0x36f7('0x2d'),_0x42c6f6,_0xce5c08,_0x3eb64e);})[_0x36f7('0x2e')](function(_0x25dca2){logger[_0x36f7('0x2f')](_0x36f7('0x30'),_0x42c6f6,_0x25dca2);});delete _0x360736[_0x36f7('0x8')][_0x435ff2];};}});}else{logger['info'](_0x36f7('0x31'),_0x42c6f6,_0x435ff2,_0x2e9fb9);}});}})[_0x36f7('0x2e')](function(_0x5b3063){logger[_0x36f7('0x2f')](_0x36f7('0x25'),_0x42c6f6,_0x360736[_0x36f7('0x6')][_0x2e9fb9][_0x36f7('0x26')],_0x435ff2,_0x2e9fb9);})[_0x36f7('0x32')](function(){delete _0x360736[_0x36f7('0x9')][_0x42c6f6];});}catch(_0x116fae){logger[_0x36f7('0x2f')](_0x36f7('0x33'),_0x116fae[_0x36f7('0x34')]);}};Acw[_0x36f7('0x17')][_0x36f7('0x35')]=function(_0x104c0){try{var _0x24452a=this;if(_0x24452a[_0x36f7('0x8')][_0x104c0]){_0x24452a[_0x36f7('0x8')][_0x104c0]['timer']=![];var _0x2a2399=_0x24452a[_0x36f7('0x8')][_0x104c0]['uniqueid'];var _0x581044=_0x24452a[_0x36f7('0x8')][_0x104c0][_0x36f7('0x19')];var _0x218a17=_0x24452a['voiceQueues'][_0x581044][_0x36f7('0x26')];logger['info']('[%s][TIMER][STOP][AGENT:%s]',_0x2a2399,_0x104c0);RpcUser[_0x36f7('0x36')](this[_0x36f7('0x7')][_0x104c0]);RpcVoiceAgentReport[_0x36f7('0x2b')]({'acwtime':_0x218a17,'agentacw':!![]},_0x2a2399,_0x104c0)['then'](function(_0x2a4f65){logger[_0x36f7('0x24')]('[%s][UPDATE][ACWTIME:%s]',_0x2a2399,_0x218a17,_0x2a4f65);})['catch'](function(_0x3d48fe){logger[_0x36f7('0x2f')](_0x36f7('0x30'),_0x2a2399,_0x3d48fe);});}else{logger[_0x36f7('0x2f')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x104c0);if(_0x24452a[_0x36f7('0x8')]){logger['info'](_0x36f7('0x37'),JSON[_0x36f7('0x38')](_0x24452a[_0x36f7('0x8')]));}}}catch(_0x4ffb59){logger[_0x36f7('0x2f')]('[ACW][STOP]\x20%s',_0x4ffb59[_0x36f7('0x34')]);}};Acw[_0x36f7('0x17')]['syncAgentConnect']=function(_0x3f2397){try{if(this[_0x36f7('0x6')][_0x3f2397['queue']]&&(this[_0x36f7('0x6')][_0x3f2397[_0x36f7('0x19')]][_0x36f7('0x5')]||this[_0x36f7('0x6')][_0x3f2397[_0x36f7('0x19')]][_0x36f7('0x1b')])){if(this['agents'][_0x3f2397[_0x36f7('0x39')]]){this[_0x36f7('0x9')][_0x3f2397[_0x36f7('0x2c')]]={'queue':_0x3f2397['queue'],'interface':_0x3f2397[_0x36f7('0x39')],'destlinkedid':_0x3f2397[_0x36f7('0x22')]};}}}catch(_0x61bf0){logger[_0x36f7('0x2f')](_0x36f7('0x3a'),_0x61bf0[_0x36f7('0x34')]);}};Acw[_0x36f7('0x17')]['syncAgentConnectPreview']=function(_0x555d81){try{if(this[_0x36f7('0x6')][_0x555d81[_0x36f7('0x19')]]&&(this[_0x36f7('0x6')][_0x555d81[_0x36f7('0x19')]]['acw']||this[_0x36f7('0x6')][_0x555d81[_0x36f7('0x19')]][_0x36f7('0x1b')])){if(this['agents'][_0x555d81[_0x36f7('0x39')]]){this[_0x36f7('0x9')][_0x555d81[_0x36f7('0x2c')]]={'queue':_0x555d81[_0x36f7('0x19')],'interface':_0x555d81['interface']};}}}catch(_0x8e26be){logger[_0x36f7('0x2f')](_0x36f7('0x3b'),_0x8e26be[_0x36f7('0x34')]);}};Acw[_0x36f7('0x17')][_0x36f7('0xe')]=function(_0x52fb01){try{if(this[_0x36f7('0x9')][_0x52fb01['uniqueid']]&&_[_0x36f7('0x3c')](this[_0x36f7('0x9')][_0x52fb01[_0x36f7('0x2c')]][_0x36f7('0x21')])){logger[_0x36f7('0x24')]('[%s][HANGUP:UNIQUEID]',_0x52fb01[_0x36f7('0x2c')]);this[_0x36f7('0x18')](_0x52fb01[_0x36f7('0x2c')]);}else if(this['channels'][_0x52fb01['linkedid']]&&_[_0x36f7('0x3c')](this[_0x36f7('0x9')][_0x52fb01[_0x36f7('0x3d')]]['attended'])){logger[_0x36f7('0x24')](_0x36f7('0x3e'),_0x52fb01[_0x36f7('0x3d')]);this[_0x36f7('0x18')](_0x52fb01[_0x36f7('0x3d')]);}}catch(_0x3a7505){logger['error'](_0x36f7('0x3f'),_0x3a7505['message']);}};Acw[_0x36f7('0x17')][_0x36f7('0x10')]=function(_0x9ee405){try{if(this[_0x36f7('0x9')][_0x9ee405[_0x36f7('0x2c')]]&&this[_0x36f7('0x9')][_0x9ee405['uniqueid']][_0x36f7('0x21')]){logger[_0x36f7('0x24')](_0x36f7('0x40'),_0x9ee405['uniqueid']);this[_0x36f7('0x18')](_0x9ee405[_0x36f7('0x2c')]);}else if(this[_0x36f7('0x9')][_0x9ee405[_0x36f7('0x3d')]]&&this['channels'][_0x9ee405[_0x36f7('0x3d')]][_0x36f7('0x21')]){logger['info'](_0x36f7('0x41'),_0x9ee405[_0x36f7('0x3d')]);this[_0x36f7('0x18')](_0x9ee405['linkedid']);}}catch(_0x2adbea){logger['error'](_0x36f7('0x42'),_0x2adbea['message']);}};Acw[_0x36f7('0x17')][_0x36f7('0x43')]=function(_0x16b09e){try{if(!_[_0x36f7('0x44')](this[_0x36f7('0x9')][_0x16b09e['transfereeuniqueid']])){this[_0x36f7('0x18')](_0x16b09e[_0x36f7('0x45')]);if(this['channels'][_0x16b09e[_0x36f7('0x46')]]){this[_0x36f7('0x9')][_0x16b09e[_0x36f7('0x46')]][_0x36f7('0x21')]=!![];this[_0x36f7('0x9')][_0x16b09e[_0x36f7('0x47')]]=this['channels'][_0x16b09e[_0x36f7('0x46')]];delete this['channels'][_0x16b09e[_0x36f7('0x46')]];}}else if(!_[_0x36f7('0x44')](this[_0x36f7('0x9')][_0x16b09e[_0x36f7('0x47')]])){this['startAcw'](_0x16b09e[_0x36f7('0x47')]);if(this['channels'][_0x16b09e['origtransfereruniqueid']]){this[_0x36f7('0x9')][_0x16b09e['origtransfereruniqueid']][_0x36f7('0x21')]=!![];this[_0x36f7('0x9')][_0x16b09e[_0x36f7('0x45')]]=this[_0x36f7('0x9')][_0x16b09e['origtransfereruniqueid']];delete this[_0x36f7('0x9')][_0x16b09e['origtransfereruniqueid']];}}}catch(_0x420fb9){logger['error'](_0x36f7('0x48'),_0x420fb9['message']);}};Acw[_0x36f7('0x17')]['syncBlindTransfer']=function(_0x3eedb5){try{if(this['channels'][_0x3eedb5[_0x36f7('0x49')]]){logger[_0x36f7('0x24')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0x36f7('0x38')](_0x3eedb5[_0x36f7('0x49')]));this[_0x36f7('0x18')](_0x3eedb5[_0x36f7('0x49')]);}else if(this['channels'][_0x3eedb5[_0x36f7('0x4a')]]){logger[_0x36f7('0x24')]('[%s][BLINDTRANSFER:LINKEDID]',JSON['stringify'](_0x3eedb5['transfererlinkedid']));this[_0x36f7('0x18')](_0x3eedb5[_0x36f7('0x4a')]);}}catch(_0x1524e0){logger[_0x36f7('0x2f')](_0x36f7('0x4b'),_0x1524e0['message']);}};Acw[_0x36f7('0x17')][_0x36f7('0x11')]=function(_0x12fc5a){try{if(this[_0x36f7('0x6')][_0x12fc5a[_0x36f7('0x19')]]&&this[_0x36f7('0x6')][_0x12fc5a['queue']]['autopause']==='all'){if(this['agents'][_0x12fc5a['interface']]){logger['info'](_0x36f7('0x4c'),_0x12fc5a[_0x36f7('0x2c')],_0x12fc5a[_0x36f7('0x39')],_0x12fc5a[_0x36f7('0x19')]);return RpcUser[_0x36f7('0x23')](this[_0x36f7('0x7')][_0x12fc5a[_0x36f7('0x39')]],_0x36f7('0x4d'),_0x12fc5a[_0x36f7('0x2c')]);}}}catch(_0xd2b5d){logger[_0x36f7('0x2f')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0xd2b5d[_0x36f7('0x34')]);}};module['exports']=Acw;
\ No newline at end of file
index 59d9fdc..198b84e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa04=['queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','inspect','fullybooted','resolve','then','actionDeviceStateList','catch','log','exports','asterisk-manager','bluebird','moment','util','lodash','asterisk','port','username','password','keepConnected','Action','promisify','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','sipshowregistry','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0xfa04,0x149));var _0x4fa0=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xfa04[_0x160c73];return _0xd9302;};'use strict';var Manager=require(_0x4fa0('0x0'));var BPromise=require(_0x4fa0('0x1'));var moment=require(_0x4fa0('0x2'));var util=require(_0x4fa0('0x3'));var _=require(_0x4fa0('0x4'));var logger=require('../../config/logger')('ami');var config=require('../../config/environment');var ami=new Manager(config[_0x4fa0('0x5')][_0x4fa0('0x6')],config['asterisk']['ip'],config[_0x4fa0('0x5')][_0x4fa0('0x7')],config[_0x4fa0('0x5')][_0x4fa0('0x8')],!![]);ami[_0x4fa0('0x9')]();ami[_0x4fa0('0xa')]=BPromise[_0x4fa0('0xb')](ami['action']);function error(_0x151ae5){logger[_0x4fa0('0xc')](util[_0x4fa0('0xd')](_0x4fa0('0xe'),config[_0x4fa0('0x5')][_0x4fa0('0x7')],config[_0x4fa0('0x5')]['ip'],config[_0x4fa0('0x5')][_0x4fa0('0x6')],util['inspect'](_0x151ae5,![],null)));}function close(){logger[_0x4fa0('0xc')](util[_0x4fa0('0xd')](_0x4fa0('0xf'),config[_0x4fa0('0x5')][_0x4fa0('0x7')],config[_0x4fa0('0x5')]['ip'],config[_0x4fa0('0x5')][_0x4fa0('0x6')]));}ami[_0x4fa0('0x10')]=function(){return function(){return ami[_0x4fa0('0xa')]({'action':_0x4fa0('0x11')});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0x4fa0('0xa')]({'action':_0x4fa0('0x12')});};};ami[_0x4fa0('0x13')]=function(){return function(){return ami[_0x4fa0('0xa')]({'action':_0x4fa0('0x14')});};};ami[_0x4fa0('0x15')]=function(){return function(){return ami[_0x4fa0('0xa')]({'action':_0x4fa0('0x16')});};};ami[_0x4fa0('0x17')]=function(){return function(){return ami[_0x4fa0('0xa')]({'action':_0x4fa0('0x18')});};};function connect(_0x50c5a5){logger[_0x4fa0('0x19')](util['format'](_0x4fa0('0x1a'),config[_0x4fa0('0x5')][_0x4fa0('0x7')],config[_0x4fa0('0x5')]['ip'],config[_0x4fa0('0x5')][_0x4fa0('0x6')]));ami[_0x4fa0('0x1b')]('error',error);ami[_0x4fa0('0x1b')](_0x4fa0('0x1c'),close);}ami['on'](_0x4fa0('0x1d'),connect);ami['on'](_0x4fa0('0x1e'),function(_0x30d929){logger[_0x4fa0('0x19')](util[_0x4fa0('0xd')]('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config[_0x4fa0('0x5')]['username'],config['asterisk']['ip'],config[_0x4fa0('0x5')][_0x4fa0('0x6')],util[_0x4fa0('0x1f')](_0x30d929,![],null)));});ami['on'](_0x4fa0('0x20'),function(_0x48ce03){logger[_0x4fa0('0x19')](util['format']('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config['asterisk'][_0x4fa0('0x7')],config['asterisk']['ip'],config[_0x4fa0('0x5')]['port']));return BPromise[_0x4fa0('0x21')]()[_0x4fa0('0x22')](ami[_0x4fa0('0x10')]())[_0x4fa0('0x22')](ami[_0x4fa0('0x23')]())[_0x4fa0('0x22')](ami['actionSipPeerStatus']())[_0x4fa0('0x22')](ami[_0x4fa0('0x15')]())['then'](ami[_0x4fa0('0x17')]())[_0x4fa0('0x24')](function(_0x1dea11){console[_0x4fa0('0x25')](_0x1dea11);});});ami['once']('error',error);ami[_0x4fa0('0x1b')](_0x4fa0('0x1c'),close);module[_0x4fa0('0x26')]=ami;
\ No newline at end of file
+var _0x601d=['lodash','../../config/logger','ami','../../config/environment','asterisk','port','username','keepConnected','promisify','error','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','Action','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','info','format','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionCoreShowChannels','catch','log','once','exports','asterisk-manager','util'];(function(_0x211158,_0x5edf3c){var _0x197bef=function(_0x4da6c0){while(--_0x4da6c0){_0x211158['push'](_0x211158['shift']());}};_0x197bef(++_0x5edf3c);}(_0x601d,0x170));var _0xd601=function(_0x350152,_0x5286ea){_0x350152=_0x350152-0x0;var _0x3f8249=_0x601d[_0x350152];return _0x3f8249;};'use strict';var Manager=require(_0xd601('0x0'));var BPromise=require('bluebird');var moment=require('moment');var util=require(_0xd601('0x1'));var _=require(_0xd601('0x2'));var logger=require(_0xd601('0x3'))(_0xd601('0x4'));var config=require(_0xd601('0x5'));var ami=new Manager(config[_0xd601('0x6')][_0xd601('0x7')],config[_0xd601('0x6')]['ip'],config[_0xd601('0x6')][_0xd601('0x8')],config[_0xd601('0x6')]['password'],!![]);ami[_0xd601('0x9')]();ami['Action']=BPromise[_0xd601('0xa')](ami['action']);function error(_0x102d16){logger[_0xd601('0xb')](util['format']('Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s',config[_0xd601('0x6')][_0xd601('0x8')],config[_0xd601('0x6')]['ip'],config[_0xd601('0x6')][_0xd601('0x7')],util[_0xd601('0xc')](_0x102d16,![],null)));}function close(){logger[_0xd601('0xb')](util['format'](_0xd601('0xd'),config[_0xd601('0x6')][_0xd601('0x8')],config['asterisk']['ip'],config[_0xd601('0x6')][_0xd601('0x7')]));}ami[_0xd601('0xe')]=function(){return function(){return ami[_0xd601('0xf')]({'action':_0xd601('0x10')});};};ami[_0xd601('0x11')]=function(){return function(){return ami[_0xd601('0xf')]({'action':_0xd601('0x12')});};};ami[_0xd601('0x13')]=function(){return function(){return ami['Action']({'action':_0xd601('0x14')});};};ami[_0xd601('0x15')]=function(){return function(){return ami[_0xd601('0xf')]({'action':_0xd601('0x16')});};};ami['actionCoreShowChannels']=function(){return function(){return ami['Action']({'action':'coreshowchannels'});};};function connect(_0x11bab1){logger[_0xd601('0x17')](util[_0xd601('0x18')](_0xd601('0x19'),config[_0xd601('0x6')][_0xd601('0x8')],config[_0xd601('0x6')]['ip'],config[_0xd601('0x6')]['port']));ami['once'](_0xd601('0xb'),error);ami['once']('close',close);}ami['on'](_0xd601('0x1a'),connect);ami['on'](_0xd601('0x1b'),function(_0x513042){logger[_0xd601('0x17')](util['format'](_0xd601('0x1c'),config['asterisk'][_0xd601('0x8')],config[_0xd601('0x6')]['ip'],config[_0xd601('0x6')][_0xd601('0x7')],util[_0xd601('0xc')](_0x513042,![],null)));});ami['on']('fullybooted',function(_0x32c2ce){logger[_0xd601('0x17')](util[_0xd601('0x18')](_0xd601('0x1d'),config['asterisk'][_0xd601('0x8')],config[_0xd601('0x6')]['ip'],config[_0xd601('0x6')]['port']));return BPromise[_0xd601('0x1e')]()[_0xd601('0x1f')](ami['actionSipShowRegistry']())[_0xd601('0x1f')](ami['actionDeviceStateList']())[_0xd601('0x1f')](ami[_0xd601('0x13')]())['then'](ami['actionQueueSummary']())[_0xd601('0x1f')](ami[_0xd601('0x20')]())[_0xd601('0x21')](function(_0x5a6179){console[_0xd601('0x22')](_0x5a6179);});});ami[_0xd601('0x23')](_0xd601('0xb'),error);ami[_0xd601('0x23')]('close',close);module[_0xd601('0x24')]=ami;
\ No newline at end of file
index 6578fd9..9491f2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['catch','exports','jayson/promise','bluebird','ami','client','http','rpc','memberReport','error','message','result'];(function(_0x33f9c6,_0x24cc4f){var _0x1edc0d=function(_0x49dfb8){while(--_0x49dfb8){_0x33f9c6['push'](_0x33f9c6['shift']());}};_0x1edc0d(++_0x24cc4f);}(_0xb43b,0x1b2));var _0xbb43=function(_0x2f0faf,_0x3637bd){_0x2f0faf=_0x2f0faf-0x0;var _0xa0da34=_0xb43b[_0x2f0faf];return _0xa0da34;};'use strict';var jayson=require(_0xbb43('0x0'));var BPromise=require(_0xbb43('0x1'));var logger=require('../../config/logger')(_0xbb43('0x2'));var client=jayson[_0xbb43('0x3')][_0xbb43('0x4')]({'port':0x2329});client['Request']=function(_0x131e9e,_0x41aff6){return new BPromise(function(_0x351254,_0x16432a){return client['request'](_0x131e9e,_0x41aff6)['then'](function(_0x378df5){logger['debug'](_0xbb43('0x5'),_0xbb43('0x6'),_0x131e9e,_0x41aff6,_0x378df5);if(_0x378df5[_0xbb43('0x7')]){logger[_0xbb43('0x7')](_0xbb43('0x5'),'memberReport',_0x131e9e,_0x378df5[_0xbb43('0x7')][_0xbb43('0x8')],_0x41aff6);return _0x16432a(_0x378df5['error'][_0xbb43('0x8')]);}else{return _0x351254(_0x378df5[_0xbb43('0x9')]);}})[_0xbb43('0xa')](function(_0x5e3611){logger[_0xbb43('0x7')](_0xbb43('0x5'),'memberReport',_0x131e9e,_0x5e3611,_0x41aff6);return _0x16432a(_0x5e3611);});});};module[_0xbb43('0xb')]=client;
\ No newline at end of file
+var _0x70e0=['catch','exports','jayson/promise','bluebird','../../config/logger','http','Request','then','memberReport','error','rpc','message','result'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x70e0,0x17b));var _0x070e=function(_0x94bbd2,_0x19a6d4){_0x94bbd2=_0x94bbd2-0x0;var _0x361fc4=_0x70e0[_0x94bbd2];return _0x361fc4;};'use strict';var jayson=require(_0x070e('0x0'));var BPromise=require(_0x070e('0x1'));var logger=require(_0x070e('0x2'))('ami');var client=jayson['client'][_0x070e('0x3')]({'port':0x2329});client[_0x070e('0x4')]=function(_0x277d32,_0x2593e5){return new BPromise(function(_0x5c90fc,_0x7bce9b){return client['request'](_0x277d32,_0x2593e5)[_0x070e('0x5')](function(_0x4b041d){logger['debug']('rpc',_0x070e('0x6'),_0x277d32,_0x2593e5,_0x4b041d);if(_0x4b041d[_0x070e('0x7')]){logger[_0x070e('0x7')](_0x070e('0x8'),_0x070e('0x6'),_0x277d32,_0x4b041d[_0x070e('0x7')][_0x070e('0x9')],_0x2593e5);return _0x7bce9b(_0x4b041d['error']['message']);}else{return _0x5c90fc(_0x4b041d[_0x070e('0xa')]);}})[_0x070e('0xb')](function(_0x12bb37){logger[_0x070e('0x7')](_0x070e('0x8'),_0x070e('0x6'),_0x277d32,_0x12bb37,_0x2593e5);return _0x7bce9b(_0x12bb37);});});};module[_0x070e('0xc')]=client;
\ No newline at end of file
index d8168e1..1207dd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2731=['exports','util','lodash','moment','isNil','string','uniqueid','name','phone','Contact','firstName','lastName','number','queue','active','dialQueueTimeout','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','format','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','voiceQueue','prototype','getQueue'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x2731,0x184));var _0x1273=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x2731[_0x4565bf];return _0x5610ba;};'use strict';var util=require(_0x1273('0x0'));var _=require(_0x1273('0x1'));var moment=require(_0x1273('0x2'));function checkNameSurname(_0x2cf15a,_0xa07df7,_0x4530ae){var _0x9c0bce='';if(!_[_0x1273('0x3')](_0xa07df7)&&_0x1273('0x4')===typeof _0xa07df7){_0x9c0bce+=_0xa07df7;}if(!_[_0x1273('0x3')](_0x4530ae)&&_0x1273('0x4')===typeof _0x4530ae){_0x9c0bce+='\x20'+_0x4530ae;}if(_0x9c0bce!==''){return _0x9c0bce;}return _0x2cf15a;}function Action(_0x5d61ba,_0x4386eb,_0x256c58){this['voiceQueue']=_0x5d61ba;this[_0x1273('0x5')]=_0x256c58||undefined;this[_0x1273('0x6')]=checkNameSurname(_0x4386eb['Contact'][_0x1273('0x7')],_0x4386eb[_0x1273('0x8')][_0x1273('0x9')],_0x4386eb[_0x1273('0x8')][_0x1273('0xa')]);this[_0x1273('0xb')]=_0x4386eb['Contact'][_0x1273('0x7')];this[_0x1273('0xc')]=_0x5d61ba[_0x1273('0x6')];this[_0x1273('0xd')]=_0x4386eb['active']||![];this['type']=_0x5d61ba['type'];this[_0x1273('0xe')]=_0x5d61ba[_0x1273('0xe')]||0x3;this['scheduledat']=_0x4386eb['scheduledat'];this[_0x1273('0xf')]=_0x4386eb[_0x1273('0xf')];this[_0x1273('0x10')]=_0x4386eb[_0x1273('0x10')];this['countnoanswerretry']=_0x4386eb[_0x1273('0x11')];this[_0x1273('0x12')]=_0x4386eb[_0x1273('0x12')];this[_0x1273('0x13')]=_0x4386eb[_0x1273('0x13')];this[_0x1273('0x14')]=_0x4386eb['countabandonedretry'];this[_0x1273('0x15')]=_0x4386eb['countmachineretry'];this[_0x1273('0x16')]=_0x4386eb[_0x1273('0x16')];this[_0x1273('0x17')]=_0x4386eb[_0x1273('0x17')];this[_0x1273('0x18')]=_0x4386eb[_0x1273('0x18')];this['UserId']=_0x4386eb[_0x1273('0x19')];this[_0x1273('0x1a')]=_0x4386eb[_0x1273('0x1a')];this[_0x1273('0x1b')]=_0x4386eb[_0x1273('0x1b')];this[_0x1273('0x1c')]=_0x4386eb['id'];this[_0x1273('0x1d')]=_0x4386eb[_0x1273('0x8')][_0x1273('0x9')]||'';this['starttime']=moment()[_0x1273('0x1e')]('YYYY-MM-DD\x20HH:mm:ss');this['callback']=_0x4386eb[_0x1273('0x1f')];this[_0x1273('0x20')]=_0x4386eb[_0x1273('0x20')];this['callbackat']=_0x4386eb[_0x1273('0x21')];this[_0x1273('0x22')]=_0x4386eb[_0x1273('0x22')];this[_0x1273('0x23')]='';this['originatecalleridname']='';}Action['prototype'][_0x1273('0x24')]=function(){return util[_0x1273('0x1e')](_0x1273('0x25'),this[_0x1273('0x6')],this['voiceQueue'][_0x1273('0x26')]>0x0?this[_0x1273('0xb')]['substring'](this[_0x1273('0x27')][_0x1273('0x26')]):this['number']);};Action[_0x1273('0x28')][_0x1273('0x29')]=function(){return this[_0x1273('0xc')];};module[_0x1273('0x2a')]=Action;
\ No newline at end of file
+var _0x65de=['prototype','getCaller','dialCutDigit','number','getQueue','exports','util','moment','isNil','string','voiceQueue','uniqueid','name','Contact','phone','firstName','lastName','queue','active','type','dialQueueTimeout','scheduledat','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x65de,0xb6));var _0xe65d=function(_0x3fc51c,_0x292f16){_0x3fc51c=_0x3fc51c-0x0;var _0x53e03a=_0x65de[_0x3fc51c];return _0x53e03a;};'use strict';var util=require(_0xe65d('0x0'));var _=require('lodash');var moment=require(_0xe65d('0x1'));function checkNameSurname(_0x156752,_0x369afd,_0x45f32c){var _0x427fb6='';if(!_[_0xe65d('0x2')](_0x369afd)&&'string'===typeof _0x369afd){_0x427fb6+=_0x369afd;}if(!_[_0xe65d('0x2')](_0x45f32c)&&_0xe65d('0x3')===typeof _0x45f32c){_0x427fb6+='\x20'+_0x45f32c;}if(_0x427fb6!==''){return _0x427fb6;}return _0x156752;}function Action(_0x458adf,_0xeb2b3b,_0x520836){this[_0xe65d('0x4')]=_0x458adf;this[_0xe65d('0x5')]=_0x520836||undefined;this[_0xe65d('0x6')]=checkNameSurname(_0xeb2b3b[_0xe65d('0x7')][_0xe65d('0x8')],_0xeb2b3b[_0xe65d('0x7')][_0xe65d('0x9')],_0xeb2b3b['Contact'][_0xe65d('0xa')]);this['number']=_0xeb2b3b[_0xe65d('0x7')][_0xe65d('0x8')];this[_0xe65d('0xb')]=_0x458adf[_0xe65d('0x6')];this[_0xe65d('0xc')]=_0xeb2b3b[_0xe65d('0xc')]||![];this[_0xe65d('0xd')]=_0x458adf[_0xe65d('0xd')];this[_0xe65d('0xe')]=_0x458adf['dialQueueTimeout']||0x3;this[_0xe65d('0xf')]=_0xeb2b3b['scheduledat'];this['countbusyretry']=_0xeb2b3b['countbusyretry'];this[_0xe65d('0x10')]=_0xeb2b3b['countcongestionretry'];this[_0xe65d('0x11')]=_0xeb2b3b[_0xe65d('0x11')];this[_0xe65d('0x12')]=_0xeb2b3b[_0xe65d('0x12')];this[_0xe65d('0x13')]=_0xeb2b3b[_0xe65d('0x13')];this[_0xe65d('0x14')]=_0xeb2b3b[_0xe65d('0x14')];this[_0xe65d('0x15')]=_0xeb2b3b[_0xe65d('0x15')];this[_0xe65d('0x16')]=_0xeb2b3b['countagentrejectretry'];this[_0xe65d('0x17')]=_0xeb2b3b[_0xe65d('0x17')];this['ListId']=_0xeb2b3b['ListId'];this[_0xe65d('0x18')]=_0xeb2b3b[_0xe65d('0x18')];this[_0xe65d('0x19')]=_0xeb2b3b[_0xe65d('0x19')];this['CampaignId']=_0xeb2b3b[_0xe65d('0x1a')];this[_0xe65d('0x1b')]=_0xeb2b3b['id'];this[_0xe65d('0x1c')]=_0xeb2b3b['Contact']['firstName']||'';this[_0xe65d('0x1d')]=moment()[_0xe65d('0x1e')](_0xe65d('0x1f'));this[_0xe65d('0x20')]=_0xeb2b3b['callback'];this[_0xe65d('0x21')]=_0xeb2b3b['callbackuniqueid'];this[_0xe65d('0x22')]=_0xeb2b3b['callbackat'];this[_0xe65d('0x23')]=_0xeb2b3b[_0xe65d('0x23')];this[_0xe65d('0x24')]='';this[_0xe65d('0x25')]='';}Action[_0xe65d('0x26')][_0xe65d('0x27')]=function(){return util['format']('\x22%s\x22\x20<%s>',this[_0xe65d('0x6')],this[_0xe65d('0x4')][_0xe65d('0x28')]>0x0?this['number']['substring'](this[_0xe65d('0x4')][_0xe65d('0x28')]):this[_0xe65d('0x29')]);};Action[_0xe65d('0x26')][_0xe65d('0x2a')]=function(){return this[_0xe65d('0xb')];};module[_0xe65d('0x2b')]=Action;
\ No newline at end of file
index a74a0f1..d3a8ee3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63db=['membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','state','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','answertime','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime'];(function(_0x493251,_0x28babc){var _0x3c5d7f=function(_0x1ef888){while(--_0x1ef888){_0x493251['push'](_0x493251['shift']());}};_0x3c5d7f(++_0x28babc);}(_0x63db,0x132));var _0xb63d=function(_0x23e7f0,_0x5bb506){_0x23e7f0=_0x23e7f0-0x0;var _0x32b7c5=_0x63db[_0x23e7f0];return _0x32b7c5;};'use strict';var util=require(_0xb63d('0x0'));var _=require(_0xb63d('0x1'));var moment=require(_0xb63d('0x2'));function getSeconds(_0x2352f1,_0x44d3e1){var _0x14373e=moment(_0x2352f1)[_0xb63d('0x3')](0x0);var _0x2b632e=moment(_0x44d3e1)[_0xb63d('0x3')](0x0);return _0x14373e[_0xb63d('0x4')](_0x2b632e,'seconds');}function AgentComplete(_0x551de1,_0x11ad66){this[_0xb63d('0x5')]=0x4;this['statedesc']=_0xb63d('0x6');this[_0xb63d('0x7')]=_0x551de1[_0xb63d('0x7')];this[_0xb63d('0x8')]=_0x551de1['type'];this[_0xb63d('0x9')]=_0x551de1[_0xb63d('0x8')]===_0xb63d('0xa')?_0xb63d('0xb'):_0x551de1[_0xb63d('0x8')];this[_0xb63d('0xc')]=_0x551de1['countbusyretry'];this['countcongestionretry']=_0x551de1['countcongestionretry'];this[_0xb63d('0xd')]=_0x551de1['countnoanswerretry'];this[_0xb63d('0xe')]=_0x551de1[_0xb63d('0xc')]+_0x551de1['countcongestionretry']+_0x551de1['countnoanswerretry']+_0x551de1['countnosuchnumberretry']+_0x551de1[_0xb63d('0xf')]+_0x551de1[_0xb63d('0x10')]+_0x551de1[_0xb63d('0x11')]+_0x551de1[_0xb63d('0x12')];this['countnosuchnumberretry']=_0x551de1['countnosuchnumberretry'];this[_0xb63d('0xf')]=_0x551de1[_0xb63d('0xf')];this[_0xb63d('0x10')]=_0x551de1[_0xb63d('0x10')];this[_0xb63d('0x11')]=_0x551de1[_0xb63d('0x11')];this['countagentrejectretry']=_0x551de1[_0xb63d('0x12')];this[_0xb63d('0x13')]=_0x11ad66[_0xb63d('0x13')];this[_0xb63d('0x14')]=_0x551de1[_0xb63d('0x15')];this[_0xb63d('0x16')]=_0x551de1['number'];this[_0xb63d('0x17')]=_0x551de1[_0xb63d('0x17')];this['responsetime']=_0x551de1[_0xb63d('0x18')];this[_0xb63d('0x19')]=_0x551de1[_0xb63d('0x19')];this['endtime']=moment()['format'](_0xb63d('0x1a'));this[_0xb63d('0x1b')]=getSeconds(_0x551de1['responsetime'],_0x551de1['starttime']);this[_0xb63d('0x1c')]=getSeconds(_0x551de1[_0xb63d('0x19')],_0x551de1[_0xb63d('0x18')]);this[_0xb63d('0x1d')]=getSeconds(this['endtime'],_0x551de1[_0xb63d('0x19')]);this[_0xb63d('0xb')]=_0x11ad66[_0xb63d('0xb')];this['membername']=_0x11ad66[_0xb63d('0x1e')];this['reason']=_0x11ad66[_0xb63d('0x1f')];this[_0xb63d('0x20')]=_0x551de1['callback'];this[_0xb63d('0x21')]=_0x551de1[_0xb63d('0x21')];this[_0xb63d('0x22')]=_0x551de1[_0xb63d('0x22')];this[_0xb63d('0x23')]=_0x551de1['recallme'];this[_0xb63d('0x24')]=_0x551de1[_0xb63d('0x24')];this['ListId']=_0x551de1[_0xb63d('0x25')];this['UserId']=_0x551de1['UserId'];this['VoiceQueueId']=_0x551de1[_0xb63d('0x26')];this['CampaignId']=_0x551de1[_0xb63d('0x27')];this[_0xb63d('0x28')]=_0x551de1[_0xb63d('0x28')]||'';this[_0xb63d('0x29')]=_0x551de1[_0xb63d('0x29')]||'';}module['exports']=AgentComplete;
\ No newline at end of file
+var _0xaf7e=['answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','talktime','membername','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','exports','util','moment','milliseconds','diff','seconds','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','name','calleridnum','number','starttime','responsetime'];(function(_0x23a45e,_0x17801f){var _0xfb8bd2=function(_0x1a06f4){while(--_0x1a06f4){_0x23a45e['push'](_0x23a45e['shift']());}};_0xfb8bd2(++_0x17801f);}(_0xaf7e,0x13f));var _0xeaf7=function(_0x4810c7,_0x2fe89f){_0x4810c7=_0x4810c7-0x0;var _0x433f01=_0xaf7e[_0x4810c7];return _0x433f01;};'use strict';var util=require(_0xeaf7('0x0'));var _=require('lodash');var moment=require(_0xeaf7('0x1'));function getSeconds(_0x4f0f4c,_0x2671d2){var _0x37544d=moment(_0x4f0f4c)['milliseconds'](0x0);var _0x32952c=moment(_0x2671d2)[_0xeaf7('0x2')](0x0);return _0x37544d[_0xeaf7('0x3')](_0x32952c,_0xeaf7('0x4'));}function AgentComplete(_0x63caa5,_0x1f8cbf){this['state']=0x4;this[_0xeaf7('0x5')]=_0xeaf7('0x6');this[_0xeaf7('0x7')]=_0x63caa5[_0xeaf7('0x7')];this[_0xeaf7('0x8')]=_0x63caa5[_0xeaf7('0x8')];this[_0xeaf7('0x9')]=_0x63caa5[_0xeaf7('0x8')]===_0xeaf7('0xa')?_0xeaf7('0xb'):_0x63caa5[_0xeaf7('0x8')];this[_0xeaf7('0xc')]=_0x63caa5[_0xeaf7('0xc')];this[_0xeaf7('0xd')]=_0x63caa5[_0xeaf7('0xd')];this['countnoanswerretry']=_0x63caa5['countnoanswerretry'];this['countglobal']=_0x63caa5[_0xeaf7('0xc')]+_0x63caa5['countcongestionretry']+_0x63caa5['countnoanswerretry']+_0x63caa5[_0xeaf7('0xe')]+_0x63caa5[_0xeaf7('0xf')]+_0x63caa5[_0xeaf7('0x10')]+_0x63caa5[_0xeaf7('0x11')]+_0x63caa5['countagentrejectretry'];this[_0xeaf7('0xe')]=_0x63caa5[_0xeaf7('0xe')];this[_0xeaf7('0xf')]=_0x63caa5[_0xeaf7('0xf')];this[_0xeaf7('0x10')]=_0x63caa5['countabandonedretry'];this[_0xeaf7('0x11')]=_0x63caa5[_0xeaf7('0x11')];this[_0xeaf7('0x12')]=_0x63caa5[_0xeaf7('0x12')];this['uniqueid']=_0x1f8cbf['uniqueid'];this[_0xeaf7('0x13')]=_0x63caa5[_0xeaf7('0x14')];this[_0xeaf7('0x15')]=_0x63caa5[_0xeaf7('0x16')];this[_0xeaf7('0x17')]=_0x63caa5[_0xeaf7('0x17')];this['responsetime']=_0x63caa5[_0xeaf7('0x18')];this[_0xeaf7('0x19')]=_0x63caa5[_0xeaf7('0x19')];this[_0xeaf7('0x1a')]=moment()[_0xeaf7('0x1b')](_0xeaf7('0x1c'));this[_0xeaf7('0x1d')]=getSeconds(_0x63caa5[_0xeaf7('0x18')],_0x63caa5[_0xeaf7('0x17')]);this['holdtime']=getSeconds(_0x63caa5[_0xeaf7('0x19')],_0x63caa5['responsetime']);this[_0xeaf7('0x1e')]=getSeconds(this['endtime'],_0x63caa5['answertime']);this[_0xeaf7('0xb')]=_0x1f8cbf['queue'];this[_0xeaf7('0x1f')]=_0x1f8cbf[_0xeaf7('0x1f')];this['reason']=_0x1f8cbf['reason'];this[_0xeaf7('0x20')]=_0x63caa5[_0xeaf7('0x20')];this[_0xeaf7('0x21')]=_0x63caa5[_0xeaf7('0x21')];this['callbackat']=_0x63caa5[_0xeaf7('0x22')];this[_0xeaf7('0x23')]=_0x63caa5[_0xeaf7('0x23')];this[_0xeaf7('0x24')]=_0x63caa5[_0xeaf7('0x24')];this[_0xeaf7('0x25')]=_0x63caa5[_0xeaf7('0x25')];this['UserId']=_0x63caa5[_0xeaf7('0x26')];this['VoiceQueueId']=_0x63caa5[_0xeaf7('0x27')];this[_0xeaf7('0x28')]=_0x63caa5[_0xeaf7('0x28')];this[_0xeaf7('0x29')]=_0x63caa5['originatecalleridnum']||'';this['originatecalleridname']=_0x63caa5['originatecalleridname']||'';}module[_0xeaf7('0x2a')]=AgentComplete;
\ No newline at end of file
index 929a083..d378165 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c7=['countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry'];(function(_0x1861e4,_0x54b326){var _0x36258a=function(_0x89cf55){while(--_0x89cf55){_0x1861e4['push'](_0x1861e4['shift']());}};_0x36258a(++_0x54b326);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0xa3307f,_0x44ea6a){_0xa3307f=_0xa3307f-0x0;var _0x33c8d2=_0xb4c7[_0xa3307f];return _0x33c8d2;};'use strict';var util=require(_0x7b4c('0x0'));var _=require(_0x7b4c('0x1'));var moment=require(_0x7b4c('0x2'));function getSeconds(_0xa0d9f1,_0x286a79){var _0x4bef48=moment(_0xa0d9f1)[_0x7b4c('0x3')](0x0);var _0x149d55=moment(_0x286a79)[_0x7b4c('0x3')](0x0);return _0x4bef48[_0x7b4c('0x4')](_0x149d55,_0x7b4c('0x5'));}function Final(_0x5adec9){this[_0x7b4c('0x6')]=_0x5adec9[_0x7b4c('0x6')];this[_0x7b4c('0x7')]=_0x5adec9['scheduledat'];this[_0x7b4c('0x8')]=_0x5adec9[_0x7b4c('0x8')];this['campaigntype']=_0x5adec9[_0x7b4c('0x8')]===_0x7b4c('0x9')?_0x7b4c('0xa'):_0x5adec9[_0x7b4c('0x8')];this[_0x7b4c('0xb')]=_0x5adec9[_0x7b4c('0xb')];this[_0x7b4c('0xc')]=_0x5adec9[_0x7b4c('0xc')];this[_0x7b4c('0xd')]=_0x5adec9[_0x7b4c('0xd')];this['countglobal']=_0x5adec9['countbusyretry']+_0x5adec9[_0x7b4c('0xc')]+_0x5adec9[_0x7b4c('0xd')]+_0x5adec9[_0x7b4c('0xe')]+_0x5adec9[_0x7b4c('0xf')]+_0x5adec9[_0x7b4c('0x10')]+_0x5adec9[_0x7b4c('0x11')]+_0x5adec9[_0x7b4c('0x12')];this[_0x7b4c('0xe')]=_0x5adec9[_0x7b4c('0xe')];this[_0x7b4c('0xf')]=_0x5adec9['countdropretry'];this[_0x7b4c('0x10')]=_0x5adec9[_0x7b4c('0x10')];this[_0x7b4c('0x11')]=_0x5adec9[_0x7b4c('0x11')];this[_0x7b4c('0x12')]=_0x5adec9[_0x7b4c('0x12')];this[_0x7b4c('0xa')]=_0x5adec9[_0x7b4c('0xa')];this['calleridname']=_0x5adec9[_0x7b4c('0x13')];this[_0x7b4c('0x14')]=_0x5adec9[_0x7b4c('0x14')];this[_0x7b4c('0x15')]=_0x5adec9['starttime'];this[_0x7b4c('0x16')]=_0x5adec9[_0x7b4c('0x16')];this[_0x7b4c('0x17')]=_0x5adec9[_0x7b4c('0x16')];this[_0x7b4c('0x18')]=_0x5adec9[_0x7b4c('0x18')]||0x0;this[_0x7b4c('0x19')]=_0x5adec9[_0x7b4c('0x19')]||0x0;this[_0x7b4c('0x1a')]=_0x5adec9['talktime']||0x0;this[_0x7b4c('0x1b')]=_0x5adec9[_0x7b4c('0x1b')];this[_0x7b4c('0x1c')]=_0x5adec9[_0x7b4c('0x1c')];this[_0x7b4c('0x1d')]=_0x5adec9[_0x7b4c('0x1d')];this[_0x7b4c('0x1e')]=_0x5adec9[_0x7b4c('0x1e')];this[_0x7b4c('0x1f')]=_0x5adec9[_0x7b4c('0x1f')];this['ListId']=_0x5adec9[_0x7b4c('0x20')];this[_0x7b4c('0x21')]=_0x5adec9[_0x7b4c('0x21')];this[_0x7b4c('0x22')]=_0x5adec9[_0x7b4c('0x22')];this[_0x7b4c('0x23')]=_0x5adec9[_0x7b4c('0x23')];this[_0x7b4c('0x24')]=_0x5adec9[_0x7b4c('0x24')]||'';this[_0x7b4c('0x25')]=_0x5adec9[_0x7b4c('0x25')]||'';}module[_0x7b4c('0x26')]=Final;
\ No newline at end of file
+var _0x6c32=['originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countmachineretry','countagentrejectretry','countdropretry','countabandonedretry','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId'];(function(_0x3bc255,_0x5712b0){var _0x14e4fc=function(_0x1de689){while(--_0x1de689){_0x3bc255['push'](_0x3bc255['shift']());}};_0x14e4fc(++_0x5712b0);}(_0x6c32,0x6e));var _0x26c3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6c32[_0x20a584];return _0x4b41a8;};'use strict';var util=require(_0x26c3('0x0'));var _=require(_0x26c3('0x1'));var moment=require(_0x26c3('0x2'));function getSeconds(_0x416a62,_0x2bbfc4){var _0x44fc8c=moment(_0x416a62)[_0x26c3('0x3')](0x0);var _0x321cc5=moment(_0x2bbfc4)[_0x26c3('0x3')](0x0);return _0x44fc8c['diff'](_0x321cc5,_0x26c3('0x4'));}function Final(_0x3f7065){this[_0x26c3('0x5')]=_0x3f7065['uniqueid'];this[_0x26c3('0x6')]=_0x3f7065['scheduledat'];this[_0x26c3('0x7')]=_0x3f7065[_0x26c3('0x7')];this[_0x26c3('0x8')]=_0x3f7065[_0x26c3('0x7')]===_0x26c3('0x9')?_0x26c3('0xa'):_0x3f7065[_0x26c3('0x7')];this[_0x26c3('0xb')]=_0x3f7065[_0x26c3('0xb')];this[_0x26c3('0xc')]=_0x3f7065['countcongestionretry'];this['countnoanswerretry']=_0x3f7065['countnoanswerretry'];this['countglobal']=_0x3f7065[_0x26c3('0xb')]+_0x3f7065[_0x26c3('0xc')]+_0x3f7065[_0x26c3('0xd')]+_0x3f7065[_0x26c3('0xe')]+_0x3f7065['countdropretry']+_0x3f7065['countabandonedretry']+_0x3f7065[_0x26c3('0xf')]+_0x3f7065[_0x26c3('0x10')];this[_0x26c3('0xe')]=_0x3f7065[_0x26c3('0xe')];this[_0x26c3('0x11')]=_0x3f7065['countdropretry'];this['countabandonedretry']=_0x3f7065[_0x26c3('0x12')];this[_0x26c3('0xf')]=_0x3f7065['countmachineretry'];this['countagentrejectretry']=_0x3f7065[_0x26c3('0x10')];this['queue']=_0x3f7065[_0x26c3('0xa')];this['calleridname']=_0x3f7065['calleridname'];this[_0x26c3('0x13')]=_0x3f7065['calleridnum'];this[_0x26c3('0x14')]=_0x3f7065['starttime'];this[_0x26c3('0x15')]=_0x3f7065[_0x26c3('0x15')];this[_0x26c3('0x16')]=_0x3f7065[_0x26c3('0x15')];this[_0x26c3('0x17')]=_0x3f7065['ringtime']||0x0;this['holdtime']=_0x3f7065[_0x26c3('0x18')]||0x0;this[_0x26c3('0x19')]=_0x3f7065['talktime']||0x0;this['callback']=_0x3f7065[_0x26c3('0x1a')];this['callbackuniqueid']=_0x3f7065['callbackuniqueid'];this[_0x26c3('0x1b')]=_0x3f7065['callbackat'];this[_0x26c3('0x1c')]=_0x3f7065['recallme'];this[_0x26c3('0x1d')]=_0x3f7065['ContactId'];this[_0x26c3('0x1e')]=_0x3f7065[_0x26c3('0x1e')];this[_0x26c3('0x1f')]=_0x3f7065[_0x26c3('0x1f')];this[_0x26c3('0x20')]=_0x3f7065[_0x26c3('0x20')];this[_0x26c3('0x21')]=_0x3f7065[_0x26c3('0x21')];this[_0x26c3('0x22')]=_0x3f7065[_0x26c3('0x22')]||'';this['originatecalleridname']=_0x3f7065[_0x26c3('0x23')]||'';}module['exports']=Final;
\ No newline at end of file
index d7a9e88..a21aab1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c4f=['countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','name','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','queue','membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','milliseconds','seconds','Answer','scheduledat','type','countbusyretry','countcongestionretry'];(function(_0x3f4bb2,_0x1fe283){var _0x113328=function(_0xdb325f){while(--_0xdb325f){_0x3f4bb2['push'](_0x3f4bb2['shift']());}};_0x113328(++_0x1fe283);}(_0x4c4f,0x75));var _0xf4c4=function(_0x40587b,_0x3e886a){_0x40587b=_0x40587b-0x0;var _0x4ad337=_0x4c4f[_0x40587b];return _0x4ad337;};'use strict';var util=require(_0xf4c4('0x0'));var _=require(_0xf4c4('0x1'));var moment=require('moment');function getSeconds(_0x360690,_0x51f51d){var _0x43815c=moment(_0x360690)[_0xf4c4('0x2')](0x0);var _0x51cd95=moment(_0x51f51d)['milliseconds'](0x0);return _0x43815c['diff'](_0x51cd95,_0xf4c4('0x3'));}function Hangup(_0x4abde9,_0x64b056){this['state']=0x4;this['statedesc']=_0xf4c4('0x4');this['scheduledat']=_0x4abde9[_0xf4c4('0x5')];this[_0xf4c4('0x6')]=_0x4abde9[_0xf4c4('0x6')];this['campaigntype']=_0x4abde9[_0xf4c4('0x6')]==='outbound'?'queue':_0x4abde9['type'];this[_0xf4c4('0x7')]=_0x4abde9[_0xf4c4('0x7')];this['countcongestionretry']=_0x4abde9[_0xf4c4('0x8')];this[_0xf4c4('0x9')]=_0x4abde9['countnoanswerretry'];this[_0xf4c4('0xa')]=_0x4abde9['countbusyretry']+_0x4abde9['countcongestionretry']+_0x4abde9['countnoanswerretry']+_0x4abde9[_0xf4c4('0xb')]+_0x4abde9[_0xf4c4('0xc')]+_0x4abde9[_0xf4c4('0xd')]+_0x4abde9[_0xf4c4('0xe')]+_0x4abde9[_0xf4c4('0xf')];this[_0xf4c4('0xb')]=_0x4abde9[_0xf4c4('0xb')];this[_0xf4c4('0xc')]=_0x4abde9[_0xf4c4('0xc')];this[_0xf4c4('0xd')]=_0x4abde9[_0xf4c4('0xd')];this['countmachineretry']=_0x4abde9['countmachineretry'];this[_0xf4c4('0xf')]=_0x4abde9['countagentrejectretry'];this['uniqueid']=_0x64b056['uniqueid'];this[_0xf4c4('0x10')]=_0x4abde9[_0xf4c4('0x11')];this[_0xf4c4('0x12')]=_0x4abde9[_0xf4c4('0x13')];this[_0xf4c4('0x14')]=_0x4abde9[_0xf4c4('0x14')];this[_0xf4c4('0x15')]=_0x4abde9[_0xf4c4('0x15')];this[_0xf4c4('0x16')]=moment()[_0xf4c4('0x17')](_0xf4c4('0x18'));this['ringtime']=getSeconds(_0x4abde9[_0xf4c4('0x15')],_0x4abde9[_0xf4c4('0x14')]);this[_0xf4c4('0x19')]=0x0;this[_0xf4c4('0x1a')]=getSeconds(this['endtime'],_0x4abde9['responsetime']);this[_0xf4c4('0x1b')]=_0x4abde9['queue'];this[_0xf4c4('0x1c')]=_0xf4c4('0x1d');this[_0xf4c4('0x1e')]=_0x64b056[_0xf4c4('0x1f')];this[_0xf4c4('0x20')]=_0x4abde9[_0xf4c4('0x20')];this[_0xf4c4('0x21')]=_0x4abde9[_0xf4c4('0x21')];this['callbackat']=_0x4abde9[_0xf4c4('0x22')];this[_0xf4c4('0x23')]=_0x4abde9[_0xf4c4('0x23')];this[_0xf4c4('0x24')]=_0x4abde9[_0xf4c4('0x24')];this[_0xf4c4('0x25')]=_0x4abde9[_0xf4c4('0x25')];this['UserId']=_0x4abde9[_0xf4c4('0x26')];this[_0xf4c4('0x27')]=_0x4abde9[_0xf4c4('0x27')];this[_0xf4c4('0x28')]=_0x4abde9[_0xf4c4('0x28')];}module[_0xf4c4('0x29')]=Hangup;
\ No newline at end of file
+var _0x6e1a=['callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','util','lodash','moment','milliseconds','diff','seconds','state','statedesc','scheduledat','type','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','talktime','IVR','reason','cause-txt','callback'];(function(_0x2edd03,_0x5ae4dc){var _0x104a74=function(_0x236f36){while(--_0x236f36){_0x2edd03['push'](_0x2edd03['shift']());}};_0x104a74(++_0x5ae4dc);}(_0x6e1a,0x13c));var _0xa6e1=function(_0x4b1d60,_0x5b3d88){_0x4b1d60=_0x4b1d60-0x0;var _0x1a5e6c=_0x6e1a[_0x4b1d60];return _0x1a5e6c;};'use strict';var util=require(_0xa6e1('0x0'));var _=require(_0xa6e1('0x1'));var moment=require(_0xa6e1('0x2'));function getSeconds(_0x35f5d7,_0x5d286a){var _0x1d16d9=moment(_0x35f5d7)['milliseconds'](0x0);var _0x3c7247=moment(_0x5d286a)[_0xa6e1('0x3')](0x0);return _0x1d16d9[_0xa6e1('0x4')](_0x3c7247,_0xa6e1('0x5'));}function Hangup(_0xebf3fa,_0x1c79e4){this[_0xa6e1('0x6')]=0x4;this[_0xa6e1('0x7')]='Answer';this['scheduledat']=_0xebf3fa[_0xa6e1('0x8')];this[_0xa6e1('0x9')]=_0xebf3fa['type'];this['campaigntype']=_0xebf3fa[_0xa6e1('0x9')]==='outbound'?_0xa6e1('0xa'):_0xebf3fa[_0xa6e1('0x9')];this[_0xa6e1('0xb')]=_0xebf3fa[_0xa6e1('0xb')];this['countcongestionretry']=_0xebf3fa[_0xa6e1('0xc')];this[_0xa6e1('0xd')]=_0xebf3fa[_0xa6e1('0xd')];this[_0xa6e1('0xe')]=_0xebf3fa['countbusyretry']+_0xebf3fa['countcongestionretry']+_0xebf3fa[_0xa6e1('0xd')]+_0xebf3fa[_0xa6e1('0xf')]+_0xebf3fa[_0xa6e1('0x10')]+_0xebf3fa[_0xa6e1('0x11')]+_0xebf3fa[_0xa6e1('0x12')]+_0xebf3fa[_0xa6e1('0x13')];this[_0xa6e1('0xf')]=_0xebf3fa[_0xa6e1('0xf')];this[_0xa6e1('0x10')]=_0xebf3fa[_0xa6e1('0x10')];this[_0xa6e1('0x11')]=_0xebf3fa['countabandonedretry'];this['countmachineretry']=_0xebf3fa[_0xa6e1('0x12')];this['countagentrejectretry']=_0xebf3fa[_0xa6e1('0x13')];this['uniqueid']=_0x1c79e4[_0xa6e1('0x14')];this[_0xa6e1('0x15')]=_0xebf3fa[_0xa6e1('0x16')];this[_0xa6e1('0x17')]=_0xebf3fa[_0xa6e1('0x18')];this[_0xa6e1('0x19')]=_0xebf3fa[_0xa6e1('0x19')];this[_0xa6e1('0x1a')]=_0xebf3fa[_0xa6e1('0x1a')];this[_0xa6e1('0x1b')]=moment()[_0xa6e1('0x1c')](_0xa6e1('0x1d'));this[_0xa6e1('0x1e')]=getSeconds(_0xebf3fa[_0xa6e1('0x1a')],_0xebf3fa[_0xa6e1('0x19')]);this['holdtime']=0x0;this[_0xa6e1('0x1f')]=getSeconds(this[_0xa6e1('0x1b')],_0xebf3fa[_0xa6e1('0x1a')]);this[_0xa6e1('0xa')]=_0xebf3fa['queue'];this['membername']=_0xa6e1('0x20');this[_0xa6e1('0x21')]=_0x1c79e4[_0xa6e1('0x22')];this['callback']=_0xebf3fa[_0xa6e1('0x23')];this[_0xa6e1('0x24')]=_0xebf3fa[_0xa6e1('0x24')];this[_0xa6e1('0x25')]=_0xebf3fa[_0xa6e1('0x25')];this[_0xa6e1('0x26')]=_0xebf3fa[_0xa6e1('0x26')];this['ContactId']=_0xebf3fa[_0xa6e1('0x27')];this[_0xa6e1('0x28')]=_0xebf3fa['ListId'];this[_0xa6e1('0x29')]=_0xebf3fa[_0xa6e1('0x29')];this[_0xa6e1('0x2a')]=_0xebf3fa[_0xa6e1('0x2a')];this[_0xa6e1('0x2b')]=_0xebf3fa['CampaignId'];}module['exports']=Hangup;
\ No newline at end of file
index f97684a..3df591e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17d0=['starttime','responsetime','endtime','ringtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','milliseconds','diff','uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countdropretry','queue','calleridname','name','number'];(function(_0x5660f6,_0x5646db){var _0x4bf573=function(_0x12a85){while(--_0x12a85){_0x5660f6['push'](_0x5660f6['shift']());}};_0x4bf573(++_0x5646db);}(_0x17d0,0x7f));var _0x017d=function(_0x97c6ea,_0x4cffce){_0x97c6ea=_0x97c6ea-0x0;var _0x2d7f50=_0x17d0[_0x97c6ea];return _0x2d7f50;};'use strict';var util=require(_0x017d('0x0'));var _=require('lodash');var moment=require('moment');function getSeconds(_0x4b21a7,_0x5744f8){var _0x481664=moment(_0x4b21a7)[_0x017d('0x1')](0x0);var _0x421c1a=moment(_0x5744f8)[_0x017d('0x1')](0x0);return _0x481664[_0x017d('0x2')](_0x421c1a,'seconds');}function History(_0x3915c1){this[_0x017d('0x3')]=_0x3915c1[_0x017d('0x3')];this[_0x017d('0x4')]=_0x3915c1[_0x017d('0x4')]||undefined;this[_0x017d('0x5')]=_0x3915c1['type'];this[_0x017d('0x6')]=_0x3915c1[_0x017d('0x5')]===_0x017d('0x7')?'queue':_0x3915c1[_0x017d('0x5')];this[_0x017d('0x8')]=_0x3915c1['countbusyretry'];this['countcongestionretry']=_0x3915c1[_0x017d('0x9')];this[_0x017d('0xa')]=_0x3915c1['countnoanswerretry'];this[_0x017d('0xb')]=_0x3915c1[_0x017d('0x8')]+_0x3915c1['countcongestionretry']+_0x3915c1[_0x017d('0xa')]+_0x3915c1['countnosuchnumberretry']+_0x3915c1['countdropretry']+_0x3915c1[_0x017d('0xc')]+_0x3915c1[_0x017d('0xd')]+_0x3915c1[_0x017d('0xe')];this[_0x017d('0xf')]=_0x3915c1[_0x017d('0xf')];this['countdropretry']=_0x3915c1[_0x017d('0x10')];this[_0x017d('0xc')]=_0x3915c1[_0x017d('0xc')];this[_0x017d('0xd')]=_0x3915c1[_0x017d('0xd')];this[_0x017d('0xe')]=_0x3915c1[_0x017d('0xe')];this['queue']=_0x3915c1[_0x017d('0x11')];this[_0x017d('0x12')]=_0x3915c1[_0x017d('0x13')];this['calleridnum']=_0x3915c1[_0x017d('0x14')];this[_0x017d('0x15')]=_0x3915c1[_0x017d('0x15')];this['responsetime']=_0x3915c1[_0x017d('0x16')];this[_0x017d('0x17')]=_0x3915c1[_0x017d('0x16')];this[_0x017d('0x18')]=getSeconds(_0x3915c1[_0x017d('0x16')],_0x3915c1[_0x017d('0x15')]);this['holdtime']=0x0;this[_0x017d('0x19')]=0x0;this[_0x017d('0x1a')]=_0x3915c1[_0x017d('0x1a')];this[_0x017d('0x1b')]=_0x3915c1[_0x017d('0x1b')];this[_0x017d('0x1c')]=_0x3915c1[_0x017d('0x1c')];this[_0x017d('0x1d')]=_0x3915c1[_0x017d('0x1d')];this[_0x017d('0x1e')]=_0x3915c1['ContactId'];this['ListId']=_0x3915c1['ListId'];this[_0x017d('0x1f')]=_0x3915c1['UserId'];this[_0x017d('0x20')]=_0x3915c1[_0x017d('0x20')];this[_0x017d('0x21')]=_0x3915c1['CampaignId'];this[_0x017d('0x22')]=_0x3915c1[_0x017d('0x22')]||'';this['originatecalleridname']=_0x3915c1[_0x017d('0x23')]||'';}module[_0x017d('0x24')]=History;
\ No newline at end of file
+var _0x9e8f=['name','number','starttime','responsetime','ringtime','talktime','callback','callbackuniqueid','callbackat','recallme','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry'];(function(_0x338c2c,_0x5dd3e1){var _0xb603fb=function(_0x825e5f){while(--_0x825e5f){_0x338c2c['push'](_0x338c2c['shift']());}};_0xb603fb(++_0x5dd3e1);}(_0x9e8f,0x121));var _0xf9e8=function(_0x341589,_0x2575a7){_0x341589=_0x341589-0x0;var _0x2917a5=_0x9e8f[_0x341589];return _0x2917a5;};'use strict';var util=require('util');var _=require('lodash');var moment=require('moment');function getSeconds(_0x9c7a6d,_0x41b950){var _0x14245d=moment(_0x9c7a6d)[_0xf9e8('0x0')](0x0);var _0x424434=moment(_0x41b950)[_0xf9e8('0x0')](0x0);return _0x14245d['diff'](_0x424434,_0xf9e8('0x1'));}function History(_0x5efd4a){this['uniqueid']=_0x5efd4a[_0xf9e8('0x2')];this[_0xf9e8('0x3')]=_0x5efd4a[_0xf9e8('0x3')]||undefined;this[_0xf9e8('0x4')]=_0x5efd4a['type'];this[_0xf9e8('0x5')]=_0x5efd4a[_0xf9e8('0x4')]===_0xf9e8('0x6')?_0xf9e8('0x7'):_0x5efd4a[_0xf9e8('0x4')];this[_0xf9e8('0x8')]=_0x5efd4a[_0xf9e8('0x8')];this[_0xf9e8('0x9')]=_0x5efd4a[_0xf9e8('0x9')];this[_0xf9e8('0xa')]=_0x5efd4a[_0xf9e8('0xa')];this[_0xf9e8('0xb')]=_0x5efd4a[_0xf9e8('0x8')]+_0x5efd4a['countcongestionretry']+_0x5efd4a[_0xf9e8('0xa')]+_0x5efd4a[_0xf9e8('0xc')]+_0x5efd4a[_0xf9e8('0xd')]+_0x5efd4a[_0xf9e8('0xe')]+_0x5efd4a[_0xf9e8('0xf')]+_0x5efd4a[_0xf9e8('0x10')];this['countnosuchnumberretry']=_0x5efd4a[_0xf9e8('0xc')];this['countdropretry']=_0x5efd4a['countdropretry'];this[_0xf9e8('0xe')]=_0x5efd4a['countabandonedretry'];this[_0xf9e8('0xf')]=_0x5efd4a[_0xf9e8('0xf')];this[_0xf9e8('0x10')]=_0x5efd4a[_0xf9e8('0x10')];this['queue']=_0x5efd4a[_0xf9e8('0x7')];this['calleridname']=_0x5efd4a[_0xf9e8('0x11')];this['calleridnum']=_0x5efd4a[_0xf9e8('0x12')];this[_0xf9e8('0x13')]=_0x5efd4a['starttime'];this['responsetime']=_0x5efd4a[_0xf9e8('0x14')];this['endtime']=_0x5efd4a[_0xf9e8('0x14')];this[_0xf9e8('0x15')]=getSeconds(_0x5efd4a[_0xf9e8('0x14')],_0x5efd4a['starttime']);this['holdtime']=0x0;this[_0xf9e8('0x16')]=0x0;this[_0xf9e8('0x17')]=_0x5efd4a[_0xf9e8('0x17')];this[_0xf9e8('0x18')]=_0x5efd4a[_0xf9e8('0x18')];this[_0xf9e8('0x19')]=_0x5efd4a[_0xf9e8('0x19')];this[_0xf9e8('0x1a')]=_0x5efd4a[_0xf9e8('0x1a')];this['ContactId']=_0x5efd4a['ContactId'];this[_0xf9e8('0x1b')]=_0x5efd4a[_0xf9e8('0x1b')];this[_0xf9e8('0x1c')]=_0x5efd4a[_0xf9e8('0x1c')];this[_0xf9e8('0x1d')]=_0x5efd4a[_0xf9e8('0x1d')];this[_0xf9e8('0x1e')]=_0x5efd4a['CampaignId'];this['originatecalleridnum']=_0x5efd4a[_0xf9e8('0x1f')]||'';this[_0xf9e8('0x20')]=_0x5efd4a['originatecalleridname']||'';}module[_0xf9e8('0x21')]=History;
\ No newline at end of file
index 29555bf..2ca49d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fef=['AnswerAGI','AGI','cause-txt','Unknow','reason','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','syncAgentConnect','answertime','queueCallerAbandonCreateState','syncQueueCallerAbandon','droptime','responsetime','dialQueueTimeout','Drop','dropreason','TIMEOUT','dialDropMaxRetry','[rescheduleContact][Drop]','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','CALLEREXIT','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','Abandoned','[syncAgentComplete][createHistory][11]','syncQueueMember','actionid','locked','stateinterface','rrmemory','queueBooked','push','paused','queueStatusComplete','syncQueueStatusComplete','run','idHopper','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','syncCampaigns','checkIsTrunkReachable','isTrunkReachable','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','iftime\x20%s,%s','interval','content','indexOf','command','true','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','checkIfTime','dialGlobalInterval','dialTimezone','\x5cw{0,','pow','replace','match','actionOriginate','originate','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','createdAt','%s%s','XMD-','toUpper','callerid','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','SIP/%s/%s%s','dialCutDigit','substring','TrunkBackup','trim','from-sip','OriginateError','[originate][error]','originate\x20action\x20Error','getQueue','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','countbusyretry','countnoanswerretry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialCongestionRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAgentRejectMaxRetry','[rescheduleContact][AgentReject]','object','entity\x20is\x20undefine','nosuchnumber','reason\x200\x20no\x20such\x20number....','noanswer','[syncAgentComplete][createHistory][3]','dialNoAnswerMaxRetry','Busy','busy','reason\x205\x20busy','Congestion','custom:agentcongestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','reason\x2011\x20abandoned','AgentReject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','[callProgressDetecting]','[moveContactManagedDialer][0]','contact\x20not\x20moved','round','predictiveIntervalMinThreshold','predictiveIntervalHitRate','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','started\x20in\x20predictive\x20at','averageHandleTime','recalculate\x20predictive\x20at','getDataPredictive','startMethodPredictive',')\x20are\x20less\x20than\x20threshold\x20(','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','dialPredictiveOptimizationPercentage','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','floor','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','Agent','voicePause','dialRecallInQueue','RECALLINQUEUE','RecallInQueue','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose]','BLACKLIST','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','getContactDialerIvr','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','loggerHandler','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','[getContactDialer2]','[handlePredictive][limitChannel]','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Umin\x20=\x20','exports','util','lodash','uuid','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','syncQueueSummary','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./final','./queueCallerAbandon','./hangup','env','127.0.0.1','roundrobin','prototype','enqueue','tail','finally','voiceQueues','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBookedRR','queuecallerabandon','originateresponse','syncOriginateResponse','bind','agentcomplete','syncAgentComplete','hangup','syncHangup','newexten','syncNewExten','varset','syncVarSet','loopCampaigns','loopClearZombieChannels','message','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','isEmpty','Intervals','[ifTime][Action]','Error','milliseconds','seconds','emit','outbound','strategy','answered','loggedIn','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','stringify','format','voice:queue:%s','voice_queue:save','type','ivr','campaign:save','info','-----\x20Stats\x20Predictive\x20---','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','diff','isUndefined','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','preview','string','\x22%s\x22\x20<%s>','error','inspect','stack','length','originated','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','AVAILABLE_CONTACTS_FINISHED','waiting','pTalking','available','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20disactive','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','endtime','starttime','clearZombieChannels','[uniqueid]','[actions]','sequence','isNil','Action','status','channel','catch','updateOriginated','queue','campaigns','countReScheduled','resolve','then','[countReScheduled]\x20','checkIsBlackList','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','avgHandleTime','rescheduleContact','[rescheduleContact]\x20','unlockContact','getContactDialer','temp','[getContactDialer]\x20','getVoiceQueueRtPauses','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','emptyContact','merge','pick','ContactId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','active','SIP/%s','reachable','unmonitored','saveInDb','uniqueid','variable','amdstatus','xcally-motion-dialer','dialAMDActive','value','HANGUP','outboundAnswerCallsDay','statedesc','HangupInAMD','membername','AMD','custom:amd','buildObj','amd','[syncHangupInAMD]','MACHINE','Machine','countmachineretry','countglobal','[syncAgentComplete][createHistory][0]','countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','stateGlobal','reason19\x20machine....','createStateFinal','reason\x2019\x20machine....','add','ListId','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','dialGlobalMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','[rescheduleContact][Machine]','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject'];(function(_0x20f1fd,_0xdf9c4e){var _0x56eb37=function(_0x46a260){while(--_0x46a260){_0x20f1fd['push'](_0x20f1fd['shift']());}};_0x56eb37(++_0xdf9c4e);}(_0x4fef,0x10f));var _0xf4fe=function(_0x45bd40,_0x582be3){_0x45bd40=_0x45bd40-0x0;var _0x567cd3=_0x4fef[_0x45bd40];return _0x567cd3;};'use strict';var util=require(_0xf4fe('0x0'));var _=require(_0xf4fe('0x1'));var BPromise=require('bluebird');var uuid=require(_0xf4fe('0x2'));var moment=require('moment');var rr=require('rr');var md5=require(_0xf4fe('0x3'));var Redis=require(_0xf4fe('0x4'));var ut=require(_0xf4fe('0x5'));var config=require(_0xf4fe('0x6'));var logger=require(_0xf4fe('0x7'))(_0xf4fe('0x8'));var loggerBooked=require(_0xf4fe('0x7'))(_0xf4fe('0x9'));var loggerPredictive=require('../../../config/logger')(_0xf4fe('0xa'));var loggerPredictiveCalls=require(_0xf4fe('0x7'))('predictiveCalls');var loggerSyncQueueSummary=require(_0xf4fe('0x7'))(_0xf4fe('0xb'));var ami=require(_0xf4fe('0xc'));config[_0xf4fe('0xd')]=_[_0xf4fe('0xe')](config[_0xf4fe('0xd')],{'host':_0xf4fe('0xf'),'port':0x18eb});var io=require(_0xf4fe('0x10'))(new Redis(config['redis']));var cmHopper=require(_0xf4fe('0x11'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0xf4fe('0x12'));var voiceQueueRt=require(_0xf4fe('0x13'));var Action=require(_0xf4fe('0x14'));var History=require(_0xf4fe('0x15'));var Final=require(_0xf4fe('0x16'));var AgentComplete=require('./agentComplete');var QueueCallerAbandon=require(_0xf4fe('0x17'));var Hangup=require(_0xf4fe('0x18'));var ipAgi=process[_0xf4fe('0x19')]['XCALLY_IP_AGI']||_0xf4fe('0x1a');var strategy={'rrmemory':'rrmemory','roundrobin':_0xf4fe('0x1b')};var Sequence=function(){};Sequence[_0xf4fe('0x1c')][_0xf4fe('0x1d')]=function(_0x4eb042){this[_0xf4fe('0x1e')]=this[_0xf4fe('0x1e')]?this['tail'][_0xf4fe('0x1f')](_0x4eb042):_0x4eb042();};function Dialer(_0x362e4d,_0x3493cd){this['sequence']=new Sequence();this['preview']=_0x3493cd;this[_0xf4fe('0x20')]=_0x362e4d[_0xf4fe('0x20')];this['campaigns']=_0x362e4d['campaigns'];this[_0xf4fe('0x21')]=_0x362e4d[_0xf4fe('0x21')];this[_0xf4fe('0x22')]=_0x362e4d[_0xf4fe('0x22')];this[_0xf4fe('0x23')]=config[_0xf4fe('0x23')]||0x2;this[_0xf4fe('0x24')]={};this[_0xf4fe('0x25')]={};this[_0xf4fe('0x26')]={};this[_0xf4fe('0x27')]={};this[_0xf4fe('0x28')]={};this[_0xf4fe('0x29')]={};this[_0xf4fe('0x2a')]={};this[_0xf4fe('0x2b')]={};this['queueBooked']={};this[_0xf4fe('0x2c')]={};ami['on']('agentconnect',this['syncAgentConnect']['bind'](this));ami['on'](_0xf4fe('0x2d'),this['syncQueueCallerAbandon']['bind'](this));ami['on'](_0xf4fe('0x2e'),this[_0xf4fe('0x2f')][_0xf4fe('0x30')](this));ami['on'](_0xf4fe('0x31'),this[_0xf4fe('0x32')][_0xf4fe('0x30')](this));ami['on']('custom:queuesummary',this[_0xf4fe('0xb')][_0xf4fe('0x30')](this));ami['on'](_0xf4fe('0x33'),this[_0xf4fe('0x34')][_0xf4fe('0x30')](this));ami['on'](_0xf4fe('0x35'),this[_0xf4fe('0x36')]['bind'](this));ami['on'](_0xf4fe('0x37'),this[_0xf4fe('0x38')][_0xf4fe('0x30')](this));ami['on']('queuemember',this['syncQueueMember'][_0xf4fe('0x30')](this));ami['on']('queuestatuscomplete',this['syncQueueStatusComplete'][_0xf4fe('0x30')](this));this[_0xf4fe('0x39')]();this[_0xf4fe('0x3a')]();}function isNotNull(_0x1ffadb){return _0x1ffadb!==null&&!_['isUndefined'](_0x1ffadb);}function checkIsLoggedIn(_0x50a6a3,_0x4b4832){return function(){if(_0x4b4832<=0x0){_0x50a6a3[_0xf4fe('0x3b')]='AGENTS_NOT_LOGGED';throw _0x50a6a3[_0xf4fe('0x3c')]+_0xf4fe('0x3d');}};}function isActive(_0x394785){return _0x394785;}function checkIsActive(_0x1e7fbd,_0x171f83){return function(){if(!isActive(_0x171f83)){_0x1e7fbd[_0xf4fe('0x3b')]=_0xf4fe('0x3e');throw _0x1e7fbd[_0xf4fe('0x3c')]+_0xf4fe('0x3f');}};}function checkInterval(_0x1d65c6){return function(){if(!isNotNull(_0x1d65c6[_0xf4fe('0x40')])){_0x1d65c6[_0xf4fe('0x3b')]=_0xf4fe('0x41');throw _0x1d65c6['name']+_0xf4fe('0x42');}if(!isNotNull(_0x1d65c6[_0xf4fe('0x40')]['Intervals'])){_0x1d65c6[_0xf4fe('0x3b')]=_0xf4fe('0x41');throw _0x1d65c6['name']+_0xf4fe('0x42');}if(!isNotNull(_[_0xf4fe('0x43')](_0x1d65c6[_0xf4fe('0x40')][_0xf4fe('0x44')]))){_0x1d65c6[_0xf4fe('0x3b')]=_0xf4fe('0x41');throw _0x1d65c6['name']+_0xf4fe('0x42');}};}function msgResponse(_0x10f729,_0x584be8,_0x21034d){return{'action':_0x10f729,'response':_0x584be8,'message':_0x21034d,'stack':_0x21034d};}function myreject(_0x2d97fd){return function(_0x35fed3){return _0x2d97fd(msgResponse(_0xf4fe('0x45'),_0xf4fe('0x46'),JSON['stringify'](_0x35fed3)));};}function getSeconds(_0x572a19,_0x40d1b3){var _0x66db2d=moment(_0x572a19)['milliseconds'](0x0);var _0x7454ee=moment(_0x40d1b3)[_0xf4fe('0x47')](0x0);return _0x66db2d['diff'](_0x7454ee,_0xf4fe('0x48'));}function emit(_0x5e2948,_0x5511a8,_0x392729){io['to'](_0x5e2948)[_0xf4fe('0x49')](_0x5511a8,_0x392729);}function emitVoiceQueueSummary(_0x75baf4){if(_0x75baf4['type']===_0xf4fe('0x4a')){var _0x3ffbe5={'id':_0x75baf4['id'],'name':_0x75baf4[_0xf4fe('0x3c')],'strategy':_0x75baf4[_0xf4fe('0x4b')],'answered':_0x75baf4[_0xf4fe('0x4c')],'available':_0x75baf4['available'],'loggedIn':_0x75baf4[_0xf4fe('0x4d')],'pTalking':_0x75baf4['pTalking'],'sumBillable':_0x75baf4['sumBillable'],'sumDuration':_0x75baf4[_0xf4fe('0x4e')],'sumHoldTime':_0x75baf4[_0xf4fe('0x4f')]||0x0,'talking':_0x75baf4[_0xf4fe('0x50')],'total':_0x75baf4[_0xf4fe('0x51')],'type':_0x75baf4['type'],'unmanaged':_0x75baf4[_0xf4fe('0x52')],'abandoned':_0x75baf4[_0xf4fe('0x53')],'waiting':_0x75baf4['waiting'],'loggedInDb':_0x75baf4[_0xf4fe('0x54')],'dialActive':_0x75baf4[_0xf4fe('0x55')],'dialMethod':_0x75baf4[_0xf4fe('0x56')],'dialOriginateCallerIdName':_0x75baf4[_0xf4fe('0x57')],'dialOriginateCallerIdNumber':_0x75baf4['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x75baf4[_0xf4fe('0x58')],'dialPrefix':_0x75baf4[_0xf4fe('0x59')],'outboundAnswerAgiCallsDay':_0x75baf4[_0xf4fe('0x5a')],'outboundAnswerCallsDay':_0x75baf4['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x75baf4[_0xf4fe('0x5b')],'outboundBusyCallsDay':_0x75baf4[_0xf4fe('0x5c')],'outboundCongestionCallsDay':_0x75baf4[_0xf4fe('0x5d')],'outboundDropCallsDayACS':_0x75baf4[_0xf4fe('0x5e')],'outboundDropCallsDayCallersExit':_0x75baf4['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x75baf4[_0xf4fe('0x5f')],'outboundNoAnswerCallsDay':_0x75baf4[_0xf4fe('0x60')],'outboundNoSuchCallsDay':_0x75baf4[_0xf4fe('0x61')],'outboundOriginateFailureCallsDay':_0x75baf4[_0xf4fe('0x62')],'outboundReCallsDay':_0x75baf4[_0xf4fe('0x63')],'outboundRejectCallsDay':_0x75baf4['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x75baf4[_0xf4fe('0x64')],'predictiveIntervalAnsweredCalls':_0x75baf4[_0xf4fe('0x65')],'predictiveIntervalAvgHoldtime':_0x75baf4[_0xf4fe('0x66')],'predictiveIntervalAvgTalktime':_0x75baf4[_0xf4fe('0x67')],'predictiveIntervalDroppedCallsCallersExit':_0x75baf4[_0xf4fe('0x68')],'predictiveIntervalDroppedCallsTimeout':_0x75baf4[_0xf4fe('0x69')],'predictiveIntervalErlangCalls':_0x75baf4[_0xf4fe('0x6a')],'predictiveIntervalErlangCallsDroppedCalls':_0x75baf4[_0xf4fe('0x6b')],'predictiveIntervalHitRate':_0x75baf4['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x75baf4[_0xf4fe('0x6c')],'predictiveIntervalPauses':_0x75baf4['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x75baf4[_0xf4fe('0x6d')],'predictiveIntervalTotalCalls':_0x75baf4[_0xf4fe('0x6e')],'message':_0x75baf4[_0xf4fe('0x3b')],'originated':_0x75baf4['originated'],'erlangCalls':_0x75baf4[_0xf4fe('0x6f')],'erlangCallToSecond':_0x75baf4[_0xf4fe('0x70')],'erlangAbandonmentRate':_0x75baf4[_0xf4fe('0x71')],'erlangBusyFactor':_0x75baf4[_0xf4fe('0x72')],'startPredictive':_0x75baf4['startPredictive'],'startProgressive':_0x75baf4[_0xf4fe('0x2a')]};if(_0x75baf4['Trunk']){_0x3ffbe5[_0xf4fe('0x73')]={'id':_0x75baf4[_0xf4fe('0x73')]['id'],'name':_0x75baf4[_0xf4fe('0x73')][_0xf4fe('0x3c')],'active':_0x75baf4[_0xf4fe('0x73')]['active'],'callerid':_0x75baf4[_0xf4fe('0x73')]['callerid']};}if(_0x75baf4[_0xf4fe('0x40')]){_0x3ffbe5[_0xf4fe('0x40')]={'id':_0x75baf4[_0xf4fe('0x40')]['id'],'name':_0x75baf4['Interval']['name']};}var _0x59dcdf=md5(JSON[_0xf4fe('0x74')](_0x3ffbe5));if(_0x75baf4[_0xf4fe('0x3')]!==_0x59dcdf){_0x75baf4[_0xf4fe('0x3')]=_0x59dcdf;emit(util[_0xf4fe('0x75')](_0xf4fe('0x76'),_0x3ffbe5[_0xf4fe('0x3c')]),_0xf4fe('0x77'),_0x3ffbe5);}}}function emitCampaignSummary(_0x57acfa){if(_0x57acfa[_0xf4fe('0x78')]===_0xf4fe('0x79')){emit(util[_0xf4fe('0x75')]('campaign:ivr:%s',_0x57acfa[_0xf4fe('0x3c')]),_0xf4fe('0x7a'),_0x57acfa);}}function checkGetDataPredictive(_0x478edc){if(isNotNull(_0x478edc)&&!_[_0xf4fe('0x43')](_0x478edc)){loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x7c'));loggerPredictive['info']('Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x478edc[_0xf4fe('0x6e')]);loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x7d'),_0x478edc[_0xf4fe('0x65')]);loggerPredictive['info'](_0xf4fe('0x7e'),_0x478edc[_0xf4fe('0x69')]);loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x7f'),_0x478edc[_0xf4fe('0x68')]);loggerPredictive[_0xf4fe('0x7b')]('AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x478edc[_0xf4fe('0x66')]);loggerPredictive[_0xf4fe('0x7b')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x478edc[_0xf4fe('0x67')]);loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x80'));if(_0x478edc[_0xf4fe('0x6e')]>0x0){if(!_['isUndefined'](_0x478edc['predictiveIntervalAvgTalktime'])&&_0x478edc['predictiveIntervalAvgTalktime']>0x0){return!![];}loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x81'));if(!_['isUndefined'](_0x478edc[_0xf4fe('0x66')])&&_0x478edc[_0xf4fe('0x66')]>0x0){return!![];}loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x82'));}else{loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x83'));}}else{loggerPredictive[_0xf4fe('0x7b')]('History\x20information\x20are\x20empty');}return![];}function mergeDataErlangB(_0x3a1cae){return function(_0x229c0c){loggerPredictive['info'](_0xf4fe('0x84'));loggerPredictive['info'](_0xf4fe('0x85'),_0x229c0c['erlangCalls']);loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x86'),_0x229c0c[_0xf4fe('0x70')]);loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x87'),_0x229c0c[_0xf4fe('0x71')]);loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x88'),_0x229c0c[_0xf4fe('0x72')]);loggerPredictive['info']('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x229c0c[_0xf4fe('0x71')]);loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x80'));_['merge'](_0x3a1cae,_0x229c0c);};}function getDiff(_0x21331d){var _0x274b79=moment()[_0xf4fe('0x47')](0x0);var _0x126c33=moment(_0x21331d)['milliseconds'](0x0);return _0x274b79[_0xf4fe('0x89')](_0x126c33,_0xf4fe('0x48'));}function ifInterval(_0xea110b,_0x5e35ba){if(_['isUndefined'](_0x5e35ba)){return![];}return getDiff(_0x5e35ba)<_0xea110b*0x3c;}function freeVariablesPredictive(_0x1c3b42){if(isNotNull(_0x1c3b42)){if(!_[_0xf4fe('0x8a')](_0x1c3b42[_0xf4fe('0x2a')])){_0x1c3b42['startProgressive']=undefined;loggerPredictive['info'](_0x1c3b42[_0xf4fe('0x3c')],_0xf4fe('0x8b'));}if(!_[_0xf4fe('0x8a')](_0x1c3b42[_0xf4fe('0x29')])){_0x1c3b42[_0xf4fe('0x29')]=undefined;loggerPredictive[_0xf4fe('0x7b')](_0x1c3b42[_0xf4fe('0x3c')],_0xf4fe('0x8c'));}if(!_['isUndefined'](_0x1c3b42[_0xf4fe('0x8d')])){clearInterval(_0x1c3b42[_0xf4fe('0x8d')]);_0x1c3b42['handlePredictive']=undefined;loggerPredictive['info'](_0x1c3b42[_0xf4fe('0x3c')],_0xf4fe('0x8e'));}}}function erlangb(_0x225e79,_0x3efa3a){if(_0x3efa3a===0x0){return 0x0;}var _0x5af151=0x1;for(var _0x37c740=0x1;_0x37c740<=_0x3efa3a;_0x37c740+=0x1){_0x5af151=0x1+_0x5af151*_0x37c740/_0x225e79;}return 0x1/_0x5af151;}function isVoiceQueueOutbound(_0x499235){return _0x499235===_0xf4fe('0x4a');}function isNotPreview(_0x3f5deb){return _0x3f5deb!==_0xf4fe('0x8f');}function isCampaignIvr(_0x4b0f3d){return _0x4b0f3d==='ivr';}function getCallerId(_0x54148f,_0x2e625e,_0x39d75a){if(!_[_0xf4fe('0x8a')](_0x39d75a)&&typeof _0x39d75a==='string'&&!_[_0xf4fe('0x43')](_0x39d75a)){if(!_[_0xf4fe('0x8a')](_0x2e625e)&&typeof _0x2e625e===_0xf4fe('0x90')&&!_[_0xf4fe('0x43')](_0x2e625e)){return util[_0xf4fe('0x75')](_0xf4fe('0x91'),_0x2e625e,_0x39d75a);}return util['format'](_0xf4fe('0x91'),_0x39d75a,_0x39d75a);}if(!_[_0xf4fe('0x8a')](_0x54148f)&&typeof _0x54148f==='string'&&!_['isEmpty'](_0x54148f)){return _0x54148f;}return'\x22\x22\x20<>';}function loggerCatchQueueSummary(_0x48b160,_0x247263){return function(_0x46a68d){freeVariablesPredictive(_0x247263);emitVoiceQueueSummary(_0x247263);emitCampaignSummary(_0x247263);loggerSyncQueueSummary[_0xf4fe('0x92')](_0x48b160,util[_0xf4fe('0x93')](_0x46a68d,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x3c1cd0,_0xa6d2cd){return function(_0x4fc967){loggerPredictive[_0xf4fe('0x92')](_0xa6d2cd[_0xf4fe('0x3c')],_0x3c1cd0);loggerPredictive[_0xf4fe('0x92')](_0x4fc967[_0xf4fe('0x94')]);freeVariablesPredictive(_0xa6d2cd);};}function loggerCatch(_0xf36306){return function(_0xed4eb1){logger[_0xf4fe('0x92')](_0xf36306,util['inspect'](_0xed4eb1,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x44f74c){return _0x44f74c&&!_['isUndefined'](_0x44f74c)&&_0x44f74c[_0xf4fe('0x95')]>0x0;}function decremetOriginate(_0x47e65a){if(!_[_0xf4fe('0x8a')](_0x47e65a)&&_0x47e65a!==null){if(typeof _0x47e65a[_0xf4fe('0x96')]!==_0xf4fe('0x97')){if(_0x47e65a[_0xf4fe('0x96')]>0x0){_0x47e65a[_0xf4fe('0x96')]-=0x1;}else{logger['error'](_0xf4fe('0x98'));}}}else{logger[_0xf4fe('0x92')]('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x1f7e34,_0x5a9cbd,_0x4ebe5f){if(_0x5a9cbd>_0x4ebe5f){for(var _0x1779b3=0x0;_0x1779b3<_0x5a9cbd-_0x4ebe5f;_0x1779b3+=0x1){decremetOriginate(_0x1f7e34);}}}function loggerGetContactDialer(_0x4580f8,_0x648b14,_0x25401b){return function(_0x59a174){checkContactLowerLimitOriginate(_0x648b14,_0x25401b,0x0);logger[_0xf4fe('0x92')](_0x4580f8,util[_0xf4fe('0x93')](_0x59a174,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0xf1858e){return function(_0x480988){if(isNotNull(_0x480988)&&isNotNull(_0x480988[0x0])){if(_0x480988[0x0][_0xf4fe('0x99')]>0x0){_0xf1858e[_0xf4fe('0x3b')]=_0xf4fe('0x9a');logger[_0xf4fe('0x7b')](_0xf4fe('0x9b')+_0xf1858e[_0xf4fe('0x3c')],_0x480988[0x0][_0xf4fe('0x99')],_0xf4fe('0x9c'));}else{_0xf1858e[_0xf4fe('0x3b')]=_0xf4fe('0x9d');logger[_0xf4fe('0x7b')]('[getContactDialer2][Empty]'+_0xf1858e[_0xf4fe('0x3c')]);}}};}function notSendMessagesQueue(_0x1ca327){if(_0x1ca327['sendMessageOneNotActive']){freeVariablesPredictive(_0x1ca327);if(_0x1ca327['originated']===0x0&&_0x1ca327[_0xf4fe('0x50')]===0x0&&_0x1ca327[_0xf4fe('0x9e')]===0x0&&(_0x1ca327[_0xf4fe('0x9f')]||0x0)===0x0){_0x1ca327['sendMessageOneNotActive']=![];_0x1ca327[_0xf4fe('0xa0')]=0x0;_0x1ca327['message']=_0xf4fe('0x3e');loggerSyncQueueSummary[_0xf4fe('0x92')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x1ca327[_0xf4fe('0x3c')],'is\x20not\x20active');}else{_0x1ca327['message']=_0xf4fe('0xa1');loggerSyncQueueSummary['error'](_0xf4fe('0xa2'),_0x1ca327['name'],_0xf4fe('0xa3'));}emitVoiceQueueSummary(_0x1ca327);}}function notSendMessagesCampaign(_0x1d8431){if(_0x1d8431[_0xf4fe('0xa4')]){if(_0x1d8431[_0xf4fe('0x96')]===0x0){_0x1d8431[_0xf4fe('0xa4')]=![];_0x1d8431[_0xf4fe('0x3b')]=_0xf4fe('0x3e');loggerSyncQueueSummary[_0xf4fe('0x92')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x1d8431[_0xf4fe('0x3c')],'is\x20not\x20active');}else{_0x1d8431[_0xf4fe('0x3b')]='IS_DISACTIVED';loggerSyncQueueSummary[_0xf4fe('0x92')](_0xf4fe('0xa5'),_0x1d8431[_0xf4fe('0x3c')],_0xf4fe('0xa3'));}emitCampaignSummary(_0x1d8431);}}function createObjHistory(_0x4ac731,_0x11ff8d,_0x21ca88,_0x4f50a1,_0x3e5fcf){_0x4ac731[_0xf4fe('0x3b')]=_0x21ca88;var _0x181e51=new Action(_0x4ac731,_0x11ff8d);var _0x5b423c=new History(_0x181e51);_0x5b423c[_0xf4fe('0xa6')]=_0x4f50a1;_0x5b423c['statedesc']=_0x3e5fcf;_0x5b423c[_0xf4fe('0xa7')]=_0x181e51[_0xf4fe('0xa8')];return _0x5b423c;}Dialer[_0xf4fe('0x1c')][_0xf4fe('0x3a')]=function(){var _0x3a8b8b=this;setInterval(function(){_0x3a8b8b[_0xf4fe('0xa9')](_0x3a8b8b['uniqueId'],_0xf4fe('0xaa'));_0x3a8b8b[_0xf4fe('0xa9')](_0x3a8b8b['actions'],_0xf4fe('0xab'));},0x32c8);};Dialer[_0xf4fe('0x1c')][_0xf4fe('0xa9')]=function(_0x39cc6e,_0x154079){var _0x509c7d=this;for(var _0x3453c3 in _0x39cc6e){if(typeof _0x39cc6e[_0x3453c3]!==_0xf4fe('0x97')){this[_0xf4fe('0xac')][_0xf4fe('0x1d')](function(){if(!_[_0xf4fe('0xad')](_0x39cc6e[_0x3453c3])){return ami[_0xf4fe('0xae')]({'action':_0xf4fe('0xaf'),'channel':_0x39cc6e[_0x3453c3][_0xf4fe('0xb0')]})[_0xf4fe('0xb1')](function(_0x26bbc8){if(_0x26bbc8[_0xf4fe('0x3b')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x39cc6e[_0x3453c3]&&_0x39cc6e[_0x3453c3][_0xf4fe('0x78')]!==_0xf4fe('0x79')){_0x509c7d[_0xf4fe('0xb2')](_0x509c7d[_0xf4fe('0x20')][_0x39cc6e[_0x3453c3][_0xf4fe('0xb3')]]);logger['error']('[Dialer][checkChannel]',_0x154079,_0x3453c3,_0x39cc6e[_0x3453c3]['queue']);delete _0x39cc6e[_0x3453c3];}if(_0x39cc6e[_0x3453c3]&&_0x39cc6e[_0x3453c3][_0xf4fe('0x78')]===_0xf4fe('0x79')){_0x509c7d[_0xf4fe('0xb2')](_0x509c7d[_0xf4fe('0xb4')][_0x39cc6e[_0x3453c3][_0xf4fe('0xb3')]]);logger[_0xf4fe('0x92')]('[Dialer][checkChannel][ivr]',_0x154079,_0x3453c3,_0x39cc6e[_0x3453c3][_0xf4fe('0xb3')]);delete _0x39cc6e[_0x3453c3];}},0x2328);}});}});}}};Dialer['prototype'][_0xf4fe('0xb5')]=function(_0x25893e){return BPromise[_0xf4fe('0xb6')]()[_0xf4fe('0xb7')](cmHopper[_0xf4fe('0xb5')](_0x25893e))[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0xb8')));};Dialer[_0xf4fe('0x1c')][_0xf4fe('0xb9')]=function(_0x9e3b84){return BPromise[_0xf4fe('0xb6')]()[_0xf4fe('0xb7')](cmHopperBlack[_0xf4fe('0xb9')](_0x9e3b84))['catch'](loggerCatch('[checkIsBlackList]\x20'));};Dialer['prototype']['checkIsBlackListIvr']=function(_0x291682){return BPromise['resolve']()[_0xf4fe('0xb7')](cmHopperBlack[_0xf4fe('0xba')](_0x291682))[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0xbb')));};Dialer[_0xf4fe('0x1c')]['averageHandleTime']=function(_0x99ea2b){return BPromise['resolve']()[_0xf4fe('0xb7')](cmHopperHistory[_0xf4fe('0xbc')](_0x99ea2b))[_0xf4fe('0xb1')](loggerCatch('[averageHandleTime]\x20'));};Dialer['prototype'][_0xf4fe('0xbd')]=function(_0x39681d){return BPromise[_0xf4fe('0xb6')]()['then'](cmHopper['rescheduleContact'](_0x39681d))[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0xbe')));};Dialer['prototype'][_0xf4fe('0xbf')]=function(_0x347583,_0x5de4e5,_0x4dcef3){return BPromise[_0xf4fe('0xb6')]()[_0xf4fe('0xb7')](cmHopper[_0xf4fe('0xbf')](_0x347583,_0x5de4e5,_0x4dcef3))['catch'](loggerCatch('[unlockContact]\x20'));};Dialer[_0xf4fe('0x1c')][_0xf4fe('0xc0')]=function(_0x6ebda6,_0x1a2a1b,_0x35cce8,_0x1c07da,_0x44f33f){return BPromise[_0xf4fe('0xb6')]()['then'](cmHopper[_0xf4fe('0xc0')](_0x6ebda6,_0x1a2a1b,_0x35cce8,_0x1c07da))[_0xf4fe('0xb1')](function(_0x8523f2){_0x44f33f[_0xf4fe('0xc1')]-=_0x35cce8;_0x44f33f['temp']=_0x44f33f['temp']>0x0?_0x44f33f['temp']:0x0;loggerCatch(_0xf4fe('0xc2'))(_0x8523f2);});};Dialer[_0xf4fe('0x1c')]['getContactDialerIvr']=function(_0x4d1637,_0x379c03,_0x37f476,_0x4a40cb){return BPromise[_0xf4fe('0xb6')]()[_0xf4fe('0xb7')](cmHopper['getContactDialerIvr'](_0x4d1637,_0x379c03,_0x37f476))[_0xf4fe('0xb1')](function(_0x49f627){_0x4a40cb['temp']-=_0x379c03;_0x4a40cb[_0xf4fe('0xc1')]=_0x4a40cb['temp']>0x0?_0x4a40cb['temp']:0x0;loggerCatch('[getContactDialerIvr]\x20')(_0x49f627);});};Dialer[_0xf4fe('0x1c')][_0xf4fe('0xc3')]=function(_0x36dbfa){return BPromise[_0xf4fe('0xb6')]()['then'](voiceQueueRt[_0xf4fe('0xc3')](_0x36dbfa))[_0xf4fe('0xb1')](loggerCatch('[getVoiceQueueRtPauses]\x20'));};Dialer[_0xf4fe('0x1c')][_0xf4fe('0xc4')]=function(_0x54947c){return BPromise[_0xf4fe('0xb6')]()[_0xf4fe('0xb7')](cmHopper[_0xf4fe('0xc4')](_0x54947c))[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0xc5')));};Dialer[_0xf4fe('0x1c')][_0xf4fe('0xc6')]=function(_0x373c94){return BPromise['resolve']()[_0xf4fe('0xb7')](cmHopperHistory[_0xf4fe('0xc6')](_0x373c94))[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0xc7')));};Dialer[_0xf4fe('0x1c')][_0xf4fe('0xb2')]=function(_0x4dc035){if(!_[_0xf4fe('0x8a')](_0x4dc035)&&_0x4dc035!==null){if(typeof _0x4dc035[_0xf4fe('0x96')]!==_0xf4fe('0x97')){if(_0x4dc035['originated']>0x0){_0x4dc035['originated']-=0x1;}else{logger[_0xf4fe('0x92')](_0xf4fe('0xc8'));}}}else{logger['error'](_0xf4fe('0xc9'));}};Dialer[_0xf4fe('0x1c')]['loggerHandler']=function(_0x460ffb,_0x3a16d9){var _0x3c9b71=this;return function(_0x57fe8d){_0x3c9b71['updateOriginated'](_0x3a16d9);logger[_0xf4fe('0x92')](_0x460ffb,util['inspect'](_0x57fe8d,{'showHidden':![],'depth':null}));};};Dialer[_0xf4fe('0x1c')][_0xf4fe('0xca')]=function(_0x3422c8,_0x4bca0c,_0x44523d){var _0x15ac6a={'state':0x19,'statedesc':'notFound'};this['updateOriginated'](_0x4bca0c);this['saveInDb'](_[_0xf4fe('0xcb')](_0x15ac6a,_[_0xf4fe('0xcc')](_0x44523d,[_0xf4fe('0xcd'),'ListId',_0xf4fe('0xce'),_0xf4fe('0xcf'),_0xf4fe('0xd0')])),_0xf4fe('0xd1'),_0xf4fe('0xd2'));logger[_0xf4fe('0x92')](_0x3422c8);};Dialer['prototype'][_0xf4fe('0xd3')]=function(_0x541daf){return _0x541daf===_0xf4fe('0xd4');};Dialer[_0xf4fe('0x1c')]['isTrunkReachable']=function(_0x6ee6c0){return!_[_0xf4fe('0x8a')](_0x6ee6c0)&&_0x6ee6c0&&!_['isUndefined'](_0x6ee6c0[_0xf4fe('0x3c')])&&!_[_0xf4fe('0x8a')](_0x6ee6c0[_0xf4fe('0xd5')])&&_0x6ee6c0[_0xf4fe('0xd5')]&&(this[_0xf4fe('0x22')][util[_0xf4fe('0x75')](_0xf4fe('0xd6'),_0x6ee6c0[_0xf4fe('0x3c')])]['status']===_0xf4fe('0xd7')||this[_0xf4fe('0x22')][util['format'](_0xf4fe('0xd6'),_0x6ee6c0[_0xf4fe('0x3c')])][_0xf4fe('0xaf')]===_0xf4fe('0xd8'));};Dialer[_0xf4fe('0x1c')][_0xf4fe('0xd9')]=function(_0x16dd29,_0x46c8df,_0x25c0f3){this[_0xf4fe('0xc6')](_0x16dd29)[_0xf4fe('0xb1')](loggerCatch(_0x46c8df));this['moveContactManagedDialer'](_0x16dd29)['catch'](loggerCatch(_0x25c0f3));};Dialer[_0xf4fe('0x1c')][_0xf4fe('0x38')]=function(_0x4e736b){var _0x1f8fe5=this['uniqueId'][_0x4e736b[_0xf4fe('0xda')]];var _0x26e5b1;if(!_[_0xf4fe('0xad')](_0x4e736b)&&!_['isNil'](_0x4e736b['variable'])&&!_[_0xf4fe('0xad')](_0x4e736b[_0xf4fe('0xdb')][_0xf4fe('0xdc')])&&_0x4e736b['exten']===_0xf4fe('0xdd')&&_0x1f8fe5){if(_0x1f8fe5[_0xf4fe('0x78')]!==_0xf4fe('0x79')&&this[_0xf4fe('0x20')][_0x1f8fe5[_0xf4fe('0xb3')]][_0xf4fe('0xde')]&&_0x4e736b[_0xf4fe('0xdf')]===_0xf4fe('0xe0')){delete this['uniqueId'][_0x4e736b[_0xf4fe('0xda')]];this['updateOriginated'](this['voiceQueues'][_0x1f8fe5[_0xf4fe('0xb3')]]);this['voiceQueues'][_0x1f8fe5[_0xf4fe('0xb3')]][_0xf4fe('0xe1')]+=0x1;this[_0xf4fe('0x20')][_0x1f8fe5['queue']][_0xf4fe('0x5a')]+=0x1;_0x26e5b1=new Hangup(_0x1f8fe5,_0x4e736b);_0x26e5b1[_0xf4fe('0xa6')]=0x12;_0x26e5b1[_0xf4fe('0xe2')]=_0xf4fe('0xe3');_0x26e5b1[_0xf4fe('0xe4')]=_0xf4fe('0xe5');ami['emit'](_0xf4fe('0xe6'),ut[_0xf4fe('0xe7')](_0x26e5b1,_0xf4fe('0xe8')));this[_0xf4fe('0xd9')](_0x26e5b1,'[syncHangupInAMD][createHistory]',_0xf4fe('0xe9'));}if(_0x1f8fe5[_0xf4fe('0x78')]!==_0xf4fe('0x79')&&this[_0xf4fe('0x20')][_0x1f8fe5[_0xf4fe('0xb3')]][_0xf4fe('0xde')]&&_0x4e736b['value']===_0xf4fe('0xea')){var _0x1f631d=this;return new BPromise(function(_0x442199,_0xc782fd){delete _0x1f631d[_0xf4fe('0x27')][_0x4e736b['uniqueid']];_0x1f631d[_0xf4fe('0xb2')](_0x1f631d[_0xf4fe('0x20')][_0x1f8fe5[_0xf4fe('0xb3')]]);_0x1f631d[_0xf4fe('0x20')][_0x1f8fe5['queue']][_0xf4fe('0xe1')]+=0x1;_0x1f631d[_0xf4fe('0x20')][_0x1f8fe5['queue']][_0xf4fe('0x5a')]+=0x1;var _0x28738d=_0x1f631d['voiceQueues'][_0x1f8fe5[_0xf4fe('0xb3')]];var _0x507803=new Hangup(_0x1f8fe5,_0x4e736b);_0x507803[_0xf4fe('0xa6')]=0x13;_0x507803[_0xf4fe('0xe2')]=_0xf4fe('0xeb');_0x507803[_0xf4fe('0xe4')]='AMD';_0x507803[_0xf4fe('0xec')]+=0x1;_0x507803[_0xf4fe('0xed')]+=0x1;_0x507803[_0xf4fe('0xe8')]=!![];ami[_0xf4fe('0x49')](_0xf4fe('0xe6'),ut['buildObj'](_0x507803,_0xf4fe('0xe8')));_0x1f631d[_0xf4fe('0xc6')](_0x507803)[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0xee')));if(_0x507803['countbusyretry']+_0x507803[_0xf4fe('0xef')]+_0x507803['countnoanswerretry']+_0x507803[_0xf4fe('0xf0')]+_0x507803[_0xf4fe('0xf1')]+_0x507803[_0xf4fe('0xf2')]+_0x507803[_0xf4fe('0xec')]+_0x507803[_0xf4fe('0xf3')]>=_0x28738d['dialGlobalMaxRetry']){_0x1f631d[_0xf4fe('0xf4')](_0x507803,_0x442199,_0xc782fd,_0xf4fe('0xf5'));}else{if(_0x507803[_0xf4fe('0xec')]>=_0x28738d['dialMachineMaxRetry']){_0x1f631d[_0xf4fe('0xf6')](_0x507803,_0x442199,_0xc782fd,_0xf4fe('0xf7'));}else{_0x1f631d[_0xf4fe('0xbd')]({'active':![],'countmachineretry':_0x507803[_0xf4fe('0xec')],'scheduledat':moment()[_0xf4fe('0xf8')](_0x28738d['dialMachineRetryFrequency'],'minutes')[_0xf4fe('0x75')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x507803[_0xf4fe('0xcd')],'ListId':_0x507803[_0xf4fe('0xf9')],'VoiceQueueId':_0x507803[_0xf4fe('0xcf')]||undefined,'CampaignId':_0x507803['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact][Machine]'));_0x442199({'reschedule':0x1});}}});}if(_0x1f8fe5[_0xf4fe('0x78')]==='ivr'&&this[_0xf4fe('0xb4')][_0x1f8fe5[_0xf4fe('0xb3')]]['dialAMDActive']&&_0x4e736b[_0xf4fe('0xdf')]==='HANGUP'){delete this[_0xf4fe('0x27')][_0x4e736b[_0xf4fe('0xda')]];this[_0xf4fe('0xb2')](this['campaigns'][_0x1f8fe5[_0xf4fe('0xb3')]]);_0x26e5b1=new Hangup(_0x1f8fe5,_0x4e736b);_0x26e5b1[_0xf4fe('0xa6')]=0x12;_0x26e5b1['statedesc']=_0xf4fe('0xe3');_0x26e5b1['membername']=_0xf4fe('0xe5');ami[_0xf4fe('0x49')]('custom:amd',ut['buildObj'](_0x26e5b1,_0xf4fe('0xe8')));this[_0xf4fe('0xd9')](_0x26e5b1,_0xf4fe('0xfa'),_0xf4fe('0xfb'));}if(_0x1f8fe5[_0xf4fe('0x78')]===_0xf4fe('0x79')&&this[_0xf4fe('0xb4')][_0x1f8fe5[_0xf4fe('0xb3')]][_0xf4fe('0xde')]&&_0x4e736b['value']===_0xf4fe('0xea')){var _0x1f631d=this;return new BPromise(function(_0x3f89f2,_0x2a81a9){delete _0x1f631d[_0xf4fe('0x27')][_0x4e736b['uniqueid']];_0x1f631d[_0xf4fe('0xb2')](_0x1f631d[_0xf4fe('0xb4')][_0x1f8fe5[_0xf4fe('0xb3')]]);_0x1f631d[_0xf4fe('0xb4')][_0x1f8fe5['queue']]['outboundAnswerCallsDay']+=0x1;_0x1f631d[_0xf4fe('0xb4')][_0x1f8fe5[_0xf4fe('0xb3')]][_0xf4fe('0x5a')]+=0x1;var _0x8c4c38=_0x1f631d[_0xf4fe('0xb4')][_0x1f8fe5['queue']];var _0x10f67e=new Hangup(_0x1f8fe5,_0x4e736b);_0x10f67e['state']=0x13;_0x10f67e[_0xf4fe('0xe2')]=_0xf4fe('0xeb');_0x10f67e[_0xf4fe('0xe4')]=_0xf4fe('0xe5');_0x10f67e['countmachineretry']+=0x1;_0x10f67e[_0xf4fe('0xed')]+=0x1;_0x10f67e[_0xf4fe('0xe8')]=!![];ami[_0xf4fe('0x49')](_0xf4fe('0xe6'),ut[_0xf4fe('0xe7')](_0x10f67e,_0xf4fe('0xe8')));_0x1f631d[_0xf4fe('0xc6')](_0x10f67e)[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0xee')));if(_0x10f67e['countbusyretry']+_0x10f67e[_0xf4fe('0xef')]+_0x10f67e['countnoanswerretry']+_0x10f67e[_0xf4fe('0xf0')]+_0x10f67e[_0xf4fe('0xf1')]+_0x10f67e['countabandonedretry']+_0x10f67e[_0xf4fe('0xec')]+_0x10f67e[_0xf4fe('0xf3')]>=_0x8c4c38[_0xf4fe('0xfc')]){_0x1f631d['stateGlobal'](_0x10f67e,_0x3f89f2,_0x2a81a9,_0xf4fe('0xf5'));}else{if(_0x10f67e[_0xf4fe('0xec')]>=_0x8c4c38[_0xf4fe('0xfd')]){_0x1f631d['createStateFinal'](_0x10f67e,_0x3f89f2,_0x2a81a9,_0xf4fe('0xf7'));}else{_0x1f631d[_0xf4fe('0xbd')]({'active':![],'countmachineretry':_0x10f67e['countmachineretry'],'scheduledat':moment()[_0xf4fe('0xf8')](_0x8c4c38[_0xf4fe('0xfe')],_0xf4fe('0xff'))[_0xf4fe('0x75')](_0xf4fe('0x100')),'ContactId':_0x10f67e[_0xf4fe('0xcd')],'ListId':_0x10f67e[_0xf4fe('0xf9')],'VoiceQueueId':_0x10f67e['VoiceQueueId']||undefined,'CampaignId':_0x10f67e[_0xf4fe('0xd0')]||undefined})[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x101')));_0x3f89f2({'reschedule':0x1});}}});}}};Dialer[_0xf4fe('0x1c')]['syncHangup']=function(_0x257b7d){var _0xd1541d=this['uniqueId'][_0x257b7d[_0xf4fe('0xda')]];var _0x2ea2f6=this;var _0xe3c778;if(_0xd1541d&&_0xd1541d[_0xf4fe('0x78')]==='ivr'){delete this[_0xf4fe('0x27')][_0x257b7d[_0xf4fe('0xda')]];this[_0xf4fe('0xb2')](this['campaigns'][_0xd1541d[_0xf4fe('0xb3')]]);this['campaigns'][_0xd1541d[_0xf4fe('0xb3')]][_0xf4fe('0x102')]+=0x1;_0xe3c778=new Hangup(_0xd1541d,_0x257b7d);this[_0xf4fe('0xc6')](_0xe3c778)[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x103')));this['moveContactManagedDialer'](_0xe3c778)[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x104')));}if(_0xd1541d&&_0xd1541d[_0xf4fe('0x78')]!==_0xf4fe('0x79')&&isNotNull(this['voiceQueues'][_0xd1541d[_0xf4fe('0xb3')]][_0xf4fe('0x105')])){delete this['uniqueId'][_0x257b7d[_0xf4fe('0xda')]];this['updateOriginated'](this['voiceQueues'][_0xd1541d['queue']]);this[_0xf4fe('0x20')][_0xd1541d['queue']][_0xf4fe('0xe1')]+=0x1;this[_0xf4fe('0x20')][_0xd1541d['queue']][_0xf4fe('0x5a')]+=0x1;_0xe3c778=new Hangup(_0xd1541d,_0x257b7d);_0xe3c778['state']=0x10;_0xe3c778[_0xf4fe('0xe2')]=_0xf4fe('0x106');_0xe3c778['membername']=_0xf4fe('0x107');this[_0xf4fe('0xc6')](_0xe3c778)['catch'](loggerCatch(_0xf4fe('0x103')));this[_0xf4fe('0xc4')](_0xe3c778)[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x104')));}if(_0xd1541d&&_0xd1541d[_0xf4fe('0x78')]!==_0xf4fe('0x79')&&!isNotNull(this['voiceQueues'][_0xd1541d[_0xf4fe('0xb3')]][_0xf4fe('0x105')])){delete this[_0xf4fe('0x27')][_0x257b7d['uniqueid']];this[_0xf4fe('0xb2')](this['voiceQueues'][_0xd1541d[_0xf4fe('0xb3')]]);this['voiceQueues'][_0xd1541d[_0xf4fe('0xb3')]][_0xf4fe('0x64')]+=0x1;_0xe3c778=new Hangup(_0xd1541d,_0x257b7d);_0xe3c778['state']=0xc;_0xe3c778[_0xf4fe('0xe2')]=_0x257b7d[_0xf4fe('0x108')];_0xe3c778[_0xf4fe('0xe4')]=_0xf4fe('0x109');this[_0xf4fe('0xc6')](_0xe3c778)['catch'](loggerCatch(_0xf4fe('0x103')));this[_0xf4fe('0xc4')](_0xe3c778)['catch'](loggerCatch('[syncHangupIvr]'));}};Dialer[_0xf4fe('0x1c')][_0xf4fe('0x32')]=function(_0x312176){var _0x196ae3=this[_0xf4fe('0x27')][_0x312176['uniqueid']];var _0x53d8a8=this;if(this[_0xf4fe('0x20')][_0x312176[_0xf4fe('0xb3')]]){if(_0x196ae3&&_0x196ae3['type']!==_0xf4fe('0x79')){delete this['uniqueId'][_0x312176[_0xf4fe('0xda')]];this[_0xf4fe('0x20')][_0x312176[_0xf4fe('0xb3')]][_0xf4fe('0xe1')]+=0x1;var _0x17a479=new AgentComplete(_0x196ae3,_0x312176);if(_0x312176[_0xf4fe('0x10a')]===_0xf4fe('0x10b')){_0x17a479[_0xf4fe('0x10c')]=this['voiceQueues'][_0x312176[_0xf4fe('0xb3')]][_0xf4fe('0x10d')]&&this[_0xf4fe('0x20')][_0x312176[_0xf4fe('0xb3')]][_0xf4fe('0x10e')]?moment()[_0xf4fe('0x75')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;}this[_0xf4fe('0xc6')](_0x17a479)[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x10f')));this[_0xf4fe('0xc4')](_0x17a479)['catch'](loggerCatch(_0xf4fe('0x110')));}}};Dialer[_0xf4fe('0x1c')][_0xf4fe('0x111')]=function(_0x513ae9){if(this[_0xf4fe('0x20')][_0x513ae9[_0xf4fe('0xb3')]]){if(this[_0xf4fe('0x27')][_0x513ae9['uniqueid']]&&this['uniqueId'][_0x513ae9[_0xf4fe('0xda')]]['type']!=='ivr'){this[_0xf4fe('0xb2')](this[_0xf4fe('0x20')][_0x513ae9[_0xf4fe('0xb3')]]);this['uniqueId'][_0x513ae9[_0xf4fe('0xda')]][_0xf4fe('0x112')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0xf4fe('0x1c')][_0xf4fe('0x113')]=function(_0x4e1d4b){this[_0xf4fe('0xc6')](_0x4e1d4b)['catch'](loggerCatch('[syncAgentComplete][createHistory]'));this[_0xf4fe('0xc4')](_0x4e1d4b)['catch'](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));};Dialer[_0xf4fe('0x1c')][_0xf4fe('0x114')]=function(_0x5a7f15){var _0x40a227=this[_0xf4fe('0x27')][_0x5a7f15[_0xf4fe('0xda')]];var _0x432d74=this;if(this[_0xf4fe('0x20')][_0x5a7f15[_0xf4fe('0xb3')]]){if(_0x40a227&&_0x40a227[_0xf4fe('0x78')]!==_0xf4fe('0x79')){delete this[_0xf4fe('0x27')][_0x5a7f15[_0xf4fe('0xda')]];this[_0xf4fe('0xb2')](this[_0xf4fe('0x20')][_0x5a7f15[_0xf4fe('0xb3')]]);_0x40a227[_0xf4fe('0x115')]=moment()[_0xf4fe('0x75')]('YYYY-MM-DD\x20HH:mm:ss');var _0x229052=new QueueCallerAbandon(_0x40a227,_0x5a7f15);if(getSeconds(_0x40a227['droptime'],_0x40a227[_0xf4fe('0x116')])>=_0x40a227[_0xf4fe('0x117')]){this['voiceQueues'][_0x5a7f15['queue']][_0xf4fe('0x69')]+=0x1;this[_0xf4fe('0x20')][_0x5a7f15['queue']][_0xf4fe('0x5f')]+=0x1;this[_0xf4fe('0x20')][_0x5a7f15[_0xf4fe('0xb3')]][_0xf4fe('0x6b')]+=0x1;_0x229052[_0xf4fe('0xa6')]=0xa;_0x229052[_0xf4fe('0xe2')]=_0xf4fe('0x118');_0x229052[_0xf4fe('0x119')]=_0xf4fe('0x11a');_0x229052['agiafterat']=this[_0xf4fe('0x20')][_0x5a7f15['queue']]['dialQueueProject2']?moment()[_0xf4fe('0x75')](_0xf4fe('0x100')):undefined;_0x229052[_0xf4fe('0xf1')]+=0x1;_0x229052['countglobal']+=0x1;if(_0x229052[_0xf4fe('0xf1')]>=this['voiceQueues'][_0x5a7f15['queue']][_0xf4fe('0x11b')]){this[_0xf4fe('0x113')](_0x229052);}else{this['rescheduleContact']({'active':![],'countdropretry':_0x229052['countdropretry'],'scheduledat':moment()[_0xf4fe('0xf8')](this['voiceQueues'][_0x5a7f15[_0xf4fe('0xb3')]]['dialDropRetryFrequency'],_0xf4fe('0xff'))[_0xf4fe('0x75')](_0xf4fe('0x100')),'ContactId':_0x40a227['ContactId'],'ListId':_0x40a227[_0xf4fe('0xf9')],'VoiceQueueId':_0x40a227[_0xf4fe('0xcf')]||undefined,'CampaignId':_0x40a227[_0xf4fe('0xd0')]||undefined})[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x11c')));var _0x3c5707=new History(_0x229052);_0x3c5707[_0xf4fe('0xa6')]=0xa;_0x3c5707[_0xf4fe('0xe2')]=_0xf4fe('0x118');_0x3c5707[_0xf4fe('0xa8')]=moment()['format'](_0xf4fe('0x100'));_0x3c5707['endtime']=_0x3c5707[_0xf4fe('0xa8')];_0x3c5707[_0xf4fe('0x11d')]=_0x229052[_0xf4fe('0x11d')];_0x3c5707[_0xf4fe('0x11e')]=_0x229052['calleridnum'];this[_0xf4fe('0xc6')](_0x3c5707)[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x11f')));}}else{this[_0xf4fe('0x20')][_0x5a7f15[_0xf4fe('0xb3')]][_0xf4fe('0x68')]+=0x1;this[_0xf4fe('0x20')][_0x5a7f15[_0xf4fe('0xb3')]]['outboundDropCallsDayCallersExit']+=0x1;_0x229052[_0xf4fe('0xa6')]=0xb;_0x229052[_0xf4fe('0xe2')]='Abandoned';_0x229052[_0xf4fe('0x119')]=_0xf4fe('0x120');_0x229052[_0xf4fe('0xf2')]+=0x1;_0x229052[_0xf4fe('0xed')]+=0x1;if(_0x229052[_0xf4fe('0xf2')]>=this[_0xf4fe('0x20')][_0x5a7f15[_0xf4fe('0xb3')]][_0xf4fe('0x121')]){this[_0xf4fe('0x113')](_0x229052);}else{this[_0xf4fe('0xbd')]({'active':![],'countabandonedretry':_0x229052[_0xf4fe('0xf2')],'scheduledat':moment()[_0xf4fe('0xf8')](this[_0xf4fe('0x20')][_0x5a7f15['queue']][_0xf4fe('0x122')],_0xf4fe('0xff'))[_0xf4fe('0x75')](_0xf4fe('0x100')),'ContactId':_0x40a227[_0xf4fe('0xcd')],'ListId':_0x40a227[_0xf4fe('0xf9')],'VoiceQueueId':_0x40a227[_0xf4fe('0xcf')]||undefined,'CampaignId':_0x40a227[_0xf4fe('0xd0')]||undefined})[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x123')));var _0x3c5707=new History(_0x229052);_0x3c5707[_0xf4fe('0xa6')]=0xb;_0x3c5707[_0xf4fe('0xe2')]=_0xf4fe('0x124');_0x3c5707[_0xf4fe('0xa8')]=moment()['format'](_0xf4fe('0x100'));_0x3c5707[_0xf4fe('0xa7')]=_0x3c5707[_0xf4fe('0xa8')];_0x3c5707[_0xf4fe('0x11d')]=_0x229052[_0xf4fe('0x11d')];_0x3c5707['calleridnum']=_0x229052[_0xf4fe('0x11e')];this[_0xf4fe('0xc6')](_0x3c5707)[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x125')));}}}}};Dialer[_0xf4fe('0x1c')][_0xf4fe('0x36')]=function(_0x454f3d){if(this['actions'][_0x454f3d[_0xf4fe('0xda')]]){this[_0xf4fe('0x25')][_0x454f3d[_0xf4fe('0xda')]][_0xf4fe('0xb0')]=_0x454f3d[_0xf4fe('0xb0')];}if(this[_0xf4fe('0x27')][_0x454f3d[_0xf4fe('0xda')]]){this[_0xf4fe('0x27')][_0x454f3d[_0xf4fe('0xda')]][_0xf4fe('0xb0')]=_0x454f3d[_0xf4fe('0xb0')];}};Dialer[_0xf4fe('0x1c')][_0xf4fe('0x126')]=function(_0x28a948){if(strategy[this['voiceQueues'][this[_0xf4fe('0x25')][_0x28a948[_0xf4fe('0x127')]][_0xf4fe('0xb3')]][_0xf4fe('0x4b')]]===_0xf4fe('0x1b')){if(this['actions'][_0x28a948['actionid']]&&_['isNil'](this['actions'][_0x28a948[_0xf4fe('0x127')]][_0xf4fe('0x128')])&&_0x28a948[_0xf4fe('0xaf')]==='1'&&_0x28a948['paused']==='0'){if(this['agents'][_0x28a948[_0xf4fe('0x129')]]){if(!this[_0xf4fe('0x21')][_0x28a948[_0xf4fe('0x129')]]['locked']){this[_0xf4fe('0x21')][_0x28a948[_0xf4fe('0x129')]][_0xf4fe('0x128')]=!![];this[_0xf4fe('0x25')][_0x28a948['actionid']][_0xf4fe('0x128')]=!![];this['actions'][_0x28a948[_0xf4fe('0x127')]][_0xf4fe('0x129')]=_0x28a948[_0xf4fe('0x129')];}}}}else if((strategy[this[_0xf4fe('0x20')][this[_0xf4fe('0x25')][_0x28a948[_0xf4fe('0x127')]][_0xf4fe('0xb3')]][_0xf4fe('0x4b')]]||_0xf4fe('0x12a'))===_0xf4fe('0x12a')){if(this[_0xf4fe('0x25')][_0x28a948[_0xf4fe('0x127')]]){if(this[_0xf4fe('0x21')][_0x28a948[_0xf4fe('0x129')]]){this['actions'][_0x28a948[_0xf4fe('0x127')]]['stateinterface']=_0x28a948['stateinterface'];if(_['isNil'](this[_0xf4fe('0x12b')][this['actions'][_0x28a948[_0xf4fe('0x127')]][_0xf4fe('0xb3')]])){this[_0xf4fe('0x12b')][this[_0xf4fe('0x25')][_0x28a948['actionid']][_0xf4fe('0xb3')]]=[];}this['queueBooked'][this[_0xf4fe('0x25')][_0x28a948[_0xf4fe('0x127')]]['queue']][_0xf4fe('0x12c')](_[_0xf4fe('0xcb')](_[_0xf4fe('0xcc')](this[_0xf4fe('0x25')][_0x28a948[_0xf4fe('0x127')]],['idHopper',_0xf4fe('0x129')]),{'status':_0x28a948['status'],'paused':_0x28a948[_0xf4fe('0x12d')]}));}}}};function unlockQueueStatus(_0x2662b7,_0x513545){setTimeout(function(){if(_[_0xf4fe('0x8a')](_0x2662b7[_0xf4fe('0x12e')])){loggerBooked[_0xf4fe('0x92')]('[unlockQueueStatus][undefined]',_0x513545);}_0x2662b7[_0xf4fe('0x12e')]=!![];loggerBooked['info']('[booked][unlockQueueStatus]',_0x513545,JSON[_0xf4fe('0x74')](_[_0xf4fe('0xcc')](_0x2662b7,[_0xf4fe('0x3c'),_0xf4fe('0x12e')])));},0x1f3);}Dialer['prototype'][_0xf4fe('0x12f')]=function(_0x45e4f2){var _0x551f7e=this;var _0x30d3f9=_0x551f7e['voiceQueues'][_0x551f7e[_0xf4fe('0x25')][_0x45e4f2['actionid']][_0xf4fe('0xb3')]];if(strategy[this[_0xf4fe('0x20')][this[_0xf4fe('0x25')][_0x45e4f2['actionid']]['queue']][_0xf4fe('0x4b')]]===_0xf4fe('0x1b')){if(this['actions'][_0x45e4f2[_0xf4fe('0x127')]]&&this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]]['stateinterface']){this['preview'][_0xf4fe('0x130')](this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0x131')],this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0x129')])[_0xf4fe('0xb1')](function(_0x45c6d2){logger[_0xf4fe('0x92')](_0xf4fe('0x132'),util['inspect'](_0x45c6d2,{'showHidden':![],'depth':null}));})[_0xf4fe('0x1f')](function(){_0x551f7e[_0xf4fe('0xb2')](_0x551f7e[_0xf4fe('0x20')][_0x551f7e[_0xf4fe('0x25')][_0x45e4f2['actionid']][_0xf4fe('0xb3')]]);_0x551f7e[_0xf4fe('0x21')][_0x551f7e[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]]['stateinterface']]['locked']=![];delete _0x551f7e['actions'][_0x45e4f2[_0xf4fe('0x127')]];unlockQueueStatus(_0x30d3f9);});}else{this[_0xf4fe('0xb2')](this['voiceQueues'][this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]]['queue']]);this[_0xf4fe('0xbd')]({'active':![],'ContactId':this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xcd')],'ListId':this['actions'][_0x45e4f2[_0xf4fe('0x127')]]['ListId'],'VoiceQueueId':this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xcf')]||undefined,'CampaignId':this[_0xf4fe('0x25')][_0x45e4f2['actionid']][_0xf4fe('0xd0')]||undefined})[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x133')));delete this['actions'][_0x45e4f2['actionid']];unlockQueueStatus(_0x30d3f9);}}else if((strategy[this[_0xf4fe('0x20')][this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xb3')]][_0xf4fe('0x4b')]]||_0xf4fe('0x12a'))===_0xf4fe('0x12a')){var _0xfb9b19;if(this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]]&&!_[_0xf4fe('0x43')](this['queueBooked'][this[_0xf4fe('0x25')][_0x45e4f2['actionid']]['queue']])){if(this[_0xf4fe('0x2c')][_0x551f7e[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]]['queue']]){this['queueBookedRR'][_0x551f7e[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xb3')]]=this['queueBookedRR'][this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xb3')]]?this[_0xf4fe('0x2c')][this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]]['queue']]:this['queueBooked'][this['actions'][_0x45e4f2['actionid']]['queue']]?this[_0xf4fe('0x12b')][this['actions'][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xb3')]][_0xf4fe('0x134')]||0x0:0x0;}this[_0xf4fe('0x12b')][this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xb3')]][_0xf4fe('0x134')]=this[_0xf4fe('0x2c')][this[_0xf4fe('0x25')][_0x45e4f2['actionid']][_0xf4fe('0xb3')]];for(var _0x10fb8c=0x0;_0x10fb8c<this[_0xf4fe('0x12b')][this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xb3')]][_0xf4fe('0x95')];_0x10fb8c+=0x1){_0xfb9b19=rr(this[_0xf4fe('0x12b')][this[_0xf4fe('0x25')][_0x45e4f2['actionid']]['queue']]);this['queueBookedRR'][_0x551f7e[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xb3')]]=this[_0xf4fe('0x12b')][this[_0xf4fe('0x25')][_0x45e4f2['actionid']][_0xf4fe('0xb3')]][_0xf4fe('0x134')];if(_0xfb9b19[_0xf4fe('0xaf')]==='1'&&_0xfb9b19[_0xf4fe('0x12d')]==='0'){break;}}if(!_[_0xf4fe('0xad')](_0xfb9b19)){this['agents'][_0xfb9b19[_0xf4fe('0x129')]][_0xf4fe('0x135')]=_[_0xf4fe('0x8a')](this['agents'][_0xfb9b19['stateinterface']][_0xf4fe('0x135')])?!![]:this[_0xf4fe('0x21')][_0xfb9b19[_0xf4fe('0x129')]][_0xf4fe('0x135')];}loggerBooked[_0xf4fe('0x7b')](_0xf4fe('0x136'),_0x45e4f2['actionid'],_0xf4fe('0x137'),JSON['stringify'](_['pick'](this[_0xf4fe('0x21')][_0xfb9b19['stateinterface']],['name','unlockRR'])),_0xf4fe('0x138'),JSON[_0xf4fe('0x74')](_0xfb9b19[_0xf4fe('0x131')]));if(!_[_0xf4fe('0xad')](_0xfb9b19)&&_0xfb9b19[_0xf4fe('0xaf')]==='1'&&_0xfb9b19[_0xf4fe('0x12d')]==='0'&&this['agents'][_0xfb9b19[_0xf4fe('0x129')]]['unlockRR']){this[_0xf4fe('0x21')][_0xfb9b19[_0xf4fe('0x129')]][_0xf4fe('0x135')]=![];this[_0xf4fe('0x12b')][_0x551f7e[_0xf4fe('0x25')][_0x45e4f2['actionid']][_0xf4fe('0xb3')]]=[];this[_0xf4fe('0x8f')][_0xf4fe('0x130')](_0xfb9b19['idHopper'],_0xfb9b19[_0xf4fe('0x129')])[_0xf4fe('0xb1')](function(_0x575eb7){logger[_0xf4fe('0x92')](_0xf4fe('0x132'),util['inspect'](_0x575eb7,{'showHidden':![],'depth':null}));})['finally'](function(){_0x551f7e['updateOriginated'](_0x551f7e[_0xf4fe('0x20')][_0x551f7e['actions'][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xb3')]]);setTimeout(function(){_0x551f7e[_0xf4fe('0x21')][_0xfb9b19['stateinterface']]['unlockRR']=!![];loggerBooked['info'](_0xf4fe('0x139'),_0x45e4f2[_0xf4fe('0x127')],'Agent:\x20',JSON['stringify'](_[_0xf4fe('0xcc')](_0x551f7e['agents'][_0xfb9b19[_0xf4fe('0x129')]],[_0xf4fe('0x3c'),_0xf4fe('0x135')])),_0xf4fe('0x138'),JSON[_0xf4fe('0x74')](_0xfb9b19[_0xf4fe('0x131')]));},0xc7);delete _0x551f7e[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]];unlockQueueStatus(_0x30d3f9,_0x45e4f2[_0xf4fe('0x127')]);});}else{loggerBooked['info']('[booked][unlock]');this[_0xf4fe('0xb2')](this['voiceQueues'][this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xb3')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xcd')],'ListId':this['actions'][_0x45e4f2[_0xf4fe('0x127')]]['ListId'],'VoiceQueueId':this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xd0')]||undefined})[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x133')));delete this['actions'][_0x45e4f2[_0xf4fe('0x127')]];unlockQueueStatus(_0x30d3f9);}}else{loggerBooked['info'](_0xf4fe('0x13a'));this[_0xf4fe('0xb2')](this['voiceQueues'][this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xb3')]]);this[_0xf4fe('0xbd')]({'active':![],'ContactId':this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xcd')],'ListId':this['actions'][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xf9')],'VoiceQueueId':this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xcf')]||undefined,'CampaignId':this['actions'][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xd0')]||undefined})[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x13b')));delete this['actions'][_0x45e4f2[_0xf4fe('0x127')]];unlockQueueStatus(_0x30d3f9);}}else{loggerBooked[_0xf4fe('0x7b')](_0xf4fe('0x13c'));this[_0xf4fe('0xb2')](this[_0xf4fe('0x20')][this[_0xf4fe('0x25')][_0x45e4f2['actionid']][_0xf4fe('0xb3')]]);this['rescheduleContact']({'active':![],'ContactId':this['actions'][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xcd')],'ListId':this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]]['ListId'],'VoiceQueueId':this['actions'][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xcf')]||undefined,'CampaignId':this[_0xf4fe('0x25')][_0x45e4f2[_0xf4fe('0x127')]][_0xf4fe('0xd0')]||undefined})['catch'](loggerCatch(_0xf4fe('0x13d')));delete this['actions'][_0x45e4f2['actionid']];unlockQueueStatus(_0x30d3f9);}};Dialer[_0xf4fe('0x1c')]['loopCampaigns']=function(){var _0x28c1a8=this;setInterval(function(){_0x28c1a8[_0xf4fe('0x13e')]();},0x3e8);};Dialer[_0xf4fe('0x1c')][_0xf4fe('0x13f')]=function(_0x129abf){var _0x1f3419=this;return function(){if(!_0x1f3419[_0xf4fe('0x140')](_0x129abf['Trunk'])){if(!_0x1f3419[_0xf4fe('0x140')](_0x129abf['TrunkBackup'])){_0x129abf[_0xf4fe('0x3b')]=_0xf4fe('0x141');throw _0x129abf[_0xf4fe('0x3c')]+_0xf4fe('0x142');}}};};Dialer[_0xf4fe('0x1c')]['checkIfTime']=function(_0x2ba605,_0x22cafa,_0x685588,_0x3c732d){var _0x1332ee=this;return function(){var _0x4dd46a=!![];return _0x1332ee[_0xf4fe('0x143')](_0x2ba605,_0x22cafa,_0x685588,_0x3c732d,_0x4dd46a);};};Dialer[_0xf4fe('0x1c')][_0xf4fe('0x144')]=function(_0x3422f3,_0x32c03e,_0xb38921,_0x6aa748){var _0x1fad3b=this;return function(){var _0x402135=![];return _0x1fad3b['ifTime'](_0x3422f3[_0xf4fe('0x44')],_0x32c03e,_0xb38921,_0x6aa748,_0x402135);};};Dialer[_0xf4fe('0x1c')]['ifTime']=function(_0x5c4e88,_0x49b110,_0x43e9b1,_0x1b12cc,_0x200f27){var _0xe3f43c=[];return new BPromise(function(_0x4d3b95,_0x401baa){if(!isNotNull(_0x5c4e88)){_0x1b12cc[_0xf4fe('0x3b')]=_0xf4fe('0x41');return _0x401baa(msgResponse(_0xf4fe('0x143'),_0xf4fe('0x145'),_0x43e9b1+_0xf4fe('0x146')));}if(_[_0xf4fe('0x43')](_0x5c4e88)){_0x1b12cc['message']=_0xf4fe('0x147');return _0x401baa(msgResponse(_0xf4fe('0x143'),_0xf4fe('0x145'),_0x43e9b1+_0xf4fe('0x148')));}if(_0x49b110&&_[_0xf4fe('0x8a')](config[_0xf4fe('0x149')][_0x49b110])){_0x1b12cc['message']=_0xf4fe('0x14a');return _0x401baa(msgResponse(_0xf4fe('0x143'),_0xf4fe('0x145'),_0x43e9b1+_0xf4fe('0x14b')+_0x49b110));}if(_['isArray'](_0x5c4e88)){for(var _0xf678f8=0x0;_0xf678f8<_0x5c4e88[_0xf4fe('0x95')];_0xf678f8+=0x1){_0xe3f43c[_0xf4fe('0x12c')](ami[_0xf4fe('0xae')]({'action':'command','command':util[_0xf4fe('0x75')](_0xf4fe('0x14c'),_0x5c4e88[_0xf678f8][_0xf4fe('0x14d')],!_[_0xf4fe('0x8a')](config[_0xf4fe('0x149')][_0x49b110])?_0x49b110:'')})[_0xf4fe('0xb7')](function(_0x1b0582){return _0x1b0582[_0xf4fe('0x14e')][_0xf4fe('0x14f')]('true')>=0x0;})[_0xf4fe('0xb1')](myreject(_0x401baa)));}}else{_0xe3f43c['push'](ami[_0xf4fe('0xae')]({'action':_0xf4fe('0x150'),'command':util[_0xf4fe('0x75')]('iftime\x20%s,%s',_0x5c4e88,!_[_0xf4fe('0x8a')](config['timezones'][_0x49b110])?_0x49b110:'')})[_0xf4fe('0xb7')](function(_0x2aa037){return _0x2aa037[_0xf4fe('0x14e')][_0xf4fe('0x14f')](_0xf4fe('0x151'))>=0x0;})[_0xf4fe('0xb1')](myreject(_0x401baa)));}BPromise[_0xf4fe('0x152')](_0xe3f43c)[_0xf4fe('0xb7')](function(_0x3933a4){var _0xfac5b8=_[_0xf4fe('0x153')](_0x3933a4);if(_0xfac5b8){return _0x4d3b95(_0xfac5b8);}else{_0x1b12cc[_0xf4fe('0x3b')]=_0x200f27?_0xf4fe('0x154'):_0xf4fe('0x155');return _0x401baa(msgResponse(_0xf4fe('0x156'),_0xf4fe('0x145'),_0xf4fe('0x157')+_0x200f27+'\x20'+_0x43e9b1+_0xf4fe('0x158')+util[_0xf4fe('0x93')](_0x5c4e88,{'showHidden':![],'depth':null})+_0xf4fe('0x159')+_0x49b110));}})[_0xf4fe('0xb1')](function(_0x2c1ef7){return _0x401baa(msgResponse(_0xf4fe('0x143'),_0xf4fe('0x145'),JSON[_0xf4fe('0x74')](_0x2c1ef7)));});});};Dialer['prototype'][_0xf4fe('0x15a')]=function(_0x1e0cd7){var _0x4dc133=this;return function(){switch(_0x1e0cd7[_0xf4fe('0x56')]){case _0xf4fe('0x15b'):freeVariablesPredictive(_0x1e0cd7);_0x4dc133[_0xf4fe('0x15c')](_0x1e0cd7,0x1);break;case _0xf4fe('0x15d'):freeVariablesPredictive(_0x1e0cd7);_0x4dc133['handlePower'](_0x1e0cd7,_0x1e0cd7[_0xf4fe('0x15e')]);break;case _0xf4fe('0xa'):_0x4dc133[_0xf4fe('0xa')](_0x1e0cd7);break;case _0xf4fe('0x9'):freeVariablesPredictive(_0x1e0cd7);_0x4dc133['handlePower'](_0x1e0cd7,0x1);break;default:freeVariablesPredictive(_0x1e0cd7);logger['error'](_0xf4fe('0x15f'),_0x1e0cd7[_0xf4fe('0x3c')],_0xf4fe('0x160'));}};};Dialer[_0xf4fe('0x1c')][_0xf4fe('0x161')]=function(_0x26d3d8){var _0x3300be=this;return function(){_0x3300be[_0xf4fe('0x162')](_0x26d3d8);};};Dialer[_0xf4fe('0x1c')][_0xf4fe('0xb')]=function(_0x3def7b){var _0x3661aa=this;if(isNotPreview(_0x3def7b[_0xf4fe('0x56')])){if(isVoiceQueueOutbound(_0x3def7b[_0xf4fe('0x78')])&&isActive(_0x3def7b[_0xf4fe('0x55')])){_0x3def7b['sendMessageOneNotActive']=!![];BPromise['resolve']()[_0xf4fe('0xb7')](checkIsLoggedIn(_0x3def7b,_0x3def7b['loggedIn']))['then'](checkIsActive(_0x3def7b,_0x3def7b[_0xf4fe('0x55')]))[_0xf4fe('0xb7')](checkInterval(_0x3def7b))[_0xf4fe('0xb7')](_0x3661aa[_0xf4fe('0x13f')](_0x3def7b))[_0xf4fe('0xb7')](_0x3661aa[_0xf4fe('0x163')](_0x3def7b[_0xf4fe('0x164')],_0x3def7b[_0xf4fe('0x165')],_0x3def7b[_0xf4fe('0x3c')],_0x3def7b))[_0xf4fe('0xb7')](_0x3661aa[_0xf4fe('0x144')](_0x3def7b[_0xf4fe('0x40')],_0x3def7b[_0xf4fe('0x165')],_0x3def7b[_0xf4fe('0x3c')],_0x3def7b))[_0xf4fe('0xb7')](_0x3661aa[_0xf4fe('0x15a')](_0x3def7b))[_0xf4fe('0xb1')](loggerCatchQueueSummary('[syncQueueSummary]',_0x3def7b));}else{notSendMessagesQueue(_0x3def7b);}}else{freeVariablesPredictive(_0x3def7b);}};Dialer[_0xf4fe('0x1c')][_0xf4fe('0x13e')]=function(){var _0x4dd962=this;var _0x1517bb;for(var _0x4af9a8 in this[_0xf4fe('0xb4')]){if(typeof this[_0xf4fe('0xb4')][_0x4af9a8]!==_0xf4fe('0x97')){_0x1517bb=this[_0xf4fe('0xb4')][_0x4af9a8];if(isCampaignIvr(_0x1517bb[_0xf4fe('0x78')])&&isActive(_0x1517bb['active'])){_0x1517bb['sendMessageOneNotActive']=!![];BPromise[_0xf4fe('0xb6')]()[_0xf4fe('0xb7')](checkIsActive(_0x1517bb,_0x1517bb['active']))['then'](checkInterval(_0x1517bb))[_0xf4fe('0xb7')](_0x4dd962[_0xf4fe('0x13f')](_0x1517bb))[_0xf4fe('0xb7')](_0x4dd962[_0xf4fe('0x163')](_0x1517bb[_0xf4fe('0x164')],_0x1517bb['dialTimezone'],_0x1517bb[_0xf4fe('0x3c')],_0x1517bb))[_0xf4fe('0xb7')](_0x4dd962[_0xf4fe('0x144')](_0x1517bb['Interval'],_0x1517bb['dialTimezone'],_0x1517bb['name'],_0x1517bb))[_0xf4fe('0xb7')](_0x4dd962[_0xf4fe('0x161')](_0x1517bb))[_0xf4fe('0xb1')](loggerCatchQueueSummary('[syncCampaigns]',_0x1517bb));}else{notSendMessagesCampaign(_0x1517bb);}}}};function getCallerIdRandom(_0x3ddf53,_0x390dd2){var _0x4c4c23;var _0x3b700b;var _0x17ee17;if(_0x390dd2<=0x0){_0x390dd2=0x1;}_0x4c4c23=new RegExp(_0xf4fe('0x166')+_0x390dd2+'}$');_0x3b700b=Math[_0xf4fe('0x167')](0xa,_0x390dd2-0x1);_0x17ee17=Math[_0xf4fe('0x167')](0xa,_0x390dd2)-0x1;return util[_0xf4fe('0x75')]('%s',_[_0xf4fe('0x168')](_0x3ddf53,_0x4c4c23,_['random'](_0x3b700b,_0x17ee17)));}function extractCalleridName(_0x3bd158){var _0x1ca05c=_0x3bd158[_0xf4fe('0x169')](/"(.*?)"/);return _0x1ca05c?_0x1ca05c[0x1]:_0x3bd158;}function extractCalleridNumber(_0x3395dc){var _0x5c8d2d=_0x3395dc[_0xf4fe('0x169')](/<(.*?)>/);return _0x5c8d2d?_0x5c8d2d[0x1]:_0x3395dc;}Dialer[_0xf4fe('0x1c')][_0xf4fe('0x16a')]=function(_0x2bdeb8,_0x15845f){var _0x2562a5=this;var _0x8b727=uuid['v4']();this['actions'][_0x8b727]=new Action(_0x2bdeb8,_0x15845f,_0x8b727);return new BPromise(function(_0x464ba2,_0x1badde){if(_[_0xf4fe('0x8a')](_0x2bdeb8)&&typeof _0x2bdeb8!=='object'){return _0x1badde(msgResponse(_0xf4fe('0x16b'),'Failure','voiceQueue\x20is\x20undefine'));}if(_[_0xf4fe('0x8a')](_0x15845f[_0xf4fe('0x16c')]['phone'])||_0x15845f['Contact'][_0xf4fe('0x16d')]===null){return _0x1badde(msgResponse(_0xf4fe('0x16b'),_0xf4fe('0x145'),_0xf4fe('0x16e')));}var _0x194b39={'XMD-CALLERID':_0x2562a5[_0xf4fe('0x25')][_0x8b727][_0xf4fe('0x16f')](),'XMD-AGI':_0x2bdeb8[_0xf4fe('0x105')]?util[_0xf4fe('0x75')](_0xf4fe('0x170'),ipAgi,_0x2bdeb8[_0xf4fe('0x105')]):'NONE','XMD-AGIAFTER':_0x2bdeb8[_0xf4fe('0x10d')]?util[_0xf4fe('0x75')](_0xf4fe('0x170'),ipAgi,_0x2bdeb8['dialQueueProject2']):_0xf4fe('0x171'),'XMD-QUEUE':_0x2bdeb8[_0xf4fe('0x78')]===_0xf4fe('0x4a')?util[_0xf4fe('0x75')](_0xf4fe('0x172'),_0x2bdeb8[_0xf4fe('0x3c')],_0x2bdeb8[_0xf4fe('0x173')]||'',_0x2bdeb8['dialAgiAfterHangupAgent']?'c':'',_0x2bdeb8[_0xf4fe('0x117')]||0x3):'NONE','XMD-CONTACTID':_0x15845f[_0xf4fe('0xcd')],'XMD-CDRTYPE':_0xf4fe('0x8'),'CALLERID(all)':_0x2562a5[_0xf4fe('0x25')][_0x8b727][_0xf4fe('0x16f')](),'XMD-AMD':_0x2bdeb8[_0xf4fe('0xde')]?_0xf4fe('0x174'):_0xf4fe('0x171'),'XMD-DESTINATION':_0xf4fe('0xdd')};if(_0x2bdeb8[_0xf4fe('0xde')]){_0x194b39[_0xf4fe('0x175')]=_0x2bdeb8[_0xf4fe('0x176')]||0x9c4;_0x194b39[_0xf4fe('0x177')]=_0x2bdeb8[_0xf4fe('0x178')]||0x5dc;_0x194b39[_0xf4fe('0x179')]=_0x2bdeb8[_0xf4fe('0x17a')]||0x320;_0x194b39['XMD-AMDTOTALANALYSISTIME']=_0x2bdeb8[_0xf4fe('0x17b')]||0x1388;_0x194b39[_0xf4fe('0x17c')]=_0x2bdeb8[_0xf4fe('0x17d')]||0x64;_0x194b39['XMD-AMDBETWEENWORDSSILENCE']=_0x2bdeb8['dialAMDBetweenWordsSilence']||0x32;_0x194b39[_0xf4fe('0x17e')]=_0x2bdeb8[_0xf4fe('0x17f')]||0x3;_0x194b39[_0xf4fe('0x180')]=_0x2bdeb8[_0xf4fe('0x181')]||0x100;_0x194b39[_0xf4fe('0x182')]=_0x2bdeb8[_0xf4fe('0x183')]||0x1388;}if(_0x2bdeb8[_0xf4fe('0x78')]==='outbound'){_0x194b39[_0xf4fe('0x184')]=_0x15845f[_0xf4fe('0xcf')];}else{_0x194b39[_0xf4fe('0x185')]=_0x15845f[_0xf4fe('0xd0')];}for(var _0x2894d7 in _0x15845f['Contact']){if(typeof _0x15845f[_0xf4fe('0x16c')][_0x2894d7]!==_0xf4fe('0x97')){if(isNotNull(_0x15845f['Contact'][_0x2894d7])&&_0x2894d7!=='id'&&_0x2894d7!=='tags'&&_0x2894d7!==_0xf4fe('0x186')&&_0x2894d7!=='updatedAt'){_0x194b39[util['format'](_0xf4fe('0x187'),_0xf4fe('0x188'),_[_0xf4fe('0x189')](_0x2894d7))]=_0x15845f[_0xf4fe('0x16c')][_0x2894d7];}}}var _0x17743a=_0x2562a5['isTrunkReachable'](_0x2bdeb8[_0xf4fe('0x73')])?getCallerId(_0x2bdeb8[_0xf4fe('0x73')][_0xf4fe('0x18a')],_0x2bdeb8['dialOriginateCallerIdName'],_0x2bdeb8[_0xf4fe('0x18b')]>0x0?getCallerIdRandom(_0x2bdeb8['dialOriginateCallerIdNumber'],_0x2bdeb8[_0xf4fe('0x18b')]):_0x2bdeb8['dialOriginateCallerIdNumber']):getCallerId(_[_0xf4fe('0xad')](_0x2bdeb8['TrunkBackup'])?_0x2bdeb8[_0xf4fe('0x73')][_0xf4fe('0x18a')]:_0x2bdeb8['TrunkBackup']['callerid'],_0x2bdeb8[_0xf4fe('0x57')],_0x2bdeb8[_0xf4fe('0x18b')]>0x0?getCallerIdRandom(_0x2bdeb8[_0xf4fe('0x18c')],_0x2bdeb8[_0xf4fe('0x18b')]):_0x2bdeb8['dialOriginateCallerIdNumber']);if(_0x17743a){_0x194b39[_0xf4fe('0x18d')]=_0x2562a5[_0xf4fe('0x25')][_0x8b727][_0xf4fe('0x18e')]=extractCalleridName(_0x17743a);_0x194b39[_0xf4fe('0x18f')]=_0x2562a5[_0xf4fe('0x25')][_0x8b727]['originatecalleridnum']=extractCalleridNumber(_0x17743a);}return ami[_0xf4fe('0xae')]({'actionid':_0x8b727,'action':_0xf4fe('0x16b'),'channel':_0x2562a5['isTrunkReachable'](_0x2bdeb8[_0xf4fe('0x73')])?util[_0xf4fe('0x75')](_0xf4fe('0x190'),_0x2bdeb8[_0xf4fe('0x73')][_0xf4fe('0x3c')],isNotNull(_0x2bdeb8[_0xf4fe('0x59')])?_0x2bdeb8[_0xf4fe('0x59')]['trim']()||'':'',_0x2bdeb8[_0xf4fe('0x191')]>0x0?_0x15845f[_0xf4fe('0x16c')][_0xf4fe('0x16d')][_0xf4fe('0x192')](_0x2bdeb8['dialCutDigit']):_0x15845f['Contact'][_0xf4fe('0x16d')]):util['format'](_0xf4fe('0x190'),_['isNil'](_0x2bdeb8[_0xf4fe('0x193')])?_0x2bdeb8[_0xf4fe('0x73')][_0xf4fe('0x3c')]:_0x2bdeb8[_0xf4fe('0x193')][_0xf4fe('0x3c')],isNotNull(_0x2bdeb8['dialPrefix'])?_0x2bdeb8[_0xf4fe('0x59')][_0xf4fe('0x194')]()||'':'',_0x2bdeb8[_0xf4fe('0x191')]>0x0?_0x15845f[_0xf4fe('0x16c')][_0xf4fe('0x16d')][_0xf4fe('0x192')](_0x2bdeb8[_0xf4fe('0x191')]):_0x15845f['Contact'][_0xf4fe('0x16d')]),'callerid':_0x17743a,'Exten':_0xf4fe('0xdd'),'Context':_0xf4fe('0x195'),'Priority':'1','variable':_0x194b39,'timeout':(_0x2bdeb8[_0xf4fe('0x58')]||0x1e)*0x3e8,'async':!![],'channelid':_0x8b727})['then'](function(_0x572632){return _0x464ba2(_0x572632);})[_0xf4fe('0xb1')](function(_0x5cef50){_0x2bdeb8[_0xf4fe('0x62')]+=0x1;var _0x25c959=new History(_0x2562a5['actions'][_0x8b727]);logger[_0xf4fe('0x92')](util[_0xf4fe('0x75')]('[originateError]:\x20%s',JSON[_0xf4fe('0x74')](_0x5cef50)));_0x25c959['state']=0xe;_0x25c959[_0xf4fe('0xe2')]=_0xf4fe('0x196');_0x25c959[_0xf4fe('0xa8')]=moment()[_0xf4fe('0x75')]('YYYY-MM-DD\x20HH:mm:ss');_0x25c959[_0xf4fe('0xa7')]=_0x25c959[_0xf4fe('0xa8')];_0x2562a5[_0xf4fe('0xc6')](_0x25c959)[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x197')));_0x2562a5[_0xf4fe('0xc4')](_0x25c959)['catch'](loggerCatch(_0xf4fe('0x197')))[_0xf4fe('0x1f')](function(){delete _0x2562a5[_0xf4fe('0x25')][_0x8b727];return _0x1badde(msgResponse(_0xf4fe('0x16b'),_0xf4fe('0x46'),_0xf4fe('0x198')));});});});};Dialer['prototype'][_0xf4fe('0x2f')]=function(_0x57dda0){var _0x45ac54=this[_0xf4fe('0x25')][_0x57dda0[_0xf4fe('0x127')]];if(_0x45ac54){delete this[_0xf4fe('0x25')][_0x57dda0[_0xf4fe('0x127')]];_0x45ac54['responsetime']=moment()['format'](_0xf4fe('0x100'));var _0x267fad=_0x45ac54['type']===_0xf4fe('0x79')?this[_0xf4fe('0xb4')][_0x45ac54[_0xf4fe('0xb3')]]:this['voiceQueues'][_0x45ac54[_0xf4fe('0x199')]()];if(!this[_0xf4fe('0xd3')](_0x57dda0['response'])){this[_0xf4fe('0xb2')](_0x267fad);return this[_0xf4fe('0x19a')](_0x45ac54,_0x267fad,_0x57dda0)[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x19b')));}this[_0xf4fe('0x27')][_0x57dda0['uniqueid']]=_0x45ac54;}};Dialer[_0xf4fe('0x1c')][_0xf4fe('0x19c')]=function(_0x4efb41,_0x4fcf92,_0x36b685){var _0x34ae24=new History(_0x4fcf92);if(_0x34ae24[_0xf4fe('0x19d')]+_0x34ae24[_0xf4fe('0xef')]+_0x34ae24[_0xf4fe('0x19e')]+_0x34ae24['countnosuchnumberretry']+_0x34ae24[_0xf4fe('0xf1')]+_0x34ae24[_0xf4fe('0xf2')]+_0x34ae24[_0xf4fe('0xec')]+_0x34ae24[_0xf4fe('0xf3')]>=_0x36b685[_0xf4fe('0xfc')]-0x1){return!![];}switch(_0x4efb41){case 0x3:if(_0x34ae24['countnoanswerretry']>=_0x36b685['dialNoAnswerMaxRetry']-0x1){return!![];}this[_0xf4fe('0xbd')]({'active':![],'countnoanswerretry':_0x34ae24[_0xf4fe('0x19e')]+=0x1,'scheduledat':moment()[_0xf4fe('0xf8')](_0x36b685[_0xf4fe('0x19f')],_0xf4fe('0xff'))[_0xf4fe('0x75')](_0xf4fe('0x100')),'ContactId':_0x34ae24[_0xf4fe('0xcd')],'ListId':_0x34ae24[_0xf4fe('0xf9')],'VoiceQueueId':_0x34ae24['VoiceQueueId']||undefined,'CampaignId':_0x34ae24['CampaignId']||undefined})['catch'](loggerCatch(_0xf4fe('0x1a0')));break;case 0x5:if(_0x34ae24['countbusyretry']>=_0x36b685[_0xf4fe('0x1a1')]-0x1){return!![];}this[_0xf4fe('0xbd')]({'active':![],'countbusyretry':_0x34ae24[_0xf4fe('0x19d')]+=0x1,'scheduledat':moment()[_0xf4fe('0xf8')](_0x36b685['dialBusyRetryFrequency'],_0xf4fe('0xff'))['format'](_0xf4fe('0x100')),'ContactId':_0x34ae24['ContactId'],'ListId':_0x34ae24[_0xf4fe('0xf9')],'VoiceQueueId':_0x34ae24[_0xf4fe('0xcf')]||undefined,'CampaignId':_0x34ae24[_0xf4fe('0xd0')]||undefined})[_0xf4fe('0xb1')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x34ae24['countcongestionretry']>=_0x36b685['dialCongestionMaxRetry']-0x1){return!![];}this[_0xf4fe('0xbd')]({'active':![],'countcongestionretry':_0x34ae24[_0xf4fe('0xef')]+=0x1,'scheduledat':moment()[_0xf4fe('0xf8')](_0x36b685[_0xf4fe('0x1a2')],'minutes')['format'](_0xf4fe('0x100')),'ContactId':_0x34ae24['ContactId'],'ListId':_0x34ae24['ListId'],'VoiceQueueId':_0x34ae24[_0xf4fe('0xcf')]||undefined,'CampaignId':_0x34ae24['CampaignId']||undefined})[_0xf4fe('0xb1')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x34ae24[_0xf4fe('0xf0')]>=_0x36b685[_0xf4fe('0x1a3')]-0x1){return!![];}else{this[_0xf4fe('0xbd')]({'active':![],'countnosuchnumberretry':_0x34ae24[_0xf4fe('0xf0')]+=0x1,'scheduledat':moment()[_0xf4fe('0xf8')](_0x36b685[_0xf4fe('0x1a4')],'minutes')[_0xf4fe('0x75')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x34ae24[_0xf4fe('0xcd')],'ListId':_0x34ae24['ListId'],'VoiceQueueId':_0x34ae24[_0xf4fe('0xcf')]||undefined,'CampaignId':_0x34ae24['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact][NoSuchNumber]'));}break;case 0xa:if(_0x34ae24[_0xf4fe('0xf1')]>=_0x36b685[_0xf4fe('0x11b')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countdropretry':_0x34ae24[_0xf4fe('0xf1')]+=0x1,'scheduledat':moment()[_0xf4fe('0xf8')](_0x36b685[_0xf4fe('0x1a5')],_0xf4fe('0xff'))[_0xf4fe('0x75')](_0xf4fe('0x100')),'ContactId':_0x34ae24['ContactId'],'ListId':_0x34ae24[_0xf4fe('0xf9')],'VoiceQueueId':_0x34ae24['VoiceQueueId']||undefined,'CampaignId':_0x34ae24['CampaignId']||undefined})[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x11c')));break;case 0xb:if(_0x34ae24[_0xf4fe('0xf2')]>=_0x36b685[_0xf4fe('0x121')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x34ae24[_0xf4fe('0xf2')]+=0x1,'scheduledat':moment()[_0xf4fe('0xf8')](_0x36b685['dialAbandonedRetryFrequency'],_0xf4fe('0xff'))['format'](_0xf4fe('0x100')),'ContactId':_0x34ae24[_0xf4fe('0xcd')],'ListId':_0x34ae24['ListId'],'VoiceQueueId':_0x34ae24[_0xf4fe('0xcf')]||undefined,'CampaignId':_0x34ae24[_0xf4fe('0xd0')]||undefined})[_0xf4fe('0xb1')](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x34ae24[_0xf4fe('0xec')]>=_0x36b685[_0xf4fe('0xfd')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x34ae24[_0xf4fe('0xec')]+=0x1,'scheduledat':moment()[_0xf4fe('0xf8')](_0x36b685[_0xf4fe('0xfe')],_0xf4fe('0xff'))[_0xf4fe('0x75')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x34ae24[_0xf4fe('0xcd')],'ListId':_0x34ae24[_0xf4fe('0xf9')],'VoiceQueueId':_0x34ae24['VoiceQueueId']||undefined,'CampaignId':_0x34ae24[_0xf4fe('0xd0')]||undefined})[_0xf4fe('0xb1')](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x34ae24[_0xf4fe('0xf3')]>=_0x36b685[_0xf4fe('0x1a6')]-0x1){return!![];}this[_0xf4fe('0xbd')]({'active':![],'countagentrejectretry':_0x34ae24[_0xf4fe('0xf3')]+=0x1,'scheduledat':moment()[_0xf4fe('0xf8')](_0x36b685['dialAgentRejectRetryFrequency'],_0xf4fe('0xff'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x34ae24[_0xf4fe('0xcd')],'ListId':_0x34ae24['ListId'],'VoiceQueueId':_0x34ae24['VoiceQueueId']||undefined,'CampaignId':_0x34ae24[_0xf4fe('0xd0')]||undefined})[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x1a7')));break;default:return!![];}};Dialer['prototype'][_0xf4fe('0x19a')]=function(_0x4a6f86,_0xb721d3,_0x312bbb){var _0x26f9f0=this;var _0x5c399e=new History(_0x4a6f86);return new BPromise(function(_0x1352dc,_0x4a9039){if(_[_0xf4fe('0x8a')](_0xb721d3)&&typeof _0xb721d3!==_0xf4fe('0x1a8')){return _0x4a9039(msgResponse('[callProgressDetecting]',_0xf4fe('0x145'),_0xf4fe('0x1a9')));}if(_[_0xf4fe('0x8a')](_0x312bbb)&&typeof _0x312bbb!==_0xf4fe('0x1a8')){return _0x4a9039(msgResponse('[callProgressDetecting]',_0xf4fe('0x145'),'evt\x20is\x20undefine'));}switch(_0x312bbb['reason']){case'0':_0xb721d3[_0xf4fe('0x61')]+=0x1;_0x5c399e[_0xf4fe('0xa6')]=0x0;_0x5c399e[_0xf4fe('0xe2')]='NoSuchNumber';_0x5c399e[_0xf4fe('0xf0')]+=0x1;_0x5c399e['countglobal']+=0x1;ami[_0xf4fe('0x49')]('custom:agentnosuchnumber',ut[_0xf4fe('0xe7')](_0x4a6f86,_0xf4fe('0x1aa')));_0x26f9f0[_0xf4fe('0xc6')](_0x5c399e)['catch'](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x26f9f0[_0xf4fe('0x19c')](0x0,_0x4a6f86,_0xb721d3)){if(_0x5c399e[_0xf4fe('0xf0')]>=_0xb721d3[_0xf4fe('0x1a3')]){_0x26f9f0['createStateFinal'](_0x5c399e,_0x1352dc,_0x4a9039,'reason\x200\x20no\x20such\x20number....');}else{_0x26f9f0['stateGlobal'](_0x5c399e,_0x1352dc,_0x4a9039,_0xf4fe('0x1ab'));}}break;case'3':_0xb721d3[_0xf4fe('0x60')]+=0x1;_0x5c399e[_0xf4fe('0xa6')]=0x3;_0x5c399e[_0xf4fe('0xe2')]='NoAnswer';_0x5c399e['countnoanswerretry']+=0x1;_0x5c399e[_0xf4fe('0xed')]+=0x1;ami[_0xf4fe('0x49')]('custom:agentnoanswer',ut['buildObj'](_0x4a6f86,_0xf4fe('0x1ac')));_0x26f9f0['createHistory'](_0x5c399e)[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x1ad')));if(_0x26f9f0[_0xf4fe('0x19c')](0x3,_0x4a6f86,_0xb721d3)){if(_0x5c399e['countnoanswerretry']>=_0xb721d3[_0xf4fe('0x1ae')]){_0x26f9f0[_0xf4fe('0xf6')](_0x5c399e,_0x1352dc,_0x4a9039,'reason\x203\x20ringing\x20no\x20answer');}else{_0x26f9f0[_0xf4fe('0xf4')](_0x5c399e,_0x1352dc,_0x4a9039,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0xb721d3[_0xf4fe('0x5c')]+=0x1;_0x5c399e[_0xf4fe('0xa6')]=0x5;_0x5c399e['statedesc']=_0xf4fe('0x1af');_0x5c399e[_0xf4fe('0x19d')]+=0x1;_0x5c399e[_0xf4fe('0xed')]+=0x1;ami[_0xf4fe('0x49')]('custom:agentbusy',ut[_0xf4fe('0xe7')](_0x4a6f86,_0xf4fe('0x1b0')));_0x26f9f0[_0xf4fe('0xc6')](_0x5c399e)[_0xf4fe('0xb1')](loggerCatch('[syncAgentComplete][createHistory][5]'));if(_0x26f9f0['checkRetriveMax'](0x5,_0x4a6f86,_0xb721d3)){if(_0x5c399e[_0xf4fe('0x19d')]>=_0xb721d3[_0xf4fe('0x1a1')]){_0x26f9f0[_0xf4fe('0xf6')](_0x5c399e,_0x1352dc,_0x4a9039,_0xf4fe('0x1b1'));}else{_0x26f9f0[_0xf4fe('0xf4')](_0x5c399e,_0x1352dc,_0x4a9039,'reason\x205\x20busy');}}break;case'8':_0xb721d3[_0xf4fe('0x5d')]+=0x1;_0x5c399e[_0xf4fe('0xa6')]=0x8;_0x5c399e[_0xf4fe('0xe2')]=_0xf4fe('0x1b2');_0x5c399e[_0xf4fe('0xef')]+=0x1;_0x5c399e['countglobal']+=0x1;ami[_0xf4fe('0x49')](_0xf4fe('0x1b3'),ut[_0xf4fe('0xe7')](_0x4a6f86,'congestion'));_0x26f9f0[_0xf4fe('0xc6')](_0x5c399e)[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x1b4')));if(_0x26f9f0[_0xf4fe('0x19c')](0x8,_0x4a6f86,_0xb721d3)){if(_0x5c399e[_0xf4fe('0xef')]>=_0xb721d3['dialCongestionMaxRetry']){_0x26f9f0[_0xf4fe('0xf6')](_0x5c399e,_0x1352dc,_0x4a9039,_0xf4fe('0x1b5'));}else{_0x26f9f0['stateGlobal'](_0x5c399e,_0x1352dc,_0x4a9039,_0xf4fe('0x1b5'));}}break;case'11':_0xb721d3['outboundAbandonedCallsDay']+=0x1;_0x5c399e['state']=0xb;_0x5c399e[_0xf4fe('0xe2')]='Abandoned';_0x5c399e[_0xf4fe('0xf2')]+=0x1;_0x5c399e[_0xf4fe('0xed')]+=0x1;_0x26f9f0['createHistory'](_0x5c399e)['catch'](loggerCatch(_0xf4fe('0x125')));if(_0x26f9f0[_0xf4fe('0x19c')](0xb,_0x4a6f86,_0xb721d3)){if(_0x5c399e[_0xf4fe('0xf2')]>=_0xb721d3[_0xf4fe('0x121')]){_0x26f9f0['createStateFinal'](_0x5c399e,_0x1352dc,_0x4a9039,'reason\x2011\x20abandoned');}else{_0x26f9f0[_0xf4fe('0xf4')](_0x5c399e,_0x1352dc,_0x4a9039,_0xf4fe('0x1b6'));}}break;case'20':_0xb721d3['outboundRejectCallsDay']+=0x1;_0x5c399e['state']=0x14;_0x5c399e[_0xf4fe('0xe2')]=_0xf4fe('0x1b7');_0x5c399e[_0xf4fe('0xf3')]+=0x1;_0x5c399e[_0xf4fe('0xed')]+=0x1;ami[_0xf4fe('0x49')]('custom:agentreject',ut[_0xf4fe('0xe7')](_0x4a6f86,_0xf4fe('0x1b8')));_0x26f9f0[_0xf4fe('0xc6')](_0x5c399e)[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x1b9')));if(_0x26f9f0['checkRetriveMax'](0x14,_0x4a6f86,_0xb721d3)){if(_0x5c399e[_0xf4fe('0xf3')]>=_0xb721d3[_0xf4fe('0x1a6')]){_0x26f9f0['createStateFinal'](_0x5c399e,_0x1352dc,_0x4a9039,_0xf4fe('0x1ba'));}else{_0x26f9f0['stateGlobal'](_0x5c399e,_0x1352dc,_0x4a9039,_0xf4fe('0x1ba'));}}break;default:_0xb721d3[_0xf4fe('0x64')]+=0x1;_0x5c399e[_0xf4fe('0xa6')]=0xc;_0x5c399e[_0xf4fe('0xe2')]=_0x312bbb[_0xf4fe('0x10a')];_0x26f9f0['createHistory'](_0x5c399e)[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x1bb')));if(_0x26f9f0[_0xf4fe('0x19c')](_0x312bbb[_0xf4fe('0x10a')],_0x4a6f86,_0xb721d3)){if(_0x5c399e[_0xf4fe('0x19d')]+_0x5c399e[_0xf4fe('0xef')]+_0x5c399e[_0xf4fe('0x19e')]+_0x5c399e[_0xf4fe('0xf0')]+_0x5c399e[_0xf4fe('0xf1')]+_0x5c399e[_0xf4fe('0xf2')]+_0x5c399e['countmachineretry']+_0x5c399e['countagentrejectretry']>=_0xb721d3[_0xf4fe('0xfc')]){_0x26f9f0[_0xf4fe('0xf4')](_0x5c399e,_0x1352dc,_0x4a9039,_0x312bbb[_0xf4fe('0x10a')]);}else{_0x26f9f0['createStateFinal'](_0x5c399e,_0x1352dc,_0x4a9039,_0x312bbb[_0xf4fe('0x10a')]);}}}});};Dialer[_0xf4fe('0x1c')][_0xf4fe('0xf4')]=function(_0x6a2972,_0x56a76e,_0x119326,_0x292693){var _0x4ac0ac=new Final(_0x6a2972);_0x4ac0ac[_0xf4fe('0xa6')]=0xf;_0x4ac0ac[_0xf4fe('0xe2')]='Global';this[_0xf4fe('0xf6')](_0x4ac0ac,_0x56a76e,_0x119326,_0x292693);};Dialer[_0xf4fe('0x1c')][_0xf4fe('0xf6')]=function(_0x557f99,_0x7dbc4b,_0x408427,_0x378254){this[_0xf4fe('0xc4')](_0x557f99)[_0xf4fe('0xb7')](function(){return _0x7dbc4b(msgResponse(_0xf4fe('0x1bc'),_0xf4fe('0xd4'),_0x378254));})[_0xf4fe('0xb1')](function(){return _0x408427(msgResponse(_0xf4fe('0x1bd'),_0xf4fe('0x145'),_0xf4fe('0x1be')));});};Dialer['prototype']['predictive']=function(_0x5aa623){var _0x2968e1=_0x5aa623['dialPredictiveOptimizationPercentage']/0x64;var _0x3bdb0f=_0x5aa623[_0xf4fe('0x5f')]/(_0x5aa623[_0xf4fe('0x5f')]+_0x5aa623[_0xf4fe('0xe1')]);var _0x5e79de=Math[_0xf4fe('0x1bf')](_0x5aa623[_0xf4fe('0x6d')]*(_0x5aa623['predictiveIntervalMaxThreshold']/0x64));var _0x2fa578=Math[_0xf4fe('0x1bf')](_0x5aa623[_0xf4fe('0x6d')]*(_0x5aa623[_0xf4fe('0x1c0')]/0x64));var _0x20a27e=_0x5aa623['available']+_0x5aa623[_0xf4fe('0x50')];var _0x58b1cb=Math['floor'](_0x5aa623[_0xf4fe('0x6f')]*_0x5aa623['erlangAbandonmentRate']*_0x5aa623[_0xf4fe('0x1c1')]*_0x5aa623[_0xf4fe('0x6c')]);if(_[_0xf4fe('0x8a')](_0x5aa623[_0xf4fe('0x2a')])){if(!_['isUndefined'](_0x5aa623['startPredictive'])){_0x5aa623[_0xf4fe('0x29')]=undefined;loggerPredictive[_0xf4fe('0x92')](_0xf4fe('0x1c2'),_0xf4fe('0x1c3'));}if(!_[_0xf4fe('0x8a')](_0x5aa623[_0xf4fe('0x8d')])){loggerPredictive['error'](_0xf4fe('0x1c2'),_0xf4fe('0x1c4'));clearInterval(_0x5aa623[_0xf4fe('0x8d')]);_0x5aa623[_0xf4fe('0x8d')]=undefined;}_0x5aa623[_0xf4fe('0x2a')]=moment()['format'](_0xf4fe('0x100'));loggerPredictive[_0xf4fe('0x7b')](_0x5aa623[_0xf4fe('0x3c')],'collection\x20data\x20in\x20progressive\x20at',_0x5aa623[_0xf4fe('0x2a')]);this[_0xf4fe('0x15c')](_0x5aa623,0x1);}else if(ifInterval(_0x5aa623[_0xf4fe('0x1c5')],_0x5aa623[_0xf4fe('0x2a')])){this['handlePower'](_0x5aa623,0x1);loggerPredictiveCalls[_0xf4fe('0x7b')](_0xf4fe('0x1c6'),_0x5aa623['startProgressive'],_0x5aa623[_0xf4fe('0x3c')]);_0x5aa623['erlangCalls']=0x0;_0x5aa623[_0xf4fe('0x6b')]=0x0;}else if(_0x2968e1<_0x3bdb0f&&_0x5aa623[_0xf4fe('0x1c7')]==='dropRate'){freeVariablesPredictive(_0x5aa623);loggerPredictive['info'](_0xf4fe('0x1c8'),_0xf4fe('0x1c9'),_0x3bdb0f,_0xf4fe('0x2a'),_0x5aa623[_0xf4fe('0x3c')]);}else if(_0x58b1cb<_0x5aa623[_0xf4fe('0x6b')]&&_0x5aa623[_0xf4fe('0x1c7')]===_0xf4fe('0x1ca')){freeVariablesPredictive(_0x5aa623);loggerPredictive['info'](_0xf4fe('0x1cb'),_0xf4fe('0x1cc'),_0x58b1cb,'Drop\x20in\x20this\x20interval',_0x5aa623['predictiveIntervalErlangCallsDroppedCalls'],'startProgressive',_0x5aa623[_0xf4fe('0x3c')]);}else if(!ifInterval(_0x5aa623['dialPredictiveInterval'],_0x5aa623['startProgressive'])&&_[_0xf4fe('0x8a')](_0x5aa623['startPredictive'])&&!_[_0xf4fe('0x8a')](_0x5aa623[_0xf4fe('0x2a')])){_0x5aa623['startPredictive']=moment()[_0xf4fe('0x75')](_0xf4fe('0x100'));loggerPredictive[_0xf4fe('0x7b')](_0x5aa623[_0xf4fe('0x3c')],_0xf4fe('0x1cd'),_0x5aa623['startPredictive']);this[_0xf4fe('0x1ce')](_0x5aa623['dialPredictiveInterval'])['then'](this['getDataPredictive'](_0x5aa623))['then'](mergeDataErlangB(_0x5aa623))[_0xf4fe('0xb7')](this['startMethodPredictive'](_0x5aa623))[_0xf4fe('0xb1')](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0x5aa623));}else if(!ifInterval(_0x5aa623[_0xf4fe('0x1c5')],_0x5aa623[_0xf4fe('0x29')])){_0x5aa623['predictiveIntervalErlangCallsDroppedCalls']=0x0;_0x5aa623[_0xf4fe('0x29')]=moment()[_0xf4fe('0x75')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xf4fe('0x7b')](_0x5aa623['name'],_0xf4fe('0x1cf'),_0x5aa623[_0xf4fe('0x29')]);clearInterval(_0x5aa623['handlePredictive']);_0x5aa623[_0xf4fe('0x8d')]=undefined;this['averageHandleTime'](_0x5aa623['dialPredictiveInterval'])['then'](this[_0xf4fe('0x1d0')](_0x5aa623))['then'](mergeDataErlangB(_0x5aa623))[_0xf4fe('0xb7')](this[_0xf4fe('0x1d1')](_0x5aa623))[_0xf4fe('0xb1')](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0x5aa623));}else if(_0x5aa623[_0xf4fe('0x6d')]&&_0x20a27e<_0x5aa623[_0xf4fe('0x6d')]-_0x2fa578){freeVariablesPredictive(_0x5aa623);loggerPredictive[_0xf4fe('0x7b')](_0x5aa623[_0xf4fe('0x3c')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x20a27e,_0xf4fe('0x1d2'),_0x5aa623[_0xf4fe('0x6d')],'-',_0x2fa578,'=',_0x5aa623[_0xf4fe('0x6d')]-_0x2fa578,')');}else if(_0x5aa623[_0xf4fe('0x6d')]&&_0x20a27e>_0x5aa623['predictiveIntervalAvailable']+_0x5e79de){freeVariablesPredictive(_0x5aa623);loggerPredictive[_0xf4fe('0x7b')](_0x5aa623[_0xf4fe('0x3c')],_0xf4fe('0x1d3'),_0x20a27e,_0xf4fe('0x1d4'),_0x5aa623[_0xf4fe('0x6d')],'+',_0x5e79de,'=',_0x5aa623[_0xf4fe('0x6d')]+_0x5e79de,')');}};Dialer[_0xf4fe('0x1c')][_0xf4fe('0x1d0')]=function(_0x3cf22f){var _0x5afe0b=this;return function(_0x402035){return new BPromise(function(_0x4c01c7,_0x2cab74){_[_0xf4fe('0xcb')](_0x3cf22f,_0x402035[0x0]);if(checkGetDataPredictive(_0x402035[0x0])){var _0x58fb86=_0x3cf22f[_0xf4fe('0x6d')]=_0x3cf22f[_0xf4fe('0x50')]+_0x3cf22f['available'];var _0x3bcd30=_0x3cf22f[_0xf4fe('0x1c5')]*0x3c;var _0x21e30a=_0x402035[0x0][_0xf4fe('0x67')]+_0x402035[0x0]['predictiveIntervalAvgHoldtime'];var _0x2a6d05=(_0x402035[0x0][_0xf4fe('0x65')]+_0x402035[0x0][_0xf4fe('0x69')]+_0x402035[0x0][_0xf4fe('0x68')])/_0x402035[0x0][_0xf4fe('0x6e')];_0x3cf22f['predictiveIntervalHitRate']=_0x2a6d05>0x0?_0x2a6d05:0x1;switch(_0x3cf22f['dialPredictiveOptimization']){case _0xf4fe('0x1ca'):var _0x5e9ff6=_0x3cf22f[_0xf4fe('0x1d5')]/0x64;return _0x5afe0b[_0xf4fe('0x1d6')](_0x58fb86,_0x3bcd30,_0x21e30a,_0x2a6d05,_0x5e9ff6)[_0xf4fe('0xb7')](function(_0x22f949){return _0x4c01c7(_0x22f949);});case _0xf4fe('0x1d7'):var _0x3cca0f=_0x3cf22f['dialPredictiveOptimizationPercentage']/0x64;return _0x5afe0b[_0xf4fe('0x1d8')](_0x58fb86,_0x3bcd30,_0x21e30a,_0x2a6d05,_0x3cca0f)[_0xf4fe('0xb7')](function(_0x35a224){return _0x4c01c7(_0x35a224);});default:return _0x2cab74(msgResponse(_0xf4fe('0x1d9'),_0xf4fe('0x145'),_0xf4fe('0x1da')));}}else{return _0x2cab74(msgResponse('[getDataPredictive]',_0xf4fe('0x145'),_0xf4fe('0x1db')));}});};};Dialer['prototype'][_0xf4fe('0x1dc')]=function(_0x479b73){var _0x46be87=this;return function(_0x354a65){return new BPromise(function(_0x484dab,_0x35583a){_['merge'](_0x479b73,_0x354a65[0x0]);if(checkGetDataPredictive(_0x354a65[0x0])){loggerPredictive['info'](JSON[_0xf4fe('0x74')](_0x354a65[0x0]));if(_0x479b73[_0xf4fe('0x1c7')]===_0xf4fe('0x1ca')){return _0x46be87[_0xf4fe('0xc3')](_0x479b73['id'])[_0xf4fe('0xb7')](function(_0x282088){var _0x6a5ba8=_0x479b73['loggedIn']-_0x282088[0x0]['outboundQueuePauses'];var _0x3f6ef3=_0x479b73[_0xf4fe('0x1c5')]*0x3c;var _0x17cf06=_0x354a65[0x0][_0xf4fe('0x67')]+_0x354a65[0x0][_0xf4fe('0x66')];var _0x4ccd3b=(_0x354a65[0x0][_0xf4fe('0x65')]+_0x354a65[0x0][_0xf4fe('0x69')]+_0x354a65[0x0][_0xf4fe('0x68')])/_0x354a65[0x0][_0xf4fe('0x6e')];var _0x359ae6=_0x479b73[_0xf4fe('0x1d5')]/0x64;_0x479b73['predictiveIntervalPauses']=_0x282088[0x0][_0xf4fe('0x1dd')]||0x0;_0x479b73['predictiveIntervalHitRate']=_0x4ccd3b>0x0?_0x4ccd3b:0x1;return _0x46be87[_0xf4fe('0x1d6')](_0x6a5ba8,_0x3f6ef3,_0x17cf06,_0x4ccd3b,_0x359ae6);})[_0xf4fe('0xb7')](function(_0x51df04){return _0x484dab(_0x51df04);})[_0xf4fe('0xb1')](function(_0x82419b){return _0x35583a(msgResponse('[CatchErlangB]',_0xf4fe('0x145'),JSON[_0xf4fe('0x74')](_0x82419b)));});}if(_0x479b73[_0xf4fe('0x1c7')]===_0xf4fe('0x1d7')){return _0x46be87[_0xf4fe('0xc3')](_0x479b73['id'])[_0xf4fe('0xb7')](function(_0x13942b){var _0x1c0756=_0x479b73['loggedIn']-_0x13942b[0x0]['outboundQueuePauses'];var _0x222d37=_0x479b73['dialPredictiveInterval']*0x3c;var _0x2663c6=_0x354a65[0x0]['predictiveIntervalAvgTalktime']+_0x354a65[0x0][_0xf4fe('0x66')];var _0x30d361=(_0x354a65[0x0]['predictiveIntervalAnsweredCalls']+_0x354a65[0x0][_0xf4fe('0x69')]+_0x354a65[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x354a65[0x0][_0xf4fe('0x6e')];var _0x35d84c=_0x479b73[_0xf4fe('0x1d5')]/0x64;_0x479b73['predictiveIntervalPauses']=_0x13942b[0x0]['outboundQueuePauses']||0x0;_0x479b73[_0xf4fe('0x1c1')]=_0x30d361>0x0?_0x30d361:0x1;return _0x46be87[_0xf4fe('0x1d8')](_0x1c0756,_0x222d37,_0x2663c6,_0x30d361,_0x35d84c);})[_0xf4fe('0xb7')](function(_0x4df061){return _0x484dab(_0x4df061);})[_0xf4fe('0xb1')](function(_0xe6ac7a){return _0x35583a(msgResponse(_0xf4fe('0x1de'),_0xf4fe('0x145'),JSON[_0xf4fe('0x74')](_0xe6ac7a)));});}}else{return _0x35583a(msgResponse(_0xf4fe('0x1d9'),_0xf4fe('0x145'),'check\x20failure'));}});};};Dialer[_0xf4fe('0x1c')][_0xf4fe('0x1d1')]=function(_0x59f8c8){var _0x4d1038=this;return function(){var _0x2cb33f=0x0;var _0xca446d=Math[_0xf4fe('0x1df')](_0x59f8c8[_0xf4fe('0x70')]*0x3e8);if(_0xca446d>0x0){_0xca446d=_0xca446d<0x64?0x64:_0xca446d;loggerPredictive[_0xf4fe('0x7b')](_0x59f8c8[_0xf4fe('0x3c')],_0xf4fe('0x1e0'),_0xca446d,_0xf4fe('0x47'));_0x59f8c8[_0xf4fe('0x8d')]=setInterval(function(){_0x4d1038[_0xf4fe('0x8d')](_0x59f8c8);loggerPredictiveCalls[_0xf4fe('0x7b')](_0xf4fe('0x1e1'),_0x2cb33f+=0x1);},_0xca446d);}else{loggerPredictive[_0xf4fe('0x7b')](_0x59f8c8['name'],_0xf4fe('0x1e2'));}};};Dialer[_0xf4fe('0x1c')][_0xf4fe('0x1e3')]=function(_0x25c927,_0x3e8885){var _0x4f3a41=this;return function(_0x139d9e){if(_[_0xf4fe('0x43')](_0x139d9e)){if(_['isNil'](_0x3e8885[_0xf4fe('0xce')])||!_0x3e8885[_0xf4fe('0x1e4')]){if(_0x25c927[_0xf4fe('0x56')]===_0xf4fe('0x9')){_0x25c927[_0xf4fe('0x12e')]=_[_0xf4fe('0x8a')](_0x25c927[_0xf4fe('0x12e')])?!![]:_0x25c927[_0xf4fe('0x12e')];var _0xb54e3=uuid['v4']();_0x4f3a41['actions'][_0xb54e3]=new Action(_0x25c927,_0x3e8885,_0xb54e3);loggerBooked['info'](_0xf4fe('0x1e5'),_0xb54e3,_0xf4fe('0x1e6'),JSON[_0xf4fe('0x74')](_0x25c927[_0xf4fe('0x12e')]),_0xf4fe('0x1e7'),_0x25c927[_0xf4fe('0x3c')]);if(_0x25c927['queueStatusComplete']){_0x25c927[_0xf4fe('0x12e')]=![];_0x4f3a41['queueBooked'][_0x4f3a41['actions'][_0xb54e3][_0xf4fe('0xb3')]]=[];ami['Action']({'actionid':_0xb54e3,'action':_0xf4fe('0x1e8'),'queue':_0x25c927[_0xf4fe('0x3c')]})['catch'](function(){_0x4f3a41[_0xf4fe('0xb2')](_0x25c927);_0x4f3a41['rescheduleContact']({'active':![],'ContactId':_0x4f3a41[_0xf4fe('0x25')][_0xb54e3][_0xf4fe('0xcd')],'ListId':_0x4f3a41[_0xf4fe('0x25')][_0xb54e3][_0xf4fe('0xf9')],'VoiceQueueId':_0x4f3a41['actions'][_0xb54e3][_0xf4fe('0xcf')]||undefined,'CampaignId':_0x4f3a41[_0xf4fe('0x25')][_0xb54e3]['CampaignId']||undefined})[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x1e9')));delete _0x4f3a41['actions'][_0xb54e3];});}else{loggerBooked[_0xf4fe('0x7b')](_0xf4fe('0x1ea'),JSON[_0xf4fe('0x74')](_0x25c927[_0xf4fe('0x12e')]),_0xf4fe('0x1e7'),_0x25c927[_0xf4fe('0x3c')]);_0x4f3a41[_0xf4fe('0xb2')](_0x25c927);_0x4f3a41[_0xf4fe('0xbd')]({'active':![],'ContactId':_0x4f3a41[_0xf4fe('0x25')][_0xb54e3]['ContactId'],'ListId':_0x4f3a41['actions'][_0xb54e3]['ListId'],'VoiceQueueId':_0x4f3a41['actions'][_0xb54e3]['VoiceQueueId']||undefined,'CampaignId':_0x4f3a41[_0xf4fe('0x25')][_0xb54e3]['CampaignId']||undefined})[_0xf4fe('0xb1')](loggerCatch(_0xf4fe('0x1e9')));delete _0x4f3a41[_0xf4fe('0x25')][_0xb54e3];}}else{return _0x4f3a41['actionOriginate'](_0x25c927,_0x3e8885);}}else{if(getDiff(_0x3e8885['scheduledat'])<_0x25c927['dialRecallMeTimeout']*0x3c){if(_0x3e8885['Agent']&&!_0x3e8885[_0xf4fe('0x1eb')][_0xf4fe('0x1ec')]){_0x4f3a41['preview'][_0xf4fe('0x130')](_0x3e8885['id'])['finally'](function(){_0x4f3a41[_0xf4fe('0xb2')](_0x25c927);});}else{_0x4f3a41[_0xf4fe('0xbf')]({'active':![]},_0x3e8885['id'],0x1)[_0xf4fe('0x1f')](function(){_0x4f3a41[_0xf4fe('0xb2')](_0x25c927);});}}else{_0x25c927[_0xf4fe('0x63')]+=0x1;_0x4f3a41[_0xf4fe('0xb2')](_0x25c927);if(_0x25c927[_0xf4fe('0x1ed')]){_0x4f3a41['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x3e8885[_0xf4fe('0xcd')],'ListId':_0x3e8885[_0xf4fe('0xf9')],'VoiceQueueId':_0x3e8885[_0xf4fe('0xcf')]||undefined,'CampaignId':_0x3e8885[_0xf4fe('0xd0')]||undefined})['catch'](loggerCatch('[rescheduleContact][dialRecallInQueue]'));_0x4f3a41['createHistory'](createObjHistory(_0x25c927,_0x3e8885,_0xf4fe('0x1ee'),0x17,_0xf4fe('0x1ef')))[_0xf4fe('0xb1')](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0x4f3a41[_0xf4fe('0xd9')](createObjHistory(_0x25c927,_0x3e8885,_0xf4fe('0x1f0'),0x16,_0xf4fe('0x1f1')),'[Originate][HistoryRecallClose][historyCatch]',_0xf4fe('0x1f2'));}}}}else{_0x25c927[_0xf4fe('0x5b')]+=0x1;_0x4f3a41[_0xf4fe('0xd9')](createObjHistory(_0x25c927,_0x3e8885,_0xf4fe('0x1f3'),0xd,'Blacklist'),_0xf4fe('0x1f4'),_0xf4fe('0x1f5'));throw _0xf4fe('0x1f6');}};};Dialer[_0xf4fe('0x1c')][_0xf4fe('0x162')]=function(_0x5aeb5a){var _0x3dcbe7=this;var _0x3044f8=_0x5aeb5a[_0xf4fe('0x1f7')]-_0x5aeb5a[_0xf4fe('0x96')]-_0x5aeb5a[_0xf4fe('0xc1')];emitCampaignSummary(_0x5aeb5a);if(_0x3044f8>0x0){if(_0x3044f8>this['maxNumberOriginate']){_0x3044f8=this[_0xf4fe('0x23')];}_0x5aeb5a[_0xf4fe('0xc1')]+=_0x3044f8;this[_0xf4fe('0x1f8')](_0x5aeb5a['id'],_0x3044f8,_0x5aeb5a[_0xf4fe('0x1f9')],_0x5aeb5a)['then'](function(_0x4c9d77){_0x5aeb5a['temp']-=_0x3044f8;_0x5aeb5a['temp']=_0x5aeb5a[_0xf4fe('0xc1')]>0x0?_0x5aeb5a[_0xf4fe('0xc1')]:0x0;if(!checkContactEmpty(_0x4c9d77)){_0x5aeb5a[_0xf4fe('0x3b')]='AVAILABLE_CONTACTS_FINISHED';logger['info'](_0xf4fe('0x1fa')+_0x5aeb5a['name']);}else{_0x5aeb5a['originated']+=_0x4c9d77[_0xf4fe('0x95')];_0x5aeb5a['message']=_0xf4fe('0x1fb');for(var _0x1b8dd2=0x0;_0x1b8dd2<_0x4c9d77[_0xf4fe('0x95')];_0x1b8dd2+=0x1){_0x5aeb5a[_0xf4fe('0x1fc')]+=0x1;if(_[_0xf4fe('0xad')](_0x4c9d77[_0x1b8dd2])||_['isNil'](_0x4c9d77[_0x1b8dd2]['Contact'])||_[_0xf4fe('0xad')](_0x4c9d77[_0x1b8dd2]['Contact'][_0xf4fe('0x16d')])){_0x3dcbe7[_0xf4fe('0xca')](_0xf4fe('0x1fd'),_0x5aeb5a,_0x4c9d77[_0x1b8dd2]);}else{_0x3dcbe7[_0xf4fe('0xba')](_[_0xf4fe('0xcc')](_0x4c9d77[_0x1b8dd2],[_0xf4fe('0xd0'),_0xf4fe('0x1fe')]))[_0xf4fe('0xb7')](_0x3dcbe7[_0xf4fe('0x1e3')](_0x5aeb5a,_0x4c9d77[_0x1b8dd2]))['catch'](_0x3dcbe7[_0xf4fe('0x1ff')](_0xf4fe('0x200'),_0x5aeb5a));}}}})[_0xf4fe('0xb1')](loggerGetContactDialer(_0xf4fe('0x201'),_0x5aeb5a,_0x3044f8));}};Dialer['prototype']['handlePower']=function(_0x2e43e4,_0xf52c05){var _0x3aca0e=this;var _0x6053e7=[];var _0x22c18a=_0xf52c05>=0x1?_0xf52c05:0x1;if(_0x2e43e4['dialMethod']===_0xf4fe('0x9')){_0x22c18a=0x1;}var _0x212b8d=Math[_0xf4fe('0x1df')](_0x2e43e4['available']*_0x22c18a)-_0x2e43e4[_0xf4fe('0x96')]-_0x2e43e4[_0xf4fe('0xc1')];emitVoiceQueueSummary(_0x2e43e4);if(_0x2e43e4[_0xf4fe('0x202')]>0x0){var _0x1518d2=_0x2e43e4[_0xf4fe('0x202')]-_0x2e43e4[_0xf4fe('0x96')]-_0x2e43e4[_0xf4fe('0x50')]-_0x2e43e4[_0xf4fe('0xc1')]-_0x2e43e4[_0xf4fe('0x9f')];if(_0x212b8d>_0x1518d2){_0x212b8d=_0x1518d2;}}if(_0x212b8d>0x0){if(_0x2e43e4['dialMethod']===_0xf4fe('0x9')){_0x212b8d=0x1;}if(_0x212b8d>this[_0xf4fe('0x23')]){_0x212b8d=this[_0xf4fe('0x23')];}_0x2e43e4[_0xf4fe('0xc1')]+=_0x212b8d;for(var _0x22e4c1 in this[_0xf4fe('0x21')]){if(typeof this[_0xf4fe('0x21')][_0x22e4c1]!==_0xf4fe('0x97')){if(this[_0xf4fe('0x21')][_0x22e4c1][_0xf4fe('0xa6')]===_0xf4fe('0x203')&&this[_0xf4fe('0x21')][_0x22e4c1][_0xf4fe('0xaf')]===_0xf4fe('0xd7')){_0x6053e7[_0xf4fe('0x12c')](this['agents'][_0x22e4c1]['id']);}}}this[_0xf4fe('0xc0')](_0x2e43e4['id'],_0x6053e7,_0x212b8d,_0x2e43e4[_0xf4fe('0x1f9')],_0x2e43e4)['then'](function(_0x455827){_0x2e43e4[_0xf4fe('0xc1')]-=_0x212b8d;_0x2e43e4[_0xf4fe('0xc1')]=_0x2e43e4['temp']>0x0?_0x2e43e4['temp']:0x0;if(!checkContactEmpty(_0x455827)){_0x3aca0e[_0xf4fe('0xb5')](_0x2e43e4)[_0xf4fe('0xb7')](sendMessageReschedule(_0x2e43e4))[_0xf4fe('0xb1')](loggerCatch('[countReScheduled]\x20'));}else{_0x2e43e4[_0xf4fe('0x96')]+=_0x455827[_0xf4fe('0x95')];_0x2e43e4[_0xf4fe('0x3b')]=_0x2e43e4['dialMethod']===_0xf4fe('0x9')?_0xf4fe('0x174'):_0xf4fe('0x1fb');for(var _0x4e7865=0x0;_0x4e7865<_0x455827['length'];_0x4e7865+=0x1){if(_[_0xf4fe('0xad')](_0x455827[_0x4e7865])||_[_0xf4fe('0xad')](_0x455827[_0x4e7865]['Contact'])||_['isNil'](_0x455827[_0x4e7865][_0xf4fe('0x16c')][_0xf4fe('0x16d')])){_0x3aca0e[_0xf4fe('0xca')](_0xf4fe('0x1fd'),_0x2e43e4,_0x455827[_0x4e7865]);}else{_0x3aca0e['checkIsBlackList'](_['pick'](_0x455827[_0x4e7865],[_0xf4fe('0xcf'),'Contact.phone']))[_0xf4fe('0xb7')](_0x3aca0e[_0xf4fe('0x1e3')](_0x2e43e4,_0x455827[_0x4e7865]))[_0xf4fe('0xb1')](_0x3aca0e[_0xf4fe('0x1ff')](_0xf4fe('0x1fd'),_0x2e43e4));}}}})['catch'](loggerGetContactDialer(_0xf4fe('0x204'),_0x2e43e4,_0x212b8d));}};Dialer['prototype'][_0xf4fe('0x8d')]=function(_0x108c75){if(_0x108c75[_0xf4fe('0x202')]>0x0){var _0x59901d=_0x108c75[_0xf4fe('0x202')]-_0x108c75[_0xf4fe('0x96')]-_0x108c75[_0xf4fe('0x50')];if(_0x59901d>0x0){this['tryOriginatePredictive'](_0x108c75);}else{loggerPredictiveCalls[_0xf4fe('0x7b')](_0xf4fe('0x205'));}}else{this['tryOriginatePredictive'](_0x108c75);}};Dialer[_0xf4fe('0x1c')]['tryOriginatePredictive']=function(_0x4b36c9){var _0x1188f2=this;var _0x24be1f=[];_0x4b36c9['originated']+=0x1;for(var _0x1e1e8d in this[_0xf4fe('0x21')]){if(typeof this[_0xf4fe('0x21')][_0x1e1e8d]!=='undefined'){if(this['agents'][_0x1e1e8d][_0xf4fe('0xa6')]==='not_inuse'&&this[_0xf4fe('0x21')][_0x1e1e8d][_0xf4fe('0xaf')]===_0xf4fe('0xd7')){_0x24be1f[_0xf4fe('0x12c')](this['agents'][_0x1e1e8d]['id']);}}}this[_0xf4fe('0xc0')](_0x4b36c9['id'],_0x24be1f,0x1,_0x4b36c9[_0xf4fe('0x1f9')],_0x4b36c9)[_0xf4fe('0xb7')](function(_0x12bfc3){if(!checkContactEmpty(_0x12bfc3)){checkContactLowerLimitOriginate(_0x4b36c9,0x1,0x0);_0x1188f2[_0xf4fe('0xb5')](_0x4b36c9)[_0xf4fe('0xb7')](sendMessageReschedule(_0x4b36c9))['catch'](loggerCatch(_0xf4fe('0xb8')));}else{_0x4b36c9['message']='RUNNING';if(_[_0xf4fe('0xad')](_0x12bfc3[0x0])||_[_0xf4fe('0xad')](_0x12bfc3[0x0][_0xf4fe('0x16c')])||_[_0xf4fe('0xad')](_0x12bfc3[0x0][_0xf4fe('0x16c')][_0xf4fe('0x16d')])){_0x1188f2[_0xf4fe('0xca')]('[actionOriginate]\x20',_0x4b36c9,_0x12bfc3[0x0]);}else{_0x1188f2[_0xf4fe('0xb9')](_[_0xf4fe('0xcc')](_0x12bfc3[0x0],[_0xf4fe('0xcf'),_0xf4fe('0x1fe')]))[_0xf4fe('0xb7')](_0x1188f2[_0xf4fe('0x1e3')](_0x4b36c9,_0x12bfc3[0x0]))[_0xf4fe('0xb1')](_0x1188f2[_0xf4fe('0x1ff')]('[actionOriginatePredictive]\x20',_0x4b36c9));}}})[_0xf4fe('0xb1')](loggerGetContactDialer(_0xf4fe('0x206'),_0x4b36c9,0x1));emitVoiceQueueSummary(_0x4b36c9);};Dialer['prototype'][_0xf4fe('0x1d6')]=function(_0x448e72,_0xf294fe,_0x5d984c,_0x45b34e,_0x3ea0f3,_0x324180){loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x207'));loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x208'),_0x448e72);loggerPredictive['info'](_0xf4fe('0x209'),_0xf294fe);loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x20a'),_0x5d984c);loggerPredictive[_0xf4fe('0x7b')]('P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x45b34e);loggerPredictive['info']('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3ea0f3);loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x80'));return new BPromise(function(_0x475c78,_0xb9f1e3){if(_0x448e72<=0x0||isNaN(_0x448e72)){return _0xb9f1e3(msgResponse(_0xf4fe('0x20b'),_0xf4fe('0x46'),_0xf4fe('0x20c')+_0x448e72));}if(_0x5d984c<=0x0||isNaN(_0x5d984c)){return _0xb9f1e3(msgResponse(_0xf4fe('0x20b'),_0xf4fe('0x46'),_0xf4fe('0x20d')+_0x5d984c));}if(_0x45b34e<=0x0||isNaN(_0x45b34e)){return _0xb9f1e3(msgResponse('[abandonmentRate]',_0xf4fe('0x46'),_0xf4fe('0x20e')+_0x45b34e));}if(_0xf294fe<=0x0||isNaN(_0xf294fe)){return _0xb9f1e3(msgResponse(_0xf4fe('0x20b'),'Error',_0xf4fe('0x20f')+_0xf294fe));}if(_0x3ea0f3<=0x0||isNaN(_0x3ea0f3)){return _0xb9f1e3(msgResponse(_0xf4fe('0x20b'),_0xf4fe('0x46'),'Amax\x20=\x20'+_0x3ea0f3));}_0x324180=_0x324180||0x0;var _0x3971da=0x1/_0x5d984c;var _0x31269b=0x0;var _0x4f203a=0x0;var _0x1383c1=0x0;var _0x1f2a41=0x0;for(var _0x282468=0x0;_0x1383c1<_0x3ea0f3;_0x282468+=0x1){_0x4f203a=_0x282468/_0xf294fe;_0x31269b=(_0x45b34e*_0x4f203a+_0x324180)/_0x3971da;_0x1383c1=erlangb(_0x31269b,_0x448e72);_0x1f2a41=_0x31269b/_0x448e72*(0x1-erlangb(_0x31269b,_0x448e72));}return _0x475c78({'erlangCalls':_0x282468,'erlangCallToSecond':_0xf294fe/_0x282468,'erlangAbandonmentRate':_0x1383c1,'erlangBusyFactor':_0x1f2a41});});};Dialer[_0xf4fe('0x1c')]['busyFactor']=function(_0x5e1387,_0x397482,_0x2eb7bf,_0x2dc34e,_0x2218a7,_0x49d1aa){loggerPredictive['info'](_0xf4fe('0x210'));loggerPredictive['info'](_0xf4fe('0x208'),_0x5e1387);loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x209'),_0x397482);loggerPredictive['info'](_0xf4fe('0x20a'),_0x2eb7bf);loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x211'),_0x2dc34e);loggerPredictive['info']('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2218a7);loggerPredictive[_0xf4fe('0x7b')](_0xf4fe('0x80'));return new BPromise(function(_0x169460,_0x29a32c){if(_0x5e1387<=0x0||isNaN(_0x5e1387)){return _0x29a32c(msgResponse('[busyFactor]',_0xf4fe('0x46'),_0xf4fe('0x20c')+_0x5e1387));}if(_0x2eb7bf<=0x0||isNaN(_0x2eb7bf)){return _0x29a32c(msgResponse(_0xf4fe('0x212'),_0xf4fe('0x46'),_0xf4fe('0x20d')+_0x2eb7bf));}if(_0x2dc34e<=0x0||isNaN(_0x2dc34e)){return _0x29a32c(msgResponse(_0xf4fe('0x212'),_0xf4fe('0x46'),_0xf4fe('0x20e')+_0x2dc34e));}if(_0x397482<=0x0||isNaN(_0x397482)){return _0x29a32c(msgResponse(_0xf4fe('0x212'),_0xf4fe('0x46'),_0xf4fe('0x20f')+_0x397482));}if(_0x2218a7<=0x0||isNaN(_0x2218a7)){return _0x29a32c(msgResponse(_0xf4fe('0x212'),_0xf4fe('0x46'),_0xf4fe('0x213')+_0x2218a7));}_0x49d1aa=_0x49d1aa||0x0;var _0x5c5362=0x1/_0x2eb7bf;var _0x43e591=0x0;var _0x5e6a1d=0x0;var _0x10b58a=0x0;var _0x28fcc2=0x0;for(var _0x4224c4=0x0;_0x28fcc2<_0x2218a7;_0x4224c4+=0x1){_0x5e6a1d=_0x4224c4/_0x397482;_0x43e591=(_0x2dc34e*_0x5e6a1d+_0x49d1aa)/_0x5c5362;_0x10b58a=erlangb(_0x43e591,_0x5e1387);_0x28fcc2=_0x43e591/_0x5e1387*(0x1-erlangb(_0x43e591,_0x5e1387));}return _0x169460({'erlangCalls':_0x4224c4,'erlangCallToSecond':_0x397482/_0x4224c4,'erlangAbandonmentRate':_0x10b58a,'erlangBusyFactor':_0x28fcc2});});};module[_0xf4fe('0x214')]=Dialer;
\ No newline at end of file
+var _0x89e8=['dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','[rescheduleContact][AgentReject]','object','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','outboundNoSuchCallsDay','NoSuchNumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','noanswer','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','busy','reason\x205\x20busy','Congestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','dialAgentRejectMaxRetry','[syncAgentComplete][createHistory][?]','Global','predictive','dialPredictiveOptimizationPercentage','outboundDropCallsDayTimeout','round','predictiveIntervalMinThreshold','floor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','dialPredictiveInterval','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','check\x20failure','getDataPredictiveOld','loggedIn','outboundQueuePauses','[CatchErlangB]','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','scheduledat','Agent','voicePause','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','BLACKLIST','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','[actionOriginate]\x20','Contact.phone','dialLimitQueue','not_inuse','checkContactBlack','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Umin\x20=\x20','exports','util','lodash','bluebird','uuid','moment','md5','ioredis','../preview/util/util','../../../config/logger','booked','syncQueueSummary','../ami','defaults','redis','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/voiceQueueRt','./action','./history','./final','./queueCallerAbandon','./hangup','env','127.0.0.1','rrmemory','roundrobin','prototype','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','contactsId','uniqueId','optionPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','syncAgentComplete','custom:queuesummary','syncHangup','newexten','syncNewExten','varset','queuemember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','message','AGENTS_NOT_LOGGED','name','NOT_ACTIVE','\x20NOT\x20Active','\x20INTERVAL_IS_NULL','Interval','Intervals','INTERVAL_IS_NULL','isEmpty','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','emit','type','outbound','strategy','answered','available','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialPrefix','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangCallToSecond','erlangBusyFactor','startPredictive','Trunk','active','callerid','format','voice:queue:%s','ivr','campaign:ivr:%s','campaign:save','info','-----\x20Stats\x20Predictive\x20---','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','isUndefined','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangAbandonmentRate','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','clearing\x20variable\x20start\x20progressive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','stack','length','originated','[decremetOriginate]\x20object\x20originated\x20is\x20negative','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','[getContactDialer2][Empty]','sendMessageOneNotActive','waiting','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20disactive','starttime','loopClearZombieChannels','clearZombieChannels','[uniqueid]','actions','[actions]','undefined','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','[Dialer][checkChannel]','queue','[Dialer][checkChannel][ivr]','countReScheduled','resolve','[countReScheduled]\x20','checkIsBlackList','then','[checkIsBlackList]\x20','checkIsBlackListIvr','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','[unlockContact]\x20','getContactDialer','temp','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','saveInDb','ContactId','ListId','UserId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','isTrunkReachable','reachable','unmonitored','syncVarSet','uniqueid','isNil','variable','exten','xcally-motion-dialer','dialAMDActive','value','HANGUP','outboundAnswerAgiCallsDay','state','statedesc','HangupInAMD','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','membername','countmachineretry','countglobal','custom:amd','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','dialMachineMaxRetry','reason\x2019\x20machine....','add','dialMachineRetryFrequency','[rescheduleContact][Machine]','[syncHangupInAMDIvr]','MACHINE','Machine','AMD','reason19\x20machine....','createStateFinal','minutes','YYYY-MM-DD\x20HH:mm:ss','VoiceQueueId','ivrAnswerCallsDay','dialQueueProject','AnswerAGI','AGI','[syncHangupIvr][createHistory]','[syncHangupIvr]','Unknow','reason','agent','agiafterat','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','syncAgentConnect','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','Drop','dropreason','TIMEOUT','dialQueueProject2','countdropretry','dialDropMaxRetry','dialDropRetryFrequency','[rescheduleContact][Drop]','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','endtime','[syncAgentComplete][createHistory][11]','actionid','paused','stateinterface','locked','push','pick','idHopper','queueStatusComplete','run','[Catch][Preview][syncQueueStatusComplete]','_rr','unlockRR','Agent:\x20','contactAgent-idHopper:\x20','[booked][unlock]','[unlock][syncQueueStatusComplete]','[booked][unlock2]','[unlock3][syncQueueStatusComplete]','checkIsTrunkReachable','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','iftime\x20%s,%s','interval','timezones','content','indexOf','true','GLOBAL_INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','power','handlePower','Queue','handleIvr','dialGlobalInterval','dialTimezone','[syncQueueSummary]','syncCampaigns','checkIfTimeIntervals','[syncCampaigns]','\x5cw{0,','pow','random','match','actionOriginate','originate','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','dialQueueOptions','ACTIVE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','tags','createdAt','updatedAt','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','dialCutDigit','substring','trim','dialOriginateTimeout','[originateError]:\x20%s','[originate][error]','getQueue','response','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry'];(function(_0x247957,_0x32c8f2){var _0x15b5a4=function(_0x37e817){while(--_0x37e817){_0x247957['push'](_0x247957['shift']());}};_0x15b5a4(++_0x32c8f2);}(_0x89e8,0x74));var _0x889e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x89e8[_0x6131cd];return _0x47e916;};'use strict';var util=require(_0x889e('0x0'));var _=require(_0x889e('0x1'));var BPromise=require(_0x889e('0x2'));var uuid=require(_0x889e('0x3'));var moment=require(_0x889e('0x4'));var rr=require('rr');var md5=require(_0x889e('0x5'));var Redis=require(_0x889e('0x6'));var ut=require(_0x889e('0x7'));var config=require('../../../config/environment/');var logger=require('../../../config/logger')('dialer');var loggerBooked=require(_0x889e('0x8'))(_0x889e('0x9'));var loggerPredictive=require(_0x889e('0x8'))('predictive');var loggerPredictiveCalls=require(_0x889e('0x8'))('predictiveCalls');var loggerSyncQueueSummary=require(_0x889e('0x8'))(_0x889e('0xa'));var ami=require(_0x889e('0xb'));config['redis']=_[_0x889e('0xc')](config[_0x889e('0xd')],{'host':_0x889e('0xe'),'port':0x18eb});var io=require(_0x889e('0xf'))(new Redis(config['redis']));var cmHopper=require(_0x889e('0x10'));var cmHopperHistory=require(_0x889e('0x11'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x889e('0x12'));var Action=require(_0x889e('0x13'));var History=require(_0x889e('0x14'));var Final=require(_0x889e('0x15'));var AgentComplete=require('./agentComplete');var QueueCallerAbandon=require(_0x889e('0x16'));var Hangup=require(_0x889e('0x17'));var ipAgi=process[_0x889e('0x18')]['XCALLY_IP_AGI']||_0x889e('0x19');var strategy={'rrmemory':_0x889e('0x1a'),'roundrobin':_0x889e('0x1b')};var Sequence=function(){};Sequence[_0x889e('0x1c')][_0x889e('0x1d')]=function(_0x50cd13){this['tail']=this[_0x889e('0x1e')]?this[_0x889e('0x1e')][_0x889e('0x1f')](_0x50cd13):_0x50cd13();};function Dialer(_0x2de143,_0x50808f){this[_0x889e('0x20')]=new Sequence();this[_0x889e('0x21')]=_0x50808f;this['voiceQueues']=_0x2de143[_0x889e('0x22')];this['campaigns']=_0x2de143[_0x889e('0x23')];this[_0x889e('0x24')]=_0x2de143[_0x889e('0x24')];this[_0x889e('0x25')]=_0x2de143[_0x889e('0x25')];this['maxNumberOriginate']=config[_0x889e('0x26')]||0x2;this[_0x889e('0x27')]={};this['actions']={};this[_0x889e('0x28')]={};this[_0x889e('0x29')]={};this[_0x889e('0x2a')]={};this['startPredictive']={};this[_0x889e('0x2b')]={};this[_0x889e('0x2c')]={};this[_0x889e('0x2d')]={};this[_0x889e('0x2e')]={};ami['on']('agentconnect',this['syncAgentConnect'][_0x889e('0x2f')](this));ami['on'](_0x889e('0x30'),this[_0x889e('0x31')]['bind'](this));ami['on'](_0x889e('0x32'),this[_0x889e('0x33')][_0x889e('0x2f')](this));ami['on']('agentcomplete',this[_0x889e('0x34')]['bind'](this));ami['on'](_0x889e('0x35'),this[_0x889e('0xa')][_0x889e('0x2f')](this));ami['on']('hangup',this[_0x889e('0x36')]['bind'](this));ami['on'](_0x889e('0x37'),this[_0x889e('0x38')][_0x889e('0x2f')](this));ami['on'](_0x889e('0x39'),this['syncVarSet']['bind'](this));ami['on'](_0x889e('0x3a'),this['syncQueueMember'][_0x889e('0x2f')](this));ami['on'](_0x889e('0x3b'),this[_0x889e('0x3c')][_0x889e('0x2f')](this));this[_0x889e('0x3d')]();this['loopClearZombieChannels']();}function isNotNull(_0x5c3da2){return _0x5c3da2!==null&&!_['isUndefined'](_0x5c3da2);}function checkIsLoggedIn(_0x50f55b,_0x20f6c4){return function(){if(_0x20f6c4<=0x0){_0x50f55b[_0x889e('0x3e')]=_0x889e('0x3f');throw _0x50f55b[_0x889e('0x40')]+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0x483ac9){return _0x483ac9;}function checkIsActive(_0x1d2ae8,_0x325f4e){return function(){if(!isActive(_0x325f4e)){_0x1d2ae8[_0x889e('0x3e')]=_0x889e('0x41');throw _0x1d2ae8[_0x889e('0x40')]+_0x889e('0x42');}};}function checkInterval(_0x3c9ccf){return function(){if(!isNotNull(_0x3c9ccf['Interval'])){_0x3c9ccf[_0x889e('0x3e')]='INTERVAL_IS_NULL';throw _0x3c9ccf['name']+_0x889e('0x43');}if(!isNotNull(_0x3c9ccf[_0x889e('0x44')][_0x889e('0x45')])){_0x3c9ccf['message']=_0x889e('0x46');throw _0x3c9ccf['name']+_0x889e('0x43');}if(!isNotNull(_[_0x889e('0x47')](_0x3c9ccf[_0x889e('0x44')][_0x889e('0x45')]))){_0x3c9ccf[_0x889e('0x3e')]=_0x889e('0x46');throw _0x3c9ccf[_0x889e('0x40')]+'\x20INTERVAL_IS_NULL';}};}function msgResponse(_0xe0a326,_0x489067,_0x25014a){return{'action':_0xe0a326,'response':_0x489067,'message':_0x25014a,'stack':_0x25014a};}function myreject(_0x591fe9){return function(_0x330602){return _0x591fe9(msgResponse(_0x889e('0x48'),_0x889e('0x49'),JSON[_0x889e('0x4a')](_0x330602)));};}function getSeconds(_0x16623b,_0xebeda1){var _0x4acb5c=moment(_0x16623b)[_0x889e('0x4b')](0x0);var _0x1a2f70=moment(_0xebeda1)[_0x889e('0x4b')](0x0);return _0x4acb5c[_0x889e('0x4c')](_0x1a2f70,_0x889e('0x4d'));}function emit(_0x1cfe90,_0x210512,_0x3ba736){io['to'](_0x1cfe90)[_0x889e('0x4e')](_0x210512,_0x3ba736);}function emitVoiceQueueSummary(_0x321af4){if(_0x321af4[_0x889e('0x4f')]===_0x889e('0x50')){var _0x58ecc6={'id':_0x321af4['id'],'name':_0x321af4['name'],'strategy':_0x321af4[_0x889e('0x51')],'answered':_0x321af4[_0x889e('0x52')],'available':_0x321af4[_0x889e('0x53')],'loggedIn':_0x321af4['loggedIn'],'pTalking':_0x321af4[_0x889e('0x54')],'sumBillable':_0x321af4[_0x889e('0x55')],'sumDuration':_0x321af4[_0x889e('0x56')],'sumHoldTime':_0x321af4[_0x889e('0x57')]||0x0,'talking':_0x321af4[_0x889e('0x58')],'total':_0x321af4[_0x889e('0x59')],'type':_0x321af4['type'],'unmanaged':_0x321af4[_0x889e('0x5a')],'abandoned':_0x321af4['abandoned'],'waiting':_0x321af4['waiting'],'loggedInDb':_0x321af4[_0x889e('0x5b')],'dialActive':_0x321af4[_0x889e('0x5c')],'dialMethod':_0x321af4[_0x889e('0x5d')],'dialOriginateCallerIdName':_0x321af4[_0x889e('0x5e')],'dialOriginateCallerIdNumber':_0x321af4['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x321af4['dialOriginateTimeout'],'dialPrefix':_0x321af4[_0x889e('0x5f')],'outboundAnswerAgiCallsDay':_0x321af4['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x321af4[_0x889e('0x60')],'outboundBlacklistCallsDay':_0x321af4[_0x889e('0x61')],'outboundBusyCallsDay':_0x321af4['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x321af4['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x321af4[_0x889e('0x62')],'outboundDropCallsDayCallersExit':_0x321af4[_0x889e('0x63')],'outboundDropCallsDayTimeout':_0x321af4['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x321af4[_0x889e('0x64')],'outboundNoSuchCallsDay':_0x321af4['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x321af4[_0x889e('0x65')],'outboundReCallsDay':_0x321af4[_0x889e('0x66')],'outboundRejectCallsDay':_0x321af4[_0x889e('0x67')],'outboundUnknownCallsDay':_0x321af4[_0x889e('0x68')],'predictiveIntervalAnsweredCalls':_0x321af4[_0x889e('0x69')],'predictiveIntervalAvgHoldtime':_0x321af4[_0x889e('0x6a')],'predictiveIntervalAvgTalktime':_0x321af4[_0x889e('0x6b')],'predictiveIntervalDroppedCallsCallersExit':_0x321af4[_0x889e('0x6c')],'predictiveIntervalDroppedCallsTimeout':_0x321af4[_0x889e('0x6d')],'predictiveIntervalErlangCalls':_0x321af4[_0x889e('0x6e')],'predictiveIntervalErlangCallsDroppedCalls':_0x321af4[_0x889e('0x6f')],'predictiveIntervalHitRate':_0x321af4[_0x889e('0x70')],'predictiveIntervalMultiplicativeFactor':_0x321af4['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x321af4[_0x889e('0x71')],'predictiveIntervalAvailable':_0x321af4[_0x889e('0x72')],'predictiveIntervalTotalCalls':_0x321af4[_0x889e('0x73')],'message':_0x321af4[_0x889e('0x3e')],'originated':_0x321af4['originated'],'erlangCalls':_0x321af4[_0x889e('0x74')],'erlangCallToSecond':_0x321af4[_0x889e('0x75')],'erlangAbandonmentRate':_0x321af4['erlangAbandonmentRate'],'erlangBusyFactor':_0x321af4[_0x889e('0x76')],'startPredictive':_0x321af4[_0x889e('0x77')],'startProgressive':_0x321af4['startProgressive']};if(_0x321af4['Trunk']){_0x58ecc6['Trunk']={'id':_0x321af4[_0x889e('0x78')]['id'],'name':_0x321af4['Trunk'][_0x889e('0x40')],'active':_0x321af4[_0x889e('0x78')][_0x889e('0x79')],'callerid':_0x321af4[_0x889e('0x78')][_0x889e('0x7a')]};}if(_0x321af4['Interval']){_0x58ecc6[_0x889e('0x44')]={'id':_0x321af4[_0x889e('0x44')]['id'],'name':_0x321af4[_0x889e('0x44')][_0x889e('0x40')]};}var _0x29f072=md5(JSON[_0x889e('0x4a')](_0x58ecc6));if(_0x321af4['md5']!==_0x29f072){_0x321af4['md5']=_0x29f072;emit(util[_0x889e('0x7b')](_0x889e('0x7c'),_0x58ecc6[_0x889e('0x40')]),'voice_queue:save',_0x58ecc6);}}}function emitCampaignSummary(_0x78201){if(_0x78201[_0x889e('0x4f')]===_0x889e('0x7d')){emit(util[_0x889e('0x7b')](_0x889e('0x7e'),_0x78201[_0x889e('0x40')]),_0x889e('0x7f'),_0x78201);}}function checkGetDataPredictive(_0x3547fa){if(isNotNull(_0x3547fa)&&!_[_0x889e('0x47')](_0x3547fa)){loggerPredictive[_0x889e('0x80')](_0x889e('0x81'));loggerPredictive[_0x889e('0x80')](_0x889e('0x82'),_0x3547fa[_0x889e('0x73')]);loggerPredictive[_0x889e('0x80')](_0x889e('0x83'),_0x3547fa[_0x889e('0x69')]);loggerPredictive['info']('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3547fa['predictiveIntervalDroppedCallsTimeout']);loggerPredictive[_0x889e('0x80')]('Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3547fa[_0x889e('0x6c')]);loggerPredictive[_0x889e('0x80')](_0x889e('0x84'),_0x3547fa[_0x889e('0x6a')]);loggerPredictive['info'](_0x889e('0x85'),_0x3547fa['predictiveIntervalAvgTalktime']);loggerPredictive[_0x889e('0x80')](_0x889e('0x86'));if(_0x3547fa[_0x889e('0x73')]>0x0){if(!_[_0x889e('0x87')](_0x3547fa['predictiveIntervalAvgTalktime'])&&_0x3547fa[_0x889e('0x6b')]>0x0){return!![];}loggerPredictive['info'](_0x889e('0x88'));if(!_[_0x889e('0x87')](_0x3547fa[_0x889e('0x6a')])&&_0x3547fa['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive['info'](_0x889e('0x89'));}else{loggerPredictive[_0x889e('0x80')](_0x889e('0x8a'));}}else{loggerPredictive['info'](_0x889e('0x8b'));}return![];}function mergeDataErlangB(_0x1d4989){return function(_0x51cab4){loggerPredictive['info'](_0x889e('0x8c'));loggerPredictive[_0x889e('0x80')](_0x889e('0x8d'),_0x51cab4['erlangCalls']);loggerPredictive[_0x889e('0x80')](_0x889e('0x8e'),_0x51cab4['erlangCallToSecond']);loggerPredictive['info'](_0x889e('0x8f'),_0x51cab4[_0x889e('0x90')]);loggerPredictive[_0x889e('0x80')](_0x889e('0x91'),_0x51cab4[_0x889e('0x76')]);loggerPredictive[_0x889e('0x80')](_0x889e('0x8f'),_0x51cab4[_0x889e('0x90')]);loggerPredictive[_0x889e('0x80')](_0x889e('0x86'));_[_0x889e('0x92')](_0x1d4989,_0x51cab4);};}function getDiff(_0x1f6d82){var _0x10f623=moment()[_0x889e('0x4b')](0x0);var _0x49f438=moment(_0x1f6d82)['milliseconds'](0x0);return _0x10f623[_0x889e('0x4c')](_0x49f438,'seconds');}function ifInterval(_0x16a2ee,_0x395627){if(_[_0x889e('0x87')](_0x395627)){return![];}return getDiff(_0x395627)<_0x16a2ee*0x3c;}function freeVariablesPredictive(_0x5c15e4){if(isNotNull(_0x5c15e4)){if(!_['isUndefined'](_0x5c15e4[_0x889e('0x2b')])){_0x5c15e4[_0x889e('0x2b')]=undefined;loggerPredictive[_0x889e('0x80')](_0x5c15e4[_0x889e('0x40')],_0x889e('0x93'));}if(!_[_0x889e('0x87')](_0x5c15e4[_0x889e('0x77')])){_0x5c15e4[_0x889e('0x77')]=undefined;loggerPredictive['info'](_0x5c15e4[_0x889e('0x40')],'clearing\x20variable\x20start\x20predictive');}if(!_[_0x889e('0x87')](_0x5c15e4[_0x889e('0x94')])){clearInterval(_0x5c15e4[_0x889e('0x94')]);_0x5c15e4[_0x889e('0x94')]=undefined;loggerPredictive[_0x889e('0x80')](_0x5c15e4['name'],_0x889e('0x95'));}}}function erlangb(_0x5d1b33,_0x11316e){if(_0x11316e===0x0){return 0x0;}var _0x1494a0=0x1;for(var _0x4fff2e=0x1;_0x4fff2e<=_0x11316e;_0x4fff2e+=0x1){_0x1494a0=0x1+_0x1494a0*_0x4fff2e/_0x5d1b33;}return 0x1/_0x1494a0;}function isVoiceQueueOutbound(_0x181639){return _0x181639===_0x889e('0x50');}function isNotPreview(_0x35e6e0){return _0x35e6e0!==_0x889e('0x21');}function isCampaignIvr(_0x487b1b){return _0x487b1b==='ivr';}function getCallerId(_0x39d09b,_0xc5143e,_0x5a76d4){if(!_[_0x889e('0x87')](_0x5a76d4)&&typeof _0x5a76d4===_0x889e('0x96')&&!_['isEmpty'](_0x5a76d4)){if(!_[_0x889e('0x87')](_0xc5143e)&&typeof _0xc5143e===_0x889e('0x96')&&!_['isEmpty'](_0xc5143e)){return util[_0x889e('0x7b')]('\x22%s\x22\x20<%s>',_0xc5143e,_0x5a76d4);}return util['format'](_0x889e('0x97'),_0x5a76d4,_0x5a76d4);}if(!_['isUndefined'](_0x39d09b)&&typeof _0x39d09b===_0x889e('0x96')&&!_[_0x889e('0x47')](_0x39d09b)){return _0x39d09b;}return _0x889e('0x98');}function loggerCatchQueueSummary(_0x2f9b6c,_0x2ad897){return function(_0x5cd235){freeVariablesPredictive(_0x2ad897);emitVoiceQueueSummary(_0x2ad897);emitCampaignSummary(_0x2ad897);loggerSyncQueueSummary[_0x889e('0x99')](_0x2f9b6c,util[_0x889e('0x9a')](_0x5cd235,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0xb80bd2,_0x22fddf){return function(_0x3295ee){loggerPredictive[_0x889e('0x99')](_0x22fddf[_0x889e('0x40')],_0xb80bd2);loggerPredictive[_0x889e('0x99')](_0x3295ee[_0x889e('0x9b')]);freeVariablesPredictive(_0x22fddf);};}function loggerCatch(_0x5ae479){return function(_0x3faad7){logger[_0x889e('0x99')](_0x5ae479,util[_0x889e('0x9a')](_0x3faad7,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x3828d1){return _0x3828d1&&!_[_0x889e('0x87')](_0x3828d1)&&_0x3828d1[_0x889e('0x9c')]>0x0;}function decremetOriginate(_0x1d565c){if(!_[_0x889e('0x87')](_0x1d565c)&&_0x1d565c!==null){if(typeof _0x1d565c[_0x889e('0x9d')]!=='undefined'){if(_0x1d565c['originated']>0x0){_0x1d565c[_0x889e('0x9d')]-=0x1;}else{logger[_0x889e('0x99')](_0x889e('0x9e'));}}}else{logger[_0x889e('0x99')]('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x231934,_0x52b620,_0x5c66d3){if(_0x52b620>_0x5c66d3){for(var _0x38b7d0=0x0;_0x38b7d0<_0x52b620-_0x5c66d3;_0x38b7d0+=0x1){decremetOriginate(_0x231934);}}}function loggerGetContactDialer(_0xbb094f,_0x5b095e,_0x5762b4){return function(_0x58b8a8){checkContactLowerLimitOriginate(_0x5b095e,_0x5762b4,0x0);logger[_0x889e('0x99')](_0xbb094f,util['inspect'](_0x58b8a8,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x160508){return function(_0x28cea6){if(isNotNull(_0x28cea6)&&isNotNull(_0x28cea6[0x0])){if(_0x28cea6[0x0]['contactsRescheduled']>0x0){_0x160508[_0x889e('0x3e')]=_0x889e('0x9f');logger[_0x889e('0x80')](_0x889e('0xa0')+_0x160508[_0x889e('0x40')],_0x28cea6[0x0]['contactsRescheduled'],_0x889e('0xa1'));}else{_0x160508[_0x889e('0x3e')]='AVAILABLE_CONTACTS_FINISHED';logger['info'](_0x889e('0xa2')+_0x160508['name']);}}};}function notSendMessagesQueue(_0x54840e){if(_0x54840e[_0x889e('0xa3')]){freeVariablesPredictive(_0x54840e);if(_0x54840e[_0x889e('0x9d')]===0x0&&_0x54840e[_0x889e('0x58')]===0x0&&_0x54840e[_0x889e('0xa4')]===0x0&&(_0x54840e[_0x889e('0x54')]||0x0)===0x0){_0x54840e[_0x889e('0xa3')]=![];_0x54840e[_0x889e('0x53')]=0x0;_0x54840e[_0x889e('0x3e')]=_0x889e('0x41');loggerSyncQueueSummary[_0x889e('0x99')](_0x889e('0xa5'),_0x54840e[_0x889e('0x40')],_0x889e('0xa6'));}else{_0x54840e[_0x889e('0x3e')]=_0x889e('0xa7');loggerSyncQueueSummary['error'](_0x889e('0xa5'),_0x54840e['name'],'is\x20disactive');}emitVoiceQueueSummary(_0x54840e);}}function notSendMessagesCampaign(_0x4b882f){if(_0x4b882f[_0x889e('0xa3')]){if(_0x4b882f[_0x889e('0x9d')]===0x0){_0x4b882f[_0x889e('0xa3')]=![];_0x4b882f[_0x889e('0x3e')]=_0x889e('0x41');loggerSyncQueueSummary[_0x889e('0x99')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x4b882f[_0x889e('0x40')],_0x889e('0xa6'));}else{_0x4b882f[_0x889e('0x3e')]=_0x889e('0xa7');loggerSyncQueueSummary['error'](_0x889e('0xa8'),_0x4b882f[_0x889e('0x40')],_0x889e('0xa9'));}emitCampaignSummary(_0x4b882f);}}function createObjHistory(_0x23ebb4,_0x172617,_0x102204,_0x59f464,_0x2978c6){_0x23ebb4['message']=_0x102204;var _0x274336=new Action(_0x23ebb4,_0x172617);var _0x11ec4e=new History(_0x274336);_0x11ec4e['state']=_0x59f464;_0x11ec4e['statedesc']=_0x2978c6;_0x11ec4e['endtime']=_0x274336[_0x889e('0xaa')];return _0x11ec4e;}Dialer[_0x889e('0x1c')][_0x889e('0xab')]=function(){var _0x1b7a9c=this;setInterval(function(){_0x1b7a9c[_0x889e('0xac')](_0x1b7a9c[_0x889e('0x29')],_0x889e('0xad'));_0x1b7a9c['clearZombieChannels'](_0x1b7a9c[_0x889e('0xae')],_0x889e('0xaf'));},0x32c8);};Dialer['prototype'][_0x889e('0xac')]=function(_0x1d07c2,_0x2b49fe){var _0xd96807=this;for(var _0x4554b5 in _0x1d07c2){if(typeof _0x1d07c2[_0x4554b5]!==_0x889e('0xb0')){this['sequence'][_0x889e('0x1d')](function(){if(!_['isNil'](_0x1d07c2[_0x4554b5])){return ami[_0x889e('0xb1')]({'action':_0x889e('0xb2'),'channel':_0x1d07c2[_0x4554b5][_0x889e('0xb3')]})[_0x889e('0xb4')](function(_0x5c7656){if(_0x5c7656['message']===_0x889e('0xb5')){setTimeout(function(){if(_0x1d07c2[_0x4554b5]&&_0x1d07c2[_0x4554b5][_0x889e('0x4f')]!==_0x889e('0x7d')){_0xd96807[_0x889e('0xb6')](_0xd96807[_0x889e('0x22')][_0x1d07c2[_0x4554b5]['queue']]);logger['error'](_0x889e('0xb7'),_0x2b49fe,_0x4554b5,_0x1d07c2[_0x4554b5][_0x889e('0xb8')]);delete _0x1d07c2[_0x4554b5];}if(_0x1d07c2[_0x4554b5]&&_0x1d07c2[_0x4554b5][_0x889e('0x4f')]===_0x889e('0x7d')){_0xd96807['updateOriginated'](_0xd96807[_0x889e('0x23')][_0x1d07c2[_0x4554b5][_0x889e('0xb8')]]);logger['error'](_0x889e('0xb9'),_0x2b49fe,_0x4554b5,_0x1d07c2[_0x4554b5][_0x889e('0xb8')]);delete _0x1d07c2[_0x4554b5];}},0x2328);}});}});}}};Dialer[_0x889e('0x1c')][_0x889e('0xba')]=function(_0x2c7159){return BPromise[_0x889e('0xbb')]()['then'](cmHopper['countReScheduled'](_0x2c7159))['catch'](loggerCatch(_0x889e('0xbc')));};Dialer[_0x889e('0x1c')][_0x889e('0xbd')]=function(_0x2f9cd6){return BPromise[_0x889e('0xbb')]()[_0x889e('0xbe')](cmHopperBlack['checkIsBlackList'](_0x2f9cd6))[_0x889e('0xb4')](loggerCatch(_0x889e('0xbf')));};Dialer[_0x889e('0x1c')][_0x889e('0xc0')]=function(_0xe236ad){return BPromise[_0x889e('0xbb')]()[_0x889e('0xbe')](cmHopperBlack[_0x889e('0xc0')](_0xe236ad))['catch'](loggerCatch('[checkIsBlackListIvr]\x20'));};Dialer['prototype'][_0x889e('0xc1')]=function(_0x3bf5a9){return BPromise[_0x889e('0xbb')]()[_0x889e('0xbe')](cmHopperHistory[_0x889e('0xc2')](_0x3bf5a9))[_0x889e('0xb4')](loggerCatch(_0x889e('0xc3')));};Dialer[_0x889e('0x1c')][_0x889e('0xc4')]=function(_0x194482){return BPromise[_0x889e('0xbb')]()[_0x889e('0xbe')](cmHopper[_0x889e('0xc4')](_0x194482))[_0x889e('0xb4')](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0x889e('0x1c')]['unlockContact']=function(_0x49a019,_0x377e95,_0x1e7a11){return BPromise['resolve']()[_0x889e('0xbe')](cmHopper[_0x889e('0xc5')](_0x49a019,_0x377e95,_0x1e7a11))[_0x889e('0xb4')](loggerCatch(_0x889e('0xc6')));};Dialer[_0x889e('0x1c')][_0x889e('0xc7')]=function(_0x3da912,_0x54c483,_0x2c610a,_0x95ab5f,_0x116513){return BPromise['resolve']()[_0x889e('0xbe')](cmHopper[_0x889e('0xc7')](_0x3da912,_0x54c483,_0x2c610a,_0x95ab5f))[_0x889e('0xb4')](function(_0x1a3d5d){_0x116513['temp']-=_0x2c610a;_0x116513[_0x889e('0xc8')]=_0x116513['temp']>0x0?_0x116513[_0x889e('0xc8')]:0x0;loggerCatch('[getContactDialer]\x20')(_0x1a3d5d);});};Dialer[_0x889e('0x1c')]['getContactDialerIvr']=function(_0xcc8069,_0x108a77,_0x8f675,_0x3cca90){return BPromise[_0x889e('0xbb')]()[_0x889e('0xbe')](cmHopper[_0x889e('0xc9')](_0xcc8069,_0x108a77,_0x8f675))[_0x889e('0xb4')](function(_0xe0344d){_0x3cca90[_0x889e('0xc8')]-=_0x108a77;_0x3cca90[_0x889e('0xc8')]=_0x3cca90['temp']>0x0?_0x3cca90[_0x889e('0xc8')]:0x0;loggerCatch(_0x889e('0xca'))(_0xe0344d);});};Dialer[_0x889e('0x1c')]['getVoiceQueueRtPauses']=function(_0x223165){return BPromise[_0x889e('0xbb')]()[_0x889e('0xbe')](voiceQueueRt[_0x889e('0xcb')](_0x223165))[_0x889e('0xb4')](loggerCatch(_0x889e('0xcc')));};Dialer[_0x889e('0x1c')][_0x889e('0xcd')]=function(_0x5aec38){return BPromise[_0x889e('0xbb')]()['then'](cmHopper[_0x889e('0xcd')](_0x5aec38))[_0x889e('0xb4')](loggerCatch(_0x889e('0xce')));};Dialer[_0x889e('0x1c')][_0x889e('0xcf')]=function(_0x4b57c0){return BPromise[_0x889e('0xbb')]()[_0x889e('0xbe')](cmHopperHistory[_0x889e('0xcf')](_0x4b57c0))[_0x889e('0xb4')](loggerCatch(_0x889e('0xd0')));};Dialer[_0x889e('0x1c')][_0x889e('0xb6')]=function(_0x1dac63){if(!_[_0x889e('0x87')](_0x1dac63)&&_0x1dac63!==null){if(typeof _0x1dac63[_0x889e('0x9d')]!==_0x889e('0xb0')){if(_0x1dac63[_0x889e('0x9d')]>0x0){_0x1dac63['originated']-=0x1;}else{logger[_0x889e('0x99')]('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0x889e('0x99')](_0x889e('0xd1'));}};Dialer[_0x889e('0x1c')][_0x889e('0xd2')]=function(_0x10260f,_0x342801){var _0x1a0f92=this;return function(_0x361f99){_0x1a0f92[_0x889e('0xb6')](_0x342801);logger[_0x889e('0x99')](_0x10260f,util['inspect'](_0x361f99,{'showHidden':![],'depth':null}));};};Dialer[_0x889e('0x1c')][_0x889e('0xd3')]=function(_0x3f5fd2,_0x32d774,_0x18f898){var _0x38a4af={'state':0x19,'statedesc':_0x889e('0xd4')};this[_0x889e('0xb6')](_0x32d774);this[_0x889e('0xd5')](_[_0x889e('0x92')](_0x38a4af,_['pick'](_0x18f898,[_0x889e('0xd6'),_0x889e('0xd7'),_0x889e('0xd8'),'VoiceQueueId',_0x889e('0xd9')])),_0x889e('0xda'),_0x889e('0xdb'));logger['error'](_0x3f5fd2);};Dialer[_0x889e('0x1c')][_0x889e('0xdc')]=function(_0x355e3f){return _0x355e3f===_0x889e('0xdd');};Dialer[_0x889e('0x1c')][_0x889e('0xde')]=function(_0x320c2d){return!_[_0x889e('0x87')](_0x320c2d)&&_0x320c2d&&!_['isUndefined'](_0x320c2d[_0x889e('0x40')])&&!_['isUndefined'](_0x320c2d[_0x889e('0x79')])&&_0x320c2d[_0x889e('0x79')]&&(this[_0x889e('0x25')][util[_0x889e('0x7b')]('SIP/%s',_0x320c2d['name'])][_0x889e('0xb2')]===_0x889e('0xdf')||this[_0x889e('0x25')][util[_0x889e('0x7b')]('SIP/%s',_0x320c2d[_0x889e('0x40')])][_0x889e('0xb2')]===_0x889e('0xe0'));};Dialer[_0x889e('0x1c')][_0x889e('0xd5')]=function(_0x7a3c0d,_0x25ebea,_0x5e7bf6){this['createHistory'](_0x7a3c0d)['catch'](loggerCatch(_0x25ebea));this['moveContactManagedDialer'](_0x7a3c0d)[_0x889e('0xb4')](loggerCatch(_0x5e7bf6));};Dialer[_0x889e('0x1c')][_0x889e('0xe1')]=function(_0x17d188){var _0x40ac36=this[_0x889e('0x29')][_0x17d188[_0x889e('0xe2')]];var _0x1eccc3;if(!_[_0x889e('0xe3')](_0x17d188)&&!_[_0x889e('0xe3')](_0x17d188['variable'])&&!_[_0x889e('0xe3')](_0x17d188[_0x889e('0xe4')]['amdstatus'])&&_0x17d188[_0x889e('0xe5')]===_0x889e('0xe6')&&_0x40ac36){if(_0x40ac36[_0x889e('0x4f')]!==_0x889e('0x7d')&&this[_0x889e('0x22')][_0x40ac36['queue']][_0x889e('0xe7')]&&_0x17d188[_0x889e('0xe8')]===_0x889e('0xe9')){delete this[_0x889e('0x29')][_0x17d188[_0x889e('0xe2')]];this[_0x889e('0xb6')](this[_0x889e('0x22')][_0x40ac36['queue']]);this[_0x889e('0x22')][_0x40ac36['queue']][_0x889e('0x60')]+=0x1;this['voiceQueues'][_0x40ac36[_0x889e('0xb8')]][_0x889e('0xea')]+=0x1;_0x1eccc3=new Hangup(_0x40ac36,_0x17d188);_0x1eccc3[_0x889e('0xeb')]=0x12;_0x1eccc3[_0x889e('0xec')]=_0x889e('0xed');_0x1eccc3['membername']='AMD';ami[_0x889e('0x4e')]('custom:amd',ut[_0x889e('0xee')](_0x1eccc3,_0x889e('0xef')));this['saveInDb'](_0x1eccc3,_0x889e('0xf0'),_0x889e('0xf1'));}if(_0x40ac36[_0x889e('0x4f')]!==_0x889e('0x7d')&&this[_0x889e('0x22')][_0x40ac36['queue']][_0x889e('0xe7')]&&_0x17d188[_0x889e('0xe8')]==='MACHINE'){var _0x1aa557=this;return new BPromise(function(_0x3ae211,_0x5f5cd8){delete _0x1aa557['uniqueId'][_0x17d188['uniqueid']];_0x1aa557[_0x889e('0xb6')](_0x1aa557[_0x889e('0x22')][_0x40ac36[_0x889e('0xb8')]]);_0x1aa557[_0x889e('0x22')][_0x40ac36[_0x889e('0xb8')]][_0x889e('0x60')]+=0x1;_0x1aa557[_0x889e('0x22')][_0x40ac36[_0x889e('0xb8')]][_0x889e('0xea')]+=0x1;var _0x2c2f26=_0x1aa557[_0x889e('0x22')][_0x40ac36['queue']];var _0x5b6fb1=new Hangup(_0x40ac36,_0x17d188);_0x5b6fb1[_0x889e('0xeb')]=0x13;_0x5b6fb1[_0x889e('0xec')]='Machine';_0x5b6fb1[_0x889e('0xf2')]='AMD';_0x5b6fb1[_0x889e('0xf3')]+=0x1;_0x5b6fb1[_0x889e('0xf4')]+=0x1;_0x5b6fb1[_0x889e('0xef')]=!![];ami[_0x889e('0x4e')](_0x889e('0xf5'),ut[_0x889e('0xee')](_0x5b6fb1,_0x889e('0xef')));_0x1aa557[_0x889e('0xcf')](_0x5b6fb1)['catch'](loggerCatch(_0x889e('0xf6')));if(_0x5b6fb1[_0x889e('0xf7')]+_0x5b6fb1[_0x889e('0xf8')]+_0x5b6fb1[_0x889e('0xf9')]+_0x5b6fb1[_0x889e('0xfa')]+_0x5b6fb1['countdropretry']+_0x5b6fb1[_0x889e('0xfb')]+_0x5b6fb1[_0x889e('0xf3')]+_0x5b6fb1[_0x889e('0xfc')]>=_0x2c2f26[_0x889e('0xfd')]){_0x1aa557[_0x889e('0xfe')](_0x5b6fb1,_0x3ae211,_0x5f5cd8,'reason19\x20machine....');}else{if(_0x5b6fb1['countmachineretry']>=_0x2c2f26[_0x889e('0xff')]){_0x1aa557['createStateFinal'](_0x5b6fb1,_0x3ae211,_0x5f5cd8,_0x889e('0x100'));}else{_0x1aa557[_0x889e('0xc4')]({'active':![],'countmachineretry':_0x5b6fb1[_0x889e('0xf3')],'scheduledat':moment()[_0x889e('0x101')](_0x2c2f26[_0x889e('0x102')],'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5b6fb1['ContactId'],'ListId':_0x5b6fb1[_0x889e('0xd7')],'VoiceQueueId':_0x5b6fb1['VoiceQueueId']||undefined,'CampaignId':_0x5b6fb1['CampaignId']||undefined})[_0x889e('0xb4')](loggerCatch(_0x889e('0x103')));_0x3ae211({'reschedule':0x1});}}});}if(_0x40ac36[_0x889e('0x4f')]===_0x889e('0x7d')&&this[_0x889e('0x23')][_0x40ac36[_0x889e('0xb8')]]['dialAMDActive']&&_0x17d188[_0x889e('0xe8')]===_0x889e('0xe9')){delete this['uniqueId'][_0x17d188[_0x889e('0xe2')]];this[_0x889e('0xb6')](this['campaigns'][_0x40ac36['queue']]);_0x1eccc3=new Hangup(_0x40ac36,_0x17d188);_0x1eccc3['state']=0x12;_0x1eccc3[_0x889e('0xec')]=_0x889e('0xed');_0x1eccc3['membername']='AMD';ami[_0x889e('0x4e')](_0x889e('0xf5'),ut[_0x889e('0xee')](_0x1eccc3,_0x889e('0xef')));this['saveInDb'](_0x1eccc3,'[syncHangupInAMDIvr][createHistory]',_0x889e('0x104'));}if(_0x40ac36[_0x889e('0x4f')]===_0x889e('0x7d')&&this[_0x889e('0x23')][_0x40ac36[_0x889e('0xb8')]][_0x889e('0xe7')]&&_0x17d188[_0x889e('0xe8')]===_0x889e('0x105')){var _0x1aa557=this;return new BPromise(function(_0x42b647,_0x49cc40){delete _0x1aa557['uniqueId'][_0x17d188[_0x889e('0xe2')]];_0x1aa557[_0x889e('0xb6')](_0x1aa557[_0x889e('0x23')][_0x40ac36[_0x889e('0xb8')]]);_0x1aa557[_0x889e('0x23')][_0x40ac36[_0x889e('0xb8')]]['outboundAnswerCallsDay']+=0x1;_0x1aa557[_0x889e('0x23')][_0x40ac36['queue']][_0x889e('0xea')]+=0x1;var _0x4ba614=_0x1aa557[_0x889e('0x23')][_0x40ac36[_0x889e('0xb8')]];var _0x58b8f0=new Hangup(_0x40ac36,_0x17d188);_0x58b8f0[_0x889e('0xeb')]=0x13;_0x58b8f0['statedesc']=_0x889e('0x106');_0x58b8f0[_0x889e('0xf2')]=_0x889e('0x107');_0x58b8f0['countmachineretry']+=0x1;_0x58b8f0[_0x889e('0xf4')]+=0x1;_0x58b8f0['amd']=!![];ami['emit'](_0x889e('0xf5'),ut[_0x889e('0xee')](_0x58b8f0,_0x889e('0xef')));_0x1aa557[_0x889e('0xcf')](_0x58b8f0)[_0x889e('0xb4')](loggerCatch(_0x889e('0xf6')));if(_0x58b8f0[_0x889e('0xf7')]+_0x58b8f0[_0x889e('0xf8')]+_0x58b8f0['countnoanswerretry']+_0x58b8f0[_0x889e('0xfa')]+_0x58b8f0['countdropretry']+_0x58b8f0[_0x889e('0xfb')]+_0x58b8f0[_0x889e('0xf3')]+_0x58b8f0[_0x889e('0xfc')]>=_0x4ba614['dialGlobalMaxRetry']){_0x1aa557['stateGlobal'](_0x58b8f0,_0x42b647,_0x49cc40,_0x889e('0x108'));}else{if(_0x58b8f0[_0x889e('0xf3')]>=_0x4ba614[_0x889e('0xff')]){_0x1aa557[_0x889e('0x109')](_0x58b8f0,_0x42b647,_0x49cc40,_0x889e('0x100'));}else{_0x1aa557[_0x889e('0xc4')]({'active':![],'countmachineretry':_0x58b8f0['countmachineretry'],'scheduledat':moment()[_0x889e('0x101')](_0x4ba614[_0x889e('0x102')],_0x889e('0x10a'))[_0x889e('0x7b')](_0x889e('0x10b')),'ContactId':_0x58b8f0[_0x889e('0xd6')],'ListId':_0x58b8f0[_0x889e('0xd7')],'VoiceQueueId':_0x58b8f0[_0x889e('0x10c')]||undefined,'CampaignId':_0x58b8f0[_0x889e('0xd9')]||undefined})['catch'](loggerCatch(_0x889e('0x103')));_0x42b647({'reschedule':0x1});}}});}}};Dialer['prototype'][_0x889e('0x36')]=function(_0x303b38){var _0x44d5f1=this[_0x889e('0x29')][_0x303b38['uniqueid']];var _0x2f8597=this;var _0x11b80b;if(_0x44d5f1&&_0x44d5f1[_0x889e('0x4f')]===_0x889e('0x7d')){delete this[_0x889e('0x29')][_0x303b38[_0x889e('0xe2')]];this[_0x889e('0xb6')](this[_0x889e('0x23')][_0x44d5f1[_0x889e('0xb8')]]);this[_0x889e('0x23')][_0x44d5f1[_0x889e('0xb8')]][_0x889e('0x10d')]+=0x1;_0x11b80b=new Hangup(_0x44d5f1,_0x303b38);this['createHistory'](_0x11b80b)['catch'](loggerCatch('[syncHangupIvr][createHistory]'));this['moveContactManagedDialer'](_0x11b80b)[_0x889e('0xb4')](loggerCatch('[syncHangupIvr]'));}if(_0x44d5f1&&_0x44d5f1['type']!==_0x889e('0x7d')&&isNotNull(this[_0x889e('0x22')][_0x44d5f1[_0x889e('0xb8')]][_0x889e('0x10e')])){delete this[_0x889e('0x29')][_0x303b38[_0x889e('0xe2')]];this[_0x889e('0xb6')](this[_0x889e('0x22')][_0x44d5f1[_0x889e('0xb8')]]);this[_0x889e('0x22')][_0x44d5f1['queue']][_0x889e('0x60')]+=0x1;this['voiceQueues'][_0x44d5f1['queue']]['outboundAnswerAgiCallsDay']+=0x1;_0x11b80b=new Hangup(_0x44d5f1,_0x303b38);_0x11b80b[_0x889e('0xeb')]=0x10;_0x11b80b[_0x889e('0xec')]=_0x889e('0x10f');_0x11b80b[_0x889e('0xf2')]=_0x889e('0x110');this[_0x889e('0xcf')](_0x11b80b)[_0x889e('0xb4')](loggerCatch(_0x889e('0x111')));this[_0x889e('0xcd')](_0x11b80b)[_0x889e('0xb4')](loggerCatch(_0x889e('0x112')));}if(_0x44d5f1&&_0x44d5f1[_0x889e('0x4f')]!==_0x889e('0x7d')&&!isNotNull(this[_0x889e('0x22')][_0x44d5f1[_0x889e('0xb8')]][_0x889e('0x10e')])){delete this[_0x889e('0x29')][_0x303b38[_0x889e('0xe2')]];this['updateOriginated'](this[_0x889e('0x22')][_0x44d5f1['queue']]);this[_0x889e('0x22')][_0x44d5f1['queue']][_0x889e('0x68')]+=0x1;_0x11b80b=new Hangup(_0x44d5f1,_0x303b38);_0x11b80b[_0x889e('0xeb')]=0xc;_0x11b80b[_0x889e('0xec')]=_0x303b38['cause-txt'];_0x11b80b[_0x889e('0xf2')]=_0x889e('0x113');this[_0x889e('0xcf')](_0x11b80b)[_0x889e('0xb4')](loggerCatch(_0x889e('0x111')));this[_0x889e('0xcd')](_0x11b80b)[_0x889e('0xb4')](loggerCatch('[syncHangupIvr]'));}};Dialer['prototype']['syncAgentComplete']=function(_0x5f1998){var _0x4d4c33=this[_0x889e('0x29')][_0x5f1998[_0x889e('0xe2')]];var _0x21c31a=this;if(this['voiceQueues'][_0x5f1998[_0x889e('0xb8')]]){if(_0x4d4c33&&_0x4d4c33[_0x889e('0x4f')]!=='ivr'){delete this[_0x889e('0x29')][_0x5f1998[_0x889e('0xe2')]];this[_0x889e('0x22')][_0x5f1998['queue']][_0x889e('0x60')]+=0x1;var _0x41e16a=new AgentComplete(_0x4d4c33,_0x5f1998);if(_0x5f1998[_0x889e('0x114')]===_0x889e('0x115')){_0x41e16a[_0x889e('0x116')]=this['voiceQueues'][_0x5f1998['queue']]['dialQueueProject2']&&this['voiceQueues'][_0x5f1998[_0x889e('0xb8')]][_0x889e('0x117')]?moment()[_0x889e('0x7b')](_0x889e('0x10b')):undefined;}this[_0x889e('0xcf')](_0x41e16a)['catch'](loggerCatch(_0x889e('0x118')));this[_0x889e('0xcd')](_0x41e16a)[_0x889e('0xb4')](loggerCatch(_0x889e('0x119')));}}};Dialer[_0x889e('0x1c')][_0x889e('0x11a')]=function(_0xed5a07){if(this['voiceQueues'][_0xed5a07[_0x889e('0xb8')]]){if(this[_0x889e('0x29')][_0xed5a07[_0x889e('0xe2')]]&&this['uniqueId'][_0xed5a07[_0x889e('0xe2')]]['type']!==_0x889e('0x7d')){this['updateOriginated'](this[_0x889e('0x22')][_0xed5a07[_0x889e('0xb8')]]);this['uniqueId'][_0xed5a07[_0x889e('0xe2')]][_0x889e('0x11b')]=moment()[_0x889e('0x7b')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0x889e('0x1c')][_0x889e('0x11c')]=function(_0x3da9a5){this[_0x889e('0xcf')](_0x3da9a5)[_0x889e('0xb4')](loggerCatch(_0x889e('0x118')));this['moveContactManagedDialer'](_0x3da9a5)[_0x889e('0xb4')](loggerCatch(_0x889e('0x11d')));};Dialer[_0x889e('0x1c')][_0x889e('0x31')]=function(_0x5d4127){var _0xee049f=this['uniqueId'][_0x5d4127[_0x889e('0xe2')]];var _0x250d39=this;if(this[_0x889e('0x22')][_0x5d4127[_0x889e('0xb8')]]){if(_0xee049f&&_0xee049f['type']!==_0x889e('0x7d')){delete this[_0x889e('0x29')][_0x5d4127['uniqueid']];this[_0x889e('0xb6')](this['voiceQueues'][_0x5d4127[_0x889e('0xb8')]]);_0xee049f[_0x889e('0x11e')]=moment()['format'](_0x889e('0x10b'));var _0xf0eb76=new QueueCallerAbandon(_0xee049f,_0x5d4127);if(getSeconds(_0xee049f['droptime'],_0xee049f[_0x889e('0x11f')])>=_0xee049f[_0x889e('0x120')]){this[_0x889e('0x22')][_0x5d4127[_0x889e('0xb8')]][_0x889e('0x6d')]+=0x1;this[_0x889e('0x22')][_0x5d4127[_0x889e('0xb8')]]['outboundDropCallsDayTimeout']+=0x1;this['voiceQueues'][_0x5d4127[_0x889e('0xb8')]][_0x889e('0x6f')]+=0x1;_0xf0eb76[_0x889e('0xeb')]=0xa;_0xf0eb76[_0x889e('0xec')]=_0x889e('0x121');_0xf0eb76[_0x889e('0x122')]=_0x889e('0x123');_0xf0eb76['agiafterat']=this['voiceQueues'][_0x5d4127[_0x889e('0xb8')]][_0x889e('0x124')]?moment()[_0x889e('0x7b')](_0x889e('0x10b')):undefined;_0xf0eb76[_0x889e('0x125')]+=0x1;_0xf0eb76['countglobal']+=0x1;if(_0xf0eb76[_0x889e('0x125')]>=this[_0x889e('0x22')][_0x5d4127['queue']][_0x889e('0x126')]){this[_0x889e('0x11c')](_0xf0eb76);}else{this[_0x889e('0xc4')]({'active':![],'countdropretry':_0xf0eb76[_0x889e('0x125')],'scheduledat':moment()[_0x889e('0x101')](this[_0x889e('0x22')][_0x5d4127[_0x889e('0xb8')]][_0x889e('0x127')],'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0xee049f['ContactId'],'ListId':_0xee049f[_0x889e('0xd7')],'VoiceQueueId':_0xee049f[_0x889e('0x10c')]||undefined,'CampaignId':_0xee049f['CampaignId']||undefined})[_0x889e('0xb4')](loggerCatch(_0x889e('0x128')));var _0x3d46a5=new History(_0xf0eb76);_0x3d46a5[_0x889e('0xeb')]=0xa;_0x3d46a5[_0x889e('0xec')]='Drop';_0x3d46a5[_0x889e('0xaa')]=moment()[_0x889e('0x7b')](_0x889e('0x10b'));_0x3d46a5['endtime']=_0x3d46a5['starttime'];_0x3d46a5['calleridname']=_0xf0eb76[_0x889e('0x129')];_0x3d46a5['calleridnum']=_0xf0eb76[_0x889e('0x12a')];this['createHistory'](_0x3d46a5)[_0x889e('0xb4')](loggerCatch(_0x889e('0x12b')));}}else{this[_0x889e('0x22')][_0x5d4127[_0x889e('0xb8')]][_0x889e('0x6c')]+=0x1;this[_0x889e('0x22')][_0x5d4127[_0x889e('0xb8')]]['outboundDropCallsDayCallersExit']+=0x1;_0xf0eb76[_0x889e('0xeb')]=0xb;_0xf0eb76[_0x889e('0xec')]=_0x889e('0x12c');_0xf0eb76['dropreason']=_0x889e('0x12d');_0xf0eb76['countabandonedretry']+=0x1;_0xf0eb76[_0x889e('0xf4')]+=0x1;if(_0xf0eb76[_0x889e('0xfb')]>=this[_0x889e('0x22')][_0x5d4127['queue']][_0x889e('0x12e')]){this[_0x889e('0x11c')](_0xf0eb76);}else{this[_0x889e('0xc4')]({'active':![],'countabandonedretry':_0xf0eb76[_0x889e('0xfb')],'scheduledat':moment()['add'](this[_0x889e('0x22')][_0x5d4127[_0x889e('0xb8')]][_0x889e('0x12f')],_0x889e('0x10a'))[_0x889e('0x7b')](_0x889e('0x10b')),'ContactId':_0xee049f['ContactId'],'ListId':_0xee049f[_0x889e('0xd7')],'VoiceQueueId':_0xee049f[_0x889e('0x10c')]||undefined,'CampaignId':_0xee049f[_0x889e('0xd9')]||undefined})[_0x889e('0xb4')](loggerCatch('[rescheduleContact][Abandoned]'));var _0x3d46a5=new History(_0xf0eb76);_0x3d46a5[_0x889e('0xeb')]=0xb;_0x3d46a5[_0x889e('0xec')]=_0x889e('0x12c');_0x3d46a5['starttime']=moment()[_0x889e('0x7b')]('YYYY-MM-DD\x20HH:mm:ss');_0x3d46a5[_0x889e('0x130')]=_0x3d46a5[_0x889e('0xaa')];_0x3d46a5[_0x889e('0x129')]=_0xf0eb76[_0x889e('0x129')];_0x3d46a5[_0x889e('0x12a')]=_0xf0eb76[_0x889e('0x12a')];this[_0x889e('0xcf')](_0x3d46a5)[_0x889e('0xb4')](loggerCatch(_0x889e('0x131')));}}}}};Dialer[_0x889e('0x1c')]['syncNewExten']=function(_0x37a324){if(this[_0x889e('0xae')][_0x37a324[_0x889e('0xe2')]]){this[_0x889e('0xae')][_0x37a324[_0x889e('0xe2')]][_0x889e('0xb3')]=_0x37a324[_0x889e('0xb3')];}if(this['uniqueId'][_0x37a324[_0x889e('0xe2')]]){this[_0x889e('0x29')][_0x37a324['uniqueid']][_0x889e('0xb3')]=_0x37a324[_0x889e('0xb3')];}};Dialer[_0x889e('0x1c')]['syncQueueMember']=function(_0x574c1d){if(strategy[this[_0x889e('0x22')][this[_0x889e('0xae')][_0x574c1d['actionid']][_0x889e('0xb8')]][_0x889e('0x51')]]===_0x889e('0x1b')){if(this[_0x889e('0xae')][_0x574c1d[_0x889e('0x132')]]&&_[_0x889e('0xe3')](this['actions'][_0x574c1d[_0x889e('0x132')]]['locked'])&&_0x574c1d[_0x889e('0xb2')]==='1'&&_0x574c1d[_0x889e('0x133')]==='0'){if(this[_0x889e('0x24')][_0x574c1d['stateinterface']]){if(!this[_0x889e('0x24')][_0x574c1d[_0x889e('0x134')]][_0x889e('0x135')]){this['agents'][_0x574c1d[_0x889e('0x134')]][_0x889e('0x135')]=!![];this[_0x889e('0xae')][_0x574c1d[_0x889e('0x132')]]['locked']=!![];this[_0x889e('0xae')][_0x574c1d[_0x889e('0x132')]][_0x889e('0x134')]=_0x574c1d[_0x889e('0x134')];}}}}else if((strategy[this[_0x889e('0x22')][this['actions'][_0x574c1d[_0x889e('0x132')]][_0x889e('0xb8')]]['strategy']]||'rrmemory')===_0x889e('0x1a')){if(this[_0x889e('0xae')][_0x574c1d['actionid']]){if(this['agents'][_0x574c1d['stateinterface']]){this[_0x889e('0xae')][_0x574c1d[_0x889e('0x132')]][_0x889e('0x134')]=_0x574c1d[_0x889e('0x134')];if(_[_0x889e('0xe3')](this[_0x889e('0x2d')][this[_0x889e('0xae')][_0x574c1d[_0x889e('0x132')]]['queue']])){this[_0x889e('0x2d')][this[_0x889e('0xae')][_0x574c1d[_0x889e('0x132')]][_0x889e('0xb8')]]=[];}this['queueBooked'][this[_0x889e('0xae')][_0x574c1d[_0x889e('0x132')]][_0x889e('0xb8')]][_0x889e('0x136')](_['merge'](_[_0x889e('0x137')](this[_0x889e('0xae')][_0x574c1d[_0x889e('0x132')]],[_0x889e('0x138'),_0x889e('0x134')]),{'status':_0x574c1d[_0x889e('0xb2')],'paused':_0x574c1d[_0x889e('0x133')]}));}}}};function unlockQueueStatus(_0xd23ab7,_0x52bd05){setTimeout(function(){if(_[_0x889e('0x87')](_0xd23ab7['queueStatusComplete'])){loggerBooked[_0x889e('0x99')]('[unlockQueueStatus][undefined]',_0x52bd05);}_0xd23ab7[_0x889e('0x139')]=!![];loggerBooked[_0x889e('0x80')]('[booked][unlockQueueStatus]',_0x52bd05,JSON[_0x889e('0x4a')](_[_0x889e('0x137')](_0xd23ab7,['name',_0x889e('0x139')])));},0x1f3);}Dialer[_0x889e('0x1c')]['syncQueueStatusComplete']=function(_0x2e4c83){var _0x37ad19=this;var _0x5e8a2f=_0x37ad19['voiceQueues'][_0x37ad19['actions'][_0x2e4c83[_0x889e('0x132')]]['queue']];if(strategy[this[_0x889e('0x22')][this[_0x889e('0xae')][_0x2e4c83['actionid']][_0x889e('0xb8')]][_0x889e('0x51')]]===_0x889e('0x1b')){if(this[_0x889e('0xae')][_0x2e4c83['actionid']]&&this['actions'][_0x2e4c83[_0x889e('0x132')]][_0x889e('0x134')]){this['preview'][_0x889e('0x13a')](this[_0x889e('0xae')][_0x2e4c83['actionid']]['idHopper'],this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]][_0x889e('0x134')])[_0x889e('0xb4')](function(_0x18ef64){logger['error'](_0x889e('0x13b'),util[_0x889e('0x9a')](_0x18ef64,{'showHidden':![],'depth':null}));})['finally'](function(){_0x37ad19[_0x889e('0xb6')](_0x37ad19[_0x889e('0x22')][_0x37ad19[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]][_0x889e('0xb8')]]);_0x37ad19[_0x889e('0x24')][_0x37ad19[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]][_0x889e('0x134')]][_0x889e('0x135')]=![];delete _0x37ad19[_0x889e('0xae')][_0x2e4c83['actionid']];unlockQueueStatus(_0x5e8a2f);});}else{this[_0x889e('0xb6')](this[_0x889e('0x22')][this[_0x889e('0xae')][_0x2e4c83['actionid']][_0x889e('0xb8')]]);this[_0x889e('0xc4')]({'active':![],'ContactId':this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]]['ContactId'],'ListId':this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]][_0x889e('0xd7')],'VoiceQueueId':this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x889e('0xae')][_0x2e4c83['actionid']]['CampaignId']||undefined})['catch'](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]];unlockQueueStatus(_0x5e8a2f);}}else if((strategy[this[_0x889e('0x22')][this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]]['queue']][_0x889e('0x51')]]||'rrmemory')===_0x889e('0x1a')){var _0x62f306;if(this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]]&&!_[_0x889e('0x47')](this[_0x889e('0x2d')][this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]][_0x889e('0xb8')]])){if(this[_0x889e('0x2e')][_0x37ad19[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]]['queue']]){this['queueBookedRR'][_0x37ad19[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]]['queue']]=this['queueBookedRR'][this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]][_0x889e('0xb8')]]?this[_0x889e('0x2e')][this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]]['queue']]:this[_0x889e('0x2d')][this['actions'][_0x2e4c83[_0x889e('0x132')]][_0x889e('0xb8')]]?this[_0x889e('0x2d')][this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]]['queue']]['_rr']||0x0:0x0;}this[_0x889e('0x2d')][this[_0x889e('0xae')][_0x2e4c83['actionid']][_0x889e('0xb8')]][_0x889e('0x13c')]=this[_0x889e('0x2e')][this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]]['queue']];for(var _0x227eaa=0x0;_0x227eaa<this['queueBooked'][this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]][_0x889e('0xb8')]][_0x889e('0x9c')];_0x227eaa+=0x1){_0x62f306=rr(this[_0x889e('0x2d')][this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]]['queue']]);this['queueBookedRR'][_0x37ad19[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]]['queue']]=this[_0x889e('0x2d')][this['actions'][_0x2e4c83[_0x889e('0x132')]][_0x889e('0xb8')]]['_rr'];if(_0x62f306[_0x889e('0xb2')]==='1'&&_0x62f306['paused']==='0'){break;}}if(!_[_0x889e('0xe3')](_0x62f306)){this['agents'][_0x62f306[_0x889e('0x134')]][_0x889e('0x13d')]=_[_0x889e('0x87')](this['agents'][_0x62f306[_0x889e('0x134')]]['unlockRR'])?!![]:this[_0x889e('0x24')][_0x62f306[_0x889e('0x134')]][_0x889e('0x13d')];}loggerBooked[_0x889e('0x80')]('[booked][RR]',_0x2e4c83['actionid'],_0x889e('0x13e'),JSON['stringify'](_[_0x889e('0x137')](this[_0x889e('0x24')][_0x62f306[_0x889e('0x134')]],[_0x889e('0x40'),'unlockRR'])),_0x889e('0x13f'),JSON[_0x889e('0x4a')](_0x62f306[_0x889e('0x138')]));if(!_['isNil'](_0x62f306)&&_0x62f306['status']==='1'&&_0x62f306['paused']==='0'&&this[_0x889e('0x24')][_0x62f306['stateinterface']][_0x889e('0x13d')]){this[_0x889e('0x24')][_0x62f306[_0x889e('0x134')]][_0x889e('0x13d')]=![];this[_0x889e('0x2d')][_0x37ad19[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]][_0x889e('0xb8')]]=[];this[_0x889e('0x21')][_0x889e('0x13a')](_0x62f306[_0x889e('0x138')],_0x62f306[_0x889e('0x134')])[_0x889e('0xb4')](function(_0x4115b1){logger['error'](_0x889e('0x13b'),util['inspect'](_0x4115b1,{'showHidden':![],'depth':null}));})[_0x889e('0x1f')](function(){_0x37ad19['updateOriginated'](_0x37ad19[_0x889e('0x22')][_0x37ad19[_0x889e('0xae')][_0x2e4c83['actionid']][_0x889e('0xb8')]]);setTimeout(function(){_0x37ad19['agents'][_0x62f306['stateinterface']]['unlockRR']=!![];loggerBooked[_0x889e('0x80')]('[booked][RR][finaly]',_0x2e4c83[_0x889e('0x132')],_0x889e('0x13e'),JSON[_0x889e('0x4a')](_['pick'](_0x37ad19[_0x889e('0x24')][_0x62f306[_0x889e('0x134')]],[_0x889e('0x40'),'unlockRR'])),_0x889e('0x13f'),JSON[_0x889e('0x4a')](_0x62f306[_0x889e('0x138')]));},0xc7);delete _0x37ad19[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]];unlockQueueStatus(_0x5e8a2f,_0x2e4c83[_0x889e('0x132')]);});}else{loggerBooked[_0x889e('0x80')](_0x889e('0x140'));this[_0x889e('0xb6')](this[_0x889e('0x22')][this[_0x889e('0xae')][_0x2e4c83['actionid']][_0x889e('0xb8')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]][_0x889e('0xd6')],'ListId':this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]][_0x889e('0xd7')],'VoiceQueueId':this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]][_0x889e('0xd9')]||undefined})[_0x889e('0xb4')](loggerCatch(_0x889e('0x141')));delete this[_0x889e('0xae')][_0x2e4c83['actionid']];unlockQueueStatus(_0x5e8a2f);}}else{loggerBooked[_0x889e('0x80')](_0x889e('0x142'));this[_0x889e('0xb6')](this[_0x889e('0x22')][this[_0x889e('0xae')][_0x2e4c83['actionid']][_0x889e('0xb8')]]);this[_0x889e('0xc4')]({'active':![],'ContactId':this['actions'][_0x2e4c83['actionid']]['ContactId'],'ListId':this['actions'][_0x2e4c83[_0x889e('0x132')]][_0x889e('0xd7')],'VoiceQueueId':this['actions'][_0x2e4c83[_0x889e('0x132')]][_0x889e('0x10c')]||undefined,'CampaignId':this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]]['CampaignId']||undefined})[_0x889e('0xb4')](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]];unlockQueueStatus(_0x5e8a2f);}}else{loggerBooked[_0x889e('0x80')]('[booked][unlock3]');this[_0x889e('0xb6')](this[_0x889e('0x22')][this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this[_0x889e('0xae')][_0x2e4c83['actionid']][_0x889e('0xd6')],'ListId':this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]][_0x889e('0xd7')],'VoiceQueueId':this['actions'][_0x2e4c83['actionid']][_0x889e('0x10c')]||undefined,'CampaignId':this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]]['CampaignId']||undefined})['catch'](loggerCatch(_0x889e('0x143')));delete this[_0x889e('0xae')][_0x2e4c83[_0x889e('0x132')]];unlockQueueStatus(_0x5e8a2f);}};Dialer[_0x889e('0x1c')][_0x889e('0x3d')]=function(){var _0x34aa77=this;setInterval(function(){_0x34aa77['syncCampaigns']();},0x3e8);};Dialer[_0x889e('0x1c')][_0x889e('0x144')]=function(_0x18d827){var _0x38a7d7=this;return function(){if(!_0x38a7d7['isTrunkReachable'](_0x18d827['Trunk'])){if(!_0x38a7d7['isTrunkReachable'](_0x18d827['TrunkBackup'])){_0x18d827[_0x889e('0x3e')]='TRUNK_IS_NOT_REACHABLE';throw _0x18d827[_0x889e('0x40')]+_0x889e('0x145');}}};};Dialer[_0x889e('0x1c')][_0x889e('0x146')]=function(_0x30da51,_0x32584b,_0x4be5df,_0x38b95e){var _0x44eadf=this;return function(){var _0x4db847=!![];return _0x44eadf['ifTime'](_0x30da51,_0x32584b,_0x4be5df,_0x38b95e,_0x4db847);};};Dialer[_0x889e('0x1c')]['checkIfTimeIntervals']=function(_0x363b95,_0x31167f,_0x2515e2,_0x331e36){var _0x37ed19=this;return function(){var _0x2f26fb=![];return _0x37ed19['ifTime'](_0x363b95['Intervals'],_0x31167f,_0x2515e2,_0x331e36,_0x2f26fb);};};Dialer[_0x889e('0x1c')][_0x889e('0x147')]=function(_0x1501d5,_0x10dc3f,_0x44aaa4,_0xebe54d,_0x225124){var _0x31f987=[];return new BPromise(function(_0x43c663,_0x6fd085){if(!isNotNull(_0x1501d5)){_0xebe54d['message']=_0x889e('0x46');return _0x6fd085(msgResponse(_0x889e('0x147'),_0x889e('0x148'),_0x44aaa4+_0x889e('0x149')));}if(_[_0x889e('0x47')](_0x1501d5)){_0xebe54d[_0x889e('0x3e')]=_0x889e('0x14a');return _0x6fd085(msgResponse(_0x889e('0x147'),'Failure',_0x44aaa4+'\x20Intervals\x20is\x20empty\x20'));}if(_0x10dc3f&&_[_0x889e('0x87')](config['timezones'][_0x10dc3f])){_0xebe54d[_0x889e('0x3e')]=_0x889e('0x14b');return _0x6fd085(msgResponse(_0x889e('0x147'),_0x889e('0x148'),_0x44aaa4+_0x889e('0x14c')+_0x10dc3f));}if(_[_0x889e('0x14d')](_0x1501d5)){for(var _0x477792=0x0;_0x477792<_0x1501d5[_0x889e('0x9c')];_0x477792+=0x1){_0x31f987[_0x889e('0x136')](ami[_0x889e('0xb1')]({'action':_0x889e('0x14e'),'command':util[_0x889e('0x7b')](_0x889e('0x14f'),_0x1501d5[_0x477792][_0x889e('0x150')],!_[_0x889e('0x87')](config[_0x889e('0x151')][_0x10dc3f])?_0x10dc3f:'')})[_0x889e('0xbe')](function(_0x2236ca){return _0x2236ca[_0x889e('0x152')][_0x889e('0x153')](_0x889e('0x154'))>=0x0;})[_0x889e('0xb4')](myreject(_0x6fd085)));}}else{_0x31f987[_0x889e('0x136')](ami[_0x889e('0xb1')]({'action':_0x889e('0x14e'),'command':util[_0x889e('0x7b')]('iftime\x20%s,%s',_0x1501d5,!_[_0x889e('0x87')](config[_0x889e('0x151')][_0x10dc3f])?_0x10dc3f:'')})[_0x889e('0xbe')](function(_0x1bf73d){return _0x1bf73d[_0x889e('0x152')]['indexOf'](_0x889e('0x154'))>=0x0;})['catch'](myreject(_0x6fd085)));}BPromise['all'](_0x31f987)['then'](function(_0xe8ad48){var _0x5c494f=_['some'](_0xe8ad48);if(_0x5c494f){return _0x43c663(_0x5c494f);}else{_0xebe54d[_0x889e('0x3e')]=_0x225124?_0x889e('0x155'):'INTERVAL_IS_OVERTIME';return _0x6fd085(msgResponse(_0x889e('0x156'),'Failure',_0x889e('0x157')+_0x225124+'\x20'+_0x44aaa4+_0x889e('0x158')+util['inspect'](_0x1501d5,{'showHidden':![],'depth':null})+_0x889e('0x159')+_0x10dc3f));}})[_0x889e('0xb4')](function(_0x5b166e){return _0x6fd085(msgResponse('ifTime',_0x889e('0x148'),JSON[_0x889e('0x4a')](_0x5b166e)));});});};Dialer['prototype'][_0x889e('0x15a')]=function(_0x361672){var _0x11d9a3=this;return function(){switch(_0x361672['dialMethod']){case _0x889e('0x15b'):freeVariablesPredictive(_0x361672);_0x11d9a3['handlePower'](_0x361672,0x1);break;case _0x889e('0x15c'):freeVariablesPredictive(_0x361672);_0x11d9a3[_0x889e('0x15d')](_0x361672,_0x361672['dialPowerLevel']);break;case'predictive':_0x11d9a3['predictive'](_0x361672);break;case _0x889e('0x9'):freeVariablesPredictive(_0x361672);_0x11d9a3[_0x889e('0x15d')](_0x361672,0x1);break;default:freeVariablesPredictive(_0x361672);logger['error'](_0x889e('0x15e'),_0x361672[_0x889e('0x40')],'method\x20not\x20recognized');}};};Dialer['prototype']['launchHandleIvr']=function(_0x36b372){var _0x403351=this;return function(){_0x403351[_0x889e('0x15f')](_0x36b372);};};Dialer['prototype'][_0x889e('0xa')]=function(_0x34fd0d){var _0x4da669=this;if(isNotPreview(_0x34fd0d[_0x889e('0x5d')])){if(isVoiceQueueOutbound(_0x34fd0d['type'])&&isActive(_0x34fd0d[_0x889e('0x5c')])){_0x34fd0d[_0x889e('0xa3')]=!![];BPromise[_0x889e('0xbb')]()[_0x889e('0xbe')](checkIsLoggedIn(_0x34fd0d,_0x34fd0d['loggedIn']))['then'](checkIsActive(_0x34fd0d,_0x34fd0d['dialActive']))[_0x889e('0xbe')](checkInterval(_0x34fd0d))['then'](_0x4da669[_0x889e('0x144')](_0x34fd0d))[_0x889e('0xbe')](_0x4da669['checkIfTime'](_0x34fd0d[_0x889e('0x160')],_0x34fd0d['dialTimezone'],_0x34fd0d['name'],_0x34fd0d))[_0x889e('0xbe')](_0x4da669['checkIfTimeIntervals'](_0x34fd0d[_0x889e('0x44')],_0x34fd0d[_0x889e('0x161')],_0x34fd0d[_0x889e('0x40')],_0x34fd0d))[_0x889e('0xbe')](_0x4da669[_0x889e('0x15a')](_0x34fd0d))[_0x889e('0xb4')](loggerCatchQueueSummary(_0x889e('0x162'),_0x34fd0d));}else{notSendMessagesQueue(_0x34fd0d);}}else{freeVariablesPredictive(_0x34fd0d);}};Dialer[_0x889e('0x1c')][_0x889e('0x163')]=function(){var _0x4b2b3c=this;var _0x24370d;for(var _0x413256 in this[_0x889e('0x23')]){if(typeof this[_0x889e('0x23')][_0x413256]!==_0x889e('0xb0')){_0x24370d=this[_0x889e('0x23')][_0x413256];if(isCampaignIvr(_0x24370d[_0x889e('0x4f')])&&isActive(_0x24370d[_0x889e('0x79')])){_0x24370d[_0x889e('0xa3')]=!![];BPromise[_0x889e('0xbb')]()[_0x889e('0xbe')](checkIsActive(_0x24370d,_0x24370d[_0x889e('0x79')]))[_0x889e('0xbe')](checkInterval(_0x24370d))[_0x889e('0xbe')](_0x4b2b3c[_0x889e('0x144')](_0x24370d))[_0x889e('0xbe')](_0x4b2b3c[_0x889e('0x146')](_0x24370d[_0x889e('0x160')],_0x24370d[_0x889e('0x161')],_0x24370d['name'],_0x24370d))[_0x889e('0xbe')](_0x4b2b3c[_0x889e('0x164')](_0x24370d[_0x889e('0x44')],_0x24370d['dialTimezone'],_0x24370d['name'],_0x24370d))[_0x889e('0xbe')](_0x4b2b3c['launchHandleIvr'](_0x24370d))['catch'](loggerCatchQueueSummary(_0x889e('0x165'),_0x24370d));}else{notSendMessagesCampaign(_0x24370d);}}}};function getCallerIdRandom(_0x303b79,_0x405d4d){var _0x5f583a;var _0x21201a;var _0x2b7fed;if(_0x405d4d<=0x0){_0x405d4d=0x1;}_0x5f583a=new RegExp(_0x889e('0x166')+_0x405d4d+'}$');_0x21201a=Math[_0x889e('0x167')](0xa,_0x405d4d-0x1);_0x2b7fed=Math[_0x889e('0x167')](0xa,_0x405d4d)-0x1;return util[_0x889e('0x7b')]('%s',_['replace'](_0x303b79,_0x5f583a,_[_0x889e('0x168')](_0x21201a,_0x2b7fed)));}function extractCalleridName(_0x2fcef8){var _0x5df5ac=_0x2fcef8[_0x889e('0x169')](/"(.*?)"/);return _0x5df5ac?_0x5df5ac[0x1]:_0x2fcef8;}function extractCalleridNumber(_0x44f01b){var _0x46f456=_0x44f01b[_0x889e('0x169')](/<(.*?)>/);return _0x46f456?_0x46f456[0x1]:_0x44f01b;}Dialer[_0x889e('0x1c')][_0x889e('0x16a')]=function(_0x6bd95b,_0x373a0b){var _0x37ca30=this;var _0x1511d7=uuid['v4']();this['actions'][_0x1511d7]=new Action(_0x6bd95b,_0x373a0b,_0x1511d7);return new BPromise(function(_0x4ff96f,_0x51ee93){if(_['isUndefined'](_0x6bd95b)&&typeof _0x6bd95b!=='object'){return _0x51ee93(msgResponse(_0x889e('0x16b'),_0x889e('0x148'),'voiceQueue\x20is\x20undefine'));}if(_[_0x889e('0x87')](_0x373a0b[_0x889e('0x16c')][_0x889e('0x16d')])||_0x373a0b['Contact']['phone']===null){return _0x51ee93(msgResponse(_0x889e('0x16b'),_0x889e('0x148'),_0x889e('0x16e')));}var _0x5b1363={'XMD-CALLERID':_0x37ca30[_0x889e('0xae')][_0x1511d7][_0x889e('0x16f')](),'XMD-AGI':_0x6bd95b[_0x889e('0x10e')]?util[_0x889e('0x7b')](_0x889e('0x170'),ipAgi,_0x6bd95b[_0x889e('0x10e')]):_0x889e('0x171'),'XMD-AGIAFTER':_0x6bd95b['dialQueueProject2']?util[_0x889e('0x7b')](_0x889e('0x170'),ipAgi,_0x6bd95b[_0x889e('0x124')]):_0x889e('0x171'),'XMD-QUEUE':_0x6bd95b[_0x889e('0x4f')]===_0x889e('0x50')?util[_0x889e('0x7b')]('\x22%s,%s%s,,,%s\x22',_0x6bd95b['name'],_0x6bd95b[_0x889e('0x172')]||'',_0x6bd95b[_0x889e('0x117')]?'c':'',_0x6bd95b[_0x889e('0x120')]||0x3):_0x889e('0x171'),'XMD-CONTACTID':_0x373a0b[_0x889e('0xd6')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x37ca30[_0x889e('0xae')][_0x1511d7][_0x889e('0x16f')](),'XMD-AMD':_0x6bd95b[_0x889e('0xe7')]?_0x889e('0x173'):_0x889e('0x171'),'XMD-DESTINATION':_0x889e('0xe6')};if(_0x6bd95b[_0x889e('0xe7')]){_0x5b1363['XMD-AMDINITIALSILENCE']=_0x6bd95b[_0x889e('0x174')]||0x9c4;_0x5b1363[_0x889e('0x175')]=_0x6bd95b[_0x889e('0x176')]||0x5dc;_0x5b1363[_0x889e('0x177')]=_0x6bd95b[_0x889e('0x178')]||0x320;_0x5b1363[_0x889e('0x179')]=_0x6bd95b[_0x889e('0x17a')]||0x1388;_0x5b1363[_0x889e('0x17b')]=_0x6bd95b[_0x889e('0x17c')]||0x64;_0x5b1363[_0x889e('0x17d')]=_0x6bd95b[_0x889e('0x17e')]||0x32;_0x5b1363[_0x889e('0x17f')]=_0x6bd95b[_0x889e('0x180')]||0x3;_0x5b1363[_0x889e('0x181')]=_0x6bd95b[_0x889e('0x182')]||0x100;_0x5b1363[_0x889e('0x183')]=_0x6bd95b[_0x889e('0x184')]||0x1388;}if(_0x6bd95b[_0x889e('0x4f')]===_0x889e('0x50')){_0x5b1363[_0x889e('0x185')]=_0x373a0b[_0x889e('0x10c')];}else{_0x5b1363[_0x889e('0x186')]=_0x373a0b['CampaignId'];}for(var _0x429b0d in _0x373a0b[_0x889e('0x16c')]){if(typeof _0x373a0b[_0x889e('0x16c')][_0x429b0d]!=='undefined'){if(isNotNull(_0x373a0b[_0x889e('0x16c')][_0x429b0d])&&_0x429b0d!=='id'&&_0x429b0d!==_0x889e('0x187')&&_0x429b0d!==_0x889e('0x188')&&_0x429b0d!==_0x889e('0x189')){_0x5b1363[util[_0x889e('0x7b')]('%s%s',_0x889e('0x18a'),_[_0x889e('0x18b')](_0x429b0d))]=_0x373a0b[_0x889e('0x16c')][_0x429b0d];}}}var _0x2950c=_0x37ca30[_0x889e('0xde')](_0x6bd95b[_0x889e('0x78')])?getCallerId(_0x6bd95b[_0x889e('0x78')][_0x889e('0x7a')],_0x6bd95b[_0x889e('0x5e')],_0x6bd95b[_0x889e('0x18c')]>0x0?getCallerIdRandom(_0x6bd95b[_0x889e('0x18d')],_0x6bd95b[_0x889e('0x18c')]):_0x6bd95b[_0x889e('0x18d')]):getCallerId(_['isNil'](_0x6bd95b[_0x889e('0x18e')])?_0x6bd95b['Trunk'][_0x889e('0x7a')]:_0x6bd95b[_0x889e('0x18e')][_0x889e('0x7a')],_0x6bd95b[_0x889e('0x5e')],_0x6bd95b['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x6bd95b[_0x889e('0x18d')],_0x6bd95b[_0x889e('0x18c')]):_0x6bd95b[_0x889e('0x18d')]);if(_0x2950c){_0x5b1363[_0x889e('0x18f')]=_0x37ca30[_0x889e('0xae')][_0x1511d7][_0x889e('0x190')]=extractCalleridName(_0x2950c);_0x5b1363[_0x889e('0x191')]=_0x37ca30['actions'][_0x1511d7][_0x889e('0x192')]=extractCalleridNumber(_0x2950c);}return ami[_0x889e('0xb1')]({'actionid':_0x1511d7,'action':_0x889e('0x16b'),'channel':_0x37ca30['isTrunkReachable'](_0x6bd95b[_0x889e('0x78')])?util[_0x889e('0x7b')](_0x889e('0x193'),_0x6bd95b[_0x889e('0x78')][_0x889e('0x40')],isNotNull(_0x6bd95b[_0x889e('0x5f')])?_0x6bd95b[_0x889e('0x5f')]['trim']()||'':'',_0x6bd95b[_0x889e('0x194')]>0x0?_0x373a0b[_0x889e('0x16c')][_0x889e('0x16d')][_0x889e('0x195')](_0x6bd95b[_0x889e('0x194')]):_0x373a0b[_0x889e('0x16c')][_0x889e('0x16d')]):util[_0x889e('0x7b')](_0x889e('0x193'),_[_0x889e('0xe3')](_0x6bd95b[_0x889e('0x18e')])?_0x6bd95b[_0x889e('0x78')]['name']:_0x6bd95b[_0x889e('0x18e')][_0x889e('0x40')],isNotNull(_0x6bd95b[_0x889e('0x5f')])?_0x6bd95b['dialPrefix'][_0x889e('0x196')]()||'':'',_0x6bd95b[_0x889e('0x194')]>0x0?_0x373a0b['Contact'][_0x889e('0x16d')][_0x889e('0x195')](_0x6bd95b[_0x889e('0x194')]):_0x373a0b['Contact']['phone']),'callerid':_0x2950c,'Exten':_0x889e('0xe6'),'Context':'from-sip','Priority':'1','variable':_0x5b1363,'timeout':(_0x6bd95b[_0x889e('0x197')]||0x1e)*0x3e8,'async':!![],'channelid':_0x1511d7})[_0x889e('0xbe')](function(_0xcf1eb7){return _0x4ff96f(_0xcf1eb7);})[_0x889e('0xb4')](function(_0x5330ae){_0x6bd95b[_0x889e('0x65')]+=0x1;var _0x4b30b6=new History(_0x37ca30[_0x889e('0xae')][_0x1511d7]);logger['error'](util['format'](_0x889e('0x198'),JSON[_0x889e('0x4a')](_0x5330ae)));_0x4b30b6[_0x889e('0xeb')]=0xe;_0x4b30b6['statedesc']='OriginateError';_0x4b30b6[_0x889e('0xaa')]=moment()[_0x889e('0x7b')]('YYYY-MM-DD\x20HH:mm:ss');_0x4b30b6['endtime']=_0x4b30b6[_0x889e('0xaa')];_0x37ca30[_0x889e('0xcf')](_0x4b30b6)[_0x889e('0xb4')](loggerCatch(_0x889e('0x199')));_0x37ca30['moveContactManagedDialer'](_0x4b30b6)['catch'](loggerCatch(_0x889e('0x199')))[_0x889e('0x1f')](function(){delete _0x37ca30[_0x889e('0xae')][_0x1511d7];return _0x51ee93(msgResponse(_0x889e('0x16b'),_0x889e('0x49'),'originate\x20action\x20Error'));});});});};Dialer[_0x889e('0x1c')][_0x889e('0x33')]=function(_0x42559e){var _0x36b07c=this[_0x889e('0xae')][_0x42559e['actionid']];if(_0x36b07c){delete this['actions'][_0x42559e[_0x889e('0x132')]];_0x36b07c[_0x889e('0x11f')]=moment()[_0x889e('0x7b')](_0x889e('0x10b'));var _0x3237bc=_0x36b07c[_0x889e('0x4f')]===_0x889e('0x7d')?this[_0x889e('0x23')][_0x36b07c['queue']]:this[_0x889e('0x22')][_0x36b07c[_0x889e('0x19a')]()];if(!this[_0x889e('0xdc')](_0x42559e[_0x889e('0x19b')])){this[_0x889e('0xb6')](_0x3237bc);return this['callProgressDetecting'](_0x36b07c,_0x3237bc,_0x42559e)[_0x889e('0xb4')](loggerCatch('[callProgressDetecting]\x20'));}this[_0x889e('0x29')][_0x42559e['uniqueid']]=_0x36b07c;}};Dialer[_0x889e('0x1c')][_0x889e('0x19c')]=function(_0xca31bb,_0x35829c,_0xcd3860){var _0x1a9004=new History(_0x35829c);if(_0x1a9004[_0x889e('0xf7')]+_0x1a9004[_0x889e('0xf8')]+_0x1a9004['countnoanswerretry']+_0x1a9004[_0x889e('0xfa')]+_0x1a9004['countdropretry']+_0x1a9004[_0x889e('0xfb')]+_0x1a9004[_0x889e('0xf3')]+_0x1a9004['countagentrejectretry']>=_0xcd3860[_0x889e('0xfd')]-0x1){return!![];}switch(_0xca31bb){case 0x3:if(_0x1a9004['countnoanswerretry']>=_0xcd3860[_0x889e('0x19d')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x1a9004[_0x889e('0xf9')]+=0x1,'scheduledat':moment()[_0x889e('0x101')](_0xcd3860[_0x889e('0x19e')],'minutes')[_0x889e('0x7b')](_0x889e('0x10b')),'ContactId':_0x1a9004['ContactId'],'ListId':_0x1a9004[_0x889e('0xd7')],'VoiceQueueId':_0x1a9004[_0x889e('0x10c')]||undefined,'CampaignId':_0x1a9004[_0x889e('0xd9')]||undefined})[_0x889e('0xb4')](loggerCatch('[rescheduleContact][NoAnswer]'));break;case 0x5:if(_0x1a9004[_0x889e('0xf7')]>=_0xcd3860[_0x889e('0x19f')]-0x1){return!![];}this[_0x889e('0xc4')]({'active':![],'countbusyretry':_0x1a9004['countbusyretry']+=0x1,'scheduledat':moment()[_0x889e('0x101')](_0xcd3860['dialBusyRetryFrequency'],_0x889e('0x10a'))[_0x889e('0x7b')](_0x889e('0x10b')),'ContactId':_0x1a9004['ContactId'],'ListId':_0x1a9004[_0x889e('0xd7')],'VoiceQueueId':_0x1a9004['VoiceQueueId']||undefined,'CampaignId':_0x1a9004['CampaignId']||undefined})[_0x889e('0xb4')](loggerCatch(_0x889e('0x1a0')));break;case 0x8:if(_0x1a9004[_0x889e('0xf8')]>=_0xcd3860[_0x889e('0x1a1')]-0x1){return!![];}this[_0x889e('0xc4')]({'active':![],'countcongestionretry':_0x1a9004[_0x889e('0xf8')]+=0x1,'scheduledat':moment()['add'](_0xcd3860[_0x889e('0x1a2')],'minutes')[_0x889e('0x7b')](_0x889e('0x10b')),'ContactId':_0x1a9004[_0x889e('0xd6')],'ListId':_0x1a9004['ListId'],'VoiceQueueId':_0x1a9004[_0x889e('0x10c')]||undefined,'CampaignId':_0x1a9004[_0x889e('0xd9')]||undefined})[_0x889e('0xb4')](loggerCatch(_0x889e('0x1a3')));break;case 0x0:if(_0x1a9004[_0x889e('0xfa')]>=_0xcd3860[_0x889e('0x1a4')]-0x1){return!![];}else{this[_0x889e('0xc4')]({'active':![],'countnosuchnumberretry':_0x1a9004[_0x889e('0xfa')]+=0x1,'scheduledat':moment()['add'](_0xcd3860[_0x889e('0x1a5')],_0x889e('0x10a'))['format'](_0x889e('0x10b')),'ContactId':_0x1a9004[_0x889e('0xd6')],'ListId':_0x1a9004[_0x889e('0xd7')],'VoiceQueueId':_0x1a9004[_0x889e('0x10c')]||undefined,'CampaignId':_0x1a9004[_0x889e('0xd9')]||undefined})[_0x889e('0xb4')](loggerCatch(_0x889e('0x1a6')));}break;case 0xa:if(_0x1a9004[_0x889e('0x125')]>=_0xcd3860[_0x889e('0x126')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countdropretry':_0x1a9004[_0x889e('0x125')]+=0x1,'scheduledat':moment()[_0x889e('0x101')](_0xcd3860[_0x889e('0x127')],'minutes')['format'](_0x889e('0x10b')),'ContactId':_0x1a9004[_0x889e('0xd6')],'ListId':_0x1a9004[_0x889e('0xd7')],'VoiceQueueId':_0x1a9004[_0x889e('0x10c')]||undefined,'CampaignId':_0x1a9004[_0x889e('0xd9')]||undefined})[_0x889e('0xb4')](loggerCatch(_0x889e('0x128')));break;case 0xb:if(_0x1a9004[_0x889e('0xfb')]>=_0xcd3860['dialAbandonedMaxRetry']-0x1){return!![];}this[_0x889e('0xc4')]({'active':![],'countabandonedretry':_0x1a9004[_0x889e('0xfb')]+=0x1,'scheduledat':moment()[_0x889e('0x101')](_0xcd3860[_0x889e('0x12f')],_0x889e('0x10a'))[_0x889e('0x7b')](_0x889e('0x10b')),'ContactId':_0x1a9004['ContactId'],'ListId':_0x1a9004['ListId'],'VoiceQueueId':_0x1a9004[_0x889e('0x10c')]||undefined,'CampaignId':_0x1a9004['CampaignId']||undefined})[_0x889e('0xb4')](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x1a9004[_0x889e('0xf3')]>=_0xcd3860[_0x889e('0xff')]-0x1){return!![];}this[_0x889e('0xc4')]({'active':![],'countmachineretry':_0x1a9004[_0x889e('0xf3')]+=0x1,'scheduledat':moment()[_0x889e('0x101')](_0xcd3860[_0x889e('0x102')],_0x889e('0x10a'))[_0x889e('0x7b')](_0x889e('0x10b')),'ContactId':_0x1a9004[_0x889e('0xd6')],'ListId':_0x1a9004[_0x889e('0xd7')],'VoiceQueueId':_0x1a9004['VoiceQueueId']||undefined,'CampaignId':_0x1a9004['CampaignId']||undefined})['catch'](loggerCatch(_0x889e('0x103')));break;case 0x14:if(_0x1a9004[_0x889e('0xfc')]>=_0xcd3860['dialAgentRejectMaxRetry']-0x1){return!![];}this[_0x889e('0xc4')]({'active':![],'countagentrejectretry':_0x1a9004['countagentrejectretry']+=0x1,'scheduledat':moment()[_0x889e('0x101')](_0xcd3860['dialAgentRejectRetryFrequency'],_0x889e('0x10a'))['format'](_0x889e('0x10b')),'ContactId':_0x1a9004['ContactId'],'ListId':_0x1a9004[_0x889e('0xd7')],'VoiceQueueId':_0x1a9004[_0x889e('0x10c')]||undefined,'CampaignId':_0x1a9004[_0x889e('0xd9')]||undefined})['catch'](loggerCatch(_0x889e('0x1a7')));break;default:return!![];}};Dialer[_0x889e('0x1c')]['callProgressDetecting']=function(_0x22f38f,_0x52943a,_0x68cce9){var _0x3d16b0=this;var _0x573737=new History(_0x22f38f);return new BPromise(function(_0x15211d,_0x1fe610){if(_[_0x889e('0x87')](_0x52943a)&&typeof _0x52943a!==_0x889e('0x1a8')){return _0x1fe610(msgResponse(_0x889e('0x1a9'),'Failure',_0x889e('0x1aa')));}if(_['isUndefined'](_0x68cce9)&&typeof _0x68cce9!==_0x889e('0x1a8')){return _0x1fe610(msgResponse(_0x889e('0x1a9'),'Failure',_0x889e('0x1ab')));}switch(_0x68cce9[_0x889e('0x114')]){case'0':_0x52943a[_0x889e('0x1ac')]+=0x1;_0x573737[_0x889e('0xeb')]=0x0;_0x573737[_0x889e('0xec')]=_0x889e('0x1ad');_0x573737['countnosuchnumberretry']+=0x1;_0x573737[_0x889e('0xf4')]+=0x1;ami[_0x889e('0x4e')]('custom:agentnosuchnumber',ut[_0x889e('0xee')](_0x22f38f,_0x889e('0x1ae')));_0x3d16b0['createHistory'](_0x573737)['catch'](loggerCatch(_0x889e('0xf6')));if(_0x3d16b0['checkRetriveMax'](0x0,_0x22f38f,_0x52943a)){if(_0x573737[_0x889e('0xfa')]>=_0x52943a[_0x889e('0x1a4')]){_0x3d16b0[_0x889e('0x109')](_0x573737,_0x15211d,_0x1fe610,_0x889e('0x1af'));}else{_0x3d16b0[_0x889e('0xfe')](_0x573737,_0x15211d,_0x1fe610,_0x889e('0x1af'));}}break;case'3':_0x52943a[_0x889e('0x64')]+=0x1;_0x573737[_0x889e('0xeb')]=0x3;_0x573737[_0x889e('0xec')]=_0x889e('0x1b0');_0x573737['countnoanswerretry']+=0x1;_0x573737[_0x889e('0xf4')]+=0x1;ami[_0x889e('0x4e')](_0x889e('0x1b1'),ut['buildObj'](_0x22f38f,_0x889e('0x1b2')));_0x3d16b0[_0x889e('0xcf')](_0x573737)[_0x889e('0xb4')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x3d16b0['checkRetriveMax'](0x3,_0x22f38f,_0x52943a)){if(_0x573737['countnoanswerretry']>=_0x52943a['dialNoAnswerMaxRetry']){_0x3d16b0['createStateFinal'](_0x573737,_0x15211d,_0x1fe610,_0x889e('0x1b3'));}else{_0x3d16b0[_0x889e('0xfe')](_0x573737,_0x15211d,_0x1fe610,_0x889e('0x1b3'));}}break;case'5':_0x52943a[_0x889e('0x1b4')]+=0x1;_0x573737[_0x889e('0xeb')]=0x5;_0x573737[_0x889e('0xec')]=_0x889e('0x1b5');_0x573737[_0x889e('0xf7')]+=0x1;_0x573737[_0x889e('0xf4')]+=0x1;ami['emit'](_0x889e('0x1b6'),ut[_0x889e('0xee')](_0x22f38f,_0x889e('0x1b7')));_0x3d16b0['createHistory'](_0x573737)['catch'](loggerCatch('[syncAgentComplete][createHistory][5]'));if(_0x3d16b0[_0x889e('0x19c')](0x5,_0x22f38f,_0x52943a)){if(_0x573737[_0x889e('0xf7')]>=_0x52943a[_0x889e('0x19f')]){_0x3d16b0[_0x889e('0x109')](_0x573737,_0x15211d,_0x1fe610,_0x889e('0x1b8'));}else{_0x3d16b0[_0x889e('0xfe')](_0x573737,_0x15211d,_0x1fe610,_0x889e('0x1b8'));}}break;case'8':_0x52943a['outboundCongestionCallsDay']+=0x1;_0x573737[_0x889e('0xeb')]=0x8;_0x573737[_0x889e('0xec')]=_0x889e('0x1b9');_0x573737[_0x889e('0xf8')]+=0x1;_0x573737[_0x889e('0xf4')]+=0x1;ami[_0x889e('0x4e')]('custom:agentcongestion',ut[_0x889e('0xee')](_0x22f38f,_0x889e('0x1ba')));_0x3d16b0['createHistory'](_0x573737)['catch'](loggerCatch(_0x889e('0x1bb')));if(_0x3d16b0[_0x889e('0x19c')](0x8,_0x22f38f,_0x52943a)){if(_0x573737[_0x889e('0xf8')]>=_0x52943a['dialCongestionMaxRetry']){_0x3d16b0[_0x889e('0x109')](_0x573737,_0x15211d,_0x1fe610,'reason\x208\x20congestion');}else{_0x3d16b0['stateGlobal'](_0x573737,_0x15211d,_0x1fe610,_0x889e('0x1bc'));}}break;case'11':_0x52943a[_0x889e('0x1bd')]+=0x1;_0x573737[_0x889e('0xeb')]=0xb;_0x573737['statedesc']=_0x889e('0x12c');_0x573737[_0x889e('0xfb')]+=0x1;_0x573737[_0x889e('0xf4')]+=0x1;_0x3d16b0['createHistory'](_0x573737)[_0x889e('0xb4')](loggerCatch(_0x889e('0x131')));if(_0x3d16b0[_0x889e('0x19c')](0xb,_0x22f38f,_0x52943a)){if(_0x573737[_0x889e('0xfb')]>=_0x52943a[_0x889e('0x12e')]){_0x3d16b0[_0x889e('0x109')](_0x573737,_0x15211d,_0x1fe610,_0x889e('0x1be'));}else{_0x3d16b0[_0x889e('0xfe')](_0x573737,_0x15211d,_0x1fe610,'reason\x2011\x20abandoned');}}break;case'20':_0x52943a['outboundRejectCallsDay']+=0x1;_0x573737[_0x889e('0xeb')]=0x14;_0x573737[_0x889e('0xec')]=_0x889e('0x1bf');_0x573737[_0x889e('0xfc')]+=0x1;_0x573737[_0x889e('0xf4')]+=0x1;ami[_0x889e('0x4e')](_0x889e('0x1c0'),ut['buildObj'](_0x22f38f,_0x889e('0x1c1')));_0x3d16b0['createHistory'](_0x573737)[_0x889e('0xb4')](loggerCatch(_0x889e('0x1c2')));if(_0x3d16b0['checkRetriveMax'](0x14,_0x22f38f,_0x52943a)){if(_0x573737[_0x889e('0xfc')]>=_0x52943a[_0x889e('0x1c3')]){_0x3d16b0[_0x889e('0x109')](_0x573737,_0x15211d,_0x1fe610,'reason\x2020\x20agentreject');}else{_0x3d16b0[_0x889e('0xfe')](_0x573737,_0x15211d,_0x1fe610,'reason\x2020\x20agentreject');}}break;default:_0x52943a[_0x889e('0x68')]+=0x1;_0x573737['state']=0xc;_0x573737[_0x889e('0xec')]=_0x68cce9[_0x889e('0x114')];_0x3d16b0[_0x889e('0xcf')](_0x573737)['catch'](loggerCatch(_0x889e('0x1c4')));if(_0x3d16b0[_0x889e('0x19c')](_0x68cce9[_0x889e('0x114')],_0x22f38f,_0x52943a)){if(_0x573737['countbusyretry']+_0x573737[_0x889e('0xf8')]+_0x573737[_0x889e('0xf9')]+_0x573737['countnosuchnumberretry']+_0x573737[_0x889e('0x125')]+_0x573737[_0x889e('0xfb')]+_0x573737[_0x889e('0xf3')]+_0x573737[_0x889e('0xfc')]>=_0x52943a['dialGlobalMaxRetry']){_0x3d16b0[_0x889e('0xfe')](_0x573737,_0x15211d,_0x1fe610,_0x68cce9[_0x889e('0x114')]);}else{_0x3d16b0[_0x889e('0x109')](_0x573737,_0x15211d,_0x1fe610,_0x68cce9[_0x889e('0x114')]);}}}});};Dialer[_0x889e('0x1c')]['stateGlobal']=function(_0x3dc14b,_0x146e50,_0x309123,_0x16ee0f){var _0x280a9b=new Final(_0x3dc14b);_0x280a9b['state']=0xf;_0x280a9b[_0x889e('0xec')]=_0x889e('0x1c5');this[_0x889e('0x109')](_0x280a9b,_0x146e50,_0x309123,_0x16ee0f);};Dialer[_0x889e('0x1c')][_0x889e('0x109')]=function(_0x7fab79,_0x199358,_0xe23534,_0x3857bf){this[_0x889e('0xcd')](_0x7fab79)['then'](function(){return _0x199358(msgResponse(_0x889e('0x1a9'),_0x889e('0xdd'),_0x3857bf));})[_0x889e('0xb4')](function(){return _0xe23534(msgResponse('[moveContactManagedDialer][0]',_0x889e('0x148'),'contact\x20not\x20moved'));});};Dialer[_0x889e('0x1c')][_0x889e('0x1c6')]=function(_0x5cdfd4){var _0x214adf=_0x5cdfd4[_0x889e('0x1c7')]/0x64;var _0x809659=_0x5cdfd4[_0x889e('0x1c8')]/(_0x5cdfd4[_0x889e('0x1c8')]+_0x5cdfd4[_0x889e('0x60')]);var _0x14c9e3=Math[_0x889e('0x1c9')](_0x5cdfd4[_0x889e('0x72')]*(_0x5cdfd4['predictiveIntervalMaxThreshold']/0x64));var _0x3a9425=Math[_0x889e('0x1c9')](_0x5cdfd4['predictiveIntervalAvailable']*(_0x5cdfd4[_0x889e('0x1ca')]/0x64));var _0x4f3d45=_0x5cdfd4[_0x889e('0x53')]+_0x5cdfd4[_0x889e('0x58')];var _0x14006a=Math[_0x889e('0x1cb')](_0x5cdfd4[_0x889e('0x74')]*_0x5cdfd4['erlangAbandonmentRate']*_0x5cdfd4[_0x889e('0x70')]*_0x5cdfd4['predictiveIntervalMultiplicativeFactor']);if(_[_0x889e('0x87')](_0x5cdfd4['startProgressive'])){if(!_['isUndefined'](_0x5cdfd4[_0x889e('0x77')])){_0x5cdfd4['startPredictive']=undefined;loggerPredictive[_0x889e('0x99')](_0x889e('0x1cc'),_0x889e('0x1cd'));}if(!_[_0x889e('0x87')](_0x5cdfd4['handlePredictive'])){loggerPredictive[_0x889e('0x99')](_0x889e('0x1cc'),'check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x5cdfd4[_0x889e('0x94')]);_0x5cdfd4['handlePredictive']=undefined;}_0x5cdfd4['startProgressive']=moment()[_0x889e('0x7b')](_0x889e('0x10b'));loggerPredictive[_0x889e('0x80')](_0x5cdfd4[_0x889e('0x40')],'collection\x20data\x20in\x20progressive\x20at',_0x5cdfd4[_0x889e('0x2b')]);this[_0x889e('0x15d')](_0x5cdfd4,0x1);}else if(ifInterval(_0x5cdfd4[_0x889e('0x1ce')],_0x5cdfd4[_0x889e('0x2b')])){this['handlePower'](_0x5cdfd4,0x1);loggerPredictiveCalls[_0x889e('0x80')]('[startMethodPredictive][StartProgressive][Loop]',_0x5cdfd4[_0x889e('0x2b')],_0x5cdfd4[_0x889e('0x40')]);_0x5cdfd4['erlangCalls']=0x0;_0x5cdfd4[_0x889e('0x6f')]=0x0;}else if(_0x214adf<_0x809659&&_0x5cdfd4[_0x889e('0x1cf')]===_0x889e('0x1d0')){freeVariablesPredictive(_0x5cdfd4);loggerPredictive['info'](_0x889e('0x1d1'),'Dropped\x20calls\x20day',_0x809659,_0x889e('0x2b'),_0x5cdfd4['name']);}else if(_0x14006a<_0x5cdfd4['predictiveIntervalErlangCallsDroppedCalls']&&_0x5cdfd4['dialPredictiveOptimization']===_0x889e('0x1d0')){freeVariablesPredictive(_0x5cdfd4);loggerPredictive[_0x889e('0x80')]('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]',_0x889e('0x1d2'),_0x14006a,_0x889e('0x1d3'),_0x5cdfd4[_0x889e('0x6f')],_0x889e('0x2b'),_0x5cdfd4[_0x889e('0x40')]);}else if(!ifInterval(_0x5cdfd4[_0x889e('0x1ce')],_0x5cdfd4[_0x889e('0x2b')])&&_[_0x889e('0x87')](_0x5cdfd4['startPredictive'])&&!_['isUndefined'](_0x5cdfd4[_0x889e('0x2b')])){_0x5cdfd4[_0x889e('0x77')]=moment()[_0x889e('0x7b')](_0x889e('0x10b'));loggerPredictive[_0x889e('0x80')](_0x5cdfd4['name'],'started\x20in\x20predictive\x20at',_0x5cdfd4['startPredictive']);this[_0x889e('0xc1')](_0x5cdfd4[_0x889e('0x1ce')])[_0x889e('0xbe')](this[_0x889e('0x1d4')](_0x5cdfd4))['then'](mergeDataErlangB(_0x5cdfd4))[_0x889e('0xbe')](this[_0x889e('0x1d5')](_0x5cdfd4))[_0x889e('0xb4')](loggerCatchPredictive(_0x889e('0x1d6'),_0x5cdfd4));}else if(!ifInterval(_0x5cdfd4[_0x889e('0x1ce')],_0x5cdfd4[_0x889e('0x77')])){_0x5cdfd4[_0x889e('0x6f')]=0x0;_0x5cdfd4[_0x889e('0x77')]=moment()[_0x889e('0x7b')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive['info'](_0x5cdfd4[_0x889e('0x40')],_0x889e('0x1d7'),_0x5cdfd4[_0x889e('0x77')]);clearInterval(_0x5cdfd4[_0x889e('0x94')]);_0x5cdfd4['handlePredictive']=undefined;this[_0x889e('0xc1')](_0x5cdfd4[_0x889e('0x1ce')])[_0x889e('0xbe')](this['getDataPredictive'](_0x5cdfd4))['then'](mergeDataErlangB(_0x5cdfd4))['then'](this[_0x889e('0x1d5')](_0x5cdfd4))['catch'](loggerCatchPredictive(_0x889e('0x1d8'),_0x5cdfd4));}else if(_0x5cdfd4[_0x889e('0x72')]&&_0x4f3d45<_0x5cdfd4[_0x889e('0x72')]-_0x3a9425){freeVariablesPredictive(_0x5cdfd4);loggerPredictive[_0x889e('0x80')](_0x5cdfd4[_0x889e('0x40')],_0x889e('0x1d9'),_0x4f3d45,_0x889e('0x1da'),_0x5cdfd4[_0x889e('0x72')],'-',_0x3a9425,'=',_0x5cdfd4[_0x889e('0x72')]-_0x3a9425,')');}else if(_0x5cdfd4[_0x889e('0x72')]&&_0x4f3d45>_0x5cdfd4[_0x889e('0x72')]+_0x14c9e3){freeVariablesPredictive(_0x5cdfd4);loggerPredictive[_0x889e('0x80')](_0x5cdfd4[_0x889e('0x40')],_0x889e('0x1d9'),_0x4f3d45,_0x889e('0x1db'),_0x5cdfd4[_0x889e('0x72')],'+',_0x14c9e3,'=',_0x5cdfd4[_0x889e('0x72')]+_0x14c9e3,')');}};Dialer[_0x889e('0x1c')][_0x889e('0x1d4')]=function(_0x42ff10){var _0x8504cd=this;return function(_0x33111a){return new BPromise(function(_0x1bf8e7,_0x313f4a){_[_0x889e('0x92')](_0x42ff10,_0x33111a[0x0]);if(checkGetDataPredictive(_0x33111a[0x0])){var _0x32cfcc=_0x42ff10[_0x889e('0x72')]=_0x42ff10[_0x889e('0x58')]+_0x42ff10[_0x889e('0x53')];var _0x5c455d=_0x42ff10[_0x889e('0x1ce')]*0x3c;var _0x5e6626=_0x33111a[0x0][_0x889e('0x6b')]+_0x33111a[0x0]['predictiveIntervalAvgHoldtime'];var _0x5e0ad7=(_0x33111a[0x0][_0x889e('0x69')]+_0x33111a[0x0][_0x889e('0x6d')]+_0x33111a[0x0][_0x889e('0x6c')])/_0x33111a[0x0][_0x889e('0x73')];_0x42ff10[_0x889e('0x70')]=_0x5e0ad7>0x0?_0x5e0ad7:0x1;switch(_0x42ff10[_0x889e('0x1cf')]){case _0x889e('0x1d0'):var _0x430eb1=_0x42ff10[_0x889e('0x1c7')]/0x64;return _0x8504cd[_0x889e('0x1dc')](_0x32cfcc,_0x5c455d,_0x5e6626,_0x5e0ad7,_0x430eb1)[_0x889e('0xbe')](function(_0x23f6d7){return _0x1bf8e7(_0x23f6d7);});case _0x889e('0x1dd'):var _0x3f7838=_0x42ff10[_0x889e('0x1c7')]/0x64;return _0x8504cd[_0x889e('0x1de')](_0x32cfcc,_0x5c455d,_0x5e6626,_0x5e0ad7,_0x3f7838)['then'](function(_0x9985ac){return _0x1bf8e7(_0x9985ac);});default:return _0x313f4a(msgResponse(_0x889e('0x1df'),'Failure','Unknown\x20Predictive'));}}else{return _0x313f4a(msgResponse(_0x889e('0x1df'),_0x889e('0x148'),_0x889e('0x1e0')));}});};};Dialer['prototype'][_0x889e('0x1e1')]=function(_0x1991a4){var _0xdafc7a=this;return function(_0x1bdd9c){return new BPromise(function(_0x23f42f,_0x4de9ef){_[_0x889e('0x92')](_0x1991a4,_0x1bdd9c[0x0]);if(checkGetDataPredictive(_0x1bdd9c[0x0])){loggerPredictive['info'](JSON[_0x889e('0x4a')](_0x1bdd9c[0x0]));if(_0x1991a4[_0x889e('0x1cf')]===_0x889e('0x1d0')){return _0xdafc7a[_0x889e('0xcb')](_0x1991a4['id'])['then'](function(_0x3c24d2){var _0x3b7514=_0x1991a4[_0x889e('0x1e2')]-_0x3c24d2[0x0][_0x889e('0x1e3')];var _0x13a4cf=_0x1991a4['dialPredictiveInterval']*0x3c;var _0x15a89e=_0x1bdd9c[0x0]['predictiveIntervalAvgTalktime']+_0x1bdd9c[0x0][_0x889e('0x6a')];var _0x33076b=(_0x1bdd9c[0x0]['predictiveIntervalAnsweredCalls']+_0x1bdd9c[0x0][_0x889e('0x6d')]+_0x1bdd9c[0x0][_0x889e('0x6c')])/_0x1bdd9c[0x0][_0x889e('0x73')];var _0x1469bc=_0x1991a4[_0x889e('0x1c7')]/0x64;_0x1991a4[_0x889e('0x71')]=_0x3c24d2[0x0][_0x889e('0x1e3')]||0x0;_0x1991a4[_0x889e('0x70')]=_0x33076b>0x0?_0x33076b:0x1;return _0xdafc7a[_0x889e('0x1dc')](_0x3b7514,_0x13a4cf,_0x15a89e,_0x33076b,_0x1469bc);})[_0x889e('0xbe')](function(_0x124079){return _0x23f42f(_0x124079);})[_0x889e('0xb4')](function(_0x1bacaf){return _0x4de9ef(msgResponse(_0x889e('0x1e4'),_0x889e('0x148'),JSON[_0x889e('0x4a')](_0x1bacaf)));});}if(_0x1991a4[_0x889e('0x1cf')]===_0x889e('0x1dd')){return _0xdafc7a[_0x889e('0xcb')](_0x1991a4['id'])[_0x889e('0xbe')](function(_0x1a09df){var _0x161886=_0x1991a4[_0x889e('0x1e2')]-_0x1a09df[0x0]['outboundQueuePauses'];var _0x1db75e=_0x1991a4['dialPredictiveInterval']*0x3c;var _0x795e44=_0x1bdd9c[0x0][_0x889e('0x6b')]+_0x1bdd9c[0x0]['predictiveIntervalAvgHoldtime'];var _0x355e9a=(_0x1bdd9c[0x0]['predictiveIntervalAnsweredCalls']+_0x1bdd9c[0x0][_0x889e('0x6d')]+_0x1bdd9c[0x0][_0x889e('0x6c')])/_0x1bdd9c[0x0][_0x889e('0x73')];var _0x30bda3=_0x1991a4[_0x889e('0x1c7')]/0x64;_0x1991a4['predictiveIntervalPauses']=_0x1a09df[0x0][_0x889e('0x1e3')]||0x0;_0x1991a4[_0x889e('0x70')]=_0x355e9a>0x0?_0x355e9a:0x1;return _0xdafc7a[_0x889e('0x1de')](_0x161886,_0x1db75e,_0x795e44,_0x355e9a,_0x30bda3);})[_0x889e('0xbe')](function(_0xb91d62){return _0x23f42f(_0xb91d62);})[_0x889e('0xb4')](function(_0x5c1feb){return _0x4de9ef(msgResponse('[CatchErlangB]',_0x889e('0x148'),JSON['stringify'](_0x5c1feb)));});}}else{return _0x4de9ef(msgResponse(_0x889e('0x1df'),'Failure',_0x889e('0x1e0')));}});};};Dialer[_0x889e('0x1c')][_0x889e('0x1d5')]=function(_0x426d17){var _0x4b0f47=this;return function(){var _0x2098ac=0x0;var _0x3526a9=Math[_0x889e('0x1cb')](_0x426d17[_0x889e('0x75')]*0x3e8);if(_0x3526a9>0x0){_0x3526a9=_0x3526a9<0x64?0x64:_0x3526a9;loggerPredictive[_0x889e('0x80')](_0x426d17['name'],_0x889e('0x1e5'),_0x3526a9,_0x889e('0x4b'));_0x426d17[_0x889e('0x94')]=setInterval(function(){_0x4b0f47[_0x889e('0x94')](_0x426d17);loggerPredictiveCalls[_0x889e('0x80')](_0x889e('0x1e6'),_0x2098ac+=0x1);},_0x3526a9);}else{loggerPredictive[_0x889e('0x80')](_0x426d17['name'],_0x889e('0x1e7'));}};};Dialer['prototype']['checkContactBlack']=function(_0x4f201e,_0x344fae){var _0x34b8fc=this;return function(_0xf97d24){if(_['isEmpty'](_0xf97d24)){if(_[_0x889e('0xe3')](_0x344fae[_0x889e('0xd8')])||!_0x344fae[_0x889e('0x1e8')]){if(_0x4f201e[_0x889e('0x5d')]===_0x889e('0x9')){_0x4f201e[_0x889e('0x139')]=_[_0x889e('0x87')](_0x4f201e[_0x889e('0x139')])?!![]:_0x4f201e[_0x889e('0x139')];var _0x40b01f=uuid['v4']();_0x34b8fc[_0x889e('0xae')][_0x40b01f]=new Action(_0x4f201e,_0x344fae,_0x40b01f);loggerBooked['info'](_0x889e('0x1e9'),_0x40b01f,_0x889e('0x1ea'),JSON[_0x889e('0x4a')](_0x4f201e[_0x889e('0x139')]),_0x889e('0x1eb'),_0x4f201e[_0x889e('0x40')]);if(_0x4f201e[_0x889e('0x139')]){_0x4f201e[_0x889e('0x139')]=![];_0x34b8fc[_0x889e('0x2d')][_0x34b8fc[_0x889e('0xae')][_0x40b01f]['queue']]=[];ami[_0x889e('0xb1')]({'actionid':_0x40b01f,'action':_0x889e('0x1ec'),'queue':_0x4f201e[_0x889e('0x40')]})['catch'](function(){_0x34b8fc[_0x889e('0xb6')](_0x4f201e);_0x34b8fc[_0x889e('0xc4')]({'active':![],'ContactId':_0x34b8fc['actions'][_0x40b01f]['ContactId'],'ListId':_0x34b8fc['actions'][_0x40b01f][_0x889e('0xd7')],'VoiceQueueId':_0x34b8fc[_0x889e('0xae')][_0x40b01f][_0x889e('0x10c')]||undefined,'CampaignId':_0x34b8fc[_0x889e('0xae')][_0x40b01f]['CampaignId']||undefined})[_0x889e('0xb4')](loggerCatch(_0x889e('0x1ed')));delete _0x34b8fc[_0x889e('0xae')][_0x40b01f];});}else{loggerBooked[_0x889e('0x80')]('[booked][checkContactBlack][else]',JSON[_0x889e('0x4a')](_0x4f201e[_0x889e('0x139')]),_0x889e('0x1eb'),_0x4f201e['name']);_0x34b8fc['updateOriginated'](_0x4f201e);_0x34b8fc[_0x889e('0xc4')]({'active':![],'ContactId':_0x34b8fc['actions'][_0x40b01f][_0x889e('0xd6')],'ListId':_0x34b8fc[_0x889e('0xae')][_0x40b01f]['ListId'],'VoiceQueueId':_0x34b8fc[_0x889e('0xae')][_0x40b01f][_0x889e('0x10c')]||undefined,'CampaignId':_0x34b8fc[_0x889e('0xae')][_0x40b01f][_0x889e('0xd9')]||undefined})[_0x889e('0xb4')](loggerCatch(_0x889e('0x1ed')));delete _0x34b8fc[_0x889e('0xae')][_0x40b01f];}}else{return _0x34b8fc[_0x889e('0x16a')](_0x4f201e,_0x344fae);}}else{if(getDiff(_0x344fae[_0x889e('0x1ee')])<_0x4f201e['dialRecallMeTimeout']*0x3c){if(_0x344fae[_0x889e('0x1ef')]&&!_0x344fae['Agent'][_0x889e('0x1f0')]){_0x34b8fc[_0x889e('0x21')][_0x889e('0x13a')](_0x344fae['id'])[_0x889e('0x1f')](function(){_0x34b8fc[_0x889e('0xb6')](_0x4f201e);});}else{_0x34b8fc[_0x889e('0xc5')]({'active':![]},_0x344fae['id'],0x1)[_0x889e('0x1f')](function(){_0x34b8fc[_0x889e('0xb6')](_0x4f201e);});}}else{_0x4f201e['outboundReCallsDay']+=0x1;_0x34b8fc[_0x889e('0xb6')](_0x4f201e);if(_0x4f201e['dialRecallInQueue']){_0x34b8fc['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x344fae[_0x889e('0xd6')],'ListId':_0x344fae[_0x889e('0xd7')],'VoiceQueueId':_0x344fae[_0x889e('0x10c')]||undefined,'CampaignId':_0x344fae['CampaignId']||undefined})[_0x889e('0xb4')](loggerCatch(_0x889e('0x1f1')));_0x34b8fc[_0x889e('0xcf')](createObjHistory(_0x4f201e,_0x344fae,_0x889e('0x1f2'),0x17,_0x889e('0x1f3')))['catch'](loggerCatch(_0x889e('0x1f4')));}else{_0x34b8fc[_0x889e('0xd5')](createObjHistory(_0x4f201e,_0x344fae,'RECALLFAILEDTIMEOUT',0x16,_0x889e('0x1f5')),_0x889e('0x1f6'),_0x889e('0x1f7'));}}}}else{_0x4f201e[_0x889e('0x61')]+=0x1;_0x34b8fc[_0x889e('0xd5')](createObjHistory(_0x4f201e,_0x344fae,_0x889e('0x1f8'),0xd,'Blacklist'),_0x889e('0x1f9'),_0x889e('0x1fa'));throw _0x889e('0x1fb');}};};Dialer[_0x889e('0x1c')][_0x889e('0x15f')]=function(_0x213f6f){var _0x29d9dc=this;var _0x38a57d=_0x213f6f[_0x889e('0x1fc')]-_0x213f6f[_0x889e('0x9d')]-_0x213f6f[_0x889e('0xc8')];emitCampaignSummary(_0x213f6f);if(_0x38a57d>0x0){if(_0x38a57d>this[_0x889e('0x26')]){_0x38a57d=this[_0x889e('0x26')];}_0x213f6f[_0x889e('0xc8')]+=_0x38a57d;this[_0x889e('0xc9')](_0x213f6f['id'],_0x38a57d,_0x213f6f[_0x889e('0x1fd')],_0x213f6f)[_0x889e('0xbe')](function(_0x3ec5ff){_0x213f6f[_0x889e('0xc8')]-=_0x38a57d;_0x213f6f[_0x889e('0xc8')]=_0x213f6f[_0x889e('0xc8')]>0x0?_0x213f6f[_0x889e('0xc8')]:0x0;if(!checkContactEmpty(_0x3ec5ff)){_0x213f6f[_0x889e('0x3e')]='AVAILABLE_CONTACTS_FINISHED';logger[_0x889e('0x80')](_0x889e('0x1fe')+_0x213f6f[_0x889e('0x40')]);}else{_0x213f6f[_0x889e('0x9d')]+=_0x3ec5ff[_0x889e('0x9c')];_0x213f6f[_0x889e('0x3e')]=_0x889e('0x1ff');for(var _0x4cf1a8=0x0;_0x4cf1a8<_0x3ec5ff[_0x889e('0x9c')];_0x4cf1a8+=0x1){_0x213f6f['ivrTotalCallsDays']+=0x1;if(_[_0x889e('0xe3')](_0x3ec5ff[_0x4cf1a8])||_[_0x889e('0xe3')](_0x3ec5ff[_0x4cf1a8][_0x889e('0x16c')])||_[_0x889e('0xe3')](_0x3ec5ff[_0x4cf1a8][_0x889e('0x16c')]['phone'])){_0x29d9dc['emptyContact'](_0x889e('0x200'),_0x213f6f,_0x3ec5ff[_0x4cf1a8]);}else{_0x29d9dc[_0x889e('0xc0')](_['pick'](_0x3ec5ff[_0x4cf1a8],[_0x889e('0xd9'),_0x889e('0x201')]))['then'](_0x29d9dc['checkContactBlack'](_0x213f6f,_0x3ec5ff[_0x4cf1a8]))[_0x889e('0xb4')](_0x29d9dc[_0x889e('0xd2')]('[actionOriginateIvr]\x20',_0x213f6f));}}}})[_0x889e('0xb4')](loggerGetContactDialer('[getContactCampaign2]',_0x213f6f,_0x38a57d));}};Dialer[_0x889e('0x1c')][_0x889e('0x15d')]=function(_0x305af2,_0x544248){var _0x2c40aa=this;var _0x288789=[];var _0x2ca0c9=_0x544248>=0x1?_0x544248:0x1;if(_0x305af2['dialMethod']==='booked'){_0x2ca0c9=0x1;}var _0x3b770c=Math[_0x889e('0x1cb')](_0x305af2[_0x889e('0x53')]*_0x2ca0c9)-_0x305af2[_0x889e('0x9d')]-_0x305af2[_0x889e('0xc8')];emitVoiceQueueSummary(_0x305af2);if(_0x305af2['dialLimitQueue']>0x0){var _0x431d70=_0x305af2[_0x889e('0x202')]-_0x305af2['originated']-_0x305af2[_0x889e('0x58')]-_0x305af2[_0x889e('0xc8')]-_0x305af2['pTalking'];if(_0x3b770c>_0x431d70){_0x3b770c=_0x431d70;}}if(_0x3b770c>0x0){if(_0x305af2[_0x889e('0x5d')]===_0x889e('0x9')){_0x3b770c=0x1;}if(_0x3b770c>this['maxNumberOriginate']){_0x3b770c=this['maxNumberOriginate'];}_0x305af2[_0x889e('0xc8')]+=_0x3b770c;for(var _0x2b9110 in this[_0x889e('0x24')]){if(typeof this['agents'][_0x2b9110]!==_0x889e('0xb0')){if(this[_0x889e('0x24')][_0x2b9110][_0x889e('0xeb')]===_0x889e('0x203')&&this[_0x889e('0x24')][_0x2b9110][_0x889e('0xb2')]===_0x889e('0xdf')){_0x288789[_0x889e('0x136')](this['agents'][_0x2b9110]['id']);}}}this[_0x889e('0xc7')](_0x305af2['id'],_0x288789,_0x3b770c,_0x305af2['dialOrderByScheduledAt'],_0x305af2)['then'](function(_0x31ae3f){_0x305af2[_0x889e('0xc8')]-=_0x3b770c;_0x305af2[_0x889e('0xc8')]=_0x305af2[_0x889e('0xc8')]>0x0?_0x305af2['temp']:0x0;if(!checkContactEmpty(_0x31ae3f)){_0x2c40aa[_0x889e('0xba')](_0x305af2)[_0x889e('0xbe')](sendMessageReschedule(_0x305af2))['catch'](loggerCatch('[countReScheduled]\x20'));}else{_0x305af2[_0x889e('0x9d')]+=_0x31ae3f[_0x889e('0x9c')];_0x305af2[_0x889e('0x3e')]=_0x305af2['dialMethod']==='booked'?'ACTIVE':_0x889e('0x1ff');for(var _0x5bab9e=0x0;_0x5bab9e<_0x31ae3f[_0x889e('0x9c')];_0x5bab9e+=0x1){if(_['isNil'](_0x31ae3f[_0x5bab9e])||_[_0x889e('0xe3')](_0x31ae3f[_0x5bab9e][_0x889e('0x16c')])||_[_0x889e('0xe3')](_0x31ae3f[_0x5bab9e][_0x889e('0x16c')][_0x889e('0x16d')])){_0x2c40aa[_0x889e('0xd3')](_0x889e('0x200'),_0x305af2,_0x31ae3f[_0x5bab9e]);}else{_0x2c40aa[_0x889e('0xbd')](_[_0x889e('0x137')](_0x31ae3f[_0x5bab9e],[_0x889e('0x10c'),_0x889e('0x201')]))[_0x889e('0xbe')](_0x2c40aa[_0x889e('0x204')](_0x305af2,_0x31ae3f[_0x5bab9e]))[_0x889e('0xb4')](_0x2c40aa['loggerHandler']('[actionOriginate]\x20',_0x305af2));}}}})[_0x889e('0xb4')](loggerGetContactDialer(_0x889e('0x205'),_0x305af2,_0x3b770c));}};Dialer[_0x889e('0x1c')]['handlePredictive']=function(_0x2c60ad){if(_0x2c60ad[_0x889e('0x202')]>0x0){var _0x470434=_0x2c60ad[_0x889e('0x202')]-_0x2c60ad[_0x889e('0x9d')]-_0x2c60ad[_0x889e('0x58')];if(_0x470434>0x0){this[_0x889e('0x206')](_0x2c60ad);}else{loggerPredictiveCalls[_0x889e('0x80')](_0x889e('0x207'));}}else{this['tryOriginatePredictive'](_0x2c60ad);}};Dialer['prototype']['tryOriginatePredictive']=function(_0x23e370){var _0x9c995b=this;var _0x36ba94=[];_0x23e370['originated']+=0x1;for(var _0x2550d0 in this[_0x889e('0x24')]){if(typeof this[_0x889e('0x24')][_0x2550d0]!==_0x889e('0xb0')){if(this['agents'][_0x2550d0]['state']===_0x889e('0x203')&&this[_0x889e('0x24')][_0x2550d0]['status']===_0x889e('0xdf')){_0x36ba94[_0x889e('0x136')](this[_0x889e('0x24')][_0x2550d0]['id']);}}}this['getContactDialer'](_0x23e370['id'],_0x36ba94,0x1,_0x23e370['dialOrderByScheduledAt'],_0x23e370)[_0x889e('0xbe')](function(_0x498981){if(!checkContactEmpty(_0x498981)){checkContactLowerLimitOriginate(_0x23e370,0x1,0x0);_0x9c995b[_0x889e('0xba')](_0x23e370)[_0x889e('0xbe')](sendMessageReschedule(_0x23e370))[_0x889e('0xb4')](loggerCatch(_0x889e('0xbc')));}else{_0x23e370[_0x889e('0x3e')]='RUNNING';if(_[_0x889e('0xe3')](_0x498981[0x0])||_[_0x889e('0xe3')](_0x498981[0x0][_0x889e('0x16c')])||_[_0x889e('0xe3')](_0x498981[0x0][_0x889e('0x16c')]['phone'])){_0x9c995b[_0x889e('0xd3')](_0x889e('0x200'),_0x23e370,_0x498981[0x0]);}else{_0x9c995b[_0x889e('0xbd')](_[_0x889e('0x137')](_0x498981[0x0],['VoiceQueueId',_0x889e('0x201')]))[_0x889e('0xbe')](_0x9c995b[_0x889e('0x204')](_0x23e370,_0x498981[0x0]))[_0x889e('0xb4')](_0x9c995b[_0x889e('0xd2')](_0x889e('0x208'),_0x23e370));}}})['catch'](loggerGetContactDialer(_0x889e('0x209'),_0x23e370,0x1));emitVoiceQueueSummary(_0x23e370);};Dialer['prototype'][_0x889e('0x1dc')]=function(_0x18dcb3,_0x58b4be,_0x1b295e,_0x22ca80,_0x50df49,_0x54d68b){loggerPredictive[_0x889e('0x80')]('--------\x20Drop\x20Rate\x20--------');loggerPredictive[_0x889e('0x80')](_0x889e('0x20a'),_0x18dcb3);loggerPredictive[_0x889e('0x80')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x58b4be);loggerPredictive[_0x889e('0x80')](_0x889e('0x20b'),_0x1b295e);loggerPredictive[_0x889e('0x80')](_0x889e('0x20c'),_0x22ca80);loggerPredictive[_0x889e('0x80')](_0x889e('0x20d'),_0x50df49);loggerPredictive[_0x889e('0x80')](_0x889e('0x86'));return new BPromise(function(_0x18fd3e,_0x301680){if(_0x18dcb3<=0x0||isNaN(_0x18dcb3)){return _0x301680(msgResponse(_0x889e('0x20e'),_0x889e('0x49'),_0x889e('0x20f')+_0x18dcb3));}if(_0x1b295e<=0x0||isNaN(_0x1b295e)){return _0x301680(msgResponse('[abandonmentRate]',_0x889e('0x49'),_0x889e('0x210')+_0x1b295e));}if(_0x22ca80<=0x0||isNaN(_0x22ca80)){return _0x301680(msgResponse(_0x889e('0x20e'),'Error',_0x889e('0x211')+_0x22ca80));}if(_0x58b4be<=0x0||isNaN(_0x58b4be)){return _0x301680(msgResponse(_0x889e('0x20e'),_0x889e('0x49'),'interval\x20=\x20'+_0x58b4be));}if(_0x50df49<=0x0||isNaN(_0x50df49)){return _0x301680(msgResponse(_0x889e('0x20e'),_0x889e('0x49'),_0x889e('0x212')+_0x50df49));}_0x54d68b=_0x54d68b||0x0;var _0x444715=0x1/_0x1b295e;var _0x4f3f76=0x0;var _0x11eabe=0x0;var _0x19fadf=0x0;var _0xaac57=0x0;for(var _0x5c2fb7=0x0;_0x19fadf<_0x50df49;_0x5c2fb7+=0x1){_0x11eabe=_0x5c2fb7/_0x58b4be;_0x4f3f76=(_0x22ca80*_0x11eabe+_0x54d68b)/_0x444715;_0x19fadf=erlangb(_0x4f3f76,_0x18dcb3);_0xaac57=_0x4f3f76/_0x18dcb3*(0x1-erlangb(_0x4f3f76,_0x18dcb3));}return _0x18fd3e({'erlangCalls':_0x5c2fb7,'erlangCallToSecond':_0x58b4be/_0x5c2fb7,'erlangAbandonmentRate':_0x19fadf,'erlangBusyFactor':_0xaac57});});};Dialer['prototype'][_0x889e('0x1de')]=function(_0x5ee931,_0x3c1d1a,_0x382064,_0x2236b9,_0x29d1c5,_0x469a11){loggerPredictive['info'](_0x889e('0x213'));loggerPredictive['info'](_0x889e('0x20a'),_0x5ee931);loggerPredictive['info'](_0x889e('0x214'),_0x3c1d1a);loggerPredictive[_0x889e('0x80')]('Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x382064);loggerPredictive['info']('P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2236b9);loggerPredictive[_0x889e('0x80')](_0x889e('0x215'),_0x29d1c5);loggerPredictive[_0x889e('0x80')](_0x889e('0x86'));return new BPromise(function(_0x57ea2c,_0x2a7d5f){if(_0x5ee931<=0x0||isNaN(_0x5ee931)){return _0x2a7d5f(msgResponse(_0x889e('0x216'),_0x889e('0x49'),_0x889e('0x20f')+_0x5ee931));}if(_0x382064<=0x0||isNaN(_0x382064)){return _0x2a7d5f(msgResponse(_0x889e('0x216'),'Error','Ts\x20=\x20'+_0x382064));}if(_0x2236b9<=0x0||isNaN(_0x2236b9)){return _0x2a7d5f(msgResponse(_0x889e('0x216'),_0x889e('0x49'),'p\x20=\x20'+_0x2236b9));}if(_0x3c1d1a<=0x0||isNaN(_0x3c1d1a)){return _0x2a7d5f(msgResponse('[busyFactor]',_0x889e('0x49'),'interval\x20=\x20'+_0x3c1d1a));}if(_0x29d1c5<=0x0||isNaN(_0x29d1c5)){return _0x2a7d5f(msgResponse('[busyFactor]',_0x889e('0x49'),_0x889e('0x217')+_0x29d1c5));}_0x469a11=_0x469a11||0x0;var _0x33827b=0x1/_0x382064;var _0xbe8b08=0x0;var _0x339ed1=0x0;var _0x2c2170=0x0;var _0x50dd8f=0x0;for(var _0x4a6fd3=0x0;_0x50dd8f<_0x29d1c5;_0x4a6fd3+=0x1){_0x339ed1=_0x4a6fd3/_0x3c1d1a;_0xbe8b08=(_0x2236b9*_0x339ed1+_0x469a11)/_0x33827b;_0x2c2170=erlangb(_0xbe8b08,_0x5ee931);_0x50dd8f=_0xbe8b08/_0x5ee931*(0x1-erlangb(_0xbe8b08,_0x5ee931));}return _0x57ea2c({'erlangCalls':_0x4a6fd3,'erlangCallToSecond':_0x3c1d1a/_0x4a6fd3,'erlangAbandonmentRate':_0x2c2170,'erlangBusyFactor':_0x50dd8f});});};module[_0x889e('0x218')]=Dialer;
\ No newline at end of file
index 0680382..d576dde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf058=['countagentrejectretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','droptime','endtime','ringtime','holdtime','talktime','connectedlinename','reason','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','exports','util','lodash','moment','milliseconds','scheduledat','type','queue','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countmachineretry','countnosuchnumberretry','countabandonedretry'];(function(_0x593564,_0x43583f){var _0x211a89=function(_0x40afd6){while(--_0x40afd6){_0x593564['push'](_0x593564['shift']());}};_0x211a89(++_0x43583f);}(_0xf058,0x13f));var _0x8f05=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf058[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x8f05('0x0'));var _=require(_0x8f05('0x1'));var moment=require(_0x8f05('0x2'));function getSeconds(_0x1766d9,_0x34f4ec){var _0xa1d26=moment(_0x1766d9)[_0x8f05('0x3')](0x0);var _0x1cd2b3=moment(_0x34f4ec)['milliseconds'](0x0);return _0xa1d26['diff'](_0x1cd2b3,'seconds');}function QueueCallerAbandon(_0x179ce4,_0x321e54){this[_0x8f05('0x4')]=_0x179ce4[_0x8f05('0x4')];this[_0x8f05('0x5')]=_0x179ce4['type'];this['campaigntype']=_0x179ce4[_0x8f05('0x5')]==='outbound'?_0x8f05('0x6'):_0x179ce4[_0x8f05('0x5')];this[_0x8f05('0x7')]=_0x179ce4[_0x8f05('0x7')];this[_0x8f05('0x8')]=_0x179ce4[_0x8f05('0x8')];this[_0x8f05('0x9')]=_0x179ce4['countnoanswerretry'];this['countglobal']=_0x179ce4[_0x8f05('0x7')]+_0x179ce4['countcongestionretry']+_0x179ce4[_0x8f05('0x9')]+_0x179ce4['countnosuchnumberretry']+_0x179ce4[_0x8f05('0xa')]+_0x179ce4['countabandonedretry']+_0x179ce4[_0x8f05('0xb')]+_0x179ce4['countagentrejectretry'];this[_0x8f05('0xc')]=_0x179ce4['countnosuchnumberretry'];this[_0x8f05('0xa')]=_0x179ce4[_0x8f05('0xa')];this[_0x8f05('0xd')]=_0x179ce4[_0x8f05('0xd')];this['countmachineretry']=_0x179ce4[_0x8f05('0xb')];this[_0x8f05('0xe')]=_0x179ce4[_0x8f05('0xe')];this[_0x8f05('0xf')]=_0x321e54['uniqueid'];this[_0x8f05('0x10')]=_0x179ce4[_0x8f05('0x11')];this[_0x8f05('0x12')]=_0x179ce4['number'];this[_0x8f05('0x13')]=_0x179ce4[_0x8f05('0x13')];this[_0x8f05('0x14')]=_0x179ce4[_0x8f05('0x14')];this[_0x8f05('0x15')]=_0x179ce4[_0x8f05('0x15')];this[_0x8f05('0x16')]=this[_0x8f05('0x15')];this[_0x8f05('0x17')]=getSeconds(_0x179ce4[_0x8f05('0x14')],_0x179ce4[_0x8f05('0x13')]);this[_0x8f05('0x18')]=getSeconds(this[_0x8f05('0x15')],_0x179ce4[_0x8f05('0x14')]);this[_0x8f05('0x19')]=0x0;this[_0x8f05('0x6')]=_0x321e54[_0x8f05('0x6')];this['membername']=_0x321e54[_0x8f05('0x1a')];this[_0x8f05('0x1b')]=_0x321e54[_0x8f05('0x1b')];this[_0x8f05('0x1c')]=_0x179ce4[_0x8f05('0x1c')];this[_0x8f05('0x1d')]=_0x179ce4['callbackuniqueid'];this['callbackat']=_0x179ce4['callbackat'];this[_0x8f05('0x1e')]=_0x179ce4[_0x8f05('0x1e')];this[_0x8f05('0x1f')]=_0x179ce4[_0x8f05('0x1f')];this[_0x8f05('0x20')]=_0x179ce4[_0x8f05('0x20')];this[_0x8f05('0x21')]=_0x179ce4[_0x8f05('0x21')];this['VoiceQueueId']=_0x179ce4[_0x8f05('0x22')];this['CampaignId']=_0x179ce4['CampaignId'];this['originatecalleridnum']=_0x179ce4[_0x8f05('0x23')]||'';this['originatecalleridname']=_0x179ce4['originatecalleridname']||'';}module[_0x8f05('0x24')]=QueueCallerAbandon;
\ No newline at end of file
+var _0x2e96=['seconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridnum','starttime','responsetime','endtime','droptime','ringtime','holdtime','talktime','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','moment','milliseconds'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0x2e96,0x9d));var _0x62e9=function(_0xae1bec,_0x29c660){_0xae1bec=_0xae1bec-0x0;var _0x4a1224=_0x2e96[_0xae1bec];return _0x4a1224;};'use strict';var util=require(_0x62e9('0x0'));var _=require('lodash');var moment=require(_0x62e9('0x1'));function getSeconds(_0x1db56c,_0x317606){var _0x155c6f=moment(_0x1db56c)['milliseconds'](0x0);var _0x318ec5=moment(_0x317606)[_0x62e9('0x2')](0x0);return _0x155c6f['diff'](_0x318ec5,_0x62e9('0x3'));}function QueueCallerAbandon(_0x13cf48,_0x2e718c){this['scheduledat']=_0x13cf48[_0x62e9('0x4')];this[_0x62e9('0x5')]=_0x13cf48[_0x62e9('0x5')];this[_0x62e9('0x6')]=_0x13cf48['type']===_0x62e9('0x7')?_0x62e9('0x8'):_0x13cf48[_0x62e9('0x5')];this[_0x62e9('0x9')]=_0x13cf48[_0x62e9('0x9')];this[_0x62e9('0xa')]=_0x13cf48['countcongestionretry'];this['countnoanswerretry']=_0x13cf48[_0x62e9('0xb')];this[_0x62e9('0xc')]=_0x13cf48[_0x62e9('0x9')]+_0x13cf48[_0x62e9('0xa')]+_0x13cf48[_0x62e9('0xb')]+_0x13cf48[_0x62e9('0xd')]+_0x13cf48[_0x62e9('0xe')]+_0x13cf48[_0x62e9('0xf')]+_0x13cf48[_0x62e9('0x10')]+_0x13cf48[_0x62e9('0x11')];this[_0x62e9('0xd')]=_0x13cf48[_0x62e9('0xd')];this[_0x62e9('0xe')]=_0x13cf48['countdropretry'];this[_0x62e9('0xf')]=_0x13cf48[_0x62e9('0xf')];this[_0x62e9('0x10')]=_0x13cf48['countmachineretry'];this[_0x62e9('0x11')]=_0x13cf48['countagentrejectretry'];this[_0x62e9('0x12')]=_0x2e718c[_0x62e9('0x12')];this['calleridname']=_0x13cf48['name'];this[_0x62e9('0x13')]=_0x13cf48['number'];this[_0x62e9('0x14')]=_0x13cf48[_0x62e9('0x14')];this['responsetime']=_0x13cf48[_0x62e9('0x15')];this['droptime']=_0x13cf48['droptime'];this[_0x62e9('0x16')]=this[_0x62e9('0x17')];this[_0x62e9('0x18')]=getSeconds(_0x13cf48['responsetime'],_0x13cf48[_0x62e9('0x14')]);this[_0x62e9('0x19')]=getSeconds(this[_0x62e9('0x17')],_0x13cf48[_0x62e9('0x15')]);this[_0x62e9('0x1a')]=0x0;this[_0x62e9('0x8')]=_0x2e718c['queue'];this['membername']=_0x2e718c[_0x62e9('0x1b')];this['reason']=_0x2e718c[_0x62e9('0x1c')];this[_0x62e9('0x1d')]=_0x13cf48[_0x62e9('0x1d')];this[_0x62e9('0x1e')]=_0x13cf48[_0x62e9('0x1e')];this[_0x62e9('0x1f')]=_0x13cf48['callbackat'];this[_0x62e9('0x20')]=_0x13cf48[_0x62e9('0x20')];this[_0x62e9('0x21')]=_0x13cf48[_0x62e9('0x21')];this[_0x62e9('0x22')]=_0x13cf48[_0x62e9('0x22')];this['UserId']=_0x13cf48[_0x62e9('0x23')];this[_0x62e9('0x24')]=_0x13cf48['VoiceQueueId'];this[_0x62e9('0x25')]=_0x13cf48['CampaignId'];this['originatecalleridnum']=_0x13cf48[_0x62e9('0x26')]||'';this[_0x62e9('0x27')]=_0x13cf48['originatecalleridname']||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
index c7f6ecd..50b7e1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['fax','localstationid','path','AttachmentId','exports','util','lodash','moment','channel','format','%s/%s/%s','tech','Trunk'];(function(_0x10f49d,_0x123ce0){var _0x197602=function(_0x185fe6){while(--_0x185fe6){_0x10f49d['push'](_0x10f49d['shift']());}};_0x197602(++_0x123ce0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));function Action(_0x5dd881,_0x550fbc,_0x18d5c9){this['uniqueid']=_0x5dd881||undefined;this[_0x0a9e('0x3')]=util[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x550fbc[_0x0a9e('0x6')],_0x550fbc[_0x0a9e('0x7')]['name'],_0x18d5c9[_0x0a9e('0x8')]);this[_0x0a9e('0x9')]=_0x550fbc[_0x0a9e('0x9')];this['headerinfo']=_0x550fbc['headerinfo'];this[_0x0a9e('0xa')]=_0x18d5c9['path'];this['AttachmentId']=_0x18d5c9[_0x0a9e('0xb')];}module[_0x0a9e('0xc')]=Action;
\ No newline at end of file
+var _0xa9e0=['fax','localstationid','path','AttachmentId','exports','util','lodash','moment','channel','format','%s/%s/%s','tech','Trunk'];(function(_0x1bd42d,_0x43c29f){var _0x3b9b39=function(_0x407888){while(--_0x407888){_0x1bd42d['push'](_0x1bd42d['shift']());}};_0x3b9b39(++_0x43c29f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa9e0[_0x5c351c];return _0x26f3b3;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));function Action(_0x5dd881,_0x550fbc,_0x18d5c9){this['uniqueid']=_0x5dd881||undefined;this[_0x0a9e('0x3')]=util[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x550fbc[_0x0a9e('0x6')],_0x550fbc[_0x0a9e('0x7')]['name'],_0x18d5c9[_0x0a9e('0x8')]);this[_0x0a9e('0x9')]=_0x550fbc[_0x0a9e('0x9')];this['headerinfo']=_0x550fbc['headerinfo'];this[_0x0a9e('0xa')]=_0x18d5c9['path'];this['AttachmentId']=_0x18d5c9[_0x0a9e('0xb')];}module[_0x0a9e('0xc')]=Action;
\ No newline at end of file
index cdfc060..0a3d050 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8efe=['filename','remotestationid','pagestransferred','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','create','parse','application/pdf','then','notify','.pdf','catch','\x20notify\x20','error','\x20receiveFax\x20','stringify','merge','response','reason','AttachmentId','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','logger','[Fax][Message][Error][NoUpdate2]','updateStatus','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','faxpages','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','message','Fax\x20received','checkTrunk','Trunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','%s/%s.tif','dir','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','isTrunkReachable','isNil','active','SIP/%s','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','[Fax][checkTrunk][Empty\x20Fax]','Is\x20Valid','exports','util','lodash','bluebird','uuid','moment','path','./util/gs','../../../config/logger','fax','../ami','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','syncNewState','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','from-voip-provider','exten','localstationid','uniqueid','name','info','\x20syncNewchannel\x20','channel','variable','hasOwnProperty','value','channelstate','syncNewExten','operation','status'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x8efe,0x192));var _0xe8ef=function(_0x17fe6c,_0x43e33c){_0x17fe6c=_0x17fe6c-0x0;var _0x3ad7c2=_0x8efe[_0x17fe6c];return _0x3ad7c2;};'use strict';var util=require(_0xe8ef('0x0'));var _=require(_0xe8ef('0x1'));var BPromise=require(_0xe8ef('0x2'));var uuid=require(_0xe8ef('0x3'));var moment=require(_0xe8ef('0x4'));var path=require(_0xe8ef('0x5'));var tiff2pdf=require('tiff2pdf');var gs=require(_0xe8ef('0x6'));var logger=require(_0xe8ef('0x7'))(_0xe8ef('0x8'));var ami=require(_0xe8ef('0x9'));var rpcDb=require('./rpcDb');var Channel=require(_0xe8ef('0xa'));var ut=require(_0xe8ef('0xb'));var Action=require(_0xe8ef('0xc'));var faxAccount=require(_0xe8ef('0xd'));var attachment=require(_0xe8ef('0xe'));var faxMessage=require('../rpc/faxMessage');function Fax(_0x366b81){this[_0xe8ef('0xf')]={};this[_0xe8ef('0x10')]=_0x366b81['faxAccounts'];this[_0xe8ef('0x11')]=_0x366b81['trunks'];this[_0xe8ef('0x12')]={};ami['on'](_0xe8ef('0x13'),this[_0xe8ef('0x14')][_0xe8ef('0x15')](this));ami['on'](_0xe8ef('0x16'),this[_0xe8ef('0x17')][_0xe8ef('0x15')](this));ami['on'](_0xe8ef('0x18'),this[_0xe8ef('0x19')]['bind'](this));ami['on']('newexten',this['syncNewExten'][_0xe8ef('0x15')](this));ami['on'](_0xe8ef('0x1a'),this[_0xe8ef('0x1b')][_0xe8ef('0x15')](this));ami['on'](_0xe8ef('0x1c'),this[_0xe8ef('0x1d')][_0xe8ef('0x15')](this));ami['on'](_0xe8ef('0x1e'),this[_0xe8ef('0x1f')][_0xe8ef('0x15')](this));ami['on'](_0xe8ef('0x20'),this[_0xe8ef('0x21')]['bind'](this));}Fax[_0xe8ef('0x22')][_0xe8ef('0x14')]=function(_0x174414){if(_0x174414['context']===_0xe8ef('0x23')){for(var _0x23ef64 in this[_0xe8ef('0x10')]){if(this[_0xe8ef('0x10')]['hasOwnProperty'](_0x23ef64)){if(_0x174414[_0xe8ef('0x24')]===this[_0xe8ef('0x10')][_0x23ef64][_0xe8ef('0x25')]){this[_0xe8ef('0xf')][_0x174414[_0xe8ef('0x26')]]={};this['channels'][_0x174414[_0xe8ef('0x26')]]['channel']=_0x174414['channel'];this[_0xe8ef('0xf')][_0x174414[_0xe8ef('0x26')]]['id']=this[_0xe8ef('0x10')][_0x23ef64]['id'];this[_0xe8ef('0xf')][_0x174414[_0xe8ef('0x26')]][_0xe8ef('0x27')]=this[_0xe8ef('0x10')][_0x23ef64][_0xe8ef('0x27')];logger[_0xe8ef('0x28')](_0x174414[_0xe8ef('0x26')],_0xe8ef('0x29'));}}}}if(this[_0xe8ef('0x12')][_0x174414['uniqueid']]){this[_0xe8ef('0xf')][_0x174414[_0xe8ef('0x26')]]={};this[_0xe8ef('0xf')][_0x174414[_0xe8ef('0x26')]][_0xe8ef('0x2a')]=_0x174414[_0xe8ef('0x2a')];logger[_0xe8ef('0x28')](_0x174414[_0xe8ef('0x26')],_0xe8ef('0x29'));}};Fax[_0xe8ef('0x22')][_0xe8ef('0x17')]=function(_0x569eb7){if(this[_0xe8ef('0xf')][_0x569eb7[_0xe8ef('0x26')]]){for(var _0x521e41 in _0x569eb7['variable']){if(_0x569eb7[_0xe8ef('0x2b')][_0xe8ef('0x2c')](_0x521e41)){this[_0xe8ef('0xf')][_0x569eb7[_0xe8ef('0x26')]][_0x521e41]=_0x569eb7[_0xe8ef('0x2d')];}}}};Fax[_0xe8ef('0x22')][_0xe8ef('0x19')]=function(_0x42792c){if(this[_0xe8ef('0xf')][_0x42792c[_0xe8ef('0x26')]]){this['channels'][_0x42792c[_0xe8ef('0x26')]][_0xe8ef('0x2e')]=_0x42792c[_0xe8ef('0x2e')];this[_0xe8ef('0xf')][_0x42792c['uniqueid']]['channelstatedesc']=_0x42792c['channelstatedesc'];}};Fax['prototype'][_0xe8ef('0x2f')]=function(_0x119b1f){if(this[_0xe8ef('0xf')][_0x119b1f[_0xe8ef('0x26')]]){for(var _0x256d19 in _0x119b1f[_0xe8ef('0x2b')]){if(_0x119b1f[_0xe8ef('0x2b')][_0xe8ef('0x2c')](_0x256d19)){this['channels'][_0x119b1f[_0xe8ef('0x26')]][_0x256d19]=_0x119b1f[_0xe8ef('0x2d')];}}}};Fax[_0xe8ef('0x22')]['syncFaxStatus']=function(_0x3f9bf6){if(this[_0xe8ef('0xf')][_0x3f9bf6[_0xe8ef('0x26')]]){this[_0xe8ef('0xf')][_0x3f9bf6['uniqueid']]['operation']=_0x3f9bf6[_0xe8ef('0x30')];this[_0xe8ef('0xf')][_0x3f9bf6[_0xe8ef('0x26')]][_0xe8ef('0x31')]=_0x3f9bf6[_0xe8ef('0x31')];this[_0xe8ef('0xf')][_0x3f9bf6['uniqueid']]['localstationid']=_0x3f9bf6[_0xe8ef('0x25')];this[_0xe8ef('0xf')][_0x3f9bf6[_0xe8ef('0x26')]][_0xe8ef('0x32')]=_0x3f9bf6[_0xe8ef('0x32')];logger[_0xe8ef('0x28')](_0x3f9bf6[_0xe8ef('0x26')],'\x20syncFaxStatus\x20');}};Fax[_0xe8ef('0x22')][_0xe8ef('0x1d')]=function(_0x5c38af){var _0x275486=this;if(this['channels'][_0x5c38af['uniqueid']]){var _0x2224a0=this[_0xe8ef('0xf')][_0x5c38af[_0xe8ef('0x26')]]['id'];this['channels'][_0x5c38af[_0xe8ef('0x26')]][_0xe8ef('0x33')]=_0x5c38af[_0xe8ef('0x33')];this[_0xe8ef('0xf')][_0x5c38af[_0xe8ef('0x26')]][_0xe8ef('0x34')]=_0x5c38af[_0xe8ef('0x34')];this[_0xe8ef('0xf')][_0x5c38af[_0xe8ef('0x26')]]['localstationid']=_0x5c38af['localstationid'];this[_0xe8ef('0xf')][_0x5c38af['uniqueid']]['resolution']=_0x5c38af['resolution'];this['channels'][_0x5c38af[_0xe8ef('0x26')]][_0xe8ef('0x35')]=_0x5c38af[_0xe8ef('0x35')];this[_0xe8ef('0xf')][_0x5c38af[_0xe8ef('0x26')]]['filename']=_0x5c38af[_0xe8ef('0x32')];this[_0xe8ef('0xf')][_0x5c38af['uniqueid']][_0xe8ef('0x36')]=_0x5c38af['calleridnum'];if(this[_0xe8ef('0xf')][_0x5c38af[_0xe8ef('0x26')]][_0xe8ef('0x34')]>0x0){tiff2pdf(_0x5c38af['filename'],_0xe8ef('0x37'),function(_0x51fe81){logger[_0xe8ef('0x28')](_0x5c38af[_0xe8ef('0x26')],_0xe8ef('0x38'),_0x51fe81['message']);attachment[_0xe8ef('0x39')]({'name':path[_0xe8ef('0x3a')](_0x5c38af[_0xe8ef('0x32')])[_0xe8ef('0x27')],'basename':path[_0xe8ef('0x3a')](_0x5c38af[_0xe8ef('0x32')])['name']+'.pdf','type':_0xe8ef('0x3b')})[_0xe8ef('0x3c')](function(_0x2d41b5){faxAccount[_0xe8ef('0x3d')](_0x2224a0,{'from':_0x5c38af[_0xe8ef('0x36')],'mapKey':_0xe8ef('0x8'),'body':path[_0xe8ef('0x3a')](_0x5c38af[_0xe8ef('0x32')])[_0xe8ef('0x27')]+_0xe8ef('0x3e'),'AttachmentId':_0x2d41b5['id']})[_0xe8ef('0x3f')](function(_0x2a69dc){logger['error'](_0x5c38af[_0xe8ef('0x26')],_0xe8ef('0x40'),JSON['stringify'](_0x2a69dc));});})['catch'](function(_0x33cdfe){logger[_0xe8ef('0x41')](_0x5c38af['uniqueid'],_0xe8ef('0x42'),JSON[_0xe8ef('0x43')](_0x33cdfe));});});}logger[_0xe8ef('0x28')](_0x5c38af[_0xe8ef('0x26')],'\x20receiveFax\x20');}};Fax[_0xe8ef('0x22')][_0xe8ef('0x21')]=function(_0x18171b){if(this[_0xe8ef('0x12')][_0x18171b['uniqueid']]){_[_0xe8ef('0x44')](this['channels'][_0x18171b['uniqueid']],_['pick'](_0x18171b,[_0xe8ef('0x45'),_0xe8ef('0x46')]));}};function updateStatus(_0x4fb21c){if(_0x4fb21c[_0xe8ef('0x47')]){faxMessage['update'](_0x4fb21c['AttachmentId'],{'failMessage':'SENDING\x20FAILED\x20'})[_0xe8ef('0x3c')](function(_0x55bb0c){ut['logger'](_0xe8ef('0x48'),_0x55bb0c);})[_0xe8ef('0x3f')](function(_0xc37653){ut['logger'](_0xe8ef('0x49'),_0xc37653);});}else{ut[_0xe8ef('0x4a')](_0xe8ef('0x4b'));}}Fax['prototype'][_0xe8ef('0x4c')]=function(_0x46f310,_0x29af8c,_0x1fb9c9){var _0x369c5d=this;var _0x999b3f={};if(_0x29af8c){_0x999b3f={'read':_0x29af8c};}else{_0x999b3f={'failMessage':_0x1fb9c9};}if(this[_0xe8ef('0x12')][_0x46f310][_0xe8ef('0x47')]){faxMessage['update'](this[_0xe8ef('0x12')][_0x46f310][_0xe8ef('0x47')],_0x999b3f)['then'](function(_0x5d4f9a){ut['logger']('[Fax][Message][Updated]',_0x5d4f9a);})[_0xe8ef('0x3f')](function(_0x506d7f){ut[_0xe8ef('0x4a')]('[Fax][Message][NoUpdate1]',_0x506d7f);})[_0xe8ef('0x4d')](function(){delete _0x369c5d[_0xe8ef('0xf')][_0x46f310];delete _0x369c5d[_0xe8ef('0x12')][_0x46f310];});}else{ut['logger'](_0xe8ef('0x4e'));delete this[_0xe8ef('0xf')][_0x46f310];delete this[_0xe8ef('0x12')][_0x46f310];}};Fax[_0xe8ef('0x22')][_0xe8ef('0x1f')]=function(_0x5c4f9a){var _0x3f414e=this;if(this[_0xe8ef('0xf')][_0x5c4f9a[_0xe8ef('0x26')]]){if(this[_0xe8ef('0x12')][_0x5c4f9a['uniqueid']]){this[_0xe8ef('0xf')][_0x5c4f9a[_0xe8ef('0x26')]]['id']=this[_0xe8ef('0x12')][_0x5c4f9a['uniqueid']]['id'];this[_0xe8ef('0xf')][_0x5c4f9a[_0xe8ef('0x26')]]['name']=this[_0xe8ef('0x12')][_0x5c4f9a['uniqueid']][_0xe8ef('0x27')];}logger[_0xe8ef('0x28')](_0x5c4f9a['uniqueid'],this[_0xe8ef('0x12')][_0x5c4f9a[_0xe8ef('0x26')]]?_0xe8ef('0x4f'):'\x20hangup\x20faxRiceive\x20',JSON[_0xe8ef('0x43')](this[_0xe8ef('0xf')][_0x5c4f9a[_0xe8ef('0x26')]]));if(this[_0xe8ef('0x12')][_0x5c4f9a[_0xe8ef('0x26')]]){if(this[_0xe8ef('0xf')][_0x5c4f9a[_0xe8ef('0x26')]][_0xe8ef('0x50')]>0x0&&this[_0xe8ef('0xf')][_0x5c4f9a['uniqueid']]['faxstatus']==='SUCCESS'){this[_0xe8ef('0x4c')](_0x5c4f9a[_0xe8ef('0x26')],!![]);}else{this['updateStatus'](_0x5c4f9a[_0xe8ef('0x26')],![],this[_0xe8ef('0xf')][_0x5c4f9a[_0xe8ef('0x26')]][_0xe8ef('0x51')]?_0xe8ef('0x52')+this[_0xe8ef('0xf')][_0x5c4f9a[_0xe8ef('0x26')]][_0xe8ef('0x51')]:_0xe8ef('0x53'));}}}};Fax['prototype'][_0xe8ef('0x54')]=function(_0x44ddbd){var _0x5a73c1=this;return new BPromise(function(_0x1f0176,_0x228439){_0x5a73c1[_0xe8ef('0x55')](_0x44ddbd,_0x5a73c1['faxAccounts'][_0x44ddbd[_0xe8ef('0x56')]])[_0xe8ef('0x3c')](function(_0x1435bd){ut['logger'](_0xe8ef('0x57'),_0x1435bd);_0x1f0176(ut[_0xe8ef('0x58')](_0xe8ef('0x59')));})[_0xe8ef('0x3f')](function(_0x52eff2){ut[_0xe8ef('0x4a')]('[Fax][execOriginate][failure]',_0x52eff2);updateStatus(_0x44ddbd);_0x228439(ut[_0xe8ef('0x58')]('Fax\x20failed'));});});};Fax['prototype']['checkAfterSend']=function(_0x5a6166){var _0x5aef6a=this;return new BPromise(function(_0x2e231f,_0x581ed9){var _0x172344=_0x5aef6a[_0xe8ef('0x5a')](_0x5aef6a[_0xe8ef('0x10')][_0x5a6166[_0xe8ef('0x56')]][_0xe8ef('0x5b')],_0x5a6166);if(_0x172344[_0xe8ef('0x5c')]){_0x2e231f(ut[_0xe8ef('0x58')](_0xe8ef('0x5d')));}else{_0x581ed9(ut[_0xe8ef('0x58')](_0x172344['message']));}});};function originate(_0x17be2f,_0x23f4c6,_0x56b333){return new BPromise(function(_0x11dd36,_0x2bb9f6){if(_0x56b333){var _0x44a196=util[_0xe8ef('0x5e')](_0xe8ef('0x5f'),path[_0xe8ef('0x3a')](_0x17be2f[_0xe8ef('0x5')])[_0xe8ef('0x27')],_0x17be2f['path']);gs[_0xe8ef('0x60')](_0x44a196)[_0xe8ef('0x3c')](function(){_0x17be2f[_0xe8ef('0x5')]=util[_0xe8ef('0x5e')](_0xe8ef('0x61'),path[_0xe8ef('0x3a')](_0x17be2f['path'])[_0xe8ef('0x62')],path[_0xe8ef('0x3a')](_0x17be2f[_0xe8ef('0x5')])['name']);_0x23f4c6['XMF-PATH']=_0x17be2f[_0xe8ef('0x5')];ut['logger'](_0xe8ef('0x63'),'');ami[_0xe8ef('0x64')](ut[_0xe8ef('0x65')](_0x17be2f,_0x23f4c6))['then'](function(_0x9d447e){_0x11dd36(_0x9d447e);})[_0xe8ef('0x3f')](function(_0x4ef3be){_0x2bb9f6(_0x4ef3be);});})[_0xe8ef('0x3f')](function(_0x16823f){_0x2bb9f6(_0x16823f);});}else{ami[_0xe8ef('0x64')](ut['variablesAction'](_0x17be2f,_0x23f4c6))[_0xe8ef('0x3c')](function(_0x14ceb8){_0x11dd36(_0x14ceb8);})[_0xe8ef('0x3f')](function(_0x1e86bf){_0x2bb9f6(_0x1e86bf);});}});}Fax['prototype'][_0xe8ef('0x55')]=function(_0x12b4b3,_0x217bde){var _0x4f895d=this;return new BPromise(function(_0x538b63,_0x342984){var _0x52fca3=uuid['v4']();var _0x47d146=ut[_0xe8ef('0x66')](_0x12b4b3,_0x217bde);_0x4f895d[_0xe8ef('0x12')][_0x52fca3]=new Action(_0x52fca3,_0x217bde,_0x12b4b3);var _0x578397=_0x4f895d[_0xe8ef('0x12')][_0x52fca3];if(path['parse'](_0x12b4b3[_0xe8ef('0x5')])['ext']===_0xe8ef('0x3e')){originate(_0x578397,_0x47d146,!![])['then'](function(_0x417636){_0x538b63(_0x417636);})[_0xe8ef('0x3f')](function(_0x28e64a){_0x342984(_0x28e64a);});}else{originate(_0x578397,_0x47d146,![])['then'](function(_0x47abbb){_0x538b63(_0x47abbb);})['catch'](function(_0x59e7a7){_0x342984(_0x59e7a7);});}});};Fax[_0xe8ef('0x22')][_0xe8ef('0x67')]=function(_0x459ad3){return!_['isNil'](_0x459ad3)&&!_[_0xe8ef('0x68')](_0x459ad3['name'])&&!_['isNil'](_0x459ad3['active'])&&_0x459ad3[_0xe8ef('0x69')]&&!_[_0xe8ef('0x68')](this[_0xe8ef('0x11')][util[_0xe8ef('0x5e')](_0xe8ef('0x6a'),_0x459ad3[_0xe8ef('0x27')])])&&!_[_0xe8ef('0x68')](this[_0xe8ef('0x11')][util[_0xe8ef('0x5e')](_0xe8ef('0x6a'),_0x459ad3['name'])][_0xe8ef('0x31')])&&(this[_0xe8ef('0x11')][util[_0xe8ef('0x5e')](_0xe8ef('0x6a'),_0x459ad3['name'])]['status']==='reachable'||this[_0xe8ef('0x11')][util[_0xe8ef('0x5e')](_0xe8ef('0x6a'),_0x459ad3[_0xe8ef('0x27')])][_0xe8ef('0x31')]===_0xe8ef('0x6b'));};Fax['prototype'][_0xe8ef('0x5a')]=function(_0x5d0960,_0xa71bd9){if(!this[_0xe8ef('0x67')](_0x5d0960)){ut[_0xe8ef('0x4a')](_0xe8ef('0x6c'),_['isNil'](_0x5d0960)?'':_0x5d0960[_0xe8ef('0x27')]+_0xe8ef('0x6d'));return{'isValid':![],'message':'Trunk\x20not\x20working'};}if(_[_0xe8ef('0x68')](_0xa71bd9['fax'])){ut['logger'](_0xe8ef('0x6e'),JSON[_0xe8ef('0x43')](_0xa71bd9));return{'isValid':![],'message':'Empty\x20Fax'};}if(_['isNil'](_0xa71bd9[_0xe8ef('0x5')])){ut[_0xe8ef('0x4a')]('[Fax][checkTrunk][Empty\x20path]',JSON['stringify'](_0xa71bd9));return{'isValid':![],'message':'Empty\x20path'};}return{'isValid':!![],'message':_0xe8ef('0x6f')};};module[_0xe8ef('0x70')]=Fax;
\ No newline at end of file
+var _0xca35=['faxpages','faxstatus','SUCCESS','SENDING\x20FAILED:\x20','faxstatusstring','SENDING\x20FAILED','execOriginate','FaxAccountId','[Fax][execOriginate][success]','[Fax][execOriginate][failure]','Fax\x20failed','checkTrunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','%s/%s.tif','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','ext','.pdf','isTrunkReachable','isNil','active','trunks','SIP/%s','reachable','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','util','lodash','bluebird','uuid','moment','path','tiff2pdf','./util/gs','../../../config/logger','fax','./rpcDb','./channel','./util/util','./action','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','newchannel','syncNewchannel','bind','varset','newexten','syncNewExten','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','syncOriginateResponse','prototype','context','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','info','actions','\x20syncNewchannel\x20','variable','value','syncNewState','channelstate','channelstatedesc','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','transferrate','calleridnum','\x20result\x20conversion\x20file\x20','message','create','parse','name','application/pdf','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','merge','pick','reason','update','SENDING\x20FAILED\x20','then','[Fax][Message][Error][Updated]','logger','[Fax][Message][Error][NoUpdate1]','updateStatus','AttachmentId','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20'];(function(_0x2f0b9c,_0x537f55){var _0x3c1497=function(_0x5be3c6){while(--_0x5be3c6){_0x2f0b9c['push'](_0x2f0b9c['shift']());}};_0x3c1497(++_0x537f55);}(_0xca35,0x110));var _0x5ca3=function(_0x528497,_0x147e87){_0x528497=_0x528497-0x0;var _0x392d59=_0xca35[_0x528497];return _0x392d59;};'use strict';var util=require(_0x5ca3('0x0'));var _=require(_0x5ca3('0x1'));var BPromise=require(_0x5ca3('0x2'));var uuid=require(_0x5ca3('0x3'));var moment=require(_0x5ca3('0x4'));var path=require(_0x5ca3('0x5'));var tiff2pdf=require(_0x5ca3('0x6'));var gs=require(_0x5ca3('0x7'));var logger=require(_0x5ca3('0x8'))(_0x5ca3('0x9'));var ami=require('../ami');var rpcDb=require(_0x5ca3('0xa'));var Channel=require(_0x5ca3('0xb'));var ut=require(_0x5ca3('0xc'));var Action=require(_0x5ca3('0xd'));var faxAccount=require('../rpc/faxAccount');var attachment=require(_0x5ca3('0xe'));var faxMessage=require(_0x5ca3('0xf'));function Fax(_0x50aa1b){this[_0x5ca3('0x10')]={};this[_0x5ca3('0x11')]=_0x50aa1b['faxAccounts'];this['trunks']=_0x50aa1b['trunks'];this['actions']={};ami['on'](_0x5ca3('0x12'),this[_0x5ca3('0x13')][_0x5ca3('0x14')](this));ami['on'](_0x5ca3('0x15'),this['syncVarSet'][_0x5ca3('0x14')](this));ami['on']('newstate',this['syncNewState'][_0x5ca3('0x14')](this));ami['on'](_0x5ca3('0x16'),this[_0x5ca3('0x17')][_0x5ca3('0x14')](this));ami['on']('faxstatus',this[_0x5ca3('0x18')][_0x5ca3('0x14')](this));ami['on'](_0x5ca3('0x19'),this[_0x5ca3('0x1a')][_0x5ca3('0x14')](this));ami['on'](_0x5ca3('0x1b'),this[_0x5ca3('0x1c')][_0x5ca3('0x14')](this));ami['on']('originateresponse',this[_0x5ca3('0x1d')][_0x5ca3('0x14')](this));}Fax[_0x5ca3('0x1e')][_0x5ca3('0x13')]=function(_0x51be13){if(_0x51be13[_0x5ca3('0x1f')]===_0x5ca3('0x20')){for(var _0x2547d2 in this[_0x5ca3('0x11')]){if(this[_0x5ca3('0x11')][_0x5ca3('0x21')](_0x2547d2)){if(_0x51be13[_0x5ca3('0x22')]===this[_0x5ca3('0x11')][_0x2547d2][_0x5ca3('0x23')]){this[_0x5ca3('0x10')][_0x51be13[_0x5ca3('0x24')]]={};this[_0x5ca3('0x10')][_0x51be13['uniqueid']][_0x5ca3('0x25')]=_0x51be13[_0x5ca3('0x25')];this[_0x5ca3('0x10')][_0x51be13[_0x5ca3('0x24')]]['id']=this[_0x5ca3('0x11')][_0x2547d2]['id'];this['channels'][_0x51be13['uniqueid']]['name']=this[_0x5ca3('0x11')][_0x2547d2]['name'];logger[_0x5ca3('0x26')](_0x51be13[_0x5ca3('0x24')],'\x20syncNewchannel\x20');}}}}if(this[_0x5ca3('0x27')][_0x51be13['uniqueid']]){this[_0x5ca3('0x10')][_0x51be13[_0x5ca3('0x24')]]={};this[_0x5ca3('0x10')][_0x51be13[_0x5ca3('0x24')]]['channel']=_0x51be13['channel'];logger[_0x5ca3('0x26')](_0x51be13['uniqueid'],_0x5ca3('0x28'));}};Fax[_0x5ca3('0x1e')]['syncVarSet']=function(_0x158c83){if(this[_0x5ca3('0x10')][_0x158c83[_0x5ca3('0x24')]]){for(var _0x3052a0 in _0x158c83[_0x5ca3('0x29')]){if(_0x158c83[_0x5ca3('0x29')]['hasOwnProperty'](_0x3052a0)){this[_0x5ca3('0x10')][_0x158c83[_0x5ca3('0x24')]][_0x3052a0]=_0x158c83[_0x5ca3('0x2a')];}}}};Fax[_0x5ca3('0x1e')][_0x5ca3('0x2b')]=function(_0x55c516){if(this[_0x5ca3('0x10')][_0x55c516[_0x5ca3('0x24')]]){this[_0x5ca3('0x10')][_0x55c516[_0x5ca3('0x24')]][_0x5ca3('0x2c')]=_0x55c516[_0x5ca3('0x2c')];this[_0x5ca3('0x10')][_0x55c516[_0x5ca3('0x24')]][_0x5ca3('0x2d')]=_0x55c516[_0x5ca3('0x2d')];}};Fax[_0x5ca3('0x1e')][_0x5ca3('0x17')]=function(_0x5d922f){if(this[_0x5ca3('0x10')][_0x5d922f[_0x5ca3('0x24')]]){for(var _0x46a84d in _0x5d922f[_0x5ca3('0x29')]){if(_0x5d922f[_0x5ca3('0x29')]['hasOwnProperty'](_0x46a84d)){this[_0x5ca3('0x10')][_0x5d922f[_0x5ca3('0x24')]][_0x46a84d]=_0x5d922f['value'];}}}};Fax['prototype'][_0x5ca3('0x18')]=function(_0x3c9ebd){if(this[_0x5ca3('0x10')][_0x3c9ebd[_0x5ca3('0x24')]]){this['channels'][_0x3c9ebd['uniqueid']][_0x5ca3('0x2e')]=_0x3c9ebd[_0x5ca3('0x2e')];this[_0x5ca3('0x10')][_0x3c9ebd[_0x5ca3('0x24')]]['status']=_0x3c9ebd[_0x5ca3('0x2f')];this[_0x5ca3('0x10')][_0x3c9ebd[_0x5ca3('0x24')]][_0x5ca3('0x23')]=_0x3c9ebd[_0x5ca3('0x23')];this['channels'][_0x3c9ebd[_0x5ca3('0x24')]][_0x5ca3('0x30')]=_0x3c9ebd[_0x5ca3('0x30')];logger['info'](_0x3c9ebd[_0x5ca3('0x24')],_0x5ca3('0x31'));}};Fax[_0x5ca3('0x1e')][_0x5ca3('0x1a')]=function(_0x1124eb){var _0x3559e1=this;if(this[_0x5ca3('0x10')][_0x1124eb[_0x5ca3('0x24')]]){var _0x72a285=this[_0x5ca3('0x10')][_0x1124eb[_0x5ca3('0x24')]]['id'];this[_0x5ca3('0x10')][_0x1124eb[_0x5ca3('0x24')]][_0x5ca3('0x32')]=_0x1124eb['remotestationid'];this[_0x5ca3('0x10')][_0x1124eb['uniqueid']][_0x5ca3('0x33')]=_0x1124eb['pagestransferred'];this[_0x5ca3('0x10')][_0x1124eb[_0x5ca3('0x24')]]['localstationid']=_0x1124eb['localstationid'];this['channels'][_0x1124eb[_0x5ca3('0x24')]]['resolution']=_0x1124eb['resolution'];this[_0x5ca3('0x10')][_0x1124eb[_0x5ca3('0x24')]][_0x5ca3('0x34')]=_0x1124eb['transferrate'];this['channels'][_0x1124eb[_0x5ca3('0x24')]]['filename']=_0x1124eb['filename'];this[_0x5ca3('0x10')][_0x1124eb['uniqueid']]['calleridnum']=_0x1124eb[_0x5ca3('0x35')];if(this[_0x5ca3('0x10')][_0x1124eb[_0x5ca3('0x24')]][_0x5ca3('0x33')]>0x0){tiff2pdf(_0x1124eb[_0x5ca3('0x30')],'/var/opt/motion2/server/files/attachments/',function(_0x514cab){logger[_0x5ca3('0x26')](_0x1124eb[_0x5ca3('0x24')],_0x5ca3('0x36'),_0x514cab[_0x5ca3('0x37')]);attachment[_0x5ca3('0x38')]({'name':path[_0x5ca3('0x39')](_0x1124eb['filename'])['name'],'basename':path[_0x5ca3('0x39')](_0x1124eb[_0x5ca3('0x30')])[_0x5ca3('0x3a')]+'.pdf','type':_0x5ca3('0x3b')})['then'](function(_0x333564){faxAccount['notify'](_0x72a285,{'from':_0x1124eb[_0x5ca3('0x35')],'mapKey':_0x5ca3('0x9'),'body':path[_0x5ca3('0x39')](_0x1124eb['filename'])[_0x5ca3('0x3a')]+'.pdf','AttachmentId':_0x333564['id']})[_0x5ca3('0x3c')](function(_0x22a0e8){logger[_0x5ca3('0x3d')](_0x1124eb[_0x5ca3('0x24')],_0x5ca3('0x3e'),JSON[_0x5ca3('0x3f')](_0x22a0e8));});})[_0x5ca3('0x3c')](function(_0x4a69bd){logger['error'](_0x1124eb['uniqueid'],_0x5ca3('0x40'),JSON['stringify'](_0x4a69bd));});});}logger[_0x5ca3('0x26')](_0x1124eb['uniqueid'],_0x5ca3('0x40'));}};Fax['prototype'][_0x5ca3('0x1d')]=function(_0xf1b049){if(this['actions'][_0xf1b049[_0x5ca3('0x24')]]){_[_0x5ca3('0x41')](this[_0x5ca3('0x10')][_0xf1b049[_0x5ca3('0x24')]],_[_0x5ca3('0x42')](_0xf1b049,['response',_0x5ca3('0x43')]));}};function updateStatus(_0x4230a1){if(_0x4230a1['AttachmentId']){faxMessage[_0x5ca3('0x44')](_0x4230a1['AttachmentId'],{'failMessage':_0x5ca3('0x45')})[_0x5ca3('0x46')](function(_0xf58305){ut['logger'](_0x5ca3('0x47'),_0xf58305);})[_0x5ca3('0x3c')](function(_0x3fd845){ut[_0x5ca3('0x48')](_0x5ca3('0x49'),_0x3fd845);});}else{ut['logger']('[Fax][Message][Error][NoUpdate2]');}}Fax['prototype'][_0x5ca3('0x4a')]=function(_0x499042,_0x4c4d94,_0x12b67c){var _0x1210bd=this;var _0x3379d4={};if(_0x4c4d94){_0x3379d4={'read':_0x4c4d94};}else{_0x3379d4={'failMessage':_0x12b67c};}if(this['actions'][_0x499042][_0x5ca3('0x4b')]){faxMessage['update'](this['actions'][_0x499042][_0x5ca3('0x4b')],_0x3379d4)[_0x5ca3('0x46')](function(_0x273e7f){ut[_0x5ca3('0x48')](_0x5ca3('0x4c'),_0x273e7f);})[_0x5ca3('0x3c')](function(_0x383317){ut[_0x5ca3('0x48')](_0x5ca3('0x4d'),_0x383317);})[_0x5ca3('0x4e')](function(){delete _0x1210bd[_0x5ca3('0x10')][_0x499042];delete _0x1210bd[_0x5ca3('0x27')][_0x499042];});}else{ut[_0x5ca3('0x48')](_0x5ca3('0x4f'));delete this[_0x5ca3('0x10')][_0x499042];delete this['actions'][_0x499042];}};Fax[_0x5ca3('0x1e')][_0x5ca3('0x1c')]=function(_0x323080){var _0x371233=this;if(this['channels'][_0x323080[_0x5ca3('0x24')]]){if(this[_0x5ca3('0x27')][_0x323080[_0x5ca3('0x24')]]){this['channels'][_0x323080[_0x5ca3('0x24')]]['id']=this[_0x5ca3('0x27')][_0x323080[_0x5ca3('0x24')]]['id'];this[_0x5ca3('0x10')][_0x323080['uniqueid']][_0x5ca3('0x3a')]=this[_0x5ca3('0x27')][_0x323080[_0x5ca3('0x24')]][_0x5ca3('0x3a')];}logger['info'](_0x323080['uniqueid'],this[_0x5ca3('0x27')][_0x323080[_0x5ca3('0x24')]]?_0x5ca3('0x50'):_0x5ca3('0x51'),JSON[_0x5ca3('0x3f')](this[_0x5ca3('0x10')][_0x323080['uniqueid']]));if(this[_0x5ca3('0x27')][_0x323080[_0x5ca3('0x24')]]){if(this[_0x5ca3('0x10')][_0x323080['uniqueid']][_0x5ca3('0x52')]>0x0&&this[_0x5ca3('0x10')][_0x323080[_0x5ca3('0x24')]][_0x5ca3('0x53')]===_0x5ca3('0x54')){this[_0x5ca3('0x4a')](_0x323080[_0x5ca3('0x24')],!![]);}else{this['updateStatus'](_0x323080[_0x5ca3('0x24')],![],this[_0x5ca3('0x10')][_0x323080['uniqueid']]['faxstatusstring']?_0x5ca3('0x55')+this[_0x5ca3('0x10')][_0x323080['uniqueid']][_0x5ca3('0x56')]:_0x5ca3('0x57'));}}}};Fax[_0x5ca3('0x1e')]['send']=function(_0x68c5e6){var _0x12b41c=this;return new BPromise(function(_0x2c360b,_0x23ba67){_0x12b41c[_0x5ca3('0x58')](_0x68c5e6,_0x12b41c['faxAccounts'][_0x68c5e6[_0x5ca3('0x59')]])[_0x5ca3('0x46')](function(_0x277992){ut[_0x5ca3('0x48')](_0x5ca3('0x5a'),_0x277992);_0x2c360b(ut['message']('Fax\x20received'));})['catch'](function(_0x291294){ut[_0x5ca3('0x48')](_0x5ca3('0x5b'),_0x291294);updateStatus(_0x68c5e6);_0x23ba67(ut[_0x5ca3('0x37')](_0x5ca3('0x5c')));});});};Fax[_0x5ca3('0x1e')]['checkAfterSend']=function(_0x481d67){var _0x4efe33=this;return new BPromise(function(_0x26472c,_0x68ce65){var _0x5ba449=_0x4efe33[_0x5ca3('0x5d')](_0x4efe33[_0x5ca3('0x11')][_0x481d67[_0x5ca3('0x59')]]['Trunk'],_0x481d67);if(_0x5ba449[_0x5ca3('0x5e')]){_0x26472c(ut[_0x5ca3('0x37')](_0x5ca3('0x5f')));}else{_0x68ce65(ut[_0x5ca3('0x37')](_0x5ba449[_0x5ca3('0x37')]));}});};function originate(_0xe82051,_0x1474d2,_0x35166f){return new BPromise(function(_0x52e262,_0x1e4d8e){if(_0x35166f){var _0x21b5ba=util[_0x5ca3('0x60')](_0x5ca3('0x61'),path[_0x5ca3('0x39')](_0xe82051[_0x5ca3('0x5')])[_0x5ca3('0x3a')],_0xe82051[_0x5ca3('0x5')]);gs[_0x5ca3('0x62')](_0x21b5ba)[_0x5ca3('0x46')](function(){_0xe82051['path']=util['format'](_0x5ca3('0x63'),path[_0x5ca3('0x39')](_0xe82051[_0x5ca3('0x5')])['dir'],path[_0x5ca3('0x39')](_0xe82051[_0x5ca3('0x5')])[_0x5ca3('0x3a')]);_0x1474d2[_0x5ca3('0x64')]=_0xe82051[_0x5ca3('0x5')];ut[_0x5ca3('0x48')](_0x5ca3('0x65'),'');ami[_0x5ca3('0x66')](ut[_0x5ca3('0x67')](_0xe82051,_0x1474d2))[_0x5ca3('0x46')](function(_0x74d923){_0x52e262(_0x74d923);})[_0x5ca3('0x3c')](function(_0x1a7ff4){_0x1e4d8e(_0x1a7ff4);});})[_0x5ca3('0x3c')](function(_0x290522){_0x1e4d8e(_0x290522);});}else{ami['Action'](ut['variablesAction'](_0xe82051,_0x1474d2))[_0x5ca3('0x46')](function(_0x2862b6){_0x52e262(_0x2862b6);})[_0x5ca3('0x3c')](function(_0x2881cd){_0x1e4d8e(_0x2881cd);});}});}Fax[_0x5ca3('0x1e')][_0x5ca3('0x58')]=function(_0x335e7c,_0x340d3e){var _0x4ed6bf=this;return new BPromise(function(_0x19db41,_0x1d9c34){var _0x493811=uuid['v4']();var _0x18105c=ut['addVariables'](_0x335e7c,_0x340d3e);_0x4ed6bf['actions'][_0x493811]=new Action(_0x493811,_0x340d3e,_0x335e7c);var _0x1bb6f5=_0x4ed6bf[_0x5ca3('0x27')][_0x493811];if(path['parse'](_0x335e7c[_0x5ca3('0x5')])[_0x5ca3('0x68')]===_0x5ca3('0x69')){originate(_0x1bb6f5,_0x18105c,!![])[_0x5ca3('0x46')](function(_0x4c10c7){_0x19db41(_0x4c10c7);})[_0x5ca3('0x3c')](function(_0x3cacb2){_0x1d9c34(_0x3cacb2);});}else{originate(_0x1bb6f5,_0x18105c,![])[_0x5ca3('0x46')](function(_0x4fd42e){_0x19db41(_0x4fd42e);})['catch'](function(_0x23bfba){_0x1d9c34(_0x23bfba);});}});};Fax[_0x5ca3('0x1e')][_0x5ca3('0x6a')]=function(_0x418b07){return!_[_0x5ca3('0x6b')](_0x418b07)&&!_[_0x5ca3('0x6b')](_0x418b07[_0x5ca3('0x3a')])&&!_['isNil'](_0x418b07[_0x5ca3('0x6c')])&&_0x418b07['active']&&!_[_0x5ca3('0x6b')](this[_0x5ca3('0x6d')][util[_0x5ca3('0x60')](_0x5ca3('0x6e'),_0x418b07[_0x5ca3('0x3a')])])&&!_['isNil'](this[_0x5ca3('0x6d')][util[_0x5ca3('0x60')]('SIP/%s',_0x418b07[_0x5ca3('0x3a')])]['status'])&&(this[_0x5ca3('0x6d')][util[_0x5ca3('0x60')]('SIP/%s',_0x418b07[_0x5ca3('0x3a')])]['status']===_0x5ca3('0x6f')||this[_0x5ca3('0x6d')][util[_0x5ca3('0x60')](_0x5ca3('0x6e'),_0x418b07[_0x5ca3('0x3a')])]['status']==='unmonitored');};Fax[_0x5ca3('0x1e')][_0x5ca3('0x5d')]=function(_0x9cf85e,_0x2dbbdd){if(!this[_0x5ca3('0x6a')](_0x9cf85e)){ut[_0x5ca3('0x48')](_0x5ca3('0x70'),_[_0x5ca3('0x6b')](_0x9cf85e)?'':_0x9cf85e[_0x5ca3('0x3a')]+_0x5ca3('0x71'));return{'isValid':![],'message':_0x5ca3('0x72')};}if(_[_0x5ca3('0x6b')](_0x2dbbdd[_0x5ca3('0x9')])){ut['logger']('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0x5ca3('0x3f')](_0x2dbbdd));return{'isValid':![],'message':_0x5ca3('0x73')};}if(_['isNil'](_0x2dbbdd[_0x5ca3('0x5')])){ut[_0x5ca3('0x48')](_0x5ca3('0x74'),JSON[_0x5ca3('0x3f')](_0x2dbbdd));return{'isValid':![],'message':_0x5ca3('0x75')};}return{'isValid':!![],'message':'Is\x20Valid'};};module['exports']=Fax;
\ No newline at end of file
index 6b2b3bd..1202df6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1e2=['../rpc/faxAccount','error','inspect','notify','resolve','then','[Notify]\x20','util','bluebird','../../../config/logger'];(function(_0xc51450,_0x33470c){var _0x1b0be2=function(_0x3fd815){while(--_0x3fd815){_0xc51450['push'](_0xc51450['shift']());}};_0x1b0be2(++_0x33470c);}(_0xc1e2,0xbb));var _0x2c1e=function(_0x4d1377,_0x2fd6e3){_0x4d1377=_0x4d1377-0x0;var _0x1fac77=_0xc1e2[_0x4d1377];return _0x1fac77;};'use strict';var util=require(_0x2c1e('0x0'));var BPromise=require(_0x2c1e('0x1'));var logger=require(_0x2c1e('0x2'))('preview');var _=require('lodash');var faxAccount=require(_0x2c1e('0x3'));function loggerCatch(_0x1d75d9){return function(_0x398f54){logger[_0x2c1e('0x4')](_0x1d75d9,util[_0x2c1e('0x5')](_0x398f54,{'showHidden':![],'depth':null}));};}exports[_0x2c1e('0x6')]=function(_0x11a086,_0x56d876){return BPromise[_0x2c1e('0x7')]()[_0x2c1e('0x8')](faxAccount[_0x2c1e('0x6')](_0x11a086,_0x56d876))['catch'](loggerCatch(_0x2c1e('0x9')));};
\ No newline at end of file
+var _0xf936=['[Notify]\x20','util','../../../config/logger','lodash','error','notify','then','catch'];(function(_0x1c9a37,_0x5bf9b0){var _0x2c60e7=function(_0x4e26d4){while(--_0x4e26d4){_0x1c9a37['push'](_0x1c9a37['shift']());}};_0x2c60e7(++_0x5bf9b0);}(_0xf936,0x121));var _0x6f93=function(_0x3a5d4e,_0x51a68c){_0x3a5d4e=_0x3a5d4e-0x0;var _0x28fa47=_0xf936[_0x3a5d4e];return _0x28fa47;};'use strict';var util=require(_0x6f93('0x0'));var BPromise=require('bluebird');var logger=require(_0x6f93('0x1'))('preview');var _=require(_0x6f93('0x2'));var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0x54deac){return function(_0x50563b){logger[_0x6f93('0x3')](_0x54deac,util['inspect'](_0x50563b,{'showHidden':![],'depth':null}));};}exports[_0x6f93('0x4')]=function(_0x25b373,_0x111f82){return BPromise['resolve']()[_0x6f93('0x5')](faxAccount['notify'](_0x25b373,_0x111f82))[_0x6f93('0x6')](loggerCatch(_0x6f93('0x7')));};
\ No newline at end of file
index 55f5881..c724c34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a93=['inspect','util','../../../../config/logger','fax','child_process','exec','execute','info','Exec\x20gs','\x20Error\x20:'];(function(_0x15fbde,_0x5098a1){var _0x5786a5=function(_0x2c3524){while(--_0x2c3524){_0x15fbde['push'](_0x15fbde['shift']());}};_0x5786a5(++_0x5098a1);}(_0x5a93,0x15f));var _0x35a9=function(_0x54a3ba,_0x1c0f27){_0x54a3ba=_0x54a3ba-0x0;var _0x2bd8e1=_0x5a93[_0x54a3ba];return _0x2bd8e1;};'use strict';var util=require(_0x35a9('0x0'));var logger=require(_0x35a9('0x1'))(_0x35a9('0x2'));var BPromise=require('bluebird');var exec=require(_0x35a9('0x3'))[_0x35a9('0x4')];exports[_0x35a9('0x5')]=function(_0x195b02){return new BPromise(function(_0x3812b9,_0xe1a115){exec(_0x195b02,function(_0x54e7ee,_0xc0ce20,_0x127139){logger[_0x35a9('0x6')](_0x35a9('0x7'),_0xc0ce20);if(_0x54e7ee){logger['info'](_0x35a9('0x7'),_0x35a9('0x8'),util[_0x35a9('0x9')](_0x54e7ee,{'showHidden':![],'depth':null}),_0xc0ce20,_0x127139);_0xe1a115(_0x54e7ee);}_0x3812b9(_0xc0ce20);});});};
\ No newline at end of file
+var _0xe4b1=['info','\x20Error\x20:','inspect','util','../../../../config/logger','fax','bluebird','child_process','execute','Exec\x20gs'];(function(_0x1a27ca,_0xd43490){var _0x279e41=function(_0xe867e9){while(--_0xe867e9){_0x1a27ca['push'](_0x1a27ca['shift']());}};_0x279e41(++_0xd43490);}(_0xe4b1,0x143));var _0x1e4b=function(_0x551aef,_0x3a75be){_0x551aef=_0x551aef-0x0;var _0x4b5526=_0xe4b1[_0x551aef];return _0x4b5526;};'use strict';var util=require(_0x1e4b('0x0'));var logger=require(_0x1e4b('0x1'))(_0x1e4b('0x2'));var BPromise=require(_0x1e4b('0x3'));var exec=require(_0x1e4b('0x4'))['exec'];exports[_0x1e4b('0x5')]=function(_0x237dd6){return new BPromise(function(_0x599d8b,_0x28cbec){exec(_0x237dd6,function(_0xa7dcba,_0x5a6c09,_0x1a2ce9){logger['info'](_0x1e4b('0x6'),_0x5a6c09);if(_0xa7dcba){logger[_0x1e4b('0x7')](_0x1e4b('0x6'),_0x1e4b('0x8'),util[_0x1e4b('0x9')](_0xa7dcba,{'showHidden':![],'depth':null}),_0x5a6c09,_0x1a2ce9);_0x28cbec(_0xa7dcba);}_0x599d8b(_0x5a6c09);});});};
\ No newline at end of file
index 2968624..71dc4f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dcd=['uniqueid','originate','channel','xcally-motion-fax','\x22%s\x22\x20<%s>','headerinfo','util','lodash','moment','../../../../config/logger','fax','logger','inspect','addVariables','format','\x22%s\x22','modem','gateway','faxdetect','t38timeout','localstationid','path','variablesAction'];(function(_0x3c4423,_0x46eaa4){var _0x445ed7=function(_0x374372){while(--_0x374372){_0x3c4423['push'](_0x3c4423['shift']());}};_0x445ed7(++_0x46eaa4);}(_0x6dcd,0x15f));var _0xd6dc=function(_0x430810,_0x363337){_0x430810=_0x430810-0x0;var _0x4947c9=_0x6dcd[_0x430810];return _0x4947c9;};'use strict';var util=require(_0xd6dc('0x0'));var _=require(_0xd6dc('0x1'));var moment=require(_0xd6dc('0x2'));var logger=require(_0xd6dc('0x3'))(_0xd6dc('0x4'));exports['message']=function(_0x25df7e){return{'message':_0x25df7e};};exports[_0xd6dc('0x5')]=function(_0x320330,_0x3b4c29){logger['info'](_0x320330,util[_0xd6dc('0x6')](_0x3b4c29,{'showHidden':![],'depth':null}));};exports[_0xd6dc('0x7')]=function(_0x3f0422,_0xb8e0e1){var _0x34dcc6={'XMF-ECM':_0xb8e0e1['ecm'],'XMF-HEADERINFO':_0xb8e0e1['headerinfo'],'XMF-MINRATE':_0xb8e0e1['minrate'],'XMF-MAXRATE':_0xb8e0e1['maxrate'],'XMF-MODEM':util[_0xd6dc('0x8')](_0xd6dc('0x9'),_0xb8e0e1[_0xd6dc('0xa')]),'XMF-GATEWAY':_0xb8e0e1[_0xd6dc('0xb')],'XMF-FAXDETECT':_0xb8e0e1[_0xd6dc('0xc')],'XMF-T38TIMEOUT':_0xb8e0e1[_0xd6dc('0xd')],'XMF-LOCALSTATIONID':_0xb8e0e1[_0xd6dc('0xe')],'XMF-PATH':_0x3f0422[_0xd6dc('0xf')]};return _0x34dcc6;};exports[_0xd6dc('0x10')]=function(_0x25fb51,_0x1aaff2){return{'actionid':_0x25fb51[_0xd6dc('0x11')],'action':_0xd6dc('0x12'),'channel':_0x25fb51[_0xd6dc('0x13')],'Exten':_0xd6dc('0x14'),'Context':'from-sip','Priority':'1','callerid':util[_0xd6dc('0x8')](_0xd6dc('0x15'),_0x25fb51['headerinfo']?_0x25fb51[_0xd6dc('0x16')]:'',_0x25fb51[_0xd6dc('0xe')]),'variable':_0x1aaff2,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x25fb51[_0xd6dc('0x11')]};};
\ No newline at end of file
+var _0x4fbd=['info','inspect','addVariables','ecm','headerinfo','minrate','maxrate','format','\x22%s\x22','modem','gateway','t38timeout','localstationid','uniqueid','originate','channel','util','moment','../../../../config/logger','fax','message','logger'];(function(_0x2d344f,_0x25fa84){var _0x2e796b=function(_0x10466a){while(--_0x10466a){_0x2d344f['push'](_0x2d344f['shift']());}};_0x2e796b(++_0x25fa84);}(_0x4fbd,0x186));var _0xd4fb=function(_0x92f5d5,_0x129430){_0x92f5d5=_0x92f5d5-0x0;var _0x72a1e0=_0x4fbd[_0x92f5d5];return _0x72a1e0;};'use strict';var util=require(_0xd4fb('0x0'));var _=require('lodash');var moment=require(_0xd4fb('0x1'));var logger=require(_0xd4fb('0x2'))(_0xd4fb('0x3'));exports[_0xd4fb('0x4')]=function(_0x4bf7d5){return{'message':_0x4bf7d5};};exports[_0xd4fb('0x5')]=function(_0x10e7d9,_0x31a294){logger[_0xd4fb('0x6')](_0x10e7d9,util[_0xd4fb('0x7')](_0x31a294,{'showHidden':![],'depth':null}));};exports[_0xd4fb('0x8')]=function(_0x3173dd,_0x2a5d18){var _0x4f49a5={'XMF-ECM':_0x2a5d18[_0xd4fb('0x9')],'XMF-HEADERINFO':_0x2a5d18[_0xd4fb('0xa')],'XMF-MINRATE':_0x2a5d18[_0xd4fb('0xb')],'XMF-MAXRATE':_0x2a5d18[_0xd4fb('0xc')],'XMF-MODEM':util[_0xd4fb('0xd')](_0xd4fb('0xe'),_0x2a5d18[_0xd4fb('0xf')]),'XMF-GATEWAY':_0x2a5d18[_0xd4fb('0x10')],'XMF-FAXDETECT':_0x2a5d18['faxdetect'],'XMF-T38TIMEOUT':_0x2a5d18[_0xd4fb('0x11')],'XMF-LOCALSTATIONID':_0x2a5d18[_0xd4fb('0x12')],'XMF-PATH':_0x3173dd['path']};return _0x4f49a5;};exports['variablesAction']=function(_0x264f66,_0x4de85c){return{'actionid':_0x264f66[_0xd4fb('0x13')],'action':_0xd4fb('0x14'),'channel':_0x264f66[_0xd4fb('0x15')],'Exten':'xcally-motion-fax','Context':'from-sip','Priority':'1','callerid':util[_0xd4fb('0xd')]('\x22%s\x22\x20<%s>',_0x264f66[_0xd4fb('0xa')]?_0x264f66[_0xd4fb('0xa')]:'',_0x264f66[_0xd4fb('0x12')]),'variable':_0x4de85c,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x264f66[_0xd4fb('0x13')]};};
\ No newline at end of file
index 48460ed..eaaf867 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dc8=['initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','initVtigerAccounts','getFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','log','listen','sync','catch','bluebird','./server','./realtime','./report','./acw','./trigger','./dialer','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','get','hour','resolve','getAgents','initAgents','getTelephones','initTelephones','then','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTriggers','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts'];(function(_0x403c20,_0x4a7b99){var _0x2b271a=function(_0x106ecb){while(--_0x106ecb){_0x403c20['push'](_0x403c20['shift']());}};_0x2b271a(++_0x4a7b99);}(_0x6dc8,0x1bb));var _0x86dc=function(_0xd13a88,_0x3c5269){_0xd13a88=_0xd13a88-0x0;var _0x1c993c=_0x6dc8[_0xd13a88];return _0x1c993c;};'use strict';var BPromise=require(_0x86dc('0x0'));var util=require('util');var moment=require('moment');var server=require(_0x86dc('0x1'));var Realtime=require(_0x86dc('0x2'));var Report=require(_0x86dc('0x3'));var Acw=require(_0x86dc('0x4'));var Trigger=require(_0x86dc('0x5'));var Dialer=require(_0x86dc('0x6'));var Preview=require(_0x86dc('0x7'));var Fax=require(_0x86dc('0x8'));var user=require(_0x86dc('0x9'));var voiceQueue=require(_0x86dc('0xa'));var voiceQueueReport=require(_0x86dc('0xb'));var voiceCallReport=require(_0x86dc('0xc'));var trunk=require(_0x86dc('0xd'));var trigger=require(_0x86dc('0xe'));var template=require('./rpc/template');var cmHopperHistory=require(_0x86dc('0xf'));var campaign=require(_0x86dc('0x10'));var voiceExtension=require(_0x86dc('0x11'));var faxAccount=require('./rpc/faxAccount');var zendesk=require('./rpc/integrations/zendesk');var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require('./rpc/integrations/sugarcrm');var freshdesk=require(_0x86dc('0x12'));var desk=require(_0x86dc('0x13'));var zoho=require(_0x86dc('0x14'));var vtiger=require('./rpc/integrations/vtiger');var freshsales=require('./rpc/integrations/freshsales');var servicenow=require(_0x86dc('0x15'));var dynamics365=require(_0x86dc('0x16'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x86dc('0x17')](_0x86dc('0x18'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x86dc('0x17')](_0x86dc('0x18'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x86dc('0x19')]()['then'](user[_0x86dc('0x1a')]())['then'](realtime[_0x86dc('0x1b')]())['then'](user[_0x86dc('0x1c')]())['then'](realtime[_0x86dc('0x1d')]())[_0x86dc('0x1e')](trunk['getTrunks']())[_0x86dc('0x1e')](realtime[_0x86dc('0x1f')]())['then'](voiceQueue[_0x86dc('0x20')]())[_0x86dc('0x1e')](realtime[_0x86dc('0x21')]())[_0x86dc('0x1e')](trigger[_0x86dc('0x22')]())[_0x86dc('0x1e')](realtime[_0x86dc('0x23')]())['then'](template['getTemplates']())[_0x86dc('0x1e')](realtime[_0x86dc('0x24')]())[_0x86dc('0x1e')](zendesk[_0x86dc('0x25')]())[_0x86dc('0x1e')](realtime[_0x86dc('0x26')]())['then'](salesforce[_0x86dc('0x27')]())[_0x86dc('0x1e')](realtime[_0x86dc('0x28')]())[_0x86dc('0x1e')](sugarcrm[_0x86dc('0x29')]())[_0x86dc('0x1e')](realtime[_0x86dc('0x2a')]())['then'](freshdesk[_0x86dc('0x2b')]())[_0x86dc('0x1e')](realtime[_0x86dc('0x2c')]())['then'](desk[_0x86dc('0x2d')]())[_0x86dc('0x1e')](realtime[_0x86dc('0x2e')]())['then'](zoho[_0x86dc('0x2f')]())[_0x86dc('0x1e')](realtime[_0x86dc('0x30')]())[_0x86dc('0x1e')](vtiger['getVtigerAccounts']())[_0x86dc('0x1e')](realtime[_0x86dc('0x31')]())['then'](freshsales[_0x86dc('0x32')]())[_0x86dc('0x1e')](realtime['initFreshsalesAccounts']())[_0x86dc('0x1e')](servicenow[_0x86dc('0x33')]())[_0x86dc('0x1e')](realtime[_0x86dc('0x34')]())['then'](dynamics365['getDynamics365Accounts']())[_0x86dc('0x1e')](realtime['initDynamics365Accounts']())[_0x86dc('0x1e')](campaign[_0x86dc('0x35')]())[_0x86dc('0x1e')](realtime[_0x86dc('0x36')]())['then'](voiceExtension[_0x86dc('0x37')]())['then'](realtime[_0x86dc('0x38')]())[_0x86dc('0x1e')](faxAccount[_0x86dc('0x39')]())[_0x86dc('0x1e')](realtime[_0x86dc('0x3a')]())[_0x86dc('0x1e')](function(){return realtime;});}function initParams(){return BPromise[_0x86dc('0x19')]()['then'](voiceQueueReport[_0x86dc('0x3b')]())[_0x86dc('0x1e')](realtime[_0x86dc('0x3c')]())['then'](cmHopperHistory[_0x86dc('0x3d')]())[_0x86dc('0x1e')](realtime['initVoiceQueueHopperHistory']())[_0x86dc('0x1e')](cmHopperHistory[_0x86dc('0x3e')]())[_0x86dc('0x1e')](realtime[_0x86dc('0x3f')]())[_0x86dc('0x1e')](voiceCallReport[_0x86dc('0x40')]())[_0x86dc('0x1e')](realtime['initVoiceCallReports']())[_0x86dc('0x1e')](function(_0x1b3054){})['catch'](function(_0xb7cd18){console[_0x86dc('0x41')](_0xb7cd18);});}function main(){return server[_0x86dc('0x42')](realtime,preview,fax)[_0x86dc('0x1e')](function(_0xe54710){return initRealtime();})['then'](function(){return initParams();})[_0x86dc('0x1e')](function(){report[_0x86dc('0x43')]();setInterval(initRealtime,0x1388);})[_0x86dc('0x44')](function(_0x1ddfe0){console[_0x86dc('0x41')](_0x1ddfe0);});}main();
\ No newline at end of file
+var _0x6eb8=['getTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','initVtigerAccounts','getFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getCampaigns','initCampaigns','getVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getVoiceCallReports','listen','sync','catch','log','util','moment','./realtime','./report','./trigger','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/template','./rpc/campaign','./rpc/voiceExtension','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','get','hour','resolve','getAgents','then','initAgents','getTelephones','getTrunks','getVoiceQueues','initVoiceQueues'];(function(_0x4d15e1,_0x339856){var _0x2a085c=function(_0x1b61dc){while(--_0x1b61dc){_0x4d15e1['push'](_0x4d15e1['shift']());}};_0x2a085c(++_0x339856);}(_0x6eb8,0x9b));var _0x86eb=function(_0x1c50d4,_0x149a75){_0x1c50d4=_0x1c50d4-0x0;var _0x23e01b=_0x6eb8[_0x1c50d4];return _0x23e01b;};'use strict';var BPromise=require('bluebird');var util=require(_0x86eb('0x0'));var moment=require(_0x86eb('0x1'));var server=require('./server');var Realtime=require(_0x86eb('0x2'));var Report=require(_0x86eb('0x3'));var Acw=require('./acw');var Trigger=require(_0x86eb('0x4'));var Dialer=require('./dialer');var Preview=require(_0x86eb('0x5'));var Fax=require(_0x86eb('0x6'));var user=require(_0x86eb('0x7'));var voiceQueue=require(_0x86eb('0x8'));var voiceQueueReport=require(_0x86eb('0x9'));var voiceCallReport=require(_0x86eb('0xa'));var trunk=require('./rpc/trunk');var trigger=require('./rpc/trigger');var template=require(_0x86eb('0xb'));var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0x86eb('0xc'));var voiceExtension=require(_0x86eb('0xd'));var faxAccount=require('./rpc/faxAccount');var zendesk=require(_0x86eb('0xe'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x86eb('0xf'));var freshdesk=require(_0x86eb('0x10'));var desk=require(_0x86eb('0x11'));var zoho=require('./rpc/integrations/zoho');var vtiger=require('./rpc/integrations/vtiger');var freshsales=require(_0x86eb('0x12'));var servicenow=require(_0x86eb('0x13'));var dynamics365=require(_0x86eb('0x14'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x86eb('0x15')](_0x86eb('0x16'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x86eb('0x15')]('hour')===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x86eb('0x17')]()['then'](user[_0x86eb('0x18')]())[_0x86eb('0x19')](realtime[_0x86eb('0x1a')]())[_0x86eb('0x19')](user[_0x86eb('0x1b')]())['then'](realtime['initTelephones']())['then'](trunk[_0x86eb('0x1c')]())[_0x86eb('0x19')](realtime['initTrunks']())['then'](voiceQueue[_0x86eb('0x1d')]())[_0x86eb('0x19')](realtime[_0x86eb('0x1e')]())[_0x86eb('0x19')](trigger[_0x86eb('0x1f')]())[_0x86eb('0x19')](realtime['initTriggers']())[_0x86eb('0x19')](template[_0x86eb('0x20')]())[_0x86eb('0x19')](realtime[_0x86eb('0x21')]())[_0x86eb('0x19')](zendesk[_0x86eb('0x22')]())['then'](realtime[_0x86eb('0x23')]())[_0x86eb('0x19')](salesforce[_0x86eb('0x24')]())[_0x86eb('0x19')](realtime[_0x86eb('0x25')]())['then'](sugarcrm[_0x86eb('0x26')]())[_0x86eb('0x19')](realtime[_0x86eb('0x27')]())['then'](freshdesk[_0x86eb('0x28')]())['then'](realtime[_0x86eb('0x29')]())[_0x86eb('0x19')](desk[_0x86eb('0x2a')]())[_0x86eb('0x19')](realtime[_0x86eb('0x2b')]())['then'](zoho[_0x86eb('0x2c')]())['then'](realtime[_0x86eb('0x2d')]())[_0x86eb('0x19')](vtiger['getVtigerAccounts']())[_0x86eb('0x19')](realtime[_0x86eb('0x2e')]())[_0x86eb('0x19')](freshsales[_0x86eb('0x2f')]())[_0x86eb('0x19')](realtime['initFreshsalesAccounts']())[_0x86eb('0x19')](servicenow[_0x86eb('0x30')]())[_0x86eb('0x19')](realtime[_0x86eb('0x31')]())['then'](dynamics365['getDynamics365Accounts']())['then'](realtime['initDynamics365Accounts']())[_0x86eb('0x19')](campaign[_0x86eb('0x32')]())[_0x86eb('0x19')](realtime[_0x86eb('0x33')]())['then'](voiceExtension[_0x86eb('0x34')]())[_0x86eb('0x19')](realtime['initVoiceExtensions']())['then'](faxAccount[_0x86eb('0x35')]())['then'](realtime[_0x86eb('0x36')]())['then'](function(){return realtime;});}function initParams(){return BPromise['resolve']()['then'](voiceQueueReport['getVoiceQueueReports']())[_0x86eb('0x19')](realtime['initVoiceQueueReports']())[_0x86eb('0x19')](cmHopperHistory[_0x86eb('0x37')]())[_0x86eb('0x19')](realtime[_0x86eb('0x38')]())[_0x86eb('0x19')](cmHopperHistory['getCampaignHopperHistory']())[_0x86eb('0x19')](realtime['initCampaignHopperHistory']())[_0x86eb('0x19')](voiceCallReport[_0x86eb('0x39')]())[_0x86eb('0x19')](realtime['initVoiceCallReports']())[_0x86eb('0x19')](function(_0x3eed2f){})['catch'](function(_0xa55c4f){console['log'](_0xa55c4f);});}function main(){return server[_0x86eb('0x3a')](realtime,preview,fax)[_0x86eb('0x19')](function(_0x397a67){return initRealtime();})[_0x86eb('0x19')](function(){return initParams();})[_0x86eb('0x19')](function(){report[_0x86eb('0x3b')]();setInterval(initRealtime,0x1388);})[_0x86eb('0x3c')](function(_0x4dced8){console[_0x86eb('0x3d')](_0x4dced8);});}main();
\ No newline at end of file
index f24b628..84badef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['name','email','accountcode','fullname','unknown','stateTime','status','address','mobile','interface','online','voiceStatus','voiceStatusQueue','onhold','local','updateStatusRealtime','state','idle','inuse','talking','statePause','voiceStatusTime','toNumber','voiceStatusCallerIdNumber','stringify','format','emit','user:presence','exports','moment','md5','ioredis','../../../config/environment','defaults','redis','socket.io-emitter'];(function(_0x9b3bd3,_0x2c0f16){var _0x4c0c81=function(_0x113858){while(--_0x113858){_0x9b3bd3['push'](_0x9b3bd3['shift']());}};_0x4c0c81(++_0x2c0f16);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x31ced5,_0x5d5415){_0x31ced5=_0x31ced5-0x0;var _0x10d9e5=_0xcb91[_0x31ced5];return _0x10d9e5;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var md5=require(_0x1cb9('0x1'));var Redis=require(_0x1cb9('0x2'));var config=require(_0x1cb9('0x3'));config['redis']=_[_0x1cb9('0x4')](config[_0x1cb9('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x1cb9('0x6'))(new Redis(config[_0x1cb9('0x5')]));function Agent(_0x53ffbd){this['id']=_0x53ffbd['id']||0x0;this[_0x1cb9('0x7')]=_0x53ffbd[_0x1cb9('0x7')]||'';this['email']=_0x53ffbd[_0x1cb9('0x8')]||'';this[_0x1cb9('0x9')]=_0x53ffbd['accountcode']||'';this[_0x1cb9('0xa')]=_0x53ffbd['fullname']||'';this['state']=_0x1cb9('0xb');this[_0x1cb9('0xc')]=0x0;this[_0x1cb9('0xd')]=_0x1cb9('0xb');this[_0x1cb9('0xe')]='';this['phone']='';this[_0x1cb9('0xf')]='';this[_0x1cb9('0x10')]='';this[_0x1cb9('0x11')]=_0x53ffbd[_0x1cb9('0x11')]||![];this[_0x1cb9('0x12')]='unknown';this['voiceStatusTime']=0x0;this['voiceStatusCallerIdNumber']='';this[_0x1cb9('0x13')]='';this[_0x1cb9('0x14')]=![];this[_0x1cb9('0x15')]=![];this[_0x1cb9('0x1')]='';}Agent['prototype'][_0x1cb9('0x16')]=function(_0x6ef389){var _0x1b3cd7;if(_0x6ef389&&_0x6ef389[_0x1cb9('0x17')]){_0x1b3cd7=_0x6ef389[_0x1cb9('0x17')]['toLowerCase']();switch(_0x1b3cd7){case'not_inuse':_0x1b3cd7=_0x1cb9('0x18');break;case _0x1cb9('0x19'):_0x1b3cd7=_0x1cb9('0x1a');break;}}if(_0x1b3cd7&&this[_0x1cb9('0x12')]!==_0x1b3cd7||_0x6ef389[_0x1cb9('0x1b')]){this[_0x1cb9('0x1c')]=_[_0x1cb9('0x1d')](moment()['format']('x'));}if(_0x1b3cd7){this['voiceStatus']=_0x1b3cd7;}var _0x1b2fa6={'id':this['id'],'name':this[_0x1cb9('0x7')],'email':this[_0x1cb9('0x8')],'accountcode':this[_0x1cb9('0x9')],'fullname':this[_0x1cb9('0xa')],'state':this[_0x1cb9('0x17')],'stateTime':this[_0x1cb9('0xc')],'status':this['status'],'address':this['address'],'online':this[_0x1cb9('0x11')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0x1cb9('0x1c')],'voiceStatusCallerIdNumber':this[_0x1cb9('0x1e')],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this['interface'],'onhold':this[_0x1cb9('0x14')]};var _0x325637=md5(JSON[_0x1cb9('0x1f')](_0x1b2fa6));if(this[_0x1cb9('0x1')]!==_0x325637){this[_0x1cb9('0x1')]=_0x325637;io['to'](util[_0x1cb9('0x20')]('user:%s',_0x1b2fa6['name']))[_0x1cb9('0x21')]('user:save',_0x1b2fa6);io[_0x1cb9('0x21')](_0x1cb9('0x22'),_0x1b2fa6);}};module[_0x1cb9('0x23')]=Agent;
\ No newline at end of file
+var _0xcb91=['name','email','accountcode','fullname','unknown','stateTime','status','address','mobile','interface','online','voiceStatus','voiceStatusQueue','onhold','local','updateStatusRealtime','state','idle','inuse','talking','statePause','voiceStatusTime','toNumber','voiceStatusCallerIdNumber','stringify','format','emit','user:presence','exports','moment','md5','ioredis','../../../config/environment','defaults','redis','socket.io-emitter'];(function(_0xa962b6,_0xc2ea2){var _0x2a997d=function(_0x57e904){while(--_0x57e904){_0xa962b6['push'](_0xa962b6['shift']());}};_0x2a997d(++_0xc2ea2);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3438cf,_0x73b174){_0x3438cf=_0x3438cf-0x0;var _0x278698=_0xcb91[_0x3438cf];return _0x278698;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var md5=require(_0x1cb9('0x1'));var Redis=require(_0x1cb9('0x2'));var config=require(_0x1cb9('0x3'));config['redis']=_[_0x1cb9('0x4')](config[_0x1cb9('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x1cb9('0x6'))(new Redis(config[_0x1cb9('0x5')]));function Agent(_0x53ffbd){this['id']=_0x53ffbd['id']||0x0;this[_0x1cb9('0x7')]=_0x53ffbd[_0x1cb9('0x7')]||'';this['email']=_0x53ffbd[_0x1cb9('0x8')]||'';this[_0x1cb9('0x9')]=_0x53ffbd['accountcode']||'';this[_0x1cb9('0xa')]=_0x53ffbd['fullname']||'';this['state']=_0x1cb9('0xb');this[_0x1cb9('0xc')]=0x0;this[_0x1cb9('0xd')]=_0x1cb9('0xb');this[_0x1cb9('0xe')]='';this['phone']='';this[_0x1cb9('0xf')]='';this[_0x1cb9('0x10')]='';this[_0x1cb9('0x11')]=_0x53ffbd[_0x1cb9('0x11')]||![];this[_0x1cb9('0x12')]='unknown';this['voiceStatusTime']=0x0;this['voiceStatusCallerIdNumber']='';this[_0x1cb9('0x13')]='';this[_0x1cb9('0x14')]=![];this[_0x1cb9('0x15')]=![];this[_0x1cb9('0x1')]='';}Agent['prototype'][_0x1cb9('0x16')]=function(_0x6ef389){var _0x1b3cd7;if(_0x6ef389&&_0x6ef389[_0x1cb9('0x17')]){_0x1b3cd7=_0x6ef389[_0x1cb9('0x17')]['toLowerCase']();switch(_0x1b3cd7){case'not_inuse':_0x1b3cd7=_0x1cb9('0x18');break;case _0x1cb9('0x19'):_0x1b3cd7=_0x1cb9('0x1a');break;}}if(_0x1b3cd7&&this[_0x1cb9('0x12')]!==_0x1b3cd7||_0x6ef389[_0x1cb9('0x1b')]){this[_0x1cb9('0x1c')]=_[_0x1cb9('0x1d')](moment()['format']('x'));}if(_0x1b3cd7){this['voiceStatus']=_0x1b3cd7;}var _0x1b2fa6={'id':this['id'],'name':this[_0x1cb9('0x7')],'email':this[_0x1cb9('0x8')],'accountcode':this[_0x1cb9('0x9')],'fullname':this[_0x1cb9('0xa')],'state':this[_0x1cb9('0x17')],'stateTime':this[_0x1cb9('0xc')],'status':this['status'],'address':this['address'],'online':this[_0x1cb9('0x11')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0x1cb9('0x1c')],'voiceStatusCallerIdNumber':this[_0x1cb9('0x1e')],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this['interface'],'onhold':this[_0x1cb9('0x14')]};var _0x325637=md5(JSON[_0x1cb9('0x1f')](_0x1b2fa6));if(this[_0x1cb9('0x1')]!==_0x325637){this[_0x1cb9('0x1')]=_0x325637;io['to'](util[_0x1cb9('0x20')]('user:%s',_0x1b2fa6['name']))[_0x1cb9('0x21')]('user:save',_0x1b2fa6);io[_0x1cb9('0x21')](_0x1cb9('0x22'),_0x1b2fa6);}};module[_0x1cb9('0x23')]=Agent;
\ No newline at end of file
index d5d3ac8..7309ef9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfc2=['dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency'];(function(_0x3b39d0,_0x429165){var _0x340e8e=function(_0x445669){while(--_0x445669){_0x3b39d0['push'](_0x3b39d0['shift']());}};_0x340e8e(++_0x429165);}(_0xbfc2,0x7d));var _0x2bfc=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xbfc2[_0x53ccf2];return _0x5a2964;};'use strict';function Campaign(_0x22fb13){this['id']=_0x22fb13['id']||0x0;this[_0x2bfc('0x0')]=_0x22fb13[_0x2bfc('0x0')]||'';this[_0x2bfc('0x1')]=_0x22fb13[_0x2bfc('0x1')]||_0x2bfc('0x2');this[_0x2bfc('0x3')]=0x0;this['temp']=0x0;this[_0x2bfc('0x4')]=0x0;this[_0x2bfc('0x5')]=0x0;this[_0x2bfc('0x6')]='';this[_0x2bfc('0x7')]=!![];this['active']=_0x22fb13['active'];this[_0x2bfc('0x8')]=_0x22fb13[_0x2bfc('0x8')];this['dialTimezone']=_0x22fb13[_0x2bfc('0x9')]||null;this['dialGlobalInterval']=_0x22fb13[_0x2bfc('0xa')]?_0x22fb13[_0x2bfc('0xa')]:null;this[_0x2bfc('0xb')]=_0x22fb13[_0x2bfc('0xb')];this['dialOriginateCallerIdNumber']=_0x22fb13[_0x2bfc('0xc')];this[_0x2bfc('0xd')]=_0x22fb13['dialOriginateTimeout']||0x1e;this[_0x2bfc('0xe')]=_0x22fb13[_0x2bfc('0xe')];this[_0x2bfc('0xf')]=_0x22fb13['dialCongestionRetryFrequency'];this['dialBusyMaxRetry']=_0x22fb13[_0x2bfc('0x10')];this[_0x2bfc('0x11')]=_0x22fb13[_0x2bfc('0x11')];this[_0x2bfc('0x12')]=_0x22fb13['dialNoAnswerMaxRetry'];this[_0x2bfc('0x13')]=_0x22fb13[_0x2bfc('0x13')];this['dialGlobalMaxRetry']=_0x22fb13[_0x2bfc('0x14')];this[_0x2bfc('0x15')]=_0x22fb13[_0x2bfc('0x15')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x22fb13[_0x2bfc('0x16')]||0x96;this['dialDropMaxRetry']=_0x22fb13[_0x2bfc('0x17')]||0x3;this[_0x2bfc('0x18')]=_0x22fb13[_0x2bfc('0x18')]||0x96;this[_0x2bfc('0x19')]=_0x22fb13['dialAbandonedMaxRetry']||0x3;this['dialAbandonedRetryFrequency']=_0x22fb13[_0x2bfc('0x1a')]||0x96;this[_0x2bfc('0x1b')]=_0x22fb13[_0x2bfc('0x1b')]||0x3;this[_0x2bfc('0x1c')]=_0x22fb13[_0x2bfc('0x1c')]||0x96;this[_0x2bfc('0x1d')]=_0x22fb13[_0x2bfc('0x1d')]||0x3;this['dialAgentRejectRetryFrequency']=_0x22fb13['dialAgentRejectRetryFrequency']||0x96;this[_0x2bfc('0x1e')]=_0x22fb13[_0x2bfc('0x1e')]||_0x2bfc('0x1f');this[_0x2bfc('0x20')]=_0x22fb13[_0x2bfc('0x20')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x22fb13[_0x2bfc('0x21')]||undefined;this[_0x2bfc('0x22')]=_0x22fb13[_0x2bfc('0x22')]||undefined;this[_0x2bfc('0x23')]=_0x22fb13[_0x2bfc('0x23')]?_0x22fb13[_0x2bfc('0x23')]:undefined;this[_0x2bfc('0x24')]=_0x22fb13[_0x2bfc('0x24')]?_0x22fb13['Trunk']:undefined;this[_0x2bfc('0x25')]=_0x22fb13[_0x2bfc('0x25')]?_0x22fb13[_0x2bfc('0x25')]:undefined;this['SquareProject']=_0x22fb13[_0x2bfc('0x26')]?_0x22fb13[_0x2bfc('0x26')]:undefined;this[_0x2bfc('0x27')]=_0x22fb13[_0x2bfc('0x26')]?_0x22fb13[_0x2bfc('0x26')][_0x2bfc('0x0')]:undefined;this[_0x2bfc('0x28')]=_0x22fb13[_0x2bfc('0x28')]||![];this['dialAMDInitialSilence']=_0x22fb13['dialAMDInitialSilence'];this['dialAMDGreeting']=_0x22fb13[_0x2bfc('0x29')];this[_0x2bfc('0x2a')]=_0x22fb13[_0x2bfc('0x2a')];this[_0x2bfc('0x2b')]=_0x22fb13[_0x2bfc('0x2b')];this[_0x2bfc('0x2c')]=_0x22fb13[_0x2bfc('0x2c')];this['dialAMDBetweenWordsSilence']=_0x22fb13[_0x2bfc('0x2d')];this['dialAMDMaximumNumberOfWords']=_0x22fb13[_0x2bfc('0x2e')];this[_0x2bfc('0x2f')]=_0x22fb13[_0x2bfc('0x2f')];this[_0x2bfc('0x30')]=_0x22fb13[_0x2bfc('0x30')];}module[_0x2bfc('0x31')]=Campaign;
\ No newline at end of file
+var _0xfe5f=['SquareProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','name','type','campaign','temp','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval'];(function(_0x54f0d6,_0x828694){var _0x1aeb86=function(_0x58961a){while(--_0x58961a){_0x54f0d6['push'](_0x54f0d6['shift']());}};_0x1aeb86(++_0x828694);}(_0xfe5f,0x105));var _0xffe5=function(_0x3e170c,_0x298b1d){_0x3e170c=_0x3e170c-0x0;var _0x2855d1=_0xfe5f[_0x3e170c];return _0x2855d1;};'use strict';function Campaign(_0x7564a8){this['id']=_0x7564a8['id']||0x0;this[_0xffe5('0x0')]=_0x7564a8[_0xffe5('0x0')]||'';this[_0xffe5('0x1')]=_0x7564a8[_0xffe5('0x1')]||_0xffe5('0x2');this['originated']=0x0;this[_0xffe5('0x3')]=0x0;this[_0xffe5('0x4')]=0x0;this[_0xffe5('0x5')]=0x0;this[_0xffe5('0x6')]='';this[_0xffe5('0x7')]=!![];this[_0xffe5('0x8')]=_0x7564a8[_0xffe5('0x8')];this[_0xffe5('0x9')]=_0x7564a8[_0xffe5('0x9')];this[_0xffe5('0xa')]=_0x7564a8[_0xffe5('0xa')]||null;this['dialGlobalInterval']=_0x7564a8['dialGlobalInterval']?_0x7564a8[_0xffe5('0xb')]:null;this[_0xffe5('0xc')]=_0x7564a8['dialOriginateCallerIdName'];this[_0xffe5('0xd')]=_0x7564a8['dialOriginateCallerIdNumber'];this[_0xffe5('0xe')]=_0x7564a8[_0xffe5('0xe')]||0x1e;this[_0xffe5('0xf')]=_0x7564a8[_0xffe5('0xf')];this[_0xffe5('0x10')]=_0x7564a8[_0xffe5('0x10')];this[_0xffe5('0x11')]=_0x7564a8[_0xffe5('0x11')];this[_0xffe5('0x12')]=_0x7564a8[_0xffe5('0x12')];this['dialNoAnswerMaxRetry']=_0x7564a8[_0xffe5('0x13')];this[_0xffe5('0x14')]=_0x7564a8[_0xffe5('0x14')];this[_0xffe5('0x15')]=_0x7564a8['dialGlobalMaxRetry'];this['dialNoSuchNumberMaxRetry']=_0x7564a8[_0xffe5('0x16')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x7564a8[_0xffe5('0x17')]||0x96;this[_0xffe5('0x18')]=_0x7564a8['dialDropMaxRetry']||0x3;this[_0xffe5('0x19')]=_0x7564a8[_0xffe5('0x19')]||0x96;this['dialAbandonedMaxRetry']=_0x7564a8[_0xffe5('0x1a')]||0x3;this[_0xffe5('0x1b')]=_0x7564a8[_0xffe5('0x1b')]||0x96;this['dialMachineMaxRetry']=_0x7564a8[_0xffe5('0x1c')]||0x3;this['dialMachineRetryFrequency']=_0x7564a8[_0xffe5('0x1d')]||0x96;this[_0xffe5('0x1e')]=_0x7564a8[_0xffe5('0x1e')]||0x3;this['dialAgentRejectRetryFrequency']=_0x7564a8[_0xffe5('0x1f')]||0x96;this['dialOrderByScheduledAt']=_0x7564a8[_0xffe5('0x20')]||'DESC';this[_0xffe5('0x21')]=_0x7564a8[_0xffe5('0x21')]||undefined;this[_0xffe5('0x22')]=_0x7564a8[_0xffe5('0x22')]||undefined;this[_0xffe5('0x23')]=_0x7564a8['dialCutDigit']||undefined;this[_0xffe5('0x24')]=_0x7564a8[_0xffe5('0x24')]?_0x7564a8[_0xffe5('0x24')]:undefined;this[_0xffe5('0x25')]=_0x7564a8[_0xffe5('0x25')]?_0x7564a8[_0xffe5('0x25')]:undefined;this[_0xffe5('0x26')]=_0x7564a8[_0xffe5('0x26')]?_0x7564a8['Interval']:undefined;this[_0xffe5('0x27')]=_0x7564a8['SquareProject']?_0x7564a8[_0xffe5('0x27')]:undefined;this['dialQueueProject']=_0x7564a8[_0xffe5('0x27')]?_0x7564a8['SquareProject'][_0xffe5('0x0')]:undefined;this['dialAMDActive']=_0x7564a8[_0xffe5('0x28')]||![];this['dialAMDInitialSilence']=_0x7564a8[_0xffe5('0x29')];this[_0xffe5('0x2a')]=_0x7564a8[_0xffe5('0x2a')];this[_0xffe5('0x2b')]=_0x7564a8['dialAMDAfterGreetingSilence'];this['dialAMDTotalAnalysisTime']=_0x7564a8[_0xffe5('0x2c')];this[_0xffe5('0x2d')]=_0x7564a8['dialAMDMinWordLength'];this[_0xffe5('0x2e')]=_0x7564a8[_0xffe5('0x2e')];this[_0xffe5('0x2f')]=_0x7564a8['dialAMDMaximumNumberOfWords'];this[_0xffe5('0x30')]=_0x7564a8[_0xffe5('0x30')];this[_0xffe5('0x31')]=_0x7564a8[_0xffe5('0x31')];}module['exports']=Campaign;
\ No newline at end of file
index 9e0b14f..aeb6185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d4b=['answered','answertime','endtime','unmanaged','lastapplication','lastdata','duration','billableseconds','holdtime','type','tag','disposition','monitor','monitorFilename','transferType','exports','starttime','channel','destinationchannel','calleridname','connectedlinenum','context','uniqueid','linkedid','exten'];(function(_0x4828e6,_0x79cc0a){var _0x39d389=function(_0x5ae31c){while(--_0x5ae31c){_0x4828e6['push'](_0x4828e6['shift']());}};_0x39d389(++_0x79cc0a);}(_0x6d4b,0xbf));var _0xb6d4=function(_0x57a550,_0x1a3d6f){_0x57a550=_0x57a550-0x0;var _0x2f2d5b=_0x6d4b[_0x57a550];return _0x2f2d5b;};'use strict';function Channel(){this[_0xb6d4('0x0')]=null;this[_0xb6d4('0x1')]='';this[_0xb6d4('0x2')]='';this['calleridnum']=0x0;this[_0xb6d4('0x3')]='';this[_0xb6d4('0x4')]=undefined;this['connectedlinename']=undefined;this['accountcode']=0x0;this[_0xb6d4('0x5')]='';this[_0xb6d4('0x6')]=0x0;this[_0xb6d4('0x7')]=0x0;this[_0xb6d4('0x8')]=0x0;this[_0xb6d4('0x9')]=![];this[_0xb6d4('0xa')]=null;this[_0xb6d4('0xb')]=null;this[_0xb6d4('0xc')]=![];this['abandoned']=![];this[_0xb6d4('0xd')]='';this[_0xb6d4('0xe')]='';this[_0xb6d4('0xf')]=0x0;this[_0xb6d4('0x10')]=0x0;this[_0xb6d4('0x11')]=0x0;this[_0xb6d4('0x12')]=null;this[_0xb6d4('0x13')]=null;this[_0xb6d4('0x14')]=null;this[_0xb6d4('0x15')]=![];this[_0xb6d4('0x16')]=null;this['queue']=null;this['monitors']=[];this['transfercalleridnum']=undefined;this['transferconnectedlinenum']=undefined;this[_0xb6d4('0x17')]=undefined;this['mohtime']=0x0;}module[_0xb6d4('0x18')]=Channel;
\ No newline at end of file
+var _0x988c=['linkedid','exten','answered','endtime','unmanaged','lastdata','duration','billableseconds','holdtime','type','disposition','monitor','monitorFilename','queue','monitors','transferconnectedlinenum','transferType','mohtime','starttime','calleridname','connectedlinenum','connectedlinename'];(function(_0x25e401,_0x44621c){var _0x17d9b8=function(_0x1c3405){while(--_0x1c3405){_0x25e401['push'](_0x25e401['shift']());}};_0x17d9b8(++_0x44621c);}(_0x988c,0x19e));var _0xc988=function(_0x3436ee,_0xac2117){_0x3436ee=_0x3436ee-0x0;var _0x3e7950=_0x988c[_0x3436ee];return _0x3e7950;};'use strict';function Channel(){this[_0xc988('0x0')]=null;this['channel']='';this['destinationchannel']='';this['calleridnum']=0x0;this[_0xc988('0x1')]='';this[_0xc988('0x2')]=undefined;this[_0xc988('0x3')]=undefined;this['accountcode']=0x0;this['context']='';this['uniqueid']=0x0;this[_0xc988('0x4')]=0x0;this[_0xc988('0x5')]=0x0;this[_0xc988('0x6')]=![];this['answertime']=null;this[_0xc988('0x7')]=null;this[_0xc988('0x8')]=![];this['abandoned']=![];this['lastapplication']='';this[_0xc988('0x9')]='';this[_0xc988('0xa')]=0x0;this[_0xc988('0xb')]=0x0;this[_0xc988('0xc')]=0x0;this[_0xc988('0xd')]=null;this['tag']=null;this[_0xc988('0xe')]=null;this[_0xc988('0xf')]=![];this[_0xc988('0x10')]=null;this[_0xc988('0x11')]=null;this[_0xc988('0x12')]=[];this['transfercalleridnum']=undefined;this[_0xc988('0x13')]=undefined;this[_0xc988('0x14')]=undefined;this[_0xc988('0x15')]=0x0;}module['exports']=Channel;
\ No newline at end of file
index 61c2f2b..aff0f30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43b8=['Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl'];(function(_0x58fdfd,_0x46f063){var _0x3a4613=function(_0x4b6a77){while(--_0x4b6a77){_0x58fdfd['push'](_0x58fdfd['shift']());}};_0x3a4613(++_0x46f063);}(_0x43b8,0x120));var _0x843b=function(_0x2ceaff,_0x3574b2){_0x2ceaff=_0x2ceaff-0x0;var _0x2db04a=_0x43b8[_0x2ceaff];return _0x2db04a;};'use strict';function DeskAccount(_0x5e0e9d){this['id']=_0x5e0e9d['id']||0x0;this[_0x843b('0x0')]=_0x5e0e9d[_0x843b('0x0')]||'';this['username']=_0x5e0e9d[_0x843b('0x1')]||'';this['remoteUri']=_0x5e0e9d[_0x843b('0x2')]||'';this[_0x843b('0x3')]=_0x5e0e9d[_0x843b('0x3')]||'';this[_0x843b('0x4')]=_0x5e0e9d[_0x843b('0x4')]||'';this[_0x843b('0x5')]=_0x5e0e9d[_0x843b('0x5')]||'';this[_0x843b('0x6')]=_0x5e0e9d['consumerSecret']||'';this['token']=_0x5e0e9d[_0x843b('0x7')]||'';this['tokenSecret']=_0x5e0e9d[_0x843b('0x8')]||'';this[_0x843b('0x9')]=_0x5e0e9d['type']||'';this[_0x843b('0xa')]=_0x5e0e9d[_0x843b('0xa')]||'';this[_0x843b('0xb')]=_0x5e0e9d[_0x843b('0xb')]||{};}module[_0x843b('0xc')]=DeskAccount;
\ No newline at end of file
+var _0x1b60=['token','tokenSecret','type','serverUrl','Configurations','exports','username','remoteUri','authType','password','consumerKey','consumerSecret'];(function(_0x2052da,_0xdb0eb6){var _0x5640ab=function(_0x64f9d0){while(--_0x64f9d0){_0x2052da['push'](_0x2052da['shift']());}};_0x5640ab(++_0xdb0eb6);}(_0x1b60,0x1aa));var _0x01b6=function(_0x19726f,_0x49e0eb){_0x19726f=_0x19726f-0x0;var _0x23c58c=_0x1b60[_0x19726f];return _0x23c58c;};'use strict';function DeskAccount(_0x47813f){this['id']=_0x47813f['id']||0x0;this['name']=_0x47813f['name']||'';this[_0x01b6('0x0')]=_0x47813f[_0x01b6('0x0')]||'';this[_0x01b6('0x1')]=_0x47813f[_0x01b6('0x1')]||'';this[_0x01b6('0x2')]=_0x47813f[_0x01b6('0x2')]||'';this[_0x01b6('0x3')]=_0x47813f[_0x01b6('0x3')]||'';this[_0x01b6('0x4')]=_0x47813f[_0x01b6('0x4')]||'';this[_0x01b6('0x5')]=_0x47813f[_0x01b6('0x5')]||'';this[_0x01b6('0x6')]=_0x47813f[_0x01b6('0x6')]||'';this[_0x01b6('0x7')]=_0x47813f[_0x01b6('0x7')]||'';this[_0x01b6('0x8')]=_0x47813f[_0x01b6('0x8')]||'';this[_0x01b6('0x9')]=_0x47813f[_0x01b6('0x9')]||'';this['Configurations']=_0x47813f[_0x01b6('0xa')]||{};}module[_0x01b6('0xb')]=DeskAccount;
\ No newline at end of file
index 177a153..a380bf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c81=['Configurations','exports','name','username','tenantId','clientId','clientSecret','serverUrl'];(function(_0x3e1a2f,_0x297970){var _0xe4f36e=function(_0x6e6642){while(--_0x6e6642){_0x3e1a2f['push'](_0x3e1a2f['shift']());}};_0xe4f36e(++_0x297970);}(_0x3c81,0x102));var _0x13c8=function(_0x469bde,_0xef7393){_0x469bde=_0x469bde-0x0;var _0x2668aa=_0x3c81[_0x469bde];return _0x2668aa;};'use strict';function Dynamics365Account(_0x55010d){this['id']=_0x55010d['id']||0x0;this[_0x13c8('0x0')]=_0x55010d['name']||'';this[_0x13c8('0x1')]=_0x55010d[_0x13c8('0x1')]||'';this['password']=_0x55010d['password']||'';this['remoteUri']=_0x55010d['remoteUri']||'';this[_0x13c8('0x2')]=_0x55010d[_0x13c8('0x2')]||'';this[_0x13c8('0x3')]=_0x55010d[_0x13c8('0x3')]||'';this[_0x13c8('0x4')]=_0x55010d[_0x13c8('0x4')]||{};this[_0x13c8('0x5')]=_0x55010d['serverUrl']||'';this[_0x13c8('0x6')]=_0x55010d['Configurations']||{};}module[_0x13c8('0x7')]=Dynamics365Account;
\ No newline at end of file
+var _0x5b02=['username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','Configurations','name'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5b02,0xe9));var _0x25b0=function(_0x40e1ae,_0xd4d6bd){_0x40e1ae=_0x40e1ae-0x0;var _0x3bafa5=_0x5b02[_0x40e1ae];return _0x3bafa5;};'use strict';function Dynamics365Account(_0x5d3c24){this['id']=_0x5d3c24['id']||0x0;this[_0x25b0('0x0')]=_0x5d3c24[_0x25b0('0x0')]||'';this[_0x25b0('0x1')]=_0x5d3c24['username']||'';this['password']=_0x5d3c24[_0x25b0('0x2')]||'';this['remoteUri']=_0x5d3c24[_0x25b0('0x3')]||'';this[_0x25b0('0x4')]=_0x5d3c24[_0x25b0('0x4')]||'';this[_0x25b0('0x5')]=_0x5d3c24[_0x25b0('0x5')]||'';this['clientSecret']=_0x5d3c24[_0x25b0('0x6')]||{};this[_0x25b0('0x7')]=_0x5d3c24['serverUrl']||'';this[_0x25b0('0x8')]=_0x5d3c24['Configurations']||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
index 7e90518..7a6300f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8a8=['maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate'];(function(_0x18b513,_0x190cfc){var _0x59053f=function(_0x32e756){while(--_0x32e756){_0x18b513['push'](_0x18b513['shift']());}};_0x59053f(++_0x190cfc);}(_0xa8a8,0x198));var _0x8a8a=function(_0x454b10,_0x1af8f4){_0x454b10=_0x454b10-0x0;var _0x3a4279=_0xa8a8[_0x454b10];return _0x3a4279;};'use strict';function FaxAccount(_0x58dbf7){this['id']=_0x58dbf7['id']||0x0;this[_0x8a8a('0x0')]=_0x58dbf7[_0x8a8a('0x0')]||'';this[_0x8a8a('0x1')]=_0x58dbf7[_0x8a8a('0x1')];this['ecm']=_0x58dbf7[_0x8a8a('0x2')];this[_0x8a8a('0x3')]=_0x58dbf7[_0x8a8a('0x3')];this[_0x8a8a('0x4')]=_0x58dbf7[_0x8a8a('0x4')];this[_0x8a8a('0x5')]=_0x58dbf7[_0x8a8a('0x5')]||0x960;this[_0x8a8a('0x6')]=_0x58dbf7[_0x8a8a('0x6')]||0x3840;this[_0x8a8a('0x7')]=_0x58dbf7['modem']||_0x8a8a('0x8');this['gateway']=_0x58dbf7[_0x8a8a('0x9')]||'no';this[_0x8a8a('0xa')]=_0x58dbf7['faxdetect']||'no';this[_0x8a8a('0xb')]=_0x58dbf7[_0x8a8a('0xb')]||0x1388;this[_0x8a8a('0xc')]=_0x58dbf7[_0x8a8a('0xc')]||_0x8a8a('0xd');this[_0x8a8a('0xe')]=_0x58dbf7['Trunk']?_0x58dbf7[_0x8a8a('0xe')]:undefined;this[_0x8a8a('0xf')]=_0x58dbf7[_0x8a8a('0xf')];this[_0x8a8a('0x10')]=_0x58dbf7[_0x8a8a('0x10')];}module[_0x8a8a('0x11')]=FaxAccount;
\ No newline at end of file
+var _0x358d=['gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','name','description','ecm','localstationid','minrate','maxrate','modem','v17,v27,v29'];(function(_0x28bef9,_0x28e8d6){var _0x45db81=function(_0x269033){while(--_0x269033){_0x28bef9['push'](_0x28bef9['shift']());}};_0x45db81(++_0x28e8d6);}(_0x358d,0xb8));var _0xd358=function(_0x195690,_0x13d76e){_0x195690=_0x195690-0x0;var _0xcd8219=_0x358d[_0x195690];return _0xcd8219;};'use strict';function FaxAccount(_0x360b33){this['id']=_0x360b33['id']||0x0;this[_0xd358('0x0')]=_0x360b33[_0xd358('0x0')]||'';this['description']=_0x360b33[_0xd358('0x1')];this['ecm']=_0x360b33[_0xd358('0x2')];this['headerinfo']=_0x360b33['headerinfo'];this[_0xd358('0x3')]=_0x360b33['localstationid'];this['minrate']=_0x360b33[_0xd358('0x4')]||0x960;this[_0xd358('0x5')]=_0x360b33[_0xd358('0x5')]||0x3840;this[_0xd358('0x6')]=_0x360b33['modem']||_0xd358('0x7');this[_0xd358('0x8')]=_0x360b33[_0xd358('0x8')]||'no';this[_0xd358('0x9')]=_0x360b33['faxdetect']||'no';this['t38timeout']=_0x360b33[_0xd358('0xa')]||0x1388;this[_0xd358('0xb')]=_0x360b33[_0xd358('0xb')]||_0xd358('0xc');this[_0xd358('0xd')]=_0x360b33[_0xd358('0xd')]?_0x360b33['Trunk']:undefined;this[_0xd358('0xe')]=_0x360b33[_0xd358('0xe')];this[_0xd358('0xf')]=_0x360b33[_0xd358('0xf')];}module['exports']=FaxAccount;
\ No newline at end of file
index 9a81c2c..137f48e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5265=['username','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x307086,_0x3bfe4e){var _0x699043=function(_0x1a7677){while(--_0x1a7677){_0x307086['push'](_0x307086['shift']());}};_0x699043(++_0x3bfe4e);}(_0x5265,0xe3));var _0x5526=function(_0x418bc9,_0x2676e9){_0x418bc9=_0x418bc9-0x0;var _0x104944=_0x5265[_0x418bc9];return _0x104944;};'use strict';function FreshdeskAccount(_0x45b3d0){this['id']=_0x45b3d0['id']||0x0;this[_0x5526('0x0')]=_0x45b3d0[_0x5526('0x0')]||'';this[_0x5526('0x1')]=_0x45b3d0[_0x5526('0x1')]||'';this['apiKey']=_0x45b3d0['token']||'';this[_0x5526('0x2')]=_0x45b3d0[_0x5526('0x2')]||'';this[_0x5526('0x3')]=_0x45b3d0[_0x5526('0x3')]||'';this['Configurations']=_0x45b3d0[_0x5526('0x4')]||{};}module[_0x5526('0x5')]=FreshdeskAccount;
\ No newline at end of file
+var _0x8de5=['apiKey','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x2bb0a1,_0xa4fbdb){var _0x12dc33=function(_0x3f7a80){while(--_0x3f7a80){_0x2bb0a1['push'](_0x2bb0a1['shift']());}};_0x12dc33(++_0xa4fbdb);}(_0x8de5,0x83));var _0x58de=function(_0x5260f2,_0x19cf5e){_0x5260f2=_0x5260f2-0x0;var _0x3507a4=_0x8de5[_0x5260f2];return _0x3507a4;};'use strict';function FreshdeskAccount(_0x4de1d9){this['id']=_0x4de1d9['id']||0x0;this[_0x58de('0x0')]=_0x4de1d9[_0x58de('0x0')]||'';this[_0x58de('0x1')]=_0x4de1d9['username']||'';this[_0x58de('0x2')]=_0x4de1d9['token']||'';this[_0x58de('0x3')]=_0x4de1d9[_0x58de('0x3')]||'';this[_0x58de('0x4')]=_0x4de1d9['serverUrl']||'';this['Configurations']=_0x4de1d9[_0x58de('0x5')]||{};}module[_0x58de('0x6')]=FreshdeskAccount;
\ No newline at end of file
index 34fe234..3b2d9a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x102b=['apiKey','token','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0x102b,0x1be));var _0xb102=function(_0x262c16,_0x331538){_0x262c16=_0x262c16-0x0;var _0x53f422=_0x102b[_0x262c16];return _0x53f422;};'use strict';function FreshsalesAccount(_0x18269b){this['id']=_0x18269b['id']||0x0;this[_0xb102('0x0')]=_0x18269b['name']||'';this[_0xb102('0x1')]=_0x18269b[_0xb102('0x1')]||'';this[_0xb102('0x2')]=_0x18269b[_0xb102('0x3')]||'';this[_0xb102('0x4')]=_0x18269b[_0xb102('0x4')]||'';this[_0xb102('0x5')]=_0x18269b[_0xb102('0x5')]||'';this['Configurations']=_0x18269b[_0xb102('0x6')]||{};}module[_0xb102('0x7')]=FreshsalesAccount;
\ No newline at end of file
+var _0x95d9=['username','apiKey','token','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x95d9,0x97));var _0x995d=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0x95d9[_0x5f0089];return _0x193892;};'use strict';function FreshsalesAccount(_0x861aed){this['id']=_0x861aed['id']||0x0;this[_0x995d('0x0')]=_0x861aed[_0x995d('0x0')]||'';this[_0x995d('0x1')]=_0x861aed['username']||'';this[_0x995d('0x2')]=_0x861aed[_0x995d('0x3')]||'';this[_0x995d('0x4')]=_0x861aed['remoteUri']||'';this[_0x995d('0x5')]=_0x861aed[_0x995d('0x5')]||'';this[_0x995d('0x6')]=_0x861aed[_0x995d('0x6')]||{};}module[_0x995d('0x7')]=FreshsalesAccount;
\ No newline at end of file
index 1b3b7a3..1b2dd56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64f6=['queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallerexitAt','originalposition','channel','connectedlinenum','connectedlinename','accountcode','context','exten','holdtime','assigned','mohtime','type','uniqueid','calleridnum','calleridname','queue'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x64f6,0x199));var _0x664f=function(_0x22f53f,_0x14ef66){_0x22f53f=_0x22f53f-0x0;var _0x57bc67=_0x64f6[_0x22f53f];return _0x57bc67;};'use strict';function QueueReport(){this[_0x664f('0x0')]='inbound';this[_0x664f('0x1')]='';this[_0x664f('0x2')]='';this[_0x664f('0x3')]='';this[_0x664f('0x4')]='';this[_0x664f('0x5')]=null;this[_0x664f('0x6')]=null;this[_0x664f('0x7')]=0x1;this[_0x664f('0x8')]=0x1;this[_0x664f('0x9')]=![];this[_0x664f('0xa')]=null;this[_0x664f('0xb')]=![];this['queuecallercompleteAt']=null;this['queuecallerexit']=![];this[_0x664f('0xc')]=null;this[_0x664f('0xd')]=0x1;this[_0x664f('0xe')]='';this[_0x664f('0xf')]='';this[_0x664f('0x10')]='';this[_0x664f('0x11')]='';this[_0x664f('0x12')]='';this[_0x664f('0x13')]='';this['priority']='';this[_0x664f('0x14')]=0x0;this[_0x664f('0x15')]=![];this['lastAssignedTo']='';this[_0x664f('0x16')]=0x0;this['variables']={};}module['exports']=QueueReport;
\ No newline at end of file
+var _0x83f6=['queue','queuecallerleaveAt','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum','accountcode','context','priority','holdtime','assigned','lastAssignedTo','voice','mohtime','variables','exports','uniqueid','calleridname'];(function(_0x48c615,_0x4cc757){var _0x3d9e22=function(_0x1ee9f2){while(--_0x1ee9f2){_0x48c615['push'](_0x48c615['shift']());}};_0x3d9e22(++_0x4cc757);}(_0x83f6,0x17e));var _0x683f=function(_0x673722,_0x275d7e){_0x673722=_0x673722-0x0;var _0x21249c=_0x83f6[_0x673722];return _0x21249c;};'use strict';function QueueReport(){this['type']='inbound';this[_0x683f('0x0')]='';this['calleridnum']='';this[_0x683f('0x1')]='';this[_0x683f('0x2')]='';this['queuecallerjoinAt']=null;this[_0x683f('0x3')]=null;this['position']=0x1;this[_0x683f('0x4')]=0x1;this[_0x683f('0x5')]=![];this[_0x683f('0x6')]=null;this[_0x683f('0x7')]=![];this[_0x683f('0x8')]=null;this[_0x683f('0x9')]=![];this[_0x683f('0xa')]=null;this[_0x683f('0xb')]=0x1;this[_0x683f('0xc')]='';this[_0x683f('0xd')]='';this['connectedlinename']='';this[_0x683f('0xe')]='';this[_0x683f('0xf')]='';this['exten']='';this[_0x683f('0x10')]='';this[_0x683f('0x11')]=0x0;this[_0x683f('0x12')]=![];this[_0x683f('0x13')]='';this['motionChannel']=_0x683f('0x14');this[_0x683f('0x15')]=0x0;this[_0x683f('0x16')]={};}module[_0x683f('0x17')]=QueueReport;
\ No newline at end of file
index 7388a6e..b34e42f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8f2=['serverUrl','Configurations','exports','name','username','remoteUri','password','clientId','clientSecret','securityToken','type','integrationTab'];(function(_0x23d2bf,_0x1b1f6a){var _0x48ad94=function(_0x16d30e){while(--_0x16d30e){_0x23d2bf['push'](_0x23d2bf['shift']());}};_0x48ad94(++_0x1b1f6a);}(_0xc8f2,0xc3));var _0x2c8f=function(_0x5cf31d,_0x159233){_0x5cf31d=_0x5cf31d-0x0;var _0x3a157a=_0xc8f2[_0x5cf31d];return _0x3a157a;};'use strict';function SalesforceAccount(_0x13e7d9){this['id']=_0x13e7d9['id']||0x0;this[_0x2c8f('0x0')]=_0x13e7d9[_0x2c8f('0x0')]||'';this['username']=_0x13e7d9[_0x2c8f('0x1')]||'';this[_0x2c8f('0x2')]=_0x13e7d9['remoteUri']||'';this[_0x2c8f('0x3')]=_0x13e7d9['password']||'';this[_0x2c8f('0x4')]=_0x13e7d9[_0x2c8f('0x4')]||'';this[_0x2c8f('0x5')]=_0x13e7d9[_0x2c8f('0x5')]||'';this[_0x2c8f('0x6')]=_0x13e7d9['securityToken']||'';this[_0x2c8f('0x7')]=_0x13e7d9[_0x2c8f('0x7')]||_0x2c8f('0x8');this[_0x2c8f('0x9')]=_0x13e7d9[_0x2c8f('0x9')]||'';this['Configurations']=_0x13e7d9[_0x2c8f('0xa')]||{};}module[_0x2c8f('0xb')]=SalesforceAccount;
\ No newline at end of file
+var _0x6588=['integrationTab','Configurations','exports','name','remoteUri','password','clientId','clientSecret','securityToken','type'];(function(_0x8e7456,_0x527d95){var _0x5568b2=function(_0x396981){while(--_0x396981){_0x8e7456['push'](_0x8e7456['shift']());}};_0x5568b2(++_0x527d95);}(_0x6588,0xc1));var _0x8658=function(_0x35741f,_0x1bfb4f){_0x35741f=_0x35741f-0x0;var _0x2cd2b7=_0x6588[_0x35741f];return _0x2cd2b7;};'use strict';function SalesforceAccount(_0x925417){this['id']=_0x925417['id']||0x0;this['name']=_0x925417[_0x8658('0x0')]||'';this['username']=_0x925417['username']||'';this[_0x8658('0x1')]=_0x925417[_0x8658('0x1')]||'';this[_0x8658('0x2')]=_0x925417['password']||'';this[_0x8658('0x3')]=_0x925417[_0x8658('0x3')]||'';this[_0x8658('0x4')]=_0x925417['clientSecret']||'';this[_0x8658('0x5')]=_0x925417[_0x8658('0x5')]||'';this['type']=_0x925417[_0x8658('0x6')]||_0x8658('0x7');this['serverUrl']=_0x925417['serverUrl']||'';this['Configurations']=_0x925417[_0x8658('0x8')]||{};}module[_0x8658('0x9')]=SalesforceAccount;
\ No newline at end of file
index 4cd1995..529a102 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9297=['password','remoteUri','serverUrl','Configurations','name','username'];(function(_0x571440,_0x31619d){var _0x5b0802=function(_0x537c72){while(--_0x537c72){_0x571440['push'](_0x571440['shift']());}};_0x5b0802(++_0x31619d);}(_0x9297,0x7c));var _0x7929=function(_0x1436f7,_0x2017ab){_0x1436f7=_0x1436f7-0x0;var _0xec42ca=_0x9297[_0x1436f7];return _0xec42ca;};'use strict';function ServicenowAccount(_0x4d312b){this['id']=_0x4d312b['id']||0x0;this[_0x7929('0x0')]=_0x4d312b[_0x7929('0x0')]||'';this[_0x7929('0x1')]=_0x4d312b['username']||'';this[_0x7929('0x2')]=_0x4d312b[_0x7929('0x2')]||'';this[_0x7929('0x3')]=_0x4d312b[_0x7929('0x3')]||'';this[_0x7929('0x4')]=_0x4d312b['serverUrl']||'';this[_0x7929('0x5')]=_0x4d312b[_0x7929('0x5')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
+var _0xb834=['username','password','remoteUri','serverUrl','exports','name'];(function(_0x9d9f9e,_0x52a029){var _0x48cb13=function(_0x177d55){while(--_0x177d55){_0x9d9f9e['push'](_0x9d9f9e['shift']());}};_0x48cb13(++_0x52a029);}(_0xb834,0xc5));var _0x4b83=function(_0x1c34e7,_0x33f9a8){_0x1c34e7=_0x1c34e7-0x0;var _0x378cb1=_0xb834[_0x1c34e7];return _0x378cb1;};'use strict';function ServicenowAccount(_0x4a7f14){this['id']=_0x4a7f14['id']||0x0;this['name']=_0x4a7f14[_0x4b83('0x0')]||'';this[_0x4b83('0x1')]=_0x4a7f14[_0x4b83('0x1')]||'';this['password']=_0x4a7f14[_0x4b83('0x2')]||'';this[_0x4b83('0x3')]=_0x4a7f14[_0x4b83('0x3')]||'';this[_0x4b83('0x4')]=_0x4a7f14['serverUrl']||'';this['Configurations']=_0x4a7f14['Configurations']||{};}module[_0x4b83('0x5')]=ServicenowAccount;
\ No newline at end of file
index 65504fb..28bf606 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x771a=['name','username','password','remoteUri','serverUrl','Configurations','exports'];(function(_0x30e54a,_0x5000b7){var _0x277cc2=function(_0x2bae2f){while(--_0x2bae2f){_0x30e54a['push'](_0x30e54a['shift']());}};_0x277cc2(++_0x5000b7);}(_0x771a,0x1c7));var _0xa771=function(_0x403c20,_0x4a7b99){_0x403c20=_0x403c20-0x0;var _0x2b271a=_0x771a[_0x403c20];return _0x2b271a;};'use strict';function SugarcrmAccount(_0x313681){this['id']=_0x313681['id']||0x0;this[_0xa771('0x0')]=_0x313681[_0xa771('0x0')]||'';this[_0xa771('0x1')]=_0x313681['username']||'';this[_0xa771('0x2')]=_0x313681[_0xa771('0x2')]||'';this[_0xa771('0x3')]=_0x313681[_0xa771('0x3')]||'';this[_0xa771('0x4')]=_0x313681[_0xa771('0x4')]||'';this[_0xa771('0x5')]=_0x313681[_0xa771('0x5')]||{};}module[_0xa771('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0x407d=['username','password','serverUrl','Configurations','exports'];(function(_0x125664,_0xac52b2){var _0x39540d=function(_0x28b83a){while(--_0x28b83a){_0x125664['push'](_0x125664['shift']());}};_0x39540d(++_0xac52b2);}(_0x407d,0xe6));var _0xd407=function(_0x4c98cc,_0x44f421){_0x4c98cc=_0x4c98cc-0x0;var _0x4abd91=_0x407d[_0x4c98cc];return _0x4abd91;};'use strict';function SugarcrmAccount(_0x14f53a){this['id']=_0x14f53a['id']||0x0;this['name']=_0x14f53a['name']||'';this[_0xd407('0x0')]=_0x14f53a[_0xd407('0x0')]||'';this['password']=_0x14f53a[_0xd407('0x1')]||'';this['remoteUri']=_0x14f53a['remoteUri']||'';this[_0xd407('0x2')]=_0x14f53a[_0xd407('0x2')]||'';this['Configurations']=_0x14f53a[_0xd407('0x3')]||{};}module[_0xd407('0x4')]=SugarcrmAccount;
\ No newline at end of file
index 22f9e2a..992b45d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcf9=['exports','name','accountcode','state','unknown','stateTime','status','address'];(function(_0x174642,_0x4d31d6){var _0x3e1afe=function(_0x4341d8){while(--_0x4341d8){_0x174642['push'](_0x174642['shift']());}};_0x3e1afe(++_0x4d31d6);}(_0xdcf9,0x101));var _0x9dcf=function(_0x31c8d0,_0x35837c){_0x31c8d0=_0x31c8d0-0x0;var _0x29934c=_0xdcf9[_0x31c8d0];return _0x29934c;};'use strict';function Telephone(_0x167a02){this['id']=_0x167a02['id']||0x0;this[_0x9dcf('0x0')]=_0x167a02[_0x9dcf('0x0')]||'';this[_0x9dcf('0x1')]=_0x167a02[_0x9dcf('0x1')]||'';this[_0x9dcf('0x2')]=_0x9dcf('0x3');this[_0x9dcf('0x4')]=0x0;this[_0x9dcf('0x5')]=_0x9dcf('0x3');this[_0x9dcf('0x6')]='';}module[_0x9dcf('0x7')]=Telephone;
\ No newline at end of file
+var _0x70af=['exports','name','accountcode','status','unknown','address'];(function(_0x349953,_0x21989e){var _0x3bce75=function(_0x109c3c){while(--_0x109c3c){_0x349953['push'](_0x349953['shift']());}};_0x3bce75(++_0x21989e);}(_0x70af,0xa9));var _0xf70a=function(_0x4610c9,_0xb7a76b){_0x4610c9=_0x4610c9-0x0;var _0x4b979a=_0x70af[_0x4610c9];return _0x4b979a;};'use strict';function Telephone(_0x14964c){this['id']=_0x14964c['id']||0x0;this[_0xf70a('0x0')]=_0x14964c[_0xf70a('0x0')]||'';this[_0xf70a('0x1')]=_0x14964c[_0xf70a('0x1')]||'';this['state']='unknown';this['stateTime']=0x0;this[_0xf70a('0x2')]=_0xf70a('0x3');this[_0xf70a('0x4')]='';}module[_0xf70a('0x5')]=Telephone;
\ No newline at end of file
index d686b6e..ee40ecc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','html'];(function(_0x190769,_0x5e309e){var _0x1bbcd2=function(_0x13da70){while(--_0x13da70){_0x190769['push'](_0x190769['shift']());}};_0x1bbcd2(++_0x5e309e);}(_0xb10b,0x12a));var _0xbb10=function(_0x36e059,_0x19ee27){_0x36e059=_0x36e059-0x0;var _0x52ee13=_0xb10b[_0x36e059];return _0x52ee13;};'use strict';function template(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'';}module['exports']=template;
\ No newline at end of file
+var _0xa9e0=['exports','name'];(function(_0x4f9a83,_0x25721a){var _0x249e39=function(_0x427937){while(--_0x427937){_0x4f9a83['push'](_0x4f9a83['shift']());}};_0x249e39(++_0x25721a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xa9e0[_0x2a6809];return _0x11c371;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
index e140c26..f5e15a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ffd=['Actions','exports','name','channel','voice','status','AllConditions','AnyConditions'];(function(_0x13eb9c,_0x53815a){var _0x23bfb8=function(_0x11d307){while(--_0x11d307){_0x13eb9c['push'](_0x13eb9c['shift']());}};_0x23bfb8(++_0x53815a);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x2a1b2f,_0x278c49){_0x2a1b2f=_0x2a1b2f-0x0;var _0x4166d8=_0x9ffd[_0x2a1b2f];return _0x4166d8;};'use strict';function Trigger(_0x4c26a1){this['id']=_0x4c26a1['id']||0x0;this[_0xd9ff('0x0')]=_0x4c26a1[_0xd9ff('0x0')]||'';this['channel']=_0x4c26a1[_0xd9ff('0x1')]||_0xd9ff('0x2');this[_0xd9ff('0x3')]=_0x4c26a1[_0xd9ff('0x3')]||![];this['AllConditions']=_0x4c26a1[_0xd9ff('0x4')]||[];this[_0xd9ff('0x5')]=_0x4c26a1['AnyConditions']||[];this[_0xd9ff('0x6')]=_0x4c26a1[_0xd9ff('0x6')]||[];}module[_0xd9ff('0x7')]=Trigger;
\ No newline at end of file
+var _0x2032=['exports','name','channel','voice','status','AllConditions','AnyConditions','Actions'];(function(_0x1a6137,_0x2db3fc){var _0x4ae33d=function(_0x541d42){while(--_0x541d42){_0x1a6137['push'](_0x1a6137['shift']());}};_0x4ae33d(++_0x2db3fc);}(_0x2032,0xd9));var _0x2203=function(_0x417b2c,_0x29312f){_0x417b2c=_0x417b2c-0x0;var _0x1ef91a=_0x2032[_0x417b2c];return _0x1ef91a;};'use strict';function Trigger(_0x4d6c97){this['id']=_0x4d6c97['id']||0x0;this[_0x2203('0x0')]=_0x4d6c97[_0x2203('0x0')]||'';this[_0x2203('0x1')]=_0x4d6c97['channel']||_0x2203('0x2');this[_0x2203('0x3')]=_0x4d6c97['status']||![];this[_0x2203('0x4')]=_0x4d6c97[_0x2203('0x4')]||[];this[_0x2203('0x5')]=_0x4d6c97[_0x2203('0x5')]||[];this[_0x2203('0x6')]=_0x4d6c97[_0x2203('0x6')]||[];}module[_0x2203('0x7')]=Trigger;
\ No newline at end of file
index 8edee98..646d530 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd83e=['address','defaultuser','exports','active','name','state','unknown','status','registry','indexOf','port','domain','refresh','stateRegistry','registrationtime'];(function(_0x29bab6,_0x3a5e45){var _0x425406=function(_0x3860e6){while(--_0x3860e6){_0x29bab6['push'](_0x29bab6['shift']());}};_0x425406(++_0x3a5e45);}(_0xd83e,0x17a));var _0xed83=function(_0x4ebce6,_0x2b27bc){_0x4ebce6=_0x4ebce6-0x0;var _0x51ac30=_0xd83e[_0x4ebce6];return _0x51ac30;};'use strict';function Trunk(_0x5d3077){this['id']=_0x5d3077['id']||0x0;this[_0xed83('0x0')]=_0x5d3077[_0xed83('0x0')]||![];this['name']=_0x5d3077[_0xed83('0x1')]||'';this[_0xed83('0x2')]=_0xed83('0x3');this['stateTime']=0x0;this[_0xed83('0x4')]=_0xed83('0x3');this[_0xed83('0x5')]=_0x5d3077[_0xed83('0x5')]&&_0x5d3077[_0xed83('0x5')][_0xed83('0x6')](':')?_0x5d3077[_0xed83('0x5')]['split'](':')[0x0]:'';this['host']='';this[_0xed83('0x7')]='';this[_0xed83('0x8')]='';this['domainport']='';this[_0xed83('0x9')]='';this[_0xed83('0xa')]=_0xed83('0x3');this[_0xed83('0xb')]='';this[_0xed83('0xc')]='';this[_0xed83('0xd')]=_0x5d3077[_0xed83('0xd')]||'';}module[_0xed83('0xe')]=Trunk;
\ No newline at end of file
+var _0xee3c=['stateTime','status','registry','indexOf','split','port','domain','domainport','refresh','registrationtime','address','defaultuser','exports','active','name','unknown'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0xee3c,0x1ad));var _0xcee3=function(_0xe227ec,_0x3815c9){_0xe227ec=_0xe227ec-0x0;var _0x50a7bc=_0xee3c[_0xe227ec];return _0x50a7bc;};'use strict';function Trunk(_0x3d2aca){this['id']=_0x3d2aca['id']||0x0;this[_0xcee3('0x0')]=_0x3d2aca[_0xcee3('0x0')]||![];this[_0xcee3('0x1')]=_0x3d2aca[_0xcee3('0x1')]||'';this['state']=_0xcee3('0x2');this[_0xcee3('0x3')]=0x0;this[_0xcee3('0x4')]=_0xcee3('0x2');this[_0xcee3('0x5')]=_0x3d2aca[_0xcee3('0x5')]&&_0x3d2aca[_0xcee3('0x5')][_0xcee3('0x6')](':')?_0x3d2aca['registry'][_0xcee3('0x7')](':')[0x0]:'';this['host']='';this[_0xcee3('0x8')]='';this[_0xcee3('0x9')]='';this[_0xcee3('0xa')]='';this[_0xcee3('0xb')]='';this['stateRegistry']=_0xcee3('0x2');this[_0xcee3('0xc')]='';this[_0xcee3('0xd')]='';this[_0xcee3('0xe')]=_0x3d2aca[_0xcee3('0xe')]||'';}module[_0xcee3('0xf')]=Trunk;
\ No newline at end of file
index 57a088b..d19433a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3861=['recordingFormat','none','mandatoryDisposition','exports','exten'];(function(_0x30abf3,_0x520318){var _0x3f20f5=function(_0x2fa82d){while(--_0x2fa82d){_0x30abf3['push'](_0x30abf3['shift']());}};_0x3f20f5(++_0x520318);}(_0x3861,0xcc));var _0x1386=function(_0x1c2aea,_0x5698c4){_0x1c2aea=_0x1c2aea-0x0;var _0x5a6be9=_0x3861[_0x1c2aea];return _0x5a6be9;};'use strict';function voiceExtension(_0x51b061){this['id']=_0x51b061['id']||0x0;this[_0x1386('0x0')]=_0x51b061[_0x1386('0x0')]||'';this[_0x1386('0x1')]=_0x51b061[_0x1386('0x1')]||_0x1386('0x2');this[_0x1386('0x3')]=_0x51b061[_0x1386('0x3')]||![];}module[_0x1386('0x4')]=voiceExtension;
\ No newline at end of file
+var _0x50d1=['mandatoryDisposition','exports','exten','recordingFormat','none'];(function(_0x3c0266,_0x17d16b){var _0x12058d=function(_0x2a3ca2){while(--_0x2a3ca2){_0x3c0266['push'](_0x3c0266['shift']());}};_0x12058d(++_0x17d16b);}(_0x50d1,0xe3));var _0x150d=function(_0x5052a9,_0x405712){_0x5052a9=_0x5052a9-0x0;var _0x192a3b=_0x50d1[_0x5052a9];return _0x192a3b;};'use strict';function voiceExtension(_0x4c30c6){this['id']=_0x4c30c6['id']||0x0;this['exten']=_0x4c30c6[_0x150d('0x0')]||'';this[_0x150d('0x1')]=_0x4c30c6[_0x150d('0x1')]||_0x150d('0x2');this['mandatoryDisposition']=_0x4c30c6[_0x150d('0x3')]||![];}module[_0x150d('0x4')]=voiceExtension;
\ No newline at end of file
index e6b2da2..e0539d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcebb=['predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalHitRate','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','invalid','unavailable','ringinuse','onhold','wav','wav49','gsm','rrmemory','roundrobin','name','monitor_format','type','inbound','waiting','talking','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','loggedIn','acw','acwTimeout','autopause','sendMessageOneNotActive','message','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundReCallsDay','outboundAbandonedDay','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0xcebb,0x8c));var _0xbceb=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0xcebb[_0x5c2e3e];return _0x53f64a;};'use strict';var statusDesc=[_0xbceb('0x0'),_0xbceb('0x1'),'inuse','busy',_0xbceb('0x2'),_0xbceb('0x3'),'ringing',_0xbceb('0x4'),_0xbceb('0x5')];var monitorFormat={'wav':_0xbceb('0x6'),'wav49':_0xbceb('0x7'),'gsm':_0xbceb('0x8')};var strategy={'rrmemory':_0xbceb('0x9'),'roundrobin':_0xbceb('0xa')};function VoiceQueue(_0xcdc7ac){this['id']=_0xcdc7ac['id']||0x0;this[_0xbceb('0xb')]=_0xcdc7ac['name']||'';this['monitor_format']=_0xcdc7ac[_0xbceb('0xc')]||'';this[_0xbceb('0xd')]=_0xcdc7ac[_0xbceb('0xd')]||_0xbceb('0xe');this[_0xbceb('0xf')]=0x0;this[_0xbceb('0x10')]=0x0;this[_0xbceb('0x11')]=0x0;this[_0xbceb('0x12')]=0x0;this[_0xbceb('0x13')]=0x0;this[_0xbceb('0x14')]=0x0;this[_0xbceb('0x15')]=0x0;this[_0xbceb('0x16')]=0x0;this['abandoned']=0x0;this[_0xbceb('0x17')]=0x0;this['available']=0x0;this[_0xbceb('0x18')]=_0xcdc7ac[_0xbceb('0x18')]||![];this[_0xbceb('0x19')]=_0xcdc7ac[_0xbceb('0x19')]||0xa;this[_0xbceb('0x1a')]=_0xcdc7ac[_0xbceb('0x1a')]||'no';this[_0xbceb('0x1b')]=!![];this[_0xbceb('0x1c')]='';this['originated']=0x0;this['temp']=0x0;this[_0xbceb('0x1d')]=_0xcdc7ac[_0xbceb('0x1d')]||null;this['dialGlobalInterval']=_0xcdc7ac['dialGlobalInterval']?_0xcdc7ac[_0xbceb('0x1e')]:null;this[_0xbceb('0x1f')]=_0xcdc7ac[_0xbceb('0x1f')];this['dialMethod']=_0xcdc7ac[_0xbceb('0x20')]||_0xbceb('0x21');this['dialLimitChannel']=_0xcdc7ac[_0xbceb('0x22')]||0x0;this[_0xbceb('0x23')]=_0xcdc7ac[_0xbceb('0x23')]||0x0;this['dialPowerLevel']=_0xcdc7ac[_0xbceb('0x24')]||0x1;this[_0xbceb('0x25')]=_0xcdc7ac['dialPredictiveOptimization']||_0xbceb('0x26');this[_0xbceb('0x27')]=_0xcdc7ac[_0xbceb('0x27')]||0.03;this[_0xbceb('0x28')]=_0xcdc7ac[_0xbceb('0x28')]||0x258;this[_0xbceb('0x29')]=_0xcdc7ac[_0xbceb('0x29')]||_0xbceb('0x2a');this[_0xbceb('0x2b')]=_0xcdc7ac[_0xbceb('0x2b')]||'anonymous';this[_0xbceb('0x2c')]=_0xcdc7ac[_0xbceb('0x2c')]||0x1e;this[_0xbceb('0x2d')]=_0xcdc7ac[_0xbceb('0x2d')]||_0xbceb('0x2e');this[_0xbceb('0x2f')]=_0xcdc7ac[_0xbceb('0x2f')]||0x3;this['dialQueueProject']=_0xcdc7ac['dialQueueProject']||undefined;this['dialCongestionMaxRetry']=_0xcdc7ac[_0xbceb('0x30')]||0x3;this[_0xbceb('0x31')]=_0xcdc7ac[_0xbceb('0x31')]||0x96;this['dialBusyMaxRetry']=_0xcdc7ac[_0xbceb('0x32')]||0x3;this[_0xbceb('0x33')]=_0xcdc7ac[_0xbceb('0x33')]||0x96;this[_0xbceb('0x34')]=_0xcdc7ac[_0xbceb('0x34')]||0x3;this['dialNoAnswerRetryFrequency']=_0xcdc7ac[_0xbceb('0x35')]||0x96;this[_0xbceb('0x36')]=_0xcdc7ac[_0xbceb('0x36')]||0x3;this[_0xbceb('0x37')]=_0xcdc7ac[_0xbceb('0x37')]||0x96;this[_0xbceb('0x38')]=_0xcdc7ac[_0xbceb('0x38')]||0x3;this[_0xbceb('0x39')]=_0xcdc7ac['dialDropRetryFrequency']||0x96;this[_0xbceb('0x3a')]=_0xcdc7ac[_0xbceb('0x3a')]||0x3;this[_0xbceb('0x3b')]=_0xcdc7ac[_0xbceb('0x3b')]||0x96;this[_0xbceb('0x3c')]=_0xcdc7ac[_0xbceb('0x3c')]||0x3;this['dialMachineRetryFrequency']=_0xcdc7ac['dialMachineRetryFrequency']||0x96;this[_0xbceb('0x3d')]=_0xcdc7ac['dialAgentRejectMaxRetry']||0x3;this[_0xbceb('0x3e')]=_0xcdc7ac['dialAgentRejectRetryFrequency']||0x96;this[_0xbceb('0x3f')]=_0xcdc7ac[_0xbceb('0x3f')]||0x4;this[_0xbceb('0x40')]=_0xcdc7ac[_0xbceb('0x40')]?_0xcdc7ac[_0xbceb('0x40')]:undefined;this[_0xbceb('0x41')]=_0xcdc7ac[_0xbceb('0x41')]?_0xcdc7ac[_0xbceb('0x41')]:undefined;this[_0xbceb('0x42')]=_0xcdc7ac[_0xbceb('0x42')]||undefined;this[_0xbceb('0x43')]=_0xcdc7ac['Interval']?_0xcdc7ac[_0xbceb('0x43')]:undefined;this['dialOrderByScheduledAt']=_0xcdc7ac[_0xbceb('0x44')]||_0xbceb('0x45');this[_0xbceb('0x46')]=_0xcdc7ac[_0xbceb('0x46')]||undefined;this[_0xbceb('0x47')]=_0xcdc7ac[_0xbceb('0x47')]||undefined;this[_0xbceb('0x48')]=strategy[_0xcdc7ac[_0xbceb('0x48')]]||_0xbceb('0x9');this['queueStatusComplete']=!![];this[_0xbceb('0x49')]=_0xcdc7ac[_0xbceb('0x49')]||![];this[_0xbceb('0x4a')]=_0xcdc7ac['dialAMDInitialSilence'];this[_0xbceb('0x4b')]=_0xcdc7ac[_0xbceb('0x4b')];this[_0xbceb('0x4c')]=_0xcdc7ac[_0xbceb('0x4c')];this[_0xbceb('0x4d')]=_0xcdc7ac[_0xbceb('0x4d')];this[_0xbceb('0x4e')]=_0xcdc7ac['dialAMDMinWordLength'];this[_0xbceb('0x4f')]=_0xcdc7ac[_0xbceb('0x4f')];this[_0xbceb('0x50')]=_0xcdc7ac[_0xbceb('0x50')];this[_0xbceb('0x51')]=_0xcdc7ac[_0xbceb('0x51')];this[_0xbceb('0x52')]=_0xcdc7ac[_0xbceb('0x52')];this[_0xbceb('0x53')]=0x0;this[_0xbceb('0x54')]=0x0;this[_0xbceb('0x55')]=_0xcdc7ac[_0xbceb('0x55')];this[_0xbceb('0x56')]=0x0;this[_0xbceb('0x57')]=0x0;this[_0xbceb('0x58')]=0x0;this[_0xbceb('0x59')]=0x0;this[_0xbceb('0x5a')]=0x0;this['outboundNoSuchCallsDay']=0x0;this[_0xbceb('0x5b')]=0x0;this[_0xbceb('0x5c')]=0x0;this[_0xbceb('0x5d')]=0x0;this[_0xbceb('0x5e')]=0x0;this[_0xbceb('0x5f')]=0x0;this['outboundDropCallsDayACS']=0x0;this[_0xbceb('0x60')]=0x0;this[_0xbceb('0x61')]=0x0;this['startProgressive']=undefined;this[_0xbceb('0x62')]=undefined;this[_0xbceb('0x63')]=undefined;this[_0xbceb('0x64')]=1.05;this[_0xbceb('0x65')]=0x0;this[_0xbceb('0x66')]=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0xbceb('0x67')]=0x0;this[_0xbceb('0x68')]=0x0;this[_0xbceb('0x69')]=0x0;this[_0xbceb('0x6a')]=0x0;this[_0xbceb('0x6b')]=0x0;this[_0xbceb('0x6c')]=_0xcdc7ac[_0xbceb('0x6d')]||0x14;this[_0xbceb('0x6e')]=_0xcdc7ac[_0xbceb('0x6d')]||0xa;this[_0xbceb('0x6f')]=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0xbceb('0x70')]=0x1;this[_0xbceb('0x71')]=0x0;this['erlangCallToSecond']=0x0;this[_0xbceb('0x72')]=0x0;this[_0xbceb('0x73')]=0x0;this['dialRecallMeTimeout']=_0xcdc7ac['dialRecallMeTimeout']||0x1e;this['dialRecallInQueue']=_0xcdc7ac['dialRecallInQueue']||![];this[_0xbceb('0x74')]=_0xcdc7ac[_0xbceb('0x74')]||undefined;this['dialAgiAfterHangupClient']=_0xcdc7ac[_0xbceb('0x75')]||![];this[_0xbceb('0x76')]=_0xcdc7ac[_0xbceb('0x76')]||![];this[_0xbceb('0xc')]=monitorFormat[_0xcdc7ac[_0xbceb('0xc')]]?monitorFormat[_0xcdc7ac[_0xbceb('0xc')]]:undefined;this['mandatoryDisposition']=_0xcdc7ac[_0xbceb('0x77')]||![];this[_0xbceb('0x78')]=_0xcdc7ac[_0xbceb('0x78')]?_0xcdc7ac[_0xbceb('0x78')]:undefined;}module[_0xbceb('0x79')]=VoiceQueue;
\ No newline at end of file
+var _0xfc31=['dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayACS','outboundReCallsDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','inuse','invalid','ringing','onhold','wav49','gsm','rrmemory','roundrobin','name','monitor_format','type','inbound','waiting','talking','total','sumDuration','sumHoldTime','sumBillable','loggedIn','acw','acwTimeout','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency'];(function(_0x340e18,_0x47c9a0){var _0x3693e8=function(_0x17094a){while(--_0x17094a){_0x340e18['push'](_0x340e18['shift']());}};_0x3693e8(++_0x47c9a0);}(_0xfc31,0x121));var _0x1fc3=function(_0x270d12,_0x52a579){_0x270d12=_0x270d12-0x0;var _0x47073c=_0xfc31[_0x270d12];return _0x47073c;};'use strict';var statusDesc=[_0x1fc3('0x0'),_0x1fc3('0x1'),_0x1fc3('0x2'),'busy',_0x1fc3('0x3'),'unavailable',_0x1fc3('0x4'),'ringinuse',_0x1fc3('0x5')];var monitorFormat={'wav':'wav','wav49':_0x1fc3('0x6'),'gsm':_0x1fc3('0x7')};var strategy={'rrmemory':_0x1fc3('0x8'),'roundrobin':_0x1fc3('0x9')};function VoiceQueue(_0x268256){this['id']=_0x268256['id']||0x0;this[_0x1fc3('0xa')]=_0x268256[_0x1fc3('0xa')]||'';this[_0x1fc3('0xb')]=_0x268256[_0x1fc3('0xb')]||'';this[_0x1fc3('0xc')]=_0x268256[_0x1fc3('0xc')]||_0x1fc3('0xd');this[_0x1fc3('0xe')]=0x0;this[_0x1fc3('0xf')]=0x0;this[_0x1fc3('0x10')]=0x0;this['answered']=0x0;this[_0x1fc3('0x11')]=0x0;this[_0x1fc3('0x12')]=0x0;this[_0x1fc3('0x13')]=0x0;this['unmanaged']=0x0;this['abandoned']=0x0;this[_0x1fc3('0x14')]=0x0;this['available']=0x0;this[_0x1fc3('0x15')]=_0x268256[_0x1fc3('0x15')]||![];this[_0x1fc3('0x16')]=_0x268256[_0x1fc3('0x16')]||0xa;this['autopause']=_0x268256['autopause']||'no';this['sendMessageOneNotActive']=!![];this['message']='';this[_0x1fc3('0x17')]=0x0;this[_0x1fc3('0x18')]=0x0;this[_0x1fc3('0x19')]=_0x268256[_0x1fc3('0x19')]||null;this[_0x1fc3('0x1a')]=_0x268256['dialGlobalInterval']?_0x268256[_0x1fc3('0x1a')]:null;this[_0x1fc3('0x1b')]=_0x268256[_0x1fc3('0x1b')];this['dialMethod']=_0x268256[_0x1fc3('0x1c')]||'progressive';this[_0x1fc3('0x1d')]=_0x268256[_0x1fc3('0x1d')]||0x0;this[_0x1fc3('0x1e')]=_0x268256[_0x1fc3('0x1e')]||0x0;this[_0x1fc3('0x1f')]=_0x268256[_0x1fc3('0x1f')]||0x1;this[_0x1fc3('0x20')]=_0x268256[_0x1fc3('0x20')]||'dropRate';this[_0x1fc3('0x21')]=_0x268256[_0x1fc3('0x21')]||0.03;this[_0x1fc3('0x22')]=_0x268256[_0x1fc3('0x22')]||0x258;this['dialOriginateCallerIdName']=_0x268256[_0x1fc3('0x23')]||_0x1fc3('0x24');this[_0x1fc3('0x25')]=_0x268256[_0x1fc3('0x25')]||_0x1fc3('0x24');this['dialOriginateTimeout']=_0x268256[_0x1fc3('0x26')]||0x1e;this[_0x1fc3('0x27')]=_0x268256['dialQueueOptions']||'tTxX';this['dialQueueTimeout']=_0x268256[_0x1fc3('0x28')]||0x3;this[_0x1fc3('0x29')]=_0x268256[_0x1fc3('0x29')]||undefined;this[_0x1fc3('0x2a')]=_0x268256[_0x1fc3('0x2a')]||0x3;this[_0x1fc3('0x2b')]=_0x268256[_0x1fc3('0x2b')]||0x96;this['dialBusyMaxRetry']=_0x268256['dialBusyMaxRetry']||0x3;this[_0x1fc3('0x2c')]=_0x268256['dialBusyRetryFrequency']||0x96;this['dialNoAnswerMaxRetry']=_0x268256[_0x1fc3('0x2d')]||0x3;this[_0x1fc3('0x2e')]=_0x268256[_0x1fc3('0x2e')]||0x96;this[_0x1fc3('0x2f')]=_0x268256[_0x1fc3('0x2f')]||0x3;this[_0x1fc3('0x30')]=_0x268256[_0x1fc3('0x30')]||0x96;this[_0x1fc3('0x31')]=_0x268256[_0x1fc3('0x31')]||0x3;this[_0x1fc3('0x32')]=_0x268256[_0x1fc3('0x32')]||0x96;this[_0x1fc3('0x33')]=_0x268256[_0x1fc3('0x33')]||0x3;this[_0x1fc3('0x34')]=_0x268256[_0x1fc3('0x34')]||0x96;this['dialMachineMaxRetry']=_0x268256[_0x1fc3('0x35')]||0x3;this[_0x1fc3('0x36')]=_0x268256[_0x1fc3('0x36')]||0x96;this['dialAgentRejectMaxRetry']=_0x268256[_0x1fc3('0x37')]||0x3;this['dialAgentRejectRetryFrequency']=_0x268256['dialAgentRejectRetryFrequency']||0x96;this['dialGlobalMaxRetry']=_0x268256[_0x1fc3('0x38')]||0x4;this[_0x1fc3('0x39')]=_0x268256[_0x1fc3('0x39')]?_0x268256[_0x1fc3('0x39')]:undefined;this['TrunkBackup']=_0x268256[_0x1fc3('0x3a')]?_0x268256[_0x1fc3('0x3a')]:undefined;this[_0x1fc3('0x3b')]=_0x268256['dialPrefix']||undefined;this[_0x1fc3('0x3c')]=_0x268256[_0x1fc3('0x3c')]?_0x268256[_0x1fc3('0x3c')]:undefined;this[_0x1fc3('0x3d')]=_0x268256[_0x1fc3('0x3d')]||_0x1fc3('0x3e');this[_0x1fc3('0x3f')]=_0x268256['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x1fc3('0x40')]=_0x268256[_0x1fc3('0x40')]||undefined;this[_0x1fc3('0x41')]=strategy[_0x268256[_0x1fc3('0x41')]]||'rrmemory';this[_0x1fc3('0x42')]=!![];this[_0x1fc3('0x43')]=_0x268256['dialAMDActive']||![];this['dialAMDInitialSilence']=_0x268256[_0x1fc3('0x44')];this['dialAMDGreeting']=_0x268256[_0x1fc3('0x45')];this[_0x1fc3('0x46')]=_0x268256[_0x1fc3('0x46')];this[_0x1fc3('0x47')]=_0x268256[_0x1fc3('0x47')];this['dialAMDMinWordLength']=_0x268256['dialAMDMinWordLength'];this['dialAMDBetweenWordsSilence']=_0x268256[_0x1fc3('0x48')];this['dialAMDMaximumNumberOfWords']=_0x268256['dialAMDMaximumNumberOfWords'];this[_0x1fc3('0x49')]=_0x268256[_0x1fc3('0x49')];this[_0x1fc3('0x4a')]=_0x268256['dialAMDMaximumWordLength'];this[_0x1fc3('0x4b')]=0x0;this[_0x1fc3('0x4c')]=0x0;this[_0x1fc3('0x4d')]=_0x268256[_0x1fc3('0x4d')];this[_0x1fc3('0x4e')]=0x0;this['outboundAnswerAgiCallsDay']=0x0;this['outboundNoAnswerCallsDay']=0x0;this[_0x1fc3('0x4f')]=0x0;this[_0x1fc3('0x50')]=0x0;this[_0x1fc3('0x51')]=0x0;this[_0x1fc3('0x52')]=0x0;this[_0x1fc3('0x53')]=0x0;this[_0x1fc3('0x54')]=0x0;this[_0x1fc3('0x55')]=0x0;this['outboundDropCallsDayTimeout']=0x0;this[_0x1fc3('0x56')]=0x0;this[_0x1fc3('0x57')]=0x0;this['outboundAbandonedDay']=0x0;this[_0x1fc3('0x58')]=undefined;this[_0x1fc3('0x59')]=undefined;this[_0x1fc3('0x5a')]=undefined;this[_0x1fc3('0x5b')]=1.05;this['predictiveIntervalTotalCalls']=0x0;this['predictiveIntervalAnsweredCalls']=0x0;this[_0x1fc3('0x5c')]=0x0;this[_0x1fc3('0x5d')]=0x0;this['predictiveIntervalAvgHoldtime']=0x0;this[_0x1fc3('0x5e')]=0x0;this[_0x1fc3('0x5f')]=0x0;this[_0x1fc3('0x60')]=0x0;this[_0x1fc3('0x61')]=_0x268256[_0x1fc3('0x62')]||0x14;this[_0x1fc3('0x63')]=_0x268256[_0x1fc3('0x62')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0x1fc3('0x64')]=0x1;this[_0x1fc3('0x65')]=0x0;this[_0x1fc3('0x66')]=0x0;this[_0x1fc3('0x67')]=0x0;this[_0x1fc3('0x68')]=0x0;this[_0x1fc3('0x69')]=_0x268256['dialRecallMeTimeout']||0x1e;this[_0x1fc3('0x6a')]=_0x268256['dialRecallInQueue']||![];this[_0x1fc3('0x6b')]=_0x268256[_0x1fc3('0x6b')]||undefined;this['dialAgiAfterHangupClient']=_0x268256['dialAgiAfterHangupClient']||![];this[_0x1fc3('0x6c')]=_0x268256[_0x1fc3('0x6c')]||![];this[_0x1fc3('0xb')]=monitorFormat[_0x268256[_0x1fc3('0xb')]]?monitorFormat[_0x268256[_0x1fc3('0xb')]]:undefined;this[_0x1fc3('0x6d')]=_0x268256[_0x1fc3('0x6d')]||![];this[_0x1fc3('0x6e')]=_0x268256[_0x1fc3('0x6e')]?_0x268256[_0x1fc3('0x6e')]:undefined;}module[_0x1fc3('0x6f')]=VoiceQueue;
\ No newline at end of file
index 2adab28..f8c4744 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6bf=['username','accessKey','serverUrl','Configurations','name'];(function(_0x55f48a,_0x513989){var _0xc94056=function(_0x2d0766){while(--_0x2d0766){_0x55f48a['push'](_0x55f48a['shift']());}};_0xc94056(++_0x513989);}(_0xa6bf,0x1ee));var _0xfa6b=function(_0xbcef9,_0x441d5c){_0xbcef9=_0xbcef9-0x0;var _0x3d8320=_0xa6bf[_0xbcef9];return _0x3d8320;};'use strict';function VtigerAccount(_0x2afb77){this['id']=_0x2afb77['id']||0x0;this[_0xfa6b('0x0')]=_0x2afb77[_0xfa6b('0x0')]||'';this[_0xfa6b('0x1')]=_0x2afb77[_0xfa6b('0x1')]||'';this[_0xfa6b('0x2')]=_0x2afb77[_0xfa6b('0x2')]||'';this['remoteUri']=_0x2afb77['remoteUri']||'';this[_0xfa6b('0x3')]=_0x2afb77[_0xfa6b('0x3')]||'';this[_0xfa6b('0x4')]=_0x2afb77['Configurations']||{};}module['exports']=VtigerAccount;
\ No newline at end of file
+var _0xb167=['Configurations','exports','name','username','accessKey','remoteUri','serverUrl'];(function(_0x4e9d3c,_0x1f4b98){var _0x2d0825=function(_0x384676){while(--_0x384676){_0x4e9d3c['push'](_0x4e9d3c['shift']());}};_0x2d0825(++_0x1f4b98);}(_0xb167,0x1c9));var _0x7b16=function(_0x125874,_0x248753){_0x125874=_0x125874-0x0;var _0x11627c=_0xb167[_0x125874];return _0x11627c;};'use strict';function VtigerAccount(_0x24c444){this['id']=_0x24c444['id']||0x0;this[_0x7b16('0x0')]=_0x24c444[_0x7b16('0x0')]||'';this[_0x7b16('0x1')]=_0x24c444['username']||'';this[_0x7b16('0x2')]=_0x24c444[_0x7b16('0x2')]||'';this[_0x7b16('0x3')]=_0x24c444[_0x7b16('0x3')]||'';this[_0x7b16('0x4')]=_0x24c444['serverUrl']||'';this[_0x7b16('0x5')]=_0x24c444[_0x7b16('0x5')]||{};}module[_0x7b16('0x6')]=VtigerAccount;
\ No newline at end of file
index ff163bb..c0d7522 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfade=['remoteUri','authType','type','serverUrl','Configurations','exports','name','username','password','token'];(function(_0x890a89,_0x3f5885){var _0x591108=function(_0x58672b){while(--_0x58672b){_0x890a89['push'](_0x890a89['shift']());}};_0x591108(++_0x3f5885);}(_0xfade,0xf6));var _0xefad=function(_0x360b16,_0x50cc40){_0x360b16=_0x360b16-0x0;var _0x5c4166=_0xfade[_0x360b16];return _0x5c4166;};'use strict';function ZendeskAccount(_0x5426e7){this['id']=_0x5426e7['id']||0x0;this[_0xefad('0x0')]=_0x5426e7['name']||'';this['username']=_0x5426e7[_0xefad('0x1')]||'';this[_0xefad('0x2')]=_0x5426e7[_0xefad('0x2')]||'';this['token']=_0x5426e7[_0xefad('0x3')]||'';this[_0xefad('0x4')]=_0x5426e7[_0xefad('0x4')]||'';this[_0xefad('0x5')]=_0x5426e7[_0xefad('0x5')]||'';this['type']=_0x5426e7[_0xefad('0x6')]||'integrationTab';this[_0xefad('0x7')]=_0x5426e7[_0xefad('0x7')]||'';this[_0xefad('0x8')]=_0x5426e7[_0xefad('0x8')]||{};}module[_0xefad('0x9')]=ZendeskAccount;
\ No newline at end of file
+var _0x71fb=['serverUrl','Configurations','exports','name','username','password','token','remoteUri','authType','type','integrationTab'];(function(_0x2da6c2,_0x4a71cc){var _0x460428=function(_0x40773a){while(--_0x40773a){_0x2da6c2['push'](_0x2da6c2['shift']());}};_0x460428(++_0x4a71cc);}(_0x71fb,0x1bb));var _0xb71f=function(_0x714610,_0x2c11b2){_0x714610=_0x714610-0x0;var _0x573a69=_0x71fb[_0x714610];return _0x573a69;};'use strict';function ZendeskAccount(_0x12aa4b){this['id']=_0x12aa4b['id']||0x0;this[_0xb71f('0x0')]=_0x12aa4b[_0xb71f('0x0')]||'';this[_0xb71f('0x1')]=_0x12aa4b[_0xb71f('0x1')]||'';this[_0xb71f('0x2')]=_0x12aa4b[_0xb71f('0x2')]||'';this[_0xb71f('0x3')]=_0x12aa4b[_0xb71f('0x3')]||'';this['remoteUri']=_0x12aa4b[_0xb71f('0x4')]||'';this['authType']=_0x12aa4b[_0xb71f('0x5')]||'';this[_0xb71f('0x6')]=_0x12aa4b[_0xb71f('0x6')]||_0xb71f('0x7');this[_0xb71f('0x8')]=_0x12aa4b['serverUrl']||'';this['Configurations']=_0x12aa4b[_0xb71f('0x9')]||{};}module[_0xb71f('0xa')]=ZendeskAccount;
\ No newline at end of file
index 068e6cf..f2fb8cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3481=['serverUrl','code','refreshToken','Configurations','exports','name','description','host','zone','clientId','clientSecret'];(function(_0x20d5ff,_0x1e6639){var _0x9d1ea1=function(_0x4259da){while(--_0x4259da){_0x20d5ff['push'](_0x20d5ff['shift']());}};_0x9d1ea1(++_0x1e6639);}(_0x3481,0xaa));var _0x1348=function(_0x1378d1,_0x4459bf){_0x1378d1=_0x1378d1-0x0;var _0x4bc18d=_0x3481[_0x1378d1];return _0x4bc18d;};'use strict';function ZohoAccount(_0x373107){this['id']=_0x373107['id']||0x0;this[_0x1348('0x0')]=_0x373107['name']||'';this[_0x1348('0x1')]=_0x373107[_0x1348('0x1')]||'';this[_0x1348('0x2')]=_0x373107[_0x1348('0x2')]||'';this[_0x1348('0x3')]=_0x373107[_0x1348('0x3')]||'';this[_0x1348('0x4')]=_0x373107[_0x1348('0x4')]||'';this['clientSecret']=_0x373107[_0x1348('0x5')]||'';this['serverUrl']=_0x373107[_0x1348('0x6')]||'';this[_0x1348('0x7')]=_0x373107['code']||'';this[_0x1348('0x8')]=_0x373107['refreshToken']||'';this[_0x1348('0x9')]=_0x373107[_0x1348('0x9')]||{};}module[_0x1348('0xa')]=ZohoAccount;
\ No newline at end of file
+var _0x8664=['zone','clientId','clientSecret','serverUrl','code','refreshToken','Configurations','name','description','host'];(function(_0x385b71,_0x2ae587){var _0x72ac1d=function(_0x5308f0){while(--_0x5308f0){_0x385b71['push'](_0x385b71['shift']());}};_0x72ac1d(++_0x2ae587);}(_0x8664,0xa7));var _0x4866=function(_0x30c87d,_0x52c8f5){_0x30c87d=_0x30c87d-0x0;var _0x2f5649=_0x8664[_0x30c87d];return _0x2f5649;};'use strict';function ZohoAccount(_0x45f505){this['id']=_0x45f505['id']||0x0;this[_0x4866('0x0')]=_0x45f505[_0x4866('0x0')]||'';this[_0x4866('0x1')]=_0x45f505[_0x4866('0x1')]||'';this['host']=_0x45f505[_0x4866('0x2')]||'';this[_0x4866('0x3')]=_0x45f505['zone']||'';this['clientId']=_0x45f505[_0x4866('0x4')]||'';this[_0x4866('0x5')]=_0x45f505[_0x4866('0x5')]||'';this['serverUrl']=_0x45f505[_0x4866('0x6')]||'';this[_0x4866('0x7')]=_0x45f505[_0x4866('0x7')]||'';this['refreshToken']=_0x45f505[_0x4866('0x8')]||'';this['Configurations']=_0x45f505[_0x4866('0x9')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
index b952553..be7f4b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde8e=['channelAgent','membername','format','SIP/%s','calleridname','phone','Contact','firstName','lastName','active','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countmachineretry','countnosuchnumberretry','countabandonedretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','prototype','getCaller','\x22%s\x22\x20<%s>','exports','lodash','moment','string','isNil','uniqueid','queue','name','type','campaigntype','dialAnswer','Agent'];(function(_0x25d14e,_0x43ccae){var _0x559538=function(_0x38ffdb){while(--_0x38ffdb){_0x25d14e['push'](_0x25d14e['shift']());}};_0x559538(++_0x43ccae);}(_0xde8e,0x129));var _0xede8=function(_0x5b697a,_0x280202){_0x5b697a=_0x5b697a-0x0;var _0x5de43b=_0xde8e[_0x5b697a];return _0x5de43b;};'use strict';var util=require('util');var _=require(_0xede8('0x0'));var moment=require(_0xede8('0x1'));function checkNameSurname(_0x5b9e30,_0x5c5557,_0x43c592){var _0x28373c='';if(!_['isNil'](_0x5c5557)&&_0xede8('0x2')===typeof _0x5c5557){_0x28373c+=_0x5c5557;}if(!_[_0xede8('0x3')](_0x43c592)&&'string'===typeof _0x43c592){_0x28373c+='\x20'+_0x43c592;}if(_0x28373c!==''){return _0x28373c;}return _0x5b9e30;}function Action(_0x3ccbec,_0x33b10d,_0x4e8f35,_0x21d1e6,_0x13b493){this[_0xede8('0x4')]=_0x4e8f35||undefined;this['idContact']=_0x3ccbec['id'];this[_0xede8('0x5')]=_0x33b10d[_0xede8('0x6')];this[_0xede8('0x7')]=_0x33b10d[_0xede8('0x7')];this[_0xede8('0x8')]=_0xede8('0x5');this[_0xede8('0x9')]=![];this['membername']=_['isNil'](_0x3ccbec[_0xede8('0xa')])?undefined:_0x3ccbec[_0xede8('0xa')]['name'];this[_0xede8('0xb')]=this[_0xede8('0xc')]?util[_0xede8('0xd')](_0xede8('0xe'),this[_0xede8('0xc')]):_0x21d1e6||undefined;this[_0xede8('0xf')]=checkNameSurname(_0x3ccbec['Contact'][_0xede8('0x10')],_0x3ccbec[_0xede8('0x11')][_0xede8('0x12')],_0x3ccbec[_0xede8('0x11')][_0xede8('0x13')]);this[_0xede8('0x14')]=_0x3ccbec['active']||![];this['calleridnum']=_0x3ccbec[_0xede8('0x11')][_0xede8('0x10')];this[_0xede8('0x15')]=_0x3ccbec[_0xede8('0x15')];this[_0xede8('0x16')]=_0x3ccbec[_0xede8('0x16')]||0x0;this[_0xede8('0x17')]=_0x3ccbec[_0xede8('0x17')]||0x0;this[_0xede8('0x18')]=_0x3ccbec[_0xede8('0x18')]||0x0;this[_0xede8('0x19')]=(_0x3ccbec[_0xede8('0x16')]||0x0)+(_0x3ccbec['countcongestionretry']||0x0)+(_0x3ccbec[_0xede8('0x18')]||0x0)+(_0x3ccbec['countnosuchnumberretry']||0x0)+(_0x3ccbec[_0xede8('0x1a')]||0x0)+(_0x3ccbec['countabandonedretry']||0x0)+(_0x3ccbec[_0xede8('0x1b')]||0x0)+(_0x3ccbec['countagentrejectretry']||0x0);this[_0xede8('0x1c')]=_0x3ccbec[_0xede8('0x1c')]||0x0;this['countdropretry']=_0x3ccbec['countdropretry']||0x0;this[_0xede8('0x1d')]=_0x3ccbec[_0xede8('0x1d')]||0x0;this[_0xede8('0x1b')]=_0x3ccbec['countmachineretry']||0x0;this[_0xede8('0x1e')]=_0x3ccbec[_0xede8('0x1e')]||0x0;this[_0xede8('0x1f')]=_0x3ccbec[_0xede8('0x1f')];this[_0xede8('0x20')]=_0x3ccbec['callbackuniqueid'];this[_0xede8('0x21')]=_0x3ccbec[_0xede8('0x21')];this[_0xede8('0x22')]=_0x3ccbec[_0xede8('0x22')];this[_0xede8('0x23')]=_0x3ccbec['ContactId'];this['ListId']=_0x3ccbec[_0xede8('0x24')];this[_0xede8('0x25')]=_[_0xede8('0x3')](_0x3ccbec[_0xede8('0xa')])?_0x3ccbec[_0xede8('0x25')]:_0x3ccbec[_0xede8('0xa')]['id'];this[_0xede8('0x26')]=_0x3ccbec[_0xede8('0x26')];this[_0xede8('0x27')]='';this['originatecalleridname']='';}Action[_0xede8('0x28')][_0xede8('0x29')]=function(){return util[_0xede8('0xd')](_0xede8('0x2a'),this[_0xede8('0xf')],this['number']);};module[_0xede8('0x2b')]=Action;
\ No newline at end of file
+var _0x4b62=['channelAgent','format','SIP/%s','calleridname','Contact','phone','firstName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','originatecalleridname','\x22%s\x22\x20<%s>','number','lodash','moment','isNil','string','uniqueid','queue','name','type','campaigntype','membername','Agent'];(function(_0x52feaa,_0x5aa1f9){var _0x197ab3=function(_0x49e7df){while(--_0x49e7df){_0x52feaa['push'](_0x52feaa['shift']());}};_0x197ab3(++_0x5aa1f9);}(_0x4b62,0x1c9));var _0x24b6=function(_0x2daf18,_0x3db257){_0x2daf18=_0x2daf18-0x0;var _0x3b1e89=_0x4b62[_0x2daf18];return _0x3b1e89;};'use strict';var util=require('util');var _=require(_0x24b6('0x0'));var moment=require(_0x24b6('0x1'));function checkNameSurname(_0x32cd1c,_0x10531f,_0x2da7b8){var _0x35e08b='';if(!_[_0x24b6('0x2')](_0x10531f)&&_0x24b6('0x3')===typeof _0x10531f){_0x35e08b+=_0x10531f;}if(!_[_0x24b6('0x2')](_0x2da7b8)&&_0x24b6('0x3')===typeof _0x2da7b8){_0x35e08b+='\x20'+_0x2da7b8;}if(_0x35e08b!==''){return _0x35e08b;}return _0x32cd1c;}function Action(_0x479d9c,_0x1450be,_0x550b36,_0x2bf891,_0x2ba062){this[_0x24b6('0x4')]=_0x550b36||undefined;this['idContact']=_0x479d9c['id'];this[_0x24b6('0x5')]=_0x1450be[_0x24b6('0x6')];this[_0x24b6('0x7')]=_0x1450be['type'];this[_0x24b6('0x8')]=_0x24b6('0x5');this['dialAnswer']=![];this[_0x24b6('0x9')]=_[_0x24b6('0x2')](_0x479d9c[_0x24b6('0xa')])?undefined:_0x479d9c[_0x24b6('0xa')][_0x24b6('0x6')];this[_0x24b6('0xb')]=this[_0x24b6('0x9')]?util[_0x24b6('0xc')](_0x24b6('0xd'),this[_0x24b6('0x9')]):_0x2bf891||undefined;this[_0x24b6('0xe')]=checkNameSurname(_0x479d9c[_0x24b6('0xf')][_0x24b6('0x10')],_0x479d9c['Contact'][_0x24b6('0x11')],_0x479d9c[_0x24b6('0xf')]['lastName']);this[_0x24b6('0x12')]=_0x479d9c['active']||![];this[_0x24b6('0x13')]=_0x479d9c[_0x24b6('0xf')]['phone'];this[_0x24b6('0x14')]=_0x479d9c[_0x24b6('0x14')];this[_0x24b6('0x15')]=_0x479d9c[_0x24b6('0x15')]||0x0;this[_0x24b6('0x16')]=_0x479d9c[_0x24b6('0x16')]||0x0;this[_0x24b6('0x17')]=_0x479d9c[_0x24b6('0x17')]||0x0;this[_0x24b6('0x18')]=(_0x479d9c[_0x24b6('0x15')]||0x0)+(_0x479d9c[_0x24b6('0x16')]||0x0)+(_0x479d9c[_0x24b6('0x17')]||0x0)+(_0x479d9c[_0x24b6('0x19')]||0x0)+(_0x479d9c[_0x24b6('0x1a')]||0x0)+(_0x479d9c[_0x24b6('0x1b')]||0x0)+(_0x479d9c[_0x24b6('0x1c')]||0x0)+(_0x479d9c['countagentrejectretry']||0x0);this['countnosuchnumberretry']=_0x479d9c[_0x24b6('0x19')]||0x0;this[_0x24b6('0x1a')]=_0x479d9c['countdropretry']||0x0;this[_0x24b6('0x1b')]=_0x479d9c[_0x24b6('0x1b')]||0x0;this[_0x24b6('0x1c')]=_0x479d9c[_0x24b6('0x1c')]||0x0;this[_0x24b6('0x1d')]=_0x479d9c[_0x24b6('0x1d')]||0x0;this[_0x24b6('0x1e')]=_0x479d9c[_0x24b6('0x1e')];this['callbackuniqueid']=_0x479d9c[_0x24b6('0x1f')];this[_0x24b6('0x20')]=_0x479d9c[_0x24b6('0x20')];this['recallme']=_0x479d9c['recallme'];this[_0x24b6('0x21')]=_0x479d9c['ContactId'];this[_0x24b6('0x22')]=_0x479d9c[_0x24b6('0x22')];this[_0x24b6('0x23')]=_[_0x24b6('0x2')](_0x479d9c[_0x24b6('0xa')])?_0x479d9c['UserId']:_0x479d9c[_0x24b6('0xa')]['id'];this['VoiceQueueId']=_0x479d9c['VoiceQueueId'];this['originatecalleridnum']='';this[_0x24b6('0x24')]='';}Action['prototype']['getCaller']=function(){return util[_0x24b6('0xc')](_0x24b6('0x25'),this[_0x24b6('0xe')],this[_0x24b6('0x26')]);};module['exports']=Action;
\ No newline at end of file
index d76d096..50c6e68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccf0=['ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','emit','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','unlockAgent','activeContact','linkedid','ANSWER','responsetime','uniqueid','\x20Queue','custom:agentconnect','acw','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','[16]','[callProgressDetectingCustomer][logAnswer]','crateCustomerReportQueue','sumDuration','talktime','sumBillable','BUSY','countbusyretry','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','cloneAction','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','dialBusyRetryFrequency','NOANSWER','countnoanswerretry','NoAnswer','[callProgressDetectingCustomer][logNoAnswerGlobal]','[callProgressDetectingCustomer][logNoAnswer]','dialNoAnswerRetryFrequency','CONGESTION','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','CANCEL','AgentReject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','countagentrejectretry','dialAgentRejectMaxRetry','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','countmachineretry','cause-txt','dialstatus','amd','[callProgressDetectingCustomer][hangupInAMD]','custom:amd','[callProgressDetectingCustomer][machine]','[default]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','Contact','phone','Contact\x20is\x20undefined','Queue','isEmpty','execCall','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','idContact','custom:agentcalled','called','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','reachable','unmonitored','unlock','unlockContact','disableContact','recallme','isValid','Contact.phone','checkInBlack','[Preview][checkIsBlackList]','[Preview][getContactPreview]','Call\x20unsuccessful','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','TrunkBackup','\x20Trunk\x20Backup\x20is\x20not\x20active','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','callerid','getCallerIdRandom','dialRandomLastDigitCallerIdNumber','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','merge','starttime','variablesAction','channelAgent','destconnectedlinenum','calleridnum','user:%s','user:agentconnect','[originateFailure][logOriginateFailure]','actionid','lookAgent','clone','isFailure','response','Answer','[syncHangup][talking]','cause','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','[syncHangup][talking][cause]','destuniqueid','addVariable','variables','filterKey','keys','variable','value','error','[syncVarSet][Preview]','inspect','syncAttendedTransfer','transfertargetlinkedid','syncBlindTransfer','transfererlinkedid','util','lodash','moment','md5','ioredis','../../../config/environment','preview','actionPreview','../ami','./rpcDb','./action','redis','defaults','localhost','socket.io-emitter','prototype','tail','finally','sequence','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','dialend','syncDialEnd','newexten','syncNewExten','varset','syncVarSet','attendedtransfer','blindtransfer','loopCampaigns','campaignsPreview','type','outbound','name','strategy','available','loggedIn','pTalking','talking','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','startProgressive','Trunk','active','Interval','stringify','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','format','voice:queue:%s','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','\x20is\x20disactive','syncCampaigns','hasOwnProperty','dialMethod','booked','clearZombieChannels','setMessage','clearZombieChannel','enqueue','isNil','[clearZombieChannels][talking]','originated:\x20','queue','pTalking:\x20','dialAnswer','pick','VoiceQueueId','ListId','Action','status','channel','catch','No\x20such\x20channel','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','getContactRecallMe','agentReadyId','length','getDiff','scheduledat','Agent','voicePause','run','then','logger2','YYYY-MM-DD\x20HH:mm:ss','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','logCustomer','[HistoryRecallClose]','createCustomerFinal','isActive','isTrunkReachable'];(function(_0xc68ec4,_0x168e22){var _0x1b3798=function(_0x473e70){while(--_0x473e70){_0xc68ec4['push'](_0xc68ec4['shift']());}};_0x1b3798(++_0x168e22);}(_0xccf0,0xbe));var _0x0ccf=function(_0x44aed7,_0x630314){_0x44aed7=_0x44aed7-0x0;var _0x10b5a6=_0xccf0[_0x44aed7];return _0x10b5a6;};'use strict';var util=require(_0x0ccf('0x0'));var _=require(_0x0ccf('0x1'));var BPromise=require('bluebird');var uuid=require('uuid');var moment=require(_0x0ccf('0x2'));var md5=require(_0x0ccf('0x3'));var Redis=require(_0x0ccf('0x4'));var config=require(_0x0ccf('0x5'));var logger=require('../../../config/logger')(_0x0ccf('0x6'));var loggerAction=require('../../../config/logger')(_0x0ccf('0x7'));var ami=require(_0x0ccf('0x8'));var rpcDb=require(_0x0ccf('0x9'));var Action=require(_0x0ccf('0xa'));var ut=require('./util/util');config[_0x0ccf('0xb')]=_[_0x0ccf('0xc')](config[_0x0ccf('0xb')],{'host':_0x0ccf('0xd'),'port':0x18eb});var io=require(_0x0ccf('0xe'))(new Redis(config[_0x0ccf('0xb')]));var Sequence=function(){};Sequence[_0x0ccf('0xf')]['enqueue']=function(_0xa00ea3){this[_0x0ccf('0x10')]=this['tail']?this[_0x0ccf('0x10')][_0x0ccf('0x11')](_0xa00ea3):_0xa00ea3();};function Preview(_0x1df86f){this[_0x0ccf('0x12')]=new Sequence();this['campaignsPreview']=_0x1df86f[_0x0ccf('0x13')];this['trunks']=_0x1df86f[_0x0ccf('0x14')];this[_0x0ccf('0x15')]={};this[_0x0ccf('0x16')]=_0x1df86f['agents'];this[_0x0ccf('0x17')]=0x0;ami['on'](_0x0ccf('0x18'),this[_0x0ccf('0x19')][_0x0ccf('0x1a')](this));ami['on'](_0x0ccf('0x1b'),this[_0x0ccf('0x1c')][_0x0ccf('0x1a')](this));ami['on'](_0x0ccf('0x1d'),this[_0x0ccf('0x1e')]['bind'](this));ami['on'](_0x0ccf('0x1f'),this[_0x0ccf('0x20')][_0x0ccf('0x1a')](this));ami['on'](_0x0ccf('0x21'),this[_0x0ccf('0x22')][_0x0ccf('0x1a')](this));ami['on'](_0x0ccf('0x23'),this[_0x0ccf('0x24')][_0x0ccf('0x1a')](this));ami['on'](_0x0ccf('0x25'),this['syncAttendedTransfer'][_0x0ccf('0x1a')](this));ami['on'](_0x0ccf('0x26'),this['syncBlindTransfer'][_0x0ccf('0x1a')](this));this[_0x0ccf('0x27')](this[_0x0ccf('0x28')]);}function emit(_0x48a15b,_0x5e400a,_0x1b698b){io['to'](_0x48a15b)['emit'](_0x5e400a,_0x1b698b);}function emitCampaignPreview(_0x5bed17){if(_0x5bed17[_0x0ccf('0x29')]===_0x0ccf('0x2a')){var _0x628f01={'id':_0x5bed17['id'],'name':_0x5bed17[_0x0ccf('0x2b')],'strategy':_0x5bed17[_0x0ccf('0x2c')],'answered':_0x5bed17['answered'],'available':_0x5bed17[_0x0ccf('0x2d')],'loggedIn':_0x5bed17[_0x0ccf('0x2e')],'pTalking':_0x5bed17[_0x0ccf('0x2f')],'sumBillable':_0x5bed17['sumBillable'],'sumDuration':_0x5bed17['sumDuration'],'sumHoldTime':_0x5bed17['sumHoldTime']||0x0,'talking':_0x5bed17[_0x0ccf('0x30')],'total':_0x5bed17['total'],'type':_0x5bed17[_0x0ccf('0x29')],'unmanaged':_0x5bed17[_0x0ccf('0x31')],'abandoned':_0x5bed17[_0x0ccf('0x32')],'waiting':_0x5bed17[_0x0ccf('0x33')],'loggedInDb':_0x5bed17[_0x0ccf('0x34')],'dialActive':_0x5bed17[_0x0ccf('0x35')],'dialMethod':_0x5bed17['dialMethod'],'dialOriginateCallerIdName':_0x5bed17[_0x0ccf('0x36')],'dialOriginateCallerIdNumber':_0x5bed17[_0x0ccf('0x37')],'dialOriginateTimeout':_0x5bed17[_0x0ccf('0x38')],'dialPrefix':_0x5bed17[_0x0ccf('0x39')],'outboundAnswerAgiCallsDay':_0x5bed17[_0x0ccf('0x3a')],'outboundAnswerCallsDay':_0x5bed17[_0x0ccf('0x3b')],'outboundBlacklistCallsDay':_0x5bed17[_0x0ccf('0x3c')],'outboundBusyCallsDay':_0x5bed17['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x5bed17[_0x0ccf('0x3d')],'outboundDropCallsDayACS':_0x5bed17['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x5bed17[_0x0ccf('0x3e')],'outboundDropCallsDayTimeout':_0x5bed17[_0x0ccf('0x3f')],'outboundNoAnswerCallsDay':_0x5bed17[_0x0ccf('0x40')],'outboundNoSuchCallsDay':_0x5bed17[_0x0ccf('0x41')],'outboundOriginateFailureCallsDay':_0x5bed17[_0x0ccf('0x42')],'outboundReCallsDay':_0x5bed17[_0x0ccf('0x43')],'outboundRejectCallsDay':_0x5bed17[_0x0ccf('0x44')],'outboundUnknownCallsDay':_0x5bed17[_0x0ccf('0x45')],'outboundAbandonedCallsDay':_0x5bed17[_0x0ccf('0x46')],'predictiveIntervalAnsweredCalls':_0x5bed17[_0x0ccf('0x47')],'predictiveIntervalAvgHoldtime':_0x5bed17[_0x0ccf('0x48')],'predictiveIntervalAvgTalktime':_0x5bed17[_0x0ccf('0x49')],'predictiveIntervalDroppedCallsCallersExit':_0x5bed17['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x5bed17['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x5bed17[_0x0ccf('0x4a')],'predictiveIntervalErlangCallsDroppedCalls':_0x5bed17[_0x0ccf('0x4b')],'predictiveIntervalHitRate':_0x5bed17[_0x0ccf('0x4c')],'predictiveIntervalMultiplicativeFactor':_0x5bed17['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x5bed17[_0x0ccf('0x4d')],'predictiveIntervalAvailable':_0x5bed17['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x5bed17[_0x0ccf('0x4e')],'message':_0x5bed17[_0x0ccf('0x4f')],'originated':_0x5bed17[_0x0ccf('0x50')],'erlangCalls':_0x5bed17[_0x0ccf('0x51')],'erlangCallToSecond':_0x5bed17[_0x0ccf('0x52')],'erlangAbandonmentRate':_0x5bed17[_0x0ccf('0x53')],'erlangBusyFactor':_0x5bed17['erlangBusyFactor'],'startPredictive':_0x5bed17['startPredictive'],'startProgressive':_0x5bed17[_0x0ccf('0x54')]};if(_0x5bed17['Trunk']){_0x628f01[_0x0ccf('0x55')]={'id':_0x5bed17[_0x0ccf('0x55')]['id'],'name':_0x5bed17[_0x0ccf('0x55')]['name'],'active':_0x5bed17[_0x0ccf('0x55')][_0x0ccf('0x56')],'callerid':_0x5bed17['Trunk']['callerid']};}if(_0x5bed17[_0x0ccf('0x57')]){_0x628f01['Interval']={'id':_0x5bed17[_0x0ccf('0x57')]['id'],'name':_0x5bed17[_0x0ccf('0x57')]['name']};}var _0x3447ce=md5(JSON[_0x0ccf('0x58')](_0x628f01));if(_0x5bed17[_0x0ccf('0x3')]!==_0x3447ce){_0x5bed17['md5']=_0x3447ce;emit(util['format']('voice:queue:%s',_0x628f01['name']),'voice_queue:save',_0x628f01);}}}function emitVoiceQueueChannelRemove(_0x1741f4){logger[_0x0ccf('0x59')](_0x0ccf('0x5a'),JSON['stringify'](_0x1741f4));emit(util[_0x0ccf('0x5b')](_0x0ccf('0x5c'),_0x1741f4[_0x0ccf('0x2b')]),_0x0ccf('0x5d'),_0x1741f4);io['emit'](_0x0ccf('0x5e'),_0x1741f4);}function notSendMessagesQueue(_0x4a714c){if(_0x4a714c['sendMessageOneNotActive']){if(_0x4a714c[_0x0ccf('0x50')]===0x0&&_0x4a714c[_0x0ccf('0x2f')]===0x0){_0x4a714c[_0x0ccf('0x5f')]=![];_0x4a714c['available']=0x0;_0x4a714c['paused']=0x0;_0x4a714c[_0x0ccf('0x4f')]=_0x0ccf('0x60');ut[_0x0ccf('0x61')](_0x0ccf('0x62'),_0x4a714c['name']+'\x20is\x20not\x20active');}else{_0x4a714c['message']=_0x0ccf('0x63');ut['logger'](_0x0ccf('0x62'),_0x4a714c['name']+_0x0ccf('0x64'));}emitCampaignPreview(_0x4a714c);}}Preview['prototype'][_0x0ccf('0x27')]=function(){var _0x4c460f=this;setInterval(function(){_0x4c460f['syncCampaigns']();},0x7cf);};Preview['prototype'][_0x0ccf('0x65')]=function(){var _0x59a749=this[_0x0ccf('0x28')];this[_0x0ccf('0x17')]+=0x1;for(var _0x4a031e in _0x59a749){if(_0x59a749[_0x0ccf('0x66')](_0x4a031e)&&(_0x59a749[_0x4a031e][_0x0ccf('0x67')]===_0x0ccf('0x6')||_0x59a749[_0x4a031e][_0x0ccf('0x67')]===_0x0ccf('0x68'))&&_0x59a749[_0x4a031e][_0x0ccf('0x29')]===_0x0ccf('0x2a')){if(this[_0x0ccf('0x17')]>0x7){this['clockClearZombieChannels']=0x0;this[_0x0ccf('0x69')]();}}if(_0x59a749[_0x0ccf('0x66')](_0x4a031e)&&_0x59a749[_0x4a031e][_0x0ccf('0x67')]===_0x0ccf('0x6')&&_0x59a749[_0x4a031e][_0x0ccf('0x29')]===_0x0ccf('0x2a')){if(_0x59a749[_0x4a031e]['dialActive']){this[_0x0ccf('0x6a')](_0x59a749[_0x4a031e]);this['recallMe'](_0x59a749[_0x4a031e]);}else{notSendMessagesQueue(_0x59a749[_0x4a031e]);}}}};Preview[_0x0ccf('0xf')][_0x0ccf('0x6b')]=function(_0x6be3fb){var _0x46c586=this;this[_0x0ccf('0x12')][_0x0ccf('0x6c')](function(){if(!_[_0x0ccf('0x6d')](_0x46c586[_0x0ccf('0x15')][_0x6be3fb])){loggerAction['info'](_0x0ccf('0x6e'),_0x6be3fb,'Queue',_0x46c586[_0x0ccf('0x15')][_0x6be3fb]['queue'],_0x0ccf('0x6f'),JSON[_0x0ccf('0x58')](_0x46c586[_0x0ccf('0x28')][_0x46c586[_0x0ccf('0x15')][_0x6be3fb][_0x0ccf('0x70')]][_0x0ccf('0x50')]),_0x0ccf('0x71'),JSON[_0x0ccf('0x58')](_0x46c586[_0x0ccf('0x28')][_0x46c586['actions'][_0x6be3fb]['queue']][_0x0ccf('0x2f')]),JSON['stringify'](_0x46c586[_0x0ccf('0x15')][_0x6be3fb][_0x0ccf('0x72')]),JSON[_0x0ccf('0x58')](_[_0x0ccf('0x73')](_0x46c586[_0x0ccf('0x15')][_0x6be3fb],['contactId','UserId',_0x0ccf('0x74'),_0x0ccf('0x75')])));return ami[_0x0ccf('0x76')]({'action':_0x0ccf('0x77'),'channel':_0x46c586[_0x0ccf('0x15')][_0x6be3fb][_0x0ccf('0x78')]})[_0x0ccf('0x79')](function(_0x369668){if(_0x369668[_0x0ccf('0x4f')]===_0x0ccf('0x7a')){setTimeout(function(){if(_0x46c586['actions'][_0x6be3fb]){ut['updateOriginated'](_0x46c586['campaignsPreview'][_0x46c586[_0x0ccf('0x15')][_0x6be3fb][_0x0ccf('0x70')]],_0x0ccf('0x7b'));if(_0x46c586[_0x0ccf('0x15')][_0x6be3fb][_0x0ccf('0x72')]===!![]){ut[_0x0ccf('0x7c')](_0x46c586['campaignsPreview'][_0x46c586[_0x0ccf('0x15')][_0x6be3fb][_0x0ccf('0x70')]],'[clearZombieChannel]');ut[_0x0ccf('0x7d')](_0x0ccf('0x7e')+_0x6be3fb,_0x46c586['actions'][_0x6be3fb]['queue']);}ut[_0x0ccf('0x7d')](_0x0ccf('0x7f')+_0x6be3fb,_0x46c586[_0x0ccf('0x15')][_0x6be3fb][_0x0ccf('0x70')]);delete _0x46c586['actions'][_0x6be3fb];}},0x2328);}});}});};Preview[_0x0ccf('0xf')]['clearZombieChannels']=function(){var _0x324b69=this;loggerAction[_0x0ccf('0x59')](_0x0ccf('0x80'),_[_0x0ccf('0x81')](this[_0x0ccf('0x15')]));for(var _0x19ba41 in this['actions']){if(_0x324b69[_0x0ccf('0x15')]['hasOwnProperty'](_0x19ba41)){_0x324b69[_0x0ccf('0x6b')](_0x19ba41);}}};Preview[_0x0ccf('0xf')]['recallMe']=function(_0xd9ac35){var _0x3c3221=this;rpcDb[_0x0ccf('0x82')](_0xd9ac35['id'],ut[_0x0ccf('0x83')](this[_0x0ccf('0x16')]))['then'](function(_0x55aaac){if(!_['isNil'](_0x55aaac)){for(var _0x348176=0x0;_0x348176<_0x55aaac[_0x0ccf('0x84')];_0x348176+=0x1){if(ut[_0x0ccf('0x85')](_0x55aaac[_0x348176][_0x0ccf('0x86')])<_0xd9ac35['dialRecallMeTimeout']*0x3c){if(_0x55aaac[_0x348176][_0x0ccf('0x87')]&&!_0x55aaac[_0x348176][_0x0ccf('0x87')][_0x0ccf('0x88')]){_0x3c3221[_0x0ccf('0x89')](_0x55aaac[_0x348176]['id'])[_0x0ccf('0x8a')](ut[_0x0ccf('0x8b')]('[RecallMe]'))[_0x0ccf('0x79')](ut['logger2']('[RecallMe]'));}else{rpcDb['disableContact'](_0x55aaac[_0x348176]['id']);}}else{var _0xb937b0=new Action(_0x55aaac[_0x348176],_0xd9ac35);_0xb937b0['starttime']=moment()['format'](_0x0ccf('0x8c'));_0xd9ac35[_0x0ccf('0x43')]+=0x1;ut['logCustomer'](_0xb937b0,0x17,_0x0ccf('0x8d'));if(_0xd9ac35[_0x0ccf('0x8e')]){rpcDb[_0x0ccf('0x8f')](ut['createBody'](_0x55aaac[_0x348176]));rpcDb[_0x0ccf('0x90')](_0xb937b0,_0x0ccf('0x91'));}else{ut[_0x0ccf('0x92')](_0xb937b0,0x16,'RecallFailedTimeout');rpcDb[_0x0ccf('0x90')](_0xb937b0,_0x0ccf('0x93'));rpcDb[_0x0ccf('0x94')](_0xb937b0,'[HistoryRecallClose]');}}}}})[_0x0ccf('0x79')](ut[_0x0ccf('0x8b')]('[getContactRecallMe]'));};Preview['prototype']['setMessage']=function(_0x4b2469){_0x4b2469[_0x0ccf('0x5f')]=!![];if(ut['IsNotLoggedIn'](_0x4b2469[_0x0ccf('0x2e')])){_0x4b2469['message']='AGENTS_NOT_LOGGED';}else if(!ut[_0x0ccf('0x95')](_0x4b2469[_0x0ccf('0x35')])){_0x4b2469[_0x0ccf('0x4f')]=_0x0ccf('0x60');}else if(!this[_0x0ccf('0x96')](_0x4b2469[_0x0ccf('0x55')])){if(!this[_0x0ccf('0x96')](_0x4b2469['TrunkBackup'])){_0x4b2469[_0x0ccf('0x4f')]='TRUNK_IS_NOT_REACHABLE';}else{_0x4b2469[_0x0ccf('0x4f')]=_0x0ccf('0x97');}}else{_0x4b2469[_0x0ccf('0x4f')]=_0x0ccf('0x97');}emitCampaignPreview(_0x4b2469);};Preview['prototype'][_0x0ccf('0x98')]=function(_0x83584b,_0x249237,_0x4831d6){var _0x9e8c6c=this;var _0x3d86ca=this[_0x0ccf('0x15')][_0x249237];var _0xb36e12=this['campaignsPreview'][_0x3d86ca[_0x0ccf('0x70')]];var _0x40d428;if(_0xb36e12){switch(_0x4831d6){case'1':_0xb36e12[_0x0ccf('0x41')]+=0x1;_0x3d86ca[_0x0ccf('0x99')]+=0x1;_0x3d86ca[_0x0ccf('0x9a')]=ut[_0x0ccf('0x9b')](_0x3d86ca);ut[_0x0ccf('0x92')](_0x3d86ca,0x0,_0x0ccf('0x9c'));ami[_0x0ccf('0x9d')]('custom:agentnosuchnumber',ut[_0x0ccf('0x9e')](_0x3d86ca,_0x0ccf('0x9f')));rpcDb['createCustomerHistory'](_0x3d86ca,_0x0ccf('0xa0'));if(ut[_0x0ccf('0x9b')](_0x3d86ca)>=_0xb36e12[_0x0ccf('0xa1')]){_0x40d428=ut['cloneAction'](_0x3d86ca,0xf,_0x0ccf('0xa2'));rpcDb[_0x0ccf('0x94')](_0x40d428,_0x0ccf('0xa3'));}else{if(_0x3d86ca[_0x0ccf('0x99')]>=_0xb36e12[_0x0ccf('0xa4')]){rpcDb[_0x0ccf('0x94')](_0x3d86ca,_0x0ccf('0xa3'));}else{rpcDb[_0x0ccf('0xa5')](ut[_0x0ccf('0xa6')](_0x3d86ca,_0x0ccf('0x99'),_0xb36e12[_0x0ccf('0xa7')]),_0x3d86ca[_0x0ccf('0xa8')],_0x3d86ca[_0x0ccf('0xa9')]);}}delete this[_0x0ccf('0x15')][_0x83584b[_0x0ccf('0xaa')]];break;case _0x0ccf('0xab'):var _0x27c208=moment()[_0x0ccf('0x5b')](_0x0ccf('0x8c'));_0x3d86ca[_0x0ccf('0xac')]=_0x27c208;_0x3d86ca['answertime']=_0x27c208;_0x3d86ca[_0x0ccf('0x72')]=!![];_0xb36e12[_0x0ccf('0x2f')]+=0x1;logger[_0x0ccf('0x59')]('[syncHangup][talking][increment]',_0x3d86ca[_0x0ccf('0xad')],_0x0ccf('0xae'),_0xb36e12[_0x0ccf('0x2b')],_0x0ccf('0x71'),_0xb36e12[_0x0ccf('0x2f')]);ami['emit'](_0x0ccf('0xaf'),ut['buildObj'](_0x3d86ca,'connect',this['campaignsPreview'][_0x3d86ca['queue']]));if(_0xb36e12[_0x0ccf('0xb0')]){ami[_0x0ccf('0x9d')](_0x0ccf('0xb1'),ut[_0x0ccf('0xb2')](_0x3d86ca));}break;case'16':ami[_0x0ccf('0x9d')](_0x0ccf('0xb3'),ut[_0x0ccf('0x9e')](_0x3d86ca,_0x0ccf('0xb4'),this[_0x0ccf('0x28')][_0x3d86ca['queue']]));emitVoiceQueueChannelRemove(ut[_0x0ccf('0x9e')](_0x3d86ca,_0x0ccf('0xb4')));_0xb36e12['outboundAnswerCallsDay']+=0x1;_0xb36e12['total']+=0x1;_0xb36e12['answered']+=0x1;ut[_0x0ccf('0x7c')](_0xb36e12,_0x0ccf('0xb5'));_0x3d86ca['countglobal']=ut[_0x0ccf('0x9b')](_0x3d86ca);ut[_0x0ccf('0x92')](_0x3d86ca,0x4,'Answer');rpcDb[_0x0ccf('0x90')](_0x3d86ca,_0x0ccf('0xb6'));rpcDb['createCustomerFinal'](_0x3d86ca,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb[_0x0ccf('0xb7')](_0x3d86ca);_0xb36e12[_0x0ccf('0xb8')]+=_0x3d86ca[_0x0ccf('0xb9')];_0xb36e12[_0x0ccf('0xba')]+=_0x3d86ca[_0x0ccf('0xb9')];logger[_0x0ccf('0x59')]('[syncHangup][talking][decrement]',_0x3d86ca[_0x0ccf('0xad')],_0x0ccf('0xae'),_0xb36e12[_0x0ccf('0x2b')],_0x0ccf('0x71'),_0xb36e12[_0x0ccf('0x2f')]);delete this['actions'][_0x83584b[_0x0ccf('0xaa')]];break;case _0x0ccf('0xbb'):_0xb36e12['outboundBusyCallsDay']+=0x1;_0x3d86ca[_0x0ccf('0xbc')]+=0x1;_0x3d86ca[_0x0ccf('0x9a')]=ut['totalGlobal'](_0x3d86ca);ut[_0x0ccf('0x92')](_0x3d86ca,0x5,_0x0ccf('0xbd'));ami['emit'](_0x0ccf('0xbe'),ut[_0x0ccf('0x9e')](_0x3d86ca,_0x0ccf('0xbf')));rpcDb['createCustomerHistory'](_0x3d86ca,_0x0ccf('0xc0'));if(ut[_0x0ccf('0x9b')](_0x3d86ca)>=_0xb36e12[_0x0ccf('0xa1')]){_0x40d428=ut[_0x0ccf('0xc1')](_0x3d86ca,0xf,_0x0ccf('0xa2'));rpcDb['createCustomerFinal'](_0x40d428,_0x0ccf('0xc2'));}else{if(_0x3d86ca['countbusyretry']>=_0xb36e12[_0x0ccf('0xc3')]){rpcDb[_0x0ccf('0x94')](_0x3d86ca,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb[_0x0ccf('0xa5')](ut[_0x0ccf('0xa6')](_0x3d86ca,'countbusyretry',_0xb36e12[_0x0ccf('0xc4')]),_0x3d86ca[_0x0ccf('0xa8')],_0x3d86ca[_0x0ccf('0xa9')]);}}break;case _0x0ccf('0xc5'):_0xb36e12[_0x0ccf('0x40')]+=0x1;_0x3d86ca[_0x0ccf('0xc6')]+=0x1;_0x3d86ca[_0x0ccf('0x9a')]=ut[_0x0ccf('0x9b')](_0x3d86ca);ut[_0x0ccf('0x92')](_0x3d86ca,0x3,_0x0ccf('0xc7'));ami[_0x0ccf('0x9d')]('custom:agentnoanswer',ut[_0x0ccf('0x9e')](_0x3d86ca,'noanswer'));rpcDb[_0x0ccf('0x90')](_0x3d86ca,'[callProgressDetectingCustomer][logNoAnswer]');if(ut[_0x0ccf('0x9b')](_0x3d86ca)>=_0xb36e12[_0x0ccf('0xa1')]){_0x40d428=ut[_0x0ccf('0xc1')](_0x3d86ca,0xf,_0x0ccf('0xa2'));rpcDb[_0x0ccf('0x94')](_0x40d428,_0x0ccf('0xc8'));}else{if(_0x3d86ca['countnoanswerretry']>=_0xb36e12['dialNoAnswerMaxRetry']){rpcDb[_0x0ccf('0x94')](_0x3d86ca,_0x0ccf('0xc9'));}else{rpcDb[_0x0ccf('0xa5')](ut[_0x0ccf('0xa6')](_0x3d86ca,'countnoanswerretry',_0xb36e12[_0x0ccf('0xca')]),_0x3d86ca[_0x0ccf('0xa8')],_0x3d86ca['activeContact']);}}break;case _0x0ccf('0xcb'):_0xb36e12[_0x0ccf('0x3d')]+=0x1;_0x3d86ca[_0x0ccf('0xcc')]+=0x1;_0x3d86ca[_0x0ccf('0x9a')]=ut[_0x0ccf('0x9b')](_0x3d86ca);ut[_0x0ccf('0x92')](_0x3d86ca,0x8,_0x0ccf('0xcd'));ami[_0x0ccf('0x9d')](_0x0ccf('0xce'),ut['buildObj'](_0x3d86ca,_0x0ccf('0xcf')));rpcDb[_0x0ccf('0x90')](_0x3d86ca,_0x0ccf('0xd0'));if(ut[_0x0ccf('0x9b')](_0x3d86ca)>=_0xb36e12[_0x0ccf('0xa1')]){_0x40d428=ut[_0x0ccf('0xc1')](_0x3d86ca,0xf,_0x0ccf('0xa2'));rpcDb[_0x0ccf('0x94')](_0x40d428,_0x0ccf('0xd1'));}else{if(_0x3d86ca[_0x0ccf('0xcc')]>=_0xb36e12[_0x0ccf('0xd2')]){rpcDb[_0x0ccf('0x94')](_0x3d86ca,_0x0ccf('0xd0'));}else{rpcDb[_0x0ccf('0xa5')](ut[_0x0ccf('0xa6')](_0x3d86ca,_0x0ccf('0xcc'),_0xb36e12[_0x0ccf('0xc4')]),_0x3d86ca[_0x0ccf('0xa8')],_0x3d86ca[_0x0ccf('0xa9')]);}}break;case _0x0ccf('0xd3'):_0xb36e12[_0x0ccf('0x44')]+=0x1;_0x3d86ca['countagentrejectretry']+=0x1;_0x3d86ca['countglobal']=ut['totalGlobal'](_0x3d86ca);ut[_0x0ccf('0x92')](_0x3d86ca,0x14,_0x0ccf('0xd4'));ami[_0x0ccf('0x9d')]('custom:agentreject',ut[_0x0ccf('0x9e')](_0x3d86ca,_0x0ccf('0xd5')));rpcDb[_0x0ccf('0x90')](_0x3d86ca,_0x0ccf('0xd6'));if(ut[_0x0ccf('0x9b')](_0x3d86ca)>=_0xb36e12[_0x0ccf('0xa1')]){_0x40d428=ut['cloneAction'](_0x3d86ca,0x14,'AgentReject');rpcDb[_0x0ccf('0x94')](_0x40d428,_0x0ccf('0xd7'));}else{if(_0x3d86ca[_0x0ccf('0xd8')]>=_0xb36e12[_0x0ccf('0xd9')]){rpcDb[_0x0ccf('0x94')](_0x3d86ca,_0x0ccf('0xd7'));}else{rpcDb['rescheduleContact'](ut[_0x0ccf('0xa6')](_0x3d86ca,'countagentrejectretry',_0xb36e12['dialAgentRejectRetryFrequency']),_0x3d86ca[_0x0ccf('0xa8')],_0x3d86ca[_0x0ccf('0xa9')]);}}break;case _0x0ccf('0xda'):_0xb36e12[_0x0ccf('0x46')]+=0x1;_0x3d86ca[_0x0ccf('0xdb')]+=0x1;_0x3d86ca[_0x0ccf('0x9a')]=ut[_0x0ccf('0x9b')](_0x3d86ca);ut[_0x0ccf('0x92')](_0x3d86ca,0xb,_0x0ccf('0xdc'));rpcDb[_0x0ccf('0x90')](_0x3d86ca,_0x0ccf('0xdd'));if(ut['totalGlobal'](_0x3d86ca)>=_0xb36e12[_0x0ccf('0xa1')]){_0x40d428=ut[_0x0ccf('0xc1')](_0x3d86ca,0xf,_0x0ccf('0xa2'));rpcDb[_0x0ccf('0x94')](_0x40d428,_0x0ccf('0xdd'));}else{if(_0x3d86ca[_0x0ccf('0xde')]>=_0xb36e12[_0x0ccf('0xdf')]){rpcDb['createCustomerFinal'](_0x3d86ca,_0x0ccf('0xdd'));}else{rpcDb[_0x0ccf('0xa5')](ut[_0x0ccf('0xa6')](_0x3d86ca,_0x0ccf('0xdb'),_0xb36e12['dialAbandonedRetryFrequency']),_0x3d86ca[_0x0ccf('0xa8')],_0x3d86ca[_0x0ccf('0xa9')]);}}break;case'18':_0xb36e12['outboundUnknownCallsDay']+=0x1;_0x3d86ca[_0x0ccf('0xe0')]+=0x1;_0x3d86ca['countglobal']=ut[_0x0ccf('0x9b')](_0x3d86ca);ut['logCustomer'](_0x3d86ca,0x12,_0x83584b[_0x0ccf('0xe1')]||_0x83584b[_0x0ccf('0xe2')]);ami[_0x0ccf('0x9d')]('custom:amd',ut['buildObj'](_0x3d86ca,_0x0ccf('0xe3')));rpcDb[_0x0ccf('0x90')](_0x3d86ca,_0x0ccf('0xe4'));if(ut[_0x0ccf('0x9b')](_0x3d86ca)>=_0xb36e12[_0x0ccf('0xa1')]){_0x40d428=ut[_0x0ccf('0xc1')](_0x3d86ca,0xf,_0x0ccf('0xa2'));rpcDb[_0x0ccf('0x94')](_0x40d428,_0x0ccf('0xe4'));}else{rpcDb[_0x0ccf('0x94')](_0x3d86ca,_0x0ccf('0xe4'));}delete this[_0x0ccf('0x15')][_0x83584b[_0x0ccf('0xaa')]];break;case'19':_0xb36e12['outboundUnknownCallsDay']+=0x1;_0x3d86ca[_0x0ccf('0x9a')]=ut[_0x0ccf('0x9b')](_0x3d86ca);ut[_0x0ccf('0x92')](_0x3d86ca,0x13,_0x83584b[_0x0ccf('0xe1')]||_0x83584b[_0x0ccf('0xe2')]);ami['emit'](_0x0ccf('0xe5'),ut[_0x0ccf('0x9e')](_0x3d86ca,_0x0ccf('0xe3')));rpcDb[_0x0ccf('0x90')](_0x3d86ca,_0x0ccf('0xe6'));if(ut[_0x0ccf('0x9b')](_0x3d86ca)>=_0xb36e12['dialGlobalMaxRetry']){_0x40d428=ut[_0x0ccf('0xc1')](_0x3d86ca,0xf,_0x0ccf('0xa2'));rpcDb[_0x0ccf('0x94')](_0x40d428,'[callProgressDetectingCustomer][machine]');}else{rpcDb['createCustomerFinal'](_0x3d86ca,_0x0ccf('0xe6'));}delete this[_0x0ccf('0x15')][_0x83584b[_0x0ccf('0xaa')]];break;default:if(_0x3d86ca[_0x0ccf('0x72')]){ut[_0x0ccf('0x7c')](_0xb36e12,_0x0ccf('0xe7'));ut['loggerError']('[Dialer][decrementTalkink][no\x20Hangup][Preview]'+_0xb36e12[_0x0ccf('0x2b')],_0x83584b);}_0xb36e12[_0x0ccf('0x45')]+=0x1;_0x3d86ca[_0x0ccf('0x9a')]=ut[_0x0ccf('0x9b')](_0x3d86ca);ut['logCustomer'](_0x3d86ca,0xc,_0x83584b[_0x0ccf('0xe1')]||_0x83584b[_0x0ccf('0xe2')]);rpcDb['createCustomerHistory'](_0x3d86ca,_0x0ccf('0xe8'));if(ut[_0x0ccf('0x9b')](_0x3d86ca)>=_0xb36e12[_0x0ccf('0xa1')]){_0x40d428=ut[_0x0ccf('0xc1')](_0x3d86ca,0xf,_0x0ccf('0xa2'));rpcDb['createCustomerFinal'](_0x40d428,_0x0ccf('0xe9'));}else{rpcDb[_0x0ccf('0x94')](_0x3d86ca,_0x0ccf('0xe9'));}delete this[_0x0ccf('0x15')][_0x83584b[_0x0ccf('0xaa')]];}if(!(_0x3d86ca['dialAnswer']&&_0x4831d6==='16')){ut[_0x0ccf('0xea')](_0xb36e12,_0x0ccf('0xeb'));logger[_0x0ccf('0x59')](_0x0ccf('0xec'),_0x3d86ca['uniqueid'],'\x20Queue',_0xb36e12[_0x0ccf('0x2b')],'originated:\x20',_0xb36e12[_0x0ccf('0x50')]);}if(_0x4831d6!==_0x0ccf('0xab')){delete this['actions'][_0x83584b[_0x0ccf('0xaa')]];delete this[_0x0ccf('0x15')][_0x83584b[_0x0ccf('0xed')]];}}};Preview[_0x0ccf('0xf')][_0x0ccf('0xee')]=function(_0x43b8ab,_0x286417,_0x1cd915){if(_['isUndefined'](_0x286417)&&'object'!==typeof _0x286417){return;}if(_[_0x0ccf('0xef')](_0x1cd915)&&_0x0ccf('0xf0')!==typeof _0x1cd915){return;}switch(_0x1cd915[_0x0ccf('0xf1')]){case'0':ut[_0x0ccf('0xf2')](_0x43b8ab,0x0,_0x0ccf('0x9c'));rpcDb[_0x0ccf('0xf3')](_0x43b8ab,_0x0ccf('0xf4'));break;case'3':ut[_0x0ccf('0xf2')](_0x43b8ab,0x3,_0x0ccf('0xc7'));rpcDb[_0x0ccf('0xf3')](_0x43b8ab,_0x0ccf('0xf5'));break;case'5':ut['logAgent'](_0x43b8ab,0x5,_0x0ccf('0xbd'));rpcDb[_0x0ccf('0xf3')](_0x43b8ab,_0x0ccf('0xf6'));break;case'8':ut[_0x0ccf('0xf2')](_0x43b8ab,0x8,'Congestion');rpcDb[_0x0ccf('0xf3')](_0x43b8ab,_0x0ccf('0xf7'));break;case'22':ut['logAgent'](_0x43b8ab,0x16,_0x0ccf('0xf8'));rpcDb[_0x0ccf('0xf3')](_0x43b8ab,_0x0ccf('0xf9'));break;default:ut['logAgent'](_0x43b8ab,0xc,_0x1cd915['reason']);rpcDb['createAgentHistory'](_0x43b8ab,_0x0ccf('0xf7'));}ut[_0x0ccf('0xea')](_0x286417,_0x0ccf('0xfa'));logger['info']('[originated][decrement][callProgressDetectingAgent]',_0x43b8ab['uniqueid'],_0x0ccf('0xae'),_0x286417[_0x0ccf('0x2b')],_0x0ccf('0x6f'),_0x286417[_0x0ccf('0x50')]);delete this[_0x0ccf('0x15')][_0x43b8ab[_0x0ccf('0xad')]];};Preview['prototype']['checkInBlack']=function(_0x5a9912,_0x15c39d,_0x21bce1,_0x36df57,_0x3b6474){var _0x4968a0=this;return new BPromise(function(_0xabcea7,_0x28fbd9){if(_[_0x0ccf('0x6d')](_0x15c39d)||_['isNil'](_0x15c39d[_0x0ccf('0xfb')])||_['isNil'](_0x15c39d[_0x0ccf('0xfb')][_0x0ccf('0xfc')])||_['isNil'](_0x15c39d[_0x0ccf('0x74')])){_0x28fbd9(ut[_0x0ccf('0x4f')](_0x0ccf('0xfd'),_0x36df57,_0x3b6474));return;}var _0x570307=uuid['v4']();var _0xdc8388=_0x4968a0[_0x0ccf('0x28')][_0x15c39d[_0x0ccf('0xfe')][_0x0ccf('0x2b')]];var _0x518bdf=_0x21bce1?_0x4968a0[_0x0ccf('0x16')][_0x21bce1]['id']:undefined;_0x4968a0[_0x0ccf('0x15')][_0x570307]=new Action(_0x15c39d,_0xdc8388,_0x570307,_0x21bce1,_0x518bdf);var _0xe2806a=_0x4968a0[_0x0ccf('0x15')][_0x570307];_0xe2806a[_0x0ccf('0xa8')]=_0x36df57;_0xe2806a[_0x0ccf('0xa9')]=_0x3b6474;_0xe2806a['lookAgent']=_0x21bce1;if(_[_0x0ccf('0xff')](_0x5a9912)){_0x4968a0[_0x0ccf('0x100')](_0xe2806a,_0xdc8388,_0x15c39d,_0x21bce1)['then'](function(_0x441e03){logger[_0x0ccf('0x59')](_0x0ccf('0x101'),_0x0ccf('0x102')+_0xe2806a[_0x0ccf('0x70')]+_0x0ccf('0x103')+_0xe2806a[_0x0ccf('0x104')],JSON['stringify'](_0x441e03));ami['emit'](_0x0ccf('0x105'),ut[_0x0ccf('0x9e')](_0xe2806a,_0x0ccf('0x106'),_0x4968a0['campaignsPreview'][_0xe2806a[_0x0ccf('0x70')]]));_0xabcea7(ut[_0x0ccf('0x4f')]('Calling'));})['catch'](function(_0x5a8572){ut[_0x0ccf('0x61')](_0x0ccf('0x107'),_0x5a8572);_0x28fbd9(ut['message'](_0x0ccf('0x108'),_0x36df57,_0x3b6474));});}else{_0xdc8388[_0x0ccf('0x3c')]+=0x1;ut[_0x0ccf('0x109')](_0xe2806a);rpcDb[_0x0ccf('0x10a')](_0xe2806a,_0x0ccf('0x10b'));delete _0x4968a0[_0x0ccf('0x15')][_0x570307];_0x28fbd9(ut[_0x0ccf('0x4f')](_0x0ccf('0x10c'),_0x36df57,_0x3b6474));}});};Preview[_0x0ccf('0xf')][_0x0ccf('0x96')]=function(_0x568dba){return!_[_0x0ccf('0x6d')](_0x568dba)&&!_[_0x0ccf('0x6d')](_0x568dba[_0x0ccf('0x2b')])&&!_['isNil'](_0x568dba[_0x0ccf('0x56')])&&_0x568dba[_0x0ccf('0x56')]&&!_[_0x0ccf('0x6d')](this['trunks'][util[_0x0ccf('0x5b')]('SIP/%s',_0x568dba[_0x0ccf('0x2b')])])&&!_[_0x0ccf('0x6d')](this[_0x0ccf('0x14')][util['format'](_0x0ccf('0x10d'),_0x568dba[_0x0ccf('0x2b')])][_0x0ccf('0x77')])&&(this['trunks'][util['format'](_0x0ccf('0x10d'),_0x568dba[_0x0ccf('0x2b')])][_0x0ccf('0x77')]===_0x0ccf('0x10e')||this[_0x0ccf('0x14')][util[_0x0ccf('0x5b')](_0x0ccf('0x10d'),_0x568dba[_0x0ccf('0x2b')])][_0x0ccf('0x77')]===_0x0ccf('0x10f'));};Preview[_0x0ccf('0xf')][_0x0ccf('0x89')]=function(_0x30c20f,_0x2b77ed){var _0x48abe0=this;return new BPromise(function(_0x1a33b3,_0x31df3b){_0x48abe0['execRun'](_0x30c20f,_0x2b77ed)[_0x0ccf('0x8a')](function(_0x233cfa){_0x1a33b3(_[_0x0ccf('0x73')](_0x233cfa,[_0x0ccf('0x4f')]));})[_0x0ccf('0x79')](function(_0x6d1b68){if(_0x6d1b68[_0x0ccf('0x110')]){rpcDb[_0x0ccf('0x111')](_0x30c20f);}if(_0x6d1b68[_0x0ccf('0x56')]){rpcDb[_0x0ccf('0x112')](_0x30c20f);}_0x31df3b(_[_0x0ccf('0x73')](_0x6d1b68,[_0x0ccf('0x4f')]));});});};Preview['prototype']['execRun']=function(_0x59faf3,_0x1da96b){var _0x533b0d=this;return new BPromise(function(_0x23a066,_0x5ed88f){var _0x1a03f5,_0x4c9b4b;rpcDb['getContactPreview'](_0x59faf3)[_0x0ccf('0x8a')](function(_0x524d39){if(!_[_0x0ccf('0x6d')](_0x524d39[0x0])){_0x4c9b4b=_0x524d39[0x0][_0x0ccf('0x113')]?![]:!![];_0x1a03f5=_0x524d39[0x0]['recallme']?!![]:![];_0x1a03f5=_0x1da96b?!![]:_0x1a03f5;}var _0x152d77=_0x533b0d['validateContact'](_0x524d39);if(_0x152d77[_0x0ccf('0x114')]){rpcDb['checkIsBlackList'](_[_0x0ccf('0x73')](_0x524d39[0x0],[_0x0ccf('0x74'),_0x0ccf('0x115')]))[_0x0ccf('0x8a')](function(_0x47100a){_0x533b0d[_0x0ccf('0x116')](_0x47100a,_0x524d39[0x0],_0x1da96b,_0x4c9b4b,_0x1a03f5)[_0x0ccf('0x8a')](function(_0x483b3b){_0x23a066(_0x483b3b);})[_0x0ccf('0x79')](function(_0x3b9133){_0x5ed88f(_0x3b9133);});})[_0x0ccf('0x79')](function(_0x17fc66){ut[_0x0ccf('0x61')](_0x0ccf('0x117'),_0x17fc66);_0x5ed88f(ut[_0x0ccf('0x4f')]('Call\x20unsuccessful',_0x4c9b4b,_0x1a03f5));});}else{_0x5ed88f(ut[_0x0ccf('0x4f')](_0x152d77[_0x0ccf('0x4f')],_0x4c9b4b,_0x1a03f5));}})[_0x0ccf('0x79')](function(_0x211d2e){ut[_0x0ccf('0x61')](_0x0ccf('0x118'),_0x211d2e);_0x5ed88f(ut[_0x0ccf('0x4f')](_0x0ccf('0x119'),![],!![]));});});};Preview[_0x0ccf('0xf')]['validateContact']=function(_0x9e8da9){if(_[_0x0ccf('0x6d')](_0x9e8da9)||_[_0x0ccf('0xff')](_0x9e8da9)||!_[_0x0ccf('0x6d')](_0x9e8da9[0x0][_0x0ccf('0x87')])&&_[_0x0ccf('0x6d')](_0x9e8da9[0x0][_0x0ccf('0x87')]['name'])){ut[_0x0ccf('0x61')](_0x0ccf('0x11a'),_0x9e8da9);return{'isValid':![],'message':_0x0ccf('0x11b')};}var _0x1342f3=this[_0x0ccf('0x28')][_0x9e8da9[0x0][_0x0ccf('0xfe')][_0x0ccf('0x2b')]];_0x1342f3[_0x0ccf('0x4f')]=_0x0ccf('0x97');if(_[_0x0ccf('0x6d')](_0x1342f3)){ut[_0x0ccf('0x61')](_0x0ccf('0x11c'),_0x1342f3);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this[_0x0ccf('0x96')](_0x1342f3['Trunk'])){ut[_0x0ccf('0x61')](_0x0ccf('0x11d'),_0x0ccf('0x11e')+_0x1342f3['name']+_0x0ccf('0x11f'));if(!this[_0x0ccf('0x96')](_0x1342f3[_0x0ccf('0x120')])){ut[_0x0ccf('0x61')](_0x0ccf('0x11d'),_0x1342f3[_0x0ccf('0x2b')]+_0x0ccf('0x121'));return{'isValid':![],'message':'Trunk\x20not\x20work'};}}if(!ut[_0x0ccf('0x95')](_0x1342f3['dialActive'])){ut['logger'](_0x0ccf('0x122'),_0x1342f3['name']+_0x0ccf('0x123'));return{'isValid':![],'message':_0x0ccf('0x11e')+_0x1342f3['name']+_0x0ccf('0x123')};}return{'isValid':!![],'message':_0x0ccf('0x124')};};Preview['prototype'][_0x0ccf('0x100')]=function(_0x53428f,_0x17bb63,_0x4c052f,_0x4406d6){var _0x3554cd=this;return new BPromise(function(_0x32dd90,_0x4c9e3e){var _0x4e98e4=_0x53428f[_0x0ccf('0xad')];var _0x2c1b73=_0x3554cd['isTrunkReachable'](_0x17bb63[_0x0ccf('0x55')])?util[_0x0ccf('0x5b')](_0x0ccf('0x125'),_0x17bb63[_0x0ccf('0x55')]['name'],_[_0x0ccf('0x6d')](_0x17bb63[_0x0ccf('0x39')])?'':_0x17bb63[_0x0ccf('0x39')][_0x0ccf('0x126')]()||'',_0x17bb63[_0x0ccf('0x127')]>0x0?_0x4c052f[_0x0ccf('0xfb')][_0x0ccf('0xfc')][_0x0ccf('0x128')](_0x17bb63[_0x0ccf('0x127')]):_0x4c052f[_0x0ccf('0xfb')][_0x0ccf('0xfc')]):util['format'](_0x0ccf('0x125'),_[_0x0ccf('0x6d')](_0x17bb63[_0x0ccf('0x120')])?_0x17bb63[_0x0ccf('0x55')]['name']:_0x17bb63[_0x0ccf('0x120')][_0x0ccf('0x2b')],_['isNil'](_0x17bb63['dialPrefix'])?'':_0x17bb63[_0x0ccf('0x39')][_0x0ccf('0x126')]()||'',_0x17bb63[_0x0ccf('0x127')]>0x0?_0x4c052f['Contact'][_0x0ccf('0xfc')][_0x0ccf('0x128')](_0x17bb63['dialCutDigit']):_0x4c052f[_0x0ccf('0xfb')]['phone']);var _0x2ff2d8=_0x3554cd['isTrunkReachable'](_0x17bb63[_0x0ccf('0x55')])?ut[_0x0ccf('0x129')](_0x17bb63['Trunk'][_0x0ccf('0x12a')],_0x17bb63['dialOriginateCallerIdName'],_0x17bb63['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0x0ccf('0x12b')](_0x17bb63[_0x0ccf('0x37')],_0x17bb63['dialRandomLastDigitCallerIdNumber']):_0x17bb63[_0x0ccf('0x37')]):ut['getCallerId'](_['isNil'](_0x17bb63[_0x0ccf('0x120')])?_0x17bb63[_0x0ccf('0x55')][_0x0ccf('0x12a')]:_0x17bb63['TrunkBackup'][_0x0ccf('0x12a')],_0x17bb63['dialOriginateCallerIdName'],_0x17bb63[_0x0ccf('0x12c')]>0x0?ut[_0x0ccf('0x12b')](_0x17bb63[_0x0ccf('0x37')],_0x17bb63['dialRandomLastDigitCallerIdNumber']):_0x17bb63[_0x0ccf('0x37')]);if(_0x2ff2d8){_0x53428f[_0x0ccf('0x12d')]=ut[_0x0ccf('0x12e')](_0x2ff2d8);_0x53428f[_0x0ccf('0x12f')]=ut[_0x0ccf('0x130')](_0x2ff2d8);}var _0xcd1630=ut['addVariables'](_0x17bb63,_0x4c052f,_0x2c1b73,_0x2ff2d8,_0x4e98e4,_0x53428f);_[_0x0ccf('0x131')](_0x53428f,ut['toLowerVariables'](_0xcd1630));_0x53428f[_0x0ccf('0x132')]=moment()[_0x0ccf('0x5b')](_0x0ccf('0x8c'));ami[_0x0ccf('0x76')](ut[_0x0ccf('0x133')](_0x53428f,_0x17bb63,_0xcd1630,_0x53428f['activeContact'],_0x4406d6))[_0x0ccf('0x8a')](function(_0x2704f2){var _0x1c1b77=_0x53428f[_0x0ccf('0x134')];if(!_[_0x0ccf('0x6d')](_0x1c1b77)){if(!_['isNil'](_0x3554cd[_0x0ccf('0x16')][_0x1c1b77])){_0x3554cd[_0x0ccf('0x16')][_0x1c1b77][_0x0ccf('0x135')]=_0x53428f[_0x0ccf('0x136')];emit(util[_0x0ccf('0x5b')](_0x0ccf('0x137'),_0x3554cd[_0x0ccf('0x16')][_0x1c1b77][_0x0ccf('0x2b')]),_0x0ccf('0x138'),{'destaccountcode':_0x3554cd['agents'][_0x1c1b77]['accountcode'],'destconnectedlinenum':_0x53428f[_0x0ccf('0x136')]});}}_0x17bb63[_0x0ccf('0x50')]+=0x1;logger[_0x0ccf('0x59')]('[originated][increment]',_0x4e98e4,_0x0ccf('0xae'),_0x17bb63[_0x0ccf('0x2b')],_0x0ccf('0x6f'),_0x17bb63[_0x0ccf('0x50')]);_0x32dd90(_0x2704f2);})[_0x0ccf('0x79')](function(_0x212382){ut['logAgent'](_0x53428f,0xe,'OriginateError');rpcDb[_0x0ccf('0xf3')](_0x53428f,_0x0ccf('0x139'));_0x4c9e3e(_0x212382);});});};Preview['prototype'][_0x0ccf('0x22')]=function(_0x39a246){if(this[_0x0ccf('0x15')][_0x39a246['linkedid']]){this[_0x0ccf('0x15')][_0x39a246[_0x0ccf('0xaa')]][_0x0ccf('0x78')]=_0x39a246[_0x0ccf('0x78')];}};Preview['prototype'][_0x0ccf('0x19')]=function(_0x201be8){var _0x1e2eaf=this;var _0x3b95d7=this[_0x0ccf('0x15')][_0x201be8[_0x0ccf('0x13a')]];if(_0x3b95d7){if(_0x3b95d7[_0x0ccf('0x13b')]&&this[_0x0ccf('0x16')][_0x3b95d7['lookAgent']]){ut['logLookAgent'](_0x3b95d7,this[_0x0ccf('0x16')][_0x3b95d7['lookAgent']][_0x0ccf('0x2b')],this[_0x0ccf('0x16')][_0x3b95d7['lookAgent']]['id']);}var _0x4fa9f7=_[_0x0ccf('0x13c')](_0x3b95d7);_0x4fa9f7[_0x0ccf('0xac')]=moment()[_0x0ccf('0x5b')]('YYYY-MM-DD\x20HH:mm:ss');var _0x5310aa=_0x1e2eaf[_0x0ccf('0x28')][_0x3b95d7['queue']];if(ut[_0x0ccf('0x13d')](_0x201be8[_0x0ccf('0x13e')])){if(_0x3b95d7[_0x0ccf('0xa8')]){rpcDb[_0x0ccf('0x111')](_0x3b95d7[_0x0ccf('0x104')]);}if(_0x3b95d7[_0x0ccf('0xa9')]){rpcDb['disableContact'](_0x3b95d7[_0x0ccf('0x104')]);}ami['emit']('custom:agentringnoanswer',ut[_0x0ccf('0x9e')](_0x3b95d7,'rejected',this[_0x0ccf('0x28')][_0x3b95d7[_0x0ccf('0x70')]]));this['callProgressDetectingAgent'](_0x4fa9f7,_0x5310aa,_0x201be8);}else{_0x3b95d7[_0x0ccf('0x132')]=moment()['format'](_0x0ccf('0x8c'));ut[_0x0ccf('0xf2')](_0x4fa9f7,0x4,_0x0ccf('0x13f'));rpcDb[_0x0ccf('0xf3')](_0x4fa9f7,'[callProgressDetectingAgent][logAnswer]');}}};Preview[_0x0ccf('0xf')]['syncHangup']=function(_0x1a363d){var _0x220f92=this;var _0x3a5c74=this[_0x0ccf('0x15')][_0x1a363d['linkedid']];var _0x337f04;if(_0x3a5c74){_0x337f04=this[_0x0ccf('0x28')][_0x3a5c74[_0x0ccf('0x70')]];logger[_0x0ccf('0x59')](_0x0ccf('0x140'),_0x1a363d[_0x0ccf('0xaa')],_0x0ccf('0xae'),_0x337f04[_0x0ccf('0x2b')],_0x0ccf('0x71'),_0x337f04[_0x0ccf('0x2f')]);}if(this[_0x0ccf('0x15')][_0x1a363d[_0x0ccf('0xaa')]]&&_0x1a363d['linkedid']!==_0x1a363d[_0x0ccf('0xad')]){if(_0x1a363d[_0x0ccf('0x141')]==='16'&&this[_0x0ccf('0x15')][_0x1a363d['linkedid']][_0x0ccf('0x72')]){this[_0x0ccf('0x98')](_0x1a363d,_0x1a363d[_0x0ccf('0xaa')],_0x1a363d[_0x0ccf('0x141')]);}else if(this['actions'][_0x1a363d[_0x0ccf('0xaa')]][_0x0ccf('0x72')]){logger[_0x0ccf('0x59')]('[syncHangup][talking][cause]',_0x1a363d[_0x0ccf('0xaa')],_0x1a363d['cause'],'\x20Queue',_0x337f04[_0x0ccf('0x2b')],_0x0ccf('0x71'),_0x337f04[_0x0ccf('0x2f')]);this[_0x0ccf('0x98')](_0x1a363d,_0x1a363d['linkedid'],_0x1a363d[_0x0ccf('0x141')]);}}else if(_0x3a5c74&&_['isNil'](_0x3a5c74['statedesc'])&&_0x337f04[_0x0ccf('0x142')]&&_0x1a363d[_0x0ccf('0xaa')]===_0x1a363d['uniqueid']&&_['isNil'](_0x1a363d[_0x0ccf('0xf1')])&&_0x1a363d[_0x0ccf('0x141')]==='16'&&_0x1a363d[_0x0ccf('0x143')]==='6'&&_[_0x0ccf('0xef')](_0x3a5c74[_0x0ccf('0x144')])){if(_0x3a5c74[_0x0ccf('0xa8')]){rpcDb[_0x0ccf('0x111')](_0x3a5c74['idContact']);}if(_0x3a5c74[_0x0ccf('0xa9')]){rpcDb[_0x0ccf('0x112')](_0x3a5c74[_0x0ccf('0x104')]);}_0x1a363d['reason']='22';this[_0x0ccf('0xee')](_0x3a5c74,_0x337f04,_0x1a363d);}else if(_0x3a5c74&&_0x3a5c74['transfer']){if(_0x1a363d[_0x0ccf('0x141')]==='16'&&this[_0x0ccf('0x15')][_0x1a363d['linkedid']][_0x0ccf('0x72')]){logger[_0x0ccf('0x59')](_0x0ccf('0x145'),_0x1a363d[_0x0ccf('0xaa')],_0x1a363d[_0x0ccf('0x141')],_0x0ccf('0xae'),_0x337f04['name'],_0x0ccf('0x71'),_0x337f04[_0x0ccf('0x2f')]);this[_0x0ccf('0x98')](_0x1a363d,_0x1a363d[_0x0ccf('0xaa')],_0x1a363d[_0x0ccf('0x141')]);}else if(this['actions'][_0x1a363d['linkedid']]['dialAnswer']){logger['info'](_0x0ccf('0x146'),_0x1a363d[_0x0ccf('0xaa')],_0x1a363d['cause'],_0x0ccf('0xae'),_0x337f04['name'],_0x0ccf('0x71'),_0x337f04[_0x0ccf('0x2f')]);this[_0x0ccf('0x98')](_0x1a363d,_0x1a363d[_0x0ccf('0xaa')],_0x1a363d['cause']);}}};Preview['prototype'][_0x0ccf('0x20')]=function(_0x4ebeef){if(this[_0x0ccf('0x15')][_0x4ebeef[_0x0ccf('0xed')]]&&_0x4ebeef[_0x0ccf('0xed')]!==_0x4ebeef[_0x0ccf('0x147')]){this[_0x0ccf('0x98')](_0x4ebeef,_0x4ebeef['destlinkedid'],_0x4ebeef['dialstatus']);}};Preview['prototype'][_0x0ccf('0x1e')]=function(_0x2a0346){if(this['actions'][_0x2a0346[_0x0ccf('0xaa')]]&&_0x2a0346[_0x0ccf('0xaa')]!==_0x2a0346['uniqueid']&&!this[_0x0ccf('0x15')][_0x2a0346[_0x0ccf('0xaa')]][_0x0ccf('0x72')]){if(_0x2a0346['cause']==='1'){this[_0x0ccf('0x98')](_0x2a0346,_0x2a0346['linkedid'],_0x2a0346[_0x0ccf('0x141')]);}}};Preview[_0x0ccf('0xf')][_0x0ccf('0x148')]=function(_0x4d54e3,_0x282e66,_0x4b875d){if(this[_0x0ccf('0x15')][_0x4d54e3]){if(_[_0x0ccf('0x6d')](this['actions'][_0x4d54e3]['variables'])){this['actions'][_0x4d54e3]['variables']={};}this[_0x0ccf('0x15')][_0x4d54e3][_0x0ccf('0x149')][_0x282e66]=_0x4b875d;}};Preview[_0x0ccf('0xf')][_0x0ccf('0x24')]=function(_0x12bed6){try{if(!_[_0x0ccf('0x6d')](_0x12bed6)){if(ut[_0x0ccf('0x14a')](_[_0x0ccf('0x14b')](_0x12bed6[_0x0ccf('0x14c')])[0x0])){this['addVariable'](_0x12bed6[_0x0ccf('0xad')],_['keys'](_0x12bed6['variable'])[0x0],_0x12bed6[_0x0ccf('0x14d')]);}}}catch(_0x26a0a8){logger[_0x0ccf('0x14e')](_0x0ccf('0x14f'),util[_0x0ccf('0x150')](_0x26a0a8,{'showHidden':![],'depth':null}));}};Preview[_0x0ccf('0xf')][_0x0ccf('0x151')]=function(_0x1ed49d){if(_0x1ed49d){if(this['actions'][_0x1ed49d[_0x0ccf('0x152')]]){this[_0x0ccf('0x15')][_0x1ed49d[_0x0ccf('0x152')]][_0x0ccf('0x144')]=!![];}}};Preview[_0x0ccf('0xf')][_0x0ccf('0x153')]=function(_0xc5ba66){if(_0xc5ba66){if(this['actions'][_0xc5ba66['transfererlinkedid']]){this[_0x0ccf('0x15')][_0xc5ba66[_0x0ccf('0x154')]]['transfer']=!![];}}};module['exports']=Preview;
\ No newline at end of file
+var _0x5100=['\x20Not\x20Active','Is\x20Valid','trim','substring','SIP/%s/%s%s','dialCutDigit','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','getCallerId','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','Action','variablesAction','channelAgent','destconnectedlinenum','user:%s','user:agentconnect','accountcode','calleridnum','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','syncNewExten','channel','actionid','logLookAgent','isFailure','idContact','custom:agentringnoanswer','rejected','cause','statedesc','transfer','unlockContact','[syncHangup][talking][cause]','destuniqueid','addVariable','variables','filterKey','[syncVarSet][Preview]','syncAttendedTransfer','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','bluebird','uuid','moment','md5','../../../config/logger','preview','actionPreview','../ami','./rpcDb','./action','redis','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','hangup','syncHangup','syncHangupRequest','dialend','syncDialEnd','newexten','syncVarSet','attendedtransfer','syncBlindTransfer','loopCampaigns','emit','type','strategy','available','loggedIn','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangBusyFactor','startPredictive','startProgressive','Trunk','name','active','callerid','Interval','format','voice:queue:%s','voice_queue:save','info','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','pTalking','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','\x20is\x20disactive','syncCampaigns','hasOwnProperty','booked','clearZombieChannels','outbound','setMessage','recallMe','clearZombieChannel','isNil','[clearZombieChannels][talking]','Queue','originated:\x20','queue','pTalking:\x20','stringify','dialAnswer','contactId','UserId','ListId','catch','[clearZombieChannel]','decrementTalkink','[Dialer][checkChannel][pTalking][Preview]','loggerError','[action]','size','getContactRecallMe','agentReadyId','length','scheduledat','dialRecallMeTimeout','voicePause','run','logger2','[RecallMe]','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','dialGlobalMaxRetry','cloneAction','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','unlockAgent','activeContact','linkedid','ANSWER','responsetime','[syncHangup][talking][increment]','uniqueid','\x20Queue','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','outboundAnswerCallsDay','answered','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','talktime','sumBillable','[syncHangup][talking][decrement]','BUSY','countbusyretry','Busy','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','[callProgressDetectingCustomer][logBusy]','dialBusyRetryFrequency','countnoanswerretry','NoAnswer','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','CONGESTION','Congestion','custom:agentcongestion','congestion','countcongestionretry','CANCEL','countagentrejectretry','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','AgentReject','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','ABANDONED','countabandonedretry','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedRetryFrequency','cause-txt','amd','[callProgressDetectingCustomer][hangupInAMD]','dialstatus','custom:amd','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','logAgent','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','updateOriginated','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','phone','VoiceQueueId','Contact\x20is\x20undefined','lookAgent','isEmpty','execCall','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','[Preview][execCall][failure]','Call\x20failed','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','status','unmonitored','execRun','pick','unlock','disableContact','then','recallme','validateContact','Contact.phone','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','Agent','[Preview][validateContact][Empty\x20Contact]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','isActive','[Preview][validateContact][Campaign\x20Active]'];(function(_0x92c9b7,_0x1e3ccc){var _0x2e312f=function(_0x299488){while(--_0x299488){_0x92c9b7['push'](_0x92c9b7['shift']());}};_0x2e312f(++_0x1e3ccc);}(_0x5100,0x184));var _0x0510=function(_0x28f3c3,_0x1d15d7){_0x28f3c3=_0x28f3c3-0x0;var _0x11909b=_0x5100[_0x28f3c3];return _0x11909b;};'use strict';var util=require(_0x0510('0x0'));var _=require(_0x0510('0x1'));var BPromise=require(_0x0510('0x2'));var uuid=require(_0x0510('0x3'));var moment=require(_0x0510('0x4'));var md5=require(_0x0510('0x5'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x0510('0x6'))(_0x0510('0x7'));var loggerAction=require('../../../config/logger')(_0x0510('0x8'));var ami=require(_0x0510('0x9'));var rpcDb=require(_0x0510('0xa'));var Action=require(_0x0510('0xb'));var ut=require('./util/util');config[_0x0510('0xc')]=_['defaults'](config[_0x0510('0xc')],{'host':_0x0510('0xd'),'port':0x18eb});var io=require(_0x0510('0xe'))(new Redis(config[_0x0510('0xc')]));var Sequence=function(){};Sequence[_0x0510('0xf')][_0x0510('0x10')]=function(_0x5a9162){this[_0x0510('0x11')]=this[_0x0510('0x11')]?this[_0x0510('0x11')][_0x0510('0x12')](_0x5a9162):_0x5a9162();};function Preview(_0x23cb3b){this[_0x0510('0x13')]=new Sequence();this[_0x0510('0x14')]=_0x23cb3b[_0x0510('0x15')];this[_0x0510('0x16')]=_0x23cb3b[_0x0510('0x16')];this[_0x0510('0x17')]={};this[_0x0510('0x18')]=_0x23cb3b[_0x0510('0x18')];this[_0x0510('0x19')]=0x0;ami['on'](_0x0510('0x1a'),this[_0x0510('0x1b')][_0x0510('0x1c')](this));ami['on'](_0x0510('0x1d'),this[_0x0510('0x1e')][_0x0510('0x1c')](this));ami['on']('hanguprequest',this[_0x0510('0x1f')]['bind'](this));ami['on'](_0x0510('0x20'),this[_0x0510('0x21')]['bind'](this));ami['on'](_0x0510('0x22'),this['syncNewExten'][_0x0510('0x1c')](this));ami['on']('varset',this[_0x0510('0x23')]['bind'](this));ami['on'](_0x0510('0x24'),this['syncAttendedTransfer'][_0x0510('0x1c')](this));ami['on']('blindtransfer',this[_0x0510('0x25')][_0x0510('0x1c')](this));this[_0x0510('0x26')](this[_0x0510('0x14')]);}function emit(_0x5bac95,_0xbd8685,_0x3817c1){io['to'](_0x5bac95)[_0x0510('0x27')](_0xbd8685,_0x3817c1);}function emitCampaignPreview(_0xc6aaef){if(_0xc6aaef[_0x0510('0x28')]==='outbound'){var _0x52a8f8={'id':_0xc6aaef['id'],'name':_0xc6aaef['name'],'strategy':_0xc6aaef[_0x0510('0x29')],'answered':_0xc6aaef['answered'],'available':_0xc6aaef[_0x0510('0x2a')],'loggedIn':_0xc6aaef[_0x0510('0x2b')],'pTalking':_0xc6aaef['pTalking'],'sumBillable':_0xc6aaef['sumBillable'],'sumDuration':_0xc6aaef[_0x0510('0x2c')],'sumHoldTime':_0xc6aaef[_0x0510('0x2d')]||0x0,'talking':_0xc6aaef[_0x0510('0x2e')],'total':_0xc6aaef[_0x0510('0x2f')],'type':_0xc6aaef[_0x0510('0x28')],'unmanaged':_0xc6aaef[_0x0510('0x30')],'abandoned':_0xc6aaef[_0x0510('0x31')],'waiting':_0xc6aaef['waiting'],'loggedInDb':_0xc6aaef[_0x0510('0x32')],'dialActive':_0xc6aaef[_0x0510('0x33')],'dialMethod':_0xc6aaef[_0x0510('0x34')],'dialOriginateCallerIdName':_0xc6aaef[_0x0510('0x35')],'dialOriginateCallerIdNumber':_0xc6aaef[_0x0510('0x36')],'dialOriginateTimeout':_0xc6aaef['dialOriginateTimeout'],'dialPrefix':_0xc6aaef[_0x0510('0x37')],'outboundAnswerAgiCallsDay':_0xc6aaef['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0xc6aaef['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0xc6aaef[_0x0510('0x38')],'outboundBusyCallsDay':_0xc6aaef[_0x0510('0x39')],'outboundCongestionCallsDay':_0xc6aaef[_0x0510('0x3a')],'outboundDropCallsDayACS':_0xc6aaef[_0x0510('0x3b')],'outboundDropCallsDayCallersExit':_0xc6aaef[_0x0510('0x3c')],'outboundDropCallsDayTimeout':_0xc6aaef[_0x0510('0x3d')],'outboundNoAnswerCallsDay':_0xc6aaef[_0x0510('0x3e')],'outboundNoSuchCallsDay':_0xc6aaef[_0x0510('0x3f')],'outboundOriginateFailureCallsDay':_0xc6aaef[_0x0510('0x40')],'outboundReCallsDay':_0xc6aaef[_0x0510('0x41')],'outboundRejectCallsDay':_0xc6aaef[_0x0510('0x42')],'outboundUnknownCallsDay':_0xc6aaef[_0x0510('0x43')],'outboundAbandonedCallsDay':_0xc6aaef[_0x0510('0x44')],'predictiveIntervalAnsweredCalls':_0xc6aaef['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0xc6aaef[_0x0510('0x45')],'predictiveIntervalAvgTalktime':_0xc6aaef[_0x0510('0x46')],'predictiveIntervalDroppedCallsCallersExit':_0xc6aaef['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0xc6aaef[_0x0510('0x47')],'predictiveIntervalErlangCalls':_0xc6aaef[_0x0510('0x48')],'predictiveIntervalErlangCallsDroppedCalls':_0xc6aaef[_0x0510('0x49')],'predictiveIntervalHitRate':_0xc6aaef[_0x0510('0x4a')],'predictiveIntervalMultiplicativeFactor':_0xc6aaef[_0x0510('0x4b')],'predictiveIntervalPauses':_0xc6aaef[_0x0510('0x4c')],'predictiveIntervalAvailable':_0xc6aaef[_0x0510('0x4d')],'predictiveIntervalTotalCalls':_0xc6aaef[_0x0510('0x4e')],'message':_0xc6aaef[_0x0510('0x4f')],'originated':_0xc6aaef[_0x0510('0x50')],'erlangCalls':_0xc6aaef[_0x0510('0x51')],'erlangCallToSecond':_0xc6aaef[_0x0510('0x52')],'erlangAbandonmentRate':_0xc6aaef['erlangAbandonmentRate'],'erlangBusyFactor':_0xc6aaef[_0x0510('0x53')],'startPredictive':_0xc6aaef[_0x0510('0x54')],'startProgressive':_0xc6aaef[_0x0510('0x55')]};if(_0xc6aaef[_0x0510('0x56')]){_0x52a8f8['Trunk']={'id':_0xc6aaef[_0x0510('0x56')]['id'],'name':_0xc6aaef[_0x0510('0x56')][_0x0510('0x57')],'active':_0xc6aaef[_0x0510('0x56')][_0x0510('0x58')],'callerid':_0xc6aaef[_0x0510('0x56')][_0x0510('0x59')]};}if(_0xc6aaef['Interval']){_0x52a8f8[_0x0510('0x5a')]={'id':_0xc6aaef['Interval']['id'],'name':_0xc6aaef[_0x0510('0x5a')][_0x0510('0x57')]};}var _0x36cef0=md5(JSON['stringify'](_0x52a8f8));if(_0xc6aaef['md5']!==_0x36cef0){_0xc6aaef[_0x0510('0x5')]=_0x36cef0;emit(util[_0x0510('0x5b')](_0x0510('0x5c'),_0x52a8f8[_0x0510('0x57')]),_0x0510('0x5d'),_0x52a8f8);}}}function emitVoiceQueueChannelRemove(_0x9a07e8){logger[_0x0510('0x5e')]('[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event',JSON['stringify'](_0x9a07e8));emit(util['format'](_0x0510('0x5c'),_0x9a07e8['name']),_0x0510('0x5f'),_0x9a07e8);io[_0x0510('0x27')](_0x0510('0x60'),_0x9a07e8);}function notSendMessagesQueue(_0x31553a){if(_0x31553a[_0x0510('0x61')]){if(_0x31553a['originated']===0x0&&_0x31553a[_0x0510('0x62')]===0x0){_0x31553a[_0x0510('0x61')]=![];_0x31553a['available']=0x0;_0x31553a[_0x0510('0x63')]=0x0;_0x31553a['message']=_0x0510('0x64');ut[_0x0510('0x65')](_0x0510('0x66'),_0x31553a[_0x0510('0x57')]+_0x0510('0x67'));}else{_0x31553a['message']=_0x0510('0x68');ut[_0x0510('0x65')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x31553a['name']+_0x0510('0x69'));}emitCampaignPreview(_0x31553a);}}Preview[_0x0510('0xf')][_0x0510('0x26')]=function(){var _0x5cf976=this;setInterval(function(){_0x5cf976[_0x0510('0x6a')]();},0x7cf);};Preview[_0x0510('0xf')][_0x0510('0x6a')]=function(){var _0x4766f1=this[_0x0510('0x14')];this[_0x0510('0x19')]+=0x1;for(var _0x3f7cc6 in _0x4766f1){if(_0x4766f1[_0x0510('0x6b')](_0x3f7cc6)&&(_0x4766f1[_0x3f7cc6][_0x0510('0x34')]===_0x0510('0x7')||_0x4766f1[_0x3f7cc6][_0x0510('0x34')]===_0x0510('0x6c'))&&_0x4766f1[_0x3f7cc6]['type']==='outbound'){if(this[_0x0510('0x19')]>0x7){this['clockClearZombieChannels']=0x0;this[_0x0510('0x6d')]();}}if(_0x4766f1[_0x0510('0x6b')](_0x3f7cc6)&&_0x4766f1[_0x3f7cc6][_0x0510('0x34')]===_0x0510('0x7')&&_0x4766f1[_0x3f7cc6]['type']===_0x0510('0x6e')){if(_0x4766f1[_0x3f7cc6][_0x0510('0x33')]){this[_0x0510('0x6f')](_0x4766f1[_0x3f7cc6]);this[_0x0510('0x70')](_0x4766f1[_0x3f7cc6]);}else{notSendMessagesQueue(_0x4766f1[_0x3f7cc6]);}}}};Preview[_0x0510('0xf')][_0x0510('0x71')]=function(_0xcaac9c){var _0xe45613=this;this[_0x0510('0x13')]['enqueue'](function(){if(!_[_0x0510('0x72')](_0xe45613['actions'][_0xcaac9c])){loggerAction[_0x0510('0x5e')](_0x0510('0x73'),_0xcaac9c,_0x0510('0x74'),_0xe45613['actions'][_0xcaac9c]['queue'],_0x0510('0x75'),JSON['stringify'](_0xe45613[_0x0510('0x14')][_0xe45613[_0x0510('0x17')][_0xcaac9c][_0x0510('0x76')]][_0x0510('0x50')]),_0x0510('0x77'),JSON[_0x0510('0x78')](_0xe45613[_0x0510('0x14')][_0xe45613['actions'][_0xcaac9c][_0x0510('0x76')]][_0x0510('0x62')]),JSON['stringify'](_0xe45613['actions'][_0xcaac9c][_0x0510('0x79')]),JSON[_0x0510('0x78')](_['pick'](_0xe45613['actions'][_0xcaac9c],[_0x0510('0x7a'),_0x0510('0x7b'),'VoiceQueueId',_0x0510('0x7c')])));return ami['Action']({'action':'status','channel':_0xe45613['actions'][_0xcaac9c]['channel']})[_0x0510('0x7d')](function(_0x3a8bac){if(_0x3a8bac[_0x0510('0x4f')]==='No\x20such\x20channel'){setTimeout(function(){if(_0xe45613['actions'][_0xcaac9c]){ut['updateOriginated'](_0xe45613[_0x0510('0x14')][_0xe45613[_0x0510('0x17')][_0xcaac9c][_0x0510('0x76')]],_0x0510('0x7e'));if(_0xe45613[_0x0510('0x17')][_0xcaac9c][_0x0510('0x79')]===!![]){ut[_0x0510('0x7f')](_0xe45613['campaignsPreview'][_0xe45613[_0x0510('0x17')][_0xcaac9c]['queue']],_0x0510('0x7e'));ut['loggerError'](_0x0510('0x80')+_0xcaac9c,_0xe45613[_0x0510('0x17')][_0xcaac9c][_0x0510('0x76')]);}ut[_0x0510('0x81')]('[Dialer][checkChannel][Preview]'+_0xcaac9c,_0xe45613[_0x0510('0x17')][_0xcaac9c][_0x0510('0x76')]);delete _0xe45613[_0x0510('0x17')][_0xcaac9c];}},0x2328);}});}});};Preview[_0x0510('0xf')]['clearZombieChannels']=function(){var _0x57f4b4=this;loggerAction['info'](_0x0510('0x82'),_[_0x0510('0x83')](this['actions']));for(var _0xcfedbf in this[_0x0510('0x17')]){if(_0x57f4b4[_0x0510('0x17')]['hasOwnProperty'](_0xcfedbf)){_0x57f4b4[_0x0510('0x71')](_0xcfedbf);}}};Preview[_0x0510('0xf')][_0x0510('0x70')]=function(_0xae751d){var _0x1001d6=this;rpcDb[_0x0510('0x84')](_0xae751d['id'],ut[_0x0510('0x85')](this[_0x0510('0x18')]))['then'](function(_0x2d6d76){if(!_[_0x0510('0x72')](_0x2d6d76)){for(var _0x5b2f62=0x0;_0x5b2f62<_0x2d6d76[_0x0510('0x86')];_0x5b2f62+=0x1){if(ut['getDiff'](_0x2d6d76[_0x5b2f62][_0x0510('0x87')])<_0xae751d[_0x0510('0x88')]*0x3c){if(_0x2d6d76[_0x5b2f62]['Agent']&&!_0x2d6d76[_0x5b2f62]['Agent'][_0x0510('0x89')]){_0x1001d6[_0x0510('0x8a')](_0x2d6d76[_0x5b2f62]['id'])['then'](ut[_0x0510('0x8b')](_0x0510('0x8c')))[_0x0510('0x7d')](ut[_0x0510('0x8b')](_0x0510('0x8c')));}else{rpcDb['disableContact'](_0x2d6d76[_0x5b2f62]['id']);}}else{var _0x163d7c=new Action(_0x2d6d76[_0x5b2f62],_0xae751d);_0x163d7c[_0x0510('0x8d')]=moment()['format'](_0x0510('0x8e'));_0xae751d[_0x0510('0x41')]+=0x1;ut[_0x0510('0x8f')](_0x163d7c,0x17,_0x0510('0x90'));if(_0xae751d[_0x0510('0x91')]){rpcDb[_0x0510('0x92')](ut['createBody'](_0x2d6d76[_0x5b2f62]));rpcDb[_0x0510('0x93')](_0x163d7c,_0x0510('0x94'));}else{ut[_0x0510('0x8f')](_0x163d7c,0x16,_0x0510('0x95'));rpcDb[_0x0510('0x93')](_0x163d7c,_0x0510('0x96'));rpcDb[_0x0510('0x97')](_0x163d7c,_0x0510('0x96'));}}}}})[_0x0510('0x7d')](ut[_0x0510('0x8b')](_0x0510('0x98')));};Preview[_0x0510('0xf')][_0x0510('0x6f')]=function(_0x38aabc){_0x38aabc[_0x0510('0x61')]=!![];if(ut[_0x0510('0x99')](_0x38aabc[_0x0510('0x2b')])){_0x38aabc[_0x0510('0x4f')]=_0x0510('0x9a');}else if(!ut['isActive'](_0x38aabc[_0x0510('0x33')])){_0x38aabc['message']='NOT_ACTIVE';}else if(!this[_0x0510('0x9b')](_0x38aabc['Trunk'])){if(!this[_0x0510('0x9b')](_0x38aabc[_0x0510('0x9c')])){_0x38aabc[_0x0510('0x4f')]=_0x0510('0x9d');}else{_0x38aabc[_0x0510('0x4f')]='ACTIVE';}}else{_0x38aabc[_0x0510('0x4f')]=_0x0510('0x9e');}emitCampaignPreview(_0x38aabc);};Preview[_0x0510('0xf')][_0x0510('0x9f')]=function(_0x533511,_0x2be8a5,_0x172f49){var _0x395b4c=this;var _0x28ed2a=this['actions'][_0x2be8a5];var _0x3f3cb6=this['campaignsPreview'][_0x28ed2a['queue']];var _0x51cc08;if(_0x3f3cb6){switch(_0x172f49){case'1':_0x3f3cb6['outboundNoSuchCallsDay']+=0x1;_0x28ed2a[_0x0510('0xa0')]+=0x1;_0x28ed2a[_0x0510('0xa1')]=ut[_0x0510('0xa2')](_0x28ed2a);ut['logCustomer'](_0x28ed2a,0x0,_0x0510('0xa3'));ami[_0x0510('0x27')](_0x0510('0xa4'),ut[_0x0510('0xa5')](_0x28ed2a,_0x0510('0xa6')));rpcDb[_0x0510('0x93')](_0x28ed2a,'[callProgressDetectingCustomer][logNoSuch]');if(ut[_0x0510('0xa2')](_0x28ed2a)>=_0x3f3cb6[_0x0510('0xa7')]){_0x51cc08=ut[_0x0510('0xa8')](_0x28ed2a,0xf,_0x0510('0xa9'));rpcDb[_0x0510('0x97')](_0x51cc08,_0x0510('0xaa'));}else{if(_0x28ed2a['countnosuchnumberretry']>=_0x3f3cb6['dialNoSuchNumberMaxRetry']){rpcDb['createCustomerFinal'](_0x28ed2a,_0x0510('0xaa'));}else{rpcDb[_0x0510('0xab')](ut[_0x0510('0xac')](_0x28ed2a,_0x0510('0xa0'),_0x3f3cb6[_0x0510('0xad')]),_0x28ed2a[_0x0510('0xae')],_0x28ed2a[_0x0510('0xaf')]);}}delete this['actions'][_0x533511[_0x0510('0xb0')]];break;case _0x0510('0xb1'):var _0x293ca7=moment()[_0x0510('0x5b')](_0x0510('0x8e'));_0x28ed2a[_0x0510('0xb2')]=_0x293ca7;_0x28ed2a['answertime']=_0x293ca7;_0x28ed2a['dialAnswer']=!![];_0x3f3cb6[_0x0510('0x62')]+=0x1;logger[_0x0510('0x5e')](_0x0510('0xb3'),_0x28ed2a[_0x0510('0xb4')],_0x0510('0xb5'),_0x3f3cb6['name'],_0x0510('0x77'),_0x3f3cb6[_0x0510('0x62')]);ami[_0x0510('0x27')]('custom:agentconnect',ut[_0x0510('0xa5')](_0x28ed2a,'connect',this['campaignsPreview'][_0x28ed2a[_0x0510('0x76')]]));if(_0x3f3cb6['acw']){ami[_0x0510('0x27')](_0x0510('0xb6'),ut[_0x0510('0xb7')](_0x28ed2a));}break;case'16':ami[_0x0510('0x27')](_0x0510('0xb8'),ut['buildObj'](_0x28ed2a,_0x0510('0xb9'),this[_0x0510('0x14')][_0x28ed2a['queue']]));emitVoiceQueueChannelRemove(ut['buildObj'](_0x28ed2a,_0x0510('0xb9')));_0x3f3cb6[_0x0510('0xba')]+=0x1;_0x3f3cb6[_0x0510('0x2f')]+=0x1;_0x3f3cb6[_0x0510('0xbb')]+=0x1;ut[_0x0510('0x7f')](_0x3f3cb6,'[16]');_0x28ed2a[_0x0510('0xa1')]=ut[_0x0510('0xa2')](_0x28ed2a);ut[_0x0510('0x8f')](_0x28ed2a,0x4,_0x0510('0xbc'));rpcDb[_0x0510('0x93')](_0x28ed2a,_0x0510('0xbd'));rpcDb[_0x0510('0x97')](_0x28ed2a,_0x0510('0xbe'));rpcDb['crateCustomerReportQueue'](_0x28ed2a);_0x3f3cb6[_0x0510('0x2c')]+=_0x28ed2a[_0x0510('0xbf')];_0x3f3cb6[_0x0510('0xc0')]+=_0x28ed2a[_0x0510('0xbf')];logger[_0x0510('0x5e')](_0x0510('0xc1'),_0x28ed2a[_0x0510('0xb4')],'\x20Queue',_0x3f3cb6[_0x0510('0x57')],_0x0510('0x77'),_0x3f3cb6[_0x0510('0x62')]);delete this[_0x0510('0x17')][_0x533511[_0x0510('0xb0')]];break;case _0x0510('0xc2'):_0x3f3cb6['outboundBusyCallsDay']+=0x1;_0x28ed2a[_0x0510('0xc3')]+=0x1;_0x28ed2a[_0x0510('0xa1')]=ut[_0x0510('0xa2')](_0x28ed2a);ut[_0x0510('0x8f')](_0x28ed2a,0x5,_0x0510('0xc4'));ami[_0x0510('0x27')]('custom:agentbusy',ut[_0x0510('0xa5')](_0x28ed2a,'busy'));rpcDb[_0x0510('0x93')](_0x28ed2a,'[callProgressDetectingCustomer][logBusy]');if(ut['totalGlobal'](_0x28ed2a)>=_0x3f3cb6[_0x0510('0xa7')]){_0x51cc08=ut[_0x0510('0xa8')](_0x28ed2a,0xf,_0x0510('0xa9'));rpcDb[_0x0510('0x97')](_0x51cc08,_0x0510('0xc5'));}else{if(_0x28ed2a[_0x0510('0xc3')]>=_0x3f3cb6[_0x0510('0xc6')]){rpcDb[_0x0510('0x97')](_0x28ed2a,_0x0510('0xc7'));}else{rpcDb['rescheduleContact'](ut[_0x0510('0xac')](_0x28ed2a,_0x0510('0xc3'),_0x3f3cb6[_0x0510('0xc8')]),_0x28ed2a[_0x0510('0xae')],_0x28ed2a[_0x0510('0xaf')]);}}break;case'NOANSWER':_0x3f3cb6['outboundNoAnswerCallsDay']+=0x1;_0x28ed2a[_0x0510('0xc9')]+=0x1;_0x28ed2a[_0x0510('0xa1')]=ut[_0x0510('0xa2')](_0x28ed2a);ut['logCustomer'](_0x28ed2a,0x3,_0x0510('0xca'));ami['emit'](_0x0510('0xcb'),ut[_0x0510('0xa5')](_0x28ed2a,_0x0510('0xcc')));rpcDb[_0x0510('0x93')](_0x28ed2a,_0x0510('0xcd'));if(ut[_0x0510('0xa2')](_0x28ed2a)>=_0x3f3cb6[_0x0510('0xa7')]){_0x51cc08=ut['cloneAction'](_0x28ed2a,0xf,_0x0510('0xa9'));rpcDb[_0x0510('0x97')](_0x51cc08,_0x0510('0xce'));}else{if(_0x28ed2a[_0x0510('0xc9')]>=_0x3f3cb6[_0x0510('0xcf')]){rpcDb['createCustomerFinal'](_0x28ed2a,_0x0510('0xcd'));}else{rpcDb[_0x0510('0xab')](ut[_0x0510('0xac')](_0x28ed2a,_0x0510('0xc9'),_0x3f3cb6[_0x0510('0xd0')]),_0x28ed2a[_0x0510('0xae')],_0x28ed2a[_0x0510('0xaf')]);}}break;case _0x0510('0xd1'):_0x3f3cb6[_0x0510('0x3a')]+=0x1;_0x28ed2a['countcongestionretry']+=0x1;_0x28ed2a[_0x0510('0xa1')]=ut[_0x0510('0xa2')](_0x28ed2a);ut[_0x0510('0x8f')](_0x28ed2a,0x8,_0x0510('0xd2'));ami[_0x0510('0x27')](_0x0510('0xd3'),ut[_0x0510('0xa5')](_0x28ed2a,_0x0510('0xd4')));rpcDb['createCustomerHistory'](_0x28ed2a,'[callProgressDetectingCustomer][logCongestion]');if(ut[_0x0510('0xa2')](_0x28ed2a)>=_0x3f3cb6[_0x0510('0xa7')]){_0x51cc08=ut[_0x0510('0xa8')](_0x28ed2a,0xf,'Global');rpcDb[_0x0510('0x97')](_0x51cc08,'[callProgressDetectingCustomer][logCongestionGlobal]');}else{if(_0x28ed2a[_0x0510('0xd5')]>=_0x3f3cb6['dialCongestionMaxRetry']){rpcDb[_0x0510('0x97')](_0x28ed2a,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb['rescheduleContact'](ut[_0x0510('0xac')](_0x28ed2a,_0x0510('0xd5'),_0x3f3cb6['dialBusyRetryFrequency']),_0x28ed2a[_0x0510('0xae')],_0x28ed2a['activeContact']);}}break;case _0x0510('0xd6'):_0x3f3cb6[_0x0510('0x42')]+=0x1;_0x28ed2a[_0x0510('0xd7')]+=0x1;_0x28ed2a['countglobal']=ut[_0x0510('0xa2')](_0x28ed2a);ut[_0x0510('0x8f')](_0x28ed2a,0x14,'AgentReject');ami[_0x0510('0x27')](_0x0510('0xd8'),ut[_0x0510('0xa5')](_0x28ed2a,_0x0510('0xd9')));rpcDb['createCustomerHistory'](_0x28ed2a,_0x0510('0xda'));if(ut[_0x0510('0xa2')](_0x28ed2a)>=_0x3f3cb6[_0x0510('0xa7')]){_0x51cc08=ut['cloneAction'](_0x28ed2a,0x14,_0x0510('0xdb'));rpcDb['createCustomerFinal'](_0x51cc08,_0x0510('0xdc'));}else{if(_0x28ed2a[_0x0510('0xd7')]>=_0x3f3cb6[_0x0510('0xdd')]){rpcDb[_0x0510('0x97')](_0x28ed2a,_0x0510('0xdc'));}else{rpcDb['rescheduleContact'](ut[_0x0510('0xac')](_0x28ed2a,'countagentrejectretry',_0x3f3cb6[_0x0510('0xde')]),_0x28ed2a[_0x0510('0xae')],_0x28ed2a[_0x0510('0xaf')]);}}break;case _0x0510('0xdf'):_0x3f3cb6[_0x0510('0x44')]+=0x1;_0x28ed2a[_0x0510('0xe0')]+=0x1;_0x28ed2a[_0x0510('0xa1')]=ut[_0x0510('0xa2')](_0x28ed2a);ut[_0x0510('0x8f')](_0x28ed2a,0xb,'Abandoned');rpcDb[_0x0510('0x93')](_0x28ed2a,'[callProgressDetectingCustomer][logAbandoned]');if(ut[_0x0510('0xa2')](_0x28ed2a)>=_0x3f3cb6[_0x0510('0xa7')]){_0x51cc08=ut[_0x0510('0xa8')](_0x28ed2a,0xf,'Global');rpcDb[_0x0510('0x97')](_0x51cc08,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x28ed2a['countabandonedetry']>=_0x3f3cb6['dialAbandonedMaxRety']){rpcDb[_0x0510('0x97')](_0x28ed2a,_0x0510('0xe1'));}else{rpcDb['rescheduleContact'](ut[_0x0510('0xac')](_0x28ed2a,_0x0510('0xe0'),_0x3f3cb6[_0x0510('0xe2')]),_0x28ed2a[_0x0510('0xae')],_0x28ed2a[_0x0510('0xaf')]);}}break;case'18':_0x3f3cb6[_0x0510('0x43')]+=0x1;_0x28ed2a['countmachineretry']+=0x1;_0x28ed2a[_0x0510('0xa1')]=ut[_0x0510('0xa2')](_0x28ed2a);ut[_0x0510('0x8f')](_0x28ed2a,0x12,_0x533511[_0x0510('0xe3')]||_0x533511['dialstatus']);ami[_0x0510('0x27')]('custom:amd',ut['buildObj'](_0x28ed2a,_0x0510('0xe4')));rpcDb[_0x0510('0x93')](_0x28ed2a,_0x0510('0xe5'));if(ut[_0x0510('0xa2')](_0x28ed2a)>=_0x3f3cb6[_0x0510('0xa7')]){_0x51cc08=ut[_0x0510('0xa8')](_0x28ed2a,0xf,_0x0510('0xa9'));rpcDb[_0x0510('0x97')](_0x51cc08,_0x0510('0xe5'));}else{rpcDb[_0x0510('0x97')](_0x28ed2a,'[callProgressDetectingCustomer][hangupInAMD]');}delete this['actions'][_0x533511[_0x0510('0xb0')]];break;case'19':_0x3f3cb6[_0x0510('0x43')]+=0x1;_0x28ed2a[_0x0510('0xa1')]=ut['totalGlobal'](_0x28ed2a);ut[_0x0510('0x8f')](_0x28ed2a,0x13,_0x533511[_0x0510('0xe3')]||_0x533511[_0x0510('0xe6')]);ami['emit'](_0x0510('0xe7'),ut['buildObj'](_0x28ed2a,'amd'));rpcDb[_0x0510('0x93')](_0x28ed2a,'[callProgressDetectingCustomer][machine]');if(ut[_0x0510('0xa2')](_0x28ed2a)>=_0x3f3cb6[_0x0510('0xa7')]){_0x51cc08=ut[_0x0510('0xa8')](_0x28ed2a,0xf,_0x0510('0xa9'));rpcDb[_0x0510('0x97')](_0x51cc08,_0x0510('0xe8'));}else{rpcDb[_0x0510('0x97')](_0x28ed2a,_0x0510('0xe8'));}delete this['actions'][_0x533511[_0x0510('0xb0')]];break;default:if(_0x28ed2a[_0x0510('0x79')]){ut['decrementTalkink'](_0x3f3cb6,_0x0510('0xe9'));ut['loggerError'](_0x0510('0xea')+_0x3f3cb6['name'],_0x533511);}_0x3f3cb6[_0x0510('0x43')]+=0x1;_0x28ed2a[_0x0510('0xa1')]=ut['totalGlobal'](_0x28ed2a);ut[_0x0510('0x8f')](_0x28ed2a,0xc,_0x533511[_0x0510('0xe3')]||_0x533511[_0x0510('0xe6')]);rpcDb[_0x0510('0x93')](_0x28ed2a,_0x0510('0xeb'));if(ut[_0x0510('0xa2')](_0x28ed2a)>=_0x3f3cb6['dialGlobalMaxRetry']){_0x51cc08=ut[_0x0510('0xa8')](_0x28ed2a,0xf,_0x0510('0xa9'));rpcDb[_0x0510('0x97')](_0x51cc08,_0x0510('0xec'));}else{rpcDb[_0x0510('0x97')](_0x28ed2a,_0x0510('0xec'));}delete this[_0x0510('0x17')][_0x533511[_0x0510('0xb0')]];}if(!(_0x28ed2a[_0x0510('0x79')]&&_0x172f49==='16')){ut['updateOriginated'](_0x3f3cb6,_0x0510('0xed'));logger[_0x0510('0x5e')]('[originated][decrement][callProgressDetectingCustomer]',_0x28ed2a[_0x0510('0xb4')],_0x0510('0xb5'),_0x3f3cb6['name'],_0x0510('0x75'),_0x3f3cb6['originated']);}if(_0x172f49!==_0x0510('0xb1')){delete this[_0x0510('0x17')][_0x533511['linkedid']];delete this[_0x0510('0x17')][_0x533511[_0x0510('0xee')]];}}};Preview[_0x0510('0xf')][_0x0510('0xef')]=function(_0x38f585,_0x5b4d1f,_0xfeb597){if(_['isUndefined'](_0x5b4d1f)&&'object'!==typeof _0x5b4d1f){return;}if(_[_0x0510('0xf0')](_0xfeb597)&&_0x0510('0xf1')!==typeof _0xfeb597){return;}switch(_0xfeb597[_0x0510('0xf2')]){case'0':ut['logAgent'](_0x38f585,0x0,_0x0510('0xa3'));rpcDb[_0x0510('0xf3')](_0x38f585,_0x0510('0xf4'));break;case'3':ut[_0x0510('0xf5')](_0x38f585,0x3,_0x0510('0xca'));rpcDb[_0x0510('0xf3')](_0x38f585,'[callProgressDetectingAgent][logNoAnswer]');break;case'5':ut[_0x0510('0xf5')](_0x38f585,0x5,'Busy');rpcDb[_0x0510('0xf3')](_0x38f585,_0x0510('0xf6'));break;case'8':ut[_0x0510('0xf5')](_0x38f585,0x8,'Congestion');rpcDb[_0x0510('0xf3')](_0x38f585,_0x0510('0xf7'));break;case'22':ut[_0x0510('0xf5')](_0x38f585,0x16,_0x0510('0xf8'));rpcDb['createAgentHistory'](_0x38f585,_0x0510('0xf9'));break;default:ut['logAgent'](_0x38f585,0xc,_0xfeb597[_0x0510('0xf2')]);rpcDb[_0x0510('0xf3')](_0x38f585,_0x0510('0xf7'));}ut[_0x0510('0xfa')](_0x5b4d1f,_0x0510('0xfb'));logger['info'](_0x0510('0xfc'),_0x38f585[_0x0510('0xb4')],_0x0510('0xb5'),_0x5b4d1f[_0x0510('0x57')],_0x0510('0x75'),_0x5b4d1f[_0x0510('0x50')]);delete this[_0x0510('0x17')][_0x38f585[_0x0510('0xb4')]];};Preview[_0x0510('0xf')][_0x0510('0xfd')]=function(_0x4b72fa,_0x3a58ef,_0x6b6e59,_0x20a8b5,_0x13f196){var _0x56bf08=this;return new BPromise(function(_0x5a5df7,_0x74309c){if(_[_0x0510('0x72')](_0x3a58ef)||_['isNil'](_0x3a58ef[_0x0510('0xfe')])||_[_0x0510('0x72')](_0x3a58ef[_0x0510('0xfe')][_0x0510('0xff')])||_[_0x0510('0x72')](_0x3a58ef[_0x0510('0x100')])){_0x74309c(ut[_0x0510('0x4f')](_0x0510('0x101'),_0x20a8b5,_0x13f196));return;}var _0x40d72e=uuid['v4']();var _0x598a65=_0x56bf08[_0x0510('0x14')][_0x3a58ef[_0x0510('0x74')]['name']];var _0x121e70=_0x6b6e59?_0x56bf08[_0x0510('0x18')][_0x6b6e59]['id']:undefined;_0x56bf08[_0x0510('0x17')][_0x40d72e]=new Action(_0x3a58ef,_0x598a65,_0x40d72e,_0x6b6e59,_0x121e70);var _0x381088=_0x56bf08[_0x0510('0x17')][_0x40d72e];_0x381088['unlockAgent']=_0x20a8b5;_0x381088['activeContact']=_0x13f196;_0x381088[_0x0510('0x102')]=_0x6b6e59;if(_[_0x0510('0x103')](_0x4b72fa)){_0x56bf08[_0x0510('0x104')](_0x381088,_0x598a65,_0x3a58ef,_0x6b6e59)['then'](function(_0x2e6ee1){logger[_0x0510('0x5e')]('[Preview][execCall][success]',_0x0510('0x105')+_0x381088[_0x0510('0x76')]+_0x0510('0x106')+_0x381088['idContact'],JSON['stringify'](_0x2e6ee1));ami[_0x0510('0x27')](_0x0510('0x107'),ut[_0x0510('0xa5')](_0x381088,_0x0510('0x108'),_0x56bf08[_0x0510('0x14')][_0x381088['queue']]));_0x5a5df7(ut[_0x0510('0x4f')]('Calling'));})[_0x0510('0x7d')](function(_0x36d1f6){ut[_0x0510('0x65')](_0x0510('0x109'),_0x36d1f6);_0x74309c(ut[_0x0510('0x4f')](_0x0510('0x10a'),_0x20a8b5,_0x13f196));});}else{_0x598a65[_0x0510('0x38')]+=0x1;ut['logBlacklist'](_0x381088);rpcDb[_0x0510('0x10b')](_0x381088,_0x0510('0x10c'));delete _0x56bf08[_0x0510('0x17')][_0x40d72e];_0x74309c(ut[_0x0510('0x4f')](_0x0510('0x10d'),_0x20a8b5,_0x13f196));}});};Preview['prototype'][_0x0510('0x9b')]=function(_0x3df107){return!_[_0x0510('0x72')](_0x3df107)&&!_['isNil'](_0x3df107[_0x0510('0x57')])&&!_[_0x0510('0x72')](_0x3df107[_0x0510('0x58')])&&_0x3df107[_0x0510('0x58')]&&!_[_0x0510('0x72')](this[_0x0510('0x16')][util[_0x0510('0x5b')]('SIP/%s',_0x3df107[_0x0510('0x57')])])&&!_[_0x0510('0x72')](this[_0x0510('0x16')][util['format'](_0x0510('0x10e'),_0x3df107['name'])][_0x0510('0x10f')])&&(this[_0x0510('0x16')][util['format'](_0x0510('0x10e'),_0x3df107['name'])]['status']==='reachable'||this[_0x0510('0x16')][util[_0x0510('0x5b')](_0x0510('0x10e'),_0x3df107[_0x0510('0x57')])][_0x0510('0x10f')]===_0x0510('0x110'));};Preview[_0x0510('0xf')][_0x0510('0x8a')]=function(_0x356ee2,_0x3d3df8){var _0xdace7d=this;return new BPromise(function(_0x46c468,_0x5f2527){_0xdace7d[_0x0510('0x111')](_0x356ee2,_0x3d3df8)['then'](function(_0x453e6c){_0x46c468(_[_0x0510('0x112')](_0x453e6c,[_0x0510('0x4f')]));})[_0x0510('0x7d')](function(_0x3ce776){if(_0x3ce776[_0x0510('0x113')]){rpcDb['unlockContact'](_0x356ee2);}if(_0x3ce776[_0x0510('0x58')]){rpcDb[_0x0510('0x114')](_0x356ee2);}_0x5f2527(_[_0x0510('0x112')](_0x3ce776,[_0x0510('0x4f')]));});});};Preview[_0x0510('0xf')][_0x0510('0x111')]=function(_0x52a2be,_0x568359){var _0x34fd6c=this;return new BPromise(function(_0x51c433,_0x50e56e){var _0x5f4775,_0x1df686;rpcDb['getContactPreview'](_0x52a2be)[_0x0510('0x115')](function(_0x5e63fc){if(!_['isNil'](_0x5e63fc[0x0])){_0x1df686=_0x5e63fc[0x0][_0x0510('0x116')]?![]:!![];_0x5f4775=_0x5e63fc[0x0]['recallme']?!![]:![];_0x5f4775=_0x568359?!![]:_0x5f4775;}var _0x5cbe29=_0x34fd6c[_0x0510('0x117')](_0x5e63fc);if(_0x5cbe29['isValid']){rpcDb['checkIsBlackList'](_[_0x0510('0x112')](_0x5e63fc[0x0],['VoiceQueueId',_0x0510('0x118')]))[_0x0510('0x115')](function(_0x9d0129){_0x34fd6c['checkInBlack'](_0x9d0129,_0x5e63fc[0x0],_0x568359,_0x1df686,_0x5f4775)[_0x0510('0x115')](function(_0x48e82a){_0x51c433(_0x48e82a);})[_0x0510('0x7d')](function(_0x4d90ab){_0x50e56e(_0x4d90ab);});})['catch'](function(_0x5b035f){ut[_0x0510('0x65')](_0x0510('0x119'),_0x5b035f);_0x50e56e(ut[_0x0510('0x4f')](_0x0510('0x11a'),_0x1df686,_0x5f4775));});}else{_0x50e56e(ut[_0x0510('0x4f')](_0x5cbe29[_0x0510('0x4f')],_0x1df686,_0x5f4775));}})[_0x0510('0x7d')](function(_0x6e60fd){ut[_0x0510('0x65')](_0x0510('0x11b'),_0x6e60fd);_0x50e56e(ut[_0x0510('0x4f')](_0x0510('0x11a'),![],!![]));});});};Preview['prototype'][_0x0510('0x117')]=function(_0x131f28){if(_['isNil'](_0x131f28)||_[_0x0510('0x103')](_0x131f28)||!_[_0x0510('0x72')](_0x131f28[0x0][_0x0510('0x11c')])&&_[_0x0510('0x72')](_0x131f28[0x0]['Agent'][_0x0510('0x57')])){ut[_0x0510('0x65')](_0x0510('0x11d'),_0x131f28);return{'isValid':![],'message':'Empty\x20Contact'};}var _0x5ce60d=this['campaignsPreview'][_0x131f28[0x0][_0x0510('0x74')][_0x0510('0x57')]];_0x5ce60d['message']=_0x0510('0x9e');if(_[_0x0510('0x72')](_0x5ce60d)){ut[_0x0510('0x65')]('[Preview][validateContact][Empty\x20Campaign]',_0x5ce60d);return{'isValid':![],'message':_0x0510('0x11e')};}if(!this[_0x0510('0x9b')](_0x5ce60d[_0x0510('0x56')])){ut[_0x0510('0x65')](_0x0510('0x11f'),_0x0510('0x120')+_0x5ce60d[_0x0510('0x57')]+_0x0510('0x121'));if(!this[_0x0510('0x9b')](_0x5ce60d['TrunkBackup'])){ut[_0x0510('0x65')](_0x0510('0x11f'),_0x5ce60d[_0x0510('0x57')]+_0x0510('0x122'));return{'isValid':![],'message':_0x0510('0x123')};}}if(!ut[_0x0510('0x124')](_0x5ce60d['dialActive'])){ut[_0x0510('0x65')](_0x0510('0x125'),_0x5ce60d['name']+_0x0510('0x126'));return{'isValid':![],'message':_0x0510('0x120')+_0x5ce60d[_0x0510('0x57')]+_0x0510('0x126')};}return{'isValid':!![],'message':_0x0510('0x127')};};Preview[_0x0510('0xf')][_0x0510('0x104')]=function(_0x201b96,_0x23e6bc,_0x478129,_0xa808dd){var _0x2f87c8=this;return new BPromise(function(_0xf031ef,_0x18dc4d){var _0x2c61c4=_0x201b96['uniqueid'];var _0x30c917=_0x2f87c8[_0x0510('0x9b')](_0x23e6bc['Trunk'])?util[_0x0510('0x5b')]('SIP/%s/%s%s',_0x23e6bc[_0x0510('0x56')][_0x0510('0x57')],_['isNil'](_0x23e6bc[_0x0510('0x37')])?'':_0x23e6bc[_0x0510('0x37')][_0x0510('0x128')]()||'',_0x23e6bc['dialCutDigit']>0x0?_0x478129['Contact'][_0x0510('0xff')][_0x0510('0x129')](_0x23e6bc['dialCutDigit']):_0x478129[_0x0510('0xfe')][_0x0510('0xff')]):util['format'](_0x0510('0x12a'),_['isNil'](_0x23e6bc[_0x0510('0x9c')])?_0x23e6bc[_0x0510('0x56')][_0x0510('0x57')]:_0x23e6bc['TrunkBackup'][_0x0510('0x57')],_['isNil'](_0x23e6bc['dialPrefix'])?'':_0x23e6bc[_0x0510('0x37')]['trim']()||'',_0x23e6bc['dialCutDigit']>0x0?_0x478129['Contact']['phone'][_0x0510('0x129')](_0x23e6bc[_0x0510('0x12b')]):_0x478129[_0x0510('0xfe')][_0x0510('0xff')]);var _0x14df8a=_0x2f87c8[_0x0510('0x9b')](_0x23e6bc['Trunk'])?ut['getCallerId'](_0x23e6bc['Trunk'][_0x0510('0x59')],_0x23e6bc[_0x0510('0x35')],_0x23e6bc[_0x0510('0x12c')]>0x0?ut[_0x0510('0x12d')](_0x23e6bc['dialOriginateCallerIdNumber'],_0x23e6bc[_0x0510('0x12c')]):_0x23e6bc['dialOriginateCallerIdNumber']):ut[_0x0510('0x12e')](_[_0x0510('0x72')](_0x23e6bc[_0x0510('0x9c')])?_0x23e6bc[_0x0510('0x56')][_0x0510('0x59')]:_0x23e6bc[_0x0510('0x9c')][_0x0510('0x59')],_0x23e6bc[_0x0510('0x35')],_0x23e6bc[_0x0510('0x12c')]>0x0?ut[_0x0510('0x12d')](_0x23e6bc['dialOriginateCallerIdNumber'],_0x23e6bc[_0x0510('0x12c')]):_0x23e6bc[_0x0510('0x36')]);if(_0x14df8a){_0x201b96['originatecalleridname']=ut[_0x0510('0x12f')](_0x14df8a);_0x201b96[_0x0510('0x130')]=ut[_0x0510('0x131')](_0x14df8a);}var _0x18b043=ut[_0x0510('0x132')](_0x23e6bc,_0x478129,_0x30c917,_0x14df8a,_0x2c61c4,_0x201b96);_[_0x0510('0x133')](_0x201b96,ut['toLowerVariables'](_0x18b043));_0x201b96['starttime']=moment()['format'](_0x0510('0x8e'));ami[_0x0510('0x134')](ut[_0x0510('0x135')](_0x201b96,_0x23e6bc,_0x18b043,_0x201b96[_0x0510('0xaf')],_0xa808dd))[_0x0510('0x115')](function(_0x3dca7a){var _0x483188=_0x201b96[_0x0510('0x136')];if(!_[_0x0510('0x72')](_0x483188)){if(!_[_0x0510('0x72')](_0x2f87c8['agents'][_0x483188])){_0x2f87c8[_0x0510('0x18')][_0x483188][_0x0510('0x137')]=_0x201b96['calleridnum'];emit(util[_0x0510('0x5b')](_0x0510('0x138'),_0x2f87c8[_0x0510('0x18')][_0x483188][_0x0510('0x57')]),_0x0510('0x139'),{'destaccountcode':_0x2f87c8[_0x0510('0x18')][_0x483188][_0x0510('0x13a')],'destconnectedlinenum':_0x201b96[_0x0510('0x13b')]});}}_0x23e6bc[_0x0510('0x50')]+=0x1;logger[_0x0510('0x5e')](_0x0510('0x13c'),_0x2c61c4,_0x0510('0xb5'),_0x23e6bc[_0x0510('0x57')],'originated:\x20',_0x23e6bc[_0x0510('0x50')]);_0xf031ef(_0x3dca7a);})[_0x0510('0x7d')](function(_0x58648c){ut['logAgent'](_0x201b96,0xe,_0x0510('0x13d'));rpcDb['createAgentHistory'](_0x201b96,_0x0510('0x13e'));_0x18dc4d(_0x58648c);});});};Preview[_0x0510('0xf')][_0x0510('0x13f')]=function(_0x43c961){if(this[_0x0510('0x17')][_0x43c961['linkedid']]){this[_0x0510('0x17')][_0x43c961[_0x0510('0xb0')]]['channel']=_0x43c961[_0x0510('0x140')];}};Preview[_0x0510('0xf')][_0x0510('0x1b')]=function(_0x104bcf){var _0x36458a=this;var _0x3d37e5=this[_0x0510('0x17')][_0x104bcf[_0x0510('0x141')]];if(_0x3d37e5){if(_0x3d37e5[_0x0510('0x102')]&&this['agents'][_0x3d37e5[_0x0510('0x102')]]){ut[_0x0510('0x142')](_0x3d37e5,this['agents'][_0x3d37e5['lookAgent']]['name'],this[_0x0510('0x18')][_0x3d37e5[_0x0510('0x102')]]['id']);}var _0x6dbe1c=_['clone'](_0x3d37e5);_0x6dbe1c[_0x0510('0xb2')]=moment()[_0x0510('0x5b')]('YYYY-MM-DD\x20HH:mm:ss');var _0xcd6420=_0x36458a[_0x0510('0x14')][_0x3d37e5['queue']];if(ut[_0x0510('0x143')](_0x104bcf['response'])){if(_0x3d37e5[_0x0510('0xae')]){rpcDb['unlockContact'](_0x3d37e5[_0x0510('0x144')]);}if(_0x3d37e5[_0x0510('0xaf')]){rpcDb[_0x0510('0x114')](_0x3d37e5['idContact']);}ami[_0x0510('0x27')](_0x0510('0x145'),ut[_0x0510('0xa5')](_0x3d37e5,_0x0510('0x146'),this[_0x0510('0x14')][_0x3d37e5[_0x0510('0x76')]]));this[_0x0510('0xef')](_0x6dbe1c,_0xcd6420,_0x104bcf);}else{_0x3d37e5[_0x0510('0x8d')]=moment()['format'](_0x0510('0x8e'));ut['logAgent'](_0x6dbe1c,0x4,_0x0510('0xbc'));rpcDb['createAgentHistory'](_0x6dbe1c,'[callProgressDetectingAgent][logAnswer]');}}};Preview['prototype'][_0x0510('0x1e')]=function(_0x212c73){var _0x1b5352=this;var _0x1a2944=this[_0x0510('0x17')][_0x212c73[_0x0510('0xb0')]];var _0x116356;if(_0x1a2944){_0x116356=this[_0x0510('0x14')][_0x1a2944[_0x0510('0x76')]];logger['info']('[syncHangup][talking]',_0x212c73['linkedid'],'\x20Queue',_0x116356[_0x0510('0x57')],_0x0510('0x77'),_0x116356[_0x0510('0x62')]);}if(this[_0x0510('0x17')][_0x212c73[_0x0510('0xb0')]]&&_0x212c73[_0x0510('0xb0')]!==_0x212c73['uniqueid']){if(_0x212c73[_0x0510('0x147')]==='16'&&this['actions'][_0x212c73[_0x0510('0xb0')]][_0x0510('0x79')]){this['callProgressDetectingCustomer'](_0x212c73,_0x212c73[_0x0510('0xb0')],_0x212c73[_0x0510('0x147')]);}else if(this['actions'][_0x212c73['linkedid']][_0x0510('0x79')]){logger['info']('[syncHangup][talking][cause]',_0x212c73[_0x0510('0xb0')],_0x212c73['cause'],_0x0510('0xb5'),_0x116356[_0x0510('0x57')],'pTalking:\x20',_0x116356['pTalking']);this['callProgressDetectingCustomer'](_0x212c73,_0x212c73[_0x0510('0xb0')],_0x212c73[_0x0510('0x147')]);}}else if(_0x1a2944&&_['isNil'](_0x1a2944[_0x0510('0x148')])&&_0x116356['dialQueueProject']&&_0x212c73['linkedid']===_0x212c73[_0x0510('0xb4')]&&_['isNil'](_0x212c73[_0x0510('0xf2')])&&_0x212c73[_0x0510('0x147')]==='16'&&_0x212c73['channelstate']==='6'&&_[_0x0510('0xf0')](_0x1a2944[_0x0510('0x149')])){if(_0x1a2944[_0x0510('0xae')]){rpcDb[_0x0510('0x14a')](_0x1a2944[_0x0510('0x144')]);}if(_0x1a2944[_0x0510('0xaf')]){rpcDb['disableContact'](_0x1a2944[_0x0510('0x144')]);}_0x212c73[_0x0510('0xf2')]='22';this[_0x0510('0xef')](_0x1a2944,_0x116356,_0x212c73);}else if(_0x1a2944&&_0x1a2944[_0x0510('0x149')]){if(_0x212c73[_0x0510('0x147')]==='16'&&this['actions'][_0x212c73['linkedid']][_0x0510('0x79')]){logger['info']('[syncHangup][talking][transfer]',_0x212c73[_0x0510('0xb0')],_0x212c73[_0x0510('0x147')],_0x0510('0xb5'),_0x116356[_0x0510('0x57')],_0x0510('0x77'),_0x116356[_0x0510('0x62')]);this['callProgressDetectingCustomer'](_0x212c73,_0x212c73['linkedid'],_0x212c73['cause']);}else if(this[_0x0510('0x17')][_0x212c73[_0x0510('0xb0')]][_0x0510('0x79')]){logger['info'](_0x0510('0x14b'),_0x212c73[_0x0510('0xb0')],_0x212c73[_0x0510('0x147')],'\x20Queue',_0x116356[_0x0510('0x57')],_0x0510('0x77'),_0x116356[_0x0510('0x62')]);this['callProgressDetectingCustomer'](_0x212c73,_0x212c73[_0x0510('0xb0')],_0x212c73[_0x0510('0x147')]);}}};Preview[_0x0510('0xf')][_0x0510('0x21')]=function(_0x397fb9){if(this[_0x0510('0x17')][_0x397fb9[_0x0510('0xee')]]&&_0x397fb9[_0x0510('0xee')]!==_0x397fb9[_0x0510('0x14c')]){this[_0x0510('0x9f')](_0x397fb9,_0x397fb9[_0x0510('0xee')],_0x397fb9['dialstatus']);}};Preview[_0x0510('0xf')][_0x0510('0x1f')]=function(_0x393601){if(this['actions'][_0x393601[_0x0510('0xb0')]]&&_0x393601['linkedid']!==_0x393601[_0x0510('0xb4')]&&!this[_0x0510('0x17')][_0x393601['linkedid']]['dialAnswer']){if(_0x393601[_0x0510('0x147')]==='1'){this[_0x0510('0x9f')](_0x393601,_0x393601[_0x0510('0xb0')],_0x393601[_0x0510('0x147')]);}}};Preview['prototype'][_0x0510('0x14d')]=function(_0x19a072,_0x3cc716,_0x18197d){if(this[_0x0510('0x17')][_0x19a072]){if(_[_0x0510('0x72')](this['actions'][_0x19a072]['variables'])){this['actions'][_0x19a072][_0x0510('0x14e')]={};}this[_0x0510('0x17')][_0x19a072][_0x0510('0x14e')][_0x3cc716]=_0x18197d;}};Preview[_0x0510('0xf')][_0x0510('0x23')]=function(_0x2c57cd){try{if(!_[_0x0510('0x72')](_0x2c57cd)){if(ut[_0x0510('0x14f')](_['keys'](_0x2c57cd['variable'])[0x0])){this[_0x0510('0x14d')](_0x2c57cd[_0x0510('0xb4')],_['keys'](_0x2c57cd['variable'])[0x0],_0x2c57cd['value']);}}}catch(_0x58f528){logger['error'](_0x0510('0x150'),util['inspect'](_0x58f528,{'showHidden':![],'depth':null}));}};Preview[_0x0510('0xf')][_0x0510('0x151')]=function(_0x3e29f2){if(_0x3e29f2){if(this[_0x0510('0x17')][_0x3e29f2[_0x0510('0x152')]]){this['actions'][_0x3e29f2[_0x0510('0x152')]][_0x0510('0x149')]=!![];}}};Preview['prototype']['syncBlindTransfer']=function(_0x4dd056){if(_0x4dd056){if(this['actions'][_0x4dd056[_0x0510('0x153')]]){this[_0x0510('0x17')][_0x4dd056[_0x0510('0x153')]][_0x0510('0x149')]=!![];}}};module[_0x0510('0x154')]=Preview;
\ No newline at end of file
index 33024d7..d05ff4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc01=['countReScheduled','[countReScheduled]\x20','unlockContact','disableContact','[activeContact]\x20','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','assigned','queuecallerexitreason','COMPLETED','create','getContactRecallMe','[GetContactRecallMe]\x20','[rescheduleContactInQueue]\x20','util','../../../config/logger','preview','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/voiceQueueReport','error','resolve','then','[createHistory]\x20','createHistory','catch','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','createAgentHistory','createCustomerHistory','rescheduleContact','UserId','active','[rescheduleContact]\x20'];(function(_0x62aa88,_0x5f338c){var _0x59fc65=function(_0x3a7846){while(--_0x3a7846){_0x62aa88['push'](_0x62aa88['shift']());}};_0x59fc65(++_0x5f338c);}(_0xfc01,0x8e));var _0x1fc0=function(_0x202a67,_0x3105f9){_0x202a67=_0x202a67-0x0;var _0x330046=_0xfc01[_0x202a67];return _0x330046;};'use strict';var util=require(_0x1fc0('0x0'));var BPromise=require('bluebird');var logger=require(_0x1fc0('0x1'))(_0x1fc0('0x2'));var _=require('lodash');var cmHopper=require(_0x1fc0('0x3'));var cmHopperFinal=require(_0x1fc0('0x4'));var cmHopperHistory=require(_0x1fc0('0x5'));var cmHopperBlack=require(_0x1fc0('0x6'));var voiceQueueRt=require(_0x1fc0('0x7'));var agentReportPreview=require('../rpc/agentReportPreview');var voiceQueueReport=require(_0x1fc0('0x8'));function loggerCatch(_0x3a7db6){return function(_0x476510){logger[_0x1fc0('0x9')](_0x3a7db6,util['inspect'](_0x476510,{'showHidden':![],'depth':null}));};}function create(_0x232e0f){return BPromise[_0x1fc0('0xa')]()[_0x1fc0('0xb')](cmHopperHistory['createHistory'](_0x232e0f))['catch'](loggerCatch(_0x1fc0('0xc')));}function createAgent(_0x5193ac){return BPromise[_0x1fc0('0xa')]()[_0x1fc0('0xb')](agentReportPreview[_0x1fc0('0xd')](_0x5193ac))[_0x1fc0('0xe')](loggerCatch(_0x1fc0('0xc')));}function moveContact(_0x3c56f2){return BPromise[_0x1fc0('0xa')]()[_0x1fc0('0xb')](cmHopper[_0x1fc0('0xf')](_0x3c56f2,!![]))[_0x1fc0('0xe')](loggerCatch(_0x1fc0('0x10')));}exports[_0x1fc0('0x11')]=function(_0x5a3a88){return BPromise[_0x1fc0('0xa')]()[_0x1fc0('0xb')](cmHopperBlack['checkIsBlackList'](_0x5a3a88))['catch'](loggerCatch(_0x1fc0('0x12')));};exports[_0x1fc0('0x13')]=function(_0x44f1ab){return BPromise[_0x1fc0('0xa')]()[_0x1fc0('0xb')](cmHopper[_0x1fc0('0x13')](_0x44f1ab))[_0x1fc0('0xe')](loggerCatch('[getContactPreview]\x20'));};exports[_0x1fc0('0xd')]=function(_0x25490e,_0x5db9be){create(_0x25490e)[_0x1fc0('0xe')](loggerCatch(_0x5db9be));moveContact(_0x25490e)['catch'](loggerCatch(_0x5db9be));};exports[_0x1fc0('0x14')]=function(_0x5430f0,_0x52e438){createAgent(_0x5430f0)[_0x1fc0('0xe')](loggerCatch(_0x52e438));};exports[_0x1fc0('0x15')]=function(_0x4948cd,_0x57ade7){create(_0x4948cd)[_0x1fc0('0xe')](loggerCatch(_0x57ade7));};exports['createCustomerFinal']=function(_0x2400ed,_0x2c0cdc){moveContact(_0x2400ed)['catch'](loggerCatch(_0x2c0cdc));};exports[_0x1fc0('0x16')]=function(_0x227ebf,_0x4e221d,_0x376b7f){if(_0x4e221d){_0x227ebf[_0x1fc0('0x17')]=null;}if(_0x376b7f){_0x227ebf[_0x1fc0('0x18')]=![];}return BPromise[_0x1fc0('0xa')]()[_0x1fc0('0xb')](cmHopper['rescheduleContact'](_0x227ebf))[_0x1fc0('0xe')](loggerCatch(_0x1fc0('0x19')));};exports[_0x1fc0('0x1a')]=function(_0x11f6e2){return BPromise['resolve']()[_0x1fc0('0xb')](cmHopper[_0x1fc0('0x1a')](_0x11f6e2))[_0x1fc0('0xe')](loggerCatch(_0x1fc0('0x1b')));};exports[_0x1fc0('0x1c')]=function(_0x2a1a90){return BPromise[_0x1fc0('0xa')]()[_0x1fc0('0xb')](cmHopper['unlockContact']({'UserId':null},_0x2a1a90,0x1))[_0x1fc0('0xe')](loggerCatch('[unlockContact]\x20'));};exports[_0x1fc0('0x1d')]=function(_0x241ba3){return BPromise[_0x1fc0('0xa')]()[_0x1fc0('0xb')](cmHopper[_0x1fc0('0x1c')]({'active':![]},_0x241ba3,0x1))[_0x1fc0('0xe')](loggerCatch(_0x1fc0('0x1e')));};exports['crateCustomerReportQueue']=function(_0x150fcc){var _0x28ae7c={};_0x28ae7c[_0x1fc0('0x1f')]=_0x150fcc['type'];_0x28ae7c[_0x1fc0('0x20')]=_0x150fcc[_0x1fc0('0x20')];_0x28ae7c[_0x1fc0('0x21')]=_0x150fcc['calleridnum'];_0x28ae7c[_0x1fc0('0x22')]=_0x150fcc[_0x1fc0('0x22')];_0x28ae7c[_0x1fc0('0x23')]=_0x150fcc[_0x1fc0('0x23')];_0x28ae7c[_0x1fc0('0x24')]=_0x150fcc[_0x1fc0('0x25')];_0x28ae7c[_0x1fc0('0x26')]=_0x150fcc[_0x1fc0('0x25')];_0x28ae7c[_0x1fc0('0x27')]=0x1;_0x28ae7c[_0x1fc0('0x28')]=_0x150fcc[_0x1fc0('0x29')];_0x28ae7c[_0x1fc0('0x2a')]=_0x150fcc[_0x1fc0('0x2b')];_0x28ae7c[_0x1fc0('0x2c')]=_0x1fc0('0x2d');_0x28ae7c[_0x1fc0('0x2e')]=_0x1fc0('0x2f');_0x28ae7c[_0x1fc0('0x30')]=0x0;_0x28ae7c[_0x1fc0('0x31')]=0x1;_0x28ae7c['lastAssignedTo']=_0x150fcc[_0x1fc0('0x2b')];_0x28ae7c[_0x1fc0('0x32')]=_0x1fc0('0x33');return BPromise[_0x1fc0('0xa')]()[_0x1fc0('0xb')](voiceQueueReport[_0x1fc0('0x34')](_0x28ae7c))[_0x1fc0('0xe')](loggerCatch('[voiceQueueReport]\x20'));};exports[_0x1fc0('0x35')]=function(_0x27c4f4,_0x471137){return BPromise[_0x1fc0('0xa')]()[_0x1fc0('0xb')](cmHopper[_0x1fc0('0x35')](_0x27c4f4,_0x471137))[_0x1fc0('0xe')](loggerCatch(_0x1fc0('0x36')));};exports['rescheduleContactInQueue']=function(_0x47e5d4){return BPromise[_0x1fc0('0xa')]()[_0x1fc0('0xb')](cmHopper[_0x1fc0('0x16')](_0x47e5d4,!![],!![]))[_0x1fc0('0xe')](loggerCatch(_0x1fc0('0x37')));};
\ No newline at end of file
+var _0x8f58=['[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallercomplete','endtime','connectedlinename','membername','exten','xcally-motion-preview','assigned','queuecallerexitreason','COMPLETED','create','[GetContactRecallMe]\x20','rescheduleContactInQueue','bluebird','../../../config/logger','preview','lodash','../rpc/cmHopperHistory','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','then','createHistory','catch','[createHistory]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','disableContact'];(function(_0x4067ac,_0x363603){var _0x53d74d=function(_0x492ad4){while(--_0x492ad4){_0x4067ac['push'](_0x4067ac['shift']());}};_0x53d74d(++_0x363603);}(_0x8f58,0xb1));var _0x88f5=function(_0x2879b8,_0x21b82d){_0x2879b8=_0x2879b8-0x0;var _0x421e30=_0x8f58[_0x2879b8];return _0x421e30;};'use strict';var util=require('util');var BPromise=require(_0x88f5('0x0'));var logger=require(_0x88f5('0x1'))(_0x88f5('0x2'));var _=require(_0x88f5('0x3'));var cmHopper=require('../rpc/cmHopper');var cmHopperFinal=require('../rpc/cmHopperFinal');var cmHopperHistory=require(_0x88f5('0x4'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x88f5('0x5'));var agentReportPreview=require(_0x88f5('0x6'));var voiceQueueReport=require(_0x88f5('0x7'));function loggerCatch(_0x4be79b){return function(_0x1cbc06){logger[_0x88f5('0x8')](_0x4be79b,util[_0x88f5('0x9')](_0x1cbc06,{'showHidden':![],'depth':null}));};}function create(_0x74741d){return BPromise[_0x88f5('0xa')]()[_0x88f5('0xb')](cmHopperHistory[_0x88f5('0xc')](_0x74741d))[_0x88f5('0xd')](loggerCatch(_0x88f5('0xe')));}function createAgent(_0x2b94b3){return BPromise[_0x88f5('0xa')]()[_0x88f5('0xb')](agentReportPreview[_0x88f5('0xc')](_0x2b94b3))['catch'](loggerCatch(_0x88f5('0xe')));}function moveContact(_0x4a9f15){return BPromise['resolve']()['then'](cmHopper[_0x88f5('0xf')](_0x4a9f15,!![]))[_0x88f5('0xd')](loggerCatch(_0x88f5('0x10')));}exports[_0x88f5('0x11')]=function(_0x267672){return BPromise[_0x88f5('0xa')]()[_0x88f5('0xb')](cmHopperBlack[_0x88f5('0x11')](_0x267672))[_0x88f5('0xd')](loggerCatch(_0x88f5('0x12')));};exports[_0x88f5('0x13')]=function(_0x4eeb48){return BPromise[_0x88f5('0xa')]()['then'](cmHopper[_0x88f5('0x13')](_0x4eeb48))[_0x88f5('0xd')](loggerCatch('[getContactPreview]\x20'));};exports['createHistory']=function(_0x3a342a,_0x37e7c7){create(_0x3a342a)[_0x88f5('0xd')](loggerCatch(_0x37e7c7));moveContact(_0x3a342a)['catch'](loggerCatch(_0x37e7c7));};exports[_0x88f5('0x14')]=function(_0x29017b,_0x48298b){createAgent(_0x29017b)[_0x88f5('0xd')](loggerCatch(_0x48298b));};exports[_0x88f5('0x15')]=function(_0x4ab4a8,_0x38225f){create(_0x4ab4a8)['catch'](loggerCatch(_0x38225f));};exports[_0x88f5('0x16')]=function(_0x5aa3a6,_0x5015e5){moveContact(_0x5aa3a6)['catch'](loggerCatch(_0x5015e5));};exports[_0x88f5('0x17')]=function(_0x286311,_0x4a7bb0,_0x550c8c){if(_0x4a7bb0){_0x286311[_0x88f5('0x18')]=null;}if(_0x550c8c){_0x286311[_0x88f5('0x19')]=![];}return BPromise[_0x88f5('0xa')]()['then'](cmHopper[_0x88f5('0x17')](_0x286311))[_0x88f5('0xd')](loggerCatch(_0x88f5('0x1a')));};exports['countReScheduled']=function(_0x54a19f){return BPromise[_0x88f5('0xa')]()[_0x88f5('0xb')](cmHopper[_0x88f5('0x1b')](_0x54a19f))[_0x88f5('0xd')](loggerCatch(_0x88f5('0x1c')));};exports[_0x88f5('0x1d')]=function(_0x1a35a){return BPromise[_0x88f5('0xa')]()['then'](cmHopper[_0x88f5('0x1d')]({'UserId':null},_0x1a35a,0x1))[_0x88f5('0xd')](loggerCatch('[unlockContact]\x20'));};exports[_0x88f5('0x1e')]=function(_0x23a8e7){return BPromise[_0x88f5('0xa')]()[_0x88f5('0xb')](cmHopper['unlockContact']({'active':![]},_0x23a8e7,0x1))['catch'](loggerCatch(_0x88f5('0x1f')));};exports[_0x88f5('0x20')]=function(_0x44b604){var _0x306b7e={};_0x306b7e['type']=_0x44b604[_0x88f5('0x21')];_0x306b7e[_0x88f5('0x22')]=_0x44b604[_0x88f5('0x22')];_0x306b7e[_0x88f5('0x23')]=_0x44b604[_0x88f5('0x23')];_0x306b7e['calleridname']=_0x44b604[_0x88f5('0x24')];_0x306b7e[_0x88f5('0x25')]=_0x44b604[_0x88f5('0x25')];_0x306b7e[_0x88f5('0x26')]=_0x44b604[_0x88f5('0x27')];_0x306b7e['queuecallerleaveAt']=_0x44b604[_0x88f5('0x27')];_0x306b7e[_0x88f5('0x28')]=0x1;_0x306b7e['queuecallercompleteAt']=_0x44b604[_0x88f5('0x29')];_0x306b7e[_0x88f5('0x2a')]=_0x44b604[_0x88f5('0x2b')];_0x306b7e['context']='from-sip';_0x306b7e[_0x88f5('0x2c')]=_0x88f5('0x2d');_0x306b7e['holdtime']=0x0;_0x306b7e[_0x88f5('0x2e')]=0x1;_0x306b7e['lastAssignedTo']=_0x44b604[_0x88f5('0x2b')];_0x306b7e[_0x88f5('0x2f')]=_0x88f5('0x30');return BPromise[_0x88f5('0xa')]()[_0x88f5('0xb')](voiceQueueReport[_0x88f5('0x31')](_0x306b7e))[_0x88f5('0xd')](loggerCatch('[voiceQueueReport]\x20'));};exports['getContactRecallMe']=function(_0xcf0a96,_0x208c1b){return BPromise[_0x88f5('0xa')]()[_0x88f5('0xb')](cmHopper['getContactRecallMe'](_0xcf0a96,_0x208c1b))['catch'](loggerCatch(_0x88f5('0x32')));};exports[_0x88f5('0x33')]=function(_0x24d81a){return BPromise[_0x88f5('0xa')]()[_0x88f5('0xb')](cmHopper[_0x88f5('0x17')](_0x24d81a,!![],!![]))[_0x88f5('0xd')](loggerCatch('[rescheduleContactInQueue]\x20'));};
\ No newline at end of file
index cbd025b..d431e88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaa1=['rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepvtcallid','getCallerIdRandom','pow','match','util','lodash','moment','preview','env','XCALLY_IP_AGI','127.0.0.1','diff','error','inspect','logger','info','logger2','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','isNil','addVariables','Queue','name','calleridnum','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','dialQueueProject2','originatecalleridnum','originatecalleridname','xcally-motion-preview','monitor_format','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','createdAt','%s%s','XMD-','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','endtime','logAgent','responsetime','ringtime','logLookAgent','membername','UserId','logCustomer','talktime','answertime','isFailure','Failure','variablesAction','RECALL','uniqueid','originate','channelAgent','timeout','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','clone','Global','scheduledAt','active','scheduledat','add','minutes','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','buildObj','lastevent','interface','mandatoryDisposition','buildAcw','queue','agentReadyId','not_inuse','status','reachable','push','getDiff','milliseconds','seconds','createBody','CampaignId','idContact','type','dialAnswer','calleridname','countglobal','callback','callbackuniqueid','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-dialurl','xmd-dialtimeout','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agi'];(function(_0x184654,_0x264cc3){var _0x26aeb4=function(_0x28b9a4){while(--_0x28b9a4){_0x184654['push'](_0x184654['shift']());}};_0x26aeb4(++_0x264cc3);}(_0xaaa1,0x9b));var _0x1aaa=function(_0x3917c0,_0x32034d){_0x3917c0=_0x3917c0-0x0;var _0x4c9d0c=_0xaaa1[_0x3917c0];return _0x4c9d0c;};'use strict';var util=require(_0x1aaa('0x0'));var _=require(_0x1aaa('0x1'));var moment=require(_0x1aaa('0x2'));var logger=require('../../../../config/logger')(_0x1aaa('0x3'));var ipAgi=process[_0x1aaa('0x4')][_0x1aaa('0x5')]||_0x1aaa('0x6');function getSeconds(_0x25c954,_0x1d374f){var _0x1ac16e=moment(_0x25c954)['milliseconds'](0x0);var _0x27aa7b=moment(_0x1d374f)['milliseconds'](0x0);return _0x1ac16e[_0x1aaa('0x7')](_0x27aa7b,'seconds');}exports['loggerCatch']=function(_0x42fe8e){return function(_0x5e3434){logger[_0x1aaa('0x8')](_0x42fe8e,util[_0x1aaa('0x9')](_0x5e3434,{'showHidden':![],'depth':null}));};};exports[_0x1aaa('0xa')]=function(_0x423eec,_0x3da5b9){logger[_0x1aaa('0xb')](_0x423eec,util[_0x1aaa('0x9')](_0x3da5b9,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0x502c82,_0x20bddb){logger['error'](_0x502c82,util[_0x1aaa('0x9')](_0x20bddb,{'showHidden':![],'depth':null}));};exports[_0x1aaa('0xc')]=function(_0x112510){return function(_0x46b195){logger[_0x1aaa('0xb')](_0x112510,util[_0x1aaa('0x9')](_0x46b195,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x2e4b83,_0x3a6277,_0x3b8162){return{'message':_0x2e4b83,'unlock':_0x3a6277,'active':_0x3b8162};};exports[_0x1aaa('0xd')]=function(_0x1bc88e,_0xf8a820,_0x259cf6){if(!_[_0x1aaa('0xe')](_0x259cf6)&&_0x1aaa('0xf')===typeof _0x259cf6&&!_[_0x1aaa('0x10')](_0x259cf6)){if(!_['isUndefined'](_0xf8a820)&&'string'===typeof _0xf8a820&&!_[_0x1aaa('0x10')](_0xf8a820)){return util[_0x1aaa('0x11')](_0x1aaa('0x12'),_0xf8a820,_0x259cf6);}return util[_0x1aaa('0x11')](_0x1aaa('0x12'),_0x259cf6,_0x259cf6);}if(!_[_0x1aaa('0xe')](_0x1bc88e)&&_0x1aaa('0xf')===typeof _0x1bc88e&&!_[_0x1aaa('0x10')](_0x1bc88e)){return _0x1bc88e;}return _0x1aaa('0x13');};exports[_0x1aaa('0x14')]=function(_0x3ad843){if(_[_0x1aaa('0x15')](_0x3ad843)){return![];}return _0x3ad843;};exports[_0x1aaa('0x16')]=function(_0x5618f1,_0x2eac04,_0x4dec9c,_0x4ad8a5,_0x2b2653,_0x554688){var _0x579fc5={'XMD-QUEUE':_0x2eac04[_0x1aaa('0x17')]?_0x2eac04[_0x1aaa('0x17')][_0x1aaa('0x18')]:'','XMD-CALLERID':_0x4ad8a5,'XMD-CALLERID-PREVIEW':_0x554688?util[_0x1aaa('0x11')](_0x1aaa('0x12'),_0x554688['calleridname'],_0x554688[_0x1aaa('0x19')]):_0x4ad8a5,'XMD-DIALID':_0x2b2653,'XMD-CONTACTID':_0x2eac04[_0x1aaa('0x1a')],'XMD-CDRTYPE':_0x1aaa('0x1b'),'CALLERID(all)':_0x4ad8a5,'XMD-VOICEQUEUEID':_0x2eac04[_0x1aaa('0x1c')],'XMD-DIALCHANNEL':_0x4dec9c,'XMD-DIALTIMEOUT':_0x5618f1[_0x1aaa('0x1d')]||0x1e,'XMD-DIALOPTIONS':util['format'](_0x1aaa('0x1e'),_0x5618f1['dialQueueProject2']?'g':'',_[_0x1aaa('0x10')](_0x5618f1['monitor_format'])?'':_0x1aaa('0x1f')),'XMD-DIALURL':_0x5618f1[_0x1aaa('0x20')]||'','XMD-AGI':_0x5618f1[_0x1aaa('0x21')]?util[_0x1aaa('0x11')](_0x1aaa('0x22'),ipAgi,_0x5618f1['dialQueueProject']):_0x1aaa('0x23'),'XMD-AGIAFTER':_0x5618f1[_0x1aaa('0x24')]?util[_0x1aaa('0x11')](_0x1aaa('0x22'),ipAgi,_0x5618f1[_0x1aaa('0x24')]):_0x1aaa('0x23'),'XMD-ORIGINATECALLERIDNUM':_0x554688?_0x554688[_0x1aaa('0x25')]:'','XMD-ORIGINATECALLERIDNAME':_0x554688?_0x554688[_0x1aaa('0x26')]:'','XMD-DESTINATION':_0x1aaa('0x27')};if(!_[_0x1aaa('0x10')](_0x5618f1[_0x1aaa('0x28')])){_0x579fc5[util[_0x1aaa('0x11')]('%s','_XCALLY_MIXMONITOR_FORMAT')]=_0x5618f1[_0x1aaa('0x28')];_0x579fc5[util[_0x1aaa('0x11')]('%s',_0x1aaa('0x29'))]=_0x2b2653;}if(_0x2eac04&&_0x2eac04[_0x1aaa('0x2a')]){for(var _0x333036 in _0x2eac04['Contact']){if(_0x2eac04[_0x1aaa('0x2a')][_0x1aaa('0x2b')](_0x333036)){if(!_['isNil'](_0x2eac04['Contact'][_0x333036])&&_0x333036!=='id'&&_0x333036!==_0x1aaa('0x2c')&&_0x333036!==_0x1aaa('0x2d')&&_0x333036!=='updatedAt'){_0x579fc5[util[_0x1aaa('0x11')](_0x1aaa('0x2e'),_0x1aaa('0x2f'),_['toUpper'](_0x333036))]=_0x2eac04[_0x1aaa('0x2a')][_0x333036];}}}}return _0x579fc5;};exports[_0x1aaa('0x30')]=function(_0xe492f9){var _0x47ae64={};for(var _0x4f3b15 in _0xe492f9){if(_0xe492f9[_0x1aaa('0x2b')](_0x4f3b15)){_0x47ae64[util[_0x1aaa('0x11')]('%s',_[_0x1aaa('0x31')](_0x4f3b15))]=_0xe492f9[_0x4f3b15];}}return{'variables':_0x47ae64};};exports[_0x1aaa('0x32')]=function(_0x463d80,_0x4d47d4){if(!_[_0x1aaa('0x15')](_0x463d80)){if(_0x463d80[_0x1aaa('0x2b')]('originated')){if(_0x463d80[_0x1aaa('0x33')]>0x0){_0x463d80[_0x1aaa('0x33')]-=0x1;}else{logger['error'](_0x1aaa('0x34'),_0x4d47d4);}}}else{logger['error']('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x4d47d4);}};exports[_0x1aaa('0x35')]=function(_0x4d4cae){var _0x555623=moment()['format'](_0x1aaa('0x36'));_0x4d4cae[_0x1aaa('0x37')]=0xd;_0x4d4cae[_0x1aaa('0x38')]=_0x1aaa('0x39');_0x4d4cae[_0x1aaa('0x3a')]=_0x555623;_0x4d4cae['responsetime']=_0x555623;_0x4d4cae[_0x1aaa('0x3b')]=_0x555623;};exports[_0x1aaa('0x3c')]=function(_0x433e0b,_0x5d2947,_0x1a2fb4){var _0x4eebb2=moment()[_0x1aaa('0x11')]('YYYY-MM-DD\x20HH:mm:ss');_0x433e0b[_0x1aaa('0x37')]=_0x5d2947;_0x433e0b[_0x1aaa('0x38')]=_0x1a2fb4;_0x433e0b[_0x1aaa('0x3d')]=_0x4eebb2;_0x433e0b[_0x1aaa('0x3e')]=getSeconds(_0x433e0b['responsetime'],_0x433e0b[_0x1aaa('0x3a')]);};exports[_0x1aaa('0x3f')]=function(_0x51daf3,_0x2e56d0,_0x17ab19){_0x51daf3[_0x1aaa('0x40')]=_0x2e56d0;_0x51daf3[_0x1aaa('0x41')]=_0x17ab19;};exports[_0x1aaa('0x42')]=function(_0x1bbefe,_0x4d94a9,_0x1cee16){var _0x9dfc42=moment()[_0x1aaa('0x11')](_0x1aaa('0x36'));_0x1bbefe[_0x1aaa('0x37')]=_0x4d94a9;_0x1bbefe[_0x1aaa('0x38')]=_0x1cee16;_0x1bbefe[_0x1aaa('0x3d')]=_0x1bbefe['responsetime']?_0x1bbefe['responsetime']:_0x9dfc42;_0x1bbefe[_0x1aaa('0x3b')]=_0x1bbefe[_0x1aaa('0x3b')]?_0x1bbefe[_0x1aaa('0x3b')]:_0x9dfc42;_0x1bbefe[_0x1aaa('0x3e')]=getSeconds(_0x1bbefe[_0x1aaa('0x3d')]||0x0,_0x1bbefe['starttime']||0x0);_0x1bbefe[_0x1aaa('0x43')]=_0x1bbefe[_0x1aaa('0x44')]?getSeconds(_0x1bbefe['endtime'],_0x1bbefe['answertime']):0x0;};exports[_0x1aaa('0x45')]=function(_0x4e5809){return _0x4e5809===_0x1aaa('0x46');};exports[_0x1aaa('0x47')]=function(_0x4cd097,_0x34afb6,_0x2542cd,_0x372926,_0x9d7a0){var _0x3fee0a=_0x372926?_0x1aaa('0x48'):_0x4cd097['calleridname'];_0x3fee0a=_0x9d7a0?'BOOKED':_0x3fee0a;return{'actionid':_0x4cd097[_0x1aaa('0x49')],'action':_0x1aaa('0x4a'),'channel':_0x4cd097[_0x1aaa('0x4b')],'callerid':util[_0x1aaa('0x11')](_0x1aaa('0x12'),_0x3fee0a,_0x4cd097[_0x1aaa('0x19')]),'Exten':_0x1aaa('0x27'),'Context':'from-sip','Priority':'1','variable':_0x2542cd,'timeout':(_0x34afb6[_0x1aaa('0x4c')]||0x1e)*0x3e8,'async':!![],'channelid':_0x4cd097[_0x1aaa('0x49')]};};exports[_0x1aaa('0x4d')]=function(_0x3c8b58){return _0x3c8b58[_0x1aaa('0x4e')]+_0x3c8b58[_0x1aaa('0x4f')]+_0x3c8b58[_0x1aaa('0x50')]+_0x3c8b58['countagentrejectretry']+_0x3c8b58['countnosuchnumberretry'];};exports['cloneAction']=function(_0x5072df){var _0xe6e4f6=_[_0x1aaa('0x51')](_0x5072df);_0xe6e4f6['state']=0xf;_0xe6e4f6[_0x1aaa('0x38')]=_0x1aaa('0x52');return _0xe6e4f6;};exports[_0x1aaa('0x53')]=function(_0x567efa,_0x247bba,_0x4629b1){var _0x4c52ea={};_0x4c52ea[_0x247bba]=_0x567efa[_0x247bba];_0x4c52ea[_0x1aaa('0x54')]=![];_0x4c52ea[_0x1aaa('0x55')]=moment()[_0x1aaa('0x56')](_0x4629b1,_0x1aaa('0x57'))['format']('YYYY-MM-DD\x20HH:mm:ss');_0x4c52ea[_0x1aaa('0x1a')]=_0x567efa[_0x1aaa('0x1a')];_0x4c52ea[_0x1aaa('0x58')]=_0x567efa[_0x1aaa('0x58')];_0x4c52ea['VoiceQueueId']=_0x567efa[_0x1aaa('0x1c')]||undefined;return _0x4c52ea;};exports[_0x1aaa('0x59')]=function(_0x22cf80,_0x4b8fb8){if(!_[_0x1aaa('0x15')](_0x22cf80)){if(_0x22cf80[_0x1aaa('0x5a')]>0x0){_0x22cf80[_0x1aaa('0x5a')]-=0x1;}else{logger['error'](_0x4b8fb8,_0x1aaa('0x5b'));}}else{logger['error'](_0x4b8fb8,_0x1aaa('0x5c'));}};exports[_0x1aaa('0x5d')]=function(_0x4ceb7b){if(_0x4ceb7b<=0x0){return!![];}return![];};exports[_0x1aaa('0x5e')]=function(_0x3c7196,_0x249670,_0x4d4c4a){_0x3c7196[_0x1aaa('0x5f')]=_0x249670;_0x3c7196[_0x1aaa('0x18')]=_0x3c7196['queue'];_0x3c7196[_0x1aaa('0x60')]=_0x3c7196[_0x1aaa('0x4b')];if(_0x4d4c4a){_0x3c7196[_0x1aaa('0x61')]=_0x4d4c4a['mandatoryDisposition'];}return _0x3c7196;};exports[_0x1aaa('0x62')]=function(_0x5b49f7){var _0x48393d={};_0x48393d[_0x1aaa('0x63')]=_0x5b49f7[_0x1aaa('0x63')];_0x48393d[_0x1aaa('0x60')]=_0x5b49f7[_0x1aaa('0x4b')];_0x48393d[_0x1aaa('0x49')]=_0x5b49f7['uniqueid'];return _0x48393d;};exports[_0x1aaa('0x64')]=function(_0x2f9b5f){var _0x3b787c=[];for(var _0x24d8db in _0x2f9b5f){if(_0x2f9b5f[_0x1aaa('0x2b')](_0x24d8db)){if(!_[_0x1aaa('0x15')](_0x2f9b5f[_0x24d8db])&&_0x2f9b5f[_0x24d8db][_0x1aaa('0x37')]===_0x1aaa('0x65')&&_0x2f9b5f[_0x24d8db][_0x1aaa('0x66')]===_0x1aaa('0x67')){_0x3b787c[_0x1aaa('0x68')](_0x2f9b5f[_0x24d8db]['id']);}}}return _0x3b787c;};exports[_0x1aaa('0x69')]=function(_0x1d37ee){var _0x30e5cf=moment()[_0x1aaa('0x6a')](0x0);var _0x3394c0=moment(_0x1d37ee)[_0x1aaa('0x6a')](0x0);return _0x30e5cf[_0x1aaa('0x7')](_0x3394c0,_0x1aaa('0x6b'));};exports[_0x1aaa('0x6c')]=function(_0x28cec7){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x28cec7[_0x1aaa('0x1a')],'ListId':_0x28cec7[_0x1aaa('0x58')],'VoiceQueueId':_0x28cec7[_0x1aaa('0x1c')]||undefined,'CampaignId':_0x28cec7[_0x1aaa('0x6d')]||undefined};};exports['filterKey']=function(_0x2efb65){if(_0x2efb65===_0x1aaa('0x49')||_0x2efb65===_0x1aaa('0x6e')||_0x2efb65===_0x1aaa('0x63')||_0x2efb65===_0x1aaa('0x6f')||_0x2efb65==='campaigntype'||_0x2efb65===_0x1aaa('0x70')||_0x2efb65===_0x1aaa('0x40')||_0x2efb65==='channelAgent'||_0x2efb65===_0x1aaa('0x71')||_0x2efb65===_0x1aaa('0x54')||_0x2efb65===_0x1aaa('0x19')||_0x2efb65===_0x1aaa('0x55')||_0x2efb65===_0x1aaa('0x4e')||_0x2efb65===_0x1aaa('0x4f')||_0x2efb65==='countnoanswerretry'||_0x2efb65===_0x1aaa('0x72')||_0x2efb65===_0x1aaa('0x73')||_0x2efb65===_0x1aaa('0x74')||_0x2efb65===_0x1aaa('0x75')||_0x2efb65===_0x1aaa('0x76')||_0x2efb65==='ContactId'||_0x2efb65===_0x1aaa('0x58')||_0x2efb65===_0x1aaa('0x41')||_0x2efb65===_0x1aaa('0x1c')||_0x2efb65===_0x1aaa('0x77')||_0x2efb65===_0x1aaa('0x78')||_0x2efb65===_0x1aaa('0x79')||_0x2efb65===_0x1aaa('0x7a')||_0x2efb65==='xmd-listid'||_0x2efb65===_0x1aaa('0x7b')||_0x2efb65===_0x1aaa('0x7c')||_0x2efb65==='xmd-dialoptions'||_0x2efb65===_0x1aaa('0x7d')||_0x2efb65===_0x1aaa('0x7e')||_0x2efb65===_0x1aaa('0x7f')||_0x2efb65===_0x1aaa('0x80')||_0x2efb65===_0x1aaa('0x81')||_0x2efb65==='xmd-agiafter'||_0x2efb65===_0x1aaa('0x82')||_0x2efb65===_0x1aaa('0x83')||_0x2efb65===_0x1aaa('0x84')||_0x2efb65===_0x1aaa('0x85')||_0x2efb65===_0x1aaa('0x86')||_0x2efb65===_0x1aaa('0x87')||_0x2efb65===_0x1aaa('0x88')||_0x2efb65===_0x1aaa('0x89')||_0x2efb65===_0x1aaa('0x8a')||_0x2efb65===_0x1aaa('0x83')||_0x2efb65===_0x1aaa('0x84')||_0x2efb65===_0x1aaa('0x85')||_0x2efb65===_0x1aaa('0x86')||_0x2efb65==='rtpaudioqosloss'||_0x2efb65===_0x1aaa('0x88')||_0x2efb65==='rtpaudioqosrtt'||_0x2efb65===_0x1aaa('0x8a')||_0x2efb65==='bridgepeer'||_0x2efb65===_0x1aaa('0x8b')||_0x2efb65===_0x1aaa('0x37')||_0x2efb65===_0x1aaa('0x38')){return![];}return!![];};exports[_0x1aaa('0x8c')]=function(_0x538c2b,_0x9891eb){var _0x4af143,_0x19c24e,_0x3b5bb6;if(_0x9891eb<=0x0){_0x9891eb=0x1;}_0x4af143=new RegExp('\x5cw{0,'+_0x9891eb+'}$');_0x19c24e=Math[_0x1aaa('0x8d')](0xa,_0x9891eb-0x1);_0x3b5bb6=Math[_0x1aaa('0x8d')](0xa,_0x9891eb)-0x1;return util['format']('%s',_['replace'](_0x538c2b,_0x4af143,_['random'](_0x19c24e,_0x3b5bb6)));};exports['extractCalleridName']=function(_0x42cdd0){var _0x32f7cf=_0x42cdd0[_0x1aaa('0x8e')](/"(.*?)"/);return _0x32f7cf?_0x32f7cf[0x1]:_0x42cdd0;};exports['extractCalleridNumber']=function(_0x3850d4){var _0x2cd5f0=_0x3850d4[_0x1aaa('0x8e')](/<(.*?)>/);return _0x2cd5f0?_0x2cd5f0[0x1]:_0x3850d4;};
\ No newline at end of file
+var _0xf655=['buildAcw','not_inuse','status','push','getDiff','createBody','CampaignId','filterKey','idContact','type','countnoanswerretry','callbackat','recallme','UserId','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-agiafter','xmd-agi','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqos','rtpaudioqosloss','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','match','extractCalleridNumber','moment','../../../../config/logger','preview','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','seconds','loggerCatch','error','logger','info','loggerError','inspect','message','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','isNil','Queue','name','calleridnum','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','\x22agi://%s/square,%s\x22','dialQueueProject','NONE','originatecalleridnum','_XCALLY_MIXMONITOR_FORMAT','Contact','hasOwnProperty','createdAt','updatedAt','%s%s','XMD-','toUpper','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','statedesc','Blacklist','responsetime','state','ringtime','starttime','membername','logCustomer','endtime','answertime','isFailure','Failure','variablesAction','calleridname','BOOKED','uniqueid','channelAgent','xcally-motion-preview','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countagentrejectretry','countnosuchnumberretry','clone','scheduledAt','active','scheduledat','add','minutes','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','buildObj','queue','interface','motionChannel','voice','mandatoryDisposition'];(function(_0xcadf00,_0x236322){var _0xc197ea=function(_0x8e1782){while(--_0x8e1782){_0xcadf00['push'](_0xcadf00['shift']());}};_0xc197ea(++_0x236322);}(_0xf655,0x1cd));var _0x5f65=function(_0x3b9eb9,_0x4b39dd){_0x3b9eb9=_0x3b9eb9-0x0;var _0x4d7f68=_0xf655[_0x3b9eb9];return _0x4d7f68;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x5f65('0x0'));var logger=require(_0x5f65('0x1'))(_0x5f65('0x2'));var ipAgi=process[_0x5f65('0x3')][_0x5f65('0x4')]||_0x5f65('0x5');function getSeconds(_0x3ae5df,_0x381c65){var _0x4324e6=moment(_0x3ae5df)[_0x5f65('0x6')](0x0);var _0x24df08=moment(_0x381c65)[_0x5f65('0x6')](0x0);return _0x4324e6[_0x5f65('0x7')](_0x24df08,_0x5f65('0x8'));}exports[_0x5f65('0x9')]=function(_0xede4d4){return function(_0x2c376c){logger[_0x5f65('0xa')](_0xede4d4,util['inspect'](_0x2c376c,{'showHidden':![],'depth':null}));};};exports[_0x5f65('0xb')]=function(_0x545153,_0x49f8d3){logger[_0x5f65('0xc')](_0x545153,util['inspect'](_0x49f8d3,{'showHidden':![],'depth':null}));};exports[_0x5f65('0xd')]=function(_0x4308a9,_0x5f59eb){logger[_0x5f65('0xa')](_0x4308a9,util['inspect'](_0x5f59eb,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x3d878d){return function(_0x4583bf){logger[_0x5f65('0xc')](_0x3d878d,util[_0x5f65('0xe')](_0x4583bf,{'showHidden':![],'depth':null}));};};exports[_0x5f65('0xf')]=function(_0x108829,_0x12c533,_0x2a8df2){return{'message':_0x108829,'unlock':_0x12c533,'active':_0x2a8df2};};exports['getCallerId']=function(_0x551517,_0x274d8a,_0x9d7846){if(!_[_0x5f65('0x10')](_0x9d7846)&&_0x5f65('0x11')===typeof _0x9d7846&&!_['isEmpty'](_0x9d7846)){if(!_[_0x5f65('0x10')](_0x274d8a)&&'string'===typeof _0x274d8a&&!_[_0x5f65('0x12')](_0x274d8a)){return util[_0x5f65('0x13')](_0x5f65('0x14'),_0x274d8a,_0x9d7846);}return util[_0x5f65('0x13')](_0x5f65('0x14'),_0x9d7846,_0x9d7846);}if(!_[_0x5f65('0x10')](_0x551517)&&_0x5f65('0x11')===typeof _0x551517&&!_['isEmpty'](_0x551517)){return _0x551517;}return _0x5f65('0x15');};exports[_0x5f65('0x16')]=function(_0x45cb64){if(_[_0x5f65('0x17')](_0x45cb64)){return![];}return _0x45cb64;};exports['addVariables']=function(_0x3c1387,_0xdf53a0,_0x44aa2a,_0x143b84,_0x4702e3,_0x3b17d6){var _0x36ccd0={'XMD-QUEUE':_0xdf53a0[_0x5f65('0x18')]?_0xdf53a0[_0x5f65('0x18')][_0x5f65('0x19')]:'','XMD-CALLERID':_0x143b84,'XMD-CALLERID-PREVIEW':_0x3b17d6?util[_0x5f65('0x13')]('\x22%s\x22\x20<%s>',_0x3b17d6['calleridname'],_0x3b17d6[_0x5f65('0x1a')]):_0x143b84,'XMD-DIALID':_0x4702e3,'XMD-CONTACTID':_0xdf53a0[_0x5f65('0x1b')],'XMD-CDRTYPE':_0x5f65('0x1c'),'CALLERID(all)':_0x143b84,'XMD-VOICEQUEUEID':_0xdf53a0[_0x5f65('0x1d')],'XMD-DIALCHANNEL':_0x44aa2a,'XMD-DIALTIMEOUT':_0x3c1387[_0x5f65('0x1e')]||0x1e,'XMD-DIALOPTIONS':util[_0x5f65('0x13')]('\x22rtTxX%s%s\x22',_0x3c1387[_0x5f65('0x1f')]?'g':'',_['isEmpty'](_0x3c1387[_0x5f65('0x20')])?'':_0x5f65('0x21')),'XMD-DIALURL':_0x3c1387['dialPreviewUrl']||'','XMD-AGI':_0x3c1387['dialQueueProject']?util[_0x5f65('0x13')](_0x5f65('0x22'),ipAgi,_0x3c1387[_0x5f65('0x23')]):_0x5f65('0x24'),'XMD-AGIAFTER':_0x3c1387['dialQueueProject2']?util[_0x5f65('0x13')](_0x5f65('0x22'),ipAgi,_0x3c1387['dialQueueProject2']):'NONE','XMD-ORIGINATECALLERIDNUM':_0x3b17d6?_0x3b17d6[_0x5f65('0x25')]:'','XMD-ORIGINATECALLERIDNAME':_0x3b17d6?_0x3b17d6['originatecalleridname']:'','XMD-DESTINATION':'xcally-motion-preview'};if(!_[_0x5f65('0x12')](_0x3c1387['monitor_format'])){_0x36ccd0[util[_0x5f65('0x13')]('%s',_0x5f65('0x26'))]=_0x3c1387[_0x5f65('0x20')];_0x36ccd0[util[_0x5f65('0x13')]('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x4702e3;}if(_0xdf53a0&&_0xdf53a0['Contact']){for(var _0x220b1d in _0xdf53a0['Contact']){if(_0xdf53a0[_0x5f65('0x27')][_0x5f65('0x28')](_0x220b1d)){if(!_['isNil'](_0xdf53a0['Contact'][_0x220b1d])&&_0x220b1d!=='id'&&_0x220b1d!=='tags'&&_0x220b1d!==_0x5f65('0x29')&&_0x220b1d!==_0x5f65('0x2a')){_0x36ccd0[util['format'](_0x5f65('0x2b'),_0x5f65('0x2c'),_[_0x5f65('0x2d')](_0x220b1d))]=_0xdf53a0[_0x5f65('0x27')][_0x220b1d];}}}}return _0x36ccd0;};exports[_0x5f65('0x2e')]=function(_0x3fb5b7){var _0x2e46ca={};for(var _0x23d2fc in _0x3fb5b7){if(_0x3fb5b7['hasOwnProperty'](_0x23d2fc)){_0x2e46ca[util[_0x5f65('0x13')]('%s',_[_0x5f65('0x2f')](_0x23d2fc))]=_0x3fb5b7[_0x23d2fc];}}return{'variables':_0x2e46ca};};exports[_0x5f65('0x30')]=function(_0x41030d,_0x201707){if(!_['isNil'](_0x41030d)){if(_0x41030d[_0x5f65('0x28')]('originated')){if(_0x41030d[_0x5f65('0x31')]>0x0){_0x41030d[_0x5f65('0x31')]-=0x1;}else{logger['error'](_0x5f65('0x32'),_0x201707);}}}else{logger['error']('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x201707);}};exports[_0x5f65('0x33')]=function(_0x39e4ce){var _0x4bfc25=moment()[_0x5f65('0x13')](_0x5f65('0x34'));_0x39e4ce['state']=0xd;_0x39e4ce[_0x5f65('0x35')]=_0x5f65('0x36');_0x39e4ce['starttime']=_0x4bfc25;_0x39e4ce[_0x5f65('0x37')]=_0x4bfc25;_0x39e4ce['endtime']=_0x4bfc25;};exports['logAgent']=function(_0x43e8ce,_0x10ed6a,_0x21a351){var _0x62cc25=moment()[_0x5f65('0x13')](_0x5f65('0x34'));_0x43e8ce[_0x5f65('0x38')]=_0x10ed6a;_0x43e8ce[_0x5f65('0x35')]=_0x21a351;_0x43e8ce[_0x5f65('0x37')]=_0x62cc25;_0x43e8ce[_0x5f65('0x39')]=getSeconds(_0x43e8ce[_0x5f65('0x37')],_0x43e8ce[_0x5f65('0x3a')]);};exports['logLookAgent']=function(_0x3cec3f,_0x23dfca,_0x6ae88b){_0x3cec3f[_0x5f65('0x3b')]=_0x23dfca;_0x3cec3f['UserId']=_0x6ae88b;};exports[_0x5f65('0x3c')]=function(_0x53eb83,_0x472d2a,_0xafe96e){var _0x239ef4=moment()['format'](_0x5f65('0x34'));_0x53eb83[_0x5f65('0x38')]=_0x472d2a;_0x53eb83[_0x5f65('0x35')]=_0xafe96e;_0x53eb83[_0x5f65('0x37')]=_0x53eb83['responsetime']?_0x53eb83[_0x5f65('0x37')]:_0x239ef4;_0x53eb83[_0x5f65('0x3d')]=_0x53eb83[_0x5f65('0x3d')]?_0x53eb83[_0x5f65('0x3d')]:_0x239ef4;_0x53eb83[_0x5f65('0x39')]=getSeconds(_0x53eb83[_0x5f65('0x37')]||0x0,_0x53eb83[_0x5f65('0x3a')]||0x0);_0x53eb83['talktime']=_0x53eb83[_0x5f65('0x3e')]?getSeconds(_0x53eb83[_0x5f65('0x3d')],_0x53eb83[_0x5f65('0x3e')]):0x0;};exports[_0x5f65('0x3f')]=function(_0x5cc88b){return _0x5cc88b===_0x5f65('0x40');};exports[_0x5f65('0x41')]=function(_0x255e3d,_0x1aa123,_0x3aecaf,_0x5d58de,_0x4f80a8){var _0x199dc5=_0x5d58de?'RECALL':_0x255e3d[_0x5f65('0x42')];_0x199dc5=_0x4f80a8?_0x5f65('0x43'):_0x199dc5;return{'actionid':_0x255e3d[_0x5f65('0x44')],'action':'originate','channel':_0x255e3d[_0x5f65('0x45')],'callerid':util[_0x5f65('0x13')]('\x22%s\x22\x20<%s>',_0x199dc5,_0x255e3d[_0x5f65('0x1a')]),'Exten':_0x5f65('0x46'),'Context':_0x5f65('0x47'),'Priority':'1','variable':_0x3aecaf,'timeout':(_0x1aa123[_0x5f65('0x48')]||0x1e)*0x3e8,'async':!![],'channelid':_0x255e3d[_0x5f65('0x44')]};};exports[_0x5f65('0x49')]=function(_0x2ba2fe){return _0x2ba2fe[_0x5f65('0x4a')]+_0x2ba2fe[_0x5f65('0x4b')]+_0x2ba2fe['countnoanswerretry']+_0x2ba2fe[_0x5f65('0x4c')]+_0x2ba2fe[_0x5f65('0x4d')];};exports['cloneAction']=function(_0x855fe1){var _0x5d78fa=_[_0x5f65('0x4e')](_0x855fe1);_0x5d78fa[_0x5f65('0x38')]=0xf;_0x5d78fa[_0x5f65('0x35')]='Global';return _0x5d78fa;};exports[_0x5f65('0x4f')]=function(_0x472edf,_0x32bea4,_0x1de82f){var _0x276fb6={};_0x276fb6[_0x32bea4]=_0x472edf[_0x32bea4];_0x276fb6[_0x5f65('0x50')]=![];_0x276fb6[_0x5f65('0x51')]=moment()[_0x5f65('0x52')](_0x1de82f,_0x5f65('0x53'))[_0x5f65('0x13')]('YYYY-MM-DD\x20HH:mm:ss');_0x276fb6[_0x5f65('0x1b')]=_0x472edf[_0x5f65('0x1b')];_0x276fb6['ListId']=_0x472edf['ListId'];_0x276fb6[_0x5f65('0x1d')]=_0x472edf[_0x5f65('0x1d')]||undefined;return _0x276fb6;};exports[_0x5f65('0x54')]=function(_0x24fbce,_0x18963a){if(!_['isNil'](_0x24fbce)){if(_0x24fbce[_0x5f65('0x55')]>0x0){_0x24fbce[_0x5f65('0x55')]-=0x1;}else{logger[_0x5f65('0xa')](_0x18963a,_0x5f65('0x56'));}}else{logger[_0x5f65('0xa')](_0x18963a,_0x5f65('0x57'));}};exports[_0x5f65('0x58')]=function(_0x30cec7){if(_0x30cec7<=0x0){return!![];}return![];};exports[_0x5f65('0x59')]=function(_0x4b7588,_0x25baf3,_0x144320){_0x4b7588['lastevent']=_0x25baf3;_0x4b7588[_0x5f65('0x19')]=_0x4b7588[_0x5f65('0x5a')];_0x4b7588[_0x5f65('0x5b')]=_0x4b7588[_0x5f65('0x45')];_0x4b7588[_0x5f65('0x5c')]=_0x5f65('0x5d');if(_0x144320){_0x4b7588[_0x5f65('0x5e')]=_0x144320['mandatoryDisposition'];}return _0x4b7588;};exports[_0x5f65('0x5f')]=function(_0x10e995){var _0x192278={};_0x192278['queue']=_0x10e995[_0x5f65('0x5a')];_0x192278[_0x5f65('0x5b')]=_0x10e995['channelAgent'];_0x192278[_0x5f65('0x44')]=_0x10e995[_0x5f65('0x44')];return _0x192278;};exports['agentReadyId']=function(_0x4af285){var _0x309b86=[];for(var _0x26c76f in _0x4af285){if(_0x4af285['hasOwnProperty'](_0x26c76f)){if(!_[_0x5f65('0x17')](_0x4af285[_0x26c76f])&&_0x4af285[_0x26c76f]['state']===_0x5f65('0x60')&&_0x4af285[_0x26c76f][_0x5f65('0x61')]==='reachable'){_0x309b86[_0x5f65('0x62')](_0x4af285[_0x26c76f]['id']);}}}return _0x309b86;};exports[_0x5f65('0x63')]=function(_0x55bbcf){var _0xf796bd=moment()[_0x5f65('0x6')](0x0);var _0x112b5e=moment(_0x55bbcf)['milliseconds'](0x0);return _0xf796bd['diff'](_0x112b5e,_0x5f65('0x8'));};exports[_0x5f65('0x64')]=function(_0x20125a){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x20125a[_0x5f65('0x1b')],'ListId':_0x20125a['ListId'],'VoiceQueueId':_0x20125a[_0x5f65('0x1d')]||undefined,'CampaignId':_0x20125a[_0x5f65('0x65')]||undefined};};exports[_0x5f65('0x66')]=function(_0x1342f4){if(_0x1342f4===_0x5f65('0x44')||_0x1342f4===_0x5f65('0x67')||_0x1342f4===_0x5f65('0x5a')||_0x1342f4===_0x5f65('0x68')||_0x1342f4==='campaigntype'||_0x1342f4==='dialAnswer'||_0x1342f4===_0x5f65('0x3b')||_0x1342f4===_0x5f65('0x45')||_0x1342f4===_0x5f65('0x42')||_0x1342f4===_0x5f65('0x50')||_0x1342f4===_0x5f65('0x1a')||_0x1342f4==='scheduledat'||_0x1342f4===_0x5f65('0x4a')||_0x1342f4==='countcongestionretry'||_0x1342f4===_0x5f65('0x69')||_0x1342f4==='countglobal'||_0x1342f4==='callback'||_0x1342f4==='callbackuniqueid'||_0x1342f4===_0x5f65('0x6a')||_0x1342f4===_0x5f65('0x6b')||_0x1342f4===_0x5f65('0x1b')||_0x1342f4==='ListId'||_0x1342f4===_0x5f65('0x6c')||_0x1342f4===_0x5f65('0x1d')||_0x1342f4===_0x5f65('0x6d')||_0x1342f4===_0x5f65('0x6e')||_0x1342f4===_0x5f65('0x6f')||_0x1342f4===_0x5f65('0x70')||_0x1342f4===_0x5f65('0x71')||_0x1342f4===_0x5f65('0x72')||_0x1342f4===_0x5f65('0x73')||_0x1342f4===_0x5f65('0x74')||_0x1342f4===_0x5f65('0x75')||_0x1342f4===_0x5f65('0x76')||_0x1342f4===_0x5f65('0x77')||_0x1342f4===_0x5f65('0x78')||_0x1342f4==='xmd-callerid'||_0x1342f4===_0x5f65('0x79')||_0x1342f4===_0x5f65('0x7a')||_0x1342f4==='rtpaudioqos'||_0x1342f4===_0x5f65('0x7b')||_0x1342f4===_0x5f65('0x7c')||_0x1342f4===_0x5f65('0x7d')||_0x1342f4==='rtpaudioqosloss'||_0x1342f4===_0x5f65('0x7e')||_0x1342f4===_0x5f65('0x7f')||_0x1342f4===_0x5f65('0x80')||_0x1342f4===_0x5f65('0x81')||_0x1342f4===_0x5f65('0x7b')||_0x1342f4===_0x5f65('0x7c')||_0x1342f4===_0x5f65('0x7d')||_0x1342f4===_0x5f65('0x82')||_0x1342f4===_0x5f65('0x7e')||_0x1342f4===_0x5f65('0x7f')||_0x1342f4===_0x5f65('0x80')||_0x1342f4===_0x5f65('0x83')||_0x1342f4===_0x5f65('0x84')||_0x1342f4===_0x5f65('0x38')||_0x1342f4===_0x5f65('0x35')){return![];}return!![];};exports[_0x5f65('0x85')]=function(_0x532703,_0x1b047d){var _0x5c1ff3,_0x3c0afd,_0x1086cc;if(_0x1b047d<=0x0){_0x1b047d=0x1;}_0x5c1ff3=new RegExp(_0x5f65('0x86')+_0x1b047d+'}$');_0x3c0afd=Math[_0x5f65('0x87')](0xa,_0x1b047d-0x1);_0x1086cc=Math[_0x5f65('0x87')](0xa,_0x1b047d)-0x1;return util[_0x5f65('0x13')]('%s',_[_0x5f65('0x88')](_0x532703,_0x5c1ff3,_['random'](_0x3c0afd,_0x1086cc)));};exports['extractCalleridName']=function(_0x4406bb){var _0x37b5b2=_0x4406bb[_0x5f65('0x89')](/"(.*?)"/);return _0x37b5b2?_0x37b5b2[0x1]:_0x4406bb;};exports[_0x5f65('0x8a')]=function(_0xdc4421){var _0x3cd8c6=_0xdc4421[_0x5f65('0x89')](/<(.*?)>/);return _0x3cd8c6?_0x3cd8c6[0x1]:_0xdc4421;};
\ No newline at end of file
index 2f94475..624a5f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x181c=['queueadd','string','queueremove','queuepause','boolean','reload','voicechannel','voicequeuechannelhangup'];(function(_0x4f23bd,_0x160dba){var _0x2d9036=function(_0x15ce19){while(--_0x15ce19){_0x4f23bd['push'](_0x4f23bd['shift']());}};_0x2d9036(++_0x160dba);}(_0x181c,0x90));var _0xc181=function(_0x24392f,_0x15a3e5){_0x24392f=_0x24392f-0x0;var _0x591e33=_0x181c[_0x24392f];return _0x591e33;};'use strict';exports[_0xc181('0x0')]={'queue':{'type':_0xc181('0x1'),'required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':_0xc181('0x1'),'required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':'boolean','required':![]}};exports[_0xc181('0x2')]={'queue':{'type':'string','required':!![]},'interface':{'type':_0xc181('0x1'),'required':!![]}};exports[_0xc181('0x3')]={'interface':{'type':_0xc181('0x1'),'required':!![]},'paused':{'type':_0xc181('0x4')},'reason':{'type':_0xc181('0x1'),'required':![]}};exports[_0xc181('0x5')]={'module':{'type':'string','required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0xc181('0x1'),'required':!![]}};exports[_0xc181('0x6')]={'uniqueid':{'type':'string','required':!![]},'filename':{'type':'string'},'format':{'type':_0xc181('0x1')},'mixmonitorid':{'type':'string'}};exports[_0xc181('0x7')]={'uniqueid':{'type':_0xc181('0x1'),'required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':_0xc181('0x1'),'required':!![]},'exten':{'type':_0xc181('0x1'),'required':!![]},'context':{'type':_0xc181('0x1')}};
\ No newline at end of file
+var _0x66bf=['number','boolean','queueremove','queuepause','reload','voicequeuechannel','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','string'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x66bf,0x149));var _0xf66b=function(_0x45b275,_0x19500a){_0x45b275=_0x45b275-0x0;var _0x3f5781=_0x66bf[_0x45b275];return _0x3f5781;};'use strict';exports['queueadd']={'queue':{'type':_0xf66b('0x0'),'required':!![]},'interface':{'type':_0xf66b('0x0'),'required':!![]},'membername':{'type':_0xf66b('0x0'),'required':!![]},'penalty':{'type':_0xf66b('0x1'),'required':![]},'paused':{'type':_0xf66b('0x2'),'required':![]}};exports[_0xf66b('0x3')]={'queue':{'type':'string','required':!![]},'interface':{'type':_0xf66b('0x0'),'required':!![]}};exports[_0xf66b('0x4')]={'interface':{'type':_0xf66b('0x0'),'required':!![]},'paused':{'type':_0xf66b('0x2')},'reason':{'type':_0xf66b('0x0'),'required':![]}};exports[_0xf66b('0x5')]={'module':{'type':'string','required':![]}};exports[_0xf66b('0x6')]={'uniqueid':{'type':_0xf66b('0x0'),'required':!![]}};exports[_0xf66b('0x7')]={'uniqueid':{'type':'string','required':!![]},'filename':{'type':'string'},'format':{'type':_0xf66b('0x0')},'mixmonitorid':{'type':_0xf66b('0x0')}};exports[_0xf66b('0x8')]={'uniqueid':{'type':'string','required':!![]}};exports[_0xf66b('0x9')]={'uniqueid':{'type':'string','required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':_0xf66b('0x0')}};
\ No newline at end of file
index 08819b1..4558208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a83=['isUndefined','initTrunks','initVoiceQueues','initTriggers','initTemplates','initZendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','freshdeskAccounts','initZohoAccounts','initSugarcrmAccounts','initVtigerAccounts','vtigerAccounts','initServicenowAccounts','initFreshsalesAccounts','initVoiceQueueReports','groupBy','uniqueid','queuecallerexit','unmanaged','queuecallerabandon','sumHoldTime','diff','queuecallerjoinAt','seconds','queuecallerabandonAt','queuecallerexitAt','queuecallercomplete','initVoiceCallReports','duration','disposition','ANSWERED','billableseconds','initCampaigns','campaigns','dialQueueProject','SquareProject','initVoiceExtensions','merge','initFaxAccounts','faxAccounts','bluebird','../model/agent','../model/telephone','../model/trunk','../model/trigger','../model/template','../model/campaign','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/dynamics365Account','../model/faxAccount','agents','trunks','voiceQueues','triggers','templates','outbound','voiceExtensions','channels','queueChannels','timers','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','mapKeys','format','SIP/%s','name','hasOwnProperty','isNil','interface','total','answered','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','length','telephones'];(function(_0x265187,_0x5f552b){var _0x3045c7=function(_0x521a84){while(--_0x521a84){_0x265187['push'](_0x265187['shift']());}};_0x3045c7(++_0x5f552b);}(_0x6a83,0x103));var _0x36a8=function(_0x557122,_0x9558af){_0x557122=_0x557122-0x0;var _0x442316=_0x6a83[_0x557122];return _0x442316;};'use strict';var BPromise=require(_0x36a8('0x0'));var util=require('util');var _=require('lodash');var moment=require('moment');var Agent=require(_0x36a8('0x1'));var Telephone=require(_0x36a8('0x2'));var Trunk=require(_0x36a8('0x3'));var VoiceQueue=require('../model/voiceQueue');var Trigger=require(_0x36a8('0x4'));var Template=require(_0x36a8('0x5'));var Campaign=require(_0x36a8('0x6'));var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require(_0x36a8('0x7'));var SalesforceAccount=require(_0x36a8('0x8'));var FreshdeskAccount=require(_0x36a8('0x9'));var SugarcrmAccount=require(_0x36a8('0xa'));var ZohoAccount=require(_0x36a8('0xb'));var DeskAccount=require(_0x36a8('0xc'));var VtigerAccount=require(_0x36a8('0xd'));var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require(_0x36a8('0xe'));var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require(_0x36a8('0xf'));var Realtime=function(){this[_0x36a8('0x10')]={};this['telephones']={};this[_0x36a8('0x11')]={};this[_0x36a8('0x12')]={};this[_0x36a8('0x13')]={};this['campaigns']={};this[_0x36a8('0x14')]={};this[_0x36a8('0x15')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x36a8('0x16')]={};this[_0x36a8('0x17')]={};this[_0x36a8('0x18')]={};this['outboundChannels']={};this[_0x36a8('0x19')]={};this[_0x36a8('0x1a')]={};this[_0x36a8('0x1b')]={};this[_0x36a8('0x1c')]={};this[_0x36a8('0x1d')]={};this['freshdeskAccounts']={};this[_0x36a8('0x1e')]={};this[_0x36a8('0x1f')]={};this['vtigerAccounts']={};this[_0x36a8('0x20')]={};this[_0x36a8('0x21')]={};this[_0x36a8('0x22')]={};this['faxAccounts']={};};function freeIsNotKey(_0x3a4914,_0x2264e2,_0x4ef1b3){var _0x4568db=_[_0x36a8('0x23')](_0x3a4914,function(_0x4497cf,_0x517f1b){return _0x4497cf[_0x4ef1b3];});for(var _0x574047 in _0x2264e2){if(_0x2264e2['hasOwnProperty'](_0x574047)){if(!_0x4568db[_0x574047]){delete _0x2264e2[_0x574047];}}}}function freeIsNotKeySip(_0x3032e8,_0x15eb5d){var _0x19a23e=_[_0x36a8('0x23')](_0x3032e8,function(_0x39ce83,_0x2ca156){return util[_0x36a8('0x24')](_0x36a8('0x25'),_0x39ce83[_0x36a8('0x26')]);});for(var _0x1258f5 in _0x15eb5d){if(_0x15eb5d[_0x36a8('0x27')](_0x1258f5)){if(!_0x19a23e[_0x1258f5]){delete _0x15eb5d[_0x1258f5];}}}}function freeIsNotKeyAgent(_0x3a3672,_0x36c5fe){var _0x14d6a3=_[_0x36a8('0x23')](_0x3a3672,function(_0x1a670f,_0x5c06e9){var _0x471a01=_[_0x36a8('0x28')](_0x1a670f[_0x36a8('0x29')])?util['format'](_0x36a8('0x25'),_0x1a670f[_0x36a8('0x26')]):_0x1a670f[_0x36a8('0x29')];return _0x471a01;});for(var _0x5b219c in _0x36c5fe){if(_0x36c5fe[_0x36a8('0x27')](_0x5b219c)){if(!_0x14d6a3[_0x5b219c]){delete _0x36c5fe[_0x5b219c];}}}}function clearVoiceCallReports(_0x12042c){_0x12042c[_0x36a8('0x2a')]=0x0;_0x12042c[_0x36a8('0x2b')]=0x0;_0x12042c['sumHoldTime']=0x0;_0x12042c[_0x36a8('0x2c')]=0x0;_0x12042c[_0x36a8('0x2d')]=0x0;}function clearCampaigns(_0x2cce66){if(!_[_0x36a8('0x2e')](_0x2cce66)){for(var _0x2a09d4 in _0x2cce66){if(_0x2cce66[_0x36a8('0x27')](_0x2a09d4)){_0x2cce66[_0x2a09d4][_0x36a8('0x2f')]=0x0;_0x2cce66[_0x2a09d4][_0x36a8('0x30')]=0x0;}}}}function clearVoiceQueues(_0x4e65a2){if(!_[_0x36a8('0x2e')](_0x4e65a2)){for(var _0x2c1bbe in _0x4e65a2){if(_0x4e65a2[_0x36a8('0x27')](_0x2c1bbe)){_0x4e65a2[_0x2c1bbe]['total']=0x0;_0x4e65a2[_0x2c1bbe][_0x36a8('0x2b')]=0x0;_0x4e65a2[_0x2c1bbe]['unmanaged']=0x0;_0x4e65a2[_0x2c1bbe][_0x36a8('0x31')]=0x0;_0x4e65a2[_0x2c1bbe]['sumHoldTime']=0x0;_0x4e65a2[_0x2c1bbe]['sumDuration']=0x0;_0x4e65a2[_0x2c1bbe][_0x36a8('0x2d')]=0x0;_0x4e65a2[_0x2c1bbe][_0x36a8('0x32')]=0x0;_0x4e65a2[_0x2c1bbe][_0x36a8('0x33')]=0x0;_0x4e65a2[_0x2c1bbe][_0x36a8('0x34')]=0x0;_0x4e65a2[_0x2c1bbe][_0x36a8('0x35')]=0x0;_0x4e65a2[_0x2c1bbe]['outboundNoSuchCallsDay']=0x0;_0x4e65a2[_0x2c1bbe][_0x36a8('0x36')]=0x0;_0x4e65a2[_0x2c1bbe][_0x36a8('0x37')]=0x0;_0x4e65a2[_0x2c1bbe][_0x36a8('0x38')]=0x0;_0x4e65a2[_0x2c1bbe][_0x36a8('0x39')]=0x0;_0x4e65a2[_0x2c1bbe][_0x36a8('0x3a')]=0x0;_0x4e65a2[_0x2c1bbe][_0x36a8('0x3b')]=0x0;_0x4e65a2[_0x2c1bbe][_0x36a8('0x3c')]=0x0;_0x4e65a2[_0x2c1bbe][_0x36a8('0x32')]=0x0;_0x4e65a2[_0x2c1bbe][_0x36a8('0x3d')]=0x0;_0x4e65a2[_0x2c1bbe][_0x36a8('0x3e')]=!![];}}}}Realtime[_0x36a8('0x3f')][_0x36a8('0x40')]=function(_0x4e5d09,_0x14d577){for(var _0x2f97d2 in _0x14d577){if(_0x4e5d09[_0x36a8('0x27')](_0x2f97d2)){_0x4e5d09[_0x2f97d2]=_0x14d577[_0x2f97d2];}}};Realtime[_0x36a8('0x3f')][_0x36a8('0x41')]=function(){var _0x14acd4=this;return function(_0x36f731){if(_0x36f731){freeIsNotKeyAgent(_0x36f731,_0x14acd4[_0x36a8('0x10')]);for(var _0x38c0e4=0x0,_0x1287f3={},_0x985cdf={};_0x38c0e4<_0x36f731[_0x36a8('0x42')];_0x38c0e4+=0x1){_0x1287f3=_0x36f731[_0x38c0e4];var _0x44a090=_[_0x36a8('0x28')](_0x1287f3[_0x36a8('0x29')])?util['format'](_0x36a8('0x25'),_0x1287f3['name']):_0x1287f3[_0x36a8('0x29')];if(_['isUndefined'](_0x14acd4[_0x36a8('0x10')][_0x44a090])){_0x14acd4[_0x36a8('0x10')][_0x44a090]=new Agent(_0x1287f3);}else{_0x14acd4[_0x36a8('0x40')](_0x14acd4[_0x36a8('0x10')][_0x44a090],_0x1287f3);}}}return _0x14acd4['agents'];};};Realtime[_0x36a8('0x3f')]['initTelephones']=function(){var _0x2368f7=this;return function(_0x2fd706){if(_0x2fd706){freeIsNotKeySip(_0x2fd706,_0x2368f7[_0x36a8('0x43')]);for(var _0x1b9eef=0x0,_0x3e249d={},_0x4f5e0a={};_0x1b9eef<_0x2fd706[_0x36a8('0x42')];_0x1b9eef+=0x1){_0x3e249d=_0x2fd706[_0x1b9eef];if(_[_0x36a8('0x44')](_0x2368f7[_0x36a8('0x43')][util['format']('SIP/%s',_0x3e249d[_0x36a8('0x26')])])){_0x2368f7[_0x36a8('0x43')][util[_0x36a8('0x24')]('SIP/%s',_0x3e249d[_0x36a8('0x26')])]=new Telephone(_0x3e249d);}else{_0x2368f7['mergeFromDatabase'](_0x2368f7[_0x36a8('0x43')][util[_0x36a8('0x24')](_0x36a8('0x25'),_0x3e249d['name'])],_0x3e249d);}}}return _0x2368f7[_0x36a8('0x43')];};};Realtime[_0x36a8('0x3f')][_0x36a8('0x45')]=function(){var _0x548da=this;return function(_0xb5c602){if(_0xb5c602){freeIsNotKeySip(_0xb5c602,_0x548da[_0x36a8('0x11')]);for(var _0x5cca39=0x0,_0x1b0444={},_0x3f9569={};_0x5cca39<_0xb5c602['length'];_0x5cca39+=0x1){_0x1b0444=_0xb5c602[_0x5cca39];if(_['isUndefined'](_0x548da[_0x36a8('0x11')][util[_0x36a8('0x24')](_0x36a8('0x25'),_0x1b0444['name'])])){_0x548da[_0x36a8('0x11')][util[_0x36a8('0x24')](_0x36a8('0x25'),_0x1b0444[_0x36a8('0x26')])]=new Trunk(_0x1b0444);}else{_0x548da[_0x36a8('0x40')](_0x548da['trunks'][util[_0x36a8('0x24')](_0x36a8('0x25'),_0x1b0444[_0x36a8('0x26')])],_0x1b0444);}}}return _0x548da[_0x36a8('0x11')];};};Realtime[_0x36a8('0x3f')][_0x36a8('0x46')]=function(){var _0x1c90d3=this;return function(_0x543727){if(_0x543727){freeIsNotKey(_0x543727,_0x1c90d3[_0x36a8('0x12')],_0x36a8('0x26'));for(var _0x333493=0x0,_0xaa8589={},_0x58469f={};_0x333493<_0x543727['length'];_0x333493+=0x1){_0xaa8589=_0x543727[_0x333493];if(_[_0x36a8('0x44')](_0x1c90d3[_0x36a8('0x12')][_0xaa8589['name']])){_0x1c90d3[_0x36a8('0x12')][_0xaa8589['name']]=new VoiceQueue(_0xaa8589);}else{_0x1c90d3['mergeFromDatabase'](_0x1c90d3['voiceQueues'][_0xaa8589['name']],_0xaa8589);}}}return _0x1c90d3['voiceQueues'];};};Realtime['prototype'][_0x36a8('0x47')]=function(){var _0x23714f=this;return function(_0x2e19e7){if(_0x2e19e7){freeIsNotKey(_0x2e19e7,_0x23714f[_0x36a8('0x13')],'id');for(var _0x8c9a6=0x0,_0xb61100={},_0xccd0d0={};_0x8c9a6<_0x2e19e7[_0x36a8('0x42')];_0x8c9a6+=0x1){_0xb61100=_0x2e19e7[_0x8c9a6];if(_[_0x36a8('0x44')](_0x23714f[_0x36a8('0x13')][_0xb61100['id']])){_0x23714f[_0x36a8('0x13')][_0xb61100['id']]=new Trigger(_0xb61100);}else{_0x23714f[_0x36a8('0x40')](_0x23714f[_0x36a8('0x13')][_0xb61100['id']],_0xb61100);}}}return _0x23714f[_0x36a8('0x13')];};};Realtime[_0x36a8('0x3f')][_0x36a8('0x48')]=function(){var _0x5f0c53=this;return function(_0x5d0ca6){if(_0x5d0ca6){freeIsNotKey(_0x5d0ca6,_0x5f0c53[_0x36a8('0x14')],'id');for(var _0x3f2dca=0x0,_0x2d36be={},_0x455ae6={};_0x3f2dca<_0x5d0ca6[_0x36a8('0x42')];_0x3f2dca+=0x1){_0x2d36be=_0x5d0ca6[_0x3f2dca];if(_['isUndefined'](_0x5f0c53[_0x36a8('0x14')][_0x2d36be['id']])){_0x5f0c53['templates'][_0x2d36be['id']]=new Template(_0x2d36be);}else{_0x5f0c53['mergeFromDatabase'](_0x5f0c53['templates'][_0x2d36be['id']],_0x2d36be);}}}return _0x5f0c53[_0x36a8('0x14')];};};Realtime[_0x36a8('0x3f')][_0x36a8('0x49')]=function(){var _0x3f167d=this;return function(_0x5a0db3){if(_0x5a0db3){freeIsNotKey(_0x5a0db3,_0x3f167d[_0x36a8('0x1b')],'id');for(var _0x59c2fa=0x0,_0x40b17f={},_0x2206c6={};_0x59c2fa<_0x5a0db3['length'];_0x59c2fa+=0x1){_0x40b17f=_0x5a0db3[_0x59c2fa];if(_['isUndefined'](_0x3f167d['zendeskAccounts'][_0x40b17f['id']])){_0x3f167d['zendeskAccounts'][_0x40b17f['id']]=new ZendeskAccount(_0x40b17f);}else{_0x3f167d[_0x36a8('0x40')](_0x3f167d[_0x36a8('0x1b')][_0x40b17f['id']],_0x40b17f);}}}return _0x3f167d[_0x36a8('0x1b')];};};Realtime[_0x36a8('0x3f')][_0x36a8('0x4a')]=function(){var _0x50c7e5=this;return function(_0x25ded9){if(_0x25ded9){freeIsNotKey(_0x25ded9,_0x50c7e5[_0x36a8('0x1c')],'id');for(var _0x16f137=0x0,_0x948571={},_0x5f4382={};_0x16f137<_0x25ded9[_0x36a8('0x42')];_0x16f137+=0x1){_0x948571=_0x25ded9[_0x16f137];if(_['isUndefined'](_0x50c7e5[_0x36a8('0x1c')][_0x948571['id']])){_0x50c7e5[_0x36a8('0x1c')][_0x948571['id']]=new SalesforceAccount(_0x948571);}else{_0x50c7e5[_0x36a8('0x40')](_0x50c7e5['salesforceAccounts'][_0x948571['id']],_0x948571);}}}return _0x50c7e5['salesforceAccounts'];};};Realtime[_0x36a8('0x3f')][_0x36a8('0x4b')]=function(){var _0x322a1b=this;return function(_0x18c1f1){if(_0x18c1f1){freeIsNotKey(_0x18c1f1,_0x322a1b['freshdeskAccounts'],'id');for(var _0x33b4f4=0x0,_0x4a6e66={},_0x500a5f={};_0x33b4f4<_0x18c1f1['length'];_0x33b4f4+=0x1){_0x4a6e66=_0x18c1f1[_0x33b4f4];if(_[_0x36a8('0x44')](_0x322a1b[_0x36a8('0x4c')][_0x4a6e66['id']])){_0x322a1b[_0x36a8('0x4c')][_0x4a6e66['id']]=new FreshdeskAccount(_0x4a6e66);}else{_0x322a1b[_0x36a8('0x40')](_0x322a1b[_0x36a8('0x4c')][_0x4a6e66['id']],_0x4a6e66);}}}return _0x322a1b['freshdeskAccounts'];};};Realtime['prototype'][_0x36a8('0x4d')]=function(){var _0x18d2bf=this;return function(_0x1bac1e){if(_0x1bac1e){freeIsNotKey(_0x1bac1e,_0x18d2bf['zohoAccounts'],'id');for(var _0x14a13b=0x0,_0x54873a={},_0x38b3a8={};_0x14a13b<_0x1bac1e[_0x36a8('0x42')];_0x14a13b+=0x1){_0x54873a=_0x1bac1e[_0x14a13b];if(_[_0x36a8('0x44')](_0x18d2bf[_0x36a8('0x1e')][_0x54873a['id']])){_0x18d2bf['zohoAccounts'][_0x54873a['id']]=new ZohoAccount(_0x54873a);}else{_0x18d2bf[_0x36a8('0x40')](_0x18d2bf[_0x36a8('0x1e')][_0x54873a['id']],_0x54873a);}}}return _0x18d2bf[_0x36a8('0x1e')];};};Realtime[_0x36a8('0x3f')]['initDeskAccounts']=function(){var _0x3d0102=this;return function(_0x2b09a0){if(_0x2b09a0){freeIsNotKey(_0x2b09a0,_0x3d0102['deskAccounts'],'id');for(var _0x4c1118=0x0,_0x38f7db={},_0x2a11f1={};_0x4c1118<_0x2b09a0[_0x36a8('0x42')];_0x4c1118+=0x1){_0x38f7db=_0x2b09a0[_0x4c1118];if(_[_0x36a8('0x44')](_0x3d0102['deskAccounts'][_0x38f7db['id']])){_0x3d0102[_0x36a8('0x1f')][_0x38f7db['id']]=new DeskAccount(_0x38f7db);}else{_0x3d0102[_0x36a8('0x40')](_0x3d0102[_0x36a8('0x1f')][_0x38f7db['id']],_0x38f7db);}}}return _0x3d0102['deskAccounts'];};};Realtime[_0x36a8('0x3f')][_0x36a8('0x4e')]=function(){var _0x45875e=this;return function(_0x22e17d){if(_0x22e17d){freeIsNotKey(_0x22e17d,_0x45875e[_0x36a8('0x1d')],'id');for(var _0x497b8b=0x0,_0x314e75={},_0x5c00e2={};_0x497b8b<_0x22e17d['length'];_0x497b8b+=0x1){_0x314e75=_0x22e17d[_0x497b8b];if(_[_0x36a8('0x44')](_0x45875e[_0x36a8('0x1d')][_0x314e75['id']])){_0x45875e['sugarcrmAccounts'][_0x314e75['id']]=new SugarcrmAccount(_0x314e75);}else{_0x45875e['mergeFromDatabase'](_0x45875e[_0x36a8('0x1d')][_0x314e75['id']],_0x314e75);}}}return _0x45875e[_0x36a8('0x1d')];};};Realtime[_0x36a8('0x3f')][_0x36a8('0x4f')]=function(){var _0x43c566=this;return function(_0x44d527){if(_0x44d527){freeIsNotKey(_0x44d527,_0x43c566[_0x36a8('0x50')],'id');for(var _0x4c09fb=0x0,_0x173aac={},_0x2c6157={};_0x4c09fb<_0x44d527[_0x36a8('0x42')];_0x4c09fb+=0x1){_0x173aac=_0x44d527[_0x4c09fb];if(_[_0x36a8('0x44')](_0x43c566['vtigerAccounts'][_0x173aac['id']])){_0x43c566[_0x36a8('0x50')][_0x173aac['id']]=new VtigerAccount(_0x173aac);}else{_0x43c566[_0x36a8('0x40')](_0x43c566[_0x36a8('0x50')][_0x173aac['id']],_0x173aac);}}}return _0x43c566[_0x36a8('0x50')];};};Realtime['prototype'][_0x36a8('0x51')]=function(){var _0x5ad334=this;return function(_0x2bb150){if(_0x2bb150){freeIsNotKey(_0x2bb150,_0x5ad334[_0x36a8('0x20')],'id');for(var _0x948c5b=0x0,_0x4edd63={},_0xccd770={};_0x948c5b<_0x2bb150[_0x36a8('0x42')];_0x948c5b+=0x1){_0x4edd63=_0x2bb150[_0x948c5b];if(_[_0x36a8('0x44')](_0x5ad334['servicenowAccounts'][_0x4edd63['id']])){_0x5ad334[_0x36a8('0x20')][_0x4edd63['id']]=new ServicenowAccount(_0x4edd63);}else{_0x5ad334[_0x36a8('0x40')](_0x5ad334[_0x36a8('0x20')][_0x4edd63['id']],_0x4edd63);}}}return _0x5ad334[_0x36a8('0x20')];};};Realtime[_0x36a8('0x3f')]['initDynamics365Accounts']=function(){var _0x2eb39f=this;return function(_0x183015){if(_0x183015){freeIsNotKey(_0x183015,_0x2eb39f[_0x36a8('0x21')],'id');for(var _0x1bbfd4=0x0,_0x23f0af={},_0x5f4874={};_0x1bbfd4<_0x183015[_0x36a8('0x42')];_0x1bbfd4+=0x1){_0x23f0af=_0x183015[_0x1bbfd4];if(_[_0x36a8('0x44')](_0x2eb39f[_0x36a8('0x21')][_0x23f0af['id']])){_0x2eb39f[_0x36a8('0x21')][_0x23f0af['id']]=new Dynamics365Account(_0x23f0af);}else{_0x2eb39f[_0x36a8('0x40')](_0x2eb39f[_0x36a8('0x21')][_0x23f0af['id']],_0x23f0af);}}}return _0x2eb39f[_0x36a8('0x21')];};};Realtime[_0x36a8('0x3f')][_0x36a8('0x52')]=function(){var _0x168a7d=this;return function(_0x212995){if(_0x212995){freeIsNotKey(_0x212995,_0x168a7d[_0x36a8('0x22')],'id');for(var _0x2fe9f9=0x0,_0x48e49a={},_0xb65a1e={};_0x2fe9f9<_0x212995[_0x36a8('0x42')];_0x2fe9f9+=0x1){_0x48e49a=_0x212995[_0x2fe9f9];if(_[_0x36a8('0x44')](_0x168a7d[_0x36a8('0x22')][_0x48e49a['id']])){_0x168a7d[_0x36a8('0x22')][_0x48e49a['id']]=new FreshsalesAccount(_0x48e49a);}else{_0x168a7d[_0x36a8('0x40')](_0x168a7d[_0x36a8('0x22')][_0x48e49a['id']],_0x48e49a);}}}return _0x168a7d[_0x36a8('0x22')];};};Realtime[_0x36a8('0x3f')]['initVoiceQueueHopperHistory']=function(){var _0x2cb550=this;return function(_0x30c7fb){for(var _0x22cbcb=0x0;_0x22cbcb<_0x30c7fb['length'];_0x22cbcb+=0x1){_['merge'](_0x2cb550[_0x36a8('0x12')][_0x30c7fb[_0x22cbcb][_0x36a8('0x26')]],_0x30c7fb[_0x22cbcb]);}return _0x2cb550['voiceQueues'];};};Realtime[_0x36a8('0x3f')][_0x36a8('0x53')]=function(){var _0x5cf685=this;return function(_0x402034){clearVoiceQueues(_0x5cf685[_0x36a8('0x12')]);if(_0x402034){_0x402034=_[_0x36a8('0x54')](_0x402034,_0x36a8('0x55'));for(var _0x2b51b9 in _0x402034){if(_0x402034[_0x36a8('0x27')](_0x2b51b9)){var _0x37a194={};for(var _0x40dc83=0x0;_0x40dc83<_0x402034[_0x2b51b9][_0x36a8('0x42')];_0x40dc83+=0x1){var _0x3c4145=_0x402034[_0x2b51b9][_0x40dc83]['queue'];if(_0x5cf685[_0x36a8('0x12')][_0x3c4145]){if(_0x402034[_0x2b51b9][_0x40dc83][_0x36a8('0x56')]){_0x5cf685[_0x36a8('0x12')][_0x3c4145][_0x36a8('0x57')]+=0x1;}if(_0x402034[_0x2b51b9][_0x40dc83][_0x36a8('0x58')]){_0x5cf685[_0x36a8('0x12')][_0x3c4145]['abandoned']+=0x1;}_0x5cf685['voiceQueues'][_0x3c4145][_0x36a8('0x59')]+=moment(_0x402034[_0x2b51b9][_0x40dc83]['queuecallerleaveAt'])[_0x36a8('0x5a')](moment(_0x402034[_0x2b51b9][_0x40dc83][_0x36a8('0x5b')]),_0x36a8('0x5c'))||0x0;if(_0x40dc83===_0x402034[_0x2b51b9]['length']-0x1){_0x5cf685[_0x36a8('0x12')][_0x3c4145][_0x36a8('0x2c')]+=moment(_0x402034[_0x2b51b9][_0x40dc83]['queuecallercompleteAt']||_0x402034[_0x2b51b9][_0x40dc83][_0x36a8('0x5d')]||_0x402034[_0x2b51b9][_0x40dc83][_0x36a8('0x5e')])[_0x36a8('0x5a')](moment(_0x402034[_0x2b51b9][_0x40dc83][_0x36a8('0x5b')]),_0x36a8('0x5c'))||0x0;_0x5cf685[_0x36a8('0x12')][_0x3c4145][_0x36a8('0x2a')]+=0x1;if(_0x402034[_0x2b51b9][_0x40dc83][_0x36a8('0x5f')]){_0x5cf685[_0x36a8('0x12')][_0x3c4145]['answered']+=0x1;_0x5cf685['voiceQueues'][_0x3c4145]['sumBillable']+=moment(_0x402034[_0x2b51b9][_0x40dc83]['queuecallercompleteAt'])['diff'](moment(_0x402034[_0x2b51b9][_0x40dc83]['queuecallerleaveAt']),_0x36a8('0x5c'))||0x0;}}else{_0x5cf685[_0x36a8('0x12')][_0x3c4145]['sumDuration']+=_0x5cf685[_0x36a8('0x12')][_0x3c4145][_0x36a8('0x59')]||0x0;}}}}}}return _0x5cf685[_0x36a8('0x12')];};};Realtime['prototype'][_0x36a8('0x60')]=function(){var _0x8364b7=this;return function(_0x53d462){clearVoiceCallReports(_0x8364b7[_0x36a8('0x15')]);if(_0x53d462){for(var _0x177355=0x0;_0x177355<_0x53d462[_0x36a8('0x42')];_0x177355+=0x1){_0x8364b7['outbound'][_0x36a8('0x2a')]+=0x1;_0x8364b7[_0x36a8('0x15')]['sumDuration']+=_0x53d462[_0x177355][_0x36a8('0x61')];if(_0x53d462[_0x177355][_0x36a8('0x62')]===_0x36a8('0x63')){_0x8364b7['outbound'][_0x36a8('0x2b')]+=0x1;_0x8364b7[_0x36a8('0x15')][_0x36a8('0x59')]+=_0x53d462[_0x177355][_0x36a8('0x61')]-_0x53d462[_0x177355][_0x36a8('0x64')]||0x0;_0x8364b7[_0x36a8('0x15')][_0x36a8('0x2d')]+=_0x53d462[_0x177355][_0x36a8('0x64')];}}}return _0x8364b7['outbound'];};};Realtime[_0x36a8('0x3f')][_0x36a8('0x65')]=function(){var _0x5e5eff=this;return function(_0x218ac9){if(_0x218ac9){freeIsNotKey(_0x218ac9,_0x5e5eff[_0x36a8('0x66')],_0x36a8('0x26'));for(var _0x7969=0x0,_0x54114b={};_0x7969<_0x218ac9['length'];_0x7969+=0x1){_0x54114b=_0x218ac9[_0x7969];if(_[_0x36a8('0x44')](_0x5e5eff[_0x36a8('0x66')][_0x54114b[_0x36a8('0x26')]])){_0x5e5eff[_0x36a8('0x66')][_0x54114b[_0x36a8('0x26')]]=new Campaign(_0x54114b);}else{_0x5e5eff['mergeFromDatabase'](_0x5e5eff[_0x36a8('0x66')][_0x54114b[_0x36a8('0x26')]],_0x54114b);_0x5e5eff[_0x36a8('0x66')][_0x54114b[_0x36a8('0x26')]][_0x36a8('0x67')]=_0x54114b[_0x36a8('0x68')]?_0x54114b[_0x36a8('0x68')][_0x36a8('0x26')]:undefined;}}}return _0x5e5eff[_0x36a8('0x66')];};};Realtime[_0x36a8('0x3f')][_0x36a8('0x69')]=function(){var _0xaaf66f=this;return function(_0x33bba8){if(_0x33bba8){freeIsNotKey(_0x33bba8,_0xaaf66f[_0x36a8('0x16')],'id');for(var _0x3dfb2b=0x0,_0x5b75ae={};_0x3dfb2b<_0x33bba8[_0x36a8('0x42')];_0x3dfb2b+=0x1){_0x5b75ae=_0x33bba8[_0x3dfb2b];if(_[_0x36a8('0x44')](_0xaaf66f['voiceExtensions'][_0x5b75ae['id']])){_0xaaf66f[_0x36a8('0x16')][_0x5b75ae['id']]=new VoiceExtension(_0x5b75ae);}else{_0xaaf66f['mergeFromDatabase'](_0xaaf66f[_0x36a8('0x16')][_0x5b75ae['id']],_0x5b75ae);}}}return _0xaaf66f['voiceExtensions'];};};Realtime[_0x36a8('0x3f')]['initCampaignHopperHistory']=function(){var _0x5ccd2e=this;return function(_0x1fdcc4){clearCampaigns(_0x5ccd2e['campaigns']);for(var _0x14d689=0x0;_0x14d689<_0x1fdcc4[_0x36a8('0x42')];_0x14d689+=0x1){_[_0x36a8('0x6a')](_0x5ccd2e[_0x36a8('0x66')][_0x1fdcc4[_0x14d689][_0x36a8('0x26')]],_0x1fdcc4[_0x14d689]);}return _0x5ccd2e[_0x36a8('0x66')];};};Realtime['prototype'][_0x36a8('0x6b')]=function(){var _0x5846ae=this;return function(_0x3c24a1){if(_0x3c24a1){freeIsNotKey(_0x3c24a1,_0x5846ae[_0x36a8('0x6c')],'id');for(var _0x436982=0x0,_0x39732a={},_0x3752b5={};_0x436982<_0x3c24a1[_0x36a8('0x42')];_0x436982+=0x1){_0x39732a=_0x3c24a1[_0x436982];if(_[_0x36a8('0x44')](_0x5846ae['faxAccounts'][_0x39732a['id']])){_0x5846ae[_0x36a8('0x6c')][_0x39732a['id']]=new FaxAccount(_0x39732a);}else{_0x5846ae['mergeFromDatabase'](_0x5846ae[_0x36a8('0x6c')][_0x39732a['id']],_0x39732a);}}}return _0x5846ae['faxAccounts'];};};module['exports']=Realtime;
\ No newline at end of file
+var _0x7798=['queue','queuecallerexit','unmanaged','queuecallerabandon','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','queuecallercomplete','answered','outbound','duration','ANSWERED','billableseconds','initCampaigns','campaigns','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','lodash','moment','../model/agent','../model/voiceQueue','../model/trigger','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','telephones','trunks','voiceQueues','templates','voiceExtensions','channels','queueChannels','timers','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','SIP/%s','name','isNil','interface','total','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','abandoned','sumHoldTime','outboundAnswerAgiCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','mergeFromDatabase','agents','length','initTelephones','isUndefined','prototype','initTrunks','initTriggers','triggers','initTemplates','initZendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','vtigerAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','uniqueid'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7798,0x1be));var _0x8779=function(_0x40e486,_0x2eac53){_0x40e486=_0x40e486-0x0;var _0x1c070f=_0x7798[_0x40e486];return _0x1c070f;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require(_0x8779('0x0'));var moment=require(_0x8779('0x1'));var Agent=require(_0x8779('0x2'));var Telephone=require('../model/telephone');var Trunk=require('../model/trunk');var VoiceQueue=require(_0x8779('0x3'));var Trigger=require(_0x8779('0x4'));var Template=require('../model/template');var Campaign=require(_0x8779('0x5'));var VoiceExtension=require(_0x8779('0x6'));var ZendeskAccount=require(_0x8779('0x7'));var SalesforceAccount=require('../model/salesforceAccount');var FreshdeskAccount=require(_0x8779('0x8'));var SugarcrmAccount=require(_0x8779('0x9'));var ZohoAccount=require(_0x8779('0xa'));var DeskAccount=require(_0x8779('0xb'));var VtigerAccount=require(_0x8779('0xc'));var ServicenowAccount=require(_0x8779('0xd'));var Dynamics365Account=require(_0x8779('0xe'));var FreshsalesAccount=require(_0x8779('0xf'));var FaxAccount=require(_0x8779('0x10'));var Realtime=function(){this['agents']={};this[_0x8779('0x11')]={};this[_0x8779('0x12')]={};this[_0x8779('0x13')]={};this['triggers']={};this['campaigns']={};this[_0x8779('0x14')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x8779('0x15')]={};this[_0x8779('0x16')]={};this[_0x8779('0x17')]={};this['outboundChannels']={};this[_0x8779('0x18')]={};this[_0x8779('0x19')]={};this[_0x8779('0x1a')]={};this[_0x8779('0x1b')]={};this[_0x8779('0x1c')]={};this[_0x8779('0x1d')]={};this[_0x8779('0x1e')]={};this[_0x8779('0x1f')]={};this['vtigerAccounts']={};this[_0x8779('0x20')]={};this[_0x8779('0x21')]={};this[_0x8779('0x22')]={};this[_0x8779('0x23')]={};};function freeIsNotKey(_0x4d4e96,_0x516ad6,_0x4d84c2){var _0x35554a=_[_0x8779('0x24')](_0x4d4e96,function(_0x470929,_0x2b4004){return _0x470929[_0x4d84c2];});for(var _0x3fa8f7 in _0x516ad6){if(_0x516ad6[_0x8779('0x25')](_0x3fa8f7)){if(!_0x35554a[_0x3fa8f7]){delete _0x516ad6[_0x3fa8f7];}}}}function freeIsNotKeySip(_0x5ee25c,_0x42b346){var _0xdc46cb=_[_0x8779('0x24')](_0x5ee25c,function(_0x59c0d3,_0x50b41c){return util[_0x8779('0x26')](_0x8779('0x27'),_0x59c0d3[_0x8779('0x28')]);});for(var _0x4532df in _0x42b346){if(_0x42b346['hasOwnProperty'](_0x4532df)){if(!_0xdc46cb[_0x4532df]){delete _0x42b346[_0x4532df];}}}}function freeIsNotKeyAgent(_0x3e97a0,_0x389c82){var _0x117f6a=_[_0x8779('0x24')](_0x3e97a0,function(_0x3644b1,_0x2dcfd5){var _0x1e3b10=_[_0x8779('0x29')](_0x3644b1['interface'])?util['format'](_0x8779('0x27'),_0x3644b1[_0x8779('0x28')]):_0x3644b1[_0x8779('0x2a')];return _0x1e3b10;});for(var _0xbeebf2 in _0x389c82){if(_0x389c82[_0x8779('0x25')](_0xbeebf2)){if(!_0x117f6a[_0xbeebf2]){delete _0x389c82[_0xbeebf2];}}}}function clearVoiceCallReports(_0x2e72a9){_0x2e72a9[_0x8779('0x2b')]=0x0;_0x2e72a9['answered']=0x0;_0x2e72a9['sumHoldTime']=0x0;_0x2e72a9[_0x8779('0x2c')]=0x0;_0x2e72a9[_0x8779('0x2d')]=0x0;}function clearCampaigns(_0x5df7eb){if(!_[_0x8779('0x2e')](_0x5df7eb)){for(var _0x5373bf in _0x5df7eb){if(_0x5df7eb['hasOwnProperty'](_0x5373bf)){_0x5df7eb[_0x5373bf][_0x8779('0x2f')]=0x0;_0x5df7eb[_0x5373bf]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0x2dab24){if(!_[_0x8779('0x2e')](_0x2dab24)){for(var _0x663876 in _0x2dab24){if(_0x2dab24[_0x8779('0x25')](_0x663876)){_0x2dab24[_0x663876][_0x8779('0x2b')]=0x0;_0x2dab24[_0x663876]['answered']=0x0;_0x2dab24[_0x663876]['unmanaged']=0x0;_0x2dab24[_0x663876][_0x8779('0x30')]=0x0;_0x2dab24[_0x663876][_0x8779('0x31')]=0x0;_0x2dab24[_0x663876][_0x8779('0x2c')]=0x0;_0x2dab24[_0x663876][_0x8779('0x2d')]=0x0;_0x2dab24[_0x663876][_0x8779('0x32')]=0x0;_0x2dab24[_0x663876]['outboundNoAnswerCallsDay']=0x0;_0x2dab24[_0x663876]['outboundBusyCallsDay']=0x0;_0x2dab24[_0x663876][_0x8779('0x33')]=0x0;_0x2dab24[_0x663876][_0x8779('0x34')]=0x0;_0x2dab24[_0x663876][_0x8779('0x35')]=0x0;_0x2dab24[_0x663876][_0x8779('0x36')]=0x0;_0x2dab24[_0x663876][_0x8779('0x37')]=0x0;_0x2dab24[_0x663876]['outboundBlacklistCallsDay']=0x0;_0x2dab24[_0x663876][_0x8779('0x38')]=0x0;_0x2dab24[_0x663876][_0x8779('0x39')]=0x0;_0x2dab24[_0x663876]['outboundReCallsDay']=0x0;_0x2dab24[_0x663876][_0x8779('0x32')]=0x0;_0x2dab24[_0x663876][_0x8779('0x3a')]=0x0;_0x2dab24[_0x663876]['queueStatusComplete']=!![];}}}}Realtime['prototype'][_0x8779('0x3b')]=function(_0x186a7e,_0x15cee6){for(var _0x369bfc in _0x15cee6){if(_0x186a7e[_0x8779('0x25')](_0x369bfc)){_0x186a7e[_0x369bfc]=_0x15cee6[_0x369bfc];}}};Realtime['prototype']['initAgents']=function(){var _0x4d73bf=this;return function(_0x33433e){if(_0x33433e){freeIsNotKeyAgent(_0x33433e,_0x4d73bf[_0x8779('0x3c')]);for(var _0x411757=0x0,_0x5e251f={},_0x7ca32={};_0x411757<_0x33433e[_0x8779('0x3d')];_0x411757+=0x1){_0x5e251f=_0x33433e[_0x411757];var _0x3a6aa6=_[_0x8779('0x29')](_0x5e251f[_0x8779('0x2a')])?util[_0x8779('0x26')](_0x8779('0x27'),_0x5e251f[_0x8779('0x28')]):_0x5e251f[_0x8779('0x2a')];if(_['isUndefined'](_0x4d73bf['agents'][_0x3a6aa6])){_0x4d73bf[_0x8779('0x3c')][_0x3a6aa6]=new Agent(_0x5e251f);}else{_0x4d73bf['mergeFromDatabase'](_0x4d73bf[_0x8779('0x3c')][_0x3a6aa6],_0x5e251f);}}}return _0x4d73bf[_0x8779('0x3c')];};};Realtime['prototype'][_0x8779('0x3e')]=function(){var _0x536a7c=this;return function(_0x1cd1b2){if(_0x1cd1b2){freeIsNotKeySip(_0x1cd1b2,_0x536a7c[_0x8779('0x11')]);for(var _0x382c1e=0x0,_0x16d56b={},_0x1b7452={};_0x382c1e<_0x1cd1b2[_0x8779('0x3d')];_0x382c1e+=0x1){_0x16d56b=_0x1cd1b2[_0x382c1e];if(_[_0x8779('0x3f')](_0x536a7c[_0x8779('0x11')][util['format'](_0x8779('0x27'),_0x16d56b['name'])])){_0x536a7c['telephones'][util[_0x8779('0x26')]('SIP/%s',_0x16d56b[_0x8779('0x28')])]=new Telephone(_0x16d56b);}else{_0x536a7c[_0x8779('0x3b')](_0x536a7c[_0x8779('0x11')][util['format'](_0x8779('0x27'),_0x16d56b[_0x8779('0x28')])],_0x16d56b);}}}return _0x536a7c[_0x8779('0x11')];};};Realtime[_0x8779('0x40')][_0x8779('0x41')]=function(){var _0x35d6c4=this;return function(_0x46d504){if(_0x46d504){freeIsNotKeySip(_0x46d504,_0x35d6c4[_0x8779('0x12')]);for(var _0x5c1aaf=0x0,_0x26234e={},_0x2ebe90={};_0x5c1aaf<_0x46d504[_0x8779('0x3d')];_0x5c1aaf+=0x1){_0x26234e=_0x46d504[_0x5c1aaf];if(_['isUndefined'](_0x35d6c4[_0x8779('0x12')][util[_0x8779('0x26')](_0x8779('0x27'),_0x26234e['name'])])){_0x35d6c4[_0x8779('0x12')][util[_0x8779('0x26')](_0x8779('0x27'),_0x26234e[_0x8779('0x28')])]=new Trunk(_0x26234e);}else{_0x35d6c4[_0x8779('0x3b')](_0x35d6c4[_0x8779('0x12')][util[_0x8779('0x26')](_0x8779('0x27'),_0x26234e[_0x8779('0x28')])],_0x26234e);}}}return _0x35d6c4['trunks'];};};Realtime[_0x8779('0x40')]['initVoiceQueues']=function(){var _0x1b906c=this;return function(_0x23322b){if(_0x23322b){freeIsNotKey(_0x23322b,_0x1b906c[_0x8779('0x13')],_0x8779('0x28'));for(var _0x18e818=0x0,_0x4e799a={},_0x301149={};_0x18e818<_0x23322b[_0x8779('0x3d')];_0x18e818+=0x1){_0x4e799a=_0x23322b[_0x18e818];if(_[_0x8779('0x3f')](_0x1b906c[_0x8779('0x13')][_0x4e799a[_0x8779('0x28')]])){_0x1b906c[_0x8779('0x13')][_0x4e799a['name']]=new VoiceQueue(_0x4e799a);}else{_0x1b906c[_0x8779('0x3b')](_0x1b906c[_0x8779('0x13')][_0x4e799a['name']],_0x4e799a);}}}return _0x1b906c[_0x8779('0x13')];};};Realtime[_0x8779('0x40')][_0x8779('0x42')]=function(){var _0x467f23=this;return function(_0x1f1db4){if(_0x1f1db4){freeIsNotKey(_0x1f1db4,_0x467f23[_0x8779('0x43')],'id');for(var _0xa0cddb=0x0,_0x5596b6={},_0x34d9a7={};_0xa0cddb<_0x1f1db4[_0x8779('0x3d')];_0xa0cddb+=0x1){_0x5596b6=_0x1f1db4[_0xa0cddb];if(_[_0x8779('0x3f')](_0x467f23[_0x8779('0x43')][_0x5596b6['id']])){_0x467f23[_0x8779('0x43')][_0x5596b6['id']]=new Trigger(_0x5596b6);}else{_0x467f23[_0x8779('0x3b')](_0x467f23[_0x8779('0x43')][_0x5596b6['id']],_0x5596b6);}}}return _0x467f23[_0x8779('0x43')];};};Realtime['prototype'][_0x8779('0x44')]=function(){var _0x18bdc0=this;return function(_0x439c71){if(_0x439c71){freeIsNotKey(_0x439c71,_0x18bdc0['templates'],'id');for(var _0x445f42=0x0,_0xc27fdc={},_0x1d248d={};_0x445f42<_0x439c71[_0x8779('0x3d')];_0x445f42+=0x1){_0xc27fdc=_0x439c71[_0x445f42];if(_[_0x8779('0x3f')](_0x18bdc0[_0x8779('0x14')][_0xc27fdc['id']])){_0x18bdc0[_0x8779('0x14')][_0xc27fdc['id']]=new Template(_0xc27fdc);}else{_0x18bdc0['mergeFromDatabase'](_0x18bdc0['templates'][_0xc27fdc['id']],_0xc27fdc);}}}return _0x18bdc0[_0x8779('0x14')];};};Realtime['prototype'][_0x8779('0x45')]=function(){var _0x3dc4e7=this;return function(_0x19b0e3){if(_0x19b0e3){freeIsNotKey(_0x19b0e3,_0x3dc4e7[_0x8779('0x1a')],'id');for(var _0xaef5c2=0x0,_0x323c88={},_0x17e450={};_0xaef5c2<_0x19b0e3[_0x8779('0x3d')];_0xaef5c2+=0x1){_0x323c88=_0x19b0e3[_0xaef5c2];if(_[_0x8779('0x3f')](_0x3dc4e7[_0x8779('0x1a')][_0x323c88['id']])){_0x3dc4e7[_0x8779('0x1a')][_0x323c88['id']]=new ZendeskAccount(_0x323c88);}else{_0x3dc4e7[_0x8779('0x3b')](_0x3dc4e7['zendeskAccounts'][_0x323c88['id']],_0x323c88);}}}return _0x3dc4e7['zendeskAccounts'];};};Realtime[_0x8779('0x40')][_0x8779('0x46')]=function(){var _0x258bc4=this;return function(_0x5d9619){if(_0x5d9619){freeIsNotKey(_0x5d9619,_0x258bc4[_0x8779('0x1b')],'id');for(var _0x46592f=0x0,_0x5c0a7f={},_0x20bff5={};_0x46592f<_0x5d9619[_0x8779('0x3d')];_0x46592f+=0x1){_0x5c0a7f=_0x5d9619[_0x46592f];if(_['isUndefined'](_0x258bc4['salesforceAccounts'][_0x5c0a7f['id']])){_0x258bc4[_0x8779('0x1b')][_0x5c0a7f['id']]=new SalesforceAccount(_0x5c0a7f);}else{_0x258bc4[_0x8779('0x3b')](_0x258bc4[_0x8779('0x1b')][_0x5c0a7f['id']],_0x5c0a7f);}}}return _0x258bc4[_0x8779('0x1b')];};};Realtime[_0x8779('0x40')][_0x8779('0x47')]=function(){var _0x2cc935=this;return function(_0x160dc9){if(_0x160dc9){freeIsNotKey(_0x160dc9,_0x2cc935[_0x8779('0x1d')],'id');for(var _0x4cf912=0x0,_0x4c7495={},_0x14ee3b={};_0x4cf912<_0x160dc9['length'];_0x4cf912+=0x1){_0x4c7495=_0x160dc9[_0x4cf912];if(_[_0x8779('0x3f')](_0x2cc935['freshdeskAccounts'][_0x4c7495['id']])){_0x2cc935[_0x8779('0x1d')][_0x4c7495['id']]=new FreshdeskAccount(_0x4c7495);}else{_0x2cc935[_0x8779('0x3b')](_0x2cc935['freshdeskAccounts'][_0x4c7495['id']],_0x4c7495);}}}return _0x2cc935[_0x8779('0x1d')];};};Realtime[_0x8779('0x40')]['initZohoAccounts']=function(){var _0x4c41fa=this;return function(_0x741daf){if(_0x741daf){freeIsNotKey(_0x741daf,_0x4c41fa[_0x8779('0x1e')],'id');for(var _0x915c3=0x0,_0x31d633={},_0x240967={};_0x915c3<_0x741daf[_0x8779('0x3d')];_0x915c3+=0x1){_0x31d633=_0x741daf[_0x915c3];if(_[_0x8779('0x3f')](_0x4c41fa[_0x8779('0x1e')][_0x31d633['id']])){_0x4c41fa[_0x8779('0x1e')][_0x31d633['id']]=new ZohoAccount(_0x31d633);}else{_0x4c41fa[_0x8779('0x3b')](_0x4c41fa['zohoAccounts'][_0x31d633['id']],_0x31d633);}}}return _0x4c41fa[_0x8779('0x1e')];};};Realtime[_0x8779('0x40')][_0x8779('0x48')]=function(){var _0x47afe5=this;return function(_0x2cb9e5){if(_0x2cb9e5){freeIsNotKey(_0x2cb9e5,_0x47afe5[_0x8779('0x1f')],'id');for(var _0x11570c=0x0,_0x7633f3={},_0x44476f={};_0x11570c<_0x2cb9e5[_0x8779('0x3d')];_0x11570c+=0x1){_0x7633f3=_0x2cb9e5[_0x11570c];if(_[_0x8779('0x3f')](_0x47afe5['deskAccounts'][_0x7633f3['id']])){_0x47afe5[_0x8779('0x1f')][_0x7633f3['id']]=new DeskAccount(_0x7633f3);}else{_0x47afe5[_0x8779('0x3b')](_0x47afe5['deskAccounts'][_0x7633f3['id']],_0x7633f3);}}}return _0x47afe5['deskAccounts'];};};Realtime['prototype'][_0x8779('0x49')]=function(){var _0x4c4c92=this;return function(_0x3cc251){if(_0x3cc251){freeIsNotKey(_0x3cc251,_0x4c4c92[_0x8779('0x1c')],'id');for(var _0x27b739=0x0,_0x34c833={},_0x1c77cd={};_0x27b739<_0x3cc251[_0x8779('0x3d')];_0x27b739+=0x1){_0x34c833=_0x3cc251[_0x27b739];if(_['isUndefined'](_0x4c4c92['sugarcrmAccounts'][_0x34c833['id']])){_0x4c4c92[_0x8779('0x1c')][_0x34c833['id']]=new SugarcrmAccount(_0x34c833);}else{_0x4c4c92['mergeFromDatabase'](_0x4c4c92[_0x8779('0x1c')][_0x34c833['id']],_0x34c833);}}}return _0x4c4c92[_0x8779('0x1c')];};};Realtime[_0x8779('0x40')][_0x8779('0x4a')]=function(){var _0x29a3de=this;return function(_0x2217f8){if(_0x2217f8){freeIsNotKey(_0x2217f8,_0x29a3de[_0x8779('0x4b')],'id');for(var _0xd9645b=0x0,_0x474300={},_0x353504={};_0xd9645b<_0x2217f8['length'];_0xd9645b+=0x1){_0x474300=_0x2217f8[_0xd9645b];if(_[_0x8779('0x3f')](_0x29a3de[_0x8779('0x4b')][_0x474300['id']])){_0x29a3de['vtigerAccounts'][_0x474300['id']]=new VtigerAccount(_0x474300);}else{_0x29a3de[_0x8779('0x3b')](_0x29a3de['vtigerAccounts'][_0x474300['id']],_0x474300);}}}return _0x29a3de[_0x8779('0x4b')];};};Realtime['prototype'][_0x8779('0x4c')]=function(){var _0x1fba2a=this;return function(_0x29a663){if(_0x29a663){freeIsNotKey(_0x29a663,_0x1fba2a[_0x8779('0x20')],'id');for(var _0x6208b4=0x0,_0x5db035={},_0x5e6d7f={};_0x6208b4<_0x29a663['length'];_0x6208b4+=0x1){_0x5db035=_0x29a663[_0x6208b4];if(_['isUndefined'](_0x1fba2a['servicenowAccounts'][_0x5db035['id']])){_0x1fba2a[_0x8779('0x20')][_0x5db035['id']]=new ServicenowAccount(_0x5db035);}else{_0x1fba2a[_0x8779('0x3b')](_0x1fba2a[_0x8779('0x20')][_0x5db035['id']],_0x5db035);}}}return _0x1fba2a['servicenowAccounts'];};};Realtime[_0x8779('0x40')][_0x8779('0x4d')]=function(){var _0xbb3695=this;return function(_0x1c464f){if(_0x1c464f){freeIsNotKey(_0x1c464f,_0xbb3695[_0x8779('0x21')],'id');for(var _0x4d66f2=0x0,_0x356713={},_0x11791f={};_0x4d66f2<_0x1c464f['length'];_0x4d66f2+=0x1){_0x356713=_0x1c464f[_0x4d66f2];if(_[_0x8779('0x3f')](_0xbb3695[_0x8779('0x21')][_0x356713['id']])){_0xbb3695['dynamics365Accounts'][_0x356713['id']]=new Dynamics365Account(_0x356713);}else{_0xbb3695[_0x8779('0x3b')](_0xbb3695[_0x8779('0x21')][_0x356713['id']],_0x356713);}}}return _0xbb3695[_0x8779('0x21')];};};Realtime[_0x8779('0x40')][_0x8779('0x4e')]=function(){var _0x22f972=this;return function(_0x4de208){if(_0x4de208){freeIsNotKey(_0x4de208,_0x22f972[_0x8779('0x22')],'id');for(var _0x5bac63=0x0,_0x4b6945={},_0x1f977b={};_0x5bac63<_0x4de208[_0x8779('0x3d')];_0x5bac63+=0x1){_0x4b6945=_0x4de208[_0x5bac63];if(_[_0x8779('0x3f')](_0x22f972[_0x8779('0x22')][_0x4b6945['id']])){_0x22f972[_0x8779('0x22')][_0x4b6945['id']]=new FreshsalesAccount(_0x4b6945);}else{_0x22f972[_0x8779('0x3b')](_0x22f972[_0x8779('0x22')][_0x4b6945['id']],_0x4b6945);}}}return _0x22f972[_0x8779('0x22')];};};Realtime[_0x8779('0x40')][_0x8779('0x4f')]=function(){var _0xc77700=this;return function(_0x1124e4){for(var _0x2452a6=0x0;_0x2452a6<_0x1124e4['length'];_0x2452a6+=0x1){_[_0x8779('0x50')](_0xc77700[_0x8779('0x13')][_0x1124e4[_0x2452a6]['name']],_0x1124e4[_0x2452a6]);}return _0xc77700['voiceQueues'];};};Realtime[_0x8779('0x40')][_0x8779('0x51')]=function(){var _0x1f341c=this;return function(_0x565310){clearVoiceQueues(_0x1f341c['voiceQueues']);if(_0x565310){_0x565310=_[_0x8779('0x52')](_0x565310,_0x8779('0x53'));for(var _0x5d5348 in _0x565310){if(_0x565310[_0x8779('0x25')](_0x5d5348)){var _0x1e83dc={};for(var _0x5ac48a=0x0;_0x5ac48a<_0x565310[_0x5d5348]['length'];_0x5ac48a+=0x1){var _0x72e5d6=_0x565310[_0x5d5348][_0x5ac48a][_0x8779('0x54')];if(_0x1f341c[_0x8779('0x13')][_0x72e5d6]){if(_0x565310[_0x5d5348][_0x5ac48a][_0x8779('0x55')]){_0x1f341c[_0x8779('0x13')][_0x72e5d6][_0x8779('0x56')]+=0x1;}if(_0x565310[_0x5d5348][_0x5ac48a][_0x8779('0x57')]){_0x1f341c[_0x8779('0x13')][_0x72e5d6]['abandoned']+=0x1;}_0x1f341c[_0x8779('0x13')][_0x72e5d6][_0x8779('0x31')]+=moment(_0x565310[_0x5d5348][_0x5ac48a]['queuecallerleaveAt'])[_0x8779('0x58')](moment(_0x565310[_0x5d5348][_0x5ac48a][_0x8779('0x59')]),_0x8779('0x5a'))||0x0;if(_0x5ac48a===_0x565310[_0x5d5348]['length']-0x1){_0x1f341c[_0x8779('0x13')][_0x72e5d6][_0x8779('0x2c')]+=moment(_0x565310[_0x5d5348][_0x5ac48a][_0x8779('0x5b')]||_0x565310[_0x5d5348][_0x5ac48a][_0x8779('0x5c')]||_0x565310[_0x5d5348][_0x5ac48a][_0x8779('0x5d')])['diff'](moment(_0x565310[_0x5d5348][_0x5ac48a][_0x8779('0x59')]),_0x8779('0x5a'))||0x0;_0x1f341c[_0x8779('0x13')][_0x72e5d6][_0x8779('0x2b')]+=0x1;if(_0x565310[_0x5d5348][_0x5ac48a][_0x8779('0x5e')]){_0x1f341c[_0x8779('0x13')][_0x72e5d6][_0x8779('0x5f')]+=0x1;_0x1f341c['voiceQueues'][_0x72e5d6][_0x8779('0x2d')]+=moment(_0x565310[_0x5d5348][_0x5ac48a]['queuecallercompleteAt'])[_0x8779('0x58')](moment(_0x565310[_0x5d5348][_0x5ac48a]['queuecallerleaveAt']),_0x8779('0x5a'))||0x0;}}else{_0x1f341c[_0x8779('0x13')][_0x72e5d6][_0x8779('0x2c')]+=_0x1f341c[_0x8779('0x13')][_0x72e5d6][_0x8779('0x31')]||0x0;}}}}}}return _0x1f341c[_0x8779('0x13')];};};Realtime[_0x8779('0x40')]['initVoiceCallReports']=function(){var _0x4b8bec=this;return function(_0x496ec2){clearVoiceCallReports(_0x4b8bec[_0x8779('0x60')]);if(_0x496ec2){for(var _0x4f2ac1=0x0;_0x4f2ac1<_0x496ec2[_0x8779('0x3d')];_0x4f2ac1+=0x1){_0x4b8bec[_0x8779('0x60')][_0x8779('0x2b')]+=0x1;_0x4b8bec['outbound'][_0x8779('0x2c')]+=_0x496ec2[_0x4f2ac1][_0x8779('0x61')];if(_0x496ec2[_0x4f2ac1]['disposition']===_0x8779('0x62')){_0x4b8bec[_0x8779('0x60')][_0x8779('0x5f')]+=0x1;_0x4b8bec[_0x8779('0x60')][_0x8779('0x31')]+=_0x496ec2[_0x4f2ac1][_0x8779('0x61')]-_0x496ec2[_0x4f2ac1][_0x8779('0x63')]||0x0;_0x4b8bec[_0x8779('0x60')][_0x8779('0x2d')]+=_0x496ec2[_0x4f2ac1][_0x8779('0x63')];}}}return _0x4b8bec[_0x8779('0x60')];};};Realtime[_0x8779('0x40')][_0x8779('0x64')]=function(){var _0x3514a3=this;return function(_0x1c14dc){if(_0x1c14dc){freeIsNotKey(_0x1c14dc,_0x3514a3[_0x8779('0x65')],_0x8779('0x28'));for(var _0x3a22f2=0x0,_0x1bc280={};_0x3a22f2<_0x1c14dc[_0x8779('0x3d')];_0x3a22f2+=0x1){_0x1bc280=_0x1c14dc[_0x3a22f2];if(_[_0x8779('0x3f')](_0x3514a3[_0x8779('0x65')][_0x1bc280['name']])){_0x3514a3[_0x8779('0x65')][_0x1bc280[_0x8779('0x28')]]=new Campaign(_0x1bc280);}else{_0x3514a3[_0x8779('0x3b')](_0x3514a3[_0x8779('0x65')][_0x1bc280[_0x8779('0x28')]],_0x1bc280);_0x3514a3['campaigns'][_0x1bc280[_0x8779('0x28')]]['dialQueueProject']=_0x1bc280['SquareProject']?_0x1bc280[_0x8779('0x66')][_0x8779('0x28')]:undefined;}}}return _0x3514a3[_0x8779('0x65')];};};Realtime[_0x8779('0x40')][_0x8779('0x67')]=function(){var _0x429946=this;return function(_0x5c58ff){if(_0x5c58ff){freeIsNotKey(_0x5c58ff,_0x429946[_0x8779('0x15')],'id');for(var _0x227846=0x0,_0x36e0e2={};_0x227846<_0x5c58ff['length'];_0x227846+=0x1){_0x36e0e2=_0x5c58ff[_0x227846];if(_[_0x8779('0x3f')](_0x429946[_0x8779('0x15')][_0x36e0e2['id']])){_0x429946[_0x8779('0x15')][_0x36e0e2['id']]=new VoiceExtension(_0x36e0e2);}else{_0x429946['mergeFromDatabase'](_0x429946[_0x8779('0x15')][_0x36e0e2['id']],_0x36e0e2);}}}return _0x429946['voiceExtensions'];};};Realtime['prototype'][_0x8779('0x68')]=function(){var _0x4fb504=this;return function(_0x5cee03){clearCampaigns(_0x4fb504[_0x8779('0x65')]);for(var _0x2e25fa=0x0;_0x2e25fa<_0x5cee03[_0x8779('0x3d')];_0x2e25fa+=0x1){_['merge'](_0x4fb504[_0x8779('0x65')][_0x5cee03[_0x2e25fa][_0x8779('0x28')]],_0x5cee03[_0x2e25fa]);}return _0x4fb504[_0x8779('0x65')];};};Realtime[_0x8779('0x40')][_0x8779('0x69')]=function(){var _0x44a085=this;return function(_0x2d1886){if(_0x2d1886){freeIsNotKey(_0x2d1886,_0x44a085[_0x8779('0x23')],'id');for(var _0x590b5f=0x0,_0x3b2e8a={},_0xab4889={};_0x590b5f<_0x2d1886[_0x8779('0x3d')];_0x590b5f+=0x1){_0x3b2e8a=_0x2d1886[_0x590b5f];if(_['isUndefined'](_0x44a085[_0x8779('0x23')][_0x3b2e8a['id']])){_0x44a085['faxAccounts'][_0x3b2e8a['id']]=new FaxAccount(_0x3b2e8a);}else{_0x44a085['mergeFromDatabase'](_0x44a085[_0x8779('0x23')][_0x3b2e8a['id']],_0x3b2e8a);}}}return _0x44a085[_0x8779('0x23')];};};module['exports']=Realtime;
\ No newline at end of file
index 6ea9346..94c117e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83e2=['createdAt','connectedlinename','xcally-motion-dialer','voiceAgentReport','forEach','startsWith','Local','indexOf','mobile','phone','substring','transfererlinkedid','exports','lodash','moment','util','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','custom:voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindTransfer','attendedTransfer','find','accountcode','name','isNil','format','SIP/%s','prototype','length','findAgent','connectedlinenum','assigned','lastAssignedTo','interface','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','match','destination','exten','type','dialer','lastdata','queue','context','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridpreview','calleridnum','originatecalleridnum','channel','destinationchannel','ANSWERED','\x22%s\x22\x20<%s>','calleridname','linkedid','transfereelinkedid','transfers','create','monitors','filename'];(function(_0xfff9cf,_0x55ad70){var _0x231718=function(_0x410e35){while(--_0x410e35){_0xfff9cf['push'](_0xfff9cf['shift']());}};_0x231718(++_0x55ad70);}(_0x83e2,0x1ac));var _0x283e=function(_0x5550b3,_0x2d0ee0){_0x5550b3=_0x5550b3-0x0;var _0x4b8fc4=_0x83e2[_0x5550b3];return _0x4b8fc4;};'use strict';var _=require(_0x283e('0x0'));var moment=require(_0x283e('0x1'));var util=require(_0x283e('0x2'));var config=require('../../../config/environment');var ami=require('../ami');var RpcVoiceAgentReport=require(_0x283e('0x3'));var RpcVoiceCallReport=require(_0x283e('0x4'));var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require(_0x283e('0x5'));var RpcVoiceQueueReport=require(_0x283e('0x6'));var RpcVoiceRecording=require(_0x283e('0x7'));var RpcVoiceTransferReport=require(_0x283e('0x8'));var VoiceQueueReport=require(_0x283e('0x9'));var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require(_0x283e('0xa'));var VoiceDialReport=require(_0x283e('0xb'));var UserReport=require(_0x283e('0xc'));function Report(_0x579cc4){this[_0x283e('0xd')]=_0x579cc4;this[_0x283e('0xe')]=_0x579cc4[_0x283e('0xe')];this[_0x283e('0xf')]=_0x579cc4[_0x283e('0xf')];}Report['prototype']['sync']=function(_0x1258ac){var _0x3ca402=new VoiceQueueReport(this[_0x283e('0xd')]);var _0xb709ca=new VoiceAgentReport(this[_0x283e('0xd')]);var _0x29505e=new VoiceDialReport(this[_0x283e('0xd')]);var _0x131019=new VoiceCallReport(this[_0x283e('0xd')]);var _0xfaee55=new UserReport(this[_0x283e('0xd')]);if(config['xdr']&&config[_0x283e('0x10')][_0x283e('0x11')]){ami['on'](_0x283e('0x12'),this[_0x283e('0x13')][_0x283e('0x14')](this));ami['on'](_0x283e('0x15'),this['voiceCallReport'][_0x283e('0x14')](this));ami['on'](_0x283e('0x16'),this['voiceAgentReport'][_0x283e('0x14')](this));ami['on'](_0x283e('0x17'),this[_0x283e('0x18')][_0x283e('0x14')](this));ami['on']('blindtransfer',this[_0x283e('0x19')][_0x283e('0x14')](this));ami['on']('attendedtransfer',this[_0x283e('0x1a')][_0x283e('0x14')](this));}};Report['prototype']['findAgent']=function(_0x2c78b0){var _0x584703;_0x584703=_[_0x283e('0x1b')](this[_0x283e('0xe')],function(_0x4a87c7){return _0x4a87c7[_0x283e('0x1c')]==_0x2c78b0||_0x4a87c7[_0x283e('0x1d')]==_0x2c78b0;});if(_[_0x283e('0x1e')](_0x584703)){var _0x167ad8=_['find'](this['telephones'],function(_0x3eb51c){return _0x3eb51c[_0x283e('0x1c')]==_0x2c78b0||_0x3eb51c[_0x283e('0x1d')]==_0x2c78b0;});if(_0x167ad8){_0x584703=_[_0x283e('0x1b')](this['agents'],function(_0x53022c){return _0x53022c['interface']==util[_0x283e('0x1f')](_0x283e('0x20'),_0x167ad8[_0x283e('0x1d')]);});}}return _0x584703;};Report[_0x283e('0x21')][_0x283e('0x13')]=function(_0x1d14c1){for(var _0x6d5bd9=0x0;_0x6d5bd9<_0x1d14c1[_0x283e('0x22')];_0x6d5bd9+=0x1){var _0x260119=this[_0x283e('0x23')](_0x1d14c1[_0x6d5bd9][_0x283e('0x24')]);if(_0x260119){_0x1d14c1[_0x6d5bd9][_0x283e('0x1c')]=_0x260119[_0x283e('0x1c')];_0x1d14c1[_0x6d5bd9][_0x283e('0x25')]=!![];_0x1d14c1[_0x6d5bd9][_0x283e('0x26')]=_0x260119[_0x283e('0x1d')];_0x1d14c1[_0x6d5bd9][_0x283e('0x27')]=_[_0x283e('0x1e')](_0x260119[_0x283e('0x27')])?util[_0x283e('0x1f')](_0x283e('0x20'),_0x260119[_0x283e('0x1d')]):_0x260119['interface'];if(_0x1d14c1[_0x6d5bd9][_0x283e('0x28')]){_0x1d14c1[_0x6d5bd9][_0x283e('0x29')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x1d14c1[_0x6d5bd9][_0x283e('0x2a')]){_0x1d14c1[_0x6d5bd9][_0x283e('0x2b')]=moment()[_0x283e('0x1f')]('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport[_0x283e('0x13')](_0x1d14c1[_0x6d5bd9]);}RpcVoiceQueueReport['create'](_0x1d14c1[_0x6d5bd9]);}};function extractCalleridNumber(_0x154f1c){var _0xfff33d=_0x154f1c[_0x283e('0x2c')](/<(.*?)>/);return _0xfff33d?_0xfff33d[0x1]:_0x154f1c;}Report[_0x283e('0x21')]['voiceCallReport']=function(_0x5b70ef){_0x5b70ef[_0x283e('0x2d')]=_0x5b70ef['destination']||_0x5b70ef[_0x283e('0x2e')];if(_0x5b70ef[_0x283e('0x2f')]==_0x283e('0x30')){_0x5b70ef['lastapplication']='queue';_0x5b70ef[_0x283e('0x31')]=_0x5b70ef[_0x283e('0x32')];if(_0x5b70ef[_0x283e('0x33')]==_0x283e('0x34')){_0x5b70ef[_0x283e('0x1c')]='';_0x5b70ef['destination']=extractCalleridNumber(_0x5b70ef[_0x283e('0x35')]);}else if(_0x5b70ef[_0x283e('0x33')]==_0x283e('0x36')){if(_0x5b70ef[_0x283e('0x2d')]==_0x283e('0x37')){_0x5b70ef[_0x283e('0x2d')]=extractCalleridNumber(_0x5b70ef[_0x283e('0x38')]);_0x5b70ef[_0x283e('0x39')]=_0x5b70ef[_0x283e('0x3a')];_0x5b70ef['destinationchannel']=[_0x5b70ef['channel'],_0x5b70ef[_0x283e('0x3b')]=_0x5b70ef[_0x283e('0x3c')]][0x0];_0x5b70ef[_0x283e('0x35')]=_0x5b70ef[_0x283e('0x38')];}else{_0x5b70ef['destination']=_0x5b70ef['calleridnum'];_0x5b70ef[_0x283e('0x39')]=_0x5b70ef[_0x283e('0x3a')];if(_0x5b70ef['disposition']==_0x283e('0x3d')){_0x5b70ef['accountcode']=_0x5b70ef[_0x283e('0x24')];}else{_0x5b70ef[_0x283e('0x1c')]='';}}}}else{_0x5b70ef['callerid']=util['format'](_0x283e('0x3e'),_0x5b70ef[_0x283e('0x3f')],_0x5b70ef['calleridnum']);}if(RpcVoiceTransferReport['transfers'][_0x5b70ef[_0x283e('0x40')]]){var _0xb46265=RpcVoiceTransferReport['transfers'][_0x5b70ef[_0x283e('0x40')]];_0xb46265[_0x283e('0x41')]=_0x5b70ef['uniqueid'];RpcVoiceTransferReport['blindTransfer'](_0xb46265);delete RpcVoiceTransferReport[_0x283e('0x42')][_0x5b70ef['linkedid']];}RpcVoiceCallReport[_0x283e('0x43')](_0x5b70ef);if(_0x5b70ef['monitor']){for(var _0x3c07d2=0x0;_0x3c07d2<_0x5b70ef[_0x283e('0x44')][_0x283e('0x22')];_0x3c07d2+=0x1){_0x5b70ef['monitorFilename']=_0x5b70ef[_0x283e('0x44')][_0x3c07d2][_0x283e('0x45')];_0x5b70ef[_0x283e('0x46')]=_0x5b70ef[_0x283e('0x44')][_0x3c07d2]['createdAt'];if(_0x5b70ef[_0x283e('0x2e')]==_0x283e('0x37')){_0x5b70ef[_0x283e('0x39')]=_0x5b70ef[_0x283e('0x24')];_0x5b70ef[_0x283e('0x3f')]=_0x5b70ef['connectedlinename'];_0x5b70ef[_0x283e('0x24')]=_0x5b70ef[_0x283e('0x1c')];_0x5b70ef[_0x283e('0x47')]=_0x5b70ef['membername'];_0x5b70ef[_0x283e('0x2e')]=_0x5b70ef[_0x283e('0x3a')];}else if(_0x5b70ef[_0x283e('0x2e')]==_0x283e('0x48')){_0x5b70ef['calleridnum']=_0x5b70ef[_0x283e('0x2d')];_0x5b70ef[_0x283e('0x2e')]=_0x5b70ef[_0x283e('0x3a')];}RpcVoiceRecording['create'](_0x5b70ef);}}};Report[_0x283e('0x21')][_0x283e('0x49')]=function(_0x331192){if(_['isArray'](_0x331192)){_0x331192[_0x283e('0x4a')](function(_0x100d50){RpcVoiceAgentReport[_0x283e('0x43')](_0x100d50);});}else{RpcVoiceAgentReport['create'](_0x331192);}};Report['prototype']['voiceDialReport']=function(_0x339501){RpcVoiceDialReport['create'](_0x339501);var _0x45c41e;var _0x55e7cd;var _0x4ca764=_0x339501[_0x283e('0x3b')];if(_[_0x283e('0x4b')](_0x4ca764,_0x283e('0x4c'))){_0x55e7cd=_0x4ca764['substring'](_0x4ca764[_0x283e('0x4d')]('/')+0x1,_0x4ca764['indexOf']('@'));_0x45c41e=_[_0x283e('0x1b')](this[_0x283e('0xe')],function(_0x4d82a7){return _0x4d82a7[_0x283e('0x4e')]==_0x55e7cd||_0x4d82a7[_0x283e('0x4f')]==_0x55e7cd||_0x4d82a7['accountcode']==_0x55e7cd;});}else{_0x55e7cd=_0x4ca764[_0x283e('0x50')](_0x4ca764['indexOf']('/')+0x1,_0x4ca764['lastIndexOf']('-'));_0x45c41e=this[_0x283e('0x23')](_0x55e7cd);}if(_0x45c41e){_0x339501[_0x283e('0x27')]=_[_0x283e('0x1e')](_0x45c41e[_0x283e('0x27')])?util['format'](_0x283e('0x20'),_0x45c41e[_0x283e('0x1d')]):_0x45c41e[_0x283e('0x27')];_0x339501['membername']=_0x45c41e['name'];_0x339501[_0x283e('0x1c')]=_0x45c41e['accountcode'];RpcMemberReport['voiceDialReport'](_0x339501);}};Report[_0x283e('0x21')][_0x283e('0x19')]=function(_0x145842){RpcVoiceTransferReport['transfers'][_0x145842[_0x283e('0x51')]]=_0x145842;};Report['prototype'][_0x283e('0x1a')]=function(_0x18390d){RpcVoiceTransferReport['attendedTransfer'](_0x18390d);};module[_0x283e('0x52')]=Report;
\ No newline at end of file
+var _0x3939=['attendedTransfer','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceCallReport','realtime','agents','telephones','prototype','sync','xdr','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','findAgent','find','accountcode','name','isNil','format','SIP/%s','assigned','interface','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','YYYY-MM-DD\x20HH:mm:ss','create','match','destination','exten','type','dialer','lastapplication','queue','lastdata','context','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridpreview','calleridnum','originatecalleridnum','destinationchannel','channel','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','monitor','monitors','monitorFilename','filename','createdAt','connectedlinenum','membername','xcally-motion-dialer','voiceAgentReport','isArray','forEach','voiceDialReport','startsWith','Local','substring','indexOf'];(function(_0x474f1c,_0x15cb4a){var _0x429e8f=function(_0x4333e9){while(--_0x4333e9){_0x474f1c['push'](_0x474f1c['shift']());}};_0x429e8f(++_0x15cb4a);}(_0x3939,0x100));var _0x9393=function(_0x41ea24,_0x178fdb){_0x41ea24=_0x41ea24-0x0;var _0x41952f=_0x3939[_0x41ea24];return _0x41952f;};'use strict';var _=require(_0x9393('0x0'));var moment=require(_0x9393('0x1'));var util=require(_0x9393('0x2'));var config=require(_0x9393('0x3'));var ami=require(_0x9393('0x4'));var RpcVoiceAgentReport=require(_0x9393('0x5'));var RpcVoiceCallReport=require(_0x9393('0x6'));var RpcVoiceDialReport=require(_0x9393('0x7'));var RpcMemberReport=require(_0x9393('0x8'));var RpcVoiceQueueReport=require(_0x9393('0x9'));var RpcVoiceRecording=require(_0x9393('0xa'));var RpcVoiceTransferReport=require(_0x9393('0xb'));var VoiceQueueReport=require('./voiceQueueReport');var VoiceCallReport=require(_0x9393('0xc'));var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require('./voiceDialReport');var UserReport=require('./userReport');function Report(_0x4e8f0a){this[_0x9393('0xd')]=_0x4e8f0a;this[_0x9393('0xe')]=_0x4e8f0a[_0x9393('0xe')];this[_0x9393('0xf')]=_0x4e8f0a[_0x9393('0xf')];}Report[_0x9393('0x10')][_0x9393('0x11')]=function(_0x1429b2){var _0x54ae10=new VoiceQueueReport(this['realtime']);var _0x3bfbe5=new VoiceAgentReport(this[_0x9393('0xd')]);var _0x2e8614=new VoiceDialReport(this[_0x9393('0xd')]);var _0x32de02=new VoiceCallReport(this[_0x9393('0xd')]);var _0x54c114=new UserReport(this[_0x9393('0xd')]);if(config[_0x9393('0x12')]&&config[_0x9393('0x12')]['disabled']){ami['on']('custom:voiceQueueReport',this[_0x9393('0x13')][_0x9393('0x14')](this));ami['on'](_0x9393('0x15'),this[_0x9393('0x16')][_0x9393('0x14')](this));ami['on']('custom:voiceAgentReport',this['voiceAgentReport'][_0x9393('0x14')](this));ami['on'](_0x9393('0x17'),this['voiceDialReport'][_0x9393('0x14')](this));ami['on'](_0x9393('0x18'),this[_0x9393('0x19')][_0x9393('0x14')](this));ami['on'](_0x9393('0x1a'),this['attendedTransfer'][_0x9393('0x14')](this));}};Report[_0x9393('0x10')][_0x9393('0x1b')]=function(_0x19e906){var _0x87a270;_0x87a270=_[_0x9393('0x1c')](this[_0x9393('0xe')],function(_0x544bff){return _0x544bff[_0x9393('0x1d')]==_0x19e906||_0x544bff[_0x9393('0x1e')]==_0x19e906;});if(_[_0x9393('0x1f')](_0x87a270)){var _0x2063b6=_[_0x9393('0x1c')](this[_0x9393('0xf')],function(_0x19884d){return _0x19884d[_0x9393('0x1d')]==_0x19e906||_0x19884d[_0x9393('0x1e')]==_0x19e906;});if(_0x2063b6){_0x87a270=_[_0x9393('0x1c')](this['agents'],function(_0x352813){return _0x352813['interface']==util[_0x9393('0x20')](_0x9393('0x21'),_0x2063b6['name']);});}}return _0x87a270;};Report[_0x9393('0x10')]['voiceQueueReport']=function(_0x41d58a){for(var _0x2dbea9=0x0;_0x2dbea9<_0x41d58a['length'];_0x2dbea9+=0x1){var _0x3e25d9=this['findAgent'](_0x41d58a[_0x2dbea9]['connectedlinenum']);if(_0x3e25d9){_0x41d58a[_0x2dbea9]['accountcode']=_0x3e25d9['accountcode'];_0x41d58a[_0x2dbea9][_0x9393('0x22')]=!![];_0x41d58a[_0x2dbea9]['lastAssignedTo']=_0x3e25d9[_0x9393('0x1e')];_0x41d58a[_0x2dbea9][_0x9393('0x23')]=_['isNil'](_0x3e25d9['interface'])?util[_0x9393('0x20')](_0x9393('0x21'),_0x3e25d9[_0x9393('0x1e')]):_0x3e25d9[_0x9393('0x23')];if(_0x41d58a[_0x2dbea9][_0x9393('0x24')]){_0x41d58a[_0x2dbea9][_0x9393('0x25')]=moment()[_0x9393('0x20')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x41d58a[_0x2dbea9][_0x9393('0x26')]){_0x41d58a[_0x2dbea9][_0x9393('0x27')]=moment()[_0x9393('0x20')](_0x9393('0x28'));}RpcMemberReport[_0x9393('0x13')](_0x41d58a[_0x2dbea9]);}RpcVoiceQueueReport[_0x9393('0x29')](_0x41d58a[_0x2dbea9]);}};function extractCalleridNumber(_0x388bb5){var _0x136901=_0x388bb5[_0x9393('0x2a')](/<(.*?)>/);return _0x136901?_0x136901[0x1]:_0x388bb5;}Report[_0x9393('0x10')][_0x9393('0x16')]=function(_0x347684){_0x347684[_0x9393('0x2b')]=_0x347684[_0x9393('0x2b')]||_0x347684[_0x9393('0x2c')];if(_0x347684[_0x9393('0x2d')]==_0x9393('0x2e')){_0x347684[_0x9393('0x2f')]=_0x9393('0x30');_0x347684[_0x9393('0x31')]=_0x347684['queue'];if(_0x347684[_0x9393('0x32')]==_0x9393('0x33')){_0x347684['accountcode']='';_0x347684[_0x9393('0x2b')]=extractCalleridNumber(_0x347684[_0x9393('0x34')]);}else if(_0x347684[_0x9393('0x32')]==_0x9393('0x35')){if(_0x347684[_0x9393('0x2b')]==_0x9393('0x36')){_0x347684[_0x9393('0x2b')]=extractCalleridNumber(_0x347684[_0x9393('0x37')]);_0x347684[_0x9393('0x38')]=_0x347684[_0x9393('0x39')];_0x347684[_0x9393('0x3a')]=[_0x347684[_0x9393('0x3b')],_0x347684['channel']=_0x347684[_0x9393('0x3a')]][0x0];_0x347684['callerid']=_0x347684[_0x9393('0x37')];}else{_0x347684[_0x9393('0x2b')]=_0x347684['calleridnum'];_0x347684[_0x9393('0x38')]=_0x347684[_0x9393('0x39')];if(_0x347684[_0x9393('0x3c')]==_0x9393('0x3d')){_0x347684[_0x9393('0x1d')]=_0x347684['connectedlinenum'];}else{_0x347684[_0x9393('0x1d')]='';}}}}else{_0x347684['callerid']=util['format'](_0x9393('0x3e'),_0x347684[_0x9393('0x3f')],_0x347684[_0x9393('0x38')]);}if(RpcVoiceTransferReport[_0x9393('0x40')][_0x347684['linkedid']]){var _0x476346=RpcVoiceTransferReport[_0x9393('0x40')][_0x347684[_0x9393('0x41')]];_0x476346[_0x9393('0x42')]=_0x347684[_0x9393('0x43')];RpcVoiceTransferReport[_0x9393('0x19')](_0x476346);delete RpcVoiceTransferReport[_0x9393('0x40')][_0x347684['linkedid']];}RpcVoiceCallReport[_0x9393('0x29')](_0x347684);if(_0x347684[_0x9393('0x44')]){for(var _0x4d681c=0x0;_0x4d681c<_0x347684[_0x9393('0x45')]['length'];_0x4d681c+=0x1){_0x347684[_0x9393('0x46')]=_0x347684['monitors'][_0x4d681c][_0x9393('0x47')];_0x347684[_0x9393('0x48')]=_0x347684[_0x9393('0x45')][_0x4d681c][_0x9393('0x48')];if(_0x347684['exten']=='xcally-motion-preview'){_0x347684[_0x9393('0x38')]=_0x347684[_0x9393('0x49')];_0x347684[_0x9393('0x3f')]=_0x347684['connectedlinename'];_0x347684[_0x9393('0x49')]=_0x347684['accountcode'];_0x347684['connectedlinename']=_0x347684[_0x9393('0x4a')];_0x347684[_0x9393('0x2c')]=_0x347684['originatecalleridnum'];}else if(_0x347684[_0x9393('0x2c')]==_0x9393('0x4b')){_0x347684['calleridnum']=_0x347684['destination'];_0x347684['exten']=_0x347684[_0x9393('0x39')];}RpcVoiceRecording[_0x9393('0x29')](_0x347684);}}};Report['prototype'][_0x9393('0x4c')]=function(_0x31dab0){if(_[_0x9393('0x4d')](_0x31dab0)){_0x31dab0[_0x9393('0x4e')](function(_0x25aa73){RpcVoiceAgentReport['create'](_0x25aa73);});}else{RpcVoiceAgentReport[_0x9393('0x29')](_0x31dab0);}};Report['prototype'][_0x9393('0x4f')]=function(_0x4f054b){RpcVoiceDialReport[_0x9393('0x29')](_0x4f054b);var _0x1f2f4f;var _0x49cc9f;var _0x55e155=_0x4f054b[_0x9393('0x3b')];if(_[_0x9393('0x50')](_0x55e155,_0x9393('0x51'))){_0x49cc9f=_0x55e155[_0x9393('0x52')](_0x55e155[_0x9393('0x53')]('/')+0x1,_0x55e155[_0x9393('0x53')]('@'));_0x1f2f4f=_[_0x9393('0x1c')](this[_0x9393('0xe')],function(_0x493f14){return _0x493f14['mobile']==_0x49cc9f||_0x493f14['phone']==_0x49cc9f||_0x493f14['accountcode']==_0x49cc9f;});}else{_0x49cc9f=_0x55e155[_0x9393('0x52')](_0x55e155[_0x9393('0x53')]('/')+0x1,_0x55e155['lastIndexOf']('-'));_0x1f2f4f=this[_0x9393('0x1b')](_0x49cc9f);}if(_0x1f2f4f){_0x4f054b['interface']=_[_0x9393('0x1f')](_0x1f2f4f[_0x9393('0x23')])?util[_0x9393('0x20')](_0x9393('0x21'),_0x1f2f4f[_0x9393('0x1e')]):_0x1f2f4f[_0x9393('0x23')];_0x4f054b[_0x9393('0x4a')]=_0x1f2f4f[_0x9393('0x1e')];_0x4f054b[_0x9393('0x1d')]=_0x1f2f4f[_0x9393('0x1d')];RpcMemberReport[_0x9393('0x4f')](_0x4f054b);}};Report[_0x9393('0x10')][_0x9393('0x19')]=function(_0x8777f8){RpcVoiceTransferReport['transfers'][_0x8777f8['transfererlinkedid']]=_0x8777f8;};Report[_0x9393('0x10')][_0x9393('0x54')]=function(_0x2388b7){RpcVoiceTransferReport['attendedTransfer'](_0x2388b7);};module['exports']=Report;
\ No newline at end of file
index a62bdb2..9138b83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4913=['toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','name','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','find','mobile','phone','accountcode','updateStatusRealtime','info','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','lodash','moment','util','bluebird','../../../config/environment','../../../config/logger','ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','devicestatechange','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','error','[userReport][sipshowregistry]','inspect','[userReport][devicestatelist]','actionSipPeerStatus','catch','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','[userReport][registry]\x20registry:%s\x20state:%s','state','[userReport][registry]','username','stateRegistry','omit','event','actionid','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','trunk:save','syncDeviceState','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0x4913,0xb3));var _0x3491=function(_0x1bad49,_0xbe5177){_0x1bad49=_0x1bad49-0x0;var _0x4bf3bd=_0x4913[_0x1bad49];return _0x4bf3bd;};'use strict';var _=require(_0x3491('0x0'));var moment=require(_0x3491('0x1'));var util=require(_0x3491('0x2'));var Redis=require('ioredis');var BPromise=require(_0x3491('0x3'));var config=require(_0x3491('0x4'));var logger=require(_0x3491('0x5'))(_0x3491('0x6'));var ami=require('../ami');config[_0x3491('0x7')]=_[_0x3491('0x8')](config[_0x3491('0x7')],{'host':_0x3491('0x9'),'port':0x18eb});var io=require(_0x3491('0xa'))(new Redis(config[_0x3491('0x7')]));function UserReport(_0x455e25){this[_0x3491('0xb')]=_0x455e25[_0x3491('0xb')];this['agents']=_0x455e25[_0x3491('0xc')];this[_0x3491('0xd')]=_0x455e25[_0x3491('0xd')];ami['on'](_0x3491('0xe'),this[_0x3491('0xf')]['bind'](this));ami['on']('registry',this[_0x3491('0xf')][_0x3491('0x10')](this));ami['on'](_0x3491('0x11'),this['syncDeviceState'][_0x3491('0x10')](this));ami['on'](_0x3491('0x12'),this[_0x3491('0x13')][_0x3491('0x10')](this));return this[_0x3491('0x14')]();}function showSipRegistrations(){Promise[_0x3491('0x15')]()[_0x3491('0x16')](ami[_0x3491('0x17')]())['catch'](function(_0x2eacc4){logger[_0x3491('0x18')](_0x3491('0x19'),util[_0x3491('0x1a')](_0x2eacc4,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x3491('0x15')]()[_0x3491('0x16')](ami['actionDeviceStateList']())['catch'](function(_0x2586ab){logger[_0x3491('0x18')](_0x3491('0x1b'),util[_0x3491('0x1a')](_0x2586ab,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x3491('0x15')]()['then'](ami[_0x3491('0x1c')]())[_0x3491('0x1d')](function(_0x77b416){logger['error'](_0x3491('0x1e'),util[_0x3491('0x1a')](_0x77b416,{'showHidden':![],'depth':null}));});}UserReport[_0x3491('0x1f')][_0x3491('0x14')]=function(){setInterval(function(){BPromise[_0x3491('0x15')]()[_0x3491('0x16')](showSipRegistrations())[_0x3491('0x16')](listDeviceStates())[_0x3491('0x16')](showPeersStatus());},0x32c8);};UserReport[_0x3491('0x1f')][_0x3491('0x20')]=function(_0x10f899){return _0x10f899!==null&&!_[_0x3491('0x21')](_0x10f899);};UserReport['prototype'][_0x3491('0x22')]=function(_0x1a75b1,_0x50019d,_0x34dc6d){io['to'](_0x1a75b1)['emit'](_0x50019d,_0x34dc6d);};UserReport[_0x3491('0x1f')][_0x3491('0xf')]=function(_0x41ee64){try{if(this[_0x3491('0x20')](_0x41ee64)){logger['info'](_0x3491('0x23'),_0x41ee64['username'],_0x41ee64[_0x3491('0x24')]);logger['debug'](_0x3491('0x25'),util['inspect'](_0x41ee64,{'showHidden':![],'depth':null}));var _0x32bced=_['find'](this[_0x3491('0xb')],{'defaultuser':_0x41ee64[_0x3491('0x26')]});if(_0x32bced){_0x41ee64[_0x3491('0x27')]=_0x41ee64[_0x3491('0x24')];_['merge'](_0x32bced,_[_0x3491('0x28')](_0x41ee64,[_0x3491('0x29'),_0x3491('0x2a'),'username','state']));logger[_0x3491('0x2b')](_0x3491('0x2c'),util['inspect'](_0x32bced,{'showHidden':![],'depth':null}));this[_0x3491('0x22')](util[_0x3491('0x2d')](_0x3491('0x2e'),_0x32bced['name']),_0x3491('0x2f'),_0x32bced);}}}catch(_0xe76026){logger[_0x3491('0x18')](_0x3491('0x25'),util[_0x3491('0x1a')](_0xe76026,{'showHidden':![],'depth':null}));}};UserReport[_0x3491('0x1f')][_0x3491('0x30')]=function(_0x2d1408){try{if(this[_0x3491('0x20')](_0x2d1408)){logger['info']('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x2d1408[_0x3491('0x31')],_0x2d1408[_0x3491('0x24')]);logger[_0x3491('0x2b')](_0x3491('0x32'),util[_0x3491('0x1a')](_0x2d1408,{'showHidden':![],'depth':null}));if(this[_0x3491('0xc')][_0x2d1408[_0x3491('0x31')]]){if(!this['agents'][_0x2d1408[_0x3491('0x31')]][_0x3491('0x33')]||_0x2d1408['state'][_0x3491('0x34')]()==_0x3491('0x35')){this['agents'][_0x2d1408['device']][_0x3491('0x33')]=![];if(this['agents'][_0x2d1408[_0x3491('0x31')]][_0x3491('0x24')]!==_0x2d1408['state'][_0x3491('0x34')]()){this[_0x3491('0xc')][_0x2d1408[_0x3491('0x31')]][_0x3491('0x36')]=_[_0x3491('0x37')](moment()[_0x3491('0x2d')]('x'));}this['agents'][_0x2d1408[_0x3491('0x31')]][_0x3491('0x24')]=_0x2d1408[_0x3491('0x24')]['toLowerCase']();this[_0x3491('0xc')][_0x2d1408[_0x3491('0x31')]]['updateStatusRealtime'](_0x2d1408);}}else if(this[_0x3491('0xd')][_0x2d1408[_0x3491('0x31')]]){if(this[_0x3491('0xd')][_0x2d1408[_0x3491('0x31')]]['state']!==_0x2d1408[_0x3491('0x24')]['toLowerCase']()){this[_0x3491('0xd')][_0x2d1408[_0x3491('0x31')]][_0x3491('0x36')]=_[_0x3491('0x37')](moment()[_0x3491('0x2d')]('x'));}this[_0x3491('0xd')][_0x2d1408['device']][_0x3491('0x24')]=_0x2d1408[_0x3491('0x24')][_0x3491('0x34')]();logger[_0x3491('0x2b')](_0x3491('0x38'),util[_0x3491('0x1a')](this[_0x3491('0xd')][_0x2d1408[_0x3491('0x31')]],{'showHidden':![],'depth':null}));this[_0x3491('0x22')](util[_0x3491('0x2d')](_0x3491('0x39'),this[_0x3491('0xd')][_0x2d1408[_0x3491('0x31')]][_0x3491('0x3a')]),_0x3491('0x3b'),this['telephones'][_0x2d1408['device']]);}else if(this[_0x3491('0xb')][_0x2d1408['device']]){if(this[_0x3491('0xb')][_0x2d1408[_0x3491('0x31')]]['state']!==_0x2d1408[_0x3491('0x24')][_0x3491('0x34')]()){this[_0x3491('0xb')][_0x2d1408[_0x3491('0x31')]]['stateTime']=_[_0x3491('0x37')](moment()['format']('x'));}this[_0x3491('0xb')][_0x2d1408[_0x3491('0x31')]]['state']=_0x2d1408['state'][_0x3491('0x34')]();logger['debug'](_0x3491('0x3c'),util[_0x3491('0x1a')](this[_0x3491('0xb')][_0x2d1408[_0x3491('0x31')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x3491('0x2d')](_0x3491('0x2e'),this[_0x3491('0xb')][_0x2d1408[_0x3491('0x31')]][_0x3491('0x3a')]),_0x3491('0x2f'),this[_0x3491('0xb')][_0x2d1408[_0x3491('0x31')]]);}else if(_[_0x3491('0x3d')](_0x2d1408[_0x3491('0x31')],_0x3491('0x3e'))){var _0x1a565a=_0x2d1408[_0x3491('0x31')];var _0x311dba=_0x1a565a[_0x3491('0x3f')](_0x1a565a[_0x3491('0x40')]('/')+0x1,_0x1a565a[_0x3491('0x40')]('@'));var _0x56e303=_[_0x3491('0x41')](this[_0x3491('0xc')],function(_0x270455){return _0x270455[_0x3491('0x42')]==_0x311dba||_0x270455[_0x3491('0x43')]==_0x311dba||_0x270455[_0x3491('0x44')]==_0x311dba;});if(_0x56e303){if(_0x56e303['state']!==_0x2d1408[_0x3491('0x24')]['toLowerCase']()){_0x56e303[_0x3491('0x36')]=_['toNumber'](moment()[_0x3491('0x2d')]('x'));}_0x56e303[_0x3491('0x24')]=_0x2d1408[_0x3491('0x24')]['toLowerCase']();_0x56e303['local']=!![];_0x56e303[_0x3491('0x45')](_0x2d1408);}}}}catch(_0x554a20){logger[_0x3491('0x18')]('[userReport][devicestatechange]',util[_0x3491('0x1a')](_0x554a20,{'showHidden':![],'depth':null}));}};UserReport[_0x3491('0x1f')][_0x3491('0x13')]=function(_0x76e460){try{if(this[_0x3491('0x20')](_0x76e460)&&this[_0x3491('0x20')](_0x76e460[_0x3491('0x12')])){logger[_0x3491('0x46')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x76e460[_0x3491('0x47')],_0x76e460[_0x3491('0x48')],_0x76e460[_0x3491('0x12')]);logger['debug'](_0x3491('0x49'),util['inspect'](_0x76e460,{'showHidden':![],'depth':null}));if(this[_0x3491('0xc')][_0x76e460[_0x3491('0x47')]]){if(!this['agents'][_0x76e460['peer']][_0x3491('0x33')]||_0x76e460['peerstatus'][_0x3491('0x34')]()==_0x3491('0x4a')){this['agents'][_0x76e460['peer']]['local']=![];this['agents'][_0x76e460[_0x3491('0x47')]][_0x3491('0x4b')]=_0x76e460[_0x3491('0x12')][_0x3491('0x34')]();this[_0x3491('0xc')][_0x76e460[_0x3491('0x47')]][_0x3491('0x48')]=_0x76e460[_0x3491('0x48')];this['agents'][_0x76e460[_0x3491('0x47')]][_0x3491('0x45')](_0x76e460);}}else if(this[_0x3491('0xd')][_0x76e460['peer']]){this[_0x3491('0xd')][_0x76e460[_0x3491('0x47')]][_0x3491('0x4b')]=_0x76e460[_0x3491('0x12')][_0x3491('0x34')]();this[_0x3491('0xd')][_0x76e460['peer']][_0x3491('0x48')]=_0x76e460[_0x3491('0x48')];logger[_0x3491('0x2b')](_0x3491('0x4c'),util['inspect'](this['telephones'][_0x76e460[_0x3491('0x47')]],{'showHidden':![],'depth':null}));this[_0x3491('0x22')](util[_0x3491('0x2d')](_0x3491('0x39'),this[_0x3491('0xd')][_0x76e460[_0x3491('0x47')]]['name']),_0x3491('0x3b'),this[_0x3491('0xd')][_0x76e460[_0x3491('0x47')]]);}else if(this[_0x3491('0xb')][_0x76e460['peer']]){this['trunks'][_0x76e460['peer']][_0x3491('0x4b')]=_0x76e460['peerstatus'][_0x3491('0x34')]();this[_0x3491('0xb')][_0x76e460[_0x3491('0x47')]][_0x3491('0x48')]=_0x76e460[_0x3491('0x48')];logger['debug'](_0x3491('0x4d'),util[_0x3491('0x1a')](this['trunks'][_0x76e460[_0x3491('0x47')]],{'showHidden':![],'depth':null}));this[_0x3491('0x22')](util[_0x3491('0x2d')](_0x3491('0x2e'),this[_0x3491('0xb')][_0x76e460[_0x3491('0x47')]][_0x3491('0x3a')]),_0x3491('0x2f'),this[_0x3491('0xb')][_0x76e460[_0x3491('0x47')]]);}}}catch(_0x1422bc){logger[_0x3491('0x18')](_0x3491('0x49'),util['inspect'](_0x1422bc,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;
\ No newline at end of file
+var _0xe84a=['mobile','phone','accountcode','updateStatusRealtime','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','registered','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s','status','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','moment','util','bluebird','../../../config/environment','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','bind','registry','syncRegistry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','actionDeviceStateList','inspect','actionSipPeerStatus','prototype','isNotNull','isUndefined','emit','info','debug','[userReport][registry]','find','username','stateRegistry','state','merge','omit','event','[userReport][registry]\x20sending\x20trunk:save\x20event:','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','[userReport][devicestatechange]','device','local','inuse','toLowerCase','stateTime','toNumber','format','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf'];(function(_0x537a55,_0x80fd11){var _0x3aec46=function(_0x5b71a2){while(--_0x5b71a2){_0x537a55['push'](_0x537a55['shift']());}};_0x3aec46(++_0x80fd11);}(_0xe84a,0x1e8));var _0xae84=function(_0xee435c,_0x52dd5e){_0xee435c=_0xee435c-0x0;var _0xcfb172=_0xe84a[_0xee435c];return _0xcfb172;};'use strict';var _=require('lodash');var moment=require(_0xae84('0x0'));var util=require(_0xae84('0x1'));var Redis=require('ioredis');var BPromise=require(_0xae84('0x2'));var config=require(_0xae84('0x3'));var logger=require('../../../config/logger')(_0xae84('0x4'));var ami=require(_0xae84('0x5'));config[_0xae84('0x6')]=_[_0xae84('0x7')](config[_0xae84('0x6')],{'host':_0xae84('0x8'),'port':0x18eb});var io=require(_0xae84('0x9'))(new Redis(config[_0xae84('0x6')]));function UserReport(_0x54a0a6){this[_0xae84('0xa')]=_0x54a0a6[_0xae84('0xa')];this[_0xae84('0xb')]=_0x54a0a6[_0xae84('0xb')];this[_0xae84('0xc')]=_0x54a0a6[_0xae84('0xc')];ami['on'](_0xae84('0xd'),this['syncRegistry'][_0xae84('0xe')](this));ami['on'](_0xae84('0xf'),this[_0xae84('0x10')]['bind'](this));ami['on'](_0xae84('0x11'),this[_0xae84('0x12')][_0xae84('0xe')](this));ami['on'](_0xae84('0x13'),this[_0xae84('0x14')]['bind'](this));return this[_0xae84('0x15')]();}function showSipRegistrations(){Promise[_0xae84('0x16')]()[_0xae84('0x17')](ami[_0xae84('0x18')]())[_0xae84('0x19')](function(_0x2bb64e){logger[_0xae84('0x1a')](_0xae84('0x1b'),util['inspect'](_0x2bb64e,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xae84('0x16')]()[_0xae84('0x17')](ami[_0xae84('0x1c')]())['catch'](function(_0x293041){logger[_0xae84('0x1a')]('[userReport][devicestatelist]',util[_0xae84('0x1d')](_0x293041,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xae84('0x16')]()['then'](ami[_0xae84('0x1e')]())[_0xae84('0x19')](function(_0x430e01){logger[_0xae84('0x1a')]('[userReport][sippeerstatus]',util['inspect'](_0x430e01,{'showHidden':![],'depth':null}));});}UserReport[_0xae84('0x1f')][_0xae84('0x15')]=function(){setInterval(function(){BPromise[_0xae84('0x16')]()['then'](showSipRegistrations())[_0xae84('0x17')](listDeviceStates())[_0xae84('0x17')](showPeersStatus());},0x32c8);};UserReport['prototype'][_0xae84('0x20')]=function(_0x55f0d6){return _0x55f0d6!==null&&!_[_0xae84('0x21')](_0x55f0d6);};UserReport[_0xae84('0x1f')][_0xae84('0x22')]=function(_0x1ef2b2,_0x87e744,_0x3411bb){io['to'](_0x1ef2b2)[_0xae84('0x22')](_0x87e744,_0x3411bb);};UserReport[_0xae84('0x1f')][_0xae84('0x10')]=function(_0x4c8e4f){try{if(this[_0xae84('0x20')](_0x4c8e4f)){logger[_0xae84('0x23')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x4c8e4f['username'],_0x4c8e4f['state']);logger[_0xae84('0x24')](_0xae84('0x25'),util['inspect'](_0x4c8e4f,{'showHidden':![],'depth':null}));var _0x31569a=_[_0xae84('0x26')](this[_0xae84('0xa')],{'defaultuser':_0x4c8e4f[_0xae84('0x27')]});if(_0x31569a){_0x4c8e4f[_0xae84('0x28')]=_0x4c8e4f[_0xae84('0x29')];_[_0xae84('0x2a')](_0x31569a,_[_0xae84('0x2b')](_0x4c8e4f,[_0xae84('0x2c'),'actionid',_0xae84('0x27'),_0xae84('0x29')]));logger[_0xae84('0x24')](_0xae84('0x2d'),util[_0xae84('0x1d')](_0x31569a,{'showHidden':![],'depth':null}));this[_0xae84('0x22')](util['format'](_0xae84('0x2e'),_0x31569a[_0xae84('0x2f')]),_0xae84('0x30'),_0x31569a);}}}catch(_0x22791a){logger['error'](_0xae84('0x25'),util[_0xae84('0x1d')](_0x22791a,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xae84('0x12')]=function(_0x4362fb){try{if(this[_0xae84('0x20')](_0x4362fb)){logger[_0xae84('0x23')](_0xae84('0x31'),_0x4362fb['device'],_0x4362fb[_0xae84('0x29')]);logger['debug'](_0xae84('0x32'),util[_0xae84('0x1d')](_0x4362fb,{'showHidden':![],'depth':null}));if(this['agents'][_0x4362fb[_0xae84('0x33')]]){if(!this['agents'][_0x4362fb['device']][_0xae84('0x34')]||_0x4362fb['state']['toLowerCase']()==_0xae84('0x35')){this[_0xae84('0xb')][_0x4362fb[_0xae84('0x33')]][_0xae84('0x34')]=![];if(this[_0xae84('0xb')][_0x4362fb[_0xae84('0x33')]]['state']!==_0x4362fb['state'][_0xae84('0x36')]()){this[_0xae84('0xb')][_0x4362fb[_0xae84('0x33')]][_0xae84('0x37')]=_[_0xae84('0x38')](moment()[_0xae84('0x39')]('x'));}this['agents'][_0x4362fb[_0xae84('0x33')]]['state']=_0x4362fb[_0xae84('0x29')]['toLowerCase']();this['agents'][_0x4362fb['device']]['updateStatusRealtime'](_0x4362fb);}}else if(this[_0xae84('0xc')][_0x4362fb[_0xae84('0x33')]]){if(this[_0xae84('0xc')][_0x4362fb[_0xae84('0x33')]][_0xae84('0x29')]!==_0x4362fb[_0xae84('0x29')]['toLowerCase']()){this[_0xae84('0xc')][_0x4362fb[_0xae84('0x33')]][_0xae84('0x37')]=_['toNumber'](moment()[_0xae84('0x39')]('x'));}this['telephones'][_0x4362fb[_0xae84('0x33')]]['state']=_0x4362fb[_0xae84('0x29')]['toLowerCase']();logger[_0xae84('0x24')](_0xae84('0x3a'),util[_0xae84('0x1d')](this[_0xae84('0xc')][_0x4362fb[_0xae84('0x33')]],{'showHidden':![],'depth':null}));this[_0xae84('0x22')](util[_0xae84('0x39')]('telephone:%s',this[_0xae84('0xc')][_0x4362fb[_0xae84('0x33')]][_0xae84('0x2f')]),_0xae84('0x3b'),this[_0xae84('0xc')][_0x4362fb[_0xae84('0x33')]]);}else if(this[_0xae84('0xa')][_0x4362fb[_0xae84('0x33')]]){if(this[_0xae84('0xa')][_0x4362fb[_0xae84('0x33')]][_0xae84('0x29')]!==_0x4362fb[_0xae84('0x29')][_0xae84('0x36')]()){this[_0xae84('0xa')][_0x4362fb[_0xae84('0x33')]][_0xae84('0x37')]=_[_0xae84('0x38')](moment()[_0xae84('0x39')]('x'));}this['trunks'][_0x4362fb[_0xae84('0x33')]][_0xae84('0x29')]=_0x4362fb['state']['toLowerCase']();logger[_0xae84('0x24')](_0xae84('0x3c'),util[_0xae84('0x1d')](this[_0xae84('0xa')][_0x4362fb[_0xae84('0x33')]],{'showHidden':![],'depth':null}));this[_0xae84('0x22')](util[_0xae84('0x39')](_0xae84('0x2e'),this[_0xae84('0xa')][_0x4362fb[_0xae84('0x33')]][_0xae84('0x2f')]),_0xae84('0x30'),this[_0xae84('0xa')][_0x4362fb[_0xae84('0x33')]]);}else if(_[_0xae84('0x3d')](_0x4362fb[_0xae84('0x33')],_0xae84('0x3e'))){var _0x27949f=_0x4362fb[_0xae84('0x33')];var _0x260098=_0x27949f[_0xae84('0x3f')](_0x27949f['indexOf']('/')+0x1,_0x27949f[_0xae84('0x40')]('@'));var _0x2599ce=_[_0xae84('0x26')](this[_0xae84('0xb')],function(_0x5c99e0){return _0x5c99e0[_0xae84('0x41')]==_0x260098||_0x5c99e0[_0xae84('0x42')]==_0x260098||_0x5c99e0[_0xae84('0x43')]==_0x260098;});if(_0x2599ce){if(_0x2599ce[_0xae84('0x29')]!==_0x4362fb[_0xae84('0x29')][_0xae84('0x36')]()){_0x2599ce[_0xae84('0x37')]=_[_0xae84('0x38')](moment()['format']('x'));}_0x2599ce[_0xae84('0x29')]=_0x4362fb[_0xae84('0x29')][_0xae84('0x36')]();_0x2599ce[_0xae84('0x34')]=!![];_0x2599ce[_0xae84('0x44')](_0x4362fb);}}}}catch(_0x8e34fe){logger[_0xae84('0x1a')](_0xae84('0x32'),util[_0xae84('0x1d')](_0x8e34fe,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xae84('0x14')]=function(_0x18693a){try{if(this[_0xae84('0x20')](_0x18693a)&&this['isNotNull'](_0x18693a['peerstatus'])){logger[_0xae84('0x23')](_0xae84('0x45'),_0x18693a[_0xae84('0x46')],_0x18693a['address'],_0x18693a[_0xae84('0x13')]);logger[_0xae84('0x24')](_0xae84('0x47'),util[_0xae84('0x1d')](_0x18693a,{'showHidden':![],'depth':null}));if(this[_0xae84('0xb')][_0x18693a[_0xae84('0x46')]]){if(!this['agents'][_0x18693a['peer']][_0xae84('0x34')]||_0x18693a[_0xae84('0x13')][_0xae84('0x36')]()==_0xae84('0x48')){this[_0xae84('0xb')][_0x18693a['peer']][_0xae84('0x34')]=![];this['agents'][_0x18693a[_0xae84('0x46')]]['status']=_0x18693a[_0xae84('0x13')][_0xae84('0x36')]();this[_0xae84('0xb')][_0x18693a[_0xae84('0x46')]]['address']=_0x18693a[_0xae84('0x49')];this[_0xae84('0xb')][_0x18693a[_0xae84('0x46')]]['updateStatusRealtime'](_0x18693a);}}else if(this[_0xae84('0xc')][_0x18693a[_0xae84('0x46')]]){this['telephones'][_0x18693a[_0xae84('0x46')]]['status']=_0x18693a[_0xae84('0x13')][_0xae84('0x36')]();this['telephones'][_0x18693a['peer']][_0xae84('0x49')]=_0x18693a[_0xae84('0x49')];logger[_0xae84('0x24')](_0xae84('0x4a'),util[_0xae84('0x1d')](this[_0xae84('0xc')][_0x18693a['peer']],{'showHidden':![],'depth':null}));this[_0xae84('0x22')](util[_0xae84('0x39')](_0xae84('0x4b'),this['telephones'][_0x18693a[_0xae84('0x46')]]['name']),'telephone:save',this[_0xae84('0xc')][_0x18693a['peer']]);}else if(this[_0xae84('0xa')][_0x18693a[_0xae84('0x46')]]){this['trunks'][_0x18693a[_0xae84('0x46')]][_0xae84('0x4c')]=_0x18693a[_0xae84('0x13')][_0xae84('0x36')]();this[_0xae84('0xa')][_0x18693a['peer']]['address']=_0x18693a[_0xae84('0x49')];logger['debug'](_0xae84('0x4d'),util[_0xae84('0x1d')](this[_0xae84('0xa')][_0x18693a[_0xae84('0x46')]],{'showHidden':![],'depth':null}));this[_0xae84('0x22')](util[_0xae84('0x39')](_0xae84('0x2e'),this['trunks'][_0x18693a['peer']][_0xae84('0x2f')]),_0xae84('0x30'),this[_0xae84('0xa')][_0x18693a[_0xae84('0x46')]]);}}}catch(_0x2a0215){logger[_0xae84('0x1a')](_0xae84('0x47'),util[_0xae84('0x1d')](_0x2a0215,{'showHidden':![],'depth':null}));}};module[_0xae84('0x4e')]=UserReport;
\ No newline at end of file
index 2665f6e..96e6ed7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','uniqueid','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','merge','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','voiceChannels','routealias','interface','pick','destconnectedlinenum','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:%s','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answered_elsewhere','[%s][voiceAgentReport][agentconnect]','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','error','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','agentringnoanswer','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','reason','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','agent','talktime','acw','acwtime','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]','lodash','moment','util','../../../config/logger','../ami'];(function(_0x5cfdd7,_0x415006){var _0x35246b=function(_0x457060){while(--_0x457060){_0x5cfdd7['push'](_0x5cfdd7['shift']());}};_0x35246b(++_0x415006);}(_0xa9e0,0x123));var _0x0a9e=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xa9e0[_0x934425];return _0x31d596;};'use strict';var _=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x0a9e('0x3'))('ami');var ami=require(_0x0a9e('0x4'));config[_0x0a9e('0x5')]=_[_0x0a9e('0x6')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x5')]));function VoiceAgentReport(_0x441e3a){this[_0x0a9e('0x8')]={};this['voiceChannels']=_0x441e3a['channels'];this[_0x0a9e('0x9')]=_0x441e3a['voiceQueues'];this['agents']=_0x441e3a[_0x0a9e('0xa')];this[_0x0a9e('0xb')]={};ami['on'](_0x0a9e('0xc'),this[_0x0a9e('0xd')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0xf'),this['syncAgentConnect']['bind'](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x10'),this[_0x0a9e('0x11')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x12'),this[_0x0a9e('0x13')]['bind'](this));ami['on'](_0x0a9e('0x14'),this[_0x0a9e('0x15')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0xe')](this));ami['on']('musiconholdstart',this[_0x0a9e('0x18')]['bind'](this));ami['on'](_0x0a9e('0x19'),this['syncMusicOnHoldStop'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x1a'),this['syncAttendedTransfer'][_0x0a9e('0xe')](this));ami['on']('blindtransfer',this[_0x0a9e('0x1b')][_0x0a9e('0xe')](this));}VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1d')]=function(_0x31b1ca,_0x2eb11f,_0x530eb7){io['to'](_0x31b1ca)[_0x0a9e('0x1d')](_0x2eb11f,_0x530eb7);};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1e')]=function(_0x1c696a){return _0x1c696a!==null&&!_[_0x0a9e('0x1f')](_0x1c696a);};VoiceAgentReport['prototype'][_0x0a9e('0xd')]=function(_0x155cce){try{if(this['isNotNull'](_0x155cce)){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x155cce['uniqueid'],_0x155cce[_0x0a9e('0x21')],_0x155cce[_0x0a9e('0x22')]);logger[_0x0a9e('0x23')](_0x0a9e('0x24'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x155cce,{'showHidden':![],'depth':null}));if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]]={};}if(_[_0x0a9e('0x1f')](this['channels'][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]={'agentcalledAt':moment()['format'](_0x0a9e('0x27')),'lastevent':'called','mandatoryDisposition':this[_0x0a9e('0x9')][_0x155cce['queue']]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x29')]||![]:![],'type':this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x2a')]||'inbound':_0x0a9e('0x2b'),'variables':this[_0x0a9e('0xb')][_0x155cce[_0x0a9e('0x26')]]};}_[_0x0a9e('0x2c')](this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],_[_0x0a9e('0x2d')](_0x155cce,[_0x0a9e('0x2e'),_0x0a9e('0x2f')]));logger[_0x0a9e('0x23')](_0x0a9e('0x30'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x31'),this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]);logger['debug'](_0x0a9e('0x32'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x33')]('user:%s',_0x155cce[_0x0a9e('0x21')]),'user:called',this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]);}}catch(_0x3f3d41){logger['error'](_0x0a9e('0x34'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x3f3d41,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncAgentConnect']=function(_0x54135e){try{if(this[_0x0a9e('0x1e')](_0x54135e)){if(this['channels'][_0x54135e[_0x0a9e('0x26')]]){logger[_0x0a9e('0x23')](_0x0a9e('0x35'),_0x54135e[_0x0a9e('0x26')],util['inspect'](_0x54135e,{'showHidden':![],'depth':null}));for(var _0x31916f in this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]]){if(this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x31916f)){if(_0x54135e[_0x0a9e('0x22')]===_0x31916f){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x54135e[_0x0a9e('0x26')],_0x54135e[_0x0a9e('0x21')],_0x54135e['destuniqueid']);this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x37')]=moment()[_0x0a9e('0x33')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x38')]=_0x54135e['connectedlinename'];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x39')]=_0x54135e['connectedlinenum'];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3a')]=_0x54135e[_0x0a9e('0x3a')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3b')]=_0x54135e[_0x0a9e('0x3b')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3c')]=_0x54135e[_0x0a9e('0x3c')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3d')]='connect';if(this['voiceChannels'][this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x26')]]){var _0x315881=this[_0x0a9e('0x3e')][this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x26')]][_0x0a9e('0x3f')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3f')]=_0x315881;_0x54135e['routealias']=_0x315881;}_[_0x0a9e('0x2c')](this[_0x0a9e('0xa')][_0x54135e[_0x0a9e('0x40')]],_[_0x0a9e('0x41')](_0x54135e,[_0x0a9e('0x28'),_0x0a9e('0x42'),_0x0a9e('0x3f')]));logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:',_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami['emit'](_0x0a9e('0x43'),this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]]);logger[_0x0a9e('0x23')](_0x0a9e('0x44'),_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x33')](_0x0a9e('0x45'),_0x54135e[_0x0a9e('0x21')]),_0x0a9e('0x46'),this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x54135e[_0x0a9e('0x22')]]);}else if(!this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['agentringnoanswer']&&!this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')](_0x0a9e('0x47'),_0x54135e[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x21')],_0x31916f);this['channels'][_0x54135e['uniqueid']][_0x31916f]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x48')]=moment()['format'](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['answeredelsewheredestinationuniqueid']=_0x54135e[_0x0a9e('0x22')];this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f]['answeredelsewheremembername']=_0x54135e[_0x0a9e('0x21')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f]['lastevent']=_0x0a9e('0x49');this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['reason']=_0x0a9e('0x49');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')]('custom:agentansweredelsewhere',this['channels'][_0x54135e['uniqueid']][_0x31916f]);}}}}}}catch(_0x2da03c){logger['error'](_0x0a9e('0x4a'),_0x54135e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2da03c,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x4b')]=function(_0x272738){try{if(this[_0x0a9e('0x1e')](_0x272738)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x272738[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x272738,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']]){logger[_0x0a9e('0x20')](_0x0a9e('0x4c'),_0x272738['uniqueid'],_0x272738[_0x0a9e('0x21')],_0x272738['destuniqueid']);this[_0x0a9e('0x8')][_0x272738['uniqueid']][_0x272738['destuniqueid']]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x272738['uniqueid']][_0x272738[_0x0a9e('0x22')]][_0x0a9e('0x48')]=moment()[_0x0a9e('0x33')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']][_0x0a9e('0x3d')]='rejected';this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738[_0x0a9e('0x22')]]['reason']=_0x0a9e('0x4d');logger[_0x0a9e('0x23')](_0x0a9e('0x4e'),_0x272738[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x4f'),this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738[_0x0a9e('0x22')]]);}}}catch(_0x4d4a35){logger[_0x0a9e('0x50')](_0x0a9e('0x51'),_0x272738[_0x0a9e('0x26')],util['inspect'](_0x4d4a35,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncQueueCallerAbandon']=function(_0x5211e3){try{if(this[_0x0a9e('0x1e')](_0x5211e3)){logger[_0x0a9e('0x23')](_0x0a9e('0x52'),_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x5211e3,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]]){for(var _0x54a37d in this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x54a37d)&&!this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x53')]&&!this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d]['agentcomplete']){logger[_0x0a9e('0x20')](_0x0a9e('0x54'),_0x5211e3[_0x0a9e('0x26')],this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x21')],_0x54a37d);this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x53')]=!![];this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x48')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x3d')]=_0x0a9e('0x55');this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x56')]=_0x0a9e('0x55');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x5211e3['uniqueid']][_0x54a37d],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')]('custom:agentqueuecallerabandon',this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d]);}}}}}catch(_0x4c46c1){logger[_0x0a9e('0x50')](_0x0a9e('0x57'),_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4c46c1,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x13')]=function(_0x2e9552){try{if(this[_0x0a9e('0x1e')](_0x2e9552)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2e9552,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]]){for(var _0x4abc8f in this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x4abc8f)){if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x37')]&&!this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')](_0x0a9e('0x58'),_0x2e9552[_0x0a9e('0x26')],this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x21')],_0x4abc8f);this[_0x0a9e('0x8')][_0x2e9552['uniqueid']][_0x4abc8f][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x59')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]['lastevent']=_0x0a9e('0x5a');this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x56')]=_0x2e9552['reason']==_0x0a9e('0x5b')?_0x0a9e('0x5c'):_0x2e9552[_0x0a9e('0x56')];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x5d')]=_0x2e9552[_0x0a9e('0x5d')];if(this['voiceQueues'][_0x2e9552[_0x0a9e('0x28')]]&&this[_0x0a9e('0x9')][_0x2e9552[_0x0a9e('0x28')]][_0x0a9e('0x5e')]){this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x5f')]=this['voiceQueues'][_0x2e9552[_0x0a9e('0x28')]]['acwTimeout'];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x60')]=!![];}this[_0x0a9e('0xa')][_0x2e9552['interface']]=_['omit'](this[_0x0a9e('0xa')][_0x2e9552[_0x0a9e('0x40')]],[_0x0a9e('0x28'),'destconnectedlinenum']);logger[_0x0a9e('0x23')](_0x0a9e('0x61'),_0x2e9552['uniqueid'],util['inspect'](this[_0x0a9e('0x8')][_0x2e9552['uniqueid']][_0x4abc8f],{'showHidden':![],'depth':null}));ami['emit']('custom:agentcomplete',this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]);logger[_0x0a9e('0x23')](_0x0a9e('0x62'),_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f],{'showHidden':![],'depth':null}));this['emit'](util[_0x0a9e('0x33')](_0x0a9e('0x45'),_0x2e9552[_0x0a9e('0x21')]),_0x0a9e('0x63'),this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]);}}}}}}catch(_0x32f761){logger[_0x0a9e('0x50')]('[%s][voiceAgentReport][agentcomplete]',_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x32f761,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x255e49){try{if(this[_0x0a9e('0x1e')](_0x255e49)){logger[_0x0a9e('0x23')](_0x0a9e('0x64'),_0x255e49['uniqueid'],util[_0x0a9e('0x25')](_0x255e49,{'showHidden':![],'depth':null}));this[_0x0a9e('0x65')](_0x255e49['uniqueid'],_[_0x0a9e('0x66')](_0x255e49[_0x0a9e('0x67')])[0x0],_0x255e49[_0x0a9e('0x68')]);if(this['channels'][_0x255e49[_0x0a9e('0x26')]]){for(var _0x52ec10 in this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x52ec10)){logger[_0x0a9e('0x20')](_0x0a9e('0x69'),_0x255e49[_0x0a9e('0x26')],_0x52ec10,_['keys'](_0x255e49[_0x0a9e('0x67')])[0x0],_0x255e49[_0x0a9e('0x68')]);if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')])){this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')]=this[_0x0a9e('0xb')][_0x255e49['uniqueid']];}}}}}catch(_0xc81b64){logger[_0x0a9e('0x50')](_0x0a9e('0x6a'),_0x255e49[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xc81b64,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x65')]=function(_0x1756c7,_0x5ce99d,_0x23b447){var _0x5e725e=[_0x0a9e('0x6b'),_0x0a9e('0x6c'),_0x0a9e('0x6d'),_0x0a9e('0x6e'),'rtpaudioqosloss',_0x0a9e('0x6f'),'rtpaudioqosrtt',_0x0a9e('0x70'),_0x0a9e('0x71'),'sipuri',_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),'memberdynamic','memberinterface',_0x0a9e('0x75'),_0x0a9e('0x21'),_0x0a9e('0x76'),_0x0a9e('0x77')];if(!_[_0x0a9e('0x78')](_0x5ce99d)&&!_[_0x0a9e('0x79')](_0x5e725e,_0x5ce99d)){if(_[_0x0a9e('0x1f')](this[_0x0a9e('0xb')][_0x1756c7])){this[_0x0a9e('0xb')][_0x1756c7]={};}this['variables'][_0x1756c7][_0x5ce99d]=_0x23b447;}};VoiceAgentReport[_0x0a9e('0x1c')]['syncHangup']=function(_0x287324){try{if(this[_0x0a9e('0x1e')](_0x287324)){logger[_0x0a9e('0x23')](_0x0a9e('0x7a'),_0x287324[_0x0a9e('0x26')],util['inspect'](_0x287324,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]){for(var _0x2791c5 in this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]){if(this['channels'][_0x287324['uniqueid']][_0x0a9e('0x36')](_0x2791c5)){if(this['channels'][_0x287324[_0x0a9e('0x26')]][_0x2791c5][_0x0a9e('0x56')]==_0x0a9e('0x5b')&&this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]][_0x2791c5][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x287324[_0x0a9e('0x26')],_0x2791c5);this['channels'][_0x287324[_0x0a9e('0x26')]][_0x2791c5]['agentcompleteAt']=moment()[_0x0a9e('0x33')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger['debug'](_0x0a9e('0x7b'),_0x287324[_0x0a9e('0x26')],util['inspect'](_[_0x0a9e('0x7c')](this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x7d'),_['values'](this['channels'][_0x287324[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]];}if(this[_0x0a9e('0xb')][_0x287324[_0x0a9e('0x26')]]){delete this['variables'][_0x287324[_0x0a9e('0x26')]];}}}catch(_0xadce3d){logger['error'](_0x0a9e('0x7e'),_0x287324[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xadce3d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x7f')]=function(_0x23b39e){try{if(this[_0x0a9e('0x1e')](_0x23b39e)){logger[_0x0a9e('0x23')](_0x0a9e('0x80'),_0x23b39e[_0x0a9e('0x26')],util['inspect'](_0x23b39e,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]]){for(var _0x2ada60 in this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]]){if(this['channels'][_0x23b39e['transfereeuniqueid']][_0x0a9e('0x36')](_0x2ada60)){if(_0x23b39e[_0x0a9e('0x82')]===_0x2ada60){logger[_0x0a9e('0x20')](_0x0a9e('0x83'),_0x23b39e[_0x0a9e('0x26')],this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x21')],_0x2ada60);var _0x3450ae=moment();this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x23b39e['transfereeuniqueid']][_0x2ada60][_0x0a9e('0x59')]=moment()[_0x0a9e('0x33')](_0x0a9e('0x27'));this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60]['lastevent']=_0x0a9e('0x5a');this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x56')]=_0x0a9e('0x5b');this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x5d')]=_0x3450ae[_0x0a9e('0x84')](this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x37')],_0x0a9e('0x85'));}}}}if(this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x86')]]){var _0x248368=this['channels'][_0x23b39e['secondtransfereruniqueid']];this[_0x0a9e('0x8')][_0x23b39e['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]];this['channels'][_0x23b39e[_0x0a9e('0x81')]]=_0x248368;}}}catch(_0xe2b083){logger[_0x0a9e('0x50')](_0x0a9e('0x87'),_0x23b39e['uniqueid'],util[_0x0a9e('0x25')](_0xe2b083,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1b')]=function(_0x34a791){try{if(this['isNotNull'](_0x34a791)){logger[_0x0a9e('0x23')](_0x0a9e('0x88'),_0x34a791[_0x0a9e('0x26')],util['inspect'](_0x34a791,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]]){for(var _0x17b29d in this['channels'][_0x34a791[_0x0a9e('0x81')]]){if(this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x0a9e('0x36')](_0x17b29d)){if(_0x34a791[_0x0a9e('0x89')]===_0x17b29d){logger['info'](_0x0a9e('0x8a'),_0x34a791[_0x0a9e('0x26')],this['channels'][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x21')],_0x17b29d);var _0x1f6f1c=moment();this['channels'][_0x34a791['transfereeuniqueid']][_0x17b29d]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d]['agentcompleteAt']=_0x1f6f1c;this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x3d')]='complete';this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x56')]=_0x0a9e('0x5b');this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x5d')]=_0x1f6f1c[_0x0a9e('0x84')](this[_0x0a9e('0x8')][_0x34a791['transfereeuniqueid']][_0x17b29d][_0x0a9e('0x37')],'seconds');}}}}}}catch(_0x138cf5){logger[_0x0a9e('0x50')](_0x0a9e('0x8b'),_0x34a791[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x138cf5,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncMusicOnHoldStart']=function(_0x1a0314){var _0x33da81='';try{if(this[_0x0a9e('0x1e')](_0x1a0314)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x1a0314[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1a0314,{'showHidden':![],'depth':null}));if(_0x1a0314[_0x0a9e('0x8c')]){_0x33da81=_0x1a0314[_0x0a9e('0x8c')][_0x0a9e('0x8d')](0x0,_0x1a0314[_0x0a9e('0x8c')][_0x0a9e('0x8e')]('-'));if(this[_0x0a9e('0xa')][_0x33da81]){logger[_0x0a9e('0x20')](_0x0a9e('0x8f'),_0x1a0314['uniqueid'],_0x33da81);this[_0x0a9e('0xa')][_0x33da81][_0x0a9e('0x90')]=!![];}}}}catch(_0x2ff265){logger[_0x0a9e('0x50')](_0x0a9e('0x91'),_0x1a0314[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2ff265,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncMusicOnHoldStop']=function(_0x3b581c){var _0xd2391='';try{if(this[_0x0a9e('0x1e')](_0x3b581c)){logger['debug'](_0x0a9e('0x92'),_0x3b581c[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x3b581c,{'showHidden':![],'depth':null}));if(_0x3b581c[_0x0a9e('0x8c')]){_0xd2391=_0x3b581c[_0x0a9e('0x8c')][_0x0a9e('0x8d')](0x0,_0x3b581c[_0x0a9e('0x8c')][_0x0a9e('0x8e')]('-'));if(this[_0x0a9e('0xa')][_0xd2391]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x3b581c[_0x0a9e('0x26')],_0xd2391);this[_0x0a9e('0xa')][_0xd2391][_0x0a9e('0x90')]=![];}}}}catch(_0x3db98f){logger[_0x0a9e('0x50')](_0x0a9e('0x93'),_0x3b581c['uniqueid'],util[_0x0a9e('0x25')](_0x3db98f,{'showHidden':![],'depth':null}));}};module['exports']=VoiceAgentReport;
\ No newline at end of file
+var _0x1488=['channels','voiceChannels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','queuecallerabandon','syncQueueCallerAbandon','syncAgentComplete','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart','syncMusicOnHoldStop','syncAttendedTransfer','prototype','isNotNull','isUndefined','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','debug','inspect','format','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','voice','merge','omit','event','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','emit','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','user:called','error','[%s][voiceAgentReport][agentconnect]\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','hasOwnProperty','agentcomplete','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','agent','talktime','acw','acwtime','acwTimeout','agentacw','interface','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','sipuri','bridgepeer','memberdynamic','memberinterface','memberlastcall','memberpenalty','isNil','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','syncBlindTransfer','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','util','ioredis','../../../config/environment','../ami','defaults','redis','localhost','socket.io-emitter'];(function(_0x15123d,_0x231945){var _0xe6145f=function(_0x2bea01){while(--_0x2bea01){_0x15123d['push'](_0x15123d['shift']());}};_0xe6145f(++_0x231945);}(_0x1488,0x88));var _0x8148=function(_0x4fbb15,_0x21be0c){_0x4fbb15=_0x4fbb15-0x0;var _0x436338=_0x1488[_0x4fbb15];return _0x436338;};'use strict';var _=require(_0x8148('0x0'));var moment=require('moment');var util=require(_0x8148('0x1'));var Redis=require(_0x8148('0x2'));var config=require(_0x8148('0x3'));var logger=require('../../../config/logger')('ami');var ami=require(_0x8148('0x4'));config['redis']=_[_0x8148('0x5')](config[_0x8148('0x6')],{'host':_0x8148('0x7'),'port':0x18eb});var io=require(_0x8148('0x8'))(new Redis(config[_0x8148('0x6')]));function VoiceAgentReport(_0x2ac35d){this[_0x8148('0x9')]={};this[_0x8148('0xa')]=_0x2ac35d['channels'];this[_0x8148('0xb')]=_0x2ac35d[_0x8148('0xb')];this[_0x8148('0xc')]=_0x2ac35d[_0x8148('0xc')];this[_0x8148('0xd')]={};ami['on'](_0x8148('0xe'),this[_0x8148('0xf')][_0x8148('0x10')](this));ami['on'](_0x8148('0x11'),this[_0x8148('0x12')][_0x8148('0x10')](this));ami['on'](_0x8148('0x13'),this['syncAgentRingNoAnswer'][_0x8148('0x10')](this));ami['on'](_0x8148('0x14'),this[_0x8148('0x15')]['bind'](this));ami['on']('agentcomplete',this[_0x8148('0x16')][_0x8148('0x10')](this));ami['on']('varset',this[_0x8148('0x17')][_0x8148('0x10')](this));ami['on'](_0x8148('0x18'),this[_0x8148('0x19')][_0x8148('0x10')](this));ami['on']('musiconholdstart',this[_0x8148('0x1a')]['bind'](this));ami['on']('musiconholdstop',this[_0x8148('0x1b')]['bind'](this));ami['on']('attendedtransfer',this[_0x8148('0x1c')]['bind'](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0x8148('0x10')](this));}VoiceAgentReport['prototype']['emit']=function(_0x32cdba,_0x4b04f5,_0x1e5e6b){io['to'](_0x32cdba)['emit'](_0x4b04f5,_0x1e5e6b);};VoiceAgentReport[_0x8148('0x1d')][_0x8148('0x1e')]=function(_0x269fa7){return _0x269fa7!==null&&!_[_0x8148('0x1f')](_0x269fa7);};VoiceAgentReport[_0x8148('0x1d')][_0x8148('0xf')]=function(_0x3c0113){try{if(this[_0x8148('0x1e')](_0x3c0113)){logger[_0x8148('0x20')](_0x8148('0x21'),_0x3c0113[_0x8148('0x22')],_0x3c0113[_0x8148('0x23')],_0x3c0113[_0x8148('0x24')]);logger[_0x8148('0x25')]('[%s][voiceAgentReport][agentcalled]\x20event:',_0x3c0113[_0x8148('0x22')],util[_0x8148('0x26')](_0x3c0113,{'showHidden':![],'depth':null}));if(_['isUndefined'](this['channels'][_0x3c0113[_0x8148('0x22')]])){this['channels'][_0x3c0113[_0x8148('0x22')]]={};}if(_[_0x8148('0x1f')](this[_0x8148('0x9')][_0x3c0113['uniqueid']][_0x3c0113['destuniqueid']])){this[_0x8148('0x9')][_0x3c0113[_0x8148('0x22')]][_0x3c0113['destuniqueid']]={'agentcalledAt':moment()[_0x8148('0x27')](_0x8148('0x28')),'lastevent':'called','mandatoryDisposition':this[_0x8148('0xb')][_0x3c0113[_0x8148('0x29')]]?this[_0x8148('0xb')][_0x3c0113['queue']][_0x8148('0x2a')]||![]:![],'type':this[_0x8148('0xb')][_0x3c0113[_0x8148('0x29')]]?this[_0x8148('0xb')][_0x3c0113['queue']][_0x8148('0x2b')]||'inbound':'inbound','variables':this[_0x8148('0xd')][_0x3c0113['uniqueid']],'motionChannel':_0x8148('0x2c')};}_[_0x8148('0x2d')](this[_0x8148('0x9')][_0x3c0113[_0x8148('0x22')]][_0x3c0113[_0x8148('0x24')]],_[_0x8148('0x2e')](_0x3c0113,[_0x8148('0x2f'),'privilege']));logger[_0x8148('0x25')](_0x8148('0x30'),_0x3c0113[_0x8148('0x22')],util['inspect'](this[_0x8148('0x9')][_0x3c0113[_0x8148('0x22')]][_0x3c0113[_0x8148('0x24')]],{'showHidden':![],'depth':null}));ami[_0x8148('0x31')](_0x8148('0x32'),this['channels'][_0x3c0113[_0x8148('0x22')]][_0x3c0113[_0x8148('0x24')]]);logger[_0x8148('0x25')](_0x8148('0x33'),_0x3c0113[_0x8148('0x22')],util[_0x8148('0x26')](this[_0x8148('0x9')][_0x3c0113[_0x8148('0x22')]][_0x3c0113[_0x8148('0x24')]],{'showHidden':![],'depth':null}));this[_0x8148('0x31')](util['format'](_0x8148('0x34'),_0x3c0113[_0x8148('0x23')]),_0x8148('0x35'),this[_0x8148('0x9')][_0x3c0113[_0x8148('0x22')]][_0x3c0113[_0x8148('0x24')]]);}}catch(_0x4fefd7){logger[_0x8148('0x36')]('[%s][voiceAgentReport][agentcalled]',_0x3c0113['uniqueid'],util[_0x8148('0x26')](_0x4fefd7,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x8148('0x1d')][_0x8148('0x12')]=function(_0xe1a592){try{if(this['isNotNull'](_0xe1a592)){if(this[_0x8148('0x9')][_0xe1a592[_0x8148('0x22')]]){logger[_0x8148('0x25')](_0x8148('0x37'),_0xe1a592[_0x8148('0x22')],util[_0x8148('0x26')](_0xe1a592,{'showHidden':![],'depth':null}));for(var _0x5012b4 in this[_0x8148('0x9')][_0xe1a592[_0x8148('0x22')]]){if(this[_0x8148('0x9')][_0xe1a592[_0x8148('0x22')]]['hasOwnProperty'](_0x5012b4)){if(_0xe1a592['destuniqueid']===_0x5012b4){logger[_0x8148('0x20')](_0x8148('0x38'),_0xe1a592[_0x8148('0x22')],_0xe1a592['membername'],_0xe1a592[_0x8148('0x24')]);this[_0x8148('0x9')][_0xe1a592[_0x8148('0x22')]][_0x5012b4][_0x8148('0x39')]=moment()['format'](_0x8148('0x28'));this['channels'][_0xe1a592[_0x8148('0x22')]][_0x5012b4][_0x8148('0x3a')]=_0xe1a592[_0x8148('0x3a')];this['channels'][_0xe1a592[_0x8148('0x22')]][_0x5012b4]['connectedlinenum']=_0xe1a592[_0x8148('0x3b')];this['channels'][_0xe1a592[_0x8148('0x22')]][_0x5012b4][_0x8148('0x3c')]=_0xe1a592[_0x8148('0x3c')];this[_0x8148('0x9')][_0xe1a592[_0x8148('0x22')]][_0x5012b4][_0x8148('0x3d')]=_0xe1a592[_0x8148('0x3d')];this[_0x8148('0x9')][_0xe1a592[_0x8148('0x22')]][_0x5012b4][_0x8148('0x3e')]=_0xe1a592[_0x8148('0x3e')];this['channels'][_0xe1a592[_0x8148('0x22')]][_0x5012b4][_0x8148('0x3f')]=_0x8148('0x40');if(this['voiceChannels'][this[_0x8148('0x9')][_0xe1a592['uniqueid']][_0x5012b4]['uniqueid']]){var _0x5203c4=this[_0x8148('0xa')][this[_0x8148('0x9')][_0xe1a592['uniqueid']][_0x5012b4][_0x8148('0x22')]]['routealias'];this['channels'][_0xe1a592[_0x8148('0x22')]][_0x5012b4][_0x8148('0x41')]=_0x5203c4;_0xe1a592['routealias']=_0x5203c4;}_[_0x8148('0x2d')](this[_0x8148('0xc')][_0xe1a592['interface']],_['pick'](_0xe1a592,[_0x8148('0x29'),_0x8148('0x42'),_0x8148('0x41')]));logger[_0x8148('0x25')](_0x8148('0x43'),_0xe1a592[_0x8148('0x22')],util[_0x8148('0x26')](this['channels'][_0xe1a592[_0x8148('0x22')]][_0xe1a592[_0x8148('0x24')]],{'showHidden':![],'depth':null}));ami[_0x8148('0x31')](_0x8148('0x44'),this[_0x8148('0x9')][_0xe1a592[_0x8148('0x22')]][_0xe1a592[_0x8148('0x24')]]);logger[_0x8148('0x25')](_0x8148('0x45'),_0xe1a592['uniqueid'],util[_0x8148('0x26')](this[_0x8148('0x9')][_0xe1a592[_0x8148('0x22')]][_0xe1a592[_0x8148('0x24')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x8148('0x27')](_0x8148('0x34'),_0xe1a592[_0x8148('0x23')]),'user:agentconnect',this['channels'][_0xe1a592[_0x8148('0x22')]][_0xe1a592[_0x8148('0x24')]]);}else if(!this[_0x8148('0x9')][_0xe1a592[_0x8148('0x22')]][_0x5012b4]['agentringnoanswer']&&!this[_0x8148('0x9')][_0xe1a592[_0x8148('0x22')]][_0x5012b4]['agentcomplete']){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0xe1a592[_0x8148('0x22')],this[_0x8148('0x9')][_0xe1a592['uniqueid']][_0x5012b4]['membername'],_0x5012b4);this['channels'][_0xe1a592[_0x8148('0x22')]][_0x5012b4]['agentringnoanswer']=!![];this[_0x8148('0x9')][_0xe1a592[_0x8148('0x22')]][_0x5012b4][_0x8148('0x46')]=moment()[_0x8148('0x27')](_0x8148('0x28'));this[_0x8148('0x9')][_0xe1a592[_0x8148('0x22')]][_0x5012b4][_0x8148('0x47')]=_0xe1a592[_0x8148('0x24')];this[_0x8148('0x9')][_0xe1a592[_0x8148('0x22')]][_0x5012b4][_0x8148('0x48')]=_0xe1a592['membername'];this['channels'][_0xe1a592[_0x8148('0x22')]][_0x5012b4][_0x8148('0x3f')]=_0x8148('0x49');this['channels'][_0xe1a592[_0x8148('0x22')]][_0x5012b4][_0x8148('0x4a')]='answered_elsewhere';logger[_0x8148('0x25')](_0x8148('0x4b'),_0xe1a592[_0x8148('0x22')],util[_0x8148('0x26')](this[_0x8148('0x9')][_0xe1a592[_0x8148('0x22')]][_0x5012b4],{'showHidden':![],'depth':null}));ami[_0x8148('0x31')](_0x8148('0x4c'),this[_0x8148('0x9')][_0xe1a592[_0x8148('0x22')]][_0x5012b4]);}}}}}}catch(_0x2557b2){logger[_0x8148('0x36')]('[%s][voiceAgentReport][agentconnect]',_0xe1a592['uniqueid'],util[_0x8148('0x26')](_0x2557b2,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x8148('0x1d')][_0x8148('0x4d')]=function(_0x435333){try{if(this[_0x8148('0x1e')](_0x435333)){logger[_0x8148('0x25')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x435333['uniqueid'],util['inspect'](_0x435333,{'showHidden':![],'depth':null}));if(this[_0x8148('0x9')][_0x435333[_0x8148('0x22')]]&&this[_0x8148('0x9')][_0x435333[_0x8148('0x22')]][_0x435333[_0x8148('0x24')]]){logger['info'](_0x8148('0x4e'),_0x435333['uniqueid'],_0x435333['membername'],_0x435333[_0x8148('0x24')]);this[_0x8148('0x9')][_0x435333['uniqueid']][_0x435333[_0x8148('0x24')]]['agentringnoanswer']=!![];this[_0x8148('0x9')][_0x435333[_0x8148('0x22')]][_0x435333[_0x8148('0x24')]][_0x8148('0x46')]=moment()[_0x8148('0x27')](_0x8148('0x28'));this[_0x8148('0x9')][_0x435333[_0x8148('0x22')]][_0x435333[_0x8148('0x24')]][_0x8148('0x3f')]=_0x8148('0x4f');this[_0x8148('0x9')][_0x435333[_0x8148('0x22')]][_0x435333[_0x8148('0x24')]][_0x8148('0x4a')]='rejected';logger[_0x8148('0x25')](_0x8148('0x50'),_0x435333[_0x8148('0x22')],util[_0x8148('0x26')](this[_0x8148('0x9')][_0x435333['uniqueid']][_0x435333[_0x8148('0x24')]],{'showHidden':![],'depth':null}));ami['emit'](_0x8148('0x51'),this['channels'][_0x435333['uniqueid']][_0x435333['destuniqueid']]);}}}catch(_0x6916bd){logger['error'](_0x8148('0x52'),_0x435333[_0x8148('0x22')],util[_0x8148('0x26')](_0x6916bd,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x8148('0x1d')][_0x8148('0x15')]=function(_0x5ca2c1){try{if(this[_0x8148('0x1e')](_0x5ca2c1)){logger[_0x8148('0x25')]('[%s][voiceAgentReport][queuecallerabandon]\x20event:',_0x5ca2c1['uniqueid'],util[_0x8148('0x26')](_0x5ca2c1,{'showHidden':![],'depth':null}));if(this[_0x8148('0x9')][_0x5ca2c1[_0x8148('0x22')]]){for(var _0x5e04cb in this['channels'][_0x5ca2c1[_0x8148('0x22')]]){if(this[_0x8148('0x9')][_0x5ca2c1['uniqueid']][_0x8148('0x53')](_0x5e04cb)&&!this[_0x8148('0x9')][_0x5ca2c1['uniqueid']][_0x5e04cb][_0x8148('0x13')]&&!this[_0x8148('0x9')][_0x5ca2c1[_0x8148('0x22')]][_0x5e04cb][_0x8148('0x54')]){logger[_0x8148('0x20')]('[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x5ca2c1['uniqueid'],this[_0x8148('0x9')][_0x5ca2c1[_0x8148('0x22')]][_0x5e04cb][_0x8148('0x23')],_0x5e04cb);this['channels'][_0x5ca2c1[_0x8148('0x22')]][_0x5e04cb][_0x8148('0x13')]=!![];this[_0x8148('0x9')][_0x5ca2c1['uniqueid']][_0x5e04cb][_0x8148('0x46')]=moment()[_0x8148('0x27')](_0x8148('0x28'));this[_0x8148('0x9')][_0x5ca2c1[_0x8148('0x22')]][_0x5e04cb][_0x8148('0x3f')]=_0x8148('0x55');this[_0x8148('0x9')][_0x5ca2c1[_0x8148('0x22')]][_0x5e04cb][_0x8148('0x4a')]='abandoned';logger[_0x8148('0x25')](_0x8148('0x56'),_0x5ca2c1['uniqueid'],util[_0x8148('0x26')](this[_0x8148('0x9')][_0x5ca2c1['uniqueid']][_0x5e04cb],{'showHidden':![],'depth':null}));ami['emit'](_0x8148('0x57'),this[_0x8148('0x9')][_0x5ca2c1[_0x8148('0x22')]][_0x5e04cb]);}}}}}catch(_0x9c41ec){logger[_0x8148('0x36')](_0x8148('0x58'),_0x5ca2c1[_0x8148('0x22')],util['inspect'](_0x9c41ec,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncAgentComplete']=function(_0x5c7da9){try{if(this[_0x8148('0x1e')](_0x5c7da9)){logger[_0x8148('0x25')](_0x8148('0x59'),_0x5c7da9[_0x8148('0x22')],util[_0x8148('0x26')](_0x5c7da9,{'showHidden':![],'depth':null}));if(this[_0x8148('0x9')][_0x5c7da9[_0x8148('0x22')]]){for(var _0x4f2708 in this['channels'][_0x5c7da9[_0x8148('0x22')]]){if(this[_0x8148('0x9')][_0x5c7da9[_0x8148('0x22')]]['hasOwnProperty'](_0x4f2708)){if(this[_0x8148('0x9')][_0x5c7da9[_0x8148('0x22')]][_0x4f2708][_0x8148('0x39')]&&!this[_0x8148('0x9')][_0x5c7da9[_0x8148('0x22')]][_0x4f2708][_0x8148('0x54')]){logger[_0x8148('0x20')](_0x8148('0x5a'),_0x5c7da9[_0x8148('0x22')],this[_0x8148('0x9')][_0x5c7da9[_0x8148('0x22')]][_0x4f2708]['membername'],_0x4f2708);this[_0x8148('0x9')][_0x5c7da9[_0x8148('0x22')]][_0x4f2708][_0x8148('0x54')]=!![];this[_0x8148('0x9')][_0x5c7da9['uniqueid']][_0x4f2708][_0x8148('0x5b')]=moment()[_0x8148('0x27')](_0x8148('0x28'));this[_0x8148('0x9')][_0x5c7da9['uniqueid']][_0x4f2708]['lastevent']=_0x8148('0x5c');this[_0x8148('0x9')][_0x5c7da9[_0x8148('0x22')]][_0x4f2708][_0x8148('0x4a')]=_0x5c7da9[_0x8148('0x4a')]==_0x8148('0x5d')?_0x8148('0x5e'):_0x5c7da9['reason'];this['channels'][_0x5c7da9[_0x8148('0x22')]][_0x4f2708][_0x8148('0x5f')]=_0x5c7da9[_0x8148('0x5f')];if(this[_0x8148('0xb')][_0x5c7da9[_0x8148('0x29')]]&&this[_0x8148('0xb')][_0x5c7da9[_0x8148('0x29')]][_0x8148('0x60')]){this[_0x8148('0x9')][_0x5c7da9[_0x8148('0x22')]][_0x4f2708][_0x8148('0x61')]=this[_0x8148('0xb')][_0x5c7da9[_0x8148('0x29')]][_0x8148('0x62')];this[_0x8148('0x9')][_0x5c7da9[_0x8148('0x22')]][_0x4f2708][_0x8148('0x63')]=!![];}this[_0x8148('0xc')][_0x5c7da9[_0x8148('0x64')]]=_['omit'](this[_0x8148('0xc')][_0x5c7da9[_0x8148('0x64')]],[_0x8148('0x29'),'destconnectedlinenum']);logger['debug'](_0x8148('0x65'),_0x5c7da9[_0x8148('0x22')],util[_0x8148('0x26')](this[_0x8148('0x9')][_0x5c7da9[_0x8148('0x22')]][_0x4f2708],{'showHidden':![],'depth':null}));ami[_0x8148('0x31')](_0x8148('0x66'),this[_0x8148('0x9')][_0x5c7da9['uniqueid']][_0x4f2708]);logger[_0x8148('0x25')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:',_0x5c7da9['uniqueid'],util[_0x8148('0x26')](this[_0x8148('0x9')][_0x5c7da9['uniqueid']][_0x4f2708],{'showHidden':![],'depth':null}));this[_0x8148('0x31')](util[_0x8148('0x27')](_0x8148('0x34'),_0x5c7da9[_0x8148('0x23')]),_0x8148('0x67'),this['channels'][_0x5c7da9[_0x8148('0x22')]][_0x4f2708]);}}}}}}catch(_0x3eeceb){logger['error'](_0x8148('0x68'),_0x5c7da9[_0x8148('0x22')],util[_0x8148('0x26')](_0x3eeceb,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x8148('0x1d')][_0x8148('0x17')]=function(_0x477664){try{if(this['isNotNull'](_0x477664)){logger['debug'](_0x8148('0x69'),_0x477664[_0x8148('0x22')],util[_0x8148('0x26')](_0x477664,{'showHidden':![],'depth':null}));this[_0x8148('0x6a')](_0x477664[_0x8148('0x22')],_[_0x8148('0x6b')](_0x477664[_0x8148('0x6c')])[0x0],_0x477664[_0x8148('0x6d')]);if(this['channels'][_0x477664[_0x8148('0x22')]]){for(var _0x2ca055 in this[_0x8148('0x9')][_0x477664[_0x8148('0x22')]]){if(this[_0x8148('0x9')][_0x477664[_0x8148('0x22')]]['hasOwnProperty'](_0x2ca055)){logger['info']('[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s',_0x477664[_0x8148('0x22')],_0x2ca055,_[_0x8148('0x6b')](_0x477664['variable'])[0x0],_0x477664[_0x8148('0x6d')]);if(_[_0x8148('0x1f')](this[_0x8148('0x9')][_0x477664[_0x8148('0x22')]][_0x2ca055][_0x8148('0xd')])){this[_0x8148('0x9')][_0x477664[_0x8148('0x22')]][_0x2ca055][_0x8148('0xd')]={};}this[_0x8148('0x9')][_0x477664[_0x8148('0x22')]][_0x2ca055][_0x8148('0xd')]=this[_0x8148('0xd')][_0x477664[_0x8148('0x22')]];}}}}}catch(_0x2822f5){logger[_0x8148('0x36')](_0x8148('0x6e'),_0x477664[_0x8148('0x22')],util['inspect'](_0x2822f5,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x8148('0x1d')][_0x8148('0x6a')]=function(_0x4e0a41,_0x4f3ad7,_0x35cc20){var _0x5c8efc=['rtpaudioqos',_0x8148('0x6f'),_0x8148('0x70'),_0x8148('0x71'),_0x8148('0x72'),'rtpaudioqoslossbridged',_0x8148('0x73'),'rtpaudioqosrttbridged','sipcallid',_0x8148('0x74'),_0x8148('0x75'),'bridgepvtcallid','membercalls',_0x8148('0x76'),_0x8148('0x77'),_0x8148('0x78'),_0x8148('0x23'),_0x8148('0x79'),'memberrealtime'];if(!_[_0x8148('0x7a')](_0x4f3ad7)&&!_['includes'](_0x5c8efc,_0x4f3ad7)){if(_[_0x8148('0x1f')](this[_0x8148('0xd')][_0x4e0a41])){this[_0x8148('0xd')][_0x4e0a41]={};}this[_0x8148('0xd')][_0x4e0a41][_0x4f3ad7]=_0x35cc20;}};VoiceAgentReport[_0x8148('0x1d')]['syncHangup']=function(_0x59deb4){try{if(this[_0x8148('0x1e')](_0x59deb4)){logger[_0x8148('0x25')]('[%s][voiceAgentReport][hangup]\x20event:',_0x59deb4[_0x8148('0x22')],util[_0x8148('0x26')](_0x59deb4,{'showHidden':![],'depth':null}));if(this[_0x8148('0x9')][_0x59deb4[_0x8148('0x22')]]){for(var _0x2b78c0 in this[_0x8148('0x9')][_0x59deb4['uniqueid']]){if(this[_0x8148('0x9')][_0x59deb4[_0x8148('0x22')]][_0x8148('0x53')](_0x2b78c0)){if(this[_0x8148('0x9')][_0x59deb4[_0x8148('0x22')]][_0x2b78c0]['reason']==_0x8148('0x5d')&&this[_0x8148('0x9')][_0x59deb4[_0x8148('0x22')]][_0x2b78c0][_0x8148('0x54')]){logger[_0x8148('0x20')](_0x8148('0x7b'),_0x59deb4[_0x8148('0x22')],_0x2b78c0);this[_0x8148('0x9')][_0x59deb4['uniqueid']][_0x2b78c0][_0x8148('0x5b')]=moment()[_0x8148('0x27')](_0x8148('0x28'));}}}logger['debug'](_0x8148('0x7c'),_0x59deb4['uniqueid'],util['inspect'](_[_0x8148('0x7d')](this['channels'][_0x59deb4[_0x8148('0x22')]]),{'showHidden':![],'depth':null}));ami['emit'](_0x8148('0x7e'),_[_0x8148('0x7d')](this[_0x8148('0x9')][_0x59deb4[_0x8148('0x22')]]));delete this[_0x8148('0x9')][_0x59deb4[_0x8148('0x22')]];}if(this[_0x8148('0xd')][_0x59deb4['uniqueid']]){delete this[_0x8148('0xd')][_0x59deb4[_0x8148('0x22')]];}}}catch(_0x562a85){logger['error'](_0x8148('0x7f'),_0x59deb4[_0x8148('0x22')],util[_0x8148('0x26')](_0x562a85,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x8148('0x1d')]['syncAttendedTransfer']=function(_0x24bac8){try{if(this[_0x8148('0x1e')](_0x24bac8)){logger[_0x8148('0x25')](_0x8148('0x80'),_0x24bac8['uniqueid'],util[_0x8148('0x26')](_0x24bac8,{'showHidden':![],'depth':null}));if(this[_0x8148('0x9')][_0x24bac8[_0x8148('0x81')]]){for(var _0x3a1305 in this[_0x8148('0x9')][_0x24bac8[_0x8148('0x81')]]){if(this['channels'][_0x24bac8[_0x8148('0x81')]][_0x8148('0x53')](_0x3a1305)){if(_0x24bac8['origtransfereruniqueid']===_0x3a1305){logger[_0x8148('0x20')](_0x8148('0x82'),_0x24bac8[_0x8148('0x22')],this['channels'][_0x24bac8[_0x8148('0x81')]][_0x3a1305]['membername'],_0x3a1305);var _0x4fc529=moment();this[_0x8148('0x9')][_0x24bac8[_0x8148('0x81')]][_0x3a1305][_0x8148('0x54')]=!![];this[_0x8148('0x9')][_0x24bac8[_0x8148('0x81')]][_0x3a1305][_0x8148('0x5b')]=moment()[_0x8148('0x27')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x8148('0x9')][_0x24bac8[_0x8148('0x81')]][_0x3a1305][_0x8148('0x3f')]='complete';this[_0x8148('0x9')][_0x24bac8['transfereeuniqueid']][_0x3a1305][_0x8148('0x4a')]='transfer';this[_0x8148('0x9')][_0x24bac8[_0x8148('0x81')]][_0x3a1305][_0x8148('0x5f')]=_0x4fc529[_0x8148('0x83')](this[_0x8148('0x9')][_0x24bac8[_0x8148('0x81')]][_0x3a1305][_0x8148('0x39')],'seconds');}}}}if(this[_0x8148('0x9')][_0x24bac8[_0x8148('0x84')]]){var _0x2cd33b=this[_0x8148('0x9')][_0x24bac8[_0x8148('0x84')]];this['channels'][_0x24bac8['secondtransfereruniqueid']]=this[_0x8148('0x9')][_0x24bac8[_0x8148('0x81')]];this[_0x8148('0x9')][_0x24bac8['transfereeuniqueid']]=_0x2cd33b;}}}catch(_0x4e770c){logger['error'](_0x8148('0x85'),_0x24bac8[_0x8148('0x22')],util[_0x8148('0x26')](_0x4e770c,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x8148('0x86')]=function(_0x3f24c8){try{if(this[_0x8148('0x1e')](_0x3f24c8)){logger[_0x8148('0x25')]('[%s][voiceAgentReport][blindtransfer]\x20event:',_0x3f24c8[_0x8148('0x22')],util[_0x8148('0x26')](_0x3f24c8,{'showHidden':![],'depth':null}));if(this['channels'][_0x3f24c8[_0x8148('0x81')]]){for(var _0x5705f0 in this[_0x8148('0x9')][_0x3f24c8['transfereeuniqueid']]){if(this['channels'][_0x3f24c8[_0x8148('0x81')]][_0x8148('0x53')](_0x5705f0)){if(_0x3f24c8[_0x8148('0x87')]===_0x5705f0){logger[_0x8148('0x20')](_0x8148('0x88'),_0x3f24c8[_0x8148('0x22')],this[_0x8148('0x9')][_0x3f24c8[_0x8148('0x81')]][_0x5705f0][_0x8148('0x23')],_0x5705f0);var _0x538fbb=moment();this[_0x8148('0x9')][_0x3f24c8['transfereeuniqueid']][_0x5705f0][_0x8148('0x54')]=!![];this[_0x8148('0x9')][_0x3f24c8[_0x8148('0x81')]][_0x5705f0][_0x8148('0x5b')]=_0x538fbb;this[_0x8148('0x9')][_0x3f24c8['transfereeuniqueid']][_0x5705f0][_0x8148('0x3f')]='complete';this[_0x8148('0x9')][_0x3f24c8['transfereeuniqueid']][_0x5705f0]['reason']=_0x8148('0x5d');this['channels'][_0x3f24c8[_0x8148('0x81')]][_0x5705f0][_0x8148('0x5f')]=_0x538fbb[_0x8148('0x83')](this[_0x8148('0x9')][_0x3f24c8[_0x8148('0x81')]][_0x5705f0][_0x8148('0x39')],'seconds');}}}}}}catch(_0x24bf86){logger['error']('[%s][voiceAgentReport][blindtransfer]',_0x3f24c8[_0x8148('0x22')],util[_0x8148('0x26')](_0x24bf86,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x8148('0x1d')]['syncMusicOnHoldStart']=function(_0x23ebb8){var _0x116ab0='';try{if(this[_0x8148('0x1e')](_0x23ebb8)){logger['debug'](_0x8148('0x89'),_0x23ebb8['uniqueid'],util[_0x8148('0x26')](_0x23ebb8,{'showHidden':![],'depth':null}));if(_0x23ebb8['channel']){_0x116ab0=_0x23ebb8[_0x8148('0x8a')]['substring'](0x0,_0x23ebb8[_0x8148('0x8a')]['lastIndexOf']('-'));if(this[_0x8148('0xc')][_0x116ab0]){logger[_0x8148('0x20')](_0x8148('0x8b'),_0x23ebb8[_0x8148('0x22')],_0x116ab0);this[_0x8148('0xc')][_0x116ab0][_0x8148('0x8c')]=!![];}}}}catch(_0x131484){logger['error'](_0x8148('0x8d'),_0x23ebb8['uniqueid'],util[_0x8148('0x26')](_0x131484,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x8148('0x1d')][_0x8148('0x1b')]=function(_0x17fb2c){var _0x39a2f5='';try{if(this[_0x8148('0x1e')](_0x17fb2c)){logger['debug'](_0x8148('0x8e'),_0x17fb2c[_0x8148('0x22')],util[_0x8148('0x26')](_0x17fb2c,{'showHidden':![],'depth':null}));if(_0x17fb2c['channel']){_0x39a2f5=_0x17fb2c[_0x8148('0x8a')]['substring'](0x0,_0x17fb2c['channel']['lastIndexOf']('-'));if(this[_0x8148('0xc')][_0x39a2f5]){logger['info'](_0x8148('0x8f'),_0x17fb2c[_0x8148('0x22')],_0x39a2f5);this[_0x8148('0xc')][_0x39a2f5][_0x8148('0x8c')]=![];}}}}catch(_0x274f0c){logger['error']('[%s][voiceAgentReport][musiconholdstop]',_0x17fb2c['uniqueid'],util[_0x8148('0x26')](_0x274f0c,{'showHidden':![],'depth':null}));}};module[_0x8148('0x90')]=VoiceAgentReport;
\ No newline at end of file
index 061fe35..47a4f55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8e4=['syncNewCallerId','attendedtransfer','blindtransfer','syncBlindTransfer','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','actionCoreShowChannels','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','isUndefined','emit','uniqueid','calleridname','calleridnum','debug','linkedid','pick','keys','context','channel','xcally-motion-preview','split','connectedlinenum','format','user:agentconnect','accountcode','error','[%s][voiceCallReport][newcallerid]','syncNewChannel','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','merge','from-sip','destconnectedlinenum','exten','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','user:%s','name','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','toLowerCase','appdata','startsWith','CDR(routeAlias)','applicationdata','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','application','starttime','subtract','duration','seconds','includes','lastdata','cdr(','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','diff','connectedlinename','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','endsWith','.wav49','replace','.WAV','monitorFilename','find','monitors','isNil','rec','[%s][voiceCallReport][mixMonitorFilename]','syncVarSet','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','holdtime','billableseconds','resolve','then','undefined','isEmpty','getSettings','stopRecordingOnTransfer','Action','StopMixMonitor','catch','destinationchannel','finally','webbar:stopmonitors','event','BlindTransfer','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','[%s][voiceCallReport][hangup]','origtransferercalleridnum','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','transfertargetcalleridnum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','outbound','routeid','transferType','ATTENDED','[%s][voiceCallReport][attendedtransfer]','extension','transfereecalleridnum','transfererchannel','BLIND','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','exports','bluebird','lodash','moment','util','path','ioredis','../../../config/environment','../../../config/logger','ami','../ami','unknown','not_inuse','inuse','busy','invalid','unavailable','ringing','ringinuse','onhold','queue','dial','playback','voicemail','FAILED','NO\x20ANSWER','redis','defaults','localhost','channels','agents','blindTransfers','coreshowchannel','bind','newexten','syncNewExten','newchannel','newstate','syncNewState','varset','hangup','syncHangup'];(function(_0x85a4f9,_0x3f07b7){var _0x18b7ce=function(_0x28ffbf){while(--_0x28ffbf){_0x85a4f9['push'](_0x85a4f9['shift']());}};_0x18b7ce(++_0x3f07b7);}(_0xb8e4,0xa2));var _0x4b8e=function(_0x36f78c,_0x356a3d){_0x36f78c=_0x36f78c-0x0;var _0x183bd4=_0xb8e4[_0x36f78c];return _0x183bd4;};'use strict';var BPromise=require(_0x4b8e('0x0'));var _=require(_0x4b8e('0x1'));var moment=require(_0x4b8e('0x2'));var util=require(_0x4b8e('0x3'));var path=require(_0x4b8e('0x4'));var Redis=require(_0x4b8e('0x5'));var config=require(_0x4b8e('0x6'));var logger=require(_0x4b8e('0x7'))(_0x4b8e('0x8'));var ami=require(_0x4b8e('0x9'));var Channel=require('../model/channel');var RpcSetting=require('../rpc/setting');var statusDesc=[_0x4b8e('0xa'),_0x4b8e('0xb'),_0x4b8e('0xc'),_0x4b8e('0xd'),_0x4b8e('0xe'),_0x4b8e('0xf'),_0x4b8e('0x10'),_0x4b8e('0x11'),_0x4b8e('0x12')];var applications=['set',_0x4b8e('0x13'),'agi',_0x4b8e('0x14'),_0x4b8e('0x15'),_0x4b8e('0x16')];var dispositions=['NO\x20ANSWER',_0x4b8e('0x17'),'FAILED',_0x4b8e('0x18'),'NO\x20ANSWER','NO\x20ANSWER','ANSWERED','BUSY',_0x4b8e('0x17'),_0x4b8e('0x17'),_0x4b8e('0x17')];var actions={};config[_0x4b8e('0x19')]=_[_0x4b8e('0x1a')](config[_0x4b8e('0x19')],{'host':_0x4b8e('0x1b'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4b8e('0x19')]));function VoiceCallReport(_0x1c7b31){this['channels']=_0x1c7b31[_0x4b8e('0x1c')];this[_0x4b8e('0x1d')]=_0x1c7b31[_0x4b8e('0x1d')];this[_0x4b8e('0x1e')]={};ami['on'](_0x4b8e('0x1f'),this['syncNewExten'][_0x4b8e('0x20')](this));ami['on'](_0x4b8e('0x21'),this[_0x4b8e('0x22')]['bind'](this));ami['on'](_0x4b8e('0x23'),this['syncNewChannel'][_0x4b8e('0x20')](this));ami['on'](_0x4b8e('0x24'),this[_0x4b8e('0x25')][_0x4b8e('0x20')](this));ami['on'](_0x4b8e('0x26'),this['syncVarSet'][_0x4b8e('0x20')](this));ami['on'](_0x4b8e('0x27'),this[_0x4b8e('0x28')]['bind'](this));ami['on']('newcallerid',this[_0x4b8e('0x29')][_0x4b8e('0x20')](this));ami['on'](_0x4b8e('0x2a'),this['syncAttendedTransfer'][_0x4b8e('0x20')](this));ami['on'](_0x4b8e('0x2b'),this[_0x4b8e('0x2c')]['bind'](this));ami['on']('musiconholdstart',this[_0x4b8e('0x2d')][_0x4b8e('0x20')](this));ami['on'](_0x4b8e('0x2e'),this[_0x4b8e('0x2f')][_0x4b8e('0x20')](this));try{logger[_0x4b8e('0x30')]('[voiceCallReport][coreshowchannels]\x20started');ami[_0x4b8e('0x31')]();}catch(_0x18f80b){logger['error'](_0x4b8e('0x32'),util[_0x4b8e('0x33')](_0x18f80b,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x4b8e('0x34')][_0x4b8e('0x35')]=function(_0x32f507){return _0x32f507!==null&&!_[_0x4b8e('0x36')](_0x32f507);};VoiceCallReport[_0x4b8e('0x34')][_0x4b8e('0x37')]=function(_0x8bceaa,_0x88d57,_0x44ec72){io['to'](_0x8bceaa)[_0x4b8e('0x37')](_0x88d57,_0x44ec72);};VoiceCallReport[_0x4b8e('0x34')][_0x4b8e('0x29')]=function(_0x26a00b){try{if(this[_0x4b8e('0x35')](_0x26a00b)){logger[_0x4b8e('0x30')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x26a00b[_0x4b8e('0x38')],_0x26a00b[_0x4b8e('0x39')],_0x26a00b[_0x4b8e('0x3a')]);logger[_0x4b8e('0x3b')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x26a00b[_0x4b8e('0x38')],util[_0x4b8e('0x33')](_0x26a00b,{'showHidden':![],'depth':null}));if(_0x26a00b[_0x4b8e('0x38')]===_0x26a00b[_0x4b8e('0x3c')]){if(!_[_0x4b8e('0x36')](this['channels'][_0x26a00b[_0x4b8e('0x38')]])){_['merge'](this[_0x4b8e('0x1c')][_0x26a00b['uniqueid']],_[_0x4b8e('0x3d')](_0x26a00b,_[_0x4b8e('0x3e')](this[_0x4b8e('0x1c')][_0x26a00b[_0x4b8e('0x38')]])));}}if(_0x26a00b[_0x4b8e('0x3f')]==='from-sip'){if(this[_0x4b8e('0x1d')][_0x26a00b[_0x4b8e('0x40')]['split']('-')[0x0]]){if(_0x26a00b['exten']==_0x4b8e('0x41')){this['agents'][_0x26a00b[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]]['destconnectedlinenum']=_0x26a00b[_0x4b8e('0x43')];this[_0x4b8e('0x37')](util[_0x4b8e('0x44')]('user:%s',this[_0x4b8e('0x1d')][_0x26a00b[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]]['name']),_0x4b8e('0x45'),{'destaccountcode':this[_0x4b8e('0x1d')][_0x26a00b[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]][_0x4b8e('0x46')],'destconnectedlinenum':_0x26a00b[_0x4b8e('0x43')]});}}}}}catch(_0x5ad78e){logger[_0x4b8e('0x47')](_0x4b8e('0x48'),_0x26a00b[_0x4b8e('0x38')],util['inspect'](_0x5ad78e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4b8e('0x34')][_0x4b8e('0x49')]=function(_0x20d15e){try{if(this['isNotNull'](_0x20d15e)){logger['debug']('[%s][voiceCallReport][newchannel]\x20event:',_0x20d15e['uniqueid'],util[_0x4b8e('0x33')](_0x20d15e,{'showHidden':![],'depth':null}));if(_0x20d15e[_0x4b8e('0x38')]===_0x20d15e['linkedid']&&_0x20d15e[_0x4b8e('0x40')]!=_0x4b8e('0x4a')){if(_[_0x4b8e('0x36')](this[_0x4b8e('0x1c')][_0x20d15e[_0x4b8e('0x38')]])){logger['info'](_0x4b8e('0x4b'),_0x20d15e[_0x4b8e('0x38')],_0x20d15e[_0x4b8e('0x3f')],_0x20d15e['exten']);this[_0x4b8e('0x1c')][_0x20d15e[_0x4b8e('0x38')]]=new Channel();this[_0x4b8e('0x1c')][_0x20d15e[_0x4b8e('0x38')]]['starttime']=moment()[_0x4b8e('0x44')](_0x4b8e('0x4c'));this[_0x4b8e('0x1c')][_0x20d15e[_0x4b8e('0x38')]][_0x4b8e('0x4d')]=dispositions[_[_0x4b8e('0x4e')](_0x20d15e[_0x4b8e('0x4f')])];_[_0x4b8e('0x50')](this[_0x4b8e('0x1c')][_0x20d15e['uniqueid']],_[_0x4b8e('0x3d')](_0x20d15e,_['keys'](this[_0x4b8e('0x1c')][_0x20d15e[_0x4b8e('0x38')]])));if(_0x20d15e[_0x4b8e('0x3f')]===_0x4b8e('0x51')){if(this['agents'][_0x20d15e[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]]){if(_[_0x4b8e('0x36')](this[_0x4b8e('0x1d')][_0x20d15e['channel'][_0x4b8e('0x42')]('-')[0x0]][_0x4b8e('0x52')])){this[_0x4b8e('0x1d')][_0x20d15e[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]][_0x4b8e('0x52')]=_0x20d15e[_0x4b8e('0x53')];logger[_0x4b8e('0x3b')](_0x4b8e('0x54'),_0x20d15e[_0x4b8e('0x38')],util[_0x4b8e('0x33')]({'destaccountcode':this[_0x4b8e('0x1d')][_0x20d15e[_0x4b8e('0x40')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x20d15e[_0x4b8e('0x53')]},{'showHidden':![],'depth':null}));this[_0x4b8e('0x37')](util[_0x4b8e('0x44')](_0x4b8e('0x55'),this['agents'][_0x20d15e[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]][_0x4b8e('0x56')]),_0x4b8e('0x45'),{'destaccountcode':this['agents'][_0x20d15e[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]][_0x4b8e('0x46')],'destconnectedlinenum':_0x20d15e[_0x4b8e('0x53')]});}}}}}}}catch(_0x46f283){logger[_0x4b8e('0x47')](_0x4b8e('0x57'),_0x20d15e[_0x4b8e('0x38')],util[_0x4b8e('0x33')](_0x46f283,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4b8e('0x34')][_0x4b8e('0x22')]=function(_0x46fe36){try{if(this[_0x4b8e('0x35')](_0x46fe36)){logger[_0x4b8e('0x3b')](_0x4b8e('0x58'),_0x46fe36[_0x4b8e('0x38')],util[_0x4b8e('0x33')](_0x46fe36,{'showHidden':![],'depth':null}));if(_0x46fe36[_0x4b8e('0x38')]===_0x46fe36['linkedid']&&_0x46fe36[_0x4b8e('0x53')]!='h'&&_0x46fe36[_0x4b8e('0x40')]!='OutgoingSpoolFailed'){_0x46fe36['application']=_0x46fe36['application'][_0x4b8e('0x59')]();_0x46fe36['applicationdata']=_0x46fe36[_0x4b8e('0x5a')]&&_0x46fe36[_0x4b8e('0x5a')][_0x4b8e('0x5b')](_0x4b8e('0x5c'))?_0x46fe36['appdata']:(_0x46fe36[_0x4b8e('0x5a')]||_0x46fe36[_0x4b8e('0x5d')])['toLowerCase']();logger['info'](_0x4b8e('0x5e'),_0x46fe36[_0x4b8e('0x38')],_0x46fe36[_0x4b8e('0x5f')],_0x46fe36[_0x4b8e('0x5d')]);if(_['isUndefined'](this[_0x4b8e('0x1c')][_0x46fe36['uniqueid']])){this[_0x4b8e('0x1c')][_0x46fe36[_0x4b8e('0x38')]]=new Channel();this[_0x4b8e('0x1c')][_0x46fe36['uniqueid']][_0x4b8e('0x60')]=_0x46fe36['duration']?moment()[_0x4b8e('0x61')](moment[_0x4b8e('0x62')](_0x46fe36[_0x4b8e('0x62')])['seconds'](),_0x4b8e('0x63'))[_0x4b8e('0x44')]('YYYY-MM-DD\x20HH:mm:ss'):moment()['format'](_0x4b8e('0x4c'));this[_0x4b8e('0x1c')][_0x46fe36[_0x4b8e('0x38')]][_0x4b8e('0x4d')]=_0x4b8e('0x18');}_['merge'](this[_0x4b8e('0x1c')][_0x46fe36[_0x4b8e('0x38')]],_[_0x4b8e('0x3d')](_0x46fe36,_['keys'](this[_0x4b8e('0x1c')][_0x46fe36['uniqueid']])));if(_[_0x4b8e('0x64')](applications,_0x46fe36[_0x4b8e('0x5f')])){this[_0x4b8e('0x1c')][_0x46fe36[_0x4b8e('0x38')]]['lastapplication']=_0x46fe36[_0x4b8e('0x5f')];this[_0x4b8e('0x1c')][_0x46fe36['uniqueid']][_0x4b8e('0x65')]=_0x46fe36[_0x4b8e('0x5d')];if(_0x46fe36[_0x4b8e('0x5f')]==='set'&&_[_0x4b8e('0x5b')](_0x46fe36[_0x4b8e('0x5d')]['toLowerCase'](),_0x4b8e('0x66'))){var _0x23894f=_0x46fe36[_0x4b8e('0x5d')][_0x4b8e('0x42')]('=');var _0x2e2934=_0x23894f[0x0]['toLowerCase']()['match'](/cdr\((.*)\)/);if(_0x2e2934){this[_0x4b8e('0x1c')][_0x46fe36['uniqueid']][_0x2e2934[0x1]]=_0x23894f[0x1];}}else if(_0x46fe36['application']===_0x4b8e('0x13')){this[_0x4b8e('0x1c')][_0x46fe36[_0x4b8e('0x38')]][_0x4b8e('0x13')]=_0x46fe36['applicationdata'][_0x4b8e('0x42')](',')[0x0];}}}}}catch(_0x39b63b){logger[_0x4b8e('0x47')](_0x4b8e('0x67'),_0x46fe36[_0x4b8e('0x38')],util[_0x4b8e('0x33')](_0x39b63b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4b8e('0x34')][_0x4b8e('0x25')]=function(_0x300b48){try{if(this[_0x4b8e('0x35')](_0x300b48)){logger['info'](_0x4b8e('0x68'),_0x300b48[_0x4b8e('0x38')],_0x300b48[_0x4b8e('0x3c')],_0x300b48[_0x4b8e('0x39')],_0x300b48['calleridnum']);logger[_0x4b8e('0x3b')](_0x4b8e('0x69'),_0x300b48[_0x4b8e('0x38')],util[_0x4b8e('0x33')](_0x300b48,{'showHidden':![],'depth':null}));if(_0x300b48[_0x4b8e('0x38')]!==_0x300b48[_0x4b8e('0x3c')]){if(this[_0x4b8e('0x1c')][_0x300b48[_0x4b8e('0x3c')]]){if(_0x300b48['channelstate']==='6'){if(!this[_0x4b8e('0x1c')][_0x300b48['linkedid']][_0x4b8e('0x6a')]){var _0xa031cc=moment();this[_0x4b8e('0x1c')][_0x300b48[_0x4b8e('0x3c')]][_0x4b8e('0x6a')]=!![];this[_0x4b8e('0x1c')][_0x300b48[_0x4b8e('0x3c')]][_0x4b8e('0x6b')]=_0xa031cc[_0x4b8e('0x44')](_0x4b8e('0x4c'));if(this[_0x4b8e('0x1c')][_0x300b48[_0x4b8e('0x3c')]]['starttime']){this[_0x4b8e('0x1c')][_0x300b48[_0x4b8e('0x3c')]]['holdtime']=_0xa031cc[_0x4b8e('0x6c')](this['channels'][_0x300b48[_0x4b8e('0x3c')]][_0x4b8e('0x60')],'seconds');}}this[_0x4b8e('0x1c')][_0x300b48[_0x4b8e('0x3c')]]['linkedid']=_0x300b48[_0x4b8e('0x38')];if(_0x300b48['calleridnum']!==_0x4b8e('0x41')){this[_0x4b8e('0x1c')][_0x300b48['linkedid']]['connectedlinenum']=_0x300b48[_0x4b8e('0x3a')];}this[_0x4b8e('0x1c')][_0x300b48[_0x4b8e('0x3c')]][_0x4b8e('0x6d')]=_0x300b48[_0x4b8e('0x39')];this[_0x4b8e('0x1c')][_0x300b48['linkedid']]['destinationchannel']=_0x300b48['channel'];this['channels'][_0x300b48[_0x4b8e('0x3c')]][_0x4b8e('0x4d')]=dispositions[_[_0x4b8e('0x4e')](_0x300b48[_0x4b8e('0x4f')])];if(this[_0x4b8e('0x1d')][_0x300b48[_0x4b8e('0x40')]['split']('-')[0x0]]){this[_0x4b8e('0x1c')][_0x300b48['linkedid']][_0x4b8e('0x6e')]=this[_0x4b8e('0x1d')][_0x300b48[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]]['id'];this['channels'][_0x300b48['linkedid']][_0x4b8e('0x6f')]=this[_0x4b8e('0x1d')][_0x300b48[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]][_0x4b8e('0x56')];}}}}else{if(this[_0x4b8e('0x1c')][_0x300b48['uniqueid']]){if(_0x300b48[_0x4b8e('0x4f')]==='6'){if(this[_0x4b8e('0x1d')][_0x300b48['channel'][_0x4b8e('0x42')]('-')[0x0]]){this[_0x4b8e('0x1c')][_0x300b48[_0x4b8e('0x38')]][_0x4b8e('0x6e')]=this[_0x4b8e('0x1d')][_0x300b48[_0x4b8e('0x40')]['split']('-')[0x0]]['id'];this[_0x4b8e('0x1c')][_0x300b48['uniqueid']]['membername']=this[_0x4b8e('0x1d')][_0x300b48[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]][_0x4b8e('0x56')];}}}}if(_0x300b48[_0x4b8e('0x4f')]==='6'&&_0x300b48[_0x4b8e('0x3f')]==='from-sip'){if(this['agents'][_0x300b48[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]]){this[_0x4b8e('0x1d')][_0x300b48[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]][_0x4b8e('0x52')]=_0x300b48[_0x4b8e('0x53')];var _0x4e8835;if(this[_0x4b8e('0x1c')][_0x300b48['uniqueid']])_0x4e8835=this[_0x4b8e('0x1c')][_0x300b48[_0x4b8e('0x38')]][_0x4b8e('0x70')];else if(this[_0x4b8e('0x1c')][_0x300b48[_0x4b8e('0x3c')]])_0x4e8835=this['channels'][_0x300b48[_0x4b8e('0x3c')]][_0x4b8e('0x70')];logger[_0x4b8e('0x3b')](_0x4b8e('0x71'),_0x300b48[_0x4b8e('0x38')],util['inspect']({'destaccountcode':this[_0x4b8e('0x1d')][_0x300b48[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]][_0x4b8e('0x46')],'destconnectedlinenum':_0x300b48['exten'],'routealias':_0x4e8835},{'showHidden':![],'depth':null}));this[_0x4b8e('0x37')](util['format']('user:%s',this[_0x4b8e('0x1d')][_0x300b48['channel'][_0x4b8e('0x42')]('-')[0x0]][_0x4b8e('0x56')]),_0x4b8e('0x45'),{'destaccountcode':this[_0x4b8e('0x1d')][_0x300b48['channel'][_0x4b8e('0x42')]('-')[0x0]][_0x4b8e('0x46')],'destconnectedlinenum':_0x300b48[_0x4b8e('0x53')],'routealias':_0x4e8835});}}}}catch(_0x5910f9){logger[_0x4b8e('0x47')](_0x4b8e('0x72'),_0x300b48[_0x4b8e('0x38')],util[_0x4b8e('0x33')](_0x5910f9,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x4b8e('0x73')]=function(_0x3cff0e,_0x13bc7e){try{if(this['channels'][_0x3cff0e]){logger[_0x4b8e('0x30')](_0x4b8e('0x74'),_0x3cff0e,_0x13bc7e);this[_0x4b8e('0x1c')][_0x3cff0e]['monitor']=!![];if(_[_0x4b8e('0x75')](_0x13bc7e,_0x4b8e('0x76'))){_0x13bc7e=_0x13bc7e[_0x4b8e('0x77')](_0x4b8e('0x76'),_0x4b8e('0x78'));}this[_0x4b8e('0x1c')][_0x3cff0e][_0x4b8e('0x79')]=_0x13bc7e;var _0x4c0539=_[_0x4b8e('0x7a')](this['channels'][_0x3cff0e][_0x4b8e('0x7b')],{'filename':_0x13bc7e});if(_[_0x4b8e('0x7c')](_0x4c0539)){this[_0x4b8e('0x1c')][_0x3cff0e]['monitors']['push']({'filename':_0x13bc7e,'createdAt':moment()[_0x4b8e('0x44')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':'','status':_0x4b8e('0x7d')});}}}catch(_0x7d650c){logger[_0x4b8e('0x47')](_0x4b8e('0x7e'),_0x3cff0e,util['inspect'](_0x7d650c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4b8e('0x34')][_0x4b8e('0x7f')]=function(_0x17cce2){try{if(this[_0x4b8e('0x35')](_0x17cce2)){logger['debug'](_0x4b8e('0x80'),_0x17cce2[_0x4b8e('0x38')],util['inspect'](_0x17cce2,{'showHidden':![],'depth':null}));if(this['channels'][_0x17cce2[_0x4b8e('0x38')]]&&_0x17cce2[_0x4b8e('0x40')]!=_0x4b8e('0x4a')){if(this[_0x4b8e('0x35')](_0x17cce2[_0x4b8e('0x81')])){if(this[_0x4b8e('0x35')](_0x17cce2[_0x4b8e('0x81')][_0x4b8e('0x82')])){logger[_0x4b8e('0x30')](_0x4b8e('0x83'),_0x17cce2[_0x4b8e('0x38')],_0x17cce2['value']);this[_0x4b8e('0x73')](_0x17cce2[_0x4b8e('0x38')],_0x17cce2[_0x4b8e('0x84')]);}else if(this[_0x4b8e('0x35')](_0x17cce2['variable'][_0x4b8e('0x85')])){logger[_0x4b8e('0x30')](_0x4b8e('0x86'),_0x17cce2[_0x4b8e('0x38')],_0x17cce2['value']);this[_0x4b8e('0x1c')][_0x17cce2[_0x4b8e('0x38')]][_0x4b8e('0x3a')]=_0x17cce2[_0x4b8e('0x84')];}else if(this['isNotNull'](_0x17cce2[_0x4b8e('0x81')]['xmd-callerid'])){logger['info'](_0x4b8e('0x87'),_0x17cce2[_0x4b8e('0x38')],_0x17cce2[_0x4b8e('0x84')]);this[_0x4b8e('0x1c')][_0x17cce2['uniqueid']][_0x4b8e('0x88')]=_0x17cce2[_0x4b8e('0x84')];}else if(this[_0x4b8e('0x35')](_0x17cce2[_0x4b8e('0x81')][_0x4b8e('0x89')])){logger[_0x4b8e('0x30')](_0x4b8e('0x8a'),_0x17cce2[_0x4b8e('0x38')],_0x17cce2['value']);this[_0x4b8e('0x1c')][_0x17cce2[_0x4b8e('0x38')]][_0x4b8e('0x8b')]=_0x17cce2[_0x4b8e('0x84')];}else if(this[_0x4b8e('0x35')](_0x17cce2[_0x4b8e('0x81')][_0x4b8e('0x8c')])){logger[_0x4b8e('0x30')](_0x4b8e('0x8d'),_0x17cce2[_0x4b8e('0x38')],_0x17cce2[_0x4b8e('0x84')]['split'](',')[0x0]);this['channels'][_0x17cce2[_0x4b8e('0x38')]]['queue']=_0x17cce2[_0x4b8e('0x84')][_0x4b8e('0x42')](',')[0x0];}else if(this[_0x4b8e('0x35')](_0x17cce2[_0x4b8e('0x81')][_0x4b8e('0x8e')])){logger[_0x4b8e('0x30')]('[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x17cce2[_0x4b8e('0x38')],_0x17cce2['value']);this['channels'][_0x17cce2[_0x4b8e('0x38')]][_0x4b8e('0x8f')]=_0x17cce2[_0x4b8e('0x84')];}else if(this['isNotNull'](_0x17cce2['variable']['xmd-destination'])){logger['info'](_0x4b8e('0x90'),_0x17cce2['uniqueid'],_0x17cce2['value']);this[_0x4b8e('0x1c')][_0x17cce2['uniqueid']][_0x4b8e('0x91')]=_0x17cce2[_0x4b8e('0x84')];}else if(this[_0x4b8e('0x35')](_0x17cce2['variable'][_0x4b8e('0x92')])){logger[_0x4b8e('0x30')](_0x4b8e('0x93'),_0x17cce2[_0x4b8e('0x38')],_0x17cce2[_0x4b8e('0x84')]);this[_0x4b8e('0x1c')][_0x17cce2[_0x4b8e('0x38')]]['calleridpreview']=_0x17cce2[_0x4b8e('0x84')];}else if(this[_0x4b8e('0x35')](_0x17cce2[_0x4b8e('0x81')][_0x4b8e('0x94')])){logger[_0x4b8e('0x30')](_0x4b8e('0x95'),_0x17cce2['uniqueid'],_0x17cce2[_0x4b8e('0x84')]);this[_0x4b8e('0x1c')][_0x17cce2['uniqueid']][_0x4b8e('0x13')]=_0x17cce2['value'];}else if(this[_0x4b8e('0x35')](_0x17cce2['variable'][_0x4b8e('0x96')])){logger['info'](_0x4b8e('0x97'),_0x17cce2[_0x4b8e('0x38')],_0x17cce2['value']);this[_0x4b8e('0x1c')][_0x17cce2[_0x4b8e('0x38')]][_0x4b8e('0x98')]=_0x17cce2[_0x4b8e('0x84')];}}}else if(this[_0x4b8e('0x35')](_0x17cce2['variable'][_0x4b8e('0x82')])){if(_0x17cce2[_0x4b8e('0x84')]){var _0x350a00=path['parse'](_0x17cce2[_0x4b8e('0x84')])[_0x4b8e('0x56')];logger[_0x4b8e('0x30')](_0x4b8e('0x83'),_0x350a00,_0x17cce2[_0x4b8e('0x84')]);this['syncMixMonitorFilename'](_0x350a00,_0x17cce2[_0x4b8e('0x84')]);}}else if(this[_0x4b8e('0x1c')][_0x17cce2['linkedid']]){if(this[_0x4b8e('0x35')](_0x17cce2[_0x4b8e('0x81')])){if(this[_0x4b8e('0x35')](_0x17cce2['variable']['sipcallid'])){logger[_0x4b8e('0x30')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x17cce2['linkedid'],_0x17cce2[_0x4b8e('0x84')]);this[_0x4b8e('0x1c')][_0x17cce2[_0x4b8e('0x3c')]][_0x4b8e('0x99')]=_0x17cce2[_0x4b8e('0x84')];}}}}}catch(_0x174fea){logger[_0x4b8e('0x47')](_0x4b8e('0x9a'),_0x17cce2[_0x4b8e('0x38')],util[_0x4b8e('0x33')](_0x174fea,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x4b8e('0x28')]=function(_0xa95eb9){try{if(this[_0x4b8e('0x35')](_0xa95eb9)){logger[_0x4b8e('0x3b')](_0x4b8e('0x9b'),_0xa95eb9[_0x4b8e('0x38')],util[_0x4b8e('0x33')](_0xa95eb9,{'showHidden':![],'depth':null}));if(this[_0x4b8e('0x1c')][_0xa95eb9['uniqueid']]){logger[_0x4b8e('0x30')](_0x4b8e('0x9c'),_0xa95eb9[_0x4b8e('0x38')],_0xa95eb9[_0x4b8e('0x9d')]);var _0x545e1e=moment();this[_0x4b8e('0x1c')][_0xa95eb9[_0x4b8e('0x38')]][_0x4b8e('0x9e')]=_0x545e1e['format'](_0x4b8e('0x4c'));this[_0x4b8e('0x1c')][_0xa95eb9[_0x4b8e('0x38')]][_0x4b8e('0x62')]=_0x545e1e[_0x4b8e('0x6c')](this[_0x4b8e('0x1c')][_0xa95eb9['uniqueid']][_0x4b8e('0x60')],'seconds');if(this[_0x4b8e('0x1c')][_0xa95eb9['uniqueid']][_0x4b8e('0x6a')]){this[_0x4b8e('0x1c')][_0xa95eb9[_0x4b8e('0x38')]]['billableseconds']=_0x545e1e['diff'](this[_0x4b8e('0x1c')][_0xa95eb9[_0x4b8e('0x38')]][_0x4b8e('0x6b')],_0x4b8e('0x63'));this[_0x4b8e('0x1c')][_0xa95eb9[_0x4b8e('0x38')]][_0x4b8e('0x9f')]=this[_0x4b8e('0x1c')][_0xa95eb9[_0x4b8e('0x38')]]['duration']-this[_0x4b8e('0x1c')][_0xa95eb9[_0x4b8e('0x38')]][_0x4b8e('0xa0')];}if(_0xa95eb9['context']===_0x4b8e('0x51')){if(this[_0x4b8e('0x1d')][_0xa95eb9['channel'][_0x4b8e('0x42')]('-')[0x0]]){this['agents'][_0xa95eb9[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]]=_['omit'](this[_0x4b8e('0x1d')][_0xa95eb9[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]],[_0x4b8e('0x52')]);logger[_0x4b8e('0x3b')]('[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:',_0xa95eb9['uniqueid'],util[_0x4b8e('0x33')]({'id':this[_0x4b8e('0x1d')][_0xa95eb9['channel'][_0x4b8e('0x42')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0xa95eb9[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]][_0x4b8e('0x46')]},{'showHidden':![],'depth':null}));this[_0x4b8e('0x37')](util['format'](_0x4b8e('0x55'),this[_0x4b8e('0x1d')][_0xa95eb9[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]]['name']),'user:agentcomplete',{'id':this[_0x4b8e('0x1d')][_0xa95eb9[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0xa95eb9[_0x4b8e('0x40')][_0x4b8e('0x42')]('-')[0x0]][_0x4b8e('0x46')]});}}var _0x55b8da=this;Promise[_0x4b8e('0xa1')]()[_0x4b8e('0xa2')](function(){var _0xe6cde9=_0x55b8da[_0x4b8e('0x1c')][_0xa95eb9[_0x4b8e('0x38')]];if(typeof _0xe6cde9['transferType']===_0x4b8e('0xa3'))return;if(_[_0x4b8e('0xa4')](_0xe6cde9['monitors']))return;return RpcSetting[_0x4b8e('0xa5')]()[_0x4b8e('0xa2')](function(_0x960130){if(!_0x960130[_0x4b8e('0xa6')])return;return Promise[_0x4b8e('0xa1')]()[_0x4b8e('0xa2')](function(){return ami[_0x4b8e('0xa7')]({'action':_0x4b8e('0xa8'),'channel':_0xe6cde9['channel']})[_0x4b8e('0xa9')](function(){});})['then'](function(){return ami[_0x4b8e('0xa7')]({'action':_0x4b8e('0xa8'),'channel':_0xe6cde9[_0x4b8e('0xaa')]})[_0x4b8e('0xa9')](function(){})[_0x4b8e('0xab')](function(){var _0x21bbc4=_0x55b8da[_0x4b8e('0x1d')][_0xe6cde9[_0x4b8e('0xaa')]['split']('-')[0x0]];if(!_0x21bbc4)return;io['emit'](_0x4b8e('0xac'),{'agentId':_0x21bbc4['id'],'uniqueid':_0xe6cde9[_0x4b8e('0x38')]});});});});})[_0x4b8e('0xa2')](function(){if(_0xa95eb9[_0x4b8e('0xad')]===_0x4b8e('0xae')){_0x55b8da[_0x4b8e('0x1e')][_0xa95eb9['uniqueid']]=_0x55b8da[_0x4b8e('0x1c')][_0xa95eb9[_0x4b8e('0x38')]];}else{if(_0x55b8da[_0x4b8e('0x1c')][_0xa95eb9[_0x4b8e('0x38')]]['type']==='outbound'&&_0x55b8da[_0x4b8e('0x1e')][_0xa95eb9[_0x4b8e('0x38')]]){_0x55b8da[_0x4b8e('0x1c')][_0xa95eb9[_0x4b8e('0x38')]][_0x4b8e('0x38')]=[_0x55b8da[_0x4b8e('0x1c')][_0xa95eb9[_0x4b8e('0x38')]][_0x4b8e('0x3c')],_0x55b8da[_0x4b8e('0x1c')][_0xa95eb9['uniqueid']][_0x4b8e('0x3c')]=_0x55b8da['channels'][_0xa95eb9[_0x4b8e('0x38')]][_0x4b8e('0x38')]][0x0];delete _0x55b8da['blindTransfers'][_0xa95eb9[_0x4b8e('0x38')]];}}logger[_0x4b8e('0x3b')](_0x4b8e('0xaf'),_0xa95eb9[_0x4b8e('0x38')],util[_0x4b8e('0x33')](_0x55b8da['channels'][_0xa95eb9[_0x4b8e('0x38')]],{'showHidden':![],'depth':null}));ami[_0x4b8e('0x37')]('custom:voiceCallReport',_0x55b8da[_0x4b8e('0x1c')][_0xa95eb9[_0x4b8e('0x38')]]);delete _0x55b8da[_0x4b8e('0x1c')][_0xa95eb9['uniqueid']];});}}}catch(_0x2b7846){logger[_0x4b8e('0x47')](_0x4b8e('0xb0'),_0xa95eb9['uniqueid'],util['inspect'](_0x2b7846,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4b8e('0x34')]['syncAttendedTransfer']=function(_0x4a5795){try{if(this['isNotNull'](_0x4a5795)){logger[_0x4b8e('0x30')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x4a5795['uniqueid'],_0x4a5795[_0x4b8e('0xb1')],_0x4a5795['transfertargetcalleridnum']);logger[_0x4b8e('0x3b')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x4a5795[_0x4b8e('0x38')],util['inspect'](_0x4a5795,{'showHidden':![],'depth':null}));if(this[_0x4b8e('0x1c')][_0x4a5795['transfereeuniqueid']]){this[_0x4b8e('0x1c')][_0x4a5795[_0x4b8e('0xb2')]][_0x4b8e('0xb3')]=_0x4a5795[_0x4b8e('0xb1')];this['channels'][_0x4a5795[_0x4b8e('0xb2')]][_0x4b8e('0xb4')]=_0x4a5795[_0x4b8e('0xb5')];if(this[_0x4b8e('0x1c')][_0x4a5795[_0x4b8e('0xb6')]]){var _0x3d6a04=this[_0x4b8e('0x1c')][_0x4a5795[_0x4b8e('0xb6')]];this[_0x4b8e('0x1c')][_0x4a5795['secondtransfereruniqueid']]=this['channels'][_0x4a5795['transfereeuniqueid']];this[_0x4b8e('0x1c')][_0x4a5795[_0x4b8e('0xb2')]]=_0x3d6a04;}}else if(this['channels'][_0x4a5795['transfertargetuniqueid']]){this['channels'][_0x4a5795[_0x4b8e('0xb7')]][_0x4b8e('0xb3')]=_0x4a5795[_0x4b8e('0xb1')];this['channels'][_0x4a5795[_0x4b8e('0xb7')]][_0x4b8e('0xb4')]=_0x4a5795[_0x4b8e('0xb5')];if(this[_0x4b8e('0x1c')][_0x4a5795[_0x4b8e('0xb8')]]){var _0x3d6a04=this[_0x4b8e('0x1c')][_0x4a5795['origtransfereruniqueid']];this[_0x4b8e('0x1c')][_0x4a5795[_0x4b8e('0xb8')]]=this[_0x4b8e('0x1c')][_0x4a5795[_0x4b8e('0xb7')]];this[_0x4b8e('0x1c')][_0x4a5795[_0x4b8e('0xb7')]]=_0x3d6a04;}}if((this[_0x4b8e('0x1c')][_0x4a5795[_0x4b8e('0xb8')]]||this[_0x4b8e('0x1c')][_0x4a5795[_0x4b8e('0xb9')]])&&this['channels'][_0x4a5795[_0x4b8e('0xb6')]]){var _0x4c8c49=_[_0x4b8e('0xba')]([this[_0x4b8e('0x1c')][_0x4a5795[_0x4b8e('0xb8')]],this[_0x4b8e('0x1c')][_0x4a5795['origtransfererlinkedid']],this[_0x4b8e('0x1c')][_0x4a5795['secondtransfereruniqueid']]],function(_0x57eec6){return _0x57eec6&&_0x57eec6[_0x4b8e('0x8b')]===_0x4b8e('0xbb')&&_0x57eec6[_0x4b8e('0xbc')];});if(_0x4c8c49){if(this['channels'][_0x4a5795['origtransfereruniqueid']])this[_0x4b8e('0x1c')][_0x4a5795[_0x4b8e('0xb8')]][_0x4b8e('0xbd')]='ATTENDED';if(this[_0x4b8e('0x1c')][_0x4a5795[_0x4b8e('0xb9')]])this['channels'][_0x4a5795[_0x4b8e('0xb9')]]['transferType']='ATTENDED';this[_0x4b8e('0x1c')][_0x4a5795[_0x4b8e('0xb6')]][_0x4b8e('0xbd')]=_0x4b8e('0xbe');}}}}catch(_0x44f4d2){logger[_0x4b8e('0x47')](_0x4b8e('0xbf'),_0x4a5795[_0x4b8e('0x38')],util['inspect'](_0x44f4d2,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4b8e('0x34')]['syncBlindTransfer']=function(_0xf32c8f){try{if(this[_0x4b8e('0x35')](_0xf32c8f)){logger[_0x4b8e('0x30')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0xf32c8f[_0x4b8e('0x38')],_0xf32c8f['transfereecalleridnum'],_0xf32c8f[_0x4b8e('0xc0')]);logger[_0x4b8e('0x3b')]('[%s][voiceCallReport][blindtransfer]\x20event:',_0xf32c8f['uniqueid'],util[_0x4b8e('0x33')](_0xf32c8f,{'showHidden':![],'depth':null}));if(this['channels'][_0xf32c8f[_0x4b8e('0xb2')]]){this[_0x4b8e('0x1c')][_0xf32c8f[_0x4b8e('0xb2')]]['transfercalleridnum']=_0xf32c8f[_0x4b8e('0xc1')];this[_0x4b8e('0x1c')][_0xf32c8f[_0x4b8e('0xb2')]][_0x4b8e('0xb4')]=_0xf32c8f['extension'];this[_0x4b8e('0x1c')][_0xf32c8f['transfereeuniqueid']][_0x4b8e('0xbd')]='BLIND';this['syncHangup']({'event':'BlindTransfer','uniqueid':_0xf32c8f[_0x4b8e('0xb2')],'context':_0xf32c8f[_0x4b8e('0x3f')],'channel':_0xf32c8f[_0x4b8e('0xc2')]});}else{this[_0x4b8e('0x1c')][_0xf32c8f['transfereruniqueid']][_0x4b8e('0xbd')]=_0x4b8e('0xc3');}}}catch(_0x57ddd5){logger['error']('[%s][voiceCallReport][blindtransfer]',_0xf32c8f[_0x4b8e('0x38')],util[_0x4b8e('0x33')](_0x57ddd5,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x4b8e('0x2d')]=function(_0x4c6f4b){try{if(this[_0x4b8e('0x35')](_0x4c6f4b)){logger[_0x4b8e('0x3b')](_0x4b8e('0xc4'),_0x4c6f4b[_0x4b8e('0x38')],util[_0x4b8e('0x33')](_0x4c6f4b,{'showHidden':![],'depth':null}));if(this[_0x4b8e('0x1c')][_0x4c6f4b[_0x4b8e('0x38')]]){if(!_[_0x4b8e('0x7c')](this['channels'][_0x4c6f4b['uniqueid']][_0x4b8e('0x6b')])){this[_0x4b8e('0x1c')][_0x4c6f4b[_0x4b8e('0x38')]][_0x4b8e('0xc5')]=moment()[_0x4b8e('0x44')](_0x4b8e('0x4c'));logger[_0x4b8e('0x30')](_0x4b8e('0xc6'),_0x4c6f4b[_0x4b8e('0x38')],this[_0x4b8e('0x1c')][_0x4c6f4b[_0x4b8e('0x38')]]['mohstarttime']);}}}}catch(_0x41dbec){logger[_0x4b8e('0x47')](_0x4b8e('0xc7'),_0x4c6f4b[_0x4b8e('0x38')],util[_0x4b8e('0x33')](_0x41dbec,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4b8e('0x34')][_0x4b8e('0x2f')]=function(_0x190444){try{if(this[_0x4b8e('0x35')](_0x190444)){logger[_0x4b8e('0x3b')](_0x4b8e('0xc8'),_0x190444[_0x4b8e('0x38')],util['inspect'](_0x190444,{'showHidden':![],'depth':null}));if(this[_0x4b8e('0x1c')][_0x190444[_0x4b8e('0x38')]]){if(!_[_0x4b8e('0x7c')](this[_0x4b8e('0x1c')][_0x190444[_0x4b8e('0x38')]][_0x4b8e('0xc5')])){this[_0x4b8e('0x1c')][_0x190444[_0x4b8e('0x38')]]['mohtime']+=moment()['milliseconds'](0x0)['diff'](this['channels'][_0x190444[_0x4b8e('0x38')]]['mohstarttime'],_0x4b8e('0x63'));logger[_0x4b8e('0x30')](_0x4b8e('0xc9'),_0x190444[_0x4b8e('0x38')],this[_0x4b8e('0x1c')][_0x190444['uniqueid']]['mohtime']);delete this['channels'][_0x190444[_0x4b8e('0x38')]][_0x4b8e('0xc5')];}}}}catch(_0x5f17c4){logger[_0x4b8e('0x47')]('[%s][voiceCallReport][musiconholdstop]',_0x190444[_0x4b8e('0x38')],util[_0x4b8e('0x33')](_0x5f17c4,{'showHidden':![],'depth':null}));}};module[_0x4b8e('0xca')]=VoiceCallReport;
\ No newline at end of file
+var _0x9cc9=['routeid','ATTENDED','[%s][voiceCallReport][attendedtransfer]','transfereecalleridnum','[%s][voiceCallReport][blindtransfer]\x20event:','extension','BLIND','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','isNil','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceCallReport][musiconholdstop]\x20event:','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceCallReport][musiconholdstop]','bluebird','moment','util','../../../config/environment','../../../config/logger','ami','../rpc/setting','not_inuse','inuse','invalid','unavailable','ringinuse','queue','agi','dial','voicemail','FAILED','NO\x20ANSWER','BUSY','redis','localhost','socket.io-emitter','channels','agents','blindTransfers','syncNewExten','bind','newexten','newchannel','newstate','syncNewState','varset','syncHangup','syncNewCallerId','attendedtransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','isUndefined','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','linkedid','merge','pick','keys','context','channel','split','exten','destconnectedlinenum','name','user:agentconnect','accountcode','syncNewChannel','[%s][voiceCallReport][newchannel]\x20event:','starttime','format','YYYY-MM-DD\x20HH:mm:ss','toNumber','channelstate','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newexten]\x20event:','OutgoingSpoolFailed','application','toLowerCase','applicationdata','appdata','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','subtract','duration','seconds','disposition','includes','lastapplication','startsWith','cdr(','match','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','holdtime','diff','xcally-motion-preview','connectedlinenum','connectedlinename','destinationchannel','membername','UserId','routealias','user:%s','syncMixMonitorFilename','monitor','.wav49','replace','monitorFilename','monitors','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','value','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','xmd-queue','xmd-originatecalleridnum','originatecalleridnum','xmd-destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','resolve','then','transferType','undefined','isEmpty','getSettings','StopMixMonitor','catch','finally','event','BlindTransfer','[%s][voiceCallReport][hangup]','syncAttendedTransfer','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','transfertargetcalleridnum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some'];(function(_0x12e073,_0x4d43db){var _0x267748=function(_0x381284){while(--_0x381284){_0x12e073['push'](_0x12e073['shift']());}};_0x267748(++_0x4d43db);}(_0x9cc9,0x191));var _0x99cc=function(_0x40f2db,_0x3f8292){_0x40f2db=_0x40f2db-0x0;var _0x2b840f=_0x9cc9[_0x40f2db];return _0x2b840f;};'use strict';var BPromise=require(_0x99cc('0x0'));var _=require('lodash');var moment=require(_0x99cc('0x1'));var util=require(_0x99cc('0x2'));var path=require('path');var Redis=require('ioredis');var config=require(_0x99cc('0x3'));var logger=require(_0x99cc('0x4'))(_0x99cc('0x5'));var ami=require('../ami');var Channel=require('../model/channel');var RpcSetting=require(_0x99cc('0x6'));var statusDesc=['unknown',_0x99cc('0x7'),_0x99cc('0x8'),'busy',_0x99cc('0x9'),_0x99cc('0xa'),'ringing',_0x99cc('0xb'),'onhold'];var applications=['set',_0x99cc('0xc'),_0x99cc('0xd'),_0x99cc('0xe'),'playback',_0x99cc('0xf')];var dispositions=['NO\x20ANSWER','FAILED',_0x99cc('0x10'),_0x99cc('0x11'),_0x99cc('0x11'),_0x99cc('0x11'),'ANSWERED',_0x99cc('0x12'),_0x99cc('0x10'),'FAILED',_0x99cc('0x10')];var actions={};config[_0x99cc('0x13')]=_['defaults'](config[_0x99cc('0x13')],{'host':_0x99cc('0x14'),'port':0x18eb});var io=require(_0x99cc('0x15'))(new Redis(config[_0x99cc('0x13')]));function VoiceCallReport(_0x135c31){this[_0x99cc('0x16')]=_0x135c31[_0x99cc('0x16')];this[_0x99cc('0x17')]=_0x135c31[_0x99cc('0x17')];this[_0x99cc('0x18')]={};ami['on']('coreshowchannel',this[_0x99cc('0x19')][_0x99cc('0x1a')](this));ami['on'](_0x99cc('0x1b'),this[_0x99cc('0x19')]['bind'](this));ami['on'](_0x99cc('0x1c'),this['syncNewChannel'][_0x99cc('0x1a')](this));ami['on'](_0x99cc('0x1d'),this[_0x99cc('0x1e')][_0x99cc('0x1a')](this));ami['on'](_0x99cc('0x1f'),this['syncVarSet']['bind'](this));ami['on']('hangup',this[_0x99cc('0x20')][_0x99cc('0x1a')](this));ami['on']('newcallerid',this[_0x99cc('0x21')][_0x99cc('0x1a')](this));ami['on'](_0x99cc('0x22'),this['syncAttendedTransfer'][_0x99cc('0x1a')](this));ami['on'](_0x99cc('0x23'),this[_0x99cc('0x24')][_0x99cc('0x1a')](this));ami['on'](_0x99cc('0x25'),this[_0x99cc('0x26')][_0x99cc('0x1a')](this));ami['on']('musiconholdstop',this[_0x99cc('0x27')][_0x99cc('0x1a')](this));try{logger[_0x99cc('0x28')](_0x99cc('0x29'));ami['actionCoreShowChannels']();}catch(_0x347141){logger[_0x99cc('0x2a')](_0x99cc('0x2b'),util[_0x99cc('0x2c')](_0x347141,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x99cc('0x2d')][_0x99cc('0x2e')]=function(_0x574119){return _0x574119!==null&&!_[_0x99cc('0x2f')](_0x574119);};VoiceCallReport['prototype'][_0x99cc('0x30')]=function(_0x2fe65b,_0x207b56,_0x4168c3){io['to'](_0x2fe65b)[_0x99cc('0x30')](_0x207b56,_0x4168c3);};VoiceCallReport[_0x99cc('0x2d')]['syncNewCallerId']=function(_0xb26c9e){try{if(this[_0x99cc('0x2e')](_0xb26c9e)){logger['info'](_0x99cc('0x31'),_0xb26c9e[_0x99cc('0x32')],_0xb26c9e[_0x99cc('0x33')],_0xb26c9e[_0x99cc('0x34')]);logger[_0x99cc('0x35')](_0x99cc('0x36'),_0xb26c9e[_0x99cc('0x32')],util[_0x99cc('0x2c')](_0xb26c9e,{'showHidden':![],'depth':null}));if(_0xb26c9e[_0x99cc('0x32')]===_0xb26c9e[_0x99cc('0x37')]){if(!_[_0x99cc('0x2f')](this[_0x99cc('0x16')][_0xb26c9e[_0x99cc('0x32')]])){_[_0x99cc('0x38')](this[_0x99cc('0x16')][_0xb26c9e['uniqueid']],_[_0x99cc('0x39')](_0xb26c9e,_[_0x99cc('0x3a')](this[_0x99cc('0x16')][_0xb26c9e[_0x99cc('0x32')]])));}}if(_0xb26c9e[_0x99cc('0x3b')]==='from-sip'){if(this['agents'][_0xb26c9e[_0x99cc('0x3c')][_0x99cc('0x3d')]('-')[0x0]]){if(_0xb26c9e[_0x99cc('0x3e')]=='xcally-motion-preview'){this[_0x99cc('0x17')][_0xb26c9e[_0x99cc('0x3c')]['split']('-')[0x0]][_0x99cc('0x3f')]=_0xb26c9e['connectedlinenum'];this[_0x99cc('0x30')](util['format']('user:%s',this[_0x99cc('0x17')][_0xb26c9e['channel']['split']('-')[0x0]][_0x99cc('0x40')]),_0x99cc('0x41'),{'destaccountcode':this[_0x99cc('0x17')][_0xb26c9e[_0x99cc('0x3c')][_0x99cc('0x3d')]('-')[0x0]][_0x99cc('0x42')],'destconnectedlinenum':_0xb26c9e['connectedlinenum']});}}}}}catch(_0x130bde){logger['error']('[%s][voiceCallReport][newcallerid]',_0xb26c9e[_0x99cc('0x32')],util['inspect'](_0x130bde,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x99cc('0x43')]=function(_0xb25698){try{if(this[_0x99cc('0x2e')](_0xb25698)){logger['debug'](_0x99cc('0x44'),_0xb25698[_0x99cc('0x32')],util[_0x99cc('0x2c')](_0xb25698,{'showHidden':![],'depth':null}));if(_0xb25698[_0x99cc('0x32')]===_0xb25698[_0x99cc('0x37')]&&_0xb25698['channel']!='OutgoingSpoolFailed'){if(_[_0x99cc('0x2f')](this[_0x99cc('0x16')][_0xb25698[_0x99cc('0x32')]])){logger['info']('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0xb25698[_0x99cc('0x32')],_0xb25698[_0x99cc('0x3b')],_0xb25698[_0x99cc('0x3e')]);this['channels'][_0xb25698[_0x99cc('0x32')]]=new Channel();this[_0x99cc('0x16')][_0xb25698[_0x99cc('0x32')]][_0x99cc('0x45')]=moment()[_0x99cc('0x46')](_0x99cc('0x47'));this[_0x99cc('0x16')][_0xb25698[_0x99cc('0x32')]]['disposition']=dispositions[_[_0x99cc('0x48')](_0xb25698[_0x99cc('0x49')])];_[_0x99cc('0x38')](this['channels'][_0xb25698[_0x99cc('0x32')]],_['pick'](_0xb25698,_['keys'](this[_0x99cc('0x16')][_0xb25698[_0x99cc('0x32')]])));if(_0xb25698['context']==='from-sip'){if(this[_0x99cc('0x17')][_0xb25698[_0x99cc('0x3c')][_0x99cc('0x3d')]('-')[0x0]]){if(_[_0x99cc('0x2f')](this[_0x99cc('0x17')][_0xb25698[_0x99cc('0x3c')][_0x99cc('0x3d')]('-')[0x0]][_0x99cc('0x3f')])){this[_0x99cc('0x17')][_0xb25698[_0x99cc('0x3c')]['split']('-')[0x0]][_0x99cc('0x3f')]=_0xb25698[_0x99cc('0x3e')];logger[_0x99cc('0x35')](_0x99cc('0x4a'),_0xb25698[_0x99cc('0x32')],util[_0x99cc('0x2c')]({'destaccountcode':this['agents'][_0xb25698['channel'][_0x99cc('0x3d')]('-')[0x0]][_0x99cc('0x42')],'destconnectedlinenum':_0xb25698['exten']},{'showHidden':![],'depth':null}));this['emit'](util[_0x99cc('0x46')]('user:%s',this[_0x99cc('0x17')][_0xb25698['channel']['split']('-')[0x0]]['name']),'user:agentconnect',{'destaccountcode':this[_0x99cc('0x17')][_0xb25698[_0x99cc('0x3c')][_0x99cc('0x3d')]('-')[0x0]][_0x99cc('0x42')],'destconnectedlinenum':_0xb25698[_0x99cc('0x3e')]});}}}}}}}catch(_0x4da6f9){logger[_0x99cc('0x2a')]('[%s][voiceCallReport][newchannel]',_0xb25698[_0x99cc('0x32')],util[_0x99cc('0x2c')](_0x4da6f9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x99cc('0x2d')][_0x99cc('0x19')]=function(_0x37a1ee){try{if(this[_0x99cc('0x2e')](_0x37a1ee)){logger['debug'](_0x99cc('0x4b'),_0x37a1ee[_0x99cc('0x32')],util[_0x99cc('0x2c')](_0x37a1ee,{'showHidden':![],'depth':null}));if(_0x37a1ee[_0x99cc('0x32')]===_0x37a1ee[_0x99cc('0x37')]&&_0x37a1ee['exten']!='h'&&_0x37a1ee[_0x99cc('0x3c')]!=_0x99cc('0x4c')){_0x37a1ee['application']=_0x37a1ee[_0x99cc('0x4d')][_0x99cc('0x4e')]();_0x37a1ee[_0x99cc('0x4f')]=_0x37a1ee[_0x99cc('0x50')]&&_0x37a1ee[_0x99cc('0x50')]['startsWith'](_0x99cc('0x51'))?_0x37a1ee[_0x99cc('0x50')]:(_0x37a1ee[_0x99cc('0x50')]||_0x37a1ee[_0x99cc('0x4f')])[_0x99cc('0x4e')]();logger[_0x99cc('0x28')](_0x99cc('0x52'),_0x37a1ee[_0x99cc('0x32')],_0x37a1ee[_0x99cc('0x4d')],_0x37a1ee[_0x99cc('0x4f')]);if(_[_0x99cc('0x2f')](this[_0x99cc('0x16')][_0x37a1ee[_0x99cc('0x32')]])){this['channels'][_0x37a1ee[_0x99cc('0x32')]]=new Channel();this[_0x99cc('0x16')][_0x37a1ee['uniqueid']][_0x99cc('0x45')]=_0x37a1ee['duration']?moment()[_0x99cc('0x53')](moment[_0x99cc('0x54')](_0x37a1ee[_0x99cc('0x54')])[_0x99cc('0x55')](),'seconds')['format'](_0x99cc('0x47')):moment()[_0x99cc('0x46')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x99cc('0x16')][_0x37a1ee[_0x99cc('0x32')]][_0x99cc('0x56')]='NO\x20ANSWER';}_[_0x99cc('0x38')](this[_0x99cc('0x16')][_0x37a1ee[_0x99cc('0x32')]],_[_0x99cc('0x39')](_0x37a1ee,_[_0x99cc('0x3a')](this[_0x99cc('0x16')][_0x37a1ee[_0x99cc('0x32')]])));if(_[_0x99cc('0x57')](applications,_0x37a1ee['application'])){this[_0x99cc('0x16')][_0x37a1ee['uniqueid']][_0x99cc('0x58')]=_0x37a1ee['application'];this[_0x99cc('0x16')][_0x37a1ee[_0x99cc('0x32')]]['lastdata']=_0x37a1ee['applicationdata'];if(_0x37a1ee[_0x99cc('0x4d')]==='set'&&_[_0x99cc('0x59')](_0x37a1ee[_0x99cc('0x4f')][_0x99cc('0x4e')](),_0x99cc('0x5a'))){var _0x27a8fd=_0x37a1ee[_0x99cc('0x4f')][_0x99cc('0x3d')]('=');var _0x24020d=_0x27a8fd[0x0][_0x99cc('0x4e')]()[_0x99cc('0x5b')](/cdr\((.*)\)/);if(_0x24020d){this[_0x99cc('0x16')][_0x37a1ee[_0x99cc('0x32')]][_0x24020d[0x1]]=_0x27a8fd[0x1];}}else if(_0x37a1ee[_0x99cc('0x4d')]==='queue'){this[_0x99cc('0x16')][_0x37a1ee['uniqueid']][_0x99cc('0xc')]=_0x37a1ee[_0x99cc('0x4f')][_0x99cc('0x3d')](',')[0x0];}}}}}catch(_0x49b924){logger['error'](_0x99cc('0x5c'),_0x37a1ee[_0x99cc('0x32')],util[_0x99cc('0x2c')](_0x49b924,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x99cc('0x1e')]=function(_0x792cd3){try{if(this[_0x99cc('0x2e')](_0x792cd3)){logger[_0x99cc('0x28')](_0x99cc('0x5d'),_0x792cd3[_0x99cc('0x32')],_0x792cd3[_0x99cc('0x37')],_0x792cd3['calleridname'],_0x792cd3[_0x99cc('0x34')]);logger[_0x99cc('0x35')](_0x99cc('0x5e'),_0x792cd3[_0x99cc('0x32')],util[_0x99cc('0x2c')](_0x792cd3,{'showHidden':![],'depth':null}));if(_0x792cd3[_0x99cc('0x32')]!==_0x792cd3['linkedid']){if(this['channels'][_0x792cd3[_0x99cc('0x37')]]){if(_0x792cd3['channelstate']==='6'){if(!this[_0x99cc('0x16')][_0x792cd3['linkedid']][_0x99cc('0x5f')]){var _0x61cf05=moment();this[_0x99cc('0x16')][_0x792cd3[_0x99cc('0x37')]][_0x99cc('0x5f')]=!![];this[_0x99cc('0x16')][_0x792cd3[_0x99cc('0x37')]][_0x99cc('0x60')]=_0x61cf05['format'](_0x99cc('0x47'));if(this['channels'][_0x792cd3[_0x99cc('0x37')]][_0x99cc('0x45')]){this[_0x99cc('0x16')][_0x792cd3['linkedid']][_0x99cc('0x61')]=_0x61cf05[_0x99cc('0x62')](this[_0x99cc('0x16')][_0x792cd3[_0x99cc('0x37')]][_0x99cc('0x45')],'seconds');}}this[_0x99cc('0x16')][_0x792cd3['linkedid']][_0x99cc('0x37')]=_0x792cd3[_0x99cc('0x32')];if(_0x792cd3[_0x99cc('0x34')]!==_0x99cc('0x63')){this['channels'][_0x792cd3['linkedid']][_0x99cc('0x64')]=_0x792cd3[_0x99cc('0x34')];}this[_0x99cc('0x16')][_0x792cd3['linkedid']][_0x99cc('0x65')]=_0x792cd3['calleridname'];this[_0x99cc('0x16')][_0x792cd3[_0x99cc('0x37')]][_0x99cc('0x66')]=_0x792cd3[_0x99cc('0x3c')];this['channels'][_0x792cd3[_0x99cc('0x37')]]['disposition']=dispositions[_['toNumber'](_0x792cd3['channelstate'])];if(this['agents'][_0x792cd3[_0x99cc('0x3c')][_0x99cc('0x3d')]('-')[0x0]]){this[_0x99cc('0x16')][_0x792cd3[_0x99cc('0x37')]]['UserId']=this[_0x99cc('0x17')][_0x792cd3['channel']['split']('-')[0x0]]['id'];this['channels'][_0x792cd3[_0x99cc('0x37')]][_0x99cc('0x67')]=this['agents'][_0x792cd3[_0x99cc('0x3c')][_0x99cc('0x3d')]('-')[0x0]][_0x99cc('0x40')];}}}}else{if(this['channels'][_0x792cd3['uniqueid']]){if(_0x792cd3['channelstate']==='6'){if(this[_0x99cc('0x17')][_0x792cd3['channel'][_0x99cc('0x3d')]('-')[0x0]]){this[_0x99cc('0x16')][_0x792cd3[_0x99cc('0x32')]][_0x99cc('0x68')]=this[_0x99cc('0x17')][_0x792cd3['channel']['split']('-')[0x0]]['id'];this['channels'][_0x792cd3['uniqueid']]['membername']=this[_0x99cc('0x17')][_0x792cd3['channel'][_0x99cc('0x3d')]('-')[0x0]][_0x99cc('0x40')];}}}}if(_0x792cd3[_0x99cc('0x49')]==='6'&&_0x792cd3[_0x99cc('0x3b')]==='from-sip'){if(this[_0x99cc('0x17')][_0x792cd3[_0x99cc('0x3c')][_0x99cc('0x3d')]('-')[0x0]]){this[_0x99cc('0x17')][_0x792cd3[_0x99cc('0x3c')][_0x99cc('0x3d')]('-')[0x0]][_0x99cc('0x3f')]=_0x792cd3['exten'];var _0x362aa2;if(this[_0x99cc('0x16')][_0x792cd3[_0x99cc('0x32')]])_0x362aa2=this['channels'][_0x792cd3['uniqueid']][_0x99cc('0x69')];else if(this[_0x99cc('0x16')][_0x792cd3[_0x99cc('0x37')]])_0x362aa2=this['channels'][_0x792cd3[_0x99cc('0x37')]][_0x99cc('0x69')];logger[_0x99cc('0x35')]('[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:',_0x792cd3[_0x99cc('0x32')],util[_0x99cc('0x2c')]({'destaccountcode':this[_0x99cc('0x17')][_0x792cd3['channel']['split']('-')[0x0]][_0x99cc('0x42')],'destconnectedlinenum':_0x792cd3['exten'],'routealias':_0x362aa2},{'showHidden':![],'depth':null}));this[_0x99cc('0x30')](util[_0x99cc('0x46')](_0x99cc('0x6a'),this[_0x99cc('0x17')][_0x792cd3[_0x99cc('0x3c')]['split']('-')[0x0]][_0x99cc('0x40')]),_0x99cc('0x41'),{'destaccountcode':this[_0x99cc('0x17')][_0x792cd3[_0x99cc('0x3c')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x792cd3[_0x99cc('0x3e')],'routealias':_0x362aa2});}}}}catch(_0x2930e6){logger[_0x99cc('0x2a')]('[%s][voiceCallReport][newstate]',_0x792cd3[_0x99cc('0x32')],util[_0x99cc('0x2c')](_0x2930e6,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x99cc('0x2d')][_0x99cc('0x6b')]=function(_0x297fcd,_0x32e6a4){try{if(this[_0x99cc('0x16')][_0x297fcd]){logger[_0x99cc('0x28')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x297fcd,_0x32e6a4);this['channels'][_0x297fcd][_0x99cc('0x6c')]=!![];if(_['endsWith'](_0x32e6a4,_0x99cc('0x6d'))){_0x32e6a4=_0x32e6a4[_0x99cc('0x6e')](_0x99cc('0x6d'),'.WAV');}this[_0x99cc('0x16')][_0x297fcd][_0x99cc('0x6f')]=_0x32e6a4;var _0x2fcfb8=_['find'](this[_0x99cc('0x16')][_0x297fcd]['monitors'],{'filename':_0x32e6a4});if(_['isNil'](_0x2fcfb8)){this[_0x99cc('0x16')][_0x297fcd][_0x99cc('0x70')][_0x99cc('0x71')]({'filename':_0x32e6a4,'createdAt':moment()[_0x99cc('0x46')](_0x99cc('0x47')),'mixmonitorid':'','status':_0x99cc('0x72')});}}}catch(_0x1640cd){logger[_0x99cc('0x2a')](_0x99cc('0x73'),_0x297fcd,util[_0x99cc('0x2c')](_0x1640cd,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x99cc('0x2d')]['syncVarSet']=function(_0x6984c3){try{if(this[_0x99cc('0x2e')](_0x6984c3)){logger['debug'](_0x99cc('0x74'),_0x6984c3['uniqueid'],util['inspect'](_0x6984c3,{'showHidden':![],'depth':null}));if(this[_0x99cc('0x16')][_0x6984c3[_0x99cc('0x32')]]&&_0x6984c3['channel']!='OutgoingSpoolFailed'){if(this[_0x99cc('0x2e')](_0x6984c3[_0x99cc('0x75')])){if(this[_0x99cc('0x2e')](_0x6984c3['variable'][_0x99cc('0x76')])){logger['info'](_0x99cc('0x77'),_0x6984c3[_0x99cc('0x32')],_0x6984c3['value']);this[_0x99cc('0x6b')](_0x6984c3[_0x99cc('0x32')],_0x6984c3['value']);}else if(this[_0x99cc('0x2e')](_0x6984c3[_0x99cc('0x75')][_0x99cc('0x78')])){logger['info'](_0x99cc('0x79'),_0x6984c3[_0x99cc('0x32')],_0x6984c3[_0x99cc('0x7a')]);this['channels'][_0x6984c3[_0x99cc('0x32')]][_0x99cc('0x34')]=_0x6984c3[_0x99cc('0x7a')];}else if(this[_0x99cc('0x2e')](_0x6984c3[_0x99cc('0x75')][_0x99cc('0x7b')])){logger[_0x99cc('0x28')](_0x99cc('0x7c'),_0x6984c3[_0x99cc('0x32')],_0x6984c3['value']);this['channels'][_0x6984c3[_0x99cc('0x32')]][_0x99cc('0x7d')]=_0x6984c3[_0x99cc('0x7a')];}else if(this[_0x99cc('0x2e')](_0x6984c3[_0x99cc('0x75')][_0x99cc('0x7e')])){logger[_0x99cc('0x28')](_0x99cc('0x7f'),_0x6984c3[_0x99cc('0x32')],_0x6984c3[_0x99cc('0x7a')]);this[_0x99cc('0x16')][_0x6984c3[_0x99cc('0x32')]][_0x99cc('0x80')]=_0x6984c3[_0x99cc('0x7a')];}else if(this[_0x99cc('0x2e')](_0x6984c3[_0x99cc('0x75')][_0x99cc('0x81')])){logger[_0x99cc('0x28')]('[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s',_0x6984c3[_0x99cc('0x32')],_0x6984c3[_0x99cc('0x7a')]['split'](',')[0x0]);this['channels'][_0x6984c3[_0x99cc('0x32')]][_0x99cc('0xc')]=_0x6984c3[_0x99cc('0x7a')][_0x99cc('0x3d')](',')[0x0];}else if(this['isNotNull'](_0x6984c3[_0x99cc('0x75')][_0x99cc('0x82')])){logger[_0x99cc('0x28')]('[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x6984c3['uniqueid'],_0x6984c3[_0x99cc('0x7a')]);this['channels'][_0x6984c3[_0x99cc('0x32')]][_0x99cc('0x83')]=_0x6984c3[_0x99cc('0x7a')];}else if(this[_0x99cc('0x2e')](_0x6984c3[_0x99cc('0x75')][_0x99cc('0x84')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s',_0x6984c3[_0x99cc('0x32')],_0x6984c3['value']);this['channels'][_0x6984c3[_0x99cc('0x32')]]['destination']=_0x6984c3[_0x99cc('0x7a')];}else if(this['isNotNull'](_0x6984c3[_0x99cc('0x75')][_0x99cc('0x85')])){logger[_0x99cc('0x28')](_0x99cc('0x86'),_0x6984c3[_0x99cc('0x32')],_0x6984c3[_0x99cc('0x7a')]);this['channels'][_0x6984c3['uniqueid']][_0x99cc('0x87')]=_0x6984c3['value'];}else if(this['isNotNull'](_0x6984c3['variable'][_0x99cc('0x88')])){logger[_0x99cc('0x28')](_0x99cc('0x89'),_0x6984c3[_0x99cc('0x32')],_0x6984c3['value']);this[_0x99cc('0x16')][_0x6984c3['uniqueid']]['queue']=_0x6984c3[_0x99cc('0x7a')];}else if(this['isNotNull'](_0x6984c3[_0x99cc('0x75')][_0x99cc('0x8a')])){logger[_0x99cc('0x28')](_0x99cc('0x8b'),_0x6984c3['uniqueid'],_0x6984c3[_0x99cc('0x7a')]);this[_0x99cc('0x16')][_0x6984c3[_0x99cc('0x32')]][_0x99cc('0x8c')]=_0x6984c3[_0x99cc('0x7a')];}}}else if(this[_0x99cc('0x2e')](_0x6984c3['variable'][_0x99cc('0x76')])){if(_0x6984c3[_0x99cc('0x7a')]){var _0x4b79b5=path[_0x99cc('0x8d')](_0x6984c3[_0x99cc('0x7a')])[_0x99cc('0x40')];logger[_0x99cc('0x28')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x4b79b5,_0x6984c3[_0x99cc('0x7a')]);this[_0x99cc('0x6b')](_0x4b79b5,_0x6984c3[_0x99cc('0x7a')]);}}else if(this[_0x99cc('0x16')][_0x6984c3[_0x99cc('0x37')]]){if(this[_0x99cc('0x2e')](_0x6984c3[_0x99cc('0x75')])){if(this['isNotNull'](_0x6984c3[_0x99cc('0x75')]['sipcallid'])){logger[_0x99cc('0x28')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x6984c3[_0x99cc('0x37')],_0x6984c3[_0x99cc('0x7a')]);this[_0x99cc('0x16')][_0x6984c3[_0x99cc('0x37')]]['sipcalllinkedid']=_0x6984c3[_0x99cc('0x7a')];}}}}}catch(_0xf1d235){logger[_0x99cc('0x2a')](_0x99cc('0x8e'),_0x6984c3[_0x99cc('0x32')],util[_0x99cc('0x2c')](_0xf1d235,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x99cc('0x2d')][_0x99cc('0x20')]=function(_0x3104c3){try{if(this['isNotNull'](_0x3104c3)){logger[_0x99cc('0x35')]('[%s][voiceCallReport][hangup]\x20event:',_0x3104c3[_0x99cc('0x32')],util['inspect'](_0x3104c3,{'showHidden':![],'depth':null}));if(this[_0x99cc('0x16')][_0x3104c3['uniqueid']]){logger[_0x99cc('0x28')](_0x99cc('0x8f'),_0x3104c3[_0x99cc('0x32')],_0x3104c3[_0x99cc('0x90')]);var _0x2a4f96=moment();this[_0x99cc('0x16')][_0x3104c3[_0x99cc('0x32')]][_0x99cc('0x91')]=_0x2a4f96['format'](_0x99cc('0x47'));this[_0x99cc('0x16')][_0x3104c3['uniqueid']]['duration']=_0x2a4f96[_0x99cc('0x62')](this[_0x99cc('0x16')][_0x3104c3[_0x99cc('0x32')]]['starttime'],_0x99cc('0x55'));if(this[_0x99cc('0x16')][_0x3104c3[_0x99cc('0x32')]][_0x99cc('0x5f')]){this[_0x99cc('0x16')][_0x3104c3['uniqueid']][_0x99cc('0x92')]=_0x2a4f96[_0x99cc('0x62')](this['channels'][_0x3104c3[_0x99cc('0x32')]]['answertime'],_0x99cc('0x55'));this[_0x99cc('0x16')][_0x3104c3['uniqueid']][_0x99cc('0x61')]=this['channels'][_0x3104c3[_0x99cc('0x32')]][_0x99cc('0x54')]-this[_0x99cc('0x16')][_0x3104c3[_0x99cc('0x32')]][_0x99cc('0x92')];}if(_0x3104c3[_0x99cc('0x3b')]==='from-sip'){if(this[_0x99cc('0x17')][_0x3104c3['channel'][_0x99cc('0x3d')]('-')[0x0]]){this[_0x99cc('0x17')][_0x3104c3[_0x99cc('0x3c')][_0x99cc('0x3d')]('-')[0x0]]=_[_0x99cc('0x93')](this['agents'][_0x3104c3[_0x99cc('0x3c')][_0x99cc('0x3d')]('-')[0x0]],[_0x99cc('0x3f')]);logger[_0x99cc('0x35')](_0x99cc('0x94'),_0x3104c3[_0x99cc('0x32')],util['inspect']({'id':this[_0x99cc('0x17')][_0x3104c3['channel']['split']('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x3104c3[_0x99cc('0x3c')][_0x99cc('0x3d')]('-')[0x0]][_0x99cc('0x42')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x99cc('0x46')]('user:%s',this['agents'][_0x3104c3[_0x99cc('0x3c')][_0x99cc('0x3d')]('-')[0x0]][_0x99cc('0x40')]),_0x99cc('0x95'),{'id':this[_0x99cc('0x17')][_0x3104c3[_0x99cc('0x3c')][_0x99cc('0x3d')]('-')[0x0]]['id'],'destaccountcode':this[_0x99cc('0x17')][_0x3104c3[_0x99cc('0x3c')][_0x99cc('0x3d')]('-')[0x0]]['accountcode']});}}var _0xbf8c96=this;Promise[_0x99cc('0x96')]()[_0x99cc('0x97')](function(){var _0x1a48d0=_0xbf8c96['channels'][_0x3104c3[_0x99cc('0x32')]];if(typeof _0x1a48d0[_0x99cc('0x98')]===_0x99cc('0x99'))return;if(_[_0x99cc('0x9a')](_0x1a48d0[_0x99cc('0x70')]))return;return RpcSetting[_0x99cc('0x9b')]()[_0x99cc('0x97')](function(_0x1bdc50){if(!_0x1bdc50['stopRecordingOnTransfer'])return;return Promise[_0x99cc('0x96')]()[_0x99cc('0x97')](function(){return ami['Action']({'action':_0x99cc('0x9c'),'channel':_0x1a48d0[_0x99cc('0x3c')]})['catch'](function(){});})[_0x99cc('0x97')](function(){return ami['Action']({'action':_0x99cc('0x9c'),'channel':_0x1a48d0['destinationchannel']})[_0x99cc('0x9d')](function(){})[_0x99cc('0x9e')](function(){var _0x4fcff2=_0xbf8c96[_0x99cc('0x17')][_0x1a48d0[_0x99cc('0x66')][_0x99cc('0x3d')]('-')[0x0]];if(!_0x4fcff2)return;io['emit']('webbar:stopmonitors',{'agentId':_0x4fcff2['id'],'uniqueid':_0x1a48d0[_0x99cc('0x32')]});});});});})['then'](function(){if(_0x3104c3[_0x99cc('0x9f')]===_0x99cc('0xa0')){_0xbf8c96['blindTransfers'][_0x3104c3[_0x99cc('0x32')]]=_0xbf8c96[_0x99cc('0x16')][_0x3104c3[_0x99cc('0x32')]];}else{if(_0xbf8c96[_0x99cc('0x16')][_0x3104c3['uniqueid']][_0x99cc('0x80')]==='outbound'&&_0xbf8c96[_0x99cc('0x18')][_0x3104c3['uniqueid']]){_0xbf8c96[_0x99cc('0x16')][_0x3104c3[_0x99cc('0x32')]][_0x99cc('0x32')]=[_0xbf8c96[_0x99cc('0x16')][_0x3104c3[_0x99cc('0x32')]][_0x99cc('0x37')],_0xbf8c96[_0x99cc('0x16')][_0x3104c3[_0x99cc('0x32')]][_0x99cc('0x37')]=_0xbf8c96[_0x99cc('0x16')][_0x3104c3['uniqueid']][_0x99cc('0x32')]][0x0];delete _0xbf8c96[_0x99cc('0x18')][_0x3104c3[_0x99cc('0x32')]];}}logger[_0x99cc('0x35')]('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0x3104c3[_0x99cc('0x32')],util[_0x99cc('0x2c')](_0xbf8c96[_0x99cc('0x16')][_0x3104c3[_0x99cc('0x32')]],{'showHidden':![],'depth':null}));ami[_0x99cc('0x30')]('custom:voiceCallReport',_0xbf8c96[_0x99cc('0x16')][_0x3104c3[_0x99cc('0x32')]]);delete _0xbf8c96[_0x99cc('0x16')][_0x3104c3[_0x99cc('0x32')]];});}}}catch(_0x1dfdc1){logger[_0x99cc('0x2a')](_0x99cc('0xa1'),_0x3104c3[_0x99cc('0x32')],util[_0x99cc('0x2c')](_0x1dfdc1,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x99cc('0x2d')][_0x99cc('0xa2')]=function(_0x10b193){try{if(this['isNotNull'](_0x10b193)){logger['info'](_0x99cc('0xa3'),_0x10b193[_0x99cc('0x32')],_0x10b193[_0x99cc('0xa4')],_0x10b193['transfertargetcalleridnum']);logger[_0x99cc('0x35')](_0x99cc('0xa5'),_0x10b193['uniqueid'],util[_0x99cc('0x2c')](_0x10b193,{'showHidden':![],'depth':null}));if(this['channels'][_0x10b193[_0x99cc('0xa6')]]){this[_0x99cc('0x16')][_0x10b193['transfereeuniqueid']][_0x99cc('0xa7')]=_0x10b193[_0x99cc('0xa4')];this[_0x99cc('0x16')][_0x10b193[_0x99cc('0xa6')]][_0x99cc('0xa8')]=_0x10b193[_0x99cc('0xa9')];if(this[_0x99cc('0x16')][_0x10b193['secondtransfereruniqueid']]){var _0x3c864a=this[_0x99cc('0x16')][_0x10b193[_0x99cc('0xaa')]];this[_0x99cc('0x16')][_0x10b193['secondtransfereruniqueid']]=this[_0x99cc('0x16')][_0x10b193[_0x99cc('0xa6')]];this[_0x99cc('0x16')][_0x10b193[_0x99cc('0xa6')]]=_0x3c864a;}}else if(this[_0x99cc('0x16')][_0x10b193[_0x99cc('0xab')]]){this['channels'][_0x10b193['transfertargetuniqueid']][_0x99cc('0xa7')]=_0x10b193[_0x99cc('0xa4')];this['channels'][_0x10b193[_0x99cc('0xab')]]['transferconnectedlinenum']=_0x10b193[_0x99cc('0xa9')];if(this[_0x99cc('0x16')][_0x10b193[_0x99cc('0xac')]]){var _0x3c864a=this[_0x99cc('0x16')][_0x10b193['origtransfereruniqueid']];this['channels'][_0x10b193[_0x99cc('0xac')]]=this[_0x99cc('0x16')][_0x10b193[_0x99cc('0xab')]];this['channels'][_0x10b193['transfertargetuniqueid']]=_0x3c864a;}}if((this[_0x99cc('0x16')][_0x10b193[_0x99cc('0xac')]]||this[_0x99cc('0x16')][_0x10b193[_0x99cc('0xad')]])&&this[_0x99cc('0x16')][_0x10b193['secondtransfereruniqueid']]){var _0x213ffb=_[_0x99cc('0xae')]([this[_0x99cc('0x16')][_0x10b193[_0x99cc('0xac')]],this[_0x99cc('0x16')][_0x10b193[_0x99cc('0xad')]],this[_0x99cc('0x16')][_0x10b193[_0x99cc('0xaa')]]],function(_0x2c3805){return _0x2c3805&&_0x2c3805[_0x99cc('0x80')]==='outbound'&&_0x2c3805[_0x99cc('0xaf')];});if(_0x213ffb){if(this[_0x99cc('0x16')][_0x10b193[_0x99cc('0xac')]])this[_0x99cc('0x16')][_0x10b193[_0x99cc('0xac')]][_0x99cc('0x98')]=_0x99cc('0xb0');if(this[_0x99cc('0x16')][_0x10b193['origtransfererlinkedid']])this[_0x99cc('0x16')][_0x10b193[_0x99cc('0xad')]][_0x99cc('0x98')]='ATTENDED';this[_0x99cc('0x16')][_0x10b193[_0x99cc('0xaa')]][_0x99cc('0x98')]=_0x99cc('0xb0');}}}}catch(_0x15f99a){logger[_0x99cc('0x2a')](_0x99cc('0xb1'),_0x10b193[_0x99cc('0x32')],util[_0x99cc('0x2c')](_0x15f99a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x99cc('0x2d')]['syncBlindTransfer']=function(_0x14a92a){try{if(this['isNotNull'](_0x14a92a)){logger[_0x99cc('0x28')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x14a92a[_0x99cc('0x32')],_0x14a92a[_0x99cc('0xb2')],_0x14a92a['extension']);logger[_0x99cc('0x35')](_0x99cc('0xb3'),_0x14a92a[_0x99cc('0x32')],util[_0x99cc('0x2c')](_0x14a92a,{'showHidden':![],'depth':null}));if(this[_0x99cc('0x16')][_0x14a92a[_0x99cc('0xa6')]]){this[_0x99cc('0x16')][_0x14a92a[_0x99cc('0xa6')]][_0x99cc('0xa7')]=_0x14a92a[_0x99cc('0xb2')];this[_0x99cc('0x16')][_0x14a92a['transfereeuniqueid']][_0x99cc('0xa8')]=_0x14a92a[_0x99cc('0xb4')];this[_0x99cc('0x16')][_0x14a92a[_0x99cc('0xa6')]]['transferType']=_0x99cc('0xb5');this['syncHangup']({'event':'BlindTransfer','uniqueid':_0x14a92a[_0x99cc('0xa6')],'context':_0x14a92a['context'],'channel':_0x14a92a['transfererchannel']});}else{this['channels'][_0x14a92a[_0x99cc('0xb6')]][_0x99cc('0x98')]=_0x99cc('0xb5');}}}catch(_0x261bfa){logger[_0x99cc('0x2a')](_0x99cc('0xb7'),_0x14a92a[_0x99cc('0x32')],util[_0x99cc('0x2c')](_0x261bfa,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x99cc('0x2d')][_0x99cc('0x26')]=function(_0x3c3b43){try{if(this[_0x99cc('0x2e')](_0x3c3b43)){logger['debug']('[%s][voiceCallReport][musiconholdstart]\x20event:',_0x3c3b43['uniqueid'],util[_0x99cc('0x2c')](_0x3c3b43,{'showHidden':![],'depth':null}));if(this[_0x99cc('0x16')][_0x3c3b43[_0x99cc('0x32')]]){if(!_[_0x99cc('0xb8')](this[_0x99cc('0x16')][_0x3c3b43[_0x99cc('0x32')]]['answertime'])){this[_0x99cc('0x16')][_0x3c3b43[_0x99cc('0x32')]]['mohstarttime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger[_0x99cc('0x28')](_0x99cc('0xb9'),_0x3c3b43[_0x99cc('0x32')],this[_0x99cc('0x16')][_0x3c3b43[_0x99cc('0x32')]][_0x99cc('0xba')]);}}}}catch(_0x62a4fe){logger['error']('[%s][voiceCallReport][musiconholdstart]',_0x3c3b43['uniqueid'],util['inspect'](_0x62a4fe,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x99cc('0x27')]=function(_0x373394){try{if(this[_0x99cc('0x2e')](_0x373394)){logger['debug'](_0x99cc('0xbb'),_0x373394[_0x99cc('0x32')],util[_0x99cc('0x2c')](_0x373394,{'showHidden':![],'depth':null}));if(this[_0x99cc('0x16')][_0x373394[_0x99cc('0x32')]]){if(!_['isNil'](this[_0x99cc('0x16')][_0x373394[_0x99cc('0x32')]]['mohstarttime'])){this['channels'][_0x373394['uniqueid']]['mohtime']+=moment()[_0x99cc('0xbc')](0x0)[_0x99cc('0x62')](this[_0x99cc('0x16')][_0x373394[_0x99cc('0x32')]][_0x99cc('0xba')],'seconds');logger[_0x99cc('0x28')](_0x99cc('0xbd'),_0x373394['uniqueid'],this[_0x99cc('0x16')][_0x373394[_0x99cc('0x32')]][_0x99cc('0xbe')]);delete this[_0x99cc('0x16')][_0x373394[_0x99cc('0x32')]][_0x99cc('0xba')];}}}}catch(_0x2ff3e7){logger[_0x99cc('0x2a')](_0x99cc('0xbf'),_0x373394[_0x99cc('0x32')],util[_0x99cc('0x2c')](_0x2ff3e7,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
index 1e338cc..680d772 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd70e=['cause-txt','endtime','duration','diff','starttime','seconds','lastevent','complete','answered','sumHoldTime','holdtime','sumBillable','billableseconds','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','syncNewExten','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','../ami','redis','defaults','localhost','outboundChannels','outbound','dialbegin','syncDialBegin','bind','syncDialEnd','varset','syncVarSet','newexten','hangup','syncHangup','isNotNull','isUndefined','prototype','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','channels','format','YYYY-MM-DD\x20HH:mm:ss','called','substring','channel','lastIndexOf','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','applications','merge','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','[%s][voiceDialReport][dialbegin]','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','error','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','outboundrouteid','variables','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete'];(function(_0x9c2427,_0x17c865){var _0x51984f=function(_0x177af6){while(--_0x177af6){_0x9c2427['push'](_0x9c2427['shift']());}};_0x51984f(++_0x17c865);}(_0xd70e,0x193));var _0xed70=function(_0x5f2872,_0x34bf62){_0x5f2872=_0x5f2872-0x0;var _0x5e9e6c=_0xd70e[_0x5f2872];return _0x5e9e6c;};'use strict';var _=require(_0xed70('0x0'));var moment=require(_0xed70('0x1'));var util=require(_0xed70('0x2'));var Redis=require(_0xed70('0x3'));var config=require(_0xed70('0x4'));var logger=require(_0xed70('0x5'))('ami');var ami=require(_0xed70('0x6'));config[_0xed70('0x7')]=_[_0xed70('0x8')](config['redis'],{'host':_0xed70('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xed70('0x7')]));function VoiceDialReport(_0x446911){this['channels']=_0x446911[_0xed70('0xa')];this[_0xed70('0xb')]=_0x446911[_0xed70('0xb')];this['applications']={};this['variables']={};ami['on'](_0xed70('0xc'),this[_0xed70('0xd')][_0xed70('0xe')](this));ami['on']('dialend',this[_0xed70('0xf')]['bind'](this));ami['on'](_0xed70('0x10'),this[_0xed70('0x11')][_0xed70('0xe')](this));ami['on'](_0xed70('0x12'),this['syncNewExten'][_0xed70('0xe')](this));ami['on'](_0xed70('0x13'),this[_0xed70('0x14')]['bind'](this));}VoiceDialReport['prototype'][_0xed70('0x15')]=function(_0x291d49){return _0x291d49!==null&&!_[_0xed70('0x16')](_0x291d49);};VoiceDialReport[_0xed70('0x17')][_0xed70('0x18')]=function(_0x452f9c,_0xeb4fc7,_0x1562c0){io['to'](_0x452f9c)[_0xed70('0x18')](_0xeb4fc7,_0x1562c0);};VoiceDialReport[_0xed70('0x17')][_0xed70('0xd')]=function(_0x545db3){try{if(this[_0xed70('0x15')](_0x545db3)){logger[_0xed70('0x19')](_0xed70('0x1a'),_0x545db3[_0xed70('0x1b')],util[_0xed70('0x1c')](_0x545db3,{'showHidden':![],'depth':null}));if(this[_0xed70('0x1d')][_0x545db3[_0xed70('0x1b')]]){_['merge'](this['channels'][_0x545db3['uniqueid']],{'starttime':moment()[_0xed70('0x1e')](_0xed70('0x1f')),'lastevent':_0xed70('0x20'),'interface':_0x545db3['channel'][_0xed70('0x21')](0x0,_0x545db3[_0xed70('0x22')][_0xed70('0x23')]('-')),'membername':_0x545db3[_0xed70('0x22')][_0xed70('0x21')](_0x545db3['channel'][_0xed70('0x23')]('/')+0x1,_0x545db3[_0xed70('0x22')][_0xed70('0x23')]('-'))},_['omit'](_0x545db3,['event',_0xed70('0x24')]));logger[_0xed70('0x25')](_0xed70('0x26'),_0x545db3[_0xed70('0x1b')],this['channels'][_0x545db3[_0xed70('0x1b')]][_0xed70('0x27')],this[_0xed70('0x1d')][_0x545db3[_0xed70('0x1b')]][_0xed70('0x28')]);logger[_0xed70('0x19')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x545db3['uniqueid'],util[_0xed70('0x1c')](this['channels'][_0x545db3[_0xed70('0x1b')]],{'showHidden':![],'depth':null}));if(this[_0xed70('0x29')][_0x545db3[_0xed70('0x1b')]])_[_0xed70('0x2a')](this['channels'][_0x545db3[_0xed70('0x1b')]],this[_0xed70('0x29')][_0x545db3['uniqueid']]);this[_0xed70('0x18')](_0xed70('0x2b'),_0xed70('0x2c'),this[_0xed70('0x1d')][_0x545db3['uniqueid']]);logger['debug'](_0xed70('0x2d'),_0x545db3[_0xed70('0x1b')],util[_0xed70('0x1c')](this[_0xed70('0x1d')][_0x545db3[_0xed70('0x1b')]],{'showHidden':![],'depth':null}));ami['emit'](_0xed70('0x2e'),this['channels'][_0x545db3[_0xed70('0x1b')]]);}}}catch(_0x2bcd2b){logger['error'](_0xed70('0x2f'),_0x545db3[_0xed70('0x1b')],util[_0xed70('0x1c')](_0x2bcd2b,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xed70('0x17')][_0xed70('0xf')]=function(_0x80c757){try{if(this[_0xed70('0x15')](_0x80c757)){logger[_0xed70('0x19')]('[%s][voiceDialReport][dialend]\x20event:',_0x80c757[_0xed70('0x1b')],util[_0xed70('0x1c')](_0x80c757,{'showHidden':![],'depth':null}));if(this[_0xed70('0x1d')][_0x80c757[_0xed70('0x1b')]]){this[_0xed70('0x1d')][_0x80c757[_0xed70('0x1b')]]['dialstatus']=_0x80c757[_0xed70('0x30')];if(_0x80c757['dialstatus']===_0xed70('0x31')){this[_0xed70('0x1d')][_0x80c757[_0xed70('0x1b')]][_0xed70('0x32')]=_0x80c757[_0xed70('0x32')];this[_0xed70('0x1d')][_0x80c757['uniqueid']]['connectedlinename']=_0x80c757[_0xed70('0x33')];this[_0xed70('0x1d')][_0x80c757[_0xed70('0x1b')]][_0xed70('0x34')]=moment()[_0xed70('0x1e')](_0xed70('0x1f'));this[_0xed70('0x1d')][_0x80c757[_0xed70('0x1b')]]['lastevent']='connect';logger[_0xed70('0x25')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x80c757['uniqueid'],_0x80c757[_0xed70('0x22')][_0xed70('0x21')](_0x80c757[_0xed70('0x22')]['lastIndexOf']('/')+0x1,_0x80c757['channel'][_0xed70('0x23')]('-')));logger[_0xed70('0x19')]('[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:',_0x80c757[_0xed70('0x1b')],util[_0xed70('0x1c')](this[_0xed70('0x1d')][_0x80c757[_0xed70('0x1b')]],{'showHidden':![],'depth':null}));ami['emit'](_0xed70('0x35'),this['channels'][_0x80c757[_0xed70('0x1b')]]);}logger[_0xed70('0x19')](_0xed70('0x36'),_0x80c757['uniqueid'],util[_0xed70('0x1c')](this['channels'][_0x80c757['uniqueid']],{'showHidden':![],'depth':null}));this[_0xed70('0x18')](_0xed70('0x2b'),_0xed70('0x2c'),this[_0xed70('0x1d')][_0x80c757[_0xed70('0x1b')]]);}}}catch(_0x7e6321){logger[_0xed70('0x37')](_0xed70('0x38'),_0x80c757['uniqueid'],util['inspect'](_0x7e6321,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xed70('0x17')][_0xed70('0x11')]=function(_0x59d039){try{if(this['isNotNull'](_0x59d039)){logger[_0xed70('0x19')](_0xed70('0x39'),_0x59d039[_0xed70('0x1b')],util[_0xed70('0x1c')](_0x59d039,{'showHidden':![],'depth':null}));this[_0xed70('0x3a')](_0x59d039[_0xed70('0x1b')],_[_0xed70('0x3b')](_0x59d039[_0xed70('0x3c')])[0x0],_0x59d039[_0xed70('0x3d')]);if(this[_0xed70('0x15')](_0x59d039[_0xed70('0x3c')])&&this['isNotNull'](_0x59d039[_0xed70('0x3c')][_0xed70('0x3e')])){if(_[_0xed70('0x16')](this['channels'][_0x59d039[_0xed70('0x1b')]])){this[_0xed70('0x1d')][_0x59d039['uniqueid']]={'routeId':_0x59d039[_0xed70('0x3d')],'variables':this[_0xed70('0x3f')][_0x59d039[_0xed70('0x1b')]]};logger['info'](_0xed70('0x40'),_0x59d039[_0xed70('0x1b')],_0x59d039[_0xed70('0x3c')][_0xed70('0x3e')],_[_0xed70('0x3b')](_0x59d039[_0xed70('0x3c')])[0x0],_0x59d039[_0xed70('0x3d')]);logger[_0xed70('0x19')](_0xed70('0x41'),_0x59d039[_0xed70('0x1b')],util[_0xed70('0x1c')](this[_0xed70('0x1d')][_0x59d039['uniqueid']],{'showHidden':![],'depth':null}));this[_0xed70('0x18')]('voice:outbound',_0xed70('0x2c'),this[_0xed70('0x1d')][_0x59d039[_0xed70('0x1b')]]);}}}}catch(_0x5d6466){logger[_0xed70('0x37')](_0xed70('0x42'),_0x59d039[_0xed70('0x1b')],util[_0xed70('0x1c')](_0x5d6466,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xed70('0x3a')]=function(_0x3d73d0,_0x5dfaf5,_0x32ae4f){var _0x12b367=[_0xed70('0x43'),_0xed70('0x44'),_0xed70('0x45'),_0xed70('0x46'),'rtpaudioqosloss','rtpaudioqoslossbridged',_0xed70('0x47'),'rtpaudioqosrttbridged',_0xed70('0x48'),_0xed70('0x49'),_0xed70('0x4a'),_0xed70('0x4b'),_0xed70('0x4c'),_0xed70('0x4d'),_0xed70('0x4e'),_0xed70('0x4f'),_0xed70('0x27'),_0xed70('0x50'),_0xed70('0x51')];if(!_[_0xed70('0x52')](_0x5dfaf5)&&!_[_0xed70('0x53')](_0x12b367,_0x5dfaf5)){if(_[_0xed70('0x16')](this[_0xed70('0x3f')][_0x3d73d0])){this['variables'][_0x3d73d0]={};}this['variables'][_0x3d73d0][_0x5dfaf5]=_0x32ae4f;}};VoiceDialReport[_0xed70('0x17')]['syncHangup']=function(_0x58bfda){try{if(this[_0xed70('0x15')](_0x58bfda)){logger[_0xed70('0x19')]('[%s][voiceDialReport][hangup]\x20event:',_0x58bfda['uniqueid'],util[_0xed70('0x1c')](_0x58bfda,{'showHidden':![],'depth':null}));if(this[_0xed70('0x1d')][_0x58bfda[_0xed70('0x1b')]]){logger[_0xed70('0x25')](_0xed70('0x54'),_0x58bfda[_0xed70('0x1b')],_0x58bfda[_0xed70('0x55')]);this['channels'][_0x58bfda[_0xed70('0x1b')]][_0xed70('0x56')]=moment()['format'](_0xed70('0x1f'));this[_0xed70('0x1d')][_0x58bfda['uniqueid']][_0xed70('0x57')]=moment(this[_0xed70('0x1d')][_0x58bfda['uniqueid']]['endtime'])[_0xed70('0x58')](this[_0xed70('0x1d')][_0x58bfda[_0xed70('0x1b')]][_0xed70('0x59')],_0xed70('0x5a'));this[_0xed70('0x1d')][_0x58bfda[_0xed70('0x1b')]][_0xed70('0x5b')]=_0xed70('0x5c');this[_0xed70('0xb')]['total']+=0x1;if(this['channels'][_0x58bfda['uniqueid']][_0xed70('0x34')]){this[_0xed70('0xb')][_0xed70('0x5d')]+=0x1;this[_0xed70('0x1d')][_0x58bfda['uniqueid']]['holdtime']=moment(this[_0xed70('0x1d')][_0x58bfda[_0xed70('0x1b')]]['answertime'])[_0xed70('0x58')](this[_0xed70('0x1d')][_0x58bfda[_0xed70('0x1b')]][_0xed70('0x59')],'seconds');this[_0xed70('0x1d')][_0x58bfda[_0xed70('0x1b')]]['billableseconds']=moment(this[_0xed70('0x1d')][_0x58bfda[_0xed70('0x1b')]][_0xed70('0x56')])[_0xed70('0x58')](this[_0xed70('0x1d')][_0x58bfda[_0xed70('0x1b')]][_0xed70('0x34')],_0xed70('0x5a'));this['outbound'][_0xed70('0x5e')]+=this[_0xed70('0x1d')][_0x58bfda[_0xed70('0x1b')]][_0xed70('0x5f')]||0x0;this['outbound'][_0xed70('0x60')]+=this[_0xed70('0x1d')][_0x58bfda[_0xed70('0x1b')]][_0xed70('0x61')];}this[_0xed70('0xb')][_0xed70('0x62')]+=this[_0xed70('0x1d')][_0x58bfda[_0xed70('0x1b')]][_0xed70('0x57')];logger['debug'](_0xed70('0x63'),_0x58bfda[_0xed70('0x1b')],util[_0xed70('0x1c')](this[_0xed70('0x1d')][_0x58bfda[_0xed70('0x1b')]],{'showHidden':![],'depth':null}));ami[_0xed70('0x18')](_0xed70('0x64'),this[_0xed70('0x1d')][_0x58bfda[_0xed70('0x1b')]]);logger['debug'](_0xed70('0x65'),_0x58bfda['uniqueid'],util[_0xed70('0x1c')](this['channels'][_0x58bfda[_0xed70('0x1b')]],{'showHidden':![],'depth':null}));ami['emit'](_0xed70('0x66'),this['channels'][_0x58bfda[_0xed70('0x1b')]]);logger['debug'](_0xed70('0x67'),_0x58bfda[_0xed70('0x1b')],util[_0xed70('0x1c')](this[_0xed70('0x1d')][_0x58bfda[_0xed70('0x1b')]],{'showHidden':![],'depth':null}));this[_0xed70('0x18')](_0xed70('0x2b'),_0xed70('0x68'),this['outbound']);logger[_0xed70('0x25')](_0xed70('0x69'),JSON[_0xed70('0x6a')](this[_0xed70('0x1d')][_0x58bfda['uniqueid']]));logger[_0xed70('0x19')](_0xed70('0x6b'),_0x58bfda[_0xed70('0x1b')],util['inspect'](this['channels'][_0x58bfda['uniqueid']],{'showHidden':![],'depth':null}));this[_0xed70('0x18')](_0xed70('0x2b'),_0xed70('0x6c'),this[_0xed70('0x1d')][_0x58bfda['uniqueid']]);delete this[_0xed70('0x1d')][_0x58bfda[_0xed70('0x1b')]];}else if(this['channels'][_0x58bfda['linkedid']]){this[_0xed70('0x1d')][_0x58bfda[_0xed70('0x6d')]][_0xed70('0x1b')]=this[_0xed70('0x1d')][_0x58bfda[_0xed70('0x6d')]]['destuniqueid'];}if(this['variables'][_0x58bfda[_0xed70('0x1b')]]){delete this[_0xed70('0x3f')][_0x58bfda['uniqueid']];}}}catch(_0xc0b43e){logger[_0xed70('0x37')]('[%s][voiceDialReport][hangup]',_0x58bfda[_0xed70('0x1b')],util[_0xed70('0x1c')](_0xc0b43e,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xed70('0x17')][_0xed70('0x6e')]=function(_0x5164b4){try{if(this[_0xed70('0x15')](_0x5164b4)){logger[_0xed70('0x19')](_0xed70('0x6f'),_0x5164b4['uniqueid'],util[_0xed70('0x1c')](_0x5164b4,{'showHidden':![],'depth':null}));if(_0x5164b4[_0xed70('0x70')][_0xed70('0x71')]()===_0xed70('0x72')){_0x5164b4[_0xed70('0x73')]=(_0x5164b4['appdata']||_0x5164b4[_0xed70('0x73')])[_0xed70('0x71')]();if(_['startsWith'](_0x5164b4[_0xed70('0x73')],_0xed70('0x74'))){if(_[_0xed70('0x16')](this[_0xed70('0x29')][_0x5164b4[_0xed70('0x1b')]]))this['applications'][_0x5164b4[_0xed70('0x1b')]]={};logger['info'](_0xed70('0x75'),_0x5164b4[_0xed70('0x1b')],_0x5164b4[_0xed70('0x70')],_0x5164b4[_0xed70('0x73')]);var _0x3f0af1=_0x5164b4[_0xed70('0x73')][_0xed70('0x76')]('=');var _0x558dc9=_0x3f0af1[0x0][_0xed70('0x77')](/cdr\((.*)\)/);if(_0x558dc9)this['applications'][_0x5164b4[_0xed70('0x1b')]][_0x558dc9[0x1]]=_0x3f0af1[0x1];}}}}catch(_0x255ced){logger['error'](_0xed70('0x78'),_0x5164b4['uniqueid'],util[_0xed70('0x1c')](_0x255ced,{'showHidden':![],'depth':null}));}};module[_0xed70('0x79')]=VoiceDialReport;
\ No newline at end of file
+var _0x1199=['emit','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','YYYY-MM-DD\x20HH:mm:ss','substring','channel','lastIndexOf','omit','privilege','info','interface','voice_outbound_channel:save','debug','custom:dialbegin','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','format','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','voice:outbound','error','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','variable','value','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','keys','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberinterface','memberlastcall','membername','memberpenalty','memberrealtime','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','diff','starttime','lastevent','total','answered','billableseconds','seconds','sumHoldTime','sumBillable','duration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','application','set','applicationdata','appdata','toLowerCase','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','match','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','redis','socket.io-emitter','channels','outbound','applications','variables','dialend','syncDialEnd','bind','varset','syncVarSet','syncNewExten','syncHangup','prototype','isNotNull','isUndefined'];(function(_0x3dbd6d,_0x3ee9d7){var _0x1216f1=function(_0x27b7ad){while(--_0x27b7ad){_0x3dbd6d['push'](_0x3dbd6d['shift']());}};_0x1216f1(++_0x3ee9d7);}(_0x1199,0xc8));var _0x9119=function(_0x4c6494,_0x3f802c){_0x4c6494=_0x4c6494-0x0;var _0x24f2e3=_0x1199[_0x4c6494];return _0x24f2e3;};'use strict';var _=require('lodash');var moment=require(_0x9119('0x0'));var util=require(_0x9119('0x1'));var Redis=require(_0x9119('0x2'));var config=require(_0x9119('0x3'));var logger=require(_0x9119('0x4'))(_0x9119('0x5'));var ami=require('../ami');config[_0x9119('0x6')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x9119('0x7'))(new Redis(config[_0x9119('0x6')]));function VoiceDialReport(_0xb79e22){this[_0x9119('0x8')]=_0xb79e22['outboundChannels'];this[_0x9119('0x9')]=_0xb79e22[_0x9119('0x9')];this[_0x9119('0xa')]={};this[_0x9119('0xb')]={};ami['on']('dialbegin',this['syncDialBegin']['bind'](this));ami['on'](_0x9119('0xc'),this[_0x9119('0xd')][_0x9119('0xe')](this));ami['on'](_0x9119('0xf'),this[_0x9119('0x10')][_0x9119('0xe')](this));ami['on']('newexten',this[_0x9119('0x11')][_0x9119('0xe')](this));ami['on']('hangup',this[_0x9119('0x12')][_0x9119('0xe')](this));}VoiceDialReport[_0x9119('0x13')][_0x9119('0x14')]=function(_0x185892){return _0x185892!==null&&!_[_0x9119('0x15')](_0x185892);};VoiceDialReport[_0x9119('0x13')]['emit']=function(_0x2f20a8,_0x1ede83,_0x4e1651){io['to'](_0x2f20a8)[_0x9119('0x16')](_0x1ede83,_0x4e1651);};VoiceDialReport[_0x9119('0x13')]['syncDialBegin']=function(_0x2c930f){try{if(this['isNotNull'](_0x2c930f)){logger['debug'](_0x9119('0x17'),_0x2c930f[_0x9119('0x18')],util[_0x9119('0x19')](_0x2c930f,{'showHidden':![],'depth':null}));if(this['channels'][_0x2c930f[_0x9119('0x18')]]){_[_0x9119('0x1a')](this[_0x9119('0x8')][_0x2c930f[_0x9119('0x18')]],{'starttime':moment()['format'](_0x9119('0x1b')),'lastevent':'called','interface':_0x2c930f['channel'][_0x9119('0x1c')](0x0,_0x2c930f[_0x9119('0x1d')][_0x9119('0x1e')]('-')),'membername':_0x2c930f[_0x9119('0x1d')][_0x9119('0x1c')](_0x2c930f[_0x9119('0x1d')][_0x9119('0x1e')]('/')+0x1,_0x2c930f[_0x9119('0x1d')][_0x9119('0x1e')]('-'))},_[_0x9119('0x1f')](_0x2c930f,['event',_0x9119('0x20')]));logger[_0x9119('0x21')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x2c930f['uniqueid'],this['channels'][_0x2c930f[_0x9119('0x18')]]['membername'],this[_0x9119('0x8')][_0x2c930f['uniqueid']][_0x9119('0x22')]);logger['debug']('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x2c930f[_0x9119('0x18')],util['inspect'](this[_0x9119('0x8')][_0x2c930f[_0x9119('0x18')]],{'showHidden':![],'depth':null}));if(this[_0x9119('0xa')][_0x2c930f[_0x9119('0x18')]])_['merge'](this['channels'][_0x2c930f[_0x9119('0x18')]],this['applications'][_0x2c930f[_0x9119('0x18')]]);this[_0x9119('0x16')]('voice:outbound',_0x9119('0x23'),this[_0x9119('0x8')][_0x2c930f['uniqueid']]);logger[_0x9119('0x24')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x2c930f[_0x9119('0x18')],util[_0x9119('0x19')](this[_0x9119('0x8')][_0x2c930f[_0x9119('0x18')]],{'showHidden':![],'depth':null}));ami[_0x9119('0x16')](_0x9119('0x25'),this['channels'][_0x2c930f[_0x9119('0x18')]]);}}}catch(_0x500ac0){logger['error']('[%s][voiceDialReport][dialbegin]',_0x2c930f[_0x9119('0x18')],util[_0x9119('0x19')](_0x500ac0,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9119('0x13')][_0x9119('0xd')]=function(_0x3a4362){try{if(this[_0x9119('0x14')](_0x3a4362)){logger[_0x9119('0x24')](_0x9119('0x26'),_0x3a4362[_0x9119('0x18')],util[_0x9119('0x19')](_0x3a4362,{'showHidden':![],'depth':null}));if(this[_0x9119('0x8')][_0x3a4362[_0x9119('0x18')]]){this['channels'][_0x3a4362['uniqueid']][_0x9119('0x27')]=_0x3a4362[_0x9119('0x27')];if(_0x3a4362[_0x9119('0x27')]===_0x9119('0x28')){this[_0x9119('0x8')][_0x3a4362[_0x9119('0x18')]][_0x9119('0x29')]=_0x3a4362[_0x9119('0x29')];this['channels'][_0x3a4362[_0x9119('0x18')]][_0x9119('0x2a')]=_0x3a4362['connectedlinename'];this['channels'][_0x3a4362[_0x9119('0x18')]][_0x9119('0x2b')]=moment()[_0x9119('0x2c')](_0x9119('0x1b'));this[_0x9119('0x8')][_0x3a4362['uniqueid']]['lastevent']=_0x9119('0x2d');logger['info'](_0x9119('0x2e'),_0x3a4362[_0x9119('0x18')],_0x3a4362[_0x9119('0x1d')][_0x9119('0x1c')](_0x3a4362[_0x9119('0x1d')][_0x9119('0x1e')]('/')+0x1,_0x3a4362[_0x9119('0x1d')]['lastIndexOf']('-')));logger[_0x9119('0x24')]('[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:',_0x3a4362[_0x9119('0x18')],util['inspect'](this[_0x9119('0x8')][_0x3a4362[_0x9119('0x18')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialconnect',this[_0x9119('0x8')][_0x3a4362[_0x9119('0x18')]]);}logger[_0x9119('0x24')]('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x3a4362['uniqueid'],util['inspect'](this[_0x9119('0x8')][_0x3a4362[_0x9119('0x18')]],{'showHidden':![],'depth':null}));this[_0x9119('0x16')](_0x9119('0x2f'),_0x9119('0x23'),this['channels'][_0x3a4362[_0x9119('0x18')]]);}}}catch(_0x2ee410){logger[_0x9119('0x30')](_0x9119('0x31'),_0x3a4362['uniqueid'],util['inspect'](_0x2ee410,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9119('0x13')]['syncVarSet']=function(_0x41fee3){try{if(this[_0x9119('0x14')](_0x41fee3)){logger['debug'](_0x9119('0x32'),_0x41fee3[_0x9119('0x18')],util[_0x9119('0x19')](_0x41fee3,{'showHidden':![],'depth':null}));this[_0x9119('0x33')](_0x41fee3[_0x9119('0x18')],_['keys'](_0x41fee3[_0x9119('0x34')])[0x0],_0x41fee3[_0x9119('0x35')]);if(this[_0x9119('0x14')](_0x41fee3[_0x9119('0x34')])&&this[_0x9119('0x14')](_0x41fee3[_0x9119('0x34')]['outboundrouteid'])){if(_[_0x9119('0x15')](this[_0x9119('0x8')][_0x41fee3[_0x9119('0x18')]])){this['channels'][_0x41fee3[_0x9119('0x18')]]={'routeId':_0x41fee3[_0x9119('0x35')],'variables':this[_0x9119('0xb')][_0x41fee3[_0x9119('0x18')]],'motionChannel':'voice'};logger[_0x9119('0x21')](_0x9119('0x36'),_0x41fee3[_0x9119('0x18')],_0x41fee3['variable'][_0x9119('0x37')],_[_0x9119('0x38')](_0x41fee3[_0x9119('0x34')])[0x0],_0x41fee3[_0x9119('0x35')]);logger[_0x9119('0x24')](_0x9119('0x39'),_0x41fee3['uniqueid'],util[_0x9119('0x19')](this['channels'][_0x41fee3[_0x9119('0x18')]],{'showHidden':![],'depth':null}));this['emit'](_0x9119('0x2f'),_0x9119('0x23'),this['channels'][_0x41fee3[_0x9119('0x18')]]);}}}}catch(_0x262913){logger[_0x9119('0x30')](_0x9119('0x3a'),_0x41fee3[_0x9119('0x18')],util['inspect'](_0x262913,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9119('0x13')][_0x9119('0x33')]=function(_0x425d2a,_0xbe752a,_0xe05f2){var _0x40bf69=[_0x9119('0x3b'),_0x9119('0x3c'),_0x9119('0x3d'),_0x9119('0x3e'),_0x9119('0x3f'),_0x9119('0x40'),_0x9119('0x41'),'rtpaudioqosrttbridged',_0x9119('0x42'),_0x9119('0x43'),_0x9119('0x44'),_0x9119('0x45'),'membercalls','memberdynamic',_0x9119('0x46'),_0x9119('0x47'),_0x9119('0x48'),_0x9119('0x49'),_0x9119('0x4a')];if(!_['isNil'](_0xbe752a)&&!_[_0x9119('0x4b')](_0x40bf69,_0xbe752a)){if(_[_0x9119('0x15')](this['variables'][_0x425d2a])){this[_0x9119('0xb')][_0x425d2a]={};}this[_0x9119('0xb')][_0x425d2a][_0xbe752a]=_0xe05f2;}};VoiceDialReport[_0x9119('0x13')]['syncHangup']=function(_0x267c02){try{if(this[_0x9119('0x14')](_0x267c02)){logger[_0x9119('0x24')](_0x9119('0x4c'),_0x267c02[_0x9119('0x18')],util[_0x9119('0x19')](_0x267c02,{'showHidden':![],'depth':null}));if(this['channels'][_0x267c02[_0x9119('0x18')]]){logger['info'](_0x9119('0x4d'),_0x267c02[_0x9119('0x18')],_0x267c02[_0x9119('0x4e')]);this[_0x9119('0x8')][_0x267c02[_0x9119('0x18')]][_0x9119('0x4f')]=moment()[_0x9119('0x2c')](_0x9119('0x1b'));this[_0x9119('0x8')][_0x267c02['uniqueid']]['duration']=moment(this[_0x9119('0x8')][_0x267c02['uniqueid']]['endtime'])[_0x9119('0x50')](this[_0x9119('0x8')][_0x267c02[_0x9119('0x18')]][_0x9119('0x51')],'seconds');this[_0x9119('0x8')][_0x267c02[_0x9119('0x18')]][_0x9119('0x52')]='complete';this[_0x9119('0x9')][_0x9119('0x53')]+=0x1;if(this['channels'][_0x267c02[_0x9119('0x18')]][_0x9119('0x2b')]){this['outbound'][_0x9119('0x54')]+=0x1;this[_0x9119('0x8')][_0x267c02[_0x9119('0x18')]]['holdtime']=moment(this['channels'][_0x267c02[_0x9119('0x18')]]['answertime'])[_0x9119('0x50')](this[_0x9119('0x8')][_0x267c02[_0x9119('0x18')]][_0x9119('0x51')],'seconds');this[_0x9119('0x8')][_0x267c02[_0x9119('0x18')]][_0x9119('0x55')]=moment(this['channels'][_0x267c02['uniqueid']]['endtime'])[_0x9119('0x50')](this[_0x9119('0x8')][_0x267c02[_0x9119('0x18')]][_0x9119('0x2b')],_0x9119('0x56'));this[_0x9119('0x9')][_0x9119('0x57')]+=this[_0x9119('0x8')][_0x267c02[_0x9119('0x18')]]['holdtime']||0x0;this[_0x9119('0x9')][_0x9119('0x58')]+=this[_0x9119('0x8')][_0x267c02[_0x9119('0x18')]][_0x9119('0x55')];}this[_0x9119('0x9')]['sumDuration']+=this[_0x9119('0x8')][_0x267c02[_0x9119('0x18')]][_0x9119('0x59')];logger[_0x9119('0x24')](_0x9119('0x5a'),_0x267c02[_0x9119('0x18')],util[_0x9119('0x19')](this['channels'][_0x267c02[_0x9119('0x18')]],{'showHidden':![],'depth':null}));ami[_0x9119('0x16')](_0x9119('0x5b'),this['channels'][_0x267c02[_0x9119('0x18')]]);logger[_0x9119('0x24')](_0x9119('0x5c'),_0x267c02['uniqueid'],util[_0x9119('0x19')](this[_0x9119('0x8')][_0x267c02[_0x9119('0x18')]],{'showHidden':![],'depth':null}));ami[_0x9119('0x16')]('custom:dialend',this[_0x9119('0x8')][_0x267c02[_0x9119('0x18')]]);logger['debug'](_0x9119('0x5d'),_0x267c02[_0x9119('0x18')],util['inspect'](this[_0x9119('0x8')][_0x267c02[_0x9119('0x18')]],{'showHidden':![],'depth':null}));this[_0x9119('0x16')](_0x9119('0x2f'),'voice_outbound:save',this[_0x9119('0x9')]);logger[_0x9119('0x21')](_0x9119('0x5e'),JSON[_0x9119('0x5f')](this['channels'][_0x267c02[_0x9119('0x18')]]));logger[_0x9119('0x24')](_0x9119('0x60'),_0x267c02['uniqueid'],util[_0x9119('0x19')](this[_0x9119('0x8')][_0x267c02[_0x9119('0x18')]],{'showHidden':![],'depth':null}));this[_0x9119('0x16')](_0x9119('0x2f'),_0x9119('0x61'),this[_0x9119('0x8')][_0x267c02[_0x9119('0x18')]]);delete this[_0x9119('0x8')][_0x267c02[_0x9119('0x18')]];}else if(this[_0x9119('0x8')][_0x267c02[_0x9119('0x62')]]){this[_0x9119('0x8')][_0x267c02[_0x9119('0x62')]][_0x9119('0x18')]=this[_0x9119('0x8')][_0x267c02[_0x9119('0x62')]][_0x9119('0x63')];}if(this[_0x9119('0xb')][_0x267c02[_0x9119('0x18')]]){delete this['variables'][_0x267c02[_0x9119('0x18')]];}}}catch(_0x2d816e){logger[_0x9119('0x30')](_0x9119('0x64'),_0x267c02[_0x9119('0x18')],util[_0x9119('0x19')](_0x2d816e,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x9119('0x11')]=function(_0x2ceb00){try{if(this[_0x9119('0x14')](_0x2ceb00)){logger[_0x9119('0x24')]('[%s][voiceDialReport][newexten]\x20event:',_0x2ceb00[_0x9119('0x18')],util[_0x9119('0x19')](_0x2ceb00,{'showHidden':![],'depth':null}));if(_0x2ceb00[_0x9119('0x65')]['toLowerCase']()===_0x9119('0x66')){_0x2ceb00[_0x9119('0x67')]=(_0x2ceb00[_0x9119('0x68')]||_0x2ceb00[_0x9119('0x67')])[_0x9119('0x69')]();if(_[_0x9119('0x6a')](_0x2ceb00[_0x9119('0x67')],_0x9119('0x6b'))){if(_['isUndefined'](this[_0x9119('0xa')][_0x2ceb00[_0x9119('0x18')]]))this[_0x9119('0xa')][_0x2ceb00['uniqueid']]={};logger['info'](_0x9119('0x6c'),_0x2ceb00[_0x9119('0x18')],_0x2ceb00[_0x9119('0x65')],_0x2ceb00[_0x9119('0x67')]);var _0x1b358=_0x2ceb00[_0x9119('0x67')][_0x9119('0x6d')]('=');var _0x9c274a=_0x1b358[0x0][_0x9119('0x6e')](/cdr\((.*)\)/);if(_0x9c274a)this['applications'][_0x2ceb00['uniqueid']][_0x9c274a[0x1]]=_0x1b358[0x1];}}}}catch(_0x2eb1b8){logger[_0x9119('0x30')]('[%s][voiceDialReport][newexten]',_0x2ceb00[_0x9119('0x18')],util['inspect'](_0x2eb1b8,{'showHidden':![],'depth':null}));}};module['exports']=VoiceDialReport;
\ No newline at end of file
index b108963..c8a6cc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2750=['queuestatus','CONTINUE','TIMEOUT','timeout','queuecallerleaveAt','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','queueposition','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberlastcall','memberpenalty','memberrealtime','includes','[%s][voiceQueueReport][hangup]','length','sumHoldTime','seconds','milliseconds','diff','queuecallercompleteAt','lastevent','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','cause-txt','custom:voiceQueueReport','transfereeuniqueid','ATTENDEDTRANSFER','ATTENDED','secondtransfereruniqueid','switch','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstart]','syncMusicOnHoldStop','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','util','md5','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','redis','defaults','localhost','socket.io-emitter','prototype','tail','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','queuesummary','syncQueueSummary','bind','queuesummarycomplete','syncQueueSummaryComplete','syncQueueCallerJoin','syncQueueCallerAbandon','syncQueueCallerLeave','varset','syncVarSet','hangup','syncHangup','syncFullyBooted','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncAttendedTransfer','syncBlindTransfer','loopQueueSummary','isEmpty','hasOwnProperty','originated','talking','pTalking','waiting','queueStatusComplete','clearZombieChannels','sequence','enqueue','isNil','status','channel','message','error','[%s][voiceQueueReport][checkChannel]','[%s][voiceQueueReport][checkQueueReport]','inspect','variables','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','strategy','answered','available','loggedIn','sumBillable','sumDuration','total','unmanaged','abandoned','Trunk','callerid','Interval','stringify',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','loopQueueShow','queues','catch','[voiceQueueReport][queues]','then','[voiceQueueReport][queuesummary]','queue','[voiceQueueReport][queuesummary]\x20event:','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','position','count','routealias','info','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','push','queuecallerjoin','last','queuecallercomplete','holdtime','originalposition','queuecallerabandon','queuecallerabandonAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitreason','ABANDONED','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','connectedlinenum','connectedlinename','queuecallerleave','syncAgentConnect','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','syncAgentComplete','[%s][voiceQueueReport][agentcomplete]','assigned','lastAssignedTo','membername','queuecallerexitAt','transfer','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','local/','linkedid','queuecallerexit','queuecallerjoinAt','add','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','reason','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','agentcomplete','[%s][voiceQueueReport][varset]','addVariable','variable','value'];(function(_0x4d0636,_0x35c302){var _0x49ba8e=function(_0x456a4e){while(--_0x456a4e){_0x4d0636['push'](_0x4d0636['shift']());}};_0x49ba8e(++_0x35c302);}(_0x2750,0x13b));var _0x0275=function(_0x45dd4e,_0x14274e){_0x45dd4e=_0x45dd4e-0x0;var _0x4471d1=_0x2750[_0x45dd4e];return _0x4471d1;};'use strict';var _=require(_0x0275('0x0'));var moment=require('moment');var util=require(_0x0275('0x1'));var md5=require(_0x0275('0x2'));var Redis=require(_0x0275('0x3'));var config=require(_0x0275('0x4'));var logger=require(_0x0275('0x5'))(_0x0275('0x6'));var ami=require(_0x0275('0x7'));var QueueReport=require(_0x0275('0x8'));config[_0x0275('0x9')]=_[_0x0275('0xa')](config['redis'],{'host':_0x0275('0xb'),'port':0x18eb});var io=require(_0x0275('0xc'))(new Redis(config[_0x0275('0x9')]));var Sequence=function(){};Sequence[_0x0275('0xd')]['enqueue']=function(_0x1f7c4a){this[_0x0275('0xe')]=this[_0x0275('0xe')]?this['tail']['finally'](_0x1f7c4a):_0x1f7c4a();};function VoiceQueueReport(_0x224e0f){this['sequence']=new Sequence();this[_0x0275('0xf')]={};this[_0x0275('0x10')]=_0x224e0f[_0x0275('0x10')];this[_0x0275('0x11')]=_0x224e0f[_0x0275('0x12')];this['voiceQueues']=_0x224e0f[_0x0275('0x13')];this[_0x0275('0x14')]=!![];this[_0x0275('0x15')]=_0x224e0f['campaigns'];this['variables']={};ami['on'](_0x0275('0x16'),this[_0x0275('0x17')][_0x0275('0x18')](this));ami['on'](_0x0275('0x19'),this[_0x0275('0x1a')][_0x0275('0x18')](this));ami['on']('queuecallerjoin',this[_0x0275('0x1b')][_0x0275('0x18')](this));ami['on']('queuecallerabandon',this[_0x0275('0x1c')][_0x0275('0x18')](this));ami['on']('queuecallerleave',this[_0x0275('0x1d')][_0x0275('0x18')](this));ami['on']('agentcomplete',this['syncAgentComplete']['bind'](this));ami['on']('agentconnect',this['syncAgentConnect'][_0x0275('0x18')](this));ami['on'](_0x0275('0x1e'),this[_0x0275('0x1f')]['bind'](this));ami['on'](_0x0275('0x20'),this[_0x0275('0x21')][_0x0275('0x18')](this));ami['on']('fullybooted',this[_0x0275('0x22')][_0x0275('0x18')](this));ami['on']('newexten',this['syncNewExten'][_0x0275('0x18')](this));ami['on'](_0x0275('0x23'),this[_0x0275('0x24')]['bind'](this));ami['on'](_0x0275('0x25'),this['syncMusicOnHoldStop'][_0x0275('0x18')](this));ami['on']('attendedtransfer',this[_0x0275('0x26')][_0x0275('0x18')](this));ami['on']('blindtransfer',this[_0x0275('0x27')][_0x0275('0x18')](this));this[_0x0275('0x28')]();this['loopQueueShow']();}function clearChannels(_0x2552bc){if(!_[_0x0275('0x29')](_0x2552bc)){for(var _0x24c928 in _0x2552bc){if(_0x2552bc[_0x0275('0x2a')](_0x24c928)){delete _0x2552bc[_0x24c928];}}}}function clearCampaigns(_0x1a2024){if(!_[_0x0275('0x29')](_0x1a2024)){for(var _0x56f26c in _0x1a2024){if(_0x1a2024[_0x0275('0x2a')](_0x56f26c)){_0x1a2024[_0x56f26c][_0x0275('0x2b')]=0x0;}}}}function clearVoiceQueues(_0x1d24b2){if(!_[_0x0275('0x29')](_0x1d24b2)){for(var _0x4689a3 in _0x1d24b2){if(_0x1d24b2['hasOwnProperty'](_0x4689a3)){_0x1d24b2[_0x4689a3][_0x0275('0x2b')]=0x0;_0x1d24b2[_0x4689a3][_0x0275('0x2c')]=0x0;_0x1d24b2[_0x4689a3][_0x0275('0x2d')]=0x0;_0x1d24b2[_0x4689a3][_0x0275('0x2e')]=0x0;_0x1d24b2[_0x4689a3][_0x0275('0x2f')]=!![];}}}}function clearAgentBooked(_0x49e645){if(!_[_0x0275('0x29')](_0x49e645)){for(var _0x287be3 in _0x49e645){if(_0x49e645[_0x0275('0x2a')](_0x287be3)){_0x49e645[_0x287be3]['unlockRR']=!![];}}}}VoiceQueueReport['prototype'][_0x0275('0x30')]=function(){var _0x299190=this;for(var _0x5dc2bc in this[_0x0275('0x11')]){if(this[_0x0275('0x11')][_0x0275('0x2a')](_0x5dc2bc)&&!this[_0x0275('0x11')][_0x5dc2bc]['switch']){this[_0x0275('0x31')][_0x0275('0x32')](function(){if(!_[_0x0275('0x33')](_0x299190[_0x0275('0x11')][_0x5dc2bc])){return ami['Action']({'action':_0x0275('0x34'),'channel':_0x299190['channels'][_0x5dc2bc][_0x0275('0x35')]})['catch'](function(_0x26aae0){if(_0x26aae0[_0x0275('0x36')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x299190[_0x0275('0x11')][_0x5dc2bc]){delete _0x299190[_0x0275('0x11')][_0x5dc2bc];logger[_0x0275('0x37')](_0x0275('0x38'),_0x5dc2bc,util['inspect'](_0x26aae0,{'showHidden':![],'depth':null}));}if(_0x299190[_0x0275('0xf')][_0x5dc2bc]){delete _0x299190[_0x0275('0xf')][_0x5dc2bc];logger[_0x0275('0x37')](_0x0275('0x39'),_0x5dc2bc,util[_0x0275('0x3a')](_0x26aae0,{'showHidden':![],'depth':null}));}if(_0x299190['variables'][_0x5dc2bc]){delete _0x299190[_0x0275('0x3b')][_0x5dc2bc];logger[_0x0275('0x37')](_0x0275('0x3c'),_0x5dc2bc,util[_0x0275('0x3a')](_0x26aae0,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x0275('0xd')][_0x0275('0x22')]=function(){logger[_0x0275('0x37')](_0x0275('0x3d'));clearChannels(this[_0x0275('0x11')]);this[_0x0275('0x3e')](this[_0x0275('0xf')]);clearAgentBooked(this['agents']);clearVoiceQueues(this[_0x0275('0x13')]);clearCampaigns(this[_0x0275('0x15')]);};VoiceQueueReport[_0x0275('0xd')][_0x0275('0x3e')]=function(_0x122a1a){var _0x5a6381=this;if(!_[_0x0275('0x29')](_0x122a1a)){for(var _0x28631b in _0x122a1a){if(_0x122a1a[_0x0275('0x2a')](_0x28631b)){_0x5a6381[_0x0275('0x3f')](_0x122a1a[_0x28631b],_0x0275('0x40'));delete _0x122a1a[_0x28631b];}}}};VoiceQueueReport[_0x0275('0xd')][_0x0275('0x41')]=function(_0x22991c,_0x5b5606,_0x3c81fc){io['to'](_0x22991c)[_0x0275('0x41')](_0x5b5606,_0x3c81fc);};VoiceQueueReport['prototype'][_0x0275('0x42')]=function(_0x76b8fa,_0x19cded){logger[_0x0275('0x43')](_0x0275('0x44')+_0x19cded+_0x0275('0x45'),_0x76b8fa[_0x0275('0x46')],util['inspect'](_0x76b8fa,{'showHidden':![],'depth':null}));this[_0x0275('0x41')](util[_0x0275('0x47')](_0x0275('0x48'),_0x76b8fa[_0x0275('0x49')]),'voice_queue_channel:save',_0x76b8fa);io[_0x0275('0x41')](_0x0275('0x4a'),_0x76b8fa);};VoiceQueueReport[_0x0275('0xd')][_0x0275('0x3f')]=function(_0x4ad75f,_0xcbfe0a){logger['debug'](_0x0275('0x44')+_0xcbfe0a+_0x0275('0x4b'),_0x4ad75f[_0x0275('0x46')],util[_0x0275('0x3a')](_0x4ad75f,{'showHidden':![],'depth':null}));this['emit'](util[_0x0275('0x47')](_0x0275('0x48'),_0x4ad75f['name']),_0x0275('0x4c'),_0x4ad75f);io[_0x0275('0x41')](_0x0275('0x4d'),_0x4ad75f);};VoiceQueueReport['prototype'][_0x0275('0x4e')]=function(_0x12b637,_0x55e1e8){if(_0x12b637[_0x0275('0x4f')]===_0x0275('0x50')){var _0x27aace={'id':_0x12b637['id'],'name':_0x12b637[_0x0275('0x49')],'strategy':_0x12b637[_0x0275('0x51')],'answered':_0x12b637[_0x0275('0x52')],'available':_0x12b637[_0x0275('0x53')],'loggedIn':_0x12b637[_0x0275('0x54')],'pTalking':_0x12b637[_0x0275('0x2d')],'sumBillable':_0x12b637[_0x0275('0x55')],'sumDuration':_0x12b637[_0x0275('0x56')],'sumHoldTime':_0x12b637['sumHoldTime']||0x0,'talking':_0x12b637[_0x0275('0x2c')],'total':_0x12b637[_0x0275('0x57')],'type':_0x12b637[_0x0275('0x4f')],'unmanaged':_0x12b637[_0x0275('0x58')],'abandoned':_0x12b637[_0x0275('0x59')],'waiting':_0x12b637[_0x0275('0x2e')]};if(_0x12b637[_0x0275('0x5a')]){_0x27aace[_0x0275('0x5a')]={'id':_0x12b637[_0x0275('0x5a')]['id'],'name':_0x12b637[_0x0275('0x5a')][_0x0275('0x49')],'active':_0x12b637['Trunk']['active'],'callerid':_0x12b637[_0x0275('0x5a')][_0x0275('0x5b')]};}if(_0x12b637[_0x0275('0x5c')]){_0x27aace[_0x0275('0x5c')]={'id':_0x12b637[_0x0275('0x5c')]['id'],'name':_0x12b637['Interval'][_0x0275('0x49')]};}var _0x55fdff=md5(JSON[_0x0275('0x5d')](_0x27aace));if(_0x12b637[_0x0275('0x2')]!==_0x55fdff){_0x12b637[_0x0275('0x2')]=_0x55fdff;logger[_0x0275('0x43')]('[voiceQueueReport]['+_0x55e1e8+_0x0275('0x5e'),util['inspect'](_0x27aace,{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x0275('0x48'),_0x27aace['name']),_0x0275('0x5f'),_0x27aace);}}};VoiceQueueReport[_0x0275('0xd')][_0x0275('0x60')]=function(_0x36971e){return _0x36971e!==null&&!_[_0x0275('0x61')](_0x36971e);};VoiceQueueReport[_0x0275('0xd')][_0x0275('0x62')]=function(){var _0x591bfd=this;setInterval(function(){_0x591bfd[_0x0275('0x30')]();ami['Action']({'action':_0x0275('0x63')})[_0x0275('0x64')](function(_0x119301){logger[_0x0275('0x37')](_0x0275('0x65'),util[_0x0275('0x3a')](_0x119301,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x0275('0xd')][_0x0275('0x28')]=function(){var _0x41429d=this;setInterval(function(){if(_0x41429d[_0x0275('0x14')]){return ami['Action']({'action':'queuesummary'})[_0x0275('0x66')](function(_0x4fe422){_0x41429d['flagQueueSummary']=![];})[_0x0275('0x64')](function(_0x23e37f){logger[_0x0275('0x37')](_0x0275('0x67'),util[_0x0275('0x3a')](_0x23e37f,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x0275('0xd')]['syncQueueSummary']=function(_0x104232){try{if(this[_0x0275('0x60')](_0x104232)&&this[_0x0275('0x60')](_0x104232[_0x0275('0x68')])){logger[_0x0275('0x43')](_0x0275('0x69'),util['inspect'](_0x104232,{'showHidden':![],'depth':null}));if(this[_0x0275('0x13')][_0x104232[_0x0275('0x68')]]){logger['info'](_0x0275('0x6a'),_0x104232['queue']);var _0x4f4e13=_[_0x0275('0x6b')](this[_0x0275('0x11')],_0x0275('0x68'))[_0x104232[_0x0275('0x68')]]||0x0;var _0x7749c4=_0x4f4e13-_0x104232[_0x0275('0x6c')];if(this[_0x0275('0x13')][_0x104232[_0x0275('0x68')]][_0x0275('0x2e')]!==_[_0x0275('0x6d')](_0x104232['callers'])||this[_0x0275('0x13')][_0x104232[_0x0275('0x68')]][_0x0275('0x54')]!==_['toNumber'](_0x104232[_0x0275('0x6e')])||this[_0x0275('0x13')][_0x104232['queue']][_0x0275('0x53')]!==_['toNumber'](_0x104232[_0x0275('0x53')])||this[_0x0275('0x13')][_0x104232[_0x0275('0x68')]][_0x0275('0x2c')]!==_0x7749c4){this['voiceQueues'][_0x104232[_0x0275('0x68')]][_0x0275('0x2e')]=_[_0x0275('0x6d')](_0x104232[_0x0275('0x6c')]);this['voiceQueues'][_0x104232[_0x0275('0x68')]][_0x0275('0x54')]=_['toNumber'](_0x104232[_0x0275('0x6e')]);this[_0x0275('0x13')][_0x104232['queue']]['available']=_[_0x0275('0x6d')](_0x104232[_0x0275('0x53')]);this['voiceQueues'][_0x104232['queue']][_0x0275('0x2c')]=_0x7749c4>0x0?_0x7749c4:0x0;this[_0x0275('0x13')][_0x104232[_0x0275('0x68')]][_0x0275('0x2c')]=this[_0x0275('0x13')][_0x104232[_0x0275('0x68')]][_0x0275('0x2c')]>_[_0x0275('0x6d')](_0x104232['loggedin'])?_[_0x0275('0x6d')](_0x104232[_0x0275('0x6e')]):this[_0x0275('0x13')][_0x104232[_0x0275('0x68')]][_0x0275('0x2c')];this[_0x0275('0x4e')](this['voiceQueues'][_0x104232[_0x0275('0x68')]],'queuesummary');}logger[_0x0275('0x43')](_0x0275('0x6f'),util[_0x0275('0x3a')](this[_0x0275('0x13')][_0x104232['queue']],{'showHidden':![],'depth':null}));ami[_0x0275('0x41')](_0x0275('0x70'),this[_0x0275('0x13')][_0x104232[_0x0275('0x68')]]);}}}catch(_0x324001){logger[_0x0275('0x37')](_0x0275('0x67'),util[_0x0275('0x3a')](_0x324001,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0275('0xd')]['syncQueueSummaryComplete']=function(_0x5bc165){logger['debug'](_0x0275('0x71'),util[_0x0275('0x3a')](_0x5bc165,{'showHidden':![],'depth':null}));this[_0x0275('0x14')]=!![];};VoiceQueueReport['prototype'][_0x0275('0x1b')]=function(_0x31a2d9){try{if(this[_0x0275('0x60')](_0x31a2d9)){logger[_0x0275('0x43')](_0x0275('0x72'),_0x31a2d9['uniqueid'],util[_0x0275('0x3a')](_0x31a2d9,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0x0275('0xf')][_0x31a2d9[_0x0275('0x46')]]))this[_0x0275('0xf')][_0x31a2d9[_0x0275('0x46')]]=[];if(_['isUndefined'](this[_0x0275('0x11')][_0x31a2d9[_0x0275('0x46')]]))this[_0x0275('0x11')][_0x31a2d9['uniqueid']]={};var _0x3528b9=new QueueReport();_0x3528b9[_0x0275('0x49')]=_0x31a2d9[_0x0275('0x68')];_0x3528b9[_0x0275('0x4f')]=this[_0x0275('0x13')][_0x3528b9[_0x0275('0x49')]]&&this[_0x0275('0x13')][_0x3528b9[_0x0275('0x49')]]['type']?this['voiceQueues'][_0x3528b9['name']][_0x0275('0x4f')]||_0x0275('0x50'):_0x0275('0x50');_0x3528b9[_0x0275('0x68')]=_0x31a2d9[_0x0275('0x68')];_0x3528b9['queuecallerjoinAt']=moment()[_0x0275('0x47')]('YYYY-MM-DD\x20HH:mm:ss');_0x3528b9['position']=_0x31a2d9[_0x0275('0x73')];_0x3528b9['count']=_0x31a2d9[_0x0275('0x74')];_0x3528b9[_0x0275('0x46')]=_0x31a2d9[_0x0275('0x46')];_0x3528b9[_0x0275('0x75')]=this[_0x0275('0x11')][_0x31a2d9[_0x0275('0x46')]][_0x0275('0x75')];logger[_0x0275('0x76')](_0x0275('0x77'),_0x3528b9[_0x0275('0x49')],_0x3528b9[_0x0275('0x4f')]);_[_0x0275('0x78')](_0x3528b9,_[_0x0275('0x79')](_0x31a2d9,_[_0x0275('0x7a')](_0x3528b9)));this[_0x0275('0xf')][_0x31a2d9[_0x0275('0x46')]][_0x0275('0x7b')](_0x3528b9);this[_0x0275('0x11')][_0x31a2d9[_0x0275('0x46')]]=_0x3528b9;this[_0x0275('0x42')](_0x3528b9,_0x0275('0x7c'));}}catch(_0x59fe10){logger[_0x0275('0x37')](_0x0275('0x72'),_0x31a2d9[_0x0275('0x46')],util[_0x0275('0x3a')](_0x59fe10,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0275('0xd')][_0x0275('0x1c')]=function(_0x5c1c96){try{if(this[_0x0275('0x60')](_0x5c1c96)){logger[_0x0275('0x43')]('[%s][voiceQueueReport][queuecallerabandon]',_0x5c1c96[_0x0275('0x46')],util[_0x0275('0x3a')](_0x5c1c96,{'showHidden':![],'depth':null}));if(this[_0x0275('0xf')][_0x5c1c96[_0x0275('0x46')]]){var _0x5f360c=_[_0x0275('0x7d')](this[_0x0275('0xf')][_0x5c1c96['uniqueid']]);_0x5f360c[_0x0275('0x7e')]=![];_0x5f360c['queuecallercompleteAt']=null;_0x5f360c[_0x0275('0x7f')]=_0x5c1c96[_0x0275('0x7f')];_0x5f360c['originalposition']=_0x5c1c96[_0x0275('0x80')];_0x5f360c[_0x0275('0x81')]=!![];_0x5f360c[_0x0275('0x82')]=moment()[_0x0275('0x47')](_0x0275('0x83'));_0x5f360c[_0x0275('0x84')]=_0x0275('0x85');_0x5f360c['lastAssignedTo']=null;logger[_0x0275('0x76')](_0x0275('0x86'),_0x5f360c['name'],_0x5f360c[_0x0275('0x4f')]);this['channels'][_0x5c1c96['uniqueid']]=_0x5f360c;this[_0x0275('0x3f')](_0x5f360c,'queuecallerabandon');}}}catch(_0x4504bd){logger[_0x0275('0x37')]('[%s][voiceQueueReport][queuecallerabandon]',_0x5c1c96[_0x0275('0x46')],util[_0x0275('0x3a')](_0x4504bd,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0275('0xd')]['syncQueueCallerLeave']=function(_0x11099f){try{if(this['isNotNull'](_0x11099f)){logger[_0x0275('0x43')](_0x0275('0x87'),_0x11099f[_0x0275('0x46')],util['inspect'](_0x11099f,{'showHidden':![],'depth':null}));if(this[_0x0275('0xf')][_0x11099f[_0x0275('0x46')]]){var _0x3c6ee9=_[_0x0275('0x7d')](this[_0x0275('0xf')][_0x11099f[_0x0275('0x46')]]);_0x3c6ee9['queuecallerleaveAt']=moment()[_0x0275('0x47')](_0x0275('0x83'));_0x3c6ee9[_0x0275('0x88')]=_0x11099f['connectedlinenum'];_0x3c6ee9[_0x0275('0x89')]=_0x11099f[_0x0275('0x89')];logger[_0x0275('0x76')]('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x3c6ee9[_0x0275('0x49')],_0x3c6ee9[_0x0275('0x4f')],_0x11099f[_0x0275('0x88')],_0x11099f['connectedlinename']);this[_0x0275('0x11')][_0x11099f[_0x0275('0x46')]]=_0x3c6ee9;this[_0x0275('0x42')](_0x3c6ee9,_0x0275('0x8a'));}}}catch(_0x46de67){logger[_0x0275('0x37')](_0x0275('0x87'),_0x11099f['uniqueid'],util['inspect'](_0x46de67,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0275('0xd')][_0x0275('0x8b')]=function(_0x30d7ee){try{if(this[_0x0275('0x60')](_0x30d7ee)){logger[_0x0275('0x43')](_0x0275('0x8c'),_0x30d7ee[_0x0275('0x46')],util['inspect'](_0x30d7ee,{'showHidden':![],'depth':null}));if(this[_0x0275('0xf')][_0x30d7ee[_0x0275('0x46')]]){var _0x5498d2=_[_0x0275('0x7d')](this['queueReports'][_0x30d7ee[_0x0275('0x46')]]);_0x5498d2[_0x0275('0x7e')]=!![];_0x5498d2[_0x0275('0x84')]=_0x0275('0x8d');logger[_0x0275('0x76')](_0x0275('0x8e'),_0x5498d2['name'],_0x5498d2[_0x0275('0x4f')]);}}}catch(_0x175348){logger[_0x0275('0x37')](_0x0275('0x8c'),_0x30d7ee[_0x0275('0x46')],util[_0x0275('0x3a')](_0x175348,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x0275('0x8f')]=function(_0x215c43){try{if(this[_0x0275('0x60')](_0x215c43)){logger[_0x0275('0x43')](_0x0275('0x90'),_0x215c43['uniqueid'],util[_0x0275('0x3a')](_0x215c43,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x215c43[_0x0275('0x46')]]){var _0x431683=_[_0x0275('0x7d')](this[_0x0275('0xf')][_0x215c43[_0x0275('0x46')]]);_0x431683[_0x0275('0x81')]=![];_0x431683[_0x0275('0x82')]=null;_0x431683[_0x0275('0x91')]=!![];_0x431683[_0x0275('0x92')]=_0x215c43[_0x0275('0x93')];_0x431683['holdtime']=_0x215c43[_0x0275('0x7f')];_0x431683[_0x0275('0x7e')]=!![];_0x431683['queuecallerexit']=![];_0x431683[_0x0275('0x94')]=null;if(!_0x431683[_0x0275('0x95')]){if(_0x215c43['reason']==_0x0275('0x95')){_0x431683['queuecallerexitreason']=_0x0275('0x96');logger[_0x0275('0x76')](_0x0275('0x97'),_0x431683[_0x0275('0x49')],_0x431683[_0x0275('0x4f')]);}else{if(_[_0x0275('0x98')](_0x215c43['channel'][_0x0275('0x99')](),_0x0275('0x9a'))){if(this[_0x0275('0xf')][_0x215c43['linkedid']]){var _0x112d4b=_[_0x0275('0x7d')](this[_0x0275('0xf')][_0x215c43[_0x0275('0x9b')]]);_0x112d4b['queuecallercomplete']=![];_0x112d4b[_0x0275('0x9c')]=!![];_0x112d4b[_0x0275('0x94')]=moment(_0x431683[_0x0275('0x9d')])[_0x0275('0x9e')](_0x215c43[_0x0275('0x7f')],'seconds')[_0x0275('0x47')](_0x0275('0x83'));_0x112d4b[_0x0275('0x84')]=_0x0275('0x9f');_0x112d4b[_0x0275('0x95')]=!![];_0x112d4b[_0x0275('0xa0')]=_0x0275('0xa1');_0x112d4b[_0x0275('0xa2')]=_0x215c43[_0x0275('0xa3')];_0x112d4b[_0x0275('0xa4')]=_0x215c43['uniqueid'];logger[_0x0275('0x76')](_0x0275('0xa5'),_0x112d4b[_0x0275('0x49')],_0x112d4b[_0x0275('0x4f')]);var _0x2a280c=this[_0x0275('0xf')][_0x215c43[_0x0275('0x9b')]];this[_0x0275('0xf')][_0x215c43[_0x0275('0x9b')]]=this[_0x0275('0xf')][_0x215c43[_0x0275('0x46')]];this[_0x0275('0xf')][_0x215c43[_0x0275('0x46')]]=_0x2a280c;}}else{_0x431683[_0x0275('0x84')]=_0x0275('0xa6')+_0x215c43[_0x0275('0xa7')][_0x0275('0xa8')]();logger[_0x0275('0x76')](_0x0275('0xa9'),_0x431683[_0x0275('0x49')],_0x431683[_0x0275('0x4f')],_0x431683[_0x0275('0x84')]);}}}this[_0x0275('0x11')][_0x215c43[_0x0275('0x46')]]=_0x431683;this[_0x0275('0x3f')](_0x431683,_0x0275('0xaa'));}}}catch(_0x527ca5){logger[_0x0275('0x37')]('[%s][voiceQueueReport][agentcomplete]',_0x215c43[_0x0275('0x46')],util[_0x0275('0x3a')](_0x527ca5,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncVarSet']=function(_0x70d1b7){try{if(this[_0x0275('0x60')](_0x70d1b7)){logger[_0x0275('0x43')](_0x0275('0xab'),_0x70d1b7[_0x0275('0x46')],util[_0x0275('0x3a')](_0x70d1b7,{'showHidden':![],'depth':null}));this[_0x0275('0xac')](_0x70d1b7[_0x0275('0x46')],_[_0x0275('0x7a')](_0x70d1b7[_0x0275('0xad')])[0x0],_0x70d1b7[_0x0275('0xae')]);if(this['queueReports'][_0x70d1b7[_0x0275('0x46')]]){var _0xedddf1=_['last'](this[_0x0275('0xf')][_0x70d1b7[_0x0275('0x46')]]);if(_0xedddf1){if(this['isNotNull'](_0x70d1b7['variable'])&&this[_0x0275('0x60')](_0x70d1b7[_0x0275('0xad')][_0x0275('0xaf')])){switch(_0x70d1b7[_0x0275('0xae')]){case _0x0275('0xb0'):_0xedddf1[_0x0275('0x9c')]=![];_0xedddf1[_0x0275('0x94')]=null;break;case _0x0275('0xb1'):_0xedddf1['lastevent']=_0x0275('0xb2');_0xedddf1[_0x0275('0x9c')]=!![];_0xedddf1[_0x0275('0x94')]=moment()['format'](_0x0275('0x83'));_0xedddf1[_0x0275('0xb3')]=moment()[_0x0275('0x47')](_0x0275('0x83'));logger[_0x0275('0x43')](_0x0275('0xb4'),_0x70d1b7[_0x0275('0x46')],util[_0x0275('0x3a')](_0xedddf1,{'showHidden':![],'depth':null}));ami['emit']('custom:timeout',_0xedddf1);break;default:_0xedddf1[_0x0275('0x9c')]=!![];_0xedddf1['queuecallerexitAt']=moment()[_0x0275('0x47')]('YYYY-MM-DD\x20HH:mm:ss');_0xedddf1['queuecallerleaveAt']=moment()[_0x0275('0x47')](_0x0275('0x83'));}_0xedddf1[_0x0275('0x81')]=![];_0xedddf1[_0x0275('0x82')]=null;_0xedddf1[_0x0275('0x84')]=_0x70d1b7[_0x0275('0xae')];this['channels'][_0x70d1b7[_0x0275('0x46')]]=_0xedddf1;this['emitVoiceQueueChannelRemove'](_0xedddf1,_0x0275('0x1e'));}else if(this['isNotNull'](_0x70d1b7['variable'])&&this[_0x0275('0x60')](_0x70d1b7[_0x0275('0xad')][_0x0275('0xb5')])){if(!_0xedddf1['queuecallerabandon']){_0xedddf1[_0x0275('0x9c')]=!![];_0xedddf1[_0x0275('0x94')]=moment()[_0x0275('0x47')]('YYYY-MM-DD\x20HH:mm:ss');_0xedddf1['queuecallerexitreason']='EXITWITHKEY';_0xedddf1['queuecallerleaveAt']=moment()[_0x0275('0x47')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x0275('0x11')][_0x70d1b7['uniqueid']]=_0xedddf1;}}logger[_0x0275('0x76')]('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x70d1b7[_0x0275('0x46')],_0xedddf1[_0x0275('0x49')],_0xedddf1['type'],_['keys'](_0x70d1b7[_0x0275('0xad')])[0x0],_0x70d1b7[_0x0275('0xae')]);_0xedddf1[_0x0275('0x3b')]=this[_0x0275('0x3b')][_0x70d1b7[_0x0275('0x46')]];}}}}catch(_0x47cad2){logger[_0x0275('0x37')](_0x0275('0xab'),_0x70d1b7[_0x0275('0x46')],util['inspect'](_0x47cad2,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0275('0xd')][_0x0275('0xac')]=function(_0x50ff36,_0x1d8c42,_0x8c27b1){var _0x2eebf2=[_0x0275('0xb6'),_0x0275('0xb7'),_0x0275('0xb8'),_0x0275('0xb9'),_0x0275('0xba'),_0x0275('0xbb'),_0x0275('0xbc'),_0x0275('0xbd'),_0x0275('0xbe'),_0x0275('0xbf'),_0x0275('0xc0'),_0x0275('0xc1'),_0x0275('0xc2'),'memberdynamic','memberinterface',_0x0275('0xc3'),_0x0275('0x93'),_0x0275('0xc4'),_0x0275('0xc5')];if(!_['isNil'](_0x1d8c42)&&!_[_0x0275('0xc6')](_0x2eebf2,_0x1d8c42)){if(_[_0x0275('0x61')](this[_0x0275('0x3b')][_0x50ff36])){this[_0x0275('0x3b')][_0x50ff36]={};}this[_0x0275('0x3b')][_0x50ff36][_0x1d8c42]=_0x8c27b1;}};VoiceQueueReport[_0x0275('0xd')][_0x0275('0x21')]=function(_0x1d091e){try{if(this[_0x0275('0x60')](_0x1d091e)){logger[_0x0275('0x43')](_0x0275('0xc7'),_0x1d091e['uniqueid'],util[_0x0275('0x3a')](_0x1d091e,{'showHidden':![],'depth':null}));if(this[_0x0275('0xf')][_0x1d091e[_0x0275('0x46')]]){for(var _0x1e986f=0x0,_0x820de0={};_0x1e986f<this[_0x0275('0xf')][_0x1d091e[_0x0275('0x46')]][_0x0275('0xc8')];_0x1e986f+=0x1){_0x820de0=this['queueReports'][_0x1d091e['uniqueid']][_0x1e986f];if(this[_0x0275('0x13')][_0x820de0[_0x0275('0x68')]]){if(_0x820de0[_0x0275('0x9c')]&&_0x820de0['transfer']!=!![]){this['voiceQueues'][_0x820de0[_0x0275('0x68')]][_0x0275('0x58')]+=0x1;}if(_0x820de0[_0x0275('0x81')]){this[_0x0275('0x13')][_0x820de0[_0x0275('0x68')]][_0x0275('0x59')]+=0x1;}this[_0x0275('0x13')][_0x820de0[_0x0275('0x68')]][_0x0275('0xc9')]+=moment(_0x820de0[_0x0275('0xb3')])['diff'](_0x820de0['queuecallerjoinAt'],_0x0275('0xca'))||0x0;if(_0x1e986f===this[_0x0275('0xf')][_0x1d091e['uniqueid']][_0x0275('0xc8')]-0x1){this['voiceQueues'][_0x820de0[_0x0275('0x68')]]['sumDuration']+=moment()[_0x0275('0xcb')](0x0)[_0x0275('0xcc')](_0x820de0['queuecallerjoinAt'],_0x0275('0xca'));this[_0x0275('0x13')][_0x820de0[_0x0275('0x68')]][_0x0275('0x57')]+=0x1;if(_0x820de0['queuecallercomplete']){this[_0x0275('0x13')][_0x820de0[_0x0275('0x68')]]['answered']+=0x1;this['voiceQueues'][_0x820de0[_0x0275('0x68')]][_0x0275('0x55')]+=moment()[_0x0275('0xcb')](0x0)[_0x0275('0xcc')](_0x820de0[_0x0275('0xb3')],_0x0275('0xca'));_0x820de0[_0x0275('0xcd')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x820de0['queuecallerexit']=![];_0x820de0[_0x0275('0x94')]=null;}if(_0x820de0[_0x0275('0x9c')]&&_0x820de0[_0x0275('0x95')]!=!![]){_0x820de0[_0x0275('0xce')]=_0x0275('0x58');logger[_0x0275('0x43')](_0x0275('0xcf'),_0x1d091e[_0x0275('0x46')],util[_0x0275('0x3a')](_0x820de0,{'showHidden':![],'depth':null}));ami[_0x0275('0x41')]('custom:queuecallerunmanaged',_0x820de0);}if(_0x820de0[_0x0275('0x81')]){_0x820de0[_0x0275('0xce')]=_0x0275('0x59');logger[_0x0275('0x43')](_0x0275('0xd0'),_0x1d091e[_0x0275('0x46')],util['inspect'](_0x820de0,{'showHidden':![],'depth':null}));ami['emit'](_0x0275('0xd1'),_0x820de0);}}else{this[_0x0275('0x13')][_0x820de0[_0x0275('0x68')]][_0x0275('0x56')]+=this['voiceQueues'][_0x820de0[_0x0275('0x68')]]['sumHoldTime'];}logger[_0x0275('0x76')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x1d091e[_0x0275('0x46')],_0x820de0[_0x0275('0x49')],_0x820de0[_0x0275('0x4f')],_0x1d091e[_0x0275('0xd2')]);this[_0x0275('0x11')][_0x1d091e[_0x0275('0x46')]]=_0x820de0;this[_0x0275('0x3f')](_0x820de0,_0x0275('0x20'));this[_0x0275('0x4e')](this['voiceQueues'][_0x820de0[_0x0275('0x68')]],'hangup');}}logger[_0x0275('0x43')]('[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:',_0x1d091e[_0x0275('0x46')],util['inspect'](this[_0x0275('0xf')][_0x1d091e['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x0275('0x41')](_0x0275('0xd3'),this['queueReports'][_0x1d091e[_0x0275('0x46')]]);delete this['queueReports'][_0x1d091e[_0x0275('0x46')]];delete this['channels'][_0x1d091e[_0x0275('0x46')]];}if(this[_0x0275('0x3b')][_0x1d091e['uniqueid']]){delete this[_0x0275('0x3b')][_0x1d091e[_0x0275('0x46')]];}}}catch(_0x28e0cb){logger[_0x0275('0x37')](_0x0275('0xc7'),_0x1d091e[_0x0275('0x46')],util[_0x0275('0x3a')](_0x28e0cb,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0275('0xd')][_0x0275('0x26')]=function(_0xa95c3){try{if(this['isNotNull'](_0xa95c3)){logger[_0x0275('0x43')]('[%s][voiceQueueReport][attendedtransfer]',_0xa95c3[_0x0275('0x46')],util[_0x0275('0x3a')](_0xa95c3,{'showHidden':![],'depth':null}));var _0x2d9c77;if(this[_0x0275('0xf')][_0xa95c3[_0x0275('0xd4')]]){_0x2d9c77=_['last'](this[_0x0275('0xf')][_0xa95c3['transfereeuniqueid']]);_0x2d9c77[_0x0275('0xa2')]=_0xa95c3['secondtransfererexten'];_0x2d9c77[_0x0275('0xa4')]=_0xa95c3['secondtransfereruniqueid'];_0x2d9c77['queuecallerexitreason']=_0x0275('0xd5');_0x2d9c77[_0x0275('0x95')]=!![];_0x2d9c77[_0x0275('0xa0')]=_0x0275('0xd6');if(this[_0x0275('0xf')][_0xa95c3[_0x0275('0xd7')]]){var _0x299186=this[_0x0275('0xf')][_0xa95c3[_0x0275('0xd7')]];this[_0x0275('0xf')][_0xa95c3['secondtransfereruniqueid']]=this[_0x0275('0xf')][_0xa95c3[_0x0275('0xd4')]];this[_0x0275('0xf')][_0xa95c3[_0x0275('0xd4')]]=_0x299186;var _0x452da9=_['last'](this[_0x0275('0xf')][_0xa95c3['transfereeuniqueid']]);_0x452da9[_0x0275('0xd8')]=!![];}logger[_0x0275('0x76')](_0x0275('0xd9'),_0xa95c3[_0x0275('0x46')],_0x2d9c77[_0x0275('0x49')],_0x2d9c77[_0x0275('0x4f')],_0x2d9c77['transferexten'],_0x2d9c77[_0x0275('0xa4')]);}else if(this['queueReports'][_0xa95c3[_0x0275('0xda')]]){_0x2d9c77=_['last'](this[_0x0275('0xf')][_0xa95c3[_0x0275('0xda')]]);_0x2d9c77[_0x0275('0xa2')]=_0xa95c3[_0x0275('0xdb')];_0x2d9c77['transferuniqueid']=_0xa95c3[_0x0275('0xdc')];_0x2d9c77[_0x0275('0x84')]=_0x0275('0xd5');_0x2d9c77[_0x0275('0x95')]=!![];_0x2d9c77[_0x0275('0xa0')]='ATTENDED';if(this['queueReports'][_0xa95c3[_0x0275('0xdc')]]){var _0x299186=this[_0x0275('0xf')][_0xa95c3['origtransfereruniqueid']];this[_0x0275('0xf')][_0xa95c3[_0x0275('0xdc')]]=this[_0x0275('0xf')][_0xa95c3['transfertargetuniqueid']];this[_0x0275('0xf')][_0xa95c3[_0x0275('0xda')]]=_0x299186;var _0x452da9=_[_0x0275('0x7d')](this[_0x0275('0xf')][_0xa95c3[_0x0275('0xda')]]);_0x452da9[_0x0275('0xd8')]=!![];}logger[_0x0275('0x76')](_0x0275('0xd9'),_0xa95c3[_0x0275('0x46')],_0x2d9c77['name'],_0x2d9c77[_0x0275('0x4f')],_0x2d9c77['transferexten'],_0x2d9c77[_0x0275('0xa4')]);}}}catch(_0x122f07){logger[_0x0275('0x37')]('[%s][voiceQueueReport][attendedtransfer]',_0xa95c3[_0x0275('0x46')],util[_0x0275('0x3a')](_0x122f07,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0275('0xd')]['syncBlindTransfer']=function(_0xfb6fa){try{if(this['isNotNull'](_0xfb6fa)){logger[_0x0275('0x43')](_0x0275('0xdd'),_0xfb6fa[_0x0275('0x46')],util[_0x0275('0x3a')](_0xfb6fa,{'showHidden':![],'depth':null}));if(this[_0x0275('0xf')][_0xfb6fa[_0x0275('0xd4')]]){var _0x2cbf07=_['last'](this[_0x0275('0xf')][_0xfb6fa[_0x0275('0xd4')]]);_0x2cbf07['queuecallerexitreason']='BLINDTRANSFER';_0x2cbf07[_0x0275('0x95')]=!![];_0x2cbf07['transfertype']='BLIND';_0x2cbf07[_0x0275('0xa2')]=_0xfb6fa[_0x0275('0xde')];_0x2cbf07[_0x0275('0xa4')]=_0xfb6fa[_0x0275('0xd4')];logger[_0x0275('0x76')](_0x0275('0xdf'),_0xfb6fa[_0x0275('0x46')],_0x2cbf07[_0x0275('0x49')],_0x2cbf07[_0x0275('0x4f')],_0x2cbf07[_0x0275('0xa2')],_0x2cbf07[_0x0275('0xa4')]);this[_0x0275('0x21')]({'event':_0x0275('0xe0'),'uniqueid':_0xfb6fa[_0x0275('0xd4')],'context':_0xfb6fa[_0x0275('0xe1')],'channel':_0xfb6fa['transfererchannel']});}}}catch(_0x1231b0){logger[_0x0275('0x37')](_0x0275('0xdd'),_0xfb6fa[_0x0275('0x46')],util[_0x0275('0x3a')](_0x1231b0,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStart']=function(_0x87955){try{if(this[_0x0275('0x60')](_0x87955)){logger[_0x0275('0x43')]('[%s][voiceQueueReport][musiconholdstart]',_0x87955[_0x0275('0x46')],util['inspect'](_0x87955,{'showHidden':![],'depth':null}));if(this[_0x0275('0xf')][_0x87955[_0x0275('0x46')]]){var _0x3ef28d=_['last'](this[_0x0275('0xf')][_0x87955[_0x0275('0x46')]]);if(!_['isNil'](_0x3ef28d['queuecallerleaveAt'])){_0x3ef28d[_0x0275('0xe2')]=moment()[_0x0275('0x47')](_0x0275('0x83'));logger['info'](_0x0275('0xe3'),_0x87955['uniqueid'],_0x3ef28d['mohstarttime']);}}}}catch(_0x39ddbf){logger[_0x0275('0x37')](_0x0275('0xe4'),_0x87955[_0x0275('0x46')],util[_0x0275('0x3a')](_0x39ddbf,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0275('0xd')][_0x0275('0xe5')]=function(_0x31d4e0){try{if(this['isNotNull'](_0x31d4e0)){logger[_0x0275('0x43')](_0x0275('0xe6'),_0x31d4e0[_0x0275('0x46')],util[_0x0275('0x3a')](_0x31d4e0,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x31d4e0['uniqueid']]){var _0x46cf76=_[_0x0275('0x7d')](this['queueReports'][_0x31d4e0[_0x0275('0x46')]]);if(!_[_0x0275('0x33')](_0x46cf76[_0x0275('0xe2')])){_0x46cf76[_0x0275('0xe7')]+=moment()[_0x0275('0xcb')](0x0)[_0x0275('0xcc')](_0x46cf76[_0x0275('0xe2')],_0x0275('0xca'));logger[_0x0275('0x76')](_0x0275('0xe8'),_0x31d4e0[_0x0275('0x46')],_0x46cf76[_0x0275('0xe7')]);delete _0x46cf76[_0x0275('0xe2')];}}}}catch(_0x1822a4){logger[_0x0275('0x37')](_0x0275('0xe6'),_0x31d4e0['uniqueid'],util['inspect'](_0x1822a4,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0275('0xd')][_0x0275('0xe9')]=function(_0x4dfae3){try{if(this[_0x0275('0x60')](_0x4dfae3)){logger[_0x0275('0x43')](_0x0275('0xea'),_0x4dfae3[_0x0275('0x46')],util[_0x0275('0x3a')](_0x4dfae3,{'showHidden':![],'depth':null}));if(_0x4dfae3[_0x0275('0xeb')]['toLowerCase']()===_0x0275('0xec')){_0x4dfae3[_0x0275('0xed')]=_0x4dfae3['appdata']&&_0x4dfae3['appdata'][_0x0275('0x98')](_0x0275('0xee'))?_0x4dfae3['appdata']:(_0x4dfae3['appdata']||_0x4dfae3[_0x0275('0xed')])['toLowerCase']();if(_[_0x0275('0x98')](_0x4dfae3[_0x0275('0xed')][_0x0275('0x99')](),_0x0275('0xef'))){logger['info'](_0x0275('0xf0'),_0x4dfae3[_0x0275('0x46')],_0x4dfae3[_0x0275('0xeb')],_0x4dfae3['applicationdata']);if(_[_0x0275('0x61')](this['channels'][_0x4dfae3[_0x0275('0x46')]]))this[_0x0275('0x11')][_0x4dfae3[_0x0275('0x46')]]={};var _0x50cff7=_0x4dfae3[_0x0275('0xed')][_0x0275('0xf1')]('=');var _0x211ea2=_0x50cff7[0x0][_0x0275('0x99')]()[_0x0275('0xf2')](/cdr\((.*)\)/);if(_0x211ea2)this[_0x0275('0x11')][_0x4dfae3[_0x0275('0x46')]][_0x211ea2[0x1]]=_0x50cff7[0x1];}}}}catch(_0x1eedec){logger[_0x0275('0x37')](_0x0275('0xf3'),_0x4dfae3[_0x0275('0x46')],util['inspect'](_0x1eedec,{'showHidden':![],'depth':null}));}};module[_0x0275('0xf4')]=VoiceQueueReport;
\ No newline at end of file
+var _0x6d0b=['syncQueueCallerAbandon','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','ABANDONED','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','syncAgentComplete','[%s][voiceQueueReport][agentcomplete]','assigned','lastAssignedTo','membername','queuecallercomplete','queuecallerexit','queuecallerexitAt','transfer','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','local/','linkedid','add','seconds','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','reason','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][varset]','variable','queuestatus','value','CONTINUE','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','varset','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','memberdynamic','memberpenalty','memberrealtime','length','abandoned','milliseconds','diff','sumBillable','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','[%s][voiceQueueReport][hangup]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','ATTENDEDTRANSFER','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','[%s][voiceQueueReport][attendedtransfer]','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','syncMusicOnHoldStart','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohstarttime','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','CDR(routeAlias)','appdata','cdr(','match','exports','lodash','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','redis','localhost','socket.io-emitter','prototype','enqueue','tail','finally','queueReports','agents','channels','flagQueueSummary','syncQueueSummary','bind','queuesummarycomplete','syncQueueSummaryComplete','queuecallerabandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','agentconnect','syncAgentConnect','syncVarSet','hangup','syncHangup','fullybooted','syncFullyBooted','musiconholdstart','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','loopQueueShow','isEmpty','hasOwnProperty','originated','pTalking','waiting','unlockRR','clearZombieChannels','switch','isNil','channel','catch','message','inspect','error','[%s][voiceQueueReport][checkQueueReport]','variables','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','voiceQueues','campaigns','clearQueueReport','clearqueuereport','emit','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','emitVoiceQueueChannelRemove',']\x20sending\x20voice_queue_channel:remove\x20event:','voice_queue_channel:remove','emitVoiceQueueSummary','type','answered','available','loggedIn','sumDuration','sumHoldTime','total','unmanaged','Trunk','active','callerid','Interval','md5','debug',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','Action','queues','[voiceQueueReport][queues]','loopQueueSummary','queuesummary','then','[voiceQueueReport][queuesummary]','queue','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummary]\x20name:%s','callers','toNumber','loggedin','talking','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','syncQueueCallerJoin','inbound','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','push','emitVoiceQueueChannelSave','queuecallerjoin','[%s][voiceQueueReport][queuecallerjoin]'];(function(_0x54d52,_0x2473ba){var _0x968345=function(_0x3fcd06){while(--_0x3fcd06){_0x54d52['push'](_0x54d52['shift']());}};_0x968345(++_0x2473ba);}(_0x6d0b,0x71));var _0xb6d0=function(_0x562403,_0x42969d){_0x562403=_0x562403-0x0;var _0x7e5246=_0x6d0b[_0x562403];return _0x7e5246;};'use strict';var _=require(_0xb6d0('0x0'));var moment=require('moment');var util=require(_0xb6d0('0x1'));var md5=require('md5');var Redis=require(_0xb6d0('0x2'));var config=require(_0xb6d0('0x3'));var logger=require(_0xb6d0('0x4'))(_0xb6d0('0x5'));var ami=require(_0xb6d0('0x6'));var QueueReport=require(_0xb6d0('0x7'));config[_0xb6d0('0x8')]=_['defaults'](config[_0xb6d0('0x8')],{'host':_0xb6d0('0x9'),'port':0x18eb});var io=require(_0xb6d0('0xa'))(new Redis(config[_0xb6d0('0x8')]));var Sequence=function(){};Sequence[_0xb6d0('0xb')][_0xb6d0('0xc')]=function(_0x42605b){this[_0xb6d0('0xd')]=this[_0xb6d0('0xd')]?this[_0xb6d0('0xd')][_0xb6d0('0xe')](_0x42605b):_0x42605b();};function VoiceQueueReport(_0x3dff2f){this['sequence']=new Sequence();this[_0xb6d0('0xf')]={};this['agents']=_0x3dff2f[_0xb6d0('0x10')];this[_0xb6d0('0x11')]=_0x3dff2f['queueChannels'];this['voiceQueues']=_0x3dff2f['voiceQueues'];this[_0xb6d0('0x12')]=!![];this['campaigns']=_0x3dff2f['campaigns'];this['variables']={};ami['on']('queuesummary',this[_0xb6d0('0x13')][_0xb6d0('0x14')](this));ami['on'](_0xb6d0('0x15'),this[_0xb6d0('0x16')][_0xb6d0('0x14')](this));ami['on']('queuecallerjoin',this['syncQueueCallerJoin'][_0xb6d0('0x14')](this));ami['on'](_0xb6d0('0x17'),this['syncQueueCallerAbandon'][_0xb6d0('0x14')](this));ami['on'](_0xb6d0('0x18'),this[_0xb6d0('0x19')][_0xb6d0('0x14')](this));ami['on'](_0xb6d0('0x1a'),this['syncAgentComplete']['bind'](this));ami['on'](_0xb6d0('0x1b'),this[_0xb6d0('0x1c')][_0xb6d0('0x14')](this));ami['on']('varset',this[_0xb6d0('0x1d')][_0xb6d0('0x14')](this));ami['on'](_0xb6d0('0x1e'),this[_0xb6d0('0x1f')][_0xb6d0('0x14')](this));ami['on'](_0xb6d0('0x20'),this[_0xb6d0('0x21')][_0xb6d0('0x14')](this));ami['on']('newexten',this['syncNewExten'][_0xb6d0('0x14')](this));ami['on'](_0xb6d0('0x22'),this['syncMusicOnHoldStart'][_0xb6d0('0x14')](this));ami['on']('musiconholdstop',this[_0xb6d0('0x23')][_0xb6d0('0x14')](this));ami['on'](_0xb6d0('0x24'),this[_0xb6d0('0x25')][_0xb6d0('0x14')](this));ami['on'](_0xb6d0('0x26'),this['syncBlindTransfer']['bind'](this));this['loopQueueSummary']();this[_0xb6d0('0x27')]();}function clearChannels(_0x117782){if(!_[_0xb6d0('0x28')](_0x117782)){for(var _0x448f0d in _0x117782){if(_0x117782[_0xb6d0('0x29')](_0x448f0d)){delete _0x117782[_0x448f0d];}}}}function clearCampaigns(_0x162adc){if(!_[_0xb6d0('0x28')](_0x162adc)){for(var _0x37440f in _0x162adc){if(_0x162adc['hasOwnProperty'](_0x37440f)){_0x162adc[_0x37440f][_0xb6d0('0x2a')]=0x0;}}}}function clearVoiceQueues(_0x2eb439){if(!_['isEmpty'](_0x2eb439)){for(var _0xcdac5 in _0x2eb439){if(_0x2eb439['hasOwnProperty'](_0xcdac5)){_0x2eb439[_0xcdac5]['originated']=0x0;_0x2eb439[_0xcdac5]['talking']=0x0;_0x2eb439[_0xcdac5][_0xb6d0('0x2b')]=0x0;_0x2eb439[_0xcdac5][_0xb6d0('0x2c')]=0x0;_0x2eb439[_0xcdac5]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x45598c){if(!_[_0xb6d0('0x28')](_0x45598c)){for(var _0x519b43 in _0x45598c){if(_0x45598c['hasOwnProperty'](_0x519b43)){_0x45598c[_0x519b43][_0xb6d0('0x2d')]=!![];}}}}VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0x2e')]=function(){var _0x141a3c=this;for(var _0x20332d in this[_0xb6d0('0x11')]){if(this['channels'][_0xb6d0('0x29')](_0x20332d)&&!this[_0xb6d0('0x11')][_0x20332d][_0xb6d0('0x2f')]){this['sequence'][_0xb6d0('0xc')](function(){if(!_[_0xb6d0('0x30')](_0x141a3c[_0xb6d0('0x11')][_0x20332d])){return ami['Action']({'action':'status','channel':_0x141a3c['channels'][_0x20332d][_0xb6d0('0x31')]})[_0xb6d0('0x32')](function(_0x3c13b8){if(_0x3c13b8[_0xb6d0('0x33')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x141a3c[_0xb6d0('0x11')][_0x20332d]){delete _0x141a3c[_0xb6d0('0x11')][_0x20332d];logger['error']('[%s][voiceQueueReport][checkChannel]',_0x20332d,util[_0xb6d0('0x34')](_0x3c13b8,{'showHidden':![],'depth':null}));}if(_0x141a3c[_0xb6d0('0xf')][_0x20332d]){delete _0x141a3c['queueReports'][_0x20332d];logger[_0xb6d0('0x35')](_0xb6d0('0x36'),_0x20332d,util[_0xb6d0('0x34')](_0x3c13b8,{'showHidden':![],'depth':null}));}if(_0x141a3c[_0xb6d0('0x37')][_0x20332d]){delete _0x141a3c['variables'][_0x20332d];logger[_0xb6d0('0x35')](_0xb6d0('0x38'),_0x20332d,util[_0xb6d0('0x34')](_0x3c13b8,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0x21')]=function(){logger[_0xb6d0('0x35')](_0xb6d0('0x39'));clearChannels(this[_0xb6d0('0x11')]);this['clearQueueReport'](this[_0xb6d0('0xf')]);clearAgentBooked(this[_0xb6d0('0x10')]);clearVoiceQueues(this[_0xb6d0('0x3a')]);clearCampaigns(this[_0xb6d0('0x3b')]);};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0x3c')]=function(_0x21ceca){var _0x4d6928=this;if(!_[_0xb6d0('0x28')](_0x21ceca)){for(var _0x490cbd in _0x21ceca){if(_0x21ceca['hasOwnProperty'](_0x490cbd)){_0x4d6928['emitVoiceQueueChannelRemove'](_0x21ceca[_0x490cbd],_0xb6d0('0x3d'));delete _0x21ceca[_0x490cbd];}}}};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0x3e')]=function(_0x4f4cd8,_0x1bcc0d,_0x4850eb){io['to'](_0x4f4cd8)[_0xb6d0('0x3e')](_0x1bcc0d,_0x4850eb);};VoiceQueueReport[_0xb6d0('0xb')]['emitVoiceQueueChannelSave']=function(_0x3e3384,_0x2e0c52){logger['debug'](_0xb6d0('0x3f')+_0x2e0c52+_0xb6d0('0x40'),_0x3e3384[_0xb6d0('0x41')],util['inspect'](_0x3e3384,{'showHidden':![],'depth':null}));this['emit'](util[_0xb6d0('0x42')](_0xb6d0('0x43'),_0x3e3384[_0xb6d0('0x44')]),'voice_queue_channel:save',_0x3e3384);io['emit']('voice_queue_presence:save',_0x3e3384);};VoiceQueueReport['prototype'][_0xb6d0('0x45')]=function(_0x5cbb62,_0x11f5ef){logger['debug'](_0xb6d0('0x3f')+_0x11f5ef+_0xb6d0('0x46'),_0x5cbb62[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x5cbb62,{'showHidden':![],'depth':null}));this[_0xb6d0('0x3e')](util['format'](_0xb6d0('0x43'),_0x5cbb62[_0xb6d0('0x44')]),_0xb6d0('0x47'),_0x5cbb62);io[_0xb6d0('0x3e')]('voice_queue_presence:remove',_0x5cbb62);};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0x48')]=function(_0x280507,_0x2287a1){if(_0x280507[_0xb6d0('0x49')]==='inbound'){var _0x287f77={'id':_0x280507['id'],'name':_0x280507[_0xb6d0('0x44')],'strategy':_0x280507['strategy'],'answered':_0x280507[_0xb6d0('0x4a')],'available':_0x280507[_0xb6d0('0x4b')],'loggedIn':_0x280507[_0xb6d0('0x4c')],'pTalking':_0x280507[_0xb6d0('0x2b')],'sumBillable':_0x280507['sumBillable'],'sumDuration':_0x280507[_0xb6d0('0x4d')],'sumHoldTime':_0x280507[_0xb6d0('0x4e')]||0x0,'talking':_0x280507['talking'],'total':_0x280507[_0xb6d0('0x4f')],'type':_0x280507[_0xb6d0('0x49')],'unmanaged':_0x280507[_0xb6d0('0x50')],'abandoned':_0x280507['abandoned'],'waiting':_0x280507[_0xb6d0('0x2c')]};if(_0x280507['Trunk']){_0x287f77['Trunk']={'id':_0x280507[_0xb6d0('0x51')]['id'],'name':_0x280507[_0xb6d0('0x51')][_0xb6d0('0x44')],'active':_0x280507[_0xb6d0('0x51')][_0xb6d0('0x52')],'callerid':_0x280507[_0xb6d0('0x51')][_0xb6d0('0x53')]};}if(_0x280507[_0xb6d0('0x54')]){_0x287f77[_0xb6d0('0x54')]={'id':_0x280507[_0xb6d0('0x54')]['id'],'name':_0x280507[_0xb6d0('0x54')]['name']};}var _0x5018c7=md5(JSON['stringify'](_0x287f77));if(_0x280507[_0xb6d0('0x55')]!==_0x5018c7){_0x280507[_0xb6d0('0x55')]=_0x5018c7;logger[_0xb6d0('0x56')]('[voiceQueueReport]['+_0x2287a1+_0xb6d0('0x57'),util[_0xb6d0('0x34')](_0x287f77,{'showHidden':![],'depth':null}));this[_0xb6d0('0x3e')](util[_0xb6d0('0x42')](_0xb6d0('0x43'),_0x287f77['name']),_0xb6d0('0x58'),_0x287f77);}}};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0x59')]=function(_0x381fca){return _0x381fca!==null&&!_[_0xb6d0('0x5a')](_0x381fca);};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0x27')]=function(){var _0xbadbef=this;setInterval(function(){_0xbadbef[_0xb6d0('0x2e')]();ami[_0xb6d0('0x5b')]({'action':_0xb6d0('0x5c')})[_0xb6d0('0x32')](function(_0x213591){logger['error'](_0xb6d0('0x5d'),util[_0xb6d0('0x34')](_0x213591,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0x5e')]=function(){var _0x3ea37a=this;setInterval(function(){if(_0x3ea37a[_0xb6d0('0x12')]){return ami[_0xb6d0('0x5b')]({'action':_0xb6d0('0x5f')})[_0xb6d0('0x60')](function(_0x91dea8){_0x3ea37a[_0xb6d0('0x12')]=![];})['catch'](function(_0x53b394){logger[_0xb6d0('0x35')](_0xb6d0('0x61'),util['inspect'](_0x53b394,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0x13')]=function(_0x5a8323){try{if(this['isNotNull'](_0x5a8323)&&this['isNotNull'](_0x5a8323[_0xb6d0('0x62')])){logger[_0xb6d0('0x56')](_0xb6d0('0x63'),util['inspect'](_0x5a8323,{'showHidden':![],'depth':null}));if(this[_0xb6d0('0x3a')][_0x5a8323[_0xb6d0('0x62')]]){logger[_0xb6d0('0x64')](_0xb6d0('0x65'),_0x5a8323[_0xb6d0('0x62')]);var _0x516aa7=_['countBy'](this[_0xb6d0('0x11')],_0xb6d0('0x62'))[_0x5a8323[_0xb6d0('0x62')]]||0x0;var _0x3429f9=_0x516aa7-_0x5a8323[_0xb6d0('0x66')];if(this[_0xb6d0('0x3a')][_0x5a8323[_0xb6d0('0x62')]][_0xb6d0('0x2c')]!==_[_0xb6d0('0x67')](_0x5a8323['callers'])||this['voiceQueues'][_0x5a8323['queue']][_0xb6d0('0x4c')]!==_[_0xb6d0('0x67')](_0x5a8323[_0xb6d0('0x68')])||this[_0xb6d0('0x3a')][_0x5a8323[_0xb6d0('0x62')]][_0xb6d0('0x4b')]!==_[_0xb6d0('0x67')](_0x5a8323[_0xb6d0('0x4b')])||this['voiceQueues'][_0x5a8323['queue']][_0xb6d0('0x69')]!==_0x3429f9){this['voiceQueues'][_0x5a8323[_0xb6d0('0x62')]]['waiting']=_[_0xb6d0('0x67')](_0x5a8323[_0xb6d0('0x66')]);this[_0xb6d0('0x3a')][_0x5a8323['queue']]['loggedIn']=_[_0xb6d0('0x67')](_0x5a8323['loggedin']);this[_0xb6d0('0x3a')][_0x5a8323['queue']][_0xb6d0('0x4b')]=_[_0xb6d0('0x67')](_0x5a8323[_0xb6d0('0x4b')]);this[_0xb6d0('0x3a')][_0x5a8323['queue']][_0xb6d0('0x69')]=_0x3429f9>0x0?_0x3429f9:0x0;this['voiceQueues'][_0x5a8323['queue']][_0xb6d0('0x69')]=this[_0xb6d0('0x3a')][_0x5a8323[_0xb6d0('0x62')]]['talking']>_[_0xb6d0('0x67')](_0x5a8323[_0xb6d0('0x68')])?_[_0xb6d0('0x67')](_0x5a8323[_0xb6d0('0x68')]):this[_0xb6d0('0x3a')][_0x5a8323['queue']][_0xb6d0('0x69')];this[_0xb6d0('0x48')](this['voiceQueues'][_0x5a8323[_0xb6d0('0x62')]],_0xb6d0('0x5f'));}logger[_0xb6d0('0x56')](_0xb6d0('0x6a'),util[_0xb6d0('0x34')](this[_0xb6d0('0x3a')][_0x5a8323[_0xb6d0('0x62')]],{'showHidden':![],'depth':null}));ami[_0xb6d0('0x3e')](_0xb6d0('0x6b'),this[_0xb6d0('0x3a')][_0x5a8323[_0xb6d0('0x62')]]);}}}catch(_0x2f1a66){logger['error']('[voiceQueueReport][queuesummary]',util[_0xb6d0('0x34')](_0x2f1a66,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xb6d0('0x16')]=function(_0xd79b8a){logger['debug']('[voiceQueueReport][queuesummarycomplete]\x20event:',util[_0xb6d0('0x34')](_0xd79b8a,{'showHidden':![],'depth':null}));this[_0xb6d0('0x12')]=!![];};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0x6c')]=function(_0xc72202){try{if(this[_0xb6d0('0x59')](_0xc72202)){logger[_0xb6d0('0x56')]('[%s][voiceQueueReport][queuecallerjoin]',_0xc72202['uniqueid'],util[_0xb6d0('0x34')](_0xc72202,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0xb6d0('0xf')][_0xc72202[_0xb6d0('0x41')]]))this[_0xb6d0('0xf')][_0xc72202[_0xb6d0('0x41')]]=[];if(_['isUndefined'](this['channels'][_0xc72202[_0xb6d0('0x41')]]))this[_0xb6d0('0x11')][_0xc72202[_0xb6d0('0x41')]]={};var _0x4314d2=new QueueReport();_0x4314d2['name']=_0xc72202[_0xb6d0('0x62')];_0x4314d2[_0xb6d0('0x49')]=this['voiceQueues'][_0x4314d2[_0xb6d0('0x44')]]&&this[_0xb6d0('0x3a')][_0x4314d2[_0xb6d0('0x44')]][_0xb6d0('0x49')]?this['voiceQueues'][_0x4314d2[_0xb6d0('0x44')]][_0xb6d0('0x49')]||'inbound':_0xb6d0('0x6d');_0x4314d2['queue']=_0xc72202[_0xb6d0('0x62')];_0x4314d2[_0xb6d0('0x6e')]=moment()[_0xb6d0('0x42')](_0xb6d0('0x6f'));_0x4314d2[_0xb6d0('0x70')]=_0xc72202[_0xb6d0('0x70')];_0x4314d2[_0xb6d0('0x71')]=_0xc72202['count'];_0x4314d2['uniqueid']=_0xc72202[_0xb6d0('0x41')];_0x4314d2[_0xb6d0('0x72')]=this['channels'][_0xc72202[_0xb6d0('0x41')]][_0xb6d0('0x72')];logger[_0xb6d0('0x64')](_0xb6d0('0x73'),_0x4314d2['name'],_0x4314d2['type']);_[_0xb6d0('0x74')](_0x4314d2,_[_0xb6d0('0x75')](_0xc72202,_[_0xb6d0('0x76')](_0x4314d2)));this[_0xb6d0('0xf')][_0xc72202[_0xb6d0('0x41')]][_0xb6d0('0x77')](_0x4314d2);this[_0xb6d0('0x11')][_0xc72202[_0xb6d0('0x41')]]=_0x4314d2;this[_0xb6d0('0x78')](_0x4314d2,_0xb6d0('0x79'));}}catch(_0x40073e){logger[_0xb6d0('0x35')](_0xb6d0('0x7a'),_0xc72202['uniqueid'],util[_0xb6d0('0x34')](_0x40073e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0x7b')]=function(_0xfa144){try{if(this['isNotNull'](_0xfa144)){logger[_0xb6d0('0x56')](_0xb6d0('0x7c'),_0xfa144[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0xfa144,{'showHidden':![],'depth':null}));if(this['queueReports'][_0xfa144[_0xb6d0('0x41')]]){var _0xc6ee2b=_[_0xb6d0('0x7d')](this['queueReports'][_0xfa144[_0xb6d0('0x41')]]);_0xc6ee2b['queuecallercomplete']=![];_0xc6ee2b[_0xb6d0('0x7e')]=null;_0xc6ee2b[_0xb6d0('0x7f')]=_0xfa144['holdtime'];_0xc6ee2b[_0xb6d0('0x80')]=_0xfa144['originalposition'];_0xc6ee2b[_0xb6d0('0x17')]=!![];_0xc6ee2b[_0xb6d0('0x81')]=moment()[_0xb6d0('0x42')](_0xb6d0('0x6f'));_0xc6ee2b[_0xb6d0('0x82')]=_0xb6d0('0x83');_0xc6ee2b['lastAssignedTo']=null;logger[_0xb6d0('0x64')](_0xb6d0('0x84'),_0xc6ee2b[_0xb6d0('0x44')],_0xc6ee2b[_0xb6d0('0x49')]);this['channels'][_0xfa144[_0xb6d0('0x41')]]=_0xc6ee2b;this['emitVoiceQueueChannelRemove'](_0xc6ee2b,'queuecallerabandon');}}}catch(_0x2f042d){logger['error'](_0xb6d0('0x7c'),_0xfa144[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x2f042d,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0x19')]=function(_0x2c59dc){try{if(this[_0xb6d0('0x59')](_0x2c59dc)){logger['debug'](_0xb6d0('0x85'),_0x2c59dc[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x2c59dc,{'showHidden':![],'depth':null}));if(this[_0xb6d0('0xf')][_0x2c59dc[_0xb6d0('0x41')]]){var _0x197aac=_['last'](this['queueReports'][_0x2c59dc[_0xb6d0('0x41')]]);_0x197aac[_0xb6d0('0x86')]=moment()[_0xb6d0('0x42')](_0xb6d0('0x6f'));_0x197aac[_0xb6d0('0x87')]=_0x2c59dc[_0xb6d0('0x87')];_0x197aac[_0xb6d0('0x88')]=_0x2c59dc['connectedlinename'];logger[_0xb6d0('0x64')]('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x197aac[_0xb6d0('0x44')],_0x197aac[_0xb6d0('0x49')],_0x2c59dc[_0xb6d0('0x87')],_0x2c59dc[_0xb6d0('0x88')]);this[_0xb6d0('0x11')][_0x2c59dc[_0xb6d0('0x41')]]=_0x197aac;this[_0xb6d0('0x78')](_0x197aac,_0xb6d0('0x18'));}}}catch(_0x4164e3){logger['error'](_0xb6d0('0x85'),_0x2c59dc[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x4164e3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0x1c')]=function(_0x21a463){try{if(this[_0xb6d0('0x59')](_0x21a463)){logger[_0xb6d0('0x56')](_0xb6d0('0x89'),_0x21a463[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x21a463,{'showHidden':![],'depth':null}));if(this[_0xb6d0('0xf')][_0x21a463[_0xb6d0('0x41')]]){var _0x52e73a=_[_0xb6d0('0x7d')](this[_0xb6d0('0xf')][_0x21a463['uniqueid']]);_0x52e73a['queuecallercomplete']=!![];_0x52e73a[_0xb6d0('0x82')]=_0xb6d0('0x8a');logger[_0xb6d0('0x64')](_0xb6d0('0x8b'),_0x52e73a['name'],_0x52e73a[_0xb6d0('0x49')]);}}}catch(_0x4013f1){logger['error']('[%s][voiceQueueReport][agentconnect]',_0x21a463['uniqueid'],util[_0xb6d0('0x34')](_0x4013f1,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0x8c')]=function(_0x58769a){try{if(this[_0xb6d0('0x59')](_0x58769a)){logger[_0xb6d0('0x56')](_0xb6d0('0x8d'),_0x58769a[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x58769a,{'showHidden':![],'depth':null}));if(this[_0xb6d0('0xf')][_0x58769a['uniqueid']]){var _0x4abec9=_[_0xb6d0('0x7d')](this[_0xb6d0('0xf')][_0x58769a['uniqueid']]);_0x4abec9[_0xb6d0('0x17')]=![];_0x4abec9[_0xb6d0('0x81')]=null;_0x4abec9[_0xb6d0('0x8e')]=!![];_0x4abec9[_0xb6d0('0x8f')]=_0x58769a[_0xb6d0('0x90')];_0x4abec9['holdtime']=_0x58769a[_0xb6d0('0x7f')];_0x4abec9[_0xb6d0('0x91')]=!![];_0x4abec9[_0xb6d0('0x92')]=![];_0x4abec9[_0xb6d0('0x93')]=null;if(!_0x4abec9[_0xb6d0('0x94')]){if(_0x58769a['reason']==_0xb6d0('0x94')){_0x4abec9[_0xb6d0('0x82')]='COMPLETED';logger[_0xb6d0('0x64')](_0xb6d0('0x95'),_0x4abec9['name'],_0x4abec9['type']);}else{if(_[_0xb6d0('0x96')](_0x58769a[_0xb6d0('0x31')][_0xb6d0('0x97')](),_0xb6d0('0x98'))){if(this[_0xb6d0('0xf')][_0x58769a[_0xb6d0('0x99')]]){var _0xbdebb4=_[_0xb6d0('0x7d')](this[_0xb6d0('0xf')][_0x58769a[_0xb6d0('0x99')]]);_0xbdebb4[_0xb6d0('0x91')]=![];_0xbdebb4[_0xb6d0('0x92')]=!![];_0xbdebb4[_0xb6d0('0x93')]=moment(_0x4abec9['queuecallerjoinAt'])[_0xb6d0('0x9a')](_0x58769a[_0xb6d0('0x7f')],_0xb6d0('0x9b'))[_0xb6d0('0x42')](_0xb6d0('0x6f'));_0xbdebb4[_0xb6d0('0x82')]='FORWARDTRANSFER';_0xbdebb4[_0xb6d0('0x94')]=!![];_0xbdebb4[_0xb6d0('0x9c')]=_0xb6d0('0x9d');_0xbdebb4[_0xb6d0('0x9e')]=_0x58769a[_0xb6d0('0x9f')];_0xbdebb4[_0xb6d0('0xa0')]=_0x58769a[_0xb6d0('0x41')];logger[_0xb6d0('0x64')](_0xb6d0('0xa1'),_0xbdebb4[_0xb6d0('0x44')],_0xbdebb4[_0xb6d0('0x49')]);var _0x43678f=this[_0xb6d0('0xf')][_0x58769a['linkedid']];this[_0xb6d0('0xf')][_0x58769a[_0xb6d0('0x99')]]=this[_0xb6d0('0xf')][_0x58769a[_0xb6d0('0x41')]];this['queueReports'][_0x58769a['uniqueid']]=_0x43678f;}}else{_0x4abec9['queuecallerexitreason']=_0xb6d0('0xa2')+_0x58769a[_0xb6d0('0xa3')][_0xb6d0('0xa4')]();logger[_0xb6d0('0x64')](_0xb6d0('0xa5'),_0x4abec9[_0xb6d0('0x44')],_0x4abec9['type'],_0x4abec9[_0xb6d0('0x82')]);}}}this['channels'][_0x58769a[_0xb6d0('0x41')]]=_0x4abec9;this[_0xb6d0('0x45')](_0x4abec9,_0xb6d0('0x1a'));}}}catch(_0x5529e4){logger[_0xb6d0('0x35')](_0xb6d0('0x8d'),_0x58769a['uniqueid'],util[_0xb6d0('0x34')](_0x5529e4,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0x1d')]=function(_0x38f76a){try{if(this[_0xb6d0('0x59')](_0x38f76a)){logger['debug'](_0xb6d0('0xa6'),_0x38f76a[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x38f76a,{'showHidden':![],'depth':null}));this['addVariable'](_0x38f76a[_0xb6d0('0x41')],_['keys'](_0x38f76a['variable'])[0x0],_0x38f76a['value']);if(this[_0xb6d0('0xf')][_0x38f76a[_0xb6d0('0x41')]]){var _0x271c57=_['last'](this[_0xb6d0('0xf')][_0x38f76a[_0xb6d0('0x41')]]);if(_0x271c57){if(this['isNotNull'](_0x38f76a[_0xb6d0('0xa7')])&&this[_0xb6d0('0x59')](_0x38f76a[_0xb6d0('0xa7')][_0xb6d0('0xa8')])){switch(_0x38f76a[_0xb6d0('0xa9')]){case _0xb6d0('0xaa'):_0x271c57[_0xb6d0('0x92')]=![];_0x271c57[_0xb6d0('0x93')]=null;break;case'TIMEOUT':_0x271c57[_0xb6d0('0xab')]=_0xb6d0('0xac');_0x271c57[_0xb6d0('0x92')]=!![];_0x271c57['queuecallerexitAt']=moment()[_0xb6d0('0x42')](_0xb6d0('0x6f'));_0x271c57[_0xb6d0('0x86')]=moment()[_0xb6d0('0x42')](_0xb6d0('0x6f'));logger[_0xb6d0('0x56')](_0xb6d0('0xad'),_0x38f76a[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x271c57,{'showHidden':![],'depth':null}));ami[_0xb6d0('0x3e')]('custom:timeout',_0x271c57);break;default:_0x271c57[_0xb6d0('0x92')]=!![];_0x271c57[_0xb6d0('0x93')]=moment()[_0xb6d0('0x42')]('YYYY-MM-DD\x20HH:mm:ss');_0x271c57[_0xb6d0('0x86')]=moment()[_0xb6d0('0x42')](_0xb6d0('0x6f'));}_0x271c57['queuecallerabandon']=![];_0x271c57[_0xb6d0('0x81')]=null;_0x271c57['queuecallerexitreason']=_0x38f76a[_0xb6d0('0xa9')];this[_0xb6d0('0x11')][_0x38f76a['uniqueid']]=_0x271c57;this[_0xb6d0('0x45')](_0x271c57,_0xb6d0('0xae'));}else if(this[_0xb6d0('0x59')](_0x38f76a[_0xb6d0('0xa7')])&&this[_0xb6d0('0x59')](_0x38f76a['variable']['queueposition'])){if(!_0x271c57['queuecallerabandon']){_0x271c57['queuecallerexit']=!![];_0x271c57[_0xb6d0('0x93')]=moment()['format'](_0xb6d0('0x6f'));_0x271c57[_0xb6d0('0x82')]=_0xb6d0('0xaf');_0x271c57[_0xb6d0('0x86')]=moment()[_0xb6d0('0x42')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xb6d0('0x11')][_0x38f76a[_0xb6d0('0x41')]]=_0x271c57;}}logger[_0xb6d0('0x64')](_0xb6d0('0xb0'),_0x38f76a[_0xb6d0('0x41')],_0x271c57[_0xb6d0('0x44')],_0x271c57['type'],_[_0xb6d0('0x76')](_0x38f76a['variable'])[0x0],_0x38f76a[_0xb6d0('0xa9')]);_0x271c57[_0xb6d0('0x37')]=this[_0xb6d0('0x37')][_0x38f76a[_0xb6d0('0x41')]];}}}}catch(_0x294c7f){logger['error'](_0xb6d0('0xa6'),_0x38f76a[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x294c7f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb6d0('0xb')]['addVariable']=function(_0x557c66,_0x116e84,_0x37b292){var _0x2ed700=['rtpaudioqos',_0xb6d0('0xb1'),_0xb6d0('0xb2'),'rtpaudioqosjitterbridged',_0xb6d0('0xb3'),_0xb6d0('0xb4'),_0xb6d0('0xb5'),_0xb6d0('0xb6'),_0xb6d0('0xb7'),_0xb6d0('0xb8'),_0xb6d0('0xb9'),'bridgepvtcallid','membercalls',_0xb6d0('0xba'),'memberinterface','memberlastcall',_0xb6d0('0x90'),_0xb6d0('0xbb'),_0xb6d0('0xbc')];if(!_['isNil'](_0x116e84)&&!_['includes'](_0x2ed700,_0x116e84)){if(_[_0xb6d0('0x5a')](this[_0xb6d0('0x37')][_0x557c66])){this[_0xb6d0('0x37')][_0x557c66]={};}this[_0xb6d0('0x37')][_0x557c66][_0x116e84]=_0x37b292;}};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0x1f')]=function(_0x17ab1d){try{if(this[_0xb6d0('0x59')](_0x17ab1d)){logger[_0xb6d0('0x56')]('[%s][voiceQueueReport][hangup]',_0x17ab1d[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x17ab1d,{'showHidden':![],'depth':null}));if(this[_0xb6d0('0xf')][_0x17ab1d[_0xb6d0('0x41')]]){for(var _0x13f404=0x0,_0x4d4c42={};_0x13f404<this[_0xb6d0('0xf')][_0x17ab1d[_0xb6d0('0x41')]][_0xb6d0('0xbd')];_0x13f404+=0x1){_0x4d4c42=this[_0xb6d0('0xf')][_0x17ab1d[_0xb6d0('0x41')]][_0x13f404];if(this[_0xb6d0('0x3a')][_0x4d4c42['queue']]){if(_0x4d4c42[_0xb6d0('0x92')]&&_0x4d4c42[_0xb6d0('0x94')]!=!![]){this[_0xb6d0('0x3a')][_0x4d4c42[_0xb6d0('0x62')]][_0xb6d0('0x50')]+=0x1;}if(_0x4d4c42[_0xb6d0('0x17')]){this[_0xb6d0('0x3a')][_0x4d4c42[_0xb6d0('0x62')]][_0xb6d0('0xbe')]+=0x1;}this[_0xb6d0('0x3a')][_0x4d4c42[_0xb6d0('0x62')]][_0xb6d0('0x4e')]+=moment(_0x4d4c42['queuecallerleaveAt'])['diff'](_0x4d4c42[_0xb6d0('0x6e')],_0xb6d0('0x9b'))||0x0;if(_0x13f404===this[_0xb6d0('0xf')][_0x17ab1d['uniqueid']][_0xb6d0('0xbd')]-0x1){this[_0xb6d0('0x3a')][_0x4d4c42['queue']][_0xb6d0('0x4d')]+=moment()[_0xb6d0('0xbf')](0x0)[_0xb6d0('0xc0')](_0x4d4c42['queuecallerjoinAt'],_0xb6d0('0x9b'));this[_0xb6d0('0x3a')][_0x4d4c42[_0xb6d0('0x62')]][_0xb6d0('0x4f')]+=0x1;if(_0x4d4c42[_0xb6d0('0x91')]){this[_0xb6d0('0x3a')][_0x4d4c42[_0xb6d0('0x62')]]['answered']+=0x1;this[_0xb6d0('0x3a')][_0x4d4c42[_0xb6d0('0x62')]][_0xb6d0('0xc1')]+=moment()[_0xb6d0('0xbf')](0x0)[_0xb6d0('0xc0')](_0x4d4c42[_0xb6d0('0x86')],_0xb6d0('0x9b'));_0x4d4c42[_0xb6d0('0x7e')]=moment()[_0xb6d0('0x42')](_0xb6d0('0x6f'));_0x4d4c42[_0xb6d0('0x92')]=![];_0x4d4c42['queuecallerexitAt']=null;}if(_0x4d4c42[_0xb6d0('0x92')]&&_0x4d4c42[_0xb6d0('0x94')]!=!![]){_0x4d4c42[_0xb6d0('0xab')]=_0xb6d0('0x50');logger[_0xb6d0('0x56')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0x17ab1d['uniqueid'],util[_0xb6d0('0x34')](_0x4d4c42,{'showHidden':![],'depth':null}));ami[_0xb6d0('0x3e')](_0xb6d0('0xc2'),_0x4d4c42);}if(_0x4d4c42['queuecallerabandon']){_0x4d4c42['lastevent']=_0xb6d0('0xbe');logger[_0xb6d0('0x56')](_0xb6d0('0xc3'),_0x17ab1d[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x4d4c42,{'showHidden':![],'depth':null}));ami['emit'](_0xb6d0('0xc4'),_0x4d4c42);}}else{this[_0xb6d0('0x3a')][_0x4d4c42[_0xb6d0('0x62')]][_0xb6d0('0x4d')]+=this[_0xb6d0('0x3a')][_0x4d4c42[_0xb6d0('0x62')]][_0xb6d0('0x4e')];}logger[_0xb6d0('0x64')](_0xb6d0('0xc5'),_0x17ab1d[_0xb6d0('0x41')],_0x4d4c42[_0xb6d0('0x44')],_0x4d4c42['type'],_0x17ab1d[_0xb6d0('0xc6')]);this[_0xb6d0('0x11')][_0x17ab1d[_0xb6d0('0x41')]]=_0x4d4c42;this['emitVoiceQueueChannelRemove'](_0x4d4c42,_0xb6d0('0x1e'));this['emitVoiceQueueSummary'](this['voiceQueues'][_0x4d4c42[_0xb6d0('0x62')]],_0xb6d0('0x1e'));}}logger[_0xb6d0('0x56')](_0xb6d0('0xc7'),_0x17ab1d[_0xb6d0('0x41')],util['inspect'](this[_0xb6d0('0xf')][_0x17ab1d['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xb6d0('0x3e')]('custom:voiceQueueReport',this[_0xb6d0('0xf')][_0x17ab1d['uniqueid']]);delete this[_0xb6d0('0xf')][_0x17ab1d[_0xb6d0('0x41')]];delete this[_0xb6d0('0x11')][_0x17ab1d[_0xb6d0('0x41')]];}if(this[_0xb6d0('0x37')][_0x17ab1d[_0xb6d0('0x41')]]){delete this[_0xb6d0('0x37')][_0x17ab1d['uniqueid']];}}}catch(_0x448f9a){logger['error'](_0xb6d0('0xc8'),_0x17ab1d[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x448f9a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0x25')]=function(_0x3433b4){try{if(this[_0xb6d0('0x59')](_0x3433b4)){logger[_0xb6d0('0x56')]('[%s][voiceQueueReport][attendedtransfer]',_0x3433b4[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x3433b4,{'showHidden':![],'depth':null}));var _0x547c16;if(this[_0xb6d0('0xf')][_0x3433b4[_0xb6d0('0xc9')]]){_0x547c16=_[_0xb6d0('0x7d')](this[_0xb6d0('0xf')][_0x3433b4['transfereeuniqueid']]);_0x547c16['transferexten']=_0x3433b4[_0xb6d0('0xca')];_0x547c16[_0xb6d0('0xa0')]=_0x3433b4[_0xb6d0('0xcb')];_0x547c16[_0xb6d0('0x82')]='ATTENDEDTRANSFER';_0x547c16['transfer']=!![];_0x547c16[_0xb6d0('0x9c')]=_0xb6d0('0xcc');if(this[_0xb6d0('0xf')][_0x3433b4['secondtransfereruniqueid']]){var _0xea986b=this['queueReports'][_0x3433b4['secondtransfereruniqueid']];this[_0xb6d0('0xf')][_0x3433b4[_0xb6d0('0xcb')]]=this['queueReports'][_0x3433b4[_0xb6d0('0xc9')]];this[_0xb6d0('0xf')][_0x3433b4['transfereeuniqueid']]=_0xea986b;var _0x1adf10=_['last'](this[_0xb6d0('0xf')][_0x3433b4['transfereeuniqueid']]);_0x1adf10[_0xb6d0('0x2f')]=!![];}logger[_0xb6d0('0x64')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x3433b4[_0xb6d0('0x41')],_0x547c16[_0xb6d0('0x44')],_0x547c16[_0xb6d0('0x49')],_0x547c16['transferexten'],_0x547c16['transferuniqueid']);}else if(this[_0xb6d0('0xf')][_0x3433b4[_0xb6d0('0xcd')]]){_0x547c16=_[_0xb6d0('0x7d')](this[_0xb6d0('0xf')][_0x3433b4['transfertargetuniqueid']]);_0x547c16[_0xb6d0('0x9e')]=_0x3433b4[_0xb6d0('0xce')];_0x547c16[_0xb6d0('0xa0')]=_0x3433b4[_0xb6d0('0xcf')];_0x547c16[_0xb6d0('0x82')]=_0xb6d0('0xd0');_0x547c16[_0xb6d0('0x94')]=!![];_0x547c16['transfertype']=_0xb6d0('0xcc');if(this['queueReports'][_0x3433b4[_0xb6d0('0xcf')]]){var _0xea986b=this[_0xb6d0('0xf')][_0x3433b4['origtransfereruniqueid']];this['queueReports'][_0x3433b4[_0xb6d0('0xcf')]]=this[_0xb6d0('0xf')][_0x3433b4[_0xb6d0('0xcd')]];this[_0xb6d0('0xf')][_0x3433b4['transfertargetuniqueid']]=_0xea986b;var _0x1adf10=_[_0xb6d0('0x7d')](this[_0xb6d0('0xf')][_0x3433b4[_0xb6d0('0xcd')]]);_0x1adf10[_0xb6d0('0x2f')]=!![];}logger[_0xb6d0('0x64')](_0xb6d0('0xd1'),_0x3433b4[_0xb6d0('0x41')],_0x547c16[_0xb6d0('0x44')],_0x547c16[_0xb6d0('0x49')],_0x547c16[_0xb6d0('0x9e')],_0x547c16[_0xb6d0('0xa0')]);}}}catch(_0x8c4ae3){logger[_0xb6d0('0x35')](_0xb6d0('0xd2'),_0x3433b4[_0xb6d0('0x41')],util['inspect'](_0x8c4ae3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb6d0('0xb')]['syncBlindTransfer']=function(_0x1ed3b5){try{if(this[_0xb6d0('0x59')](_0x1ed3b5)){logger['debug'](_0xb6d0('0xd3'),_0x1ed3b5[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x1ed3b5,{'showHidden':![],'depth':null}));if(this[_0xb6d0('0xf')][_0x1ed3b5[_0xb6d0('0xc9')]]){var _0x4e7bcc=_[_0xb6d0('0x7d')](this[_0xb6d0('0xf')][_0x1ed3b5['transfereeuniqueid']]);_0x4e7bcc[_0xb6d0('0x82')]=_0xb6d0('0xd4');_0x4e7bcc[_0xb6d0('0x94')]=!![];_0x4e7bcc[_0xb6d0('0x9c')]=_0xb6d0('0xd5');_0x4e7bcc[_0xb6d0('0x9e')]=_0x1ed3b5[_0xb6d0('0xd6')];_0x4e7bcc['transferuniqueid']=_0x1ed3b5[_0xb6d0('0xc9')];logger[_0xb6d0('0x64')](_0xb6d0('0xd7'),_0x1ed3b5[_0xb6d0('0x41')],_0x4e7bcc[_0xb6d0('0x44')],_0x4e7bcc['type'],_0x4e7bcc[_0xb6d0('0x9e')],_0x4e7bcc[_0xb6d0('0xa0')]);this[_0xb6d0('0x1f')]({'event':_0xb6d0('0xd8'),'uniqueid':_0x1ed3b5[_0xb6d0('0xc9')],'context':_0x1ed3b5[_0xb6d0('0xd9')],'channel':_0x1ed3b5[_0xb6d0('0xda')]});}}}catch(_0x3712b3){logger[_0xb6d0('0x35')](_0xb6d0('0xd3'),_0x1ed3b5[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x3712b3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0xdb')]=function(_0x27d00f){try{if(this[_0xb6d0('0x59')](_0x27d00f)){logger[_0xb6d0('0x56')]('[%s][voiceQueueReport][musiconholdstart]',_0x27d00f[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x27d00f,{'showHidden':![],'depth':null}));if(this[_0xb6d0('0xf')][_0x27d00f[_0xb6d0('0x41')]]){var _0x52e732=_[_0xb6d0('0x7d')](this[_0xb6d0('0xf')][_0x27d00f[_0xb6d0('0x41')]]);if(!_[_0xb6d0('0x30')](_0x52e732[_0xb6d0('0x86')])){_0x52e732['mohstarttime']=moment()[_0xb6d0('0x42')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0xb6d0('0x64')](_0xb6d0('0xdc'),_0x27d00f['uniqueid'],_0x52e732['mohstarttime']);}}}}catch(_0x24e57d){logger['error'](_0xb6d0('0xdd'),_0x27d00f[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x24e57d,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStop']=function(_0x3d98f0){try{if(this[_0xb6d0('0x59')](_0x3d98f0)){logger[_0xb6d0('0x56')](_0xb6d0('0xde'),_0x3d98f0[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x3d98f0,{'showHidden':![],'depth':null}));if(this[_0xb6d0('0xf')][_0x3d98f0[_0xb6d0('0x41')]]){var _0x1d8a3b=_['last'](this[_0xb6d0('0xf')][_0x3d98f0['uniqueid']]);if(!_[_0xb6d0('0x30')](_0x1d8a3b['mohstarttime'])){_0x1d8a3b[_0xb6d0('0xdf')]+=moment()['milliseconds'](0x0)[_0xb6d0('0xc0')](_0x1d8a3b['mohstarttime'],_0xb6d0('0x9b'));logger[_0xb6d0('0x64')](_0xb6d0('0xe0'),_0x3d98f0[_0xb6d0('0x41')],_0x1d8a3b[_0xb6d0('0xdf')]);delete _0x1d8a3b[_0xb6d0('0xe1')];}}}}catch(_0x53327e){logger[_0xb6d0('0x35')](_0xb6d0('0xde'),_0x3d98f0['uniqueid'],util['inspect'](_0x53327e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb6d0('0xb')][_0xb6d0('0xe2')]=function(_0x1ab135){try{if(this[_0xb6d0('0x59')](_0x1ab135)){logger['debug'](_0xb6d0('0xe3'),_0x1ab135[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x1ab135,{'showHidden':![],'depth':null}));if(_0x1ab135[_0xb6d0('0xe4')][_0xb6d0('0x97')]()===_0xb6d0('0xe5')){_0x1ab135[_0xb6d0('0xe6')]=_0x1ab135['appdata']&&_0x1ab135['appdata'][_0xb6d0('0x96')](_0xb6d0('0xe7'))?_0x1ab135[_0xb6d0('0xe8')]:(_0x1ab135[_0xb6d0('0xe8')]||_0x1ab135['applicationdata'])[_0xb6d0('0x97')]();if(_[_0xb6d0('0x96')](_0x1ab135[_0xb6d0('0xe6')][_0xb6d0('0x97')](),_0xb6d0('0xe9'))){logger[_0xb6d0('0x64')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x1ab135[_0xb6d0('0x41')],_0x1ab135['application'],_0x1ab135[_0xb6d0('0xe6')]);if(_[_0xb6d0('0x5a')](this[_0xb6d0('0x11')][_0x1ab135['uniqueid']]))this['channels'][_0x1ab135[_0xb6d0('0x41')]]={};var _0x2cd4c3=_0x1ab135['applicationdata']['split']('=');var _0x2276fe=_0x2cd4c3[0x0]['toLowerCase']()[_0xb6d0('0xea')](/cdr\((.*)\)/);if(_0x2276fe)this['channels'][_0x1ab135[_0xb6d0('0x41')]][_0x2276fe[0x1]]=_0x2cd4c3[0x1];}}}}catch(_0x14f9c5){logger[_0xb6d0('0x35')]('[%s][voiceQueueReport][newexten]',_0x1ab135[_0xb6d0('0x41')],util[_0xb6d0('0x34')](_0x14f9c5,{'showHidden':![],'depth':null}));}};module[_0xb6d0('0xeb')]=VoiceQueueReport;
\ No newline at end of file
index 1221880..7801025 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc68b=['Request','CreateReportAgentPreview','createHistory','queue'];(function(_0x391fc7,_0x1e2b2c){var _0x4d2630=function(_0x23feef){while(--_0x23feef){_0x391fc7['push'](_0x391fc7['shift']());}};_0x4d2630(++_0x1e2b2c);}(_0xc68b,0x96));var _0xbc68=function(_0x24fa20,_0x5ac8bc){_0x24fa20=_0x24fa20-0x0;var _0x4db02d=_0xc68b[_0x24fa20];return _0x4db02d;};'use strict';var client=require('../client');exports[_0xbc68('0x0')]=function(_0x1821b6){return function(){_0x1821b6['campaign']=_0x1821b6[_0xbc68('0x1')];return client[_0xbc68('0x2')](_0xbc68('0x3'),{'body':_0x1821b6,'log':_0xbc68('0x3')});};};
\ No newline at end of file
+var _0x1bbb=['CreateReportAgentPreview','../client','createHistory','campaign','queue'];(function(_0x10b491,_0x270e79){var _0x4ee3c8=function(_0x3428d6){while(--_0x3428d6){_0x10b491['push'](_0x10b491['shift']());}};_0x4ee3c8(++_0x270e79);}(_0x1bbb,0x141));var _0xb1bb=function(_0x22c1c7,_0x42d15e){_0x22c1c7=_0x22c1c7-0x0;var _0x3c230f=_0x1bbb[_0x22c1c7];return _0x3c230f;};'use strict';var client=require(_0xb1bb('0x0'));exports[_0xb1bb('0x1')]=function(_0x1eef3f){return function(){_0x1eef3f[_0xb1bb('0x2')]=_0x1eef3f[_0xb1bb('0x3')];return client['Request'](_0xb1bb('0x4'),{'body':_0x1eef3f,'log':_0xb1bb('0x4')});};};
\ No newline at end of file
index a956cee..4335718 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb08b=['create','CreateAttachment','../client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb08b,0x116));var _0xbb08=function(_0x304146,_0x4017b1){_0x304146=_0x304146-0x0;var _0x32a688=_0xb08b[_0x304146];return _0x32a688;};'use strict';var client=require(_0xbb08('0x0'));exports[_0xbb08('0x1')]=function(_0x28b3ec){return client['Request'](_0xbb08('0x2'),{'body':_0x28b3ec,'log':_0xbb08('0x2')});};
\ No newline at end of file
+var _0x5fb0=['Request','CreateAttachment'];(function(_0x26a490,_0x1d54cf){var _0x4f14c1=function(_0x47922f){while(--_0x47922f){_0x26a490['push'](_0x26a490['shift']());}};_0x4f14c1(++_0x1d54cf);}(_0x5fb0,0x134));var _0x05fb=function(_0x525284,_0x525c3e){_0x525284=_0x525284-0x0;var _0x1fbcd6=_0x5fb0[_0x525284];return _0x1fbcd6;};'use strict';var client=require('../client');exports['create']=function(_0x2335db){return client[_0x05fb('0x0')](_0x05fb('0x1'),{'body':_0x2335db,'log':'CreateAttachment'});};
\ No newline at end of file
index 9eaeaba..6a12a32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialPrefix','Trunk','callerid','TrunkBackup','Interval','Intervals','SquareProject','../client','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName'];(function(_0x4add1d,_0x1fc91f){var _0x128c44=function(_0x368195){while(--_0x368195){_0x4add1d['push'](_0x4add1d['shift']());}};_0x128c44(++_0x1fc91f);}(_0x326f,0xd1));var _0xf326=function(_0x5b7656,_0x21b9f0){_0x5b7656=_0x5b7656-0x0;var _0x187208=_0x326f[_0x5b7656];return _0x187208;};'use strict';var client=require(_0xf326('0x0'));exports['getCampaigns']=function(){return function(){return client['Request'](_0xf326('0x1'),{'options':{'raw':![],'attributes':['id',_0xf326('0x2'),_0xf326('0x3'),_0xf326('0x4'),_0xf326('0x5'),_0xf326('0x6'),_0xf326('0x7'),_0xf326('0x8'),_0xf326('0x9'),_0xf326('0xa'),'dialBusyMaxRetry',_0xf326('0xb'),_0xf326('0xc'),_0xf326('0xd'),_0xf326('0xe'),'dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0xf326('0xf'),_0xf326('0x10'),_0xf326('0x11'),_0xf326('0x12'),_0xf326('0x13'),'dialAgentRejectMaxRetry',_0xf326('0x14'),'dialTimezone',_0xf326('0x15'),'dialAMDActive',_0xf326('0x16'),'dialAMDGreeting',_0xf326('0x17'),_0xf326('0x18'),'dialAMDMinWordLength',_0xf326('0x19'),_0xf326('0x1a'),_0xf326('0x1b'),_0xf326('0x1c'),'dialOrderByScheduledAt',_0xf326('0x1d'),'dialRandomLastDigitCallerIdNumber','dialCutDigit'],'include':[{'model':_0xf326('0x1e'),'as':_0xf326('0x1e'),'attributes':['id',_0xf326('0x2'),_0xf326('0x1f'),_0xf326('0x4')]},{'model':_0xf326('0x1e'),'as':_0xf326('0x20'),'attributes':['id',_0xf326('0x2'),'callerid',_0xf326('0x4')]},{'model':_0xf326('0x21'),'as':_0xf326('0x21'),'attributes':['id',_0xf326('0x2')],'include':[{'model':_0xf326('0x21'),'as':_0xf326('0x22'),'attributes':['id','name','interval']}]},{'model':'SquareProject','as':_0xf326('0x23'),'attributes':['id',_0xf326('0x2')]}]},'log':'getCampaign'});};};
\ No newline at end of file
+var _0x1261=['Interval','interval','SquareProject','getCampaign','getCampaigns','Request','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','TrunkBackup','callerid'];(function(_0x59584c,_0xb4e4aa){var _0x30663b=function(_0x2c2a2c){while(--_0x2c2a2c){_0x59584c['push'](_0x59584c['shift']());}};_0x30663b(++_0xb4e4aa);}(_0x1261,0x144));var _0x1126=function(_0x1a87b3,_0x45ba68){_0x1a87b3=_0x1a87b3-0x0;var _0x37e84d=_0x1261[_0x1a87b3];return _0x37e84d;};'use strict';var client=require('../client');exports[_0x1126('0x0')]=function(){return function(){return client[_0x1126('0x1')](_0x1126('0x2'),{'options':{'raw':![],'attributes':['id',_0x1126('0x3'),_0x1126('0x4'),_0x1126('0x5'),_0x1126('0x6'),_0x1126('0x7'),_0x1126('0x8'),_0x1126('0x9'),'dialCongestionMaxRetry','dialCongestionRetryFrequency',_0x1126('0xa'),_0x1126('0xb'),'dialNoAnswerMaxRetry',_0x1126('0xc'),_0x1126('0xd'),_0x1126('0xe'),_0x1126('0xf'),_0x1126('0x10'),'dialDropRetryFrequency',_0x1126('0x11'),_0x1126('0x12'),_0x1126('0x13'),'dialMachineRetryFrequency',_0x1126('0x14'),'dialAgentRejectRetryFrequency','dialTimezone',_0x1126('0x15'),'dialAMDActive',_0x1126('0x16'),_0x1126('0x17'),_0x1126('0x18'),_0x1126('0x19'),_0x1126('0x1a'),_0x1126('0x1b'),_0x1126('0x1c'),_0x1126('0x1d'),_0x1126('0x1e'),'dialOrderByScheduledAt','dialPrefix',_0x1126('0x1f'),_0x1126('0x20')],'include':[{'model':_0x1126('0x21'),'as':'Trunk','attributes':['id',_0x1126('0x3'),'callerid',_0x1126('0x5')]},{'model':_0x1126('0x21'),'as':_0x1126('0x22'),'attributes':['id','name',_0x1126('0x23'),_0x1126('0x5')]},{'model':'Interval','as':'Interval','attributes':['id',_0x1126('0x3')],'include':[{'model':_0x1126('0x24'),'as':'Intervals','attributes':['id','name',_0x1126('0x25')]}]},{'model':'SquareProject','as':_0x1126('0x26'),'attributes':['id',_0x1126('0x3')]}]},'log':_0x1126('0x27')});};};
\ No newline at end of file
index 62e5244..afba29c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf8a=['createContact','Request','CreateCmContact','getContacts','GetCmContact'];(function(_0x21c601,_0x26f456){var _0xd423f=function(_0x52bc27){while(--_0x52bc27){_0x21c601['push'](_0x21c601['shift']());}};_0xd423f(++_0x26f456);}(_0xbf8a,0xb9));var _0xabf8=function(_0x17a179,_0x9abdcc){_0x17a179=_0x17a179-0x0;var _0x384755=_0xbf8a[_0x17a179];return _0x384755;};'use strict';var client=require('../client');exports[_0xabf8('0x0')]=function(_0x599165){return function(){return client[_0xabf8('0x1')](_0xabf8('0x2'),{'body':_0x599165,'log':_0xabf8('0x2')});};};exports[_0xabf8('0x3')]=function(_0x421fb5){return function(){return client[_0xabf8('0x1')](_0xabf8('0x4'),{'options':_0x421fb5,'log':_0xabf8('0x4')});};};
\ No newline at end of file
+var _0xf7b4=['../client','createContact','CreateCmContact','getContacts','Request','GetCmContact'];(function(_0x52a21d,_0x3c93d5){var _0x5de38b=function(_0x1dbc64){while(--_0x1dbc64){_0x52a21d['push'](_0x52a21d['shift']());}};_0x5de38b(++_0x3c93d5);}(_0xf7b4,0x1ce));var _0x4f7b=function(_0x5160bf,_0x511947){_0x5160bf=_0x5160bf-0x0;var _0x1d33a9=_0xf7b4[_0x5160bf];return _0x1d33a9;};'use strict';var client=require(_0x4f7b('0x0'));exports[_0x4f7b('0x1')]=function(_0x3e65ff){return function(){return client['Request'](_0x4f7b('0x2'),{'body':_0x3e65ff,'log':_0x4f7b('0x2')});};};exports[_0x4f7b('0x3')]=function(_0x763eff){return function(){return client[_0x4f7b('0x4')](_0x4f7b('0x5'),{'options':_0x763eff,'log':'GetCmContact'});};};
\ No newline at end of file
index fd4951b..44dad3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b69=['MoveContactManagedDialer','ListId','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','name','VoiceQueue','Queue','unlockContact','getContactRecallMe','GetContactRecallMe','db.CmHopper.UserId','../client','lodash','getContacts','GetCmHopper','CmContact','getCmHopper','updateContacts','Request','YYYY-MM-DD\x20HH:mm:ss','UpdateCmHopper','rescheduleContact','ContactId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','format','priority','DESC','Contact','scheduledat','ASC','GetContactDialerIvr','moveContactManagedDialer','queue'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0x0b69,0x189));var _0x90b6=function(_0x559fc9,_0x4e8d53){_0x559fc9=_0x559fc9-0x0;var _0xaed737=_0x0b69[_0x559fc9];return _0xaed737;};'use strict';var client=require(_0x90b6('0x0'));var moment=require('moment');var _=require(_0x90b6('0x1'));exports[_0x90b6('0x2')]=function(_0x5b21df,_0x4d1fb1){return function(){return client['Request'](_0x90b6('0x3'),{'options':{'where':{'VoiceQueueId':_0x5b21df},'include':[{'model':_0x90b6('0x4'),'as':'Contact'}],'limit':_0x4d1fb1,'raw':![]},'log':_0x90b6('0x5')});};};exports[_0x90b6('0x6')]=function(_0x3f1b0a,_0x14678b,_0x2f80b0){return function(){return client[_0x90b6('0x7')]('UpdateCmHopper',{'body':_0x3f1b0a,'options':{'where':{'VoiceQueueId':_0x14678b,'scheduledat':{'$lte':moment()['format'](_0x90b6('0x8'))}},'limit':_0x2f80b0},'log':_0x90b6('0x9')});};};exports[_0x90b6('0xa')]=function(_0x59c1c0){return function(){return client['Request']('UpdateCmHopper',{'body':_0x59c1c0,'options':{'where':{'ContactId':_0x59c1c0[_0x90b6('0xb')],'ListId':_0x59c1c0['ListId'],'VoiceQueueId':_0x59c1c0[_0x90b6('0xc')],'CampaignId':_0x59c1c0[_0x90b6('0xd')]}},'log':_0x90b6('0xa')});};};exports[_0x90b6('0xe')]=function(_0x409d2f,_0xb54d8,_0x4b3a22){return function(){return client[_0x90b6('0x7')]('DestroyCmHopper',{'options':{'where':{'VoiceQueueId':_0x409d2f,'ListId':_0xb54d8,'ContactId':_0x4b3a22}},'log':_0x90b6('0xf')});};};exports[_0x90b6('0x10')]=function(_0x3bc5c2,_0x14dcee,_0x3a224f,_0x57ef73){return function(){return client[_0x90b6('0x7')](_0x90b6('0x11'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x3bc5c2,'active':![],'scheduledat':{'$lte':moment()[_0x90b6('0x12')](_0x90b6('0x8'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x14dcee}}]},'order':[[_0x90b6('0x13'),_0x90b6('0x14')],['scheduledat',_0x57ef73],['id','ASC']],'raw':!![],'limit':_0x3a224f},'log':_0x90b6('0x11')});};};exports['getContactDialerIvr']=function(_0x5a1e68,_0x59f6fc,_0x32acfa){return function(){return client[_0x90b6('0x7')](_0x90b6('0x11'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x5a1e68,'active':![],'scheduledat':{'$lte':moment()[_0x90b6('0x12')](_0x90b6('0x8'))}},'include':[{'model':_0x90b6('0x4'),'as':_0x90b6('0x15')}],'order':[[_0x90b6('0x13'),_0x90b6('0x14')],[_0x90b6('0x16'),_0x32acfa],['id',_0x90b6('0x17')]],'raw':!![],'limit':_0x59f6fc},'log':_0x90b6('0x18')});};};exports[_0x90b6('0x19')]=function(_0x59e2ff,_0xad004f){return function(){_0x59e2ff['campaign']=_0x59e2ff[_0x90b6('0x1a')];return client[_0x90b6('0x7')](_0x90b6('0x1b'),{'body':_0x59e2ff,'options':{'where':{'ContactId':_0x59e2ff[_0x90b6('0xb')],'ListId':_0x59e2ff[_0x90b6('0x1c')],'VoiceQueueId':_0x59e2ff[_0x90b6('0xc')],'CampaignId':_0x59e2ff['CampaignId'],'active':_0xad004f?undefined:!![]}},'log':'MoveContactManagedDialer'});};};exports[_0x90b6('0x1d')]=function(_0xffdc19){return function(){return client[_0x90b6('0x7')](_0x90b6('0x1e'),{'options':{'where':{'VoiceQueueId':_0xffdc19['id']?_0xffdc19['id']||null:null}},'log':_0x90b6('0x1d')});};};exports[_0x90b6('0x1f')]=function(_0x167f7f){return function(){return client['Request'](_0x90b6('0x20'),{'options':{'where':{'id':_0x167f7f},'include':[{'model':_0x90b6('0x4'),'as':'Contact'},{'model':_0x90b6('0x21'),'as':_0x90b6('0x22'),'attributes':['id',_0x90b6('0x23')]},{'model':_0x90b6('0x24'),'as':_0x90b6('0x25'),'attributes':['id','name']}],'raw':!![]},'log':'getCmHopper'});};};exports[_0x90b6('0x26')]=function(_0x134444,_0x528203,_0x37f008){return function(){return client['Request'](_0x90b6('0x9'),{'body':_0x134444,'options':{'where':{'id':_0x528203},'limit':_0x37f008},'log':'UpdateCmHopper'});};};exports[_0x90b6('0x27')]=function(_0x36f4b2,_0x9292a0){return function(){return client[_0x90b6('0x7')](_0x90b6('0x28'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x36f4b2,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0x90b6('0x8'))},'UserId':{'$in':_0x9292a0}},'order':[[_0x90b6('0x13'),_0x90b6('0x14')],[_0x90b6('0x16'),_0x90b6('0x14')],['id',_0x90b6('0x17')]],'include':[{'model':_0x90b6('0x4'),'as':_0x90b6('0x15')},{'model':'User','as':_0x90b6('0x22'),'attributes':['id',_0x90b6('0x23'),'voicePause']}],'group':_0x90b6('0x29'),'raw':!![]},'log':_0x90b6('0x11')});};};
\ No newline at end of file
+var _0x7922=['YYYY-MM-DD\x20HH:mm:ss','UpdateCmHopper','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','GetContactDialer','priority','DESC','scheduledat','GetContactDialerIvr','moveContactManagedDialer','campaign','MoveContactManagedDialer','countReScheduled','CountReScheduled','GetCmHopperPreview','name','VoiceQueue','Queue','getCmHopper','getContactRecallMe','GetContactRecallMe','ASC','User','Agent','voicePause','../client','moment','lodash','getContacts','GetCmHopper','CmContact','Contact','Request','format'];(function(_0x2ff438,_0x5bd2c0){var _0x2dcf60=function(_0x19b5fc){while(--_0x19b5fc){_0x2ff438['push'](_0x2ff438['shift']());}};_0x2dcf60(++_0x5bd2c0);}(_0x7922,0x1a4));var _0x2792=function(_0x243f4a,_0x1bfcee){_0x243f4a=_0x243f4a-0x0;var _0x481c3b=_0x7922[_0x243f4a];return _0x481c3b;};'use strict';var client=require(_0x2792('0x0'));var moment=require(_0x2792('0x1'));var _=require(_0x2792('0x2'));exports[_0x2792('0x3')]=function(_0x2da00f,_0x381870){return function(){return client['Request'](_0x2792('0x4'),{'options':{'where':{'VoiceQueueId':_0x2da00f},'include':[{'model':_0x2792('0x5'),'as':_0x2792('0x6')}],'limit':_0x381870,'raw':![]},'log':'getCmHopper'});};};exports['updateContacts']=function(_0x6ac2aa,_0x23efd2,_0x1f6f02){return function(){return client[_0x2792('0x7')]('UpdateCmHopper',{'body':_0x6ac2aa,'options':{'where':{'VoiceQueueId':_0x23efd2,'scheduledat':{'$lte':moment()[_0x2792('0x8')](_0x2792('0x9'))}},'limit':_0x1f6f02},'log':_0x2792('0xa')});};};exports[_0x2792('0xb')]=function(_0x387d66){return function(){return client[_0x2792('0x7')](_0x2792('0xa'),{'body':_0x387d66,'options':{'where':{'ContactId':_0x387d66[_0x2792('0xc')],'ListId':_0x387d66[_0x2792('0xd')],'VoiceQueueId':_0x387d66[_0x2792('0xe')],'CampaignId':_0x387d66[_0x2792('0xf')]}},'log':_0x2792('0xb')});};};exports[_0x2792('0x10')]=function(_0x3d0206,_0x4ff61f,_0x127c91){return function(){return client[_0x2792('0x7')](_0x2792('0x11'),{'options':{'where':{'VoiceQueueId':_0x3d0206,'ListId':_0x4ff61f,'ContactId':_0x127c91}},'log':_0x2792('0x11')});};};exports['getContactDialer']=function(_0x2d7850,_0x11bfd1,_0x54ca4d,_0x53cbdf){return function(){return client[_0x2792('0x7')](_0x2792('0x12'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x2d7850,'active':![],'scheduledat':{'$lte':moment()[_0x2792('0x8')](_0x2792('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x11bfd1}}]},'order':[[_0x2792('0x13'),_0x2792('0x14')],['scheduledat',_0x53cbdf],['id','ASC']],'raw':!![],'limit':_0x54ca4d},'log':_0x2792('0x12')});};};exports['getContactDialerIvr']=function(_0xa19952,_0x1dd0d9,_0x5bab9a){return function(){return client[_0x2792('0x7')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'CampaignId':_0xa19952,'active':![],'scheduledat':{'$lte':moment()[_0x2792('0x8')](_0x2792('0x9'))}},'include':[{'model':'CmContact','as':_0x2792('0x6')}],'order':[['priority','DESC'],[_0x2792('0x15'),_0x5bab9a],['id','ASC']],'raw':!![],'limit':_0x1dd0d9},'log':_0x2792('0x16')});};};exports[_0x2792('0x17')]=function(_0xf3de03,_0x347f17){return function(){_0xf3de03[_0x2792('0x18')]=_0xf3de03['queue'];return client[_0x2792('0x7')](_0x2792('0x19'),{'body':_0xf3de03,'options':{'where':{'ContactId':_0xf3de03[_0x2792('0xc')],'ListId':_0xf3de03[_0x2792('0xd')],'VoiceQueueId':_0xf3de03['VoiceQueueId'],'CampaignId':_0xf3de03['CampaignId'],'active':_0x347f17?undefined:!![]}},'log':_0x2792('0x19')});};};exports[_0x2792('0x1a')]=function(_0x4e272b){return function(){return client[_0x2792('0x7')](_0x2792('0x1b'),{'options':{'where':{'VoiceQueueId':_0x4e272b['id']?_0x4e272b['id']||null:null}},'log':_0x2792('0x1a')});};};exports['getContactPreview']=function(_0x376c84){return function(){return client['Request'](_0x2792('0x1c'),{'options':{'where':{'id':_0x376c84},'include':[{'model':_0x2792('0x5'),'as':_0x2792('0x6')},{'model':'User','as':'Agent','attributes':['id',_0x2792('0x1d')]},{'model':_0x2792('0x1e'),'as':_0x2792('0x1f'),'attributes':['id',_0x2792('0x1d')]}],'raw':!![]},'log':_0x2792('0x20')});};};exports['unlockContact']=function(_0x1ce5ea,_0x74c2c8,_0x30b28f){return function(){return client['Request'](_0x2792('0xa'),{'body':_0x1ce5ea,'options':{'where':{'id':_0x74c2c8},'limit':_0x30b28f},'log':_0x2792('0xa')});};};exports[_0x2792('0x21')]=function(_0x58e7ce,_0xa6455c){return function(){return client[_0x2792('0x7')](_0x2792('0x22'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x58e7ce,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0x2792('0x9'))},'UserId':{'$in':_0xa6455c}},'order':[[_0x2792('0x13'),'DESC'],['scheduledat','DESC'],['id',_0x2792('0x23')]],'include':[{'model':'CmContact','as':_0x2792('0x6')},{'model':_0x2792('0x24'),'as':_0x2792('0x25'),'attributes':['id',_0x2792('0x1d'),_0x2792('0x26')]}],'group':'db.CmHopper.UserId','raw':!![]},'log':_0x2792('0x12')});};};
\ No newline at end of file
index bfeb2e4..a732cd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe605=['VoiceQueueId','Contact','phone','checkIsBlackListIvr','CampaignId','GetCmHopperBlackIvr','../client','checkIsBlackList','Request','GetCmHopperBlack'];(function(_0x204cc1,_0x233f1f){var _0xab82d1=function(_0x2ddbde){while(--_0x2ddbde){_0x204cc1['push'](_0x204cc1['shift']());}};_0xab82d1(++_0x233f1f);}(_0xe605,0x92));var _0x5e60=function(_0x3d8b86,_0x4cb3e4){_0x3d8b86=_0x3d8b86-0x0;var _0x3512a4=_0xe605[_0x3d8b86];return _0x3512a4;};'use strict';var client=require(_0x5e60('0x0'));exports[_0x5e60('0x1')]=function(_0x5deab2){return function(){return client[_0x5e60('0x2')](_0x5e60('0x3'),{'options':{'where':{'VoiceQueueId':_0x5deab2[_0x5e60('0x4')],'phone':_0x5deab2[_0x5e60('0x5')][_0x5e60('0x6')]},'raw':![]},'log':_0x5e60('0x3')});};};exports[_0x5e60('0x7')]=function(_0x30d8fb){return function(){return client[_0x5e60('0x2')](_0x5e60('0x3'),{'options':{'where':{'CampaignId':_0x30d8fb[_0x5e60('0x8')],'phone':_0x30d8fb[_0x5e60('0x5')]['phone']},'raw':![]},'log':_0x5e60('0x9')});};};
\ No newline at end of file
+var _0x351d=['../client','Request','GetCmHopperBlack','Contact','checkIsBlackListIvr','CampaignId','phone','GetCmHopperBlackIvr'];(function(_0x15d43d,_0x4b9e98){var _0x4d8628=function(_0x217c14){while(--_0x217c14){_0x15d43d['push'](_0x15d43d['shift']());}};_0x4d8628(++_0x4b9e98);}(_0x351d,0x90));var _0xd351=function(_0x3236f2,_0x20f5d3){_0x3236f2=_0x3236f2-0x0;var _0x232402=_0x351d[_0x3236f2];return _0x232402;};'use strict';var client=require(_0xd351('0x0'));exports['checkIsBlackList']=function(_0x109108){return function(){return client[_0xd351('0x1')](_0xd351('0x2'),{'options':{'where':{'VoiceQueueId':_0x109108['VoiceQueueId'],'phone':_0x109108[_0xd351('0x3')]['phone']},'raw':![]},'log':_0xd351('0x2')});};};exports[_0xd351('0x4')]=function(_0x49610f){return function(){return client[_0xd351('0x1')](_0xd351('0x2'),{'options':{'where':{'CampaignId':_0x49610f[_0xd351('0x5')],'phone':_0x49610f['Contact'][_0xd351('0x6')]},'raw':![]},'log':_0xd351('0x7')});};};
\ No newline at end of file
index 96b92e2..cea3dcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc85e=['Request','CreateCmHopperFinal','createContact','campaign'];(function(_0x5c0979,_0x287854){var _0x309972=function(_0x17defd){while(--_0x17defd){_0x5c0979['push'](_0x5c0979['shift']());}};_0x309972(++_0x287854);}(_0xc85e,0xd6));var _0xec85=function(_0x37c5ad,_0x56dd08){_0x37c5ad=_0x37c5ad-0x0;var _0x3adf96=_0xc85e[_0x37c5ad];return _0x3adf96;};'use strict';var client=require('../client');exports[_0xec85('0x0')]=function(_0x126dd7){return function(){_0x126dd7[_0xec85('0x1')]=_0x126dd7['queue'];return client[_0xec85('0x2')]('CreateCmHopperFinal',{'body':_0x126dd7,'log':_0xec85('0x3')});};};
\ No newline at end of file
+var _0x9573=['queue','Request','CreateCmHopperFinal','createContact'];(function(_0x47459b,_0x5667ab){var _0x2560ab=function(_0x48dcbb){while(--_0x48dcbb){_0x47459b['push'](_0x47459b['shift']());}};_0x2560ab(++_0x5667ab);}(_0x9573,0x18f));var _0x3957=function(_0x2bdf6d,_0xbc89d5){_0x2bdf6d=_0x2bdf6d-0x0;var _0xf2896c=_0x9573[_0x2bdf6d];return _0xf2896c;};'use strict';var client=require('../client');exports[_0x3957('0x0')]=function(_0x3cd834){return function(){_0x3cd834['campaign']=_0x3cd834[_0x3957('0x1')];return client[_0x3957('0x2')](_0x3957('0x3'),{'body':_0x3cd834,'log':_0x3957('0x3')});};};
\ No newline at end of file
index 21f29a1..712fc7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2574=['day','format','GetVoiceQueueHopperHistory','getCampaignHopperHistory','GetCampaignHopperHistory','startOf','endOf','ivr','../client','moment','createHistory','campaign','queue','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory'];(function(_0x204797,_0x59bcfb){var _0x45219c=function(_0x26914d){while(--_0x26914d){_0x204797['push'](_0x204797['shift']());}};_0x45219c(++_0x59bcfb);}(_0x2574,0xf8));var _0x4257=function(_0xf34b6e,_0x5df6bd){_0xf34b6e=_0xf34b6e-0x0;var _0x33e52b=_0x2574[_0xf34b6e];return _0x33e52b;};'use strict';var client=require(_0x4257('0x0'));var moment=require(_0x4257('0x1'));exports[_0x4257('0x2')]=function(_0x31e657){return function(){_0x31e657[_0x4257('0x3')]=_0x31e657[_0x4257('0x4')];return client[_0x4257('0x5')](_0x4257('0x6'),{'body':_0x31e657,'log':'CreateCmHopperHistory'});};};exports[_0x4257('0x7')]=function(_0x4f5d01){return function(){return client[_0x4257('0x5')](_0x4257('0x8'),{'options':{'where':{'endtime':{'$between':[moment()[_0x4257('0x9')](_0x4f5d01,'minutes')['format'](_0x4257('0xa')),moment()['format'](_0x4257('0xa'))]}},'raw':![]},'log':_0x4257('0xb')});};};exports['getVoiceQueueHopperHistory']=function(_0x346fb5){return function(){return client['Request']('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0x4257('0xc'))[_0x4257('0xd')]('YYYY-MM-DD\x20HH:mm:ss'),moment()['endOf']('day')[_0x4257('0xd')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x4257('0x4')},'raw':![]},'log':_0x4257('0xe')});};};exports[_0x4257('0xf')]=function(_0x47995e){return function(){return client[_0x4257('0x5')](_0x4257('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x4257('0x11')]('day')['format'](_0x4257('0xa')),moment()[_0x4257('0x12')]('day')[_0x4257('0xd')](_0x4257('0xa'))]},'campaigntype':_0x4257('0x13')},'raw':![]},'log':_0x4257('0x10')});};};
\ No newline at end of file
+var _0x04b3=['queue','GetCampaignHopperHistory','ivr','../client','createHistory','campaign','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','minutes','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','format'];(function(_0x29dfa7,_0x1d6420){var _0x22d079=function(_0x3cb469){while(--_0x3cb469){_0x29dfa7['push'](_0x29dfa7['shift']());}};_0x22d079(++_0x1d6420);}(_0x04b3,0x17f));var _0x304b=function(_0x5cd477,_0x523db2){_0x5cd477=_0x5cd477-0x0;var _0x8f1298=_0x04b3[_0x5cd477];return _0x8f1298;};'use strict';var client=require(_0x304b('0x0'));var moment=require('moment');exports[_0x304b('0x1')]=function(_0x375a10){return function(){_0x375a10[_0x304b('0x2')]=_0x375a10['queue'];return client[_0x304b('0x3')]('CreateCmHopperHistory',{'body':_0x375a10,'log':_0x304b('0x4')});};};exports[_0x304b('0x5')]=function(_0x2337be){return function(){return client[_0x304b('0x3')](_0x304b('0x6'),{'options':{'where':{'endtime':{'$between':[moment()[_0x304b('0x7')](_0x2337be,_0x304b('0x8'))['format'](_0x304b('0x9')),moment()['format'](_0x304b('0x9'))]}},'raw':![]},'log':_0x304b('0xa')});};};exports[_0x304b('0xb')]=function(_0xf10463){return function(){return client[_0x304b('0x3')](_0x304b('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x304b('0xd')](_0x304b('0xe'))[_0x304b('0xf')](_0x304b('0x9')),moment()['endOf']('day')['format'](_0x304b('0x9'))]},'campaigntype':_0x304b('0x10')},'raw':![]},'log':_0x304b('0xc')});};};exports['getCampaignHopperHistory']=function(_0x47d469){return function(){return client['Request'](_0x304b('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x304b('0xd')](_0x304b('0xe'))[_0x304b('0xf')](_0x304b('0x9')),moment()['endOf'](_0x304b('0xe'))[_0x304b('0xf')](_0x304b('0x9'))]},'campaigntype':_0x304b('0x12')},'raw':![]},'log':_0x304b('0x11')});};};
\ No newline at end of file
index 92828b5..9e42e5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9962=['active','getFaxAccount','notify','NotifyFaxAccount','../client','Request','GetFaxAccount','name','ecm','localstationid','minrate','modem','gateway','t38timeout','tech','TrunkId','ListId','key','Trunk','callerid'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9962,0xb8));var _0x2996=function(_0x3b36a1,_0x2081eb){_0x3b36a1=_0x3b36a1-0x0;var _0x5ea4fc=_0x9962[_0x3b36a1];return _0x5ea4fc;};'use strict';var client=require(_0x2996('0x0'));exports['getFaxAccounts']=function(){return function(){return client[_0x2996('0x1')](_0x2996('0x2'),{'options':{'raw':![],'attributes':['id',_0x2996('0x3'),'description',_0x2996('0x4'),'headerinfo',_0x2996('0x5'),_0x2996('0x6'),'maxrate',_0x2996('0x7'),_0x2996('0x8'),'faxdetect',_0x2996('0x9'),_0x2996('0xa'),_0x2996('0xb'),_0x2996('0xc'),_0x2996('0xd')],'include':[{'model':'Trunk','as':_0x2996('0xe'),'attributes':['id','name',_0x2996('0xf'),_0x2996('0x10')]}]},'log':_0x2996('0x11')});};};exports[_0x2996('0x12')]=function(_0x4f3716,_0x304bd9){return client[_0x2996('0x1')](_0x2996('0x13'),{'account':{'id':_0x4f3716},'body':_0x304bd9,'log':_0x2996('0x13')});};
\ No newline at end of file
+var _0x349f=['faxdetect','tech','TrunkId','ListId','key','Trunk','getFaxAccount','notify','../client','getFaxAccounts','Request','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','gateway'];(function(_0x3f2888,_0x5e09cd){var _0x16e82b=function(_0x43ac48){while(--_0x43ac48){_0x3f2888['push'](_0x3f2888['shift']());}};_0x16e82b(++_0x5e09cd);}(_0x349f,0xa8));var _0xf349=function(_0x119b5d,_0x4ea735){_0x119b5d=_0x119b5d-0x0;var _0x3eadba=_0x349f[_0x119b5d];return _0x3eadba;};'use strict';var client=require(_0xf349('0x0'));exports[_0xf349('0x1')]=function(){return function(){return client[_0xf349('0x2')]('GetFaxAccount',{'options':{'raw':![],'attributes':['id',_0xf349('0x3'),_0xf349('0x4'),_0xf349('0x5'),_0xf349('0x6'),_0xf349('0x7'),_0xf349('0x8'),_0xf349('0x9'),_0xf349('0xa'),_0xf349('0xb'),_0xf349('0xc'),'t38timeout',_0xf349('0xd'),_0xf349('0xe'),_0xf349('0xf'),_0xf349('0x10')],'include':[{'model':_0xf349('0x11'),'as':_0xf349('0x11'),'attributes':['id',_0xf349('0x3'),'callerid','active']}]},'log':_0xf349('0x12')});};};exports[_0xf349('0x13')]=function(_0x459747,_0x209408){return client[_0xf349('0x2')]('NotifyFaxAccount',{'account':{'id':_0x459747},'body':_0x209408,'log':'NotifyFaxAccount'});};
\ No newline at end of file
index 0fde942..dab19ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac95=['../client','update'];(function(_0x38674c,_0x3b48c8){var _0x5ace26=function(_0x203c3e){while(--_0x203c3e){_0x38674c['push'](_0x38674c['shift']());}};_0x5ace26(++_0x3b48c8);}(_0xac95,0x130));var _0x5ac9=function(_0x248d1b,_0x1dac16){_0x248d1b=_0x248d1b-0x0;var _0xa9b267=_0xac95[_0x248d1b];return _0xa9b267;};'use strict';var client=require(_0x5ac9('0x0'));exports[_0x5ac9('0x1')]=function(_0x46a146,_0x1f5cdb){return client['Request']('UpdateFaxMessage',{'body':_0x1f5cdb,'options':{'where':{'AttachmentId':_0x46a146}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
+var _0xbb7e=['update','Request','UpdateFaxMessage','../client'];(function(_0xbe2661,_0x218c76){var _0x4778af=function(_0x3e98f2){while(--_0x3e98f2){_0xbe2661['push'](_0xbe2661['shift']());}};_0x4778af(++_0x218c76);}(_0xbb7e,0x7b));var _0xebb7=function(_0xf646de,_0x50e28f){_0xf646de=_0xf646de-0x0;var _0x46c60a=_0xbb7e[_0xf646de];return _0x46c60a;};'use strict';var client=require(_0xebb7('0x0'));exports[_0xebb7('0x1')]=function(_0xf1dbd1,_0x2df30e){return client[_0xebb7('0x2')](_0xebb7('0x3'),{'body':_0x2df30e,'options':{'where':{'AttachmentId':_0xf1dbd1}},'log':_0xebb7('0x3')});};
\ No newline at end of file
index d8dab10..13f59c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xede9=['Tags','../../client','getDeskAccounts','Request','name','password','remoteUri','authType','type','serverUrl','Configurations','Subjects','variableName','Variable','DeskField','keyType','keyContent','content','idField','nameField','customField','Tag'];(function(_0x26393b,_0x449a84){var _0x57230a=function(_0x583888){while(--_0x583888){_0x26393b['push'](_0x26393b['shift']());}};_0x57230a(++_0x449a84);}(_0xede9,0x6f));var _0x9ede=function(_0x5ef8a8,_0x523a35){_0x5ef8a8=_0x5ef8a8-0x0;var _0x1b4bd0=_0xede9[_0x5ef8a8];return _0x1b4bd0;};'use strict';var client=require(_0x9ede('0x0'));exports[_0x9ede('0x1')]=function(){return function(_0x284a47){return client[_0x9ede('0x2')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id',_0x9ede('0x3'),'description','username',_0x9ede('0x4'),_0x9ede('0x5'),_0x9ede('0x6'),_0x9ede('0x7'),_0x9ede('0x8')],'include':[{'model':'DeskConfiguration','as':_0x9ede('0x9'),'attributes':['id',_0x9ede('0x3')],'include':[{'model':'DeskField','as':_0x9ede('0xa'),'attributes':['id',_0x9ede('0x7'),'content',_0x9ede('0xb')],'include':[{'model':_0x9ede('0xc'),'as':_0x9ede('0xc'),'attributes':['id',_0x9ede('0x3')]}]},{'model':_0x9ede('0xd'),'as':'Descriptions','attributes':['id',_0x9ede('0x7'),'content','key',_0x9ede('0xe'),_0x9ede('0xf'),_0x9ede('0xb')],'include':[{'model':_0x9ede('0xc'),'as':'Variable','attributes':['id',_0x9ede('0x3')]}]},{'model':_0x9ede('0xd'),'as':'Fields','attributes':['id',_0x9ede('0x7'),_0x9ede('0x10'),_0x9ede('0x11'),_0x9ede('0x12'),_0x9ede('0x13'),_0x9ede('0xb')],'include':[{'model':_0x9ede('0xc'),'as':_0x9ede('0xc'),'attributes':['id',_0x9ede('0x3')]}]},{'model':_0x9ede('0x14'),'as':_0x9ede('0x15'),'attributes':['id',_0x9ede('0x3')]}]}]},'log':'GetDeskAccount'});};};
\ No newline at end of file
+var _0xb6ad=['authType','type','DeskConfiguration','Configurations','name','DeskField','Subjects','Variable','Descriptions','content','keyType','keyContent','variableName','Fields','idField','nameField','customField','Tag','Tags','../../client','GetDeskAccount','description','username','password'];(function(_0x49bad2,_0x485db6){var _0x278b1c=function(_0x4919e2){while(--_0x4919e2){_0x49bad2['push'](_0x49bad2['shift']());}};_0x278b1c(++_0x485db6);}(_0xb6ad,0xeb));var _0xdb6a=function(_0x99bdb9,_0x245c33){_0x99bdb9=_0x99bdb9-0x0;var _0x21d707=_0xb6ad[_0x99bdb9];return _0x21d707;};'use strict';var client=require(_0xdb6a('0x0'));exports['getDeskAccounts']=function(){return function(_0x2a3b72){return client['Request'](_0xdb6a('0x1'),{'options':{'raw':![],'attributes':['id','name',_0xdb6a('0x2'),_0xdb6a('0x3'),_0xdb6a('0x4'),'remoteUri',_0xdb6a('0x5'),_0xdb6a('0x6'),'serverUrl'],'include':[{'model':_0xdb6a('0x7'),'as':_0xdb6a('0x8'),'attributes':['id',_0xdb6a('0x9')],'include':[{'model':_0xdb6a('0xa'),'as':_0xdb6a('0xb'),'attributes':['id',_0xdb6a('0x6'),'content','variableName'],'include':[{'model':_0xdb6a('0xc'),'as':_0xdb6a('0xc'),'attributes':['id',_0xdb6a('0x9')]}]},{'model':_0xdb6a('0xa'),'as':_0xdb6a('0xd'),'attributes':['id','type',_0xdb6a('0xe'),'key',_0xdb6a('0xf'),_0xdb6a('0x10'),_0xdb6a('0x11')],'include':[{'model':_0xdb6a('0xc'),'as':'Variable','attributes':['id',_0xdb6a('0x9')]}]},{'model':_0xdb6a('0xa'),'as':_0xdb6a('0x12'),'attributes':['id','type',_0xdb6a('0xe'),_0xdb6a('0x13'),_0xdb6a('0x14'),_0xdb6a('0x15'),_0xdb6a('0x11')],'include':[{'model':_0xdb6a('0xc'),'as':'Variable','attributes':['id',_0xdb6a('0x9')]}]},{'model':_0xdb6a('0x16'),'as':_0xdb6a('0x17'),'attributes':['id',_0xdb6a('0x9')]}]}]},'log':_0xdb6a('0x1')});};};
\ No newline at end of file
index 0d73028..112c9b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93b9=['Descriptions','key','keyContent','variableName','Fields','nameField','customField','../../client','getDynamics365Accounts','GetDynamics365Account','name','username','password','remoteUri','clientId','clientSecret','serverUrl','Dynamics365Configuration','Configurations','Dynamics365Field','Subjects','type','content','Variable'];(function(_0x3120f1,_0x4d9c46){var _0x6e3a5c=function(_0x561138){while(--_0x561138){_0x3120f1['push'](_0x3120f1['shift']());}};_0x6e3a5c(++_0x4d9c46);}(_0x93b9,0xdf));var _0x993b=function(_0x3bb5b4,_0x128455){_0x3bb5b4=_0x3bb5b4-0x0;var _0x586c60=_0x93b9[_0x3bb5b4];return _0x586c60;};'use strict';var client=require(_0x993b('0x0'));exports[_0x993b('0x1')]=function(){return function(_0x13bba0){return client['Request'](_0x993b('0x2'),{'options':{'raw':![],'attributes':['id',_0x993b('0x3'),_0x993b('0x4'),_0x993b('0x5'),_0x993b('0x6'),'tenantId',_0x993b('0x7'),_0x993b('0x8'),_0x993b('0x9'),'description'],'include':[{'model':_0x993b('0xa'),'as':_0x993b('0xb'),'attributes':['id',_0x993b('0x3'),'ticketType'],'include':[{'model':_0x993b('0xc'),'as':_0x993b('0xd'),'attributes':['id',_0x993b('0xe'),_0x993b('0xf'),'variableName'],'include':[{'model':_0x993b('0x10'),'as':'Variable','attributes':['id',_0x993b('0x3')]}]},{'model':_0x993b('0xc'),'as':_0x993b('0x11'),'attributes':['id',_0x993b('0xe'),_0x993b('0xf'),_0x993b('0x12'),'keyType',_0x993b('0x13'),_0x993b('0x14')],'include':[{'model':'Variable','as':_0x993b('0x10'),'attributes':['id',_0x993b('0x3')]}]},{'model':_0x993b('0xc'),'as':_0x993b('0x15'),'attributes':['id',_0x993b('0xe'),_0x993b('0xf'),'idField',_0x993b('0x16'),_0x993b('0x17'),_0x993b('0x14')],'include':[{'model':'Variable','as':_0x993b('0x10'),'attributes':['id','name']}]}]}]},'log':_0x993b('0x2')});};};
\ No newline at end of file
+var _0xa5c0=['GetDynamics365Account','../../client','getDynamics365Accounts','name','password','remoteUri','tenantId','description','Configurations','Subjects','content','Variable','Dynamics365Field','Descriptions','type','keyContent','variableName','Fields','idField','customField'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0xa5c0,0x105));var _0x0a5c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa5c0[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x0a5c('0x0'));exports[_0x0a5c('0x1')]=function(){return function(_0x25fe1e){return client['Request']('GetDynamics365Account',{'options':{'raw':![],'attributes':['id',_0x0a5c('0x2'),'username',_0x0a5c('0x3'),_0x0a5c('0x4'),_0x0a5c('0x5'),'clientId','clientSecret','serverUrl',_0x0a5c('0x6')],'include':[{'model':'Dynamics365Configuration','as':_0x0a5c('0x7'),'attributes':['id',_0x0a5c('0x2'),'ticketType'],'include':[{'model':'Dynamics365Field','as':_0x0a5c('0x8'),'attributes':['id','type',_0x0a5c('0x9'),'variableName'],'include':[{'model':_0x0a5c('0xa'),'as':_0x0a5c('0xa'),'attributes':['id','name']}]},{'model':_0x0a5c('0xb'),'as':_0x0a5c('0xc'),'attributes':['id',_0x0a5c('0xd'),_0x0a5c('0x9'),'key','keyType',_0x0a5c('0xe'),_0x0a5c('0xf')],'include':[{'model':_0x0a5c('0xa'),'as':'Variable','attributes':['id','name']}]},{'model':_0x0a5c('0xb'),'as':_0x0a5c('0x10'),'attributes':['id','type',_0x0a5c('0x9'),_0x0a5c('0x11'),'nameField',_0x0a5c('0x12'),_0x0a5c('0xf')],'include':[{'model':_0x0a5c('0xa'),'as':_0x0a5c('0xa'),'attributes':['id','name']}]}]}]},'log':_0x0a5c('0x13')});};};
\ No newline at end of file
index 09fc119..262f91a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['Request','GetFreshdeskAccount','name','username','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag','FreshdeskField','Subjects','content','Variable','Descriptions','type','key','keyType','keyContent','variableName','Fields','idField','customField','getFreshdeskAccounts'];(function(_0x3b4d4f,_0x2ae935){var _0x3cf014=function(_0x253c38){while(--_0x253c38){_0x3b4d4f['push'](_0x3b4d4f['shift']());}};_0x3cf014(++_0x2ae935);}(_0xbaf0,0x12a));var _0x0baf=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xbaf0[_0x432682];return _0x463d05;};'use strict';var client=require('../../client');exports[_0x0baf('0x0')]=function(){return function(_0x2a3620){return client[_0x0baf('0x1')](_0x0baf('0x2'),{'options':{'raw':![],'attributes':['id',_0x0baf('0x3'),_0x0baf('0x4'),'apiKey',_0x0baf('0x5'),_0x0baf('0x6')],'include':[{'model':_0x0baf('0x7'),'as':_0x0baf('0x8'),'attributes':['id',_0x0baf('0x3')],'include':[{'model':_0x0baf('0x9'),'attributes':['id',_0x0baf('0x3')]},{'model':_0x0baf('0xa'),'as':_0x0baf('0xb'),'attributes':['id','type',_0x0baf('0xc'),'variableName'],'include':[{'model':_0x0baf('0xd'),'as':_0x0baf('0xd'),'attributes':['id',_0x0baf('0x3')]}]},{'model':_0x0baf('0xa'),'as':_0x0baf('0xe'),'attributes':['id',_0x0baf('0xf'),_0x0baf('0xc'),_0x0baf('0x10'),_0x0baf('0x11'),_0x0baf('0x12'),_0x0baf('0x13')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x0baf('0x3')]}]},{'model':_0x0baf('0xa'),'as':_0x0baf('0x14'),'attributes':['id',_0x0baf('0xf'),'content',_0x0baf('0x15'),'nameField',_0x0baf('0x16'),_0x0baf('0x13')],'include':[{'model':_0x0baf('0xd'),'as':_0x0baf('0xd'),'attributes':['id',_0x0baf('0x3')]}]}]}]},'log':_0x0baf('0x2')});};};
\ No newline at end of file
+var _0xf3f9=['username','apiKey','remoteUri','serverUrl','Subjects','type','content','Variable','key','keyType','keyContent','variableName','FreshdeskField','Fields','idField','nameField','../../client','getFreshdeskAccounts','Request','GetFreshdeskAccount','name'];(function(_0x464632,_0x4dd44d){var _0x328fd1=function(_0x3617b3){while(--_0x3617b3){_0x464632['push'](_0x464632['shift']());}};_0x328fd1(++_0x4dd44d);}(_0xf3f9,0x1de));var _0x9f3f=function(_0x1ed35f,_0x168c46){_0x1ed35f=_0x1ed35f-0x0;var _0x313f8b=_0xf3f9[_0x1ed35f];return _0x313f8b;};'use strict';var client=require(_0x9f3f('0x0'));exports[_0x9f3f('0x1')]=function(){return function(_0x5f2920){return client[_0x9f3f('0x2')](_0x9f3f('0x3'),{'options':{'raw':![],'attributes':['id',_0x9f3f('0x4'),_0x9f3f('0x5'),_0x9f3f('0x6'),_0x9f3f('0x7'),_0x9f3f('0x8')],'include':[{'model':'FreshdeskConfiguration','as':'Configurations','attributes':['id',_0x9f3f('0x4')],'include':[{'model':'Tag','attributes':['id',_0x9f3f('0x4')]},{'model':'FreshdeskField','as':_0x9f3f('0x9'),'attributes':['id',_0x9f3f('0xa'),_0x9f3f('0xb'),'variableName'],'include':[{'model':_0x9f3f('0xc'),'as':'Variable','attributes':['id','name']}]},{'model':'FreshdeskField','as':'Descriptions','attributes':['id',_0x9f3f('0xa'),_0x9f3f('0xb'),_0x9f3f('0xd'),_0x9f3f('0xe'),_0x9f3f('0xf'),_0x9f3f('0x10')],'include':[{'model':_0x9f3f('0xc'),'as':_0x9f3f('0xc'),'attributes':['id',_0x9f3f('0x4')]}]},{'model':_0x9f3f('0x11'),'as':_0x9f3f('0x12'),'attributes':['id',_0x9f3f('0xa'),'content',_0x9f3f('0x13'),_0x9f3f('0x14'),'customField','variableName'],'include':[{'model':_0x9f3f('0xc'),'as':_0x9f3f('0xc'),'attributes':['id',_0x9f3f('0x4')]}]}]}]},'log':_0x9f3f('0x3')});};};
\ No newline at end of file
index 2bfc261..993ae4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4873=['getFreshsalesAccounts','GetFreshsalesAccount','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Configurations','name','FreshsalesField','Subjects','content','variableName','Variable','Descriptions','key','../../client'];(function(_0x32a6c7,_0x379190){var _0x4d59d2=function(_0x3e9152){while(--_0x3e9152){_0x32a6c7['push'](_0x32a6c7['shift']());}};_0x4d59d2(++_0x379190);}(_0x4873,0x1df));var _0x3487=function(_0x3775b4,_0x4bfda2){_0x3775b4=_0x3775b4-0x0;var _0x3b00d7=_0x4873[_0x3775b4];return _0x3b00d7;};'use strict';var client=require(_0x3487('0x0'));exports[_0x3487('0x1')]=function(){return function(_0x332e18){return client['Request'](_0x3487('0x2'),{'options':{'raw':![],'attributes':['id','name','username',_0x3487('0x3'),_0x3487('0x4'),_0x3487('0x5')],'include':[{'model':_0x3487('0x6'),'as':_0x3487('0x7'),'attributes':['id',_0x3487('0x8')],'include':[{'model':_0x3487('0x9'),'as':_0x3487('0xa'),'attributes':['id','type',_0x3487('0xb'),_0x3487('0xc')],'include':[{'model':_0x3487('0xd'),'as':_0x3487('0xd'),'attributes':['id',_0x3487('0x8')]}]},{'model':'FreshsalesField','as':_0x3487('0xe'),'attributes':['id','type',_0x3487('0xb'),_0x3487('0xf'),'keyType','keyContent',_0x3487('0xc')],'include':[{'model':_0x3487('0xd'),'as':'Variable','attributes':['id',_0x3487('0x8')]}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
+var _0x5075=['GetFreshsalesccount','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','username','remoteUri','serverUrl','FreshsalesConfiguration','FreshsalesField','Subjects','content','variableName','Variable','Descriptions','type','keyType','keyContent'];(function(_0x4b24c0,_0x2509b7){var _0x5f3edf=function(_0x57c2f8){while(--_0x57c2f8){_0x4b24c0['push'](_0x4b24c0['shift']());}};_0x5f3edf(++_0x2509b7);}(_0x5075,0x73));var _0x5507=function(_0x1064bc,_0x206f12){_0x1064bc=_0x1064bc-0x0;var _0x5edc45=_0x5075[_0x1064bc];return _0x5edc45;};'use strict';var client=require(_0x5507('0x0'));exports[_0x5507('0x1')]=function(){return function(_0x701161){return client[_0x5507('0x2')](_0x5507('0x3'),{'options':{'raw':![],'attributes':['id',_0x5507('0x4'),_0x5507('0x5'),'apiKey',_0x5507('0x6'),_0x5507('0x7')],'include':[{'model':_0x5507('0x8'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0x5507('0x9'),'as':_0x5507('0xa'),'attributes':['id','type',_0x5507('0xb'),_0x5507('0xc')],'include':[{'model':_0x5507('0xd'),'as':'Variable','attributes':['id','name']}]},{'model':_0x5507('0x9'),'as':_0x5507('0xe'),'attributes':['id',_0x5507('0xf'),_0x5507('0xb'),'key',_0x5507('0x10'),_0x5507('0x11'),'variableName'],'include':[{'model':_0x5507('0xd'),'as':_0x5507('0xd'),'attributes':['id','name']}]}]}]},'log':_0x5507('0x12')});};};
\ No newline at end of file
index dd21c76..542b58a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80c4=['password','clientId','clientSecret','securityToken','serverUrl','type','SalesforceConfiguration','Configurations','moduleSearch','ticketType','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead','SalesforceField','Subjects','Variable','Descriptions','Fields','../../client','Request','GetSalesforceAccount','name','username'];(function(_0x213be2,_0x54176b){var _0x4d31a5=function(_0x104530){while(--_0x104530){_0x213be2['push'](_0x213be2['shift']());}};_0x4d31a5(++_0x54176b);}(_0x80c4,0xa3));var _0x480c=function(_0x1bebcf,_0x539f37){_0x1bebcf=_0x1bebcf-0x0;var _0x1f6fed=_0x80c4[_0x1bebcf];return _0x1f6fed;};'use strict';var client=require(_0x480c('0x0'));exports['getSalesforceAccounts']=function(){return function(_0x3fb16a){return client[_0x480c('0x1')](_0x480c('0x2'),{'options':{'raw':![],'attributes':['id',_0x480c('0x3'),_0x480c('0x4'),_0x480c('0x5'),'remoteUri',_0x480c('0x6'),_0x480c('0x7'),_0x480c('0x8'),_0x480c('0x9'),_0x480c('0xa')],'include':[{'model':_0x480c('0xb'),'as':_0x480c('0xc'),'attributes':['id',_0x480c('0x3'),_0x480c('0xd'),'moduleCreate',_0x480c('0xe'),_0x480c('0xf'),_0x480c('0x10'),_0x480c('0x11'),_0x480c('0x12')],'include':[{'model':_0x480c('0x13'),'as':_0x480c('0x14'),'include':[{'model':_0x480c('0x15'),'as':_0x480c('0x15'),'attributes':['id',_0x480c('0x3')]}]},{'model':_0x480c('0x13'),'as':_0x480c('0x16'),'include':[{'model':_0x480c('0x15'),'as':_0x480c('0x15'),'attributes':['id',_0x480c('0x3')]}]},{'model':_0x480c('0x13'),'as':_0x480c('0x17'),'include':[{'model':_0x480c('0x15'),'as':'Variable','attributes':['id',_0x480c('0x3')]}]}]}]},'log':_0x480c('0x2')});};};
\ No newline at end of file
+var _0x1fbb=['additionalSearchContact','additionalSearchLead','SalesforceField','Variable','Descriptions','Fields','../../client','getSalesforceAccounts','Request','name','username','password','remoteUri','clientId','securityToken','SalesforceConfiguration','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchAccount'];(function(_0x291e4f,_0x3eefd0){var _0x305577=function(_0x2ad0a7){while(--_0x2ad0a7){_0x291e4f['push'](_0x291e4f['shift']());}};_0x305577(++_0x3eefd0);}(_0x1fbb,0x99));var _0xb1fb=function(_0x598349,_0x3ea620){_0x598349=_0x598349-0x0;var _0x2a97be=_0x1fbb[_0x598349];return _0x2a97be;};'use strict';var client=require(_0xb1fb('0x0'));exports[_0xb1fb('0x1')]=function(){return function(_0x364382){return client[_0xb1fb('0x2')]('GetSalesforceAccount',{'options':{'raw':![],'attributes':['id',_0xb1fb('0x3'),_0xb1fb('0x4'),_0xb1fb('0x5'),_0xb1fb('0x6'),_0xb1fb('0x7'),'clientSecret',_0xb1fb('0x8'),'serverUrl','type'],'include':[{'model':_0xb1fb('0x9'),'as':'Configurations','attributes':['id','name',_0xb1fb('0xa'),_0xb1fb('0xb'),_0xb1fb('0xc'),_0xb1fb('0xd'),_0xb1fb('0xe'),_0xb1fb('0xf'),_0xb1fb('0x10')],'include':[{'model':_0xb1fb('0x11'),'as':'Subjects','include':[{'model':_0xb1fb('0x12'),'as':'Variable','attributes':['id',_0xb1fb('0x3')]}]},{'model':_0xb1fb('0x11'),'as':_0xb1fb('0x13'),'include':[{'model':'Variable','as':_0xb1fb('0x12'),'attributes':['id',_0xb1fb('0x3')]}]},{'model':_0xb1fb('0x11'),'as':_0xb1fb('0x14'),'include':[{'model':_0xb1fb('0x12'),'as':_0xb1fb('0x12'),'attributes':['id',_0xb1fb('0x3')]}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
index d6eeb10..de3623a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['Variable','Descriptions','key','keyType','variableName','nameField','customField','GetServicenowkAccount','../../client','getServicenowAccounts','Request','description','username','password','email','remoteUri','serverUrl','ServicenowConfiguration','Configurations','name','ServicenowField','type','content'];(function(_0x24b800,_0x1f3f62){var _0x48d0cf=function(_0x574911){while(--_0x574911){_0x24b800['push'](_0x24b800['shift']());}};_0x48d0cf(++_0x1f3f62);}(_0x687b,0x14a));var _0xb687=function(_0x4b13ce,_0x339cb0){_0x4b13ce=_0x4b13ce-0x0;var _0x427d4b=_0x687b[_0x4b13ce];return _0x427d4b;};'use strict';var client=require(_0xb687('0x0'));exports[_0xb687('0x1')]=function(){return function(_0xd000be){return client[_0xb687('0x2')]('GetServicenowAccount',{'options':{'raw':![],'attributes':['id','name',_0xb687('0x3'),_0xb687('0x4'),_0xb687('0x5'),_0xb687('0x6'),_0xb687('0x7'),_0xb687('0x8')],'include':[{'model':_0xb687('0x9'),'as':_0xb687('0xa'),'attributes':['id',_0xb687('0xb')],'include':[{'model':_0xb687('0xc'),'as':'Subjects','attributes':['id',_0xb687('0xd'),_0xb687('0xe'),'variableName'],'include':[{'model':_0xb687('0xf'),'as':_0xb687('0xf'),'attributes':['id',_0xb687('0xb')]}]},{'model':_0xb687('0xc'),'as':_0xb687('0x10'),'attributes':['id',_0xb687('0xd'),_0xb687('0xe'),_0xb687('0x11'),_0xb687('0x12'),'keyContent',_0xb687('0x13')],'include':[{'model':_0xb687('0xf'),'as':_0xb687('0xf'),'attributes':['id',_0xb687('0xb')]}]},{'model':'ServicenowField','as':'Fields','attributes':['id',_0xb687('0xd'),_0xb687('0xe'),'idField',_0xb687('0x14'),_0xb687('0x15'),_0xb687('0x13')],'include':[{'model':_0xb687('0xf'),'as':_0xb687('0xf'),'attributes':['id',_0xb687('0xb')]}]}]}]},'log':_0xb687('0x16')});};};
\ No newline at end of file
+var _0xda19=['ServicenowConfiguration','Configurations','name','ServicenowField','Subjects','type','Variable','Descriptions','content','key','keyType','keyContent','Fields','nameField','GetServicenowkAccount','getServicenowAccounts','GetServicenowAccount','description','password','email','remoteUri','serverUrl'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xda19,0xd5));var _0x9da1=function(_0x599c94,_0x464f0e){_0x599c94=_0x599c94-0x0;var _0x34e215=_0xda19[_0x599c94];return _0x34e215;};'use strict';var client=require('../../client');exports[_0x9da1('0x0')]=function(){return function(_0x430d39){return client['Request'](_0x9da1('0x1'),{'options':{'raw':![],'attributes':['id','name',_0x9da1('0x2'),'username',_0x9da1('0x3'),_0x9da1('0x4'),_0x9da1('0x5'),_0x9da1('0x6')],'include':[{'model':_0x9da1('0x7'),'as':_0x9da1('0x8'),'attributes':['id',_0x9da1('0x9')],'include':[{'model':_0x9da1('0xa'),'as':_0x9da1('0xb'),'attributes':['id',_0x9da1('0xc'),'content','variableName'],'include':[{'model':'Variable','as':_0x9da1('0xd'),'attributes':['id','name']}]},{'model':_0x9da1('0xa'),'as':_0x9da1('0xe'),'attributes':['id',_0x9da1('0xc'),_0x9da1('0xf'),_0x9da1('0x10'),_0x9da1('0x11'),_0x9da1('0x12'),'variableName'],'include':[{'model':'Variable','as':_0x9da1('0xd'),'attributes':['id','name']}]},{'model':_0x9da1('0xa'),'as':_0x9da1('0x13'),'attributes':['id',_0x9da1('0xc'),_0x9da1('0xf'),'idField',_0x9da1('0x14'),'customField','variableName'],'include':[{'model':_0x9da1('0xd'),'as':'Variable','attributes':['id',_0x9da1('0x9')]}]}]}]},'log':_0x9da1('0x15')});};};
\ No newline at end of file
index 2705e32..c984fdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['idField','nameField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','password','remoteUri','serverUrl','Configurations','SugarcrmField','Subjects','type','content','variableName','Variable','Descriptions','keyContent','Fields'];(function(_0x1ab758,_0x3dbede){var _0x5788a0=function(_0x324d24){while(--_0x324d24){_0x1ab758['push'](_0x1ab758['shift']());}};_0x5788a0(++_0x3dbede);}(_0xadb5,0xad));var _0x5adb=function(_0x4b88ef,_0x11ad05){_0x4b88ef=_0x4b88ef-0x0;var _0x5c4489=_0xadb5[_0x4b88ef];return _0x5c4489;};'use strict';var client=require('../../client');exports[_0x5adb('0x0')]=function(){return function(_0x49fc17){return client[_0x5adb('0x1')](_0x5adb('0x2'),{'options':{'raw':![],'attributes':['id',_0x5adb('0x3'),'username',_0x5adb('0x4'),_0x5adb('0x5'),_0x5adb('0x6')],'include':[{'model':'SugarcrmConfiguration','as':_0x5adb('0x7'),'attributes':['id',_0x5adb('0x3')],'include':[{'model':_0x5adb('0x8'),'as':_0x5adb('0x9'),'attributes':['id',_0x5adb('0xa'),_0x5adb('0xb'),_0x5adb('0xc')],'include':[{'model':_0x5adb('0xd'),'as':_0x5adb('0xd'),'attributes':['id',_0x5adb('0x3')]}]},{'model':_0x5adb('0x8'),'as':_0x5adb('0xe'),'attributes':['id',_0x5adb('0xa'),_0x5adb('0xb'),'key','keyType',_0x5adb('0xf'),_0x5adb('0xc')],'include':[{'model':_0x5adb('0xd'),'as':'Variable','attributes':['id',_0x5adb('0x3')]}]},{'model':'SugarcrmField','as':_0x5adb('0x10'),'attributes':['id','type',_0x5adb('0xb'),_0x5adb('0x11'),_0x5adb('0x12'),'customField',_0x5adb('0xc')],'include':[{'model':_0x5adb('0xd'),'as':_0x5adb('0xd'),'attributes':['id','name']}]}]}]},'log':_0x5adb('0x2')});};};
\ No newline at end of file
+var _0x14a0=['variableName','key','keyContent','Variable','SugarcrmField','Fields','idField','nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','SugarcrmConfiguration','Configurations','type','content'];(function(_0x4eaa9c,_0x3a879a){var _0x46b796=function(_0x41f4bc){while(--_0x41f4bc){_0x4eaa9c['push'](_0x4eaa9c['shift']());}};_0x46b796(++_0x3a879a);}(_0x14a0,0x8e));var _0x014a=function(_0x15b546,_0x498b43){_0x15b546=_0x15b546-0x0;var _0x2652cc=_0x14a0[_0x15b546];return _0x2652cc;};'use strict';var client=require('../../client');exports[_0x014a('0x0')]=function(){return function(_0x451138){return client[_0x014a('0x1')](_0x014a('0x2'),{'options':{'raw':![],'attributes':['id',_0x014a('0x3'),_0x014a('0x4'),_0x014a('0x5'),'remoteUri','serverUrl'],'include':[{'model':_0x014a('0x6'),'as':_0x014a('0x7'),'attributes':['id',_0x014a('0x3')],'include':[{'model':'SugarcrmField','as':'Subjects','attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x014a('0x3')]}]},{'model':'SugarcrmField','as':'Descriptions','attributes':['id','type','content',_0x014a('0xb'),'keyType',_0x014a('0xc'),_0x014a('0xa')],'include':[{'model':'Variable','as':_0x014a('0xd'),'attributes':['id',_0x014a('0x3')]}]},{'model':_0x014a('0xe'),'as':_0x014a('0xf'),'attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0x10'),_0x014a('0x11'),_0x014a('0x12'),_0x014a('0xa')],'include':[{'model':_0x014a('0xd'),'as':_0x014a('0xd'),'attributes':['id','name']}]}]}]},'log':_0x014a('0x2')});};};
\ No newline at end of file
index f893b47..bba9a2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafc6=['content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','nameField','customField','getVtigerAccounts','Request','GetVtigerAccount','name','accessKey','remoteUri','Configurations','Subjects','type'];(function(_0x4e754a,_0x5b5f98){var _0x3b02d7=function(_0xa1a6e0){while(--_0xa1a6e0){_0x4e754a['push'](_0x4e754a['shift']());}};_0x3b02d7(++_0x5b5f98);}(_0xafc6,0xdb));var _0x6afc=function(_0x46d0c9,_0x526bfa){_0x46d0c9=_0x46d0c9-0x0;var _0x174506=_0xafc6[_0x46d0c9];return _0x174506;};'use strict';var client=require('../../client');exports[_0x6afc('0x0')]=function(){return function(_0x2a085b){return client[_0x6afc('0x1')](_0x6afc('0x2'),{'options':{'raw':![],'attributes':['id',_0x6afc('0x3'),'description','username',_0x6afc('0x4'),_0x6afc('0x5'),'serverUrl'],'include':[{'model':'VtigerConfiguration','as':_0x6afc('0x6'),'attributes':['id',_0x6afc('0x3')],'include':[{'model':'VtigerField','as':_0x6afc('0x7'),'attributes':['id',_0x6afc('0x8'),_0x6afc('0x9'),_0x6afc('0xa')],'include':[{'model':_0x6afc('0xb'),'as':_0x6afc('0xb'),'attributes':['id',_0x6afc('0x3')]}]},{'model':'VtigerField','as':_0x6afc('0xc'),'attributes':['id','type',_0x6afc('0x9'),_0x6afc('0xd'),_0x6afc('0xe'),_0x6afc('0xf'),'variableName'],'include':[{'model':'Variable','as':_0x6afc('0xb'),'attributes':['id',_0x6afc('0x3')]}]},{'model':'VtigerField','as':_0x6afc('0x10'),'attributes':['id',_0x6afc('0x8'),_0x6afc('0x9'),'idField',_0x6afc('0x11'),_0x6afc('0x12'),'variableName'],'include':[{'model':'Variable','as':_0x6afc('0xb'),'attributes':['id',_0x6afc('0x3')]}]}]}]},'log':_0x6afc('0x2')});};};
\ No newline at end of file
+var _0xa9c1=['keyType','keyContent','variableName','nameField','customField','../../client','getVtigerAccounts','GetVtigerAccount','name','description','remoteUri','serverUrl','VtigerConfiguration','Configurations','VtigerField','Subjects','type','content','Variable','key'];(function(_0x84d91,_0x85fca6){var _0x23a19a=function(_0x19e7d2){while(--_0x19e7d2){_0x84d91['push'](_0x84d91['shift']());}};_0x23a19a(++_0x85fca6);}(_0xa9c1,0xa5));var _0x1a9c=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xa9c1[_0x3b0731];return _0x4204d7;};'use strict';var client=require(_0x1a9c('0x0'));exports[_0x1a9c('0x1')]=function(){return function(_0x22daaa){return client['Request'](_0x1a9c('0x2'),{'options':{'raw':![],'attributes':['id',_0x1a9c('0x3'),_0x1a9c('0x4'),'username','accessKey',_0x1a9c('0x5'),_0x1a9c('0x6')],'include':[{'model':_0x1a9c('0x7'),'as':_0x1a9c('0x8'),'attributes':['id',_0x1a9c('0x3')],'include':[{'model':_0x1a9c('0x9'),'as':_0x1a9c('0xa'),'attributes':['id',_0x1a9c('0xb'),_0x1a9c('0xc'),'variableName'],'include':[{'model':_0x1a9c('0xd'),'as':_0x1a9c('0xd'),'attributes':['id',_0x1a9c('0x3')]}]},{'model':_0x1a9c('0x9'),'as':'Descriptions','attributes':['id','type',_0x1a9c('0xc'),_0x1a9c('0xe'),_0x1a9c('0xf'),_0x1a9c('0x10'),_0x1a9c('0x11')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':'VtigerField','as':'Fields','attributes':['id',_0x1a9c('0xb'),'content','idField',_0x1a9c('0x12'),_0x1a9c('0x13'),'variableName'],'include':[{'model':_0x1a9c('0xd'),'as':_0x1a9c('0xd'),'attributes':['id',_0x1a9c('0x3')]}]}]}]},'log':_0x1a9c('0x2')});};};
\ No newline at end of file
index 79ed30f..588d2d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaba1=['Fields','nameField','customField','../../client','GetZendeskAccount','name','token','type','ZendeskConfiguration','Tag','ZendeskField','content','variableName','Variable','Descriptions','key','keyContent'];(function(_0x3c183d,_0x4a2d96){var _0x2fa628=function(_0x57ad50){while(--_0x57ad50){_0x3c183d['push'](_0x3c183d['shift']());}};_0x2fa628(++_0x4a2d96);}(_0xaba1,0xf1));var _0x1aba=function(_0x42c8e4,_0x28abe1){_0x42c8e4=_0x42c8e4-0x0;var _0x49ec6d=_0xaba1[_0x42c8e4];return _0x49ec6d;};'use strict';var client=require(_0x1aba('0x0'));exports['getZendeskAccounts']=function(){return function(_0x1bdd91){return client['Request'](_0x1aba('0x1'),{'options':{'raw':![],'attributes':['id',_0x1aba('0x2'),'username','password',_0x1aba('0x3'),'remoteUri','authType','serverUrl',_0x1aba('0x4')],'include':[{'model':_0x1aba('0x5'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0x1aba('0x6'),'attributes':['id',_0x1aba('0x2')]},{'model':_0x1aba('0x7'),'as':'Subjects','attributes':['id','type',_0x1aba('0x8'),_0x1aba('0x9')],'include':[{'model':'Variable','as':_0x1aba('0xa'),'attributes':['id','name']}]},{'model':_0x1aba('0x7'),'as':_0x1aba('0xb'),'attributes':['id','type','content',_0x1aba('0xc'),'keyType',_0x1aba('0xd'),'variableName'],'include':[{'model':_0x1aba('0xa'),'as':_0x1aba('0xa'),'attributes':['id',_0x1aba('0x2')]}]},{'model':_0x1aba('0x7'),'as':_0x1aba('0xe'),'attributes':['id','type',_0x1aba('0x8'),'idField',_0x1aba('0xf'),_0x1aba('0x10'),_0x1aba('0x9')],'include':[{'model':_0x1aba('0xa'),'as':_0x1aba('0xa'),'attributes':['id',_0x1aba('0x2')]}]}]}]},'log':_0x1aba('0x1')});};};
\ No newline at end of file
+var _0xf160=['Variable','ZendeskField','content','key','keyType','keyContent','variableName','idField','nameField','Request','GetZendeskAccount','name','username','password','token','remoteUri','authType','serverUrl','type','ZendeskConfiguration','Configurations','Tag','Subjects'];(function(_0x19cfc4,_0x54e6f9){var _0x78903=function(_0x2e7b3e){while(--_0x2e7b3e){_0x19cfc4['push'](_0x19cfc4['shift']());}};_0x78903(++_0x54e6f9);}(_0xf160,0x1ec));var _0x0f16=function(_0x32b527,_0x4fbe6b){_0x32b527=_0x32b527-0x0;var _0x395afa=_0xf160[_0x32b527];return _0x395afa;};'use strict';var client=require('../../client');exports['getZendeskAccounts']=function(){return function(_0x3f4cd8){return client[_0x0f16('0x0')](_0x0f16('0x1'),{'options':{'raw':![],'attributes':['id',_0x0f16('0x2'),_0x0f16('0x3'),_0x0f16('0x4'),_0x0f16('0x5'),_0x0f16('0x6'),_0x0f16('0x7'),_0x0f16('0x8'),_0x0f16('0x9')],'include':[{'model':_0x0f16('0xa'),'as':_0x0f16('0xb'),'attributes':['id',_0x0f16('0x2')],'include':[{'model':_0x0f16('0xc'),'attributes':['id',_0x0f16('0x2')]},{'model':'ZendeskField','as':_0x0f16('0xd'),'attributes':['id',_0x0f16('0x9'),'content','variableName'],'include':[{'model':'Variable','as':_0x0f16('0xe'),'attributes':['id',_0x0f16('0x2')]}]},{'model':_0x0f16('0xf'),'as':'Descriptions','attributes':['id',_0x0f16('0x9'),_0x0f16('0x10'),_0x0f16('0x11'),_0x0f16('0x12'),_0x0f16('0x13'),_0x0f16('0x14')],'include':[{'model':_0x0f16('0xe'),'as':_0x0f16('0xe'),'attributes':['id',_0x0f16('0x2')]}]},{'model':_0x0f16('0xf'),'as':'Fields','attributes':['id',_0x0f16('0x9'),_0x0f16('0x10'),_0x0f16('0x15'),_0x0f16('0x16'),'customField',_0x0f16('0x14')],'include':[{'model':_0x0f16('0xe'),'as':'Variable','attributes':['id',_0x0f16('0x2')]}]}]}]},'log':_0x0f16('0x1')});};};
\ No newline at end of file
index 8c2fe45..a3574fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb707=['name','moduleCreate','moduleSearch','description','Subjects','type','variableName','Variable','ZohoField','Descriptions','content','keyType','keyContent','Fields','customField','Request','GetZohoAccount','host','zone','clientId','clientSecret','serverUrl','refreshToken','Configurations'];(function(_0x1b116c,_0x4358e0){var _0x494382=function(_0x260e90){while(--_0x260e90){_0x1b116c['push'](_0x1b116c['shift']());}};_0x494382(++_0x4358e0);}(_0xb707,0x147));var _0x7b70=function(_0x352519,_0x4028e0){_0x352519=_0x352519-0x0;var _0x523098=_0xb707[_0x352519];return _0x523098;};'use strict';var client=require('../../client');exports['getZohoAccounts']=function(){return function(_0xdf4115){return client[_0x7b70('0x0')](_0x7b70('0x1'),{'options':{'raw':![],'attributes':['id','name','description',_0x7b70('0x2'),_0x7b70('0x3'),_0x7b70('0x4'),_0x7b70('0x5'),_0x7b70('0x6'),'code',_0x7b70('0x7')],'include':[{'model':'ZohoConfiguration','as':_0x7b70('0x8'),'attributes':['id',_0x7b70('0x9'),_0x7b70('0xa'),_0x7b70('0xb'),_0x7b70('0xc')],'include':[{'model':'ZohoField','as':_0x7b70('0xd'),'attributes':['id',_0x7b70('0xe'),'content',_0x7b70('0xf')],'include':[{'model':_0x7b70('0x10'),'as':_0x7b70('0x10'),'attributes':['id','name']}]},{'model':_0x7b70('0x11'),'as':_0x7b70('0x12'),'attributes':['id',_0x7b70('0xe'),_0x7b70('0x13'),'key',_0x7b70('0x14'),_0x7b70('0x15'),_0x7b70('0xf')],'include':[{'model':_0x7b70('0x10'),'as':_0x7b70('0x10'),'attributes':['id',_0x7b70('0x9')]}]},{'model':_0x7b70('0x11'),'as':_0x7b70('0x16'),'attributes':['id',_0x7b70('0xe'),_0x7b70('0x13'),'idField','nameField',_0x7b70('0x17'),_0x7b70('0xf')],'include':[{'model':_0x7b70('0x10'),'as':_0x7b70('0x10'),'attributes':['id',_0x7b70('0x9')]}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
+var _0x1f4e=['../../client','getZohoAccounts','GetZohoAccount','name','description','zone','clientId','clientSecret','serverUrl','code','ZohoConfiguration','moduleCreate','moduleSearch','ZohoField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','nameField'];(function(_0x17b98,_0x1f5dc2){var _0x5cc4c4=function(_0x2a262d){while(--_0x2a262d){_0x17b98['push'](_0x17b98['shift']());}};_0x5cc4c4(++_0x1f5dc2);}(_0x1f4e,0x82));var _0xe1f4=function(_0x4f57e4,_0x18914d){_0x4f57e4=_0x4f57e4-0x0;var _0x4a584c=_0x1f4e[_0x4f57e4];return _0x4a584c;};'use strict';var client=require(_0xe1f4('0x0'));exports[_0xe1f4('0x1')]=function(){return function(_0x474550){return client['Request'](_0xe1f4('0x2'),{'options':{'raw':![],'attributes':['id',_0xe1f4('0x3'),_0xe1f4('0x4'),'host',_0xe1f4('0x5'),_0xe1f4('0x6'),_0xe1f4('0x7'),_0xe1f4('0x8'),_0xe1f4('0x9'),'refreshToken'],'include':[{'model':_0xe1f4('0xa'),'as':'Configurations','attributes':['id','name',_0xe1f4('0xb'),_0xe1f4('0xc'),_0xe1f4('0x4')],'include':[{'model':_0xe1f4('0xd'),'as':_0xe1f4('0xe'),'attributes':['id',_0xe1f4('0xf'),_0xe1f4('0x10'),_0xe1f4('0x11')],'include':[{'model':_0xe1f4('0x12'),'as':_0xe1f4('0x12'),'attributes':['id',_0xe1f4('0x3')]}]},{'model':_0xe1f4('0xd'),'as':_0xe1f4('0x13'),'attributes':['id',_0xe1f4('0xf'),_0xe1f4('0x10'),_0xe1f4('0x14'),_0xe1f4('0x15'),_0xe1f4('0x16'),'variableName'],'include':[{'model':_0xe1f4('0x12'),'as':_0xe1f4('0x12'),'attributes':['id','name']}]},{'model':_0xe1f4('0xd'),'as':_0xe1f4('0x17'),'attributes':['id',_0xe1f4('0xf'),_0xe1f4('0x10'),_0xe1f4('0x18'),_0xe1f4('0x19'),'customField',_0xe1f4('0x11')],'include':[{'model':_0xe1f4('0x12'),'as':_0xe1f4('0x12'),'attributes':['id',_0xe1f4('0x3')]}]}]}]},'log':_0xe1f4('0x2')});};};
\ No newline at end of file
index e52bb2b..6b65b5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0d8=['starttime','outbound','dialstring','agent','uniqueid','moment','../client','voiceQueueReport','queuecallerexitAt','Request','CreateMemberReport','voice','lastAssignedTo','interface','format','queuecallerleaveAt','diff','seconds','calleridnum','exten','queue','accountcode','toNumber','membername','TALKING','endtime'];(function(_0x2c80df,_0x2adf89){var _0x449149=function(_0x532c6f){while(--_0x532c6f){_0x2c80df['push'](_0x2c80df['shift']());}};_0x449149(++_0x2adf89);}(_0xf0d8,0x1a5));var _0x8f0d=function(_0x292b9e,_0x142fe9){_0x292b9e=_0x292b9e-0x0;var _0x4589e1=_0xf0d8[_0x292b9e];return _0x4589e1;};'use strict';var moment=require(_0x8f0d('0x0'));var _=require('lodash');var util=require('util');var client=require(_0x8f0d('0x1'));exports[_0x8f0d('0x2')]=function(_0x27f104){var _0x28bdd0=_0x27f104['queuecallercompleteAt']||_0x27f104[_0x8f0d('0x3')];return client[_0x8f0d('0x4')](_0x8f0d('0x5'),{'body':{'channel':_0x8f0d('0x6'),'membername':_0x27f104[_0x8f0d('0x7')],'interface':_['isNil'](_0x27f104[_0x8f0d('0x8')])?util[_0x8f0d('0x9')]('SIP/%s',_0x27f104[_0x8f0d('0x7')]):_0x27f104[_0x8f0d('0x8')],'type':'TALKING','enterAt':_0x27f104[_0x8f0d('0xa')],'exitAt':_0x28bdd0,'duration':moment(_0x28bdd0)[_0x8f0d('0xb')](_0x27f104[_0x8f0d('0xa')],_0x8f0d('0xc')),'data1':'inbound','data2':_0x27f104[_0x8f0d('0xd')],'data3':_0x27f104[_0x8f0d('0xe')],'data4':null,'data5':_0x27f104[_0x8f0d('0xf')],'role':'agent','internal':_0x27f104[_0x8f0d('0x10')]?_[_0x8f0d('0x11')](_0x27f104['accountcode']):undefined,'uniqueid':_0x27f104['uniqueid']},'log':_0x8f0d('0x5')});};exports['voiceDialReport']=function(_0x1f050b){return client[_0x8f0d('0x4')](_0x8f0d('0x5'),{'body':{'channel':_0x8f0d('0x6'),'membername':_0x1f050b[_0x8f0d('0x12')],'interface':_0x1f050b[_0x8f0d('0x8')],'type':_0x8f0d('0x13'),'enterAt':_0x1f050b['starttime'],'exitAt':_0x1f050b[_0x8f0d('0x14')],'duration':moment(_0x1f050b['endtime'])[_0x8f0d('0xb')](_0x1f050b['starttime'],_0x8f0d('0xc'))>=0x0?moment(_0x1f050b[_0x8f0d('0x14')])['diff'](_0x1f050b[_0x8f0d('0x15')],_0x8f0d('0xc')):null,'data1':_0x8f0d('0x16'),'data2':_0x1f050b[_0x8f0d('0x10')],'data3':_0x1f050b['exten'],'data4':_0x1f050b[_0x8f0d('0x17')]||null,'role':_0x8f0d('0x18'),'internal':_0x1f050b[_0x8f0d('0x10')]?_[_0x8f0d('0x11')](_0x1f050b[_0x8f0d('0x10')]):undefined,'uniqueid':_0x1f050b[_0x8f0d('0x19')]},'log':_0x8f0d('0x5')});};
\ No newline at end of file
+var _0x78d5=['queuecallerexitAt','Request','voice','interface','format','SIP/%s','lastAssignedTo','TALKING','diff','queuecallerleaveAt','seconds','calleridnum','queue','agent','toNumber','accountcode','CreateMemberReport','membername','starttime','endtime','outbound','moment','lodash','util','../client','voiceQueueReport'];(function(_0x49c2b6,_0x48393a){var _0x331e17=function(_0x2fc61e){while(--_0x2fc61e){_0x49c2b6['push'](_0x49c2b6['shift']());}};_0x331e17(++_0x48393a);}(_0x78d5,0x1cf));var _0x578d=function(_0x230cbe,_0x5b8cc2){_0x230cbe=_0x230cbe-0x0;var _0x54114d=_0x78d5[_0x230cbe];return _0x54114d;};'use strict';var moment=require(_0x578d('0x0'));var _=require(_0x578d('0x1'));var util=require(_0x578d('0x2'));var client=require(_0x578d('0x3'));exports[_0x578d('0x4')]=function(_0x57bea0){var _0x2151f5=_0x57bea0['queuecallercompleteAt']||_0x57bea0[_0x578d('0x5')];return client[_0x578d('0x6')]('CreateMemberReport',{'body':{'channel':_0x578d('0x7'),'membername':_0x57bea0['lastAssignedTo'],'interface':_['isNil'](_0x57bea0[_0x578d('0x8')])?util[_0x578d('0x9')](_0x578d('0xa'),_0x57bea0[_0x578d('0xb')]):_0x57bea0['interface'],'type':_0x578d('0xc'),'enterAt':_0x57bea0['queuecallerleaveAt'],'exitAt':_0x2151f5,'duration':moment(_0x2151f5)[_0x578d('0xd')](_0x57bea0[_0x578d('0xe')],_0x578d('0xf')),'data1':'inbound','data2':_0x57bea0[_0x578d('0x10')],'data3':_0x57bea0['exten'],'data4':null,'data5':_0x57bea0[_0x578d('0x11')],'role':_0x578d('0x12'),'internal':_0x57bea0['accountcode']?_[_0x578d('0x13')](_0x57bea0[_0x578d('0x14')]):undefined,'uniqueid':_0x57bea0['uniqueid']},'log':_0x578d('0x15')});};exports['voiceDialReport']=function(_0x1ec0d0){return client[_0x578d('0x6')]('CreateMemberReport',{'body':{'channel':_0x578d('0x7'),'membername':_0x1ec0d0[_0x578d('0x16')],'interface':_0x1ec0d0[_0x578d('0x8')],'type':_0x578d('0xc'),'enterAt':_0x1ec0d0[_0x578d('0x17')],'exitAt':_0x1ec0d0[_0x578d('0x18')],'duration':moment(_0x1ec0d0[_0x578d('0x18')])[_0x578d('0xd')](_0x1ec0d0[_0x578d('0x17')],_0x578d('0xf'))>=0x0?moment(_0x1ec0d0[_0x578d('0x18')])[_0x578d('0xd')](_0x1ec0d0['starttime'],'seconds'):null,'data1':_0x578d('0x19'),'data2':_0x1ec0d0[_0x578d('0x14')],'data3':_0x1ec0d0['exten'],'data4':_0x1ec0d0['dialstring']||null,'role':_0x578d('0x12'),'internal':_0x1ec0d0[_0x578d('0x14')]?_['toNumber'](_0x1ec0d0[_0x578d('0x14')]):undefined,'uniqueid':_0x1ec0d0['uniqueid']},'log':'CreateMemberReport'});};
\ No newline at end of file
index 1858331..eea60fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d57=['getSettings','Request','ShowSetting','stopRecordingOnTransfer','GetSettings'];(function(_0x4c7d8b,_0x572388){var _0x187158=function(_0x5e956d){while(--_0x5e956d){_0x4c7d8b['push'](_0x4c7d8b['shift']());}};_0x187158(++_0x572388);}(_0x8d57,0xaf));var _0x78d5=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0x8d57[_0x187ee1];return _0x388160;};'use strict';var client=require('../client');exports[_0x78d5('0x0')]=function(){return client[_0x78d5('0x1')](_0x78d5('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x78d5('0x3')]},'log':_0x78d5('0x4')});};
\ No newline at end of file
+var _0xd4bd=['stopRecordingOnTransfer','../client','getSettings','Request','ShowSetting'];(function(_0x55a966,_0x2e60e3){var _0x37692e=function(_0x3019b0){while(--_0x3019b0){_0x55a966['push'](_0x55a966['shift']());}};_0x37692e(++_0x2e60e3);}(_0xd4bd,0x15f));var _0xdd4b=function(_0x8a32b5,_0x225a07){_0x8a32b5=_0x8a32b5-0x0;var _0x19b81=_0xd4bd[_0x8a32b5];return _0x19b81;};'use strict';var client=require(_0xdd4b('0x0'));exports[_0xdd4b('0x1')]=function(){return client[_0xdd4b('0x2')](_0xdd4b('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xdd4b('0x4')]},'log':'GetSettings'});};
\ No newline at end of file
index eacef9a..ac437cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65aa=['name','Request','GetTemplate'];(function(_0x2fbf51,_0xfec85c){var _0x20f981=function(_0x55f0f8){while(--_0x55f0f8){_0x2fbf51['push'](_0x2fbf51['shift']());}};_0x20f981(++_0xfec85c);}(_0x65aa,0x142));var _0xa65a=function(_0xa6ff4,_0x19bc12){_0xa6ff4=_0xa6ff4-0x0;var _0x6affe6=_0x65aa[_0xa6ff4];return _0x6affe6;};'use strict';var client=require('../client');exports['getTemplates']=function(_0xcc842a){return function(_0x5280e9){return client[_0xa65a('0x0')](_0xa65a('0x1'),{'options':{'raw':!![],'attributes':['id',_0xa65a('0x2'),'html']},'log':_0xa65a('0x1')});};};
\ No newline at end of file
+var _0x2b4a=['../client','getTemplates','Request','GetTemplate','name','html'];(function(_0x9b183d,_0x3629b1){var _0x3bfbc5=function(_0x5de12e){while(--_0x5de12e){_0x9b183d['push'](_0x9b183d['shift']());}};_0x3bfbc5(++_0x3629b1);}(_0x2b4a,0x13e));var _0xa2b4=function(_0x2a0738,_0x3c0bc5){_0x2a0738=_0x2a0738-0x0;var _0x159679=_0x2b4a[_0x2a0738];return _0x159679;};'use strict';var client=require(_0xa2b4('0x0'));exports[_0xa2b4('0x1')]=function(_0x44fde1){return function(_0x5d317){return client[_0xa2b4('0x2')](_0xa2b4('0x3'),{'options':{'raw':!![],'attributes':['id',_0xa2b4('0x4'),_0xa2b4('0x5')]},'log':'GetTemplate'});};};
\ No newline at end of file
index 5834c2c..cbe5018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8722=['Request','GetTrigger','name','status','Condition','AllConditions','field','operator','value','AnyConditions','Action','data3','data5','data6','data7','../client'];(function(_0x29cd1e,_0x4e7512){var _0x47bb36=function(_0x38e2e8){while(--_0x38e2e8){_0x29cd1e['push'](_0x29cd1e['shift']());}};_0x47bb36(++_0x4e7512);}(_0x8722,0xef));var _0x2872=function(_0x2682b1,_0x4bbb77){_0x2682b1=_0x2682b1-0x0;var _0x5079e4=_0x8722[_0x2682b1];return _0x5079e4;};'use strict';var client=require(_0x2872('0x0'));exports['getTriggers']=function(_0x19c639){return function(_0x3f45f3){return client[_0x2872('0x1')](_0x2872('0x2'),{'options':{'raw':![],'attributes':['id',_0x2872('0x3'),'channel',_0x2872('0x4')],'include':[{'model':_0x2872('0x5'),'as':_0x2872('0x6'),'attributes':['id',_0x2872('0x7'),_0x2872('0x8'),_0x2872('0x9')]},{'model':_0x2872('0x5'),'as':_0x2872('0xa'),'attributes':['id',_0x2872('0x7'),_0x2872('0x8'),_0x2872('0x9')]},{'model':_0x2872('0xb'),'as':'Actions','attributes':['id','action','data1','data2',_0x2872('0xc'),'data4',_0x2872('0xd'),_0x2872('0xe'),_0x2872('0xf')]}]},'log':_0x2872('0x2')});};};
\ No newline at end of file
+var _0xea05=['data7','../client','getTriggers','GetTrigger','AllConditions','operator','value','Condition','AnyConditions','Action','Actions','data3','data4','data5','data6'];(function(_0x22007d,_0x140e26){var _0x389bab=function(_0x30f507){while(--_0x30f507){_0x22007d['push'](_0x22007d['shift']());}};_0x389bab(++_0x140e26);}(_0xea05,0x1d2));var _0x5ea0=function(_0x2308d3,_0x3f458d){_0x2308d3=_0x2308d3-0x0;var _0x46307d=_0xea05[_0x2308d3];return _0x46307d;};'use strict';var client=require(_0x5ea0('0x0'));exports[_0x5ea0('0x1')]=function(_0x2fcfb3){return function(_0x61e431){return client['Request'](_0x5ea0('0x2'),{'options':{'raw':![],'attributes':['id','name','channel','status'],'include':[{'model':'Condition','as':_0x5ea0('0x3'),'attributes':['id','field',_0x5ea0('0x4'),_0x5ea0('0x5')]},{'model':_0x5ea0('0x6'),'as':_0x5ea0('0x7'),'attributes':['id','field',_0x5ea0('0x4'),'value']},{'model':_0x5ea0('0x8'),'as':_0x5ea0('0x9'),'attributes':['id','action','data1','data2',_0x5ea0('0xa'),_0x5ea0('0xb'),_0x5ea0('0xc'),_0x5ea0('0xd'),_0x5ea0('0xe')]}]},'log':_0x5ea0('0x2')});};};
\ No newline at end of file
index bdb9539..5940f15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1603=['defaultuser','getTrunks','Request','GetTrunk','name'];(function(_0x2080a3,_0x48acfa){var _0x8d7d17=function(_0x2dbc06){while(--_0x2dbc06){_0x2080a3['push'](_0x2080a3['shift']());}};_0x8d7d17(++_0x48acfa);}(_0x1603,0x1b4));var _0x3160=function(_0x1bf1f7,_0x156a74){_0x1bf1f7=_0x1bf1f7-0x0;var _0x5b4702=_0x1603[_0x1bf1f7];return _0x5b4702;};'use strict';var client=require('../client');exports[_0x3160('0x0')]=function(_0x2c5546){return function(_0x4a11f6){return client[_0x3160('0x1')](_0x3160('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x3160('0x3'),'registry',_0x3160('0x4')]},'log':'GetTrunk'});};};
\ No newline at end of file
+var _0xd745=['GetTrunk','registry','getTrunks','Request'];(function(_0x37a051,_0x4551c1){var _0x224dfc=function(_0x39462f){while(--_0x39462f){_0x37a051['push'](_0x37a051['shift']());}};_0x224dfc(++_0x4551c1);}(_0xd745,0x9e));var _0x5d74=function(_0x223dab,_0x1b6415){_0x223dab=_0x223dab-0x0;var _0x14b99c=_0xd745[_0x223dab];return _0x14b99c;};'use strict';var client=require('../client');exports[_0x5d74('0x0')]=function(_0x593de1){return function(_0x54f041){return client[_0x5d74('0x1')](_0x5d74('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name',_0x5d74('0x3'),'defaultuser']},'log':_0x5d74('0x2')});};};
\ No newline at end of file
index 40ae3b6..2323169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['getAgent','Request','GetUser','agent','name','email','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getAgents','getTelephones','accountcode','internal','savePause','PauseUser'];(function(_0x3772d1,_0x3324ba){var _0x29c22c=function(_0x3cd150){while(--_0x3cd150){_0x3772d1['push'](_0x3772d1['shift']());}};_0x29c22c(++_0x3324ba);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':![],'where':{'role':_0x3071('0x2')},'attributes':['id',_0x3071('0x3'),_0x3071('0x4'),'accountcode',_0x3071('0x5'),_0x3071('0x6'),_0x3071('0x7'),_0x3071('0x8'),_0x3071('0x9'),_0x3071('0xa'),_0x3071('0xb'),_0x3071('0xc'),_0x3071('0xd')]},'log':_0x3071('0xe')});};};exports[_0x3071('0xf')]=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x3071('0x3'),_0x3071('0x10'),_0x3071('0x11')]},'log':_0x3071('0xf')});};};exports[_0x3071('0x12')]=function(_0x4a470a,_0x2ace21,_0x11a7ee){return client[_0x3071('0x0')](_0x3071('0x13'),{'body':{'type':_0x2ace21,'uniqueid':_0x11a7ee},'options':{'where':{'id':_0x4a470a['id']}},'log':_0x3071('0x12')});};exports['saveUnpause']=function(_0x5330a8){return client[_0x3071('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x5330a8['id']}},'log':_0x3071('0x12')});};exports[_0x3071('0x14')]=function(_0x5d4883){return client[_0x3071('0x0')]('ShowUser',{'options':{'raw':![],'where':{'role':_0x3071('0x2'),'id':_0x5d4883},'attributes':['id',_0x3071('0x3'),_0x3071('0x4'),_0x3071('0x10'),_0x3071('0x5'),_0x3071('0x6'),_0x3071('0x7'),_0x3071('0x8'),_0x3071('0x9'),_0x3071('0xa'),'interface']},'log':_0x3071('0x14')});};
\ No newline at end of file
+var _0xa9e0=['agent','lastPauseAt','interface','../client','getAgents','Request','name','accountcode','fullname','online','lastLoginAt','pauseType','voicePause','phone','mobile','getTelephones','telephone','internal','savePause','PauseUser','saveUnpause','UnpauseUser','getAgent','ShowUser'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xa9e0[_0x30ae5e];return _0x1f2e93;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'email',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'lastPauseAt',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'interface']},'log':'getAgents'});};};exports[_0x0a9e('0xc')]=function(){return function(){return client['Request']('GetUser',{'options':{'raw':!![],'where':{'role':_0x0a9e('0xd')},'attributes':['id',_0x0a9e('0x3'),_0x0a9e('0x4'),_0x0a9e('0xe')]},'log':_0x0a9e('0xc')});};};exports[_0x0a9e('0xf')]=function(_0x4a4c56,_0x50dfb2,_0x527cdd){return client['Request'](_0x0a9e('0x10'),{'body':{'type':_0x50dfb2,'uniqueid':_0x527cdd},'options':{'where':{'id':_0x4a4c56['id']}},'log':_0x0a9e('0xf')});};exports[_0x0a9e('0x11')]=function(_0x26d672){return client[_0x0a9e('0x2')](_0x0a9e('0x12'),{'body':{},'options':{'where':{'id':_0x26d672['id']}},'log':'savePause'});};exports[_0x0a9e('0x13')]=function(_0x239b12){return client[_0x0a9e('0x2')](_0x0a9e('0x14'),{'options':{'raw':![],'where':{'role':_0x0a9e('0x15'),'id':_0x239b12},'attributes':['id',_0x0a9e('0x3'),'email',_0x0a9e('0x4'),'fullname',_0x0a9e('0x6'),'lastLoginAt',_0x0a9e('0x8'),_0x0a9e('0x16'),'voicePause',_0x0a9e('0x17')]},'log':'getAgent'});};
\ No newline at end of file
index ec40ad2..6119e0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a5d=['CreateVoiceAgentReport','UpdateVoiceAgentReport','../client','Request'];(function(_0x33f4c7,_0x328598){var _0x56159d=function(_0x97801f){while(--_0x97801f){_0x33f4c7['push'](_0x33f4c7['shift']());}};_0x56159d(++_0x328598);}(_0x4a5d,0xe2));var _0xd4a5=function(_0x2dc96f,_0x459058){_0x2dc96f=_0x2dc96f-0x0;var _0xd012da=_0x4a5d[_0x2dc96f];return _0xd012da;};'use strict';var client=require(_0xd4a5('0x0'));exports['create']=function(_0x3c8e34){return client[_0xd4a5('0x1')](_0xd4a5('0x2'),{'body':_0x3c8e34,'log':'CreateVoiceAgentReport'});};exports['update']=function(_0x160429,_0x4d1ded,_0xe32c6d){return client[_0xd4a5('0x1')](_0xd4a5('0x3'),{'body':_0x160429,'options':{'where':{'uniqueid':_0x4d1ded,'interface':_0xe32c6d,'agentcomplete':!![]}},'log':_0xd4a5('0x3')});};
\ No newline at end of file
+var _0x01c1=['create','CreateVoiceAgentReport','update','Request','UpdateVoiceAgentReport','../client'];(function(_0x44bc96,_0x56d9db){var _0x336ba0=function(_0x55b5e2){while(--_0x55b5e2){_0x44bc96['push'](_0x44bc96['shift']());}};_0x336ba0(++_0x56d9db);}(_0x01c1,0x1d3));var _0x101c=function(_0x1a0cfd,_0x55a889){_0x1a0cfd=_0x1a0cfd-0x0;var _0x41453c=_0x01c1[_0x1a0cfd];return _0x41453c;};'use strict';var client=require(_0x101c('0x0'));exports[_0x101c('0x1')]=function(_0x4b5b12){return client['Request']('CreateVoiceAgentReport',{'body':_0x4b5b12,'log':_0x101c('0x2')});};exports[_0x101c('0x3')]=function(_0xadc8c4,_0x5e1b3a,_0x48a079){return client[_0x101c('0x4')]('UpdateVoiceAgentReport',{'body':_0xadc8c4,'options':{'where':{'uniqueid':_0x5e1b3a,'interface':_0x48a079,'agentcomplete':!![]}},'log':_0x101c('0x5')});};
\ No newline at end of file
index ea65f9a..cfab83d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ab8=['merge','calleridnum','callerid','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','disposition','duration','billableseconds','GetVoiceCallReports','moment','util','../client','create','Request'];(function(_0xe63d41,_0x1defe4){var _0x4973c5=function(_0x2ed683){while(--_0x2ed683){_0xe63d41['push'](_0xe63d41['shift']());}};_0x4973c5(++_0x1defe4);}(_0x4ab8,0xcd));var _0x84ab=function(_0x5bd182,_0x2a7911){_0x5bd182=_0x5bd182-0x0;var _0x51d8cb=_0x4ab8[_0x5bd182];return _0x51d8cb;};'use strict';var moment=require(_0x84ab('0x0'));var util=require(_0x84ab('0x1'));var _=require('lodash');var client=require(_0x84ab('0x2'));exports[_0x84ab('0x3')]=function(_0x13ca0b){return client[_0x84ab('0x4')]('CreateVoiceCallReport',{'body':_[_0x84ab('0x5')](_0x13ca0b,{'source':_0x13ca0b[_0x84ab('0x6')],'destinationcontext':_0x13ca0b['context'],'callerid':_0x13ca0b[_0x84ab('0x7')],'amaflags':_0x84ab('0x8')}),'log':'CreateVoiceCallReport'});};exports[_0x84ab('0x9')]=function(){return function(){return client[_0x84ab('0x4')](_0x84ab('0xa'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()[_0x84ab('0xb')](_0x84ab('0xc'))[_0x84ab('0xd')](_0x84ab('0xe')),moment()[_0x84ab('0xf')](_0x84ab('0xc'))[_0x84ab('0xd')](_0x84ab('0xe'))]}},'attributes':[_0x84ab('0x10'),_0x84ab('0x11'),_0x84ab('0x12'),_0x84ab('0x13')]},'log':_0x84ab('0x14')});};};
\ No newline at end of file
+var _0xd42c=['../client','create','Request','CreateVoiceCallReport','calleridnum','context','callerid','GetVoiceCallReport','startOf','day','format','endOf','YYYY-MM-DD\x20HH:mm:ss','type','disposition','billableseconds','GetVoiceCallReports','moment','util','lodash'];(function(_0x223c0d,_0x3ec04d){var _0x207827=function(_0x39d240){while(--_0x39d240){_0x223c0d['push'](_0x223c0d['shift']());}};_0x207827(++_0x3ec04d);}(_0xd42c,0xed));var _0xcd42=function(_0x3883af,_0x5eb85c){_0x3883af=_0x3883af-0x0;var _0x5784ca=_0xd42c[_0x3883af];return _0x5784ca;};'use strict';var moment=require(_0xcd42('0x0'));var util=require(_0xcd42('0x1'));var _=require(_0xcd42('0x2'));var client=require(_0xcd42('0x3'));exports[_0xcd42('0x4')]=function(_0x244b5f){return client[_0xcd42('0x5')](_0xcd42('0x6'),{'body':_['merge'](_0x244b5f,{'source':_0x244b5f[_0xcd42('0x7')],'destinationcontext':_0x244b5f[_0xcd42('0x8')],'callerid':_0x244b5f[_0xcd42('0x9')],'amaflags':'DOCUMENTATION'}),'log':_0xcd42('0x6')});};exports['getVoiceCallReports']=function(){return function(){return client[_0xcd42('0x5')](_0xcd42('0xa'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()[_0xcd42('0xb')](_0xcd42('0xc'))[_0xcd42('0xd')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xcd42('0xe')]('day')[_0xcd42('0xd')](_0xcd42('0xf'))]}},'attributes':[_0xcd42('0x10'),_0xcd42('0x11'),'duration',_0xcd42('0x12')]},'log':_0xcd42('0x13')});};};
\ No newline at end of file
index 0c821b4..9eaa30a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce01=['CreateVoiceDialReport','../client','create'];(function(_0x153304,_0x25da33){var _0x479c46=function(_0x3335c2){while(--_0x3335c2){_0x153304['push'](_0x153304['shift']());}};_0x479c46(++_0x25da33);}(_0xce01,0x100));var _0x1ce0=function(_0x45ee1a,_0x3236a8){_0x45ee1a=_0x45ee1a-0x0;var _0x2f7ddc=_0xce01[_0x45ee1a];return _0x2f7ddc;};'use strict';var client=require(_0x1ce0('0x0'));exports[_0x1ce0('0x1')]=function(_0x33ebed){return client['Request']('CreateVoiceDialReport',{'body':_0x33ebed,'log':_0x1ce0('0x2')});};
\ No newline at end of file
+var _0x43c8=['CreateVoiceDialReport','create'];(function(_0x229f6f,_0x45d934){var _0xf1314c=function(_0x1c25db){while(--_0x1c25db){_0x229f6f['push'](_0x229f6f['shift']());}};_0xf1314c(++_0x45d934);}(_0x43c8,0x1a3));var _0x843c=function(_0x534e90,_0xabba3){_0x534e90=_0x534e90-0x0;var _0x1ee181=_0x43c8[_0x534e90];return _0x1ee181;};'use strict';var client=require('../client');exports[_0x843c('0x0')]=function(_0x4fa0a9){return client['Request'](_0x843c('0x1'),{'body':_0x4fa0a9,'log':_0x843c('0x1')});};
\ No newline at end of file
index f9c9780..855f4de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0565=['exten','recordingFormat','../client','getVoiceExtensions','Request','GetVoiceExtension'];(function(_0x5627e1,_0x1b2dbf){var _0x2f013f=function(_0x142015){while(--_0x142015){_0x5627e1['push'](_0x5627e1['shift']());}};_0x2f013f(++_0x1b2dbf);}(_0x0565,0xf2));var _0x5056=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x0565[_0x59ee6f];return _0x4c0979;};'use strict';var client=require(_0x5056('0x0'));exports[_0x5056('0x1')]=function(){return function(){return client[_0x5056('0x2')](_0x5056('0x3'),{'options':{'raw':!![],'attributes':['id',_0x5056('0x4'),_0x5056('0x5')],'where':{'VoiceExtensionId':null}},'log':_0x5056('0x1')});};};
\ No newline at end of file
+var _0x9c5e=['exten','../client','getVoiceExtensions','Request','GetVoiceExtension'];(function(_0x184fcc,_0x1a4854){var _0x41ecc0=function(_0x3f4dd0){while(--_0x3f4dd0){_0x184fcc['push'](_0x184fcc['shift']());}};_0x41ecc0(++_0x1a4854);}(_0x9c5e,0x9c));var _0xe9c5=function(_0x2a001a,_0x1cd75f){_0x2a001a=_0x2a001a-0x0;var _0x24eb20=_0x9c5e[_0x2a001a];return _0x24eb20;};'use strict';var client=require(_0xe9c5('0x0'));exports[_0xe9c5('0x1')]=function(){return function(){return client[_0xe9c5('0x2')](_0xe9c5('0x3'),{'options':{'raw':!![],'attributes':['id',_0xe9c5('0x4'),'recordingFormat'],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
index f7c8f2c..9454731 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08f4=['dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','Trunk','Pause','mandatoryDispositionPause','TrunkBackup','callerid','active','Interval','Intervals','interval','../client','getVoiceQueues','Request','GetVoiceQueue','name','acw','acwTimeout','monitor_format','type','dialActive','dialMethod','dialPowerLevel'];(function(_0x3c818c,_0x11055a){var _0x21594d=function(_0x30aefe){while(--_0x30aefe){_0x3c818c['push'](_0x3c818c['shift']());}};_0x21594d(++_0x11055a);}(_0x08f4,0x6e));var _0x408f=function(_0x4d4b7d,_0x24175f){_0x4d4b7d=_0x4d4b7d-0x0;var _0x504fe9=_0x08f4[_0x4d4b7d];return _0x504fe9;};'use strict';var client=require(_0x408f('0x0'));exports[_0x408f('0x1')]=function(){return function(){return client[_0x408f('0x2')](_0x408f('0x3'),{'options':{'raw':![],'attributes':['id',_0x408f('0x4'),_0x408f('0x5'),_0x408f('0x6'),'autopause',_0x408f('0x7'),_0x408f('0x8'),_0x408f('0x9'),_0x408f('0xa'),'dialLimitChannel','dialLimitQueue',_0x408f('0xb'),_0x408f('0xc'),_0x408f('0xd'),'dialPredictiveInterval',_0x408f('0xe'),_0x408f('0xf'),_0x408f('0x10'),_0x408f('0x11'),_0x408f('0x12'),_0x408f('0x13'),_0x408f('0x14'),_0x408f('0x15'),'dialBusyMaxRetry','dialBusyRetryFrequency',_0x408f('0x16'),_0x408f('0x17'),'dialGlobalMaxRetry','dialTimezone',_0x408f('0x18'),_0x408f('0x19'),_0x408f('0x1a'),_0x408f('0x1b'),_0x408f('0x1c'),_0x408f('0x1d'),'dialAMDAfterGreetingSilence',_0x408f('0x1e'),_0x408f('0x1f'),_0x408f('0x20'),'dialAMDMaximumNumberOfWords',_0x408f('0x21'),_0x408f('0x22'),_0x408f('0x23'),_0x408f('0x24'),'dialRecallInQueue',_0x408f('0x25'),_0x408f('0x26'),_0x408f('0x27'),_0x408f('0x28'),_0x408f('0x7'),_0x408f('0x29'),_0x408f('0x2a'),_0x408f('0x2b'),'dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0x408f('0x2c'),_0x408f('0x2d'),_0x408f('0x2e'),'dialMachineMaxRetry','dialMachineRetryFrequency',_0x408f('0x2f'),_0x408f('0x30'),_0x408f('0x31'),_0x408f('0x32'),_0x408f('0x33')],'include':[{'model':_0x408f('0x34'),'as':_0x408f('0x34'),'attributes':['id',_0x408f('0x4'),'callerid','active']},{'model':_0x408f('0x35'),'as':_0x408f('0x36'),'attributes':['id','name']},{'model':_0x408f('0x34'),'as':_0x408f('0x37'),'attributes':['id',_0x408f('0x4'),_0x408f('0x38'),_0x408f('0x39')]},{'model':_0x408f('0x3a'),'as':_0x408f('0x3a'),'attributes':['id',_0x408f('0x4')],'include':[{'model':_0x408f('0x3a'),'as':_0x408f('0x3b'),'attributes':['id','name',_0x408f('0x3c')]}]}]},'log':_0x408f('0x1')});};};
\ No newline at end of file
+var _0x1c01=['Intervals','interval','getVoiceQueues','../client','Request','GetVoiceQueue','acw','acwTimeout','autopause','type','dialMethod','dialLimitChannel','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','mandatoryDisposition','dialPredictiveIntervalMinThreshold','Trunk','name','callerid','active','mandatoryDispositionPause','Interval'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x1c01,0x1bc));var _0x11c0=function(_0x4aa1cc,_0x2c3ae0){_0x4aa1cc=_0x4aa1cc-0x0;var _0x2ab33f=_0x1c01[_0x4aa1cc];return _0x2ab33f;};'use strict';var client=require(_0x11c0('0x0'));exports['getVoiceQueues']=function(){return function(){return client[_0x11c0('0x1')](_0x11c0('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x11c0('0x3'),_0x11c0('0x4'),_0x11c0('0x5'),'monitor_format',_0x11c0('0x6'),'dialActive',_0x11c0('0x7'),_0x11c0('0x8'),'dialLimitQueue',_0x11c0('0x9'),_0x11c0('0xa'),_0x11c0('0xb'),_0x11c0('0xc'),_0x11c0('0xd'),'dialOriginateCallerIdNumber',_0x11c0('0xe'),_0x11c0('0xf'),_0x11c0('0x10'),_0x11c0('0x11'),_0x11c0('0x12'),_0x11c0('0x13'),_0x11c0('0x14'),_0x11c0('0x15'),_0x11c0('0x16'),_0x11c0('0x17'),_0x11c0('0x18'),'dialTimezone',_0x11c0('0x19'),_0x11c0('0x1a'),_0x11c0('0x1b'),_0x11c0('0x1c'),'dialAMDInitialSilence',_0x11c0('0x1d'),_0x11c0('0x1e'),'dialAMDTotalAnalysisTime','dialAMDMinWordLength',_0x11c0('0x1f'),_0x11c0('0x20'),_0x11c0('0x21'),_0x11c0('0x22'),_0x11c0('0x23'),_0x11c0('0x24'),_0x11c0('0x25'),_0x11c0('0x26'),_0x11c0('0x27'),_0x11c0('0x28'),'dialQueueProject2','monitor_format',_0x11c0('0x29'),_0x11c0('0x2a'),_0x11c0('0x2b'),_0x11c0('0x2c'),_0x11c0('0x2d'),_0x11c0('0x2e'),_0x11c0('0x2f'),'dialAbandonedMaxRetry',_0x11c0('0x30'),_0x11c0('0x31'),_0x11c0('0x32'),_0x11c0('0x33'),'dialAgentRejectRetryFrequency',_0x11c0('0x34'),'dialPredictiveIntervalMaxThreshold',_0x11c0('0x35')],'include':[{'model':_0x11c0('0x36'),'as':_0x11c0('0x36'),'attributes':['id',_0x11c0('0x37'),_0x11c0('0x38'),_0x11c0('0x39')]},{'model':'Pause','as':_0x11c0('0x3a'),'attributes':['id','name']},{'model':_0x11c0('0x36'),'as':'TrunkBackup','attributes':['id',_0x11c0('0x37'),_0x11c0('0x38'),_0x11c0('0x39')]},{'model':_0x11c0('0x3b'),'as':_0x11c0('0x3b'),'attributes':['id',_0x11c0('0x37')],'include':[{'model':'Interval','as':_0x11c0('0x3c'),'attributes':['id',_0x11c0('0x37'),_0x11c0('0x3d')]}]}]},'log':_0x11c0('0x3e')});};};
\ No newline at end of file
index 359766f..ef765ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['queuecallerexit','queuecallerexitAt','moment','lodash','../client','Request','CreateVoiceQueueReport','getVoiceQueueReports','GetVoiceQueueReport','startOf','format','YYYY-MM-DD\x20HH:mm:ss','endOf','queuecallerjoinAt','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt'];(function(_0x38cfbb,_0x3805e7){var _0x47d26c=function(_0x40c6fc){while(--_0x40c6fc){_0x38cfbb['push'](_0x38cfbb['shift']());}};_0x47d26c(++_0x3805e7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xa9e0[_0x2b4411];return _0x8e41ef;};'use strict';var moment=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var client=require(_0x0a9e('0x2'));exports['create']=function(_0x550fbc){return client[_0x0a9e('0x3')]('CreateVoiceQueueReport',{'body':_0x550fbc,'log':_0x0a9e('0x4')});};exports[_0x0a9e('0x5')]=function(){return function(){return client[_0x0a9e('0x3')](_0x0a9e('0x6'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0a9e('0x7')]('day')[_0x0a9e('0x8')](_0x0a9e('0x9')),moment()[_0x0a9e('0xa')]('day')['format'](_0x0a9e('0x9'))]}},'attributes':['uniqueid','queue',_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),'queuecallerabandon','queuecallerabandonAt']},'log':'GetVoiceQueueReports'});};};
\ No newline at end of file
+var _0xa9e0=['queuecallerexit','queuecallerexitAt','moment','lodash','../client','Request','CreateVoiceQueueReport','getVoiceQueueReports','GetVoiceQueueReport','startOf','format','YYYY-MM-DD\x20HH:mm:ss','endOf','queuecallerjoinAt','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt'];(function(_0x233013,_0x4d357e){var _0x94def7=function(_0x480de5){while(--_0x480de5){_0x233013['push'](_0x233013['shift']());}};_0x94def7(++_0x4d357e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'use strict';var moment=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var client=require(_0x0a9e('0x2'));exports['create']=function(_0x550fbc){return client[_0x0a9e('0x3')]('CreateVoiceQueueReport',{'body':_0x550fbc,'log':_0x0a9e('0x4')});};exports[_0x0a9e('0x5')]=function(){return function(){return client[_0x0a9e('0x3')](_0x0a9e('0x6'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0a9e('0x7')]('day')[_0x0a9e('0x8')](_0x0a9e('0x9')),moment()[_0x0a9e('0xa')]('day')['format'](_0x0a9e('0x9'))]}},'attributes':['uniqueid','queue',_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),'queuecallerabandon','queuecallerabandonAt']},'log':'GetVoiceQueueReports'});};};
\ No newline at end of file
index 5298891..dfaf573 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e39=['GetVoiceQueueRtPauses','getVoiceQueueRtPauses'];(function(_0x53b97f,_0x3c6d25){var _0x8cf7d6=function(_0x578fa7){while(--_0x578fa7){_0x53b97f['push'](_0x53b97f['shift']());}};_0x8cf7d6(++_0x3c6d25);}(_0x7e39,0x1c4));var _0x97e3=function(_0x58f16c,_0x34d34f){_0x58f16c=_0x58f16c-0x0;var _0x620433=_0x7e39[_0x58f16c];return _0x620433;};'use strict';var client=require('../client');exports['getVoiceQueueRtPauses']=function(_0x5bf8bc){return function(){return client['Request'](_0x97e3('0x0'),{'options':{'where':{'VoiceQueueId':_0x5bf8bc,'paused':!![]},'raw':!![]},'log':_0x97e3('0x1')});};};
\ No newline at end of file
+var _0x4de1=['getVoiceQueueRtPauses','GetVoiceQueueRtPauses','../client'];(function(_0xc11e79,_0xc1753b){var _0x46d6eb=function(_0x4b5a2d){while(--_0x4b5a2d){_0xc11e79['push'](_0xc11e79['shift']());}};_0x46d6eb(++_0xc1753b);}(_0x4de1,0x1f4));var _0x14de=function(_0x39a2d6,_0x477459){_0x39a2d6=_0x39a2d6-0x0;var _0x23af66=_0x4de1[_0x39a2d6];return _0x23af66;};'use strict';var client=require(_0x14de('0x0'));exports[_0x14de('0x1')]=function(_0x105a24){return function(){return client['Request'](_0x14de('0x2'),{'options':{'where':{'VoiceQueueId':_0x105a24,'paused':!![]},'raw':!![]},'log':_0x14de('0x1')});};};
\ No newline at end of file
index f8cd689..ba41420 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x1ca5d0,_0x41c150){var _0x321f4a=function(_0x533047){while(--_0x533047){_0x1ca5d0['push'](_0x1ca5d0['shift']());}};_0x321f4a(++_0x41c150);}(_0x7a54,0x106));var _0x47a5=function(_0x35fde7,_0x3811ab){_0x35fde7=_0x35fde7-0x0;var _0xbe477e=_0x7a54[_0x35fde7];return _0xbe477e;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x52b7fb,_0x1ec862){var _0x57f320=function(_0x129719){while(--_0x129719){_0x52b7fb['push'](_0x52b7fb['shift']());}};_0x57f320(++_0x1ec862);}(_0x7a54,0x106));var _0x47a5=function(_0x4b277f,_0x38149a){_0x4b277f=_0x4b277f-0x0;var _0x29b991=_0x7a54[_0x4b277f];return _0x29b991;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
index 7777523..f2f421f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd952=['extension','blind','attendedTransfer','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','origtransferercontext','../client','blindTransfer','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transferercontext','transfererlinkedid','transfereechannel','transfereecalleridname','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','isexternal'];(function(_0x1ba725,_0x48a372){var _0x25d693=function(_0x4df893){while(--_0x4df893){_0x1ba725['push'](_0x1ba725['shift']());}};_0x25d693(++_0x48a372);}(_0xd952,0xdc));var _0x2d95=function(_0x3f6bc3,_0x1bea00){_0x3f6bc3=_0x3f6bc3-0x0;var _0x508d33=_0xd952[_0x3f6bc3];return _0x508d33;};'use strict';var client=require(_0x2d95('0x0'));exports['transfers']={};exports[_0x2d95('0x1')]=function(_0xa9337e){return client[_0x2d95('0x2')](_0x2d95('0x3'),{'body':{'result':_0xa9337e[_0x2d95('0x4')],'transfererchannel':_0xa9337e[_0x2d95('0x5')],'transferercalleridnum':_0xa9337e[_0x2d95('0x6')],'transferercalleridname':_0xa9337e[_0x2d95('0x7')],'transfererconnectedlinenum':_0xa9337e[_0x2d95('0x8')],'transfererconnectedlinename':_0xa9337e[_0x2d95('0x9')],'transfereraccountcode':_0xa9337e['transfereraccountcode'],'transferercontext':_0xa9337e[_0x2d95('0xa')],'transfererexten':_0xa9337e['transfererexten'],'transfererlinkedid':_0xa9337e[_0x2d95('0xb')],'transfereechannel':_0xa9337e[_0x2d95('0xc')],'transfereecalleridnum':_0xa9337e['transfereecalleridnum'],'transfereecalleridname':_0xa9337e[_0x2d95('0xd')],'transfereeconnectedlinenum':_0xa9337e['transfereeconnectedlinenum'],'transfereeconnectedlinename':_0xa9337e[_0x2d95('0xe')],'transfereeaccountcode':_0xa9337e[_0x2d95('0xf')],'transfereecontext':_0xa9337e[_0x2d95('0x10')],'transfereeexten':_0xa9337e[_0x2d95('0x11')],'transfereelinkedid':_0xa9337e[_0x2d95('0x12')],'isexternal':_0xa9337e[_0x2d95('0x13')],'context':_0xa9337e['context'],'extension':_0xa9337e[_0x2d95('0x14')],'type':_0x2d95('0x15')},'log':_0x2d95('0x3')});};exports[_0x2d95('0x16')]=function(_0x30a16b){return client[_0x2d95('0x2')](_0x2d95('0x3'),{'body':{'result':_0x30a16b[_0x2d95('0x4')],'transfererchannel':_0x30a16b[_0x2d95('0x17')],'transferercalleridnum':_0x30a16b[_0x2d95('0x18')],'transferercalleridname':_0x30a16b[_0x2d95('0x19')],'transfererconnectedlinenum':_0x30a16b[_0x2d95('0x1a')],'transfererconnectedlinename':_0x30a16b[_0x2d95('0x1b')],'transfereraccountcode':_0x30a16b['origtransfereraccountcode'],'transferercontext':_0x30a16b[_0x2d95('0x1c')],'transfererexten':_0x30a16b[_0x2d95('0x1d')],'transfererlinkedid':_0x30a16b[_0x2d95('0x1e')],'transfereechannel':_0x30a16b[_0x2d95('0x1f')],'transfereecalleridnum':_0x30a16b[_0x2d95('0x20')],'transfereecalleridname':_0x30a16b[_0x2d95('0x21')],'transfereeconnectedlinenum':_0x30a16b[_0x2d95('0x22')],'transfereeconnectedlinename':_0x30a16b[_0x2d95('0x23')],'transfereeaccountcode':_0x30a16b[_0x2d95('0x24')],'transfereecontext':_0x30a16b[_0x2d95('0x25')],'transfereeexten':_0x30a16b[_0x2d95('0x26')],'transfereelinkedid':_0x30a16b['transfertargetlinkedid'],'isexternal':_0x30a16b[_0x2d95('0x13')],'context':_0x30a16b[_0x2d95('0x27')],'extension':_0x30a16b['origtransfererexten'],'type':'attended'},'log':'CreateVoiceTransferReport'});};
\ No newline at end of file
+var _0xa852=['transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','isexternal','origtransferercontext','origtransfererexten','attended','../client','transfers','Request','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererexten','transfereechannel','transfereecalleridnum','transfereeconnectedlinenum','transfereeaccountcode','transfereecontext','transfereeexten','context','extension','CreateVoiceTransferReport','attendedTransfer','secondtransfererconnectedlinename','secondtransferercontext','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum'];(function(_0x11f9f1,_0x2c2574){var _0x2e5352=function(_0x25ff6b){while(--_0x25ff6b){_0x11f9f1['push'](_0x11f9f1['shift']());}};_0x2e5352(++_0x2c2574);}(_0xa852,0x1c6));var _0x2a85=function(_0x4b819a,_0x7a66ec){_0x4b819a=_0x4b819a-0x0;var _0x3e7123=_0xa852[_0x4b819a];return _0x3e7123;};'use strict';var client=require(_0x2a85('0x0'));exports[_0x2a85('0x1')]={};exports['blindTransfer']=function(_0xf5e66d){return client[_0x2a85('0x2')]('CreateVoiceTransferReport',{'body':{'result':_0xf5e66d[_0x2a85('0x3')],'transfererchannel':_0xf5e66d[_0x2a85('0x4')],'transferercalleridnum':_0xf5e66d[_0x2a85('0x5')],'transferercalleridname':_0xf5e66d[_0x2a85('0x6')],'transfererconnectedlinenum':_0xf5e66d[_0x2a85('0x7')],'transfererconnectedlinename':_0xf5e66d[_0x2a85('0x8')],'transfereraccountcode':_0xf5e66d[_0x2a85('0x9')],'transferercontext':_0xf5e66d[_0x2a85('0xa')],'transfererexten':_0xf5e66d[_0x2a85('0xb')],'transfererlinkedid':_0xf5e66d['transfererlinkedid'],'transfereechannel':_0xf5e66d[_0x2a85('0xc')],'transfereecalleridnum':_0xf5e66d[_0x2a85('0xd')],'transfereecalleridname':_0xf5e66d['transfereecalleridname'],'transfereeconnectedlinenum':_0xf5e66d[_0x2a85('0xe')],'transfereeconnectedlinename':_0xf5e66d['transfereeconnectedlinename'],'transfereeaccountcode':_0xf5e66d[_0x2a85('0xf')],'transfereecontext':_0xf5e66d[_0x2a85('0x10')],'transfereeexten':_0xf5e66d[_0x2a85('0x11')],'transfereelinkedid':_0xf5e66d['transfereelinkedid'],'isexternal':_0xf5e66d['isexternal'],'context':_0xf5e66d[_0x2a85('0x12')],'extension':_0xf5e66d[_0x2a85('0x13')],'type':'blind'},'log':_0x2a85('0x14')});};exports[_0x2a85('0x15')]=function(_0x4ad1a1){return client[_0x2a85('0x2')](_0x2a85('0x14'),{'body':{'result':_0x4ad1a1[_0x2a85('0x3')],'transfererchannel':_0x4ad1a1['origtransfererchannel'],'transferercalleridnum':_0x4ad1a1['origtransferercalleridnum'],'transferercalleridname':_0x4ad1a1['origtransferercalleridname'],'transfererconnectedlinenum':_0x4ad1a1['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x4ad1a1[_0x2a85('0x16')],'transfereraccountcode':_0x4ad1a1['origtransfereraccountcode'],'transferercontext':_0x4ad1a1[_0x2a85('0x17')],'transfererexten':_0x4ad1a1['secondtransfererexten'],'transfererlinkedid':_0x4ad1a1[_0x2a85('0x18')],'transfereechannel':_0x4ad1a1[_0x2a85('0x19')],'transfereecalleridnum':_0x4ad1a1[_0x2a85('0x1a')],'transfereecalleridname':_0x4ad1a1[_0x2a85('0x1b')],'transfereeconnectedlinenum':_0x4ad1a1[_0x2a85('0x1c')],'transfereeconnectedlinename':_0x4ad1a1[_0x2a85('0x1d')],'transfereeaccountcode':_0x4ad1a1[_0x2a85('0x1e')],'transfereecontext':_0x4ad1a1[_0x2a85('0x1f')],'transfereeexten':_0x4ad1a1[_0x2a85('0x20')],'transfereelinkedid':_0x4ad1a1['transfertargetlinkedid'],'isexternal':_0x4ad1a1[_0x2a85('0x21')],'context':_0x4ad1a1[_0x2a85('0x22')],'extension':_0x4ad1a1[_0x2a85('0x23')],'type':_0x2a85('0x24')},'log':_0x2a85('0x14')});};
\ No newline at end of file
index bdf54ae..ea621f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb65=['SIP','timers','timer','updateAcw','agents','pause','QueuePause','isConnected','error','username','ami\x20disconnected','pick','keys','module','Reload','Action','then','message','catch','asterisk','command','Command','voiceQueues','hasOwnProperty','strategy','answered','available','pTalking','sumBillable','sumHoldTime','talking','type','abandoned','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','name','active','Interval','push','length','undefined','channels','join','validate','map','find','channel','filename','uniqueid','MixMonitor','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','voicechannel','resolve','StopMixMonitor','destinationchannel','stop','%s.%s','wav','status','StopMixMonitor\x20Success','voicequeuechannel','queueChannels','voicequeuechannelhangup','Hangup','voicequeuechannelredirect','Redirect','context','values','telephones','trunks','outboundChannels','campaigns','run','Event\x20name\x20mandatory','emit','event','send','checkAfterSend','server','http','127.0.0.1','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','jayson/promise','bluebird','../../../config/environment','../properties','../ami','listen','format','%s/%s'];(function(_0x3093fe,_0x5a0cff){var _0x31517d=function(_0x4a6eba){while(--_0x4a6eba){_0x3093fe['push'](_0x3093fe['shift']());}};_0x31517d(++_0x5a0cff);}(_0xfb65,0x82));var _0x5fb6=function(_0x4b8938,_0x1e8d85){_0x4b8938=_0x4b8938-0x0;var _0x196951=_0xfb65[_0x4b8938];return _0x196951;};'use strict';var _=require('lodash');var util=require(_0x5fb6('0x0'));var jayson=require(_0x5fb6('0x1'));var schema=require('validate');var BPromise=require(_0x5fb6('0x2'));var moment=require('moment');var config=require(_0x5fb6('0x3'));var properties=require(_0x5fb6('0x4'));var ami=require(_0x5fb6('0x5'));exports[_0x5fb6('0x6')]=function(_0x3a3b1b,_0x1fefe3,_0x4dec8f){return new BPromise(function(_0x50782b,_0x238914){var _0x1b586b={'QueuePause':function(_0x1f99b8){return new Promise(function(_0x840390,_0x56d6e1){var _0x381710=util[_0x5fb6('0x7')](_0x5fb6('0x8'),_0x5fb6('0x9'),_0x1f99b8['name']);if(_0x3a3b1b[_0x5fb6('0xa')]&&_0x3a3b1b[_0x5fb6('0xa')][_0x381710]&&_0x3a3b1b['timers'][_0x381710][_0x5fb6('0xb')]){_0x3a3b1b[_0x5fb6('0xa')][_0x381710][_0x5fb6('0xc')]();}if(_0x3a3b1b[_0x5fb6('0xd')][_0x381710]){_0x3a3b1b[_0x5fb6('0xd')][_0x381710]['updateStatusRealtime']({'statePause':_0x1f99b8[_0x5fb6('0xe')]?!![]:![]});}_0x840390({'code':0xc8,'message':_0x5fb6('0xf')});});},'Reload':function(_0x42285b){var _0x41d503=this;return new Promise(function(_0x6b58a2,_0x1bab1f){if(ami[_0x5fb6('0x10')]()==![]){return _0x1bab1f(_0x41d503[_0x5fb6('0x11')](0x1f4,[config['asterisk']['ip'],config['asterisk'][_0x5fb6('0x12')],_0x5fb6('0x13')]['join']('\x20')));}_0x42285b=_[_0x5fb6('0x14')](_0x42285b,_[_0x5fb6('0x15')](properties[_0x5fb6('0x16')]));_0x42285b['action']=_0x5fb6('0x17');return ami[_0x5fb6('0x18')](_0x42285b)[_0x5fb6('0x19')](function(_0x182af5){_0x6b58a2({'code':0xc8,'message':_0x182af5[_0x5fb6('0x1a')]});})[_0x5fb6('0x1b')](function(_0x50bca8){_0x1bab1f(_0x41d503[_0x5fb6('0x11')](0x1f5,_0x50bca8['message']));});});},'Command':function(_0x32f58a){var _0x54c319=this;return new Promise(function(_0x43a252,_0x3ec3b0){if(ami[_0x5fb6('0x10')]()==![]){return _0x3ec3b0(_0x54c319[_0x5fb6('0x11')](0x1f4,[config[_0x5fb6('0x1c')]['ip'],config[_0x5fb6('0x1c')][_0x5fb6('0x12')],'ami\x20disconnected']['join']('\x20')));}_0x32f58a=_[_0x5fb6('0x14')](_0x32f58a,_0x5fb6('0x1d'));_0x32f58a['action']=_0x5fb6('0x1e');return ami[_0x5fb6('0x18')](_0x32f58a)[_0x5fb6('0x19')](function(_0x36457e){_0x43a252({'code':0xc8,'message':_0x36457e['content']});})[_0x5fb6('0x1b')](function(_0x44aebe){_0x3ec3b0(_0x54c319[_0x5fb6('0x11')](0x1f5,_0x44aebe[_0x5fb6('0x1a')]));});});},'VoiceQueues':function(_0x1b6953){return new Promise(function(_0x1c1b96,_0x4e2bff){var _0x4cbdaf=[];for(var _0x298b44 in _0x3a3b1b[_0x5fb6('0x1f')]){if(_0x3a3b1b[_0x5fb6('0x1f')][_0x5fb6('0x20')](_0x298b44)){var _0x2731a3=_0x3a3b1b[_0x5fb6('0x1f')][_0x298b44];var _0x36ac58={'id':_0x2731a3['id'],'name':_0x2731a3['name'],'strategy':_0x2731a3[_0x5fb6('0x21')],'answered':_0x2731a3[_0x5fb6('0x22')],'available':_0x2731a3[_0x5fb6('0x23')],'loggedIn':_0x2731a3['loggedIn'],'pTalking':_0x2731a3[_0x5fb6('0x24')],'sumBillable':_0x2731a3[_0x5fb6('0x25')],'sumDuration':_0x2731a3['sumDuration'],'sumHoldTime':_0x2731a3[_0x5fb6('0x26')]||0x0,'talking':_0x2731a3[_0x5fb6('0x27')],'total':_0x2731a3['total'],'type':_0x2731a3[_0x5fb6('0x28')],'unmanaged':_0x2731a3['unmanaged'],'abandoned':_0x2731a3[_0x5fb6('0x29')],'waiting':_0x2731a3['waiting'],'loggedInDb':_0x2731a3['loggedInDb']};if(_0x2731a3[_0x5fb6('0x28')]===_0x5fb6('0x2a')){_0x36ac58[_0x5fb6('0x2b')]=_0x2731a3[_0x5fb6('0x2b')];_0x36ac58[_0x5fb6('0x2c')]=_0x2731a3[_0x5fb6('0x2c')];_0x36ac58['dialOriginateCallerIdName']=_0x2731a3[_0x5fb6('0x2d')];_0x36ac58[_0x5fb6('0x2e')]=_0x2731a3[_0x5fb6('0x2e')];_0x36ac58[_0x5fb6('0x2f')]=_0x2731a3[_0x5fb6('0x2f')];_0x36ac58[_0x5fb6('0x30')]=_0x2731a3[_0x5fb6('0x30')];_0x36ac58[_0x5fb6('0x31')]=_0x2731a3[_0x5fb6('0x31')];_0x36ac58[_0x5fb6('0x32')]=_0x2731a3[_0x5fb6('0x32')];_0x36ac58['outboundAnswerCallsDay']=_0x2731a3[_0x5fb6('0x33')];_0x36ac58[_0x5fb6('0x34')]=_0x2731a3['outboundBlacklistCallsDay'];_0x36ac58[_0x5fb6('0x35')]=_0x2731a3['outboundBusyCallsDay'];_0x36ac58['outboundCongestionCallsDay']=_0x2731a3[_0x5fb6('0x36')];_0x36ac58[_0x5fb6('0x37')]=_0x2731a3[_0x5fb6('0x37')];_0x36ac58['outboundDropCallsDayCallersExit']=_0x2731a3[_0x5fb6('0x38')];_0x36ac58['outboundDropCallsDayTimeout']=_0x2731a3['outboundDropCallsDayTimeout'];_0x36ac58[_0x5fb6('0x39')]=_0x2731a3[_0x5fb6('0x39')];_0x36ac58[_0x5fb6('0x3a')]=_0x2731a3[_0x5fb6('0x3a')];_0x36ac58[_0x5fb6('0x3b')]=_0x2731a3[_0x5fb6('0x3b')];_0x36ac58[_0x5fb6('0x3c')]=_0x2731a3[_0x5fb6('0x3c')];_0x36ac58[_0x5fb6('0x3d')]=_0x2731a3[_0x5fb6('0x3d')];_0x36ac58[_0x5fb6('0x3e')]=_0x2731a3[_0x5fb6('0x3e')];_0x36ac58['predictiveIntervalAnsweredCalls']=_0x2731a3[_0x5fb6('0x3f')];_0x36ac58[_0x5fb6('0x40')]=_0x2731a3[_0x5fb6('0x40')];_0x36ac58['predictiveIntervalAvgTalktime']=_0x2731a3[_0x5fb6('0x41')];_0x36ac58['predictiveIntervalDroppedCallsCallersExit']=_0x2731a3[_0x5fb6('0x42')];_0x36ac58['predictiveIntervalDroppedCallsTimeout']=_0x2731a3[_0x5fb6('0x43')];_0x36ac58[_0x5fb6('0x44')]=_0x2731a3[_0x5fb6('0x44')];_0x36ac58[_0x5fb6('0x45')]=_0x2731a3[_0x5fb6('0x45')];_0x36ac58['predictiveIntervalHitRate']=_0x2731a3[_0x5fb6('0x46')];_0x36ac58[_0x5fb6('0x47')]=_0x2731a3[_0x5fb6('0x47')];_0x36ac58[_0x5fb6('0x48')]=_0x2731a3['predictiveIntervalPauses'];_0x36ac58[_0x5fb6('0x49')]=_0x2731a3[_0x5fb6('0x49')];_0x36ac58[_0x5fb6('0x4a')]=_0x2731a3[_0x5fb6('0x4a')];_0x36ac58[_0x5fb6('0x1a')]=_0x2731a3[_0x5fb6('0x1a')];_0x36ac58['originated']=_0x2731a3[_0x5fb6('0x4b')];_0x36ac58[_0x5fb6('0x4c')]=_0x2731a3[_0x5fb6('0x4c')];_0x36ac58[_0x5fb6('0x4d')]=_0x2731a3[_0x5fb6('0x4d')];_0x36ac58[_0x5fb6('0x4e')]=_0x2731a3[_0x5fb6('0x4e')];_0x36ac58[_0x5fb6('0x4f')]=_0x2731a3[_0x5fb6('0x4f')];_0x36ac58[_0x5fb6('0x50')]=_0x2731a3[_0x5fb6('0x50')];_0x36ac58['startProgressive']=_0x2731a3[_0x5fb6('0x51')];}if(_0x2731a3['Trunk']){_0x36ac58[_0x5fb6('0x52')]={'id':_0x2731a3[_0x5fb6('0x52')]['id'],'name':_0x2731a3['Trunk'][_0x5fb6('0x53')],'active':_0x2731a3[_0x5fb6('0x52')][_0x5fb6('0x54')],'callerid':_0x2731a3['Trunk']['callerid']};}if(_0x2731a3[_0x5fb6('0x55')]){_0x36ac58[_0x5fb6('0x55')]={'id':_0x2731a3[_0x5fb6('0x55')]['id'],'name':_0x2731a3[_0x5fb6('0x55')][_0x5fb6('0x53')]};}_0x4cbdaf[_0x5fb6('0x56')](_0x36ac58);}}_0x1c1b96({'count':_0x4cbdaf[_0x5fb6('0x57')],'rows':_0x4cbdaf});});},'UpdateVoiceQueue':function(_0x3fe007){return new Promise(function(_0x29ac9f,_0x1cd003){var _0xb32da8=_['find'](_0x3a3b1b[_0x5fb6('0x1f')],{'id':parseInt(_0x3fe007['id'])});var _0x5513dd=_['omit'](_0x3fe007,['id']);if(_0xb32da8){for(var _0x2d8b10 in _0x5513dd){if(typeof _0x5513dd[_0x2d8b10]!==_0x5fb6('0x58')&&typeof _0xb32da8[_0x2d8b10]!==_0x5fb6('0x58')){_0xb32da8[_0x2d8b10]=_0x5513dd[_0x2d8b10];}}_0x29ac9f(_0xb32da8);}else{_0x1cd003();}});},'VoiceChannels':function(_0x2a751e){return new Promise(function(_0x45b244,_0x19f7da){var _0x45ba31=_['values'](_0x3a3b1b[_0x5fb6('0x59')]);_0x45b244({'count':_0x45ba31[_0x5fb6('0x57')],'rows':_0x45ba31});});},'VoiceChannelMixMonitor':function(_0x59c923){var _0x1f5a28=this;return new Promise(function(_0x7934fd,_0x1d6188){if(ami[_0x5fb6('0x10')]()==![]){return _0x1d6188(_0x1f5a28[_0x5fb6('0x11')](0x1f4,[config[_0x5fb6('0x1c')]['ip'],config[_0x5fb6('0x1c')][_0x5fb6('0x12')],'ami\x20disconnected'][_0x5fb6('0x5a')]('\x20')));}var _0xef30cc=schema(properties['voicechannel'])[_0x5fb6('0x5b')](_0x59c923);if(_0xef30cc[_0x5fb6('0x57')]>0x0){return _0x1d6188(_0x1f5a28[_0x5fb6('0x11')](0x1f4,_[_0x5fb6('0x5c')](_0xef30cc,'message')['join'](',\x20')));}var _0xd287ab=_[_0x5fb6('0x5d')](_0x3a3b1b[_0x5fb6('0x59')],{'uniqueid':_0x59c923['uniqueid']});if(_0xd287ab&&_0xd287ab[_0x5fb6('0x5e')]){var _0x5b429d=util[_0x5fb6('0x7')]('%s.%s',_0x59c923[_0x5fb6('0x5f')]||_0x59c923[_0x5fb6('0x60')],_0x59c923[_0x5fb6('0x7')]||'wav');return ami[_0x5fb6('0x18')]({'action':_0x5fb6('0x61'),'channel':_0xd287ab[_0x5fb6('0x5e')],'file':_0x5b429d,'options':_0x5fb6('0x62')})[_0x5fb6('0x19')](function(_0x39b672){var _0x108622=_[_0x5fb6('0x5d')](_0xd287ab[_0x5fb6('0x63')],{'filename':_0x5fb6('0x64')+_0x5b429d[_0x5fb6('0x65')]()});if(_['isNil'](_0x108622)){_0xd287ab[_0x5fb6('0x63')]['push']({'filename':_0x5fb6('0x64')+_0x5b429d[_0x5fb6('0x65')](),'createdAt':moment()[_0x5fb6('0x7')](_0x5fb6('0x66')),'mixmonitorid':_0x39b672[_0x5fb6('0x67')],'status':_0x5fb6('0x68')});}else{_0x108622['mixmonitorid']=_0x39b672['mixmonitorid'];_0x108622['status']='rec';}_0x7934fd({'code':0xc8,'message':[_0x59c923[_0x5fb6('0x60')],_0x5fb6('0x69'),_0x39b672[_0x5fb6('0x67')]][_0x5fb6('0x5a')]('\x20'),'mixmonitorid':_0x39b672['mixmonitorid']});})[_0x5fb6('0x1b')](function(_0x17451b){_0x1d6188(_0x1f5a28['error'](0x1f5,[_0x59c923[_0x5fb6('0x60')],_0x17451b['message'][_0x5fb6('0x65')]()][_0x5fb6('0x5a')]('\x20')));});}else{return _0x1d6188(_0x1f5a28['error'](0x1f5,_0x5fb6('0x6a')));}});},'VoiceChannelStopMixMonitor':function(_0x43919b){var _0x1b9bd8=this;return new Promise(function(_0x4da260,_0x300225){if(ami[_0x5fb6('0x10')]()==![]){return _0x300225(_0x1b9bd8[_0x5fb6('0x11')](0x1f4,[config[_0x5fb6('0x1c')]['ip'],config[_0x5fb6('0x1c')][_0x5fb6('0x12')],_0x5fb6('0x13')]['join']('\x20')));}var _0x39ff48=schema(properties[_0x5fb6('0x6b')])[_0x5fb6('0x5b')](_0x43919b);if(_0x39ff48[_0x5fb6('0x57')]>0x0){return _0x300225(_0x1b9bd8[_0x5fb6('0x11')](0x1f4,_[_0x5fb6('0x5c')](_0x39ff48,'message')[_0x5fb6('0x5a')](',\x20')));}var _0x4e6aaf=_[_0x5fb6('0x5d')](_0x3a3b1b[_0x5fb6('0x59')],{'uniqueid':_0x43919b[_0x5fb6('0x60')]});if(_0x4e6aaf){return BPromise[_0x5fb6('0x6c')]()[_0x5fb6('0x19')](function(){if(_0x4e6aaf[_0x5fb6('0x5e')]){return ami[_0x5fb6('0x18')]({'action':_0x5fb6('0x6d'),'channel':_0x4e6aaf['channel'],'mixmonitorid':_0x43919b['mixmonitorid']})[_0x5fb6('0x1b')](function(_0x3f6762){});}})[_0x5fb6('0x19')](function(){if(_0x4e6aaf[_0x5fb6('0x6e')]){return ami['Action']({'action':'StopMixMonitor','channel':_0x4e6aaf[_0x5fb6('0x6e')],'mixmonitorid':_0x43919b['mixmonitorid']})['catch'](function(_0x3038d1){});}})[_0x5fb6('0x19')](function(_0x236d8b){var _0x186744=_[_0x5fb6('0x5d')](_0x4e6aaf['monitors'],{'mixmonitorid':_0x43919b[_0x5fb6('0x67')]});if(_0x186744){_0x186744['status']=_0x5fb6('0x6f');}})[_0x5fb6('0x19')](function(){var _0x5484e0=util[_0x5fb6('0x7')](_0x5fb6('0x70'),_0x43919b[_0x5fb6('0x5f')]||_0x43919b['uniqueid'],_0x43919b[_0x5fb6('0x7')]||_0x5fb6('0x71'));var _0x3c9a55=_['find'](_0x4e6aaf['monitors'],{'filename':'/var/spool/asterisk/monitor/'+_0x5484e0[_0x5fb6('0x65')]()});if(_0x3c9a55){_0x3c9a55[_0x5fb6('0x72')]=_0x5fb6('0x6f');}})[_0x5fb6('0x19')](function(){_0x4da260({'code':0xc8,'message':[_0x43919b[_0x5fb6('0x60')],_0x5fb6('0x73')][_0x5fb6('0x5a')]('\x20')});})['catch'](function(_0x3c4a38){_0x300225(_0x1b9bd8[_0x5fb6('0x11')](0x1f5,[_0x43919b[_0x5fb6('0x60')],_0x3c4a38[_0x5fb6('0x1a')][_0x5fb6('0x65')]()]['join']('\x20')));});}else{return _0x300225(_0x1b9bd8['error'](0x1f5,_0x5fb6('0x6a')));}});},'VoiceQueuesChannels':function(_0x547006){return new Promise(function(_0x5cda26,_0x360170){var _0x539301=_['values'](_0x3a3b1b['queueChannels']);_0x5cda26({'count':_0x539301[_0x5fb6('0x57')],'rows':_0x539301});});},'VoiceQueuesChannel':function(_0x5b95b2){var _0x11ec8a=this;return new Promise(function(_0x39e103,_0x284e09){var _0x28eecc=schema(properties[_0x5fb6('0x74')])[_0x5fb6('0x5b')](_0x5b95b2);if(_0x28eecc[_0x5fb6('0x57')]>0x0){return _0x284e09(_0x11ec8a[_0x5fb6('0x11')](0x1f4,_[_0x5fb6('0x5c')](_0x28eecc,_0x5fb6('0x1a'))[_0x5fb6('0x5a')](',\x20')));}var _0x26dc0e=_[_0x5fb6('0x5d')](_0x3a3b1b[_0x5fb6('0x75')],{'uniqueid':_0x5b95b2[_0x5fb6('0x60')]});if(_0x26dc0e){_0x39e103(_0x26dc0e);}else{return _0x284e09(_0x11ec8a[_0x5fb6('0x11')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelHangup':function(_0x5af783){var _0x377d13=this;return new Promise(function(_0x55d588,_0x5afa87){if(ami[_0x5fb6('0x10')]()==![]){return _0x5afa87(_0x377d13[_0x5fb6('0x11')](0x1f4,[config['asterisk']['ip'],config[_0x5fb6('0x1c')][_0x5fb6('0x12')],_0x5fb6('0x13')]['join']('\x20')));}var _0x3ce1ad=schema(properties[_0x5fb6('0x76')])[_0x5fb6('0x5b')](_0x5af783);if(_0x3ce1ad[_0x5fb6('0x57')]>0x0){return _0x5afa87(_0x377d13[_0x5fb6('0x11')](0x1f4,_['map'](_0x3ce1ad,'message')['join'](',\x20')));}var _0x170358=_[_0x5fb6('0x5d')](_0x3a3b1b[_0x5fb6('0x75')],{'uniqueid':_0x5af783[_0x5fb6('0x60')]});if(_0x170358&&_0x170358[_0x5fb6('0x5e')]){return ami[_0x5fb6('0x18')]({'action':_0x5fb6('0x77'),'channel':_0x170358[_0x5fb6('0x5e')]})[_0x5fb6('0x19')](function(_0x25b4c2){_0x55d588({'code':0xc8,'message':[_0x5af783[_0x5fb6('0x60')],_0x25b4c2['message']['toLowerCase']()]['join']('\x20')});})[_0x5fb6('0x1b')](function(_0xf96e9f){_0x5afa87(_0x377d13[_0x5fb6('0x11')](0x1f5,[_0x5af783[_0x5fb6('0x60')],_0xf96e9f[_0x5fb6('0x1a')]['toLowerCase']()][_0x5fb6('0x5a')]('\x20')));});}else{return _0x5afa87(_0x377d13['error'](0x1f5,_0x5fb6('0x6a')));}});},'VoiceQueuesChannelRedirect':function(_0x1d5642){var _0x5ebaf6=this;return new Promise(function(_0x151343,_0x5a66f7){if(ami[_0x5fb6('0x10')]()==![]){return _0x5a66f7(_0x5ebaf6[_0x5fb6('0x11')](0x1f4,[config[_0x5fb6('0x1c')]['ip'],config[_0x5fb6('0x1c')]['username'],_0x5fb6('0x13')][_0x5fb6('0x5a')]('\x20')));}var _0x34a69a=schema(properties[_0x5fb6('0x78')])[_0x5fb6('0x5b')](_0x1d5642);if(_0x34a69a[_0x5fb6('0x57')]>0x0){return _0x5a66f7(_0x5ebaf6[_0x5fb6('0x11')](0x1f4,_[_0x5fb6('0x5c')](_0x34a69a,_0x5fb6('0x1a'))[_0x5fb6('0x5a')](',\x20')));}var _0x2809a2=_[_0x5fb6('0x5d')](_0x3a3b1b['queueChannels'],{'uniqueid':_0x1d5642[_0x5fb6('0x60')]});if(_0x2809a2&&_0x2809a2[_0x5fb6('0x5e')]){return ami[_0x5fb6('0x18')]({'action':_0x5fb6('0x79'),'channel':_0x2809a2[_0x5fb6('0x5e')],'exten':_0x1d5642['exten'],'context':_0x1d5642[_0x5fb6('0x7a')]||_0x2809a2['context'],'priority':0x1})['then'](function(_0x55b06e){_0x151343({'code':0xc8,'message':[_0x1d5642[_0x5fb6('0x60')],_0x55b06e[_0x5fb6('0x1a')][_0x5fb6('0x65')]()]['join']('\x20')});})[_0x5fb6('0x1b')](function(_0x5793c8){_0x5a66f7(_0x5ebaf6['error'](0x1f5,[_0x1d5642[_0x5fb6('0x60')],_0x5793c8[_0x5fb6('0x1a')][_0x5fb6('0x65')]()][_0x5fb6('0x5a')]('\x20')));});}else{return _0x5a66f7(_0x5ebaf6[_0x5fb6('0x11')](0x1f5,_0x5fb6('0x6a')));}});},'Agents':function(_0x198e9e){return new Promise(function(_0x469bfb,_0xbbeca5){var _0x24cc41=_['values'](_0x3a3b1b['agents']);_0x469bfb({'count':_0x24cc41[_0x5fb6('0x57')],'rows':_0x24cc41});});},'Telephones':function(_0x817cec){return new Promise(function(_0x1fc37b,_0x419159){var _0x15b8f3=_[_0x5fb6('0x7b')](_0x3a3b1b[_0x5fb6('0x7c')]);_0x1fc37b({'count':_0x15b8f3[_0x5fb6('0x57')],'rows':_0x15b8f3});});},'Trunks':function(_0xfc13a5){return new Promise(function(_0x2eda7e,_0x2789d0){var _0x2407d0=_[_0x5fb6('0x7b')](_0x3a3b1b[_0x5fb6('0x7d')]);_0x2eda7e({'count':_0x2407d0[_0x5fb6('0x57')],'rows':_0x2407d0});});},'OutboundChannels':function(_0x498b66){return new Promise(function(_0x4dd7af,_0x4c2682){var _0xacdd1b=_[_0x5fb6('0x7b')](_0x3a3b1b[_0x5fb6('0x7e')]);_0x4dd7af({'count':_0xacdd1b[_0x5fb6('0x57')],'rows':_0xacdd1b});});},'Outbound':function(_0x4d6017){return new Promise(function(_0x4b1f02,_0x1b4f87){_0x4b1f02(_0x3a3b1b[_0x5fb6('0x2a')]);});},'Campaigns':function(_0x4bb44e){return new Promise(function(_0xc4635a,_0x12e012){var _0x1b15ae=_[_0x5fb6('0x7b')](_0x3a3b1b[_0x5fb6('0x7f')]);_0xc4635a({'count':_0x1b15ae[_0x5fb6('0x57')],'rows':_0x1b15ae});});},'VoiceQueuesPreview':function(_0x39e7f6){var _0x421ecf=this;return new Promise(function(_0xe1df32,_0x5057f4){_0x1fefe3[_0x5fb6('0x80')](_0x39e7f6['id'])[_0x5fb6('0x19')](function(_0x53d3c6){_0xe1df32({'code':0xc8,'message':_0x53d3c6[_0x5fb6('0x1a')]});})[_0x5fb6('0x1b')](function(_0x21591b){_0x5057f4(_0x421ecf[_0x5fb6('0x11')](0x1f4,_0x21591b[_0x5fb6('0x1a')]));});});},'EventManager':function(_0x29a18d){var _0x3181f1=this;return new Promise(function(_0x1c184c,_0x4f7c71){if(!_0x29a18d['event']){return _0x4f7c71(_0x3181f1[_0x5fb6('0x11')](0x1f4,_0x5fb6('0x81')));}ami[_0x5fb6('0x82')]('custom:'+_0x29a18d[_0x5fb6('0x83')],_0x29a18d[_0x5fb6('0x1a')]);_0x1c184c({'code':0xc8,'message':_0x29a18d});});},'FaxAccounts':function(_0x402a3c){return new Promise(function(_0x48459d,_0x1536c2){var _0x1d1416=_['values'](_0x3a3b1b['faxAccounts']);_0x48459d({'count':_0x1d1416[_0x5fb6('0x57')],'rows':_0x1d1416});});},'SendFax':function(_0x8c4c3){var _0x5a585f=this;return new Promise(function(_0x4610bb,_0x1cab91){_0x4dec8f[_0x5fb6('0x84')](_0x8c4c3)['then'](function(_0x595f06){_0x4610bb({'code':0xc8,'message':_0x595f06[_0x5fb6('0x1a')]});})[_0x5fb6('0x1b')](function(_0x3ee340){_0x1cab91(_0x5a585f[_0x5fb6('0x11')](0x1f4,_0x3ee340[_0x5fb6('0x1a')]));});});},'CheckAfterSend':function(_0x21a67a){var _0x127787=this;return new Promise(function(_0x1bed3c,_0x50513a){_0x4dec8f[_0x5fb6('0x85')](_0x21a67a)[_0x5fb6('0x19')](function(_0x401efd){_0x1bed3c({'code':0xc8,'message':_0x401efd[_0x5fb6('0x1a')]});})[_0x5fb6('0x1b')](function(_0x4582cc){_0x50513a(_0x127787['error'](0x1f4,_0x4582cc[_0x5fb6('0x1a')]));});});}};var _0x5e91c2=jayson[_0x5fb6('0x86')](_0x1b586b)[_0x5fb6('0x87')]();_0x5e91c2['on'](_0x5fb6('0x11'),function(_0x4d8c54){return _0x238914(_0x4d8c54);});_0x5e91c2[_0x5fb6('0x6')](0x232a,_0x5fb6('0x88'),function(){console['log'](_0x5fb6('0x89'),0x232a);return _0x50782b(_0x5fb6('0x8a')+0x232a);});});};
\ No newline at end of file
+var _0x8af6=['username','ami\x20disconnected','join','pick','module','action','Reload','Action','message','catch','isConnected','command','Command','voiceQueues','hasOwnProperty','answered','available','loggedIn','pTalking','sumHoldTime','talking','total','abandoned','waiting','type','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','callerid','Interval','push','length','find','undefined','values','channels','channel','format','%s.%s','filename','uniqueid','wav','MixMonitor','ai(mixmonitorid)','then','monitors','isNil','/var/spool/asterisk/monitor/','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','voicechannel','resolve','destinationchannel','stop','StopMixMonitor\x20Success','queueChannels','voicequeuechannel','map','Hangup','voicequeuechannelredirect','Redirect','exten','context','telephones','trunks','campaigns','run','event','emit','custom:','send','checkAfterSend','server','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','jayson/promise','validate','bluebird','moment','../../../config/environment','../properties','../ami','listen','SIP','name','timers','timer','updateAcw','agents','pause','error','asterisk'];(function(_0x3b76c4,_0x2513c0){var _0x5ce14c=function(_0x561780){while(--_0x561780){_0x3b76c4['push'](_0x3b76c4['shift']());}};_0x5ce14c(++_0x2513c0);}(_0x8af6,0x76));var _0x68af=function(_0x5f2a90,_0x6c7312){_0x5f2a90=_0x5f2a90-0x0;var _0x2f1247=_0x8af6[_0x5f2a90];return _0x2f1247;};'use strict';var _=require(_0x68af('0x0'));var util=require(_0x68af('0x1'));var jayson=require(_0x68af('0x2'));var schema=require(_0x68af('0x3'));var BPromise=require(_0x68af('0x4'));var moment=require(_0x68af('0x5'));var config=require(_0x68af('0x6'));var properties=require(_0x68af('0x7'));var ami=require(_0x68af('0x8'));exports[_0x68af('0x9')]=function(_0x52bd87,_0x32992b,_0x5a23da){return new BPromise(function(_0x36e91a,_0x2be0c1){var _0x89146f={'QueuePause':function(_0x1e77b0){return new Promise(function(_0x3c6018,_0x20d61c){var _0x2a6bda=util['format']('%s/%s',_0x68af('0xa'),_0x1e77b0[_0x68af('0xb')]);if(_0x52bd87['timers']&&_0x52bd87[_0x68af('0xc')][_0x2a6bda]&&_0x52bd87[_0x68af('0xc')][_0x2a6bda][_0x68af('0xd')]){_0x52bd87[_0x68af('0xc')][_0x2a6bda][_0x68af('0xe')]();}if(_0x52bd87[_0x68af('0xf')][_0x2a6bda]){_0x52bd87['agents'][_0x2a6bda]['updateStatusRealtime']({'statePause':_0x1e77b0[_0x68af('0x10')]?!![]:![]});}_0x3c6018({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x5cfc81){var _0x368fa5=this;return new Promise(function(_0x7e53d7,_0xdba0d){if(ami['isConnected']()==![]){return _0xdba0d(_0x368fa5[_0x68af('0x11')](0x1f4,[config['asterisk']['ip'],config[_0x68af('0x12')][_0x68af('0x13')],_0x68af('0x14')][_0x68af('0x15')]('\x20')));}_0x5cfc81=_[_0x68af('0x16')](_0x5cfc81,_['keys'](properties[_0x68af('0x17')]));_0x5cfc81[_0x68af('0x18')]=_0x68af('0x19');return ami[_0x68af('0x1a')](_0x5cfc81)['then'](function(_0x5357b1){_0x7e53d7({'code':0xc8,'message':_0x5357b1[_0x68af('0x1b')]});})[_0x68af('0x1c')](function(_0x4e1c41){_0xdba0d(_0x368fa5[_0x68af('0x11')](0x1f5,_0x4e1c41[_0x68af('0x1b')]));});});},'Command':function(_0x3d3e6f){var _0x1a82f0=this;return new Promise(function(_0x53ecde,_0x2ed0a6){if(ami[_0x68af('0x1d')]()==![]){return _0x2ed0a6(_0x1a82f0['error'](0x1f4,[config['asterisk']['ip'],config[_0x68af('0x12')][_0x68af('0x13')],_0x68af('0x14')][_0x68af('0x15')]('\x20')));}_0x3d3e6f=_[_0x68af('0x16')](_0x3d3e6f,_0x68af('0x1e'));_0x3d3e6f['action']=_0x68af('0x1f');return ami[_0x68af('0x1a')](_0x3d3e6f)['then'](function(_0x3ebd57){_0x53ecde({'code':0xc8,'message':_0x3ebd57['content']});})[_0x68af('0x1c')](function(_0x1f0d0e){_0x2ed0a6(_0x1a82f0[_0x68af('0x11')](0x1f5,_0x1f0d0e[_0x68af('0x1b')]));});});},'VoiceQueues':function(_0x2deb06){return new Promise(function(_0x218811,_0x5851b9){var _0x514ebc=[];for(var _0x29f003 in _0x52bd87[_0x68af('0x20')]){if(_0x52bd87[_0x68af('0x20')][_0x68af('0x21')](_0x29f003)){var _0x375d38=_0x52bd87[_0x68af('0x20')][_0x29f003];var _0x1839f9={'id':_0x375d38['id'],'name':_0x375d38[_0x68af('0xb')],'strategy':_0x375d38['strategy'],'answered':_0x375d38[_0x68af('0x22')],'available':_0x375d38[_0x68af('0x23')],'loggedIn':_0x375d38[_0x68af('0x24')],'pTalking':_0x375d38[_0x68af('0x25')],'sumBillable':_0x375d38['sumBillable'],'sumDuration':_0x375d38['sumDuration'],'sumHoldTime':_0x375d38[_0x68af('0x26')]||0x0,'talking':_0x375d38[_0x68af('0x27')],'total':_0x375d38[_0x68af('0x28')],'type':_0x375d38['type'],'unmanaged':_0x375d38['unmanaged'],'abandoned':_0x375d38[_0x68af('0x29')],'waiting':_0x375d38[_0x68af('0x2a')],'loggedInDb':_0x375d38['loggedInDb']};if(_0x375d38[_0x68af('0x2b')]===_0x68af('0x2c')){_0x1839f9[_0x68af('0x2d')]=_0x375d38[_0x68af('0x2d')];_0x1839f9[_0x68af('0x2e')]=_0x375d38[_0x68af('0x2e')];_0x1839f9[_0x68af('0x2f')]=_0x375d38['dialOriginateCallerIdName'];_0x1839f9[_0x68af('0x30')]=_0x375d38[_0x68af('0x30')];_0x1839f9[_0x68af('0x31')]=_0x375d38['dialOriginateTimeout'];_0x1839f9[_0x68af('0x32')]=_0x375d38[_0x68af('0x32')];_0x1839f9['temp']=_0x375d38[_0x68af('0x33')];_0x1839f9[_0x68af('0x34')]=_0x375d38['outboundAnswerAgiCallsDay'];_0x1839f9[_0x68af('0x35')]=_0x375d38['outboundAnswerCallsDay'];_0x1839f9['outboundBlacklistCallsDay']=_0x375d38[_0x68af('0x36')];_0x1839f9[_0x68af('0x37')]=_0x375d38[_0x68af('0x37')];_0x1839f9[_0x68af('0x38')]=_0x375d38[_0x68af('0x38')];_0x1839f9[_0x68af('0x39')]=_0x375d38['outboundDropCallsDayACS'];_0x1839f9['outboundDropCallsDayCallersExit']=_0x375d38['outboundDropCallsDayCallersExit'];_0x1839f9[_0x68af('0x3a')]=_0x375d38[_0x68af('0x3a')];_0x1839f9['outboundNoAnswerCallsDay']=_0x375d38[_0x68af('0x3b')];_0x1839f9[_0x68af('0x3c')]=_0x375d38[_0x68af('0x3c')];_0x1839f9['outboundOriginateFailureCallsDay']=_0x375d38[_0x68af('0x3d')];_0x1839f9[_0x68af('0x3e')]=_0x375d38[_0x68af('0x3e')];_0x1839f9[_0x68af('0x3f')]=_0x375d38[_0x68af('0x3f')];_0x1839f9['outboundUnknownCallsDay']=_0x375d38[_0x68af('0x40')];_0x1839f9[_0x68af('0x41')]=_0x375d38[_0x68af('0x41')];_0x1839f9[_0x68af('0x42')]=_0x375d38[_0x68af('0x42')];_0x1839f9[_0x68af('0x43')]=_0x375d38[_0x68af('0x43')];_0x1839f9[_0x68af('0x44')]=_0x375d38[_0x68af('0x44')];_0x1839f9[_0x68af('0x45')]=_0x375d38['predictiveIntervalDroppedCallsTimeout'];_0x1839f9[_0x68af('0x46')]=_0x375d38[_0x68af('0x46')];_0x1839f9['predictiveIntervalErlangCallsDroppedCalls']=_0x375d38[_0x68af('0x47')];_0x1839f9[_0x68af('0x48')]=_0x375d38[_0x68af('0x48')];_0x1839f9[_0x68af('0x49')]=_0x375d38[_0x68af('0x49')];_0x1839f9['predictiveIntervalPauses']=_0x375d38['predictiveIntervalPauses'];_0x1839f9['predictiveIntervalAvailable']=_0x375d38[_0x68af('0x4a')];_0x1839f9[_0x68af('0x4b')]=_0x375d38['predictiveIntervalTotalCalls'];_0x1839f9[_0x68af('0x1b')]=_0x375d38[_0x68af('0x1b')];_0x1839f9[_0x68af('0x4c')]=_0x375d38[_0x68af('0x4c')];_0x1839f9['erlangCalls']=_0x375d38[_0x68af('0x4d')];_0x1839f9[_0x68af('0x4e')]=_0x375d38[_0x68af('0x4e')];_0x1839f9[_0x68af('0x4f')]=_0x375d38[_0x68af('0x4f')];_0x1839f9[_0x68af('0x50')]=_0x375d38[_0x68af('0x50')];_0x1839f9[_0x68af('0x51')]=_0x375d38[_0x68af('0x51')];_0x1839f9[_0x68af('0x52')]=_0x375d38['startProgressive'];}if(_0x375d38['Trunk']){_0x1839f9[_0x68af('0x53')]={'id':_0x375d38[_0x68af('0x53')]['id'],'name':_0x375d38[_0x68af('0x53')][_0x68af('0xb')],'active':_0x375d38[_0x68af('0x53')]['active'],'callerid':_0x375d38[_0x68af('0x53')][_0x68af('0x54')]};}if(_0x375d38[_0x68af('0x55')]){_0x1839f9['Interval']={'id':_0x375d38[_0x68af('0x55')]['id'],'name':_0x375d38[_0x68af('0x55')][_0x68af('0xb')]};}_0x514ebc[_0x68af('0x56')](_0x1839f9);}}_0x218811({'count':_0x514ebc[_0x68af('0x57')],'rows':_0x514ebc});});},'UpdateVoiceQueue':function(_0x22a045){return new Promise(function(_0x3c4e20,_0x589bd2){var _0x276356=_[_0x68af('0x58')](_0x52bd87[_0x68af('0x20')],{'id':parseInt(_0x22a045['id'])});var _0x120d82=_['omit'](_0x22a045,['id']);if(_0x276356){for(var _0x122d50 in _0x120d82){if(typeof _0x120d82[_0x122d50]!==_0x68af('0x59')&&typeof _0x276356[_0x122d50]!=='undefined'){_0x276356[_0x122d50]=_0x120d82[_0x122d50];}}_0x3c4e20(_0x276356);}else{_0x589bd2();}});},'VoiceChannels':function(_0x4718b7){return new Promise(function(_0x56725a,_0x31c074){var _0x5bab92=_[_0x68af('0x5a')](_0x52bd87[_0x68af('0x5b')]);_0x56725a({'count':_0x5bab92[_0x68af('0x57')],'rows':_0x5bab92});});},'VoiceChannelMixMonitor':function(_0x7740db){var _0x3abd48=this;return new Promise(function(_0x2ef471,_0x28e83f){if(ami[_0x68af('0x1d')]()==![]){return _0x28e83f(_0x3abd48[_0x68af('0x11')](0x1f4,[config[_0x68af('0x12')]['ip'],config[_0x68af('0x12')][_0x68af('0x13')],'ami\x20disconnected'][_0x68af('0x15')]('\x20')));}var _0x1a399f=schema(properties['voicechannel'])[_0x68af('0x3')](_0x7740db);if(_0x1a399f[_0x68af('0x57')]>0x0){return _0x28e83f(_0x3abd48[_0x68af('0x11')](0x1f4,_['map'](_0x1a399f,_0x68af('0x1b'))[_0x68af('0x15')](',\x20')));}var _0x641c67=_[_0x68af('0x58')](_0x52bd87[_0x68af('0x5b')],{'uniqueid':_0x7740db['uniqueid']});if(_0x641c67&&_0x641c67[_0x68af('0x5c')]){var _0x2617ac=util[_0x68af('0x5d')](_0x68af('0x5e'),_0x7740db[_0x68af('0x5f')]||_0x7740db[_0x68af('0x60')],_0x7740db[_0x68af('0x5d')]||_0x68af('0x61'));return ami[_0x68af('0x1a')]({'action':_0x68af('0x62'),'channel':_0x641c67['channel'],'file':_0x2617ac,'options':_0x68af('0x63')})[_0x68af('0x64')](function(_0x1f4bce){var _0x4b3b54=_[_0x68af('0x58')](_0x641c67[_0x68af('0x65')],{'filename':'/var/spool/asterisk/monitor/'+_0x2617ac['toLowerCase']()});if(_[_0x68af('0x66')](_0x4b3b54)){_0x641c67['monitors']['push']({'filename':_0x68af('0x67')+_0x2617ac[_0x68af('0x68')](),'createdAt':moment()[_0x68af('0x5d')](_0x68af('0x69')),'mixmonitorid':_0x1f4bce[_0x68af('0x6a')],'status':_0x68af('0x6b')});}else{_0x4b3b54[_0x68af('0x6a')]=_0x1f4bce['mixmonitorid'];_0x4b3b54[_0x68af('0x6c')]=_0x68af('0x6b');}_0x2ef471({'code':0xc8,'message':[_0x7740db[_0x68af('0x60')],_0x68af('0x6d'),_0x1f4bce[_0x68af('0x6a')]][_0x68af('0x15')]('\x20'),'mixmonitorid':_0x1f4bce[_0x68af('0x6a')]});})[_0x68af('0x1c')](function(_0x2f30e3){_0x28e83f(_0x3abd48['error'](0x1f5,[_0x7740db[_0x68af('0x60')],_0x2f30e3[_0x68af('0x1b')][_0x68af('0x68')]()][_0x68af('0x15')]('\x20')));});}else{return _0x28e83f(_0x3abd48[_0x68af('0x11')](0x1f5,_0x68af('0x6e')));}});},'VoiceChannelStopMixMonitor':function(_0x582e82){var _0x1f2ba6=this;return new Promise(function(_0x5a2c16,_0x2fea5f){if(ami['isConnected']()==![]){return _0x2fea5f(_0x1f2ba6['error'](0x1f4,[config['asterisk']['ip'],config[_0x68af('0x12')]['username'],_0x68af('0x14')][_0x68af('0x15')]('\x20')));}var _0x39388f=schema(properties[_0x68af('0x6f')])[_0x68af('0x3')](_0x582e82);if(_0x39388f[_0x68af('0x57')]>0x0){return _0x2fea5f(_0x1f2ba6[_0x68af('0x11')](0x1f4,_['map'](_0x39388f,_0x68af('0x1b'))['join'](',\x20')));}var _0x2492d4=_[_0x68af('0x58')](_0x52bd87[_0x68af('0x5b')],{'uniqueid':_0x582e82['uniqueid']});if(_0x2492d4){return BPromise[_0x68af('0x70')]()[_0x68af('0x64')](function(){if(_0x2492d4[_0x68af('0x5c')]){return ami[_0x68af('0x1a')]({'action':'StopMixMonitor','channel':_0x2492d4[_0x68af('0x5c')],'mixmonitorid':_0x582e82['mixmonitorid']})[_0x68af('0x1c')](function(_0x56835d){});}})[_0x68af('0x64')](function(){if(_0x2492d4[_0x68af('0x71')]){return ami[_0x68af('0x1a')]({'action':'StopMixMonitor','channel':_0x2492d4[_0x68af('0x71')],'mixmonitorid':_0x582e82[_0x68af('0x6a')]})[_0x68af('0x1c')](function(_0x36b9ae){});}})['then'](function(_0x2deeb3){var _0x5cf983=_[_0x68af('0x58')](_0x2492d4['monitors'],{'mixmonitorid':_0x582e82['mixmonitorid']});if(_0x5cf983){_0x5cf983[_0x68af('0x6c')]='stop';}})[_0x68af('0x64')](function(){var _0x4b07c6=util[_0x68af('0x5d')](_0x68af('0x5e'),_0x582e82['filename']||_0x582e82[_0x68af('0x60')],_0x582e82[_0x68af('0x5d')]||'wav');var _0x265d0c=_[_0x68af('0x58')](_0x2492d4[_0x68af('0x65')],{'filename':_0x68af('0x67')+_0x4b07c6[_0x68af('0x68')]()});if(_0x265d0c){_0x265d0c['status']=_0x68af('0x72');}})[_0x68af('0x64')](function(){_0x5a2c16({'code':0xc8,'message':[_0x582e82[_0x68af('0x60')],_0x68af('0x73')][_0x68af('0x15')]('\x20')});})[_0x68af('0x1c')](function(_0x125d2a){_0x2fea5f(_0x1f2ba6[_0x68af('0x11')](0x1f5,[_0x582e82[_0x68af('0x60')],_0x125d2a['message'][_0x68af('0x68')]()]['join']('\x20')));});}else{return _0x2fea5f(_0x1f2ba6[_0x68af('0x11')](0x1f5,_0x68af('0x6e')));}});},'VoiceQueuesChannels':function(_0x59580e){return new Promise(function(_0x4b23e6,_0x3a5058){var _0x487d52=_['values'](_0x52bd87[_0x68af('0x74')]);_0x4b23e6({'count':_0x487d52[_0x68af('0x57')],'rows':_0x487d52});});},'VoiceQueuesChannel':function(_0x196a01){var _0x2bff0c=this;return new Promise(function(_0x5dbf33,_0x14c37e){var _0x328be6=schema(properties[_0x68af('0x75')])[_0x68af('0x3')](_0x196a01);if(_0x328be6['length']>0x0){return _0x14c37e(_0x2bff0c['error'](0x1f4,_[_0x68af('0x76')](_0x328be6,_0x68af('0x1b'))['join'](',\x20')));}var _0x351d52=_[_0x68af('0x58')](_0x52bd87[_0x68af('0x74')],{'uniqueid':_0x196a01[_0x68af('0x60')]});if(_0x351d52){_0x5dbf33(_0x351d52);}else{return _0x14c37e(_0x2bff0c[_0x68af('0x11')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelHangup':function(_0x22cd4c){var _0x111b46=this;return new Promise(function(_0x1e827b,_0x5c257d){if(ami[_0x68af('0x1d')]()==![]){return _0x5c257d(_0x111b46[_0x68af('0x11')](0x1f4,[config['asterisk']['ip'],config['asterisk'][_0x68af('0x13')],_0x68af('0x14')][_0x68af('0x15')]('\x20')));}var _0x324205=schema(properties['voicequeuechannelhangup'])[_0x68af('0x3')](_0x22cd4c);if(_0x324205['length']>0x0){return _0x5c257d(_0x111b46['error'](0x1f4,_['map'](_0x324205,_0x68af('0x1b'))['join'](',\x20')));}var _0x4949a6=_[_0x68af('0x58')](_0x52bd87[_0x68af('0x74')],{'uniqueid':_0x22cd4c[_0x68af('0x60')]});if(_0x4949a6&&_0x4949a6[_0x68af('0x5c')]){return ami[_0x68af('0x1a')]({'action':_0x68af('0x77'),'channel':_0x4949a6[_0x68af('0x5c')]})['then'](function(_0x36d27e){_0x1e827b({'code':0xc8,'message':[_0x22cd4c[_0x68af('0x60')],_0x36d27e[_0x68af('0x1b')]['toLowerCase']()][_0x68af('0x15')]('\x20')});})['catch'](function(_0x3bc30a){_0x5c257d(_0x111b46[_0x68af('0x11')](0x1f5,[_0x22cd4c[_0x68af('0x60')],_0x3bc30a[_0x68af('0x1b')][_0x68af('0x68')]()][_0x68af('0x15')]('\x20')));});}else{return _0x5c257d(_0x111b46[_0x68af('0x11')](0x1f5,_0x68af('0x6e')));}});},'VoiceQueuesChannelRedirect':function(_0x42f45f){var _0x34932e=this;return new Promise(function(_0x3e8660,_0x27e434){if(ami[_0x68af('0x1d')]()==![]){return _0x27e434(_0x34932e['error'](0x1f4,[config[_0x68af('0x12')]['ip'],config[_0x68af('0x12')]['username'],_0x68af('0x14')][_0x68af('0x15')]('\x20')));}var _0x3cf23a=schema(properties[_0x68af('0x78')])[_0x68af('0x3')](_0x42f45f);if(_0x3cf23a[_0x68af('0x57')]>0x0){return _0x27e434(_0x34932e['error'](0x1f4,_[_0x68af('0x76')](_0x3cf23a,_0x68af('0x1b'))[_0x68af('0x15')](',\x20')));}var _0x5cd284=_['find'](_0x52bd87[_0x68af('0x74')],{'uniqueid':_0x42f45f[_0x68af('0x60')]});if(_0x5cd284&&_0x5cd284[_0x68af('0x5c')]){return ami['Action']({'action':_0x68af('0x79'),'channel':_0x5cd284[_0x68af('0x5c')],'exten':_0x42f45f[_0x68af('0x7a')],'context':_0x42f45f[_0x68af('0x7b')]||_0x5cd284['context'],'priority':0x1})[_0x68af('0x64')](function(_0x1e6cc8){_0x3e8660({'code':0xc8,'message':[_0x42f45f[_0x68af('0x60')],_0x1e6cc8[_0x68af('0x1b')][_0x68af('0x68')]()]['join']('\x20')});})[_0x68af('0x1c')](function(_0x224bd7){_0x27e434(_0x34932e[_0x68af('0x11')](0x1f5,[_0x42f45f['uniqueid'],_0x224bd7[_0x68af('0x1b')][_0x68af('0x68')]()][_0x68af('0x15')]('\x20')));});}else{return _0x27e434(_0x34932e[_0x68af('0x11')](0x1f5,_0x68af('0x6e')));}});},'Agents':function(_0x37a22e){return new Promise(function(_0x58901d,_0x331cfc){var _0x476833=_[_0x68af('0x5a')](_0x52bd87['agents']);_0x58901d({'count':_0x476833['length'],'rows':_0x476833});});},'Telephones':function(_0x470804){return new Promise(function(_0x42b58d,_0x1ce09a){var _0x2d629f=_['values'](_0x52bd87[_0x68af('0x7c')]);_0x42b58d({'count':_0x2d629f[_0x68af('0x57')],'rows':_0x2d629f});});},'Trunks':function(_0x4a2797){return new Promise(function(_0x584796,_0x3a348c){var _0x1f77c1=_['values'](_0x52bd87[_0x68af('0x7d')]);_0x584796({'count':_0x1f77c1[_0x68af('0x57')],'rows':_0x1f77c1});});},'OutboundChannels':function(_0x1e86e8){return new Promise(function(_0x47640b,_0x5cb1bd){var _0x12a8c2=_[_0x68af('0x5a')](_0x52bd87['outboundChannels']);_0x47640b({'count':_0x12a8c2['length'],'rows':_0x12a8c2});});},'Outbound':function(_0x71cd13){return new Promise(function(_0x32396b,_0x566776){_0x32396b(_0x52bd87[_0x68af('0x2c')]);});},'Campaigns':function(_0x5df74f){return new Promise(function(_0x2dcaaa,_0x5750b1){var _0x55f31c=_['values'](_0x52bd87[_0x68af('0x7e')]);_0x2dcaaa({'count':_0x55f31c[_0x68af('0x57')],'rows':_0x55f31c});});},'VoiceQueuesPreview':function(_0x3c3313){var _0x3749f2=this;return new Promise(function(_0x165c3b,_0x59f150){_0x32992b[_0x68af('0x7f')](_0x3c3313['id'])[_0x68af('0x64')](function(_0x47948b){_0x165c3b({'code':0xc8,'message':_0x47948b[_0x68af('0x1b')]});})[_0x68af('0x1c')](function(_0x506a07){_0x59f150(_0x3749f2[_0x68af('0x11')](0x1f4,_0x506a07[_0x68af('0x1b')]));});});},'EventManager':function(_0x2699ce){var _0xc9e13a=this;return new Promise(function(_0x48b175,_0x31ebb5){if(!_0x2699ce[_0x68af('0x80')]){return _0x31ebb5(_0xc9e13a[_0x68af('0x11')](0x1f4,'Event\x20name\x20mandatory'));}ami[_0x68af('0x81')](_0x68af('0x82')+_0x2699ce[_0x68af('0x80')],_0x2699ce[_0x68af('0x1b')]);_0x48b175({'code':0xc8,'message':_0x2699ce});});},'FaxAccounts':function(_0x3350b4){return new Promise(function(_0xcad3a7,_0x423082){var _0x48e9ae=_[_0x68af('0x5a')](_0x52bd87['faxAccounts']);_0xcad3a7({'count':_0x48e9ae[_0x68af('0x57')],'rows':_0x48e9ae});});},'SendFax':function(_0x48f249){var _0x431c2f=this;return new Promise(function(_0x24c151,_0x481db5){_0x5a23da[_0x68af('0x83')](_0x48f249)[_0x68af('0x64')](function(_0x41a008){_0x24c151({'code':0xc8,'message':_0x41a008[_0x68af('0x1b')]});})[_0x68af('0x1c')](function(_0x1fb3d6){_0x481db5(_0x431c2f[_0x68af('0x11')](0x1f4,_0x1fb3d6['message']));});});},'CheckAfterSend':function(_0x3afa1e){var _0x5580a3=this;return new Promise(function(_0x1aa260,_0x46d328){_0x5a23da[_0x68af('0x84')](_0x3afa1e)['then'](function(_0x24c4cf){_0x1aa260({'code':0xc8,'message':_0x24c4cf['message']});})['catch'](function(_0x132812){_0x46d328(_0x5580a3[_0x68af('0x11')](0x1f4,_0x132812[_0x68af('0x1b')]));});});}};var _0x510dcb=jayson[_0x68af('0x85')](_0x89146f)['http']();_0x510dcb['on'](_0x68af('0x11'),function(_0x3055da){return _0x2be0c1(_0x3055da);});_0x510dcb[_0x68af('0x9')](0x232a,_0x68af('0x86'),function(){console[_0x68af('0x87')](_0x68af('0x88'),0x232a);return _0x36e91a('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
index 713ad5f..1bcafca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4018=['action','toLowerCase','merge','lodash','bluebird','ioredis','../../../../config/logger','trigger','redis','defaults','localhost','socket.io-emitter','info','[CM][%s][%s]','stringify','exec','data1','data2','xmd-contactid','ListId','data3','split','$or','map','routeId','destcalleridnum','calleridnum','firstName','phone','fax','scheduledAt','updatedAt','resolve','getContacts','then','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','isNil','calleridname','<unknown>','Unknown','destcalleridname','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','format','user:%s','name','trigger:%s'];(function(_0x609988,_0x507944){var _0x159984=function(_0x39d9ce){while(--_0x39d9ce){_0x609988['push'](_0x609988['shift']());}};_0x159984(++_0x507944);}(_0x4018,0x1f2));var _0x8401=function(_0x28ecb2,_0x227b9e){_0x28ecb2=_0x28ecb2-0x0;var _0x3fea06=_0x4018[_0x28ecb2];return _0x3fea06;};'use strict';var _=require(_0x8401('0x0'));var BPromise=require(_0x8401('0x1'));var Redis=require(_0x8401('0x2'));var util=require('util');var config=require('../../../../config/environment');var logger=require(_0x8401('0x3'))(_0x8401('0x4'));var cmContactRpc=require('../../rpc/cmContact');config[_0x8401('0x5')]=_[_0x8401('0x6')](config[_0x8401('0x5')],{'host':_0x8401('0x7'),'port':0x18eb});var io=require(_0x8401('0x8'))(new Redis(config[_0x8401('0x5')]));function emit(_0x143cb2,_0x5c1be4,_0x54a5c5,_0x4b7d2d,_0x334a02){logger[_0x8401('0x9')](_0x8401('0xa'),_0x143cb2,_0x5c1be4['id'],_0x54a5c5,_0x4b7d2d,JSON[_0x8401('0xb')](_0x334a02));io['to'](_0x54a5c5)['emit'](_0x4b7d2d,_0x334a02);}exports[_0x8401('0xc')]=function(_0x4a9782,_0x1e5280,_0x3f388e,_0x3fa297){var _0x53b83b,_0x38c841;var _0x2ca7f0={};var _0x5f43d6=Number(_0x3f388e[_0x8401('0xd')]);var _0xe0c2d2=_0x3f388e['data2']?Boolean(Number(_0x3f388e[_0x8401('0xe')])):![];var _0x2b500f;if(_0x3fa297[_0x8401('0xf')]){_0x2ca7f0['id']=_0x3fa297[_0x8401('0xf')];}if(!_0x2ca7f0['id']){_0x2ca7f0[_0x8401('0x10')]=_0x5f43d6;_0x2b500f=_0x3f388e[_0x8401('0x11')]&&_0x3f388e[_0x8401('0x11')]!=='0'?_0x3f388e['data3'][_0x8401('0x12')](','):['phone'];_0x2ca7f0[_0x8401('0x13')]=_[_0x8401('0x14')](_0x2b500f,function(_0x5aed84){var _0x2f4077={};_0x2f4077[_0x5aed84]=_0x3fa297[_0x8401('0x15')]?_0x3fa297[_0x8401('0x16')]:_0x3fa297[_0x8401('0x17')];return _0x2f4077;});}var _0xb258d7=['id',_0x8401('0x18'),'lastName',_0x8401('0x19'),'mobile',_0x8401('0x1a'),'ListId','createdAt',_0x8401('0x1b'),_0x8401('0x1c')];var _0x1e9982=_['union'](_0xb258d7,_0x2b500f);BPromise[_0x8401('0x1d')]()['then'](cmContactRpc[_0x8401('0x1e')]({'attributes':_0x1e9982,'where':_0x2ca7f0}))[_0x8401('0x1f')](function(_0x8bb97){_0x38c841=_0x8bb97;if(!_[_0x8401('0x20')](_0x38c841)){if(_0x38c841[_0x8401('0x21')]===0x1){_0x53b83b=_0x38c841[0x0];logger[_0x8401('0x9')](_0x8401('0x22'),_0x3fa297[_0x8401('0x23')],_0x1e5280['id'],_0x53b83b['id']);}else{logger['info']('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x3fa297[_0x8401('0x23')],_0x1e5280['id'],_[_0x8401('0x14')](_0x38c841,'id')[_0x8401('0x24')](','));}return;}else{logger[_0x8401('0x9')](_0x8401('0x25'),_0x3fa297[_0x8401('0x23')],_0x1e5280['id']);var _0x39d763={'ListId':_0x5f43d6};var _0x1019c6=_0x3f388e[_0x8401('0x26')]&&_0x3f388e['data4']!=='0'?_0x3f388e[_0x8401('0x26')]:_0x8401('0x19');if(_0xe0c2d2){logger[_0x8401('0x9')](_0x8401('0x27'),_0x3fa297[_0x8401('0x23')],_0x1e5280['id']);_0x39d763[_0x1019c6]=_[_0x8401('0x28')](_0x3fa297[_0x8401('0x15')])?_0x3fa297[_0x8401('0x17')]:_0x3fa297[_0x8401('0x16')];if(_[_0x8401('0x28')](_0x3fa297[_0x8401('0x15')])){_0x39d763[_0x8401('0x18')]=_0x3fa297['calleridname']&&_0x3fa297[_0x8401('0x29')]!==_0x8401('0x2a')?_0x3fa297[_0x8401('0x29')]:_0x8401('0x2b');}else{_0x39d763[_0x8401('0x18')]=_0x3fa297[_0x8401('0x2c')]&&_0x3fa297[_0x8401('0x2c')]!==_0x8401('0x2a')?_0x3fa297[_0x8401('0x2c')]:_0x8401('0x2b');}return BPromise['resolve']()['then'](cmContactRpc['createContact'](_0x39d763))['then'](function(_0x4cb9a3){_0x53b83b=_0x4cb9a3;_0x38c841[_0x8401('0x2d')](_0x4cb9a3);if(_0x53b83b){logger[_0x8401('0x9')](_0x8401('0x2e'),_0x3fa297[_0x8401('0x23')],_0x1e5280['id'],_0x53b83b['id']);}return;});}else{logger[_0x8401('0x9')](_0x8401('0x2f'),_0x3fa297[_0x8401('0x23')],_0x1e5280['id']);_0x39d763[_0x1019c6]=_[_0x8401('0x28')](_0x3fa297[_0x8401('0x15')])?_0x3fa297[_0x8401('0x17')]:_0x3fa297[_0x8401('0x16')];if(_[_0x8401('0x28')](_0x3fa297[_0x8401('0x15')])){_0x39d763['firstName']=_0x3fa297[_0x8401('0x29')]&&_0x3fa297[_0x8401('0x29')]!==_0x8401('0x2a')?_0x3fa297[_0x8401('0x29')]:_0x8401('0x2b');}else{_0x39d763[_0x8401('0x18')]=_0x3fa297[_0x8401('0x2c')]&&_0x3fa297['destcalleridname']!==_0x8401('0x2a')?_0x3fa297[_0x8401('0x2c')]:_0x8401('0x2b');}_0x53b83b=_0x39d763;_0x38c841[_0x8401('0x2d')](_0x39d763);return;}}})[_0x8401('0x1f')](function(){if(_0x4a9782){emit(_0x3fa297[_0x8401('0x23')],_0x1e5280,util[_0x8401('0x30')](_0x8401('0x31'),_0x4a9782[_0x8401('0x32')]),util[_0x8401('0x30')](_0x8401('0x33'),_0x3f388e[_0x8401('0x34')][_0x8401('0x35')]()),{'evt':_[_0x8401('0x36')](_0x3fa297,{'autoCreate':_0xe0c2d2}),'contact':_0x53b83b===undefined?{}:_0x53b83b,'contacts':_0x38c841[_0x8401('0x21')]===0x0?undefined:_0x38c841});}});};
\ No newline at end of file
+var _0xb458=['redis','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','isNil','data5','ListId','data3','split','phone','$or','map','routeId','destcalleridnum','calleridnum','firstName','lastName','mobile','createdAt','scheduledAt','updatedAt','union','resolve','then','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','calleridname','<unknown>','Unknown','destcalleridname','createContact','push','format','user:%s','trigger:%s','action','toLowerCase','merge','lodash','bluebird','ioredis','../../../../config/logger','trigger','../../rpc/cmContact'];(function(_0x2b7764,_0x2606f1){var _0x848dcb=function(_0x1ae85b){while(--_0x1ae85b){_0x2b7764['push'](_0x2b7764['shift']());}};_0x848dcb(++_0x2606f1);}(_0xb458,0x103));var _0x8b45=function(_0xdee72,_0x309d1d){_0xdee72=_0xdee72-0x0;var _0x1fae39=_0xb458[_0xdee72];return _0x1fae39;};'use strict';var _=require(_0x8b45('0x0'));var BPromise=require(_0x8b45('0x1'));var Redis=require(_0x8b45('0x2'));var util=require('util');var config=require('../../../../config/environment');var logger=require(_0x8b45('0x3'))(_0x8b45('0x4'));var cmContactRpc=require(_0x8b45('0x5'));config[_0x8b45('0x6')]=_['defaults'](config[_0x8b45('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8b45('0x6')]));function emit(_0x12bd05,_0x2daa9a,_0x3a8ccb,_0x32342f,_0x4d1718){logger[_0x8b45('0x7')](_0x8b45('0x8'),_0x12bd05,_0x2daa9a['id'],_0x3a8ccb,_0x32342f,JSON[_0x8b45('0x9')](_0x4d1718));io['to'](_0x3a8ccb)[_0x8b45('0xa')](_0x32342f,_0x4d1718);}exports[_0x8b45('0xb')]=function(_0x499899,_0x2a4c83,_0x7cc49b,_0x57faf9){var _0x5316af,_0x5bb708;var _0x4e28bb={};var _0x43a4c3=Number(_0x7cc49b[_0x8b45('0xc')]);var _0x37c220=_0x7cc49b['data2']?Boolean(Number(_0x7cc49b[_0x8b45('0xd')])):![];var _0x455ecf;var _0x42bb72=![];if(!_[_0x8b45('0xe')](_0x7cc49b[_0x8b45('0xf')])){if(_0x7cc49b[_0x8b45('0xf')]=='1')_0x42bb72=!![];}if(!_0x42bb72){if(_0x57faf9['xmd-contactid']){_0x4e28bb['id']=_0x57faf9['xmd-contactid'];}}if(!_0x4e28bb['id']){_0x4e28bb[_0x8b45('0x10')]=_0x43a4c3;_0x455ecf=_0x7cc49b[_0x8b45('0x11')]&&_0x7cc49b[_0x8b45('0x11')]!=='0'?_0x7cc49b[_0x8b45('0x11')][_0x8b45('0x12')](','):[_0x8b45('0x13')];_0x4e28bb[_0x8b45('0x14')]=_[_0x8b45('0x15')](_0x455ecf,function(_0x33102e){var _0x391d1e={};_0x391d1e[_0x33102e]=_0x57faf9[_0x8b45('0x16')]?_0x57faf9[_0x8b45('0x17')]:_0x57faf9[_0x8b45('0x18')];return _0x391d1e;});}var _0x43ffb7=['id',_0x8b45('0x19'),_0x8b45('0x1a'),_0x8b45('0x13'),_0x8b45('0x1b'),'fax',_0x8b45('0x10'),_0x8b45('0x1c'),_0x8b45('0x1d'),_0x8b45('0x1e')];var _0x3e1438=_[_0x8b45('0x1f')](_0x43ffb7,_0x455ecf);BPromise[_0x8b45('0x20')]()[_0x8b45('0x21')](cmContactRpc['getContacts']({'attributes':_0x3e1438,'where':_0x4e28bb}))['then'](function(_0x41154a){_0x5bb708=_0x41154a;if(!_['isEmpty'](_0x5bb708)){if(_0x5bb708[_0x8b45('0x22')]===0x1){_0x5316af=_0x5bb708[0x0];logger[_0x8b45('0x7')](_0x8b45('0x23'),_0x57faf9[_0x8b45('0x24')],_0x2a4c83['id'],_0x5316af['id']);}else{logger[_0x8b45('0x7')](_0x8b45('0x25'),_0x57faf9[_0x8b45('0x24')],_0x2a4c83['id'],_['map'](_0x5bb708,'id')['join'](','));}return;}else{logger[_0x8b45('0x7')](_0x8b45('0x26'),_0x57faf9['uniqueid'],_0x2a4c83['id']);var _0x5723a2={'ListId':_0x43a4c3};var _0x129c35=_0x7cc49b[_0x8b45('0x27')]&&_0x7cc49b[_0x8b45('0x27')]!=='0'?_0x7cc49b[_0x8b45('0x27')]:'phone';if(_0x37c220){logger[_0x8b45('0x7')](_0x8b45('0x28'),_0x57faf9[_0x8b45('0x24')],_0x2a4c83['id']);_0x5723a2[_0x129c35]=_[_0x8b45('0xe')](_0x57faf9[_0x8b45('0x16')])?_0x57faf9[_0x8b45('0x18')]:_0x57faf9[_0x8b45('0x17')];if(_[_0x8b45('0xe')](_0x57faf9[_0x8b45('0x16')])){_0x5723a2[_0x8b45('0x19')]=_0x57faf9[_0x8b45('0x29')]&&_0x57faf9[_0x8b45('0x29')]!==_0x8b45('0x2a')?_0x57faf9['calleridname']:_0x8b45('0x2b');}else{_0x5723a2[_0x8b45('0x19')]=_0x57faf9[_0x8b45('0x2c')]&&_0x57faf9[_0x8b45('0x2c')]!==_0x8b45('0x2a')?_0x57faf9[_0x8b45('0x2c')]:_0x8b45('0x2b');}return BPromise[_0x8b45('0x20')]()['then'](cmContactRpc[_0x8b45('0x2d')](_0x5723a2))[_0x8b45('0x21')](function(_0x50302){_0x5316af=_0x50302;_0x5bb708[_0x8b45('0x2e')](_0x50302);if(_0x5316af){logger[_0x8b45('0x7')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x57faf9[_0x8b45('0x24')],_0x2a4c83['id'],_0x5316af['id']);}return;});}else{logger['info']('[CM][%s][%s]\x20Autocreate\x20disabled',_0x57faf9[_0x8b45('0x24')],_0x2a4c83['id']);_0x5723a2[_0x129c35]=_[_0x8b45('0xe')](_0x57faf9[_0x8b45('0x16')])?_0x57faf9[_0x8b45('0x18')]:_0x57faf9[_0x8b45('0x17')];if(_[_0x8b45('0xe')](_0x57faf9['routeId'])){_0x5723a2[_0x8b45('0x19')]=_0x57faf9[_0x8b45('0x29')]&&_0x57faf9[_0x8b45('0x29')]!==_0x8b45('0x2a')?_0x57faf9['calleridname']:_0x8b45('0x2b');}else{_0x5723a2[_0x8b45('0x19')]=_0x57faf9[_0x8b45('0x2c')]&&_0x57faf9['destcalleridname']!==_0x8b45('0x2a')?_0x57faf9[_0x8b45('0x2c')]:_0x8b45('0x2b');}_0x5316af=_0x5723a2;_0x5bb708['push'](_0x5723a2);return;}}})[_0x8b45('0x21')](function(){if(_0x499899){emit(_0x57faf9[_0x8b45('0x24')],_0x2a4c83,util[_0x8b45('0x2f')](_0x8b45('0x30'),_0x499899['name']),util[_0x8b45('0x2f')](_0x8b45('0x31'),_0x7cc49b[_0x8b45('0x32')][_0x8b45('0x33')]()),{'evt':_[_0x8b45('0x34')](_0x57faf9,{'autoCreate':_0x37c220}),'contact':_0x5316af===undefined?{}:_0x5316af,'contacts':_0x5bb708[_0x8b45('0x22')]===0x0?undefined:_0x5bb708});}});};
\ No newline at end of file
index b00a445..4e011ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13e4=['data3','location','uriLocation','data4','windowWidth','data5','windowHeight','data6','600','winApplication','winArguments','format','user:%s','name','trigger:%s:%s','toLowerCase','data1','trigger:%s','integration','exec','accounts','queue','routeId','urlforward','script','parse','query','search','replace','AllConditions','checkConditions','channel','AnyConditions','field','account','chat','ChatWebsiteId','operator','value','upperFirst','interaction','message','event','agent','membername','lastevent','exports','util','lodash','mustache','ioredis','./urlforward','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','../ami','defaults','redis','localhost','socket.io-emitter','popup','url','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','salesforceAccounts','zohoAccounts','deskAccounts','vtigerAccounts','dynamics365Accounts','freshsalesAccounts','sugarcrmAccounts','servicenowAccounts','bind','custom:agentconnect','syncCustomEvent','custom:agentringnoanswer','custom:agentnosuchnumber','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','custom:dialconnect','syncAgentDial','custom:dialend','custom:closedinteraction','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','prototype','emit','info','stringify','checkTriggers','interface','hasOwnProperty','checkTrigger','merge','variables','Actions','length','action','contactmanager','motionbar','browser','TemplateId','data2','html','render','buildUri','isNil'];(function(_0x382957,_0x486708){var _0x598964=function(_0xc8e15d){while(--_0xc8e15d){_0x382957['push'](_0x382957['shift']());}};_0x598964(++_0x486708);}(_0x13e4,0x194));var _0x413e=function(_0x5e93a3,_0x32e4bb){_0x5e93a3=_0x5e93a3-0x0;var _0x3d24df=_0x13e4[_0x5e93a3];return _0x3d24df;};'use strict';var util=require(_0x413e('0x0'));var _=require(_0x413e('0x1'));var url=require('url');var Mustache=require(_0x413e('0x2'));var Redis=require(_0x413e('0x3'));var urlforward=require(_0x413e('0x4'));var integration=require(_0x413e('0x5'));var cmContact=require(_0x413e('0x6'));var script=require(_0x413e('0x7'));var config=require(_0x413e('0x8'));var logger=require(_0x413e('0x9'))(_0x413e('0xa'));var ami=require(_0x413e('0xb'));config['redis']=_[_0x413e('0xc')](config[_0x413e('0xd')],{'host':_0x413e('0xe'),'port':0x18eb});var io=require(_0x413e('0xf'))(new Redis(config[_0x413e('0xd')]));var operators={'equals':function(_0x5ab30f,_0x348464){return _0x5ab30f==_0x348464;},'not_equals':function(_0x471588,_0x5ca0cd){return _0x471588!=_0x5ca0cd;}};var barAndWebActions=[_0x413e('0x10'),_0x413e('0x11'),_0x413e('0x12')];function Trigger(_0x456673){this[_0x413e('0x13')]=_0x456673[_0x413e('0x13')];this[_0x413e('0x14')]=_0x456673['agents'];this[_0x413e('0x15')]=_0x456673['voiceQueues'];this[_0x413e('0x16')]=_0x456673['templates'];this[_0x413e('0x17')]=_0x456673[_0x413e('0x17')];this['zendeskAccounts']=_0x456673[_0x413e('0x18')];this['freshdeskAccounts']=_0x456673['freshdeskAccounts'];this[_0x413e('0x19')]=_0x456673[_0x413e('0x19')];this['sugarcrmAccounts']=_0x456673['sugarcrmAccounts'];this[_0x413e('0x1a')]=_0x456673[_0x413e('0x1a')];this[_0x413e('0x1b')]=_0x456673[_0x413e('0x1b')];this['vtigerAccounts']=_0x456673[_0x413e('0x1c')];this['servicenowAccounts']=_0x456673['servicenowAccounts'];this[_0x413e('0x1d')]=_0x456673[_0x413e('0x1d')];this[_0x413e('0x1e')]=_0x456673[_0x413e('0x1e')];this['accounts']={'zendesk':this[_0x413e('0x18')],'salesforce':this[_0x413e('0x19')],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this[_0x413e('0x1f')],'zoho':this['zohoAccounts'],'desk':this[_0x413e('0x1b')],'vtiger':this[_0x413e('0x1c')],'dynamics365':this[_0x413e('0x1d')],'freshsales':this[_0x413e('0x1e')],'servicenow':this[_0x413e('0x20')]};ami['on']('custom:agentcalled',this['syncCustomEvent'][_0x413e('0x21')](this));ami['on'](_0x413e('0x22'),this[_0x413e('0x23')]['bind'](this));ami['on'](_0x413e('0x24'),this[_0x413e('0x23')][_0x413e('0x21')](this));ami['on']('custom:agentcomplete',this['syncCustomEvent'][_0x413e('0x21')](this));ami['on'](_0x413e('0x25'),this[_0x413e('0x23')][_0x413e('0x21')](this));ami['on']('custom:agentnoanswer',this[_0x413e('0x23')][_0x413e('0x21')](this));ami['on']('custom:agentbusy',this['syncCustomEvent'][_0x413e('0x21')](this));ami['on']('custom:agentcongestion',this[_0x413e('0x23')][_0x413e('0x21')](this));ami['on']('custom:agentreject',this['syncCustomEvent'][_0x413e('0x21')](this));ami['on'](_0x413e('0x26'),this[_0x413e('0x23')][_0x413e('0x21')](this));ami['on'](_0x413e('0x27'),this['syncCustomEvent'][_0x413e('0x21')](this));ami['on'](_0x413e('0x28'),this[_0x413e('0x23')][_0x413e('0x21')](this));ami['on'](_0x413e('0x29'),this['syncAgentDial'][_0x413e('0x21')](this));ami['on'](_0x413e('0x2a'),this[_0x413e('0x2b')][_0x413e('0x21')](this));ami['on'](_0x413e('0x2c'),this['syncAgentDial'][_0x413e('0x21')](this));ami['on']('custom:newinteraction',this['syncCustomEvent'][_0x413e('0x21')](this));ami['on'](_0x413e('0x2d'),this[_0x413e('0x23')][_0x413e('0x21')](this));ami['on'](_0x413e('0x2e'),this[_0x413e('0x23')][_0x413e('0x21')](this));ami['on'](_0x413e('0x2f'),this['syncCustomEvent'][_0x413e('0x21')](this));ami['on'](_0x413e('0x30'),this[_0x413e('0x23')]['bind'](this));ami['on'](_0x413e('0x31'),this[_0x413e('0x23')][_0x413e('0x21')](this));}Trigger[_0x413e('0x32')][_0x413e('0x33')]=function(_0x5b84c9,_0x1c1f1a,_0x5372fb){logger[_0x413e('0x34')](_0x5b84c9,_0x1c1f1a,JSON[_0x413e('0x35')](_0x5372fb));io['to'](_0x5b84c9)[_0x413e('0x33')](_0x1c1f1a,_0x5372fb);};Trigger[_0x413e('0x32')][_0x413e('0x23')]=function(_0x409e73){var _0x551263=_['clone'](_0x409e73);this[_0x413e('0x36')](_0x551263);};Trigger[_0x413e('0x32')][_0x413e('0x2b')]=function(_0x5b1492){if(this[_0x413e('0x14')][_0x5b1492[_0x413e('0x37')]]){this[_0x413e('0x23')](_0x5b1492);}};Trigger[_0x413e('0x32')]['checkTriggers']=function(_0x56d704){var _0x438578;for(var _0x4ac952 in this[_0x413e('0x13')]){if(this[_0x413e('0x13')][_0x413e('0x38')](_0x4ac952)){if(this[_0x413e('0x13')][_0x4ac952]['status']){_0x438578=this[_0x413e('0x39')](this[_0x413e('0x13')][_0x4ac952],_0x56d704);if(_0x438578){_[_0x413e('0x3a')](_0x56d704,_0x56d704[_0x413e('0x3b')]);for(var _0x1208d1=0x0,_0x57e976,_0x14308c,_0x318ecd;_0x1208d1<this['triggers'][_0x4ac952][_0x413e('0x3c')][_0x413e('0x3d')];_0x1208d1+=0x1){_0x57e976=this['triggers'][_0x4ac952][_0x413e('0x3c')][_0x1208d1];if(this[_0x413e('0x14')][_0x56d704[_0x413e('0x37')]]){switch(_0x57e976[_0x413e('0x3e')]['toLowerCase']()){case _0x413e('0x3f'):break;case _0x413e('0x40'):case _0x413e('0x41'):var _0x3fb147={};switch(barAndWebActions[_0x57e976['data1']]){case _0x413e('0x10'):_0x3fb147[_0x413e('0x42')]=_0x57e976[_0x413e('0x43')];_0x3fb147[_0x413e('0x44')]=this['templates'][_0x57e976[_0x413e('0x43')]]?Mustache[_0x413e('0x45')](this[_0x413e('0x16')][_0x57e976[_0x413e('0x43')]][_0x413e('0x44')],_0x56d704):'template\x20not\x20found';break;case _0x413e('0x11'):_0x3fb147['uri']=this[_0x413e('0x46')](_0x57e976[_0x413e('0x43')],_0x56d704,_[_0x413e('0x47')](_0x57e976[_0x413e('0x48')])?!![]:parseInt(_0x57e976[_0x413e('0x48')],0xa));if(_[_0x413e('0x47')](_0x57e976['data4'])){_0x3fb147[_0x413e('0x49')]='0';}else{_0x3fb147[_0x413e('0x4a')]=_0x57e976[_0x413e('0x4b')];_0x3fb147[_0x413e('0x4c')]=_['isNil'](_0x57e976[_0x413e('0x4d')])?'800':_0x57e976[_0x413e('0x4d')];_0x3fb147[_0x413e('0x4e')]=_[_0x413e('0x47')](_0x57e976[_0x413e('0x4f')])?_0x413e('0x50'):_0x57e976['data6'];}break;case _0x413e('0x12'):_0x3fb147[_0x413e('0x51')]=_0x57e976[_0x413e('0x43')]?Mustache[_0x413e('0x45')](_0x57e976[_0x413e('0x43')],_0x56d704):'';_0x3fb147[_0x413e('0x52')]=_0x57e976['data3']?Mustache['render'](_0x57e976[_0x413e('0x48')],_0x56d704):'';break;}this[_0x413e('0x33')](util[_0x413e('0x53')](_0x413e('0x54'),this[_0x413e('0x14')][_0x56d704[_0x413e('0x37')]][_0x413e('0x55')]),util[_0x413e('0x53')](_0x413e('0x56'),_0x57e976[_0x413e('0x3e')][_0x413e('0x57')](),barAndWebActions[_0x57e976[_0x413e('0x58')]]),_['merge'](_0x3fb147,_0x56d704));break;case'jscripty':this[_0x413e('0x33')](util[_0x413e('0x53')](_0x413e('0x54'),this[_0x413e('0x14')][_0x56d704['interface']]['name']),util[_0x413e('0x53')](_0x413e('0x59'),_0x57e976['action'][_0x413e('0x57')]()),_['merge']({'ProjectId':parseInt(_0x57e976[_0x413e('0x58')],0xa)},_0x56d704));break;default:this[_0x413e('0x33')](util[_0x413e('0x53')](_0x413e('0x54'),this[_0x413e('0x14')][_0x56d704[_0x413e('0x37')]]['name']),util[_0x413e('0x53')](_0x413e('0x59'),_0x57e976['action'][_0x413e('0x57')]()),_[_0x413e('0x3a')]({},_0x57e976,_0x56d704));}}switch(_0x57e976['action']['toLowerCase']()){case _0x413e('0x3f'):cmContact['exec'](this[_0x413e('0x14')][_0x56d704['interface']],this['triggers'][_0x4ac952],_0x57e976,_0x56d704);break;case _0x413e('0x5a'):integration[_0x413e('0x5b')](_0x57e976,_0x56d704,this[_0x413e('0x5c')],this[_0x413e('0x14')][_0x56d704[_0x413e('0x37')]],this[_0x413e('0x15')][_0x56d704[_0x413e('0x5d')]],this['voiceExtensions'][_0x56d704[_0x413e('0x5e')]]);break;case _0x413e('0x5f'):urlforward['exec'](_0x57e976,_0x56d704);break;case _0x413e('0x60'):script[_0x413e('0x5b')](_0x57e976,_0x56d704);break;}}}}}}};Trigger[_0x413e('0x32')][_0x413e('0x46')]=function(_0x211adc,_0x48e71d,_0x26c3d1){var _0x365a55=url[_0x413e('0x61')](Mustache['render'](_0x211adc,_0x48e71d),!![]);if(_0x26c3d1){_[_0x413e('0x3a')](_0x365a55[_0x413e('0x62')],_0x48e71d);}delete _0x365a55[_0x413e('0x63')];var _0x2c00fd=url['format'](_0x365a55);_0x2c00fd=_0x2c00fd[_0x413e('0x64')](/\/\?/g,'?');return _0x2c00fd;};Trigger[_0x413e('0x32')]['checkTrigger']=function(_0x4d1791,_0x1f7f04){var _0x433966=!![],_0x2bcda1=!![];if(_0x4d1791[_0x413e('0x65')]['length']){_0x433966=_['every'](_0x4d1791[_0x413e('0x65')],this[_0x413e('0x66')](_0x1f7f04,_0x4d1791[_0x413e('0x67')]));}if(_0x4d1791[_0x413e('0x68')]['length']){_0x2bcda1=_['some'](_0x4d1791['AnyConditions'],this[_0x413e('0x66')](_0x1f7f04,_0x4d1791[_0x413e('0x67')]));}return _0x433966&&_0x2bcda1;};Trigger[_0x413e('0x32')][_0x413e('0x66')]=function(_0x364356,_0xae658f){return function(_0x2b9d77){switch(_0x2b9d77[_0x413e('0x69')]){case _0x413e('0x6a'):if(_0x364356[_0x413e('0x67')]===_0xae658f){if(_0xae658f===_0x413e('0x6b')){return _0x364356[_0x413e('0x6c')]?operators[_0x2b9d77[_0x413e('0x6d')]](Number(_0x2b9d77[_0x413e('0x6e')]),_0x364356['ChatWebsiteId']):![];}else{return _0x364356[_[_0x413e('0x6f')](_0xae658f)+'AccountId']?operators[_0x2b9d77[_0x413e('0x6d')]](Number(_0x2b9d77['value']),_0x364356[_[_0x413e('0x6f')](_0xae658f)+'AccountId']):![];}}break;case _0x413e('0x70'):case _0x413e('0x71'):if(_0x364356[_0x413e('0x67')]===_0xae658f){return _0x364356['event']?operators[_0x2b9d77[_0x413e('0x6d')]](_0x2b9d77[_0x413e('0x6e')],_0x364356[_0x413e('0x72')]):![];}break;case _0x413e('0x5d'):return _0x364356[_0x413e('0x5d')]?operators[_0x2b9d77['operator']](_0x2b9d77['value'],_0x364356[_0x413e('0x5d')]):![];case _0x413e('0x73'):return _0x364356[_0x413e('0x74')]?operators[_0x2b9d77[_0x413e('0x6d')]](_0x2b9d77[_0x413e('0x6e')],_0x364356[_0x413e('0x74')]):![];case'lastevent':return _0x364356['lastevent']?operators[_0x2b9d77[_0x413e('0x6d')]](_0x2b9d77[_0x413e('0x6e')],_0x364356[_0x413e('0x75')]):![];case _0x413e('0x5e'):return _0x364356[_0x413e('0x5e')]?operators[_0x2b9d77['operator']](_0x2b9d77[_0x413e('0x6e')],_0x364356[_0x413e('0x5e')]):![];}return![];};};module[_0x413e('0x76')]=Trigger;
\ No newline at end of file
+var _0xfa0b=['undefined','voice','checkTriggers','interface','hasOwnProperty','status','checkTrigger','variables','Actions','action','toLowerCase','contactmanager','browser','data1','TemplateId','html','render','data2','template\x20not\x20found','uri','buildUri','isNil','data3','data4','location','windowWidth','data5','800','windowHeight','data6','600','winApplication','winArguments','format','trigger:%s:%s','merge','jscripty','user:%s','name','trigger:%s','exec','integration','queue','parse','query','search','replace','channel','AllConditions','length','every','AnyConditions','some','checkConditions','account','chat','operator','value','ChatWebsiteId','upperFirst','AccountId','message','event','membername','lastevent','routeId','exports','util','lodash','url','ioredis','./urlforward','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','defaults','localhost','socket.io-emitter','redis','popup','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','syncCustomEvent','bind','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:amd','custom:queuecallerabandon','custom:dialconnect','syncAgentDial','custom:newinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','prototype','emit','info','stringify','motionChannel'];(function(_0x3ee952,_0x565e0f){var _0xc0c8b1=function(_0x57e219){while(--_0x57e219){_0x3ee952['push'](_0x3ee952['shift']());}};_0xc0c8b1(++_0x565e0f);}(_0xfa0b,0x1b1));var _0xbfa0=function(_0xbc86fc,_0x1bb24d){_0xbc86fc=_0xbc86fc-0x0;var _0x549976=_0xfa0b[_0xbc86fc];return _0x549976;};'use strict';var util=require(_0xbfa0('0x0'));var _=require(_0xbfa0('0x1'));var url=require(_0xbfa0('0x2'));var Mustache=require('mustache');var Redis=require(_0xbfa0('0x3'));var urlforward=require(_0xbfa0('0x4'));var integration=require(_0xbfa0('0x5'));var cmContact=require(_0xbfa0('0x6'));var script=require(_0xbfa0('0x7'));var config=require(_0xbfa0('0x8'));var logger=require(_0xbfa0('0x9'))(_0xbfa0('0xa'));var ami=require('../ami');config['redis']=_[_0xbfa0('0xb')](config['redis'],{'host':_0xbfa0('0xc'),'port':0x18eb});var io=require(_0xbfa0('0xd'))(new Redis(config[_0xbfa0('0xe')]));var operators={'equals':function(_0xc95bc7,_0x4d3a3b){return _0xc95bc7==_0x4d3a3b;},'not_equals':function(_0x4b3cc6,_0x30eb31){return _0x4b3cc6!=_0x30eb31;}};var barAndWebActions=[_0xbfa0('0xf'),_0xbfa0('0x2'),'winapp'];function Trigger(_0x59f32a){this[_0xbfa0('0x10')]=_0x59f32a[_0xbfa0('0x10')];this[_0xbfa0('0x11')]=_0x59f32a[_0xbfa0('0x11')];this['voiceQueues']=_0x59f32a[_0xbfa0('0x12')];this['templates']=_0x59f32a[_0xbfa0('0x13')];this[_0xbfa0('0x14')]=_0x59f32a[_0xbfa0('0x14')];this[_0xbfa0('0x15')]=_0x59f32a['zendeskAccounts'];this[_0xbfa0('0x16')]=_0x59f32a[_0xbfa0('0x16')];this[_0xbfa0('0x17')]=_0x59f32a['salesforceAccounts'];this['sugarcrmAccounts']=_0x59f32a[_0xbfa0('0x18')];this[_0xbfa0('0x19')]=_0x59f32a[_0xbfa0('0x19')];this[_0xbfa0('0x1a')]=_0x59f32a['deskAccounts'];this[_0xbfa0('0x1b')]=_0x59f32a[_0xbfa0('0x1b')];this[_0xbfa0('0x1c')]=_0x59f32a[_0xbfa0('0x1c')];this['dynamics365Accounts']=_0x59f32a[_0xbfa0('0x1d')];this[_0xbfa0('0x1e')]=_0x59f32a[_0xbfa0('0x1e')];this[_0xbfa0('0x1f')]={'zendesk':this[_0xbfa0('0x15')],'salesforce':this[_0xbfa0('0x17')],'freshdesk':this[_0xbfa0('0x16')],'sugarcrm':this[_0xbfa0('0x18')],'zoho':this[_0xbfa0('0x19')],'desk':this['deskAccounts'],'vtiger':this[_0xbfa0('0x1b')],'dynamics365':this[_0xbfa0('0x1d')],'freshsales':this[_0xbfa0('0x1e')],'servicenow':this[_0xbfa0('0x1c')]};ami['on'](_0xbfa0('0x20'),this[_0xbfa0('0x21')][_0xbfa0('0x22')](this));ami['on']('custom:agentconnect',this[_0xbfa0('0x21')][_0xbfa0('0x22')](this));ami['on'](_0xbfa0('0x23'),this[_0xbfa0('0x21')][_0xbfa0('0x22')](this));ami['on'](_0xbfa0('0x24'),this[_0xbfa0('0x21')][_0xbfa0('0x22')](this));ami['on'](_0xbfa0('0x25'),this[_0xbfa0('0x21')][_0xbfa0('0x22')](this));ami['on'](_0xbfa0('0x26'),this[_0xbfa0('0x21')]['bind'](this));ami['on'](_0xbfa0('0x27'),this[_0xbfa0('0x21')][_0xbfa0('0x22')](this));ami['on'](_0xbfa0('0x28'),this[_0xbfa0('0x21')][_0xbfa0('0x22')](this));ami['on']('custom:agentreject',this[_0xbfa0('0x21')]['bind'](this));ami['on'](_0xbfa0('0x29'),this[_0xbfa0('0x21')][_0xbfa0('0x22')](this));ami['on'](_0xbfa0('0x2a'),this['syncCustomEvent'][_0xbfa0('0x22')](this));ami['on']('custom:timeout',this[_0xbfa0('0x21')][_0xbfa0('0x22')](this));ami['on']('custom:dialbegin',this['syncAgentDial'][_0xbfa0('0x22')](this));ami['on'](_0xbfa0('0x2b'),this[_0xbfa0('0x2c')][_0xbfa0('0x22')](this));ami['on']('custom:dialend',this[_0xbfa0('0x2c')]['bind'](this));ami['on'](_0xbfa0('0x2d'),this[_0xbfa0('0x21')][_0xbfa0('0x22')](this));ami['on']('custom:closedinteraction',this[_0xbfa0('0x21')]['bind'](this));ami['on'](_0xbfa0('0x2e'),this[_0xbfa0('0x21')][_0xbfa0('0x22')](this));ami['on'](_0xbfa0('0x2f'),this[_0xbfa0('0x21')][_0xbfa0('0x22')](this));ami['on'](_0xbfa0('0x30'),this[_0xbfa0('0x21')][_0xbfa0('0x22')](this));ami['on'](_0xbfa0('0x31'),this[_0xbfa0('0x21')][_0xbfa0('0x22')](this));ami['on']('custom:rejectmessage',this[_0xbfa0('0x21')][_0xbfa0('0x22')](this));}Trigger[_0xbfa0('0x32')][_0xbfa0('0x33')]=function(_0x32fb4b,_0x56c036,_0x326083){logger[_0xbfa0('0x34')](_0x32fb4b,_0x56c036,JSON[_0xbfa0('0x35')](_0x326083));io['to'](_0x32fb4b)[_0xbfa0('0x33')](_0x56c036,_0x326083);};Trigger['prototype'][_0xbfa0('0x21')]=function(_0x133649){var _0x412462=_['clone'](_0x133649);if(typeof _0x412462[_0xbfa0('0x36')]===_0xbfa0('0x37')){_0x412462[_0xbfa0('0x36')]=_0xbfa0('0x38');}this[_0xbfa0('0x39')](_0x412462);};Trigger[_0xbfa0('0x32')][_0xbfa0('0x2c')]=function(_0x44bec9){if(this[_0xbfa0('0x11')][_0x44bec9[_0xbfa0('0x3a')]]){this[_0xbfa0('0x21')](_0x44bec9);}};Trigger[_0xbfa0('0x32')]['checkTriggers']=function(_0x47098b){var _0x27fe8b;for(var _0x2a59ae in this['triggers']){if(this[_0xbfa0('0x10')][_0xbfa0('0x3b')](_0x2a59ae)){if(this[_0xbfa0('0x10')][_0x2a59ae][_0xbfa0('0x3c')]){_0x27fe8b=this[_0xbfa0('0x3d')](this[_0xbfa0('0x10')][_0x2a59ae],_0x47098b);if(_0x27fe8b){_['merge'](_0x47098b,_0x47098b[_0xbfa0('0x3e')]);for(var _0x554168=0x0,_0x806b7c,_0x106192,_0xe3e543;_0x554168<this[_0xbfa0('0x10')][_0x2a59ae][_0xbfa0('0x3f')]['length'];_0x554168+=0x1){_0x806b7c=this[_0xbfa0('0x10')][_0x2a59ae][_0xbfa0('0x3f')][_0x554168];if(this[_0xbfa0('0x11')][_0x47098b[_0xbfa0('0x3a')]]){switch(_0x806b7c[_0xbfa0('0x40')][_0xbfa0('0x41')]()){case _0xbfa0('0x42'):break;case'motionbar':case _0xbfa0('0x43'):var _0x35093b={};switch(barAndWebActions[_0x806b7c[_0xbfa0('0x44')]]){case _0xbfa0('0xf'):_0x35093b[_0xbfa0('0x45')]=_0x806b7c['data2'];_0x35093b[_0xbfa0('0x46')]=this[_0xbfa0('0x13')][_0x806b7c['data2']]?Mustache[_0xbfa0('0x47')](this[_0xbfa0('0x13')][_0x806b7c[_0xbfa0('0x48')]][_0xbfa0('0x46')],_0x47098b):_0xbfa0('0x49');break;case _0xbfa0('0x2'):_0x35093b[_0xbfa0('0x4a')]=this[_0xbfa0('0x4b')](_0x806b7c[_0xbfa0('0x48')],_0x47098b,_[_0xbfa0('0x4c')](_0x806b7c[_0xbfa0('0x4d')])?!![]:parseInt(_0x806b7c[_0xbfa0('0x4d')],0xa));if(_['isNil'](_0x806b7c[_0xbfa0('0x4e')])){_0x35093b[_0xbfa0('0x4f')]='0';}else{_0x35093b['uriLocation']=_0x806b7c[_0xbfa0('0x4e')];_0x35093b[_0xbfa0('0x50')]=_[_0xbfa0('0x4c')](_0x806b7c[_0xbfa0('0x51')])?_0xbfa0('0x52'):_0x806b7c[_0xbfa0('0x51')];_0x35093b[_0xbfa0('0x53')]=_[_0xbfa0('0x4c')](_0x806b7c[_0xbfa0('0x54')])?_0xbfa0('0x55'):_0x806b7c['data6'];}break;case'winapp':_0x35093b[_0xbfa0('0x56')]=_0x806b7c['data2']?Mustache[_0xbfa0('0x47')](_0x806b7c[_0xbfa0('0x48')],_0x47098b):'';_0x35093b[_0xbfa0('0x57')]=_0x806b7c[_0xbfa0('0x4d')]?Mustache['render'](_0x806b7c[_0xbfa0('0x4d')],_0x47098b):'';break;}this['emit'](util[_0xbfa0('0x58')]('user:%s',this['agents'][_0x47098b['interface']]['name']),util[_0xbfa0('0x58')](_0xbfa0('0x59'),_0x806b7c[_0xbfa0('0x40')]['toLowerCase'](),barAndWebActions[_0x806b7c[_0xbfa0('0x44')]]),_[_0xbfa0('0x5a')](_0x35093b,_0x47098b));break;case _0xbfa0('0x5b'):this[_0xbfa0('0x33')](util['format'](_0xbfa0('0x5c'),this[_0xbfa0('0x11')][_0x47098b[_0xbfa0('0x3a')]]['name']),util['format']('trigger:%s',_0x806b7c[_0xbfa0('0x40')][_0xbfa0('0x41')]()),_[_0xbfa0('0x5a')]({'ProjectId':parseInt(_0x806b7c[_0xbfa0('0x44')],0xa)},_0x47098b));break;default:this[_0xbfa0('0x33')](util[_0xbfa0('0x58')](_0xbfa0('0x5c'),this['agents'][_0x47098b[_0xbfa0('0x3a')]][_0xbfa0('0x5d')]),util[_0xbfa0('0x58')](_0xbfa0('0x5e'),_0x806b7c[_0xbfa0('0x40')][_0xbfa0('0x41')]()),_[_0xbfa0('0x5a')]({},_0x806b7c,_0x47098b));}}switch(_0x806b7c['action'][_0xbfa0('0x41')]()){case _0xbfa0('0x42'):cmContact[_0xbfa0('0x5f')](this[_0xbfa0('0x11')][_0x47098b[_0xbfa0('0x3a')]],this[_0xbfa0('0x10')][_0x2a59ae],_0x806b7c,_0x47098b);break;case _0xbfa0('0x60'):integration[_0xbfa0('0x5f')](_0x806b7c,_0x47098b,this[_0xbfa0('0x1f')],this[_0xbfa0('0x11')][_0x47098b['interface']],this[_0xbfa0('0x12')][_0x47098b[_0xbfa0('0x61')]],this[_0xbfa0('0x14')][_0x47098b['routeId']]);break;case'urlforward':urlforward[_0xbfa0('0x5f')](_0x806b7c,_0x47098b);break;case'script':script[_0xbfa0('0x5f')](_0x806b7c,_0x47098b);break;}}}}}}};Trigger[_0xbfa0('0x32')][_0xbfa0('0x4b')]=function(_0x564313,_0x39fb77,_0x2dfb6a){var _0x3e6a9f=url[_0xbfa0('0x62')](Mustache[_0xbfa0('0x47')](_0x564313,_0x39fb77),!![]);if(_0x2dfb6a){_[_0xbfa0('0x5a')](_0x3e6a9f[_0xbfa0('0x63')],_0x39fb77);}delete _0x3e6a9f[_0xbfa0('0x64')];var _0x3d778f=url[_0xbfa0('0x58')](_0x3e6a9f);_0x3d778f=_0x3d778f[_0xbfa0('0x65')](/\/\?/g,'?');return _0x3d778f;};Trigger[_0xbfa0('0x32')][_0xbfa0('0x3d')]=function(_0x17765f,_0x3d3266){var _0x503ffd=!![];var _0x917037=!![];var _0x5443ae=![];if(_0x17765f[_0xbfa0('0x66')]===_0x3d3266['motionChannel']){_0x5443ae=!![];}if(_0x17765f[_0xbfa0('0x67')][_0xbfa0('0x68')]){_0x503ffd=_[_0xbfa0('0x69')](_0x17765f['AllConditions'],this['checkConditions'](_0x3d3266,_0x17765f[_0xbfa0('0x66')]));}if(_0x17765f[_0xbfa0('0x6a')]['length']){_0x917037=_[_0xbfa0('0x6b')](_0x17765f['AnyConditions'],this[_0xbfa0('0x6c')](_0x3d3266,_0x17765f[_0xbfa0('0x66')]));}return _0x5443ae&&_0x503ffd&&_0x917037;};Trigger[_0xbfa0('0x32')][_0xbfa0('0x6c')]=function(_0x1dc799,_0x2d49c9){return function(_0x1ff895){switch(_0x1ff895['field']){case _0xbfa0('0x6d'):if(_0x1dc799[_0xbfa0('0x66')]===_0x2d49c9){if(_0x2d49c9===_0xbfa0('0x6e')){return _0x1dc799['ChatWebsiteId']?operators[_0x1ff895[_0xbfa0('0x6f')]](Number(_0x1ff895[_0xbfa0('0x70')]),_0x1dc799[_0xbfa0('0x71')]):![];}else{return _0x1dc799[_[_0xbfa0('0x72')](_0x2d49c9)+_0xbfa0('0x73')]?operators[_0x1ff895[_0xbfa0('0x6f')]](Number(_0x1ff895[_0xbfa0('0x70')]),_0x1dc799[_[_0xbfa0('0x72')](_0x2d49c9)+_0xbfa0('0x73')]):![];}}break;case'interaction':case _0xbfa0('0x74'):if(_0x1dc799[_0xbfa0('0x66')]===_0x2d49c9){return _0x1dc799[_0xbfa0('0x75')]?operators[_0x1ff895[_0xbfa0('0x6f')]](_0x1ff895[_0xbfa0('0x70')],_0x1dc799[_0xbfa0('0x75')]):![];}break;case _0xbfa0('0x61'):return _0x1dc799['queue']?operators[_0x1ff895[_0xbfa0('0x6f')]](_0x1ff895[_0xbfa0('0x70')],_0x1dc799[_0xbfa0('0x61')]):![];case'agent':return _0x1dc799[_0xbfa0('0x76')]?operators[_0x1ff895[_0xbfa0('0x6f')]](_0x1ff895[_0xbfa0('0x70')],_0x1dc799['membername']):![];case _0xbfa0('0x77'):return _0x1dc799[_0xbfa0('0x77')]?operators[_0x1ff895[_0xbfa0('0x6f')]](_0x1ff895[_0xbfa0('0x70')],_0x1dc799[_0xbfa0('0x77')]):![];case _0xbfa0('0x78'):return _0x1dc799['routeId']?operators[_0x1ff895[_0xbfa0('0x6f')]](_0x1ff895[_0xbfa0('0x70')],_0x1dc799['routeId']):![];}return![];};};module[_0xbfa0('0x79')]=Trigger;
\ No newline at end of file
index c1e6b10..49961fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['calleridname','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','desk','redis','defaults','localhost','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','then','total_entries','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','debug','[HTTP]','%s:%s','authType','token','username','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','length','string','nameField','toLowerCase','content','picklist','idField','customField','custom_fields','type','variableName','customVariable','Variable','name','priority','merge','getString','Subjects','xCALLY','CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','catch','error','stringify','recordingFormat','none','[OUTBOUND]','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','unmanaged','lastevent'];(function(_0x2cb913,_0x21a95f){var _0x5c476e=function(_0x102e12){while(--_0x102e12){_0x2cb913['push'](_0x2cb913['shift']());}};_0x5c476e(++_0x21a95f);}(_0x814b,0x1a2));var _0xb814=function(_0x38ced4,_0x24263f){_0x38ced4=_0x38ced4-0x0;var _0x547c07=_0x814b[_0x38ced4];return _0x547c07;};'use strict';var _=require(_0xb814('0x0'));var rp=require(_0xb814('0x1'));var md5=require(_0xb814('0x2'));var util=require(_0xb814('0x3'));var Redis=require(_0xb814('0x4'));var intUtil=require(_0xb814('0x5'));var config=require('../../../../config/environment');var logger=require(_0xb814('0x6'))(_0xb814('0x7'));config[_0xb814('0x8')]=_[_0xb814('0x9')](config[_0xb814('0x8')],{'host':_0xb814('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb814('0x8')]));function emit(_0x2e6272,_0x5c8539,_0x271af9){io['to'](_0x2e6272)[_0xb814('0xb')](_0x5c8539,_0x271af9);}var headers={'Content-Type':_0xb814('0xc'),'Accept':_0xb814('0xc')};function getUser(_0x1fea33,_0x21d4a5){if(intUtil[_0xb814('0xd')](_0x21d4a5)===!![]){logger[_0xb814('0xe')](_0xb814('0xf'),_0x21d4a5);return request({'uri':util[_0xb814('0x10')](_0xb814('0x11'),_0x1fea33['remoteUri'])})[_0xb814('0x12')](function(_0x56278f){if(_0x56278f[_0xb814('0x13')]){return _[_0xb814('0x14')](_0x56278f[_0xb814('0x15')][_0xb814('0x16')],{'email':_0x21d4a5});}})[_0xb814('0x12')](function(_0x3bde14){if(_0x3bde14){logger[_0xb814('0xe')](_0xb814('0x17'));return _0x3bde14;}else{logger[_0xb814('0xe')](_0xb814('0x18'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}});}else{logger[_0xb814('0xe')](_0xb814('0x1b'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}}function request(_0x125ce2){logger[_0xb814('0x1c')](_0xb814('0x1d'),JSON['stringify'](_0x125ce2));return rp(_[_0xb814('0x9')](_0x125ce2,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x270598){var _0xfac75b;if(_0x270598['authType']==='basic'){_0xfac75b=util['format'](_0xb814('0x1e'),_0x270598['username'],_0x270598['password']);}else if(_0x270598[_0xb814('0x1f')]===_0xb814('0x20')){_0xfac75b=util[_0xb814('0x10')]('%s/token:%s',_0x270598[_0xb814('0x21')],_0x270598['token']);}return util[_0xb814('0x10')](_0xb814('0x22'),new Buffer(_0xfac75b)[_0xb814('0x23')](_0xb814('0x24')));}function getEndUser(_0x27352e,_0x2bd039,_0x1f5d40){logger['info'](_0xb814('0x25'),_0x1f5d40);return request({'uri':util['format'](_0xb814('0x26'),_0x27352e[_0xb814('0x1a')]),'qs':{'phone':_0x1f5d40}})[_0xb814('0x12')](function(_0x208927){if(_0x208927[_0xb814('0x13')]){logger[_0xb814('0xe')](_0xb814('0x27'));return _0x208927['_embedded'][_0xb814('0x16')][0x0];}else{logger[_0xb814('0xe')](_0xb814('0x28'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x29'),_0x27352e[_0xb814('0x1a')]),'method':_0xb814('0x2a'),'body':{'first_name':_0x2bd039,'title':_0x2bd039,'phone_numbers':[{'type':_0xb814('0x2b'),'value':_0x1f5d40}]}});}});}function getTags(_0x5a6291,_0x271aa8){var _0x328a08=[];if(_0x5a6291&&_0x5a6291['length']>0x0){_0x328a08=_[_0xb814('0x2c')](_0x5a6291,_0x271aa8);}return _0x328a08;}function getCustomFields(_0x37d24d,_0x530744){var _0x499f22=[];var _0x20577b={'custom_fields':{}};if(_0x37d24d[_0xb814('0x2d')]>0x0){_['forEach'](_0x37d24d,function(_0x338a28){if(_['includes']([_0xb814('0x2e'),'picklist'],_0x338a28['type'])&&_0x338a28[_0xb814('0x2f')]&&!_0x338a28['customField']){_0x20577b[_0x338a28[_0xb814('0x2f')][_0xb814('0x30')]()]=_0x338a28[_0xb814('0x31')]['toString']();}else if(_['includes']([_0xb814('0x2e'),_0xb814('0x32')],_0x338a28['type'])&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x338a28[_0xb814('0x31')][_0xb814('0x23')]();}else if(_0x338a28[_0xb814('0x36')]==='variable'&&_0x338a28[_0xb814('0x37')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x530744[_0x338a28[_0xb814('0x37')]]&&(_0x20577b[_0xb814('0x35')][_0x338a28['idField']]=_0x530744[_0x338a28[_0xb814('0x37')]]['toString']());}else if(_0x338a28[_0xb814('0x36')]===_0xb814('0x38')&&_0x338a28[_0xb814('0x39')]&&_0x338a28['Variable'][_0xb814('0x3a')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28['customField']){_0x530744[_0x338a28[_0xb814('0x39')][_0xb814('0x3a')][_0xb814('0x30')]()]&&(_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x530744[_0x338a28[_0xb814('0x39')]['name'][_0xb814('0x30')]()]['toString']());}});}if(_0x20577b[_0xb814('0x3b')]){_0x20577b['priority']=Number(_0x20577b[_0xb814('0x3b')]);}return _0x20577b;}function getTicket(_0x4b9233,_0x2f8a2e,_0x26675a,_0x54a7fb,_0x4d308a){logger['info']('Creating\x20new\x20ticket...');var _0x17549e=_[_0xb814('0x3c')]({'subject':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x3e')],_0x4d308a,'\x20'),'type':'phone','status':'new','labels':[_0xb814('0x3f'),'Motion',_0xb814('0x40')][_0xb814('0x41')](getTags(_0x54a7fb[_0xb814('0x42')],_0xb814('0x3a'))),'description':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x43')],_0x4d308a,'\x0a'),'_links':{'assigned_user':{'href':util[_0xb814('0x10')](_0xb814('0x44'),_0x2f8a2e['id']),'class':_0xb814('0x45')}},'message':{'direction':'in','body':intUtil['getString'](_0x54a7fb['Descriptions'],_0x4d308a,'\x0a')}},getCustomFields(_0x54a7fb['Fields'],_0x4d308a));return request({'uri':util[_0xb814('0x10')]('%s/customers/%d/cases',_0x4b9233[_0xb814('0x1a')],_0x26675a['id']),'method':'POST','body':_0x17549e});}exports[_0xb814('0x46')]=function(_0x44ff56,_0x9ef639,_0x2e97cc,_0x4fae23,_0x30fc57,_0x15f01a){var _0x2b23c7,_0x22cf27;_0x15f01a[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x15f01a['remoteUri']);_0x15f01a[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x15f01a[_0xb814('0x48')]);if(_0x30fc57&&_0x30fc57[_0xb814('0x49')]){logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x4b'));_0x9ef639['recordingURL']=util['format'](_0xb814('0x4c'),_0x15f01a[_0xb814('0x48')],_0x9ef639[_0xb814('0x4d')],md5(_0x9ef639[_0xb814('0x4d')]));}else{_0x9ef639[_0xb814('0x4e')]='';}headers[_0xb814('0x4f')]=getAuth(_0x15f01a);return getUser(_0x15f01a,_0x4fae23[_0xb814('0x50')])[_0xb814('0x12')](function(_0x2eb9b6){_0x2b23c7=_0x2eb9b6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x2b23c7['id']);return getEndUser(_0x15f01a,_0x9ef639['calleridname'],_0x9ef639[_0xb814('0x52')]);})[_0xb814('0x12')](function(_0x4a76bb){_0x22cf27=_0x4a76bb;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x22cf27['id']);return getTicket(_0x15f01a,_0x2b23c7,_0x22cf27,_0x2e97cc,_0x9ef639);})[_0xb814('0x12')](function(_0x37866f){if(_0x37866f){logger[_0xb814('0xe')](_0xb814('0x53'));logger[_0xb814('0xe')](_0xb814('0x54'),_0x37866f['id']);switch(_0x15f01a[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0x37866f['id']});break;case _0xb814('0x58'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x5a'),{'uri':util['format'](_0xb814('0x5b'),_0x37866f['id'])});break;default:logger['error'](_0xb814('0x4a'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x3cf8f8){console['error'](_0x3cf8f8);logger[_0xb814('0x5d')](_0xb814('0x4a'),JSON[_0xb814('0x5e')](_0x3cf8f8));});};exports['outbound']=function(_0x3da050,_0x5f0e58,_0x13bdcf,_0x158893,_0x4aed78,_0x39952d,_0x4a3f84){var _0x539be7,_0x3b9709;_0x39952d[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x39952d['remoteUri']);_0x39952d[_0xb814('0x48')]=intUtil['stripTrailingSlash'](_0x39952d[_0xb814('0x48')]);if(_0x4a3f84&&_0x4a3f84[_0xb814('0x5f')]&&_0x4a3f84['recordingFormat']!==_0xb814('0x60')){logger['info'](_0xb814('0x61'),_0xb814('0x4b'));_0x5f0e58[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x39952d[_0xb814('0x48')],_0x5f0e58[_0xb814('0x4d')],md5(_0x5f0e58[_0xb814('0x4d')]));}headers['Authorization']=getAuth(_0x39952d);return getUser(_0x39952d,_0x158893[_0xb814('0x50')])[_0xb814('0x12')](function(_0x5d71d5){_0x539be7=_0x5d71d5;logger[_0xb814('0xe')](_0xb814('0x51'),_0x539be7['id']);return getEndUser(_0x39952d,_0x5f0e58['destcalleridname'],_0x5f0e58[_0xb814('0x62')]);})['then'](function(_0x48362c){_0x3b9709=_0x48362c;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x3b9709['id']);return getTicket(_0x39952d,_0x539be7,_0x3b9709,_0x13bdcf,_0x5f0e58);})[_0xb814('0x12')](function(_0xd1cd8b){if(_0xd1cd8b){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')]('The\x20Ticket\x20ID\x20is:',_0xd1cd8b['id']);switch(_0x39952d[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x63'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0xd1cd8b['id']});break;case'newTab':logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),'trigger:browser:url',{'uri':util[_0xb814('0x10')]('%s/agent/tickets/%s',_0x39952d[_0xb814('0x1a')],_0xd1cd8b['id'])});break;default:logger[_0xb814('0x5d')](_0xb814('0x61'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x579351){logger[_0xb814('0x5d')]('[OUTBOUND]',JSON[_0xb814('0x5e')](_0x579351));});};exports[_0xb814('0x64')]=function(_0xa03cd2,_0x1b024f,_0x3377d4,_0x167d82,_0x143518,_0x4d44e3){var _0x44088d,_0x51ca51;_0x4d44e3[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x1a')]);_0x4d44e3[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x48')]);if(_0x143518&&_0x143518['monitor_format']){logger[_0xb814('0xe')]('['+_0x1b024f[_0xb814('0x65')]['toUpperCase']()+']',_0xb814('0x4b'));_0x1b024f[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x4d44e3[_0xb814('0x48')],_0x1b024f['uniqueid'],md5(_0x1b024f[_0xb814('0x4d')]));}else{_0x1b024f['recordingURL']='';}headers[_0xb814('0x4f')]=getAuth(_0x4d44e3);return getUser(_0x4d44e3)[_0xb814('0x12')](function(_0x2645f6){_0x44088d=_0x2645f6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x44088d['id']);return getEndUser(_0x4d44e3,_0x1b024f[_0xb814('0x66')],_0x1b024f['calleridnum']);})['then'](function(_0x5d064b){_0x51ca51=_0x5d064b;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x51ca51['id']);return getTicket(_0x4d44e3,_0x44088d,_0x51ca51,_0x3377d4,_0x1b024f);})[_0xb814('0x12')](function(_0x1d3954){if(_0x1d3954){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')](_0xb814('0x54'),_0x1d3954['id']);}})[_0xb814('0x5c')](function(_0x5aabbe){logger[_0xb814('0x5d')]('['+_0x1b024f[_0xb814('0x65')][_0xb814('0x67')]()+']',JSON[_0xb814('0x5e')](_0x5aabbe));});};
\ No newline at end of file
+var _0x3e74=['customField','content','idField','custom_fields','variable','variableName','name','Variable','toLowerCase','priority','Creating\x20new\x20ticket...','getString','phone','new','xCALLY','Motion','CTI','concat','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','stripTrailingSlash','serverUrl','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','newTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','catch','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridnum','The\x20Enduser\x20ID\x20is:','trigger:desk:display','trigger:browser:url','%s/agent/tickets/%s','stringify','unmanaged','monitor_format','lastevent','toUpperCase','calleridnum','lodash','md5','util','ioredis','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Getting\x20agent\x20with\x20email','%s/users','then','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','format','debug','[HTTP]','GET','authType','basic','%s:%s','username','password','token','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','total_entries','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','length','forEach','includes','string','picklist','type','nameField'];(function(_0x20b3e1,_0x652781){var _0x2acdc8=function(_0x497238){while(--_0x497238){_0x20b3e1['push'](_0x20b3e1['shift']());}};_0x2acdc8(++_0x652781);}(_0x3e74,0x175));var _0x43e7=function(_0x47788a,_0x497ec5){_0x47788a=_0x47788a-0x0;var _0x1611d1=_0x3e74[_0x47788a];return _0x1611d1;};'use strict';var _=require(_0x43e7('0x0'));var rp=require('request-promise');var md5=require(_0x43e7('0x1'));var util=require(_0x43e7('0x2'));var Redis=require(_0x43e7('0x3'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x43e7('0x4'))('desk');config[_0x43e7('0x5')]=_[_0x43e7('0x6')](config[_0x43e7('0x5')],{'host':_0x43e7('0x7'),'port':0x18eb});var io=require(_0x43e7('0x8'))(new Redis(config['redis']));function emit(_0x45a0d1,_0x3491d6,_0x2ede2d){io['to'](_0x45a0d1)[_0x43e7('0x9')](_0x3491d6,_0x2ede2d);}var headers={'Content-Type':_0x43e7('0xa'),'Accept':'application/json'};function getUser(_0x212c6c,_0x554d44){if(intUtil['validateEmail'](_0x554d44)===!![]){logger[_0x43e7('0xb')](_0x43e7('0xc'),_0x554d44);return request({'uri':util['format'](_0x43e7('0xd'),_0x212c6c['remoteUri'])})[_0x43e7('0xe')](function(_0x37302c){if(_0x37302c['total_entries']){return _[_0x43e7('0xf')](_0x37302c[_0x43e7('0x10')][_0x43e7('0x11')],{'email':_0x554d44});}})[_0x43e7('0xe')](function(_0x4e008c){if(_0x4e008c){logger['info'](_0x43e7('0x12'));return _0x4e008c;}else{logger[_0x43e7('0xb')](_0x43e7('0x13'));return request({'uri':util['format']('%s/users/me',_0x212c6c[_0x43e7('0x14')])});}});}else{logger[_0x43e7('0xb')](_0x43e7('0x15'));return request({'uri':util[_0x43e7('0x16')]('%s/users/me',_0x212c6c['remoteUri'])});}}function request(_0xdf16c){logger[_0x43e7('0x17')](_0x43e7('0x18'),JSON['stringify'](_0xdf16c));return rp(_['defaults'](_0xdf16c,{'method':_0x43e7('0x19'),'headers':headers,'json':!![]}));}function getAuth(_0x1ca758){var _0x9037d3;if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1b')){_0x9037d3=util[_0x43e7('0x16')](_0x43e7('0x1c'),_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1e')]);}else if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1f')){_0x9037d3=util[_0x43e7('0x16')]('%s/token:%s',_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1f')]);}return util['format'](_0x43e7('0x20'),new Buffer(_0x9037d3)[_0x43e7('0x21')](_0x43e7('0x22')));}function getEndUser(_0x28aacc,_0x4077fb,_0x2f4cb4){logger['info'](_0x43e7('0x23'),_0x2f4cb4);return request({'uri':util['format']('%s/customers/search',_0x28aacc[_0x43e7('0x14')]),'qs':{'phone':_0x2f4cb4}})[_0x43e7('0xe')](function(_0x4b2b9f){if(_0x4b2b9f[_0x43e7('0x24')]){logger['info'](_0x43e7('0x25'));return _0x4b2b9f['_embedded'][_0x43e7('0x11')][0x0];}else{logger[_0x43e7('0xb')](_0x43e7('0x26'));return request({'uri':util[_0x43e7('0x16')]('%s/customers',_0x28aacc['remoteUri']),'method':_0x43e7('0x27'),'body':{'first_name':_0x4077fb,'title':_0x4077fb,'phone_numbers':[{'type':'work','value':_0x2f4cb4}]}});}});}function getTags(_0x2dd5f,_0x40dc8f){var _0x3565cf=[];if(_0x2dd5f&&_0x2dd5f[_0x43e7('0x28')]>0x0){_0x3565cf=_['map'](_0x2dd5f,_0x40dc8f);}return _0x3565cf;}function getCustomFields(_0x33a1a5,_0x4690a6){var _0x45b675=[];var _0x50f9f5={'custom_fields':{}};if(_0x33a1a5[_0x43e7('0x28')]>0x0){_[_0x43e7('0x29')](_0x33a1a5,function(_0x2b85a5){if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5[_0x43e7('0x2d')])&&_0x2b85a5[_0x43e7('0x2e')]&&!_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x2b85a5[_0x43e7('0x2e')]['toLowerCase']()]=_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x21')]();}else if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5['type'])&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x2b85a5['content']['toString']();}else if(_0x2b85a5['type']===_0x43e7('0x33')&&_0x2b85a5[_0x43e7('0x34')]&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x34')]]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5['idField']]=_0x4690a6[_0x2b85a5['variableName']]['toString']());}else if(_0x2b85a5['type']==='customVariable'&&_0x2b85a5['Variable']&&_0x2b85a5['Variable'][_0x43e7('0x35')]&&_0x2b85a5['idField']&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x36')][_0x43e7('0x35')][_0x43e7('0x37')]()]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x4690a6[_0x2b85a5[_0x43e7('0x36')]['name']['toLowerCase']()]['toString']());}});}if(_0x50f9f5[_0x43e7('0x38')]){_0x50f9f5[_0x43e7('0x38')]=Number(_0x50f9f5[_0x43e7('0x38')]);}return _0x50f9f5;}function getTicket(_0x16cdba,_0x1b1440,_0x1ed538,_0x1d4589,_0x2ffd43){logger['info'](_0x43e7('0x39'));var _0x2b0ffe=_['merge']({'subject':intUtil[_0x43e7('0x3a')](_0x1d4589['Subjects'],_0x2ffd43,'\x20'),'type':_0x43e7('0x3b'),'status':_0x43e7('0x3c'),'labels':[_0x43e7('0x3d'),_0x43e7('0x3e'),_0x43e7('0x3f')][_0x43e7('0x40')](getTags(_0x1d4589['Tags'],'name')),'description':intUtil[_0x43e7('0x3a')](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a'),'_links':{'assigned_user':{'href':util[_0x43e7('0x16')](_0x43e7('0x42'),_0x1b1440['id']),'class':_0x43e7('0x43')}},'message':{'direction':'in','body':intUtil['getString'](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a')}},getCustomFields(_0x1d4589[_0x43e7('0x44')],_0x2ffd43));return request({'uri':util['format'](_0x43e7('0x45'),_0x16cdba['remoteUri'],_0x1ed538['id']),'method':_0x43e7('0x27'),'body':_0x2b0ffe});}exports['queue']=function(_0x3d81ae,_0x3b4235,_0x3a5807,_0x1c2c6b,_0x49b866,_0x47d6a1){var _0x103393,_0x40c509;_0x47d6a1[_0x43e7('0x14')]=intUtil[_0x43e7('0x46')](_0x47d6a1['remoteUri']);_0x47d6a1['serverUrl']=intUtil['stripTrailingSlash'](_0x47d6a1[_0x43e7('0x47')]);if(_0x49b866&&_0x49b866['monitor_format']){logger[_0x43e7('0xb')]('[QUEUE]','Recording\x20is\x20enabled!');_0x3b4235[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x47d6a1[_0x43e7('0x47')],_0x3b4235[_0x43e7('0x4a')],md5(_0x3b4235[_0x43e7('0x4a')]));}else{_0x3b4235['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x47d6a1);return getUser(_0x47d6a1,_0x1c2c6b[_0x43e7('0x4c')])[_0x43e7('0xe')](function(_0x1fd277){_0x103393=_0x1fd277;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x103393['id']);return getEndUser(_0x47d6a1,_0x3b4235['calleridname'],_0x3b4235['calleridnum']);})[_0x43e7('0xe')](function(_0x36a09e){_0x40c509=_0x36a09e;logger[_0x43e7('0xb')]('The\x20Enduser\x20ID\x20is:',_0x40c509['id']);return getTicket(_0x47d6a1,_0x103393,_0x40c509,_0x3a5807,_0x3b4235);})['then'](function(_0x56489b){if(_0x56489b){logger[_0x43e7('0xb')](_0x43e7('0x4e'));logger['info'](_0x43e7('0x4f'),_0x56489b['id']);switch(_0x47d6a1[_0x43e7('0x2d')]){case _0x43e7('0x50'):logger['info']('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0x43e7('0x51'),_0x1c2c6b[_0x43e7('0x35')]),'trigger:desk:display',{'recordId':_0x56489b['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')](_0x43e7('0x53'),_0x43e7('0x54'));emit(util['format'](_0x43e7('0x51'),_0x1c2c6b['name']),'trigger:browser:url',{'uri':util[_0x43e7('0x16')](_0x43e7('0x55'),_0x56489b['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x53'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x1cd87c){console[_0x43e7('0x56')](_0x1cd87c);logger[_0x43e7('0x56')](_0x43e7('0x53'),JSON['stringify'](_0x1cd87c));});};exports[_0x43e7('0x59')]=function(_0x46c910,_0x499c03,_0x39e3ca,_0x4e6f6d,_0x35b799,_0x520857,_0x34e2ec){var _0x1f561f,_0xfe13fa;_0x520857['remoteUri']=intUtil['stripTrailingSlash'](_0x520857[_0x43e7('0x14')]);_0x520857[_0x43e7('0x47')]=intUtil[_0x43e7('0x46')](_0x520857[_0x43e7('0x47')]);if(_0x34e2ec&&_0x34e2ec[_0x43e7('0x5a')]&&_0x34e2ec[_0x43e7('0x5a')]!==_0x43e7('0x5b')){logger[_0x43e7('0xb')](_0x43e7('0x5c'),_0x43e7('0x5d'));_0x499c03[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x520857[_0x43e7('0x47')],_0x499c03['uniqueid'],md5(_0x499c03[_0x43e7('0x4a')]));}headers[_0x43e7('0x4b')]=getAuth(_0x520857);return getUser(_0x520857,_0x4e6f6d[_0x43e7('0x4c')])['then'](function(_0x5d63c6){_0x1f561f=_0x5d63c6;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x1f561f['id']);return getEndUser(_0x520857,_0x499c03['destcalleridname'],_0x499c03[_0x43e7('0x5e')]);})['then'](function(_0x49a6ce){_0xfe13fa=_0x49a6ce;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xfe13fa['id']);return getTicket(_0x520857,_0x1f561f,_0xfe13fa,_0x39e3ca,_0x499c03);})[_0x43e7('0xe')](function(_0x40155c){if(_0x40155c){logger[_0x43e7('0xb')]('Ticket\x20created!');logger[_0x43e7('0xb')](_0x43e7('0x4f'),_0x40155c['id']);switch(_0x520857['type']){case _0x43e7('0x50'):logger[_0x43e7('0xb')](_0x43e7('0x53'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format']('user:%s',_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x60'),{'recordId':_0x40155c['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x43e7('0x16')](_0x43e7('0x51'),_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x61'),{'uri':util['format'](_0x43e7('0x62'),_0x520857[_0x43e7('0x14')],_0x40155c['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x5c'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x4665db){logger[_0x43e7('0x56')](_0x43e7('0x5c'),JSON[_0x43e7('0x63')](_0x4665db));});};exports[_0x43e7('0x64')]=function(_0x57fdfe,_0x5f3824,_0x2b0711,_0x58a3a8,_0x501616,_0x50edb2){var _0xb3e981,_0xe666b0;_0x50edb2['remoteUri']=intUtil[_0x43e7('0x46')](_0x50edb2[_0x43e7('0x14')]);_0x50edb2[_0x43e7('0x47')]=intUtil['stripTrailingSlash'](_0x50edb2[_0x43e7('0x47')]);if(_0x501616&&_0x501616[_0x43e7('0x65')]){logger[_0x43e7('0xb')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',_0x43e7('0x5d'));_0x5f3824[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x50edb2[_0x43e7('0x47')],_0x5f3824[_0x43e7('0x4a')],md5(_0x5f3824['uniqueid']));}else{_0x5f3824['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x50edb2);return getUser(_0x50edb2)['then'](function(_0x5cb26e){_0xb3e981=_0x5cb26e;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0xb3e981['id']);return getEndUser(_0x50edb2,_0x5f3824['calleridname'],_0x5f3824[_0x43e7('0x68')]);})[_0x43e7('0xe')](function(_0x1e2fed){_0xe666b0=_0x1e2fed;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xe666b0['id']);return getTicket(_0x50edb2,_0xb3e981,_0xe666b0,_0x2b0711,_0x5f3824);})[_0x43e7('0xe')](function(_0x398a78){if(_0x398a78){logger['info'](_0x43e7('0x4e'));logger[_0x43e7('0xb')]('The\x20Ticket\x20ID\x20is:',_0x398a78['id']);}})[_0x43e7('0x58')](function(_0x5c2c5f){logger[_0x43e7('0x56')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',JSON[_0x43e7('0x63')](_0x5c2c5f));});};
\ No newline at end of file
index b03c7e8..ebede63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f88=['serverUrl','unmanaged','format','%s/api/data/v9.0/','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','bluebird','request-promise','util','./util','md5','ioredis','../../../../config/logger','dynamics365','redis','defaults','localhost','socket.io-emitter','POST','password','clientSecret','then','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','Bearer\x20','4.0','validateEmail','email','userEmail','info','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','internalemailaddress','message','toLowerCase','outbound','destcalleridnum','headers','substring','lastIndexOf','calleridnum','GET','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','telephone1','enduserId',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','length','forEach','includes','string','indexOf','content','ticketType','incident','incidents','assign','getString','Subjects','/contacts(','/systemusers(','Fields','phonecall','phonecalls','callDirection','queue','odata-entityid','ticketId','user:%s','trigger:browser:url','remoteUri','stripTrailingSlash'];(function(_0x1d0d46,_0x2b9ded){var _0x523c3c=function(_0x1ee3c0){while(--_0x1ee3c0){_0x1d0d46['push'](_0x1d0d46['shift']());}};_0x523c3c(++_0x2b9ded);}(_0x1f88,0xd9));var _0x81f8=function(_0x2fa088,_0x3e4672){_0x2fa088=_0x2fa088-0x0;var _0x966ff3=_0x1f88[_0x2fa088];return _0x966ff3;};'use strict';var _=require(_0x81f8('0x0'));var BPromise=require(_0x81f8('0x1'));var rp=require(_0x81f8('0x2'));var util=require(_0x81f8('0x3'));var intUtil=require(_0x81f8('0x4'));var md5=require(_0x81f8('0x5'));var Redis=require(_0x81f8('0x6'));var logger=require(_0x81f8('0x7'))(_0x81f8('0x8'));var config=require('../../../../config/environment');config[_0x81f8('0x9')]=_[_0x81f8('0xa')](config[_0x81f8('0x9')],{'host':_0x81f8('0xb'),'port':0x18eb});var io=require(_0x81f8('0xc'))(new Redis(config['redis']));function getAuthToken(_0x273928,_0x42c731,_0x19e15a){var _0x1c85e0={'method':_0x81f8('0xd'),'uri':_0x42c731,'form':{'client_id':_0x273928['clientId'],'resource':_0x273928['remoteUri'],'username':_0x273928['username'],'password':_0x273928[_0x81f8('0xe')],'grant_type':'password','client_secret':_0x273928[_0x81f8('0xf')]},'json':!![]};return rp(_0x1c85e0)[_0x81f8('0x10')](function(_0x36e353){return _0x36e353[_0x81f8('0x11')];})[_0x81f8('0x12')](function(_0x3a2855){logger[_0x81f8('0x13')]('['+[_0x19e15a[_0x81f8('0x14')]()]+_0x81f8('0x15'));return _0x3a2855['message'];});}function getUser(_0x5c7e4b,_0x55c049,_0x2ed0ba,_0x250b61,_0x46c257,_0x46bb5d){return new BPromise(function(_0x4187a4,_0x5bc79f){return getAuthToken(_0x55c049,_0x250b61,_0x46bb5d)[_0x81f8('0x10')](function(_0x16c4b8){var _0x330ac1={'method':'GET','uri':_0x46c257+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0x81f8('0x16')+_0x16c4b8,'OData-Version':_0x81f8('0x17')},'json':!![]};return rp(_0x330ac1);})[_0x81f8('0x10')](function(_0x520b72){var _0x19e6ae=_0x520b72['value'];var _0xcacc58=![];var _0x25b499=null;if(!_['isNil'](_0x2ed0ba)){if(intUtil[_0x81f8('0x18')](_0x2ed0ba[_0x81f8('0x19')])){_0x5c7e4b[_0x81f8('0x1a')]=_0x2ed0ba['email'];for(_0x25b499=0x0;_0x25b499<_0x19e6ae['length'];_0x25b499++){if(_0x19e6ae[_0x25b499]['internalemailaddress']===_0x2ed0ba['email']&&!_0x19e6ae[_0x25b499]['isdisabled']){_0xcacc58=!![];logger[_0x81f8('0x1b')]('['+[_0x46bb5d[_0x81f8('0x14')]()]+']\x20Agent\x20found\x20'+_0x19e6ae[_0x25b499][_0x81f8('0x1c')]+'!');_0x5c7e4b[_0x81f8('0x1d')]=_0x19e6ae[_0x25b499][_0x81f8('0x1c')];}}}}if(!_0xcacc58){logger['info']('['+[_0x46bb5d[_0x81f8('0x14')]()]+_0x81f8('0x1e'));_0x5c7e4b['userEmail']=_0x55c049[_0x81f8('0x1f')];for(_0x25b499=0x0;_0x25b499<_0x19e6ae['length'];_0x25b499++){if(_0x19e6ae[_0x25b499][_0x81f8('0x20')]===_0x55c049[_0x81f8('0x1f')]){_0x5c7e4b['userId']=_0x19e6ae[_0x25b499][_0x81f8('0x1c')];}}}_0x4187a4(_0x5c7e4b);})[_0x81f8('0x12')](function(_0x34ae5d){_0x5bc79f(_0x34ae5d[_0x81f8('0x21')]);});});}function createEndUser(_0x3075d6,_0x62bb7b,_0x3a0470,_0x5a90fb,_0x4fe95f,_0x54ea97){return new BPromise(function(_0xa4c4cf,_0x1a6992){return getAuthToken(_0x62bb7b,_0x3a0470,_0x54ea97)[_0x81f8('0x10')](function(_0x4af109){var _0x323f07=_0x54ea97[_0x81f8('0x22')]()===_0x81f8('0x23')?_0x4fe95f[_0x81f8('0x24')]:_0x4fe95f['calleridnum'];var _0x560e27={'method':_0x81f8('0xd'),'uri':_0x5a90fb+'contacts','body':{'telephone1':_0x323f07,'fullname':_0x323f07,'firstname':_0x323f07,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x3075d6[_0x81f8('0x1d')]+')'},'headers':{'Authorization':_0x81f8('0x16')+_0x4af109,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x560e27);})[_0x81f8('0x10')](function(_0x4fa792){var _0x2d99d6=_0x4fa792[_0x81f8('0x25')]['odata-entityid'];var _0x2a0ec2=_0x2d99d6[_0x81f8('0x26')](_0x2d99d6[_0x81f8('0x27')]('(')+0x1,_0x2d99d6['lastIndexOf'](')'));_0x3075d6['enduserId']=_0x2a0ec2;_0xa4c4cf(_0x3075d6);})[_0x81f8('0x12')](function(_0x5c365a){_0x1a6992(_0x5c365a[_0x81f8('0x21')]);});});}function getEndUser(_0x22e95e,_0x1298fe,_0x3a5aaf,_0x5497d0,_0x2fd0db,_0x222be3){return new BPromise(function(_0x3019ac,_0x19fa19){var _0x3fcd81=_0x222be3[_0x81f8('0x22')]()==='outbound'?_0x2fd0db['destcalleridnum']:_0x2fd0db[_0x81f8('0x28')];return getAuthToken(_0x1298fe,_0x3a5aaf,_0x222be3)['then'](function(_0x37d4ac){var _0x23154a={'method':_0x81f8('0x29'),'uri':_0x5497d0+_0x81f8('0x2a')+_0x3fcd81[_0x81f8('0x2b')]('+',_0x81f8('0x2c'))+'\x27','headers':{'Authorization':_0x81f8('0x16')+_0x37d4ac,'If-None-Match':null,'OData-Version':_0x81f8('0x17')},'json':!![]};return rp(_0x23154a);})['then'](function(_0x881bb8){var _0x3e54ca=null;if(_0x881bb8){var _0x139d28=_0x881bb8['value'];var _0x52700e=![];for(_0x3e54ca=0x0;_0x3e54ca<_0x139d28['length'];_0x3e54ca++){if(_0x139d28[_0x3e54ca][_0x81f8('0x2d')]===_0x3fcd81){_0x52700e=!![];_0x22e95e[_0x81f8('0x2e')]=_0x139d28[_0x3e54ca]['contactid'];}}if(_0x52700e){_0x3019ac(_0x22e95e);}else{return createEndUser(_0x22e95e,_0x1298fe,_0x3a5aaf,_0x5497d0,_0x2fd0db,_0x222be3)[_0x81f8('0x10')](function(_0x4c997e){logger[_0x81f8('0x1b')]('['+[_0x222be3[_0x81f8('0x14')]()]+_0x81f8('0x2f'),_0x4c997e[_0x81f8('0x2e')]);_0x3019ac(_0x4c997e);});}}else{return createEndUser(_0x22e95e,_0x1298fe,_0x3a5aaf,_0x5497d0,_0x2fd0db,_0x222be3)[_0x81f8('0x10')](function(_0x183489){logger[_0x81f8('0x1b')]('['+[_0x222be3['toUpperCase']()]+_0x81f8('0x30'),_0x183489['enduserId']);_0x3019ac(_0x183489);});}});});}function getCustomFields(_0x254819,_0x3669a9,_0x3f4e13){var _0x2b5221={};if(_0x254819[_0x81f8('0x31')]>0x0){_[_0x81f8('0x32')](_0x254819,function(_0x20511a){if(_[_0x81f8('0x33')]([_0x81f8('0x34'),'picklist'],_0x20511a['type'])&&_0x20511a['nameField']&&!_0x20511a['customField']){var _0x4328e3=_0x20511a['idField']['toLowerCase']();var _0x174fad=_0x4328e3[_0x81f8('0x26')](0x0,_0x4328e3[_0x81f8('0x35')]('_'));var _0x5a0306=_0x4328e3[_0x81f8('0x26')](_0x4328e3[_0x81f8('0x35')]('_')+0x1);if(_0x174fad===_0x3f4e13){_0x2b5221[_0x5a0306]=_0x20511a[_0x81f8('0x36')];}}});}return _0x2b5221;}function getTicket(_0x1c98ec,_0x4a64c0,_0x27a09,_0x56d81b,_0x2f24d8,_0x2a39f0,_0x2790c1){return new BPromise(function(_0x285e58,_0x321035){var _0x1b3100;return getAuthToken(_0x4a64c0,_0x27a09,_0x2790c1)['then'](function(_0xd4027c){if(_0x2a39f0[_0x81f8('0x37')]===_0x81f8('0x38')){_0x1b3100={'method':_0x81f8('0xd'),'uri':_0x56d81b+_0x81f8('0x39'),'body':Object[_0x81f8('0x3a')]({},{'title':intUtil[_0x81f8('0x3b')](_0x2a39f0[_0x81f8('0x3c')],_0x2f24d8,'\x20'),'description':intUtil[_0x81f8('0x3b')](_0x2a39f0['Descriptions'],_0x2f24d8,'\x0a'),'customerid_contact@odata.bind':_0x81f8('0x3d')+_0x1c98ec[_0x81f8('0x2e')]+')','ownerid@odata.bind':_0x81f8('0x3e')+_0x1c98ec[_0x81f8('0x1d')]+')','caseorigincode':'1'},getCustomFields(_0x2a39f0[_0x81f8('0x3f')],_0x2f24d8,_0x2a39f0[_0x81f8('0x37')])),'headers':{'Authorization':'Bearer\x20'+_0xd4027c,'OData-Version':_0x81f8('0x17')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x2a39f0[_0x81f8('0x37')]===_0x81f8('0x40')){_0x1b3100={'method':_0x81f8('0xd'),'uri':_0x56d81b+_0x81f8('0x41'),'body':Object[_0x81f8('0x3a')]({},{'subject':intUtil['getString'](_0x2a39f0[_0x81f8('0x3c')],_0x2f24d8,'\x20'),'phonenumber':String(_0x2f24d8[_0x81f8('0x28')]),'description':intUtil[_0x81f8('0x3b')](_0x2a39f0['Descriptions'],_0x2f24d8,'\x0a'),'regardingobjectid_contact@odata.bind':_0x81f8('0x3d')+_0x1c98ec['enduserId']+')','ownerid@odata.bind':_0x81f8('0x3e')+_0x1c98ec[_0x81f8('0x1d')]+')','directioncode':_0x1c98ec[_0x81f8('0x42')]===_0x81f8('0x43')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x81f8('0x3e')+_0x1c98ec[_0x81f8('0x1d')]+')','participationtypemask':_0x1c98ec[_0x81f8('0x42')]===_0x81f8('0x43')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x1c98ec['enduserId']+')','participationtypemask':_0x1c98ec[_0x81f8('0x42')]===_0x81f8('0x43')?0x1:0x2}]},getCustomFields(_0x2a39f0[_0x81f8('0x3f')],_0x2f24d8,_0x2a39f0[_0x81f8('0x37')])),'headers':{'Authorization':_0x81f8('0x16')+_0xd4027c,'OData-Version':_0x81f8('0x17')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x1b3100);})[_0x81f8('0x10')](function(_0x59c59e){var _0x20061c=_0x59c59e['headers'][_0x81f8('0x44')];var _0x1fbb5a=_0x20061c[_0x81f8('0x26')](_0x20061c[_0x81f8('0x27')]('(')+0x1,_0x20061c[_0x81f8('0x27')](')'));_0x1c98ec[_0x81f8('0x45')]=_0x1fbb5a;_0x285e58(_0x1c98ec);})[_0x81f8('0x12')](function(_0x38f884){_0x321035(_0x38f884[_0x81f8('0x21')]);});});}function emit(_0x5bc952,_0x180a27,_0x4b32eb,_0x10c66d){var _0x36b4d9={'uri':util['format']('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x5bc952,_0x4b32eb,_0x10c66d)};io['to'](util['format'](_0x81f8('0x46'),_0x180a27))['emit'](_0x81f8('0x47'),_0x36b4d9);}exports['cs']=function(_0x1486cf,_0x5712a9,_0x2abc87,_0x1b5e72,_0x4901b1,_0x4c447b,_0x3edf23,_0x43db12){var _0x86aade={};_0x4c447b[_0x81f8('0x48')]=intUtil[_0x81f8('0x49')](_0x4c447b['remoteUri']);_0x4c447b[_0x81f8('0x4a')]=intUtil[_0x81f8('0x49')](_0x4c447b[_0x81f8('0x4a')]);_0x86aade[_0x81f8('0x42')]=_0x43db12===_0x81f8('0x43')||_0x43db12===_0x81f8('0x4b')?'queue':_0x81f8('0x23');var _0x2c5c1f=util[_0x81f8('0x4c')](_0x81f8('0x4d'),_0x4c447b[_0x81f8('0x48')]);var _0x265860=util[_0x81f8('0x4c')]('https://login.microsoftonline.com/%s/oauth2/token',_0x4c447b[_0x81f8('0x4e')]);var _0x372ba7=util[_0x81f8('0x4c')](_0x81f8('0x4f'),_0x4c447b['serverUrl'],_0x5712a9[_0x81f8('0x50')],md5(_0x5712a9[_0x81f8('0x50')]));if(_0x4901b1&&_0x4901b1[_0x81f8('0x51')]){logger[_0x81f8('0x1b')](_0x81f8('0x52'),_0x81f8('0x53'));_0x5712a9[_0x81f8('0x54')]=_0x372ba7;}else if(_0x3edf23&&_0x3edf23[_0x81f8('0x55')]&&_0x3edf23['recordingFormat']!=='none'){logger[_0x81f8('0x1b')](_0x81f8('0x56'),_0x81f8('0x53'));_0x5712a9[_0x81f8('0x54')]=_0x372ba7;}else{_0x5712a9['recordingURL']='';}return getUser(_0x86aade,_0x4c447b,_0x1b5e72,_0x265860,_0x2c5c1f,_0x43db12)['then'](function(_0x5750ba){logger[_0x81f8('0x1b')]('['+_0x43db12['toUpperCase']()+_0x81f8('0x57'),_0x5750ba['userId']);logger[_0x81f8('0x1b')]('['+_0x43db12[_0x81f8('0x14')]()+_0x81f8('0x58'),_0x5750ba[_0x81f8('0x1a')]);return getEndUser(_0x5750ba,_0x4c447b,_0x265860,_0x2c5c1f,_0x5712a9,_0x43db12);})[_0x81f8('0x10')](function(_0x2d232a){logger[_0x81f8('0x1b')]('['+_0x43db12['toUpperCase']()+_0x81f8('0x59'),_0x2d232a[_0x81f8('0x2e')]);logger[_0x81f8('0x1b')]('['+_0x43db12['toUpperCase']()+_0x81f8('0x5a'),_0x5712a9['calleridnum']);return getTicket(_0x2d232a,_0x4c447b,_0x265860,_0x2c5c1f,_0x5712a9,_0x2abc87,_0x43db12);})[_0x81f8('0x10')](function(_0x317f77){logger[_0x81f8('0x1b')](util[_0x81f8('0x4c')]('['+_0x43db12[_0x81f8('0x14')]()+_0x81f8('0x5b'),_0x2abc87['ticketType'],_0x317f77[_0x81f8('0x45')]));logger[_0x81f8('0x1b')](util[_0x81f8('0x4c')]('['+_0x43db12[_0x81f8('0x14')]()+_0x81f8('0x5c'),_0x43db12));if(_0x43db12!==_0x81f8('0x4b')){logger[_0x81f8('0x1b')]('['+_0x43db12['toUpperCase']()+']',_0x81f8('0x5d'));emit(_0x4c447b[_0x81f8('0x48')],_0x1b5e72[_0x81f8('0x5e')],_0x2abc87[_0x81f8('0x37')],_0x317f77[_0x81f8('0x45')]);}})[_0x81f8('0x12')](function(_0x197355){logger['error']('['+_0x43db12['toUpperCase']()+_0x81f8('0x5f'),util[_0x81f8('0x60')](_0x197355,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xf513=['util','./util','md5','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','POST','clientId','remoteUri','password','then','toUpperCase',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','4.0','isNil','validateEmail','email','userEmail','length','info',']\x20Agent\x20found\x20','userId','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','catch','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','Bearer\x20','substring','replace','%2b','value','telephone1','enduserId','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','string','picklist','type','customField','indexOf','ticketType','incident','incidents','assign','getString','Subjects','Descriptions','Fields','phonecalls','/contacts(','callDirection','queue','headers','odata-entityid','lastIndexOf','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','ticketId',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','bluebird','request-promise'];(function(_0xe89ef4,_0x43ca18){var _0x1d2721=function(_0x3f932d){while(--_0x3f932d){_0xe89ef4['push'](_0xe89ef4['shift']());}};_0x1d2721(++_0x43ca18);}(_0xf513,0x181));var _0x3f51=function(_0x11d42f,_0x15fca1){_0x11d42f=_0x11d42f-0x0;var _0x42a8c7=_0xf513[_0x11d42f];return _0x42a8c7;};'use strict';var _=require(_0x3f51('0x0'));var BPromise=require(_0x3f51('0x1'));var rp=require(_0x3f51('0x2'));var util=require(_0x3f51('0x3'));var intUtil=require(_0x3f51('0x4'));var md5=require(_0x3f51('0x5'));var Redis=require('ioredis');var logger=require(_0x3f51('0x6'))(_0x3f51('0x7'));var config=require(_0x3f51('0x8'));config[_0x3f51('0x9')]=_[_0x3f51('0xa')](config['redis'],{'host':_0x3f51('0xb'),'port':0x18eb});var io=require(_0x3f51('0xc'))(new Redis(config[_0x3f51('0x9')]));function getAuthToken(_0x5c55c5,_0x5aa0d9,_0x1b4323){var _0x5a650d={'method':_0x3f51('0xd'),'uri':_0x5aa0d9,'form':{'client_id':_0x5c55c5[_0x3f51('0xe')],'resource':_0x5c55c5[_0x3f51('0xf')],'username':_0x5c55c5['username'],'password':_0x5c55c5[_0x3f51('0x10')],'grant_type':_0x3f51('0x10'),'client_secret':_0x5c55c5['clientSecret']},'json':!![]};return rp(_0x5a650d)[_0x3f51('0x11')](function(_0x3ea6d5){return _0x3ea6d5['access_token'];})['catch'](function(_0x4d18b5){logger['error']('['+[_0x1b4323[_0x3f51('0x12')]()]+_0x3f51('0x13'));return _0x4d18b5[_0x3f51('0x14')];});}function getUser(_0x577667,_0x62f6fa,_0xd78b90,_0x58551f,_0x19f66f,_0x3a3f99){return new BPromise(function(_0x390659,_0x433d16){return getAuthToken(_0x62f6fa,_0x58551f,_0x3a3f99)[_0x3f51('0x11')](function(_0x402833){var _0x464355={'method':_0x3f51('0x15'),'uri':_0x19f66f+_0x3f51('0x16'),'headers':{'Authorization':'Bearer\x20'+_0x402833,'OData-Version':_0x3f51('0x17')},'json':!![]};return rp(_0x464355);})[_0x3f51('0x11')](function(_0xef4335){var _0x26e6f0=_0xef4335['value'];var _0x4db4f4=![];var _0x4ec20e=null;if(!_[_0x3f51('0x18')](_0xd78b90)){if(intUtil[_0x3f51('0x19')](_0xd78b90[_0x3f51('0x1a')])){_0x577667[_0x3f51('0x1b')]=_0xd78b90[_0x3f51('0x1a')];for(_0x4ec20e=0x0;_0x4ec20e<_0x26e6f0[_0x3f51('0x1c')];_0x4ec20e++){if(_0x26e6f0[_0x4ec20e]['internalemailaddress']===_0xd78b90['email']&&!_0x26e6f0[_0x4ec20e]['isdisabled']){_0x4db4f4=!![];logger[_0x3f51('0x1d')]('['+[_0x3a3f99['toUpperCase']()]+_0x3f51('0x1e')+_0x26e6f0[_0x4ec20e]['systemuserid']+'!');_0x577667[_0x3f51('0x1f')]=_0x26e6f0[_0x4ec20e][_0x3f51('0x20')];}}}}if(!_0x4db4f4){logger[_0x3f51('0x1d')]('['+[_0x3a3f99[_0x3f51('0x12')]()]+_0x3f51('0x21'));_0x577667[_0x3f51('0x1b')]=_0x62f6fa['username'];for(_0x4ec20e=0x0;_0x4ec20e<_0x26e6f0[_0x3f51('0x1c')];_0x4ec20e++){if(_0x26e6f0[_0x4ec20e]['internalemailaddress']===_0x62f6fa[_0x3f51('0x22')]){_0x577667[_0x3f51('0x1f')]=_0x26e6f0[_0x4ec20e]['systemuserid'];}}}_0x390659(_0x577667);})[_0x3f51('0x23')](function(_0x3d4c62){_0x433d16(_0x3d4c62[_0x3f51('0x14')]);});});}function createEndUser(_0x5c37c6,_0x16a72b,_0x46c9fe,_0x551189,_0x4bd095,_0x367729){return new BPromise(function(_0x533c8d,_0xce3c55){return getAuthToken(_0x16a72b,_0x46c9fe,_0x367729)[_0x3f51('0x11')](function(_0x4d3f03){var _0x265ae6=_0x367729[_0x3f51('0x24')]()===_0x3f51('0x25')?_0x4bd095[_0x3f51('0x26')]:_0x4bd095[_0x3f51('0x27')];var _0x1b954f={'method':_0x3f51('0xd'),'uri':_0x551189+_0x3f51('0x28'),'body':{'telephone1':_0x265ae6,'fullname':_0x265ae6,'firstname':_0x265ae6,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x3f51('0x29')+_0x5c37c6[_0x3f51('0x1f')]+')'},'headers':{'Authorization':_0x3f51('0x2a')+_0x4d3f03,'OData-Version':_0x3f51('0x17')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x1b954f);})[_0x3f51('0x11')](function(_0x51fd9f){var _0x1c858d=_0x51fd9f['headers']['odata-entityid'];var _0x527931=_0x1c858d[_0x3f51('0x2b')](_0x1c858d['lastIndexOf']('(')+0x1,_0x1c858d['lastIndexOf'](')'));_0x5c37c6['enduserId']=_0x527931;_0x533c8d(_0x5c37c6);})['catch'](function(_0x298964){_0xce3c55(_0x298964[_0x3f51('0x14')]);});});}function getEndUser(_0x1957d7,_0x212556,_0xe997d0,_0x176252,_0x3af596,_0x2df4a2){return new BPromise(function(_0x4bc00b,_0x2add65){var _0x71428=_0x2df4a2[_0x3f51('0x24')]()===_0x3f51('0x25')?_0x3af596[_0x3f51('0x26')]:_0x3af596[_0x3f51('0x27')];return getAuthToken(_0x212556,_0xe997d0,_0x2df4a2)[_0x3f51('0x11')](function(_0x549322){var _0x2755e1={'method':_0x3f51('0x15'),'uri':_0x176252+'contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27'+_0x71428[_0x3f51('0x2c')]('+',_0x3f51('0x2d'))+'\x27','headers':{'Authorization':_0x3f51('0x2a')+_0x549322,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x2755e1);})[_0x3f51('0x11')](function(_0x37f82c){var _0x44c85=null;if(_0x37f82c){var _0x3fc6ec=_0x37f82c[_0x3f51('0x2e')];var _0x3bea61=![];for(_0x44c85=0x0;_0x44c85<_0x3fc6ec[_0x3f51('0x1c')];_0x44c85++){if(_0x3fc6ec[_0x44c85][_0x3f51('0x2f')]===_0x71428){_0x3bea61=!![];_0x1957d7[_0x3f51('0x30')]=_0x3fc6ec[_0x44c85][_0x3f51('0x31')];}}if(_0x3bea61){_0x4bc00b(_0x1957d7);}else{return createEndUser(_0x1957d7,_0x212556,_0xe997d0,_0x176252,_0x3af596,_0x2df4a2)[_0x3f51('0x11')](function(_0x106633){logger[_0x3f51('0x1d')]('['+[_0x2df4a2['toUpperCase']()]+_0x3f51('0x32'),_0x106633[_0x3f51('0x30')]);_0x4bc00b(_0x106633);});}}else{return createEndUser(_0x1957d7,_0x212556,_0xe997d0,_0x176252,_0x3af596,_0x2df4a2)['then'](function(_0x19acd6){logger['info']('['+[_0x2df4a2[_0x3f51('0x12')]()]+_0x3f51('0x33'),_0x19acd6[_0x3f51('0x30')]);_0x4bc00b(_0x19acd6);});}});});}function getCustomFields(_0x3a3e88,_0x158c61,_0x32cb18){var _0x16f459={};if(_0x3a3e88[_0x3f51('0x1c')]>0x0){_[_0x3f51('0x34')](_0x3a3e88,function(_0x509ea3){if(_['includes']([_0x3f51('0x35'),_0x3f51('0x36')],_0x509ea3[_0x3f51('0x37')])&&_0x509ea3['nameField']&&!_0x509ea3[_0x3f51('0x38')]){var _0x5d4965=_0x509ea3['idField'][_0x3f51('0x24')]();var _0x351b96=_0x5d4965[_0x3f51('0x2b')](0x0,_0x5d4965[_0x3f51('0x39')]('_'));var _0x1efeab=_0x5d4965[_0x3f51('0x2b')](_0x5d4965[_0x3f51('0x39')]('_')+0x1);if(_0x351b96===_0x32cb18){_0x16f459[_0x1efeab]=_0x509ea3['content'];}}});}return _0x16f459;}function getTicket(_0x551901,_0x5164f2,_0x294026,_0x4f0ddf,_0x5ea610,_0xb24d16,_0x41591e){return new BPromise(function(_0x4b6b7d,_0x39a76f){var _0x12dca3;return getAuthToken(_0x5164f2,_0x294026,_0x41591e)[_0x3f51('0x11')](function(_0x4f4a0f){if(_0xb24d16[_0x3f51('0x3a')]===_0x3f51('0x3b')){_0x12dca3={'method':_0x3f51('0xd'),'uri':_0x4f0ddf+_0x3f51('0x3c'),'body':Object[_0x3f51('0x3d')]({},{'title':intUtil[_0x3f51('0x3e')](_0xb24d16[_0x3f51('0x3f')],_0x5ea610,'\x20'),'description':intUtil[_0x3f51('0x3e')](_0xb24d16[_0x3f51('0x40')],_0x5ea610,'\x0a'),'customerid_contact@odata.bind':'/contacts('+_0x551901[_0x3f51('0x30')]+')','ownerid@odata.bind':_0x3f51('0x29')+_0x551901[_0x3f51('0x1f')]+')','caseorigincode':'1'},getCustomFields(_0xb24d16[_0x3f51('0x41')],_0x5ea610,_0xb24d16['ticketType'])),'headers':{'Authorization':_0x3f51('0x2a')+_0x4f4a0f,'OData-Version':_0x3f51('0x17')},'json':!![],'resolveWithFullResponse':!![]};}if(_0xb24d16[_0x3f51('0x3a')]==='phonecall'){_0x12dca3={'method':_0x3f51('0xd'),'uri':_0x4f0ddf+_0x3f51('0x42'),'body':Object['assign']({},{'subject':intUtil[_0x3f51('0x3e')](_0xb24d16[_0x3f51('0x3f')],_0x5ea610,'\x20'),'phonenumber':String(_0x5ea610[_0x3f51('0x27')]),'description':intUtil[_0x3f51('0x3e')](_0xb24d16[_0x3f51('0x40')],_0x5ea610,'\x0a'),'regardingobjectid_contact@odata.bind':_0x3f51('0x43')+_0x551901[_0x3f51('0x30')]+')','ownerid@odata.bind':_0x3f51('0x29')+_0x551901[_0x3f51('0x1f')]+')','directioncode':_0x551901[_0x3f51('0x44')]==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x3f51('0x29')+_0x551901['userId']+')','participationtypemask':_0x551901[_0x3f51('0x44')]==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0x3f51('0x43')+_0x551901[_0x3f51('0x30')]+')','participationtypemask':_0x551901['callDirection']===_0x3f51('0x45')?0x1:0x2}]},getCustomFields(_0xb24d16[_0x3f51('0x41')],_0x5ea610,_0xb24d16[_0x3f51('0x3a')])),'headers':{'Authorization':_0x3f51('0x2a')+_0x4f4a0f,'OData-Version':_0x3f51('0x17')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x12dca3);})[_0x3f51('0x11')](function(_0x158727){var _0x20caee=_0x158727[_0x3f51('0x46')][_0x3f51('0x47')];var _0x101418=_0x20caee[_0x3f51('0x2b')](_0x20caee[_0x3f51('0x48')]('(')+0x1,_0x20caee[_0x3f51('0x48')](')'));_0x551901['ticketId']=_0x101418;_0x4b6b7d(_0x551901);})[_0x3f51('0x23')](function(_0x542432){_0x39a76f(_0x542432[_0x3f51('0x14')]);});});}function emit(_0x6e0f46,_0x114070,_0xbd1591,_0x29d82f){var _0xbcc499={'uri':util[_0x3f51('0x49')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x6e0f46,_0xbd1591,_0x29d82f)};io['to'](util[_0x3f51('0x49')](_0x3f51('0x4a'),_0x114070))[_0x3f51('0x4b')](_0x3f51('0x4c'),_0xbcc499);}exports['cs']=function(_0x2af571,_0x3db007,_0x8b842,_0x599b15,_0x485bf1,_0x3d1e5c,_0x22c4b4,_0x31c0b4){var _0x4cb187={};_0x3d1e5c[_0x3f51('0xf')]=intUtil[_0x3f51('0x4d')](_0x3d1e5c[_0x3f51('0xf')]);_0x3d1e5c['serverUrl']=intUtil[_0x3f51('0x4d')](_0x3d1e5c[_0x3f51('0x4e')]);_0x4cb187[_0x3f51('0x44')]=_0x31c0b4===_0x3f51('0x45')||_0x31c0b4==='unmanaged'?_0x3f51('0x45'):_0x3f51('0x25');var _0x39d23b=util['format'](_0x3f51('0x4f'),_0x3d1e5c[_0x3f51('0xf')]);var _0x4767ab=util[_0x3f51('0x49')](_0x3f51('0x50'),_0x3d1e5c['tenantId']);var _0x4742d7=util['format'](_0x3f51('0x51'),_0x3d1e5c[_0x3f51('0x4e')],_0x3db007[_0x3f51('0x52')],md5(_0x3db007[_0x3f51('0x52')]));if(_0x485bf1&&_0x485bf1[_0x3f51('0x53')]){logger[_0x3f51('0x1d')]('[QUEUE]','Recording\x20is\x20enabled!');_0x3db007['recordingURL']=_0x4742d7;}else if(_0x22c4b4&&_0x22c4b4['recordingFormat']&&_0x22c4b4[_0x3f51('0x54')]!==_0x3f51('0x55')){logger[_0x3f51('0x1d')](_0x3f51('0x56'),'Recording\x20is\x20enabled!');_0x3db007[_0x3f51('0x57')]=_0x4742d7;}else{_0x3db007[_0x3f51('0x57')]='';}return getUser(_0x4cb187,_0x3d1e5c,_0x599b15,_0x4767ab,_0x39d23b,_0x31c0b4)[_0x3f51('0x11')](function(_0x3a7cb9){logger['info']('['+_0x31c0b4[_0x3f51('0x12')]()+_0x3f51('0x58'),_0x3a7cb9['userId']);logger[_0x3f51('0x1d')]('['+_0x31c0b4[_0x3f51('0x12')]()+']\x20The\x20User\x20email\x20is:',_0x3a7cb9[_0x3f51('0x1b')]);return getEndUser(_0x3a7cb9,_0x3d1e5c,_0x4767ab,_0x39d23b,_0x3db007,_0x31c0b4);})[_0x3f51('0x11')](function(_0x54265d){logger[_0x3f51('0x1d')]('['+_0x31c0b4[_0x3f51('0x12')]()+_0x3f51('0x59'),_0x54265d[_0x3f51('0x30')]);logger['info']('['+_0x31c0b4[_0x3f51('0x12')]()+_0x3f51('0x5a'),_0x3db007['calleridnum']);return getTicket(_0x54265d,_0x3d1e5c,_0x4767ab,_0x39d23b,_0x3db007,_0x8b842,_0x31c0b4);})['then'](function(_0x15de5d){logger[_0x3f51('0x1d')](util['format']('['+_0x31c0b4['toUpperCase']()+_0x3f51('0x5b'),_0x8b842[_0x3f51('0x3a')],_0x15de5d[_0x3f51('0x5c')]));logger[_0x3f51('0x1d')](util[_0x3f51('0x49')]('['+_0x31c0b4[_0x3f51('0x12')]()+_0x3f51('0x5d'),_0x31c0b4));if(_0x31c0b4!=='unmanaged'){logger[_0x3f51('0x1d')]('['+_0x31c0b4[_0x3f51('0x12')]()+']',_0x3f51('0x5e'));emit(_0x3d1e5c[_0x3f51('0xf')],_0x599b15['name'],_0x8b842[_0x3f51('0x3a')],_0x15de5d[_0x3f51('0x5c')]);}})[_0x3f51('0x23')](function(_0x1bbd18){logger['error']('['+_0x31c0b4[_0x3f51('0x12')]()+_0x3f51('0x5f'),util[_0x3f51('0x60')](_0x1bbd18,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 5e39af0..11fa22f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03ec=['lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','info','merge','Caller\x20-\x20%s','calleridname','calleridnum','Subjects','getString','<br>','name','Fields','custom_fields','mapValues','keyBy','value','format','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','find','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Basic\x20%s','toString','[HTTP]','stringify','GET','forEach','includes','string','picklist','type','customField','toLowerCase','content','idField','push','variable','variableName','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','error','outbound','recordingFormat','none','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','[OUTBOUND]','trigger:browser:url','catch','unmanaged','lastevent','toUpperCase'];(function(_0x2828fa,_0x47c488){var _0x31683c=function(_0x12fc89){while(--_0x12fc89){_0x2828fa['push'](_0x2828fa['shift']());}};_0x31683c(++_0x47c488);}(_0x03ec,0x10e));var _0xc03e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x03ec[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xc03e('0x0'));var rp=require(_0xc03e('0x1'));var md5=require(_0xc03e('0x2'));var util=require(_0xc03e('0x3'));var Redis=require('ioredis');var intUtil=require(_0xc03e('0x4'));var config=require(_0xc03e('0x5'));var logger=require(_0xc03e('0x6'))(_0xc03e('0x7'));config[_0xc03e('0x8')]=_[_0xc03e('0x9')](config[_0xc03e('0x8')],{'host':_0xc03e('0xa'),'port':0x18eb});var io=require(_0xc03e('0xb'))(new Redis(config[_0xc03e('0x8')]));var headers={'Content-Type':'application/json','Accept':'application/json'};function emit(_0x495c40,_0x257646,_0x1446fb){io['to'](_0x495c40)['emit'](_0x257646,_0x1446fb);}function getTicket(_0xdd7321,_0x27e730,_0x43f457,_0x503899,_0x3e3053){logger[_0xc03e('0xc')]('Creating\x20new\x20ticket...');var _0xda9987=_[_0xc03e('0xd')]({'responder_id':_0x27e730['id'],'requester_id':_0x43f457['id'],'name':util['format'](_0xc03e('0xe'),_0x3e3053[_0xc03e('0xf')]),'phone':_0x3e3053[_0xc03e('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x503899[_0xc03e('0x11')],_0x3e3053,'\x20'),'description':intUtil[_0xc03e('0x12')](_0x503899['Descriptions'],_0x3e3053,_0xc03e('0x13')),'tags':getTags(_0x503899['Tags'],_0xc03e('0x14'))},getCustomFields(_0x503899[_0xc03e('0x15')],_0x3e3053));_0xda9987[_0xc03e('0x16')]=_[_0xc03e('0x17')](_[_0xc03e('0x18')](_0xda9987[_0xc03e('0x16')],'id'),_0xc03e('0x19'));return request({'uri':util[_0xc03e('0x1a')](_0xc03e('0x1b'),_0xdd7321[_0xc03e('0x1c')]),'method':_0xc03e('0x1d'),'body':_0xda9987})[_0xc03e('0x1e')](function(_0x105cac){logger[_0xc03e('0xc')](_0xc03e('0x1f'));return _0x105cac;});}function getUser(_0x32924d,_0x305606){if(intUtil[_0xc03e('0x20')](_0x305606)){return request({'uri':util[_0xc03e('0x1a')](_0xc03e('0x21'),_0x32924d[_0xc03e('0x1c')]),'qs':{'email':_0x305606}})[_0xc03e('0x1e')](function(_0x5cb9e8){if(_0x5cb9e8[_0xc03e('0x22')]){logger[_0xc03e('0xc')]('Agent\x20found!');return _[_0xc03e('0x23')](_0x5cb9e8,function(_0x2c85ca){return _0x2c85ca['contact'][_0xc03e('0x24')]===_0x305606;});}else{logger[_0xc03e('0xc')](_0xc03e('0x25'));return request({'uri':util[_0xc03e('0x1a')](_0xc03e('0x26'),_0x32924d[_0xc03e('0x1c')])})[_0xc03e('0x1e')](function(_0x18bdbe){logger[_0xc03e('0xc')](_0xc03e('0x27'));return _0x18bdbe;});}});}else{logger[_0xc03e('0xc')](_0xc03e('0x28'));return request({'uri':util[_0xc03e('0x1a')]('%s/api/v2/agents/me',_0x32924d[_0xc03e('0x1c')])})[_0xc03e('0x1e')](function(_0x3bbb7d){logger[_0xc03e('0xc')]('Admin\x20account\x20selected.');return _0x3bbb7d;});}}function getEndUser(_0x3be3dd,_0x31616e,_0x2cd1a7){logger[_0xc03e('0xc')]('Searching\x20enduser\x20with\x20phone',_0x2cd1a7);return request({'uri':util['format'](_0xc03e('0x29'),_0x3be3dd[_0xc03e('0x1c')]),'qs':{'phone':_0x2cd1a7}})['then'](function(_0x14e4ba){if(_0x14e4ba[_0xc03e('0x22')]){logger[_0xc03e('0xc')](_0xc03e('0x2a'));return _[_0xc03e('0x23')](_0x14e4ba,{'phone':_0x2cd1a7});}else{logger[_0xc03e('0xc')](_0xc03e('0x2b'));return request({'uri':util['format'](_0xc03e('0x29'),_0x3be3dd[_0xc03e('0x1c')]),'method':_0xc03e('0x1d'),'body':{'name':_0x31616e,'phone':_0x2cd1a7}})[_0xc03e('0x1e')](function(_0x38a95a){logger[_0xc03e('0xc')]('Enduser\x20created.');return _0x38a95a;});}});}function getAuth(_0x58540b){return util[_0xc03e('0x1a')](_0xc03e('0x2c'),new Buffer(_0x58540b['apiKey']+':X')[_0xc03e('0x2d')]('base64'));}function request(_0x2dd319){logger['debug'](_0xc03e('0x2e'),JSON[_0xc03e('0x2f')](_0x2dd319));return rp(_['defaults'](_0x2dd319,{'method':_0xc03e('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x1b995b,_0x4c5054){var _0x32df0e=[];if(_0x1b995b&&_0x1b995b['length']>0x0){_0x32df0e=_['map'](_0x1b995b,_0x4c5054);}return _0x32df0e;}function getCustomFields(_0x25aba5,_0x49a567){var _0x2299ad=[];var _0x4fd7e8={'custom_fields':[]};if(_0x25aba5[_0xc03e('0x22')]>0x0){_[_0xc03e('0x31')](_0x25aba5,function(_0x42e678){if(_[_0xc03e('0x32')]([_0xc03e('0x33'),_0xc03e('0x34')],_0x42e678[_0xc03e('0x35')])&&_0x42e678['nameField']&&!_0x42e678[_0xc03e('0x36')]){_0x4fd7e8[_0x42e678['nameField'][_0xc03e('0x37')]()]=_0x42e678[_0xc03e('0x38')]['toString']();}else if(_[_0xc03e('0x32')]([_0xc03e('0x33'),_0xc03e('0x34')],_0x42e678['type'])&&_0x42e678[_0xc03e('0x39')]&&_0x42e678['customField']){_0x4fd7e8[_0xc03e('0x16')][_0xc03e('0x3a')]({'id':_0x42e678[_0xc03e('0x39')],'value':_0x42e678[_0xc03e('0x38')][_0xc03e('0x2d')]()});}else if(_0x42e678[_0xc03e('0x35')]===_0xc03e('0x3b')&&_0x42e678[_0xc03e('0x3c')]&&_0x42e678[_0xc03e('0x39')]&&_0x42e678[_0xc03e('0x36')]){_0x49a567[_0x42e678[_0xc03e('0x3c')]]&&_0x4fd7e8[_0xc03e('0x16')][_0xc03e('0x3a')]({'id':_0x42e678[_0xc03e('0x39')],'value':_0x49a567[_0x42e678['variableName']][_0xc03e('0x2d')]()});}else if(_0x42e678[_0xc03e('0x35')]==='customVariable'&&_0x42e678['Variable']&&_0x42e678[_0xc03e('0x3d')]['name']&&_0x42e678[_0xc03e('0x39')]&&_0x42e678[_0xc03e('0x36')]){_0x49a567[_0x42e678[_0xc03e('0x3d')][_0xc03e('0x14')][_0xc03e('0x37')]()]&&_0x4fd7e8['custom_fields'][_0xc03e('0x3a')]({'id':_0x42e678[_0xc03e('0x39')],'value':_0x49a567[_0x42e678[_0xc03e('0x3d')][_0xc03e('0x14')][_0xc03e('0x37')]()][_0xc03e('0x2d')]()});}});}return _0x4fd7e8;}exports[_0xc03e('0x3e')]=function(_0x93a9f9,_0x41d31b,_0xc4e9db,_0x3d6f28,_0x1046c5,_0x4f7218){var _0x1dddb0,_0x257e9d;_0x4f7218[_0xc03e('0x1c')]=intUtil[_0xc03e('0x3f')](_0x4f7218[_0xc03e('0x1c')]);_0x4f7218[_0xc03e('0x40')]=intUtil[_0xc03e('0x3f')](_0x4f7218[_0xc03e('0x40')]);if(_0x1046c5&&_0x1046c5[_0xc03e('0x41')]){logger[_0xc03e('0xc')](_0xc03e('0x42'),_0xc03e('0x43'));_0x41d31b[_0xc03e('0x44')]=util['format'](_0xc03e('0x45'),_0x4f7218[_0xc03e('0x40')],_0x41d31b[_0xc03e('0x46')],md5(_0x41d31b[_0xc03e('0x46')]));}else{_0x41d31b['recordingURL']='';}headers[_0xc03e('0x47')]=getAuth(_0x4f7218);return getUser(_0x4f7218,_0x3d6f28[_0xc03e('0x24')])[_0xc03e('0x1e')](function(_0x4b597b){_0x1dddb0=_0x4b597b;logger[_0xc03e('0xc')](_0xc03e('0x48'),_0x1dddb0['id']);return getEndUser(_0x4f7218,_0x41d31b[_0xc03e('0xf')],_0x41d31b[_0xc03e('0x10')]);})[_0xc03e('0x1e')](function(_0x48b04f){_0x257e9d=_0x48b04f;logger[_0xc03e('0xc')](_0xc03e('0x49'),_0x257e9d['id']);return getTicket(_0x4f7218,_0x1dddb0,_0x257e9d,_0xc4e9db,_0x41d31b);})[_0xc03e('0x1e')](function(_0x4f273f){if(_0x4f273f&&_0x4f273f['id']){logger['info']('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x4f273f['id']);logger[_0xc03e('0xc')](_0xc03e('0x42'),_0xc03e('0x4a'));emit(util['format'](_0xc03e('0x4b'),_0x3d6f28[_0xc03e('0x14')]),'trigger:browser:url',{'uri':util[_0xc03e('0x1a')](_0xc03e('0x4c'),_0x4f7218[_0xc03e('0x1c')],_0x4f273f['id'])});}})['catch'](function(_0x167ac4){logger[_0xc03e('0x4d')](_0xc03e('0x42'),JSON[_0xc03e('0x2f')](_0x167ac4));});};exports[_0xc03e('0x4e')]=function(_0x5e1279,_0x2a5bea,_0x80d739,_0xa8f69a,_0x157da6,_0x4a0771,_0x81c8d){var _0x446341,_0x1f980f;_0x4a0771[_0xc03e('0x1c')]=intUtil[_0xc03e('0x3f')](_0x4a0771[_0xc03e('0x1c')]);_0x4a0771[_0xc03e('0x40')]=intUtil[_0xc03e('0x3f')](_0x4a0771[_0xc03e('0x40')]);if(_0x81c8d&&_0x81c8d[_0xc03e('0x4f')]&&_0x81c8d[_0xc03e('0x4f')]!==_0xc03e('0x50')){logger[_0xc03e('0xc')]('[OUTBOUND]',_0xc03e('0x43'));_0x2a5bea[_0xc03e('0x44')]=util[_0xc03e('0x1a')](_0xc03e('0x45'),_0x4a0771['serverUrl'],_0x2a5bea[_0xc03e('0x46')],md5(_0x2a5bea[_0xc03e('0x46')]));}headers[_0xc03e('0x47')]=getAuth(_0x4a0771);return getUser(_0x4a0771,_0xa8f69a['email'])[_0xc03e('0x1e')](function(_0x189d9b){_0x446341=_0x189d9b;logger[_0xc03e('0xc')](_0xc03e('0x48'),_0x446341['id']);return getEndUser(_0x4a0771,_0x2a5bea[_0xc03e('0x51')],_0x2a5bea[_0xc03e('0x52')]);})[_0xc03e('0x1e')](function(_0x2ec88c){_0x1f980f=_0x2ec88c;logger[_0xc03e('0xc')](_0xc03e('0x49'),_0x1f980f['id']);return getTicket(_0x4a0771,_0x446341,_0x1f980f,_0x80d739,_0x2a5bea);})[_0xc03e('0x1e')](function(_0x2f167c){if(_0x2f167c&&_0x2f167c['id']){logger[_0xc03e('0xc')](_0xc03e('0x1f'));logger[_0xc03e('0xc')](_0xc03e('0x53'),_0x2f167c['id']);logger[_0xc03e('0xc')](_0xc03e('0x54'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xc03e('0x1a')](_0xc03e('0x4b'),_0xa8f69a[_0xc03e('0x14')]),_0xc03e('0x55'),{'uri':util[_0xc03e('0x1a')]('%s/helpdesk/tickets/%d',_0x4a0771[_0xc03e('0x1c')],_0x2f167c['id'])});}})[_0xc03e('0x56')](function(_0x42f9ad){logger[_0xc03e('0x4d')](_0xc03e('0x54'),JSON[_0xc03e('0x2f')](_0x42f9ad));});};exports[_0xc03e('0x57')]=function(_0x55197b,_0x2cca8f,_0x28012e,_0x2c4c83,_0x386f91,_0x39ea18){var _0x253178,_0x5ecbf2;_0x39ea18['remoteUri']=intUtil[_0xc03e('0x3f')](_0x39ea18[_0xc03e('0x1c')]);_0x39ea18['serverUrl']=intUtil[_0xc03e('0x3f')](_0x39ea18[_0xc03e('0x40')]);if(_0x386f91&&_0x386f91[_0xc03e('0x41')]){logger[_0xc03e('0xc')]('['+_0x2cca8f[_0xc03e('0x58')][_0xc03e('0x59')]()+']',_0xc03e('0x43'));_0x2cca8f[_0xc03e('0x44')]=util[_0xc03e('0x1a')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x39ea18['serverUrl'],_0x2cca8f[_0xc03e('0x46')],md5(_0x2cca8f[_0xc03e('0x46')]));}else{_0x2cca8f[_0xc03e('0x44')]='';}headers[_0xc03e('0x47')]=getAuth(_0x39ea18);return getUser(_0x39ea18,'')[_0xc03e('0x1e')](function(_0x2fa7a6){_0x253178=_0x2fa7a6;logger[_0xc03e('0xc')]('The\x20User\x20ID\x20is:',_0x253178['id']);return getEndUser(_0x39ea18,_0x2cca8f[_0xc03e('0xf')],_0x2cca8f[_0xc03e('0x10')]);})[_0xc03e('0x1e')](function(_0x21dfe2){_0x5ecbf2=_0x21dfe2;logger[_0xc03e('0xc')](_0xc03e('0x49'),_0x5ecbf2['id']);return getTicket(_0x39ea18,_0x253178,_0x5ecbf2,_0x28012e,_0x2cca8f);})['then'](function(_0x39a616){if(_0x39a616){logger['info']('Ticket\x20created!');logger['info'](_0xc03e('0x53'),_0x39a616['id']);}})['catch'](function(_0x289ed4){logger[_0xc03e('0x4d')]('['+_0x2cca8f[_0xc03e('0x58')][_0xc03e('0x59')]()+']',JSON['stringify'](_0x289ed4));});};
\ No newline at end of file
+var _0x731e=['toString','base64','debug','[HTTP]','defaults','GET','forEach','string','picklist','type','nameField','toLowerCase','includes','customField','idField','content','variable','variableName','push','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','error','stringify','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','trigger:browser:url','catch','unmanaged','toUpperCase','lastevent','lodash','request-promise','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','localhost','socket.io-emitter','info','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','length','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/contacts','Enduser\x20found!','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Basic\x20%s'];(function(_0x2fd2b2,_0x16d114){var _0x9bd652=function(_0x5124a0){while(--_0x5124a0){_0x2fd2b2['push'](_0x2fd2b2['shift']());}};_0x9bd652(++_0x16d114);}(_0x731e,0x19c));var _0xe731=function(_0x5ea533,_0x2dfbba){_0x5ea533=_0x5ea533-0x0;var _0x3d3d3b=_0x731e[_0x5ea533];return _0x3d3d3b;};'use strict';var _=require(_0xe731('0x0'));var rp=require(_0xe731('0x1'));var md5=require(_0xe731('0x2'));var util=require('util');var Redis=require(_0xe731('0x3'));var intUtil=require(_0xe731('0x4'));var config=require(_0xe731('0x5'));var logger=require(_0xe731('0x6'))(_0xe731('0x7'));config[_0xe731('0x8')]=_['defaults'](config[_0xe731('0x8')],{'host':_0xe731('0x9'),'port':0x18eb});var io=require(_0xe731('0xa'))(new Redis(config[_0xe731('0x8')]));var headers={'Content-Type':'application/json','Accept':'application/json'};function emit(_0x31ce61,_0x59662d,_0x20d0e5){io['to'](_0x31ce61)['emit'](_0x59662d,_0x20d0e5);}function getTicket(_0x2bc739,_0x1dea53,_0x4853d7,_0x1c8c2c,_0x2ec09c){logger[_0xe731('0xb')](_0xe731('0xc'));var _0x46e265=_['merge']({'responder_id':_0x1dea53['id'],'requester_id':_0x4853d7['id'],'name':util[_0xe731('0xd')](_0xe731('0xe'),_0x2ec09c[_0xe731('0xf')]),'phone':_0x2ec09c[_0xe731('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x1c8c2c['Subjects'],_0x2ec09c,'\x20'),'description':intUtil[_0xe731('0x11')](_0x1c8c2c['Descriptions'],_0x2ec09c,_0xe731('0x12')),'tags':getTags(_0x1c8c2c[_0xe731('0x13')],_0xe731('0x14'))},getCustomFields(_0x1c8c2c[_0xe731('0x15')],_0x2ec09c));_0x46e265[_0xe731('0x16')]=_[_0xe731('0x17')](_[_0xe731('0x18')](_0x46e265[_0xe731('0x16')],'id'),_0xe731('0x19'));return request({'uri':util[_0xe731('0xd')](_0xe731('0x1a'),_0x2bc739[_0xe731('0x1b')]),'method':_0xe731('0x1c'),'body':_0x46e265})[_0xe731('0x1d')](function(_0x595a02){logger[_0xe731('0xb')](_0xe731('0x1e'));return _0x595a02;});}function getUser(_0xe0380e,_0x9df58b){if(intUtil[_0xe731('0x1f')](_0x9df58b)){return request({'uri':util[_0xe731('0xd')]('%s/api/v2/agents',_0xe0380e[_0xe731('0x1b')]),'qs':{'email':_0x9df58b}})[_0xe731('0x1d')](function(_0x18b9c2){if(_0x18b9c2[_0xe731('0x20')]){logger[_0xe731('0xb')]('Agent\x20found!');return _['find'](_0x18b9c2,function(_0x447efe){return _0x447efe[_0xe731('0x21')][_0xe731('0x22')]===_0x9df58b;});}else{logger[_0xe731('0xb')](_0xe731('0x23'));return request({'uri':util['format']('%s/api/v2/agents/me',_0xe0380e[_0xe731('0x1b')])})[_0xe731('0x1d')](function(_0x55e43f){logger[_0xe731('0xb')](_0xe731('0x24'));return _0x55e43f;});}});}else{logger[_0xe731('0xb')](_0xe731('0x25'));return request({'uri':util[_0xe731('0xd')]('%s/api/v2/agents/me',_0xe0380e[_0xe731('0x1b')])})[_0xe731('0x1d')](function(_0x5ea2d8){logger[_0xe731('0xb')](_0xe731('0x24'));return _0x5ea2d8;});}}function getEndUser(_0x4a394a,_0x448078,_0x36beb1){logger['info']('Searching\x20enduser\x20with\x20phone',_0x36beb1);return request({'uri':util[_0xe731('0xd')](_0xe731('0x26'),_0x4a394a[_0xe731('0x1b')]),'qs':{'phone':_0x36beb1}})[_0xe731('0x1d')](function(_0x3adb62){if(_0x3adb62[_0xe731('0x20')]){logger['info'](_0xe731('0x27'));return _[_0xe731('0x28')](_0x3adb62,{'phone':_0x36beb1});}else{logger[_0xe731('0xb')](_0xe731('0x29'));return request({'uri':util[_0xe731('0xd')](_0xe731('0x26'),_0x4a394a[_0xe731('0x1b')]),'method':_0xe731('0x1c'),'body':{'name':_0x448078,'phone':_0x36beb1}})[_0xe731('0x1d')](function(_0x32f91e){logger[_0xe731('0xb')]('Enduser\x20created.');return _0x32f91e;});}});}function getAuth(_0x3faeb3){return util[_0xe731('0xd')](_0xe731('0x2a'),new Buffer(_0x3faeb3['apiKey']+':X')[_0xe731('0x2b')](_0xe731('0x2c')));}function request(_0x16f0fd){logger[_0xe731('0x2d')](_0xe731('0x2e'),JSON['stringify'](_0x16f0fd));return rp(_[_0xe731('0x2f')](_0x16f0fd,{'method':_0xe731('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x559b83,_0x4977c5){var _0x4b2aec=[];if(_0x559b83&&_0x559b83[_0xe731('0x20')]>0x0){_0x4b2aec=_['map'](_0x559b83,_0x4977c5);}return _0x4b2aec;}function getCustomFields(_0x176fb5,_0x12b3bf){var _0x366707=[];var _0x38bf02={'custom_fields':[]};if(_0x176fb5['length']>0x0){_[_0xe731('0x31')](_0x176fb5,function(_0x1bc55f){if(_['includes']([_0xe731('0x32'),_0xe731('0x33')],_0x1bc55f[_0xe731('0x34')])&&_0x1bc55f['nameField']&&!_0x1bc55f['customField']){_0x38bf02[_0x1bc55f[_0xe731('0x35')][_0xe731('0x36')]()]=_0x1bc55f['content']['toString']();}else if(_[_0xe731('0x37')](['string','picklist'],_0x1bc55f[_0xe731('0x34')])&&_0x1bc55f['idField']&&_0x1bc55f[_0xe731('0x38')]){_0x38bf02[_0xe731('0x16')]['push']({'id':_0x1bc55f[_0xe731('0x39')],'value':_0x1bc55f[_0xe731('0x3a')][_0xe731('0x2b')]()});}else if(_0x1bc55f[_0xe731('0x34')]===_0xe731('0x3b')&&_0x1bc55f[_0xe731('0x3c')]&&_0x1bc55f[_0xe731('0x39')]&&_0x1bc55f[_0xe731('0x38')]){_0x12b3bf[_0x1bc55f[_0xe731('0x3c')]]&&_0x38bf02[_0xe731('0x16')][_0xe731('0x3d')]({'id':_0x1bc55f[_0xe731('0x39')],'value':_0x12b3bf[_0x1bc55f[_0xe731('0x3c')]][_0xe731('0x2b')]()});}else if(_0x1bc55f[_0xe731('0x34')]===_0xe731('0x3e')&&_0x1bc55f[_0xe731('0x3f')]&&_0x1bc55f[_0xe731('0x3f')][_0xe731('0x14')]&&_0x1bc55f['idField']&&_0x1bc55f['customField']){_0x12b3bf[_0x1bc55f['Variable'][_0xe731('0x14')][_0xe731('0x36')]()]&&_0x38bf02[_0xe731('0x16')][_0xe731('0x3d')]({'id':_0x1bc55f[_0xe731('0x39')],'value':_0x12b3bf[_0x1bc55f[_0xe731('0x3f')][_0xe731('0x14')]['toLowerCase']()][_0xe731('0x2b')]()});}});}return _0x38bf02;}exports['queue']=function(_0xa487aa,_0x3acfc2,_0x522bbc,_0x259bce,_0x67323b,_0x528da9){var _0x1122de,_0x2f6d03;_0x528da9[_0xe731('0x1b')]=intUtil[_0xe731('0x40')](_0x528da9[_0xe731('0x1b')]);_0x528da9[_0xe731('0x41')]=intUtil['stripTrailingSlash'](_0x528da9['serverUrl']);if(_0x67323b&&_0x67323b[_0xe731('0x42')]){logger[_0xe731('0xb')](_0xe731('0x43'),_0xe731('0x44'));_0x3acfc2[_0xe731('0x45')]=util[_0xe731('0xd')](_0xe731('0x46'),_0x528da9[_0xe731('0x41')],_0x3acfc2[_0xe731('0x47')],md5(_0x3acfc2[_0xe731('0x47')]));}else{_0x3acfc2[_0xe731('0x45')]='';}headers['Authorization']=getAuth(_0x528da9);return getUser(_0x528da9,_0x259bce[_0xe731('0x22')])[_0xe731('0x1d')](function(_0x1ac00e){_0x1122de=_0x1ac00e;logger[_0xe731('0xb')](_0xe731('0x48'),_0x1122de['id']);return getEndUser(_0x528da9,_0x3acfc2['calleridname'],_0x3acfc2[_0xe731('0x10')]);})[_0xe731('0x1d')](function(_0x439e87){_0x2f6d03=_0x439e87;logger[_0xe731('0xb')](_0xe731('0x49'),_0x2f6d03['id']);return getTicket(_0x528da9,_0x1122de,_0x2f6d03,_0x522bbc,_0x3acfc2);})[_0xe731('0x1d')](function(_0x40986c){if(_0x40986c&&_0x40986c['id']){logger[_0xe731('0xb')]('Ticket\x20created!');logger[_0xe731('0xb')](_0xe731('0x4a'),_0x40986c['id']);logger[_0xe731('0xb')](_0xe731('0x43'),_0xe731('0x4b'));emit(util[_0xe731('0xd')](_0xe731('0x4c'),_0x259bce[_0xe731('0x14')]),'trigger:browser:url',{'uri':util['format'](_0xe731('0x4d'),_0x528da9[_0xe731('0x1b')],_0x40986c['id'])});}})['catch'](function(_0x1e8d56){logger[_0xe731('0x4e')](_0xe731('0x43'),JSON[_0xe731('0x4f')](_0x1e8d56));});};exports['outbound']=function(_0x1ddded,_0x3a3bf4,_0x21c384,_0x32897d,_0x39f063,_0x13f6ce,_0x23d623){var _0x508853,_0x332d10;_0x13f6ce[_0xe731('0x1b')]=intUtil[_0xe731('0x40')](_0x13f6ce['remoteUri']);_0x13f6ce[_0xe731('0x41')]=intUtil[_0xe731('0x40')](_0x13f6ce[_0xe731('0x41')]);if(_0x23d623&&_0x23d623['recordingFormat']&&_0x23d623[_0xe731('0x50')]!==_0xe731('0x51')){logger[_0xe731('0xb')](_0xe731('0x52'),_0xe731('0x44'));_0x3a3bf4[_0xe731('0x45')]=util[_0xe731('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x13f6ce['serverUrl'],_0x3a3bf4[_0xe731('0x47')],md5(_0x3a3bf4[_0xe731('0x47')]));}headers[_0xe731('0x53')]=getAuth(_0x13f6ce);return getUser(_0x13f6ce,_0x32897d[_0xe731('0x22')])[_0xe731('0x1d')](function(_0x1cc580){_0x508853=_0x1cc580;logger[_0xe731('0xb')]('The\x20User\x20ID\x20is:',_0x508853['id']);return getEndUser(_0x13f6ce,_0x3a3bf4[_0xe731('0x54')],_0x3a3bf4[_0xe731('0x55')]);})[_0xe731('0x1d')](function(_0xab8c96){_0x332d10=_0xab8c96;logger[_0xe731('0xb')]('The\x20Enduser\x20ID\x20is:',_0x332d10['id']);return getTicket(_0x13f6ce,_0x508853,_0x332d10,_0x21c384,_0x3a3bf4);})[_0xe731('0x1d')](function(_0x4e617d){if(_0x4e617d&&_0x4e617d['id']){logger['info'](_0xe731('0x1e'));logger[_0xe731('0xb')]('The\x20Ticket\x20ID\x20is:',_0x4e617d['id']);logger[_0xe731('0xb')](_0xe731('0x52'),_0xe731('0x4b'));emit(util[_0xe731('0xd')](_0xe731('0x4c'),_0x32897d['name']),_0xe731('0x56'),{'uri':util['format']('%s/helpdesk/tickets/%d',_0x13f6ce['remoteUri'],_0x4e617d['id'])});}})[_0xe731('0x57')](function(_0x55fe83){logger['error'](_0xe731('0x52'),JSON[_0xe731('0x4f')](_0x55fe83));});};exports[_0xe731('0x58')]=function(_0x5f3f52,_0x48324f,_0x469cfb,_0x4ef397,_0x10163c,_0x2f8ac6){var _0x1fc1e0,_0x28681f;_0x2f8ac6['remoteUri']=intUtil[_0xe731('0x40')](_0x2f8ac6[_0xe731('0x1b')]);_0x2f8ac6[_0xe731('0x41')]=intUtil['stripTrailingSlash'](_0x2f8ac6['serverUrl']);if(_0x10163c&&_0x10163c['monitor_format']){logger[_0xe731('0xb')]('['+_0x48324f['lastevent'][_0xe731('0x59')]()+']',_0xe731('0x44'));_0x48324f[_0xe731('0x45')]=util[_0xe731('0xd')](_0xe731('0x46'),_0x2f8ac6[_0xe731('0x41')],_0x48324f[_0xe731('0x47')],md5(_0x48324f['uniqueid']));}else{_0x48324f[_0xe731('0x45')]='';}headers[_0xe731('0x53')]=getAuth(_0x2f8ac6);return getUser(_0x2f8ac6,'')['then'](function(_0xf4f34e){_0x1fc1e0=_0xf4f34e;logger[_0xe731('0xb')](_0xe731('0x48'),_0x1fc1e0['id']);return getEndUser(_0x2f8ac6,_0x48324f[_0xe731('0xf')],_0x48324f[_0xe731('0x10')]);})[_0xe731('0x1d')](function(_0x1d40ae){_0x28681f=_0x1d40ae;logger['info'](_0xe731('0x49'),_0x28681f['id']);return getTicket(_0x2f8ac6,_0x1fc1e0,_0x28681f,_0x469cfb,_0x48324f);})[_0xe731('0x1d')](function(_0x781a06){if(_0x781a06){logger['info']('Ticket\x20created!');logger['info'](_0xe731('0x4a'),_0x781a06['id']);}})[_0xe731('0x57')](function(_0xc810eb){logger['error']('['+_0x48324f[_0xe731('0x5a')]['toUpperCase']()+']',JSON[_0xe731('0x4f')](_0xc810eb));});};
\ No newline at end of file
index afca6f6..1d780db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5010=['apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','inspect','lodash','util','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','localhost','socket.io-emitter','GET','/api/selector/owners','info','Getting\x20admin\x20information','then','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','Getting\x20user\x20list','users','Getting\x20user\x20with\x20email','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','Contact\x20found\x20mobile_number:','endUserId','Contact\x20found\x20work_number:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','headers','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','/api/tasks','getString','Descriptions','Contact','add','Task\x20created:','ticketId','/contacts/','user:%s','trigger:browser:url','Token\x20token='];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x5010,0xbc));var _0x0501=function(_0xcbf03b,_0x2ddbfd){_0xcbf03b=_0xcbf03b-0x0;var _0x2384a6=_0x5010[_0xcbf03b];return _0x2384a6;};'use strict';var _=require(_0x0501('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0x0501('0x1'));var moment=require('moment');var Promise=require(_0x0501('0x2'));var Redis=require(_0x0501('0x3'));var intUtil=require(_0x0501('0x4'));var config=require(_0x0501('0x5'));var logger=require(_0x0501('0x6'))(_0x0501('0x7'));config[_0x0501('0x8')]=_['defaults'](config[_0x0501('0x8')],{'host':_0x0501('0x9'),'port':0x18eb});var io=require(_0x0501('0xa'))(new Redis(config[_0x0501('0x8')]));function getAdminId(_0x43b2fb,_0x16e421,_0x31b045,_0x445bbd){return new Promise(function(_0x4ec65c,_0x459865){var _0x50d76d=![];var _0xf4517c={'method':_0x0501('0xb'),'uri':_0x445bbd+_0x0501('0xc'),'json':!![]};_0xf4517c['headers']=_0x31b045;logger[_0x0501('0xd')](_0x0501('0xe'));return rp(_0xf4517c)[_0x0501('0xf')](function(_0x3ad7f2){if(_0x3ad7f2){var _0x8cf148=_0x3ad7f2['users'];var _0x270e94=null;for(_0x270e94=0x0;_0x270e94<_0x8cf148[_0x0501('0x10')];_0x270e94++){if(_0x8cf148[_0x270e94][_0x0501('0x11')]===_0x43b2fb[_0x0501('0x12')]){_0x43b2fb[_0x0501('0x13')]=_0x8cf148[_0x270e94]['id'];_0x50d76d=!![];}}if(_0x50d76d){logger['info'](_0x0501('0x14'),_0x43b2fb['adminId']);_0x4ec65c(_0x43b2fb);}else{_0x459865({'statusCode':0x194,'message':_0x0501('0x15')});}}else{_0x459865({'statusCode':0x194,'message':_0x0501('0x15')});}})[_0x0501('0x16')](function(_0x898ae9){logger[_0x0501('0x17')]('['+[_0x16e421[_0x0501('0x18')]()]+']',_0x898ae9[_0x0501('0x19')]);_0x459865(_0x898ae9);});});}function getUser(_0x2f0a41,_0x41211b,_0x48063f){return function(_0xd8e127){return new Promise(function(_0x3d48f6,_0x484a06){var _0xbaf145={'method':'GET','uri':_0x48063f+_0x0501('0xc'),'json':!![]};_0xbaf145['headers']=_0x41211b;logger['info'](_0x0501('0x1a'));return rp(_0xbaf145)[_0x0501('0xf')](function(_0x1b0068){if(_0x1b0068){var _0x3bbe0b=_0x1b0068[_0x0501('0x1b')];var _0x2bb158=![];var _0x366826=null;if(_0xd8e127['agentEmail']!==null){logger['info'](_0x0501('0x1c'),_0xd8e127[_0x0501('0x1d')]);_0xd8e127[_0x0501('0x1e')]=_0xd8e127[_0x0501('0x1d')];for(_0x366826=0x0;_0x366826<_0x3bbe0b[_0x0501('0x10')];_0x366826++){if(_0x3bbe0b[_0x366826]['email']===_0xd8e127[_0x0501('0x1d')]){_0x2bb158=!![];_0xd8e127[_0x0501('0x1f')]=_0x3bbe0b[_0x366826]['id'];logger['info'](_0x0501('0x20'),_0xd8e127[_0x0501('0x1f')]);}}}if(!_0x2bb158){logger[_0x0501('0xd')](_0x0501('0x21'));_0xd8e127[_0x0501('0x1e')]=_0xd8e127[_0x0501('0x12')];_0xd8e127['userId']=_0xd8e127[_0x0501('0x13')];_0x2bb158=!![];}if(_0x2bb158){_0x3d48f6(_0xd8e127);}else{_0x484a06({'statusCode':0x194,'message':_0x0501('0x15')});}}else{_0x484a06({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x0501('0x16')](function(_0x58c3a4){logger[_0x0501('0x17')]('['+[_0x2f0a41[_0x0501('0x18')]()]+']',_0x58c3a4['message']);_0x484a06(_0x58c3a4);});});};}function searchContact(_0x411ab2,_0x2602fa,_0x597580,_0xfcde43){return new Promise(function(_0x5cad8c,_0x36204e){var _0x497caf={'method':'GET','headers':_0x2602fa,'uri':_0x411ab2+_0x0501('0x22')+_0xfcde43+_0x0501('0x23')+_0x597580+_0x0501('0x24'),'json':!![]};rp(_0x497caf)[_0x0501('0xf')](function(_0x46bed5){var _0x58338a=_[_0x0501('0x25')](_0x46bed5['contacts'][_0x0501('0x26')],[_0x597580,_0xfcde43]);_0x5cad8c(_0x58338a);})[_0x0501('0x16')](function(_0xa7ae39){_0x36204e(_0xa7ae39);});});}function getEndUser(_0x1b325f,_0x46bbab,_0x12ea24){return function(_0x3262f7){return new Promise(function(_0x34da67,_0x1da37c){logger[_0x0501('0xd')](util[_0x0501('0x27')](_0x0501('0x28'),_0x3262f7[_0x0501('0x29')]));searchContact(_0x12ea24,_0x46bbab,'mobile_number',_0x3262f7[_0x0501('0x29')])[_0x0501('0xf')](function(_0x223108){if(_0x223108){_0x3262f7['endUserId']=_0x223108['id'];logger[_0x0501('0xd')](_0x0501('0x2a'),_0x3262f7[_0x0501('0x2b')]);return _0x34da67(_0x3262f7);}searchContact(_0x12ea24,_0x46bbab,'work_number',_0x3262f7[_0x0501('0x29')])['then'](function(_0x52f0e4){if(_0x52f0e4){_0x3262f7[_0x0501('0x2b')]=_0x52f0e4['id'];logger[_0x0501('0xd')](_0x0501('0x2c'),_0x3262f7[_0x0501('0x2b')]);return _0x34da67(_0x3262f7);}createEndUser(_0x3262f7,_0x1b325f,_0x46bbab,_0x12ea24)[_0x0501('0xf')](function(_0x293b84){logger['info']('Contact\x20created:',_0x293b84[_0x0501('0x2b')]);return _0x34da67(_0x293b84);});});})[_0x0501('0x16')](function(_0x580df9){_0x1da37c(_0x580df9);});});};}function createEndUser(_0x5cdeed,_0x22d4aa,_0x3c1f2b,_0x354cca){return new Promise(function(_0x49ad3d,_0x24c3fb){var _0x52bc6b=moment();var _0x3101ea={'method':_0x0501('0x2d'),'uri':_0x354cca+_0x0501('0x2e'),'body':{'contact':{'last_name':_0x5cdeed['contactNumber'],'work_number':_0x5cdeed[_0x0501('0x29')],'mobile_number':_0x5cdeed[_0x0501('0x29')],'owner_id':_0x5cdeed['userId'],'created_at':_0x52bc6b[_0x0501('0x27')](_0x0501('0x2f'))}},'json':!![]};_0x3101ea[_0x0501('0x30')]=_0x3c1f2b;logger[_0x0501('0xd')](_0x0501('0x31'));return rp(_0x3101ea)[_0x0501('0xf')](function(_0x2edf82){_0x5cdeed[_0x0501('0x2b')]=_0x2edf82['contact']['id'];_0x49ad3d(_0x5cdeed);})[_0x0501('0x16')](function(_0x11f1b0){logger[_0x0501('0x17')]('['+[_0x22d4aa['toUpperCase']()]+']',_0x11f1b0[_0x0501('0x19')]);_0x24c3fb(_0x11f1b0[_0x0501('0x19')]);});});}function getTicket(_0x15acad,_0xa3e868,_0x39e5c1,_0x3f402d,_0x2a84c0){return function(_0x2f430b){logger[_0x0501('0xd')]('Creating\x20new\x20task');return new Promise(function(_0x38c7bc,_0x4638fc){var _0xaafd0=moment();var _0x326d40={'method':'POST','uri':_0x39e5c1+_0x0501('0x32'),'body':{'title':intUtil['getString'](_0x3f402d['Subjects'],_0x2a84c0,'\x20'),'description':intUtil[_0x0501('0x33')](_0x3f402d[_0x0501('0x34')],_0x2a84c0,'\x0a'),'owner_id':_0x2f430b[_0x0501('0x1f')],'creater_id':_0x2f430b[_0x0501('0x13')],'targetable_id':_0x2f430b[_0x0501('0x2b')],'targetable_type':_0x0501('0x35'),'created_at':_0xaafd0[_0x0501('0x27')](_0x0501('0x2f')),'due_date':_0xaafd0[_0x0501('0x36')](0x1e,'m')[_0x0501('0x27')](_0x0501('0x2f'))},'json':!![]};_0x326d40['headers']=_0xa3e868;return rp(_0x326d40)[_0x0501('0xf')](function(_0x34a198){_0x2f430b['ticketId']=_0x34a198['task']['id'];logger['info'](_0x0501('0x37'),_0x2f430b[_0x0501('0x38')]);_0x38c7bc(_0x2f430b);})[_0x0501('0x16')](function(_0x56ccfe){logger[_0x0501('0x17')]('['+[_0x15acad['toUpperCase']()]+']',_0x56ccfe[_0x0501('0x19')]);_0x4638fc(_0x56ccfe[_0x0501('0x19')]);});});};}function emit(_0x189fcd,_0xff3f89,_0x3a41a6){var _0x45867d={'uri':_0x189fcd+_0x0501('0x39')+_0x3a41a6};io['to'](util['format'](_0x0501('0x3a'),_0xff3f89))['emit'](_0x0501('0x3b'),_0x45867d);}exports['cs']=function(_0x42838a,_0x282318,_0x4b352d,_0xab997d,_0x5595d6,_0x33bb67,_0x45df32,_0x3f8425){var _0x34ecc5={};var _0x392db0={'Authorization':_0x0501('0x3c')+_0x33bb67[_0x0501('0x3d')]};_0x33bb67[_0x0501('0x3e')]=intUtil[_0x0501('0x3f')](_0x33bb67['remoteUri']);_0x33bb67[_0x0501('0x40')]=intUtil[_0x0501('0x3f')](_0x33bb67[_0x0501('0x40')]);var _0x4ec62f=_0x33bb67[_0x0501('0x3e')];_0x34ecc5['adminEmail']=_0x33bb67[_0x0501('0x41')];_0x34ecc5[_0x0501('0x29')]=_0x3f8425[_0x0501('0x42')]()===_0x0501('0x43')?_0x282318[_0x0501('0x44')]:_0x282318[_0x0501('0x45')];_0x34ecc5['callDirection']=_0x3f8425===_0x0501('0x46')||_0x3f8425===_0x0501('0x47')?'queue':_0x0501('0x43');if(_0xab997d){_0x34ecc5['agentEmail']=_0xab997d[_0x0501('0x11')];}var _0x3792f2=util[_0x0501('0x27')](_0x0501('0x48'),_0x33bb67[_0x0501('0x40')],_0x282318[_0x0501('0x49')],md5(_0x282318[_0x0501('0x49')]));if(_0x5595d6&&_0x5595d6['monitor_format']){logger['info'](_0x0501('0x4a'),'Recording\x20is\x20enabled!');_0x282318[_0x0501('0x4b')]=_0x3792f2;}else if(_0x45df32&&_0x45df32[_0x0501('0x4c')]&&_0x45df32['recordingFormat']!==_0x0501('0x4d')){logger['info'](_0x0501('0x4e'),_0x0501('0x4f'));_0x282318[_0x0501('0x4b')]=_0x3792f2;}else{_0x282318[_0x0501('0x4b')]='';}return getAdminId(_0x34ecc5,_0x3f8425,_0x392db0,_0x4ec62f)['then'](getUser(_0x3f8425,_0x392db0,_0x4ec62f))[_0x0501('0xf')](getEndUser(_0x3f8425,_0x392db0,_0x4ec62f))[_0x0501('0xf')](getTicket(_0x3f8425,_0x392db0,_0x4ec62f,_0x4b352d,_0x282318))[_0x0501('0xf')](function(_0x4d34a1){logger[_0x0501('0xd')](util[_0x0501('0x27')]('The\x20ticket\x20ID\x20is:\x20%s',_0x4d34a1['ticketId']));if(_0x3f8425!=='unmanaged'){logger[_0x0501('0xd')]('['+[_0x3f8425[_0x0501('0x18')]()]+']',_0x0501('0x50'));emit(_0x4ec62f,_0xab997d[_0x0501('0x51')],_0x4d34a1[_0x0501('0x2b')]);}})['catch'](function(_0xe0d3ec){logger[_0x0501('0x17')]('['+[_0x3f8425[_0x0501('0x18')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x0501('0x52')](_0xe0d3ec,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xcd82=['endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','Creating\x20new\x20task','getString','Descriptions','Contact','add','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','stripTrailingSlash','remoteUri','serverUrl','username','toLowerCase','destcalleridnum','calleridnum','callDirection','queue','unmanaged','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','recordingURL','recordingFormat','[OUTBOUND]','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','length','email','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','catch','error','message','Getting\x20user\x20list','users','Getting\x20user\x20with\x20email','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected','toUpperCase','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number'];(function(_0x48fa70,_0x434ead){var _0x330f4=function(_0x17902a){while(--_0x17902a){_0x48fa70['push'](_0x48fa70['shift']());}};_0x330f4(++_0x434ead);}(_0xcd82,0x7b));var _0x2cd8=function(_0x4512ca,_0x270a55){_0x4512ca=_0x4512ca-0x0;var _0x55d639=_0xcd82[_0x4512ca];return _0x55d639;};'use strict';var _=require(_0x2cd8('0x0'));var rp=require(_0x2cd8('0x1'));var md5=require(_0x2cd8('0x2'));var util=require('util');var moment=require(_0x2cd8('0x3'));var Promise=require(_0x2cd8('0x4'));var Redis=require(_0x2cd8('0x5'));var intUtil=require(_0x2cd8('0x6'));var config=require(_0x2cd8('0x7'));var logger=require(_0x2cd8('0x8'))(_0x2cd8('0x9'));config[_0x2cd8('0xa')]=_['defaults'](config[_0x2cd8('0xa')],{'host':_0x2cd8('0xb'),'port':0x18eb});var io=require(_0x2cd8('0xc'))(new Redis(config['redis']));function getAdminId(_0x157533,_0x5d9822,_0x9cf852,_0x357f57){return new Promise(function(_0x169bc8,_0x281629){var _0x429440=![];var _0x308a44={'method':_0x2cd8('0xd'),'uri':_0x357f57+_0x2cd8('0xe'),'json':!![]};_0x308a44[_0x2cd8('0xf')]=_0x9cf852;logger[_0x2cd8('0x10')](_0x2cd8('0x11'));return rp(_0x308a44)[_0x2cd8('0x12')](function(_0x506284){if(_0x506284){var _0x3121ee=_0x506284['users'];var _0x1e4605=null;for(_0x1e4605=0x0;_0x1e4605<_0x3121ee[_0x2cd8('0x13')];_0x1e4605++){if(_0x3121ee[_0x1e4605][_0x2cd8('0x14')]===_0x157533[_0x2cd8('0x15')]){_0x157533[_0x2cd8('0x16')]=_0x3121ee[_0x1e4605]['id'];_0x429440=!![];}}if(_0x429440){logger[_0x2cd8('0x10')]('Admin\x20found:',_0x157533[_0x2cd8('0x16')]);_0x169bc8(_0x157533);}else{_0x281629({'statusCode':0x194,'message':_0x2cd8('0x17')});}}else{_0x281629({'statusCode':0x194,'message':_0x2cd8('0x17')});}})[_0x2cd8('0x18')](function(_0x5ae56a){logger[_0x2cd8('0x19')]('['+[_0x5d9822['toUpperCase']()]+']',_0x5ae56a[_0x2cd8('0x1a')]);_0x281629(_0x5ae56a);});});}function getUser(_0x735060,_0x5558e8,_0x334819){return function(_0x387998){return new Promise(function(_0x5efbd8,_0x435366){var _0x219c75={'method':_0x2cd8('0xd'),'uri':_0x334819+_0x2cd8('0xe'),'json':!![]};_0x219c75[_0x2cd8('0xf')]=_0x5558e8;logger[_0x2cd8('0x10')](_0x2cd8('0x1b'));return rp(_0x219c75)[_0x2cd8('0x12')](function(_0x16d5bf){if(_0x16d5bf){var _0x5a4f52=_0x16d5bf[_0x2cd8('0x1c')];var _0x2c43ff=![];var _0x1d2875=null;if(_0x387998['agentEmail']!==null){logger[_0x2cd8('0x10')](_0x2cd8('0x1d'),_0x387998[_0x2cd8('0x1e')]);_0x387998[_0x2cd8('0x1f')]=_0x387998[_0x2cd8('0x1e')];for(_0x1d2875=0x0;_0x1d2875<_0x5a4f52[_0x2cd8('0x13')];_0x1d2875++){if(_0x5a4f52[_0x1d2875][_0x2cd8('0x14')]===_0x387998[_0x2cd8('0x1e')]){_0x2c43ff=!![];_0x387998[_0x2cd8('0x20')]=_0x5a4f52[_0x1d2875]['id'];logger[_0x2cd8('0x10')](_0x2cd8('0x21'),_0x387998[_0x2cd8('0x20')]);}}}if(!_0x2c43ff){logger['info'](_0x2cd8('0x22'));_0x387998[_0x2cd8('0x1f')]=_0x387998[_0x2cd8('0x15')];_0x387998[_0x2cd8('0x20')]=_0x387998[_0x2cd8('0x16')];_0x2c43ff=!![];}if(_0x2c43ff){_0x5efbd8(_0x387998);}else{_0x435366({'statusCode':0x194,'message':_0x2cd8('0x17')});}}else{_0x435366({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x2cd8('0x18')](function(_0x42e5f0){logger[_0x2cd8('0x19')]('['+[_0x735060[_0x2cd8('0x23')]()]+']',_0x42e5f0[_0x2cd8('0x1a')]);_0x435366(_0x42e5f0);});});};}function searchContact(_0x32b807,_0x366b52,_0x5cacf5,_0x4e8a18){return new Promise(function(_0x45468c,_0x3645ec){var _0x5945c4={'method':_0x2cd8('0xd'),'headers':_0x366b52,'uri':_0x32b807+'/api/lookup?q='+_0x4e8a18+'&f='+_0x5cacf5+_0x2cd8('0x24'),'json':!![]};rp(_0x5945c4)[_0x2cd8('0x12')](function(_0x5e5cbc){var _0x1f2298=_[_0x2cd8('0x25')](_0x5e5cbc[_0x2cd8('0x26')][_0x2cd8('0x26')],[_0x5cacf5,_0x4e8a18]);_0x45468c(_0x1f2298);})['catch'](function(_0x24a1f5){_0x3645ec(_0x24a1f5);});});}function getEndUser(_0x1e4009,_0x10a7b2,_0x5d7846){return function(_0x2f913e){return new Promise(function(_0x1dffcf,_0x185f5c){logger['info'](util[_0x2cd8('0x27')](_0x2cd8('0x28'),_0x2f913e[_0x2cd8('0x29')]));searchContact(_0x5d7846,_0x10a7b2,_0x2cd8('0x2a'),_0x2f913e[_0x2cd8('0x29')])[_0x2cd8('0x12')](function(_0x460dea){if(_0x460dea){_0x2f913e[_0x2cd8('0x2b')]=_0x460dea['id'];logger[_0x2cd8('0x10')](_0x2cd8('0x2c'),_0x2f913e['endUserId']);return _0x1dffcf(_0x2f913e);}searchContact(_0x5d7846,_0x10a7b2,'work_number',_0x2f913e[_0x2cd8('0x29')])[_0x2cd8('0x12')](function(_0x3b0b81){if(_0x3b0b81){_0x2f913e[_0x2cd8('0x2b')]=_0x3b0b81['id'];logger[_0x2cd8('0x10')](_0x2cd8('0x2d'),_0x2f913e[_0x2cd8('0x2b')]);return _0x1dffcf(_0x2f913e);}createEndUser(_0x2f913e,_0x1e4009,_0x10a7b2,_0x5d7846)[_0x2cd8('0x12')](function(_0x48956e){logger[_0x2cd8('0x10')](_0x2cd8('0x2e'),_0x48956e[_0x2cd8('0x2b')]);return _0x1dffcf(_0x48956e);});});})[_0x2cd8('0x18')](function(_0x4d1d21){_0x185f5c(_0x4d1d21);});});};}function createEndUser(_0x165e2f,_0x19de1c,_0x5b4b4a,_0x24ae36){return new Promise(function(_0x23f458,_0x215e04){var _0x22b8b7=moment();var _0x4eb0c9={'method':_0x2cd8('0x2f'),'uri':_0x24ae36+_0x2cd8('0x30'),'body':{'contact':{'last_name':_0x165e2f[_0x2cd8('0x29')],'work_number':_0x165e2f[_0x2cd8('0x29')],'mobile_number':_0x165e2f[_0x2cd8('0x29')],'owner_id':_0x165e2f[_0x2cd8('0x20')],'created_at':_0x22b8b7[_0x2cd8('0x27')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x4eb0c9[_0x2cd8('0xf')]=_0x5b4b4a;logger[_0x2cd8('0x10')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x4eb0c9)[_0x2cd8('0x12')](function(_0x33a82d){_0x165e2f['endUserId']=_0x33a82d['contact']['id'];_0x23f458(_0x165e2f);})[_0x2cd8('0x18')](function(_0x547eb7){logger[_0x2cd8('0x19')]('['+[_0x19de1c[_0x2cd8('0x23')]()]+']',_0x547eb7[_0x2cd8('0x1a')]);_0x215e04(_0x547eb7[_0x2cd8('0x1a')]);});});}function getTicket(_0x5b00b1,_0xfca86,_0x51fec6,_0x41f16b,_0x1296a8){return function(_0x5bc035){logger['info'](_0x2cd8('0x31'));return new Promise(function(_0x18e811,_0x2d1794){var _0x4e7bfc=moment();var _0x3d6e7e={'method':'POST','uri':_0x51fec6+'/api/tasks','body':{'title':intUtil[_0x2cd8('0x32')](_0x41f16b['Subjects'],_0x1296a8,'\x20'),'description':intUtil[_0x2cd8('0x32')](_0x41f16b[_0x2cd8('0x33')],_0x1296a8,'\x0a'),'owner_id':_0x5bc035[_0x2cd8('0x20')],'creater_id':_0x5bc035[_0x2cd8('0x16')],'targetable_id':_0x5bc035[_0x2cd8('0x2b')],'targetable_type':_0x2cd8('0x34'),'created_at':_0x4e7bfc[_0x2cd8('0x27')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x4e7bfc[_0x2cd8('0x35')](0x1e,'m')['format']('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x3d6e7e[_0x2cd8('0xf')]=_0xfca86;return rp(_0x3d6e7e)[_0x2cd8('0x12')](function(_0x4cae5d){_0x5bc035[_0x2cd8('0x36')]=_0x4cae5d[_0x2cd8('0x37')]['id'];logger[_0x2cd8('0x10')](_0x2cd8('0x38'),_0x5bc035[_0x2cd8('0x36')]);_0x18e811(_0x5bc035);})[_0x2cd8('0x18')](function(_0x2aa09c){logger['error']('['+[_0x5b00b1['toUpperCase']()]+']',_0x2aa09c[_0x2cd8('0x1a')]);_0x2d1794(_0x2aa09c[_0x2cd8('0x1a')]);});});};}function emit(_0x5c4642,_0x10f0fe,_0x1762d3){var _0x587c53={'uri':_0x5c4642+_0x2cd8('0x39')+_0x1762d3};io['to'](util['format'](_0x2cd8('0x3a'),_0x10f0fe))[_0x2cd8('0x3b')](_0x2cd8('0x3c'),_0x587c53);}exports['cs']=function(_0x52647d,_0x45b500,_0x40312c,_0x49fa59,_0x460298,_0x494a3d,_0x4c67f6,_0x3f1d56){var _0x1279b4={};var _0x4b3828={'Authorization':_0x2cd8('0x3d')+_0x494a3d[_0x2cd8('0x3e')]};_0x494a3d['remoteUri']=intUtil[_0x2cd8('0x3f')](_0x494a3d[_0x2cd8('0x40')]);_0x494a3d[_0x2cd8('0x41')]=intUtil[_0x2cd8('0x3f')](_0x494a3d[_0x2cd8('0x41')]);var _0x2d0eae=_0x494a3d[_0x2cd8('0x40')];_0x1279b4[_0x2cd8('0x15')]=_0x494a3d[_0x2cd8('0x42')];_0x1279b4[_0x2cd8('0x29')]=_0x3f1d56[_0x2cd8('0x43')]()==='outbound'?_0x45b500[_0x2cd8('0x44')]:_0x45b500[_0x2cd8('0x45')];_0x1279b4[_0x2cd8('0x46')]=_0x3f1d56===_0x2cd8('0x47')||_0x3f1d56===_0x2cd8('0x48')?_0x2cd8('0x47'):_0x2cd8('0x49');if(_0x49fa59){_0x1279b4[_0x2cd8('0x1e')]=_0x49fa59[_0x2cd8('0x14')];}var _0x2b804=util[_0x2cd8('0x27')](_0x2cd8('0x4a'),_0x494a3d['serverUrl'],_0x45b500[_0x2cd8('0x4b')],md5(_0x45b500[_0x2cd8('0x4b')]));if(_0x460298&&_0x460298['monitor_format']){logger[_0x2cd8('0x10')](_0x2cd8('0x4c'),'Recording\x20is\x20enabled!');_0x45b500[_0x2cd8('0x4d')]=_0x2b804;}else if(_0x4c67f6&&_0x4c67f6['recordingFormat']&&_0x4c67f6[_0x2cd8('0x4e')]!=='none'){logger[_0x2cd8('0x10')](_0x2cd8('0x4f'),'Recording\x20is\x20enabled!');_0x45b500[_0x2cd8('0x4d')]=_0x2b804;}else{_0x45b500[_0x2cd8('0x4d')]='';}return getAdminId(_0x1279b4,_0x3f1d56,_0x4b3828,_0x2d0eae)[_0x2cd8('0x12')](getUser(_0x3f1d56,_0x4b3828,_0x2d0eae))[_0x2cd8('0x12')](getEndUser(_0x3f1d56,_0x4b3828,_0x2d0eae))[_0x2cd8('0x12')](getTicket(_0x3f1d56,_0x4b3828,_0x2d0eae,_0x40312c,_0x45b500))[_0x2cd8('0x12')](function(_0xa3c188){logger[_0x2cd8('0x10')](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0xa3c188[_0x2cd8('0x36')]));if(_0x3f1d56!=='unmanaged'){logger['info']('['+[_0x3f1d56[_0x2cd8('0x23')]()]+']',_0x2cd8('0x50'));emit(_0x2d0eae,_0x49fa59['name'],_0xa3c188['endUserId']);}})[_0x2cd8('0x18')](function(_0x55cfc7){logger[_0x2cd8('0x19')]('['+[_0x3f1d56[_0x2cd8('0x23')]()]+_0x2cd8('0x51'),util[_0x2cd8('0x52')](_0x55cfc7,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index dfd9b48..8fb420e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80f4=['./dynamics365','zoho','desk','vtiger','dynamics365','freshsales','servicenow','exec','includes','data1','toLowerCase','data2','Configurations','data3','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','sugarcrm','freshdesk','../../../../config/logger','error','[EXEC]','format','lodash','util','./zendesk','./salesforce','./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./servicenow'];(function(_0x3e7afe,_0x5976c1){var _0x312a74=function(_0x6d1c3a){while(--_0x6d1c3a){_0x3e7afe['push'](_0x3e7afe['shift']());}};_0x312a74(++_0x5976c1);}(_0x80f4,0xaa));var _0x480f=function(_0x40f2f0,_0x724659){_0x40f2f0=_0x40f2f0-0x0;var _0x11a018=_0x80f4[_0x40f2f0];return _0x11a018;};'use strict';var _=require(_0x480f('0x0'));var util=require(_0x480f('0x1'));var zendesk=require(_0x480f('0x2'));var salesforce=require(_0x480f('0x3'));var sugarcrm=require(_0x480f('0x4'));var freshdesk=require(_0x480f('0x5'));var zoho=require(_0x480f('0x6'));var desk=require(_0x480f('0x7'));var vtiger=require(_0x480f('0x8'));var servicenow=require(_0x480f('0x9'));var dynamics365=require(_0x480f('0xa'));var freshsales=require('./freshsales');var integrations=['zendesk','salesforce','sugarcrm','freshdesk',_0x480f('0xb'),_0x480f('0xc'),_0x480f('0xd'),_0x480f('0xe'),_0x480f('0xf'),_0x480f('0x10')];exports[_0x480f('0x11')]=function(_0x18d777,_0x32b3a3,_0x551fa6,_0x154e56,_0x18da83,_0x12f9f8){if(_0x551fa6){if(_[_0x480f('0x12')](integrations,_0x18d777['data1']['toLowerCase']())){try{var _0x50a2c0=null;var _0x2a37e2='';var _0x14c6de=_0x551fa6[_0x18d777[_0x480f('0x13')][_0x480f('0x14')]()];if(_0x14c6de){var _0x151e55=_0x14c6de[_0x18d777[_0x480f('0x15')]];if(_0x151e55){var _0x22b0e7=_['find'](_0x151e55[_0x480f('0x16')],{'id':parseInt(_0x18d777[_0x480f('0x17')],0xa)});if(_0x22b0e7){if(_0x154e56){if(_0x18da83&&_0x32b3a3[_0x480f('0x18')]){_0x2a37e2=_0x480f('0x18');}else if(_0x32b3a3[_0x480f('0x19')]){_0x2a37e2=_0x480f('0x1a');}else{console[_0x480f('0x1b')](_0x480f('0x1c'),_0x32b3a3);}}else{_0x2a37e2=_0x480f('0x1d');}switch(_0x18d777[_0x480f('0x13')][_0x480f('0x14')]()){case'zendesk':zendesk[_0x2a37e2](_0x18d777,_0x32b3a3,_0x22b0e7,_0x154e56,_0x18da83,_0x151e55,_0x12f9f8);break;case'salesforce':salesforce[_0x2a37e2](_0x18d777,_0x32b3a3,_0x22b0e7,_0x154e56,_0x18da83,_0x151e55,_0x12f9f8);break;case _0x480f('0x1e'):sugarcrm[_0x2a37e2](_0x18d777,_0x32b3a3,_0x22b0e7,_0x154e56,_0x18da83,_0x151e55,_0x12f9f8);break;case _0x480f('0x1f'):freshdesk[_0x2a37e2](_0x18d777,_0x32b3a3,_0x22b0e7,_0x154e56,_0x18da83,_0x151e55,_0x12f9f8);break;case _0x480f('0xb'):zoho[_0x2a37e2](_0x18d777,_0x32b3a3,_0x22b0e7,_0x154e56,_0x18da83,_0x151e55,_0x12f9f8);break;case'desk':desk[_0x2a37e2](_0x18d777,_0x32b3a3,_0x22b0e7,_0x154e56,_0x18da83,_0x151e55,_0x12f9f8);break;case _0x480f('0xd'):vtiger[_0x2a37e2](_0x18d777,_0x32b3a3,_0x22b0e7,_0x154e56,_0x18da83,_0x151e55,_0x12f9f8);break;case _0x480f('0xf'):freshsales['cs'](_0x18d777,_0x32b3a3,_0x22b0e7,_0x154e56,_0x18da83,_0x151e55,_0x12f9f8,_0x2a37e2);break;case _0x480f('0x10'):servicenow['cs'](_0x18d777,_0x32b3a3,_0x22b0e7,_0x154e56,_0x18da83,_0x151e55,_0x12f9f8,_0x2a37e2);break;case _0x480f('0xe'):dynamics365['cs'](_0x18d777,_0x32b3a3,_0x22b0e7,_0x154e56,_0x18da83,_0x151e55,_0x12f9f8,_0x2a37e2);break;default:console[_0x480f('0x1b')]('unknown\x20integration');}}else{_0x50a2c0=require(_0x480f('0x20'))(_0x18d777[_0x480f('0x13')][_0x480f('0x14')]());_0x50a2c0[_0x480f('0x21')](_0x480f('0x22'),util[_0x480f('0x23')]('%s\x20configuration\x20#%s\x20not\x20found',_0x18d777[_0x480f('0x13')]['toLowerCase'](),_0x18d777['data3']));}}else{_0x50a2c0=require(_0x480f('0x20'))(_0x18d777[_0x480f('0x13')]['toLowerCase']());_0x50a2c0[_0x480f('0x21')](_0x480f('0x22'),util['format']('%s\x20account\x20#%s\x20not\x20found',_0x18d777[_0x480f('0x13')][_0x480f('0x14')](),_0x18d777[_0x480f('0x15')]));}}else{}}catch(_0x36d933){console[_0x480f('0x21')](_0x36d933);}}}};
\ No newline at end of file
+var _0x06dd=['./desk','./vtiger','./servicenow','./freshsales','zendesk','sugarcrm','freshdesk','zoho','desk','vtiger','freshsales','servicenow','exec','toLowerCase','data1','data2','find','Configurations','data3','queue','outbound','EVENT\x20UNKNOWN','unmanaged','salesforce','dynamics365','log','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','lodash','util','./salesforce','./sugarcrm','./zoho'];(function(_0x470f63,_0x48d80b){var _0x4f09e2=function(_0x3aa3a4){while(--_0x3aa3a4){_0x470f63['push'](_0x470f63['shift']());}};_0x4f09e2(++_0x48d80b);}(_0x06dd,0xb4));var _0xd06d=function(_0x4f0456,_0x795c81){_0x4f0456=_0x4f0456-0x0;var _0x52caea=_0x06dd[_0x4f0456];return _0x52caea;};'use strict';var _=require(_0xd06d('0x0'));var util=require(_0xd06d('0x1'));var zendesk=require('./zendesk');var salesforce=require(_0xd06d('0x2'));var sugarcrm=require(_0xd06d('0x3'));var freshdesk=require('./freshdesk');var zoho=require(_0xd06d('0x4'));var desk=require(_0xd06d('0x5'));var vtiger=require(_0xd06d('0x6'));var servicenow=require(_0xd06d('0x7'));var dynamics365=require('./dynamics365');var freshsales=require(_0xd06d('0x8'));var integrations=[_0xd06d('0x9'),'salesforce',_0xd06d('0xa'),_0xd06d('0xb'),_0xd06d('0xc'),_0xd06d('0xd'),_0xd06d('0xe'),'dynamics365',_0xd06d('0xf'),_0xd06d('0x10')];exports[_0xd06d('0x11')]=function(_0x487b08,_0x3b0c81,_0x3283a,_0x1e91ae,_0x245844,_0x1457d7){if(_0x3283a){if(_['includes'](integrations,_0x487b08['data1'][_0xd06d('0x12')]())){try{var _0x1ebe85=null;var _0x664576='';var _0x3a1a70=_0x3283a[_0x487b08[_0xd06d('0x13')][_0xd06d('0x12')]()];if(_0x3a1a70){var _0x1fcab8=_0x3a1a70[_0x487b08[_0xd06d('0x14')]];if(_0x1fcab8){var _0x285052=_[_0xd06d('0x15')](_0x1fcab8[_0xd06d('0x16')],{'id':parseInt(_0x487b08[_0xd06d('0x17')],0xa)});if(_0x285052){if(_0x1e91ae){if(_0x245844&&_0x3b0c81[_0xd06d('0x18')]){_0x664576=_0xd06d('0x18');}else if(_0x3b0c81['routeId']){_0x664576=_0xd06d('0x19');}else{console['log'](_0xd06d('0x1a'),_0x3b0c81);}}else{_0x664576=_0xd06d('0x1b');}switch(_0x487b08[_0xd06d('0x13')][_0xd06d('0x12')]()){case _0xd06d('0x9'):zendesk[_0x664576](_0x487b08,_0x3b0c81,_0x285052,_0x1e91ae,_0x245844,_0x1fcab8,_0x1457d7);break;case _0xd06d('0x1c'):salesforce[_0x664576](_0x487b08,_0x3b0c81,_0x285052,_0x1e91ae,_0x245844,_0x1fcab8,_0x1457d7);break;case _0xd06d('0xa'):sugarcrm[_0x664576](_0x487b08,_0x3b0c81,_0x285052,_0x1e91ae,_0x245844,_0x1fcab8,_0x1457d7);break;case _0xd06d('0xb'):freshdesk[_0x664576](_0x487b08,_0x3b0c81,_0x285052,_0x1e91ae,_0x245844,_0x1fcab8,_0x1457d7);break;case _0xd06d('0xc'):zoho[_0x664576](_0x487b08,_0x3b0c81,_0x285052,_0x1e91ae,_0x245844,_0x1fcab8,_0x1457d7);break;case _0xd06d('0xd'):desk[_0x664576](_0x487b08,_0x3b0c81,_0x285052,_0x1e91ae,_0x245844,_0x1fcab8,_0x1457d7);break;case _0xd06d('0xe'):vtiger[_0x664576](_0x487b08,_0x3b0c81,_0x285052,_0x1e91ae,_0x245844,_0x1fcab8,_0x1457d7);break;case _0xd06d('0xf'):freshsales['cs'](_0x487b08,_0x3b0c81,_0x285052,_0x1e91ae,_0x245844,_0x1fcab8,_0x1457d7,_0x664576);break;case _0xd06d('0x10'):servicenow['cs'](_0x487b08,_0x3b0c81,_0x285052,_0x1e91ae,_0x245844,_0x1fcab8,_0x1457d7,_0x664576);break;case _0xd06d('0x1d'):dynamics365['cs'](_0x487b08,_0x3b0c81,_0x285052,_0x1e91ae,_0x245844,_0x1fcab8,_0x1457d7,_0x664576);break;default:console[_0xd06d('0x1e')]('unknown\x20integration');}}else{_0x1ebe85=require(_0xd06d('0x1f'))(_0x487b08[_0xd06d('0x13')][_0xd06d('0x12')]());_0x1ebe85[_0xd06d('0x20')](_0xd06d('0x21'),util[_0xd06d('0x22')](_0xd06d('0x23'),_0x487b08['data1'][_0xd06d('0x12')](),_0x487b08[_0xd06d('0x17')]));}}else{_0x1ebe85=require(_0xd06d('0x1f'))(_0x487b08['data1'][_0xd06d('0x12')]());_0x1ebe85[_0xd06d('0x20')]('[EXEC]',util['format'](_0xd06d('0x24'),_0x487b08[_0xd06d('0x13')][_0xd06d('0x12')](),_0x487b08[_0xd06d('0x14')]));}}else{}}catch(_0x3da64f){console[_0xd06d('0x20')](_0x3da64f);}}}};
\ No newline at end of file
index ec42f42..8432387 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fef=['utc','IsReminderSet','IsRecurrence','endUserType','contact','WhoId','account','WhatId','Case','ContactId','AccountId','lead','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','isNil','User','find','execute','then','length','Agent\x20%s\x20found.','identity','user_id','display_name','resolve','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','sobject','Contact','additionalSearchLead','Lead','additionalSearchAccount','Account','first','Name','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','<unknown>','format','Caller\x20-\x20%s','Company','No\x20Company','create','forEach','includes','string','picklist','content','variable','idField','variableName','toString','Variable','name','concat','securityToken','clientId','login','username','queue','stripTrailingSlash','serverUrl','remoteUri','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','email','calleridname','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','trigger:salesforce:display','user:%s','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','outbound','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','unmanaged','lastevent','toUpperCase',']\x20Integration\x20account\x20type\x20%s.','lodash','moment','bluebird','md5','jsforce','ioredis','./util','../../../../config/environment','salesforce','redis','defaults','localhost','socket.io-emitter','emit','assign','getString','ticketType','Task','ActivityDate'];(function(_0x231e16,_0x67347b){var _0x570a7c=function(_0x2c35b4){while(--_0x2c35b4){_0x231e16['push'](_0x231e16['shift']());}};_0x570a7c(++_0x67347b);}(_0x7fef,0x1d9));var _0xf7fe=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7fef[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xf7fe('0x0'));var rp=require('request-promise');var moment=require(_0xf7fe('0x1'));var BPromise=require(_0xf7fe('0x2'));var md5=require(_0xf7fe('0x3'));var jsforce=require(_0xf7fe('0x4'));var util=require('util');var Redis=require(_0xf7fe('0x5'));var intUtil=require(_0xf7fe('0x6'));var config=require(_0xf7fe('0x7'));var logger=require('../../../../config/logger')(_0xf7fe('0x8'));config[_0xf7fe('0x9')]=_[_0xf7fe('0xa')](config[_0xf7fe('0x9')],{'host':_0xf7fe('0xb'),'port':0x18eb});var io=require(_0xf7fe('0xc'))(new Redis(config[_0xf7fe('0x9')]));function emit(_0x27c0a0,_0x5e7a94,_0x538711){io['to'](_0x27c0a0)[_0xf7fe('0xd')](_0x5e7a94,_0x538711);}function getTicket(_0x40420e,_0x37b7fd,_0x16d6d0,_0x48faae,_0x2c52d8,_0x1904fc,_0x22ed1e,_0x3e1694){var _0x2cd49f=Object[_0xf7fe('0xe')]({},{'OwnerId':_0x37b7fd['id'],'Subject':intUtil[_0xf7fe('0xf')](_0x48faae['Subjects'],_0x2c52d8,'\x20'),'Description':intUtil['getString'](_0x48faae['Descriptions'],_0x2c52d8,'\x0a')},getCustomFields(_0x1904fc,_0x2c52d8));if(_0x16d6d0){if(_0x48faae[_0xf7fe('0x10')]===_0xf7fe('0x11')){_0x2cd49f[_0xf7fe('0x12')]=moment[_0xf7fe('0x13')]();_0x2cd49f[_0xf7fe('0x14')]=![];_0x2cd49f[_0xf7fe('0x15')]=![];if(_0x16d6d0[_0xf7fe('0x16')]===_0xf7fe('0x17')||_0x16d6d0[_0xf7fe('0x16')]==='lead'){_0x2cd49f[_0xf7fe('0x18')]=_0x16d6d0['id'];}else if(_0x16d6d0['endUserType']===_0xf7fe('0x19')){_0x2cd49f[_0xf7fe('0x1a')]=_0x16d6d0['id'];}}else if(_0x48faae[_0xf7fe('0x10')]===_0xf7fe('0x1b')){if(_0x16d6d0[_0xf7fe('0x16')]===_0xf7fe('0x17')){_0x2cd49f[_0xf7fe('0x1c')]=_0x16d6d0['id'];}else if(_0x16d6d0[_0xf7fe('0x16')]===_0xf7fe('0x19')){_0x2cd49f[_0xf7fe('0x1d')]=_0x16d6d0['id'];}else if(_0x16d6d0[_0xf7fe('0x16')]===_0xf7fe('0x1e')&&_0x48faae[_0xf7fe('0x1f')]){_0x2cd49f[_0x48faae[_0xf7fe('0x1f')]]=_0x16d6d0['id'];}else{logger[_0xf7fe('0x20')](_0xf7fe('0x21'));}}}return _0x22ed1e['sobject'](_0x48faae[_0xf7fe('0x10')])['create'](_0x2cd49f);}function getUser(_0x346e8b,_0x75b37f,_0xbef100){if(!_[_0xf7fe('0x22')](_0x75b37f)&&intUtil['validateEmail'](_0x75b37f)){var _0xb1a8fd={'Email':_0x75b37f};var _0x2600f3={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0xbef100['sobject'](_0xf7fe('0x23'))[_0xf7fe('0x24')](_0xb1a8fd,_0x2600f3)[_0xf7fe('0x25')]()[_0xf7fe('0x26')](function(_0x3c5442){if(_0x3c5442[_0xf7fe('0x27')]){var _0x6ccf17=_[_0xf7fe('0x24')](_0x3c5442,function(_0x17766d){return _0x17766d['Email']===_0x75b37f;});if(_0x6ccf17){logger[_0xf7fe('0x20')](_0xf7fe('0x28'),_0x75b37f);return BPromise['resolve']({'id':_0x6ccf17['Id'],'name':_0x6ccf17['Name']});}}else{logger[_0xf7fe('0x20')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x75b37f);return _0xbef100[_0xf7fe('0x29')]()[_0xf7fe('0x26')](function(_0x5a462f){return BPromise['resolve']({'id':_0x5a462f[_0xf7fe('0x2a')],'name':_0x5a462f[_0xf7fe('0x2b')]});});}});}else{logger[_0xf7fe('0x20')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x75b37f);return _0xbef100[_0xf7fe('0x29')]()[_0xf7fe('0x26')](function(_0x25ef54){return BPromise[_0xf7fe('0x2c')]({'id':_0x25ef54[_0xf7fe('0x2a')],'name':_0x25ef54[_0xf7fe('0x2b')]});});}}function getEndUser(_0x4809e4,_0x5df320,_0x43e762,_0x83fd94,_0x83715a){var _0x420098={'$or':{'Phone':_0x83fd94}};var _0x5b9ce5={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xf7fe('0x2c')]()[_0xf7fe('0x26')](function(){logger[_0xf7fe('0x20')](_0xf7fe('0x2d'),_0x83fd94,_0x5df320['moduleSearch']);switch(_0x5df320[_0xf7fe('0x2e')]){case _0xf7fe('0x2f'):var _0xd3e70c=_[_0xf7fe('0x30')](_0x420098);if(_0x5df320[_0xf7fe('0x31')]){var _0x3e39a5={};_0x3e39a5[_0x5df320[_0xf7fe('0x31')]]=_0x83fd94;_[_0xf7fe('0x32')](_0xd3e70c[_0xf7fe('0x33')],_0x3e39a5);}return _0x83715a[_0xf7fe('0x34')](_0xf7fe('0x35'))[_0xf7fe('0x24')](_0xd3e70c,_0x5b9ce5)[_0xf7fe('0x25')]()[_0xf7fe('0x26')](function(_0x2b0d83){if(_0x2b0d83&&_0x2b0d83['length']){return _0x2b0d83;}else{var _0x4f7603=_[_0xf7fe('0x30')](_0x420098);if(_0x5df320[_0xf7fe('0x36')]){var _0x406042={};_0x406042[_0x5df320['additionalSearchLead']]=_0x83fd94;_[_0xf7fe('0x32')](_0x4f7603[_0xf7fe('0x33')],_0x406042);}return _0x83715a['sobject'](_0xf7fe('0x37'))['find'](_0x4f7603,_0x5b9ce5);}});case'account_contact_lead':var _0x3ad2fd=_[_0xf7fe('0x30')](_0x420098);if(_0x5df320['additionalSearchAccount']){var _0x3e39a5={};_0x3e39a5[_0x5df320[_0xf7fe('0x38')]]=_0x83fd94;_[_0xf7fe('0x32')](_0x3ad2fd['$or'],_0x3e39a5);}return _0x83715a['sobject'](_0xf7fe('0x39'))[_0xf7fe('0x24')](_0x3ad2fd,_0x5b9ce5)['execute']()[_0xf7fe('0x26')](function(_0x4ef5e7){if(_0x4ef5e7&&_0x4ef5e7['length']){return _0x4ef5e7;}else{var _0x91e5cd=_[_0xf7fe('0x30')](_0x420098);if(_0x5df320['additionalSearchContact']){var _0x3818cc={};_0x3818cc[_0x5df320[_0xf7fe('0x31')]]=_0x83fd94;_[_0xf7fe('0x32')](_0x91e5cd['$or'],_0x3818cc);}return _0x83715a[_0xf7fe('0x34')](_0xf7fe('0x35'))[_0xf7fe('0x24')](_0x91e5cd,_0x5b9ce5)[_0xf7fe('0x26')](function(_0x265d96){if(_0x265d96&&_0x265d96['length']){return _0x265d96;}else{var _0x55ded4=_['cloneDeep'](_0x420098);if(_0x5df320[_0xf7fe('0x36')]){var _0x3e25f2={};_0x3e25f2[_0x5df320[_0xf7fe('0x36')]]=_0x83fd94;_['merge'](_0x55ded4[_0xf7fe('0x33')],_0x3e25f2);}return _0x83715a[_0xf7fe('0x34')](_0xf7fe('0x37'))[_0xf7fe('0x24')](_0x55ded4,_0x5b9ce5);}});}});case _0xf7fe('0x17'):var _0xd3e70c=_[_0xf7fe('0x30')](_0x420098);if(_0x5df320['additionalSearchContact']){var _0x3e39a5={};_0x3e39a5[_0x5df320['additionalSearchContact']]=_0x83fd94;_[_0xf7fe('0x32')](_0xd3e70c[_0xf7fe('0x33')],_0x3e39a5);}return _0x83715a[_0xf7fe('0x34')](_0xf7fe('0x35'))[_0xf7fe('0x24')](_0xd3e70c,_0x5b9ce5)[_0xf7fe('0x25')]();case'lead':var _0x1b6ee5=_[_0xf7fe('0x30')](_0x420098);if(_0x5df320[_0xf7fe('0x36')]){var _0x3e39a5={};_0x3e39a5[_0x5df320[_0xf7fe('0x36')]]=_0x83fd94;_[_0xf7fe('0x32')](_0x1b6ee5[_0xf7fe('0x33')],_0x3e39a5);}return _0x83715a[_0xf7fe('0x34')](_0xf7fe('0x37'))[_0xf7fe('0x24')](_0x1b6ee5,_0x5b9ce5);case'account':var _0x3ad2fd=_[_0xf7fe('0x30')](_0x420098);if(_0x5df320[_0xf7fe('0x38')]){var _0x3e39a5={};_0x3e39a5[_0x5df320[_0xf7fe('0x38')]]=_0x83fd94;_[_0xf7fe('0x32')](_0x3ad2fd[_0xf7fe('0x33')],_0x3e39a5);}return _0x83715a[_0xf7fe('0x34')](_0xf7fe('0x39'))[_0xf7fe('0x24')](_0x3ad2fd,_0x5b9ce5);default:return null;}})[_0xf7fe('0x26')](function(_0x1184a7){if(_0x1184a7&&_0x1184a7[_0xf7fe('0x27')]){var _0x3604dd=_[_0xf7fe('0x3a')](_0x1184a7);if(_0x3604dd){return BPromise[_0xf7fe('0x2c')]({'id':_0x3604dd['Id'],'name':_0x3604dd[_0xf7fe('0x3b')],'phone':_0x3604dd['Phone'],'endUserType':_0x3604dd['attributes'][_0xf7fe('0x3c')][_0xf7fe('0x3d')]()});}}})[_0xf7fe('0x26')](function(_0x12457a){if(_0x12457a){logger['info'](_0xf7fe('0x3e'),_0x12457a[_0xf7fe('0x16')],_0x83fd94);return BPromise['resolve'](_0x12457a);}else{logger[_0xf7fe('0x20')](_0xf7fe('0x3f'),_0x83fd94);var _0x5592fb={'Phone':_0x83fd94};if(_0x5df320['moduleCreate']){if(_0x5df320[_0xf7fe('0x40')]===_0xf7fe('0x17')){logger[_0xf7fe('0x20')](_0xf7fe('0x41'),_0x83fd94,_0x5df320[_0xf7fe('0x40')]);_0x5592fb['LastName']=_0x43e762!==_0xf7fe('0x42')?_0x43e762:util[_0xf7fe('0x43')](_0xf7fe('0x44'),_0x83fd94);}else if(_0x5df320['moduleCreate']===_0xf7fe('0x1e')){logger[_0xf7fe('0x20')](_0xf7fe('0x41'),_0x83fd94,_0x5df320[_0xf7fe('0x40')]);_0x5592fb['LastName']=_0x43e762!==_0xf7fe('0x42')?_0x43e762:util['format'](_0xf7fe('0x44'),_0x83fd94);_0x5592fb[_0xf7fe('0x45')]=_0xf7fe('0x46');}else if(_0x5df320[_0xf7fe('0x40')]===_0xf7fe('0x19')){logger['info'](_0xf7fe('0x41'),_0x83fd94,_0x5df320[_0xf7fe('0x40')]);_0x5592fb['Name']=_0x43e762!=='<unknown>'?_0x43e762:util[_0xf7fe('0x43')](_0xf7fe('0x44'),_0x83fd94);}else{return null;}}return _0x83715a[_0xf7fe('0x34')](_['upperFirst'](_0x5df320['moduleCreate']))[_0xf7fe('0x47')](_0x5592fb)[_0xf7fe('0x26')](function(_0x48ecac){return BPromise['resolve']({'id':_0x48ecac['id'],'endUserType':_0x5df320['moduleCreate']});});}});}function getCustomFields(_0x57fed6,_0xb58a8b){var _0x2e5d3f={};if(_0x57fed6['length']>0x0){_[_0xf7fe('0x48')](_0x57fed6,function(_0x1bea08){if(_[_0xf7fe('0x49')]([_0xf7fe('0x4a'),_0xf7fe('0x4b')],_0x1bea08['type'])&&_0x1bea08['idField']){_0x2e5d3f[_0x1bea08['idField']]=_0x1bea08[_0xf7fe('0x4c')]['toString']();}else if(_0x1bea08[_0xf7fe('0x3c')]===_0xf7fe('0x4d')&&_0x1bea08['variableName']&&_0x1bea08[_0xf7fe('0x4e')]){_0xb58a8b[_0x1bea08[_0xf7fe('0x4f')]]&&(_0x2e5d3f[_0x1bea08[_0xf7fe('0x4e')]]=_0xb58a8b[_0x1bea08['variableName']][_0xf7fe('0x50')]());}else if(_0x1bea08[_0xf7fe('0x3c')]==='customVariable'&&_0x1bea08[_0xf7fe('0x51')]&&_0x1bea08[_0xf7fe('0x51')][_0xf7fe('0x52')]&&_0x1bea08[_0xf7fe('0x4e')]){_0xb58a8b[_0x1bea08[_0xf7fe('0x51')][_0xf7fe('0x52')]['toLowerCase']()]&&(_0x2e5d3f[_0x1bea08[_0xf7fe('0x4e')]]=_0xb58a8b[_0x1bea08[_0xf7fe('0x51')][_0xf7fe('0x52')]['toLowerCase']()][_0xf7fe('0x50')]());}});}return _0x2e5d3f;}function getConnection(_0x5ceda1){var _0x2d9368=_0x5ceda1['password'][_0xf7fe('0x53')](_0x5ceda1[_0xf7fe('0x54')]);var _0x42f298=new jsforce['Connection']({'oauth2':{'loginUrl':_0x5ceda1['remoteUri']||'https://login.salesforce.com','clientId':_0x5ceda1[_0xf7fe('0x55')],'clientSecret':_0x5ceda1['clientSecret']}});return _0x42f298[_0xf7fe('0x56')](_0x5ceda1[_0xf7fe('0x57')],_0x2d9368)['then'](function(){logger[_0xf7fe('0x20')]('Connection\x20established.');return _0x42f298;});}exports[_0xf7fe('0x58')]=function(_0x4bf203,_0x389f40,_0x4f9449,_0x3218fa,_0x1f0229,_0x561c35){var _0x3f4d6e,_0x3b12be,_0xbc7d7f,_0x270bf8;_0x561c35['serverUrl']=intUtil[_0xf7fe('0x59')](_0x561c35[_0xf7fe('0x5a')]);_0x561c35[_0xf7fe('0x5b')]=intUtil[_0xf7fe('0x59')](_0x561c35[_0xf7fe('0x5b')]);if(_0x1f0229&&_0x1f0229[_0xf7fe('0x5c')]){logger['info'](_0xf7fe('0x5d'),_0xf7fe('0x5e'));_0x389f40[_0xf7fe('0x5f')]=util[_0xf7fe('0x43')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x561c35[_0xf7fe('0x5a')],_0x389f40['uniqueid'],md5(_0x389f40[_0xf7fe('0x60')]));}else{_0x389f40['recordingURL']='';}return getConnection(_0x561c35)[_0xf7fe('0x26')](function(_0x44519c){_0x270bf8=_0x44519c;return getUser(_0x561c35,_0x3218fa[_0xf7fe('0x61')],_0x270bf8);})[_0xf7fe('0x26')](function(_0x9fbc8){_0x3f4d6e=_0x9fbc8;return getEndUser(_0x561c35,_0x4f9449,_0x389f40[_0xf7fe('0x62')],_0x389f40[_0xf7fe('0x63')],_0x270bf8);})[_0xf7fe('0x26')](function(_0x4032e4){_0x3b12be=_0x4032e4;return getTicket(_0x561c35,_0x3f4d6e,_0x3b12be,_0x4f9449,_0x389f40,_0x4f9449[_0xf7fe('0x64')],_0x270bf8,'queue');})[_0xf7fe('0x26')](function(_0xdcaca1){_0xbc7d7f=_0xdcaca1;logger[_0xf7fe('0x20')](_0xf7fe('0x65'),_0xbc7d7f['id']);logger['info'](_0xf7fe('0x66'),_0xbc7d7f['id'],_0x3218fa[_0xf7fe('0x52')],_0x561c35[_0xf7fe('0x3c')]);switch(_0x561c35[_0xf7fe('0x3c')]){case _0xf7fe('0x67'):emit(util[_0xf7fe('0x43')]('user:%s',_0x3218fa['name']),_0xf7fe('0x68'),{'recordId':_0xbc7d7f['id']});break;case'newTab':emit(util[_0xf7fe('0x43')](_0xf7fe('0x69'),_0x3218fa[_0xf7fe('0x52')]),_0xf7fe('0x6a'),{'uri':util['format'](_0xf7fe('0x6b'),_0x270bf8[_0xf7fe('0x6c')],_0xbc7d7f['id'])});break;default:logger[_0xf7fe('0x6d')](_0xf7fe('0x6e'));}})[_0xf7fe('0x6f')](function(_0xf86a30){logger[_0xf7fe('0x6d')](_0xf7fe('0x5d'),_0xf86a30);});};exports['outbound']=function(_0x48a380,_0x3a3d45,_0x169f0a,_0x2dae73,_0x2b1ec1,_0x3d178a,_0x32980b){var _0x3219c5,_0x36157d,_0x4cae21,_0x1f2879;_0x3d178a[_0xf7fe('0x5a')]=intUtil['stripTrailingSlash'](_0x3d178a['serverUrl']);_0x3d178a[_0xf7fe('0x5b')]=intUtil[_0xf7fe('0x59')](_0x3d178a[_0xf7fe('0x5b')]);if(_0x32980b&&_0x32980b['recordingFormat']&&_0x32980b[_0xf7fe('0x70')]!==_0xf7fe('0x71')){logger[_0xf7fe('0x20')](_0xf7fe('0x72'),'Recording\x20is\x20enabled!');_0x3a3d45['recordingURL']=util[_0xf7fe('0x43')](_0xf7fe('0x73'),_0x3d178a['serverUrl'],_0x3a3d45[_0xf7fe('0x60')],md5(_0x3a3d45['uniqueid']));}return getConnection(_0x3d178a)[_0xf7fe('0x26')](function(_0x3a2cbe){_0x1f2879=_0x3a2cbe;return getUser(_0x3d178a,_0x2dae73[_0xf7fe('0x61')],_0x1f2879);})[_0xf7fe('0x26')](function(_0x4f67be){_0x3219c5=_0x4f67be;return getEndUser(_0x3d178a,_0x169f0a,_0x3a3d45[_0xf7fe('0x74')],_0x3a3d45['destcalleridnum'],_0x1f2879);})[_0xf7fe('0x26')](function(_0x438824){_0x36157d=_0x438824;return getTicket(_0x3d178a,_0x3219c5,_0x36157d,_0x169f0a,_0x3a3d45,_0x169f0a['Fields'],_0x1f2879,_0xf7fe('0x75'));})[_0xf7fe('0x26')](function(_0x164f84){_0x4cae21=_0x164f84;logger[_0xf7fe('0x20')]('[OUTBOUND]\x20Ticket\x20%s\x20created.',_0x4cae21['id']);logger[_0xf7fe('0x20')](_0xf7fe('0x76'),_0x4cae21['id'],_0x2dae73[_0xf7fe('0x52')],_0x3d178a[_0xf7fe('0x3c')]);switch(_0x3d178a[_0xf7fe('0x3c')]){case _0xf7fe('0x67'):emit(util['format'](_0xf7fe('0x69'),_0x2dae73[_0xf7fe('0x52')]),'trigger:salesforce:display',{'recordId':_0x4cae21['id']});break;case'newTab':emit(util[_0xf7fe('0x43')](_0xf7fe('0x69'),_0x2dae73[_0xf7fe('0x52')]),_0xf7fe('0x6a'),{'uri':util[_0xf7fe('0x43')](_0xf7fe('0x6b'),_0x1f2879[_0xf7fe('0x6c')],_0x4cae21['id'])});break;default:logger[_0xf7fe('0x6d')](_0xf7fe('0x72'),'Salesforce\x20account\x20type\x20not\x20recognized');}})['catch'](function(_0xf7ea0a){logger[_0xf7fe('0x6d')]('[OUTBOUND]',_0xf7ea0a);});};exports[_0xf7fe('0x77')]=function(_0x2fe9e4,_0x296cbd,_0x4f3d5d,_0x10d213,_0x2bf7fc,_0x43e493){var _0x5bbfd1,_0x35cadd,_0x11da17,_0x490e37;_0x43e493['serverUrl']=intUtil[_0xf7fe('0x59')](_0x43e493[_0xf7fe('0x5a')]);_0x43e493['remoteUri']=intUtil[_0xf7fe('0x59')](_0x43e493[_0xf7fe('0x5b')]);if(_0x2bf7fc&&_0x2bf7fc[_0xf7fe('0x5c')]){logger['info']('['+_0x296cbd[_0xf7fe('0x78')]['toUpperCase']()+']',_0xf7fe('0x5e'));_0x296cbd['recordingURL']=util['format'](_0xf7fe('0x73'),_0x43e493[_0xf7fe('0x5a')],_0x296cbd[_0xf7fe('0x60')],md5(_0x296cbd[_0xf7fe('0x60')]));}else{_0x296cbd[_0xf7fe('0x5f')]='';}return getConnection(_0x43e493)[_0xf7fe('0x26')](function(_0x1f6ba6){_0x490e37=_0x1f6ba6;if(!_[_0xf7fe('0x22')](_0x10d213)){return getUser(_0x43e493,_0x10d213[_0xf7fe('0x52')],_0x490e37);}else{return getUser(_0x43e493,null,_0x490e37);}})[_0xf7fe('0x26')](function(_0x20528f){_0x5bbfd1=_0x20528f;return getEndUser(_0x43e493,_0x4f3d5d,_0x296cbd[_0xf7fe('0x62')],_0x296cbd['calleridnum'],_0x490e37);})[_0xf7fe('0x26')](function(_0x21505f){_0x35cadd=_0x21505f;return getTicket(_0x43e493,_0x5bbfd1,_0x35cadd,_0x4f3d5d,_0x296cbd,_0x4f3d5d[_0xf7fe('0x64')],_0x490e37);})['then'](function(_0xfa750b){_0x11da17=_0xfa750b;logger[_0xf7fe('0x20')]('['+_0x296cbd['lastevent']['toUpperCase']()+']\x20Ticket\x20%s\x20created.',_0x11da17['id']);logger[_0xf7fe('0x20')]('['+_0x296cbd[_0xf7fe('0x78')][_0xf7fe('0x79')]()+_0xf7fe('0x7a'),_0x43e493['type']);})[_0xf7fe('0x6f')](function(_0x1fb9b9){logger[_0xf7fe('0x6d')]('['+_0x296cbd[_0xf7fe('0x78')][_0xf7fe('0x79')]()+']',_0x1fb9b9);});};
\ No newline at end of file
+var _0xf303=['sobject','create','isNil','validateEmail','find','then','length','Agent\x20%s\x20found.','info','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','resolve','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','execute','additionalSearchLead','account_contact_lead','additionalSearchAccount','Account','Contact','first','Name','Phone','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Caller\x20-\x20%s','Company','No\x20Company','upperFirst','includes','string','picklist','idField','toString','variable','variableName','Variable','name','password','concat','securityToken','Connection','https://login.salesforce.com','clientId','clientSecret','login','username','queue','serverUrl','stripTrailingSlash','remoteUri','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','[QUEUE]\x20Ticket\x20%s\x20created','user:%s','trigger:salesforce:display','newTab','%s/%s/e','instanceUrl','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','outbound','recordingFormat','none','destcalleridname','destcalleridnum','Fields','[OUTBOUND]\x20Ticket\x20%s\x20created.','integrationTab','trigger:browser:url','error','Salesforce\x20account\x20type\x20not\x20recognized','catch','[OUTBOUND]','unmanaged','lastevent','calleridnum','toUpperCase',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','bluebird','jsforce','util','ioredis','./util','../../../../config/logger','salesforce','defaults','localhost','socket.io-emitter','emit','assign','getString','Subjects','Descriptions','ticketType','Task','utc','IsReminderSet','IsRecurrence','endUserType','contact','account','WhatId','Case','AccountId','lead','leadId','Association\x20between\x20Case\x20and\x20Lead\x20skipped'];(function(_0x375ec3,_0x28ffc1){var _0x52315b=function(_0xfb7558){while(--_0xfb7558){_0x375ec3['push'](_0x375ec3['shift']());}};_0x52315b(++_0x28ffc1);}(_0xf303,0xe3));var _0x3f30=function(_0x588247,_0x3219e0){_0x588247=_0x588247-0x0;var _0x452548=_0xf303[_0x588247];return _0x452548;};'use strict';var _=require(_0x3f30('0x0'));var rp=require(_0x3f30('0x1'));var moment=require('moment');var BPromise=require(_0x3f30('0x2'));var md5=require('md5');var jsforce=require(_0x3f30('0x3'));var util=require(_0x3f30('0x4'));var Redis=require(_0x3f30('0x5'));var intUtil=require(_0x3f30('0x6'));var config=require('../../../../config/environment');var logger=require(_0x3f30('0x7'))(_0x3f30('0x8'));config['redis']=_[_0x3f30('0x9')](config['redis'],{'host':_0x3f30('0xa'),'port':0x18eb});var io=require(_0x3f30('0xb'))(new Redis(config['redis']));function emit(_0x1ac758,_0x6df9a9,_0x23c995){io['to'](_0x1ac758)[_0x3f30('0xc')](_0x6df9a9,_0x23c995);}function getTicket(_0x3ed012,_0x385f20,_0x2f15e6,_0x295e3c,_0x5468a2,_0x560a1a,_0x4969f2,_0xc8a420){var _0x216d55=Object[_0x3f30('0xd')]({},{'OwnerId':_0x385f20['id'],'Subject':intUtil[_0x3f30('0xe')](_0x295e3c[_0x3f30('0xf')],_0x5468a2,'\x20'),'Description':intUtil[_0x3f30('0xe')](_0x295e3c[_0x3f30('0x10')],_0x5468a2,'\x0a')},getCustomFields(_0x560a1a,_0x5468a2));if(_0x2f15e6){if(_0x295e3c[_0x3f30('0x11')]===_0x3f30('0x12')){_0x216d55['ActivityDate']=moment[_0x3f30('0x13')]();_0x216d55[_0x3f30('0x14')]=![];_0x216d55[_0x3f30('0x15')]=![];if(_0x2f15e6[_0x3f30('0x16')]===_0x3f30('0x17')||_0x2f15e6[_0x3f30('0x16')]==='lead'){_0x216d55['WhoId']=_0x2f15e6['id'];}else if(_0x2f15e6['endUserType']===_0x3f30('0x18')){_0x216d55[_0x3f30('0x19')]=_0x2f15e6['id'];}}else if(_0x295e3c['ticketType']===_0x3f30('0x1a')){if(_0x2f15e6[_0x3f30('0x16')]===_0x3f30('0x17')){_0x216d55['ContactId']=_0x2f15e6['id'];}else if(_0x2f15e6[_0x3f30('0x16')]===_0x3f30('0x18')){_0x216d55[_0x3f30('0x1b')]=_0x2f15e6['id'];}else if(_0x2f15e6[_0x3f30('0x16')]===_0x3f30('0x1c')&&_0x295e3c['leadId']){_0x216d55[_0x295e3c[_0x3f30('0x1d')]]=_0x2f15e6['id'];}else{logger['info'](_0x3f30('0x1e'));}}}return _0x4969f2[_0x3f30('0x1f')](_0x295e3c['ticketType'])[_0x3f30('0x20')](_0x216d55);}function getUser(_0x13c8bb,_0x1c41fa,_0x16bc8b){if(!_[_0x3f30('0x21')](_0x1c41fa)&&intUtil[_0x3f30('0x22')](_0x1c41fa)){var _0x140c7b={'Email':_0x1c41fa};var _0x13b819={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x16bc8b[_0x3f30('0x1f')]('User')[_0x3f30('0x23')](_0x140c7b,_0x13b819)['execute']()[_0x3f30('0x24')](function(_0x5b88d8){if(_0x5b88d8[_0x3f30('0x25')]){var _0x4f517b=_[_0x3f30('0x23')](_0x5b88d8,function(_0xed066b){return _0xed066b['Email']===_0x1c41fa;});if(_0x4f517b){logger['info'](_0x3f30('0x26'),_0x1c41fa);return BPromise['resolve']({'id':_0x4f517b['Id'],'name':_0x4f517b['Name']});}}else{logger[_0x3f30('0x27')](_0x3f30('0x28'),_0x1c41fa);return _0x16bc8b[_0x3f30('0x29')]()[_0x3f30('0x24')](function(_0x58f146){return BPromise[_0x3f30('0x2a')]({'id':_0x58f146[_0x3f30('0x2b')],'name':_0x58f146[_0x3f30('0x2c')]});});}});}else{logger[_0x3f30('0x27')](_0x3f30('0x28'),_0x1c41fa);return _0x16bc8b[_0x3f30('0x29')]()[_0x3f30('0x24')](function(_0x27cd28){return BPromise[_0x3f30('0x2a')]({'id':_0x27cd28[_0x3f30('0x2b')],'name':_0x27cd28[_0x3f30('0x2c')]});});}}function getEndUser(_0x36c0ed,_0x4f01d0,_0x104651,_0x471a66,_0x45e9e2){var _0x4d9b46={'$or':{'Phone':_0x471a66}};var _0xcc428f={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x3f30('0x2a')]()[_0x3f30('0x24')](function(){logger[_0x3f30('0x27')](_0x3f30('0x2d'),_0x471a66,_0x4f01d0['moduleSearch']);switch(_0x4f01d0[_0x3f30('0x2e')]){case _0x3f30('0x2f'):var _0x2237e8=_[_0x3f30('0x30')](_0x4d9b46);if(_0x4f01d0[_0x3f30('0x31')]){var _0x19a4f1={};_0x19a4f1[_0x4f01d0['additionalSearchContact']]=_0x471a66;_[_0x3f30('0x32')](_0x2237e8[_0x3f30('0x33')],_0x19a4f1);}return _0x45e9e2[_0x3f30('0x1f')]('Contact')['find'](_0x2237e8,_0xcc428f)[_0x3f30('0x34')]()[_0x3f30('0x24')](function(_0x57698b){if(_0x57698b&&_0x57698b[_0x3f30('0x25')]){return _0x57698b;}else{var _0x42d3cb=_[_0x3f30('0x30')](_0x4d9b46);if(_0x4f01d0[_0x3f30('0x35')]){var _0x2f4860={};_0x2f4860[_0x4f01d0[_0x3f30('0x35')]]=_0x471a66;_[_0x3f30('0x32')](_0x42d3cb[_0x3f30('0x33')],_0x2f4860);}return _0x45e9e2[_0x3f30('0x1f')]('Lead')[_0x3f30('0x23')](_0x42d3cb,_0xcc428f);}});case _0x3f30('0x36'):var _0x1098e3=_[_0x3f30('0x30')](_0x4d9b46);if(_0x4f01d0[_0x3f30('0x37')]){var _0x19a4f1={};_0x19a4f1[_0x4f01d0[_0x3f30('0x37')]]=_0x471a66;_[_0x3f30('0x32')](_0x1098e3[_0x3f30('0x33')],_0x19a4f1);}return _0x45e9e2['sobject'](_0x3f30('0x38'))[_0x3f30('0x23')](_0x1098e3,_0xcc428f)[_0x3f30('0x34')]()[_0x3f30('0x24')](function(_0x1b8a78){if(_0x1b8a78&&_0x1b8a78[_0x3f30('0x25')]){return _0x1b8a78;}else{var _0x5afd51=_[_0x3f30('0x30')](_0x4d9b46);if(_0x4f01d0[_0x3f30('0x31')]){var _0x584128={};_0x584128[_0x4f01d0[_0x3f30('0x31')]]=_0x471a66;_[_0x3f30('0x32')](_0x5afd51[_0x3f30('0x33')],_0x584128);}return _0x45e9e2[_0x3f30('0x1f')]('Contact')[_0x3f30('0x23')](_0x5afd51,_0xcc428f)[_0x3f30('0x24')](function(_0xa4c960){if(_0xa4c960&&_0xa4c960[_0x3f30('0x25')]){return _0xa4c960;}else{var _0x38782d=_[_0x3f30('0x30')](_0x4d9b46);if(_0x4f01d0['additionalSearchLead']){var _0x1a504c={};_0x1a504c[_0x4f01d0['additionalSearchLead']]=_0x471a66;_['merge'](_0x38782d[_0x3f30('0x33')],_0x1a504c);}return _0x45e9e2[_0x3f30('0x1f')]('Lead')[_0x3f30('0x23')](_0x38782d,_0xcc428f);}});}});case _0x3f30('0x17'):var _0x2237e8=_[_0x3f30('0x30')](_0x4d9b46);if(_0x4f01d0[_0x3f30('0x31')]){var _0x19a4f1={};_0x19a4f1[_0x4f01d0[_0x3f30('0x31')]]=_0x471a66;_[_0x3f30('0x32')](_0x2237e8[_0x3f30('0x33')],_0x19a4f1);}return _0x45e9e2[_0x3f30('0x1f')](_0x3f30('0x39'))['find'](_0x2237e8,_0xcc428f)[_0x3f30('0x34')]();case _0x3f30('0x1c'):var _0x5ec666=_[_0x3f30('0x30')](_0x4d9b46);if(_0x4f01d0[_0x3f30('0x35')]){var _0x19a4f1={};_0x19a4f1[_0x4f01d0['additionalSearchLead']]=_0x471a66;_[_0x3f30('0x32')](_0x5ec666[_0x3f30('0x33')],_0x19a4f1);}return _0x45e9e2['sobject']('Lead')[_0x3f30('0x23')](_0x5ec666,_0xcc428f);case _0x3f30('0x18'):var _0x1098e3=_[_0x3f30('0x30')](_0x4d9b46);if(_0x4f01d0[_0x3f30('0x37')]){var _0x19a4f1={};_0x19a4f1[_0x4f01d0[_0x3f30('0x37')]]=_0x471a66;_[_0x3f30('0x32')](_0x1098e3[_0x3f30('0x33')],_0x19a4f1);}return _0x45e9e2[_0x3f30('0x1f')]('Account')['find'](_0x1098e3,_0xcc428f);default:return null;}})[_0x3f30('0x24')](function(_0x5128d0){if(_0x5128d0&&_0x5128d0[_0x3f30('0x25')]){var _0x74ba71=_[_0x3f30('0x3a')](_0x5128d0);if(_0x74ba71){return BPromise['resolve']({'id':_0x74ba71['Id'],'name':_0x74ba71[_0x3f30('0x3b')],'phone':_0x74ba71[_0x3f30('0x3c')],'endUserType':_0x74ba71[_0x3f30('0x3d')][_0x3f30('0x3e')][_0x3f30('0x3f')]()});}}})['then'](function(_0x1a880f){if(_0x1a880f){logger[_0x3f30('0x27')](_0x3f30('0x40'),_0x1a880f[_0x3f30('0x16')],_0x471a66);return BPromise[_0x3f30('0x2a')](_0x1a880f);}else{logger[_0x3f30('0x27')](_0x3f30('0x41'),_0x471a66);var _0xb66c2={'Phone':_0x471a66};if(_0x4f01d0['moduleCreate']){if(_0x4f01d0[_0x3f30('0x42')]===_0x3f30('0x17')){logger['info'](_0x3f30('0x43'),_0x471a66,_0x4f01d0['moduleCreate']);_0xb66c2[_0x3f30('0x44')]=_0x104651!==_0x3f30('0x45')?_0x104651:util[_0x3f30('0x46')](_0x3f30('0x47'),_0x471a66);}else if(_0x4f01d0['moduleCreate']===_0x3f30('0x1c')){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x471a66,_0x4f01d0['moduleCreate']);_0xb66c2[_0x3f30('0x44')]=_0x104651!==_0x3f30('0x45')?_0x104651:util[_0x3f30('0x46')](_0x3f30('0x47'),_0x471a66);_0xb66c2[_0x3f30('0x48')]=_0x3f30('0x49');}else if(_0x4f01d0[_0x3f30('0x42')]==='account'){logger[_0x3f30('0x27')](_0x3f30('0x43'),_0x471a66,_0x4f01d0['moduleCreate']);_0xb66c2[_0x3f30('0x3b')]=_0x104651!==_0x3f30('0x45')?_0x104651:util[_0x3f30('0x46')](_0x3f30('0x47'),_0x471a66);}else{return null;}}return _0x45e9e2[_0x3f30('0x1f')](_[_0x3f30('0x4a')](_0x4f01d0[_0x3f30('0x42')]))[_0x3f30('0x20')](_0xb66c2)[_0x3f30('0x24')](function(_0x467551){return BPromise['resolve']({'id':_0x467551['id'],'endUserType':_0x4f01d0[_0x3f30('0x42')]});});}});}function getCustomFields(_0x1f639a,_0x31475a){var _0x129ad6={};if(_0x1f639a[_0x3f30('0x25')]>0x0){_['forEach'](_0x1f639a,function(_0x50fa57){if(_[_0x3f30('0x4b')]([_0x3f30('0x4c'),_0x3f30('0x4d')],_0x50fa57[_0x3f30('0x3e')])&&_0x50fa57[_0x3f30('0x4e')]){_0x129ad6[_0x50fa57[_0x3f30('0x4e')]]=_0x50fa57['content'][_0x3f30('0x4f')]();}else if(_0x50fa57['type']===_0x3f30('0x50')&&_0x50fa57['variableName']&&_0x50fa57[_0x3f30('0x4e')]){_0x31475a[_0x50fa57['variableName']]&&(_0x129ad6[_0x50fa57[_0x3f30('0x4e')]]=_0x31475a[_0x50fa57[_0x3f30('0x51')]][_0x3f30('0x4f')]());}else if(_0x50fa57[_0x3f30('0x3e')]==='customVariable'&&_0x50fa57[_0x3f30('0x52')]&&_0x50fa57[_0x3f30('0x52')][_0x3f30('0x53')]&&_0x50fa57[_0x3f30('0x4e')]){_0x31475a[_0x50fa57['Variable']['name'][_0x3f30('0x3f')]()]&&(_0x129ad6[_0x50fa57[_0x3f30('0x4e')]]=_0x31475a[_0x50fa57['Variable'][_0x3f30('0x53')][_0x3f30('0x3f')]()][_0x3f30('0x4f')]());}});}return _0x129ad6;}function getConnection(_0x5e0cb7){var _0x5a9d80=_0x5e0cb7[_0x3f30('0x54')][_0x3f30('0x55')](_0x5e0cb7[_0x3f30('0x56')]);var _0x12c047=new jsforce[(_0x3f30('0x57'))]({'oauth2':{'loginUrl':_0x5e0cb7['remoteUri']||_0x3f30('0x58'),'clientId':_0x5e0cb7[_0x3f30('0x59')],'clientSecret':_0x5e0cb7[_0x3f30('0x5a')]}});return _0x12c047[_0x3f30('0x5b')](_0x5e0cb7[_0x3f30('0x5c')],_0x5a9d80)[_0x3f30('0x24')](function(){logger[_0x3f30('0x27')]('Connection\x20established.');return _0x12c047;});}exports[_0x3f30('0x5d')]=function(_0x74a138,_0x4e9e0f,_0xbca709,_0x210b99,_0x3e4c58,_0xe7f491){var _0x18692f,_0x3bc9f0,_0x3f8ae7,_0x512575;_0xe7f491[_0x3f30('0x5e')]=intUtil[_0x3f30('0x5f')](_0xe7f491[_0x3f30('0x5e')]);_0xe7f491[_0x3f30('0x60')]=intUtil['stripTrailingSlash'](_0xe7f491['remoteUri']);if(_0x3e4c58&&_0x3e4c58[_0x3f30('0x61')]){logger['info'](_0x3f30('0x62'),_0x3f30('0x63'));_0x4e9e0f[_0x3f30('0x64')]=util['format'](_0x3f30('0x65'),_0xe7f491[_0x3f30('0x5e')],_0x4e9e0f[_0x3f30('0x66')],md5(_0x4e9e0f['uniqueid']));}else{_0x4e9e0f['recordingURL']='';}return getConnection(_0xe7f491)['then'](function(_0x3c497c){_0x512575=_0x3c497c;return getUser(_0xe7f491,_0x210b99['email'],_0x512575);})['then'](function(_0x328254){_0x18692f=_0x328254;return getEndUser(_0xe7f491,_0xbca709,_0x4e9e0f[_0x3f30('0x67')],_0x4e9e0f['calleridnum'],_0x512575);})[_0x3f30('0x24')](function(_0xa4955){_0x3bc9f0=_0xa4955;return getTicket(_0xe7f491,_0x18692f,_0x3bc9f0,_0xbca709,_0x4e9e0f,_0xbca709['Fields'],_0x512575,_0x3f30('0x5d'));})[_0x3f30('0x24')](function(_0x11cd28){_0x3f8ae7=_0x11cd28;logger[_0x3f30('0x27')](_0x3f30('0x68'),_0x3f8ae7['id']);logger[_0x3f30('0x27')]('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x3f8ae7['id'],_0x210b99['name'],_0xe7f491[_0x3f30('0x3e')]);switch(_0xe7f491[_0x3f30('0x3e')]){case'integrationTab':emit(util[_0x3f30('0x46')](_0x3f30('0x69'),_0x210b99[_0x3f30('0x53')]),_0x3f30('0x6a'),{'recordId':_0x3f8ae7['id']});break;case _0x3f30('0x6b'):emit(util[_0x3f30('0x46')](_0x3f30('0x69'),_0x210b99['name']),'trigger:browser:url',{'uri':util[_0x3f30('0x46')](_0x3f30('0x6c'),_0x512575[_0x3f30('0x6d')],_0x3f8ae7['id'])});break;default:logger['error'](_0x3f30('0x6e'));}})['catch'](function(_0x50a245){logger['error'](_0x3f30('0x62'),_0x50a245);});};exports[_0x3f30('0x6f')]=function(_0x52ff7b,_0xbd2c3e,_0x4c8a18,_0x7f06c,_0x2e6557,_0x235b78,_0x36fe83){var _0x4317fb,_0x3aabbe,_0x1b602c,_0x4f5f85;_0x235b78['serverUrl']=intUtil[_0x3f30('0x5f')](_0x235b78[_0x3f30('0x5e')]);_0x235b78[_0x3f30('0x60')]=intUtil[_0x3f30('0x5f')](_0x235b78['remoteUri']);if(_0x36fe83&&_0x36fe83[_0x3f30('0x70')]&&_0x36fe83[_0x3f30('0x70')]!==_0x3f30('0x71')){logger[_0x3f30('0x27')]('[OUTBOUND]',_0x3f30('0x63'));_0xbd2c3e[_0x3f30('0x64')]=util[_0x3f30('0x46')](_0x3f30('0x65'),_0x235b78[_0x3f30('0x5e')],_0xbd2c3e[_0x3f30('0x66')],md5(_0xbd2c3e[_0x3f30('0x66')]));}return getConnection(_0x235b78)[_0x3f30('0x24')](function(_0x52f0e0){_0x4f5f85=_0x52f0e0;return getUser(_0x235b78,_0x7f06c['email'],_0x4f5f85);})['then'](function(_0xdf738){_0x4317fb=_0xdf738;return getEndUser(_0x235b78,_0x4c8a18,_0xbd2c3e[_0x3f30('0x72')],_0xbd2c3e[_0x3f30('0x73')],_0x4f5f85);})[_0x3f30('0x24')](function(_0xb4d5d7){_0x3aabbe=_0xb4d5d7;return getTicket(_0x235b78,_0x4317fb,_0x3aabbe,_0x4c8a18,_0xbd2c3e,_0x4c8a18[_0x3f30('0x74')],_0x4f5f85,_0x3f30('0x6f'));})['then'](function(_0x16125a){_0x1b602c=_0x16125a;logger[_0x3f30('0x27')](_0x3f30('0x75'),_0x1b602c['id']);logger[_0x3f30('0x27')]('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x1b602c['id'],_0x7f06c['name'],_0x235b78[_0x3f30('0x3e')]);switch(_0x235b78[_0x3f30('0x3e')]){case _0x3f30('0x76'):emit(util[_0x3f30('0x46')]('user:%s',_0x7f06c['name']),_0x3f30('0x6a'),{'recordId':_0x1b602c['id']});break;case _0x3f30('0x6b'):emit(util['format'](_0x3f30('0x69'),_0x7f06c[_0x3f30('0x53')]),_0x3f30('0x77'),{'uri':util['format']('%s/%s/e',_0x4f5f85[_0x3f30('0x6d')],_0x1b602c['id'])});break;default:logger[_0x3f30('0x78')]('[OUTBOUND]',_0x3f30('0x79'));}})[_0x3f30('0x7a')](function(_0x12e12d){logger[_0x3f30('0x78')](_0x3f30('0x7b'),_0x12e12d);});};exports[_0x3f30('0x7c')]=function(_0x2df1da,_0x1ef2d3,_0x557756,_0x215eab,_0x5429e6,_0xbfca4d){var _0x457ee7,_0x47b821,_0x189dda,_0x199702;_0xbfca4d[_0x3f30('0x5e')]=intUtil[_0x3f30('0x5f')](_0xbfca4d[_0x3f30('0x5e')]);_0xbfca4d[_0x3f30('0x60')]=intUtil['stripTrailingSlash'](_0xbfca4d['remoteUri']);if(_0x5429e6&&_0x5429e6[_0x3f30('0x61')]){logger[_0x3f30('0x27')]('['+_0x1ef2d3[_0x3f30('0x7d')]['toUpperCase']()+']',_0x3f30('0x63'));_0x1ef2d3[_0x3f30('0x64')]=util[_0x3f30('0x46')](_0x3f30('0x65'),_0xbfca4d[_0x3f30('0x5e')],_0x1ef2d3[_0x3f30('0x66')],md5(_0x1ef2d3[_0x3f30('0x66')]));}else{_0x1ef2d3['recordingURL']='';}return getConnection(_0xbfca4d)[_0x3f30('0x24')](function(_0x4819b7){_0x199702=_0x4819b7;if(!_[_0x3f30('0x21')](_0x215eab)){return getUser(_0xbfca4d,_0x215eab[_0x3f30('0x53')],_0x199702);}else{return getUser(_0xbfca4d,null,_0x199702);}})[_0x3f30('0x24')](function(_0x179a24){_0x457ee7=_0x179a24;return getEndUser(_0xbfca4d,_0x557756,_0x1ef2d3['calleridname'],_0x1ef2d3[_0x3f30('0x7e')],_0x199702);})[_0x3f30('0x24')](function(_0x42f034){_0x47b821=_0x42f034;return getTicket(_0xbfca4d,_0x457ee7,_0x47b821,_0x557756,_0x1ef2d3,_0x557756[_0x3f30('0x74')],_0x199702);})[_0x3f30('0x24')](function(_0x461632){_0x189dda=_0x461632;logger[_0x3f30('0x27')]('['+_0x1ef2d3[_0x3f30('0x7d')][_0x3f30('0x7f')]()+']\x20Ticket\x20%s\x20created.',_0x189dda['id']);logger[_0x3f30('0x27')]('['+_0x1ef2d3[_0x3f30('0x7d')][_0x3f30('0x7f')]()+_0x3f30('0x80'),_0xbfca4d[_0x3f30('0x3e')]);})[_0x3f30('0x7a')](function(_0x3ba178){logger[_0x3f30('0x78')]('['+_0x1ef2d3[_0x3f30('0x7d')]['toUpperCase']()+']',_0x3ba178);});};
\ No newline at end of file
index 5b40665..539109f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4897=['assign','getString','Subjects','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20','push','all','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','format','emit','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','inspect','bluebird','request-promise','util','./util','../../../../config/environment','../../../../config/logger','redis','defaults','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','active','true','userId','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','adminEmail','],\x20createEndUser\x20input\x20crm','sys_user?','endUserNumber','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','customField','toString','idField','toLowerCase','content','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','POST','incident'];(function(_0x42ed70,_0x58b3ef){var _0x514049=function(_0x5c6d67){while(--_0x5c6d67){_0x42ed70['push'](_0x42ed70['shift']());}};_0x514049(++_0x58b3ef);}(_0x4897,0x1e9));var _0x7489=function(_0x1cab35,_0x54fb93){_0x1cab35=_0x1cab35-0x0;var _0x4dd55c=_0x4897[_0x1cab35];return _0x4dd55c;};'use strict';var _=require('lodash');var Promise=require(_0x7489('0x0'));var rp=require(_0x7489('0x1'));var util=require(_0x7489('0x2'));var md5=require('md5');var Redis=require('ioredis');var intUtil=require(_0x7489('0x3'));var config=require(_0x7489('0x4'));var logger=require(_0x7489('0x5'))('servicenow');config[_0x7489('0x6')]=_[_0x7489('0x7')](config[_0x7489('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x7489('0x8'))(new Redis(config['redis']));function getAdminUser(_0xaffd9f,_0x668d4c,_0x19f7b8,_0x306841,_0x12adc2,_0x11bc70){return new Promise(function(_0x50f895,_0x341d77){var _0x58b903={'method':_0x7489('0x9'),'uri':_0x306841+_0x7489('0xa')+'&'+_0x12adc2+'&'+_0x11bc70,'auth':_0x668d4c,'json':!![]};return rp(_0x58b903)[_0x7489('0xb')](function(_0x82cf75){if(_0x82cf75[_0x7489('0xc')][_0x7489('0xd')]>0x0){_0x19f7b8[_0x7489('0xe')]=_0x82cf75[_0x7489('0xc')][0x0][_0x7489('0xf')];}logger[_0x7489('0x10')]('['+[_0xaffd9f[_0x7489('0x11')]()]+_0x7489('0x12'),_0x19f7b8);_0x50f895(_0x19f7b8);})[_0x7489('0x13')](function(_0x3a3d75){logger[_0x7489('0x14')]('['+[_0xaffd9f[_0x7489('0x11')]()]+']',_0x3a3d75[_0x7489('0x15')]);_0x341d77(_0x3a3d75[_0x7489('0x15')]);});});}function getUser(_0x5a1ed4,_0x307e44,_0x354bfa,_0x139b06,_0x238bc0){return function(_0x1f9d65){logger[_0x7489('0x10')]('['+[_0x5a1ed4[_0x7489('0x11')]()]+_0x7489('0x16'),_0x1f9d65);return new Promise(function(_0x52d50b,_0x44a14c){if(intUtil['validateEmail'](_0x1f9d65[_0x7489('0x17')])){var _0x43cfac={'method':_0x7489('0x9'),'uri':_0x354bfa+_0x7489('0x18')+_0x1f9d65[_0x7489('0x17')]+'&'+_0x139b06+'&'+_0x238bc0,'auth':_0x307e44,'json':!![]};logger[_0x7489('0x10')]('['+[_0x5a1ed4['toUpperCase']()]+_0x7489('0x19'),_0x43cfac);return rp(_0x43cfac)['then'](function(_0x3aa5e2){logger[_0x7489('0x10')]('['+[_0x5a1ed4[_0x7489('0x11')]()]+'],\x20getUser\x20entity',_0x3aa5e2);if(_0x3aa5e2[_0x7489('0xc')][_0x7489('0xd')]>0x0&&String(_0x3aa5e2[_0x7489('0xc')][0x0][_0x7489('0x1a')])===_0x7489('0x1b')){_0x1f9d65['userId']=_0x3aa5e2[_0x7489('0xc')][0x0]['sys_id'];}else{_0x1f9d65[_0x7489('0x1c')]=_0x1f9d65[_0x7489('0xe')];_0x1f9d65[_0x7489('0x17')]=_0x1f9d65['adminEmail'];}logger['info']('['+[_0x5a1ed4[_0x7489('0x11')]()]+_0x7489('0x1d'),_0x1f9d65);_0x52d50b(_0x1f9d65);})['catch'](function(_0x24506b){logger[_0x7489('0x14')]('['+[_0x5a1ed4[_0x7489('0x11')]()]+']',_0x24506b[_0x7489('0x15')]);_0x44a14c(_0x24506b['message']);});}else{logger[_0x7489('0x10')]('['+[_0x5a1ed4[_0x7489('0x11')]()]+_0x7489('0x1e'));_0x1f9d65[_0x7489('0x1c')]=_0x1f9d65['adminId'];_0x1f9d65['userEmail']=_0x1f9d65[_0x7489('0x1f')];_0x52d50b(_0x1f9d65);}});};}function createEndUser(_0x585b5f,_0x4b5261,_0x5eeab9,_0x2b7138,_0x362b6c){logger[_0x7489('0x10')]('['+[_0x585b5f['toUpperCase']()]+_0x7489('0x20'),_0x5eeab9);return new Promise(function(_0x3bf9a7,_0x45df3a){var _0x46ade7={'method':'POST','uri':_0x2b7138+_0x7489('0x21')+_0x362b6c,'body':{'user_name':_0x5eeab9[_0x7489('0x22')],'roles':'user','first_name':_0x5eeab9[_0x7489('0x22')],'active':_0x7489('0x1b'),'date_format':_0x7489('0x23'),'phone':_0x5eeab9[_0x7489('0x22')]},'auth':_0x4b5261,'json':!![]};return rp(_0x46ade7)['then'](function(_0x16e71e){logger[_0x7489('0x10')]('['+[_0x585b5f['toUpperCase']()]+_0x7489('0x24'),_0x16e71e['result']);_0x5eeab9[_0x7489('0x25')]=_0x16e71e['result'][_0x7489('0xf')];_0x3bf9a7(_0x5eeab9);})[_0x7489('0x13')](function(_0x59789c){logger['error']('['+[_0x585b5f[_0x7489('0x11')]()]+']',_0x59789c['message']);_0x45df3a(_0x59789c[_0x7489('0x15')]);});});}function getEndUser(_0x2f4eaa,_0x334c98,_0x539c4d,_0xb95ff1,_0x105b5e){return function(_0x231768){logger[_0x7489('0x10')]('['+[_0x2f4eaa['toUpperCase']()]+_0x7489('0x26'),_0x231768);return new Promise(function(_0xf1df6c,_0x522abc){var _0x514cf0={'method':_0x7489('0x9'),'uri':_0x539c4d+_0x7489('0x27')+_0x231768[_0x7489('0x22')]+'&'+_0xb95ff1+'&'+_0x105b5e,'auth':_0x334c98,'json':!![]};return rp(_0x514cf0)['then'](function(_0x55381d){if(_0x55381d[_0x7489('0xc')]['length']>0x0){_0x231768['endUserId']=_0x55381d[_0x7489('0xc')][0x0][_0x7489('0xf')];logger['info']('['+[_0x2f4eaa[_0x7489('0x11')]()]+'],\x20getEndUser\x20crm',_0x231768);_0xf1df6c(_0x231768);}else{return createEndUser(_0x2f4eaa,_0x334c98,_0x231768,_0x539c4d,_0xb95ff1)[_0x7489('0xb')](function(_0x543bab){logger[_0x7489('0x10')]('['+[_0x2f4eaa[_0x7489('0x11')]()]+_0x7489('0x28'),_0x543bab);_0xf1df6c(_0x543bab);});}})[_0x7489('0x13')](function(_0x4e4873){logger[_0x7489('0x14')]('['+[_0x2f4eaa[_0x7489('0x11')]()]+']',_0x4e4873[_0x7489('0x15')]);_0x522abc(_0x4e4873[_0x7489('0x15')]);});});};}function getCustomFields(_0x3ad799,_0x272008){var _0x43a458={};if(_0x3ad799['length']>0x0){_[_0x7489('0x29')](_0x3ad799,function(_0x584292){if(_[_0x7489('0x2a')]([_0x7489('0x2b'),_0x7489('0x2c')],_0x584292[_0x7489('0x2d')])&&_0x584292[_0x7489('0x2e')]&&!_0x584292[_0x7489('0x2f')]){_0x43a458[_0x584292['nameField']['toLowerCase']()]=_0x584292['content'][_0x7489('0x30')]();}else if(_['includes']([_0x7489('0x2b'),_0x7489('0x2c')],_0x584292[_0x7489('0x2d')])&&_0x584292[_0x7489('0x31')]&&_0x584292['customField']){_0x43a458[_0x584292[_0x7489('0x31')][_0x7489('0x32')]()]=_0x584292[_0x7489('0x33')][_0x7489('0x30')]();}else if(_0x584292[_0x7489('0x2d')]===_0x7489('0x34')&&_0x584292['variableName']&&_0x584292[_0x7489('0x31')]&&_0x584292[_0x7489('0x2f')]){_0x43a458[_0x584292['idField'][_0x7489('0x32')]()]=_0x272008[_0x584292[_0x7489('0x35')]][_0x7489('0x30')]();}else if(_0x584292[_0x7489('0x2d')]===_0x7489('0x36')&&_0x584292['Variable']&&_0x584292[_0x7489('0x37')][_0x7489('0x38')]&&_0x584292[_0x7489('0x31')]&&_0x584292['customField']){_0x43a458[_0x584292[_0x7489('0x31')]['toLowerCase']()]=_0x272008[_0x584292['Variable'][_0x7489('0x38')][_0x7489('0x32')]()]['toString']();}});}return _0x43a458;}function getTicket(_0x432ea,_0x7e985c,_0x3c5e49,_0x329f62,_0x544eb4,_0x3474d3){return function(_0x3b1e8a){logger[_0x7489('0x10')]('['+[_0x432ea[_0x7489('0x11')]()]+_0x7489('0x39'),_0x3b1e8a);return new Promise(function(_0x484729,_0x42f038){var _0xf78d5e=_0x432ea[_0x7489('0x32')]()===_0x7489('0x3a')?_0x3b1e8a[_0x7489('0x1c')]:_0x3b1e8a[_0x7489('0x25')];var _0x29dc6e={'method':_0x7489('0x3b'),'uri':_0x3c5e49+_0x7489('0x3c')+'?'+_0x3474d3,'body':Object[_0x7489('0x3d')]({},{'active':_0x7489('0x1b'),'caller_id':_0xf78d5e,'assigned_to':_0x3b1e8a['userId'],'short_description':intUtil[_0x7489('0x3e')](_0x329f62[_0x7489('0x3f')],_0x544eb4,'\x20'),'description':intUtil[_0x7489('0x3e')](_0x329f62['Descriptions'],_0x544eb4,'\x0a')},getCustomFields(_0x329f62[_0x7489('0x40')],_0x544eb4)),'auth':_0x7e985c,'json':!![]};return rp(_0x29dc6e)[_0x7489('0xb')](function(_0x5cae27){logger[_0x7489('0x10')]('['+[_0x432ea['toUpperCase']()]+_0x7489('0x41'),_0x5cae27[_0x7489('0xc')]);_0x3b1e8a[_0x7489('0x42')]=_0x5cae27['result']['sys_id'];_0x3b1e8a[_0x7489('0x43')]=_0x5cae27['result'][_0x7489('0x44')];logger[_0x7489('0x10')]('['+[_0x432ea['toUpperCase']()]+_0x7489('0x45'),_0x3b1e8a);_0x484729(_0x3b1e8a);})[_0x7489('0x13')](function(_0x2293b4){logger[_0x7489('0x14')]('['+[_0x432ea[_0x7489('0x11')]()]+']',_0x2293b4[_0x7489('0x15')]);_0x42f038(_0x2293b4['message']);});});};}function createRemoteTag(_0x3732a3,_0x88a72a,_0x54f385,_0xd112aa){return new Promise(function(_0x2cb932,_0x17a710){var _0x78262={'method':_0x7489('0x3b'),'uri':_0x54f385+_0x7489('0x46')+'?'+_0xd112aa,'body':{'short_description':_0x3732a3,'global':!![],'active':!![],'name':_0x3732a3},'auth':_0x88a72a,'json':!![]};return rp(_0x78262)[_0x7489('0xb')](function(_0x267dad){var _0x4f6f38=_0x267dad['result'][_0x7489('0xf')];_0x2cb932(_0x4f6f38);});});}function getRemoteTag(_0x1cff68,_0x57c2f0,_0x44981c,_0xfccdff,_0xadeea2){return new Promise(function(_0x1caffc,_0x190d3c){var _0x3f16f4={'method':_0x7489('0x9'),'uri':_0x44981c+_0x7489('0x46')+_0x7489('0x47')+_0x1cff68+'&'+_0xfccdff,'auth':_0x57c2f0,'json':!![]};return rp(_0x3f16f4)['then'](function(_0x9c88da){if(_0x9c88da[_0x7489('0xc')][_0x7489('0xd')]>0x0){var _0x524b85=_0x9c88da[_0x7489('0xc')][0x0]['sys_id'];_0x1caffc(_0x524b85);}else{return createRemoteTag(_0x1cff68,_0x57c2f0,_0x44981c,_0xfccdff)['then'](function(_0x2e19ce){_0x1caffc(_0x2e19ce);});}});});}function assignTagToIncident(_0x1027f7,_0x135016,_0x3efd17,_0x325937,_0xd5f93e){return new Promise(function(_0x352323,_0x350f11){var _0x2116b0={'method':_0x7489('0x3b'),'uri':_0x3efd17+_0x7489('0x48')+'?'+_0xd5f93e,'body':{'label':_0x1027f7,'table':_0x7489('0x3c'),'id_type':_0x7489('0x49'),'table_key':_0x325937[_0x7489('0x42')],'title':_0x7489('0x4a')+_0x325937[_0x7489('0x43')],'id_display':_0x325937['ticketNumber']},'auth':_0x135016,'json':!![]};return rp(_0x2116b0)[_0x7489('0xb')](function(_0x200e5d){_0x352323();})['catch'](function(){_0x352323();});});}function manageTags(_0x585a28,_0x1de64e,_0x44e199,_0x3c391c,_0xeaaf8b,_0x424c10,_0x15288f){return new Promise(function(_0x1b9023,_0x1f83ad){var _0x24739a=[];_0x1de64e[_0x7489('0x29')](function(_0x2a707f){_0x24739a[_0x7489('0x4b')](getRemoteTag(_0x2a707f,_0x44e199,_0x3c391c,_0x424c10,_0x15288f));});return Promise[_0x7489('0x4c')](_0x24739a)[_0x7489('0xb')](function(_0x3423dc){if(_0x3423dc['length']){logger[_0x7489('0x10')]('['+[_0x585a28['toUpperCase']()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x3423dc);var _0x26b74c=[];_0x3423dc[_0x7489('0x29')](function(_0x5dcf2d){_0x26b74c['push'](assignTagToIncident(_0x5dcf2d,_0x44e199,_0x3c391c,_0xeaaf8b,_0x424c10));});return Promise[_0x7489('0x4c')](_0x26b74c)[_0x7489('0xb')](function(){_0x1b9023();})[_0x7489('0x13')](function(){_0x1b9023();});}else{_0x1b9023();}});});}function getTags(_0x1b2f30,_0x32cb6b,_0x3c0115,_0x1a2b49,_0xdcb38b,_0x469b9d){return function(_0x470144){return new Promise(function(_0x4e1108,_0x5ab06d){var _0x3d828f=[];var _0x24296c=_0x1a2b49['Tags'];if(_0x24296c&&_0x24296c['length']>0x0){_0x3d828f=_['map'](_0x24296c,_0x7489('0x38'));}if(_0x3d828f[_0x7489('0xd')]>0x0){return manageTags(_0x1b2f30,_0x3d828f,_0x32cb6b,_0x3c0115,_0x470144,_0xdcb38b,_0x469b9d)[_0x7489('0xb')](function(){_0x4e1108(_0x470144);});}else{_0x4e1108(_0x470144);}});};}function emit(_0x4eff0e,_0x171851,_0x54d283){var _0x30f68c=_0x7489('0x4d')+_0x7489('0x4e')+_0x7489('0x4f')+_0x7489('0x50');var _0x22f7da={'uri':_0x4eff0e+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x54d283+_0x30f68c};io['to'](util[_0x7489('0x51')]('user:%s',_0x171851))[_0x7489('0x52')](_0x7489('0x53'),_0x22f7da);}exports['cs']=function(_0xa02bdb,_0x454572,_0x2c5c20,_0xd22e6b,_0x217529,_0x25e772,_0x199fe0,_0x3e9091){var _0x338df3={};var _0x583224={'user':_0x25e772[_0x7489('0x54')],'pass':_0x25e772[_0x7489('0x55')]};var _0x4a55e4=_0x7489('0x56');var _0x2632c8=_0x7489('0x57');_0x25e772[_0x7489('0x58')]=intUtil[_0x7489('0x59')](_0x25e772[_0x7489('0x58')]);_0x25e772[_0x7489('0x5a')]=intUtil[_0x7489('0x59')](_0x25e772[_0x7489('0x5a')]);var _0x1264d9=util[_0x7489('0x51')](_0x7489('0x5b'),_0x25e772[_0x7489('0x58')]);_0x338df3[_0x7489('0x17')]=!_[_0x7489('0x5c')](_0xd22e6b)?_0xd22e6b[_0x7489('0x5d')]:null;_0x338df3[_0x7489('0x1f')]=_0x25e772['email'];_0x338df3[_0x7489('0x22')]=_0x3e9091[_0x7489('0x32')]()==='outbound'?_0x454572[_0x7489('0x5e')]:_0x454572[_0x7489('0x5f')];_0x338df3[_0x7489('0x60')]=_0x3e9091===_0x7489('0x61')||_0x3e9091===_0x7489('0x62')?_0x7489('0x61'):_0x7489('0x3a');var _0x16ae0d=util[_0x7489('0x51')](_0x7489('0x63'),_0x25e772[_0x7489('0x5a')],_0x454572[_0x7489('0x64')],md5(_0x454572['uniqueid']));if(_0x217529&&_0x217529['monitor_format']){logger[_0x7489('0x10')](_0x7489('0x65'),'Recording\x20is\x20enabled!');_0x454572['recordingURL']=_0x16ae0d;}else if(_0x199fe0&&_0x199fe0[_0x7489('0x66')]&&_0x199fe0['recordingFormat']!==_0x7489('0x67')){logger['info'](_0x7489('0x68'),_0x7489('0x69'));_0x454572['recordingURL']=_0x16ae0d;}else{_0x454572[_0x7489('0x6a')]='';}return getAdminUser(_0x3e9091,_0x583224,_0x338df3,_0x1264d9,_0x2632c8,_0x4a55e4)[_0x7489('0xb')](getUser(_0x3e9091,_0x583224,_0x1264d9,_0x2632c8,_0x4a55e4))[_0x7489('0xb')](getEndUser(_0x3e9091,_0x583224,_0x1264d9,_0x2632c8,_0x4a55e4))[_0x7489('0xb')](getTicket(_0x3e9091,_0x583224,_0x1264d9,_0x2c5c20,_0x454572,_0x2632c8))[_0x7489('0xb')](function(_0x2ee816){logger[_0x7489('0x10')](util[_0x7489('0x51')](_0x7489('0x6b'),_0x2ee816[_0x7489('0x42')]));logger[_0x7489('0x10')](util[_0x7489('0x51')]('call\x20direction:\x20%s',_0x3e9091));if(_0x3e9091!==_0x7489('0x62')){logger['info']('['+[_0x3e9091[_0x7489('0x11')]()]+']',_0x7489('0x6c'));emit(_0x25e772[_0x7489('0x58')],_0xd22e6b[_0x7489('0x38')],_0x2ee816['ticketId']);}})[_0x7489('0x13')](function(_0x2229bc){logger['error']('['+[_0x3e9091[_0x7489('0x11')]()]+']\x20Error\x20running\x20ServiceNow\x20integration',util[_0x7489('0x6d')](_0x2229bc,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xb02b=['recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','md5','ioredis','./util','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','then','result','adminId','sys_id','info','toUpperCase','catch','error','message','],\x20getUser\x20input\x20crm','userEmail','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','length','active','true','userId','],\x20getUser\x20crm','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','customField','content','toString','idField','variable','variableName','customVariable','Variable','toLowerCase','assign','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber',']\x20getTicket\x20crm','label','label_entry','incident','Incident','Incident\x20-\x20','push',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','all','Tags','map','name','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','emit','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','stripTrailingSlash','remoteUri','serverUrl','email','destcalleridnum','calleridnum','callDirection','queue','outbound','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL'];(function(_0xc2219,_0x3f4d02){var _0x5e2ffd=function(_0x4d4a7e){while(--_0x4d4a7e){_0xc2219['push'](_0xc2219['shift']());}};_0x5e2ffd(++_0x3f4d02);}(_0xb02b,0x1c1));var _0xbb02=function(_0x150dee,_0x784059){_0x150dee=_0x150dee-0x0;var _0x45fd19=_0xb02b[_0x150dee];return _0x45fd19;};'use strict';var _=require(_0xbb02('0x0'));var Promise=require(_0xbb02('0x1'));var rp=require(_0xbb02('0x2'));var util=require(_0xbb02('0x3'));var md5=require(_0xbb02('0x4'));var Redis=require(_0xbb02('0x5'));var intUtil=require(_0xbb02('0x6'));var config=require('../../../../config/environment');var logger=require(_0xbb02('0x7'))(_0xbb02('0x8'));config[_0xbb02('0x9')]=_[_0xbb02('0xa')](config['redis'],{'host':_0xbb02('0xb'),'port':0x18eb});var io=require(_0xbb02('0xc'))(new Redis(config[_0xbb02('0x9')]));function getAdminUser(_0x9ef12b,_0x1ac21a,_0x322649,_0x14e243,_0x1f702e,_0x243234){return new Promise(function(_0x2d019e,_0x1f8875){var _0x334951={'method':_0xbb02('0xd'),'uri':_0x14e243+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x1f702e+'&'+_0x243234,'auth':_0x1ac21a,'json':!![]};return rp(_0x334951)[_0xbb02('0xe')](function(_0x209597){if(_0x209597[_0xbb02('0xf')]['length']>0x0){_0x322649[_0xbb02('0x10')]=_0x209597[_0xbb02('0xf')][0x0][_0xbb02('0x11')];}logger[_0xbb02('0x12')]('['+[_0x9ef12b[_0xbb02('0x13')]()]+'],\x20getAdminUser\x20crm',_0x322649);_0x2d019e(_0x322649);})[_0xbb02('0x14')](function(_0x25423b){logger[_0xbb02('0x15')]('['+[_0x9ef12b[_0xbb02('0x13')]()]+']',_0x25423b[_0xbb02('0x16')]);_0x1f8875(_0x25423b[_0xbb02('0x16')]);});});}function getUser(_0x34af6e,_0x3341e8,_0x4681dc,_0x213740,_0x291a6b){return function(_0x3590ac){logger[_0xbb02('0x12')]('['+[_0x34af6e[_0xbb02('0x13')]()]+_0xbb02('0x17'),_0x3590ac);return new Promise(function(_0x1cd643,_0xa0c82a){if(intUtil['validateEmail'](_0x3590ac['userEmail'])){var _0xe50428={'method':_0xbb02('0xd'),'uri':_0x4681dc+'sys_user?sysparm_query=email%3D'+_0x3590ac[_0xbb02('0x18')]+'&'+_0x213740+'&'+_0x291a6b,'auth':_0x3341e8,'json':!![]};logger[_0xbb02('0x12')]('['+[_0x34af6e[_0xbb02('0x13')]()]+_0xbb02('0x19'),_0xe50428);return rp(_0xe50428)['then'](function(_0x19eb27){logger[_0xbb02('0x12')]('['+[_0x34af6e[_0xbb02('0x13')]()]+_0xbb02('0x1a'),_0x19eb27);if(_0x19eb27[_0xbb02('0xf')][_0xbb02('0x1b')]>0x0&&String(_0x19eb27['result'][0x0][_0xbb02('0x1c')])===_0xbb02('0x1d')){_0x3590ac[_0xbb02('0x1e')]=_0x19eb27[_0xbb02('0xf')][0x0]['sys_id'];}else{_0x3590ac[_0xbb02('0x1e')]=_0x3590ac[_0xbb02('0x10')];_0x3590ac[_0xbb02('0x18')]=_0x3590ac['adminEmail'];}logger[_0xbb02('0x12')]('['+[_0x34af6e[_0xbb02('0x13')]()]+_0xbb02('0x1f'),_0x3590ac);_0x1cd643(_0x3590ac);})[_0xbb02('0x14')](function(_0x46ca29){logger[_0xbb02('0x15')]('['+[_0x34af6e[_0xbb02('0x13')]()]+']',_0x46ca29['message']);_0xa0c82a(_0x46ca29[_0xbb02('0x16')]);});}else{logger[_0xbb02('0x12')]('['+[_0x34af6e[_0xbb02('0x13')]()]+']\x20using\x20admin\x20profile');_0x3590ac['userId']=_0x3590ac[_0xbb02('0x10')];_0x3590ac['userEmail']=_0x3590ac['adminEmail'];_0x1cd643(_0x3590ac);}});};}function createEndUser(_0x48706a,_0x450f64,_0x5a4b5b,_0x4c53de,_0x29fbe3){logger[_0xbb02('0x12')]('['+[_0x48706a[_0xbb02('0x13')]()]+_0xbb02('0x20'),_0x5a4b5b);return new Promise(function(_0x2fe400,_0xfcb7e0){var _0x37a5e9={'method':_0xbb02('0x21'),'uri':_0x4c53de+_0xbb02('0x22')+_0x29fbe3,'body':{'user_name':_0x5a4b5b[_0xbb02('0x23')],'roles':_0xbb02('0x24'),'first_name':_0x5a4b5b[_0xbb02('0x23')],'active':_0xbb02('0x1d'),'date_format':_0xbb02('0x25'),'phone':_0x5a4b5b[_0xbb02('0x23')]},'auth':_0x450f64,'json':!![]};return rp(_0x37a5e9)[_0xbb02('0xe')](function(_0x1662f8){logger[_0xbb02('0x12')]('['+[_0x48706a[_0xbb02('0x13')]()]+_0xbb02('0x26'),_0x1662f8['result']);_0x5a4b5b[_0xbb02('0x27')]=_0x1662f8[_0xbb02('0xf')][_0xbb02('0x11')];_0x2fe400(_0x5a4b5b);})[_0xbb02('0x14')](function(_0x1008cd){logger[_0xbb02('0x15')]('['+[_0x48706a['toUpperCase']()]+']',_0x1008cd[_0xbb02('0x16')]);_0xfcb7e0(_0x1008cd[_0xbb02('0x16')]);});});}function getEndUser(_0x2d6872,_0x4c11c0,_0x1332de,_0x35d6fe,_0xeb7d21){return function(_0x17db2c){logger[_0xbb02('0x12')]('['+[_0x2d6872[_0xbb02('0x13')]()]+_0xbb02('0x28'),_0x17db2c);return new Promise(function(_0x19af7d,_0xb66672){var _0x135838={'method':'GET','uri':_0x1332de+'sys_user?sysparm_query=phone%3D'+_0x17db2c[_0xbb02('0x23')]+'&'+_0x35d6fe+'&'+_0xeb7d21,'auth':_0x4c11c0,'json':!![]};return rp(_0x135838)[_0xbb02('0xe')](function(_0x2c8316){if(_0x2c8316['result'][_0xbb02('0x1b')]>0x0){_0x17db2c[_0xbb02('0x27')]=_0x2c8316[_0xbb02('0xf')][0x0]['sys_id'];logger[_0xbb02('0x12')]('['+[_0x2d6872[_0xbb02('0x13')]()]+'],\x20getEndUser\x20crm',_0x17db2c);_0x19af7d(_0x17db2c);}else{return createEndUser(_0x2d6872,_0x4c11c0,_0x17db2c,_0x1332de,_0x35d6fe)['then'](function(_0x14b4fc){logger['info']('['+[_0x2d6872[_0xbb02('0x13')]()]+_0xbb02('0x29'),_0x14b4fc);_0x19af7d(_0x14b4fc);});}})['catch'](function(_0x2b62df){logger['error']('['+[_0x2d6872['toUpperCase']()]+']',_0x2b62df['message']);_0xb66672(_0x2b62df[_0xbb02('0x16')]);});});};}function getCustomFields(_0xe25368,_0x4c9aee){var _0x218962={};if(_0xe25368['length']>0x0){_[_0xbb02('0x2a')](_0xe25368,function(_0x5c2c74){if(_[_0xbb02('0x2b')]([_0xbb02('0x2c'),_0xbb02('0x2d')],_0x5c2c74[_0xbb02('0x2e')])&&_0x5c2c74[_0xbb02('0x2f')]&&!_0x5c2c74[_0xbb02('0x30')]){_0x218962[_0x5c2c74[_0xbb02('0x2f')]['toLowerCase']()]=_0x5c2c74[_0xbb02('0x31')][_0xbb02('0x32')]();}else if(_[_0xbb02('0x2b')](['string',_0xbb02('0x2d')],_0x5c2c74['type'])&&_0x5c2c74[_0xbb02('0x33')]&&_0x5c2c74[_0xbb02('0x30')]){_0x218962[_0x5c2c74[_0xbb02('0x33')]['toLowerCase']()]=_0x5c2c74['content'][_0xbb02('0x32')]();}else if(_0x5c2c74[_0xbb02('0x2e')]===_0xbb02('0x34')&&_0x5c2c74[_0xbb02('0x35')]&&_0x5c2c74[_0xbb02('0x33')]&&_0x5c2c74[_0xbb02('0x30')]){_0x218962[_0x5c2c74[_0xbb02('0x33')]['toLowerCase']()]=_0x4c9aee[_0x5c2c74['variableName']][_0xbb02('0x32')]();}else if(_0x5c2c74['type']===_0xbb02('0x36')&&_0x5c2c74['Variable']&&_0x5c2c74[_0xbb02('0x37')]['name']&&_0x5c2c74['idField']&&_0x5c2c74[_0xbb02('0x30')]){_0x218962[_0x5c2c74['idField'][_0xbb02('0x38')]()]=_0x4c9aee[_0x5c2c74[_0xbb02('0x37')]['name'][_0xbb02('0x38')]()][_0xbb02('0x32')]();}});}return _0x218962;}function getTicket(_0xcec9da,_0x32eb92,_0x369312,_0x1bc3dd,_0x21ce91,_0x339248){return function(_0x118915){logger[_0xbb02('0x12')]('['+[_0xcec9da['toUpperCase']()]+']\x20getTicket\x20input\x20crm',_0x118915);return new Promise(function(_0x47e762,_0x54dc81){var _0x4384be=_0xcec9da[_0xbb02('0x38')]()==='outbound'?_0x118915[_0xbb02('0x1e')]:_0x118915[_0xbb02('0x27')];var _0x985d33={'method':_0xbb02('0x21'),'uri':_0x369312+'incident'+'?'+_0x339248,'body':Object[_0xbb02('0x39')]({},{'active':_0xbb02('0x1d'),'caller_id':_0x4384be,'assigned_to':_0x118915['userId'],'short_description':intUtil[_0xbb02('0x3a')](_0x1bc3dd['Subjects'],_0x21ce91,'\x20'),'description':intUtil['getString'](_0x1bc3dd[_0xbb02('0x3b')],_0x21ce91,'\x0a')},getCustomFields(_0x1bc3dd[_0xbb02('0x3c')],_0x21ce91)),'auth':_0x32eb92,'json':!![]};return rp(_0x985d33)[_0xbb02('0xe')](function(_0x4f6d3b){logger[_0xbb02('0x12')]('['+[_0xcec9da[_0xbb02('0x13')]()]+_0xbb02('0x3d'),_0x4f6d3b['result']);_0x118915[_0xbb02('0x3e')]=_0x4f6d3b[_0xbb02('0xf')][_0xbb02('0x11')];_0x118915[_0xbb02('0x3f')]=_0x4f6d3b['result']['number'];logger[_0xbb02('0x12')]('['+[_0xcec9da[_0xbb02('0x13')]()]+_0xbb02('0x40'),_0x118915);_0x47e762(_0x118915);})['catch'](function(_0x1bdfdd){logger[_0xbb02('0x15')]('['+[_0xcec9da[_0xbb02('0x13')]()]+']',_0x1bdfdd['message']);_0x54dc81(_0x1bdfdd[_0xbb02('0x16')]);});});};}function createRemoteTag(_0x19b461,_0x207598,_0x13747b,_0x112dc3){return new Promise(function(_0x34c2dd,_0x20a455){var _0x550a41={'method':_0xbb02('0x21'),'uri':_0x13747b+_0xbb02('0x41')+'?'+_0x112dc3,'body':{'short_description':_0x19b461,'global':!![],'active':!![],'name':_0x19b461},'auth':_0x207598,'json':!![]};return rp(_0x550a41)[_0xbb02('0xe')](function(_0x2eaa3b){var _0x306788=_0x2eaa3b[_0xbb02('0xf')][_0xbb02('0x11')];_0x34c2dd(_0x306788);});});}function getRemoteTag(_0x5a0f87,_0x57edcd,_0xe7db0c,_0x36664a,_0x161f0e){return new Promise(function(_0x29aa10,_0x501cb2){var _0x1db401={'method':_0xbb02('0xd'),'uri':_0xe7db0c+'label'+'?sysparm_query=name%3D'+_0x5a0f87+'&'+_0x36664a,'auth':_0x57edcd,'json':!![]};return rp(_0x1db401)[_0xbb02('0xe')](function(_0x4f9dae){if(_0x4f9dae[_0xbb02('0xf')][_0xbb02('0x1b')]>0x0){var _0x59cc9b=_0x4f9dae[_0xbb02('0xf')][0x0][_0xbb02('0x11')];_0x29aa10(_0x59cc9b);}else{return createRemoteTag(_0x5a0f87,_0x57edcd,_0xe7db0c,_0x36664a)[_0xbb02('0xe')](function(_0x437dc8){_0x29aa10(_0x437dc8);});}});});}function assignTagToIncident(_0x5876b2,_0x4d8b83,_0x327e4c,_0x4d2317,_0x2e7f71){return new Promise(function(_0x2e8fb1,_0x17d592){var _0x4697e0={'method':_0xbb02('0x21'),'uri':_0x327e4c+_0xbb02('0x42')+'?'+_0x2e7f71,'body':{'label':_0x5876b2,'table':_0xbb02('0x43'),'id_type':_0xbb02('0x44'),'table_key':_0x4d2317[_0xbb02('0x3e')],'title':_0xbb02('0x45')+_0x4d2317['ticketNumber'],'id_display':_0x4d2317[_0xbb02('0x3f')]},'auth':_0x4d8b83,'json':!![]};return rp(_0x4697e0)['then'](function(_0xf2dc75){_0x2e8fb1();})[_0xbb02('0x14')](function(){_0x2e8fb1();});});}function manageTags(_0x35dde6,_0x1037d6,_0x50a8fa,_0x5247b6,_0x547e1f,_0x16ef7e,_0x4eb477){return new Promise(function(_0x56e2ed,_0x3966ce){var _0x15b78f=[];_0x1037d6[_0xbb02('0x2a')](function(_0x5060e4){_0x15b78f[_0xbb02('0x46')](getRemoteTag(_0x5060e4,_0x50a8fa,_0x5247b6,_0x16ef7e,_0x4eb477));});return Promise['all'](_0x15b78f)['then'](function(_0x48bf0c){if(_0x48bf0c[_0xbb02('0x1b')]){logger[_0xbb02('0x12')]('['+[_0x35dde6[_0xbb02('0x13')]()]+_0xbb02('0x47'),_0x48bf0c);var _0x32fcda=[];_0x48bf0c[_0xbb02('0x2a')](function(_0x2f3dc1){_0x32fcda[_0xbb02('0x46')](assignTagToIncident(_0x2f3dc1,_0x50a8fa,_0x5247b6,_0x547e1f,_0x16ef7e));});return Promise[_0xbb02('0x48')](_0x32fcda)[_0xbb02('0xe')](function(){_0x56e2ed();})['catch'](function(){_0x56e2ed();});}else{_0x56e2ed();}});});}function getTags(_0xc7a88,_0x329207,_0x4fa1a8,_0x29f157,_0x1f8072,_0x376afb){return function(_0x25edd9){return new Promise(function(_0x322fe4,_0x9b06e6){var _0x27f77b=[];var _0x48042f=_0x29f157[_0xbb02('0x49')];if(_0x48042f&&_0x48042f[_0xbb02('0x1b')]>0x0){_0x27f77b=_[_0xbb02('0x4a')](_0x48042f,_0xbb02('0x4b'));}if(_0x27f77b[_0xbb02('0x1b')]>0x0){return manageTags(_0xc7a88,_0x27f77b,_0x329207,_0x4fa1a8,_0x25edd9,_0x1f8072,_0x376afb)['then'](function(){_0x322fe4(_0x25edd9);});}else{_0x322fe4(_0x25edd9);}});};}function emit(_0x4fd9ab,_0x2c8545,_0x37a58c){var _0x59da71='%26sysparm_record_target%3Dincident'+_0xbb02('0x4c')+_0xbb02('0x4d')+_0xbb02('0x4e');var _0x107080={'uri':_0x4fd9ab+_0xbb02('0x4f')+_0x37a58c+_0x59da71};io['to'](util[_0xbb02('0x50')]('user:%s',_0x2c8545))[_0xbb02('0x51')](_0xbb02('0x52'),_0x107080);}exports['cs']=function(_0x1184dd,_0x17ab52,_0xa1abbc,_0x36bd3b,_0x30455e,_0x67cf77,_0x531fec,_0xc138a7){var _0x3e1563={};var _0x245fa0={'user':_0x67cf77[_0xbb02('0x53')],'pass':_0x67cf77[_0xbb02('0x54')]};var _0x16397d=_0xbb02('0x55');var _0x520966=_0xbb02('0x56');_0x67cf77['remoteUri']=intUtil[_0xbb02('0x57')](_0x67cf77[_0xbb02('0x58')]);_0x67cf77['serverUrl']=intUtil[_0xbb02('0x57')](_0x67cf77[_0xbb02('0x59')]);var _0xe0596b=util[_0xbb02('0x50')]('%s/api/now/table/',_0x67cf77[_0xbb02('0x58')]);_0x3e1563['userEmail']=!_['isNil'](_0x36bd3b)?_0x36bd3b[_0xbb02('0x5a')]:null;_0x3e1563['adminEmail']=_0x67cf77['email'];_0x3e1563[_0xbb02('0x23')]=_0xc138a7[_0xbb02('0x38')]()==='outbound'?_0x17ab52[_0xbb02('0x5b')]:_0x17ab52[_0xbb02('0x5c')];_0x3e1563[_0xbb02('0x5d')]=_0xc138a7===_0xbb02('0x5e')||_0xc138a7==='unmanaged'?'queue':_0xbb02('0x5f');var _0x25b8ca=util[_0xbb02('0x50')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x67cf77['serverUrl'],_0x17ab52[_0xbb02('0x60')],md5(_0x17ab52[_0xbb02('0x60')]));if(_0x30455e&&_0x30455e[_0xbb02('0x61')]){logger['info'](_0xbb02('0x62'),_0xbb02('0x63'));_0x17ab52[_0xbb02('0x64')]=_0x25b8ca;}else if(_0x531fec&&_0x531fec['recordingFormat']&&_0x531fec[_0xbb02('0x65')]!==_0xbb02('0x66')){logger[_0xbb02('0x12')](_0xbb02('0x67'),_0xbb02('0x63'));_0x17ab52[_0xbb02('0x64')]=_0x25b8ca;}else{_0x17ab52['recordingURL']='';}return getAdminUser(_0xc138a7,_0x245fa0,_0x3e1563,_0xe0596b,_0x520966,_0x16397d)[_0xbb02('0xe')](getUser(_0xc138a7,_0x245fa0,_0xe0596b,_0x520966,_0x16397d))[_0xbb02('0xe')](getEndUser(_0xc138a7,_0x245fa0,_0xe0596b,_0x520966,_0x16397d))[_0xbb02('0xe')](getTicket(_0xc138a7,_0x245fa0,_0xe0596b,_0xa1abbc,_0x17ab52,_0x520966))[_0xbb02('0xe')](function(_0x4cdb6b){logger[_0xbb02('0x12')](util[_0xbb02('0x50')](_0xbb02('0x68'),_0x4cdb6b['ticketId']));logger[_0xbb02('0x12')](util[_0xbb02('0x50')](_0xbb02('0x69'),_0xc138a7));if(_0xc138a7!==_0xbb02('0x6a')){logger['info']('['+[_0xc138a7[_0xbb02('0x13')]()]+']',_0xbb02('0x6b'));emit(_0x67cf77['remoteUri'],_0x36bd3b['name'],_0x4cdb6b[_0xbb02('0x3e')]);}})[_0xbb02('0x14')](function(_0x18a058){logger[_0xbb02('0x15')]('['+[_0xc138a7[_0xbb02('0x13')]()]+_0xbb02('0x6c'),util[_0xbb02('0x6d')](_0x18a058,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 4a682b2..05fd525 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa1c=['Account\x20%d\x20is\x20not\x20valid','Calls','queue','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','calleridname','calleridnum','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','outbound','recordingFormat','none','Recording\x20is\x20enabled!','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Outbound','charAt','[OUTBOUND]','unmanaged','lastevent','toUpperCase','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/logger','sugarcrm','redis','localhost','socket.io-emitter','POST','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','created_by','description','date_start','toISOString','slice','replace','duration_hours','duration_minutes','parent_type','parent_name','direction','length','forEach','push','variableName','set_entry','JSON','format','Basic\x20%s','apiKey','toString','base64','get_server_info','stringify','info','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','find','name_value_list','value','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','resolve','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','<unknown>','Caller\x20-\x20%s','first_name','debug','string','nameField','toLowerCase','content','type','customField','custom_fields','idField','variable','customVariable','Variable','login','xCALLY\x20Motion\x20integration'];(function(_0x3064a7,_0x4efd7a){var _0x85d813=function(_0x277ccb){while(--_0x277ccb){_0x3064a7['push'](_0x3064a7['shift']());}};_0x85d813(++_0x4efd7a);}(_0xaa1c,0x196));var _0xcaa1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xaa1c[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xcaa1('0x0'));var rp=require(_0xcaa1('0x1'));var BPromise=require(_0xcaa1('0x2'));var md5=require('md5');var util=require(_0xcaa1('0x3'));var Redis=require(_0xcaa1('0x4'));var intUtil=require(_0xcaa1('0x5'));var config=require('../../../../config/environment');var logger=require(_0xcaa1('0x6'))(_0xcaa1('0x7'));config[_0xcaa1('0x8')]=_['defaults'](config[_0xcaa1('0x8')],{'host':_0xcaa1('0x9'),'port':0x18eb});var io=require(_0xcaa1('0xa'))(new Redis(config['redis']));var def={'method':_0xcaa1('0xb'),'json':!![]};function emit(_0x4e4c54,_0x23f0aa,_0x390d72){io['to'](_0x4e4c54)['emit'](_0x23f0aa,_0x390d72);}function getTicket(_0x3b3627,_0x1ffe57,_0x3ca8f7,_0x5f4b21,_0x8d08aa,_0x527124,_0x3f61c0,_0xf681dd){logger['info'](_0xcaa1('0xc'));var _0x28524c=new Date();var _0x53f144=[{'name':_0xcaa1('0xd'),'value':intUtil[_0xcaa1('0xe')](_0x5f4b21[_0xcaa1('0xf')],_0x8d08aa,'\x20')},{'name':_0xcaa1('0x10'),'value':_0x1ffe57['id']},{'name':_0xcaa1('0x11'),'value':_0x1ffe57['id']},{'name':_0xcaa1('0x12'),'value':intUtil[_0xcaa1('0xe')](_0x5f4b21['Descriptions'],_0x8d08aa,'\x0a')},{'name':_0xcaa1('0x13'),'value':_0x28524c[_0xcaa1('0x14')]()[_0xcaa1('0x15')](0x0,0x13)[_0xcaa1('0x16')]('T','\x20')},{'name':_0xcaa1('0x17'),'value':'0'},{'name':_0xcaa1('0x18'),'value':'15'},{'name':'parent_id','value':_0x3ca8f7['id']},{'name':_0xcaa1('0x19'),'value':'Contacts'},{'name':_0xcaa1('0x1a'),'value':_0x3ca8f7[_0xcaa1('0xd')]},{'name':_0xcaa1('0x1b'),'value':_0xf681dd}];if(_0x527124[_0xcaa1('0x1c')]){_[_0xcaa1('0x1d')](_0x527124,function(_0x59c550){if(_0x8d08aa[_0x59c550['variableName']]){_0x53f144[_0xcaa1('0x1e')]({'name':_0x59c550['idField'],'value':_0x8d08aa[_0x59c550[_0xcaa1('0x1f')]]});}});}return request({'form':{'method':_0xcaa1('0x20'),'input_type':_0xcaa1('0x21'),'response_type':_0xcaa1('0x21'),'rest_data':JSON['stringify']({'session':_0x3f61c0['id'],'module_name':'Calls','name_value_list':_0x53f144})}});}function getAuth(_0x58f11a){return util[_0xcaa1('0x22')](_0xcaa1('0x23'),new Buffer(_0x58f11a[_0xcaa1('0x24')]+':X')[_0xcaa1('0x25')](_0xcaa1('0x26')));}function getServerInfo(_0x56457f){return request({'form':{'method':_0xcaa1('0x27'),'input_type':_0xcaa1('0x21'),'response_type':_0xcaa1('0x21'),'rest_data':JSON[_0xcaa1('0x28')]({'session':_0x56457f['id']})}});}function getUser(_0x584ced,_0x20f693,_0x13002b){if(!_['isNil'](_0x20f693)){logger[_0xcaa1('0x29')](_0xcaa1('0x2a'),_0x20f693);return request({'form':{'method':_0xcaa1('0x2b'),'input_type':_0xcaa1('0x21'),'response_type':_0xcaa1('0x21'),'rest_data':JSON[_0xcaa1('0x28')]({'session':_0x13002b['id'],'module_name':_0xcaa1('0x2c'),'query':util['format'](_0xcaa1('0x2d'),_0x20f693),'order_by':'','offset':'0','select_fields':['id',_0xcaa1('0xd'),_0xcaa1('0x2e')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xcaa1('0x2f')](function(_0x57ca0d){if(_0x57ca0d[_0xcaa1('0x30')][_0xcaa1('0x1c')]){var _0x4f34b7=_[_0xcaa1('0x31')](_0x57ca0d[_0xcaa1('0x30')],function(_0x1c2ce3){return _0x1c2ce3[_0xcaa1('0x32')][_0xcaa1('0x2e')]['value']===_0x20f693;});if(_0x4f34b7){logger[_0xcaa1('0x29')]('Agent\x20found!');return BPromise['resolve']({'id':_0x4f34b7[_0xcaa1('0x32')]['id'][_0xcaa1('0x33')],'name':_0x4f34b7['name_value_list'][_0xcaa1('0xd')]['value']});}}logger[_0xcaa1('0x29')](_0xcaa1('0x34'));return BPromise[_0xcaa1('0x35')]({'id':_0x13002b[_0xcaa1('0x32')][_0xcaa1('0x36')][_0xcaa1('0x33')],'name':_0x13002b[_0xcaa1('0x32')]['user_name'][_0xcaa1('0x33')]});});}else{logger[_0xcaa1('0x29')](_0xcaa1('0x37'));return BPromise[_0xcaa1('0x35')]({'id':_0x13002b[_0xcaa1('0x32')][_0xcaa1('0x36')][_0xcaa1('0x33')],'name':_0x13002b[_0xcaa1('0x32')]['user_name'][_0xcaa1('0x33')]});}}function getEndUser(_0x2e891b,_0x5e5bd4,_0x475607,_0x2687f1){logger[_0xcaa1('0x29')](_0xcaa1('0x38'),_0x475607);return request({'form':{'method':_0xcaa1('0x2b'),'input_type':_0xcaa1('0x21'),'response_type':'JSON','rest_data':JSON[_0xcaa1('0x28')]({'session':_0x2687f1['id'],'module_name':'Contacts','query':util[_0xcaa1('0x22')]('contacts.phone_home\x20=\x20\x22%s\x22',_0x475607),'order_by':'','offset':'0','select_fields':['id','name',_0xcaa1('0x39')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xcaa1('0x2f')](function(_0x1d5615){if(_0x1d5615['entry_list']['length']){var _0x534c78=_[_0xcaa1('0x31')](_0x1d5615[_0xcaa1('0x30')],function(_0x2fda3){return _0x2fda3[_0xcaa1('0x32')][_0xcaa1('0x39')][_0xcaa1('0x33')]===_0x475607;});if(_0x534c78){logger[_0xcaa1('0x29')](_0xcaa1('0x3a'));return BPromise[_0xcaa1('0x35')]({'id':_0x534c78[_0xcaa1('0x32')]['id'][_0xcaa1('0x33')],'name':_0x534c78[_0xcaa1('0x32')][_0xcaa1('0xd')][_0xcaa1('0x33')],'phone':_0x534c78[_0xcaa1('0x32')][_0xcaa1('0x39')][_0xcaa1('0x33')]});}}else{logger[_0xcaa1('0x29')](_0xcaa1('0x3b'));return request({'form':{'method':'set_entry','input_type':_0xcaa1('0x21'),'response_type':'JSON','rest_data':JSON[_0xcaa1('0x28')]({'session':_0x2687f1['id'],'module_name':_0xcaa1('0x3c'),'name_value_list':[{'name':'first_name','value':_0x5e5bd4!==_0xcaa1('0x3d')?_0x5e5bd4:util[_0xcaa1('0x22')](_0xcaa1('0x3e'),_0x475607)},{'name':_0xcaa1('0x39'),'value':_0x475607}]})}})[_0xcaa1('0x2f')](function(_0x546a5e){logger[_0xcaa1('0x29')]('Enduser\x20created.');return BPromise['resolve']({'id':_0x546a5e['id'],'name':_0x546a5e['entry_list'][_0xcaa1('0x3f')][_0xcaa1('0x33')],'phone':_0x546a5e['entry_list'][_0xcaa1('0x39')]['value']});});}});}function request(_0x2e7891){logger[_0xcaa1('0x40')]('[HTTP]',JSON[_0xcaa1('0x28')](_0x2e7891));return rp(_['merge'](def,_0x2e7891));}function getTags(_0x5325ea,_0x28e7ce){var _0x4b07f8=[];if(_0x5325ea&&_0x5325ea['length']>0x0){_0x4b07f8=_['map'](_0x5325ea,_0x28e7ce);}return _0x4b07f8;}function getCustomFields(_0x1cc5e1,_0x2eb305){var _0x313147=[];var _0xb94d1d={'custom_fields':[]};if(_0x1cc5e1['length']>0x0){_[_0xcaa1('0x1d')](_0x1cc5e1,function(_0x200d44){if(_0x200d44['type']===_0xcaa1('0x41')&&_0x200d44['nameField']&&!_0x200d44['customField']){_0xb94d1d[_0x200d44[_0xcaa1('0x42')][_0xcaa1('0x43')]()]=_0x200d44[_0xcaa1('0x44')][_0xcaa1('0x25')]();}else if(_0x200d44[_0xcaa1('0x45')]===_0xcaa1('0x41')&&_0x200d44['idField']&&_0x200d44[_0xcaa1('0x46')]){_0xb94d1d[_0xcaa1('0x47')][_0xcaa1('0x1e')]({'id':_0x200d44[_0xcaa1('0x48')],'value':_0x200d44[_0xcaa1('0x44')][_0xcaa1('0x25')]()});}else if(_0x200d44['type']===_0xcaa1('0x49')&&_0x200d44[_0xcaa1('0x1f')]&&_0x200d44[_0xcaa1('0x48')]&&_0x200d44[_0xcaa1('0x46')]){_0x2eb305[_0x200d44[_0xcaa1('0x1f')]]&&_0xb94d1d[_0xcaa1('0x47')]['push']({'id':_0x200d44['idField'],'value':_0x2eb305[_0x200d44[_0xcaa1('0x1f')]][_0xcaa1('0x25')]()});}else if(_0x200d44[_0xcaa1('0x45')]===_0xcaa1('0x4a')&&_0x200d44[_0xcaa1('0x4b')]&&_0x200d44['Variable'][_0xcaa1('0xd')]&&_0x200d44[_0xcaa1('0x48')]&&_0x200d44[_0xcaa1('0x46')]){_0x2eb305[_0x200d44[_0xcaa1('0x4b')][_0xcaa1('0xd')][_0xcaa1('0x43')]()]&&_0xb94d1d[_0xcaa1('0x47')]['push']({'id':_0x200d44[_0xcaa1('0x48')],'value':_0x2eb305[_0x200d44['Variable']['name']['toLowerCase']()][_0xcaa1('0x25')]()});}});}return _0xb94d1d;}function getConnection(_0x372856){return request({'method':_0xcaa1('0xb'),'form':{'method':_0xcaa1('0x4c'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0xcaa1('0x28')]({'user_auth':{'user_name':_0x372856['username'],'password':_0x372856['password'],'encryption':'PLAIN'},'application':_0xcaa1('0x4d')})}})[_0xcaa1('0x2f')](function(_0x81446c){var _0x4101e0=_0x81446c;if(_0x4101e0['id']){def['sessionID']=_0x4101e0['id'];return BPromise[_0xcaa1('0x35')](_0x4101e0);}else{throw new Error(util['format'](_0xcaa1('0x4e'),_0x372856['id']));}});}function setRelationship(_0x124c78,_0x31a2d5,_0x49fb58,_0x17d3e1){return request({'form':{'method':'set_relationship','input_type':_0xcaa1('0x21'),'response_type':'JSON','rest_data':JSON[_0xcaa1('0x28')]({'session':_0x124c78['id'],'module_name':_0xcaa1('0x4f'),'module_id':_0x49fb58['id'],'link_field_name':_0x17d3e1,'related_ids':[_0x31a2d5['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xcaa1('0x50')]=function(_0x19bd50,_0xf8bdee,_0x4ab44d,_0xdb50e1,_0x47a0fd,_0x4801c4){var _0x40ec94,_0x4b6a51,_0x2b8edb,_0x497047;_0x4801c4[_0xcaa1('0x51')]=intUtil[_0xcaa1('0x52')](_0x4801c4[_0xcaa1('0x51')]);_0x4801c4['serverUrl']=intUtil[_0xcaa1('0x52')](_0x4801c4[_0xcaa1('0x53')]);def[_0xcaa1('0x54')]=util[_0xcaa1('0x22')](_0xcaa1('0x55'),_0x4801c4[_0xcaa1('0x51')]);if(_0x47a0fd&&_0x47a0fd[_0xcaa1('0x56')]){logger[_0xcaa1('0x29')](_0xcaa1('0x57'),'Recording\x20is\x20enabled!');_0xf8bdee['recordingURL']=util[_0xcaa1('0x22')](_0xcaa1('0x58'),_0x4801c4['serverUrl'],_0xf8bdee[_0xcaa1('0x59')],md5(_0xf8bdee[_0xcaa1('0x59')]));}else{_0xf8bdee[_0xcaa1('0x5a')]='';}return getConnection(_0x4801c4)[_0xcaa1('0x2f')](function(_0x499d0a){_0x497047=_0x499d0a;return getUser(_0x4801c4,_0xdb50e1[_0xcaa1('0xd')],_0x497047);})[_0xcaa1('0x2f')](function(_0x2b7fef){_0x40ec94=_0x2b7fef;logger[_0xcaa1('0x29')]('The\x20User\x20ID\x20is:',_0x40ec94['id']);return getEndUser(_0x4801c4,_0xf8bdee[_0xcaa1('0x5b')],_0xf8bdee[_0xcaa1('0x5c')],_0x497047);})[_0xcaa1('0x2f')](function(_0x4bcb10){_0x4b6a51=_0x4bcb10;logger[_0xcaa1('0x29')]('The\x20Enduser\x20ID\x20is:',_0x4b6a51['id']);return getTicket(_0x4801c4,_0x40ec94,_0x4b6a51,_0x4ab44d,_0xf8bdee,_0x4ab44d[_0xcaa1('0x5d')],_0x497047,_0xcaa1('0x5e'));})['then'](function(_0x6f2c8c){_0x2b8edb=_0x6f2c8c;logger[_0xcaa1('0x29')](_0xcaa1('0x5f'));logger['info'](_0xcaa1('0x60'),_0x2b8edb['id']);return setRelationship(_0x497047,_0x40ec94,_0x2b8edb,_0xcaa1('0x61'));})['then'](function(){return setRelationship(_0x497047,_0x4b6a51,_0x2b8edb,_0xcaa1('0x62'));})['then'](function(){return getServerInfo(_0x497047);})[_0xcaa1('0x2f')](function(_0xea72af){var _0x3347be=parseInt(_0xea72af[_0xcaa1('0x63')]['charAt'](0x0));var _0xdcfc35=util[_0xcaa1('0x22')](_0xcaa1('0x64'),_0x4801c4[_0xcaa1('0x51')],_0x2b8edb['id']);if(_0x3347be>0x6){_0xdcfc35=util[_0xcaa1('0x22')](_0xcaa1('0x65'),_0x4801c4[_0xcaa1('0x51')],_0x2b8edb['id']);}logger[_0xcaa1('0x29')]('[QUEUE]',_0xcaa1('0x66'));emit(util[_0xcaa1('0x22')](_0xcaa1('0x67'),_0xdb50e1[_0xcaa1('0xd')]),_0xcaa1('0x68'),{'uri':_0xdcfc35});})[_0xcaa1('0x69')](function(_0xb18982){logger[_0xcaa1('0x6a')]('[QUEUE]',JSON[_0xcaa1('0x28')](_0xb18982));});};exports[_0xcaa1('0x6b')]=function(_0x13d870,_0x3c7e00,_0x3b2945,_0x27bc38,_0x5cd73d,_0xf28490,_0x416c66){var _0x18bae0,_0xb6941c,_0x3eb60f,_0x24e890;_0xf28490[_0xcaa1('0x51')]=intUtil[_0xcaa1('0x52')](_0xf28490[_0xcaa1('0x51')]);_0xf28490[_0xcaa1('0x53')]=intUtil[_0xcaa1('0x52')](_0xf28490[_0xcaa1('0x53')]);def['uri']=util[_0xcaa1('0x22')](_0xcaa1('0x55'),_0xf28490[_0xcaa1('0x51')]);if(_0x416c66&&_0x416c66[_0xcaa1('0x6c')]&&_0x416c66['recordingFormat']!==_0xcaa1('0x6d')){logger[_0xcaa1('0x29')]('[OUTBOUND]',_0xcaa1('0x6e'));_0x3c7e00[_0xcaa1('0x5a')]=util[_0xcaa1('0x22')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xf28490[_0xcaa1('0x53')],_0x3c7e00[_0xcaa1('0x59')],md5(_0x3c7e00[_0xcaa1('0x59')]));}return getConnection(_0xf28490)[_0xcaa1('0x2f')](function(_0x5aa259){_0x24e890=_0x5aa259;return getUser(_0xf28490,_0x27bc38[_0xcaa1('0xd')],_0x24e890);})[_0xcaa1('0x2f')](function(_0x4764ef){_0x18bae0=_0x4764ef;logger[_0xcaa1('0x29')](_0xcaa1('0x6f'),_0x18bae0['id']);return getEndUser(_0xf28490,_0x3c7e00[_0xcaa1('0x70')],_0x3c7e00[_0xcaa1('0x71')],_0x24e890);})[_0xcaa1('0x2f')](function(_0x4fe520){_0xb6941c=_0x4fe520;logger[_0xcaa1('0x29')](_0xcaa1('0x72'),_0xb6941c['id']);return getTicket(_0xf28490,_0x18bae0,_0xb6941c,_0x3b2945,_0x3c7e00,_0x3b2945['Fields'],_0x24e890,_0xcaa1('0x73'));})[_0xcaa1('0x2f')](function(_0x1caa4e){_0x3eb60f=_0x1caa4e;logger[_0xcaa1('0x29')]('Ticket\x20created!');logger['info'](_0xcaa1('0x60'),_0x3eb60f['id']);return setRelationship(_0x24e890,_0x18bae0,_0x3eb60f,_0xcaa1('0x61'));})[_0xcaa1('0x2f')](function(){return setRelationship(_0x24e890,_0xb6941c,_0x3eb60f,_0xcaa1('0x62'));})[_0xcaa1('0x2f')](function(){return getServerInfo(_0x24e890);})['then'](function(_0x216e76){var _0x1c3019=parseInt(_0x216e76[_0xcaa1('0x63')][_0xcaa1('0x74')](0x0));var _0x20dd85=util[_0xcaa1('0x22')](_0xcaa1('0x64'),_0xf28490['remoteUri'],_0x3eb60f['id']);if(_0x1c3019>0x6){_0x20dd85=util['format'](_0xcaa1('0x65'),_0xf28490[_0xcaa1('0x51')],_0x3eb60f['id']);}logger[_0xcaa1('0x29')](_0xcaa1('0x75'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xcaa1('0x22')](_0xcaa1('0x67'),_0x27bc38[_0xcaa1('0xd')]),_0xcaa1('0x68'),{'uri':_0x20dd85});})[_0xcaa1('0x69')](function(_0x235a4f){logger[_0xcaa1('0x6a')](_0xcaa1('0x75'),JSON['stringify'](_0x235a4f));});};exports[_0xcaa1('0x76')]=function(_0xa357d2,_0x3d5e88,_0x4a4f2c,_0x5a77d1,_0x284df2,_0x1dfba0){var _0x4dd131,_0x4eba19,_0x48c973,_0x49f9d9;_0x1dfba0[_0xcaa1('0x51')]=intUtil[_0xcaa1('0x52')](_0x1dfba0['remoteUri']);_0x1dfba0[_0xcaa1('0x53')]=intUtil['stripTrailingSlash'](_0x1dfba0[_0xcaa1('0x53')]);def[_0xcaa1('0x54')]=util[_0xcaa1('0x22')](_0xcaa1('0x55'),_0x1dfba0['remoteUri']);if(_0x284df2&&_0x284df2[_0xcaa1('0x56')]){logger['info']('['+_0x3d5e88[_0xcaa1('0x77')][_0xcaa1('0x78')]()+']',_0xcaa1('0x6e'));_0x3d5e88[_0xcaa1('0x5a')]=util[_0xcaa1('0x22')](_0xcaa1('0x58'),_0x1dfba0[_0xcaa1('0x53')],_0x3d5e88['uniqueid'],md5(_0x3d5e88[_0xcaa1('0x59')]));}else{_0x3d5e88[_0xcaa1('0x5a')]='';}return getConnection(_0x1dfba0)['then'](function(_0x2af8b3){_0x49f9d9=_0x2af8b3;if(!_['isNil'](_0x5a77d1)){return getUser(_0x1dfba0,_0x5a77d1[_0xcaa1('0xd')],_0x49f9d9);}else{return getUser(_0x1dfba0,null,_0x49f9d9);}})[_0xcaa1('0x2f')](function(_0x226d91){_0x4dd131=_0x226d91;logger[_0xcaa1('0x29')](_0xcaa1('0x6f'),_0x4dd131['id']);return getEndUser(_0x1dfba0,_0x3d5e88['calleridname'],_0x3d5e88[_0xcaa1('0x5c')],_0x49f9d9);})[_0xcaa1('0x2f')](function(_0x49250d){_0x4eba19=_0x49250d;logger[_0xcaa1('0x29')](_0xcaa1('0x72'),_0x4eba19['id']);return getTicket(_0x1dfba0,_0x4dd131,_0x4eba19,_0x4a4f2c,_0x3d5e88,_0x4a4f2c[_0xcaa1('0x5d')],_0x49f9d9,_0xcaa1('0x5e'));})['then'](function(_0x39ccef){_0x48c973=_0x39ccef;logger[_0xcaa1('0x29')](_0xcaa1('0x5f'));logger['info'](_0xcaa1('0x60'),_0x48c973['id']);return setRelationship(_0x49f9d9,_0x4dd131,_0x48c973,_0xcaa1('0x61'));})[_0xcaa1('0x2f')](function(){return setRelationship(_0x49f9d9,_0x4eba19,_0x48c973,_0xcaa1('0x62'));})[_0xcaa1('0x2f')](function(){return getServerInfo(_0x49f9d9);})[_0xcaa1('0x69')](function(_0x371723){logger[_0xcaa1('0x6a')]('['+_0x3d5e88[_0xcaa1('0x77')]['toUpperCase']()+']',JSON[_0xcaa1('0x28')](_0x371723));});};
\ No newline at end of file
+var _0xc3b6=['Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Enduser\x20created.','debug','[HTTP]','string','nameField','customField','toLowerCase','content','type','idField','push','variable','custom_fields','customVariable','Variable','POST','PLAIN','xCALLY\x20Motion\x20integration','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','The\x20User\x20ID\x20is:','calleridname','The\x20Ticket\x20ID\x20is:','users','version','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','user:%s','trigger:browser:url','catch','error','outbound','%s/service/v4_1/rest.php','recordingFormat','none','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Fields','Outbound','Ticket\x20created!','contacts','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','lastevent','toUpperCase','calleridnum','Inbound','lodash','request-promise','bluebird','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','localhost','emit','info','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','created_by','description','Descriptions','date_start','toISOString','slice','replace','duration_hours','parent_id','parent_type','parent_name','direction','forEach','variableName','set_entry','stringify','Calls','apiKey','toString','base64','get_server_info','JSON','isNil','get_entry_list','Employees','format','entry_list','length','find','name_value_list','user_name','Agent\x20found!','resolve','value','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Contacts','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','then'];(function(_0x4eec1c,_0x1e0309){var _0x1d037b=function(_0x4e127d){while(--_0x4e127d){_0x4eec1c['push'](_0x4eec1c['shift']());}};_0x1d037b(++_0x1e0309);}(_0xc3b6,0x1ae));var _0x6c3b=function(_0x28611e,_0x586726){_0x28611e=_0x28611e-0x0;var _0x530f69=_0xc3b6[_0x28611e];return _0x530f69;};'use strict';var _=require(_0x6c3b('0x0'));var rp=require(_0x6c3b('0x1'));var BPromise=require(_0x6c3b('0x2'));var md5=require(_0x6c3b('0x3'));var util=require(_0x6c3b('0x4'));var Redis=require(_0x6c3b('0x5'));var intUtil=require(_0x6c3b('0x6'));var config=require(_0x6c3b('0x7'));var logger=require(_0x6c3b('0x8'))('sugarcrm');config['redis']=_['defaults'](config[_0x6c3b('0x9')],{'host':_0x6c3b('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6c3b('0x9')]));var def={'method':'POST','json':!![]};function emit(_0x457c86,_0x2da5ab,_0x3b4b5d){io['to'](_0x457c86)[_0x6c3b('0xb')](_0x2da5ab,_0x3b4b5d);}function getTicket(_0x4f94fd,_0x19a635,_0x52ae24,_0x45a640,_0x2a990a,_0x3210d6,_0xe5c1c0,_0x14af16){logger[_0x6c3b('0xc')](_0x6c3b('0xd'));var _0x46914f=new Date();var _0x5a3f77=[{'name':_0x6c3b('0xe'),'value':intUtil[_0x6c3b('0xf')](_0x45a640[_0x6c3b('0x10')],_0x2a990a,'\x20')},{'name':_0x6c3b('0x11'),'value':_0x19a635['id']},{'name':_0x6c3b('0x12'),'value':_0x19a635['id']},{'name':_0x6c3b('0x13'),'value':intUtil[_0x6c3b('0xf')](_0x45a640[_0x6c3b('0x14')],_0x2a990a,'\x0a')},{'name':_0x6c3b('0x15'),'value':_0x46914f[_0x6c3b('0x16')]()[_0x6c3b('0x17')](0x0,0x13)[_0x6c3b('0x18')]('T','\x20')},{'name':_0x6c3b('0x19'),'value':'0'},{'name':'duration_minutes','value':'15'},{'name':_0x6c3b('0x1a'),'value':_0x52ae24['id']},{'name':_0x6c3b('0x1b'),'value':'Contacts'},{'name':_0x6c3b('0x1c'),'value':_0x52ae24[_0x6c3b('0xe')]},{'name':_0x6c3b('0x1d'),'value':_0x14af16}];if(_0x3210d6['length']){_[_0x6c3b('0x1e')](_0x3210d6,function(_0x2d84b2){if(_0x2a990a[_0x2d84b2[_0x6c3b('0x1f')]]){_0x5a3f77['push']({'name':_0x2d84b2['idField'],'value':_0x2a990a[_0x2d84b2[_0x6c3b('0x1f')]]});}});}return request({'form':{'method':_0x6c3b('0x20'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x6c3b('0x21')]({'session':_0xe5c1c0['id'],'module_name':_0x6c3b('0x22'),'name_value_list':_0x5a3f77})}});}function getAuth(_0x316eb2){return util['format']('Basic\x20%s',new Buffer(_0x316eb2[_0x6c3b('0x23')]+':X')[_0x6c3b('0x24')](_0x6c3b('0x25')));}function getServerInfo(_0x234fe8){return request({'form':{'method':_0x6c3b('0x26'),'input_type':_0x6c3b('0x27'),'response_type':_0x6c3b('0x27'),'rest_data':JSON[_0x6c3b('0x21')]({'session':_0x234fe8['id']})}});}function getUser(_0xcc5685,_0x52df49,_0x5f35a2){if(!_[_0x6c3b('0x28')](_0x52df49)){logger[_0x6c3b('0xc')]('Getting\x20agent\x20with\x20name',_0x52df49);return request({'form':{'method':_0x6c3b('0x29'),'input_type':_0x6c3b('0x27'),'response_type':_0x6c3b('0x27'),'rest_data':JSON['stringify']({'session':_0x5f35a2['id'],'module_name':_0x6c3b('0x2a'),'query':util[_0x6c3b('0x2b')]('INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200',_0x52df49),'order_by':'','offset':'0','select_fields':['id',_0x6c3b('0xe'),'user_name'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x2a2be8){if(_0x2a2be8[_0x6c3b('0x2c')][_0x6c3b('0x2d')]){var _0x4c63e6=_[_0x6c3b('0x2e')](_0x2a2be8[_0x6c3b('0x2c')],function(_0x450bdb){return _0x450bdb[_0x6c3b('0x2f')][_0x6c3b('0x30')]['value']===_0x52df49;});if(_0x4c63e6){logger[_0x6c3b('0xc')](_0x6c3b('0x31'));return BPromise[_0x6c3b('0x32')]({'id':_0x4c63e6[_0x6c3b('0x2f')]['id'][_0x6c3b('0x33')],'name':_0x4c63e6[_0x6c3b('0x2f')]['name'][_0x6c3b('0x33')]});}}logger[_0x6c3b('0xc')](_0x6c3b('0x34'));return BPromise[_0x6c3b('0x32')]({'id':_0x5f35a2['name_value_list'][_0x6c3b('0x35')]['value'],'name':_0x5f35a2[_0x6c3b('0x2f')][_0x6c3b('0x30')][_0x6c3b('0x33')]});});}else{logger['info']('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise['resolve']({'id':_0x5f35a2[_0x6c3b('0x2f')][_0x6c3b('0x35')]['value'],'name':_0x5f35a2[_0x6c3b('0x2f')][_0x6c3b('0x30')][_0x6c3b('0x33')]});}}function getEndUser(_0x2a8733,_0x324cc3,_0x18ada2,_0x5791c4){logger[_0x6c3b('0xc')]('Searching\x20enduser\x20with\x20phone',_0x18ada2);return request({'form':{'method':'get_entry_list','input_type':'JSON','response_type':_0x6c3b('0x27'),'rest_data':JSON[_0x6c3b('0x21')]({'session':_0x5791c4['id'],'module_name':_0x6c3b('0x36'),'query':util[_0x6c3b('0x2b')](_0x6c3b('0x37'),_0x18ada2),'order_by':'','offset':'0','select_fields':['id','name',_0x6c3b('0x38')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x6c3b('0x39')](function(_0x39137f){if(_0x39137f['entry_list'][_0x6c3b('0x2d')]){var _0x50dfbf=_[_0x6c3b('0x2e')](_0x39137f[_0x6c3b('0x2c')],function(_0xf3a270){return _0xf3a270[_0x6c3b('0x2f')]['phone_home']['value']===_0x18ada2;});if(_0x50dfbf){logger[_0x6c3b('0xc')](_0x6c3b('0x3a'));return BPromise[_0x6c3b('0x32')]({'id':_0x50dfbf[_0x6c3b('0x2f')]['id'][_0x6c3b('0x33')],'name':_0x50dfbf[_0x6c3b('0x2f')][_0x6c3b('0xe')]['value'],'phone':_0x50dfbf[_0x6c3b('0x2f')][_0x6c3b('0x38')]['value']});}}else{logger[_0x6c3b('0xc')](_0x6c3b('0x3b'));return request({'form':{'method':_0x6c3b('0x20'),'input_type':_0x6c3b('0x27'),'response_type':_0x6c3b('0x27'),'rest_data':JSON[_0x6c3b('0x21')]({'session':_0x5791c4['id'],'module_name':_0x6c3b('0x36'),'name_value_list':[{'name':_0x6c3b('0x3c'),'value':_0x324cc3!==_0x6c3b('0x3d')?_0x324cc3:util['format']('Caller\x20-\x20%s',_0x18ada2)},{'name':_0x6c3b('0x38'),'value':_0x18ada2}]})}})['then'](function(_0x682dbf){logger['info'](_0x6c3b('0x3e'));return BPromise[_0x6c3b('0x32')]({'id':_0x682dbf['id'],'name':_0x682dbf[_0x6c3b('0x2c')][_0x6c3b('0x3c')][_0x6c3b('0x33')],'phone':_0x682dbf['entry_list']['phone_home'][_0x6c3b('0x33')]});});}});}function request(_0x5d372b){logger[_0x6c3b('0x3f')](_0x6c3b('0x40'),JSON[_0x6c3b('0x21')](_0x5d372b));return rp(_['merge'](def,_0x5d372b));}function getTags(_0x574704,_0x41f5b2){var _0xa01dc1=[];if(_0x574704&&_0x574704['length']>0x0){_0xa01dc1=_['map'](_0x574704,_0x41f5b2);}return _0xa01dc1;}function getCustomFields(_0x30409f,_0x2e7871){var _0x4e0ef8=[];var _0x3720f0={'custom_fields':[]};if(_0x30409f[_0x6c3b('0x2d')]>0x0){_[_0x6c3b('0x1e')](_0x30409f,function(_0x268ff8){if(_0x268ff8['type']===_0x6c3b('0x41')&&_0x268ff8[_0x6c3b('0x42')]&&!_0x268ff8[_0x6c3b('0x43')]){_0x3720f0[_0x268ff8[_0x6c3b('0x42')][_0x6c3b('0x44')]()]=_0x268ff8[_0x6c3b('0x45')][_0x6c3b('0x24')]();}else if(_0x268ff8[_0x6c3b('0x46')]===_0x6c3b('0x41')&&_0x268ff8[_0x6c3b('0x47')]&&_0x268ff8[_0x6c3b('0x43')]){_0x3720f0['custom_fields'][_0x6c3b('0x48')]({'id':_0x268ff8[_0x6c3b('0x47')],'value':_0x268ff8[_0x6c3b('0x45')]['toString']()});}else if(_0x268ff8[_0x6c3b('0x46')]===_0x6c3b('0x49')&&_0x268ff8[_0x6c3b('0x1f')]&&_0x268ff8[_0x6c3b('0x47')]&&_0x268ff8[_0x6c3b('0x43')]){_0x2e7871[_0x268ff8[_0x6c3b('0x1f')]]&&_0x3720f0[_0x6c3b('0x4a')][_0x6c3b('0x48')]({'id':_0x268ff8[_0x6c3b('0x47')],'value':_0x2e7871[_0x268ff8[_0x6c3b('0x1f')]][_0x6c3b('0x24')]()});}else if(_0x268ff8[_0x6c3b('0x46')]===_0x6c3b('0x4b')&&_0x268ff8[_0x6c3b('0x4c')]&&_0x268ff8[_0x6c3b('0x4c')]['name']&&_0x268ff8[_0x6c3b('0x47')]&&_0x268ff8['customField']){_0x2e7871[_0x268ff8[_0x6c3b('0x4c')][_0x6c3b('0xe')]['toLowerCase']()]&&_0x3720f0[_0x6c3b('0x4a')][_0x6c3b('0x48')]({'id':_0x268ff8['idField'],'value':_0x2e7871[_0x268ff8[_0x6c3b('0x4c')][_0x6c3b('0xe')][_0x6c3b('0x44')]()][_0x6c3b('0x24')]()});}});}return _0x3720f0;}function getConnection(_0x124d1f){return request({'method':_0x6c3b('0x4d'),'form':{'method':'login','input_type':_0x6c3b('0x27'),'response_type':_0x6c3b('0x27'),'rest_data':JSON[_0x6c3b('0x21')]({'user_auth':{'user_name':_0x124d1f['username'],'password':_0x124d1f['password'],'encryption':_0x6c3b('0x4e')},'application':_0x6c3b('0x4f')})}})['then'](function(_0x1d632a){var _0x48e526=_0x1d632a;if(_0x48e526['id']){def['sessionID']=_0x48e526['id'];return BPromise['resolve'](_0x48e526);}else{throw new Error(util[_0x6c3b('0x2b')](_0x6c3b('0x50'),_0x124d1f['id']));}});}function setRelationship(_0x3a2f2c,_0x55a54e,_0x4cd900,_0x5414e3){return request({'form':{'method':_0x6c3b('0x51'),'input_type':_0x6c3b('0x27'),'response_type':_0x6c3b('0x27'),'rest_data':JSON[_0x6c3b('0x21')]({'session':_0x3a2f2c['id'],'module_name':_0x6c3b('0x22'),'module_id':_0x4cd900['id'],'link_field_name':_0x5414e3,'related_ids':[_0x55a54e['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x6c3b('0x52')]=function(_0x242ae1,_0x3994fb,_0x136726,_0xbdf9d2,_0x4f92d2,_0x14d515){var _0xb7a37e,_0x5baede,_0x2d722c,_0xad53de;_0x14d515[_0x6c3b('0x53')]=intUtil[_0x6c3b('0x54')](_0x14d515['remoteUri']);_0x14d515[_0x6c3b('0x55')]=intUtil['stripTrailingSlash'](_0x14d515[_0x6c3b('0x55')]);def[_0x6c3b('0x56')]=util[_0x6c3b('0x2b')]('%s/service/v4_1/rest.php',_0x14d515['remoteUri']);if(_0x4f92d2&&_0x4f92d2[_0x6c3b('0x57')]){logger[_0x6c3b('0xc')](_0x6c3b('0x58'),_0x6c3b('0x59'));_0x3994fb[_0x6c3b('0x5a')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x14d515[_0x6c3b('0x55')],_0x3994fb['uniqueid'],md5(_0x3994fb[_0x6c3b('0x5b')]));}else{_0x3994fb[_0x6c3b('0x5a')]='';}return getConnection(_0x14d515)['then'](function(_0xe3cd33){_0xad53de=_0xe3cd33;return getUser(_0x14d515,_0xbdf9d2[_0x6c3b('0xe')],_0xad53de);})[_0x6c3b('0x39')](function(_0x5d4462){_0xb7a37e=_0x5d4462;logger[_0x6c3b('0xc')](_0x6c3b('0x5c'),_0xb7a37e['id']);return getEndUser(_0x14d515,_0x3994fb[_0x6c3b('0x5d')],_0x3994fb['calleridnum'],_0xad53de);})[_0x6c3b('0x39')](function(_0x522a2b){_0x5baede=_0x522a2b;logger[_0x6c3b('0xc')]('The\x20Enduser\x20ID\x20is:',_0x5baede['id']);return getTicket(_0x14d515,_0xb7a37e,_0x5baede,_0x136726,_0x3994fb,_0x136726['Fields'],_0xad53de,'Inbound');})[_0x6c3b('0x39')](function(_0x56bc06){_0x2d722c=_0x56bc06;logger[_0x6c3b('0xc')]('Ticket\x20created!');logger[_0x6c3b('0xc')](_0x6c3b('0x5e'),_0x2d722c['id']);return setRelationship(_0xad53de,_0xb7a37e,_0x2d722c,_0x6c3b('0x5f'));})[_0x6c3b('0x39')](function(){return setRelationship(_0xad53de,_0x5baede,_0x2d722c,'contacts');})[_0x6c3b('0x39')](function(){return getServerInfo(_0xad53de);})['then'](function(_0x3e74bc){var _0x58036d=parseInt(_0x3e74bc[_0x6c3b('0x60')]['charAt'](0x0));var _0x2077e4=util[_0x6c3b('0x2b')](_0x6c3b('0x61'),_0x14d515[_0x6c3b('0x53')],_0x2d722c['id']);if(_0x58036d>0x6){_0x2077e4=util[_0x6c3b('0x2b')](_0x6c3b('0x62'),_0x14d515[_0x6c3b('0x53')],_0x2d722c['id']);}logger[_0x6c3b('0xc')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x6c3b('0x2b')](_0x6c3b('0x63'),_0xbdf9d2[_0x6c3b('0xe')]),_0x6c3b('0x64'),{'uri':_0x2077e4});})[_0x6c3b('0x65')](function(_0xb974f4){logger[_0x6c3b('0x66')](_0x6c3b('0x58'),JSON[_0x6c3b('0x21')](_0xb974f4));});};exports[_0x6c3b('0x67')]=function(_0x48e6b8,_0x44094d,_0x450217,_0x27c614,_0x206493,_0x5b7e9e,_0x59996e){var _0x1bd59e,_0x4a21dc,_0x38cf09,_0x1aca45;_0x5b7e9e[_0x6c3b('0x53')]=intUtil[_0x6c3b('0x54')](_0x5b7e9e[_0x6c3b('0x53')]);_0x5b7e9e[_0x6c3b('0x55')]=intUtil[_0x6c3b('0x54')](_0x5b7e9e['serverUrl']);def[_0x6c3b('0x56')]=util['format'](_0x6c3b('0x68'),_0x5b7e9e[_0x6c3b('0x53')]);if(_0x59996e&&_0x59996e[_0x6c3b('0x69')]&&_0x59996e[_0x6c3b('0x69')]!==_0x6c3b('0x6a')){logger[_0x6c3b('0xc')]('[OUTBOUND]',_0x6c3b('0x59'));_0x44094d[_0x6c3b('0x5a')]=util['format'](_0x6c3b('0x6b'),_0x5b7e9e[_0x6c3b('0x55')],_0x44094d['uniqueid'],md5(_0x44094d[_0x6c3b('0x5b')]));}return getConnection(_0x5b7e9e)[_0x6c3b('0x39')](function(_0x4e6f59){_0x1aca45=_0x4e6f59;return getUser(_0x5b7e9e,_0x27c614[_0x6c3b('0xe')],_0x1aca45);})[_0x6c3b('0x39')](function(_0x3e2643){_0x1bd59e=_0x3e2643;logger[_0x6c3b('0xc')](_0x6c3b('0x5c'),_0x1bd59e['id']);return getEndUser(_0x5b7e9e,_0x44094d[_0x6c3b('0x6c')],_0x44094d[_0x6c3b('0x6d')],_0x1aca45);})[_0x6c3b('0x39')](function(_0x551ad6){_0x4a21dc=_0x551ad6;logger[_0x6c3b('0xc')](_0x6c3b('0x6e'),_0x4a21dc['id']);return getTicket(_0x5b7e9e,_0x1bd59e,_0x4a21dc,_0x450217,_0x44094d,_0x450217[_0x6c3b('0x6f')],_0x1aca45,_0x6c3b('0x70'));})['then'](function(_0x576025){_0x38cf09=_0x576025;logger['info'](_0x6c3b('0x71'));logger[_0x6c3b('0xc')](_0x6c3b('0x5e'),_0x38cf09['id']);return setRelationship(_0x1aca45,_0x1bd59e,_0x38cf09,_0x6c3b('0x5f'));})[_0x6c3b('0x39')](function(){return setRelationship(_0x1aca45,_0x4a21dc,_0x38cf09,_0x6c3b('0x72'));})[_0x6c3b('0x39')](function(){return getServerInfo(_0x1aca45);})[_0x6c3b('0x39')](function(_0x5b5ec0){var _0x206285=parseInt(_0x5b5ec0[_0x6c3b('0x60')]['charAt'](0x0));var _0x1aee0e=util[_0x6c3b('0x2b')](_0x6c3b('0x61'),_0x5b7e9e[_0x6c3b('0x53')],_0x38cf09['id']);if(_0x206285>0x6){_0x1aee0e=util['format'](_0x6c3b('0x62'),_0x5b7e9e[_0x6c3b('0x53')],_0x38cf09['id']);}logger[_0x6c3b('0xc')](_0x6c3b('0x73'),_0x6c3b('0x74'));emit(util['format'](_0x6c3b('0x63'),_0x27c614['name']),'trigger:browser:url',{'uri':_0x1aee0e});})[_0x6c3b('0x65')](function(_0x57e27f){logger[_0x6c3b('0x66')](_0x6c3b('0x73'),JSON[_0x6c3b('0x21')](_0x57e27f));});};exports[_0x6c3b('0x75')]=function(_0x585dec,_0x4c50c8,_0x52b424,_0x5bc33a,_0x30068f,_0x8d4602){var _0x21bd94,_0x57f0af,_0xffd71e,_0x427593;_0x8d4602['remoteUri']=intUtil['stripTrailingSlash'](_0x8d4602[_0x6c3b('0x53')]);_0x8d4602[_0x6c3b('0x55')]=intUtil[_0x6c3b('0x54')](_0x8d4602[_0x6c3b('0x55')]);def['uri']=util[_0x6c3b('0x2b')](_0x6c3b('0x68'),_0x8d4602[_0x6c3b('0x53')]);if(_0x30068f&&_0x30068f[_0x6c3b('0x57')]){logger[_0x6c3b('0xc')]('['+_0x4c50c8[_0x6c3b('0x76')][_0x6c3b('0x77')]()+']',_0x6c3b('0x59'));_0x4c50c8[_0x6c3b('0x5a')]=util[_0x6c3b('0x2b')](_0x6c3b('0x6b'),_0x8d4602['serverUrl'],_0x4c50c8[_0x6c3b('0x5b')],md5(_0x4c50c8['uniqueid']));}else{_0x4c50c8[_0x6c3b('0x5a')]='';}return getConnection(_0x8d4602)['then'](function(_0x1cfaf8){_0x427593=_0x1cfaf8;if(!_[_0x6c3b('0x28')](_0x5bc33a)){return getUser(_0x8d4602,_0x5bc33a['name'],_0x427593);}else{return getUser(_0x8d4602,null,_0x427593);}})['then'](function(_0x109a0e){_0x21bd94=_0x109a0e;logger[_0x6c3b('0xc')]('The\x20User\x20ID\x20is:',_0x21bd94['id']);return getEndUser(_0x8d4602,_0x4c50c8[_0x6c3b('0x5d')],_0x4c50c8[_0x6c3b('0x78')],_0x427593);})[_0x6c3b('0x39')](function(_0x49a330){_0x57f0af=_0x49a330;logger[_0x6c3b('0xc')](_0x6c3b('0x6e'),_0x57f0af['id']);return getTicket(_0x8d4602,_0x21bd94,_0x57f0af,_0x52b424,_0x4c50c8,_0x52b424[_0x6c3b('0x6f')],_0x427593,_0x6c3b('0x79'));})['then'](function(_0x2ee66d){_0xffd71e=_0x2ee66d;logger[_0x6c3b('0xc')](_0x6c3b('0x71'));logger[_0x6c3b('0xc')](_0x6c3b('0x5e'),_0xffd71e['id']);return setRelationship(_0x427593,_0x21bd94,_0xffd71e,_0x6c3b('0x5f'));})[_0x6c3b('0x39')](function(){return setRelationship(_0x427593,_0x57f0af,_0xffd71e,_0x6c3b('0x72'));})[_0x6c3b('0x39')](function(){return getServerInfo(_0x427593);})[_0x6c3b('0x65')](function(_0x42c518){logger[_0x6c3b('0x66')]('['+_0x4c50c8[_0x6c3b('0x76')][_0x6c3b('0x77')]()+']',JSON['stringify'](_0x42c518));});};
\ No newline at end of file
index 8a59e96..f5b85f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd6e=['type','push','content','variable','variableName','customVariable','name','Variable','toLowerCase','keyValue','keyType','string','key','%s:\x20%s','keyContent','format','join','slice','substring','lastIndexOf','validateEmail','lodash','util','length','sortBy'];(function(_0x247a0d,_0xbb4651){var _0x34601e=function(_0x558706){while(--_0x558706){_0x247a0d['push'](_0x247a0d['shift']());}};_0x34601e(++_0xbb4651);}(_0xcd6e,0x1f0));var _0xecd6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcd6e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xecd6('0x0'));var util=require(_0xecd6('0x1'));exports['getString']=function(_0x35e2a,_0x1a6df9,_0x21899f){var _0x1a77bc=[];if(_0x35e2a[_0xecd6('0x2')]>0x0){var _0x13f0a3=_[_0xecd6('0x3')](_0x35e2a,['id']);for(var _0x344d3e=0x0;_0x344d3e<_0x13f0a3['length'];_0x344d3e++){var _0x5d3939=_0x13f0a3[_0x344d3e];if(_0x5d3939[_0xecd6('0x4')]==='string'){_0x1a77bc[_0xecd6('0x5')](_0x5d3939[_0xecd6('0x6')]);}else if(_0x5d3939[_0xecd6('0x4')]===_0xecd6('0x7')&&_0x5d3939[_0xecd6('0x8')]){_0x1a6df9[_0x5d3939[_0xecd6('0x8')]]&&_0x1a77bc[_0xecd6('0x5')](_0x1a6df9[_0x5d3939[_0xecd6('0x8')]]['toString']());}else if(_0x5d3939[_0xecd6('0x4')]===_0xecd6('0x9')&&_0x5d3939['Variable']&&_0x5d3939['Variable'][_0xecd6('0xa')]){_0x1a6df9[_0x5d3939[_0xecd6('0xb')]['name'][_0xecd6('0xc')]()]&&_0x1a77bc[_0xecd6('0x5')](_0x1a6df9[_0x5d3939[_0xecd6('0xb')]['name']['toLowerCase']()]['toString']());}else if(_0x5d3939[_0xecd6('0x4')]===_0xecd6('0xd')){if(_0x5d3939[_0xecd6('0xe')]===_0xecd6('0xf')&&_0x5d3939[_0xecd6('0x10')]){_0x1a77bc[_0xecd6('0x5')](util['format'](_0xecd6('0x11'),_0x5d3939[_0xecd6('0x10')],_0x5d3939[_0xecd6('0x12')]));}else if(_0x5d3939[_0xecd6('0xe')]===_0xecd6('0x7')&&_0x5d3939[_0xecd6('0x8')]&&_0x5d3939[_0xecd6('0x10')]){_0x1a6df9[_0x5d3939[_0xecd6('0x8')]]&&_0x1a77bc['push'](util[_0xecd6('0x13')](_0xecd6('0x11'),_0x5d3939[_0xecd6('0x10')],_0x1a6df9[_0x5d3939[_0xecd6('0x8')]]));}else if(_0x5d3939[_0xecd6('0xe')]===_0xecd6('0x9')&&_0x5d3939[_0xecd6('0xb')]&&_0x5d3939[_0xecd6('0xb')][_0xecd6('0xa')]&&_0x5d3939[_0xecd6('0x10')]){_0x1a6df9[_0x5d3939[_0xecd6('0xb')][_0xecd6('0xa')][_0xecd6('0xc')]()]&&_0x1a77bc[_0xecd6('0x5')](util[_0xecd6('0x13')](_0xecd6('0x11'),_0x5d3939[_0xecd6('0x10')],_0x1a6df9[_0x5d3939[_0xecd6('0xb')][_0xecd6('0xa')][_0xecd6('0xc')]()]));}}}}return _0x1a77bc[_0xecd6('0x14')](_0x21899f);};exports['stripTrailingSlash']=function(_0x931062){var _0x419ac7=_0x931062[_0xecd6('0x15')](-0x1);if(_0x419ac7==='/'){_0x931062=_0x931062[_0xecd6('0x16')](0x0,_0x931062[_0xecd6('0x17')](_0x419ac7));}return _0x931062;};exports[_0xecd6('0x18')]=function(_0x313067){if(!_['isNil'](_0x313067)&&_0x313067!==''){var _0x2d044c=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return _0x2d044c['test'](String(_0x313067)[_0xecd6('0xc')]());}else{return![];}};
\ No newline at end of file
+var _0xae29=['content','type','variableName','toString','customVariable','Variable','name','toLowerCase','format','%s:\x20%s','keyContent','keyType','variable','key','join','stripTrailingSlash','slice','lastIndexOf','validateEmail','test','lodash','util','length','sortBy','push'];(function(_0x2b6b3d,_0x3023d4){var _0xb2d98e=function(_0x159414){while(--_0x159414){_0x2b6b3d['push'](_0x2b6b3d['shift']());}};_0xb2d98e(++_0x3023d4);}(_0xae29,0x78));var _0x9ae2=function(_0x29edb5,_0x5bdc4f){_0x29edb5=_0x29edb5-0x0;var _0x3218ee=_0xae29[_0x29edb5];return _0x3218ee;};'use strict';var _=require(_0x9ae2('0x0'));var util=require(_0x9ae2('0x1'));exports['getString']=function(_0x294f52,_0xcf3400,_0x4f9186){var _0x1a9bf3=[];if(_0x294f52[_0x9ae2('0x2')]>0x0){var _0xec1aaa=_[_0x9ae2('0x3')](_0x294f52,['id']);for(var _0x448492=0x0;_0x448492<_0xec1aaa[_0x9ae2('0x2')];_0x448492++){var _0x889b44=_0xec1aaa[_0x448492];if(_0x889b44['type']==='string'){_0x1a9bf3[_0x9ae2('0x4')](_0x889b44[_0x9ae2('0x5')]);}else if(_0x889b44[_0x9ae2('0x6')]==='variable'&&_0x889b44['variableName']){_0xcf3400[_0x889b44['variableName']]&&_0x1a9bf3['push'](_0xcf3400[_0x889b44[_0x9ae2('0x7')]][_0x9ae2('0x8')]());}else if(_0x889b44[_0x9ae2('0x6')]===_0x9ae2('0x9')&&_0x889b44[_0x9ae2('0xa')]&&_0x889b44['Variable'][_0x9ae2('0xb')]){_0xcf3400[_0x889b44[_0x9ae2('0xa')][_0x9ae2('0xb')][_0x9ae2('0xc')]()]&&_0x1a9bf3[_0x9ae2('0x4')](_0xcf3400[_0x889b44[_0x9ae2('0xa')][_0x9ae2('0xb')]['toLowerCase']()][_0x9ae2('0x8')]());}else if(_0x889b44[_0x9ae2('0x6')]==='keyValue'){if(_0x889b44['keyType']==='string'&&_0x889b44['key']){_0x1a9bf3[_0x9ae2('0x4')](util[_0x9ae2('0xd')](_0x9ae2('0xe'),_0x889b44['key'],_0x889b44[_0x9ae2('0xf')]));}else if(_0x889b44[_0x9ae2('0x10')]===_0x9ae2('0x11')&&_0x889b44[_0x9ae2('0x7')]&&_0x889b44[_0x9ae2('0x12')]){_0xcf3400[_0x889b44['variableName']]&&_0x1a9bf3['push'](util['format']('%s:\x20%s',_0x889b44['key'],_0xcf3400[_0x889b44['variableName']]));}else if(_0x889b44[_0x9ae2('0x10')]==='customVariable'&&_0x889b44[_0x9ae2('0xa')]&&_0x889b44[_0x9ae2('0xa')][_0x9ae2('0xb')]&&_0x889b44[_0x9ae2('0x12')]){_0xcf3400[_0x889b44[_0x9ae2('0xa')][_0x9ae2('0xb')][_0x9ae2('0xc')]()]&&_0x1a9bf3[_0x9ae2('0x4')](util[_0x9ae2('0xd')](_0x9ae2('0xe'),_0x889b44[_0x9ae2('0x12')],_0xcf3400[_0x889b44[_0x9ae2('0xa')][_0x9ae2('0xb')][_0x9ae2('0xc')]()]));}}}}return _0x1a9bf3[_0x9ae2('0x13')](_0x4f9186);};exports[_0x9ae2('0x14')]=function(_0x4b3f39){var _0x46e624=_0x4b3f39[_0x9ae2('0x15')](-0x1);if(_0x46e624==='/'){_0x4b3f39=_0x4b3f39['substring'](0x0,_0x4b3f39[_0x9ae2('0x16')](_0x46e624));}return _0x4b3f39;};exports[_0x9ae2('0x17')]=function(_0x2a729d){if(!_['isNil'](_0x2a729d)&&_0x2a729d!==''){var _0x5c53fb=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return _0x5c53fb[_0x9ae2('0x18')](String(_0x2a729d)[_0x9ae2('0xc')]());}else{return![];}};
\ No newline at end of file
index 11fa44f..fdefa6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['variable','variableName','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','Normal','Open','Subjects','POST','format','%s/webservice.php','create','username','sessionName','HelpDesk','stringify','then','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','error','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','Getting\x20agent\x20with\x20email','GET','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','resolve','email1','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','statusCode','getUser','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','login','token','Account\x20%d\x20is\x20not\x20valid','[HTTP]','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','Fields','split','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridname','lastevent','lodash','request-promise','bluebird','ioredis','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','length','forEach','includes','idField','content','toString','type'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'use strict';var _=require(_0x0a9e('0x0'));var rp=require(_0x0a9e('0x1'));var BPromise=require(_0x0a9e('0x2'));var md5=require('md5');var util=require('util');var Redis=require(_0x0a9e('0x3'));var intUtil=require('./util');var config=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));config[_0x0a9e('0x7')]=_[_0x0a9e('0x8')](config['redis'],{'host':_0x0a9e('0x9'),'port':0x18eb});var io=require(_0x0a9e('0xa'))(new Redis(config[_0x0a9e('0x7')]));function emit(_0x5f41ea,_0x503809,_0xe42b77){io['to'](_0x5f41ea)['emit'](_0x503809,_0xe42b77);}function getCustomFields(_0x52cace,_0x39753a){var _0xf81284={};if(_0x52cace[_0x0a9e('0xb')]>0x0){_[_0x0a9e('0xc')](_0x52cace,function(_0xfeb75b){if(_[_0x0a9e('0xd')](['string','picklist'],_0xfeb75b['type'])&&_0xfeb75b['idField']){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0xfeb75b[_0x0a9e('0xf')][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x12')&&_0xfeb75b[_0x0a9e('0x13')]&&_0xfeb75b['idField']&&_0x39753a[_0xfeb75b[_0x0a9e('0x13')]]){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0x39753a[_0xfeb75b[_0x0a9e('0x13')]][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x14')&&_0xfeb75b['Variable']&&_0xfeb75b[_0x0a9e('0x15')]['name']&&_0xfeb75b[_0x0a9e('0xe')]&&_0x39753a[_0xfeb75b['Variable'][_0x0a9e('0x16')][_0x0a9e('0x17')]()]){_0xf81284[_0xfeb75b['idField']]=_0x39753a[_0xfeb75b[_0x0a9e('0x15')]['name'][_0x0a9e('0x17')]()][_0x0a9e('0x10')]();}});}return _0xf81284;}function createTicket(_0x106033,_0x205fd6,_0x31b1ca,_0x2eb11f,_0x530eb7,_0x20559e,_0x1314ae){logger[_0x0a9e('0x18')](_0x0a9e('0x19'));var _0x105080=_['merge']({'parent_id':'','assigned_user_id':_0x205fd6['id'],'ticketpriorities':_0x0a9e('0x1a'),'ticketstatus':_0x0a9e('0x1b'),'ticket_title':intUtil['getString'](_0x2eb11f[_0x0a9e('0x1c')],_0x530eb7,'\x20'),'description':intUtil['getString'](_0x2eb11f['Descriptions'],_0x530eb7,'\x0a'),'contact_id':_0x31b1ca['id']},getCustomFields(_0x20559e,_0x530eb7));var _0x3a02e1={'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x106033['remoteUri']),'form':{'operation':_0x0a9e('0x20'),'username':_0x106033[_0x0a9e('0x21')],'sessionName':_0x1314ae[_0x0a9e('0x22')],'elementType':_0x0a9e('0x23'),'element':JSON[_0x0a9e('0x24')](_0x105080)},'json':!![]};return request(_0x3a02e1)[_0x0a9e('0x25')](function(_0x16b1ca){if(_0x16b1ca['success']){return BPromise['resolve']({'id':_0x16b1ca[_0x0a9e('0x26')]['id']});}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x27'),JSON[_0x0a9e('0x24')](_0x16b1ca['error'])));}})[_0x0a9e('0x28')](function(_0x479bc4){var _0x45a1e7=_0x479bc4['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x45a1e7,JSON[_0x0a9e('0x24')](_0x479bc4));});}function getUser(_0x140511,_0x1538a4,_0x11c3b6){if(intUtil[_0x0a9e('0x2c')](_0x1538a4)){logger['info'](_0x0a9e('0x2d'),_0x1538a4);return request({'method':_0x0a9e('0x2e'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x140511['remoteUri']),'qs':{'operation':_0x0a9e('0x2f'),'username':_0x140511[_0x0a9e('0x21')],'sessionName':_0x11c3b6[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x30'),_0x1538a4)},'json':!![]})[_0x0a9e('0x25')](function(_0x296f41){if(_0x296f41[_0x0a9e('0x31')]&&_0x296f41[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')]('Agent\x20found!');return BPromise[_0x0a9e('0x32')]({'id':_0x296f41[_0x0a9e('0x26')][0x0]['id'],'email':_0x296f41[_0x0a9e('0x26')][0x0][_0x0a9e('0x33')],'name':_0x296f41[_0x0a9e('0x26')][0x0]['first_name']+'\x20'+_0x296f41[_0x0a9e('0x26')][_0x0a9e('0x34')]});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511[_0x0a9e('0x21')],'name':_0x0a9e('0x37')});}})['catch'](function(_0x44295a){var _0x5e7238=_0x44295a[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x39'),_0x5e7238,JSON['stringify'](_0x44295a));});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511['username'],'name':'admin'})[_0x0a9e('0x28')](function(_0x5640eb){var _0x24936a=_0x5640eb[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getUser',_0x24936a,JSON[_0x0a9e('0x24')](_0x5640eb));});}}function getEndUser(_0x3bfce8,_0x3cae,_0x533942,_0x1dbf74){logger[_0x0a9e('0x18')](_0x0a9e('0x3a'),_0x533942);return request({'method':'GET','uri':util['format'](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'qs':{'operation':'query','username':_0x3bfce8[_0x0a9e('0x21')],'sessionName':_0x1dbf74[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x3c'),_0x533942,_0x533942,_0x533942,_0x533942,_0x533942)},'json':!![]})['then'](function(_0x5a594b){if(_0x5a594b[_0x0a9e('0x31')]&&_0x5a594b[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')](_0x0a9e('0x3d'));return BPromise[_0x0a9e('0x32')]({'id':_0x5a594b['result'][0x0]['id'],'name':_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3e')]+'\x20'+_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3f')],'phone':_0x533942});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x40'));return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x20'),'sessionName':_0x1dbf74[_0x0a9e('0x22')],'elementType':_0x0a9e('0x41'),'element':JSON[_0x0a9e('0x24')]({'lastname':_0x3cae,'phone':_0x533942,'assigned_user_id':'\x20'})},'json':!![]})[_0x0a9e('0x25')](function(_0x4d04c8){logger['info'](_0x0a9e('0x42'));return BPromise[_0x0a9e('0x32')]({'id':_0x4d04c8[_0x0a9e('0x26')]['id'],'name':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x3f')],'phone':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x43')]});})[_0x0a9e('0x28')](function(_0x432fcc){var _0x25c6e6=_0x432fcc[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x0a9e('0x44'),_0x25c6e6,JSON[_0x0a9e('0x24')](_0x432fcc));});}});}function getConnection(_0xdd268f){var _0xfbd5ad=_0xdd268f[_0x0a9e('0x21')];var _0xbe9d19=_0xdd268f[_0x0a9e('0x45')];return request({'method':_0x0a9e('0x2e'),'uri':util['format'](_0x0a9e('0x1f'),_0xdd268f['remoteUri']),'qs':{'operation':_0x0a9e('0x46'),'username':_0xfbd5ad},'json':!![]})[_0x0a9e('0x25')](function(_0x8d6dd1){if(_0x8d6dd1['success']){return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0xdd268f[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x47'),'username':_0xfbd5ad,'accessKey':md5(_0x8d6dd1[_0x0a9e('0x26')][_0x0a9e('0x48')]+_0xbe9d19)},'json':!![]});}})['then'](function(_0x13f44d){if(_0x13f44d[_0x0a9e('0x31')]){return BPromise[_0x0a9e('0x32')](_0x13f44d[_0x0a9e('0x26')]);}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x49'),_0xdd268f['id']));}})[_0x0a9e('0x28')](function(_0x19383e){var _0x34febd=_0x19383e['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getConnection',_0x34febd,JSON['stringify'](_0x19383e));});}function request(_0x5ddf84){logger[_0x0a9e('0x18')](_0x0a9e('0x4a'),JSON[_0x0a9e('0x24')](_0x5ddf84));return rp(_0x5ddf84);}exports[_0x0a9e('0x4b')]=function(_0x61bb17,_0x30decb,_0x2e5165,_0x375c18,_0x5d38ae,_0x4b1b9f){var _0x53975a,_0x39d77d,_0x204173,_0x14d602;_0x4b1b9f['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x4b1b9f[_0x0a9e('0x3b')]);if(_0x5d38ae&&_0x5d38ae['monitor_format']){logger['info'](_0x0a9e('0x4d'),'Recording\x20is\x20enabled!');_0x30decb[_0x0a9e('0x4e')]=util['format'](_0x0a9e('0x4f'),_0x4b1b9f[_0x0a9e('0x50')],_0x30decb[_0x0a9e('0x51')],md5(_0x30decb['uniqueid']));}else{_0x30decb[_0x0a9e('0x4e')]='';}return getConnection(_0x4b1b9f)[_0x0a9e('0x25')](function(_0x508b47){_0x14d602=_0x508b47;return getUser(_0x4b1b9f,_0x375c18['email'],_0x14d602);})[_0x0a9e('0x25')](function(_0x3aedd0){_0x53975a=_0x3aedd0;logger['info'](_0x0a9e('0x52'),_0x53975a['id']);return getEndUser(_0x4b1b9f,_0x30decb['calleridname'],_0x30decb[_0x0a9e('0x53')],_0x14d602);})['then'](function(_0xe22ccc){_0x39d77d=_0xe22ccc;logger['info']('The\x20Enduser\x20ID\x20is:',_0x39d77d['id']);return createTicket(_0x4b1b9f,_0x53975a,_0x39d77d,_0x2e5165,_0x30decb,_0x2e5165['Fields'],_0x14d602);})[_0x0a9e('0x25')](function(_0x47de4c){_0x204173=_0x47de4c;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x204173['id']);var _0x232830=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x4b1b9f[_0x0a9e('0x3b')],_['split'](_0x204173['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x4d'),_0x0a9e('0x57'));emit(util[_0x0a9e('0x1e')](_0x0a9e('0x58'),_0x375c18[_0x0a9e('0x16')]),'trigger:browser:url',{'uri':_0x232830});})[_0x0a9e('0x28')](function(_0x26bc80){logger['error'](_0x0a9e('0x4d'),JSON['stringify'](_0x26bc80));});};exports[_0x0a9e('0x59')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee,_0x273cb5,_0x49d231,_0x2244d6,_0x1fc70e){var _0x261adb,_0x7be420,_0x1cca9f,_0x26d7db;_0x2244d6['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x2244d6['remoteUri']);_0x2244d6[_0x0a9e('0x50')]=intUtil[_0x0a9e('0x4c')](_0x2244d6[_0x0a9e('0x50')]);if(_0x1fc70e&&_0x1fc70e['recordingFormat']&&_0x1fc70e[_0x0a9e('0x5a')]!==_0x0a9e('0x5b')){logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),'Recording\x20is\x20enabled!');_0x4b3c1a[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2244d6[_0x0a9e('0x50')],_0x4b3c1a[_0x0a9e('0x51')],md5(_0x4b3c1a[_0x0a9e('0x51')]));}return getConnection(_0x2244d6)[_0x0a9e('0x25')](function(_0x401837){_0x26d7db=_0x401837;return getUser(_0x2244d6,_0x273cb5['email'],_0x26d7db);})[_0x0a9e('0x25')](function(_0x2937e0){_0x261adb=_0x2937e0;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x261adb['id']);return getEndUser(_0x2244d6,_0x4b3c1a[_0x0a9e('0x5d')],_0x4b3c1a['destcalleridnum'],_0x26d7db);})['then'](function(_0x242745){_0x7be420=_0x242745;logger[_0x0a9e('0x18')](_0x0a9e('0x5e'),_0x7be420['id']);return createTicket(_0x2244d6,_0x261adb,_0x7be420,_0x5674ee,_0x4b3c1a,_0x5674ee[_0x0a9e('0x5f')],_0x26d7db);})[_0x0a9e('0x25')](function(_0xc8c264){_0x1cca9f=_0xc8c264;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1cca9f['id']);var _0x2e89b7=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x2244d6[_0x0a9e('0x3b')],_[_0x0a9e('0x60')](_0x1cca9f['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),_0x0a9e('0x57'));emit(util['format'](_0x0a9e('0x58'),_0x273cb5[_0x0a9e('0x16')]),_0x0a9e('0x61'),{'uri':_0x2e89b7});})['catch'](function(_0x1148a1){logger[_0x0a9e('0x29')]('[OUTBOUND]',JSON[_0x0a9e('0x24')](_0x1148a1));});};exports[_0x0a9e('0x62')]=function(_0x3ef315,_0x427946,_0x13b5c0,_0x4a43a8,_0x50cdce,_0x4a2438){var _0x40fb85,_0x18bf5d,_0x1104ad,_0x23a7d3;_0x4a2438[_0x0a9e('0x3b')]=intUtil[_0x0a9e('0x4c')](_0x4a2438[_0x0a9e('0x3b')]);_0x4a2438[_0x0a9e('0x50')]=intUtil['stripTrailingSlash'](_0x4a2438[_0x0a9e('0x50')]);if(_0x50cdce&&_0x50cdce[_0x0a9e('0x63')]){logger[_0x0a9e('0x18')]('['+_0x427946['lastevent'][_0x0a9e('0x64')]()+']','Recording\x20is\x20enabled!');_0x427946[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a2438[_0x0a9e('0x50')],_0x427946[_0x0a9e('0x51')],md5(_0x427946[_0x0a9e('0x51')]));}else{_0x427946[_0x0a9e('0x4e')]='';}return getConnection(_0x4a2438)['then'](function(_0x1d442c){_0x23a7d3=_0x1d442c;return getUser(_0x4a2438,'',_0x23a7d3);})[_0x0a9e('0x25')](function(_0x371533){_0x40fb85=_0x371533;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x40fb85['id']);return getEndUser(_0x4a2438,_0x427946[_0x0a9e('0x65')],_0x427946[_0x0a9e('0x53')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0x361b21){_0x18bf5d=_0x361b21;logger['info'](_0x0a9e('0x5e'),_0x18bf5d['id']);return createTicket(_0x4a2438,_0x40fb85,_0x18bf5d,_0x13b5c0,_0x427946,_0x13b5c0[_0x0a9e('0x5f')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0xf410e5){_0x1104ad=_0xf410e5;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1104ad['id']);})[_0x0a9e('0x28')](function(_0x336dc3){logger[_0x0a9e('0x29')]('['+_0x427946[_0x0a9e('0x66')][_0x0a9e('0x64')]()+']',JSON[_0x0a9e('0x24')](_0x336dc3));});};
\ No newline at end of file
+var _0xa9e0=['variable','variableName','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','Normal','Open','Subjects','POST','format','%s/webservice.php','create','username','sessionName','HelpDesk','stringify','then','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','error','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','Getting\x20agent\x20with\x20email','GET','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','resolve','email1','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','statusCode','getUser','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','login','token','Account\x20%d\x20is\x20not\x20valid','[HTTP]','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','Fields','split','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridname','lastevent','lodash','request-promise','bluebird','ioredis','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','length','forEach','includes','idField','content','toString','type'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'use strict';var _=require(_0x0a9e('0x0'));var rp=require(_0x0a9e('0x1'));var BPromise=require(_0x0a9e('0x2'));var md5=require('md5');var util=require('util');var Redis=require(_0x0a9e('0x3'));var intUtil=require('./util');var config=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));config[_0x0a9e('0x7')]=_[_0x0a9e('0x8')](config['redis'],{'host':_0x0a9e('0x9'),'port':0x18eb});var io=require(_0x0a9e('0xa'))(new Redis(config[_0x0a9e('0x7')]));function emit(_0x5f41ea,_0x503809,_0xe42b77){io['to'](_0x5f41ea)['emit'](_0x503809,_0xe42b77);}function getCustomFields(_0x52cace,_0x39753a){var _0xf81284={};if(_0x52cace[_0x0a9e('0xb')]>0x0){_[_0x0a9e('0xc')](_0x52cace,function(_0xfeb75b){if(_[_0x0a9e('0xd')](['string','picklist'],_0xfeb75b['type'])&&_0xfeb75b['idField']){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0xfeb75b[_0x0a9e('0xf')][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x12')&&_0xfeb75b[_0x0a9e('0x13')]&&_0xfeb75b['idField']&&_0x39753a[_0xfeb75b[_0x0a9e('0x13')]]){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0x39753a[_0xfeb75b[_0x0a9e('0x13')]][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x14')&&_0xfeb75b['Variable']&&_0xfeb75b[_0x0a9e('0x15')]['name']&&_0xfeb75b[_0x0a9e('0xe')]&&_0x39753a[_0xfeb75b['Variable'][_0x0a9e('0x16')][_0x0a9e('0x17')]()]){_0xf81284[_0xfeb75b['idField']]=_0x39753a[_0xfeb75b[_0x0a9e('0x15')]['name'][_0x0a9e('0x17')]()][_0x0a9e('0x10')]();}});}return _0xf81284;}function createTicket(_0x106033,_0x205fd6,_0x31b1ca,_0x2eb11f,_0x530eb7,_0x20559e,_0x1314ae){logger[_0x0a9e('0x18')](_0x0a9e('0x19'));var _0x105080=_['merge']({'parent_id':'','assigned_user_id':_0x205fd6['id'],'ticketpriorities':_0x0a9e('0x1a'),'ticketstatus':_0x0a9e('0x1b'),'ticket_title':intUtil['getString'](_0x2eb11f[_0x0a9e('0x1c')],_0x530eb7,'\x20'),'description':intUtil['getString'](_0x2eb11f['Descriptions'],_0x530eb7,'\x0a'),'contact_id':_0x31b1ca['id']},getCustomFields(_0x20559e,_0x530eb7));var _0x3a02e1={'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x106033['remoteUri']),'form':{'operation':_0x0a9e('0x20'),'username':_0x106033[_0x0a9e('0x21')],'sessionName':_0x1314ae[_0x0a9e('0x22')],'elementType':_0x0a9e('0x23'),'element':JSON[_0x0a9e('0x24')](_0x105080)},'json':!![]};return request(_0x3a02e1)[_0x0a9e('0x25')](function(_0x16b1ca){if(_0x16b1ca['success']){return BPromise['resolve']({'id':_0x16b1ca[_0x0a9e('0x26')]['id']});}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x27'),JSON[_0x0a9e('0x24')](_0x16b1ca['error'])));}})[_0x0a9e('0x28')](function(_0x479bc4){var _0x45a1e7=_0x479bc4['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x45a1e7,JSON[_0x0a9e('0x24')](_0x479bc4));});}function getUser(_0x140511,_0x1538a4,_0x11c3b6){if(intUtil[_0x0a9e('0x2c')](_0x1538a4)){logger['info'](_0x0a9e('0x2d'),_0x1538a4);return request({'method':_0x0a9e('0x2e'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x140511['remoteUri']),'qs':{'operation':_0x0a9e('0x2f'),'username':_0x140511[_0x0a9e('0x21')],'sessionName':_0x11c3b6[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x30'),_0x1538a4)},'json':!![]})[_0x0a9e('0x25')](function(_0x296f41){if(_0x296f41[_0x0a9e('0x31')]&&_0x296f41[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')]('Agent\x20found!');return BPromise[_0x0a9e('0x32')]({'id':_0x296f41[_0x0a9e('0x26')][0x0]['id'],'email':_0x296f41[_0x0a9e('0x26')][0x0][_0x0a9e('0x33')],'name':_0x296f41[_0x0a9e('0x26')][0x0]['first_name']+'\x20'+_0x296f41[_0x0a9e('0x26')][_0x0a9e('0x34')]});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511[_0x0a9e('0x21')],'name':_0x0a9e('0x37')});}})['catch'](function(_0x44295a){var _0x5e7238=_0x44295a[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x39'),_0x5e7238,JSON['stringify'](_0x44295a));});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511['username'],'name':'admin'})[_0x0a9e('0x28')](function(_0x5640eb){var _0x24936a=_0x5640eb[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getUser',_0x24936a,JSON[_0x0a9e('0x24')](_0x5640eb));});}}function getEndUser(_0x3bfce8,_0x3cae,_0x533942,_0x1dbf74){logger[_0x0a9e('0x18')](_0x0a9e('0x3a'),_0x533942);return request({'method':'GET','uri':util['format'](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'qs':{'operation':'query','username':_0x3bfce8[_0x0a9e('0x21')],'sessionName':_0x1dbf74[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x3c'),_0x533942,_0x533942,_0x533942,_0x533942,_0x533942)},'json':!![]})['then'](function(_0x5a594b){if(_0x5a594b[_0x0a9e('0x31')]&&_0x5a594b[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')](_0x0a9e('0x3d'));return BPromise[_0x0a9e('0x32')]({'id':_0x5a594b['result'][0x0]['id'],'name':_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3e')]+'\x20'+_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3f')],'phone':_0x533942});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x40'));return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x20'),'sessionName':_0x1dbf74[_0x0a9e('0x22')],'elementType':_0x0a9e('0x41'),'element':JSON[_0x0a9e('0x24')]({'lastname':_0x3cae,'phone':_0x533942,'assigned_user_id':'\x20'})},'json':!![]})[_0x0a9e('0x25')](function(_0x4d04c8){logger['info'](_0x0a9e('0x42'));return BPromise[_0x0a9e('0x32')]({'id':_0x4d04c8[_0x0a9e('0x26')]['id'],'name':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x3f')],'phone':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x43')]});})[_0x0a9e('0x28')](function(_0x432fcc){var _0x25c6e6=_0x432fcc[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x0a9e('0x44'),_0x25c6e6,JSON[_0x0a9e('0x24')](_0x432fcc));});}});}function getConnection(_0xdd268f){var _0xfbd5ad=_0xdd268f[_0x0a9e('0x21')];var _0xbe9d19=_0xdd268f[_0x0a9e('0x45')];return request({'method':_0x0a9e('0x2e'),'uri':util['format'](_0x0a9e('0x1f'),_0xdd268f['remoteUri']),'qs':{'operation':_0x0a9e('0x46'),'username':_0xfbd5ad},'json':!![]})[_0x0a9e('0x25')](function(_0x8d6dd1){if(_0x8d6dd1['success']){return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0xdd268f[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x47'),'username':_0xfbd5ad,'accessKey':md5(_0x8d6dd1[_0x0a9e('0x26')][_0x0a9e('0x48')]+_0xbe9d19)},'json':!![]});}})['then'](function(_0x13f44d){if(_0x13f44d[_0x0a9e('0x31')]){return BPromise[_0x0a9e('0x32')](_0x13f44d[_0x0a9e('0x26')]);}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x49'),_0xdd268f['id']));}})[_0x0a9e('0x28')](function(_0x19383e){var _0x34febd=_0x19383e['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getConnection',_0x34febd,JSON['stringify'](_0x19383e));});}function request(_0x5ddf84){logger[_0x0a9e('0x18')](_0x0a9e('0x4a'),JSON[_0x0a9e('0x24')](_0x5ddf84));return rp(_0x5ddf84);}exports[_0x0a9e('0x4b')]=function(_0x61bb17,_0x30decb,_0x2e5165,_0x375c18,_0x5d38ae,_0x4b1b9f){var _0x53975a,_0x39d77d,_0x204173,_0x14d602;_0x4b1b9f['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x4b1b9f[_0x0a9e('0x3b')]);if(_0x5d38ae&&_0x5d38ae['monitor_format']){logger['info'](_0x0a9e('0x4d'),'Recording\x20is\x20enabled!');_0x30decb[_0x0a9e('0x4e')]=util['format'](_0x0a9e('0x4f'),_0x4b1b9f[_0x0a9e('0x50')],_0x30decb[_0x0a9e('0x51')],md5(_0x30decb['uniqueid']));}else{_0x30decb[_0x0a9e('0x4e')]='';}return getConnection(_0x4b1b9f)[_0x0a9e('0x25')](function(_0x508b47){_0x14d602=_0x508b47;return getUser(_0x4b1b9f,_0x375c18['email'],_0x14d602);})[_0x0a9e('0x25')](function(_0x3aedd0){_0x53975a=_0x3aedd0;logger['info'](_0x0a9e('0x52'),_0x53975a['id']);return getEndUser(_0x4b1b9f,_0x30decb['calleridname'],_0x30decb[_0x0a9e('0x53')],_0x14d602);})['then'](function(_0xe22ccc){_0x39d77d=_0xe22ccc;logger['info']('The\x20Enduser\x20ID\x20is:',_0x39d77d['id']);return createTicket(_0x4b1b9f,_0x53975a,_0x39d77d,_0x2e5165,_0x30decb,_0x2e5165['Fields'],_0x14d602);})[_0x0a9e('0x25')](function(_0x47de4c){_0x204173=_0x47de4c;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x204173['id']);var _0x232830=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x4b1b9f[_0x0a9e('0x3b')],_['split'](_0x204173['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x4d'),_0x0a9e('0x57'));emit(util[_0x0a9e('0x1e')](_0x0a9e('0x58'),_0x375c18[_0x0a9e('0x16')]),'trigger:browser:url',{'uri':_0x232830});})[_0x0a9e('0x28')](function(_0x26bc80){logger['error'](_0x0a9e('0x4d'),JSON['stringify'](_0x26bc80));});};exports[_0x0a9e('0x59')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee,_0x273cb5,_0x49d231,_0x2244d6,_0x1fc70e){var _0x261adb,_0x7be420,_0x1cca9f,_0x26d7db;_0x2244d6['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x2244d6['remoteUri']);_0x2244d6[_0x0a9e('0x50')]=intUtil[_0x0a9e('0x4c')](_0x2244d6[_0x0a9e('0x50')]);if(_0x1fc70e&&_0x1fc70e['recordingFormat']&&_0x1fc70e[_0x0a9e('0x5a')]!==_0x0a9e('0x5b')){logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),'Recording\x20is\x20enabled!');_0x4b3c1a[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2244d6[_0x0a9e('0x50')],_0x4b3c1a[_0x0a9e('0x51')],md5(_0x4b3c1a[_0x0a9e('0x51')]));}return getConnection(_0x2244d6)[_0x0a9e('0x25')](function(_0x401837){_0x26d7db=_0x401837;return getUser(_0x2244d6,_0x273cb5['email'],_0x26d7db);})[_0x0a9e('0x25')](function(_0x2937e0){_0x261adb=_0x2937e0;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x261adb['id']);return getEndUser(_0x2244d6,_0x4b3c1a[_0x0a9e('0x5d')],_0x4b3c1a['destcalleridnum'],_0x26d7db);})['then'](function(_0x242745){_0x7be420=_0x242745;logger[_0x0a9e('0x18')](_0x0a9e('0x5e'),_0x7be420['id']);return createTicket(_0x2244d6,_0x261adb,_0x7be420,_0x5674ee,_0x4b3c1a,_0x5674ee[_0x0a9e('0x5f')],_0x26d7db);})[_0x0a9e('0x25')](function(_0xc8c264){_0x1cca9f=_0xc8c264;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1cca9f['id']);var _0x2e89b7=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x2244d6[_0x0a9e('0x3b')],_[_0x0a9e('0x60')](_0x1cca9f['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),_0x0a9e('0x57'));emit(util['format'](_0x0a9e('0x58'),_0x273cb5[_0x0a9e('0x16')]),_0x0a9e('0x61'),{'uri':_0x2e89b7});})['catch'](function(_0x1148a1){logger[_0x0a9e('0x29')]('[OUTBOUND]',JSON[_0x0a9e('0x24')](_0x1148a1));});};exports[_0x0a9e('0x62')]=function(_0x3ef315,_0x427946,_0x13b5c0,_0x4a43a8,_0x50cdce,_0x4a2438){var _0x40fb85,_0x18bf5d,_0x1104ad,_0x23a7d3;_0x4a2438[_0x0a9e('0x3b')]=intUtil[_0x0a9e('0x4c')](_0x4a2438[_0x0a9e('0x3b')]);_0x4a2438[_0x0a9e('0x50')]=intUtil['stripTrailingSlash'](_0x4a2438[_0x0a9e('0x50')]);if(_0x50cdce&&_0x50cdce[_0x0a9e('0x63')]){logger[_0x0a9e('0x18')]('['+_0x427946['lastevent'][_0x0a9e('0x64')]()+']','Recording\x20is\x20enabled!');_0x427946[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a2438[_0x0a9e('0x50')],_0x427946[_0x0a9e('0x51')],md5(_0x427946[_0x0a9e('0x51')]));}else{_0x427946[_0x0a9e('0x4e')]='';}return getConnection(_0x4a2438)['then'](function(_0x1d442c){_0x23a7d3=_0x1d442c;return getUser(_0x4a2438,'',_0x23a7d3);})[_0x0a9e('0x25')](function(_0x371533){_0x40fb85=_0x371533;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x40fb85['id']);return getEndUser(_0x4a2438,_0x427946[_0x0a9e('0x65')],_0x427946[_0x0a9e('0x53')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0x361b21){_0x18bf5d=_0x361b21;logger['info'](_0x0a9e('0x5e'),_0x18bf5d['id']);return createTicket(_0x4a2438,_0x40fb85,_0x18bf5d,_0x13b5c0,_0x427946,_0x13b5c0[_0x0a9e('0x5f')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0xf410e5){_0x1104ad=_0xf410e5;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1104ad['id']);})[_0x0a9e('0x28')](function(_0x336dc3){logger[_0x0a9e('0x29')]('['+_0x427946[_0x0a9e('0x66')][_0x0a9e('0x64')]()+']',JSON[_0x0a9e('0x24')](_0x336dc3));});};
\ No newline at end of file
index 0f3abcc..bc39d0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd632=['ioredis','../../../../config/logger','redis','defaults','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','remoteUri','POST','merge','name','Subjects','getString','Descriptions','Fields','then','Ticket\x20created!','ticket','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','agent','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Enduser\x20created.','authType','password','username','token','Basic\x20%s','toString','base64','debug','stringify','GET','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','custom_fields','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','user:%s','trigger:browser:url','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','recordingFormat','none','Recording\x20is\x20enabled!','email','destcalleridname','destcalleridnum','[OUTBOUND]','%s/agent/tickets/%s','catch','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','calleridnum','lastevent','toUpperCase','request-promise','md5','util'];(function(_0x2dc96f,_0x459058){var _0xd012da=function(_0x38d032){while(--_0x38d032){_0x2dc96f['push'](_0x2dc96f['shift']());}};_0xd012da(++_0x459058);}(_0xd632,0x1a5));var _0x2d63=function(_0x1fb94f,_0x2812e7){_0x1fb94f=_0x1fb94f-0x0;var _0x2a1bd0=_0xd632[_0x1fb94f];return _0x2a1bd0;};'use strict';var _=require('lodash');var rp=require(_0x2d63('0x0'));var md5=require(_0x2d63('0x1'));var util=require(_0x2d63('0x2'));var Redis=require(_0x2d63('0x3'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x2d63('0x4'))('zendesk');config[_0x2d63('0x5')]=_[_0x2d63('0x6')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x2d63('0x7'))(new Redis(config['redis']));function emit(_0xc01a4f,_0x57bba2,_0x545352){io['to'](_0xc01a4f)[_0x2d63('0x8')](_0x57bba2,_0x545352);}var headers={'Content-Type':'application/json','Accept':_0x2d63('0x9')};function getTicket(_0x486217,_0x2df748,_0x3207a0,_0x24d430,_0xf33f06){logger[_0x2d63('0xa')](_0x2d63('0xb'));return request({'uri':util[_0x2d63('0xc')]('%s/tickets.json',_0x486217[_0x2d63('0xd')]),'method':_0x2d63('0xe'),'body':{'ticket':_[_0x2d63('0xf')]({'requester_id':_0x3207a0['id'],'submitter_id':_0x2df748?_0x2df748['id']:undefined,'assignee_id':_0x2df748?_0x2df748['id']:undefined,'tags':getTags(_0x24d430['Tags'],_0x2d63('0x10')),'subject':intUtil['getString'](_0x24d430[_0x2d63('0x11')],_0xf33f06,'\x20'),'description':intUtil[_0x2d63('0x12')](_0x24d430['Descriptions'],_0xf33f06,'\x0a'),'comment':{'public':![],'body':intUtil[_0x2d63('0x12')](_0x24d430[_0x2d63('0x13')],_0xf33f06,'\x0a')}},getCustomFields(_0x24d430[_0x2d63('0x14')],_0xf33f06))}})[_0x2d63('0x15')](function(_0x28ffa4){logger[_0x2d63('0xa')](_0x2d63('0x16'));return _0x28ffa4[_0x2d63('0x17')];});}function getUser(_0x329a59,_0x508808){if(intUtil['validateEmail'](_0x508808)){logger[_0x2d63('0xa')](_0x2d63('0x18'),_0x508808);return request({'uri':util[_0x2d63('0xc')](_0x2d63('0x19'),_0x329a59[_0x2d63('0xd')]),'qs':{'query':util[_0x2d63('0xc')](_0x2d63('0x1a'),_0x508808)}})['then'](function(_0x322142){if(_0x322142[_0x2d63('0x1b')]){logger[_0x2d63('0xa')](_0x2d63('0x1c'));return _[_0x2d63('0x1d')](_0x322142[_0x2d63('0x1e')],{'email':_0x508808,'role':_0x2d63('0x1f')});}else{logger[_0x2d63('0xa')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format']('%s/users/me.json',_0x329a59[_0x2d63('0xd')])})[_0x2d63('0x15')](function(_0x46a5df){logger[_0x2d63('0xa')](_0x2d63('0x20'));return _0x46a5df[_0x2d63('0x21')];});}});}else{logger['info'](_0x2d63('0x22'));return request({'uri':util['format']('%s/users/me.json',_0x329a59[_0x2d63('0xd')])})[_0x2d63('0x15')](function(_0x4c4b80){logger['info'](_0x2d63('0x20'));return _0x4c4b80['user'];});}}function getEndUser(_0x1ca1c4,_0x48e5c8,_0x90037e){logger[_0x2d63('0xa')](_0x2d63('0x23'),_0x90037e);return request({'uri':util[_0x2d63('0xc')](_0x2d63('0x19'),_0x1ca1c4['remoteUri']),'qs':{'query':util[_0x2d63('0xc')](_0x2d63('0x24'),_0x90037e)}})[_0x2d63('0x15')](function(_0x702b08){var _0xb6610f;if(_0x702b08[_0x2d63('0x1e')][_0x2d63('0x25')]){_0x702b08[_0x2d63('0x1e')]=_[_0x2d63('0x26')](_0x702b08[_0x2d63('0x1e')],{'suspended':![],'role':_0x2d63('0x27')});if(_0x702b08[_0x2d63('0x1e')]['length']){_0xb6610f=_['first'](_0x702b08[_0x2d63('0x1e')]);}}if(_0xb6610f){logger[_0x2d63('0xa')](_0x2d63('0x28'));return _0xb6610f;}else{logger[_0x2d63('0xa')](_0x2d63('0x29'));return request({'uri':util[_0x2d63('0xc')](_0x2d63('0x2a'),_0x1ca1c4[_0x2d63('0xd')]),'method':_0x2d63('0xe'),'body':{'user':{'role':'end-user','name':util[_0x2d63('0xc')]('Caller\x20-\x20%s',_0x48e5c8||_0x90037e),'phone':_0x90037e}}})[_0x2d63('0x15')](function(_0x49c99a){logger[_0x2d63('0xa')](_0x2d63('0x2b'));return _0x49c99a[_0x2d63('0x21')];});}});}function getAuth(_0x135a50){var _0xe5ecc3;if(_0x135a50[_0x2d63('0x2c')]===_0x2d63('0x2d')){_0xe5ecc3=util[_0x2d63('0xc')]('%s:%s',_0x135a50['username'],_0x135a50['password']);}else if(_0x135a50[_0x2d63('0x2c')]==='token'){_0xe5ecc3=util[_0x2d63('0xc')]('%s/token:%s',_0x135a50[_0x2d63('0x2e')],_0x135a50[_0x2d63('0x2f')]);}return util['format'](_0x2d63('0x30'),new Buffer(_0xe5ecc3)[_0x2d63('0x31')](_0x2d63('0x32')));}function request(_0x35c080){logger[_0x2d63('0x33')]('[HTTP]',JSON[_0x2d63('0x34')](_0x35c080));return rp(_[_0x2d63('0x6')](_0x35c080,{'method':_0x2d63('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x4375e5,_0x12f84c){var _0x171a37=[];if(_0x4375e5&&_0x4375e5['length']>0x0){_0x171a37=_['map'](_0x4375e5,_0x12f84c);}return _0x171a37;}function getCustomFields(_0x254b78,_0xdd71b){var _0x2f1e33=[];var _0x1679bb={'custom_fields':[]};if(_0x254b78['length']>0x0){_[_0x2d63('0x36')](_0x254b78,function(_0x3860d8){if(_[_0x2d63('0x37')]([_0x2d63('0x38'),_0x2d63('0x39')],_0x3860d8[_0x2d63('0x3a')])&&_0x3860d8[_0x2d63('0x3b')]&&!_0x3860d8[_0x2d63('0x3c')]){_0x1679bb[_0x3860d8[_0x2d63('0x3b')][_0x2d63('0x3d')]()]=_0x3860d8[_0x2d63('0x3e')][_0x2d63('0x31')]();}else if(_[_0x2d63('0x37')]([_0x2d63('0x38'),'picklist'],_0x3860d8['type'])&&_0x3860d8[_0x2d63('0x3f')]&&_0x3860d8[_0x2d63('0x3c')]){_0x1679bb[_0x2d63('0x40')]['push']({'id':_0x3860d8['idField'],'value':_0x3860d8['content'][_0x2d63('0x31')]()});}else if(_0x3860d8[_0x2d63('0x3a')]==='variable'&&_0x3860d8[_0x2d63('0x41')]&&_0x3860d8[_0x2d63('0x3f')]&&_0x3860d8[_0x2d63('0x3c')]){_0xdd71b[_0x3860d8['variableName']]&&_0x1679bb[_0x2d63('0x40')]['push']({'id':_0x3860d8['idField'],'value':_0xdd71b[_0x3860d8[_0x2d63('0x41')]][_0x2d63('0x31')]()});}else if(_0x3860d8['type']===_0x2d63('0x42')&&_0x3860d8[_0x2d63('0x43')]&&_0x3860d8[_0x2d63('0x43')][_0x2d63('0x10')]&&_0x3860d8[_0x2d63('0x3f')]&&_0x3860d8[_0x2d63('0x3c')]){_0xdd71b[_0x3860d8[_0x2d63('0x43')][_0x2d63('0x10')][_0x2d63('0x3d')]()]&&_0x1679bb[_0x2d63('0x40')]['push']({'id':_0x3860d8[_0x2d63('0x3f')],'value':_0xdd71b[_0x3860d8['Variable'][_0x2d63('0x10')]['toLowerCase']()]['toString']()});}});}return _0x1679bb;}exports['queue']=function(_0x21d210,_0x3e09ff,_0x140369,_0x76742e,_0x20b620,_0x3c2dc8){var _0x31bcca,_0x4f27f3;_0x3c2dc8[_0x2d63('0xd')]=intUtil[_0x2d63('0x44')](_0x3c2dc8[_0x2d63('0xd')]);_0x3c2dc8[_0x2d63('0x45')]=intUtil[_0x2d63('0x44')](_0x3c2dc8[_0x2d63('0x45')]);if(_0x20b620&&_0x20b620[_0x2d63('0x46')]){logger[_0x2d63('0xa')](_0x2d63('0x47'),'Recording\x20is\x20enabled!');_0x3e09ff[_0x2d63('0x48')]=util[_0x2d63('0xc')](_0x2d63('0x49'),_0x3c2dc8[_0x2d63('0x45')],_0x3e09ff[_0x2d63('0x4a')],md5(_0x3e09ff['uniqueid']));}else{_0x3e09ff['recordingURL']='';}headers[_0x2d63('0x4b')]=getAuth(_0x3c2dc8);return getUser(_0x3c2dc8,_0x76742e['email'])[_0x2d63('0x15')](function(_0x4f82f2){_0x31bcca=_0x4f82f2;logger[_0x2d63('0xa')](_0x2d63('0x4c'),_0x31bcca['id']);return getEndUser(_0x3c2dc8,_0x3e09ff[_0x2d63('0x4d')],_0x3e09ff['calleridnum']);})[_0x2d63('0x15')](function(_0x4bc041){_0x4f27f3=_0x4bc041;logger['info'](_0x2d63('0x4e'),_0x4f27f3['id']);return getTicket(_0x3c2dc8,_0x31bcca,_0x4f27f3,_0x140369,_0x3e09ff);})['then'](function(_0x1a5ab6){if(_0x1a5ab6){logger[_0x2d63('0xa')](_0x2d63('0x4f'),_0x1a5ab6['id']);switch(_0x3c2dc8[_0x2d63('0x3a')]){case _0x2d63('0x50'):logger[_0x2d63('0xa')](_0x2d63('0x47'),_0x2d63('0x51'));return request({'uri':util[_0x2d63('0xc')](_0x2d63('0x52'),_0x3c2dc8['remoteUri'],_0x31bcca['id'],_0x1a5ab6['id']),'method':_0x2d63('0xe')});case _0x2d63('0x53'):logger[_0x2d63('0xa')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x2d63('0x54'),_0x76742e[_0x2d63('0x10')]),_0x2d63('0x55'),{'uri':util[_0x2d63('0xc')]('%s/agent/tickets/%s',_0x3c2dc8[_0x2d63('0xd')][_0x2d63('0x56')](_0x2d63('0x57'),''),_0x1a5ab6['id'])});break;default:logger[_0x2d63('0x58')]('[QUEUE]',_0x2d63('0x59'));}}})['catch'](function(_0x32be5a){logger[_0x2d63('0x58')](_0x2d63('0x5a'),util[_0x2d63('0x5b')](_0x32be5a,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x13d598,_0x33fbc0,_0x3b93b0,_0x1a177c,_0x2339ff,_0x4cc09c,_0xff6474){var _0x26787f,_0x433db4;_0x4cc09c[_0x2d63('0xd')]=intUtil[_0x2d63('0x44')](_0x4cc09c[_0x2d63('0xd')]);_0x4cc09c[_0x2d63('0x45')]=intUtil[_0x2d63('0x44')](_0x4cc09c['serverUrl']);if(_0xff6474&&_0xff6474[_0x2d63('0x5c')]&&_0xff6474['recordingFormat']!==_0x2d63('0x5d')){logger[_0x2d63('0xa')]('[OUTBOUND]',_0x2d63('0x5e'));_0x33fbc0[_0x2d63('0x48')]=util[_0x2d63('0xc')](_0x2d63('0x49'),_0x4cc09c[_0x2d63('0x45')],_0x33fbc0[_0x2d63('0x4a')],md5(_0x33fbc0['uniqueid']));}headers[_0x2d63('0x4b')]=getAuth(_0x4cc09c);return getUser(_0x4cc09c,_0x1a177c[_0x2d63('0x5f')])[_0x2d63('0x15')](function(_0xf98a1b){_0x26787f=_0xf98a1b;logger['info'](_0x2d63('0x4c'),_0x26787f['id']);return getEndUser(_0x4cc09c,_0x33fbc0[_0x2d63('0x60')],_0x33fbc0[_0x2d63('0x61')]);})[_0x2d63('0x15')](function(_0x2b4ae0){_0x433db4=_0x2b4ae0;logger[_0x2d63('0xa')](_0x2d63('0x4e'),_0x433db4['id']);return getTicket(_0x4cc09c,_0x26787f,_0x433db4,_0x3b93b0,_0x33fbc0);})[_0x2d63('0x15')](function(_0xa3f4ca){if(_0xa3f4ca){logger[_0x2d63('0xa')](_0x2d63('0x4f'),_0xa3f4ca['id']);switch(_0x4cc09c[_0x2d63('0x3a')]){case _0x2d63('0x50'):logger[_0x2d63('0xa')](_0x2d63('0x62'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util['format'](_0x2d63('0x52'),_0x4cc09c['remoteUri'],_0x26787f['id'],_0xa3f4ca['id']),'method':'POST'});case'newTab':logger[_0x2d63('0xa')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x2d63('0xc')]('user:%s',_0x1a177c[_0x2d63('0x10')]),_0x2d63('0x55'),{'uri':util[_0x2d63('0xc')](_0x2d63('0x63'),_0x4cc09c['remoteUri']['replace'](_0x2d63('0x57'),''),_0xa3f4ca['id'])});break;default:logger[_0x2d63('0x58')](_0x2d63('0x62'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x2d63('0x64')](function(_0x2cf893){logger['error'](_0x2d63('0x65'),util[_0x2d63('0x5b')](_0x2cf893,{'showHidden':!![],'depth':null}));});};exports[_0x2d63('0x66')]=function(_0x322482,_0x5d416d,_0x42882a,_0x524d35,_0xcc21b9,_0x4b80b9){var _0xbfeb84,_0x35c9f2;_0x4b80b9[_0x2d63('0xd')]=intUtil[_0x2d63('0x44')](_0x4b80b9[_0x2d63('0xd')]);_0x4b80b9[_0x2d63('0x45')]=intUtil[_0x2d63('0x44')](_0x4b80b9[_0x2d63('0x45')]);if(_0xcc21b9&&_0xcc21b9[_0x2d63('0x46')]){logger[_0x2d63('0xa')]('['+_0x5d416d['lastevent']['toUpperCase']()+']',_0x2d63('0x5e'));_0x5d416d[_0x2d63('0x48')]=util[_0x2d63('0xc')](_0x2d63('0x49'),_0x4b80b9['serverUrl'],_0x5d416d[_0x2d63('0x4a')],md5(_0x5d416d[_0x2d63('0x4a')]));}else{_0x5d416d[_0x2d63('0x48')]='';}headers[_0x2d63('0x4b')]=getAuth(_0x4b80b9);return getUser(_0x4b80b9)[_0x2d63('0x15')](function(_0x18d7e4){_0xbfeb84=_0x18d7e4;logger[_0x2d63('0xa')](_0x2d63('0x4c'),_0xbfeb84['id']);return getEndUser(_0x4b80b9,_0x5d416d[_0x2d63('0x4d')],_0x5d416d[_0x2d63('0x67')]);})['then'](function(_0x3f91c1){_0x35c9f2=_0x3f91c1;logger[_0x2d63('0xa')]('The\x20Enduser\x20ID\x20is:',_0x35c9f2['id']);return getTicket(_0x4b80b9,_0xbfeb84,_0x35c9f2,_0x42882a,_0x5d416d);})[_0x2d63('0x15')](function(_0x3e1c19){if(_0x3e1c19){logger['info'](_0x2d63('0x4f'),_0x3e1c19['id']);}})[_0x2d63('0x64')](function(_0x39d300){logger[_0x2d63('0x58')]('['+_0x5d416d[_0x2d63('0x68')][_0x2d63('0x69')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x39d300,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xa053=['push','variable','variableName','custom_fields','Variable','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','destcalleridname','destcalleridnum','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','monitor_format','lastevent','toUpperCase','Authorization','catch','\x20Error\x20running\x20Zendesk\x20integration','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','merge','Tags','name','getString','Subjects','Descriptions','Fields','then','Ticket\x20created!','ticket','validateEmail','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','remoteUri','user','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','filter','length','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','end-user','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','toString','base64','debug','[HTTP]','GET','map','forEach','includes','picklist','type','nameField','customField','content','idField'];(function(_0x1e48d3,_0x5d8c43){var _0x2852b1=function(_0x11d7b3){while(--_0x11d7b3){_0x1e48d3['push'](_0x1e48d3['shift']());}};_0x2852b1(++_0x5d8c43);}(_0xa053,0x119));var _0x3a05=function(_0x43fb6f,_0xa354ea){_0x43fb6f=_0x43fb6f-0x0;var _0x1eab22=_0xa053[_0x43fb6f];return _0x1eab22;};'use strict';var _=require('lodash');var rp=require(_0x3a05('0x0'));var md5=require(_0x3a05('0x1'));var util=require(_0x3a05('0x2'));var Redis=require(_0x3a05('0x3'));var intUtil=require(_0x3a05('0x4'));var config=require(_0x3a05('0x5'));var logger=require(_0x3a05('0x6'))('zendesk');config[_0x3a05('0x7')]=_[_0x3a05('0x8')](config[_0x3a05('0x7')],{'host':_0x3a05('0x9'),'port':0x18eb});var io=require(_0x3a05('0xa'))(new Redis(config[_0x3a05('0x7')]));function emit(_0x5b6231,_0x4d8be2,_0x2c15f1){io['to'](_0x5b6231)['emit'](_0x4d8be2,_0x2c15f1);}var headers={'Content-Type':_0x3a05('0xb'),'Accept':_0x3a05('0xb')};function getTicket(_0x65b286,_0x58c6b6,_0x427302,_0x442ba4,_0x53b63f){logger[_0x3a05('0xc')](_0x3a05('0xd'));return request({'uri':util[_0x3a05('0xe')](_0x3a05('0xf'),_0x65b286['remoteUri']),'method':'POST','body':{'ticket':_[_0x3a05('0x10')]({'requester_id':_0x427302['id'],'submitter_id':_0x58c6b6?_0x58c6b6['id']:undefined,'assignee_id':_0x58c6b6?_0x58c6b6['id']:undefined,'tags':getTags(_0x442ba4[_0x3a05('0x11')],_0x3a05('0x12')),'subject':intUtil[_0x3a05('0x13')](_0x442ba4[_0x3a05('0x14')],_0x53b63f,'\x20'),'description':intUtil['getString'](_0x442ba4[_0x3a05('0x15')],_0x53b63f,'\x0a'),'comment':{'public':![],'body':intUtil[_0x3a05('0x13')](_0x442ba4[_0x3a05('0x15')],_0x53b63f,'\x0a')}},getCustomFields(_0x442ba4[_0x3a05('0x16')],_0x53b63f))}})[_0x3a05('0x17')](function(_0x3e9b0d){logger[_0x3a05('0xc')](_0x3a05('0x18'));return _0x3e9b0d[_0x3a05('0x19')];});}function getUser(_0x29067b,_0x13502d){if(intUtil[_0x3a05('0x1a')](_0x13502d)){logger[_0x3a05('0xc')]('Getting\x20agent\x20with\x20email',_0x13502d);return request({'uri':util[_0x3a05('0xe')](_0x3a05('0x1b'),_0x29067b['remoteUri']),'qs':{'query':util[_0x3a05('0xe')](_0x3a05('0x1c'),_0x13502d)}})['then'](function(_0x10ab06){if(_0x10ab06[_0x3a05('0x1d')]){logger[_0x3a05('0xc')](_0x3a05('0x1e'));return _[_0x3a05('0x1f')](_0x10ab06[_0x3a05('0x20')],{'email':_0x13502d,'role':_0x3a05('0x21')});}else{logger[_0x3a05('0xc')](_0x3a05('0x22'));return request({'uri':util[_0x3a05('0xe')](_0x3a05('0x23'),_0x29067b[_0x3a05('0x24')])})[_0x3a05('0x17')](function(_0x4af7b7){logger[_0x3a05('0xc')]('Admin\x20account\x20selected.');return _0x4af7b7[_0x3a05('0x25')];});}});}else{logger['info'](_0x3a05('0x22'));return request({'uri':util[_0x3a05('0xe')](_0x3a05('0x23'),_0x29067b[_0x3a05('0x24')])})[_0x3a05('0x17')](function(_0x56ac77){logger[_0x3a05('0xc')](_0x3a05('0x26'));return _0x56ac77[_0x3a05('0x25')];});}}function getEndUser(_0x1f4239,_0x36ba47,_0x47e68e){logger[_0x3a05('0xc')](_0x3a05('0x27'),_0x47e68e);return request({'uri':util[_0x3a05('0xe')]('%s/search.json',_0x1f4239['remoteUri']),'qs':{'query':util[_0x3a05('0xe')](_0x3a05('0x28'),_0x47e68e)}})['then'](function(_0x5dff29){var _0xb44df1;if(_0x5dff29[_0x3a05('0x20')]['length']){_0x5dff29['results']=_[_0x3a05('0x29')](_0x5dff29[_0x3a05('0x20')],{'suspended':![],'role':'end-user'});if(_0x5dff29[_0x3a05('0x20')][_0x3a05('0x2a')]){_0xb44df1=_[_0x3a05('0x2b')](_0x5dff29[_0x3a05('0x20')]);}}if(_0xb44df1){logger['info'](_0x3a05('0x2c'));return _0xb44df1;}else{logger[_0x3a05('0xc')](_0x3a05('0x2d'));return request({'uri':util[_0x3a05('0xe')]('%s/users.json',_0x1f4239[_0x3a05('0x24')]),'method':_0x3a05('0x2e'),'body':{'user':{'role':_0x3a05('0x2f'),'name':util[_0x3a05('0xe')](_0x3a05('0x30'),_0x36ba47||_0x47e68e),'phone':_0x47e68e}}})['then'](function(_0x5d4d33){logger[_0x3a05('0xc')](_0x3a05('0x31'));return _0x5d4d33[_0x3a05('0x25')];});}});}function getAuth(_0x157353){var _0x39254d;if(_0x157353[_0x3a05('0x32')]===_0x3a05('0x33')){_0x39254d=util[_0x3a05('0xe')](_0x3a05('0x34'),_0x157353[_0x3a05('0x35')],_0x157353[_0x3a05('0x33')]);}else if(_0x157353[_0x3a05('0x32')]===_0x3a05('0x36')){_0x39254d=util[_0x3a05('0xe')](_0x3a05('0x37'),_0x157353['username'],_0x157353['token']);}return util[_0x3a05('0xe')]('Basic\x20%s',new Buffer(_0x39254d)[_0x3a05('0x38')](_0x3a05('0x39')));}function request(_0x20df9e){logger[_0x3a05('0x3a')](_0x3a05('0x3b'),JSON['stringify'](_0x20df9e));return rp(_['defaults'](_0x20df9e,{'method':_0x3a05('0x3c'),'headers':headers,'json':!![]}));}function getTags(_0x2688e1,_0x5d134d){var _0x34c22a=[];if(_0x2688e1&&_0x2688e1['length']>0x0){_0x34c22a=_[_0x3a05('0x3d')](_0x2688e1,_0x5d134d);}return _0x34c22a;}function getCustomFields(_0x3f3365,_0x2d1465){var _0xfd78d9=[];var _0x4d1b24={'custom_fields':[]};if(_0x3f3365[_0x3a05('0x2a')]>0x0){_[_0x3a05('0x3e')](_0x3f3365,function(_0x32e5e7){if(_[_0x3a05('0x3f')](['string',_0x3a05('0x40')],_0x32e5e7[_0x3a05('0x41')])&&_0x32e5e7[_0x3a05('0x42')]&&!_0x32e5e7[_0x3a05('0x43')]){_0x4d1b24[_0x32e5e7[_0x3a05('0x42')]['toLowerCase']()]=_0x32e5e7[_0x3a05('0x44')]['toString']();}else if(_[_0x3a05('0x3f')](['string',_0x3a05('0x40')],_0x32e5e7['type'])&&_0x32e5e7[_0x3a05('0x45')]&&_0x32e5e7[_0x3a05('0x43')]){_0x4d1b24['custom_fields'][_0x3a05('0x46')]({'id':_0x32e5e7['idField'],'value':_0x32e5e7[_0x3a05('0x44')][_0x3a05('0x38')]()});}else if(_0x32e5e7[_0x3a05('0x41')]===_0x3a05('0x47')&&_0x32e5e7[_0x3a05('0x48')]&&_0x32e5e7[_0x3a05('0x45')]&&_0x32e5e7[_0x3a05('0x43')]){_0x2d1465[_0x32e5e7[_0x3a05('0x48')]]&&_0x4d1b24[_0x3a05('0x49')][_0x3a05('0x46')]({'id':_0x32e5e7[_0x3a05('0x45')],'value':_0x2d1465[_0x32e5e7[_0x3a05('0x48')]]['toString']()});}else if(_0x32e5e7[_0x3a05('0x41')]==='customVariable'&&_0x32e5e7[_0x3a05('0x4a')]&&_0x32e5e7[_0x3a05('0x4a')]['name']&&_0x32e5e7['idField']&&_0x32e5e7['customField']){_0x2d1465[_0x32e5e7[_0x3a05('0x4a')]['name']['toLowerCase']()]&&_0x4d1b24[_0x3a05('0x49')][_0x3a05('0x46')]({'id':_0x32e5e7[_0x3a05('0x45')],'value':_0x2d1465[_0x32e5e7[_0x3a05('0x4a')][_0x3a05('0x12')]['toLowerCase']()][_0x3a05('0x38')]()});}});}return _0x4d1b24;}exports[_0x3a05('0x4b')]=function(_0x564281,_0xe4b0a9,_0x97fb24,_0x294545,_0x18b015,_0x3f909f){var _0x29893f,_0x76a769;_0x3f909f[_0x3a05('0x24')]=intUtil[_0x3a05('0x4c')](_0x3f909f['remoteUri']);_0x3f909f[_0x3a05('0x4d')]=intUtil[_0x3a05('0x4c')](_0x3f909f[_0x3a05('0x4d')]);if(_0x18b015&&_0x18b015['monitor_format']){logger[_0x3a05('0xc')](_0x3a05('0x4e'),_0x3a05('0x4f'));_0xe4b0a9[_0x3a05('0x50')]=util[_0x3a05('0xe')](_0x3a05('0x51'),_0x3f909f[_0x3a05('0x4d')],_0xe4b0a9['uniqueid'],md5(_0xe4b0a9[_0x3a05('0x52')]));}else{_0xe4b0a9[_0x3a05('0x50')]='';}headers['Authorization']=getAuth(_0x3f909f);return getUser(_0x3f909f,_0x294545[_0x3a05('0x53')])['then'](function(_0x4108de){_0x29893f=_0x4108de;logger[_0x3a05('0xc')](_0x3a05('0x54'),_0x29893f['id']);return getEndUser(_0x3f909f,_0xe4b0a9[_0x3a05('0x55')],_0xe4b0a9[_0x3a05('0x56')]);})[_0x3a05('0x17')](function(_0x2cb5f5){_0x76a769=_0x2cb5f5;logger[_0x3a05('0xc')](_0x3a05('0x57'),_0x76a769['id']);return getTicket(_0x3f909f,_0x29893f,_0x76a769,_0x97fb24,_0xe4b0a9);})[_0x3a05('0x17')](function(_0xd361d4){if(_0xd361d4){logger[_0x3a05('0xc')](_0x3a05('0x58'),_0xd361d4['id']);switch(_0x3f909f[_0x3a05('0x41')]){case _0x3a05('0x59'):logger[_0x3a05('0xc')](_0x3a05('0x4e'),_0x3a05('0x5a'));return request({'uri':util[_0x3a05('0xe')](_0x3a05('0x5b'),_0x3f909f[_0x3a05('0x24')],_0x29893f['id'],_0xd361d4['id']),'method':_0x3a05('0x2e')});case _0x3a05('0x5c'):logger[_0x3a05('0xc')](_0x3a05('0x4e'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x3a05('0xe')](_0x3a05('0x5d'),_0x294545[_0x3a05('0x12')]),_0x3a05('0x5e'),{'uri':util[_0x3a05('0xe')](_0x3a05('0x5f'),_0x3f909f['remoteUri'][_0x3a05('0x60')](_0x3a05('0x61'),''),_0xd361d4['id'])});break;default:logger[_0x3a05('0x62')]('[QUEUE]',_0x3a05('0x63'));}}})['catch'](function(_0x2ce4f6){logger[_0x3a05('0x62')](_0x3a05('0x64'),util[_0x3a05('0x65')](_0x2ce4f6,{'showHidden':!![],'depth':null}));});};exports[_0x3a05('0x66')]=function(_0x13c3a3,_0x389583,_0x2c58ba,_0x283677,_0x26b3ff,_0x44cecc,_0x109d6c){var _0x26cd72,_0x42484;_0x44cecc[_0x3a05('0x24')]=intUtil['stripTrailingSlash'](_0x44cecc[_0x3a05('0x24')]);_0x44cecc[_0x3a05('0x4d')]=intUtil[_0x3a05('0x4c')](_0x44cecc[_0x3a05('0x4d')]);if(_0x109d6c&&_0x109d6c[_0x3a05('0x67')]&&_0x109d6c[_0x3a05('0x67')]!==_0x3a05('0x68')){logger[_0x3a05('0xc')]('[OUTBOUND]',_0x3a05('0x4f'));_0x389583[_0x3a05('0x50')]=util[_0x3a05('0xe')](_0x3a05('0x51'),_0x44cecc[_0x3a05('0x4d')],_0x389583['uniqueid'],md5(_0x389583[_0x3a05('0x52')]));}headers['Authorization']=getAuth(_0x44cecc);return getUser(_0x44cecc,_0x283677['email'])[_0x3a05('0x17')](function(_0x238ce1){_0x26cd72=_0x238ce1;logger[_0x3a05('0xc')](_0x3a05('0x54'),_0x26cd72['id']);return getEndUser(_0x44cecc,_0x389583[_0x3a05('0x69')],_0x389583[_0x3a05('0x6a')]);})[_0x3a05('0x17')](function(_0x152452){_0x42484=_0x152452;logger['info'](_0x3a05('0x57'),_0x42484['id']);return getTicket(_0x44cecc,_0x26cd72,_0x42484,_0x2c58ba,_0x389583);})[_0x3a05('0x17')](function(_0x5b1fb7){if(_0x5b1fb7){logger['info'](_0x3a05('0x58'),_0x5b1fb7['id']);switch(_0x44cecc[_0x3a05('0x41')]){case _0x3a05('0x59'):logger[_0x3a05('0xc')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x3a05('0xe')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x44cecc[_0x3a05('0x24')],_0x26cd72['id'],_0x5b1fb7['id']),'method':_0x3a05('0x2e')});case'newTab':logger[_0x3a05('0xc')](_0x3a05('0x6b'),_0x3a05('0x6c'));emit(util[_0x3a05('0xe')]('user:%s',_0x283677[_0x3a05('0x12')]),_0x3a05('0x5e'),{'uri':util[_0x3a05('0xe')]('%s/agent/tickets/%s',_0x44cecc[_0x3a05('0x24')][_0x3a05('0x60')](_0x3a05('0x61'),''),_0x5b1fb7['id'])});break;default:logger[_0x3a05('0x62')](_0x3a05('0x6b'),_0x3a05('0x63'));}}})['catch'](function(_0x500f30){logger[_0x3a05('0x62')](_0x3a05('0x6d'),util['inspect'](_0x500f30,{'showHidden':!![],'depth':null}));});};exports[_0x3a05('0x6e')]=function(_0x1ef3f9,_0x507e50,_0x524ecb,_0x5193c0,_0x590a64,_0x84e661){var _0x16bde9,_0xa6a65f;_0x84e661[_0x3a05('0x24')]=intUtil[_0x3a05('0x4c')](_0x84e661[_0x3a05('0x24')]);_0x84e661[_0x3a05('0x4d')]=intUtil[_0x3a05('0x4c')](_0x84e661['serverUrl']);if(_0x590a64&&_0x590a64[_0x3a05('0x6f')]){logger[_0x3a05('0xc')]('['+_0x507e50[_0x3a05('0x70')][_0x3a05('0x71')]()+']',_0x3a05('0x4f'));_0x507e50[_0x3a05('0x50')]=util[_0x3a05('0xe')](_0x3a05('0x51'),_0x84e661[_0x3a05('0x4d')],_0x507e50[_0x3a05('0x52')],md5(_0x507e50[_0x3a05('0x52')]));}else{_0x507e50[_0x3a05('0x50')]='';}headers[_0x3a05('0x72')]=getAuth(_0x84e661);return getUser(_0x84e661)[_0x3a05('0x17')](function(_0x4ca23a){_0x16bde9=_0x4ca23a;logger[_0x3a05('0xc')]('The\x20User\x20ID\x20is:',_0x16bde9['id']);return getEndUser(_0x84e661,_0x507e50[_0x3a05('0x55')],_0x507e50[_0x3a05('0x56')]);})['then'](function(_0x480078){_0xa6a65f=_0x480078;logger['info'](_0x3a05('0x57'),_0xa6a65f['id']);return getTicket(_0x84e661,_0x16bde9,_0xa6a65f,_0x524ecb,_0x507e50);})['then'](function(_0x223678){if(_0x223678){logger[_0x3a05('0xc')]('The\x20Ticket\x20ID\x20is:',_0x223678['id']);}})[_0x3a05('0x73')](function(_0x520b93){logger[_0x3a05('0x62')]('['+_0x507e50['lastevent'][_0x3a05('0x71')]()+']'+_0x3a05('0x74'),util[_0x3a05('0x65')](_0x520b93,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 4d9785b..9183f7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42a2=['GET','format','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','user','Administrator','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','The\x20failing\x20result\x20is','error','data','POST','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','code','Error:\x20','log','CREATE\x20ERROR','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','lead','Creating\x20new\x20call...','Owner','administrator','getString','Subjects','Descriptions','enduserType','Full_Name','First_Name','Last_Name','What_Id','talktime','Call_Duration','endtime','diff','YYYY-MM-DDTHH:mm:ss','lastevent','called','Call_Result','Called','complete','connect','Answered','rejected','abandoned','timeout','Timeout','Call_Start_Time','agentcalledAt','Inbound','Fields','/crm/v2/Calls','SUCCESS','Call\x20created!','details','err','queue','host','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','zoho.eu','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://crm.','/crm/EntityInfo.do?module=Calls&id=','outbound','recordingFormat','none','/downloads?type=uniqueid&token=','The\x20User\x20ID\x20is:','destcalleridname','Outbound','user:%s','trigger:browser:url','toUpperCase','com','lodash','md5','util','./util','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','redis','defaults','socket.io-emitter','emit','stringify','length','forEach','includes','picklist','type','content','toString','variable','variableName','idField','Variable','name','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','then','add','seconds','catch','Failing\x20creating\x20the\x20access_token','info','Search\x20user'];(function(_0xa45c87,_0x783585){var _0x28579f=function(_0x4c763a){while(--_0x4c763a){_0xa45c87['push'](_0xa45c87['shift']());}};_0x28579f(++_0x783585);}(_0x42a2,0xf8));var _0x242a=function(_0x12f688,_0x585c25){_0x12f688=_0x12f688-0x0;var _0x59c3de=_0x42a2[_0x12f688];return _0x59c3de;};'use strict';var _=require(_0x242a('0x0'));var rp=require('request-promise');var md5=require(_0x242a('0x1'));var util=require(_0x242a('0x2'));var intUtil=require(_0x242a('0x3'));var moment=require('moment');var Redis=require(_0x242a('0x4'));var BPromise=require(_0x242a('0x5'));var config=require(_0x242a('0x6'));var logger=require(_0x242a('0x7'))(_0x242a('0x8'));config[_0x242a('0x9')]=_[_0x242a('0xa')](config[_0x242a('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x242a('0xb'))(new Redis(config[_0x242a('0x9')]));function emit(_0x11c57f,_0x37f415,_0x4d1433){io['to'](_0x11c57f)[_0x242a('0xc')](_0x37f415,_0x4d1433);}function request(_0x3a8845){logger['debug']('[HTTP]',JSON[_0x242a('0xd')](_0x3a8845));return rp(_0x3a8845);}function getCustomFields(_0x5edd34,_0x4fece2){var _0x4cc3e7={};if(_0x5edd34[_0x242a('0xe')]>0x0){_[_0x242a('0xf')](_0x5edd34,function(_0x5118cb){if(_[_0x242a('0x10')](['string',_0x242a('0x11')],_0x5118cb[_0x242a('0x12')])&&_0x5118cb['idField']){_0x4cc3e7[_0x5118cb['idField']]=_0x5118cb[_0x242a('0x13')][_0x242a('0x14')]();}else if(_0x5118cb[_0x242a('0x12')]===_0x242a('0x15')&&_0x5118cb[_0x242a('0x16')]&&_0x5118cb[_0x242a('0x17')]&&_0x4fece2[_0x5118cb[_0x242a('0x16')]]){_0x4cc3e7[_0x5118cb['idField']]=_0x4fece2[_0x5118cb['variableName']][_0x242a('0x14')]();}else if(_0x5118cb[_0x242a('0x12')]==='customVariable'&&_0x5118cb[_0x242a('0x18')]&&_0x5118cb[_0x242a('0x18')]['name']&&_0x5118cb['idField']&&_0x4fece2[_0x5118cb[_0x242a('0x18')][_0x242a('0x19')]['toLowerCase']()]){_0x4cc3e7[_0x5118cb[_0x242a('0x17')]]=_0x4fece2[_0x5118cb[_0x242a('0x18')][_0x242a('0x19')]['toLowerCase']()][_0x242a('0x14')]();}});}return _0x4cc3e7;}function getName(_0x5ceae5){if(_0x5ceae5[_0x242a('0x1a')]('\x20')>0x0){var _0x380523=_0x5ceae5[_0x242a('0x1b')](/ (.+)/);if(_0x380523[0x1]){return _0x380523;}}return[_0x5ceae5,_0x5ceae5];}var accountsTokens={};function getAccessToken(_0x422fbe){return new Promise(function(_0x3ed365,_0x59eb96){if(!_[_0x242a('0x1c')](accountsTokens[_0x422fbe['id']])&&!_[_0x242a('0x1c')](accountsTokens[_0x422fbe['id']][_0x242a('0x1d')])){if(moment()[_0x242a('0x1e')](accountsTokens[_0x422fbe['id']][_0x242a('0x1f')])){_0x3ed365(accountsTokens[_0x422fbe['id']][_0x242a('0x1d')]);}}var _0x3f5590;switch(_0x422fbe[_0x242a('0x20')]){case'US':_0x3f5590=_0x242a('0x21');break;case'AU':_0x3f5590=_0x242a('0x22');break;case'EU':_0x3f5590='https://accounts.zoho.eu';break;case'IN':_0x3f5590=_0x242a('0x23');break;case'CN':_0x3f5590='https://accounts.zoho.com.cn';break;default:_0x3f5590='https://accounts.zoho.eu';break;}var _0x1ee310={'method':'POST','uri':_0x3f5590+_0x242a('0x24'),'qs':{'refresh_token':_0x422fbe[_0x242a('0x25')],'client_id':_0x422fbe[_0x242a('0x26')],'client_secret':_0x422fbe[_0x242a('0x27')],'grant_type':_0x242a('0x28')},'json':!![]};return rp(_0x1ee310)[_0x242a('0x29')](function(_0x59e1db){accountsTokens[_0x422fbe['id']]={'access_token':_0x59e1db[_0x242a('0x1d')],'expires_in':moment()[_0x242a('0x2a')](_0x59e1db[_0x242a('0x1f')],_0x242a('0x2b'))};_0x3ed365(_0x59e1db[_0x242a('0x1d')]);})[_0x242a('0x2c')](function(_0x37c73c){logger['error'](_0x242a('0x2d'),_0x37c73c['stack']);_0x59eb96(_0x37c73c);});});}function getUser(_0x54bb69,_0x5da3be,_0x377ef7,_0x32b07f){logger[_0x242a('0x2e')](_0x242a('0x2f'));return request({'method':_0x242a('0x30'),'uri':util[_0x242a('0x31')]('https://www.zohoapis.%s/crm/v2/users',_0x5da3be),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':_0x242a('0x32')+_0x54bb69},'json':!![]})['then'](function(_0x266388){if(_0x266388[_0x242a('0x33')]){var _0x341322=-0x1;if(_[_0x242a('0x34')](_0x266388[_0x242a('0x33')])){if(!_['isNil'](_0x32b07f)){_0x341322=_[_0x242a('0x35')](_0x266388[_0x242a('0x33')],function(_0x2ab94e){return _0x2ab94e[_0x242a('0x36')]===_0x32b07f;});}if(_0x341322>=0x0){logger[_0x242a('0x2e')](_0x242a('0x37'));}else{logger[_0x242a('0x2e')](_0x242a('0x38'));_0x341322=_[_0x242a('0x35')](_0x266388['users'],function(_0x2d1516){return _0x2d1516[_0x242a('0x39')]['name']==='Administrator';});}return _0x266388[_0x242a('0x33')][_0x341322];}else{if(_0x266388[_0x242a('0x3a')][_0x242a('0x39')][_0x242a('0x19')]===_0x242a('0x3b')){logger[_0x242a('0x2e')]('Using\x20the\x20admin\x20account!');user=_0x266388['user'];return user;}else{logger['error']('The\x20failing\x20result\x20is',JSON[_0x242a('0xd')](_0x266388));throw new Error(_0x242a('0x3c')+JSON['stringify'](_0x266388));}}}else{logger['error'](_0x242a('0x3d'),JSON['stringify'](_0x266388));throw new Error(_0x242a('0x3c')+JSON[_0x242a('0xd')](_0x266388));}})['catch'](function(_0x103c13){console[_0x242a('0x3e')](_0x103c13);});}function getZohoUser(_0x1e3273,_0xe168a4){return new BPromise(function(_0x34262c,_0x5a053b){request(_0x1e3273)['then'](function(_0xe93869){var _0x8dd042=null;if(_0xe93869){_0x8dd042=_0xe93869[_0x242a('0x3f')][0x0];_0x8dd042['enduserType']=_0xe168a4;}_0x34262c(_0x8dd042);})[_0x242a('0x2c')](function(_0x31304c){_0x5a053b(_0x31304c);});});}function createEndUser(_0x29b2fc,_0x5c5cfc,_0x170b93,_0x29d6ed,_0x5c4db2,_0x18e5df){var _0x170b93=getName(_0x170b93);return request({'method':_0x242a('0x40'),'uri':_0x242a('0x41')+_0x5c5cfc+_0x242a('0x42')+_[_0x242a('0x43')](_0x18e5df[_0x242a('0x44')])+'s','body':{'data':[{'Last_Name':_0x170b93[0x1],'First_Name':_0x170b93[0x0],'Phone':_0x29d6ed,'Owner':{'name':!_[_0x242a('0x1c')](_0x5c4db2[_0x242a('0x45')][_0x242a('0x19')])?_0x5c4db2[_0x242a('0x45')][_0x242a('0x19')]:!_[_0x242a('0x1c')](_0x5c4db2[_0x242a('0x46')])?_0x5c4db2[_0x242a('0x46')]+'\x20'+_0x5c4db2[_0x242a('0x47')]:_0x5c4db2['last_name'],'id':_0x5c4db2['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x29b2fc},'json':!![]})[_0x242a('0x29')](function(_0x5630b4){if(_0x5630b4&&_0x5630b4['data'][0x0][_0x242a('0x48')]==='SUCCESS'){var _0x47281f=_0x5630b4[_0x242a('0x3f')][0x0]['details'];_0x47281f['enduserType']=_[_0x242a('0x43')](_0x18e5df[_0x242a('0x44')])+'s';return _0x47281f;}logger[_0x242a('0x3e')]('The\x20failing\x20result\x20is',JSON['stringify'](data));throw new Error(_0x242a('0x49')+JSON[_0x242a('0xd')](data));})[_0x242a('0x2c')](function(_0x40f1cb){console[_0x242a('0x4a')](_0x242a('0x4b'),_0x40f1cb);});}function getEndUser(_0x5be420,_0x4b592b,_0x27850d,_0x1b9ff7,_0x4ae5dd,_0x2ff4b8,_0x13b09b){var _0x2b82c2={'method':_0x242a('0x30'),'uri':'','headers':{'Authorization':_0x242a('0x32')+_0x5be420},'json':!![]};switch(_0x13b09b['moduleSearch']){case _0x242a('0x4c'):_0x2b82c2[_0x242a('0x4d')]=_0x242a('0x41')+_0x4b592b+_0x242a('0x4e')+_0x4ae5dd+'))';return getZohoUser(_0x2b82c2,_0x242a('0x4f'))[_0x242a('0x29')](function(_0x559342){if(_0x559342)return _0x559342;_0x2b82c2[_0x242a('0x4d')]='https://www.zohoapis.'+_0x4b592b+_0x242a('0x50')+_0x4ae5dd+'))';return getZohoUser(_0x2b82c2,_0x242a('0x51'))['then'](function(_0x3599d9){if(_0x3599d9)return _0x3599d9;if(_0x13b09b[_0x242a('0x44')]!=_0x242a('0x52')){return createEndUser(_0x5be420,_0x4b592b,_0x1b9ff7,_0x4ae5dd,_0x2ff4b8,_0x13b09b);}else{return{};}});});break;case _0x242a('0x53'):_0x2b82c2[_0x242a('0x4d')]='https://www.zohoapis.'+_0x4b592b+_0x242a('0x4e')+_0x4ae5dd+'))';return getZohoUser(_0x2b82c2,_0x242a('0x4f'))[_0x242a('0x29')](function(_0x3c3fd8){if(_0x3c3fd8)return _0x3c3fd8;if(_0x13b09b[_0x242a('0x44')]!=_0x242a('0x52')){return createEndUser(_0x5be420,_0x4b592b,_0x1b9ff7,_0x4ae5dd,_0x2ff4b8,_0x13b09b);}else{return{};}});break;case _0x242a('0x54'):_0x2b82c2[_0x242a('0x4d')]=_0x242a('0x41')+_0x4b592b+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x4ae5dd+'))';return getZohoUser(_0x2b82c2,_0x242a('0x51'))[_0x242a('0x29')](function(_0x188ab9){if(_0x188ab9)return _0x188ab9;if(_0x13b09b['moduleCreate']!=_0x242a('0x52')){return createEndUser(_0x5be420,_0x4b592b,_0x1b9ff7,_0x4ae5dd,_0x2ff4b8,_0x13b09b);}else{return{};}});break;}}function getCall(_0x268918,_0x5661f3,_0x13770f,_0xa51e07,_0xf9748d,_0x59ae63,_0x1943e7,_0x42818b){logger[_0x242a('0x2e')](_0x242a('0x55'));var _0x2e595a={};_0x2e595a[_0x242a('0x56')]={'name':!_[_0x242a('0x1c')](_0xa51e07[_0x242a('0x45')][_0x242a('0x19')])&&!_[_0x242a('0x1c')](_0xa51e07['profile'][_0x242a('0x19')])&&_0xa51e07['profile'][_0x242a('0x19')]===_0x242a('0x57')?_0xa51e07[_0x242a('0x45')]['name']:!_['isNil'](_0xa51e07[_0x242a('0x46')])?_0xa51e07['first_name']+'\x20'+_0xa51e07[_0x242a('0x47')]:_0xa51e07['last_name'],'id':_0xa51e07['id']};_0x2e595a['Subject']=intUtil[_0x242a('0x58')](_0x59ae63[_0x242a('0x59')],_0x1943e7,'\x20');_0x2e595a['Description']=intUtil['getString'](_0x59ae63[_0x242a('0x5a')],_0x1943e7,'\x0a');if(_0xf9748d[_0x242a('0x5b')]==='Contacts'){_0x2e595a['Who_Id']={'name':!_[_0x242a('0x1c')](_0xf9748d[_0x242a('0x5c')])?_0xf9748d[_0x242a('0x5c')]:!_[_0x242a('0x1c')](_0xf9748d[_0x242a('0x5d')])?_0xf9748d[_0x242a('0x5d')]+'\x20'+_0xf9748d[_0x242a('0x5e')]:_0xf9748d[_0x242a('0x5e')],'id':_0xf9748d['id']};}if(_0xf9748d[_0x242a('0x5b')]==='Leads'){_0x2e595a[_0x242a('0x5f')]={'name':!_[_0x242a('0x1c')](_0xf9748d[_0x242a('0x5c')])?_0xf9748d[_0x242a('0x5c')]:!_[_0x242a('0x1c')](_0xf9748d['First_Name'])?_0xf9748d[_0x242a('0x5d')]+'\x20'+_0xf9748d[_0x242a('0x5e')]:_0xf9748d[_0x242a('0x5e')],'id':_0xf9748d['id']};_0x2e595a['$se_module']=_[_0x242a('0x43')](_0xf9748d[_0x242a('0x5b')]);}if(_0x1943e7[_0x242a('0x60')]){_0x2e595a[_0x242a('0x61')]=moment['utc'](parseInt(_0x1943e7[_0x242a('0x60')])*0x3e8)['format']('mm:ss');}else if(_0x1943e7['answertime']&&_0x1943e7[_0x242a('0x62')]){_0x2e595a[_0x242a('0x61')]=moment['utc'](moment(_0x1943e7['endtime'],'YYYY-MM-DDTHH:mm:ss')[_0x242a('0x63')](moment(_0x1943e7['starttime'],_0x242a('0x64'))))[_0x242a('0x31')]('mm:ss');}switch(_0x1943e7[_0x242a('0x65')]){case _0x242a('0x66'):_0x2e595a[_0x242a('0x67')]=_0x242a('0x68');break;case _0x242a('0x69'):case _0x242a('0x6a'):_0x2e595a['Call_Result']=_0x242a('0x6b');break;case _0x242a('0x6c'):_0x2e595a[_0x242a('0x67')]='Rejected';break;case _0x242a('0x6d'):_0x2e595a['Call_Result']='Abandoned';break;case _0x242a('0x6e'):_0x2e595a[_0x242a('0x67')]=_0x242a('0x6f');default:}_0x2e595a[_0x242a('0x70')]=(_0x42818b==='outbound'?moment(_0x1943e7['starttime'])[_0x242a('0x31')](_0x242a('0x64')):moment(_0x1943e7[_0x242a('0x71')])[_0x242a('0x31')]('YYYY-MM-DDTHH:mm:ss'))||moment()[_0x242a('0x31')](_0x242a('0x64'));_0x2e595a['Call_Type']=_0x42818b||_0x242a('0x72');_0x2e595a=_['merge'](_0x2e595a,getCustomFields(_0x59ae63[_0x242a('0x73')],_0x1943e7));return request({'method':_0x242a('0x40'),'uri':_0x242a('0x41')+_0x5661f3+_0x242a('0x74'),'headers':{'Authorization':_0x242a('0x32')+_0x268918},'body':{'data':[_0x2e595a]},'json':!![]})[_0x242a('0x29')](function(_0x41c8ab){if(_0x41c8ab&&_0x41c8ab['data'][0x0][_0x242a('0x48')]===_0x242a('0x75')){logger[_0x242a('0x2e')](_0x242a('0x76'));return{'id':_0x41c8ab[_0x242a('0x3f')][0x0][_0x242a('0x77')]['id']};}})['catch'](function(_0x399e73){logger[_0x242a('0x2e')](_0x242a('0x78'),_0x399e73['stack']);console[_0x242a('0x4a')](_0x242a('0x78'),_0x399e73);});}exports[_0x242a('0x79')]=function(_0x5a5791,_0x4eca7d,_0x326837,_0x4a4cd2,_0x46a03a,_0x34314e){var _0x7f32a9,_0x126196,_0x48b875;_0x34314e[_0x242a('0x7a')]=intUtil['stripTrailingSlash'](_0x34314e['host']);_0x34314e[_0x242a('0x7b')]=intUtil[_0x242a('0x7c')](_0x34314e[_0x242a('0x7b')]);if(_0x46a03a&&_0x46a03a[_0x242a('0x7d')]){logger[_0x242a('0x2e')](_0x242a('0x7e'),_0x242a('0x7f'));_0x4eca7d[_0x242a('0x80')]=_0x34314e[_0x242a('0x7b')]+_0x242a('0x81')+_0x4eca7d[_0x242a('0x82')]+'/downloads?type=uniqueid&token='+md5(_0x4eca7d[_0x242a('0x82')]);}else{_0x4eca7d[_0x242a('0x80')]='';}var _0x4c085f=_0x34314e[_0x242a('0x7a')]===_0x242a('0x83')?'eu':'com';return getAccessToken(_0x34314e)[_0x242a('0x29')](function(_0x4bde28){_0x48b875=_0x4bde28;return getUser(_0x48b875,_0x4c085f,_0x34314e,_0x4a4cd2[_0x242a('0x36')]);})[_0x242a('0x29')](function(_0x4d4978){_0x7f32a9=_0x4d4978;logger[_0x242a('0x2e')]('The\x20User\x20ID\x20is:',_0x7f32a9['id']);return getEndUser(_0x48b875,_0x4c085f,_0x34314e,_0x4eca7d['calleridname'],_0x4eca7d[_0x242a('0x84')],_0x7f32a9,_0x326837);})[_0x242a('0x29')](function(_0x4ba68b){_0x126196=_0x4ba68b;return getCall(_0x48b875,_0x4c085f,_0x34314e,_0x7f32a9,_0x126196,_0x326837,_0x4eca7d,'Inbound');})[_0x242a('0x29')](function(_0x461434){if(_0x461434){logger[_0x242a('0x2e')](_0x242a('0x85'),_0x461434['id']);logger[_0x242a('0x2e')](_0x242a('0x7e'),_0x242a('0x86'));emit(util['format']('user:%s',_0x4a4cd2[_0x242a('0x19')]),'trigger:browser:url',{'uri':_0x242a('0x87')+_0x34314e[_0x242a('0x7a')]+_0x242a('0x88')+_0x461434['id']});}})['catch'](function(_0x121b34){logger['error'](_0x242a('0x7e'),JSON[_0x242a('0xd')](_0x121b34));});};exports[_0x242a('0x89')]=function(_0x505dad,_0x706d7d,_0x432927,_0x369bf8,_0x1dd044,_0x12785c,_0x3c89fa){var _0x159c9a,_0x3468c1,_0x2942bc;_0x12785c[_0x242a('0x7a')]=intUtil['stripTrailingSlash'](_0x12785c['host']);_0x12785c['serverUrl']=intUtil[_0x242a('0x7c')](_0x12785c[_0x242a('0x7b')]);if(_0x3c89fa&&_0x3c89fa[_0x242a('0x8a')]&&_0x3c89fa[_0x242a('0x8a')]!==_0x242a('0x8b')){logger[_0x242a('0x2e')]('[OUTBOUND]',_0x242a('0x7f'));_0x706d7d[_0x242a('0x80')]=_0x12785c[_0x242a('0x7b')]+_0x242a('0x81')+_0x706d7d[_0x242a('0x82')]+_0x242a('0x8c')+md5(_0x706d7d[_0x242a('0x82')]);}var _0x3183f1=_0x12785c['host']===_0x242a('0x83')?'eu':'com';return getAccessToken(_0x12785c)['then'](function(_0x2c4a0b){_0x2942bc=_0x2c4a0b;return getUser(_0x2942bc,_0x3183f1,_0x12785c,_0x369bf8[_0x242a('0x36')]);})[_0x242a('0x29')](function(_0x179122){_0x159c9a=_0x179122;logger[_0x242a('0x2e')](_0x242a('0x8d'),_0x159c9a['id']);return getEndUser(_0x2942bc,_0x3183f1,_0x12785c,_0x706d7d[_0x242a('0x8e')],_0x706d7d['destcalleridnum'],_0x159c9a,_0x432927);})[_0x242a('0x29')](function(_0xc99ecf){_0x3468c1=_0xc99ecf;return getCall(_0x2942bc,_0x3183f1,_0x12785c,_0x159c9a,_0x3468c1,_0x432927,_0x706d7d,_0x242a('0x8f'));})[_0x242a('0x29')](function(_0x4b4615){if(_0x4b4615){logger[_0x242a('0x2e')](_0x242a('0x85'),_0x4b4615['id']);logger['info']('[OUTBOUND]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x242a('0x31')](_0x242a('0x90'),_0x369bf8['name']),_0x242a('0x91'),{'uri':'https://crm.'+_0x12785c['host']+_0x242a('0x88')+_0x4b4615['id']});}})['catch'](function(_0x28ad84){logger['error']('[OUTBOUND]',JSON[_0x242a('0xd')](_0x28ad84));});};exports['unmanaged']=function(_0x59808a,_0x355d52,_0x5ec6d4,_0x1cf9ab,_0x57411a,_0x2c146f){var _0x1883f8,_0x1b8a3c,_0x8fc871;_0x2c146f[_0x242a('0x7a')]=intUtil[_0x242a('0x7c')](_0x2c146f[_0x242a('0x7a')]);_0x2c146f['serverUrl']=intUtil[_0x242a('0x7c')](_0x2c146f[_0x242a('0x7b')]);if(_0x57411a&&_0x57411a[_0x242a('0x7d')]){logger[_0x242a('0x2e')]('['+_0x355d52[_0x242a('0x65')][_0x242a('0x92')]()+']',_0x242a('0x7f'));_0x355d52[_0x242a('0x80')]=_0x2c146f[_0x242a('0x7b')]+_0x242a('0x81')+_0x355d52[_0x242a('0x82')]+'/downloads?type=uniqueid&token='+md5(_0x355d52['uniqueid']);}else{_0x355d52['recordingURL']='';}var _0x3700bc=_0x2c146f[_0x242a('0x7a')]===_0x242a('0x83')?'eu':_0x242a('0x93');return getAccessToken(_0x2c146f)[_0x242a('0x29')](function(_0x3d47df){_0x8fc871=_0x3d47df;return getUser(_0x8fc871,_0x3700bc,_0x2c146f);})[_0x242a('0x29')](function(_0x3df5c0){_0x1883f8=_0x3df5c0;logger['info'](_0x242a('0x8d'),_0x1883f8['id']);return getEndUser(_0x8fc871,_0x3700bc,_0x2c146f,_0x355d52['calleridname'],_0x355d52[_0x242a('0x84')],_0x1883f8,_0x5ec6d4);})[_0x242a('0x29')](function(_0x13f892){_0x1b8a3c=_0x13f892;return getCall(_0x8fc871,_0x3700bc,_0x2c146f,_0x1883f8,_0x1b8a3c,_0x5ec6d4,_0x355d52,_0x242a('0x72'));})[_0x242a('0x29')](function(_0x5a4aba){if(_0x5a4aba){logger['info'](_0x242a('0x85'),_0x5a4aba['id']);}})[_0x242a('0x2c')](function(_0x3e10ce){logger[_0x242a('0x3e')]('['+_0x355d52[_0x242a('0x65')][_0x242a('0x92')]()+']',JSON[_0x242a('0xd')](_0x3e10ce));});};
\ No newline at end of file
+var _0x7782=['destcalleridnum','Outbound','The\x20Call\x20ID\x20is:','/crm/EntityInfo.do?module=Calls&id=','unmanaged','lastevent','toUpperCase','recordingURL','request-promise','util','./util','moment','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','redis','localhost','socket.io-emitter','debug','stringify','length','forEach','includes','picklist','type','idField','content','toString','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','expires_in','access_token','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','refreshToken','clientSecret','then','add','catch','error','Failing\x20creating\x20the\x20access_token','info','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','The\x20failing\x20result\x20is','data','enduserType','/crm/v2/','startCase','role','first_name','last_name','code','SUCCESS','details','moduleCreate','Error:\x20','log','CREATE\x20ERROR','contact_lead','uri','https://www.zohoapis.','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','lead','Creating\x20new\x20call...','administrator','Subject','getString','Subjects','Description','Descriptions','Who_Id','First_Name','Last_Name','What_Id','Full_Name','$se_module','Call_Duration','talktime','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','mm:ss','Call_Result','Called','complete','connect','Answered','rejected','Rejected','abandoned','timeout','Timeout','Call_Start_Time','starttime','agentcalledAt','Call_Type','Inbound','merge','Fields','/crm/v2/Calls','Call\x20created!','err','stack','queue','host','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','uniqueid','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','https://crm.','outbound','recordingFormat','none','[OUTBOUND]','/downloads?type=uniqueid&token=','destcalleridname'];(function(_0x210e19,_0x33e8a8){var _0x20628a=function(_0x2f9123){while(--_0x2f9123){_0x210e19['push'](_0x210e19['shift']());}};_0x20628a(++_0x33e8a8);}(_0x7782,0xa2));var _0x2778=function(_0x15942d,_0x4c3f78){_0x15942d=_0x15942d-0x0;var _0x1a49c0=_0x7782[_0x15942d];return _0x1a49c0;};'use strict';var _=require('lodash');var rp=require(_0x2778('0x0'));var md5=require('md5');var util=require(_0x2778('0x1'));var intUtil=require(_0x2778('0x2'));var moment=require(_0x2778('0x3'));var Redis=require(_0x2778('0x4'));var BPromise=require(_0x2778('0x5'));var config=require(_0x2778('0x6'));var logger=require(_0x2778('0x7'))(_0x2778('0x8'));config[_0x2778('0x9')]=_['defaults'](config[_0x2778('0x9')],{'host':_0x2778('0xa'),'port':0x18eb});var io=require(_0x2778('0xb'))(new Redis(config[_0x2778('0x9')]));function emit(_0x513432,_0x4de5ff,_0x1bff74){io['to'](_0x513432)['emit'](_0x4de5ff,_0x1bff74);}function request(_0x204228){logger[_0x2778('0xc')]('[HTTP]',JSON[_0x2778('0xd')](_0x204228));return rp(_0x204228);}function getCustomFields(_0x3fb9ce,_0x31ac57){var _0x2dda1d={};if(_0x3fb9ce[_0x2778('0xe')]>0x0){_[_0x2778('0xf')](_0x3fb9ce,function(_0x69f6a5){if(_[_0x2778('0x10')](['string',_0x2778('0x11')],_0x69f6a5[_0x2778('0x12')])&&_0x69f6a5[_0x2778('0x13')]){_0x2dda1d[_0x69f6a5[_0x2778('0x13')]]=_0x69f6a5[_0x2778('0x14')][_0x2778('0x15')]();}else if(_0x69f6a5[_0x2778('0x12')]==='variable'&&_0x69f6a5[_0x2778('0x16')]&&_0x69f6a5[_0x2778('0x13')]&&_0x31ac57[_0x69f6a5[_0x2778('0x16')]]){_0x2dda1d[_0x69f6a5[_0x2778('0x13')]]=_0x31ac57[_0x69f6a5[_0x2778('0x16')]]['toString']();}else if(_0x69f6a5['type']===_0x2778('0x17')&&_0x69f6a5[_0x2778('0x18')]&&_0x69f6a5[_0x2778('0x18')]['name']&&_0x69f6a5['idField']&&_0x31ac57[_0x69f6a5[_0x2778('0x18')][_0x2778('0x19')]['toLowerCase']()]){_0x2dda1d[_0x69f6a5['idField']]=_0x31ac57[_0x69f6a5['Variable']['name'][_0x2778('0x1a')]()][_0x2778('0x15')]();}});}return _0x2dda1d;}function getName(_0x518583){if(_0x518583[_0x2778('0x1b')]('\x20')>0x0){var _0xd5ce10=_0x518583[_0x2778('0x1c')](/ (.+)/);if(_0xd5ce10[0x1]){return _0xd5ce10;}}return[_0x518583,_0x518583];}var accountsTokens={};function getAccessToken(_0x16ecca){return new Promise(function(_0x57a3dd,_0xfbe236){if(!_[_0x2778('0x1d')](accountsTokens[_0x16ecca['id']])&&!_[_0x2778('0x1d')](accountsTokens[_0x16ecca['id']]['access_token'])){if(moment()['isBefore'](accountsTokens[_0x16ecca['id']][_0x2778('0x1e')])){_0x57a3dd(accountsTokens[_0x16ecca['id']][_0x2778('0x1f')]);}}var _0x5c8b03;switch(_0x16ecca['zone']){case'US':_0x5c8b03='https://accounts.zoho.com';break;case'AU':_0x5c8b03='https://accounts.zoho.com.au';break;case'EU':_0x5c8b03=_0x2778('0x20');break;case'IN':_0x5c8b03=_0x2778('0x21');break;case'CN':_0x5c8b03=_0x2778('0x22');break;default:_0x5c8b03=_0x2778('0x20');break;}var _0xc88fb7={'method':_0x2778('0x23'),'uri':_0x5c8b03+'/oauth/v2/token','qs':{'refresh_token':_0x16ecca[_0x2778('0x24')],'client_id':_0x16ecca['clientId'],'client_secret':_0x16ecca[_0x2778('0x25')],'grant_type':'refresh_token'},'json':!![]};return rp(_0xc88fb7)[_0x2778('0x26')](function(_0x87d254){accountsTokens[_0x16ecca['id']]={'access_token':_0x87d254[_0x2778('0x1f')],'expires_in':moment()[_0x2778('0x27')](_0x87d254[_0x2778('0x1e')],'seconds')};_0x57a3dd(_0x87d254[_0x2778('0x1f')]);})[_0x2778('0x28')](function(_0x2e5a9c){logger[_0x2778('0x29')](_0x2778('0x2a'),_0x2e5a9c['stack']);_0xfbe236(_0x2e5a9c);});});}function getUser(_0x53b7cc,_0xa25958,_0x5abd13,_0x2db20b){logger[_0x2778('0x2b')]('Search\x20user');return request({'method':'GET','uri':util[_0x2778('0x2c')](_0x2778('0x2d'),_0xa25958),'qs':{'type':_0x2778('0x2e')},'headers':{'Authorization':_0x2778('0x2f')+_0x53b7cc},'json':!![]})['then'](function(_0x206afa){if(_0x206afa[_0x2778('0x30')]){var _0x265278=-0x1;if(_[_0x2778('0x31')](_0x206afa[_0x2778('0x30')])){if(!_[_0x2778('0x1d')](_0x2db20b)){_0x265278=_[_0x2778('0x32')](_0x206afa[_0x2778('0x30')],function(_0x1f4bb5){return _0x1f4bb5[_0x2778('0x33')]===_0x2db20b;});}if(_0x265278>=0x0){logger[_0x2778('0x2b')](_0x2778('0x34'));}else{logger['info'](_0x2778('0x35'));_0x265278=_[_0x2778('0x32')](_0x206afa[_0x2778('0x30')],function(_0x1f178e){return _0x1f178e[_0x2778('0x36')][_0x2778('0x19')]===_0x2778('0x37');});}return _0x206afa[_0x2778('0x30')][_0x265278];}else{if(_0x206afa['user']['profile'][_0x2778('0x19')]===_0x2778('0x37')){logger[_0x2778('0x2b')]('Using\x20the\x20admin\x20account!');user=_0x206afa[_0x2778('0x38')];return user;}else{logger[_0x2778('0x29')]('The\x20failing\x20result\x20is',JSON[_0x2778('0xd')](_0x206afa));throw new Error(_0x2778('0x39')+JSON[_0x2778('0xd')](_0x206afa));}}}else{logger[_0x2778('0x29')](_0x2778('0x3a'),JSON[_0x2778('0xd')](_0x206afa));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0x2778('0xd')](_0x206afa));}})[_0x2778('0x28')](function(_0x2342d4){console['error'](_0x2342d4);});}function getZohoUser(_0x546c90,_0x3f6d53){return new BPromise(function(_0x1156aa,_0x53ceb8){request(_0x546c90)[_0x2778('0x26')](function(_0x16f7b1){var _0x51afd8=null;if(_0x16f7b1){_0x51afd8=_0x16f7b1[_0x2778('0x3b')][0x0];_0x51afd8[_0x2778('0x3c')]=_0x3f6d53;}_0x1156aa(_0x51afd8);})[_0x2778('0x28')](function(_0x3fdb90){_0x53ceb8(_0x3fdb90);});});}function createEndUser(_0x54bd71,_0x29343b,_0x5d6630,_0x273985,_0x51e40d,_0x1ab939){var _0x5d6630=getName(_0x5d6630);return request({'method':'POST','uri':'https://www.zohoapis.'+_0x29343b+_0x2778('0x3d')+_[_0x2778('0x3e')](_0x1ab939['moduleCreate'])+'s','body':{'data':[{'Last_Name':_0x5d6630[0x1],'First_Name':_0x5d6630[0x0],'Phone':_0x273985,'Owner':{'name':!_[_0x2778('0x1d')](_0x51e40d[_0x2778('0x3f')][_0x2778('0x19')])?_0x51e40d[_0x2778('0x3f')]['name']:!_[_0x2778('0x1d')](_0x51e40d[_0x2778('0x40')])?_0x51e40d['first_name']+'\x20'+_0x51e40d[_0x2778('0x41')]:_0x51e40d[_0x2778('0x41')],'id':_0x51e40d['id']}}]},'headers':{'Authorization':_0x2778('0x2f')+_0x54bd71},'json':!![]})[_0x2778('0x26')](function(_0x53f710){if(_0x53f710&&_0x53f710[_0x2778('0x3b')][0x0][_0x2778('0x42')]===_0x2778('0x43')){var _0x34807a=_0x53f710[_0x2778('0x3b')][0x0][_0x2778('0x44')];_0x34807a[_0x2778('0x3c')]=_[_0x2778('0x3e')](_0x1ab939[_0x2778('0x45')])+'s';return _0x34807a;}logger[_0x2778('0x29')](_0x2778('0x3a'),JSON[_0x2778('0xd')](data));throw new Error(_0x2778('0x46')+JSON['stringify'](data));})['catch'](function(_0x218b9f){console[_0x2778('0x47')](_0x2778('0x48'),_0x218b9f);});}function getEndUser(_0x291b1a,_0x2aa24b,_0x149112,_0x25adab,_0x4ab42e,_0x41e9ec,_0x46c47b){var _0x387b04={'method':'GET','uri':'','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x291b1a},'json':!![]};switch(_0x46c47b['moduleSearch']){case _0x2778('0x49'):_0x387b04[_0x2778('0x4a')]=_0x2778('0x4b')+_0x2aa24b+_0x2778('0x4c')+_0x4ab42e+'))';return getZohoUser(_0x387b04,_0x2778('0x4d'))[_0x2778('0x26')](function(_0x83c66c){if(_0x83c66c)return _0x83c66c;_0x387b04[_0x2778('0x4a')]='https://www.zohoapis.'+_0x2aa24b+_0x2778('0x4e')+_0x4ab42e+'))';return getZohoUser(_0x387b04,_0x2778('0x4f'))[_0x2778('0x26')](function(_0x30dec2){if(_0x30dec2)return _0x30dec2;if(_0x46c47b[_0x2778('0x45')]!=_0x2778('0x50')){return createEndUser(_0x291b1a,_0x2aa24b,_0x25adab,_0x4ab42e,_0x41e9ec,_0x46c47b);}else{return{};}});});break;case _0x2778('0x51'):_0x387b04[_0x2778('0x4a')]=_0x2778('0x4b')+_0x2aa24b+_0x2778('0x4c')+_0x4ab42e+'))';return getZohoUser(_0x387b04,_0x2778('0x4d'))[_0x2778('0x26')](function(_0x421e7d){if(_0x421e7d)return _0x421e7d;if(_0x46c47b[_0x2778('0x45')]!=_0x2778('0x50')){return createEndUser(_0x291b1a,_0x2aa24b,_0x25adab,_0x4ab42e,_0x41e9ec,_0x46c47b);}else{return{};}});break;case _0x2778('0x52'):_0x387b04['uri']=_0x2778('0x4b')+_0x2aa24b+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x4ab42e+'))';return getZohoUser(_0x387b04,'Leads')[_0x2778('0x26')](function(_0x12ffe4){if(_0x12ffe4)return _0x12ffe4;if(_0x46c47b[_0x2778('0x45')]!='nothing'){return createEndUser(_0x291b1a,_0x2aa24b,_0x25adab,_0x4ab42e,_0x41e9ec,_0x46c47b);}else{return{};}});break;}}function getCall(_0x452d21,_0x2a9b3d,_0x3be3b0,_0x2ba84e,_0x176beb,_0x448c6d,_0x340cfd,_0x3f8792){logger[_0x2778('0x2b')](_0x2778('0x53'));var _0x2baad2={};_0x2baad2['Owner']={'name':!_[_0x2778('0x1d')](_0x2ba84e[_0x2778('0x3f')][_0x2778('0x19')])&&!_[_0x2778('0x1d')](_0x2ba84e['profile'][_0x2778('0x19')])&&_0x2ba84e['profile'][_0x2778('0x19')]===_0x2778('0x54')?_0x2ba84e[_0x2778('0x3f')][_0x2778('0x19')]:!_[_0x2778('0x1d')](_0x2ba84e[_0x2778('0x40')])?_0x2ba84e[_0x2778('0x40')]+'\x20'+_0x2ba84e[_0x2778('0x41')]:_0x2ba84e[_0x2778('0x41')],'id':_0x2ba84e['id']};_0x2baad2[_0x2778('0x55')]=intUtil[_0x2778('0x56')](_0x448c6d[_0x2778('0x57')],_0x340cfd,'\x20');_0x2baad2[_0x2778('0x58')]=intUtil[_0x2778('0x56')](_0x448c6d[_0x2778('0x59')],_0x340cfd,'\x0a');if(_0x176beb[_0x2778('0x3c')]===_0x2778('0x4d')){_0x2baad2[_0x2778('0x5a')]={'name':!_['isNil'](_0x176beb['Full_Name'])?_0x176beb['Full_Name']:!_['isNil'](_0x176beb[_0x2778('0x5b')])?_0x176beb['First_Name']+'\x20'+_0x176beb[_0x2778('0x5c')]:_0x176beb['Last_Name'],'id':_0x176beb['id']};}if(_0x176beb[_0x2778('0x3c')]===_0x2778('0x4f')){_0x2baad2[_0x2778('0x5d')]={'name':!_[_0x2778('0x1d')](_0x176beb[_0x2778('0x5e')])?_0x176beb[_0x2778('0x5e')]:!_[_0x2778('0x1d')](_0x176beb[_0x2778('0x5b')])?_0x176beb[_0x2778('0x5b')]+'\x20'+_0x176beb['Last_Name']:_0x176beb[_0x2778('0x5c')],'id':_0x176beb['id']};_0x2baad2[_0x2778('0x5f')]=_['startCase'](_0x176beb['enduserType']);}if(_0x340cfd['talktime']){_0x2baad2[_0x2778('0x60')]=moment['utc'](parseInt(_0x340cfd[_0x2778('0x61')])*0x3e8)[_0x2778('0x2c')]('mm:ss');}else if(_0x340cfd[_0x2778('0x62')]&&_0x340cfd[_0x2778('0x63')]){_0x2baad2['Call_Duration']=moment['utc'](moment(_0x340cfd[_0x2778('0x63')],_0x2778('0x64'))[_0x2778('0x65')](moment(_0x340cfd['starttime'],'YYYY-MM-DDTHH:mm:ss')))[_0x2778('0x2c')](_0x2778('0x66'));}switch(_0x340cfd['lastevent']){case'called':_0x2baad2[_0x2778('0x67')]=_0x2778('0x68');break;case _0x2778('0x69'):case _0x2778('0x6a'):_0x2baad2[_0x2778('0x67')]=_0x2778('0x6b');break;case _0x2778('0x6c'):_0x2baad2['Call_Result']=_0x2778('0x6d');break;case _0x2778('0x6e'):_0x2baad2[_0x2778('0x67')]='Abandoned';break;case _0x2778('0x6f'):_0x2baad2[_0x2778('0x67')]=_0x2778('0x70');default:}_0x2baad2[_0x2778('0x71')]=(_0x3f8792==='outbound'?moment(_0x340cfd[_0x2778('0x72')])[_0x2778('0x2c')](_0x2778('0x64')):moment(_0x340cfd[_0x2778('0x73')])[_0x2778('0x2c')](_0x2778('0x64')))||moment()[_0x2778('0x2c')](_0x2778('0x64'));_0x2baad2[_0x2778('0x74')]=_0x3f8792||_0x2778('0x75');_0x2baad2=_[_0x2778('0x76')](_0x2baad2,getCustomFields(_0x448c6d[_0x2778('0x77')],_0x340cfd));return request({'method':_0x2778('0x23'),'uri':_0x2778('0x4b')+_0x2a9b3d+_0x2778('0x78'),'headers':{'Authorization':_0x2778('0x2f')+_0x452d21},'body':{'data':[_0x2baad2]},'json':!![]})[_0x2778('0x26')](function(_0x295222){if(_0x295222&&_0x295222[_0x2778('0x3b')][0x0][_0x2778('0x42')]===_0x2778('0x43')){logger[_0x2778('0x2b')](_0x2778('0x79'));return{'id':_0x295222['data'][0x0]['details']['id']};}})['catch'](function(_0x8980e1){logger[_0x2778('0x2b')](_0x2778('0x7a'),_0x8980e1[_0x2778('0x7b')]);console[_0x2778('0x47')](_0x2778('0x7a'),_0x8980e1);});}exports[_0x2778('0x7c')]=function(_0xa39f3a,_0x1a8ab2,_0x49f0d2,_0x53ae69,_0x25579e,_0x5402ed){var _0x1b624d,_0x5f5454,_0x27444d;_0x5402ed[_0x2778('0x7d')]=intUtil['stripTrailingSlash'](_0x5402ed[_0x2778('0x7d')]);_0x5402ed[_0x2778('0x7e')]=intUtil[_0x2778('0x7f')](_0x5402ed[_0x2778('0x7e')]);if(_0x25579e&&_0x25579e[_0x2778('0x80')]){logger['info'](_0x2778('0x81'),_0x2778('0x82'));_0x1a8ab2['recordingURL']=_0x5402ed[_0x2778('0x7e')]+'/api/voice/recordings/'+_0x1a8ab2[_0x2778('0x83')]+'/downloads?type=uniqueid&token='+md5(_0x1a8ab2['uniqueid']);}else{_0x1a8ab2['recordingURL']='';}var _0x5aaaec=_0x5402ed['host']===_0x2778('0x84')?'eu':_0x2778('0x85');return getAccessToken(_0x5402ed)[_0x2778('0x26')](function(_0x3b9f0d){_0x27444d=_0x3b9f0d;return getUser(_0x27444d,_0x5aaaec,_0x5402ed,_0x53ae69[_0x2778('0x33')]);})[_0x2778('0x26')](function(_0x4ea1bf){_0x1b624d=_0x4ea1bf;logger['info'](_0x2778('0x86'),_0x1b624d['id']);return getEndUser(_0x27444d,_0x5aaaec,_0x5402ed,_0x1a8ab2[_0x2778('0x87')],_0x1a8ab2[_0x2778('0x88')],_0x1b624d,_0x49f0d2);})[_0x2778('0x26')](function(_0x191ee1){_0x5f5454=_0x191ee1;return getCall(_0x27444d,_0x5aaaec,_0x5402ed,_0x1b624d,_0x5f5454,_0x49f0d2,_0x1a8ab2,_0x2778('0x75'));})[_0x2778('0x26')](function(_0x572f2b){if(_0x572f2b){logger[_0x2778('0x2b')]('The\x20Call\x20ID\x20is:',_0x572f2b['id']);logger[_0x2778('0x2b')](_0x2778('0x81'),_0x2778('0x89'));emit(util[_0x2778('0x2c')](_0x2778('0x8a'),_0x53ae69[_0x2778('0x19')]),'trigger:browser:url',{'uri':_0x2778('0x8b')+_0x5402ed[_0x2778('0x7d')]+'/crm/EntityInfo.do?module=Calls&id='+_0x572f2b['id']});}})[_0x2778('0x28')](function(_0x35e8eb){logger[_0x2778('0x29')](_0x2778('0x81'),JSON['stringify'](_0x35e8eb));});};exports[_0x2778('0x8c')]=function(_0xa5be79,_0xec587e,_0x176266,_0x569077,_0x36f8c7,_0x2eb3da,_0x5071ec){var _0x33b9ef,_0x28d0f7,_0x5ceb79;_0x2eb3da[_0x2778('0x7d')]=intUtil[_0x2778('0x7f')](_0x2eb3da[_0x2778('0x7d')]);_0x2eb3da[_0x2778('0x7e')]=intUtil[_0x2778('0x7f')](_0x2eb3da[_0x2778('0x7e')]);if(_0x5071ec&&_0x5071ec['recordingFormat']&&_0x5071ec[_0x2778('0x8d')]!==_0x2778('0x8e')){logger[_0x2778('0x2b')](_0x2778('0x8f'),_0x2778('0x82'));_0xec587e['recordingURL']=_0x2eb3da[_0x2778('0x7e')]+'/api/voice/recordings/'+_0xec587e[_0x2778('0x83')]+_0x2778('0x90')+md5(_0xec587e[_0x2778('0x83')]);}var _0x6e9af9=_0x2eb3da[_0x2778('0x7d')]===_0x2778('0x84')?'eu':_0x2778('0x85');return getAccessToken(_0x2eb3da)[_0x2778('0x26')](function(_0x38825d){_0x5ceb79=_0x38825d;return getUser(_0x5ceb79,_0x6e9af9,_0x2eb3da,_0x569077[_0x2778('0x33')]);})['then'](function(_0x58cf65){_0x33b9ef=_0x58cf65;logger[_0x2778('0x2b')]('The\x20User\x20ID\x20is:',_0x33b9ef['id']);return getEndUser(_0x5ceb79,_0x6e9af9,_0x2eb3da,_0xec587e[_0x2778('0x91')],_0xec587e[_0x2778('0x92')],_0x33b9ef,_0x176266);})['then'](function(_0x31dfee){_0x28d0f7=_0x31dfee;return getCall(_0x5ceb79,_0x6e9af9,_0x2eb3da,_0x33b9ef,_0x28d0f7,_0x176266,_0xec587e,_0x2778('0x93'));})[_0x2778('0x26')](function(_0x1a2dce){if(_0x1a2dce){logger[_0x2778('0x2b')](_0x2778('0x94'),_0x1a2dce['id']);logger['info'](_0x2778('0x8f'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x569077[_0x2778('0x19')]),'trigger:browser:url',{'uri':'https://crm.'+_0x2eb3da[_0x2778('0x7d')]+_0x2778('0x95')+_0x1a2dce['id']});}})[_0x2778('0x28')](function(_0x4c85e4){logger[_0x2778('0x29')](_0x2778('0x8f'),JSON[_0x2778('0xd')](_0x4c85e4));});};exports[_0x2778('0x96')]=function(_0x35afbd,_0x3adbbc,_0x5521dd,_0x288c46,_0x15057e,_0x11a9a3){var _0x586826,_0x309b0e,_0x3b0485;_0x11a9a3[_0x2778('0x7d')]=intUtil[_0x2778('0x7f')](_0x11a9a3[_0x2778('0x7d')]);_0x11a9a3['serverUrl']=intUtil['stripTrailingSlash'](_0x11a9a3[_0x2778('0x7e')]);if(_0x15057e&&_0x15057e['monitor_format']){logger[_0x2778('0x2b')]('['+_0x3adbbc[_0x2778('0x97')][_0x2778('0x98')]()+']','Recording\x20is\x20enabled!');_0x3adbbc[_0x2778('0x99')]=_0x11a9a3[_0x2778('0x7e')]+'/api/voice/recordings/'+_0x3adbbc[_0x2778('0x83')]+_0x2778('0x90')+md5(_0x3adbbc[_0x2778('0x83')]);}else{_0x3adbbc[_0x2778('0x99')]='';}var _0xd646c3=_0x11a9a3[_0x2778('0x7d')]==='zoho.eu'?'eu':_0x2778('0x85');return getAccessToken(_0x11a9a3)[_0x2778('0x26')](function(_0x1530ed){_0x3b0485=_0x1530ed;return getUser(_0x3b0485,_0xd646c3,_0x11a9a3);})[_0x2778('0x26')](function(_0xd1de29){_0x586826=_0xd1de29;logger['info']('The\x20User\x20ID\x20is:',_0x586826['id']);return getEndUser(_0x3b0485,_0xd646c3,_0x11a9a3,_0x3adbbc[_0x2778('0x87')],_0x3adbbc[_0x2778('0x88')],_0x586826,_0x5521dd);})[_0x2778('0x26')](function(_0x15ca91){_0x309b0e=_0x15ca91;return getCall(_0x3b0485,_0xd646c3,_0x11a9a3,_0x586826,_0x309b0e,_0x5521dd,_0x3adbbc,_0x2778('0x75'));})[_0x2778('0x26')](function(_0x3eb047){if(_0x3eb047){logger[_0x2778('0x2b')](_0x2778('0x94'),_0x3eb047['id']);}})['catch'](function(_0x3b9ecb){logger[_0x2778('0x29')]('['+_0x3adbbc['lastevent']['toUpperCase']()+']',JSON[_0x2778('0xd')](_0x3b9ecb));});};
\ No newline at end of file
index 627756c..20e8470 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b0f=['exec','data2','data3','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','../../../../config/logger','trigger'];(function(_0x58dd84,_0x2efaf4){var _0x28766a=function(_0x385f76){while(--_0x385f76){_0x58dd84['push'](_0x58dd84['shift']());}};_0x28766a(++_0x2efaf4);}(_0x7b0f,0x1e8));var _0xf7b0=function(_0xc779a4,_0x32b786){_0xc779a4=_0xc779a4-0x0;var _0x55ae09=_0x7b0f[_0xc779a4];return _0x55ae09;};'use strict';var util=require(_0xf7b0('0x0'));var sh=require(_0xf7b0('0x1'));var Mustache=require('mustache');var logger=require(_0xf7b0('0x2'))(_0xf7b0('0x3'));exports[_0xf7b0('0x4')]=function(_0x4c441e,_0x5dccbd){var _0x572242=_0x4c441e[_0xf7b0('0x5')]?_0x4c441e[_0xf7b0('0x5')]:'Script';var _0x4ac750=_0x4c441e[_0xf7b0('0x6')]?Mustache['render'](_0x4c441e[_0xf7b0('0x6')],_0x5dccbd):_0x5dccbd;sh[_0xf7b0('0x4')](_0x4ac750,function(_0x59422b,_0x33b2eb,_0x394783){if(_0x59422b!==0x0){logger[_0xf7b0('0x7')](util[_0xf7b0('0x8')](_0xf7b0('0x9'),_0x572242,_0x4ac750,_0x59422b,_0x394783));}else{logger[_0xf7b0('0xa')](util[_0xf7b0('0x8')](_0xf7b0('0xb'),_0x572242,_0x4ac750,_0x33b2eb));}});};
\ No newline at end of file
+var _0x1436=['error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','util','shelljs','mustache','../../../../config/logger','trigger','exec','data2','Script','data3','render'];(function(_0xd91d82,_0x459228){var _0x6cf4e1=function(_0x23ffd8){while(--_0x23ffd8){_0xd91d82['push'](_0xd91d82['shift']());}};_0x6cf4e1(++_0x459228);}(_0x1436,0xba));var _0x6143=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1436[_0x321bb2];return _0x9c12ed;};'use strict';var util=require(_0x6143('0x0'));var sh=require(_0x6143('0x1'));var Mustache=require(_0x6143('0x2'));var logger=require(_0x6143('0x3'))(_0x6143('0x4'));exports[_0x6143('0x5')]=function(_0x3d6b49,_0x447bbf){var _0x3a714f=_0x3d6b49[_0x6143('0x6')]?_0x3d6b49[_0x6143('0x6')]:_0x6143('0x7');var _0x43e52f=_0x3d6b49[_0x6143('0x8')]?Mustache[_0x6143('0x9')](_0x3d6b49[_0x6143('0x8')],_0x447bbf):_0x447bbf;sh['exec'](_0x43e52f,function(_0x260675,_0xe37bd6,_0x3669ea){if(_0x260675!==0x0){logger[_0x6143('0xa')](util[_0x6143('0xb')](_0x6143('0xc'),_0x3a714f,_0x43e52f,_0x260675,_0x3669ea));}else{logger[_0x6143('0xd')](util[_0x6143('0xb')]('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x3a714f,_0x43e52f,_0xe37bd6));}});};
\ No newline at end of file
index 98cb780..6b386da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97f3=['name','message','request-promise','lodash','mustache','../../../../config/logger','exec','render','data2','data5','number','headers','data6','parse','error','stack','data1','toUpperCase','POST','PUT','data7','body','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then','isNil',',\x20request\x20body:\x20','object','statusCode','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s'];(function(_0x3b973c,_0x415025){var _0x41a355=function(_0x34da47){while(--_0x34da47){_0x3b973c['push'](_0x3b973c['shift']());}};_0x41a355(++_0x415025);}(_0x97f3,0x8a));var _0x397f=function(_0x27bcce,_0x4a2188){_0x27bcce=_0x27bcce-0x0;var _0x26af0f=_0x97f3[_0x27bcce];return _0x26af0f;};'use strict';var rp=require(_0x397f('0x0'));var util=require('util');var _=require(_0x397f('0x1'));var Mustache=require(_0x397f('0x2'));var logger=require(_0x397f('0x3'))('trigger');exports[_0x397f('0x4')]=function(_0x43d472,_0x20a6f3){var _0x624218,_0x2741a2;var _0x367381={'method':_0x43d472['data1']['toUpperCase'](),'uri':Mustache[_0x397f('0x5')](_0x43d472[_0x397f('0x6')],_0x20a6f3),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x43d472[_0x397f('0x7')])===_0x397f('0x8')&&parseInt(_0x43d472[_0x397f('0x7')])>=0x1&&parseInt(_0x43d472['data5'])<=0xa?parseInt(_0x43d472[_0x397f('0x7')])*0x3e8:0x5*0x3e8};try{_0x367381[_0x397f('0x9')]=_0x43d472[_0x397f('0xa')]?JSON[_0x397f('0xb')](Mustache['render'](_0x43d472[_0x397f('0xa')],_0x20a6f3)):{};}catch(_0x45ecad){logger[_0x397f('0xc')](_0x45ecad[_0x397f('0xd')]);}switch(_0x43d472[_0x397f('0xe')][_0x397f('0xf')]()){case'GET':case'DELETE':_0x624218=null;_0x367381['qs']=_0x20a6f3;break;case _0x397f('0x10'):case _0x397f('0x11'):if(_0x43d472[_0x397f('0x12')]){try{_0x624218=JSON[_0x397f('0xb')](Mustache['render'](_0x43d472['data7'],_0x20a6f3));_0x367381[_0x397f('0x13')]=_0x624218;}catch(_0x548167){logger['error'](_0x548167[_0x397f('0xd')]);logger[_0x397f('0xc')](_0x397f('0x14'));}}else{_0x624218=_0x20a6f3;_0x367381['body']=_0x624218;}break;}logger[_0x397f('0x15')](util[_0x397f('0x16')](_0x397f('0x17'),_0x43d472[_0x397f('0xe')],_0x43d472[_0x397f('0x6')],JSON[_0x397f('0x18')](_0x367381)));rp(_0x367381)[_0x397f('0x19')](function(_0x12cf6c){_0x624218=!_[_0x397f('0x1a')](_0x624218)?_0x397f('0x1b')+_0x624218:'';_0x2741a2=typeof _0x12cf6c['body']===_0x397f('0x1c')?JSON['stringify'](_0x12cf6c['body']):_0x12cf6c[_0x397f('0x13')];logger[_0x397f('0x15')](util[_0x397f('0x16')]('%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s',_0x43d472[_0x397f('0xe')],_0x43d472[_0x397f('0x6')],_0x12cf6c[_0x397f('0x1d')],_0x2741a2));})[_0x397f('0x1e')](function(_0x25bf7f){logger[_0x397f('0xc')](util[_0x397f('0x16')](_0x397f('0x1f'),_0x43d472[_0x397f('0xe')],_0x43d472[_0x397f('0x6')],_0x25bf7f['statusCode'],_0x25bf7f[_0x397f('0x20')],_0x25bf7f[_0x397f('0x21')]));});};
\ No newline at end of file
+var _0x3651=['stack','data1','toUpperCase','GET','DELETE','PUT','data7','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','body','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','isNil',',\x20request\x20body:\x20','object','statusCode','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','name','message','request-promise','util','lodash','mustache','trigger','exec','render','data2','number','data5','parse','data6','error'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3651,0xfb));var _0x1365=function(_0x5593ac,_0x2c14d0){_0x5593ac=_0x5593ac-0x0;var _0x2e9b46=_0x3651[_0x5593ac];return _0x2e9b46;};'use strict';var rp=require(_0x1365('0x0'));var util=require(_0x1365('0x1'));var _=require(_0x1365('0x2'));var Mustache=require(_0x1365('0x3'));var logger=require('../../../../config/logger')(_0x1365('0x4'));exports[_0x1365('0x5')]=function(_0x1e8ea7,_0xce3a9e){var _0x49944f,_0x45441d;var _0x35c54f={'method':_0x1e8ea7['data1']['toUpperCase'](),'uri':Mustache[_0x1365('0x6')](_0x1e8ea7[_0x1365('0x7')],_0xce3a9e),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x1e8ea7['data5'])===_0x1365('0x8')&&parseInt(_0x1e8ea7[_0x1365('0x9')])>=0x1&&parseInt(_0x1e8ea7[_0x1365('0x9')])<=0xa?parseInt(_0x1e8ea7[_0x1365('0x9')])*0x3e8:0x5*0x3e8};try{_0x35c54f['headers']=_0x1e8ea7['data6']?JSON[_0x1365('0xa')](Mustache[_0x1365('0x6')](_0x1e8ea7[_0x1365('0xb')],_0xce3a9e)):{};}catch(_0xbcca55){logger[_0x1365('0xc')](_0xbcca55[_0x1365('0xd')]);}switch(_0x1e8ea7[_0x1365('0xe')][_0x1365('0xf')]()){case _0x1365('0x10'):case _0x1365('0x11'):_0x49944f=null;_0x35c54f['qs']=_0xce3a9e;break;case'POST':case _0x1365('0x12'):if(_0x1e8ea7[_0x1365('0x13')]){try{_0x49944f=JSON[_0x1365('0xa')](Mustache['render'](_0x1e8ea7[_0x1365('0x13')],_0xce3a9e));_0x35c54f['body']=_0x49944f;}catch(_0x4b345f){logger[_0x1365('0xc')](_0x4b345f['stack']);logger[_0x1365('0xc')](_0x1365('0x14'));}}else{_0x49944f=_0xce3a9e;_0x35c54f[_0x1365('0x15')]=_0x49944f;}break;}logger[_0x1365('0x16')](util[_0x1365('0x17')](_0x1365('0x18'),_0x1e8ea7[_0x1365('0xe')],_0x1e8ea7['data2'],JSON[_0x1365('0x19')](_0x35c54f)));rp(_0x35c54f)['then'](function(_0x341172){_0x49944f=!_[_0x1365('0x1a')](_0x49944f)?_0x1365('0x1b')+_0x49944f:'';_0x45441d=typeof _0x341172[_0x1365('0x15')]===_0x1365('0x1c')?JSON[_0x1365('0x19')](_0x341172[_0x1365('0x15')]):_0x341172['body'];logger[_0x1365('0x16')](util['format']('%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s',_0x1e8ea7[_0x1365('0xe')],_0x1e8ea7[_0x1365('0x7')],_0x341172[_0x1365('0x1d')],_0x45441d));})['catch'](function(_0x1fa294){logger[_0x1365('0xc')](util[_0x1365('0x17')](_0x1365('0x1e'),_0x1e8ea7[_0x1365('0xe')],_0x1e8ea7[_0x1365('0x7')],_0x1fa294['statusCode'],_0x1fa294[_0x1365('0x1f')],_0x1fa294[_0x1365('0x20')]));});};
\ No newline at end of file
index 6601aa9..4cb15c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ffb=['../../config/logger','routing','client','http','Request','then','debug','rpc','error','message','result','catch','jayson/promise'];(function(_0x3bd2c8,_0x395b96){var _0x25374f=function(_0x5ee528){while(--_0x5ee528){_0x3bd2c8['push'](_0x3bd2c8['shift']());}};_0x25374f(++_0x395b96);}(_0x5ffb,0x81));var _0xb5ff=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x5ffb[_0x57b54c];return _0x59cc19;};'use strict';var jayson=require(_0xb5ff('0x0'));var BPromise=require('bluebird');var logger=require(_0xb5ff('0x1'))(_0xb5ff('0x2'));var client=jayson[_0xb5ff('0x3')][_0xb5ff('0x4')]({'port':0x2329});client[_0xb5ff('0x5')]=function(_0x51ab69,_0x2e4e39){return new BPromise(function(_0x538bf2,_0x4af939){return client['request'](_0x51ab69,_0x2e4e39)[_0xb5ff('0x6')](function(_0x5a5594){logger[_0xb5ff('0x7')](_0xb5ff('0x8'),_0xb5ff('0x2'),_0x51ab69,_0x2e4e39,_0x5a5594);if(_0x5a5594[_0xb5ff('0x9')]){logger[_0xb5ff('0x9')](_0xb5ff('0x8'),_0xb5ff('0x2'),_0x51ab69,_0x5a5594[_0xb5ff('0x9')]['message'],_0x2e4e39);return _0x4af939(_0x5a5594[_0xb5ff('0x9')][_0xb5ff('0xa')]);}else{return _0x538bf2(_0x5a5594[_0xb5ff('0xb')]);}})[_0xb5ff('0xc')](function(_0x5afbf1){logger[_0xb5ff('0x9')](_0xb5ff('0x8'),_0xb5ff('0x2'),_0x51ab69,_0x5afbf1,_0x2e4e39);return _0x4af939(_0x5afbf1);});});};module['exports']=client;
\ No newline at end of file
+var _0xacd9=['debug','error','message','result','rpc','exports','jayson/promise','../../config/logger','routing','client','http','Request','request','then'];(function(_0x1d759e,_0x4e3251){var _0x3d58b9=function(_0x3f79cd){while(--_0x3f79cd){_0x1d759e['push'](_0x1d759e['shift']());}};_0x3d58b9(++_0x4e3251);}(_0xacd9,0x180));var _0x9acd=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xacd9[_0x311c35];return _0x5cc50c;};'use strict';var jayson=require(_0x9acd('0x0'));var BPromise=require('bluebird');var logger=require(_0x9acd('0x1'))(_0x9acd('0x2'));var client=jayson[_0x9acd('0x3')][_0x9acd('0x4')]({'port':0x2329});client[_0x9acd('0x5')]=function(_0x145100,_0x175bae){return new BPromise(function(_0x4aaa5b,_0x4a6d63){return client[_0x9acd('0x6')](_0x145100,_0x175bae)[_0x9acd('0x7')](function(_0x472fc1){logger[_0x9acd('0x8')]('rpc',_0x9acd('0x2'),_0x145100,_0x175bae,_0x472fc1);if(_0x472fc1[_0x9acd('0x9')]){logger[_0x9acd('0x9')]('rpc',_0x9acd('0x2'),_0x145100,_0x472fc1['error']['message'],_0x175bae);return _0x4a6d63(_0x472fc1['error'][_0x9acd('0xa')]);}else{return _0x4aaa5b(_0x472fc1[_0x9acd('0xb')]);}})['catch'](function(_0x3d1804){logger[_0x9acd('0x9')](_0x9acd('0xc'),_0x9acd('0x2'),_0x145100,_0x3d1804,_0x175bae);return _0x4a6d63(_0x3d1804);});});};module[_0x9acd('0xd')]=client;
\ No newline at end of file
index 75478f3..a78e4de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa64=['then','initMailAccounts','refresh','mailAccounts','listen','catch','log','bluebird','./server','./lib/email','./rpc/setting','resolve'];(function(_0x36f641,_0x1a3063){var _0x39b299=function(_0x20c0a3){while(--_0x20c0a3){_0x36f641['push'](_0x36f641['shift']());}};_0x39b299(++_0x1a3063);}(_0xaa64,0xf7));var _0x4aa6=function(_0x19ae02,_0x32d426){_0x19ae02=_0x19ae02-0x0;var _0x575138=_0xaa64[_0x19ae02];return _0x575138;};'use strict';var BPromise=require(_0x4aa6('0x0'));var server=require(_0x4aa6('0x1'));var Realtime=require('./realtime');var EmailChannel=require(_0x4aa6('0x2'));var mailAccount=require('./rpc/mailAccount');var setting=require(_0x4aa6('0x3'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0x4aa6('0x4')]()[_0x4aa6('0x5')](mailAccount['getMailAccounts']())[_0x4aa6('0x5')](realtime[_0x4aa6('0x6')]())[_0x4aa6('0x5')](function(){email[_0x4aa6('0x7')](realtime[_0x4aa6('0x8')]);return realtime;});}function main(){return server[_0x4aa6('0x9')](realtime,email)[_0x4aa6('0x5')](function(){return initRealtime();})['then'](function(){return setting['getSettings']();})[_0x4aa6('0x5')](function(_0x262497){return setInterval(initRealtime,_0x262497['loginMailFrequency']*0x3e8);})[_0x4aa6('0xa')](function(_0x521ae3){console[_0x4aa6('0xb')](_0x521ae3);});}main();
\ No newline at end of file
+var _0x26b0=['bluebird','./server','./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','then','getMailAccounts','initMailAccounts','mailAccounts','getSettings','log'];(function(_0x6306b4,_0x5f4647){var _0x46e442=function(_0x281912){while(--_0x281912){_0x6306b4['push'](_0x6306b4['shift']());}};_0x46e442(++_0x5f4647);}(_0x26b0,0x138));var _0x026b=function(_0x5543f4,_0x5bf4fb){_0x5543f4=_0x5543f4-0x0;var _0x74e9e1=_0x26b0[_0x5543f4];return _0x74e9e1;};'use strict';var BPromise=require(_0x026b('0x0'));var server=require(_0x026b('0x1'));var Realtime=require(_0x026b('0x2'));var EmailChannel=require(_0x026b('0x3'));var mailAccount=require(_0x026b('0x4'));var setting=require(_0x026b('0x5'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise['resolve']()[_0x026b('0x6')](mailAccount[_0x026b('0x7')]())[_0x026b('0x6')](realtime[_0x026b('0x8')]())[_0x026b('0x6')](function(){email['refresh'](realtime[_0x026b('0x9')]);return realtime;});}function main(){return server['listen'](realtime,email)['then'](function(){return initRealtime();})['then'](function(){return setting[_0x026b('0xa')]();})[_0x026b('0x6')](function(_0x2cb2c9){return setInterval(initRealtime,_0x2cb2c9['loginMailFrequency']*0x3e8);})['catch'](function(_0x30e476){console[_0x026b('0xb')](_0x30e476);});}main();
\ No newline at end of file
index 4d86c15..4641911 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fff=['localhost','socket.io-emitter','./imap','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','emit','name','key','Imap','isNil','mailAccount:update','refresh','hasOwnProperty','active','box','handleImapBox','bind','end','handleImapEnd','error','status','disabled','messageStatus','prototype','connected','messages','total','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','stringify','lastSync','handleImapError','sendMail','smtp','send','verifySmtp','Smtp','verify','verified','exports','lodash','moment','bluebird','md5','ioredis','../../../config/environment','../../../config/logger','email','redis'];(function(_0x49f2ae,_0x262bc7){var _0x2b34e7=function(_0x33669a){while(--_0x33669a){_0x49f2ae['push'](_0x49f2ae['shift']());}};_0x2b34e7(++_0x262bc7);}(_0x3fff,0x119));var _0xf3ff=function(_0x390262,_0x5ae918){_0x390262=_0x390262-0x0;var _0x22f0af=_0x3fff[_0x390262];return _0x22f0af;};'use strict';var _=require(_0xf3ff('0x0'));var moment=require(_0xf3ff('0x1'));var BPromise=require(_0xf3ff('0x2'));var md5=require(_0xf3ff('0x3'));var Redis=require(_0xf3ff('0x4'));var config=require(_0xf3ff('0x5'));var logger=require(_0xf3ff('0x6'))(_0xf3ff('0x7'));config[_0xf3ff('0x8')]=_['defaults'](config[_0xf3ff('0x8')],{'host':_0xf3ff('0x9'),'port':0x18eb});var io=require(_0xf3ff('0xa'))(new Redis(config[_0xf3ff('0x8')]));var EmailImap=require(_0xf3ff('0xb'));var EmailSmtp=require('./smtp');var mailAccount=require(_0xf3ff('0xc'));var md5Accounts={};function EmailChannel(_0x128dd1){logger[_0xf3ff('0xd')](_0xf3ff('0xe'));this[_0xf3ff('0xf')]=_0x128dd1['mailAccounts'];this[_0xf3ff('0x10')]={};this['smtp']=new EmailSmtp();}EmailChannel['prototype'][_0xf3ff('0x11')]=function(_0x1dd700){var _0x582144=this[_0xf3ff('0xf')][_0x1dd700];var _0x41b942={'id':_0x582144['id'],'name':_0x582144[_0xf3ff('0x12')],'key':_0x582144[_0xf3ff('0x13')],'active':_0x582144['active'],'Imap':{'status':_0x582144['Imap']['status'],'messageStatus':_0x582144[_0xf3ff('0x14')]['messageStatus'],'total':_0x582144['Imap']['total']}};if(_[_0xf3ff('0x15')](md5Accounts[_0x1dd700])){md5Accounts[_0x1dd700]={};}var _0x3cbadb=md5(JSON['stringify'](_0x41b942));if(md5Accounts[_0x1dd700][_0xf3ff('0x3')]!==_0x3cbadb){md5Accounts[_0x1dd700][_0xf3ff('0x3')]=_0x3cbadb;io['emit'](_0xf3ff('0x16'),_0x41b942);}};EmailChannel['prototype'][_0xf3ff('0x17')]=function(_0x36a733){for(var _0x20afa3 in _0x36a733){if(_0x36a733[_0xf3ff('0x18')](_0x20afa3)){if(_0x36a733[_0x20afa3][_0xf3ff('0x14')]&&_0x36a733[_0x20afa3][_0xf3ff('0x19')]){var _0x531e4c=_0x36a733[_0x20afa3][_0xf3ff('0x14')];if(!this[_0xf3ff('0x10')][_0xf3ff('0x18')](_0x531e4c['id'])){this[_0xf3ff('0x10')][_0x531e4c['id']]=new EmailImap(_0x531e4c,_0x36a733[_0x20afa3][_0xf3ff('0x7')]);this['imapAccounts'][_0x531e4c['id']]['on'](_0xf3ff('0x1a'),this[_0xf3ff('0x1b')][_0xf3ff('0x1c')](this,_0x20afa3));this[_0xf3ff('0x10')][_0x531e4c['id']]['on'](_0xf3ff('0x7'),this['handleImapEmail'][_0xf3ff('0x1c')](this,_0x20afa3));this['imapAccounts'][_0x531e4c['id']]['on'](_0xf3ff('0x1d'),this[_0xf3ff('0x1e')][_0xf3ff('0x1c')](this,_0x20afa3));this[_0xf3ff('0x10')][_0x531e4c['id']]['on'](_0xf3ff('0x1f'),this['handleImapError'][_0xf3ff('0x1c')](this,_0x20afa3));}}else{if(_['isNil'](this[_0xf3ff('0xf')][_0x20afa3][_0xf3ff('0x14')])){this[_0xf3ff('0xf')][_0x20afa3][_0xf3ff('0x14')]={};}this[_0xf3ff('0xf')][_0x20afa3][_0xf3ff('0x14')][_0xf3ff('0x20')]=_0xf3ff('0x21');this[_0xf3ff('0xf')][_0x20afa3][_0xf3ff('0x14')][_0xf3ff('0x22')]='';this[_0xf3ff('0x11')](_0x20afa3);}}}};EmailChannel[_0xf3ff('0x23')][_0xf3ff('0x1b')]=function(_0x5cbb1c,_0x59a350){if(this[_0xf3ff('0xf')][_0x5cbb1c]){this[_0xf3ff('0xf')][_0x5cbb1c][_0xf3ff('0x14')][_0xf3ff('0x20')]=_0xf3ff('0x24');this['mailAccounts'][_0x5cbb1c][_0xf3ff('0x14')]['messageStatus']=_0x59a350['name'];if(_0x59a350[_0xf3ff('0x25')]){this['mailAccounts'][_0x5cbb1c][_0xf3ff('0x14')][_0xf3ff('0x26')]=_0x59a350['messages'][_0xf3ff('0x26')];}return this[_0xf3ff('0x11')](_0x5cbb1c);}};EmailChannel[_0xf3ff('0x23')]['handleImapEmail']=function(_0x2ba490,_0x14a2ef){logger[_0xf3ff('0xd')](_0xf3ff('0x27'),_0x14a2ef[_0xf3ff('0x28')],_0x14a2ef[_0xf3ff('0x29')],_0x14a2ef[_0xf3ff('0x2a')],_0x2ba490);if(this['mailAccounts'][_0x2ba490]){return mailAccount[_0xf3ff('0x2b')](_0x2ba490,_0x14a2ef)[_0xf3ff('0x2c')](function(_0xf337ac){if(_0xf337ac){logger[_0xf3ff('0xd')](_0xf3ff('0x2d'));}})[_0xf3ff('0x2e')](function(_0x553aec){logger[_0xf3ff('0x1f')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0xf3ff('0x2f')](_0x553aec));});}};EmailChannel['prototype'][_0xf3ff('0x1e')]=function(_0x259c77){if(this['mailAccounts'][_0x259c77]&&this[_0xf3ff('0xf')][_0x259c77][_0xf3ff('0x14')]){if(this[_0xf3ff('0x10')][this[_0xf3ff('0xf')][_0x259c77][_0xf3ff('0x14')]['id']]){delete this[_0xf3ff('0x10')][this[_0xf3ff('0xf')][_0x259c77][_0xf3ff('0x14')]['id']];}this[_0xf3ff('0xf')][_0x259c77]['Imap'][_0xf3ff('0x30')]=moment();this[_0xf3ff('0x11')](_0x259c77);}};EmailChannel[_0xf3ff('0x23')][_0xf3ff('0x31')]=function(_0xe85df8,_0x104586){if(this[_0xf3ff('0xf')][_0xe85df8]){this[_0xf3ff('0xf')][_0xe85df8]['Imap'][_0xf3ff('0x20')]='error';this[_0xf3ff('0xf')][_0xe85df8][_0xf3ff('0x14')][_0xf3ff('0x22')]=_0x104586;return this[_0xf3ff('0x11')](_0xe85df8);}};EmailChannel[_0xf3ff('0x23')][_0xf3ff('0x32')]=function(_0x4ef2a9,_0x30aa0f){return this[_0xf3ff('0x33')][_0xf3ff('0x34')](_0x4ef2a9,_0x30aa0f);};EmailChannel[_0xf3ff('0x23')][_0xf3ff('0x35')]=function(_0x18df1e){var _0x4875b6=this;if(this[_0xf3ff('0xf')][_0x18df1e['id']]){if(_[_0xf3ff('0x15')](this[_0xf3ff('0xf')][_0x18df1e['id']][_0xf3ff('0x36')])){this[_0xf3ff('0xf')][_0x18df1e['id']][_0xf3ff('0x36')]={};}this[_0xf3ff('0xf')][_0x18df1e['id']]['Smtp'][_0xf3ff('0x30')]=moment();return new BPromise(function(_0x2cdb47,_0x35e6a8){return _0x4875b6[_0xf3ff('0x33')][_0xf3ff('0x37')](_0x18df1e)[_0xf3ff('0x2c')](function(_0x18a867){_0x4875b6[_0xf3ff('0xf')][_0x18df1e['id']][_0xf3ff('0x36')]['status']=_0xf3ff('0x38');_0x4875b6[_0xf3ff('0xf')][_0x18df1e['id']][_0xf3ff('0x36')][_0xf3ff('0x22')]='';_0x4875b6[_0xf3ff('0x11')](_0x18df1e['id']);_0x2cdb47(_0x18a867);})[_0xf3ff('0x2e')](function(_0x32180d){_0x4875b6[_0xf3ff('0xf')][_0x18df1e['id']]['Smtp'][_0xf3ff('0x20')]='error';_0x4875b6[_0xf3ff('0xf')][_0x18df1e['id']][_0xf3ff('0x36')]['messageStatus']=_0x32180d;_0x4875b6['emit'](_0x18df1e['id']);_0x35e6a8(_0x32180d);});});}return this[_0xf3ff('0x33')]['verify'](_0x18df1e);};module[_0xf3ff('0x39')]=EmailChannel;
\ No newline at end of file
+var _0xeaee=['email','redis','defaults','localhost','socket.io-emitter','./imap','./smtp','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','emit','name','key','status','isNil','mailAccount:update','refresh','hasOwnProperty','Imap','box','handleImapBox','bind','handleImapEmail','end','handleImapEnd','error','handleImapError','disabled','messageStatus','connected','total','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','lastName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','stringify','sendMail','verifySmtp','Smtp','lastSync','verify','verified','exports','lodash','moment','bluebird','md5','ioredis','../../../config/environment','../../../config/logger'];(function(_0x5a75b9,_0x1ca48e){var _0x2a7ced=function(_0x3e5a1c){while(--_0x3e5a1c){_0x5a75b9['push'](_0x5a75b9['shift']());}};_0x2a7ced(++_0x1ca48e);}(_0xeaee,0x1c9));var _0xeeae=function(_0x93cae,_0xf2b020){_0x93cae=_0x93cae-0x0;var _0x36e754=_0xeaee[_0x93cae];return _0x36e754;};'use strict';var _=require(_0xeeae('0x0'));var moment=require(_0xeeae('0x1'));var BPromise=require(_0xeeae('0x2'));var md5=require(_0xeeae('0x3'));var Redis=require(_0xeeae('0x4'));var config=require(_0xeeae('0x5'));var logger=require(_0xeeae('0x6'))(_0xeeae('0x7'));config[_0xeeae('0x8')]=_[_0xeeae('0x9')](config[_0xeeae('0x8')],{'host':_0xeeae('0xa'),'port':0x18eb});var io=require(_0xeeae('0xb'))(new Redis(config[_0xeeae('0x8')]));var EmailImap=require(_0xeeae('0xc'));var EmailSmtp=require(_0xeeae('0xd'));var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x2affed){logger[_0xeeae('0xe')](_0xeeae('0xf'));this[_0xeeae('0x10')]=_0x2affed[_0xeeae('0x10')];this[_0xeeae('0x11')]={};this[_0xeeae('0x12')]=new EmailSmtp();}EmailChannel[_0xeeae('0x13')][_0xeeae('0x14')]=function(_0x33d91e){var _0x3cb5ce=this[_0xeeae('0x10')][_0x33d91e];var _0x259739={'id':_0x3cb5ce['id'],'name':_0x3cb5ce[_0xeeae('0x15')],'key':_0x3cb5ce[_0xeeae('0x16')],'active':_0x3cb5ce['active'],'Imap':{'status':_0x3cb5ce['Imap'][_0xeeae('0x17')],'messageStatus':_0x3cb5ce['Imap']['messageStatus'],'total':_0x3cb5ce['Imap']['total']}};if(_[_0xeeae('0x18')](md5Accounts[_0x33d91e])){md5Accounts[_0x33d91e]={};}var _0x59cc10=md5(JSON['stringify'](_0x259739));if(md5Accounts[_0x33d91e][_0xeeae('0x3')]!==_0x59cc10){md5Accounts[_0x33d91e][_0xeeae('0x3')]=_0x59cc10;io[_0xeeae('0x14')](_0xeeae('0x19'),_0x259739);}};EmailChannel[_0xeeae('0x13')][_0xeeae('0x1a')]=function(_0x34ac55){for(var _0x351d1c in _0x34ac55){if(_0x34ac55[_0xeeae('0x1b')](_0x351d1c)){if(_0x34ac55[_0x351d1c][_0xeeae('0x1c')]&&_0x34ac55[_0x351d1c]['active']){var _0x2ef59d=_0x34ac55[_0x351d1c][_0xeeae('0x1c')];if(!this[_0xeeae('0x11')]['hasOwnProperty'](_0x2ef59d['id'])){this[_0xeeae('0x11')][_0x2ef59d['id']]=new EmailImap(_0x2ef59d,_0x34ac55[_0x351d1c][_0xeeae('0x7')]);this[_0xeeae('0x11')][_0x2ef59d['id']]['on'](_0xeeae('0x1d'),this[_0xeeae('0x1e')][_0xeeae('0x1f')](this,_0x351d1c));this[_0xeeae('0x11')][_0x2ef59d['id']]['on'](_0xeeae('0x7'),this[_0xeeae('0x20')]['bind'](this,_0x351d1c));this['imapAccounts'][_0x2ef59d['id']]['on'](_0xeeae('0x21'),this[_0xeeae('0x22')][_0xeeae('0x1f')](this,_0x351d1c));this[_0xeeae('0x11')][_0x2ef59d['id']]['on'](_0xeeae('0x23'),this[_0xeeae('0x24')][_0xeeae('0x1f')](this,_0x351d1c));}}else{if(_[_0xeeae('0x18')](this[_0xeeae('0x10')][_0x351d1c]['Imap'])){this[_0xeeae('0x10')][_0x351d1c][_0xeeae('0x1c')]={};}this[_0xeeae('0x10')][_0x351d1c]['Imap'][_0xeeae('0x17')]=_0xeeae('0x25');this[_0xeeae('0x10')][_0x351d1c]['Imap'][_0xeeae('0x26')]='';this[_0xeeae('0x14')](_0x351d1c);}}}};EmailChannel['prototype'][_0xeeae('0x1e')]=function(_0x5f4230,_0x3e9c3f){if(this[_0xeeae('0x10')][_0x5f4230]){this[_0xeeae('0x10')][_0x5f4230][_0xeeae('0x1c')][_0xeeae('0x17')]=_0xeeae('0x27');this[_0xeeae('0x10')][_0x5f4230]['Imap'][_0xeeae('0x26')]=_0x3e9c3f[_0xeeae('0x15')];if(_0x3e9c3f['messages']){this['mailAccounts'][_0x5f4230][_0xeeae('0x1c')][_0xeeae('0x28')]=_0x3e9c3f[_0xeeae('0x29')][_0xeeae('0x28')];}return this[_0xeeae('0x14')](_0x5f4230);}};EmailChannel[_0xeeae('0x13')]['handleImapEmail']=function(_0x70500c,_0x31e298){logger[_0xeeae('0xe')](_0xeeae('0x2a'),_0x31e298['firstName'],_0x31e298[_0xeeae('0x2b')],_0x31e298[_0xeeae('0x2c')],_0x70500c);if(this[_0xeeae('0x10')][_0x70500c]){return mailAccount[_0xeeae('0x2d')](_0x70500c,_0x31e298)[_0xeeae('0x2e')](function(_0x2c2f0){if(_0x2c2f0){logger[_0xeeae('0xe')](_0xeeae('0x2f'));}})[_0xeeae('0x30')](function(_0x5bb5f0){logger[_0xeeae('0x23')](_0xeeae('0x31'),JSON[_0xeeae('0x32')](_0x5bb5f0));});}};EmailChannel[_0xeeae('0x13')]['handleImapEnd']=function(_0x53ccc9){if(this[_0xeeae('0x10')][_0x53ccc9]&&this[_0xeeae('0x10')][_0x53ccc9][_0xeeae('0x1c')]){if(this[_0xeeae('0x11')][this[_0xeeae('0x10')][_0x53ccc9]['Imap']['id']]){delete this['imapAccounts'][this['mailAccounts'][_0x53ccc9][_0xeeae('0x1c')]['id']];}this[_0xeeae('0x10')][_0x53ccc9][_0xeeae('0x1c')]['lastSync']=moment();this[_0xeeae('0x14')](_0x53ccc9);}};EmailChannel[_0xeeae('0x13')][_0xeeae('0x24')]=function(_0x16684b,_0x18cb14){if(this[_0xeeae('0x10')][_0x16684b]){this['mailAccounts'][_0x16684b][_0xeeae('0x1c')]['status']='error';this['mailAccounts'][_0x16684b][_0xeeae('0x1c')][_0xeeae('0x26')]=_0x18cb14;return this[_0xeeae('0x14')](_0x16684b);}};EmailChannel['prototype'][_0xeeae('0x33')]=function(_0x2402f4,_0x518fc9){return this[_0xeeae('0x12')]['send'](_0x2402f4,_0x518fc9);};EmailChannel['prototype'][_0xeeae('0x34')]=function(_0x510161){var _0x26c418=this;if(this['mailAccounts'][_0x510161['id']]){if(_[_0xeeae('0x18')](this[_0xeeae('0x10')][_0x510161['id']][_0xeeae('0x35')])){this[_0xeeae('0x10')][_0x510161['id']][_0xeeae('0x35')]={};}this['mailAccounts'][_0x510161['id']][_0xeeae('0x35')][_0xeeae('0x36')]=moment();return new BPromise(function(_0x51d33f,_0x1dd52b){return _0x26c418['smtp'][_0xeeae('0x37')](_0x510161)[_0xeeae('0x2e')](function(_0x3e640f){_0x26c418[_0xeeae('0x10')][_0x510161['id']][_0xeeae('0x35')]['status']=_0xeeae('0x38');_0x26c418[_0xeeae('0x10')][_0x510161['id']][_0xeeae('0x35')]['messageStatus']='';_0x26c418[_0xeeae('0x14')](_0x510161['id']);_0x51d33f(_0x3e640f);})[_0xeeae('0x30')](function(_0x3a12c1){_0x26c418[_0xeeae('0x10')][_0x510161['id']][_0xeeae('0x35')][_0xeeae('0x17')]=_0xeeae('0x23');_0x26c418[_0xeeae('0x10')][_0x510161['id']][_0xeeae('0x35')][_0xeeae('0x26')]=_0x3a12c1;_0x26c418[_0xeeae('0x14')](_0x510161['id']);_0x1dd52b(_0x3a12c1);});});}return this[_0xeeae('0x12')][_0xeeae('0x37')](_0x510161);};module[_0xeeae('0x39')]=EmailChannel;
\ No newline at end of file
index 0b487f1..99376a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80d9=['account','getAccount','bind','end','error','handleError','connect','inherits','prototype','connTimeout','authTimeout','service','authentication','user','password','host','port','tls','autotls','required','openBox','handleOpenBox','emit','handleCloseBox','readUnseen','search','UNSEEN','handleReadUnseen','length','fetch','message','once','handleFetchEnd','handleFetchMessage','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','handleFetchError','closeBox','handleEnd','stringify','textCode','hasOwnProperty','upperFirst','path','imap','lodash','randomstring','simpleParser','iconv','Iconv','events','EventEmitter','email','mailbox','INBOX'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x80d9,0x15c));var _0x980d=function(_0x105363,_0x18615f){_0x105363=_0x105363-0x0;var _0x1d122e=_0x80d9[_0x105363];return _0x1d122e;};'use strict';var fs=require('fs');var path=require(_0x980d('0x0'));var util=require('util');var Imap=require(_0x980d('0x1'));var _=require(_0x980d('0x2'));var rs=require(_0x980d('0x3'));var simpleParser=require('mailparser')[_0x980d('0x4')];var Iconv=require(_0x980d('0x5'))[_0x980d('0x6')];var EventEmitter=require(_0x980d('0x7'))[_0x980d('0x8')];var utils=require('./utils');var logger=require('../../../config/logger')(_0x980d('0x9'));function EmailImap(_0x50854e,_0x5d9eb0){this[_0x980d('0xa')]=_0x980d('0xb');this[_0x980d('0xc')]=this[_0x980d('0xd')](_0x50854e,_0x5d9eb0);this[_0x980d('0x1')]=new Imap(this[_0x980d('0xc')]);this[_0x980d('0x1')]['once']('ready',this['handleReady'][_0x980d('0xe')](this));this[_0x980d('0x1')]['once'](_0x980d('0xf'),this['handleEnd'][_0x980d('0xe')](this));this['imap']['on'](_0x980d('0x10'),this[_0x980d('0x11')][_0x980d('0xe')](this));this[_0x980d('0x1')][_0x980d('0x12')]();}util[_0x980d('0x13')](EmailImap,EventEmitter);EmailImap[_0x980d('0x14')][_0x980d('0xd')]=function(_0x5f524e,_0x182ff9){var _0x138882={'connTimeout':_0x5f524e[_0x980d('0x15')]?_0x5f524e[_0x980d('0x15')]*0x3e8:0x2710,'authTimeout':_0x5f524e[_0x980d('0x16')]?_0x5f524e[_0x980d('0x16')]*0x3e8:0x1388};if(_['isNil'](_0x5f524e[_0x980d('0x17')])){if(_0x5f524e[_0x980d('0x18')]){_0x138882['user']=_0x5f524e[_0x980d('0x19')];_0x138882['password']=_0x5f524e[_0x980d('0x1a')];}_0x138882[_0x980d('0x1b')]=_0x5f524e[_0x980d('0x1b')];_0x138882[_0x980d('0x1c')]=_0x5f524e[_0x980d('0x1c')]||0x3e1;if(_0x5f524e[_0x980d('0x1d')]){_0x138882[_0x980d('0x1d')]=!![];}else{_0x138882[_0x980d('0x1d')]=![];_0x138882[_0x980d('0x1e')]=_0x980d('0x1f');}}else{_0x138882[_0x980d('0x19')]=_0x5f524e['user'];_0x138882['password']=_0x5f524e[_0x980d('0x1a')];_0x138882['host']=utils['getHost'](_0x5f524e[_0x980d('0x17')]);_0x138882[_0x980d('0x1c')]=0x3e1;_0x138882[_0x980d('0x1d')]=!![];}_0x138882[_0x980d('0x9')]=_0x182ff9||_0x5f524e['user']||'anonymous@xcally.com';return _0x138882;};EmailImap[_0x980d('0x14')]['handleReady']=function(){this[_0x980d('0x1')][_0x980d('0x20')](this['mailbox'],![],this[_0x980d('0x21')]['bind'](this));};EmailImap['prototype']['handleOpenBox']=function(_0x43a28f,_0x43f278){if(_0x43a28f){this[_0x980d('0x11')](_0x43a28f,!![]);}else{this[_0x980d('0x22')]('box',_0x43f278);this['readUnseen']();}};EmailImap[_0x980d('0x14')][_0x980d('0x23')]=function(_0x97ca70){if(_0x97ca70){this[_0x980d('0x11')](_0x97ca70,!![]);}else{this[_0x980d('0x1')]['end']();}};EmailImap['prototype'][_0x980d('0x24')]=function(){this[_0x980d('0x1')][_0x980d('0x25')]([_0x980d('0x26')],this[_0x980d('0x27')][_0x980d('0xe')](this));};EmailImap['prototype'][_0x980d('0x27')]=function(_0x471f52,_0xaa9cd6){if(_0x471f52){this[_0x980d('0x11')](_0x471f52,!![]);}else{if(_0xaa9cd6[_0x980d('0x28')]){try{var _0x38470b=this[_0x980d('0x1')][_0x980d('0x29')](_0xaa9cd6,{'bodies':'','markSeen':!![]});_0x38470b['on'](_0x980d('0x2a'),this['handleFetchMessage'][_0x980d('0xe')](this));_0x38470b[_0x980d('0x2b')](_0x980d('0x10'),this['handleFetchError']['bind'](this));_0x38470b[_0x980d('0x2b')]('end',this[_0x980d('0x2c')]['bind'](this));}catch(_0x540922){logger['error'](_0x540922);}}else{this['imap']['closeBox'](!![],this['handleCloseBox']['bind'](this));}}};EmailImap[_0x980d('0x14')][_0x980d('0x2d')]=function(_0x12530d,_0x58dcc4){_0x12530d['on'](_0x980d('0x2e'),this[_0x980d('0x2f')][_0x980d('0xe')](this));_0x12530d[_0x980d('0x2b')](_0x980d('0x30'),this[_0x980d('0x31')][_0x980d('0xe')](this));_0x12530d['once'](_0x980d('0xf'),this[_0x980d('0x32')]['bind'](this));};EmailImap[_0x980d('0x14')]['handleMessageBody']=function(_0x293f7d,_0x10862f){simpleParser(_0x293f7d,{'Iconv':Iconv},this[_0x980d('0x33')]['bind'](this));};EmailImap['prototype']['handleMessageAttributes']=function(_0x1fff24){};EmailImap['prototype']['handleMessageEnd']=function(){};EmailImap[_0x980d('0x14')][_0x980d('0x33')]=function(_0x18a12a,_0x4f4d90){if(_0x18a12a){logger[_0x980d('0x10')](_0x18a12a);}else{var _0x28d8d2=this;utils[_0x980d('0x34')](this[_0x980d('0xc')],_0x4f4d90,function(_0x40d3f6){_0x28d8d2['emit']('email',_0x40d3f6);});}};EmailImap[_0x980d('0x14')]['handleFetchEnd']=function(){this['imap']['closeBox'](!![],this['handleCloseBox'][_0x980d('0xe')](this));};EmailImap[_0x980d('0x14')][_0x980d('0x35')]=function(_0x47a4ac){this[_0x980d('0x11')](_0x47a4ac);this[_0x980d('0x1')][_0x980d('0x36')](!![],this[_0x980d('0x23')][_0x980d('0xe')](this));};EmailImap[_0x980d('0x14')][_0x980d('0x37')]=function(){this['emit'](_0x980d('0xf'));};EmailImap[_0x980d('0x14')][_0x980d('0x11')]=function(_0x5f1f04,_0x2a40fd){logger[_0x980d('0x10')](_0x980d('0x11'),this[_0x980d('0xc')][_0x980d('0x9')],JSON[_0x980d('0x38')](_0x5f1f04));var _0x1ad432='';if(_0x5f1f04){if(_0x5f1f04['textCode']){_0x1ad432=_0x5f1f04[_0x980d('0x39')];}else{for(var _0x512503 in _0x5f1f04){if(_0x5f1f04[_0x980d('0x3a')](_0x512503)){_0x1ad432+=_[_0x980d('0x3b')](_0x512503)+':\x20'+_0x5f1f04[_0x512503]+'\x0a';}}}}if(_0x2a40fd){this[_0x980d('0x1')][_0x980d('0xf')]();}else{this[_0x980d('0x22')](_0x980d('0x10'),_0x1ad432);this[_0x980d('0x22')](_0x980d('0xf'));}};module['exports']=EmailImap;
\ No newline at end of file
+var _0xfb1d=['randomstring','mailparser','simpleParser','Iconv','EventEmitter','./utils','../../../config/logger','email','mailbox','account','getAccount','ready','handleReady','imap','once','end','handleEnd','bind','error','handleError','connect','connTimeout','authTimeout','isNil','service','authentication','user','password','host','port','tls','autotls','required','getHost','anonymous@xcally.com','prototype','openBox','handleOpenBox','emit','box','readUnseen','search','UNSEEN','length','fetch','message','handleFetchMessage','closeBox','handleCloseBox','body','handleMessageBody','attributes','handleMessageEnd','handleSimpleParser','handleMessageAttributes','handleFetchEnd','handleFetchError','textCode','hasOwnProperty','upperFirst','exports','lodash'];(function(_0x16ebc7,_0x272f95){var _0xed0e49=function(_0x537753){while(--_0x537753){_0x16ebc7['push'](_0x16ebc7['shift']());}};_0xed0e49(++_0x272f95);}(_0xfb1d,0x135));var _0xdfb1=function(_0x1b16d5,_0x4c40fb){_0x1b16d5=_0x1b16d5-0x0;var _0x176290=_0xfb1d[_0x1b16d5];return _0x176290;};'use strict';var fs=require('fs');var path=require('path');var util=require('util');var Imap=require('imap');var _=require(_0xdfb1('0x0'));var rs=require(_0xdfb1('0x1'));var simpleParser=require(_0xdfb1('0x2'))[_0xdfb1('0x3')];var Iconv=require('iconv')[_0xdfb1('0x4')];var EventEmitter=require('events')[_0xdfb1('0x5')];var utils=require(_0xdfb1('0x6'));var logger=require(_0xdfb1('0x7'))(_0xdfb1('0x8'));function EmailImap(_0x43bf10,_0x56a44a){this[_0xdfb1('0x9')]='INBOX';this[_0xdfb1('0xa')]=this[_0xdfb1('0xb')](_0x43bf10,_0x56a44a);this['imap']=new Imap(this[_0xdfb1('0xa')]);this['imap']['once'](_0xdfb1('0xc'),this[_0xdfb1('0xd')]['bind'](this));this[_0xdfb1('0xe')][_0xdfb1('0xf')](_0xdfb1('0x10'),this[_0xdfb1('0x11')][_0xdfb1('0x12')](this));this[_0xdfb1('0xe')]['on'](_0xdfb1('0x13'),this[_0xdfb1('0x14')][_0xdfb1('0x12')](this));this[_0xdfb1('0xe')][_0xdfb1('0x15')]();}util['inherits'](EmailImap,EventEmitter);EmailImap['prototype']['getAccount']=function(_0x22a6be,_0x4df441){var _0x5145e7={'connTimeout':_0x22a6be['connTimeout']?_0x22a6be[_0xdfb1('0x16')]*0x3e8:0x2710,'authTimeout':_0x22a6be['authTimeout']?_0x22a6be[_0xdfb1('0x17')]*0x3e8:0x1388};if(_[_0xdfb1('0x18')](_0x22a6be[_0xdfb1('0x19')])){if(_0x22a6be[_0xdfb1('0x1a')]){_0x5145e7[_0xdfb1('0x1b')]=_0x22a6be[_0xdfb1('0x1b')];_0x5145e7['password']=_0x22a6be[_0xdfb1('0x1c')];}_0x5145e7[_0xdfb1('0x1d')]=_0x22a6be['host'];_0x5145e7[_0xdfb1('0x1e')]=_0x22a6be[_0xdfb1('0x1e')]||0x3e1;if(_0x22a6be[_0xdfb1('0x1f')]){_0x5145e7[_0xdfb1('0x1f')]=!![];}else{_0x5145e7['tls']=![];_0x5145e7[_0xdfb1('0x20')]=_0xdfb1('0x21');}}else{_0x5145e7[_0xdfb1('0x1b')]=_0x22a6be['user'];_0x5145e7[_0xdfb1('0x1c')]=_0x22a6be['password'];_0x5145e7[_0xdfb1('0x1d')]=utils[_0xdfb1('0x22')](_0x22a6be[_0xdfb1('0x19')]);_0x5145e7['port']=0x3e1;_0x5145e7['tls']=!![];}_0x5145e7[_0xdfb1('0x8')]=_0x4df441||_0x22a6be[_0xdfb1('0x1b')]||_0xdfb1('0x23');return _0x5145e7;};EmailImap[_0xdfb1('0x24')][_0xdfb1('0xd')]=function(){this['imap'][_0xdfb1('0x25')](this['mailbox'],![],this[_0xdfb1('0x26')]['bind'](this));};EmailImap[_0xdfb1('0x24')][_0xdfb1('0x26')]=function(_0x4935b4,_0x5e497b){if(_0x4935b4){this[_0xdfb1('0x14')](_0x4935b4,!![]);}else{this[_0xdfb1('0x27')](_0xdfb1('0x28'),_0x5e497b);this['readUnseen']();}};EmailImap[_0xdfb1('0x24')]['handleCloseBox']=function(_0x5e8719){if(_0x5e8719){this[_0xdfb1('0x14')](_0x5e8719,!![]);}else{this['imap'][_0xdfb1('0x10')]();}};EmailImap[_0xdfb1('0x24')][_0xdfb1('0x29')]=function(){this[_0xdfb1('0xe')][_0xdfb1('0x2a')]([_0xdfb1('0x2b')],this['handleReadUnseen'][_0xdfb1('0x12')](this));};EmailImap[_0xdfb1('0x24')]['handleReadUnseen']=function(_0x26afc7,_0x1d266f){if(_0x26afc7){this[_0xdfb1('0x14')](_0x26afc7,!![]);}else{if(_0x1d266f[_0xdfb1('0x2c')]){try{var _0x4b6b31=this[_0xdfb1('0xe')][_0xdfb1('0x2d')](_0x1d266f,{'bodies':'','markSeen':!![]});_0x4b6b31['on'](_0xdfb1('0x2e'),this[_0xdfb1('0x2f')][_0xdfb1('0x12')](this));_0x4b6b31[_0xdfb1('0xf')](_0xdfb1('0x13'),this['handleFetchError'][_0xdfb1('0x12')](this));_0x4b6b31[_0xdfb1('0xf')](_0xdfb1('0x10'),this['handleFetchEnd'][_0xdfb1('0x12')](this));}catch(_0xd9484a){logger['error'](_0xd9484a);}}else{this[_0xdfb1('0xe')][_0xdfb1('0x30')](!![],this[_0xdfb1('0x31')][_0xdfb1('0x12')](this));}}};EmailImap[_0xdfb1('0x24')][_0xdfb1('0x2f')]=function(_0x375116,_0x4b4f0c){_0x375116['on'](_0xdfb1('0x32'),this[_0xdfb1('0x33')][_0xdfb1('0x12')](this));_0x375116[_0xdfb1('0xf')](_0xdfb1('0x34'),this['handleMessageAttributes'][_0xdfb1('0x12')](this));_0x375116[_0xdfb1('0xf')](_0xdfb1('0x10'),this[_0xdfb1('0x35')][_0xdfb1('0x12')](this));};EmailImap['prototype']['handleMessageBody']=function(_0x474cbf,_0x4660d9){simpleParser(_0x474cbf,{'Iconv':Iconv},this[_0xdfb1('0x36')][_0xdfb1('0x12')](this));};EmailImap[_0xdfb1('0x24')][_0xdfb1('0x37')]=function(_0x1eef15){};EmailImap[_0xdfb1('0x24')][_0xdfb1('0x35')]=function(){};EmailImap[_0xdfb1('0x24')][_0xdfb1('0x36')]=function(_0x38a170,_0x392a08){if(_0x38a170){logger['error'](_0x38a170);}else{var _0x3e5557=this;utils['parser'](this['account'],_0x392a08,function(_0x554c89){_0x3e5557['emit'](_0xdfb1('0x8'),_0x554c89);});}};EmailImap['prototype'][_0xdfb1('0x38')]=function(){this[_0xdfb1('0xe')][_0xdfb1('0x30')](!![],this[_0xdfb1('0x31')]['bind'](this));};EmailImap['prototype'][_0xdfb1('0x39')]=function(_0x5ca5d8){this[_0xdfb1('0x14')](_0x5ca5d8);this[_0xdfb1('0xe')][_0xdfb1('0x30')](!![],this[_0xdfb1('0x31')][_0xdfb1('0x12')](this));};EmailImap['prototype'][_0xdfb1('0x11')]=function(){this['emit'](_0xdfb1('0x10'));};EmailImap['prototype'][_0xdfb1('0x14')]=function(_0x234305,_0x11d208){logger['error'](_0xdfb1('0x14'),this[_0xdfb1('0xa')][_0xdfb1('0x8')],JSON['stringify'](_0x234305));var _0x55bcdb='';if(_0x234305){if(_0x234305[_0xdfb1('0x3a')]){_0x55bcdb=_0x234305[_0xdfb1('0x3a')];}else{for(var _0x52b2f6 in _0x234305){if(_0x234305[_0xdfb1('0x3b')](_0x52b2f6)){_0x55bcdb+=_[_0xdfb1('0x3c')](_0x52b2f6)+':\x20'+_0x234305[_0x52b2f6]+'\x0a';}}}}if(_0x11d208){this[_0xdfb1('0xe')][_0xdfb1('0x10')]();}else{this[_0xdfb1('0x27')](_0xdfb1('0x13'),_0x55bcdb);this['emit']('end');}};module[_0xdfb1('0x3d')]=EmailImap;
\ No newline at end of file
index 8d2b6b2..d559eaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd6b=['use','compile','sendMail','toString','verify','createTransport','Not\x20verifired','exports','nodemailer','bluebird','prototype','send'];(function(_0x2e8669,_0x4854f7){var _0x12678e=function(_0x410000){while(--_0x410000){_0x2e8669['push'](_0x2e8669['shift']());}};_0x12678e(++_0x4854f7);}(_0xbd6b,0x17c));var _0xbbd6=function(_0x41c0d0,_0x6cdf4c){_0x41c0d0=_0x41c0d0-0x0;var _0x979747=_0xbd6b[_0x41c0d0];return _0x979747;};'use strict';var nodemailer=require(_0xbbd6('0x0'));var BPromise=require(_0xbbd6('0x1'));var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0xbbd6('0x2')][_0xbbd6('0x3')]=function(_0x19a2e7,_0x479423){return new BPromise(function(_0x2723b2,_0x8a7937){var _0x2dd261=nodemailer['createTransport'](_0x19a2e7);_0x2dd261[_0xbbd6('0x4')](_0xbbd6('0x5'),inlineBase64());_0x2dd261[_0xbbd6('0x6')](_0x479423,function(_0x30fc6a,_0x3d3747){if(_0x30fc6a){_0x8a7937(_0x30fc6a[_0xbbd6('0x7')]());}else{_0x2723b2(_0x3d3747);}});});};EmailSmtp[_0xbbd6('0x2')][_0xbbd6('0x8')]=function(_0x465d6b){return new BPromise(function(_0x149e8d,_0x4c1729){var _0x3f2168=nodemailer[_0xbbd6('0x9')](_0x465d6b);_0x3f2168[_0xbbd6('0x8')](function(_0x35c054,_0x7f1aea){if(_0x35c054){_0x4c1729(_0x35c054[_0xbbd6('0x7')]());}else{if(_0x7f1aea){_0x149e8d(_0x7f1aea);}else{_0x4c1729(_0xbbd6('0xa'));}}});});};module[_0xbbd6('0xb')]=EmailSmtp;
\ No newline at end of file
+var _0xee17=['createTransport','compile','sendMail','toString','verify','Not\x20verifired','exports','nodemailer','bluebird','nodemailer-plugin-inline-base64','prototype','send'];(function(_0x3635ce,_0x33a6f9){var _0x97ecd0=function(_0x123d98){while(--_0x123d98){_0x3635ce['push'](_0x3635ce['shift']());}};_0x97ecd0(++_0x33a6f9);}(_0xee17,0x13f));var _0x7ee1=function(_0x58800a,_0x4fb794){_0x58800a=_0x58800a-0x0;var _0x5926fb=_0xee17[_0x58800a];return _0x5926fb;};'use strict';var nodemailer=require(_0x7ee1('0x0'));var BPromise=require(_0x7ee1('0x1'));var inlineBase64=require(_0x7ee1('0x2'));function EmailSmtp(){}EmailSmtp[_0x7ee1('0x3')][_0x7ee1('0x4')]=function(_0x517161,_0x48a42e){return new BPromise(function(_0x19e68a,_0x342a66){var _0x29517c=nodemailer[_0x7ee1('0x5')](_0x517161);_0x29517c['use'](_0x7ee1('0x6'),inlineBase64());_0x29517c[_0x7ee1('0x7')](_0x48a42e,function(_0x47133e,_0x590fda){if(_0x47133e){_0x342a66(_0x47133e[_0x7ee1('0x8')]());}else{_0x19e68a(_0x590fda);}});});};EmailSmtp[_0x7ee1('0x3')][_0x7ee1('0x9')]=function(_0xa8868f){return new BPromise(function(_0x329290,_0x36dab1){var _0x256c9c=nodemailer['createTransport'](_0xa8868f);_0x256c9c[_0x7ee1('0x9')](function(_0x2f1a1c,_0xa51f8c){if(_0x2f1a1c){_0x36dab1(_0x2f1a1c[_0x7ee1('0x8')]());}else{if(_0xa51f8c){_0x329290(_0xa51f8c);}else{_0x36dab1(_0x7ee1('0xa'));}}});});};module[_0x7ee1('0xb')]=EmailSmtp;
\ No newline at end of file
index 5b65438..d5b6e26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['Attachments','Data','getHost','gmail','imap.gmail.com','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook.office365.com','127.0.0.1','moment','randomstring','path','util','node-tnef','../../../config/logger','../../../config/environment','head','value','address','anonymous','generate','name','split','length','slice','join','Anonymous','pop','isEmpty','@xcally.com','html','test','replace','includes','forEach','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','body','<a\x20target=\x22_blank\x22\x20','message','originTo','email','originCc','bcc','attachments','type','attachment','%s-%s','now','server/files/attachments/','writeFileSync','content','push','contentType','parser','from','subject','messageId','inReplyTo','format','YYYY-MM-DD\x20HH:mm:ss','textAsHtml','filter','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>'];(function(_0x28f1bb,_0x30b5a4){var _0x1a30d5=function(_0x2aac35){while(--_0x2aac35){_0x28f1bb['push'](_0x28f1bb['shift']());}};_0x1a30d5(++_0x30b5a4);}(_0xbaf0,0x12a));var _0x0baf=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xbaf0[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var moment=require(_0x0baf('0x0'));var random=require(_0x0baf('0x1'));var fs=require('fs');var path=require(_0x0baf('0x2'));var util=require(_0x0baf('0x3'));var tnef=require(_0x0baf('0x4'));var logger=require(_0x0baf('0x5'))('email');var config=require(_0x0baf('0x6'));function getAddress(_0x1c383e){var _0x2d3fa5=_[_0x0baf('0x7')](_0x1c383e[_0x0baf('0x8')]);return _0x2d3fa5&&_0x2d3fa5[_0x0baf('0x9')]?_0x2d3fa5[_0x0baf('0x9')]:_0x0baf('0xa')+random[_0x0baf('0xb')](0x6)+'@xcally.com';}function getFirstName(_0x11b947){var _0x5f20aa=_[_0x0baf('0x7')](_0x11b947[_0x0baf('0x8')]);if(_0x5f20aa&&_0x5f20aa[_0x0baf('0xc')]){var _0x2f46e8=_0x5f20aa[_0x0baf('0xc')][_0x0baf('0xd')](/\s+/);return _0x2f46e8[_0x0baf('0xe')]?_0x2f46e8[_0x0baf('0xf')](0x0,-0x1)[_0x0baf('0x10')]('\x20'):_0x5f20aa[_0x0baf('0xc')];}return _0x0baf('0x11');}function getLastName(_0x51d93c){var _0x5a53e2=_[_0x0baf('0x7')](_0x51d93c[_0x0baf('0x8')]);if(_0x5a53e2&&_0x5a53e2[_0x0baf('0xc')]){var _0x13df17=_0x5a53e2['name'][_0x0baf('0xd')](/\s+/);return _0x13df17['length']>0x1?_0x13df17[_0x0baf('0x12')]():'';}return'';}function getMails(_0x1f50c3,_0x7fbf67){var _0x2bc381='';for(var _0xb8339e=0x0;_0xb8339e<_0x7fbf67[_0x0baf('0x8')]['length'];_0xb8339e+=0x1){if(_0x7fbf67['value'][_0xb8339e][_0x0baf('0x9')]!==_0x1f50c3){if(!_[_0x0baf('0x13')](_0x2bc381)){_0x2bc381+=',';}_0x2bc381+=_0x7fbf67[_0x0baf('0x8')][_0xb8339e][_0x0baf('0xc')]||_0x7fbf67[_0x0baf('0x8')][_0xb8339e][_0x0baf('0x9')]||'';_0x2bc381+='\x20<';_0x2bc381+=_0x7fbf67['value'][_0xb8339e][_0x0baf('0x9')]?_0x7fbf67[_0x0baf('0x8')][_0xb8339e][_0x0baf('0x9')]:_0x0baf('0xa')+random[_0x0baf('0xb')](0x6)+_0x0baf('0x14');_0x2bc381+='>';}}return _0x2bc381;}function parseEmail(_0x4ff793,_0x5cff5d,_0x1410ec){if(_0x5cff5d[_0x0baf('0x15')]){var _0x32e839=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x32e839[_0x0baf('0x16')](_0x5cff5d[_0x0baf('0x15')])){_0x5cff5d[_0x0baf('0x15')]=_0x5cff5d[_0x0baf('0x15')][_0x0baf('0x17')](_0x32e839,'');}if(_0x5cff5d[_0x0baf('0x15')][_0x0baf('0x18')]('<img')){var _0x334bd6=[];_0x5cff5d['attachments'][_0x0baf('0x19')](_0x5dbf00=>{_0x334bd6['push'](_0x5dbf00[_0x0baf('0x1a')]);});var _0x48a0e9=/<img.*? _SRC(.*?)[^\>]+>/g;var _0x4be1b9=/src=\"data:image\/([a-zA-Z]*);base64,([^\"]*)\"/g;var _0x47c4b=_0x5cff5d[_0x0baf('0x15')][_0x0baf('0x17')](_0x4be1b9,_0x0baf('0x1b'));var _0x3a1ba1=_0x47c4b['replace'](_0x48a0e9,_0x0baf('0x1c'));for(let _0x4681c5=0x0;_0x4681c5<_0x334bd6[_0x0baf('0xe')];_0x4681c5++){var _0x366e71=_0x3a1ba1[_0x0baf('0x17')](_0x0baf('0x1c'),_0x0baf('0x1d')+_0x334bd6[_0x4681c5]+'\x20]</span>');_0x3a1ba1=_0x366e71;}_0x5cff5d[_0x0baf('0x15')]=_0x3a1ba1;}_0x1410ec[_0x0baf('0x1e')]=_0x5cff5d[_0x0baf('0x15')];}else{_0x1410ec[_0x0baf('0x1e')]=_0x5cff5d['textAsHtml'];}if(_0x1410ec[_0x0baf('0x1e')]){_0x1410ec[_0x0baf('0x1e')]=_0x1410ec['body'][_0x0baf('0x17')](/<a\s+/gi,_0x0baf('0x1f'));}if(_0x5cff5d['to']){_0x1410ec[_0x0baf('0x20')][_0x0baf('0x21')]=getMails(null,_0x5cff5d['to']);var _0xd14f0f=getMails(_0x4ff793[_0x0baf('0x22')],_0x5cff5d['to']);if(!_[_0x0baf('0x13')](_0xd14f0f)){_0x1410ec['message']['cc']+=_0xd14f0f;}}if(_0x5cff5d['cc']){_0x1410ec[_0x0baf('0x20')][_0x0baf('0x23')]=getMails(null,_0x5cff5d['cc']);var _0x37be4e=getMails(_0x4ff793[_0x0baf('0x22')],_0x5cff5d['cc']);if(!_[_0x0baf('0x13')](_0x37be4e)){if(!_[_0x0baf('0x13')](_0x1410ec[_0x0baf('0x20')]['cc'])){_0x1410ec[_0x0baf('0x20')]['cc']+=',';}_0x1410ec[_0x0baf('0x20')]['cc']+=_0x37be4e;}}if(!_[_0x0baf('0x18')](_0x1410ec[_0x0baf('0x20')][_0x0baf('0x21')],_0x4ff793[_0x0baf('0x22')])&&!_[_0x0baf('0x18')](_0x1410ec['message'][_0x0baf('0x23')],_0x4ff793['email'])){_0x1410ec[_0x0baf('0x20')][_0x0baf('0x24')]=_0x4ff793[_0x0baf('0x22')];}if(_0x5cff5d[_0x0baf('0x25')]&&_0x5cff5d['attachments'][_0x0baf('0xe')]){_0x1410ec[_0x0baf('0x20')]['attach']=_0x5cff5d[_0x0baf('0x25')][_0x0baf('0xe')];for(var _0x62a2ed=0x0,_0xbaa9a7,_0x1f60bd,_0x1b0991;_0x62a2ed<_0x5cff5d[_0x0baf('0x25')][_0x0baf('0xe')];_0x62a2ed+=0x1){if(_0x5cff5d['attachments'][_0x62a2ed][_0x0baf('0x26')]===_0x0baf('0x27')){_0x1b0991=_0x5cff5d['attachments'][_0x62a2ed][_0x0baf('0x1a')]||'attachment-'+_0x62a2ed;_0xbaa9a7=util['format'](_0x0baf('0x28'),Date[_0x0baf('0x29')](),_0x1b0991);_0x1f60bd=path['join'](config['root'],_0x0baf('0x2a'),_0xbaa9a7);fs[_0x0baf('0x2b')](_0x1f60bd,_0x5cff5d[_0x0baf('0x25')][_0x62a2ed][_0x0baf('0x2c')]);_0x1410ec[_0x0baf('0x20')][_0x0baf('0x25')][_0x0baf('0x2d')]({'name':_0x1b0991,'basename':_0xbaa9a7,'type':_0x5cff5d[_0x0baf('0x25')][_0x62a2ed][_0x0baf('0x2e')],'filepath':_0x1f60bd});}}}return _0x1410ec;}exports[_0x0baf('0x2f')]=function(_0x200864,_0x148540,_0x354cb1){var _0x229ea6={'from':getAddress(_0x148540['from']),'firstName':getFirstName(_0x148540[_0x0baf('0x30')]),'lastName':getLastName(_0x148540[_0x0baf('0x30')]),'mapKey':'email','message':{'from':getMails(_0x200864[_0x0baf('0x22')],_0x148540[_0x0baf('0x30')]),'to':_0x200864[_0x0baf('0x22')],'cc':'','subject':_0x148540[_0x0baf('0x31')]||'','messageId':_0x148540[_0x0baf('0x32')],'inReplyTo':_0x148540[_0x0baf('0x33')],'sentAt':moment(_0x148540['date'])[_0x0baf('0x34')](_0x0baf('0x35')),'attach':![],'attachments':[]}};if(!_0x148540['html']&&!_0x148540[_0x0baf('0x36')]){var _0x412e6f=_[_0x0baf('0x37')](_0x148540[_0x0baf('0x25')],{'contentType':'application/ms-tnef'});if(_0x412e6f[_0x0baf('0xe')]){logger[_0x0baf('0x38')](util[_0x0baf('0x34')](_0x0baf('0x39'),_0x148540[_0x0baf('0x32')]));tnef[_0x0baf('0x3a')](_[_0x0baf('0x3b')](_0x412e6f)[_0x0baf('0x2c')],function(_0xce1bf0,_0x355033){if(_0x355033){_0x148540['html']=_0x355033[_0x0baf('0x3c')]||_0x0baf('0x3d');if(_0x355033[_0x0baf('0x3e')]){for(var _0x339aff=0x0;_0x339aff<_0x355033[_0x0baf('0x3e')]['length'];_0x339aff++){var _0x1e7364=_0x355033[_0x0baf('0x3e')][_0x339aff];_0x229ea6[_0x0baf('0x20')][_0x0baf('0x25')][_0x0baf('0x2d')]({'filename':_0x1e7364['Title'],'content':new Buffer(_0x1e7364[_0x0baf('0x3f')])});}}}_0x354cb1(parseEmail(_0x200864,_0x148540,_0x229ea6));});}else{_0x148540[_0x0baf('0x15')]=_0x0baf('0x3d');_0x354cb1(parseEmail(_0x200864,_0x148540,_0x229ea6));}}else{_0x354cb1(parseEmail(_0x200864,_0x148540,_0x229ea6));}};exports[_0x0baf('0x40')]=function(_0x41599f){switch(_0x41599f){case _0x0baf('0x41'):return _0x0baf('0x42');case'yahoo':return _0x0baf('0x43');case _0x0baf('0x44'):return _0x0baf('0x45');case'outlook365':return _0x0baf('0x46');}return _0x0baf('0x47');};
\ No newline at end of file
+var _0xca6e=['textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','originCc','bcc','attach','type','filename','attachment-','format','now','server/files/attachments/','writeFileSync','content','push','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','indexOf','line','isAutoreply','from','subject','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','messageId','parseBuffer','first','Attachments','Title','Data','<p>Empty\x20message</p>','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','127.0.0.1','lodash','moment','randomstring','path','util','../../../config/logger','email','head','value','address','anonymous','@xcally.com','name','substring','split','length','slice','join','pop','isEmpty','generate','html','test','replace','includes','<img','attachments','forEach','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','body'];(function(_0x8e9572,_0x203eb2){var _0x54d274=function(_0x1ff419){while(--_0x1ff419){_0x8e9572['push'](_0x8e9572['shift']());}};_0x54d274(++_0x203eb2);}(_0xca6e,0x1c1));var _0xeca6=function(_0x1a2841,_0x5a96dc){_0x1a2841=_0x1a2841-0x0;var _0x18cb1d=_0xca6e[_0x1a2841];return _0x18cb1d;};'use strict';var _=require(_0xeca6('0x0'));var moment=require(_0xeca6('0x1'));var random=require(_0xeca6('0x2'));var fs=require('fs');var path=require(_0xeca6('0x3'));var util=require(_0xeca6('0x4'));var tnef=require('node-tnef');var logger=require(_0xeca6('0x5'))(_0xeca6('0x6'));var config=require('../../../config/environment');function getAddress(_0x329118){var _0x5bbefc=_[_0xeca6('0x7')](_0x329118[_0xeca6('0x8')]);return _0x5bbefc&&_0x5bbefc[_0xeca6('0x9')]?_0x5bbefc['address']:_0xeca6('0xa')+random['generate'](0x6)+_0xeca6('0xb');}function getFirstName(_0x7f860a){var _0x403d47=_[_0xeca6('0x7')](_0x7f860a[_0xeca6('0x8')]);if(_0x403d47&&_0x403d47['name']){if(_0x403d47[_0xeca6('0xc')]==_0x403d47[_0xeca6('0x9')]){return _0x403d47[_0xeca6('0xc')][_0xeca6('0xd')](0x0,_0x403d47[_0xeca6('0xc')]['indexOf']('@'));}var _0x1f8b3d=_0x403d47[_0xeca6('0xc')][_0xeca6('0xe')](/\s+/);return _0x1f8b3d[_0xeca6('0xf')]>0x1?_0x1f8b3d[_0xeca6('0x10')](0x0,-0x1)[_0xeca6('0x11')]('\x20'):_0x403d47['name'];}return'Anonymous';}function getLastName(_0x2203c4){var _0x3a218b=_[_0xeca6('0x7')](_0x2203c4[_0xeca6('0x8')]);if(_0x3a218b&&_0x3a218b['name']){var _0x431a3f=_0x3a218b['name'][_0xeca6('0xe')](/\s+/);return _0x431a3f[_0xeca6('0xf')]>0x1?_0x431a3f[_0xeca6('0x12')]():'';}return'';}function getMails(_0x4751f5,_0x17fd17){var _0x52f0ea='';for(var _0x204a34=0x0;_0x204a34<_0x17fd17['value'][_0xeca6('0xf')];_0x204a34+=0x1){if(_0x17fd17['value'][_0x204a34][_0xeca6('0x9')]!==_0x4751f5){if(!_[_0xeca6('0x13')](_0x52f0ea)){_0x52f0ea+=',';}_0x52f0ea+=_0x17fd17[_0xeca6('0x8')][_0x204a34]['name']||_0x17fd17['value'][_0x204a34][_0xeca6('0x9')]||'';_0x52f0ea+='\x20<';_0x52f0ea+=_0x17fd17[_0xeca6('0x8')][_0x204a34][_0xeca6('0x9')]?_0x17fd17['value'][_0x204a34][_0xeca6('0x9')]:_0xeca6('0xa')+random[_0xeca6('0x14')](0x6)+_0xeca6('0xb');_0x52f0ea+='>';}}return _0x52f0ea;}function parseEmail(_0x2f28c3,_0x13abcf,_0x3cb68b){if(_0x13abcf[_0xeca6('0x15')]){var _0x38d0be=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x38d0be[_0xeca6('0x16')](_0x13abcf[_0xeca6('0x15')])){_0x13abcf[_0xeca6('0x15')]=_0x13abcf[_0xeca6('0x15')][_0xeca6('0x17')](_0x38d0be,'');}if(_0x13abcf[_0xeca6('0x15')][_0xeca6('0x18')](_0xeca6('0x19'))){var _0x234179=[];_0x13abcf[_0xeca6('0x1a')][_0xeca6('0x1b')](_0x425c2f=>{_0x234179['push'](_0x425c2f['filename']);});var _0x5d8011=/<img.*? _SRC(.*?)[^>]+>/g;var _0x5b5534=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x2cfe49=_0x13abcf[_0xeca6('0x15')][_0xeca6('0x17')](_0x5b5534,'_SRC');var _0x280db1=_0x2cfe49[_0xeca6('0x17')](_0x5d8011,_0xeca6('0x1c'));for(let _0x42a14c=0x0;_0x42a14c<_0x234179[_0xeca6('0xf')];_0x42a14c++){var _0x415132=_0x280db1['replace'](_0xeca6('0x1c'),_0xeca6('0x1d')+_0x234179[_0x42a14c]+'\x20]</span>');_0x280db1=_0x415132;}_0x13abcf[_0xeca6('0x15')]=_0x280db1;}_0x3cb68b[_0xeca6('0x1e')]=_0x13abcf[_0xeca6('0x15')];}else{_0x3cb68b[_0xeca6('0x1e')]=_0x13abcf[_0xeca6('0x1f')];}if(_0x3cb68b['body']){_0x3cb68b[_0xeca6('0x1e')]=_0x3cb68b[_0xeca6('0x1e')]['replace'](/<a\s+/gi,_0xeca6('0x20'));}if(_0x13abcf['to']){_0x3cb68b[_0xeca6('0x21')][_0xeca6('0x22')]=getMails(null,_0x13abcf['to']);var _0x54e2ee=getMails(_0x2f28c3[_0xeca6('0x6')],_0x13abcf['to']);if(!_[_0xeca6('0x13')](_0x54e2ee)){_0x3cb68b[_0xeca6('0x21')]['cc']+=_0x54e2ee;}}if(_0x13abcf['cc']){_0x3cb68b[_0xeca6('0x21')][_0xeca6('0x23')]=getMails(null,_0x13abcf['cc']);var _0x5688c=getMails(_0x2f28c3['email'],_0x13abcf['cc']);if(!_[_0xeca6('0x13')](_0x5688c)){if(!_[_0xeca6('0x13')](_0x3cb68b[_0xeca6('0x21')]['cc'])){_0x3cb68b[_0xeca6('0x21')]['cc']+=',';}_0x3cb68b[_0xeca6('0x21')]['cc']+=_0x5688c;}}if(!_[_0xeca6('0x18')](_0x3cb68b[_0xeca6('0x21')][_0xeca6('0x22')],_0x2f28c3[_0xeca6('0x6')])&&!_[_0xeca6('0x18')](_0x3cb68b[_0xeca6('0x21')][_0xeca6('0x23')],_0x2f28c3[_0xeca6('0x6')])){_0x3cb68b['message'][_0xeca6('0x24')]=_0x2f28c3[_0xeca6('0x6')];}if(_0x13abcf[_0xeca6('0x1a')]&&_0x13abcf['attachments'][_0xeca6('0xf')]){_0x3cb68b[_0xeca6('0x21')][_0xeca6('0x25')]=_0x13abcf[_0xeca6('0x1a')][_0xeca6('0xf')];for(var _0x27a29a=0x0,_0x294e34,_0x571614,_0x179fbe;_0x27a29a<_0x13abcf[_0xeca6('0x1a')][_0xeca6('0xf')];_0x27a29a+=0x1){if(_0x13abcf[_0xeca6('0x1a')][_0x27a29a][_0xeca6('0x26')]==='attachment'){_0x179fbe=_0x13abcf['attachments'][_0x27a29a][_0xeca6('0x27')]||_0xeca6('0x28')+_0x27a29a;_0x294e34=util[_0xeca6('0x29')]('%s-%s',Date[_0xeca6('0x2a')](),_0x179fbe);_0x571614=path['join'](config['root'],_0xeca6('0x2b'),_0x294e34);fs[_0xeca6('0x2c')](_0x571614,_0x13abcf[_0xeca6('0x1a')][_0x27a29a][_0xeca6('0x2d')]);_0x3cb68b[_0xeca6('0x21')][_0xeca6('0x1a')][_0xeca6('0x2e')]({'name':_0x179fbe,'basename':_0x294e34,'type':_0x13abcf[_0xeca6('0x1a')][_0x27a29a][_0xeca6('0x2f')],'filepath':_0x571614});}}}if(_0x13abcf[_0xeca6('0x30')]&&_0x13abcf[_0xeca6('0x30')][_0xeca6('0xf')]>0x0){var _0x4d06e3=[_0xeca6('0x31'),_0xeca6('0x32'),_0xeca6('0x33')];for(var _0x547d51=0x0;_0x547d51<_0x13abcf[_0xeca6('0x30')][_0xeca6('0xf')];_0x547d51++){var _0x49ac16=_[_0xeca6('0x34')](_0x4d06e3,_0x13abcf[_0xeca6('0x30')][_0x547d51][_0xeca6('0x35')]);if(_0x49ac16>=0x0){_0x3cb68b[_0xeca6('0x36')]=!![];}}}return _0x3cb68b;}exports['parser']=function(_0x32e3e7,_0x49950a,_0x26d561){var _0x4e031f={'from':getAddress(_0x49950a['from']),'firstName':getFirstName(_0x49950a['from']),'lastName':getLastName(_0x49950a[_0xeca6('0x37')]),'mapKey':_0xeca6('0x6'),'message':{'from':getMails(_0x32e3e7['email'],_0x49950a[_0xeca6('0x37')]),'to':_0x32e3e7[_0xeca6('0x6')],'cc':'','subject':_0x49950a[_0xeca6('0x38')]||'','messageId':_0x49950a['messageId'],'inReplyTo':_0x49950a[_0xeca6('0x39')],'sentAt':moment(_0x49950a[_0xeca6('0x3a')])[_0xeca6('0x29')](_0xeca6('0x3b')),'attach':![],'attachments':[]}};if(!_0x49950a[_0xeca6('0x15')]&&!_0x49950a[_0xeca6('0x1f')]){var _0x574d6c=_[_0xeca6('0x3c')](_0x49950a['attachments'],{'contentType':_0xeca6('0x3d')});if(_0x574d6c['length']){logger[_0xeca6('0x3e')](util[_0xeca6('0x29')](_0xeca6('0x3f'),_0x49950a[_0xeca6('0x40')]));tnef[_0xeca6('0x41')](_[_0xeca6('0x42')](_0x574d6c)[_0xeca6('0x2d')],function(_0x140ed6,_0x308763){if(_0x308763){_0x49950a[_0xeca6('0x15')]=_0x308763['BodyHTML']||'<p>Empty\x20message</p>';if(_0x308763[_0xeca6('0x43')]){for(var _0x4278c0=0x0;_0x4278c0<_0x308763[_0xeca6('0x43')][_0xeca6('0xf')];_0x4278c0++){var _0x3f3aee=_0x308763['Attachments'][_0x4278c0];_0x4e031f[_0xeca6('0x21')][_0xeca6('0x1a')][_0xeca6('0x2e')]({'filename':_0x3f3aee[_0xeca6('0x44')],'content':Buffer[_0xeca6('0x37')](_0x3f3aee[_0xeca6('0x45')])});}}}_0x26d561(parseEmail(_0x32e3e7,_0x49950a,_0x4e031f));});}else{_0x49950a[_0xeca6('0x15')]=_0xeca6('0x46');_0x26d561(parseEmail(_0x32e3e7,_0x49950a,_0x4e031f));}}else{_0x26d561(parseEmail(_0x32e3e7,_0x49950a,_0x4e031f));}};exports['getHost']=function(_0x89939c){switch(_0x89939c){case _0xeca6('0x47'):return _0xeca6('0x48');case _0xeca6('0x49'):return _0xeca6('0x4a');case _0xeca6('0x4b'):return _0xeca6('0x4c');case _0xeca6('0x4d'):return _0xeca6('0x4e');}return _0xeca6('0x4f');};
\ No newline at end of file
index f3c45ae..478a504 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcca7=['SERV','active','Imap','Smtp','exports','lodash','name','Service','key'];(function(_0x1f7c12,_0x2c69f5){var _0x492d1b=function(_0x405011){while(--_0x405011){_0x1f7c12['push'](_0x1f7c12['shift']());}};_0x492d1b(++_0x2c69f5);}(_0xcca7,0x1e2));var _0x7cca=function(_0x915de9,_0xabf9e5){_0x915de9=_0x915de9-0x0;var _0x274129=_0xcca7[_0x915de9];return _0x274129;};'use strict';var _=require(_0x7cca('0x0'));function MailAccount(_0x4d5de7){this['id']=_0x4d5de7['id']||0x0;this['name']=_0x4d5de7[_0x7cca('0x1')]||_0x7cca('0x2');this[_0x7cca('0x3')]=_0x4d5de7[_0x7cca('0x3')]||_0x7cca('0x4');this[_0x7cca('0x5')]=_0x4d5de7[_0x7cca('0x5')]||![];this[_0x7cca('0x6')]=_0x4d5de7[_0x7cca('0x6')]||[];this[_0x7cca('0x7')]=_0x4d5de7[_0x7cca('0x7')]||[];}module[_0x7cca('0x8')]=MailAccount;
\ No newline at end of file
+var _0xf7a6=['exports','lodash','name','Service','key','active','Imap','Smtp'];(function(_0x5eed04,_0x3fe96c){var _0x1fa16e=function(_0x4959c3){while(--_0x4959c3){_0x5eed04['push'](_0x5eed04['shift']());}};_0x1fa16e(++_0x3fe96c);}(_0xf7a6,0xf9));var _0x6f7a=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0xf7a6[_0x46e363];return _0x3fb059;};'use strict';var _=require(_0x6f7a('0x0'));function MailAccount(_0x3a3937){this['id']=_0x3a3937['id']||0x0;this['name']=_0x3a3937[_0x6f7a('0x1')]||_0x6f7a('0x2');this['key']=_0x3a3937[_0x6f7a('0x3')]||'SERV';this[_0x6f7a('0x4')]=_0x3a3937[_0x6f7a('0x4')]||![];this['Imap']=_0x3a3937[_0x6f7a('0x5')]||[];this[_0x6f7a('0x6')]=_0x3a3937[_0x6f7a('0x6')]||[];}module[_0x6f7a('0x7')]=MailAccount;
\ No newline at end of file
index 5bcdf6e..9f88b6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0de8=['hasOwnProperty','mergeFromDatabase','prototype','length','isUndefined','merge','exports','lodash','../model/mailAccount','mailAccounts'];(function(_0x1499d0,_0x3fdde1){var _0x176a26=function(_0x3672d6){while(--_0x3672d6){_0x1499d0['push'](_0x1499d0['shift']());}};_0x176a26(++_0x3fdde1);}(_0x0de8,0x179));var _0x80de=function(_0x928b87,_0x53480a){_0x928b87=_0x928b87-0x0;var _0x1e7638=_0x0de8[_0x928b87];return _0x1e7638;};'use strict';var _=require(_0x80de('0x0'));var MailAccount=require(_0x80de('0x1'));var Realtime=function(){this[_0x80de('0x2')]={};};function freeIsNotKey(_0x595907,_0x487f49,_0x40af4b){var _0x91e1d1=_['mapKeys'](_0x595907,function(_0x379533,_0xf6cd14){return _0x379533[_0x40af4b];});for(var _0x15c8b4 in _0x487f49){if(_0x487f49[_0x80de('0x3')](_0x15c8b4)){if(!_0x91e1d1[_0x15c8b4]){delete _0x487f49[_0x15c8b4];}}}}Realtime['prototype'][_0x80de('0x4')]=function(_0x1ae30b,_0x3e1907){for(var _0x389f77 in _0x3e1907){if(_0x1ae30b['hasOwnProperty'](_0x389f77)){_0x1ae30b[_0x389f77]=_0x3e1907[_0x389f77];}}};Realtime[_0x80de('0x5')]['initMailAccounts']=function(){var _0x52afcd=this;return function(_0x2e2930){if(_0x2e2930){freeIsNotKey(_0x2e2930,_0x52afcd['mailAccounts'],'id');for(var _0x3e33a2=0x0,_0x375d9f={},_0x5e5aca={};_0x3e33a2<_0x2e2930[_0x80de('0x6')];_0x3e33a2+=0x1){_0x375d9f=_0x2e2930[_0x3e33a2];if(_[_0x80de('0x7')](_0x52afcd[_0x80de('0x2')][_0x375d9f['id']])){_0x52afcd['mailAccounts'][_0x375d9f['id']]=new MailAccount(_0x375d9f);}else{_[_0x80de('0x8')](_0x52afcd[_0x80de('0x2')][_0x375d9f['id']],_0x375d9f);}}}return _0x52afcd['mailAccounts'];};};module[_0x80de('0x9')]=Realtime;
\ No newline at end of file
+var _0x6b76=['mapKeys','hasOwnProperty','prototype','mergeFromDatabase','length','isUndefined','merge','exports','../model/mailAccount','mailAccounts'];(function(_0x23a589,_0x1e6f1e){var _0x2d2325=function(_0x72f77e){while(--_0x72f77e){_0x23a589['push'](_0x23a589['shift']());}};_0x2d2325(++_0x1e6f1e);}(_0x6b76,0x148));var _0x66b7=function(_0x453eb0,_0x9b73e8){_0x453eb0=_0x453eb0-0x0;var _0x2cd9ca=_0x6b76[_0x453eb0];return _0x2cd9ca;};'use strict';var _=require('lodash');var MailAccount=require(_0x66b7('0x0'));var Realtime=function(){this[_0x66b7('0x1')]={};};function freeIsNotKey(_0x4d8f32,_0x315664,_0x52a160){var _0x2faf60=_[_0x66b7('0x2')](_0x4d8f32,function(_0x31b13a,_0x43eb90){return _0x31b13a[_0x52a160];});for(var _0x31e06d in _0x315664){if(_0x315664[_0x66b7('0x3')](_0x31e06d)){if(!_0x2faf60[_0x31e06d]){delete _0x315664[_0x31e06d];}}}}Realtime[_0x66b7('0x4')][_0x66b7('0x5')]=function(_0x3476f8,_0x406d59){for(var _0x39ee34 in _0x406d59){if(_0x3476f8[_0x66b7('0x3')](_0x39ee34)){_0x3476f8[_0x39ee34]=_0x406d59[_0x39ee34];}}};Realtime[_0x66b7('0x4')]['initMailAccounts']=function(){var _0x366ae3=this;return function(_0x26a5fd){if(_0x26a5fd){freeIsNotKey(_0x26a5fd,_0x366ae3[_0x66b7('0x1')],'id');for(var _0x4cf24c=0x0,_0x3ad0f4={},_0x514076={};_0x4cf24c<_0x26a5fd[_0x66b7('0x6')];_0x4cf24c+=0x1){_0x3ad0f4=_0x26a5fd[_0x4cf24c];if(_[_0x66b7('0x7')](_0x366ae3[_0x66b7('0x1')][_0x3ad0f4['id']])){_0x366ae3[_0x66b7('0x1')][_0x3ad0f4['id']]=new MailAccount(_0x3ad0f4);}else{_[_0x66b7('0x8')](_0x366ae3['mailAccounts'][_0x3ad0f4['id']],_0x3ad0f4);}}}return _0x366ae3[_0x66b7('0x1')];};};module[_0x66b7('0x9')]=Realtime;
\ No newline at end of file
index b390627..5162c66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4a9=['MailServerIn','MailServerOut','getMailAccount','notify','NotifyMailAccount','getMailAccounts','Request','GetMailAccount','name','email','key','ListId','TemplateId'];(function(_0x5d10c2,_0x4b0a49){var _0x57c7c4=function(_0x38ab70){while(--_0x38ab70){_0x5d10c2['push'](_0x5d10c2['shift']());}};_0x57c7c4(++_0x4b0a49);}(_0xa4a9,0x7a));var _0x9a4a=function(_0xc69fda,_0x367f93){_0xc69fda=_0xc69fda-0x0;var _0x721842=_0xa4a9[_0xc69fda];return _0x721842;};'use strict';var client=require('../client');exports[_0x9a4a('0x0')]=function(){return function(){return client[_0x9a4a('0x1')](_0x9a4a('0x2'),{'options':{'attributes':['id',_0x9a4a('0x3'),'service',_0x9a4a('0x4'),'active',_0x9a4a('0x5'),_0x9a4a('0x6'),_0x9a4a('0x7')],'raw':![],'include':[{'model':_0x9a4a('0x8'),'as':'Imap'},{'model':_0x9a4a('0x9'),'as':'Smtp'}]},'log':_0x9a4a('0xa')});};};exports[_0x9a4a('0xb')]=function(_0x96c0ef,_0x43b571){return client[_0x9a4a('0x1')](_0x9a4a('0xc'),{'account':{'id':_0x96c0ef},'body':_0x43b571,'log':_0x9a4a('0xc')});};
\ No newline at end of file
+var _0x2297=['getMailAccounts','Request','GetMailAccount','service','email','active','ListId','MailServerIn','MailServerOut','Smtp','getMailAccount','notify','NotifyMailAccount'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0x2297,0x186));var _0x7229=function(_0x11851d,_0x40ab2f){_0x11851d=_0x11851d-0x0;var _0xae4104=_0x2297[_0x11851d];return _0xae4104;};'use strict';var client=require('../client');exports[_0x7229('0x0')]=function(){return function(){return client[_0x7229('0x1')](_0x7229('0x2'),{'options':{'attributes':['id','name',_0x7229('0x3'),_0x7229('0x4'),_0x7229('0x5'),'key',_0x7229('0x6'),'TemplateId'],'raw':![],'include':[{'model':_0x7229('0x7'),'as':'Imap'},{'model':_0x7229('0x8'),'as':_0x7229('0x9')}]},'log':_0x7229('0xa')});};};exports[_0x7229('0xb')]=function(_0x21e9d0,_0x3100bf){return client[_0x7229('0x1')](_0x7229('0xc'),{'account':{'id':_0x21e9d0},'body':_0x3100bf,'log':_0x7229('0xc')});};
\ No newline at end of file
index 42ac5b5..c1f7258 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1752=['loginMailFrequency','GetSettings','Request','ShowSetting'];(function(_0x1d00dd,_0x239265){var _0x2f71a3=function(_0xc03c83){while(--_0xc03c83){_0x1d00dd['push'](_0x1d00dd['shift']());}};_0x2f71a3(++_0x239265);}(_0x1752,0x1da));var _0x2175=function(_0x3e4a6b,_0x878fc5){_0x3e4a6b=_0x3e4a6b-0x0;var _0x3b3ed5=_0x1752[_0x3e4a6b];return _0x3b3ed5;};'use strict';var client=require('../client');exports['getSettings']=function(){return client[_0x2175('0x0')](_0x2175('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x2175('0x2')]},'log':_0x2175('0x3')});};
\ No newline at end of file
+var _0xbf9e=['ShowSetting','loginMailFrequency','GetSettings','../client','getSettings','Request'];(function(_0x5eb294,_0x5b52ba){var _0xd139fd=function(_0x52e319){while(--_0x52e319){_0x5eb294['push'](_0x5eb294['shift']());}};_0xd139fd(++_0x5b52ba);}(_0xbf9e,0x111));var _0xebf9=function(_0x503411,_0x49eabd){_0x503411=_0x503411-0x0;var _0x2e61ac=_0xbf9e[_0x503411];return _0x2e61ac;};'use strict';var client=require(_0xebf9('0x0'));exports[_0xebf9('0x1')]=function(){return client[_0xebf9('0x2')](_0xebf9('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xebf9('0x4')]},'log':_0xebf9('0x5')});};
\ No newline at end of file
index a6110c1..1e53f33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
+var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xa9e0[_0x5e3b04];return _0x1fc44d;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
index 308fa8a..1599a66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7b3=['../../config/environment','createServer','timeout','port','socket.io','websocket','polling','redis','adapter','socket.io-redis','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','once','log','exports','lodash','http','express','sticky-session','ioredis'];(function(_0x668298,_0x1cec8d){var _0x4df90c=function(_0x46414a){while(--_0x46414a){_0x668298['push'](_0x668298['shift']());}};_0x4df90c(++_0x1cec8d);}(_0xc7b3,0x199));var _0x3c7b=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xc7b3[_0x8c43de];return _0xa6591b;};'use strict';var _=require(_0x3c7b('0x0'));var http=require(_0x3c7b('0x1'));var express=require(_0x3c7b('0x2'));var sticky=require(_0x3c7b('0x3'));var Redis=require(_0x3c7b('0x4'));var config=require(_0x3c7b('0x5'));var app=express();var server=http[_0x3c7b('0x6')](app);server[_0x3c7b('0x7')]=0xdbba0;if(sticky['listen'](server,config[_0x3c7b('0x8')])){var socketio=require(_0x3c7b('0x9'))(server,{'transports':[_0x3c7b('0xa'),_0x3c7b('0xb')]});config[_0x3c7b('0xc')]=_['defaults'](config[_0x3c7b('0xc')],{'host':'localhost','port':0x18eb});socketio[_0x3c7b('0xd')](require(_0x3c7b('0xe'))({'pubClient':new Redis(config[_0x3c7b('0xc')]),'subClient':new Redis(config[_0x3c7b('0xc')])}));require(_0x3c7b('0xf'))[_0x3c7b('0x10')]();require(_0x3c7b('0x11'))[_0x3c7b('0x10')](socketio);require(_0x3c7b('0x12'))[_0x3c7b('0x10')](app);require(_0x3c7b('0x13'))[_0x3c7b('0x10')](app);}else{server[_0x3c7b('0x14')]('listening',function(){console[_0x3c7b('0x15')]('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0x3c7b('0x8')]);});}exports=module[_0x3c7b('0x16')]=app;
\ No newline at end of file
+var _0xa890=['express','sticky-session','ioredis','../../config/environment','createServer','port','websocket','polling','redis','defaults','localhost','adapter','../../config/triggers','default','../../config/express','once','log','Express\x20server\x20listening\x20on\x20port\x20%d!','http'];(function(_0x6f0654,_0x50c1fa){var _0x194460=function(_0x34bede){while(--_0x34bede){_0x6f0654['push'](_0x6f0654['shift']());}};_0x194460(++_0x50c1fa);}(_0xa890,0xaa));var _0x0a89=function(_0x5a3cf0,_0x160a68){_0x5a3cf0=_0x5a3cf0-0x0;var _0x5a64ee=_0xa890[_0x5a3cf0];return _0x5a64ee;};'use strict';var _=require('lodash');var http=require(_0x0a89('0x0'));var express=require(_0x0a89('0x1'));var sticky=require(_0x0a89('0x2'));var Redis=require(_0x0a89('0x3'));var config=require(_0x0a89('0x4'));var app=express();var server=http[_0x0a89('0x5')](app);server['timeout']=0xdbba0;if(sticky['listen'](server,config[_0x0a89('0x6')])){var socketio=require('socket.io')(server,{'transports':[_0x0a89('0x7'),_0x0a89('0x8')]});config[_0x0a89('0x9')]=_[_0x0a89('0xa')](config[_0x0a89('0x9')],{'host':_0x0a89('0xb'),'port':0x18eb});socketio[_0x0a89('0xc')](require('socket.io-redis')({'pubClient':new Redis(config[_0x0a89('0x9')]),'subClient':new Redis(config[_0x0a89('0x9')])}));require(_0x0a89('0xd'))['default']();require('../../config/socketio')[_0x0a89('0xe')](socketio);require(_0x0a89('0xf'))[_0x0a89('0xe')](app);require('../../routes')[_0x0a89('0xe')](app);}else{server[_0x0a89('0x10')]('listening',function(){console[_0x0a89('0x11')](_0x0a89('0x12'),config['port']);});}exports=module['exports']=app;
\ No newline at end of file
index 0d890b1..2fe88d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9f9=['message','catch','jayson/promise','bluebird','../../config/logger','routing','http','Request','then','rpc','error'];(function(_0x32bd85,_0x4a8919){var _0x45fff9=function(_0x4d8d7c){while(--_0x4d8d7c){_0x32bd85['push'](_0x32bd85['shift']());}};_0x45fff9(++_0x4a8919);}(_0xa9f9,0xde));var _0x9a9f=function(_0x151530,_0x843d28){_0x151530=_0x151530-0x0;var _0x1155f1=_0xa9f9[_0x151530];return _0x1155f1;};'use strict';var jayson=require(_0x9a9f('0x0'));var BPromise=require(_0x9a9f('0x1'));var logger=require(_0x9a9f('0x2'))(_0x9a9f('0x3'));var client=jayson['client'][_0x9a9f('0x4')]({'port':0x2329});client[_0x9a9f('0x5')]=function(_0x85f890,_0x4aa865){return new BPromise(function(_0xba8b2,_0x3b2ddd){return client['request'](_0x85f890,_0x4aa865)[_0x9a9f('0x6')](function(_0x40bf23){logger['debug'](_0x9a9f('0x7'),'routing',_0x85f890,_0x4aa865,_0x40bf23);if(_0x40bf23['error']){logger[_0x9a9f('0x8')](_0x9a9f('0x7'),'routing',_0x85f890,_0x40bf23[_0x9a9f('0x8')][_0x9a9f('0x9')],_0x4aa865);return _0x3b2ddd(_0x40bf23[_0x9a9f('0x8')][_0x9a9f('0x9')]);}else{return _0xba8b2(_0x40bf23['result']);}})[_0x9a9f('0xa')](function(_0x3a15b3){logger['error']('rpc',_0x9a9f('0x3'),_0x85f890,_0x3a15b3,_0x4aa865);return _0x3b2ddd(_0x3a15b3);});});};module['exports']=client;
\ No newline at end of file
+var _0xa768=['../../config/logger','routing','then','debug','error','rpc','message','result','catch','bluebird'];(function(_0x53256e,_0xbec028){var _0x52a80b=function(_0x206849){while(--_0x206849){_0x53256e['push'](_0x53256e['shift']());}};_0x52a80b(++_0xbec028);}(_0xa768,0xf9));var _0x8a76=function(_0x532cd9,_0x118c1e){_0x532cd9=_0x532cd9-0x0;var _0x567aae=_0xa768[_0x532cd9];return _0x567aae;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x8a76('0x0'));var logger=require(_0x8a76('0x1'))(_0x8a76('0x2'));var client=jayson['client']['http']({'port':0x2329});client['Request']=function(_0x93a623,_0x2db23f){return new BPromise(function(_0x1f198b,_0x5023c4){return client['request'](_0x93a623,_0x2db23f)[_0x8a76('0x3')](function(_0x210eec){logger[_0x8a76('0x4')]('rpc',_0x8a76('0x2'),_0x93a623,_0x2db23f,_0x210eec);if(_0x210eec[_0x8a76('0x5')]){logger[_0x8a76('0x5')](_0x8a76('0x6'),_0x8a76('0x2'),_0x93a623,_0x210eec[_0x8a76('0x5')]['message'],_0x2db23f);return _0x5023c4(_0x210eec[_0x8a76('0x5')][_0x8a76('0x7')]);}else{return _0x1f198b(_0x210eec[_0x8a76('0x8')]);}})[_0x8a76('0x9')](function(_0x339e8e){logger[_0x8a76('0x5')]('rpc',_0x8a76('0x2'),_0x93a623,_0x339e8e,_0x2db23f);return _0x5023c4(_0x339e8e);});});};module['exports']=client;
\ No newline at end of file
index 0ba5e23..ca49131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcf1=['./rpc/whatsappQueue','resolve','initAgents','then','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','getFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','log','bluebird','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/faxQueue'];(function(_0x30da51,_0x391131){var _0xc0465=function(_0x3a5f75){while(--_0x3a5f75){_0x30da51['push'](_0x30da51['shift']());}};_0xc0465(++_0x391131);}(_0xfcf1,0x196));var _0x1fcf=function(_0x229327,_0x225488){_0x229327=_0x229327-0x0;var _0x33ec21=_0xfcf1[_0x229327];return _0x33ec21;};'use strict';var BPromise=require(_0x1fcf('0x0'));var server=require('./server');var Realtime=require(_0x1fcf('0x1'));var user=require(_0x1fcf('0x2'));var interval=require(_0x1fcf('0x3'));var openchannelQueue=require(_0x1fcf('0x4'));var chatQueue=require(_0x1fcf('0x5'));var smsQueue=require(_0x1fcf('0x6'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0x1fcf('0x7'));var whatsappQueue=require(_0x1fcf('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x1fcf('0x9')]()['then'](user['getAgents']())['then'](realtime[_0x1fcf('0xa')]())[_0x1fcf('0xb')](interval['getIntervals']())['then'](realtime['initIntervals']())['then'](openchannelQueue[_0x1fcf('0xc')]())['then'](realtime[_0x1fcf('0xd')]())[_0x1fcf('0xb')](chatQueue[_0x1fcf('0xe')]())[_0x1fcf('0xb')](realtime[_0x1fcf('0xf')]())[_0x1fcf('0xb')](smsQueue[_0x1fcf('0x10')]())[_0x1fcf('0xb')](realtime[_0x1fcf('0x11')]())[_0x1fcf('0xb')](mailQueue['getMailQueues']())['then'](realtime['initMailQueues']())[_0x1fcf('0xb')](faxQueue[_0x1fcf('0x12')]())[_0x1fcf('0xb')](realtime['initFaxQueues']())[_0x1fcf('0xb')](whatsappQueue[_0x1fcf('0x13')]())['then'](realtime[_0x1fcf('0x14')]())[_0x1fcf('0xb')](function(){return realtime;});}function main(){return server[_0x1fcf('0x15')](realtime)['then'](function(_0x709ca7){return initRealtime();})[_0x1fcf('0xb')](function(_0x26dd46){return setInterval(initRealtime,0x1388);})['catch'](function(_0x434aa0){console[_0x1fcf('0x16')](_0x434aa0);});}main();
\ No newline at end of file
+var _0x46fb=['getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','initSmsQueues','initMailQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','log','./server','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/smsQueue','./rpc/whatsappQueue','resolve','initAgents','getIntervals','then','initIntervals'];(function(_0x10e3f7,_0x353b97){var _0x3ee398=function(_0x16d5ce){while(--_0x16d5ce){_0x10e3f7['push'](_0x10e3f7['shift']());}};_0x3ee398(++_0x353b97);}(_0x46fb,0x1d8));var _0xb46f=function(_0x30f257,_0x295b2f){_0x30f257=_0x30f257-0x0;var _0x10b625=_0x46fb[_0x30f257];return _0x10b625;};'use strict';var BPromise=require('bluebird');var server=require(_0xb46f('0x0'));var Realtime=require('./realtime');var user=require(_0xb46f('0x1'));var interval=require(_0xb46f('0x2'));var openchannelQueue=require(_0xb46f('0x3'));var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0xb46f('0x4'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require('./rpc/faxQueue');var whatsappQueue=require(_0xb46f('0x5'));var realtime=new Realtime();function initRealtime(){return BPromise[_0xb46f('0x6')]()['then'](user['getAgents']())['then'](realtime[_0xb46f('0x7')]())['then'](interval[_0xb46f('0x8')]())[_0xb46f('0x9')](realtime[_0xb46f('0xa')]())[_0xb46f('0x9')](openchannelQueue[_0xb46f('0xb')]())[_0xb46f('0x9')](realtime[_0xb46f('0xc')]())[_0xb46f('0x9')](chatQueue[_0xb46f('0xd')]())[_0xb46f('0x9')](realtime[_0xb46f('0xe')]())['then'](smsQueue['getSmsQueues']())[_0xb46f('0x9')](realtime[_0xb46f('0xf')]())['then'](mailQueue['getMailQueues']())['then'](realtime[_0xb46f('0x10')]())['then'](faxQueue['getFaxQueues']())[_0xb46f('0x9')](realtime[_0xb46f('0x11')]())[_0xb46f('0x9')](whatsappQueue[_0xb46f('0x12')]())[_0xb46f('0x9')](realtime[_0xb46f('0x13')]())[_0xb46f('0x9')](function(){return realtime;});}function main(){return server['listen'](realtime)[_0xb46f('0x9')](function(_0x29fa08){return initRealtime();})[_0xb46f('0x9')](function(_0x694cdd){return setInterval(initRealtime,0x1388);})['catch'](function(_0xdb18f){console[_0xb46f('0x14')](_0xdb18f);});}main();
\ No newline at end of file
index 5a870b9..34144a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['orderBy','asc','result','clone','consequence','nextTick','push','isEqual','condition','call','matchPath','noop','matches','filter','turn','length','prioritize','findRules','priority','toJSON','map','toString','fromJSON','isString','lodash','EventEmitter','init','isNil','register','ignoreFactChanges','inherits','prototype','rules','activeRules','concat','isObject','sync'];(function(_0x23e3b0,_0x5f2901){var _0x13c675=function(_0x4be356){while(--_0x4be356){_0x23e3b0['push'](_0x23e3b0['shift']());}};_0x13c675(++_0x5f2901);}(_0x326f,0xd1));var _0xf326=function(_0x5563fb,_0x426dcc){_0x5563fb=_0x5563fb-0x0;var _0x10db42=_0x326f[_0x5563fb];return _0x10db42;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var EventEmitter=require('events')[_0xf326('0x1')];function RuleEngine(_0x330ddb,_0x22aabf){this[_0xf326('0x2')]();if(!_[_0xf326('0x3')](_0x330ddb)){this[_0xf326('0x4')](_0x330ddb);}if(_0x22aabf){this[_0xf326('0x5')]=_0x22aabf[_0xf326('0x5')];}return this;}util[_0xf326('0x6')](RuleEngine,EventEmitter);RuleEngine[_0xf326('0x7')]['init']=function(_0x3c254d){this[_0xf326('0x8')]=[];this[_0xf326('0x9')]=[];};RuleEngine[_0xf326('0x7')]['register']=function(_0x4c206c){if(Array['isArray'](_0x4c206c)){this[_0xf326('0x8')]=this[_0xf326('0x8')][_0xf326('0xa')](_0x4c206c);}else if(_0x4c206c!==null&&_[_0xf326('0xb')](_0x4c206c)){this[_0xf326('0x8')]['push'](_0x4c206c);}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0xc')]=function(){this['activeRules']=this[_0xf326('0x8')]['filter'](function(_0x3162f9){if(_[_0xf326('0x3')](_0x3162f9['on'])){_0x3162f9['on']=!![];}if(_0x3162f9['on']===!![]){return _0x3162f9;}});this['activeRules']=_[_0xf326('0xd')](this[_0xf326('0x9')],['p'],[_0xf326('0xe')]);};RuleEngine[_0xf326('0x7')]['execute']=function(_0x45c1b6,_0x5204ee){var _0x54bd1a=![];_0x45c1b6[_0xf326('0xf')]=!![];var _0x11f6d2=_[_0xf326('0x10')](_0x45c1b6);var _0xa63d1a=_[_0xf326('0x10')](_0x45c1b6);var _0x287a2a=this[_0xf326('0x9')];var _0x2cf2ca=[];var _0x5a682a=this[_0xf326('0x5')];(function FnRuleLoop(_0x453100){var _0x18bee3={'rules':function(){return _0x287a2a;},'rule':function(){return _0x287a2a[_0x453100];},'when':function(_0x31ffb9){if(_0x31ffb9){var _0xcef2b5=_0x287a2a[_0x453100][_0xf326('0x11')];_0xcef2b5['ruleRef']=_0x287a2a[_0x453100]['id']||_0x287a2a[_0x453100]['name']||'index_'+_0x453100;process[_0xf326('0x12')](function(){_0x2cf2ca[_0xf326('0x13')](_0xcef2b5['ruleRef']);_0xcef2b5['call'](_0x11f6d2,_0x18bee3);});}else{process[_0xf326('0x12')](function(){_0x18bee3['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x54bd1a=!![];return FnRuleLoop(0x0);},'next':function(_0x5b6d3c){if(!_0x5a682a&&!_[_0xf326('0x14')](_0xa63d1a,_0x11f6d2)){_0xa63d1a=_[_0xf326('0x10')](_0x11f6d2);process['nextTick'](function(){_0x18bee3['restart']();});}else{process[_0xf326('0x12')](function(){if(_[_0xf326('0x3')](_0x5b6d3c)){return FnRuleLoop(_0x453100+0x1);}else{return FnRuleLoop(_0x5b6d3c);}});}}};if(_0x453100<_0x287a2a['length']&&_0x54bd1a===![]){var _0x337ed5=_0x287a2a[_0x453100][_0xf326('0x15')];_0x337ed5[_0xf326('0x16')](_0x11f6d2,_0x18bee3);}else{process[_0xf326('0x12')](function(){_0x11f6d2[_0xf326('0x17')]=_0x2cf2ca;return _0x5204ee?_0x5204ee(_0x11f6d2):_[_0xf326('0x18')]();});}}(0x0));};RuleEngine['prototype']['findRules']=function(_0x4f31f6){if(_[_0xf326('0x3')](_0x4f31f6)){return this[_0xf326('0x8')];}else{var _0x2cd45a=_[_0xf326('0x19')](_0x4f31f6);return _[_0xf326('0x1a')](this[_0xf326('0x8')],_0x2cd45a);}};RuleEngine['prototype'][_0xf326('0x1b')]=function(_0xa3c0b,_0x212d5d){var _0x581531=_0xa3c0b==='on'||_0xa3c0b==='ON'?!![]:![];var _0x1617d2=this['findRules'](_0x212d5d);for(var _0x4a9abf=0x0,_0x6a8e89=_0x1617d2[_0xf326('0x1c')];_0x4a9abf<_0x6a8e89;_0x4a9abf+=0x1){_0x1617d2[_0x4a9abf]['on']=_0x581531;}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0x1d')]=function(_0x292500,_0x55790d){_0x292500=parseInt(_0x292500,0xa);var _0x225776=this[_0xf326('0x1e')](_0x55790d);for(var _0xd77aba=0x0,_0x18d110=_0x225776[_0xf326('0x1c')];_0xd77aba<_0x18d110;_0xd77aba+=0x1){_0x225776[_0xd77aba][_0xf326('0x1f')]=_0x292500;}this[_0xf326('0xc')]();};RuleEngine[_0xf326('0x7')][_0xf326('0x20')]=function(){var _0x349a03=this['rules'];if(_0x349a03 instanceof Array){_0x349a03=_0x349a03[_0xf326('0x21')](function(_0x424104){_0x424104[_0xf326('0x15')]=_0x424104['condition'][_0xf326('0x22')]();_0x424104[_0xf326('0x11')]=_0x424104[_0xf326('0x11')]['toString']();return _0x424104;});}else if(!_['isNil'](_0x349a03)){_0x349a03[_0xf326('0x15')]=_0x349a03[_0xf326('0x15')][_0xf326('0x22')]();_0x349a03[_0xf326('0x11')]=_0x349a03[_0xf326('0x11')][_0xf326('0x22')]();}return _0x349a03;};RuleEngine[_0xf326('0x7')][_0xf326('0x23')]=function(_0x580374){this[_0xf326('0x2')]();if(_[_0xf326('0x24')](_0x580374)){_0x580374=JSON['parse'](_0x580374);}if(_0x580374 instanceof Array){_0x580374=_0x580374[_0xf326('0x21')](function(_0x4e5d7c){_0x4e5d7c[_0xf326('0x15')]=eval('('+_0x4e5d7c['condition']+')');_0x4e5d7c['consequence']=eval('('+_0x4e5d7c[_0xf326('0x11')]+')');return _0x4e5d7c;});}else if(_0x580374!==null&&typeof _0x580374=='object'){_0x580374[_0xf326('0x15')]=eval('('+_0x580374['condition']+')');_0x580374[_0xf326('0x11')]=eval('('+_0x580374[_0xf326('0x11')]+')');}this[_0xf326('0x4')](_0x580374);};module['exports']=RuleEngine;
\ No newline at end of file
+var _0x5fc3=['lodash','util','EventEmitter','init','isNil','ignoreFactChanges','inherits','activeRules','prototype','register','isArray','rules','isObject','sync','orderBy','asc','execute','clone','ruleRef','name','index_','push','call','nextTick','next','isEqual','restart','length','condition','matchPath','noop','findRules','filter','prioritize','priority','toJSON','map','consequence','toString','fromJSON','isString','parse'];(function(_0xd9be0a,_0xa8dc94){var _0x2ecd86=function(_0x4b9bec){while(--_0x4b9bec){_0xd9be0a['push'](_0xd9be0a['shift']());}};_0x2ecd86(++_0xa8dc94);}(_0x5fc3,0xa8));var _0x35fc=function(_0x1e03a6,_0xf0349){_0x1e03a6=_0x1e03a6-0x0;var _0x295b64=_0x5fc3[_0x1e03a6];return _0x295b64;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var EventEmitter=require('events')[_0x35fc('0x2')];function RuleEngine(_0x2ac6da,_0x196bc2){this[_0x35fc('0x3')]();if(!_[_0x35fc('0x4')](_0x2ac6da)){this['register'](_0x2ac6da);}if(_0x196bc2){this[_0x35fc('0x5')]=_0x196bc2[_0x35fc('0x5')];}return this;}util[_0x35fc('0x6')](RuleEngine,EventEmitter);RuleEngine['prototype']['init']=function(_0x19a0d1){this['rules']=[];this[_0x35fc('0x7')]=[];};RuleEngine[_0x35fc('0x8')][_0x35fc('0x9')]=function(_0x1e5f90){if(Array[_0x35fc('0xa')](_0x1e5f90)){this[_0x35fc('0xb')]=this[_0x35fc('0xb')]['concat'](_0x1e5f90);}else if(_0x1e5f90!==null&&_[_0x35fc('0xc')](_0x1e5f90)){this[_0x35fc('0xb')]['push'](_0x1e5f90);}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')]['sync']=function(){this[_0x35fc('0x7')]=this[_0x35fc('0xb')]['filter'](function(_0x4cbe74){if(_[_0x35fc('0x4')](_0x4cbe74['on'])){_0x4cbe74['on']=!![];}if(_0x4cbe74['on']===!![]){return _0x4cbe74;}});this['activeRules']=_[_0x35fc('0xe')](this[_0x35fc('0x7')],['p'],[_0x35fc('0xf')]);};RuleEngine[_0x35fc('0x8')][_0x35fc('0x10')]=function(_0x5cfe94,_0x59507a){var _0x5eac0f=![];_0x5cfe94['result']=!![];var _0x398b67=_[_0x35fc('0x11')](_0x5cfe94);var _0x53b898=_[_0x35fc('0x11')](_0x5cfe94);var _0x227a49=this[_0x35fc('0x7')];var _0x480851=[];var _0x26ba54=this[_0x35fc('0x5')];(function FnRuleLoop(_0x553677){var _0x41e165={'rules':function(){return _0x227a49;},'rule':function(){return _0x227a49[_0x553677];},'when':function(_0x363e47){if(_0x363e47){var _0x2e513b=_0x227a49[_0x553677]['consequence'];_0x2e513b[_0x35fc('0x12')]=_0x227a49[_0x553677]['id']||_0x227a49[_0x553677][_0x35fc('0x13')]||_0x35fc('0x14')+_0x553677;process['nextTick'](function(){_0x480851[_0x35fc('0x15')](_0x2e513b[_0x35fc('0x12')]);_0x2e513b[_0x35fc('0x16')](_0x398b67,_0x41e165);});}else{process[_0x35fc('0x17')](function(){_0x41e165[_0x35fc('0x18')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x5eac0f=!![];return FnRuleLoop(0x0);},'next':function(_0x21f1a9){if(!_0x26ba54&&!_[_0x35fc('0x19')](_0x53b898,_0x398b67)){_0x53b898=_[_0x35fc('0x11')](_0x398b67);process[_0x35fc('0x17')](function(){_0x41e165[_0x35fc('0x1a')]();});}else{process['nextTick'](function(){if(_[_0x35fc('0x4')](_0x21f1a9)){return FnRuleLoop(_0x553677+0x1);}else{return FnRuleLoop(_0x21f1a9);}});}}};if(_0x553677<_0x227a49[_0x35fc('0x1b')]&&_0x5eac0f===![]){var _0x257719=_0x227a49[_0x553677][_0x35fc('0x1c')];_0x257719[_0x35fc('0x16')](_0x398b67,_0x41e165);}else{process['nextTick'](function(){_0x398b67[_0x35fc('0x1d')]=_0x480851;return _0x59507a?_0x59507a(_0x398b67):_[_0x35fc('0x1e')]();});}}(0x0));};RuleEngine['prototype'][_0x35fc('0x1f')]=function(_0x5a93df){if(_[_0x35fc('0x4')](_0x5a93df)){return this['rules'];}else{var _0x4086e9=_['matches'](_0x5a93df);return _[_0x35fc('0x20')](this[_0x35fc('0xb')],_0x4086e9);}};RuleEngine['prototype']['turn']=function(_0x47774c,_0x58edb6){var _0x274208=_0x47774c==='on'||_0x47774c==='ON'?!![]:![];var _0x1a5d92=this['findRules'](_0x58edb6);for(var _0x26b7cb=0x0,_0x645eac=_0x1a5d92[_0x35fc('0x1b')];_0x26b7cb<_0x645eac;_0x26b7cb+=0x1){_0x1a5d92[_0x26b7cb]['on']=_0x274208;}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')][_0x35fc('0x21')]=function(_0x11ccdb,_0x451f0c){_0x11ccdb=parseInt(_0x11ccdb,0xa);var _0x54aedc=this[_0x35fc('0x1f')](_0x451f0c);for(var _0x220931=0x0,_0x22af18=_0x54aedc['length'];_0x220931<_0x22af18;_0x220931+=0x1){_0x54aedc[_0x220931][_0x35fc('0x22')]=_0x11ccdb;}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')][_0x35fc('0x23')]=function(){var _0xd8a4ca=this[_0x35fc('0xb')];if(_0xd8a4ca instanceof Array){_0xd8a4ca=_0xd8a4ca[_0x35fc('0x24')](function(_0x37b435){_0x37b435[_0x35fc('0x1c')]=_0x37b435[_0x35fc('0x1c')]['toString']();_0x37b435['consequence']=_0x37b435[_0x35fc('0x25')]['toString']();return _0x37b435;});}else if(!_[_0x35fc('0x4')](_0xd8a4ca)){_0xd8a4ca[_0x35fc('0x1c')]=_0xd8a4ca[_0x35fc('0x1c')][_0x35fc('0x26')]();_0xd8a4ca[_0x35fc('0x25')]=_0xd8a4ca[_0x35fc('0x25')]['toString']();}return _0xd8a4ca;};RuleEngine[_0x35fc('0x8')][_0x35fc('0x27')]=function(_0x46b9ef){this[_0x35fc('0x3')]();if(_[_0x35fc('0x28')](_0x46b9ef)){_0x46b9ef=JSON[_0x35fc('0x29')](_0x46b9ef);}if(_0x46b9ef instanceof Array){_0x46b9ef=_0x46b9ef['map'](function(_0x2483be){_0x2483be[_0x35fc('0x1c')]=eval('('+_0x2483be[_0x35fc('0x1c')]+')');_0x2483be['consequence']=eval('('+_0x2483be[_0x35fc('0x25')]+')');return _0x2483be;});}else if(_0x46b9ef!==null&&typeof _0x46b9ef=='object'){_0x46b9ef[_0x35fc('0x1c')]=eval('('+_0x46b9ef[_0x35fc('0x1c')]+')');_0x46b9ef[_0x35fc('0x25')]=eval('('+_0x46b9ef[_0x35fc('0x25')]+')');}this['register'](_0x46b9ef);};module['exports']=RuleEngine;
\ No newline at end of file
index d07a13c..90b3e6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5af=['result','catch','SendMail','bluebird','jayson/promise','client','request','then','error','message'];(function(_0x28b7a2,_0x40aa58){var _0x404e08=function(_0x5e2894){while(--_0x5e2894){_0x28b7a2['push'](_0x28b7a2['shift']());}};_0x404e08(++_0x40aa58);}(_0xf5af,0x8f));var _0xff5a=function(_0x1069b9,_0x4b31bc){_0x1069b9=_0x1069b9-0x0;var _0x5659a2=_0xf5af[_0x1069b9];return _0x5659a2;};'use strict';var BPromise=require(_0xff5a('0x0'));var jayson=require(_0xff5a('0x1'));var client=jayson[_0xff5a('0x2')]['http']({'port':0x232b});function request(_0x16bb5b,_0x5c31a0){return new BPromise(function(_0x2bfe39,_0x44b49a){return client[_0xff5a('0x3')](_0x16bb5b,_0x5c31a0)[_0xff5a('0x4')](function(_0x49cad1){if(_0x49cad1[_0xff5a('0x5')]){return _0x44b49a(_0x49cad1['error'][_0xff5a('0x6')]);}else{return _0x2bfe39(_0x49cad1[_0xff5a('0x7')]);}})[_0xff5a('0x8')](function(_0x4c2d81){return _0x44b49a(_0x4c2d81);});});}exports['sendMailMessage']=function(_0x171325,_0x3daa04){return request(_0xff5a('0x9'),{'account':_0x171325,'message':_0x3daa04});};
\ No newline at end of file
+var _0x34ef=['jayson/promise','client','http','error','message','result','catch','sendMailMessage','SendMail','bluebird'];(function(_0x1a8995,_0x27ebb2){var _0x44ca58=function(_0x3171b0){while(--_0x3171b0){_0x1a8995['push'](_0x1a8995['shift']());}};_0x44ca58(++_0x27ebb2);}(_0x34ef,0x10d));var _0xf34e=function(_0x2d4f11,_0x2006de){_0x2d4f11=_0x2d4f11-0x0;var _0x27a953=_0x34ef[_0x2d4f11];return _0x27a953;};'use strict';var BPromise=require(_0xf34e('0x0'));var jayson=require(_0xf34e('0x1'));var client=jayson[_0xf34e('0x2')][_0xf34e('0x3')]({'port':0x232b});function request(_0x2fce11,_0x38f9b8){return new BPromise(function(_0x323b43,_0x12aff8){return client['request'](_0x2fce11,_0x38f9b8)['then'](function(_0x418bce){if(_0x418bce[_0xf34e('0x4')]){return _0x12aff8(_0x418bce[_0xf34e('0x4')][_0xf34e('0x5')]);}else{return _0x323b43(_0x418bce[_0xf34e('0x6')]);}})[_0xf34e('0x7')](function(_0x590902){return _0x12aff8(_0x590902);});});}exports[_0xf34e('0x8')]=function(_0x2330ba,_0x4be7a4){return request(_0xf34e('0x9'),{'account':_0x2330ba,'message':_0x4be7a4});};
\ No newline at end of file
index 04506cf..433df38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3166=['length','Status','StatusTime','toNumber','format','faxStatusTime','smsStatus','stringify','emit','exports','moment','md5','ioredis','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxCapacity','faxCurrentCapacity','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','idle','updateRealtime','chat','openchannel','fax','whatsapp'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3166,0xbb));var _0x6316=function(_0x5e6d8b,_0x4d649e){_0x5e6d8b=_0x5e6d8b-0x0;var _0x32b9dd=_0x3166[_0x5e6d8b];return _0x32b9dd;};'use strict';var _=require('lodash');var moment=require(_0x6316('0x0'));var md5=require(_0x6316('0x1'));var Redis=require(_0x6316('0x2'));var config=require('../../../config/environment');config[_0x6316('0x3')]=_[_0x6316('0x4')](config['redis'],{'host':_0x6316('0x5'),'port':0x18eb});var io=require(_0x6316('0x6'))(new Redis(config['redis']));function Agent(_0x150a68){this['id']=_0x150a68['id']||0x0;this[_0x6316('0x7')]=_0x150a68[_0x6316('0x7')]||'';this[_0x6316('0x8')]=_0x150a68['online']||!![];this[_0x6316('0x9')]=_0x150a68[_0x6316('0x9')]||![];this['chatPause']=_0x150a68[_0x6316('0xa')]||![];this[_0x6316('0xb')]=_0x150a68[_0x6316('0xb')]||![];this[_0x6316('0xc')]=_0x150a68[_0x6316('0xc')]||![];this[_0x6316('0xd')]=_0x150a68[_0x6316('0xd')]||![];this[_0x6316('0xe')]=_0x150a68[_0x6316('0xe')]||![];this[_0x6316('0xf')]=_0x6316('0x10');this['chatStatusTime']=0x0;this[_0x6316('0x11')]=_0x150a68[_0x6316('0x11')]||0x0;this[_0x6316('0x12')]=0x0;this[_0x6316('0x13')]=_0x6316('0x10');this[_0x6316('0x14')]=0x0;this['mailCapacity']=_0x150a68[_0x6316('0x15')]||0x0;this[_0x6316('0x16')]=0x0;this[_0x6316('0x17')]=_0x6316('0x10');this['faxStatusTime']=0x0;this[_0x6316('0x18')]=_0x150a68[_0x6316('0x18')]||0x0;this[_0x6316('0x19')]=0x0;this['smsStatus']=_0x6316('0x10');this[_0x6316('0x1a')]=0x0;this['smsCapacity']=_0x150a68[_0x6316('0x1b')]||0x0;this[_0x6316('0x1c')]=0x0;this[_0x6316('0x1d')]=_0x6316('0x10');this['whatsappStatusTime']=0x0;this['whatsappCapacity']=_0x150a68[_0x6316('0x1e')]||0x0;this[_0x6316('0x1f')]=0x0;this[_0x6316('0x20')]=_0x6316('0x10');this[_0x6316('0x21')]=0x0;this[_0x6316('0x22')]=_0x150a68[_0x6316('0x22')]||0x0;this[_0x6316('0x23')]=0x0;this[_0x6316('0x24')]=![];this[_0x6316('0x25')]=undefined;this[_0x6316('0x1')]='';this['updateRealtime']();}Agent[_0x6316('0x26')][_0x6316('0x27')]=function(_0x220e6d){if(this[_0x220e6d+_0x6316('0x28')]>0x0){if(this[_0x220e6d+_0x6316('0x29')]>0x0&&this[_0x220e6d+_0x6316('0x28')]>=this[_0x220e6d+_0x6316('0x29')]){return _0x6316('0x2a');}else{return'working';}}else{return _0x6316('0x2b');}};Agent[_0x6316('0x26')][_0x6316('0x2c')]=function(){var _0x308dd7=['mail',_0x6316('0x2d'),_0x6316('0x2e'),_0x6316('0x2f'),'sms',_0x6316('0x30')];for(var _0x443260=0x0;_0x443260<_0x308dd7[_0x6316('0x31')];_0x443260+=0x1){var _0x16a64b=this[_0x6316('0x27')](_0x308dd7[_0x443260]);if(this[_0x308dd7[_0x443260]+_0x6316('0x32')]!==_0x16a64b){this[_0x308dd7[_0x443260]+_0x6316('0x33')]=_[_0x6316('0x34')](moment()[_0x6316('0x35')]('x'));}this[_0x308dd7[_0x443260]+'Status']=_0x16a64b;}var _0x7315dc={'id':this['id'],'name':this[_0x6316('0x7')],'online':this['online'],'voicePause':this[_0x6316('0x9')],'chatPause':this['chatPause'],'mailPause':this[_0x6316('0xb')],'smsPause':this[_0x6316('0xd')],'faxPause':this['faxPause'],'openchannelPause':this['openchannelPause'],'chatStatus':this[_0x6316('0xf')],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0x6316('0x14')],'mailCapacity':this[_0x6316('0x15')],'mailCurrentCapacity':this[_0x6316('0x16')],'faxStatus':this['faxStatus'],'faxStatusTime':this[_0x6316('0x36')],'faxCapacity':this[_0x6316('0x18')],'faxCurrentCapacity':this[_0x6316('0x19')],'smsStatus':this[_0x6316('0x37')],'smsStatusTime':this[_0x6316('0x1a')],'smsCapacity':this[_0x6316('0x1b')],'smsCurrentCapacity':this[_0x6316('0x1c')],'whatsappStatus':this[_0x6316('0x1d')],'whatsappStatusTime':this['whatsappStatusTime'],'whatsappCapacity':this[_0x6316('0x1e')],'whatsappCurrentCapacity':this[_0x6316('0x1f')],'openchannelStatus':this[_0x6316('0x20')],'openchannelStatusTime':this[_0x6316('0x21')],'openchannelCapacity':this[_0x6316('0x22')],'openchannelCurrentCapacity':this['openchannelCurrentCapacity'],'busy':this[_0x6316('0x24')],'busyQueue':this[_0x6316('0x25')]};var _0x5c9ae3=md5(JSON[_0x6316('0x38')](_0x7315dc));if(this[_0x6316('0x1')]!==_0x5c9ae3){this[_0x6316('0x1')]=_0x5c9ae3;io[_0x6316('0x39')]('user:save',_0x7315dc);}};module[_0x6316('0x3a')]=Agent;
\ No newline at end of file
+var _0xa3f8=['mailPause','faxPause','smsPause','openchannelPause','chatStatus','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','unknown','mailStatusTime','mailCapacity','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','md5','prototype','CurrentCapacity','Capacity','maxcapacity','working','idle','updateRealtime','mail','chat','openchannel','fax','sms','whatsapp','length','getChannelStatus','Status','toNumber','format','mailCurrentCapacity','faxStatus','smsStatusTime','openchannelStatusTime','emit','exports','lodash','moment','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xa3f8,0x1f4));var _0x8a3f=function(_0x3dd92b,_0x4d1139){_0x3dd92b=_0x3dd92b-0x0;var _0x5e1d23=_0xa3f8[_0x3dd92b];return _0x5e1d23;};'use strict';var _=require(_0x8a3f('0x0'));var moment=require(_0x8a3f('0x1'));var md5=require('md5');var Redis=require(_0x8a3f('0x2'));var config=require(_0x8a3f('0x3'));config[_0x8a3f('0x4')]=_[_0x8a3f('0x5')](config['redis'],{'host':_0x8a3f('0x6'),'port':0x18eb});var io=require(_0x8a3f('0x7'))(new Redis(config[_0x8a3f('0x4')]));function Agent(_0x41a07b){this['id']=_0x41a07b['id']||0x0;this[_0x8a3f('0x8')]=_0x41a07b[_0x8a3f('0x8')]||'';this[_0x8a3f('0x9')]=_0x41a07b[_0x8a3f('0x9')]||!![];this[_0x8a3f('0xa')]=_0x41a07b[_0x8a3f('0xa')]||![];this['chatPause']=_0x41a07b[_0x8a3f('0xb')]||![];this[_0x8a3f('0xc')]=_0x41a07b[_0x8a3f('0xc')]||![];this[_0x8a3f('0xd')]=_0x41a07b['faxPause']||![];this[_0x8a3f('0xe')]=_0x41a07b[_0x8a3f('0xe')]||![];this[_0x8a3f('0xf')]=_0x41a07b[_0x8a3f('0xf')]||![];this[_0x8a3f('0x10')]='unknown';this[_0x8a3f('0x11')]=0x0;this[_0x8a3f('0x12')]=_0x41a07b[_0x8a3f('0x12')]||0x0;this[_0x8a3f('0x13')]=0x0;this[_0x8a3f('0x14')]=_0x8a3f('0x15');this[_0x8a3f('0x16')]=0x0;this[_0x8a3f('0x17')]=_0x41a07b[_0x8a3f('0x17')]||0x0;this['mailCurrentCapacity']=0x0;this['faxStatus']=_0x8a3f('0x15');this[_0x8a3f('0x18')]=0x0;this[_0x8a3f('0x19')]=_0x41a07b['faxCapacity']||0x0;this[_0x8a3f('0x1a')]=0x0;this[_0x8a3f('0x1b')]='unknown';this['smsStatusTime']=0x0;this[_0x8a3f('0x1c')]=_0x41a07b[_0x8a3f('0x1c')]||0x0;this[_0x8a3f('0x1d')]=0x0;this[_0x8a3f('0x1e')]=_0x8a3f('0x15');this[_0x8a3f('0x1f')]=0x0;this[_0x8a3f('0x20')]=_0x41a07b[_0x8a3f('0x20')]||0x0;this[_0x8a3f('0x21')]=0x0;this[_0x8a3f('0x22')]=_0x8a3f('0x15');this['openchannelStatusTime']=0x0;this['openchannelCapacity']=_0x41a07b[_0x8a3f('0x23')]||0x0;this[_0x8a3f('0x24')]=0x0;this[_0x8a3f('0x25')]=![];this[_0x8a3f('0x26')]=undefined;this[_0x8a3f('0x27')]='';this['updateRealtime']();}Agent[_0x8a3f('0x28')]['getChannelStatus']=function(_0x117287){if(this[_0x117287+'CurrentCapacity']>0x0){if(this[_0x117287+'Capacity']>0x0&&this[_0x117287+_0x8a3f('0x29')]>=this[_0x117287+_0x8a3f('0x2a')]){return _0x8a3f('0x2b');}else{return _0x8a3f('0x2c');}}else{return _0x8a3f('0x2d');}};Agent['prototype'][_0x8a3f('0x2e')]=function(){var _0x6551a1=[_0x8a3f('0x2f'),_0x8a3f('0x30'),_0x8a3f('0x31'),_0x8a3f('0x32'),_0x8a3f('0x33'),_0x8a3f('0x34')];for(var _0x940c35=0x0;_0x940c35<_0x6551a1[_0x8a3f('0x35')];_0x940c35+=0x1){var _0x360fbf=this[_0x8a3f('0x36')](_0x6551a1[_0x940c35]);if(this[_0x6551a1[_0x940c35]+_0x8a3f('0x37')]!==_0x360fbf){this[_0x6551a1[_0x940c35]+'StatusTime']=_[_0x8a3f('0x38')](moment()[_0x8a3f('0x39')]('x'));}this[_0x6551a1[_0x940c35]+_0x8a3f('0x37')]=_0x360fbf;}var _0x1b5034={'id':this['id'],'name':this[_0x8a3f('0x8')],'online':this[_0x8a3f('0x9')],'voicePause':this[_0x8a3f('0xa')],'chatPause':this[_0x8a3f('0xb')],'mailPause':this[_0x8a3f('0xc')],'smsPause':this[_0x8a3f('0xe')],'faxPause':this[_0x8a3f('0xd')],'openchannelPause':this[_0x8a3f('0xf')],'chatStatus':this[_0x8a3f('0x10')],'chatStatusTime':this[_0x8a3f('0x11')],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this[_0x8a3f('0x13')],'mailStatus':this[_0x8a3f('0x14')],'mailStatusTime':this[_0x8a3f('0x16')],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this[_0x8a3f('0x3a')],'faxStatus':this[_0x8a3f('0x3b')],'faxStatusTime':this[_0x8a3f('0x18')],'faxCapacity':this[_0x8a3f('0x19')],'faxCurrentCapacity':this[_0x8a3f('0x1a')],'smsStatus':this[_0x8a3f('0x1b')],'smsStatusTime':this[_0x8a3f('0x3c')],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0x8a3f('0x1d')],'whatsappStatus':this[_0x8a3f('0x1e')],'whatsappStatusTime':this['whatsappStatusTime'],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0x8a3f('0x22')],'openchannelStatusTime':this[_0x8a3f('0x3d')],'openchannelCapacity':this[_0x8a3f('0x23')],'openchannelCurrentCapacity':this[_0x8a3f('0x24')],'busy':this[_0x8a3f('0x25')],'busyQueue':this['busyQueue']};var _0xee50b0=md5(JSON['stringify'](_0x1b5034));if(this[_0x8a3f('0x27')]!==_0xee50b0){this[_0x8a3f('0x27')]=_0xee50b0;io[_0x8a3f('0x3e')]('user:save',_0x1b5034);}};module[_0x8a3f('0x3f')]=Agent;
\ No newline at end of file
index d2ac32e..ce74a99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5dd=['ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','map','_rr','paused','online','loggedIn','chatPause','available','stringify','chat:queue:%s','emit','exports','lodash','md5','util'];(function(_0x5cb990,_0x38831c){var _0x353fd2=function(_0x31c410){while(--_0x31c410){_0x5cb990['push'](_0x5cb990['shift']());}};_0x353fd2(++_0x38831c);}(_0xe5dd,0xab));var _0xde5d=function(_0x2ab84a,_0x24cb76){_0x2ab84a=_0x2ab84a-0x0;var _0x5330e1=_0xe5dd[_0x2ab84a];return _0x5330e1;};'use strict';var _=require(_0xde5d('0x0'));var md5=require(_0xde5d('0x1'));var util=require(_0xde5d('0x2'));var Redis=require(_0xde5d('0x3'));var config=require(_0xde5d('0x4'));config[_0xde5d('0x5')]=_[_0xde5d('0x6')](config[_0xde5d('0x5')],{'host':_0xde5d('0x7'),'port':0x18eb});var io=require(_0xde5d('0x8'))(new Redis(config[_0xde5d('0x5')]));function ChatQueue(_0x2cbbba){this['id']=_0x2cbbba['id']||0x0;this[_0xde5d('0x9')]=_0x2cbbba[_0xde5d('0x9')]||'';this[_0xde5d('0xa')]=_0x2cbbba['timeout']||0xa;this['strategy']=_0x2cbbba[_0xde5d('0xb')]||'beepall';this[_0xde5d('0xc')]=_0x2cbbba['Agents'];this['mapAgentsId']={};this[_0xde5d('0xd')]=0x0;this[_0xde5d('0x1')]='';this[_0xde5d('0xe')]();this[_0xde5d('0xf')]();}ChatQueue[_0xde5d('0x10')][_0xde5d('0xe')]=function(){var _0x2303fc=this[_0xde5d('0x11')]['_rr'];this[_0xde5d('0x11')]=_[_0xde5d('0x12')](this[_0xde5d('0xc')],'id');this[_0xde5d('0x11')][_0xde5d('0x13')]=_0x2303fc;};ChatQueue[_0xde5d('0x10')][_0xde5d('0xf')]=function(){this['loggedIn']=0x0;this[_0xde5d('0x14')]=0x0;for(var _0x369fc8=0x0;_0x369fc8<this[_0xde5d('0xc')]['length'];_0x369fc8+=0x1){if(this[_0xde5d('0xc')][_0x369fc8][_0xde5d('0x15')]){this[_0xde5d('0x16')]+=0x1;}if(this[_0xde5d('0xc')][_0x369fc8][_0xde5d('0x17')]){this[_0xde5d('0x14')]+=0x1;}}this[_0xde5d('0x18')]=this[_0xde5d('0x16')]-this[_0xde5d('0x14')];this[_0xde5d('0x18')]=this[_0xde5d('0x18')]>=0x0?this['available']:0x0;var _0x7607c2={'id':this['id'],'available':this[_0xde5d('0x18')],'loggedIn':this[_0xde5d('0x16')],'name':this[_0xde5d('0x9')],'paused':this[_0xde5d('0x14')],'waiting':this[_0xde5d('0xd')]};var _0x3189cd=md5(JSON[_0xde5d('0x19')](_0x7607c2));if(this[_0xde5d('0x1')]!==_0x3189cd){this[_0xde5d('0x1')]=_0x3189cd;io['to'](util['format'](_0xde5d('0x1a'),_0x7607c2[_0xde5d('0x9')]))[_0xde5d('0x1b')]('chat_queue:save',_0x7607c2);}};module[_0xde5d('0x1c')]=ChatQueue;
\ No newline at end of file
+var _0x7818=['prototype','_rr','map','updateRealtime','loggedIn','online','chatPause','paused','available','stringify','format','emit','chat_queue:save','exports','util','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','md5','updateRouting'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x7818,0x142));var _0x8781=function(_0x39b0d3,_0x4fa415){_0x39b0d3=_0x39b0d3-0x0;var _0x4cba40=_0x7818[_0x39b0d3];return _0x4cba40;};'use strict';var _=require('lodash');var md5=require('md5');var util=require(_0x8781('0x0'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x8781('0x1')]=_[_0x8781('0x2')](config[_0x8781('0x1')],{'host':_0x8781('0x3'),'port':0x18eb});var io=require(_0x8781('0x4'))(new Redis(config[_0x8781('0x1')]));function ChatQueue(_0x4ae273){this['id']=_0x4ae273['id']||0x0;this['name']=_0x4ae273[_0x8781('0x5')]||'';this[_0x8781('0x6')]=_0x4ae273[_0x8781('0x6')]||0xa;this['strategy']=_0x4ae273[_0x8781('0x7')]||_0x8781('0x8');this['Agents']=_0x4ae273[_0x8781('0x9')];this[_0x8781('0xa')]={};this[_0x8781('0xb')]=0x0;this[_0x8781('0xc')]='';this[_0x8781('0xd')]();this['updateRealtime']();}ChatQueue[_0x8781('0xe')][_0x8781('0xd')]=function(){var _0x2f9c08=this[_0x8781('0xa')][_0x8781('0xf')];this[_0x8781('0xa')]=_[_0x8781('0x10')](this[_0x8781('0x9')],'id');this[_0x8781('0xa')][_0x8781('0xf')]=_0x2f9c08;};ChatQueue[_0x8781('0xe')][_0x8781('0x11')]=function(){this[_0x8781('0x12')]=0x0;this['paused']=0x0;for(var _0x2975e8=0x0;_0x2975e8<this['Agents']['length'];_0x2975e8+=0x1){if(this['Agents'][_0x2975e8][_0x8781('0x13')]){this[_0x8781('0x12')]+=0x1;}if(this[_0x8781('0x9')][_0x2975e8][_0x8781('0x14')]){this[_0x8781('0x15')]+=0x1;}}this['available']=this['loggedIn']-this['paused'];this['available']=this[_0x8781('0x16')]>=0x0?this[_0x8781('0x16')]:0x0;var _0x192553={'id':this['id'],'available':this[_0x8781('0x16')],'loggedIn':this[_0x8781('0x12')],'name':this[_0x8781('0x5')],'paused':this[_0x8781('0x15')],'waiting':this[_0x8781('0xb')]};var _0x513ebf=md5(JSON[_0x8781('0x17')](_0x192553));if(this[_0x8781('0xc')]!==_0x513ebf){this[_0x8781('0xc')]=_0x513ebf;io['to'](util[_0x8781('0x18')]('chat:queue:%s',_0x192553['name']))[_0x8781('0x19')](_0x8781('0x1a'),_0x192553);}};module[_0x8781('0x1b')]=ChatQueue;
\ No newline at end of file
index 709d943..fb1eb62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c76=['loggedIn','paused','length','online','faxPause','available','waiting','stringify','format','fax:queue:%s','fax_queue:save','exports','lodash','util','ioredis','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','md5','updateRealtime','updateRouting','_rr','prototype'];(function(_0x137ad9,_0x23e259){var _0x365cf9=function(_0x1a1709){while(--_0x1a1709){_0x137ad9['push'](_0x137ad9['shift']());}};_0x365cf9(++_0x23e259);}(_0x2c76,0xde));var _0x62c7=function(_0xc2c53e,_0x50bf76){_0xc2c53e=_0xc2c53e-0x0;var _0x229ca4=_0x2c76[_0xc2c53e];return _0x229ca4;};'use strict';var _=require(_0x62c7('0x0'));var md5=require('md5');var util=require(_0x62c7('0x1'));var Redis=require(_0x62c7('0x2'));var config=require('../../../config/environment');config[_0x62c7('0x3')]=_[_0x62c7('0x4')](config[_0x62c7('0x3')],{'host':_0x62c7('0x5'),'port':0x18eb});var io=require(_0x62c7('0x6'))(new Redis(config[_0x62c7('0x3')]));function FaxQueue(_0x144a7b){this['id']=_0x144a7b['id']||0x0;this[_0x62c7('0x7')]=_0x144a7b[_0x62c7('0x7')]||'';this[_0x62c7('0x8')]=_0x144a7b['timeout']||0xa;this[_0x62c7('0x9')]=_0x144a7b[_0x62c7('0x9')]||_0x62c7('0xa');this[_0x62c7('0xb')]=_0x144a7b[_0x62c7('0xb')];this[_0x62c7('0xc')]={};this['waiting']=0x0;this[_0x62c7('0xd')]='';this['updateRouting']();this[_0x62c7('0xe')]();}FaxQueue['prototype'][_0x62c7('0xf')]=function(){var _0xed1cb4=this['mapAgentsId'][_0x62c7('0x10')];this[_0x62c7('0xc')]=_['map'](this[_0x62c7('0xb')],'id');this['mapAgentsId'][_0x62c7('0x10')]=_0xed1cb4;};FaxQueue[_0x62c7('0x11')][_0x62c7('0xe')]=function(){this[_0x62c7('0x12')]=0x0;this[_0x62c7('0x13')]=0x0;for(var _0x3b1450=0x0;_0x3b1450<this[_0x62c7('0xb')][_0x62c7('0x14')];_0x3b1450+=0x1){if(this[_0x62c7('0xb')][_0x3b1450][_0x62c7('0x15')]){this[_0x62c7('0x12')]+=0x1;}if(this[_0x62c7('0xb')][_0x3b1450][_0x62c7('0x16')]){this['paused']+=0x1;}}this['available']=this[_0x62c7('0x12')]-this[_0x62c7('0x13')];this['available']=this[_0x62c7('0x17')]>=0x0?this['available']:0x0;var _0x40f7c0={'id':this['id'],'available':this[_0x62c7('0x17')],'loggedIn':this['loggedIn'],'name':this[_0x62c7('0x7')],'paused':this['paused'],'waiting':this[_0x62c7('0x18')]};var _0x579f0d=md5(JSON[_0x62c7('0x19')](_0x40f7c0));if(this[_0x62c7('0xd')]!==_0x579f0d){this[_0x62c7('0xd')]=_0x579f0d;io['to'](util[_0x62c7('0x1a')](_0x62c7('0x1b'),_0x40f7c0[_0x62c7('0x7')]))['emit'](_0x62c7('0x1c'),_0x40f7c0);}};module[_0x62c7('0x1d')]=FaxQueue;
\ No newline at end of file
+var _0xb8b4=['timeout','strategy','Agents','mapAgentsId','waiting','md5','updateRealtime','prototype','updateRouting','_rr','map','loggedIn','paused','faxPause','available','stringify','fax:queue:%s','fax_queue:save','exports','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name'];(function(_0x5c727b,_0x1bf8aa){var _0x2d0f49=function(_0x43c72b){while(--_0x43c72b){_0x5c727b['push'](_0x5c727b['shift']());}};_0x2d0f49(++_0x1bf8aa);}(_0xb8b4,0x1de));var _0x4b8b=function(_0x5d78e8,_0x35256e){_0x5d78e8=_0x5d78e8-0x0;var _0x1278f8=_0xb8b4[_0x5d78e8];return _0x1278f8;};'use strict';var _=require('lodash');var md5=require('md5');var util=require(_0x4b8b('0x0'));var Redis=require(_0x4b8b('0x1'));var config=require(_0x4b8b('0x2'));config[_0x4b8b('0x3')]=_[_0x4b8b('0x4')](config['redis'],{'host':_0x4b8b('0x5'),'port':0x18eb});var io=require(_0x4b8b('0x6'))(new Redis(config['redis']));function FaxQueue(_0x3932cd){this['id']=_0x3932cd['id']||0x0;this['name']=_0x3932cd[_0x4b8b('0x7')]||'';this['timeout']=_0x3932cd[_0x4b8b('0x8')]||0xa;this['strategy']=_0x3932cd[_0x4b8b('0x9')]||'beepall';this[_0x4b8b('0xa')]=_0x3932cd[_0x4b8b('0xa')];this[_0x4b8b('0xb')]={};this[_0x4b8b('0xc')]=0x0;this[_0x4b8b('0xd')]='';this['updateRouting']();this[_0x4b8b('0xe')]();}FaxQueue[_0x4b8b('0xf')][_0x4b8b('0x10')]=function(){var _0x1bb22e=this['mapAgentsId'][_0x4b8b('0x11')];this[_0x4b8b('0xb')]=_[_0x4b8b('0x12')](this[_0x4b8b('0xa')],'id');this[_0x4b8b('0xb')]['_rr']=_0x1bb22e;};FaxQueue[_0x4b8b('0xf')][_0x4b8b('0xe')]=function(){this[_0x4b8b('0x13')]=0x0;this[_0x4b8b('0x14')]=0x0;for(var _0x332115=0x0;_0x332115<this[_0x4b8b('0xa')]['length'];_0x332115+=0x1){if(this[_0x4b8b('0xa')][_0x332115]['online']){this['loggedIn']+=0x1;}if(this[_0x4b8b('0xa')][_0x332115][_0x4b8b('0x15')]){this[_0x4b8b('0x14')]+=0x1;}}this[_0x4b8b('0x16')]=this[_0x4b8b('0x13')]-this[_0x4b8b('0x14')];this[_0x4b8b('0x16')]=this[_0x4b8b('0x16')]>=0x0?this[_0x4b8b('0x16')]:0x0;var _0x24bac0={'id':this['id'],'available':this[_0x4b8b('0x16')],'loggedIn':this['loggedIn'],'name':this[_0x4b8b('0x7')],'paused':this['paused'],'waiting':this['waiting']};var _0x43fd12=md5(JSON[_0x4b8b('0x17')](_0x24bac0));if(this[_0x4b8b('0xd')]!==_0x43fd12){this[_0x4b8b('0xd')]=_0x43fd12;io['to'](util['format'](_0x4b8b('0x18'),_0x24bac0[_0x4b8b('0x7')]))['emit'](_0x4b8b('0x19'),_0x24bac0);}};module[_0x4b8b('0x1a')]=FaxQueue;
\ No newline at end of file
index 82c9abb..5c53578 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb02f=['Intervals','exports','name'];(function(_0x9ddd76,_0x29027){var _0x20e02c=function(_0x449b8b){while(--_0x449b8b){_0x9ddd76['push'](_0x9ddd76['shift']());}};_0x20e02c(++_0x29027);}(_0xb02f,0x1c1));var _0xfb02=function(_0x5a6b1e,_0x4f3992){_0x5a6b1e=_0x5a6b1e-0x0;var _0x529199=_0xb02f[_0x5a6b1e];return _0x529199;};'use strict';function Interval(_0x426421){this['id']=_0x426421['id']||0x0;this[_0xfb02('0x0')]=_0x426421[_0xfb02('0x0')]||'';this[_0xfb02('0x1')]=_0x426421[_0xfb02('0x1')]||{};}module[_0xfb02('0x2')]=Interval;
\ No newline at end of file
+var _0xc9a4=['name','Intervals','exports'];(function(_0x5d0c70,_0x2abb5a){var _0x2823e5=function(_0x267f7f){while(--_0x267f7f){_0x5d0c70['push'](_0x5d0c70['shift']());}};_0x2823e5(++_0x2abb5a);}(_0xc9a4,0x1c5));var _0x4c9a=function(_0x33e7db,_0x1ec56f){_0x33e7db=_0x33e7db-0x0;var _0x381ddb=_0xc9a4[_0x33e7db];return _0x381ddb;};'use strict';function Interval(_0x3ba030){this['id']=_0x3ba030['id']||0x0;this['name']=_0x3ba030[_0x4c9a('0x0')]||'';this[_0x4c9a('0x1')]=_0x3ba030[_0x4c9a('0x1')]||{};}module[_0x4c9a('0x2')]=Interval;
\ No newline at end of file
index e8171fb..3cac4ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x720c=['Agents','mapAgentsId','updateRouting','prototype','map','_rr','online','available','loggedIn','paused','waiting','stringify','format','mail:queue:%s','emit','mail_queue:save','exports','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall'];(function(_0x41aaa5,_0x5d880b){var _0x35c60f=function(_0x4bf487){while(--_0x4bf487){_0x41aaa5['push'](_0x41aaa5['shift']());}};_0x35c60f(++_0x5d880b);}(_0x720c,0x81));var _0xc720=function(_0x53a0e4,_0x59fb74){_0x53a0e4=_0x53a0e4-0x0;var _0x248e78=_0x720c[_0x53a0e4];return _0x248e78;};'use strict';var _=require('lodash');var md5=require(_0xc720('0x0'));var util=require('util');var Redis=require(_0xc720('0x1'));var config=require(_0xc720('0x2'));config[_0xc720('0x3')]=_[_0xc720('0x4')](config['redis'],{'host':_0xc720('0x5'),'port':0x18eb});var io=require(_0xc720('0x6'))(new Redis(config['redis']));function MailQueue(_0x321cc9){this['id']=_0x321cc9['id']||0x0;this[_0xc720('0x7')]=_0x321cc9[_0xc720('0x7')]||'';this[_0xc720('0x8')]=_0x321cc9['timeout']||0xa;this[_0xc720('0x9')]=_0x321cc9['strategy']||_0xc720('0xa');this[_0xc720('0xb')]=_0x321cc9[_0xc720('0xb')];this[_0xc720('0xc')]={};this['waiting']=0x0;this[_0xc720('0x0')]='';this[_0xc720('0xd')]();this['updateRealtime']();}MailQueue[_0xc720('0xe')]['updateRouting']=function(){var _0x484a93=this['mapAgentsId']['_rr'];this[_0xc720('0xc')]=_[_0xc720('0xf')](this[_0xc720('0xb')],'id');this[_0xc720('0xc')][_0xc720('0x10')]=_0x484a93;};MailQueue[_0xc720('0xe')]['updateRealtime']=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0x5f1677=0x0;_0x5f1677<this[_0xc720('0xb')]['length'];_0x5f1677+=0x1){if(this[_0xc720('0xb')][_0x5f1677][_0xc720('0x11')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x5f1677]['mailPause']){this['paused']+=0x1;}}this[_0xc720('0x12')]=this[_0xc720('0x13')]-this['paused'];this[_0xc720('0x12')]=this[_0xc720('0x12')]>=0x0?this[_0xc720('0x12')]:0x0;var _0x1fd841={'id':this['id'],'available':this[_0xc720('0x12')],'loggedIn':this[_0xc720('0x13')],'name':this['name'],'paused':this[_0xc720('0x14')],'waiting':this[_0xc720('0x15')]};var _0x5c59c1=md5(JSON[_0xc720('0x16')](_0x1fd841));if(this['md5']!==_0x5c59c1){this[_0xc720('0x0')]=_0x5c59c1;io['to'](util[_0xc720('0x17')](_0xc720('0x18'),_0x1fd841[_0xc720('0x7')]))[_0xc720('0x19')](_0xc720('0x1a'),_0x1fd841);}};module[_0xc720('0x1b')]=MailQueue;
\ No newline at end of file
+var _0xef6a=['prototype','_rr','map','loggedIn','online','mailPause','paused','available','stringify','format','mail:queue:%s','mail_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime'];(function(_0x5bce33,_0x4a4b06){var _0x15bc20=function(_0x56c711){while(--_0x56c711){_0x5bce33['push'](_0x5bce33['shift']());}};_0x15bc20(++_0x4a4b06);}(_0xef6a,0xc1));var _0xaef6=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xef6a[_0x2641f9];return _0x585741;};'use strict';var _=require(_0xaef6('0x0'));var md5=require(_0xaef6('0x1'));var util=require(_0xaef6('0x2'));var Redis=require(_0xaef6('0x3'));var config=require(_0xaef6('0x4'));config[_0xaef6('0x5')]=_['defaults'](config[_0xaef6('0x5')],{'host':_0xaef6('0x6'),'port':0x18eb});var io=require(_0xaef6('0x7'))(new Redis(config[_0xaef6('0x5')]));function MailQueue(_0x14dd78){this['id']=_0x14dd78['id']||0x0;this[_0xaef6('0x8')]=_0x14dd78[_0xaef6('0x8')]||'';this[_0xaef6('0x9')]=_0x14dd78['timeout']||0xa;this['strategy']=_0x14dd78[_0xaef6('0xa')]||_0xaef6('0xb');this[_0xaef6('0xc')]=_0x14dd78['Agents'];this[_0xaef6('0xd')]={};this[_0xaef6('0xe')]=0x0;this['md5']='';this[_0xaef6('0xf')]();this[_0xaef6('0x10')]();}MailQueue[_0xaef6('0x11')][_0xaef6('0xf')]=function(){var _0x2e097f=this[_0xaef6('0xd')][_0xaef6('0x12')];this[_0xaef6('0xd')]=_[_0xaef6('0x13')](this['Agents'],'id');this[_0xaef6('0xd')][_0xaef6('0x12')]=_0x2e097f;};MailQueue[_0xaef6('0x11')][_0xaef6('0x10')]=function(){this[_0xaef6('0x14')]=0x0;this['paused']=0x0;for(var _0x1b5529=0x0;_0x1b5529<this[_0xaef6('0xc')]['length'];_0x1b5529+=0x1){if(this[_0xaef6('0xc')][_0x1b5529][_0xaef6('0x15')]){this[_0xaef6('0x14')]+=0x1;}if(this[_0xaef6('0xc')][_0x1b5529][_0xaef6('0x16')]){this[_0xaef6('0x17')]+=0x1;}}this['available']=this[_0xaef6('0x14')]-this[_0xaef6('0x17')];this[_0xaef6('0x18')]=this[_0xaef6('0x18')]>=0x0?this[_0xaef6('0x18')]:0x0;var _0xae2c86={'id':this['id'],'available':this[_0xaef6('0x18')],'loggedIn':this[_0xaef6('0x14')],'name':this['name'],'paused':this[_0xaef6('0x17')],'waiting':this[_0xaef6('0xe')]};var _0x46211f=md5(JSON[_0xaef6('0x19')](_0xae2c86));if(this[_0xaef6('0x1')]!==_0x46211f){this[_0xaef6('0x1')]=_0x46211f;io['to'](util[_0xaef6('0x1a')](_0xaef6('0x1b'),_0xae2c86[_0xaef6('0x8')]))['emit'](_0xaef6('0x1c'),_0xae2c86);}};module[_0xaef6('0x1d')]=MailQueue;
\ No newline at end of file
index 3c0248c..47b6e80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['exports','lodash','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','mapAgentsId','waiting','md5','updateRouting','updateRealtime','Agents','prototype','loggedIn','paused','online','openchannelPause','available','stringify','openchannel:queue:%s','openchannel_queue:save'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0x326f,0xd1));var _0xf326=function(_0x516278,_0x48a3f8){_0x516278=_0x516278-0x0;var _0x6bedcd=_0x326f[_0x516278];return _0x6bedcd;};'use strict';var _=require(_0xf326('0x0'));var md5=require('md5');var util=require('util');var Redis=require(_0xf326('0x1'));var config=require(_0xf326('0x2'));config[_0xf326('0x3')]=_[_0xf326('0x4')](config[_0xf326('0x3')],{'host':_0xf326('0x5'),'port':0x18eb});var io=require(_0xf326('0x6'))(new Redis(config[_0xf326('0x3')]));function OpenchannelQueue(_0x1b5a56){this['id']=_0x1b5a56['id']||0x0;this[_0xf326('0x7')]=_0x1b5a56['name']||'';this[_0xf326('0x8')]=_0x1b5a56[_0xf326('0x8')]||0xa;this[_0xf326('0x9')]=_0x1b5a56[_0xf326('0x9')]||'beepall';this['Agents']=_0x1b5a56['Agents'];this[_0xf326('0xa')]={};this[_0xf326('0xb')]=0x0;this[_0xf326('0xc')]='';this[_0xf326('0xd')]();this[_0xf326('0xe')]();}OpenchannelQueue['prototype'][_0xf326('0xd')]=function(){var _0x53cbcd=this[_0xf326('0xa')]['_rr'];this[_0xf326('0xa')]=_['map'](this[_0xf326('0xf')],'id');this[_0xf326('0xa')]['_rr']=_0x53cbcd;};OpenchannelQueue[_0xf326('0x10')][_0xf326('0xe')]=function(){this[_0xf326('0x11')]=0x0;this[_0xf326('0x12')]=0x0;for(var _0x5c8483=0x0;_0x5c8483<this[_0xf326('0xf')]['length'];_0x5c8483+=0x1){if(this['Agents'][_0x5c8483][_0xf326('0x13')]){this[_0xf326('0x11')]+=0x1;}if(this[_0xf326('0xf')][_0x5c8483][_0xf326('0x14')]){this[_0xf326('0x12')]+=0x1;}}this[_0xf326('0x15')]=this[_0xf326('0x11')]-this[_0xf326('0x12')];this['available']=this[_0xf326('0x15')]>=0x0?this[_0xf326('0x15')]:0x0;var _0x18bee3={'id':this['id'],'available':this[_0xf326('0x15')],'loggedIn':this[_0xf326('0x11')],'name':this[_0xf326('0x7')],'paused':this['paused'],'waiting':this['waiting']};var _0x56ad41=md5(JSON[_0xf326('0x16')](_0x18bee3));if(this[_0xf326('0xc')]!==_0x56ad41){this['md5']=_0x56ad41;io['to'](util['format'](_0xf326('0x17'),_0x18bee3['name']))['emit'](_0xf326('0x18'),_0x18bee3);}};module[_0xf326('0x19')]=OpenchannelQueue;
\ No newline at end of file
+var _0x5fc3=['format','openchannel:queue:%s','name','emit','openchannel_queue:save','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','prototype','loggedIn','paused','openchannelPause','available'];(function(_0x59e591,_0x21f1c3){var _0x175cbc=function(_0x3758a1){while(--_0x3758a1){_0x59e591['push'](_0x59e591['shift']());}};_0x175cbc(++_0x21f1c3);}(_0x5fc3,0xa8));var _0x35fc=function(_0x4b6830,_0x2bf6fb){_0x4b6830=_0x4b6830-0x0;var _0x239e4a=_0x5fc3[_0x4b6830];return _0x239e4a;};'use strict';var _=require(_0x35fc('0x0'));var md5=require(_0x35fc('0x1'));var util=require('util');var Redis=require(_0x35fc('0x2'));var config=require(_0x35fc('0x3'));config[_0x35fc('0x4')]=_[_0x35fc('0x5')](config[_0x35fc('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x35fc('0x6'))(new Redis(config[_0x35fc('0x4')]));function OpenchannelQueue(_0x186a06){this['id']=_0x186a06['id']||0x0;this['name']=_0x186a06['name']||'';this[_0x35fc('0x7')]=_0x186a06['timeout']||0xa;this[_0x35fc('0x8')]=_0x186a06[_0x35fc('0x8')]||_0x35fc('0x9');this[_0x35fc('0xa')]=_0x186a06[_0x35fc('0xa')];this[_0x35fc('0xb')]={};this[_0x35fc('0xc')]=0x0;this['md5']='';this[_0x35fc('0xd')]();this[_0x35fc('0xe')]();}OpenchannelQueue['prototype'][_0x35fc('0xd')]=function(){var _0x33f491=this['mapAgentsId'][_0x35fc('0xf')];this[_0x35fc('0xb')]=_['map'](this['Agents'],'id');this[_0x35fc('0xb')]['_rr']=_0x33f491;};OpenchannelQueue[_0x35fc('0x10')][_0x35fc('0xe')]=function(){this[_0x35fc('0x11')]=0x0;this[_0x35fc('0x12')]=0x0;for(var _0x38d9f2=0x0;_0x38d9f2<this['Agents']['length'];_0x38d9f2+=0x1){if(this['Agents'][_0x38d9f2]['online']){this[_0x35fc('0x11')]+=0x1;}if(this[_0x35fc('0xa')][_0x38d9f2][_0x35fc('0x13')]){this[_0x35fc('0x12')]+=0x1;}}this[_0x35fc('0x14')]=this[_0x35fc('0x11')]-this['paused'];this[_0x35fc('0x14')]=this[_0x35fc('0x14')]>=0x0?this['available']:0x0;var _0x41e165={'id':this['id'],'available':this[_0x35fc('0x14')],'loggedIn':this[_0x35fc('0x11')],'name':this['name'],'paused':this[_0x35fc('0x12')],'waiting':this[_0x35fc('0xc')]};var _0x465eb3=md5(JSON['stringify'](_0x41e165));if(this[_0x35fc('0x1')]!==_0x465eb3){this[_0x35fc('0x1')]=_0x465eb3;io['to'](util[_0x35fc('0x15')](_0x35fc('0x16'),_0x41e165[_0x35fc('0x17')]))[_0x35fc('0x18')](_0x35fc('0x19'),_0x41e165);}};module[_0x35fc('0x1a')]=OpenchannelQueue;
\ No newline at end of file
index f1c26c2..9604940 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99e9=['strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','smsPause','available','format','emit','sms_queue:save','exports','md5','util','ioredis','../../../config/environment','defaults','redis','localhost','name','timeout'];(function(_0xf2628e,_0x521bf7){var _0x13863a=function(_0x2b04ab){while(--_0x2b04ab){_0xf2628e['push'](_0xf2628e['shift']());}};_0x13863a(++_0x521bf7);}(_0x99e9,0xb4));var _0x999e=function(_0x56c70f,_0x4e4493){_0x56c70f=_0x56c70f-0x0;var _0x3812ed=_0x99e9[_0x56c70f];return _0x3812ed;};'use strict';var _=require('lodash');var md5=require(_0x999e('0x0'));var util=require(_0x999e('0x1'));var Redis=require(_0x999e('0x2'));var config=require(_0x999e('0x3'));config['redis']=_[_0x999e('0x4')](config[_0x999e('0x5')],{'host':_0x999e('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x999e('0x5')]));function SmsQueue(_0x502307){this['id']=_0x502307['id']||0x0;this[_0x999e('0x7')]=_0x502307[_0x999e('0x7')]||'';this[_0x999e('0x8')]=_0x502307[_0x999e('0x8')]||0xa;this['strategy']=_0x502307[_0x999e('0x9')]||_0x999e('0xa');this[_0x999e('0xb')]=_0x502307[_0x999e('0xb')];this[_0x999e('0xc')]={};this[_0x999e('0xd')]=0x0;this[_0x999e('0x0')]='';this[_0x999e('0xe')]();this[_0x999e('0xf')]();}SmsQueue[_0x999e('0x10')][_0x999e('0xe')]=function(){var _0x1d19b0=this[_0x999e('0xc')][_0x999e('0x11')];this[_0x999e('0xc')]=_[_0x999e('0x12')](this[_0x999e('0xb')],'id');this['mapAgentsId'][_0x999e('0x11')]=_0x1d19b0;};SmsQueue['prototype'][_0x999e('0xf')]=function(){this[_0x999e('0x13')]=0x0;this[_0x999e('0x14')]=0x0;for(var _0x538a92=0x0;_0x538a92<this[_0x999e('0xb')]['length'];_0x538a92+=0x1){if(this[_0x999e('0xb')][_0x538a92]['online']){this['loggedIn']+=0x1;}if(this[_0x999e('0xb')][_0x538a92][_0x999e('0x15')]){this[_0x999e('0x14')]+=0x1;}}this[_0x999e('0x16')]=this[_0x999e('0x13')]-this[_0x999e('0x14')];this['available']=this['available']>=0x0?this['available']:0x0;var _0x3153ce={'id':this['id'],'available':this[_0x999e('0x16')],'loggedIn':this[_0x999e('0x13')],'name':this[_0x999e('0x7')],'paused':this[_0x999e('0x14')],'waiting':this[_0x999e('0xd')]};var _0x5af4c3=md5(JSON['stringify'](_0x3153ce));if(this[_0x999e('0x0')]!==_0x5af4c3){this[_0x999e('0x0')]=_0x5af4c3;io['to'](util[_0x999e('0x17')]('sms:queue:%s',_0x3153ce[_0x999e('0x7')]))[_0x999e('0x18')](_0x999e('0x19'),_0x3153ce);}};module[_0x999e('0x1a')]=SmsQueue;
\ No newline at end of file
+var _0xcb81=['stringify','format','sms_queue:save','exports','lodash','md5','ioredis','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','updateRouting','updateRealtime','prototype','mapAgentsId','_rr','map','loggedIn','paused','length','online','smsPause','available','waiting'];(function(_0x347343,_0xe283fc){var _0x48c583=function(_0x3c912e){while(--_0x3c912e){_0x347343['push'](_0x347343['shift']());}};_0x48c583(++_0xe283fc);}(_0xcb81,0x154));var _0x1cb8=function(_0x7b5cdd,_0x8c88d8){_0x7b5cdd=_0x7b5cdd-0x0;var _0x3a29ae=_0xcb81[_0x7b5cdd];return _0x3a29ae;};'use strict';var _=require(_0x1cb8('0x0'));var md5=require(_0x1cb8('0x1'));var util=require('util');var Redis=require(_0x1cb8('0x2'));var config=require('../../../config/environment');config['redis']=_['defaults'](config[_0x1cb8('0x3')],{'host':_0x1cb8('0x4'),'port':0x18eb});var io=require(_0x1cb8('0x5'))(new Redis(config[_0x1cb8('0x3')]));function SmsQueue(_0x41b867){this['id']=_0x41b867['id']||0x0;this['name']=_0x41b867[_0x1cb8('0x6')]||'';this[_0x1cb8('0x7')]=_0x41b867['timeout']||0xa;this[_0x1cb8('0x8')]=_0x41b867[_0x1cb8('0x8')]||_0x1cb8('0x9');this['Agents']=_0x41b867[_0x1cb8('0xa')];this['mapAgentsId']={};this['waiting']=0x0;this[_0x1cb8('0x1')]='';this[_0x1cb8('0xb')]();this[_0x1cb8('0xc')]();}SmsQueue[_0x1cb8('0xd')][_0x1cb8('0xb')]=function(){var _0x32715a=this[_0x1cb8('0xe')][_0x1cb8('0xf')];this['mapAgentsId']=_[_0x1cb8('0x10')](this[_0x1cb8('0xa')],'id');this[_0x1cb8('0xe')][_0x1cb8('0xf')]=_0x32715a;};SmsQueue[_0x1cb8('0xd')]['updateRealtime']=function(){this[_0x1cb8('0x11')]=0x0;this[_0x1cb8('0x12')]=0x0;for(var _0xcb6ad1=0x0;_0xcb6ad1<this[_0x1cb8('0xa')][_0x1cb8('0x13')];_0xcb6ad1+=0x1){if(this[_0x1cb8('0xa')][_0xcb6ad1][_0x1cb8('0x14')]){this[_0x1cb8('0x11')]+=0x1;}if(this['Agents'][_0xcb6ad1][_0x1cb8('0x15')]){this['paused']+=0x1;}}this[_0x1cb8('0x16')]=this[_0x1cb8('0x11')]-this[_0x1cb8('0x12')];this[_0x1cb8('0x16')]=this[_0x1cb8('0x16')]>=0x0?this[_0x1cb8('0x16')]:0x0;var _0x3bfbcf={'id':this['id'],'available':this[_0x1cb8('0x16')],'loggedIn':this[_0x1cb8('0x11')],'name':this[_0x1cb8('0x6')],'paused':this[_0x1cb8('0x12')],'waiting':this[_0x1cb8('0x17')]};var _0x5c403c=md5(JSON[_0x1cb8('0x18')](_0x3bfbcf));if(this[_0x1cb8('0x1')]!==_0x5c403c){this[_0x1cb8('0x1')]=_0x5c403c;io['to'](util[_0x1cb8('0x19')]('sms:queue:%s',_0x3bfbcf[_0x1cb8('0x6')]))['emit'](_0x1cb8('0x1a'),_0x3bfbcf);}};module[_0x1cb8('0x1b')]=SmsQueue;
\ No newline at end of file
index 988e9e9..388fc09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1bf=['updateRealtime','prototype','updateRouting','map','_rr','loggedIn','paused','whatsappPause','available','waiting','format','whatsapp:queue:%s','exports','lodash','md5','util','ioredis','defaults','redis','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId'];(function(_0x5eb180,_0x127912){var _0xc5f79c=function(_0x28398a){while(--_0x28398a){_0x5eb180['push'](_0x5eb180['shift']());}};_0xc5f79c(++_0x127912);}(_0xc1bf,0x179));var _0xfc1b=function(_0x12ca5f,_0x223d98){_0x12ca5f=_0x12ca5f-0x0;var _0xfc3ae9=_0xc1bf[_0x12ca5f];return _0xfc3ae9;};'use strict';var _=require(_0xfc1b('0x0'));var md5=require(_0xfc1b('0x1'));var util=require(_0xfc1b('0x2'));var Redis=require(_0xfc1b('0x3'));var config=require('../../../config/environment');config['redis']=_[_0xfc1b('0x4')](config[_0xfc1b('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xfc1b('0x6'))(new Redis(config['redis']));function WhatsappQueue(_0x1f48c7){this['id']=_0x1f48c7['id']||0x0;this[_0xfc1b('0x7')]=_0x1f48c7['name']||'';this[_0xfc1b('0x8')]=_0x1f48c7[_0xfc1b('0x8')]||0xa;this[_0xfc1b('0x9')]=_0x1f48c7['strategy']||_0xfc1b('0xa');this[_0xfc1b('0xb')]=_0x1f48c7['Agents'];this[_0xfc1b('0xc')]={};this['waiting']=0x0;this[_0xfc1b('0x1')]='';this['updateRouting']();this[_0xfc1b('0xd')]();}WhatsappQueue[_0xfc1b('0xe')][_0xfc1b('0xf')]=function(){var _0x330005=this[_0xfc1b('0xc')]['_rr'];this[_0xfc1b('0xc')]=_[_0xfc1b('0x10')](this[_0xfc1b('0xb')],'id');this[_0xfc1b('0xc')][_0xfc1b('0x11')]=_0x330005;};WhatsappQueue[_0xfc1b('0xe')]['updateRealtime']=function(){this[_0xfc1b('0x12')]=0x0;this[_0xfc1b('0x13')]=0x0;for(var _0xbe4cfe=0x0;_0xbe4cfe<this['Agents']['length'];_0xbe4cfe+=0x1){if(this[_0xfc1b('0xb')][_0xbe4cfe]['online']){this[_0xfc1b('0x12')]+=0x1;}if(this['Agents'][_0xbe4cfe][_0xfc1b('0x14')]){this[_0xfc1b('0x13')]+=0x1;}}this[_0xfc1b('0x15')]=this[_0xfc1b('0x12')]-this[_0xfc1b('0x13')];this[_0xfc1b('0x15')]=this[_0xfc1b('0x15')]>=0x0?this[_0xfc1b('0x15')]:0x0;var _0x56c574={'id':this['id'],'available':this[_0xfc1b('0x15')],'loggedIn':this[_0xfc1b('0x12')],'name':this['name'],'paused':this[_0xfc1b('0x13')],'waiting':this[_0xfc1b('0x16')]};var _0x22164a=md5(JSON['stringify'](_0x56c574));if(this[_0xfc1b('0x1')]!==_0x22164a){this[_0xfc1b('0x1')]=_0x22164a;io['to'](util[_0xfc1b('0x17')](_0xfc1b('0x18'),_0x56c574[_0xfc1b('0x7')]))['emit']('whatsapp_queue:save',_0x56c574);}};module[_0xfc1b('0x19')]=WhatsappQueue;
\ No newline at end of file
+var _0x5d70=['md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','strategy','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','loggedIn','paused','length','online','whatsappPause','available','stringify','format','whatsapp:queue:%s','emit','whatsapp_queue:save','exports'];(function(_0x41027a,_0xa91c94){var _0x308b82=function(_0x2cc495){while(--_0x2cc495){_0x41027a['push'](_0x41027a['shift']());}};_0x308b82(++_0xa91c94);}(_0x5d70,0x15f));var _0x05d7=function(_0x10827d,_0x225e28){_0x10827d=_0x10827d-0x0;var _0xb66642=_0x5d70[_0x10827d];return _0xb66642;};'use strict';var _=require('lodash');var md5=require(_0x05d7('0x0'));var util=require(_0x05d7('0x1'));var Redis=require(_0x05d7('0x2'));var config=require(_0x05d7('0x3'));config[_0x05d7('0x4')]=_['defaults'](config['redis'],{'host':_0x05d7('0x5'),'port':0x18eb});var io=require(_0x05d7('0x6'))(new Redis(config[_0x05d7('0x4')]));function WhatsappQueue(_0x570893){this['id']=_0x570893['id']||0x0;this[_0x05d7('0x7')]=_0x570893[_0x05d7('0x7')]||'';this['timeout']=_0x570893['timeout']||0xa;this[_0x05d7('0x8')]=_0x570893[_0x05d7('0x8')]||'beepall';this[_0x05d7('0x9')]=_0x570893[_0x05d7('0x9')];this[_0x05d7('0xa')]={};this['waiting']=0x0;this[_0x05d7('0x0')]='';this[_0x05d7('0xb')]();this[_0x05d7('0xc')]();}WhatsappQueue[_0x05d7('0xd')][_0x05d7('0xb')]=function(){var _0x2ed469=this[_0x05d7('0xa')][_0x05d7('0xe')];this[_0x05d7('0xa')]=_['map'](this[_0x05d7('0x9')],'id');this[_0x05d7('0xa')][_0x05d7('0xe')]=_0x2ed469;};WhatsappQueue[_0x05d7('0xd')][_0x05d7('0xc')]=function(){this[_0x05d7('0xf')]=0x0;this[_0x05d7('0x10')]=0x0;for(var _0x5126ef=0x0;_0x5126ef<this['Agents'][_0x05d7('0x11')];_0x5126ef+=0x1){if(this[_0x05d7('0x9')][_0x5126ef][_0x05d7('0x12')]){this[_0x05d7('0xf')]+=0x1;}if(this[_0x05d7('0x9')][_0x5126ef][_0x05d7('0x13')]){this[_0x05d7('0x10')]+=0x1;}}this[_0x05d7('0x14')]=this[_0x05d7('0xf')]-this[_0x05d7('0x10')];this[_0x05d7('0x14')]=this[_0x05d7('0x14')]>=0x0?this[_0x05d7('0x14')]:0x0;var _0x22328d={'id':this['id'],'available':this[_0x05d7('0x14')],'loggedIn':this[_0x05d7('0xf')],'name':this[_0x05d7('0x7')],'paused':this[_0x05d7('0x10')],'waiting':this['waiting']};var _0xb7413f=md5(JSON[_0x05d7('0x15')](_0x22328d));if(this[_0x05d7('0x0')]!==_0xb7413f){this[_0x05d7('0x0')]=_0xb7413f;io['to'](util[_0x05d7('0x16')](_0x05d7('0x17'),_0x22328d[_0x05d7('0x7')]))[_0x05d7('0x18')](_0x05d7('0x19'),_0x22328d);}};module[_0x05d7('0x1a')]=WhatsappQueue;
\ No newline at end of file
index abd7726..1f3b6a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
+var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
index 2fe9d5e..1d459d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe029=['addTagsToChatInteraction','../client','update','Request','UpdateChatInteraction','updateChatInteraction','addTags','AddTagsToChatInteraction'];(function(_0x595d77,_0x23b26a){var _0x1fd7bb=function(_0x53336e){while(--_0x53336e){_0x595d77['push'](_0x595d77['shift']());}};_0x1fd7bb(++_0x23b26a);}(_0xe029,0x171));var _0x9e02=function(_0x382868,_0xb5acfd){_0x382868=_0x382868-0x0;var _0x43e191=_0xe029[_0x382868];return _0x43e191;};'use strict';var client=require(_0x9e02('0x0'));exports[_0x9e02('0x1')]=function(_0x412163,_0x26e2c7){return client[_0x9e02('0x2')](_0x9e02('0x3'),{'body':_0x26e2c7,'options':{'where':{'id':_0x412163}},'log':_0x9e02('0x4')});};exports[_0x9e02('0x5')]=function(_0x3eb7c6,_0xdbf087){return client['Request'](_0x9e02('0x6'),{'body':_0xdbf087,'options':{'where':{'id':_0x3eb7c6}},'log':_0x9e02('0x7')});};
\ No newline at end of file
+var _0xc93c=['../client','Request','UpdateChatInteraction','addTags','AddTagsToChatInteraction'];(function(_0x34cfa7,_0x111aed){var _0x2c65b1=function(_0x141211){while(--_0x141211){_0x34cfa7['push'](_0x34cfa7['shift']());}};_0x2c65b1(++_0x111aed);}(_0xc93c,0xbe));var _0xcc93=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0xc93c[_0x51020b];return _0x371e47;};'use strict';var client=require(_0xcc93('0x0'));exports['update']=function(_0xd71183,_0x558000){return client[_0xcc93('0x1')](_0xcc93('0x2'),{'body':_0x558000,'options':{'where':{'id':_0xd71183}},'log':'updateChatInteraction'});};exports[_0xcc93('0x3')]=function(_0xd022db,_0x1e1c0b){return client[_0xcc93('0x1')](_0xcc93('0x4'),{'body':_0x1e1c0b,'options':{'where':{'id':_0xd022db}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 0d79264..2dcbc6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8b6=['Request','CreateChatMessage','createChatMessage','../client','create'];(function(_0x55ed7a,_0x34eb0e){var _0x120754=function(_0x1529e1){while(--_0x1529e1){_0x55ed7a['push'](_0x55ed7a['shift']());}};_0x120754(++_0x34eb0e);}(_0xf8b6,0x1f2));var _0x6f8b=function(_0x1da1ac,_0x314a42){_0x1da1ac=_0x1da1ac-0x0;var _0x105a8a=_0xf8b6[_0x1da1ac];return _0x105a8a;};'use strict';var client=require(_0x6f8b('0x0'));exports[_0x6f8b('0x1')]=function(_0x1bb1f2){return client[_0x6f8b('0x2')](_0x6f8b('0x3'),{'body':_0x1bb1f2,'log':_0x6f8b('0x4')});};
\ No newline at end of file
+var _0x5251=['create','Request','CreateChatMessage','createChatMessage','../client'];(function(_0xe1cbf5,_0x3a4367){var _0x4e6613=function(_0x321a06){while(--_0x321a06){_0xe1cbf5['push'](_0xe1cbf5['shift']());}};_0x4e6613(++_0x3a4367);}(_0x5251,0x167));var _0x1525=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x5251[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0x1525('0x0'));exports[_0x1525('0x1')]=function(_0x2fa299){return client[_0x1525('0x2')](_0x1525('0x3'),{'body':_0x2fa299,'log':_0x1525('0x4')});};
\ No newline at end of file
index 4ff22a7..d83e252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60c2=['Agents','online','chatPause','getChatQueues','Request','GetChatQueue','name','timeout','strategy','User'];(function(_0x3ad59e,_0x4b7ef8){var _0x33dc74=function(_0x515fe9){while(--_0x515fe9){_0x3ad59e['push'](_0x3ad59e['shift']());}};_0x33dc74(++_0x4b7ef8);}(_0x60c2,0x8f));var _0x260c=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x60c2[_0x502c7d];return _0x30b7ed;};'use strict';var client=require('../client');exports[_0x260c('0x0')]=function(){return function(){return client[_0x260c('0x1')](_0x260c('0x2'),{'options':{'raw':![],'attributes':['id',_0x260c('0x3'),_0x260c('0x4'),_0x260c('0x5')],'include':[{'model':_0x260c('0x6'),'as':_0x260c('0x7'),'attributes':['id',_0x260c('0x3'),_0x260c('0x8'),_0x260c('0x9')]}]},'log':_0x260c('0x0')});};};
\ No newline at end of file
+var _0x2427=['timeout','User','Agents','name','chatPause','../client','getChatQueues','GetChatQueue'];(function(_0x2d8392,_0x5eb217){var _0xb28b91=function(_0x413603){while(--_0x413603){_0x2d8392['push'](_0x2d8392['shift']());}};_0xb28b91(++_0x5eb217);}(_0x2427,0x165));var _0x7242=function(_0x577afd,_0x2185e5){_0x577afd=_0x577afd-0x0;var _0x2834d4=_0x2427[_0x577afd];return _0x2834d4;};'use strict';var client=require(_0x7242('0x0'));exports[_0x7242('0x1')]=function(){return function(){return client['Request'](_0x7242('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x7242('0x3'),'strategy'],'include':[{'model':_0x7242('0x4'),'as':_0x7242('0x5'),'attributes':['id',_0x7242('0x6'),'online',_0x7242('0x7')]}]},'log':'getChatQueues'});};};
\ No newline at end of file
index ce84e29..8f6afe1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7119=['Request','CreateChatQueueReport','update','UpdateChatQueueReport','DESC','create'];(function(_0x4eb6ec,_0x7f2520){var _0x58881b=function(_0x4f375f){while(--_0x4f375f){_0x4eb6ec['push'](_0x4eb6ec['shift']());}};_0x58881b(++_0x7f2520);}(_0x7119,0x1c7));var _0x9711=function(_0x19f9e6,_0x4f59a6){_0x19f9e6=_0x19f9e6-0x0;var _0x45c862=_0x7119[_0x19f9e6];return _0x45c862;};'use strict';var client=require('../client');exports[_0x9711('0x0')]=function(_0x529e10){return client[_0x9711('0x1')]('CreateChatQueueReport',{'body':_0x529e10,'log':_0x9711('0x2')});};exports[_0x9711('0x3')]=function(_0x36cd4d,_0x2de7dd){return client['Request'](_0x9711('0x4'),{'body':_0x2de7dd,'options':{'where':{'uniqueid':_0x36cd4d},'order':[['id',_0x9711('0x5')]],'limit':0x1},'log':_0x9711('0x4')});};
\ No newline at end of file
+var _0xa4ba=['DESC','create','Request','CreateChatQueueReport','update','UpdateChatQueueReport'];(function(_0x1106f5,_0x22b9cb){var _0xc65a80=function(_0x5c5352){while(--_0x5c5352){_0x1106f5['push'](_0x1106f5['shift']());}};_0xc65a80(++_0x22b9cb);}(_0xa4ba,0x1b7));var _0xaa4b=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xa4ba[_0x8c43de];return _0xa6591b;};'use strict';var client=require('../client');exports[_0xaa4b('0x0')]=function(_0x10152e){return client[_0xaa4b('0x1')](_0xaa4b('0x2'),{'body':_0x10152e,'log':'CreateChatQueueReport'});};exports[_0xaa4b('0x3')]=function(_0x5e7bce,_0x54f0ce){return client[_0xaa4b('0x1')](_0xaa4b('0x4'),{'body':_0x54f0ce,'options':{'where':{'uniqueid':_0x5e7bce},'order':[['id',_0xaa4b('0x5')]],'limit':0x1},'log':_0xaa4b('0x4')});};
\ No newline at end of file
index 270ba55..ee14477 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0x7a54,0x106));var _0x47a5=function(_0x2ef9c5,_0x5704ba){_0x2ef9c5=_0x2ef9c5-0x0;var _0x2fcfbc=_0x7a54[_0x2ef9c5];return _0x2fcfbc;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
+var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0xe822a1,_0x263eb3){var _0x9183e4=function(_0x39cb75){while(--_0x39cb75){_0xe822a1['push'](_0xe822a1['shift']());}};_0x9183e4(++_0x263eb3);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
index 658cf29..61f285c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3f3=['createFaxMessage','create','CreateFaxMessage'];(function(_0x17d176,_0x45cb46){var _0x360f47=function(_0xec9f6d){while(--_0xec9f6d){_0x17d176['push'](_0x17d176['shift']());}};_0x360f47(++_0x45cb46);}(_0xa3f3,0x1d5));var _0x3a3f=function(_0x5f55c8,_0x2b6f47){_0x5f55c8=_0x5f55c8-0x0;var _0x489bc3=_0xa3f3[_0x5f55c8];return _0x489bc3;};'use strict';var client=require('../client');exports[_0x3a3f('0x0')]=function(_0x587b02){return client['Request'](_0x3a3f('0x1'),{'body':_0x587b02,'log':_0x3a3f('0x2')});};
\ No newline at end of file
+var _0x6028=['Request','CreateFaxMessage','createFaxMessage','../client','create'];(function(_0x2986a9,_0x2fd2c8){var _0x20e361=function(_0x58171a){while(--_0x58171a){_0x2986a9['push'](_0x2986a9['shift']());}};_0x20e361(++_0x2fd2c8);}(_0x6028,0x13e));var _0x8602=function(_0x36b77c,_0x51725f){_0x36b77c=_0x36b77c-0x0;var _0x435a59=_0x6028[_0x36b77c];return _0x435a59;};'use strict';var client=require(_0x8602('0x0'));exports[_0x8602('0x1')]=function(_0x2e9be7){return client[_0x8602('0x2')](_0x8602('0x3'),{'body':_0x2e9be7,'log':_0x8602('0x4')});};
\ No newline at end of file
index 88e5a1a..fc27099 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f99=['../client','Request','name','timeout','User','Agents','online','faxPause','getFaxQueues'];(function(_0x2c151e,_0x3f4b4d){var _0x10a2e8=function(_0x1f2624){while(--_0x1f2624){_0x2c151e['push'](_0x2c151e['shift']());}};_0x10a2e8(++_0x3f4b4d);}(_0x1f99,0x117));var _0x91f9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1f99[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x91f9('0x0'));exports['getFaxQueues']=function(){return function(){return client[_0x91f9('0x1')]('GetFaxQueue',{'options':{'raw':![],'attributes':['id',_0x91f9('0x2'),_0x91f9('0x3'),'strategy'],'include':[{'model':_0x91f9('0x4'),'as':_0x91f9('0x5'),'attributes':['id',_0x91f9('0x2'),_0x91f9('0x6'),_0x91f9('0x7')]}]},'log':_0x91f9('0x8')});};};
\ No newline at end of file
+var _0x5989=['name','timeout','User','Agents','faxPause','getFaxQueues','Request','GetFaxQueue'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x5989,0x1dd));var _0x9598=function(_0x3f6aa2,_0x3f49d2){_0x3f6aa2=_0x3f6aa2-0x0;var _0x5b05bc=_0x5989[_0x3f6aa2];return _0x5b05bc;};'use strict';var client=require('../client');exports[_0x9598('0x0')]=function(){return function(){return client[_0x9598('0x1')](_0x9598('0x2'),{'options':{'raw':![],'attributes':['id',_0x9598('0x3'),_0x9598('0x4'),'strategy'],'include':[{'model':_0x9598('0x5'),'as':_0x9598('0x6'),'attributes':['id',_0x9598('0x3'),'online',_0x9598('0x7')]}]},'log':'getFaxQueues'});};};
\ No newline at end of file
index c85add7..3786b2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd391=['Request','UpdateFaxQueueReport','DESC','../client','CreateFaxQueueReport','update'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xd391,0xe1));var _0x1d39=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xd391[_0x5d6456];return _0x4d66c1;};'use strict';var client=require(_0x1d39('0x0'));exports['create']=function(_0x54fc8a){return client['Request'](_0x1d39('0x1'),{'body':_0x54fc8a,'log':'CreateFaxQueueReport'});};exports[_0x1d39('0x2')]=function(_0xe730d3,_0x469fa7){return client[_0x1d39('0x3')](_0x1d39('0x4'),{'body':_0x469fa7,'options':{'where':{'uniqueid':_0xe730d3},'order':[['id',_0x1d39('0x5')]],'limit':0x1},'log':_0x1d39('0x4')});};
\ No newline at end of file
+var _0x1aaa=['Request','update','DESC','UpdateFaxQueueReport','../client'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x1aaa,0xc2));var _0xa1aa=function(_0x3f3f40,_0x4c71f4){_0x3f3f40=_0x3f3f40-0x0;var _0x403b7a=_0x1aaa[_0x3f3f40];return _0x403b7a;};'use strict';var client=require(_0xa1aa('0x0'));exports['create']=function(_0x353134){return client[_0xa1aa('0x1')]('CreateFaxQueueReport',{'body':_0x353134,'log':'CreateFaxQueueReport'});};exports[_0xa1aa('0x2')]=function(_0x2f4372,_0x2edbde){return client['Request']('UpdateFaxQueueReport',{'body':_0x2edbde,'options':{'where':{'uniqueid':_0x2f4372},'order':[['id',_0xa1aa('0x3')]],'limit':0x1},'log':_0xa1aa('0x4')});};
\ No newline at end of file
index 705f3ff..53447d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87a3=['name','interval','../client','getIntervals','Request','GetInterval'];(function(_0x3614b0,_0x775ad){var _0x1ccc1c=function(_0x41114a){while(--_0x41114a){_0x3614b0['push'](_0x3614b0['shift']());}};_0x1ccc1c(++_0x775ad);}(_0x87a3,0x1dc));var _0x387a=function(_0x22f8ab,_0x15d8ff){_0x22f8ab=_0x22f8ab-0x0;var _0x2a70e5=_0x87a3[_0x22f8ab];return _0x2a70e5;};'use strict';var client=require(_0x387a('0x0'));exports[_0x387a('0x1')]=function(){return function(){return client[_0x387a('0x2')](_0x387a('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x387a('0x4')],'include':[{'model':'Interval','as':'Intervals','attributes':['id','name',_0x387a('0x5')]}]},'log':'getIntervals'});};};
\ No newline at end of file
+var _0xf7fd=['getIntervals','Request','name','interval','../client'];(function(_0x3e4815,_0x35e6cf){var _0x3db8db=function(_0x5ec1a0){while(--_0x5ec1a0){_0x3e4815['push'](_0x3e4815['shift']());}};_0x3db8db(++_0x35e6cf);}(_0xf7fd,0x1d5));var _0xdf7f=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0xf7fd[_0x580576];return _0x3f55a0;};'use strict';var client=require(_0xdf7f('0x0'));exports[_0xdf7f('0x1')]=function(){return function(){return client[_0xdf7f('0x2')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xdf7f('0x3')],'include':[{'model':'Interval','as':'Intervals','attributes':['id',_0xdf7f('0x3'),_0xdf7f('0x4')]}]},'log':_0xdf7f('0x1')});};};
\ No newline at end of file
index 995fc40..d00ea65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5464=['update','Request','updateMailInteraction','AddTagsToMailInteraction','../client'];(function(_0x40051c,_0x2f9925){var _0x32a4f9=function(_0x5471cc){while(--_0x5471cc){_0x40051c['push'](_0x40051c['shift']());}};_0x32a4f9(++_0x2f9925);}(_0x5464,0x15d));var _0x4546=function(_0x4734cb,_0x399d2f){_0x4734cb=_0x4734cb-0x0;var _0x2d9c10=_0x5464[_0x4734cb];return _0x2d9c10;};'use strict';var client=require(_0x4546('0x0'));exports[_0x4546('0x1')]=function(_0x159e14,_0x4f33fd){return client[_0x4546('0x2')]('UpdateMailInteraction',{'body':_0x4f33fd,'options':{'where':{'id':_0x159e14}},'log':_0x4546('0x3')});};exports['addTags']=function(_0x320c4d,_0x396a1d){return client[_0x4546('0x2')](_0x4546('0x4'),{'body':_0x396a1d,'options':{'where':{'id':_0x320c4d}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0xd117=['AddTagsToMailInteraction','addTagsToChatInteraction','../client','update','Request','UpdateMailInteraction','updateMailInteraction','addTags'];(function(_0x3eef05,_0x4502ed){var _0x3f348a=function(_0x14ee18){while(--_0x14ee18){_0x3eef05['push'](_0x3eef05['shift']());}};_0x3f348a(++_0x4502ed);}(_0xd117,0x182));var _0x7d11=function(_0x35fb56,_0x5dadff){_0x35fb56=_0x35fb56-0x0;var _0x2fd52c=_0xd117[_0x35fb56];return _0x2fd52c;};'use strict';var client=require(_0x7d11('0x0'));exports[_0x7d11('0x1')]=function(_0x2737ce,_0x45ee65){return client[_0x7d11('0x2')](_0x7d11('0x3'),{'body':_0x45ee65,'options':{'where':{'id':_0x2737ce}},'log':_0x7d11('0x4')});};exports[_0x7d11('0x5')]=function(_0x3c07be,_0x31fcb0){return client[_0x7d11('0x2')](_0x7d11('0x6'),{'body':_0x31fcb0,'options':{'where':{'id':_0x3c07be}},'log':_0x7d11('0x7')});};
\ No newline at end of file
index 44836e8..2a87c04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e32=['create','Request','createMailMessage'];(function(_0xc2d4a3,_0x60cfbd){var _0x3e5740=function(_0x501c31){while(--_0x501c31){_0xc2d4a3['push'](_0xc2d4a3['shift']());}};_0x3e5740(++_0x60cfbd);}(_0x8e32,0x186));var _0x28e3=function(_0x31f29c,_0x300853){_0x31f29c=_0x31f29c-0x0;var _0x1bb741=_0x8e32[_0x31f29c];return _0x1bb741;};'use strict';var client=require('../client');exports[_0x28e3('0x0')]=function(_0x332f6d){return client[_0x28e3('0x1')]('CreateMailMessage',{'body':_0x332f6d,'log':_0x28e3('0x2')});};
\ No newline at end of file
+var _0xecf0=['../client','create','Request','CreateMailMessage','createMailMessage'];(function(_0x493c5b,_0x4523de){var _0x3e487d=function(_0x3c4c48){while(--_0x3c4c48){_0x493c5b['push'](_0x493c5b['shift']());}};_0x3e487d(++_0x4523de);}(_0xecf0,0x131));var _0x0ecf=function(_0x2fbf0b,_0x26b03b){_0x2fbf0b=_0x2fbf0b-0x0;var _0x2096a6=_0xecf0[_0x2fbf0b];return _0x2096a6;};'use strict';var client=require(_0x0ecf('0x0'));exports[_0x0ecf('0x1')]=function(_0x481cb9){return client[_0x0ecf('0x2')](_0x0ecf('0x3'),{'body':_0x481cb9,'log':_0x0ecf('0x4')});};
\ No newline at end of file
index 3c9d4c3..564fbf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22f8=['Request','GetMailQueue','name','strategy','User','Agents','online','mailPause','../client','getMailQueues'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x22f8,0xa8));var _0x822f=function(_0x417b1a,_0x3cfce5){_0x417b1a=_0x417b1a-0x0;var _0x1e41af=_0x22f8[_0x417b1a];return _0x1e41af;};'use strict';var client=require(_0x822f('0x0'));exports[_0x822f('0x1')]=function(){return function(){return client[_0x822f('0x2')](_0x822f('0x3'),{'options':{'raw':![],'attributes':['id',_0x822f('0x4'),'timeout',_0x822f('0x5')],'include':[{'model':_0x822f('0x6'),'as':_0x822f('0x7'),'attributes':['id','name',_0x822f('0x8'),_0x822f('0x9')]}]},'log':_0x822f('0x1')});};};
\ No newline at end of file
+var _0x0eb6=['../client','getMailQueues','name','timeout','User','Agents'];(function(_0x466f2e,_0x5e2a7f){var _0x22dfbb=function(_0x308bbf){while(--_0x308bbf){_0x466f2e['push'](_0x466f2e['shift']());}};_0x22dfbb(++_0x5e2a7f);}(_0x0eb6,0x132));var _0x60eb=function(_0x341e0f,_0x4a09d0){_0x341e0f=_0x341e0f-0x0;var _0x59555a=_0x0eb6[_0x341e0f];return _0x59555a;};'use strict';var client=require(_0x60eb('0x0'));exports[_0x60eb('0x1')]=function(){return function(){return client['Request']('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0x60eb('0x2'),_0x60eb('0x3'),'strategy'],'include':[{'model':_0x60eb('0x4'),'as':_0x60eb('0x5'),'attributes':['id',_0x60eb('0x2'),'online','mailPause']}]},'log':_0x60eb('0x1')});};};
\ No newline at end of file
index 4a50233..a372dd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c7c=['UpdateMailQueueReport','DESC','../client','create','Request','CreateMailQueueReport','update'];(function(_0x2a8094,_0xdeae2b){var _0x40e3ff=function(_0x4f13fc){while(--_0x4f13fc){_0x2a8094['push'](_0x2a8094['shift']());}};_0x40e3ff(++_0xdeae2b);}(_0x9c7c,0x175));var _0xc9c7=function(_0xcb9b7f,_0x4bebb1){_0xcb9b7f=_0xcb9b7f-0x0;var _0x1c1eb6=_0x9c7c[_0xcb9b7f];return _0x1c1eb6;};'use strict';var client=require(_0xc9c7('0x0'));exports[_0xc9c7('0x1')]=function(_0x343af7){return client[_0xc9c7('0x2')](_0xc9c7('0x3'),{'body':_0x343af7,'log':_0xc9c7('0x3')});};exports[_0xc9c7('0x4')]=function(_0x2be518,_0x11a0c5){return client[_0xc9c7('0x2')](_0xc9c7('0x5'),{'body':_0x11a0c5,'options':{'where':{'uniqueid':_0x2be518},'order':[['id',_0xc9c7('0x6')]],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
+var _0x1969=['create','Request','CreateMailQueueReport','DESC','UpdateMailQueueReport','../client'];(function(_0x56ffb4,_0x7c386a){var _0x14a736=function(_0x35003b){while(--_0x35003b){_0x56ffb4['push'](_0x56ffb4['shift']());}};_0x14a736(++_0x7c386a);}(_0x1969,0xa7));var _0x9196=function(_0x451e5f,_0x131932){_0x451e5f=_0x451e5f-0x0;var _0x35cd25=_0x1969[_0x451e5f];return _0x35cd25;};'use strict';var client=require(_0x9196('0x0'));exports[_0x9196('0x1')]=function(_0x56b0a9){return client[_0x9196('0x2')](_0x9196('0x3'),{'body':_0x56b0a9,'log':_0x9196('0x3')});};exports['update']=function(_0x28a6f1,_0x107da8){return client[_0x9196('0x2')]('UpdateMailQueueReport',{'body':_0x107da8,'options':{'where':{'uniqueid':_0x28a6f1},'order':[['id',_0x9196('0x4')]],'limit':0x1},'log':_0x9196('0x5')});};
\ No newline at end of file
index b3b0f67..3d07062 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf99=['addTagsToChatInteraction','../client','update','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','Request','AddTagsToOpenchannelInteraction'];(function(_0xb70c7d,_0x388e41){var _0x9bd611=function(_0xf6ccc0){while(--_0xf6ccc0){_0xb70c7d['push'](_0xb70c7d['shift']());}};_0x9bd611(++_0x388e41);}(_0xdf99,0x159));var _0x9df9=function(_0x97cc12,_0x54d583){_0x97cc12=_0x97cc12-0x0;var _0x5a25d7=_0xdf99[_0x97cc12];return _0x5a25d7;};'use strict';var client=require(_0x9df9('0x0'));exports[_0x9df9('0x1')]=function(_0x35d117,_0xb2cb3d){return client['Request'](_0x9df9('0x2'),{'body':_0xb2cb3d,'options':{'where':{'id':_0x35d117}},'log':_0x9df9('0x3')});};exports[_0x9df9('0x4')]=function(_0x49d741,_0x38a7e0){return client[_0x9df9('0x5')](_0x9df9('0x6'),{'body':_0x38a7e0,'options':{'where':{'id':_0x49d741}},'log':_0x9df9('0x7')});};
\ No newline at end of file
+var _0xe938=['updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update','Request','UpdateOpenchannelInteraction'];(function(_0x1d0dda,_0x389b51){var _0x4b718f=function(_0x3a5082){while(--_0x3a5082){_0x1d0dda['push'](_0x1d0dda['shift']());}};_0x4b718f(++_0x389b51);}(_0xe938,0xa4));var _0x8e93=function(_0x322ff3,_0x4c91bc){_0x322ff3=_0x322ff3-0x0;var _0x3e6830=_0xe938[_0x322ff3];return _0x3e6830;};'use strict';var client=require(_0x8e93('0x0'));exports[_0x8e93('0x1')]=function(_0x19b9d3,_0x23412f){return client[_0x8e93('0x2')](_0x8e93('0x3'),{'body':_0x23412f,'options':{'where':{'id':_0x19b9d3}},'log':_0x8e93('0x4')});};exports[_0x8e93('0x5')]=function(_0x202db4,_0x9e3d49){return client['Request'](_0x8e93('0x6'),{'body':_0x9e3d49,'options':{'where':{'id':_0x202db4}},'log':_0x8e93('0x7')});};
\ No newline at end of file
index 0fab8e6..359041e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x046a=['createOpenchannelMessage','../client','create','Request'];(function(_0x78e160,_0x4790cd){var _0x1c48a0=function(_0x345e4c){while(--_0x345e4c){_0x78e160['push'](_0x78e160['shift']());}};_0x1c48a0(++_0x4790cd);}(_0x046a,0x95));var _0xa046=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0x046a[_0x3054be];return _0x3df150;};'use strict';var client=require(_0xa046('0x0'));exports[_0xa046('0x1')]=function(_0x4de7be){return client[_0xa046('0x2')]('CreateOpenchannelMessage',{'body':_0x4de7be,'log':_0xa046('0x3')});};
\ No newline at end of file
+var _0xca42=['Request','../client','create'];(function(_0x211b9c,_0x3e4a38){var _0x5be03d=function(_0x512424){while(--_0x512424){_0x211b9c['push'](_0x211b9c['shift']());}};_0x5be03d(++_0x3e4a38);}(_0xca42,0x175));var _0x2ca4=function(_0x524b61,_0x5f5593){_0x524b61=_0x524b61-0x0;var _0x5cc837=_0xca42[_0x524b61];return _0x5cc837;};'use strict';var client=require(_0x2ca4('0x0'));exports[_0x2ca4('0x1')]=function(_0x515819){return client[_0x2ca4('0x2')]('CreateOpenchannelMessage',{'body':_0x515819,'log':'createOpenchannelMessage'});};
\ No newline at end of file
index 0b0baec..cfd339a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x900e=['GetOpenchannelQueue','name','timeout','strategy','User','Agents','online','openchannelPause','../client','getOpenchannelQueues'];(function(_0x5de1bc,_0x434be1){var _0x19f4b8=function(_0x35f764){while(--_0x35f764){_0x5de1bc['push'](_0x5de1bc['shift']());}};_0x19f4b8(++_0x434be1);}(_0x900e,0x1b6));var _0xe900=function(_0x2d0d9f,_0x22c0d8){_0x2d0d9f=_0x2d0d9f-0x0;var _0x30243d=_0x900e[_0x2d0d9f];return _0x30243d;};'use strict';var client=require(_0xe900('0x0'));exports[_0xe900('0x1')]=function(){return function(){return client['Request'](_0xe900('0x2'),{'options':{'raw':![],'attributes':['id',_0xe900('0x3'),_0xe900('0x4'),_0xe900('0x5')],'include':[{'model':_0xe900('0x6'),'as':_0xe900('0x7'),'attributes':['id',_0xe900('0x3'),_0xe900('0x8'),_0xe900('0x9')]}]},'log':_0xe900('0x1')});};};
\ No newline at end of file
+var _0xa8db=['User','Agents','name','online','openchannelPause','getOpenchannelQueues','Request','GetOpenchannelQueue','timeout'];(function(_0x1ccb1d,_0x3fe677){var _0x327455=function(_0x10a6e8){while(--_0x10a6e8){_0x1ccb1d['push'](_0x1ccb1d['shift']());}};_0x327455(++_0x3fe677);}(_0xa8db,0x16d));var _0xba8d=function(_0x395bfe,_0x4db521){_0x395bfe=_0x395bfe-0x0;var _0x35c81c=_0xa8db[_0x395bfe];return _0x35c81c;};'use strict';var client=require('../client');exports[_0xba8d('0x0')]=function(){return function(){return client[_0xba8d('0x1')](_0xba8d('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xba8d('0x3'),'strategy'],'include':[{'model':_0xba8d('0x4'),'as':_0xba8d('0x5'),'attributes':['id',_0xba8d('0x6'),_0xba8d('0x7'),_0xba8d('0x8')]}]},'log':_0xba8d('0x0')});};};
\ No newline at end of file
index 15bc0d8..c2404e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13cf=['update','UpdateOpenchannelQueueReport','DESC','../client','create','CreateOpenchannelQueueReport'];(function(_0x46c083,_0x50af68){var _0x15a385=function(_0x2d48d7){while(--_0x2d48d7){_0x46c083['push'](_0x46c083['shift']());}};_0x15a385(++_0x50af68);}(_0x13cf,0x11d));var _0xf13c=function(_0x4bb66f,_0x3cd682){_0x4bb66f=_0x4bb66f-0x0;var _0xf2772f=_0x13cf[_0x4bb66f];return _0xf2772f;};'use strict';var client=require(_0xf13c('0x0'));exports[_0xf13c('0x1')]=function(_0x119950){return client['Request'](_0xf13c('0x2'),{'body':_0x119950,'log':_0xf13c('0x2')});};exports[_0xf13c('0x3')]=function(_0x1fb2f4,_0x59dc38){return client['Request'](_0xf13c('0x4'),{'body':_0x59dc38,'options':{'where':{'uniqueid':_0x1fb2f4},'order':[['id',_0xf13c('0x5')]],'limit':0x1},'log':_0xf13c('0x4')});};
\ No newline at end of file
+var _0xa239=['create','update','Request','UpdateOpenchannelQueueReport','DESC','../client'];(function(_0x53e94b,_0x10bc88){var _0x22a43f=function(_0x58c8da){while(--_0x58c8da){_0x53e94b['push'](_0x53e94b['shift']());}};_0x22a43f(++_0x10bc88);}(_0xa239,0x7d));var _0x9a23=function(_0x18dff5,_0x1907f3){_0x18dff5=_0x18dff5-0x0;var _0x53ab07=_0xa239[_0x18dff5];return _0x53ab07;};'use strict';var client=require(_0x9a23('0x0'));exports[_0x9a23('0x1')]=function(_0x5d1494){return client['Request']('CreateOpenchannelQueueReport',{'body':_0x5d1494,'log':'CreateOpenchannelQueueReport'});};exports[_0x9a23('0x2')]=function(_0x330b1b,_0x577b46){return client[_0x9a23('0x3')](_0x9a23('0x4'),{'body':_0x577b46,'options':{'where':{'uniqueid':_0x330b1b},'order':[['id',_0x9a23('0x5')]],'limit':0x1},'log':_0x9a23('0x4')});};
\ No newline at end of file
index 2a7a113..ff6b96f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56e6=['AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update','Request','UpdateSmsInteraction','addTags'];(function(_0x554047,_0x46ec41){var _0x5d11e4=function(_0x5a026e){while(--_0x5a026e){_0x554047['push'](_0x554047['shift']());}};_0x5d11e4(++_0x46ec41);}(_0x56e6,0x6b));var _0x656e=function(_0x5e6c33,_0x4f157a){_0x5e6c33=_0x5e6c33-0x0;var _0x142bc9=_0x56e6[_0x5e6c33];return _0x142bc9;};'use strict';var client=require(_0x656e('0x0'));exports[_0x656e('0x1')]=function(_0x27c324,_0x75e34c){return client[_0x656e('0x2')](_0x656e('0x3'),{'body':_0x75e34c,'options':{'where':{'id':_0x27c324}},'log':'updateSmsInteraction'});};exports[_0x656e('0x4')]=function(_0x23c947,_0xe7d540){return client[_0x656e('0x2')](_0x656e('0x5'),{'body':_0xe7d540,'options':{'where':{'id':_0x23c947}},'log':_0x656e('0x6')});};
\ No newline at end of file
+var _0x1fdc=['addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update','Request','UpdateSmsInteraction','updateSmsInteraction'];(function(_0x383627,_0x5be16e){var _0x2c16a0=function(_0x569b72){while(--_0x569b72){_0x383627['push'](_0x383627['shift']());}};_0x2c16a0(++_0x5be16e);}(_0x1fdc,0x8b));var _0xc1fd=function(_0x220f3f,_0x11c540){_0x220f3f=_0x220f3f-0x0;var _0x1f170e=_0x1fdc[_0x220f3f];return _0x1f170e;};'use strict';var client=require(_0xc1fd('0x0'));exports[_0xc1fd('0x1')]=function(_0x4b8084,_0x6a4afa){return client[_0xc1fd('0x2')](_0xc1fd('0x3'),{'body':_0x6a4afa,'options':{'where':{'id':_0x4b8084}},'log':_0xc1fd('0x4')});};exports[_0xc1fd('0x5')]=function(_0x7fe059,_0x259024){return client['Request'](_0xc1fd('0x6'),{'body':_0x259024,'options':{'where':{'id':_0x7fe059}},'log':_0xc1fd('0x7')});};
\ No newline at end of file
index ecab62a..240e6da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x109e=['createSmsMessage','../client','Request'];(function(_0x204ad4,_0x502841){var _0x50675f=function(_0x30ad49){while(--_0x30ad49){_0x204ad4['push'](_0x204ad4['shift']());}};_0x50675f(++_0x502841);}(_0x109e,0x181));var _0xe109=function(_0x4a00f8,_0xc965ad){_0x4a00f8=_0x4a00f8-0x0;var _0x473623=_0x109e[_0x4a00f8];return _0x473623;};'use strict';var client=require(_0xe109('0x0'));exports['create']=function(_0x147293){return client[_0xe109('0x1')]('CreateSmsMessage',{'body':_0x147293,'log':_0xe109('0x2')});};
\ No newline at end of file
+var _0x49a2=['CreateSmsMessage','create','Request'];(function(_0x2bdd47,_0x5c6acf){var _0x39b042=function(_0x540bf2){while(--_0x540bf2){_0x2bdd47['push'](_0x2bdd47['shift']());}};_0x39b042(++_0x5c6acf);}(_0x49a2,0x127));var _0x249a=function(_0x15b192,_0x38c235){_0x15b192=_0x15b192-0x0;var _0x396e73=_0x49a2[_0x15b192];return _0x396e73;};'use strict';var client=require('../client');exports[_0x249a('0x0')]=function(_0x205212){return client[_0x249a('0x1')](_0x249a('0x2'),{'body':_0x205212,'log':'createSmsMessage'});};
\ No newline at end of file
index 0efedba..17ff968 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['getSmsQueues','Request','GetSmsQueue','name','timeout','strategy','Agents','online','smsPause'];(function(_0x37de50,_0x27f82a){var _0x2c37dc=function(_0x325186){while(--_0x325186){_0x37de50['push'](_0x37de50['shift']());}};_0x2c37dc(++_0x27f82a);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':![],'attributes':['id',_0x3071('0x2'),_0x3071('0x3'),_0x3071('0x4')],'include':[{'model':'User','as':_0x3071('0x5'),'attributes':['id',_0x3071('0x2'),_0x3071('0x6'),_0x3071('0x7')]}]},'log':_0x3071('0x8')});};};
\ No newline at end of file
+var _0x0713=['getSmsQueues','Request','GetSmsQueue','name','timeout','strategy','Agents','online','smsPause'];(function(_0x23f3fe,_0x37a19c){var _0x1b1cb1=function(_0x1a96a7){while(--_0x1a96a7){_0x23f3fe['push'](_0x23f3fe['shift']());}};_0x1b1cb1(++_0x37a19c);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':![],'attributes':['id',_0x3071('0x2'),_0x3071('0x3'),_0x3071('0x4')],'include':[{'model':'User','as':_0x3071('0x5'),'attributes':['id',_0x3071('0x2'),_0x3071('0x6'),_0x3071('0x7')]}]},'log':_0x3071('0x8')});};};
\ No newline at end of file
index efbf8b6..97802e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC','../client'];(function(_0x99bfbe,_0x4e4134){var _0x301dd1=function(_0x4c6830){while(--_0x4c6830){_0x99bfbe['push'](_0x99bfbe['shift']());}};_0x301dd1(++_0x4e4134);}(_0x34e8,0x12c));var _0x834e=function(_0x525733,_0x231cb8){_0x525733=_0x525733-0x0;var _0x1ade39=_0x34e8[_0x525733];return _0x1ade39;};'use strict';var client=require(_0x834e('0x0'));exports[_0x834e('0x1')]=function(_0x8b339){return client[_0x834e('0x2')]('CreateSmsQueueReport',{'body':_0x8b339,'log':_0x834e('0x3')});};exports[_0x834e('0x4')]=function(_0x472111,_0x31bf20){return client[_0x834e('0x2')](_0x834e('0x5'),{'body':_0x31bf20,'options':{'where':{'uniqueid':_0x472111},'order':[['id',_0x834e('0x6')]],'limit':0x1},'log':'UpdateSmsQueueReport'});};
\ No newline at end of file
+var _0x3e74=['CreateSmsQueueReport','UpdateSmsQueueReport','DESC','../client','Request'];(function(_0x1b4bca,_0x4a1dd6){var _0x37c7bb=function(_0x35c3fb){while(--_0x35c3fb){_0x1b4bca['push'](_0x1b4bca['shift']());}};_0x37c7bb(++_0x4a1dd6);}(_0x3e74,0x175));var _0x43e7=function(_0x577780,_0x50d250){_0x577780=_0x577780-0x0;var _0x151c4b=_0x3e74[_0x577780];return _0x151c4b;};'use strict';var client=require(_0x43e7('0x0'));exports['create']=function(_0x349480){return client[_0x43e7('0x1')](_0x43e7('0x2'),{'body':_0x349480,'log':'CreateSmsQueueReport'});};exports['update']=function(_0xc58479,_0x4f9bbe){return client[_0x43e7('0x1')](_0x43e7('0x3'),{'body':_0x4f9bbe,'options':{'where':{'uniqueid':_0xc58479},'order':[['id',_0x43e7('0x4')]],'limit':0x1},'log':_0x43e7('0x3')});};
\ No newline at end of file
index f9e1aa3..f3031cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['name','pauseType','lastPauseAt','voicePause','chatPause','mailPause','smsPause','whatsappPause','openchannelPause','faxCapacity','openchannelCapacity','../client','getAgents','Request'];(function(_0x412458,_0x8db8d6){var _0x3be5f9=function(_0x599ff1){while(--_0x599ff1){_0x412458['push'](_0x412458['shift']());}};_0x3be5f9(++_0x8db8d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xa9e0[_0x24237f];return _0x48298e;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
+var _0xa9e0=['name','pauseType','lastPauseAt','voicePause','chatPause','mailPause','smsPause','whatsappPause','openchannelPause','faxCapacity','openchannelCapacity','../client','getAgents','Request'];(function(_0x3c8a42,_0x524592){var _0x3945f2=function(_0x2c0a55){while(--_0x2c0a55){_0x3c8a42['push'](_0x3c8a42['shift']());}};_0x3945f2(++_0x524592);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xa9e0[_0x5b644e];return _0x49c6bf;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
index 19665b1..9ca8d68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b0d=['addTags','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','update','Request','updateWhatsappInteraction'];(function(_0x5ce496,_0x4d3ddf){var _0xe2325c=function(_0x38a7d5){while(--_0x38a7d5){_0x5ce496['push'](_0x5ce496['shift']());}};_0xe2325c(++_0x4d3ddf);}(_0x9b0d,0xb7));var _0xd9b0=function(_0x44c3f3,_0x5ea398){_0x44c3f3=_0x44c3f3-0x0;var _0x7adcf1=_0x9b0d[_0x44c3f3];return _0x7adcf1;};'use strict';var client=require('../client');exports[_0xd9b0('0x0')]=function(_0x2f9836,_0x21e19d){return client[_0xd9b0('0x1')]('UpdateWhatsappInteraction',{'body':_0x21e19d,'options':{'where':{'id':_0x2f9836}},'log':_0xd9b0('0x2')});};exports[_0xd9b0('0x3')]=function(_0x3168e3,_0xe33596){return client['Request'](_0xd9b0('0x4'),{'body':_0xe33596,'options':{'where':{'id':_0x3168e3}},'log':_0xd9b0('0x5')});};
\ No newline at end of file
+var _0x6c45=['addTagsToWhatsappInteraction','../client','update','Request','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction'];(function(_0x389b98,_0x58b439){var _0x65b7c6=function(_0x2af015){while(--_0x2af015){_0x389b98['push'](_0x389b98['shift']());}};_0x65b7c6(++_0x58b439);}(_0x6c45,0xb1));var _0x56c4=function(_0x584819,_0x278c8c){_0x584819=_0x584819-0x0;var _0x257879=_0x6c45[_0x584819];return _0x257879;};'use strict';var client=require(_0x56c4('0x0'));exports[_0x56c4('0x1')]=function(_0x559ee6,_0x2f7ee3){return client[_0x56c4('0x2')](_0x56c4('0x3'),{'body':_0x2f7ee3,'options':{'where':{'id':_0x559ee6}},'log':_0x56c4('0x4')});};exports[_0x56c4('0x5')]=function(_0x18d229,_0x1096ce){return client[_0x56c4('0x2')](_0x56c4('0x6'),{'body':_0x1096ce,'options':{'where':{'id':_0x18d229}},'log':_0x56c4('0x7')});};
\ No newline at end of file
index 6a7ee28..7223563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x861e=['Request','CreateWhatsappMessage'];(function(_0x382445,_0x5727ac){var _0x4219cb=function(_0x25bc48){while(--_0x25bc48){_0x382445['push'](_0x382445['shift']());}};_0x4219cb(++_0x5727ac);}(_0x861e,0x1a2));var _0xe861=function(_0x5233ea,_0x263a7d){_0x5233ea=_0x5233ea-0x0;var _0x2643a6=_0x861e[_0x5233ea];return _0x2643a6;};'use strict';var client=require('../client');exports['create']=function(_0x48bf65){return client[_0xe861('0x0')](_0xe861('0x1'),{'body':_0x48bf65,'log':'createWhatsappMessage'});};
\ No newline at end of file
+var _0xd49f=['create','Request','createWhatsappMessage','../client'];(function(_0x20489d,_0x5cd989){var _0x28f019=function(_0x282a63){while(--_0x282a63){_0x20489d['push'](_0x20489d['shift']());}};_0x28f019(++_0x5cd989);}(_0xd49f,0x1af));var _0xfd49=function(_0x56ee15,_0x1effd1){_0x56ee15=_0x56ee15-0x0;var _0x94991f=_0xd49f[_0x56ee15];return _0x94991f;};'use strict';var client=require(_0xfd49('0x0'));exports[_0xfd49('0x1')]=function(_0x54e8c0){return client[_0xfd49('0x2')]('CreateWhatsappMessage',{'body':_0x54e8c0,'log':_0xfd49('0x3')});};
\ No newline at end of file
index 37fd806..a0020ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaea=['Agents','online','whatsappPause','getWhatsappQueues','../client','name','timeout','strategy','User'];(function(_0x14315f,_0x362bb7){var _0x2ef315=function(_0x15a3b8){while(--_0x15a3b8){_0x14315f['push'](_0x14315f['shift']());}};_0x2ef315(++_0x362bb7);}(_0xcaea,0xca));var _0xacae=function(_0x246a9f,_0x31b372){_0x246a9f=_0x246a9f-0x0;var _0x36a28b=_0xcaea[_0x246a9f];return _0x36a28b;};'use strict';var client=require(_0xacae('0x0'));exports['getWhatsappQueues']=function(){return function(){return client['Request']('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0xacae('0x1'),_0xacae('0x2'),_0xacae('0x3')],'include':[{'model':_0xacae('0x4'),'as':_0xacae('0x5'),'attributes':['id','name',_0xacae('0x6'),_0xacae('0x7')]}]},'log':_0xacae('0x8')});};};
\ No newline at end of file
+var _0xb2ca=['Agents','name','online','whatsappPause','../client','getWhatsappQueues','Request','GetWhatsappQueue','timeout','User'];(function(_0x29d4ed,_0x264f8e){var _0x21a4a6=function(_0x244b77){while(--_0x244b77){_0x29d4ed['push'](_0x29d4ed['shift']());}};_0x21a4a6(++_0x264f8e);}(_0xb2ca,0x162));var _0xab2c=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xb2ca[_0x13d07a];return _0x5ee0ee;};'use strict';var client=require(_0xab2c('0x0'));exports[_0xab2c('0x1')]=function(){return function(){return client[_0xab2c('0x2')](_0xab2c('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xab2c('0x4'),'strategy'],'include':[{'model':_0xab2c('0x5'),'as':_0xab2c('0x6'),'attributes':['id',_0xab2c('0x7'),_0xab2c('0x8'),_0xab2c('0x9')]}]},'log':_0xab2c('0x1')});};};
\ No newline at end of file
index b986d72..5e745ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd99a=['Request','UpdateWhatsappQueueReport','../client','create','CreateWhatsappQueueReport'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd99a,0x13d));var _0xad99=function(_0x485d74,_0x353ef7){_0x485d74=_0x485d74-0x0;var _0x3b7be6=_0xd99a[_0x485d74];return _0x3b7be6;};'use strict';var client=require(_0xad99('0x0'));exports[_0xad99('0x1')]=function(_0x292a3e){return client['Request'](_0xad99('0x2'),{'body':_0x292a3e,'log':_0xad99('0x2')});};exports['update']=function(_0x760667,_0x2e2ea5){return client[_0xad99('0x3')](_0xad99('0x4'),{'body':_0x2e2ea5,'options':{'where':{'uniqueid':_0x760667},'order':[['id','DESC']],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
+var _0xd9ce=['Request','CreateWhatsappQueueReport','UpdateWhatsappQueueReport','../client','create'];(function(_0x3ba282,_0x1dde3d){var _0x374bfd=function(_0x536bbc){while(--_0x536bbc){_0x3ba282['push'](_0x3ba282['shift']());}};_0x374bfd(++_0x1dde3d);}(_0xd9ce,0x9e));var _0xed9c=function(_0x3e94f0,_0x382afe){_0x3e94f0=_0x3e94f0-0x0;var _0x5ddbb2=_0xd9ce[_0x3e94f0];return _0x5ddbb2;};'use strict';var client=require(_0xed9c('0x0'));exports[_0xed9c('0x1')]=function(_0x4efd78){return client[_0xed9c('0x2')](_0xed9c('0x3'),{'body':_0x4efd78,'log':'CreateWhatsappQueueReport'});};exports['update']=function(_0x7d47f0,_0x52177b){return client[_0xed9c('0x2')](_0xed9c('0x4'),{'body':_0x52177b,'options':{'where':{'uniqueid':_0x7d47f0},'order':[['id','DESC']],'limit':0x1},'log':_0xed9c('0x4')});};
\ No newline at end of file
index 96bccc1..285e239 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3f2=['info','format','[%s][AGENT][NAME:%s][STATUS:%s]','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','message','join','stop','agents','name','timeout','createQueue','atimeout','channel','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','[%s][AGENT]\x20ROUTING\x20END','close','next','agent','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','../../../../config/logger','routing','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number'];(function(_0x1f84cc,_0xa1b9c6){var _0x598979=function(_0x51e55d){while(--_0x51e55d){_0x1f84cc['push'](_0x1f84cc['shift']());}};_0x598979(++_0xa1b9c6);}(_0xd3f2,0x91));var _0x2d3f=function(_0x512f8c,_0x3545c1){_0x512f8c=_0x512f8c-0x0;var _0x2099f8=_0xd3f2[_0x512f8c];return _0x2099f8;};'use strict';var schema=require(_0x2d3f('0x0'));var _=require(_0x2d3f('0x1'));var util=require(_0x2d3f('0x2'));var seqqueue=require(_0x2d3f('0x3'));var logger=require(_0x2d3f('0x4'))(_0x2d3f('0x5'));var strategy=require(_0x2d3f('0x6'));var queue=schema({'name':{'type':_0x2d3f('0x7'),'required':!![],'message':_0x2d3f('0x8')},'timeout':{'type':_0x2d3f('0x9'),'message':_0x2d3f('0xa')}});function writeLog(_0x1a0608,_0x548ffc,_0x208ed3){return logger[_0x2d3f('0xb')](util[_0x2d3f('0xc')](_0x2d3f('0xd'),_0x1a0608,_0x548ffc['name'],_0x208ed3));}function handleFindAgent(_0x42f4a6){return function(_0x13319f){return _0x13319f['name'][_0x2d3f('0xe')]()===_0x42f4a6['toLowerCase']();};}exports[_0x2d3f('0xf')]=function(_0x1e760c,_0x4c3723,_0x27abf7,_0x2114c4){return function(_0x257de4){try{var _0xa4b8eb={'name':_0x4c3723[0x0],'timeout':_0x4c3723[0x1]};var _0x1a05b3=queue['validate'](_0xa4b8eb,{'typecast':!![]});if(_0x1a05b3[_0x2d3f('0x10')]){logger[_0x2d3f('0x11')](_0x2d3f('0x12'),_0x1e760c,_['map'](_0x1a05b3,_0x2d3f('0x13'))[_0x2d3f('0x14')](',\x20'));_0x257de4[_0x2d3f('0x15')]();}else{var _0x4534f1=_['find'](_0x27abf7[_0x2d3f('0x16')],handleFindAgent(_0xa4b8eb[_0x2d3f('0x17')]));if(_0x4534f1){var _0x52b2fd=(_0xa4b8eb[_0x2d3f('0x18')]||0xa)*0x3e8;var _0x5987cd,_0x244d0b;var _0x1cc903=seqqueue[_0x2d3f('0x19')](_0x52b2fd);_0x1cc903['id']=_0x1e760c;_0x1cc903[_0x2d3f('0x1a')]=_0x52b2fd;_0x1cc903[_0x2d3f('0x1b')]=_0x2114c4[_0x2d3f('0x1b')];writeLog(_0x1e760c,_0x4534f1,util[_0x2d3f('0xc')](_0x2d3f('0x1c'),_0x52b2fd));_0x27abf7[_0x2d3f('0x1d')][_0x1e760c]['on'](_0x2d3f('0x1e'),function(){logger[_0x2d3f('0xb')](_0x2d3f('0x1f'),_0x1e760c);clearTimeout(_0x244d0b);_0x244d0b=undefined;_0x1cc903['close']();if(_0x27abf7['rules'][_0x1e760c]){delete _0x27abf7[_0x2d3f('0x1d')][_0x1e760c];}_0x257de4[_0x2d3f('0x15')]();});_0x27abf7[_0x2d3f('0x1d')][_0x1e760c]['on']('complete',function(){if(_0x27abf7['rules'][_0x1e760c]){delete _0x27abf7['rules'][_0x1e760c];}});_0x244d0b=setTimeout(function(){logger['info'](_0x2d3f('0x20'),_0x1e760c);clearTimeout(_0x244d0b);_0x1cc903[_0x2d3f('0x21')]();_0x257de4[_0x2d3f('0x22')]();},_0x52b2fd);strategy[_0x2d3f('0x23')](_0x1cc903,_0x4534f1,_0x27abf7,_0x2114c4);}else{logger[_0x2d3f('0x11')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x1e760c,_0xa4b8eb[_0x2d3f('0x17')]);_0x257de4[_0x2d3f('0x15')]();}}}catch(_0x282c63){console[_0x2d3f('0x24')](_0x282c63);logger[_0x2d3f('0x11')](_0x2d3f('0x25'),_0x1e760c,_0x282c63[_0x2d3f('0x26')]);_0x257de4[_0x2d3f('0x15')]();}};};
\ No newline at end of file
+var _0x6fce=['find','agents','timeout','createQueue','atimeout','channel','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','[%s][AGENT]\x20ROUTING\x20END','next','error','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','../../../../config/logger','routing','./strategy','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','map','message','stop'];(function(_0x5eca70,_0x44e240){var _0x1f1dd9=function(_0x55e2cc){while(--_0x55e2cc){_0x5eca70['push'](_0x5eca70['shift']());}};_0x1f1dd9(++_0x44e240);}(_0x6fce,0x1e7));var _0xe6fc=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x6fce[_0x321bb2];return _0x9c12ed;};'use strict';var schema=require(_0xe6fc('0x0'));var _=require(_0xe6fc('0x1'));var util=require(_0xe6fc('0x2'));var seqqueue=require(_0xe6fc('0x3'));var logger=require(_0xe6fc('0x4'))(_0xe6fc('0x5'));var strategy=require(_0xe6fc('0x6'));var queue=schema({'name':{'type':'string','required':!![],'message':_0xe6fc('0x7')},'timeout':{'type':_0xe6fc('0x8'),'message':_0xe6fc('0x9')}});function writeLog(_0x5441d7,_0x5be23e,_0x25f912){return logger[_0xe6fc('0xa')](util[_0xe6fc('0xb')](_0xe6fc('0xc'),_0x5441d7,_0x5be23e[_0xe6fc('0xd')],_0x25f912));}function handleFindAgent(_0x15ca53){return function(_0x2c7d12){return _0x2c7d12[_0xe6fc('0xd')][_0xe6fc('0xe')]()===_0x15ca53[_0xe6fc('0xe')]();};}exports[_0xe6fc('0xf')]=function(_0x22d091,_0x40f81f,_0x128014,_0x563dd8){return function(_0x376a18){try{var _0x16b0d6={'name':_0x40f81f[0x0],'timeout':_0x40f81f[0x1]};var _0x5c8eed=queue[_0xe6fc('0x0')](_0x16b0d6,{'typecast':!![]});if(_0x5c8eed[_0xe6fc('0x10')]){logger['error']('[%s][AGENT]\x20%s',_0x22d091,_[_0xe6fc('0x11')](_0x5c8eed,_0xe6fc('0x12'))['join'](',\x20'));_0x376a18[_0xe6fc('0x13')]();}else{var _0x25f1eb=_[_0xe6fc('0x14')](_0x128014[_0xe6fc('0x15')],handleFindAgent(_0x16b0d6['name']));if(_0x25f1eb){var _0x57c0df=(_0x16b0d6[_0xe6fc('0x16')]||0xa)*0x3e8;var _0x248583,_0x24610f;var _0x450855=seqqueue[_0xe6fc('0x17')](_0x57c0df);_0x450855['id']=_0x22d091;_0x450855[_0xe6fc('0x18')]=_0x57c0df;_0x450855[_0xe6fc('0x19')]=_0x563dd8[_0xe6fc('0x19')];writeLog(_0x22d091,_0x25f1eb,util[_0xe6fc('0xb')](_0xe6fc('0x1a'),_0x57c0df));_0x128014[_0xe6fc('0x1b')][_0x22d091]['on'](_0xe6fc('0x1c'),function(){logger[_0xe6fc('0xa')](_0xe6fc('0x1d'),_0x22d091);clearTimeout(_0x24610f);_0x24610f=undefined;_0x450855[_0xe6fc('0x1e')]();if(_0x128014[_0xe6fc('0x1b')][_0x22d091]){delete _0x128014[_0xe6fc('0x1b')][_0x22d091];}_0x376a18[_0xe6fc('0x13')]();});_0x128014['rules'][_0x22d091]['on'](_0xe6fc('0x1f'),function(){if(_0x128014[_0xe6fc('0x1b')][_0x22d091]){delete _0x128014[_0xe6fc('0x1b')][_0x22d091];}});_0x24610f=setTimeout(function(){logger[_0xe6fc('0xa')](_0xe6fc('0x20'),_0x22d091);clearTimeout(_0x24610f);_0x450855[_0xe6fc('0x1e')]();_0x376a18[_0xe6fc('0x21')]();},_0x57c0df);strategy['agent'](_0x450855,_0x25f1eb,_0x128014,_0x563dd8);}else{logger[_0xe6fc('0x22')](_0xe6fc('0x23'),_0x22d091,_0x16b0d6[_0xe6fc('0xd')]);_0x376a18[_0xe6fc('0x13')]();}}}catch(_0x3e42c2){console[_0xe6fc('0x24')](_0x3e42c2);logger[_0xe6fc('0x22')](_0xe6fc('0x25'),_0x22d091,_0x3e42c2[_0xe6fc('0x26')]);_0x376a18[_0xe6fc('0x13')]();}};};
\ No newline at end of file
index 7c17dd1..5ccd490 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16a7=['moment','aws-sdk','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','contact','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','phone','ChatWebsiteId','upperFirst','AccountId','account','created','isEmpty','Message','create','then','[%s][AMAZONLEX]\x20%s','body','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','$LATEST','toString','postText','message','next','amazonlex','providerResponse','dialogState','Failed','catch','lodash'];(function(_0x5ca89d,_0x246d45){var _0x42c24f=function(_0x11c324){while(--_0x11c324){_0x5ca89d['push'](_0x5ca89d['shift']());}};_0x42c24f(++_0x246d45);}(_0x16a7,0xbf));var _0x716a=function(_0x7b93f4,_0x1117fd){_0x7b93f4=_0x7b93f4-0x0;var _0x5f7fd1=_0x16a7[_0x7b93f4];return _0x5f7fd1;};'use strict';var _=require(_0x716a('0x0'));var moment=require(_0x716a('0x1'));var AWS=require(_0x716a('0x2'));var utils=require('./utils');var logger=require(_0x716a('0x3'))(_0x716a('0x4'));var rpc={'chatMessage':require(_0x716a('0x5')),'openchannelMessage':require(_0x716a('0x6')),'mailMessage':require(_0x716a('0x7')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x716a('0x8'))};exports[_0x716a('0x9')]=function(_0x22bed7,_0x4396cd){return function(_0x286aa2){try{if(!_[_0x716a('0xa')](this[_0x716a('0xb')][_0x716a('0xc')])){logger[_0x716a('0xd')]('[%s][AMAZONLEX]\x20%s',_0x22bed7,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x286aa2['next']();}var _0x5b5b11={'ContactId':this[_0x716a('0xe')]['id'],'sentAt':moment()['format'](_0x716a('0xf')),'direction':_0x716a('0x10')};if(this['channel']===_0x716a('0x11')||this[_0x716a('0x12')]==='whatsapp'){_0x5b5b11['phone']=this[_0x716a('0xb')][_0x716a('0x13')];}var _0x21f05c=this[_0x716a('0x12')];if(_0x21f05c==='chat'){_0x5b5b11[_0x716a('0x14')]=this['account']['id'];}else{_0x5b5b11[_[_0x716a('0x15')](_0x21f05c)+_0x716a('0x16')]=this[_0x716a('0x17')]['id'];}_0x5b5b11[_['upperFirst'](_0x21f05c)+'InteractionId']=this[_0x716a('0xb')]['id'];if(this[_0x716a('0xb')][_0x716a('0x18')]){var _0x2e3f8f=_0x4396cd[0x4];if(!_[_0x716a('0x19')](_0x2e3f8f)){_0x5b5b11['body']=utils['getMustacheRender'](_0x2e3f8f,this);return rpc[_0x21f05c+_0x716a('0x1a')][_0x716a('0x1b')](_0x5b5b11)[_0x716a('0x1c')](function(_0x321bfa){logger[_0x716a('0xd')](_0x716a('0x1d'),_0x22bed7,_0x5b5b11[_0x716a('0x1e')]);})['catch'](function(_0x2612da){logger[_0x716a('0x1f')](_0x716a('0x1d'),_0x22bed7,JSON[_0x716a('0x20')](_0x2612da));})[_0x716a('0x21')](function(){logger[_0x716a('0xd')](_0x716a('0x22'),_0x22bed7);_0x286aa2[_0x716a('0x23')]();});}else{logger[_0x716a('0xd')](_0x716a('0x24'),_0x22bed7);_0x286aa2[_0x716a('0x23')]();}}else{var _0x593517=this;var _0x185801=new AWS[(_0x716a('0x25'))]({'accessKeyId':_0x4396cd[0x0],'secretAccessKey':_0x4396cd[0x1],'region':_0x4396cd[0x2]});var _0x3af7ee={'botAlias':_0x716a('0x26'),'botName':_0x4396cd[0x3],'inputText':this['message'][_0x716a('0x1e')],'userId':this['channel']+':'+this[_0x716a('0xb')]['id'][_0x716a('0x27')]()};_0x185801[_0x716a('0x28')](_0x3af7ee,function(_0x44507e,_0x232325){if(_0x44507e){logger['error'](_0x716a('0x1d'),_0x22bed7,_0x44507e[_0x716a('0x29')]);_0x286aa2[_0x716a('0x2a')]();}else if(_0x232325&&_0x232325[_0x716a('0x29')]){_0x593517['body']['amazonlex']=_0x232325;_0x5b5b11[_0x716a('0x1e')]=_0x232325[_0x716a('0x29')];_0x5b5b11['providerName']=_0x716a('0x2b');_0x5b5b11[_0x716a('0x2c')]=JSON[_0x716a('0x20')](_0x232325);return rpc[_0x21f05c+_0x716a('0x1a')][_0x716a('0x1b')](_0x5b5b11)['then'](function(_0x48c853){logger[_0x716a('0xd')](_0x716a('0x1d'),_0x22bed7,_0x5b5b11[_0x716a('0x1e')]);if(_0x232325[_0x716a('0x2d')]==_0x716a('0x2e')){_0x286aa2[_0x716a('0x2a')]();}else{_0x286aa2[_0x716a('0x23')]();}})[_0x716a('0x2f')](function(_0x468372){logger[_0x716a('0x1f')](_0x716a('0x1d'),_0x22bed7,JSON[_0x716a('0x20')](_0x468372));_0x286aa2[_0x716a('0x2a')]();});}else{_0x286aa2[_0x716a('0x2a')]();}});}}catch(_0x5b85e1){logger[_0x716a('0x1f')]('[%s][AMAZONLEX]\x20%s',_0x22bed7,JSON[_0x716a('0x20')](_0x5b85e1));_0x286aa2[_0x716a('0x23')]();}};};
\ No newline at end of file
+var _0x5906=['format','YYYY-MM-DD\x20HH:mm:ss','channel','interaction','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','getMustacheRender','create','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','LexRuntime','$LATEST','message','toString','amazonlex','providerName','then','dialogState','Failed','lodash','../../rpc/openchannelMessage','../../rpc/whatsappMessage','isNil','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact'];(function(_0x330a1d,_0x5d9713){var _0x5addc9=function(_0x454f97){while(--_0x454f97){_0x330a1d['push'](_0x330a1d['shift']());}};_0x5addc9(++_0x5d9713);}(_0x5906,0x137));var _0x6590=function(_0x308b96,_0x2d209f){_0x308b96=_0x308b96-0x0;var _0x3f08bc=_0x5906[_0x308b96];return _0x3f08bc;};'use strict';var _=require(_0x6590('0x0'));var moment=require('moment');var AWS=require('aws-sdk');var utils=require('./utils');var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x6590('0x1')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x6590('0x2'))};exports['consequence']=function(_0x38b9a5,_0x5b421f){return function(_0xe18711){try{if(!_[_0x6590('0x3')](this['interaction']['UserId'])){logger[_0x6590('0x4')](_0x6590('0x5'),_0x38b9a5,_0x6590('0x6'));return _0xe18711[_0x6590('0x7')]();}var _0x2c60b8={'ContactId':this[_0x6590('0x8')]['id'],'sentAt':moment()[_0x6590('0x9')](_0x6590('0xa')),'direction':'out'};if(this[_0x6590('0xb')]==='sms'||this[_0x6590('0xb')]==='whatsapp'){_0x2c60b8['phone']=this[_0x6590('0xc')][_0x6590('0xd')];}var _0xe87218=this[_0x6590('0xb')];if(_0xe87218===_0x6590('0xe')){_0x2c60b8[_0x6590('0xf')]=this[_0x6590('0x10')]['id'];}else{_0x2c60b8[_[_0x6590('0x11')](_0xe87218)+_0x6590('0x12')]=this[_0x6590('0x10')]['id'];}_0x2c60b8[_['upperFirst'](_0xe87218)+_0x6590('0x13')]=this['interaction']['id'];if(this[_0x6590('0xc')][_0x6590('0x14')]){var _0x487612=_0x5b421f[0x4];if(!_[_0x6590('0x15')](_0x487612)){_0x2c60b8[_0x6590('0x16')]=utils[_0x6590('0x17')](_0x487612,this);return rpc[_0xe87218+'Message'][_0x6590('0x18')](_0x2c60b8)['then'](function(_0x1f139d){logger[_0x6590('0x4')]('[%s][AMAZONLEX]\x20%s',_0x38b9a5,_0x2c60b8[_0x6590('0x16')]);})[_0x6590('0x19')](function(_0x18e056){logger[_0x6590('0x1a')](_0x6590('0x5'),_0x38b9a5,JSON[_0x6590('0x1b')](_0x18e056));})[_0x6590('0x1c')](function(){logger['info'](_0x6590('0x1d'),_0x38b9a5);_0xe18711[_0x6590('0x1e')]();});}else{logger[_0x6590('0x4')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x38b9a5);_0xe18711[_0x6590('0x1e')]();}}else{var _0x2b1ca8=this;var _0x725224=new AWS[(_0x6590('0x1f'))]({'accessKeyId':_0x5b421f[0x0],'secretAccessKey':_0x5b421f[0x1],'region':_0x5b421f[0x2]});var _0x138fca={'botAlias':_0x6590('0x20'),'botName':_0x5b421f[0x3],'inputText':this[_0x6590('0x21')][_0x6590('0x16')],'userId':this[_0x6590('0xb')]+':'+this[_0x6590('0xc')]['id'][_0x6590('0x22')]()};_0x725224['postText'](_0x138fca,function(_0x3e4a1a,_0x3014d6){if(_0x3e4a1a){logger[_0x6590('0x1a')](_0x6590('0x5'),_0x38b9a5,_0x3e4a1a[_0x6590('0x21')]);_0xe18711[_0x6590('0x7')]();}else if(_0x3014d6&&_0x3014d6[_0x6590('0x21')]){_0x2b1ca8[_0x6590('0x16')][_0x6590('0x23')]=_0x3014d6;_0x2c60b8[_0x6590('0x16')]=_0x3014d6[_0x6590('0x21')];_0x2c60b8[_0x6590('0x24')]=_0x6590('0x23');_0x2c60b8['providerResponse']=JSON[_0x6590('0x1b')](_0x3014d6);return rpc[_0xe87218+'Message'][_0x6590('0x18')](_0x2c60b8)[_0x6590('0x25')](function(_0x1cdf50){logger[_0x6590('0x4')](_0x6590('0x5'),_0x38b9a5,_0x2c60b8['body']);if(_0x3014d6[_0x6590('0x26')]==_0x6590('0x27')){_0xe18711[_0x6590('0x7')]();}else{_0xe18711[_0x6590('0x1e')]();}})[_0x6590('0x19')](function(_0x286d99){logger[_0x6590('0x1a')](_0x6590('0x5'),_0x38b9a5,JSON[_0x6590('0x1b')](_0x286d99));_0xe18711[_0x6590('0x7')]();});}else{_0xe18711[_0x6590('0x7')]();}});}}catch(_0x3e8c7a){logger[_0x6590('0x1a')](_0x6590('0x5'),_0x38b9a5,JSON['stringify'](_0x3e8c7a));_0xe18711['stop']();}};};
\ No newline at end of file
index 725f15d..ab58f18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11d4=['isNil','created','interaction','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','next','channel','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','body','getMustacheRender','message','from','mail','phone','read','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','account','upperFirst','AccountId','Message','Smtp','service','host','port','secure','authentication','auth','user','pass','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','All','sendMailMessage','create','then','stringify','catch','finally','resolve','Interaction','update','error','stop','lodash','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction'];(function(_0x1c2b6f,_0x21c35b){var _0x2da67f=function(_0x531796){while(--_0x531796){_0x1c2b6f['push'](_0x1c2b6f['shift']());}};_0x2da67f(++_0x21c35b);}(_0x11d4,0xc8));var _0x411d=function(_0x5db4eb,_0xda27c9){_0x5db4eb=_0x5db4eb-0x0;var _0x5a665d=_0x11d4[_0x5db4eb];return _0x5a665d;};'use strict';var _=require(_0x411d('0x0'));var moment=require('moment');var utils=require(_0x411d('0x1'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x411d('0x2')),'openchannelMessage':require(_0x411d('0x3')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x411d('0x4')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require(_0x411d('0x5')),'openchannelInteraction':require(_0x411d('0x6')),'mailInteraction':require(_0x411d('0x7')),'smsInteraction':require(_0x411d('0x8')),'faxInteraction':require(_0x411d('0x9')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var mailRpc=require('../../mailRpc');exports['consequence']=function(_0x59416a,_0x2bf295){return function(_0x287470){try{if(_0x2bf295[0x0]==='1'&&(_[_0x411d('0xa')](this['interaction'][_0x411d('0xb')])||!this[_0x411d('0xc')][_0x411d('0xb')])){logger[_0x411d('0xd')](_0x411d('0xe'),_0x59416a,_0x411d('0xf'));return _0x287470['next']();}if(_0x2bf295[0x0]==='2'&&this[_0x411d('0xc')][_0x411d('0x10')]){logger['info'](_0x411d('0x11'),_0x59416a,'One\x20Time\x20already\x20sent');return _0x287470[_0x411d('0x12')]();}var _0x1eb5f9=this[_0x411d('0x13')];var _0x25212c={'ContactId':this[_0x411d('0x14')]['id'],'sentAt':moment()[_0x411d('0x15')](_0x411d('0x16')),'direction':_0x411d('0x17')};if(this[_0x411d('0x13')]==='mail'){_0x25212c[_0x411d('0x18')]=utils[_0x411d('0x19')](_0x2bf295[0x2],this);}else{_0x25212c[_0x411d('0x18')]=utils[_0x411d('0x19')](_0x2bf295[0x1],this);}if(this[_0x411d('0x1a')]){_0x25212c['to']=this[_0x411d('0x1a')][_0x411d('0x1b')]||'';if(this[_0x411d('0x13')]===_0x411d('0x1c')&&_0x2bf295[0x1]==='1'){_0x25212c['cc']=this['message']['cc']||'';}_0x25212c[_0x411d('0x1b')]=this[_0x411d('0x1a')]['to']||'';_0x25212c[_0x411d('0x1d')]=this[_0x411d('0x1a')][_0x411d('0x1d')]||'';_0x25212c[_0x411d('0x1e')]=!![];if(this[_0x411d('0x1a')][_0x411d('0x1f')]){_0x25212c['subject']='';_0x25212c[_0x411d('0x1f')]+=_[_0x411d('0x20')](this['message'][_0x411d('0x1f')],_0x411d('0x21'))?'':_0x411d('0x22');_0x25212c[_0x411d('0x1f')]+=this[_0x411d('0x1a')][_0x411d('0x1f')];}}if(this['channel']===_0x411d('0x23')){_0x25212c[_0x411d('0x24')]=this[_0x411d('0x25')]['id'];}else{_0x25212c[_[_0x411d('0x26')](this[_0x411d('0x13')])+_0x411d('0x27')]=this['account']['id'];}_0x25212c[_[_0x411d('0x26')](this['channel'])+'InteractionId']=this[_0x411d('0xc')]['id'];var _0x249d41=this[_0x411d('0xc')];if(rpc[this[_0x411d('0x13')]+_0x411d('0x28')]){if(this[_0x411d('0x13')]===_0x411d('0x1c')){var _0x2340a4={'tls':{'rejectUnauthorized':![]}};if(this['account'][_0x411d('0x29')][_0x411d('0x2a')]){_0x2340a4[_0x411d('0x2a')]=this[_0x411d('0x25')][_0x411d('0x29')][_0x411d('0x2a')];}else{_0x2340a4[_0x411d('0x2b')]=this[_0x411d('0x25')][_0x411d('0x29')][_0x411d('0x2b')];_0x2340a4[_0x411d('0x2c')]=this[_0x411d('0x25')][_0x411d('0x29')][_0x411d('0x2c')];_0x2340a4[_0x411d('0x2d')]=this[_0x411d('0x25')]['Smtp'][_0x411d('0x2d')];}if(this[_0x411d('0x25')][_0x411d('0x29')][_0x411d('0x2e')]){_0x2340a4[_0x411d('0x2f')]={'user':this[_0x411d('0x25')][_0x411d('0x29')][_0x411d('0x30')],'pass':this[_0x411d('0x25')][_0x411d('0x29')][_0x411d('0x31')]};}_0x25212c['inReplyTo']=this['message'][_0x411d('0x32')];_0x25212c[_0x411d('0x33')]=_0x411d('0x34')+_[_0x411d('0x35')](_0x25212c[_0x411d('0x18')],_0x411d('0x36'),_0x411d('0x37'))+_0x411d('0x38');_0x25212c[_0x411d('0x39')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0x411d('0x3a'),'Precedence':'auto_reply'};return mailRpc[_0x411d('0x3b')](_0x2340a4,_0x25212c)['then'](function(_0x5b8a66){logger[_0x411d('0xd')]('[%s][AUTOREPLY]\x20SMTP\x20SENT',_0x59416a);_0x25212c[_0x411d('0x32')]=_0x5b8a66[_0x411d('0x1a')]['messageId'];return rpc[_0x1eb5f9+_0x411d('0x28')][_0x411d('0x3c')](_0x25212c);})[_0x411d('0x3d')](function(_0x577661){logger[_0x411d('0xd')]('[%s][AUTOREPLY]\x20%s',_0x59416a,JSON[_0x411d('0x3e')](_0x577661));})[_0x411d('0x3f')](function(_0x630b70){logger['error']('[RPC][%s][AUTOREPLY]\x20%s',_0x59416a,JSON[_0x411d('0x3e')](_0x630b70));})[_0x411d('0x40')](function(){Promise[_0x411d('0x41')]()[_0x411d('0x3d')](function(){if(_0x2bf295[0x0]!=='2'||_0x249d41[_0x411d('0x10')])return;return rpc[_0x1eb5f9+_0x411d('0x42')][_0x411d('0x43')](_0x249d41['id'],{'autoreplyExecuted':!![]})['then'](function(_0x5774d0){logger[_0x411d('0xd')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x59416a,JSON[_0x411d('0x3e')](_0x5774d0));})[_0x411d('0x3f')](function(_0x3af482){logger[_0x411d('0x44')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x59416a,JSON[_0x411d('0x3e')](_0x3af482));});})[_0x411d('0x3d')](function(){_0x287470['next']();});});}else{return rpc[this[_0x411d('0x13')]+_0x411d('0x28')][_0x411d('0x3c')](_0x25212c)['then'](function(_0x3f8df3){logger[_0x411d('0xd')](_0x411d('0xe'),_0x59416a,_0x25212c['body']);})[_0x411d('0x3f')](function(_0x473e97){logger['error'](_0x411d('0xe'),_0x59416a,JSON[_0x411d('0x3e')](_0x473e97));})[_0x411d('0x40')](function(){Promise[_0x411d('0x41')]()['then'](function(){if(_0x2bf295[0x0]!=='2'||_0x249d41[_0x411d('0x10')])return;return rpc[_0x1eb5f9+_0x411d('0x42')][_0x411d('0x43')](_0x249d41['id'],{'autoreplyExecuted':!![]})['then'](function(_0x4944de){logger[_0x411d('0xd')](_0x411d('0x11'),_0x59416a,JSON[_0x411d('0x3e')](_0x4944de));})[_0x411d('0x3f')](function(_0x29a2c5){logger[_0x411d('0x44')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x59416a,JSON[_0x411d('0x3e')](_0x29a2c5));});})[_0x411d('0x3d')](function(){_0x287470[_0x411d('0x12')]();});});}}}catch(_0xb3f813){logger[_0x411d('0x44')](_0x411d('0xe'),_0x59416a,JSON['stringify'](_0xb3f813));_0x287470[_0x411d('0x45')]();}};};
\ No newline at end of file
+var _0xa858=['../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','created','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','out','channel','getMustacheRender','message','phone','read','subject','startsWith','Re:','Re:\x20','chat','account','upperFirst','AccountId','InteractionId','Message','Smtp','service','host','port','secure','auth','pass','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div','headers','All','auto_reply','sendMailMessage','create','then','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','resolve','Interaction','update','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','finally','stop','lodash','moment','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction'];(function(_0x3ccb72,_0x54b366){var _0x9cf38a=function(_0x5bf490){while(--_0x5bf490){_0x3ccb72['push'](_0x3ccb72['shift']());}};_0x9cf38a(++_0x54b366);}(_0xa858,0x16d));var _0x8a85=function(_0x4e9e21,_0x2aac71){_0x4e9e21=_0x4e9e21-0x0;var _0x3507b7=_0xa858[_0x4e9e21];return _0x3507b7;};'use strict';var _=require(_0x8a85('0x0'));var moment=require(_0x8a85('0x1'));var utils=require(_0x8a85('0x2'));var logger=require('../../../../config/logger')(_0x8a85('0x3'));var rpc={'chatMessage':require(_0x8a85('0x4')),'openchannelMessage':require(_0x8a85('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x8a85('0x6')),'faxMessage':require(_0x8a85('0x7')),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require(_0x8a85('0x8')),'openchannelInteraction':require(_0x8a85('0x9')),'mailInteraction':require(_0x8a85('0xa')),'smsInteraction':require(_0x8a85('0xb')),'faxInteraction':require(_0x8a85('0xc')),'whatsappInteraction':require(_0x8a85('0xd'))};var mailRpc=require(_0x8a85('0xe'));exports[_0x8a85('0xf')]=function(_0x518edc,_0x2a88ee,_0x3c4220,_0x27bceb){return function(_0x33cb90){try{var _0x1a3289=this['channel'];if(_0x1a3289===_0x8a85('0x10')&&_0x27bceb[_0x8a85('0x11')][_0x8a85('0x12')]){logger[_0x8a85('0x13')](_0x8a85('0x14'),_0x518edc,_0x8a85('0x15'));return _0x33cb90[_0x8a85('0x16')]();}if(_0x2a88ee[0x0]==='1'&&(_[_0x8a85('0x17')](this[_0x8a85('0x18')][_0x8a85('0x19')])||!this[_0x8a85('0x18')][_0x8a85('0x19')])){logger[_0x8a85('0x13')](_0x8a85('0x14'),_0x518edc,'Autoreply\x20already\x20sent');return _0x33cb90[_0x8a85('0x16')]();}if(_0x2a88ee[0x0]==='2'&&this[_0x8a85('0x18')][_0x8a85('0x1a')]){logger[_0x8a85('0x13')](_0x8a85('0x1b'),_0x518edc,_0x8a85('0x1c'));return _0x33cb90[_0x8a85('0x16')]();}var _0x3735f8={'ContactId':this[_0x8a85('0x1d')]['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x8a85('0x1e')};if(this[_0x8a85('0x1f')]===_0x8a85('0x10')){_0x3735f8[_0x8a85('0x11')]=utils['getMustacheRender'](_0x2a88ee[0x2],this);}else{_0x3735f8[_0x8a85('0x11')]=utils[_0x8a85('0x20')](_0x2a88ee[0x1],this);}if(this[_0x8a85('0x21')]){_0x3735f8['to']=this[_0x8a85('0x21')]['from']||'';if(this[_0x8a85('0x1f')]===_0x8a85('0x10')&&_0x2a88ee[0x1]==='1'){_0x3735f8['cc']=this[_0x8a85('0x21')]['cc']||'';}_0x3735f8['from']=this[_0x8a85('0x21')]['to']||'';_0x3735f8[_0x8a85('0x22')]=this[_0x8a85('0x21')][_0x8a85('0x22')]||'';_0x3735f8[_0x8a85('0x23')]=!![];if(this[_0x8a85('0x21')]['subject']){_0x3735f8[_0x8a85('0x24')]='';_0x3735f8[_0x8a85('0x24')]+=_[_0x8a85('0x25')](this[_0x8a85('0x21')]['subject'],_0x8a85('0x26'))?'':_0x8a85('0x27');_0x3735f8[_0x8a85('0x24')]+=this[_0x8a85('0x21')]['subject'];}}if(this[_0x8a85('0x1f')]===_0x8a85('0x28')){_0x3735f8['ChatWebsiteId']=this[_0x8a85('0x29')]['id'];}else{_0x3735f8[_[_0x8a85('0x2a')](this[_0x8a85('0x1f')])+_0x8a85('0x2b')]=this[_0x8a85('0x29')]['id'];}_0x3735f8[_[_0x8a85('0x2a')](this[_0x8a85('0x1f')])+_0x8a85('0x2c')]=this[_0x8a85('0x18')]['id'];var _0x1abb70=this[_0x8a85('0x18')];if(rpc[this[_0x8a85('0x1f')]+_0x8a85('0x2d')]){if(this['channel']==='mail'){var _0x275e22={'tls':{'rejectUnauthorized':![]}};if(this[_0x8a85('0x29')][_0x8a85('0x2e')]['service']){_0x275e22[_0x8a85('0x2f')]=this['account'][_0x8a85('0x2e')][_0x8a85('0x2f')];}else{_0x275e22['host']=this['account'][_0x8a85('0x2e')][_0x8a85('0x30')];_0x275e22[_0x8a85('0x31')]=this['account'][_0x8a85('0x2e')][_0x8a85('0x31')];_0x275e22['secure']=this[_0x8a85('0x29')][_0x8a85('0x2e')][_0x8a85('0x32')];}if(this['account'][_0x8a85('0x2e')]['authentication']){_0x275e22[_0x8a85('0x33')]={'user':this[_0x8a85('0x29')][_0x8a85('0x2e')]['user'],'pass':this[_0x8a85('0x29')][_0x8a85('0x2e')][_0x8a85('0x34')]};}_0x3735f8[_0x8a85('0x35')]=this['message'][_0x8a85('0x36')];_0x3735f8[_0x8a85('0x37')]=_0x8a85('0x38')+_[_0x8a85('0x39')](_0x3735f8[_0x8a85('0x11')],'<div\x20id=\x22xm-mail-content\x22',_0x8a85('0x3a'))+'</div>';_0x3735f8[_0x8a85('0x3b')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0x8a85('0x3c'),'Precedence':_0x8a85('0x3d')};return mailRpc[_0x8a85('0x3e')](_0x275e22,_0x3735f8)['then'](function(_0x495957){logger[_0x8a85('0x13')]('[%s][AUTOREPLY]\x20SMTP\x20SENT',_0x518edc);_0x3735f8[_0x8a85('0x36')]=_0x495957['message'][_0x8a85('0x36')];return rpc[_0x1a3289+_0x8a85('0x2d')][_0x8a85('0x3f')](_0x3735f8);})[_0x8a85('0x40')](function(_0xbb0deb){logger[_0x8a85('0x13')](_0x8a85('0x14'),_0x518edc,JSON[_0x8a85('0x41')](_0xbb0deb));})[_0x8a85('0x42')](function(_0x1da3e0){logger[_0x8a85('0x43')](_0x8a85('0x44'),_0x518edc,JSON['stringify'](_0x1da3e0));})['finally'](function(){Promise[_0x8a85('0x45')]()[_0x8a85('0x40')](function(){if(_0x2a88ee[0x0]!=='2'||_0x1abb70['autoreplyExecuted'])return;return rpc[_0x1a3289+_0x8a85('0x46')][_0x8a85('0x47')](_0x1abb70['id'],{'autoreplyExecuted':!![]})[_0x8a85('0x40')](function(_0x4d6d21){logger[_0x8a85('0x13')](_0x8a85('0x1b'),_0x518edc,JSON[_0x8a85('0x41')](_0x4d6d21));})['catch'](function(_0x54045a){logger[_0x8a85('0x43')](_0x8a85('0x48'),_0x518edc,JSON[_0x8a85('0x41')](_0x54045a));});})['then'](function(){_0x33cb90[_0x8a85('0x16')]();});});}else{return rpc[this['channel']+_0x8a85('0x2d')][_0x8a85('0x3f')](_0x3735f8)[_0x8a85('0x40')](function(_0x1bd088){logger[_0x8a85('0x13')](_0x8a85('0x14'),_0x518edc,_0x3735f8[_0x8a85('0x11')]);})[_0x8a85('0x42')](function(_0x4fefb3){logger['error'](_0x8a85('0x14'),_0x518edc,JSON['stringify'](_0x4fefb3));})[_0x8a85('0x49')](function(){Promise[_0x8a85('0x45')]()['then'](function(){if(_0x2a88ee[0x0]!=='2'||_0x1abb70['autoreplyExecuted'])return;return rpc[_0x1a3289+_0x8a85('0x46')]['update'](_0x1abb70['id'],{'autoreplyExecuted':!![]})[_0x8a85('0x40')](function(_0x1825f1){logger['info'](_0x8a85('0x1b'),_0x518edc,JSON[_0x8a85('0x41')](_0x1825f1));})[_0x8a85('0x42')](function(_0x2828ec){logger['error'](_0x8a85('0x48'),_0x518edc,JSON['stringify'](_0x2828ec));});})[_0x8a85('0x40')](function(){_0x33cb90[_0x8a85('0x16')]();});});}}}catch(_0x1e19f1){logger[_0x8a85('0x43')](_0x8a85('0x14'),_0x518edc,JSON['stringify'](_0x1e19f1));_0x33cb90[_0x8a85('0x4a')]();}};};
\ No newline at end of file
index 33baa13..4b763fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7266=['then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','interaction','catch','error','stringify','finally','stop','[%s][CLOSE]\x20%s','moment','../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','info','channel','Interaction','update'];(function(_0x454018,_0x46e33a){var _0x24697d=function(_0x3ec647){while(--_0x3ec647){_0x454018['push'](_0x454018['shift']());}};_0x24697d(++_0x46e33a);}(_0x7266,0x179));var _0x6726=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x7266[_0x580576];return _0x3f55a0;};'use strict';var moment=require(_0x6726('0x0'));var logger=require(_0x6726('0x1'))(_0x6726('0x2'));var rpc={'chatInteraction':require(_0x6726('0x3')),'openchannelInteraction':require(_0x6726('0x4')),'smsInteraction':require(_0x6726('0x5')),'mailInteraction':require(_0x6726('0x6')),'faxInteraction':require(_0x6726('0x7')),'whatsappInteraction':require(_0x6726('0x8'))};exports[_0x6726('0x9')]=function(_0x62aa9e,_0x1be5cb,_0x51c859,_0x3c7444){return function(_0x16eff1){try{logger[_0x6726('0xa')]('[%s][CLOSE]\x20reason\x20%s',_0x62aa9e,_0x1be5cb[0x0]);var _0x19d5ac={'closed':0x1,'closedAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':'system','disposition':_0x1be5cb[0x0]};if(rpc[_0x3c7444[_0x6726('0xb')]+_0x6726('0xc')]){rpc[_0x3c7444['channel']+_0x6726('0xc')][_0x6726('0xd')](_0x3c7444['interaction']['id'],_0x19d5ac)[_0x6726('0xe')](function(_0x339314){logger['info'](_0x6726('0xf'),_0x62aa9e,_0x3c7444[_0x6726('0x10')]['id']);})[_0x6726('0x11')](function(_0x517522){logger[_0x6726('0x12')]('[%s][CLOSE]\x20%s',_0x62aa9e,JSON[_0x6726('0x13')](_0x517522));})[_0x6726('0x14')](function(){_0x16eff1[_0x6726('0x15')]();});}}catch(_0x495080){logger[_0x6726('0x12')](_0x6726('0x16'),_0x62aa9e,JSON['stringify'](_0x495080));_0x16eff1[_0x6726('0x15')]();}};};
\ No newline at end of file
+var _0x2e42=['../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','interaction','catch','error','stop','[%s][CLOSE]\x20%s','stringify','moment','../../../../config/logger','routing'];(function(_0x2c8de4,_0x48ecd7){var _0xa5f1d5=function(_0x521b2a){while(--_0x521b2a){_0x2c8de4['push'](_0x2c8de4['shift']());}};_0xa5f1d5(++_0x48ecd7);}(_0x2e42,0x1d8));var _0x22e4=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0x2e42[_0x24f31b];return _0x488401;};'use strict';var moment=require(_0x22e4('0x0'));var logger=require(_0x22e4('0x1'))(_0x22e4('0x2'));var rpc={'chatInteraction':require(_0x22e4('0x3')),'openchannelInteraction':require(_0x22e4('0x4')),'smsInteraction':require(_0x22e4('0x5')),'mailInteraction':require(_0x22e4('0x6')),'faxInteraction':require(_0x22e4('0x7')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0x22e4('0x8')]=function(_0x1d0fb3,_0x2524d6,_0x2b06e1,_0x126ede){return function(_0x45b928){try{logger[_0x22e4('0x9')](_0x22e4('0xa'),_0x1d0fb3,_0x2524d6[0x0]);var _0x44f103={'closed':0x1,'closedAt':moment()[_0x22e4('0xb')](_0x22e4('0xc')),'closeReason':_0x22e4('0xd'),'disposition':_0x2524d6[0x0]};if(rpc[_0x126ede[_0x22e4('0xe')]+_0x22e4('0xf')]){rpc[_0x126ede[_0x22e4('0xe')]+_0x22e4('0xf')][_0x22e4('0x10')](_0x126ede['interaction']['id'],_0x44f103)[_0x22e4('0x11')](function(_0x1def87){logger[_0x22e4('0x9')](_0x22e4('0x12'),_0x1d0fb3,_0x126ede[_0x22e4('0x13')]['id']);})[_0x22e4('0x14')](function(_0x3354ce){logger[_0x22e4('0x15')]('[%s][CLOSE]\x20%s',_0x1d0fb3,JSON['stringify'](_0x3354ce));})['finally'](function(){_0x45b928[_0x22e4('0x16')]();});}}catch(_0x45e1fc){logger[_0x22e4('0x15')](_0x22e4('0x17'),_0x1d0fb3,JSON[_0x22e4('0x18')](_0x45e1fc));_0x45b928[_0x22e4('0x16')]();}};};
\ No newline at end of file
index 4ebc93a..0c2bb55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18af=['result','fulfillment','speech','dialogflow','providerResponse','create','catch','lodash','apiai-promise','./utils','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','chat','account','AccountId','InteractionId','created','body','getMustacheRender','then','error','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','textRequest','message'];(function(_0x10d976,_0x376295){var _0x57e020=function(_0x1f20da){while(--_0x1f20da){_0x10d976['push'](_0x10d976['shift']());}};_0x57e020(++_0x376295);}(_0x18af,0x8b));var _0xf18a=function(_0x4af49a,_0x3b7a03){_0x4af49a=_0x4af49a-0x0;var _0x33aed8=_0x18af[_0x4af49a];return _0x33aed8;};'use strict';var _=require(_0xf18a('0x0'));var moment=require('moment');var apiai=require(_0xf18a('0x1'));var md5=require('md5');var utils=require(_0xf18a('0x2'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xf18a('0x3')),'mailMessage':require(_0xf18a('0x4')),'smsMessage':require(_0xf18a('0x5')),'faxMessage':require(_0xf18a('0x6')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0xf18a('0x7')]=function(_0x2d5955,_0x3fc64b){return function(_0x4dc297){try{if(!_[_0xf18a('0x8')](this[_0xf18a('0x9')][_0xf18a('0xa')])){logger[_0xf18a('0xb')](_0xf18a('0xc'),_0x2d5955,_0xf18a('0xd'));return _0x4dc297[_0xf18a('0xe')]();}var _0x20247d={'ContactId':this[_0xf18a('0xf')]['id'],'sentAt':moment()[_0xf18a('0x10')](_0xf18a('0x11')),'direction':_0xf18a('0x12')};if(this[_0xf18a('0x13')]==='sms'||this[_0xf18a('0x13')]===_0xf18a('0x14')){_0x20247d[_0xf18a('0x15')]=this[_0xf18a('0x9')][_0xf18a('0x15')];}var _0x4e9ee9=this[_0xf18a('0x13')];if(_0x4e9ee9===_0xf18a('0x16')){_0x20247d['ChatWebsiteId']=this[_0xf18a('0x17')]['id'];}else{_0x20247d[_['upperFirst'](_0x4e9ee9)+_0xf18a('0x18')]=this[_0xf18a('0x17')]['id'];}_0x20247d[_['upperFirst'](_0x4e9ee9)+_0xf18a('0x19')]=this['interaction']['id'];if(this[_0xf18a('0x9')][_0xf18a('0x1a')]){var _0x52fcfa=_0x3fc64b[0x2];if(!_['isEmpty'](_0x52fcfa)){_0x20247d[_0xf18a('0x1b')]=utils[_0xf18a('0x1c')](_0x52fcfa,this);return rpc[_0x4e9ee9+'Message']['create'](_0x20247d)[_0xf18a('0x1d')](function(_0x1aff7c){logger[_0xf18a('0xb')]('[%s][DIALOGFLOW]\x20%s',_0x2d5955,_0x20247d[_0xf18a('0x1b')]);})['catch'](function(_0x305b74){logger[_0xf18a('0x1e')]('[%s][DIALOGFLOW]\x20%s',_0x2d5955,JSON[_0xf18a('0x1f')](_0x305b74));})[_0xf18a('0x20')](function(){logger['info'](_0xf18a('0x21'),_0x2d5955);_0x4dc297[_0xf18a('0x22')]();});}else{logger[_0xf18a('0xb')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x2d5955);_0x4dc297['stop']();}}else{var _0x43a50a=this;var _0x4438ed=apiai(_0x3fc64b[0x0],{'language':_0x3fc64b[0x1]||'en'});return _0x4438ed[_0xf18a('0x23')](this[_0xf18a('0x24')][_0xf18a('0x1b')],{'sessionId':md5(this[_0xf18a('0x9')]['id'])})[_0xf18a('0x1d')](function(_0x304bd4){_0x43a50a[_0xf18a('0x1b')]['dialogflow']=_0x304bd4;_0x20247d[_0xf18a('0x1b')]=_0x304bd4[_0xf18a('0x25')][_0xf18a('0x26')][_0xf18a('0x27')];_0x20247d['providerName']=_0xf18a('0x28');_0x20247d[_0xf18a('0x29')]=JSON[_0xf18a('0x1f')](_0x304bd4);return rpc[_0x4e9ee9+'Message'][_0xf18a('0x2a')](_0x20247d)[_0xf18a('0x1d')](function(_0xf7e6c2){logger[_0xf18a('0xb')]('[%s][DIALOGFLOW]\x20%s',_0x2d5955,_0x20247d[_0xf18a('0x1b')]);if(_0x304bd4[_0xf18a('0x25')]['metadata']['endConversation']){_0x4dc297[_0xf18a('0xe')]();}else{_0x4dc297[_0xf18a('0x22')]();}})[_0xf18a('0x2b')](function(_0xdc0fe9){logger['error'](_0xf18a('0xc'),_0x2d5955,JSON[_0xf18a('0x1f')](_0xdc0fe9));_0x4dc297[_0xf18a('0xe')]();});})[_0xf18a('0x2b')](function(_0x3a9b89){logger[_0xf18a('0x1e')]('[%s][DIALOGFLOW]\x20%s',_0x2d5955,_0x3a9b89['message']);_0x4dc297[_0xf18a('0xe')]();});}}catch(_0x3ea07a){logger[_0xf18a('0x1e')]('[%s][DIALOGFLOW]\x20%s',_0x2d5955,JSON['stringify'](_0x3ea07a));_0x4dc297[_0xf18a('0x22')]();}};};
\ No newline at end of file
+var _0xf13b=['[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','body','dialogflow','result','fulfillment','speech','providerName','providerResponse','stringify','metadata','endConversation','next','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','format','out','channel','whatsapp','phone','interaction','chat','ChatWebsiteId','account','upperFirst','InteractionId','created','isEmpty','getMustacheRender','Message','create','then','catch','error'];(function(_0x3f3c4e,_0x13eb40){var _0x42df4c=function(_0x1f824e){while(--_0x1f824e){_0x3f3c4e['push'](_0x3f3c4e['shift']());}};_0x42df4c(++_0x13eb40);}(_0xf13b,0x1f0));var _0xbf13=function(_0x30230f,_0x332195){_0x30230f=_0x30230f-0x0;var _0x399920=_0xf13b[_0x30230f];return _0x399920;};'use strict';var _=require(_0xbf13('0x0'));var moment=require('moment');var apiai=require('apiai-promise');var md5=require('md5');var utils=require(_0xbf13('0x1'));var logger=require(_0xbf13('0x2'))(_0xbf13('0x3'));var rpc={'chatMessage':require(_0xbf13('0x4')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xbf13('0x5')),'faxMessage':require(_0xbf13('0x6')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0xbf13('0x7')]=function(_0x2316ad,_0x4e5a2c){return function(_0x462933){try{if(!_[_0xbf13('0x8')](this['interaction'][_0xbf13('0x9')])){logger[_0xbf13('0xa')](_0xbf13('0xb'),_0x2316ad,_0xbf13('0xc'));return _0x462933['next']();}var _0x14424d={'ContactId':this['contact']['id'],'sentAt':moment()[_0xbf13('0xd')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xbf13('0xe')};if(this[_0xbf13('0xf')]==='sms'||this[_0xbf13('0xf')]===_0xbf13('0x10')){_0x14424d[_0xbf13('0x11')]=this[_0xbf13('0x12')]['phone'];}var _0x2d4866=this[_0xbf13('0xf')];if(_0x2d4866===_0xbf13('0x13')){_0x14424d[_0xbf13('0x14')]=this['account']['id'];}else{_0x14424d[_['upperFirst'](_0x2d4866)+'AccountId']=this[_0xbf13('0x15')]['id'];}_0x14424d[_[_0xbf13('0x16')](_0x2d4866)+_0xbf13('0x17')]=this[_0xbf13('0x12')]['id'];if(this[_0xbf13('0x12')][_0xbf13('0x18')]){var _0xef3d83=_0x4e5a2c[0x2];if(!_[_0xbf13('0x19')](_0xef3d83)){_0x14424d['body']=utils[_0xbf13('0x1a')](_0xef3d83,this);return rpc[_0x2d4866+_0xbf13('0x1b')][_0xbf13('0x1c')](_0x14424d)[_0xbf13('0x1d')](function(_0x428202){logger[_0xbf13('0xa')]('[%s][DIALOGFLOW]\x20%s',_0x2316ad,_0x14424d['body']);})[_0xbf13('0x1e')](function(_0x23ae11){logger[_0xbf13('0x1f')](_0xbf13('0xb'),_0x2316ad,JSON['stringify'](_0x23ae11));})['finally'](function(){logger[_0xbf13('0xa')](_0xbf13('0x20'),_0x2316ad);_0x462933[_0xbf13('0x21')]();});}else{logger['info'](_0xbf13('0x22'),_0x2316ad);_0x462933['stop']();}}else{var _0x4de695=this;var _0x31b0b9=apiai(_0x4e5a2c[0x0],{'language':_0x4e5a2c[0x1]||'en'});return _0x31b0b9[_0xbf13('0x23')](this[_0xbf13('0x24')][_0xbf13('0x25')],{'sessionId':md5(this[_0xbf13('0x12')]['id'])})[_0xbf13('0x1d')](function(_0x3eb399){_0x4de695[_0xbf13('0x25')][_0xbf13('0x26')]=_0x3eb399;_0x14424d['body']=_0x3eb399[_0xbf13('0x27')][_0xbf13('0x28')][_0xbf13('0x29')];_0x14424d[_0xbf13('0x2a')]=_0xbf13('0x26');_0x14424d[_0xbf13('0x2b')]=JSON[_0xbf13('0x2c')](_0x3eb399);return rpc[_0x2d4866+'Message'][_0xbf13('0x1c')](_0x14424d)[_0xbf13('0x1d')](function(_0x2ec35c){logger[_0xbf13('0xa')](_0xbf13('0xb'),_0x2316ad,_0x14424d[_0xbf13('0x25')]);if(_0x3eb399['result'][_0xbf13('0x2d')][_0xbf13('0x2e')]){_0x462933['next']();}else{_0x462933['stop']();}})[_0xbf13('0x1e')](function(_0x3f087f){logger[_0xbf13('0x1f')]('[%s][DIALOGFLOW]\x20%s',_0x2316ad,JSON[_0xbf13('0x2c')](_0x3f087f));_0x462933[_0xbf13('0x2f')]();});})[_0xbf13('0x1e')](function(_0x22dbed){logger[_0xbf13('0x1f')](_0xbf13('0xb'),_0x2316ad,_0x22dbed[_0xbf13('0x24')]);_0x462933['next']();});}}catch(_0x5c8677){logger[_0xbf13('0x1f')](_0xbf13('0xb'),_0x2316ad,JSON['stringify'](_0x5c8677));_0x462933['stop']();}};};
\ No newline at end of file
index db33e4f..a18461e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc688=['Message','create','then','info','body','catch','[%s][DIALOGFLOWV2]\x20%s','stringify','consequence','isNil','interaction','UserId','next','format','out','channel','sms','phone','ChatWebsiteId','account','upperFirst','AccountId','created','isEmpty','getMustacheRender','error','finally','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','message','detectIntent','length','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','isFallback','DIALOGFLOWV2_LANGUAGECODE','queryText','dialogflowV2','providerResponse','fulfillmentText','push','all','lodash','dialogflow','moment','bluebird','routing','./utils','../../rpc/openchannelMessage','../../rpc/smsMessage','clone'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0xc688,0xc0));var _0x8c68=function(_0xa026d8,_0x18ef26){_0xa026d8=_0xa026d8-0x0;var _0x1a8bbf=_0xc688[_0xa026d8];return _0x1a8bbf;};'use strict';var _=require(_0x8c68('0x0'));var dialogflow=require(_0x8c68('0x1'));var md5=require('md5');var moment=require(_0x8c68('0x2'));var Promise=require(_0x8c68('0x3'));var logger=require('../../../../config/logger')(_0x8c68('0x4'));var utils=require(_0x8c68('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x8c68('0x6')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x8c68('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x529400,_0x17f5a3,_0x5e62be,_0x496f4f){return new Promise(function(_0x26f8dd,_0xaec76d){var _0x5776a4=_[_0x8c68('0x8')](_0x5e62be);_0x5776a4['body']=_0x496f4f;return rpc[_0x17f5a3+_0x8c68('0x9')][_0x8c68('0xa')](_0x5776a4)[_0x8c68('0xb')](function(){logger[_0x8c68('0xc')]('[%s][DIALOGFLOWV2]\x20%s',_0x529400,_0x5776a4[_0x8c68('0xd')]);_0x26f8dd();})[_0x8c68('0xe')](function(_0x43a3f2){logger['error'](_0x8c68('0xf'),_0x529400,JSON[_0x8c68('0x10')](_0x43a3f2));_0xaec76d(_0x43a3f2);});});}exports[_0x8c68('0x11')]=function(_0x2530e5,_0xda1135){return function(_0xc3b3c1){try{if(!_[_0x8c68('0x12')](this[_0x8c68('0x13')][_0x8c68('0x14')])){logger['info'](_0x8c68('0xf'),_0x2530e5,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0xc3b3c1[_0x8c68('0x15')]();}var _0x5cf64d={'ContactId':this['contact']['id'],'sentAt':moment()[_0x8c68('0x16')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x8c68('0x17')};if(this[_0x8c68('0x18')]===_0x8c68('0x19')||this['channel']==='whatsapp'){_0x5cf64d[_0x8c68('0x1a')]=this['interaction'][_0x8c68('0x1a')];}var _0x7f3209=this[_0x8c68('0x18')];if(_0x7f3209==='chat'){_0x5cf64d[_0x8c68('0x1b')]=this[_0x8c68('0x1c')]['id'];}else{_0x5cf64d[_[_0x8c68('0x1d')](_0x7f3209)+_0x8c68('0x1e')]=this[_0x8c68('0x1c')]['id'];}_0x5cf64d[_[_0x8c68('0x1d')](_0x7f3209)+'InteractionId']=this[_0x8c68('0x13')]['id'];if(this[_0x8c68('0x13')][_0x8c68('0x1f')]){var _0x4d4d3a=_0xda1135[0x4];if(!_[_0x8c68('0x20')](_0x4d4d3a)){_0x5cf64d[_0x8c68('0xd')]=utils[_0x8c68('0x21')](_0x4d4d3a,this);return rpc[_0x7f3209+_0x8c68('0x9')][_0x8c68('0xa')](_0x5cf64d)['then'](function(_0x360deb){logger[_0x8c68('0xc')]('[%s][DIALOGFLOWV2]\x20%s',_0x2530e5,_0x5cf64d[_0x8c68('0xd')]);})[_0x8c68('0xe')](function(_0x568eda){logger[_0x8c68('0x22')](_0x8c68('0xf'),_0x2530e5,JSON['stringify'](_0x568eda));})[_0x8c68('0x23')](function(){logger['info']('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x2530e5);_0xc3b3c1[_0x8c68('0x24')]();});}else{logger[_0x8c68('0xc')](_0x8c68('0x25'),_0x2530e5);_0xc3b3c1[_0x8c68('0x24')]();}}else{var _0x5f2ffb=this;var _0x19b88a=_0xda1135[0x2][_0x8c68('0x26')](/\\n/g,'\x0a');var _0x3b4b92={'credentials':{'private_key':_0x19b88a,'client_email':_0xda1135[0x1]}};var _0x5e6d5d=new dialogflow[(_0x8c68('0x27'))](_0x3b4b92);var _0x35613a=_0x5e6d5d[_0x8c68('0x28')](_0xda1135[0x0],md5(_0x5f2ffb['interaction']['id']));var _0x2465de={'session':_0x35613a,'queryInput':{'text':{'text':_0x5f2ffb[_0x8c68('0x29')][_0x8c68('0xd')],'languageCode':_0xda1135[0x3]||'en'}}};return _0x5e6d5d[_0x8c68('0x2a')](_0x2465de)[_0x8c68('0xb')](function(_0x246218){if(_0x246218&&_0x246218[_0x8c68('0x2b')]){_0x5f2ffb[_0x8c68('0xd')]['dialogflowV2']=_0x246218;var _0x541b17=_0x246218[0x0];var _0x17fe7b=_0x541b17[_0x8c68('0x2c')][_0x8c68('0x2d')]&&_0x541b17[_0x8c68('0x2c')][_0x8c68('0x2d')]['fields']?_0x541b17[_0x8c68('0x2c')][_0x8c68('0x2d')][_0x8c68('0x2e')][_0x8c68('0x2f')][_0x8c68('0x30')]:![];_0x5f2ffb[_0x8c68('0xd')][_0x8c68('0x31')]=_0x541b17['queryResult'][_0x8c68('0x32')];_0x5f2ffb[_0x8c68('0xd')][_0x8c68('0x33')]=_0x541b17[_0x8c68('0x2c')][_0x8c68('0x34')];_0x5f2ffb['body'][_0x8c68('0x35')]=_0x541b17[_0x8c68('0x2c')][_0x8c68('0x2d')]&&_0x541b17[_0x8c68('0x2c')][_0x8c68('0x2d')]['fields']?_0x541b17[_0x8c68('0x2c')][_0x8c68('0x2d')][_0x8c68('0x2e')][_0x8c68('0x2f')][_0x8c68('0x30')]:![];_0x5f2ffb[_0x8c68('0xd')][_0x8c68('0x36')]=_0x541b17[_0x8c68('0x2c')][_0x8c68('0x37')][_0x8c68('0x38')];_0x5f2ffb[_0x8c68('0xd')][_0x8c68('0x39')]=_0x541b17['queryResult'][_0x8c68('0x37')][_0x8c68('0x3a')];_0x5f2ffb[_0x8c68('0xd')]['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x541b17[_0x8c68('0x2c')][_0x8c68('0x37')][_0x8c68('0x3b')];_0x5f2ffb[_0x8c68('0xd')][_0x8c68('0x3c')]=_0x541b17[_0x8c68('0x2c')]['languageCode'];_0x5f2ffb[_0x8c68('0xd')]['DIALOGFLOWV2_QUERYTEXT']=_0x541b17[_0x8c68('0x2c')][_0x8c68('0x3d')];_0x5f2ffb[_0x8c68('0xd')]['DIALOGFLOWV2_SCORE']=_0x541b17['queryResult']['intentDetectionConfidence'];_0x5cf64d['providerName']=_0x8c68('0x3e');_0x5cf64d[_0x8c68('0x3f')]=JSON['stringify'](_0x246218);var _0x17da39=[];for(var _0x12a253=0x0;_0x12a253<_0x246218[_0x8c68('0x2b')];_0x12a253++){var _0x1a6720=_0x246218[_0x12a253];if(_0x1a6720&&_0x1a6720[_0x8c68('0x2c')]&&_0x1a6720[_0x8c68('0x2c')][_0x8c68('0x40')]){_0x17da39[_0x8c68('0x41')](createMessage(_0x2530e5,_0x7f3209,_0x5cf64d,_0x1a6720[_0x8c68('0x2c')]['fulfillmentText']));}}return Promise[_0x8c68('0x42')](_0x17da39)[_0x8c68('0xb')](function(){if(_0x17fe7b){_0xc3b3c1[_0x8c68('0x15')]();}else{_0xc3b3c1[_0x8c68('0x24')]();}})[_0x8c68('0xe')](function(_0x5185d1){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x2530e5,JSON[_0x8c68('0x10')](_0x5185d1));_0xc3b3c1[_0x8c68('0x15')]();});}})['catch'](function(_0x39187c){logger[_0x8c68('0x22')](_0x8c68('0xf'),_0x2530e5,_0x39187c['message']);_0xc3b3c1[_0x8c68('0x15')]();});}}catch(_0x6b438e){logger[_0x8c68('0x22')](_0x8c68('0xf'),_0x2530e5,JSON['stringify'](_0x6b438e));_0xc3b3c1['stop']();}};};
\ No newline at end of file
+var _0x13bb=['account','created','getMustacheRender','create','then','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','SessionsClient','detectIntent','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','DIALOGFLOWV2_ACTION','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','boolValue','DIALOGFLOWV2_INTENTNAME','intent','displayName','DIALOGFLOWV2_LANGUAGECODE','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','stringify','length','fulfillmentText','push','message','dialogflow','md5','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/smsMessage','../../rpc/whatsappMessage','clone','Message','info','body','catch','error','[%s][DIALOGFLOWV2]\x20%s','consequence','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','interaction','phone','chat','ChatWebsiteId','upperFirst','AccountId'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x13bb,0x19b));var _0xb13b=function(_0x54e4fd,_0x4059d4){_0x54e4fd=_0x54e4fd-0x0;var _0x50cbb2=_0x13bb[_0x54e4fd];return _0x50cbb2;};'use strict';var _=require('lodash');var dialogflow=require(_0xb13b('0x0'));var md5=require(_0xb13b('0x1'));var moment=require(_0xb13b('0x2'));var Promise=require(_0xb13b('0x3'));var logger=require(_0xb13b('0x4'))(_0xb13b('0x5'));var utils=require(_0xb13b('0x6'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xb13b('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xb13b('0x8'))};function createMessage(_0x27eca3,_0x44a830,_0xc4f467,_0x62107d){return new Promise(function(_0x22d913,_0x242fcb){var _0x5e3065=_[_0xb13b('0x9')](_0xc4f467);_0x5e3065['body']=_0x62107d;return rpc[_0x44a830+_0xb13b('0xa')]['create'](_0x5e3065)['then'](function(){logger[_0xb13b('0xb')]('[%s][DIALOGFLOWV2]\x20%s',_0x27eca3,_0x5e3065[_0xb13b('0xc')]);_0x22d913();})[_0xb13b('0xd')](function(_0x3d4aaa){logger[_0xb13b('0xe')](_0xb13b('0xf'),_0x27eca3,JSON['stringify'](_0x3d4aaa));_0x242fcb(_0x3d4aaa);});});}exports[_0xb13b('0x10')]=function(_0x4ee8e4,_0x43e8d7){return function(_0x59e604){try{if(!_['isNil'](this['interaction']['UserId'])){logger[_0xb13b('0xb')]('[%s][DIALOGFLOWV2]\x20%s',_0x4ee8e4,_0xb13b('0x11'));return _0x59e604[_0xb13b('0x12')]();}var _0x2adb37={'ContactId':this['contact']['id'],'sentAt':moment()[_0xb13b('0x13')](_0xb13b('0x14')),'direction':_0xb13b('0x15')};if(this[_0xb13b('0x16')]==='sms'||this[_0xb13b('0x16')]===_0xb13b('0x17')){_0x2adb37['phone']=this[_0xb13b('0x18')][_0xb13b('0x19')];}var _0xe3ebfa=this[_0xb13b('0x16')];if(_0xe3ebfa===_0xb13b('0x1a')){_0x2adb37[_0xb13b('0x1b')]=this['account']['id'];}else{_0x2adb37[_[_0xb13b('0x1c')](_0xe3ebfa)+_0xb13b('0x1d')]=this[_0xb13b('0x1e')]['id'];}_0x2adb37[_[_0xb13b('0x1c')](_0xe3ebfa)+'InteractionId']=this[_0xb13b('0x18')]['id'];if(this['interaction'][_0xb13b('0x1f')]){var _0x459b1a=_0x43e8d7[0x4];if(!_['isEmpty'](_0x459b1a)){_0x2adb37[_0xb13b('0xc')]=utils[_0xb13b('0x20')](_0x459b1a,this);return rpc[_0xe3ebfa+'Message'][_0xb13b('0x21')](_0x2adb37)[_0xb13b('0x22')](function(_0x5b73aa){logger[_0xb13b('0xb')](_0xb13b('0xf'),_0x4ee8e4,_0x2adb37['body']);})[_0xb13b('0xd')](function(_0x5d1d21){logger['error'](_0xb13b('0xf'),_0x4ee8e4,JSON['stringify'](_0x5d1d21));})['finally'](function(){logger[_0xb13b('0xb')](_0xb13b('0x23'),_0x4ee8e4);_0x59e604[_0xb13b('0x24')]();});}else{logger[_0xb13b('0xb')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x4ee8e4);_0x59e604['stop']();}}else{var _0x178605=this;var _0x2c2144=_0x43e8d7[0x2]['replace'](/\\n/g,'\x0a');var _0x269863={'credentials':{'private_key':_0x2c2144,'client_email':_0x43e8d7[0x1]}};var _0x21105f=new dialogflow[(_0xb13b('0x25'))](_0x269863);var _0x57045f=_0x21105f['sessionPath'](_0x43e8d7[0x0],md5(_0x178605[_0xb13b('0x18')]['id']));var _0x5e0490={'session':_0x57045f,'queryInput':{'text':{'text':_0x178605['message'][_0xb13b('0xc')],'languageCode':_0x43e8d7[0x3]||'en'}}};return _0x21105f[_0xb13b('0x26')](_0x5e0490)[_0xb13b('0x22')](function(_0x38d8f7){if(_0x38d8f7&&_0x38d8f7['length']){_0x178605['body'][_0xb13b('0x27')]=_0x38d8f7;var _0x19730e=_0x38d8f7[0x0];var _0x577f0a=_0x19730e[_0xb13b('0x28')][_0xb13b('0x29')]&&_0x19730e[_0xb13b('0x28')][_0xb13b('0x29')]['fields']?_0x19730e[_0xb13b('0x28')]['diagnosticInfo'][_0xb13b('0x2a')][_0xb13b('0x2b')]['boolValue']:![];_0x178605['body'][_0xb13b('0x2c')]=_0x19730e[_0xb13b('0x28')]['action'];_0x178605[_0xb13b('0xc')][_0xb13b('0x2d')]=_0x19730e[_0xb13b('0x28')][_0xb13b('0x2e')];_0x178605[_0xb13b('0xc')][_0xb13b('0x2f')]=_0x19730e['queryResult'][_0xb13b('0x29')]&&_0x19730e[_0xb13b('0x28')][_0xb13b('0x29')]['fields']?_0x19730e[_0xb13b('0x28')][_0xb13b('0x29')][_0xb13b('0x2a')][_0xb13b('0x2b')][_0xb13b('0x30')]:![];_0x178605[_0xb13b('0xc')][_0xb13b('0x31')]=_0x19730e[_0xb13b('0x28')][_0xb13b('0x32')]['name'];_0x178605['body']['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x19730e[_0xb13b('0x28')]['intent'][_0xb13b('0x33')];_0x178605['body']['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x19730e[_0xb13b('0x28')][_0xb13b('0x32')]['isFallback'];_0x178605[_0xb13b('0xc')][_0xb13b('0x34')]=_0x19730e[_0xb13b('0x28')]['languageCode'];_0x178605[_0xb13b('0xc')][_0xb13b('0x35')]=_0x19730e[_0xb13b('0x28')][_0xb13b('0x36')];_0x178605[_0xb13b('0xc')][_0xb13b('0x37')]=_0x19730e[_0xb13b('0x28')][_0xb13b('0x38')];_0x2adb37[_0xb13b('0x39')]=_0xb13b('0x27');_0x2adb37['providerResponse']=JSON[_0xb13b('0x3a')](_0x38d8f7);var _0xedebdf=[];for(var _0x24f101=0x0;_0x24f101<_0x38d8f7[_0xb13b('0x3b')];_0x24f101++){var _0x595ed6=_0x38d8f7[_0x24f101];if(_0x595ed6&&_0x595ed6['queryResult']&&_0x595ed6['queryResult'][_0xb13b('0x3c')]){_0xedebdf[_0xb13b('0x3d')](createMessage(_0x4ee8e4,_0xe3ebfa,_0x2adb37,_0x595ed6['queryResult'][_0xb13b('0x3c')]));}}return Promise['all'](_0xedebdf)[_0xb13b('0x22')](function(){if(_0x577f0a){_0x59e604[_0xb13b('0x12')]();}else{_0x59e604['stop']();}})[_0xb13b('0xd')](function(_0x4433db){logger[_0xb13b('0xe')](_0xb13b('0xf'),_0x4ee8e4,JSON[_0xb13b('0x3a')](_0x4433db));_0x59e604['next']();});}})[_0xb13b('0xd')](function(_0xf2e4c0){logger[_0xb13b('0xe')](_0xb13b('0xf'),_0x4ee8e4,_0xf2e4c0[_0xb13b('0x3e')]);_0x59e604[_0xb13b('0x12')]();});}}catch(_0x4d81e9){logger[_0xb13b('0xe')]('[%s][DIALOGFLOWV2]\x20%s',_0x4ee8e4,JSON[_0xb13b('0x3a')](_0x4d81e9));_0x59e604[_0xb13b('0x24')]();}};};
\ No newline at end of file
index 3a5f403..92d63aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa01f=['routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','replace','length','error','[%s][GOTOIF]\x20%s','map','message','join','condition','priorityTrue','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','stringify','stop','validate','lodash','html-to-text','./utils','../../../../config/logger'];(function(_0xb68695,_0x1881a4){var _0x15a817=function(_0x4d04d6){while(--_0x4d04d6){_0xb68695['push'](_0xb68695['shift']());}};_0x15a817(++_0x1881a4);}(_0xa01f,0xa9));var _0xfa01=function(_0x31cb5f,_0x2df766){_0x31cb5f=_0x31cb5f-0x0;var _0x586042=_0xa01f[_0x31cb5f];return _0x586042;};'use strict';var schema=require(_0xfa01('0x0'));var _=require(_0xfa01('0x1'));var htmlToText=require(_0xfa01('0x2'));var utils=require(_0xfa01('0x3'));var logger=require(_0xfa01('0x4'))(_0xfa01('0x5'));var gotoif=schema({'condition':{'type':_0xfa01('0x6'),'required':!![],'message':_0xfa01('0x7')},'priorityTrue':{'type':_0xfa01('0x8'),'message':_0xfa01('0x9')},'priorityFalse':{'type':'number','message':_0xfa01('0xa')}});exports[_0xfa01('0xb')]=function(_0x520f17,_0x4e350a){return function(_0x19f643){try{var _0x4d7587={'condition':htmlToText['fromString'](utils['getMustacheRender'](_0x4e350a[0x0],this),{'wordwrap':![]})[_0xfa01('0xc')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x4e350a[0x1],'priorityFalse':_0x4e350a[0x2]};var _0x401413=gotoif[_0xfa01('0x0')](_0x4d7587,{'typecast':!![]});if(_0x401413[_0xfa01('0xd')]){logger[_0xfa01('0xe')](_0xfa01('0xf'),_0x520f17,_[_0xfa01('0x10')](_0x401413,_0xfa01('0x11'))[_0xfa01('0x12')](',\x20'));_0x19f643['stop']();}else{try{var _0x4d4c0e=eval('('+_0x4d7587[_0xfa01('0x13')]+')');var _0x226949=_0x4d4c0e?_0x4d7587[_0xfa01('0x14')]:_0x4d7587[_0xfa01('0x15')];logger[_0xfa01('0x16')](_0xfa01('0x17'),_0x520f17,_0x4d7587[_0xfa01('0x13')],_0x4d4c0e,_0x226949||_0xfa01('0x18'));if(_0x226949){var _0x1d62f4=_['findIndex'](_0x19f643[_0xfa01('0x19')](),{'p':_0x226949});if(_0x1d62f4>=0x0){logger[_0xfa01('0x16')](_0xfa01('0x1a'),_0x520f17,_0x226949||_0xfa01('0x18'),_0x1d62f4);_0x19f643[_0xfa01('0x18')](_0x1d62f4);}else{logger[_0xfa01('0x16')]('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x520f17,_0x226949||'next');_0x19f643['stop']();}}else{_0x19f643[_0xfa01('0x18')]();}}catch(_0x26805f){logger[_0xfa01('0xe')]('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x520f17,_0x26805f[_0xfa01('0x11')]);_0x19f643['stop']();}}}catch(_0x266f32){logger[_0xfa01('0xe')]('[%s][GOTOIF]\x20%s',_0x520f17,JSON[_0xfa01('0x1b')](_0x266f32));_0x19f643[_0xfa01('0x1c')]();}};};
\ No newline at end of file
+var _0xb21f=['next','findIndex','info','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','lodash','html-to-text','../../../../config/logger','routing','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','consequence','fromString','getMustacheRender','replace','validate','length','error','[%s][GOTOIF]\x20%s','message','join','stop','condition','priorityTrue','priorityFalse','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s'];(function(_0x4dab14,_0x164ea0){var _0xf41aa=function(_0x305d50){while(--_0x305d50){_0x4dab14['push'](_0x4dab14['shift']());}};_0xf41aa(++_0x164ea0);}(_0xb21f,0x13b));var _0xfb21=function(_0x1e03a6,_0xf0349){_0x1e03a6=_0x1e03a6-0x0;var _0x295b64=_0xb21f[_0x1e03a6];return _0x295b64;};'use strict';var schema=require('validate');var _=require(_0xfb21('0x0'));var htmlToText=require(_0xfb21('0x1'));var utils=require('./utils');var logger=require(_0xfb21('0x2'))(_0xfb21('0x3'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0xfb21('0x4')},'priorityTrue':{'type':_0xfb21('0x5'),'message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':_0xfb21('0x5'),'message':'priority\x20false\x20is\x20a\x20number'}});exports[_0xfb21('0x6')]=function(_0x3912e8,_0x3161da){return function(_0x12f008){try{var _0x193813={'condition':htmlToText[_0xfb21('0x7')](utils[_0xfb21('0x8')](_0x3161da[0x0],this),{'wordwrap':![]})[_0xfb21('0x9')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x3161da[0x1],'priorityFalse':_0x3161da[0x2]};var _0x9c3250=gotoif[_0xfb21('0xa')](_0x193813,{'typecast':!![]});if(_0x9c3250[_0xfb21('0xb')]){logger[_0xfb21('0xc')](_0xfb21('0xd'),_0x3912e8,_['map'](_0x9c3250,_0xfb21('0xe'))[_0xfb21('0xf')](',\x20'));_0x12f008[_0xfb21('0x10')]();}else{try{var _0x4f7a80=eval('('+_0x193813[_0xfb21('0x11')]+')');var _0x484777=_0x4f7a80?_0x193813[_0xfb21('0x12')]:_0x193813[_0xfb21('0x13')];logger['info'](_0xfb21('0x14'),_0x3912e8,_0x193813[_0xfb21('0x11')],_0x4f7a80,_0x484777||_0xfb21('0x15'));if(_0x484777){var _0x1d8648=_[_0xfb21('0x16')](_0x12f008['rules'](),{'p':_0x484777});if(_0x1d8648>=0x0){logger[_0xfb21('0x17')](_0xfb21('0x18'),_0x3912e8,_0x484777||'next',_0x1d8648);_0x12f008['next'](_0x1d8648);}else{logger[_0xfb21('0x17')](_0xfb21('0x19'),_0x3912e8,_0x484777||_0xfb21('0x15'));_0x12f008[_0xfb21('0x10')]();}}else{_0x12f008['next']();}}catch(_0x374040){logger[_0xfb21('0xc')](_0xfb21('0x1a'),_0x3912e8,_0x374040[_0xfb21('0xe')]);_0x12f008['stop']();}}}catch(_0x2693e8){logger[_0xfb21('0xc')](_0xfb21('0xd'),_0x3912e8,JSON[_0xfb21('0x1b')](_0x2693e8));_0x12f008[_0xfb21('0x10')]();}};};
\ No newline at end of file
index 45fe3a8..4dd3f86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaef=['[%s][GOTOP]\x20%s','stringify','validate','../../../../config/logger','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','error','map','[%s][GOTOP]\x20priority\x20%s','priority','rules','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stop'];(function(_0x401556,_0x112612){var _0x4d31da=function(_0x6e0710){while(--_0x6e0710){_0x401556['push'](_0x401556['shift']());}};_0x4d31da(++_0x112612);}(_0xbaef,0x72));var _0xfbae=function(_0x11b3f4,_0x371c17){_0x11b3f4=_0x11b3f4-0x0;var _0x47af1d=_0xbaef[_0x11b3f4];return _0x47af1d;};'use strict';var schema=require(_0xfbae('0x0'));var _=require('lodash');var logger=require(_0xfbae('0x1'))(_0xfbae('0x2'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0xfbae('0x3')}});exports[_0xfbae('0x4')]=function(_0x579373,_0x2adaee){return function(_0x25ef00){try{var _0x43fa3e={'priority':_0x2adaee[0x0]};var _0x51f87f=gotop['validate'](_0x43fa3e,{'typecast':!![]});if(_0x51f87f[_0xfbae('0x5')]){logger[_0xfbae('0x6')]('[%s][GOTOP]\x20%s',_0x579373,_[_0xfbae('0x7')](_0x51f87f,'message')['join'](',\x20'));_0x25ef00['stop']();}else{logger['info'](_0xfbae('0x8'),_0x579373,_0x43fa3e[_0xfbae('0x9')]);if(_0x43fa3e[_0xfbae('0x9')]){var _0xb31277=_['findIndex'](_0x25ef00[_0xfbae('0xa')](),{'p':_0x43fa3e['priority']});if(_0xb31277>=0x0){logger['info']('[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x579373,_0x43fa3e[_0xfbae('0x9')]||'next',_0xb31277);_0x25ef00[_0xfbae('0xb')](_0xb31277);}else{logger['info'](_0xfbae('0xc'),_0x579373,_0x43fa3e[_0xfbae('0x9')]||_0xfbae('0xb'));_0x25ef00[_0xfbae('0xd')]();}}else{_0x25ef00[_0xfbae('0xb')]();}}}catch(_0x3d4896){logger['error'](_0xfbae('0xe'),_0x579373,JSON[_0xfbae('0xf')](_0x3d4896));_0x25ef00[_0xfbae('0xd')]();}};};
\ No newline at end of file
+var _0x7c35=['findIndex','priority','info','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','[%s][GOTOP]\x20%s','stringify','validate','lodash','../../../../config/logger','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','error','message','join','stop','[%s][GOTOP]\x20priority\x20%s'];(function(_0x34bf97,_0xc60f9d){var _0x292719=function(_0x31354e){while(--_0x31354e){_0x34bf97['push'](_0x34bf97['shift']());}};_0x292719(++_0xc60f9d);}(_0x7c35,0x148));var _0x57c3=function(_0xdebd8d,_0x256f25){_0xdebd8d=_0xdebd8d-0x0;var _0x5df6ff=_0x7c35[_0xdebd8d];return _0x5df6ff;};'use strict';var schema=require(_0x57c3('0x0'));var _=require(_0x57c3('0x1'));var logger=require(_0x57c3('0x2'))(_0x57c3('0x3'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0x57c3('0x4')}});exports[_0x57c3('0x5')]=function(_0x1e7724,_0x2ced19){return function(_0x5be527){try{var _0xa7247d={'priority':_0x2ced19[0x0]};var _0x1042d9=gotop[_0x57c3('0x0')](_0xa7247d,{'typecast':!![]});if(_0x1042d9[_0x57c3('0x6')]){logger[_0x57c3('0x7')]('[%s][GOTOP]\x20%s',_0x1e7724,_['map'](_0x1042d9,_0x57c3('0x8'))[_0x57c3('0x9')](',\x20'));_0x5be527[_0x57c3('0xa')]();}else{logger['info'](_0x57c3('0xb'),_0x1e7724,_0xa7247d['priority']);if(_0xa7247d['priority']){var _0x194e59=_[_0x57c3('0xc')](_0x5be527['rules'](),{'p':_0xa7247d[_0x57c3('0xd')]});if(_0x194e59>=0x0){logger[_0x57c3('0xe')](_0x57c3('0xf'),_0x1e7724,_0xa7247d[_0x57c3('0xd')]||'next',_0x194e59);_0x5be527[_0x57c3('0x10')](_0x194e59);}else{logger['info'](_0x57c3('0x11'),_0x1e7724,_0xa7247d[_0x57c3('0xd')]||'next');_0x5be527[_0x57c3('0xa')]();}}else{_0x5be527['next']();}}}catch(_0x49df19){logger[_0x57c3('0x7')](_0x57c3('0x12'),_0x1e7724,JSON[_0x57c3('0x13')](_0x49df19));_0x5be527[_0x57c3('0xa')]();}};};
\ No newline at end of file
index 7a4066e..28d25eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b74=['next','error','stringify','stop','lodash','./utils','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','getMustacheRender','channel','chat','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','interaction','Message','create','then','info','[%s][MESSAGE]\x20%s'];(function(_0x1875c8,_0x4e5f7a){var _0x28ed91=function(_0x326695){while(--_0x326695){_0x1875c8['push'](_0x1875c8['shift']());}};_0x28ed91(++_0x4e5f7a);}(_0x6b74,0xcc));var _0x46b7=function(_0x210603,_0x4adbac){_0x210603=_0x210603-0x0;var _0x1bcb7d=_0x6b74[_0x210603];return _0x1bcb7d;};'use strict';var _=require(_0x46b7('0x0'));var utils=require(_0x46b7('0x1'));var logger=require('../../../../config/logger')(_0x46b7('0x2'));var rpc={'chatMessage':require(_0x46b7('0x3')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x46b7('0x4')),'smsMessage':require(_0x46b7('0x5')),'faxMessage':require(_0x46b7('0x6')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports['consequence']=function(_0x29b9e8,_0x3005ff){return function(_0x4df32f){try{var _0x158f8e={'body':utils[_0x46b7('0x7')](_0x3005ff[0x0],this),'ContactId':this['contact']['id']};if(this[_0x46b7('0x8')]===_0x46b7('0x9')){_0x158f8e[_0x46b7('0xa')]=this[_0x46b7('0xb')]['id'];}else{_0x158f8e[_['upperFirst'](this[_0x46b7('0x8')])+_0x46b7('0xc')]=this[_0x46b7('0xb')]['id'];}_0x158f8e[_[_0x46b7('0xd')](this[_0x46b7('0x8')])+_0x46b7('0xe')]=this[_0x46b7('0xf')]['id'];if(rpc[this[_0x46b7('0x8')]+_0x46b7('0x10')]){return rpc[this[_0x46b7('0x8')]+'Message'][_0x46b7('0x11')](_0x158f8e)[_0x46b7('0x12')](function(_0x118e3d){logger[_0x46b7('0x13')](_0x46b7('0x14'),_0x29b9e8,_0x158f8e['body']);_0x4df32f[_0x46b7('0x15')]();})['catch'](function(_0x252525){logger[_0x46b7('0x16')](_0x46b7('0x14'),_0x29b9e8,JSON[_0x46b7('0x17')](_0x252525));_0x4df32f[_0x46b7('0x18')]();});}}catch(_0x5f4430){logger[_0x46b7('0x16')](_0x46b7('0x14'),_0x29b9e8,JSON[_0x46b7('0x17')](_0x5f4430));_0x4df32f[_0x46b7('0x18')]();}};};
\ No newline at end of file
+var _0xbee0=['[%s][MESSAGE]\x20%s','next','catch','error','stop','stringify','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','chat','ChatWebsiteId','AccountId','account','InteractionId','interaction','Message','create','then'];(function(_0x2d8b45,_0x49fae9){var _0x133e82=function(_0x3fa600){while(--_0x3fa600){_0x2d8b45['push'](_0x2d8b45['shift']());}};_0x133e82(++_0x49fae9);}(_0xbee0,0xae));var _0x0bee=function(_0x3e1255,_0x2f86a6){_0x3e1255=_0x3e1255-0x0;var _0x1acd6e=_0xbee0[_0x3e1255];return _0x1acd6e;};'use strict';var _=require(_0x0bee('0x0'));var utils=require(_0x0bee('0x1'));var logger=require(_0x0bee('0x2'))(_0x0bee('0x3'));var rpc={'chatMessage':require(_0x0bee('0x4')),'openchannelMessage':require(_0x0bee('0x5')),'mailMessage':require(_0x0bee('0x6')),'smsMessage':require(_0x0bee('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x0bee('0x8'))};exports[_0x0bee('0x9')]=function(_0x4123bc,_0x465e1b){return function(_0x3644e9){try{var _0x536453={'body':utils[_0x0bee('0xa')](_0x465e1b[0x0],this),'ContactId':this[_0x0bee('0xb')]['id']};if(this[_0x0bee('0xc')]===_0x0bee('0xd')){_0x536453[_0x0bee('0xe')]=this['account']['id'];}else{_0x536453[_['upperFirst'](this[_0x0bee('0xc')])+_0x0bee('0xf')]=this[_0x0bee('0x10')]['id'];}_0x536453[_['upperFirst'](this[_0x0bee('0xc')])+_0x0bee('0x11')]=this[_0x0bee('0x12')]['id'];if(rpc[this[_0x0bee('0xc')]+_0x0bee('0x13')]){return rpc[this[_0x0bee('0xc')]+_0x0bee('0x13')][_0x0bee('0x14')](_0x536453)[_0x0bee('0x15')](function(_0x2749d2){logger['info'](_0x0bee('0x16'),_0x4123bc,_0x536453['body']);_0x3644e9[_0x0bee('0x17')]();})[_0x0bee('0x18')](function(_0x31f9d0){logger[_0x0bee('0x19')](_0x0bee('0x16'),_0x4123bc,JSON['stringify'](_0x31f9d0));_0x3644e9[_0x0bee('0x1a')]();});}}catch(_0x3b12e9){logger[_0x0bee('0x19')](_0x0bee('0x16'),_0x4123bc,JSON[_0x0bee('0x1b')](_0x3b12e9));_0x3644e9[_0x0bee('0x1a')]();}};};
\ No newline at end of file
index 3391022..4300804 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe7b=['./utils','../../../../config/logger','routing','info','[%s][NOOP]\x20%s','getMustacheRender','next','error','stringify'];(function(_0x46fcf7,_0x211d36){var _0x7aa195=function(_0x4c5fd5){while(--_0x4c5fd5){_0x46fcf7['push'](_0x46fcf7['shift']());}};_0x7aa195(++_0x211d36);}(_0xbe7b,0x99));var _0xbbe7=function(_0x14f6db,_0x4d9f26){_0x14f6db=_0x14f6db-0x0;var _0x45344d=_0xbe7b[_0x14f6db];return _0x45344d;};'use strict';var utils=require(_0xbbe7('0x0'));var logger=require(_0xbbe7('0x1'))(_0xbbe7('0x2'));exports['consequence']=function(_0x4305c9,_0x38620c){return function(_0x38e263){try{logger[_0xbbe7('0x3')](_0xbbe7('0x4'),_0x4305c9,utils[_0xbbe7('0x5')](_0x38620c[0x0],this));_0x38e263[_0xbbe7('0x6')]();}catch(_0xb67f6d){logger[_0xbbe7('0x7')](_0xbbe7('0x4'),_0x4305c9,JSON[_0xbbe7('0x8')](_0xb67f6d));_0x38e263['stop']();}};};
\ No newline at end of file
+var _0xcde2=['[%s][NOOP]\x20%s','getMustacheRender','next','stop','./utils','../../../../config/logger','consequence'];(function(_0x44a1c1,_0x2893dd){var _0x2ab991=function(_0x5dd860){while(--_0x5dd860){_0x44a1c1['push'](_0x44a1c1['shift']());}};_0x2ab991(++_0x2893dd);}(_0xcde2,0x12a));var _0x2cde=function(_0x3aa471,_0x1e3235){_0x3aa471=_0x3aa471-0x0;var _0x355cc2=_0xcde2[_0x3aa471];return _0x355cc2;};'use strict';var utils=require(_0x2cde('0x0'));var logger=require(_0x2cde('0x1'))('routing');exports[_0x2cde('0x2')]=function(_0x129498,_0x404619){return function(_0x1f8b26){try{logger['info'](_0x2cde('0x3'),_0x129498,utils[_0x2cde('0x4')](_0x404619[0x0],this));_0x1f8b26[_0x2cde('0x5')]();}catch(_0x3881df){logger['error'](_0x2cde('0x3'),_0x129498,JSON['stringify'](_0x3881df));_0x1f8b26[_0x2cde('0x6')]();}};};
\ No newline at end of file
index 5464a8e..d4b7ffa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd3b=['next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','validate','util','seq-queue','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','redis','localhost','queue_id','account','queue','joinAt','emit','clone','pick','format','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','save','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','from','YYYY-MM-DD\x20HH:mm:ss','contact','list','channel','upperFirst','interaction','message','chat','WebsiteId','name','QueueReport','catch','info','[%s][STOP:QUEUE][NAME:%s]','update','timeout','error','update\x20queue\x20report','toLowerCase','consequence','[%s][QUEUE]\x20%s','map','join','stop','Queues','createQueue','atimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','[%s][QUEUE]\x20APPLICATION\x20END'];(function(_0x41ec9b,_0x5bc5eb){var _0x323d79=function(_0x442189){while(--_0x442189){_0x41ec9b['push'](_0x41ec9b['shift']());}};_0x323d79(++_0x5bc5eb);}(_0xbd3b,0x9a));var _0xbbd3=function(_0x207abf,_0x33cf2e){_0x207abf=_0x207abf-0x0;var _0x481744=_0xbd3b[_0x207abf];return _0x481744;};'use strict';var schema=require(_0xbbd3('0x0'));var _=require('lodash');var util=require(_0xbbd3('0x1'));var seqqueue=require(_0xbbd3('0x2'));var moment=require(_0xbbd3('0x3'));var Redis=require(_0xbbd3('0x4'));var config=require(_0xbbd3('0x5'));var logger=require(_0xbbd3('0x6'))(_0xbbd3('0x7'));var strategy=require('./strategy');config[_0xbbd3('0x8')]=_['defaults'](config[_0xbbd3('0x8')],{'host':_0xbbd3('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var attributes=['id',_0xbbd3('0xa'),_0xbbd3('0xb'),_0xbbd3('0xc'),'from',_0xbbd3('0xd')];function emit(_0x25ab57,_0x1a4684,_0x452ab7){io['to'](_0x25ab57)[_0xbbd3('0xe')](_0x1a4684,_0x452ab7);}function emitChannelQueueInteraction(_0xa090e3,_0x564814,_0x47ed7e,_0x197724,_0x1d7646,_0x51267c,_0x6aba76,_0x2680d2){var _0x1f63eb=_[_0xbbd3('0xf')](_0x47ed7e);_0x1f63eb[_0xbbd3('0xa')]=_0x2680d2;_0x1f63eb[_0xbbd3('0xc')]=_0x564814;_0x1f63eb[_0xbbd3('0xb')]=_0x197724;_0x1f63eb['id']=_0x1d7646;if(_0x51267c){_0x6aba76[util['format']('%sQueuesWaitingInteractions',_0xa090e3)][_0x1d7646]=_[_0xbbd3('0x10')](_0x1f63eb,attributes);}else{delete _0x6aba76[util[_0xbbd3('0x11')](_0xbbd3('0x12'),_0xa090e3)][_0x1d7646];}emit(util[_0xbbd3('0x11')](_0xbbd3('0x13'),_0xa090e3,_0x564814),util[_0xbbd3('0x11')](_0xbbd3('0x14'),_0xa090e3,_0x51267c?_0xbbd3('0x15'):'remove'),_[_0xbbd3('0x10')](_0x1f63eb,attributes));}var rpc={'openchannelQueueReport':require(_0xbbd3('0x16')),'mailQueueReport':require(_0xbbd3('0x17')),'chatQueueReport':require(_0xbbd3('0x18')),'smsQueueReport':require(_0xbbd3('0x19')),'faxQueueReport':require(_0xbbd3('0x1a')),'whatsappQueueReport':require(_0xbbd3('0x1b'))};var queue=schema({'name':{'type':_0xbbd3('0x1c'),'required':!![],'message':_0xbbd3('0x1d')},'timeout':{'type':_0xbbd3('0x1e'),'message':_0xbbd3('0x1f')}});function startRouting(_0x2b24f8,_0x3b6f00,_0x49d24b,_0x50b4b2){if(_0x2b24f8&&_0x3b6f00&&_0x49d24b){_0x3b6f00[_0xbbd3('0x20')]+=0x1;var _0x34d3ba={'uniqueid':_0x2b24f8,'from':_0x49d24b[_0xbbd3('0x21')]?_0x49d24b[_0xbbd3('0x21')][_0xbbd3('0x22')]:'','joinAt':moment()[_0xbbd3('0x11')](_0xbbd3('0x23')),'ContactId':_0x49d24b['contact']?_0x49d24b[_0xbbd3('0x24')]['id']:null,'ListId':_0x49d24b[_0xbbd3('0x25')]?_0x49d24b[_0xbbd3('0x25')]['id']:null};_0x34d3ba[_['upperFirst'](_0x49d24b[_0xbbd3('0x26')])+'QueueId']=_0x3b6f00['id']||null;_0x34d3ba[_[_0xbbd3('0x27')](_0x49d24b['channel'])+'InteractionId']=_0x49d24b[_0xbbd3('0x28')]?_0x49d24b[_0xbbd3('0x28')]['id']:null;_0x34d3ba[_[_0xbbd3('0x27')](_0x49d24b[_0xbbd3('0x26')])+'MessageId']=_0x49d24b[_0xbbd3('0x29')]?_0x49d24b[_0xbbd3('0x29')]['id']:null;_0x34d3ba[_[_0xbbd3('0x27')](_0x49d24b[_0xbbd3('0x26')])+(_0x49d24b[_0xbbd3('0x26')]!==_0xbbd3('0x2a')?'AccountId':_0xbbd3('0x2b'))]=_0x49d24b[_0xbbd3('0xb')]?_0x49d24b['account']['id']:null;logger['info'](util[_0xbbd3('0x11')]('[%s][START:QUEUE][NAME:%s]',_0x2b24f8,_0x3b6f00['name']));emitChannelQueueInteraction(_0x49d24b['channel'],_0x3b6f00[_0xbbd3('0x2c')],_0x34d3ba,_0x49d24b['account'][_0xbbd3('0x2c')],_0x49d24b[_0xbbd3('0x29')]['id'],!![],_0x50b4b2,_0x3b6f00['id']);if(rpc[_0x49d24b[_0xbbd3('0x26')]+_0xbbd3('0x2d')]){return rpc[_0x49d24b[_0xbbd3('0x26')]+_0xbbd3('0x2d')]['create'](_0x34d3ba)[_0xbbd3('0x2e')](function(_0x48943a){logger['error']('create\x20queue\x20report');});}}}function stopRouting(_0x489494,_0x262989,_0x34d704,_0x2eac20){if(_0x489494&&_0x262989){_0x262989[_0xbbd3('0x20')]-=0x1;var _0x421104={'leaveAt':moment()[_0xbbd3('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0xbbd3('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':'accepted'};logger[_0xbbd3('0x2f')](util[_0xbbd3('0x11')](_0xbbd3('0x30'),_0x489494,_0x262989[_0xbbd3('0x2c')]));emitChannelQueueInteraction(_0x34d704['channel'],_0x262989[_0xbbd3('0x2c')],_0x34d704[_0xbbd3('0x21')],_0x34d704[_0xbbd3('0xb')]['name'],_0x34d704[_0xbbd3('0x29')]['id'],![],_0x2eac20,_0x262989['id']);if(rpc[_0x34d704[_0xbbd3('0x26')]+'QueueReport']){return rpc[_0x34d704[_0xbbd3('0x26')]+_0xbbd3('0x2d')][_0xbbd3('0x31')](_0x489494,_0x421104)[_0xbbd3('0x2e')](function(_0x4d538d){logger['error']('update\x20queue\x20report');});}}}function endRouting(_0x1d4fd9,_0x2a11a3,_0x4f3675,_0x5ffe5a){if(_0x1d4fd9&&_0x2a11a3){_0x2a11a3['waiting']-=0x1;var _0x314d56={'leaveAt':moment()[_0xbbd3('0x11')](_0xbbd3('0x23')),'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0xbbd3('0x32')};logger[_0xbbd3('0x2f')](util['format']('[%s][END:QUEUE][NAME:%s]',_0x1d4fd9,_0x2a11a3['name']));emitChannelQueueInteraction(_0x4f3675[_0xbbd3('0x26')],_0x2a11a3[_0xbbd3('0x2c')],_0x4f3675[_0xbbd3('0x21')],_0x4f3675[_0xbbd3('0xb')]['name'],_0x4f3675[_0xbbd3('0x29')]['id'],![],_0x5ffe5a);if(rpc[_0x4f3675[_0xbbd3('0x26')]+_0xbbd3('0x2d')]){return rpc[_0x4f3675[_0xbbd3('0x26')]+_0xbbd3('0x2d')][_0xbbd3('0x31')](_0x1d4fd9,_0x314d56)[_0xbbd3('0x2e')](function(_0x540f35){logger[_0xbbd3('0x33')](_0xbbd3('0x34'));});}}}function handleFindQueue(_0x41d84a){return function(_0x177286){return _0x177286[_0xbbd3('0x2c')][_0xbbd3('0x35')]()===_0x41d84a[_0xbbd3('0x35')]();};}exports[_0xbbd3('0x36')]=function(_0x5b38eb,_0x3b0102,_0x2661a0,_0x429de3){return function(_0x5aadc9){try{var _0x1b7598={'name':_0x3b0102[0x0],'timeout':_0x3b0102[0x1]};var _0x1559f5=queue[_0xbbd3('0x0')](_0x1b7598,{'typecast':!![]});if(_0x1559f5['length']){logger[_0xbbd3('0x33')](_0xbbd3('0x37'),_0x5b38eb,_[_0xbbd3('0x38')](_0x1559f5,_0xbbd3('0x29'))[_0xbbd3('0x39')](',\x20'));_0x5aadc9[_0xbbd3('0x3a')]();}else{var _0x214eba=_['find'](_0x2661a0[_0x429de3[_0xbbd3('0x26')]+_0xbbd3('0x3b')],handleFindQueue(_0x1b7598['name']));if(_0x214eba){startRouting(_0x5b38eb,_0x214eba,_0x429de3,_0x2661a0);var _0x7b5dc3=(_0x214eba['timeout']||0xa)*0x3e8;var _0x3af561=(_0x1b7598['timeout']||0x14)*0x3e8;var _0xc53b4d,_0x2ff4d1;if(_0x7b5dc3>_0x3af561){_0x3af561=_0x7b5dc3;}var _0x10b879=seqqueue[_0xbbd3('0x3c')](_0x7b5dc3);_0x10b879['id']=_0x5b38eb;_0x10b879[_0xbbd3('0x3d')]=_0x7b5dc3;_0x10b879['qtimeout']=_0x3af561;_0x10b879[_0xbbd3('0x26')]=_0x429de3['channel'];_0x2661a0[_0xbbd3('0x3e')][_0x5b38eb]['on'](_0xbbd3('0x3f'),function(){logger['info'](_0xbbd3('0x40'),_0x5b38eb);stopRouting(_0x5b38eb,_0x214eba,_0x429de3,_0x2661a0);clearTimeout(_0xc53b4d);_0xc53b4d=undefined;_0x10b879[_0xbbd3('0x41')](!![]);if(_0x2661a0['rules'][_0x5b38eb]){delete _0x2661a0[_0xbbd3('0x3e')][_0x5b38eb];}_0x5aadc9[_0xbbd3('0x3a')]();});_0x2661a0[_0xbbd3('0x3e')][_0x5b38eb]['on'](_0xbbd3('0x42'),function(){if(_0x2661a0[_0xbbd3('0x3e')][_0x5b38eb]){delete _0x2661a0[_0xbbd3('0x3e')][_0x5b38eb];}});_0xc53b4d=setTimeout(function(){logger[_0xbbd3('0x2f')](_0xbbd3('0x43'),_0x5b38eb);endRouting(_0x5b38eb,_0x214eba,_0x429de3,_0x2661a0);clearTimeout(_0xc53b4d);_0x10b879[_0xbbd3('0x41')](!![]);_0x5aadc9[_0xbbd3('0x44')]();},_0x3af561);switch(_0x214eba[_0xbbd3('0x45')]){case _0xbbd3('0x46'):strategy[_0xbbd3('0x46')](_0x10b879,_0x214eba,_0x2661a0,_0x429de3);break;default:strategy[_0xbbd3('0x47')](_0x10b879,_0x214eba,_0x2661a0,_0x429de3);}}else{logger[_0xbbd3('0x33')](_0xbbd3('0x48'),_0x5b38eb,_0x1b7598[_0xbbd3('0x2c')]);_0x5aadc9[_0xbbd3('0x3a')]();}}}catch(_0x1dde37){console[_0xbbd3('0x49')](_0x1dde37);logger['error'](_0xbbd3('0x37'),_0x5b38eb,_0x1dde37['stack']);_0x5aadc9[_0xbbd3('0x3a')]();}};};
\ No newline at end of file
+var _0x08e8=['clone','queue_id','format','%sQueuesWaitingInteractions','pick','%s:queue:%s','save','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','interaction','MessageId','message','chat','AccountId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','update','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','validate','length','[%s][QUEUE]\x20%s','map','join','find','Queues','createQueue','atimeout','rules','end','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','strategy','rrmemory','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','stop','log','stack','lodash','seq-queue','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','defaults','account','queue','from','joinAt','emit'];(function(_0x6fa50a,_0x21afab){var _0x12b30a=function(_0x62c459){while(--_0x62c459){_0x6fa50a['push'](_0x6fa50a['shift']());}};_0x12b30a(++_0x21afab);}(_0x08e8,0xc9));var _0x808e=function(_0x331268,_0x4dbf99){_0x331268=_0x331268-0x0;var _0x236d68=_0x08e8[_0x331268];return _0x236d68;};'use strict';var schema=require('validate');var _=require(_0x808e('0x0'));var util=require('util');var seqqueue=require(_0x808e('0x1'));var moment=require(_0x808e('0x2'));var Redis=require(_0x808e('0x3'));var config=require(_0x808e('0x4'));var logger=require(_0x808e('0x5'))(_0x808e('0x6'));var strategy=require(_0x808e('0x7'));config[_0x808e('0x8')]=_[_0x808e('0x9')](config[_0x808e('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x808e('0x8')]));var attributes=['id','queue_id',_0x808e('0xa'),_0x808e('0xb'),_0x808e('0xc'),_0x808e('0xd')];function emit(_0x54610d,_0x586427,_0x23faf6){io['to'](_0x54610d)[_0x808e('0xe')](_0x586427,_0x23faf6);}function emitChannelQueueInteraction(_0x4ddafe,_0x1284f7,_0x183cfe,_0x3f6175,_0x27647a,_0x12b225,_0xd3cf82,_0x173c46){var _0x435bd8=_[_0x808e('0xf')](_0x183cfe);_0x435bd8[_0x808e('0x10')]=_0x173c46;_0x435bd8[_0x808e('0xb')]=_0x1284f7;_0x435bd8[_0x808e('0xa')]=_0x3f6175;_0x435bd8['id']=_0x27647a;if(_0x12b225){_0xd3cf82[util[_0x808e('0x11')](_0x808e('0x12'),_0x4ddafe)][_0x27647a]=_[_0x808e('0x13')](_0x435bd8,attributes);}else{delete _0xd3cf82[util[_0x808e('0x11')]('%sQueuesWaitingInteractions',_0x4ddafe)][_0x27647a];}emit(util[_0x808e('0x11')](_0x808e('0x14'),_0x4ddafe,_0x1284f7),util[_0x808e('0x11')]('%s_queue_waiting_interaction:%s',_0x4ddafe,_0x12b225?_0x808e('0x15'):'remove'),_[_0x808e('0x13')](_0x435bd8,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x808e('0x16')),'chatQueueReport':require(_0x808e('0x17')),'smsQueueReport':require(_0x808e('0x18')),'faxQueueReport':require('../../rpc/faxQueueReport'),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':'string','required':!![],'message':_0x808e('0x19')},'timeout':{'type':_0x808e('0x1a'),'message':_0x808e('0x1b')}});function startRouting(_0x1a7f5b,_0x5d77d5,_0xf3b697,_0x2c87d2){if(_0x1a7f5b&&_0x5d77d5&&_0xf3b697){_0x5d77d5[_0x808e('0x1c')]+=0x1;var _0x5d5569={'uniqueid':_0x1a7f5b,'from':_0xf3b697[_0x808e('0x1d')]?_0xf3b697[_0x808e('0x1d')][_0x808e('0xc')]:'','joinAt':moment()[_0x808e('0x11')](_0x808e('0x1e')),'ContactId':_0xf3b697[_0x808e('0x1f')]?_0xf3b697['contact']['id']:null,'ListId':_0xf3b697[_0x808e('0x20')]?_0xf3b697['list']['id']:null};_0x5d5569[_[_0x808e('0x21')](_0xf3b697[_0x808e('0x22')])+'QueueId']=_0x5d77d5['id']||null;_0x5d5569[_[_0x808e('0x21')](_0xf3b697[_0x808e('0x22')])+'InteractionId']=_0xf3b697[_0x808e('0x23')]?_0xf3b697[_0x808e('0x23')]['id']:null;_0x5d5569[_[_0x808e('0x21')](_0xf3b697[_0x808e('0x22')])+_0x808e('0x24')]=_0xf3b697[_0x808e('0x25')]?_0xf3b697['message']['id']:null;_0x5d5569[_[_0x808e('0x21')](_0xf3b697['channel'])+(_0xf3b697['channel']!==_0x808e('0x26')?_0x808e('0x27'):'WebsiteId')]=_0xf3b697[_0x808e('0xa')]?_0xf3b697[_0x808e('0xa')]['id']:null;logger[_0x808e('0x28')](util[_0x808e('0x11')](_0x808e('0x29'),_0x1a7f5b,_0x5d77d5['name']));emitChannelQueueInteraction(_0xf3b697[_0x808e('0x22')],_0x5d77d5['name'],_0x5d5569,_0xf3b697[_0x808e('0xa')][_0x808e('0x2a')],_0xf3b697[_0x808e('0x25')]['id'],!![],_0x2c87d2,_0x5d77d5['id']);if(rpc[_0xf3b697[_0x808e('0x22')]+'QueueReport']){return rpc[_0xf3b697[_0x808e('0x22')]+_0x808e('0x2b')][_0x808e('0x2c')](_0x5d5569)[_0x808e('0x2d')](function(_0x35c5f2){logger[_0x808e('0x2e')]('create\x20queue\x20report');});}}}function stopRouting(_0x37e4bd,_0x37c493,_0x5cf578,_0x30a432){if(_0x37e4bd&&_0x37c493){_0x37c493['waiting']-=0x1;var _0x34bc7b={'leaveAt':moment()[_0x808e('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0x808e('0x11')](_0x808e('0x1e')),'reason':'accepted'};logger[_0x808e('0x28')](util[_0x808e('0x11')]('[%s][STOP:QUEUE][NAME:%s]',_0x37e4bd,_0x37c493[_0x808e('0x2a')]));emitChannelQueueInteraction(_0x5cf578[_0x808e('0x22')],_0x37c493[_0x808e('0x2a')],_0x5cf578[_0x808e('0x1d')],_0x5cf578['account'][_0x808e('0x2a')],_0x5cf578[_0x808e('0x25')]['id'],![],_0x30a432,_0x37c493['id']);if(rpc[_0x5cf578[_0x808e('0x22')]+_0x808e('0x2b')]){return rpc[_0x5cf578[_0x808e('0x22')]+_0x808e('0x2b')][_0x808e('0x2f')](_0x37e4bd,_0x34bc7b)[_0x808e('0x2d')](function(_0x42f91f){logger[_0x808e('0x2e')](_0x808e('0x30'));});}}}function endRouting(_0x117372,_0x272a1f,_0x512ef5,_0x3bc6c6){if(_0x117372&&_0x272a1f){_0x272a1f[_0x808e('0x1c')]-=0x1;var _0x290bdd={'leaveAt':moment()[_0x808e('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0x808e('0x11')](_0x808e('0x1e')),'reason':_0x808e('0x31')};logger[_0x808e('0x28')](util[_0x808e('0x11')](_0x808e('0x32'),_0x117372,_0x272a1f[_0x808e('0x2a')]));emitChannelQueueInteraction(_0x512ef5['channel'],_0x272a1f['name'],_0x512ef5[_0x808e('0x1d')],_0x512ef5[_0x808e('0xa')][_0x808e('0x2a')],_0x512ef5['message']['id'],![],_0x3bc6c6);if(rpc[_0x512ef5[_0x808e('0x22')]+_0x808e('0x2b')]){return rpc[_0x512ef5['channel']+_0x808e('0x2b')][_0x808e('0x2f')](_0x117372,_0x290bdd)['catch'](function(_0x1b9277){logger[_0x808e('0x2e')](_0x808e('0x30'));});}}}function handleFindQueue(_0x1ee483){return function(_0x4e2e64){return _0x4e2e64[_0x808e('0x2a')]['toLowerCase']()===_0x1ee483[_0x808e('0x33')]();};}exports['consequence']=function(_0xb3baf,_0x43f8ad,_0x25832d,_0x190506){return function(_0x3c0a91){try{var _0x273979={'name':_0x43f8ad[0x0],'timeout':_0x43f8ad[0x1]};var _0x429695=queue[_0x808e('0x34')](_0x273979,{'typecast':!![]});if(_0x429695[_0x808e('0x35')]){logger[_0x808e('0x2e')](_0x808e('0x36'),_0xb3baf,_[_0x808e('0x37')](_0x429695,_0x808e('0x25'))[_0x808e('0x38')](',\x20'));_0x3c0a91['stop']();}else{var _0x3d89ff=_[_0x808e('0x39')](_0x25832d[_0x190506[_0x808e('0x22')]+_0x808e('0x3a')],handleFindQueue(_0x273979[_0x808e('0x2a')]));if(_0x3d89ff){startRouting(_0xb3baf,_0x3d89ff,_0x190506,_0x25832d);var _0x42370c=(_0x3d89ff[_0x808e('0x31')]||0xa)*0x3e8;var _0x5444f3=(_0x273979['timeout']||0x14)*0x3e8;var _0x4449af,_0x205c68;if(_0x42370c>_0x5444f3){_0x5444f3=_0x42370c;}var _0x31a3c8=seqqueue[_0x808e('0x3b')](_0x42370c);_0x31a3c8['id']=_0xb3baf;_0x31a3c8[_0x808e('0x3c')]=_0x42370c;_0x31a3c8['qtimeout']=_0x5444f3;_0x31a3c8[_0x808e('0x22')]=_0x190506['channel'];_0x25832d[_0x808e('0x3d')][_0xb3baf]['on'](_0x808e('0x3e'),function(){logger['info']('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0xb3baf);stopRouting(_0xb3baf,_0x3d89ff,_0x190506,_0x25832d);clearTimeout(_0x4449af);_0x4449af=undefined;_0x31a3c8[_0x808e('0x3f')](!![]);if(_0x25832d[_0x808e('0x3d')][_0xb3baf]){delete _0x25832d[_0x808e('0x3d')][_0xb3baf];}_0x3c0a91['stop']();});_0x25832d[_0x808e('0x3d')][_0xb3baf]['on'](_0x808e('0x40'),function(){if(_0x25832d[_0x808e('0x3d')][_0xb3baf]){delete _0x25832d[_0x808e('0x3d')][_0xb3baf];}});_0x4449af=setTimeout(function(){logger['info'](_0x808e('0x41'),_0xb3baf);endRouting(_0xb3baf,_0x3d89ff,_0x190506,_0x25832d);clearTimeout(_0x4449af);_0x31a3c8['close'](!![]);_0x3c0a91['next']();},_0x5444f3);switch(_0x3d89ff[_0x808e('0x42')]){case _0x808e('0x43'):strategy['rrmemory'](_0x31a3c8,_0x3d89ff,_0x25832d,_0x190506);break;default:strategy['beepall'](_0x31a3c8,_0x3d89ff,_0x25832d,_0x190506);}}else{logger[_0x808e('0x2e')](_0x808e('0x44'),_0xb3baf,_0x273979[_0x808e('0x2a')]);_0x3c0a91[_0x808e('0x45')]();}}}catch(_0x251c1b){console[_0x808e('0x46')](_0x251c1b);logger[_0x808e('0x2e')](_0x808e('0x36'),_0xb3baf,_0x251c1b[_0x808e('0x47')]);_0x3c0a91[_0x808e('0x45')]();}};};
\ No newline at end of file
index 44daf96..784337b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d88=['forcedOwnership','isAgentAvailable','channel','busy','showNotification','writeLog',':FORCED','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','busyQueue','STOP','exports','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','agent','realtime','handleRun','bind','handleTimeout','timeout','handleDrained','prototype','push','info','[%s][AGENT]\x20try\x20with\x20%s','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s'];(function(_0x95aa51,_0x57a3ed){var _0x4ac62d=function(_0x3c364d){while(--_0x3c364d){_0x95aa51['push'](_0x95aa51['shift']());}};_0x4ac62d(++_0x57a3ed);}(_0x4d88,0x1be));var _0x84d8=function(_0x590941,_0x1981e0){_0x590941=_0x590941-0x0;var _0x43c7bc=_0x4d88[_0x590941];return _0x43c7bc;};'use strict';var _=require('lodash');var uuid=require(_0x84d8('0x0'));var util=require(_0x84d8('0x1'));var logger=require(_0x84d8('0x2'))(_0x84d8('0x3'));var Agent=function(_0x5d91a5,_0x161b39,_0x296d49,_0x4011b1){this[_0x84d8('0x4')]=uuid['v4']();this[_0x84d8('0x5')]=_0x5d91a5;this[_0x84d8('0x6')]=_0x161b39;this[_0x84d8('0x7')]=_0x296d49;this[_0x84d8('0x3')]=_0x4011b1;this['squeue']['push'](this[_0x84d8('0x8')][_0x84d8('0x9')](this),this[_0x84d8('0xa')][_0x84d8('0x9')](this));this['squeue']['on'](_0x84d8('0xb'),this[_0x84d8('0xa')]['bind'](this));this['squeue']['on']('drained',this[_0x84d8('0xc')]['bind'](this));};Agent[_0x84d8('0xd')]['push']=function(){this[_0x84d8('0x5')][_0x84d8('0xe')](this[_0x84d8('0x8')][_0x84d8('0x9')](this),this[_0x84d8('0xa')][_0x84d8('0x9')](this));};Agent[_0x84d8('0xd')]['handleDrained']=function(){this[_0x84d8('0xa')](!![]);};Agent['prototype'][_0x84d8('0x8')]=function(_0x48232a){logger[_0x84d8('0xf')](_0x84d8('0x10'),this[_0x84d8('0x5')]['id'],this['agent']['id']);if(_['isNil'](this[_0x84d8('0x7')][_0x84d8('0x11')][this[_0x84d8('0x6')]['id']])){logger[_0x84d8('0xf')](_0x84d8('0x12'),this[_0x84d8('0x5')]['id'],this[_0x84d8('0x6')]['id']);setTimeout(this[_0x84d8('0xe')][_0x84d8('0x9')](this),0x3e8);}else{if(this[_0x84d8('0x3')][_0x84d8('0x13')]||util[_0x84d8('0x14')](this[_0x84d8('0x5')]['id'],this[_0x84d8('0x7')][_0x84d8('0x11')][this[_0x84d8('0x6')]['id']],this[_0x84d8('0x5')][_0x84d8('0x15')],![])){this['realtime'][_0x84d8('0x11')][this['agent']['id']][_0x84d8('0x16')]=!![];this[_0x84d8('0x7')][_0x84d8('0x11')][this[_0x84d8('0x6')]['id']]['busyQueue']=undefined;util[_0x84d8('0x17')](this['notificationId'],this[_0x84d8('0x5')]['id'],this[_0x84d8('0x7')][_0x84d8('0x11')][this[_0x84d8('0x6')]['id']],null,this['routing']);util[_0x84d8('0x18')](this[_0x84d8('0x5')]['id'],this[_0x84d8('0x7')][_0x84d8('0x11')][this[_0x84d8('0x6')]['id']],'RINGING'+(this[_0x84d8('0x3')][_0x84d8('0x13')]?_0x84d8('0x19'):''));}else{logger[_0x84d8('0xf')]('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this[_0x84d8('0x5')]['id'],this[_0x84d8('0x6')]['id']);setTimeout(this['push'][_0x84d8('0x9')](this),0x3e8);}}};Agent[_0x84d8('0xd')]['handleTimeout']=function(_0x44d556){if(_['isNil'](this[_0x84d8('0x7')][_0x84d8('0x11')][this[_0x84d8('0x6')]['id']])){return logger[_0x84d8('0xf')](_0x84d8('0x12'),this[_0x84d8('0x5')]['id'],this[_0x84d8('0x6')]['id']);}else{logger[_0x84d8('0xf')](_0x84d8('0x1a'),this['squeue']['id'],this['agent']['id']);util[_0x84d8('0x1b')](this['notificationId'],this[_0x84d8('0x5')]['id'],this[_0x84d8('0x7')][_0x84d8('0x11')][this[_0x84d8('0x6')]['id']],null,this[_0x84d8('0x3')]);this[_0x84d8('0x7')][_0x84d8('0x11')][this[_0x84d8('0x6')]['id']]['busy']=![];this[_0x84d8('0x7')]['agents'][this[_0x84d8('0x6')]['id']][_0x84d8('0x1c')]=undefined;util[_0x84d8('0x18')](this['squeue']['id'],this[_0x84d8('0x7')]['agents'][this['agent']['id']],_0x44d556?_0x84d8('0x1d'):'TIMEOUT');}if(!_0x44d556){setTimeout(this[_0x84d8('0xe')][_0x84d8('0x9')](this),0x3e8);}};function agent(_0x39abc9,_0xed8a69,_0x211205,_0x1c6be7){return new Agent(_0x39abc9,_0xed8a69,_0x211205,_0x1c6be7);}module[_0x84d8('0x1e')]=agent;
\ No newline at end of file
+var _0xe8c9=['info','isNil','realtime','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','channel','busy','busyQueue','showNotification','RINGING','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','writeLog','STOP','exports','../../../../../config/logger','routing','notificationId','agent','squeue','handleRun','bind','handleTimeout','drained','handleDrained','prototype','push'];(function(_0x3ccbde,_0x30914d){var _0x212e44=function(_0x2b1f58){while(--_0x2b1f58){_0x3ccbde['push'](_0x3ccbde['shift']());}};_0x212e44(++_0x30914d);}(_0xe8c9,0x16d));var _0x9e8c=function(_0x3a10e6,_0x8c4028){_0x3a10e6=_0x3a10e6-0x0;var _0x116b52=_0xe8c9[_0x3a10e6];return _0x116b52;};'use strict';var _=require('lodash');var uuid=require('uuid');var util=require('./util');var logger=require(_0x9e8c('0x0'))(_0x9e8c('0x1'));var Agent=function(_0x179dc1,_0x50a662,_0x715c55,_0x2b27a2){this[_0x9e8c('0x2')]=uuid['v4']();this['squeue']=_0x179dc1;this[_0x9e8c('0x3')]=_0x50a662;this['realtime']=_0x715c55;this[_0x9e8c('0x1')]=_0x2b27a2;this[_0x9e8c('0x4')]['push'](this[_0x9e8c('0x5')][_0x9e8c('0x6')](this),this[_0x9e8c('0x7')]['bind'](this));this[_0x9e8c('0x4')]['on']('timeout',this[_0x9e8c('0x7')][_0x9e8c('0x6')](this));this[_0x9e8c('0x4')]['on'](_0x9e8c('0x8'),this[_0x9e8c('0x9')][_0x9e8c('0x6')](this));};Agent[_0x9e8c('0xa')][_0x9e8c('0xb')]=function(){this[_0x9e8c('0x4')][_0x9e8c('0xb')](this['handleRun'][_0x9e8c('0x6')](this),this[_0x9e8c('0x7')]['bind'](this));};Agent['prototype']['handleDrained']=function(){this[_0x9e8c('0x7')](!![]);};Agent[_0x9e8c('0xa')][_0x9e8c('0x5')]=function(_0x33cf7a){logger[_0x9e8c('0xc')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0x9e8c('0x4')]['id'],this[_0x9e8c('0x3')]['id']);if(_[_0x9e8c('0xd')](this[_0x9e8c('0xe')][_0x9e8c('0xf')][this[_0x9e8c('0x3')]['id']])){logger[_0x9e8c('0xc')](_0x9e8c('0x10'),this['squeue']['id'],this[_0x9e8c('0x3')]['id']);setTimeout(this[_0x9e8c('0xb')][_0x9e8c('0x6')](this),0x3e8);}else{if(this[_0x9e8c('0x1')][_0x9e8c('0x11')]||util[_0x9e8c('0x12')](this[_0x9e8c('0x4')]['id'],this[_0x9e8c('0xe')][_0x9e8c('0xf')][this['agent']['id']],this[_0x9e8c('0x4')][_0x9e8c('0x13')],![])){this[_0x9e8c('0xe')][_0x9e8c('0xf')][this[_0x9e8c('0x3')]['id']][_0x9e8c('0x14')]=!![];this[_0x9e8c('0xe')][_0x9e8c('0xf')][this['agent']['id']][_0x9e8c('0x15')]=undefined;util[_0x9e8c('0x16')](this[_0x9e8c('0x2')],this[_0x9e8c('0x4')]['id'],this[_0x9e8c('0xe')][_0x9e8c('0xf')][this['agent']['id']],null,this[_0x9e8c('0x1')]);util['writeLog'](this['squeue']['id'],this[_0x9e8c('0xe')][_0x9e8c('0xf')][this[_0x9e8c('0x3')]['id']],_0x9e8c('0x17')+(this[_0x9e8c('0x1')][_0x9e8c('0x11')]?':FORCED':''));}else{logger[_0x9e8c('0xc')]('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this['squeue']['id'],this[_0x9e8c('0x3')]['id']);setTimeout(this[_0x9e8c('0xb')]['bind'](this),0x3e8);}}};Agent[_0x9e8c('0xa')][_0x9e8c('0x7')]=function(_0x251257){if(_[_0x9e8c('0xd')](this[_0x9e8c('0xe')][_0x9e8c('0xf')][this[_0x9e8c('0x3')]['id']])){return logger[_0x9e8c('0xc')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x9e8c('0x4')]['id'],this['agent']['id']);}else{logger[_0x9e8c('0xc')](_0x9e8c('0x18'),this[_0x9e8c('0x4')]['id'],this[_0x9e8c('0x3')]['id']);util[_0x9e8c('0x19')](this[_0x9e8c('0x2')],this[_0x9e8c('0x4')]['id'],this[_0x9e8c('0xe')][_0x9e8c('0xf')][this[_0x9e8c('0x3')]['id']],null,this['routing']);this[_0x9e8c('0xe')][_0x9e8c('0xf')][this[_0x9e8c('0x3')]['id']][_0x9e8c('0x14')]=![];this['realtime'][_0x9e8c('0xf')][this[_0x9e8c('0x3')]['id']]['busyQueue']=undefined;util[_0x9e8c('0x1a')](this[_0x9e8c('0x4')]['id'],this[_0x9e8c('0xe')][_0x9e8c('0xf')][this[_0x9e8c('0x3')]['id']],_0x251257?_0x9e8c('0x1b'):'TIMEOUT');}if(!_0x251257){setTimeout(this['push']['bind'](this),0x3e8);}};function agent(_0x54e09d,_0x2f7713,_0x3f501e,_0x102ea1){return new Agent(_0x54e09d,_0x2f7713,_0x3f501e,_0x102ea1);}module[_0x9e8c('0x1c')]=agent;
\ No newline at end of file
index 0ec5593..73b04dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6075=['queue','realtime','handleRun','bind','handleTimeout','squeue','handleDrained','push','prototype','isNil','Agents','length','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','writeLog','RINGING','busy','busyQueue','name','info','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','STOP','uuid','./util','../../../../../config/logger','routing','notificationId'];(function(_0x137526,_0x25a25d){var _0x2ca60a=function(_0x2d7a48){while(--_0x2d7a48){_0x137526['push'](_0x137526['shift']());}};_0x2ca60a(++_0x25a25d);}(_0x6075,0x191));var _0x5607=function(_0x2b775b,_0x21ac44){_0x2b775b=_0x2b775b-0x0;var _0x429c87=_0x6075[_0x2b775b];return _0x429c87;};'use strict';var _=require('lodash');var uuid=require(_0x5607('0x0'));var util=require(_0x5607('0x1'));var logger=require(_0x5607('0x2'))(_0x5607('0x3'));var Beepall=function(_0x2bcf4e,_0x120ba2,_0xf96316,_0x100852){this[_0x5607('0x4')]=uuid['v4']();this['squeue']=_0x2bcf4e;this[_0x5607('0x5')]=_0x120ba2;this[_0x5607('0x6')]=_0xf96316;this[_0x5607('0x3')]=_0x100852;this['squeue']['push'](this[_0x5607('0x7')][_0x5607('0x8')](this),this[_0x5607('0x9')][_0x5607('0x8')](this));this[_0x5607('0xa')]['on']('timeout',this[_0x5607('0x9')][_0x5607('0x8')](this));this[_0x5607('0xa')]['on']('drained',this[_0x5607('0xb')]['bind'](this));};Beepall['prototype'][_0x5607('0xc')]=function(){this[_0x5607('0xa')][_0x5607('0xc')](this['handleRun'][_0x5607('0x8')](this),this[_0x5607('0x9')][_0x5607('0x8')](this));};Beepall[_0x5607('0xd')][_0x5607('0xb')]=function(_0x33c436){this[_0x5607('0x9')](!![]);};Beepall[_0x5607('0xd')][_0x5607('0x7')]=function(_0x4e1167){var _0x1b0720=!![];if(!_[_0x5607('0xe')](this[_0x5607('0x5')])&&!_['isNil'](this['queue'][_0x5607('0xf')])&&this['queue'][_0x5607('0xf')][_0x5607('0x10')]>0x0){for(var _0x1fa238=0x0,_0x1375e9;_0x1fa238<this[_0x5607('0x5')][_0x5607('0xf')]['length'];_0x1fa238+=0x1){_0x1375e9=this[_0x5607('0x5')]['Agents'][_0x1fa238]['id'];if(_[_0x5607('0xe')](this[_0x5607('0x6')][_0x5607('0x11')][_0x1375e9])){logger['info'](_0x5607('0x12'),this[_0x5607('0xa')]['id'],_0x1375e9);}else{if(util[_0x5607('0x13')](this['squeue']['id'],this[_0x5607('0x6')][_0x5607('0x11')][_0x1375e9],this[_0x5607('0xa')]['channel'],!![])){_0x1b0720=![];util[_0x5607('0x14')](this['squeue']['id'],this['realtime'][_0x5607('0x11')][_0x1375e9],_0x5607('0x15'));this[_0x5607('0x6')][_0x5607('0x11')][_0x1375e9][_0x5607('0x16')]=!![];this[_0x5607('0x6')][_0x5607('0x11')][_0x1375e9][_0x5607('0x17')]=this[_0x5607('0x5')][_0x5607('0x18')];util['showNotification'](this[_0x5607('0x4')],this[_0x5607('0xa')]['id'],this['realtime'][_0x5607('0x11')][_0x1375e9],this[_0x5607('0x5')],this[_0x5607('0x3')]);}}}if(_0x1b0720){logger[_0x5607('0x19')](_0x5607('0x1a'),this[_0x5607('0xa')]['id']);setTimeout(this[_0x5607('0xc')][_0x5607('0x8')](this),0x3e8);}}else{logger['info'](_0x5607('0x1b'),this[_0x5607('0xa')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}};Beepall[_0x5607('0xd')][_0x5607('0x9')]=function(_0xe8788){if(!_[_0x5607('0xe')](this[_0x5607('0x5')])&&!_['isNil'](this[_0x5607('0x5')]['Agents'])){for(var _0xd6c90a=0x0,_0x15a1a2;_0xd6c90a<this[_0x5607('0x5')]['Agents'][_0x5607('0x10')];_0xd6c90a+=0x1){_0x15a1a2=this['queue'][_0x5607('0xf')][_0xd6c90a]['id'];if(_[_0x5607('0xe')](this[_0x5607('0x6')][_0x5607('0x11')][_0x15a1a2])){logger[_0x5607('0x19')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x5607('0xa')]['id'],_0x15a1a2);}else{util['hideNotification'](this[_0x5607('0x4')],this[_0x5607('0xa')]['id'],this['realtime'][_0x5607('0x11')][_0x15a1a2],this[_0x5607('0x5')],this[_0x5607('0x3')]);util['writeLog'](this[_0x5607('0xa')]['id'],this[_0x5607('0x6')][_0x5607('0x11')][_0x15a1a2],_0xe8788?_0x5607('0x1c'):'TIMEOUT');this[_0x5607('0x6')][_0x5607('0x11')][_0x15a1a2]['busy']=![];this[_0x5607('0x6')][_0x5607('0x11')][_0x15a1a2][_0x5607('0x17')]=undefined;}}}if(!_0xe8788){setTimeout(this['push'][_0x5607('0x8')](this),0x3e8);}};function beepall(_0x540152,_0x2ed4c2,_0x287430,_0x2f7a6d){return new Beepall(_0x540152,_0x2ed4c2,_0x287430,_0x2f7a6d);}module['exports']=beepall;
\ No newline at end of file
+var _0xa9b1=['../../../../../config/logger','routing','queue','realtime','squeue','push','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','Agents','length','isNil','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','RINGING','busy','name','showNotification','info','[%s][QUEUE]\x20EMPTY','STOP','busyQueue','./util'];(function(_0x485454,_0xe9b2cc){var _0x37d5f5=function(_0x2b9924){while(--_0x2b9924){_0x485454['push'](_0x485454['shift']());}};_0x37d5f5(++_0xe9b2cc);}(_0xa9b1,0x133));var _0x1a9b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa9b1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var uuid=require('uuid');var util=require(_0x1a9b('0x0'));var logger=require(_0x1a9b('0x1'))(_0x1a9b('0x2'));var Beepall=function(_0x3f42db,_0xc88712,_0x10c90c,_0x52f55f){this['notificationId']=uuid['v4']();this['squeue']=_0x3f42db;this[_0x1a9b('0x3')]=_0xc88712;this[_0x1a9b('0x4')]=_0x10c90c;this[_0x1a9b('0x2')]=_0x52f55f;this[_0x1a9b('0x5')][_0x1a9b('0x6')](this[_0x1a9b('0x7')][_0x1a9b('0x8')](this),this[_0x1a9b('0x9')][_0x1a9b('0x8')](this));this[_0x1a9b('0x5')]['on'](_0x1a9b('0xa'),this[_0x1a9b('0x9')]['bind'](this));this['squeue']['on'](_0x1a9b('0xb'),this[_0x1a9b('0xc')][_0x1a9b('0x8')](this));};Beepall['prototype']['push']=function(){this['squeue'][_0x1a9b('0x6')](this[_0x1a9b('0x7')][_0x1a9b('0x8')](this),this[_0x1a9b('0x9')][_0x1a9b('0x8')](this));};Beepall[_0x1a9b('0xd')]['handleDrained']=function(_0x3c1ba4){this[_0x1a9b('0x9')](!![]);};Beepall[_0x1a9b('0xd')]['handleRun']=function(_0x439646){var _0x38145b=!![];if(!_['isNil'](this[_0x1a9b('0x3')])&&!_['isNil'](this[_0x1a9b('0x3')][_0x1a9b('0xe')])&&this[_0x1a9b('0x3')][_0x1a9b('0xe')][_0x1a9b('0xf')]>0x0){for(var _0x20b8dc=0x0,_0x37057a;_0x20b8dc<this[_0x1a9b('0x3')][_0x1a9b('0xe')][_0x1a9b('0xf')];_0x20b8dc+=0x1){_0x37057a=this['queue'][_0x1a9b('0xe')][_0x20b8dc]['id'];if(_[_0x1a9b('0x10')](this[_0x1a9b('0x4')][_0x1a9b('0x11')][_0x37057a])){logger['info'](_0x1a9b('0x12'),this[_0x1a9b('0x5')]['id'],_0x37057a);}else{if(util['isAgentAvailable'](this[_0x1a9b('0x5')]['id'],this[_0x1a9b('0x4')][_0x1a9b('0x11')][_0x37057a],this[_0x1a9b('0x5')][_0x1a9b('0x13')],!![])){_0x38145b=![];util['writeLog'](this[_0x1a9b('0x5')]['id'],this[_0x1a9b('0x4')][_0x1a9b('0x11')][_0x37057a],_0x1a9b('0x14'));this[_0x1a9b('0x4')][_0x1a9b('0x11')][_0x37057a][_0x1a9b('0x15')]=!![];this['realtime'][_0x1a9b('0x11')][_0x37057a]['busyQueue']=this[_0x1a9b('0x3')][_0x1a9b('0x16')];util[_0x1a9b('0x17')](this['notificationId'],this[_0x1a9b('0x5')]['id'],this[_0x1a9b('0x4')][_0x1a9b('0x11')][_0x37057a],this[_0x1a9b('0x3')],this[_0x1a9b('0x2')]);}}}if(_0x38145b){logger[_0x1a9b('0x18')]('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this[_0x1a9b('0x5')]['id']);setTimeout(this[_0x1a9b('0x6')]['bind'](this),0x3e8);}}else{logger[_0x1a9b('0x18')](_0x1a9b('0x19'),this['squeue']['id']);setTimeout(this['push'][_0x1a9b('0x8')](this),0x3e8);}};Beepall[_0x1a9b('0xd')]['handleTimeout']=function(_0x30278b){if(!_[_0x1a9b('0x10')](this[_0x1a9b('0x3')])&&!_[_0x1a9b('0x10')](this[_0x1a9b('0x3')][_0x1a9b('0xe')])){for(var _0x26949c=0x0,_0x5ed1e3;_0x26949c<this[_0x1a9b('0x3')][_0x1a9b('0xe')][_0x1a9b('0xf')];_0x26949c+=0x1){_0x5ed1e3=this[_0x1a9b('0x3')][_0x1a9b('0xe')][_0x26949c]['id'];if(_[_0x1a9b('0x10')](this[_0x1a9b('0x4')][_0x1a9b('0x11')][_0x5ed1e3])){logger[_0x1a9b('0x18')](_0x1a9b('0x12'),this[_0x1a9b('0x5')]['id'],_0x5ed1e3);}else{util['hideNotification'](this['notificationId'],this[_0x1a9b('0x5')]['id'],this[_0x1a9b('0x4')][_0x1a9b('0x11')][_0x5ed1e3],this['queue'],this[_0x1a9b('0x2')]);util['writeLog'](this[_0x1a9b('0x5')]['id'],this['realtime'][_0x1a9b('0x11')][_0x5ed1e3],_0x30278b?_0x1a9b('0x1a'):'TIMEOUT');this[_0x1a9b('0x4')]['agents'][_0x5ed1e3][_0x1a9b('0x15')]=![];this[_0x1a9b('0x4')][_0x1a9b('0x11')][_0x5ed1e3][_0x1a9b('0x1b')]=undefined;}}}if(!_0x30278b){setTimeout(this['push'][_0x1a9b('0x8')](this),0x3e8);}};function beepall(_0x31dae0,_0x26bcb6,_0x5ceda8,_0x126f89){return new Beepall(_0x31dae0,_0x26bcb6,_0x5ceda8,_0x126f89);}module['exports']=beepall;
\ No newline at end of file
index c551bd6..19eb412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d9d=['./agent','exports','./rrmemory','./beepall'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x0d9d,0xe1));var _0xd0d9=function(_0x1a14c4,_0x2dabb0){_0x1a14c4=_0x1a14c4-0x0;var _0x2a407d=_0x0d9d[_0x1a14c4];return _0x2a407d;};'use strict';module[_0xd0d9('0x0')]={'rrmemory':require(_0xd0d9('0x1')),'beepall':require(_0xd0d9('0x2')),'agent':require(_0xd0d9('0x3'))};
\ No newline at end of file
+var _0xa4bc=['./rrmemory','./beepall','./agent','exports'];(function(_0x22b4c0,_0x3fe01a){var _0x465245=function(_0x22e6ef){while(--_0x22e6ef){_0x22b4c0['push'](_0x22b4c0['shift']());}};_0x465245(++_0x3fe01a);}(_0xa4bc,0x6b));var _0xca4b=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0xa4bc[_0x2dea24];return _0x309d58;};'use strict';module[_0xca4b('0x0')]={'rrmemory':require(_0xca4b('0x1')),'beepall':require(_0xca4b('0x2')),'agent':require(_0xca4b('0x3'))};
\ No newline at end of file
index 480a30c..8d78132 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c03=['mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','name','writeLog','RINGING','[%s][QUEUE]\x20timeout\x20with\x20%s','isNil','hideNotification','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','realtime','intervals','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','push','handleCheckReject','isAgentAvailable','agentId','info','queue'];(function(_0x683430,_0x35697e){var _0x5945ce=function(_0x58c8bb){while(--_0x58c8bb){_0x683430['push'](_0x683430['shift']());}};_0x5945ce(++_0x35697e);}(_0x7c03,0x155));var _0x37c0=function(_0x477377,_0x1595bd){_0x477377=_0x477377-0x0;var _0x819fb5=_0x7c03[_0x477377];return _0x819fb5;};'use strict';var rr=require('rr');var _=require(_0x37c0('0x0'));var uuid=require(_0x37c0('0x1'));var util=require(_0x37c0('0x2'));var logger=require(_0x37c0('0x3'))(_0x37c0('0x4'));var RRMemory=function(_0x16bfc1,_0x3bf950,_0x245196,_0x1bc76f){this[_0x37c0('0x5')]=uuid['v4']();this[_0x37c0('0x6')]=_0x16bfc1;this['queue']=_0x3bf950;this[_0x37c0('0x7')]=_0x245196;this[_0x37c0('0x4')]=_0x1bc76f;this[_0x37c0('0x8')]={};this['squeue']['push'](this[_0x37c0('0x9')][_0x37c0('0xa')](this),this[_0x37c0('0xb')][_0x37c0('0xa')](this),this['module']);this['squeue']['on'](_0x37c0('0xc'),this[_0x37c0('0xb')]['bind'](this));this[_0x37c0('0x6')]['on'](_0x37c0('0xd'),this[_0x37c0('0xe')]['bind'](this));};RRMemory[_0x37c0('0xf')]['push']=function(){this[_0x37c0('0x6')][_0x37c0('0x10')](this[_0x37c0('0x9')][_0x37c0('0xa')](this),this[_0x37c0('0xb')][_0x37c0('0xa')](this));};RRMemory['prototype'][_0x37c0('0xe')]=function(_0x23402c){this[_0x37c0('0xb')](!![]);};RRMemory['prototype'][_0x37c0('0x11')]=function(_0x5f50f4){if(util[_0x37c0('0x12')](this[_0x37c0('0x6')]['id'],this[_0x37c0('0x7')]['agents'][this[_0x37c0('0x13')]],this['squeue']['channel'],!![])){logger[_0x37c0('0x14')]('[%s][QUEUE]\x20available\x20again\x20%s',this[_0x37c0('0x6')]['id'],this[_0x37c0('0x13')]);clearInterval(this[_0x37c0('0x8')][this[_0x37c0('0x13')]]);_0x5f50f4['done']();setTimeout(this[_0x37c0('0x10')][_0x37c0('0xa')](this),0x3e8);}};RRMemory['prototype'][_0x37c0('0x9')]=function(_0x3af119){this[_0x37c0('0x13')]=rr(this[_0x37c0('0x15')][_0x37c0('0x16')]);logger[_0x37c0('0x14')](_0x37c0('0x17'),this[_0x37c0('0x6')]['id'],this[_0x37c0('0x13')]);if(_['isNil'](this['realtime'][_0x37c0('0x18')][this[_0x37c0('0x13')]])){logger[_0x37c0('0x14')](_0x37c0('0x19'),this['squeue']['id'],this[_0x37c0('0x13')]);_0x3af119['done']();setTimeout(this[_0x37c0('0x10')][_0x37c0('0xa')](this),0x3e8);}else{if(util[_0x37c0('0x12')](this[_0x37c0('0x6')]['id'],this[_0x37c0('0x7')][_0x37c0('0x18')][this[_0x37c0('0x13')]],this['squeue'][_0x37c0('0x1a')],!![])){this[_0x37c0('0x7')][_0x37c0('0x18')][this['agentId']]['busy']=!![];this['realtime'][_0x37c0('0x18')][this['agentId']]['busyQueue']=this['queue'][_0x37c0('0x1b')];util['showNotification'](this[_0x37c0('0x5')],this['squeue']['id'],this[_0x37c0('0x7')][_0x37c0('0x18')][this['agentId']],this['queue'],this['routing']);util[_0x37c0('0x1c')](this[_0x37c0('0x6')]['id'],this[_0x37c0('0x7')][_0x37c0('0x18')][this['agentId']],_0x37c0('0x1d'));this[_0x37c0('0x8')][this['agentId']]=setInterval(this[_0x37c0('0x11')]['bind'](this,_0x3af119),0x3e8);}else{logger[_0x37c0('0x14')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0x37c0('0x6')]['id'],this[_0x37c0('0x13')]);_0x3af119['done']();setTimeout(this['push'][_0x37c0('0xa')](this),0x3e8);}}};RRMemory[_0x37c0('0xf')][_0x37c0('0xb')]=function(_0x4c0bd8){logger['info'](_0x37c0('0x1e'),this[_0x37c0('0x6')]['id'],this[_0x37c0('0x13')]);if(_[_0x37c0('0x1f')](this['realtime'][_0x37c0('0x18')][this['agentId']])){logger[_0x37c0('0x14')](_0x37c0('0x19'),this[_0x37c0('0x6')]['id'],this[_0x37c0('0x13')]);}else{clearInterval(this[_0x37c0('0x8')][this['agentId']]);util[_0x37c0('0x20')](this[_0x37c0('0x5')],this[_0x37c0('0x6')]['id'],this[_0x37c0('0x7')][_0x37c0('0x18')][this[_0x37c0('0x13')]],this[_0x37c0('0x15')],this[_0x37c0('0x4')]);util[_0x37c0('0x1c')](this[_0x37c0('0x6')]['id'],this['realtime'][_0x37c0('0x18')][this[_0x37c0('0x13')]],'TIMEOUT');this[_0x37c0('0x7')]['agents'][this[_0x37c0('0x13')]]['busy']=![];this['realtime'][_0x37c0('0x18')][this['agentId']]['busyQueue']=undefined;}if(!_0x4c0bd8){setTimeout(this[_0x37c0('0x10')]['bind'](this),0x3e8);}};function rrmemory(_0x32f0c5,_0x5168f9,_0x333342,_0x4131e9){return new RRMemory(_0x32f0c5,_0x5168f9,_0x333342,_0x4131e9);}module['exports']=rrmemory;
\ No newline at end of file
+var _0xdc9f=['handleDrained','prototype','push','isAgentAvailable','realtime','agentId','channel','info','queue','mapAgentsId','isNil','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busy','busyQueue','name','showNotification','RINGING','handleCheckReject','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','notificationId','writeLog','TIMEOUT','exports','uuid','../../../../../config/logger','routing','squeue','intervals','handleRun','bind','handleTimeout','module'];(function(_0x2f506e,_0x2bef86){var _0x1a67b2=function(_0x59dd14){while(--_0x59dd14){_0x2f506e['push'](_0x2f506e['shift']());}};_0x1a67b2(++_0x2bef86);}(_0xdc9f,0xa6));var _0xfdc9=function(_0x395aca,_0x1b0717){_0x395aca=_0x395aca-0x0;var _0x379314=_0xdc9f[_0x395aca];return _0x379314;};'use strict';var rr=require('rr');var _=require('lodash');var uuid=require(_0xfdc9('0x0'));var util=require('./util');var logger=require(_0xfdc9('0x1'))(_0xfdc9('0x2'));var RRMemory=function(_0x4e3757,_0x5afcab,_0x595c77,_0x2ea64f){this['notificationId']=uuid['v4']();this[_0xfdc9('0x3')]=_0x4e3757;this['queue']=_0x5afcab;this['realtime']=_0x595c77;this[_0xfdc9('0x2')]=_0x2ea64f;this[_0xfdc9('0x4')]={};this[_0xfdc9('0x3')]['push'](this[_0xfdc9('0x5')][_0xfdc9('0x6')](this),this[_0xfdc9('0x7')][_0xfdc9('0x6')](this),this[_0xfdc9('0x8')]);this[_0xfdc9('0x3')]['on']('timeout',this['handleTimeout']['bind'](this));this['squeue']['on']('drained',this[_0xfdc9('0x9')][_0xfdc9('0x6')](this));};RRMemory[_0xfdc9('0xa')][_0xfdc9('0xb')]=function(){this[_0xfdc9('0x3')][_0xfdc9('0xb')](this[_0xfdc9('0x5')][_0xfdc9('0x6')](this),this[_0xfdc9('0x7')]['bind'](this));};RRMemory[_0xfdc9('0xa')]['handleDrained']=function(_0x5bf6d6){this[_0xfdc9('0x7')](!![]);};RRMemory[_0xfdc9('0xa')]['handleCheckReject']=function(_0x361291){if(util[_0xfdc9('0xc')](this[_0xfdc9('0x3')]['id'],this[_0xfdc9('0xd')]['agents'][this[_0xfdc9('0xe')]],this[_0xfdc9('0x3')][_0xfdc9('0xf')],!![])){logger[_0xfdc9('0x10')]('[%s][QUEUE]\x20available\x20again\x20%s',this['squeue']['id'],this['agentId']);clearInterval(this[_0xfdc9('0x4')][this[_0xfdc9('0xe')]]);_0x361291['done']();setTimeout(this[_0xfdc9('0xb')][_0xfdc9('0x6')](this),0x3e8);}};RRMemory['prototype']['handleRun']=function(_0x8db493){this[_0xfdc9('0xe')]=rr(this[_0xfdc9('0x11')][_0xfdc9('0x12')]);logger['info']('[%s][QUEUE]\x20try\x20with\x20%s',this[_0xfdc9('0x3')]['id'],this[_0xfdc9('0xe')]);if(_[_0xfdc9('0x13')](this[_0xfdc9('0xd')][_0xfdc9('0x14')][this[_0xfdc9('0xe')]])){logger[_0xfdc9('0x10')](_0xfdc9('0x15'),this[_0xfdc9('0x3')]['id'],this[_0xfdc9('0xe')]);_0x8db493['done']();setTimeout(this[_0xfdc9('0xb')]['bind'](this),0x3e8);}else{if(util['isAgentAvailable'](this[_0xfdc9('0x3')]['id'],this[_0xfdc9('0xd')][_0xfdc9('0x14')][this['agentId']],this[_0xfdc9('0x3')][_0xfdc9('0xf')],!![])){this['realtime'][_0xfdc9('0x14')][this[_0xfdc9('0xe')]][_0xfdc9('0x16')]=!![];this[_0xfdc9('0xd')]['agents'][this[_0xfdc9('0xe')]][_0xfdc9('0x17')]=this[_0xfdc9('0x11')][_0xfdc9('0x18')];util[_0xfdc9('0x19')](this['notificationId'],this[_0xfdc9('0x3')]['id'],this[_0xfdc9('0xd')][_0xfdc9('0x14')][this[_0xfdc9('0xe')]],this[_0xfdc9('0x11')],this[_0xfdc9('0x2')]);util['writeLog'](this[_0xfdc9('0x3')]['id'],this['realtime'][_0xfdc9('0x14')][this['agentId']],_0xfdc9('0x1a'));this[_0xfdc9('0x4')][this[_0xfdc9('0xe')]]=setInterval(this[_0xfdc9('0x1b')][_0xfdc9('0x6')](this,_0x8db493),0x3e8);}else{logger[_0xfdc9('0x10')](_0xfdc9('0x1c'),this[_0xfdc9('0x3')]['id'],this['agentId']);_0x8db493['done']();setTimeout(this[_0xfdc9('0xb')][_0xfdc9('0x6')](this),0x3e8);}}};RRMemory[_0xfdc9('0xa')][_0xfdc9('0x7')]=function(_0x194dbc){logger[_0xfdc9('0x10')](_0xfdc9('0x1d'),this[_0xfdc9('0x3')]['id'],this['agentId']);if(_[_0xfdc9('0x13')](this['realtime'][_0xfdc9('0x14')][this[_0xfdc9('0xe')]])){logger[_0xfdc9('0x10')](_0xfdc9('0x15'),this[_0xfdc9('0x3')]['id'],this[_0xfdc9('0xe')]);}else{clearInterval(this[_0xfdc9('0x4')][this['agentId']]);util[_0xfdc9('0x1e')](this[_0xfdc9('0x1f')],this['squeue']['id'],this[_0xfdc9('0xd')][_0xfdc9('0x14')][this[_0xfdc9('0xe')]],this[_0xfdc9('0x11')],this['routing']);util[_0xfdc9('0x20')](this[_0xfdc9('0x3')]['id'],this['realtime'][_0xfdc9('0x14')][this[_0xfdc9('0xe')]],_0xfdc9('0x21'));this['realtime']['agents'][this[_0xfdc9('0xe')]]['busy']=![];this[_0xfdc9('0xd')][_0xfdc9('0x14')][this['agentId']][_0xfdc9('0x17')]=undefined;}if(!_0x194dbc){setTimeout(this[_0xfdc9('0xb')][_0xfdc9('0x6')](this),0x3e8);}};function rrmemory(_0x3b2e38,_0x382856,_0x17a031,_0x36f64e){return new RRMemory(_0x3b2e38,_0x382856,_0x17a031,_0x36f64e);}module[_0xfdc9('0x22')]=rrmemory;
\ No newline at end of file
index 88e979c..9923f30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5496=['isAgentAvailable','busy','BUSY','OFFLINE','Pause','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','writeLog','lodash','util','../utils','mustache','ioredis','../../../../../config/logger','redis','defaults','emit','format','user:%s','user:save','split','account','notificationSound','notificationShake','body','queue','msg','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','[%s][QUEUE]\x20%s','name','notification:%s','remove','info','[%s][QUEUE][AGENT:%s][STATUS:%s]'];(function(_0x17cb83,_0x522481){var _0x386a77=function(_0x26f678){while(--_0x26f678){_0x17cb83['push'](_0x17cb83['shift']());}};_0x386a77(++_0x522481);}(_0x5496,0x175));var _0x6549=function(_0x42c8a8,_0x5cf02a){_0x42c8a8=_0x42c8a8-0x0;var _0x1a0148=_0x5496[_0x42c8a8];return _0x1a0148;};'use strict';var _=require(_0x6549('0x0'));var util=require(_0x6549('0x1'));var utils=require(_0x6549('0x2'));var Mustache=require(_0x6549('0x3'));var Redis=require(_0x6549('0x4'));var config=require('../../../../../config/environment');var logger=require(_0x6549('0x5'))('routing');config[_0x6549('0x6')]=_[_0x6549('0x7')](config[_0x6549('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6549('0x6')]));function emit(_0x1d8cea,_0x4fcffd,_0x1ca8fc){io['to'](_0x1d8cea)[_0x6549('0x8')](_0x4fcffd,_0x1ca8fc);}function sendNotification(_0x1ef2a6,_0x5c47ba,_0xa12086,_0x35d008,_0x2ecce2,_0x135c2c){io['to'](util[_0x6549('0x9')](_0x6549('0xa'),_0x35d008['name']))['emit'](_0x6549('0xb'),_0x35d008);var _0xac828c=_0x135c2c||{};var _0x3c5f9b=_0xa12086[_0x6549('0xc')]('.');var _0x1a0f72={'uniqueid':_0x5c47ba,'channel':_0x3c5f9b[0x0],'id':_0x3c5f9b[0x1],'title':_0x3c5f9b[0x0]+'\x20interaction','interactionId':_0x3c5f9b[0x2],'queue':_0x2ecce2?_0x2ecce2['name']:null,'sound':_0xac828c[_0x6549('0xd')][_0x6549('0xe')],'shake':_0xac828c['account'][_0x6549('0xf')]};try{if(!_0xac828c[_0x6549('0x10')]){_0xac828c[_0x6549('0x10')]={};}if(_0x2ecce2){_0xac828c[_0x6549('0x10')][_0x6549('0x11')]=_0x2ecce2;}else if(_0xac828c[_0x6549('0x10')]['queue']){delete _0xac828c['body'][_0x6549('0x11')];}_0x1a0f72[_0x6549('0x12')]=utils['getMustacheRender'](_0xac828c[_0x6549('0xd')][_0x6549('0x13')],_0xac828c);}catch(_0x4608fb){_0x1a0f72[_0x6549('0x12')]=_0x6549('0x14');logger['error'](util['format'](_0x6549('0x15'),_0x5c47ba,_0x4608fb['message']));}io['to'](util['format'](_0x6549('0xa'),_0x35d008[_0x6549('0x16')]))[_0x6549('0x8')](util[_0x6549('0x9')](_0x6549('0x17'),_0x1ef2a6?'save':_0x6549('0x18')),_0x1a0f72);}function writeLog(_0x4b40c1,_0x125096,_0x72322b){return logger[_0x6549('0x19')](util[_0x6549('0x9')](_0x6549('0x1a'),_0x4b40c1,_0x125096[_0x6549('0x16')],_0x72322b));}exports[_0x6549('0x1b')]=function(_0x25bc01,_0x2be467,_0x6ae00c,_0x40d3f9){if(_0x2be467[_0x6549('0x1c')]){writeLog(_0x25bc01,_0x2be467,_0x6549('0x1d'));return![];}if(!_0x2be467['online']){writeLog(_0x25bc01,_0x2be467,_0x6549('0x1e'));return![];}if(_0x2be467[_0x6ae00c+_0x6549('0x1f')]){writeLog(_0x25bc01,_0x2be467,'PAUSE');return![];}if(_0x40d3f9&&_0x2be467[_0x6549('0x20')](_0x6ae00c+_0x6549('0x21'))&&_0x2be467[_0x6549('0x20')](_0x6ae00c+'CurrentCapacity')){if(_0x2be467[_0x6ae00c+_0x6549('0x21')]>0x0&&_0x2be467[_0x6ae00c+_0x6549('0x22')]>=_0x2be467[_0x6ae00c+_0x6549('0x21')]){writeLog(_0x25bc01,_0x2be467,_0x6ae00c[_0x6549('0x23')]()+_0x6549('0x24'));return![];}}return!![];};exports[_0x6549('0x25')]=function(_0x2f58f7,_0xa6c718,_0x4c52f1,_0x1794bc,_0x136518){return sendNotification(!![],_0x2f58f7,_0xa6c718,_0x4c52f1,_0x1794bc,_0x136518);};exports[_0x6549('0x26')]=function(_0x4c605c,_0x3f1502,_0x4acaf5,_0x4f0ad1,_0x5aa3a6){return sendNotification(![],_0x4c605c,_0x3f1502,_0x4acaf5,_0x4f0ad1,_0x5aa3a6);};exports[_0x6549('0x27')]=writeLog;
\ No newline at end of file
+var _0x57ca=['queue','msg','getMustacheRender','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','message','user:%s','remove','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','online','OFFLINE','Pause','PAUSE','hasOwnProperty','CurrentCapacity','Capacity','toUpperCase','\x20MAXCAPACITY','showNotification','writeLog','util','../utils','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis','localhost','socket.io-emitter','emit','format','name','split','\x20interaction','account','body'];(function(_0x5618c3,_0x15f91c){var _0x31b6dd=function(_0x62cdbd){while(--_0x62cdbd){_0x5618c3['push'](_0x5618c3['shift']());}};_0x31b6dd(++_0x15f91c);}(_0x57ca,0x108));var _0xa57c=function(_0x2ce5b9,_0x2b72b4){_0x2ce5b9=_0x2ce5b9-0x0;var _0x4f33c8=_0x57ca[_0x2ce5b9];return _0x4f33c8;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var utils=require(_0xa57c('0x1'));var Mustache=require('mustache');var Redis=require(_0xa57c('0x2'));var config=require(_0xa57c('0x3'));var logger=require(_0xa57c('0x4'))(_0xa57c('0x5'));config[_0xa57c('0x6')]=_['defaults'](config[_0xa57c('0x6')],{'host':_0xa57c('0x7'),'port':0x18eb});var io=require(_0xa57c('0x8'))(new Redis(config[_0xa57c('0x6')]));function emit(_0xbdfffb,_0x314574,_0x19e28e){io['to'](_0xbdfffb)[_0xa57c('0x9')](_0x314574,_0x19e28e);}function sendNotification(_0x5e3962,_0x13dad8,_0x4b51d8,_0x46ba92,_0x932dcc,_0x4fa5ed){io['to'](util[_0xa57c('0xa')]('user:%s',_0x46ba92[_0xa57c('0xb')]))[_0xa57c('0x9')]('user:save',_0x46ba92);var _0x2ed4c6=_0x4fa5ed||{};var _0x5a8952=_0x4b51d8[_0xa57c('0xc')]('.');var _0x4ca5b2={'uniqueid':_0x13dad8,'channel':_0x5a8952[0x0],'id':_0x5a8952[0x1],'title':_0x5a8952[0x0]+_0xa57c('0xd'),'interactionId':_0x5a8952[0x2],'queue':_0x932dcc?_0x932dcc[_0xa57c('0xb')]:null,'sound':_0x2ed4c6[_0xa57c('0xe')]['notificationSound'],'shake':_0x2ed4c6[_0xa57c('0xe')]['notificationShake']};try{if(!_0x2ed4c6[_0xa57c('0xf')]){_0x2ed4c6[_0xa57c('0xf')]={};}if(_0x932dcc){_0x2ed4c6[_0xa57c('0xf')][_0xa57c('0x10')]=_0x932dcc;}else if(_0x2ed4c6[_0xa57c('0xf')][_0xa57c('0x10')]){delete _0x2ed4c6[_0xa57c('0xf')]['queue'];}_0x4ca5b2[_0xa57c('0x11')]=utils[_0xa57c('0x12')](_0x2ed4c6[_0xa57c('0xe')]['notificationTemplate'],_0x2ed4c6);}catch(_0x2746a0){_0x4ca5b2['msg']=_0xa57c('0x13');logger[_0xa57c('0x14')](util[_0xa57c('0xa')](_0xa57c('0x15'),_0x13dad8,_0x2746a0[_0xa57c('0x16')]));}io['to'](util[_0xa57c('0xa')](_0xa57c('0x17'),_0x46ba92[_0xa57c('0xb')]))['emit'](util[_0xa57c('0xa')]('notification:%s',_0x5e3962?'save':_0xa57c('0x18')),_0x4ca5b2);}function writeLog(_0xa5b314,_0x3eee75,_0x23bec0){return logger['info'](util[_0xa57c('0xa')](_0xa57c('0x19'),_0xa5b314,_0x3eee75[_0xa57c('0xb')],_0x23bec0));}exports[_0xa57c('0x1a')]=function(_0x3bb969,_0x1404fd,_0x1e0192,_0x42038e){if(_0x1404fd[_0xa57c('0x1b')]){writeLog(_0x3bb969,_0x1404fd,_0xa57c('0x1c'));return![];}if(!_0x1404fd[_0xa57c('0x1d')]){writeLog(_0x3bb969,_0x1404fd,_0xa57c('0x1e'));return![];}if(_0x1404fd[_0x1e0192+_0xa57c('0x1f')]){writeLog(_0x3bb969,_0x1404fd,_0xa57c('0x20'));return![];}if(_0x42038e&&_0x1404fd[_0xa57c('0x21')](_0x1e0192+'Capacity')&&_0x1404fd[_0xa57c('0x21')](_0x1e0192+_0xa57c('0x22'))){if(_0x1404fd[_0x1e0192+_0xa57c('0x23')]>0x0&&_0x1404fd[_0x1e0192+_0xa57c('0x22')]>=_0x1404fd[_0x1e0192+_0xa57c('0x23')]){writeLog(_0x3bb969,_0x1404fd,_0x1e0192[_0xa57c('0x24')]()+_0xa57c('0x25'));return![];}}return!![];};exports[_0xa57c('0x26')]=function(_0x337f97,_0x1d59c2,_0x57ebe0,_0x3b7364,_0x4c1478){return sendNotification(!![],_0x337f97,_0x1d59c2,_0x57ebe0,_0x3b7364,_0x4c1478);};exports['hideNotification']=function(_0x257661,_0x7d10ec,_0x5a3e03,_0x12898b,_0x1ef331){return sendNotification(![],_0x257661,_0x7d10ec,_0x5a3e03,_0x12898b,_0x1ef331);};exports[_0xa57c('0x27')]=writeLog;
\ No newline at end of file
index 4de1e82..ac16d10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0c9=['error','[%s][SYSTEM]\x20%s','map','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','isObject','stringify','validate','shelljs','lodash','./utils','../../../../config/logger','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','length'];(function(_0x1fe6d4,_0x50efee){var _0x3bca21=function(_0x5321a9){while(--_0x5321a9){_0x1fe6d4['push'](_0x1fe6d4['shift']());}};_0x3bca21(++_0x50efee);}(_0xb0c9,0xd8));var _0x9b0c=function(_0x140357,_0x6670bd){_0x140357=_0x140357-0x0;var _0x4fdf00=_0xb0c9[_0x140357];return _0x4fdf00;};'use strict';var schema=require(_0x9b0c('0x0'));var sh=require(_0x9b0c('0x1'));var _=require(_0x9b0c('0x2'));var utils=require(_0x9b0c('0x3'));var logger=require(_0x9b0c('0x4'))('routing');var system=schema({'command':{'type':_0x9b0c('0x5'),'required':!![],'message':_0x9b0c('0x6')}});exports['consequence']=function(_0x212267,_0x546faf){return function(_0x2ef7f2){try{var _0x51595b={'command':_0x546faf[0x0]};var _0x30749c=system['validate'](_0x51595b,{'typecast':!![]});if(_0x30749c[_0x9b0c('0x7')]){logger[_0x9b0c('0x8')](_0x9b0c('0x9'),_0x212267,_[_0x9b0c('0xa')](_0x30749c,'message')[_0x9b0c('0xb')](',\x20'));logger[_0x9b0c('0xc')](_0x9b0c('0xd'),_0x212267);_0x2ef7f2[_0x9b0c('0xe')]();}else{var _0x4d8724=this;var _0x26cfea=utils[_0x9b0c('0xf')](_0x546faf[0x0],this);logger[_0x9b0c('0xc')](_0x9b0c('0x10'),_0x212267,_0x26cfea);sh[_0x9b0c('0x11')](_[_0x9b0c('0x12')](_0x26cfea),function(_0x412232,_0x1dd72a){logger[_0x9b0c('0xc')](_0x9b0c('0x13'),_0x212267,_0x412232);if(_0x412232==0x0){var _0x5addbf=_0x1dd72a[_0x9b0c('0x14')](/(\r\n|\n|\r)/gm,'');if(_[_0x9b0c('0x15')](_0x546faf[0x1])||_[_0x9b0c('0x16')](_0x546faf[0x1])){logger[_0x9b0c('0xc')](_0x9b0c('0x17'),_0x212267);_0x4d8724[_0x9b0c('0x18')][_0x546faf[0x1]]=_0x5addbf;}else{logger['info'](_0x9b0c('0x19'),_0x212267,_0x546faf[0x1],_0x5addbf);_0x4d8724[_0x9b0c('0x18')][_0x546faf[0x1]]=_0x5addbf;}}_0x2ef7f2[_0x9b0c('0xe')]();});}}catch(_0x2e6d69){logger[_0x9b0c('0x8')](_0x9b0c('0x9'),_0x212267,_[_0x9b0c('0x1a')](_0x2e6d69)?JSON[_0x9b0c('0x1b')](_0x2e6d69):_0x2e6d69);logger[_0x9b0c('0xc')](_0x9b0c('0xd'),_0x212267);_0x2ef7f2[_0x9b0c('0xe')]();}};};
\ No newline at end of file
+var _0xd9f2=['consequence','length','error','map','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','body','[%s][SYSTEM]\x20%s','isObject','stringify','validate','lodash','./utils','../../../../config/logger','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'];(function(_0x280146,_0x1a79bc){var _0x21ccd1=function(_0x27e8b7){while(--_0x27e8b7){_0x280146['push'](_0x280146['shift']());}};_0x21ccd1(++_0x1a79bc);}(_0xd9f2,0x111));var _0x2d9f=function(_0x41329c,_0x192ad3){_0x41329c=_0x41329c-0x0;var _0x33985d=_0xd9f2[_0x41329c];return _0x33985d;};'use strict';var schema=require(_0x2d9f('0x0'));var sh=require('shelljs');var _=require(_0x2d9f('0x1'));var utils=require(_0x2d9f('0x2'));var logger=require(_0x2d9f('0x3'))(_0x2d9f('0x4'));var system=schema({'command':{'type':_0x2d9f('0x5'),'required':!![],'message':_0x2d9f('0x6')}});exports[_0x2d9f('0x7')]=function(_0x36bd01,_0x30c925){return function(_0x28576f){try{var _0x3d3bf={'command':_0x30c925[0x0]};var _0x198b6e=system[_0x2d9f('0x0')](_0x3d3bf,{'typecast':!![]});if(_0x198b6e[_0x2d9f('0x8')]){logger[_0x2d9f('0x9')]('[%s][SYSTEM]\x20%s',_0x36bd01,_[_0x2d9f('0xa')](_0x198b6e,'message')[_0x2d9f('0xb')](',\x20'));logger[_0x2d9f('0xc')](_0x2d9f('0xd'),_0x36bd01);_0x28576f[_0x2d9f('0xe')]();}else{var _0x4082fe=this;var _0x1af7d8=utils[_0x2d9f('0xf')](_0x30c925[0x0],this);logger[_0x2d9f('0xc')](_0x2d9f('0x10'),_0x36bd01,_0x1af7d8);sh[_0x2d9f('0x11')](_['trim'](_0x1af7d8),function(_0x5e4524,_0x49af85){logger[_0x2d9f('0xc')](_0x2d9f('0x12'),_0x36bd01,_0x5e4524);if(_0x5e4524==0x0){var _0x366782=_0x49af85[_0x2d9f('0x13')](/(\r\n|\n|\r)/gm,'');if(_[_0x2d9f('0x14')](_0x30c925[0x1])||_[_0x2d9f('0x15')](_0x30c925[0x1])){logger[_0x2d9f('0xc')](_0x2d9f('0x16'),_0x36bd01);_0x4082fe['body'][_0x30c925[0x1]]=_0x366782;}else{logger[_0x2d9f('0xc')](_0x2d9f('0x17'),_0x36bd01,_0x30c925[0x1],_0x366782);_0x4082fe[_0x2d9f('0x18')][_0x30c925[0x1]]=_0x366782;}}_0x28576f['next']();});}}catch(_0x4ebb67){logger['error'](_0x2d9f('0x19'),_0x36bd01,_[_0x2d9f('0x1a')](_0x4ebb67)?JSON[_0x2d9f('0x1b')](_0x4ebb67):_0x4ebb67);logger[_0x2d9f('0xc')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x36bd01);_0x28576f[_0x2d9f('0xe')]();}};};
\ No newline at end of file
index d2191f7..f694f82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e60=['catch','finally','next','isObject','info','validate','lodash','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][TAG]\x20%s','map','message','join','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','channel','Interaction','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x9e60,0x1e1));var _0x09e6=function(_0x3422d9,_0x161ebd){_0x3422d9=_0x3422d9-0x0;var _0x3842e5=_0x9e60[_0x3422d9];return _0x3842e5;};'use strict';var schema=require(_0x09e6('0x0'));var _=require(_0x09e6('0x1'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x09e6('0x2')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0x09e6('0x3')),'faxInteraction':require(_0x09e6('0x4')),'whatsappInteraction':require(_0x09e6('0x5'))};var logger=require('../../../../config/logger')(_0x09e6('0x6'));var tag=schema({'tag':{'type':_0x09e6('0x7'),'required':!![],'message':_0x09e6('0x8')}});exports[_0x09e6('0x9')]=function(_0x3fe56e,_0x55acd4,_0x24491b,_0x36e529){return function(_0x374df9){try{var _0x257df7={'tag':_0x55acd4[0x0]};var _0x2a5257=tag[_0x09e6('0x0')](_0x257df7,{'typecast':!![]});if(_0x2a5257[_0x09e6('0xa')]){logger[_0x09e6('0xb')](_0x09e6('0xc'),_0x3fe56e,_[_0x09e6('0xd')](_0x2a5257,_0x09e6('0xe'))[_0x09e6('0xf')](',\x20'));logger['info'](_0x09e6('0x10'),_0x3fe56e);_0x374df9['next']();}else{var _0x3d1118={'ids':[_0x55acd4[0x0]]};if(rpc[_0x36e529[_0x09e6('0x11')]+_0x09e6('0x12')]){rpc[_0x36e529[_0x09e6('0x11')]+_0x09e6('0x12')][_0x09e6('0x13')](_0x36e529[_0x09e6('0x14')]['id'],_0x3d1118)[_0x09e6('0x15')](function(_0x2ce13b){logger['info'](_0x09e6('0x16'),_0x3fe56e,_0x55acd4[0x1],_0x36e529['channel'],_0x36e529[_0x09e6('0x14')]['id']);})[_0x09e6('0x17')](function(_0x30a55a){logger[_0x09e6('0xb')](_0x09e6('0xc'),_0x3fe56e,JSON['stringify'](_0x30a55a));logger['info']('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x3fe56e);})[_0x09e6('0x18')](function(){_0x374df9[_0x09e6('0x19')]();});}}}catch(_0x5bd33e){logger[_0x09e6('0xb')](_0x09e6('0xc'),_0x3fe56e,_[_0x09e6('0x1a')](_0x5bd33e)?JSON['stringify'](_0x5bd33e):_0x5bd33e);logger[_0x09e6('0x1b')](_0x09e6('0x10'),_0x3fe56e);_0x374df9[_0x09e6('0x19')]();}};};
\ No newline at end of file
+var _0xc0d4=['consequence','length','error','[%s][TAG]\x20%s','map','message','join','info','next','Interaction','channel','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','finally','stringify','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','validate','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'];(function(_0x8d7252,_0x1dce95){var _0x22344b=function(_0x50d2f7){while(--_0x50d2f7){_0x8d7252['push'](_0x8d7252['shift']());}};_0x22344b(++_0x1dce95);}(_0xc0d4,0x1b1));var _0x4c0d=function(_0x40889c,_0x73e154){_0x40889c=_0x40889c-0x0;var _0x1e69a3=_0xc0d4[_0x40889c];return _0x1e69a3;};'use strict';var schema=require(_0x4c0d('0x0'));var _=require(_0x4c0d('0x1'));var rpc={'chatInteraction':require(_0x4c0d('0x2')),'openchannelInteraction':require(_0x4c0d('0x3')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0x4c0d('0x4')),'faxInteraction':require(_0x4c0d('0x5')),'whatsappInteraction':require(_0x4c0d('0x6'))};var logger=require('../../../../config/logger')(_0x4c0d('0x7'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0x4c0d('0x8')}});exports[_0x4c0d('0x9')]=function(_0x3f7472,_0x958c4a,_0x44ebe5,_0x49d3aa){return function(_0x228e5){try{var _0x12a257={'tag':_0x958c4a[0x0]};var _0x4c765c=tag[_0x4c0d('0x0')](_0x12a257,{'typecast':!![]});if(_0x4c765c[_0x4c0d('0xa')]){logger[_0x4c0d('0xb')](_0x4c0d('0xc'),_0x3f7472,_[_0x4c0d('0xd')](_0x4c765c,_0x4c0d('0xe'))[_0x4c0d('0xf')](',\x20'));logger[_0x4c0d('0x10')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x3f7472);_0x228e5[_0x4c0d('0x11')]();}else{var _0x884ce4={'ids':[_0x958c4a[0x0]]};if(rpc[_0x49d3aa['channel']+_0x4c0d('0x12')]){rpc[_0x49d3aa[_0x4c0d('0x13')]+_0x4c0d('0x12')]['addTags'](_0x49d3aa[_0x4c0d('0x14')]['id'],_0x884ce4)[_0x4c0d('0x15')](function(_0x4f3d55){logger['info'](_0x4c0d('0x16'),_0x3f7472,_0x958c4a[0x1],_0x49d3aa[_0x4c0d('0x13')],_0x49d3aa[_0x4c0d('0x14')]['id']);})['catch'](function(_0x4671a1){logger[_0x4c0d('0xb')](_0x4c0d('0xc'),_0x3f7472,JSON['stringify'](_0x4671a1));logger[_0x4c0d('0x10')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x3f7472);})[_0x4c0d('0x17')](function(){_0x228e5[_0x4c0d('0x11')]();});}}}catch(_0x4533fa){logger['error'](_0x4c0d('0xc'),_0x3f7472,_['isObject'](_0x4533fa)?JSON[_0x4c0d('0x18')](_0x4533fa):_0x4533fa);logger[_0x4c0d('0x10')](_0x4c0d('0x19'),_0x3f7472);_0x228e5[_0x4c0d('0x11')]();}};};
\ No newline at end of file
index 990d842..2d988c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['merge','body','contact','message','list','mustache','lodash','render'];(function(_0x2c5b43,_0x2b7a8a){var _0x2ef2d6=function(_0xa4485d){while(--_0xa4485d){_0x2c5b43['push'](_0x2c5b43['shift']());}};_0x2ef2d6(++_0x2b7a8a);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Mustache=require(_0x0d8b('0x0'));var _=require(_0x0d8b('0x1'));module['exports']={'getMustacheRender':function(_0x585166,_0x4b72b0){return Mustache[_0x0d8b('0x2')](_0x585166,_[_0x0d8b('0x3')](_0x4b72b0[_0x0d8b('0x4')],{'contact':_0x4b72b0[_0x0d8b('0x5')],'message':_0x4b72b0[_0x0d8b('0x6')],'account':_0x4b72b0['account'],'interaction':_0x4b72b0['interaction'],'list':_0x4b72b0[_0x0d8b('0x7')]}))||'';}};
\ No newline at end of file
+var _0xd8b0=['merge','body','contact','message','list','mustache','lodash','render'];(function(_0x3c658e,_0x2ab652){var _0x2ac224=function(_0x2d956c){while(--_0x2d956c){_0x3c658e['push'](_0x3c658e['shift']());}};_0x2ac224(++_0x2ab652);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var Mustache=require(_0x0d8b('0x0'));var _=require(_0x0d8b('0x1'));module['exports']={'getMustacheRender':function(_0x585166,_0x4b72b0){return Mustache[_0x0d8b('0x2')](_0x585166,_[_0x0d8b('0x3')](_0x4b72b0[_0x0d8b('0x4')],{'contact':_0x4b72b0[_0x0d8b('0x5')],'message':_0x4b72b0[_0x0d8b('0x6')],'account':_0x4b72b0['account'],'interaction':_0x4b72b0['interaction'],'list':_0x4b72b0[_0x0d8b('0x7')]}))||'';}};
\ No newline at end of file
index 2d162c5..938b893 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eef=['condition','intervals','consequence','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','rules','execute','Applications\x20executed','stringify','matchPath','emit','No\x20applications\x20to\x20execute','error','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','QueueReport','update','UserId','message\x20is\x20empty','capacity','hasOwnProperty','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','loggedIn','paused','waiting','mailQueues','available','openchannelQueues','name','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','path','bluebird','../../../config/environment','../../../config/logger','routing','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','isNil','IntervalId','interval','listen','channel','message','interaction','applications','isArray','length','join','app','toLowerCase','autoreply','appdata','mail','push','slice','dialogflow','split','dialogflowv2','amazonlex','tag','%s:%s:%s'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x5eef,0x8d));var _0xf5ee=function(_0x34a755,_0x220815){_0x34a755=_0x34a755-0x0;var _0x36aa9c=_0x5eef[_0x34a755];return _0x36aa9c;};'use strict';var _=require('lodash');var util=require(_0xf5ee('0x0'));var path=require(_0xf5ee('0x1'));var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0xf5ee('0x2'));var uuid=require('uuid');var config=require(_0xf5ee('0x3'));var logger=require(_0xf5ee('0x4'))(_0xf5ee('0x5'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xf5ee('0x6')),'chatQueueReport':require(_0xf5ee('0x7')),'smsQueueReport':require(_0xf5ee('0x8')),'faxQueueReport':require(_0xf5ee('0x9')),'whatsappQueueReport':require(_0xf5ee('0xa'))};var RuleEngine=require(_0xf5ee('0xb'));function getId(_0x1163d5,_0x35f017,_0x992f32){return util[_0xf5ee('0xc')]('%s.%s.%s',_0x1163d5,_0x35f017||0x0,_0x992f32||0x0);}function getIntervals(_0xe01fe,_0x20885b){var _0x117a71=[];if(!_[_0xf5ee('0xd')](_0x20885b[_0xf5ee('0xe')])&&!_[_0xf5ee('0xd')](_0xe01fe[_0x20885b['IntervalId']])&&!_['isNil'](_0xe01fe[_0x20885b[_0xf5ee('0xe')]]['Intervals'])){_0x117a71=_['map'](_0xe01fe[_0x20885b['IntervalId']]['Intervals'],_0xf5ee('0xf'));}else if(!_[_0xf5ee('0xd')](_0x20885b['interval'])){_0x117a71=[_0x20885b[_0xf5ee('0xf')]];}return _0x117a71;}exports[_0xf5ee('0x10')]=function(_0x2b6953){_0x2b6953['rules']={};return new BPromise(function(_0x29f616,_0xc41571){var _0x54b0d={'Start':function(_0x3f05ca){var _0x25a628=this;return new Promise(function(_0x3dbba7,_0x1d571a){if(_0x3f05ca){try{var _0x43b3a0=[];var _0x42b663=getId(_0x3f05ca[_0xf5ee('0x11')],_0x3f05ca['message']?_0x3f05ca[_0xf5ee('0x12')]['id']:0x0,_0x3f05ca[_0xf5ee('0x13')]?_0x3f05ca[_0xf5ee('0x13')]['id']:0x0);if(_0x3f05ca[_0xf5ee('0x14')]&&_[_0xf5ee('0x15')](_0x3f05ca[_0xf5ee('0x14')])&&_0x3f05ca[_0xf5ee('0x14')][_0xf5ee('0x16')]){for(var _0xb50e4c=0x0;_0xb50e4c<_0x3f05ca['applications']['length'];_0xb50e4c+=0x1){var _0x20ceaf=_0x3f05ca[_0xf5ee('0x14')][_0xb50e4c];if(fs['existsSync'](path[_0xf5ee('0x17')](__dirname,'applications',_0x20ceaf[_0xf5ee('0x18')]+'.js'))){var _0x4d5b78=[];switch(_0x20ceaf[_0xf5ee('0x18')][_0xf5ee('0x19')]()){case _0xf5ee('0x1a'):var _0x35394e=_0x20ceaf[_0xf5ee('0x1b')]['split'](',');if(_0x3f05ca[_0xf5ee('0x11')]===_0xf5ee('0x1c')){_0x4d5b78[_0xf5ee('0x1d')](_0x35394e[0x0]);_0x4d5b78[_0xf5ee('0x1d')](_0x35394e[0x1]);_0x4d5b78[_0xf5ee('0x1d')](_0x35394e[_0xf5ee('0x1e')](0x2,_0x35394e['length'])[_0xf5ee('0x17')](','));}else{_0x4d5b78[_0xf5ee('0x1d')](_0x35394e[0x0]);_0x4d5b78[_0xf5ee('0x1d')](_0x35394e[_0xf5ee('0x1e')](0x1,_0x35394e[_0xf5ee('0x16')])[_0xf5ee('0x17')](','));}break;case _0xf5ee('0x1f'):var _0x44b569=_0x20ceaf['appdata'][_0xf5ee('0x20')](',');_0x4d5b78['push'](_0x44b569[0x0]);_0x4d5b78[_0xf5ee('0x1d')](_0x44b569[0x1]);_0x4d5b78[_0xf5ee('0x1d')](_0x44b569[_0xf5ee('0x1e')](0x2,_0x44b569['length'])[_0xf5ee('0x17')](','));break;case _0xf5ee('0x21'):var _0x7a53=_0x20ceaf['appdata'][_0xf5ee('0x20')](',');_0x4d5b78['push'](_0x7a53[0x0]);_0x4d5b78[_0xf5ee('0x1d')](_0x7a53[0x1]);_0x4d5b78[_0xf5ee('0x1d')](_0x7a53[0x2]);_0x4d5b78[_0xf5ee('0x1d')](_0x7a53[0x3]);_0x4d5b78[_0xf5ee('0x1d')](_0x7a53[_0xf5ee('0x1e')](0x4,_0x7a53['length'])[_0xf5ee('0x17')](','));break;case _0xf5ee('0x22'):var _0x329388=_0x20ceaf['appdata'][_0xf5ee('0x20')](',');_0x4d5b78[_0xf5ee('0x1d')](_0x329388[0x0]);_0x4d5b78[_0xf5ee('0x1d')](_0x329388[0x1]);_0x4d5b78[_0xf5ee('0x1d')](_0x329388[0x2]);_0x4d5b78['push'](_0x329388[0x3]);_0x4d5b78['push'](_0x329388[_0xf5ee('0x1e')](0x4,_0x329388[_0xf5ee('0x16')])['join'](','));break;case'message':_0x4d5b78[_0xf5ee('0x1d')](_0x20ceaf['appdata']);break;case _0xf5ee('0x23'):_0x4d5b78[_0xf5ee('0x1d')](_0x20ceaf['TagId']);_0x4d5b78['push'](_0x20ceaf[_0xf5ee('0x1b')]);break;default:_0x4d5b78=_['isNil'](_0x20ceaf['appdata'])?[]:_0x20ceaf[_0xf5ee('0x1b')][_0xf5ee('0x20')](',');}var _0x16d08c={'id':util[_0xf5ee('0xc')](_0xf5ee('0x24'),_0x42b663,_0x20ceaf['id'],_0x20ceaf['app']),'condition':require('./interval')[_0xf5ee('0x25')](_0x42b663,getIntervals(_0x2b6953[_0xf5ee('0x26')],_0x20ceaf),_0x2b6953),'consequence':require('./applications/'+_0x20ceaf['app'])[_0xf5ee('0x27')](_0x42b663,_0x4d5b78,_0x2b6953,_0x3f05ca),'p':_0x20ceaf['priority']||0x0};logger[_0xf5ee('0x28')](_0xf5ee('0x29'),_0x16d08c['id'],_0xf5ee('0x2a'),getIntervals(_0x2b6953[_0xf5ee('0x26')],_0x20ceaf)['join'](_0xf5ee('0x2b')));_0x43b3a0[_0xf5ee('0x1d')](_0x16d08c);}else{logger['error']('Please\x20create\x20a\x20new\x20file\x20under',path[_0xf5ee('0x17')](__dirname,_0xf5ee('0x14'),_0x20ceaf[_0xf5ee('0x18')]+'.js'));}}_0x2b6953[_0xf5ee('0x2c')][_0x42b663]=new RuleEngine(_0x43b3a0);_0x2b6953['rules'][_0x42b663][_0xf5ee('0x2d')](_0x3f05ca,function(_0x408bba){logger[_0xf5ee('0x28')](_0xf5ee('0x2e'),JSON[_0xf5ee('0x2f')](_0x408bba[_0xf5ee('0x30')]));if(_0x2b6953[_0xf5ee('0x2c')][_0x42b663]){_0x2b6953['rules'][_0x42b663][_0xf5ee('0x31')]('complete');}});return _0x3dbba7({'code':0xc8,'message':_0x3f05ca});}else{logger['info'](_0xf5ee('0x32'));return _0x3dbba7({'code':0xc8,'message':_0x3f05ca});}}catch(_0xb02cd8){logger[_0xf5ee('0x33')](_0xb02cd8[_0xf5ee('0x34')]);return _0x1d571a(_0x25a628[_0xf5ee('0x33')](0x1f4,_0xb02cd8));}}return _0x1d571a(_0xf5ee('0x35'));});},'AcceptMessage':function(_0x453c80){var _0x415005=this;return new Promise(function(_0x479b74,_0x261550){if(_0x453c80[_0xf5ee('0x36')]&&_0x453c80[_0xf5ee('0x36')]['id']){if(_0x2b6953[_0xf5ee('0x37')][_0x453c80[_0xf5ee('0x36')]['id']]){_0x2b6953[_0xf5ee('0x37')][_0x453c80[_0xf5ee('0x36')]['id']][_0xf5ee('0x38')]=![];_0x2b6953[_0xf5ee('0x37')][_0x453c80[_0xf5ee('0x36')]['id']][_0xf5ee('0x39')]=undefined;}}if(_0x453c80[_0xf5ee('0x12')]&&_0x453c80[_0xf5ee('0x12')]['id']){try{var _0x283d1c=getId(_0x453c80[_0xf5ee('0x11')],_0x453c80['message']?_0x453c80[_0xf5ee('0x12')]['id']:0x0,_0x453c80[_0xf5ee('0x13')]?_0x453c80[_0xf5ee('0x13')]['id']:0x0);if(_0x2b6953['rules'][_0x283d1c]){_0x2b6953[_0xf5ee('0x2c')][_0x283d1c][_0xf5ee('0x31')]('end');if(rpc[_0x453c80[_0xf5ee('0x11')]+_0xf5ee('0x3a')]){rpc[_0x453c80[_0xf5ee('0x11')]+_0xf5ee('0x3a')][_0xf5ee('0x3b')](_0x283d1c,{'UserId':_0x453c80[_0xf5ee('0x12')][_0xf5ee('0x3c')]})['catch'](function(_0x261589){logger[_0xf5ee('0x33')]('error\x20update\x20queue\x20report');});}}return _0x479b74({'code':0xc8,'message':_0x453c80});}catch(_0x7ffa43){logger[_0xf5ee('0x33')](_0x7ffa43['stack']);return _0x261550(_0x415005['error'](0x1f4,_0x7ffa43));}}logger[_0xf5ee('0x33')](_0xf5ee('0x3d'));return _0x261550(_0x415005[_0xf5ee('0x33')](0x1f4,_0xf5ee('0x3d')));});},'RejectMessage':function(_0x3b85bb){var _0x1db883=this;return new Promise(function(_0x268ab8,_0x4f2632){if(_0x3b85bb['agent']&&_0x3b85bb[_0xf5ee('0x36')]['id']){try{if(_0x2b6953[_0xf5ee('0x37')][_0x3b85bb[_0xf5ee('0x36')]['id']]){_0x2b6953[_0xf5ee('0x37')][_0x3b85bb[_0xf5ee('0x36')]['id']]['busy']=![];_0x2b6953[_0xf5ee('0x37')][_0x3b85bb[_0xf5ee('0x36')]['id']][_0xf5ee('0x39')]=undefined;}return _0x268ab8({'code':0xc8,'message':_0x3b85bb});}catch(_0x5c7158){logger[_0xf5ee('0x33')](_0x5c7158[_0xf5ee('0x34')]);return _0x4f2632(_0x1db883[_0xf5ee('0x33')](0x1f4,_0x5c7158));}}logger['error'](_0xf5ee('0x3d'));return _0x4f2632(_0x1db883['error'](0x1f4,_0xf5ee('0x3d')));});},'AbandonInteraction':function(_0x2648a3){var _0xbd2386=this;return new Promise(function(_0x40fff4,_0x1937f8){if(_0x2648a3[_0xf5ee('0x11')]&&_0x2648a3[_0xf5ee('0x13')]&&_0x2648a3['interaction']['id']){try{var _0x55bf7c=getId(_0x2648a3[_0xf5ee('0x11')],_0x2648a3[_0xf5ee('0x12')]?_0x2648a3[_0xf5ee('0x12')]['id']:0x0,_0x2648a3['interaction']?_0x2648a3[_0xf5ee('0x13')]['id']:0x0);if(_0x2b6953[_0xf5ee('0x2c')][_0x55bf7c]){_0x2b6953[_0xf5ee('0x2c')][_0x55bf7c][_0xf5ee('0x31')]('end');}return _0x40fff4({'code':0xc8,'message':_0x2648a3});}catch(_0x34546e){logger[_0xf5ee('0x33')](_0x34546e[_0xf5ee('0x34')]);return _0x1937f8(_0xbd2386[_0xf5ee('0x33')](0x1f4,_0x34546e));}}logger['error']('message\x20is\x20empty');return _0x1937f8(_0xbd2386['error'](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x130c57){var _0x320387=this;return new Promise(function(_0x3b9f46,_0xb1f0ba){if(_0x2b6953[_0xf5ee('0x37')]['hasOwnProperty'](_0x130c57['id'])){for(var _0x1dab12 in _0x130c57[_0xf5ee('0x3e')]){if(_0x130c57['capacity'][_0xf5ee('0x3f')](_0x1dab12)){if(_0x2b6953['agents'][_0x130c57['id']]['hasOwnProperty'](_0x1dab12+_0xf5ee('0x40'))){_0x2b6953[_0xf5ee('0x37')][_0x130c57['id']][_0x1dab12+_0xf5ee('0x40')]=parseInt(_0x130c57['capacity'][_0x1dab12],0xa);}}}_0x2b6953[_0xf5ee('0x37')][_0x130c57['id']][_0xf5ee('0x41')]();return _0x3b9f46({'code':0xc8,'message':_0x2b6953[_0xf5ee('0x37')][_0x130c57['id']]});}else{return _0xb1f0ba(_0x320387['error'](0x1f4,_0xf5ee('0x42')));}});},'Agents':function(_0x3c94b1){return new Promise(function(_0x11819f,_0x14a464){var _0x126f7f=_[_0xf5ee('0x43')](_0x2b6953[_0xf5ee('0x37')]);_0x11819f({'count':_0x126f7f['length'],'rows':_0x126f7f});});},'ChatQueues':function(_0x1fa035){return new Promise(function(_0xac7cdc,_0x237260){var _0x4bd98b=[];for(var _0x20d27c in _0x2b6953[_0xf5ee('0x44')]){if(_0x2b6953[_0xf5ee('0x44')][_0xf5ee('0x3f')](_0x20d27c)){var _0x252a13=_0x2b6953[_0xf5ee('0x44')][_0x20d27c];var _0x14b8ab={'id':_0x252a13['id'],'available':_0x252a13['available'],'loggedIn':_0x252a13[_0xf5ee('0x45')],'name':_0x252a13['name'],'paused':_0x252a13[_0xf5ee('0x46')],'waiting':_0x252a13[_0xf5ee('0x47')]};_0x4bd98b[_0xf5ee('0x1d')](_0x14b8ab);}}_0xac7cdc({'count':_0x4bd98b[_0xf5ee('0x16')],'rows':_0x4bd98b});});},'MailQueues':function(_0xbd07bf){return new Promise(function(_0x11b4ae,_0x4a6e13){var _0x1ce00c=[];for(var _0x31feb1 in _0x2b6953['mailQueues']){if(_0x2b6953['mailQueues'][_0xf5ee('0x3f')](_0x31feb1)){var _0x2bf324=_0x2b6953[_0xf5ee('0x48')][_0x31feb1];var _0x20c2b5={'id':_0x2bf324['id'],'available':_0x2bf324[_0xf5ee('0x49')],'loggedIn':_0x2bf324[_0xf5ee('0x45')],'name':_0x2bf324['name'],'paused':_0x2bf324[_0xf5ee('0x46')],'waiting':_0x2bf324[_0xf5ee('0x47')]};_0x1ce00c[_0xf5ee('0x1d')](_0x20c2b5);}}_0x11b4ae({'count':_0x1ce00c[_0xf5ee('0x16')],'rows':_0x1ce00c});});},'OpenchannelQueues':function(_0x68d9a0){return new Promise(function(_0xfacd3c,_0x2c15e1){var _0x53f58d=[];for(var _0x4a4c73 in _0x2b6953[_0xf5ee('0x4a')]){if(_0x2b6953['openchannelQueues'][_0xf5ee('0x3f')](_0x4a4c73)){var _0xf3688f=_0x2b6953[_0xf5ee('0x4a')][_0x4a4c73];var _0x5de1ea={'id':_0xf3688f['id'],'available':_0xf3688f[_0xf5ee('0x49')],'loggedIn':_0xf3688f[_0xf5ee('0x45')],'name':_0xf3688f[_0xf5ee('0x4b')],'paused':_0xf3688f['paused'],'waiting':_0xf3688f[_0xf5ee('0x47')]};_0x53f58d[_0xf5ee('0x1d')](_0x5de1ea);}}_0xfacd3c({'count':_0x53f58d[_0xf5ee('0x16')],'rows':_0x53f58d});});},'SmsQueues':function(_0x3185a7){return new Promise(function(_0x5508b7,_0x57d12f){var _0x5dd6f7=[];for(var _0x199ea6 in _0x2b6953[_0xf5ee('0x4c')]){if(_0x2b6953[_0xf5ee('0x4c')][_0xf5ee('0x3f')](_0x199ea6)){var _0x1eecf9=_0x2b6953[_0xf5ee('0x4c')][_0x199ea6];var _0x251ab2={'id':_0x1eecf9['id'],'available':_0x1eecf9[_0xf5ee('0x49')],'loggedIn':_0x1eecf9[_0xf5ee('0x45')],'name':_0x1eecf9[_0xf5ee('0x4b')],'paused':_0x1eecf9[_0xf5ee('0x46')],'waiting':_0x1eecf9[_0xf5ee('0x47')]};_0x5dd6f7['push'](_0x251ab2);}}_0x5508b7({'count':_0x5dd6f7[_0xf5ee('0x16')],'rows':_0x5dd6f7});});},'FaxQueues':function(_0x52067a){return new Promise(function(_0x2d1fd0,_0x46a4f0){var _0x31b445=[];for(var _0xccc643 in _0x2b6953['faxQueues']){if(_0x2b6953[_0xf5ee('0x4d')][_0xf5ee('0x3f')](_0xccc643)){var _0x1a2706=_0x2b6953['faxQueues'][_0xccc643];var _0x5f4433={'id':_0x1a2706['id'],'available':_0x1a2706['available'],'loggedIn':_0x1a2706[_0xf5ee('0x45')],'name':_0x1a2706['name'],'paused':_0x1a2706[_0xf5ee('0x46')],'waiting':_0x1a2706['waiting']};_0x31b445[_0xf5ee('0x1d')](_0x5f4433);}}_0x2d1fd0({'count':_0x31b445[_0xf5ee('0x16')],'rows':_0x31b445});});},'WhatsappQueues':function(_0x4fa6ed){return new Promise(function(_0x166478,_0x2a1c7b){var _0x1a58b0=[];for(var _0x5bac5f in _0x2b6953['whatsappQueues']){if(_0x2b6953[_0xf5ee('0x4e')]['hasOwnProperty'](_0x5bac5f)){var _0x5abf65=_0x2b6953[_0xf5ee('0x4e')][_0x5bac5f];var _0x4f8f77={'id':_0x5abf65['id'],'available':_0x5abf65['available'],'loggedIn':_0x5abf65[_0xf5ee('0x45')],'name':_0x5abf65[_0xf5ee('0x4b')],'paused':_0x5abf65[_0xf5ee('0x46')],'waiting':_0x5abf65[_0xf5ee('0x47')]};_0x1a58b0[_0xf5ee('0x1d')](_0x4f8f77);}}_0x166478({'count':_0x1a58b0[_0xf5ee('0x16')],'rows':_0x1a58b0});});},'ChatQueuesWaitingInteractions':function(_0x2858ed){return new Promise(function(_0x33f26b,_0x22508d){var _0x2cc92c=_['values'](_0x2b6953[_0xf5ee('0x4f')]);_0x33f26b({'count':_0x2cc92c[_0xf5ee('0x16')],'rows':_0x2cc92c});});},'MailQueuesWaitingInteractions':function(_0x27f885){return new Promise(function(_0x57ce4e,_0x2434f6){var _0x29f614=_['values'](_0x2b6953[_0xf5ee('0x50')]);_0x57ce4e({'count':_0x29f614[_0xf5ee('0x16')],'rows':_0x29f614});});},'OpenchannelQueuesWaitingInteractions':function(_0x17467e){return new Promise(function(_0xef568c,_0x4bdc18){var _0x33bf78=_[_0xf5ee('0x43')](_0x2b6953[_0xf5ee('0x51')]);_0xef568c({'count':_0x33bf78[_0xf5ee('0x16')],'rows':_0x33bf78});});},'SmsQueuesWaitingInteractions':function(_0x5bb5bf){return new Promise(function(_0x21b6e0,_0x4c5a97){var _0x40c8a2=_[_0xf5ee('0x43')](_0x2b6953[_0xf5ee('0x52')]);_0x21b6e0({'count':_0x40c8a2[_0xf5ee('0x16')],'rows':_0x40c8a2});});},'FaxQueuesWaitingInteractions':function(_0x28298d){return new Promise(function(_0x2f3ac0,_0x10d8d9){var _0x3da380=_['values'](_0x2b6953[_0xf5ee('0x53')]);_0x2f3ac0({'count':_0x3da380['length'],'rows':_0x3da380});});},'WhatsappQueuesWaitingInteractions':function(_0x530543){return new Promise(function(_0x25342b,_0x525e34){var _0x58b78b=_[_0xf5ee('0x43')](_0x2b6953[_0xf5ee('0x54')]);_0x25342b({'count':_0x58b78b[_0xf5ee('0x16')],'rows':_0x58b78b});});}};var _0x218937=jayson['server'](_0x54b0d)['http']();_0x218937['on'](_0xf5ee('0x33'),function(_0x10a166){logger[_0xf5ee('0x33')](JSON[_0xf5ee('0x2f')](_0x10a166));return _0xc41571(_0x10a166);});_0x218937['listen'](0x232c,_0xf5ee('0x55'),function(){console[_0xf5ee('0x56')](_0xf5ee('0x57'),0x232c);return _0x29f616(_0xf5ee('0x58')+0x232c);});});};
\ No newline at end of file
+var _0x1cc9=['name','openchannelQueues','smsQueues','whatsappQueues','values','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','listen','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','path','jayson/promise','uuid','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','rules','channel','message','interaction','applications','isArray','length','existsSync','app','.js','toLowerCase','appdata','split','push','slice','join','amazonlex','TagId','./interval','condition','intervals','consequence','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','execute','stringify','emit','complete','No\x20applications\x20to\x20execute','error','stack','routing\x20is\x20empty','agent','agents','QueueReport','update','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','busy','busyQueue','end','hasOwnProperty','capacity','agent\x20not\x20found','chatQueues','loggedIn','paused','waiting','mailQueues','available'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0x1cc9,0x1c6));var _0x91cc=function(_0x43c0eb,_0x3f0388){_0x43c0eb=_0x43c0eb-0x0;var _0x12815e=_0x1cc9[_0x43c0eb];return _0x12815e;};'use strict';var _=require('lodash');var util=require(_0x91cc('0x0'));var path=require(_0x91cc('0x1'));var fs=require('fs');var jayson=require(_0x91cc('0x2'));var BPromise=require('bluebird');var uuid=require(_0x91cc('0x3'));var config=require(_0x91cc('0x4'));var logger=require(_0x91cc('0x5'))(_0x91cc('0x6'));var rpc={'openchannelQueueReport':require(_0x91cc('0x7')),'mailQueueReport':require(_0x91cc('0x8')),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require(_0x91cc('0x9')),'faxQueueReport':require(_0x91cc('0xa')),'whatsappQueueReport':require(_0x91cc('0xb'))};var RuleEngine=require(_0x91cc('0xc'));function getId(_0x369588,_0x3ac1bf,_0x5f9840){return util[_0x91cc('0xd')](_0x91cc('0xe'),_0x369588,_0x3ac1bf||0x0,_0x5f9840||0x0);}function getIntervals(_0x507d32,_0x51f545){var _0x1741c5=[];if(!_[_0x91cc('0xf')](_0x51f545['IntervalId'])&&!_[_0x91cc('0xf')](_0x507d32[_0x51f545[_0x91cc('0x10')]])&&!_[_0x91cc('0xf')](_0x507d32[_0x51f545[_0x91cc('0x10')]][_0x91cc('0x11')])){_0x1741c5=_[_0x91cc('0x12')](_0x507d32[_0x51f545[_0x91cc('0x10')]]['Intervals'],_0x91cc('0x13'));}else if(!_[_0x91cc('0xf')](_0x51f545['interval'])){_0x1741c5=[_0x51f545[_0x91cc('0x13')]];}return _0x1741c5;}exports['listen']=function(_0xa77ae0){_0xa77ae0[_0x91cc('0x14')]={};return new BPromise(function(_0x569d49,_0x887354){var _0x28e864={'Start':function(_0x53b9f3){var _0x462f51=this;return new Promise(function(_0x69e3fc,_0x270017){if(_0x53b9f3){try{var _0x354538=[];var _0xfeea13=getId(_0x53b9f3[_0x91cc('0x15')],_0x53b9f3[_0x91cc('0x16')]?_0x53b9f3[_0x91cc('0x16')]['id']:0x0,_0x53b9f3[_0x91cc('0x17')]?_0x53b9f3[_0x91cc('0x17')]['id']:0x0);if(_0x53b9f3[_0x91cc('0x18')]&&_[_0x91cc('0x19')](_0x53b9f3['applications'])&&_0x53b9f3[_0x91cc('0x18')][_0x91cc('0x1a')]){for(var _0x46ea25=0x0;_0x46ea25<_0x53b9f3['applications'][_0x91cc('0x1a')];_0x46ea25+=0x1){var _0x1089ae=_0x53b9f3[_0x91cc('0x18')][_0x46ea25];if(fs[_0x91cc('0x1b')](path['join'](__dirname,'applications',_0x1089ae[_0x91cc('0x1c')]+_0x91cc('0x1d')))){var _0x15ca67=[];switch(_0x1089ae[_0x91cc('0x1c')][_0x91cc('0x1e')]()){case'autoreply':var _0x2aa7ee=_0x1089ae[_0x91cc('0x1f')][_0x91cc('0x20')](',');if(_0x53b9f3[_0x91cc('0x15')]==='mail'){_0x15ca67[_0x91cc('0x21')](_0x2aa7ee[0x0]);_0x15ca67[_0x91cc('0x21')](_0x2aa7ee[0x1]);_0x15ca67[_0x91cc('0x21')](_0x2aa7ee[_0x91cc('0x22')](0x2,_0x2aa7ee[_0x91cc('0x1a')])['join'](','));}else{_0x15ca67[_0x91cc('0x21')](_0x2aa7ee[0x0]);_0x15ca67[_0x91cc('0x21')](_0x2aa7ee[_0x91cc('0x22')](0x1,_0x2aa7ee[_0x91cc('0x1a')])[_0x91cc('0x23')](','));}break;case'dialogflow':var _0x20ed41=_0x1089ae['appdata']['split'](',');_0x15ca67['push'](_0x20ed41[0x0]);_0x15ca67[_0x91cc('0x21')](_0x20ed41[0x1]);_0x15ca67[_0x91cc('0x21')](_0x20ed41['slice'](0x2,_0x20ed41['length'])[_0x91cc('0x23')](','));break;case'dialogflowv2':var _0x2ed9f4=_0x1089ae['appdata'][_0x91cc('0x20')](',');_0x15ca67['push'](_0x2ed9f4[0x0]);_0x15ca67['push'](_0x2ed9f4[0x1]);_0x15ca67[_0x91cc('0x21')](_0x2ed9f4[0x2]);_0x15ca67[_0x91cc('0x21')](_0x2ed9f4[0x3]);_0x15ca67[_0x91cc('0x21')](_0x2ed9f4[_0x91cc('0x22')](0x4,_0x2ed9f4[_0x91cc('0x1a')])[_0x91cc('0x23')](','));break;case _0x91cc('0x24'):var _0x45185a=_0x1089ae[_0x91cc('0x1f')][_0x91cc('0x20')](',');_0x15ca67['push'](_0x45185a[0x0]);_0x15ca67[_0x91cc('0x21')](_0x45185a[0x1]);_0x15ca67[_0x91cc('0x21')](_0x45185a[0x2]);_0x15ca67[_0x91cc('0x21')](_0x45185a[0x3]);_0x15ca67[_0x91cc('0x21')](_0x45185a[_0x91cc('0x22')](0x4,_0x45185a[_0x91cc('0x1a')])['join'](','));break;case'message':_0x15ca67[_0x91cc('0x21')](_0x1089ae[_0x91cc('0x1f')]);break;case'tag':_0x15ca67[_0x91cc('0x21')](_0x1089ae[_0x91cc('0x25')]);_0x15ca67[_0x91cc('0x21')](_0x1089ae['appdata']);break;default:_0x15ca67=_['isNil'](_0x1089ae[_0x91cc('0x1f')])?[]:_0x1089ae[_0x91cc('0x1f')][_0x91cc('0x20')](',');}var _0x5d74c8={'id':util[_0x91cc('0xd')]('%s:%s:%s',_0xfeea13,_0x1089ae['id'],_0x1089ae[_0x91cc('0x1c')]),'condition':require(_0x91cc('0x26'))[_0x91cc('0x27')](_0xfeea13,getIntervals(_0xa77ae0[_0x91cc('0x28')],_0x1089ae),_0xa77ae0),'consequence':require('./applications/'+_0x1089ae[_0x91cc('0x1c')])[_0x91cc('0x29')](_0xfeea13,_0x15ca67,_0xa77ae0,_0x53b9f3),'p':_0x1089ae['priority']||0x0};logger[_0x91cc('0x2a')](_0x91cc('0x2b'),_0x5d74c8['id'],_0x91cc('0x2c'),getIntervals(_0xa77ae0[_0x91cc('0x28')],_0x1089ae)[_0x91cc('0x23')](_0x91cc('0x2d')));_0x354538[_0x91cc('0x21')](_0x5d74c8);}else{logger['error'](_0x91cc('0x2e'),path[_0x91cc('0x23')](__dirname,'applications',_0x1089ae['app']+'.js'));}}_0xa77ae0[_0x91cc('0x14')][_0xfeea13]=new RuleEngine(_0x354538);_0xa77ae0['rules'][_0xfeea13][_0x91cc('0x2f')](_0x53b9f3,function(_0x2de0cc){logger[_0x91cc('0x2a')]('Applications\x20executed',JSON[_0x91cc('0x30')](_0x2de0cc['matchPath']));if(_0xa77ae0['rules'][_0xfeea13]){_0xa77ae0['rules'][_0xfeea13][_0x91cc('0x31')](_0x91cc('0x32'));}});return _0x69e3fc({'code':0xc8,'message':_0x53b9f3});}else{logger['info'](_0x91cc('0x33'));return _0x69e3fc({'code':0xc8,'message':_0x53b9f3});}}catch(_0x15e8dc){logger[_0x91cc('0x34')](_0x15e8dc[_0x91cc('0x35')]);return _0x270017(_0x462f51['error'](0x1f4,_0x15e8dc));}}return _0x270017(_0x91cc('0x36'));});},'AcceptMessage':function(_0x1a7fe3){var _0x5373d7=this;return new Promise(function(_0x2905da,_0x5ac418){if(_0x1a7fe3['agent']&&_0x1a7fe3[_0x91cc('0x37')]['id']){if(_0xa77ae0[_0x91cc('0x38')][_0x1a7fe3[_0x91cc('0x37')]['id']]){_0xa77ae0[_0x91cc('0x38')][_0x1a7fe3[_0x91cc('0x37')]['id']]['busy']=![];_0xa77ae0['agents'][_0x1a7fe3['agent']['id']]['busyQueue']=undefined;}}if(_0x1a7fe3[_0x91cc('0x16')]&&_0x1a7fe3['message']['id']){try{var _0xe20ed3=getId(_0x1a7fe3['channel'],_0x1a7fe3[_0x91cc('0x16')]?_0x1a7fe3['message']['id']:0x0,_0x1a7fe3[_0x91cc('0x17')]?_0x1a7fe3[_0x91cc('0x17')]['id']:0x0);if(_0xa77ae0[_0x91cc('0x14')][_0xe20ed3]){_0xa77ae0[_0x91cc('0x14')][_0xe20ed3][_0x91cc('0x31')]('end');if(rpc[_0x1a7fe3['channel']+_0x91cc('0x39')]){rpc[_0x1a7fe3['channel']+_0x91cc('0x39')][_0x91cc('0x3a')](_0xe20ed3,{'UserId':_0x1a7fe3[_0x91cc('0x16')]['UserId']})[_0x91cc('0x3b')](function(_0x220386){logger[_0x91cc('0x34')](_0x91cc('0x3c'));});}}return _0x2905da({'code':0xc8,'message':_0x1a7fe3});}catch(_0x5df5c9){logger[_0x91cc('0x34')](_0x5df5c9[_0x91cc('0x35')]);return _0x5ac418(_0x5373d7[_0x91cc('0x34')](0x1f4,_0x5df5c9));}}logger[_0x91cc('0x34')]('message\x20is\x20empty');return _0x5ac418(_0x5373d7[_0x91cc('0x34')](0x1f4,_0x91cc('0x3d')));});},'RejectMessage':function(_0x2d1e92){var _0x28c84c=this;return new Promise(function(_0x19c1fe,_0x314b5d){if(_0x2d1e92[_0x91cc('0x37')]&&_0x2d1e92['agent']['id']){try{if(_0xa77ae0[_0x91cc('0x38')][_0x2d1e92[_0x91cc('0x37')]['id']]){_0xa77ae0[_0x91cc('0x38')][_0x2d1e92[_0x91cc('0x37')]['id']][_0x91cc('0x3e')]=![];_0xa77ae0[_0x91cc('0x38')][_0x2d1e92[_0x91cc('0x37')]['id']][_0x91cc('0x3f')]=undefined;}return _0x19c1fe({'code':0xc8,'message':_0x2d1e92});}catch(_0x37b2ac){logger['error'](_0x37b2ac['stack']);return _0x314b5d(_0x28c84c[_0x91cc('0x34')](0x1f4,_0x37b2ac));}}logger[_0x91cc('0x34')](_0x91cc('0x3d'));return _0x314b5d(_0x28c84c[_0x91cc('0x34')](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x127a8a){var _0x1a383f=this;return new Promise(function(_0x443496,_0x3b258d){if(_0x127a8a[_0x91cc('0x15')]&&_0x127a8a[_0x91cc('0x17')]&&_0x127a8a['interaction']['id']){try{var _0x39f2a3=getId(_0x127a8a['channel'],_0x127a8a[_0x91cc('0x16')]?_0x127a8a[_0x91cc('0x16')]['id']:0x0,_0x127a8a[_0x91cc('0x17')]?_0x127a8a[_0x91cc('0x17')]['id']:0x0);if(_0xa77ae0[_0x91cc('0x14')][_0x39f2a3]){_0xa77ae0[_0x91cc('0x14')][_0x39f2a3][_0x91cc('0x31')](_0x91cc('0x40'));}return _0x443496({'code':0xc8,'message':_0x127a8a});}catch(_0x3683da){logger['error'](_0x3683da['stack']);return _0x3b258d(_0x1a383f[_0x91cc('0x34')](0x1f4,_0x3683da));}}logger['error'](_0x91cc('0x3d'));return _0x3b258d(_0x1a383f[_0x91cc('0x34')](0x1f4,_0x91cc('0x3d')));});},'AgentCapacity':function(_0x556831){var _0x3c8fa3=this;return new Promise(function(_0x25795d,_0x5474a4){if(_0xa77ae0['agents'][_0x91cc('0x41')](_0x556831['id'])){for(var _0xad5641 in _0x556831[_0x91cc('0x42')]){if(_0x556831['capacity']['hasOwnProperty'](_0xad5641)){if(_0xa77ae0[_0x91cc('0x38')][_0x556831['id']]['hasOwnProperty'](_0xad5641+'CurrentCapacity')){_0xa77ae0['agents'][_0x556831['id']][_0xad5641+'CurrentCapacity']=parseInt(_0x556831[_0x91cc('0x42')][_0xad5641],0xa);}}}_0xa77ae0['agents'][_0x556831['id']]['updateRealtime']();return _0x25795d({'code':0xc8,'message':_0xa77ae0[_0x91cc('0x38')][_0x556831['id']]});}else{return _0x5474a4(_0x3c8fa3['error'](0x1f4,_0x91cc('0x43')));}});},'Agents':function(_0x3bbf06){return new Promise(function(_0x434169,_0x410029){var _0x48c065=_['values'](_0xa77ae0['agents']);_0x434169({'count':_0x48c065[_0x91cc('0x1a')],'rows':_0x48c065});});},'ChatQueues':function(_0x2ff9f6){return new Promise(function(_0x215566,_0x13d281){var _0x52d2a2=[];for(var _0x2c75f0 in _0xa77ae0['chatQueues']){if(_0xa77ae0[_0x91cc('0x44')][_0x91cc('0x41')](_0x2c75f0)){var _0x353096=_0xa77ae0[_0x91cc('0x44')][_0x2c75f0];var _0x8eec22={'id':_0x353096['id'],'available':_0x353096['available'],'loggedIn':_0x353096[_0x91cc('0x45')],'name':_0x353096['name'],'paused':_0x353096[_0x91cc('0x46')],'waiting':_0x353096[_0x91cc('0x47')]};_0x52d2a2[_0x91cc('0x21')](_0x8eec22);}}_0x215566({'count':_0x52d2a2[_0x91cc('0x1a')],'rows':_0x52d2a2});});},'MailQueues':function(_0x3265e0){return new Promise(function(_0x3bfb0c,_0x43185b){var _0x461f1e=[];for(var _0x44d30f in _0xa77ae0[_0x91cc('0x48')]){if(_0xa77ae0[_0x91cc('0x48')]['hasOwnProperty'](_0x44d30f)){var _0x241f96=_0xa77ae0[_0x91cc('0x48')][_0x44d30f];var _0x5211ae={'id':_0x241f96['id'],'available':_0x241f96[_0x91cc('0x49')],'loggedIn':_0x241f96['loggedIn'],'name':_0x241f96[_0x91cc('0x4a')],'paused':_0x241f96['paused'],'waiting':_0x241f96[_0x91cc('0x47')]};_0x461f1e[_0x91cc('0x21')](_0x5211ae);}}_0x3bfb0c({'count':_0x461f1e['length'],'rows':_0x461f1e});});},'OpenchannelQueues':function(_0x20c01c){return new Promise(function(_0x1bc80d,_0x534a05){var _0x3aff60=[];for(var _0x6b1383 in _0xa77ae0[_0x91cc('0x4b')]){if(_0xa77ae0[_0x91cc('0x4b')][_0x91cc('0x41')](_0x6b1383)){var _0x3ebbf5=_0xa77ae0['openchannelQueues'][_0x6b1383];var _0x54cd17={'id':_0x3ebbf5['id'],'available':_0x3ebbf5[_0x91cc('0x49')],'loggedIn':_0x3ebbf5[_0x91cc('0x45')],'name':_0x3ebbf5[_0x91cc('0x4a')],'paused':_0x3ebbf5[_0x91cc('0x46')],'waiting':_0x3ebbf5['waiting']};_0x3aff60[_0x91cc('0x21')](_0x54cd17);}}_0x1bc80d({'count':_0x3aff60[_0x91cc('0x1a')],'rows':_0x3aff60});});},'SmsQueues':function(_0x2613ed){return new Promise(function(_0x4ac76e,_0x4c7baa){var _0xe3c22a=[];for(var _0x5318a3 in _0xa77ae0[_0x91cc('0x4c')]){if(_0xa77ae0[_0x91cc('0x4c')][_0x91cc('0x41')](_0x5318a3)){var _0xf9e01e=_0xa77ae0['smsQueues'][_0x5318a3];var _0xeca14d={'id':_0xf9e01e['id'],'available':_0xf9e01e[_0x91cc('0x49')],'loggedIn':_0xf9e01e['loggedIn'],'name':_0xf9e01e[_0x91cc('0x4a')],'paused':_0xf9e01e[_0x91cc('0x46')],'waiting':_0xf9e01e[_0x91cc('0x47')]};_0xe3c22a['push'](_0xeca14d);}}_0x4ac76e({'count':_0xe3c22a['length'],'rows':_0xe3c22a});});},'FaxQueues':function(_0x3d878f){return new Promise(function(_0x5328a0,_0x29646c){var _0x451301=[];for(var _0x28d9b0 in _0xa77ae0['faxQueues']){if(_0xa77ae0['faxQueues'][_0x91cc('0x41')](_0x28d9b0)){var _0x59dbfb=_0xa77ae0['faxQueues'][_0x28d9b0];var _0x4045e3={'id':_0x59dbfb['id'],'available':_0x59dbfb['available'],'loggedIn':_0x59dbfb[_0x91cc('0x45')],'name':_0x59dbfb[_0x91cc('0x4a')],'paused':_0x59dbfb[_0x91cc('0x46')],'waiting':_0x59dbfb[_0x91cc('0x47')]};_0x451301[_0x91cc('0x21')](_0x4045e3);}}_0x5328a0({'count':_0x451301['length'],'rows':_0x451301});});},'WhatsappQueues':function(_0x3c266a){return new Promise(function(_0xbb60ba,_0x957e3c){var _0x3ee215=[];for(var _0x222793 in _0xa77ae0[_0x91cc('0x4d')]){if(_0xa77ae0['whatsappQueues'][_0x91cc('0x41')](_0x222793)){var _0x424ee3=_0xa77ae0[_0x91cc('0x4d')][_0x222793];var _0x588a77={'id':_0x424ee3['id'],'available':_0x424ee3[_0x91cc('0x49')],'loggedIn':_0x424ee3[_0x91cc('0x45')],'name':_0x424ee3[_0x91cc('0x4a')],'paused':_0x424ee3[_0x91cc('0x46')],'waiting':_0x424ee3[_0x91cc('0x47')]};_0x3ee215[_0x91cc('0x21')](_0x588a77);}}_0xbb60ba({'count':_0x3ee215[_0x91cc('0x1a')],'rows':_0x3ee215});});},'ChatQueuesWaitingInteractions':function(_0x4e206c){return new Promise(function(_0x2adb04,_0x266051){var _0x5a84f7=_['values'](_0xa77ae0['chatQueuesWaitingInteractions']);_0x2adb04({'count':_0x5a84f7[_0x91cc('0x1a')],'rows':_0x5a84f7});});},'MailQueuesWaitingInteractions':function(_0x2ba56f){return new Promise(function(_0x4362aa,_0xdfe9d){var _0x3655f7=_[_0x91cc('0x4e')](_0xa77ae0[_0x91cc('0x4f')]);_0x4362aa({'count':_0x3655f7[_0x91cc('0x1a')],'rows':_0x3655f7});});},'OpenchannelQueuesWaitingInteractions':function(_0x4a132b){return new Promise(function(_0x5ed3fb,_0x30238e){var _0x39cb00=_[_0x91cc('0x4e')](_0xa77ae0[_0x91cc('0x50')]);_0x5ed3fb({'count':_0x39cb00[_0x91cc('0x1a')],'rows':_0x39cb00});});},'SmsQueuesWaitingInteractions':function(_0x1e2420){return new Promise(function(_0x1fbe8b,_0x36ecb4){var _0x6f7685=_[_0x91cc('0x4e')](_0xa77ae0[_0x91cc('0x51')]);_0x1fbe8b({'count':_0x6f7685[_0x91cc('0x1a')],'rows':_0x6f7685});});},'FaxQueuesWaitingInteractions':function(_0x159db9){return new Promise(function(_0x459571,_0x2510ea){var _0x10b696=_['values'](_0xa77ae0[_0x91cc('0x52')]);_0x459571({'count':_0x10b696[_0x91cc('0x1a')],'rows':_0x10b696});});},'WhatsappQueuesWaitingInteractions':function(_0x5eaa58){return new Promise(function(_0x4191dc,_0x3cc87a){var _0x4884f6=_['values'](_0xa77ae0[_0x91cc('0x53')]);_0x4191dc({'count':_0x4884f6['length'],'rows':_0x4884f6});});}};var _0x35a2fc=jayson['server'](_0x28e864)['http']();_0x35a2fc['on'](_0x91cc('0x34'),function(_0x1c289d){logger[_0x91cc('0x34')](JSON['stringify'](_0x1c289d));return _0x887354(_0x1c289d);});_0x35a2fc[_0x91cc('0x54')](0x232c,'127.0.0.1',function(){console[_0x91cc('0x55')](_0x91cc('0x56'),0x232c);return _0x569d49(_0x91cc('0x57')+0x232c);});});};
\ No newline at end of file
index a954b1d..be0896d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x399b=['request','error','message','result','catch','condition','rules','info','length','push','format','iftime\x20%s','then','true','[%s][INTERVAL]\x20%s','all','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','log','util','bluebird','jayson/promise','../../../config/logger','routing','client'];(function(_0x2f305f,_0x4b40ce){var _0x28a9c2=function(_0x16ff27){while(--_0x16ff27){_0x2f305f['push'](_0x2f305f['shift']());}};_0x28a9c2(++_0x4b40ce);}(_0x399b,0xa2));var _0xb399=function(_0x413736,_0x4335c8){_0x413736=_0x413736-0x0;var _0x5ba589=_0x399b[_0x413736];return _0x5ba589;};'use strict';var util=require(_0xb399('0x0'));var BPromise=require(_0xb399('0x1'));var jayson=require(_0xb399('0x2'));var _=require('lodash');var logger=require(_0xb399('0x3'))(_0xb399('0x4'));var client=jayson[_0xb399('0x5')]['http']({'port':0x232a});function request(_0x148fa1,_0x33aac1){return new BPromise(function(_0xd0c118,_0x32f398){return client[_0xb399('0x6')](_0x148fa1,_0x33aac1)['then'](function(_0x26e675){if(_0x26e675[_0xb399('0x7')]){return _0x32f398(_0x26e675[_0xb399('0x7')][_0xb399('0x8')]);}else{return _0xd0c118(_0x26e675[_0xb399('0x9')]);}})[_0xb399('0xa')](function(_0x55186c){return _0x32f398(_0x55186c);});});}exports[_0xb399('0xb')]=function(_0x31f40a,_0x2986c7,_0x55ab6a){return function(_0x3790fd){if(_0x55ab6a[_0xb399('0xc')]&&!_0x55ab6a[_0xb399('0xc')][_0x31f40a]){logger[_0xb399('0xd')]('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x31f40a);return _0x3790fd['stop']();}var _0x493004=[];for(var _0x499075=0x0;_0x499075<_0x2986c7[_0xb399('0xe')];_0x499075+=0x1){_0x493004[_0xb399('0xf')](request('Command',{'command':util[_0xb399('0x10')](_0xb399('0x11'),_0x2986c7[_0x499075])})[_0xb399('0x12')](function(_0x2db9d0){return _0x2db9d0&&_0x2db9d0[_0xb399('0x8')]&&_0x2db9d0[_0xb399('0x8')]['indexOf'](_0xb399('0x13'))>=0x0?!![]:![];})[_0xb399('0xa')](function(_0x13aece){logger[_0xb399('0x7')](_0xb399('0x14'),_0x31f40a,_0x2986c7[_0x499075]);}));}BPromise[_0xb399('0x15')](_0x493004)['then'](function(_0x464485){var _0x2318a2=_[_0xb399('0x16')](_0x464485);logger[_0xb399('0xd')](_0xb399('0x17'),_0x31f40a,_0x2986c7[_0xb399('0x18')](_0xb399('0x19')),_0x2318a2);_0x3790fd[_0xb399('0x1a')](_0x2318a2);})[_0xb399('0xa')](function(_0x302608){console[_0xb399('0x1b')](_0x302608);logger[_0xb399('0x7')](_0xb399('0x17'),_0x31f40a,_0x2986c7['join']('\x20|\x20'),_0x302608['stack']);_0x3790fd['stop']();});};};
\ No newline at end of file
+var _0xd1a0=['\x20|\x20','stack','util','bluebird','jayson/promise','lodash','../../../config/logger','client','http','request','then','error','message','result','catch','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','format','iftime\x20%s','indexOf','all','[%s][INTERVAL]\x20%s\x20%s','join'];(function(_0x48f8a6,_0x33cc46){var _0x212363=function(_0x5e75bc){while(--_0x5e75bc){_0x48f8a6['push'](_0x48f8a6['shift']());}};_0x212363(++_0x33cc46);}(_0xd1a0,0xda));var _0x0d1a=function(_0x4d8715,_0x2809d8){_0x4d8715=_0x4d8715-0x0;var _0x23611e=_0xd1a0[_0x4d8715];return _0x23611e;};'use strict';var util=require(_0x0d1a('0x0'));var BPromise=require(_0x0d1a('0x1'));var jayson=require(_0x0d1a('0x2'));var _=require(_0x0d1a('0x3'));var logger=require(_0x0d1a('0x4'))('routing');var client=jayson[_0x0d1a('0x5')][_0x0d1a('0x6')]({'port':0x232a});function request(_0x38be1f,_0x58b73d){return new BPromise(function(_0x25ad66,_0x5d857d){return client[_0x0d1a('0x7')](_0x38be1f,_0x58b73d)[_0x0d1a('0x8')](function(_0x51d2f8){if(_0x51d2f8[_0x0d1a('0x9')]){return _0x5d857d(_0x51d2f8[_0x0d1a('0x9')][_0x0d1a('0xa')]);}else{return _0x25ad66(_0x51d2f8[_0x0d1a('0xb')]);}})[_0x0d1a('0xc')](function(_0x407de5){return _0x5d857d(_0x407de5);});});}exports[_0x0d1a('0xd')]=function(_0x3f39d5,_0x3b7201,_0x5323fa){return function(_0x2e2023){if(_0x5323fa['rules']&&!_0x5323fa[_0x0d1a('0xe')][_0x3f39d5]){logger[_0x0d1a('0xf')](_0x0d1a('0x10'),_0x3f39d5);return _0x2e2023[_0x0d1a('0x11')]();}var _0x25f54a=[];for(var _0x26d323=0x0;_0x26d323<_0x3b7201[_0x0d1a('0x12')];_0x26d323+=0x1){_0x25f54a['push'](request('Command',{'command':util[_0x0d1a('0x13')](_0x0d1a('0x14'),_0x3b7201[_0x26d323])})[_0x0d1a('0x8')](function(_0xaf985f){return _0xaf985f&&_0xaf985f[_0x0d1a('0xa')]&&_0xaf985f[_0x0d1a('0xa')][_0x0d1a('0x15')]('true')>=0x0?!![]:![];})[_0x0d1a('0xc')](function(_0x4f83e2){logger[_0x0d1a('0x9')]('[%s][INTERVAL]\x20%s',_0x3f39d5,_0x3b7201[_0x26d323]);}));}BPromise[_0x0d1a('0x16')](_0x25f54a)[_0x0d1a('0x8')](function(_0x522133){var _0x2f7332=_['some'](_0x522133);logger[_0x0d1a('0xf')](_0x0d1a('0x17'),_0x3f39d5,_0x3b7201[_0x0d1a('0x18')](_0x0d1a('0x19')),_0x2f7332);_0x2e2023['when'](_0x2f7332);})['catch'](function(_0x3b85fa){console['log'](_0x3b85fa);logger[_0x0d1a('0x9')](_0x0d1a('0x17'),_0x3f39d5,_0x3b7201[_0x0d1a('0x18')]('\x20|\x20'),_0x3b85fa[_0x0d1a('0x1a')]);_0x2e2023[_0x0d1a('0x11')]();});};};
\ No newline at end of file
index 8a3203b..4527d58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84a0=['transferexten','secondtransfererexten','transfertargetuniqueid','[%s][agents][attendedtransfer]','hangup','[%s][agents][hangup]','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','diffTime','complete','lodash','util','./utils','info','format','channel','queue','interface','calleridnum','connectedlinenum','lastevent','then','type','acw','acwtime','agentacw','acwTimeout','request','CreateVoiceAgentReport','uniqueid','destuniqueid','agentcalled','debug','[%s][agents][agentcalled]','agentcalledAt','now','called','connectedlinename','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','membername','error','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','reason','timeout','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','holdtime','talktime','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','ringtime','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','agentcomplete','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','blindtransfer','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfereruniqueid','transfer','transfertype','blind','extension','transferuniqueid','attendedtransfer','origtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfereruniqueid','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid'];(function(_0x4854d6,_0x2f1264){var _0x3885c0=function(_0x4d564d){while(--_0x4d564d){_0x4854d6['push'](_0x4854d6['shift']());}};_0x3885c0(++_0x2f1264);}(_0x84a0,0x66));var _0x084a=function(_0x35a15d,_0x54963e){_0x35a15d=_0x35a15d-0x0;var _0x5511eb=_0x84a0[_0x35a15d];return _0x5511eb;};'use strict';var _=require(_0x084a('0x0'));var util=require(_0x084a('0x1'));var utils=require(_0x084a('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x1fff7f,_0x483bfa){utils[_0x084a('0x3')](util[_0x084a('0x4')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x1fff7f['uniqueid'],_0x1fff7f[_0x084a('0x5')],_0x1fff7f[_0x084a('0x6')],_0x1fff7f['membername'],_0x1fff7f[_0x084a('0x7')],_0x1fff7f[_0x084a('0x8')],_0x1fff7f[_0x084a('0x9')],_0x1fff7f[_0x084a('0xa')]));if(_0x1fff7f[_0x084a('0x6')]){utils['getVoiceQueueByName'](_0x1fff7f[_0x084a('0x6')])[_0x084a('0xb')](function(_0x8198ad){if(_0x8198ad){_0x1fff7f[_0x084a('0xc')]=_0x8198ad[_0x084a('0xc')];_0x1fff7f['agentacw']=_0x1fff7f['agentcomplete']?_0x8198ad[_0x084a('0xd')]:![];_0x1fff7f[_0x084a('0xe')]=_0x1fff7f[_0x084a('0xf')]?_0x8198ad[_0x084a('0x10')]:0x0;}utils[_0x084a('0x11')]('CreateVoiceAgentReport',_0x1fff7f);});}else{utils['request'](_0x084a('0x12'),_0x1fff7f);}if(_0x483bfa){delete transfers[_0x1fff7f[_0x084a('0x13')]];}else{delete agents[_0x1fff7f[_0x084a('0x14')]];}}exports[_0x084a('0x15')]=function(_0x1bdfb8){try{utils[_0x084a('0x16')](util[_0x084a('0x4')](_0x084a('0x17'),_0x1bdfb8['uniqueid']),_0x1bdfb8);agents[_0x1bdfb8[_0x084a('0x14')]]=_0x1bdfb8;agents[_0x1bdfb8['destuniqueid']][_0x084a('0x18')]=utils[_0x084a('0x19')]();agents[_0x1bdfb8[_0x084a('0x14')]][_0x084a('0xa')]=_0x084a('0x1a');agents[_0x1bdfb8['destuniqueid']][_0x084a('0x9')]=null;agents[_0x1bdfb8['destuniqueid']][_0x084a('0x1b')]=null;utils[_0x084a('0x3')](util['format'](_0x084a('0x1c'),_0x1bdfb8[_0x084a('0x13')],agents[_0x1bdfb8[_0x084a('0x14')]][_0x084a('0x1d')],_0x1bdfb8[_0x084a('0x14')]));}catch(_0x145636){utils[_0x084a('0x1e')](util[_0x084a('0x4')](_0x084a('0x17'),_0x1bdfb8[_0x084a('0x13')]),_0x145636);}};exports[_0x084a('0x1f')]=function(_0x279e25){try{if(!_[_0x084a('0x20')](agents[_0x279e25[_0x084a('0x14')]])){utils[_0x084a('0x16')](util['format'](_0x084a('0x21'),_0x279e25[_0x084a('0x13')]),_0x279e25);utils[_0x084a('0x3')](util[_0x084a('0x4')](_0x084a('0x22'),_0x279e25['uniqueid'],agents[_0x279e25[_0x084a('0x14')]][_0x084a('0x1d')],_0x279e25[_0x084a('0x14')]));agents[_0x279e25[_0x084a('0x14')]][_0x084a('0x1f')]=!![];agents[_0x279e25[_0x084a('0x14')]]['agentringnoanswerAt']=utils[_0x084a('0x19')]();agents[_0x279e25[_0x084a('0x14')]][_0x084a('0xa')]='timeout';agents[_0x279e25[_0x084a('0x14')]][_0x084a('0x23')]=_0x084a('0x24');agents[_0x279e25['destuniqueid']]['holdtime']=_0x279e25['ringtime']?parseInt(_0x279e25['ringtime'])/0x3e8:0x0;agents[_0x279e25[_0x084a('0x14')]]['talktime']=0x0;unanswered['push'](_0x279e25['destuniqueid']);}}catch(_0x3b8176){utils[_0x084a('0x1e')](util[_0x084a('0x4')](_0x084a('0x21'),_0x279e25[_0x084a('0x13')]),_0x3b8176);}};exports[_0x084a('0x25')]=function(_0x378de6){try{_[_0x084a('0x26')](agents,function(_0x5e6ea8,_0x2ed3cd){if(_0x5e6ea8[_0x084a('0x13')]==_0x378de6['uniqueid']&&!_[_0x084a('0x27')](unanswered,_0x5e6ea8[_0x084a('0x14')])){utils[_0x084a('0x16')](util[_0x084a('0x4')](_0x084a('0x28'),_0x378de6[_0x084a('0x13')]),_0x378de6);utils[_0x084a('0x3')](util[_0x084a('0x4')](_0x084a('0x29'),_0x378de6[_0x084a('0x13')],_0x5e6ea8[_0x084a('0x1d')],_0x5e6ea8[_0x084a('0x14')]));_0x5e6ea8[_0x084a('0x1f')]=!![];_0x5e6ea8['agentringnoanswerAt']=utils['now']();_0x5e6ea8[_0x084a('0xa')]=_0x084a('0x2a');_0x5e6ea8[_0x084a('0x23')]=_0x084a('0x2a');_0x5e6ea8[_0x084a('0x2b')]=_0x378de6['holdtime'];_0x5e6ea8[_0x084a('0x2c')]=0x0;writeDB(_0x5e6ea8);}});}catch(_0x1b56ad){utils[_0x084a('0x1e')](util['format'](_0x084a('0x28'),_0x378de6[_0x084a('0x13')]),_0x1b56ad);}};exports[_0x084a('0x2d')]=function(_0x4c4c90){try{if(agents[_0x4c4c90['destuniqueid']]){utils['debug'](util[_0x084a('0x4')](_0x084a('0x2e'),_0x4c4c90[_0x084a('0x13')]),_0x4c4c90);utils['info'](util[_0x084a('0x4')](_0x084a('0x2f'),_0x4c4c90[_0x084a('0x13')],agents[_0x4c4c90[_0x084a('0x14')]][_0x084a('0x1d')],_0x4c4c90[_0x084a('0x14')]));agents[_0x4c4c90[_0x084a('0x14')]][_0x084a('0x30')]=utils[_0x084a('0x19')]();agents[_0x4c4c90[_0x084a('0x14')]][_0x084a('0x9')]=_0x4c4c90[_0x084a('0x9')];agents[_0x4c4c90[_0x084a('0x14')]][_0x084a('0x1b')]=_0x4c4c90[_0x084a('0x1b')];agents[_0x4c4c90['destuniqueid']][_0x084a('0x2b')]=_0x4c4c90[_0x084a('0x31')];agents[_0x4c4c90[_0x084a('0x14')]][_0x084a('0xa')]=_0x084a('0x32');_[_0x084a('0x26')](agents,function(_0xa7b652,_0x183e10){if(_0xa7b652[_0x084a('0x14')]!=_0x4c4c90['destuniqueid']&&_0xa7b652[_0x084a('0x13')]==_0x4c4c90[_0x084a('0x13')]){_0xa7b652[_0x084a('0x2c')]=0x0;_0xa7b652[_0x084a('0x2b')]=_0x4c4c90[_0x084a('0x31')];_0xa7b652[_0x084a('0x1f')]=!![];_0xa7b652['agentringnoanswerAt']=utils[_0x084a('0x19')]();_0xa7b652[_0x084a('0xa')]='answered_elsewhere';_0xa7b652[_0x084a('0x23')]=_0x084a('0x33');_0xa7b652[_0x084a('0x34')]=_0x4c4c90['destuniqueid'];_0xa7b652[_0x084a('0x35')]=_0x4c4c90[_0x084a('0x1d')];writeDB(_0xa7b652);}});}}catch(_0x4fe9c2){utils[_0x084a('0x1e')](util[_0x084a('0x4')]('[%s][agents][agentconnect]',_0x4c4c90['uniqueid']),_0x4fe9c2);}};exports[_0x084a('0x36')]=function(_0x17a8d4){try{if(!_[_0x084a('0x20')](agents[_0x17a8d4[_0x084a('0x14')]])){utils[_0x084a('0x16')](util[_0x084a('0x4')](_0x084a('0x37'),_0x17a8d4[_0x084a('0x13')]),_0x17a8d4);utils[_0x084a('0x3')](util[_0x084a('0x4')](_0x084a('0x38'),_0x17a8d4['uniqueid'],agents[_0x17a8d4['destuniqueid']][_0x084a('0x1d')],_0x17a8d4[_0x084a('0x14')]));agents[_0x17a8d4[_0x084a('0x14')]]['agentcomplete']=!![];agents[_0x17a8d4[_0x084a('0x14')]][_0x084a('0x39')]=utils[_0x084a('0x19')]();agents[_0x17a8d4[_0x084a('0x14')]][_0x084a('0x2c')]=utils['diffTime'](agents[_0x17a8d4[_0x084a('0x14')]]['agentcompleteAt'],agents[_0x17a8d4[_0x084a('0x14')]][_0x084a('0x30')]);agents[_0x17a8d4[_0x084a('0x14')]]['reason']=_0x17a8d4['reason'];agents[_0x17a8d4[_0x084a('0x14')]][_0x084a('0xa')]='complete';writeDB(agents[_0x17a8d4[_0x084a('0x14')]]);}}catch(_0x2c2c2e){utils[_0x084a('0x1e')](util[_0x084a('0x4')]('[%s][agents][agentcomplete]',_0x17a8d4[_0x084a('0x13')]),_0x2c2c2e);}};exports[_0x084a('0x3a')]=function(_0x31677b){try{if(!_[_0x084a('0x20')](agents[_0x31677b['transfereruniqueid']])){utils[_0x084a('0x16')](util[_0x084a('0x4')](_0x084a('0x3b'),_0x31677b[_0x084a('0x13')]),_0x31677b);utils['info'](util['format'](_0x084a('0x3c'),_0x31677b[_0x084a('0x13')],agents[_0x31677b[_0x084a('0x3d')]][_0x084a('0x1d')],agents[_0x31677b[_0x084a('0x3d')]][_0x084a('0x13')]));agents[_0x31677b[_0x084a('0x3d')]][_0x084a('0x3e')]=!![];agents[_0x31677b[_0x084a('0x3d')]][_0x084a('0x3f')]=_0x084a('0x40');agents[_0x31677b[_0x084a('0x3d')]]['transferexten']=_0x31677b[_0x084a('0x41')];agents[_0x31677b[_0x084a('0x3d')]][_0x084a('0x42')]=agents[_0x31677b[_0x084a('0x3d')]][_0x084a('0x13')];}}catch(_0x1c972c){utils[_0x084a('0x1e')](util['format'](_0x084a('0x3b'),_0x31677b[_0x084a('0x13')]),_0x1c972c);}};exports[_0x084a('0x43')]=function(_0x54aa6c){try{utils['debug'](util[_0x084a('0x4')]('[%s][agents][attendedtransfer]',_0x54aa6c[_0x084a('0x44')]),_0x54aa6c);if(_0x54aa6c[_0x084a('0x44')]==_0x54aa6c['origtransfererlinkedid']){if(!_[_0x084a('0x20')](agents[_0x54aa6c['secondtransfereruniqueid']])){utils['info'](util[_0x084a('0x4')](_0x084a('0x45'),_0x54aa6c[_0x084a('0x44')],agents[_0x54aa6c[_0x084a('0x46')]][_0x084a('0x1d')]));agents[_0x54aa6c[_0x084a('0x46')]][_0x084a('0x3e')]=!![];agents[_0x54aa6c['secondtransfereruniqueid']][_0x084a('0x3f')]=_0x084a('0x47');agents[_0x54aa6c[_0x084a('0x46')]]['transferexten']=_0x54aa6c[_0x084a('0x48')];agents[_0x54aa6c[_0x084a('0x46')]][_0x084a('0x42')]=_0x54aa6c[_0x084a('0x44')];}if(_0x54aa6c['transfereeuniqueid']&&agents[_0x54aa6c[_0x084a('0x49')]]){agents[_0x54aa6c['transfereeuniqueid']][_0x084a('0x4a')]=0x1;transfers[_0x54aa6c[_0x084a('0x49')]]=_[_0x084a('0x4b')](agents[_0x54aa6c['transfereeuniqueid']]);transfers[_0x54aa6c['transfereeuniqueid']][_0x084a('0x8')]=agents[_0x54aa6c[_0x084a('0x46')]]['calleridnum'];transfers[_0x54aa6c[_0x084a('0x49')]]['calleridname']=agents[_0x54aa6c['secondtransfereruniqueid']][_0x084a('0x4c')];transfers[_0x54aa6c[_0x084a('0x49')]][_0x084a('0x18')]=utils[_0x084a('0x19')]();transfers[_0x54aa6c[_0x084a('0x49')]][_0x084a('0x30')]=utils[_0x084a('0x19')]();transfers[_0x54aa6c[_0x084a('0x49')]][_0x084a('0x2b')]=0x0;transfers[_0x54aa6c['transfereeuniqueid']][_0x084a('0x4a')]=0x2;}}else if(_0x54aa6c[_0x084a('0x46')]==_0x54aa6c[_0x084a('0x4d')]){if(!_['isNil'](agents[_0x54aa6c[_0x084a('0x44')]])){utils[_0x084a('0x3')](util['format'](_0x084a('0x45'),_0x54aa6c['origtransfereruniqueid'],agents[_0x54aa6c['origtransfereruniqueid']][_0x084a('0x1d')]));agents[_0x54aa6c['origtransfereruniqueid']]['transfer']=!![];agents[_0x54aa6c[_0x084a('0x44')]][_0x084a('0x3f')]=_0x084a('0x47');agents[_0x54aa6c['origtransfereruniqueid']][_0x084a('0x4e')]=_0x54aa6c[_0x084a('0x4f')];agents[_0x54aa6c[_0x084a('0x44')]][_0x084a('0x42')]=_0x54aa6c[_0x084a('0x46')];}if(_0x54aa6c[_0x084a('0x50')]&&agents[_0x54aa6c[_0x084a('0x50')]]){agents[_0x54aa6c['transfertargetuniqueid']]['agententerreason']=0x1;transfers[_0x54aa6c[_0x084a('0x50')]]=_[_0x084a('0x4b')](agents[_0x54aa6c['transfertargetuniqueid']]);transfers[_0x54aa6c[_0x084a('0x50')]][_0x084a('0x8')]=agents[_0x54aa6c[_0x084a('0x44')]][_0x084a('0x8')];transfers[_0x54aa6c['transfertargetuniqueid']][_0x084a('0x4c')]=agents[_0x54aa6c[_0x084a('0x44')]][_0x084a('0x4c')];transfers[_0x54aa6c['transfertargetuniqueid']]['agentcalledAt']=utils[_0x084a('0x19')]();transfers[_0x54aa6c[_0x084a('0x50')]][_0x084a('0x30')]=utils[_0x084a('0x19')]();transfers[_0x54aa6c[_0x084a('0x50')]][_0x084a('0x2b')]=0x0;transfers[_0x54aa6c[_0x084a('0x50')]]['agententerreason']=0x2;}}}catch(_0x22efb6){utils['error'](util['format'](_0x084a('0x51'),_0x54aa6c[_0x084a('0x44')]),_0x22efb6);}};exports[_0x084a('0x52')]=function(_0x4a2745){try{utils[_0x084a('0x16')](util['format'](_0x084a('0x53'),_0x4a2745[_0x084a('0x13')]),_0x4a2745);if(agents[_0x4a2745[_0x084a('0x13')]]&&agents[_0x4a2745[_0x084a('0x13')]][_0x084a('0x23')]===_0x084a('0x24')){if(_0x4a2745['cause']==='21'){agents[_0x4a2745['uniqueid']][_0x084a('0x23')]=_0x084a('0x54');agents[_0x4a2745[_0x084a('0x13')]][_0x084a('0xa')]=_0x084a('0x54');}utils[_0x084a('0x3')](util['format'](_0x084a('0x55'),_0x4a2745[_0x084a('0x13')],agents[_0x4a2745[_0x084a('0x13')]][_0x084a('0x1d')],agents[_0x4a2745[_0x084a('0x13')]][_0x084a('0x23')],agents[_0x4a2745[_0x084a('0x13')]]['lastevent']));writeDB(agents[_0x4a2745[_0x084a('0x13')]]);var _0x38b5b6=unanswered[_0x084a('0x56')](_0x4a2745[_0x084a('0x13')]);if(_0x38b5b6>-0x1){unanswered[_0x084a('0x57')](_0x38b5b6,0x1);}}if(transfers[_0x4a2745[_0x084a('0x13')]]){transfers[_0x4a2745[_0x084a('0x13')]][_0x084a('0x36')]=!![];transfers[_0x4a2745[_0x084a('0x13')]][_0x084a('0x39')]=utils['now']();transfers[_0x4a2745['uniqueid']]['talktime']=utils[_0x084a('0x58')](transfers[_0x4a2745[_0x084a('0x13')]]['agentcompleteAt'],transfers[_0x4a2745[_0x084a('0x13')]][_0x084a('0x30')]);transfers[_0x4a2745[_0x084a('0x13')]][_0x084a('0x23')]='agent';transfers[_0x4a2745['uniqueid']][_0x084a('0xa')]=_0x084a('0x59');utils[_0x084a('0x3')](util[_0x084a('0x4')](_0x084a('0x55'),_0x4a2745[_0x084a('0x13')],transfers[_0x4a2745[_0x084a('0x13')]]['membername'],transfers[_0x4a2745[_0x084a('0x13')]][_0x084a('0x23')],transfers[_0x4a2745[_0x084a('0x13')]][_0x084a('0xa')]));writeDB(transfers[_0x4a2745[_0x084a('0x13')]],!![]);}if(agents[_0x4a2745[_0x084a('0x13')]]&&agents[_0x4a2745[_0x084a('0x13')]]['agentconnectAt']){agents[_0x4a2745[_0x084a('0x13')]][_0x084a('0x36')]=!![];agents[_0x4a2745[_0x084a('0x13')]][_0x084a('0x39')]=utils[_0x084a('0x19')]();agents[_0x4a2745[_0x084a('0x13')]][_0x084a('0x2c')]=utils[_0x084a('0x58')](agents[_0x4a2745[_0x084a('0x13')]][_0x084a('0x39')],agents[_0x4a2745[_0x084a('0x13')]]['agentconnectAt']);agents[_0x4a2745[_0x084a('0x13')]][_0x084a('0x23')]=agents[_0x4a2745['uniqueid']][_0x084a('0x3e')]?'transfer':'agent';agents[_0x4a2745[_0x084a('0x13')]][_0x084a('0xa')]='complete';utils[_0x084a('0x3')](util[_0x084a('0x4')](_0x084a('0x55'),_0x4a2745[_0x084a('0x13')],agents[_0x4a2745[_0x084a('0x13')]][_0x084a('0x1d')],agents[_0x4a2745[_0x084a('0x13')]][_0x084a('0x23')],agents[_0x4a2745[_0x084a('0x13')]][_0x084a('0xa')]));writeDB(agents[_0x4a2745[_0x084a('0x13')]]);}}catch(_0x7c85e3){utils[_0x084a('0x1e')](util[_0x084a('0x4')](_0x084a('0x53'),_0x4a2745['uniqueid']),_0x7c85e3);}};
\ No newline at end of file
+var _0x593e=['answeredelsewheredestinationuniqueid','answeredelsewheremembername','agentcomplete','agentcompleteAt','agentconnectAt','complete','isNil','transfereruniqueid','[%s][agents][blindtransfer]','transfer','transfertype','blind','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfererexten','transfertargetuniqueid','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','agent','lodash','util','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','getVoiceQueueByName','type','acw','acwtime','agentacw','request','CreateVoiceAgentReport','uniqueid','destuniqueid','agentcalled','debug','agentcalledAt','now','called','connectedlinename','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','[%s][agents][agentcalled]','agentringnoanswer','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','holdtime','ringtime','push','[%s][agents][agentringnoanswer]','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','reason','talktime','[%s][agents][agentconnect]','connect','answered_elsewhere'];(function(_0x256b72,_0x340985){var _0x2183e3=function(_0xf7fd37){while(--_0xf7fd37){_0x256b72['push'](_0x256b72['shift']());}};_0x2183e3(++_0x340985);}(_0x593e,0xcb));var _0xe593=function(_0x2e31b7,_0x4d0289){_0x2e31b7=_0x2e31b7-0x0;var _0x1ebfa9=_0x593e[_0x2e31b7];return _0x1ebfa9;};'use strict';var _=require(_0xe593('0x0'));var util=require(_0xe593('0x1'));var utils=require(_0xe593('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x28f28c,_0x43dabb){utils[_0xe593('0x3')](util[_0xe593('0x4')](_0xe593('0x5'),_0x28f28c['uniqueid'],_0x28f28c[_0xe593('0x6')],_0x28f28c[_0xe593('0x7')],_0x28f28c[_0xe593('0x8')],_0x28f28c[_0xe593('0x9')],_0x28f28c[_0xe593('0xa')],_0x28f28c[_0xe593('0xb')],_0x28f28c[_0xe593('0xc')]));if(_0x28f28c[_0xe593('0x7')]){utils[_0xe593('0xd')](_0x28f28c[_0xe593('0x7')])['then'](function(_0x38c470){if(_0x38c470){_0x28f28c[_0xe593('0xe')]=_0x38c470[_0xe593('0xe')];_0x28f28c['agentacw']=_0x28f28c['agentcomplete']?_0x38c470[_0xe593('0xf')]:![];_0x28f28c[_0xe593('0x10')]=_0x28f28c[_0xe593('0x11')]?_0x38c470['acwTimeout']:0x0;}utils[_0xe593('0x12')](_0xe593('0x13'),_0x28f28c);});}else{utils[_0xe593('0x12')](_0xe593('0x13'),_0x28f28c);}if(_0x43dabb){delete transfers[_0x28f28c[_0xe593('0x14')]];}else{delete agents[_0x28f28c[_0xe593('0x15')]];}}exports[_0xe593('0x16')]=function(_0xa4d5e9){try{utils[_0xe593('0x17')](util[_0xe593('0x4')]('[%s][agents][agentcalled]',_0xa4d5e9[_0xe593('0x14')]),_0xa4d5e9);agents[_0xa4d5e9[_0xe593('0x15')]]=_0xa4d5e9;agents[_0xa4d5e9['destuniqueid']][_0xe593('0x18')]=utils[_0xe593('0x19')]();agents[_0xa4d5e9['destuniqueid']][_0xe593('0xc')]=_0xe593('0x1a');agents[_0xa4d5e9[_0xe593('0x15')]][_0xe593('0xb')]=null;agents[_0xa4d5e9[_0xe593('0x15')]][_0xe593('0x1b')]=null;utils['info'](util[_0xe593('0x4')](_0xe593('0x1c'),_0xa4d5e9['uniqueid'],agents[_0xa4d5e9[_0xe593('0x15')]][_0xe593('0x8')],_0xa4d5e9['destuniqueid']));}catch(_0x1c94aa){utils[_0xe593('0x1d')](util[_0xe593('0x4')](_0xe593('0x1e'),_0xa4d5e9[_0xe593('0x14')]),_0x1c94aa);}};exports[_0xe593('0x1f')]=function(_0x3d2a51){try{if(!_['isNil'](agents[_0x3d2a51['destuniqueid']])){utils[_0xe593('0x17')](util['format']('[%s][agents][agentringnoanswer]',_0x3d2a51[_0xe593('0x14')]),_0x3d2a51);utils[_0xe593('0x3')](util['format'](_0xe593('0x20'),_0x3d2a51['uniqueid'],agents[_0x3d2a51[_0xe593('0x15')]][_0xe593('0x8')],_0x3d2a51[_0xe593('0x15')]));agents[_0x3d2a51[_0xe593('0x15')]][_0xe593('0x1f')]=!![];agents[_0x3d2a51[_0xe593('0x15')]][_0xe593('0x21')]=utils[_0xe593('0x19')]();agents[_0x3d2a51['destuniqueid']][_0xe593('0xc')]=_0xe593('0x22');agents[_0x3d2a51['destuniqueid']]['reason']=_0xe593('0x22');agents[_0x3d2a51[_0xe593('0x15')]][_0xe593('0x23')]=_0x3d2a51[_0xe593('0x24')]?parseInt(_0x3d2a51[_0xe593('0x24')])/0x3e8:0x0;agents[_0x3d2a51[_0xe593('0x15')]]['talktime']=0x0;unanswered[_0xe593('0x25')](_0x3d2a51['destuniqueid']);}}catch(_0x1dacf6){utils[_0xe593('0x1d')](util['format'](_0xe593('0x26'),_0x3d2a51['uniqueid']),_0x1dacf6);}};exports[_0xe593('0x27')]=function(_0x1c147b){try{_[_0xe593('0x28')](agents,function(_0x501e54,_0x1ae8d9){if(_0x501e54[_0xe593('0x14')]==_0x1c147b[_0xe593('0x14')]&&!_[_0xe593('0x29')](unanswered,_0x501e54[_0xe593('0x15')])){utils[_0xe593('0x17')](util[_0xe593('0x4')]('[%s][agents][queuecallerabandon]',_0x1c147b[_0xe593('0x14')]),_0x1c147b);utils[_0xe593('0x3')](util['format'](_0xe593('0x2a'),_0x1c147b['uniqueid'],_0x501e54[_0xe593('0x8')],_0x501e54[_0xe593('0x15')]));_0x501e54[_0xe593('0x1f')]=!![];_0x501e54[_0xe593('0x21')]=utils[_0xe593('0x19')]();_0x501e54[_0xe593('0xc')]=_0xe593('0x2b');_0x501e54[_0xe593('0x2c')]=_0xe593('0x2b');_0x501e54[_0xe593('0x23')]=_0x1c147b['holdtime'];_0x501e54[_0xe593('0x2d')]=0x0;writeDB(_0x501e54);}});}catch(_0x2c0a30){utils[_0xe593('0x1d')](util['format']('[%s][agents][queuecallerabandon]',_0x1c147b[_0xe593('0x14')]),_0x2c0a30);}};exports['agentconnect']=function(_0x232bf1){try{if(agents[_0x232bf1[_0xe593('0x15')]]){utils[_0xe593('0x17')](util[_0xe593('0x4')](_0xe593('0x2e'),_0x232bf1[_0xe593('0x14')]),_0x232bf1);utils[_0xe593('0x3')](util['format']('[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x232bf1[_0xe593('0x14')],agents[_0x232bf1['destuniqueid']][_0xe593('0x8')],_0x232bf1['destuniqueid']));agents[_0x232bf1[_0xe593('0x15')]]['agentconnectAt']=utils['now']();agents[_0x232bf1[_0xe593('0x15')]][_0xe593('0xb')]=_0x232bf1[_0xe593('0xb')];agents[_0x232bf1['destuniqueid']]['connectedlinename']=_0x232bf1['connectedlinename'];agents[_0x232bf1[_0xe593('0x15')]]['holdtime']=_0x232bf1[_0xe593('0x24')];agents[_0x232bf1[_0xe593('0x15')]][_0xe593('0xc')]=_0xe593('0x2f');_['forIn'](agents,function(_0x196325,_0x53ed3c){if(_0x196325[_0xe593('0x15')]!=_0x232bf1['destuniqueid']&&_0x196325['uniqueid']==_0x232bf1['uniqueid']){_0x196325[_0xe593('0x2d')]=0x0;_0x196325['holdtime']=_0x232bf1[_0xe593('0x24')];_0x196325[_0xe593('0x1f')]=!![];_0x196325[_0xe593('0x21')]=utils['now']();_0x196325[_0xe593('0xc')]=_0xe593('0x30');_0x196325[_0xe593('0x2c')]=_0xe593('0x30');_0x196325[_0xe593('0x31')]=_0x232bf1[_0xe593('0x15')];_0x196325[_0xe593('0x32')]=_0x232bf1[_0xe593('0x8')];writeDB(_0x196325);}});}}catch(_0x4b36e1){utils[_0xe593('0x1d')](util[_0xe593('0x4')](_0xe593('0x2e'),_0x232bf1[_0xe593('0x14')]),_0x4b36e1);}};exports[_0xe593('0x33')]=function(_0x4d3018){try{if(!_['isNil'](agents[_0x4d3018[_0xe593('0x15')]])){utils[_0xe593('0x17')](util[_0xe593('0x4')]('[%s][agents][agentcomplete]',_0x4d3018[_0xe593('0x14')]),_0x4d3018);utils[_0xe593('0x3')](util['format']('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x4d3018[_0xe593('0x14')],agents[_0x4d3018[_0xe593('0x15')]][_0xe593('0x8')],_0x4d3018['destuniqueid']));agents[_0x4d3018[_0xe593('0x15')]][_0xe593('0x33')]=!![];agents[_0x4d3018[_0xe593('0x15')]][_0xe593('0x34')]=utils['now']();agents[_0x4d3018['destuniqueid']]['talktime']=utils['diffTime'](agents[_0x4d3018[_0xe593('0x15')]]['agentcompleteAt'],agents[_0x4d3018[_0xe593('0x15')]][_0xe593('0x35')]);agents[_0x4d3018[_0xe593('0x15')]][_0xe593('0x2c')]=_0x4d3018[_0xe593('0x2c')];agents[_0x4d3018[_0xe593('0x15')]][_0xe593('0xc')]=_0xe593('0x36');writeDB(agents[_0x4d3018['destuniqueid']]);}}catch(_0x3dbb46){utils[_0xe593('0x1d')](util[_0xe593('0x4')]('[%s][agents][agentcomplete]',_0x4d3018[_0xe593('0x14')]),_0x3dbb46);}};exports['blindtransfer']=function(_0x39ec9e){try{if(!_[_0xe593('0x37')](agents[_0x39ec9e[_0xe593('0x38')]])){utils['debug'](util['format'](_0xe593('0x39'),_0x39ec9e[_0xe593('0x14')]),_0x39ec9e);utils['info'](util['format']('[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s',_0x39ec9e['uniqueid'],agents[_0x39ec9e['transfereruniqueid']][_0xe593('0x8')],agents[_0x39ec9e[_0xe593('0x38')]][_0xe593('0x14')]));agents[_0x39ec9e[_0xe593('0x38')]][_0xe593('0x3a')]=!![];agents[_0x39ec9e[_0xe593('0x38')]][_0xe593('0x3b')]=_0xe593('0x3c');agents[_0x39ec9e[_0xe593('0x38')]][_0xe593('0x3d')]=_0x39ec9e[_0xe593('0x3e')];agents[_0x39ec9e[_0xe593('0x38')]][_0xe593('0x3f')]=agents[_0x39ec9e[_0xe593('0x38')]][_0xe593('0x14')];}}catch(_0x46544d){utils['error'](util[_0xe593('0x4')](_0xe593('0x39'),_0x39ec9e[_0xe593('0x14')]),_0x46544d);}};exports[_0xe593('0x40')]=function(_0x1204d8){try{utils[_0xe593('0x17')](util[_0xe593('0x4')](_0xe593('0x41'),_0x1204d8[_0xe593('0x42')]),_0x1204d8);if(_0x1204d8[_0xe593('0x42')]==_0x1204d8[_0xe593('0x43')]){if(!_[_0xe593('0x37')](agents[_0x1204d8[_0xe593('0x44')]])){utils[_0xe593('0x3')](util[_0xe593('0x4')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x1204d8[_0xe593('0x42')],agents[_0x1204d8[_0xe593('0x44')]][_0xe593('0x8')]));agents[_0x1204d8[_0xe593('0x44')]][_0xe593('0x3a')]=!![];agents[_0x1204d8['secondtransfereruniqueid']]['transfertype']=_0xe593('0x45');agents[_0x1204d8[_0xe593('0x44')]][_0xe593('0x3d')]=_0x1204d8[_0xe593('0x46')];agents[_0x1204d8[_0xe593('0x44')]][_0xe593('0x3f')]=_0x1204d8[_0xe593('0x42')];}if(_0x1204d8['transfereeuniqueid']&&agents[_0x1204d8['transfereeuniqueid']]){agents[_0x1204d8[_0xe593('0x47')]][_0xe593('0x48')]=0x1;transfers[_0x1204d8['transfereeuniqueid']]=_[_0xe593('0x49')](agents[_0x1204d8[_0xe593('0x47')]]);transfers[_0x1204d8[_0xe593('0x47')]][_0xe593('0xa')]=agents[_0x1204d8[_0xe593('0x44')]][_0xe593('0xa')];transfers[_0x1204d8[_0xe593('0x47')]][_0xe593('0x4a')]=agents[_0x1204d8[_0xe593('0x44')]][_0xe593('0x4a')];transfers[_0x1204d8['transfereeuniqueid']][_0xe593('0x18')]=utils[_0xe593('0x19')]();transfers[_0x1204d8[_0xe593('0x47')]][_0xe593('0x35')]=utils[_0xe593('0x19')]();transfers[_0x1204d8[_0xe593('0x47')]][_0xe593('0x23')]=0x0;transfers[_0x1204d8['transfereeuniqueid']][_0xe593('0x48')]=0x2;}}else if(_0x1204d8[_0xe593('0x44')]==_0x1204d8[_0xe593('0x4b')]){if(!_[_0xe593('0x37')](agents[_0x1204d8['origtransfereruniqueid']])){utils[_0xe593('0x3')](util[_0xe593('0x4')](_0xe593('0x4c'),_0x1204d8[_0xe593('0x42')],agents[_0x1204d8[_0xe593('0x42')]]['membername']));agents[_0x1204d8[_0xe593('0x42')]][_0xe593('0x3a')]=!![];agents[_0x1204d8[_0xe593('0x42')]][_0xe593('0x3b')]=_0xe593('0x45');agents[_0x1204d8[_0xe593('0x42')]][_0xe593('0x3d')]=_0x1204d8[_0xe593('0x4d')];agents[_0x1204d8['origtransfereruniqueid']][_0xe593('0x3f')]=_0x1204d8[_0xe593('0x44')];}if(_0x1204d8[_0xe593('0x4e')]&&agents[_0x1204d8[_0xe593('0x4e')]]){agents[_0x1204d8[_0xe593('0x4e')]][_0xe593('0x48')]=0x1;transfers[_0x1204d8[_0xe593('0x4e')]]=_[_0xe593('0x49')](agents[_0x1204d8[_0xe593('0x4e')]]);transfers[_0x1204d8[_0xe593('0x4e')]]['calleridnum']=agents[_0x1204d8[_0xe593('0x42')]][_0xe593('0xa')];transfers[_0x1204d8[_0xe593('0x4e')]]['calleridname']=agents[_0x1204d8[_0xe593('0x42')]][_0xe593('0x4a')];transfers[_0x1204d8[_0xe593('0x4e')]][_0xe593('0x18')]=utils[_0xe593('0x19')]();transfers[_0x1204d8['transfertargetuniqueid']][_0xe593('0x35')]=utils[_0xe593('0x19')]();transfers[_0x1204d8['transfertargetuniqueid']][_0xe593('0x23')]=0x0;transfers[_0x1204d8[_0xe593('0x4e')]][_0xe593('0x48')]=0x2;}}}catch(_0x3486b3){utils['error'](util[_0xe593('0x4')](_0xe593('0x41'),_0x1204d8[_0xe593('0x42')]),_0x3486b3);}};exports['hangup']=function(_0x43dcb0){try{utils[_0xe593('0x17')](util[_0xe593('0x4')]('[%s][agents][hangup]',_0x43dcb0[_0xe593('0x14')]),_0x43dcb0);if(agents[_0x43dcb0[_0xe593('0x14')]]&&agents[_0x43dcb0[_0xe593('0x14')]][_0xe593('0x2c')]===_0xe593('0x22')){if(_0x43dcb0['cause']==='21'){agents[_0x43dcb0[_0xe593('0x14')]][_0xe593('0x2c')]=_0xe593('0x4f');agents[_0x43dcb0[_0xe593('0x14')]][_0xe593('0xc')]=_0xe593('0x4f');}utils[_0xe593('0x3')](util[_0xe593('0x4')](_0xe593('0x50'),_0x43dcb0[_0xe593('0x14')],agents[_0x43dcb0[_0xe593('0x14')]][_0xe593('0x8')],agents[_0x43dcb0[_0xe593('0x14')]][_0xe593('0x2c')],agents[_0x43dcb0['uniqueid']][_0xe593('0xc')]));writeDB(agents[_0x43dcb0[_0xe593('0x14')]]);var _0x9427d6=unanswered[_0xe593('0x51')](_0x43dcb0[_0xe593('0x14')]);if(_0x9427d6>-0x1){unanswered[_0xe593('0x52')](_0x9427d6,0x1);}}if(transfers[_0x43dcb0[_0xe593('0x14')]]){transfers[_0x43dcb0[_0xe593('0x14')]]['agentcomplete']=!![];transfers[_0x43dcb0['uniqueid']]['agentcompleteAt']=utils[_0xe593('0x19')]();transfers[_0x43dcb0[_0xe593('0x14')]][_0xe593('0x2d')]=utils['diffTime'](transfers[_0x43dcb0['uniqueid']][_0xe593('0x34')],transfers[_0x43dcb0['uniqueid']][_0xe593('0x35')]);transfers[_0x43dcb0[_0xe593('0x14')]][_0xe593('0x2c')]='agent';transfers[_0x43dcb0[_0xe593('0x14')]][_0xe593('0xc')]=_0xe593('0x36');utils[_0xe593('0x3')](util[_0xe593('0x4')](_0xe593('0x50'),_0x43dcb0[_0xe593('0x14')],transfers[_0x43dcb0['uniqueid']][_0xe593('0x8')],transfers[_0x43dcb0[_0xe593('0x14')]]['reason'],transfers[_0x43dcb0[_0xe593('0x14')]][_0xe593('0xc')]));writeDB(transfers[_0x43dcb0[_0xe593('0x14')]],!![]);}if(agents[_0x43dcb0['uniqueid']]&&agents[_0x43dcb0[_0xe593('0x14')]][_0xe593('0x35')]){agents[_0x43dcb0[_0xe593('0x14')]][_0xe593('0x33')]=!![];agents[_0x43dcb0[_0xe593('0x14')]][_0xe593('0x34')]=utils['now']();agents[_0x43dcb0['uniqueid']][_0xe593('0x2d')]=utils['diffTime'](agents[_0x43dcb0['uniqueid']]['agentcompleteAt'],agents[_0x43dcb0[_0xe593('0x14')]][_0xe593('0x35')]);agents[_0x43dcb0[_0xe593('0x14')]][_0xe593('0x2c')]=agents[_0x43dcb0[_0xe593('0x14')]]['transfer']?'transfer':_0xe593('0x53');agents[_0x43dcb0[_0xe593('0x14')]][_0xe593('0xc')]=_0xe593('0x36');utils['info'](util[_0xe593('0x4')](_0xe593('0x50'),_0x43dcb0[_0xe593('0x14')],agents[_0x43dcb0['uniqueid']][_0xe593('0x8')],agents[_0x43dcb0[_0xe593('0x14')]]['reason'],agents[_0x43dcb0[_0xe593('0x14')]][_0xe593('0xc')]));writeDB(agents[_0x43dcb0['uniqueid']]);}}catch(_0x5bb9e2){utils['error'](util['format']('[%s][agents][hangup]',_0x43dcb0['uniqueid']),_0x5bb9e2);}};
\ No newline at end of file
index d3bb698..ff29857 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b5b=['request','CreateVoiceCallReport','newchannel','debug','linkedid','OutgoingSpoolFailed','context','exten','calleridnum','now','DOCUMENTATION','error','newstate','[%s][calls][newstate]','[%s][calls][newstate]\x20context:%s\x20channel:%s','isNil','systemanswertime','channelstate','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','duration','diffTime','billableseconds','endtime','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','variable','value','source','xmd-phone','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','queue','xmd-contactid','ContactId','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][varset]','newexten','[%s][calls][newexten]','application','toLowerCase','set','startsWith','appdata','split','substring','lastIndexOf','includes','noop','execif','gotoif','lodash','FAILED','NO\x20ANSWER','ANSWERED','blinds','uniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','membername','interface','connectedlinenum','lastevent','accountcode','getUserByInternal','UserId'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x1b5b,0xc3));var _0xb1b5=function(_0x868b7c,_0xfa438b){_0x868b7c=_0x868b7c-0x0;var _0x21683c=_0x1b5b[_0x868b7c];return _0x21683c;};'use strict';var _=require(_0xb1b5('0x0'));var util=require('util');var utils=require('./utils');var transfers=require('./transfers.controller');var dispositions=['NO\x20ANSWER',_0xb1b5('0x1'),'FAILED',_0xb1b5('0x2'),_0xb1b5('0x2'),_0xb1b5('0x2'),_0xb1b5('0x3'),'BUSY',_0xb1b5('0x1'),_0xb1b5('0x1'),_0xb1b5('0x1')];var channels={};function writeDB(_0x1f6842){var _0x33432f;if(transfers[_0xb1b5('0x4')][_0x1f6842[_0xb1b5('0x5')]]){_0x33432f=_0x1f6842[_0xb1b5('0x5')];_0x1f6842[_0xb1b5('0x5')]=transfers[_0xb1b5('0x4')][_0x1f6842[_0xb1b5('0x5')]]['transfereeuniqueid'];}utils[_0xb1b5('0x6')](util[_0xb1b5('0x7')](_0xb1b5('0x8'),_0x1f6842[_0xb1b5('0x5')],_0x1f6842[_0xb1b5('0x9')],_0x1f6842['queue'],_0x1f6842[_0xb1b5('0xa')],_0x1f6842[_0xb1b5('0xb')],_0x1f6842['calleridnum'],_0x1f6842[_0xb1b5('0xc')],_0x1f6842[_0xb1b5('0xd')]));if(_0x1f6842[_0xb1b5('0xe')]){utils[_0xb1b5('0xf')](_0x1f6842['accountcode'])['then'](function(_0xd2da3){if(_0xd2da3){_0x1f6842[_0xb1b5('0x10')]=_0xd2da3['id'];}utils[_0xb1b5('0x11')](_0xb1b5('0x12'),_0x1f6842);});}else{utils[_0xb1b5('0x11')]('CreateVoiceCallReport',_0x1f6842);}if(channels[_0x1f6842[_0xb1b5('0x5')]]){delete channels[_0x1f6842[_0xb1b5('0x5')]];}else if(_0x33432f&&channels[_0x33432f]){delete transfers[_0xb1b5('0x4')][_0x33432f];delete channels[_0x33432f];}}exports[_0xb1b5('0x13')]=function(_0x24d122){try{utils[_0xb1b5('0x14')](util[_0xb1b5('0x7')]('[%s][calls][newchannel]',_0x24d122[_0xb1b5('0x5')]),_0x24d122);if(_0x24d122[_0xb1b5('0x5')]==_0x24d122[_0xb1b5('0x15')]&&_0x24d122[_0xb1b5('0x9')]!=_0xb1b5('0x16')){utils[_0xb1b5('0x6')](util[_0xb1b5('0x7')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x24d122[_0xb1b5('0x5')],_0x24d122[_0xb1b5('0x17')],_0x24d122[_0xb1b5('0x18')]));channels[_0x24d122[_0xb1b5('0x5')]]={'uniqueid':_0x24d122[_0xb1b5('0x5')],'accountcode':_0x24d122[_0xb1b5('0xe')],'source':_0x24d122[_0xb1b5('0x19')],'destination':_0x24d122[_0xb1b5('0x18')],'destinationcontext':_0x24d122[_0xb1b5('0x17')],'channel':_0x24d122[_0xb1b5('0x9')],'starttime':utils[_0xb1b5('0x1a')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xb1b5('0x2'),'amaflags':_0xb1b5('0x1b')};}}catch(_0x2b783f){utils[_0xb1b5('0x1c')](util[_0xb1b5('0x7')]('[%s][calls][newchannel]',_0x24d122['uniqueid']),_0x2b783f);}};exports[_0xb1b5('0x1d')]=function(_0x3eba6b){try{utils[_0xb1b5('0x14')](util[_0xb1b5('0x7')](_0xb1b5('0x1e'),_0x3eba6b['uniqueid']),_0x3eba6b);if(!_['isNil'](channels[_0x3eba6b[_0xb1b5('0x5')]])&&_0x3eba6b['channelstate']==0x6){utils[_0xb1b5('0x6')](util['format'](_0xb1b5('0x1f'),_0x3eba6b[_0xb1b5('0x5')],_0x3eba6b[_0xb1b5('0x17')],_0x3eba6b[_0xb1b5('0x9')]));if(_[_0xb1b5('0x20')](channels[_0x3eba6b[_0xb1b5('0x5')]][_0xb1b5('0x21')])){channels[_0x3eba6b[_0xb1b5('0x5')]][_0xb1b5('0x21')]=utils[_0xb1b5('0x1a')]();}}else if(!_['isNil'](channels[_0x3eba6b['linkedid']])&&_0x3eba6b[_0xb1b5('0x22')]==0x6&&_0x3eba6b[_0xb1b5('0x17')]!=_0xb1b5('0x23')){utils[_0xb1b5('0x6')](util[_0xb1b5('0x7')](_0xb1b5('0x24'),_0x3eba6b[_0xb1b5('0x5')],_0x3eba6b[_0xb1b5('0x15')],_0x3eba6b[_0xb1b5('0x17')],_0x3eba6b[_0xb1b5('0x9')]));channels[_0x3eba6b[_0xb1b5('0x15')]][_0xb1b5('0xe')]=_0x3eba6b[_0xb1b5('0xe')];channels[_0x3eba6b[_0xb1b5('0x15')]][_0xb1b5('0x25')]=_0x3eba6b[_0xb1b5('0x9')];if(_[_0xb1b5('0x20')](channels[_0x3eba6b[_0xb1b5('0x15')]][_0xb1b5('0x26')])){channels[_0x3eba6b[_0xb1b5('0x15')]][_0xb1b5('0x26')]=utils['now']();}channels[_0x3eba6b['linkedid']][_0xb1b5('0x27')]=dispositions[_[_0xb1b5('0x28')](_0x3eba6b[_0xb1b5('0x22')])]||'ANSWERED';}}catch(_0x28e563){utils['error'](util[_0xb1b5('0x7')]('[%s][calls][newstate]',_0x3eba6b['uniqueid']),_0x28e563);}};exports[_0xb1b5('0x29')]=function(_0x3d103c){try{if(!_[_0xb1b5('0x20')](channels[_0x3d103c[_0xb1b5('0x5')]])){utils[_0xb1b5('0x14')](util[_0xb1b5('0x7')](_0xb1b5('0x2a'),_0x3d103c[_0xb1b5('0x5')]),_0x3d103c);if(_[_0xb1b5('0x20')](channels[_0x3d103c[_0xb1b5('0x5')]][_0xb1b5('0x2b')])){channels[_0x3d103c[_0xb1b5('0x5')]][_0xb1b5('0x2b')]=_0x3d103c[_0xb1b5('0x2c')]+'\x20<'+_0x3d103c['calleridnum']+'>';}utils['info'](util[_0xb1b5('0x7')](_0xb1b5('0x2d'),_0x3d103c[_0xb1b5('0x5')],channels[_0x3d103c['uniqueid']][_0xb1b5('0x2b')],_0x3d103c['cause-txt']));channels[_0x3d103c[_0xb1b5('0x5')]]['endtime']=utils[_0xb1b5('0x1a')]();channels[_0x3d103c[_0xb1b5('0x5')]][_0xb1b5('0x2e')]=utils[_0xb1b5('0x2f')](channels[_0x3d103c[_0xb1b5('0x5')]]['endtime'],channels[_0x3d103c[_0xb1b5('0x5')]]['starttime']);channels[_0x3d103c[_0xb1b5('0x5')]][_0xb1b5('0x30')]=channels[_0x3d103c[_0xb1b5('0x5')]][_0xb1b5('0x26')]?utils[_0xb1b5('0x2f')](channels[_0x3d103c[_0xb1b5('0x5')]][_0xb1b5('0x31')],channels[_0x3d103c['uniqueid']][_0xb1b5('0x26')]):0x0;writeDB(channels[_0x3d103c[_0xb1b5('0x5')]]);}}catch(_0x2521d3){utils[_0xb1b5('0x1c')](util['format'](_0xb1b5('0x2a'),_0x3d103c[_0xb1b5('0x5')]),_0x2521d3);}};exports[_0xb1b5('0x32')]=function(_0x2f99bb){try{if(!_[_0xb1b5('0x20')](channels[_0x2f99bb[_0xb1b5('0x33')]])){utils['debug'](util[_0xb1b5('0x7')](_0xb1b5('0x34'),_0x2f99bb[_0xb1b5('0x35')]),_0x2f99bb);if(channels[_0x2f99bb['localtwolinkedid']][_0xb1b5('0x9')]==_0x2f99bb[_0xb1b5('0x36')]){utils['info'](util['format'](_0xb1b5('0x37'),_0x2f99bb[_0xb1b5('0x35')],_0x2f99bb[_0xb1b5('0x33')],_0x2f99bb[_0xb1b5('0x38')]));channels[_0x2f99bb[_0xb1b5('0x33')]][_0xb1b5('0x25')]=_0x2f99bb[_0xb1b5('0x38')];channels[_0x2f99bb['localtwolinkedid']][_0xb1b5('0x39')]=_0xb1b5('0x3a');}else if(channels[_0x2f99bb[_0xb1b5('0x33')]]['channel']=_0x2f99bb[_0xb1b5('0x3b')]){utils[_0xb1b5('0x6')](util['format'](_0xb1b5('0x37'),_0x2f99bb['origtransfereruniqueid'],_0x2f99bb[_0xb1b5('0x33')],_0x2f99bb[_0xb1b5('0x3c')]));channels[_0x2f99bb[_0xb1b5('0x33')]]['destinationchannel']=_0x2f99bb[_0xb1b5('0x3c')];channels[_0x2f99bb[_0xb1b5('0x33')]][_0xb1b5('0x39')]=_0xb1b5('0x3a');}}}catch(_0x446eec){utils[_0xb1b5('0x1c')](util[_0xb1b5('0x7')](_0xb1b5('0x34'),_0x2f99bb[_0xb1b5('0x35')]),_0x446eec);}};exports[_0xb1b5('0x3d')]=function(_0x124aaf){try{if(!_[_0xb1b5('0x20')](channels[_0x124aaf[_0xb1b5('0x5')]])){utils[_0xb1b5('0x14')](util[_0xb1b5('0x7')](_0xb1b5('0x3e'),_0x124aaf[_0xb1b5('0x5')]),_0x124aaf);channels[_0x124aaf['uniqueid']]['musiconholdstartAt']=utils[_0xb1b5('0x1a')]();utils[_0xb1b5('0x6')](util[_0xb1b5('0x7')](_0xb1b5('0x3f'),_0x124aaf[_0xb1b5('0x5')],channels[_0x124aaf[_0xb1b5('0x5')]][_0xb1b5('0x40')]));}}catch(_0x4ce97a){utils[_0xb1b5('0x1c')](util[_0xb1b5('0x7')](_0xb1b5('0x3e'),_0x124aaf[_0xb1b5('0x5')]),_0x4ce97a);}};exports[_0xb1b5('0x41')]=function(_0x4cfce7){try{if(!_[_0xb1b5('0x20')](channels[_0x4cfce7[_0xb1b5('0x5')]])){utils[_0xb1b5('0x14')](util['format'](_0xb1b5('0x42'),_0x4cfce7[_0xb1b5('0x5')]),_0x4cfce7);if(!_[_0xb1b5('0x20')](channels[_0x4cfce7[_0xb1b5('0x5')]][_0xb1b5('0x40')])){channels[_0x4cfce7['uniqueid']][_0xb1b5('0x43')]+=utils[_0xb1b5('0x2f')](utils[_0xb1b5('0x1a')](),channels[_0x4cfce7[_0xb1b5('0x5')]][_0xb1b5('0x40')]);utils[_0xb1b5('0x6')](util[_0xb1b5('0x7')](_0xb1b5('0x44'),_0x4cfce7[_0xb1b5('0x5')],channels[_0x4cfce7[_0xb1b5('0x5')]][_0xb1b5('0x43')]));delete channels[_0x4cfce7[_0xb1b5('0x5')]][_0xb1b5('0x40')];}}}catch(_0x4fa2d5){utils[_0xb1b5('0x1c')](util[_0xb1b5('0x7')](_0xb1b5('0x42'),_0x4cfce7[_0xb1b5('0x5')]),_0x4fa2d5);}};exports['varset']=function(_0x1e18a6){try{if(!_[_0xb1b5('0x20')](channels[_0x1e18a6[_0xb1b5('0x5')]])){utils[_0xb1b5('0x14')](util['format']('[%s][calls][varset]',_0x1e18a6[_0xb1b5('0x5')]),_0x1e18a6);if(!_[_0xb1b5('0x20')](_0x1e18a6[_0xb1b5('0x45')]['xmd-originatecalleridnum'])){utils[_0xb1b5('0x6')](util[_0xb1b5('0x7')]('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x1e18a6['uniqueid'],_0x1e18a6[_0xb1b5('0x46')]));channels[_0x1e18a6[_0xb1b5('0x5')]][_0xb1b5('0x47')]=_0x1e18a6[_0xb1b5('0x46')];}if(!_['isNil'](_0x1e18a6['variable'][_0xb1b5('0x48')])){utils[_0xb1b5('0x6')](util[_0xb1b5('0x7')]('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x1e18a6[_0xb1b5('0x5')],_0x1e18a6['value']));channels[_0x1e18a6['uniqueid']][_0xb1b5('0x49')]=_0x1e18a6['value'];channels[_0x1e18a6[_0xb1b5('0x5')]]['callerid']='\x22'+_0x1e18a6[_0xb1b5('0x46')]+_0xb1b5('0x4a')+_0x1e18a6[_0xb1b5('0x46')]+'>';}if(!_[_0xb1b5('0x20')](_0x1e18a6[_0xb1b5('0x45')][_0xb1b5('0x4b')])||!_[_0xb1b5('0x20')](_0x1e18a6[_0xb1b5('0x45')]['xmd-callerid'])){utils[_0xb1b5('0x6')](util['format']('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x1e18a6['uniqueid'],!_[_0xb1b5('0x20')](_0x1e18a6[_0xb1b5('0x45')]['xmd-callerid-preview'])?'xmd-callerid-preview':_0xb1b5('0x4c'),_0x1e18a6[_0xb1b5('0x46')]));channels[_0x1e18a6[_0xb1b5('0x5')]][_0xb1b5('0x2b')]=_0x1e18a6[_0xb1b5('0x46')];}if(!_[_0xb1b5('0x20')](_0x1e18a6[_0xb1b5('0x45')]['xmd-queue'])||!_[_0xb1b5('0x20')](_0x1e18a6['variable']['xmcs-queue'])){utils[_0xb1b5('0x6')](util[_0xb1b5('0x7')](_0xb1b5('0x4d'),_0x1e18a6[_0xb1b5('0x5')],!_[_0xb1b5('0x20')](_0x1e18a6['variable'][_0xb1b5('0x4e')])?_0xb1b5('0x4e'):_0xb1b5('0x4f'),_0x1e18a6[_0xb1b5('0x46')]));channels[_0x1e18a6[_0xb1b5('0x5')]][_0xb1b5('0x50')]=_0xb1b5('0x51');channels[_0x1e18a6[_0xb1b5('0x5')]][_0xb1b5('0x52')]=_0x1e18a6['value'];channels[_0x1e18a6[_0xb1b5('0x5')]][_0xb1b5('0x53')]=!![];}if(!_['isNil'](_0x1e18a6['variable'][_0xb1b5('0x54')])){utils[_0xb1b5('0x6')](util['format']('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x1e18a6[_0xb1b5('0x5')],_0x1e18a6[_0xb1b5('0x46')]));channels[_0x1e18a6[_0xb1b5('0x5')]][_0xb1b5('0x55')]=_0x1e18a6['value'];}if(!_[_0xb1b5('0x20')](_0x1e18a6[_0xb1b5('0x45')]['xmd-cdrtype'])){utils['info'](util[_0xb1b5('0x7')](_0xb1b5('0x56'),_0x1e18a6['uniqueid'],_0x1e18a6[_0xb1b5('0x46')]));channels[_0x1e18a6[_0xb1b5('0x5')]][_0xb1b5('0x57')]=_0x1e18a6['value'];}if(!_[_0xb1b5('0x20')](_0x1e18a6[_0xb1b5('0x45')]['outboundrouteid'])){utils['info'](util[_0xb1b5('0x7')]('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x1e18a6[_0xb1b5('0x5')],_0x1e18a6[_0xb1b5('0x46')]));channels[_0x1e18a6[_0xb1b5('0x5')]][_0xb1b5('0x58')]=_0x1e18a6[_0xb1b5('0x46')];}if(!_[_0xb1b5('0x20')](_0x1e18a6['variable'][_0xb1b5('0x59')])){utils[_0xb1b5('0x6')](util[_0xb1b5('0x7')](_0xb1b5('0x5a'),_0x1e18a6[_0xb1b5('0x5')],_0x1e18a6[_0xb1b5('0x46')]));channels[_0x1e18a6[_0xb1b5('0x5')]][_0xb1b5('0x59')]=_0x1e18a6[_0xb1b5('0x46')];}}}catch(_0x3c5add){utils[_0xb1b5('0x1c')](util['format'](_0xb1b5('0x5b'),_0x1e18a6[_0xb1b5('0x5')]),_0x3c5add);}};exports[_0xb1b5('0x5c')]=function(_0x52043d){try{if(!_[_0xb1b5('0x20')](channels[_0x52043d[_0xb1b5('0x5')]])){utils[_0xb1b5('0x14')](util[_0xb1b5('0x7')](_0xb1b5('0x5d'),_0x52043d[_0xb1b5('0x5')]),_0x52043d);utils[_0xb1b5('0x6')](util['format']('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x52043d[_0xb1b5('0x5')],_0x52043d['application'],_0x52043d['appdata']));if(_0x52043d[_0xb1b5('0x5e')][_0xb1b5('0x5f')]()==_0xb1b5('0x60')&&_[_0xb1b5('0x61')](_0x52043d[_0xb1b5('0x62')]['toLowerCase'](),'cdr')){var _0x5164da=_0x52043d['appdata'][_0xb1b5('0x63')]('=');var _0x44d2c2=_0x5164da[0x0][_0xb1b5('0x64')](_0x5164da[0x0][_0xb1b5('0x65')]('(')+0x1,_0x5164da[0x0]['lastIndexOf'](')'));var _0x5441a2=_0x5164da[0x1];channels[_0x52043d[_0xb1b5('0x5')]][_0x44d2c2]=_0x5441a2;}if(!_[_0xb1b5('0x66')]([_0xb1b5('0x29'),_0xb1b5('0x67'),_0xb1b5('0x68'),'set',_0xb1b5('0x69')],_0x52043d[_0xb1b5('0x5e')][_0xb1b5('0x5f')]())){channels[_0x52043d[_0xb1b5('0x5')]][_0xb1b5('0x50')]=_0x52043d['application'];channels[_0x52043d[_0xb1b5('0x5')]]['lastdata']=_0x52043d[_0xb1b5('0x62')];}}}catch(_0x2cd9a9){utils[_0xb1b5('0x1c')](util['format'](_0xb1b5('0x5d'),_0x52043d[_0xb1b5('0x5')]),_0x2cd9a9);}};
\ No newline at end of file
+var _0x7da6=['[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]','newexten','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','includes','execif','gotoif','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','BUSY','blinds','uniqueid','format','channel','membername','interface','calleridnum','lastevent','accountcode','getUserByInternal','UserId','request','CreateVoiceCallReport','newchannel','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','error','newstate','channelstate','info','[%s][calls][newstate]\x20context:%s\x20channel:%s','isNil','systemanswertime','now','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','disposition','toNumber','[%s][calls][newstate]','[%s][calls][hangup]','callerid','calleridname','cause-txt','endtime','duration','diffTime','billableseconds','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','origtransfereruniqueid','musiconholdstart','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','[%s][calls][musiconholdstart]','mohtime','[%s][calls][musiconholdstop]','varset','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','source','variable','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','value','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','queue','xmd-contactid'];(function(_0x32df73,_0x556837){var _0x421516=function(_0x32f297){while(--_0x32f297){_0x32df73['push'](_0x32df73['shift']());}};_0x421516(++_0x556837);}(_0x7da6,0x81));var _0x67da=function(_0x143ce6,_0x46e089){_0x143ce6=_0x143ce6-0x0;var _0x33ed64=_0x7da6[_0x143ce6];return _0x33ed64;};'use strict';var _=require(_0x67da('0x0'));var util=require(_0x67da('0x1'));var utils=require(_0x67da('0x2'));var transfers=require(_0x67da('0x3'));var dispositions=[_0x67da('0x4'),_0x67da('0x5'),_0x67da('0x5'),_0x67da('0x4'),'NO\x20ANSWER',_0x67da('0x4'),'ANSWERED',_0x67da('0x6'),_0x67da('0x5'),_0x67da('0x5'),_0x67da('0x5')];var channels={};function writeDB(_0x2333e7){var _0x3a425a;if(transfers[_0x67da('0x7')][_0x2333e7['uniqueid']]){_0x3a425a=_0x2333e7['uniqueid'];_0x2333e7['uniqueid']=transfers[_0x67da('0x7')][_0x2333e7[_0x67da('0x8')]]['transfereeuniqueid'];}utils['info'](util[_0x67da('0x9')]('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x2333e7[_0x67da('0x8')],_0x2333e7[_0x67da('0xa')],_0x2333e7['queue'],_0x2333e7[_0x67da('0xb')],_0x2333e7[_0x67da('0xc')],_0x2333e7[_0x67da('0xd')],_0x2333e7['connectedlinenum'],_0x2333e7[_0x67da('0xe')]));if(_0x2333e7[_0x67da('0xf')]){utils[_0x67da('0x10')](_0x2333e7[_0x67da('0xf')])['then'](function(_0x17947b){if(_0x17947b){_0x2333e7[_0x67da('0x11')]=_0x17947b['id'];}utils[_0x67da('0x12')](_0x67da('0x13'),_0x2333e7);});}else{utils[_0x67da('0x12')](_0x67da('0x13'),_0x2333e7);}if(channels[_0x2333e7[_0x67da('0x8')]]){delete channels[_0x2333e7[_0x67da('0x8')]];}else if(_0x3a425a&&channels[_0x3a425a]){delete transfers[_0x67da('0x7')][_0x3a425a];delete channels[_0x3a425a];}}exports[_0x67da('0x14')]=function(_0x588798){try{utils[_0x67da('0x15')](util['format'](_0x67da('0x16'),_0x588798[_0x67da('0x8')]),_0x588798);if(_0x588798[_0x67da('0x8')]==_0x588798[_0x67da('0x17')]&&_0x588798[_0x67da('0xa')]!=_0x67da('0x18')){utils['info'](util[_0x67da('0x9')](_0x67da('0x19'),_0x588798[_0x67da('0x8')],_0x588798[_0x67da('0x1a')],_0x588798['exten']));channels[_0x588798['uniqueid']]={'uniqueid':_0x588798[_0x67da('0x8')],'accountcode':_0x588798[_0x67da('0xf')],'source':_0x588798[_0x67da('0xd')],'destination':_0x588798[_0x67da('0x1b')],'destinationcontext':_0x588798[_0x67da('0x1a')],'channel':_0x588798[_0x67da('0xa')],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':'DOCUMENTATION'};}}catch(_0x4cab19){utils[_0x67da('0x1c')](util[_0x67da('0x9')](_0x67da('0x16'),_0x588798[_0x67da('0x8')]),_0x4cab19);}};exports[_0x67da('0x1d')]=function(_0x22a085){try{utils[_0x67da('0x15')](util['format']('[%s][calls][newstate]',_0x22a085['uniqueid']),_0x22a085);if(!_['isNil'](channels[_0x22a085[_0x67da('0x8')]])&&_0x22a085[_0x67da('0x1e')]==0x6){utils[_0x67da('0x1f')](util[_0x67da('0x9')](_0x67da('0x20'),_0x22a085[_0x67da('0x8')],_0x22a085[_0x67da('0x1a')],_0x22a085[_0x67da('0xa')]));if(_[_0x67da('0x21')](channels[_0x22a085[_0x67da('0x8')]][_0x67da('0x22')])){channels[_0x22a085['uniqueid']][_0x67da('0x22')]=utils[_0x67da('0x23')]();}}else if(!_['isNil'](channels[_0x22a085[_0x67da('0x17')]])&&_0x22a085['channelstate']==0x6&&_0x22a085[_0x67da('0x1a')]!='transfer'){utils[_0x67da('0x1f')](util[_0x67da('0x9')](_0x67da('0x24'),_0x22a085['uniqueid'],_0x22a085[_0x67da('0x17')],_0x22a085[_0x67da('0x1a')],_0x22a085[_0x67da('0xa')]));channels[_0x22a085['linkedid']][_0x67da('0xf')]=_0x22a085[_0x67da('0xf')];channels[_0x22a085[_0x67da('0x17')]][_0x67da('0x25')]=_0x22a085[_0x67da('0xa')];if(_[_0x67da('0x21')](channels[_0x22a085['linkedid']]['answertime'])){channels[_0x22a085[_0x67da('0x17')]]['answertime']=utils[_0x67da('0x23')]();}channels[_0x22a085[_0x67da('0x17')]][_0x67da('0x26')]=dispositions[_[_0x67da('0x27')](_0x22a085['channelstate'])]||'ANSWERED';}}catch(_0x595aa9){utils[_0x67da('0x1c')](util['format'](_0x67da('0x28'),_0x22a085[_0x67da('0x8')]),_0x595aa9);}};exports['hangup']=function(_0xea9877){try{if(!_['isNil'](channels[_0xea9877[_0x67da('0x8')]])){utils[_0x67da('0x15')](util['format'](_0x67da('0x29'),_0xea9877[_0x67da('0x8')]),_0xea9877);if(_[_0x67da('0x21')](channels[_0xea9877['uniqueid']][_0x67da('0x2a')])){channels[_0xea9877['uniqueid']][_0x67da('0x2a')]=_0xea9877[_0x67da('0x2b')]+'\x20<'+_0xea9877[_0x67da('0xd')]+'>';}utils[_0x67da('0x1f')](util[_0x67da('0x9')]('[%s][calls][hangup]\x20callerid:%s\x20reason:%s',_0xea9877[_0x67da('0x8')],channels[_0xea9877['uniqueid']][_0x67da('0x2a')],_0xea9877[_0x67da('0x2c')]));channels[_0xea9877[_0x67da('0x8')]][_0x67da('0x2d')]=utils['now']();channels[_0xea9877[_0x67da('0x8')]][_0x67da('0x2e')]=utils[_0x67da('0x2f')](channels[_0xea9877[_0x67da('0x8')]][_0x67da('0x2d')],channels[_0xea9877[_0x67da('0x8')]]['starttime']);channels[_0xea9877[_0x67da('0x8')]][_0x67da('0x30')]=channels[_0xea9877[_0x67da('0x8')]]['answertime']?utils[_0x67da('0x2f')](channels[_0xea9877[_0x67da('0x8')]][_0x67da('0x2d')],channels[_0xea9877[_0x67da('0x8')]]['answertime']):0x0;writeDB(channels[_0xea9877[_0x67da('0x8')]]);}}catch(_0x2b3aa6){utils[_0x67da('0x1c')](util[_0x67da('0x9')](_0x67da('0x29'),_0xea9877[_0x67da('0x8')]),_0x2b3aa6);}};exports[_0x67da('0x31')]=function(_0x388dd8){try{if(!_[_0x67da('0x21')](channels[_0x388dd8[_0x67da('0x32')]])){utils['debug'](util['format'](_0x67da('0x33'),_0x388dd8['origtransfereruniqueid']),_0x388dd8);if(channels[_0x388dd8[_0x67da('0x32')]][_0x67da('0xa')]==_0x388dd8[_0x67da('0x34')]){utils[_0x67da('0x1f')](util[_0x67da('0x9')](_0x67da('0x35'),_0x388dd8['origtransfereruniqueid'],_0x388dd8['localtwolinkedid'],_0x388dd8['secondtransfererchannel']));channels[_0x388dd8[_0x67da('0x32')]][_0x67da('0x25')]=_0x388dd8[_0x67da('0x36')];channels[_0x388dd8['localtwolinkedid']][_0x67da('0x37')]=_0x67da('0x38');}else if(channels[_0x388dd8[_0x67da('0x32')]][_0x67da('0xa')]=_0x388dd8['transfertargetchannel']){utils[_0x67da('0x1f')](util[_0x67da('0x9')](_0x67da('0x35'),_0x388dd8[_0x67da('0x39')],_0x388dd8[_0x67da('0x32')],_0x388dd8['origtransfererchannel']));channels[_0x388dd8[_0x67da('0x32')]][_0x67da('0x25')]=_0x388dd8['origtransfererchannel'];channels[_0x388dd8[_0x67da('0x32')]]['userfield']=_0x67da('0x38');}}}catch(_0xd7f6fa){utils['error'](util[_0x67da('0x9')](_0x67da('0x33'),_0x388dd8[_0x67da('0x39')]),_0xd7f6fa);}};exports[_0x67da('0x3a')]=function(_0x20ca2e){try{if(!_[_0x67da('0x21')](channels[_0x20ca2e['uniqueid']])){utils[_0x67da('0x15')](util[_0x67da('0x9')]('[%s][calls][musiconholdstart]',_0x20ca2e[_0x67da('0x8')]),_0x20ca2e);channels[_0x20ca2e[_0x67da('0x8')]][_0x67da('0x3b')]=utils[_0x67da('0x23')]();utils[_0x67da('0x1f')](util[_0x67da('0x9')](_0x67da('0x3c'),_0x20ca2e['uniqueid'],channels[_0x20ca2e[_0x67da('0x8')]][_0x67da('0x3b')]));}}catch(_0x3649d9){utils[_0x67da('0x1c')](util[_0x67da('0x9')](_0x67da('0x3d'),_0x20ca2e['uniqueid']),_0x3649d9);}};exports['musiconholdstop']=function(_0x2ccfbb){try{if(!_[_0x67da('0x21')](channels[_0x2ccfbb[_0x67da('0x8')]])){utils[_0x67da('0x15')](util[_0x67da('0x9')]('[%s][calls][musiconholdstop]',_0x2ccfbb[_0x67da('0x8')]),_0x2ccfbb);if(!_[_0x67da('0x21')](channels[_0x2ccfbb[_0x67da('0x8')]][_0x67da('0x3b')])){channels[_0x2ccfbb['uniqueid']][_0x67da('0x3e')]+=utils[_0x67da('0x2f')](utils[_0x67da('0x23')](),channels[_0x2ccfbb['uniqueid']][_0x67da('0x3b')]);utils['info'](util[_0x67da('0x9')]('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x2ccfbb[_0x67da('0x8')],channels[_0x2ccfbb[_0x67da('0x8')]][_0x67da('0x3e')]));delete channels[_0x2ccfbb['uniqueid']][_0x67da('0x3b')];}}}catch(_0x3c9613){utils[_0x67da('0x1c')](util[_0x67da('0x9')](_0x67da('0x3f'),_0x2ccfbb[_0x67da('0x8')]),_0x3c9613);}};exports[_0x67da('0x40')]=function(_0x5b84a6){try{if(!_['isNil'](channels[_0x5b84a6[_0x67da('0x8')]])){utils[_0x67da('0x15')](util[_0x67da('0x9')]('[%s][calls][varset]',_0x5b84a6['uniqueid']),_0x5b84a6);if(!_['isNil'](_0x5b84a6['variable'][_0x67da('0x41')])){utils[_0x67da('0x1f')](util['format'](_0x67da('0x42'),_0x5b84a6[_0x67da('0x8')],_0x5b84a6['value']));channels[_0x5b84a6[_0x67da('0x8')]][_0x67da('0x43')]=_0x5b84a6['value'];}if(!_[_0x67da('0x21')](_0x5b84a6[_0x67da('0x44')][_0x67da('0x45')])){utils[_0x67da('0x1f')](util[_0x67da('0x9')](_0x67da('0x46'),_0x5b84a6[_0x67da('0x8')],_0x5b84a6[_0x67da('0x47')]));channels[_0x5b84a6[_0x67da('0x8')]]['destination']=_0x5b84a6[_0x67da('0x47')];channels[_0x5b84a6[_0x67da('0x8')]]['callerid']='\x22'+_0x5b84a6[_0x67da('0x47')]+_0x67da('0x48')+_0x5b84a6[_0x67da('0x47')]+'>';}if(!_[_0x67da('0x21')](_0x5b84a6[_0x67da('0x44')][_0x67da('0x49')])||!_[_0x67da('0x21')](_0x5b84a6['variable'][_0x67da('0x4a')])){utils[_0x67da('0x1f')](util[_0x67da('0x9')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x5b84a6[_0x67da('0x8')],!_[_0x67da('0x21')](_0x5b84a6[_0x67da('0x44')][_0x67da('0x49')])?_0x67da('0x49'):'xmd-callerid',_0x5b84a6[_0x67da('0x47')]));channels[_0x5b84a6[_0x67da('0x8')]][_0x67da('0x2a')]=_0x5b84a6[_0x67da('0x47')];}if(!_[_0x67da('0x21')](_0x5b84a6[_0x67da('0x44')]['xmd-queue'])||!_['isNil'](_0x5b84a6['variable']['xmcs-queue'])){utils[_0x67da('0x1f')](util[_0x67da('0x9')](_0x67da('0x4b'),_0x5b84a6['uniqueid'],!_[_0x67da('0x21')](_0x5b84a6['variable'][_0x67da('0x4c')])?_0x67da('0x4c'):_0x67da('0x4d'),_0x5b84a6['value']));channels[_0x5b84a6[_0x67da('0x8')]][_0x67da('0x4e')]=_0x67da('0x4f');channels[_0x5b84a6[_0x67da('0x8')]][_0x67da('0x50')]=_0x5b84a6[_0x67da('0x47')];channels[_0x5b84a6[_0x67da('0x8')]][_0x67da('0x51')]=!![];}if(!_[_0x67da('0x21')](_0x5b84a6[_0x67da('0x44')][_0x67da('0x52')])){utils[_0x67da('0x1f')](util[_0x67da('0x9')](_0x67da('0x53'),_0x5b84a6['uniqueid'],_0x5b84a6[_0x67da('0x47')]));channels[_0x5b84a6[_0x67da('0x8')]][_0x67da('0x54')]=_0x5b84a6[_0x67da('0x47')];}if(!_[_0x67da('0x21')](_0x5b84a6[_0x67da('0x44')][_0x67da('0x55')])){utils[_0x67da('0x1f')](util['format'](_0x67da('0x56'),_0x5b84a6[_0x67da('0x8')],_0x5b84a6['value']));channels[_0x5b84a6['uniqueid']][_0x67da('0x57')]=_0x5b84a6[_0x67da('0x47')];}if(!_[_0x67da('0x21')](_0x5b84a6['variable'][_0x67da('0x58')])){utils['info'](util[_0x67da('0x9')](_0x67da('0x59'),_0x5b84a6['uniqueid'],_0x5b84a6[_0x67da('0x47')]));channels[_0x5b84a6[_0x67da('0x8')]][_0x67da('0x5a')]=_0x5b84a6[_0x67da('0x47')];}if(!_[_0x67da('0x21')](_0x5b84a6[_0x67da('0x44')]['sipcallid'])){utils[_0x67da('0x1f')](util[_0x67da('0x9')]('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x5b84a6[_0x67da('0x8')],_0x5b84a6[_0x67da('0x47')]));channels[_0x5b84a6[_0x67da('0x8')]][_0x67da('0x5b')]=_0x5b84a6['value'];}}}catch(_0x180d1f){utils[_0x67da('0x1c')](util[_0x67da('0x9')](_0x67da('0x5c'),_0x5b84a6[_0x67da('0x8')]),_0x180d1f);}};exports[_0x67da('0x5d')]=function(_0x5bd21b){try{if(!_['isNil'](channels[_0x5bd21b[_0x67da('0x8')]])){utils[_0x67da('0x15')](util[_0x67da('0x9')]('[%s][calls][newexten]',_0x5bd21b[_0x67da('0x8')]),_0x5bd21b);utils['info'](util[_0x67da('0x9')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x5bd21b[_0x67da('0x8')],_0x5bd21b[_0x67da('0x5e')],_0x5bd21b[_0x67da('0x5f')]));if(_0x5bd21b[_0x67da('0x5e')][_0x67da('0x60')]()==_0x67da('0x61')&&_[_0x67da('0x62')](_0x5bd21b[_0x67da('0x5f')][_0x67da('0x60')](),_0x67da('0x63'))){var _0x1aa20c=_0x5bd21b[_0x67da('0x5f')][_0x67da('0x64')]('=');var _0xcdfbbe=_0x1aa20c[0x0][_0x67da('0x65')](_0x1aa20c[0x0][_0x67da('0x66')]('(')+0x1,_0x1aa20c[0x0][_0x67da('0x66')](')'));var _0x9030d3=_0x1aa20c[0x1];channels[_0x5bd21b[_0x67da('0x8')]][_0xcdfbbe]=_0x9030d3;}if(!_[_0x67da('0x67')](['hangup','noop',_0x67da('0x68'),_0x67da('0x61'),_0x67da('0x69')],_0x5bd21b[_0x67da('0x5e')][_0x67da('0x60')]())){channels[_0x5bd21b[_0x67da('0x8')]][_0x67da('0x4e')]=_0x5bd21b['application'];channels[_0x5bd21b['uniqueid']][_0x67da('0x50')]=_0x5bd21b[_0x67da('0x5f')];}}}catch(_0x43f45d){utils[_0x67da('0x1c')](util[_0x67da('0x9')]('[%s][calls][newexten]',_0x5bd21b[_0x67da('0x8')]),_0x43f45d);}};
\ No newline at end of file
index 698de23..6207475 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cbb=['managerevent','./utils','connect','info','[core]\x20connected','[core]\x20shutdown','[core]\x20fullybooted','error','[core]\x20error','close'];(function(_0x34915c,_0x438532){var _0x917265=function(_0x272db7){while(--_0x272db7){_0x34915c['push'](_0x34915c['shift']());}};_0x917265(++_0x438532);}(_0x1cbb,0x105));var _0xb1cb=function(_0x2b3544,_0x203dfa){_0x2b3544=_0x2b3544-0x0;var _0x58e445=_0x1cbb[_0x2b3544];return _0x58e445;};'use strict';var utils=require(_0xb1cb('0x0'));exports[_0xb1cb('0x1')]=function(){utils[_0xb1cb('0x2')](_0xb1cb('0x3'));};exports['shutdown']=function(){utils[_0xb1cb('0x2')](_0xb1cb('0x4'));};exports['fullybooted']=function(){utils['info'](_0xb1cb('0x5'));};exports[_0xb1cb('0x6')]=function(_0x3dbec2){utils[_0xb1cb('0x6')](_0xb1cb('0x7'),_0x3dbec2);};exports[_0xb1cb('0x8')]=function(){utils['info']('[core]\x20close');};exports[_0xb1cb('0x9')]=function(_0x1043dc){};
\ No newline at end of file
+var _0xf27f=['[core]\x20close','managerevent','./utils','connect','info','shutdown','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error','[core]\x20error'];(function(_0x8e9e02,_0x4ae17d){var _0x8a84b9=function(_0x25a677){while(--_0x25a677){_0x8e9e02['push'](_0x8e9e02['shift']());}};_0x8a84b9(++_0x4ae17d);}(_0xf27f,0xf4));var _0xff27=function(_0x32e3fe,_0x2fd6c3){_0x32e3fe=_0x32e3fe-0x0;var _0x5e96bc=_0xf27f[_0x32e3fe];return _0x5e96bc;};'use strict';var utils=require(_0xff27('0x0'));exports[_0xff27('0x1')]=function(){utils[_0xff27('0x2')]('[core]\x20connected');};exports[_0xff27('0x3')]=function(){utils[_0xff27('0x2')](_0xff27('0x4'));};exports[_0xff27('0x5')]=function(){utils['info'](_0xff27('0x6'));};exports[_0xff27('0x7')]=function(_0x5a9dac){utils[_0xff27('0x7')](_0xff27('0x8'),_0x5a9dac);};exports['close']=function(){utils['info'](_0xff27('0x9'));};exports[_0xff27('0xa')]=function(_0x5a817f){};
\ No newline at end of file
index 9174a52..fac79b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9c4=['connect','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][hangup]','calleridnum','cause-txt','complete','duration','diffTime','endtime','holdtime','billableseconds','lodash','util','./utils','info','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','dialstring','connectedlinenum','dialstatus','debug','format','application','set','startsWith','toLowerCase','appdata','error','[%s][dials][newexten]','varset','[%s][dials][varset]','isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','[%s][dials][dialbegin]','assign','starttime','now','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','ANSWER','answertime','lastevent'];(function(_0xbf07b8,_0x4fc2c6){var _0x17aef8=function(_0x443a16){while(--_0x443a16){_0xbf07b8['push'](_0xbf07b8['shift']());}};_0x17aef8(++_0x4fc2c6);}(_0xb9c4,0xfb));var _0x4b9c=function(_0x4b7895,_0x3c4f5d){_0x4b7895=_0x4b7895-0x0;var _0x264180=_0xb9c4[_0x4b7895];return _0x264180;};'use strict';var _=require(_0x4b9c('0x0'));var util=require(_0x4b9c('0x1'));var utils=require(_0x4b9c('0x2'));var dials={};function writeDB(_0x274689){utils[_0x4b9c('0x3')](util['format'](_0x4b9c('0x4'),_0x274689[_0x4b9c('0x5')],_0x274689['channel'],_0x274689[_0x4b9c('0x6')],_0x274689['calleridnum'],_0x274689[_0x4b9c('0x7')],_0x274689[_0x4b9c('0x8')]));utils['request']('CreateVoiceDialReport',_0x274689);delete dials[_0x274689[_0x4b9c('0x5')]];}exports['newexten']=function(_0x2a00ef){try{utils[_0x4b9c('0x9')](util[_0x4b9c('0xa')]('[%s][dials][newexten]',_0x2a00ef[_0x4b9c('0x5')]),_0x2a00ef);utils[_0x4b9c('0x3')](util['format']('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0x2a00ef['uniqueid'],_0x2a00ef[_0x4b9c('0xb')],_0x2a00ef['appdata']));if(_0x2a00ef[_0x4b9c('0xb')]['toLowerCase']()==_0x4b9c('0xc')&&_[_0x4b9c('0xd')](_0x2a00ef['appdata'][_0x4b9c('0xe')](),'cdr(routeid)')){var _0x2efc45=_0x2a00ef[_0x4b9c('0xf')]['split']('=');dials[_0x2a00ef[_0x4b9c('0x5')]]={'routeId':_0x2efc45[0x1]};}}catch(_0x40d322){utils[_0x4b9c('0x10')](util[_0x4b9c('0xa')](_0x4b9c('0x11'),_0x2a00ef[_0x4b9c('0x5')]),_0x40d322);}};exports[_0x4b9c('0x12')]=function(_0x113d3f){try{utils['debug'](util[_0x4b9c('0xa')](_0x4b9c('0x13'),_0x113d3f[_0x4b9c('0x5')]),_0x113d3f);if(!_[_0x4b9c('0x14')](_0x113d3f[_0x4b9c('0x15')][_0x4b9c('0x16')])){utils[_0x4b9c('0x3')](util[_0x4b9c('0xa')](_0x4b9c('0x17'),_0x113d3f[_0x4b9c('0x5')],_0x113d3f[_0x4b9c('0x18')]));dials[_0x113d3f['uniqueid']]={'routeId':_0x113d3f['value']};}}catch(_0x52ccc4){utils['error'](util[_0x4b9c('0xa')](_0x4b9c('0x13'),_0x113d3f[_0x4b9c('0x5')]),_0x52ccc4);}};exports[_0x4b9c('0x19')]=function(_0x1e8b62){try{if(!_[_0x4b9c('0x14')](dials[_0x1e8b62[_0x4b9c('0x5')]])){utils[_0x4b9c('0x9')](util[_0x4b9c('0xa')](_0x4b9c('0x1a'),_0x1e8b62['uniqueid']),_0x1e8b62);dials[_0x1e8b62[_0x4b9c('0x5')]]=_[_0x4b9c('0x1b')](dials[_0x1e8b62['uniqueid']],_0x1e8b62);dials[_0x1e8b62[_0x4b9c('0x5')]][_0x4b9c('0x1c')]=utils[_0x4b9c('0x1d')]();dials[_0x1e8b62['uniqueid']]['lastevent']=_0x4b9c('0x1e');utils[_0x4b9c('0x3')](util[_0x4b9c('0xa')](_0x4b9c('0x1f'),_0x1e8b62['uniqueid'],dials[_0x1e8b62['uniqueid']][_0x4b9c('0x1c')]));}}catch(_0xa5b93e){utils[_0x4b9c('0x10')](util[_0x4b9c('0xa')](_0x4b9c('0x1a'),_0x1e8b62['uniqueid']),_0xa5b93e);}};exports[_0x4b9c('0x20')]=function(_0x47e727){try{if(!_[_0x4b9c('0x14')](dials[_0x47e727[_0x4b9c('0x5')]])){utils['debug'](util['format'](_0x4b9c('0x21'),_0x47e727[_0x4b9c('0x5')]),_0x47e727);dials[_0x47e727[_0x4b9c('0x5')]][_0x4b9c('0x8')]=_0x47e727['dialstatus'];if(_0x47e727[_0x4b9c('0x8')]==_0x4b9c('0x22')){dials[_0x47e727['uniqueid']]=_[_0x4b9c('0x1b')](dials[_0x47e727[_0x4b9c('0x5')]],_0x47e727);dials[_0x47e727['uniqueid']][_0x4b9c('0x23')]=utils['now']();dials[_0x47e727[_0x4b9c('0x5')]][_0x4b9c('0x24')]=_0x4b9c('0x25');utils[_0x4b9c('0x3')](util[_0x4b9c('0xa')]('[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect',_0x47e727[_0x4b9c('0x5')],_0x47e727['dialstatus'],dials[_0x47e727[_0x4b9c('0x5')]]['answertime']));}else{utils[_0x4b9c('0x3')](util[_0x4b9c('0xa')](_0x4b9c('0x26'),_0x47e727[_0x4b9c('0x5')],_0x47e727['dialstatus']));}}}catch(_0x5ce23e){utils[_0x4b9c('0x10')](util[_0x4b9c('0xa')]('[%s][dials][dialend]',_0x47e727[_0x4b9c('0x5')]),_0x5ce23e);}};exports['hangup']=function(_0x31c512){try{if(!_[_0x4b9c('0x14')](dials[_0x31c512[_0x4b9c('0x5')]])){utils[_0x4b9c('0x9')](util['format'](_0x4b9c('0x27'),_0x31c512[_0x4b9c('0x5')]),_0x31c512);utils[_0x4b9c('0x3')](util[_0x4b9c('0xa')]('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x31c512[_0x4b9c('0x5')],_0x31c512[_0x4b9c('0x28')],_0x31c512['calleridname'],_0x31c512[_0x4b9c('0x29')]));dials[_0x31c512['uniqueid']]=_[_0x4b9c('0x1b')](dials[_0x31c512[_0x4b9c('0x5')]],{'endtime':utils[_0x4b9c('0x1d')](),'lastevent':_0x4b9c('0x2a')});dials[_0x31c512[_0x4b9c('0x5')]][_0x4b9c('0x2b')]=utils[_0x4b9c('0x2c')](dials[_0x31c512[_0x4b9c('0x5')]][_0x4b9c('0x2d')],dials[_0x31c512[_0x4b9c('0x5')]][_0x4b9c('0x1c')]);dials[_0x31c512['uniqueid']][_0x4b9c('0x2e')]=utils[_0x4b9c('0x2c')](dials[_0x31c512['uniqueid']]['answertime']||dials[_0x31c512[_0x4b9c('0x5')]][_0x4b9c('0x2d')],dials[_0x31c512['uniqueid']][_0x4b9c('0x1c')]);dials[_0x31c512[_0x4b9c('0x5')]][_0x4b9c('0x2f')]=dials[_0x31c512[_0x4b9c('0x5')]][_0x4b9c('0x23')]?utils[_0x4b9c('0x2c')](dials[_0x31c512['uniqueid']][_0x4b9c('0x2d')],dials[_0x31c512['uniqueid']][_0x4b9c('0x23')]):0x0;writeDB(dials[_0x31c512[_0x4b9c('0x5')]]);}}catch(_0x5df602){utils[_0x4b9c('0x10')](util[_0x4b9c('0xa')](_0x4b9c('0x27'),_0x31c512[_0x4b9c('0x5')]),_0x5df602);}};
\ No newline at end of file
+var _0x0635=['isNil','[%s][dials][dialbegin]','assign','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','starttime','dialend','dialstatus','connect','answertime','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][dialend]','hangup','[%s][dials][hangup]','calleridnum','calleridname','complete','diffTime','endtime','billableseconds','lodash','util','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','request','CreateVoiceDialReport','newexten','debug','format','[%s][dials][newexten]','info','application','appdata','toLowerCase','set','startsWith','cdr(routeid)','split','error','varset','[%s][dials][varset]','outboundrouteid','value','dialbegin'];(function(_0x105702,_0x3d4a6c){var _0x10ff6b=function(_0x26ddf0){while(--_0x26ddf0){_0x105702['push'](_0x105702['shift']());}};_0x10ff6b(++_0x3d4a6c);}(_0x0635,0xa3));var _0x5063=function(_0x1f0115,_0x57f21d){_0x1f0115=_0x1f0115-0x0;var _0x30847e=_0x0635[_0x1f0115];return _0x30847e;};'use strict';var _=require(_0x5063('0x0'));var util=require(_0x5063('0x1'));var utils=require('./utils');var dials={};function writeDB(_0x874020){utils['info'](util['format'](_0x5063('0x2'),_0x874020[_0x5063('0x3')],_0x874020[_0x5063('0x4')],_0x874020['dialstring'],_0x874020['calleridnum'],_0x874020['connectedlinenum'],_0x874020['dialstatus']));utils[_0x5063('0x5')](_0x5063('0x6'),_0x874020);delete dials[_0x874020[_0x5063('0x3')]];}exports[_0x5063('0x7')]=function(_0x276fdc){try{utils[_0x5063('0x8')](util[_0x5063('0x9')](_0x5063('0xa'),_0x276fdc[_0x5063('0x3')]),_0x276fdc);utils[_0x5063('0xb')](util['format']('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0x276fdc[_0x5063('0x3')],_0x276fdc[_0x5063('0xc')],_0x276fdc[_0x5063('0xd')]));if(_0x276fdc[_0x5063('0xc')][_0x5063('0xe')]()==_0x5063('0xf')&&_[_0x5063('0x10')](_0x276fdc[_0x5063('0xd')][_0x5063('0xe')](),_0x5063('0x11'))){var _0x9eded8=_0x276fdc[_0x5063('0xd')][_0x5063('0x12')]('=');dials[_0x276fdc[_0x5063('0x3')]]={'routeId':_0x9eded8[0x1]};}}catch(_0x46b239){utils[_0x5063('0x13')](util[_0x5063('0x9')](_0x5063('0xa'),_0x276fdc[_0x5063('0x3')]),_0x46b239);}};exports[_0x5063('0x14')]=function(_0x173365){try{utils['debug'](util[_0x5063('0x9')](_0x5063('0x15'),_0x173365[_0x5063('0x3')]),_0x173365);if(!_['isNil'](_0x173365['variable'][_0x5063('0x16')])){utils[_0x5063('0xb')](util[_0x5063('0x9')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x173365[_0x5063('0x3')],_0x173365[_0x5063('0x17')]));dials[_0x173365[_0x5063('0x3')]]={'routeId':_0x173365[_0x5063('0x17')]};}}catch(_0x485126){utils['error'](util[_0x5063('0x9')](_0x5063('0x15'),_0x173365[_0x5063('0x3')]),_0x485126);}};exports[_0x5063('0x18')]=function(_0x1656e0){try{if(!_[_0x5063('0x19')](dials[_0x1656e0['uniqueid']])){utils['debug'](util[_0x5063('0x9')](_0x5063('0x1a'),_0x1656e0[_0x5063('0x3')]),_0x1656e0);dials[_0x1656e0[_0x5063('0x3')]]=_[_0x5063('0x1b')](dials[_0x1656e0[_0x5063('0x3')]],_0x1656e0);dials[_0x1656e0[_0x5063('0x3')]]['starttime']=utils[_0x5063('0x1c')]();dials[_0x1656e0[_0x5063('0x3')]][_0x5063('0x1d')]=_0x5063('0x1e');utils[_0x5063('0xb')](util[_0x5063('0x9')](_0x5063('0x1f'),_0x1656e0[_0x5063('0x3')],dials[_0x1656e0[_0x5063('0x3')]][_0x5063('0x20')]));}}catch(_0x225cab){utils[_0x5063('0x13')](util[_0x5063('0x9')](_0x5063('0x1a'),_0x1656e0['uniqueid']),_0x225cab);}};exports[_0x5063('0x21')]=function(_0x159828){try{if(!_[_0x5063('0x19')](dials[_0x159828[_0x5063('0x3')]])){utils['debug'](util[_0x5063('0x9')]('[%s][dials][dialend]',_0x159828[_0x5063('0x3')]),_0x159828);dials[_0x159828[_0x5063('0x3')]]['dialstatus']=_0x159828[_0x5063('0x22')];if(_0x159828[_0x5063('0x22')]=='ANSWER'){dials[_0x159828['uniqueid']]=_[_0x5063('0x1b')](dials[_0x159828[_0x5063('0x3')]],_0x159828);dials[_0x159828[_0x5063('0x3')]]['answertime']=utils[_0x5063('0x1c')]();dials[_0x159828['uniqueid']][_0x5063('0x1d')]=_0x5063('0x23');utils['info'](util[_0x5063('0x9')]('[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect',_0x159828['uniqueid'],_0x159828[_0x5063('0x22')],dials[_0x159828['uniqueid']][_0x5063('0x24')]));}else{utils[_0x5063('0xb')](util[_0x5063('0x9')](_0x5063('0x25'),_0x159828[_0x5063('0x3')],_0x159828[_0x5063('0x22')]));}}}catch(_0x793935){utils[_0x5063('0x13')](util[_0x5063('0x9')](_0x5063('0x26'),_0x159828['uniqueid']),_0x793935);}};exports[_0x5063('0x27')]=function(_0x58d28e){try{if(!_['isNil'](dials[_0x58d28e[_0x5063('0x3')]])){utils[_0x5063('0x8')](util['format'](_0x5063('0x28'),_0x58d28e[_0x5063('0x3')]),_0x58d28e);utils['info'](util[_0x5063('0x9')]('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x58d28e[_0x5063('0x3')],_0x58d28e[_0x5063('0x29')],_0x58d28e[_0x5063('0x2a')],_0x58d28e['cause-txt']));dials[_0x58d28e['uniqueid']]=_['assign'](dials[_0x58d28e[_0x5063('0x3')]],{'endtime':utils[_0x5063('0x1c')](),'lastevent':_0x5063('0x2b')});dials[_0x58d28e['uniqueid']]['duration']=utils[_0x5063('0x2c')](dials[_0x58d28e[_0x5063('0x3')]][_0x5063('0x2d')],dials[_0x58d28e[_0x5063('0x3')]][_0x5063('0x20')]);dials[_0x58d28e[_0x5063('0x3')]]['holdtime']=utils['diffTime'](dials[_0x58d28e[_0x5063('0x3')]][_0x5063('0x24')]||dials[_0x58d28e[_0x5063('0x3')]][_0x5063('0x2d')],dials[_0x58d28e[_0x5063('0x3')]][_0x5063('0x20')]);dials[_0x58d28e[_0x5063('0x3')]][_0x5063('0x2e')]=dials[_0x58d28e[_0x5063('0x3')]][_0x5063('0x24')]?utils[_0x5063('0x2c')](dials[_0x58d28e['uniqueid']][_0x5063('0x2d')],dials[_0x58d28e[_0x5063('0x3')]][_0x5063('0x24')]):0x0;writeDB(dials[_0x58d28e[_0x5063('0x3')]]);}}catch(_0x35b3d7){utils[_0x5063('0x13')](util[_0x5063('0x9')](_0x5063('0x28'),_0x58d28e['uniqueid']),_0x35b3d7);}};
\ No newline at end of file
index d3f117c..a29618a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc26=['./core.controller','connect','shutdown','fullybooted','error','close','managerevent','debug','format','[%s][index][devicestatechange]','device','agentcalled','uniqueid','[%s][index][agentcalled]','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','[%s][index][musiconholdstop]','musiconholdstop','[%s][index][newstate]','newstate','[%s][index][hangup]','hangup','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','origtransfereruniqueid','[%s][index][attendedtransfer]','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','[%s][index][dialbegin]','dialbegin','dialend','[%s][index][dialend]','../../config/environment','./utils','asterisk','port','username','keepConnected','xdr','disabled','info','./calls.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller'];(function(_0x3cb051,_0x3aac86){var _0x21dd99=function(_0x794b58){while(--_0x794b58){_0x3cb051['push'](_0x3cb051['shift']());}};_0x21dd99(++_0x3aac86);}(_0xdc26,0xb5));var _0x6dc2=function(_0x55a89e,_0x1a05ab){_0x55a89e=_0x55a89e-0x0;var _0x3aa2bd=_0xdc26[_0x55a89e];return _0x3aa2bd;};var AsteriskManager=require('asterisk-manager');var config=require(_0x6dc2('0x0'));var utils=require(_0x6dc2('0x1'));var util=require('util');var ami=new AsteriskManager(config[_0x6dc2('0x2')][_0x6dc2('0x3')],config[_0x6dc2('0x2')]['ip'],config[_0x6dc2('0x2')][_0x6dc2('0x4')],config[_0x6dc2('0x2')]['password'],!![]);ami[_0x6dc2('0x5')]();if(config[_0x6dc2('0x6')]&&config[_0x6dc2('0x6')][_0x6dc2('0x7')]){utils[_0x6dc2('0x8')]('XDR\x20DISABLED');}else{var agents=require('./agents.controller');var calls=require(_0x6dc2('0x9'));var queues=require('./queues.controller');var recordings=require(_0x6dc2('0xa'));var members=require(_0x6dc2('0xb'));var dials=require(_0x6dc2('0xc'));var transfers=require(_0x6dc2('0xd'));var core=require(_0x6dc2('0xe'));ami['on']('connect',core[_0x6dc2('0xf')]);ami['on'](_0x6dc2('0x10'),core[_0x6dc2('0x10')]);ami['on'](_0x6dc2('0x11'),core[_0x6dc2('0x11')]);ami['on']('error',core[_0x6dc2('0x12')]);ami['on'](_0x6dc2('0x13'),core[_0x6dc2('0x13')]);ami['on']('managerevent',core[_0x6dc2('0x14')]);ami['on']('devicestatechange',function(_0x4d7cd6){try{utils[_0x6dc2('0x15')](util[_0x6dc2('0x16')](_0x6dc2('0x17'),_0x4d7cd6[_0x6dc2('0x18')]),_0x4d7cd6);members['devicestatechange'](_0x4d7cd6);}catch(_0x5e39f9){utils[_0x6dc2('0x12')](util[_0x6dc2('0x16')](_0x6dc2('0x17'),_0x4d7cd6[_0x6dc2('0x18')]),_0x5e39f9);}});ami['on'](_0x6dc2('0x19'),function(_0x28d847){try{utils[_0x6dc2('0x15')](util[_0x6dc2('0x16')]('[%s][index][agentcalled]',_0x28d847[_0x6dc2('0x1a')]),_0x28d847);agents['agentcalled'](_0x28d847);}catch(_0x59b409){utils['error'](util[_0x6dc2('0x16')](_0x6dc2('0x1b'),_0x28d847['uniqueid']),_0x59b409);}});ami['on'](_0x6dc2('0x1c'),function(_0x2cd763){try{utils[_0x6dc2('0x15')](util[_0x6dc2('0x16')](_0x6dc2('0x1d'),_0x2cd763[_0x6dc2('0x1a')]),_0x2cd763);agents[_0x6dc2('0x1c')](_0x2cd763);}catch(_0x4b9235){utils['error'](util['format'](_0x6dc2('0x1d'),_0x2cd763[_0x6dc2('0x1a')]),_0x4b9235);}});ami['on'](_0x6dc2('0x1e'),function(_0x5dddb0){try{utils[_0x6dc2('0x15')](util['format'](_0x6dc2('0x1f'),_0x5dddb0[_0x6dc2('0x1a')]),_0x5dddb0);agents['agentconnect'](_0x5dddb0);queues[_0x6dc2('0x1e')](_0x5dddb0);}catch(_0x55eb2e){utils[_0x6dc2('0x12')](util[_0x6dc2('0x16')]('[%s][index][agentconnect]',_0x5dddb0[_0x6dc2('0x1a')]),_0x55eb2e);}});ami['on'](_0x6dc2('0x20'),function(_0x9253){try{utils[_0x6dc2('0x15')](util[_0x6dc2('0x16')](_0x6dc2('0x21'),_0x9253[_0x6dc2('0x1a')]),_0x9253);agents[_0x6dc2('0x20')](_0x9253);queues[_0x6dc2('0x20')](_0x9253);members[_0x6dc2('0x20')](_0x9253);}catch(_0x17ab01){utils[_0x6dc2('0x12')](util['format'](_0x6dc2('0x21'),_0x9253[_0x6dc2('0x1a')]),_0x17ab01);}});ami['on'](_0x6dc2('0x22'),function(_0x1f79d){try{utils['debug'](util[_0x6dc2('0x16')]('[%s][index][queuecallerabandon]',_0x1f79d[_0x6dc2('0x1a')]),_0x1f79d);agents[_0x6dc2('0x22')](_0x1f79d);queues[_0x6dc2('0x22')](_0x1f79d);}catch(_0x1a3050){utils[_0x6dc2('0x12')](util[_0x6dc2('0x16')](_0x6dc2('0x23'),_0x1f79d[_0x6dc2('0x1a')]),_0x1a3050);}});ami['on'](_0x6dc2('0x24'),function(_0x365681){try{utils[_0x6dc2('0x15')](util[_0x6dc2('0x16')](_0x6dc2('0x25'),_0x365681[_0x6dc2('0x1a')]),_0x365681);queues[_0x6dc2('0x24')](_0x365681);recordings[_0x6dc2('0x24')](_0x365681);}catch(_0x2514fa){utils['error'](util[_0x6dc2('0x16')](_0x6dc2('0x25'),_0x365681[_0x6dc2('0x1a')]),_0x2514fa);}});ami['on'](_0x6dc2('0x26'),function(_0x299ef4){try{utils[_0x6dc2('0x15')](util[_0x6dc2('0x16')](_0x6dc2('0x27'),_0x299ef4[_0x6dc2('0x1a')]),_0x299ef4);queues[_0x6dc2('0x26')](_0x299ef4);}catch(_0x1e609f){utils[_0x6dc2('0x12')](util[_0x6dc2('0x16')](_0x6dc2('0x27'),_0x299ef4[_0x6dc2('0x1a')]),_0x1e609f);}});ami['on'](_0x6dc2('0x28'),function(_0x207094){try{utils[_0x6dc2('0x15')](util[_0x6dc2('0x16')](_0x6dc2('0x29'),_0x207094[_0x6dc2('0x1a')]),_0x207094);queues[_0x6dc2('0x28')](_0x207094);calls[_0x6dc2('0x28')](_0x207094);}catch(_0xe4873c){utils['error'](util[_0x6dc2('0x16')](_0x6dc2('0x29'),_0x207094[_0x6dc2('0x1a')]),_0xe4873c);}});ami['on']('musiconholdstop',function(_0x3fad91){try{utils[_0x6dc2('0x15')](util[_0x6dc2('0x16')](_0x6dc2('0x2a'),_0x3fad91[_0x6dc2('0x1a')]),_0x3fad91);queues[_0x6dc2('0x2b')](_0x3fad91);calls['musiconholdstop'](_0x3fad91);}catch(_0x3dec54){utils['error'](util[_0x6dc2('0x16')](_0x6dc2('0x2a'),_0x3fad91['uniqueid']),_0x3dec54);}});ami['on']('newstate',function(_0x163197){try{utils[_0x6dc2('0x15')](util[_0x6dc2('0x16')](_0x6dc2('0x2c'),_0x163197[_0x6dc2('0x1a')]),_0x163197);calls[_0x6dc2('0x2d')](_0x163197);recordings[_0x6dc2('0x2d')](_0x163197);}catch(_0x52ec23){utils[_0x6dc2('0x12')](util[_0x6dc2('0x16')](_0x6dc2('0x2c'),_0x163197['uniqueid']),_0x52ec23);}});ami['on']('hangup',function(_0x4a0b5e){try{utils[_0x6dc2('0x15')](util['format'](_0x6dc2('0x2e'),_0x4a0b5e[_0x6dc2('0x1a')]),_0x4a0b5e);calls['hangup'](_0x4a0b5e);recordings[_0x6dc2('0x2f')](_0x4a0b5e);dials[_0x6dc2('0x2f')](_0x4a0b5e);agents[_0x6dc2('0x2f')](_0x4a0b5e);queues[_0x6dc2('0x2f')](_0x4a0b5e);}catch(_0x4c17b9){utils[_0x6dc2('0x12')](util['format']('[%s][index][hangup]',_0x4a0b5e[_0x6dc2('0x1a')]),_0x4c17b9);}});ami['on'](_0x6dc2('0x30'),function(_0x44ac34){try{utils[_0x6dc2('0x15')](util[_0x6dc2('0x16')]('[%s][index][cdr]',_0x44ac34[_0x6dc2('0x1a')]),_0x44ac34);members['cdr'](_0x44ac34);}catch(_0x996bd2){utils[_0x6dc2('0x12')](util['format'](_0x6dc2('0x31'),_0x44ac34[_0x6dc2('0x1a')]),_0x996bd2);}});ami['on'](_0x6dc2('0x32'),function(_0x24b762){try{utils[_0x6dc2('0x15')](util['format'](_0x6dc2('0x33'),_0x24b762[_0x6dc2('0x1a')]),_0x24b762);queues[_0x6dc2('0x32')](_0x24b762);agents['blindtransfer'](_0x24b762);transfers['blindtransfer'](_0x24b762);}catch(_0x36d223){utils[_0x6dc2('0x12')](util[_0x6dc2('0x16')]('[%s][index][blindtransfer]',_0x24b762[_0x6dc2('0x1a')]),_0x36d223);}});ami['on'](_0x6dc2('0x34'),function(_0x18f300){try{utils[_0x6dc2('0x15')](util[_0x6dc2('0x16')]('[%s][index][attendedtransfer]',_0x18f300[_0x6dc2('0x35')]),_0x18f300);queues['attendedtransfer'](_0x18f300);transfers[_0x6dc2('0x34')](_0x18f300);agents[_0x6dc2('0x34')](_0x18f300);calls[_0x6dc2('0x34')](_0x18f300);}catch(_0x7ef9da){utils['error'](util[_0x6dc2('0x16')](_0x6dc2('0x36'),_0x18f300['origtransfereruniqueid']),_0x7ef9da);}});ami['on'](_0x6dc2('0x37'),function(_0x2a684b){try{utils[_0x6dc2('0x15')](util['format'](_0x6dc2('0x38'),_0x2a684b[_0x6dc2('0x1a')]),_0x2a684b);queues['varset'](_0x2a684b);recordings[_0x6dc2('0x37')](_0x2a684b);calls[_0x6dc2('0x37')](_0x2a684b);dials[_0x6dc2('0x37')](_0x2a684b);}catch(_0x144628){utils[_0x6dc2('0x12')](util[_0x6dc2('0x16')](_0x6dc2('0x38'),_0x2a684b[_0x6dc2('0x1a')]),_0x144628);}});ami['on'](_0x6dc2('0x39'),function(_0x2043c5){try{utils[_0x6dc2('0x15')](util[_0x6dc2('0x16')](_0x6dc2('0x3a'),_0x2043c5[_0x6dc2('0x1a')]),_0x2043c5);calls['newexten'](_0x2043c5);recordings['newexten'](_0x2043c5);dials['newexten'](_0x2043c5);}catch(_0x251e15){utils['error'](util[_0x6dc2('0x16')](_0x6dc2('0x3a'),_0x2043c5['uniqueid']),_0x251e15);}});ami['on'](_0x6dc2('0x3b'),function(_0x4bdb45){try{utils[_0x6dc2('0x15')](util[_0x6dc2('0x16')]('[%s][index][newchannel]',_0x4bdb45['uniqueid']),_0x4bdb45);calls['newchannel'](_0x4bdb45);recordings[_0x6dc2('0x3b')](_0x4bdb45);}catch(_0x19e2df){utils[_0x6dc2('0x12')](util[_0x6dc2('0x16')](_0x6dc2('0x3c'),_0x4bdb45[_0x6dc2('0x1a')]),_0x19e2df);}});ami['on']('dialbegin',function(_0x3954c4){try{utils[_0x6dc2('0x15')](util[_0x6dc2('0x16')](_0x6dc2('0x3d'),_0x3954c4['uniqueid']),_0x3954c4);dials[_0x6dc2('0x3e')](_0x3954c4);}catch(_0x77e4f9){utils[_0x6dc2('0x12')](util['format']('[%s]dialbegin',_0x3954c4[_0x6dc2('0x1a')]),_0x77e4f9);}});ami['on'](_0x6dc2('0x3f'),function(_0x5bef8e){try{utils[_0x6dc2('0x15')](util[_0x6dc2('0x16')](_0x6dc2('0x40'),_0x5bef8e['uniqueid']),_0x5bef8e);dials[_0x6dc2('0x3f')](_0x5bef8e);}catch(_0x5a20d8){utils[_0x6dc2('0x12')](util['format'](_0x6dc2('0x40'),_0x5bef8e[_0x6dc2('0x1a')]),_0x5a20d8);}});}
\ No newline at end of file
+var _0xa30c=['[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','asterisk','port','password','keepConnected','xdr','disabled','XDR\x20DISABLED','./agents.controller','./queues.controller','./recordings.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','device','format','[%s][index][devicestatechange]','[%s][index][agentcalled]','uniqueid','agentcalled','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','[%s][index][queuecallerjoin]','queuecallerjoin','queuecallerleave','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','[%s][index][hangup]','hangup','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','origtransfereruniqueid','[%s][index][attendedtransfer]','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]'];(function(_0x3a7793,_0x4d04d9){var _0x1ab3b7=function(_0x2045e0){while(--_0x2045e0){_0x3a7793['push'](_0x3a7793['shift']());}};_0x1ab3b7(++_0x4d04d9);}(_0xa30c,0x189));var _0xca30=function(_0x1c8a40,_0x32bb69){_0x1c8a40=_0x1c8a40-0x0;var _0x4122c4=_0xa30c[_0x1c8a40];return _0x4122c4;};var AsteriskManager=require(_0xca30('0x0'));var config=require(_0xca30('0x1'));var utils=require(_0xca30('0x2'));var util=require(_0xca30('0x3'));var ami=new AsteriskManager(config[_0xca30('0x4')][_0xca30('0x5')],config['asterisk']['ip'],config[_0xca30('0x4')]['username'],config[_0xca30('0x4')][_0xca30('0x6')],!![]);ami[_0xca30('0x7')]();if(config[_0xca30('0x8')]&&config[_0xca30('0x8')][_0xca30('0x9')]){utils['info'](_0xca30('0xa'));}else{var agents=require(_0xca30('0xb'));var calls=require('./calls.controller');var queues=require(_0xca30('0xc'));var recordings=require(_0xca30('0xd'));var members=require('./members.controller');var dials=require(_0xca30('0xe'));var transfers=require(_0xca30('0xf'));var core=require(_0xca30('0x10'));ami['on'](_0xca30('0x11'),core[_0xca30('0x11')]);ami['on'](_0xca30('0x12'),core[_0xca30('0x12')]);ami['on'](_0xca30('0x13'),core[_0xca30('0x13')]);ami['on'](_0xca30('0x14'),core[_0xca30('0x14')]);ami['on']('close',core[_0xca30('0x15')]);ami['on'](_0xca30('0x16'),core[_0xca30('0x16')]);ami['on'](_0xca30('0x17'),function(_0x572e55){try{utils[_0xca30('0x18')](util['format']('[%s][index][devicestatechange]',_0x572e55[_0xca30('0x19')]),_0x572e55);members['devicestatechange'](_0x572e55);}catch(_0x4aa466){utils[_0xca30('0x14')](util[_0xca30('0x1a')](_0xca30('0x1b'),_0x572e55[_0xca30('0x19')]),_0x4aa466);}});ami['on']('agentcalled',function(_0x5eea98){try{utils[_0xca30('0x18')](util[_0xca30('0x1a')](_0xca30('0x1c'),_0x5eea98[_0xca30('0x1d')]),_0x5eea98);agents[_0xca30('0x1e')](_0x5eea98);}catch(_0x3064fd){utils[_0xca30('0x14')](util[_0xca30('0x1a')](_0xca30('0x1c'),_0x5eea98[_0xca30('0x1d')]),_0x3064fd);}});ami['on'](_0xca30('0x1f'),function(_0x1b0df0){try{utils['debug'](util['format']('[%s][index][agentringnoanswer]',_0x1b0df0['uniqueid']),_0x1b0df0);agents[_0xca30('0x1f')](_0x1b0df0);}catch(_0x5d61f6){utils[_0xca30('0x14')](util[_0xca30('0x1a')](_0xca30('0x20'),_0x1b0df0['uniqueid']),_0x5d61f6);}});ami['on'](_0xca30('0x21'),function(_0x32813d){try{utils[_0xca30('0x18')](util[_0xca30('0x1a')](_0xca30('0x22'),_0x32813d[_0xca30('0x1d')]),_0x32813d);agents['agentconnect'](_0x32813d);queues[_0xca30('0x21')](_0x32813d);}catch(_0x134bbd){utils[_0xca30('0x14')](util[_0xca30('0x1a')](_0xca30('0x22'),_0x32813d[_0xca30('0x1d')]),_0x134bbd);}});ami['on'](_0xca30('0x23'),function(_0x32dfdd){try{utils[_0xca30('0x18')](util[_0xca30('0x1a')](_0xca30('0x24'),_0x32dfdd[_0xca30('0x1d')]),_0x32dfdd);agents[_0xca30('0x23')](_0x32dfdd);queues[_0xca30('0x23')](_0x32dfdd);members['agentcomplete'](_0x32dfdd);}catch(_0x1e79df){utils[_0xca30('0x14')](util[_0xca30('0x1a')](_0xca30('0x24'),_0x32dfdd[_0xca30('0x1d')]),_0x1e79df);}});ami['on'](_0xca30('0x25'),function(_0x5b1d4b){try{utils[_0xca30('0x18')](util['format']('[%s][index][queuecallerabandon]',_0x5b1d4b['uniqueid']),_0x5b1d4b);agents[_0xca30('0x25')](_0x5b1d4b);queues[_0xca30('0x25')](_0x5b1d4b);}catch(_0x10d93a){utils[_0xca30('0x14')](util['format'](_0xca30('0x26'),_0x5b1d4b['uniqueid']),_0x10d93a);}});ami['on']('queuecallerjoin',function(_0x4792ad){try{utils['debug'](util[_0xca30('0x1a')](_0xca30('0x27'),_0x4792ad[_0xca30('0x1d')]),_0x4792ad);queues[_0xca30('0x28')](_0x4792ad);recordings[_0xca30('0x28')](_0x4792ad);}catch(_0x70ddea){utils[_0xca30('0x14')](util[_0xca30('0x1a')](_0xca30('0x27'),_0x4792ad[_0xca30('0x1d')]),_0x70ddea);}});ami['on'](_0xca30('0x29'),function(_0x51974d){try{utils[_0xca30('0x18')](util[_0xca30('0x1a')]('[%s][index][queuecallerleave]',_0x51974d['uniqueid']),_0x51974d);queues['queuecallerleave'](_0x51974d);}catch(_0x26639e){utils[_0xca30('0x14')](util[_0xca30('0x1a')]('[%s][index][queuecallerleave]',_0x51974d[_0xca30('0x1d')]),_0x26639e);}});ami['on'](_0xca30('0x2a'),function(_0x538212){try{utils[_0xca30('0x18')](util[_0xca30('0x1a')](_0xca30('0x2b'),_0x538212[_0xca30('0x1d')]),_0x538212);queues[_0xca30('0x2a')](_0x538212);calls[_0xca30('0x2a')](_0x538212);}catch(_0x33d031){utils[_0xca30('0x14')](util[_0xca30('0x1a')](_0xca30('0x2b'),_0x538212[_0xca30('0x1d')]),_0x33d031);}});ami['on'](_0xca30('0x2c'),function(_0x484f78){try{utils[_0xca30('0x18')](util[_0xca30('0x1a')](_0xca30('0x2d'),_0x484f78['uniqueid']),_0x484f78);queues[_0xca30('0x2c')](_0x484f78);calls['musiconholdstop'](_0x484f78);}catch(_0x3485b2){utils[_0xca30('0x14')](util['format'](_0xca30('0x2d'),_0x484f78[_0xca30('0x1d')]),_0x3485b2);}});ami['on'](_0xca30('0x2e'),function(_0x1fa7ed){try{utils[_0xca30('0x18')](util['format']('[%s][index][newstate]',_0x1fa7ed[_0xca30('0x1d')]),_0x1fa7ed);calls[_0xca30('0x2e')](_0x1fa7ed);recordings[_0xca30('0x2e')](_0x1fa7ed);}catch(_0x2ad0d6){utils[_0xca30('0x14')](util['format'](_0xca30('0x2f'),_0x1fa7ed[_0xca30('0x1d')]),_0x2ad0d6);}});ami['on']('hangup',function(_0x280ce9){try{utils[_0xca30('0x18')](util[_0xca30('0x1a')](_0xca30('0x30'),_0x280ce9[_0xca30('0x1d')]),_0x280ce9);calls[_0xca30('0x31')](_0x280ce9);recordings['hangup'](_0x280ce9);dials[_0xca30('0x31')](_0x280ce9);agents['hangup'](_0x280ce9);queues[_0xca30('0x31')](_0x280ce9);}catch(_0x295d9e){utils['error'](util[_0xca30('0x1a')](_0xca30('0x30'),_0x280ce9[_0xca30('0x1d')]),_0x295d9e);}});ami['on']('cdr',function(_0x13d4dd){try{utils[_0xca30('0x18')](util['format'](_0xca30('0x32'),_0x13d4dd[_0xca30('0x1d')]),_0x13d4dd);members['cdr'](_0x13d4dd);}catch(_0x354650){utils[_0xca30('0x14')](util['format']('[%s][index][cdr]',_0x13d4dd[_0xca30('0x1d')]),_0x354650);}});ami['on'](_0xca30('0x33'),function(_0x2940c6){try{utils['debug'](util[_0xca30('0x1a')]('[%s][index][blindtransfer]',_0x2940c6[_0xca30('0x1d')]),_0x2940c6);queues[_0xca30('0x33')](_0x2940c6);agents[_0xca30('0x33')](_0x2940c6);transfers[_0xca30('0x33')](_0x2940c6);}catch(_0x4877ad){utils['error'](util[_0xca30('0x1a')](_0xca30('0x34'),_0x2940c6['uniqueid']),_0x4877ad);}});ami['on'](_0xca30('0x35'),function(_0x5f5840){try{utils['debug'](util[_0xca30('0x1a')]('[%s][index][attendedtransfer]',_0x5f5840[_0xca30('0x36')]),_0x5f5840);queues[_0xca30('0x35')](_0x5f5840);transfers[_0xca30('0x35')](_0x5f5840);agents['attendedtransfer'](_0x5f5840);calls[_0xca30('0x35')](_0x5f5840);}catch(_0xc46601){utils[_0xca30('0x14')](util[_0xca30('0x1a')](_0xca30('0x37'),_0x5f5840['origtransfereruniqueid']),_0xc46601);}});ami['on'](_0xca30('0x38'),function(_0x206374){try{utils[_0xca30('0x18')](util[_0xca30('0x1a')]('[%s][index][varset]',_0x206374[_0xca30('0x1d')]),_0x206374);queues[_0xca30('0x38')](_0x206374);recordings[_0xca30('0x38')](_0x206374);calls[_0xca30('0x38')](_0x206374);dials['varset'](_0x206374);}catch(_0x2cc146){utils[_0xca30('0x14')](util[_0xca30('0x1a')](_0xca30('0x39'),_0x206374['uniqueid']),_0x2cc146);}});ami['on'](_0xca30('0x3a'),function(_0x47be13){try{utils['debug'](util[_0xca30('0x1a')]('[%s][index][newexten]',_0x47be13[_0xca30('0x1d')]),_0x47be13);calls[_0xca30('0x3a')](_0x47be13);recordings[_0xca30('0x3a')](_0x47be13);dials[_0xca30('0x3a')](_0x47be13);}catch(_0x256064){utils[_0xca30('0x14')](util[_0xca30('0x1a')](_0xca30('0x3b'),_0x47be13[_0xca30('0x1d')]),_0x256064);}});ami['on'](_0xca30('0x3c'),function(_0x1f89bc){try{utils[_0xca30('0x18')](util[_0xca30('0x1a')]('[%s][index][newchannel]',_0x1f89bc[_0xca30('0x1d')]),_0x1f89bc);calls['newchannel'](_0x1f89bc);recordings[_0xca30('0x3c')](_0x1f89bc);}catch(_0x2a6b2e){utils[_0xca30('0x14')](util['format'](_0xca30('0x3d'),_0x1f89bc['uniqueid']),_0x2a6b2e);}});ami['on']('dialbegin',function(_0x167883){try{utils[_0xca30('0x18')](util[_0xca30('0x1a')]('[%s][index][dialbegin]',_0x167883[_0xca30('0x1d')]),_0x167883);dials['dialbegin'](_0x167883);}catch(_0x20c669){utils[_0xca30('0x14')](util['format'](_0xca30('0x3e'),_0x167883[_0xca30('0x1d')]),_0x20c669);}});ami['on'](_0xca30('0x3f'),function(_0x2eaf22){try{utils[_0xca30('0x18')](util[_0xca30('0x1a')](_0xca30('0x40'),_0x2eaf22['uniqueid']),_0x2eaf22);dials[_0xca30('0x3f')](_0x2eaf22);}catch(_0x4e7003){utils[_0xca30('0x14')](util[_0xca30('0x1a')]('[%s][index][dialend]',_0x2eaf22['uniqueid']),_0x4e7003);}});}
\ No newline at end of file
index 23eb510..4e9e8f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb583=['BUSY','voice','TALKING','now','NOT_INUSE','isNil','exitAt','duration','diffTime','enterAt','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','[%s][members][agentcomplete]','cdr','[%s][members][cdr]','channel','assign','data2','source','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','data1','data3','destinationchannel','util','Local/_attended@transfer','Queue:','format','uniqueid','interface','type','getUserByInterface','then','membername','name','internal','request','CreateMemberReport','getUserByName','split','catch','error','some','devicestatechange','debug','[%s][members][devicestatechange]','device','info','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE'];(function(_0x5d684c,_0x567e53){var _0x2311bc=function(_0x202d13){while(--_0x202d13){_0x5d684c['push'](_0x5d684c['shift']());}};_0x2311bc(++_0x567e53);}(_0xb583,0x7b));var _0x3b58=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb583[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x3b58('0x0'));var utils=require('./utils');var members={};var exclude=[_0x3b58('0x1'),_0x3b58('0x2')];function writeDB(_0xdb9418){utils['info'](util[_0x3b58('0x3')]('[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s',_0xdb9418[_0x3b58('0x4')],_0xdb9418[_0x3b58('0x5')],_0xdb9418['channel'],_0xdb9418['data2'],_0xdb9418['membername'],_0xdb9418[_0x3b58('0x6')]));if(_0xdb9418[_0x3b58('0x5')]){utils[_0x3b58('0x7')](_0xdb9418[_0x3b58('0x5')])[_0x3b58('0x8')](function(_0x4895ea){if(_0x4895ea){_0xdb9418[_0x3b58('0x9')]=_0x4895ea[_0x3b58('0xa')];_0xdb9418[_0x3b58('0xb')]=_0x4895ea[_0x3b58('0xb')];utils[_0x3b58('0xc')](_0x3b58('0xd'),_0xdb9418);}else{utils[_0x3b58('0xe')](_0xdb9418[_0x3b58('0x5')][_0x3b58('0xf')]('/')[0x1])['then'](function(_0x16cd3e){if(_0x16cd3e){_0xdb9418['membername']=_0x16cd3e[_0x3b58('0xa')];_0xdb9418[_0x3b58('0xb')]=_0x16cd3e[_0x3b58('0xb')];utils['request'](_0x3b58('0xd'),_0xdb9418);}});}})[_0x3b58('0x10')](function(_0xd92267){utils[_0x3b58('0x11')](util['format']('[%s][members][writeDB]',_0xdb9418[_0x3b58('0x4')]),_0xd92267);});}delete members[_0xdb9418[_0x3b58('0x5')]];}function startsWith(_0x3b4302,_0x2b5994){return _[_0x3b58('0x12')](_0x3b4302,function(_0x161244){return _['startsWith'](_0x2b5994,_0x161244);});}exports[_0x3b58('0x13')]=function(_0x319e77){try{utils[_0x3b58('0x14')](util[_0x3b58('0x3')](_0x3b58('0x15'),members[_0x319e77[_0x3b58('0x16')]]?members[_0x319e77[_0x3b58('0x16')]][_0x3b58('0x4')]:_0x319e77['device']),_0x319e77);utils[_0x3b58('0x17')](util[_0x3b58('0x3')](_0x3b58('0x18'),members[_0x319e77[_0x3b58('0x16')]]?members[_0x319e77[_0x3b58('0x16')]][_0x3b58('0x4')]:_0x319e77[_0x3b58('0x16')],_0x319e77[_0x3b58('0x19')],_0x319e77['device']));switch(_0x319e77[_0x3b58('0x19')]){case _0x3b58('0x1a'):case _0x3b58('0x1b'):if(!startsWith(exclude,_0x319e77[_0x3b58('0x16')])){members[_0x319e77[_0x3b58('0x16')]]={'channel':_0x3b58('0x1c'),'interface':_0x319e77['device'],'type':_0x3b58('0x1d'),'enterAt':utils[_0x3b58('0x1e')](),'role':'agent'};}break;case _0x3b58('0x1f'):if(!_[_0x3b58('0x20')](members[_0x319e77[_0x3b58('0x16')]])){members[_0x319e77[_0x3b58('0x16')]][_0x3b58('0x21')]=utils['now']();members[_0x319e77[_0x3b58('0x16')]][_0x3b58('0x22')]=utils[_0x3b58('0x23')](members[_0x319e77['device']][_0x3b58('0x21')],members[_0x319e77[_0x3b58('0x16')]][_0x3b58('0x24')]);if(members[_0x319e77[_0x3b58('0x16')]][_0x3b58('0x4')]){writeDB(members[_0x319e77[_0x3b58('0x16')]]);}}break;default:break;}}catch(_0x372caf){utils[_0x3b58('0x11')](util[_0x3b58('0x3')](_0x3b58('0x15'),members[_0x319e77[_0x3b58('0x16')]]?members[_0x319e77[_0x3b58('0x16')]][_0x3b58('0x4')]:_0x319e77[_0x3b58('0x16')]),_0x372caf);}};exports['agentcomplete']=function(_0x3aa498){try{if(!_[_0x3b58('0x20')](members[_0x3aa498[_0x3b58('0x5')]])){utils[_0x3b58('0x14')](util['format']('[%s][members][agentcomplete]',_0x3aa498[_0x3b58('0x4')]),_0x3aa498);utils[_0x3b58('0x17')](util['format'](_0x3b58('0x25'),_0x3aa498[_0x3b58('0x4')],_0x3aa498['interface'],_0x3aa498['queue']));members[_0x3aa498[_0x3b58('0x5')]]=_['assign'](members[_0x3aa498[_0x3b58('0x5')]],{'data4':_0x3aa498['queue'],'uniqueid':_0x3aa498[_0x3b58('0x4')]});}}catch(_0x2d2bf5){utils['error'](util[_0x3b58('0x3')](_0x3b58('0x26'),_0x3aa498[_0x3b58('0x4')]),_0x2d2bf5);}};exports[_0x3b58('0x27')]=function(_0x4ddf06){try{utils[_0x3b58('0x14')](util[_0x3b58('0x3')](_0x3b58('0x28'),_0x4ddf06[_0x3b58('0x4')]),_0x4ddf06);if(_0x4ddf06[_0x3b58('0x29')]){var _0x2be41d=_0x4ddf06[_0x3b58('0x29')][_0x3b58('0xf')]('-')[0x0];if(!_['isNil'](members[_0x2be41d])){members[_0x2be41d]=_[_0x3b58('0x2a')](members[_0x2be41d],{'data1':members[_0x2be41d]['data1']||_0x4ddf06['type'],'data2':members[_0x2be41d][_0x3b58('0x2b')]||_0x4ddf06[_0x3b58('0x2c')],'data3':members[_0x2be41d]['data3']||_0x4ddf06[_0x3b58('0x2d')],'uniqueid':members[_0x2be41d][_0x3b58('0x4')]||_0x4ddf06[_0x3b58('0x4')]});utils[_0x3b58('0x17')](util[_0x3b58('0x3')](_0x3b58('0x2e'),_0x4ddf06[_0x3b58('0x4')],members[_0x2be41d][_0x3b58('0x2f')],members[_0x2be41d][_0x3b58('0x2b')],members[_0x2be41d][_0x3b58('0x30')]));if(members[_0x2be41d]['exitAt']){writeDB(members[_0x2be41d]);}}}if(_0x4ddf06[_0x3b58('0x31')]){var _0x3e34e8=_0x4ddf06[_0x3b58('0x31')][_0x3b58('0xf')]('-')[0x0];if(!_[_0x3b58('0x20')](members[_0x3e34e8])){members[_0x3e34e8]=_[_0x3b58('0x2a')](members[_0x3e34e8],{'data1':members[_0x3e34e8][_0x3b58('0x2f')]||_0x4ddf06['type'],'data2':members[_0x3e34e8]['data2']||_0x4ddf06[_0x3b58('0x2c')],'data3':members[_0x3e34e8]['data3']||_0x4ddf06[_0x3b58('0x2d')],'uniqueid':members[_0x3e34e8][_0x3b58('0x4')]||_0x4ddf06[_0x3b58('0x4')]});utils['info'](util[_0x3b58('0x3')](_0x3b58('0x2e'),_0x4ddf06[_0x3b58('0x4')],members[_0x3e34e8]['data1'],members[_0x3e34e8][_0x3b58('0x2b')],members[_0x3e34e8][_0x3b58('0x30')]));if(members[_0x3e34e8][_0x3b58('0x21')]){writeDB(members[_0x3e34e8]);}}}}catch(_0x4eec0b){utils[_0x3b58('0x11')](util[_0x3b58('0x3')](_0x3b58('0x28'),_0x4ddf06['uniqueid']),_0x4eec0b);}};
\ No newline at end of file
+var _0xc831=['then','name','internal','CreateMemberReport','getUserByName','request','catch','[%s][members][writeDB]','some','startsWith','devicestatechange','debug','device','state','INUSE','voice','now','agent','NOT_INUSE','exitAt','duration','diffTime','enterAt','[%s][members][devicestatechange]','agentcomplete','isNil','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','error','[%s][members][agentcomplete]','cdr','[%s][members][cdr]','channel','split','data1','type','data2','source','data3','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','assign','destination','util','./utils','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','membername','getUserByInterface'];(function(_0xffa198,_0x5a8940){var _0x1e4b50=function(_0x1f1c43){while(--_0x1f1c43){_0xffa198['push'](_0xffa198['shift']());}};_0x1e4b50(++_0x5a8940);}(_0xc831,0x103));var _0x1c83=function(_0x1cf2eb,_0x2809dc){_0x1cf2eb=_0x1cf2eb-0x0;var _0x6414de=_0xc831[_0x1cf2eb];return _0x6414de;};'use strict';var _=require('lodash');var util=require(_0x1c83('0x0'));var utils=require(_0x1c83('0x1'));var members={};var exclude=[_0x1c83('0x2'),_0x1c83('0x3')];function writeDB(_0x444adc){utils[_0x1c83('0x4')](util[_0x1c83('0x5')](_0x1c83('0x6'),_0x444adc[_0x1c83('0x7')],_0x444adc[_0x1c83('0x8')],_0x444adc['channel'],_0x444adc['data2'],_0x444adc[_0x1c83('0x9')],_0x444adc['type']));if(_0x444adc[_0x1c83('0x8')]){utils[_0x1c83('0xa')](_0x444adc[_0x1c83('0x8')])[_0x1c83('0xb')](function(_0x282313){if(_0x282313){_0x444adc['membername']=_0x282313[_0x1c83('0xc')];_0x444adc[_0x1c83('0xd')]=_0x282313['internal'];utils['request'](_0x1c83('0xe'),_0x444adc);}else{utils[_0x1c83('0xf')](_0x444adc[_0x1c83('0x8')]['split']('/')[0x1])[_0x1c83('0xb')](function(_0x58dbe4){if(_0x58dbe4){_0x444adc['membername']=_0x58dbe4[_0x1c83('0xc')];_0x444adc[_0x1c83('0xd')]=_0x58dbe4[_0x1c83('0xd')];utils[_0x1c83('0x10')](_0x1c83('0xe'),_0x444adc);}});}})[_0x1c83('0x11')](function(_0x132759){utils['error'](util[_0x1c83('0x5')](_0x1c83('0x12'),_0x444adc[_0x1c83('0x7')]),_0x132759);});}delete members[_0x444adc[_0x1c83('0x8')]];}function startsWith(_0x37ba9b,_0x4e1620){return _[_0x1c83('0x13')](_0x37ba9b,function(_0x18a06d){return _[_0x1c83('0x14')](_0x4e1620,_0x18a06d);});}exports[_0x1c83('0x15')]=function(_0x596a69){try{utils[_0x1c83('0x16')](util['format']('[%s][members][devicestatechange]',members[_0x596a69[_0x1c83('0x17')]]?members[_0x596a69[_0x1c83('0x17')]][_0x1c83('0x7')]:_0x596a69[_0x1c83('0x17')]),_0x596a69);utils['info'](util[_0x1c83('0x5')]('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x596a69[_0x1c83('0x17')]]?members[_0x596a69[_0x1c83('0x17')]]['uniqueid']:_0x596a69[_0x1c83('0x17')],_0x596a69[_0x1c83('0x18')],_0x596a69['device']));switch(_0x596a69['state']){case _0x1c83('0x19'):case'BUSY':if(!startsWith(exclude,_0x596a69['device'])){members[_0x596a69[_0x1c83('0x17')]]={'channel':_0x1c83('0x1a'),'interface':_0x596a69[_0x1c83('0x17')],'type':'TALKING','enterAt':utils[_0x1c83('0x1b')](),'role':_0x1c83('0x1c')};}break;case _0x1c83('0x1d'):if(!_['isNil'](members[_0x596a69[_0x1c83('0x17')]])){members[_0x596a69['device']][_0x1c83('0x1e')]=utils[_0x1c83('0x1b')]();members[_0x596a69[_0x1c83('0x17')]][_0x1c83('0x1f')]=utils[_0x1c83('0x20')](members[_0x596a69[_0x1c83('0x17')]][_0x1c83('0x1e')],members[_0x596a69[_0x1c83('0x17')]][_0x1c83('0x21')]);if(members[_0x596a69['device']][_0x1c83('0x7')]){writeDB(members[_0x596a69['device']]);}}break;default:break;}}catch(_0x354cdf){utils['error'](util[_0x1c83('0x5')](_0x1c83('0x22'),members[_0x596a69[_0x1c83('0x17')]]?members[_0x596a69[_0x1c83('0x17')]][_0x1c83('0x7')]:_0x596a69[_0x1c83('0x17')]),_0x354cdf);}};exports[_0x1c83('0x23')]=function(_0x2fb872){try{if(!_[_0x1c83('0x24')](members[_0x2fb872['interface']])){utils[_0x1c83('0x16')](util['format']('[%s][members][agentcomplete]',_0x2fb872[_0x1c83('0x7')]),_0x2fb872);utils[_0x1c83('0x4')](util[_0x1c83('0x5')](_0x1c83('0x25'),_0x2fb872[_0x1c83('0x7')],_0x2fb872[_0x1c83('0x8')],_0x2fb872[_0x1c83('0x26')]));members[_0x2fb872[_0x1c83('0x8')]]=_['assign'](members[_0x2fb872[_0x1c83('0x8')]],{'data4':_0x2fb872[_0x1c83('0x26')],'uniqueid':_0x2fb872[_0x1c83('0x7')]});}}catch(_0x152b17){utils[_0x1c83('0x27')](util['format'](_0x1c83('0x28'),_0x2fb872[_0x1c83('0x7')]),_0x152b17);}};exports[_0x1c83('0x29')]=function(_0x4cbe0c){try{utils[_0x1c83('0x16')](util[_0x1c83('0x5')](_0x1c83('0x2a'),_0x4cbe0c[_0x1c83('0x7')]),_0x4cbe0c);if(_0x4cbe0c[_0x1c83('0x2b')]){var _0x9d9670=_0x4cbe0c[_0x1c83('0x2b')][_0x1c83('0x2c')]('-')[0x0];if(!_[_0x1c83('0x24')](members[_0x9d9670])){members[_0x9d9670]=_['assign'](members[_0x9d9670],{'data1':members[_0x9d9670][_0x1c83('0x2d')]||_0x4cbe0c[_0x1c83('0x2e')],'data2':members[_0x9d9670][_0x1c83('0x2f')]||_0x4cbe0c[_0x1c83('0x30')],'data3':members[_0x9d9670][_0x1c83('0x31')]||_0x4cbe0c['destination'],'uniqueid':members[_0x9d9670]['uniqueid']||_0x4cbe0c['uniqueid']});utils[_0x1c83('0x4')](util['format'](_0x1c83('0x32'),_0x4cbe0c[_0x1c83('0x7')],members[_0x9d9670][_0x1c83('0x2d')],members[_0x9d9670][_0x1c83('0x2f')],members[_0x9d9670][_0x1c83('0x31')]));if(members[_0x9d9670]['exitAt']){writeDB(members[_0x9d9670]);}}}if(_0x4cbe0c['destinationchannel']){var _0x5c7146=_0x4cbe0c[_0x1c83('0x33')][_0x1c83('0x2c')]('-')[0x0];if(!_[_0x1c83('0x24')](members[_0x5c7146])){members[_0x5c7146]=_[_0x1c83('0x34')](members[_0x5c7146],{'data1':members[_0x5c7146][_0x1c83('0x2d')]||_0x4cbe0c[_0x1c83('0x2e')],'data2':members[_0x5c7146][_0x1c83('0x2f')]||_0x4cbe0c['source'],'data3':members[_0x5c7146]['data3']||_0x4cbe0c[_0x1c83('0x35')],'uniqueid':members[_0x5c7146][_0x1c83('0x7')]||_0x4cbe0c[_0x1c83('0x7')]});utils[_0x1c83('0x4')](util[_0x1c83('0x5')](_0x1c83('0x32'),_0x4cbe0c[_0x1c83('0x7')],members[_0x5c7146]['data1'],members[_0x5c7146][_0x1c83('0x2f')],members[_0x5c7146][_0x1c83('0x31')]));if(members[_0x5c7146][_0x1c83('0x1e')]){writeDB(members[_0x5c7146]);}}}}catch(_0x15827a){utils[_0x1c83('0x27')](util[_0x1c83('0x5')](_0x1c83('0x2a'),_0x4cbe0c[_0x1c83('0x7')]),_0x15827a);}};
\ No newline at end of file
index b74d7a4..6732419 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8386=['./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','queue','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','hangup','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','name','queuecallerenterreason','[%s][queues][varset]','isNil','variable','queuestatus','value','toUpperCase','CONTINUE','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','queuecallerabandonAt','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','error','[%s][queues][queuecallerabandon]','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','diffTime','queuecallerjoinAt','count','connectedlinename','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','agentcomplete','[%s][queues][agentcomplete]','queuecallercompleteAt','reason','transfer','TRANSFER','COMPLETEDBY','blindtransfer','[%s][queues][blindtransfer]','transfereeuniqueid','transfertype','transferexten','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','ATTENDED','transfertargetlinkedid','holdtime','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstart]','musiconholdstop','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util'];(function(_0x535d2e,_0x5392e1){var _0x1bdca5=function(_0x920f8b){while(--_0x920f8b){_0x535d2e['push'](_0x535d2e['shift']());}};_0x1bdca5(++_0x5392e1);}(_0x8386,0x148));var _0x6838=function(_0x2ed734,_0x15ef2e){_0x2ed734=_0x2ed734-0x0;var _0x5152bd=_0x8386[_0x2ed734];return _0x5152bd;};'use strict';var _=require(_0x6838('0x0'));var util=require(_0x6838('0x1'));var utils=require(_0x6838('0x2'));var queues={};function writeDB(_0x18523a){utils[_0x6838('0x3')](util[_0x6838('0x4')](_0x6838('0x5'),_0x18523a[_0x6838('0x6')],_0x18523a['channel'],_0x18523a[_0x6838('0x7')],_0x18523a[_0x6838('0x8')],_0x18523a[_0x6838('0x9')],_0x18523a[_0x6838('0xa')],_0x18523a[_0x6838('0xb')]));if(_0x18523a[_0x6838('0x7')]){utils[_0x6838('0xc')](_0x18523a[_0x6838('0x7')])['then'](function(_0x351753){if(_0x351753){_0x18523a[_0x6838('0xd')]=_0x351753[_0x6838('0xd')];}utils[_0x6838('0xe')](_0x6838('0xf'),_0x18523a);});}else{utils['request']('CreateVoiceQueueReport',_0x18523a);}if(_0x18523a[_0x6838('0x10')]){delete queues[_0x18523a['transfereduniqueid']];}else{delete queues[_0x18523a[_0x6838('0x6')]];}}exports[_0x6838('0x11')]=function(_0x307ef9){try{utils[_0x6838('0x12')](util[_0x6838('0x4')](_0x6838('0x13'),_0x307ef9['uniqueid']),_0x307ef9);utils['info'](util[_0x6838('0x4')](_0x6838('0x14'),_0x307ef9['uniqueid'],_0x307ef9[_0x6838('0x7')],_0x307ef9[_0x6838('0x15')]));queues[_0x307ef9[_0x6838('0x6')]]=_[_0x6838('0x16')](_0x307ef9,{'originalposition':_0x307ef9[_0x6838('0x15')],'queuecallerjoinAt':utils[_0x6838('0x17')](),'mohtime':0x0});}catch(_0x248f77){utils['error'](util['format'](_0x6838('0x13'),_0x307ef9[_0x6838('0x6')]),_0x248f77);}};exports[_0x6838('0x18')]=function(_0xb1b424){try{if(!_['isNil'](queues[_0xb1b424[_0x6838('0x6')]])){utils[_0x6838('0x12')](util[_0x6838('0x4')](_0x6838('0x19'),_0xb1b424['uniqueid']),_0xb1b424);if(queues[_0xb1b424['uniqueid']][_0x6838('0x1a')]){if(!queues[_0xb1b424[_0x6838('0x6')]][_0x6838('0x1b')]&&!queues[_0xb1b424[_0x6838('0x6')]][_0x6838('0x1c')]){queues[_0xb1b424[_0x6838('0x6')]][_0x6838('0x1d')]=!![];queues[_0xb1b424[_0x6838('0x6')]]['queuecallercompleteAt']=utils[_0x6838('0x17')]();queues[_0xb1b424[_0x6838('0x6')]][_0x6838('0xb')]=_0x6838('0x1e');}utils['info'](util[_0x6838('0x4')](_0x6838('0x1f'),_0xb1b424['uniqueid'],queues[_0xb1b424[_0x6838('0x6')]]['name'],queues[_0xb1b424['uniqueid']][_0x6838('0xb')]));writeDB(queues[_0xb1b424[_0x6838('0x6')]]);}else if(queues[_0xb1b424[_0x6838('0x6')]]['transfereduniqueid']){utils[_0x6838('0x3')](util[_0x6838('0x4')](_0x6838('0x20'),_0xb1b424[_0x6838('0x6')],queues[_0xb1b424['uniqueid']][_0x6838('0x21')],queues[_0xb1b424[_0x6838('0x6')]][_0x6838('0x10')]));queues[queues[_0xb1b424['uniqueid']]['transfereduniqueid']]=queues[_0xb1b424[_0x6838('0x6')]];queues[queues[_0xb1b424[_0x6838('0x6')]][_0x6838('0x10')]][_0x6838('0x22')]=0x2;delete queues[_0xb1b424['uniqueid']];}}}catch(_0xfb69b0){utils['error'](util[_0x6838('0x4')](_0x6838('0x19'),_0xb1b424['uniqueid']),_0xfb69b0);}};exports['varset']=function(_0x2696d0){try{utils['debug'](util[_0x6838('0x4')](_0x6838('0x23'),_0x2696d0[_0x6838('0x6')]),_0x2696d0);if(!_[_0x6838('0x24')](_0x2696d0[_0x6838('0x25')][_0x6838('0x26')])&&_0x2696d0[_0x6838('0x27')][_0x6838('0x28')]()!==_0x6838('0x29')){if(!_['isNil'](queues[_0x2696d0[_0x6838('0x6')]])){queues[_0x2696d0[_0x6838('0x6')]][_0x6838('0x1b')]=![];queues[_0x2696d0[_0x6838('0x6')]]['queuecallerabandonAt']=null;queues[_0x2696d0[_0x6838('0x6')]][_0x6838('0x1c')]=!![];queues[_0x2696d0[_0x6838('0x6')]][_0x6838('0x2a')]=utils['now']();queues[_0x2696d0[_0x6838('0x6')]]['queuecallerexitreason']=_0x2696d0[_0x6838('0x27')]['toUpperCase']();utils[_0x6838('0x3')](util['format'](_0x6838('0x2b'),_0x2696d0['uniqueid'],queues[_0x2696d0[_0x6838('0x6')]]['name'],_0x2696d0[_0x6838('0x27')],queues[_0x2696d0[_0x6838('0x6')]][_0x6838('0xb')]));writeDB(queues[_0x2696d0['uniqueid']]);}}else if(!_['isNil'](_0x2696d0[_0x6838('0x25')][_0x6838('0x2c')])){if(!_[_0x6838('0x24')](queues[_0x2696d0[_0x6838('0x6')]])&&!queues[_0x2696d0[_0x6838('0x6')]][_0x6838('0x1b')]){queues[_0x2696d0[_0x6838('0x6')]][_0x6838('0x1b')]=![];queues[_0x2696d0[_0x6838('0x6')]][_0x6838('0x2d')]=null;queues[_0x2696d0[_0x6838('0x6')]][_0x6838('0x1c')]=!![];queues[_0x2696d0[_0x6838('0x6')]][_0x6838('0x2a')]=utils[_0x6838('0x17')]();queues[_0x2696d0['uniqueid']][_0x6838('0xb')]=_0x6838('0x2e');utils[_0x6838('0x3')](util[_0x6838('0x4')](_0x6838('0x2f'),_0x2696d0[_0x6838('0x6')],queues[_0x2696d0[_0x6838('0x6')]][_0x6838('0x21')],_0x2696d0[_0x6838('0x27')],queues[_0x2696d0[_0x6838('0x6')]][_0x6838('0xb')]));}}}catch(_0x1938d3){utils[_0x6838('0x30')](util[_0x6838('0x4')]('[%s][queues][varset]',_0x2696d0[_0x6838('0x6')]),_0x1938d3);}};exports['queuecallerabandon']=function(_0x8af0a9){try{if(!_[_0x6838('0x24')](queues[_0x8af0a9[_0x6838('0x6')]])){utils[_0x6838('0x12')](util['format'](_0x6838('0x31'),_0x8af0a9[_0x6838('0x6')]),_0x8af0a9);queues[_0x8af0a9[_0x6838('0x6')]][_0x6838('0x1c')]=![];queues[_0x8af0a9['uniqueid']][_0x6838('0x2a')]=null;queues[_0x8af0a9['uniqueid']][_0x6838('0x1b')]=!![];queues[_0x8af0a9['uniqueid']][_0x6838('0x2d')]=utils[_0x6838('0x17')]();queues[_0x8af0a9['uniqueid']][_0x6838('0xb')]='ABANDONED';utils[_0x6838('0x3')](util[_0x6838('0x4')](_0x6838('0x32'),_0x8af0a9[_0x6838('0x6')],queues[_0x8af0a9['uniqueid']][_0x6838('0x21')],queues[_0x8af0a9['uniqueid']][_0x6838('0xb')]));}}catch(_0x551f69){utils[_0x6838('0x30')](util['format'](_0x6838('0x31'),_0x8af0a9['uniqueid']),_0x551f69);}};exports[_0x6838('0x33')]=function(_0x3e1403){try{if(!_[_0x6838('0x24')](queues[_0x3e1403['uniqueid']])){utils['debug'](util[_0x6838('0x4')](_0x6838('0x34'),_0x3e1403['uniqueid']),_0x3e1403);utils[_0x6838('0x3')](util[_0x6838('0x4')](_0x6838('0x35'),_0x3e1403[_0x6838('0x6')],queues[_0x3e1403[_0x6838('0x6')]][_0x6838('0x21')],_0x3e1403[_0x6838('0x36')],_0x3e1403['connectedlinename']));queues[_0x3e1403[_0x6838('0x6')]]['queuecallerleave']=!![];queues[_0x3e1403[_0x6838('0x6')]]['queuecallerleaveAt']=utils[_0x6838('0x17')]();queues[_0x3e1403[_0x6838('0x6')]]['holdtime']=utils[_0x6838('0x37')](queues[_0x3e1403[_0x6838('0x6')]][_0x6838('0x1a')],queues[_0x3e1403[_0x6838('0x6')]][_0x6838('0x38')]);queues[_0x3e1403[_0x6838('0x6')]][_0x6838('0x15')]=_0x3e1403[_0x6838('0x15')];queues[_0x3e1403['uniqueid']][_0x6838('0x39')]=_0x3e1403[_0x6838('0x39')];queues[_0x3e1403[_0x6838('0x6')]][_0x6838('0x36')]=_0x3e1403[_0x6838('0x36')];queues[_0x3e1403[_0x6838('0x6')]][_0x6838('0x3a')]=_0x3e1403[_0x6838('0x3a')];}}catch(_0xeac0eb){utils[_0x6838('0x30')](util[_0x6838('0x4')]('[%s][queues][queuecallerleave]',_0x3e1403[_0x6838('0x6')]),_0xeac0eb);}};exports[_0x6838('0x3b')]=function(_0x22169c){try{if(!_[_0x6838('0x24')](queues[_0x22169c['uniqueid']])){utils[_0x6838('0x12')](util[_0x6838('0x4')](_0x6838('0x3c'),_0x22169c['uniqueid']),_0x22169c);utils[_0x6838('0x3')](util[_0x6838('0x4')](_0x6838('0x3d'),_0x22169c['uniqueid'],queues[_0x22169c[_0x6838('0x6')]][_0x6838('0x21')],_0x22169c[_0x6838('0x3e')],_0x22169c[_0x6838('0x3f')]));queues[_0x22169c[_0x6838('0x6')]]['queuecallerabandon']=![];queues[_0x22169c['uniqueid']][_0x6838('0x1b')]=![];queues[_0x22169c[_0x6838('0x6')]]['queuecallerabandonAt']=null;queues[_0x22169c[_0x6838('0x6')]]['queuecallerexit']=![];queues[_0x22169c['uniqueid']][_0x6838('0xb')]=null;queues[_0x22169c['uniqueid']][_0x6838('0x2a')]=null;queues[_0x22169c[_0x6838('0x6')]][_0x6838('0x40')]=!![];queues[_0x22169c[_0x6838('0x6')]]['accountcode']=_0x22169c[_0x6838('0x3f')];queues[_0x22169c[_0x6838('0x6')]][_0x6838('0x8')]=_0x22169c[_0x6838('0x3e')];}}catch(_0x4a475e){utils['error'](util[_0x6838('0x4')](_0x6838('0x3c'),_0x22169c[_0x6838('0x6')]),_0x4a475e);}};exports[_0x6838('0x41')]=function(_0x324521){try{if(!_[_0x6838('0x24')](queues[_0x324521['uniqueid']])){if(queues[_0x324521[_0x6838('0x6')]][_0x6838('0x1a')]){utils['debug'](util[_0x6838('0x4')](_0x6838('0x42'),_0x324521['uniqueid']),_0x324521);queues[_0x324521[_0x6838('0x6')]][_0x6838('0x1b')]=![];queues[_0x324521['uniqueid']]['queuecallerabandon']=![];queues[_0x324521[_0x6838('0x6')]][_0x6838('0x2d')]=null;queues[_0x324521['uniqueid']][_0x6838('0x1c')]=![];queues[_0x324521[_0x6838('0x6')]]['queuecallerexitAt']=null;queues[_0x324521[_0x6838('0x6')]][_0x6838('0x40')]=!![];queues[_0x324521[_0x6838('0x6')]]['lastAssignedTo']=_0x324521[_0x6838('0x3e')];queues[_0x324521[_0x6838('0x6')]][_0x6838('0x1d')]=!![];queues[_0x324521[_0x6838('0x6')]][_0x6838('0x43')]=utils[_0x6838('0x17')]();if(_0x324521[_0x6838('0x44')]==_0x6838('0x45')){if(!queues[_0x324521[_0x6838('0x6')]][_0x6838('0x45')]){queues[_0x324521[_0x6838('0x6')]]['queuecallerexitreason']=_0x6838('0x46');}}else{queues[_0x324521[_0x6838('0x6')]][_0x6838('0xb')]=_0x6838('0x47')+_0x324521['reason'][_0x6838('0x28')]();}utils[_0x6838('0x3')](util[_0x6838('0x4')]('[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s',_0x324521['uniqueid'],queues[_0x324521[_0x6838('0x6')]]['name'],_0x324521[_0x6838('0x3e')],queues[_0x324521['uniqueid']][_0x6838('0xb')]));writeDB(queues[_0x324521['uniqueid']]);}}}catch(_0x20909f){utils[_0x6838('0x30')](util[_0x6838('0x4')](_0x6838('0x42'),_0x324521[_0x6838('0x6')]),_0x20909f);}};exports[_0x6838('0x48')]=function(_0xed5222){try{if(!_[_0x6838('0x24')](queues[_0xed5222['transfereeuniqueid']])){utils[_0x6838('0x12')](util['format'](_0x6838('0x49'),_0xed5222[_0x6838('0x6')]),_0xed5222);queues[_0xed5222[_0x6838('0x4a')]][_0x6838('0x45')]=!![];queues[_0xed5222['transfereeuniqueid']][_0x6838('0x4b')]='BLIND';queues[_0xed5222[_0x6838('0x4a')]][_0x6838('0x4c')]=_0xed5222[_0x6838('0x4d')];queues[_0xed5222[_0x6838('0x4a')]][_0x6838('0x4e')]=_0xed5222[_0x6838('0x4a')];queues[_0xed5222[_0x6838('0x4a')]][_0x6838('0xb')]=_0x6838('0x4f');utils[_0x6838('0x3')](util['format'](_0x6838('0x50'),_0xed5222['uniqueid'],queues[_0xed5222[_0x6838('0x4a')]][_0x6838('0x21')],_0xed5222[_0x6838('0x4a')],_0xed5222[_0x6838('0x4d')]));}}catch(_0x13c412){utils[_0x6838('0x30')](util[_0x6838('0x4')](_0x6838('0x49'),_0xed5222[_0x6838('0x6')]),_0x13c412);}};exports[_0x6838('0x51')]=function(_0x1112d2){try{utils[_0x6838('0x12')](util[_0x6838('0x4')](_0x6838('0x52'),_0x1112d2['origtransfereruniqueid']),_0x1112d2);if(_0x1112d2[_0x6838('0x53')]==_0x1112d2[_0x6838('0x54')]){if(!_[_0x6838('0x24')](queues[_0x1112d2[_0x6838('0x55')]])){utils[_0x6838('0x3')](util[_0x6838('0x4')](_0x6838('0x56'),_0x1112d2[_0x6838('0x53')],queues[_0x1112d2[_0x6838('0x55')]][_0x6838('0x21')],_0x1112d2[_0x6838('0x57')]));queues[_0x1112d2['secondtransfererlinkedid']][_0x6838('0x45')]=!![];queues[_0x1112d2[_0x6838('0x55')]][_0x6838('0x4b')]='ATTENDED';queues[_0x1112d2[_0x6838('0x55')]][_0x6838('0x4c')]=_0x1112d2[_0x6838('0x57')];queues[_0x1112d2[_0x6838('0x55')]][_0x6838('0x4e')]=_0x1112d2[_0x6838('0x53')];queues[_0x1112d2['secondtransfererlinkedid']][_0x6838('0xb')]=_0x6838('0x58');}if(!_[_0x6838('0x24')](queues[_0x1112d2[_0x6838('0x54')]])){if(_0x1112d2['transfereelinkedid']&&queues[_0x1112d2[_0x6838('0x59')]]){queues[_0x1112d2['transfereelinkedid']][_0x6838('0x22')]=0x1;queues[_0x1112d2[_0x6838('0x4a')]]=_[_0x6838('0x5a')](queues[_0x1112d2[_0x6838('0x59')]]);queues[_0x1112d2[_0x6838('0x4a')]]['transfereduniqueid']=_0x1112d2[_0x6838('0x5b')];queues[_0x1112d2['transfereeuniqueid']][_0x6838('0x22')]=0x2;queues[_0x1112d2[_0x6838('0x4a')]][_0x6838('0x9')]=queues[_0x1112d2['secondtransfererlinkedid']][_0x6838('0x9')];queues[_0x1112d2[_0x6838('0x4a')]][_0x6838('0x5c')]=queues[_0x1112d2[_0x6838('0x55')]][_0x6838('0x5c')];queues[_0x1112d2[_0x6838('0x4a')]]['queuecallerjoinAt']=utils[_0x6838('0x17')]();queues[_0x1112d2[_0x6838('0x4a')]][_0x6838('0x1a')]=utils[_0x6838('0x17')]();queues[_0x1112d2[_0x6838('0x4a')]]['holdtime']=0x0;queues[_0x1112d2[_0x6838('0x4a')]]['mohtime']=0x0;utils['info'](util['format'](_0x6838('0x5d'),_0x1112d2['origtransfereruniqueid'],queues[_0x1112d2[_0x6838('0x4a')]][_0x6838('0x21')],queues[_0x1112d2['transfereeuniqueid']]['calleridnum'],queues[_0x1112d2[_0x6838('0x4a')]][_0x6838('0x5c')]));}else{utils[_0x6838('0x3')](util[_0x6838('0x4')](_0x6838('0x5e'),_0x1112d2[_0x6838('0x53')],queues[_0x1112d2['origtransfererlinkedid']][_0x6838('0x21')],_0x1112d2[_0x6838('0x55')]));queues[_0x1112d2[_0x6838('0x54')]][_0x6838('0x10')]=_0x1112d2[_0x6838('0x55')];}}}else if(_0x1112d2[_0x6838('0x5f')]==_0x1112d2[_0x6838('0x55')]){if(!_[_0x6838('0x24')](queues[_0x1112d2['origtransfererlinkedid']])){utils[_0x6838('0x3')](util['format'](_0x6838('0x60'),_0x1112d2[_0x6838('0x53')],queues[_0x1112d2[_0x6838('0x54')]]['name'],_0x1112d2[_0x6838('0x5f')],_0x1112d2[_0x6838('0x61')]));queues[_0x1112d2[_0x6838('0x54')]][_0x6838('0x45')]=!![];queues[_0x1112d2[_0x6838('0x54')]][_0x6838('0x4b')]=_0x6838('0x62');queues[_0x1112d2[_0x6838('0x54')]][_0x6838('0x4c')]=_0x1112d2[_0x6838('0x61')];queues[_0x1112d2[_0x6838('0x54')]][_0x6838('0x4e')]=_0x1112d2[_0x6838('0x5f')];queues[_0x1112d2[_0x6838('0x54')]]['queuecallerexitreason']='ATTENDEDTRANSFER';}if(!_[_0x6838('0x24')](queues[_0x1112d2[_0x6838('0x55')]])){if(_0x1112d2[_0x6838('0x63')]&&queues[_0x1112d2[_0x6838('0x63')]]){queues[_0x1112d2[_0x6838('0x63')]][_0x6838('0x22')]=0x1;queues[_0x1112d2[_0x6838('0x5b')]]=_[_0x6838('0x5a')](queues[_0x1112d2['transfertargetlinkedid']]);queues[_0x1112d2[_0x6838('0x5b')]][_0x6838('0x10')]=_0x1112d2['transfertargetuniqueid'];queues[_0x1112d2['transfertargetuniqueid']]['queuecallerenterreason']=0x2;queues[_0x1112d2['transfertargetuniqueid']][_0x6838('0x9')]=queues[_0x1112d2[_0x6838('0x54')]][_0x6838('0x9')];queues[_0x1112d2[_0x6838('0x5b')]][_0x6838('0x5c')]=queues[_0x1112d2[_0x6838('0x54')]][_0x6838('0x5c')];queues[_0x1112d2[_0x6838('0x5b')]][_0x6838('0x38')]=utils[_0x6838('0x17')]();queues[_0x1112d2[_0x6838('0x5b')]][_0x6838('0x1a')]=utils[_0x6838('0x17')]();queues[_0x1112d2[_0x6838('0x5b')]][_0x6838('0x64')]=0x0;queues[_0x1112d2['transfertargetuniqueid']][_0x6838('0x65')]=0x0;utils[_0x6838('0x3')](util['format'](_0x6838('0x66'),_0x1112d2[_0x6838('0x53')],queues[_0x1112d2['transfertargetuniqueid']][_0x6838('0x21')],queues[_0x1112d2[_0x6838('0x5b')]]['transfereduniqueid'],queues[_0x1112d2[_0x6838('0x5b')]]['calleridnum'],queues[_0x1112d2[_0x6838('0x5b')]][_0x6838('0x5c')]));}else{utils[_0x6838('0x3')](util[_0x6838('0x4')](_0x6838('0x5e'),_0x1112d2[_0x6838('0x53')],queues[_0x1112d2[_0x6838('0x55')]][_0x6838('0x21')],_0x1112d2[_0x6838('0x54')]));queues[_0x1112d2[_0x6838('0x55')]][_0x6838('0x10')]=_0x1112d2[_0x6838('0x54')];}}}}catch(_0x483ee6){utils[_0x6838('0x30')](util[_0x6838('0x4')]('[%s][queues][attendedtransfer]',_0x1112d2[_0x6838('0x53')]),_0x483ee6);}};exports[_0x6838('0x67')]=function(_0x560cdc){try{if(!_[_0x6838('0x24')](queues[_0x560cdc[_0x6838('0x6')]])){utils['debug'](util['format']('[%s][queues][musiconholdstart]',_0x560cdc['uniqueid']),_0x560cdc);queues[_0x560cdc[_0x6838('0x6')]][_0x6838('0x68')]=utils[_0x6838('0x17')]();utils[_0x6838('0x3')](util['format'](_0x6838('0x69'),_0x560cdc[_0x6838('0x6')],queues[_0x560cdc['uniqueid']][_0x6838('0x21')],queues[_0x560cdc[_0x6838('0x6')]][_0x6838('0x68')]));}}catch(_0x3cf2cf){utils['error'](util[_0x6838('0x4')](_0x6838('0x6a'),_0x560cdc['uniqueid']),_0x3cf2cf);}};exports[_0x6838('0x6b')]=function(_0x2b4686){try{if(!_['isNil'](queues[_0x2b4686[_0x6838('0x6')]])){if(!_[_0x6838('0x24')](queues[_0x2b4686[_0x6838('0x6')]][_0x6838('0x68')])){utils[_0x6838('0x12')](util[_0x6838('0x4')](_0x6838('0x6c'),_0x2b4686[_0x6838('0x6')]),_0x2b4686);queues[_0x2b4686[_0x6838('0x6')]]['mohtime']+=utils[_0x6838('0x37')](utils['now'](),queues[_0x2b4686[_0x6838('0x6')]][_0x6838('0x68')]);utils[_0x6838('0x3')](util[_0x6838('0x4')](_0x6838('0x6d'),_0x2b4686[_0x6838('0x6')],queues[_0x2b4686[_0x6838('0x6')]][_0x6838('0x21')],queues[_0x2b4686[_0x6838('0x6')]]['mohtime']));delete queues[_0x2b4686[_0x6838('0x6')]]['musiconholdstartAt'];}}}catch(_0x49bc8){utils[_0x6838('0x30')](util[_0x6838('0x4')](_0x6838('0x6c'),_0x2b4686['uniqueid']),_0x49bc8);}};
\ No newline at end of file
+var _0x407f=['accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','request','transfereduniqueid','uniqueid','debug','format','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','error','[%s][queues][queuecallerjoin]','hangup','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','name','queuecallerenterreason','varset','queuestatus','value','CONTINUE','queuecallerabandonAt','queuecallerexit','queuecallerexitAt','toUpperCase','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','variable','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][varset]','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','holdtime','queuecallerjoinAt','count','connectedlinenum','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','destaccountcode','assigned','agentcomplete','membername','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','blindtransfer','transfereeuniqueid','BLIND','transferexten','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererlinkedid','origtransfererexten','ATTENDED','transfereelinkedid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','origtransfererlinkedid','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertargetlinkedid','transfertargetuniqueid','clone','calleridnum','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]','diffTime','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','./utils','info','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','channel','queue','lastAssignedTo'];(function(_0x4f75a3,_0x2c4ec4){var _0x45ca11=function(_0xb5c8f4){while(--_0xb5c8f4){_0x4f75a3['push'](_0x4f75a3['shift']());}};_0x45ca11(++_0x2c4ec4);}(_0x407f,0x136));var _0xf407=function(_0xaedd5b,_0x1f15ae){_0xaedd5b=_0xaedd5b-0x0;var _0x578d64=_0x407f[_0xaedd5b];return _0x578d64;};'use strict';var _=require(_0xf407('0x0'));var util=require(_0xf407('0x1'));var utils=require(_0xf407('0x2'));var queues={};function writeDB(_0x536b96){utils[_0xf407('0x3')](util['format'](_0xf407('0x4'),_0x536b96['uniqueid'],_0x536b96[_0xf407('0x5')],_0x536b96[_0xf407('0x6')],_0x536b96[_0xf407('0x7')],_0x536b96['calleridnum'],_0x536b96[_0xf407('0x8')],_0x536b96[_0xf407('0x9')]));if(_0x536b96[_0xf407('0x6')]){utils[_0xf407('0xa')](_0x536b96[_0xf407('0x6')])[_0xf407('0xb')](function(_0xdaa727){if(_0xdaa727){_0x536b96[_0xf407('0xc')]=_0xdaa727[_0xf407('0xc')];}utils[_0xf407('0xd')]('CreateVoiceQueueReport',_0x536b96);});}else{utils[_0xf407('0xd')]('CreateVoiceQueueReport',_0x536b96);}if(_0x536b96[_0xf407('0xe')]){delete queues[_0x536b96[_0xf407('0xe')]];}else{delete queues[_0x536b96[_0xf407('0xf')]];}}exports['queuecallerjoin']=function(_0x44ad10){try{utils[_0xf407('0x10')](util[_0xf407('0x11')]('[%s][queues][queuecallerjoin]',_0x44ad10[_0xf407('0xf')]),_0x44ad10);utils['info'](util[_0xf407('0x11')](_0xf407('0x12'),_0x44ad10['uniqueid'],_0x44ad10[_0xf407('0x6')],_0x44ad10[_0xf407('0x13')]));queues[_0x44ad10['uniqueid']]=_[_0xf407('0x14')](_0x44ad10,{'originalposition':_0x44ad10['position'],'queuecallerjoinAt':utils[_0xf407('0x15')](),'mohtime':0x0});}catch(_0x2f2b6a){utils[_0xf407('0x16')](util[_0xf407('0x11')](_0xf407('0x17'),_0x44ad10['uniqueid']),_0x2f2b6a);}};exports[_0xf407('0x18')]=function(_0x3f011f){try{if(!_[_0xf407('0x19')](queues[_0x3f011f[_0xf407('0xf')]])){utils['debug'](util['format'](_0xf407('0x1a'),_0x3f011f[_0xf407('0xf')]),_0x3f011f);if(queues[_0x3f011f['uniqueid']][_0xf407('0x1b')]){if(!queues[_0x3f011f['uniqueid']][_0xf407('0x1c')]&&!queues[_0x3f011f[_0xf407('0xf')]]['queuecallerexit']){queues[_0x3f011f[_0xf407('0xf')]][_0xf407('0x1d')]=!![];queues[_0x3f011f['uniqueid']][_0xf407('0x1e')]=utils[_0xf407('0x15')]();queues[_0x3f011f[_0xf407('0xf')]][_0xf407('0x9')]=_0xf407('0x1f');}utils[_0xf407('0x3')](util['format'](_0xf407('0x20'),_0x3f011f[_0xf407('0xf')],queues[_0x3f011f[_0xf407('0xf')]]['name'],queues[_0x3f011f[_0xf407('0xf')]][_0xf407('0x9')]));writeDB(queues[_0x3f011f[_0xf407('0xf')]]);}else if(queues[_0x3f011f['uniqueid']]['transfereduniqueid']){utils['info'](util[_0xf407('0x11')](_0xf407('0x21'),_0x3f011f[_0xf407('0xf')],queues[_0x3f011f[_0xf407('0xf')]][_0xf407('0x22')],queues[_0x3f011f[_0xf407('0xf')]][_0xf407('0xe')]));queues[queues[_0x3f011f['uniqueid']][_0xf407('0xe')]]=queues[_0x3f011f[_0xf407('0xf')]];queues[queues[_0x3f011f[_0xf407('0xf')]][_0xf407('0xe')]][_0xf407('0x23')]=0x2;delete queues[_0x3f011f[_0xf407('0xf')]];}}}catch(_0x46b09d){utils[_0xf407('0x16')](util['format'](_0xf407('0x1a'),_0x3f011f['uniqueid']),_0x46b09d);}};exports[_0xf407('0x24')]=function(_0x1698d1){try{utils[_0xf407('0x10')](util[_0xf407('0x11')]('[%s][queues][varset]',_0x1698d1[_0xf407('0xf')]),_0x1698d1);if(!_[_0xf407('0x19')](_0x1698d1['variable'][_0xf407('0x25')])&&_0x1698d1[_0xf407('0x26')]['toUpperCase']()!==_0xf407('0x27')){if(!_[_0xf407('0x19')](queues[_0x1698d1['uniqueid']])){queues[_0x1698d1[_0xf407('0xf')]][_0xf407('0x1c')]=![];queues[_0x1698d1[_0xf407('0xf')]][_0xf407('0x28')]=null;queues[_0x1698d1['uniqueid']][_0xf407('0x29')]=!![];queues[_0x1698d1['uniqueid']][_0xf407('0x2a')]=utils[_0xf407('0x15')]();queues[_0x1698d1[_0xf407('0xf')]][_0xf407('0x9')]=_0x1698d1[_0xf407('0x26')][_0xf407('0x2b')]();utils[_0xf407('0x3')](util['format'](_0xf407('0x2c'),_0x1698d1['uniqueid'],queues[_0x1698d1[_0xf407('0xf')]]['name'],_0x1698d1[_0xf407('0x26')],queues[_0x1698d1['uniqueid']][_0xf407('0x9')]));writeDB(queues[_0x1698d1[_0xf407('0xf')]]);}}else if(!_[_0xf407('0x19')](_0x1698d1[_0xf407('0x2d')]['queueposition'])){if(!_[_0xf407('0x19')](queues[_0x1698d1[_0xf407('0xf')]])&&!queues[_0x1698d1[_0xf407('0xf')]]['queuecallerabandon']){queues[_0x1698d1[_0xf407('0xf')]][_0xf407('0x1c')]=![];queues[_0x1698d1[_0xf407('0xf')]][_0xf407('0x28')]=null;queues[_0x1698d1[_0xf407('0xf')]][_0xf407('0x29')]=!![];queues[_0x1698d1[_0xf407('0xf')]][_0xf407('0x2a')]=utils[_0xf407('0x15')]();queues[_0x1698d1[_0xf407('0xf')]][_0xf407('0x9')]=_0xf407('0x2e');utils[_0xf407('0x3')](util['format'](_0xf407('0x2f'),_0x1698d1[_0xf407('0xf')],queues[_0x1698d1[_0xf407('0xf')]]['name'],_0x1698d1['value'],queues[_0x1698d1[_0xf407('0xf')]][_0xf407('0x9')]));}}}catch(_0x4975e7){utils[_0xf407('0x16')](util['format'](_0xf407('0x30'),_0x1698d1[_0xf407('0xf')]),_0x4975e7);}};exports['queuecallerabandon']=function(_0x3d74fe){try{if(!_['isNil'](queues[_0x3d74fe[_0xf407('0xf')]])){utils[_0xf407('0x10')](util[_0xf407('0x11')](_0xf407('0x31'),_0x3d74fe[_0xf407('0xf')]),_0x3d74fe);queues[_0x3d74fe[_0xf407('0xf')]][_0xf407('0x29')]=![];queues[_0x3d74fe[_0xf407('0xf')]][_0xf407('0x2a')]=null;queues[_0x3d74fe['uniqueid']][_0xf407('0x1c')]=!![];queues[_0x3d74fe[_0xf407('0xf')]][_0xf407('0x28')]=utils[_0xf407('0x15')]();queues[_0x3d74fe[_0xf407('0xf')]][_0xf407('0x9')]=_0xf407('0x32');utils[_0xf407('0x3')](util[_0xf407('0x11')](_0xf407('0x33'),_0x3d74fe['uniqueid'],queues[_0x3d74fe[_0xf407('0xf')]][_0xf407('0x22')],queues[_0x3d74fe[_0xf407('0xf')]][_0xf407('0x9')]));}}catch(_0x2da872){utils[_0xf407('0x16')](util['format'](_0xf407('0x31'),_0x3d74fe[_0xf407('0xf')]),_0x2da872);}};exports[_0xf407('0x34')]=function(_0x150c14){try{if(!_['isNil'](queues[_0x150c14['uniqueid']])){utils[_0xf407('0x10')](util[_0xf407('0x11')](_0xf407('0x35'),_0x150c14['uniqueid']),_0x150c14);utils[_0xf407('0x3')](util[_0xf407('0x11')]('[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x150c14['uniqueid'],queues[_0x150c14[_0xf407('0xf')]][_0xf407('0x22')],_0x150c14['connectedlinenum'],_0x150c14['connectedlinename']));queues[_0x150c14[_0xf407('0xf')]][_0xf407('0x34')]=!![];queues[_0x150c14[_0xf407('0xf')]]['queuecallerleaveAt']=utils[_0xf407('0x15')]();queues[_0x150c14[_0xf407('0xf')]][_0xf407('0x36')]=utils['diffTime'](queues[_0x150c14[_0xf407('0xf')]][_0xf407('0x1b')],queues[_0x150c14[_0xf407('0xf')]][_0xf407('0x37')]);queues[_0x150c14[_0xf407('0xf')]][_0xf407('0x13')]=_0x150c14[_0xf407('0x13')];queues[_0x150c14[_0xf407('0xf')]][_0xf407('0x38')]=_0x150c14[_0xf407('0x38')];queues[_0x150c14[_0xf407('0xf')]][_0xf407('0x39')]=_0x150c14[_0xf407('0x39')];queues[_0x150c14['uniqueid']]['connectedlinename']=_0x150c14['connectedlinename'];}}catch(_0x124ea3){utils['error'](util[_0xf407('0x11')](_0xf407('0x35'),_0x150c14['uniqueid']),_0x124ea3);}};exports[_0xf407('0x3a')]=function(_0x411f8c){try{if(!_[_0xf407('0x19')](queues[_0x411f8c[_0xf407('0xf')]])){utils['debug'](util['format'](_0xf407('0x3b'),_0x411f8c[_0xf407('0xf')]),_0x411f8c);utils[_0xf407('0x3')](util['format'](_0xf407('0x3c'),_0x411f8c[_0xf407('0xf')],queues[_0x411f8c[_0xf407('0xf')]]['name'],_0x411f8c['membername'],_0x411f8c[_0xf407('0x3d')]));queues[_0x411f8c[_0xf407('0xf')]][_0xf407('0x1c')]=![];queues[_0x411f8c[_0xf407('0xf')]]['queuecallerabandon']=![];queues[_0x411f8c[_0xf407('0xf')]]['queuecallerabandonAt']=null;queues[_0x411f8c['uniqueid']][_0xf407('0x29')]=![];queues[_0x411f8c[_0xf407('0xf')]][_0xf407('0x9')]=null;queues[_0x411f8c[_0xf407('0xf')]][_0xf407('0x2a')]=null;queues[_0x411f8c[_0xf407('0xf')]][_0xf407('0x3e')]=!![];queues[_0x411f8c[_0xf407('0xf')]][_0xf407('0x8')]=_0x411f8c[_0xf407('0x3d')];queues[_0x411f8c[_0xf407('0xf')]][_0xf407('0x7')]=_0x411f8c['membername'];}}catch(_0x318dd0){utils['error'](util[_0xf407('0x11')](_0xf407('0x3b'),_0x411f8c[_0xf407('0xf')]),_0x318dd0);}};exports[_0xf407('0x3f')]=function(_0x38617d){try{if(!_[_0xf407('0x19')](queues[_0x38617d['uniqueid']])){if(queues[_0x38617d['uniqueid']]['queuecallerleaveAt']){utils[_0xf407('0x10')](util[_0xf407('0x11')]('[%s][queues][agentcomplete]',_0x38617d['uniqueid']),_0x38617d);queues[_0x38617d['uniqueid']][_0xf407('0x1c')]=![];queues[_0x38617d[_0xf407('0xf')]][_0xf407('0x1c')]=![];queues[_0x38617d['uniqueid']][_0xf407('0x28')]=null;queues[_0x38617d[_0xf407('0xf')]][_0xf407('0x29')]=![];queues[_0x38617d[_0xf407('0xf')]]['queuecallerexitAt']=null;queues[_0x38617d[_0xf407('0xf')]]['assigned']=!![];queues[_0x38617d[_0xf407('0xf')]]['lastAssignedTo']=_0x38617d[_0xf407('0x40')];queues[_0x38617d[_0xf407('0xf')]][_0xf407('0x1d')]=!![];queues[_0x38617d[_0xf407('0xf')]]['queuecallercompleteAt']=utils[_0xf407('0x15')]();if(_0x38617d[_0xf407('0x41')]==_0xf407('0x42')){if(!queues[_0x38617d[_0xf407('0xf')]][_0xf407('0x42')]){queues[_0x38617d['uniqueid']][_0xf407('0x9')]=_0xf407('0x43');}}else{queues[_0x38617d['uniqueid']][_0xf407('0x9')]=_0xf407('0x44')+_0x38617d[_0xf407('0x41')]['toUpperCase']();}utils[_0xf407('0x3')](util['format'](_0xf407('0x45'),_0x38617d[_0xf407('0xf')],queues[_0x38617d[_0xf407('0xf')]][_0xf407('0x22')],_0x38617d['membername'],queues[_0x38617d['uniqueid']][_0xf407('0x9')]));writeDB(queues[_0x38617d[_0xf407('0xf')]]);}}}catch(_0x47bc48){utils[_0xf407('0x16')](util[_0xf407('0x11')](_0xf407('0x46'),_0x38617d[_0xf407('0xf')]),_0x47bc48);}};exports[_0xf407('0x47')]=function(_0x414c13){try{if(!_[_0xf407('0x19')](queues[_0x414c13['transfereeuniqueid']])){utils[_0xf407('0x10')](util[_0xf407('0x11')]('[%s][queues][blindtransfer]',_0x414c13[_0xf407('0xf')]),_0x414c13);queues[_0x414c13[_0xf407('0x48')]][_0xf407('0x42')]=!![];queues[_0x414c13['transfereeuniqueid']]['transfertype']=_0xf407('0x49');queues[_0x414c13[_0xf407('0x48')]][_0xf407('0x4a')]=_0x414c13[_0xf407('0x4b')];queues[_0x414c13[_0xf407('0x48')]][_0xf407('0x4c')]=_0x414c13['transfereeuniqueid'];queues[_0x414c13[_0xf407('0x48')]][_0xf407('0x9')]=_0xf407('0x4d');utils[_0xf407('0x3')](util['format'](_0xf407('0x4e'),_0x414c13[_0xf407('0xf')],queues[_0x414c13[_0xf407('0x48')]]['name'],_0x414c13[_0xf407('0x48')],_0x414c13[_0xf407('0x4b')]));}}catch(_0xebabb){utils['error'](util[_0xf407('0x11')]('[%s][queues][blindtransfer]',_0x414c13[_0xf407('0xf')]),_0xebabb);}};exports[_0xf407('0x4f')]=function(_0x47734f){try{utils[_0xf407('0x10')](util['format'](_0xf407('0x50'),_0x47734f[_0xf407('0x51')]),_0x47734f);if(_0x47734f['origtransfereruniqueid']==_0x47734f['origtransfererlinkedid']){if(!_[_0xf407('0x19')](queues[_0x47734f['secondtransfererlinkedid']])){utils['info'](util['format'](_0xf407('0x52'),_0x47734f[_0xf407('0x51')],queues[_0x47734f[_0xf407('0x53')]][_0xf407('0x22')],_0x47734f[_0xf407('0x54')]));queues[_0x47734f[_0xf407('0x53')]]['transfer']=!![];queues[_0x47734f[_0xf407('0x53')]]['transfertype']=_0xf407('0x55');queues[_0x47734f[_0xf407('0x53')]]['transferexten']=_0x47734f[_0xf407('0x54')];queues[_0x47734f[_0xf407('0x53')]]['transferuniqueid']=_0x47734f['origtransfereruniqueid'];queues[_0x47734f[_0xf407('0x53')]][_0xf407('0x9')]='ATTENDEDTRANSFER';}if(!_['isNil'](queues[_0x47734f['origtransfererlinkedid']])){if(_0x47734f[_0xf407('0x56')]&&queues[_0x47734f[_0xf407('0x56')]]){queues[_0x47734f['transfereelinkedid']][_0xf407('0x23')]=0x1;queues[_0x47734f[_0xf407('0x48')]]=_['clone'](queues[_0x47734f['transfereelinkedid']]);queues[_0x47734f['transfereeuniqueid']]['transfereduniqueid']=_0x47734f['transfertargetuniqueid'];queues[_0x47734f[_0xf407('0x48')]]['queuecallerenterreason']=0x2;queues[_0x47734f['transfereeuniqueid']]['calleridnum']=queues[_0x47734f['secondtransfererlinkedid']]['calleridnum'];queues[_0x47734f['transfereeuniqueid']][_0xf407('0x57')]=queues[_0x47734f[_0xf407('0x53')]][_0xf407('0x57')];queues[_0x47734f[_0xf407('0x48')]]['queuecallerjoinAt']=utils[_0xf407('0x15')]();queues[_0x47734f['transfereeuniqueid']][_0xf407('0x1b')]=utils[_0xf407('0x15')]();queues[_0x47734f[_0xf407('0x48')]][_0xf407('0x36')]=0x0;queues[_0x47734f[_0xf407('0x48')]][_0xf407('0x58')]=0x0;utils[_0xf407('0x3')](util[_0xf407('0x11')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x47734f[_0xf407('0x51')],queues[_0x47734f['transfereeuniqueid']][_0xf407('0x22')],queues[_0x47734f['transfereeuniqueid']]['calleridnum'],queues[_0x47734f['transfereeuniqueid']][_0xf407('0x57')]));}else{utils[_0xf407('0x3')](util[_0xf407('0x11')](_0xf407('0x59'),_0x47734f[_0xf407('0x51')],queues[_0x47734f[_0xf407('0x5a')]][_0xf407('0x22')],_0x47734f[_0xf407('0x53')]));queues[_0x47734f[_0xf407('0x5a')]][_0xf407('0xe')]=_0x47734f[_0xf407('0x53')];}}}else if(_0x47734f[_0xf407('0x5b')]==_0x47734f[_0xf407('0x53')]){if(!_['isNil'](queues[_0x47734f[_0xf407('0x5a')]])){utils[_0xf407('0x3')](util[_0xf407('0x11')](_0xf407('0x5c'),_0x47734f[_0xf407('0x51')],queues[_0x47734f[_0xf407('0x5a')]][_0xf407('0x22')],_0x47734f['secondtransfereruniqueid'],_0x47734f[_0xf407('0x5d')]));queues[_0x47734f[_0xf407('0x5a')]][_0xf407('0x42')]=!![];queues[_0x47734f[_0xf407('0x5a')]]['transfertype']=_0xf407('0x55');queues[_0x47734f[_0xf407('0x5a')]][_0xf407('0x4a')]=_0x47734f['secondtransfererexten'];queues[_0x47734f[_0xf407('0x5a')]][_0xf407('0x4c')]=_0x47734f[_0xf407('0x5b')];queues[_0x47734f[_0xf407('0x5a')]][_0xf407('0x9')]='ATTENDEDTRANSFER';}if(!_[_0xf407('0x19')](queues[_0x47734f[_0xf407('0x53')]])){if(_0x47734f['transfertargetlinkedid']&&queues[_0x47734f[_0xf407('0x5e')]]){queues[_0x47734f['transfertargetlinkedid']][_0xf407('0x23')]=0x1;queues[_0x47734f[_0xf407('0x5f')]]=_[_0xf407('0x60')](queues[_0x47734f['transfertargetlinkedid']]);queues[_0x47734f['transfertargetuniqueid']][_0xf407('0xe')]=_0x47734f[_0xf407('0x5f')];queues[_0x47734f[_0xf407('0x5f')]][_0xf407('0x23')]=0x2;queues[_0x47734f[_0xf407('0x5f')]][_0xf407('0x61')]=queues[_0x47734f[_0xf407('0x5a')]][_0xf407('0x61')];queues[_0x47734f[_0xf407('0x5f')]][_0xf407('0x57')]=queues[_0x47734f[_0xf407('0x5a')]]['calleridname'];queues[_0x47734f[_0xf407('0x5f')]][_0xf407('0x37')]=utils[_0xf407('0x15')]();queues[_0x47734f['transfertargetuniqueid']][_0xf407('0x1b')]=utils[_0xf407('0x15')]();queues[_0x47734f[_0xf407('0x5f')]]['holdtime']=0x0;queues[_0x47734f[_0xf407('0x5f')]][_0xf407('0x58')]=0x0;utils[_0xf407('0x3')](util['format'](_0xf407('0x62'),_0x47734f[_0xf407('0x51')],queues[_0x47734f['transfertargetuniqueid']][_0xf407('0x22')],queues[_0x47734f['transfertargetuniqueid']]['transfereduniqueid'],queues[_0x47734f[_0xf407('0x5f')]][_0xf407('0x61')],queues[_0x47734f[_0xf407('0x5f')]][_0xf407('0x57')]));}else{utils[_0xf407('0x3')](util[_0xf407('0x11')](_0xf407('0x59'),_0x47734f['origtransfereruniqueid'],queues[_0x47734f['secondtransfererlinkedid']][_0xf407('0x22')],_0x47734f[_0xf407('0x5a')]));queues[_0x47734f[_0xf407('0x53')]][_0xf407('0xe')]=_0x47734f[_0xf407('0x5a')];}}}}catch(_0x33984e){utils[_0xf407('0x16')](util[_0xf407('0x11')]('[%s][queues][attendedtransfer]',_0x47734f['origtransfereruniqueid']),_0x33984e);}};exports[_0xf407('0x63')]=function(_0x4acdbe){try{if(!_['isNil'](queues[_0x4acdbe[_0xf407('0xf')]])){utils[_0xf407('0x10')](util[_0xf407('0x11')]('[%s][queues][musiconholdstart]',_0x4acdbe['uniqueid']),_0x4acdbe);queues[_0x4acdbe[_0xf407('0xf')]]['musiconholdstartAt']=utils[_0xf407('0x15')]();utils['info'](util[_0xf407('0x11')](_0xf407('0x64'),_0x4acdbe['uniqueid'],queues[_0x4acdbe[_0xf407('0xf')]][_0xf407('0x22')],queues[_0x4acdbe[_0xf407('0xf')]]['musiconholdstartAt']));}}catch(_0xe3b957){utils[_0xf407('0x16')](util[_0xf407('0x11')](_0xf407('0x65'),_0x4acdbe[_0xf407('0xf')]),_0xe3b957);}};exports['musiconholdstop']=function(_0x10ef52){try{if(!_[_0xf407('0x19')](queues[_0x10ef52[_0xf407('0xf')]])){if(!_[_0xf407('0x19')](queues[_0x10ef52['uniqueid']][_0xf407('0x66')])){utils[_0xf407('0x10')](util['format'](_0xf407('0x67'),_0x10ef52[_0xf407('0xf')]),_0x10ef52);queues[_0x10ef52['uniqueid']][_0xf407('0x58')]+=utils[_0xf407('0x68')](utils[_0xf407('0x15')](),queues[_0x10ef52[_0xf407('0xf')]][_0xf407('0x66')]);utils[_0xf407('0x3')](util[_0xf407('0x11')](_0xf407('0x69'),_0x10ef52['uniqueid'],queues[_0x10ef52[_0xf407('0xf')]]['name'],queues[_0x10ef52[_0xf407('0xf')]][_0xf407('0x58')]));delete queues[_0x10ef52[_0xf407('0xf')]][_0xf407('0x66')];}}}catch(_0x396083){utils['error'](util[_0xf407('0x11')](_0xf407('0x67'),_0x10ef52[_0xf407('0xf')]),_0x396083);}};
\ No newline at end of file
index 9a861dd..4894b1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa34d=['lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','util','format','[%s][recordings][writeDB]','uniqueid','accountcode','getUserByInternal','then','membername','UserId','request','CreateVoiceRecording','newchannel','debug','info','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','newstate','isNil','channelstate','linkedid','transfer','[%s][recordings][newstate]','varset','variable','[%s][recordings][varset]\x20variable:%s\x20value:%s','endsWith','.wav49','value','find','monitors','push','[%s][recordings][varset]','hangup','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','cause-txt','calleridnum','connectedlinenum','connectedlinename','type','outbound','clone','[%s][recordings][hangup]','newexten','[%s][recordings][newexten]','application','appdata','toLowerCase','set','cdr','split','substring'];(function(_0x15646c,_0x4087e0){var _0x3fdb97=function(_0x194b4b){while(--_0x194b4b){_0x15646c['push'](_0x15646c['shift']());}};_0x3fdb97(++_0x4087e0);}(_0xa34d,0xb6));var _0xda34=function(_0x18a903,_0x571807){_0x18a903=_0x18a903-0x0;var _0x1d2f8c=_0xa34d[_0x18a903];return _0x1d2f8c;};'use strict';var _=require('lodash');var util=require(_0xda34('0x0'));var utils=require('./utils');var recordings={};function writeDB(_0x26c446){utils['info'](util[_0xda34('0x1')](_0xda34('0x2'),_0x26c446[_0xda34('0x3')]));if(_0x26c446[_0xda34('0x4')]){utils[_0xda34('0x5')](_0x26c446['accountcode'])[_0xda34('0x6')](function(_0xcc8291){if(_0xcc8291){_0x26c446[_0xda34('0x7')]=_0xcc8291['name'];_0x26c446[_0xda34('0x8')]=_0xcc8291['id'];}utils[_0xda34('0x9')](_0xda34('0xa'),_0x26c446);});}else{utils[_0xda34('0x9')]('CreateVoiceRecording',_0x26c446);}}exports[_0xda34('0xb')]=function(_0x3476d4){try{utils[_0xda34('0xc')](util[_0xda34('0x1')]('[%s][recordings][newchannel]',_0x3476d4[_0xda34('0x3')]),_0x3476d4);if(_0x3476d4[_0xda34('0x3')]==_0x3476d4['linkedid']){utils[_0xda34('0xd')](util['format'](_0xda34('0xe'),_0x3476d4[_0xda34('0x3')],_0x3476d4[_0xda34('0xf')],_0x3476d4[_0xda34('0x10')]));recordings[_0x3476d4[_0xda34('0x3')]]={'uniqueid':_0x3476d4[_0xda34('0x3')],'accountcode':_0x3476d4[_0xda34('0x4')],'exten':_0x3476d4[_0xda34('0x10')],'context':_0x3476d4[_0xda34('0xf')],'channel':_0x3476d4[_0xda34('0x11')],'monitors':[]};}}catch(_0x49be2f){utils[_0xda34('0x12')](util['format']('[%s][recordings][newchannel]',_0x3476d4[_0xda34('0x3')]),_0x49be2f);}};exports[_0xda34('0x13')]=function(_0x5c84e3){try{utils[_0xda34('0xc')](util['format']('[%s][recordings][newstate]',_0x5c84e3['uniqueid']),_0x5c84e3);if(!_[_0xda34('0x14')](recordings[_0x5c84e3[_0xda34('0x3')]])&&_0x5c84e3[_0xda34('0x15')]==0x6){utils[_0xda34('0xd')](util[_0xda34('0x1')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x5c84e3[_0xda34('0x3')],_0x5c84e3['context'],_0x5c84e3[_0xda34('0x11')]));}else if(!_[_0xda34('0x14')](recordings[_0x5c84e3[_0xda34('0x16')]])&&_0x5c84e3[_0xda34('0x15')]==0x6&&_0x5c84e3[_0xda34('0xf')]!=_0xda34('0x17')){utils['info'](util[_0xda34('0x1')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x5c84e3[_0xda34('0x3')],_0x5c84e3['linkedid'],_0x5c84e3[_0xda34('0xf')],_0x5c84e3[_0xda34('0x11')]));recordings[_0x5c84e3['linkedid']][_0xda34('0x4')]=_0x5c84e3[_0xda34('0x4')];}}catch(_0x5c79f7){utils['error'](util[_0xda34('0x1')](_0xda34('0x18'),_0x5c84e3['uniqueid']),_0x5c79f7);}};exports[_0xda34('0x19')]=function(_0x3c11de){try{if(!_[_0xda34('0x14')](_0x3c11de[_0xda34('0x1a')])&&!_['isNil'](_0x3c11de[_0xda34('0x1a')]['mixmonitor_filename'])){utils['debug'](util[_0xda34('0x1')]('[%s][recordings][varset]',_0x3c11de[_0xda34('0x3')]),_0x3c11de);utils[_0xda34('0xd')](util[_0xda34('0x1')](_0xda34('0x1b'),_0x3c11de[_0xda34('0x3')],_0x3c11de[_0xda34('0x1a')],_0x3c11de['value']));if(_[_0xda34('0x1c')](_0x3c11de['value'],_0xda34('0x1d'))){_0x3c11de[_0xda34('0x1e')]=_0x3c11de[_0xda34('0x1e')]['replace'](_0xda34('0x1d'),'.WAV');}if(recordings[_0x3c11de[_0xda34('0x16')]]){var _0x4b4041=_[_0xda34('0x1f')](recordings[_0x3c11de['linkedid']][_0xda34('0x20')],{'value':_0x3c11de['value']});if(_[_0xda34('0x14')](_0x4b4041)){recordings[_0x3c11de[_0xda34('0x16')]][_0xda34('0x20')][_0xda34('0x21')]({'value':_0x3c11de[_0xda34('0x1e')]});}}}}catch(_0x50dc37){utils[_0xda34('0x12')](util[_0xda34('0x1')](_0xda34('0x22'),_0x3c11de[_0xda34('0x3')]),_0x50dc37);}};exports[_0xda34('0x23')]=function(_0x53f422){try{if(!_[_0xda34('0x14')](recordings[_0x53f422[_0xda34('0x3')]])){utils[_0xda34('0xc')](util[_0xda34('0x1')]('[%s][recordings][hangup]',_0x53f422[_0xda34('0x3')]),_0x53f422);utils[_0xda34('0xd')](util['format'](_0xda34('0x24'),_0x53f422['uniqueid'],_0x53f422['calleridnum'],_0x53f422['calleridname'],_0x53f422[_0xda34('0x25')]));recordings[_0x53f422['uniqueid']][_0xda34('0x26')]=_0x53f422[_0xda34('0x26')];recordings[_0x53f422['uniqueid']]['calleridname']=_0x53f422['calleridname'];recordings[_0x53f422[_0xda34('0x3')]][_0xda34('0x27')]=_0x53f422[_0xda34('0x27')];recordings[_0x53f422[_0xda34('0x3')]][_0xda34('0x28')]=_0x53f422['connectedlinename'];if(recordings[_0x53f422[_0xda34('0x3')]][_0xda34('0x29')]==_0xda34('0x2a')&&recordings[_0x53f422['uniqueid']]['accountcode']){recordings[_0x53f422[_0xda34('0x3')]][_0xda34('0x27')]=recordings[_0x53f422['uniqueid']]['accountcode'];recordings[_0x53f422['uniqueid']]['connectedlinename']='';}recordings[_0x53f422[_0xda34('0x3')]][_0xda34('0x20')]['forEach'](function(_0x1c9b91){var _0x2ac84a=_[_0xda34('0x2b')](recordings[_0x53f422[_0xda34('0x3')]]);_0x2ac84a[_0xda34('0x1e')]=_0x1c9b91[_0xda34('0x1e')];writeDB(_0x2ac84a);});delete recordings[_0x53f422[_0xda34('0x3')]];}}catch(_0x560d86){utils[_0xda34('0x12')](util[_0xda34('0x1')](_0xda34('0x2c'),_0x53f422[_0xda34('0x3')]),_0x560d86);}};exports[_0xda34('0x2d')]=function(_0x4f74f2){try{if(!_[_0xda34('0x14')](recordings[_0x4f74f2[_0xda34('0x3')]])){utils['debug'](util[_0xda34('0x1')](_0xda34('0x2e'),_0x4f74f2[_0xda34('0x3')]),_0x4f74f2);utils[_0xda34('0xd')](util['format']('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x4f74f2[_0xda34('0x3')],_0x4f74f2[_0xda34('0x2f')],_0x4f74f2[_0xda34('0x30')]));if(_0x4f74f2[_0xda34('0x2f')][_0xda34('0x31')]()==_0xda34('0x32')&&_['startsWith'](_0x4f74f2[_0xda34('0x30')][_0xda34('0x31')](),_0xda34('0x33'))){var _0x56f16f=_0x4f74f2[_0xda34('0x30')][_0xda34('0x34')]('=');var _0x56fd72=_0x56f16f[0x0][_0xda34('0x35')](_0x56f16f[0x0][_0xda34('0x36')]('(')+0x1,_0x56f16f[0x0][_0xda34('0x36')](')'));var _0x225779=_0x56f16f[0x1];recordings[_0x4f74f2[_0xda34('0x3')]][_0x56fd72]=_0x225779;}}}catch(_0x1f19d8){utils[_0xda34('0x12')](util[_0xda34('0x1')](_0xda34('0x2e'),_0x4f74f2[_0xda34('0x3')]),_0x1f19d8);}};exports[_0xda34('0x37')]=function(_0x12ab09){try{if(!_[_0xda34('0x14')](recordings[_0x12ab09[_0xda34('0x3')]])){utils['debug'](util[_0xda34('0x1')](_0xda34('0x38'),_0x12ab09['uniqueid']),_0x12ab09);utils[_0xda34('0xd')](util['format'](_0xda34('0x39'),_0x12ab09[_0xda34('0x3')],_0x12ab09[_0xda34('0x3a')]));recordings[_0x12ab09[_0xda34('0x3')]]['queue']=_0x12ab09[_0xda34('0x3a')];}}catch(_0x4f83c0){utils[_0xda34('0x12')](util['format'](_0xda34('0x38'),_0x12ab09[_0xda34('0x3')]),_0x4f83c0);}};
\ No newline at end of file
+var _0xb3c6=['membername','UserId','request','CreateVoiceRecording','newchannel','debug','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','newstate','[%s][recordings][newstate]','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','transfer','varset','isNil','variable','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','.WAV','find','monitors','[%s][recordings][hangup]','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','outbound','forEach','clone','newexten','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','set','startsWith','appdata','toLowerCase','cdr','split','substring','lastIndexOf','[%s][recordings][newexten]','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','lodash','util','./utils','info','format','[%s][recordings][writeDB]','uniqueid','accountcode','getUserByInternal','then'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0xb3c6,0x136));var _0x6b3c=function(_0x2338ae,_0x1896f8){_0x2338ae=_0x2338ae-0x0;var _0x4adad9=_0xb3c6[_0x2338ae];return _0x4adad9;};'use strict';var _=require(_0x6b3c('0x0'));var util=require(_0x6b3c('0x1'));var utils=require(_0x6b3c('0x2'));var recordings={};function writeDB(_0x59ed6e){utils[_0x6b3c('0x3')](util[_0x6b3c('0x4')](_0x6b3c('0x5'),_0x59ed6e[_0x6b3c('0x6')]));if(_0x59ed6e[_0x6b3c('0x7')]){utils[_0x6b3c('0x8')](_0x59ed6e['accountcode'])[_0x6b3c('0x9')](function(_0x2708bc){if(_0x2708bc){_0x59ed6e[_0x6b3c('0xa')]=_0x2708bc['name'];_0x59ed6e[_0x6b3c('0xb')]=_0x2708bc['id'];}utils[_0x6b3c('0xc')](_0x6b3c('0xd'),_0x59ed6e);});}else{utils[_0x6b3c('0xc')]('CreateVoiceRecording',_0x59ed6e);}}exports[_0x6b3c('0xe')]=function(_0xd4f542){try{utils[_0x6b3c('0xf')](util['format'](_0x6b3c('0x10'),_0xd4f542[_0x6b3c('0x6')]),_0xd4f542);if(_0xd4f542[_0x6b3c('0x6')]==_0xd4f542[_0x6b3c('0x11')]){utils[_0x6b3c('0x3')](util[_0x6b3c('0x4')](_0x6b3c('0x12'),_0xd4f542[_0x6b3c('0x6')],_0xd4f542[_0x6b3c('0x13')],_0xd4f542[_0x6b3c('0x14')]));recordings[_0xd4f542[_0x6b3c('0x6')]]={'uniqueid':_0xd4f542[_0x6b3c('0x6')],'accountcode':_0xd4f542[_0x6b3c('0x7')],'exten':_0xd4f542[_0x6b3c('0x14')],'context':_0xd4f542[_0x6b3c('0x13')],'channel':_0xd4f542[_0x6b3c('0x15')],'monitors':[]};}}catch(_0x43a9ac){utils[_0x6b3c('0x16')](util['format'](_0x6b3c('0x10'),_0xd4f542['uniqueid']),_0x43a9ac);}};exports[_0x6b3c('0x17')]=function(_0x3bc545){try{utils['debug'](util['format'](_0x6b3c('0x18'),_0x3bc545[_0x6b3c('0x6')]),_0x3bc545);if(!_['isNil'](recordings[_0x3bc545[_0x6b3c('0x6')]])&&_0x3bc545[_0x6b3c('0x19')]==0x6){utils[_0x6b3c('0x3')](util[_0x6b3c('0x4')](_0x6b3c('0x1a'),_0x3bc545[_0x6b3c('0x6')],_0x3bc545[_0x6b3c('0x13')],_0x3bc545[_0x6b3c('0x15')]));}else if(!_['isNil'](recordings[_0x3bc545[_0x6b3c('0x11')]])&&_0x3bc545[_0x6b3c('0x19')]==0x6&&_0x3bc545[_0x6b3c('0x13')]!=_0x6b3c('0x1b')){utils[_0x6b3c('0x3')](util[_0x6b3c('0x4')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x3bc545['uniqueid'],_0x3bc545[_0x6b3c('0x11')],_0x3bc545['context'],_0x3bc545['channel']));recordings[_0x3bc545[_0x6b3c('0x11')]][_0x6b3c('0x7')]=_0x3bc545[_0x6b3c('0x7')];}}catch(_0x41dc6e){utils[_0x6b3c('0x16')](util['format']('[%s][recordings][newstate]',_0x3bc545['uniqueid']),_0x41dc6e);}};exports[_0x6b3c('0x1c')]=function(_0x2afc56){try{if(!_[_0x6b3c('0x1d')](_0x2afc56[_0x6b3c('0x1e')])&&!_[_0x6b3c('0x1d')](_0x2afc56['variable']['mixmonitor_filename'])){utils['debug'](util[_0x6b3c('0x4')](_0x6b3c('0x1f'),_0x2afc56[_0x6b3c('0x6')]),_0x2afc56);utils[_0x6b3c('0x3')](util[_0x6b3c('0x4')](_0x6b3c('0x20'),_0x2afc56[_0x6b3c('0x6')],_0x2afc56['variable'],_0x2afc56[_0x6b3c('0x21')]));if(_[_0x6b3c('0x22')](_0x2afc56[_0x6b3c('0x21')],_0x6b3c('0x23'))){_0x2afc56[_0x6b3c('0x21')]=_0x2afc56['value'][_0x6b3c('0x24')](_0x6b3c('0x23'),_0x6b3c('0x25'));}if(recordings[_0x2afc56['linkedid']]){var _0x290840=_[_0x6b3c('0x26')](recordings[_0x2afc56[_0x6b3c('0x11')]][_0x6b3c('0x27')],{'value':_0x2afc56['value']});if(_[_0x6b3c('0x1d')](_0x290840)){recordings[_0x2afc56['linkedid']]['monitors']['push']({'value':_0x2afc56[_0x6b3c('0x21')]});}}}}catch(_0x1e2317){utils[_0x6b3c('0x16')](util[_0x6b3c('0x4')](_0x6b3c('0x1f'),_0x2afc56[_0x6b3c('0x6')]),_0x1e2317);}};exports['hangup']=function(_0x525964){try{if(!_[_0x6b3c('0x1d')](recordings[_0x525964['uniqueid']])){utils[_0x6b3c('0xf')](util[_0x6b3c('0x4')](_0x6b3c('0x28'),_0x525964[_0x6b3c('0x6')]),_0x525964);utils[_0x6b3c('0x3')](util[_0x6b3c('0x4')]('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x525964[_0x6b3c('0x6')],_0x525964[_0x6b3c('0x29')],_0x525964[_0x6b3c('0x2a')],_0x525964[_0x6b3c('0x2b')]));recordings[_0x525964['uniqueid']]['calleridnum']=_0x525964[_0x6b3c('0x29')];recordings[_0x525964[_0x6b3c('0x6')]][_0x6b3c('0x2a')]=_0x525964[_0x6b3c('0x2a')];recordings[_0x525964[_0x6b3c('0x6')]][_0x6b3c('0x2c')]=_0x525964[_0x6b3c('0x2c')];recordings[_0x525964['uniqueid']][_0x6b3c('0x2d')]=_0x525964[_0x6b3c('0x2d')];if(recordings[_0x525964['uniqueid']]['type']==_0x6b3c('0x2e')&&recordings[_0x525964[_0x6b3c('0x6')]]['accountcode']){recordings[_0x525964[_0x6b3c('0x6')]][_0x6b3c('0x2c')]=recordings[_0x525964['uniqueid']][_0x6b3c('0x7')];recordings[_0x525964[_0x6b3c('0x6')]][_0x6b3c('0x2d')]='';}recordings[_0x525964[_0x6b3c('0x6')]][_0x6b3c('0x27')][_0x6b3c('0x2f')](function(_0x106fe8){var _0x3ff91c=_[_0x6b3c('0x30')](recordings[_0x525964[_0x6b3c('0x6')]]);_0x3ff91c['value']=_0x106fe8[_0x6b3c('0x21')];writeDB(_0x3ff91c);});delete recordings[_0x525964[_0x6b3c('0x6')]];}}catch(_0x1ed3e6){utils['error'](util['format'](_0x6b3c('0x28'),_0x525964[_0x6b3c('0x6')]),_0x1ed3e6);}};exports[_0x6b3c('0x31')]=function(_0x2d699b){try{if(!_[_0x6b3c('0x1d')](recordings[_0x2d699b[_0x6b3c('0x6')]])){utils['debug'](util[_0x6b3c('0x4')]('[%s][recordings][newexten]',_0x2d699b[_0x6b3c('0x6')]),_0x2d699b);utils['info'](util[_0x6b3c('0x4')](_0x6b3c('0x32'),_0x2d699b[_0x6b3c('0x6')],_0x2d699b['application'],_0x2d699b['appdata']));if(_0x2d699b[_0x6b3c('0x33')]['toLowerCase']()==_0x6b3c('0x34')&&_[_0x6b3c('0x35')](_0x2d699b[_0x6b3c('0x36')][_0x6b3c('0x37')](),_0x6b3c('0x38'))){var _0xebf726=_0x2d699b[_0x6b3c('0x36')][_0x6b3c('0x39')]('=');var _0x1512b5=_0xebf726[0x0][_0x6b3c('0x3a')](_0xebf726[0x0]['lastIndexOf']('(')+0x1,_0xebf726[0x0][_0x6b3c('0x3b')](')'));var _0x352726=_0xebf726[0x1];recordings[_0x2d699b[_0x6b3c('0x6')]][_0x1512b5]=_0x352726;}}}catch(_0x249883){utils['error'](util[_0x6b3c('0x4')](_0x6b3c('0x3c'),_0x2d699b['uniqueid']),_0x249883);}};exports['queuecallerjoin']=function(_0x4482f4){try{if(!_[_0x6b3c('0x1d')](recordings[_0x4482f4[_0x6b3c('0x6')]])){utils[_0x6b3c('0xf')](util[_0x6b3c('0x4')](_0x6b3c('0x3d'),_0x4482f4[_0x6b3c('0x6')]),_0x4482f4);utils[_0x6b3c('0x3')](util[_0x6b3c('0x4')](_0x6b3c('0x3e'),_0x4482f4[_0x6b3c('0x6')],_0x4482f4[_0x6b3c('0x3f')]));recordings[_0x4482f4[_0x6b3c('0x6')]][_0x6b3c('0x3f')]=_0x4482f4[_0x6b3c('0x3f')];}}catch(_0x304ca2){utils[_0x6b3c('0x16')](util['format'](_0x6b3c('0x3d'),_0x4482f4[_0x6b3c('0x6')]),_0x304ca2);}};
\ No newline at end of file
index 738a166..e6d5785 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef37=['CreateVoiceTransferReport','blinds','debug','format','[%s][transfers][blindtransfer]','info','transferercalleridnum','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridname','assign','origtransfererchannel','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','isNil','transfereechannel','transfertargetcalleridnum','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','util','./utils','[%s][transfers][writeDB]\x20type:%s','type','attended','origtransfereruniqueid','uniqueid','request'];(function(_0x283918,_0x12d1f8){var _0x570bb4=function(_0x1e7399){while(--_0x1e7399){_0x283918['push'](_0x283918['shift']());}};_0x570bb4(++_0x12d1f8);}(_0xef37,0xfa));var _0x7ef3=function(_0x353fba,_0x46db7e){_0x353fba=_0x353fba-0x0;var _0x4694e4=_0xef37[_0x353fba];return _0x4694e4;};'use strict';var _=require('lodash');var util=require(_0x7ef3('0x0'));var utils=require(_0x7ef3('0x1'));function writeDB(_0x5c50b2){utils['info'](util['format'](_0x7ef3('0x2'),_0x5c50b2[_0x7ef3('0x3')]===_0x7ef3('0x4')?_0x5c50b2[_0x7ef3('0x5')]:_0x5c50b2[_0x7ef3('0x6')],_0x5c50b2[_0x7ef3('0x3')]));utils[_0x7ef3('0x7')](_0x7ef3('0x8'),_0x5c50b2);}exports[_0x7ef3('0x9')]={};exports['blindtransfer']=function(_0xbe2df8){try{utils[_0x7ef3('0xa')](util[_0x7ef3('0xb')](_0x7ef3('0xc'),_0xbe2df8[_0x7ef3('0x6')]),_0xbe2df8);utils[_0x7ef3('0xd')](util[_0x7ef3('0xb')]('[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0xbe2df8[_0x7ef3('0x6')],_0xbe2df8[_0x7ef3('0xe')],_0xbe2df8['transferercalleridname'],_0xbe2df8[_0x7ef3('0xf')],_0xbe2df8[_0x7ef3('0x10')]));_0xbe2df8[_0x7ef3('0x3')]=_0x7ef3('0x11');exports[_0x7ef3('0x9')][_0xbe2df8[_0x7ef3('0x12')]]=_0xbe2df8;writeDB(_0xbe2df8);}catch(_0x4dbba2){utils[_0x7ef3('0x13')](util[_0x7ef3('0xb')]('[%s][transfers][blindtransfer]',_0xbe2df8[_0x7ef3('0x6')]),_0x4dbba2);}};exports[_0x7ef3('0x14')]=function(_0x455427){try{utils['debug'](util[_0x7ef3('0xb')](_0x7ef3('0x15'),_0x455427[_0x7ef3('0x5')]),_0x455427);utils[_0x7ef3('0xd')](util[_0x7ef3('0xb')](_0x7ef3('0x16'),_0x455427['origtransfereruniqueid'],_0x455427[_0x7ef3('0x17')],_0x455427[_0x7ef3('0x18')],_0x455427['transfertargetcalleridnum'],_0x455427[_0x7ef3('0x19')]));_0x455427=_[_0x7ef3('0x1a')](_0x455427,{'transfererchannel':_0x455427[_0x7ef3('0x1b')],'transferercalleridnum':_0x455427[_0x7ef3('0x17')],'transferercalleridname':_0x455427[_0x7ef3('0x18')],'transfererconnectedlinenum':_0x455427['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x455427[_0x7ef3('0x1c')],'transfereraccountcode':_0x455427[_0x7ef3('0x1d')],'transferercontext':_0x455427[_0x7ef3('0x1e')],'transfererexten':_0x455427[_0x7ef3('0x1f')],'transfererlinkedid':_0x455427[_0x7ef3('0x20')],'context':_0x455427[_0x7ef3('0x21')],'extension':_0x455427['origtransfererexten'],'type':_0x7ef3('0x4')});if(_[_0x7ef3('0x22')](_0x455427[_0x7ef3('0x23')])){_0x455427=_[_0x7ef3('0x1a')](_0x455427,{'transfereechannel':_0x455427['transfertargetchannel'],'transfereecalleridnum':_0x455427[_0x7ef3('0x24')],'transfereecalleridname':_0x455427[_0x7ef3('0x19')],'transfereeconnectedlinenum':_0x455427[_0x7ef3('0x25')],'transfereeconnectedlinename':_0x455427[_0x7ef3('0x26')],'transfereeaccountcode':_0x455427[_0x7ef3('0x27')],'transfereecontext':_0x455427[_0x7ef3('0x28')],'transfereeexten':_0x455427[_0x7ef3('0x29')],'transfereelinkedid':_0x455427[_0x7ef3('0x2a')]});}writeDB(_0x455427);}catch(_0x40992d){utils[_0x7ef3('0x13')](util[_0x7ef3('0xb')](_0x7ef3('0x15'),_0x455427['origtransfereruniqueid']),_0x40992d);}};
\ No newline at end of file
+var _0x1948=['assign','origtransfererchannel','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfereechannel','transfertargetchannel','transfertargetcalleridnum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','lodash','util','./utils','info','format','type','attended','origtransfereruniqueid','uniqueid','request','CreateVoiceTransferReport','debug','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blinds','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','transfertargetcalleridname'];(function(_0x1132f9,_0x15d882){var _0x5c96bf=function(_0xe833bc){while(--_0xe833bc){_0x1132f9['push'](_0x1132f9['shift']());}};_0x5c96bf(++_0x15d882);}(_0x1948,0x160));var _0x8194=function(_0x96a62f,_0x4a91a2){_0x96a62f=_0x96a62f-0x0;var _0x2ccc83=_0x1948[_0x96a62f];return _0x2ccc83;};'use strict';var _=require(_0x8194('0x0'));var util=require(_0x8194('0x1'));var utils=require(_0x8194('0x2'));function writeDB(_0x306259){utils[_0x8194('0x3')](util[_0x8194('0x4')]('[%s][transfers][writeDB]\x20type:%s',_0x306259[_0x8194('0x5')]===_0x8194('0x6')?_0x306259[_0x8194('0x7')]:_0x306259[_0x8194('0x8')],_0x306259[_0x8194('0x5')]));utils[_0x8194('0x9')](_0x8194('0xa'),_0x306259);}exports['blinds']={};exports['blindtransfer']=function(_0x4180b4){try{utils[_0x8194('0xb')](util['format'](_0x8194('0xc'),_0x4180b4[_0x8194('0x8')]),_0x4180b4);utils[_0x8194('0x3')](util['format'](_0x8194('0xd'),_0x4180b4['uniqueid'],_0x4180b4[_0x8194('0xe')],_0x4180b4[_0x8194('0xf')],_0x4180b4[_0x8194('0x10')],_0x4180b4[_0x8194('0x11')]));_0x4180b4[_0x8194('0x5')]='blind';exports[_0x8194('0x12')][_0x4180b4[_0x8194('0x13')]]=_0x4180b4;writeDB(_0x4180b4);}catch(_0xa685c4){utils[_0x8194('0x14')](util[_0x8194('0x4')]('[%s][transfers][blindtransfer]',_0x4180b4['uniqueid']),_0xa685c4);}};exports[_0x8194('0x15')]=function(_0x43a5d5){try{utils['debug'](util[_0x8194('0x4')](_0x8194('0x16'),_0x43a5d5['origtransfereruniqueid']),_0x43a5d5);utils['info'](util['format'](_0x8194('0x17'),_0x43a5d5[_0x8194('0x7')],_0x43a5d5[_0x8194('0x18')],_0x43a5d5['origtransferercalleridname'],_0x43a5d5['transfertargetcalleridnum'],_0x43a5d5[_0x8194('0x19')]));_0x43a5d5=_[_0x8194('0x1a')](_0x43a5d5,{'transfererchannel':_0x43a5d5[_0x8194('0x1b')],'transferercalleridnum':_0x43a5d5[_0x8194('0x18')],'transferercalleridname':_0x43a5d5['origtransferercalleridname'],'transfererconnectedlinenum':_0x43a5d5['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x43a5d5['secondtransfererconnectedlinename'],'transfereraccountcode':_0x43a5d5[_0x8194('0x1c')],'transferercontext':_0x43a5d5[_0x8194('0x1d')],'transfererexten':_0x43a5d5['secondtransfererexten'],'transfererlinkedid':_0x43a5d5[_0x8194('0x1e')],'context':_0x43a5d5[_0x8194('0x1f')],'extension':_0x43a5d5[_0x8194('0x20')],'type':'attended'});if(_[_0x8194('0x21')](_0x43a5d5[_0x8194('0x22')])){_0x43a5d5=_[_0x8194('0x1a')](_0x43a5d5,{'transfereechannel':_0x43a5d5[_0x8194('0x23')],'transfereecalleridnum':_0x43a5d5[_0x8194('0x24')],'transfereecalleridname':_0x43a5d5['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x43a5d5['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x43a5d5[_0x8194('0x25')],'transfereeaccountcode':_0x43a5d5[_0x8194('0x26')],'transfereecontext':_0x43a5d5[_0x8194('0x27')],'transfereeexten':_0x43a5d5[_0x8194('0x28')],'transfereelinkedid':_0x43a5d5[_0x8194('0x29')]});}writeDB(_0x43a5d5);}catch(_0x2ddd99){utils[_0x8194('0x14')](util[_0x8194('0x4')](_0x8194('0x16'),_0x43a5d5['origtransfereruniqueid']),_0x2ddd99);}};
\ No newline at end of file
index 5b9238d..0a04a81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5921=['error','request','then','catch','[utils][request]\x20name:%s','GetUser','name','interface','[utils][getUser]\x20where:%s','stringify','length','getUserByInternal','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','result','[utils][getVoiceQueueByName]','addTime','add','seconds','format','subtractTime','diffTime','YYYY-MM-DD\x20HH:mm:ss','isAfter','isBefore','bluebird','jayson/promise','moment','client','http','../../config/logger','xdr','info','inspect','debug'];(function(_0x478a55,_0x20b4cd){var _0x131bc2=function(_0x45a837){while(--_0x45a837){_0x478a55['push'](_0x478a55['shift']());}};_0x131bc2(++_0x20b4cd);}(_0x5921,0x16e));var _0x1592=function(_0x2b7764,_0x2606f1){_0x2b7764=_0x2b7764-0x0;var _0x848dcb=_0x5921[_0x2b7764];return _0x848dcb;};'use strict';var BPromise=require(_0x1592('0x0'));var jayson=require(_0x1592('0x1'));var moment=require(_0x1592('0x2'));var util=require('util');var client=jayson[_0x1592('0x3')][_0x1592('0x4')]({'port':0x2329});var logger=require(_0x1592('0x5'))(_0x1592('0x6'));exports[_0x1592('0x7')]=function(_0x1db849,_0x36fda2){logger['info'](_0x1db849,_0x36fda2?util[_0x1592('0x8')](_0x36fda2,{'showHidden':![],'depth':null}):'');};exports[_0x1592('0x9')]=function(_0x1a232f,_0x715556){logger[_0x1592('0x9')](_0x1a232f,_0x715556?util[_0x1592('0x8')](_0x715556,{'showHidden':![],'depth':null}):'');};exports[_0x1592('0xa')]=function(_0x28b1b3,_0x4edd23){logger[_0x1592('0xa')](_0x28b1b3,_0x4edd23?util[_0x1592('0x8')](_0x4edd23,{'showHidden':![],'depth':null}):'');};exports[_0x1592('0xb')]=function(_0x3d3006,_0x6008d8){return client[_0x1592('0xb')](_0x3d3006,{'body':_0x6008d8})[_0x1592('0xc')](function(_0xd739d2){logger[_0x1592('0x9')]('[utils][request]\x20name:%s',_0x3d3006,_0xd739d2?util['inspect'](_0xd739d2,{'showHidden':![],'depth':null}):'');})[_0x1592('0xd')](function(_0xfa63eb){logger[_0x1592('0xa')](_0x1592('0xe'),_0x3d3006,_0xfa63eb?util[_0x1592('0x8')](_0xfa63eb,{'showHidden':![],'depth':null}):'');});};function getUser(_0x4c7f1f){return client['request'](_0x1592('0xf'),{'options':{'raw':!![],'attributes':['id','internal',_0x1592('0x10'),_0x1592('0x11')],'where':_0x4c7f1f,'limit':0x1}})[_0x1592('0xc')](function(_0x354905){logger[_0x1592('0x9')](_0x1592('0x12'),JSON[_0x1592('0x13')](_0x4c7f1f),_0x354905?util[_0x1592('0x8')](_0x354905,{'showHidden':![],'depth':null}):'');return _0x354905['result'][_0x1592('0x14')]?_0x354905['result'][0x0]:null;});}exports[_0x1592('0x15')]=function(_0x307923){return new BPromise(function(_0x2682d8,_0x1dfa5e){if(_0x307923){return getUser({'internal':_0x307923})[_0x1592('0xc')](function(_0x1b2d45){logger[_0x1592('0x7')]('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x307923,_0x1b2d45?_0x1592('0x16'):_0x1592('0x17'));return _0x2682d8(_0x1b2d45);})[_0x1592('0xd')](function(_0x33536e){logger['error'](_0x1592('0x18'),_0x33536e?util[_0x1592('0x8')](_0x33536e,{'showHidden':![],'depth':null}):'');return _0x2682d8(null);});}return _0x2682d8(null);});};exports[_0x1592('0x19')]=function(_0x4797be){return new BPromise(function(_0x95a37e,_0x309f90){if(_0x4797be){return getUser({'interface':_0x4797be})[_0x1592('0xc')](function(_0x3cf1bd){logger[_0x1592('0x7')](_0x1592('0x1a'),_0x4797be,_0x3cf1bd?'found':'notfound');return _0x95a37e(_0x3cf1bd);})[_0x1592('0xd')](function(_0x2e627d){logger[_0x1592('0xa')]('[utils][getUserByInterface]',_0x2e627d?util[_0x1592('0x8')](_0x2e627d,{'showHidden':![],'depth':null}):'');return _0x95a37e(null);});}return _0x95a37e(null);});};exports[_0x1592('0x1b')]=function(_0x2d2d67){return new BPromise(function(_0x2e4867,_0x5152ee){if(_0x2d2d67){return getUser({'name':_0x2d2d67})[_0x1592('0xc')](function(_0x4752df){logger['info'](_0x1592('0x1c'),_0x2d2d67,_0x4752df?_0x1592('0x16'):'notfound');return _0x2e4867(_0x4752df);})[_0x1592('0xd')](function(_0x39c241){logger[_0x1592('0xa')](_0x1592('0x1d'),_0x39c241?util[_0x1592('0x8')](_0x39c241,{'showHidden':![],'depth':null}):'');return _0x2e4867(null);});}return _0x2e4867(null);});};exports[_0x1592('0x1e')]=function(_0x4f1823){return new BPromise(function(_0x45f72e,_0x1b7895){if(_0x4f1823){return client[_0x1592('0xb')](_0x1592('0x1f'),{'options':{'raw':!![],'attributes':['id',_0x1592('0x10'),_0x1592('0x20'),'acw',_0x1592('0x21')],'where':{'name':_0x4f1823},'limit':0x1}})[_0x1592('0xc')](function(_0x58b561){logger[_0x1592('0x9')](_0x1592('0x22'),_0x4f1823,_0x58b561?util['inspect'](_0x58b561,{'showHidden':![],'depth':null}):'');logger[_0x1592('0x7')](_0x1592('0x23'),_0x4f1823,_0x58b561?'found':_0x1592('0x17'));return _0x45f72e(_0x58b561[_0x1592('0x24')]['length']?_0x58b561[_0x1592('0x24')][0x0]:null);})[_0x1592('0xd')](function(_0x554090){logger['error'](_0x1592('0x25'),_0x554090?util['inspect'](_0x554090,{'showHidden':![],'depth':null}):'');return _0x45f72e(null);});}return _0x45f72e(null);});};exports[_0x1592('0x26')]=function(_0x247952,_0xfa827f){return moment(_0x247952)[_0x1592('0x27')](_0xfa827f,_0x1592('0x28'))[_0x1592('0x29')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x1592('0x2a')]=function(_0x448f7d,_0x3a4e53){return moment(_0x448f7d)['subtract'](_0x3a4e53,_0x1592('0x28'))[_0x1592('0x29')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x1592('0x2b')]=function(_0x50300a,_0x56b12d){return moment(_0x50300a)['diff'](moment(_0x56b12d),_0x1592('0x28'));};exports['sumTime']=function(_0x2f62dc,_0x5354b1){return parseInt(_0x2f62dc,0xa)+parseInt(_0x5354b1,0xa);};exports['now']=function(){return moment()[_0x1592('0x29')](_0x1592('0x2c'));};exports[_0x1592('0x2d')]=function(_0x18f672,_0x59c5b3){if(_0x59c5b3){return moment(_0x18f672)[_0x1592('0x2d')](_0x59c5b3);}return!![];};exports[_0x1592('0x2e')]=function(_0x2a1b43,_0x350311){if(_0x350311){return moment(_0x2a1b43)[_0x1592('0x2e')](_0x350311);}else if(_0x2a1b43){return!![];}return![];};
\ No newline at end of file
+var _0xd668=['debug','error','request','then','[utils][request]\x20name:%s','catch','internal','interface','[utils][getUser]\x20where:%s','stringify','result','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','getUserByInterface','info','[utils][getUserByInterface]\x20interface:%s\x20%s','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','length','[utils][getVoiceQueueByName]','addTime','add','seconds','YYYY-MM-DD\x20HH:mm:ss','format','sumTime','now','isAfter','isBefore','bluebird','moment','util','client','http','../../config/logger','inspect'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xd668,0x18e));var _0x8d66=function(_0xcf82b2,_0x49ab9a){_0xcf82b2=_0xcf82b2-0x0;var _0x4275e9=_0xd668[_0xcf82b2];return _0x4275e9;};'use strict';var BPromise=require(_0x8d66('0x0'));var jayson=require('jayson/promise');var moment=require(_0x8d66('0x1'));var util=require(_0x8d66('0x2'));var client=jayson[_0x8d66('0x3')][_0x8d66('0x4')]({'port':0x2329});var logger=require(_0x8d66('0x5'))('xdr');exports['info']=function(_0x599171,_0x491da1){logger['info'](_0x599171,_0x491da1?util[_0x8d66('0x6')](_0x491da1,{'showHidden':![],'depth':null}):'');};exports[_0x8d66('0x7')]=function(_0x4ac32e,_0x458bfd){logger['debug'](_0x4ac32e,_0x458bfd?util[_0x8d66('0x6')](_0x458bfd,{'showHidden':![],'depth':null}):'');};exports[_0x8d66('0x8')]=function(_0x9caa9a,_0x1a0263){logger['error'](_0x9caa9a,_0x1a0263?util[_0x8d66('0x6')](_0x1a0263,{'showHidden':![],'depth':null}):'');};exports[_0x8d66('0x9')]=function(_0x41269c,_0x30aed0){return client[_0x8d66('0x9')](_0x41269c,{'body':_0x30aed0})[_0x8d66('0xa')](function(_0x13e1ef){logger['debug'](_0x8d66('0xb'),_0x41269c,_0x13e1ef?util[_0x8d66('0x6')](_0x13e1ef,{'showHidden':![],'depth':null}):'');})[_0x8d66('0xc')](function(_0x16d8aa){logger[_0x8d66('0x8')](_0x8d66('0xb'),_0x41269c,_0x16d8aa?util[_0x8d66('0x6')](_0x16d8aa,{'showHidden':![],'depth':null}):'');});};function getUser(_0x1b6579){return client[_0x8d66('0x9')]('GetUser',{'options':{'raw':!![],'attributes':['id',_0x8d66('0xd'),'name',_0x8d66('0xe')],'where':_0x1b6579,'limit':0x1}})[_0x8d66('0xa')](function(_0x205fc9){logger[_0x8d66('0x7')](_0x8d66('0xf'),JSON[_0x8d66('0x10')](_0x1b6579),_0x205fc9?util[_0x8d66('0x6')](_0x205fc9,{'showHidden':![],'depth':null}):'');return _0x205fc9['result']['length']?_0x205fc9[_0x8d66('0x11')][0x0]:null;});}exports[_0x8d66('0x12')]=function(_0x56b13d){return new BPromise(function(_0x4da12d,_0xbf44ba){if(_0x56b13d){return getUser({'internal':_0x56b13d})['then'](function(_0x5a4372){logger['info'](_0x8d66('0x13'),_0x56b13d,_0x5a4372?_0x8d66('0x14'):_0x8d66('0x15'));return _0x4da12d(_0x5a4372);})[_0x8d66('0xc')](function(_0x176798){logger[_0x8d66('0x8')](_0x8d66('0x16'),_0x176798?util[_0x8d66('0x6')](_0x176798,{'showHidden':![],'depth':null}):'');return _0x4da12d(null);});}return _0x4da12d(null);});};exports[_0x8d66('0x17')]=function(_0x54753e){return new BPromise(function(_0x32a4e2,_0x1dd256){if(_0x54753e){return getUser({'interface':_0x54753e})[_0x8d66('0xa')](function(_0x501c95){logger[_0x8d66('0x18')](_0x8d66('0x19'),_0x54753e,_0x501c95?_0x8d66('0x14'):_0x8d66('0x15'));return _0x32a4e2(_0x501c95);})[_0x8d66('0xc')](function(_0x373dcd){logger[_0x8d66('0x8')]('[utils][getUserByInterface]',_0x373dcd?util[_0x8d66('0x6')](_0x373dcd,{'showHidden':![],'depth':null}):'');return _0x32a4e2(null);});}return _0x32a4e2(null);});};exports[_0x8d66('0x1a')]=function(_0x3e2204){return new BPromise(function(_0x30e58f,_0x34520d){if(_0x3e2204){return getUser({'name':_0x3e2204})['then'](function(_0x4386ee){logger[_0x8d66('0x18')](_0x8d66('0x1b'),_0x3e2204,_0x4386ee?_0x8d66('0x14'):_0x8d66('0x15'));return _0x30e58f(_0x4386ee);})[_0x8d66('0xc')](function(_0x2f3c66){logger[_0x8d66('0x8')](_0x8d66('0x1c'),_0x2f3c66?util[_0x8d66('0x6')](_0x2f3c66,{'showHidden':![],'depth':null}):'');return _0x30e58f(null);});}return _0x30e58f(null);});};exports[_0x8d66('0x1d')]=function(_0x1a2a57){return new BPromise(function(_0x19f0e5,_0x1e9603){if(_0x1a2a57){return client[_0x8d66('0x9')]('GetVoiceQueue',{'options':{'raw':!![],'attributes':['id','name','type',_0x8d66('0x1e'),_0x8d66('0x1f')],'where':{'name':_0x1a2a57},'limit':0x1}})[_0x8d66('0xa')](function(_0x478e83){logger['debug'](_0x8d66('0x20'),_0x1a2a57,_0x478e83?util[_0x8d66('0x6')](_0x478e83,{'showHidden':![],'depth':null}):'');logger[_0x8d66('0x18')](_0x8d66('0x21'),_0x1a2a57,_0x478e83?_0x8d66('0x14'):'notfound');return _0x19f0e5(_0x478e83[_0x8d66('0x11')][_0x8d66('0x22')]?_0x478e83[_0x8d66('0x11')][0x0]:null);})[_0x8d66('0xc')](function(_0x1b263a){logger['error'](_0x8d66('0x23'),_0x1b263a?util['inspect'](_0x1b263a,{'showHidden':![],'depth':null}):'');return _0x19f0e5(null);});}return _0x19f0e5(null);});};exports[_0x8d66('0x24')]=function(_0x3bed2d,_0x5babd7){return moment(_0x3bed2d)[_0x8d66('0x25')](_0x5babd7,_0x8d66('0x26'))['format'](_0x8d66('0x27'));};exports['subtractTime']=function(_0x226402,_0x39af5d){return moment(_0x226402)['subtract'](_0x39af5d,'seconds')[_0x8d66('0x28')](_0x8d66('0x27'));};exports['diffTime']=function(_0x3557c6,_0x704796){return moment(_0x3557c6)['diff'](moment(_0x704796),_0x8d66('0x26'));};exports[_0x8d66('0x29')]=function(_0x385253,_0x4a06f5){return parseInt(_0x385253,0xa)+parseInt(_0x4a06f5,0xa);};exports[_0x8d66('0x2a')]=function(){return moment()[_0x8d66('0x28')](_0x8d66('0x27'));};exports[_0x8d66('0x2b')]=function(_0x189acb,_0x4bf260){if(_0x4bf260){return moment(_0x189acb)[_0x8d66('0x2b')](_0x4bf260);}return!![];};exports[_0x8d66('0x2c')]=function(_0x33450f,_0xcc8b2){if(_0xcc8b2){return moment(_0x33450f)[_0x8d66('0x2c')](_0xcc8b2);}else if(_0x33450f){return!![];}return![];};
\ No newline at end of file